[
  {
    "path": ".github/workflows/ci.yaml",
    "content": "---\nname: Java CI\n\non: [push, pull_request]\n\njobs:\n  test:\n    runs-on: ${{ matrix.os }}\n    strategy:\n      matrix:\n        os: [ubuntu-18.04, macOS-latest]\n        java: [8]\n      fail-fast: false\n      max-parallel: 4\n    name: Test JDK ${{ matrix.java }}, ${{ matrix.os }}\n\n    steps:\n      - uses: actions/checkout@v2\n      - name: Set up JDK\n        uses: actions/setup-java@v1\n        with:\n          java-version: ${{ matrix.java }}\n      - uses: actions/cache@v2\n        env:\n          cache-name: cache-maven-modules\n        with:\n          path: ~/.m2/repository\n          key: ${{ runner.os }}-build-${{ env.cache-name }}-maven-${{ hashFiles('**/pom.xml') }}\n          restore-keys: |\n            ${{ runner.os }}-build-${{ env.cache-name }}-\n            ${{ runner.os }}-build-\n            ${{ runner.os }}\n      - name: Test with Maven\n        run: mvn test -B --file pom.xml\n"
  },
  {
    "path": ".gitignore",
    "content": "/target\n/.project\n/.settings\n/.classpath\n/.idea\n/.DS_Store\n*.iml\n/src/test/java/com/alibaba/json/bvt/parser/autoType/\n/bin/\n"
  },
  {
    "path": ".gitpod.yml",
    "content": "tasks:\n  - init: mvn install -DskipTests=true\n\nvscode:\n  extensions:\n    - vscjava.vscode-maven@0.21.0:37ZOg7jK2M04yXsE+ItbZg==\n    - GabrielBB.vscode-lombok@1.0.0:fYRHVd+UkrccCfjaRz7jKw=="
  },
  {
    "path": ".travis.yml",
    "content": "language: java\njdk:\n  - openjdk8\nbefore_install:\n  - pip install --user codecov\nafter_success:\n  - codecov\nbranches:\n  except:\n    - appveyor\n\ncache:\n  directories:\n  - $HOME/.m2\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "\n## Contributing\n\nIf you want to contribute to a project and make it better, your help is very welcome. Contributing is also a great way to learn more about social coding on Github, new technologies and their ecosystems, and how to make constructive, helpful bug reports, feature requests and the noblest of all contributions: a good, clean pull request.\n\n### How to make a clean pull request\n\nLook for a project's contribution instructions. If there are any, follow them.\n\n- Create a personal fork of the project on Github.\n- Clone the fork on your local machine. Your remote repo on Github is called `origin`.\n- Add the original repository as a remote called `upstream`.\n- If you created your fork a while ago be sure to pull upstream changes into your local repository.\n- Create a new branch to work on! Branch from `develop` if it exists, else from `master`.\n- Implement/fix your feature, comment your code.\n- Follow the code style of the project, including indentation.\n- If the project has tests run them!\n- Write or adapt tests as needed.\n- Add or change the documentation as needed.\n- Create a new branch if necessary.\n- Push your branch to your fork on Github, the remote `origin`.\n- From your fork open a pull request in the correct branch. Target the project's `develop` branch if there is one, else go for `master`!\n- Wait for approval.\n- Once the pull request is approved and merged you can pull the changes from `upstream` to your local repo and delete\nyour extra branch(es).\n\nAnd last but not least: Always write your commit messages in the present tense. Your commit message should describe what the commit, when applied, does to the code – not what you did to the code.\n"
  },
  {
    "path": "README.md",
    "content": "\n# fastjson\n\n[![Java CI](https://github.com/alibaba/fastjson/actions/workflows/ci.yaml/badge.svg?branch=master)](https://github.com/alibaba/fastjson/actions/workflows/ci.yaml)\n[![Codecov](https://codecov.io/gh/alibaba/fastjson/branch/master/graph/badge.svg)](https://codecov.io/gh/alibaba/fastjson/branch/master)\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.alibaba/fastjson/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.alibaba/fastjson/)\n[![GitHub release](https://img.shields.io/github/release/alibaba/fastjson.svg)](https://github.com/alibaba/fastjson/releases)\n[![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/alibaba/fastjson) \n[![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/fastjson2.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:fastjson2)\n[![QualityGate](https://quality-gate.com/backend/api/timeline?branchName=master&projectName=alibaba_fastjson)](https://quality-gate.com/dashboard/branches/7816#overview)\n\nFastjson is a Java library that can be used to convert Java Objects into their JSON representation. It can also be used to convert a JSON string to an equivalent Java object. Fastjson can work with arbitrary Java objects including pre-existing objects that you do not have source-code of.\n\n[FASTJSON 2.0.x](https://github.com/alibaba/fastjson2/releases) has been released, faster and more secure, we recommend you [upgrade](https://github.com/alibaba/fastjson2/wiki/fastjson_1_upgrade_cn) to the latest version.\n\n### Fastjson Goals\n * Provide the best performance on the server-side and android client\n * Provide simple toJSONString() and parseObject() methods to convert Java objects to JSON and vice-versa\n * Allow pre-existing unmodifiable objects to be converted to and from JSON\n * Extensive support of Java Generics\n * Allow custom representations for objects\n * Support arbitrarily complex objects (with deep inheritance hierarchies and extensive use of generic types)\n\n![fastjson](logo.jpg \"fastjson\")\n\n## Documentation\n\n- [Documentation Home](https://github.com/alibaba/fastjson/wiki)\n- [Contributing Code](https://github.com/nschaffner/fastjson/blob/master/CONTRIBUTING.md)\n- [Frequently Asked Questions](https://github.com/alibaba/fastjson/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98)\n- FASTJSON 1.x User Upgrade Guid [https://github.com/alibaba/fastjson2/wiki/fastjson_1_upgrade_cn](https://github.com/alibaba/fastjson2/wiki/fastjson_1_upgrade_cn\n)\n\n## Benchmark\n\n* Eishay benchmark https://github.com/eishay/jvm-serializers/wiki\n* fastjson2 benchmark [https://github.com/alibaba/fastjson2/wiki/fastjson_benchmark](https://github.com/alibaba/fastjson2/wiki/fastjson_benchmark)\n\n\n## Download\n\n- [maven][1]\n- [the latest JAR][2]\n\n[1]: https://repo1.maven.org/maven2/com/alibaba/fastjson/\n[2]: https://search.maven.org/remote_content?g=com.alibaba&a=fastjson&v=LATEST\n\n## Maven\n\n```xml\n<dependency>\n    <groupId>com.alibaba</groupId>\n    <artifactId>fastjson</artifactId>\n    <version>2.0.31</version>\n</dependency>\n```\n\n## Gradle via JCenter\n\n``` groovy\ncompile 'com.alibaba:fastjson:2.0.28'\n```\n\n\nPlease see this [Wiki Download Page][Wiki] for more repository info.\n\n[Wiki]: https://github.com/alibaba/fastjson/wiki#download\n\n### *License*\n\nFastjson is released under the [Apache 2.0 license](license.txt).\n\n```\nCopyright 1999-2020 Alibaba Group Holding Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at the following link.\n\n     http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n"
  },
  {
    "path": "SECURITY.md",
    "content": "# 漏洞奖励计划 \n## 报告\n如果您认为自己在本程序中发现了任何安全（技术）漏洞，欢迎您通过 https://security.alibaba.com 向我们提交漏洞报告。\n如果您报告任何安全漏洞，请注意您可能包含以下信息（合格报告）：\n* git程序URL地址，运行的环境\n* 包含必要屏幕截图的详细说明\n* 重现漏洞的步骤以及修复漏洞的建议。\n* 其他有用信息\n\n## 处理\nASRC（Alibaba Security Response Center阿里安全响应中心）将尽快审核并回复您的提交内容，并在我们努力修复您提交的漏洞时随时通知您。如有必要，我们可能会与您联系以获取更多信息。\n\n\n## 条款和条件\n1. 仅接受技术漏洞并对其进行评级\n2. 出于安全原因，上报者同意与ASRC合作完成他/她提交的漏洞，不向任何第三方透露任何漏洞信息\n3. 如果不止一个人报告相同的安全漏洞，奖励将给予完成合格报告的第一个人\n4. 为了保护程序的用户，请在修复之前不要直接提交git的issue，也不要在社区讨论任何漏洞信息\n5. 所有奖励和声誉积分将提供给仅向ASRC提交其安全漏洞的上报者\n6. 安全漏洞奖励的解释权利归ASRC所有\n\n## 收集范围\n我们的主要收集漏洞类别是：\n* 服务器端请求伪造（SSRF）\n* SQL注入\n* 拒绝服务攻击\n* 远程执行代码（RCE）\n* XML外部实体攻击（XXE）\n* 访问控制问题（不安全的直接对象参考问题等）\n* 敏感目录遍历问题\n* 本地文件读取（LFD）\n* 敏感信息泄露（密钥，Cookie，Session等）\n\n## 奖励\n* 可直接导致严重问题的每个漏洞奖励7000元人民币\n* 存在限制及需要一定特殊环境下才能利用的问题将给予700-5600元人民币不等的奖励，比如需要用户主动点击才会触发的问题或需要admin权限\n* 只有在指定环境下才可以运行的利用将有可能被收纳但不给予奖励，或直接被忽略，比如只在fastjson+linux特定版本才会出现的问题\n\n## 不在收集范围的报告\n* 影响过时浏览器或平台用户的漏洞\n* Self-XSS\n* 会话固定\n* 内容欺骗\n* 缺少cookie标记\n* 混合内容警告\n* SSL / TLS问题\n* Clickjacking \n* 基于Flash的漏洞\n* 反射文件下载攻击（RFD）\n* 物理或社会工程攻击\n* 未验证自动化工具或扫描仪的结果\n* 登录/注销/未认证/低影响CSRF\n* 需要MITM或物理访问用户设备的攻击\n* 与网络协议或行业标准相关的问题\n* 不能用于直接攻击的错误信息泄露\n* 缺少与安全相关的HTTP标头等\n\n\n\n\n\n# Vulnerability Reward Program\n## Reporting\nIf you believe you have found any security (technical) vulnerability in the Program, you are welcome to submit a vulnerability report to us at https://security.alibaba.com \nIn the case of reporting any security vulnerability, please note that you may include the following information (Qualified Reporting):\n* The git program URL and running version \n* A detailed description with applicable screenshots\n* Steps to reproduce the vulnerability/exploit and your advice to fix it\n* Other useful information\n\n\n## Processing\nASRC (Alibaba Security Response Center) will review and respond as quickly as possible to your submission, and keep you informed as we work to fix the vulnerability you submitted. We may contact you for further information, if necessary.\n\n\n## Terms and Conditions\n1. ONLY technical vulnerabilities will be accepted and rated.\n2. For security reasons, reporters agree to cooperate with ASRC exclusively on the vulnerability he/she submitted and not disclose any information of vulnerability to any third-parties.\n3. In the case that more than one person report the same security vulnerability, the reward will be given to the first person who accomplish a Qualified Reporting.\n4. To protect users of the program, please do not directly submit issue on github or discuss anything with the community. \n5. All Rewards and Reputation Credits are given to the reporters who submit his/her security vulnerabilities ONLY to ASRC.\n6. All rights for the security vulnerability rewards are reserved by ASRC.\n\n## Scope of Collecting\nThe main categories of vulnerabilities that we are sincerely looking for are:\n* Server-Side Request Forgery (SSRF)\n* SQL Injection\n* Denial of Service Attack\n* Remote Code Execution (RCE)\n* XML External Entity Attacks (XXE)\n* Access Control Issues (Insecure Direct Object Reference issues, etc.)\n* Directory Traversal Issues\n* Local File Disclosure (LFD)\n* Sensitive Information Leakage (Key, Cookie, Session etc.)\n\n## Reward\n* $1,000 for one valid report\n* $100-$800 for Vuls which is limited. For example, Vuls that need user interactions or administrator authority\n* Vuls which only work on the special version will be accepted but no reward, or directly rejected. For example, Vul runs only on a special linux version\n\n## Ineligible Reports\n* Vulnerabilities affecting users of outdated browsers or platforms\n* \"Self\" XSS\n* Session fixation\n* Content Spoofing\n* Missing cookie flags\n* Mixed content warnings\n* SSL/TLS best practices\n* Clickjacking/UI redressing\n* Flash-based vulnerabilities\n* Reflected file download attacks (RFD)\n* Physical or social engineering attacks\n* Unverified Results of automated tools or scanners\n* Login/logout/unauthenticated/low-impact CSRF\n* Attacks requiring MITM or physical access to a user's device\n* Issues related to networking protocols or industry standards\n* Error information disclosure that cannot be used to make a direct attack\n* Missing security-related HTTP headers which do not lead directly to a vulnerability\n\n\n"
  },
  {
    "path": "license.txt",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"{}\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright 1999-2019 Alibaba Group Holding Ltd.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <parent>\n        <groupId>org.sonatype.oss</groupId>\n        <artifactId>oss-parent</artifactId>\n        <version>9</version>\n    </parent>\n\n    <groupId>com.alibaba</groupId>\n    <artifactId>fastjson</artifactId>\n    <version>1.2.84-SNAPSHOT</version>\n\n    <packaging>jar</packaging>\n    <name>fastjson</name>\n    <description>Fastjson is a JSON processor (JSON parser + JSON generator) written in Java</description>\n\n    <url>https://github.com/alibaba/fastjson</url>\n    <inceptionYear>2012</inceptionYear>\n\n    <properties>\n        <junit.version>4.13.1</junit.version>\n        <junit.version>4.13.1</junit.version>\n        <gpg.skip>true</gpg.skip>\n        <javadoc.skip>true</javadoc.skip>\n        <gpg.skip>true</gpg.skip>\n        <javadoc.skip>true</javadoc.skip>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <jdk.version>1.5</jdk.version>\n    </properties>\n\n    <scm>\n        <url>https://github.com/alibaba/fastjson</url>\n        <connection>scm:git:https://git@github.com/alibaba/fastjson.git</connection>\n    </scm>\n\n    <organization>\n        <name>Alibaba Group</name>\n        <url>https://github.com/alibaba</url>\n    </organization>\n\n    <developers>\n        <developer>\n            <id>wenshao</id>\n            <name>wenshao</name>\n            <email>szujobs@hotmail.com</email>\n        </developer>\n        <developer>\n            <id>axmanwang</id>\n            <name>axmanwang</name>\n            <email>iamaxman@hotmail.com</email>\n        </developer>\n        <developer>\n            <id>kimmking</id>\n            <name>kimmking</name>\n            <email>kimmking@163.com</email>\n        </developer>\n        <developer>\n            <id>Victor Zeng</id>\n            <name>Victor Zeng</name>\n            <email>Victor.Zxy@outlook.com</email>\n        </developer>\n        <developer>\n            <id>Neil Dong</id>\n            <name>Neil Dong</name>\n            <email>email_dsl@163.com</email>\n        </developer>\n        <developer>\n            <name>李恒名</name>\n            <url>https://github.com/lihengming/</url>\n            <email>89921218@qq.com</email>\n        </developer>\n        <developer>\n            <id>Omega-Ariston</id>\n            <name>Jiechuan Chen</name>\n            <email>654815312@qq.com</email>\n        </developer>\n    </developers>\n\n    <licenses>\n        <license>\n            <name>Apache 2</name>\n            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n            <distribution>repo</distribution>\n            <comments>A business-friendly OSS license</comments>\n        </license>\n    </licenses>\n\n    <build>\n        <plugins>\n\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <version>3.8.0</version>\n                <configuration>\n                    <encoding>UTF-8</encoding>\n                    <source>${jdk.version}</source>\n                    <target>${jdk.version}</target>\n                </configuration>\n                <dependencies>\n                    <dependency>\n                        <groupId>org.codehaus.plexus</groupId>\n                        <artifactId>plexus-compiler-javac</artifactId>\n                        <version>2.7</version>\n                    </dependency>\n                </dependencies>\n            </plugin>\n            <!--\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <version>3.8.0</version>\n                <configuration>\n                    <encoding>UTF-8</encoding>\n                    <source>11</source>\n                    <target>11</target>\n                    <compilerArgs>\n                        <arg>- -add-modules</arg>\n                        <arg>java.xml.bind</arg>\n                    </compilerArgs>\n                </configuration>\n                <dependencies>\n                    <dependency>\n                        <groupId>org.codehaus.plexus</groupId>\n                        <artifactId>plexus-compiler-javac</artifactId>\n                        <version>2.7</version>\n                    </dependency>\n                </dependencies>\n            </plugin>\n            -->\n\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-source-plugin</artifactId>\n                <version>3.2.0</version>\n                <executions>\n                    <execution>\n                        <id>attach-sources</id>\n                        <goals>\n                            <goal>jar-no-fork</goal>\n                        </goals>\n                    </execution>\n                </executions>\n                <configuration>\n                    <attach>true</attach>\n                </configuration>\n            </plugin>\n\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-surefire-plugin</artifactId>\n                <version>3.0.0-M5</version>\n                <configuration>\n                    <includes>\n                        <include>**/bvt/**/*.java</include>\n                    </includes>\n                </configuration>\n            </plugin>\n\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-javadoc-plugin</artifactId>\n                <version>3.2.0</version>\n                <executions>\n                    <execution>\n                        <id>attach-javadoc</id>\n                        <goals>\n                            <goal>jar</goal>\n                        </goals>\n                    </execution>\n                </executions>\n                <configuration>\n                    <skip>${javadoc.skip}</skip>\n                    <show>public</show>\n                    <charset>UTF-8</charset>\n                    <encoding>UTF-8</encoding>\n                    <docencoding>UTF-8</docencoding>\n                    <links>\n                        <link>http://docs.oracle.com/javase/6/docs/api</link>\n                    </links>\n                </configuration>\n            </plugin>\n\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-gpg-plugin</artifactId>\n                <version>1.6</version>\n                <configuration>\n                    <skip>${gpg.skip}</skip>\n                </configuration>\n                <executions>\n                    <execution>\n                        <id>sign-artifacts</id>\n                        <phase>verify</phase>\n                        <goals>\n                            <goal>sign</goal>\n                        </goals>\n                    </execution>\n                </executions>\n            </plugin>\n        </plugins>\n    </build>\n\n    <dependencies>\n        <dependency>\n            <groupId>javax.servlet</groupId>\n            <artifactId>javax.servlet-api</artifactId>\n            <version>3.1.0</version>\n            <scope>provided</scope>\n            <optional>true</optional>\n        </dependency>\n        <dependency>\n            <groupId>javax.ws.rs</groupId>\n            <artifactId>javax.ws.rs-api</artifactId>\n            <version>2.0.1</version>\n            <scope>provided</scope>\n            <optional>true</optional>\n        </dependency>\n\n        <dependency>\n            <groupId>org.apache.cxf</groupId>\n            <artifactId>cxf-rt-transports-http</artifactId>\n            <version>3.1.2</version>\n            <scope>provided</scope>\n            <optional>true</optional>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.cxf</groupId>\n            <artifactId>cxf-rt-frontend-jaxrs</artifactId>\n            <version>3.1.2</version>\n            <scope>provided</scope>\n            <optional>true</optional>\n        </dependency>\n\n        <dependency>\n            <groupId>org.springframework</groupId>\n            <artifactId>spring-websocket</artifactId>\n            <version>4.3.7.RELEASE</version>\n            <scope>provided</scope>\n            <optional>true</optional>\n        </dependency>\n        <dependency>\n            <groupId>org.springframework</groupId>\n            <artifactId>spring-webmvc</artifactId>\n            <version>4.3.7.RELEASE</version>\n            <scope>provided</scope>\n            <optional>true</optional>\n        </dependency>\n\n        <dependency>\n            <groupId>org.springframework</groupId>\n            <artifactId>spring-messaging</artifactId>\n            <version>4.3.7.RELEASE</version>\n            <scope>provided</scope>\n            <optional>true</optional>\n        </dependency>\n\n\n        <dependency>\n            <groupId>org.springframework.data</groupId>\n            <artifactId>spring-data-redis</artifactId>\n            <version>1.8.6.RELEASE</version>\n            <scope>provided</scope>\n            <optional>true</optional>\n        </dependency>\n\n        <dependency>\n            <groupId>com.squareup.retrofit2</groupId>\n            <artifactId>retrofit</artifactId>\n            <version>2.5.0</version>\n            <scope>provided</scope>\n        </dependency>\n        <dependency>\n            <groupId>com.squareup.okhttp3</groupId>\n            <artifactId>okhttp</artifactId>\n            <version>3.6.0</version>\n            <scope>provided</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>io.springfox</groupId>\n            <artifactId>springfox-spring-web</artifactId>\n            <version>2.6.1</version>\n            <scope>provided</scope>\n            <optional>true</optional>\n        </dependency>\n\n        <dependency>\n            <groupId>io.javaslang</groupId>\n            <artifactId>javaslang</artifactId>\n            <version>2.0.6</version>\n            <scope>provided</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.glassfish.jersey.core</groupId>\n            <artifactId>jersey-common</artifactId>\n            <version>2.23.2</version>\n            <scope>provided</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>joda-time</groupId>\n            <artifactId>joda-time</artifactId>\n            <version>2.10</version>\n            <scope>provided</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>net.sf.trove4j</groupId>\n            <artifactId>core</artifactId>\n            <version>3.1.0</version>\n            <scope>provided</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.javamoney.moneta</groupId>\n            <artifactId>moneta-core</artifactId>\n            <version>1.3</version>\n            <scope>provided</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>io.airlift</groupId>\n            <artifactId>slice</artifactId>\n            <version>0.36</version>\n            <scope>provided</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>com.google.protobuf</groupId>\n            <artifactId>protobuf-java</artifactId>\n            <version>3.11.0</version>\n            <scope>provided</scope>\n        </dependency>\n        <dependency>\n            <groupId>com.google.protobuf</groupId>\n            <artifactId>protobuf-java-util</artifactId>\n            <version>3.11.0</version>\n            <scope>provided</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.jacoco</groupId>\n            <artifactId>jacoco-maven-plugin</artifactId>\n            <version>0.7.6.201602180812</version>\n            <scope>provided</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.eclipse.jetty</groupId>\n            <artifactId>jetty-server</artifactId>\n            <version>9.4.17.v20190418</version>\n            <scope>test</scope>\n            <optional>true</optional>\n        </dependency>\n        <dependency>\n            <groupId>org.eclipse.jetty</groupId>\n            <artifactId>jetty-webapp</artifactId>\n            <version>9.4.17.v20190418</version>\n            <scope>test</scope>\n            <optional>true</optional>\n        </dependency>\n\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>${junit.version}</version>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>com.fasterxml.jackson.core</groupId>\n            <artifactId>jackson-databind</artifactId>\n            <version>2.10.0</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>com.fasterxml.jackson.module</groupId>\n            <artifactId>jackson-module-afterburner</artifactId>\n            <version>2.10.0</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>com.fasterxml.jackson.module</groupId>\n            <artifactId>jackson-module-kotlin</artifactId>\n            <version>2.9.10</version>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>cglib</groupId>\n            <artifactId>cglib-nodep</artifactId>\n            <version>2.2.2</version>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>com.fasterxml.jackson.jaxrs</groupId>\n            <artifactId>jackson-jaxrs-json-provider</artifactId>\n            <version>2.9.10</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>com.googlecode.json-simple</groupId>\n            <artifactId>json-simple</artifactId>\n            <version>1.1.1</version>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>commons-io</groupId>\n            <artifactId>commons-io</artifactId>\n            <version>2.7</version>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>net.sf.json-lib</groupId>\n            <artifactId>json-lib</artifactId>\n            <version>2.4</version>\n            <classifier>jdk15</classifier>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>com.google.code.gson</groupId>\n            <artifactId>gson</artifactId>\n            <version>2.6.2</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>net.minidev</groupId>\n            <artifactId>json-smart</artifactId>\n            <version>2.4.8</version>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.clojure</groupId>\n            <artifactId>clojure</artifactId>\n            <version>1.5.1</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.codehaus.groovy</groupId>\n            <artifactId>groovy</artifactId>\n            <version>2.1.5</version>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.springframework</groupId>\n            <artifactId>spring-test</artifactId>\n            <version>4.3.7.RELEASE</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.javassist</groupId>\n            <artifactId>javassist</artifactId>\n            <version>3.18.0-GA</version>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.apache.cxf</groupId>\n            <artifactId>cxf-rt-rs-client</artifactId>\n            <version>3.1.2</version>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.springframework.data</groupId>\n            <artifactId>spring-data-commons</artifactId>\n            <version>2.1.2.RELEASE</version>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.glassfish.jersey.containers</groupId>\n            <artifactId>jersey-container-servlet</artifactId>\n            <version>2.23.2</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.glassfish.jersey.core</groupId>\n            <artifactId>jersey-client</artifactId>\n            <version>2.23.2</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.glassfish.jersey.test-framework.providers</groupId>\n            <artifactId>jersey-test-framework-provider-jdk-http</artifactId>\n            <version>2.23.2</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.glassfish.jersey.media</groupId>\n            <artifactId>jersey-media-json-jackson</artifactId>\n            <version>2.23.2</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>com.jsoniter</groupId>\n            <artifactId>jsoniter</artifactId>\n            <version>0.9.8</version>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.apache.commons</groupId>\n            <artifactId>commons-lang3</artifactId>\n            <version>3.5</version>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.hibernate</groupId>\n            <artifactId>hibernate-core</artifactId>\n            <version>5.2.10.Final</version>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>com.jayway.jsonpath</groupId>\n            <artifactId>json-path</artifactId>\n            <version>2.3.0</version>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.jetbrains.kotlin</groupId>\n            <artifactId>kotlin-stdlib</artifactId>\n            <version>1.4.21</version>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.jetbrains.kotlin</groupId>\n            <artifactId>kotlin-reflect</artifactId>\n            <version>1.4.21</version>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.springframework.security</groupId>\n            <artifactId>spring-security-web</artifactId>\n            <version>5.2.10.RELEASE</version>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.apache.commons</groupId>\n            <artifactId>commons-collections4</artifactId>\n            <version>4.1</version>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.mockito</groupId>\n            <artifactId>mockito-all</artifactId>\n            <version>1.10.19</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.powermock</groupId>\n            <artifactId>powermock-module-junit4</artifactId>\n            <version>1.6.6</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>com.diffblue</groupId>\n            <artifactId>deeptestutils</artifactId>\n            <version>1.1.0</version>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.projectlombok</groupId>\n            <artifactId>lombok</artifactId>\n            <version>1.18.4</version>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.openjdk.jmh</groupId>\n            <artifactId>jmh-core</artifactId>\n            <version>1.21</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.openjdk.jmh</groupId>\n            <artifactId>jmh-generator-annprocess</artifactId>\n            <version>1.21</version>\n            <scope>test</scope>\n        </dependency>\n\n\n        <dependency>\n            <groupId>org.springframework.security.oauth</groupId>\n            <artifactId>spring-security-oauth2</artifactId>\n            <version>2.3.5.RELEASE</version>\n            <exclusions>\n                <exclusion>\n                    <artifactId>commons-codec</artifactId>\n                    <groupId>commons-codec</groupId>\n                </exclusion>\n                <exclusion>\n                    <artifactId>jackson</artifactId>\n                    <groupId>jackson-mapper-asl</groupId>\n                </exclusion>\n                <exclusion>\n                    <artifactId>jackson</artifactId>\n                    <groupId>jackson-core-asl</groupId>\n                </exclusion>\n            </exclusions>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.gitlab4j</groupId>\n            <artifactId>gitlab4j-api</artifactId>\n            <version>4.8.42</version>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.json</groupId>\n            <artifactId>json</artifactId>\n            <version>20180130</version>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>com.chinamobile.cmos</groupId>\n            <artifactId>sms-core</artifactId>\n            <version>2.1.9</version>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n\n    <profiles>\n        <profile>\n            <id>github_actions</id>\n            <activation>\n                <property>\n                    <name>env.GITHUB_ACTIONS</name>\n                    <value>true</value>\n                </property>\n            </activation>\n            <build>\n                <plugins>\n                    <plugin>\n                        <!-- for codecov.io -->\n                        <!-- config example: https://github.com/codecov/example-java -->\n                        <!-- plugin docs: http://eclemma.org/jacoco/trunk/doc/ -->\n                        <groupId>org.jacoco</groupId>\n                        <artifactId>jacoco-maven-plugin</artifactId>\n                        <version>0.8.7</version>\n                        <executions>\n                            <execution>\n                                <goals>\n                                    <goal>prepare-agent</goal>\n                                </goals>\n                            </execution>\n                            <execution>\n                                <id>report</id>\n                                <phase>test</phase>\n                                <goals>\n                                    <goal>report</goal>\n                                </goals>\n                            </execution>\n                        </executions>\n                    </plugin>\n                </plugins>\n            </build>\n        </profile>\n\n    </profiles>\n</project>\n\n"
  },
  {
    "path": "rfc4627.txt",
    "content": "\n\n\n\n\n\nNetwork Working Group                                       D. Crockford\nRequest for Comments: 4627                                      JSON.org\nCategory: Informational                                        July 2006\n\n\n The application/json Media Type for JavaScript Object Notation (JSON)\n\nStatus of This Memo\n\n   This memo provides information for the Internet community.  It does\n   not specify an Internet standard of any kind.  Distribution of this\n   memo is unlimited.\n\nCopyright Notice\n\n   Copyright (C) The Internet Society (2006).\n\nAbstract\n\n   JavaScript Object Notation (JSON) is a lightweight, text-based,\n   language-independent data interchange format.  It was derived from\n   the ECMAScript Programming Language Standard.  JSON defines a small\n   set of formatting rules for the portable representation of structured\n   data.\n\n1.  Introduction\n\n   JavaScript Object Notation (JSON) is a text format for the\n   serialization of structured data.  It is derived from the object\n   literals of JavaScript, as defined in the ECMAScript Programming\n   Language Standard, Third Edition [ECMA].\n\n   JSON can represent four primitive types (strings, numbers, booleans,\n   and null) and two structured types (objects and arrays).\n\n   A string is a sequence of zero or more Unicode characters [UNICODE].\n\n   An object is an unordered collection of zero or more name/value\n   pairs, where a name is a string and a value is a string, number,\n   boolean, null, object, or array.\n\n   An array is an ordered sequence of zero or more values.\n\n   The terms \"object\" and \"array\" come from the conventions of\n   JavaScript.\n\n   JSON's design goals were for it to be minimal, portable, textual, and\n   a subset of JavaScript.\n\n\n\nCrockford                    Informational                      [Page 1]\n\f\nRFC 4627                          JSON                         July 2006\n\n\n1.1.  Conventions Used in This Document\n\n   The key words \"MUST\", \"MUST NOT\", \"REQUIRED\", \"SHALL\", \"SHALL NOT\",\n   \"SHOULD\", \"SHOULD NOT\", \"RECOMMENDED\", \"MAY\", and \"OPTIONAL\" in this\n   document are to be interpreted as described in [RFC2119].\n\n   The grammatical rules in this document are to be interpreted as\n   described in [RFC4234].\n\n2.  JSON Grammar\n\n   A JSON text is a sequence of tokens.  The set of tokens includes six\n   structural characters, strings, numbers, and three literal names.\n\n   A JSON text is a serialized object or array.\n\n      JSON-text = object / array\n\n   These are the six structural characters:\n\n      begin-array     = ws %x5B ws  ; [ left square bracket\n\n      begin-object    = ws %x7B ws  ; { left curly bracket\n\n      end-array       = ws %x5D ws  ; ] right square bracket\n\n      end-object      = ws %x7D ws  ; } right curly bracket\n\n      name-separator  = ws %x3A ws  ; : colon\n\n      value-separator = ws %x2C ws  ; , comma\n\n   Insignificant whitespace is allowed before or after any of the six\n   structural characters.\n\n      ws = *(\n                %x20 /              ; Space\n                %x09 /              ; Horizontal tab\n                %x0A /              ; Line feed or New line\n                %x0D                ; Carriage return\n            )\n\n2.1.  Values\n\n   A JSON value MUST be an object, array, number, or string, or one of\n   the following three literal names:\n\n      false null true\n\n\n\nCrockford                    Informational                      [Page 2]\n\f\nRFC 4627                          JSON                         July 2006\n\n\n   The literal names MUST be lowercase.  No other literal names are\n   allowed.\n\n         value = false / null / true / object / array / number / string\n\n         false = %x66.61.6c.73.65   ; false\n\n         null  = %x6e.75.6c.6c      ; null\n\n         true  = %x74.72.75.65      ; true\n\n2.2.  Objects\n\n   An object structure is represented as a pair of curly brackets\n   surrounding zero or more name/value pairs (or members).  A name is a\n   string.  A single colon comes after each name, separating the name\n   from the value.  A single comma separates a value from a following\n   name.  The names within an object SHOULD be unique.\n\n      object = begin-object [ member *( value-separator member ) ]\n      end-object\n\n      member = string name-separator value\n\n2.3.  Arrays\n\n   An array structure is represented as square brackets surrounding zero\n   or more values (or elements).  Elements are separated by commas.\n\n      array = begin-array [ value *( value-separator value ) ] end-array\n\n2.4.  Numbers\n\n   The representation of numbers is similar to that used in most\n   programming languages.  A number contains an integer component that\n   may be prefixed with an optional minus sign, which may be followed by\n   a fraction part and/or an exponent part.\n\n   Octal and hex forms are not allowed.  Leading zeros are not allowed.\n\n   A fraction part is a decimal point followed by one or more digits.\n\n   An exponent part begins with the letter E in upper or lowercase,\n   which may be followed by a plus or minus sign.  The E and optional\n   sign are followed by one or more digits.\n\n   Numeric values that cannot be represented as sequences of digits\n   (such as Infinity and NaN) are not permitted.\n\n\n\nCrockford                    Informational                      [Page 3]\n\f\nRFC 4627                          JSON                         July 2006\n\n\n         number = [ minus ] int [ frac ] [ exp ]\n\n         decimal-point = %x2E       ; .\n\n         digit1-9 = %x31-39         ; 1-9\n\n         e = %x65 / %x45            ; e E\n\n         exp = e [ minus / plus ] 1*DIGIT\n\n         frac = decimal-point 1*DIGIT\n\n         int = zero / ( digit1-9 *DIGIT )\n\n         minus = %x2D               ; -\n\n         plus = %x2B                ; +\n\n         zero = %x30                ; 0\n\n2.5.  Strings\n\n   The representation of strings is similar to conventions used in the C\n   family of programming languages.  A string begins and ends with\n   quotation marks.  All Unicode characters may be placed within the\n   quotation marks except for the characters that must be escaped:\n   quotation mark, reverse solidus, and the control characters (U+0000\n   through U+001F).\n\n   Any character may be escaped.  If the character is in the Basic\n   Multilingual Plane (U+0000 through U+FFFF), then it may be\n   represented as a six-character sequence: a reverse solidus, followed\n   by the lowercase letter u, followed by four hexadecimal digits that\n   encode the character's code point.  The hexadecimal letters A though\n   F can be upper or lowercase.  So, for example, a string containing\n   only a single reverse solidus character may be represented as\n   \"\\u005C\".\n\n   Alternatively, there are two-character sequence escape\n   representations of some popular characters.  So, for example, a\n   string containing only a single reverse solidus character may be\n   represented more compactly as \"\\\\\".\n\n   To escape an extended character that is not in the Basic Multilingual\n   Plane, the character is represented as a twelve-character sequence,\n   encoding the UTF-16 surrogate pair.  So, for example, a string\n   containing only the G clef character (U+1D11E) may be represented as\n   \"\\uD834\\uDD1E\".\n\n\n\nCrockford                    Informational                      [Page 4]\n\f\nRFC 4627                          JSON                         July 2006\n\n\n         string = quotation-mark *char quotation-mark\n\n         char = unescaped /\n                escape (\n                    %x22 /          ; \"    quotation mark  U+0022\n                    %x5C /          ; \\    reverse solidus U+005C\n                    %x2F /          ; /    solidus         U+002F\n                    %x62 /          ; b    backspace       U+0008\n                    %x66 /          ; f    form feed       U+000C\n                    %x6E /          ; n    line feed       U+000A\n                    %x72 /          ; r    carriage return U+000D\n                    %x74 /          ; t    tab             U+0009\n                    %x75 4HEXDIG )  ; uXXXX                U+XXXX\n\n         escape = %x5C              ; \\\n\n         quotation-mark = %x22      ; \"\n\n         unescaped = %x20-21 / %x23-5B / %x5D-10FFFF\n\n3.  Encoding\n\n   JSON text SHALL be encoded in Unicode.  The default encoding is\n   UTF-8.\n\n   Since the first two characters of a JSON text will always be ASCII\n   characters [RFC0020], it is possible to determine whether an octet\n   stream is UTF-8, UTF-16 (BE or LE), or UTF-32 (BE or LE) by looking\n   at the pattern of nulls in the first four octets.\n\n           00 00 00 xx  UTF-32BE\n           00 xx 00 xx  UTF-16BE\n           xx 00 00 00  UTF-32LE\n           xx 00 xx 00  UTF-16LE\n           xx xx xx xx  UTF-8\n\n4.  Parsers\n\n   A JSON parser transforms a JSON text into another representation.  A\n   JSON parser MUST accept all texts that conform to the JSON grammar.\n   A JSON parser MAY accept non-JSON forms or extensions.\n\n   An implementation may set limits on the size of texts that it\n   accepts.  An implementation may set limits on the maximum depth of\n   nesting.  An implementation may set limits on the range of numbers.\n   An implementation may set limits on the length and character contents\n   of strings.\n\n\n\n\nCrockford                    Informational                      [Page 5]\n\f\nRFC 4627                          JSON                         July 2006\n\n\n5. Generators\n\n   A JSON generator produces JSON text.  The resulting text MUST\n   strictly conform to the JSON grammar.\n\n6. IANA Considerations\n\n   The MIME media type for JSON text is application/json.\n\n   Type name: application\n\n   Subtype name: json\n\n   Required parameters: n/a\n\n   Optional parameters: n/a\n\n   Encoding considerations: 8bit if UTF-8; binary if UTF-16 or UTF-32\n\n      JSON may be represented using UTF-8, UTF-16, or UTF-32.  When JSON\n      is written in UTF-8, JSON is 8bit compatible.  When JSON is\n      written in UTF-16 or UTF-32, the binary content-transfer-encoding\n      must be used.\n\n   Security considerations:\n\n   Generally there are security issues with scripting languages.  JSON\n   is a subset of JavaScript, but it is a safe subset that excludes\n   assignment and invocation.\n\n   A JSON text can be safely passed into JavaScript's eval() function\n   (which compiles and executes a string) if all the characters not\n   enclosed in strings are in the set of characters that form JSON\n   tokens.  This can be quickly determined in JavaScript with two\n   regular expressions and calls to the test and replace methods.\n\n      var my_JSON_object = !(/[^,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t]/.test(\n             text.replace(/\"(\\\\.|[^\"\\\\])*\"/g, ''))) &&\n         eval('(' + text + ')');\n\n   Interoperability considerations: n/a\n\n   Published specification: RFC 4627\n\n\n\n\n\n\n\n\nCrockford                    Informational                      [Page 6]\n\f\nRFC 4627                          JSON                         July 2006\n\n\n   Applications that use this media type:\n\n      JSON has been used to exchange data between applications written\n      in all of these programming languages: ActionScript, C, C#,\n      ColdFusion, Common Lisp, E, Erlang, Java, JavaScript, Lua,\n      Objective CAML, Perl, PHP, Python, Rebol, Ruby, and Scheme.\n\n   Additional information:\n\n      Magic number(s): n/a\n      File extension(s): .json\n      Macintosh file type code(s): TEXT\n\n   Person & email address to contact for further information:\n      Douglas Crockford\n      douglas@crockford.com\n\n   Intended usage: COMMON\n\n   Restrictions on usage: none\n\n   Author:\n      Douglas Crockford\n      douglas@crockford.com\n\n   Change controller:\n      Douglas Crockford\n      douglas@crockford.com\n\n7. Security Considerations\n\n   See Security Considerations in Section 6.\n\n8. Examples\n\n   This is a JSON object:\n\n   {\n      \"Image\": {\n          \"Width\":  800,\n          \"Height\": 600,\n          \"Title\":  \"View from 15th Floor\",\n          \"Thumbnail\": {\n              \"Url\":    \"http://www.example.com/image/481989943\",\n              \"Height\": 125,\n              \"Width\":  \"100\"\n          },\n          \"IDs\": [116, 943, 234, 38793]\n\n\n\nCrockford                    Informational                      [Page 7]\n\f\nRFC 4627                          JSON                         July 2006\n\n\n        }\n   }\n\n   Its Image member is an object whose Thumbnail member is an object\n   and whose IDs member is an array of numbers.\n\n   This is a JSON array containing two objects:\n\n   [\n      {\n         \"precision\": \"zip\",\n         \"Latitude\":  37.7668,\n         \"Longitude\": -122.3959,\n         \"Address\":   \"\",\n         \"City\":      \"SAN FRANCISCO\",\n         \"State\":     \"CA\",\n         \"Zip\":       \"94107\",\n         \"Country\":   \"US\"\n      },\n      {\n         \"precision\": \"zip\",\n         \"Latitude\":  37.371991,\n         \"Longitude\": -122.026020,\n         \"Address\":   \"\",\n         \"City\":      \"SUNNYVALE\",\n         \"State\":     \"CA\",\n         \"Zip\":       \"94085\",\n         \"Country\":   \"US\"\n      }\n   ]\n\n9. References\n\n9.1.  Normative References\n\n   [ECMA]    European Computer Manufacturers Association, \"ECMAScript\n             Language Specification 3rd Edition\", December 1999,\n             <http://www.ecma-international.org/publications/files/\n             ecma-st/ECMA-262.pdf>.\n\n   [RFC0020] Cerf, V., \"ASCII format for network interchange\", RFC 20,\n             October 1969.\n\n   [RFC2119] Bradner, S., \"Key words for use in RFCs to Indicate\n             Requirement Levels\", BCP 14, RFC 2119, March 1997.\n\n   [RFC4234] Crocker, D. and P.  Overell, \"Augmented BNF for Syntax\n             Specifications: ABNF\", RFC 4234, October 2005.\n\n\n\nCrockford                    Informational                      [Page 8]\n\f\nRFC 4627                          JSON                         July 2006\n\n\n   [UNICODE] The Unicode Consortium, \"The Unicode Standard Version 4.0\",\n             2003, <http://www.unicode.org/versions/Unicode4.1.0/>.\n\nAuthor's Address\n\n   Douglas Crockford\n   JSON.org\n   EMail: douglas@crockford.com\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nCrockford                    Informational                      [Page 9]\n\f\nRFC 4627                          JSON                         July 2006\n\n\nFull Copyright Statement\n\n   Copyright (C) The Internet Society (2006).\n\n   This document is subject to the rights, licenses and restrictions\n   contained in BCP 78, and except as set forth therein, the authors\n   retain all their rights.\n\n   This document and the information contained herein are provided on an\n   \"AS IS\" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS\n   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET\n   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,\n   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE\n   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED\n   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.\n\nIntellectual Property\n\n   The IETF takes no position regarding the validity or scope of any\n   Intellectual Property Rights or other rights that might be claimed to\n   pertain to the implementation or use of the technology described in\n   this document or the extent to which any license under such rights\n   might or might not be available; nor does it represent that it has\n   made any independent effort to identify any such rights.  Information\n   on the procedures with respect to rights in RFC documents can be\n   found in BCP 78 and BCP 79.\n\n   Copies of IPR disclosures made to the IETF Secretariat and any\n   assurances of licenses to be made available, or the result of an\n   attempt made to obtain a general license or permission for the use of\n   such proprietary rights by implementers or users of this\n   specification can be obtained from the IETF on-line IPR repository at\n   http://www.ietf.org/ipr.\n\n   The IETF invites any interested party to bring to its attention any\n   copyrights, patents or patent applications, or other proprietary\n   rights that may cover technology that may be required to implement\n   this standard.  Please address the information to the IETF at\n   ietf-ipr@ietf.org.\n\nAcknowledgement\n\n   Funding for the RFC Editor function is provided by the IETF\n   Administrative Support Activity (IASA).\n\n\n\n\n\n\n\nCrockford                    Informational                     [Page 10]\n\f"
  },
  {
    "path": "src/main/java/META-INF/MANIFEST.MF",
    "content": "Manifest-Version: 1.1.35\r\nClass-Path: \r\n\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/JSON.java",
    "content": "/*\n * Copyright 1999-2017 Alibaba Group.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage com.alibaba.fastjson;\n\nimport java.io.*;\nimport java.lang.reflect.Array;\nimport java.lang.reflect.Type;\nimport java.nio.ByteBuffer;\nimport java.nio.CharBuffer;\nimport java.nio.charset.Charset;\nimport java.nio.charset.CharsetDecoder;\nimport java.util.*;\nimport java.util.concurrent.ConcurrentHashMap;\nimport java.util.zip.GZIPInputStream;\n\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.*;\nimport com.alibaba.fastjson.parser.deserializer.ExtraProcessor;\nimport com.alibaba.fastjson.parser.deserializer.ExtraTypeProvider;\nimport com.alibaba.fastjson.parser.deserializer.FieldTypeResolver;\nimport com.alibaba.fastjson.parser.deserializer.ParseProcess;\nimport com.alibaba.fastjson.serializer.*;\nimport com.alibaba.fastjson.util.IOUtils;\nimport com.alibaba.fastjson.util.TypeUtils;\n\n/**\n * This is the main class for using Fastjson. You usually call these two methods {@link #toJSONString(Object)} and {@link #parseObject(String, Class)}.\n * \n * <p>Here is an example of how fastjson is used for a simple Class:\n *\n * <pre>\n * Model model = new Model();\n * String json = JSON.toJSONString(model); // serializes model to Json\n * Model model2 = JSON.parseObject(json, Model.class); // deserializes json into model2\n * </pre>\n * \n* <p>If the object that your are serializing/deserializing is a {@code ParameterizedType}\n * (i.e. contains at least one type parameter and may be an array) then you must use the\n * {@link #toJSONString(Object)} or {@link #parseObject(String, Type, Feature[])} method.  Here is an\n * example for serializing and deserialing a {@code ParameterizedType}:\n * \n * <pre>\n * String json = \"[{},...]\";\n * Type listType = new TypeReference&lt;List&lt;Model&gt;&gt;() {}.getType();\n * List&lt;Model&gt; modelList = JSON.parseObject(json, listType);\n * </pre>\n * \n * @see com.alibaba.fastjson.TypeReference\n * \n * @author wenshao[szujobs@hotmail.com]\n */\npublic abstract class JSON implements JSONStreamAware, JSONAware {\n    public static TimeZone         defaultTimeZone      = TimeZone.getDefault();\n    public static Locale           defaultLocale        = Locale.getDefault();\n    public static String           DEFAULT_TYPE_KEY     = \"@type\";\n    static final SerializeFilter[] emptyFilters         = new SerializeFilter[0];\n    public static String           DEFFAULT_DATE_FORMAT = \"yyyy-MM-dd HH:mm:ss\";\n    public static int              DEFAULT_PARSER_FEATURE;\n    public static int              DEFAULT_GENERATE_FEATURE;\n\n    private static final ConcurrentHashMap<Type, Type> mixInsMapper = new ConcurrentHashMap<Type, Type>(16);\n    \n    static {\n        int features = 0;\n        features |= Feature.AutoCloseSource.getMask();\n        features |= Feature.InternFieldNames.getMask();\n        features |= Feature.UseBigDecimal.getMask();\n        features |= Feature.AllowUnQuotedFieldNames.getMask();\n        features |= Feature.AllowSingleQuotes.getMask();\n        features |= Feature.AllowArbitraryCommas.getMask();\n        features |= Feature.SortFeidFastMatch.getMask();\n        features |= Feature.IgnoreNotMatch.getMask();\n        DEFAULT_PARSER_FEATURE = features;\n    }\n\n    static {\n        int features = 0;\n        features |= SerializerFeature.QuoteFieldNames.getMask();\n        features |= SerializerFeature.SkipTransientField.getMask();\n        features |= SerializerFeature.WriteEnumUsingName.getMask();\n        features |= SerializerFeature.SortField.getMask();\n\n        DEFAULT_GENERATE_FEATURE = features;\n\n        config(IOUtils.DEFAULT_PROPERTIES);\n    }\n\n    private static void config(Properties properties) {\n        {\n            String featuresProperty = properties.getProperty(\"fastjson.serializerFeatures.MapSortField\");\n            int mask = SerializerFeature.MapSortField.getMask();\n            if (\"true\".equals(featuresProperty)) {\n                DEFAULT_GENERATE_FEATURE |= mask;\n            } else if (\"false\".equals(featuresProperty)) {\n                DEFAULT_GENERATE_FEATURE &= ~mask;\n            }\n        }\n\n        {\n            if (\"true\".equals(properties.getProperty(\"parser.features.NonStringKeyAsString\"))) {\n                DEFAULT_PARSER_FEATURE |= Feature.NonStringKeyAsString.getMask();\n            }\n        }\n\n        {\n            if (\"true\".equals(properties.getProperty(\"parser.features.ErrorOnEnumNotMatch\"))\n                    || \"true\".equals(properties.getProperty(\"fastjson.parser.features.ErrorOnEnumNotMatch\")))\n            {\n                DEFAULT_PARSER_FEATURE |= Feature.ErrorOnEnumNotMatch.getMask();\n            }\n        }\n\n        {\n            if (\"false\".equals(properties.getProperty(\"fastjson.asmEnable\"))) {\n                ParserConfig.global.setAsmEnable(false);\n                SerializeConfig.globalInstance.setAsmEnable(false);\n            }\n        }\n    }\n\n    /**\n     * config default type key\n     * @since 1.2.14\n     */\n    public static void setDefaultTypeKey(String typeKey) {\n        DEFAULT_TYPE_KEY = typeKey;\n        ParserConfig.global.symbolTable.addSymbol(typeKey, \n                                                  0, \n                                                  typeKey.length(), \n                                                  typeKey.hashCode(), true);\n    }\n    \n    public static Object parse(String text) {\n        return parse(text, DEFAULT_PARSER_FEATURE);\n    }\n\n    /**\n     *\n     * @since 1.2.38\n     */\n    public static Object parse(String text, ParserConfig config) {\n        return parse(text, config, DEFAULT_PARSER_FEATURE);\n    }\n\n    /**\n     *\n     * @since 1.2.68\n     */\n    public static Object parse(String text, ParserConfig config, Feature... features) {\n        int featureValues = DEFAULT_PARSER_FEATURE;\n        for (Feature feature : features) {\n            featureValues = Feature.config(featureValues, feature, true);\n        }\n\n        return parse(text, config, featureValues);\n    }\n\n    /**\n     *\n     * @since 1.2.38\n     */\n    public static Object parse(String text, ParserConfig config, int features) {\n        if (text == null) {\n            return null;\n        }\n\n        DefaultJSONParser parser = new DefaultJSONParser(text, config, features);\n        Object value = parser.parse();\n\n        parser.handleResovleTask(value);\n\n        parser.close();\n\n        return value;\n    }\n\n    public static Object parse(String text, int features) {\n        return parse(text, ParserConfig.getGlobalInstance(), features);\n    }\n\n    public static Object parse(byte[] input, Feature... features) {\n        char[] chars = allocateChars(input.length);\n        int len = IOUtils.decodeUTF8(input, 0, input.length, chars);\n        if (len < 0) {\n            return null;\n        }\n        return parse(new String(chars, 0, len), features);\n    }\n\n    public static Object parse(byte[] input, int off, int len, CharsetDecoder charsetDecoder, Feature... features) {\n        if (input == null || input.length == 0) {\n            return null;\n        }\n\n        int featureValues = DEFAULT_PARSER_FEATURE;\n        for (Feature feature : features) {\n            featureValues = Feature.config(featureValues, feature, true);\n        }\n\n        return parse(input, off, len, charsetDecoder, featureValues);\n    }\n\n    public static Object parse(byte[] input, int off, int len, CharsetDecoder charsetDecoder, int features) {\n        charsetDecoder.reset();\n\n        int scaleLength = (int) (len * (double) charsetDecoder.maxCharsPerByte());\n        char[] chars = allocateChars(scaleLength);\n\n        ByteBuffer byteBuf = ByteBuffer.wrap(input, off, len);\n        CharBuffer charBuf = CharBuffer.wrap(chars);\n        IOUtils.decode(charsetDecoder, byteBuf, charBuf);\n\n        int position = charBuf.position();\n\n        DefaultJSONParser parser = new DefaultJSONParser(chars, position, ParserConfig.getGlobalInstance(), features);\n        Object value = parser.parse();\n\n        parser.handleResovleTask(value);\n\n        parser.close();\n\n        return value;\n    }\n\n    public static Object parse(String text, Feature... features) {\n        int featureValues = DEFAULT_PARSER_FEATURE;\n        for (Feature feature : features) {\n            featureValues = Feature.config(featureValues, feature, true);\n        }\n\n        return parse(text, featureValues);\n    }\n\n    public static JSONObject parseObject(String text, Feature... features) {\n        return (JSONObject) parse(text, features);\n    }\n\n    public static JSONObject parseObject(String text) {\n        Object obj = parse(text);\n        if (obj instanceof JSONObject) {\n            return (JSONObject) obj;\n        }\n\n        try {\n            return (JSONObject) JSON.toJSON(obj);\n        } catch (RuntimeException e) {\n            throw new JSONException(\"can not cast to JSONObject.\", e);\n        }\n    }\n\n    /**\n     * <pre>\n     * String jsonStr = \"[{\\\"id\\\":1001,\\\"name\\\":\\\"Jobs\\\"}]\";\n     * List&lt;Model&gt; models = JSON.parseObject(jsonStr, new TypeReference&lt;List&lt;Model&gt;&gt;() {});\n     * </pre>\n     * @param text json string\n     * @param type type refernce\n     * @param features parser features\n     * @return an object of type T from the string\n     */\n    @SuppressWarnings(\"unchecked\")\n    public static <T> T parseObject(String text, TypeReference<T> type, Feature... features) {\n        return (T) parseObject(text, type.type, ParserConfig.global, DEFAULT_PARSER_FEATURE, features);\n    }\n\n    /**\n     * \n     * This method deserializes the specified Json into an object of the specified class. It is not\n     * suitable to use if the specified class is a generic type since it will not have the generic\n     * type information because of the Type Erasure feature of Java. Therefore, this method should not\n     * be used if the desired type is a generic type. Note that this method works fine if the any of\n     * the fields of the specified object are generics, just the object itself should not be a\n     * generic type. For the cases when the object is of generic type, invoke\n     * {@link #parseObject(String, Type, Feature[])}. If you have the Json in a {@link InputStream} instead of\n     * a String, use {@link #parseObject(InputStream, Type, Feature[])} instead.\n     *\n     * @param json the string from which the object is to be deserialized\n     * @param clazz the class of T\n     * @param features parser features\n     * @return an object of type T from the string\n     * classOfT\n     */\n    @SuppressWarnings(\"unchecked\")\n    public static <T> T parseObject(String json, Class<T> clazz, Feature... features) {\n        return (T) parseObject(json, (Type) clazz, ParserConfig.global, null, DEFAULT_PARSER_FEATURE, features);\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    public static <T> T parseObject(String text, Class<T> clazz, ParseProcess processor, Feature... features) {\n        return (T) parseObject(text, (Type) clazz, ParserConfig.global, processor, DEFAULT_PARSER_FEATURE,\n                               features);\n    }\n\n    /**\n     * This method deserializes the specified Json into an object of the specified type. This method\n     * is useful if the specified object is a generic type. For non-generic objects, use\n     * {@link #parseObject(String, Class, Feature[])} instead. If you have the Json in a {@link InputStream} instead of\n     * a String, use {@link #parseObject(InputStream, Type, Feature[])} instead.\n     *\n     * @param <T> the type of the desired object\n     * @param json the string from which the object is to be deserialized\n     * @param type The specific genericized type of src. You can obtain this type by using the\n     * {@link com.alibaba.fastjson.TypeReference} class. For example, to get the type for\n     * {@code Collection<Foo>}, you should use:\n     * <pre>\n     * Type type = new TypeReference&lt;Collection&lt;Foo&gt;&gt;(){}.getType();\n     * </pre>\n     * @return an object of type T from the string\n     */\n    @SuppressWarnings(\"unchecked\")\n    public static <T> T parseObject(String json, Type type, Feature... features) {\n        return (T) parseObject(json, type, ParserConfig.global, DEFAULT_PARSER_FEATURE, features);\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    public static <T> T parseObject(String input, Type clazz, ParseProcess processor, Feature... features) {\n        return (T) parseObject(input, clazz, ParserConfig.global, processor, DEFAULT_PARSER_FEATURE, features);\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    public static <T> T parseObject(String input, Type clazz, int featureValues, Feature... features) {\n        if (input == null) {\n            return null;\n        }\n\n        for (Feature feature : features) {\n            featureValues = Feature.config(featureValues, feature, true);\n        }\n\n        DefaultJSONParser parser = new DefaultJSONParser(input, ParserConfig.getGlobalInstance(), featureValues);\n        T value = (T) parser.parseObject(clazz);\n\n        parser.handleResovleTask(value);\n\n        parser.close();\n\n        return (T) value;\n    }\n    \n    /**\n     * @since 1.2.11\n     */\n    public static <T> T parseObject(String input, Type clazz, ParserConfig config, Feature... features) {\n        return parseObject(input, clazz, config, null, DEFAULT_PARSER_FEATURE, features);\n    }\n\n    public static <T> T parseObject(String input, Type clazz, ParserConfig config, int featureValues,\n                                          Feature... features) {\n        return parseObject(input, clazz, config, null, featureValues, features);\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    public static <T> T parseObject(String input, Type clazz, ParserConfig config, ParseProcess processor,\n                                          int featureValues, Feature... features) {\n        if (input == null || input.length() == 0) {\n            return null;\n        }\n\n        if (features != null) {\n            for (Feature feature : features) {\n                featureValues |= feature.mask;\n            }\n        }\n\n        DefaultJSONParser parser = new DefaultJSONParser(input, config, featureValues);\n\n        if (processor != null) {\n            if (processor instanceof ExtraTypeProvider) {\n                parser.getExtraTypeProviders().add((ExtraTypeProvider) processor);\n            }\n\n            if (processor instanceof ExtraProcessor) {\n                parser.getExtraProcessors().add((ExtraProcessor) processor);\n            }\n\n            if (processor instanceof FieldTypeResolver) {\n                parser.setFieldTypeResolver((FieldTypeResolver) processor);\n            }\n        }\n\n        T value = (T) parser.parseObject(clazz, null);\n\n        parser.handleResovleTask(value);\n\n        parser.close();\n\n        return (T) value;\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    public static <T> T parseObject(byte[] bytes, Type clazz, Feature... features) {\n        return (T) parseObject(bytes, 0, bytes.length, IOUtils.UTF8, clazz, features);\n    }\n    \n    /**\n     * @since 1.2.11\n     */\n    @SuppressWarnings(\"unchecked\")\n    public static <T> T parseObject(byte[] bytes, int offset, int len, Charset charset, Type clazz, Feature... features) {\n        return (T) parseObject(bytes, offset, len, charset, clazz, ParserConfig.global, null, DEFAULT_PARSER_FEATURE, features);\n    }\n\n    /**\n     * @since 1.2.55\n     */\n    @SuppressWarnings(\"unchecked\")\n    public static <T> T parseObject(byte[] bytes,\n                                    Charset charset,\n                                    Type clazz,\n                                    ParserConfig config,\n                                    ParseProcess processor,\n                                    int featureValues,\n                                    Feature... features) {\n        return (T) parseObject(bytes, 0, bytes.length, charset, clazz, config, processor, featureValues, features);\n    }\n\n    /**\n     * @since 1.2.55\n     */\n    @SuppressWarnings(\"unchecked\")\n    public static <T> T parseObject(byte[] bytes, int offset, int len,\n                                    Charset charset,\n                                    Type clazz,\n                                    ParserConfig config,\n                                    ParseProcess processor,\n                                    int featureValues,\n                                    Feature... features) {\n        if (charset == null) {\n            charset = IOUtils.UTF8;\n        }\n\n        String strVal = null;\n        if (charset == IOUtils.UTF8) {\n            char[] chars = allocateChars(bytes.length);\n            int chars_len = IOUtils.decodeUTF8(bytes, offset, len, chars);\n\n            if (chars_len < 0) {\n                InputStreamReader gzipReader = null;\n                try {\n                    gzipReader = new InputStreamReader(\n                            new GZIPInputStream(\n                                    new ByteArrayInputStream(bytes, offset, len)), \"UTF-8\");\n                    strVal = IOUtils.readAll(gzipReader);\n                } catch (Exception ex) {\n                    return null;\n                } finally {\n                    IOUtils.close(gzipReader);\n                }\n            }\n            if (strVal == null && chars_len < 0) {\n                return null;\n            }\n\n            if (strVal == null) {\n                strVal = new String(chars, 0, chars_len);\n            }\n        } else {\n            if (len < 0) {\n                return null;\n            }\n            strVal = new String(bytes, offset, len, charset);\n        }\n        return (T) parseObject(strVal, clazz, config, processor, featureValues, features);\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    public static <T> T parseObject(byte[] input, //\n                                    int off, //\n                                    int len, //\n                                    CharsetDecoder charsetDecoder, //\n                                    Type clazz, //\n                                    Feature... features) {\n        charsetDecoder.reset();\n\n        int scaleLength = (int) (len * (double) charsetDecoder.maxCharsPerByte());\n        char[] chars = allocateChars(scaleLength);\n\n        ByteBuffer byteBuf = ByteBuffer.wrap(input, off, len);\n        CharBuffer charByte = CharBuffer.wrap(chars);\n        IOUtils.decode(charsetDecoder, byteBuf, charByte);\n\n        int position = charByte.position();\n\n        return (T) parseObject(chars, position, clazz, features);\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    public static <T> T parseObject(char[] input, int length, Type clazz, Feature... features) {\n        if (input == null || input.length == 0) {\n            return null;\n        }\n\n        int featureValues = DEFAULT_PARSER_FEATURE;\n        for (Feature feature : features) {\n            featureValues = Feature.config(featureValues, feature, true);\n        }\n\n        DefaultJSONParser parser = new DefaultJSONParser(input, length, ParserConfig.getGlobalInstance(), featureValues);\n        T value = (T) parser.parseObject(clazz);\n\n        parser.handleResovleTask(value);\n\n        parser.close();\n\n        return (T) value;\n    }\n\n    /**\n     * @since 1.2.11\n     */\n    @SuppressWarnings(\"unchecked\")\n    public static <T> T parseObject(InputStream is, //\n                                    Type type, //\n                                    Feature... features) throws IOException {\n        return (T) parseObject(is, IOUtils.UTF8, type, features);\n    }\n\n    /**\n     * @since 1.2.11\n     */\n    @SuppressWarnings(\"unchecked\")\n    public static <T> T parseObject(InputStream is, //\n                                    Charset charset, //\n                                    Type type, //\n                                    Feature... features) throws IOException {\n        return (T) parseObject(is, charset, type, ParserConfig.global, features);\n    }\n\n    /**\n     * @since 1.2.55\n     */\n    @SuppressWarnings(\"unchecked\")\n    public static <T> T parseObject(InputStream is, //\n                                    Charset charset, //\n                                    Type type, //\n                                    ParserConfig config, //\n                                    Feature... features) throws IOException {\n        return (T) parseObject(is, charset, type, config, null, DEFAULT_PARSER_FEATURE, features);\n    }\n\n    /**\n     * @since 1.2.55\n     */\n    @SuppressWarnings(\"unchecked\")\n    public static <T> T parseObject(InputStream is, //\n                                    Charset charset, //\n                                    Type type, //\n                                    ParserConfig config, //\n                                    ParseProcess processor, //\n                                    int featureValues, //\n                                    Feature... features) throws IOException {\n        if (charset == null) {\n            charset = IOUtils.UTF8;\n        }\n\n        byte[] bytes = allocateBytes(1024 * 64);\n        int offset = 0;\n        for (;;) {\n            int readCount = is.read(bytes, offset, bytes.length - offset);\n            if (readCount == -1) {\n                break;\n            }\n            offset += readCount;\n            if (offset == bytes.length) {\n                byte[] newBytes = new byte[bytes.length * 3 / 2];\n                System.arraycopy(bytes, 0, newBytes, 0, bytes.length);\n                bytes = newBytes;\n            }\n        }\n\n        return (T) parseObject(bytes, 0, offset, charset, type, config, processor, featureValues, features);\n    }\n\n    public static <T> T parseObject(String text, Class<T> clazz) {\n        return parseObject(text, clazz, new Feature[0]);\n    }\n\n    public static JSONArray parseArray(String text) {\n        return parseArray(text, ParserConfig.global);\n    }\n\n    public static JSONArray parseArray(String text, ParserConfig parserConfig) {\n        if (text == null) {\n            return null;\n        }\n\n        DefaultJSONParser parser = new DefaultJSONParser(text, parserConfig);\n\n        JSONArray array;\n\n        JSONLexer lexer = parser.lexer;\n        if (lexer.token() == JSONToken.NULL) {\n            lexer.nextToken();\n            array = null;\n        } else if (lexer.token() == JSONToken.EOF && lexer.isBlankInput()) {\n            array = null;\n        } else {\n            array = new JSONArray();\n            parser.parseArray(array);\n\n            parser.handleResovleTask(array);\n        }\n\n        parser.close();\n\n        return array;\n    }\n\n    public static <T> List<T> parseArray(String text, Class<T> clazz) {\n        return parseArray(text, clazz, ParserConfig.global);\n    }\n\n    public static <T> List<T> parseArray(String text, Class<T> clazz, ParserConfig config) {\n        if (text == null) {\n            return null;\n        }\n\n        List<T> list;\n\n        DefaultJSONParser parser = new DefaultJSONParser(text, config);\n        JSONLexer lexer = parser.lexer;\n        int token = lexer.token();\n        if (token == JSONToken.NULL) {\n            lexer.nextToken();\n            list = null;\n        } else if (token == JSONToken.EOF && lexer.isBlankInput()) {\n            list = null;\n        } else {\n            list = new ArrayList<T>();\n            parser.parseArray(clazz, list);\n\n            parser.handleResovleTask(list);\n        }\n\n        parser.close();\n\n        return list;\n    }\n\n    public static List<Object> parseArray(String text, Type[] types) {\n        return parseArray(text, types, ParserConfig.global);\n    }\n\n    public static List<Object> parseArray(String text, Type[] types, ParserConfig config) {\n        if (text == null) {\n            return null;\n        }\n\n        List<Object> list;\n\n        DefaultJSONParser parser = new DefaultJSONParser(text, config);\n        Object[] objectArray = parser.parseArray(types);\n        if (objectArray == null) {\n            list = null;\n        } else {\n            list = Arrays.asList(objectArray);\n        }\n\n        parser.handleResovleTask(list);\n\n        parser.close();\n\n        return list;\n    }\n\n    /**\n     * This method serializes the specified object into its equivalent Json representation. Note that this method works fine if the any of the object fields are of generic type,\n     * just the object itself should not be of a generic type. If you want to write out the object to a\n     * {@link Writer}, use {@link #writeJSONString(Writer, Object, SerializerFeature[])} instead.\n     *\n     * @param object the object for which json representation is to be created setting for fastjson\n     * @return Json representation of {@code object}.\n     */\n    public static String toJSONString(Object object) {\n        return toJSONString(object, emptyFilters);\n    }\n\n    public static String toJSONString(Object object, SerializerFeature... features) {\n        return toJSONString(object, DEFAULT_GENERATE_FEATURE, features);\n    }\n\n    /**\n     * @since 1.2.11\n     */\n    public static String toJSONString(Object object, int defaultFeatures, SerializerFeature... features) {\n        SerializeWriter out = new SerializeWriter((Writer) null, defaultFeatures, features);\n\n        try {\n            JSONSerializer serializer = new JSONSerializer(out);\n            serializer.write(object);\n            String outString = out.toString();\n            int len = outString.length();\n            if (len > 0\n                    && outString.charAt(len -1) == '.'\n                    && object instanceof Number\n                    && !out.isEnabled(SerializerFeature.WriteClassName)) {\n                return outString.substring(0, len - 1);\n            }\n            return outString;\n        } finally {\n            out.close();\n        }\n    }\n\n    /**\n     * @since 1.1.14\n     */\n    public static String toJSONStringWithDateFormat(Object object, String dateFormat,\n                                                          SerializerFeature... features) {\n        return toJSONString(object, SerializeConfig.globalInstance, null, dateFormat, DEFAULT_GENERATE_FEATURE, features);\n    }\n\n    public static String toJSONString(Object object, SerializeFilter filter, SerializerFeature... features) {\n        return toJSONString(object, SerializeConfig.globalInstance, new SerializeFilter[] {filter}, null, DEFAULT_GENERATE_FEATURE, features);\n    }\n\n    public static String toJSONString(Object object, SerializeFilter[] filters, SerializerFeature... features) {\n        return toJSONString(object, SerializeConfig.globalInstance, filters, null, DEFAULT_GENERATE_FEATURE, features);\n    }\n\n    public static byte[] toJSONBytes(Object object, SerializerFeature... features) {\n        return toJSONBytes(object, DEFAULT_GENERATE_FEATURE, features);\n    }\n\n    public static byte[] toJSONBytes(Object object, SerializeFilter filter, SerializerFeature... features) {\n        return toJSONBytes(object, SerializeConfig.globalInstance, new SerializeFilter[] {filter}, DEFAULT_GENERATE_FEATURE, features);\n    }\n    \n    /**\n     * @since 1.2.11 \n     */\n    public static byte[] toJSONBytes(Object object, int defaultFeatures, SerializerFeature... features) {\n        return toJSONBytes(object, SerializeConfig.globalInstance, defaultFeatures, features);\n    }\n\n    public static String toJSONString(Object object, SerializeConfig config, SerializerFeature... features) {\n        return toJSONString(object, config, (SerializeFilter) null, features);\n    }\n\n    public static String toJSONString(Object object, //\n                                      SerializeConfig config, //\n                                      SerializeFilter filter, //\n                                      SerializerFeature... features) {\n        return toJSONString(object, config, new SerializeFilter[] {filter}, null, DEFAULT_GENERATE_FEATURE, features);\n    }\n\n    public static String toJSONString(Object object, //\n                                      SerializeConfig config, //\n                                      SerializeFilter[] filters, //\n                                      SerializerFeature... features) {\n        return toJSONString(object, config, filters, null, DEFAULT_GENERATE_FEATURE, features);\n    }\n\n    /**\n     * @since 1.2.9\n     * @return\n     */\n    public static String toJSONString(Object object, // \n                                      SerializeConfig config, // \n                                      SerializeFilter[] filters, // \n                                      String dateFormat, //\n                                      int defaultFeatures, // \n                                      SerializerFeature... features) {\n        SerializeWriter out = new SerializeWriter(null, defaultFeatures, features);\n\n        try {\n            JSONSerializer serializer = new JSONSerializer(out, config);\n            \n            if (dateFormat != null && dateFormat.length() != 0) {\n                serializer.setDateFormat(dateFormat);\n                serializer.config(SerializerFeature.WriteDateUseDateFormat, true);\n            }\n\n            if (filters != null) {\n                for (SerializeFilter filter : filters) {\n                    serializer.addFilter(filter);\n                }\n            }\n\n            serializer.write(object);\n\n            return out.toString();\n        } finally {\n            out.close();\n        }\n    }\n\n    /**\n     * @deprecated\n     */\n    public static String toJSONStringZ(Object object, SerializeConfig mapping, SerializerFeature... features) {\n        return toJSONString(object, mapping, emptyFilters, null, 0, features);\n    }\n\n    /**\n     * @since 1.2.42\n     */\n    public static byte[] toJSONBytes(Object object, SerializeConfig config, SerializerFeature... features) {\n        return toJSONBytes(object, config, emptyFilters, DEFAULT_GENERATE_FEATURE, features);\n    }\n\n    /**\n     * @since 1.2.11\n     */\n    public static byte[] toJSONBytes(Object object, SerializeConfig config, int defaultFeatures, SerializerFeature... features) {\n        return toJSONBytes(object, config, emptyFilters, defaultFeatures, features);\n    }\n\n    /**\n     * @since 1.2.42\n     */\n    public static byte[] toJSONBytes(Object object, SerializeFilter[] filters, SerializerFeature... features) {\n        return toJSONBytes(object, SerializeConfig.globalInstance, filters, DEFAULT_GENERATE_FEATURE, features);\n    }\n\n    public static byte[] toJSONBytes(Object object, SerializeConfig config, SerializeFilter filter, SerializerFeature... features) {\n        return toJSONBytes(object, config, new SerializeFilter[] {filter}, DEFAULT_GENERATE_FEATURE, features);\n    }\n    \n    /**\n     * @since 1.2.42\n     */\n    public static byte[] toJSONBytes(Object object, SerializeConfig config, SerializeFilter[] filters, int defaultFeatures, SerializerFeature... features) {\n        return toJSONBytes(object, config, filters, null, defaultFeatures, features);\n    }\n\n    /**\n     * @since 1.2.55\n     */\n    public static byte[] toJSONBytes(Object object, SerializeConfig config, SerializeFilter[] filters, String dateFormat, int defaultFeatures, SerializerFeature... features) {\n        return toJSONBytes(IOUtils.UTF8, object, config, filters, dateFormat, defaultFeatures, features);\n    }\n\n    /**\n     * @since 1.2.55\n     */\n    public static byte[] toJSONBytes(Charset charset, //\n                                     Object object, //\n                                     SerializeConfig config, //\n                                     SerializeFilter[] filters, //\n                                     String dateFormat, //\n                                     int defaultFeatures, //\n                                     SerializerFeature... features) {\n        SerializeWriter out = new SerializeWriter(null, defaultFeatures, features);\n\n        try {\n            JSONSerializer serializer = new JSONSerializer(out, config);\n\n            if (dateFormat != null && dateFormat.length() != 0) {\n                serializer.setDateFormat(dateFormat);\n                serializer.config(SerializerFeature.WriteDateUseDateFormat, true);\n            }\n\n            if (filters != null) {\n                for (SerializeFilter filter : filters) {\n                    serializer.addFilter(filter);\n                }\n            }\n\n            serializer.write(object);\n            return out.toBytes(charset);\n        } finally {\n            out.close();\n        }\n    }\n\n    /**\n     * Use the date format in FastJsonConfig to serialize JSON\n     *\n     * @param  dateFormat the date format in FastJsonConfigs\n     * @since 1.2.55\n     */\n    public static byte[] toJSONBytesWithFastJsonConfig(Charset charset, //\n                                     Object object, //\n                                     SerializeConfig config, //\n                                     SerializeFilter[] filters, //\n                                     String dateFormat, //\n                                     int defaultFeatures, //\n                                     SerializerFeature... features) {\n        SerializeWriter out = new SerializeWriter(null, defaultFeatures, features);\n\n        try {\n            JSONSerializer serializer = new JSONSerializer(out, config);\n\n            if (dateFormat != null && dateFormat.length() != 0) {\n                serializer.setFastJsonConfigDateFormatPattern(dateFormat);\n                serializer.config(SerializerFeature.WriteDateUseDateFormat, true);\n            }\n\n            if (filters != null) {\n                for (SerializeFilter filter : filters) {\n                    serializer.addFilter(filter);\n                }\n            }\n\n            serializer.write(object);\n            return out.toBytes(charset);\n        } finally {\n            out.close();\n        }\n    }\n\n    public static String toJSONString(Object object, boolean prettyFormat) {\n        if (!prettyFormat) {\n            return toJSONString(object);\n        }\n\n        return toJSONString(object, SerializerFeature.PrettyFormat);\n    }\n\n    /**\n     * @deprecated use writeJSONString\n     */\n    public static void writeJSONStringTo(Object object, Writer writer, SerializerFeature... features) {\n        writeJSONString(writer, object, features);\n    }\n\n    /**\n     * This method serializes the specified object into its equivalent json representation.\n     *\n     * @param writer Writer to which the json representation needs to be written\n     * @param object the object for which json representation is to be created setting for fastjson\n     * @param features serializer features\n     * @since 1.2.11\n     */\n    public static void writeJSONString(Writer writer, Object object, SerializerFeature... features) {\n        writeJSONString(writer, object, JSON.DEFAULT_GENERATE_FEATURE, features);\n    }\n    \n    /**\n     * @since 1.2.11 \n     */\n    public static void writeJSONString(Writer writer, Object object, int defaultFeatures, SerializerFeature... features) {\n        SerializeWriter out = new SerializeWriter(writer, defaultFeatures, features);\n\n        try {\n            JSONSerializer serializer = new JSONSerializer(out);\n            serializer.write(object);\n        } finally {\n            out.close();\n        }\n    }\n\n    /**\n     * write object as json to OutputStream\n     * @param os output stream\n     * @param object\n     * @param features serializer features\n     * @since 1.2.11\n     * @throws IOException\n     */\n    public static final int writeJSONString(OutputStream os, // \n                                             Object object, // \n                                             SerializerFeature... features) throws IOException {\n        return writeJSONString(os, object, DEFAULT_GENERATE_FEATURE, features);\n    }\n    \n    /**\n     * @since 1.2.11 \n     */\n    public static final int writeJSONString(OutputStream os, // \n                                            Object object, // \n                                            int defaultFeatures, //\n                                            SerializerFeature... features) throws IOException {\n       return writeJSONString(os,  //\n                              IOUtils.UTF8, //\n                              object, //\n                              SerializeConfig.globalInstance, //\n                              null, //\n                              null, // \n                              defaultFeatures, //\n                              features);\n    }\n    \n    public static final int writeJSONString(OutputStream os, // \n                                             Charset charset, // \n                                             Object object, // \n                                             SerializerFeature... features) throws IOException {\n        return writeJSONString(os, //\n                               charset, //\n                               object, //\n                               SerializeConfig.globalInstance, //\n                               null, //\n                               null, //\n                               DEFAULT_GENERATE_FEATURE, //\n                               features);\n    }\n    \n    public static final int writeJSONString(OutputStream os, // \n                                             Charset charset, // \n                                             Object object, // \n                                             SerializeConfig config, //\n                                             SerializeFilter[] filters, //\n                                             String dateFormat, //\n                                             int defaultFeatures, //\n                                             SerializerFeature... features) throws IOException {\n        SerializeWriter writer = new SerializeWriter(null, defaultFeatures, features);\n\n        try {\n            JSONSerializer serializer = new JSONSerializer(writer, config);\n            \n            if (dateFormat != null && dateFormat.length() != 0) {\n                serializer.setDateFormat(dateFormat);\n                serializer.config(SerializerFeature.WriteDateUseDateFormat, true);\n            }\n\n            if (filters != null) {\n                for (SerializeFilter filter : filters) {\n                    serializer.addFilter(filter);\n                }\n            }\n            \n            serializer.write(object);\n            \n            int len = writer.writeToEx(os, charset);\n            return len;\n        } finally {\n            writer.close();\n        }\n    }\n\n    public static final int writeJSONStringWithFastJsonConfig(OutputStream os, //\n                                            Charset charset, //\n                                            Object object, //\n                                            SerializeConfig config, //\n                                            SerializeFilter[] filters, //\n                                            String dateFormat, //\n                                            int defaultFeatures, //\n                                            SerializerFeature... features) throws IOException {\n        SerializeWriter writer = new SerializeWriter(null, defaultFeatures, features);\n\n        try {\n            JSONSerializer serializer = new JSONSerializer(writer, config);\n\n            if (dateFormat != null && dateFormat.length() != 0) {\n                serializer.setFastJsonConfigDateFormatPattern(dateFormat);\n                serializer.config(SerializerFeature.WriteDateUseDateFormat, true);\n            }\n\n            if (filters != null) {\n                for (SerializeFilter filter : filters) {\n                    serializer.addFilter(filter);\n                }\n            }\n\n            serializer.write(object);\n\n            int len = writer.writeToEx(os, charset);\n            return len;\n        } finally {\n            writer.close();\n        }\n    }\n\n    // ======================================\n    @Override\n    public String toString() {\n        return toJSONString();\n    }\n\n    public String toJSONString() {\n        SerializeWriter out = new SerializeWriter();\n        try {\n            new JSONSerializer(out).write(this);\n            return out.toString();\n        } finally {\n            out.close();\n        }\n    }\n\n    /**\n     * @since 1.2.57\n     */\n    public String toString(SerializerFeature... features) {\n        SerializeWriter out = new SerializeWriter(null, JSON.DEFAULT_GENERATE_FEATURE, features);\n\n        try {\n            new JSONSerializer(out).write(this);\n            return out.toString();\n        } finally {\n            out.close();\n        }\n    }\n\n    public void writeJSONString(Appendable appendable) {\n        SerializeWriter out = new SerializeWriter();\n        try {\n            new JSONSerializer(out).write(this);\n            appendable.append(out.toString());\n        } catch (IOException e) {\n            throw new JSONException(e.getMessage(), e);\n        } finally {\n            out.close();\n        }\n    }\n\n    /**\n     * This method serializes the specified object into its equivalent representation as a tree of\n     * {@link JSONObject}s. \n     *\n     */\n    public static Object toJSON(Object javaObject) {\n        return toJSON(javaObject, SerializeConfig.globalInstance);\n    }\n\n    /**\n     * @deprecated\n     */\n    public static Object toJSON(Object javaObject, ParserConfig parserConfig) {\n        return toJSON(javaObject, SerializeConfig.globalInstance);\n    }\n    \n    @SuppressWarnings(\"unchecked\")\n    public static Object toJSON(Object javaObject, SerializeConfig config) {\n        if (javaObject == null) {\n            return null;\n        }\n\n        if (javaObject instanceof JSON) {\n            return javaObject;\n        }\n\n        if (javaObject instanceof Map) {\n            Map<Object, Object> map = (Map<Object, Object>) javaObject;\n\n            int size = map.size();\n\n            Map innerMap;\n            if (map instanceof LinkedHashMap) {\n                innerMap = new LinkedHashMap(size);\n            } else if (map instanceof TreeMap) {\n                innerMap = new TreeMap();\n            } else {\n                innerMap = new HashMap(size);\n            }\n\n            JSONObject json = new JSONObject(innerMap);\n\n            for (Map.Entry<Object, Object> entry : map.entrySet()) {\n                Object key = entry.getKey();\n                String jsonKey = TypeUtils.castToString(key);\n                Object jsonValue = toJSON(entry.getValue(), config);\n                json.put(jsonKey, jsonValue);\n            }\n\n            return json;\n        }\n\n        if (javaObject instanceof Collection) {\n            Collection<Object> collection = (Collection<Object>) javaObject;\n\n            JSONArray array = new JSONArray(collection.size());\n\n            for (Object item : collection) {\n                Object jsonValue = toJSON(item, config);\n                array.add(jsonValue);\n            }\n\n            return array;\n        }\n\n        if (javaObject instanceof JSONSerializable) {\n            String json = JSON.toJSONString(javaObject);\n            return JSON.parse(json);\n        }\n\n        Class<?> clazz = javaObject.getClass();\n\n        if (clazz.isEnum()) {\n            return ((Enum<?>) javaObject).name();\n        }\n\n        if (clazz.isArray()) {\n            int len = Array.getLength(javaObject);\n\n            JSONArray array = new JSONArray(len);\n\n            for (int i = 0; i < len; ++i) {\n                Object item = Array.get(javaObject, i);\n                Object jsonValue = toJSON(item);\n                array.add(jsonValue);\n            }\n\n            return array;\n        }\n\n        if (ParserConfig.isPrimitive2(clazz)) {\n            return javaObject;\n        }\n\n        ObjectSerializer serializer = config.getObjectWriter(clazz);\n        if (serializer instanceof JavaBeanSerializer) {\n            JavaBeanSerializer javaBeanSerializer = (JavaBeanSerializer) serializer;\n\n            JSONType jsonType = javaBeanSerializer.getJSONType();\n            boolean ordered = false;\n            if (jsonType != null) {\n                for (SerializerFeature serializerFeature : jsonType.serialzeFeatures()) {\n                    if (serializerFeature == SerializerFeature.SortField\n                            || serializerFeature == SerializerFeature.MapSortField) {\n                        ordered = true;\n                    }\n                }\n            }\n\n            JSONObject json = new JSONObject(ordered);\n            try {\n                Map<String, Object> values = javaBeanSerializer.getFieldValuesMap(javaObject);\n                for (Map.Entry<String, Object> entry : values.entrySet()) {\n                    json.put(entry.getKey(), toJSON(entry.getValue(), config));\n                }\n            } catch (Exception e) {\n                throw new JSONException(\"toJSON error\", e);\n            }\n            return json;\n        }\n        \n        String text = JSON.toJSONString(javaObject, config);\n        return JSON.parse(text);\n    }\n\n    public static <T> T toJavaObject(JSON json, Class<T> clazz) {\n        return TypeUtils.cast(json, clazz, ParserConfig.getGlobalInstance());\n    }\n    \n    /**\n     * @since 1.2.9\n     */\n    public <T> T toJavaObject(Class<T> clazz) {\n        if (clazz == JSONArray.class || clazz == JSON.class || clazz == Collection.class || clazz == List.class) {\n            return (T) this;\n        }\n\n        return TypeUtils.cast(this, clazz, ParserConfig.getGlobalInstance());\n    }\n\n    /**\n     * @since 1.2.33\n     */\n    public <T> T toJavaObject(Type type) {\n        return TypeUtils.cast(this, type, ParserConfig.getGlobalInstance());\n    }\n\n    /**\n     * @since 1.2.33\n     */\n    public <T> T toJavaObject(TypeReference typeReference) {\n        Type type = typeReference != null ? typeReference.getType() : null;\n        return TypeUtils.cast(this, type, ParserConfig.getGlobalInstance());\n    }\n    \n    private final static ThreadLocal<byte[]> bytesLocal = new ThreadLocal<byte[]>();\n    private static byte[] allocateBytes(int length) {\n        byte[] chars = bytesLocal.get();\n\n        if (chars == null) {\n            if (length <= 1024 * 64) {\n                chars = new byte[1024 * 64];\n                bytesLocal.set(chars);\n            } else {\n                chars = new byte[length];\n            }\n        } else if (chars.length < length) {\n            chars = new byte[length];\n        }\n\n        return chars;\n    }\n\n    private final static ThreadLocal<char[]> charsLocal = new ThreadLocal<char[]>();\n    private static char[] allocateChars(int length) {\n        char[] chars = charsLocal.get();\n\n        if (chars == null) {\n            if (length <= 1024 * 64) {\n                chars = new char[1024 * 64];\n                charsLocal.set(chars);\n            } else {\n                chars = new char[length];\n            }\n        } else if (chars.length < length) {\n            chars = new char[length];\n        }\n\n        return chars;\n    }\n\n    /**\n     * @deprecated Please use {@link com.alibaba.fastjson.JSONValidator} instead.\n     */\n    public static boolean isValid(String str) {\n        if (str == null || str.length() == 0) {\n            return false;\n        }\n\n        JSONScanner lexer = new JSONScanner(str);\n        try {\n            lexer.nextToken();\n\n            final int token = lexer.token();\n            switch (token) {\n                case JSONToken.LBRACE:\n                    if (lexer.getCurrent() == JSONLexer.EOI) {\n                        return false;\n                    }\n                    lexer.skipObject(true);\n                    break;\n                case JSONToken.LBRACKET:\n                    lexer.skipArray(true);\n                    break;\n                case JSONToken.LITERAL_INT:\n                case JSONToken.LITERAL_STRING:\n                case JSONToken.LITERAL_FLOAT:\n                case JSONToken.LITERAL_ISO8601_DATE:\n                case JSONToken.NULL:\n                case JSONToken.TRUE:\n                case JSONToken.FALSE:\n                    lexer.nextToken();\n                    break;\n                default:\n                    return false;\n            }\n\n            return lexer.token() == JSONToken.EOF;\n        } catch (Exception ex) {\n            return false;\n        } finally {\n            lexer.close();\n        }\n    }\n\n    /**\n     * @deprecated Please use {@link com.alibaba.fastjson.JSONValidator} instead.\n     */\n    public static boolean isValidObject(String str) {\n        if (str == null || str.length() == 0) {\n            return false;\n        }\n\n        JSONScanner lexer = new JSONScanner(str);\n\n        try {\n            lexer.nextToken();\n            final int token = lexer.token();\n            if (token == JSONToken.LBRACE) {\n                if (lexer.getCurrent() == JSONLexer.EOI) {\n                    return false;\n                }\n                lexer.skipObject(true);\n                return lexer.token() == JSONToken.EOF;\n            }\n            return false;\n        } catch (Exception ex) {\n            return false;\n        } finally {\n            lexer.close();\n        }\n    }\n\n    /**\n     * @deprecated Please use {@link com.alibaba.fastjson.JSONValidator} instead.\n     */\n    public static boolean isValidArray(String str) {\n        if (str == null || str.length() == 0) {\n            return false;\n        }\n\n        JSONScanner lexer = new JSONScanner(str);\n        try {\n            lexer.nextToken();\n            final int token = lexer.token();\n            if (token == JSONToken.LBRACKET) {\n                lexer.skipArray(true);\n                return lexer.token() == JSONToken.EOF;\n            }\n            return false;\n        } catch (Exception ex) {\n            return false;\n        } finally {\n            lexer.close();\n        }\n    }\n\n    public static <T> void handleResovleTask(DefaultJSONParser parser, T value) {\n        parser.handleResovleTask(value);\n    }\n    \n    public static void addMixInAnnotations(Type target, Type mixinSource) {\n        if (target != null && mixinSource != null) {\n            mixInsMapper.put(target, mixinSource);\n        }\n    }\n\n    public static void removeMixInAnnotations(Type target) {\n        if (target != null) {\n            mixInsMapper.remove(target);\n        }\n    }\n\n    public static void clearMixInAnnotations() {\n        mixInsMapper.clear();\n    }\n\n    public static Type getMixInAnnotations(Type target) {\n        if (target != null) {\n            return mixInsMapper.get(target);\n        }\n        return null;\n    }\n\n    public final static String VERSION = \"1.2.84\";\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/JSONArray.java",
    "content": "/*\r\n * Copyright 1999-2017 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson;\r\n\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToBigDecimal;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToBigInteger;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToBoolean;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToByte;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToDate;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToDouble;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToFloat;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToInt;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToLong;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToShort;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToSqlDate;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToString;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToTimestamp;\r\n\r\nimport java.io.IOException;\r\nimport java.io.ObjectInputStream;\r\nimport java.io.Serializable;\r\nimport java.lang.reflect.Type;\r\nimport java.math.BigDecimal;\r\nimport java.math.BigInteger;\r\nimport java.util.*;\r\n\r\nimport com.alibaba.fastjson.parser.ParserConfig;\r\nimport com.alibaba.fastjson.util.TypeUtils;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class JSONArray extends JSON implements List<Object>, Cloneable, RandomAccess, Serializable {\r\n\r\n    private static final long  serialVersionUID = 1L;\r\n    private final List<Object> list;\r\n    protected transient Object relatedArray;\r\n    protected transient Type   componentType;\r\n\r\n    public JSONArray(){\r\n        this.list = new ArrayList<Object>();\r\n    }\r\n\r\n    public JSONArray(List<Object> list){\r\n        if (list == null){\r\n            throw new IllegalArgumentException(\"list is null.\");\r\n        }\r\n        this.list = list;\r\n    }\r\n\r\n    public JSONArray(int initialCapacity){\r\n        this.list = new ArrayList<Object>(initialCapacity);\r\n    }\r\n\r\n    /**\r\n     * @since 1.1.16\r\n     * @return\r\n     */\r\n    public Object getRelatedArray() {\r\n        return relatedArray;\r\n    }\r\n\r\n    public void setRelatedArray(Object relatedArray) {\r\n        this.relatedArray = relatedArray;\r\n    }\r\n\r\n    public Type getComponentType() {\r\n        return componentType;\r\n    }\r\n\r\n    public void setComponentType(Type componentType) {\r\n        this.componentType = componentType;\r\n    }\r\n\r\n    public int size() {\r\n        return list.size();\r\n    }\r\n\r\n    public boolean isEmpty() {\r\n        return list.isEmpty();\r\n    }\r\n\r\n    public boolean contains(Object o) {\r\n        return list.contains(o);\r\n    }\r\n\r\n    public Iterator<Object> iterator() {\r\n        return list.iterator();\r\n    }\r\n\r\n    public Object[] toArray() {\r\n        return list.toArray();\r\n    }\r\n\r\n    public <T> T[] toArray(T[] a) {\r\n        return list.toArray(a);\r\n    }\r\n\r\n    public boolean add(Object e) {\r\n        return list.add(e);\r\n    }\r\n\r\n    public JSONArray fluentAdd(Object e) {\r\n        list.add(e);\r\n        return this;\r\n    }\r\n\r\n    public boolean remove(Object o) {\r\n        return list.remove(o);\r\n    }\r\n\r\n    public JSONArray fluentRemove(Object o) {\r\n        list.remove(o);\r\n        return this;\r\n    }\r\n\r\n    public boolean containsAll(Collection<?> c) {\r\n        return list.containsAll(c);\r\n    }\r\n\r\n    public boolean addAll(Collection<?> c) {\r\n        return list.addAll(c);\r\n    }\r\n\r\n    public JSONArray fluentAddAll(Collection<?> c) {\r\n        list.addAll(c);\r\n        return this;\r\n    }\r\n\r\n    public boolean addAll(int index, Collection<?> c) {\r\n        return list.addAll(index, c);\r\n    }\r\n\r\n    public JSONArray fluentAddAll(int index, Collection<?> c) {\r\n        list.addAll(index, c);\r\n        return this;\r\n    }\r\n\r\n    public boolean removeAll(Collection<?> c) {\r\n        return list.removeAll(c);\r\n    }\r\n\r\n    public JSONArray fluentRemoveAll(Collection<?> c) {\r\n        list.removeAll(c);\r\n        return this;\r\n    }\r\n\r\n    public boolean retainAll(Collection<?> c) {\r\n        return list.retainAll(c);\r\n    }\r\n\r\n    public JSONArray fluentRetainAll(Collection<?> c) {\r\n        list.retainAll(c);\r\n        return this;\r\n    }\r\n\r\n    public void clear() {\r\n        list.clear();\r\n    }\r\n\r\n    public JSONArray fluentClear() {\r\n        list.clear();\r\n        return this;\r\n    }\r\n\r\n    public Object set(int index, Object element) {\r\n        if (index == -1) {\r\n            list.add(element);\r\n            return null;\r\n        }\r\n\r\n        if (list.size() <= index) {\r\n            for (int i = list.size(); i < index; ++i) {\r\n                list.add(null);\r\n            }\r\n            list.add(element);\r\n            return null;\r\n        }\r\n\r\n        return list.set(index, element);\r\n    }\r\n\r\n    public JSONArray fluentSet(int index, Object element) {\r\n        set(index, element);\r\n        return this;\r\n    }\r\n\r\n    public void add(int index, Object element) {\r\n        list.add(index, element);\r\n    }\r\n\r\n    public JSONArray fluentAdd(int index, Object element) {\r\n        list.add(index, element);\r\n        return this;\r\n    }\r\n\r\n    public Object remove(int index) {\r\n        return list.remove(index);\r\n    }\r\n\r\n    public JSONArray fluentRemove(int index) {\r\n        list.remove(index);\r\n        return this;\r\n    }\r\n\r\n    public int indexOf(Object o) {\r\n        return list.indexOf(o);\r\n    }\r\n\r\n    public int lastIndexOf(Object o) {\r\n        return list.lastIndexOf(o);\r\n    }\r\n\r\n    public ListIterator<Object> listIterator() {\r\n        return list.listIterator();\r\n    }\r\n\r\n    public ListIterator<Object> listIterator(int index) {\r\n        return list.listIterator(index);\r\n    }\r\n\r\n    public List<Object> subList(int fromIndex, int toIndex) {\r\n        return list.subList(fromIndex, toIndex);\r\n    }\r\n\r\n    public Object get(int index) {\r\n        return list.get(index);\r\n    }\r\n\r\n    public JSONObject getJSONObject(int index) {\r\n        Object value = list.get(index);\r\n\r\n        if (value instanceof JSONObject) {\r\n            return (JSONObject) value;\r\n        }\r\n\r\n        if (value instanceof Map) {\r\n            return new JSONObject((Map) value);\r\n        }\r\n\r\n        return (JSONObject) toJSON(value);\r\n    }\r\n\r\n    public JSONArray getJSONArray(int index) {\r\n        Object value = list.get(index);\r\n\r\n        if (value instanceof JSONArray) {\r\n            return (JSONArray) value;\r\n        }\r\n\r\n        if (value instanceof List) {\r\n            return new JSONArray((List) value);\r\n        }\r\n\r\n        return (JSONArray) toJSON(value);\r\n    }\r\n\r\n    public <T> T getObject(int index, Class<T> clazz) {\r\n        Object obj = list.get(index);\r\n        return TypeUtils.castToJavaBean(obj, clazz);\r\n    }\r\n\r\n    public <T> T getObject(int index, Type type) {\r\n        Object obj = list.get(index);\r\n        if (type instanceof Class) {\r\n            return (T) TypeUtils.castToJavaBean(obj, (Class) type);\r\n        } else {\r\n            String json = JSON.toJSONString(obj);\r\n            return (T) JSON.parseObject(json, type);\r\n        }\r\n    }\r\n\r\n    public Boolean getBoolean(int index) {\r\n        Object value = get(index);\r\n\r\n        if (value == null) {\r\n            return null;\r\n        }\r\n\r\n        return castToBoolean(value);\r\n    }\r\n\r\n    public boolean getBooleanValue(int index) {\r\n        Object value = get(index);\r\n\r\n        if (value == null) {\r\n            return false;\r\n        }\r\n\r\n        return castToBoolean(value).booleanValue();\r\n    }\r\n\r\n    public Byte getByte(int index) {\r\n        Object value = get(index);\r\n\r\n        return castToByte(value);\r\n    }\r\n\r\n    public byte getByteValue(int index) {\r\n        Object value = get(index);\r\n\r\n        Byte byteVal = castToByte(value);\r\n        if (byteVal == null) {\r\n            return 0;\r\n        }\r\n\r\n        return byteVal;\r\n    }\r\n\r\n    public Short getShort(int index) {\r\n        Object value = get(index);\r\n\r\n        return castToShort(value);\r\n    }\r\n\r\n    public short getShortValue(int index) {\r\n        Object value = get(index);\r\n\r\n        Short shortVal = castToShort(value);\r\n        if (shortVal == null) {\r\n            return 0;\r\n        }\r\n\r\n        return shortVal;\r\n    }\r\n\r\n    public Integer getInteger(int index) {\r\n        Object value = get(index);\r\n\r\n        return castToInt(value);\r\n    }\r\n\r\n    public int getIntValue(int index) {\r\n        Object value = get(index);\r\n\r\n        Integer intVal = castToInt(value);\r\n        if (intVal == null) {\r\n            return 0;\r\n        }\r\n\r\n        return intVal;\r\n    }\r\n\r\n    public Long getLong(int index) {\r\n        Object value = get(index);\r\n\r\n        return castToLong(value);\r\n    }\r\n\r\n    public long getLongValue(int index) {\r\n        Object value = get(index);\r\n\r\n        Long longVal = castToLong(value);\r\n        if (longVal == null) {\r\n            return 0L;\r\n        }\r\n\r\n        return longVal;\r\n    }\r\n\r\n    public Float getFloat(int index) {\r\n        Object value = get(index);\r\n\r\n        return castToFloat(value);\r\n    }\r\n\r\n    public float getFloatValue(int index) {\r\n        Object value = get(index);\r\n\r\n        Float floatValue = castToFloat(value);\r\n        if (floatValue == null) {\r\n            return 0F;\r\n        }\r\n\r\n        return floatValue;\r\n    }\r\n\r\n    public Double getDouble(int index) {\r\n        Object value = get(index);\r\n\r\n        return castToDouble(value);\r\n    }\r\n\r\n    public double getDoubleValue(int index) {\r\n        Object value = get(index);\r\n\r\n        Double doubleValue = castToDouble(value);\r\n        if (doubleValue == null) {\r\n            return 0D;\r\n        }\r\n\r\n        return doubleValue;\r\n    }\r\n\r\n    public BigDecimal getBigDecimal(int index) {\r\n        Object value = get(index);\r\n\r\n        return castToBigDecimal(value);\r\n    }\r\n\r\n    public BigInteger getBigInteger(int index) {\r\n        Object value = get(index);\r\n\r\n        return castToBigInteger(value);\r\n    }\r\n\r\n    public String getString(int index) {\r\n        Object value = get(index);\r\n\r\n        return castToString(value);\r\n    }\r\n\r\n    public java.util.Date getDate(int index) {\r\n        Object value = get(index);\r\n\r\n        return castToDate(value);\r\n    }\r\n\r\n    public Object getSqlDate(int index) {\r\n        Object value = get(index);\r\n\r\n        return castToSqlDate(value);\r\n    }\r\n\r\n    public Object getTimestamp(int index) {\r\n        Object value = get(index);\r\n\r\n        return castToTimestamp(value);\r\n    }\r\n\r\n    /**\r\n     * @since  1.2.23\r\n     */\r\n    public <T> List<T> toJavaList(Class<T> clazz) {\r\n        List<T> list = new ArrayList<T>(this.size());\r\n\r\n        ParserConfig config = ParserConfig.getGlobalInstance();\r\n\r\n        for (Object item : this) {\r\n            T classItem = (T) TypeUtils.cast(item, clazz, config);\r\n            list.add(classItem);\r\n        }\r\n\r\n        return list;\r\n    }\r\n\r\n    @Override\r\n    public Object clone() {\r\n        return new JSONArray(new ArrayList<Object>(list));\r\n    }\r\n\r\n    public boolean equals(Object obj) {\r\n        if (this == obj) {\r\n            return true;\r\n        }\r\n\r\n        if (obj instanceof JSONArray) {\r\n            return this.list.equals(((JSONArray) obj).list);\r\n        }\r\n\r\n        return this.list.equals(obj);\r\n    }\r\n\r\n    public int hashCode() {\r\n        return this.list.hashCode();\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/JSONAware.java",
    "content": "/*\r\n * Copyright 1999-2017 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson;\r\n\r\n/**\r\n * Beans that support customized output of JSON text shall implement this interface.\r\n * \r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic interface JSONAware {\r\n\r\n    /**\r\n     * @return JSON text\r\n     */\r\n    String toJSONString();\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/JSONException.java",
    "content": "/*\r\n * Copyright 1999-2019 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\n@SuppressWarnings(\"serial\")\r\npublic class JSONException extends RuntimeException {\r\n\r\n    public JSONException() {\r\n        super();\r\n    }\r\n\r\n    public JSONException(String message) {\r\n        super(message);\r\n    }\r\n\r\n    public JSONException(String message, Throwable cause) {\r\n        super(message, cause);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/JSONObject.java",
    "content": "/*\r\n * Copyright 1999-2017 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson;\r\n\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToBigDecimal;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToBigInteger;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToBoolean;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToByte;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToBytes;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToDate;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToDouble;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToFloat;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToInt;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToLong;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToShort;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToSqlDate;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToTimestamp;\r\n\r\nimport java.io.*;\r\nimport java.lang.reflect.Field;\r\nimport java.lang.reflect.InvocationHandler;\r\nimport java.lang.reflect.Method;\r\nimport java.lang.reflect.Type;\r\nimport java.math.BigDecimal;\r\nimport java.math.BigInteger;\r\nimport java.util.*;\r\n\r\nimport com.alibaba.fastjson.annotation.JSONField;\r\nimport com.alibaba.fastjson.parser.Feature;\r\nimport com.alibaba.fastjson.parser.ParserConfig;\r\nimport com.alibaba.fastjson.util.TypeUtils;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class JSONObject extends JSON implements Map<String, Object>, Cloneable, Serializable, InvocationHandler {\r\n\r\n    private static final long         serialVersionUID         = 1L;\r\n    private static final int          DEFAULT_INITIAL_CAPACITY = 16;\r\n\r\n    private final Map<String, Object> map;\r\n\r\n    public JSONObject(){\r\n        this(DEFAULT_INITIAL_CAPACITY, false);\r\n    }\r\n\r\n    public JSONObject(Map<String, Object> map){\r\n        if (map == null) {\r\n            throw new IllegalArgumentException(\"map is null.\");\r\n        }\r\n        this.map = map;\r\n    }\r\n\r\n    public JSONObject(boolean ordered){\r\n        this(DEFAULT_INITIAL_CAPACITY, ordered);\r\n    }\r\n\r\n    public JSONObject(int initialCapacity){\r\n        this(initialCapacity, false);\r\n    }\r\n\r\n    public JSONObject(int initialCapacity, boolean ordered){\r\n        if (ordered) {\r\n            map = new LinkedHashMap<String, Object>(initialCapacity);\r\n        } else {\r\n            map = new HashMap<String, Object>(initialCapacity);\r\n        }\r\n    }\r\n\r\n    public int size() {\r\n        return map.size();\r\n    }\r\n\r\n    public boolean isEmpty() {\r\n        return map.isEmpty();\r\n    }\r\n\r\n    public boolean containsKey(Object key) {\r\n        boolean result = map.containsKey(key);\r\n        if (!result) {\r\n            if (key instanceof Number\r\n                    || key instanceof Character\r\n                    || key instanceof Boolean\r\n                    || key instanceof UUID\r\n            ) {\r\n                result = map.containsKey(key.toString());\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n\r\n    public boolean containsValue(Object value) {\r\n        return map.containsValue(value);\r\n    }\r\n\r\n    public Object get(Object key) {\r\n        Object val = map.get(key);\r\n\r\n        if (val == null) {\r\n            if (key instanceof Number\r\n                    || key instanceof Character\r\n                    || key instanceof Boolean\r\n                    || key instanceof UUID\r\n            ) {\r\n                val = map.get(key.toString());\r\n            }\r\n        }\r\n\r\n        return val;\r\n    }\r\n\r\n    public Object getOrDefault(Object key, Object defaultValue) {\r\n        Object v;\r\n        return ((v = get(key)) != null) ? v : defaultValue;\r\n    }\r\n\r\n    public JSONObject getJSONObject(String key) {\r\n        Object value = map.get(key);\r\n\r\n        if (value instanceof JSONObject) {\r\n            return (JSONObject) value;\r\n        }\r\n\r\n        if (value instanceof Map) {\r\n            return new JSONObject((Map) value);\r\n        }\r\n\r\n        if (value instanceof String) {\r\n            return JSON.parseObject((String) value);\r\n        }\r\n\r\n        return (JSONObject) toJSON(value);\r\n    }\r\n\r\n    public JSONArray getJSONArray(String key) {\r\n        Object value = map.get(key);\r\n\r\n        if (value instanceof JSONArray) {\r\n            return (JSONArray) value;\r\n        }\r\n\r\n        if (value instanceof List) {\r\n            return new JSONArray((List) value);\r\n        }\r\n\r\n        if (value instanceof String) {\r\n            return (JSONArray) JSON.parse((String) value);\r\n        }\r\n\r\n        return (JSONArray) toJSON(value);\r\n    }\r\n\r\n    public <T> T getObject(String key, Class<T> clazz) {\r\n        Object obj = map.get(key);\r\n        return TypeUtils.castToJavaBean(obj, clazz);\r\n    }\r\n\r\n    public <T> T getObject(String key, Type type) {\r\n        Object obj = map.get(key);\r\n        return TypeUtils.cast(obj, type, ParserConfig.getGlobalInstance());\r\n    }\r\n\r\n    public <T> T getObject(String key, TypeReference typeReference) {\r\n        Object obj = map.get(key);\r\n        if (typeReference == null) {\r\n            return (T) obj;\r\n        }\r\n        return TypeUtils.cast(obj, typeReference.getType(), ParserConfig.getGlobalInstance());\r\n    }\r\n\r\n    public Boolean getBoolean(String key) {\r\n        Object value = get(key);\r\n\r\n        if (value == null) {\r\n            return null;\r\n        }\r\n\r\n        return castToBoolean(value);\r\n    }\r\n\r\n    public byte[] getBytes(String key) {\r\n        Object value = get(key);\r\n\r\n        if (value == null) {\r\n            return null;\r\n        }\r\n\r\n        return castToBytes(value);\r\n    }\r\n\r\n    public boolean getBooleanValue(String key) {\r\n        Object value = get(key);\r\n\r\n        Boolean booleanVal = castToBoolean(value);\r\n        if (booleanVal == null) {\r\n            return false;\r\n        }\r\n\r\n        return booleanVal.booleanValue();\r\n    }\r\n\r\n    public Byte getByte(String key) {\r\n        Object value = get(key);\r\n\r\n        return castToByte(value);\r\n    }\r\n\r\n    public byte getByteValue(String key) {\r\n        Object value = get(key);\r\n\r\n        Byte byteVal = castToByte(value);\r\n        if (byteVal == null) {\r\n            return 0;\r\n        }\r\n\r\n        return byteVal.byteValue();\r\n    }\r\n\r\n    public Short getShort(String key) {\r\n        Object value = get(key);\r\n\r\n        return castToShort(value);\r\n    }\r\n\r\n    public short getShortValue(String key) {\r\n        Object value = get(key);\r\n\r\n        Short shortVal = castToShort(value);\r\n        if (shortVal == null) {\r\n            return 0;\r\n        }\r\n\r\n        return shortVal.shortValue();\r\n    }\r\n\r\n    public Integer getInteger(String key) {\r\n        Object value = get(key);\r\n\r\n        return castToInt(value);\r\n    }\r\n\r\n    public int getIntValue(String key) {\r\n        Object value = get(key);\r\n\r\n        Integer intVal = castToInt(value);\r\n        if (intVal == null) {\r\n            return 0;\r\n        }\r\n\r\n        return intVal.intValue();\r\n    }\r\n\r\n    public Long getLong(String key) {\r\n        Object value = get(key);\r\n\r\n        return castToLong(value);\r\n    }\r\n\r\n    public long getLongValue(String key) {\r\n        Object value = get(key);\r\n\r\n        Long longVal = castToLong(value);\r\n        if (longVal == null) {\r\n            return 0L;\r\n        }\r\n\r\n        return longVal.longValue();\r\n    }\r\n\r\n    public Float getFloat(String key) {\r\n        Object value = get(key);\r\n\r\n        return castToFloat(value);\r\n    }\r\n\r\n    public float getFloatValue(String key) {\r\n        Object value = get(key);\r\n\r\n        Float floatValue = castToFloat(value);\r\n        if (floatValue == null) {\r\n            return 0F;\r\n        }\r\n\r\n        return floatValue.floatValue();\r\n    }\r\n\r\n    public Double getDouble(String key) {\r\n        Object value = get(key);\r\n\r\n        return castToDouble(value);\r\n    }\r\n\r\n    public double getDoubleValue(String key) {\r\n        Object value = get(key);\r\n\r\n        Double doubleValue = castToDouble(value);\r\n        if (doubleValue == null) {\r\n            return 0D;\r\n        }\r\n\r\n        return doubleValue.doubleValue();\r\n    }\r\n\r\n    public BigDecimal getBigDecimal(String key) {\r\n        Object value = get(key);\r\n\r\n        return castToBigDecimal(value);\r\n    }\r\n\r\n    public BigInteger getBigInteger(String key) {\r\n        Object value = get(key);\r\n\r\n        return castToBigInteger(value);\r\n    }\r\n\r\n    public String getString(String key) {\r\n        Object value = get(key);\r\n\r\n        if (value == null) {\r\n            return null;\r\n        }\r\n\r\n        return value.toString();\r\n    }\r\n\r\n    public Date getDate(String key) {\r\n        Object value = get(key);\r\n\r\n        return castToDate(value);\r\n    }\r\n\r\n    public Object getSqlDate(String key) {\r\n        Object value = get(key);\r\n\r\n        return castToSqlDate(value);\r\n    }\r\n\r\n    public Object getTimestamp(String key) {\r\n        Object value = get(key);\r\n\r\n        return castToTimestamp(value);\r\n    }\r\n\r\n    public Object put(String key, Object value) {\r\n        return map.put(key, value);\r\n    }\r\n\r\n    public JSONObject fluentPut(String key, Object value) {\r\n        map.put(key, value);\r\n        return this;\r\n    }\r\n\r\n    public void putAll(Map<? extends String, ?> m) {\r\n        map.putAll(m);\r\n    }\r\n\r\n    public JSONObject fluentPutAll(Map<? extends String, ?> m) {\r\n        map.putAll(m);\r\n        return this;\r\n    }\r\n\r\n    public void clear() {\r\n        map.clear();\r\n    }\r\n\r\n    public JSONObject fluentClear() {\r\n        map.clear();\r\n        return this;\r\n    }\r\n\r\n    public Object remove(Object key) {\r\n        return map.remove(key);\r\n    }\r\n\r\n    public JSONObject fluentRemove(Object key) {\r\n        map.remove(key);\r\n        return this;\r\n    }\r\n\r\n    public Set<String> keySet() {\r\n        return map.keySet();\r\n    }\r\n\r\n    public Collection<Object> values() {\r\n        return map.values();\r\n    }\r\n\r\n    public Set<Map.Entry<String, Object>> entrySet() {\r\n        return map.entrySet();\r\n    }\r\n\r\n    @Override\r\n    public JSONObject clone() {\r\n        return new JSONObject(map instanceof LinkedHashMap //\r\n                ? new LinkedHashMap<String, Object>(map) //\r\n                : new HashMap<String, Object>(map)\r\n        );\r\n    }\r\n\r\n    @Override\r\n    public boolean equals(Object obj) {\r\n        if (this == obj) {\r\n            return true;\r\n        }\r\n\r\n        if (obj instanceof JSONObject) {\r\n            return this.map.equals(((JSONObject) obj).map);\r\n        }\r\n\r\n        return this.map.equals(obj);\r\n    }\r\n\r\n    @Override\r\n    public int hashCode() {\r\n        return this.map.hashCode();\r\n    }\r\n\r\n    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {\r\n        Class<?>[] parameterTypes = method.getParameterTypes();\r\n        if (parameterTypes.length == 1) {\r\n            if (method.getName().equals(\"equals\")) {\r\n                return this.equals(args[0]);\r\n            }\r\n\r\n            Class<?> returnType = method.getReturnType();\r\n            if (returnType != void.class) {\r\n                throw new JSONException(\"illegal setter\");\r\n            }\r\n\r\n            String name = null;\r\n            JSONField annotation = TypeUtils.getAnnotation(method, JSONField.class);\r\n            if (annotation != null) {\r\n                if (annotation.name().length() != 0) {\r\n                    name = annotation.name();\r\n                }\r\n            }\r\n\r\n            if (name == null) {\r\n                name = method.getName();\r\n\r\n                if (!name.startsWith(\"set\")) {\r\n                    throw new JSONException(\"illegal setter\");\r\n                }\r\n\r\n                name = name.substring(3);\r\n                if (name.length() == 0) {\r\n                    throw new JSONException(\"illegal setter\");\r\n                }\r\n                name = Character.toLowerCase(name.charAt(0)) + name.substring(1);\r\n            }\r\n\r\n            map.put(name, args[0]);\r\n            return null;\r\n        }\r\n\r\n        if (parameterTypes.length == 0) {\r\n            Class<?> returnType = method.getReturnType();\r\n            if (returnType == void.class) {\r\n                throw new JSONException(\"illegal getter\");\r\n            }\r\n\r\n            String name = null;\r\n            JSONField annotation = TypeUtils.getAnnotation(method, JSONField.class);\r\n            if (annotation != null) {\r\n                if (annotation.name().length() != 0) {\r\n                    name = annotation.name();\r\n                }\r\n            }\r\n\r\n            if (name == null) {\r\n                name = method.getName();\r\n                if (name.startsWith(\"get\")) {\r\n                    name = name.substring(3);\r\n                    if (name.length() == 0) {\r\n                        throw new JSONException(\"illegal getter\");\r\n                    }\r\n                    name = Character.toLowerCase(name.charAt(0)) + name.substring(1);\r\n                } else if (name.startsWith(\"is\")) {\r\n                    name = name.substring(2);\r\n                    if (name.length() == 0) {\r\n                        throw new JSONException(\"illegal getter\");\r\n                    }\r\n                    name = Character.toLowerCase(name.charAt(0)) + name.substring(1);\r\n                } else if (name.startsWith(\"hashCode\")) {\r\n                    return this.hashCode();\r\n                } else if (name.startsWith(\"toString\")) {\r\n                    return this.toString();\r\n                } else {\r\n                    throw new JSONException(\"illegal getter\");\r\n                }\r\n            }\r\n\r\n            Object value = map.get(name);\r\n            return TypeUtils.cast(value, method.getGenericReturnType(), ParserConfig.getGlobalInstance());\r\n        }\r\n\r\n        throw new UnsupportedOperationException(method.toGenericString());\r\n    }\r\n\r\n    public Map<String, Object> getInnerMap() {\r\n        return this.map;\r\n    }\r\n\r\n    public <T> T toJavaObject(Class<T> clazz) {\r\n        if (clazz == Map.class || clazz == JSONObject.class || clazz == JSON.class) {\r\n            return (T) this;\r\n        }\r\n\r\n        if (clazz == Object.class && !containsKey(JSON.DEFAULT_TYPE_KEY)) {\r\n            return (T) this;\r\n        }\r\n\r\n        return TypeUtils.castToJavaBean(this, clazz, ParserConfig.getGlobalInstance());\r\n    }\r\n\r\n    public <T> T toJavaObject(Class<T> clazz, ParserConfig config, int features) {\r\n        if (clazz == Map.class) {\r\n            return (T) this;\r\n        }\r\n\r\n        if (clazz == Object.class && !containsKey(JSON.DEFAULT_TYPE_KEY)) {\r\n            return (T) this;\r\n        }\r\n\r\n        return TypeUtils.castToJavaBean(this, clazz, config);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/JSONPObject.java",
    "content": "package com.alibaba.fastjson;\n\nimport com.alibaba.fastjson.serializer.JSONSerializable;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class JSONPObject implements JSONSerializable {\n    public static String SECURITY_PREFIX = \"/**/\";\n    private String             function;\n\n    private final List<Object> parameters = new ArrayList<Object>();\n\n    public JSONPObject() {\n\n    }\n\n    public JSONPObject(String function) {\n        this.function = function;\n    }\n\n    public String getFunction() {\n        return function;\n    }\n\n    public void setFunction(String function) {\n        this.function = function;\n    }\n\n    public List<Object> getParameters() {\n        return parameters;\n    }\n\n    public void addParameter(Object parameter) {\n        this.parameters.add(parameter);\n    }\n\n    public String toJSONString() {\n        return toString();\n    }\n\n    public void write(JSONSerializer serializer, Object fieldName, Type fieldType, int features) throws IOException {\n        SerializeWriter writer = serializer.out;\n\n        if ((features & SerializerFeature.BrowserSecure.mask) != 0\n                || (writer.isEnabled(SerializerFeature.BrowserSecure.mask)))\n        {\n            writer.write(SECURITY_PREFIX);\n        }\n\n        writer.write(function);\n        writer.write('(');\n        for (int i = 0; i < parameters.size(); ++i) {\n            if (i != 0) {\n                writer.write(',');\n            }\n            serializer.write(parameters.get(i));\n        }\n        writer.write(')');\n    }\n\n    public String toString() {\n        return JSON.toJSONString(this);\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/JSONPatch.java",
    "content": "package com.alibaba.fastjson;\n\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.JSONScanner;\n\npublic class JSONPatch {\n    public static String apply(String original, String patch) {\n        Object object\n                = apply(\n                        JSON.parse(original, Feature.OrderedField), patch);\n        return JSON.toJSONString(object);\n    }\n\n    public static Object apply(Object object, String patch) {\n        Operation[] operations;\n        if (isObject(patch)) {\n            operations = new Operation[] {\n                    JSON.parseObject(patch, Operation.class)};\n        } else {\n            operations = JSON.parseObject(patch, Operation[].class);\n        }\n\n        for (Operation op : operations) {\n            JSONPath path = JSONPath.compile(op.path);\n            switch (op.type) {\n                case add:\n                    path.patchAdd(object, op.value, false);\n                    break;\n                case replace:\n                    path.patchAdd(object, op.value, true);\n                    break;\n                case remove:\n                    path.remove(object);\n                    break;\n                case copy:\n                case move:\n                    JSONPath from = JSONPath.compile(op.from);\n                    Object fromValue = from.eval(object);\n                    if (op.type == OperationType.move) {\n                        boolean success = from.remove(object);\n                        if (!success) {\n                            throw new JSONException(\"json patch move error : \" + op.from + \" -> \" + op.path);\n                        }\n                    }\n                    path.set(object, fromValue);\n                    break;\n                case test:\n                    Object result = path.eval(object);\n                    if (result == null) {\n                        return op.value == null;\n                    }\n                    return result.equals(op.value);\n                default:\n                    break;\n            }\n        }\n\n        return object;\n    }\n\n    private static boolean isObject(String patch) {\n        if (patch == null) {\n            return false;\n        }\n\n        for (int i = 0; i < patch.length(); ++i) {\n            char ch = patch.charAt(i);\n            if (JSONScanner.isWhitespace(ch)) {\n                continue;\n            }\n            return ch == '{';\n        }\n\n        return false;\n    }\n\n    @JSONType(orders = {\"op\", \"from\", \"path\", \"value\"})\n    public static class Operation {\n        @JSONField(name = \"op\")\n        public OperationType type;\n        public String from;\n        public String path;\n        public Object value;\n    }\n\n    public enum OperationType {\n        add, remove, replace, move, copy, test\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/JSONPath.java",
    "content": "package com.alibaba.fastjson;\n\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.JSONLexer;\nimport com.alibaba.fastjson.parser.JSONLexerBase;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.FieldDeserializer;\nimport com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\nimport com.alibaba.fastjson.serializer.FieldSerializer;\nimport com.alibaba.fastjson.serializer.JavaBeanSerializer;\nimport com.alibaba.fastjson.serializer.ObjectSerializer;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.util.IOUtils;\nimport com.alibaba.fastjson.util.TypeUtils;\n\nimport java.lang.reflect.Array;\nimport java.lang.reflect.InvocationTargetException;\nimport java.lang.reflect.Type;\nimport java.math.BigDecimal;\nimport java.math.BigInteger;\nimport java.math.RoundingMode;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Calendar;\nimport java.util.Collection;\nimport java.util.Collections;\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.IdentityHashMap;\nimport java.util.Iterator;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport java.util.UUID;\nimport java.util.concurrent.ConcurrentHashMap;\nimport java.util.concurrent.ConcurrentMap;\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\n\n/**\n * @author wenshao[szujobs@hotmail.com]\n * @since 1.2.0\n */\npublic class JSONPath implements JSONAware {\n    private static ConcurrentMap<String, JSONPath> pathCache  = new ConcurrentHashMap<String, JSONPath>(128, 0.75f, 1);\n\n    private final String                           path;\n    private Segment[]                              segments;\n    private boolean                                hasRefSegment;\n\n    private SerializeConfig                        serializeConfig;\n    private ParserConfig                           parserConfig;\n\n    private boolean                                ignoreNullValue;\n\n    public JSONPath(String path){\n        this(path, SerializeConfig.getGlobalInstance(), ParserConfig.getGlobalInstance(), true);\n    }\n\n    public JSONPath(String path, boolean ignoreNullValue){\n        this(path, SerializeConfig.getGlobalInstance(), ParserConfig.getGlobalInstance(), ignoreNullValue);\n    }\n\n    public JSONPath(String path, SerializeConfig serializeConfig, ParserConfig parserConfig, boolean ignoreNullValue){\n        if (path == null || path.length() == 0) {\n            throw new JSONPathException(\"json-path can not be null or empty\");\n        }\n\n        this.path = path;\n        this.serializeConfig = serializeConfig;\n        this.parserConfig = parserConfig;\n        this.ignoreNullValue = ignoreNullValue;\n    }\n\n    protected void init() {\n        if (segments != null) {\n            return;\n        }\n\n        if (\"*\".equals(path)) {\n            this.segments = new Segment[] { WildCardSegment.instance };\n        } else {\n            JSONPathParser parser = new JSONPathParser(path);\n            this.segments = parser.explain();\n            this.hasRefSegment = parser.hasRefSegment;\n        }\n    }\n\n    public boolean isRef() {\n        try {\n            init();\n            for (int i = 0; i < segments.length; ++i) {\n                Segment segment = segments[i];\n                Class segmentType = segment.getClass();\n                if (segmentType == ArrayAccessSegment.class\n                        || segmentType == PropertySegment.class) {\n                    continue;\n                }\n                return false;\n            }\n            return true;\n        } catch (JSONPathException ex) {\n            // skip\n            return false;\n        }\n    }\n\n    public Object eval(Object rootObject) {\n        if (rootObject == null) {\n            return null;\n        }\n\n        init();\n\n        Object currentObject = rootObject;\n        for (int i = 0; i < segments.length; ++i) {\n            Segment segment = segments[i];\n            currentObject = segment.eval(this, rootObject, currentObject);\n        }\n        return currentObject;\n    }\n    \n    /**\n     * @since 1.2.76\n     * @param rootObject\n     * @param clazz\n     * @param parserConfig\n     * @return\n     */\n    public <T> T eval(Object rootObject, Type clazz, ParserConfig parserConfig) {\n        Object obj = this.eval(rootObject);\n        return TypeUtils.cast(obj, clazz, parserConfig);\n    }\n    \n    /**\n     * @since 1.2.76\n     * @param rootObject\n     * @param clazz\n     * @return\n     */\n    public <T> T eval(Object rootObject, Type clazz) {\n        return this.eval(rootObject, clazz, ParserConfig.getGlobalInstance());\n    }\n\n    public Object extract(DefaultJSONParser parser) {\n        if (parser == null) {\n            return null;\n        }\n\n        init();\n\n        if (hasRefSegment) {\n            Object root = parser.parse();\n            return this.eval(root);\n        }\n\n        if (segments.length == 0) {\n            return parser.parse();\n        }\n\n        Segment lastSegment = segments[segments.length - 1];\n        if (lastSegment instanceof TypeSegment\n                || lastSegment instanceof FloorSegment\n                || lastSegment instanceof MultiIndexSegment) {\n            return eval(\n                    parser.parse());\n        }\n\n        Context context = null;\n        for (int i = 0; i < segments.length; ++i) {\n            Segment segment = segments[i];\n            boolean last = i == segments.length - 1;\n\n            if (context != null && context.object != null) {\n                context.object = segment.eval(this, null, context.object);\n                continue;\n            }\n\n            boolean eval;\n\n            if (!last) {\n                Segment nextSegment = segments[i + 1];\n                if (segment instanceof PropertySegment\n                        && ((PropertySegment) segment).deep\n                        && (nextSegment instanceof ArrayAccessSegment\n                            || nextSegment instanceof MultiIndexSegment\n                            || nextSegment instanceof MultiPropertySegment\n                            || nextSegment instanceof SizeSegment\n                            || nextSegment instanceof PropertySegment\n                            || nextSegment instanceof FilterSegment))\n                {\n                    eval = true;\n                } else if (nextSegment instanceof ArrayAccessSegment\n                        && ((ArrayAccessSegment) nextSegment).index < 0) {\n                    eval = true;\n                } else if (nextSegment instanceof FilterSegment) {\n                    eval = true;\n                } else if (segment instanceof WildCardSegment) {\n                    eval = true;\n                }else if(segment instanceof MultiIndexSegment){\n                    eval = true;\n                } else {\n                    eval = false;\n                }\n            } else {\n                eval = true;\n            }\n\n            context = new Context(context, eval);\n            segment.extract(this, parser, context);\n        }\n\n        return context.object;\n    }\n\n    private static class Context {\n        final Context parent;\n        final boolean eval;\n        Object object;\n\n        public Context(Context parent, boolean eval) {\n            this.parent = parent;\n            this.eval = eval;\n        }\n    }\n\n    public boolean contains(Object rootObject) {\n        if (rootObject == null) {\n            return false;\n        }\n\n        init();\n\n        Object currentObject = rootObject;\n        for (int i = 0; i < segments.length; ++i) {\n            Object parentObject = currentObject;\n            currentObject = segments[i].eval(this, rootObject, currentObject);\n            if (currentObject == null) {\n                return false;\n            }\n\n            if (currentObject == Collections.EMPTY_LIST && parentObject instanceof List) {\n                return ((List) parentObject).contains(currentObject);\n            }\n        }\n\n        return true;\n    }\n\n    @SuppressWarnings(\"rawtypes\")\n    public boolean containsValue(Object rootObject, Object value) {\n        Object currentObject = eval(rootObject);\n\n        if (currentObject == value) {\n            return true;\n        }\n\n        if (currentObject == null) {\n            return false;\n        }\n\n        if (currentObject instanceof Iterable) {\n            Iterator it = ((Iterable) currentObject).iterator();\n            while (it.hasNext()) {\n                Object item = it.next();\n                if (eq(item, value)) {\n                    return true;\n                }\n            }\n\n            return false;\n        }\n\n        return eq(currentObject, value);\n    }\n\n    public int size(Object rootObject) {\n        if (rootObject == null) {\n            return -1;\n        }\n\n        init();\n\n        Object currentObject = rootObject;\n        for (int i = 0; i < segments.length; ++i) {\n            currentObject = segments[i].eval(this, rootObject, currentObject);\n        }\n\n        return evalSize(currentObject);\n    }\n\n    /**\n     * Extract keySet or field names from rootObject on this JSONPath.\n     * \n     * @param rootObject Can be a map or custom object. Array and Collection are not supported.\n     * @return Set of keys, or <code>null</code> if not supported.\n     */\n    public Set<?> keySet(Object rootObject) {\n        if (rootObject == null) {\n            return null;\n        }\n\n        init();\n\n        Object currentObject = rootObject;\n        for (int i = 0; i < segments.length; ++i) {\n            currentObject = segments[i].eval(this, rootObject, currentObject);\n        }\n\n        return evalKeySet(currentObject);\n    }\n\n    public void patchAdd(Object rootObject, Object value, boolean replace) {\n        if (rootObject == null) {\n            return;\n        }\n\n        init();\n\n        Object currentObject = rootObject;\n        Object parentObject = null;\n        for (int i = 0; i < segments.length; ++i) {\n            parentObject = currentObject;\n            Segment segment = segments[i];\n            currentObject = segment.eval(this, rootObject, currentObject);\n            if (currentObject == null && i != segments.length - 1) {\n                if (segment instanceof PropertySegment) {\n                    currentObject = new JSONObject();\n                    ((PropertySegment) segment).setValue(this, parentObject, currentObject);\n                }\n            }\n        }\n\n        Object result = currentObject;\n\n        if ((!replace) && result instanceof Collection) {\n            Collection collection = (Collection) result;\n            collection.add(value);\n            return;\n        }\n\n        Object newResult;\n\n        if (result != null && !replace) {\n            Class<?> resultClass = result.getClass();\n\n            if (resultClass.isArray()) {\n                int length = Array.getLength(result);\n                Object descArray = Array.newInstance(resultClass.getComponentType(), length + 1);\n\n                System.arraycopy(result, 0, descArray, 0, length);\n                Array.set(descArray, length, value);\n                newResult = descArray;\n            }\n            else if (Map.class.isAssignableFrom(resultClass)) {\n                newResult = value;\n            } else {\n                throw new JSONException(\"unsupported array put operation. \" + resultClass);\n            }\n        } else {\n            newResult = value;\n        }\n\n        Segment lastSegment = segments[segments.length - 1];\n        if (lastSegment instanceof PropertySegment) {\n            PropertySegment propertySegment = (PropertySegment) lastSegment;\n            propertySegment.setValue(this, parentObject, newResult);\n            return;\n        }\n\n        if (lastSegment instanceof ArrayAccessSegment) {\n            ((ArrayAccessSegment) lastSegment).setValue(this, parentObject, newResult);\n            return;\n        }\n\n        throw new UnsupportedOperationException();\n    }\n\n    @SuppressWarnings({ \"rawtypes\", \"unchecked\" })\n    public void arrayAdd(Object rootObject, Object... values) {\n        if (values == null || values.length == 0) {\n            return;\n        }\n\n        if (rootObject == null) {\n            return;\n        }\n\n        init();\n\n        Object currentObject = rootObject;\n        Object parentObject = null;\n        for (int i = 0; i < segments.length; ++i) {\n            if (i == segments.length - 1) {\n                parentObject = currentObject;\n            }\n            currentObject = segments[i].eval(this, rootObject, currentObject);\n        }\n\n        Object result = currentObject;\n\n        if (result == null) {\n            throw new JSONPathException(\"value not found in path \" + path);\n        }\n\n        if (result instanceof Collection) {\n            Collection collection = (Collection) result;\n            for (Object value : values) {\n                collection.add(value);\n            }\n            return;\n        }\n\n        Class<?> resultClass = result.getClass();\n\n        Object newResult;\n        if (resultClass.isArray()) {\n            int length = Array.getLength(result);\n            Object descArray = Array.newInstance(resultClass.getComponentType(), length + values.length);\n\n            System.arraycopy(result, 0, descArray, 0, length);\n            for (int i = 0; i < values.length; ++i) {\n                Array.set(descArray, length + i, values[i]);\n\n            }\n            newResult = descArray;\n        } else {\n            throw new JSONException(\"unsupported array put operation. \" + resultClass);\n        }\n\n        Segment lastSegment = segments[segments.length - 1];\n        if (lastSegment instanceof PropertySegment) {\n            PropertySegment propertySegment = (PropertySegment) lastSegment;\n            propertySegment.setValue(this, parentObject, newResult);\n            return;\n        }\n\n        if (lastSegment instanceof ArrayAccessSegment) {\n            ((ArrayAccessSegment) lastSegment).setValue(this, parentObject, newResult);\n            return;\n        }\n\n        throw new UnsupportedOperationException();\n    }\n    \n    public boolean remove(Object rootObject) {\n        if (rootObject == null) {\n            return false;\n        }\n\n        init();\n\n        Object currentObject = rootObject;\n        Object parentObject = null;\n\n        Segment lastSegment = segments[segments.length - 1];\n        for (int i = 0; i < segments.length; ++i) {\n            if (i == segments.length - 1) {\n                parentObject = currentObject;\n                break;\n            }\n            Segment segement = segments[i];\n            if (i == segments.length - 2\n                    && lastSegment instanceof FilterSegment\n                    && segement instanceof PropertySegment\n            ) {\n                FilterSegment filterSegment = (FilterSegment) lastSegment;\n\n                if (currentObject instanceof List) {\n                    PropertySegment propertySegment = (PropertySegment) segement;\n                    List list = (List) currentObject;\n\n                    for (Iterator it = list.iterator();it.hasNext();) {\n                        Object item = it.next();\n                        Object result = propertySegment.eval(this, rootObject, item);\n                        if (result instanceof Iterable) {\n                            filterSegment.remove(this, rootObject, result);\n                        } else if (result instanceof Map) {\n                            if (filterSegment.filter.apply(this, rootObject, currentObject, result)) {\n                                it.remove();\n                            }\n                        }\n                    }\n                    return true;\n                } else if (currentObject instanceof Map) {\n                    PropertySegment propertySegment = (PropertySegment) segement;\n                    Object result = propertySegment.eval(this, rootObject, currentObject);\n                    if (result == null) {\n                        return false;\n                    }\n                    if (result instanceof Map\n                            && filterSegment.filter.apply(this, rootObject, currentObject, result)) {\n                        propertySegment.remove(this, currentObject);\n                        return true;\n                    }\n                }\n            }\n\n            currentObject = segement.eval(this, rootObject, currentObject);\n            if (currentObject == null) {\n                break;\n            }\n        }\n\n        if (parentObject == null) {\n            return false;\n        }\n\n\n        if (lastSegment instanceof PropertySegment) {\n            PropertySegment propertySegment = (PropertySegment) lastSegment;\n\n            if (parentObject instanceof Collection) {\n                if (segments.length > 1) {\n                    Segment parentSegment = segments[segments.length - 2];\n                    if (parentSegment instanceof RangeSegment || parentSegment instanceof MultiIndexSegment) {\n                        Collection collection = (Collection) parentObject;\n                        boolean removedOnce = false;\n                        for (Object item : collection) {\n                            boolean removed = propertySegment.remove(this, item);\n                            if (removed) {\n                                removedOnce = true;\n                            }\n                        }\n                        return removedOnce;\n                    }\n                }\n            }\n            return propertySegment.remove(this, parentObject);\n        }\n\n        if (lastSegment instanceof ArrayAccessSegment) {\n            return ((ArrayAccessSegment) lastSegment).remove(this, parentObject);\n        }\n\n        if (lastSegment instanceof FilterSegment) {\n            FilterSegment filterSegment = (FilterSegment) lastSegment;\n            return filterSegment.remove(this, rootObject, parentObject);\n        }\n\n        throw new UnsupportedOperationException();\n    }\n\n    public boolean set(Object rootObject, Object value) {\n        return set(rootObject, value, true);\n    }\n\n    public boolean set(Object rootObject, Object value, boolean p) {\n        if (rootObject == null) {\n            return false;\n        }\n\n        init();\n\n        Object currentObject = rootObject;\n        Object parentObject = null;\n        for (int i = 0; i < segments.length; ++i) {\n//            if (i == segments.length - 1) {\n//                parentObject = currentObject;\n//                break;\n//            }\n//            \n            parentObject = currentObject;\n            Segment segment = segments[i];\n            currentObject = segment.eval(this, rootObject, currentObject);\n            if (currentObject == null) {\n                Segment nextSegment = null;\n                if (i < segments.length - 1) {\n                    nextSegment = segments[i + 1];\n                }\n\n                Object newObj = null;\n                if (nextSegment instanceof PropertySegment) {\n                    JavaBeanDeserializer beanDeserializer = null;\n                    Class<?> fieldClass = null;\n                    if (segment instanceof PropertySegment) {\n                        String propertyName = ((PropertySegment) segment).propertyName;\n                        Class<?> parentClass = parentObject.getClass();\n                        JavaBeanDeserializer parentBeanDeserializer = getJavaBeanDeserializer(parentClass);\n                        if (parentBeanDeserializer != null) {\n                            FieldDeserializer fieldDeserializer = parentBeanDeserializer.getFieldDeserializer(propertyName);\n                            fieldClass = fieldDeserializer.fieldInfo.fieldClass;\n                            beanDeserializer = getJavaBeanDeserializer(fieldClass);\n                        }\n                    }\n\n                    if (beanDeserializer != null) {\n\n                        if (beanDeserializer.beanInfo.defaultConstructor != null) {\n                            newObj = beanDeserializer.createInstance(null, fieldClass);\n                        } else {\n                            return false;\n                        }\n                    } else {\n                        newObj = new JSONObject();\n                    }\n                } else if (nextSegment instanceof ArrayAccessSegment) {\n                    newObj = new JSONArray();\n                }\n                \n                if (newObj != null) {\n                    if (segment instanceof PropertySegment) {\n                        PropertySegment propSegement = (PropertySegment) segment;\n                        propSegement.setValue(this, parentObject, newObj);\n                        currentObject = newObj;\n                        continue;\n                    } else if (segment instanceof ArrayAccessSegment) {\n                        ArrayAccessSegment arrayAccessSegement = (ArrayAccessSegment) segment;\n                        arrayAccessSegement.setValue(this, parentObject, newObj);\n                        currentObject = newObj;\n                        continue;\n                    }\n                }\n                \n                break;\n            }\n        }\n\n        if (parentObject == null) {\n            return false;\n        }\n\n        Segment lastSegment = segments[segments.length - 1];\n        if (lastSegment instanceof PropertySegment) {\n            PropertySegment propertySegment = (PropertySegment) lastSegment;\n            propertySegment.setValue(this, parentObject, value);\n            return true;\n        }\n\n        if (lastSegment instanceof ArrayAccessSegment) {\n            return ((ArrayAccessSegment) lastSegment).setValue(this, parentObject, value);\n        }\n\n        throw new UnsupportedOperationException();\n    }\n\n    public static Object eval(Object rootObject, String path) {\n        JSONPath jsonpath = compile(path);\n        return jsonpath.eval(rootObject);\n    }\n\n    public static Object eval(Object rootObject, String path, boolean ignoreNullValue) {\n        JSONPath jsonpath = compile(path, ignoreNullValue);\n        return jsonpath.eval(rootObject);\n    }\n\n    public static int size(Object rootObject, String path) {\n        JSONPath jsonpath = compile(path);\n        Object result = jsonpath.eval(rootObject);\n        return jsonpath.evalSize(result);\n    }\n\n    /**\n     * Compile jsonPath and use it to extract keySet or field names from rootObject.\n     * \n     * @param rootObject Can be a map or custom object. Array and Collection are not supported.\n     * @param path JSONPath string to be compiled.\n     * @return Set of keys, or <code>null</code> if not supported.\n     */\n    public static Set<?> keySet(Object rootObject, String path) {\n        JSONPath jsonpath = compile(path);\n        Object result = jsonpath.eval(rootObject);\n        return jsonpath.evalKeySet(result);\n    }\n\n    public static boolean contains(Object rootObject, String path) {\n        if (rootObject == null) {\n            return false;\n        }\n\n        JSONPath jsonpath = compile(path);\n        return jsonpath.contains(rootObject);\n    }\n\n    public static boolean containsValue(Object rootObject, String path, Object value) {\n        JSONPath jsonpath = compile(path);\n        return jsonpath.containsValue(rootObject, value);\n    }\n\n    public static void arrayAdd(Object rootObject, String path, Object... values) {\n        JSONPath jsonpath = compile(path);\n        jsonpath.arrayAdd(rootObject, values);\n    }\n\n    public static boolean set(Object rootObject, String path, Object value) {\n        JSONPath jsonpath = compile(path);\n        return jsonpath.set(rootObject, value);\n    }\n    \n    public static boolean remove(Object root, String path) {\n        JSONPath jsonpath = compile(path);\n        return jsonpath.remove(root);\n    }\n\n    public static JSONPath compile(String path) {\n        if (path == null) {\n            throw new JSONPathException(\"jsonpath can not be null\");\n        }\n        \n        JSONPath jsonpath = pathCache.get(path);\n        if (jsonpath == null) {\n            jsonpath = new JSONPath(path);\n            if (pathCache.size() < 1024) {\n                pathCache.putIfAbsent(path, jsonpath);\n                jsonpath = pathCache.get(path);\n            }\n        }\n        return jsonpath;\n    }\n\n    public static JSONPath compile(String path, boolean ignoreNullValue) {\n        if (path == null) {\n            throw new JSONPathException(\"jsonpath can not be null\");\n        }\n\n        JSONPath jsonpath = pathCache.get(path);\n        if (jsonpath == null) {\n            jsonpath = new JSONPath(path, ignoreNullValue);\n            if (pathCache.size() < 1024) {\n                pathCache.putIfAbsent(path, jsonpath);\n                jsonpath = pathCache.get(path);\n            }\n        }\n        return jsonpath;\n    }\n\n    /**\n     * @since 1.2.9\n     * @param json\n     * @param path\n     * @return\n     */\n    public static Object read(String json, String path) {\n        return compile(path)\n                .eval(\n                        JSON.parse(json)\n                );\n    }\n    \n    /**\n     * @since 1.2.76\n     * @param json\n     * @param path\n     * @param clazz\n     * @param parserConfig\n     * @return\n     */\n    public static <T> T read(String json, String path, Type clazz, ParserConfig parserConfig) {\n        return compile(path).eval(JSON.parse(json), clazz, parserConfig);\n    }\n    \n    /**\n     * @since 1.2.76\n     * @param json\n     * @param path\n     * @param clazz\n     * @return\n     */\n    public static <T> T read(String json, String path, Type clazz) {\n        return read(json, path, clazz, null);\n    }\n\n    /**\n     * @since 1.2.51\n     * @param json\n     * @param path\n     * @return\n     */\n    public static Object extract(String json, String path, ParserConfig config, int features, Feature... optionFeatures) {\n        features |= Feature.OrderedField.mask;\n        DefaultJSONParser parser = new DefaultJSONParser(json, config, features);\n        JSONPath jsonPath = compile(path);\n        Object result = jsonPath.extract(parser);\n        parser.lexer.close();\n        return result;\n    }\n\n    public static Object extract(String json, String path) {\n        return extract(json, path, ParserConfig.global, JSON.DEFAULT_PARSER_FEATURE);\n    }\n\n    public static Map<String, Object> paths(Object javaObject) {\n        return paths(javaObject, SerializeConfig.globalInstance);\n    }\n    \n    public static Map<String, Object> paths(Object javaObject, SerializeConfig config) {\n        Map<Object, String> values = new IdentityHashMap<Object, String>();\n        Map<String, Object> paths = new HashMap<String, Object>();\n\n        paths(values, paths, \"/\", javaObject, config);\n        return paths;\n    }\n\n    private static void paths(Map<Object, String> values, Map<String, Object> paths, String parent, Object javaObject, SerializeConfig config) {\n        if (javaObject == null) {\n            return;\n        }\n\n        String p = values.put(javaObject, parent);\n        if (p != null) {\n            Class<?> type = javaObject.getClass();\n            boolean basicType =  type == String.class\n                    || type == Boolean.class\n                    || type == Character.class\n                    || type == UUID.class\n                    || type.isEnum()\n                    || javaObject instanceof Number\n                    || javaObject instanceof Date\n                    ;\n\n            if (!basicType) {\n                return;\n            }\n        }\n\n        paths.put(parent, javaObject);\n\n        if (javaObject instanceof Map) {\n            Map map = (Map) javaObject;\n\n            for (Object entryObj : map.entrySet()) {\n                Map.Entry entry = (Map.Entry) entryObj;\n                Object key = entry.getKey();\n\n                if (key instanceof String) {\n                    String path = parent.equals(\"/\") ?  \"/\" + key : parent + \"/\" + key;\n                    paths(values, paths, path, entry.getValue(), config);\n                }\n            }\n            return;\n        }\n\n        if (javaObject instanceof Collection) {\n            Collection collection = (Collection) javaObject;\n\n            int i = 0;\n            for (Object item : collection) {\n                String path = parent.equals(\"/\") ?  \"/\" + i : parent + \"/\" + i;\n                paths(values, paths, path, item, config);\n                ++i;\n            }\n\n            return;\n        }\n\n        Class<?> clazz = javaObject.getClass();\n\n        if (clazz.isArray()) {\n            int len = Array.getLength(javaObject);\n\n            for (int i = 0; i < len; ++i) {\n                Object item = Array.get(javaObject, i);\n\n                String path = parent.equals(\"/\") ?  \"/\" + i : parent + \"/\" + i;\n                paths(values, paths, path, item, config);\n            }\n\n            return;\n        }\n\n        if (ParserConfig.isPrimitive2(clazz) || clazz.isEnum()) {\n            return;\n        }\n\n        ObjectSerializer serializer = config.getObjectWriter(clazz);\n        if (serializer instanceof JavaBeanSerializer) {\n            JavaBeanSerializer javaBeanSerializer = (JavaBeanSerializer) serializer;\n\n            try {\n                Map<String, Object> fieldValues = javaBeanSerializer.getFieldValuesMap(javaObject);\n                for (Map.Entry<String, Object> entry : fieldValues.entrySet()) {\n                    String key = entry.getKey();\n\n                    if (key instanceof String) {\n                        String path = parent.equals(\"/\") ?  \"/\" + key : parent + \"/\" + key;\n                        paths(values, paths, path, entry.getValue(), config);\n                    }\n                }\n            } catch (Exception e) {\n                throw new JSONException(\"toJSON error\", e);\n            }\n            return;\n        }\n\n        return;\n    }\n\n    public String getPath() {\n        return path;\n    }\n\n    static class JSONPathParser {\n\n        private final String path;\n        private int          pos;\n        private char         ch;\n        private int          level;\n        private boolean      hasRefSegment;\n        private static final String strArrayRegex = \"\\'\\\\s*,\\\\s*\\'\";\n        private static final Pattern strArrayPatternx = Pattern.compile(strArrayRegex);\n\n        public JSONPathParser(String path){\n            this.path = path;\n            next();\n        }\n\n        void next() {\n            ch = path.charAt(pos++);\n        }\n\n        char getNextChar() {\n            return path.charAt(pos);\n        }\n\n        boolean isEOF() {\n            return pos >= path.length();\n        }\n\n        Segment readSegement() {\n            if (level == 0 && path.length() == 1) {\n                if (isDigitFirst(ch)) {\n                    int index = ch - '0';\n                    return new ArrayAccessSegment(index);\n                } else if ((ch >= 'a' && ch <= 'z') || ((ch >= 'A' && ch <= 'Z'))) {\n                    return new PropertySegment(Character.toString(ch), false);\n                }\n            }\n            while (!isEOF()) {\n                skipWhitespace();\n\n                if (ch == '$') {\n                    next();\n                    skipWhitespace();\n                    if (ch == '?') {\n                        return new FilterSegment(\n                                (Filter) parseArrayAccessFilter(false));\n                    }\n                    continue;\n                }\n\n                if (ch == '.' || ch == '/') {\n                    int c0 = ch;\n                    boolean deep = false;\n                    next();\n                    if (c0 == '.' && ch == '.') {\n                        next();\n                        deep = true;\n                        if (path.length() > pos + 3\n                                && ch == '['\n                                && path.charAt(pos) == '*'\n                                && path.charAt(pos + 1) == ']'\n                                && path.charAt(pos + 2) == '.') {\n                            next();\n                            next();\n                            next();\n                            next();\n                        }\n                    }\n                    if (ch == '*' || (deep && ch == '[')) {\n                        boolean objectOnly = ch == '[';\n                        if (!isEOF()) {\n                            next();\n                        }\n\n                        if (deep) {\n                            if (objectOnly) {\n                                return WildCardSegment.instance_deep_objectOnly;\n                            } else {\n                                return WildCardSegment.instance_deep;\n                            }\n                        } else {\n                            return WildCardSegment.instance;\n                        }\n                    }\n                    \n                    if (isDigitFirst(ch)) {\n                        return parseArrayAccess(false);\n                    }\n\n                    String propertyName = readName();\n                    if (ch == '(') {\n                        next();\n                        if (ch == ')') {\n                            if (!isEOF()) {\n                                next();\n                            }\n\n                            if (\"size\".equals(propertyName) || \"length\".equals(propertyName)) {\n                                return SizeSegment.instance;\n                            } else if (\"max\".equals(propertyName)) {\n                                return MaxSegment.instance;\n                            } else if (\"min\".equals(propertyName)) {\n                                return MinSegment.instance;\n                            } else if (\"keySet\".equals(propertyName)) {\n                                return KeySetSegment.instance;\n                            } else if (\"type\".equals(propertyName)) {\n                                return TypeSegment.instance;\n                            } else if (\"floor\".equals(propertyName)) {\n                                return FloorSegment.instance;\n                            }\n\n                            throw new JSONPathException(\"not support jsonpath : \" + path);\n                        }\n\n                        throw new JSONPathException(\"not support jsonpath : \" + path);\n                    }\n\n                    return new PropertySegment(propertyName, deep);\n                }\n\n                if (ch == '[') {\n                    return parseArrayAccess(true);\n                }\n\n                if (level == 0) {\n                    String propertyName = readName();\n\n                    return new PropertySegment(propertyName, false);\n                }\n\n                if (ch == '?') {\n                    return new FilterSegment(\n                            (Filter) parseArrayAccessFilter(false));\n                }\n\n                throw new JSONPathException(\"not support jsonpath : \" + path);\n            }\n\n            return null;\n        }\n\n        public final void skipWhitespace() {\n            for (;;) {\n                if (ch <= ' ' && (ch == ' ' || ch == '\\r' || ch == '\\n' || ch == '\\t' || ch == '\\f' || ch == '\\b')) {\n                    next();\n                    continue;\n                } else {\n                    break;\n                }\n            }\n        }\n\n        Segment parseArrayAccess(boolean acceptBracket) {\n            Object object = parseArrayAccessFilter(acceptBracket);\n            if (object instanceof Segment) {\n                return ((Segment) object);\n            }\n            return new FilterSegment((Filter) object);\n        }\n\n        Object parseArrayAccessFilter(boolean acceptBracket) {\n            if (acceptBracket) {\n                accept('[');\n            }\n\n            boolean predicateFlag = false;\n            int lparanCount = 0;\n\n            if (ch == '?') {\n                next();\n                accept('(');\n                lparanCount++;\n                while (ch == '(') {\n                    next();\n                    lparanCount++;\n                }\n                predicateFlag = true;\n            }\n\n            skipWhitespace();\n\n            if (predicateFlag\n                    || IOUtils.firstIdentifier(ch)\n                    || Character.isJavaIdentifierStart(ch)\n                    || ch == '\\\\'\n                    || ch == '@') {\n                boolean self = false;\n                if (ch == '@') {\n                    next();\n                    accept('.');\n                    self = true;\n                }\n                String propertyName = readName();\n\n                skipWhitespace();\n\n                if (predicateFlag && ch == ')') {\n                    next();\n\n                    Filter filter = new NotNullSegement(propertyName, false);\n                    while (ch == ' ') {\n                        next();\n                    }\n\n                    if (ch == '&' || ch == '|') {\n                        filter = filterRest(filter);\n                    }\n\n                    if (acceptBracket) {\n                        accept(']');\n                    }\n                    return filter;\n                }\n\n                if (acceptBracket && ch == ']') {\n                    if (isEOF()) {\n                        if (propertyName.equals(\"last\")) {\n                            return new MultiIndexSegment(new int[]{-1});\n                        }\n                    }\n\n                    next();\n                    Filter filter = new NotNullSegement(propertyName, false);\n                    while (ch == ' ') {\n                        next();\n                    }\n\n                    if (ch == '&' || ch == '|') {\n                        filter = filterRest(filter);\n                    }\n\n                    accept(')');\n                    if (predicateFlag) {\n                        accept(')');\n                    }\n\n                    if (acceptBracket) {\n                        accept(']');\n                    }\n                    return filter;\n                }\n\n                boolean function = false;\n                skipWhitespace();\n                if (ch == '(') {\n                    next();\n                    accept(')');\n                    skipWhitespace();\n                    function = true;\n                }\n\n                Operator op = readOp();\n\n                skipWhitespace();\n\n                if (op == Operator.BETWEEN || op == Operator.NOT_BETWEEN) {\n                    final boolean not = (op == Operator.NOT_BETWEEN);\n\n                    Object startValue = readValue();\n\n                    String name = readName();\n\n                    if (!\"and\".equalsIgnoreCase(name)) {\n                        throw new JSONPathException(path);\n                    }\n\n                    Object endValue = readValue();\n\n                    if (startValue == null || endValue == null) {\n                        throw new JSONPathException(path);\n                    }\n\n                    if (isInt(startValue.getClass()) && isInt(endValue.getClass())) {\n                        Filter filter = new IntBetweenSegement(propertyName\n                                , function\n                                , TypeUtils.longExtractValue((Number) startValue)\n                                , TypeUtils.longExtractValue((Number) endValue)\n                                , not);\n                        return filter;\n                    }\n\n                    throw new JSONPathException(path);\n                }\n\n                if (op == Operator.IN || op == Operator.NOT_IN) {\n                    final boolean not = (op == Operator.NOT_IN);\n                    accept('(');\n\n                    List<Object> valueList = new JSONArray();\n                    {\n                        Object value = readValue();\n                        valueList.add(value);\n\n                        for (;;) {\n                            skipWhitespace();\n                            if (ch != ',') {\n                                break;\n                            }\n                            next();\n\n                            value = readValue();\n                            valueList.add(value);\n                        }\n                    }\n\n                    boolean isInt = true;\n                    boolean isIntObj = true;\n                    boolean isString = true;\n                    for (Object item : valueList) {\n                        if (item == null) {\n                            if (isInt) {\n                                isInt = false;\n                            }\n                            continue;\n                        }\n\n                        Class<?> clazz = item.getClass();\n                        if (isInt && !(clazz == Byte.class || clazz == Short.class || clazz == Integer.class\n                                       || clazz == Long.class)) {\n                            isInt = false;\n                            isIntObj = false;\n                        }\n\n                        if (isString && clazz != String.class) {\n                            isString = false;\n                        }\n                    }\n\n                    if (valueList.size() == 1 && valueList.get(0) == null) {\n                        Filter filter;\n                        if (not) {\n                            filter = new NotNullSegement(propertyName, function);\n                        } else {\n                            filter = new NullSegement(propertyName, function);\n                        }\n\n                        while (ch == ' ') {\n                            next();\n                        }\n\n                        if (ch == '&' || ch == '|') {\n                            filter = filterRest(filter);\n                        }\n\n                        accept(')');\n                        if (predicateFlag) {\n                            accept(')');\n                        }\n\n                        if (acceptBracket) {\n                            accept(']');\n                        }\n\n                        return filter;\n                    }\n\n                    if (isInt) {\n                        if (valueList.size() == 1) {\n                            long value = TypeUtils.longExtractValue((Number) valueList.get(0));\n                            Operator intOp = not ? Operator.NE : Operator.EQ;\n                            Filter filter = new IntOpSegement(propertyName, function, value, intOp);\n                            while (ch == ' ') {\n                                next();\n                            }\n\n                            if (ch == '&' || ch == '|') {\n                                filter = filterRest(filter);\n                            }\n\n                            accept(')');\n                            if (predicateFlag) {\n                                accept(')');\n                            }\n\n                            if (acceptBracket) {\n                                accept(']');\n                            }\n\n                            return filter;\n                        }\n\n                        long[] values = new long[valueList.size()];\n                        for (int i = 0; i < values.length; ++i) {\n                            values[i] = TypeUtils.longExtractValue((Number) valueList.get(i));\n                        }\n\n                        Filter filter = new IntInSegement(propertyName, function, values, not);\n\n                        while (ch == ' ') {\n                            next();\n                        }\n\n                        if (ch == '&' || ch == '|') {\n                            filter = filterRest(filter);\n                        }\n\n                        accept(')');\n                        if (predicateFlag) {\n                            accept(')');\n                        }\n\n                        if (acceptBracket) {\n                            accept(']');\n                        }\n\n                        return filter;\n                    }\n\n                    if (isString) {\n                        if (valueList.size() == 1) {\n                            String value = (String) valueList.get(0);\n\n                            Operator intOp = not ? Operator.NE : Operator.EQ;\n                            Filter filter = new StringOpSegement(propertyName, function, value, intOp);\n\n                            while (ch == ' ') {\n                                next();\n                            }\n\n                            if (ch == '&' || ch == '|') {\n                                filter = filterRest(filter);\n                            }\n\n                            accept(')');\n                            if (predicateFlag) {\n                                accept(')');\n                            }\n\n                            if (acceptBracket) {\n                                accept(']');\n                            }\n\n                            return filter;\n                        }\n\n                        String[] values = new String[valueList.size()];\n                        valueList.toArray(values);\n\n                        Filter filter = new StringInSegement(propertyName, function, values, not);\n\n                        while (ch == ' ') {\n                            next();\n                        }\n\n                        if (ch == '&' || ch == '|') {\n                            filter = filterRest(filter);\n                        }\n\n                        accept(')');\n                        if (predicateFlag) {\n                            accept(')');\n                        }\n\n                        if (acceptBracket) {\n                            accept(']');\n                        }\n\n                        return filter;\n                    }\n\n                    if (isIntObj) {\n                        Long[] values = new Long[valueList.size()];\n                        for (int i = 0; i < values.length; ++i) {\n                            Number item = (Number) valueList.get(i);\n                            if (item != null) {\n                                values[i] = TypeUtils.longExtractValue(item);\n                            }\n                        }\n\n                        Filter filter = new IntObjInSegement(propertyName, function, values, not);\n\n                        while (ch == ' ') {\n                            next();\n                        }\n\n                        if (ch == '&' || ch == '|') {\n                            filter = filterRest(filter);\n                        }\n\n                        accept(')');\n                        if (predicateFlag) {\n                            accept(')');\n                        }\n\n                        if (acceptBracket) {\n                            accept(']');\n                        }\n\n                        return filter;\n                    }\n\n                    throw new UnsupportedOperationException();\n                }\n\n                if (ch == '\\'' || ch == '\"') {\n                    String strValue = readString();\n\n                    Filter filter = null;\n                    if (op == Operator.RLIKE) {\n                        filter = new RlikeSegement(propertyName, function, strValue, false);\n                    } else if (op == Operator.NOT_RLIKE) {\n                        filter = new RlikeSegement(propertyName, function, strValue, true);\n                    } else  if (op == Operator.LIKE || op == Operator.NOT_LIKE) {\n                        while (strValue.indexOf(\"%%\") != -1) {\n                            strValue = strValue.replaceAll(\"%%\", \"%\");\n                        }\n\n                        final boolean not = (op == Operator.NOT_LIKE);\n\n                        int p0 = strValue.indexOf('%');\n                        if (p0 == -1) {\n                            if (op == Operator.LIKE) {\n                                op = Operator.EQ;\n                            } else {\n                                op = Operator.NE;\n                            }\n                            filter = new StringOpSegement(propertyName, function, strValue, op);\n                        } else {\n                            String[] items = strValue.split(\"%\");\n\n                            String startsWithValue = null;\n                            String endsWithValue = null;\n                            String[] containsValues = null;\n                            if (p0 == 0) {\n                                if (strValue.charAt(strValue.length() - 1) == '%') {\n                                    containsValues = new String[items.length - 1];\n                                    System.arraycopy(items, 1, containsValues, 0, containsValues.length);\n                                } else {\n                                    endsWithValue = items[items.length - 1];\n                                    if (items.length > 2) {\n                                        containsValues = new String[items.length - 2];\n                                        System.arraycopy(items, 1, containsValues, 0, containsValues.length);\n                                    }\n                                }\n                            } else if (strValue.charAt(strValue.length() - 1) == '%') {\n                                if (items.length == 1) {\n                                    startsWithValue = items[0];\n                                } else {\n                                    containsValues = items;\n                                }\n                            } else {\n                                if (items.length == 1) {\n                                    startsWithValue = items[0];\n                                } else if (items.length == 2) {\n                                    startsWithValue = items[0];\n                                    endsWithValue = items[1];\n                                } else {\n                                    startsWithValue = items[0];\n                                    endsWithValue = items[items.length - 1];\n                                    containsValues = new String[items.length - 2];\n                                    System.arraycopy(items, 1, containsValues, 0, containsValues.length);\n                                }\n                            }\n\n                            filter = new MatchSegement(propertyName, function, startsWithValue, endsWithValue,\n                                    containsValues, not);\n                        }\n                    } else {\n                        filter = new StringOpSegement(propertyName, function, strValue, op);\n                    }\n\n                    while (ch == ' ') {\n                        next();\n                    }\n\n                    if (ch == '&' || ch == '|') {\n                        filter = filterRest(filter);\n                    }\n\n                    if (predicateFlag) {\n                        accept(')');\n                    }\n                    \n                    if (acceptBracket) {\n                        accept(']');\n                    }\n\n                    return filter;\n                }\n\n                if (isDigitFirst(ch)) {\n                    long value = readLongValue();\n                    double doubleValue = 0D;\n                    if (ch == '.') {\n                        doubleValue = readDoubleValue(value);\n                        \n                    }\n\n                    Filter filter;\n\n                    if (doubleValue == 0) {\n                        filter = new IntOpSegement(propertyName, function, value, op);\n                    } else {\n                        filter = new DoubleOpSegement(propertyName, function, doubleValue, op);\n                    }\n\n                    while (ch == ' ') {\n                        next();\n                    }\n\n                    if (lparanCount > 1 && ch == ')') {\n                        next();\n                        lparanCount--;\n                    }\n\n                    if (ch == '&' || ch == '|') {\n                        filter = filterRest(filter);\n                    }\n\n                    if (predicateFlag) {\n                        lparanCount--;\n                        accept(')');\n                    }\n\n                    if (acceptBracket) {\n                        accept(']');\n                    }\n\n                    return filter;\n                } else if (ch == '$') {\n                    Segment segment = readSegement();\n                    RefOpSegement filter = new RefOpSegement(propertyName, function, segment, op);\n                    hasRefSegment = true;\n                    while (ch == ' ') {\n                        next();\n                    }\n\n                    if (predicateFlag) {\n                        accept(')');\n                    }\n\n                    if (acceptBracket) {\n                        accept(']');\n                    }\n\n                    return filter;\n                } else if (ch == '/') {\n                    int flags = 0;\n                    StringBuilder regBuf = new StringBuilder();\n                    for (;;) {\n                        next();\n                        if (ch == '/') {\n                            next();\n                            if (ch == 'i') {\n                                next();\n                                flags |= Pattern.CASE_INSENSITIVE;\n                            }\n                            break;\n                        }\n\n                        if (ch == '\\\\') {\n                            next();\n                            regBuf.append(ch);\n                        } else {\n                            regBuf.append(ch);\n                        }\n                    }\n\n                    Pattern pattern = Pattern.compile(regBuf.toString(), flags);\n                    RegMatchSegement filter = new RegMatchSegement(propertyName, function, pattern, op);\n\n                    if (predicateFlag) {\n                        accept(')');\n                    }\n\n                    if (acceptBracket) {\n                        accept(']');\n                    }\n\n                    return filter;\n                }\n\n                if (ch == 'n') {\n                    String name = readName();\n                    if (\"null\".equals(name)) {\n                        Filter filter = null;\n                        if (op == Operator.EQ) {\n                            filter = new NullSegement(propertyName, function);\n                        } else if (op == Operator.NE) {\n                            filter = new NotNullSegement(propertyName, function);\n                        }\n\n                        if (filter != null) {\n                            while (ch == ' ') {\n                                next();\n                            }\n\n                            if (ch == '&' || ch == '|') {\n                                filter = filterRest(filter);\n                            }\n                        }\n\n                        if (predicateFlag) {\n                            accept(')');\n                        }\n                        accept(']');\n\n                        if (filter != null) {\n                            return filter;\n                        }\n\n                        throw new UnsupportedOperationException();\n                    }\n                } else if (ch == 't') {\n                    String name = readName();\n                    \n                    if (\"true\".equals(name)) {\n                        Filter filter = null;\n\n                        if (op == Operator.EQ) {\n                            filter = new ValueSegment(propertyName, function, Boolean.TRUE, true);\n                        } else if (op == Operator.NE) {\n                            filter = new ValueSegment(propertyName, function, Boolean.TRUE, false);\n                        }\n\n                        if (filter != null) {\n                            while (ch == ' ') {\n                                next();\n                            }\n\n                            if (ch == '&' || ch == '|') {\n                                filter = filterRest(filter);\n                            }\n                        }\n\n                        if (predicateFlag) {\n                            accept(')');\n                        }\n                        accept(']');\n\n                        if (filter != null) {\n                            return filter;\n                        }\n\n                        throw new UnsupportedOperationException();\n                    }\n                } else if (ch == 'f') {\n                    String name = readName();\n                    \n                    if (\"false\".equals(name)) {\n                        Filter filter = null;\n\n                        if (op == Operator.EQ) {\n                            filter = new ValueSegment(propertyName, function, Boolean.FALSE, true);\n                        } else if (op == Operator.NE) {\n                            filter = new ValueSegment(propertyName, function, Boolean.FALSE, false);\n                        }\n\n                        if (filter != null) {\n                            while (ch == ' ') {\n                                next();\n                            }\n\n                            if (ch == '&' || ch == '|') {\n                                filter = filterRest(filter);\n                            }\n                        }\n\n                        if (predicateFlag) {\n                            accept(')');\n                        }\n                        accept(']');\n\n                        if (filter != null) {\n                            return filter;\n                        }\n\n                        throw new UnsupportedOperationException();\n                    }\n                }\n\n                throw new UnsupportedOperationException();\n                // accept(')');\n            }\n\n            int start = pos - 1;\n            char startCh = ch;\n            while (ch != ']' && ch != '/' && !isEOF()) {\n                if (ch == '.' //\n                        && (!predicateFlag) // \n                        && !predicateFlag\n                        && startCh != '\\''\n                ) {\n                    break;\n                }\n                \n                if (ch == '\\\\') {\n                    next();\n                }\n                next();\n            }\n            \n            int end;\n            if (acceptBracket) {\n                end = pos - 1;\n            } else {\n                if (ch == '/' || ch == '.') {\n                    end = pos - 1;\n                } else {\n                    end = pos;\n                }\n            }\n            \n            String text = path.substring(start, end);\n\n            if (text.indexOf('\\\\') != 0) {\n                StringBuilder buf = new StringBuilder(text.length());\n                for (int i = 0; i < text.length(); ++i) {\n                    char ch = text.charAt(i);\n                    if (ch == '\\\\' && i < text.length() - 1) {\n                        char c2 = text.charAt(i + 1);\n                        if (c2 == '@' || ch == '\\\\' || ch == '\\\"') {\n                            buf.append(c2);\n                            i++;\n                            continue;\n                        }\n                    }\n\n                    buf.append(ch);\n                }\n                text = buf.toString();\n            }\n            \n            if (text.indexOf(\"\\\\.\") != -1) {\n                String propName;\n                if (startCh == '\\'' && text.length() > 2 && text.charAt(text.length() - 1) == startCh) {\n                    propName = text.substring(1, text.length() - 1);\n                } else {\n                    propName = text.replaceAll(\"\\\\\\\\\\\\.\", \"\\\\.\");\n                    if (propName.indexOf(\"\\\\-\") != -1) {\n                        propName = propName.replaceAll(\"\\\\\\\\-\", \"-\");\n                    }\n                }\n\n                if (predicateFlag) {\n                    accept(')');\n                }\n\n                return new PropertySegment(propName, false);\n            }\n\n            Segment segment = buildArraySegement(text);\n\n            if (acceptBracket && !isEOF()) {\n                accept(']');\n            }\n\n            return segment;\n        }\n\n        Filter filterRest(Filter filter) {\n            boolean and = ch == '&';\n            if ((ch == '&' && getNextChar() == '&') || (ch == '|' && getNextChar() == '|')) {\n                next();\n                next();\n\n                boolean paren = false;\n                if (ch == '(') {\n                    paren = true;\n                    next();\n                }\n\n                while (ch == ' ') {\n                    next();\n                }\n\n                Filter right = (Filter) parseArrayAccessFilter(false);\n\n                filter = new FilterGroup(filter, right, and);\n\n                if (paren && ch == ')') {\n                    next();\n                }\n            }\n            return filter;\n        }\n\n        protected long readLongValue() {\n            int beginIndex = pos - 1;\n            if (ch == '+' || ch == '-') {\n                next();\n            }\n\n            while (ch >= '0' && ch <= '9') {\n                next();\n            }\n\n            int endIndex = pos - 1;\n            String text = path.substring(beginIndex, endIndex);\n            long value = Long.parseLong(text);\n            return value;\n        }\n        \n        protected double readDoubleValue(long longValue) {\n            int beginIndex = pos - 1;\n\n            next();\n            while (ch >= '0' && ch <= '9') {\n                next();\n            }\n\n            int endIndex = pos - 1;\n            String text = path.substring(beginIndex, endIndex);\n            double value = Double.parseDouble(text);\n            value += longValue;\n            return value;\n        }\n\n        protected Object readValue() {\n            skipWhitespace();\n\n            if (isDigitFirst(ch)) {\n                return readLongValue();\n            }\n\n            if (ch == '\"' || ch == '\\'') {\n                return readString();\n            }\n\n            if (ch == 'n') {\n                String name = readName();\n\n                if (\"null\".equals(name)) {\n                    return null;\n                } else {\n                    throw new JSONPathException(path);\n                }\n            }\n\n            throw new UnsupportedOperationException();\n        }\n\n        static boolean isDigitFirst(char ch) {\n            return ch == '-' || ch == '+' || (ch >= '0' && ch <= '9');\n        }\n\n        protected Operator readOp() {\n            Operator op = null;\n            if (ch == '=') {\n                next();\n                if (ch == '~') {\n                    next();\n                    op = Operator.REG_MATCH;\n                } else if (ch == '=') {\n                    next();\n                    op = Operator.EQ;\n                } else {\n                    op = Operator.EQ;\n                }\n            } else if (ch == '!') {\n                next();\n                accept('=');\n                op = Operator.NE;\n            } else if (ch == '<') {\n                next();\n                if (ch == '=') {\n                    next();\n                    op = Operator.LE;\n                } else {\n                    op = Operator.LT;\n                }\n            } else if (ch == '>') {\n                next();\n                if (ch == '=') {\n                    next();\n                    op = Operator.GE;\n                } else {\n                    op = Operator.GT;\n                }\n            }\n\n            if (op == null) {\n                String name = readName();\n\n                if (\"not\".equalsIgnoreCase(name)) {\n                    skipWhitespace();\n\n                    name = readName();\n\n                    if (\"like\".equalsIgnoreCase(name)) {\n                        op = Operator.NOT_LIKE;\n                    } else if (\"rlike\".equalsIgnoreCase(name)) {\n                        op = Operator.NOT_RLIKE;\n                    } else if (\"in\".equalsIgnoreCase(name)) {\n                        op = Operator.NOT_IN;\n                    } else if (\"between\".equalsIgnoreCase(name)) {\n                        op = Operator.NOT_BETWEEN;\n                    } else {\n                        throw new UnsupportedOperationException();\n                    }\n                } else if (\"nin\".equalsIgnoreCase(name)) {\n                    op = Operator.NOT_IN;\n                } else {\n                    if (\"like\".equalsIgnoreCase(name)) {\n                        op = Operator.LIKE;\n                    } else if (\"rlike\".equalsIgnoreCase(name)) {\n                        op = Operator.RLIKE;\n                    } else if (\"in\".equalsIgnoreCase(name)) {\n                        op = Operator.IN;\n                    } else if (\"between\".equalsIgnoreCase(name)) {\n                        op = Operator.BETWEEN;\n                    } else {\n                        throw new UnsupportedOperationException();\n                    }\n                }\n            }\n            return op;\n        }\n\n        String readName() {\n            skipWhitespace();\n\n            if (ch != '\\\\' && !Character.isJavaIdentifierStart(ch)) {\n                throw new JSONPathException(\"illeal jsonpath syntax. \" + path);\n            }\n\n            StringBuilder buf = new StringBuilder();\n            while (!isEOF()) {\n                if (ch == '\\\\') {\n                    next();\n                    buf.append(ch);\n                    if (isEOF()) {\n                        return buf.toString();\n                    }\n                    next();\n                    continue;\n                }\n\n                boolean identifierFlag = Character.isJavaIdentifierPart(ch);\n                if (!identifierFlag) {\n                    break;\n                }\n                buf.append(ch);\n                next();\n            }\n\n            if (isEOF() && Character.isJavaIdentifierPart(ch)) {\n                buf.append(ch);\n            }\n\n            return buf.toString();\n        }\n\n        String readString() {\n            char quoate = ch;\n            next();\n\n            int beginIndex = pos - 1;\n            while (ch != quoate && !isEOF()) {\n                next();\n            }\n\n            String strValue = path.substring(beginIndex, isEOF() ? pos : pos - 1);\n\n            accept(quoate);\n\n            return strValue;\n        }\n\n        void accept(char expect) {\n            if (ch == ' ') {\n                next();\n            }\n\n            if (ch != expect) {\n                throw new JSONPathException(\"expect '\" + expect + \", but '\" + ch + \"'\");\n            }\n\n            if (!isEOF()) {\n                next();\n            }\n        }\n\n        public Segment[] explain() {\n            if (path == null || path.length() == 0) {\n                throw new IllegalArgumentException();\n            }\n\n            Segment[] segments = new Segment[8];\n\n            for (;;) {\n                Segment segment = readSegement();\n                if (segment == null) {\n                    break;\n                }\n\n                if (segment instanceof PropertySegment) {\n                    PropertySegment propertySegment = (PropertySegment) segment;\n                    if ((!propertySegment.deep) && propertySegment.propertyName.equals(\"*\")) {\n                        continue;\n                    }\n                }\n\n                if (level == segments.length) {\n                    Segment[] t = new Segment[level * 3 / 2];\n                    System.arraycopy(segments, 0, t, 0, level);\n                    segments = t;\n                }\n                segments[level++] = segment;\n            }\n\n            if (level == segments.length) {\n                return segments;\n            }\n\n            Segment[] result = new Segment[level];\n            System.arraycopy(segments, 0, result, 0, level);\n            return result;\n        }\n\n        Segment buildArraySegement(String indexText) {\n            final int indexTextLen = indexText.length();\n            final char firstChar = indexText.charAt(0);\n            final char lastChar = indexText.charAt(indexTextLen - 1);\n\n            int commaIndex = indexText.indexOf(',');\n\n            if (indexText.length() > 2 && firstChar == '\\'' && lastChar == '\\'') {\n\n                String propertyName = indexText.substring(1, indexTextLen - 1);\n\n                if (commaIndex == -1 || !strArrayPatternx.matcher(indexText).find()) {\n                    return new PropertySegment(propertyName, false);\n                }\n\n                String[] propertyNames = propertyName.split(strArrayRegex);\n                return new MultiPropertySegment(propertyNames);\n            }\n\n            int colonIndex = indexText.indexOf(':');\n\n            if (commaIndex == -1 && colonIndex == -1) {\n                if (TypeUtils.isNumber(indexText)) {\n                    try {\n                        int index = Integer.parseInt(indexText);\n                        return new ArrayAccessSegment(index);\n                    }catch (NumberFormatException ex){\n                        return new PropertySegment(indexText, false); // fix ISSUE-1208\n                    }\n                } else {\n                    if (indexText.charAt(0) == '\"' && indexText.charAt(indexText.length() - 1) == '\"') {\n                        indexText = indexText.substring(1, indexText.length() - 1);\n                    }\n                    return new PropertySegment(indexText, false);\n                }\n            }\n\n            if (commaIndex != -1) {\n                String[] indexesText = indexText.split(\",\");\n                int[] indexes = new int[indexesText.length];\n                for (int i = 0; i < indexesText.length; ++i) {\n                    indexes[i] = Integer.parseInt(indexesText[i]);\n                }\n                return new MultiIndexSegment(indexes);\n            }\n\n            if (colonIndex != -1) {\n                String[] indexesText = indexText.split(\":\");\n                int[] indexes = new int[indexesText.length];\n                for (int i = 0; i < indexesText.length; ++i) {\n                    String str = indexesText[i];\n                    if (str.length() == 0) {\n                        if (i == 0) {\n                            indexes[i] = 0;\n                        } else {\n                            throw new UnsupportedOperationException();\n                        }\n                    } else {\n                        indexes[i] = Integer.parseInt(str);\n                    }\n                }\n\n                int start = indexes[0];\n                int end;\n                if (indexes.length > 1) {\n                    end = indexes[1];\n                } else {\n                    end = -1;\n                }\n                int step;\n                if (indexes.length == 3) {\n                    step = indexes[2];\n                } else {\n                    step = 1;\n                }\n\n                if (end >= 0 && end < start) {\n                    throw new UnsupportedOperationException(\"end must greater than or equals start. start \" + start\n                                                            + \",  end \" + end);\n                }\n\n                if (step <= 0) {\n                    throw new UnsupportedOperationException(\"step must greater than zero : \" + step);\n                }\n                return new RangeSegment(start, end, step);\n            }\n\n            throw new UnsupportedOperationException();\n        }\n    }\n\n    interface Segment {\n\n        Object eval(JSONPath path, Object rootObject, Object currentObject);\n        void extract(JSONPath path, DefaultJSONParser parser, Context context);\n    }\n\n\n    static class SizeSegment implements Segment {\n        public final static SizeSegment instance = new SizeSegment();\n        public Integer eval(JSONPath path, Object rootObject, Object currentObject) {\n            return path.evalSize(currentObject);\n        }\n\n        public void extract(JSONPath path, DefaultJSONParser parser, Context context) {\n            Object object = parser.parse();\n            context.object = path.evalSize(object);\n        }\n    }\n\n    static class TypeSegment implements Segment {\n        public final static TypeSegment instance = new TypeSegment();\n\n        public String eval(JSONPath path, Object rootObject, Object currentObject) {\n            if (currentObject == null) {\n                return \"null\";\n            }\n\n            if (currentObject instanceof Collection) {\n                return \"array\";\n            }\n\n            if (currentObject instanceof Number) {\n                return \"number\";\n            }\n\n            if (currentObject instanceof Boolean) {\n                return \"boolean\";\n            }\n\n            if (currentObject instanceof String\n                    || currentObject instanceof UUID\n                    || currentObject instanceof Enum) {\n                return \"string\";\n            }\n\n            return \"object\";\n        }\n\n        public void extract(JSONPath path, DefaultJSONParser parser, Context context) {\n            throw new UnsupportedOperationException();\n        }\n    }\n\n    static class FloorSegment implements Segment {\n        public final static FloorSegment instance = new FloorSegment();\n        public Object eval(JSONPath path, Object rootObject, Object currentObject) {\n            if (currentObject instanceof JSONArray) {\n                JSONArray array = ((JSONArray) ((JSONArray) currentObject).clone());\n                for (int i = 0; i < array.size(); i++) {\n                    Object item = array.get(i);\n                    Object newItem = floor(item);\n                    if (newItem != item) {\n                        array.set(i , newItem);\n                    }\n                }\n                return array;\n            }\n\n            return floor(currentObject);\n        }\n\n        private static Object floor(Object item) {\n            if (item == null) {\n                return null;\n            }\n\n            if (item instanceof Float) {\n                return Math.floor((Float) item);\n            }\n\n            if (item instanceof Double) {\n                return Math.floor((Double) item);\n            }\n\n            if (item instanceof BigDecimal) {\n                BigDecimal decimal = (BigDecimal) item;\n                return decimal.setScale(0, RoundingMode.FLOOR);\n            }\n\n            if (item instanceof Byte\n                    || item instanceof Short\n                    || item instanceof Integer\n                    || item instanceof Long\n                    || item instanceof BigInteger) {\n                return item;\n            }\n\n            throw new UnsupportedOperationException();\n        }\n\n        public void extract(JSONPath path, DefaultJSONParser parser, Context context) {\n            throw new UnsupportedOperationException();\n        }\n    }\n\n    static class MaxSegment implements Segment {\n\n        public final static MaxSegment instance = new MaxSegment();\n\n        public Object eval(JSONPath path, Object rootObject, Object currentObject) {\n            Object max = null;\n            if (currentObject instanceof Collection) {\n                Iterator iterator = ((Collection) currentObject).iterator();\n                while (iterator.hasNext()) {\n                    Object next = iterator.next();\n                    if (next == null) {\n                        continue;\n                    }\n\n                    if (max == null) {\n                        max = next;\n                    } else if (compare(max, next) < 0) {\n                        max = next;\n                    }\n                }\n            } else {\n                throw new UnsupportedOperationException();\n            }\n\n            return max;\n        }\n\n        public void extract(JSONPath path, DefaultJSONParser parser, Context context) {\n            throw new UnsupportedOperationException();\n        }\n    }\n\n    static class MinSegment implements Segment {\n        public final static MinSegment instance = new MinSegment();\n\n        public Object eval(JSONPath path, Object rootObject, Object currentObject) {\n            Object min = null;\n            if (currentObject instanceof Collection) {\n                Iterator iterator = ((Collection) currentObject).iterator();\n                while (iterator.hasNext()) {\n                    Object next = iterator.next();\n                    if (next == null) {\n                        continue;\n                    }\n\n                    if (min == null) {\n                        min = next;\n                    } else if (compare(min, next) > 0) {\n                        min = next;\n                    }\n                }\n            } else {\n                throw new UnsupportedOperationException();\n            }\n\n            return min;\n        }\n\n        public void extract(JSONPath path, DefaultJSONParser parser, Context context) {\n            throw new UnsupportedOperationException();\n        }\n    }\n\n    static int compare(Object a, Object b) {\n        if (a.getClass() == b.getClass()) {\n            return ((Comparable) a).compareTo(b);\n        }\n\n        Class typeA = a.getClass();\n        Class typeB = b.getClass();\n\n        if (typeA == BigDecimal.class) {\n            if (typeB == Integer.class) {\n                b = new BigDecimal((Integer) b);\n            } else if (typeB == Long.class) {\n                b = new BigDecimal((Long) b);\n            } else if (typeB == Float.class) {\n                b = new BigDecimal((Float) b);\n            } else if (typeB == Double.class) {\n                b = new BigDecimal((Double) b);\n            }\n        } else if (typeA == Long.class) {\n            if (typeB == Integer.class) {\n                b = new Long((Integer) b);\n            } else if (typeB == BigDecimal.class) {\n                a = new BigDecimal((Long) a);\n            } else if (typeB == Float.class) {\n                a = new Float((Long) a);\n            } else if (typeB == Double.class) {\n                a = new Double((Long) a);\n            }\n        } else if (typeA == Integer.class) {\n            if (typeB == Long.class) {\n                a = new Long((Integer) a);\n            } else if (typeB == BigDecimal.class) {\n                a = new BigDecimal((Integer) a);\n            } else if (typeB == Float.class) {\n                a = new Float((Integer) a);\n            } else if (typeB == Double.class) {\n                a = new Double((Integer) a);\n            }\n        } else if (typeA == Double.class) {\n            if (typeB == Integer.class) {\n                b = new Double((Integer) b);\n            } else if (typeB == Long.class) {\n                b = new Double((Long) b);\n            } else if (typeB == Float.class) {\n                b = new Double((Float) b);\n            }\n        } else if (typeA == Float.class) {\n            if (typeB == Integer.class) {\n                b = new Float((Integer) b);\n            } else if (typeB == Long.class) {\n                b = new Float((Long) b);\n            } else if (typeB == Double.class) {\n                a = new Double((Float) a);\n            }\n        }\n\n        return ((Comparable) a).compareTo(b);\n    }\n\n    static class KeySetSegment implements Segment {\n\n        public final static KeySetSegment instance = new KeySetSegment();\n\n        public Object eval(JSONPath path, Object rootObject, Object currentObject) {\n            return path.evalKeySet(currentObject);\n        }\n\n        public void extract(JSONPath path, DefaultJSONParser parser, Context context) {\n            throw new UnsupportedOperationException();\n        }\n    }\n\n    static class PropertySegment implements Segment {\n\n        private final String  propertyName;\n        private final long    propertyNameHash;\n        private final boolean deep;\n\n        public PropertySegment(String propertyName, boolean deep){\n            this.propertyName = propertyName;\n            this.propertyNameHash = TypeUtils.fnv1a_64(propertyName);\n            this.deep = deep;\n        }\n\n        public Object eval(JSONPath path, Object rootObject, Object currentObject) {\n            if (deep) {\n                List<Object> results = new ArrayList<Object>();\n                path.deepScan(currentObject, propertyName, results);\n                return results;\n            } else {\n                // return path.getPropertyValue(currentObject, propertyName, true);\n                return path.getPropertyValue(currentObject, propertyName, propertyNameHash);\n            }\n        }\n\n        public void extract(JSONPath path, DefaultJSONParser parser, Context context) {\n            JSONLexerBase lexer = (JSONLexerBase) parser.lexer;\n\n            if (deep && context.object == null) {\n                context.object = new JSONArray();\n            }\n\n            if (lexer.token() == JSONToken.LBRACKET) {\n                if (\"*\".equals(propertyName)) {\n                    return;\n                }\n\n                lexer.nextToken();\n                JSONArray array;\n\n                if (deep) {\n                    array =(JSONArray) context.object;\n                } else {\n                    array = new JSONArray();\n                }\n                for (;;) {\n                    switch (lexer.token()) {\n                        case JSONToken.LBRACE: {\n                            if (deep) {\n                                extract(path, parser, context);\n                                break;\n                            }\n                            int matchStat = lexer.seekObjectToField(propertyNameHash, deep);\n                            if (matchStat == JSONLexer.VALUE) {\n                                Object value;\n                                switch (lexer.token()) {\n                                    case JSONToken.LITERAL_INT:\n                                        value = lexer.integerValue();\n                                        lexer.nextToken();\n                                        break;\n                                    case JSONToken.LITERAL_STRING:\n                                        value = lexer.stringVal();\n                                        lexer.nextToken();\n                                        break;\n                                    default:\n                                        value = parser.parse();\n                                        break;\n                                }\n\n                                array.add(value);\n                                if (lexer.token() == JSONToken.RBRACE) {\n                                    lexer.nextToken();\n                                    continue;\n                                } else {\n                                    lexer.skipObject(false);\n                                }\n                            } else if (matchStat == JSONLexer.NOT_MATCH) {\n                                continue;\n                            } else {\n                                if (deep) {\n                                    throw new UnsupportedOperationException(lexer.info());\n                                } else {\n                                    lexer.skipObject(false);\n                                }\n                            }\n                            break;\n                        }\n                        case JSONToken.LBRACKET:\n                            if (deep) {\n                                extract(path, parser, context);\n                            } else {\n                                lexer.skipObject(false);\n                            }\n                            break;\n                        case JSONToken.LITERAL_STRING:\n                        case JSONToken.LITERAL_INT:\n                        case JSONToken.LITERAL_FLOAT:\n                        case JSONToken.LITERAL_ISO8601_DATE:\n                        case JSONToken.TRUE:\n                        case JSONToken.FALSE:\n                        case JSONToken.NULL:\n                            lexer.nextToken();\n                            break;\n                        default:\n                            break;\n                    }\n\n                    if (lexer.token() == JSONToken.RBRACKET) {\n                        lexer.nextToken();\n                        break;\n                    } else if (lexer.token() == JSONToken.COMMA) {\n                        lexer.nextToken();\n                        continue;\n                    } else {\n                        throw new JSONException(\"illegal json : \" + lexer.info());\n                    }\n                }\n\n                if (!deep) {\n                    if (array.size() > 0) {\n                        context.object = array;\n                    }\n                }\n                return;\n            }\n\n            if (!deep) {\n                int matchStat = lexer.seekObjectToField(propertyNameHash, deep);\n                if (matchStat == JSONLexer.VALUE) {\n                    if (context.eval) {\n                        Object value;\n                        switch (lexer.token()) {\n                            case JSONToken.LITERAL_INT:\n                                value = lexer.integerValue();\n                                lexer.nextToken(JSONToken.COMMA);\n                                break;\n                            case JSONToken.LITERAL_FLOAT:\n                                value = lexer.decimalValue();\n                                lexer.nextToken(JSONToken.COMMA);\n                                break;\n                            case JSONToken.LITERAL_STRING:\n                                value = lexer.stringVal();\n                                lexer.nextToken(JSONToken.COMMA);\n                                break;\n                            default:\n                                value = parser.parse();\n                                break;\n                        }\n\n                        if (context.eval) {\n                            context.object = value;\n                        }\n                    }\n                }\n                return;\n            }\n\n            // deep\n            for (;;) {\n                int matchStat = lexer.seekObjectToField(propertyNameHash, deep);\n                if (matchStat == JSONLexer.NOT_MATCH) {\n                    break;\n                }\n\n                if (matchStat == JSONLexer.VALUE) {\n                    if (context.eval) {\n                        Object value;\n                        switch (lexer.token()) {\n                            case JSONToken.LITERAL_INT:\n                                value = lexer.integerValue();\n                                lexer.nextToken(JSONToken.COMMA);\n                                break;\n                            case JSONToken.LITERAL_FLOAT:\n                                value = lexer.decimalValue();\n                                lexer.nextToken(JSONToken.COMMA);\n                                break;\n                            case JSONToken.LITERAL_STRING:\n                                value = lexer.stringVal();\n                                lexer.nextToken(JSONToken.COMMA);\n                                break;\n                            default:\n                                value = parser.parse();\n                                break;\n                        }\n\n                        if (context.eval) {\n                            if (context.object instanceof List) {\n                                List list = (List) context.object;\n                                if (list.size() == 0 && value instanceof List) {\n                                    context.object = value;\n                                } else {\n                                    list.add(value);\n                                }\n                            } else {\n                                context.object = value;\n                            }\n                        }\n                    }\n                } else if (matchStat == JSONLexer.OBJECT || matchStat == JSONLexer.ARRAY) {\n                    extract(path, parser, context);\n                }\n            }\n        }\n\n        public void setValue(JSONPath path, Object parent, Object value) {\n            if (deep) {\n                path.deepSet(parent, propertyName, propertyNameHash, value);\n            } else {\n                path.setPropertyValue(parent, propertyName, propertyNameHash, value);\n            }\n        }\n        \n        public boolean remove(JSONPath path, Object parent) {\n            return path.removePropertyValue(parent, propertyName, deep);\n        }\n    }\n\n    static class MultiPropertySegment implements Segment {\n\n        private final String[] propertyNames;\n        private final long[]   propertyNamesHash;\n\n        public MultiPropertySegment(String[] propertyNames){\n            this.propertyNames = propertyNames;\n            this.propertyNamesHash = new long[propertyNames.length];\n            for (int i = 0; i < propertyNamesHash.length; i++) {\n                propertyNamesHash[i] = TypeUtils.fnv1a_64(propertyNames[i]);\n            }\n        }\n\n        public Object eval(JSONPath path, Object rootObject, Object currentObject) {\n            List<Object> fieldValues = new ArrayList<Object>(propertyNames.length);\n\n            for (int i = 0; i < propertyNames.length; i++) {\n                Object fieldValue = path.getPropertyValue(currentObject, propertyNames[i], propertyNamesHash[i]);\n                fieldValues.add(fieldValue);\n            }\n\n            return fieldValues;\n        }\n\n        public void extract(JSONPath path, DefaultJSONParser parser, Context context) {\n            JSONLexerBase lexer = (JSONLexerBase) parser.lexer;\n\n            JSONArray array;\n            if (context.object == null) {\n                context.object = array = new JSONArray();\n            } else {\n                array = (JSONArray) context.object;\n            }\n            for (int i = array.size(); i < propertyNamesHash.length; ++i) {\n                array.add(null);\n            }\n\n//            if (lexer.token() == JSONToken.LBRACKET) {\n//                lexer.nextToken();\n//                JSONArray array;\n//\n//                array = new JSONArray();\n//                for (;;) {\n//                    if (lexer.token() == JSONToken.LBRACE) {\n//                        int index = lexer.seekObjectToField(propertyNamesHash);\n//                        int matchStat = lexer.matchStat;\n//                        if (matchStat == JSONLexer.VALUE) {\n//                            Object value;\n//                            switch (lexer.token()) {\n//                                case JSONToken.LITERAL_INT:\n//                                    value = lexer.integerValue();\n//                                    lexer.nextToken();\n//                                    break;\n//                                case JSONToken.LITERAL_STRING:\n//                                    value = lexer.stringVal();\n//                                    lexer.nextToken();\n//                                    break;\n//                                default:\n//                                    value = parser.parse();\n//                                    break;\n//                            }\n//\n//                            array.add(index, value);\n//                            if (lexer.token() == JSONToken.RBRACE) {\n//                                lexer.nextToken();\n//                                continue;\n//                            } else {\n//                                lexer.skipObject();\n//                            }\n//                        } else {\n//                            lexer.skipObject();\n//                        }\n//                    }\n//\n//                    if (lexer.token() == JSONToken.RBRACKET) {\n//                        break;\n//                    } else if (lexer.token() == JSONToken.COMMA) {\n//                        lexer.nextToken();\n//                        continue;\n//                    } else {\n//                        throw new JSONException(\"illegal json.\");\n//                    }\n//                }\n//\n//                context.object = array;\n//                return;\n//            }\n\n            for_:\n            for (;;) {\n                int index = lexer.seekObjectToField(propertyNamesHash);\n                int matchStat = lexer.matchStat;\n                if (matchStat == JSONLexer.VALUE) {\n                    Object value;\n                    switch (lexer.token()) {\n                        case JSONToken.LITERAL_INT:\n                            value = lexer.integerValue();\n                            lexer.nextToken(JSONToken.COMMA);\n                            break;\n                        case JSONToken.LITERAL_FLOAT:\n                            value = lexer.decimalValue();\n                            lexer.nextToken(JSONToken.COMMA);\n                            break;\n                        case JSONToken.LITERAL_STRING:\n                            value = lexer.stringVal();\n                            lexer.nextToken(JSONToken.COMMA);\n                            break;\n                        default:\n                            value = parser.parse();\n                            break;\n                    }\n\n                    array.set(index, value);\n\n                    if (lexer.token() == JSONToken.COMMA) {\n                        continue for_;\n                    }\n                }\n\n                break;\n            }\n        }\n    }\n\n    static class WildCardSegment implements Segment {\n        private boolean deep;\n        private boolean objectOnly;\n\n        private WildCardSegment(boolean deep, boolean objectOnly) {\n            this.deep = deep;\n            this.objectOnly = objectOnly;\n        }\n\n        public final static WildCardSegment instance = new WildCardSegment(false, false);\n        public final static WildCardSegment instance_deep = new WildCardSegment(true, false);\n        public final static WildCardSegment instance_deep_objectOnly = new WildCardSegment(true, true);\n\n        public Object eval(JSONPath path, Object rootObject, Object currentObject) {\n            if (!deep) {\n                return path.getPropertyValues(currentObject);\n            }\n\n            List<Object> values = new ArrayList<Object>();\n            path.deepGetPropertyValues(currentObject, values);\n            return values;\n        }\n\n        public void extract(JSONPath path, DefaultJSONParser parser, Context context) {\n            if (context.eval) {\n                Object object = parser.parse();\n                if (deep) {\n                    List<Object> values = new ArrayList<Object>();\n                    if (objectOnly) {\n                        path.deepGetObjects(object, values);\n                    } else {\n                        path.deepGetPropertyValues(object, values);\n                    }\n                    context.object = values;\n                    return;\n                }\n\n                if (object instanceof JSONObject) {\n                    Collection<Object> values = ((JSONObject) object).values();\n                    JSONArray array = new JSONArray(values.size());\n                    array.addAll(values);\n                    context.object = array;\n                    return;\n                } else if (object instanceof JSONArray) {\n                    context.object = object;\n                    return;\n                }\n            }\n\n            throw new JSONException(\"TODO\");\n        }\n    }\n\n    static class ArrayAccessSegment implements Segment {\n\n        private final int index;\n\n        public ArrayAccessSegment(int index){\n            this.index = index;\n        }\n\n        public Object eval(JSONPath path, Object rootObject, Object currentObject) {\n            return path.getArrayItem(currentObject, index);\n        }\n\n        public boolean setValue(JSONPath path, Object currentObject, Object value) {\n            return path.setArrayItem(path, currentObject, index, value);\n        }\n        \n        public boolean remove(JSONPath path, Object currentObject) {\n            return path.removeArrayItem(path, currentObject, index);\n        }\n\n        public void extract(JSONPath path, DefaultJSONParser parser, Context context) {\n            JSONLexerBase lexer = (JSONLexerBase) parser.lexer;\n            if (lexer.seekArrayToItem(index)\n                    && context.eval)\n            {\n                context.object = parser.parse();\n            }\n        }\n    }\n\n    static class MultiIndexSegment implements Segment {\n\n        private final int[] indexes;\n\n        public MultiIndexSegment(int[] indexes){\n            this.indexes = indexes;\n        }\n\n        public Object eval(JSONPath path, Object rootObject, Object currentObject) {\n            List<Object> items = new JSONArray(indexes.length);\n            for (int i = 0; i < indexes.length; ++i) {\n                Object item = path.getArrayItem(currentObject, indexes[i]);\n                items.add(item);\n            }\n            return items;\n        }\n\n        public void extract(JSONPath path, DefaultJSONParser parser, Context context) {\n            if (context.eval) {\n                Object object = parser.parse();\n                if (object instanceof List) {\n                    int[] indexes = new int[this.indexes.length];\n                    System.arraycopy(this.indexes, 0, indexes, 0, indexes.length);\n                    boolean noneNegative = indexes[0] >= 0;\n\n                    List list = (List) object;\n                    if (noneNegative) {\n                        for (int i = list.size() - 1; i >= 0; i--) {\n                            if (Arrays.binarySearch(indexes, i) < 0) {\n                                list.remove(i);\n                            }\n                        }\n                        context.object = list;\n                        return;\n                    }\n                }\n            }\n            throw new UnsupportedOperationException();\n        }\n    }\n\n    static class RangeSegment implements Segment {\n        private final int start;\n        private final int end;\n        private final int step;\n\n        public RangeSegment(int start, int end, int step){\n            this.start = start;\n            this.end = end;\n            this.step = step;\n        }\n\n        public Object eval(JSONPath path, Object rootObject, Object currentObject) {\n            int size = SizeSegment.instance.eval(path, rootObject, currentObject);\n            int start = this.start >= 0 ? this.start : this.start + size;\n            int end = this.end >= 0 ? this.end : this.end + size;\n\n            int array_size = (end - start) / step + 1;\n            if (array_size == -1) {\n                return null;\n            }\n\n            List<Object> items = new ArrayList<Object>(array_size);\n            for (int i = start; i <= end && i < size; i += step) {\n                Object item = path.getArrayItem(currentObject, i);\n                items.add(item);\n            }\n            return items;\n        }\n\n        public void extract(JSONPath path, DefaultJSONParser parser, Context context) {\n            throw new UnsupportedOperationException();\n        }\n    }\n\n    static class NotNullSegement extends PropertyFilter {\n        public NotNullSegement(String propertyName, boolean function){\n            super(propertyName, function);\n        }\n\n        public boolean apply(JSONPath path, Object rootObject, Object currentObject, Object item) {\n            return path.getPropertyValue(item, propertyName, propertyNameHash) != null;\n        }\n    }\n\n    static class NullSegement extends PropertyFilter {\n        public NullSegement(String propertyName, boolean function){\n            super(propertyName, function);\n        }\n\n        public boolean apply(JSONPath path, Object rootObject, Object currentObject, Object item) {\n            Object propertyValue = get(path, rootObject, item);\n\n            return propertyValue == null;\n        }\n    }\n    \n    static class ValueSegment extends PropertyFilter {\n        private final Object value;\n        private boolean eq = true;\n        \n        public ValueSegment(String propertyName,boolean function, Object value, boolean eq){\n            super(propertyName, function);\n\n            if (value == null) {\n                throw new IllegalArgumentException(\"value is null\");\n            }\n            this.value = value;\n            this.eq = eq;\n        }\n\n        public boolean apply(JSONPath path, Object rootObject, Object currentObject, Object item) {\n            Object propertyValue = get(path, rootObject, item);\n            boolean result = value.equals(propertyValue);\n            if (!eq) {\n                result = !result;\n            }\n            return result;\n        }\n    }\n\n    static class IntInSegement extends PropertyFilter {\n        private final long[]  values;\n        private final boolean not;\n\n        public IntInSegement(String propertyName, boolean function, long[] values, boolean not){\n            super(propertyName, function);\n            this.values = values;\n            this.not = not;\n        }\n\n        public boolean apply(JSONPath path, Object rootObject, Object currentObject, Object item) {\n            Object propertyValue = get(path, rootObject, item);\n\n            if (propertyValue == null) {\n                return false;\n            }\n\n            if (propertyValue instanceof Number) {\n                long longPropertyValue = TypeUtils.longExtractValue((Number) propertyValue);\n                for (long value : values) {\n                    if (value == longPropertyValue) {\n                        return !not;\n                    }\n                }\n            }\n\n            return not;\n        }\n    }\n\n    static class IntBetweenSegement extends PropertyFilter {\n        private final long    startValue;\n        private final long    endValue;\n        private final boolean not;\n\n        public IntBetweenSegement(String propertyName, boolean function, long startValue, long endValue, boolean not){\n            super(propertyName, function);\n            this.startValue = startValue;\n            this.endValue = endValue;\n            this.not = not;\n        }\n\n        public boolean apply(JSONPath path, Object rootObject, Object currentObject, Object item) {\n            Object propertyValue = get(path, rootObject, item);\n\n            if (propertyValue == null) {\n                return false;\n            }\n\n            if (propertyValue instanceof Number) {\n                long longPropertyValue = TypeUtils.longExtractValue((Number) propertyValue);\n                if (longPropertyValue >= startValue && longPropertyValue <= endValue) {\n                    return !not;\n                }\n            }\n\n            return not;\n        }\n    }\n\n    static class IntObjInSegement extends PropertyFilter {\n        private final Long[]  values;\n        private final boolean not;\n\n        public IntObjInSegement(String propertyName, boolean function, Long[] values, boolean not){\n            super(propertyName, function);\n            this.values = values;\n            this.not = not;\n        }\n\n        public boolean apply(JSONPath path, Object rootObject, Object currentObject, Object item) {\n            Object propertyValue = get(path, rootObject, item);\n\n            if (propertyValue == null) {\n                for (Long value : values) {\n                    if (value == null) {\n                        return !not;\n                    }\n                }\n\n                return not;\n            }\n\n            if (propertyValue instanceof Number) {\n                long longPropertyValue = TypeUtils.longExtractValue((Number) propertyValue);\n                for (Long value : values) {\n                    if (value == null) {\n                        continue;\n                    }\n\n                    if (value.longValue() == longPropertyValue) {\n                        return !not;\n                    }\n                }\n            }\n\n            return not;\n        }\n    }\n\n    static class StringInSegement extends PropertyFilter {\n        private final String[] values;\n        private final boolean  not;\n\n        public StringInSegement(String propertyName, boolean function, String[] values, boolean not){\n            super(propertyName, function);\n            this.values = values;\n            this.not = not;\n        }\n\n        public boolean apply(JSONPath path, Object rootObject, Object currentObject, Object item) {\n            Object propertyValue = get(path, rootObject, item);\n\n            for (String value : values) {\n                if (value == propertyValue) {\n                    return !not;\n                } else if (value != null && value.equals(propertyValue)) {\n                    return !not;\n                }\n            }\n\n            return not;\n        }\n    }\n\n    static class IntOpSegement extends PropertyFilter {\n        private final long     value;\n        private final Operator op;\n\n        private BigDecimal     valueDecimal;\n        private Float          valueFloat;\n        private Double         valueDouble;\n\n        public IntOpSegement(String propertyName, boolean function, long value, Operator op){\n            super(propertyName, function);\n            this.value = value;\n            this.op = op;\n        }\n\n        public boolean apply(JSONPath path, Object rootObject, Object currentObject, Object item) {\n            Object propertyValue = get(path, rootObject, item);\n\n            if (propertyValue == null) {\n                return false;\n            }\n\n            if (!(propertyValue instanceof Number)) {\n                return false;\n            }\n\n            if (propertyValue instanceof BigDecimal) {\n                if (valueDecimal == null) {\n                    valueDecimal = BigDecimal.valueOf(value);\n                }\n\n                int result = valueDecimal.compareTo((BigDecimal) propertyValue);\n                switch (op) {\n                    case EQ:\n                        return result == 0;\n                    case NE:\n                        return result != 0;\n                    case GE:\n                        return 0 >= result;\n                    case GT:\n                        return 0 > result;\n                    case LE:\n                        return 0 <= result;\n                    case LT:\n                        return 0 < result;\n                }\n\n                return false;\n            }\n\n            if (propertyValue instanceof Float) {\n                if (valueFloat == null) {\n                    valueFloat = Float.valueOf(value);\n                }\n\n                int result = valueFloat.compareTo((Float) propertyValue);\n                switch (op) {\n                    case EQ:\n                        return result == 0;\n                    case NE:\n                        return result != 0;\n                    case GE:\n                        return 0 >= result;\n                    case GT:\n                        return 0 > result;\n                    case LE:\n                        return 0 <= result;\n                    case LT:\n                        return 0 < result;\n                }\n\n                return false;\n            }\n\n            if (propertyValue instanceof Double) {\n                if (valueDouble == null) {\n                    valueDouble = Double.valueOf(value);\n                }\n\n                int result = valueDouble.compareTo((Double) propertyValue);\n                switch (op) {\n                    case EQ:\n                        return result == 0;\n                    case NE:\n                        return result != 0;\n                    case GE:\n                        return 0 >= result;\n                    case GT:\n                        return 0 > result;\n                    case LE:\n                        return 0 <= result;\n                    case LT:\n                        return 0 < result;\n                }\n\n                return false;\n            }\n\n            long longValue = TypeUtils.longExtractValue((Number) propertyValue);\n\n            switch (op) {\n                case EQ:\n                    return longValue == value;\n                case NE:\n                    return longValue != value;\n                case GE:\n                    return longValue >= value;\n                case GT:\n                    return longValue > value;\n                case LE:\n                    return longValue <= value;\n                case LT:\n                    return longValue < value;\n            }\n\n            return false;\n        }\n    }\n\n    static abstract class PropertyFilter implements Filter {\n        static long TYPE = TypeUtils.fnv1a_64(\"type\");\n\n        protected final String  propertyName;\n        protected final long    propertyNameHash;\n        protected final boolean function;\n        protected Segment functionExpr;\n\n        protected PropertyFilter(String propertyName, boolean function) {\n            this.propertyName = propertyName;\n            this.propertyNameHash = TypeUtils.fnv1a_64(propertyName);\n            this.function = function;\n\n            if (function) {\n                if (propertyNameHash == TYPE) {\n                    functionExpr = TypeSegment.instance;\n                } else if (propertyNameHash == SIZE) {\n                    functionExpr = SizeSegment.instance;\n                } else {\n                    throw new JSONPathException(\"unsupported funciton : \" + propertyName);\n                }\n            }\n        }\n\n        protected Object get(JSONPath path, Object rootObject, Object currentObject) {\n            if (functionExpr != null) {\n                return functionExpr.eval(path, rootObject, currentObject);\n            }\n            return path.getPropertyValue(currentObject, propertyName, propertyNameHash);\n        }\n    }\n    \n    static class DoubleOpSegement extends PropertyFilter {\n        private final double   value;\n        private final Operator op;\n\n        public DoubleOpSegement(String propertyName, boolean function, double value, Operator op){\n            super(propertyName, function);\n            this.value = value;\n            this.op = op;\n        }\n\n        public boolean apply(JSONPath path, Object rootObject, Object currentObject, Object item) {\n            Object propertyValue = get(path, rootObject, item);\n\n            if (propertyValue == null) {\n                return false;\n            }\n\n            if (!(propertyValue instanceof Number)) {\n                return false;\n            }\n\n            double doubleValue = ((Number) propertyValue).doubleValue();\n\n            switch (op) {\n                case EQ:\n                    return doubleValue == value;\n                case NE:\n                    return doubleValue != value;\n                case GE:\n                    return doubleValue >= value;\n                case GT:\n                    return doubleValue > value;\n                case LE:\n                    return doubleValue <= value;\n                case LT:\n                    return doubleValue < value;\n            }\n\n            return false;\n        }\n    }\n\n    static class RefOpSegement extends PropertyFilter {\n        private final Segment  refSgement;\n        private final Operator  op;\n\n        public RefOpSegement(String propertyName, boolean function, Segment refSgement, Operator op){\n            super(propertyName, function);\n            this.refSgement = refSgement;\n            this.op = op;\n        }\n\n        public boolean apply(JSONPath path, Object rootObject, Object currentObject, Object item) {\n            Object propertyValue = get(path, rootObject, item);\n\n            if (propertyValue == null) {\n                return false;\n            }\n\n            if (!(propertyValue instanceof Number)) {\n                return false;\n            }\n\n            Object refValue = refSgement.eval(path, rootObject, rootObject);\n\n            if (refValue instanceof Integer || refValue instanceof Long || refValue instanceof Short || refValue instanceof Byte) {\n                long value = TypeUtils.longExtractValue((Number) refValue);\n\n                if (propertyValue instanceof Integer || propertyValue instanceof Long || propertyValue instanceof Short || propertyValue instanceof Byte) {\n                    long longValue = TypeUtils.longExtractValue((Number) propertyValue);\n\n                    switch (op) {\n                        case EQ:\n                            return longValue == value;\n                        case NE:\n                            return longValue != value;\n                        case GE:\n                            return longValue >= value;\n                        case GT:\n                            return longValue > value;\n                        case LE:\n                            return longValue <= value;\n                        case LT:\n                            return longValue < value;\n                    }\n                } else if (propertyValue instanceof BigDecimal) {\n                    BigDecimal valueDecimal = BigDecimal.valueOf(value);\n\n                    int result = valueDecimal.compareTo((BigDecimal) propertyValue);\n                    switch (op) {\n                        case EQ:\n                            return result == 0;\n                        case NE:\n                            return result != 0;\n                        case GE:\n                            return 0 >= result;\n                        case GT:\n                            return 0 > result;\n                        case LE:\n                            return 0 <= result;\n                        case LT:\n                            return 0 < result;\n                    }\n\n                    return false;\n                }\n            }\n\n            throw new UnsupportedOperationException();\n        }\n    }\n\n    static class MatchSegement extends PropertyFilter {\n        private final String   startsWithValue;\n        private final String   endsWithValue;\n        private final String[] containsValues;\n        private final int      minLength;\n        private final boolean  not;\n\n        public MatchSegement(\n                String propertyName,\n                boolean function,\n                String startsWithValue,\n                String endsWithValue,\n                String[] containsValues,\n                boolean not)\n        {\n            super(propertyName, function);\n            this.startsWithValue = startsWithValue;\n            this.endsWithValue = endsWithValue;\n            this.containsValues = containsValues;\n            this.not = not;\n\n            int len = 0;\n            if (startsWithValue != null) {\n                len += startsWithValue.length();\n            }\n\n            if (endsWithValue != null) {\n                len += endsWithValue.length();\n            }\n\n            if (containsValues != null) {\n                for (String item : containsValues) {\n                    len += item.length();\n                }\n            }\n\n            this.minLength = len;\n        }\n\n        public boolean apply(JSONPath path, Object rootObject, Object currentObject, Object item) {\n            Object propertyValue = get(path, rootObject, item);\n\n            if (propertyValue == null) {\n                return false;\n            }\n\n            final String strPropertyValue = propertyValue.toString();\n\n            if (strPropertyValue.length() < minLength) {\n                return not;\n            }\n\n            int start = 0;\n            if (startsWithValue != null) {\n                if (!strPropertyValue.startsWith(startsWithValue)) {\n                    return not;\n                }\n                start += startsWithValue.length();\n            }\n\n            if (containsValues != null) {\n                for (String containsValue : containsValues) {\n                    int index = strPropertyValue.indexOf(containsValue, start);\n                    if (index == -1) {\n                        return not;\n                    }\n                    start = index + containsValue.length();\n                }\n            }\n\n            if (endsWithValue != null) {\n                if (!strPropertyValue.endsWith(endsWithValue)) {\n                    return not;\n                }\n            }\n\n            return !not;\n        }\n    }\n\n    static class RlikeSegement extends PropertyFilter {\n        private final Pattern pattern;\n        private final boolean not;\n\n        public RlikeSegement(String propertyName, boolean function, String pattern, boolean not){\n            super(propertyName, function);\n            this.pattern = Pattern.compile(pattern);\n            this.not = not;\n        }\n\n        public boolean apply(JSONPath path, Object rootObject, Object currentObject, Object item) {\n            Object propertyValue = get(path, rootObject, item);\n\n            if (propertyValue == null) {\n                return false;\n            }\n\n            String strPropertyValue = propertyValue.toString();\n            Matcher m = pattern.matcher(strPropertyValue);\n            boolean match = m.matches();\n\n            if (not) {\n                match = !match;\n            }\n\n            return match;\n        }\n    }\n\n    static class StringOpSegement extends PropertyFilter {\n        private final String   value;\n        private final Operator op;\n\n        public StringOpSegement(String propertyName, boolean function, String value, Operator op){\n            super(propertyName, function);\n            this.value = value;\n            this.op = op;\n        }\n\n        public boolean apply(JSONPath path, Object rootObject, Object currentObject, Object item) {\n            Object propertyValue = get(path, rootObject, item);\n\n            if (op == Operator.EQ) {\n                return value.equals(propertyValue);\n            } else if (op == Operator.NE) {\n                return !value.equals(propertyValue);\n            }\n\n            if (propertyValue == null) {\n                return false;\n            }\n\n            int compareResult = value.compareTo(propertyValue.toString());\n            if (op == Operator.GE) {\n                return compareResult <= 0;\n            } else if (op == Operator.GT) {\n                return compareResult < 0;\n            } else if (op == Operator.LE) {\n                return compareResult >= 0;\n            } else if (op == Operator.LT) {\n                return compareResult > 0;\n            }\n\n            return false;\n        }\n    }\n\n    static class RegMatchSegement extends PropertyFilter {\n        private final Pattern  pattern;\n        private final Operator op;\n\n        public RegMatchSegement(String propertyName, boolean function, Pattern pattern, Operator op){\n            super(propertyName, function);\n            this.pattern = pattern;\n            this.op = op;\n        }\n\n        public boolean apply(JSONPath path, Object rootObject, Object currentObject, Object item) {\n            Object propertyValue = get(path, rootObject, item);\n            if (propertyValue == null) {\n                return false;\n            }\n\n            String str = propertyValue.toString();\n\n            Matcher m = pattern.matcher(str);\n            return m.matches();\n        }\n    }\n\n    enum Operator {\n                   EQ, NE, GT, GE, LT, LE, LIKE, NOT_LIKE, RLIKE, NOT_RLIKE, IN, NOT_IN, BETWEEN, NOT_BETWEEN, And, Or, REG_MATCH\n    }\n\n    static public class FilterSegment implements Segment {\n\n        private final Filter filter;\n\n        public FilterSegment(Filter filter){\n            super();\n            this.filter = filter;\n        }\n\n        @SuppressWarnings(\"rawtypes\")\n        public Object eval(JSONPath path, Object rootObject, Object currentObject) {\n            if (currentObject == null) {\n                return null;\n            }\n\n            List<Object> items = new JSONArray();\n\n            if (currentObject instanceof Iterable) {\n                Iterator it = ((Iterable) currentObject).iterator();\n                while (it.hasNext()) {\n                    Object item = it.next();\n\n                    if (filter.apply(path, rootObject, currentObject, item)) {\n                        items.add(item);\n                    }\n                }\n\n                return items;\n            }\n\n            if (filter.apply(path, rootObject, currentObject, currentObject)) {\n                return currentObject;\n            }\n\n            return null;\n        }\n\n        public void extract(JSONPath path, DefaultJSONParser parser, Context context) {\n            Object object = parser.parse();\n            context.object = eval(path, object, object);\n        }\n\n        public boolean remove(JSONPath path, Object rootObject, Object currentObject) {\n            if (currentObject == null) {\n                return false;\n            }\n\n            if (currentObject instanceof Iterable) {\n                Iterator it = ((Iterable) currentObject).iterator();\n                while (it.hasNext()) {\n                    Object item = it.next();\n\n                    if (filter.apply(path, rootObject, currentObject, item)) {\n                        it.remove();\n                    }\n                }\n\n                return true;\n            }\n\n            return false;\n        }\n    }\n\n    interface Filter {\n        boolean apply(JSONPath path, Object rootObject, Object currentObject, Object item);\n    }\n\n    static class FilterGroup implements Filter {\n        private boolean and;\n        private List<Filter> fitlers;\n\n        public FilterGroup(Filter left, Filter right, boolean and) {\n            fitlers = new ArrayList<Filter>(2);\n            fitlers.add(left);\n            fitlers.add(right);\n            this.and = and;\n        }\n\n        public boolean apply(JSONPath path, Object rootObject, Object currentObject, Object item) {\n            if (and) {\n                for (Filter fitler : this.fitlers) {\n                    if (!fitler.apply(path, rootObject, currentObject, item)) {\n                        return false;\n                    }\n                }\n                return true;\n            } else {\n                for (Filter fitler : this.fitlers) {\n                    if (fitler.apply(path, rootObject, currentObject, item)) {\n                        return true;\n                    }\n                }\n                return false;\n            }\n        }\n    }\n\n    @SuppressWarnings(\"rawtypes\")\n    protected Object getArrayItem(final Object currentObject, int index) {\n        if (currentObject == null) {\n            return null;\n        }\n\n        if (currentObject instanceof List) {\n            List list = (List) currentObject;\n\n            if (index >= 0) {\n                if (index < list.size()) {\n                    return list.get(index);\n                }\n                return null;\n            } else {\n                if (Math.abs(index) <= list.size()) {\n                    return list.get(list.size() + index);\n                }\n                return null;\n            }\n        }\n\n        if (currentObject.getClass().isArray()) {\n            int arrayLenth = Array.getLength(currentObject);\n\n            if (index >= 0) {\n                if (index < arrayLenth) {\n                    return Array.get(currentObject, index);\n                }\n                return null;\n            } else {\n                if (Math.abs(index) <= arrayLenth) {\n                    return Array.get(currentObject, arrayLenth + index);\n                }\n                return null;\n            }\n        }\n\n        if (currentObject instanceof Map) {\n            Map map = (Map) currentObject;\n            Object value = map.get(index);\n            if (value == null) {\n                value = map.get(Integer.toString(index));\n            }\n            return value;\n        }\n\n        if (currentObject instanceof Collection) {\n            Collection collection = (Collection) currentObject;\n            int i = 0;\n            for (Object item : collection) {\n                if (i == index) {\n                    return item;\n                }\n                i++;\n            }\n            return null;\n        }\n\n        if (index == 0) {\n            return currentObject;\n        }\n\n        throw new UnsupportedOperationException();\n    }\n\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public boolean setArrayItem(JSONPath path, Object currentObject, int index, Object value) {\n        if (currentObject instanceof List) {\n            List list = (List) currentObject;\n            if (index >= 0) {\n                list.set(index, value);\n            } else {\n                list.set(list.size() + index, value);\n            }\n            return true;\n        }\n\n        Class<?> clazz = currentObject.getClass();\n        if (clazz.isArray()) {\n            int arrayLenth = Array.getLength(currentObject);\n\n            if (index >= 0) {\n                if (index < arrayLenth) {\n                    Array.set(currentObject, index, value);\n                }\n            } else {\n                if (Math.abs(index) <= arrayLenth) {\n                    Array.set(currentObject, arrayLenth + index, value);\n                }\n            }\n\n            return true;\n        }\n\n        throw new JSONPathException(\"unsupported set operation.\" + clazz);\n    }\n\n    @SuppressWarnings(\"rawtypes\")\n    public boolean removeArrayItem(JSONPath path, Object currentObject, int index) {\n        if (currentObject instanceof List) {\n            List list = (List) currentObject;\n            if (index >= 0) {\n                if (index >= list.size()) {\n                    return false;\n                }\n                list.remove(index);\n            } else {\n                int newIndex = list.size() + index;\n                \n                if (newIndex < 0) {\n                    return false;\n                }\n                \n                list.remove(newIndex);\n            }\n            return true;\n        }\n\n        Class<?> clazz = currentObject.getClass();\n        throw new JSONPathException(\"unsupported set operation.\" + clazz);\n    }\n\n    @SuppressWarnings({ \"rawtypes\", \"unchecked\" })\n    protected Collection<Object> getPropertyValues(final Object currentObject) {\n        if (currentObject == null) {\n            return null;\n        }\n\n        final Class<?> currentClass = currentObject.getClass();\n\n        JavaBeanSerializer beanSerializer = getJavaBeanSerializer(currentClass);\n\n        if (beanSerializer != null) {\n            try {\n                return beanSerializer.getFieldValues(currentObject);\n            } catch (Exception e) {\n                throw new JSONPathException(\"jsonpath error, path \" + path, e);\n            }\n        }\n\n        if (currentObject instanceof Map) {\n            Map map = (Map) currentObject;\n            return map.values();\n        }\n\n        if (currentObject instanceof Collection) {\n            return (Collection) currentObject;\n        }\n\n        throw new UnsupportedOperationException();\n    }\n\n    protected void deepGetObjects(final Object currentObject, List<Object> outValues) {\n        final Class<?> currentClass = currentObject.getClass();\n\n        JavaBeanSerializer beanSerializer = getJavaBeanSerializer(currentClass);\n\n        Collection collection = null;\n        if (beanSerializer != null) {\n            try {\n                collection = beanSerializer.getFieldValues(currentObject);\n                outValues.add(currentObject);\n            } catch (Exception e) {\n                throw new JSONPathException(\"jsonpath error, path \" + path, e);\n            }\n        } else if (currentObject instanceof Map) {\n            outValues.add(currentObject);\n            Map map = (Map) currentObject;\n            collection = map.values();\n        } else if (currentObject instanceof Collection) {\n            collection = (Collection) currentObject;\n        }\n\n        if (collection != null) {\n            for (Object fieldValue : collection) {\n                if (fieldValue == null || ParserConfig.isPrimitive2(fieldValue.getClass())) {\n                    // skip\n                } else {\n                    deepGetObjects(fieldValue, outValues);\n                }\n            }\n            return;\n        }\n\n        throw new UnsupportedOperationException(currentClass.getName());\n    }\n\n    protected void deepGetPropertyValues(final Object currentObject, List<Object> outValues) {\n        final Class<?> currentClass = currentObject.getClass();\n\n        JavaBeanSerializer beanSerializer = getJavaBeanSerializer(currentClass);\n\n        Collection collection = null;\n        if (beanSerializer != null) {\n            try {\n                collection = beanSerializer.getFieldValues(currentObject);\n            } catch (Exception e) {\n                throw new JSONPathException(\"jsonpath error, path \" + path, e);\n            }\n        } else if (currentObject instanceof Map) {\n            Map map = (Map) currentObject;\n            collection = map.values();\n        } else if (currentObject instanceof Collection) {\n            collection = (Collection) currentObject;\n        }\n\n        if (collection != null) {\n            for (Object fieldValue : collection) {\n                if (fieldValue == null || ParserConfig.isPrimitive2(fieldValue.getClass())) {\n                    outValues.add(fieldValue);\n                } else {\n                    deepGetPropertyValues(fieldValue, outValues);\n                }\n            }\n            return;\n        }\n\n        throw new UnsupportedOperationException(currentClass.getName());\n    }\n\n    static boolean eq(Object a, Object b) {\n        if (a == b) {\n            return true;\n        }\n\n        if (a == null || b == null) {\n            return false;\n        }\n\n        if (a.getClass() == b.getClass()) {\n            return a.equals(b);\n        }\n\n        if (a instanceof Number) {\n            if (b instanceof Number) {\n                return eqNotNull((Number) a, (Number) b);\n            }\n\n            return false;\n        }\n\n        return a.equals(b);\n    }\n\n    @SuppressWarnings(\"rawtypes\")\n    static boolean eqNotNull(Number a, Number b) {\n        Class clazzA = a.getClass();\n        boolean isIntA = isInt(clazzA);\n\n        Class clazzB = b.getClass();\n        boolean isIntB = isInt(clazzB);\n        \n        if (a instanceof BigDecimal) {\n            BigDecimal decimalA = (BigDecimal) a;\n            \n            if (isIntB) {\n                return decimalA.equals(BigDecimal.valueOf(TypeUtils.longExtractValue(b)));\n            }\n        }\n\n        if (isIntA) {\n            if (isIntB) {\n                return a.longValue() == b.longValue();\n            }\n            \n            if (b instanceof BigInteger) {\n                BigInteger bigIntB = (BigInteger) a;\n                BigInteger bigIntA = BigInteger.valueOf(a.longValue());\n                \n                return bigIntA.equals(bigIntB);\n            }\n        }\n        \n        if (isIntB) {\n            if (a instanceof BigInteger) {\n                BigInteger bigIntA = (BigInteger) a;\n                BigInteger bigIntB = BigInteger.valueOf(TypeUtils.longExtractValue(b));\n                \n                return bigIntA.equals(bigIntB);\n            }\n        }\n        \n\n        boolean isDoubleA = isDouble(clazzA);\n        boolean isDoubleB = isDouble(clazzB);\n\n        if ((isDoubleA && isDoubleB) || (isDoubleA && isIntB) || (isDoubleB && isIntA)) {\n            return a.doubleValue() == b.doubleValue();\n        }\n        \n\n        return false;\n    }\n\n    protected static boolean isDouble(Class<?> clazzA) {\n        return clazzA == Float.class || clazzA == Double.class;\n    }\n\n    protected static boolean isInt(Class<?> clazzA) {\n        return clazzA == Byte.class || clazzA == Short.class || clazzA == Integer.class || clazzA == Long.class;\n    }\n\n    final static long SIZE = 0x4dea9618e618ae3cL; // TypeUtils.fnv1a_64(\"size\");\n    final static long LENGTH = 0xea11573f1af59eb5L; // TypeUtils.fnv1a_64(\"length\");\n\n    protected Object getPropertyValue(Object currentObject, String propertyName, long propertyNameHash) {\n        if (currentObject == null) {\n            return null;\n        }\n\n        if (currentObject instanceof String) {\n            try {\n                JSONObject object = (JSONObject) JSON.parse((String) currentObject, parserConfig);\n                currentObject = object;\n            } catch (Exception ex) {\n                // skip\n            }\n        }\n\n        if (currentObject instanceof Map) {\n            Map map = (Map) currentObject;\n            Object val = map.get(propertyName);\n\n            if (val == null && (SIZE == propertyNameHash || LENGTH == propertyNameHash)) {\n                val = map.size();\n            }\n\n            return val;\n        }\n\n        final Class<?> currentClass = currentObject.getClass();\n\n        JavaBeanSerializer beanSerializer = getJavaBeanSerializer(currentClass);\n        if (beanSerializer != null) {\n            try {\n                return beanSerializer.getFieldValue(currentObject, propertyName, propertyNameHash, false);\n            } catch (Exception e) {\n                throw new JSONPathException(\"jsonpath error, path \" + path + \", segement \" + propertyName, e);\n            }\n        }\n\n        if (currentObject instanceof List) {\n            List list = (List) currentObject;\n\n            if (SIZE == propertyNameHash || LENGTH == propertyNameHash) {\n                return list.size();\n            }\n\n            List<Object> fieldValues = null;\n\n            for (int i = 0; i < list.size(); ++i) {\n                Object obj = list.get(i);\n\n                //\n                if (obj == list) {\n                    if (fieldValues == null) {\n                        fieldValues = new JSONArray(list.size());\n                    }\n                    fieldValues.add(obj);\n                    continue;\n                }\n\n                Object itemValue = getPropertyValue(obj, propertyName, propertyNameHash);\n                if (itemValue instanceof Collection) {\n                    Collection collection = (Collection) itemValue;\n                    if (fieldValues == null) {\n                        fieldValues = new JSONArray(list.size());\n                    }\n                    fieldValues.addAll(collection);\n                } else if (itemValue != null || !ignoreNullValue) {\n                    if (fieldValues == null) {\n                        fieldValues = new JSONArray(list.size());\n                    }\n                    fieldValues.add(itemValue);\n                }\n            }\n\n            if (fieldValues == null) {\n                fieldValues = Collections.emptyList();\n            }\n\n            return fieldValues;\n        }\n\n        if (currentObject instanceof Object[]) {\n            Object[] array = (Object[]) currentObject;\n\n            if (SIZE == propertyNameHash || LENGTH == propertyNameHash) {\n                return array.length;\n            }\n\n            List<Object> fieldValues = new JSONArray(array.length);\n\n            for (int i = 0; i < array.length; ++i) {\n                Object obj = array[i];\n\n                //\n                if (obj == array) {\n                    fieldValues.add(obj);\n                    continue;\n                }\n\n                Object itemValue = getPropertyValue(obj, propertyName, propertyNameHash);\n                if (itemValue instanceof Collection) {\n                    Collection collection = (Collection) itemValue;\n                    fieldValues.addAll(collection);\n                } else if (itemValue != null || !ignoreNullValue) {\n                    fieldValues.add(itemValue);\n                }\n            }\n\n            return fieldValues;\n        }\n\n        if (currentObject instanceof Enum) {\n            final long NAME = 0xc4bcadba8e631b86L; // TypeUtils.fnv1a_64(\"name\");\n            final long ORDINAL = 0xf1ebc7c20322fc22L; //TypeUtils.fnv1a_64(\"ordinal\");\n\n            Enum e = (Enum) currentObject;\n            if (NAME == propertyNameHash) {\n                return e.name();\n            }\n\n            if (ORDINAL == propertyNameHash) {\n                return e.ordinal();\n            }\n        }\n\n        if (currentObject instanceof Calendar) {\n            final long YEAR = 0x7c64634977425edcL; //TypeUtils.fnv1a_64(\"year\");\n            final long MONTH = 0xf4bdc3936faf56a5L; //TypeUtils.fnv1a_64(\"month\");\n            final long DAY = 0xca8d3918f4578f1dL; // TypeUtils.fnv1a_64(\"day\");\n            final long HOUR = 0x407efecc7eb5764fL; //TypeUtils.fnv1a_64(\"hour\");\n            final long MINUTE = 0x5bb2f9bdf2fad1e9L; //TypeUtils.fnv1a_64(\"minute\");\n            final long SECOND = 0xa49985ef4cee20bdL; //TypeUtils.fnv1a_64(\"second\");\n\n            Calendar e = (Calendar) currentObject;\n            if (YEAR == propertyNameHash) {\n                return e.get(Calendar.YEAR);\n            }\n            if (MONTH == propertyNameHash) {\n                return e.get(Calendar.MONTH);\n            }\n            if (DAY == propertyNameHash) {\n                return e.get(Calendar.DAY_OF_MONTH);\n            }\n            if (HOUR == propertyNameHash) {\n                return e.get(Calendar.HOUR_OF_DAY);\n            }\n            if (MINUTE == propertyNameHash) {\n                return e.get(Calendar.MINUTE);\n            }\n            if (SECOND == propertyNameHash) {\n                return e.get(Calendar.SECOND);\n            }\n        }\n\n        return null;\n        //throw new JSONPathException(\"jsonpath error, path \" + path + \", segement \" + propertyName);\n    }\n    \n    @SuppressWarnings(\"rawtypes\")\n    protected void deepScan(final Object currentObject, final String propertyName, List<Object> results) {\n        if (currentObject == null) {\n            return;\n        }\n\n        if (currentObject instanceof Map) {\n            Map<?, ?> map = (Map<?, ?>) currentObject;\n\n            for (Map.Entry entry : map.entrySet()) {\n                Object val = entry.getValue();\n\n                if (propertyName.equals(entry.getKey())) {\n                    if (val instanceof Collection) {\n                        results.addAll((Collection) val);\n                    } else {\n                        results.add(val);\n                    }\n                    continue;\n                }\n\n                if (val == null || ParserConfig.isPrimitive2(val.getClass())) {\n                    continue;\n                }\n\n                deepScan(val, propertyName, results);\n            }\n\n            return;\n        }\n\n        if (currentObject instanceof Collection) {\n            Iterator iterator = ((Collection) currentObject).iterator();\n            while (iterator.hasNext()) {\n                Object next = iterator.next();\n                if (ParserConfig.isPrimitive2(next.getClass())) {\n                    continue;\n                }\n                deepScan(next, propertyName, results);\n            }\n            return;\n        }\n\n        final Class<?> currentClass = currentObject.getClass();\n\n        JavaBeanSerializer beanSerializer = getJavaBeanSerializer(currentClass);\n        if (beanSerializer != null) {\n            try {\n                FieldSerializer fieldDeser = beanSerializer.getFieldSerializer(propertyName);\n                if (fieldDeser != null) {\n                    try {\n                        Object val = fieldDeser.getPropertyValueDirect(currentObject);\n                        results.add(val);\n                    } catch (InvocationTargetException ex) {\n                        throw new JSONException(\"getFieldValue error.\" + propertyName, ex);\n                    } catch (IllegalAccessException ex) {\n                        throw new JSONException(\"getFieldValue error.\" + propertyName, ex);\n                    }\n                    return;\n                }\n                List<Object> fieldValues = beanSerializer.getFieldValues(currentObject);\n                for (Object val : fieldValues) {\n                    deepScan(val, propertyName, results);\n                }\n                return;\n            } catch (Exception e) {\n                throw new JSONPathException(\"jsonpath error, path \" + path + \", segement \" + propertyName, e);\n            }\n        }\n\n        if (currentObject instanceof List) {\n            List list = (List) currentObject;\n\n            for (int i = 0; i < list.size(); ++i) {\n                Object val = list.get(i);\n                deepScan(val, propertyName, results);\n            }\n            return;\n        }\n    }\n\n    protected void deepSet(final Object currentObject, final String propertyName, long propertyNameHash, Object value) {\n        if (currentObject == null) {\n            return;\n        }\n\n        if (currentObject instanceof Map) {\n            Map map = (Map) currentObject;\n\n            if (map.containsKey(propertyName)) {\n                Object val = map.get(propertyName);\n                map.put(propertyName, value);\n                return;\n            }\n\n            for (Object val : map.values()) {\n                deepSet(val, propertyName, propertyNameHash, value);\n            }\n            return;\n        }\n\n        final Class<?> currentClass = currentObject.getClass();\n\n        JavaBeanDeserializer beanDeserializer = getJavaBeanDeserializer(currentClass);\n        if (beanDeserializer != null) {\n            try {\n                FieldDeserializer fieldDeser = beanDeserializer.getFieldDeserializer(propertyName);\n                if (fieldDeser != null) {\n                    fieldDeser.setValue(currentObject, value);\n                    return;\n                }\n\n                JavaBeanSerializer beanSerializer = getJavaBeanSerializer(currentClass);\n                List<Object> fieldValues = beanSerializer.getObjectFieldValues(currentObject);\n                for (Object val : fieldValues) {\n                    deepSet(val, propertyName, propertyNameHash, value);\n                }\n                return;\n            } catch (Exception e) {\n                throw new JSONPathException(\"jsonpath error, path \" + path + \", segement \" + propertyName, e);\n            }\n        }\n\n        if (currentObject instanceof List) {\n            List list = (List) currentObject;\n\n            for (int i = 0; i < list.size(); ++i) {\n                Object val = list.get(i);\n                deepSet(val, propertyName, propertyNameHash, value);\n            }\n            return;\n        }\n    }\n\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    protected boolean setPropertyValue(Object parent, String name, long propertyNameHash, Object value) {\n        if (parent instanceof Map) {\n            ((Map) parent).put(name, value);\n            return true;\n        }\n\n        if (parent instanceof List) {\n            for (Object element : (List) parent) {\n                if (element == null) {\n                    continue;\n                }\n                setPropertyValue(element, name, propertyNameHash, value);\n            }\n            return true;\n        }\n\n        ObjectDeserializer deserializer = parserConfig.getDeserializer(parent.getClass());\n\n        JavaBeanDeserializer beanDeserializer = null;\n        if (deserializer instanceof JavaBeanDeserializer) {\n            beanDeserializer = (JavaBeanDeserializer) deserializer;\n        }\n\n        if (beanDeserializer != null) {\n            FieldDeserializer fieldDeserializer = beanDeserializer.getFieldDeserializer(propertyNameHash);\n            if (fieldDeserializer == null) {\n                return false;\n            }\n\n            if (value != null && value.getClass() != fieldDeserializer.fieldInfo.fieldClass) {\n                value = TypeUtils.cast(value, fieldDeserializer.fieldInfo.fieldType, parserConfig);\n            }\n\n            fieldDeserializer.setValue(parent, value);\n            return true;\n        }\n\n        throw new UnsupportedOperationException();\n    }\n    \n    @SuppressWarnings({\"rawtypes\" })\n    protected boolean removePropertyValue(Object parent, String name, boolean deep) {\n        if (parent instanceof Map) {\n            Object origin = ((Map) parent).remove(name);\n            boolean found = origin != null;\n\n            if (deep) {\n                for (Object item : ((Map) parent).values()) {\n                    removePropertyValue(item, name, deep);\n                }\n            }\n\n            return found;\n        }\n\n        ObjectDeserializer deserializer = parserConfig.getDeserializer(parent.getClass());\n\n        JavaBeanDeserializer beanDeserializer = null;\n        if (deserializer instanceof JavaBeanDeserializer) {\n            beanDeserializer = (JavaBeanDeserializer) deserializer;\n        }\n\n        if (beanDeserializer != null) {\n            FieldDeserializer fieldDeserializer = beanDeserializer.getFieldDeserializer(name);\n\n            boolean found = false;\n            if (fieldDeserializer != null) {\n                fieldDeserializer.setValue(parent, null);\n                found = true;\n            }\n\n            if (deep) {\n                Collection<Object> propertyValues = this.getPropertyValues(parent);\n                for (Object item : propertyValues) {\n                    if (item == null) {\n                        continue;\n                    }\n                    removePropertyValue(item, name, deep);\n                }\n            }\n\n            return found;\n        }\n\n        if (deep) {\n            return false;\n        }\n\n        throw new UnsupportedOperationException();\n    }\n\n    protected JavaBeanSerializer getJavaBeanSerializer(final Class<?> currentClass) {\n        JavaBeanSerializer beanSerializer = null;\n        {\n            ObjectSerializer serializer = serializeConfig.getObjectWriter(currentClass);\n            if (serializer instanceof JavaBeanSerializer) {\n                beanSerializer = (JavaBeanSerializer) serializer;\n            }\n        }\n        return beanSerializer;\n    }\n\n    protected JavaBeanDeserializer getJavaBeanDeserializer(final Class<?> currentClass) {\n        JavaBeanDeserializer beanDeserializer = null;\n        {\n            ObjectDeserializer deserializer = parserConfig.getDeserializer(currentClass);\n            if (deserializer instanceof JavaBeanDeserializer) {\n                beanDeserializer = (JavaBeanDeserializer) deserializer;\n            }\n        }\n        return beanDeserializer;\n    }\n\n    @SuppressWarnings(\"rawtypes\")\n    int evalSize(Object currentObject) {\n        if (currentObject == null) {\n            return -1;\n        }\n\n        if (currentObject instanceof Collection) {\n            return ((Collection) currentObject).size();\n        }\n\n        if (currentObject instanceof Object[]) {\n            return ((Object[]) currentObject).length;\n        }\n\n        if (currentObject.getClass().isArray()) {\n            return Array.getLength(currentObject);\n        }\n\n        if (currentObject instanceof Map) {\n            int count = 0;\n\n            for (Object value : ((Map) currentObject).values()) {\n                if (value != null) {\n                    count++;\n                }\n            }\n            return count;\n        }\n\n        JavaBeanSerializer beanSerializer = getJavaBeanSerializer(currentObject.getClass());\n\n        if (beanSerializer == null) {\n            return -1;\n        }\n\n        try {\n            return beanSerializer.getSize(currentObject);\n        } catch (Exception e) {\n            throw new JSONPathException(\"evalSize error : \" + path, e);\n        }\n    }\n\n    @SuppressWarnings({\"rawtypes\", \"unchecked\"})\n    Set<?> evalKeySet(Object currentObject) {\n        if (currentObject == null) {\n            return null;\n        }\n\n        if (currentObject instanceof Map) {\n            // For performance reasons return keySet directly, without filtering null-value key.\n            return ((Map)currentObject).keySet();\n        }\n\n        if (currentObject instanceof Collection || currentObject instanceof Object[]\n            || currentObject.getClass().isArray()) {\n            return null;\n        }\n\n        JavaBeanSerializer beanSerializer = getJavaBeanSerializer(currentObject.getClass());\n        if (beanSerializer == null) {\n            return null;\n        }\n\n        try {\n            return beanSerializer.getFieldNames(currentObject);\n        } catch (Exception e) {\n            throw new JSONPathException(\"evalKeySet error : \" + path, e);\n        }\n    }\n\n    public String toJSONString() {\n        return JSON.toJSONString(path);\n    }\n\n    public static Object reserveToArray(Object object, String... paths) {\n        JSONArray reserved = new JSONArray();\n\n        if (paths == null || paths.length == 0) {\n            return reserved;\n        }\n\n        for (String item : paths) {\n            JSONPath path = JSONPath.compile(item);\n            path.init();\n\n            Object value = path.eval(object);\n            reserved.add(value);\n        }\n\n        return reserved;\n    }\n\n    public static Object reserveToObject(Object object, String... paths) {\n        if (paths == null || paths.length == 0) {\n            return object;\n        }\n\n        JSONObject reserved = new JSONObject(true);\n        for (String item : paths) {\n            JSONPath path = JSONPath.compile(item);\n            path.init();\n            Segment lastSegement = path.segments[path.segments.length - 1];\n            if (lastSegement instanceof PropertySegment) {\n                Object value = path.eval(object);\n                if (value == null) {\n                    continue;\n                }\n                path.set(reserved, value);\n            } else {\n                // skip\n            }\n        }\n\n        return reserved;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/JSONPathException.java",
    "content": "package com.alibaba.fastjson;\n\n@SuppressWarnings(\"serial\")\npublic class JSONPathException extends JSONException {\n\n    public JSONPathException(String message){\n        super(message);\n    }\n    \n    public JSONPathException(String message, Throwable cause){\n        super(message, cause);\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/JSONReader.java",
    "content": "package com.alibaba.fastjson;\n\nimport static com.alibaba.fastjson.JSONStreamContext.ArrayValue;\nimport static com.alibaba.fastjson.JSONStreamContext.PropertyKey;\nimport static com.alibaba.fastjson.JSONStreamContext.PropertyValue;\nimport static com.alibaba.fastjson.JSONStreamContext.StartArray;\nimport static com.alibaba.fastjson.JSONStreamContext.StartObject;\n\nimport java.io.Closeable;\nimport java.io.Reader;\nimport java.lang.reflect.Type;\nimport java.util.Locale;\nimport java.util.Map;\nimport java.util.TimeZone;\n\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.JSONLexer;\nimport com.alibaba.fastjson.parser.JSONReaderScanner;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.util.TypeUtils;\n\npublic class JSONReader implements Closeable {\n\n    private final DefaultJSONParser parser;\n    private JSONStreamContext       context;\n    private transient JSONStreamContext lastContext;\n\n    public JSONReader(Reader reader){\n        this(reader, new Feature[0]);\n    }\n    \n    public JSONReader(Reader reader, Feature... features){\n        this(new JSONReaderScanner(reader));\n        for (Feature feature : features) {\n            this.config(feature, true);\n        }\n    }\n\n    public JSONReader(JSONLexer lexer){\n        this(new DefaultJSONParser(lexer));\n    }\n\n    public JSONReader(DefaultJSONParser parser){\n        this.parser = parser;\n    }\n    \n    public void setTimzeZone(TimeZone timezone) {\n        this.parser.lexer.setTimeZone(timezone);\n    }\n    \n    public void setLocale(Locale locale) {\n        this.parser.lexer.setLocale(locale);\n    }\n\n    public void config(Feature feature, boolean state) {\n        this.parser.config(feature, state);\n    }\n    \n    public Locale getLocal() {\n        return this.parser.lexer.getLocale();\n    }\n    \n    public TimeZone getTimzeZone() {\n        return this.parser.lexer.getTimeZone();\n    }\n\n    public void startObject() {\n        if (context == null) {\n            context = new JSONStreamContext(null, JSONStreamContext.StartObject);\n        } else {\n            startStructure();\n            if (lastContext != null\n                    && lastContext.parent == context) {\n                context = lastContext;\n                if (context.state != JSONStreamContext.StartObject) {\n                    context.state = JSONStreamContext.StartObject;\n                }\n            } else {\n                context = new JSONStreamContext(context, JSONStreamContext.StartObject);\n            }\n        }\n\n        this.parser.accept(JSONToken.LBRACE, JSONToken.IDENTIFIER);\n    }\n\n    public void endObject() {\n        this.parser.accept(JSONToken.RBRACE);\n        endStructure();\n    }\n\n    public void startArray() {\n        if (context == null) {\n            context = new JSONStreamContext(null, StartArray);\n        } else {\n            startStructure();\n\n            context = new JSONStreamContext(context, StartArray);\n        }\n        this.parser.accept(JSONToken.LBRACKET);\n    }\n\n    public void endArray() {\n        this.parser.accept(JSONToken.RBRACKET);\n        endStructure();\n    }\n\n    private void startStructure() {\n        final int state = context.state;\n        switch (state) {\n            case PropertyKey:\n                parser.accept(JSONToken.COLON);\n                break;\n            case PropertyValue:\n            case ArrayValue:\n                parser.accept(JSONToken.COMMA);\n                break;\n            case StartArray:\n            case StartObject:\n                break;\n            default:\n                throw new JSONException(\"illegal state : \" + context.state);\n        }\n    }\n\n    private void endStructure() {\n        lastContext = context;\n        context = context.parent;\n\n        if (context == null) {\n            return;\n        }\n        \n        final int state = context.state;\n        int newState = -1;\n        switch (state) {\n            case PropertyKey:\n                newState = PropertyValue;\n                break;\n            case StartArray:\n                newState = ArrayValue;\n                break;\n            case PropertyValue:\n            case StartObject:\n                newState = PropertyKey;\n                break;\n            default:\n                break;\n        }\n        if (newState != -1) {\n            context.state = newState;\n        }\n    }\n\n    public boolean hasNext() {\n        if (context == null) {\n            throw new JSONException(\"context is null\");\n        }\n\n        final int token = parser.lexer.token();\n        final int state = context.state;\n        switch (state) {\n            case StartArray:\n            case ArrayValue:\n                return token != JSONToken.RBRACKET;\n            case StartObject:\n            case PropertyValue:\n                return token != JSONToken.RBRACE;\n            default:\n                throw new JSONException(\"illegal state : \" + state);\n        }\n    }\n\n    public int peek() {\n        return parser.lexer.token();\n    }\n\n    public void close() {\n        parser.close();\n    }\n\n    public Integer readInteger() {\n        Object object;\n        if (context == null) {\n            object = parser.parse();\n        } else {\n            readBefore();\n            object = parser.parse();\n            readAfter();\n        }\n\n        return TypeUtils.castToInt(object);\n    }\n\n    public Long readLong() {\n        Object object;\n        if (context == null) {\n            object = parser.parse();\n        } else {\n            readBefore();\n            object = parser.parse();\n            readAfter();\n        }\n\n        return TypeUtils.castToLong(object);\n    }\n\n    public String readString() {\n        Object object;\n        if (context == null) {\n            object = parser.parse();\n        } else {\n            readBefore();\n            JSONLexer lexer = parser.lexer;\n            if (context.state == JSONStreamContext.StartObject && lexer.token() == JSONToken.IDENTIFIER) {\n                object = lexer.stringVal();\n                lexer.nextToken();\n            } else {\n                object = parser.parse();\n            }\n            readAfter();\n        }\n\n        return TypeUtils.castToString(object);\n    }\n    \n    public <T> T readObject(TypeReference<T> typeRef) {\n        return readObject(typeRef.getType());\n    }\n\n    public <T> T readObject(Type type) {\n        if (context == null) {\n            return parser.parseObject(type);\n        }\n\n        readBefore();\n        T object = parser.parseObject(type);\n        readAfter();\n        return object;\n    }\n\n    public <T> T readObject(Class<T> type) {\n        if (context == null) {\n            return parser.parseObject(type);\n        }\n\n        readBefore();\n        T object = parser.parseObject(type);\n        parser.handleResovleTask(object);\n        readAfter();\n        return object;\n    }\n\n    public void readObject(Object object) {\n        if (context == null) {\n            parser.parseObject(object);\n            return;\n        }\n\n        readBefore();\n        parser.parseObject(object);\n        readAfter();\n    }\n\n    public Object readObject() {\n        if (context == null) {\n            return parser.parse();\n        }\n\n        readBefore();\n        Object object;\n        switch (context.state) {\n            case StartObject:\n            case PropertyValue:\n                object = parser.parseKey();\n                break;\n            default:\n                object = parser.parse();\n                break;\n        }\n\n        readAfter();\n        return object;\n    }\n\n    @SuppressWarnings(\"rawtypes\")\n    public Object readObject(Map object) {\n        if (context == null) {\n            return parser.parseObject(object);\n        }\n\n        readBefore();\n        Object value = parser.parseObject(object);\n        readAfter();\n        return value;\n    }\n\n    private void readBefore() {\n        int state = context.state;\n        // before\n        switch (state) {\n            case PropertyKey:\n                parser.accept(JSONToken.COLON);\n                break;\n            case PropertyValue:\n                parser.accept(JSONToken.COMMA, JSONToken.IDENTIFIER);\n                break;\n            case ArrayValue:\n                parser.accept(JSONToken.COMMA);\n                break;\n            case StartObject:\n                break;\n            case StartArray:\n                break;\n            default:\n                throw new JSONException(\"illegal state : \" + state);\n        }\n    }\n\n    private void readAfter() {\n        int state = context.state;\n        int newStat = -1;\n        switch (state) {\n            case StartObject:\n                newStat = PropertyKey;\n                break;\n            case PropertyKey:\n                newStat = PropertyValue;\n                break;\n            case PropertyValue:\n                newStat = PropertyKey;\n                break;\n            case ArrayValue:\n                break;\n            case StartArray:\n                newStat = ArrayValue;\n                break;\n            default:\n                throw new JSONException(\"illegal state : \" + state);\n        }\n        if (newStat != -1) {\n            context.state = newStat;\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/JSONStreamAware.java",
    "content": "/*\r\n * Copyright 1999-2017 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson;\r\n\r\nimport java.io.IOException;\r\n\r\n/**\r\n * Beans that support customized output of JSON text to a writer shall implement this interface.\r\n * \r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic interface JSONStreamAware {\r\n\r\n    /**\r\n     * write JSON string to out.\r\n     */\r\n    void writeJSONString(Appendable out) throws IOException;\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/JSONStreamContext.java",
    "content": "package com.alibaba.fastjson;\n\nclass JSONStreamContext {\n\n    final static int                  StartObject   = 1001;\n    final static int                  PropertyKey   = 1002;\n    final static int                  PropertyValue = 1003;\n    final static int                  StartArray    = 1004;\n    final static int                  ArrayValue    = 1005;\n\n    protected final JSONStreamContext parent;\n\n    protected int                     state;\n\n    public JSONStreamContext(JSONStreamContext parent, int state){\n        this.parent = parent;\n        this.state = state;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/JSONValidator.java",
    "content": "package com.alibaba.fastjson;\n\nimport java.io.Closeable;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.Reader;\n\npublic abstract class JSONValidator implements Cloneable, Closeable {\n    public enum Type {\n        Object, Array, Value\n    }\n\n    protected boolean eof;\n    protected int pos = -1;\n    protected char ch;\n    protected Type type;\n    private Boolean validateResult;\n\n    protected int count = 0;\n    protected boolean supportMultiValue = false;\n\n    public static JSONValidator fromUtf8(byte[] jsonBytes) {\n        return new UTF8Validator(jsonBytes);\n    }\n\n    public static JSONValidator fromUtf8(InputStream is) {\n        return new UTF8InputStreamValidator(is);\n    }\n\n    public static JSONValidator from(String jsonStr) {\n        return new UTF16Validator(jsonStr);\n    }\n\n    public static JSONValidator from(Reader r) {\n        return new ReaderValidator(r);\n    }\n\n    public boolean isSupportMultiValue() {\n        return supportMultiValue;\n    }\n\n    public JSONValidator setSupportMultiValue(boolean supportMultiValue) {\n        this.supportMultiValue = supportMultiValue;\n        return this;\n    }\n\n    public Type getType() {\n        if (type == null) {\n            validate();\n        }\n\n        return type;\n    }\n\n    abstract void next();\n\n    public boolean validate() {\n        if (validateResult != null) {\n            return validateResult;\n        }\n\n        for (;;) {\n            if (!any()) {\n                validateResult = false;\n                return false;\n            }\n            skipWhiteSpace();\n\n            count++;\n            if (eof) {\n                validateResult = true;\n                return true;\n            }\n\n            if (supportMultiValue) {\n                skipWhiteSpace();\n                if (eof) {\n                    break;\n                }\n                continue;\n            } else {\n                validateResult = false;\n                return false;\n            }\n        }\n\n        validateResult = true;\n        return true;\n    }\n\n    public void close() throws IOException {\n\n    }\n\n    private boolean any() {\n        switch (ch) {\n            case '{':\n                next();\n\n                while (isWhiteSpace(ch)) {\n                    next();\n                }\n\n                if (ch == '}') {\n                    next();\n                    type = Type.Object;\n                    return true;\n                }\n\n                for (;;) {\n                    if (ch == '\"') {\n                        fieldName();\n                    } else {\n                        return false;\n                    }\n\n                    skipWhiteSpace();\n                    if (ch == ':') {\n                        next();\n                    } else {\n                        return false;\n                    }\n                    skipWhiteSpace();\n\n                    if (!any()) {\n                        return false;\n                    }\n\n                    // kv 结束时，只能是 \",\" 或 \"}\"\n                    skipWhiteSpace();\n                    if (ch == ',') {\n                        next();\n                        skipWhiteSpace();\n                    } else if (ch == '}') {\n                        next();\n                        type = Type.Object;\n                        return true;\n                    } else {\n                        return false;\n                    }\n                }\n            case '[':\n                next();\n                skipWhiteSpace();\n\n                if (ch == ']') {\n                    next();\n                    type = Type.Array;\n                    return true;\n                }\n\n                for (;;) {\n                    if (!any()) {\n                        return false;\n                    }\n\n                    skipWhiteSpace();\n                    if (ch == ',') {\n                        next();\n                        skipWhiteSpace();\n                    } else if (ch == ']') {\n                        next();\n                        type = Type.Array;\n                        return true;\n                    }\n                    else {\n                        return false;\n                    }\n                }\n            case '0':\n            case '1':\n            case '2':\n            case '3':\n            case '4':\n            case '5':\n            case '6':\n            case '7':\n            case '8':\n            case '9':\n            case '+':\n            case '-':\n                if (ch == '-' || ch == '+') {\n                    next();\n                    skipWhiteSpace();\n                    if (ch < '0' || ch > '9') {\n                        return false;\n                    }\n                }\n\n                do {\n                    next();\n                } while (ch >= '0' && ch <= '9');\n\n                if (ch == '.') {\n                    next();\n                    // bug fix: 0.e7 should not pass the test\n                    if (ch < '0' || ch > '9') {\n                        return false;\n                    }\n                    while (ch >= '0' && ch <= '9') {\n                        next();\n                    }\n                }\n\n                if (ch == 'e' || ch == 'E') {\n                    next();\n                    if (ch == '-' || ch == '+') {\n                        next();\n                    }\n\n                    if (ch >= '0' && ch <= '9') {\n                        next();\n                    }\n                    else {\n                        return false;\n                    }\n\n                    while (ch >= '0' && ch <= '9') {\n                        next();\n                    }\n                }\n\n                type = Type.Value;\n                break;\n            case '\"':\n                next();\n                for (;;) {\n                    if (eof) {\n                        return false;\n                    }\n\n                    if (ch == '\\\\') {\n                        next();\n                        if (ch == 'u') {\n                            next();\n\n                            next();\n                            next();\n                            next();\n                            next();\n                        } else {\n                            next();\n                        }\n                    } else if (ch == '\"') {\n                        next();\n                        type = Type.Value;\n                        return true;\n                    } else {\n                        next();\n                    }\n                }\n            case 't':\n                next();\n\n                if (ch != 'r') {\n                    return false;\n                }\n                next();\n\n                if (ch != 'u') {\n                    return false;\n                }\n                next();\n\n                if (ch != 'e') {\n                    return false;\n                }\n                next();\n\n                if (isWhiteSpace(ch) || ch == ',' || ch == ']' || ch == '}' || ch == '\\0') {\n                    type = Type.Value;\n                    return true;\n                }\n                return false;\n            case 'f':\n                next();\n\n                if (ch != 'a') {\n                    return false;\n                }\n                next();\n\n                if (ch != 'l') {\n                    return false;\n                }\n                next();\n\n                if (ch != 's') {\n                    return false;\n                }\n                next();\n\n                if (ch != 'e') {\n                    return false;\n                }\n                next();\n\n                if (isWhiteSpace(ch) || ch == ',' || ch == ']' || ch == '}' || ch == '\\0') {\n                    type = Type.Value;\n                    return true;\n                }\n                return false;\n            case 'n':\n                next();\n\n                if (ch != 'u') {\n                    return false;\n                }\n                next();\n\n                if (ch != 'l') {\n                    return false;\n                }\n                next();\n\n                if (ch != 'l') {\n                    return false;\n                }\n                next();\n\n                if (isWhiteSpace(ch) || ch == ',' || ch == ']' || ch == '}' || ch == '\\0') {\n                    type = Type.Value;\n                    return true;\n                }\n                return false;\n            default:\n                return false;\n        }\n        return true;\n    }\n\n    protected void fieldName()\n    {\n        next();\n        for (; ; ) {\n            if (ch == '\\\\') {\n                next();\n\n                if (ch == 'u') {\n                    next();\n\n                    next();\n                    next();\n                    next();\n                    next();\n                } else {\n                    next();\n                }\n            }\n            else if (ch == '\"') {\n                next();\n                break;\n            }\n            else {\n                next();\n            }\n        }\n    }\n\n    protected boolean string()\n    {\n        next();\n        for (; !eof; ) {\n            if (ch == '\\\\') {\n                next();\n\n                if (ch == 'u') {\n                    next();\n\n                    next();\n                    next();\n                    next();\n                    next();\n                } else {\n                    next();\n                }\n            }\n            else if (ch == '\"') {\n                next();\n                return true;\n            }\n            else {\n                next();\n            }\n        }\n\n        return false;\n    }\n\n    void skipWhiteSpace() {\n        while (isWhiteSpace(ch)) {\n            next();\n        }\n    }\n\n    static final boolean isWhiteSpace(char ch) {\n        return ch == ' '\n                || ch == '\\t'\n                || ch == '\\r'\n                || ch == '\\n'\n                || ch == '\\f'\n                || ch == '\\b'\n                ;\n    }\n\n    static class UTF8Validator extends JSONValidator {\n        private final byte[] bytes;\n\n        public UTF8Validator(byte[] bytes) {\n            this.bytes = bytes;\n            next();\n            skipWhiteSpace();\n        }\n\n        void next() {\n            ++pos;\n\n            if (pos >= bytes.length) {\n                ch = '\\0';\n                eof = true;\n            } else {\n                ch = (char) bytes[pos];\n            }\n        }\n    }\n\n    static class UTF8InputStreamValidator extends JSONValidator {\n        private final static ThreadLocal<byte[]> bufLocal = new ThreadLocal<byte[]>();\n\n        private final InputStream is;\n        private byte[] buf;\n        private int end = -1;\n        private int readCount = 0;\n\n        public UTF8InputStreamValidator(InputStream is) {\n            this.is = is;\n            buf = bufLocal.get();\n            if (buf != null) {\n                bufLocal.set(null);\n            } else {\n                buf = new byte[1024 * 8];\n            }\n\n            next();\n            skipWhiteSpace();\n        }\n\n        void next() {\n            if (pos < end) {\n                ch = (char) buf[++pos];\n            } else {\n                if (!eof) {\n                    int len;\n                    try {\n                        len = is.read(buf, 0, buf.length);\n                        readCount++;\n                    } catch (IOException ex) {\n                        throw new JSONException(\"read error\");\n                    }\n\n                    if (len > 0) {\n                        ch = (char) buf[0];\n                        pos = 0;\n                        end = len - 1;\n                    }\n                    else if (len == -1) {\n                        pos = 0;\n                        end = 0;\n                        buf = null;\n                        ch = '\\0';\n                        eof = true;\n                    } else {\n                        pos = 0;\n                        end = 0;\n                        buf = null;\n                        ch = '\\0';\n                        eof = true;\n                        throw new JSONException(\"read error\");\n                    }\n                }\n            }\n        }\n\n        public void close() throws IOException {\n            bufLocal.set(buf);\n            is.close();\n        }\n    }\n\n    static class UTF16Validator extends JSONValidator {\n        private final String str;\n\n        public UTF16Validator(String str) {\n            this.str = str;\n            next();\n            skipWhiteSpace();\n        }\n\n        void next() {\n            ++pos;\n\n            if (pos >= str.length()) {\n                ch = '\\0';\n                eof = true;\n            } else {\n                ch = str.charAt(pos);\n            }\n        }\n\n        protected final void fieldName()\n        {\n            for (int i = pos + 1; i < str.length(); ++i) {\n                char ch = str.charAt(i);\n                if (ch == '\\\\') {\n                    break;\n                }\n                if (ch == '\\\"') {\n                    this.ch = str.charAt(i + 1);\n                    pos = i + 1;\n                    return;\n                }\n            }\n\n            next();\n            for (; ; ) {\n                if (ch == '\\\\') {\n                    next();\n\n                    if (ch == 'u') {\n                        next();\n\n                        next();\n                        next();\n                        next();\n                        next();\n                    } else {\n                        next();\n                    }\n                }\n                else if (ch == '\"') {\n                    next();\n                    break;\n                }\n                else if(eof){\n                    break;\n                }else {\n                    next();\n                }\n            }\n        }\n\n    }\n\n    static class ReaderValidator extends JSONValidator {\n        private final static ThreadLocal<char[]> bufLocal = new ThreadLocal<char[]>();\n\n        final Reader r;\n\n        private char[] buf;\n        private int end = -1;\n        private int readCount = 0;\n\n        ReaderValidator(Reader r) {\n            this.r = r;\n            buf = bufLocal.get();\n            if (buf != null) {\n                bufLocal.set(null);\n            } else {\n                buf = new char[1024 * 8];\n            }\n\n            next();\n            skipWhiteSpace();\n        }\n\n        void next() {\n            if (pos < end) {\n                ch = buf[++pos];\n            } else {\n                if (!eof) {\n                    int len;\n                    try {\n                        len = r.read(buf, 0, buf.length);\n                        readCount++;\n                    } catch (IOException ex) {\n                        throw new JSONException(\"read error\");\n                    }\n\n                    if (len > 0) {\n                        ch = buf[0];\n                        pos = 0;\n                        end = len - 1;\n                    }\n                    else if (len == -1) {\n                        pos = 0;\n                        end = 0;\n                        buf = null;\n                        ch = '\\0';\n                        eof = true;\n                    } else {\n                        pos = 0;\n                        end = 0;\n                        buf = null;\n                        ch = '\\0';\n                        eof = true;\n                        throw new JSONException(\"read error\");\n                    }\n                }\n            }\n        }\n\n        public void close() throws IOException {\n            bufLocal.set(buf);\n            r.close();\n        }\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/JSONWriter.java",
    "content": "package com.alibaba.fastjson;\n\nimport java.io.Closeable;\nimport java.io.Flushable;\nimport java.io.IOException;\nimport java.io.Writer;\n\nimport static com.alibaba.fastjson.JSONStreamContext.*;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class JSONWriter implements Closeable, Flushable {\n\n    private SerializeWriter   writer;\n\n    private JSONSerializer    serializer;\n\n    private JSONStreamContext context;\n\n    public JSONWriter(Writer out){\n        writer = new SerializeWriter(out);\n        serializer = new JSONSerializer(writer);\n    }\n\n    public void config(SerializerFeature feature, boolean state) {\n        this.writer.config(feature, state);\n    }\n\n    public void startObject() {\n        if (context != null) {\n            beginStructure();\n        }\n        context = new JSONStreamContext(context, JSONStreamContext.StartObject);\n        writer.write('{');\n    }\n\n    public void endObject() {\n        writer.write('}');\n        endStructure();\n    }\n\n    public void writeKey(String key) {\n        writeObject(key);\n    }\n\n    public void writeValue(Object object) {\n        writeObject(object);\n    }\n\n    public void writeObject(String object) {\n        beforeWrite();\n\n        serializer.write(object);\n\n        afterWrite();\n    }\n\n    public void writeObject(Object object) {\n        beforeWrite();\n        serializer.write(object);\n        afterWrite();\n    }\n\n    public void startArray() {\n        if (context != null) {\n            beginStructure();\n        }\n\n        context = new JSONStreamContext(context, StartArray);\n        writer.write('[');\n    }\n\n    private void beginStructure() {\n        final int state = context.state;\n        switch (context.state) {\n            case PropertyKey:\n                writer.write(':');\n                break;\n            case ArrayValue:\n                writer.write(',');\n                break;\n            case StartObject:\n                break;\n            case StartArray:\n                break;\n            default:\n                throw new JSONException(\"illegal state : \" + state);\n        }\n    }\n\n    public void endArray() {\n        writer.write(']');\n        endStructure();\n    }\n\n    private void endStructure() {\n        context = context.parent;\n\n        if (context == null) {\n            return;\n        }\n        \n        int newState = -1;\n        switch (context.state) {\n            case PropertyKey:\n                newState = PropertyValue;\n                break;\n            case StartArray:\n                newState = ArrayValue;\n                break;\n            case ArrayValue:\n                break;\n            case StartObject:\n                newState = PropertyKey;\n                break;\n            default:\n                break;\n        }\n        if (newState != -1) {\n            context.state = newState;\n        }\n    }\n\n    private void beforeWrite() {\n        if (context == null) {\n            return;\n        }\n        \n        switch (context.state) {\n            case StartObject:\n            case StartArray:\n                break;\n            case PropertyKey:\n                writer.write(':');\n                break;\n            case PropertyValue:\n                writer.write(',');\n                break;\n            case ArrayValue:\n                writer.write(',');\n                break;\n            default:\n                break;\n        }\n    }\n\n    private void afterWrite() {\n        if (context == null) {\n            return;\n        }\n\n        final int state = context.state;\n        int newState = -1;\n        switch (state) {\n            case PropertyKey:\n                newState = PropertyValue;\n                break;\n            case StartObject:\n            case PropertyValue:\n                newState = PropertyKey;\n                break;\n            case StartArray:\n                newState = ArrayValue;\n                break;\n            case ArrayValue:\n                break;\n            default:\n                break;\n        }\n\n        if (newState != -1) {\n            context.state = newState;\n        }\n    }\n\n    public void flush() throws IOException {\n        writer.flush();\n    }\n\n    public void close() throws IOException {\n        writer.close();\n    }\n\n    @Deprecated\n    public void writeStartObject() {\n        startObject();\n    }\n\n    @Deprecated\n    public void writeEndObject() {\n        endObject();\n    }\n\n    @Deprecated\n    public void writeStartArray() {\n        startArray();\n    }\n\n    @Deprecated\n    public void writeEndArray() {\n        endArray();\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/PropertyNamingStrategy.java",
    "content": "package com.alibaba.fastjson;\n\n/**\n * @since 1.2.15\n */\npublic enum PropertyNamingStrategy {\n                                    CamelCase, // camelCase\n                                    PascalCase, // PascalCase\n                                    SnakeCase, // snake_case\n                                    KebabCase, // kebab-case\n                                    NoChange,  //\n                                    NeverUseThisValueExceptDefaultValue;\n\n    public String translate(String propertyName) {\n        switch (this) {\n            case SnakeCase: {\n                StringBuilder buf = new StringBuilder();\n                for (int i = 0; i < propertyName.length(); ++i) {\n                    char ch = propertyName.charAt(i);\n                    if (ch >= 'A' && ch <= 'Z') {\n                        char ch_ucase = (char) (ch + 32);\n                        if (i > 0) {\n                            buf.append('_');\n                        }\n                        buf.append(ch_ucase);\n                    } else {\n                        buf.append(ch);\n                    }\n                }\n                return buf.toString();\n            }\n            case KebabCase: {\n                StringBuilder buf = new StringBuilder();\n                for (int i = 0; i < propertyName.length(); ++i) {\n                    char ch = propertyName.charAt(i);\n                    if (ch >= 'A' && ch <= 'Z') {\n                        char ch_ucase = (char) (ch + 32);\n                        if (i > 0) {\n                            buf.append('-');\n                        }\n                        buf.append(ch_ucase);\n                    } else {\n                        buf.append(ch);\n                    }\n                }\n                return buf.toString();\n            }\n            case PascalCase: {\n                char ch = propertyName.charAt(0);\n                if (ch >= 'a' && ch <= 'z') {\n                    char[] chars = propertyName.toCharArray();\n                    chars[0] -= 32;\n                    return new String(chars);\n                }\n\n                return propertyName;\n            }\n            case CamelCase: {\n                char ch = propertyName.charAt(0);\n                if (ch >= 'A' && ch <= 'Z') {\n                    char[] chars = propertyName.toCharArray();\n                    chars[0] += 32;\n                    return new String(chars);\n                }\n\n                return propertyName;\n            }\n            case NoChange:\n            case NeverUseThisValueExceptDefaultValue:\n            default:\n                return propertyName;\n        }\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/TypeReference.java",
    "content": "package com.alibaba.fastjson;\n\nimport java.lang.reflect.GenericArrayType;\nimport java.lang.reflect.ParameterizedType;\nimport java.lang.reflect.Type;\nimport java.lang.reflect.TypeVariable;\nimport java.util.List;\nimport java.util.concurrent.ConcurrentHashMap;\nimport java.util.concurrent.ConcurrentMap;\n\nimport com.alibaba.fastjson.util.ParameterizedTypeImpl;\nimport com.alibaba.fastjson.util.TypeUtils;\n\n/** \n * Represents a generic type {@code T}. Java doesn't yet provide a way to\n * represent generic types, so this class does. Forces clients to create a\n * subclass of this class which enables retrieval the type information even at\n * runtime.\n *\n * <p>For example, to create a type literal for {@code List<String>}, you can\n * create an empty anonymous inner class:\n *\n * <pre>\n * TypeReference&lt;List&lt;String&gt;&gt; list = new TypeReference&lt;List&lt;String&gt;&gt;() {};\n * </pre>\n * This syntax cannot be used to create type literals that have wildcard\n * parameters, such as {@code Class<?>} or {@code List<? extends CharSequence>}.\n */\npublic class TypeReference<T> {\n    static ConcurrentMap<Type, Type> classTypeCache\n            = new ConcurrentHashMap<Type, Type>(16, 0.75f, 1);\n\n    protected final Type type;\n\n    /**\n     * Constructs a new type literal. Derives represented class from type\n     * parameter.\n     *\n     * <p>Clients create an empty anonymous subclass. Doing so embeds the type\n     * parameter in the anonymous class's type hierarchy so we can reconstitute it\n     * at runtime despite erasure.\n     */\n    protected TypeReference(){\n        Type superClass = getClass().getGenericSuperclass();\n\n        Type type = ((ParameterizedType) superClass).getActualTypeArguments()[0];\n\n        Type cachedType = classTypeCache.get(type);\n        if (cachedType == null) {\n            classTypeCache.putIfAbsent(type, type);\n            cachedType = classTypeCache.get(type);\n        }\n\n        this.type = cachedType;\n    }\n\n    /**\n     * @since 1.2.9\n     * @param actualTypeArguments\n     */\n    protected TypeReference(Type... actualTypeArguments){\n        Class<?> thisClass = this.getClass();\n        Type superClass = thisClass.getGenericSuperclass();\n\n        ParameterizedType argType = (ParameterizedType) ((ParameterizedType) superClass).getActualTypeArguments()[0];\n        Type rawType = argType.getRawType();\n        Type[] argTypes = argType.getActualTypeArguments();\n\n        int actualIndex = 0;\n        for (int i = 0; i < argTypes.length; ++i) {\n            if (argTypes[i] instanceof TypeVariable &&\n                    actualIndex < actualTypeArguments.length) {\n                argTypes[i] = actualTypeArguments[actualIndex++];\n            }\n            // fix for openjdk and android env\n            if (argTypes[i] instanceof GenericArrayType) {\n                argTypes[i] = TypeUtils.checkPrimitiveArray(\n                        (GenericArrayType) argTypes[i]);\n            }\n\n            // 如果有多层泛型且该泛型已经注明实现的情况下，判断该泛型下一层是否还有泛型\n            if(argTypes[i] instanceof ParameterizedType) {\n                argTypes[i] = handlerParameterizedType((ParameterizedType) argTypes[i], actualTypeArguments, actualIndex);\n            }\n        }\n\n        Type key = new ParameterizedTypeImpl(argTypes, thisClass, rawType);\n        Type cachedType = classTypeCache.get(key);\n        if (cachedType == null) {\n            classTypeCache.putIfAbsent(key, key);\n            cachedType = classTypeCache.get(key);\n        }\n\n        type = cachedType;\n    }\n\n    public static Type intern(ParameterizedTypeImpl type) {\n        Type cachedType = classTypeCache.get(type);\n        if (cachedType == null) {\n            classTypeCache.putIfAbsent(type, type);\n            cachedType = classTypeCache.get(type);\n        }\n\n        return cachedType;\n    }\n\n    private Type handlerParameterizedType(ParameterizedType type, Type[] actualTypeArguments, int actualIndex) {\n        Class<?> thisClass = this.getClass();\n        Type rawType = type.getRawType();\n        Type[] argTypes = type.getActualTypeArguments();\n\n        for(int i = 0; i < argTypes.length; ++i) {\n            if (argTypes[i] instanceof TypeVariable && actualIndex < actualTypeArguments.length) {\n                argTypes[i] = actualTypeArguments[actualIndex++];\n            }\n\n            // fix for openjdk and android env\n            if (argTypes[i] instanceof GenericArrayType) {\n                argTypes[i] = TypeUtils.checkPrimitiveArray(\n                        (GenericArrayType) argTypes[i]);\n            }\n\n            // 如果有多层泛型且该泛型已经注明实现的情况下，判断该泛型下一层是否还有泛型\n            if(argTypes[i] instanceof ParameterizedType) {\n                argTypes[i] = handlerParameterizedType((ParameterizedType) argTypes[i], actualTypeArguments, actualIndex);\n            }\n        }\n\n        Type key = new ParameterizedTypeImpl(argTypes, thisClass, rawType);\n        return key;\n    }\n    \n    /**\n     * Gets underlying {@code Type} instance.\n     */\n    public Type getType() {\n        return type;\n    }\n\n    public final static Type LIST_STRING = new TypeReference<List<String>>() {}.getType();\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/annotation/JSONCreator.java",
    "content": "package com.alibaba.fastjson.annotation;\n\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n@Retention(RetentionPolicy.RUNTIME)\n@Target({ ElementType.CONSTRUCTOR, ElementType.METHOD })\npublic @interface JSONCreator {\n\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/annotation/JSONField.java",
    "content": "/*\r\n * Copyright 1999-2017 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.annotation;\r\n\r\nimport java.lang.annotation.ElementType;\r\nimport java.lang.annotation.Retention;\r\nimport java.lang.annotation.RetentionPolicy;\r\nimport java.lang.annotation.Target;\r\n\r\nimport com.alibaba.fastjson.parser.Feature;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\n@Retention(RetentionPolicy.RUNTIME)\r\n@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER })\r\npublic @interface JSONField {\r\n    /**\r\n     * config encode/decode ordinal\r\n     * @since 1.1.42\r\n     * @return\r\n     */\r\n    int ordinal() default 0;\r\n\r\n    String name() default \"\";\r\n\r\n    String format() default \"\";\r\n\r\n    boolean serialize() default true;\r\n\r\n    boolean deserialize() default true;\r\n\r\n    SerializerFeature[] serialzeFeatures() default {};\r\n\r\n    Feature[] parseFeatures() default {};\r\n    \r\n    String label() default \"\";\r\n    \r\n    /**\r\n     * @since 1.2.12\r\n     */\r\n    boolean jsonDirect() default false;\r\n    \r\n    /**\r\n     * Serializer class to use for serializing associated value.\r\n     * \r\n     * @since 1.2.16\r\n     */\r\n    Class<?> serializeUsing() default Void.class;\r\n    \r\n    /**\r\n     * Deserializer class to use for deserializing associated value. \r\n     * \r\n     * @since 1.2.16 \r\n     */\r\n    Class<?> deserializeUsing() default Void.class;\r\n\r\n    /**\r\n     * @since 1.2.21\r\n     * @return the alternative names of the field when it is deserialized\r\n     */\r\n    String[] alternateNames() default {};\r\n\r\n    /**\r\n     * @since 1.2.31\r\n     */\r\n    boolean unwrapped() default false;\r\n    \r\n\t/**\r\n\t * Only support Object\r\n\t * \r\n\t * @since 1.2.61\r\n\t */\r\n\tString defaultValue() default \"\";\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/annotation/JSONPOJOBuilder.java",
    "content": "package com.alibaba.fastjson.annotation;\n\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * \n * @since 1.2.8\n *\n */\n@Retention(RetentionPolicy.RUNTIME)\n@Target({ ElementType.TYPE })\npublic @interface JSONPOJOBuilder {\n    /**\n     * Property to use for re-defining which zero-argument method\n     * is considered the actual \"build-method\": method called after\n     * all data has been bound, and the actual instance needs to\n     * be instantiated.\n     *<p>\n     * Default value is \"build\".\n     */\n    String buildMethod() default \"build\";\n\n    /**\n     * Property used for (re)defining name prefix to use for\n     * auto-detecting \"with-methods\": methods that are similar to\n     * \"set-methods\" (in that they take an argument), but that\n     * may also return the new builder instance to use\n     * (which may be 'this', or a new modified builder instance).\n     * Note that in addition to this prefix, it is also possible\n     * to use {@link com.alibaba.fastjson.annotation.JSONField}\n     * annotation to indicate \"with-methods\".\n     *<p>\n     * Default value is \"with\", so that method named \"withValue()\"\n     * would be used for binding JSON property \"value\" (using type\n     * indicated by the argument; or one defined with annotations.\n     */\n    String withPrefix() default \"with\";\n\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/annotation/JSONType.java",
    "content": "package com.alibaba.fastjson.annotation;\n\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\nimport com.alibaba.fastjson.PropertyNamingStrategy;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializeFilter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\n/**\n * @author wenshao[szujobs@hotmail.com]\n */\n@Retention(RetentionPolicy.RUNTIME)\n@Target({ ElementType.TYPE })\npublic @interface JSONType {\n\n    boolean asm() default true;\n\n    String[] orders() default {};\n\n    /**\n     * @since 1.2.6\n     */\n    String[] includes() default {};\n\n    String[] ignores() default {};\n\n    SerializerFeature[] serialzeFeatures() default {};\n    Feature[] parseFeatures() default {};\n    \n    boolean alphabetic() default true;\n    \n    Class<?> mappingTo() default Void.class;\n    \n    Class<?> builder() default Void.class;\n    \n    /**\n     * @since 1.2.11\n     */\n    String typeName() default \"\";\n\n    /**\n     * @since 1.2.32\n     */\n    String typeKey() default \"\";\n    \n    /**\n     * @since 1.2.11\n     */\n    Class<?>[] seeAlso() default{};\n    \n    /**\n     * @since 1.2.14\n     */\n    Class<?> serializer() default Void.class;\n    \n    /**\n     * @since 1.2.14\n     */\n    Class<?> deserializer() default Void.class;\n\n    boolean serializeEnumAsJavaBean() default false;\n\n    PropertyNamingStrategy naming() default PropertyNamingStrategy.NeverUseThisValueExceptDefaultValue;\n\n    /**\n     * @since 1.2.49\n     */\n    Class<? extends SerializeFilter>[] serialzeFilters() default {};\n\n    /**\n     * @since 1.2.71\n     * @return\n     */\n    Class<? extends ParserConfig.AutoTypeCheckHandler> autoTypeCheckHandler() default ParserConfig.AutoTypeCheckHandler.class;\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/asm/ByteVector.java",
    "content": "/***\n * ASM: a very small and fast Java bytecode manipulation framework\n * Copyright (c) 2000-2007 INRIA, France Telecom\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n *    notice, this list of conditions and the following disclaimer in the\n *    documentation and/or other materials provided with the distribution.\n * 3. Neither the name of the copyright holders nor the names of its\n *    contributors may be used to endorse or promote products derived from\n *    this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n * THE POSSIBILITY OF SUCH DAMAGE.\n */\npackage com.alibaba.fastjson.asm;\n\n/**\n * A dynamically extensible vector of bytes. This class is roughly equivalent to\n * a DataOutputStream on top of a ByteArrayOutputStream, but is more efficient.\n *\n * @author Eric Bruneton\n */\npublic class ByteVector {\n\n\t/**\n\t * The content of this vector.\n\t */\n\tpublic byte[] data;\n\n\t/**\n\t * Actual number of bytes in this vector.\n\t */\n\tpublic int length;\n\n\t/**\n\t * Constructs a new {@link ByteVector ByteVector} with a default initial size.\n\t */\n\tpublic ByteVector() {\n\t\tdata = new byte[64];\n\t}\n\n\t/**\n\t * Constructs a new {@link ByteVector ByteVector} with the given initial size.\n\t *\n\t * @param initialSize the initial size of the byte vector to be constructed.\n\t */\n\tpublic ByteVector(final int initialSize) {\n\t\tdata = new byte[initialSize];\n\t}\n\n\t/**\n\t * Puts a byte into this byte vector. The byte vector is automatically enlarged\n\t * if necessary.\n\t *\n\t * @param b a byte.\n\t * @return this byte vector.\n\t */\n\tpublic ByteVector putByte(final int b) {\n\t\tint length = this.length;\n\t\tif (length + 1 > data.length) {\n\t\t\tenlarge(1);\n\t\t}\n\t\tdata[length++] = (byte) b;\n\t\tthis.length = length;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Puts two bytes into this byte vector. The byte vector is automatically\n\t * enlarged if necessary.\n\t *\n\t * @param b1 a byte.\n\t * @param b2 another byte.\n\t * @return this byte vector.\n\t */\n\tByteVector put11(final int b1, final int b2) {\n\t\tint length = this.length;\n\t\tif (length + 2 > data.length) {\n\t\t\tenlarge(2);\n\t\t}\n\t\tfinal byte[] data = this.data;\n\t\tdata[length++] = (byte) b1;\n\t\tdata[length++] = (byte) b2;\n\t\tthis.length = length;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Puts a short into this byte vector. The byte vector is automatically enlarged\n\t * if necessary.\n\t *\n\t * @param s a short.\n\t * @return this byte vector.\n\t */\n\tpublic ByteVector putShort(final int s) {\n\t\tint length = this.length;\n\t\tif (length + 2 > data.length) {\n\t\t\tenlarge(2);\n\t\t}\n\t\tfinal byte[] data = this.data;\n\t\tdata[length++] = (byte) (s >>> 8);\n\t\tdata[length++] = (byte) s;\n\t\tthis.length = length;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Puts a byte and a short into this byte vector. The byte vector is\n\t * automatically enlarged if necessary.\n\t *\n\t * @param b a byte.\n\t * @param s a short.\n\t * @return this byte vector.\n\t */\n\tpublic ByteVector put12(final int b, final int s) {\n\t\tint length = this.length;\n\t\tif (length + 3 > data.length) {\n\t\t\tenlarge(3);\n\t\t}\n\t\tfinal byte[] data = this.data;\n\t\tdata[length++] = (byte) b;\n\t\tdata[length++] = (byte) (s >>> 8);\n\t\tdata[length++] = (byte) s;\n\t\tthis.length = length;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Puts an int into this byte vector. The byte vector is automatically enlarged\n\t * if necessary.\n\t *\n\t * @param i an int.\n\t * @return this byte vector.\n\t */\n\tpublic ByteVector putInt(final int i) {\n\t\tint length = this.length;\n\t\tif (length + 4 > data.length) {\n\t\t\tenlarge(4);\n\t\t}\n\t\tfinal byte[] data = this.data;\n\t\tdata[length++] = (byte) (i >>> 24);\n\t\tdata[length++] = (byte) (i >>> 16);\n\t\tdata[length++] = (byte) (i >>> 8);\n\t\tdata[length++] = (byte) i;\n\t\tthis.length = length;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Puts an UTF8 string into this byte vector. The byte vector is automatically\n\t * enlarged if necessary.\n\t *\n\t * @param s a String.\n\t * @return this byte vector.\n\t */\n\tpublic ByteVector putUTF8(final String s) {\n\t\tfinal int charLength = s.length();\n\t\tint len = length;\n\t\tif (len + 2 + charLength > data.length) {\n\t\t\tenlarge(2 + charLength);\n\t\t}\n\t\tfinal byte[] data = this.data;\n\t\t// optimistic algorithm: instead of computing the byte length and then\n\t\t// serializing the string (which requires two loops), we assume the byte\n\t\t// length is equal to char length (which is the most frequent case), and\n\t\t// we start serializing the string right away. During the serialization,\n\t\t// if we find that this assumption is wrong, we continue with the\n\t\t// general method.\n\t\tdata[len++] = (byte) (charLength >>> 8);\n\t\tdata[len++] = (byte) charLength;\n\t\tfor (int i = 0; i < charLength; ++i) {\n\t\t\tfinal char c = s.charAt(i);\n\t\t\tif ((c >= '\\001' && c <= '\\177') || (c >= '\\u4E00' && c <= '\\u9FFF')) {\n\t\t\t\tdata[len++] = (byte) c;\n\t\t\t} else {\n\t\t\t\tthrow new UnsupportedOperationException();\n\t\t\t}\n\t\t}\n\t\tlength = len;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Puts an array of bytes into this byte vector. The byte vector is\n\t * automatically enlarged if necessary.\n\t *\n\t * @param b   an array of bytes. May be <tt>null</tt> to put <tt>len</tt> null\n\t *            bytes into this byte vector.\n\t * @param off index of the fist byte of b that must be copied.\n\t * @param len number of bytes of b that must be copied.\n\t * @return this byte vector.\n\t */\n\tpublic ByteVector putByteArray(final byte[] b, final int off, final int len) {\n\t\tif (length + len > data.length) {\n\t\t\tenlarge(len);\n\t\t}\n\t\tif (b != null) {\n\t\t\tSystem.arraycopy(b, off, data, length, len);\n\t\t}\n\t\tlength += len;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Enlarge this byte vector so that it can receive n more bytes.\n\t *\n\t * @param size number of additional bytes that this byte vector should be able\n\t *             to receive.\n\t */\n\tprivate void enlarge(final int size) {\n\t\tfinal int length1 = 2 * data.length;\n\t\tfinal int length2 = length + size;\n\t\tfinal byte[] newData = new byte[length1 > length2 ? length1 : length2];\n\t\tSystem.arraycopy(data, 0, newData, 0, length);\n\t\tdata = newData;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/asm/ClassReader.java",
    "content": "package com.alibaba.fastjson.asm;\n\nimport java.io.ByteArrayOutputStream;\nimport java.io.IOException;\nimport java.io.InputStream;\n\n/**\n * Created by wenshao on 05/08/2017.\n */\npublic class ClassReader {\n    public  final byte[] b;\n    private final int[] items;\n    private final String[] strings;\n    private final int maxStringLength;\n    public  final int header;\n    private boolean readAnnotations;\n\n    public ClassReader(InputStream is, boolean readAnnotations) throws IOException {\n        this.readAnnotations = readAnnotations;\n\n        {\n            ByteArrayOutputStream out = new ByteArrayOutputStream();\n            byte[] buf = new byte[1024];\n            for (; ; ) {\n                int len = is.read(buf);\n                if (len == -1) {\n                    break;\n                }\n\n                if (len > 0) {\n                    out.write(buf, 0, len);\n                }\n            }\n            is.close();\n            this.b = out.toByteArray();\n        }\n\n        // parses the constant pool\n        items = new int[readUnsignedShort(8)];\n        int n = items.length;\n        strings = new String[n];\n        int max = 0;\n        int index = 10;\n        for (int i = 1; i < n; ++i) {\n            items[i] = index + 1;\n            int size;\n            switch (b[index]) {\n                case 9: // FIELD:\n                case 10: // METH:\n                case 11: //IMETH:\n                case 3: //INT:\n                case 4: //FLOAT:\n                case 18: //INVOKEDYN:\n                case 12: //NAME_TYPE:\n                    size = 5;\n                    break;\n                case 5: //LONG:\n                case 6: //DOUBLE:\n                    size = 9;\n                    ++i;\n                    break;\n                case 15: //MHANDLE:\n                    size = 4;\n                    break;\n                case 1: //UTF8:\n                    size = 3 + readUnsignedShort(index + 1);\n                    if (size > max) {\n                        max = size;\n                    }\n                    break;\n                // case HamConstants.CLASS:\n                // case HamConstants.STR:\n                default:\n                    size = 3;\n                    break;\n            }\n            index += size;\n        }\n        maxStringLength = max;\n        // the class header information starts just after the constant pool\n        header = index;\n    }\n\n    public void accept(final TypeCollector classVisitor) {\n        char[] c = new char[maxStringLength]; // buffer used to read strings\n        int i, j; // loop variables\n        int u, v; // indexes in b\n        int anns = 0;\n\n        //read annotations\n        if (readAnnotations) {\n            u = getAttributes();\n            for (i = readUnsignedShort(u); i > 0; --i) {\n                String attrName = readUTF8(u + 2, c);\n                if (\"RuntimeVisibleAnnotations\".equals(attrName)) {\n                    anns = u + 8;\n                    break;\n                }\n                u += 6 + readInt(u + 4);\n            }\n        }\n\n        // visits the header\n        u = header;\n        int len = readUnsignedShort(u + 6);\n        u += 8;\n        for (i = 0; i < len; ++i) {\n            u += 2;\n        }\n        v = u;\n        i = readUnsignedShort(v);\n        v += 2;\n        for (; i > 0; --i) {\n            j = readUnsignedShort(v + 6);\n            v += 8;\n            for (; j > 0; --j) {\n                v += 6 + readInt(v + 2);\n            }\n        }\n        i = readUnsignedShort(v);\n        v += 2;\n        for (; i > 0; --i) {\n            j = readUnsignedShort(v + 6);\n            v += 8;\n            for (; j > 0; --j) {\n                v += 6 + readInt(v + 2);\n            }\n        }\n\n        i = readUnsignedShort(v);\n        v += 2;\n        for (; i > 0; --i) {\n            v += 6 + readInt(v + 2);\n        }\n\n        if (anns != 0) {\n            for (i = readUnsignedShort(anns), v = anns + 2; i > 0; --i) {\n                String name = readUTF8(v, c);\n                classVisitor.visitAnnotation(name);\n            }\n        }\n\n        // visits the fields\n        i = readUnsignedShort(u);\n        u += 2;\n        for (; i > 0; --i) {\n            j = readUnsignedShort(u + 6);\n            u += 8;\n            for (; j > 0; --j) {\n                u += 6 + readInt(u + 2);\n            }\n        }\n\n        // visits the methods\n        i = readUnsignedShort(u);\n        u += 2;\n        for (; i > 0; --i) {\n            // inlined in original ASM source, now a method call\n            u = readMethod(classVisitor, c, u);\n        }\n    }\n\n    private int getAttributes() {\n        // skips the header\n        int u = header + 8 + readUnsignedShort(header + 6) * 2;\n        // skips fields and methods\n        for (int i = readUnsignedShort(u); i > 0; --i) {\n            for (int j = readUnsignedShort(u + 8); j > 0; --j) {\n                u += 6 + readInt(u + 12);\n            }\n            u += 8;\n        }\n        u += 2;\n        for (int i = readUnsignedShort(u); i > 0; --i) {\n            for (int j = readUnsignedShort(u + 8); j > 0; --j) {\n                u += 6 + readInt(u + 12);\n            }\n            u += 8;\n        }\n        // the attribute_info structure starts just after the methods\n        return u + 2;\n    }\n\n    private int readMethod(TypeCollector classVisitor, char[] c, int u) {\n        int v;\n        int w;\n        int j;\n        String attrName;\n        int k;\n        int access = readUnsignedShort(u);\n        String name = readUTF8(u + 2, c);\n        String desc = readUTF8(u + 4, c);\n        v = 0;\n        w = 0;\n\n        // looks for Code and Exceptions attributes\n        j = readUnsignedShort(u + 6);\n        u += 8;\n        for (; j > 0; --j) {\n            attrName = readUTF8(u, c);\n            int attrSize = readInt(u + 2);\n            u += 6;\n            // tests are sorted in decreasing frequency order\n            // (based on frequencies observed on typical classes)\n            if (attrName.equals(\"Code\")) {\n                v = u;\n            }\n            u += attrSize;\n        }\n        // reads declared exceptions\n        if (w == 0) {\n        } else {\n            w += 2;\n            for (j = 0; j < readUnsignedShort(w); ++j) {\n                w += 2;\n            }\n        }\n\n        // visits the method's code, if any\n        MethodCollector mv = classVisitor.visitMethod(access, name, desc);\n\n        if (mv != null && v != 0) {\n            int codeLength = readInt(v + 4);\n            v += 8;\n\n            int codeStart = v;\n            int codeEnd = v + codeLength;\n            v = codeEnd;\n\n            j = readUnsignedShort(v);\n            v += 2;\n            for (; j > 0; --j) {\n                v += 8;\n            }\n            // parses the local variable, line number tables, and code\n            // attributes\n            int varTable = 0;\n            int varTypeTable = 0;\n            j = readUnsignedShort(v);\n            v += 2;\n            for (; j > 0; --j) {\n                attrName = readUTF8(v, c);\n                if (attrName.equals(\"LocalVariableTable\")) {\n                    varTable = v + 6;\n                } else if (attrName.equals(\"LocalVariableTypeTable\")) {\n                    varTypeTable = v + 6;\n                }\n                v += 6 + readInt(v + 2);\n            }\n\n            v = codeStart;\n            // visits the local variable tables\n            if (varTable != 0) {\n                if (varTypeTable != 0) {\n                    k = readUnsignedShort(varTypeTable) * 3;\n                    w = varTypeTable + 2;\n                    int[] typeTable = new int[k];\n                    while (k > 0) {\n                        typeTable[--k] = w + 6; // signature\n                        typeTable[--k] = readUnsignedShort(w + 8); // index\n                        typeTable[--k] = readUnsignedShort(w); // start\n                        w += 10;\n                    }\n                }\n                k = readUnsignedShort(varTable);\n                w = varTable + 2;\n                for (; k > 0; --k) {\n                    int index = readUnsignedShort(w + 8);\n                    mv.visitLocalVariable(readUTF8(w + 4, c), index);\n                    w += 10;\n                }\n            }\n        }\n        return u;\n    }\n\n    private int readUnsignedShort(final int index) {\n        byte[] b = this.b;\n        return ((b[index] & 0xFF) << 8) | (b[index + 1] & 0xFF);\n    }\n\n    private int readInt(final int index) {\n        byte[] b = this.b;\n        return ((b[index] & 0xFF) << 24) | ((b[index + 1] & 0xFF) << 16)\n                | ((b[index + 2] & 0xFF) << 8) | (b[index + 3] & 0xFF);\n    }\n\n    private String readUTF8(int index, final char[] buf) {\n        int item = readUnsignedShort(index);\n        String s = strings[item];\n        if (s != null) {\n            return s;\n        }\n        index = items[item];\n        return strings[item] = readUTF(index + 2, readUnsignedShort(index), buf);\n    }\n\n    private String readUTF(int index, final int utfLen, final char[] buf) {\n        int endIndex = index + utfLen;\n        byte[] b = this.b;\n        int strLen = 0;\n        int c;\n        int st = 0;\n        char cc = 0;\n        while (index < endIndex) {\n            c = b[index++];\n            switch (st) {\n                case 0:\n                    c = c & 0xFF;\n                    if (c < 0x80) {  // 0xxxxxxx\n                        buf[strLen++] = (char) c;\n                    } else if (c < 0xE0 && c > 0xBF) {  // 110x xxxx 10xx xxxx\n                        cc = (char) (c & 0x1F);\n                        st = 1;\n                    } else {  // 1110 xxxx 10xx xxxx 10xx xxxx\n                        cc = (char) (c & 0x0F);\n                        st = 2;\n                    }\n                    break;\n\n                case 1:  // byte 2 of 2-byte char or byte 3 of 3-byte char\n                    buf[strLen++] = (char) ((cc << 6) | (c & 0x3F));\n                    st = 0;\n                    break;\n\n                case 2:  // byte 2 of 3-byte char\n                    cc = (char) ((cc << 6) | (c & 0x3F));\n                    st = 1;\n                    break;\n            }\n        }\n        return new String(buf, 0, strLen);\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/asm/ClassWriter.java",
    "content": "/***\n * ASM: a very small and fast Java bytecode manipulation framework\n * Copyright (c) 2000-2007 INRIA, France Telecom\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n *    notice, this list of conditions and the following disclaimer in the\n *    documentation and/or other materials provided with the distribution.\n * 3. Neither the name of the copyright holders nor the names of its\n *    contributors may be used to endorse or promote products derived from\n *    this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n * THE POSSIBILITY OF SUCH DAMAGE.\n */\npackage com.alibaba.fastjson.asm;\n\n/**\n * \n * @author Eric Bruneton\n */\npublic class ClassWriter {\n    /**\n     * Minor and major version numbers of the class to be generated.\n     */\n    int                     version;\n\n    /**\n     * Index of the next item to be added in the constant pool.\n     */\n    int                     index;\n\n    /**\n     * The constant pool of this class.\n     */\n    final ByteVector        pool;\n\n    /**\n     * The constant pool's hash table data.\n     */\n    Item[]                  items;\n\n    /**\n     * The threshold of the constant pool's hash table.\n     */\n    int                     threshold;\n\n    /**\n     * A reusable key used to look for items in the {@link #items} hash table.\n     */\n    final Item              key;\n\n    /**\n     * A reusable key used to look for items in the {@link #items} hash table.\n     */\n    final Item              key2;\n\n    /**\n     * A reusable key used to look for items in the {@link #items} hash table.\n     */\n    final Item              key3;\n\n    /**\n     * A type table used to temporarily store internal names that will not necessarily be stored in the constant pool.\n     * This type table is used by the control flow and data flow analysis algorithm used to compute stack map frames\n     * from scratch. This array associates to each index <tt>i</tt> the Item whose index is <tt>i</tt>. All Item objects\n     * stored in this array are also stored in the {@link #items} hash table. These two arrays allow to retrieve an Item\n     * from its index or, conversely, to get the index of an Item from its value. Each Item stores an internal name in\n     * its {@link Item#strVal1} field.\n     */\n    Item[]                  typeTable;\n\n    /**\n     * The access flags of this class.\n     */\n    private int             access;\n\n    /**\n     * The constant pool item that contains the internal name of this class.\n     */\n    private int             name;\n\n    /**\n     * The internal name of this class.\n     */\n    String                  thisName;\n\n    /**\n     * The constant pool item that contains the internal name of the super class of this class.\n     */\n    private int             superName;\n\n    /**\n     * Number of interfaces implemented or extended by this class or interface.\n     */\n    private int             interfaceCount;\n\n    /**\n     * The interfaces implemented or extended by this class or interface. More precisely, this array contains the\n     * indexes of the constant pool items that contain the internal names of these interfaces.\n     */\n    private int[]           interfaces;\n\n    /**\n     * The fields of this class. These fields are stored in a linked list of {@link FieldWriter} objects, linked to each\n     * other by their {@link FieldWriter#next} field. This field stores the first element of this list.\n     */\n    FieldWriter             firstField;\n\n    /**\n     * The fields of this class. These fields are stored in a linked list of {@link FieldWriter} objects, linked to each\n     * other by their {@link FieldWriter#next} field. This field stores the last element of this list.\n     */\n    FieldWriter             lastField;\n\n    /**\n     * The methods of this class. These methods are stored in a linked list of {@link MethodWriter} objects, linked to\n     * each other by their {@link MethodWriter#next} field. This field stores the first element of this list.\n     */\n    MethodWriter            firstMethod;\n\n    /**\n     * The methods of this class. These methods are stored in a linked list of {@link MethodWriter} objects, linked to\n     * each other by their {@link MethodWriter#next} field. This field stores the last element of this list.\n     */\n    MethodWriter            lastMethod;\n\n    // ------------------------------------------------------------------------\n    // Constructor\n    // ------------------------------------------------------------------------\n\n    public ClassWriter(){\n        this(0);\n    }\n\n    private ClassWriter(final int flags){\n        index = 1;\n        pool = new ByteVector();\n        items = new Item[256];\n        threshold = (int) (0.75d * items.length);\n        key = new Item();\n        key2 = new Item();\n        key3 = new Item();\n    }\n\n    // ------------------------------------------------------------------------\n    // Implementation of the ClassVisitor interface\n    // ------------------------------------------------------------------------\n\n    public void visit(final int version, final int access, final String name, final String superName, final String[] interfaces) {\n        this.version = version;\n        this.access = access;\n        this.name = newClassItem(name).index;\n        thisName = name;\n        this.superName = superName == null ? 0 : newClassItem(superName).index;\n        if (interfaces != null && interfaces.length > 0) {\n            interfaceCount = interfaces.length;\n            this.interfaces = new int[interfaceCount];\n            for (int i = 0; i < interfaceCount; ++i) {\n                this.interfaces[i] = newClassItem(interfaces[i]).index;\n            }\n        }\n    }\n\n    // ------------------------------------------------------------------------\n    // Other public methods\n    // ------------------------------------------------------------------------\n\n    /**\n     * Returns the bytecode of the class that was build with this class writer.\n     * \n     * @return the bytecode of the class that was build with this class writer.\n     */\n    public byte[] toByteArray() {\n        // computes the real size of the bytecode of this class\n        int size = 24 + 2 * interfaceCount;\n        int nbFields = 0;\n        FieldWriter fb = firstField;\n        while (fb != null) {\n            ++nbFields;\n            size += fb.getSize();\n            fb = fb.next;\n        }\n        int nbMethods = 0;\n        MethodWriter mb = firstMethod;\n        while (mb != null) {\n            ++nbMethods;\n            size += mb.getSize();\n            mb = mb.next;\n        }\n        int attributeCount = 0;\n        size += pool.length;\n        // allocates a byte vector of this size, in order to avoid unnecessary\n        // arraycopy operations in the ByteVector.enlarge() method\n        ByteVector out = new ByteVector(size);\n        out.putInt(0xCAFEBABE).putInt(version);\n        out.putShort(index).putByteArray(pool.data, 0, pool.length);\n        int mask = 393216; // Opcodes.ACC_DEPRECATED | ClassWriter.ACC_SYNTHETIC_ATTRIBUTE | ((access & ClassWriter.ACC_SYNTHETIC_ATTRIBUTE) / (ClassWriter.ACC_SYNTHETIC_ATTRIBUTE / Opcodes.ACC_SYNTHETIC));\n        out.putShort(access & ~mask).putShort(name).putShort(superName);\n        out.putShort(interfaceCount);\n        for (int i = 0; i < interfaceCount; ++i) {\n            out.putShort(interfaces[i]);\n        }\n        out.putShort(nbFields);\n        fb = firstField;\n        while (fb != null) {\n            fb.put(out);\n            fb = fb.next;\n        }\n        out.putShort(nbMethods);\n        mb = firstMethod;\n        while (mb != null) {\n            mb.put(out);\n            mb = mb.next;\n        }\n        out.putShort(attributeCount);\n        return out.data;\n    }\n\n    // ------------------------------------------------------------------------\n    // Utility methods: constant pool management\n    // ------------------------------------------------------------------------\n\n    /**\n     * Adds a number or string constant to the constant pool of the class being build. Does nothing if the constant pool\n     * already contains a similar item.\n     * \n     * @param cst the value of the constant to be added to the constant pool. This parameter must be an {@link Integer},\n     * a {@link Float}, a {@link Long}, a {@link Double}, a {@link String} or a {@link Type}.\n     * @return a new or already existing constant item with the given value.\n     */\n    Item newConstItem(final Object cst) {\n        if (cst instanceof Integer) {\n            int val = ((Integer) cst).intValue();\n            // return newInteger(val);\n            key.set(val);\n            Item result = get(key);\n            if (result == null) {\n                pool.putByte(3 /* INT */ ).putInt(val);\n                result = new Item(index++, key);\n                put(result);\n            }\n            return result;\n        } else if (cst instanceof String) {\n            return newString((String) cst);\n        } else if (cst instanceof Type) {\n            Type t = (Type) cst;\n            return newClassItem(t.sort == 10 /*Type.OBJECT*/ ? t.getInternalName() : t.getDescriptor());\n        } else {\n            throw new IllegalArgumentException(\"value \" + cst);\n        }\n    }\n\n    public int newUTF8(final String value) {\n        key.set(1 /* UTF8 */, value, null, null);\n        Item result = get(key);\n        if (result == null) {\n            pool.putByte(1 /* UTF8 */).putUTF8(value);\n            result = new Item(index++, key);\n            put(result);\n        }\n        return result.index;\n    }\n\n    public Item newClassItem(final String value) {\n        key2.set(7 /* CLASS */, value, null, null);\n        Item result = get(key2);\n        if (result == null) {\n            pool.put12(7 /* CLASS */, newUTF8(value));\n            result = new Item(index++, key2);\n            put(result);\n        }\n        return result;\n    }\n\n    /**\n     * Adds a field reference to the constant pool of the class being build. Does nothing if the constant pool already\n     * contains a similar item.\n     * \n     * @param owner the internal name of the field's owner class.\n     * @param name the field's name.\n     * @param desc the field's descriptor.\n     * @return a new or already existing field reference item.\n     */\n    Item newFieldItem(final String owner, final String name, final String desc) {\n        key3.set(9 /* FIELD */, owner, name, desc);\n        Item result = get(key3);\n        if (result == null) {\n            // put122(9 /* FIELD */, newClassItem(owner).index, newNameTypeItem(name, desc).index);\n            int s1 = newClassItem(owner).index, s2 = newNameTypeItem(name, desc).index;\n            pool.put12(9 /* FIELD */, s1).putShort(s2);\n            result = new Item(index++, key3);\n            put(result);\n        }\n        return result;\n    }\n\n    /**\n     * Adds a method reference to the constant pool of the class being build. Does nothing if the constant pool already\n     * contains a similar item.\n     * \n     * @param owner the internal name of the method's owner class.\n     * @param name the method's name.\n     * @param desc the method's descriptor.\n     * @param itf <tt>true</tt> if <tt>owner</tt> is an interface.\n     * @return a new or already existing method reference item.\n     */\n    Item newMethodItem(final String owner, final String name, final String desc, final boolean itf) {\n        int type = itf ? 11 /* IMETH */ : 10 /* METH */;\n        key3.set(type, owner, name, desc);\n        Item result = get(key3);\n        if (result == null) {\n            // put122(type, newClassItem(owner).index, newNameTypeItem(name, desc).index);\n            int s1 = newClassItem(owner).index, s2 = newNameTypeItem(name, desc).index;\n            pool.put12(type, s1).putShort(s2);\n            result = new Item(index++, key3);\n            put(result);\n        }\n        return result;\n    }\n\n    private Item newString(final String value) {\n        key2.set(8 /* STR */, value, null, null);\n        Item result = get(key2);\n        if (result == null) {\n            pool.put12(8 /*STR*/, newUTF8(value));\n            result = new Item(index++, key2);\n            put(result);\n        }\n        return result;\n    }\n\n    public Item newNameTypeItem(final String name, final String desc) {\n        key2.set(12 /* NAME_TYPE */, name, desc, null);\n        Item result = get(key2);\n        if (result == null) {\n            //put122(12 /* NAME_TYPE */, newUTF8(name), newUTF8(desc));\n            int s1 = newUTF8(name), s2 = newUTF8(desc);\n            pool.put12(12 /* NAME_TYPE */, s1).putShort(s2);\n            result = new Item(index++, key2);\n            put(result);\n        }\n        return result;\n    }\n\n\n    private Item get(final Item key) {\n        Item i = items[key.hashCode % items.length];\n        while (i != null && (i.type != key.type || !key.isEqualTo(i))) {\n            i = i.next;\n        }\n        return i;\n    }\n\n    private void put(final Item i) {\n        if (index > threshold) {\n            int ll = items.length;\n            int nl = ll * 2 + 1;\n            Item[] newItems = new Item[nl];\n            for (int l = ll - 1; l >= 0; --l) {\n                Item j = items[l];\n                while (j != null) {\n                    int index = j.hashCode % newItems.length;\n                    Item k = j.next;\n                    j.next = newItems[index];\n                    newItems[index] = j;\n                    j = k;\n                }\n            }\n            items = newItems;\n            threshold = (int) (nl * 0.75);\n        }\n        int index = i.hashCode % items.length;\n        i.next = items[index];\n        items[index] = i;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/asm/FieldWriter.java",
    "content": "/***\n * ASM: a very small and fast Java bytecode manipulation framework\n * Copyright (c) 2000-2007 INRIA, France Telecom\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n *    notice, this list of conditions and the following disclaimer in the\n *    documentation and/or other materials provided with the distribution.\n * 3. Neither the name of the copyright holders nor the names of its\n *    contributors may be used to endorse or promote products derived from\n *    this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n * THE POSSIBILITY OF SUCH DAMAGE.\n */\npackage com.alibaba.fastjson.asm;\n\n/**\n * An FieldWriter that generates Java fields in bytecode form.\n * \n * @author Eric Bruneton\n */\npublic final class FieldWriter {\n\n    FieldWriter       next;\n\n    /**\n     * Access flags of this field.\n     */\n    private final int access;\n\n    /**\n     * The index of the constant pool item that contains the name of this method.\n     */\n    private final int name;\n\n    /**\n     * The index of the constant pool item that contains the descriptor of this field.\n     */\n    private final int desc;\n\n    // ------------------------------------------------------------------------\n    // Constructor\n    // ------------------------------------------------------------------------\n\n    public FieldWriter(final ClassWriter cw, final int access, final String name, final String desc){\n        if (cw.firstField == null) {\n            cw.firstField = this;\n        } else {\n            cw.lastField.next = this;\n        }\n        cw.lastField = this;\n        this.access = access;\n        this.name = cw.newUTF8(name);\n        this.desc = cw.newUTF8(desc);\n    }\n\n    // ------------------------------------------------------------------------\n    // Implementation of the FieldVisitor interface\n    // ------------------------------------------------------------------------\n\n    public void visitEnd() {\n    }\n\n    // ------------------------------------------------------------------------\n    // Utility methods\n    // ------------------------------------------------------------------------\n\n    /**\n     * Returns the size of this field.\n     * \n     * @return the size of this field.\n     */\n    int getSize() {\n        return 8;\n    }\n\n    /**\n     * Puts the content of this field into the given byte vector.\n     * \n     * @param out where the content of this field must be put.\n     */\n    void put(final ByteVector out) {\n        final int mask = 393216; // Opcodes.ACC_DEPRECATED | ClassWriter.ACC_SYNTHETIC_ATTRIBUTE | ((access & ClassWriter.ACC_SYNTHETIC_ATTRIBUTE) / (ClassWriter.ACC_SYNTHETIC_ATTRIBUTE / Opcodes.ACC_SYNTHETIC));\n        out.putShort(access & ~mask).putShort(name).putShort(desc);\n        int attributeCount = 0;\n        out.putShort(attributeCount);\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/asm/Item.java",
    "content": "/***\n * ASM: a very small and fast Java bytecode manipulation framework\n * Copyright (c) 2000-2007 INRIA, France Telecom\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n *    notice, this list of conditions and the following disclaimer in the\n *    documentation and/or other materials provided with the distribution.\n * 3. Neither the name of the copyright holders nor the names of its\n *    contributors may be used to endorse or promote products derived from\n *    this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n * THE POSSIBILITY OF SUCH DAMAGE.\n */\npackage com.alibaba.fastjson.asm;\n\n/**\n * A constant pool item. Constant pool items can be created with the 'newXXX' methods in the {@link ClassWriter} class.\n * \n * @author Eric Bruneton\n */\nfinal class Item {\n\n    /**\n     * Index of this item in the constant pool.\n     */\n    int    index;\n\n    int    type;\n\n    /**\n     * Value of this item, for an integer item.\n     */\n    int    intVal;\n\n    /**\n     * Value of this item, for a long item.\n     */\n    long   longVal;\n\n    /**\n     * First part of the value of this item, for items that do not hold a primitive value.\n     */\n    String strVal1;\n\n    /**\n     * Second part of the value of this item, for items that do not hold a primitive value.\n     */\n    String strVal2;\n\n    /**\n     * Third part of the value of this item, for items that do not hold a primitive value.\n     */\n    String strVal3;\n\n    /**\n     * The hash code value of this constant pool item.\n     */\n    int    hashCode;\n\n    /**\n     * Link to another constant pool item, used for collision lists in the constant pool's hash table.\n     */\n    Item   next;\n\n    /**\n     * Constructs an uninitialized {@link Item}.\n     */\n    Item(){\n    }\n\n    /**\n     * Constructs a copy of the given item.\n     * \n     * @param index index of the item to be constructed.\n     * @param i the item that must be copied into the item to be constructed.\n     */\n    Item(final int index, final Item i){\n        this.index = index;\n        type = i.type;\n        intVal = i.intVal;\n        longVal = i.longVal;\n        strVal1 = i.strVal1;\n        strVal2 = i.strVal2;\n        strVal3 = i.strVal3;\n        hashCode = i.hashCode;\n    }\n\n    /**\n     * Sets this item to an item that do not hold a primitive value.\n     * \n     * @param type the type of this item.\n     * @param strVal1 first part of the value of this item.\n     * @param strVal2 second part of the value of this item.\n     * @param strVal3 third part of the value of this item.\n     */\n    void set(final int type, final String strVal1, final String strVal2, final String strVal3) {\n        this.type = type;\n        this.strVal1 = strVal1;\n        this.strVal2 = strVal2;\n        this.strVal3 = strVal3;\n        switch (type) {\n            case 1 /* ClassWriter.UTF8 */:\n            case 8 /* ClassWriter.STR */:\n            case 7 /* ClassWriter.CLASS */:\n            case 13 /* ClassWriter.TYPE_NORMAL */:\n                hashCode = 0x7FFFFFFF & (type + strVal1.hashCode());\n                return;\n            case 12 /* ClassWriter.NAME_TYPE */:\n                hashCode = 0x7FFFFFFF & (type + strVal1.hashCode() * strVal2.hashCode());\n                return;\n                // ClassWriter.FIELD:\n                // ClassWriter.METH:\n                // ClassWriter.IMETH:\n            default:\n                hashCode = 0x7FFFFFFF & (type + strVal1.hashCode() * strVal2.hashCode() * strVal3.hashCode());\n        }\n    }\n    \n    /**\n     * Sets this item to an integer item.\n     *\n     * @param intVal the value of this item.\n     */\n    void set(final int intVal) {\n        this.type = 3 /* ClassWriter.INT */;\n        this.intVal = intVal;\n        this.hashCode = 0x7FFFFFFF & (type + intVal);\n    }\n\n    /**\n     * Indicates if the given item is equal to this one. <i>This method assumes that the two items have the same\n     * {@link #type}</i>.\n     * \n     * @param i the item to be compared to this one. Both items must have the same {@link #type}.\n     * @return <tt>true</tt> if the given item if equal to this one, <tt>false</tt> otherwise.\n     */\n    boolean isEqualTo(final Item i) {\n        switch (type) {\n            case 1 /* ClassWriter.UTF8 */:\n            case 8 /* ClassWriter.STR */:\n            case 7 /* ClassWriter.CLASS */ :\n            case 13 /* ClassWriter.TYPE_NORMAL */ :\n                return i.strVal1.equals(strVal1);\n            case 15 /* ClassWriter.TYPE_MERGED */ :\n            case 5 /* ClassWriter.LONG */ :\n            case 6 /* ClassWriter.DOUBLE */:\n                return i.longVal == longVal;\n            case 3 /* ClassWriter.INT */ :\n            case 4 /* ClassWriter.FLOAT */:\n                return i.intVal == intVal;\n            case 12 /* ClassWriter.NAME_TYPE */:\n                return i.strVal1.equals(strVal1) && i.strVal2.equals(strVal2);\n                // case ClassWriter.FIELD:\n                // case ClassWriter.METH:\n                // case ClassWriter.IMETH:\n            default:\n                return i.strVal1.equals(strVal1) && i.strVal2.equals(strVal2) && i.strVal3.equals(strVal3);\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/asm/Label.java",
    "content": "/***\n * ASM: a very small and fast Java bytecode manipulation framework\n * Copyright (c) 2000-2007 INRIA, France Telecom\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n *    notice, this list of conditions and the following disclaimer in the\n *    documentation and/or other materials provided with the distribution.\n * 3. Neither the name of the copyright holders nor the names of its\n *    contributors may be used to endorse or promote products derived from\n *    this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n * THE POSSIBILITY OF SUCH DAMAGE.\n */\npackage com.alibaba.fastjson.asm;\n\n/**\n * A label represents a position in the bytecode of a method. Labels are used for jump, goto, and switch instructions,\n * and for try catch blocks. A label designates the <i>instruction</i> that is just after. Note however that there can\n * be other elements between a label and the instruction it designates (such as other labels, stack map frames, line\n * numbers, etc.).\n *\n * @author Eric Bruneton\n */\npublic class Label {\n    int              status;\n\n    /**\n     * The position of this label in the code, if known.\n     */\n    int              position;\n\n    /**\n     * Number of forward references to this label, times two.\n     */\n    private int      referenceCount;\n\n    /**\n     * Informations about forward references. Each forward reference is described by two consecutive integers in this\n     * array: the first one is the position of the first byte of the bytecode instruction that contains the forward\n     * reference, while the second is the position of the first byte of the forward reference itself. In fact the sign\n     * of the first integer indicates if this reference uses 2 or 4 bytes, and its absolute value gives the position of\n     * the bytecode instruction. This array is also used as a bitset to store the subroutines to which a basic block\n     * belongs. This information is needed in MethodWriter#visitMaxs, after all forward references have been\n     * resolved. Hence the same array can be used for both purposes without problems.\n     */\n    private int[]    srcAndRefPositions;\n\n    /**\n     * The bit mask to extract the type of a forward reference to this label. The extracted type is\n     * either {@link #FORWARD_REFERENCE_TYPE_SHORT} or {@link #FORWARD_REFERENCE_TYPE_WIDE}.\n     */\n    static final int FORWARD_REFERENCE_TYPE_MASK = 0xF0000000;\n\n    /**\n     * The bit mask to extract the 'handle' of a forward reference to this label. The extracted handle\n     * is the bytecode offset where the forward reference value is stored (using either 2 or 4 bytes,\n     * as indicated by the {@link #FORWARD_REFERENCE_TYPE_MASK}).\n     */\n    static final int FORWARD_REFERENCE_HANDLE_MASK = 0x0FFFFFFF;\n\n    /**\n     * The type of forward references stored with two bytes in the bytecode. This is the case, for\n     * instance, of a forward reference from an ifnull instruction.\n     */\n    static final int FORWARD_REFERENCE_TYPE_SHORT = 0x10000000;\n\n    /**\n     * The type of forward references stored in four bytes in the bytecode. This is the case, for\n     * instance, of a forward reference from a lookupswitch instruction.\n     */\n    static final int FORWARD_REFERENCE_TYPE_WIDE = 0x20000000;\n\n    // ------------------------------------------------------------------------\n\n    /*\n     * Fields for the control flow and data flow graph analysis algorithms (used to compute the maximum stack size or\n     * the stack map frames). A control flow graph contains one node per \"basic block\", and one edge per \"jump\" from one\n     * basic block to another. Each node (i.e., each basic block) is represented by the Label object that corresponds to\n     * the first instruction of this basic block. Each node also stores the list of its successors in the graph, as a\n     * linked list of Edge objects. The control flow analysis algorithms used to compute the maximum stack size or the\n     * stack map frames are similar and use two steps. The first step, during the visit of each instruction, builds\n     * information about the state of the local variables and the operand stack at the end of each basic block, called\n     * the \"output frame\", <i>relatively</i> to the frame state at the beginning of the basic block, which is called the\n     * \"input frame\", and which is <i>unknown</i> during this step. The second step, in link MethodWriter#visitMaxs,\n     * is a fix point algorithm that computes information about the input frame of each basic block, from the input\n     * state of the first basic block (known from the method signature), and by the using the previously computed\n     * relative output frames. The algorithm used to compute the maximum stack size only computes the relative output\n     * and absolute input stack heights, while the algorithm used to compute stack map frames computes relative output\n     * frames and absolute input frames.\n     */\n\n    /**\n     * Start of the output stack relatively to the input stack. The exact semantics of this field depends on the\n     * algorithm that is used. When only the maximum stack size is computed, this field is the number of elements in the\n     * input stack. When the stack map frames are completely computed, this field is the offset of the first output\n     * stack element relatively to the top of the input stack. This offset is always negative or null. A null offset\n     * means that the output stack must be appended to the input stack. A -n offset means that the first n output stack\n     * elements must replace the top n input stack elements, and that the other elements must be appended to the input\n     * stack.\n     */\n    int              inputStackTop;\n\n    /**\n     * Maximum height reached by the output stack, relatively to the top of the input stack. This maximum is always\n     * positive or null.\n     */\n    int              outputStackMax;\n\n    /**\n     * The successor of this label, in the order they are visited. This linked list does not include labels used for\n     * debug info only. If ClassWriter#COMPUTE_FRAMES option is used then, in addition, it does not contain\n     * successive labels that denote the same bytecode position (in this case only the first label appears in this\n     * list).\n     */\n    Label            successor;\n\n    /**\n     * The next basic block in the basic block stack. This stack is used in the main loop of the fix point algorithm\n     * used in the second step of the control flow analysis algorithms. It is also used in {@link #visitSubroutine} to\n     * avoid using a recursive method.\n     *\n     * @see MethodWriter#visitMaxs\n     */\n    Label            next;\n\n    // ------------------------------------------------------------------------\n    // Constructor\n    // ------------------------------------------------------------------------\n\n    /**\n     * Constructs a new label.\n     */\n    public Label(){\n    }\n\n    // ------------------------------------------------------------------------\n    // Methods to compute offsets and to manage forward references\n    // ------------------------------------------------------------------------\n\n    /**\n     * Puts a reference to this label in the bytecode of a method. If the position of the label is known, the offset is\n     * computed and written directly. Otherwise, a null offset is written and a new forward reference is declared for\n     * this label.\n     *\n     * @param owner the code writer that calls this method.\n     * @param out the bytecode of the method.\n     * @param source the position of first byte of the bytecode instruction that contains this label.\n     * @param wideOffset <tt>true</tt> if the reference must be stored in 4 bytes, or <tt>false</tt> if it must be\n     * stored with 2 bytes.\n     * @throws IllegalArgumentException if this label has not been created by the given code writer.\n     */\n    void put(final MethodWriter owner, final ByteVector out, final int source, boolean wideOffset) {\n        if ((status & 2 /* RESOLVED */) == 0) {\n            if (wideOffset) {\n                addReference(source, out.length, FORWARD_REFERENCE_TYPE_WIDE);\n                out.putInt(-1);\n            } else {\n                addReference(source, out.length, FORWARD_REFERENCE_TYPE_SHORT);\n                out.putShort(-1);\n            }\n        } else {\n            if (wideOffset) {\n                out.putInt(position - source);\n            } else {\n                out.putShort(position - source);\n            }\n        }\n    }\n\n    /**\n     * Adds a forward reference to this label. This method must be called only for a true forward reference, i.e. only\n     * if this label is not resolved yet. For backward references, the offset of the reference can be, and must be,\n     * computed and stored directly.\n     *\n     * @param sourcePosition the position of the referencing instruction. This position will be used to compute the\n     * offset of this forward reference.\n     * @param referencePosition the position where the offset for this forward reference must be stored.\n     */\n    private void addReference(final int sourcePosition, final int referencePosition, final int referenceType) {\n        if (srcAndRefPositions == null) {\n            srcAndRefPositions = new int[6];\n        }\n        if (referenceCount >= srcAndRefPositions.length) {\n            int[] a = new int[srcAndRefPositions.length + 6];\n            System.arraycopy(srcAndRefPositions, 0, a, 0, srcAndRefPositions.length);\n            srcAndRefPositions = a;\n        }\n        srcAndRefPositions[referenceCount++] = sourcePosition;\n        srcAndRefPositions[referenceCount++] = referencePosition | referenceType;\n    }\n\n    /**\n     * Resolves all forward references to this label. This method must be called when this label is added to the\n     * bytecode of the method, i.e. when its position becomes known. This method fills in the blanks that where left in\n     * the bytecode by each forward reference previously added to this label.\n     *\n     * @param owner the code writer that calls this method.\n     * @param position the position of this label in the bytecode.\n     * @param data the bytecode of the method.\n     * @return <tt>true</tt> if a blank that was left for this label was to small to store the offset. In such a case\n     * the corresponding jump instruction is replaced with a pseudo instruction (using unused opcodes) using an unsigned\n     * two bytes offset. These pseudo instructions will need to be replaced with true instructions with wider offsets (4\n     * bytes instead of 2). This is done in {@link MethodWriter#resizeInstructions}.\n     * @throws IllegalArgumentException if this label has already been resolved, or if it has not been created by the\n     * given code writer.\n     */\n    void resolve(final MethodWriter owner, final int position, final byte[] data) {\n        this.status |= 2 /* RESOLVED */ ;\n        this.position = position;\n        int i = 0;\n        while (i < referenceCount) {\n            int source = srcAndRefPositions[i++];\n            int reference = srcAndRefPositions[i++];\n            int handle = reference & FORWARD_REFERENCE_HANDLE_MASK;\n            int offset = position - source;\n            if ((reference & FORWARD_REFERENCE_TYPE_MASK) == FORWARD_REFERENCE_TYPE_SHORT) {\n                data[handle++] = (byte) (offset >>> 8);\n                data[handle] = (byte) offset;\n            } else {\n                data[handle++] = (byte) (offset >>> 24);\n                data[handle++] = (byte) (offset >>> 16);\n                data[handle++] = (byte) (offset >>> 8);\n                data[handle] = (byte) offset;\n            }\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/asm/MethodCollector.java",
    "content": "package com.alibaba.fastjson.asm;\n\n/**\n * Created by wenshao on 05/08/2017.\n */\npublic class MethodCollector {\n\n    private final int paramCount;\n\n    private final int ignoreCount;\n\n    private int currentParameter;\n\n    private final StringBuilder result;\n\n    protected boolean debugInfoPresent;\n\n    protected MethodCollector(int ignoreCount, int paramCount) {\n        this.ignoreCount = ignoreCount;\n        this.paramCount = paramCount;\n        this.result = new StringBuilder();\n        this.currentParameter = 0;\n        // if there are 0 parameters, there is no need for debug info\n        this.debugInfoPresent = paramCount == 0;\n    }\n\n    protected void visitLocalVariable(String name, int index) {\n        if (index >= ignoreCount && index < ignoreCount + paramCount) {\n            if (!name.equals(\"arg\" + currentParameter)) {\n                debugInfoPresent = true;\n            }\n            result.append(',');\n            result.append(name);\n            currentParameter++;\n        }\n    }\n\n    protected String getResult() {\n        return result.length() != 0 ? result.substring(1) : \"\";\n    }\n}"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/asm/MethodVisitor.java",
    "content": "/***\n * ASM: a very small and fast Java bytecode manipulation framework\n * Copyright (c) 2000-2007 INRIA, France Telecom\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n *    notice, this list of conditions and the following disclaimer in the\n *    documentation and/or other materials provided with the distribution.\n * 3. Neither the name of the copyright holders nor the names of its\n *    contributors may be used to endorse or promote products derived from\n *    this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n * THE POSSIBILITY OF SUCH DAMAGE.\n */\npackage com.alibaba.fastjson.asm;\n\n/**\n * \n * @author Eric Bruneton\n */\npublic interface MethodVisitor {\n\n    // -------------------------------------------------------------------------\n    // Annotations and non standard attributes\n    // -------------------------------------------------------------------------\n\n    // -------------------------------------------------------------------------\n    // Normal instructions\n    // -------------------------------------------------------------------------\n\n    /**\n     * Visits a zero operand instruction.\n     * \n     * @param opcode the opcode of the instruction to be visited. This opcode is either NOP, ACONST_NULL, ICONST_M1,\n     * ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, LCONST_0, LCONST_1, FCONST_0, FCONST_1, FCONST_2,\n     * DCONST_0, DCONST_1, IALOAD, LALOAD, FALOAD, DALOAD, AALOAD, BALOAD, CALOAD, SALOAD, IASTORE, LASTORE, FASTORE,\n     * DASTORE, AASTORE, BASTORE, CASTORE, SASTORE, POP, POP2, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, SWAP, IADD,\n     * LADD, FADD, DADD, ISUB, LSUB, FSUB, DSUB, IMUL, LMUL, FMUL, DMUL, IDIV, LDIV, FDIV, DDIV, IREM, LREM, FREM, DREM,\n     * INEG, LNEG, FNEG, DNEG, ISHL, LSHL, ISHR, LSHR, IUSHR, LUSHR, IAND, LAND, IOR, LOR, IXOR, LXOR, I2L, I2F, I2D,\n     * L2I, L2F, L2D, F2I, F2L, F2D, D2I, D2L, D2F, I2B, I2C, I2S, LCMP, FCMPL, FCMPG, DCMPL, DCMPG, IRETURN, LRETURN,\n     * FRETURN, DRETURN, ARETURN, RETURN, ARRAYLENGTH, ATHROW, MONITORENTER, or MONITOREXIT.\n     */\n    void visitInsn(int opcode);\n\n    void visitIntInsn(int opcode, int operand);\n\n    /**\n     * Visits a local variable instruction. A local variable instruction is an instruction that loads or stores the\n     * value of a local variable.\n     * \n     * @param opcode the opcode of the local variable instruction to be visited. This opcode is either ILOAD, LLOAD,\n     * FLOAD, DLOAD, ALOAD, ISTORE, LSTORE, FSTORE, DSTORE, ASTORE or RET.\n     * @param var the operand of the instruction to be visited. This operand is the index of a local variable.\n     */\n    void visitVarInsn(int opcode, int var);\n\n    /**\n     * Visits a type instruction. A type instruction is an instruction that takes the internal name of a class as\n     * parameter.\n     * \n     * @param opcode the opcode of the type instruction to be visited. This opcode is either NEW, ANEWARRAY, CHECKCAST\n     * or INSTANCEOF.\n     * @param type the operand of the instruction to be visited. This operand must be the internal name of an object or\n     * array class (see {@link Type#getInternalName() getInternalName}).\n     */\n    void visitTypeInsn(int opcode, String type);\n\n    /**\n     * Visits a field instruction. A field instruction is an instruction that loads or stores the value of a field of an\n     * object.\n     * \n     * @param opcode the opcode of the type instruction to be visited. This opcode is either GETSTATIC, PUTSTATIC,\n     * GETFIELD or PUTFIELD.\n     * @param owner the internal name of the field's owner class (see {@link Type#getInternalName() getInternalName}).\n     * @param name the field's name.\n     * @param desc the field's descriptor (see {@link Type Type}).\n     */\n    void visitFieldInsn(int opcode, String owner, String name, String desc);\n\n    void visitMethodInsn(int opcode, String owner, String name, String desc);\n\n    /**\n     * Visits a jump instruction. A jump instruction is an instruction that may jump to another instruction.\n     * \n     * @param opcode the opcode of the type instruction to be visited. This opcode is either IFEQ, IFNE, IFLT, IFGE,\n     * IFGT, IFLE, IF_ICMPEQ, IF_ICMPNE, IF_ICMPLT, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ACMPEQ, IF_ACMPNE, GOTO, JSR,\n     * IFNULL or IFNONNULL.\n     * @param label the operand of the instruction to be visited. This operand is a label that designates the\n     * instruction to which the jump instruction may jump.\n     */\n    void visitJumpInsn(int opcode, Label label);\n\n    /**\n     * Visits a label. A label designates the instruction that will be visited just after it.\n     * \n     * @param label a {@link Label Label} object.\n     */\n    void visitLabel(Label label);\n\n    // -------------------------------------------------------------------------\n    // Special instructions\n    // -------------------------------------------------------------------------\n\n    /**\n     * Visits a LDC instruction.\n     * \n     * @param cst the constant to be loaded on the stack. This parameter must be a non null {@link Integer}, a\n     * {@link Float}, a {@link Long}, a {@link Double} a {@link String} (or a {@link Type} for <tt>.class</tt>\n     * constants, for classes whose version is 49.0 or more).\n     */\n    void visitLdcInsn(Object cst);\n\n    /**\n     * Visits an IINC instruction.\n     * \n     * @param var index of the local variable to be incremented.\n     * @param increment amount to increment the local variable by.\n     */\n    void visitIincInsn(int var, int increment);\n\n    // -------------------------------------------------------------------------\n    // Exceptions table entries, debug information, max stack and max locals\n    // -------------------------------------------------------------------------\n\n    /**\n     * Visits the maximum stack size and the maximum number of local variables of the method.\n     * \n     * @param maxStack maximum stack size of the method.\n     * @param maxLocals maximum number of local variables for the method.\n     */\n    void visitMaxs(int maxStack, int maxLocals);\n\n    /**\n     * Visits the end of the method. This method, which is the last one to be called, is used to inform the visitor that\n     * all the annotations and attributes of the method have been visited.\n     */\n    void visitEnd();\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/asm/MethodWriter.java",
    "content": "/***\n * ASM: a very small and fast Java bytecode manipulation framework\n * Copyright (c) 2000-2007 INRIA, France Telecom\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n *    notice, this list of conditions and the following disclaimer in the\n *    documentation and/or other materials provided with the distribution.\n * 3. Neither the name of the copyright holders nor the names of its\n *    contributors may be used to endorse or promote products derived from\n *    this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n * THE POSSIBILITY OF SUCH DAMAGE.\n */\npackage com.alibaba.fastjson.asm;\n\n/**\n * @author Eric Bruneton\n * @author Eugene Kuleshov\n */\npublic class MethodWriter implements MethodVisitor {\n\n    /**\n     * Next method writer (see {@link ClassWriter#firstMethod firstMethod}).\n     */\n    MethodWriter       next;\n\n    /**\n     * The class writer to which this method must be added.\n     */\n    final ClassWriter  cw;\n\n    /**\n     * Access flags of this method.\n     */\n    private int        access;\n\n    /**\n     * The index of the constant pool item that contains the name of this method.\n     */\n    private final int  name;\n\n    /**\n     * The index of the constant pool item that contains the descriptor of this method.\n     */\n    private final int  desc;\n\n    /**\n     * Number of exceptions that can be thrown by this method.\n     */\n    int                exceptionCount;\n\n    /**\n     * The exceptions that can be thrown by this method. More precisely, this array contains the indexes of the constant\n     * pool items that contain the internal names of these exception classes.\n     */\n    int[]              exceptions;\n\n    /**\n     * The bytecode of this method.\n     */\n    private ByteVector code                                    = new ByteVector();\n\n    /**\n     * Maximum stack size of this method.\n     */\n    private int        maxStack;\n\n    /**\n     * Maximum number of local variables for this method.\n     */\n    private int        maxLocals;\n\n    // ------------------------------------------------------------------------\n\n    /*\n     * Fields for the control flow graph analysis algorithm (used to compute the maximum stack size). A control flow\n     * graph contains one node per \"basic block\", and one edge per \"jump\" from one basic block to another. Each node\n     * (i.e., each basic block) is represented by the Label object that corresponds to the first instruction of this\n     * basic block. Each node also stores the list of its successors in the graph, as a linked list of Edge objects.\n     */\n\n    // ------------------------------------------------------------------------\n    // Constructor\n    // ------------------------------------------------------------------------\n\n    public MethodWriter(final ClassWriter cw, final int access, final String name, final String desc, final String signature, final String[] exceptions){\n        if (cw.firstMethod == null) {\n            cw.firstMethod = this;\n        } else {\n            cw.lastMethod.next = this;\n        }\n        cw.lastMethod = this;\n        this.cw = cw;\n        this.access = access;\n        this.name = cw.newUTF8(name);\n        this.desc = cw.newUTF8(desc);\n\n        if (exceptions != null && exceptions.length > 0) {\n            exceptionCount = exceptions.length;\n            this.exceptions = new int[exceptionCount];\n            for (int i = 0; i < exceptionCount; ++i) {\n                this.exceptions[i] = cw.newClassItem(exceptions[i]).index;\n            }\n        }\n    }\n\n    // ------------------------------------------------------------------------\n    // Implementation of the MethodVisitor interface\n    // ------------------------------------------------------------------------\n\n    public void visitInsn(final int opcode) {\n        // adds the instruction to the bytecode of the method\n        code.putByte(opcode);\n        // update currentBlock\n        // Label currentBlock = this.currentBlock;\n    }\n\n    public void visitIntInsn(final int opcode, final int operand) {\n        // Label currentBlock = this.currentBlock;\n        // adds the instruction to the bytecode of the method\n        // if (opcode == Opcodes.SIPUSH) {\n        // code.put12(opcode, operand);\n        // } else { // BIPUSH or NEWARRAY\n        code.put11(opcode, operand);\n        // }\n    }\n\n    public void visitVarInsn(final int opcode, final int var) {\n        // Label currentBlock = this.currentBlock;\n        // adds the instruction to the bytecode of the method\n        if (var < 4 && opcode != Opcodes.RET) {\n            int opt;\n            if (opcode < Opcodes.ISTORE) {\n                /* ILOAD_0 */\n                opt = 26 + ((opcode - Opcodes.ILOAD) << 2) + var;\n            } else {\n                /* ISTORE_0 */\n                opt = 59 + ((opcode - Opcodes.ISTORE) << 2) + var;\n            }\n            code.putByte(opt);\n        } else if (var >= 256) {\n            code.putByte(196 /* WIDE */).put12(opcode, var);\n        } else {\n            code.put11(opcode, var);\n        }\n    }\n\n    public void visitTypeInsn(final int opcode, final String type) {\n        Item i = cw.newClassItem(type);\n        // Label currentBlock = this.currentBlock;\n        // adds the instruction to the bytecode of the method\n        code.put12(opcode, i.index);\n    }\n\n    public void visitFieldInsn(final int opcode, final String owner, final String name, final String desc) {\n        Item i = cw.newFieldItem(owner, name, desc);\n        // Label currentBlock = this.currentBlock;\n        // adds the instruction to the bytecode of the method\n        code.put12(opcode, i.index);\n    }\n\n    public void visitMethodInsn(final int opcode, final String owner, final String name, final String desc) {\n        boolean itf = opcode == Opcodes.INVOKEINTERFACE;\n        Item i = cw.newMethodItem(owner, name, desc, itf);\n        int argSize = i.intVal;\n        // Label currentBlock = this.currentBlock;\n        // adds the instruction to the bytecode of the method\n        if (itf) {\n            if (argSize == 0) {\n                argSize = Type.getArgumentsAndReturnSizes(desc);\n                i.intVal = argSize;\n            }\n            code.put12(Opcodes.INVOKEINTERFACE, i.index).put11(argSize >> 2, 0);\n        } else {\n            code.put12(opcode, i.index);\n        }\n    }\n\n    public void visitJumpInsn(final int opcode, final Label label) {\n        // Label currentBlock = this.currentBlock;\n        // adds the instruction to the bytecode of the method\n        if ((label.status & 2 /* Label.RESOLVED */ ) != 0 && label.position - code.length < Short.MIN_VALUE) {\n            throw new UnsupportedOperationException();\n        } else {\n            /*\n             * case of a backward jump with an offset >= -32768, or of a forward jump with, of course, an unknown\n             * offset. In these cases we store the offset in 2 bytes (which will be increased in resizeInstructions, if\n             * needed).\n             */\n            code.putByte(opcode);\n            // Currently, GOTO_W is the only supported wide reference\n            label.put(this, code, code.length - 1, opcode == Opcodes.GOTO_W);\n        }\n    }\n\n    public void visitLabel(final Label label) {\n        // resolves previous forward references to label, if any\n        label.resolve(this, code.length, code.data);\n    }\n\n    public void visitLdcInsn(final Object cst) {\n        Item i = cw.newConstItem(cst);\n        // Label currentBlock = this.currentBlock;\n        // adds the instruction to the bytecode of the method\n        int index = i.index;\n        if (i.type == 5 /* ClassWriter.LONG */ || i.type == 6 /* ClassWriter.DOUBLE */) {\n            code.put12(20 /* LDC2_W */, index);\n        } else if (index >= 256) {\n            code.put12(19 /* LDC_W */, index);\n        } else {\n            code.put11(18 /*Opcodes.LDC*/, index);\n        }\n    }\n\n    public void visitIincInsn(final int var, final int increment) {\n        // adds the instruction to the bytecode of the method\n//        if ((var > 255) || (increment > 127) || (increment < -128)) {\n//            code.putByte(196 /* WIDE */).put12(Opcodes.IINC, var).putShort(increment);\n//        } else {\n            code.putByte(132 /* Opcodes.IINC*/ ).put11(var, increment);\n//        }\n    }\n\n    public void visitMaxs(final int maxStack, final int maxLocals) {\n        this.maxStack = maxStack;\n        this.maxLocals = maxLocals;\n    }\n\n    public void visitEnd() {\n    }\n\n    // ------------------------------------------------------------------------\n    // Utility methods: control flow analysis algorithm\n    // ------------------------------------------------------------------------\n\n    // ------------------------------------------------------------------------\n    // Utility methods: stack map frames\n    // ------------------------------------------------------------------------\n\n    // ------------------------------------------------------------------------\n    // Utility methods: dump bytecode array\n    // ------------------------------------------------------------------------\n\n    /**\n     * Returns the size of the bytecode of this method.\n     * \n     * @return the size of the bytecode of this method.\n     */\n    final int getSize() {\n        int size = 8;\n        if (code.length > 0) {\n            cw.newUTF8(\"Code\");\n            size += 18 + code.length + 8 * 0;\n        }\n        if (exceptionCount > 0) {\n            cw.newUTF8(\"Exceptions\");\n            size += 8 + 2 * exceptionCount;\n        }\n        return size;\n    }\n\n    /**\n     * Puts the bytecode of this method in the given byte vector.\n     * \n     * @param out the byte vector into which the bytecode of this method must be copied.\n     */\n    final void put(final ByteVector out) {\n        final int mask = 393216; //Opcodes.ACC_DEPRECATED | ClassWriter.ACC_SYNTHETIC_ATTRIBUTE | ((access & ClassWriter.ACC_SYNTHETIC_ATTRIBUTE) / (ClassWriter.ACC_SYNTHETIC_ATTRIBUTE / Opcodes.ACC_SYNTHETIC));\n        out.putShort(access & ~mask).putShort(name).putShort(desc);\n        int attributeCount = 0;\n        if (code.length > 0) {\n            ++attributeCount;\n        }\n        if (exceptionCount > 0) {\n            ++attributeCount;\n        }\n\n        out.putShort(attributeCount);\n        if (code.length > 0) {\n            int size = 12 + code.length + 8 * 0; // handlerCount\n            out.putShort(cw.newUTF8(\"Code\")).putInt(size);\n            out.putShort(maxStack).putShort(maxLocals);\n            out.putInt(code.length).putByteArray(code.data, 0, code.length);\n            out.putShort(0); // handlerCount\n            attributeCount = 0;\n            out.putShort(attributeCount);\n        }\n        if (exceptionCount > 0) {\n            out.putShort(cw.newUTF8(\"Exceptions\")).putInt(2 * exceptionCount + 2);\n            out.putShort(exceptionCount);\n            for (int i = 0; i < exceptionCount; ++i) {\n                out.putShort(exceptions[i]);\n            }\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/asm/Opcodes.java",
    "content": "/***\n * ASM: a very small and fast Java bytecode manipulation framework\n * Copyright (c) 2000-2007 INRIA, France Telecom\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n *    notice, this list of conditions and the following disclaimer in the\n *    documentation and/or other materials provided with the distribution.\n * 3. Neither the name of the copyright holders nor the names of its\n *    contributors may be used to endorse or promote products derived from\n *    this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n * THE POSSIBILITY OF SUCH DAMAGE.\n */\npackage com.alibaba.fastjson.asm;\n\n/**\n * Defines the JVM opcodes, access flags and array type codes. This interface does not define all the JVM opcodes\n * because some opcodes are automatically handled. For example, the xLOAD and xSTORE opcodes are automatically replaced\n * by xLOAD_n and xSTORE_n opcodes when possible. The xLOAD_n and xSTORE_n opcodes are therefore not defined in this\n * interface. Likewise for LDC, automatically replaced by LDC_W or LDC2_W when necessary, WIDE, GOTO_W and JSR_W.\n * \n * @author Eric Bruneton\n * @author Eugene Kuleshov\n */\npublic interface Opcodes {\n    int T_INT = 10;\n\n    // versions\n\n    // int V1_1 = 3 << 16 | 45;\n    // int V1_2 = 0 << 16 | 46;\n    // int V1_3 = 0 << 16 | 47;\n    // int V1_4 = 0 << 16 | 48;\n    int    V1_5                = 0 << 16 | 49;\n    // int V1_6 = 0 << 16 | 50;\n    // int V1_7 = 0 << 16 | 51;\n\n    // access flags\n\n    int    ACC_PUBLIC          = 0x0001;                 // class, field, method\n    int    ACC_SUPER           = 0x0020;                 // class\n\n    // opcodes // visit method (- = idem)\n\n    int    ACONST_NULL         = 1;                      // -\n    int    ICONST_0            = 3;                      // -\n    int    ICONST_1            = 4;                      // -\n    int    LCONST_0            = 9;                      // -\n    int    LCONST_1            = 10;                     // -\n    int    FCONST_0            = 11;                     // -\n    int    DCONST_0            = 14;                     // -\n    int    BIPUSH              = 16;                     // visitIntInsn\n                                                          // int SIPUSH = 17; // -\n//    int    LDC                 = 18;                     // visitLdcInsn\n    // int LDC_W = 19; // -\n    // int LDC2_W = 20; // -\n    int    ILOAD               = 21;                     // visitVarInsn\n    int    LLOAD               = 22;                     // -\n    int    FLOAD               = 23;                     // -\n    int    DLOAD               = 24;                     // -\n    int    ALOAD               = 25;                     // -\n  \n    int    ISTORE              = 54;                     // visitVarInsn\n    int    LSTORE              = 55;                     // -\n    int    FSTORE              = 56;                     // -\n    int    DSTORE              = 57;                     // -\n    int    ASTORE              = 58;                     // -\n    int    IASTORE             = 79; // visitInsn\n    \n    int    POP                 = 87;                     // -\n//    int    POP2                = 88;                     // -\n    int    DUP                 = 89;                     // -\n                                                         \n    int    IADD                = 96;                     // -\n\n//    int    ISUB                = 100;                    // -\n                                                  \n    int    IAND                = 126;                    // -\n                                                          // int LAND = 127; // -\n    int    IOR                 = 128;                    // -\n                                                          // int LOR = 129; // -\n                                                          // int IXOR = 130; // -\n                                                          // int LXOR = 131; // -\n    // int    IINC                = 132;                    // visitIincInsn\n                                                       \n    int    LCMP                = 148;                    // -\n    int    FCMPL               = 149;                    // -\n    int    DCMPL               = 151;                    // -\n    int    IFEQ                = 153;                    // visitJumpInsn\n    int    IFNE                = 154;                    // -\n    int    IFLE                = 158;                    // -\n    int    IF_ICMPEQ           = 159;                    // -\n    int    IF_ICMPNE           = 160;                    // -\n    int    IF_ICMPLT           = 161;                    // -\n    int    IF_ICMPGE           = 162;                    // -\n    int    IF_ICMPGT           = 163;                    // -\n    int    IF_ACMPEQ           = 165;                    // -\n    int    IF_ACMPNE           = 166;                    // -\n    int    GOTO                = 167;                    // -\n    int    RET                 = 169;                    // visitVarInsn\n    int    ARETURN             = 176;                    // -\n    int    RETURN              = 177;                    // -\n    int    GETSTATIC           = 178;                    // visitFieldInsn\n    int    GETFIELD            = 180;                    // -\n    int    PUTFIELD            = 181;                    // -\n    int    INVOKEVIRTUAL       = 182;                    // visitMethodInsn\n    int    INVOKESPECIAL       = 183;                    // -\n    int    INVOKESTATIC        = 184;                    // -\n    int    INVOKEINTERFACE     = 185;                    // -\n    // int INVOKEDYNAMIC = 186; // -\n    int    NEW                 = 187;                    // visitTypeInsn\n    int    NEWARRAY            = 188;                    // visitIntInsn\n                                                          // int ANEWARRAY = 189; // visitTypeInsn\n                                                          // int ARRAYLENGTH = 190; // visitInsn\n                                                          // int ATHROW = 191; // -\n    int    CHECKCAST           = 192;                    // visitTypeInsn\n    int    INSTANCEOF          = 193;\n    \n    int    IFNULL              = 198;                    // visitJumpInsn\n    int    IFNONNULL           = 199;                    // -\n    int    GOTO_W              = 200;                    // visitJumpInsn\n    // int JSR_W = 201; // -\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/asm/Type.java",
    "content": "/***\n * ASM: a very small and fast Java bytecode manipulation framework\n * Copyright (c) 2000-2007 INRIA, France Telecom\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n *    notice, this list of conditions and the following disclaimer in the\n *    documentation and/or other materials provided with the distribution.\n * 3. Neither the name of the copyright holders nor the names of its\n *    contributors may be used to endorse or promote products derived from\n *    this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n * THE POSSIBILITY OF SUCH DAMAGE.\n */\npackage com.alibaba.fastjson.asm;\n\n/**\n * A Java type. This class can be used to make it easier to manipulate type and method descriptors.\n * \n * @author Eric Bruneton\n * @author Chris Nokleberg\n */\npublic class Type {\n    /**\n     * The <tt>void</tt> type.\n     */\n    public static final Type VOID_TYPE    = new Type(0, null, ('V' << 24) | (5 << 16) | (0 << 8) | 0, 1);\n\n    /**\n     * The <tt>boolean</tt> type.\n     */\n    public static final Type BOOLEAN_TYPE = new Type(1, null, ('Z' << 24) | (0 << 16) | (5 << 8) | 1, 1);\n\n    /**\n     * The <tt>char</tt> type.\n     */\n    public static final Type CHAR_TYPE    = new Type(2, null, ('C' << 24) | (0 << 16) | (6 << 8) | 1, 1);\n\n    /**\n     * The <tt>byte</tt> type.\n     */\n    public static final Type BYTE_TYPE    = new Type(3, null, ('B' << 24) | (0 << 16) | (5 << 8) | 1, 1);\n\n    /**\n     * The <tt>short</tt> type.\n     */\n    public static final Type SHORT_TYPE   = new Type(4, null, ('S' << 24) | (0 << 16) | (7 << 8) | 1, 1);\n\n    /**\n     * The <tt>int</tt> type.\n     */\n    public static final Type INT_TYPE     = new Type(5, null, ('I' << 24) | (0 << 16) | (0 << 8) | 1, 1);\n\n    /**\n     * The <tt>float</tt> type.\n     */\n    public static final Type FLOAT_TYPE   = new Type(6, null, ('F' << 24) | (2 << 16) | (2 << 8) | 1, 1);\n\n    /**\n     * The <tt>long</tt> type.\n     */\n    public static final Type LONG_TYPE    = new Type(7, null, ('J' << 24) | (1 << 16) | (1 << 8) | 2, 1);\n\n    /**\n     * The <tt>double</tt> type.\n     */\n    public static final Type DOUBLE_TYPE  = new Type(8, null, ('D' << 24) | (3 << 16) | (3 << 8) | 2, 1);\n\n    // ------------------------------------------------------------------------\n    // Fields\n    // ------------------------------------------------------------------------\n\n    /**\n     * The sort of this Java type.\n     */\n    protected final int        sort;\n\n    /**\n     * A buffer containing the internal name of this Java type. This field is only used for reference types.\n     */\n    private final char[]     buf;\n\n    /**\n     * The offset of the internal name of this Java type in {@link #buf buf} or, for primitive types, the size,\n     * descriptor and getOpcode offsets for this type (byte 0 contains the size, byte 1 the descriptor, byte 2 the\n     * offset for IALOAD or IASTORE, byte 3 the offset for all other instructions).\n     */\n    private final int        off;\n\n    /**\n     * The length of the internal name of this Java type.\n     */\n    private final int        len;\n\n    // ------------------------------------------------------------------------\n    // Constructors\n    // ------------------------------------------------------------------------\n\n    private Type(final int sort, final char[] buf, final int off, final int len){\n        this.sort = sort;\n        this.buf = buf;\n        this.off = off;\n        this.len = len;\n    }\n\n    /**\n     * Returns the Java type corresponding to the given type descriptor.\n     * \n     * @param typeDescriptor a type descriptor.\n     * @return the Java type corresponding to the given type descriptor.\n     */\n    public static Type getType(final String typeDescriptor) {\n        return getType(typeDescriptor.toCharArray(), 0);\n    }\n\n    public static int getArgumentsAndReturnSizes(final String desc) {\n        int n = 1;\n        int c = 1;\n        while (true) {\n            char car = desc.charAt(c++);\n            if (car == ')') {\n                car = desc.charAt(c);\n                return n << 2 | (car == 'V' ? 0 : (car == 'D' || car == 'J' ? 2 : 1));\n            } else if (car == 'L') {\n                while (desc.charAt(c++) != ';') {\n                }\n                n += 1;\n//            } else if (car == '[') {\n//                while ((car = desc.charAt(c)) == '[') {\n//                    ++c;\n//                }\n//                if (car == 'D' || car == 'J') {\n//                    n -= 1;\n//                }\n            } else if (car == 'D' || car == 'J') {\n                n += 2;\n            } else {\n                n += 1;\n            }\n        }\n    }\n\n    /**\n     * Returns the Java type corresponding to the given type descriptor.\n     * \n     * @param buf a buffer containing a type descriptor.\n     * @param off the offset of this descriptor in the previous buffer.\n     * @return the Java type corresponding to the given type descriptor.\n     */\n    private static Type getType(final char[] buf, final int off) {\n        int len;\n        switch (buf[off]) {\n            case 'V':\n                return VOID_TYPE;\n            case 'Z':\n                return BOOLEAN_TYPE;\n            case 'C':\n                return CHAR_TYPE;\n            case 'B':\n                return BYTE_TYPE;\n            case 'S':\n                return SHORT_TYPE;\n            case 'I':\n                return INT_TYPE;\n            case 'F':\n                return FLOAT_TYPE;\n            case 'J':\n                return LONG_TYPE;\n            case 'D':\n                return DOUBLE_TYPE;\n            case '[':\n                len = 1;\n                while (buf[off + len] == '[') {\n                    ++len;\n                }\n                if (buf[off + len] == 'L') {\n                    ++len;\n                    while (buf[off + len] != ';') {\n                        ++len;\n                    }\n                }\n                return new Type(9 /*ARRAY*/, buf, off, len + 1);\n                // case 'L':\n            default:\n                len = 1;\n                while (buf[off + len] != ';') {\n                    ++len;\n                }\n                return new Type(10/*OBJECT*/, buf, off + 1, len - 1);\n        }\n    }\n\n    public String getInternalName() {\n        return new String(buf, off, len);\n    }\n\n    // ------------------------------------------------------------------------\n    // Conversion to type descriptors\n    // ------------------------------------------------------------------------\n\n    /**\n     * Returns the descriptor corresponding to this Java type.\n     *\n     * @return the descriptor corresponding to this Java type.\n     */\n    String getDescriptor() {\n        return new String(this.buf, off, len);\n    }\n\n    private int getDimensions() {\n        int i = 1;\n        while (buf[off + i] == '[') {\n            ++i;\n        }\n        return i;\n    }\n\n    static Type[] getArgumentTypes(final String methodDescriptor) {\n        char[] buf = methodDescriptor.toCharArray();\n        int off = 1;\n        int size = 0;\n        for (;;) {\n            char car = buf[off++];\n            if (car == ')') {\n                break;\n            } else if (car == 'L') {\n                while (buf[off++] != ';') {\n                }\n                ++size;\n            } else if (car != '[') {\n                ++size;\n            }\n        }\n\n        Type[] args = new Type[size];\n        off = 1;\n        size = 0;\n        while (buf[off] != ')') {\n            args[size] = getType(buf, off);\n            off += args[size].len + (args[size].sort == 10 /*OBJECT*/ ? 2 : 0);\n            size += 1;\n        }\n        return args;\n    }\n\n    protected String getClassName() {\n        switch (sort) {\n            case 0: //VOID:\n                return \"void\";\n            case 1: //BOOLEAN:\n                return \"boolean\";\n            case 2: //CHAR:\n                return \"char\";\n            case 3: //BYTE:\n                return \"byte\";\n            case 4: //SHORT:\n                return \"short\";\n            case 5: //INT:\n                return \"int\";\n            case 6: //FLOAT:\n                return \"float\";\n            case 7: //LONG:\n                return \"long\";\n            case 8: //DOUBLE:\n                return \"double\";\n            case 9: //ARRAY:\n                Type elementType = getType(buf, off + getDimensions());\n                StringBuilder b = new StringBuilder(elementType.getClassName());\n                for (int i = getDimensions(); i > 0; --i) {\n                    b.append(\"[]\");\n                }\n                return b.toString();\n            // case OBJECT:\n            default:\n                return new String(buf, off, len).replace('/', '.');\n        }\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/asm/TypeCollector.java",
    "content": "package com.alibaba.fastjson.asm;\n\nimport com.alibaba.fastjson.util.ASMUtils;\n\nimport java.lang.reflect.Modifier;\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic class TypeCollector {\n    private static String JSONType = ASMUtils.desc(com.alibaba.fastjson.annotation.JSONType.class);\n\n    private static final Map<String, String> primitives = new HashMap<String, String>() {\n        {\n            put(\"int\",\"I\");\n            put(\"boolean\",\"Z\");\n            put(\"byte\", \"B\");\n            put(\"char\",\"C\");\n            put(\"short\",\"S\");\n            put(\"float\",\"F\");\n            put(\"long\",\"J\");\n            put(\"double\",\"D\");\n        }\n    };\n\n    private final String methodName;\n\n    private final Class<?>[] parameterTypes;\n\n    protected MethodCollector collector;\n\n    protected boolean jsonType;\n\n    public TypeCollector(String methodName, Class<?>[] parameterTypes) {\n        this.methodName = methodName;\n        this.parameterTypes = parameterTypes;\n        this.collector = null;\n    }\n\n    protected MethodCollector visitMethod(int access, String name, String desc) {\n        if (collector != null) {\n            return null;\n        }\n\n        if (!name.equals(methodName)) {\n            return null;\n        }\n\n        Type[] argTypes = Type.getArgumentTypes(desc);\n        int longOrDoubleQuantity = 0;\n        for (Type t : argTypes) {\n            String className = t.getClassName();\n            if (className.equals(\"long\") || className.equals(\"double\")) {\n                longOrDoubleQuantity++;\n            }\n        }\n\n        if (argTypes.length != this.parameterTypes.length) {\n            return null;\n        }\n        for (int i = 0; i < argTypes.length; i++) {\n            if (!correctTypeName(argTypes[i], this.parameterTypes[i].getName())) {\n                return null;\n            }\n        }\n\n        return collector = new MethodCollector(\n                Modifier.isStatic(access) ? 0 : 1,\n                argTypes.length + longOrDoubleQuantity);\n    }\n\n    public void visitAnnotation(String desc) {\n        if (JSONType.equals(desc)) {\n            jsonType = true;\n        }\n    }\n\n    private boolean correctTypeName(Type type, String paramTypeName) {\n        String s = type.getClassName();\n        // array notation needs cleanup.\n        StringBuilder braces = new StringBuilder();\n        while (s.endsWith(\"[]\")) {\n            braces.append('[');\n            s = s.substring(0, s.length() - 2);\n        }\n        if (braces.length() != 0) {\n            if (primitives.containsKey(s)) {\n                s = braces.append(primitives.get(s)).toString();\n            } else {\n                s = braces.append('L').append(s).append(';').toString();\n            }\n        }\n        return s.equals(paramTypeName);\n    }\n\n    public String[] getParameterNamesForMethod() {\n        if (collector == null || !collector.debugInfoPresent) {\n            return new String[0];\n        }\n        return collector.getResult().split(\",\");\n    }\n\n    public boolean matched() {\n        return collector != null;\n    }\n\n    public boolean hasJsonType() {\n        return jsonType;\n    }\n}"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/DefaultExtJSONParser.java",
    "content": "/*\n * Copyright 1999-2017 Alibaba Group.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage com.alibaba.fastjson.parser;\n\n\n/**\n * @author wenshao[szujobs@hotmail.com]\n */\n@Deprecated\npublic class DefaultExtJSONParser extends DefaultJSONParser {\n\n    public DefaultExtJSONParser(String input){\n        this(input, ParserConfig.getGlobalInstance());\n    }\n\n    public DefaultExtJSONParser(String input, ParserConfig mapping){\n        super(input, mapping);\n    }\n\n    public DefaultExtJSONParser(String input, ParserConfig mapping, int features){\n        super(input, mapping, features);\n    }\n\n    public DefaultExtJSONParser(char[] input, int length, ParserConfig mapping, int features){\n        super(input, length, mapping, features);\n    }\n\n    \n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/DefaultJSONParser.java",
    "content": "/*\r\n * Copyright 1999-2019 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.parser;\r\n\r\nimport com.alibaba.fastjson.*;\r\nimport com.alibaba.fastjson.parser.deserializer.*;\r\nimport com.alibaba.fastjson.serializer.*;\r\nimport com.alibaba.fastjson.util.TypeUtils;\r\n\r\nimport java.io.Closeable;\r\nimport java.lang.reflect.ParameterizedType;\r\nimport java.lang.reflect.Type;\r\nimport java.lang.reflect.TypeVariable;\r\nimport java.lang.reflect.WildcardType;\r\nimport java.math.BigDecimal;\r\nimport java.math.BigInteger;\r\nimport java.text.DateFormat;\r\nimport java.text.SimpleDateFormat;\r\nimport java.util.*;\r\n\r\nimport static com.alibaba.fastjson.parser.JSONLexer.EOI;\r\nimport static com.alibaba.fastjson.parser.JSONToken.*;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class DefaultJSONParser implements Closeable {\r\n\r\n    public final Object                input;\r\n    public final SymbolTable           symbolTable;\r\n    protected ParserConfig             config;\r\n\r\n    private final static Set<Class<?>> primitiveClasses   = new HashSet<Class<?>>();\r\n\r\n    private String                     dateFormatPattern  = JSON.DEFFAULT_DATE_FORMAT;\r\n    private DateFormat                 dateFormat;\r\n\r\n    public final JSONLexer             lexer;\r\n\r\n    protected ParseContext             context;\r\n\r\n    private ParseContext[]             contextArray;\r\n    private int                        contextArrayIndex  = 0;\r\n\r\n    private List<ResolveTask>          resolveTaskList;\r\n\r\n    public final static int            NONE               = 0;\r\n    public final static int            NeedToResolve      = 1;\r\n    public final static int            TypeNameRedirect   = 2;\r\n\r\n    public int                         resolveStatus      = NONE;\r\n\r\n    private List<ExtraTypeProvider>    extraTypeProviders = null;\r\n    private List<ExtraProcessor>       extraProcessors    = null;\r\n    protected FieldTypeResolver        fieldTypeResolver  = null;\r\n\r\n    private int                        objectKeyLevel     = 0;\r\n\r\n    private boolean                    autoTypeEnable;\r\n    private String[]                   autoTypeAccept     = null;\r\n\r\n    protected transient BeanContext    lastBeanContext;\r\n\r\n    static {\r\n        Class<?>[] classes = new Class[] {\r\n                boolean.class,\r\n                byte.class,\r\n                short.class,\r\n                int.class,\r\n                long.class,\r\n                float.class,\r\n                double.class,\r\n\r\n                Boolean.class,\r\n                Byte.class,\r\n                Short.class,\r\n                Integer.class,\r\n                Long.class,\r\n                Float.class,\r\n                Double.class,\r\n\r\n                BigInteger.class,\r\n                BigDecimal.class,\r\n                String.class\r\n        };\r\n\r\n        primitiveClasses.addAll(Arrays.asList(classes));\r\n    }\r\n\r\n    public String getDateFomartPattern() {\r\n        return dateFormatPattern;\r\n    }\r\n\r\n    public DateFormat getDateFormat() {\r\n        if (dateFormat == null) {\r\n            dateFormat = new SimpleDateFormat(dateFormatPattern, lexer.getLocale());\r\n            dateFormat.setTimeZone(lexer.getTimeZone());\r\n        }\r\n        return dateFormat;\r\n    }\r\n\r\n    public void setDateFormat(String dateFormat) {\r\n        this.dateFormatPattern = dateFormat;\r\n        this.dateFormat = null;\r\n    }\r\n\r\n    /**\r\n     * @deprecated\r\n     * @see setDateFormat\r\n     */\r\n    public void setDateFomrat(DateFormat dateFormat) {\r\n        this.setDateFormat(dateFormat);\r\n    }\r\n\r\n    public void setDateFormat(DateFormat dateFormat) {\r\n        this.dateFormat = dateFormat;\r\n    }\r\n\r\n    public DefaultJSONParser(String input){\r\n        this(input, ParserConfig.getGlobalInstance(), JSON.DEFAULT_PARSER_FEATURE);\r\n    }\r\n\r\n    public DefaultJSONParser(final String input, final ParserConfig config){\r\n        this(input, new JSONScanner(input, JSON.DEFAULT_PARSER_FEATURE), config);\r\n    }\r\n\r\n    public DefaultJSONParser(final String input, final ParserConfig config, int features){\r\n        this(input, new JSONScanner(input, features), config);\r\n    }\r\n\r\n    public DefaultJSONParser(final char[] input, int length, final ParserConfig config, int features){\r\n        this(input, new JSONScanner(input, length, features), config);\r\n    }\r\n\r\n    public DefaultJSONParser(final JSONLexer lexer){\r\n        this(lexer, ParserConfig.getGlobalInstance());\r\n    }\r\n\r\n    public DefaultJSONParser(final JSONLexer lexer, final ParserConfig config){\r\n        this(null, lexer, config);\r\n    }\r\n\r\n    public DefaultJSONParser(final Object input, final JSONLexer lexer, final ParserConfig config){\r\n        this.lexer = lexer;\r\n        this.input = input;\r\n        this.config = config;\r\n        this.symbolTable = config.symbolTable;\r\n\r\n        int ch = lexer.getCurrent();\r\n        if (ch == '{') {\r\n            lexer.next();\r\n            ((JSONLexerBase) lexer).token = JSONToken.LBRACE;\r\n        } else if (ch == '[') {\r\n            lexer.next();\r\n            ((JSONLexerBase) lexer).token = JSONToken.LBRACKET;\r\n        } else {\r\n            lexer.nextToken(); // prime the pump\r\n        }\r\n    }\r\n\r\n    public SymbolTable getSymbolTable() {\r\n        return symbolTable;\r\n    }\r\n\r\n    public String getInput() {\r\n        if (input instanceof char[]) {\r\n            return new String((char[]) input);\r\n        }\r\n        return input.toString();\r\n    }\r\n\r\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\r\n    public final Object parseObject(final Map object, Object fieldName) {\r\n        final JSONLexer lexer = this.lexer;\r\n\r\n        if (lexer.token() == JSONToken.NULL) {\r\n            lexer.nextToken();\r\n            return null;\r\n        }\r\n\r\n        if (lexer.token() == JSONToken.RBRACE) {\r\n            lexer.nextToken();\r\n            return object;\r\n        }\r\n\r\n        if (lexer.token() == JSONToken.LITERAL_STRING && lexer.stringVal().length() == 0) {\r\n            lexer.nextToken();\r\n            return object;\r\n        }\r\n\r\n        if (lexer.token() != JSONToken.LBRACE && lexer.token() != JSONToken.COMMA) {\r\n            throw new JSONException(\"syntax error, expect {, actual \" + lexer.tokenName() + \", \" + lexer.info());\r\n        }\r\n\r\n       ParseContext context = this.context;\r\n        try {\r\n            boolean isJsonObjectMap = object instanceof JSONObject;\r\n            Map map = isJsonObjectMap ? ((JSONObject) object).getInnerMap() : object;\r\n\r\n            boolean setContextFlag = false;\r\n            for (;;) {\r\n                lexer.skipWhitespace();\r\n                char ch = lexer.getCurrent();\r\n                if (lexer.isEnabled(Feature.AllowArbitraryCommas)) {\r\n                    while (ch == ',') {\r\n                        lexer.next();\r\n                        lexer.skipWhitespace();\r\n                        ch = lexer.getCurrent();\r\n                    }\r\n                }\r\n\r\n                boolean isObjectKey = false;\r\n                Object key;\r\n                if (ch == '\"') {\r\n                    key = lexer.scanSymbol(symbolTable, '\"');\r\n                    lexer.skipWhitespace();\r\n                    ch = lexer.getCurrent();\r\n                    if (ch != ':') {\r\n                        throw new JSONException(\"expect ':' at \" + lexer.pos() + \", name \" + key);\r\n                    }\r\n                } else if (ch == '}') {\r\n                    lexer.next();\r\n                    lexer.resetStringPosition();\r\n                    lexer.nextToken();\r\n\r\n                    if (!setContextFlag) {\r\n                        if (this.context != null && fieldName == this.context.fieldName && object == this.context.object) {\r\n                            context = this.context;\r\n                        } else {\r\n                            ParseContext contextR = setContext(object, fieldName);\r\n                            if (context == null) {\r\n                                context = contextR;\r\n                            }\r\n                            setContextFlag = true;\r\n                        }\r\n                    }\r\n\r\n                    return object;\r\n                } else if (ch == '\\'') {\r\n                    if (!lexer.isEnabled(Feature.AllowSingleQuotes)) {\r\n                        throw new JSONException(\"syntax error\");\r\n                    }\r\n\r\n                    key = lexer.scanSymbol(symbolTable, '\\'');\r\n                    lexer.skipWhitespace();\r\n                    ch = lexer.getCurrent();\r\n                    if (ch != ':') {\r\n                        throw new JSONException(\"expect ':' at \" + lexer.pos());\r\n                    }\r\n                } else if (ch == EOI) {\r\n                    throw new JSONException(\"syntax error\");\r\n                } else if (ch == ',') {\r\n                    throw new JSONException(\"syntax error\");\r\n                } else if ((ch >= '0' && ch <= '9') || ch == '-') {\r\n                    lexer.resetStringPosition();\r\n                    lexer.scanNumber();\r\n                    try {\r\n                        if (lexer.token() == JSONToken.LITERAL_INT) {\r\n                            key = lexer.integerValue();\r\n                        } else {\r\n                            key = lexer.decimalValue(true);\r\n                        }\r\n                        if (lexer.isEnabled(Feature.NonStringKeyAsString) || isJsonObjectMap) {\r\n                            key = key.toString();\r\n                        }\r\n                    } catch (NumberFormatException e) {\r\n                        throw new JSONException(\"parse number key error\" + lexer.info());\r\n                    }\r\n                    ch = lexer.getCurrent();\r\n                    if (ch != ':') {\r\n                        throw new JSONException(\"parse number key error\" + lexer.info());\r\n                    }\r\n                } else if (ch == '{' || ch == '[') {\r\n                    if (objectKeyLevel++ > 512) {\r\n                        throw new JSONException(\"object key level > 512\");\r\n                    }\r\n                    lexer.nextToken();\r\n                    key = parse();\r\n                    isObjectKey = true;\r\n                } else {\r\n                    if (!lexer.isEnabled(Feature.AllowUnQuotedFieldNames)) {\r\n                        throw new JSONException(\"syntax error\");\r\n                    }\r\n\r\n                    key = lexer.scanSymbolUnQuoted(symbolTable);\r\n                    lexer.skipWhitespace();\r\n                    ch = lexer.getCurrent();\r\n                    if (ch != ':') {\r\n                        throw new JSONException(\"expect ':' at \" + lexer.pos() + \", actual \" + ch);\r\n                    }\r\n                }\r\n\r\n                if (!isObjectKey) {\r\n                    lexer.next();\r\n                    lexer.skipWhitespace();\r\n                }\r\n\r\n                ch = lexer.getCurrent();\r\n\r\n                lexer.resetStringPosition();\r\n\r\n                if (key == JSON.DEFAULT_TYPE_KEY\r\n                        && !lexer.isEnabled(Feature.DisableSpecialKeyDetect)) {\r\n                    String typeName = lexer.scanSymbol(symbolTable, '\"');\r\n\r\n                    if (lexer.isEnabled(Feature.IgnoreAutoType)) {\r\n                        continue;\r\n                    }\r\n\r\n                    Class<?> clazz = null;\r\n                    if (object != null\r\n                            && object.getClass().getName().equals(typeName)) {\r\n                        clazz = object.getClass();\r\n                    } else if (\"java.util.HashMap\".equals(typeName)) {\r\n                        clazz = java.util.HashMap.class;\r\n                    } else if (\"java.util.LinkedHashMap\".equals(typeName)) {\r\n                        clazz = java.util.LinkedHashMap.class;\r\n                    } else {\r\n\r\n                        boolean allDigits = true;\r\n                        for (int i = 0; i < typeName.length(); ++i) {\r\n                            char c = typeName.charAt(i);\r\n                            if (c < '0' || c > '9') {\r\n                                allDigits = false;\r\n                                break;\r\n                            }\r\n                        }\r\n\r\n                        if (!allDigits) {\r\n                            clazz = config.checkAutoType(typeName, null, lexer.getFeatures());\r\n                        }\r\n                    }\r\n\r\n                    if (clazz == null) {\r\n                        map.put(JSON.DEFAULT_TYPE_KEY, typeName);\r\n                        continue;\r\n                    }\r\n\r\n                    lexer.nextToken(JSONToken.COMMA);\r\n                    if (lexer.token() == JSONToken.RBRACE) {\r\n                        lexer.nextToken(JSONToken.COMMA);\r\n                        try {\r\n                            Object instance = null;\r\n                            ObjectDeserializer deserializer = this.config.getDeserializer(clazz);\r\n                            if (deserializer instanceof JavaBeanDeserializer) {\r\n                            \tinstance = TypeUtils.cast(object, clazz, this.config);\r\n                            }\r\n\r\n                            if (instance == null) {\r\n                                if (clazz == Cloneable.class) {\r\n                                    instance = new HashMap();\r\n                                } else if (\"java.util.Collections$EmptyMap\".equals(typeName)) {\r\n                                    instance = Collections.emptyMap();\r\n                                } else if (\"java.util.Collections$UnmodifiableMap\".equals(typeName)) {\r\n                                    instance = Collections.unmodifiableMap(new HashMap());\r\n                                } else {\r\n                                    instance = clazz.newInstance();\r\n                                }\r\n                            }\r\n\r\n                            return instance;\r\n                        } catch (Exception e) {\r\n                            throw new JSONException(\"create instance error\", e);\r\n                        }\r\n                    }\r\n\r\n                    this.setResolveStatus(TypeNameRedirect);\r\n\r\n                    if (this.context != null\r\n                            && fieldName != null\r\n                            && !(fieldName instanceof Integer)\r\n                            && !(this.context.fieldName instanceof Integer)) {\r\n                        this.popContext();\r\n                    }\r\n\r\n                    if (object.size() > 0) {\r\n                        Object newObj = TypeUtils.cast(object, clazz, this.config);\r\n                        this.setResolveStatus(NONE);\r\n                        this.parseObject(newObj);\r\n                        return newObj;\r\n                    }\r\n\r\n                    ObjectDeserializer deserializer = config.getDeserializer(clazz);\r\n                    Class deserClass = deserializer.getClass();\r\n                    if (JavaBeanDeserializer.class.isAssignableFrom(deserClass)\r\n                            && deserClass != JavaBeanDeserializer.class\r\n                            && deserClass != ThrowableDeserializer.class) {\r\n                        this.setResolveStatus(NONE);\r\n                    } else if (deserializer instanceof MapDeserializer) {\r\n                        this.setResolveStatus(NONE);\r\n                    }\r\n                    Object obj = deserializer.deserialze(this, clazz, fieldName);\r\n                    return obj;\r\n                }\r\n\r\n                if (key == \"$ref\"\r\n                        && context != null\r\n                        && (object == null || object.size() == 0)\r\n                        && !lexer.isEnabled(Feature.DisableSpecialKeyDetect)) {\r\n                    lexer.nextToken(JSONToken.LITERAL_STRING);\r\n                    if (lexer.token() == JSONToken.LITERAL_STRING) {\r\n                        String ref = lexer.stringVal();\r\n                        lexer.nextToken(JSONToken.RBRACE);\r\n\r\n                        if (lexer.token() == JSONToken.COMMA) {\r\n                            map.put(key, ref);\r\n                            continue;\r\n                        }\r\n\r\n                        Object refValue = null;\r\n                        if (\"@\".equals(ref)) {\r\n                            if (this.context != null) {\r\n                                ParseContext thisContext = this.context;\r\n                                Object thisObj = thisContext.object;\r\n                                if (thisObj instanceof Object[] || thisObj instanceof Collection<?>) {\r\n                                    refValue = thisObj;\r\n                                } else if (thisContext.parent != null) {\r\n                                    refValue = thisContext.parent.object;\r\n                                }\r\n                            }\r\n                        } else if (\"..\".equals(ref)) {\r\n                            if (context.object != null) {\r\n                                refValue = context.object;\r\n                            } else {\r\n                                addResolveTask(new ResolveTask(context, ref));\r\n                                setResolveStatus(DefaultJSONParser.NeedToResolve);\r\n                            }\r\n                        } else if (\"$\".equals(ref)) {\r\n                            ParseContext rootContext = context;\r\n                            while (rootContext.parent != null) {\r\n                                rootContext = rootContext.parent;\r\n                            }\r\n\r\n                            if (rootContext.object != null) {\r\n                                refValue = rootContext.object;\r\n                            } else {\r\n                                addResolveTask(new ResolveTask(rootContext, ref));\r\n                                setResolveStatus(DefaultJSONParser.NeedToResolve);\r\n                            }\r\n                        } else {\r\n                            JSONPath jsonpath = JSONPath.compile(ref);\r\n                            if (jsonpath.isRef()) {\r\n                                addResolveTask(new ResolveTask(context, ref));\r\n                                setResolveStatus(DefaultJSONParser.NeedToResolve);\r\n                            } else {\r\n                                refValue = new JSONObject()\r\n                                        .fluentPut(\"$ref\", ref);\r\n                            }\r\n                        }\r\n\r\n                        if (lexer.token() != JSONToken.RBRACE) {\r\n                            throw new JSONException(\"syntax error, \" + lexer.info());\r\n                        }\r\n                        lexer.nextToken(JSONToken.COMMA);\r\n\r\n                        return refValue;\r\n                    } else {\r\n                        throw new JSONException(\"illegal ref, \" + JSONToken.name(lexer.token()));\r\n                    }\r\n                }\r\n\r\n                if (!setContextFlag) {\r\n                    if (this.context != null && fieldName == this.context.fieldName && object == this.context.object) {\r\n                        context = this.context;\r\n                    } else {\r\n                        ParseContext contextR = setContext(object, fieldName);\r\n                        if (context == null) {\r\n                            context = contextR;\r\n                        }\r\n                        setContextFlag = true;\r\n                    }\r\n                }\r\n\r\n                if (object.getClass() == JSONObject.class) {\r\n                    if (key == null) {\r\n                        key = \"null\";\r\n                    }\r\n                }\r\n\r\n                Object value;\r\n                if (ch == '\"') {\r\n                    lexer.scanString();\r\n                    String strValue = lexer.stringVal();\r\n                    value = strValue;\r\n\r\n                    if (lexer.isEnabled(Feature.AllowISO8601DateFormat)) {\r\n                        JSONScanner iso8601Lexer = new JSONScanner(strValue);\r\n                        if (iso8601Lexer.scanISO8601DateIfMatch()) {\r\n                            value = iso8601Lexer.getCalendar().getTime();\r\n                        }\r\n                        iso8601Lexer.close();\r\n                    }\r\n\r\n                    map.put(key, value);\r\n                } else if (ch >= '0' && ch <= '9' || ch == '-') {\r\n                    lexer.scanNumber();\r\n                    if (lexer.token() == JSONToken.LITERAL_INT) {\r\n                        value = lexer.integerValue();\r\n                    } else {\r\n                        value = lexer.decimalValue(lexer.isEnabled(Feature.UseBigDecimal));\r\n                    }\r\n\r\n                    map.put(key, value);\r\n                } else if (ch == '[') { // 减少嵌套，兼容android\r\n                    lexer.nextToken();\r\n\r\n                    JSONArray list = new JSONArray();\r\n\r\n                    final boolean parentIsArray = fieldName != null && fieldName.getClass() == Integer.class;\r\n//                    if (!parentIsArray) {\r\n//                        this.setContext(context);\r\n//                    }\r\n                    if (fieldName == null) {\r\n                        this.setContext(context);\r\n                    }\r\n\r\n                    this.parseArray(list, key);\r\n\r\n                    if (lexer.isEnabled(Feature.UseObjectArray)) {\r\n                        value = list.toArray();\r\n                    } else {\r\n                        value = list;\r\n                    }\r\n                    map.put(key, value);\r\n\r\n                    if (lexer.token() == JSONToken.RBRACE) {\r\n                        lexer.nextToken();\r\n                        return object;\r\n                    } else if (lexer.token() == JSONToken.COMMA) {\r\n                        continue;\r\n                    } else {\r\n                        throw new JSONException(\"syntax error\");\r\n                    }\r\n                } else if (ch == '{') { // 减少嵌套，兼容 Android\r\n                    lexer.nextToken();\r\n\r\n                    final boolean parentIsArray = fieldName != null && fieldName.getClass() == Integer.class;\r\n\r\n                    Map input;\r\n                    if (lexer.isEnabled(Feature.CustomMapDeserializer)) {\r\n                        MapDeserializer mapDeserializer = (MapDeserializer) config.getDeserializer(Map.class);\r\n\r\n\r\n                        input = (lexer.getFeatures() & Feature.OrderedField.mask) != 0\r\n                                ? mapDeserializer.createMap(Map.class, lexer.getFeatures())\r\n                                : mapDeserializer.createMap(Map.class);\r\n                    } else {\r\n                        input = new JSONObject(lexer.isEnabled(Feature.OrderedField));\r\n                    }\r\n                    ParseContext ctxLocal = null;\r\n\r\n                    if (!parentIsArray) {\r\n                        ctxLocal = setContext(this.context, input, key);\r\n                    }\r\n\r\n                    Object obj = null;\r\n                    boolean objParsed = false;\r\n                    if (fieldTypeResolver != null) {\r\n                        String resolveFieldName = key != null ? key.toString() : null;\r\n                        Type fieldType = fieldTypeResolver.resolve(object, resolveFieldName);\r\n                        if (fieldType != null) {\r\n                            ObjectDeserializer fieldDeser = config.getDeserializer(fieldType);\r\n                            obj = fieldDeser.deserialze(this, fieldType, key);\r\n                            objParsed = true;\r\n                        }\r\n                    }\r\n                    if (!objParsed) {\r\n                        obj = this.parseObject(input, key);\r\n                    }\r\n\r\n                    if (ctxLocal != null && input != obj) {\r\n                        ctxLocal.object = object;\r\n                    }\r\n\r\n                    if (key != null) {\r\n                        checkMapResolve(object, key.toString());\r\n                    }\r\n\r\n                    map.put(key, obj);\r\n\r\n                    if (parentIsArray) {\r\n                        //setContext(context, obj, key);\r\n                        setContext(obj, key);\r\n                    }\r\n\r\n                    if (lexer.token() == JSONToken.RBRACE) {\r\n                        lexer.nextToken();\r\n\r\n                        setContext(context);\r\n                        return object;\r\n                    } else if (lexer.token() == JSONToken.COMMA) {\r\n                        if (parentIsArray) {\r\n                            this.popContext();\r\n                        } else {\r\n                            this.setContext(context);\r\n                        }\r\n                        continue;\r\n                    } else {\r\n                        throw new JSONException(\"syntax error, \" + lexer.tokenName());\r\n                    }\r\n                } else {\r\n                    lexer.nextToken();\r\n                    value = parse();\r\n\r\n                    map.put(key, value);\r\n\r\n                    if (lexer.token() == JSONToken.RBRACE) {\r\n                        lexer.nextToken();\r\n                        return object;\r\n                    } else if (lexer.token() == JSONToken.COMMA) {\r\n                        continue;\r\n                    } else {\r\n                        throw new JSONException(\"syntax error, position at \" + lexer.pos() + \", name \" + key);\r\n                    }\r\n                }\r\n\r\n                lexer.skipWhitespace();\r\n                ch = lexer.getCurrent();\r\n                if (ch == ',') {\r\n                    lexer.next();\r\n                    continue;\r\n                } else if (ch == '}') {\r\n                    lexer.next();\r\n                    lexer.resetStringPosition();\r\n                    lexer.nextToken();\r\n\r\n                    // this.setContext(object, fieldName);\r\n                    this.setContext(value, key);\r\n\r\n                    return object;\r\n                } else {\r\n                    throw new JSONException(\"syntax error, position at \" + lexer.pos() + \", name \" + key);\r\n                }\r\n\r\n            }\r\n        } finally {\r\n            this.setContext(context);\r\n        }\r\n\r\n    }\r\n\r\n    public ParserConfig getConfig() {\r\n        return config;\r\n    }\r\n\r\n    public void setConfig(ParserConfig config) {\r\n        this.config = config;\r\n    }\r\n\r\n    // compatible\r\n    @SuppressWarnings(\"unchecked\")\r\n    public <T> T parseObject(Class<T> clazz) {\r\n        return (T) parseObject(clazz, null);\r\n    }\r\n\r\n    public <T> T parseObject(Type type) {\r\n        return parseObject(type, null);\r\n    }\r\n\r\n    @SuppressWarnings(\"unchecked\")\r\n    public <T> T parseObject(Type type, Object fieldName) {\r\n        int token = lexer.token();\r\n        if (token == JSONToken.NULL) {\r\n            lexer.nextToken();\r\n\r\n            return (T) TypeUtils.optionalEmpty(type);\r\n        }\r\n\r\n        if (token == JSONToken.LITERAL_STRING) {\r\n            if (type == byte[].class) {\r\n                byte[] bytes = lexer.bytesValue();\r\n                lexer.nextToken();\r\n                return (T) bytes;\r\n            }\r\n\r\n            if (type == char[].class) {\r\n                String strVal = lexer.stringVal();\r\n                lexer.nextToken();\r\n                return (T) strVal.toCharArray();\r\n            }\r\n        }\r\n\r\n        ObjectDeserializer deserializer = config.getDeserializer(type);\r\n\r\n        try {\r\n            if (deserializer.getClass() == JavaBeanDeserializer.class) {\r\n                if (lexer.token()!= JSONToken.LBRACE && lexer.token()!=JSONToken.LBRACKET) {\r\n                throw new JSONException(\"syntax error,expect start with { or [,but actually start with \"+ lexer.tokenName());\r\n            }\r\n                return (T) ((JavaBeanDeserializer) deserializer).deserialze(this, type, fieldName, 0);\r\n            } else {\r\n                return (T) deserializer.deserialze(this, type, fieldName);\r\n            }\r\n        } catch (JSONException e) {\r\n            throw e;\r\n        } catch (Throwable e) {\r\n            throw new JSONException(e.getMessage(), e);\r\n        }\r\n    }\r\n\r\n    public <T> List<T> parseArray(Class<T> clazz) {\r\n        List<T> array = new ArrayList<T>();\r\n        parseArray(clazz, array);\r\n        return array;\r\n    }\r\n\r\n    public void parseArray(Class<?> clazz, @SuppressWarnings(\"rawtypes\") Collection array) {\r\n        parseArray((Type) clazz, array);\r\n    }\r\n\r\n    @SuppressWarnings(\"rawtypes\")\r\n    public void parseArray(Type type, Collection array) {\r\n        parseArray(type, array, null);\r\n    }\r\n\r\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\r\n    public void parseArray(Type type, Collection array, Object fieldName) {\r\n        int token = lexer.token();\r\n        if (token == JSONToken.SET || token == JSONToken.TREE_SET) {\r\n            lexer.nextToken();\r\n            token = lexer.token();\r\n        }\r\n\r\n        if (token != JSONToken.LBRACKET) {\r\n            throw new JSONException(\"field \" + fieldName + \" expect '[', but \" + JSONToken.name(token) + \", \" + lexer.info());\r\n        }\r\n\r\n        ObjectDeserializer deserializer = null;\r\n        if (int.class == type) {\r\n            deserializer = IntegerCodec.instance;\r\n            lexer.nextToken(JSONToken.LITERAL_INT);\r\n        } else if (String.class == type) {\r\n            deserializer = StringCodec.instance;\r\n            lexer.nextToken(JSONToken.LITERAL_STRING);\r\n        } else {\r\n            deserializer = config.getDeserializer(type);\r\n            lexer.nextToken(deserializer.getFastMatchToken());\r\n        }\r\n\r\n        ParseContext context = this.context;\r\n        this.setContext(array, fieldName);\r\n        try {\r\n            for (int i = 0;; ++i) {\r\n                if (lexer.isEnabled(Feature.AllowArbitraryCommas)) {\r\n                    while (lexer.token() == JSONToken.COMMA) {\r\n                        lexer.nextToken();\r\n                        continue;\r\n                    }\r\n                }\r\n\r\n                if (lexer.token() == JSONToken.RBRACKET) {\r\n                    break;\r\n                }\r\n\r\n                if (int.class == type) {\r\n                    Object val = IntegerCodec.instance.deserialze(this, null, null);\r\n                    array.add(val);\r\n                } else if (String.class == type) {\r\n                    String value;\r\n                    if (lexer.token() == JSONToken.LITERAL_STRING) {\r\n                        value = lexer.stringVal();\r\n                        lexer.nextToken(JSONToken.COMMA);\r\n                    } else {\r\n                        Object obj = this.parse();\r\n                        if (obj == null) {\r\n                            value = null;\r\n                        } else {\r\n                            value = obj.toString();\r\n                        }\r\n                    }\r\n\r\n                    array.add(value);\r\n                } else {\r\n                    Object val;\r\n                    if (lexer.token() == JSONToken.NULL) {\r\n                        lexer.nextToken();\r\n                        val = null;\r\n                    } else {\r\n                        val = deserializer.deserialze(this, type, i);\r\n                    }\r\n                    array.add(val);\r\n                    checkListResolve(array);\r\n                }\r\n\r\n                if (lexer.token() == JSONToken.COMMA) {\r\n                    lexer.nextToken(deserializer.getFastMatchToken());\r\n                    continue;\r\n                }\r\n            }\r\n        } finally {\r\n            this.setContext(context);\r\n        }\r\n\r\n        lexer.nextToken(JSONToken.COMMA);\r\n    }\r\n\r\n    public Object[] parseArray(Type[] types) {\r\n        if (lexer.token() == JSONToken.NULL) {\r\n            lexer.nextToken(JSONToken.COMMA);\r\n            return null;\r\n        }\r\n\r\n        if (lexer.token() != JSONToken.LBRACKET) {\r\n            throw new JSONException(\"syntax error : \" + lexer.tokenName());\r\n        }\r\n\r\n        Object[] list = new Object[types.length];\r\n        if (types.length == 0) {\r\n            lexer.nextToken(JSONToken.RBRACKET);\r\n\r\n            if (lexer.token() != JSONToken.RBRACKET) {\r\n                throw new JSONException(\"syntax error\");\r\n            }\r\n\r\n            lexer.nextToken(JSONToken.COMMA);\r\n            return new Object[0];\r\n        }\r\n\r\n        lexer.nextToken(JSONToken.LITERAL_INT);\r\n\r\n        for (int i = 0; i < types.length; ++i) {\r\n            Object value;\r\n\r\n            if (lexer.token() == JSONToken.NULL) {\r\n                value = null;\r\n                lexer.nextToken(JSONToken.COMMA);\r\n            } else {\r\n                Type type = types[i];\r\n                if (type == int.class || type == Integer.class) {\r\n                    if (lexer.token() == JSONToken.LITERAL_INT) {\r\n                        value = Integer.valueOf(lexer.intValue());\r\n                        lexer.nextToken(JSONToken.COMMA);\r\n                    } else {\r\n                        value = this.parse();\r\n                        value = TypeUtils.cast(value, type, config);\r\n                    }\r\n                } else if (type == String.class) {\r\n                    if (lexer.token() == JSONToken.LITERAL_STRING) {\r\n                        value = lexer.stringVal();\r\n                        lexer.nextToken(JSONToken.COMMA);\r\n                    } else {\r\n                        value = this.parse();\r\n                        value = TypeUtils.cast(value, type, config);\r\n                    }\r\n                } else {\r\n                    boolean isArray = false;\r\n                    Class<?> componentType = null;\r\n                    if (i == types.length - 1) {\r\n                        if (type instanceof Class) {\r\n                            Class<?> clazz = (Class<?>) type;\r\n                            //如果最后一个type是字节数组，且当前token为字符串类型，不应该当作可变长参数进行处理\r\n                            //而是作为一个整体的Base64字符串进行反序列化\r\n                            if (!((clazz == byte[].class || clazz == char[].class) && lexer.token() == LITERAL_STRING)) {\r\n                                isArray = clazz.isArray();\r\n                                componentType = clazz.getComponentType();\r\n                            }\r\n                        }\r\n                    }\r\n\r\n                    // support varArgs\r\n                    if (isArray && lexer.token() != JSONToken.LBRACKET) {\r\n                        List<Object> varList = new ArrayList<Object>();\r\n\r\n                        ObjectDeserializer deserializer = config.getDeserializer(componentType);\r\n                        int fastMatch = deserializer.getFastMatchToken();\r\n\r\n                        if (lexer.token() != JSONToken.RBRACKET) {\r\n                            for (;;) {\r\n                                Object item = deserializer.deserialze(this, type, null);\r\n                                varList.add(item);\r\n\r\n                                if (lexer.token() == JSONToken.COMMA) {\r\n                                    lexer.nextToken(fastMatch);\r\n                                } else if (lexer.token() == JSONToken.RBRACKET) {\r\n                                    break;\r\n                                } else {\r\n                                    throw new JSONException(\"syntax error :\" + JSONToken.name(lexer.token()));\r\n                                }\r\n                            }\r\n                        }\r\n\r\n                        value = TypeUtils.cast(varList, type, config);\r\n                    } else {\r\n                        ObjectDeserializer deserializer = config.getDeserializer(type);\r\n                        value = deserializer.deserialze(this, type, i);\r\n                    }\r\n                }\r\n            }\r\n            list[i] = value;\r\n\r\n            if (lexer.token() == JSONToken.RBRACKET) {\r\n                break;\r\n            }\r\n\r\n            if (lexer.token() != JSONToken.COMMA) {\r\n                throw new JSONException(\"syntax error :\" + JSONToken.name(lexer.token()));\r\n            }\r\n\r\n            if (i == types.length - 1) {\r\n                lexer.nextToken(JSONToken.RBRACKET);\r\n            } else {\r\n                lexer.nextToken(JSONToken.LITERAL_INT);\r\n            }\r\n        }\r\n\r\n        if (lexer.token() != JSONToken.RBRACKET) {\r\n            throw new JSONException(\"syntax error\");\r\n        }\r\n\r\n        lexer.nextToken(JSONToken.COMMA);\r\n\r\n        return list;\r\n    }\r\n\r\n    public void parseObject(Object object) {\r\n        Class<?> clazz = object.getClass();\r\n        JavaBeanDeserializer beanDeser = null;\r\n        ObjectDeserializer deserializer = config.getDeserializer(clazz);\r\n        if (deserializer instanceof JavaBeanDeserializer) {\r\n            beanDeser = (JavaBeanDeserializer) deserializer;\r\n        }\r\n\r\n        if (lexer.token() != JSONToken.LBRACE && lexer.token() != JSONToken.COMMA) {\r\n            throw new JSONException(\"syntax error, expect {, actual \" + lexer.tokenName());\r\n        }\r\n\r\n        for (;;) {\r\n            // lexer.scanSymbol\r\n            String key = lexer.scanSymbol(symbolTable);\r\n\r\n            if (key == null) {\r\n                if (lexer.token() == JSONToken.RBRACE) {\r\n                    lexer.nextToken(JSONToken.COMMA);\r\n                    break;\r\n                }\r\n                if (lexer.token() == JSONToken.COMMA) {\r\n                    if (lexer.isEnabled(Feature.AllowArbitraryCommas)) {\r\n                        continue;\r\n                    }\r\n                }\r\n            }\r\n\r\n            FieldDeserializer fieldDeser = null;\r\n            if (beanDeser != null) {\r\n                fieldDeser = beanDeser.getFieldDeserializer(key);\r\n            }\r\n\r\n            if (fieldDeser == null) {\r\n                if (!lexer.isEnabled(Feature.IgnoreNotMatch)) {\r\n                    throw new JSONException(\"setter not found, class \" + clazz.getName() + \", property \" + key);\r\n                }\r\n\r\n                lexer.nextTokenWithColon();\r\n                parse(); // skip\r\n\r\n                if (lexer.token() == JSONToken.RBRACE) {\r\n                    lexer.nextToken();\r\n                    return;\r\n                }\r\n\r\n                continue;\r\n            } else {\r\n                Class<?> fieldClass = fieldDeser.fieldInfo.fieldClass;\r\n                Type fieldType = fieldDeser.fieldInfo.fieldType;\r\n                Object fieldValue;\r\n                if (fieldClass == int.class) {\r\n                    lexer.nextTokenWithColon(JSONToken.LITERAL_INT);\r\n                    fieldValue = IntegerCodec.instance.deserialze(this, fieldType, null);\r\n                } else if (fieldClass == String.class) {\r\n                    lexer.nextTokenWithColon(JSONToken.LITERAL_STRING);\r\n                    fieldValue = StringCodec.deserialze(this);\r\n                } else if (fieldClass == long.class) {\r\n                    lexer.nextTokenWithColon(JSONToken.LITERAL_INT);\r\n                    fieldValue = LongCodec.instance.deserialze(this, fieldType, null);\r\n                } else {\r\n                    ObjectDeserializer fieldValueDeserializer = config.getDeserializer(fieldClass, fieldType);\r\n\r\n                    lexer.nextTokenWithColon(fieldValueDeserializer.getFastMatchToken());\r\n                    fieldValue = fieldValueDeserializer.deserialze(this, fieldType, null);\r\n                }\r\n\r\n                fieldDeser.setValue(object, fieldValue);\r\n            }\r\n\r\n            if (lexer.token() == JSONToken.COMMA) {\r\n                continue;\r\n            }\r\n\r\n            if (lexer.token() == JSONToken.RBRACE) {\r\n                lexer.nextToken(JSONToken.COMMA);\r\n                return;\r\n            }\r\n        }\r\n    }\r\n\r\n    public Object parseArrayWithType(Type collectionType) {\r\n        if (lexer.token() == JSONToken.NULL) {\r\n            lexer.nextToken();\r\n            return null;\r\n        }\r\n\r\n        Type[] actualTypes = ((ParameterizedType) collectionType).getActualTypeArguments();\r\n\r\n        if (actualTypes.length != 1) {\r\n            throw new JSONException(\"not support type \" + collectionType);\r\n        }\r\n\r\n        Type actualTypeArgument = actualTypes[0];\r\n\r\n        if (actualTypeArgument instanceof Class) {\r\n            List<Object> array = new ArrayList<Object>();\r\n            this.parseArray((Class<?>) actualTypeArgument, array);\r\n            return array;\r\n        }\r\n\r\n        if (actualTypeArgument instanceof WildcardType) {\r\n            WildcardType wildcardType = (WildcardType) actualTypeArgument;\r\n\r\n            // assert wildcardType.getUpperBounds().length == 1;\r\n            Type upperBoundType = wildcardType.getUpperBounds()[0];\r\n\r\n            // assert upperBoundType instanceof Class;\r\n            if (Object.class.equals(upperBoundType)) {\r\n                if (wildcardType.getLowerBounds().length == 0) {\r\n                    // Collection<?>\r\n                    return parse();\r\n                } else {\r\n                    throw new JSONException(\"not support type : \" + collectionType);\r\n                }\r\n            }\r\n\r\n            List<Object> array = new ArrayList<Object>();\r\n            this.parseArray((Class<?>) upperBoundType, array);\r\n            return array;\r\n\r\n            // throw new JSONException(\"not support type : \" +\r\n            // collectionType);return parse();\r\n        }\r\n\r\n        if (actualTypeArgument instanceof TypeVariable) {\r\n            TypeVariable<?> typeVariable = (TypeVariable<?>) actualTypeArgument;\r\n            Type[] bounds = typeVariable.getBounds();\r\n\r\n            if (bounds.length != 1) {\r\n                throw new JSONException(\"not support : \" + typeVariable);\r\n            }\r\n\r\n            Type boundType = bounds[0];\r\n            if (boundType instanceof Class) {\r\n                List<Object> array = new ArrayList<Object>();\r\n                this.parseArray((Class<?>) boundType, array);\r\n                return array;\r\n            }\r\n        }\r\n\r\n        if (actualTypeArgument instanceof ParameterizedType) {\r\n            ParameterizedType parameterizedType = (ParameterizedType) actualTypeArgument;\r\n\r\n            List<Object> array = new ArrayList<Object>();\r\n            this.parseArray(parameterizedType, array);\r\n            return array;\r\n        }\r\n\r\n        throw new JSONException(\"TODO : \" + collectionType);\r\n    }\r\n\r\n    public void acceptType(String typeName) {\r\n        JSONLexer lexer = this.lexer;\r\n\r\n        lexer.nextTokenWithColon();\r\n\r\n        if (lexer.token() != JSONToken.LITERAL_STRING) {\r\n            throw new JSONException(\"type not match error\");\r\n        }\r\n\r\n        if (typeName.equals(lexer.stringVal())) {\r\n            lexer.nextToken();\r\n            if (lexer.token() == JSONToken.COMMA) {\r\n                lexer.nextToken();\r\n            }\r\n        } else {\r\n            throw new JSONException(\"type not match error\");\r\n        }\r\n    }\r\n\r\n    public int getResolveStatus() {\r\n        return resolveStatus;\r\n    }\r\n\r\n    public void setResolveStatus(int resolveStatus) {\r\n        this.resolveStatus = resolveStatus;\r\n    }\r\n\r\n    public Object getObject(String path) {\r\n        for (int i = 0; i < contextArrayIndex; ++i) {\r\n            if (path.equals(contextArray[i].toString())) {\r\n                return contextArray[i].object;\r\n            }\r\n        }\r\n\r\n        return null;\r\n    }\r\n\r\n    @SuppressWarnings(\"rawtypes\")\r\n    public void checkListResolve(Collection array) {\r\n        if (resolveStatus == NeedToResolve) {\r\n            if (array instanceof List) {\r\n                final int index = array.size() - 1;\r\n                final List list = (List) array;\r\n                ResolveTask task = getLastResolveTask();\r\n                task.fieldDeserializer = new ResolveFieldDeserializer(this, list, index);\r\n                task.ownerContext = context;\r\n                setResolveStatus(DefaultJSONParser.NONE);\r\n            } else {\r\n                ResolveTask task = getLastResolveTask();\r\n                task.fieldDeserializer  = new ResolveFieldDeserializer(array);\r\n                task.ownerContext = context;\r\n                setResolveStatus(DefaultJSONParser.NONE);\r\n            }\r\n        }\r\n    }\r\n\r\n    @SuppressWarnings(\"rawtypes\")\r\n    public void checkMapResolve(Map object, Object fieldName) {\r\n        if (resolveStatus == NeedToResolve) {\r\n            ResolveFieldDeserializer fieldResolver = new ResolveFieldDeserializer(object, fieldName);\r\n            ResolveTask task = getLastResolveTask();\r\n            task.fieldDeserializer = fieldResolver;\r\n            task.ownerContext = context;\r\n            setResolveStatus(DefaultJSONParser.NONE);\r\n        }\r\n    }\r\n\r\n    @SuppressWarnings(\"rawtypes\")\r\n    public Object parseObject(final Map object) {\r\n        return parseObject(object, null);\r\n    }\r\n\r\n    public JSONObject parseObject() {\r\n        JSONObject object = new JSONObject(lexer.isEnabled(Feature.OrderedField));\r\n        Object parsedObject = parseObject(object);\r\n\r\n        if (parsedObject instanceof JSONObject) {\r\n            return (JSONObject) parsedObject;\r\n        }\r\n\r\n        if (parsedObject == null) {\r\n            return null;\r\n        }\r\n\r\n        return new JSONObject((Map) parsedObject);\r\n    }\r\n\r\n    @SuppressWarnings(\"rawtypes\")\r\n    public final void parseArray(final Collection array) {\r\n        parseArray(array, null);\r\n    }\r\n\r\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\r\n    public final void parseArray(final Collection array, Object fieldName) {\r\n        final JSONLexer lexer = this.lexer;\r\n\r\n        if (lexer.token() == JSONToken.SET || lexer.token() == JSONToken.TREE_SET) {\r\n            lexer.nextToken();\r\n        }\r\n\r\n        if (lexer.token() != JSONToken.LBRACKET) {\r\n            throw new JSONException(\"syntax error, expect [, actual \" + JSONToken.name(lexer.token()) + \", pos \"\r\n                                    + lexer.pos() + \", fieldName \" + fieldName);\r\n        }\r\n\r\n        lexer.nextToken(JSONToken.LITERAL_STRING);\r\n\r\n        if (this.context != null && this.context.level > 512) {\r\n            throw new JSONException(\"array level > 512\");\r\n        }\r\n\r\n        ParseContext context = this.context;\r\n        this.setContext(array, fieldName);\r\n        try {\r\n            for (int i = 0; ; ++i) {\r\n                if (lexer.isEnabled(Feature.AllowArbitraryCommas)) {\r\n                    while (lexer.token() == JSONToken.COMMA) {\r\n                        lexer.nextToken();\r\n                        continue;\r\n                    }\r\n                }\r\n\r\n                Object value;\r\n                switch (lexer.token()) {\r\n                    case LITERAL_INT:\r\n                        value = lexer.integerValue();\r\n                        lexer.nextToken(JSONToken.COMMA);\r\n                        break;\r\n                    case LITERAL_FLOAT:\r\n                        if (lexer.isEnabled(Feature.UseBigDecimal)) {\r\n                            value = lexer.decimalValue(true);\r\n                        } else {\r\n                            value = lexer.decimalValue(false);\r\n                        }\r\n                        lexer.nextToken(JSONToken.COMMA);\r\n                        break;\r\n                    case LITERAL_STRING:\r\n                        String stringLiteral = lexer.stringVal();\r\n                        lexer.nextToken(JSONToken.COMMA);\r\n\r\n                        if (lexer.isEnabled(Feature.AllowISO8601DateFormat)) {\r\n                            JSONScanner iso8601Lexer = new JSONScanner(stringLiteral);\r\n                            if (iso8601Lexer.scanISO8601DateIfMatch()) {\r\n                                value = iso8601Lexer.getCalendar().getTime();\r\n                            } else {\r\n                                value = stringLiteral;\r\n                            }\r\n                            iso8601Lexer.close();\r\n                        } else {\r\n                            value = stringLiteral;\r\n                        }\r\n\r\n                        break;\r\n                    case TRUE:\r\n                        value = Boolean.TRUE;\r\n                        lexer.nextToken(JSONToken.COMMA);\r\n                        break;\r\n                    case FALSE:\r\n                        value = Boolean.FALSE;\r\n                        lexer.nextToken(JSONToken.COMMA);\r\n                        break;\r\n                    case LBRACE:\r\n                        JSONObject object = new JSONObject(lexer.isEnabled(Feature.OrderedField));\r\n                        value = parseObject(object, i);\r\n                        break;\r\n                    case LBRACKET:\r\n                        Collection items = new JSONArray();\r\n                        parseArray(items, i);\r\n                        if (lexer.isEnabled(Feature.UseObjectArray)) {\r\n                            value = items.toArray();\r\n                        } else {\r\n                            value = items;\r\n                        }\r\n                        break;\r\n                    case NULL:\r\n                        value = null;\r\n                        lexer.nextToken(JSONToken.LITERAL_STRING);\r\n                        break;\r\n                    case UNDEFINED:\r\n                        value = null;\r\n                        lexer.nextToken(JSONToken.LITERAL_STRING);\r\n                        break;\r\n                    case RBRACKET:\r\n                        lexer.nextToken(JSONToken.COMMA);\r\n                        return;\r\n                    case EOF:\r\n                        throw new JSONException(\"unclosed jsonArray\");\r\n                    default:\r\n                        value = parse();\r\n                        break;\r\n                }\r\n\r\n                array.add(value);\r\n                checkListResolve(array);\r\n\r\n                if (lexer.token() == JSONToken.COMMA) {\r\n                    lexer.nextToken(JSONToken.LITERAL_STRING);\r\n                    continue;\r\n                }\r\n            }\r\n        } catch (ClassCastException e) {\r\n            throw new JSONException(\"unkown error\", e);\r\n        } finally {\r\n            this.setContext(context);\r\n        }\r\n    }\r\n\r\n    public ParseContext getContext() {\r\n        return context;\r\n    }\r\n\r\n    public ParseContext getOwnerContext() {\r\n        return context.parent;\r\n    }\r\n\r\n    public List<ResolveTask> getResolveTaskList() {\r\n        if (resolveTaskList == null) {\r\n            resolveTaskList = new ArrayList<ResolveTask>(2);\r\n        }\r\n        return resolveTaskList;\r\n    }\r\n\r\n    public void addResolveTask(ResolveTask task) {\r\n        if (resolveTaskList == null) {\r\n            resolveTaskList = new ArrayList<ResolveTask>(2);\r\n        }\r\n        resolveTaskList.add(task);\r\n    }\r\n\r\n    public ResolveTask getLastResolveTask() {\r\n        return resolveTaskList.get(resolveTaskList.size() - 1);\r\n    }\r\n\r\n    public List<ExtraProcessor> getExtraProcessors() {\r\n        if (extraProcessors == null) {\r\n            extraProcessors = new ArrayList<ExtraProcessor>(2);\r\n        }\r\n        return extraProcessors;\r\n    }\r\n\r\n    public List<ExtraTypeProvider> getExtraTypeProviders() {\r\n        if (extraTypeProviders == null) {\r\n            extraTypeProviders = new ArrayList<ExtraTypeProvider>(2);\r\n        }\r\n        return extraTypeProviders;\r\n    }\r\n\r\n    public FieldTypeResolver getFieldTypeResolver() {\r\n        return fieldTypeResolver;\r\n    }\r\n\r\n    public void setFieldTypeResolver(FieldTypeResolver fieldTypeResolver) {\r\n        this.fieldTypeResolver = fieldTypeResolver;\r\n    }\r\n\r\n    public void setContext(ParseContext context) {\r\n        if (lexer.isEnabled(Feature.DisableCircularReferenceDetect)) {\r\n            return;\r\n        }\r\n        this.context = context;\r\n    }\r\n\r\n    public void popContext() {\r\n        if (lexer.isEnabled(Feature.DisableCircularReferenceDetect)) {\r\n            return;\r\n        }\r\n\r\n        this.context = this.context.parent;\r\n\r\n        if (contextArrayIndex <= 0) {\r\n            return;\r\n        }\r\n\r\n        contextArrayIndex--;\r\n        contextArray[contextArrayIndex] = null;\r\n    }\r\n\r\n    public ParseContext setContext(Object object, Object fieldName) {\r\n        if (lexer.isEnabled(Feature.DisableCircularReferenceDetect)) {\r\n            return null;\r\n        }\r\n\r\n        return setContext(this.context, object, fieldName);\r\n    }\r\n\r\n    public ParseContext setContext(ParseContext parent, Object object, Object fieldName) {\r\n        if (lexer.isEnabled(Feature.DisableCircularReferenceDetect)) {\r\n            return null;\r\n        }\r\n\r\n        this.context = new ParseContext(parent, object, fieldName);\r\n        addContext(this.context);\r\n\r\n        return this.context;\r\n    }\r\n\r\n    private void addContext(ParseContext context) {\r\n        int i = contextArrayIndex++;\r\n        if (contextArray == null) {\r\n            contextArray = new ParseContext[8];\r\n        } else if (i >= contextArray.length) {\r\n            int newLen = (contextArray.length * 3) / 2;\r\n            ParseContext[] newArray = new ParseContext[newLen];\r\n            System.arraycopy(contextArray, 0, newArray, 0, contextArray.length);\r\n            contextArray = newArray;\r\n        }\r\n        contextArray[i] = context;\r\n    }\r\n\r\n    public Object parse() {\r\n        return parse(null);\r\n    }\r\n\r\n    public Object parseKey() {\r\n        if (lexer.token() == JSONToken.IDENTIFIER) {\r\n            String value = lexer.stringVal();\r\n            lexer.nextToken(JSONToken.COMMA);\r\n            return value;\r\n        }\r\n        return parse(null);\r\n    }\r\n\r\n    public Object parse(Object fieldName) {\r\n        final JSONLexer lexer = this.lexer;\r\n        switch (lexer.token()) {\r\n            case SET:\r\n                lexer.nextToken();\r\n                HashSet<Object> set = new HashSet<Object>();\r\n                parseArray(set, fieldName);\r\n                return set;\r\n            case TREE_SET:\r\n                lexer.nextToken();\r\n                TreeSet<Object> treeSet = new TreeSet<Object>();\r\n                parseArray(treeSet, fieldName);\r\n                return treeSet;\r\n            case LBRACKET:\r\n                Collection array = isEnabled(Feature.UseNativeJavaObject)\r\n                        ? new ArrayList()\r\n                        : new JSONArray();\r\n                parseArray(array, fieldName);\r\n                if (lexer.isEnabled(Feature.UseObjectArray)) {\r\n                    return array.toArray();\r\n                }\r\n                return array;\r\n            case LBRACE:\r\n                Map object = isEnabled(Feature.UseNativeJavaObject)\r\n                    ? lexer.isEnabled(Feature.OrderedField)\r\n                    ? new HashMap()\r\n                    : new LinkedHashMap()\r\n                    : new JSONObject(lexer.isEnabled(Feature.OrderedField));\r\n                return parseObject(object, fieldName);\r\n//            case LBRACE: {\r\n//                Map<String, Object> map = lexer.isEnabled(Feature.OrderedField)\r\n//                        ? new LinkedHashMap<String, Object>()\r\n//                        : new HashMap<String, Object>();\r\n//                Object obj = parseObject(map, fieldName);\r\n//                if (obj != map) {\r\n//                    return obj;\r\n//                }\r\n//                return new JSONObject(map);\r\n//            }\r\n            case LITERAL_INT:\r\n                Number intValue = lexer.integerValue();\r\n                lexer.nextToken();\r\n                return intValue;\r\n            case LITERAL_FLOAT:\r\n                Object value = lexer.decimalValue(lexer.isEnabled(Feature.UseBigDecimal));\r\n                lexer.nextToken();\r\n                return value;\r\n            case LITERAL_STRING:\r\n                String stringLiteral = lexer.stringVal();\r\n                lexer.nextToken(JSONToken.COMMA);\r\n\r\n                if (lexer.isEnabled(Feature.AllowISO8601DateFormat)) {\r\n                    JSONScanner iso8601Lexer = new JSONScanner(stringLiteral);\r\n                    try {\r\n                        if (iso8601Lexer.scanISO8601DateIfMatch()) {\r\n                            return iso8601Lexer.getCalendar().getTime();\r\n                        }\r\n                    } finally {\r\n                        iso8601Lexer.close();\r\n                    }\r\n                }\r\n\r\n                return stringLiteral;\r\n            case NULL:\r\n                lexer.nextToken();\r\n                return null;\r\n            case UNDEFINED:\r\n                lexer.nextToken();\r\n                return null;\r\n            case TRUE:\r\n                lexer.nextToken();\r\n                return Boolean.TRUE;\r\n            case FALSE:\r\n                lexer.nextToken();\r\n                return Boolean.FALSE;\r\n            case NEW:\r\n                lexer.nextToken(JSONToken.IDENTIFIER);\r\n\r\n                if (lexer.token() != JSONToken.IDENTIFIER) {\r\n                    throw new JSONException(\"syntax error\");\r\n                }\r\n                lexer.nextToken(JSONToken.LPAREN);\r\n\r\n                accept(JSONToken.LPAREN);\r\n                long time = lexer.integerValue().longValue();\r\n                accept(JSONToken.LITERAL_INT);\r\n\r\n                accept(JSONToken.RPAREN);\r\n\r\n                return new Date(time);\r\n            case EOF:\r\n                if (lexer.isBlankInput()) {\r\n                    return null;\r\n                }\r\n                throw new JSONException(\"unterminated json string, \" + lexer.info());\r\n            case HEX:\r\n                byte[] bytes = lexer.bytesValue();\r\n                lexer.nextToken();\r\n                return bytes;\r\n            case IDENTIFIER:\r\n                String identifier = lexer.stringVal();\r\n                if (\"NaN\".equals(identifier)) {\r\n                    lexer.nextToken();\r\n                    return null;\r\n                }\r\n                throw new JSONException(\"syntax error, \" + lexer.info());\r\n            case ERROR:\r\n            default:\r\n                throw new JSONException(\"syntax error, \" + lexer.info());\r\n        }\r\n    }\r\n\r\n    public void config(Feature feature, boolean state) {\r\n        this.lexer.config(feature, state);\r\n    }\r\n\r\n    public boolean isEnabled(Feature feature) {\r\n        return lexer.isEnabled(feature);\r\n    }\r\n\r\n    public JSONLexer getLexer() {\r\n        return lexer;\r\n    }\r\n\r\n    public final void accept(final int token) {\r\n        final JSONLexer lexer = this.lexer;\r\n        if (lexer.token() == token) {\r\n            lexer.nextToken();\r\n        } else {\r\n            throw new JSONException(\"syntax error, expect \" + JSONToken.name(token) + \", actual \"\r\n                                    + JSONToken.name(lexer.token()));\r\n        }\r\n    }\r\n\r\n    public final void accept(final int token, int nextExpectToken) {\r\n        final JSONLexer lexer = this.lexer;\r\n        if (lexer.token() == token) {\r\n            lexer.nextToken(nextExpectToken);\r\n        } else {\r\n            throwException(token);\r\n        }\r\n    }\r\n\r\n    public void throwException(int token) {\r\n        throw new JSONException(\"syntax error, expect \" + JSONToken.name(token) + \", actual \"\r\n                                + JSONToken.name(lexer.token()));\r\n    }\r\n\r\n    public void close() {\r\n        final JSONLexer lexer = this.lexer;\r\n\r\n        try {\r\n            if (lexer.isEnabled(Feature.AutoCloseSource)) {\r\n                if (lexer.token() != JSONToken.EOF) {\r\n                    throw new JSONException(\"not close json text, token : \" + JSONToken.name(lexer.token()));\r\n                }\r\n            }\r\n        } finally {\r\n            lexer.close();\r\n        }\r\n    }\r\n\r\n    public Object resolveReference(String ref) {\r\n        if(contextArray == null) {\r\n            return null;\r\n        }\r\n        for (int i = 0; i < contextArray.length && i < contextArrayIndex; i++) {\r\n            ParseContext context = contextArray[i];\r\n            if (context.toString().equals(ref)) {\r\n                return context.object;\r\n            }\r\n        }\r\n        return null;\r\n    }\r\n\r\n    public void handleResovleTask(Object value) {\r\n        if (resolveTaskList == null) {\r\n            return;\r\n        }\r\n\r\n        for (int i = 0, size = resolveTaskList.size(); i < size; ++i) {\r\n            ResolveTask task = resolveTaskList.get(i);\r\n            String ref = task.referenceValue;\r\n\r\n            Object object = null;\r\n            if (task.ownerContext != null) {\r\n                object = task.ownerContext.object;\r\n            }\r\n\r\n            Object refValue;\r\n\r\n            if (ref.startsWith(\"$\")) {\r\n                refValue = getObject(ref);\r\n                if (refValue == null) {\r\n                    try {\r\n                        JSONPath jsonpath = new JSONPath(ref, SerializeConfig.getGlobalInstance(), config, true);\r\n                        if (jsonpath.isRef()) {\r\n                            refValue = jsonpath.eval(value);\r\n                        }\r\n                    } catch (JSONPathException ex) {\r\n                        // skip\r\n                    }\r\n                }\r\n            } else {\r\n                refValue = task.context.object;\r\n            }\r\n\r\n            FieldDeserializer fieldDeser = task.fieldDeserializer;\r\n\r\n            if (fieldDeser != null) {\r\n                if (refValue != null\r\n                        && refValue.getClass() == JSONObject.class\r\n                        && fieldDeser.fieldInfo != null\r\n                        && !Map.class.isAssignableFrom(fieldDeser.fieldInfo.fieldClass)) {\r\n                    Object root = this.contextArray[0].object;\r\n                    JSONPath jsonpath = JSONPath.compile(ref);\r\n                    if (jsonpath.isRef()) {\r\n                        refValue = jsonpath.eval(root);\r\n                    }\r\n                }\r\n\r\n                // workaround for bug\r\n                if (fieldDeser.getOwnerClass() != null\r\n                        && (!fieldDeser.getOwnerClass().isInstance(object))\r\n                        && task.ownerContext.parent != null\r\n                ) {\r\n                    for (ParseContext ctx = task.ownerContext.parent;ctx != null;ctx = ctx.parent) {\r\n                        if (fieldDeser.getOwnerClass().isInstance(ctx.object)) {\r\n                            object = ctx.object;\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n\r\n                fieldDeser.setValue(object, refValue);\r\n            }\r\n        }\r\n    }\r\n\r\n    public static class ResolveTask {\r\n\r\n        public final ParseContext context;\r\n        public final String       referenceValue;\r\n        public FieldDeserializer  fieldDeserializer;\r\n        public ParseContext       ownerContext;\r\n\r\n        public ResolveTask(ParseContext context, String referenceValue){\r\n            this.context = context;\r\n            this.referenceValue = referenceValue;\r\n        }\r\n    }\r\n\r\n    public void parseExtra(Object object, String key) {\r\n        final JSONLexer lexer = this.lexer; // xxx\r\n        lexer.nextTokenWithColon();\r\n        Type type = null;\r\n\r\n        if (extraTypeProviders != null) {\r\n            for (ExtraTypeProvider extraProvider : extraTypeProviders) {\r\n                type = extraProvider.getExtraType(object, key);\r\n            }\r\n        }\r\n        Object value = type == null //\r\n            ? parse() // skip\r\n            : parseObject(type);\r\n\r\n        if (object instanceof ExtraProcessable) {\r\n            ExtraProcessable extraProcessable = ((ExtraProcessable) object);\r\n            extraProcessable.processExtra(key, value);\r\n            return;\r\n        }\r\n\r\n        if (extraProcessors != null) {\r\n            for (ExtraProcessor process : extraProcessors) {\r\n                process.processExtra(object, key, value);\r\n            }\r\n        }\r\n\r\n        if (resolveStatus == NeedToResolve) {\r\n            resolveStatus = NONE;\r\n        }\r\n    }\r\n\r\n    public Object parse(PropertyProcessable object, Object fieldName) {\r\n        if (lexer.token() != JSONToken.LBRACE) {\r\n            String msg = \"syntax error, expect {, actual \" + lexer.tokenName();\r\n            if (fieldName instanceof String) {\r\n                msg += \", fieldName \";\r\n                msg += fieldName;\r\n            }\r\n            msg += \", \";\r\n            msg += lexer.info();\r\n\r\n            JSONArray array = new JSONArray();\r\n            parseArray(array, fieldName);\r\n\r\n            if (array.size() == 1) {\r\n                Object first = array.get(0);\r\n                if (first instanceof JSONObject) {\r\n                    return (JSONObject) first;\r\n                }\r\n            }\r\n\r\n            throw new JSONException(msg);\r\n        }\r\n\r\n        ParseContext context = this.context;\r\n        try {\r\n            for (int i = 0;;++i) {\r\n                lexer.skipWhitespace();\r\n                char ch = lexer.getCurrent();\r\n                if (lexer.isEnabled(Feature.AllowArbitraryCommas)) {\r\n                    while (ch == ',') {\r\n                        lexer.next();\r\n                        lexer.skipWhitespace();\r\n                        ch = lexer.getCurrent();\r\n                    }\r\n                }\r\n\r\n                String key;\r\n                if (ch == '\"') {\r\n                    key = lexer.scanSymbol(symbolTable, '\"');\r\n                    lexer.skipWhitespace();\r\n                    ch = lexer.getCurrent();\r\n                    if (ch != ':') {\r\n                        throw new JSONException(\"expect ':' at \" + lexer.pos());\r\n                    }\r\n                } else if (ch == '}') {\r\n                    lexer.next();\r\n                    lexer.resetStringPosition();\r\n                    lexer.nextToken(JSONToken.COMMA);\r\n                    return object;\r\n                } else if (ch == '\\'') {\r\n                    if (!lexer.isEnabled(Feature.AllowSingleQuotes)) {\r\n                        throw new JSONException(\"syntax error\");\r\n                    }\r\n\r\n                    key = lexer.scanSymbol(symbolTable, '\\'');\r\n                    lexer.skipWhitespace();\r\n                    ch = lexer.getCurrent();\r\n                    if (ch != ':') {\r\n                        throw new JSONException(\"expect ':' at \" + lexer.pos());\r\n                    }\r\n                } else {\r\n                    if (!lexer.isEnabled(Feature.AllowUnQuotedFieldNames)) {\r\n                        throw new JSONException(\"syntax error\");\r\n                    }\r\n\r\n                    key = lexer.scanSymbolUnQuoted(symbolTable);\r\n                    lexer.skipWhitespace();\r\n                    ch = lexer.getCurrent();\r\n                    if (ch != ':') {\r\n                        throw new JSONException(\"expect ':' at \" + lexer.pos() + \", actual \" + ch);\r\n                    }\r\n                }\r\n\r\n                lexer.next();\r\n                lexer.skipWhitespace();\r\n                ch = lexer.getCurrent();\r\n\r\n                lexer.resetStringPosition();\r\n\r\n                if (key == JSON.DEFAULT_TYPE_KEY && !lexer.isEnabled(Feature.DisableSpecialKeyDetect)) {\r\n                    String typeName = lexer.scanSymbol(symbolTable, '\"');\r\n\r\n                    Class<?> clazz = config.checkAutoType(typeName, null, lexer.getFeatures());\r\n\r\n                    if (Map.class.isAssignableFrom(clazz) ) {\r\n                        lexer.nextToken(JSONToken.COMMA);\r\n                        if (lexer.token() == JSONToken.RBRACE) {\r\n                            lexer.nextToken(JSONToken.COMMA);\r\n                            return object;\r\n                        }\r\n                        continue;\r\n                    }\r\n\r\n                    ObjectDeserializer deserializer = config.getDeserializer(clazz);\r\n\r\n                    lexer.nextToken(JSONToken.COMMA);\r\n\r\n                    setResolveStatus(DefaultJSONParser.TypeNameRedirect);\r\n\r\n                    if (context != null && !(fieldName instanceof Integer)) {\r\n                        popContext();\r\n                    }\r\n\r\n                    return (Map) deserializer.deserialze(this, clazz, fieldName);\r\n                }\r\n\r\n                Object value;\r\n                lexer.nextToken();\r\n\r\n                if (i != 0) {\r\n                    setContext(context);\r\n                }\r\n\r\n                Type valueType = object.getType(key);\r\n\r\n                if (lexer.token() == JSONToken.NULL) {\r\n                    value = null;\r\n                    lexer.nextToken();\r\n                } else {\r\n                    value = parseObject(valueType, key);\r\n                }\r\n\r\n                object.apply(key, value);\r\n\r\n                setContext(context, value, key);\r\n                setContext(context);\r\n\r\n                final int tok = lexer.token();\r\n                if (tok == JSONToken.EOF || tok == JSONToken.RBRACKET) {\r\n                    return object;\r\n                }\r\n\r\n                if (tok == JSONToken.RBRACE) {\r\n                    lexer.nextToken();\r\n                    return object;\r\n                }\r\n            }\r\n        } finally {\r\n            setContext(context);\r\n        }\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/Feature.java",
    "content": "/*\r\n * Copyright 1999-2017 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.parser;\r\n\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic enum Feature {\r\n    /**\r\n\t * \r\n\t */\r\n    AutoCloseSource,\r\n    /**\r\n\t * \r\n\t */\r\n    AllowComment,\r\n    /**\r\n\t * \r\n\t */\r\n    AllowUnQuotedFieldNames,\r\n    /**\r\n\t * \r\n\t */\r\n    AllowSingleQuotes,\r\n    /**\r\n\t * \r\n\t */\r\n    InternFieldNames,\r\n    /**\r\n\t * \r\n\t */\r\n    AllowISO8601DateFormat,\r\n\r\n    /**\r\n     * {\"a\":1,,,\"b\":2}\r\n     */\r\n    AllowArbitraryCommas,\r\n\r\n    /**\r\n     * \r\n     */\r\n    UseBigDecimal,\r\n    \r\n    /**\r\n     * @since 1.1.2\r\n     */\r\n    IgnoreNotMatch,\r\n\r\n    /**\r\n     * @since 1.1.3\r\n     */\r\n    SortFeidFastMatch,\r\n    \r\n    /**\r\n     * @since 1.1.3\r\n     */\r\n    DisableASM,\r\n    \r\n    /**\r\n     * @since 1.1.7\r\n     */\r\n    DisableCircularReferenceDetect,\r\n    \r\n    /**\r\n     * @since 1.1.10\r\n     */\r\n    InitStringFieldAsEmpty,\r\n    \r\n    /**\r\n     * @since 1.1.35\r\n     * \r\n     */\r\n    SupportArrayToBean,\r\n    \r\n    /**\r\n     * @since 1.2.3\r\n     * \r\n     */\r\n    OrderedField,\r\n    \r\n    /**\r\n     * @since 1.2.5\r\n     * \r\n     */\r\n    DisableSpecialKeyDetect,\r\n    \r\n    /**\r\n     * @since 1.2.9\r\n     */\r\n    UseObjectArray,\r\n\r\n    /**\r\n     * @since 1.2.22, 1.1.54.android\r\n     */\r\n    SupportNonPublicField,\r\n\r\n    /**\r\n     * @since 1.2.29\r\n     *\r\n     * disable autotype key '@type'\r\n     */\r\n    IgnoreAutoType,\r\n\r\n    /**\r\n     * @since 1.2.30\r\n     *\r\n     * disable field smart match, improve performance in some scenarios.\r\n     */\r\n    DisableFieldSmartMatch,\r\n\r\n    /**\r\n     * @since 1.2.41, backport to 1.1.66.android\r\n     */\r\n    SupportAutoType,\r\n\r\n    /**\r\n     * @since 1.2.42\r\n     */\r\n    NonStringKeyAsString,\r\n\r\n    /**\r\n     * @since 1.2.45\r\n     */\r\n    CustomMapDeserializer,\r\n\r\n    /**\r\n     * @since 1.2.55\r\n     */\r\n    ErrorOnEnumNotMatch,\r\n\r\n    /**\r\n     * @since 1.2.68\r\n     */\r\n    SafeMode,\r\n\r\n    /**\r\n     * @since 1.2.72\r\n     */\r\n    TrimStringFieldValue,\r\n\r\n    /**\r\n     * @since 1.2.77\r\n     * use HashMap instead of JSONObject, ArrayList instead of JSONArray\r\n     */\r\n    UseNativeJavaObject\r\n    ;\r\n\r\n    Feature(){\r\n        mask = (1 << ordinal());\r\n    }\r\n\r\n    public final int mask;\r\n\r\n    public final int getMask() {\r\n        return mask;\r\n    }\r\n\r\n    public static boolean isEnabled(int features, Feature feature) {\r\n        return (features & feature.mask) != 0;\r\n    }\r\n\r\n    public static int config(int features, Feature feature, boolean state) {\r\n        if (state) {\r\n            features |= feature.mask;\r\n        } else {\r\n            features &= ~feature.mask;\r\n        }\r\n\r\n        return features;\r\n    }\r\n    \r\n    public static int of(Feature[] features) {\r\n        if (features == null) {\r\n            return 0;\r\n        }\r\n        \r\n        int value = 0;\r\n        \r\n        for (Feature feature: features) {\r\n            value |= feature.mask;\r\n        }\r\n        \r\n        return value;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/JSONLexer.java",
    "content": "/*\n * Copyright 1999-2019 Alibaba Group.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage com.alibaba.fastjson.parser;\n\nimport java.math.BigDecimal;\nimport java.util.Collection;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\npublic interface JSONLexer {\n\n    char EOI            = 0x1A;\n    int  NOT_MATCH      = -1;\n    int  NOT_MATCH_NAME = -2;\n    int  UNKNOWN        = 0;\n    int  OBJECT         = 1;\n    int  ARRAY          = 2;\n    int  VALUE          = 3;\n    int  END            = 4;\n    int  VALUE_NULL     = 5;\n\n    int token();\n\n    String tokenName();\n\n    void skipWhitespace();\n\n    void nextToken();\n\n    void nextToken(int expect);\n\n    char getCurrent();\n\n    char next();\n\n    String scanSymbol(final SymbolTable symbolTable);\n\n    String scanSymbol(final SymbolTable symbolTable, final char quote);\n\n    void resetStringPosition();\n\n    void scanNumber();\n\n    int pos();\n\n    Number integerValue();\n\n    BigDecimal decimalValue();\n\n    Number decimalValue(boolean decimal);\n\n    String scanSymbolUnQuoted(final SymbolTable symbolTable);\n\n    String stringVal();\n\n    boolean isEnabled(int feature);\n\n    boolean isEnabled(Feature feature);\n\n    void config(Feature feature, boolean state);\n\n    void scanString();\n\n    int intValue();\n\n    void nextTokenWithColon();\n\n    void nextTokenWithColon(int expect);\n\n    boolean isBlankInput();\n\n    void close();\n\n    long longValue();\n\n    boolean isRef();\n\n    String scanTypeName(SymbolTable symbolTable);\n\n    String numberString();\n\n    byte[] bytesValue();\n\n    float floatValue();\n\n    int scanInt(char expectNext);\n    long scanLong(char expectNextChar);\n    float scanFloat(char seperator);\n    double scanDouble(char seperator);\n    boolean scanBoolean(char expectNext);\n    BigDecimal scanDecimal(char seperator);\n\n    String scanString(char expectNextChar);\n\n    Enum<?> scanEnum(Class<?> enumClass, final SymbolTable symbolTable, char serperator);\n\n    String scanSymbolWithSeperator(final SymbolTable symbolTable, char serperator);\n\n    void scanStringArray(Collection<String> collection, char seperator);\n\n    TimeZone getTimeZone();\n\n    void setTimeZone(TimeZone timeZone);\n\n    Locale getLocale();\n\n    void setLocale(Locale locale);\n\n    String info();\n\n    int getFeatures();\n    void setFeatures(int features);\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/JSONLexerBase.java",
    "content": "/*\r\n * Copyright 1999-2019 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.parser;\r\n\r\nimport java.io.Closeable;\r\nimport java.math.BigDecimal;\r\nimport java.math.BigInteger;\r\nimport java.math.MathContext;\r\nimport java.util.*;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.util.IOUtils;\r\n\r\nimport static com.alibaba.fastjson.parser.JSONToken.*;\r\nimport static com.alibaba.fastjson.util.TypeUtils.fnv1a_64_magic_hashcode;\r\nimport static com.alibaba.fastjson.util.TypeUtils.fnv1a_64_magic_prime;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic abstract class JSONLexerBase implements JSONLexer, Closeable {\r\n\r\n    protected void lexError(String key, Object... args) {\r\n        token = ERROR;\r\n    }\r\n\r\n    protected int                            token;\r\n    protected int                            pos;\r\n    protected int                            features;\r\n\r\n    protected char                           ch;\r\n    protected int                            bp;\r\n\r\n    protected int                            eofPos;\r\n\r\n    /**\r\n     * A character buffer for literals.\r\n     */\r\n    protected char[]                         sbuf;\r\n    protected int                            sp;\r\n\r\n    /**\r\n     * number start position\r\n     */\r\n    protected int                            np;\r\n\r\n    protected boolean                        hasSpecial;\r\n\r\n    protected Calendar                       calendar           = null;\r\n    protected TimeZone                       timeZone           = JSON.defaultTimeZone;\r\n    protected Locale                         locale             = JSON.defaultLocale;\r\n\r\n    public int                               matchStat          = UNKNOWN;\r\n\r\n    private final static ThreadLocal<char[]> SBUF_LOCAL         = new ThreadLocal<char[]>();\r\n\r\n    protected String                         stringDefaultValue = null;\r\n    protected int                            nanos              = 0;\r\n\r\n    public JSONLexerBase(int features){\r\n        this.features = features;\r\n\r\n        if ((features & Feature.InitStringFieldAsEmpty.mask) != 0) {\r\n            stringDefaultValue = \"\";\r\n        }\r\n\r\n        sbuf = SBUF_LOCAL.get();\r\n\r\n        if (sbuf == null) {\r\n            sbuf = new char[512];\r\n        }\r\n    }\r\n\r\n    public final int matchStat() {\r\n        return matchStat;\r\n    }\r\n\r\n    /**\r\n     * internal method, don't invoke\r\n     * @param token\r\n     */\r\n    public void setToken(int token) {\r\n        this.token = token;\r\n    }\r\n\r\n    public final void nextToken() {\r\n        sp = 0;\r\n\r\n        for (;;) {\r\n            pos = bp;\r\n\r\n            if (ch == '/') {\r\n                skipComment();\r\n                continue;\r\n            }\r\n\r\n            if (ch == '\"') {\r\n                scanString();\r\n                return;\r\n            }\r\n\r\n            if (ch == ',') {\r\n                next();\r\n                token = COMMA;\r\n                return;\r\n            }\r\n\r\n            if (ch >= '0' && ch <= '9') {\r\n                scanNumber();\r\n                return;\r\n            }\r\n\r\n            if (ch == '-') {\r\n                scanNumber();\r\n                return;\r\n            }\r\n\r\n            switch (ch) {\r\n                case '\\'':\r\n                    if (!isEnabled(Feature.AllowSingleQuotes)) {\r\n                        throw new JSONException(\"Feature.AllowSingleQuotes is false\");\r\n                    }\r\n                    scanStringSingleQuote();\r\n                    return;\r\n                case ' ':\r\n                case '\\t':\r\n                case '\\b':\r\n                case '\\f':\r\n                case '\\n':\r\n                case '\\r':\r\n                    next();\r\n                    break;\r\n                case 't': // true\r\n                    scanTrue();\r\n                    return;\r\n                case 'f': // false\r\n                    scanFalse();\r\n                    return;\r\n                case 'n': // new,null\r\n                    scanNullOrNew();\r\n                    return;\r\n                case 'T':\r\n                case 'N': // NULL\r\n                case 'S':\r\n                case 'u': // undefined\r\n                    scanIdent();\r\n                    return;\r\n                case '(':\r\n                    next();\r\n                    token = LPAREN;\r\n                    return;\r\n                case ')':\r\n                    next();\r\n                    token = RPAREN;\r\n                    return;\r\n                case '[':\r\n                    next();\r\n                    token = LBRACKET;\r\n                    return;\r\n                case ']':\r\n                    next();\r\n                    token = RBRACKET;\r\n                    return;\r\n                case '{':\r\n                    next();\r\n                    token = LBRACE;\r\n                    return;\r\n                case '}':\r\n                    next();\r\n                    token = RBRACE;\r\n                    return;\r\n                case ':':\r\n                    next();\r\n                    token = COLON;\r\n                    return;\r\n                case ';':\r\n                    next();\r\n                    token = SEMI;\r\n                    return;\r\n                case '.':\r\n                    next();\r\n                    token = DOT;\r\n                    return;\r\n                case '+':\r\n                    next();\r\n                    scanNumber();\r\n                    return;\r\n                case 'x':\r\n                    scanHex();\r\n                    return;\r\n                default:\r\n                    if (isEOF()) { // JLS\r\n                        if (token == EOF) {\r\n                            throw new JSONException(\"EOF error\");\r\n                        }\r\n\r\n                        token = EOF;\r\n                        eofPos = pos = bp;\r\n                    } else {\r\n                        if (ch <= 31 || ch == 127) {\r\n                            next();\r\n                            break;\r\n                        }\r\n\r\n                        lexError(\"illegal.char\", String.valueOf((int) ch));\r\n                        next();\r\n                    }\r\n\r\n                    return;\r\n            }\r\n        }\r\n\r\n    }\r\n\r\n    public final void nextToken(int expect) {\r\n        sp = 0;\r\n\r\n        for (;;) {\r\n            switch (expect) {\r\n                case JSONToken.LBRACE:\r\n                    if (ch == '{') {\r\n                        token = JSONToken.LBRACE;\r\n                        next();\r\n                        return;\r\n                    }\r\n                    if (ch == '[') {\r\n                        token = JSONToken.LBRACKET;\r\n                        next();\r\n                        return;\r\n                    }\r\n                    break;\r\n                case JSONToken.COMMA:\r\n                    if (ch == ',') {\r\n                        token = JSONToken.COMMA;\r\n                        next();\r\n                        return;\r\n                    }\r\n\r\n                    if (ch == '}') {\r\n                        token = JSONToken.RBRACE;\r\n                        next();\r\n                        return;\r\n                    }\r\n\r\n                    if (ch == ']') {\r\n                        token = JSONToken.RBRACKET;\r\n                        next();\r\n                        return;\r\n                    }\r\n\r\n                    if (ch == EOI) {\r\n                        token = JSONToken.EOF;\r\n                        return;\r\n                    }\r\n\r\n                    if (ch == 'n') {\r\n                        scanNullOrNew(false);\r\n                        return;\r\n                    }\r\n                    break;\r\n                case JSONToken.LITERAL_INT:\r\n                    if (ch >= '0' && ch <= '9') {\r\n                        pos = bp;\r\n                        scanNumber();\r\n                        return;\r\n                    }\r\n\r\n                    if (ch == '\"') {\r\n                        pos = bp;\r\n                        scanString();\r\n                        return;\r\n                    }\r\n\r\n                    if (ch == '[') {\r\n                        token = JSONToken.LBRACKET;\r\n                        next();\r\n                        return;\r\n                    }\r\n\r\n                    if (ch == '{') {\r\n                        token = JSONToken.LBRACE;\r\n                        next();\r\n                        return;\r\n                    }\r\n\r\n                    break;\r\n                case JSONToken.LITERAL_STRING:\r\n                    if (ch == '\"') {\r\n                        pos = bp;\r\n                        scanString();\r\n                        return;\r\n                    }\r\n\r\n                    if (ch >= '0' && ch <= '9') {\r\n                        pos = bp;\r\n                        scanNumber();\r\n                        return;\r\n                    }\r\n\r\n                    if (ch == '[') {\r\n                        token = JSONToken.LBRACKET;\r\n                        next();\r\n                        return;\r\n                    }\r\n\r\n                    if (ch == '{') {\r\n                        token = JSONToken.LBRACE;\r\n                        next();\r\n                        return;\r\n                    }\r\n                    break;\r\n                case JSONToken.LBRACKET:\r\n                    if (ch == '[') {\r\n                        token = JSONToken.LBRACKET;\r\n                        next();\r\n                        return;\r\n                    }\r\n\r\n                    if (ch == '{') {\r\n                        token = JSONToken.LBRACE;\r\n                        next();\r\n                        return;\r\n                    }\r\n                    break;\r\n                case JSONToken.RBRACKET:\r\n                    if (ch == ']') {\r\n                        token = JSONToken.RBRACKET;\r\n                        next();\r\n                        return;\r\n                    }\r\n                case JSONToken.EOF:\r\n                    if (ch == EOI) {\r\n                        token = JSONToken.EOF;\r\n                        return;\r\n                    }\r\n                    break;\r\n                case JSONToken.IDENTIFIER:\r\n                    nextIdent();\r\n                    return;\r\n                default:\r\n                    break;\r\n            }\r\n\r\n            if (ch == ' ' || ch == '\\n' || ch == '\\r' || ch == '\\t' || ch == '\\f' || ch == '\\b') {\r\n                next();\r\n                continue;\r\n            }\r\n\r\n            nextToken();\r\n            break;\r\n        }\r\n    }\r\n\r\n    public final void nextIdent() {\r\n        while (isWhitespace(ch)) {\r\n            next();\r\n        }\r\n        if (ch == '_' || ch == '$' || Character.isLetter(ch)) {\r\n            scanIdent();\r\n        } else {\r\n            nextToken();\r\n        }\r\n    }\r\n\r\n    public final void nextTokenWithColon() {\r\n        nextTokenWithChar(':');\r\n    }\r\n\r\n    public final void nextTokenWithChar(char expect) {\r\n        sp = 0;\r\n\r\n        for (;;) {\r\n            if (ch == expect) {\r\n                next();\r\n                nextToken();\r\n                return;\r\n            }\r\n\r\n            if (ch == ' ' || ch == '\\n' || ch == '\\r' || ch == '\\t' || ch == '\\f' || ch == '\\b') {\r\n                next();\r\n                continue;\r\n            }\r\n\r\n            throw new JSONException(\"not match \" + expect + \" - \" + ch + \", info : \" + this.info());\r\n        }\r\n    }\r\n\r\n    public final int token() {\r\n        return token;\r\n    }\r\n\r\n    public final String tokenName() {\r\n        return JSONToken.name(token);\r\n    }\r\n\r\n    public final int pos() {\r\n        return pos;\r\n    }\r\n\r\n    public final String stringDefaultValue() {\r\n        return stringDefaultValue;\r\n    }\r\n\r\n    public final Number integerValue() throws NumberFormatException {\r\n        long result = 0;\r\n        boolean negative = false;\r\n        if (np == -1) {\r\n            np = 0;\r\n        }\r\n        int i = np, max = np + sp;\r\n        long limit;\r\n        long multmin;\r\n        int digit;\r\n\r\n        char type = ' ';\r\n\r\n        switch (charAt(max - 1)) {\r\n            case 'L':\r\n                max--;\r\n                type = 'L';\r\n                break;\r\n            case 'S':\r\n                max--;\r\n                type = 'S';\r\n                break;\r\n            case 'B':\r\n                max--;\r\n                type = 'B';\r\n                break;\r\n            default:\r\n                break;\r\n        }\r\n\r\n        if (charAt(np) == '-') {\r\n            negative = true;\r\n            limit = Long.MIN_VALUE;\r\n            i++;\r\n        } else {\r\n            limit = -Long.MAX_VALUE;\r\n        }\r\n        multmin = MULTMIN_RADIX_TEN;\r\n        if (i < max) {\r\n            digit = charAt(i++) - '0';\r\n            result = -digit;\r\n        }\r\n        while (i < max) {\r\n            // Accumulating negatively avoids surprises near MAX_VALUE\r\n            digit = charAt(i++) - '0';\r\n            if (result < multmin) {\r\n                return new BigInteger(numberString(), 10);\r\n            }\r\n            result *= 10;\r\n            if (result < limit + digit) {\r\n                return new BigInteger(numberString(), 10);\r\n            }\r\n            result -= digit;\r\n        }\r\n\r\n        if (negative) {\r\n            if (i > np + 1) {\r\n                if (result >= Integer.MIN_VALUE && type != 'L') {\r\n                    if (type == 'S') {\r\n                        return (short) result;\r\n                    }\r\n\r\n                    if (type == 'B') {\r\n                        return (byte) result;\r\n                    }\r\n\r\n                    return (int) result;\r\n                }\r\n                return result;\r\n            } else { /* Only got \"-\" */\r\n                throw new JSONException(\"illegal number format : \" + numberString());\r\n            }\r\n        } else {\r\n            result = -result;\r\n            if (result <= Integer.MAX_VALUE && type != 'L') {\r\n                if (type == 'S') {\r\n                    return (short) result;\r\n                }\r\n\r\n                if (type == 'B') {\r\n                    return (byte) result;\r\n                }\r\n\r\n                return (int) result;\r\n            }\r\n            return result;\r\n        }\r\n    }\r\n\r\n    public final void nextTokenWithColon(int expect) {\r\n        nextTokenWithChar(':');\r\n    }\r\n\r\n    public float floatValue() {\r\n        String strVal = numberString();\r\n        float floatValue = Float.parseFloat(strVal);\r\n        if (floatValue == 0 || floatValue == Float.POSITIVE_INFINITY) {\r\n            char c0 = strVal.charAt(0);\r\n            if (c0 > '0' && c0 <= '9') {\r\n                throw new JSONException(\"float overflow : \" + strVal);\r\n            }\r\n        }\r\n        return floatValue;\r\n    }\r\n\r\n    public double doubleValue() {\r\n        return Double.parseDouble(numberString());\r\n    }\r\n\r\n    public void config(Feature feature, boolean state) {\r\n        features = Feature.config(features, feature, state);\r\n\r\n        if ((features & Feature.InitStringFieldAsEmpty.mask) != 0) {\r\n            stringDefaultValue = \"\";\r\n        }\r\n    }\r\n\r\n    public final boolean isEnabled(Feature feature) {\r\n        return isEnabled(feature.mask);\r\n    }\r\n\r\n    public final boolean isEnabled(int feature) {\r\n        return (this.features & feature) != 0;\r\n    }\r\n\r\n    public final boolean isEnabled(int features, int feature) {\r\n        return (this.features & feature) != 0 || (features & feature) != 0;\r\n    }\r\n\r\n    public abstract String numberString();\r\n\r\n    public abstract boolean isEOF();\r\n\r\n    public final char getCurrent() {\r\n        return ch;\r\n    }\r\n\r\n    public abstract char charAt(int index);\r\n\r\n    // public final char next() {\r\n    // ch = doNext();\r\n    //// if (ch == '/' && (this.features & Feature.AllowComment.mask) != 0) {\r\n    //// skipComment();\r\n    //// }\r\n    // return ch;\r\n    // }\r\n\r\n    public abstract char next();\r\n\r\n    protected void skipComment() {\r\n        next();\r\n        if (ch == '/') {\r\n            for (;;) {\r\n                next();\r\n                if (ch == '\\n') {\r\n                    next();\r\n                    return;\r\n                } else if (ch == EOI) {\r\n                    return;\r\n                }\r\n            }\r\n        } else if (ch == '*') {\r\n            next();\r\n\r\n            for (; ch != EOI;) {\r\n                if (ch == '*') {\r\n                    next();\r\n                    if (ch == '/') {\r\n                        next();\r\n                        return;\r\n                    } else {\r\n                        continue;\r\n                    }\r\n                }\r\n                next();\r\n            }\r\n        } else {\r\n            throw new JSONException(\"invalid comment\");\r\n        }\r\n    }\r\n\r\n    public final String scanSymbol(final SymbolTable symbolTable) {\r\n        skipWhitespace();\r\n\r\n        if (ch == '\"') {\r\n            return scanSymbol(symbolTable, '\"');\r\n        }\r\n\r\n        if (ch == '\\'') {\r\n            if (!isEnabled(Feature.AllowSingleQuotes)) {\r\n                throw new JSONException(\"syntax error\");\r\n            }\r\n\r\n            return scanSymbol(symbolTable, '\\'');\r\n        }\r\n\r\n        if (ch == '}') {\r\n            next();\r\n            token = JSONToken.RBRACE;\r\n            return null;\r\n        }\r\n\r\n        if (ch == ',') {\r\n            next();\r\n            token = JSONToken.COMMA;\r\n            return null;\r\n        }\r\n\r\n        if (ch == EOI) {\r\n            token = JSONToken.EOF;\r\n            return null;\r\n        }\r\n\r\n        if (!isEnabled(Feature.AllowUnQuotedFieldNames)) {\r\n            throw new JSONException(\"syntax error\");\r\n        }\r\n\r\n        return scanSymbolUnQuoted(symbolTable);\r\n    }\r\n\r\n    // public abstract String scanSymbol(final SymbolTable symbolTable, final char quote);\r\n\r\n    protected abstract void arrayCopy(int srcPos, char[] dest, int destPos, int length);\r\n\r\n    public final String scanSymbol(final SymbolTable symbolTable, final char quote) {\r\n        int hash = 0;\r\n\r\n        np = bp;\r\n        sp = 0;\r\n        boolean hasSpecial = false;\r\n        char chLocal;\r\n        for (;;) {\r\n            chLocal = next();\r\n\r\n            if (chLocal == quote) {\r\n                break;\r\n            }\r\n\r\n            if (chLocal == EOI) {\r\n                throw new JSONException(\"unclosed.str\");\r\n            }\r\n\r\n            if (chLocal == '\\\\') {\r\n                if (!hasSpecial) {\r\n                    hasSpecial = true;\r\n\r\n                    if (sp >= sbuf.length) {\r\n                        int newCapcity = sbuf.length * 2;\r\n                        if (sp > newCapcity) {\r\n                            newCapcity = sp;\r\n                        }\r\n                        char[] newsbuf = new char[newCapcity];\r\n                        System.arraycopy(sbuf, 0, newsbuf, 0, sbuf.length);\r\n                        sbuf = newsbuf;\r\n                    }\r\n\r\n                    // text.getChars(np + 1, np + 1 + sp, sbuf, 0);\r\n                    // System.arraycopy(this.buf, np + 1, sbuf, 0, sp);\r\n                    arrayCopy(np + 1, sbuf, 0, sp);\r\n                }\r\n\r\n                chLocal = next();\r\n\r\n                switch (chLocal) {\r\n                    case '0':\r\n                        hash = 31 * hash + (int) chLocal;\r\n                        putChar('\\0');\r\n                        break;\r\n                    case '1':\r\n                        hash = 31 * hash + (int) chLocal;\r\n                        putChar('\\1');\r\n                        break;\r\n                    case '2':\r\n                        hash = 31 * hash + (int) chLocal;\r\n                        putChar('\\2');\r\n                        break;\r\n                    case '3':\r\n                        hash = 31 * hash + (int) chLocal;\r\n                        putChar('\\3');\r\n                        break;\r\n                    case '4':\r\n                        hash = 31 * hash + (int) chLocal;\r\n                        putChar('\\4');\r\n                        break;\r\n                    case '5':\r\n                        hash = 31 * hash + (int) chLocal;\r\n                        putChar('\\5');\r\n                        break;\r\n                    case '6':\r\n                        hash = 31 * hash + (int) chLocal;\r\n                        putChar('\\6');\r\n                        break;\r\n                    case '7':\r\n                        hash = 31 * hash + (int) chLocal;\r\n                        putChar('\\7');\r\n                        break;\r\n                    case 'b': // 8\r\n                        hash = 31 * hash + (int) '\\b';\r\n                        putChar('\\b');\r\n                        break;\r\n                    case 't': // 9\r\n                        hash = 31 * hash + (int) '\\t';\r\n                        putChar('\\t');\r\n                        break;\r\n                    case 'n': // 10\r\n                        hash = 31 * hash + (int) '\\n';\r\n                        putChar('\\n');\r\n                        break;\r\n                    case 'v': // 11\r\n                        hash = 31 * hash + (int) '\\u000B';\r\n                        putChar('\\u000B');\r\n                        break;\r\n                    case 'f': // 12\r\n                    case 'F':\r\n                        hash = 31 * hash + (int) '\\f';\r\n                        putChar('\\f');\r\n                        break;\r\n                    case 'r': // 13\r\n                        hash = 31 * hash + (int) '\\r';\r\n                        putChar('\\r');\r\n                        break;\r\n                    case '\"': // 34\r\n                        hash = 31 * hash + (int) '\"';\r\n                        putChar('\"');\r\n                        break;\r\n                    case '\\'': // 39\r\n                        hash = 31 * hash + (int) '\\'';\r\n                        putChar('\\'');\r\n                        break;\r\n                    case '/': // 47\r\n                        hash = 31 * hash + (int) '/';\r\n                        putChar('/');\r\n                        break;\r\n                    case '\\\\': // 92\r\n                        hash = 31 * hash + (int) '\\\\';\r\n                        putChar('\\\\');\r\n                        break;\r\n                    case 'x':\r\n                        char x1 = ch = next();\r\n                        char x2 = ch = next();\r\n\r\n                        int x_val = digits[x1] * 16 + digits[x2];\r\n                        char x_char = (char) x_val;\r\n                        hash = 31 * hash + (int) x_char;\r\n                        putChar(x_char);\r\n                        break;\r\n                    case 'u':\r\n                        char c1 = chLocal = next();\r\n                        char c2 = chLocal = next();\r\n                        char c3 = chLocal = next();\r\n                        char c4 = chLocal = next();\r\n                        int val = Integer.parseInt(new String(new char[] { c1, c2, c3, c4 }), 16);\r\n                        hash = 31 * hash + val;\r\n                        putChar((char) val);\r\n                        break;\r\n                    default:\r\n                        this.ch = chLocal;\r\n                        throw new JSONException(\"unclosed.str.lit\");\r\n                }\r\n                continue;\r\n            }\r\n\r\n            hash = 31 * hash + chLocal;\r\n\r\n            if (!hasSpecial) {\r\n                sp++;\r\n                continue;\r\n            }\r\n\r\n            if (sp == sbuf.length) {\r\n                putChar(chLocal);\r\n            } else {\r\n                sbuf[sp++] = chLocal;\r\n            }\r\n        }\r\n\r\n        token = LITERAL_STRING;\r\n\r\n        String value;\r\n        if (!hasSpecial) {\r\n            // return this.text.substring(np + 1, np + 1 + sp).intern();\r\n            int offset;\r\n            if (np == -1) {\r\n                offset = 0;\r\n            } else {\r\n                offset = np + 1;\r\n            }\r\n            value = addSymbol(offset, sp, hash, symbolTable);\r\n        } else {\r\n            value = symbolTable.addSymbol(sbuf, 0, sp, hash);\r\n        }\r\n\r\n        sp = 0;\r\n        this.next();\r\n\r\n        return value;\r\n    }\r\n\r\n    public final void resetStringPosition() {\r\n        this.sp = 0;\r\n    }\r\n\r\n    public String info() {\r\n        return \"\";\r\n    }\r\n\r\n    public final String scanSymbolUnQuoted(final SymbolTable symbolTable) {\r\n        if (token == JSONToken.ERROR && pos == 0 && bp == 1) {\r\n            bp = 0; // adjust\r\n        }\r\n        final boolean[] firstIdentifierFlags = IOUtils.firstIdentifierFlags;\r\n        final char first = ch;\r\n\r\n        final boolean firstFlag = ch >= firstIdentifierFlags.length || firstIdentifierFlags[first];\r\n        if (!firstFlag) {\r\n            throw new JSONException(\"illegal identifier : \" + ch //\r\n                    + info());\r\n        }\r\n\r\n        final boolean[] identifierFlags = IOUtils.identifierFlags;\r\n\r\n        int hash = first;\r\n\r\n        np = bp;\r\n        sp = 1;\r\n        char chLocal;\r\n        for (;;) {\r\n            chLocal = next();\r\n\r\n            if (chLocal < identifierFlags.length) {\r\n                if (!identifierFlags[chLocal]) {\r\n                    break;\r\n                }\r\n            }\r\n\r\n            hash = 31 * hash + chLocal;\r\n\r\n            sp++;\r\n            continue;\r\n        }\r\n\r\n        this.ch = charAt(bp);\r\n        token = JSONToken.IDENTIFIER;\r\n\r\n        final int NULL_HASH = 3392903;\r\n        if (sp == 4 && hash == NULL_HASH && charAt(np) == 'n' && charAt(np + 1) == 'u' && charAt(np + 2) == 'l'\r\n                && charAt(np + 3) == 'l') {\r\n            return null;\r\n        }\r\n\r\n        // return text.substring(np, np + sp).intern();\r\n\r\n        if (symbolTable == null) {\r\n            return subString(np, sp);\r\n        }\r\n\r\n        return this.addSymbol(np, sp, hash, symbolTable);\r\n        // return symbolTable.addSymbol(buf, np, sp, hash);\r\n    }\r\n\r\n    protected abstract void copyTo(int offset, int count, char[] dest);\r\n\r\n    public final void scanString() {\r\n        np = bp;\r\n        hasSpecial = false;\r\n        char ch;\r\n        for (;;) {\r\n            ch = next();\r\n\r\n            if (ch == '\\\"') {\r\n                break;\r\n            }\r\n\r\n            if (ch == EOI) {\r\n                if (!isEOF()) {\r\n                    putChar((char) EOI);\r\n                    continue;\r\n                }\r\n                throw new JSONException(\"unclosed string : \" + ch);\r\n            }\r\n\r\n            if (ch == '\\\\') {\r\n                if (!hasSpecial) {\r\n                    hasSpecial = true;\r\n\r\n                    if (sp >= sbuf.length) {\r\n                        int newCapcity = sbuf.length * 2;\r\n                        if (sp > newCapcity) {\r\n                            newCapcity = sp;\r\n                        }\r\n                        char[] newsbuf = new char[newCapcity];\r\n                        System.arraycopy(sbuf, 0, newsbuf, 0, sbuf.length);\r\n                        sbuf = newsbuf;\r\n                    }\r\n\r\n                    copyTo(np + 1, sp, sbuf);\r\n                    // text.getChars(np + 1, np + 1 + sp, sbuf, 0);\r\n                    // System.arraycopy(buf, np + 1, sbuf, 0, sp);\r\n                }\r\n\r\n                ch = next();\r\n\r\n                switch (ch) {\r\n                    case '0':\r\n                        putChar('\\0');\r\n                        break;\r\n                    case '1':\r\n                        putChar('\\1');\r\n                        break;\r\n                    case '2':\r\n                        putChar('\\2');\r\n                        break;\r\n                    case '3':\r\n                        putChar('\\3');\r\n                        break;\r\n                    case '4':\r\n                        putChar('\\4');\r\n                        break;\r\n                    case '5':\r\n                        putChar('\\5');\r\n                        break;\r\n                    case '6':\r\n                        putChar('\\6');\r\n                        break;\r\n                    case '7':\r\n                        putChar('\\7');\r\n                        break;\r\n                    case 'b': // 8\r\n                        putChar('\\b');\r\n                        break;\r\n                    case 't': // 9\r\n                        putChar('\\t');\r\n                        break;\r\n                    case 'n': // 10\r\n                        putChar('\\n');\r\n                        break;\r\n                    case 'v': // 11\r\n                        putChar('\\u000B');\r\n                        break;\r\n                    case 'f': // 12\r\n                    case 'F':\r\n                        putChar('\\f');\r\n                        break;\r\n                    case 'r': // 13\r\n                        putChar('\\r');\r\n                        break;\r\n                    case '\"': // 34\r\n                        putChar('\"');\r\n                        break;\r\n                    case '\\'': // 39\r\n                        putChar('\\'');\r\n                        break;\r\n                    case '/': // 47\r\n                        putChar('/');\r\n                        break;\r\n                    case '\\\\': // 92\r\n                        putChar('\\\\');\r\n                        break;\r\n                    case 'x':\r\n                        char x1 = next();\r\n                        char x2 = next();\r\n\r\n                        boolean hex1 = (x1 >= '0' && x1 <= '9')\r\n                                || (x1 >= 'a' && x1 <= 'f')\r\n                                || (x1 >= 'A' && x1 <= 'F');\r\n                        boolean hex2 = (x2 >= '0' && x2 <= '9')\r\n                                || (x2 >= 'a' && x2 <= 'f')\r\n                                || (x2 >= 'A' && x2 <= 'F');\r\n                        if (!hex1 || !hex2) {\r\n                            throw new JSONException(\"invalid escape character \\\\x\" + x1 + x2);\r\n                        }\r\n\r\n                        char x_char = (char) (digits[x1] * 16 + digits[x2]);\r\n                        putChar(x_char);\r\n                        break;\r\n                    case 'u':\r\n                        char u1 = next();\r\n                        char u2 = next();\r\n                        char u3 = next();\r\n                        char u4 = next();\r\n                        int val = Integer.parseInt(new String(new char[] { u1, u2, u3, u4 }), 16);\r\n                        putChar((char) val);\r\n                        break;\r\n                    default:\r\n                        this.ch = ch;\r\n                        throw new JSONException(\"unclosed string : \" + ch);\r\n                }\r\n                continue;\r\n            }\r\n\r\n            if (!hasSpecial) {\r\n                sp++;\r\n                continue;\r\n            }\r\n\r\n            if (sp == sbuf.length) {\r\n                putChar(ch);\r\n            } else {\r\n                sbuf[sp++] = ch;\r\n            }\r\n        }\r\n\r\n        token = JSONToken.LITERAL_STRING;\r\n        this.ch = next();\r\n    }\r\n\r\n    public Calendar getCalendar() {\r\n        return this.calendar;\r\n    }\r\n\r\n    public TimeZone getTimeZone() {\r\n        return timeZone;\r\n    }\r\n\r\n    public void setTimeZone(TimeZone timeZone) {\r\n        this.timeZone = timeZone;\r\n    }\r\n\r\n    public Locale getLocale() {\r\n        return locale;\r\n    }\r\n\r\n    public void setLocale(Locale locale) {\r\n        this.locale = locale;\r\n    }\r\n\r\n    public final int intValue() {\r\n        if (np == -1) {\r\n            np = 0;\r\n        }\r\n\r\n        int result = 0;\r\n        boolean negative = false;\r\n        int i = np, max = np + sp;\r\n        int limit;\r\n        int digit;\r\n\r\n        if (charAt(np) == '-') {\r\n            negative = true;\r\n            limit = Integer.MIN_VALUE;\r\n            i++;\r\n        } else {\r\n            limit = -Integer.MAX_VALUE;\r\n        }\r\n        long multmin = INT_MULTMIN_RADIX_TEN;\r\n        if (i < max) {\r\n            digit = charAt(i++) - '0';\r\n            result = -digit;\r\n        }\r\n        while (i < max) {\r\n            // Accumulating negatively avoids surprises near MAX_VALUE\r\n            char chLocal = charAt(i++);\r\n\r\n            if (chLocal == 'L' || chLocal == 'S' || chLocal == 'B') {\r\n                break;\r\n            }\r\n\r\n            digit = chLocal - '0';\r\n\r\n            if (result < multmin) {\r\n                throw new NumberFormatException(numberString());\r\n            }\r\n            result *= 10;\r\n            if (result < limit + digit) {\r\n                throw new NumberFormatException(numberString());\r\n            }\r\n            result -= digit;\r\n        }\r\n\r\n        if (negative) {\r\n            if (i > np + 1) {\r\n                return result;\r\n            } else { /* Only got \"-\" */\r\n                throw new NumberFormatException(numberString());\r\n            }\r\n        } else {\r\n            return -result;\r\n        }\r\n    }\r\n\r\n    public abstract byte[] bytesValue();\r\n\r\n    public void close() {\r\n        if (sbuf.length <= 1024 * 8) {\r\n            SBUF_LOCAL.set(sbuf);\r\n        }\r\n        this.sbuf = null;\r\n    }\r\n\r\n    public final boolean isRef() {\r\n        if (sp != 4) {\r\n            return false;\r\n        }\r\n\r\n        return charAt(np + 1) == '$' //\r\n                && charAt(np + 2) == 'r' //\r\n                && charAt(np + 3) == 'e' //\r\n                && charAt(np + 4) == 'f';\r\n    }\r\n\r\n    public String scanTypeName(SymbolTable symbolTable) {\r\n        return null;\r\n    }\r\n\r\n    protected final static char[] typeFieldName = (\"\\\"\" + JSON.DEFAULT_TYPE_KEY + \"\\\":\\\"\").toCharArray();\r\n\r\n    public final int scanType(String type) {\r\n        matchStat = UNKNOWN;\r\n\r\n        if (!charArrayCompare(typeFieldName)) {\r\n            return NOT_MATCH_NAME;\r\n        }\r\n\r\n        int bpLocal = this.bp + typeFieldName.length;\r\n\r\n        final int typeLength = type.length();\r\n        for (int i = 0; i < typeLength; ++i) {\r\n            if (type.charAt(i) != charAt(bpLocal + i)) {\r\n                return NOT_MATCH;\r\n            }\r\n        }\r\n        bpLocal += typeLength;\r\n        if (charAt(bpLocal) != '\"') {\r\n            return NOT_MATCH;\r\n        }\r\n\r\n        this.ch = charAt(++bpLocal);\r\n\r\n        if (ch == ',') {\r\n            this.ch = charAt(++bpLocal);\r\n            this.bp = bpLocal;\r\n            token = JSONToken.COMMA;\r\n            return VALUE;\r\n        } else if (ch == '}') {\r\n            ch = charAt(++bpLocal);\r\n            if (ch == ',') {\r\n                token = JSONToken.COMMA;\r\n                this.ch = charAt(++bpLocal);\r\n            } else if (ch == ']') {\r\n                token = JSONToken.RBRACKET;\r\n                this.ch = charAt(++bpLocal);\r\n            } else if (ch == '}') {\r\n                token = JSONToken.RBRACE;\r\n                this.ch = charAt(++bpLocal);\r\n            } else if (ch == EOI) {\r\n                token = JSONToken.EOF;\r\n            } else {\r\n                return NOT_MATCH;\r\n            }\r\n            matchStat = END;\r\n        }\r\n\r\n        this.bp = bpLocal;\r\n        return matchStat;\r\n    }\r\n\r\n    public final boolean matchField(char[] fieldName) {\r\n        for (;;) {\r\n            if (!charArrayCompare(fieldName)) {\r\n                if (isWhitespace(ch)) {\r\n                    next();\r\n                    continue;\r\n                }\r\n                return false;\r\n            } else {\r\n                break;\r\n            }\r\n        }\r\n\r\n        bp = bp + fieldName.length;\r\n        ch = charAt(bp);\r\n\r\n        if (ch == '{') {\r\n            next();\r\n            token = JSONToken.LBRACE;\r\n        } else if (ch == '[') {\r\n            next();\r\n            token = JSONToken.LBRACKET;\r\n        } else if (ch == 'S' && charAt(bp + 1) == 'e' && charAt(bp + 2) == 't' && charAt(bp + 3) == '[') {\r\n            bp += 3;\r\n            ch = charAt(bp);\r\n            token = JSONToken.SET;\r\n        } else {\r\n            nextToken();\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n    public int matchField(long fieldNameHash) {\r\n        throw new UnsupportedOperationException();\r\n    }\r\n\r\n    public boolean seekArrayToItem(int index) {\r\n        throw new UnsupportedOperationException();\r\n    }\r\n\r\n    public int seekObjectToField(long fieldNameHash, boolean deepScan) {\r\n        throw new UnsupportedOperationException();\r\n    }\r\n\r\n    public int seekObjectToField(long[] fieldNameHash) {\r\n        throw new UnsupportedOperationException();\r\n    }\r\n\r\n    public int seekObjectToFieldDeepScan(long fieldNameHash) {\r\n        throw new UnsupportedOperationException();\r\n    }\r\n\r\n    public void skipObject() {\r\n        throw new UnsupportedOperationException();\r\n    }\r\n\r\n    public void skipObject(boolean valid) {\r\n        throw new UnsupportedOperationException();\r\n    }\r\n\r\n    public void skipArray() {\r\n        throw new UnsupportedOperationException();\r\n    }\r\n\r\n    public abstract int indexOf(char ch, int startIndex);\r\n\r\n    public abstract String addSymbol(int offset, int len, int hash, final SymbolTable symbolTable);\r\n\r\n    public String scanFieldString(char[] fieldName) {\r\n        matchStat = UNKNOWN;\r\n\r\n        if (!charArrayCompare(fieldName)) {\r\n            matchStat = NOT_MATCH_NAME;\r\n            return stringDefaultValue();\r\n        }\r\n\r\n        // int index = bp + fieldName.length;\r\n\r\n        int offset = fieldName.length;\r\n        char chLocal = charAt(bp + (offset++));\r\n\r\n        if (chLocal != '\"') {\r\n            matchStat = NOT_MATCH;\r\n\r\n            return stringDefaultValue();\r\n        }\r\n\r\n        final String strVal;\r\n        {\r\n            int startIndex = bp + fieldName.length + 1;\r\n            int endIndex = indexOf('\"', startIndex);\r\n            if (endIndex == -1) {\r\n                throw new JSONException(\"unclosed str\");\r\n            }\r\n\r\n            int startIndex2 = bp + fieldName.length + 1; // must re compute\r\n            String stringVal = subString(startIndex2, endIndex - startIndex2);\r\n            if (stringVal.indexOf('\\\\') != -1) {\r\n                for (;;) {\r\n                    int slashCount = 0;\r\n                    for (int i = endIndex - 1; i >= 0; --i) {\r\n                        if (charAt(i) == '\\\\') {\r\n                            slashCount++;\r\n                        } else {\r\n                            break;\r\n                        }\r\n                    }\r\n                    if (slashCount % 2 == 0) {\r\n                        break;\r\n                    }\r\n                    endIndex = indexOf('\"', endIndex + 1);\r\n                }\r\n\r\n                int chars_len = endIndex - (bp + fieldName.length + 1);\r\n                char[] chars = sub_chars( bp + fieldName.length + 1, chars_len);\r\n\r\n                stringVal = readString(chars, chars_len);\r\n            }\r\n\r\n            offset += (endIndex - (bp + fieldName.length + 1) + 1);\r\n            chLocal = charAt(bp + (offset++));\r\n            strVal = stringVal;\r\n        }\r\n\r\n        if (chLocal == ',') {\r\n            bp += offset;\r\n            this.ch = this.charAt(bp);\r\n            matchStat = VALUE;\r\n            return strVal;\r\n        }\r\n\r\n        if (chLocal == '}') {\r\n            chLocal = charAt(bp + (offset++));\r\n            if (chLocal == ',') {\r\n                token = JSONToken.COMMA;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == ']') {\r\n                token = JSONToken.RBRACKET;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == '}') {\r\n                token = JSONToken.RBRACE;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == EOI) {\r\n                token = JSONToken.EOF;\r\n                bp += (offset - 1);\r\n                ch = EOI;\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return stringDefaultValue();\r\n            }\r\n            matchStat = END;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return stringDefaultValue();\r\n        }\r\n\r\n        return strVal;\r\n    }\r\n\r\n    public String scanString(char expectNextChar) {\r\n        matchStat = UNKNOWN;\r\n\r\n        int offset = 0;\r\n        char chLocal = charAt(bp + (offset++));\r\n\r\n        if (chLocal == 'n') {\r\n            if (charAt(bp + offset) == 'u' && charAt(bp + offset + 1) == 'l' && charAt(bp + offset + 2) == 'l') {\r\n                offset += 3;\r\n                chLocal = charAt(bp + (offset++));\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n\r\n            if (chLocal == expectNextChar) {\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n                matchStat = VALUE;\r\n                return null;\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n        }\r\n\r\n        final String strVal;\r\n        for (;;) {\r\n            if (chLocal == '\"') {\r\n                int startIndex = bp + offset;\r\n                int endIndex = indexOf('\"', startIndex);\r\n                if (endIndex == -1) {\r\n                    throw new JSONException(\"unclosed str\");\r\n                }\r\n\r\n                String stringVal = subString(bp + offset, endIndex - startIndex);\r\n                if (stringVal.indexOf('\\\\') != -1) {\r\n                    for (; ; ) {\r\n                        int slashCount = 0;\r\n                        for (int i = endIndex - 1; i >= 0; --i) {\r\n                            if (charAt(i) == '\\\\') {\r\n                                slashCount++;\r\n                            } else {\r\n                                break;\r\n                            }\r\n                        }\r\n                        if (slashCount % 2 == 0) {\r\n                            break;\r\n                        }\r\n                        endIndex = indexOf('\"', endIndex + 1);\r\n                    }\r\n\r\n                    int chars_len = endIndex - startIndex;\r\n                    char[] chars = sub_chars(bp + 1, chars_len);\r\n\r\n                    stringVal = readString(chars, chars_len);\r\n                }\r\n\r\n                offset += (endIndex - startIndex + 1);\r\n                chLocal = charAt(bp + (offset++));\r\n                strVal = stringVal;\r\n                break;\r\n            } else if (isWhitespace(chLocal)) {\r\n                chLocal = charAt(bp + (offset++));\r\n                continue;\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n\r\n                return stringDefaultValue();\r\n            }\r\n        }\r\n\r\n        for (;;) {\r\n            if (chLocal == expectNextChar) {\r\n                bp += offset;\r\n                this.ch = charAt(bp);\r\n                matchStat = VALUE;\r\n                token = JSONToken.COMMA;\r\n                return strVal;\r\n            } else if (isWhitespace(chLocal)) {\r\n                chLocal = charAt(bp + (offset++));\r\n                continue;\r\n            } else {\r\n                if (chLocal == ']') {\r\n                    bp += offset;\r\n                    this.ch = charAt(bp);\r\n                    matchStat = NOT_MATCH;\r\n                }\r\n                return strVal;\r\n            }\r\n        }\r\n    }\r\n\r\n    public long scanFieldSymbol(char[] fieldName) {\r\n        matchStat = UNKNOWN;\r\n\r\n        if (!charArrayCompare(fieldName)) {\r\n            matchStat = NOT_MATCH_NAME;\r\n            return 0;\r\n        }\r\n\r\n        int offset = fieldName.length;\r\n        char chLocal = charAt(bp + (offset++));\r\n\r\n        if (chLocal != '\"') {\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        }\r\n\r\n        long hash = fnv1a_64_magic_hashcode;\r\n        for (;;) {\r\n            chLocal = charAt(bp + (offset++));\r\n            if (chLocal == '\\\"') {\r\n                chLocal = charAt(bp + (offset++));\r\n                break;\r\n            }\r\n\r\n            hash ^= chLocal;\r\n            hash *= fnv1a_64_magic_prime;\r\n\r\n            if (chLocal == '\\\\') {\r\n                matchStat = NOT_MATCH;\r\n                return 0;\r\n            }\r\n        }\r\n\r\n        if (chLocal == ',') {\r\n            bp += offset;\r\n            this.ch = this.charAt(bp);\r\n            matchStat = VALUE;\r\n            return hash;\r\n        }\r\n\r\n        if (chLocal == '}') {\r\n            chLocal = charAt(bp + (offset++));\r\n            if (chLocal == ',') {\r\n                token = JSONToken.COMMA;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == ']') {\r\n                token = JSONToken.RBRACKET;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == '}') {\r\n                token = JSONToken.RBRACE;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == EOI) {\r\n                token = JSONToken.EOF;\r\n                bp += (offset - 1);\r\n                ch = EOI;\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return 0;\r\n            }\r\n            matchStat = END;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        }\r\n\r\n        return hash;\r\n    }\r\n\r\n    public long scanEnumSymbol(char[] fieldName) {\r\n        matchStat = UNKNOWN;\r\n\r\n        if (!charArrayCompare(fieldName)) {\r\n            matchStat = NOT_MATCH_NAME;\r\n            return 0;\r\n        }\r\n\r\n        int offset = fieldName.length;\r\n        char chLocal = charAt(bp + (offset++));\r\n\r\n        if (chLocal != '\"') {\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        }\r\n\r\n        long hash = fnv1a_64_magic_hashcode;\r\n        for (;;) {\r\n            chLocal = charAt(bp + (offset++));\r\n            if (chLocal == '\\\"') {\r\n                chLocal = charAt(bp + (offset++));\r\n                break;\r\n            }\r\n\r\n            hash ^= ((chLocal >= 'A' && chLocal <= 'Z') ? (chLocal + 32) : chLocal);\r\n            hash *= fnv1a_64_magic_prime;\r\n\r\n            if (chLocal == '\\\\') {\r\n                matchStat = NOT_MATCH;\r\n                return 0;\r\n            }\r\n        }\r\n\r\n        if (chLocal == ',') {\r\n            bp += offset;\r\n            this.ch = this.charAt(bp);\r\n            matchStat = VALUE;\r\n            return hash;\r\n        }\r\n\r\n        if (chLocal == '}') {\r\n            chLocal = charAt(bp + (offset++));\r\n            if (chLocal == ',') {\r\n                token = JSONToken.COMMA;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == ']') {\r\n                token = JSONToken.RBRACKET;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == '}') {\r\n                token = JSONToken.RBRACE;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == EOI) {\r\n                token = JSONToken.EOF;\r\n                bp += (offset - 1);\r\n                ch = EOI;\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return 0;\r\n            }\r\n            matchStat = END;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        }\r\n\r\n        return hash;\r\n    }\r\n\r\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\r\n    public Enum<?> scanEnum(Class<?> enumClass, final SymbolTable symbolTable, char serperator) {\r\n        String name = scanSymbolWithSeperator(symbolTable, serperator);\r\n        if (name == null) {\r\n            return null;\r\n        }\r\n        return Enum.valueOf((Class<? extends Enum>) enumClass, name);\r\n    }\r\n\r\n    public String scanSymbolWithSeperator(final SymbolTable symbolTable, char serperator) {\r\n        matchStat = UNKNOWN;\r\n\r\n        int offset = 0;\r\n        char chLocal = charAt(bp + (offset++));\r\n\r\n        if (chLocal == 'n') {\r\n            if (charAt(bp + offset) == 'u' && charAt(bp + offset + 1) == 'l' && charAt(bp + offset + 2) == 'l') {\r\n                offset += 3;\r\n                chLocal = charAt(bp + (offset++));\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n\r\n            if (chLocal == serperator) {\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n                matchStat = VALUE;\r\n                return null;\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n        }\r\n\r\n        if (chLocal != '\"') {\r\n            matchStat = NOT_MATCH;\r\n            return null;\r\n        }\r\n\r\n        String strVal;\r\n        // int start = index;\r\n        int hash = 0;\r\n        for (;;) {\r\n            chLocal = charAt(bp + (offset++));\r\n            if (chLocal == '\\\"') {\r\n                // bp = index;\r\n                // this.ch = chLocal = charAt(bp);\r\n                int start = bp + 0 + 1;\r\n                int len = bp + offset - start - 1;\r\n                strVal = addSymbol(start, len, hash, symbolTable);\r\n                chLocal = charAt(bp + (offset++));\r\n                break;\r\n            }\r\n\r\n            hash = 31 * hash + chLocal;\r\n\r\n            if (chLocal == '\\\\') {\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n        }\r\n\r\n        for (;;) {\r\n            if (chLocal == serperator) {\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n                matchStat = VALUE;\r\n                return strVal;\r\n            } else {\r\n                if (isWhitespace(chLocal)) {\r\n                    chLocal = charAt(bp + (offset++));\r\n                    continue;\r\n                }\r\n\r\n                matchStat = NOT_MATCH;\r\n                return strVal;\r\n            }\r\n        }\r\n    }\r\n\r\n    public Collection<String> newCollectionByType(Class<?> type){\r\n        if (type.isAssignableFrom(HashSet.class)) {\r\n            return new HashSet<String>();\r\n        } else if (type.isAssignableFrom(ArrayList.class)) {\r\n            return new ArrayList<String>();\r\n        } else if (type.isAssignableFrom(LinkedList.class)) {\r\n            return new LinkedList<String>();\r\n        } else {\r\n            try {\r\n                return (Collection<String>) type.newInstance();\r\n            } catch (Exception e) {\r\n                throw new JSONException(e.getMessage(), e);\r\n            }\r\n        }\r\n    }\r\n\r\n    @SuppressWarnings(\"unchecked\")\r\n    public Collection<String> scanFieldStringArray(char[] fieldName, Class<?> type) {\r\n        matchStat = UNKNOWN;\r\n\r\n        if (!charArrayCompare(fieldName)) {\r\n            matchStat = NOT_MATCH_NAME;\r\n            return null;\r\n        }\r\n\r\n        Collection<String> list = newCollectionByType(type);\r\n\r\n//        if (type.isAssignableFrom(HashSet.class)) {\r\n//            list = new HashSet<String>();\r\n//        } else if (type.isAssignableFrom(ArrayList.class)) {\r\n//            list = new ArrayList<String>();\r\n//        } else {\r\n//            try {\r\n//                list = (Collection<String>) type.newInstance();\r\n//            } catch (Exception e) {\r\n//                throw new JSONException(e.getMessage(), e);\r\n//            }\r\n//        }\r\n\r\n        // int index = bp + fieldName.length;\r\n\r\n        int offset = fieldName.length;\r\n        char chLocal = charAt(bp + (offset++));\r\n\r\n        if (chLocal != '[') {\r\n            matchStat = NOT_MATCH;\r\n            return null;\r\n        }\r\n\r\n        chLocal = charAt(bp + (offset++));\r\n\r\n        for (;;) {\r\n            // int start = index;\r\n            if (chLocal == '\"') {\r\n                int startIndex = bp + offset;\r\n                int endIndex = indexOf('\"', startIndex);\r\n                if (endIndex == -1) {\r\n                    throw new JSONException(\"unclosed str\");\r\n                }\r\n\r\n                int startIndex2 = bp + offset; // must re compute\r\n                String stringVal = subString(startIndex2, endIndex - startIndex2);\r\n                if (stringVal.indexOf('\\\\') != -1) {\r\n                    for (;;) {\r\n                        int slashCount = 0;\r\n                        for (int i = endIndex - 1; i >= 0; --i) {\r\n                            if (charAt(i) == '\\\\') {\r\n                                slashCount++;\r\n                            } else {\r\n                                break;\r\n                            }\r\n                        }\r\n                        if (slashCount % 2 == 0) {\r\n                            break;\r\n                        }\r\n                        endIndex = indexOf('\"', endIndex + 1);\r\n                    }\r\n\r\n                    int chars_len = endIndex - (bp + offset);\r\n                    char[] chars = sub_chars(bp + offset, chars_len);\r\n\r\n                    stringVal = readString(chars, chars_len);\r\n                }\r\n\r\n                offset += (endIndex - (bp + offset) + 1);\r\n                chLocal = charAt(bp + (offset++));\r\n\r\n                list.add(stringVal);\r\n            } else if (chLocal == 'n' //\r\n                    && charAt(bp + offset) == 'u' //\r\n                    && charAt(bp + offset + 1) == 'l' //\r\n                    && charAt(bp + offset + 2) == 'l') {\r\n                offset += 3;\r\n                chLocal = charAt(bp + (offset++));\r\n                list.add(null);\r\n            } else if (chLocal == ']' && list.size() == 0) {\r\n                chLocal = charAt(bp + (offset++));\r\n                break;\r\n            } else {\r\n                throw new JSONException(\"illega str\");\r\n            }\r\n\r\n            if (chLocal == ',') {\r\n                chLocal = charAt(bp + (offset++));\r\n                continue;\r\n            }\r\n\r\n            if (chLocal == ']') {\r\n                chLocal = charAt(bp + (offset++));\r\n                break;\r\n            }\r\n\r\n            matchStat = NOT_MATCH;\r\n            return null;\r\n        }\r\n\r\n        if (chLocal == ',') {\r\n            bp += offset;\r\n            this.ch = this.charAt(bp);\r\n            matchStat = VALUE;\r\n            return list;\r\n        }\r\n\r\n        if (chLocal == '}') {\r\n            chLocal = charAt(bp + (offset++));\r\n            if (chLocal == ',') {\r\n                token = JSONToken.COMMA;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == ']') {\r\n                token = JSONToken.RBRACKET;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == '}') {\r\n                token = JSONToken.RBRACE;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == EOI) {\r\n                bp += (offset - 1);\r\n                token = JSONToken.EOF;\r\n                this.ch = EOI;\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n            matchStat = END;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return null;\r\n        }\r\n\r\n        return list;\r\n    }\r\n\r\n    public void scanStringArray(Collection<String> list, char seperator) {\r\n        matchStat = UNKNOWN;\r\n\r\n        int offset = 0;\r\n        char chLocal = charAt(bp + (offset++));\r\n\r\n        if (chLocal == 'n'\r\n                && charAt(bp + offset) == 'u'\r\n                && charAt(bp + offset + 1) == 'l'\r\n                && charAt(bp + offset + 2) == 'l'\r\n                && charAt(bp + offset + 3) == seperator\r\n        ) {\r\n            bp += 5;\r\n            ch = charAt(bp);\r\n            matchStat = VALUE_NULL;\r\n            return;\r\n        }\r\n\r\n        if (chLocal != '[') {\r\n            matchStat = NOT_MATCH;\r\n            return;\r\n        }\r\n\r\n        chLocal = charAt(bp + (offset++));\r\n\r\n        for (;;) {\r\n            if (chLocal == 'n' //\r\n                    && charAt(bp + offset) == 'u' //\r\n                    && charAt(bp + offset + 1) == 'l' //\r\n                    && charAt(bp + offset + 2) == 'l') {\r\n                offset += 3;\r\n                chLocal = charAt(bp + (offset++));\r\n                list.add(null);\r\n            } else if (chLocal == ']' && list.size() == 0) {\r\n                chLocal = charAt(bp + (offset++));\r\n                break;\r\n            } else if (chLocal != '\"') {\r\n                matchStat = NOT_MATCH;\r\n                return;\r\n            } else {\r\n                int startIndex = bp + offset;\r\n                int endIndex = indexOf('\"', startIndex);\r\n                if (endIndex == -1) {\r\n                    throw new JSONException(\"unclosed str\");\r\n                }\r\n\r\n                String stringVal = subString(bp + offset, endIndex - startIndex);\r\n                if (stringVal.indexOf('\\\\') != -1) {\r\n                    for (;;) {\r\n                        int slashCount = 0;\r\n                        for (int i = endIndex - 1; i >= 0; --i) {\r\n                            if (charAt(i) == '\\\\') {\r\n                                slashCount++;\r\n                            } else {\r\n                                break;\r\n                            }\r\n                        }\r\n                        if (slashCount % 2 == 0) {\r\n                            break;\r\n                        }\r\n                        endIndex = indexOf('\"', endIndex + 1);\r\n                    }\r\n\r\n                    int chars_len = endIndex - startIndex;\r\n                    char[] chars = sub_chars(bp + offset, chars_len);\r\n\r\n                    stringVal = readString(chars, chars_len);\r\n                }\r\n\r\n                offset += (endIndex - (bp + offset) + 1);\r\n                chLocal = charAt(bp + (offset++));\r\n                list.add(stringVal);\r\n            }\r\n\r\n            if (chLocal == ',') {\r\n                chLocal = charAt(bp + (offset++));\r\n                continue;\r\n            }\r\n\r\n            if (chLocal == ']') {\r\n                chLocal = charAt(bp + (offset++));\r\n                break;\r\n            }\r\n\r\n            matchStat = NOT_MATCH;\r\n            return;\r\n        }\r\n\r\n        if (chLocal == seperator) {\r\n            bp += offset;\r\n            this.ch = this.charAt(bp);\r\n            matchStat = VALUE;\r\n            return;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return;\r\n        }\r\n    }\r\n\r\n    public int scanFieldInt(char[] fieldName) {\r\n        matchStat = UNKNOWN;\r\n\r\n        if (!charArrayCompare(fieldName)) {\r\n            matchStat = NOT_MATCH_NAME;\r\n            return 0;\r\n        }\r\n\r\n        int offset = fieldName.length;\r\n        char chLocal = charAt(bp + (offset++));\r\n\r\n        final boolean negative = chLocal == '-';\r\n        if (negative) {\r\n            chLocal = charAt(bp + (offset++));\r\n        }\r\n\r\n        int value;\r\n        if (chLocal >= '0' && chLocal <= '9') {\r\n            value = chLocal - '0';\r\n            for (;;) {\r\n                chLocal = charAt(bp + (offset++));\r\n                if (chLocal >= '0' && chLocal <= '9') {\r\n                    value = value * 10 + (chLocal - '0');\r\n                } else if (chLocal == '.') {\r\n                    matchStat = NOT_MATCH;\r\n                    return 0;\r\n                } else {\r\n                    break;\r\n                }\r\n            }\r\n            if (value < 0 //\r\n                    || offset > 11 + 3 + fieldName.length) {\r\n                if (value != Integer.MIN_VALUE //\r\n                        || offset != 17 //\r\n                        || !negative) {\r\n                    matchStat = NOT_MATCH;\r\n                    return 0;\r\n                }\r\n            }\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        }\r\n\r\n        if (chLocal == ',') {\r\n            bp += offset;\r\n            this.ch = this.charAt(bp);\r\n            matchStat = VALUE;\r\n            token = JSONToken.COMMA;\r\n            return negative ? -value : value;\r\n        }\r\n\r\n        if (chLocal == '}') {\r\n            chLocal = charAt(bp + (offset++));\r\n            if (chLocal == ',') {\r\n                token = JSONToken.COMMA;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == ']') {\r\n                token = JSONToken.RBRACKET;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == '}') {\r\n                token = JSONToken.RBRACE;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == EOI) {\r\n                token = JSONToken.EOF;\r\n                bp += (offset - 1);\r\n                ch = EOI;\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return 0;\r\n            }\r\n            matchStat = END;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        }\r\n\r\n        return negative ? -value : value;\r\n    }\r\n\r\n    public final int[] scanFieldIntArray(char[] fieldName) {\r\n        matchStat = UNKNOWN;\r\n\r\n        if (!charArrayCompare(fieldName)) {\r\n            matchStat = NOT_MATCH_NAME;\r\n            return null;\r\n        }\r\n\r\n        int offset = fieldName.length;\r\n        char chLocal = charAt(bp + (offset++));\r\n\r\n        if (chLocal != '[') {\r\n            matchStat = NOT_MATCH_NAME;\r\n            return null;\r\n        }\r\n        chLocal = charAt(bp + (offset++));\r\n\r\n        int[] array = new int[16];\r\n        int arrayIndex = 0;\r\n\r\n        if (chLocal == ']') {\r\n            chLocal = charAt(bp + (offset++));\r\n        } else {\r\n            for (;;) {\r\n                boolean nagative = false;\r\n                if (chLocal == '-') {\r\n                    chLocal = charAt(bp + (offset++));\r\n                    nagative = true;\r\n                }\r\n                if (chLocal >= '0' && chLocal <= '9') {\r\n                    int value = chLocal - '0';\r\n                    for (; ; ) {\r\n                        chLocal = charAt(bp + (offset++));\r\n\r\n                        if (chLocal >= '0' && chLocal <= '9') {\r\n                            value = value * 10 + (chLocal - '0');\r\n                        } else {\r\n                            break;\r\n                        }\r\n                    }\r\n\r\n                    if (arrayIndex >= array.length) {\r\n                        int[] tmp = new int[array.length * 3 / 2];\r\n                        System.arraycopy(array, 0, tmp, 0, arrayIndex);\r\n                        array = tmp;\r\n                    }\r\n                    array[arrayIndex++] = nagative ? -value : value;\r\n\r\n                    if (chLocal == ',') {\r\n                        chLocal = charAt(bp + (offset++));\r\n                    } else if (chLocal == ']') {\r\n                        chLocal = charAt(bp + (offset++));\r\n                        break;\r\n                    }\r\n                } else {\r\n                    matchStat = NOT_MATCH;\r\n                    return null;\r\n                }\r\n            }\r\n        }\r\n\r\n\r\n        if (arrayIndex != array.length) {\r\n            int[] tmp = new int[arrayIndex];\r\n            System.arraycopy(array, 0, tmp, 0, arrayIndex);\r\n            array = tmp;\r\n        }\r\n\r\n        if (chLocal == ',') {\r\n            bp += (offset - 1);\r\n            this.next();\r\n            matchStat = VALUE;\r\n            token = JSONToken.COMMA;\r\n            return array;\r\n        }\r\n\r\n        if (chLocal == '}') {\r\n            chLocal = charAt(bp + (offset++));\r\n            if (chLocal == ',') {\r\n                token = JSONToken.COMMA;\r\n                bp += (offset - 1);\r\n                this.next();\r\n            } else if (chLocal == ']') {\r\n                token = JSONToken.RBRACKET;\r\n                bp += (offset - 1);\r\n                this.next();\r\n            } else if (chLocal == '}') {\r\n                token = JSONToken.RBRACE;\r\n                bp += (offset - 1);\r\n                this.next();\r\n            } else if (chLocal == EOI) {\r\n                bp += (offset - 1);\r\n                token = JSONToken.EOF;\r\n                ch = EOI;\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n            matchStat = END;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return null;\r\n        }\r\n\r\n        return array;\r\n    }\r\n\r\n    public boolean scanBoolean(char expectNext) {\r\n        matchStat = UNKNOWN;\r\n\r\n        int offset = 0;\r\n        char chLocal = charAt(bp + (offset++));\r\n\r\n        boolean value = false;\r\n        if (chLocal == 't') {\r\n            if (charAt(bp + offset) == 'r' //\r\n                    && charAt(bp + offset + 1) == 'u' //\r\n                    && charAt(bp + offset + 2) == 'e') {\r\n                offset += 3;\r\n                chLocal = charAt(bp + (offset++));\r\n                value = true;\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return false;\r\n            }\r\n        } else if (chLocal == 'f') {\r\n            if (charAt(bp + offset) == 'a' //\r\n                    && charAt(bp + offset + 1) == 'l' //\r\n                    && charAt(bp + offset + 2) == 's' //\r\n                    && charAt(bp + offset + 3) == 'e') {\r\n                offset += 4;\r\n                chLocal = charAt(bp + (offset++));\r\n                value = false;\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return false;\r\n            }\r\n        } else if (chLocal == '1') {\r\n            chLocal = charAt(bp + (offset++));\r\n            value = true;\r\n        } else if (chLocal == '0') {\r\n            chLocal = charAt(bp + (offset++));\r\n            value = false;\r\n        }\r\n\r\n        for (;;) {\r\n            if (chLocal == expectNext) {\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n                matchStat = VALUE;\r\n                return value;\r\n            } else {\r\n                if (isWhitespace(chLocal)) {\r\n                    chLocal = charAt(bp + (offset++));\r\n                    continue;\r\n                }\r\n                matchStat = NOT_MATCH;\r\n                return value;\r\n            }\r\n        }\r\n    }\r\n\r\n    public int scanInt(char expectNext) {\r\n        matchStat = UNKNOWN;\r\n\r\n        int offset = 0;\r\n        char chLocal = charAt(bp + (offset++));\r\n\r\n        final boolean quote = chLocal == '\"';\r\n        if (quote) {\r\n            chLocal = charAt(bp + (offset++));\r\n        }\r\n\r\n        final boolean negative = chLocal == '-';\r\n        if (negative) {\r\n            chLocal = charAt(bp + (offset++));\r\n        }\r\n\r\n        int value;\r\n        if (chLocal >= '0' && chLocal <= '9') {\r\n            value = chLocal - '0';\r\n            for (;;) {\r\n                chLocal = charAt(bp + (offset++));\r\n                if (chLocal >= '0' && chLocal <= '9') {\r\n                    value = value * 10 + (chLocal - '0');\r\n                } else if (chLocal == '.') {\r\n                    matchStat = NOT_MATCH;\r\n                    return 0;\r\n                } else {\r\n                    break;\r\n                }\r\n            }\r\n            if (value < 0) {\r\n                matchStat = NOT_MATCH;\r\n                return 0;\r\n            }\r\n        } else if (chLocal == 'n' && charAt(bp + offset) == 'u' && charAt(bp + offset + 1) == 'l' && charAt(bp + offset + 2) == 'l') {\r\n            matchStat = VALUE_NULL;\r\n            value = 0;\r\n            offset += 3;\r\n            chLocal = charAt(bp + offset++);\r\n\r\n            if (quote && chLocal == '\"') {\r\n                chLocal = charAt(bp + offset++);\r\n            }\r\n\r\n            for (;;) {\r\n                if (chLocal == ',') {\r\n                    bp += offset;\r\n                    this.ch = charAt(bp);\r\n                    matchStat = VALUE_NULL;\r\n                    token = JSONToken.COMMA;\r\n                    return value;\r\n                } else if (chLocal == ']') {\r\n                    bp += offset;\r\n                    this.ch = charAt(bp);\r\n                    matchStat = VALUE_NULL;\r\n                    token = JSONToken.RBRACKET;\r\n                    return value;\r\n                } else if (isWhitespace(chLocal)) {\r\n                    chLocal = charAt(bp + offset++);\r\n                    continue;\r\n                }\r\n                break;\r\n            }\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        }\r\n\r\n        for (;;) {\r\n            if (chLocal == expectNext) {\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n                matchStat = VALUE;\r\n                token = JSONToken.COMMA;\r\n                return negative ? -value : value;\r\n            } else {\r\n                if (isWhitespace(chLocal)) {\r\n                    chLocal = charAt(bp + (offset++));\r\n                    continue;\r\n                }\r\n                matchStat = NOT_MATCH;\r\n                return negative ? -value : value;\r\n            }\r\n        }\r\n    }\r\n\r\n    public boolean scanFieldBoolean(char[] fieldName) {\r\n        matchStat = UNKNOWN;\r\n\r\n        if (!charArrayCompare(fieldName)) {\r\n            matchStat = NOT_MATCH_NAME;\r\n            return false;\r\n        }\r\n\r\n        int offset = fieldName.length;\r\n        char chLocal = charAt(bp + (offset++));\r\n\r\n        boolean value;\r\n        if (chLocal == 't') {\r\n            if (charAt(bp + (offset++)) != 'r') {\r\n                matchStat = NOT_MATCH;\r\n                return false;\r\n            }\r\n            if (charAt(bp + (offset++)) != 'u') {\r\n                matchStat = NOT_MATCH;\r\n                return false;\r\n            }\r\n            if (charAt(bp + (offset++)) != 'e') {\r\n                matchStat = NOT_MATCH;\r\n                return false;\r\n            }\r\n\r\n            value = true;\r\n        } else if (chLocal == 'f') {\r\n            if (charAt(bp + (offset++)) != 'a') {\r\n                matchStat = NOT_MATCH;\r\n                return false;\r\n            }\r\n            if (charAt(bp + (offset++)) != 'l') {\r\n                matchStat = NOT_MATCH;\r\n                return false;\r\n            }\r\n            if (charAt(bp + (offset++)) != 's') {\r\n                matchStat = NOT_MATCH;\r\n                return false;\r\n            }\r\n            if (charAt(bp + (offset++)) != 'e') {\r\n                matchStat = NOT_MATCH;\r\n                return false;\r\n            }\r\n\r\n            value = false;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return false;\r\n        }\r\n\r\n        chLocal = charAt(bp + offset++);\r\n        if (chLocal == ',') {\r\n            bp += offset;\r\n            this.ch = this.charAt(bp);\r\n            matchStat = VALUE;\r\n            token = JSONToken.COMMA;\r\n\r\n            return value;\r\n        }\r\n\r\n        if (chLocal == '}') {\r\n            chLocal = charAt(bp + (offset++));\r\n            if (chLocal == ',') {\r\n                token = JSONToken.COMMA;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == ']') {\r\n                token = JSONToken.RBRACKET;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == '}') {\r\n                token = JSONToken.RBRACE;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == EOI) {\r\n                token = JSONToken.EOF;\r\n                bp += (offset - 1);\r\n                ch = EOI;\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return false;\r\n            }\r\n            matchStat = END;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return false;\r\n        }\r\n\r\n        return value;\r\n    }\r\n\r\n    public long scanFieldLong(char[] fieldName) {\r\n        matchStat = UNKNOWN;\r\n\r\n        if (!charArrayCompare(fieldName)) {\r\n            matchStat = NOT_MATCH_NAME;\r\n            return 0;\r\n        }\r\n\r\n        int offset = fieldName.length;\r\n        char chLocal = charAt(bp + (offset++));\r\n\r\n        boolean negative = false;\r\n        if (chLocal == '-') {\r\n            chLocal = charAt(bp + (offset++));\r\n            negative = true;\r\n        }\r\n\r\n        long value;\r\n        if (chLocal >= '0' && chLocal <= '9') {\r\n            value = chLocal - '0';\r\n            for (;;) {\r\n                chLocal = charAt(bp + (offset++));\r\n                if (chLocal >= '0' && chLocal <= '9') {\r\n                    value = value * 10 + (chLocal - '0');\r\n                } else if (chLocal == '.') {\r\n                    matchStat = NOT_MATCH;\r\n                    return 0;\r\n                } else {\r\n                    break;\r\n                }\r\n            }\r\n\r\n            boolean valid = offset - fieldName.length < 21\r\n                    && (value >= 0 || (value == -9223372036854775808L && negative));\r\n            if (!valid) {\r\n                matchStat = NOT_MATCH;\r\n                return 0;\r\n            }\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        }\r\n\r\n        if (chLocal == ',') {\r\n            bp += offset;\r\n            this.ch = this.charAt(bp);\r\n            matchStat = VALUE;\r\n            token = JSONToken.COMMA;\r\n            return negative ? -value : value;\r\n        }\r\n\r\n        if (chLocal == '}') {\r\n            chLocal = charAt(bp + (offset++));\r\n            if (chLocal == ',') {\r\n                token = JSONToken.COMMA;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == ']') {\r\n                token = JSONToken.RBRACKET;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == '}') {\r\n                token = JSONToken.RBRACE;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == EOI) {\r\n                token = JSONToken.EOF;\r\n                bp += (offset - 1);\r\n                ch = EOI;\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return 0;\r\n            }\r\n            matchStat = END;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        }\r\n\r\n        return negative ? -value : value;\r\n    }\r\n\r\n    public long scanLong(char expectNextChar) {\r\n        matchStat = UNKNOWN;\r\n\r\n        int offset = 0;\r\n        char chLocal = charAt(bp + (offset++));\r\n        final boolean quote = chLocal == '\"';\r\n        if (quote) {\r\n            chLocal = charAt(bp + (offset++));\r\n        }\r\n\r\n        final boolean negative = chLocal == '-';\r\n        if (negative) {\r\n            chLocal = charAt(bp + (offset++));\r\n        }\r\n\r\n        long value;\r\n        if (chLocal >= '0' && chLocal <= '9') {\r\n            value = chLocal - '0';\r\n            for (;;) {\r\n                chLocal = charAt(bp + (offset++));\r\n                if (chLocal >= '0' && chLocal <= '9') {\r\n                    value = value * 10 + (chLocal - '0');\r\n                } else if (chLocal == '.') {\r\n                    matchStat = NOT_MATCH;\r\n                    return 0;\r\n                } else {\r\n                    break;\r\n                }\r\n            }\r\n            boolean valid = value >= 0 || (value == -9223372036854775808L && negative);\r\n            if (!valid) {\r\n                String val = subString(bp, offset - 1);\r\n                throw new NumberFormatException(val);\r\n            }\r\n        } else if (chLocal == 'n' && charAt(bp + offset) == 'u' && charAt(bp + offset + 1) == 'l' && charAt(bp + offset + 2) == 'l') {\r\n            matchStat = VALUE_NULL;\r\n            value = 0;\r\n            offset += 3;\r\n            chLocal = charAt(bp + offset++);\r\n\r\n            if (quote && chLocal == '\"') {\r\n                chLocal = charAt(bp + offset++);\r\n            }\r\n\r\n            for (;;) {\r\n                if (chLocal == ',') {\r\n                    bp += offset;\r\n                    this.ch = charAt(bp);\r\n                    matchStat = VALUE_NULL;\r\n                    token = JSONToken.COMMA;\r\n                    return value;\r\n                } else if (chLocal == ']') {\r\n                    bp += offset;\r\n                    this.ch = charAt(bp);\r\n                    matchStat = VALUE_NULL;\r\n                    token = JSONToken.RBRACKET;\r\n                    return value;\r\n                } else if (isWhitespace(chLocal)) {\r\n                    chLocal = charAt(bp + offset++);\r\n                    continue;\r\n                }\r\n                break;\r\n            }\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        }\r\n\r\n        if (quote) {\r\n            if (chLocal != '\"') {\r\n                matchStat = NOT_MATCH;\r\n                return 0;\r\n            } else {\r\n                chLocal = charAt(bp + (offset++));\r\n            }\r\n        }\r\n\r\n        for (;;) {\r\n            if (chLocal == expectNextChar) {\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n                matchStat = VALUE;\r\n                token = JSONToken.COMMA;\r\n                return negative ? -value : value;\r\n            } else {\r\n                if (isWhitespace(chLocal)) {\r\n                    chLocal = charAt(bp + (offset++));\r\n                    continue;\r\n                }\r\n\r\n                matchStat = NOT_MATCH;\r\n                return value;\r\n            }\r\n        }\r\n    }\r\n\r\n    public final float scanFieldFloat(char[] fieldName) {\r\n        matchStat = UNKNOWN;\r\n\r\n        if (!charArrayCompare(fieldName)) {\r\n            matchStat = NOT_MATCH_NAME;\r\n            return 0;\r\n        }\r\n\r\n        int offset = fieldName.length;\r\n        char chLocal = charAt(bp + (offset++));\r\n\r\n        final boolean quote = chLocal == '\"';\r\n        if (quote) {\r\n            chLocal = charAt(bp + (offset++));\r\n        }\r\n\r\n        boolean negative = chLocal == '-';\r\n        if (negative) {\r\n            chLocal = charAt(bp + (offset++));\r\n        }\r\n\r\n        float value;\r\n        if (chLocal >= '0' && chLocal <= '9') {\r\n            long intVal = chLocal - '0';\r\n            for (;;) {\r\n                chLocal = charAt(bp + (offset++));\r\n                if (chLocal >= '0' && chLocal <= '9') {\r\n                    intVal = intVal * 10 + (chLocal - '0');\r\n                    continue;\r\n                } else {\r\n                    break;\r\n                }\r\n            }\r\n\r\n            long power = 1;\r\n            boolean small = (chLocal == '.');\r\n            if (small) {\r\n                chLocal = charAt(bp + (offset++));\r\n                if (chLocal >= '0' && chLocal <= '9') {\r\n                    intVal = intVal * 10 + (chLocal - '0');\r\n                    power = 10;\r\n                    for (;;) {\r\n                        chLocal = charAt(bp + (offset++));\r\n                        if (chLocal >= '0' && chLocal <= '9') {\r\n                            intVal = intVal * 10 + (chLocal - '0');\r\n                            power *= 10;\r\n                            continue;\r\n                        } else {\r\n                            break;\r\n                        }\r\n                    }\r\n                } else {\r\n                    matchStat = NOT_MATCH;\r\n                    return 0;\r\n                }\r\n            }\r\n\r\n            boolean exp = chLocal == 'e' || chLocal == 'E';\r\n            if (exp) {\r\n                chLocal = charAt(bp + (offset++));\r\n                if (chLocal == '+' || chLocal == '-') {\r\n                    chLocal = charAt(bp + (offset++));\r\n                }\r\n                for (;;) {\r\n                    if (chLocal >= '0' && chLocal <= '9') {\r\n                        chLocal = charAt(bp + (offset++));\r\n                    } else {\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n\r\n            int start, count;\r\n            if (quote) {\r\n                if (chLocal != '\"') {\r\n                    matchStat = NOT_MATCH;\r\n                    return 0;\r\n                } else {\r\n                    chLocal = charAt(bp + (offset++));\r\n                }\r\n                start = bp + fieldName.length + 1;\r\n                count = bp + offset - start - 2;\r\n            } else {\r\n                start = bp + fieldName.length;\r\n                count = bp + offset - start - 1;\r\n            }\r\n\r\n            if ((!exp) && count < 17) {\r\n                value = (float) (((double) intVal) / power);\r\n                if (negative) {\r\n                    value = -value;\r\n                }\r\n            } else {\r\n                String text = this.subString(start, count);\r\n                value = Float.parseFloat(text);\r\n            }\r\n        } else if (chLocal == 'n' && charAt(bp + offset) == 'u' && charAt(bp + offset + 1) == 'l' && charAt(bp + offset + 2) == 'l') {\r\n            matchStat = VALUE_NULL;\r\n            value = 0;\r\n            offset += 3;\r\n            chLocal = charAt(bp + offset++);\r\n\r\n            if (quote && chLocal == '\"') {\r\n                chLocal = charAt(bp + offset++);\r\n            }\r\n\r\n            for (;;) {\r\n                if (chLocal == ',') {\r\n                    bp += offset;\r\n                    this.ch = charAt(bp);\r\n                    matchStat = VALUE_NULL;\r\n                    token = JSONToken.COMMA;\r\n                    return value;\r\n                } else if (chLocal == '}') {\r\n                    bp += offset;\r\n                    this.ch = charAt(bp);\r\n                    matchStat = VALUE_NULL;\r\n                    token = JSONToken.RBRACE;\r\n                    return value;\r\n                } else if (isWhitespace(chLocal)) {\r\n                    chLocal = charAt(bp + offset++);\r\n                    continue;\r\n                }\r\n                break;\r\n            }\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        }\r\n\r\n        if (chLocal == ',') {\r\n            bp += offset;\r\n            this.ch = this.charAt(bp);\r\n            matchStat = VALUE;\r\n            token = JSONToken.COMMA;\r\n            return value;\r\n        }\r\n\r\n        if (chLocal == '}') {\r\n            chLocal = charAt(bp + (offset++));\r\n            if (chLocal == ',') {\r\n                token = JSONToken.COMMA;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == ']') {\r\n                token = JSONToken.RBRACKET;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == '}') {\r\n                token = JSONToken.RBRACE;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == EOI) {\r\n                bp += (offset - 1);\r\n                token = JSONToken.EOF;\r\n                ch = EOI;\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return 0;\r\n            }\r\n            matchStat = END;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        }\r\n\r\n        return value;\r\n    }\r\n\r\n    public final float scanFloat(char seperator) {\r\n        matchStat = UNKNOWN;\r\n\r\n        int offset = 0;\r\n        char chLocal = charAt(bp + (offset++));\r\n        final boolean quote = chLocal == '\"';\r\n        if (quote) {\r\n            chLocal = charAt(bp + (offset++));\r\n        }\r\n\r\n        boolean negative = chLocal == '-';\r\n        if (negative) {\r\n            chLocal = charAt(bp + (offset++));\r\n        }\r\n\r\n        float value;\r\n        if (chLocal >= '0' && chLocal <= '9') {\r\n            long intVal = chLocal - '0';\r\n            for (; ; ) {\r\n                chLocal = charAt(bp + (offset++));\r\n                if (chLocal >= '0' && chLocal <= '9') {\r\n                    intVal = intVal * 10 + (chLocal - '0');\r\n                    continue;\r\n                } else {\r\n                    break;\r\n                }\r\n            }\r\n\r\n            long power = 1;\r\n            boolean small = (chLocal == '.');\r\n            if (small) {\r\n                chLocal = charAt(bp + (offset++));\r\n                if (chLocal >= '0' && chLocal <= '9') {\r\n                    intVal = intVal * 10 + (chLocal - '0');\r\n                    power = 10;\r\n                    for (; ; ) {\r\n                        chLocal = charAt(bp + (offset++));\r\n                        if (chLocal >= '0' && chLocal <= '9') {\r\n                            intVal = intVal * 10 + (chLocal - '0');\r\n                            power *= 10;\r\n                            continue;\r\n                        } else {\r\n                            break;\r\n                        }\r\n                    }\r\n                } else {\r\n                    matchStat = NOT_MATCH;\r\n                    return 0;\r\n                }\r\n            }\r\n\r\n            boolean exp = chLocal == 'e' || chLocal == 'E';\r\n            if (exp) {\r\n                chLocal = charAt(bp + (offset++));\r\n                if (chLocal == '+' || chLocal == '-') {\r\n                    chLocal = charAt(bp + (offset++));\r\n                }\r\n                for (; ; ) {\r\n                    if (chLocal >= '0' && chLocal <= '9') {\r\n                        chLocal = charAt(bp + (offset++));\r\n                    } else {\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n//            int start, count;\r\n//            if (quote) {\r\n//                if (chLocal != '\"') {\r\n//                    matchStat = NOT_MATCH;\r\n//                    return 0;\r\n//                } else {\r\n//                    chLocal = charAt(bp + (offset++));\r\n//                }\r\n//                start = bp + 1;\r\n//                count = bp + offset - start - 2;\r\n//            } else {\r\n//                start = bp;\r\n//                count = bp + offset - start - 1;\r\n//            }\r\n//            String text = this.subString(start, count);\r\n//            value = Float.parseFloat(text);\r\n            int start, count;\r\n            if (quote) {\r\n                if (chLocal != '\"') {\r\n                    matchStat = NOT_MATCH;\r\n                    return 0;\r\n                } else {\r\n                    chLocal = charAt(bp + (offset++));\r\n                }\r\n                start = bp + 1;\r\n                count = bp + offset - start - 2;\r\n            } else {\r\n                start = bp;\r\n                count = bp + offset - start - 1;\r\n            }\r\n\r\n            if ((!exp) && count < 17) {\r\n                value = (float) (((double) intVal) / power);\r\n                if (negative) {\r\n                    value = -value;\r\n                }\r\n            } else {\r\n                String text = this.subString(start, count);\r\n                value = Float.parseFloat(text);\r\n            }\r\n        } else if (chLocal == 'n' && charAt(bp + offset) == 'u' && charAt(bp + offset + 1) == 'l' && charAt(bp + offset + 2) == 'l') {\r\n            matchStat = VALUE_NULL;\r\n            value = 0;\r\n            offset += 3;\r\n            chLocal = charAt(bp + offset++);\r\n\r\n            if (quote && chLocal == '\"') {\r\n                chLocal = charAt(bp + offset++);\r\n            }\r\n\r\n            for (;;) {\r\n                if (chLocal == ',') {\r\n                    bp += offset;\r\n                    this.ch = charAt(bp);\r\n                    matchStat = VALUE_NULL;\r\n                    token = JSONToken.COMMA;\r\n                    return value;\r\n                } else if (chLocal == ']') {\r\n                    bp += offset;\r\n                    this.ch = charAt(bp);\r\n                    matchStat = VALUE_NULL;\r\n                    token = JSONToken.RBRACKET;\r\n                    return value;\r\n                } else if (isWhitespace(chLocal)) {\r\n                    chLocal = charAt(bp + offset++);\r\n                    continue;\r\n                }\r\n                break;\r\n            }\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        }\r\n\r\n        if (chLocal == seperator) {\r\n            bp += offset;\r\n            this.ch = this.charAt(bp);\r\n            matchStat = VALUE;\r\n            token = JSONToken.COMMA;\r\n            return value;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return value;\r\n        }\r\n    }\r\n\r\n    public double scanDouble(char seperator) {\r\n        matchStat = UNKNOWN;\r\n\r\n        int offset = 0;\r\n        char chLocal = charAt(bp + (offset++));\r\n        final boolean quote = chLocal == '\"';\r\n        if (quote) {\r\n            chLocal = charAt(bp + (offset++));\r\n        }\r\n\r\n        boolean negative = chLocal == '-';\r\n        if (negative) {\r\n            chLocal = charAt(bp + (offset++));\r\n        }\r\n\r\n        double value;\r\n        if (chLocal >= '0' && chLocal <= '9') {\r\n            long intVal = chLocal - '0';\r\n            for (; ; ) {\r\n                chLocal = charAt(bp + (offset++));\r\n                if (chLocal >= '0' && chLocal <= '9') {\r\n                    intVal = intVal * 10 + (chLocal - '0');\r\n                    continue;\r\n                } else {\r\n                    break;\r\n                }\r\n            }\r\n\r\n            long power = 1;\r\n            boolean small = (chLocal == '.');\r\n            if (small) {\r\n                chLocal = charAt(bp + (offset++));\r\n                if (chLocal >= '0' && chLocal <= '9') {\r\n                    intVal = intVal * 10 + (chLocal - '0');\r\n                    power = 10;\r\n                    for (; ; ) {\r\n                        chLocal = charAt(bp + (offset++));\r\n                        if (chLocal >= '0' && chLocal <= '9') {\r\n                            intVal = intVal * 10 + (chLocal - '0');\r\n                            power *= 10;\r\n                            continue;\r\n                        } else {\r\n                            break;\r\n                        }\r\n                    }\r\n                } else {\r\n                    matchStat = NOT_MATCH;\r\n                    return 0;\r\n                }\r\n            }\r\n\r\n            boolean exp = chLocal == 'e' || chLocal == 'E';\r\n            if (exp) {\r\n                chLocal = charAt(bp + (offset++));\r\n                if (chLocal == '+' || chLocal == '-') {\r\n                    chLocal = charAt(bp + (offset++));\r\n                }\r\n                for (; ; ) {\r\n                    if (chLocal >= '0' && chLocal <= '9') {\r\n                        chLocal = charAt(bp + (offset++));\r\n                    } else {\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n\r\n            int start, count;\r\n            if (quote) {\r\n                if (chLocal != '\"') {\r\n                    matchStat = NOT_MATCH;\r\n                    return 0;\r\n                } else {\r\n                    chLocal = charAt(bp + (offset++));\r\n                }\r\n                start = bp + 1;\r\n                count = bp + offset - start - 2;\r\n            } else {\r\n                start = bp;\r\n                count = bp + offset - start - 1;\r\n            }\r\n\r\n            if (!exp && count < 17) {\r\n                value = ((double) intVal) / power;\r\n                if (negative) {\r\n                    value = -value;\r\n                }\r\n            } else {\r\n                String text = this.subString(start, count);\r\n                value = Double.parseDouble(text);\r\n            }\r\n        } else if (chLocal == 'n' && charAt(bp + offset) == 'u' && charAt(bp + offset + 1) == 'l' && charAt(bp + offset + 2) == 'l') {\r\n            matchStat = VALUE_NULL;\r\n            value = 0;\r\n            offset += 3;\r\n            chLocal = charAt(bp + offset++);\r\n\r\n            if (quote && chLocal == '\"') {\r\n                chLocal = charAt(bp + offset++);\r\n            }\r\n\r\n            for (;;) {\r\n                if (chLocal == ',') {\r\n                    bp += offset;\r\n                    this.ch = charAt(bp);\r\n                    matchStat = VALUE_NULL;\r\n                    token = JSONToken.COMMA;\r\n                    return value;\r\n                } else if (chLocal == ']') {\r\n                    bp += offset;\r\n                    this.ch = charAt(bp);\r\n                    matchStat = VALUE_NULL;\r\n                    token = JSONToken.RBRACKET;\r\n                    return value;\r\n                } else if (isWhitespace(chLocal)) {\r\n                    chLocal = charAt(bp + offset++);\r\n                    continue;\r\n                }\r\n                break;\r\n            }\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        }\r\n\r\n        if (chLocal == seperator) {\r\n            bp += offset;\r\n            this.ch = this.charAt(bp);\r\n            matchStat = VALUE;\r\n            token = JSONToken.COMMA;\r\n            return value;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return value;\r\n        }\r\n    }\r\n\r\n    public BigDecimal scanDecimal(char seperator) {\r\n        matchStat = UNKNOWN;\r\n\r\n        int offset = 0;\r\n        char chLocal = charAt(bp + (offset++));\r\n        final boolean quote = chLocal == '\"';\r\n        if (quote) {\r\n            chLocal = charAt(bp + (offset++));\r\n        }\r\n\r\n        boolean negative = chLocal == '-';\r\n        if (negative) {\r\n            chLocal = charAt(bp + (offset++));\r\n        }\r\n\r\n        BigDecimal value;\r\n        if (chLocal >= '0' && chLocal <= '9') {\r\n            for (;;) {\r\n                chLocal = charAt(bp + (offset++));\r\n                if (chLocal >= '0' && chLocal <= '9') {\r\n                    continue;\r\n                } else {\r\n                    break;\r\n                }\r\n            }\r\n\r\n            boolean small = (chLocal == '.');\r\n            if (small) {\r\n                chLocal = charAt(bp + (offset++));\r\n                if (chLocal >= '0' && chLocal <= '9') {\r\n                    for (;;) {\r\n                        chLocal = charAt(bp + (offset++));\r\n                        if (chLocal >= '0' && chLocal <= '9') {\r\n                            continue;\r\n                        } else {\r\n                            break;\r\n                        }\r\n                    }\r\n                } else {\r\n                    matchStat = NOT_MATCH;\r\n                    return null;\r\n                }\r\n            }\r\n\r\n            boolean exp = chLocal == 'e' || chLocal == 'E';\r\n            if (exp) {\r\n                chLocal = charAt(bp + (offset++));\r\n                if (chLocal == '+' || chLocal == '-') {\r\n                    chLocal = charAt(bp + (offset++));\r\n                }\r\n                for (;;) {\r\n                    if (chLocal >= '0' && chLocal <= '9') {\r\n                        chLocal = charAt(bp + (offset++));\r\n                    } else {\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n\r\n            int start, count;\r\n            if (quote) {\r\n                if (chLocal != '\"') {\r\n                    matchStat = NOT_MATCH;\r\n                    return null;\r\n                } else {\r\n                    chLocal = charAt(bp + (offset++));\r\n                }\r\n                start = bp + 1;\r\n                count = bp + offset - start - 2;\r\n            } else {\r\n                start = bp;\r\n                count = bp + offset - start - 1;\r\n            }\r\n\r\n            if (count > 65535) {\r\n                throw new JSONException(\"decimal overflow\");\r\n            }\r\n            char[] chars = this.sub_chars(start, count);\r\n            value = new BigDecimal(chars, 0, chars.length, MathContext.UNLIMITED);\r\n        } else if (chLocal == 'n' && charAt(bp + offset) == 'u' && charAt(bp + offset + 1) == 'l' && charAt(bp + offset + 2) == 'l') {\r\n            matchStat = VALUE_NULL;\r\n            value = null;\r\n            offset += 3;\r\n            chLocal = charAt(bp + offset++);\r\n\r\n            if (quote && chLocal == '\"') {\r\n                chLocal = charAt(bp + offset++);\r\n            }\r\n\r\n            for (;;) {\r\n                if (chLocal == ',') {\r\n                    bp += offset;\r\n                    this.ch = charAt(bp);\r\n                    matchStat = VALUE_NULL;\r\n                    token = JSONToken.COMMA;\r\n                    return value;\r\n                } else if (chLocal == '}') {\r\n                    bp += offset;\r\n                    this.ch = charAt(bp);\r\n                    matchStat = VALUE_NULL;\r\n                    token = JSONToken.RBRACE;\r\n                    return value;\r\n                } else if (isWhitespace(chLocal)) {\r\n                    chLocal = charAt(bp + offset++);\r\n                    continue;\r\n                }\r\n                break;\r\n            }\r\n            matchStat = NOT_MATCH;\r\n            return null;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return null;\r\n        }\r\n\r\n        if (chLocal == ',') {\r\n            bp += offset;\r\n            this.ch = this.charAt(bp);\r\n            matchStat = VALUE;\r\n            token = JSONToken.COMMA;\r\n            return value;\r\n        }\r\n\r\n        if (chLocal == ']') {\r\n            chLocal = charAt(bp + (offset++));\r\n            if (chLocal == ',') {\r\n                token = JSONToken.COMMA;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == ']') {\r\n                token = JSONToken.RBRACKET;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == '}') {\r\n                token = JSONToken.RBRACE;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == EOI) {\r\n                token = JSONToken.EOF;\r\n                bp += (offset - 1);\r\n                ch = EOI;\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n            matchStat = END;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return null;\r\n        }\r\n\r\n        return value;\r\n    }\r\n\r\n    public final float[] scanFieldFloatArray(char[] fieldName) {\r\n        matchStat = UNKNOWN;\r\n\r\n        if (!charArrayCompare(fieldName)) {\r\n            matchStat = NOT_MATCH_NAME;\r\n            return null;\r\n        }\r\n\r\n        int offset = fieldName.length;\r\n        char chLocal = charAt(bp + (offset++));\r\n        if (chLocal != '[') {\r\n            matchStat = NOT_MATCH_NAME;\r\n            return null;\r\n        }\r\n        chLocal = charAt(bp + (offset++));\r\n\r\n        float[] array = new float[16];\r\n        int arrayIndex = 0;\r\n\r\n        for (;;) {\r\n            int start = bp + offset - 1;\r\n\r\n            boolean negative = chLocal == '-';\r\n            if (negative) {\r\n                chLocal = charAt(bp + (offset++));\r\n            }\r\n\r\n            if (chLocal >= '0' && chLocal <= '9') {\r\n                int intVal = chLocal - '0';\r\n                for (; ; ) {\r\n                    chLocal = charAt(bp + (offset++));\r\n                    if (chLocal >= '0' && chLocal <= '9') {\r\n                        intVal = intVal * 10 + (chLocal - '0');\r\n                        continue;\r\n                    } else {\r\n                        break;\r\n                    }\r\n                }\r\n\r\n                int power = 1;\r\n                boolean small = (chLocal == '.');\r\n                if (small) {\r\n                    chLocal = charAt(bp + (offset++));\r\n                    power = 10;\r\n                    if (chLocal >= '0' && chLocal <= '9') {\r\n                        intVal = intVal * 10 + (chLocal - '0');\r\n                        for (; ; ) {\r\n                            chLocal = charAt(bp + (offset++));\r\n\r\n                            if (chLocal >= '0' && chLocal <= '9') {\r\n                                intVal = intVal * 10 + (chLocal - '0');\r\n                                power *= 10;\r\n                                continue;\r\n                            } else {\r\n                                break;\r\n                            }\r\n                        }\r\n                    } else {\r\n                        matchStat = NOT_MATCH;\r\n                        return null;\r\n                    }\r\n                }\r\n\r\n                boolean exp = chLocal == 'e' || chLocal == 'E';\r\n                if (exp) {\r\n                    chLocal = charAt(bp + (offset++));\r\n                    if (chLocal == '+' || chLocal == '-') {\r\n                        chLocal = charAt(bp + (offset++));\r\n                    }\r\n                    for (;;) {\r\n                        if (chLocal >= '0' && chLocal <= '9') {\r\n                            chLocal = charAt(bp + (offset++));\r\n                        } else {\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n\r\n                int count = bp + offset - start - 1;\r\n\r\n                float value;\r\n                if (!exp && count < 10) {\r\n                    value = ((float) intVal) / power;\r\n                    if (negative) {\r\n                        value = -value;\r\n                    }\r\n                } else {\r\n                    String text = this.subString(start, count);\r\n                    value = Float.parseFloat(text);\r\n                }\r\n\r\n                if (arrayIndex >= array.length) {\r\n                    float[] tmp = new float[array.length * 3 / 2];\r\n                    System.arraycopy(array, 0, tmp, 0, arrayIndex);\r\n                    array = tmp;\r\n                }\r\n                array[arrayIndex++] = value;\r\n\r\n                if (chLocal == ',') {\r\n                    chLocal = charAt(bp + (offset++));\r\n                } else if (chLocal == ']') {\r\n                    chLocal = charAt(bp + (offset++));\r\n                    break;\r\n                }\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n        }\r\n\r\n\r\n        if (arrayIndex != array.length) {\r\n            float[] tmp = new float[arrayIndex];\r\n            System.arraycopy(array, 0, tmp, 0, arrayIndex);\r\n            array = tmp;\r\n        }\r\n\r\n        if (chLocal == ',') {\r\n            bp += (offset - 1);\r\n            this.next();\r\n            matchStat = VALUE;\r\n            token = JSONToken.COMMA;\r\n            return array;\r\n        }\r\n\r\n        if (chLocal == '}') {\r\n            chLocal = charAt(bp + (offset++));\r\n            if (chLocal == ',') {\r\n                token = JSONToken.COMMA;\r\n                bp += (offset - 1);\r\n                this.next();\r\n            } else if (chLocal == ']') {\r\n                token = JSONToken.RBRACKET;\r\n                bp += (offset - 1);\r\n                this.next();\r\n            } else if (chLocal == '}') {\r\n                token = JSONToken.RBRACE;\r\n                bp += (offset - 1);\r\n                this.next();\r\n            } else if (chLocal == EOI) {\r\n                bp += (offset - 1);\r\n                token = JSONToken.EOF;\r\n                ch = EOI;\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n            matchStat = END;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return null;\r\n        }\r\n\r\n        return array;\r\n    }\r\n\r\n    public final float[][] scanFieldFloatArray2(char[] fieldName) {\r\n        matchStat = UNKNOWN;\r\n\r\n        if (!charArrayCompare(fieldName)) {\r\n            matchStat = NOT_MATCH_NAME;\r\n            return null;\r\n        }\r\n\r\n        int offset = fieldName.length;\r\n        char chLocal = charAt(bp + (offset++));\r\n\r\n        if (chLocal != '[') {\r\n            matchStat = NOT_MATCH_NAME;\r\n            return null;\r\n        }\r\n        chLocal = charAt(bp + (offset++));\r\n\r\n        float[][] arrayarray = new float[16][];\r\n        int arrayarrayIndex = 0;\r\n\r\n        for (;;) {\r\n            if (chLocal == '[') {\r\n                chLocal = charAt(bp + (offset++));\r\n\r\n                float[] array = new float[16];\r\n                int arrayIndex = 0;\r\n\r\n                for (; ; ) {\r\n                    int start = bp + offset - 1;\r\n                    boolean negative = chLocal == '-';\r\n                    if (negative) {\r\n                        chLocal = charAt(bp + (offset++));\r\n                    }\r\n\r\n                    if (chLocal >= '0' && chLocal <= '9') {\r\n                        int intVal = chLocal - '0';\r\n                        for (; ; ) {\r\n                            chLocal = charAt(bp + (offset++));\r\n\r\n                            if (chLocal >= '0' && chLocal <= '9') {\r\n                                intVal = intVal * 10 + (chLocal - '0');\r\n                                continue;\r\n                            } else {\r\n                                break;\r\n                            }\r\n                        }\r\n\r\n                        int power = 1;\r\n                        if (chLocal == '.') {\r\n                            chLocal = charAt(bp + (offset++));\r\n\r\n                            if (chLocal >= '0' && chLocal <= '9') {\r\n                                intVal = intVal * 10 + (chLocal - '0');\r\n                                power = 10;\r\n                                for (; ; ) {\r\n                                    chLocal = charAt(bp + (offset++));\r\n\r\n                                    if (chLocal >= '0' && chLocal <= '9') {\r\n                                        intVal = intVal * 10 + (chLocal - '0');\r\n                                        power *= 10;\r\n                                        continue;\r\n                                    } else {\r\n                                        break;\r\n                                    }\r\n                                }\r\n                            } else {\r\n                                matchStat = NOT_MATCH;\r\n                                return null;\r\n                            }\r\n                        }\r\n\r\n                        boolean exp = chLocal == 'e' || chLocal == 'E';\r\n                        if (exp) {\r\n                            chLocal = charAt(bp + (offset++));\r\n                            if (chLocal == '+' || chLocal == '-') {\r\n                                chLocal = charAt(bp + (offset++));\r\n                            }\r\n                            for (;;) {\r\n                                if (chLocal >= '0' && chLocal <= '9') {\r\n                                    chLocal = charAt(bp + (offset++));\r\n                                } else {\r\n                                    break;\r\n                                }\r\n                            }\r\n                        }\r\n\r\n                        int count = bp + offset - start - 1;\r\n                        float value;\r\n                        if (!exp && count < 10) {\r\n                            value = ((float) intVal) / power;\r\n                            if (negative) {\r\n                                value = -value;\r\n                            }\r\n                        } else {\r\n                            String text = this.subString(start, count);\r\n                            value = Float.parseFloat(text);\r\n                        }\r\n\r\n                        if (arrayIndex >= array.length) {\r\n                            float[] tmp = new float[array.length * 3 / 2];\r\n                            System.arraycopy(array, 0, tmp, 0, arrayIndex);\r\n                            array = tmp;\r\n                        }\r\n                        array[arrayIndex++] = value;\r\n\r\n                        if (chLocal == ',') {\r\n                            chLocal = charAt(bp + (offset++));\r\n                        } else if (chLocal == ']') {\r\n                            chLocal = charAt(bp + (offset++));\r\n                            break;\r\n                        }\r\n                    } else {\r\n                        matchStat = NOT_MATCH;\r\n                        return null;\r\n                    }\r\n                }\r\n\r\n                // compact\r\n                if (arrayIndex != array.length) {\r\n                    float[] tmp = new float[arrayIndex];\r\n                    System.arraycopy(array, 0, tmp, 0, arrayIndex);\r\n                    array = tmp;\r\n                }\r\n\r\n                if (arrayarrayIndex >= arrayarray.length) {\r\n                    float[][] tmp = new float[arrayarray.length * 3 / 2][];\r\n                    System.arraycopy(array, 0, tmp, 0, arrayIndex);\r\n                    arrayarray = tmp;\r\n                }\r\n                arrayarray[arrayarrayIndex++] = array;\r\n\r\n                if (chLocal == ',') {\r\n                    chLocal = charAt(bp + (offset++));\r\n                } else if (chLocal == ']') {\r\n                    chLocal = charAt(bp + (offset++));\r\n                    break;\r\n                }\r\n            } else {\r\n                break;\r\n            }\r\n        }\r\n\r\n        // compact\r\n        if (arrayarrayIndex != arrayarray.length) {\r\n            float[][] tmp = new float[arrayarrayIndex][];\r\n            System.arraycopy(arrayarray, 0, tmp, 0, arrayarrayIndex);\r\n            arrayarray = tmp;\r\n        }\r\n\r\n        if (chLocal == ',') {\r\n            bp += (offset - 1);\r\n            this.next();\r\n            matchStat = VALUE;\r\n            token = JSONToken.COMMA;\r\n            return arrayarray;\r\n        }\r\n\r\n        if (chLocal == '}') {\r\n            chLocal = charAt(bp + (offset++));\r\n            if (chLocal == ',') {\r\n                token = JSONToken.COMMA;\r\n                bp += (offset - 1);\r\n                this.next();\r\n            } else if (chLocal == ']') {\r\n                token = JSONToken.RBRACKET;\r\n                bp += (offset - 1);\r\n                this.next();\r\n            } else if (chLocal == '}') {\r\n                token = JSONToken.RBRACE;\r\n                bp += (offset - 1);\r\n                this.next();\r\n            } else if (chLocal == EOI) {\r\n                bp += (offset - 1);\r\n                token = JSONToken.EOF;\r\n                ch = EOI;\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n            matchStat = END;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return null;\r\n        }\r\n\r\n        return arrayarray;\r\n    }\r\n\r\n    public final double scanFieldDouble(char[] fieldName) {\r\n        matchStat = UNKNOWN;\r\n\r\n        if (!charArrayCompare(fieldName)) {\r\n            matchStat = NOT_MATCH_NAME;\r\n            return 0;\r\n        }\r\n\r\n        int offset = fieldName.length;\r\n        char chLocal = charAt(bp + (offset++));\r\n        final boolean quote = chLocal == '\"';\r\n        if (quote) {\r\n            chLocal = charAt(bp + (offset++));\r\n        }\r\n\r\n        boolean negative = chLocal == '-';\r\n        if (negative) {\r\n            chLocal = charAt(bp + (offset++));\r\n        }\r\n\r\n        double value;\r\n        if (chLocal >= '0' && chLocal <= '9') {\r\n            long intVal = chLocal - '0';\r\n\r\n            for (;;) {\r\n                chLocal = charAt(bp + (offset++));\r\n                if (chLocal >= '0' && chLocal <= '9') {\r\n                    intVal = intVal * 10 + (chLocal - '0');\r\n                    continue;\r\n                } else {\r\n                    break;\r\n                }\r\n            }\r\n\r\n            long power = 1;\r\n            boolean small = (chLocal == '.');\r\n            if (small) {\r\n                chLocal = charAt(bp + (offset++));\r\n                if (chLocal >= '0' && chLocal <= '9') {\r\n                    intVal = intVal * 10 + (chLocal - '0');\r\n                    power = 10;\r\n                    for (;;) {\r\n                        chLocal = charAt(bp + (offset++));\r\n                        if (chLocal >= '0' && chLocal <= '9') {\r\n                            intVal = intVal * 10 + (chLocal - '0');\r\n                            power *= 10;\r\n                            continue;\r\n                        } else {\r\n                            break;\r\n                        }\r\n                    }\r\n                } else {\r\n                    matchStat = NOT_MATCH;\r\n                    return 0;\r\n                }\r\n            }\r\n\r\n            boolean exp = chLocal == 'e' || chLocal == 'E';\r\n            if (exp) {\r\n                chLocal = charAt(bp + (offset++));\r\n                if (chLocal == '+' || chLocal == '-') {\r\n                    chLocal = charAt(bp + (offset++));\r\n                }\r\n                for (;;) {\r\n                    if (chLocal >= '0' && chLocal <= '9') {\r\n                        chLocal = charAt(bp + (offset++));\r\n                    } else {\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n\r\n            int start, count;\r\n            if (quote) {\r\n                if (chLocal != '\"') {\r\n                    matchStat = NOT_MATCH;\r\n                    return 0;\r\n                } else {\r\n                    chLocal = charAt(bp + (offset++));\r\n                }\r\n                start = bp + fieldName.length + 1;\r\n                count = bp + offset - start - 2;\r\n            } else {\r\n                start = bp + fieldName.length;\r\n                count = bp + offset - start - 1;\r\n            }\r\n\r\n            if (!exp && count < 17) {\r\n                value = ((double) intVal) / power;\r\n                if (negative) {\r\n                    value = -value;\r\n                }\r\n            } else {\r\n                String text = this.subString(start, count);\r\n                value = Double.parseDouble(text);\r\n            }\r\n        } else if (chLocal == 'n' &&\r\n                   charAt(bp + offset) == 'u' &&\r\n                   charAt(bp + offset + 1) == 'l' &&\r\n                   charAt(bp + offset + 2) == 'l') {\r\n            matchStat = VALUE_NULL;\r\n            value = 0;\r\n            offset += 3;\r\n            chLocal = charAt(bp + offset++);\r\n\r\n            if (quote && chLocal == '\"') {\r\n                chLocal = charAt(bp + offset++);\r\n            }\r\n\r\n            for (;;) {\r\n                if (chLocal == ',') {\r\n                    bp += offset;\r\n                    this.ch = charAt(bp);\r\n                    matchStat = VALUE_NULL;\r\n                    token = JSONToken.COMMA;\r\n                    return value;\r\n                } else if (chLocal == '}') {\r\n                    bp += offset;\r\n                    this.ch = charAt(bp);\r\n                    matchStat = VALUE_NULL;\r\n                    token = JSONToken.RBRACE;\r\n                    return value;\r\n                } else if (isWhitespace(chLocal)) {\r\n                    chLocal = charAt(bp + offset++);\r\n                    continue;\r\n                }\r\n                break;\r\n            }\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        }\r\n\r\n        if (chLocal == ',') {\r\n            bp += offset;\r\n            this.ch = this.charAt(bp);\r\n            matchStat = VALUE;\r\n            token = JSONToken.COMMA;\r\n            return value;\r\n        }\r\n\r\n        if (chLocal == '}') {\r\n            chLocal = charAt(bp + (offset++));\r\n            if (chLocal == ',') {\r\n                token = JSONToken.COMMA;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == ']') {\r\n                token = JSONToken.RBRACKET;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == '}') {\r\n                token = JSONToken.RBRACE;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == EOI) {\r\n                token = JSONToken.EOF;\r\n                bp += (offset - 1);\r\n                ch = EOI;\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return 0;\r\n            }\r\n            matchStat = END;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        }\r\n\r\n        return value;\r\n    }\r\n\r\n    public BigDecimal scanFieldDecimal(char[] fieldName) {\r\n        matchStat = UNKNOWN;\r\n\r\n        if (!charArrayCompare(fieldName)) {\r\n            matchStat = NOT_MATCH_NAME;\r\n            return null;\r\n        }\r\n\r\n        int offset = fieldName.length;\r\n        char chLocal = charAt(bp + (offset++));\r\n        final boolean quote = chLocal == '\"';\r\n        if (quote) {\r\n            chLocal = charAt(bp + (offset++));\r\n        }\r\n\r\n        boolean negative = chLocal == '-';\r\n        if (negative) {\r\n            chLocal = charAt(bp + (offset++));\r\n        }\r\n\r\n        BigDecimal value;\r\n        if (chLocal >= '0' && chLocal <= '9') {\r\n            for (;;) {\r\n                chLocal = charAt(bp + (offset++));\r\n                if (chLocal >= '0' && chLocal <= '9') {\r\n                    continue;\r\n                } else {\r\n                    break;\r\n                }\r\n            }\r\n\r\n            boolean small = (chLocal == '.');\r\n            if (small) {\r\n                chLocal = charAt(bp + (offset++));\r\n                if (chLocal >= '0' && chLocal <= '9') {\r\n                    for (;;) {\r\n                        chLocal = charAt(bp + (offset++));\r\n                        if (chLocal >= '0' && chLocal <= '9') {\r\n                            continue;\r\n                        } else {\r\n                            break;\r\n                        }\r\n                    }\r\n                } else {\r\n                    matchStat = NOT_MATCH;\r\n                    return null;\r\n                }\r\n            }\r\n\r\n            boolean exp = chLocal == 'e' || chLocal == 'E';\r\n            if (exp) {\r\n                chLocal = charAt(bp + (offset++));\r\n                if (chLocal == '+' || chLocal == '-') {\r\n                    chLocal = charAt(bp + (offset++));\r\n                }\r\n                for (;;) {\r\n                    if (chLocal >= '0' && chLocal <= '9') {\r\n                        chLocal = charAt(bp + (offset++));\r\n                    } else {\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n\r\n            int start, count;\r\n            if (quote) {\r\n                if (chLocal != '\"') {\r\n                    matchStat = NOT_MATCH;\r\n                    return null;\r\n                } else {\r\n                    chLocal = charAt(bp + (offset++));\r\n                }\r\n                start = bp + fieldName.length + 1;\r\n                count = bp + offset - start - 2;\r\n            } else {\r\n                start = bp + fieldName.length;\r\n                count = bp + offset - start - 1;\r\n            }\r\n\r\n            if (count > 65535) {\r\n                throw new JSONException(\"scan decimal overflow\");\r\n            }\r\n\r\n            char[] chars = this.sub_chars(start, count);\r\n            value = new BigDecimal(chars, 0, chars.length, MathContext.UNLIMITED);\r\n        } else if (chLocal == 'n' &&\r\n                   charAt(bp + offset) == 'u' &&\r\n                   charAt(bp + offset + 1) == 'l' &&\r\n                   charAt(bp + offset + 2) == 'l') {\r\n            matchStat = VALUE_NULL;\r\n            value = null;\r\n            offset += 3;\r\n            chLocal = charAt(bp + offset++);\r\n\r\n            if (quote && chLocal == '\"') {\r\n                chLocal = charAt(bp + offset++);\r\n            }\r\n\r\n            for (;;) {\r\n                if (chLocal == ',') {\r\n                    bp += offset;\r\n                    this.ch = charAt(bp);\r\n                    matchStat = VALUE_NULL;\r\n                    token = JSONToken.COMMA;\r\n                    return value;\r\n                } else if (chLocal == '}') {\r\n                    bp += offset;\r\n                    this.ch = charAt(bp);\r\n                    matchStat = VALUE_NULL;\r\n                    token = JSONToken.RBRACE;\r\n                    return value;\r\n                } else if (isWhitespace(chLocal)) {\r\n                    chLocal = charAt(bp + offset++);\r\n                    continue;\r\n                }\r\n                break;\r\n            }\r\n            matchStat = NOT_MATCH;\r\n            return null;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return null;\r\n        }\r\n\r\n        if (chLocal == ',') {\r\n            bp += offset;\r\n            this.ch = this.charAt(bp);\r\n            matchStat = VALUE;\r\n            token = JSONToken.COMMA;\r\n            return value;\r\n        }\r\n\r\n        if (chLocal == '}') {\r\n            chLocal = charAt(bp + (offset++));\r\n            if (chLocal == ',') {\r\n                token = JSONToken.COMMA;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == ']') {\r\n                token = JSONToken.RBRACKET;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == '}') {\r\n                token = JSONToken.RBRACE;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == EOI) {\r\n                token = JSONToken.EOF;\r\n                bp += (offset - 1);\r\n                ch = EOI;\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n            matchStat = END;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return null;\r\n        }\r\n\r\n        return value;\r\n    }\r\n\r\n    public BigInteger scanFieldBigInteger(char[] fieldName) {\r\n        matchStat = UNKNOWN;\r\n\r\n        if (!charArrayCompare(fieldName)) {\r\n            matchStat = NOT_MATCH_NAME;\r\n            return null;\r\n        }\r\n\r\n        int offset = fieldName.length;\r\n        char chLocal = charAt(bp + (offset++));\r\n        final boolean quote = chLocal == '\"';\r\n        if (quote) {\r\n            chLocal = charAt(bp + (offset++));\r\n        }\r\n\r\n        boolean negative = chLocal == '-';\r\n        if (negative) {\r\n            chLocal = charAt(bp + (offset++));\r\n        }\r\n\r\n        BigInteger value;\r\n        if (chLocal >= '0' && chLocal <= '9') {\r\n            long intVal = chLocal - '0';\r\n            boolean overflow = false;\r\n            long temp;\r\n            for (;;) {\r\n                chLocal = charAt(bp + (offset++));\r\n                if (chLocal >= '0' && chLocal <= '9') {\r\n                    temp = intVal * 10 + (chLocal - '0');\r\n                    if (temp < intVal) {\r\n                        overflow = true;\r\n                        break;\r\n                    }\r\n                    intVal = temp;\r\n                    continue;\r\n                } else {\r\n                    break;\r\n                }\r\n            }\r\n\r\n            int start, count;\r\n            if (quote) {\r\n                if (chLocal != '\"') {\r\n                    matchStat = NOT_MATCH;\r\n                    return null;\r\n                } else {\r\n                    chLocal = charAt(bp + (offset++));\r\n                }\r\n                start = bp + fieldName.length + 1;\r\n                count = bp + offset - start - 2;\r\n            } else {\r\n                start = bp + fieldName.length;\r\n                count = bp + offset - start - 1;\r\n            }\r\n\r\n            if (!overflow && (count < 20 || (negative && count < 21))) {\r\n                value = BigInteger.valueOf(negative ? -intVal : intVal);\r\n            } else {\r\n\r\n//            char[] chars = this.sub_chars(negative ? start + 1 : start, count);\r\n//            value = new BigInteger(chars, )\r\n                if (count > 65535) {\r\n                    throw new JSONException(\"scanInteger overflow\");\r\n                }\r\n\r\n                String strVal = this.subString(start, count);\r\n                value = new BigInteger(strVal, 10);\r\n            }\r\n        } else if (chLocal == 'n' &&\r\n                   charAt(bp + offset) == 'u' &&\r\n                   charAt(bp + offset + 1) == 'l' &&\r\n                   charAt(bp + offset + 2) == 'l') {\r\n            matchStat = VALUE_NULL;\r\n            value = null;\r\n            offset += 3;\r\n            chLocal = charAt(bp + offset++);\r\n\r\n            if (quote && chLocal == '\"') {\r\n                chLocal = charAt(bp + offset++);\r\n            }\r\n\r\n            for (;;) {\r\n                if (chLocal == ',') {\r\n                    bp += offset;\r\n                    this.ch = charAt(bp);\r\n                    matchStat = VALUE_NULL;\r\n                    token = JSONToken.COMMA;\r\n                    return value;\r\n                } else if (chLocal == '}') {\r\n                    bp += offset;\r\n                    this.ch = charAt(bp);\r\n                    matchStat = VALUE_NULL;\r\n                    token = JSONToken.RBRACE;\r\n                    return value;\r\n                } else if (isWhitespace(chLocal)) {\r\n                    chLocal = charAt(bp + offset++);\r\n                    continue;\r\n                }\r\n                break;\r\n            }\r\n            matchStat = NOT_MATCH;\r\n            return null;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return null;\r\n        }\r\n\r\n        if (chLocal == ',') {\r\n            bp += offset;\r\n            this.ch = this.charAt(bp);\r\n            matchStat = VALUE;\r\n            token = JSONToken.COMMA;\r\n            return value;\r\n        }\r\n\r\n        if (chLocal == '}') {\r\n            chLocal = charAt(bp + (offset++));\r\n            if (chLocal == ',') {\r\n                token = JSONToken.COMMA;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == ']') {\r\n                token = JSONToken.RBRACKET;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == '}') {\r\n                token = JSONToken.RBRACE;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == EOI) {\r\n                token = JSONToken.EOF;\r\n                bp += (offset - 1);\r\n                ch = EOI;\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n            matchStat = END;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return null;\r\n        }\r\n\r\n        return value;\r\n    }\r\n\r\n    public java.util.Date scanFieldDate(char[] fieldName) {\r\n        matchStat = UNKNOWN;\r\n\r\n        if (!charArrayCompare(fieldName)) {\r\n            matchStat = NOT_MATCH_NAME;\r\n            return null;\r\n        }\r\n\r\n        // int index = bp + fieldName.length;\r\n\r\n        int offset = fieldName.length;\r\n        char chLocal = charAt(bp + (offset++));\r\n\r\n        final java.util.Date dateVal;\r\n        if (chLocal == '\"'){\r\n            int startIndex = bp + fieldName.length + 1;\r\n            int endIndex = indexOf('\"', startIndex);\r\n            if (endIndex == -1) {\r\n                throw new JSONException(\"unclosed str\");\r\n            }\r\n\r\n            int startIndex2 = bp + fieldName.length + 1; // must re compute\r\n            String stringVal = subString(startIndex2, endIndex - startIndex2);\r\n            if (stringVal.indexOf('\\\\') != -1) {\r\n                for (;;) {\r\n                    int slashCount = 0;\r\n                    for (int i = endIndex - 1; i >= 0; --i) {\r\n                        if (charAt(i) == '\\\\') {\r\n                            slashCount++;\r\n                        } else {\r\n                            break;\r\n                        }\r\n                    }\r\n                    if (slashCount % 2 == 0) {\r\n                        break;\r\n                    }\r\n                    endIndex = indexOf('\"', endIndex + 1);\r\n                }\r\n\r\n                int chars_len = endIndex - (bp + fieldName.length + 1);\r\n                char[] chars = sub_chars( bp + fieldName.length + 1, chars_len);\r\n\r\n                stringVal = readString(chars, chars_len);\r\n            }\r\n\r\n            offset += (endIndex - (bp + fieldName.length + 1) + 1);\r\n            chLocal = charAt(bp + (offset++));\r\n\r\n            JSONScanner dateLexer = new JSONScanner(stringVal);\r\n            try {\r\n                if (dateLexer.scanISO8601DateIfMatch(false)) {\r\n                    Calendar calendar = dateLexer.getCalendar();\r\n                    dateVal = calendar.getTime();\r\n                } else {\r\n                    matchStat = NOT_MATCH;\r\n                    return null;\r\n                }\r\n            } finally {\r\n                dateLexer.close();\r\n            }\r\n        } else if (chLocal == '-' || (chLocal >= '0' && chLocal <= '9')) {\r\n            long millis = 0;\r\n\r\n            boolean negative = false;\r\n            if (chLocal == '-') {\r\n                chLocal = charAt(bp + (offset++));\r\n                negative = true;\r\n            }\r\n\r\n            if (chLocal >= '0' && chLocal <= '9') {\r\n                millis = chLocal - '0';\r\n                for (; ; ) {\r\n                    chLocal = charAt(bp + (offset++));\r\n                    if (chLocal >= '0' && chLocal <= '9') {\r\n                        millis = millis * 10 + (chLocal - '0');\r\n                    } else {\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n\r\n            if (millis < 0) {\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n\r\n            if (negative) {\r\n                millis = -millis;\r\n            }\r\n\r\n            dateVal = new java.util.Date(millis);\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return null;\r\n        }\r\n\r\n        if (chLocal == ',') {\r\n            bp += offset;\r\n            this.ch = this.charAt(bp);\r\n            matchStat = VALUE;\r\n            return dateVal;\r\n        }\r\n\r\n        if (chLocal == '}') {\r\n            chLocal = charAt(bp + (offset++));\r\n            if (chLocal == ',') {\r\n                token = JSONToken.COMMA;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == ']') {\r\n                token = JSONToken.RBRACKET;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == '}') {\r\n                token = JSONToken.RBRACE;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == EOI) {\r\n                token = JSONToken.EOF;\r\n                bp += (offset - 1);\r\n                ch = EOI;\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n            matchStat = END;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return null;\r\n        }\r\n\r\n        return dateVal;\r\n    }\r\n\r\n    public java.util.Date scanDate(char seperator) {\r\n        matchStat = UNKNOWN;\r\n\r\n        int offset = 0;\r\n        char chLocal = charAt(bp + (offset++));\r\n\r\n        final java.util.Date dateVal;\r\n        if (chLocal == '\"'){\r\n            int startIndex = bp + 1;\r\n            int endIndex = indexOf('\"', startIndex);\r\n            if (endIndex == -1) {\r\n                throw new JSONException(\"unclosed str\");\r\n            }\r\n\r\n            int startIndex2 = bp + 1; // must re compute\r\n            String stringVal = subString(startIndex2, endIndex - startIndex2);\r\n            if (stringVal.indexOf('\\\\') != -1) {\r\n                for (;;) {\r\n                    int slashCount = 0;\r\n                    for (int i = endIndex - 1; i >= 0; --i) {\r\n                        if (charAt(i) == '\\\\') {\r\n                            slashCount++;\r\n                        } else {\r\n                            break;\r\n                        }\r\n                    }\r\n                    if (slashCount % 2 == 0) {\r\n                        break;\r\n                    }\r\n                    endIndex = indexOf('\"', endIndex + 1);\r\n                }\r\n\r\n                int chars_len = endIndex - (bp + 1);\r\n                char[] chars = sub_chars( bp + 1, chars_len);\r\n\r\n                stringVal = readString(chars, chars_len);\r\n            }\r\n\r\n            offset += (endIndex - (bp + 1) + 1);\r\n            chLocal = charAt(bp + (offset++));\r\n\r\n            JSONScanner dateLexer = new JSONScanner(stringVal);\r\n            try {\r\n                if (dateLexer.scanISO8601DateIfMatch(false)) {\r\n                    Calendar calendar = dateLexer.getCalendar();\r\n                    dateVal = calendar.getTime();\r\n                } else {\r\n                    matchStat = NOT_MATCH;\r\n                    return null;\r\n                }\r\n            } finally {\r\n                dateLexer.close();\r\n            }\r\n        } else if (chLocal == '-' || (chLocal >= '0' && chLocal <= '9')) {\r\n            long millis = 0;\r\n\r\n            boolean negative = false;\r\n            if (chLocal == '-') {\r\n                chLocal = charAt(bp + (offset++));\r\n                negative = true;\r\n            }\r\n\r\n            if (chLocal >= '0' && chLocal <= '9') {\r\n                millis = chLocal - '0';\r\n                for (; ; ) {\r\n                    chLocal = charAt(bp + (offset++));\r\n                    if (chLocal >= '0' && chLocal <= '9') {\r\n                        millis = millis * 10 + (chLocal - '0');\r\n                    } else {\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n\r\n            if (millis < 0) {\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n\r\n            if (negative) {\r\n                millis = -millis;\r\n            }\r\n\r\n            dateVal = new java.util.Date(millis);\r\n        } else if (chLocal == 'n' &&\r\n                   charAt(bp + offset) == 'u' &&\r\n                   charAt(bp + offset + 1) == 'l' &&\r\n                   charAt(bp + offset + 2) == 'l') {\r\n            matchStat = VALUE_NULL;\r\n            dateVal = null;\r\n            offset += 3;\r\n            chLocal = charAt(bp + offset++);\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return null;\r\n        }\r\n\r\n        if (chLocal == ',') {\r\n            bp += offset;\r\n            this.ch = this.charAt(bp);\r\n            matchStat = VALUE;\r\n            token = JSONToken.COMMA;\r\n            return dateVal;\r\n        }\r\n\r\n        if (chLocal == ']') {\r\n            chLocal = charAt(bp + (offset++));\r\n            if (chLocal == ',') {\r\n                token = JSONToken.COMMA;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == ']') {\r\n                token = JSONToken.RBRACKET;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == '}') {\r\n                token = JSONToken.RBRACE;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == EOI) {\r\n                token = JSONToken.EOF;\r\n                bp += (offset - 1);\r\n                ch = EOI;\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n            matchStat = END;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return null;\r\n        }\r\n\r\n        return dateVal;\r\n    }\r\n\r\n    public java.util.UUID scanFieldUUID(char[] fieldName) {\r\n        matchStat = UNKNOWN;\r\n\r\n        if (!charArrayCompare(fieldName)) {\r\n            matchStat = NOT_MATCH_NAME;\r\n            return null;\r\n        }\r\n\r\n        // int index = bp + fieldName.length;\r\n\r\n        int offset = fieldName.length;\r\n        char chLocal = charAt(bp + (offset++));\r\n\r\n        final java.util.UUID uuid;\r\n        if (chLocal == '\"') {\r\n            int startIndex = bp + fieldName.length + 1;\r\n            int endIndex = indexOf('\"', startIndex);\r\n            if (endIndex == -1) {\r\n                throw new JSONException(\"unclosed str\");\r\n            }\r\n\r\n            int startIndex2 = bp + fieldName.length + 1; // must re compute\r\n            int len = endIndex - startIndex2;\r\n            if (len == 36) {\r\n                long mostSigBits = 0, leastSigBits = 0;\r\n                for (int i = 0; i < 8; ++i) {\r\n                    char ch = charAt(startIndex2 + i);\r\n                    int num;\r\n                    if (ch >= '0' && ch <= '9') {\r\n                        num = ch - '0';\r\n                    } else if (ch >= 'a' && ch <= 'f') {\r\n                        num = 10 + (ch - 'a');\r\n                    } else if (ch >= 'A' && ch <= 'F') {\r\n                        num = 10 + (ch - 'A');\r\n                    } else {\r\n                        matchStat = NOT_MATCH_NAME;\r\n                        return null;\r\n                    }\r\n\r\n                    mostSigBits <<= 4;\r\n                    mostSigBits |= num;\r\n                }\r\n                for (int i = 9; i < 13; ++i) {\r\n                    char ch = charAt(startIndex2 + i);\r\n                    int num;\r\n                    if (ch >= '0' && ch <= '9') {\r\n                        num = ch - '0';\r\n                    } else if (ch >= 'a' && ch <= 'f') {\r\n                        num = 10 + (ch - 'a');\r\n                    } else if (ch >= 'A' && ch <= 'F') {\r\n                        num = 10 + (ch - 'A');\r\n                    } else {\r\n                        matchStat = NOT_MATCH_NAME;\r\n                        return null;\r\n                    }\r\n\r\n                    mostSigBits <<= 4;\r\n                    mostSigBits |= num;\r\n                }\r\n                for (int i = 14; i < 18; ++i) {\r\n                    char ch = charAt(startIndex2 + i);\r\n                    int num;\r\n                    if (ch >= '0' && ch <= '9') {\r\n                        num = ch - '0';\r\n                    } else if (ch >= 'a' && ch <= 'f') {\r\n                        num = 10 + (ch - 'a');\r\n                    } else if (ch >= 'A' && ch <= 'F') {\r\n                        num = 10 + (ch - 'A');\r\n                    } else {\r\n                        matchStat = NOT_MATCH_NAME;\r\n                        return null;\r\n                    }\r\n\r\n                    mostSigBits <<= 4;\r\n                    mostSigBits |= num;\r\n                }\r\n                for (int i = 19; i < 23; ++i) {\r\n                    char ch = charAt(startIndex2 + i);\r\n                    int num;\r\n                    if (ch >= '0' && ch <= '9') {\r\n                        num = ch - '0';\r\n                    } else if (ch >= 'a' && ch <= 'f') {\r\n                        num = 10 + (ch - 'a');\r\n                    } else if (ch >= 'A' && ch <= 'F') {\r\n                        num = 10 + (ch - 'A');\r\n                    } else {\r\n                        matchStat = NOT_MATCH_NAME;\r\n                        return null;\r\n                    }\r\n\r\n                    leastSigBits <<= 4;\r\n                    leastSigBits |= num;\r\n                }\r\n                for (int i = 24; i < 36; ++i) {\r\n                    char ch = charAt(startIndex2 + i);\r\n                    int num;\r\n                    if (ch >= '0' && ch <= '9') {\r\n                        num = ch - '0';\r\n                    } else if (ch >= 'a' && ch <= 'f') {\r\n                        num = 10 + (ch - 'a');\r\n                    } else if (ch >= 'A' && ch <= 'F') {\r\n                        num = 10 + (ch - 'A');\r\n                    } else {\r\n                        matchStat = NOT_MATCH_NAME;\r\n                        return null;\r\n                    }\r\n\r\n                    leastSigBits <<= 4;\r\n                    leastSigBits |= num;\r\n                }\r\n                uuid = new UUID(mostSigBits, leastSigBits);\r\n\r\n                offset += (endIndex - (bp + fieldName.length + 1) + 1);\r\n                chLocal = charAt(bp + (offset++));\r\n            } else if (len == 32) {\r\n                long mostSigBits = 0, leastSigBits = 0;\r\n                for (int i = 0; i < 16; ++i) {\r\n                    char ch = charAt(startIndex2 + i);\r\n                    int num;\r\n                    if (ch >= '0' && ch <= '9') {\r\n                        num = ch - '0';\r\n                    } else if (ch >= 'a' && ch <= 'f') {\r\n                        num = 10 + (ch - 'a');\r\n                    } else if (ch >= 'A' && ch <= 'F') {\r\n                        num = 10 + (ch - 'A');\r\n                    } else {\r\n                        matchStat = NOT_MATCH_NAME;\r\n                        return null;\r\n                    }\r\n\r\n                    mostSigBits <<= 4;\r\n                    mostSigBits |= num;\r\n                }\r\n                for (int i = 16; i < 32; ++i) {\r\n                    char ch = charAt(startIndex2 + i);\r\n                    int num;\r\n                    if (ch >= '0' && ch <= '9') {\r\n                        num = ch - '0';\r\n                    } else if (ch >= 'a' && ch <= 'f') {\r\n                        num = 10 + (ch - 'a');\r\n                    } else if (ch >= 'A' && ch <= 'F') {\r\n                        num = 10 + (ch - 'A');\r\n                    } else {\r\n                        matchStat = NOT_MATCH_NAME;\r\n                        return null;\r\n                    }\r\n\r\n                    leastSigBits <<= 4;\r\n                    leastSigBits |= num;\r\n                }\r\n\r\n                uuid = new UUID(mostSigBits, leastSigBits);\r\n\r\n                offset += (endIndex - (bp + fieldName.length + 1) + 1);\r\n                chLocal = charAt(bp + (offset++));\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n        } else if (chLocal == 'n'\r\n                && charAt(bp + (offset++)) == 'u'\r\n                && charAt(bp + (offset++)) == 'l'\r\n                && charAt(bp + (offset++)) == 'l') {\r\n            uuid = null;\r\n            chLocal = charAt(bp + (offset++));\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return null;\r\n        }\r\n\r\n        if (chLocal == ',') {\r\n            bp += offset;\r\n            this.ch = this.charAt(bp);\r\n            matchStat = VALUE;\r\n            return uuid;\r\n        }\r\n\r\n        if (chLocal == '}') {\r\n            chLocal = charAt(bp + (offset++));\r\n            if (chLocal == ',') {\r\n                token = JSONToken.COMMA;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == ']') {\r\n                token = JSONToken.RBRACKET;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == '}') {\r\n                token = JSONToken.RBRACE;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == EOI) {\r\n                token = JSONToken.EOF;\r\n                bp += (offset - 1);\r\n                ch = EOI;\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n            matchStat = END;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return null;\r\n        }\r\n\r\n        return uuid;\r\n    }\r\n\r\n    public java.util.UUID scanUUID(char seperator) {\r\n        matchStat = UNKNOWN;\r\n\r\n        // int index = bp + fieldName.length;\r\n\r\n        int offset = 0;\r\n        char chLocal = charAt(bp + (offset++));\r\n\r\n        final java.util.UUID uuid;\r\n        if (chLocal == '\"') {\r\n            int startIndex = bp + 1;\r\n            int endIndex = indexOf('\"', startIndex);\r\n            if (endIndex == -1) {\r\n                throw new JSONException(\"unclosed str\");\r\n            }\r\n\r\n            int startIndex2 = bp + 1; // must re compute\r\n            int len = endIndex - startIndex2;\r\n            if (len == 36) {\r\n                long mostSigBits = 0, leastSigBits = 0;\r\n                for (int i = 0; i < 8; ++i) {\r\n                    char ch = charAt(startIndex2 + i);\r\n                    int num;\r\n                    if (ch >= '0' && ch <= '9') {\r\n                        num = ch - '0';\r\n                    } else if (ch >= 'a' && ch <= 'f') {\r\n                        num = 10 + (ch - 'a');\r\n                    } else if (ch >= 'A' && ch <= 'F') {\r\n                        num = 10 + (ch - 'A');\r\n                    } else {\r\n                        matchStat = NOT_MATCH_NAME;\r\n                        return null;\r\n                    }\r\n\r\n                    mostSigBits <<= 4;\r\n                    mostSigBits |= num;\r\n                }\r\n                for (int i = 9; i < 13; ++i) {\r\n                    char ch = charAt(startIndex2 + i);\r\n                    int num;\r\n                    if (ch >= '0' && ch <= '9') {\r\n                        num = ch - '0';\r\n                    } else if (ch >= 'a' && ch <= 'f') {\r\n                        num = 10 + (ch - 'a');\r\n                    } else if (ch >= 'A' && ch <= 'F') {\r\n                        num = 10 + (ch - 'A');\r\n                    } else {\r\n                        matchStat = NOT_MATCH_NAME;\r\n                        return null;\r\n                    }\r\n\r\n                    mostSigBits <<= 4;\r\n                    mostSigBits |= num;\r\n                }\r\n                for (int i = 14; i < 18; ++i) {\r\n                    char ch = charAt(startIndex2 + i);\r\n                    int num;\r\n                    if (ch >= '0' && ch <= '9') {\r\n                        num = ch - '0';\r\n                    } else if (ch >= 'a' && ch <= 'f') {\r\n                        num = 10 + (ch - 'a');\r\n                    } else if (ch >= 'A' && ch <= 'F') {\r\n                        num = 10 + (ch - 'A');\r\n                    } else {\r\n                        matchStat = NOT_MATCH_NAME;\r\n                        return null;\r\n                    }\r\n\r\n                    mostSigBits <<= 4;\r\n                    mostSigBits |= num;\r\n                }\r\n                for (int i = 19; i < 23; ++i) {\r\n                    char ch = charAt(startIndex2 + i);\r\n                    int num;\r\n                    if (ch >= '0' && ch <= '9') {\r\n                        num = ch - '0';\r\n                    } else if (ch >= 'a' && ch <= 'f') {\r\n                        num = 10 + (ch - 'a');\r\n                    } else if (ch >= 'A' && ch <= 'F') {\r\n                        num = 10 + (ch - 'A');\r\n                    } else {\r\n                        matchStat = NOT_MATCH_NAME;\r\n                        return null;\r\n                    }\r\n\r\n                    leastSigBits <<= 4;\r\n                    leastSigBits |= num;\r\n                }\r\n                for (int i = 24; i < 36; ++i) {\r\n                    char ch = charAt(startIndex2 + i);\r\n                    int num;\r\n                    if (ch >= '0' && ch <= '9') {\r\n                        num = ch - '0';\r\n                    } else if (ch >= 'a' && ch <= 'f') {\r\n                        num = 10 + (ch - 'a');\r\n                    } else if (ch >= 'A' && ch <= 'F') {\r\n                        num = 10 + (ch - 'A');\r\n                    } else {\r\n                        matchStat = NOT_MATCH_NAME;\r\n                        return null;\r\n                    }\r\n\r\n                    leastSigBits <<= 4;\r\n                    leastSigBits |= num;\r\n                }\r\n                uuid = new UUID(mostSigBits, leastSigBits);\r\n\r\n                offset += (endIndex - (bp + 1) + 1);\r\n                chLocal = charAt(bp + (offset++));\r\n            } else if (len == 32) {\r\n                long mostSigBits = 0, leastSigBits = 0;\r\n                for (int i = 0; i < 16; ++i) {\r\n                    char ch = charAt(startIndex2 + i);\r\n                    int num;\r\n                    if (ch >= '0' && ch <= '9') {\r\n                        num = ch - '0';\r\n                    } else if (ch >= 'a' && ch <= 'f') {\r\n                        num = 10 + (ch - 'a');\r\n                    } else if (ch >= 'A' && ch <= 'F') {\r\n                        num = 10 + (ch - 'A');\r\n                    } else {\r\n                        matchStat = NOT_MATCH_NAME;\r\n                        return null;\r\n                    }\r\n\r\n                    mostSigBits <<= 4;\r\n                    mostSigBits |= num;\r\n                }\r\n                for (int i = 16; i < 32; ++i) {\r\n                    char ch = charAt(startIndex2 + i);\r\n                    int num;\r\n                    if (ch >= '0' && ch <= '9') {\r\n                        num = ch - '0';\r\n                    } else if (ch >= 'a' && ch <= 'f') {\r\n                        num = 10 + (ch - 'a');\r\n                    } else if (ch >= 'A' && ch <= 'F') {\r\n                        num = 10 + (ch - 'A');\r\n                    } else {\r\n                        matchStat = NOT_MATCH_NAME;\r\n                        return null;\r\n                    }\r\n\r\n                    leastSigBits <<= 4;\r\n                    leastSigBits |= num;\r\n                }\r\n\r\n                uuid = new UUID(mostSigBits, leastSigBits);\r\n\r\n                offset += (endIndex - (bp + 1) + 1);\r\n                chLocal = charAt(bp + (offset++));\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n        } else if (chLocal == 'n'\r\n                && charAt(bp + (offset++)) == 'u'\r\n                && charAt(bp + (offset++)) == 'l'\r\n                && charAt(bp + (offset++)) == 'l') {\r\n            uuid = null;\r\n            chLocal = charAt(bp + (offset++));\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return null;\r\n        }\r\n\r\n        if (chLocal == ',') {\r\n            bp += offset;\r\n            this.ch = this.charAt(bp);\r\n            matchStat = VALUE;\r\n            return uuid;\r\n        }\r\n\r\n        if (chLocal == ']') {\r\n            chLocal = charAt(bp + (offset++));\r\n            if (chLocal == ',') {\r\n                token = JSONToken.COMMA;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == ']') {\r\n                token = JSONToken.RBRACKET;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == '}') {\r\n                token = JSONToken.RBRACE;\r\n                bp += offset;\r\n                this.ch = this.charAt(bp);\r\n            } else if (chLocal == EOI) {\r\n                token = JSONToken.EOF;\r\n                bp += (offset - 1);\r\n                ch = EOI;\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n            matchStat = END;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return null;\r\n        }\r\n\r\n        return uuid;\r\n    }\r\n\r\n    public final void scanTrue() {\r\n        if (ch != 't') {\r\n            throw new JSONException(\"error parse true\");\r\n        }\r\n        next();\r\n\r\n        if (ch != 'r') {\r\n            throw new JSONException(\"error parse true\");\r\n        }\r\n        next();\r\n\r\n        if (ch != 'u') {\r\n            throw new JSONException(\"error parse true\");\r\n        }\r\n        next();\r\n\r\n        if (ch != 'e') {\r\n            throw new JSONException(\"error parse true\");\r\n        }\r\n        next();\r\n\r\n        if (ch == ' '  ||\r\n            ch == ','  ||\r\n            ch == '}'  ||\r\n            ch == ']'  ||\r\n            ch == '\\n' ||\r\n            ch == '\\r' ||\r\n            ch == '\\t' ||\r\n            ch == EOI  ||\r\n            ch == '\\f' ||\r\n            ch == '\\b' ||\r\n            ch == ':'  ||\r\n            ch == '/') {\r\n            token = JSONToken.TRUE;\r\n        } else {\r\n            throw new JSONException(\"scan true error\");\r\n        }\r\n    }\r\n\r\n    public final void scanNullOrNew() {\r\n        scanNullOrNew(true);\r\n    }\r\n\r\n    public final void scanNullOrNew(boolean acceptColon) {\r\n        if (ch != 'n') {\r\n            throw new JSONException(\"error parse null or new\");\r\n        }\r\n        next();\r\n\r\n        if (ch == 'u') {\r\n            next();\r\n            if (ch != 'l') {\r\n                throw new JSONException(\"error parse null\");\r\n            }\r\n            next();\r\n\r\n            if (ch != 'l') {\r\n                throw new JSONException(\"error parse null\");\r\n            }\r\n            next();\r\n\r\n\r\n            if (ch == ' '\r\n                    || ch == ','\r\n                    || ch == '}'\r\n                    || ch == ']'\r\n                    || ch == '\\n'\r\n                    || ch == '\\r'\r\n                    || ch == '\\t'\r\n                    || ch == EOI\r\n                    || (ch == ':' && acceptColon)\r\n                    || ch == '\\f'\r\n                    || ch == '\\b') {\r\n\r\n                token = JSONToken.NULL;\r\n            } else {\r\n                throw new JSONException(\"scan null error\");\r\n            }\r\n            return;\r\n        }\r\n\r\n        if (ch != 'e') {\r\n            throw new JSONException(\"error parse new\");\r\n        }\r\n        next();\r\n\r\n        if (ch != 'w') {\r\n            throw new JSONException(\"error parse new\");\r\n        }\r\n        next();\r\n\r\n        if (ch == ' '  ||\r\n            ch == ','  ||\r\n            ch == '}'  ||\r\n            ch == ']'  ||\r\n            ch == '\\n' ||\r\n            ch == '\\r' ||\r\n            ch == '\\t' ||\r\n            ch == EOI  ||\r\n            ch == '\\f' ||\r\n            ch == '\\b') {\r\n            token = JSONToken.NEW;\r\n        } else {\r\n            throw new JSONException(\"scan new error\");\r\n        }\r\n    }\r\n\r\n    public final void scanFalse() {\r\n        if (ch != 'f') {\r\n            throw new JSONException(\"error parse false\");\r\n        }\r\n        next();\r\n\r\n        if (ch != 'a') {\r\n            throw new JSONException(\"error parse false\");\r\n        }\r\n        next();\r\n\r\n        if (ch != 'l') {\r\n            throw new JSONException(\"error parse false\");\r\n        }\r\n        next();\r\n\r\n        if (ch != 's') {\r\n            throw new JSONException(\"error parse false\");\r\n        }\r\n        next();\r\n\r\n        if (ch != 'e') {\r\n            throw new JSONException(\"error parse false\");\r\n        }\r\n        next();\r\n\r\n        if (ch == ' '  ||\r\n            ch == ','  ||\r\n            ch == '}'  ||\r\n            ch == ']'  ||\r\n            ch == '\\n' ||\r\n            ch == '\\r' ||\r\n            ch == '\\t' ||\r\n            ch == EOI  ||\r\n            ch == '\\f' ||\r\n            ch == '\\b' ||\r\n            ch == ':'  ||\r\n            ch == '/') {\r\n            token = JSONToken.FALSE;\r\n        } else {\r\n            throw new JSONException(\"scan false error\");\r\n        }\r\n    }\r\n\r\n    public final void scanIdent() {\r\n        np = bp - 1;\r\n        hasSpecial = false;\r\n\r\n        for (;;) {\r\n            sp++;\r\n\r\n            next();\r\n            if (Character.isLetterOrDigit(ch)) {\r\n                continue;\r\n            }\r\n\r\n            String ident = stringVal();\r\n\r\n            if (\"null\".equalsIgnoreCase(ident)) {\r\n                token = JSONToken.NULL;\r\n            } else if (\"new\".equals(ident)) {\r\n                token = JSONToken.NEW;\r\n            } else if (\"true\".equals(ident)) {\r\n                token = JSONToken.TRUE;\r\n            } else if (\"false\".equals(ident)) {\r\n                token = JSONToken.FALSE;\r\n            } else if (\"undefined\".equals(ident)) {\r\n                token = JSONToken.UNDEFINED;\r\n            } else if (\"Set\".equals(ident)) {\r\n                token = JSONToken.SET;\r\n            } else if (\"TreeSet\".equals(ident)) {\r\n                token = JSONToken.TREE_SET;\r\n            } else {\r\n                token = JSONToken.IDENTIFIER;\r\n            }\r\n            return;\r\n        }\r\n    }\r\n\r\n    public abstract String stringVal();\r\n\r\n    public abstract String subString(int offset, int count);\r\n\r\n    protected abstract char[] sub_chars(int offset, int count);\r\n\r\n    public static String readString(char[] chars, int chars_len) {\r\n        char[] sbuf = new char[chars_len];\r\n        int len = 0;\r\n        for (int i = 0; i < chars_len; ++i) {\r\n            char ch = chars[i];\r\n\r\n            if (ch != '\\\\') {\r\n                sbuf[len++] = ch;\r\n                continue;\r\n            }\r\n            ch = chars[++i];\r\n\r\n            switch (ch) {\r\n                case '0':\r\n                    sbuf[len++] = '\\0';\r\n                    break;\r\n                case '1':\r\n                    sbuf[len++] = '\\1';\r\n                    break;\r\n                case '2':\r\n                    sbuf[len++] = '\\2';\r\n                    break;\r\n                case '3':\r\n                    sbuf[len++] = '\\3';\r\n                    break;\r\n                case '4':\r\n                    sbuf[len++] = '\\4';\r\n                    break;\r\n                case '5':\r\n                    sbuf[len++] = '\\5';\r\n                    break;\r\n                case '6':\r\n                    sbuf[len++] = '\\6';\r\n                    break;\r\n                case '7':\r\n                    sbuf[len++] = '\\7';\r\n                    break;\r\n                case 'b': // 8\r\n                    sbuf[len++] = '\\b';\r\n                    break;\r\n                case 't': // 9\r\n                    sbuf[len++] = '\\t';\r\n                    break;\r\n                case 'n': // 10\r\n                    sbuf[len++] = '\\n';\r\n                    break;\r\n                case 'v': // 11\r\n                    sbuf[len++] = '\\u000B';\r\n                    break;\r\n                case 'f': // 12\r\n                case 'F':\r\n                    sbuf[len++] = '\\f';\r\n                    break;\r\n                case 'r': // 13\r\n                    sbuf[len++] = '\\r';\r\n                    break;\r\n                case '\"': // 34\r\n                    sbuf[len++] = '\"';\r\n                    break;\r\n                case '\\'': // 39\r\n                    sbuf[len++] = '\\'';\r\n                    break;\r\n                case '/': // 47\r\n                    sbuf[len++] = '/';\r\n                    break;\r\n                case '\\\\': // 92\r\n                    sbuf[len++] = '\\\\';\r\n                    break;\r\n                case 'x':\r\n                    sbuf[len++] = (char) (digits[chars[++i]] * 16 + digits[chars[++i]]);\r\n                    break;\r\n                case 'u':\r\n                    sbuf[len++] = (char) Integer.parseInt(new String(new char[] { chars[++i], //\r\n                                    chars[++i], //\r\n                                    chars[++i], //\r\n                                    chars[++i] }),\r\n                            16);\r\n                    break;\r\n                default:\r\n                    throw new JSONException(\"unclosed.str.lit\");\r\n            }\r\n        }\r\n        return new String(sbuf, 0, len);\r\n    }\r\n\r\n    protected abstract boolean charArrayCompare(char[] chars);\r\n\r\n    public boolean isBlankInput() {\r\n        for (int i = 0;; ++i) {\r\n            char chLocal = charAt(i);\r\n            if (chLocal == EOI) {\r\n                token = JSONToken.EOF;\r\n                break;\r\n            }\r\n\r\n            if (!isWhitespace(chLocal)) {\r\n                return false;\r\n            }\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n    public final void skipWhitespace() {\r\n        for (;;) {\r\n            if (ch <= '/') {\r\n                if (ch == ' '  ||\r\n                    ch == '\\r' ||\r\n                    ch == '\\n' ||\r\n                    ch == '\\t' ||\r\n                    ch == '\\f' ||\r\n                    ch == '\\b') {\r\n                    next();\r\n                    continue;\r\n                } else if (ch == '/') {\r\n                    skipComment();\r\n                    continue;\r\n                } else {\r\n                    break;\r\n                }\r\n            } else {\r\n                break;\r\n            }\r\n        }\r\n    }\r\n\r\n    private void scanStringSingleQuote() {\r\n        np = bp;\r\n        hasSpecial = false;\r\n        char chLocal;\r\n        for (;;) {\r\n            chLocal = next();\r\n\r\n            if (chLocal == '\\'') {\r\n                break;\r\n            }\r\n\r\n            if (chLocal == EOI) {\r\n                if (!isEOF()) {\r\n                    putChar((char) EOI);\r\n                    continue;\r\n                }\r\n                throw new JSONException(\"unclosed single-quote string\");\r\n            }\r\n\r\n            if (chLocal == '\\\\') {\r\n                if (!hasSpecial) {\r\n                    hasSpecial = true;\r\n\r\n                    if (sp > sbuf.length) {\r\n                        char[] newsbuf = new char[sp * 2];\r\n                        System.arraycopy(sbuf, 0, newsbuf, 0, sbuf.length);\r\n                        sbuf = newsbuf;\r\n                    }\r\n\r\n                    // text.getChars(offset, offset + count, dest, 0);\r\n                    this.copyTo(np + 1, sp, sbuf);\r\n                    // System.arraycopy(buf, np + 1, sbuf, 0, sp);\r\n                }\r\n\r\n                chLocal = next();\r\n\r\n                switch (chLocal) {\r\n                    case '0':\r\n                        putChar('\\0');\r\n                        break;\r\n                    case '1':\r\n                        putChar('\\1');\r\n                        break;\r\n                    case '2':\r\n                        putChar('\\2');\r\n                        break;\r\n                    case '3':\r\n                        putChar('\\3');\r\n                        break;\r\n                    case '4':\r\n                        putChar('\\4');\r\n                        break;\r\n                    case '5':\r\n                        putChar('\\5');\r\n                        break;\r\n                    case '6':\r\n                        putChar('\\6');\r\n                        break;\r\n                    case '7':\r\n                        putChar('\\7');\r\n                        break;\r\n                    case 'b': // 8\r\n                        putChar('\\b');\r\n                        break;\r\n                    case 't': // 9\r\n                        putChar('\\t');\r\n                        break;\r\n                    case 'n': // 10\r\n                        putChar('\\n');\r\n                        break;\r\n                    case 'v': // 11\r\n                        putChar('\\u000B');\r\n                        break;\r\n                    case 'f': // 12\r\n                    case 'F':\r\n                        putChar('\\f');\r\n                        break;\r\n                    case 'r': // 13\r\n                        putChar('\\r');\r\n                        break;\r\n                    case '\"': // 34\r\n                        putChar('\"');\r\n                        break;\r\n                    case '\\'': // 39\r\n                        putChar('\\'');\r\n                        break;\r\n                    case '/': // 47\r\n                        putChar('/');\r\n                        break;\r\n                    case '\\\\': // 92\r\n                        putChar('\\\\');\r\n                        break;\r\n                    case 'x':\r\n                        char x1 = next();\r\n                        char x2 = next();\r\n\r\n                        boolean hex1 = (x1 >= '0' && x1 <= '9')\r\n                                || (x1 >= 'a' && x1 <= 'f')\r\n                                || (x1 >= 'A' && x1 <= 'F');\r\n                        boolean hex2 = (x2 >= '0' && x2 <= '9')\r\n                                || (x2 >= 'a' && x2 <= 'f')\r\n                                || (x2 >= 'A' && x2 <= 'F');\r\n                        if (!hex1 || !hex2) {\r\n                            throw new JSONException(\"invalid escape character \\\\x\" + x1 + x2);\r\n                        }\r\n\r\n                        putChar((char) (digits[x1] * 16 + digits[x2]));\r\n                        break;\r\n                    case 'u':\r\n                        putChar((char) Integer.parseInt(new String(new char[] { next(), next(), next(), next() }), 16));\r\n                        break;\r\n                    default:\r\n                        this.ch = chLocal;\r\n                        throw new JSONException(\"unclosed single-quote string\");\r\n                }\r\n                continue;\r\n            }\r\n\r\n            if (!hasSpecial) {\r\n                sp++;\r\n                continue;\r\n            }\r\n\r\n            if (sp == sbuf.length) {\r\n                putChar(chLocal);\r\n            } else {\r\n                sbuf[sp++] = chLocal;\r\n            }\r\n        }\r\n\r\n        token = LITERAL_STRING;\r\n        this.next();\r\n    }\r\n\r\n    /**\r\n     * Append a character to sbuf.\r\n     */\r\n    protected final void putChar(char ch) {\r\n        if (sp >= sbuf.length) {\r\n            int len = sbuf.length * 2;\r\n            if (len < sp) {\r\n                len = sp + 1;\r\n            }\r\n            char[] newsbuf = new char[len];\r\n            System.arraycopy(sbuf, 0, newsbuf, 0, sbuf.length);\r\n            sbuf = newsbuf;\r\n        }\r\n        sbuf[sp++] = ch;\r\n    }\r\n\r\n    public final void scanHex() {\r\n        if (ch != 'x') {\r\n            throw new JSONException(\"illegal state. \" + ch);\r\n        }\r\n        next();\r\n        if (ch != '\\'') {\r\n            throw new JSONException(\"illegal state. \" + ch);\r\n        }\r\n\r\n        np = bp;\r\n        next();\r\n\r\n        if (ch == '\\'') {\r\n            next();\r\n            token = JSONToken.HEX;\r\n            return;\r\n        }\r\n\r\n        for (int i = 0;;++i) {\r\n            char ch = next();\r\n            if ((ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'F')) {\r\n                sp++;\r\n                continue;\r\n            } else if (ch == '\\'') {\r\n                sp++;\r\n                next();\r\n                break;\r\n            } else {\r\n                throw new JSONException(\"illegal state. \" + ch);\r\n            }\r\n        }\r\n        token = JSONToken.HEX;\r\n    }\r\n\r\n    public final void scanNumber() {\r\n        np = bp;\r\n\r\n        if (ch == '-') {\r\n            sp++;\r\n            next();\r\n        }\r\n\r\n        for (;;) {\r\n            if (ch >= '0' && ch <= '9') {\r\n                sp++;\r\n            } else {\r\n                break;\r\n            }\r\n            next();\r\n        }\r\n\r\n        boolean isDouble = false;\r\n\r\n        if (ch == '.') {\r\n            sp++;\r\n            next();\r\n            isDouble = true;\r\n\r\n            for (;;) {\r\n                if (ch >= '0' && ch <= '9') {\r\n                    sp++;\r\n                } else {\r\n                    break;\r\n                }\r\n                next();\r\n            }\r\n        }\r\n\r\n        if (sp > 65535) {\r\n            throw new JSONException(\"scanNumber overflow\");\r\n        }\r\n\r\n        if (ch == 'L') {\r\n            sp++;\r\n            next();\r\n        } else if (ch == 'S') {\r\n            sp++;\r\n            next();\r\n        } else if (ch == 'B') {\r\n            sp++;\r\n            next();\r\n        } else if (ch == 'F') {\r\n            sp++;\r\n            next();\r\n            isDouble = true;\r\n        } else if (ch == 'D') {\r\n            sp++;\r\n            next();\r\n            isDouble = true;\r\n        } else if (ch == 'e' || ch == 'E') {\r\n            sp++;\r\n            next();\r\n\r\n            if (ch == '+' || ch == '-') {\r\n                sp++;\r\n                next();\r\n            }\r\n\r\n            for (;;) {\r\n                if (ch >= '0' && ch <= '9') {\r\n                    sp++;\r\n                } else {\r\n                    break;\r\n                }\r\n                next();\r\n            }\r\n\r\n            if (ch == 'D' || ch == 'F') {\r\n                sp++;\r\n                next();\r\n            }\r\n\r\n            isDouble = true;\r\n        }\r\n\r\n        if (isDouble) {\r\n            token = JSONToken.LITERAL_FLOAT;\r\n        } else {\r\n            token = JSONToken.LITERAL_INT;\r\n        }\r\n    }\r\n\r\n    public final long longValue() throws NumberFormatException {\r\n        long result = 0;\r\n        boolean negative = false;\r\n        long limit;\r\n        int digit;\r\n\r\n        if (np == -1) {\r\n            np = 0;\r\n        }\r\n\r\n        int i = np, max = np + sp;\r\n\r\n        if (charAt(np) == '-') {\r\n            negative = true;\r\n            limit = Long.MIN_VALUE;\r\n            i++;\r\n        } else {\r\n            limit = -Long.MAX_VALUE;\r\n        }\r\n        long multmin = MULTMIN_RADIX_TEN;\r\n        if (i < max) {\r\n            digit = charAt(i++) - '0';\r\n            result = -digit;\r\n        }\r\n        while (i < max) {\r\n            // Accumulating negatively avoids surprises near MAX_VALUE\r\n            char chLocal = charAt(i++);\r\n\r\n            if (chLocal == 'L' || chLocal == 'S' || chLocal == 'B') {\r\n                break;\r\n            }\r\n\r\n            digit = chLocal - '0';\r\n            if (result < multmin) {\r\n                throw new NumberFormatException(numberString());\r\n            }\r\n            result *= 10;\r\n            if (result < limit + digit) {\r\n                throw new NumberFormatException(numberString());\r\n            }\r\n            result -= digit;\r\n        }\r\n\r\n        if (negative) {\r\n            if (i > np + 1) {\r\n                return result;\r\n            } else { /* Only got \"-\" */\r\n                throw new NumberFormatException(numberString());\r\n            }\r\n        } else {\r\n            return -result;\r\n        }\r\n    }\r\n\r\n    public final Number decimalValue(boolean decimal) {\r\n        char chLocal = charAt(np + sp - 1);\r\n        try {\r\n            if (chLocal == 'F') {\r\n                return Float.parseFloat(numberString());\r\n            }\r\n\r\n            if (chLocal == 'D') {\r\n                return Double.parseDouble(numberString());\r\n            }\r\n\r\n            if (decimal) {\r\n                return decimalValue();\r\n            } else {\r\n                return doubleValue();\r\n            }\r\n        } catch (NumberFormatException ex) {\r\n            throw new JSONException(ex.getMessage() + \", \" + info());\r\n        }\r\n    }\r\n\r\n    public abstract BigDecimal decimalValue();\r\n\r\n    public static boolean isWhitespace(char ch) {\r\n        // 专门调整了判断顺序\r\n        return ch <= ' '  &&\r\n              (ch == ' '  ||\r\n               ch == '\\n' ||\r\n               ch == '\\r' ||\r\n               ch == '\\t' ||\r\n               ch == '\\f' ||\r\n               ch == '\\b');\r\n    }\r\n\r\n    protected static final long  MULTMIN_RADIX_TEN     = Long.MIN_VALUE / 10;\r\n    protected static final int   INT_MULTMIN_RADIX_TEN = Integer.MIN_VALUE / 10;\r\n\r\n    protected final static int[] digits                = new int[(int) 'f' + 1];\r\n\r\n    static {\r\n        for (int i = '0'; i <= '9'; ++i) {\r\n            digits[i] = i - '0';\r\n        }\r\n\r\n        for (int i = 'a'; i <= 'f'; ++i) {\r\n            digits[i] = (i - 'a') + 10;\r\n        }\r\n        for (int i = 'A'; i <= 'F'; ++i) {\r\n            digits[i] = (i - 'A') + 10;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * hsf support\r\n     * @param fieldName\r\n     * @param argTypesCount\r\n     * @param typeSymbolTable\r\n     * @return\r\n     */\r\n    public String[] scanFieldStringArray(char[] fieldName, int argTypesCount, SymbolTable typeSymbolTable) {\r\n        throw new UnsupportedOperationException();\r\n    }\r\n\r\n    public boolean matchField2(char[] fieldName) {\r\n        throw new UnsupportedOperationException();\r\n    }\r\n\r\n    public int getFeatures() {\r\n        return this.features;\r\n    }\r\n\r\n    public void setFeatures(int features) {\r\n        this.features = features;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/JSONReaderScanner.java",
    "content": "/*\r\n * Copyright 1999-2017 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.parser;\r\n\r\nimport java.io.CharArrayReader;\r\nimport java.io.IOException;\r\nimport java.io.Reader;\r\nimport java.io.StringReader;\r\nimport java.math.BigDecimal;\r\nimport java.math.MathContext;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.util.IOUtils;\r\n\r\n//这个类，为了性能优化做了很多特别处理，一切都是为了性能！！！\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic final class JSONReaderScanner extends JSONLexerBase {\r\n\r\n    private final static ThreadLocal<char[]> BUF_LOCAL = new ThreadLocal<char[]>();\r\n\r\n    private Reader                           reader;\r\n    private char[]                           buf;\r\n    private int                              bufLength;\r\n\r\n    public JSONReaderScanner(String input){\r\n        this(input, JSON.DEFAULT_PARSER_FEATURE);\r\n    }\r\n\r\n    public JSONReaderScanner(String input, int features){\r\n        this(new StringReader(input), features);\r\n    }\r\n\r\n    public JSONReaderScanner(char[] input, int inputLength){\r\n        this(input, inputLength, JSON.DEFAULT_PARSER_FEATURE);\r\n    }\r\n\r\n    public JSONReaderScanner(Reader reader){\r\n        this(reader, JSON.DEFAULT_PARSER_FEATURE);\r\n    }\r\n\r\n    public JSONReaderScanner(Reader reader, int features){\r\n        super(features);\r\n        this.reader = reader;\r\n\r\n        buf = BUF_LOCAL.get();\r\n        if (buf != null) {\r\n            BUF_LOCAL.set(null);\r\n        }\r\n\r\n        if (buf == null) {\r\n            buf = new char[1024 * 16];\r\n        }\r\n\r\n        try {\r\n            bufLength = reader.read(buf);\r\n        } catch (IOException e) {\r\n            throw new JSONException(e.getMessage(), e);\r\n        }\r\n\r\n        bp = -1;\r\n\r\n        next();\r\n        if (ch == 65279) { // utf8 bom\r\n            next();\r\n        }\r\n    }\r\n\r\n    public JSONReaderScanner(char[] input, int inputLength, int features){\r\n        this(new CharArrayReader(input, 0, inputLength), features);\r\n    }\r\n\r\n    public final char charAt(int index) {\r\n        if (index >= bufLength) {\r\n            if (bufLength == -1) {\r\n                if (index < sp) {\r\n                    return buf[index];\r\n                }\r\n                return EOI;\r\n            }\r\n\r\n            if (bp == 0) {\r\n                char[] buf = new char[(this.buf.length * 3) / 2];\r\n                System.arraycopy(this.buf, bp, buf, 0, bufLength);\r\n\r\n                int rest = buf.length - bufLength;\r\n                try {\r\n                    int len = reader.read(buf, bufLength, rest);\r\n                    bufLength += len;\r\n                    this.buf = buf;\r\n                } catch (IOException e) {\r\n                    throw new JSONException(e.getMessage(), e);\r\n                }\r\n            } else {\r\n                int rest = bufLength - bp;\r\n                if (rest > 0) {\r\n                    System.arraycopy(buf, bp, buf, 0, rest);\r\n                }\r\n\r\n                try {\r\n                    bufLength = reader.read(buf, rest, buf.length - rest);\r\n                } catch (IOException e) {\r\n                    throw new JSONException(e.getMessage(), e);\r\n                }\r\n\r\n                if (bufLength == 0) {\r\n                    throw new JSONException(\"illegal state, textLength is zero\");\r\n                }\r\n\r\n                if (bufLength == -1) {\r\n                    return EOI;\r\n                }\r\n\r\n                bufLength += rest;\r\n                index -= bp;\r\n                np -= bp;\r\n                bp = 0;\r\n            }\r\n        }\r\n\r\n        return buf[index];\r\n    }\r\n\r\n    public final int indexOf(char ch, int startIndex) {\r\n        int offset = startIndex - bp;\r\n        for (;; ++offset) {\r\n            final int index = bp + offset;\r\n            char chLoal = charAt(index);\r\n            if (ch == chLoal) {\r\n                return offset + bp;\r\n            }\r\n            if (chLoal == EOI) {\r\n                return -1;\r\n            }\r\n        }\r\n    }\r\n\r\n    public final String addSymbol(int offset, int len, int hash, final SymbolTable symbolTable) {\r\n        return symbolTable.addSymbol(buf, offset, len, hash);\r\n    }\r\n\r\n    public final char next() {\r\n        int index = ++bp;\r\n\r\n        if (index >= bufLength) {\r\n            if (bufLength == -1) {\r\n                return EOI;\r\n            }\r\n\r\n            if (sp > 0) {\r\n                int offset;\r\n                offset = bufLength - sp;\r\n                if (ch == '\"' && offset > 0) {\r\n                    offset--;\r\n                }\r\n                System.arraycopy(buf, offset, buf, 0, sp);\r\n            }\r\n            np = -1;\r\n\r\n            index = bp = sp;\r\n\r\n            try {\r\n                int startPos = bp;\r\n                int readLength = buf.length - startPos;\r\n                if (readLength == 0) {\r\n                    char[] newBuf = new char[buf.length * 2];\r\n                    System.arraycopy(buf, 0, newBuf, 0, buf.length);\r\n                    buf = newBuf;\r\n                    readLength = buf.length - startPos;\r\n                }\r\n                bufLength = reader.read(buf, bp, readLength);\r\n            } catch (IOException e) {\r\n                throw new JSONException(e.getMessage(), e);\r\n            }\r\n\r\n            if (bufLength == 0) {\r\n                throw new JSONException(\"illegal stat, textLength is zero\");\r\n            }\r\n\r\n            if (bufLength == -1) {\r\n                return ch = EOI;\r\n            }\r\n\r\n            bufLength += bp;\r\n        }\r\n\r\n        return ch = buf[index];\r\n    }\r\n\r\n    protected final void copyTo(int offset, int count, char[] dest) {\r\n        System.arraycopy(buf, offset, dest, 0, count);\r\n    }\r\n\r\n    public final boolean charArrayCompare(char[] chars) {\r\n        for (int i = 0; i < chars.length; ++i) {\r\n            if (charAt(bp + i) != chars[i]) {\r\n                return false;\r\n            }\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n    public byte[] bytesValue() {\r\n        if (token == JSONToken.HEX) {\r\n            throw new JSONException(\"TODO\");\r\n        }\r\n\r\n        return IOUtils.decodeBase64(buf, np + 1, sp);\r\n    }\r\n\r\n    protected final void arrayCopy(int srcPos, char[] dest, int destPos, int length) {\r\n        System.arraycopy(buf, srcPos, dest, destPos, length);\r\n    }\r\n\r\n    /**\r\n     * The value of a literal token, recorded as a string. For integers, leading 0x and 'l' suffixes are suppressed.\r\n     */\r\n    public final String stringVal() {\r\n        if (!hasSpecial) {\r\n            int offset = np + 1;\r\n            if (offset < 0) {\r\n                throw new IllegalStateException();\r\n            }\r\n            if (offset > buf.length - sp) {\r\n                throw new IllegalStateException();\r\n            }\r\n            return new String(buf, offset, sp);\r\n            // return text.substring(np + 1, np + 1 + sp);\r\n        } else {\r\n            return new String(sbuf, 0, sp);\r\n        }\r\n    }\r\n\r\n    public final String subString(int offset, int count) {\r\n        if (count < 0) {\r\n            throw new StringIndexOutOfBoundsException(count);\r\n        }\r\n        return new String(buf, offset, count);\r\n        // return text.substring(offset, offset + count);\r\n    }\r\n\r\n    public final char[] sub_chars(int offset, int count) {\r\n        if (count < 0) {\r\n            throw new StringIndexOutOfBoundsException(count);\r\n        }\r\n        \r\n        if (offset == 0) {\r\n            return buf;\r\n        }\r\n        char[] chars = new char[count];\r\n        System.arraycopy(buf, offset, chars, 0, count);\r\n        return chars;\r\n    }\r\n\r\n    public final String numberString() {\r\n        int offset = np;\r\n        if (offset == -1) {\r\n            offset = 0;\r\n        }\r\n        char chLocal = charAt(offset + sp - 1);\r\n\r\n        int sp = this.sp;\r\n        if (chLocal == 'L' || chLocal == 'S' || chLocal == 'B' || chLocal == 'F' || chLocal == 'D') {\r\n            sp--;\r\n        }\r\n\r\n        String value = new String(buf, offset, sp);\r\n        return value;\r\n    }\r\n\r\n    public final BigDecimal decimalValue() {\r\n        int offset = np;\r\n        if (offset == -1) {\r\n            offset = 0;\r\n        }\r\n        char chLocal = charAt(offset + sp - 1);\r\n\r\n        int sp = this.sp;\r\n        if (chLocal == 'L' || chLocal == 'S' || chLocal == 'B' || chLocal == 'F' || chLocal == 'D') {\r\n            sp--;\r\n        }\r\n\r\n        if (sp > 65535) {\r\n            throw new JSONException(\"decimal overflow\");\r\n        }\r\n\r\n        return new BigDecimal(buf, offset, sp, MathContext.UNLIMITED);\r\n    }\r\n\r\n    public void close() {\r\n        super.close();\r\n\r\n        if (buf.length <= 1024 * 64) {\r\n            BUF_LOCAL.set(buf);\r\n        }\r\n        this.buf = null;\r\n\r\n        IOUtils.close(reader);\r\n    }\r\n\r\n    @Override\r\n    public boolean isEOF() {\r\n        return bufLength == -1 || bp == buf.length || ch == EOI && bp + 1 >= buf.length;\r\n    }\r\n\r\n    public final boolean isBlankInput() {\r\n        for (int i = 0;; ++i) {\r\n            char chLocal = buf[i];\r\n            if (chLocal == EOI) {\r\n                token = JSONToken.EOF;\r\n                break;\r\n            }\r\n\r\n            if (!isWhitespace(chLocal)) {\r\n                return false;\r\n            }\r\n        }\r\n\r\n        return true;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/JSONScanner.java",
    "content": "/*\r\n * Copyright 1999-2017 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.parser;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.util.ASMUtils;\r\nimport com.alibaba.fastjson.util.IOUtils;\r\n\r\nimport java.math.BigDecimal;\r\nimport java.math.MathContext;\r\nimport java.util.*;\r\n\r\nimport static com.alibaba.fastjson.util.TypeUtils.fnv1a_64_magic_hashcode;\r\nimport static com.alibaba.fastjson.util.TypeUtils.fnv1a_64_magic_prime;\r\n\r\n//这个类，为了性能优化做了很多特别处理，一切都是为了性能！！！\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic final class JSONScanner extends JSONLexerBase {\r\n\r\n    private final String text;\r\n    private final int    len;\r\n\r\n    public JSONScanner(String input){\r\n        this(input, JSON.DEFAULT_PARSER_FEATURE);\r\n    }\r\n\r\n    public JSONScanner(String input, int features){\r\n        super(features);\r\n\r\n        text = input;\r\n        len = text.length();\r\n        bp = -1;\r\n\r\n        next();\r\n        if (ch == 65279) { // utf-8 bom\r\n            next();\r\n        }\r\n    }\r\n\r\n    public final char charAt(int index) {\r\n        if (index >= len) {\r\n            return EOI;\r\n        }\r\n\r\n        return text.charAt(index);\r\n    }\r\n\r\n    public final char next() {\r\n        int index = ++bp;\r\n        return ch = (index >= this.len ? //\r\n                EOI //\r\n                : text.charAt(index));\r\n    }\r\n\r\n    public JSONScanner(char[] input, int inputLength){\r\n        this(input, inputLength, JSON.DEFAULT_PARSER_FEATURE);\r\n    }\r\n\r\n    public JSONScanner(char[] input, int inputLength, int features){\r\n        this(new String(input, 0, inputLength), features);\r\n    }\r\n\r\n    protected final void copyTo(int offset, int count, char[] dest) {\r\n        text.getChars(offset, offset + count, dest, 0);\r\n    }\r\n\r\n    static boolean charArrayCompare(String src, int offset, char[] dest) {\r\n        final int destLen = dest.length;\r\n        if (destLen + offset > src.length()) {\r\n            return false;\r\n        }\r\n\r\n        for (int i = 0; i < destLen; ++i) {\r\n            if (dest[i] != src.charAt(offset + i)) {\r\n                return false;\r\n            }\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n    public final boolean charArrayCompare(char[] chars) {\r\n        return charArrayCompare(text, bp, chars);\r\n    }\r\n\r\n    public final int indexOf(char ch, int startIndex) {\r\n        return text.indexOf(ch, startIndex);\r\n    }\r\n\r\n    public final String addSymbol(int offset, int len, int hash, final SymbolTable symbolTable) {\r\n        return symbolTable.addSymbol(text, offset, len, hash);\r\n    }\r\n\r\n    public byte[] bytesValue() {\r\n        if (token == JSONToken.HEX) {\r\n            int start = np + 1, len = sp;\r\n            if (len % 2 != 0) {\r\n                throw new JSONException(\"illegal state. \" + len);\r\n            }\r\n\r\n            byte[] bytes = new byte[len / 2];\r\n            for (int i = 0; i < bytes.length; ++i) {\r\n                char c0 = text.charAt(start + i * 2);\r\n                char c1 = text.charAt(start + i * 2 + 1);\r\n\r\n                int b0 = c0 - (c0 <= 57 ? 48 : 55);\r\n                int b1 = c1 - (c1 <= 57 ? 48 : 55);\r\n                bytes[i] = (byte) ((b0 << 4) | b1);\r\n            }\r\n\r\n            return bytes;\r\n        }\r\n\r\n        if (!hasSpecial) {\r\n            return IOUtils.decodeBase64(text, np + 1, sp);\r\n        } else {\r\n            String escapedText = new String(sbuf, 0, sp);\r\n            return IOUtils.decodeBase64(escapedText);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * The value of a literal token, recorded as a string. For integers, leading 0x and 'l' suffixes are suppressed.\r\n     */\r\n    public final String stringVal() {\r\n        if (!hasSpecial) {\r\n            return this.subString(np + 1, sp);\r\n        } else {\r\n            return new String(sbuf, 0, sp);\r\n        }\r\n    }\r\n\r\n    public final String subString(int offset, int count) {\r\n        if (ASMUtils.IS_ANDROID) {\r\n            if (count < sbuf.length) {\r\n                text.getChars(offset, offset + count, sbuf, 0);\r\n                return new String(sbuf, 0, count);\r\n            } else {\r\n                char[] chars = new char[count];\r\n                text.getChars(offset, offset + count, chars, 0);\r\n                return new String(chars);\r\n            }\r\n        } else {\r\n            return text.substring(offset, offset + count);\r\n        }\r\n    }\r\n\r\n    public final char[] sub_chars(int offset, int count) {\r\n        if (ASMUtils.IS_ANDROID && count < sbuf.length) {\r\n            text.getChars(offset, offset + count, sbuf, 0);\r\n            return sbuf;\r\n        } else {\r\n            char[] chars = new char[count];\r\n            text.getChars(offset, offset + count, chars, 0);\r\n            return chars;\r\n        }\r\n    }\r\n\r\n    public final String numberString() {\r\n        char chLocal = charAt(np + sp - 1);\r\n\r\n        int sp = this.sp;\r\n        if (chLocal == 'L' || chLocal == 'S' || chLocal == 'B' || chLocal == 'F' || chLocal == 'D') {\r\n            sp--;\r\n        }\r\n\r\n        return this.subString(np, sp);\r\n    }\r\n\r\n    public final BigDecimal decimalValue() {\r\n        char chLocal = charAt(np + sp - 1);\r\n\r\n        int sp = this.sp;\r\n        if (chLocal == 'L' || chLocal == 'S' || chLocal == 'B' || chLocal == 'F' || chLocal == 'D') {\r\n            sp--;\r\n        }\r\n\r\n        if (sp > 65535) {\r\n            throw new JSONException(\"decimal overflow\");\r\n        }\r\n\r\n        int offset = np, count = sp;\r\n        if (count < sbuf.length) {\r\n            text.getChars(offset, offset + count, sbuf, 0);\r\n            return new BigDecimal(sbuf, 0, count, MathContext.UNLIMITED);\r\n        } else {\r\n            char[] chars = new char[count];\r\n            text.getChars(offset, offset + count, chars, 0);\r\n            return new BigDecimal(chars, 0, chars.length, MathContext.UNLIMITED);\r\n        }\r\n    }\r\n\r\n    public boolean scanISO8601DateIfMatch() {\r\n        return scanISO8601DateIfMatch(true);\r\n    }\r\n\r\n    public boolean scanISO8601DateIfMatch(boolean strict) {\r\n        int rest = len - bp;\r\n        return scanISO8601DateIfMatch(strict, rest);\r\n    }\r\n\r\n    private boolean scanISO8601DateIfMatch(boolean strict, int rest) {\r\n        if (rest < 8) {\r\n            return false;\r\n        }\r\n\r\n        char c0 = charAt(bp);\r\n        char c1 = charAt(bp + 1);\r\n        char c2 = charAt(bp + 2);\r\n        char c3 = charAt(bp + 3);\r\n        char c4 = charAt(bp + 4);\r\n        char c5 = charAt(bp + 5);\r\n        char c6 = charAt(bp + 6);\r\n        char c7 = charAt(bp + 7);\r\n\r\n        if ((!strict) && rest > 13) {\r\n            char c_r0 = charAt(bp + rest - 1);\r\n            char c_r1 = charAt(bp + rest - 2);\r\n            if (c0 == '/' && c1 == 'D' && c2 == 'a' && c3 == 't' && c4 == 'e' && c5 == '(' && c_r0 == '/'\r\n                    && c_r1 == ')') {\r\n                int plusIndex = -1;\r\n                for (int i = 6; i < rest; ++i) {\r\n                    char c = charAt(bp + i);\r\n                    if (c == '+') {\r\n                        plusIndex = i;\r\n                    } else if (c < '0' || c > '9') {\r\n                        break;\r\n                    }\r\n                }\r\n                if (plusIndex == -1) {\r\n                    return false;\r\n                }\r\n                int offset = bp + 6;\r\n                String numberText = this.subString(offset, bp + plusIndex - offset);\r\n                long millis = Long.parseLong(numberText);\r\n\r\n                calendar = Calendar.getInstance(timeZone, locale);\r\n                calendar.setTimeInMillis(millis);\r\n\r\n                token = JSONToken.LITERAL_ISO8601_DATE;\r\n                return true;\r\n            }\r\n        }\r\n\r\n        char c10;\r\n        if (rest == 8\r\n                || rest == 14\r\n                || (rest == 16 && ((c10 = charAt(bp + 10)) == 'T' || c10 == ' '))\r\n                || (rest == 17 && charAt(bp + 6) != '-')) {\r\n            if (strict) {\r\n                return false;\r\n            }\r\n\r\n            char y0, y1, y2, y3, M0, M1, d0, d1;\r\n\r\n\r\n\r\n            char c8 = charAt(bp + 8);\r\n\r\n            final boolean c_47 = c4 == '-' && c7 == '-';\r\n            final boolean sperate16 = c_47 && rest == 16;\r\n            final boolean sperate17 = c_47 && rest == 17;\r\n            if (sperate17 || sperate16) {\r\n                y0 = c0;\r\n                y1 = c1;\r\n                y2 = c2;\r\n                y3 = c3;\r\n                M0 = c5;\r\n                M1 = c6;\r\n                d0 = c8;\r\n                d1 = charAt(bp + 9);\r\n            } else if (c4 == '-' && c6 == '-') {\r\n                y0 = c0;\r\n                y1 = c1;\r\n                y2 = c2;\r\n                y3 = c3;\r\n                M0 = '0';\r\n                M1 = c5;\r\n                d0 = '0';\r\n                d1 = c7;\r\n            } else {\r\n                y0 = c0;\r\n                y1 = c1;\r\n                y2 = c2;\r\n                y3 = c3;\r\n                M0 = c4;\r\n                M1 = c5;\r\n                d0 = c6;\r\n                d1 = c7;\r\n            }\r\n\r\n\r\n            if (!checkDate(y0, y1, y2, y3, M0, M1, d0, d1)) {\r\n                return false;\r\n            }\r\n\r\n            setCalendar(y0, y1, y2, y3, M0, M1, d0, d1);\r\n\r\n            int hour, minute, seconds, millis;\r\n            if (rest != 8) {\r\n                char c9 = charAt(bp + 9);\r\n                c10 = charAt(bp + 10);\r\n                char c11 = charAt(bp + 11);\r\n                char c12 = charAt(bp + 12);\r\n                char c13 = charAt(bp + 13);\r\n\r\n                char h0, h1, m0, m1, s0, s1;\r\n\r\n                if ((sperate17 && c10 == 'T' && c13 == ':' && charAt(bp + 16) == 'Z')\r\n                        || (sperate16 && (c10 == ' ' || c10 == 'T') && c13 == ':')) {\r\n                    h0 = c11;\r\n                    h1 = c12;\r\n                    m0 = charAt(bp + 14);\r\n                    m1 = charAt(bp + 15);\r\n                    s0 = '0';\r\n                    s1 = '0';\r\n                } else {\r\n                    h0 = c8;\r\n                    h1 = c9;\r\n                    m0 = c10;\r\n                    m1 = c11;\r\n                    s0 = c12;\r\n                    s1 = c13;\r\n                }\r\n\r\n                if (!checkTime(h0, h1, m0, m1, s0, s1)) {\r\n                    return false;\r\n                }\r\n\r\n                if (rest == 17 && !sperate17) {\r\n                    char S0 = charAt(bp + 14);\r\n                    char S1 = charAt(bp + 15);\r\n                    char S2 = charAt(bp + 16);\r\n                    if (S0 < '0' || S0 > '9') {\r\n                        return false;\r\n                    }\r\n                    if (S1 < '0' || S1 > '9') {\r\n                        return false;\r\n                    }\r\n                    if (S2 < '0' || S2 > '9') {\r\n                        return false;\r\n                    }\r\n\r\n                    millis = (S0 - '0') * 100 + (S1 - '0') * 10 + (S2 - '0');\r\n                } else {\r\n                    millis = 0;\r\n                }\r\n\r\n                hour = (h0 - '0') * 10 + (h1 - '0');\r\n                minute = (m0 - '0') * 10 + (m1 - '0');\r\n                seconds = (s0 - '0') * 10 + (s1 - '0');\r\n            } else {\r\n                hour = 0;\r\n                minute = 0;\r\n                seconds = 0;\r\n                millis = 0;\r\n            }\r\n\r\n            calendar.set(Calendar.HOUR_OF_DAY, hour);\r\n            calendar.set(Calendar.MINUTE, minute);\r\n            calendar.set(Calendar.SECOND, seconds);\r\n            calendar.set(Calendar.MILLISECOND, millis);\r\n\r\n            token = JSONToken.LITERAL_ISO8601_DATE;\r\n            return true;\r\n        }\r\n\r\n        if (rest < 9) {\r\n            return false;\r\n        }\r\n\r\n        char c8 = charAt(bp + 8);\r\n        char c9 = charAt(bp + 9);\r\n\r\n        int date_len = 10;\r\n        char y0, y1, y2, y3, M0, M1, d0, d1;\r\n        if ((c4 == '-' && c7 == '-') // cn\r\n                ||  (c4 == '/' && c7 == '/') // tw yyyy/mm/dd\r\n        ) {\r\n            y0 = c0;\r\n            y1 = c1;\r\n            y2 = c2;\r\n            y3 = c3;\r\n            M0 = c5;\r\n            M1 = c6;\r\n\r\n            if (c9 == ' ') {\r\n                d0 = '0';\r\n                d1 = c8;\r\n                date_len = 9;\r\n            } else {\r\n                d0 = c8;\r\n                d1 = c9;\r\n            }\r\n        } else if ((c4 == '-' && c6 == '-') // cn yyyy-m-dd\r\n        ) {\r\n            y0 = c0;\r\n            y1 = c1;\r\n            y2 = c2;\r\n            y3 = c3;\r\n            M0 = '0';\r\n            M1 = c5;\r\n\r\n            if (c8 == ' ') {\r\n                d0 = '0';\r\n                d1 = c7;\r\n                date_len = 8;\r\n            } else {\r\n                d0 = c7;\r\n                d1 = c8;\r\n                date_len = 9;\r\n            }\r\n        } else if ((c2 == '.' && c5 == '.') // de dd.mm.yyyy\r\n                || (c2 == '-' && c5 == '-') // in dd-mm-yyyy\r\n        ) {\r\n            d0 = c0;\r\n            d1 = c1;\r\n            M0 = c3;\r\n            M1 = c4;\r\n            y0 = c6;\r\n            y1 = c7;\r\n            y2 = c8;\r\n            y3 = c9;\r\n        } else if (c8 == 'T') {\r\n            y0 = c0;\r\n            y1 = c1;\r\n            y2 = c2;\r\n            y3 = c3;\r\n            M0 = c4;\r\n            M1 = c5;\r\n            d0 = c6;\r\n            d1 = c7;\r\n            date_len = 8;\r\n        } else {\r\n            if (c4 == '年' || c4 == '년') {\r\n                y0 = c0;\r\n                y1 = c1;\r\n                y2 = c2;\r\n                y3 = c3;\r\n\r\n                if (c7 == '月' || c7 == '월') {\r\n                    M0 = c5;\r\n                    M1 = c6;\r\n                    if (c9 == '日' || c9 == '일') {\r\n                        d0 = '0';\r\n                        d1 = c8;\r\n                    } else if (charAt(bp + 10) == '日' || charAt(bp + 10) == '일'){\r\n                        d0 = c8;\r\n                        d1 = c9;\r\n                        date_len = 11;\r\n                    } else {\r\n                        return false;\r\n                    }\r\n                } else if (c6 == '月' || c6 == '월') {\r\n                    M0 = '0';\r\n                    M1 = c5;\r\n                    if (c8 == '日' || c8 == '일') {\r\n                        d0 = '0';\r\n                        d1 = c7;\r\n                    } else if (c9 == '日' || c9 == '일'){\r\n                        d0 = c7;\r\n                        d1 = c8;\r\n                    } else {\r\n                        return false;\r\n                    }\r\n                } else {\r\n                    return false;\r\n                }\r\n            } else {\r\n                return false;\r\n            }\r\n        }\r\n\r\n        if (!checkDate(y0, y1, y2, y3, M0, M1, d0, d1)) {\r\n            return false;\r\n        }\r\n\r\n        setCalendar(y0, y1, y2, y3, M0, M1, d0, d1);\r\n\r\n        char t = charAt(bp + date_len);\r\n        if (t == 'T' && rest == 16 && date_len == 8 && charAt(bp + 15) == 'Z') {\r\n            char h0 = charAt(bp + date_len + 1);\r\n            char h1 = charAt(bp + date_len + 2);\r\n            char m0 = charAt(bp + date_len + 3);\r\n            char m1 = charAt(bp + date_len + 4);\r\n            char s0 = charAt(bp + date_len + 5);\r\n            char s1 = charAt(bp + date_len + 6);\r\n\r\n            if (!checkTime(h0, h1, m0, m1, s0, s1)) {\r\n                return false;\r\n            }\r\n\r\n            setTime(h0, h1, m0, m1, s0, s1);\r\n            calendar.set(Calendar.MILLISECOND, 0);\r\n\r\n            if (calendar.getTimeZone().getRawOffset() != 0) {\r\n                String[] timeZoneIDs = TimeZone.getAvailableIDs(0);\r\n                if (timeZoneIDs.length > 0) {\r\n                    TimeZone timeZone = TimeZone.getTimeZone(timeZoneIDs[0]);\r\n                    calendar.setTimeZone(timeZone);\r\n                }\r\n            }\r\n\r\n            token = JSONToken.LITERAL_ISO8601_DATE;\r\n            return true;\r\n        } else if (t == 'T' || (t == ' ' && !strict)) {\r\n            if (rest < date_len + 9) { // \"0000-00-00T00:00:00\".length()\r\n                return false;\r\n            }\r\n        } else if (t == '\"' || t == EOI || t == '日' || t == '일') {\r\n            calendar.set(Calendar.HOUR_OF_DAY, 0);\r\n            calendar.set(Calendar.MINUTE, 0);\r\n            calendar.set(Calendar.SECOND, 0);\r\n            calendar.set(Calendar.MILLISECOND, 0);\r\n\r\n            ch = charAt(bp += date_len);\r\n\r\n            token = JSONToken.LITERAL_ISO8601_DATE;\r\n            return true;\r\n        } else if (t == '+' || t == '-') {\r\n            if (len == date_len + 6) {\r\n                if (charAt(bp + date_len + 3) != ':' //\r\n                        || charAt(bp + date_len + 4) != '0' //\r\n                        || charAt(bp + date_len + 5) != '0') {\r\n                    return false;\r\n                }\r\n\r\n                setTime('0', '0', '0', '0', '0', '0');\r\n                calendar.set(Calendar.MILLISECOND, 0);\r\n                setTimeZone(t, charAt(bp + date_len + 1), charAt(bp + date_len + 2));\r\n                return true;\r\n            }\r\n            return false;\r\n        } else {\r\n            return false;\r\n        }\r\n\r\n        if (charAt(bp + date_len + 3) != ':') {\r\n            return false;\r\n        }\r\n        if (charAt(bp + date_len + 6) != ':') {\r\n            return false;\r\n        }\r\n\r\n        char h0 = charAt(bp + date_len + 1);\r\n        char h1 = charAt(bp + date_len + 2);\r\n        char m0 = charAt(bp + date_len + 4);\r\n        char m1 = charAt(bp + date_len + 5);\r\n        char s0 = charAt(bp + date_len + 7);\r\n        char s1 = charAt(bp + date_len + 8);\r\n\r\n        if (!checkTime(h0, h1, m0, m1, s0, s1)) {\r\n            return false;\r\n        }\r\n\r\n        setTime(h0, h1, m0, m1, s0, s1);\r\n\r\n        char dot = charAt(bp + date_len + 9);\r\n        int millisLen = -1; // 有可能没有毫秒区域，没有毫秒区域的时候下一个字符位置有可能是'Z'、'+'、'-'\r\n        int millis = 0;\r\n        if (dot == '.') { // 0000-00-00T00:00:00.000\r\n            if (rest < date_len + 11) {\r\n                return false;\r\n            }\r\n\r\n            char S0 = charAt(bp + date_len + 10);\r\n            if (S0 < '0' || S0 > '9') {\r\n                return false;\r\n            }\r\n            millis = S0 - '0';\r\n            millisLen = 1;\r\n\r\n            if (rest > date_len + 11) {\r\n                char S1 = charAt(bp + date_len + 11);\r\n                if (S1 >= '0' && S1 <= '9') {\r\n                    millis = millis * 10 + (S1 - '0');\r\n                    millisLen = 2;\r\n                }\r\n            }\r\n\r\n            if (millisLen == 2) {\r\n                char S2 = charAt(bp + date_len + 12);\r\n                if (S2 >= '0' && S2 <= '9') {\r\n                    millis = millis * 10 + (S2 - '0');\r\n                    millisLen = 3;\r\n                }\r\n            }\r\n        }\r\n        calendar.set(Calendar.MILLISECOND, millis);\r\n\r\n        int timzeZoneLength = 0;\r\n        char timeZoneFlag = charAt(bp + date_len + 10 + millisLen);\r\n\r\n        if (timeZoneFlag == ' ') {\r\n            millisLen++;\r\n            timeZoneFlag = charAt(bp + date_len + 10 + millisLen);\r\n        }\r\n\r\n        if (timeZoneFlag == '+' || timeZoneFlag == '-') {\r\n            char t0 = charAt(bp + date_len + 10 + millisLen + 1);\r\n            if (t0 < '0' || t0 > '1') {\r\n                return false;\r\n            }\r\n\r\n            char t1 = charAt(bp + date_len + 10 + millisLen + 2);\r\n            if (t1 < '0' || t1 > '9') {\r\n                return false;\r\n            }\r\n\r\n            char t2 = charAt(bp + date_len + 10 + millisLen + 3);\r\n            char t3 = '0', t4 = '0';\r\n            if (t2 == ':') { // ThreeLetterISO8601TimeZone\r\n                t3 = charAt(bp + date_len + 10 + millisLen + 4);\r\n                t4 = charAt(bp + date_len + 10 + millisLen + 5);\r\n\r\n                if(t3 == '4' && t4 == '5') {\r\n                    // handle some special timezones like xx:45\r\n\r\n                    if (t0 == '1' && (t1 == '2' || t1 == '3')) {\r\n                        // NZ-CHAT          => +12:45\r\n                        // Pacific/Chatham  => +12:45\r\n                        // NZ-CHAT          => +13:45 (DST)\r\n                        // Pacific/Chatham  => +13:45 (DST)\r\n                    } else if (t0 == '0' && (t1 == '5' || t1 == '8')) {\r\n                        // Asia/Kathmandu   => +05:45\r\n                        // Asia/Katmandu    => +05:45\r\n                        // Australia/Eucla  => +08:45\r\n                    } else {\r\n                        return false;\r\n                    }\r\n                } else {\r\n                    //handle normal timezone like xx:00 and xx:30\r\n                    if (t3 != '0' && t3 != '3') {\r\n                        return false;\r\n                    }\r\n\r\n                    if (t4 != '0') {\r\n                        return false;\r\n                    }\r\n                }\r\n\r\n                timzeZoneLength = 6;\r\n            } else if (t2 == '0') { // TwoLetterISO8601TimeZone\r\n                t3 = charAt(bp + date_len + 10 + millisLen + 4);\r\n                if (t3 != '0' && t3 != '3') {\r\n                    return false;\r\n                }\r\n                timzeZoneLength = 5;\r\n            } else if (t2 == '3' && charAt(bp + date_len + 10 + millisLen + 4) == '0') {\r\n                t3 = '3';\r\n                t4 = '0';\r\n                timzeZoneLength = 5;\r\n            } else if (t2 == '4' && charAt(bp + date_len + 10 + millisLen + 4) == '5') {\r\n                t3 = '4';\r\n                t4 = '5';\r\n                timzeZoneLength = 5;\r\n            } else {\r\n                timzeZoneLength = 3;\r\n            }\r\n\r\n            setTimeZone(timeZoneFlag, t0, t1, t3, t4);\r\n\r\n        } else if (timeZoneFlag == 'Z') {// UTC\r\n            timzeZoneLength = 1;\r\n            if (calendar.getTimeZone().getRawOffset() != 0) {\r\n                String[] timeZoneIDs = TimeZone.getAvailableIDs(0);\r\n                if (timeZoneIDs.length > 0) {\r\n                    TimeZone timeZone = TimeZone.getTimeZone(timeZoneIDs[0]);\r\n                    calendar.setTimeZone(timeZone);\r\n                }\r\n            }\r\n        }\r\n\r\n        char end = charAt(bp + (date_len + 10 + millisLen + timzeZoneLength));\r\n        if (end != EOI && end != '\"') {\r\n            return false;\r\n        }\r\n        ch = charAt(bp += (date_len + 10 + millisLen + timzeZoneLength));\r\n\r\n        token = JSONToken.LITERAL_ISO8601_DATE;\r\n        return true;\r\n    }\r\n\r\n    protected void setTime(char h0, char h1, char m0, char m1, char s0, char s1) {\r\n        int hour = (h0 - '0') * 10 + (h1 - '0');\r\n        int minute = (m0 - '0') * 10 + (m1 - '0');\r\n        int seconds = (s0 - '0') * 10 + (s1 - '0');\r\n        calendar.set(Calendar.HOUR_OF_DAY, hour);\r\n        calendar.set(Calendar.MINUTE, minute);\r\n        calendar.set(Calendar.SECOND, seconds);\r\n    }\r\n\r\n    protected void setTimeZone(char timeZoneFlag, char t0, char t1) {\r\n        setTimeZone(timeZoneFlag, t0, t1, '0', '0');\r\n    }\r\n\r\n    protected void setTimeZone(char timeZoneFlag, char t0, char t1, char t3, char t4) {\r\n        int timeZoneOffset = ((t0 - '0') * 10 + (t1 - '0')) * 3600 * 1000;\r\n\r\n        timeZoneOffset += ((t3 - '0') * 10 + (t4 - '0')) * 60 * 1000;\r\n\r\n        if (timeZoneFlag == '-') {\r\n            timeZoneOffset = -timeZoneOffset;\r\n        }\r\n\r\n        if (calendar.getTimeZone().getRawOffset() != timeZoneOffset) {\r\n            calendar.setTimeZone(new SimpleTimeZone(timeZoneOffset, Integer.toString(timeZoneOffset)));\r\n        }\r\n    }\r\n\r\n    private boolean checkTime(char h0, char h1, char m0, char m1, char s0, char s1) {\r\n        if (h0 == '0') {\r\n            if (h1 < '0' || h1 > '9') {\r\n                return false;\r\n            }\r\n        } else if (h0 == '1') {\r\n            if (h1 < '0' || h1 > '9') {\r\n                return false;\r\n            }\r\n        } else if (h0 == '2') {\r\n            if (h1 < '0' || h1 > '4') {\r\n                return false;\r\n            }\r\n        } else {\r\n            return false;\r\n        }\r\n\r\n        if (m0 >= '0' && m0 <= '5') {\r\n            if (m1 < '0' || m1 > '9') {\r\n                return false;\r\n            }\r\n        } else if (m0 == '6') {\r\n            if (m1 != '0') {\r\n                return false;\r\n            }\r\n        } else {\r\n            return false;\r\n        }\r\n\r\n        if (s0 >= '0' && s0 <= '5') {\r\n            if (s1 < '0' || s1 > '9') {\r\n                return false;\r\n            }\r\n        } else if (s0 == '6') {\r\n            if (s1 != '0') {\r\n                return false;\r\n            }\r\n        } else {\r\n            return false;\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n    private void setCalendar(char y0, char y1, char y2, char y3, char M0, char M1, char d0, char d1) {\r\n        calendar = Calendar.getInstance(timeZone, locale);\r\n        int year = (y0 - '0') * 1000 + (y1 - '0') * 100 + (y2 - '0') * 10 + (y3 - '0');\r\n        int month = (M0 - '0') * 10 + (M1 - '0') - 1;\r\n        int day = (d0 - '0') * 10 + (d1 - '0');\r\n//        calendar.set(year, month, day);\r\n        calendar.set(Calendar.YEAR, year);\r\n        calendar.set(Calendar.MONTH, month);\r\n        calendar.set(Calendar.DAY_OF_MONTH, day);\r\n    }\r\n\r\n    static boolean checkDate(char y0, char y1, char y2, char y3, char M0, char M1, int d0, int d1) {\r\n        if (y0 < '0' || y0 > '9') {\r\n            return false;\r\n        }\r\n        if (y1 < '0' || y1 > '9') {\r\n            return false;\r\n        }\r\n        if (y2 < '0' || y2 > '9') {\r\n            return false;\r\n        }\r\n        if (y3 < '0' || y3 > '9') {\r\n            return false;\r\n        }\r\n\r\n        if (M0 == '0') {\r\n            if (M1 < '1' || M1 > '9') {\r\n                return false;\r\n            }\r\n        } else if (M0 == '1') {\r\n            if (M1 != '0' && M1 != '1' && M1 != '2') {\r\n                return false;\r\n            }\r\n        } else {\r\n            return false;\r\n        }\r\n\r\n        if (d0 == '0') {\r\n            if (d1 < '1' || d1 > '9') {\r\n                return false;\r\n            }\r\n        } else if (d0 == '1' || d0 == '2') {\r\n            if (d1 < '0' || d1 > '9') {\r\n                return false;\r\n            }\r\n        } else if (d0 == '3') {\r\n            if (d1 != '0' && d1 != '1') {\r\n                return false;\r\n            }\r\n        } else {\r\n            return false;\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n    @Override\r\n    public boolean isEOF() {\r\n        return bp == len || (ch == EOI && bp + 1 >= len);\r\n    }\r\n\r\n    public int scanFieldInt(char[] fieldName) {\r\n        matchStat = UNKNOWN;\r\n        int startPos = this.bp;\r\n        char startChar = this.ch;\r\n\r\n        if (!charArrayCompare(text, bp, fieldName)) {\r\n            matchStat = NOT_MATCH_NAME;\r\n            return 0;\r\n        }\r\n\r\n        int index = bp + fieldName.length;\r\n\r\n        char ch = charAt(index++);\r\n\r\n        final boolean quote = ch == '\"';\r\n\r\n        if (quote) {\r\n            ch = charAt(index++);\r\n        }\r\n\r\n        final boolean negative = ch == '-';\r\n        if (negative) {\r\n            ch = charAt(index++);\r\n        }\r\n\r\n        int value;\r\n        if (ch >= '0' && ch <= '9') {\r\n            value = ch - '0';\r\n            for (;;) {\r\n                ch = charAt(index++);\r\n                if (ch >= '0' && ch <= '9') {\r\n                    int value_10 = value * 10;\r\n                    if (value_10 < value) {\r\n                        matchStat = NOT_MATCH;\r\n                        return 0;\r\n                    }\r\n\r\n                    value = value_10 + (ch - '0');\r\n                } else if (ch == '.') {\r\n                    matchStat = NOT_MATCH;\r\n                    return 0;\r\n                } else {\r\n                    break;\r\n                }\r\n            }\r\n\r\n            if (value < 0) {\r\n                matchStat = NOT_MATCH;\r\n                return 0;\r\n            }\r\n\r\n            if (quote) {\r\n                if (ch != '\"') {\r\n                    matchStat = NOT_MATCH;\r\n                    return 0;\r\n                } else {\r\n                    ch = charAt(index++);\r\n                }\r\n            }\r\n\r\n            for (;;) {\r\n                if (ch == ',' || ch == '}') {\r\n                    bp = index - 1;\r\n                    break;\r\n                } else if(isWhitespace(ch)) {\r\n                    ch = charAt(index++);\r\n                    continue;\r\n                } else {\r\n                    matchStat = NOT_MATCH;\r\n                    return 0;\r\n                }\r\n            }\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        }\r\n\r\n        if (ch == ',') {\r\n            this.ch = charAt(++bp);\r\n            matchStat = VALUE;\r\n            token = JSONToken.COMMA;\r\n            return negative ? -value : value;\r\n        }\r\n\r\n        if (ch == '}') {\r\n            bp = index - 1;\r\n            ch = charAt(++bp);\r\n            for (; ; ) {\r\n                if (ch == ',') {\r\n                    token = JSONToken.COMMA;\r\n                    this.ch = charAt(++bp);\r\n                    break;\r\n                } else if (ch == ']') {\r\n                    token = JSONToken.RBRACKET;\r\n                    this.ch = charAt(++bp);\r\n                    break;\r\n                } else if (ch == '}') {\r\n                    token = JSONToken.RBRACE;\r\n                    this.ch = charAt(++bp);\r\n                    break;\r\n                } else if (ch == EOI) {\r\n                    token = JSONToken.EOF;\r\n                    break;\r\n                } else if (isWhitespace(ch)) {\r\n                    ch = charAt(++bp);\r\n                    continue;\r\n                } else {\r\n                    this.bp = startPos;\r\n                    this.ch = startChar;\r\n                    matchStat = NOT_MATCH;\r\n                    return 0;\r\n                }\r\n            }\r\n            matchStat = END;\r\n        }\r\n\r\n        return negative ? -value : value;\r\n    }\r\n\r\n    public String scanFieldString(char[] fieldName) {\r\n        matchStat = UNKNOWN;\r\n        int startPos = this.bp;\r\n        char startChar = this.ch;\r\n\r\n\r\n        for (;;) {\r\n            if (!charArrayCompare(text, bp, fieldName)) {\r\n                if (isWhitespace(ch)) {\r\n                    next();\r\n\r\n                    while (isWhitespace(ch)) {\r\n                        next();\r\n                    }\r\n                    continue;\r\n                }\r\n                matchStat = NOT_MATCH_NAME;\r\n                return stringDefaultValue();\r\n            } else {\r\n                break;\r\n            }\r\n        }\r\n\r\n        int index = bp + fieldName.length;\r\n\r\n        int spaceCount = 0;\r\n        char ch = charAt(index++);\r\n        if (ch != '\"') {\r\n            while (isWhitespace(ch)) {\r\n                spaceCount++;\r\n                ch = charAt(index++);\r\n            }\r\n\r\n            if (ch != '\"') {\r\n                matchStat = NOT_MATCH;\r\n\r\n                return stringDefaultValue();\r\n            }\r\n        }\r\n\r\n        final String strVal;\r\n        {\r\n            int startIndex = index;\r\n            int endIndex = indexOf('\"', startIndex);\r\n            if (endIndex == -1) {\r\n                throw new JSONException(\"unclosed str\");\r\n            }\r\n\r\n            String stringVal = subString(startIndex, endIndex - startIndex);\r\n            if (stringVal.indexOf('\\\\') != -1) {\r\n                for (;;) {\r\n                    int slashCount = 0;\r\n                    for (int i = endIndex - 1; i >= 0; --i) {\r\n                        if (charAt(i) == '\\\\') {\r\n                            slashCount++;\r\n                        } else {\r\n                            break;\r\n                        }\r\n                    }\r\n                    if (slashCount % 2 == 0) {\r\n                        break;\r\n                    }\r\n                    endIndex = indexOf('\"', endIndex + 1);\r\n                }\r\n\r\n                int chars_len = endIndex - (bp + fieldName.length + 1 + spaceCount);\r\n                char[] chars = sub_chars(bp + fieldName.length + 1 + spaceCount, chars_len);\r\n\r\n                stringVal = readString(chars, chars_len);\r\n            }\r\n\r\n            if ((this.features & Feature.TrimStringFieldValue.mask) != 0) {\r\n                stringVal = stringVal.trim();\r\n            }\r\n\r\n            ch = charAt(endIndex + 1);\r\n\r\n            for (;;) {\r\n                if (ch == ',' || ch == '}') {\r\n                    bp = endIndex + 1;\r\n                    this.ch = ch;\r\n                    strVal = stringVal;\r\n                    break;\r\n                } else if (isWhitespace(ch)) {\r\n                    endIndex++;\r\n                    ch = charAt(endIndex + 1);\r\n                } else {\r\n                    matchStat = NOT_MATCH;\r\n\r\n                    return stringDefaultValue();\r\n                }\r\n            }\r\n        }\r\n\r\n        if (ch == ',') {\r\n            this.ch = charAt(++bp);\r\n            matchStat = VALUE;\r\n            return strVal;\r\n        } else {\r\n            //condition ch == '}' is always 'true'\r\n            ch = charAt(++bp);\r\n            if (ch == ',') {\r\n                token = JSONToken.COMMA;\r\n                this.ch = charAt(++bp);\r\n            } else if (ch == ']') {\r\n                token = JSONToken.RBRACKET;\r\n                this.ch = charAt(++bp);\r\n            } else if (ch == '}') {\r\n                token = JSONToken.RBRACE;\r\n                this.ch = charAt(++bp);\r\n            } else if (ch == EOI) {\r\n                token = JSONToken.EOF;\r\n            } else {\r\n                this.bp = startPos;\r\n                this.ch = startChar;\r\n                matchStat = NOT_MATCH;\r\n                return stringDefaultValue();\r\n            }\r\n            matchStat = END;\r\n        }\r\n        return strVal;\r\n    }\r\n\r\n    public java.util.Date scanFieldDate(char[] fieldName) {\r\n        matchStat = UNKNOWN;\r\n        int startPos = this.bp;\r\n        char startChar = this.ch;\r\n\r\n        if (!charArrayCompare(text, bp, fieldName)) {\r\n            matchStat = NOT_MATCH_NAME;\r\n            return null;\r\n        }\r\n\r\n        int index = bp + fieldName.length;\r\n\r\n        char ch = charAt(index++);\r\n\r\n        final java.util.Date dateVal;\r\n        if (ch == '\"') {\r\n            int startIndex = index;\r\n            int endIndex = indexOf('\"', startIndex);\r\n            if (endIndex == -1) {\r\n                throw new JSONException(\"unclosed str\");\r\n            }\r\n\r\n            int rest = endIndex - startIndex;\r\n            bp = index;\r\n            if (scanISO8601DateIfMatch(false, rest)) {\r\n                dateVal = calendar.getTime();\r\n            } else {\r\n                bp = startPos;\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n            ch = charAt(endIndex + 1);\r\n            bp = startPos;\r\n\r\n            for (; ; ) {\r\n                if (ch == ',' || ch == '}') {\r\n                    bp = endIndex + 1;\r\n                    this.ch = ch;\r\n                    break;\r\n                } else if (isWhitespace(ch)) {\r\n                    endIndex++;\r\n                    ch = charAt(endIndex + 1);\r\n                } else {\r\n                    matchStat = NOT_MATCH;\r\n\r\n                    return null;\r\n                }\r\n            }\r\n        } else if (ch == '-' || (ch >= '0' && ch <= '9')) {\r\n            long millis = 0;\r\n\r\n            boolean negative = false;\r\n            if (ch == '-') {\r\n                ch = charAt(index++);\r\n                negative = true;\r\n            }\r\n\r\n            if (ch >= '0' && ch <= '9') {\r\n                millis = ch - '0';\r\n                for (; ; ) {\r\n                    ch = charAt(index++);\r\n                    if (ch >= '0' && ch <= '9') {\r\n                        millis = millis * 10 + (ch - '0');\r\n                    } else {\r\n                        if (ch == ',' || ch == '}') {\r\n                            bp = index - 1;\r\n                        }\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n\r\n            if (millis < 0) {\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n\r\n            if (negative) {\r\n                millis = -millis;\r\n            }\r\n\r\n            dateVal = new java.util.Date(millis);\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n\r\n            return null;\r\n        }\r\n\r\n        if (ch == ',') {\r\n            this.ch = charAt(++bp);\r\n            matchStat = VALUE;\r\n            token = JSONToken.COMMA;\r\n            return dateVal;\r\n        } else {\r\n            //condition ch == '}' is always 'true'\r\n            ch = charAt(++bp);\r\n            if (ch == ',') {\r\n                token = JSONToken.COMMA;\r\n                this.ch = charAt(++bp);\r\n            } else if (ch == ']') {\r\n                token = JSONToken.RBRACKET;\r\n                this.ch = charAt(++bp);\r\n            } else if (ch == '}') {\r\n                token = JSONToken.RBRACE;\r\n                this.ch = charAt(++bp);\r\n            } else if (ch == EOI) {\r\n                token = JSONToken.EOF;\r\n            } else {\r\n                this.bp = startPos;\r\n                this.ch = startChar;\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n            matchStat = END;\r\n        }\r\n        return dateVal;\r\n    }\r\n\r\n    public long scanFieldSymbol(char[] fieldName) {\r\n        matchStat = UNKNOWN;\r\n\r\n        for (;;) {\r\n            if (!charArrayCompare(text, bp, fieldName)) {\r\n                if (isWhitespace(ch)) {\r\n                    next();\r\n\r\n                    while (isWhitespace(ch)) {\r\n                        next();\r\n                    }\r\n                    continue;\r\n                }\r\n                matchStat = NOT_MATCH_NAME;\r\n                return 0;\r\n            } else {\r\n                break;\r\n            }\r\n        }\r\n\r\n        int index = bp + fieldName.length;\r\n        int spaceCount = 0;\r\n        char ch = charAt(index++);\r\n        if (ch != '\"') {\r\n            while (isWhitespace(ch)) {\r\n                ch = charAt(index++);\r\n                spaceCount++;\r\n            }\r\n\r\n            if (ch != '\"') {\r\n                matchStat = NOT_MATCH;\r\n\r\n                return 0;\r\n            }\r\n        }\r\n\r\n        long hash = fnv1a_64_magic_hashcode;\r\n        for (;;) {\r\n            ch = charAt(index++);\r\n            if (ch == '\\\"') {\r\n                bp = index;\r\n                this.ch = ch = charAt(bp);\r\n                break;\r\n            } else if (index > len) {\r\n                matchStat = NOT_MATCH;\r\n                return 0;\r\n            }\r\n\r\n            hash ^= ch;\r\n            hash *= fnv1a_64_magic_prime;\r\n        }\r\n\r\n        for (;;) {\r\n            if (ch == ',') {\r\n                this.ch = charAt(++bp);\r\n                matchStat = VALUE;\r\n                return hash;\r\n            } else if (ch == '}') {\r\n                next();\r\n                skipWhitespace();\r\n                ch = getCurrent();\r\n                if (ch == ',') {\r\n                    token = JSONToken.COMMA;\r\n                    this.ch = charAt(++bp);\r\n                } else if (ch == ']') {\r\n                    token = JSONToken.RBRACKET;\r\n                    this.ch = charAt(++bp);\r\n                } else if (ch == '}') {\r\n                    token = JSONToken.RBRACE;\r\n                    this.ch = charAt(++bp);\r\n                } else if (ch == EOI) {\r\n                    token = JSONToken.EOF;\r\n                } else {\r\n                    matchStat = NOT_MATCH;\r\n                    return 0;\r\n                }\r\n                matchStat = END;\r\n                break;\r\n            } else if (isWhitespace(ch)) {\r\n                ch = charAt(++bp);\r\n                continue;\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return 0;\r\n            }\r\n        }\r\n\r\n        return hash;\r\n    }\r\n\r\n    @SuppressWarnings(\"unchecked\")\r\n    public Collection<String> scanFieldStringArray(char[] fieldName, Class<?> type) {\r\n        matchStat = UNKNOWN;\r\n\r\n        while (ch == '\\n' || ch == ' ') {\r\n            int index = ++bp;\r\n            ch = (index >= this.len ? //\r\n                    EOI //\r\n                    : text.charAt(index));\r\n        }\r\n\r\n        if (!charArrayCompare(text, bp, fieldName)) {\r\n            matchStat = NOT_MATCH_NAME;\r\n            return null;\r\n        }\r\n\r\n        Collection<String> list = newCollectionByType(type);\r\n\r\n//        if (type.isAssignableFrom(HashSet.class)) {\r\n//            list = new HashSet<String>();\r\n//        } else if (type.isAssignableFrom(ArrayList.class)) {\r\n//            list = new ArrayList<String>();\r\n//        } else {\r\n//            try {\r\n//                list = (Collection<String>) type.newInstance();\r\n//            } catch (Exception e) {\r\n//                throw new JSONException(e.getMessage(), e);\r\n//            }\r\n//        }\r\n\r\n        int startPos = this.bp;\r\n        char startChar = this.ch;\r\n\r\n        int index = bp + fieldName.length;\r\n\r\n        char ch = charAt(index++);\r\n\r\n        if (ch == '[') {\r\n            ch = charAt(index++);\r\n\r\n            for (;;) {\r\n                if (ch == '\"') {\r\n                    int startIndex = index;\r\n                    int endIndex = indexOf('\"', startIndex);\r\n                    if (endIndex == -1) {\r\n                        throw new JSONException(\"unclosed str\");\r\n                    }\r\n\r\n                    String stringVal = subString(startIndex, endIndex - startIndex);\r\n                    if (stringVal.indexOf('\\\\') != -1) {\r\n                        for (;;) {\r\n                            int slashCount = 0;\r\n                            for (int i = endIndex - 1; i >= 0; --i) {\r\n                                if (charAt(i) == '\\\\') {\r\n                                    slashCount++;\r\n                                } else {\r\n                                    break;\r\n                                }\r\n                            }\r\n                            if (slashCount % 2 == 0) {\r\n                                break;\r\n                            }\r\n                            endIndex = indexOf('\"', endIndex + 1);\r\n                        }\r\n\r\n                        int chars_len = endIndex - startIndex;\r\n                        char[] chars = sub_chars(startIndex, chars_len);\r\n\r\n                        stringVal = readString(chars, chars_len);\r\n                    }\r\n\r\n                    index = endIndex + 1;\r\n                    ch = charAt(index++);\r\n\r\n                    list.add(stringVal);\r\n                } else if (ch == 'n' && text.startsWith(\"ull\", index)) {\r\n                    index += 3;\r\n                    ch = charAt(index++);\r\n                    list.add(null);\r\n                } else if (ch == ']' && list.size() == 0) {\r\n                    ch = charAt(index++);\r\n                    break;\r\n                } else {\r\n                    matchStat = NOT_MATCH;\r\n                    return null;\r\n                }\r\n\r\n                if (ch == ',') {\r\n                    ch = charAt(index++);\r\n                    continue;\r\n                }\r\n\r\n                if (ch == ']') {\r\n                    ch = charAt(index++);\r\n                    while (isWhitespace(ch)) {\r\n                        ch = charAt(index++);\r\n                    }\r\n                    break;\r\n                }\r\n\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n        } else if (text.startsWith(\"ull\", index)) {\r\n            index += 3;\r\n            ch = charAt(index++);\r\n            list = null;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return null;\r\n        }\r\n\r\n        bp = index;\r\n        if (ch == ',') {\r\n            this.ch = charAt(bp);\r\n            matchStat = VALUE;\r\n            return list;\r\n        } else if (ch == '}') {\r\n            ch = charAt(bp);\r\n            for (;;) {\r\n                if (ch == ',') {\r\n                    token = JSONToken.COMMA;\r\n                    this.ch = charAt(++bp);\r\n                    break;\r\n                } else if (ch == ']') {\r\n                    token = JSONToken.RBRACKET;\r\n                    this.ch = charAt(++bp);\r\n                    break;\r\n                } else if (ch == '}') {\r\n                    token = JSONToken.RBRACE;\r\n                    this.ch = charAt(++bp);\r\n                    break;\r\n                } else if (ch == EOI) {\r\n                    token = JSONToken.EOF;\r\n                    this.ch = ch;\r\n                    break;\r\n                } else {\r\n                    boolean space = false;\r\n                    while (isWhitespace(ch)) {\r\n                        ch = charAt(index++);\r\n                        bp = index;\r\n                        space = true;\r\n                    }\r\n                    if (space) {\r\n                        continue;\r\n                    }\r\n\r\n                    matchStat = NOT_MATCH;\r\n                    return null;\r\n                }\r\n            }\r\n\r\n            matchStat = END;\r\n        } else {\r\n            this.ch = startChar;\r\n            bp = startPos;\r\n            matchStat = NOT_MATCH;\r\n            return null;\r\n        }\r\n\r\n        return list;\r\n    }\r\n\r\n    public long scanFieldLong(char[] fieldName) {\r\n        matchStat = UNKNOWN;\r\n        int startPos = this.bp;\r\n        char startChar = this.ch;\r\n\r\n        if (!charArrayCompare(text, bp, fieldName)) {\r\n            matchStat = NOT_MATCH_NAME;\r\n            return 0;\r\n        }\r\n\r\n        int index = bp + fieldName.length;\r\n\r\n        char ch = charAt(index++);\r\n\r\n        final boolean quote = ch == '\"';\r\n        if (quote) {\r\n            ch = charAt(index++);\r\n        }\r\n\r\n        boolean negative = false;\r\n        if (ch == '-') {\r\n            ch = charAt(index++);\r\n            negative = true;\r\n        }\r\n\r\n        long value;\r\n        if (ch >= '0' && ch <= '9') {\r\n            value = ch - '0';\r\n            for (;;) {\r\n                ch = charAt(index++);\r\n                if (ch >= '0' && ch <= '9') {\r\n                    value = value * 10 + (ch - '0');\r\n                } else if (ch == '.') {\r\n                    matchStat = NOT_MATCH;\r\n                    return 0;\r\n                } else {\r\n                    if (quote) {\r\n                        if (ch != '\"') {\r\n                            matchStat = NOT_MATCH;\r\n                            return 0;\r\n                        } else {\r\n                            ch = charAt(index++);\r\n                        }\r\n                    }\r\n\r\n                    if (ch == ',' || ch == '}') {\r\n                        bp = index - 1;\r\n                    }\r\n                    break;\r\n                }\r\n            }\r\n\r\n            boolean valid = value >= 0 || (value == -9223372036854775808L && negative);\r\n            if (!valid) {\r\n                this.bp = startPos;\r\n                this.ch = startChar;\r\n                matchStat = NOT_MATCH;\r\n                return 0;\r\n            }\r\n        } else {\r\n            this.bp = startPos;\r\n            this.ch = startChar;\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        }\r\n\r\n        for (;;) {\r\n            if (ch == ',') {\r\n                this.ch = charAt(++bp);\r\n                matchStat = VALUE;\r\n                token = JSONToken.COMMA;\r\n                return negative ? -value : value;\r\n            } else if (ch == '}') {\r\n                ch = charAt(++bp);\r\n                for (;;) {\r\n                    if (ch == ',') {\r\n                        token = JSONToken.COMMA;\r\n                        this.ch = charAt(++bp);\r\n                        break;\r\n                    } else if (ch == ']') {\r\n                        token = JSONToken.RBRACKET;\r\n                        this.ch = charAt(++bp);\r\n                        break;\r\n                    } else if (ch == '}') {\r\n                        token = JSONToken.RBRACE;\r\n                        this.ch = charAt(++bp);\r\n                        break;\r\n                    } else if (ch == EOI) {\r\n                        token = JSONToken.EOF;\r\n                        break;\r\n                    } else if (isWhitespace(ch)) {\r\n                        ch = charAt(++bp);\r\n                    } else {\r\n                        this.bp = startPos;\r\n                        this.ch = startChar;\r\n                        matchStat = NOT_MATCH;\r\n                        return 0;\r\n                    }\r\n                }\r\n                matchStat = END;\r\n                break;\r\n            } else if (isWhitespace(ch)) {\r\n                bp = index;\r\n                ch = charAt(index++);\r\n                continue;\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return 0;\r\n            }\r\n        }\r\n\r\n        return negative ? -value : value;\r\n    }\r\n\r\n    public boolean scanFieldBoolean(char[] fieldName) {\r\n        matchStat = UNKNOWN;\r\n\r\n        if (!charArrayCompare(text, bp, fieldName)) {\r\n            matchStat = NOT_MATCH_NAME;\r\n            return false;\r\n        }\r\n\r\n        int startPos = bp;\r\n        int index = bp + fieldName.length;\r\n\r\n        char ch = charAt(index++);\r\n\r\n        final boolean quote = ch == '\"';\r\n        if (quote) {\r\n            ch = charAt(index++);\r\n        }\r\n\r\n        boolean value;\r\n        if (ch == 't') {\r\n            if (charAt(index++) != 'r') {\r\n                matchStat = NOT_MATCH;\r\n                return false;\r\n            }\r\n            if (charAt(index++) != 'u') {\r\n                matchStat = NOT_MATCH;\r\n                return false;\r\n            }\r\n            if (charAt(index++) != 'e') {\r\n                matchStat = NOT_MATCH;\r\n                return false;\r\n            }\r\n\r\n            if (quote && charAt(index++) != '\"') {\r\n                matchStat = NOT_MATCH;\r\n                return false;\r\n            }\r\n\r\n            bp = index;\r\n            ch = charAt(bp);\r\n            value = true;\r\n        } else if (ch == 'f') {\r\n            if (charAt(index++) != 'a') {\r\n                matchStat = NOT_MATCH;\r\n                return false;\r\n            }\r\n            if (charAt(index++) != 'l') {\r\n                matchStat = NOT_MATCH;\r\n                return false;\r\n            }\r\n            if (charAt(index++) != 's') {\r\n                matchStat = NOT_MATCH;\r\n                return false;\r\n            }\r\n            if (charAt(index++) != 'e') {\r\n                matchStat = NOT_MATCH;\r\n                return false;\r\n            }\r\n\r\n            if (quote && charAt(index++) != '\"') {\r\n                matchStat = NOT_MATCH;\r\n                return false;\r\n            }\r\n\r\n            bp = index;\r\n            ch = charAt(bp);\r\n            value = false;\r\n        } else if (ch == '1') {\r\n            if (quote && charAt(index++) != '\"') {\r\n                matchStat = NOT_MATCH;\r\n                return false;\r\n            }\r\n\r\n            bp = index;\r\n            ch = charAt(bp);\r\n            value = true;\r\n        } else if (ch == '0') {\r\n            if (quote && charAt(index++) != '\"') {\r\n                matchStat = NOT_MATCH;\r\n                return false;\r\n            }\r\n\r\n            bp = index;\r\n            ch = charAt(bp);\r\n            value = false;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return false;\r\n        }\r\n\r\n        for (;;) {\r\n            if (ch == ',') {\r\n                this.ch = charAt(++bp);\r\n                matchStat = VALUE;\r\n                token = JSONToken.COMMA;\r\n                break;\r\n            } else if (ch == '}') {\r\n                ch = charAt(++bp);\r\n                for (;;) {\r\n                    if (ch == ',') {\r\n                        token = JSONToken.COMMA;\r\n                        this.ch = charAt(++bp);\r\n                    } else if (ch == ']') {\r\n                        token = JSONToken.RBRACKET;\r\n                        this.ch = charAt(++bp);\r\n                    } else if (ch == '}') {\r\n                        token = JSONToken.RBRACE;\r\n                        this.ch = charAt(++bp);\r\n                    } else if (ch == EOI) {\r\n                        token = JSONToken.EOF;\r\n                    } else if (isWhitespace(ch)) {\r\n                        ch = charAt(++bp);\r\n                        continue;\r\n                    } else {\r\n                        matchStat = NOT_MATCH;\r\n                        return false;\r\n                    }\r\n                    break;\r\n                }\r\n                matchStat = END;\r\n                break;\r\n            } else if (isWhitespace(ch)) {\r\n                ch = charAt(++bp);\r\n            } else {\r\n                bp = startPos;\r\n                ch = charAt(bp);\r\n                matchStat = NOT_MATCH;\r\n                return false;\r\n            }\r\n        }\r\n\r\n        return value;\r\n    }\r\n\r\n    public final int scanInt(char expectNext) {\r\n        matchStat = UNKNOWN;\r\n\r\n        final int mark = bp;\r\n        int offset = bp;\r\n        char chLocal = charAt(offset++);\r\n\r\n        while (isWhitespace(chLocal)) {\r\n            chLocal = charAt(offset++);\r\n        }\r\n\r\n        final boolean quote = chLocal == '\"';\r\n\r\n        if (quote) {\r\n            chLocal = charAt(offset++);\r\n        }\r\n\r\n        final boolean negative = chLocal == '-';\r\n        if (negative) {\r\n            chLocal = charAt(offset++);\r\n        }\r\n\r\n        int value;\r\n        if (chLocal >= '0' && chLocal <= '9') {\r\n            value = chLocal - '0';\r\n            for (;;) {\r\n                chLocal = charAt(offset++);\r\n                if (chLocal >= '0' && chLocal <= '9') {\r\n                    int value_10 = value * 10;\r\n                    if (value_10 < value) {\r\n                        throw new JSONException(\"parseInt error : \"\r\n                                + subString(mark, offset - 1));\r\n                    }\r\n                    value = value_10 + (chLocal - '0');\r\n                } else if (chLocal == '.') {\r\n                    matchStat = NOT_MATCH;\r\n                    return 0;\r\n                } else {\r\n                    if (quote) {\r\n                        if (chLocal != '\"') {\r\n                            matchStat = NOT_MATCH;\r\n                            return 0;\r\n                        } else {\r\n                            chLocal = charAt(offset++);\r\n                        }\r\n                    }\r\n                    break;\r\n                }\r\n            }\r\n            if (value < 0) {\r\n                matchStat = NOT_MATCH;\r\n                return 0;\r\n            }\r\n        } else if (chLocal == 'n'\r\n                && charAt(offset++) == 'u'\r\n                && charAt(offset++) == 'l'\r\n                && charAt(offset++) == 'l') {\r\n            matchStat = VALUE_NULL;\r\n            value = 0;\r\n            chLocal = charAt(offset++);\r\n\r\n            if (quote && chLocal == '\"') {\r\n                chLocal = charAt(offset++);\r\n            }\r\n\r\n            for (;;) {\r\n                if (chLocal == ',') {\r\n                    bp = offset;\r\n                    this.ch = charAt(bp);\r\n                    matchStat = VALUE_NULL;\r\n                    token = JSONToken.COMMA;\r\n                    return value;\r\n                } else if (chLocal == ']') {\r\n                    bp = offset;\r\n                    this.ch = charAt(bp);\r\n                    matchStat = VALUE_NULL;\r\n                    token = JSONToken.RBRACKET;\r\n                    return value;\r\n                } else if (isWhitespace(chLocal)) {\r\n                    chLocal = charAt(offset++);\r\n                    continue;\r\n                }\r\n                break;\r\n            }\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        }\r\n\r\n        for (;;) {\r\n            if (chLocal == expectNext) {\r\n                bp = offset;\r\n                this.ch = charAt(bp);\r\n                matchStat = VALUE;\r\n                token = JSONToken.COMMA;\r\n                return negative ? -value : value;\r\n            } else {\r\n                if (isWhitespace(chLocal)) {\r\n                    chLocal = charAt(offset++);\r\n                    continue;\r\n                }\r\n                matchStat = NOT_MATCH;\r\n                return negative ? -value : value;\r\n            }\r\n        }\r\n    }\r\n\r\n    public  double scanDouble(char seperator) {\r\n        matchStat = UNKNOWN;\r\n\r\n        int offset = bp;\r\n        char chLocal = charAt(offset++);\r\n        final boolean quote = chLocal == '\"';\r\n        if (quote) {\r\n            chLocal = charAt(offset++);\r\n        }\r\n\r\n        boolean negative = chLocal == '-';\r\n        if (negative) {\r\n            chLocal = charAt(offset++);\r\n        }\r\n\r\n        double value;\r\n        if (chLocal >= '0' && chLocal <= '9') {\r\n            long intVal = chLocal - '0';\r\n            for (; ; ) {\r\n                chLocal = charAt(offset++);\r\n                if (chLocal >= '0' && chLocal <= '9') {\r\n                    intVal = intVal * 10 + (chLocal - '0');\r\n                    continue;\r\n                } else {\r\n                    break;\r\n                }\r\n            }\r\n\r\n            long power = 1;\r\n            boolean small = (chLocal == '.');\r\n            if (small) {\r\n                chLocal = charAt(offset++);\r\n                if (chLocal >= '0' && chLocal <= '9') {\r\n                    intVal = intVal * 10 + (chLocal - '0');\r\n                    power = 10;\r\n                    for (; ; ) {\r\n                        chLocal = charAt(offset++);\r\n                        if (chLocal >= '0' && chLocal <= '9') {\r\n                            intVal = intVal * 10 + (chLocal - '0');\r\n                            power *= 10;\r\n                            continue;\r\n                        } else {\r\n                            break;\r\n                        }\r\n                    }\r\n                } else {\r\n                    matchStat = NOT_MATCH;\r\n                    return 0;\r\n                }\r\n            }\r\n\r\n            boolean exp = chLocal == 'e' || chLocal == 'E';\r\n            if (exp) {\r\n                chLocal = charAt(offset++);\r\n                if (chLocal == '+' || chLocal == '-') {\r\n                    chLocal = charAt(offset++);\r\n                }\r\n                for (; ; ) {\r\n                    if (chLocal >= '0' && chLocal <= '9') {\r\n                        chLocal = charAt(offset++);\r\n                    } else {\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n\r\n            int start, count;\r\n            if (quote) {\r\n                if (chLocal != '\"') {\r\n                    matchStat = NOT_MATCH;\r\n                    return 0;\r\n                } else {\r\n                    chLocal = charAt(offset++);\r\n                }\r\n                start = bp + 1;\r\n                count = offset - start - 2;\r\n            } else {\r\n                start = bp;\r\n                count = offset - start - 1;\r\n            }\r\n\r\n            if (!exp && count < 18) {\r\n                value = ((double) intVal) / power;\r\n                if (negative) {\r\n                    value = -value;\r\n                }\r\n            } else {\r\n                String text = this.subString(start, count);\r\n                value = Double.parseDouble(text);\r\n            }\r\n        } else if (chLocal == 'n'\r\n                && charAt(offset++) == 'u'\r\n                && charAt(offset++) == 'l'\r\n                && charAt(offset++) == 'l') {\r\n            matchStat = VALUE_NULL;\r\n            value = 0;\r\n            chLocal = charAt(offset++);\r\n\r\n            if (quote && chLocal == '\"') {\r\n                chLocal = charAt(offset++);\r\n            }\r\n\r\n            for (;;) {\r\n                if (chLocal == ',') {\r\n                    bp = offset;\r\n                    this.ch = charAt(bp);\r\n                    matchStat = VALUE_NULL;\r\n                    token = JSONToken.COMMA;\r\n                    return value;\r\n                } else if (chLocal == ']') {\r\n                    bp = offset;\r\n                    this.ch = charAt(bp);\r\n                    matchStat = VALUE_NULL;\r\n                    token = JSONToken.RBRACKET;\r\n                    return value;\r\n                } else if (isWhitespace(chLocal)) {\r\n                    chLocal = charAt(offset++);\r\n                    continue;\r\n                }\r\n                break;\r\n            }\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        }\r\n\r\n        if (chLocal == seperator) {\r\n            bp = offset;\r\n            this.ch = this.charAt(bp);\r\n            matchStat = VALUE;\r\n            token = JSONToken.COMMA;\r\n            return value;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return value;\r\n        }\r\n    }\r\n\r\n    public long scanLong(char seperator) {\r\n        matchStat = UNKNOWN;\r\n\r\n        int offset = bp;\r\n        char chLocal = charAt(offset++);\r\n        final boolean quote = chLocal == '\"';\r\n\r\n        if (quote) {\r\n            chLocal = charAt(offset++);\r\n        }\r\n\r\n        final boolean negative = chLocal == '-';\r\n        if (negative) {\r\n            chLocal = charAt(offset++);\r\n        }\r\n\r\n        long value;\r\n        if (chLocal >= '0' && chLocal <= '9') {\r\n            value = chLocal - '0';\r\n            for (;;) {\r\n                chLocal = charAt(offset++);\r\n                if (chLocal >= '0' && chLocal <= '9') {\r\n                    value = value * 10 + (chLocal - '0');\r\n                } else if (chLocal == '.') {\r\n                    matchStat = NOT_MATCH;\r\n                    return 0;\r\n                } else {\r\n                    if (quote) {\r\n                        if (chLocal != '\"') {\r\n                            matchStat = NOT_MATCH;\r\n                            return 0;\r\n                        } else {\r\n                            chLocal = charAt(offset++);\r\n                        }\r\n                    }\r\n                    break;\r\n                }\r\n            }\r\n\r\n            boolean valid = value >= 0 || (value == -9223372036854775808L && negative);\r\n            if (!valid) {\r\n                matchStat = NOT_MATCH;\r\n                return 0;\r\n            }\r\n        } else if (chLocal == 'n'\r\n                && charAt(offset++) == 'u'\r\n                && charAt(offset++) == 'l'\r\n                && charAt(offset++) == 'l') {\r\n            matchStat = VALUE_NULL;\r\n            value = 0;\r\n            chLocal = charAt(offset++);\r\n\r\n            if (quote && chLocal == '\"') {\r\n                chLocal = charAt(offset++);\r\n            }\r\n\r\n            for (;;) {\r\n                if (chLocal == ',') {\r\n                    bp = offset;\r\n                    this.ch = charAt(bp);\r\n                    matchStat = VALUE_NULL;\r\n                    token = JSONToken.COMMA;\r\n                    return value;\r\n                } else if (chLocal == ']') {\r\n                    bp = offset;\r\n                    this.ch = charAt(bp);\r\n                    matchStat = VALUE_NULL;\r\n                    token = JSONToken.RBRACKET;\r\n                    return value;\r\n                } else if (isWhitespace(chLocal)) {\r\n                    chLocal = charAt(offset++);\r\n                    continue;\r\n                }\r\n                break;\r\n            }\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return 0;\r\n        }\r\n\r\n        for (;;) {\r\n            if (chLocal == seperator) {\r\n                bp = offset;\r\n                this.ch = charAt(bp);\r\n                matchStat = VALUE;\r\n                token = JSONToken.COMMA;\r\n                return negative ? -value : value;\r\n            } else {\r\n                if (isWhitespace(chLocal)) {\r\n                    chLocal = charAt(offset++);\r\n                    continue;\r\n                }\r\n\r\n                matchStat = NOT_MATCH;\r\n                return value;\r\n            }\r\n        }\r\n    }\r\n\r\n    public java.util.Date scanDate(char seperator) {\r\n        matchStat = UNKNOWN;\r\n        int startPos = this.bp;\r\n        char startChar = this.ch;\r\n\r\n        int index = bp;\r\n\r\n        char ch = charAt(index++);\r\n\r\n        final java.util.Date dateVal;\r\n        if (ch == '\"') {\r\n            int startIndex = index;\r\n            int endIndex = indexOf('\"', startIndex);\r\n            if (endIndex == -1) {\r\n                throw new JSONException(\"unclosed str\");\r\n            }\r\n\r\n            int rest = endIndex - startIndex;\r\n            bp = index;\r\n            if (scanISO8601DateIfMatch(false, rest)) {\r\n                dateVal = calendar.getTime();\r\n            } else {\r\n                bp = startPos;\r\n                this.ch = startChar;\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n            ch = charAt(endIndex + 1);\r\n            bp = startPos;\r\n\r\n            for (; ; ) {\r\n                if (ch == ',' || ch == ']') {\r\n                    bp = endIndex + 1;\r\n                    this.ch = ch;\r\n                    break;\r\n                } else if (isWhitespace(ch)) {\r\n                    endIndex++;\r\n                    ch = charAt(endIndex + 1);\r\n                } else {\r\n                    this.bp = startPos;\r\n                    this.ch = startChar;\r\n                    matchStat = NOT_MATCH;\r\n\r\n                    return null;\r\n                }\r\n            }\r\n        } else if (ch == '-' || (ch >= '0' && ch <= '9')) {\r\n            long millis = 0;\r\n\r\n            boolean negative = false;\r\n            if (ch == '-') {\r\n                ch = charAt(index++);\r\n                negative = true;\r\n            }\r\n\r\n            if (ch >= '0' && ch <= '9') {\r\n                millis = ch - '0';\r\n                for (; ; ) {\r\n                    ch = charAt(index++);\r\n                    if (ch >= '0' && ch <= '9') {\r\n                        millis = millis * 10 + (ch - '0');\r\n                    } else {\r\n                        if (ch == ',' || ch == ']') {\r\n                            bp = index - 1;\r\n                        }\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n\r\n            if (millis < 0) {\r\n                this.bp = startPos;\r\n                this.ch = startChar;\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n\r\n            if (negative) {\r\n                millis = -millis;\r\n            }\r\n\r\n            dateVal = new java.util.Date(millis);\r\n        } else if (ch == 'n'\r\n                && charAt(index++) == 'u'\r\n                && charAt(index++) == 'l'\r\n                && charAt(index++) == 'l') {\r\n            dateVal = null;\r\n            ch = charAt(index);\r\n            bp = index;\r\n        } else {\r\n            this.bp = startPos;\r\n            this.ch = startChar;\r\n            matchStat = NOT_MATCH;\r\n\r\n            return null;\r\n        }\r\n\r\n        if (ch == ',') {\r\n            this.ch = charAt(++bp);\r\n            matchStat = VALUE;\r\n            return dateVal;\r\n        } else {\r\n            //condition ch == '}' is always 'true'\r\n            ch = charAt(++bp);\r\n            if (ch == ',') {\r\n                token = JSONToken.COMMA;\r\n                this.ch = charAt(++bp);\r\n            } else if (ch == ']') {\r\n                token = JSONToken.RBRACKET;\r\n                this.ch = charAt(++bp);\r\n            } else if (ch == '}') {\r\n                token = JSONToken.RBRACE;\r\n                this.ch = charAt(++bp);\r\n            } else if (ch == EOI) {\r\n                this.ch = EOI;\r\n                token = JSONToken.EOF;\r\n            } else {\r\n                this.bp = startPos;\r\n                this.ch = startChar;\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n            matchStat = END;\r\n        }\r\n        return dateVal;\r\n    }\r\n\r\n    protected final void arrayCopy(int srcPos, char[] dest, int destPos, int length) {\r\n        text.getChars(srcPos, srcPos + length, dest, destPos);\r\n    }\r\n\r\n    public String info() {\r\n        StringBuilder buf = new StringBuilder();\r\n\r\n//        buf.append(\"pos \").append(bp);\r\n//        return \"pos \" + bp //\r\n//                + \", json : \" //\r\n//                + (text.length() < 65536 //\r\n//                ? text //\r\n//                : text.substring(0, 65536));\r\n\r\n        int line = 1;\r\n        int column = 1;\r\n        for (int i = 0; i < bp; ++i, column++) {\r\n            char ch = text.charAt(i);\r\n            if (ch == '\\n') {\r\n                column = 1;\r\n                line++;\r\n            }\r\n        }\r\n\r\n        buf.append(\"pos \").append(bp)\r\n                .append(\", line \").append(line)\r\n                .append(\", column \").append(column);\r\n\r\n        if (text.length() < 65535) {\r\n            buf.append(text);\r\n        } else {\r\n            buf.append(text.substring(0, 65535));\r\n        }\r\n\r\n        return buf.toString();\r\n    }\r\n\r\n    // for hsf support\r\n    public String[] scanFieldStringArray(char[] fieldName, int argTypesCount, SymbolTable typeSymbolTable) {\r\n        int startPos = bp;\r\n        char starChar = ch;\r\n\r\n        while (isWhitespace(ch)) {\r\n            next();\r\n        }\r\n\r\n        int offset;\r\n        char ch;\r\n        if (fieldName != null) {\r\n            matchStat = UNKNOWN;\r\n            if (!charArrayCompare(fieldName)) {\r\n                matchStat = NOT_MATCH_NAME;\r\n                return null;\r\n            }\r\n\r\n            offset = bp + fieldName.length;\r\n            ch = text.charAt(offset++);\r\n            while (isWhitespace(ch)) {\r\n                ch = text.charAt(offset++);\r\n            }\r\n\r\n            if (ch == ':') {\r\n                ch = text.charAt(offset++);\r\n            } else {\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n\r\n            while (isWhitespace(ch)) {\r\n                ch = text.charAt(offset++);\r\n            }\r\n        } else {\r\n            offset = bp + 1;\r\n            ch = this.ch;\r\n        }\r\n\r\n        if (ch == '[') {\r\n            bp = offset;\r\n            this.ch = text.charAt(bp);\r\n        } else if (ch == 'n' && text.startsWith(\"ull\", bp + 1)) {\r\n            bp += 4;\r\n            this.ch = text.charAt(bp);\r\n            return null;\r\n        } else {\r\n            matchStat = NOT_MATCH;\r\n            return null;\r\n        }\r\n\r\n        String[] types = argTypesCount >= 0 ? new String[argTypesCount] : new String[4];\r\n        int typeIndex = 0;\r\n        for (;;) {\r\n            while (isWhitespace(this.ch)) {\r\n                next();\r\n            }\r\n\r\n            if (this.ch != '\\\"') {\r\n                this.bp = startPos;\r\n                this.ch = starChar;\r\n                matchStat = NOT_MATCH;\r\n                return null;\r\n            }\r\n\r\n            String type = scanSymbol(typeSymbolTable, '\"');\r\n            if (typeIndex == types.length) {\r\n                int newCapacity = types.length + (types.length >> 1) + 1;\r\n                String[] array = new String[newCapacity];\r\n                System.arraycopy(types, 0, array, 0, types.length);\r\n                types = array;\r\n            }\r\n            types[typeIndex++] = type;\r\n            while (isWhitespace(this.ch)) {\r\n                next();\r\n            }\r\n            if (this.ch == ',') {\r\n                next();\r\n                continue;\r\n            }\r\n            break;\r\n        }\r\n        if (types.length != typeIndex) {\r\n            String[] array = new String[typeIndex];\r\n            System.arraycopy(types, 0, array, 0, typeIndex);\r\n            types = array;\r\n        }\r\n\r\n        while (isWhitespace(this.ch)) {\r\n            next();\r\n        }\r\n\r\n        if (this.ch == ']') {\r\n            next();\r\n        } else {\r\n            this.bp = startPos;\r\n            this.ch = starChar;\r\n            matchStat = NOT_MATCH;\r\n            return null;\r\n        }\r\n\r\n        return types;\r\n    }\r\n\r\n    public boolean matchField2(char[] fieldName) {\r\n        while (isWhitespace(ch)) {\r\n            next();\r\n        }\r\n\r\n        if (!charArrayCompare(fieldName)) {\r\n            matchStat = NOT_MATCH_NAME;\r\n            return false;\r\n        }\r\n\r\n        int offset = bp + fieldName.length;\r\n        char ch = text.charAt(offset++);\r\n        while (isWhitespace(ch)) {\r\n            ch = text.charAt(offset++);\r\n        }\r\n\r\n        if (ch == ':') {\r\n            this.bp = offset;\r\n            this.ch = charAt(bp);\r\n            return true;\r\n        } else {\r\n            matchStat = NOT_MATCH_NAME;\r\n            return false;\r\n        }\r\n    }\r\n\r\n    public final void skipObject() {\r\n        skipObject(false);\r\n    }\r\n\r\n    public final void skipObject(boolean valid) {\r\n        boolean quote = false;\r\n        int braceCnt = 0;\r\n        int i = bp;\r\n        for (; i < text.length(); ++i) {\r\n            final char ch = text.charAt(i);\r\n            if (ch == '\\\\') {\r\n                if (i < len - 1) {\r\n                    ++i;\r\n                    continue;\r\n                } else {\r\n                    this.ch = ch;\r\n                    this.bp = i;\r\n                    throw new JSONException(\"illegal str, \" + info());\r\n                }\r\n            } else if (ch == '\"') {\r\n                quote = !quote;\r\n            } else if (ch == '{') {\r\n                if (quote) {\r\n                    continue;\r\n                }\r\n                braceCnt++;\r\n            } else if (ch == '}') {\r\n                if (quote) {\r\n                    continue;\r\n                } else {\r\n                    braceCnt--;\r\n                }\r\n                if (braceCnt == -1) {\r\n                    this.bp = i + 1;\r\n                    if (this.bp == text.length()) {\r\n                        this.ch = EOI;\r\n                        this.token = JSONToken.EOF;\r\n                        return;\r\n                    }\r\n                    this.ch = text.charAt(this.bp);\r\n                    if (this.ch == ',') {\r\n                        token = JSONToken.COMMA;\r\n                        int index = ++bp;\r\n                        this.ch = (index >= text.length() //\r\n                                ? EOI //\r\n                                : text.charAt(index));\r\n                        return;\r\n                    } else if (this.ch == '}') {\r\n                        token = JSONToken.RBRACE;\r\n                        next();\r\n                        return;\r\n                    } else if (this.ch == ']') {\r\n                        token = JSONToken.RBRACKET;\r\n                        next();\r\n                        return;\r\n                    } else {\r\n                        nextToken(JSONToken.COMMA);\r\n                    }\r\n                    return;\r\n                }\r\n            }\r\n        }\r\n\r\n        for (int j = 0; j < bp; j++) {\r\n            if (j < text.length() && text.charAt(j) == ' ') {\r\n                i++;\r\n            }\r\n        }\r\n\r\n        if (i == text.length()) {\r\n            throw new JSONException(\"illegal str, \" + info());\r\n        }\r\n    }\r\n\r\n    public final void skipArray() {\r\n        skipArray(false);\r\n    }\r\n\r\n    public final void skipArray(boolean valid) {\r\n        boolean quote = false;\r\n        int bracketCnt = 0;\r\n        int i = bp;\r\n        for (; i < text.length(); ++i) {\r\n            char ch = text.charAt(i);\r\n            if (ch == '\\\\') {\r\n                if (i < len - 1) {\r\n                    ++i;\r\n                    continue;\r\n                } else {\r\n                    this.ch = ch;\r\n                    this.bp = i;\r\n                    throw new JSONException(\"illegal str, \" + info());\r\n                }\r\n            } else if (ch == '\"') {\r\n                quote = !quote;\r\n            } else if (ch == '[') {\r\n                if (quote) {\r\n                    continue;\r\n                }\r\n                bracketCnt++;\r\n            } else if (ch == '{' && valid) {\r\n                {\r\n                    int index = ++bp;\r\n                    this.ch = (index >= text.length() //\r\n                            ? EOI //\r\n                            : text.charAt(index));\r\n                }\r\n\r\n                skipObject(valid);\r\n            } else if (ch == ']') {\r\n                if (quote) {\r\n                    continue;\r\n                } else {\r\n                    bracketCnt--;\r\n                }\r\n                if (bracketCnt == -1) {\r\n                    this.bp = i + 1;\r\n                    if (this.bp == text.length()) {\r\n                        this.ch = EOI;\r\n                        token = JSONToken.EOF;\r\n                        return;\r\n                    }\r\n                    this.ch = text.charAt(this.bp);\r\n                    nextToken(JSONToken.COMMA);\r\n                    return;\r\n                }\r\n            }\r\n        }\r\n\r\n        if (i == text.length()) {\r\n            throw new JSONException(\"illegal str, \" + info());\r\n        }\r\n    }\r\n\r\n    public final void skipString() {\r\n        if (ch == '\"') {\r\n            for (int i = bp + 1; i < text.length(); ++i) {\r\n                char c = text.charAt(i);\r\n                if (c == '\\\\') {\r\n                    if (i < len - 1) {\r\n                        ++i;\r\n                        continue;\r\n                    }\r\n                } else if (c == '\"') {\r\n                    this.ch = text.charAt(bp = i + 1);\r\n                    return;\r\n                }\r\n            }\r\n            throw new JSONException(\"unclosed str\");\r\n        } else {\r\n            throw new UnsupportedOperationException();\r\n        }\r\n    }\r\n\r\n    public boolean seekArrayToItem(int index) {\r\n        if (index < 0) {\r\n            throw new IllegalArgumentException(\"index must > 0, but \" + index);\r\n        }\r\n\r\n        if (token == JSONToken.EOF) {\r\n            return false;\r\n        }\r\n\r\n        if (token != JSONToken.LBRACKET) {\r\n            throw new UnsupportedOperationException();\r\n        }\r\n//        nextToken();\r\n\r\n        for (int i = 0; i < index; ++i) {\r\n            skipWhitespace();\r\n            if (ch == '\"' || ch == '\\'') {\r\n                skipString();\r\n                if (ch == ',') {\r\n                    next();\r\n                    continue;\r\n                } else if (ch == ']') {\r\n                    next();\r\n                    nextToken(JSONToken.COMMA);\r\n                    return false;\r\n                } else {\r\n                    throw new JSONException(\"illegal json.\");\r\n                }\r\n            } else if (ch == '{') {\r\n                next();\r\n                token = JSONToken.LBRACE;\r\n                skipObject(false);\r\n            } else if (ch == '[') {\r\n                next();\r\n                token = JSONToken.LBRACKET;\r\n                skipArray(false);\r\n            } else {\r\n                boolean match = false;\r\n                for (int j = bp + 1; j < text.length(); ++j) {\r\n                    char c = text.charAt(j);\r\n                    if (c == ',') {\r\n                        match = true;\r\n                        bp = j + 1;\r\n                        ch = charAt(bp);\r\n                        break;\r\n                    } else if (c == ']') {\r\n                        bp = j + 1;\r\n                        ch = charAt(bp);\r\n                        nextToken();\r\n                        return false;\r\n                    }\r\n                }\r\n\r\n                if (!match) {\r\n                    throw new JSONException(\"illegal json.\");\r\n                }\r\n\r\n                continue;\r\n            }\r\n\r\n            if (token == JSONToken.COMMA) {\r\n                continue;\r\n            } else if (token == JSONToken.RBRACKET) {\r\n                return false;\r\n            } else {\r\n                throw new UnsupportedOperationException();\r\n            }\r\n\r\n        }\r\n\r\n        nextToken();\r\n        return true;\r\n    }\r\n\r\n    public int seekObjectToField(long fieldNameHash, boolean deepScan) {\r\n        if (token == JSONToken.EOF) {\r\n            return JSONLexer.NOT_MATCH;\r\n        }\r\n\r\n        if (token == JSONToken.RBRACE || token == JSONToken.RBRACKET) {\r\n            nextToken();\r\n            return JSONLexer.NOT_MATCH;\r\n        }\r\n\r\n        if (token != JSONToken.LBRACE && token != JSONToken.COMMA) {\r\n            throw new UnsupportedOperationException(JSONToken.name(token));\r\n        }\r\n\r\n        for (;;) {\r\n            if (ch == '}') {\r\n                next();\r\n                nextToken();\r\n                return JSONLexer.NOT_MATCH;\r\n            }\r\n            if (ch == EOI) {\r\n                return JSONLexer.NOT_MATCH;\r\n            }\r\n\r\n            if (ch != '\"') {\r\n                skipWhitespace();\r\n            }\r\n\r\n            long hash;\r\n            if (ch == '\"') {\r\n                hash = fnv1a_64_magic_hashcode;\r\n\r\n                for (int i = bp + 1; i < text.length(); ++i) {\r\n                    char c = text.charAt(i);\r\n                    if (c == '\\\\') {\r\n                        ++i;\r\n                        if (i == text.length()) {\r\n                            throw new JSONException(\"unclosed str, \" + info());\r\n                        }\r\n                        c = text.charAt(i);\r\n                    }\r\n\r\n                    if (c == '\"') {\r\n                        bp = i + 1;\r\n                        ch = (bp >= text.length() //\r\n                                ? EOI //\r\n                                : text.charAt(bp));\r\n                        break;\r\n                    }\r\n\r\n                    hash ^= c;\r\n                    hash *= fnv1a_64_magic_prime;\r\n                }\r\n            } else {\r\n                throw new UnsupportedOperationException();\r\n            }\r\n\r\n            if (hash == fieldNameHash) {\r\n                if (ch != ':') {\r\n                    skipWhitespace();\r\n                }\r\n                if (ch == ':') {\r\n                    {\r\n                        int index = ++bp;\r\n                        ch = (index >= text.length() //\r\n                                ? EOI //\r\n                                : text.charAt(index));\r\n                    }\r\n                    if (ch == ',') {\r\n                        {\r\n                            int index = ++bp;\r\n                            ch = (index >= text.length() //\r\n                                    ? EOI //\r\n                                    : text.charAt(index));\r\n                        }\r\n                        token = JSONToken.COMMA;\r\n                    } else if (ch == ']') {\r\n                        {\r\n                            int index = ++bp;\r\n                            ch = (index >= text.length() //\r\n                                    ? EOI //\r\n                                    : text.charAt(index));\r\n                        }\r\n                        token = JSONToken.RBRACKET;\r\n                    } else if (ch == '}') {\r\n                        {\r\n                            int index = ++bp;\r\n                            ch = (index >= text.length() //\r\n                                    ? EOI //\r\n                                    : text.charAt(index));\r\n                        }\r\n                        token = JSONToken.RBRACE;\r\n                    } else if (ch >= '0' && ch <= '9') {\r\n                        sp = 0;\r\n                        pos = bp;\r\n                        scanNumber();\r\n                    } else {\r\n                        nextToken(JSONToken.LITERAL_INT);\r\n                    }\r\n                }\r\n                return VALUE;\r\n            }\r\n\r\n            if (ch != ':') {\r\n                skipWhitespace();\r\n            }\r\n\r\n            if (ch == ':') {\r\n                int index = ++bp;\r\n                ch = (index >= text.length() //\r\n                        ? EOI //\r\n                        : text.charAt(index));\r\n            } else {\r\n                throw new JSONException(\"illegal json, \" + info());\r\n            }\r\n\r\n            if (ch != '\"'\r\n                    && ch != '\\''\r\n                    && ch != '{'\r\n                    && ch != '['\r\n                    && ch != '0'\r\n                    && ch != '1'\r\n                    && ch != '2'\r\n                    && ch != '3'\r\n                    && ch != '4'\r\n                    && ch != '5'\r\n                    && ch != '6'\r\n                    && ch != '7'\r\n                    && ch != '8'\r\n                    && ch != '9'\r\n                    && ch != '+'\r\n                    && ch != '-') {\r\n                skipWhitespace();\r\n            }\r\n\r\n            // skip fieldValues\r\n            if (ch == '-' || ch == '+' || (ch >= '0' && ch <= '9')) {\r\n                next();\r\n                while (ch >= '0' && ch <= '9') {\r\n                    next();\r\n                }\r\n\r\n                // scale\r\n                if (ch == '.') {\r\n                    next();\r\n                    while (ch >= '0' && ch <= '9') {\r\n                        next();\r\n                    }\r\n                }\r\n\r\n                // exp\r\n                if (ch == 'E' || ch == 'e') {\r\n                    next();\r\n                    if (ch == '-' || ch == '+') {\r\n                        next();\r\n                    }\r\n                    while (ch >= '0' && ch <= '9') {\r\n                        next();\r\n                    }\r\n                }\r\n\r\n                if (ch != ',') {\r\n                    skipWhitespace();\r\n                }\r\n                if (ch == ',') {\r\n                    next();\r\n                }\r\n            } else if (ch == '\"') {\r\n                skipString();\r\n\r\n                if (ch != ',' && ch != '}') {\r\n                    skipWhitespace();\r\n                }\r\n\r\n                if (ch == ',') {\r\n                    next();\r\n                }\r\n            } else if (ch == 't') {\r\n                next();\r\n                if (ch == 'r') {\r\n                    next();\r\n                    if (ch == 'u') {\r\n                        next();\r\n                        if (ch == 'e') {\r\n                            next();\r\n                        }\r\n                    }\r\n                }\r\n\r\n                if (ch != ',' && ch != '}') {\r\n                    skipWhitespace();\r\n                }\r\n\r\n                if (ch == ',') {\r\n                    next();\r\n                }\r\n            } else if (ch == 'n') {\r\n                next();\r\n                if (ch == 'u') {\r\n                    next();\r\n                    if (ch == 'l') {\r\n                        next();\r\n                        if (ch == 'l') {\r\n                            next();\r\n                        }\r\n                    }\r\n                }\r\n\r\n                if (ch != ',' && ch != '}') {\r\n                    skipWhitespace();\r\n                }\r\n\r\n                if (ch == ',') {\r\n                    next();\r\n                }\r\n            } else if (ch == 'f') {\r\n                next();\r\n                if (ch == 'a') {\r\n                    next();\r\n                    if (ch == 'l') {\r\n                        next();\r\n                        if (ch == 's') {\r\n                            next();\r\n                            if (ch == 'e') {\r\n                                next();\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n\r\n                if (ch != ',' && ch != '}') {\r\n                    skipWhitespace();\r\n                }\r\n\r\n                if (ch == ',') {\r\n                    next();\r\n                }\r\n            } else if (ch == '{') {\r\n                {\r\n                    int index = ++bp;\r\n                    ch = (index >= text.length() //\r\n                            ? EOI //\r\n                            : text.charAt(index));\r\n                }\r\n                if (deepScan) {\r\n                    token = JSONToken.LBRACE;\r\n                    return OBJECT;\r\n                }\r\n\r\n                skipObject(false);\r\n                if (token == JSONToken.RBRACE) {\r\n                    return JSONLexer.NOT_MATCH;\r\n                }\r\n            } else if (ch == '[') {\r\n                next();\r\n                if (deepScan) {\r\n                    token = JSONToken.LBRACKET;\r\n                    return ARRAY;\r\n                }\r\n                skipArray(false);\r\n                if (token == JSONToken.RBRACE) {\r\n                    return JSONLexer.NOT_MATCH;\r\n                }\r\n            } else {\r\n                throw new UnsupportedOperationException();\r\n            }\r\n        }\r\n    }\r\n\r\n    public int seekObjectToField(long[] fieldNameHash) {\r\n        if (token != JSONToken.LBRACE && token != JSONToken.COMMA) {\r\n            throw new UnsupportedOperationException();\r\n        }\r\n\r\n        for (;;) {\r\n            if (ch == '}') {\r\n                next();\r\n                nextToken();\r\n                this.matchStat = JSONLexer.NOT_MATCH;\r\n                return -1;\r\n            }\r\n            if (ch == EOI) {\r\n                this.matchStat = JSONLexer.NOT_MATCH;\r\n                return -1;\r\n            }\r\n\r\n            if (ch != '\"') {\r\n                skipWhitespace();\r\n            }\r\n\r\n            long hash;\r\n            if (ch == '\"') {\r\n                hash = fnv1a_64_magic_hashcode;\r\n\r\n                for (int i = bp + 1; i < text.length(); ++i) {\r\n                    char c = text.charAt(i);\r\n                    if (c == '\\\\') {\r\n                        ++i;\r\n                        if (i == text.length()) {\r\n                            throw new JSONException(\"unclosed str, \" + info());\r\n                        }\r\n                        c = text.charAt(i);\r\n                    }\r\n\r\n                    if (c == '\"') {\r\n                        bp = i + 1;\r\n                        ch = (bp >= text.length() //\r\n                                ? EOI //\r\n                                : text.charAt(bp));\r\n                        break;\r\n                    }\r\n\r\n                    hash ^= c;\r\n                    hash *= fnv1a_64_magic_prime;\r\n                }\r\n            } else {\r\n                throw new UnsupportedOperationException();\r\n            }\r\n\r\n            int matchIndex = -1;\r\n            for (int i = 0; i < fieldNameHash.length; i++) {\r\n                if (hash == fieldNameHash[i]) {\r\n                    matchIndex = i;\r\n                    break;\r\n                }\r\n            }\r\n\r\n            if (matchIndex != -1) {\r\n                if (ch != ':') {\r\n                    skipWhitespace();\r\n                }\r\n                if (ch == ':') {\r\n                    {\r\n                        int index = ++bp;\r\n                        ch = (index >= text.length() //\r\n                                ? EOI //\r\n                                : text.charAt(index));\r\n                    }\r\n                    if (ch == ',') {\r\n                        {\r\n                            int index = ++bp;\r\n                            ch = (index >= text.length() //\r\n                                    ? EOI //\r\n                                    : text.charAt(index));\r\n                        }\r\n                        token = JSONToken.COMMA;\r\n                    } else if (ch == ']') {\r\n                        {\r\n                            int index = ++bp;\r\n                            ch = (index >= text.length() //\r\n                                    ? EOI //\r\n                                    : text.charAt(index));\r\n                        }\r\n                        token = JSONToken.RBRACKET;\r\n                    } else if (ch == '}') {\r\n                        {\r\n                            int index = ++bp;\r\n                            ch = (index >= text.length() //\r\n                                    ? EOI //\r\n                                    : text.charAt(index));\r\n                        }\r\n                        token = JSONToken.RBRACE;\r\n                    } else if (ch >= '0' && ch <= '9') {\r\n                        sp = 0;\r\n                        pos = bp;\r\n                        scanNumber();\r\n                    } else {\r\n                        nextToken(JSONToken.LITERAL_INT);\r\n                    }\r\n                }\r\n\r\n                matchStat = VALUE;\r\n                return matchIndex;\r\n            }\r\n\r\n            if (ch != ':') {\r\n                skipWhitespace();\r\n            }\r\n\r\n            if (ch == ':') {\r\n                int index = ++bp;\r\n                ch = (index >= text.length() //\r\n                        ? EOI //\r\n                        : text.charAt(index));\r\n            } else {\r\n                throw new JSONException(\"illegal json, \" + info());\r\n            }\r\n\r\n            if (ch != '\"'\r\n                    && ch != '\\''\r\n                    && ch != '{'\r\n                    && ch != '['\r\n                    && ch != '0'\r\n                    && ch != '1'\r\n                    && ch != '2'\r\n                    && ch != '3'\r\n                    && ch != '4'\r\n                    && ch != '5'\r\n                    && ch != '6'\r\n                    && ch != '7'\r\n                    && ch != '8'\r\n                    && ch != '9'\r\n                    && ch != '+'\r\n                    && ch != '-') {\r\n                skipWhitespace();\r\n            }\r\n\r\n            // skip fieldValues\r\n            if (ch == '-' || ch == '+' || (ch >= '0' && ch <= '9')) {\r\n                next();\r\n                while (ch >= '0' && ch <= '9') {\r\n                    next();\r\n                }\r\n\r\n                // scale\r\n                if (ch == '.') {\r\n                    next();\r\n                    while (ch >= '0' && ch <= '9') {\r\n                        next();\r\n                    }\r\n                }\r\n\r\n                // exp\r\n                if (ch == 'E' || ch == 'e') {\r\n                    next();\r\n                    if (ch == '-' || ch == '+') {\r\n                        next();\r\n                    }\r\n                    while (ch >= '0' && ch <= '9') {\r\n                        next();\r\n                    }\r\n                }\r\n\r\n                if (ch != ',') {\r\n                    skipWhitespace();\r\n                }\r\n                if (ch == ',') {\r\n                    next();\r\n                }\r\n            } else if (ch == '\"') {\r\n                skipString();\r\n\r\n                if (ch != ',' && ch != '}') {\r\n                    skipWhitespace();\r\n                }\r\n\r\n                if (ch == ',') {\r\n                    next();\r\n                }\r\n            } else if (ch == '{') {\r\n                {\r\n                    int index = ++bp;\r\n                    ch = (index >= text.length() //\r\n                            ? EOI //\r\n                            : text.charAt(index));\r\n                }\r\n\r\n                skipObject(false);\r\n            } else if (ch == '[') {\r\n                next();\r\n\r\n                skipArray(false);\r\n            } else {\r\n                throw new UnsupportedOperationException();\r\n            }\r\n        }\r\n    }\r\n\r\n    public String scanTypeName(SymbolTable symbolTable) {\r\n        if (text.startsWith(\"\\\"@type\\\":\\\"\", bp)) {\r\n            int p = text.indexOf('\"', bp + 9);\r\n            if (p != -1) {\r\n                bp += 9;\r\n                int h = 0;\r\n                for (int i = bp; i < p; i++) {\r\n                    h = 31 * h + text.charAt(i);\r\n                }\r\n                String typeName = addSymbol(bp, p - bp, h, symbolTable);\r\n                char separator = text.charAt(p + 1);\r\n                if (separator != ',' && separator != ']') {\r\n                    return null;\r\n                }\r\n                bp = p + 2;\r\n                ch = text.charAt(bp);\r\n                return typeName;\r\n            }\r\n        }\r\n\r\n        return null;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/JSONToken.java",
    "content": "/*\r\n * Copyright 1999-2017 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.parser;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class JSONToken {\r\n\r\n    //\r\n    public final static int ERROR                = 1;\r\n    //\r\n    public final static int LITERAL_INT          = 2;\r\n    //\r\n    public final static int LITERAL_FLOAT        = 3;\r\n    //\r\n    public final static int LITERAL_STRING       = 4;\r\n    //\r\n    public final static int LITERAL_ISO8601_DATE = 5;\r\n\r\n    public final static int TRUE                 = 6;\r\n    //\r\n    public final static int FALSE                = 7;\r\n    //\r\n    public final static int NULL                 = 8;\r\n    //\r\n    public final static int NEW                  = 9;\r\n    //\r\n    public final static int LPAREN               = 10; // (\"(\"),\r\n    //\r\n    public final static int RPAREN               = 11; // (\")\"),\r\n    //\r\n    public final static int LBRACE               = 12; // (\"{\"),\r\n    //\r\n    public final static int RBRACE               = 13; // (\"}\"),\r\n    //\r\n    public final static int LBRACKET             = 14; // (\"[\"),\r\n    //\r\n    public final static int RBRACKET             = 15; // (\"]\"),\r\n    //\r\n    public final static int COMMA                = 16; // (\",\"),\r\n    //\r\n    public final static int COLON                = 17; // (\":\"),\r\n    //\r\n    public final static int IDENTIFIER           = 18;\r\n    //\r\n    public final static int FIELD_NAME           = 19;\r\n\r\n    public final static int EOF                  = 20;\r\n\r\n    public final static int SET                  = 21;\r\n    public final static int TREE_SET             = 22;\r\n    \r\n    public final static int UNDEFINED            = 23; // undefined\r\n\r\n    public final static int SEMI                 = 24;\r\n    public final static int DOT                  = 25;\r\n    public final static int HEX                  = 26;\r\n\r\n    public static String name(int value) {\r\n        switch (value) {\r\n            case ERROR:\r\n                return \"error\";\r\n            case LITERAL_INT:\r\n                return \"int\";\r\n            case LITERAL_FLOAT:\r\n                return \"float\";\r\n            case LITERAL_STRING:\r\n                return \"string\";\r\n            case LITERAL_ISO8601_DATE:\r\n                return \"iso8601\";\r\n            case TRUE:\r\n                return \"true\";\r\n            case FALSE:\r\n                return \"false\";\r\n            case NULL:\r\n                return \"null\";\r\n            case NEW:\r\n                return \"new\";\r\n            case LPAREN:\r\n                return \"(\";\r\n            case RPAREN:\r\n                return \")\";\r\n            case LBRACE:\r\n                return \"{\";\r\n            case RBRACE:\r\n                return \"}\";\r\n            case LBRACKET:\r\n                return \"[\";\r\n            case RBRACKET:\r\n                return \"]\";\r\n            case COMMA:\r\n                return \",\";\r\n            case COLON:\r\n                return \":\";\r\n            case SEMI:\r\n                return \";\";\r\n            case DOT:\r\n                return \".\";\r\n            case IDENTIFIER:\r\n                return \"ident\";\r\n            case FIELD_NAME:\r\n                return \"fieldName\";\r\n            case EOF:\r\n                return \"EOF\";\r\n            case SET:\r\n                return \"Set\";\r\n            case TREE_SET:\r\n                return \"TreeSet\";\r\n            case UNDEFINED:\r\n                return \"undefined\";\r\n            case HEX:\r\n                return \"hex\";\r\n            default:\r\n                return \"Unknown\";\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/ParseContext.java",
    "content": "package com.alibaba.fastjson.parser;\n\nimport java.lang.reflect.Type;\n\npublic class ParseContext {\n\n    public Object             object;\n    public final ParseContext parent;\n    public final Object       fieldName;\n    public final int          level;\n    public Type               type;\n    private transient String  path;\n\n    public ParseContext(ParseContext parent, Object object, Object fieldName){\n        this.parent = parent;\n        this.object = object;\n        this.fieldName = fieldName;\n        this.level = parent == null ? 0 : parent.level + 1;\n    }\n\n    public String toString() {\n        if (path == null) {\n            if (parent == null) {\n                path = \"$\";\n            } else {\n                if (fieldName instanceof Integer) {\n                    path = parent.toString() + \"[\" + fieldName + \"]\";\n                } else {\n                    path = parent.toString() + \".\" + fieldName;\n                }\n            }\n        }\n\n        return path;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/ParserConfig.java",
    "content": "/*\n * Copyright 1999-2017 Alibaba Group.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage com.alibaba.fastjson.parser;\n\nimport java.io.*;\nimport java.lang.ref.SoftReference;\nimport java.lang.ref.WeakReference;\nimport java.lang.reflect.*;\nimport java.math.BigDecimal;\nimport java.math.BigInteger;\nimport java.net.Inet4Address;\nimport java.net.Inet6Address;\nimport java.net.InetAddress;\nimport java.net.InetSocketAddress;\nimport java.net.URI;\nimport java.net.URL;\nimport java.nio.charset.Charset;\nimport java.security.AccessControlException;\nimport java.text.SimpleDateFormat;\nimport java.util.*;\nimport java.util.concurrent.Callable;\nimport java.util.concurrent.ConcurrentHashMap;\nimport java.util.concurrent.ConcurrentMap;\nimport java.util.concurrent.CopyOnWriteArrayList;\nimport java.util.concurrent.atomic.AtomicBoolean;\nimport java.util.concurrent.atomic.AtomicInteger;\nimport java.util.concurrent.atomic.AtomicIntegerArray;\nimport java.util.concurrent.atomic.AtomicLong;\nimport java.util.concurrent.atomic.AtomicLongArray;\nimport java.util.concurrent.atomic.AtomicReference;\nimport java.util.regex.Pattern;\n\nimport com.alibaba.fastjson.*;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.asm.ClassReader;\nimport com.alibaba.fastjson.asm.TypeCollector;\nimport com.alibaba.fastjson.parser.deserializer.*;\nimport com.alibaba.fastjson.serializer.*;\nimport com.alibaba.fastjson.spi.Module;\nimport com.alibaba.fastjson.support.moneta.MonetaCodec;\nimport com.alibaba.fastjson.util.*;\nimport com.alibaba.fastjson.util.IdentityHashMap;\nimport com.alibaba.fastjson.util.ServiceLoader;\n\nimport javax.xml.datatype.XMLGregorianCalendar;\n\nimport static com.alibaba.fastjson.util.TypeUtils.fnv1a_64_magic_hashcode;\nimport static com.alibaba.fastjson.util.TypeUtils.fnv1a_64_magic_prime;\n\n/**\n * @author wenshao[szujobs@hotmail.com]\n */\npublic class ParserConfig {\n\n    public static final String    DENY_PROPERTY_INTERNAL    = \"fastjson.parser.deny.internal\";\n    public static final String    DENY_PROPERTY             = \"fastjson.parser.deny\";\n    public static final String    AUTOTYPE_ACCEPT           = \"fastjson.parser.autoTypeAccept\";\n    public static final String    AUTOTYPE_SUPPORT_PROPERTY = \"fastjson.parser.autoTypeSupport\";\n    public static final String    SAFE_MODE_PROPERTY        = \"fastjson.parser.safeMode\";\n\n    public static  final String[] DENYS_INTERNAL;\n    public static  final String[] DENYS;\n    private static final String[] AUTO_TYPE_ACCEPT_LIST;\n    public static  final boolean  AUTO_SUPPORT;\n    public static  final boolean  SAFE_MODE;\n    private static final long[]   INTERNAL_WHITELIST_HASHCODES;\n\n    static  {\n        {\n            String property = IOUtils.getStringProperty(DENY_PROPERTY_INTERNAL);\n            DENYS_INTERNAL = splitItemsFormProperty(property);\n        }\n        {\n            String property = IOUtils.getStringProperty(DENY_PROPERTY);\n            DENYS = splitItemsFormProperty(property);\n        }\n        {\n            String property = IOUtils.getStringProperty(AUTOTYPE_SUPPORT_PROPERTY);\n            AUTO_SUPPORT = \"true\".equals(property);\n        }\n        {\n            String property = IOUtils.getStringProperty(SAFE_MODE_PROPERTY);\n            SAFE_MODE = \"true\".equals(property);\n        }\n        {\n            String property = IOUtils.getStringProperty(AUTOTYPE_ACCEPT);\n            String[] items = splitItemsFormProperty(property);\n            if (items == null) {\n                items = new String[0];\n            }\n            AUTO_TYPE_ACCEPT_LIST = items;\n        }\n\n        INTERNAL_WHITELIST_HASHCODES = new long[] {\n                0x9F2E20FB6049A371L,\n                0xA8AAA929446FFCE4L,\n                0xD45D6F8C9017FAL,\n                0x64DC636F343516DCL\n        };\n    }\n\n    public static ParserConfig getGlobalInstance() {\n        return global;\n    }\n    public static ParserConfig                              global                = new ParserConfig();\n\n    private final IdentityHashMap<Type, ObjectDeserializer> deserializers         = new IdentityHashMap<Type, ObjectDeserializer>();\n    private final IdentityHashMap<Type, IdentityHashMap<Type, ObjectDeserializer>> mixInDeserializers = new IdentityHashMap<Type, IdentityHashMap<Type, ObjectDeserializer>>(16);\n    private final ConcurrentMap<String,Class<?>>            typeMapping           = new ConcurrentHashMap<String,Class<?>>(16, 0.75f, 1);\n\n    private boolean                                         asmEnable             = !ASMUtils.IS_ANDROID;\n\n    public final SymbolTable                                symbolTable           = new SymbolTable(4096);\n\n    public PropertyNamingStrategy                           propertyNamingStrategy;\n\n    protected ClassLoader                                   defaultClassLoader;\n\n    protected ASMDeserializerFactory                        asmFactory;\n\n    private static boolean                                  awtError              = false;\n    private static boolean                                  jdk8Error             = false;\n    private static boolean                                  jodaError             = false;\n    private static boolean                                  guavaError            = false;\n\n    private boolean                                         autoTypeSupport       = AUTO_SUPPORT;\n    private long[]                                          internalDenyHashCodes;\n    private long[]                                          denyHashCodes;\n    private long[]                                          acceptHashCodes;\n\n\n    public final boolean                                    fieldBased;\n    private boolean                                         jacksonCompatible     = false;\n\n    public boolean                                          compatibleWithJavaBean = TypeUtils.compatibleWithJavaBean;\n    private List<Module>                                    modules                = new ArrayList<Module>();\n    private volatile List<AutoTypeCheckHandler>             autoTypeCheckHandlers;\n    private boolean                                         safeMode               = SAFE_MODE;\n\n    {\n        denyHashCodes = new long[]{\n                0x80D0C70BCC2FEA02L,\n                0x868385095A22725FL,\n                0x86FC2BF9BEAF7AEFL,\n                0x87F52A1B07EA33A6L,\n                0x8872F29FD0B0B7A7L,\n                0x8BAAEE8F9BF77FA7L,\n                0x8EADD40CB2A94443L,\n                0x8F75F9FA0DF03F80L,\n                0x9172A53F157930AFL,\n                0x92122D710E364FB8L,\n                0x941866E73BEFF4C9L,\n                0x94305C26580F73C5L,\n                0x9437792831DF7D3FL,\n                0xA123A62F93178B20L,\n                0xA85882CE1044C450L,\n                0xAA3DAFFDB10C4937L,\n                0xAAA9E6B7C1E1C6A7L,\n                0xAAAA0826487A3737L,\n                0xAB82562F53E6E48FL,\n                0xAC6262F52C98AA39L,\n                0xAD937A449831E8A0L,\n                0xAE50DA1FAD60A096L,\n                0xAFF6FF23388E225AL,\n                0xAFFF4C95B99A334DL,\n                0xB40F341C746EC94FL,\n                0xB7E8ED757F5D13A2L,\n                0xB98B6B5396932FE9L,\n                0xBCDD9DC12766F0CEL,\n                0xBCE0DEE34E726499L,\n                0xBE4F13E96A6796D0L,\n                0xBEBA72FB1CCBA426L,\n                0xC00BE1DEBAF2808BL,\n                0xC1086AFAE32E6258L,\n                0xC2664D0958ECFE4CL,\n                0xC41FF7C9C87C7C05L,\n                0xC664B363BACA050AL,\n                0xC7599EBFE3E72406L,\n                0xC8D49E5601E661A9L,\n                0xC8F04B3A28909935L,\n                0xC963695082FD728EL,\n                0xCBF29CE484222325L,\n                0xD1EFCDF4B3316D34L,\n                0xD54B91CC77B239EDL,\n                0xD59EE91F0B09EA01L,\n                0xD66F68AB92E7FEF5L,\n                0xD8CA3D595E982BACL,\n                0xDCD8D615A6449E3EL,\n                0xDE23A0809A8B9BD6L,\n                0xDEFC208F237D4104L,\n                0xDF2DDFF310CDB375L,\n                0xE09AE4604842582FL,\n                0xE1919804D5BF468FL,\n                0xE2EB3AC7E56C467EL,\n                0xE603D6A51FAD692BL,\n                0xE704FD19052B2A34L,\n                0xE9184BE55B1D962AL,\n                0xE9F20BAD25F60807L,\n                0xED13653CB45C4BEDL,\n                0xF2983D099D29B477L,\n                0xF3702A4A5490B8E8L,\n                0xF474E44518F26736L,\n                0xF4D93F4FB3E3D991L,\n                0xF5D77DCF8E4D71E6L,\n                0xF6C0340E73A36A69L,\n                0xF7E96E74DFA58DBCL,\n                0xFC773AE20C827691L,\n                0xFCF3E78644B98BD8L,\n                0xFD5BFC610056D720L,\n                0xFFA15BF021F1E37CL,\n                0xFFDD1A80F1ED3405L,\n                0x10E067CD55C5E5L,\n                0x761619136CC13EL,\n                0x22BAA234C5BFB8AL,\n                0x3085068CB7201B8L,\n                0x45B11BC78A3ABA3L,\n                0x55CFCA0F2281C07L,\n                0xA555C74FE3A5155L,\n                0xB6E292FA5955ADEL,\n                0xBEF8514D0B79293L,\n                0xEE6511B66FD5EF0L,\n                0x100150A253996624L,\n                0x10B2BDCA849D9B3EL,\n                0x10DBC48446E0DAE5L,\n                0x119B5B1F10210AFCL,\n                0x144277B467723158L,\n                0x14DB2E6FEAD04AF0L,\n                0x154B6CB22D294CFAL,\n                0x17924CCA5227622AL,\n                0x193B2697EAAED41AL,\n                0x1CD6F11C6A358BB7L,\n                0x1E0A8C3358FF3DAEL,\n                0x24652CE717E713BBL,\n                0x24D2F6048FEF4E49L,\n                0x24EC99D5E7DC5571L,\n                0x25E962F1C28F71A2L,\n                0x275D0732B877AF29L,\n                0x28AC82E44E933606L,\n                0x2A71CE2CC40A710CL,\n                0x2AD1CE3A112F015DL,\n                0x2ADFEFBBFE29D931L,\n                0x2B3A37467A344CDFL,\n                0x2B6DD8B3229D6837L,\n                0x2D308DBBC851B0D8L,\n                0x2FE950D3EA52AE0DL,\n                0x313BB4ABD8D4554CL,\n                0x327C8ED7C8706905L,\n                0x332F0B5369A18310L,\n                0x339A3E0B6BEEBEE9L,\n                0x33C64B921F523F2FL,\n                0x33E7F3E02571B153L,\n                0x34A81EE78429FDF1L,\n                0x37317698DCFCE894L,\n                0x378307CB0111E878L,\n                0x3826F4B2380C8B9BL,\n                0x398F942E01920CF0L,\n                0x3A31412DBB05C7FFL,\n                0x3A7EE0635EB2BC33L,\n                0x3ADBA40367F73264L,\n                0x3B0B51ECBF6DB221L,\n                0x3BF14094A524F0E2L,\n                0x42D11A560FC9FBA9L,\n                0x43320DC9D2AE0892L,\n                0x440E89208F445FB9L,\n                0x46C808A4B5841F57L,\n                0x470FD3A18BB39414L,\n                0x49312BDAFB0077D9L,\n                0x4A3797B30328202CL,\n                0x4BA3E254E758D70DL,\n                0x4BF881E49D37F530L,\n                0x4CF54EEC05E3E818L,\n                0x4DA972745FEB30C1L,\n                0x4EF08C90FF16C675L,\n                0x4FD10DDC6D13821FL,\n                0x521B4F573376DF4AL,\n                0x527DB6B46CE3BCBCL,\n                0x535E552D6F9700C1L,\n                0x54855E265FE1DAD5L,\n                0x5728504A6D454FFCL,\n                0x599B5C1213A099ACL,\n                0x5A5BD85C072E5EFEL,\n                0x5AB0CB3071AB40D1L,\n                0x5B6149820275EA42L,\n                0x5D74D3E5B9370476L,\n                0x5D92E6DDDE40ED84L,\n                0x5E61093EF8CDDDBBL,\n                0x5F215622FB630753L,\n                0x61C5BDD721385107L,\n                0x62DB241274397C34L,\n                0x636ECCA2A131B235L,\n                0x63A220E60A17C7B9L,\n                0x647AB0224E149EBEL,\n                0x65F81B84C1D920CDL,\n                0x665C53C311193973L,\n                0x6749835432E0F0D2L,\n                0x69B6E0175084B377L,\n                0x6A47501EBB2AFDB2L,\n                0x6FCABF6FA54CAFFFL,\n                0x6FE92D83FC0A4628L,\n                0x746BD4A53EC195FBL,\n                0x74B50BB9260E31FFL,\n                0x75CC60F5871D0FD3L,\n                0x767A586A5107FEEFL,\n                0x78E5935826671397L,\n                0x793ADDDED7A967F5L,\n                0x7AA7EE3627A19CF3L,\n                0x7AFA070241B8CC4BL,\n                0x7ED9311D28BF1A65L,\n                0x7ED9481D28BF417AL,\n                0x7EE6C477DA20BBE3L\n        };\n\n        long[] hashCodes = new long[AUTO_TYPE_ACCEPT_LIST.length];\n        for (int i = 0; i < AUTO_TYPE_ACCEPT_LIST.length; i++) {\n            hashCodes[i] = TypeUtils.fnv1a_64(AUTO_TYPE_ACCEPT_LIST[i]);\n        }\n\n        Arrays.sort(hashCodes);\n        acceptHashCodes = hashCodes;\n    }\n\n    public ParserConfig(){\n        this(false);\n    }\n\n    public ParserConfig(boolean fieldBase){\n        this(null, null, fieldBase);\n    }\n\n    public ParserConfig(ClassLoader parentClassLoader){\n        this(null, parentClassLoader, false);\n    }\n\n    public ParserConfig(ASMDeserializerFactory asmFactory){\n        this(asmFactory, null, false);\n    }\n\n    private ParserConfig(ASMDeserializerFactory asmFactory, ClassLoader parentClassLoader, boolean fieldBased){\n        this.fieldBased = fieldBased;\n        if (asmFactory == null && !ASMUtils.IS_ANDROID) {\n            try {\n                if (parentClassLoader == null) {\n                    asmFactory = new ASMDeserializerFactory(new ASMClassLoader());\n                } else {\n                    asmFactory = new ASMDeserializerFactory(parentClassLoader);\n                }\n            } catch (ExceptionInInitializerError error) {\n                // skip\n            } catch (AccessControlException error) {\n                // skip\n            } catch (NoClassDefFoundError error) {\n                // skip\n            }\n        }\n\n        this.asmFactory = asmFactory;\n\n        if (asmFactory == null) {\n            asmEnable = false;\n        }\n\n        initDeserializers();\n\n        addItemsToDeny(DENYS);\n        addItemsToDeny0(DENYS_INTERNAL);\n        addItemsToAccept(AUTO_TYPE_ACCEPT_LIST);\n\n    }\n\n    private final Callable<Void> initDeserializersWithJavaSql = new Callable<Void>() {\n        public Void call() {\n            deserializers.put(java.sql.Timestamp.class, SqlDateDeserializer.instance_timestamp);\n            deserializers.put(java.sql.Date.class, SqlDateDeserializer.instance);\n            deserializers.put(java.sql.Time.class, TimeDeserializer.instance);\n            deserializers.put(java.util.Date.class, DateCodec.instance);\n            return null;\n        }\n    };\n\n    private void initDeserializers() {\n        deserializers.put(SimpleDateFormat.class, MiscCodec.instance);\n        deserializers.put(Calendar.class, CalendarCodec.instance);\n        deserializers.put(XMLGregorianCalendar.class, CalendarCodec.instance);\n\n        deserializers.put(JSONObject.class, MapDeserializer.instance);\n        deserializers.put(JSONArray.class, CollectionCodec.instance);\n\n        deserializers.put(Map.class, MapDeserializer.instance);\n        deserializers.put(HashMap.class, MapDeserializer.instance);\n        deserializers.put(LinkedHashMap.class, MapDeserializer.instance);\n        deserializers.put(TreeMap.class, MapDeserializer.instance);\n        deserializers.put(ConcurrentMap.class, MapDeserializer.instance);\n        deserializers.put(ConcurrentHashMap.class, MapDeserializer.instance);\n\n        deserializers.put(Collection.class, CollectionCodec.instance);\n        deserializers.put(List.class, CollectionCodec.instance);\n        deserializers.put(ArrayList.class, CollectionCodec.instance);\n\n        deserializers.put(Object.class, JavaObjectDeserializer.instance);\n        deserializers.put(String.class, StringCodec.instance);\n        deserializers.put(StringBuffer.class, StringCodec.instance);\n        deserializers.put(StringBuilder.class, StringCodec.instance);\n        deserializers.put(char.class, CharacterCodec.instance);\n        deserializers.put(Character.class, CharacterCodec.instance);\n        deserializers.put(byte.class, NumberDeserializer.instance);\n        deserializers.put(Byte.class, NumberDeserializer.instance);\n        deserializers.put(short.class, NumberDeserializer.instance);\n        deserializers.put(Short.class, NumberDeserializer.instance);\n        deserializers.put(int.class, IntegerCodec.instance);\n        deserializers.put(Integer.class, IntegerCodec.instance);\n        deserializers.put(long.class, LongCodec.instance);\n        deserializers.put(Long.class, LongCodec.instance);\n        deserializers.put(BigInteger.class, BigIntegerCodec.instance);\n        deserializers.put(BigDecimal.class, BigDecimalCodec.instance);\n        deserializers.put(float.class, FloatCodec.instance);\n        deserializers.put(Float.class, FloatCodec.instance);\n        deserializers.put(double.class, NumberDeserializer.instance);\n        deserializers.put(Double.class, NumberDeserializer.instance);\n        deserializers.put(boolean.class, BooleanCodec.instance);\n        deserializers.put(Boolean.class, BooleanCodec.instance);\n        deserializers.put(Class.class, MiscCodec.instance);\n        deserializers.put(char[].class, new CharArrayCodec());\n\n        deserializers.put(AtomicBoolean.class, BooleanCodec.instance);\n        deserializers.put(AtomicInteger.class, IntegerCodec.instance);\n        deserializers.put(AtomicLong.class, LongCodec.instance);\n        deserializers.put(AtomicReference.class, ReferenceCodec.instance);\n\n        deserializers.put(WeakReference.class, ReferenceCodec.instance);\n        deserializers.put(SoftReference.class, ReferenceCodec.instance);\n\n        deserializers.put(UUID.class, MiscCodec.instance);\n        deserializers.put(TimeZone.class, MiscCodec.instance);\n        deserializers.put(Locale.class, MiscCodec.instance);\n        deserializers.put(Currency.class, MiscCodec.instance);\n\n        deserializers.put(Inet4Address.class, MiscCodec.instance);\n        deserializers.put(Inet6Address.class, MiscCodec.instance);\n        deserializers.put(InetSocketAddress.class, MiscCodec.instance);\n        deserializers.put(File.class, MiscCodec.instance);\n        deserializers.put(URI.class, MiscCodec.instance);\n        deserializers.put(URL.class, MiscCodec.instance);\n        deserializers.put(Pattern.class, MiscCodec.instance);\n        deserializers.put(Charset.class, MiscCodec.instance);\n        deserializers.put(JSONPath.class, MiscCodec.instance);\n        deserializers.put(Number.class, NumberDeserializer.instance);\n        deserializers.put(AtomicIntegerArray.class, AtomicCodec.instance);\n        deserializers.put(AtomicLongArray.class, AtomicCodec.instance);\n        deserializers.put(StackTraceElement.class, StackTraceElementDeserializer.instance);\n\n        deserializers.put(Serializable.class, JavaObjectDeserializer.instance);\n        deserializers.put(Cloneable.class, JavaObjectDeserializer.instance);\n        deserializers.put(Comparable.class, JavaObjectDeserializer.instance);\n        deserializers.put(Closeable.class, JavaObjectDeserializer.instance);\n\n        deserializers.put(JSONPObject.class, new JSONPDeserializer());\n        ModuleUtil.callWhenHasJavaSql(initDeserializersWithJavaSql);\n    }\n\n    private static String[] splitItemsFormProperty(final String property ){\n        if (property != null && property.length() > 0) {\n            return property.split(\",\");\n        }\n        return null;\n    }\n\n    public void configFromPropety(Properties properties) {\n        {\n            String property = properties.getProperty(DENY_PROPERTY);\n            String[] items = splitItemsFormProperty(property);\n            addItemsToDeny(items);\n        }\n        {\n            String property = properties.getProperty(AUTOTYPE_ACCEPT);\n            String[] items = splitItemsFormProperty(property);\n            addItemsToAccept(items);\n        }\n        {\n            String property = properties.getProperty(AUTOTYPE_SUPPORT_PROPERTY);\n            if (\"true\".equals(property)) {\n                this.autoTypeSupport = true;\n            } else if (\"false\".equals(property)) {\n                this.autoTypeSupport = false;\n            }\n        }\n    }\n\n    private void addItemsToDeny0(final String[] items){\n        if (items == null){\n            return;\n        }\n\n        for (int i = 0; i < items.length; ++i) {\n            String item = items[i];\n            this.addDenyInternal(item);\n        }\n    }\n\n    private void addItemsToDeny(final String[] items){\n        if (items == null){\n            return;\n        }\n\n        for (int i = 0; i < items.length; ++i) {\n            String item = items[i];\n            this.addDeny(item);\n        }\n    }\n\n    private void addItemsToAccept(final String[] items){\n        if (items == null){\n            return;\n        }\n\n        for (int i = 0; i < items.length; ++i) {\n            String item = items[i];\n            this.addAccept(item);\n        }\n    }\n\n    /**\n     * @since 1.2.68\n     */\n    public boolean isSafeMode() {\n        return safeMode;\n    }\n\n    /**\n     * @since 1.2.68\n     */\n    public void setSafeMode(boolean safeMode) {\n        this.safeMode = safeMode;\n    }\n\n    public boolean isAutoTypeSupport() {\n        return autoTypeSupport;\n    }\n\n    public void setAutoTypeSupport(boolean autoTypeSupport) {\n        this.autoTypeSupport = autoTypeSupport;\n    }\n\n    public boolean isAsmEnable() {\n        return asmEnable;\n    }\n\n    public void setAsmEnable(boolean asmEnable) {\n        this.asmEnable = asmEnable;\n    }\n\n    /**\n     * @deprecated\n     */\n    public IdentityHashMap<Type, ObjectDeserializer> getDerializers() {\n        return deserializers;\n    }\n\n    public IdentityHashMap<Type, ObjectDeserializer> getDeserializers() {\n        return deserializers;\n    }\n\n    public ObjectDeserializer getDeserializer(Type type) {\n        ObjectDeserializer deserializer = get(type);\n        if (deserializer != null) {\n            return deserializer;\n        }\n\n        if (type instanceof Class<?>) {\n            return getDeserializer((Class<?>) type, type);\n        }\n\n        if (type instanceof ParameterizedType) {\n            Type rawType = ((ParameterizedType) type).getRawType();\n            if (rawType instanceof Class<?>) {\n                return getDeserializer((Class<?>) rawType, type);\n            } else {\n                return getDeserializer(rawType);\n            }\n        }\n\n        if (type instanceof WildcardType) {\n            WildcardType wildcardType = (WildcardType) type;\n            Type[] upperBounds = wildcardType.getUpperBounds();\n            if (upperBounds.length == 1) {\n                Type upperBoundType = upperBounds[0];\n                return getDeserializer(upperBoundType);\n            }\n        }\n\n        return JavaObjectDeserializer.instance;\n    }\n\n    public ObjectDeserializer getDeserializer(Class<?> clazz, Type type) {\n        ObjectDeserializer deserializer = get(type);\n        if (deserializer == null && type instanceof ParameterizedTypeImpl) {\n            Type innerType = TypeReference.intern((ParameterizedTypeImpl) type);\n            deserializer = get(innerType);\n        }\n\n        if (deserializer != null) {\n            return deserializer;\n        }\n\n        if (type == null) {\n            type = clazz;\n        }\n\n        deserializer = get(type);\n        if (deserializer != null) {\n            return deserializer;\n        }\n\n        {\n            JSONType annotation = TypeUtils.getAnnotation(clazz,JSONType.class);\n            if (annotation != null) {\n                Class<?> mappingTo = annotation.mappingTo();\n                if (mappingTo != Void.class) {\n                    return getDeserializer(mappingTo, mappingTo);\n                }\n            }\n        }\n\n        if (type instanceof WildcardType || type instanceof TypeVariable || type instanceof ParameterizedType) {\n            deserializer = get(clazz);\n        }\n\n        if (deserializer != null) {\n            return deserializer;\n        }\n\n        for (Module module : modules) {\n            deserializer = module.createDeserializer(this, clazz);\n            if (deserializer != null) {\n                putDeserializer(type, deserializer);\n                return deserializer;\n            }\n        }\n\n        String className = clazz.getName();\n        className = className.replace('$', '.');\n\n        if (className.startsWith(\"java.awt.\") //\n            && AwtCodec.support(clazz)) {\n            if (!awtError) {\n                String[] names = new String[] {\n                        \"java.awt.Point\",\n                        \"java.awt.Font\",\n                        \"java.awt.Rectangle\",\n                        \"java.awt.Color\"\n                };\n\n                try {\n                    for (String name : names) {\n                        if (name.equals(className)) {\n                            putDeserializer(Class.forName(name), deserializer = AwtCodec.instance);\n                            return deserializer;\n                        }\n                    }\n                } catch (Throwable e) {\n                    // skip\n                    awtError = true;\n                }\n\n                deserializer = AwtCodec.instance;\n            }\n        }\n\n        if (!jdk8Error) {\n            try {\n                if (className.startsWith(\"java.time.\")) {\n                    String[] names = new String[] {\n                            \"java.time.LocalDateTime\",\n                            \"java.time.LocalDate\",\n                            \"java.time.LocalTime\",\n                            \"java.time.ZonedDateTime\",\n                            \"java.time.OffsetDateTime\",\n                            \"java.time.OffsetTime\",\n                            \"java.time.ZoneOffset\",\n                            \"java.time.ZoneRegion\",\n                            \"java.time.ZoneId\",\n                            \"java.time.Period\",\n                            \"java.time.Duration\",\n                            \"java.time.Instant\"\n                    };\n\n                    for (String name : names) {\n                        if (name.equals(className)) {\n                            putDeserializer(Class.forName(name), deserializer = Jdk8DateCodec.instance);\n                            return deserializer;\n                        }\n                    }\n                } else if (className.startsWith(\"java.util.Optional\")) {\n                    String[] names = new String[] {\n                            \"java.util.Optional\",\n                            \"java.util.OptionalDouble\",\n                            \"java.util.OptionalInt\",\n                            \"java.util.OptionalLong\"\n                    };\n                    for (String name : names) {\n                        if (name.equals(className)) {\n                            putDeserializer(Class.forName(name), deserializer = OptionalCodec.instance);\n                            return deserializer;\n                        }\n                    }\n                }\n            } catch (Throwable e) {\n                // skip\n                jdk8Error = true;\n            }\n        }\n\n        if (!jodaError) {\n            try {\n                if (className.startsWith(\"org.joda.time.\")) {\n                    String[] names = new String[] {\n                            \"org.joda.time.DateTime\",\n                            \"org.joda.time.LocalDate\",\n                            \"org.joda.time.LocalDateTime\",\n                            \"org.joda.time.LocalTime\",\n                            \"org.joda.time.Instant\",\n                            \"org.joda.time.Period\",\n                            \"org.joda.time.Duration\",\n                            \"org.joda.time.DateTimeZone\",\n                            \"org.joda.time.format.DateTimeFormatter\"\n                    };\n\n                    for (String name : names) {\n                        if (name.equals(className)) {\n                            putDeserializer(Class.forName(name), deserializer = JodaCodec.instance);\n                            return deserializer;\n                        }\n                    }\n                }\n            } catch (Throwable e) {\n                // skip\n                jodaError = true;\n            }\n        }\n\n        if ((!guavaError) //\n                && className.startsWith(\"com.google.common.collect.\")) {\n            try {\n                String[] names = new String[] {\n                        \"com.google.common.collect.HashMultimap\",\n                        \"com.google.common.collect.LinkedListMultimap\",\n                        \"com.google.common.collect.LinkedHashMultimap\",\n                        \"com.google.common.collect.ArrayListMultimap\",\n                        \"com.google.common.collect.TreeMultimap\"\n                };\n\n                for (String name : names) {\n                    if (name.equals(className)) {\n                        putDeserializer(Class.forName(name), deserializer = GuavaCodec.instance);\n                        return deserializer;\n                    }\n                }\n            } catch (ClassNotFoundException e) {\n                // skip\n                guavaError = true;\n            }\n        }\n\n        if (className.equals(\"java.nio.ByteBuffer\")) {\n            putDeserializer(clazz, deserializer = ByteBufferCodec.instance);\n        }\n\n        if (className.equals(\"java.nio.file.Path\")) {\n            putDeserializer(clazz, deserializer = MiscCodec.instance);\n        }\n\n        if (clazz == Map.Entry.class) {\n            putDeserializer(clazz, deserializer = MiscCodec.instance);\n        }\n\n        if (className.equals(\"org.javamoney.moneta.Money\")) {\n            putDeserializer(clazz, deserializer = MonetaCodec.instance);\n        }\n\n        final ClassLoader classLoader = Thread.currentThread().getContextClassLoader();\n        try {\n            for (AutowiredObjectDeserializer autowired : ServiceLoader.load(AutowiredObjectDeserializer.class,\n                                                                            classLoader)) {\n                for (Type forType : autowired.getAutowiredFor()) {\n                    putDeserializer(forType, autowired);\n                }\n            }\n        } catch (Exception ex) {\n            // skip\n        }\n\n        if (deserializer == null) {\n            deserializer = get(type);\n        }\n\n        if (deserializer != null) {\n            return deserializer;\n        }\n\n        if (clazz.isEnum()) {\n            if (jacksonCompatible) {\n                Method[] methods = clazz.getMethods();\n                for (Method method : methods) {\n                    if (TypeUtils.isJacksonCreator(method)) {\n                        deserializer = createJavaBeanDeserializer(clazz, type);\n                        putDeserializer(type, deserializer);\n                        return deserializer;\n                    }\n                }\n            }\n\n            Class mixInType = (Class) JSON.getMixInAnnotations(clazz);\n\n            Class<?> deserClass = null;\n            JSONType jsonType = TypeUtils.getAnnotation(mixInType != null ? mixInType : clazz, JSONType.class);\n\n            if (jsonType != null) {\n                deserClass = jsonType.deserializer();\n                try {\n                    deserializer = (ObjectDeserializer) deserClass.newInstance();\n                    putDeserializer(clazz, deserializer);\n                    return deserializer;\n                } catch (Throwable error) {\n                    // skip\n                }\n            }\n\n            Method jsonCreatorMethod = null;\n            if (mixInType != null) {\n                Method mixedCreator = getEnumCreator(mixInType, clazz);\n                if (mixedCreator != null) {\n                    try {\n                        jsonCreatorMethod = clazz.getMethod(mixedCreator.getName(), mixedCreator.getParameterTypes());\n                    } catch (Exception e) {\n                        // skip\n                    }\n                }\n            } else {\n                jsonCreatorMethod = getEnumCreator(clazz, clazz);\n            }\n\n            if (jsonCreatorMethod != null) {\n                deserializer = new EnumCreatorDeserializer(jsonCreatorMethod);\n                putDeserializer(clazz, deserializer);\n                return deserializer;\n            }\n\n            deserializer = getEnumDeserializer(clazz);\n        } else if (clazz.isArray()) {\n            deserializer = ObjectArrayCodec.instance;\n        } else if (clazz == Set.class || clazz == HashSet.class || clazz == Collection.class || clazz == List.class\n                   || clazz == ArrayList.class) {\n            deserializer = CollectionCodec.instance;\n        } else if (Collection.class.isAssignableFrom(clazz)) {\n            deserializer = CollectionCodec.instance;\n        } else if (Map.class.isAssignableFrom(clazz)) {\n            deserializer = MapDeserializer.instance;\n        } else if (Throwable.class.isAssignableFrom(clazz)) {\n            deserializer = new ThrowableDeserializer(this, clazz);\n        } else if (PropertyProcessable.class.isAssignableFrom(clazz)) {\n            deserializer = new PropertyProcessableDeserializer((Class<PropertyProcessable>) clazz);\n        } else if (clazz == InetAddress.class) {\n            deserializer = MiscCodec.instance;\n        } else {\n            deserializer = createJavaBeanDeserializer(clazz, type);\n        }\n\n        putDeserializer(type, deserializer);\n\n        return deserializer;\n    }\n\n    private static Method getEnumCreator(Class clazz, Class enumClass) {\n        Method[] methods = clazz.getMethods();\n        Method jsonCreatorMethod = null;\n        for (Method method : methods) {\n            if (Modifier.isStatic(method.getModifiers())\n                    && method.getReturnType() == enumClass\n                    && method.getParameterTypes().length == 1\n            ) {\n                JSONCreator jsonCreator = method.getAnnotation(JSONCreator.class);\n                if (jsonCreator != null) {\n                    jsonCreatorMethod = method;\n                    break;\n                }\n            }\n        }\n\n        return jsonCreatorMethod;\n    }\n\n    /**\n     * 可以通过重写这个方法，定义自己的枚举反序列化实现\n     * @param clazz 转换的类型\n     * @return 返回一个枚举的反序列化实现\n     * @author zhu.xiaojie\n     * @time 2020-4-5\n     */\n    protected ObjectDeserializer getEnumDeserializer(Class<?> clazz){\n        return new EnumDeserializer(clazz);\n    }\n\n    /**\n     *\n     * @since 1.2.25\n     */\n    public void initJavaBeanDeserializers(Class<?>... classes) {\n        if (classes == null) {\n            return;\n        }\n\n        for (Class<?> type : classes) {\n            if (type == null) {\n                continue;\n            }\n            ObjectDeserializer deserializer = createJavaBeanDeserializer(type, type);\n            putDeserializer(type, deserializer);\n        }\n    }\n\n    public ObjectDeserializer createJavaBeanDeserializer(Class<?> clazz, Type type) {\n        boolean asmEnable = this.asmEnable & !this.fieldBased;\n        if (asmEnable) {\n            JSONType jsonType = TypeUtils.getAnnotation(clazz,JSONType.class);\n\n            if (jsonType != null) {\n                Class<?> deserializerClass = jsonType.deserializer();\n                if (deserializerClass != Void.class) {\n                    try {\n                        Object deseralizer = deserializerClass.newInstance();\n                        if (deseralizer instanceof ObjectDeserializer) {\n                            return (ObjectDeserializer) deseralizer;\n                        }\n                    } catch (Throwable e) {\n                        // skip\n                    }\n                }\n\n                asmEnable = jsonType.asm()\n                        && jsonType.parseFeatures().length == 0;\n            }\n\n            if (asmEnable) {\n                Class<?> superClass = JavaBeanInfo.getBuilderClass(clazz, jsonType);\n                if (superClass == null) {\n                    superClass = clazz;\n                }\n\n                for (;;) {\n                    if (!Modifier.isPublic(superClass.getModifiers())) {\n                        asmEnable = false;\n                        break;\n                    }\n\n                    superClass = superClass.getSuperclass();\n                    if (superClass == Object.class || superClass == null) {\n                        break;\n                    }\n                }\n            }\n        }\n\n        if (clazz.getTypeParameters().length != 0) {\n            asmEnable = false;\n        }\n\n        if (asmEnable && asmFactory != null && asmFactory.classLoader.isExternalClass(clazz)) {\n            asmEnable = false;\n        }\n\n        if (asmEnable) {\n            asmEnable = ASMUtils.checkName(clazz.getSimpleName());\n        }\n\n        if (asmEnable) {\n            if (clazz.isInterface()) {\n                asmEnable = false;\n            }\n            JavaBeanInfo beanInfo = JavaBeanInfo.build(clazz\n                    , type\n                    , propertyNamingStrategy\n                    ,false\n                    , TypeUtils.compatibleWithJavaBean\n                    , jacksonCompatible\n            );\n\n            if (asmEnable && beanInfo.fields.length > 200) {\n                asmEnable = false;\n            }\n\n            Constructor<?> defaultConstructor = beanInfo.defaultConstructor;\n            if (asmEnable && defaultConstructor == null && !clazz.isInterface()) {\n                asmEnable = false;\n            }\n\n            for (FieldInfo fieldInfo : beanInfo.fields) {\n                if (fieldInfo.getOnly) {\n                    asmEnable = false;\n                    break;\n                }\n\n                Class<?> fieldClass = fieldInfo.fieldClass;\n                if (!Modifier.isPublic(fieldClass.getModifiers())) {\n                    asmEnable = false;\n                    break;\n                }\n\n                if (fieldClass.isMemberClass() && !Modifier.isStatic(fieldClass.getModifiers())) {\n                    asmEnable = false;\n                    break;\n                }\n\n                if (fieldInfo.getMember() != null //\n                    && !ASMUtils.checkName(fieldInfo.getMember().getName())) {\n                    asmEnable = false;\n                    break;\n                }\n\n                JSONField annotation = fieldInfo.getAnnotation();\n                if (annotation != null //\n                    && ((!ASMUtils.checkName(annotation.name())) //\n                        || annotation.format().length() != 0 //\n                        || annotation.deserializeUsing() != Void.class //\n                        || annotation.parseFeatures().length != 0 //\n                        || annotation.unwrapped())\n                        || (fieldInfo.method != null && fieldInfo.method.getParameterTypes().length > 1)) {\n                    asmEnable = false;\n                    break;\n                }\n\n                if (fieldClass.isEnum()) { // EnumDeserializer\n                    ObjectDeserializer fieldDeser = this.getDeserializer(fieldClass);\n                    if (!(fieldDeser instanceof EnumDeserializer)) {\n                        asmEnable = false;\n                        break;\n                    }\n                }\n            }\n        }\n\n        if (asmEnable) {\n            if (clazz.isMemberClass() && !Modifier.isStatic(clazz.getModifiers())) {\n                asmEnable = false;\n            }\n        }\n\n        if (asmEnable) {\n            if (TypeUtils.isXmlField(clazz)) {\n                asmEnable = false;\n            }\n        }\n\n        if (!asmEnable) {\n            return new JavaBeanDeserializer(this, clazz, type);\n        }\n\n        JavaBeanInfo beanInfo = JavaBeanInfo.build(clazz, type, propertyNamingStrategy);\n        try {\n            return asmFactory.createJavaBeanDeserializer(this, beanInfo);\n            // } catch (VerifyError e) {\n            // e.printStackTrace();\n            // return new JavaBeanDeserializer(this, clazz, type);\n        } catch (NoSuchMethodException ex) {\n            return new JavaBeanDeserializer(this, clazz, type);\n        } catch (JSONException asmError) {\n            return new JavaBeanDeserializer(this, beanInfo);\n        } catch (Exception e) {\n            throw new JSONException(\"create asm deserializer error, \" + clazz.getName(), e);\n        }\n    }\n\n    public FieldDeserializer createFieldDeserializer(ParserConfig mapping, //\n                                                     JavaBeanInfo beanInfo, //\n                                                     FieldInfo fieldInfo) {\n        Class<?> clazz = beanInfo.clazz;\n        Class<?> fieldClass = fieldInfo.fieldClass;\n\n        Class<?> deserializeUsing = null;\n        JSONField annotation = fieldInfo.getAnnotation();\n        if (annotation != null) {\n            deserializeUsing = annotation.deserializeUsing();\n            if (deserializeUsing == Void.class) {\n                deserializeUsing = null;\n            }\n        }\n\n        if (deserializeUsing == null && (fieldClass == List.class || fieldClass == ArrayList.class)) {\n            return new ArrayListTypeFieldDeserializer(mapping, clazz, fieldInfo);\n        }\n\n        return new DefaultFieldDeserializer(mapping, clazz, fieldInfo);\n    }\n\n    public void putDeserializer(Type type, ObjectDeserializer deserializer) {\n        Type mixin = JSON.getMixInAnnotations(type);\n        if (mixin != null) {\n            IdentityHashMap<Type, ObjectDeserializer> mixInClasses = this.mixInDeserializers.get(type);\n            if (mixInClasses == null) {\n                //多线程下可能会重复创建，但不影响正确性\n                mixInClasses = new IdentityHashMap<Type, ObjectDeserializer>(4);\n                this.mixInDeserializers.put(type, mixInClasses);\n            }\n            mixInClasses.put(mixin, deserializer);\n        } else {\n            this.deserializers.put(type, deserializer);\n        }\n    }\n\n    public ObjectDeserializer get(Type type) {\n        Type mixin = JSON.getMixInAnnotations(type);\n        if (null == mixin) {\n            return this.deserializers.get(type);\n        }\n        IdentityHashMap<Type, ObjectDeserializer> mixInClasses = this.mixInDeserializers.get(type);\n        if (mixInClasses == null) {\n            return null;\n        }\n        return mixInClasses.get(mixin);\n    }\n\n    public ObjectDeserializer getDeserializer(FieldInfo fieldInfo) {\n        return getDeserializer(fieldInfo.fieldClass, fieldInfo.fieldType);\n    }\n\n    /**\n     * @deprecated  internal method, dont call\n     */\n    public boolean isPrimitive(Class<?> clazz) {\n        return isPrimitive2(clazz);\n    }\n\n    private static Function<Class<?>, Boolean> isPrimitiveFuncation = new Function<Class<?>, Boolean>() {\n        public Boolean apply(Class<?> clazz) {\n            return clazz == java.sql.Date.class //\n                    || clazz == java.sql.Time.class //\n                    || clazz == java.sql.Timestamp.class;\n        }\n    };\n\n    /**\n     * @deprecated  internal method, dont call\n     */\n    public static boolean isPrimitive2(final Class<?> clazz) {\n        Boolean primitive = clazz.isPrimitive() //\n                || clazz == Boolean.class //\n                || clazz == Character.class //\n                || clazz == Byte.class //\n                || clazz == Short.class //\n                || clazz == Integer.class //\n                || clazz == Long.class //\n                || clazz == Float.class //\n                || clazz == Double.class //\n                || clazz == BigInteger.class //\n                || clazz == BigDecimal.class //\n                || clazz == String.class //\n                || clazz == java.util.Date.class //\n                || clazz.isEnum() //\n                ;\n        if (!primitive) {\n            primitive = ModuleUtil.callWhenHasJavaSql(isPrimitiveFuncation, clazz);\n        }\n        return primitive != null ? primitive : false;\n    }\n\n    /**\n     * fieldName,field ，先生成fieldName的快照，减少之后的findField的轮询\n     *\n     * @param clazz\n     * @param fieldCacheMap :map&lt;fieldName ,Field&gt;\n     */\n    public static void  parserAllFieldToCache(Class<?> clazz,Map</**fieldName*/String , Field> fieldCacheMap){\n        Field[] fields = clazz.getDeclaredFields();\n        for (Field field : fields) {\n            String fieldName = field.getName();\n            if (!fieldCacheMap.containsKey(fieldName)) {\n                fieldCacheMap.put(fieldName, field);\n            }\n        }\n        if (clazz.getSuperclass() != null && clazz.getSuperclass() != Object.class) {\n            parserAllFieldToCache(clazz.getSuperclass(), fieldCacheMap);\n        }\n    }\n\n    public static Field getFieldFromCache(String fieldName, Map<String, Field> fieldCacheMap) {\n        Field field = fieldCacheMap.get(fieldName);\n\n        if (field == null) {\n            field = fieldCacheMap.get(\"_\" + fieldName);\n        }\n\n        if (field == null) {\n            field = fieldCacheMap.get(\"m_\" + fieldName);\n        }\n\n        if (field == null) {\n            char c0 = fieldName.charAt(0);\n            if (c0 >= 'a' && c0 <= 'z') {\n                char[] chars = fieldName.toCharArray();\n                chars[0] -= 32; // lower\n                String fieldNameX = new String(chars);\n                field = fieldCacheMap.get(fieldNameX);\n            }\n\n            if (fieldName.length() > 2) {\n                char c1 = fieldName.charAt(1);\n                if (c0 >= 'a' && c0 <= 'z'\n                        && c1 >= 'A' && c1 <= 'Z') {\n                    for (Map.Entry<String, Field> entry : fieldCacheMap.entrySet()) {\n                        if (fieldName.equalsIgnoreCase(entry.getKey())) {\n                            field = entry.getValue();\n                            break;\n                        }\n                    }\n                }\n            }\n        }\n\n        return field;\n    }\n\n    public ClassLoader getDefaultClassLoader() {\n        return defaultClassLoader;\n    }\n\n    public void setDefaultClassLoader(ClassLoader defaultClassLoader) {\n        this.defaultClassLoader = defaultClassLoader;\n    }\n\n    public void addDenyInternal(String name) {\n        if (name == null || name.length() == 0) {\n            return;\n        }\n\n        long hash = TypeUtils.fnv1a_64(name);\n        if (internalDenyHashCodes == null) {\n            this.internalDenyHashCodes = new long[] {hash};\n            return;\n        }\n\n        if (Arrays.binarySearch(this.internalDenyHashCodes, hash) >= 0) {\n            return;\n        }\n\n        long[] hashCodes = new long[this.internalDenyHashCodes.length + 1];\n        hashCodes[hashCodes.length - 1] = hash;\n        System.arraycopy(this.internalDenyHashCodes, 0, hashCodes, 0, this.internalDenyHashCodes.length);\n        Arrays.sort(hashCodes);\n        this.internalDenyHashCodes = hashCodes;\n    }\n\n    public void addDeny(String name) {\n        if (name == null || name.length() == 0) {\n            return;\n        }\n\n        long hash = TypeUtils.fnv1a_64(name);\n        if (Arrays.binarySearch(this.denyHashCodes, hash) >= 0) {\n            return;\n        }\n\n        long[] hashCodes = new long[this.denyHashCodes.length + 1];\n        hashCodes[hashCodes.length - 1] = hash;\n        System.arraycopy(this.denyHashCodes, 0, hashCodes, 0, this.denyHashCodes.length);\n        Arrays.sort(hashCodes);\n        this.denyHashCodes = hashCodes;\n    }\n\n    public void addAccept(String name) {\n        if (name == null || name.length() == 0) {\n            return;\n        }\n\n        long hash = TypeUtils.fnv1a_64(name);\n        if (Arrays.binarySearch(this.acceptHashCodes, hash) >= 0) {\n            return;\n        }\n\n        long[] hashCodes = new long[this.acceptHashCodes.length + 1];\n        hashCodes[hashCodes.length - 1] = hash;\n        System.arraycopy(this.acceptHashCodes, 0, hashCodes, 0, this.acceptHashCodes.length);\n        Arrays.sort(hashCodes);\n        this.acceptHashCodes = hashCodes;\n    }\n\n    public Class<?> checkAutoType(Class type) {\n        if (get(type) != null) {\n            return type;\n        }\n\n        return checkAutoType(type.getName(), null, JSON.DEFAULT_PARSER_FEATURE);\n    }\n\n    public Class<?> checkAutoType(String typeName, Class<?> expectClass) {\n        return checkAutoType(typeName, expectClass, JSON.DEFAULT_PARSER_FEATURE);\n    }\n\n    public Class<?> checkAutoType(String typeName, Class<?> expectClass, int features) {\n        if (typeName == null) {\n            return null;\n        }\n\n        if (autoTypeCheckHandlers != null) {\n            for (AutoTypeCheckHandler h : autoTypeCheckHandlers) {\n                Class<?> type = h.handler(typeName, expectClass, features);\n                if (type != null) {\n                    return type;\n                }\n            }\n        }\n\n        final int safeModeMask = Feature.SafeMode.mask;\n        boolean safeMode = this.safeMode\n                || (features & safeModeMask) != 0\n                || (JSON.DEFAULT_PARSER_FEATURE & safeModeMask) != 0;\n        if (safeMode) {\n            throw new JSONException(\"safeMode not support autoType : \" + typeName);\n        }\n\n        final int mask = Feature.SupportAutoType.mask;\n        boolean autoTypeSupport = this.autoTypeSupport\n                || (features & mask) != 0\n                || (JSON.DEFAULT_PARSER_FEATURE & mask) != 0;\n\n        if (typeName.length() >= 192 || typeName.length() < 3) {\n            throw new JSONException(\"autoType is not support. \" + typeName);\n        }\n\n        final boolean expectClassFlag;\n        if (expectClass == null) {\n            expectClassFlag = false;\n        } else {\n            long expectHash = TypeUtils.fnv1a_64(expectClass.getName());\n            if (expectHash == 0x90a25f5baa21529eL\n                    || expectHash == 0x2d10a5801b9d6136L\n                    || expectHash == 0xaf586a571e302c6bL\n                    || expectHash == 0xed007300a7b227c6L\n                    || expectHash == 0x295c4605fd1eaa95L\n                    || expectHash == 0x47ef269aadc650b4L\n                    || expectHash == 0x6439c4dff712ae8bL\n                    || expectHash == 0xe3dd9875a2dc5283L\n                    || expectHash == 0xe2a8ddba03e69e0dL\n                    || expectHash == 0xd734ceb4c3e9d1daL\n            ) {\n                expectClassFlag = false;\n            } else {\n                expectClassFlag = true;\n            }\n        }\n\n        String className = typeName.replace('$', '.');\n        Class<?> clazz;\n\n        final long h1 = (fnv1a_64_magic_hashcode ^ className.charAt(0)) * fnv1a_64_magic_prime;\n        if (h1 == 0xaf64164c86024f1aL) { // [\n            throw new JSONException(\"autoType is not support. \" + typeName);\n        }\n\n        if ((h1 ^ className.charAt(className.length() - 1)) * fnv1a_64_magic_prime == 0x9198507b5af98f0L) {\n            throw new JSONException(\"autoType is not support. \" + typeName);\n        }\n\n        final long h3 = (((((fnv1a_64_magic_hashcode ^ className.charAt(0))\n                * fnv1a_64_magic_prime)\n                ^ className.charAt(1))\n                * fnv1a_64_magic_prime)\n                ^ className.charAt(2))\n                * fnv1a_64_magic_prime;\n\n        long fullHash = TypeUtils.fnv1a_64(className);\n        boolean internalWhite = Arrays.binarySearch(INTERNAL_WHITELIST_HASHCODES,  fullHash) >= 0;\n\n        if (internalDenyHashCodes != null) {\n            long hash = h3;\n            for (int i = 3; i < className.length(); ++i) {\n                hash ^= className.charAt(i);\n                hash *= fnv1a_64_magic_prime;\n                if (Arrays.binarySearch(internalDenyHashCodes, hash) >= 0) {\n                    throw new JSONException(\"autoType is not support. \" + typeName);\n                }\n            }\n        }\n\n        if ((!internalWhite) && (autoTypeSupport || expectClassFlag)) {\n            long hash = h3;\n            for (int i = 3; i < className.length(); ++i) {\n                hash ^= className.charAt(i);\n                hash *= fnv1a_64_magic_prime;\n                if (Arrays.binarySearch(acceptHashCodes, hash) >= 0) {\n                    clazz = TypeUtils.loadClass(typeName, defaultClassLoader, true);\n                    if (clazz != null) {\n                        return clazz;\n                    }\n                }\n                if (Arrays.binarySearch(denyHashCodes, hash) >= 0 && TypeUtils.getClassFromMapping(typeName) == null) {\n                    if (Arrays.binarySearch(acceptHashCodes, fullHash) >= 0) {\n                        continue;\n                    }\n\n                    throw new JSONException(\"autoType is not support. \" + typeName);\n                }\n            }\n        }\n\n        clazz = TypeUtils.getClassFromMapping(typeName);\n\n        if (clazz == null) {\n            clazz = deserializers.findClass(typeName);\n        }\n\n        if (expectClass == null && clazz != null && Throwable.class.isAssignableFrom(clazz) && !autoTypeSupport) {\n            clazz = null;\n        }\n\n        if (clazz == null) {\n            clazz = typeMapping.get(typeName);\n        }\n\n        if (internalWhite) {\n            clazz = TypeUtils.loadClass(typeName, defaultClassLoader, true);\n        }\n\n        if (clazz != null) {\n            if (expectClass != null\n                    && clazz != java.util.HashMap.class\n                    && clazz != java.util.LinkedHashMap.class\n                    && !expectClass.isAssignableFrom(clazz)) {\n                throw new JSONException(\"type not match. \" + typeName + \" -> \" + expectClass.getName());\n            }\n\n            return clazz;\n        }\n\n        if (!autoTypeSupport) {\n            long hash = h3;\n            for (int i = 3; i < className.length(); ++i) {\n                char c = className.charAt(i);\n                hash ^= c;\n                hash *= fnv1a_64_magic_prime;\n\n                if (Arrays.binarySearch(denyHashCodes, hash) >= 0) {\n                    if (typeName.endsWith(\"Exception\") || typeName.endsWith(\"Error\")) {\n                        return null;\n                    }\n\n                    throw new JSONException(\"autoType is not support. \" + typeName);\n                }\n\n                // white list\n                if (Arrays.binarySearch(acceptHashCodes, hash) >= 0) {\n                    clazz = TypeUtils.loadClass(typeName, defaultClassLoader, true);\n\n                    if (clazz == null) {\n                        return expectClass;\n                    }\n\n                    if (expectClass != null && expectClass.isAssignableFrom(clazz)) {\n                        throw new JSONException(\"type not match. \" + typeName + \" -> \" + expectClass.getName());\n                    }\n\n                    return clazz;\n                }\n            }\n        }\n\n        boolean jsonType = false;\n        InputStream is = null;\n        try {\n            String resource = typeName.replace('.', '/') + \".class\";\n            if (defaultClassLoader != null) {\n                is = defaultClassLoader.getResourceAsStream(resource);\n            } else {\n                is = ParserConfig.class.getClassLoader().getResourceAsStream(resource);\n            }\n            if (is != null) {\n                ClassReader classReader = new ClassReader(is, true);\n                TypeCollector visitor = new TypeCollector(\"<clinit>\", new Class[0]);\n                classReader.accept(visitor);\n                jsonType = visitor.hasJsonType();\n            }\n        } catch (Exception e) {\n            // skip\n        } finally {\n            IOUtils.close(is);\n        }\n\n        if (autoTypeSupport || jsonType || expectClassFlag) {\n            boolean cacheClass = autoTypeSupport || jsonType;\n            clazz = TypeUtils.loadClass(typeName, defaultClassLoader, cacheClass);\n        }\n\n        if (clazz != null) {\n            if (jsonType) {\n                if (autoTypeSupport) {\n                    TypeUtils.addMapping(typeName, clazz);\n                }\n                return clazz;\n            }\n\n            if (ClassLoader.class.isAssignableFrom(clazz) // classloader is danger\n                    || javax.sql.DataSource.class.isAssignableFrom(clazz) // dataSource can load jdbc driver\n                    || javax.sql.RowSet.class.isAssignableFrom(clazz) //\n                    ) {\n                throw new JSONException(\"autoType is not support. \" + typeName);\n            }\n\n            if (expectClass != null) {\n                if (expectClass.isAssignableFrom(clazz)) {\n                    if (autoTypeSupport) {\n                        TypeUtils.addMapping(typeName, clazz);\n                    }\n                    return clazz;\n                } else {\n                    throw new JSONException(\"type not match. \" + typeName + \" -> \" + expectClass.getName());\n                }\n            }\n\n            JavaBeanInfo beanInfo = JavaBeanInfo.build(clazz, clazz, propertyNamingStrategy);\n            if (beanInfo.creatorConstructor != null && autoTypeSupport) {\n                throw new JSONException(\"autoType is not support. \" + typeName);\n            }\n        }\n\n        if (!autoTypeSupport) {\n            if (typeName.endsWith(\"Exception\") || typeName.endsWith(\"Error\")) {\n                return null;\n            }\n\n            throw new JSONException(\"autoType is not support. \" + typeName);\n        }\n\n        if (clazz != null) {\n            if (autoTypeSupport) {\n                TypeUtils.addMapping(typeName, clazz);\n            }\n        }\n\n        return clazz;\n    }\n\n    public void clearDeserializers() {\n        this.deserializers.clear();\n        this.initDeserializers();\n    }\n\n    public boolean isJacksonCompatible() {\n        return jacksonCompatible;\n    }\n\n    public void setJacksonCompatible(boolean jacksonCompatible) {\n        this.jacksonCompatible = jacksonCompatible;\n    }\n\n    public void register(String typeName, Class type) {\n        typeMapping.putIfAbsent(typeName, type);\n    }\n\n    public void register(Module module) {\n        this.modules.add(module);\n    }\n\n    public void addAutoTypeCheckHandler(AutoTypeCheckHandler h) {\n        List<AutoTypeCheckHandler> autoTypeCheckHandlers = this.autoTypeCheckHandlers;\n        if (autoTypeCheckHandlers == null) {\n            this.autoTypeCheckHandlers\n                    = autoTypeCheckHandlers\n                    = new CopyOnWriteArrayList();\n        }\n\n        autoTypeCheckHandlers.add(h);\n    }\n\n    /**\n     * @since 1.2.68\n     */\n    public interface AutoTypeCheckHandler {\n        Class<?> handler(String typeName, Class<?> expectClass, int features);\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/SymbolTable.java",
    "content": "/*\n * Copyright 1999-2017 Alibaba Group.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage com.alibaba.fastjson.parser;\n\nimport com.alibaba.fastjson.JSON;\n\n/**\n * @author wenshao[szujobs@hotmail.com]\n */\npublic class SymbolTable {\n\n    private final String[] symbols;\n    private final int      indexMask;\n    \n    public SymbolTable(int tableSize){\n        this.indexMask = tableSize - 1;\n        this.symbols = new String[tableSize];\n        \n        this.addSymbol(\"$ref\", 0, 4, \"$ref\".hashCode());\n        this.addSymbol(JSON.DEFAULT_TYPE_KEY, 0, JSON.DEFAULT_TYPE_KEY.length(), JSON.DEFAULT_TYPE_KEY.hashCode());\n    }\n\n    public String addSymbol(char[] buffer, int offset, int len) {\n        // search for identical symbol\n        int hash = hash(buffer, offset, len);\n        return addSymbol(buffer, offset, len, hash);\n    }\n\n    /**\n     * Adds the specified symbol to the symbol table and returns a reference to the unique symbol. If the symbol already\n     * exists, the previous symbol reference is returned instead, in order guarantee that symbol references remain\n     * unique.\n     * \n     * @param buffer The buffer containing the new symbol.\n     * @param offset The offset into the buffer of the new symbol.\n     * @param len The length of the new symbol in the buffer.\n     */\n    public String addSymbol(char[] buffer, int offset, int len, int hash) {\n        final int bucket = hash & indexMask;\n        \n        String symbol = symbols[bucket];\n        if (symbol != null) {\n            boolean eq = true;\n            if (hash == symbol.hashCode() // \n                    && len == symbol.length()) {\n                for (int i = 0; i < len; i++) {\n                    if (buffer[offset + i] != symbol.charAt(i)) {\n                        eq = false;\n                        break;\n                    }\n                }\n            } else {\n                eq = false;\n            }\n            \n            if (eq) {\n                return symbol;\n            } else {\n                return new String(buffer, offset, len);    \n            }\n        }\n        \n        symbol = new String(buffer, offset, len).intern();\n        symbols[bucket] = symbol;\n        return symbol;\n    }\n\n    public String addSymbol(String buffer, int offset, int len, int hash) {\n        return addSymbol(buffer, offset, len, hash, false);\n    }\n\n    public String addSymbol(String buffer, int offset, int len, int hash, boolean replace) {\n        final int bucket = hash & indexMask;\n\n        String symbol = symbols[bucket];\n        if (symbol != null) {\n            if (hash == symbol.hashCode() // \n                    && len == symbol.length() //\n                    && buffer.startsWith(symbol, offset)) {\n                return symbol;\n            }\n\n            String str = subString(buffer, offset, len);\n\n            if (replace) {\n                symbols[bucket] = str;\n            }\n\n            return str;\n        }\n        \n        symbol = len == buffer.length() //\n            ? buffer //\n            : subString(buffer, offset, len);\n        symbol = symbol.intern();\n        symbols[bucket] = symbol;\n        return symbol;\n    }\n    \n    private static String subString(String src, int offset, int len) {\n        char[] chars = new char[len];\n        src.getChars(offset, offset + len, chars, 0);\n        return new String(chars);\n    }\n\n    public static int hash(char[] buffer, int offset, int len) {\n        int h = 0;\n        int off = offset;\n\n        for (int i = 0; i < len; i++) {\n            h = 31 * h + buffer[off++];\n        }\n        return h;\n    }\n}"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/ASMDeserializerFactory.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\nimport static com.alibaba.fastjson.util.ASMUtils.desc;\nimport static com.alibaba.fastjson.util.ASMUtils.type;\n\nimport java.lang.reflect.Constructor;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Modifier;\nimport java.lang.reflect.ParameterizedType;\nimport java.lang.reflect.Type;\nimport java.math.BigDecimal;\nimport java.math.BigInteger;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.LinkedHashSet;\nimport java.util.LinkedList;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.TreeSet;\nimport java.util.concurrent.atomic.AtomicLong;\n\nimport com.alibaba.fastjson.asm.ClassWriter;\nimport com.alibaba.fastjson.asm.FieldWriter;\nimport com.alibaba.fastjson.asm.Label;\nimport com.alibaba.fastjson.asm.MethodVisitor;\nimport com.alibaba.fastjson.asm.MethodWriter;\nimport com.alibaba.fastjson.asm.Opcodes;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.DefaultJSONParser.ResolveTask;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.JSONLexer;\nimport com.alibaba.fastjson.parser.JSONLexerBase;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.ParseContext;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.SymbolTable;\nimport com.alibaba.fastjson.util.*;\n\npublic class ASMDeserializerFactory implements Opcodes {\n\n    public final ASMClassLoader classLoader;\n    protected final AtomicLong  seed              = new AtomicLong();\n\n    final static String         DefaultJSONParser = type(DefaultJSONParser.class);\n    final static String         JSONLexerBase     = type(JSONLexerBase.class);\n\n    public ASMDeserializerFactory(ClassLoader parentClassLoader){\n        classLoader = parentClassLoader instanceof ASMClassLoader //\n            ? (ASMClassLoader) parentClassLoader //\n            : new ASMClassLoader(parentClassLoader);\n    }\n    \n    public ObjectDeserializer createJavaBeanDeserializer(ParserConfig config, JavaBeanInfo beanInfo) throws Exception {\n        Class<?> clazz = beanInfo.clazz;\n        if (clazz.isPrimitive()) {\n            throw new IllegalArgumentException(\"not support type :\" + clazz.getName());\n        }\n\n        String className = \"FastjsonASMDeserializer_\" + seed.incrementAndGet() + \"_\" + clazz.getSimpleName();\n        String classNameType;\n        String classNameFull;\n\n        Package pkg = ASMDeserializerFactory.class.getPackage();\n        if (pkg != null) {\n            String packageName = pkg.getName();\n            classNameType = packageName.replace('.', '/') + \"/\" + className;\n            classNameFull = packageName + \".\" + className;\n        } else {\n            classNameType = className;\n            classNameFull = className;\n        }\n\n        ClassWriter cw = new ClassWriter();\n        cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, classNameType, type(JavaBeanDeserializer.class), null);\n\n        _init(cw, new Context(classNameType, config, beanInfo, 3));\n        _createInstance(cw, new Context(classNameType, config, beanInfo, 3));\n        _deserialze(cw, new Context(classNameType, config, beanInfo, 5));\n\n        _deserialzeArrayMapping(cw, new Context(classNameType, config, beanInfo, 4));\n        byte[] code = cw.toByteArray();\n\n        Class<?> deserClass = classLoader.defineClassPublic(classNameFull, code, 0, code.length);\n        Constructor<?> constructor = deserClass.getConstructor(ParserConfig.class, JavaBeanInfo.class);\n        Object instance = constructor.newInstance(config, beanInfo);\n\n        return (ObjectDeserializer) instance;\n    }\n\n    private void _setFlag(MethodVisitor mw, Context context, int i) {\n        String varName = \"_asm_flag_\" + (i / 32);\n\n        mw.visitVarInsn(ILOAD, context.var(varName));\n        mw.visitLdcInsn(1 << i);\n        mw.visitInsn(IOR);\n        mw.visitVarInsn(ISTORE, context.var(varName));\n    }\n\n    private void _isFlag(MethodVisitor mw, Context context, int i, Label label) {\n        mw.visitVarInsn(ILOAD, context.var(\"_asm_flag_\" + (i / 32)));\n        mw.visitLdcInsn(1 << i);\n        mw.visitInsn(IAND);\n\n        mw.visitJumpInsn(IFEQ, label);\n    }\n\n    private void _deserialzeArrayMapping(ClassWriter cw, Context context) {\n        MethodVisitor mw = new MethodWriter(cw, ACC_PUBLIC, \"deserialzeArrayMapping\",\n                                            \"(L\" + DefaultJSONParser + \";Ljava/lang/reflect/Type;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;\",\n                                            null, null);\n\n        defineVarLexer(context, mw);\n\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitVarInsn(ALOAD, 1);\n        mw.visitMethodInsn(INVOKEVIRTUAL, DefaultJSONParser, \"getSymbolTable\", \"()\" + desc(SymbolTable.class));\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanTypeName\", \"(\" + desc(SymbolTable.class) + \")Ljava/lang/String;\");\n        mw.visitVarInsn(ASTORE, context.var(\"typeName\"));\n\n        Label typeNameNotNull_ = new Label();\n        mw.visitVarInsn(ALOAD, context.var(\"typeName\"));\n        mw.visitJumpInsn(IFNULL, typeNameNotNull_);\n\n        mw.visitVarInsn(ALOAD, 1);\n        mw.visitMethodInsn(INVOKEVIRTUAL, DefaultJSONParser, \"getConfig\", \"()\" + desc(ParserConfig.class));\n        mw.visitVarInsn(ALOAD, 0);\n        mw.visitFieldInsn(GETFIELD, type(JavaBeanDeserializer.class), \"beanInfo\", desc(JavaBeanInfo.class));\n        mw.visitVarInsn(ALOAD, context.var(\"typeName\"));\n        mw.visitMethodInsn(INVOKESTATIC, type(JavaBeanDeserializer.class), \"getSeeAlso\"\n                , \"(\" + desc(ParserConfig.class) + desc(JavaBeanInfo.class) + \"Ljava/lang/String;)\" + desc(JavaBeanDeserializer.class));\n        mw.visitVarInsn(ASTORE, context.var(\"userTypeDeser\"));\n        mw.visitVarInsn(ALOAD, context.var(\"userTypeDeser\"));\n        mw.visitTypeInsn(INSTANCEOF, type(JavaBeanDeserializer.class));\n        mw.visitJumpInsn(IFEQ, typeNameNotNull_);\n\n        mw.visitVarInsn(ALOAD, context.var(\"userTypeDeser\"));\n        mw.visitVarInsn(ALOAD, Context.parser);\n        mw.visitVarInsn(ALOAD, 2);\n        mw.visitVarInsn(ALOAD, 3);\n        mw.visitVarInsn(ALOAD, 4);\n        mw.visitMethodInsn(INVOKEVIRTUAL, //\n                type(JavaBeanDeserializer.class), //\n                \"deserialzeArrayMapping\", //\n                \"(L\" + DefaultJSONParser + \";Ljava/lang/reflect/Type;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;\");\n        mw.visitInsn(ARETURN);\n\n        mw.visitLabel(typeNameNotNull_);\n\n        _createInstance(context, mw);\n\n        FieldInfo[] sortedFieldInfoList = context.beanInfo.sortedFields;\n        int fieldListSize = sortedFieldInfoList.length;\n        for (int i = 0; i < fieldListSize; ++i) {\n            final boolean last = (i == fieldListSize - 1);\n            final char seperator = last ? ']' : ',';\n\n            FieldInfo fieldInfo = sortedFieldInfoList[i];\n            Class<?> fieldClass = fieldInfo.fieldClass;\n            Type fieldType = fieldInfo.fieldType;\n            if (fieldClass == byte.class //\n                || fieldClass == short.class //\n                || fieldClass == int.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanInt\", \"(C)I\");\n                mw.visitVarInsn(ISTORE, context.var_asm(fieldInfo));\n            } else if (fieldClass == Byte.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanInt\", \"(C)I\");\n                mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Byte\", \"valueOf\", \"(B)Ljava/lang/Byte;\");\n\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n                Label valueNullEnd_ = new Label();\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitFieldInsn(GETFIELD, JSONLexerBase, \"matchStat\", \"I\");\n                mw.visitLdcInsn(com.alibaba.fastjson.parser.JSONLexerBase.VALUE_NULL);\n                mw.visitJumpInsn(IF_ICMPNE, valueNullEnd_);\n                mw.visitInsn(ACONST_NULL);\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n                mw.visitLabel(valueNullEnd_);\n            } else if (fieldClass == Short.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanInt\", \"(C)I\");\n                mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Short\", \"valueOf\", \"(S)Ljava/lang/Short;\");\n\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n                Label valueNullEnd_ = new Label();\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitFieldInsn(GETFIELD, JSONLexerBase, \"matchStat\", \"I\");\n                mw.visitLdcInsn(com.alibaba.fastjson.parser.JSONLexerBase.VALUE_NULL);\n                mw.visitJumpInsn(IF_ICMPNE, valueNullEnd_);\n                mw.visitInsn(ACONST_NULL);\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n                mw.visitLabel(valueNullEnd_);\n            } else if (fieldClass == Integer.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanInt\", \"(C)I\");\n                mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Integer\", \"valueOf\", \"(I)Ljava/lang/Integer;\");\n\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n                Label valueNullEnd_ = new Label();\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitFieldInsn(GETFIELD, JSONLexerBase, \"matchStat\", \"I\");\n                mw.visitLdcInsn(com.alibaba.fastjson.parser.JSONLexerBase.VALUE_NULL);\n                mw.visitJumpInsn(IF_ICMPNE, valueNullEnd_);\n                mw.visitInsn(ACONST_NULL);\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n                mw.visitLabel(valueNullEnd_);\n            } else if (fieldClass == long.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanLong\", \"(C)J\");\n                mw.visitVarInsn(LSTORE, context.var_asm(fieldInfo, 2));\n\n            } else if (fieldClass == Long.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanLong\", \"(C)J\");\n                mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Long\", \"valueOf\", \"(J)Ljava/lang/Long;\");\n\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n                Label valueNullEnd_ = new Label();\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitFieldInsn(GETFIELD, JSONLexerBase, \"matchStat\", \"I\");\n                mw.visitLdcInsn(com.alibaba.fastjson.parser.JSONLexerBase.VALUE_NULL);\n                mw.visitJumpInsn(IF_ICMPNE, valueNullEnd_);\n                mw.visitInsn(ACONST_NULL);\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n                mw.visitLabel(valueNullEnd_);\n            } else if (fieldClass == boolean.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanBoolean\", \"(C)Z\");\n                mw.visitVarInsn(ISTORE, context.var_asm(fieldInfo));\n            } else if (fieldClass == float.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanFloat\", \"(C)F\");\n                mw.visitVarInsn(FSTORE, context.var_asm(fieldInfo));\n\n            } else if (fieldClass == Float.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanFloat\", \"(C)F\");\n                mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Float\", \"valueOf\", \"(F)Ljava/lang/Float;\");\n\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n                Label valueNullEnd_ = new Label();\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitFieldInsn(GETFIELD, JSONLexerBase, \"matchStat\", \"I\");\n                mw.visitLdcInsn(com.alibaba.fastjson.parser.JSONLexerBase.VALUE_NULL);\n                mw.visitJumpInsn(IF_ICMPNE, valueNullEnd_);\n                mw.visitInsn(ACONST_NULL);\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n                mw.visitLabel(valueNullEnd_);\n\n            } else if (fieldClass == double.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanDouble\", \"(C)D\");\n                mw.visitVarInsn(DSTORE, context.var_asm(fieldInfo, 2));\n\n            } else if (fieldClass == Double.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanDouble\", \"(C)D\");\n                mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Double\", \"valueOf\", \"(D)Ljava/lang/Double;\");\n\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n                Label valueNullEnd_ = new Label();\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitFieldInsn(GETFIELD, JSONLexerBase, \"matchStat\", \"I\");\n                mw.visitLdcInsn(com.alibaba.fastjson.parser.JSONLexerBase.VALUE_NULL);\n                mw.visitJumpInsn(IF_ICMPNE, valueNullEnd_);\n                mw.visitInsn(ACONST_NULL);\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n                mw.visitLabel(valueNullEnd_);\n\n            } else if (fieldClass == char.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanString\", \"(C)Ljava/lang/String;\");\n                mw.visitInsn(ICONST_0);\n                mw.visitMethodInsn(INVOKEVIRTUAL, \"java/lang/String\", \"charAt\", \"(I)C\");\n                mw.visitVarInsn(ISTORE, context.var_asm(fieldInfo));\n            } else if (fieldClass == String.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanString\", \"(C)Ljava/lang/String;\");\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n\n            } else if (fieldClass == BigDecimal.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanDecimal\", \"(C)Ljava/math/BigDecimal;\");\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n\n            } else if (fieldClass == java.util.Date.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanDate\", \"(C)Ljava/util/Date;\");\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n\n            } else if (fieldClass == java.util.UUID.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanUUID\", \"(C)Ljava/util/UUID;\");\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n\n            } else if (fieldClass.isEnum()) {\n                Label enumNumIf_ = new Label();\n                Label enumNumErr_ = new Label();\n                Label enumStore_ = new Label();\n                Label enumQuote_ = new Label();\n\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"getCurrent\", \"()C\");\n                mw.visitInsn(DUP);\n                mw.visitVarInsn(ISTORE, context.var(\"ch\"));\n                mw.visitLdcInsn((int) 'n');\n                mw.visitJumpInsn(IF_ICMPEQ, enumQuote_);\n\n                mw.visitVarInsn(ILOAD, context.var(\"ch\"));\n                mw.visitLdcInsn((int) '\\\"');\n                mw.visitJumpInsn(IF_ICMPNE, enumNumIf_);\n\n                mw.visitLabel(enumQuote_);\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitLdcInsn(com.alibaba.fastjson.asm.Type.getType(desc(fieldClass)));\n                mw.visitVarInsn(ALOAD, 1);\n                mw.visitMethodInsn(INVOKEVIRTUAL, DefaultJSONParser, \"getSymbolTable\", \"()\" + desc(SymbolTable.class));\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanEnum\",\n                                   \"(Ljava/lang/Class;\" + desc(SymbolTable.class) + \"C)Ljava/lang/Enum;\");\n                mw.visitJumpInsn(GOTO, enumStore_);\n\n                // (ch >= '0' && ch <= '9') {\n                mw.visitLabel(enumNumIf_);\n                mw.visitVarInsn(ILOAD, context.var(\"ch\"));\n                mw.visitLdcInsn((int) '0');\n                mw.visitJumpInsn(IF_ICMPLT, enumNumErr_);\n\n                mw.visitVarInsn(ILOAD, context.var(\"ch\"));\n                mw.visitLdcInsn((int) '9');\n                mw.visitJumpInsn(IF_ICMPGT, enumNumErr_);\n\n                _getFieldDeser(context, mw, fieldInfo);\n                mw.visitTypeInsn(CHECKCAST, type(EnumDeserializer.class)); // cast\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanInt\", \"(C)I\");\n                mw.visitMethodInsn(INVOKEVIRTUAL, type(EnumDeserializer.class), \"valueOf\", \"(I)Ljava/lang/Enum;\");\n                mw.visitJumpInsn(GOTO, enumStore_);\n\n                mw.visitLabel(enumNumErr_);\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, type(JavaBeanDeserializer.class), \"scanEnum\",\n                                   \"(L\" + JSONLexerBase + \";C)Ljava/lang/Enum;\");\n\n                mw.visitLabel(enumStore_);\n                mw.visitTypeInsn(CHECKCAST, type(fieldClass)); // cast\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n            } else if (Collection.class.isAssignableFrom(fieldClass)) {\n                \n                Class<?> itemClass = TypeUtils.getCollectionItemClass(fieldType);\n                if (itemClass == String.class) {\n                    if (fieldClass == List.class\n                            || fieldClass == Collections.class\n                            || fieldClass == ArrayList.class\n                    ) {\n                        mw.visitTypeInsn(NEW, type(ArrayList.class));\n                        mw.visitInsn(DUP);\n                        mw.visitMethodInsn(INVOKESPECIAL, type(ArrayList.class), \"<init>\", \"()V\");\n                    } else {\n                        mw.visitLdcInsn(com.alibaba.fastjson.asm.Type.getType(desc(fieldClass)));\n                        mw.visitMethodInsn(INVOKESTATIC, type(TypeUtils.class), \"createCollection\",\n                                           \"(Ljava/lang/Class;)Ljava/util/Collection;\");\n                    }\n                    mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n                    \n                    mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                    mw.visitVarInsn(ALOAD, context.var_asm(fieldInfo));\n                    mw.visitVarInsn(BIPUSH, seperator);\n                    mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanStringArray\", \"(Ljava/util/Collection;C)V\");\n                    \n                    Label valueNullEnd_ = new Label();\n                    mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                    mw.visitFieldInsn(GETFIELD, JSONLexerBase, \"matchStat\", \"I\");\n                    mw.visitLdcInsn(com.alibaba.fastjson.parser.JSONLexerBase.VALUE_NULL);\n                    mw.visitJumpInsn(IF_ICMPNE, valueNullEnd_);\n                    mw.visitInsn(ACONST_NULL);\n                    mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n                    \n                    mw.visitLabel(valueNullEnd_);\n                    \n                } else {\n                    Label notError_ = new Label();\n                    mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                    mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"token\", \"()I\");\n                    mw.visitVarInsn(ISTORE, context.var(\"token\"));\n\n                    mw.visitVarInsn(ILOAD, context.var(\"token\"));\n                    int token = i == 0 ? JSONToken.LBRACKET : JSONToken.COMMA;\n                    mw.visitLdcInsn(token);\n                    mw.visitJumpInsn(IF_ICMPEQ, notError_);\n\n                    mw.visitVarInsn(ALOAD, 1); // DefaultJSONParser\n                    mw.visitLdcInsn(token);\n                    mw.visitMethodInsn(INVOKEVIRTUAL, DefaultJSONParser, \"throwException\", \"(I)V\");\n\n                    mw.visitLabel(notError_);\n\n                    Label quickElse_ = new Label(), quickEnd_ = new Label();\n                    mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                    mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"getCurrent\", \"()C\");\n                    mw.visitVarInsn(BIPUSH, '[');\n                    mw.visitJumpInsn(IF_ICMPNE, quickElse_);\n\n                    mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                    mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"next\", \"()C\");\n                    mw.visitInsn(POP);\n                    mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                    mw.visitLdcInsn(JSONToken.LBRACKET);\n                    mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"setToken\", \"(I)V\");\n                    mw.visitJumpInsn(GOTO, quickEnd_);\n\n                    mw.visitLabel(quickElse_);\n                    mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                    mw.visitLdcInsn(JSONToken.LBRACKET);\n                    mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"nextToken\", \"(I)V\");\n                    mw.visitLabel(quickEnd_);\n\n                    _newCollection(mw, fieldClass, i, false);\n                    mw.visitInsn(DUP);\n                    mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n                    _getCollectionFieldItemDeser(context, mw, fieldInfo, itemClass);\n                    mw.visitVarInsn(ALOAD, 1);\n                    mw.visitLdcInsn(com.alibaba.fastjson.asm.Type.getType(desc(itemClass)));\n                    mw.visitVarInsn(ALOAD, 3);\n                    mw.visitMethodInsn(INVOKESTATIC, type(JavaBeanDeserializer.class),\n                                       \"parseArray\",\n                                       \"(Ljava/util/Collection;\" //\n                                                     + desc(ObjectDeserializer.class) //\n                                                     + \"L\" + DefaultJSONParser + \";\" //\n                                                     + \"Ljava/lang/reflect/Type;Ljava/lang/Object;)V\");\n                }\n            } else if (fieldClass.isArray()) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitLdcInsn(com.alibaba.fastjson.parser.JSONToken.LBRACKET);\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"nextToken\", \"(I)V\");\n\n                mw.visitVarInsn(ALOAD, Context.parser);\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitLdcInsn(i);\n                mw.visitMethodInsn(INVOKEVIRTUAL, type(JavaBeanDeserializer.class), \"getFieldType\",\n                                   \"(I)Ljava/lang/reflect/Type;\");\n                mw.visitMethodInsn(INVOKEVIRTUAL, DefaultJSONParser, \"parseObject\",\n                                   \"(Ljava/lang/reflect/Type;)Ljava/lang/Object;\");\n\n                mw.visitTypeInsn(CHECKCAST, type(fieldClass)); // cast\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n            } else {\n                Label objElseIf_ = new Label();\n                Label objEndIf_ = new Label();\n\n                if (fieldClass == java.util.Date.class) {\n                    mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                    mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"getCurrent\", \"()C\");\n                    mw.visitLdcInsn((int) '1');\n                    mw.visitJumpInsn(IF_ICMPNE, objElseIf_);\n\n                    mw.visitTypeInsn(NEW, type(java.util.Date.class));\n                    mw.visitInsn(DUP);\n\n                    mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                    mw.visitVarInsn(BIPUSH, seperator);\n                    mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanLong\", \"(C)J\");\n\n                    mw.visitMethodInsn(INVOKESPECIAL, type(java.util.Date.class), \"<init>\", \"(J)V\");\n                    mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n\n                    mw.visitJumpInsn(GOTO, objEndIf_);\n                }\n\n                mw.visitLabel(objElseIf_);\n\n                _quickNextToken(context, mw, JSONToken.LBRACKET);\n\n                _deserObject(context, mw, fieldInfo, fieldClass, i);\n\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"token\", \"()I\");\n                mw.visitLdcInsn(JSONToken.RBRACKET);\n                mw.visitJumpInsn(IF_ICMPEQ, objEndIf_);\n//                mw.visitInsn(POP);\n//                mw.visitInsn(POP);\n\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                if (!last) {\n                    mw.visitLdcInsn(JSONToken.COMMA);\n                } else {\n                    mw.visitLdcInsn(JSONToken.RBRACKET);\n                }\n                mw.visitMethodInsn(INVOKESPECIAL, //\n                                   type(JavaBeanDeserializer.class), //\n                                   \"check\", \"(\" + desc(JSONLexer.class) + \"I)V\");\n\n                mw.visitLabel(objEndIf_);\n                continue;\n            }\n        }\n\n        _batchSet(context, mw, false);\n\n        Label quickElse_ = new Label(), quickElseIf_ = new Label(), quickElseIfEOI_ = new Label(),\n                quickEnd_ = new Label();\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"getCurrent\", \"()C\");\n        mw.visitInsn(DUP);\n        mw.visitVarInsn(ISTORE, context.var(\"ch\"));\n        mw.visitVarInsn(BIPUSH, ',');\n        mw.visitJumpInsn(IF_ICMPNE, quickElseIf_);\n\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"next\", \"()C\");\n        mw.visitInsn(POP);\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitLdcInsn(JSONToken.COMMA);\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"setToken\", \"(I)V\");\n        mw.visitJumpInsn(GOTO, quickEnd_);\n\n        mw.visitLabel(quickElseIf_);\n        mw.visitVarInsn(ILOAD, context.var(\"ch\"));\n        mw.visitVarInsn(BIPUSH, ']');\n        mw.visitJumpInsn(IF_ICMPNE, quickElseIfEOI_);\n\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"next\", \"()C\");\n        mw.visitInsn(POP);\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitLdcInsn(JSONToken.RBRACKET);\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"setToken\", \"(I)V\");\n        mw.visitJumpInsn(GOTO, quickEnd_);\n\n        mw.visitLabel(quickElseIfEOI_);\n        mw.visitVarInsn(ILOAD, context.var(\"ch\"));\n        mw.visitVarInsn(BIPUSH, (char) JSONLexer.EOI);\n        mw.visitJumpInsn(IF_ICMPNE, quickElse_);\n\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"next\", \"()C\");\n        mw.visitInsn(POP);\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitLdcInsn(JSONToken.EOF);\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"setToken\", \"(I)V\");\n        mw.visitJumpInsn(GOTO, quickEnd_);\n\n        mw.visitLabel(quickElse_);\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitLdcInsn(JSONToken.COMMA);\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"nextToken\", \"(I)V\");\n\n        mw.visitLabel(quickEnd_);\n\n        mw.visitVarInsn(ALOAD, context.var(\"instance\"));\n        mw.visitInsn(ARETURN);\n        mw.visitMaxs(5, context.variantIndex);\n        mw.visitEnd();\n    }\n\n    private void _deserialze(ClassWriter cw, Context context) {\n        if (context.fieldInfoList.length == 0) {\n            return;\n        }\n\n        for (FieldInfo fieldInfo : context.fieldInfoList) {\n            Class<?> fieldClass = fieldInfo.fieldClass;\n            Type fieldType = fieldInfo.fieldType;\n\n            if (fieldClass == char.class) {\n                return;\n            }\n\n            if (Collection.class.isAssignableFrom(fieldClass)) {\n                if (fieldType instanceof ParameterizedType) {\n                    Type itemType = ((ParameterizedType) fieldType).getActualTypeArguments()[0];\n                    if (itemType instanceof Class) {\n                        continue;\n                    } else {\n                        return;\n                    }\n                } else {\n                    return;\n                }\n            }\n        }\n\n        JavaBeanInfo beanInfo = context.beanInfo;\n        context.fieldInfoList = beanInfo.sortedFields;\n\n        MethodVisitor mw = new MethodWriter(cw, ACC_PUBLIC, \"deserialze\",\n                                            \"(L\" + DefaultJSONParser + \";Ljava/lang/reflect/Type;Ljava/lang/Object;I)Ljava/lang/Object;\",\n                                            null, null);\n\n        Label reset_ = new Label();\n        Label super_ = new Label();\n        Label return_ = new Label();\n        Label end_ = new Label();\n\n        defineVarLexer(context, mw);\n\n        {\n            Label next_ = new Label();\n\n            // isSupportArrayToBean\n\n            mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n            mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"token\", \"()I\");\n            mw.visitLdcInsn(JSONToken.LBRACKET);\n            mw.visitJumpInsn(IF_ICMPNE, next_);\n\n            if ((beanInfo.parserFeatures & Feature.SupportArrayToBean.mask) == 0) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(ILOAD, 4);\n                mw.visitLdcInsn(Feature.SupportArrayToBean.mask);\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"isEnabled\", \"(II)Z\");\n                mw.visitJumpInsn(IFEQ, next_);\n            }\n\n            mw.visitVarInsn(ALOAD, 0);\n            mw.visitVarInsn(ALOAD, Context.parser);\n            mw.visitVarInsn(ALOAD, 2);\n            mw.visitVarInsn(ALOAD, 3);\n            mw.visitInsn(ACONST_NULL); //mw.visitVarInsn(ALOAD, 5);\n            mw.visitMethodInsn(INVOKESPECIAL, //\n                               context.className, //\n                               \"deserialzeArrayMapping\", //\n                               \"(L\" + DefaultJSONParser + \";Ljava/lang/reflect/Type;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;\");\n            mw.visitInsn(ARETURN);\n\n            mw.visitLabel(next_);\n            // deserialzeArrayMapping\n        }\n\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitLdcInsn(Feature.SortFeidFastMatch.mask);\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"isEnabled\", \"(I)Z\");\n\n        Label continue_ = new Label();\n        mw.visitJumpInsn(IFNE, continue_);\n        mw.visitJumpInsn(GOTO_W, super_);\n        mw.visitLabel(continue_);\n\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitLdcInsn(context.clazz.getName());\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanType\", \"(Ljava/lang/String;)I\");\n\n        mw.visitLdcInsn(com.alibaba.fastjson.parser.JSONLexerBase.NOT_MATCH);\n\n        Label continue_2 = new Label();\n        mw.visitJumpInsn(IF_ICMPNE, continue_2);\n        mw.visitJumpInsn(GOTO_W, super_);\n        mw.visitLabel(continue_2);\n\n        mw.visitVarInsn(ALOAD, 1); // parser\n        mw.visitMethodInsn(INVOKEVIRTUAL, DefaultJSONParser, \"getContext\", \"()\" + desc(ParseContext.class));\n        mw.visitVarInsn(ASTORE, context.var(\"mark_context\"));\n\n        // ParseContext context = parser.getContext();\n        mw.visitInsn(ICONST_0);\n        mw.visitVarInsn(ISTORE, context.var(\"matchedCount\"));\n\n        _createInstance(context, mw);\n\n        {\n            mw.visitVarInsn(ALOAD, 1); // parser\n            mw.visitMethodInsn(INVOKEVIRTUAL, DefaultJSONParser, \"getContext\", \"()\" + desc(ParseContext.class));\n            mw.visitVarInsn(ASTORE, context.var(\"context\"));\n\n            mw.visitVarInsn(ALOAD, 1); // parser\n            mw.visitVarInsn(ALOAD, context.var(\"context\"));\n            mw.visitVarInsn(ALOAD, context.var(\"instance\"));\n            mw.visitVarInsn(ALOAD, 3); // fieldName\n            mw.visitMethodInsn(INVOKEVIRTUAL, DefaultJSONParser, \"setContext\", //\n                               \"(\" + desc(ParseContext.class) + \"Ljava/lang/Object;Ljava/lang/Object;)\"\n                                                                               + desc(ParseContext.class));\n            mw.visitVarInsn(ASTORE, context.var(\"childContext\"));\n        }\n\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitFieldInsn(GETFIELD, JSONLexerBase, \"matchStat\", \"I\");\n        mw.visitLdcInsn(com.alibaba.fastjson.parser.JSONLexerBase.END);\n        //mw.visitJumpInsn(IF_ICMPEQ, return_);\n\n        Label continue_3 = new Label();\n        mw.visitJumpInsn(IF_ICMPNE, continue_3);\n        mw.visitJumpInsn(GOTO_W, return_);\n        mw.visitLabel(continue_3);\n\n        mw.visitInsn(ICONST_0); // UNKOWN\n        mw.visitIntInsn(ISTORE, context.var(\"matchStat\"));\n\n        int fieldListSize = context.fieldInfoList.length;\n        for (int i = 0; i < fieldListSize; i += 32) {\n            mw.visitInsn(ICONST_0);\n            mw.visitVarInsn(ISTORE, context.var(\"_asm_flag_\" + (i / 32)));\n        }\n\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitLdcInsn(Feature.InitStringFieldAsEmpty.mask);\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"isEnabled\", \"(I)Z\");\n        mw.visitIntInsn(ISTORE, context.var(\"initStringFieldAsEmpty\"));\n\n        // declare and init\n        for (int i = 0; i < fieldListSize; ++i) {\n            FieldInfo fieldInfo = context.fieldInfoList[i];\n            Class<?> fieldClass = fieldInfo.fieldClass;\n\n            if (fieldClass == boolean.class //\n                || fieldClass == byte.class //\n                || fieldClass == short.class //\n                || fieldClass == int.class) {\n                mw.visitInsn(ICONST_0);\n                mw.visitVarInsn(ISTORE, context.var_asm(fieldInfo));\n            } else if (fieldClass == long.class) {\n                mw.visitInsn(LCONST_0);\n                mw.visitVarInsn(LSTORE, context.var_asm(fieldInfo, 2));\n            } else if (fieldClass == float.class) {\n                mw.visitInsn(FCONST_0);\n                mw.visitVarInsn(FSTORE, context.var_asm(fieldInfo));\n            } else if (fieldClass == double.class) {\n                mw.visitInsn(DCONST_0);\n                mw.visitVarInsn(DSTORE, context.var_asm(fieldInfo, 2));\n            } else {\n                if (fieldClass == String.class) {\n                    Label flagEnd_ = new Label();\n                    Label flagElse_ = new Label();\n                    mw.visitVarInsn(ILOAD, context.var(\"initStringFieldAsEmpty\"));\n                    mw.visitJumpInsn(IFEQ, flagElse_);\n                    _setFlag(mw, context, i);\n                    mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                    mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"stringDefaultValue\", \"()Ljava/lang/String;\");\n                    mw.visitJumpInsn(GOTO, flagEnd_);\n\n                    mw.visitLabel(flagElse_);\n                    mw.visitInsn(ACONST_NULL);\n\n                    mw.visitLabel(flagEnd_);\n                } else {\n                    mw.visitInsn(ACONST_NULL);\n                }\n\n                mw.visitTypeInsn(CHECKCAST, type(fieldClass)); // cast\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n            }\n        }\n\n        for (int i = 0; i < fieldListSize; ++i) {\n            FieldInfo fieldInfo = context.fieldInfoList[i];\n            Class<?> fieldClass = fieldInfo.fieldClass;\n            Type fieldType = fieldInfo.fieldType;\n\n            Label notMatch_ = new Label();\n\n            if (fieldClass == boolean.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitFieldInsn(GETFIELD, context.className, context.fieldName(fieldInfo), \"[C\");\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanFieldBoolean\", \"([C)Z\");\n                mw.visitVarInsn(ISTORE, context.var_asm(fieldInfo));\n            } else if (fieldClass == byte.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitFieldInsn(GETFIELD, context.className, context.fieldName(fieldInfo), \"[C\");\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanFieldInt\", \"([C)I\");\n                mw.visitVarInsn(ISTORE, context.var_asm(fieldInfo));\n\n            } else if (fieldClass == Byte.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitFieldInsn(GETFIELD, context.className, context.fieldName(fieldInfo), \"[C\");\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanFieldInt\", \"([C)I\");\n                mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Byte\", \"valueOf\", \"(B)Ljava/lang/Byte;\");\n\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n                Label valueNullEnd_ = new Label();\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitFieldInsn(GETFIELD, JSONLexerBase, \"matchStat\", \"I\");\n                mw.visitLdcInsn(com.alibaba.fastjson.parser.JSONLexerBase.VALUE_NULL);\n                mw.visitJumpInsn(IF_ICMPNE, valueNullEnd_);\n                mw.visitInsn(ACONST_NULL);\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n                mw.visitLabel(valueNullEnd_);\n\n            } else if (fieldClass == short.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitFieldInsn(GETFIELD, context.className, context.fieldName(fieldInfo), \"[C\");\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanFieldInt\", \"([C)I\");\n                mw.visitVarInsn(ISTORE, context.var_asm(fieldInfo));\n\n            } else if (fieldClass == Short.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitFieldInsn(GETFIELD, context.className, context.fieldName(fieldInfo), \"[C\");\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanFieldInt\", \"([C)I\");\n                mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Short\", \"valueOf\", \"(S)Ljava/lang/Short;\");\n\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n                Label valueNullEnd_ = new Label();\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitFieldInsn(GETFIELD, JSONLexerBase, \"matchStat\", \"I\");\n                mw.visitLdcInsn(com.alibaba.fastjson.parser.JSONLexerBase.VALUE_NULL);\n                mw.visitJumpInsn(IF_ICMPNE, valueNullEnd_);\n                mw.visitInsn(ACONST_NULL);\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n                mw.visitLabel(valueNullEnd_);\n\n            } else if (fieldClass == int.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitFieldInsn(GETFIELD, context.className, context.fieldName(fieldInfo), \"[C\");\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanFieldInt\", \"([C)I\");\n                mw.visitVarInsn(ISTORE, context.var_asm(fieldInfo));\n\n            } else if (fieldClass == Integer.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitFieldInsn(GETFIELD, context.className, context.fieldName(fieldInfo), \"[C\");\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanFieldInt\", \"([C)I\");\n                mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Integer\", \"valueOf\", \"(I)Ljava/lang/Integer;\");\n\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n                Label valueNullEnd_ = new Label();\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitFieldInsn(GETFIELD, JSONLexerBase, \"matchStat\", \"I\");\n                mw.visitLdcInsn(com.alibaba.fastjson.parser.JSONLexerBase.VALUE_NULL);\n                mw.visitJumpInsn(IF_ICMPNE, valueNullEnd_);\n                mw.visitInsn(ACONST_NULL);\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n                mw.visitLabel(valueNullEnd_);\n\n            } else if (fieldClass == long.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitFieldInsn(GETFIELD, context.className, context.fieldName(fieldInfo), \"[C\");\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanFieldLong\", \"([C)J\");\n                mw.visitVarInsn(LSTORE, context.var_asm(fieldInfo, 2));\n\n            } else if (fieldClass == Long.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitFieldInsn(GETFIELD, context.className, context.fieldName(fieldInfo), \"[C\");\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanFieldLong\", \"([C)J\");\n                mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Long\", \"valueOf\", \"(J)Ljava/lang/Long;\");\n\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n                Label valueNullEnd_ = new Label();\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitFieldInsn(GETFIELD, JSONLexerBase, \"matchStat\", \"I\");\n                mw.visitLdcInsn(com.alibaba.fastjson.parser.JSONLexerBase.VALUE_NULL);\n                mw.visitJumpInsn(IF_ICMPNE, valueNullEnd_);\n                mw.visitInsn(ACONST_NULL);\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n                mw.visitLabel(valueNullEnd_);\n\n            } else if (fieldClass == float.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitFieldInsn(GETFIELD, context.className, context.fieldName(fieldInfo), \"[C\");\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanFieldFloat\", \"([C)F\");\n                mw.visitVarInsn(FSTORE, context.var_asm(fieldInfo));\n\n            } else if (fieldClass == Float.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitFieldInsn(GETFIELD, context.className, context.fieldName(fieldInfo), \"[C\");\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanFieldFloat\", \"([C)F\");\n                mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Float\", \"valueOf\", \"(F)Ljava/lang/Float;\");\n\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n                Label valueNullEnd_ = new Label();\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitFieldInsn(GETFIELD, JSONLexerBase, \"matchStat\", \"I\");\n                mw.visitLdcInsn(com.alibaba.fastjson.parser.JSONLexerBase.VALUE_NULL);\n                mw.visitJumpInsn(IF_ICMPNE, valueNullEnd_);\n                mw.visitInsn(ACONST_NULL);\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n                mw.visitLabel(valueNullEnd_);\n            } else if (fieldClass == double.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitFieldInsn(GETFIELD, context.className, context.fieldName(fieldInfo), \"[C\");\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanFieldDouble\", \"([C)D\");\n                mw.visitVarInsn(DSTORE, context.var_asm(fieldInfo, 2));\n\n            } else if (fieldClass == Double.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitFieldInsn(GETFIELD, context.className, context.fieldName(fieldInfo), \"[C\");\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanFieldDouble\", \"([C)D\");\n                mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Double\", \"valueOf\", \"(D)Ljava/lang/Double;\");\n\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n                Label valueNullEnd_ = new Label();\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitFieldInsn(GETFIELD, JSONLexerBase, \"matchStat\", \"I\");\n                mw.visitLdcInsn(com.alibaba.fastjson.parser.JSONLexerBase.VALUE_NULL);\n                mw.visitJumpInsn(IF_ICMPNE, valueNullEnd_);\n                mw.visitInsn(ACONST_NULL);\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n\n                mw.visitLabel(valueNullEnd_);\n            } else if (fieldClass == String.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitFieldInsn(GETFIELD, context.className, context.fieldName(fieldInfo), \"[C\");\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanFieldString\", \"([C)Ljava/lang/String;\");\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n\n            } else if (fieldClass == java.util.Date.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitFieldInsn(GETFIELD, context.className, context.fieldName(fieldInfo), \"[C\");\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanFieldDate\", \"([C)Ljava/util/Date;\");\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n\n            } else if (fieldClass == java.util.UUID.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitFieldInsn(GETFIELD, context.className, context.fieldName(fieldInfo), \"[C\");\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanFieldUUID\", \"([C)Ljava/util/UUID;\");\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n\n            } else if (fieldClass == BigDecimal.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitFieldInsn(GETFIELD, context.className, context.fieldName(fieldInfo), \"[C\");\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanFieldDecimal\", \"([C)Ljava/math/BigDecimal;\");\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n            } else if (fieldClass == BigInteger.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitFieldInsn(GETFIELD, context.className, context.fieldName(fieldInfo), \"[C\");\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanFieldBigInteger\", \"([C)Ljava/math/BigInteger;\");\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n            } else if (fieldClass == int[].class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitFieldInsn(GETFIELD, context.className, context.fieldName(fieldInfo), \"[C\");\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanFieldIntArray\", \"([C)[I\");\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n            } else if (fieldClass == float[].class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitFieldInsn(GETFIELD, context.className, context.fieldName(fieldInfo), \"[C\");\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanFieldFloatArray\", \"([C)[F\");\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n            } else if (fieldClass == float[][].class) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitFieldInsn(GETFIELD, context.className, context.fieldName(fieldInfo), \"[C\");\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanFieldFloatArray2\", \"([C)[[F\");\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n            } else if (fieldClass.isEnum()) {\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitFieldInsn(GETFIELD, context.className, context.fieldName(fieldInfo), \"[C\");\n                _getFieldDeser(context, mw, fieldInfo);\n                mw.visitMethodInsn(INVOKEVIRTUAL, type(JavaBeanDeserializer.class), \"scanEnum\"\n                        , \"(L\" + JSONLexerBase + \";[C\" + desc(ObjectDeserializer.class) + \")Ljava/lang/Enum;\");\n                mw.visitTypeInsn(CHECKCAST, type(fieldClass)); // cast\n                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n\n//            } else if (fieldClass.isEnum()) {\n//                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n//                mw.visitVarInsn(ALOAD, 0);\n//                mw.visitFieldInsn(GETFIELD, context.className, context.fieldName(fieldInfo), \"[C\");\n//                Label enumNull_ = new Label();\n//                mw.visitInsn(ACONST_NULL);\n//                mw.visitTypeInsn(CHECKCAST, type(fieldClass)); // cast\n//                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n//\n//                mw.visitVarInsn(ALOAD, 1);\n//\n//                mw.visitMethodInsn(INVOKEVIRTUAL, DefaultJSONParser, \"getSymbolTable\", \"()\" + desc(SymbolTable.class));\n//\n//                mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanFieldSymbol\",\n//                        \"([C\" + desc(SymbolTable.class) + \")Ljava/lang/String;\");\n//                mw.visitInsn(DUP);\n//                mw.visitVarInsn(ASTORE, context.var(fieldInfo.name + \"_asm_enumName\"));\n//\n//                mw.visitJumpInsn(IFNULL, enumNull_);\n//\n//                mw.visitVarInsn(ALOAD, context.var(fieldInfo.name + \"_asm_enumName\"));\n//                mw.visitMethodInsn(INVOKEVIRTUAL, type(String.class), \"length\", \"()I\");\n//                mw.visitJumpInsn(IFEQ, enumNull_);\n//\n//                mw.visitVarInsn(ALOAD, context.var(fieldInfo.name + \"_asm_enumName\"));\n//                mw.visitMethodInsn(INVOKESTATIC, type(fieldClass), \"valueOf\",\n//                        \"(Ljava/lang/String;)\" + desc(fieldClass));\n//                mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n//                mw.visitLabel(enumNull_);\n            } else if (Collection.class.isAssignableFrom(fieldClass)) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitFieldInsn(GETFIELD, context.className, context.fieldName(fieldInfo), \"[C\");\n\n                Class<?> itemClass = TypeUtils.getCollectionItemClass(fieldType);\n\n                if (itemClass == String.class) {\n                    mw.visitLdcInsn(com.alibaba.fastjson.asm.Type.getType(desc(fieldClass))); // cast\n                    mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"scanFieldStringArray\",\n                                       \"([CLjava/lang/Class;)\" + desc(Collection.class));\n                    mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n                } else {\n                    _deserialze_list_obj(context, mw, reset_, fieldInfo, fieldClass, itemClass, i);\n\n                    if (i == fieldListSize - 1) {\n                        _deserialize_endCheck(context, mw, reset_);\n                    }\n                    continue;\n                }\n            } else {\n                _deserialze_obj(context, mw, reset_, fieldInfo, fieldClass, i);\n\n                if (i == fieldListSize - 1) {\n                    _deserialize_endCheck(context, mw, reset_);\n                }\n\n                continue;\n            }\n\n            mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n            mw.visitFieldInsn(GETFIELD, JSONLexerBase, \"matchStat\", \"I\");\n            Label flag_ = new Label();\n            // mw.visitInsn(DUP);\n            mw.visitJumpInsn(IFLE, flag_);\n            _setFlag(mw, context, i);\n            mw.visitLabel(flag_);\n\n            mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n            mw.visitFieldInsn(GETFIELD, JSONLexerBase, \"matchStat\", \"I\");\n            mw.visitInsn(DUP);\n            mw.visitVarInsn(ISTORE, context.var(\"matchStat\"));\n\n            mw.visitLdcInsn(com.alibaba.fastjson.parser.JSONLexerBase.NOT_MATCH);\n            mw.visitJumpInsn(IF_ICMPEQ, reset_);\n\n            mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n            mw.visitFieldInsn(GETFIELD, JSONLexerBase, \"matchStat\", \"I\");\n            mw.visitJumpInsn(IFLE, notMatch_);\n\n            // increment matchedCount\n            mw.visitVarInsn(ILOAD, context.var(\"matchedCount\"));\n            mw.visitInsn(ICONST_1);\n            mw.visitInsn(IADD);\n            mw.visitVarInsn(ISTORE, context.var(\"matchedCount\"));\n\n            mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n            mw.visitFieldInsn(GETFIELD, JSONLexerBase, \"matchStat\", \"I\");\n            mw.visitLdcInsn(com.alibaba.fastjson.parser.JSONLexerBase.END);\n            mw.visitJumpInsn(IF_ICMPEQ, end_);\n\n            mw.visitLabel(notMatch_);\n\n            if (i == fieldListSize - 1) {\n                mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n                mw.visitFieldInsn(GETFIELD, JSONLexerBase, \"matchStat\", \"I\");\n                mw.visitLdcInsn(com.alibaba.fastjson.parser.JSONLexerBase.END);\n                mw.visitJumpInsn(IF_ICMPNE, reset_);\n            }\n        } // endFor\n\n        mw.visitLabel(end_);\n\n        if (!context.clazz.isInterface() && !Modifier.isAbstract(context.clazz.getModifiers())) {\n            _batchSet(context, mw);\n        }\n\n        mw.visitLabel(return_);\n\n        _setContext(context, mw);\n        mw.visitVarInsn(ALOAD, context.var(\"instance\"));\n\n        Method buildMethod = context.beanInfo.buildMethod;\n        if (buildMethod != null) {\n            mw.visitMethodInsn(INVOKEVIRTUAL, type(context.getInstClass()), buildMethod.getName(),\n                               \"()\" + desc(buildMethod.getReturnType()));\n        }\n\n        mw.visitInsn(ARETURN);\n\n        mw.visitLabel(reset_);\n\n        _batchSet(context, mw);\n        mw.visitVarInsn(ALOAD, 0);\n        mw.visitVarInsn(ALOAD, 1);\n        mw.visitVarInsn(ALOAD, 2);\n        mw.visitVarInsn(ALOAD, 3);\n        mw.visitVarInsn(ALOAD, context.var(\"instance\"));\n        mw.visitVarInsn(ILOAD, 4);\n\n\n        int flagSize = (fieldListSize / 32);\n\n        if (fieldListSize != 0 && (fieldListSize % 32) != 0) {\n            flagSize += 1;\n        }\n\n        if (flagSize == 1) {\n            mw.visitInsn(ICONST_1);\n        } else {\n            mw.visitIntInsn(BIPUSH, flagSize);\n        }\n        mw.visitIntInsn(NEWARRAY, T_INT);\n        for (int i = 0; i < flagSize; ++i) {\n            mw.visitInsn(DUP);\n            if (i == 0) {\n                mw.visitInsn(ICONST_0);\n            } else if (i == 1) {\n                mw.visitInsn(ICONST_1);\n            } else {\n                mw.visitIntInsn(BIPUSH, i);\n            }\n            mw.visitVarInsn(ILOAD, context.var(\"_asm_flag_\" + i));\n            mw.visitInsn(IASTORE);\n        }\n\n        mw.visitMethodInsn(INVOKEVIRTUAL, type(JavaBeanDeserializer.class),\n                           \"parseRest\", \"(L\" + DefaultJSONParser\n                                        + \";Ljava/lang/reflect/Type;Ljava/lang/Object;Ljava/lang/Object;I[I)Ljava/lang/Object;\");\n        mw.visitTypeInsn(CHECKCAST, type(context.clazz)); // cast\n        mw.visitInsn(ARETURN);\n\n        mw.visitLabel(super_);\n        mw.visitVarInsn(ALOAD, 0);\n        mw.visitVarInsn(ALOAD, 1);\n        mw.visitVarInsn(ALOAD, 2);\n        mw.visitVarInsn(ALOAD, 3);\n        mw.visitVarInsn(ILOAD, 4);\n        mw.visitMethodInsn(INVOKESPECIAL, type(JavaBeanDeserializer.class), //\n                           \"deserialze\", //\n                           \"(L\" + DefaultJSONParser + \";Ljava/lang/reflect/Type;Ljava/lang/Object;I)Ljava/lang/Object;\");\n        mw.visitInsn(ARETURN);\n\n        mw.visitMaxs(10, context.variantIndex);\n        mw.visitEnd();\n\n    }\n\n    private void defineVarLexer(Context context, MethodVisitor mw) {\n        mw.visitVarInsn(ALOAD, 1);\n        mw.visitFieldInsn(GETFIELD, DefaultJSONParser, \"lexer\", desc(JSONLexer.class));\n        mw.visitTypeInsn(CHECKCAST, JSONLexerBase); // cast\n        mw.visitVarInsn(ASTORE, context.var(\"lexer\"));\n    }\n\n    private void _createInstance(Context context, MethodVisitor mw) {\n        JavaBeanInfo beanInfo = context.beanInfo;\n        Constructor<?> defaultConstructor = beanInfo.defaultConstructor;\n        if (Modifier.isPublic(defaultConstructor.getModifiers())) {\n            mw.visitTypeInsn(NEW, type(context.getInstClass()));\n            mw.visitInsn(DUP);\n\n            mw.visitMethodInsn(INVOKESPECIAL, type(defaultConstructor.getDeclaringClass()), \"<init>\", \"()V\");\n        } else {\n            mw.visitVarInsn(ALOAD, 0);\n            mw.visitVarInsn(ALOAD, 1);\n            mw.visitVarInsn(ALOAD, 0);\n            mw.visitFieldInsn(GETFIELD, type(JavaBeanDeserializer.class), \"clazz\", \"Ljava/lang/Class;\");\n            mw.visitMethodInsn(INVOKESPECIAL, type(JavaBeanDeserializer.class), \"createInstance\",\n                               \"(L\" + DefaultJSONParser + \";Ljava/lang/reflect/Type;)Ljava/lang/Object;\");\n            mw.visitTypeInsn(CHECKCAST, type(context.getInstClass())); // cast\n        }\n\n        mw.visitVarInsn(ASTORE, context.var(\"instance\"));\n    }\n\n    private void _batchSet(Context context, MethodVisitor mw) {\n        _batchSet(context, mw, true);\n    }\n\n    private void _batchSet(Context context, MethodVisitor mw, boolean flag) {\n        for (int i = 0, size = context.fieldInfoList.length; i < size; ++i) {\n            Label notSet_ = new Label();\n\n            if (flag) {\n                _isFlag(mw, context, i, notSet_);\n            }\n\n            FieldInfo fieldInfo = context.fieldInfoList[i];\n            _loadAndSet(context, mw, fieldInfo);\n\n            if (flag) {\n                mw.visitLabel(notSet_);\n            }\n        }\n    }\n\n    private void _loadAndSet(Context context, MethodVisitor mw, FieldInfo fieldInfo) {\n        Class<?> fieldClass = fieldInfo.fieldClass;\n        Type fieldType = fieldInfo.fieldType;\n\n        if (fieldClass == boolean.class) {\n            mw.visitVarInsn(ALOAD, context.var(\"instance\"));\n            mw.visitVarInsn(ILOAD, context.var_asm(fieldInfo));\n            _set(context, mw, fieldInfo);\n        } else if (fieldClass == byte.class //\n                   || fieldClass == short.class //\n                   || fieldClass == int.class //\n                   || fieldClass == char.class) {\n            mw.visitVarInsn(ALOAD, context.var(\"instance\"));\n            mw.visitVarInsn(ILOAD, context.var_asm(fieldInfo));\n            _set(context, mw, fieldInfo);\n        } else if (fieldClass == long.class) {\n            mw.visitVarInsn(ALOAD, context.var(\"instance\"));\n            mw.visitVarInsn(LLOAD, context.var_asm(fieldInfo, 2));\n            if (fieldInfo.method != null) {\n                mw.visitMethodInsn(INVOKEVIRTUAL, type(context.getInstClass()), fieldInfo.method.getName(),\n                                   desc(fieldInfo.method));\n                if (!fieldInfo.method.getReturnType().equals(Void.TYPE)) {\n                    mw.visitInsn(POP);\n                }\n            } else {\n                mw.visitFieldInsn(PUTFIELD, type(fieldInfo.declaringClass), fieldInfo.field.getName(),\n                                  desc(fieldInfo.fieldClass));\n            }\n        } else if (fieldClass == float.class) {\n            mw.visitVarInsn(ALOAD, context.var(\"instance\"));\n            mw.visitVarInsn(FLOAD, context.var_asm(fieldInfo));\n            _set(context, mw, fieldInfo);\n        } else if (fieldClass == double.class) {\n            mw.visitVarInsn(ALOAD, context.var(\"instance\"));\n            mw.visitVarInsn(DLOAD, context.var_asm(fieldInfo, 2));\n            _set(context, mw, fieldInfo);\n        } else if (fieldClass == String.class) {\n            mw.visitVarInsn(ALOAD, context.var(\"instance\"));\n            mw.visitVarInsn(ALOAD, context.var_asm(fieldInfo));\n            _set(context, mw, fieldInfo);\n        } else if (fieldClass.isEnum()) {\n            mw.visitVarInsn(ALOAD, context.var(\"instance\"));\n            mw.visitVarInsn(ALOAD, context.var_asm(fieldInfo));\n            _set(context, mw, fieldInfo);\n        } else if (Collection.class.isAssignableFrom(fieldClass)) {\n            mw.visitVarInsn(ALOAD, context.var(\"instance\"));\n            Type itemType = TypeUtils.getCollectionItemClass(fieldType);\n            if (itemType == String.class) {\n                mw.visitVarInsn(ALOAD, context.var_asm(fieldInfo));\n                mw.visitTypeInsn(CHECKCAST, type(fieldClass)); // cast\n            } else {\n                mw.visitVarInsn(ALOAD, context.var_asm(fieldInfo));\n            }\n            _set(context, mw, fieldInfo);\n\n        } else {\n            mw.visitVarInsn(ALOAD, context.var(\"instance\"));\n            mw.visitVarInsn(ALOAD, context.var_asm(fieldInfo));\n            _set(context, mw, fieldInfo);\n        }\n    }\n\n    private void _set(Context context, MethodVisitor mw, FieldInfo fieldInfo) {\n        Method method = fieldInfo.method;\n        if (method != null) {\n            Class<?> declaringClass = method.getDeclaringClass();\n            mw.visitMethodInsn(declaringClass.isInterface() ? INVOKEINTERFACE : INVOKEVIRTUAL, type(fieldInfo.declaringClass), method.getName(), desc(method));\n\n            if (!fieldInfo.method.getReturnType().equals(Void.TYPE)) {\n                mw.visitInsn(POP);\n            }\n        } else {\n            mw.visitFieldInsn(PUTFIELD, type(fieldInfo.declaringClass), fieldInfo.field.getName(),\n                              desc(fieldInfo.fieldClass));\n        }\n    }\n\n    private void _setContext(Context context, MethodVisitor mw) {\n        mw.visitVarInsn(ALOAD, 1); // parser\n        mw.visitVarInsn(ALOAD, context.var(\"context\"));\n        mw.visitMethodInsn(INVOKEVIRTUAL, DefaultJSONParser, \"setContext\", \"(\" + desc(ParseContext.class) + \")V\");\n\n        Label endIf_ = new Label();\n        mw.visitVarInsn(ALOAD, context.var(\"childContext\"));\n        mw.visitJumpInsn(IFNULL, endIf_);\n\n        mw.visitVarInsn(ALOAD, context.var(\"childContext\"));\n        mw.visitVarInsn(ALOAD, context.var(\"instance\"));\n        mw.visitFieldInsn(PUTFIELD, type(ParseContext.class), \"object\", \"Ljava/lang/Object;\");\n\n        mw.visitLabel(endIf_);\n    }\n\n    private void _deserialize_endCheck(Context context, MethodVisitor mw, Label reset_) {\n        mw.visitIntInsn(ILOAD, context.var(\"matchedCount\"));\n        mw.visitJumpInsn(IFLE, reset_);\n\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"token\", \"()I\");\n        mw.visitLdcInsn(JSONToken.RBRACE);\n        mw.visitJumpInsn(IF_ICMPNE, reset_);\n\n        // mw.visitLabel(nextToken_);\n        _quickNextTokenComma(context, mw);\n    }\n\n    private void _deserialze_list_obj(Context context, MethodVisitor mw, Label reset_, FieldInfo fieldInfo,\n                                      Class<?> fieldClass, Class<?> itemType, int i) {\n        Label _end_if = new Label();\n\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"matchField\", \"([C)Z\");\n        mw.visitJumpInsn(IFEQ, _end_if);\n\n        _setFlag(mw, context, i);\n\n        Label valueNotNull_ = new Label();\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"token\", \"()I\");\n        mw.visitLdcInsn(JSONToken.NULL);\n        mw.visitJumpInsn(IF_ICMPNE, valueNotNull_);\n\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitLdcInsn(JSONToken.COMMA);\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"nextToken\", \"(I)V\");\n        mw.visitJumpInsn(GOTO, _end_if);\n        // loop_end_\n\n        mw.visitLabel(valueNotNull_);\n\n        Label storeCollection_ = new Label(), endSet_ = new Label(), lbacketNormal_ = new Label();\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"token\", \"()I\");\n        mw.visitLdcInsn(JSONToken.SET);\n        mw.visitJumpInsn(IF_ICMPNE, endSet_);\n\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitLdcInsn(JSONToken.LBRACKET);\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"nextToken\", \"(I)V\");\n\n        _newCollection(mw, fieldClass, i, true);\n\n        mw.visitJumpInsn(GOTO, storeCollection_);\n\n        mw.visitLabel(endSet_);\n\n        // if (lexer.token() != JSONToken.LBRACKET) reset\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"token\", \"()I\");\n        mw.visitLdcInsn(JSONToken.LBRACKET);\n        mw.visitJumpInsn(IF_ICMPEQ, lbacketNormal_);\n\n        // if (lexer.token() == JSONToken.LBRACE) reset\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"token\", \"()I\");\n        mw.visitLdcInsn(JSONToken.LBRACE);\n        mw.visitJumpInsn(IF_ICMPNE, reset_);\n\n        _newCollection(mw, fieldClass, i, false);\n        mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n\n        _getCollectionFieldItemDeser(context, mw, fieldInfo, itemType);\n        mw.visitVarInsn(ALOAD, 1);\n        mw.visitLdcInsn(com.alibaba.fastjson.asm.Type.getType(desc(itemType)));\n        mw.visitInsn(ICONST_0);\n        mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Integer\", \"valueOf\", \"(I)Ljava/lang/Integer;\");\n        mw.visitMethodInsn(INVOKEINTERFACE, type(ObjectDeserializer.class), \"deserialze\",\n                \"(L\" + DefaultJSONParser + \";Ljava/lang/reflect/Type;Ljava/lang/Object;)Ljava/lang/Object;\");\n        mw.visitVarInsn(ASTORE, context.var(\"list_item_value\"));\n\n        mw.visitVarInsn(ALOAD, context.var_asm(fieldInfo));\n        mw.visitVarInsn(ALOAD, context.var(\"list_item_value\"));\n        if (fieldClass.isInterface()) {\n            mw.visitMethodInsn(INVOKEINTERFACE, type(fieldClass), \"add\", \"(Ljava/lang/Object;)Z\");\n        } else {\n            mw.visitMethodInsn(INVOKEVIRTUAL, type(fieldClass), \"add\", \"(Ljava/lang/Object;)Z\");\n        }\n        mw.visitInsn(POP);\n\n        mw.visitJumpInsn(GOTO, _end_if);\n\n        mw.visitLabel(lbacketNormal_);\n\n        _newCollection(mw, fieldClass, i, false);\n\n        mw.visitLabel(storeCollection_);\n        mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n\n        boolean isPrimitive = ParserConfig.isPrimitive2(fieldInfo.fieldClass);\n        _getCollectionFieldItemDeser(context, mw, fieldInfo, itemType);\n        if (isPrimitive) {\n            mw.visitMethodInsn(INVOKEINTERFACE, type(ObjectDeserializer.class), \"getFastMatchToken\", \"()I\");\n            mw.visitVarInsn(ISTORE, context.var(\"fastMatchToken\"));\n\n            mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n            mw.visitVarInsn(ILOAD, context.var(\"fastMatchToken\"));\n            mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"nextToken\", \"(I)V\");\n        } else {\n            mw.visitInsn(POP);\n            mw.visitLdcInsn(JSONToken.LBRACE);\n            mw.visitVarInsn(ISTORE, context.var(\"fastMatchToken\"));\n\n            _quickNextToken(context, mw, JSONToken.LBRACE);\n        }\n\n        { // setContext\n            mw.visitVarInsn(ALOAD, 1);\n            mw.visitMethodInsn(INVOKEVIRTUAL, DefaultJSONParser, \"getContext\", \"()\" + desc(ParseContext.class));\n            mw.visitVarInsn(ASTORE, context.var(\"listContext\"));\n\n            mw.visitVarInsn(ALOAD, 1); // parser\n            mw.visitVarInsn(ALOAD, context.var_asm(fieldInfo));\n            mw.visitLdcInsn(fieldInfo.name);\n            mw.visitMethodInsn(INVOKEVIRTUAL, DefaultJSONParser, \"setContext\",\n                               \"(Ljava/lang/Object;Ljava/lang/Object;)\" + desc(ParseContext.class));\n            mw.visitInsn(POP);\n        }\n\n        Label loop_ = new Label();\n        Label loop_end_ = new Label();\n\n        // for (;;) {\n        mw.visitInsn(ICONST_0);\n        mw.visitVarInsn(ISTORE, context.var(\"i\"));\n        mw.visitLabel(loop_);\n\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"token\", \"()I\");\n        mw.visitLdcInsn(JSONToken.RBRACKET);\n\n        mw.visitJumpInsn(IF_ICMPEQ, loop_end_);\n\n        // Object value = itemDeserializer.deserialze(parser, null);\n        // array.add(value);\n\n        mw.visitVarInsn(ALOAD, 0);\n        mw.visitFieldInsn(GETFIELD, context.className, fieldInfo.name + \"_asm_list_item_deser__\",\n                          desc(ObjectDeserializer.class));\n        mw.visitVarInsn(ALOAD, 1);\n        mw.visitLdcInsn(com.alibaba.fastjson.asm.Type.getType(desc(itemType)));\n        mw.visitVarInsn(ILOAD, context.var(\"i\"));\n        mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Integer\", \"valueOf\", \"(I)Ljava/lang/Integer;\");\n        mw.visitMethodInsn(INVOKEINTERFACE, type(ObjectDeserializer.class), \"deserialze\",\n                           \"(L\" + DefaultJSONParser + \";Ljava/lang/reflect/Type;Ljava/lang/Object;)Ljava/lang/Object;\");\n        mw.visitVarInsn(ASTORE, context.var(\"list_item_value\"));\n\n        mw.visitIincInsn(context.var(\"i\"), 1);\n\n        mw.visitVarInsn(ALOAD, context.var_asm(fieldInfo));\n        mw.visitVarInsn(ALOAD, context.var(\"list_item_value\"));\n        if (fieldClass.isInterface()) {\n            mw.visitMethodInsn(INVOKEINTERFACE, type(fieldClass), \"add\", \"(Ljava/lang/Object;)Z\");\n        } else {\n            mw.visitMethodInsn(INVOKEVIRTUAL, type(fieldClass), \"add\", \"(Ljava/lang/Object;)Z\");\n        }\n        mw.visitInsn(POP);\n\n        mw.visitVarInsn(ALOAD, 1);\n        mw.visitVarInsn(ALOAD, context.var_asm(fieldInfo));\n        mw.visitMethodInsn(INVOKEVIRTUAL, DefaultJSONParser, \"checkListResolve\", \"(Ljava/util/Collection;)V\");\n\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"token\", \"()I\");\n        mw.visitLdcInsn(JSONToken.COMMA);\n        mw.visitJumpInsn(IF_ICMPNE, loop_);\n\n        if (isPrimitive) {\n            mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n            mw.visitVarInsn(ILOAD, context.var(\"fastMatchToken\"));\n            mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"nextToken\", \"(I)V\");\n        } else {\n            _quickNextToken(context, mw, JSONToken.LBRACE);\n        }\n        \n        mw.visitJumpInsn(GOTO, loop_);\n\n        mw.visitLabel(loop_end_);\n\n        // mw.visitVarInsn(ASTORE, context.var(\"context\"));\n        // parser.setContext(context);\n        { // setContext\n            mw.visitVarInsn(ALOAD, 1); // parser\n            mw.visitVarInsn(ALOAD, context.var(\"listContext\"));\n            mw.visitMethodInsn(INVOKEVIRTUAL, DefaultJSONParser, \"setContext\", \"(\" + desc(ParseContext.class) + \")V\");\n        }\n\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"token\", \"()I\");\n        mw.visitLdcInsn(JSONToken.RBRACKET);\n        mw.visitJumpInsn(IF_ICMPNE, reset_);\n\n        _quickNextTokenComma(context, mw);\n        // lexer.nextToken(JSONToken.COMMA);\n\n        mw.visitLabel(_end_if);\n    }\n\n    private void _quickNextToken(Context context, MethodVisitor mw, int token) {\n        Label quickElse_ = new Label(), quickEnd_ = new Label();\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"getCurrent\", \"()C\");\n        if (token == JSONToken.LBRACE) {\n            mw.visitVarInsn(BIPUSH, '{');\n        } else if (token == JSONToken.LBRACKET) {\n            mw.visitVarInsn(BIPUSH, '[');\n        } else {\n            throw new IllegalStateException();\n        }\n\n        mw.visitJumpInsn(IF_ICMPNE, quickElse_);\n\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"next\", \"()C\");\n        mw.visitInsn(POP);\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitLdcInsn(token);\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"setToken\", \"(I)V\");\n        mw.visitJumpInsn(GOTO, quickEnd_);\n\n        mw.visitLabel(quickElse_);\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitLdcInsn(token);\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"nextToken\", \"(I)V\");\n\n        mw.visitLabel(quickEnd_);\n    }\n    \n    private void _quickNextTokenComma(Context context, MethodVisitor mw) {\n        Label quickElse_ = new Label(), quickElseIf0_ = new Label(), quickElseIf1_ = new Label(), quickElseIf2_ = new Label(), quickEnd_ = new Label();\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"getCurrent\", \"()C\");\n        mw.visitInsn(DUP);\n        mw.visitVarInsn(ISTORE, context.var(\"ch\"));\n        mw.visitVarInsn(BIPUSH, ',');\n        mw.visitJumpInsn(IF_ICMPNE, quickElseIf0_);\n\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"next\", \"()C\");\n        mw.visitInsn(POP);\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitLdcInsn(JSONToken.COMMA);\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"setToken\", \"(I)V\");\n        mw.visitJumpInsn(GOTO, quickEnd_);\n        \n        mw.visitLabel(quickElseIf0_);\n        mw.visitVarInsn(ILOAD, context.var(\"ch\"));\n        mw.visitVarInsn(BIPUSH, '}');\n        mw.visitJumpInsn(IF_ICMPNE, quickElseIf1_);\n\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"next\", \"()C\");\n        mw.visitInsn(POP);\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitLdcInsn(JSONToken.RBRACE);\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"setToken\", \"(I)V\");\n        mw.visitJumpInsn(GOTO, quickEnd_);\n        \n        mw.visitLabel(quickElseIf1_);\n        mw.visitVarInsn(ILOAD, context.var(\"ch\"));\n        mw.visitVarInsn(BIPUSH, ']');\n        mw.visitJumpInsn(IF_ICMPNE, quickElseIf2_);\n\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"next\", \"()C\");\n        mw.visitInsn(POP);\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitLdcInsn(JSONToken.RBRACKET);\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"setToken\", \"(I)V\");\n        mw.visitJumpInsn(GOTO, quickEnd_);\n        \n        mw.visitLabel(quickElseIf2_);\n        mw.visitVarInsn(ILOAD, context.var(\"ch\"));\n        mw.visitVarInsn(BIPUSH, JSONLexer.EOI);\n        mw.visitJumpInsn(IF_ICMPNE, quickElse_);\n\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitLdcInsn(JSONToken.EOF);\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"setToken\", \"(I)V\");\n        mw.visitJumpInsn(GOTO, quickEnd_);\n\n        mw.visitLabel(quickElse_);\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"nextToken\", \"()V\");\n\n        mw.visitLabel(quickEnd_);\n    }\n    \n    private void _getCollectionFieldItemDeser(Context context, MethodVisitor mw, FieldInfo fieldInfo,\n                                              Class<?> itemType) {\n        Label notNull_ = new Label();\n        mw.visitVarInsn(ALOAD, 0);\n        mw.visitFieldInsn(GETFIELD, context.className, fieldInfo.name + \"_asm_list_item_deser__\",\n                          desc(ObjectDeserializer.class));\n        mw.visitJumpInsn(IFNONNULL, notNull_);\n\n        mw.visitVarInsn(ALOAD, 0);\n\n        mw.visitVarInsn(ALOAD, 1);\n        mw.visitMethodInsn(INVOKEVIRTUAL, DefaultJSONParser, \"getConfig\", \"()\" + desc(ParserConfig.class));\n        mw.visitLdcInsn(com.alibaba.fastjson.asm.Type.getType(desc(itemType)));\n        mw.visitMethodInsn(INVOKEVIRTUAL, type(ParserConfig.class), \"getDeserializer\",\n                           \"(Ljava/lang/reflect/Type;)\" + desc(ObjectDeserializer.class));\n\n        mw.visitFieldInsn(PUTFIELD, context.className, fieldInfo.name + \"_asm_list_item_deser__\",\n                          desc(ObjectDeserializer.class));\n\n        mw.visitLabel(notNull_);\n        mw.visitVarInsn(ALOAD, 0);\n        mw.visitFieldInsn(GETFIELD, context.className, fieldInfo.name + \"_asm_list_item_deser__\",\n                          desc(ObjectDeserializer.class));\n    }\n\n    private void _newCollection(MethodVisitor mw, Class<?> fieldClass, int i, boolean set) {\n        if (fieldClass.isAssignableFrom(ArrayList.class) && !set) {\n            mw.visitTypeInsn(NEW, \"java/util/ArrayList\");\n            mw.visitInsn(DUP);\n            mw.visitMethodInsn(INVOKESPECIAL, \"java/util/ArrayList\", \"<init>\", \"()V\");\n        } else if (fieldClass.isAssignableFrom(LinkedList.class) && !set) {\n            mw.visitTypeInsn(NEW, type(LinkedList.class));\n            mw.visitInsn(DUP);\n            mw.visitMethodInsn(INVOKESPECIAL, type(LinkedList.class), \"<init>\", \"()V\");\n        } else if (fieldClass.isAssignableFrom(HashSet.class)) {\n            mw.visitTypeInsn(NEW, type(HashSet.class));\n            mw.visitInsn(DUP);\n            mw.visitMethodInsn(INVOKESPECIAL, type(HashSet.class), \"<init>\", \"()V\");\n        } else if (fieldClass.isAssignableFrom(TreeSet.class)) {\n            mw.visitTypeInsn(NEW, type(TreeSet.class));\n            mw.visitInsn(DUP);\n            mw.visitMethodInsn(INVOKESPECIAL, type(TreeSet.class), \"<init>\", \"()V\");\n        } else if (fieldClass.isAssignableFrom(LinkedHashSet.class)) {\n            mw.visitTypeInsn(NEW, type(LinkedHashSet.class));\n            mw.visitInsn(DUP);\n            mw.visitMethodInsn(INVOKESPECIAL, type(LinkedHashSet.class), \"<init>\", \"()V\");\n        } else if (set) {\n            mw.visitTypeInsn(NEW, type(HashSet.class));\n            mw.visitInsn(DUP);\n            mw.visitMethodInsn(INVOKESPECIAL, type(HashSet.class), \"<init>\", \"()V\");\n        } else {\n            mw.visitVarInsn(ALOAD, 0);\n            mw.visitLdcInsn(i);\n            mw.visitMethodInsn(INVOKEVIRTUAL, type(JavaBeanDeserializer.class), \"getFieldType\",\n                               \"(I)Ljava/lang/reflect/Type;\");\n            mw.visitMethodInsn(INVOKESTATIC, type(TypeUtils.class), \"createCollection\",\n                               \"(Ljava/lang/reflect/Type;)Ljava/util/Collection;\");\n        }\n        mw.visitTypeInsn(CHECKCAST, type(fieldClass)); // cast\n    }\n\n    private void _deserialze_obj(Context context, MethodVisitor mw, Label reset_, FieldInfo fieldInfo,\n                                 Class<?> fieldClass, int i) {\n        Label matched_ = new Label();\n        Label _end_if = new Label();\n\n        mw.visitVarInsn(ALOAD, context.var(\"lexer\"));\n        mw.visitVarInsn(ALOAD, 0);\n        mw.visitFieldInsn(GETFIELD, context.className, context.fieldName(fieldInfo), \"[C\");\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONLexerBase, \"matchField\", \"([C)Z\");\n        mw.visitJumpInsn(IFNE, matched_);\n        mw.visitInsn(ACONST_NULL);\n        mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n\n        mw.visitJumpInsn(GOTO, _end_if);\n\n        mw.visitLabel(matched_);\n\n        _setFlag(mw, context, i);\n\n        // increment matchedCount\n        mw.visitVarInsn(ILOAD, context.var(\"matchedCount\"));\n        mw.visitInsn(ICONST_1);\n        mw.visitInsn(IADD);\n        mw.visitVarInsn(ISTORE, context.var(\"matchedCount\"));\n\n        _deserObject(context, mw, fieldInfo, fieldClass, i);\n\n        mw.visitVarInsn(ALOAD, 1);\n        mw.visitMethodInsn(INVOKEVIRTUAL, DefaultJSONParser, \"getResolveStatus\", \"()I\");\n        mw.visitLdcInsn(com.alibaba.fastjson.parser.DefaultJSONParser.NeedToResolve);\n        mw.visitJumpInsn(IF_ICMPNE, _end_if);\n\n        mw.visitVarInsn(ALOAD, 1);\n        mw.visitMethodInsn(INVOKEVIRTUAL, DefaultJSONParser, \"getLastResolveTask\", \"()\" + desc(ResolveTask.class));\n        mw.visitVarInsn(ASTORE, context.var(\"resolveTask\"));\n\n        mw.visitVarInsn(ALOAD, context.var(\"resolveTask\"));\n        mw.visitVarInsn(ALOAD, 1);\n        mw.visitMethodInsn(INVOKEVIRTUAL, DefaultJSONParser, \"getContext\", \"()\" + desc(ParseContext.class));\n        mw.visitFieldInsn(PUTFIELD, type(ResolveTask.class), \"ownerContext\", desc(ParseContext.class));\n\n        mw.visitVarInsn(ALOAD, context.var(\"resolveTask\"));\n        mw.visitVarInsn(ALOAD, 0);\n        mw.visitLdcInsn(fieldInfo.name);\n        mw.visitMethodInsn(INVOKEVIRTUAL, type(JavaBeanDeserializer.class), \"getFieldDeserializer\",\n                           \"(Ljava/lang/String;)\" + desc(FieldDeserializer.class));\n        mw.visitFieldInsn(PUTFIELD, type(ResolveTask.class), \"fieldDeserializer\", desc(FieldDeserializer.class));\n\n        mw.visitVarInsn(ALOAD, 1);\n        mw.visitLdcInsn(com.alibaba.fastjson.parser.DefaultJSONParser.NONE);\n        mw.visitMethodInsn(INVOKEVIRTUAL, DefaultJSONParser, \"setResolveStatus\", \"(I)V\");\n\n        mw.visitLabel(_end_if);\n\n    }\n\n    private void _deserObject(Context context, MethodVisitor mw, FieldInfo fieldInfo, Class<?> fieldClass, int i) {\n        _getFieldDeser(context, mw, fieldInfo);\n\n        Label instanceOfElse_ = new Label(), instanceOfEnd_ = new Label();\n        if ((fieldInfo.parserFeatures & Feature.SupportArrayToBean.mask) != 0) {\n            mw.visitInsn(DUP);\n            mw.visitTypeInsn(INSTANCEOF, type(JavaBeanDeserializer.class));\n            mw.visitJumpInsn(IFEQ, instanceOfElse_);\n            \n            mw.visitTypeInsn(CHECKCAST, type(JavaBeanDeserializer.class)); // cast\n            mw.visitVarInsn(ALOAD, 1);\n            if (fieldInfo.fieldType instanceof Class) {\n                mw.visitLdcInsn(com.alibaba.fastjson.asm.Type.getType(desc(fieldInfo.fieldClass)));\n            } else {\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitLdcInsn(i);\n                mw.visitMethodInsn(INVOKEVIRTUAL, type(JavaBeanDeserializer.class), \"getFieldType\",\n                                   \"(I)Ljava/lang/reflect/Type;\");\n            }\n            mw.visitLdcInsn(fieldInfo.name);\n            mw.visitLdcInsn(fieldInfo.parserFeatures);\n            mw.visitMethodInsn(INVOKEVIRTUAL, type(JavaBeanDeserializer.class), \"deserialze\",\n                               \"(L\" + DefaultJSONParser + \";Ljava/lang/reflect/Type;Ljava/lang/Object;I)Ljava/lang/Object;\");\n            mw.visitTypeInsn(CHECKCAST, type(fieldClass)); // cast\n            mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n            \n            mw.visitJumpInsn(GOTO, instanceOfEnd_);\n            \n            mw.visitLabel(instanceOfElse_);\n        }\n\n        mw.visitVarInsn(ALOAD, 1);\n        if (fieldInfo.fieldType instanceof Class) {\n            mw.visitLdcInsn(com.alibaba.fastjson.asm.Type.getType(desc(fieldInfo.fieldClass)));\n        } else {\n            mw.visitVarInsn(ALOAD, 0);\n            mw.visitLdcInsn(i);\n            mw.visitMethodInsn(INVOKEVIRTUAL, type(JavaBeanDeserializer.class), \"getFieldType\",\n                               \"(I)Ljava/lang/reflect/Type;\");\n        }\n        mw.visitLdcInsn(fieldInfo.name);\n        mw.visitMethodInsn(INVOKEINTERFACE, type(ObjectDeserializer.class), \"deserialze\",\n                           \"(L\" + DefaultJSONParser + \";Ljava/lang/reflect/Type;Ljava/lang/Object;)Ljava/lang/Object;\");\n        mw.visitTypeInsn(CHECKCAST, type(fieldClass)); // cast\n        mw.visitVarInsn(ASTORE, context.var_asm(fieldInfo));\n        \n        mw.visitLabel(instanceOfEnd_);\n    }\n\n    private void _getFieldDeser(Context context, MethodVisitor mw, FieldInfo fieldInfo) {\n        Label notNull_ = new Label();\n        mw.visitVarInsn(ALOAD, 0);\n        mw.visitFieldInsn(GETFIELD, context.className, context.fieldDeserName(fieldInfo), desc(ObjectDeserializer.class));\n        mw.visitJumpInsn(IFNONNULL, notNull_);\n\n        mw.visitVarInsn(ALOAD, 0);\n\n        mw.visitVarInsn(ALOAD, 1);\n        mw.visitMethodInsn(INVOKEVIRTUAL, DefaultJSONParser, \"getConfig\", \"()\" + desc(ParserConfig.class));\n        mw.visitLdcInsn(com.alibaba.fastjson.asm.Type.getType(desc(fieldInfo.fieldClass)));\n        mw.visitMethodInsn(INVOKEVIRTUAL, type(ParserConfig.class), \"getDeserializer\",\n                           \"(Ljava/lang/reflect/Type;)\" + desc(ObjectDeserializer.class));\n\n        mw.visitFieldInsn(PUTFIELD, context.className, context.fieldDeserName(fieldInfo), desc(ObjectDeserializer.class));\n\n        mw.visitLabel(notNull_);\n\n        mw.visitVarInsn(ALOAD, 0);\n        mw.visitFieldInsn(GETFIELD, context.className, context.fieldDeserName(fieldInfo), desc(ObjectDeserializer.class));\n    }\n\n    static class Context {\n\n        static final int                   parser       = 1;\n        static final int                   type         = 2;\n        static final int                   fieldName    = 3;\n\n        private int                        variantIndex = -1;\n        private final Map<String, Integer> variants     = new HashMap<String, Integer>();\n\n        private final Class<?>             clazz;\n        private final JavaBeanInfo         beanInfo;\n        private final String               className;\n        private FieldInfo[]                fieldInfoList;\n\n        public Context(String className, ParserConfig config, JavaBeanInfo beanInfo, int initVariantIndex){\n            this.className = className;\n            this.clazz = beanInfo.clazz;\n            this.variantIndex = initVariantIndex;\n            this.beanInfo = beanInfo;\n            fieldInfoList = beanInfo.fields;\n        }\n\n        public Class<?> getInstClass() {\n            Class<?> instClass = beanInfo.builderClass;\n            if (instClass == null) {\n                instClass = clazz;\n            }\n\n            return instClass;\n        }\n\n        public int var(String name, int increment) {\n            Integer i = variants.get(name);\n            if (i == null) {\n                variants.put(name, variantIndex);\n                variantIndex += increment;\n            }\n            i = variants.get(name);\n            return i.intValue();\n        }\n\n        public int var(String name) {\n            Integer i = variants.get(name);\n            if (i == null) {\n                variants.put(name, variantIndex++);\n            }\n            i = variants.get(name);\n            return i.intValue();\n        }\n\n        public int var_asm(FieldInfo fieldInfo) {\n            return var(fieldInfo.name + \"_asm\");\n        }\n\n        public int var_asm(FieldInfo fieldInfo, int increment) {\n            return var(fieldInfo.name + \"_asm\", increment);\n        }\n\n        public String fieldName(FieldInfo fieldInfo) {\n            return validIdent(fieldInfo.name)\n                    ? fieldInfo.name + \"_asm_prefix__\"\n                    : \"asm_field_\" + TypeUtils.fnv1a_64_extract(fieldInfo.name);\n        }\n\n\n        public String fieldDeserName(FieldInfo fieldInfo) {\n            return validIdent(fieldInfo.name)\n                    ? fieldInfo.name + \"_asm_deser__\"\n                    : \"_asm_deser__\" + TypeUtils.fnv1a_64_extract(fieldInfo.name);\n        }\n\n\n        boolean validIdent(String name) {\n            for (int i = 0; i < name.length(); ++i) {\n                char ch = name.charAt(i);\n                if (ch == 0) {\n                    if (!IOUtils.firstIdentifier(ch)) {\n                        return false;\n                    }\n                } else {\n                    if (!IOUtils.isIdent(ch)) {\n                        return false;\n                    }\n                }\n            }\n\n            return true;\n        }\n    }\n\n    private void _init(ClassWriter cw, Context context) {\n        for (int i = 0, size = context.fieldInfoList.length; i < size; ++i) {\n            FieldInfo fieldInfo = context.fieldInfoList[i];\n\n            FieldWriter fw = new FieldWriter(cw, ACC_PUBLIC, context.fieldName(fieldInfo), \"[C\");\n            fw.visitEnd();\n        }\n\n        for (int i = 0, size = context.fieldInfoList.length; i < size; ++i) {\n            FieldInfo fieldInfo = context.fieldInfoList[i];\n            Class<?> fieldClass = fieldInfo.fieldClass;\n\n            if (fieldClass.isPrimitive()) {\n                continue;\n            }\n\n            if (Collection.class.isAssignableFrom(fieldClass)) {\n                FieldWriter fw = new FieldWriter(cw, ACC_PUBLIC, fieldInfo.name + \"_asm_list_item_deser__\",\n                                                 desc(ObjectDeserializer.class));\n                fw.visitEnd();\n            } else {\n                FieldWriter fw = new FieldWriter(cw, ACC_PUBLIC, context.fieldDeserName(fieldInfo),\n                                                 desc(ObjectDeserializer.class));\n                fw.visitEnd();\n            }\n        }\n\n        MethodVisitor mw = new MethodWriter(cw, ACC_PUBLIC, \"<init>\",\n                                            \"(\" + desc(ParserConfig.class) + desc(JavaBeanInfo.class) + \")V\", null, null);\n        mw.visitVarInsn(ALOAD, 0);\n        mw.visitVarInsn(ALOAD, 1);\n        mw.visitVarInsn(ALOAD, 2);\n        mw.visitMethodInsn(INVOKESPECIAL, type(JavaBeanDeserializer.class), \"<init>\",\n                           \"(\" + desc(ParserConfig.class) + desc(JavaBeanInfo.class) + \")V\");\n\n        // init fieldNamePrefix\n        for (int i = 0, size = context.fieldInfoList.length; i < size; ++i) {\n            FieldInfo fieldInfo = context.fieldInfoList[i];\n\n            mw.visitVarInsn(ALOAD, 0);\n            mw.visitLdcInsn(\"\\\"\" + fieldInfo.name + \"\\\":\"); // public char[] toCharArray()\n            mw.visitMethodInsn(INVOKEVIRTUAL, \"java/lang/String\", \"toCharArray\", \"()[C\");\n            mw.visitFieldInsn(PUTFIELD, context.className, context.fieldName(fieldInfo), \"[C\");\n\n        }\n\n        mw.visitInsn(RETURN);\n        mw.visitMaxs(4, 4);\n        mw.visitEnd();\n    }\n\n    private void _createInstance(ClassWriter cw, Context context) {\n        Constructor<?> defaultConstructor = context.beanInfo.defaultConstructor;\n        if (!Modifier.isPublic(defaultConstructor.getModifiers())) {\n            return;\n        }\n        \n        MethodVisitor mw = new MethodWriter(cw, ACC_PUBLIC, \"createInstance\",\n                                            \"(L\" + DefaultJSONParser + \";Ljava/lang/reflect/Type;)Ljava/lang/Object;\",\n                                            null, null);\n\n        mw.visitTypeInsn(NEW, type(context.getInstClass()));\n        mw.visitInsn(DUP);\n        mw.visitMethodInsn(INVOKESPECIAL, type(context.getInstClass()), \"<init>\", \"()V\");\n\n        mw.visitInsn(ARETURN);\n        mw.visitMaxs(3, 3);\n        mw.visitEnd();\n    }\n\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/AbstractDateDeserializer.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\nimport java.lang.reflect.Type;\nimport java.text.ParseException;\nimport java.text.SimpleDateFormat;\nimport java.util.Locale;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.*;\nimport com.alibaba.fastjson.util.TypeUtils;\n\npublic abstract class AbstractDateDeserializer extends ContextObjectDeserializer implements ObjectDeserializer {\n\n    public <T> T deserialze(DefaultJSONParser parser, Type clazz, Object fieldName) {\n        return deserialze(parser, clazz, fieldName, null, 0);\n    }\n    \n    @Override\n    @SuppressWarnings(\"unchecked\")\n    public <T> T deserialze(DefaultJSONParser parser, Type clazz, Object fieldName, String format, int features) {\n        JSONLexer lexer = parser.lexer;\n\n        Object val;\n        if (lexer.token() == JSONToken.LITERAL_INT) {\n            long millis = lexer.longValue();\n            lexer.nextToken(JSONToken.COMMA);\n            if (\"unixtime\".equals(format)) {\n                millis *= 1000;\n            }\n            val = millis;\n        } else if (lexer.token() == JSONToken.LITERAL_STRING) {\n            String strVal = lexer.stringVal();\n            \n            if (format != null) {\n                if (\"yyyy-MM-dd HH:mm:ss.SSSSSSSSS\".equals(format)\n                        && clazz instanceof Class\n                        && ((Class) clazz).getName().equals(\"java.sql.Timestamp\")) {\n                    return (T) TypeUtils.castToTimestamp(strVal);\n                }\n\n                SimpleDateFormat simpleDateFormat = null;\n                try {\n                    simpleDateFormat = new SimpleDateFormat(format, parser.lexer.getLocale());\n                } catch (IllegalArgumentException ex) {\n                    if (format.contains(\"T\")) {\n                        String fromat2 = format.replaceAll(\"T\", \"'T'\");\n                        try {\n                        simpleDateFormat = new SimpleDateFormat(fromat2, parser.lexer.getLocale());\n                        } catch (IllegalArgumentException e2) {\n                            throw ex;\n                        }\n                    }\n                }\n\n                if (JSON.defaultTimeZone != null) {\n                    simpleDateFormat.setTimeZone(parser.lexer.getTimeZone());\n                }\n\n                try {\n                    val = simpleDateFormat.parse(strVal);\n                } catch (ParseException ex) {\n                    val = null;\n                    // skip\n                }\n\n                if (val == null && JSON.defaultLocale == Locale.CHINA) {\n                    try {\n                        simpleDateFormat = new SimpleDateFormat(format, Locale.US);\n                    } catch (IllegalArgumentException ex) {\n                        if (format.contains(\"T\")) {\n                            String fromat2 = format.replaceAll(\"T\", \"'T'\");\n                            try {\n                                simpleDateFormat = new SimpleDateFormat(fromat2, parser.lexer.getLocale());\n                            } catch (IllegalArgumentException e2) {\n                                throw ex;\n                            }\n                        }\n                    }\n                    simpleDateFormat.setTimeZone(parser.lexer.getTimeZone());\n\n                    try {\n                        val = simpleDateFormat.parse(strVal);\n                    } catch (ParseException ex) {\n                        val = null;\n                        // skip\n                    }\n                }\n\n                if (val == null) {\n                    if (format.equals(\"yyyy-MM-dd'T'HH:mm:ss.SSS\") //\n                            && strVal.length() == 19) {\n                        try {\n                            SimpleDateFormat df = new SimpleDateFormat(\"yyyy-MM-dd'T'HH:mm:ss\", JSON.defaultLocale);\n                            df.setTimeZone(JSON.defaultTimeZone);\n                            val = df.parse(strVal);\n                        } catch (ParseException ex2) {\n                            // skip\n                            val = null;\n                        }\n                    } else {\n                        // skip\n                        val = null;\n                    }\n                }\n            } else {\n                val = null;\n            }\n            \n            if (val == null) {\n                val = strVal;\n                lexer.nextToken(JSONToken.COMMA);\n                \n                if (lexer.isEnabled(Feature.AllowISO8601DateFormat)) {\n                    JSONScanner iso8601Lexer = new JSONScanner(strVal);\n                    if (iso8601Lexer.scanISO8601DateIfMatch()) {\n                        val = iso8601Lexer.getCalendar().getTime();\n                    }\n                    iso8601Lexer.close();\n                }\n            }\n        } else if (lexer.token() == JSONToken.NULL) {\n            lexer.nextToken();\n            val = null;\n        } else if (lexer.token() == JSONToken.LBRACE) {\n            lexer.nextToken();\n            \n            String key;\n            if (lexer.token() == JSONToken.LITERAL_STRING) {\n                key = lexer.stringVal();\n                \n                if (JSON.DEFAULT_TYPE_KEY.equals(key)) {\n                    lexer.nextToken();\n                    parser.accept(JSONToken.COLON);\n                    \n                    String typeName = lexer.stringVal();\n                    Class<?> type = parser.getConfig().checkAutoType(typeName, null, lexer.getFeatures());\n                    if (type != null) {\n                        clazz = type;\n                    }\n                    \n                    parser.accept(JSONToken.LITERAL_STRING);\n                    parser.accept(JSONToken.COMMA);\n                }\n                \n                lexer.nextTokenWithColon(JSONToken.LITERAL_INT);\n            } else {\n                throw new JSONException(\"syntax error\");\n            }\n            \n            long timeMillis;\n            if (lexer.token() == JSONToken.LITERAL_INT) {\n                timeMillis = lexer.longValue();\n                lexer.nextToken();\n            } else {\n                throw new JSONException(\"syntax error : \" + lexer.tokenName());\n            }\n            \n            val = timeMillis;\n            \n            parser.accept(JSONToken.RBRACE);\n        } else if (parser.getResolveStatus() == DefaultJSONParser.TypeNameRedirect) {\n            parser.setResolveStatus(DefaultJSONParser.NONE);\n            parser.accept(JSONToken.COMMA);\n\n            if (lexer.token() == JSONToken.LITERAL_STRING) {\n                if (!\"val\".equals(lexer.stringVal())) {\n                    throw new JSONException(\"syntax error\");\n                }\n                lexer.nextToken();\n            } else {\n                throw new JSONException(\"syntax error\");\n            }\n\n            parser.accept(JSONToken.COLON);\n\n            val = parser.parse();\n\n            parser.accept(JSONToken.RBRACE);\n        } else {\n            val = parser.parse();\n        }\n\n        return (T) cast(parser, clazz, fieldName, val);\n    }\n\n    protected abstract <T> T cast(DefaultJSONParser parser, Type clazz, Object fieldName, Object value);\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/ArrayListTypeFieldDeserializer.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\nimport java.lang.reflect.ParameterizedType;\nimport java.lang.reflect.Type;\nimport java.lang.reflect.TypeVariable;\nimport java.lang.reflect.WildcardType;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Map;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.JSONLexer;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.ParseContext;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.util.FieldInfo;\nimport com.alibaba.fastjson.util.ParameterizedTypeImpl;\n\npublic class ArrayListTypeFieldDeserializer extends FieldDeserializer {\n\n    private final Type         itemType;\n    private int                itemFastMatchToken;\n    private ObjectDeserializer deserializer;\n\n    public ArrayListTypeFieldDeserializer(ParserConfig mapping, Class<?> clazz, FieldInfo fieldInfo){\n        super(clazz, fieldInfo);\n\n        Type fieldType = fieldInfo.fieldType;\n        if (fieldType instanceof ParameterizedType) {\n            Type argType = ((ParameterizedType) fieldInfo.fieldType).getActualTypeArguments()[0];\n            if (argType instanceof WildcardType) {\n                WildcardType wildcardType = (WildcardType) argType;\n                Type[] upperBounds = wildcardType.getUpperBounds();\n                if (upperBounds.length == 1) {\n                    argType = upperBounds[0];\n                }\n            }\n            this.itemType = argType;\n        } else {\n            this.itemType = Object.class;\n        }\n    }\n\n    public int getFastMatchToken() {\n        return JSONToken.LBRACKET;\n    }\n\n    @SuppressWarnings(\"rawtypes\")\n    @Override\n    public void parseField(DefaultJSONParser parser, Object object, Type objectType, Map<String, Object> fieldValues) {\n        JSONLexer lexer = parser.lexer;\n        final int token = lexer.token();\n        if (token == JSONToken.NULL\n                || (token == JSONToken.LITERAL_STRING && lexer.stringVal().length() == 0)) {\n            if (object == null) {\n                fieldValues.put(fieldInfo.name, null);\n            } else {\n                setValue(object, null);\n            }\n            return;\n        }\n\n        ArrayList list = new ArrayList();\n\n        ParseContext context = parser.getContext();\n\n        parser.setContext(context, object, fieldInfo.name);\n        parseArray(parser, objectType, list);\n        parser.setContext(context);\n\n        if (object == null) {\n            fieldValues.put(fieldInfo.name, list);\n        } else {\n            setValue(object, list);\n        }\n    }\n\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public final void parseArray(DefaultJSONParser parser, Type objectType, Collection array) {\n        Type itemType = this.itemType;\n        ObjectDeserializer itemTypeDeser = this.deserializer;\n\n        if (objectType instanceof ParameterizedType) {\n            if (itemType instanceof TypeVariable) {\n                TypeVariable typeVar = (TypeVariable) itemType;\n                ParameterizedType paramType = (ParameterizedType) objectType;\n\n                Class<?> objectClass = null;\n                if (paramType.getRawType() instanceof Class) {\n                    objectClass = (Class<?>) paramType.getRawType();\n                }\n\n                int paramIndex = -1;\n                if (objectClass != null) {\n                    for (int i = 0, size = objectClass.getTypeParameters().length; i < size; ++i) {\n                        TypeVariable item = objectClass.getTypeParameters()[i];\n                        if (item.getName().equals(typeVar.getName())) {\n                            paramIndex = i;\n                            break;\n                        }\n                    }\n                }\n\n                if (paramIndex != -1) {\n                    itemType = paramType.getActualTypeArguments()[paramIndex];\n                    if (!itemType.equals(this.itemType)) {\n                        itemTypeDeser = parser.getConfig().getDeserializer(itemType);\n                    }\n                }\n            } else if (itemType instanceof ParameterizedType) {\n                ParameterizedType parameterizedItemType = (ParameterizedType) itemType;\n                Type[] itemActualTypeArgs = parameterizedItemType.getActualTypeArguments();\n                if (itemActualTypeArgs.length == 1 && itemActualTypeArgs[0] instanceof TypeVariable) {\n                    TypeVariable typeVar = (TypeVariable) itemActualTypeArgs[0];\n                    ParameterizedType paramType = (ParameterizedType) objectType;\n\n                    Class<?> objectClass = null;\n                    if (paramType.getRawType() instanceof Class) {\n                        objectClass = (Class<?>) paramType.getRawType();\n                    }\n\n                    int paramIndex = -1;\n                    if (objectClass != null) {\n                        for (int i = 0, size = objectClass.getTypeParameters().length; i < size; ++i) {\n                            TypeVariable item = objectClass.getTypeParameters()[i];\n                            if (item.getName().equals(typeVar.getName())) {\n                                paramIndex = i;\n                                break;\n                            }\n                        }\n\n                    }\n\n                    if (paramIndex != -1) {\n                        itemActualTypeArgs[0] = paramType.getActualTypeArguments()[paramIndex];\n                        itemType = TypeReference.intern(\n                                new ParameterizedTypeImpl(itemActualTypeArgs, parameterizedItemType.getOwnerType(), parameterizedItemType.getRawType())\n                        );\n                    }\n                }\n            }\n        } else if (itemType instanceof TypeVariable && objectType instanceof Class) {\n            Class objectClass = (Class) objectType;\n            TypeVariable typeVar = (TypeVariable) itemType;\n            objectClass.getTypeParameters();\n\n            for (int i = 0, size = objectClass.getTypeParameters().length; i < size; ++i) {\n                TypeVariable item = objectClass.getTypeParameters()[i];\n                if (item.getName().equals(typeVar.getName())) {\n                    Type[] bounds = item.getBounds();\n                    if (bounds.length == 1) {\n                        itemType = bounds[0];\n                    }\n                    break;\n                }\n            }\n        }\n\n        final JSONLexer lexer = parser.lexer;\n\n        final int token = lexer.token();\n        if (token == JSONToken.LBRACKET) {\n            if (itemTypeDeser == null) {\n                itemTypeDeser = deserializer = parser.getConfig().getDeserializer(itemType);\n                itemFastMatchToken = deserializer.getFastMatchToken();\n            }\n\n            lexer.nextToken(itemFastMatchToken);\n\n            for (int i = 0; ; ++i) {\n                if (lexer.isEnabled(Feature.AllowArbitraryCommas)) {\n                    while (lexer.token() == JSONToken.COMMA) {\n                        lexer.nextToken();\n                        continue;\n                    }\n                }\n\n                if (lexer.token() == JSONToken.RBRACKET) {\n                    break;\n                }\n\n                Object val = itemTypeDeser.deserialze(parser, itemType, i);\n                array.add(val);\n\n                parser.checkListResolve(array);\n\n                if (lexer.token() == JSONToken.COMMA) {\n                    lexer.nextToken(itemFastMatchToken);\n                    continue;\n                }\n            }\n\n            lexer.nextToken(JSONToken.COMMA);\n        } else if (token == JSONToken.LITERAL_STRING && fieldInfo.unwrapped) {\n            String str = lexer.stringVal();\n            lexer.nextToken();\n            DefaultJSONParser valueParser = new DefaultJSONParser(str);\n            valueParser.parseArray(array);\n        } else {\n            if (itemTypeDeser == null) {\n                itemTypeDeser = deserializer = parser.getConfig().getDeserializer(itemType);\n            }\n            Object val = itemTypeDeser.deserialze(parser, itemType, 0);\n            array.add(val);\n            parser.checkListResolve(array);\n        }\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/AutowiredObjectDeserializer.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\nimport java.lang.reflect.Type;\nimport java.util.Set;\n\n\npublic interface AutowiredObjectDeserializer extends ObjectDeserializer{\n\tSet<Type> getAutowiredFor();\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/ContextObjectDeserializer.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\nimport java.lang.reflect.Type;\n\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\n\npublic abstract class ContextObjectDeserializer implements ObjectDeserializer {\n    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n        return deserialze(parser, type, fieldName, null, 0);\n    }\n    \n    public abstract <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName, String format, int features); \n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/DefaultFieldDeserializer.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\nimport java.io.ByteArrayInputStream;\nimport java.io.ByteArrayOutputStream;\nimport java.io.IOException;\nimport java.lang.reflect.ParameterizedType;\nimport java.lang.reflect.Type;\nimport java.util.Map;\nimport java.util.zip.GZIPInputStream;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.DefaultJSONParser.ResolveTask;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.ParseContext;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.util.FieldInfo;\n\npublic class DefaultFieldDeserializer extends FieldDeserializer {\n\n    protected ObjectDeserializer fieldValueDeserilizer;\n    protected boolean            customDeserilizer     = false;\n\n    public DefaultFieldDeserializer(ParserConfig config, Class<?> clazz, FieldInfo fieldInfo){\n        super(clazz, fieldInfo);\n        JSONField annotation = fieldInfo.getAnnotation();\n        if (annotation != null) {\n            Class<?> deserializeUsing = annotation.deserializeUsing();\n            customDeserilizer = deserializeUsing != null && deserializeUsing != Void.class;\n        }\n    }\n\n    public ObjectDeserializer getFieldValueDeserilizer(ParserConfig config) {\n        if (fieldValueDeserilizer == null) {\n            JSONField annotation = fieldInfo.getAnnotation();\n            if (annotation != null && annotation.deserializeUsing() != Void.class) {\n                Class<?> deserializeUsing = annotation.deserializeUsing();\n                try {\n                    fieldValueDeserilizer = (ObjectDeserializer) deserializeUsing.newInstance();\n                } catch (Exception ex) {\n                    throw new JSONException(\"create deserializeUsing ObjectDeserializer error\", ex);\n                }\n            } else {\n                fieldValueDeserilizer = config.getDeserializer(fieldInfo.fieldClass, fieldInfo.fieldType);\n            }\n        }\n\n        return fieldValueDeserilizer;\n    }\n\n    @Override\n    public void parseField(DefaultJSONParser parser, Object object, Type objectType, Map<String, Object> fieldValues) {\n        if (this.fieldValueDeserilizer == null) {\n            getFieldValueDeserilizer(parser.getConfig());\n        }\n\n        ObjectDeserializer fieldValueDeserilizer = this.fieldValueDeserilizer;\n        Type fieldType = fieldInfo.fieldType;\n        if (objectType instanceof ParameterizedType) {\n            ParseContext objContext = parser.getContext();\n            if (objContext != null) {\n                objContext.type = objectType;\n            }\n            if (fieldType != objectType) {\n                fieldType = FieldInfo.getFieldType(this.clazz, objectType, fieldType);\n                if (fieldValueDeserilizer instanceof JavaObjectDeserializer) {\n                    fieldValueDeserilizer = parser.getConfig().getDeserializer(fieldType);\n                }\n            }\n        }\n\n        // ContextObjectDeserializer\n        Object value;\n        if (fieldValueDeserilizer instanceof JavaBeanDeserializer && fieldInfo.parserFeatures != 0) {\n            JavaBeanDeserializer javaBeanDeser = (JavaBeanDeserializer) fieldValueDeserilizer;\n            value = javaBeanDeser.deserialze(parser, fieldType, fieldInfo.name, fieldInfo.parserFeatures);\n        } else {\n            if ((this.fieldInfo.format != null || this.fieldInfo.parserFeatures != 0)\n                    && fieldValueDeserilizer instanceof ContextObjectDeserializer) {\n                value = ((ContextObjectDeserializer) fieldValueDeserilizer) //\n                                        .deserialze(parser,\n                                                    fieldType,\n                                                    fieldInfo.name,\n                                                    fieldInfo.format,\n                                                    fieldInfo.parserFeatures);\n            } else {\n                value = fieldValueDeserilizer.deserialze(parser, fieldType, fieldInfo.name);\n            }\n        }\n\n        if (value instanceof byte[]\n                && (\"gzip\".equals(fieldInfo.format) || \"gzip,base64\".equals(fieldInfo.format))) {\n            byte[] bytes = (byte[]) value;\n            GZIPInputStream gzipIn = null;\n            try {\n                gzipIn = new GZIPInputStream(new ByteArrayInputStream(bytes));\n\n                ByteArrayOutputStream byteOut = new ByteArrayOutputStream();\n                for (;;) {\n                    byte[] buf = new byte[1024];\n                    int len = gzipIn.read(buf);\n                    if (len == -1) {\n                        break;\n                    }\n                    if (len > 0) {\n                        byteOut.write(buf, 0, len);\n                    }\n                }\n                value = byteOut.toByteArray();\n\n            } catch (IOException ex) {\n                throw new JSONException(\"unzip bytes error.\", ex);\n            }\n        }\n\n        if (parser.getResolveStatus() == DefaultJSONParser.NeedToResolve) {\n            ResolveTask task = parser.getLastResolveTask();\n            task.fieldDeserializer = this;\n            task.ownerContext = parser.getContext();\n            parser.setResolveStatus(DefaultJSONParser.NONE);\n        } else {\n            if (object == null) {\n                fieldValues.put(fieldInfo.name, value);\n            } else {\n                setValue(object, value);\n            }\n        }\n    }\n\n    public int getFastMatchToken() {\n        if (fieldValueDeserilizer != null) {\n            return fieldValueDeserilizer.getFastMatchToken();\n        }\n\n        return JSONToken.LITERAL_INT;\n    }\n\n    public void parseFieldUnwrapped(DefaultJSONParser parser, Object object, Type objectType, Map<String, Object> fieldValues) {\n        throw new JSONException(\"TODO\");\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/EnumCreatorDeserializer.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\n\nimport java.lang.reflect.InvocationTargetException;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Type;\n\npublic class EnumCreatorDeserializer implements ObjectDeserializer {\n    private final Method creator;\n    private final Class paramType;\n\n    public EnumCreatorDeserializer(Method creator) {\n        this.creator = creator;\n        paramType = creator.getParameterTypes()[0];\n    }\n\n    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n        Object arg = parser.parseObject(paramType);\n        try {\n            return (T) creator.invoke(null, arg);\n        } catch (IllegalAccessException e) {\n            throw new JSONException(\"parse enum error\", e);\n        } catch (InvocationTargetException e) {\n            throw new JSONException(\"parse enum error\", e);\n        }\n    }\n\n    public int getFastMatchToken() {\n        return 0;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/EnumDeserializer.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\nimport java.lang.reflect.Field;\nimport java.lang.reflect.Type;\nimport java.util.*;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.JSONLexer;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.util.TypeUtils;\n\nimport static com.alibaba.fastjson.util.TypeUtils.fnv1a_64_magic_hashcode;\nimport static com.alibaba.fastjson.util.TypeUtils.fnv1a_64_magic_prime;\n\n@SuppressWarnings(\"rawtypes\")\npublic class EnumDeserializer implements ObjectDeserializer {\n\n    protected final Class<?> enumClass;\n    protected final Enum[]   enums;\n    protected final Enum[]   ordinalEnums;\n    protected       long[]   enumNameHashCodes;\n\n    public EnumDeserializer(Class<?> enumClass){\n        this.enumClass = enumClass;\n\n        ordinalEnums = (Enum[]) enumClass.getEnumConstants();\n\n        Map<Long, Enum> enumMap = new HashMap<Long, Enum>();\n        for (int i = 0; i < ordinalEnums.length; ++i) {\n            Enum e = ordinalEnums[i];\n            String name = e.name();\n\n            JSONField jsonField = null;\n            try {\n                Field field = enumClass.getField(name);\n                jsonField = TypeUtils.getAnnotation(field, JSONField.class);\n                if (jsonField != null) {\n                    String jsonFieldName = jsonField.name();\n                    if (jsonFieldName != null && jsonFieldName.length() > 0) {\n                        name = jsonFieldName;\n                    }\n                }\n            } catch (Exception ex) {\n                // skip\n            }\n\n            long hash = fnv1a_64_magic_hashcode;\n            long hash_lower = fnv1a_64_magic_hashcode;\n            for (int j = 0; j < name.length(); ++j) {\n                char ch = name.charAt(j);\n\n                hash ^= ch;\n                hash_lower ^= ((ch >= 'A' && ch <= 'Z') ? (ch + 32) : ch);\n\n                hash *= fnv1a_64_magic_prime;\n                hash_lower *= fnv1a_64_magic_prime;\n            }\n\n            enumMap.put(hash, e);\n            if (hash != hash_lower) {\n                enumMap.put(hash_lower, e);\n            }\n\n            if (jsonField != null) {\n                for (String alterName : jsonField.alternateNames()) {\n                    long alterNameHash = fnv1a_64_magic_hashcode;\n                    for (int j = 0; j < alterName.length(); ++j) {\n                        char ch = alterName.charAt(j);\n                        alterNameHash ^= ch;\n                        alterNameHash *= fnv1a_64_magic_prime;\n                    }\n                    if (alterNameHash != hash && alterNameHash != hash_lower) {\n                        enumMap.put(alterNameHash, e);\n                    }\n                }\n            }\n        }\n\n        this.enumNameHashCodes = new long[enumMap.size()];\n        {\n            int i = 0;\n            for (Long h : enumMap.keySet()) {\n                enumNameHashCodes[i++] = h;\n            }\n            Arrays.sort(this.enumNameHashCodes);\n        }\n\n        this.enums = new Enum[enumNameHashCodes.length];\n        for (int i = 0; i < this.enumNameHashCodes.length; ++i) {\n            long hash = enumNameHashCodes[i];\n            Enum e = enumMap.get(hash);\n            this.enums[i] = e;\n        }\n    }\n\n    public Enum getEnumByHashCode(long hashCode) {\n        if (enums == null) {\n            return null;\n        }\n\n        int enumIndex = Arrays.binarySearch(this.enumNameHashCodes, hashCode);\n\n        if (enumIndex < 0) {\n            return null;\n        }\n\n        return enums[enumIndex];\n    }\n    \n    public Enum<?> valueOf(int ordinal) {\n        return ordinalEnums[ordinal];\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n        try {\n            Object value;\n            final JSONLexer lexer = parser.lexer;\n            final int token = lexer.token();\n            if (token == JSONToken.LITERAL_INT) {\n                int intValue = lexer.intValue();\n                lexer.nextToken(JSONToken.COMMA);\n\n                if (intValue < 0 || intValue >= ordinalEnums.length) {\n                    throw new JSONException(\"parse enum \" + enumClass.getName() + \" error, value : \" + intValue);\n                }\n\n                return (T) ordinalEnums[intValue];\n            } else if (token == JSONToken.LITERAL_STRING) {\n                String name = lexer.stringVal();\n                lexer.nextToken(JSONToken.COMMA);\n\n                if (name.length() == 0) {\n                    return (T) null;\n                }\n\n                long hash = fnv1a_64_magic_hashcode;\n                long hash_lower = fnv1a_64_magic_hashcode;\n                for (int j = 0; j < name.length(); ++j) {\n                    char ch = name.charAt(j);\n\n                    hash ^= ch;\n                    hash_lower ^= ((ch >= 'A' && ch <= 'Z') ? (ch + 32) : ch);\n\n                    hash *= fnv1a_64_magic_prime;\n                    hash_lower *= fnv1a_64_magic_prime;\n                }\n\n                Enum e = getEnumByHashCode(hash);\n                if (e == null && hash_lower != hash) {\n                    e = getEnumByHashCode(hash_lower);\n                }\n\n                if (e == null && lexer.isEnabled(Feature.ErrorOnEnumNotMatch)) {\n                    throw new JSONException(\"not match enum value, \" + enumClass.getName() + \" : \" + name);\n                }\n                return (T) e;\n            } else if (token == JSONToken.NULL) {\n                value = null;\n                lexer.nextToken(JSONToken.COMMA);\n\n                return null;\n            } else {\n                value = parser.parse();\n            }\n\n            throw new JSONException(\"parse enum \" + enumClass.getName() + \" error, value : \" + value);\n        } catch (JSONException e) {\n            throw e;\n        } catch (Exception e) {\n            throw new JSONException(e.getMessage(), e);\n        }\n    }\n\n    public int getFastMatchToken() {\n        return JSONToken.LITERAL_INT;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/ExtraProcessable.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\n/**\n * \n * @author wenshao[szujobs@hotmail.com]\n * @since 1.2.9\n */\npublic interface ExtraProcessable {\n    void processExtra(String key, Object value);\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/ExtraProcessor.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\n/**\n * \n * @author wenshao[szujobs@hotmail.com]\n * @since 1.1.34\n */\npublic interface ExtraProcessor extends ParseProcess {\n\n    void processExtra(Object object, String key, Object value);\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/ExtraTypeProvider.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\nimport java.lang.reflect.Type;\n\n/**\n * @author wenshao[szujobs@hotmail.com]\n * @since 1.1.34\n */\npublic interface ExtraTypeProvider extends ParseProcess {\n\n    Type getExtraType(Object object, String key);\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/FieldDeserializer.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.BeanContext;\nimport com.alibaba.fastjson.util.FieldInfo;\nimport com.alibaba.fastjson.util.TypeUtils;\n\nimport java.lang.reflect.*;\nimport java.util.Collection;\nimport java.util.Collections;\nimport java.util.Map;\nimport java.util.concurrent.atomic.AtomicBoolean;\nimport java.util.concurrent.atomic.AtomicInteger;\nimport java.util.concurrent.atomic.AtomicLong;\n\npublic abstract class FieldDeserializer {\n\n    public final FieldInfo fieldInfo;\n\n    protected final Class<?> clazz;\n\n    protected BeanContext beanContext;\n\n    public FieldDeserializer(Class<?> clazz, FieldInfo fieldInfo) {\n        this.clazz = clazz;\n        this.fieldInfo = fieldInfo;\n    }\n\n    public Class<?> getOwnerClass() {\n        return clazz;\n    }\n\n    public abstract void parseField(DefaultJSONParser parser, Object object, Type objectType,\n                                    Map<String, Object> fieldValues);\n\n    public int getFastMatchToken() {\n        return 0;\n    }\n\n    public void setValue(Object object, boolean value) {\n        setValue(object, Boolean.valueOf(value));\n    }\n\n    public void setValue(Object object, int value) {\n        setValue(object, Integer.valueOf(value));\n    }\n\n    public void setValue(Object object, long value) {\n        setValue(object, Long.valueOf(value));\n    }\n\n    public void setValue(Object object, String value) {\n        setValue(object, (Object) value);\n    }\n\n    @SuppressWarnings({\"rawtypes\", \"unchecked\"})\n    public void setValue(Object object, Object value) {\n        if (value == null //\n                && fieldInfo.fieldClass.isPrimitive()) {\n            return;\n        } else if (fieldInfo.fieldClass == String.class\n                && fieldInfo.format != null\n                && fieldInfo.format.equals(\"trim\")) {\n            value = ((String) value).trim();\n        }\n\n        try {\n            Method method = fieldInfo.method;\n            if (method != null) {\n                if (fieldInfo.getOnly) {\n                    if (fieldInfo.fieldClass == AtomicInteger.class) {\n                        AtomicInteger atomic = (AtomicInteger) method.invoke(object);\n                        if (atomic != null) {\n                            atomic.set(((AtomicInteger) value).get());\n                        } else {\n                            degradeValueAssignment(fieldInfo.field, method, object, value);\n                        }\n                    } else if (fieldInfo.fieldClass == AtomicLong.class) {\n                        AtomicLong atomic = (AtomicLong) method.invoke(object);\n                        if (atomic != null) {\n                            atomic.set(((AtomicLong) value).get());\n                        } else {\n                            degradeValueAssignment(fieldInfo.field, method, object, value);\n                        }\n                    } else if (fieldInfo.fieldClass == AtomicBoolean.class) {\n                        AtomicBoolean atomic = (AtomicBoolean) method.invoke(object);\n                        if (atomic != null) {\n                            atomic.set(((AtomicBoolean) value).get());\n                        } else {\n                            degradeValueAssignment(fieldInfo.field, method, object, value);\n                        }\n                    } else if (Map.class.isAssignableFrom(method.getReturnType())) {\n                        Map map = null;\n                        try {\n                            map = (Map) method.invoke(object);\n                        } catch (InvocationTargetException e) {\n                            degradeValueAssignment(fieldInfo.field, method, object, value);\n                            return;\n                        }\n                        if (map != null) {\n                            if (map == Collections.emptyMap()) {\n                                return;\n                            }\n\n                            if (map.isEmpty() && ((Map) value).isEmpty()) {\n                                return;\n                            }\n\n                            String mapClassName = map.getClass().getName();\n                            if (mapClassName.equals(\"java.util.ImmutableCollections$Map1\")\n                                    || mapClassName.equals(\"java.util.ImmutableCollections$MapN\")\n                                    || mapClassName.startsWith(\"java.util.Collections$Unmodifiable\")) {\n                                // skip\n\n                                return;\n                            }\n\n                            if (map.getClass().getName().equals(\"kotlin.collections.EmptyMap\")) {\n                                degradeValueAssignment(fieldInfo.field, method, object, value);\n                                return;\n                            }\n\n                            map.putAll((Map) value);\n                        } else if (value != null) {\n                            degradeValueAssignment(fieldInfo.field, method, object, value);\n                        }\n                    } else {\n                        Collection collection = null;\n                        try {\n                            collection = (Collection) method.invoke(object);\n                        } catch (InvocationTargetException e) {\n                            degradeValueAssignment(fieldInfo.field, method, object, value);\n                            return;\n                        }\n                        if (collection != null && value != null) {\n                            String collectionClassName = collection.getClass().getName();\n\n                            if (collection == Collections.emptySet()\n                                    || collection == Collections.emptyList()\n                                    || collectionClassName == \"java.util.ImmutableCollections$ListN\"\n                                    || collectionClassName == \"java.util.ImmutableCollections$List12\"\n                                    || collectionClassName.startsWith(\"java.util.Collections$Unmodifiable\")) {\n                                // skip\n                                return;\n                            }\n\n                            if (!collection.isEmpty()) {\n                                collection.clear();\n                            } else if (((Collection) value).isEmpty()) {\n                                return; //skip\n                            }\n\n\n                            if (collectionClassName.equals(\"kotlin.collections.EmptyList\")\n                                    || collectionClassName.equals(\"kotlin.collections.EmptySet\")) {\n                                degradeValueAssignment(fieldInfo.field, method, object, value);\n                                return;\n                            }\n                            collection.addAll((Collection) value);\n                        } else if (collection == null && value != null) {\n                            degradeValueAssignment(fieldInfo.field, method, object, value);\n                        }\n                    }\n                } else {\n                    method.invoke(object, value);\n                }\n            } else {\n                final Field field = fieldInfo.field;\n                \n                if (fieldInfo.getOnly) {\n                    if (fieldInfo.fieldClass == AtomicInteger.class) {\n                        AtomicInteger atomic = (AtomicInteger) field.get(object);\n                        if (atomic != null) {\n                            atomic.set(((AtomicInteger) value).get());\n                        }\n                    } else if (fieldInfo.fieldClass == AtomicLong.class) {\n                        AtomicLong atomic = (AtomicLong) field.get(object);\n                        if (atomic != null) {\n                            atomic.set(((AtomicLong) value).get());\n                        }\n                    } else if (fieldInfo.fieldClass == AtomicBoolean.class) {\n                        AtomicBoolean atomic = (AtomicBoolean) field.get(object);\n                        if (atomic != null) {\n                            atomic.set(((AtomicBoolean) value).get());\n                        }\n                    } else if (Map.class.isAssignableFrom(fieldInfo.fieldClass)) {\n                        Map map = (Map) field.get(object);\n                        if (map != null) {\n                            if (map == Collections.emptyMap()\n                                    || map.getClass().getName().startsWith(\"java.util.Collections$Unmodifiable\")) {\n                                // skip\n                                return;\n                            }\n                            map.putAll((Map) value);\n                        }\n                    } else {\n                        Collection collection = (Collection) field.get(object);\n                        if (collection != null && value != null) {\n                            if (collection == Collections.emptySet()\n                                    || collection == Collections.emptyList()\n                                    || collection.getClass().getName().startsWith(\"java.util.Collections$Unmodifiable\")) {\n                                // skip\n                                return;\n                            }\n\n                            collection.clear();\n                            collection.addAll((Collection) value);\n                        }\n                    }\n                } else {\n                    if (field != null) {\n                        field.set(object, value);\n                    }\n                }\n            }\n        } catch (Exception e) {\n            throw new JSONException(\"set property error, \" + clazz.getName() + \"#\" + fieldInfo.name, e);\n        }\n    }\n\n    /**\n     * kotlin代理类property的get方法会抛未初始化异常，用set方法直接赋值\n     */\n    private static boolean degradeValueAssignment(\n            Field field,\n            Method getMethod,\n            Object object,\n            Object value\n    ) throws InvocationTargetException, IllegalAccessException {\n        if (setFieldValue(field, object, value)) {\n            return true;\n        }\n\n        try {\n            Method setMethod = object\n                    .getClass()\n                    .getDeclaredMethod(\"set\" + getMethod.getName().substring(3), getMethod.getReturnType());\n            setMethod.invoke(object, value);\n            return true;\n        } catch (InvocationTargetException ignored) {\n        } catch (NoSuchMethodException ignored) {\n        } catch (IllegalAccessException ignored) {\n        }\n        return false;\n    }\n\n    private static boolean setFieldValue(Field field, Object object, Object value) throws IllegalAccessException {\n        if (field != null\n                && !Modifier.isFinal(field.getModifiers())) {\n            field.set(object, value);\n            return true;\n        }\n        return false;\n    }\n\n    public void setWrappedValue(String key, Object value) {\n        throw new JSONException(\"TODO\");\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/FieldTypeResolver.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\nimport java.lang.reflect.Type;\n\npublic interface FieldTypeResolver extends ParseProcess {\n    Type resolve(Object object, String fieldName);\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/JSONPDeserializer.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONPObject;\nimport com.alibaba.fastjson.parser.*;\n\nimport java.lang.reflect.Type;\n\n/**\n * Created by wenshao on 21/02/2017.\n */\npublic class JSONPDeserializer implements ObjectDeserializer {\n    public static final JSONPDeserializer instance = new JSONPDeserializer();\n\n    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n        JSONLexerBase lexer = (JSONLexerBase) parser.getLexer();\n\n        SymbolTable symbolTable = parser.getSymbolTable();\n\n        String funcName = lexer.scanSymbolUnQuoted(symbolTable);\n        lexer.nextToken();\n\n        int tok = lexer.token();\n\n        if (tok == JSONToken.DOT) {\n            String name = lexer.scanSymbolUnQuoted(parser.getSymbolTable());\n            funcName += \".\";\n            funcName += name;\n            lexer.nextToken();\n            tok = lexer.token();\n        }\n\n        JSONPObject jsonp = new JSONPObject(funcName);\n\n        if (tok != JSONToken.LPAREN) {\n            throw new JSONException(\"illegal jsonp : \" + lexer.info());\n        }\n        lexer.nextToken();\n        for (;;) {\n            Object arg = parser.parse();\n            jsonp.addParameter(arg);\n\n            tok = lexer.token();\n            if (tok == JSONToken.COMMA) {\n                lexer.nextToken();\n            } else if (tok == JSONToken.RPAREN) {\n                lexer.nextToken();\n                break;\n            } else {\n                throw new JSONException(\"illegal jsonp : \" + lexer.info());\n            }\n         }\n        tok = lexer.token();\n        if (tok == JSONToken.SEMI) {\n            lexer.nextToken();\n        }\n\n        return (T) jsonp;\n    }\n\n    public int getFastMatchToken() {\n        return 0;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/JavaBeanDeserializer.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONValidator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.*;\nimport com.alibaba.fastjson.parser.DefaultJSONParser.ResolveTask;\nimport com.alibaba.fastjson.util.FieldInfo;\nimport com.alibaba.fastjson.util.JavaBeanInfo;\nimport com.alibaba.fastjson.util.TypeUtils;\n\nimport java.lang.reflect.*;\nimport java.math.BigDecimal;\nimport java.math.BigInteger;\nimport java.util.*;\nimport java.util.concurrent.ConcurrentHashMap;\nimport java.util.concurrent.ConcurrentMap;\n\nimport static com.alibaba.fastjson.util.TypeUtils.fnv1a_64_magic_hashcode;\n\npublic class JavaBeanDeserializer implements ObjectDeserializer {\n\n    private final FieldDeserializer[]   fieldDeserializers;\n    protected final FieldDeserializer[] sortedFieldDeserializers;\n    protected final Class<?>            clazz;\n    public final JavaBeanInfo           beanInfo;\n    private ConcurrentMap<String, Object> extraFieldDeserializers;\n\n    private final Map<String, FieldDeserializer> alterNameFieldDeserializers;\n    private Map<String, FieldDeserializer> fieldDeserializerMap;\n\n    private transient long[] smartMatchHashArray;\n    private transient short[] smartMatchHashArrayMapping;\n\n    private transient long[] hashArray;\n    private transient short[] hashArrayMapping;\n\n    private final ParserConfig.AutoTypeCheckHandler autoTypeCheckHandler;\n    \n    public JavaBeanDeserializer(ParserConfig config, Class<?> clazz) {\n        this(config, clazz, clazz);\n    }\n\n    public JavaBeanDeserializer(ParserConfig config, Class<?> clazz, Type type){\n        this(config //\n                , JavaBeanInfo.build(clazz, type, config.propertyNamingStrategy, config.fieldBased, config.compatibleWithJavaBean, config.isJacksonCompatible())\n        );\n    }\n    \n    public JavaBeanDeserializer(ParserConfig config, JavaBeanInfo beanInfo){\n        this.clazz = beanInfo.clazz;\n        this.beanInfo = beanInfo;\n\n        ParserConfig.AutoTypeCheckHandler autoTypeCheckHandler = null;\n        if (beanInfo.jsonType != null && beanInfo.jsonType.autoTypeCheckHandler() != ParserConfig.AutoTypeCheckHandler.class) {\n            try {\n                autoTypeCheckHandler = beanInfo.jsonType.autoTypeCheckHandler().newInstance();\n            } catch (Exception e) {\n                //\n            }\n        }\n        this.autoTypeCheckHandler = autoTypeCheckHandler;\n\n        Map<String, FieldDeserializer> alterNameFieldDeserializers = null;\n        sortedFieldDeserializers = new FieldDeserializer[beanInfo.sortedFields.length];\n        for (int i = 0, size = beanInfo.sortedFields.length; i < size; ++i) {\n            FieldInfo fieldInfo = beanInfo.sortedFields[i];\n            FieldDeserializer fieldDeserializer = config.createFieldDeserializer(config, beanInfo, fieldInfo);\n\n            sortedFieldDeserializers[i] = fieldDeserializer;\n\n            if (size > 128) {\n                if (fieldDeserializerMap == null) {\n                    fieldDeserializerMap = new HashMap<String, FieldDeserializer>();\n                }\n                fieldDeserializerMap.put(fieldInfo.name, fieldDeserializer);\n            }\n\n            for (String name : fieldInfo.alternateNames) {\n                if (alterNameFieldDeserializers == null) {\n                    alterNameFieldDeserializers = new HashMap<String, FieldDeserializer>();\n                }\n                alterNameFieldDeserializers.put(name, fieldDeserializer);\n            }\n        }\n        this.alterNameFieldDeserializers = alterNameFieldDeserializers;\n\n        fieldDeserializers = new FieldDeserializer[beanInfo.fields.length];\n        for (int i = 0, size = beanInfo.fields.length; i < size; ++i) {\n            FieldInfo fieldInfo = beanInfo.fields[i];\n            FieldDeserializer fieldDeserializer = getFieldDeserializer(fieldInfo.name);\n            fieldDeserializers[i] = fieldDeserializer;\n        }\n    }\n\n    public FieldDeserializer getFieldDeserializer(String key) {\n        return getFieldDeserializer(key, null);\n    }\n\n    public FieldDeserializer getFieldDeserializer(String key, int[] setFlags) {\n        if (key == null) {\n            return null;\n        }\n\n        if (fieldDeserializerMap != null) {\n            FieldDeserializer fieldDeserializer = fieldDeserializerMap.get(key);\n            if (fieldDeserializer != null) {\n                return fieldDeserializer;\n            }\n        }\n        \n        int low = 0;\n        int high = sortedFieldDeserializers.length - 1;\n\n        while (low <= high) {\n            int mid = (low + high) >>> 1;\n            \n            String fieldName = sortedFieldDeserializers[mid].fieldInfo.name;\n            \n            int cmp = fieldName.compareTo(key);\n\n            if (cmp < 0) {\n                low = mid + 1;\n            } else if (cmp > 0) {\n                high = mid - 1;\n            } else {\n                if (isSetFlag(mid, setFlags)) {\n                    return null;\n                }\n\n                return sortedFieldDeserializers[mid]; // key found\n            }\n        }\n\n        if(this.alterNameFieldDeserializers != null){\n            return this.alterNameFieldDeserializers.get(key);\n        }\n        \n        return null;  // key not found.\n    }\n\n    public FieldDeserializer getFieldDeserializer(long hash) {\n        if (this.hashArray == null) {\n            long[] hashArray = new long[sortedFieldDeserializers.length];\n            for (int i = 0; i < sortedFieldDeserializers.length; i++) {\n                hashArray[i] = TypeUtils.fnv1a_64(sortedFieldDeserializers[i].fieldInfo.name);\n            }\n            Arrays.sort(hashArray);\n            this.hashArray = hashArray;\n        }\n\n        int pos = Arrays.binarySearch(hashArray, hash);\n        if (pos < 0) {\n            return null;\n        }\n\n        if (hashArrayMapping == null) {\n            short[] mapping = new short[hashArray.length];\n            Arrays.fill(mapping, (short) -1);\n            for (int i = 0; i < sortedFieldDeserializers.length; i++) {\n                int p = Arrays.binarySearch(hashArray\n                        , TypeUtils.fnv1a_64(sortedFieldDeserializers[i].fieldInfo.name));\n                if (p >= 0) {\n                    mapping[p] = (short) i;\n                }\n            }\n            hashArrayMapping = mapping;\n        }\n\n        int setterIndex = hashArrayMapping[pos];\n        if (setterIndex != -1) {\n            return sortedFieldDeserializers[setterIndex];\n        }\n\n        return null; // key not found.\n    }\n\n    static boolean isSetFlag(int i, int[] setFlags) {\n        if (setFlags == null) {\n            return false;\n        }\n\n        int flagIndex = i / 32;\n        return flagIndex < setFlags.length\n                && (setFlags[flagIndex] & (1 << i % 32)) != 0;\n    }\n    \n    public Object createInstance(DefaultJSONParser parser, Type type) {\n        if (type instanceof Class) {\n            if (clazz.isInterface()) {\n                Class<?> clazz = (Class<?>) type;\n                ClassLoader loader = Thread.currentThread().getContextClassLoader();\n                final JSONObject obj = new JSONObject();\n                Object proxy = Proxy.newProxyInstance(loader, new Class<?>[] { clazz }, obj);\n                return proxy;\n            }\n        }\n\n        if (beanInfo.defaultConstructor == null && beanInfo.factoryMethod == null) {\n            return null;\n        }\n\n        if (beanInfo.factoryMethod != null && beanInfo.defaultConstructorParameterSize > 0) {\n            return null;\n        }\n\n        Object object;\n        try {\n            Constructor<?> constructor = beanInfo.defaultConstructor;\n            if (beanInfo.defaultConstructorParameterSize == 0) {\n                if (constructor != null) {\n                    object = constructor.newInstance();\n                } else {\n                    object = beanInfo.factoryMethod.invoke(null);\n                }\n            } else {\n                ParseContext context = parser.getContext();\n                if (context == null || context.object == null) {\n                    throw new JSONException(\"can't create non-static inner class instance.\");\n                }\n\n                final String typeName;\n                if (type instanceof Class) {\n                    typeName = ((Class<?>) type).getName();\n                } else {\n                    throw new JSONException(\"can't create non-static inner class instance.\");\n                }\n\n                final int lastIndex = typeName.lastIndexOf('$');\n                String parentClassName = typeName.substring(0, lastIndex);\n\n                Object ctxObj = context.object;\n                String parentName = ctxObj.getClass().getName();\n\n                Object param = null;\n                if (!parentName.equals(parentClassName)) {\n                    ParseContext parentContext = context.parent;\n                    if (parentContext != null\n                            && parentContext.object != null\n                            && (\"java.util.ArrayList\".equals(parentName)\n                            || \"java.util.List\".equals(parentName)\n                            || \"java.util.Collection\".equals(parentName)\n                            || \"java.util.Map\".equals(parentName)\n                            || \"java.util.HashMap\".equals(parentName))) {\n                        parentName = parentContext.object.getClass().getName();\n                        if (parentName.equals(parentClassName)) {\n                            param = parentContext.object;\n                        }\n                    } else {\n                        param = ctxObj;\n                    }\n                } else {\n                    param = ctxObj;\n                }\n\n                if (param == null || param instanceof Collection && ((Collection)param).isEmpty()) {\n                    throw new JSONException(\"can't create non-static inner class instance.\");\n                }\n\n                object = constructor.newInstance(param);\n            }\n        } catch (JSONException e) {\n            throw e;\n        } catch (Exception e) {\n            throw new JSONException(\"create instance error, class \" + clazz.getName(), e);\n        }\n\n        if (parser != null // \n                && parser.lexer.isEnabled(Feature.InitStringFieldAsEmpty)) {\n            for (FieldInfo fieldInfo : beanInfo.fields) {\n                if (fieldInfo.fieldClass == String.class) {\n                    try {\n                        fieldInfo.set(object, \"\");\n                    } catch (Exception e) {\n                        throw new JSONException(\"create instance error, class \" + clazz.getName(), e);\n                    }\n                }\n            }\n        }\n\n        return object;\n    }\n    \n    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n        return deserialze(parser, type, fieldName, 0);\n    }\n\n    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName, int features) {\n        return deserialze(parser, type, fieldName, null, features, null);\n    }\n\n    @SuppressWarnings({ \"unchecked\" })\n    public <T> T deserialzeArrayMapping(DefaultJSONParser parser, Type type, Object fieldName, Object object) {\n        final JSONLexer lexer = parser.lexer; // xxx\n        if (lexer.token() != JSONToken.LBRACKET) {\n            throw new JSONException(\"error\");\n        }\n\n        String typeName = null;\n        if ((typeName = lexer.scanTypeName(parser.symbolTable)) != null) {\n            ObjectDeserializer deserializer = getSeeAlso(parser.getConfig(), this.beanInfo, typeName);\n            Class<?> userType = null;\n\n            if (deserializer == null) {\n                Class<?> expectClass = TypeUtils.getClass(type);\n                userType = parser.getConfig().checkAutoType(typeName, expectClass, lexer.getFeatures());\n                deserializer = parser.getConfig().getDeserializer(userType);\n            }\n\n            if (deserializer instanceof JavaBeanDeserializer) {\n                return ((JavaBeanDeserializer) deserializer).deserialzeArrayMapping(parser, type, fieldName, object);\n            }\n        }\n\n        object = createInstance(parser, type);\n\n        for (int i = 0, size = sortedFieldDeserializers.length; i < size; ++i) {\n            final char seperator = (i == size - 1) ? ']' : ',';\n            FieldDeserializer fieldDeser = sortedFieldDeserializers[i];\n            Class<?> fieldClass = fieldDeser.fieldInfo.fieldClass;\n            if (fieldClass == int.class) {\n                int value = lexer.scanInt(seperator);\n                fieldDeser.setValue(object, value);\n            } else if (fieldClass == String.class) {\n                String value = lexer.scanString(seperator);\n                fieldDeser.setValue(object, value);\n            } else if (fieldClass == long.class) {\n                long value = lexer.scanLong(seperator);\n                fieldDeser.setValue(object, value);\n            } else if (fieldClass.isEnum()) {\n                char ch = lexer.getCurrent();\n                \n                Object value;\n                if (ch == '\\\"' || ch == 'n') {\n                    value = lexer.scanEnum(fieldClass, parser.getSymbolTable(), seperator);\n                } else if (ch >= '0' && ch <= '9') {\n                    int ordinal = lexer.scanInt(seperator);\n                    \n                    EnumDeserializer enumDeser = (EnumDeserializer) ((DefaultFieldDeserializer) fieldDeser).getFieldValueDeserilizer(parser.getConfig());\n                    value = enumDeser.valueOf(ordinal);\n                } else {\n                    value = scanEnum(lexer, seperator);\n                }\n                \n                fieldDeser.setValue(object, value);\n            } else if (fieldClass == boolean.class) {\n                boolean value = lexer.scanBoolean(seperator);\n                fieldDeser.setValue(object, value);\n            } else if (fieldClass == float.class) {\n                float value = lexer.scanFloat(seperator);\n                fieldDeser.setValue(object, value);\n            } else if (fieldClass == double.class) {\n                double value = lexer.scanDouble(seperator);\n                fieldDeser.setValue(object, value);\n            } else if (fieldClass == java.util.Date.class && lexer.getCurrent() == '1') {\n                long longValue = lexer.scanLong(seperator);\n                fieldDeser.setValue(object, new java.util.Date(longValue));\n            } else if (fieldClass == BigDecimal.class) {\n                BigDecimal value = lexer.scanDecimal(seperator);\n                fieldDeser.setValue(object, value);\n            } else {\n                lexer.nextToken(JSONToken.LBRACKET);\n                Object value = parser.parseObject(fieldDeser.fieldInfo.fieldType, fieldDeser.fieldInfo.name);\n                fieldDeser.setValue(object, value);\n\n                if (lexer.token() == JSONToken.RBRACKET) {\n                    break;\n                }\n\n                check(lexer, seperator == ']' ? JSONToken.RBRACKET : JSONToken.COMMA);\n                // parser.accept(seperator == ']' ? JSONToken.RBRACKET : JSONToken.COMMA);\n            }\n        }\n        lexer.nextToken(JSONToken.COMMA);\n\n        return (T) object;\n    }\n\n    protected void check(final JSONLexer lexer, int token) {\n        if (lexer.token() != token) {\n            throw new JSONException(\"syntax error\");\n        }\n    }\n    \n    protected Enum<?> scanEnum(JSONLexer lexer, char seperator) {\n        throw new JSONException(\"illegal enum. \" + lexer.info());\n    }\n\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    protected <T> T deserialze(DefaultJSONParser parser, // \n                               Type type, // \n                               Object fieldName, // \n                               Object object, //\n                               int features, //\n                               int[] setFlags) {\n        if (type == JSON.class || type == JSONObject.class) {\n            return (T) parser.parse();\n        }\n\n        final JSONLexerBase lexer = (JSONLexerBase) parser.lexer; // xxx\n        final ParserConfig config = parser.getConfig();\n\n        int token = lexer.token();\n        if (token == JSONToken.NULL) {\n            lexer.nextToken(JSONToken.COMMA);\n            return null;\n        }\n\n        ParseContext context = parser.getContext();\n        if (object != null && context != null) {\n            context = context.parent;\n        }\n        ParseContext childContext = null;\n\n        try {\n            Map<String, Object> fieldValues = null;\n\n            if (token == JSONToken.RBRACE) {\n                lexer.nextToken(JSONToken.COMMA);\n                if (object == null) {\n                    object = createInstance(parser, type);\n                }\n                return (T) object;\n            }\n\n            if (token == JSONToken.LBRACKET) {\n                final int mask = Feature.SupportArrayToBean.mask;\n                boolean isSupportArrayToBean = (beanInfo.parserFeatures & mask) != 0 //\n                                               || lexer.isEnabled(Feature.SupportArrayToBean) //\n                                               || (features & mask) != 0\n                                               ;\n                if (isSupportArrayToBean) {\n                    return deserialzeArrayMapping(parser, type, fieldName, object);\n                }\n            }\n\n            if (token != JSONToken.LBRACE && token != JSONToken.COMMA) {\n                if (lexer.isBlankInput()) {\n                    return null;\n                }\n\n                if (token == JSONToken.LITERAL_STRING) {\n                    String strVal = lexer.stringVal();\n                    if (strVal.length() == 0) {\n                        lexer.nextToken();\n                        return null;\n                    }\n\n                    if (beanInfo.jsonType != null) {\n                        for (Class<?> seeAlsoClass : beanInfo.jsonType.seeAlso()) {\n                            if (Enum.class.isAssignableFrom(seeAlsoClass)) {\n                                try {\n                                    Enum<?> e = Enum.valueOf((Class<Enum>) seeAlsoClass, strVal);\n                                    return (T) e;\n                                } catch (IllegalArgumentException e) {\n                                    // skip\n                                }\n                            }\n                        }\n                    }\n                }\n\n                if (token == JSONToken.LBRACKET && lexer.getCurrent() == ']') {\n                    lexer.next();\n                    lexer.nextToken();\n                    return null;\n                }\n\n                if (beanInfo.factoryMethod != null && beanInfo.fields.length == 1) {\n                    try {\n                        FieldInfo field = beanInfo.fields[0];\n                        if (field.fieldClass == Integer.class) {\n                            if (token == JSONToken.LITERAL_INT) {\n                                int intValue = lexer.intValue();\n                                lexer.nextToken();\n                                return (T) createFactoryInstance(config, intValue);\n                            }\n                        } else if (field.fieldClass == String.class) {\n                            if (token == JSONToken.LITERAL_STRING) {\n                                String stringVal = lexer.stringVal();\n                                lexer.nextToken();\n                                return (T) createFactoryInstance(config, stringVal);\n                            }\n                        }\n                    } catch (Exception ex) {\n                        throw new JSONException(ex.getMessage(), ex);\n                    }\n                }\n                \n                StringBuilder buf = (new StringBuilder()) //\n                                                        .append(\"syntax error, expect {, actual \") //\n                                                        .append(lexer.tokenName()) //\n                                                        .append(\", pos \") //\n                                                        .append(lexer.pos());\n\n                if (fieldName instanceof String) {\n                    buf //\n                        .append(\", fieldName \") //\n                        .append(fieldName);\n                }\n\n                buf.append(\", fastjson-version \").append(JSON.VERSION);\n                \n                throw new JSONException(buf.toString());\n            }\n\n            if (parser.resolveStatus == DefaultJSONParser.TypeNameRedirect) {\n                parser.resolveStatus = DefaultJSONParser.NONE;\n            }\n\n            String typeKey = beanInfo.typeKey;\n            for (int fieldIndex = 0, notMatchCount = 0;; fieldIndex++) {\n                String key = null;\n                FieldDeserializer fieldDeserializer = null;\n                FieldInfo fieldInfo = null;\n                Class<?> fieldClass = null;\n                JSONField fieldAnnotation = null;\n                boolean customDeserializer = false;\n                if (fieldIndex < sortedFieldDeserializers.length && notMatchCount < 16) {\n                    fieldDeserializer = sortedFieldDeserializers[fieldIndex];\n                    fieldInfo = fieldDeserializer.fieldInfo;\n                    fieldClass = fieldInfo.fieldClass;\n                    fieldAnnotation = fieldInfo.getAnnotation();\n                    if (fieldAnnotation != null && fieldDeserializer instanceof DefaultFieldDeserializer) {\n                        customDeserializer = ((DefaultFieldDeserializer) fieldDeserializer).customDeserilizer;\n                    }\n                }\n\n                boolean matchField = false;\n                boolean valueParsed = false;\n                \n                Object fieldValue = null;\n                if (fieldDeserializer != null) {\n                    char[] name_chars = fieldInfo.name_chars;\n                    if (customDeserializer && lexer.matchField(name_chars)) {\n                        matchField = true;\n                    } else if (fieldClass == int.class || fieldClass == Integer.class) {\n                        int intVal = lexer.scanFieldInt(name_chars);\n                        if (intVal == 0 && lexer.matchStat == JSONLexer.VALUE_NULL) {\n                            fieldValue = null;\n                        } else {\n                            fieldValue = intVal;\n                        }\n\n                        if (lexer.matchStat > 0) {\n                            matchField = true;\n                            valueParsed = true;\n                        } else if (lexer.matchStat == JSONLexer.NOT_MATCH_NAME) {\n                            notMatchCount++;\n                            continue;\n                        }\n                    } else if (fieldClass == long.class || fieldClass == Long.class) {\n                        long longVal = lexer.scanFieldLong(name_chars);\n                        if (longVal == 0 && lexer.matchStat == JSONLexer.VALUE_NULL) {\n                            fieldValue = null;\n                        } else {\n                            fieldValue = longVal;\n                        }\n\n                        if (lexer.matchStat > 0) {\n                            matchField = true;\n                            valueParsed = true;\n                        } else if (lexer.matchStat == JSONLexer.NOT_MATCH_NAME) {\n                            notMatchCount++;\n                            continue;\n                        }\n                    } else if (fieldClass == String.class) {\n                        fieldValue = lexer.scanFieldString(name_chars);\n                        \n                        if (lexer.matchStat > 0) {\n                            matchField = true;\n                            valueParsed = true;\n                        } else if (lexer.matchStat == JSONLexer.NOT_MATCH_NAME) {\n                            notMatchCount++;\n                            continue;\n                        }\n                    } else if (fieldClass == java.util.Date.class && fieldInfo.format == null) {\n                        fieldValue = lexer.scanFieldDate(name_chars);\n\n                        if (lexer.matchStat > 0) {\n                            matchField = true;\n                            valueParsed = true;\n                        } else if (lexer.matchStat == JSONLexer.NOT_MATCH_NAME) {\n                            notMatchCount++;\n                            continue;\n                        }\n                    } else if (fieldClass == BigDecimal.class) {\n                        fieldValue = lexer.scanFieldDecimal(name_chars);\n\n                        if (lexer.matchStat > 0) {\n                            matchField = true;\n                            valueParsed = true;\n                        } else if (lexer.matchStat == JSONLexer.NOT_MATCH_NAME) {\n                            notMatchCount++;\n                            continue;\n                        }\n                    } else if (fieldClass == BigInteger.class) {\n                        fieldValue = lexer.scanFieldBigInteger(name_chars);\n\n                        if (lexer.matchStat > 0) {\n                            matchField = true;\n                            valueParsed = true;\n                        } else if (lexer.matchStat == JSONLexer.NOT_MATCH_NAME) {\n                            notMatchCount++;\n                            continue;\n                        }\n                    } else if (fieldClass == boolean.class || fieldClass == Boolean.class) {\n                        boolean booleanVal = lexer.scanFieldBoolean(name_chars);\n\n                        if (lexer.matchStat == JSONLexer.VALUE_NULL) {\n                            fieldValue = null;\n                        } else {\n                            fieldValue = booleanVal;\n                        }\n                        \n                        if (lexer.matchStat > 0) {\n                            matchField = true;\n                            valueParsed = true;\n                        } else if (lexer.matchStat == JSONLexer.NOT_MATCH_NAME) {\n                            notMatchCount++;\n                            continue;\n                        }\n                    } else if (fieldClass == float.class || fieldClass == Float.class) {\n                        float floatVal = lexer.scanFieldFloat(name_chars);\n                        if (floatVal == 0 && lexer.matchStat == JSONLexer.VALUE_NULL) {\n                            fieldValue = null;\n                        } else {\n                            fieldValue = floatVal;\n                        }\n\n                        if (lexer.matchStat > 0) {\n                            matchField = true;\n                            valueParsed = true;\n                        } else if (lexer.matchStat == JSONLexer.NOT_MATCH_NAME) {\n                            notMatchCount++;\n                            continue;\n                        }\n                    } else if (fieldClass == double.class || fieldClass == Double.class) {\n                        double doubleVal = lexer.scanFieldDouble(name_chars);\n                        if (doubleVal == 0 && lexer.matchStat == JSONLexer.VALUE_NULL) {\n                            fieldValue = null;\n                        } else {\n                            fieldValue = doubleVal;\n                        }\n\n                        if (lexer.matchStat > 0) {\n                            matchField = true;\n                            valueParsed = true;\n                        } else if (lexer.matchStat == JSONLexer.NOT_MATCH_NAME) {\n                            notMatchCount++;\n                            continue;\n                        }\n                    } else if (fieldClass.isEnum() // \n                            && parser.getConfig().getDeserializer(fieldClass) instanceof EnumDeserializer\n                            && (fieldAnnotation == null || fieldAnnotation.deserializeUsing() == Void.class)\n                            ) {\n                        if (fieldDeserializer instanceof DefaultFieldDeserializer) {\n                            ObjectDeserializer fieldValueDeserilizer = ((DefaultFieldDeserializer) fieldDeserializer).fieldValueDeserilizer;\n                            fieldValue = this.scanEnum(lexer, name_chars, fieldValueDeserilizer);\n\n                            if (lexer.matchStat > 0) {\n                                matchField = true;\n                                valueParsed = true;\n                            } else if (lexer.matchStat == JSONLexer.NOT_MATCH_NAME) {\n                                notMatchCount++;\n                                continue;\n                            }\n                        }\n                    } else if (fieldClass == int[].class) {\n                        fieldValue = lexer.scanFieldIntArray(name_chars);\n\n                        if (lexer.matchStat > 0) {\n                            matchField = true;\n                            valueParsed = true;\n                        } else if (lexer.matchStat == JSONLexer.NOT_MATCH_NAME) {\n                            notMatchCount++;\n                            continue;\n                        }\n                    } else if (fieldClass == float[].class) {\n                        fieldValue = lexer.scanFieldFloatArray(name_chars);\n\n                        if (lexer.matchStat > 0) {\n                            matchField = true;\n                            valueParsed = true;\n                        } else if (lexer.matchStat == JSONLexer.NOT_MATCH_NAME) {\n                            notMatchCount++;\n                            continue;\n                        }\n                    } else if (fieldClass == float[][].class) {\n                        fieldValue = lexer.scanFieldFloatArray2(name_chars);\n\n                        if (lexer.matchStat > 0) {\n                            matchField = true;\n                            valueParsed = true;\n                        } else if (lexer.matchStat == JSONLexer.NOT_MATCH_NAME) {\n                            notMatchCount++;\n                            continue;\n                        }\n                    } else if (lexer.matchField(name_chars)) {\n                        matchField = true;\n                    } else {\n                        continue;\n                    }\n                }\n                \n                if (!matchField) {\n                    key = lexer.scanSymbol(parser.symbolTable);\n\n                    if (key == null) {\n                        token = lexer.token();\n                        if (token == JSONToken.RBRACE) {\n                            lexer.nextToken(JSONToken.COMMA);\n                            break;\n                        }\n                        if (token == JSONToken.COMMA) {\n                            if (lexer.isEnabled(Feature.AllowArbitraryCommas)) {\n                                continue;\n                            }\n                        }\n                    }\n\n                    if (\"$ref\" == key && context != null) {\n                        lexer.nextTokenWithColon(JSONToken.LITERAL_STRING);\n                        token = lexer.token();\n                        if (token == JSONToken.LITERAL_STRING) {\n                            String ref = lexer.stringVal();\n                            if (\"@\".equals(ref)) {\n                                object = context.object;\n                            } else if (\"..\".equals(ref)) {\n                                ParseContext parentContext = context.parent;\n                                if (parentContext.object != null) {\n                                    object = parentContext.object;\n                                } else {\n                                    parser.addResolveTask(new ResolveTask(parentContext, ref));\n                                    parser.resolveStatus = DefaultJSONParser.NeedToResolve;\n                                }\n                            } else if (\"$\".equals(ref)) {\n                                ParseContext rootContext = context;\n                                while (rootContext.parent != null) {\n                                    rootContext = rootContext.parent;\n                                }\n\n                                if (rootContext.object != null) {\n                                    object = rootContext.object;\n                                } else {\n                                    parser.addResolveTask(new ResolveTask(rootContext, ref));\n                                    parser.resolveStatus = DefaultJSONParser.NeedToResolve;\n                                }\n                            } else {\n                                if (ref.indexOf('\\\\') > 0) {\n                                    StringBuilder buf = new StringBuilder();\n                                    for (int i = 0; i < ref.length(); ++i) {\n                                        char ch = ref.charAt(i);\n                                        if (ch == '\\\\') {\n                                            ch = ref.charAt(++i);\n                                        }\n                                        buf.append(ch);\n                                    }\n                                    ref = buf.toString();\n                                }\n                                Object refObj = parser.resolveReference(ref);\n                                if (refObj != null) {\n                                    object = refObj;\n                                } else {\n                                    parser.addResolveTask(new ResolveTask(context, ref));\n                                    parser.resolveStatus = DefaultJSONParser.NeedToResolve;\n                                }\n                            }\n                        } else {\n                            throw new JSONException(\"illegal ref, \" + JSONToken.name(token));\n                        }\n\n                        lexer.nextToken(JSONToken.RBRACE);\n                        if (lexer.token() != JSONToken.RBRACE) {\n                            throw new JSONException(\"illegal ref\");\n                        }\n                        lexer.nextToken(JSONToken.COMMA);\n\n                        parser.setContext(context, object, fieldName);\n\n                        return (T) object;\n                    }\n\n                    if ((typeKey != null && typeKey.equals(key))\n                            || JSON.DEFAULT_TYPE_KEY == key) {\n                        lexer.nextTokenWithColon(JSONToken.LITERAL_STRING);\n                        if (lexer.token() == JSONToken.LITERAL_STRING) {\n                            String typeName = lexer.stringVal();\n                            lexer.nextToken(JSONToken.COMMA);\n\n                            if (typeName.equals(beanInfo.typeName)|| parser.isEnabled(Feature.IgnoreAutoType)) {\n                                if (lexer.token() == JSONToken.RBRACE) {\n                                    lexer.nextToken();\n                                    break;\n                                }\n                                continue;\n                            }\n                            \n\n                            ObjectDeserializer deserializer = getSeeAlso(config, this.beanInfo, typeName);\n                            Class<?> userType = null;\n\n                            if (deserializer == null) {\n                                Class<?> expectClass = TypeUtils.getClass(type);\n\n                                if (autoTypeCheckHandler != null) {\n                                    userType = autoTypeCheckHandler.handler(typeName, expectClass, lexer.getFeatures());\n                                }\n\n                                if (userType == null) {\n                                    if (typeName.equals(\"java.util.HashMap\") || typeName.equals(\"java.util.LinkedHashMap\")) {\n                                        if (lexer.token() == JSONToken.RBRACE) {\n                                            lexer.nextToken();\n                                            break;\n                                        }\n                                        continue;\n                                    }\n                                }\n\n                                if (userType == null) {\n                                    userType = config.checkAutoType(typeName, expectClass, lexer.getFeatures());\n                                }\n                                deserializer = parser.getConfig().getDeserializer(userType);\n                            }\n\n                            Object typedObject = deserializer.deserialze(parser, userType, fieldName);\n                            if (deserializer instanceof JavaBeanDeserializer) {\n                                JavaBeanDeserializer javaBeanDeserializer = (JavaBeanDeserializer) deserializer;\n                                if (typeKey != null) {\n                                    FieldDeserializer typeKeyFieldDeser = javaBeanDeserializer.getFieldDeserializer(typeKey);\n                                    if (typeKeyFieldDeser != null) {\n                                        typeKeyFieldDeser.setValue(typedObject, typeName);\n                                    }\n                                }\n                            }\n                            return (T) typedObject;\n                        } else {\n                            throw new JSONException(\"syntax error\");\n                        }\n                    }\n                }\n\n                if (object == null && fieldValues == null) {\n                    object = createInstance(parser, type);\n                    if (object == null) {\n                        fieldValues = new HashMap<String, Object>(this.fieldDeserializers.length);\n                    }\n                    childContext = parser.setContext(context, object, fieldName);\n                    if (setFlags == null) {\n                        setFlags = new int[(this.fieldDeserializers.length / 32) + 1];\n                    }\n                }\n\n                if (matchField) {\n                    if (!valueParsed) {\n                        fieldDeserializer.parseField(parser, object, type, fieldValues);\n                    } else {\n                        if (object == null) {\n                            fieldValues.put(fieldInfo.name, fieldValue);\n                        } else if (fieldValue == null) {\n                            if (fieldClass != int.class //\n                                    && fieldClass != long.class //\n                                    && fieldClass != float.class //\n                                    && fieldClass != double.class //\n                                    && fieldClass != boolean.class //\n                                    ) {\n                                fieldDeserializer.setValue(object, fieldValue);\n                            }\n                        } else {\n                            if (fieldClass == String.class\n                                    && ((features & Feature.TrimStringFieldValue.mask) != 0\n                                        || (beanInfo.parserFeatures & Feature.TrimStringFieldValue.mask) != 0\n                                        || (fieldInfo.parserFeatures & Feature.TrimStringFieldValue.mask) != 0)) {\n                                fieldValue = ((String) fieldValue).trim();\n                            }\n\n                            fieldDeserializer.setValue(object, fieldValue);\n                        }\n\n                        if (setFlags != null) {\n                            int flagIndex = fieldIndex / 32;\n                            int bitIndex = fieldIndex % 32;\n                            setFlags[flagIndex] |= (1 << bitIndex);\n                        }\n\n                        if (lexer.matchStat == JSONLexer.END) {\n                            break;\n                        }\n                    }\n                } else {\n                    boolean match = parseField(parser, key, object, type,\n                            fieldValues == null ? new HashMap<String, Object>(this.fieldDeserializers.length) : fieldValues, setFlags);\n\n                    if (!match) {\n                        if (lexer.token() == JSONToken.RBRACE) {\n                            lexer.nextToken();\n                            break;\n                        }\n\n                        continue;\n                    } else if (lexer.token() == JSONToken.COLON) {\n                        throw new JSONException(\"syntax error, unexpect token ':'\");\n                    }\n                }\n\n                if (lexer.token() == JSONToken.COMMA) {\n                    continue;\n                }\n\n                if (lexer.token() == JSONToken.RBRACE) {\n                    lexer.nextToken(JSONToken.COMMA);\n                    break;\n                }\n\n                if (lexer.token() == JSONToken.IDENTIFIER || lexer.token() == JSONToken.ERROR) {\n                    throw new JSONException(\"syntax error, unexpect token \" + JSONToken.name(lexer.token()));\n                }\n            }\n\n            if (object == null) {\n                if (fieldValues == null) {\n                    object = createInstance(parser, type);\n                    if (childContext == null) {\n                        childContext = parser.setContext(context, object, fieldName);\n                    }\n                    return (T) object;\n                }\n\n                String[] paramNames = beanInfo.creatorConstructorParameters;\n                final Object[] params;\n                if (paramNames != null) {\n                    params = new Object[paramNames.length];\n                    for (int i = 0; i < paramNames.length; i++) {\n                        String paramName = paramNames[i];\n\n                        Object param = fieldValues.remove(paramName);\n                        if (param == null) {\n                            Type fieldType = beanInfo.creatorConstructorParameterTypes[i];\n                            FieldInfo fieldInfo = beanInfo.fields[i];\n                            if (fieldType == byte.class) {\n                                param = (byte) 0;\n                            } else if (fieldType == short.class) {\n                                param = (short) 0;\n                            } else if (fieldType == int.class) {\n                                param = 0;\n                            } else if (fieldType == long.class) {\n                                param = 0L;\n                            } else if (fieldType == float.class) {\n                                param = 0F;\n                            } else if (fieldType == double.class) {\n                                param = 0D;\n                            } else if (fieldType == boolean.class) {\n                                param = Boolean.FALSE;\n                            } else if (fieldType == String.class\n                                    && (fieldInfo.parserFeatures & Feature.InitStringFieldAsEmpty.mask) != 0) {\n                                param = \"\";\n                            }\n                        } else {\n                            if (beanInfo.creatorConstructorParameterTypes != null && i < beanInfo.creatorConstructorParameterTypes.length) {\n                                Type paramType = beanInfo.creatorConstructorParameterTypes[i];\n                                if (paramType instanceof Class) {\n                                    Class paramClass = (Class) paramType;\n                                    if (!paramClass.isInstance(param)) {\n                                        if (param instanceof List) {\n                                            List list = (List) param;\n                                            if (list.size() == 1) {\n                                                Object first = list.get(0);\n                                                if (paramClass.isInstance(first)) {\n                                                    param = list.get(0);\n                                                }\n                                            }\n                                        }\n                                    }\n                                }\n                            }\n                        }\n                        params[i] = param;\n                    }\n                } else {\n                    FieldInfo[] fieldInfoList = beanInfo.fields;\n                    int size = fieldInfoList.length;\n                    params = new Object[size];\n                    for (int i = 0; i < size; ++i) {\n                        FieldInfo fieldInfo = fieldInfoList[i];\n                        Object param = fieldValues.get(fieldInfo.name);\n                        if (param == null) {\n                            Type fieldType = fieldInfo.fieldType;\n                            if (fieldType == byte.class) {\n                                param = (byte) 0;\n                            } else if (fieldType == short.class) {\n                                param = (short) 0;\n                            } else if (fieldType == int.class) {\n                                param = 0;\n                            } else if (fieldType == long.class) {\n                                param = 0L;\n                            } else if (fieldType == float.class) {\n                                param = 0F;\n                            } else if (fieldType == double.class) {\n                                param = 0D;\n                            } else if (fieldType == boolean.class) {\n                                param = Boolean.FALSE;\n                            } else if (fieldType == String.class\n                                    && (fieldInfo.parserFeatures & Feature.InitStringFieldAsEmpty.mask) != 0) {\n                                param = \"\";\n                            }\n                        }\n                        params[i] = param;\n                    }\n                }\n\n                if (beanInfo.creatorConstructor != null) {\n                    boolean hasNull = false;\n                    if (beanInfo.kotlin) {\n                        for (int i = 0; i < params.length; i++) {\n                            if (params[i] == null && beanInfo.fields != null && i < beanInfo.fields.length) {\n                                FieldInfo fieldInfo = beanInfo.fields[i];\n                                if (fieldInfo.fieldClass == String.class) {\n                                    hasNull = true;\n                                }\n                                break;\n                            }\n                        }\n                    }\n\n                    try {\n                        if (hasNull && beanInfo.kotlinDefaultConstructor != null) {\n                            object = beanInfo.kotlinDefaultConstructor.newInstance(new Object[0]);\n\n                            for (int i = 0; i < params.length; i++) {\n                                final Object param = params[i];\n                                if (param != null && beanInfo.fields != null && i < beanInfo.fields.length) {\n                                    FieldInfo fieldInfo = beanInfo.fields[i];\n                                    fieldInfo.set(object, param);\n                                }\n                            }\n                        } else {\n                            object = beanInfo.creatorConstructor.newInstance(params);\n                        }\n                    } catch (Exception e) {\n                        throw new JSONException(\"create instance error, \" + paramNames + \", \"\n                                                + beanInfo.creatorConstructor.toGenericString(), e);\n                    }\n\n                    if (paramNames != null) {\n                        for (Map.Entry<String, Object> entry : fieldValues.entrySet()) {\n                            FieldDeserializer fieldDeserializer = getFieldDeserializer(entry.getKey());\n                            if (fieldDeserializer != null) {\n                                fieldDeserializer.setValue(object, entry.getValue());\n                            }\n                        }\n                    }\n                } else if (beanInfo.factoryMethod != null) {\n                    try {\n                        object = beanInfo.factoryMethod.invoke(null, params);\n                    } catch (Exception e) {\n                        throw new JSONException(\"create factory method error, \" + beanInfo.factoryMethod.toString(), e);\n                    }\n                }\n\n                if (childContext != null) {\n                    childContext.object = object;\n                }\n            }\n            \n            Method buildMethod = beanInfo.buildMethod;\n            if (buildMethod == null) {\n                return (T) object;\n            }\n            \n            \n            Object builtObj;\n            try {\n                builtObj = buildMethod.invoke(object);\n            } catch (Exception e) {\n                throw new JSONException(\"build object error\", e);\n            }\n            \n            return (T) builtObj;\n        } finally {\n            if (childContext != null) {\n                childContext.object = object;\n            }\n            parser.setContext(context);\n        }\n    }\n\n    protected Enum scanEnum(JSONLexerBase lexer, char[] name_chars, ObjectDeserializer fieldValueDeserilizer) {\n        EnumDeserializer enumDeserializer = null;\n        if (fieldValueDeserilizer instanceof EnumDeserializer) {\n            enumDeserializer = (EnumDeserializer) fieldValueDeserilizer;\n        }\n\n        if (enumDeserializer == null) {\n            lexer.matchStat = JSONLexer.NOT_MATCH;\n            return null;\n        }\n\n        long enumNameHashCode = lexer.scanEnumSymbol(name_chars);\n        if (lexer.matchStat > 0) {\n            Enum e = enumDeserializer.getEnumByHashCode(enumNameHashCode);\n            if (e == null) {\n                if (enumNameHashCode == fnv1a_64_magic_hashcode) {\n                    return null;\n                }\n\n                if (lexer.isEnabled(Feature.ErrorOnEnumNotMatch)) {\n                    throw new JSONException(\"not match enum value, \" + enumDeserializer.enumClass);\n                }\n            }\n\n            return e;\n        } else {\n            return null;\n        }\n    }\n\n    public boolean parseField(DefaultJSONParser parser, String key, Object object, Type objectType,\n                              Map<String, Object> fieldValues) {\n        return parseField(parser, key, object, objectType, fieldValues, null);\n    }\n    \n    public boolean parseField(DefaultJSONParser parser, String key, Object object, Type objectType,\n                              Map<String, Object> fieldValues, int[] setFlags) {\n        JSONLexer lexer = parser.lexer; // xxx\n\n        final int disableFieldSmartMatchMask = Feature.DisableFieldSmartMatch.mask;\n        final int initStringFieldAsEmpty = Feature.InitStringFieldAsEmpty.mask;\n        FieldDeserializer fieldDeserializer;\n        if (lexer.isEnabled(disableFieldSmartMatchMask) || (this.beanInfo.parserFeatures & disableFieldSmartMatchMask) != 0) {\n            fieldDeserializer = getFieldDeserializer(key);\n        } else if (lexer.isEnabled(initStringFieldAsEmpty) || (this.beanInfo.parserFeatures & initStringFieldAsEmpty) != 0) {\n            fieldDeserializer = smartMatch(key);\n        } else {\n            fieldDeserializer = smartMatch(key, setFlags);\n        }\n\n        final int mask = Feature.SupportNonPublicField.mask;\n        if (fieldDeserializer == null\n                && (lexer.isEnabled(mask)\n                    || (this.beanInfo.parserFeatures & mask) != 0)) {\n            if (this.extraFieldDeserializers == null) {\n                ConcurrentHashMap extraFieldDeserializers = new ConcurrentHashMap<String, Object>(1, 0.75f, 1);\n                for (Class c = this.clazz; c != null && c != Object.class; c = c.getSuperclass()) {\n                    Field[] fields = c.getDeclaredFields();\n                    for (Field field : fields) {\n                        String fieldName = field.getName();\n                        if (this.getFieldDeserializer(fieldName) != null) {\n                            continue;\n                        }\n                        int fieldModifiers = field.getModifiers();\n                        if ((fieldModifiers & Modifier.FINAL) != 0 || (fieldModifiers & Modifier.STATIC) != 0) {\n                            continue;\n                        }\n                        JSONField jsonField = TypeUtils.getAnnotation(field, JSONField.class);\n                        if (jsonField != null) {\n                            String alteredFieldName = jsonField.name();\n                            if (!\"\".equals(alteredFieldName)) {\n                                fieldName = alteredFieldName;\n                            }\n                        }\n                        extraFieldDeserializers.put(fieldName, field);\n                    }\n                }\n                this.extraFieldDeserializers = extraFieldDeserializers;\n            }\n\n            Object deserOrField = extraFieldDeserializers.get(key);\n            if (deserOrField != null) {\n                if (deserOrField instanceof FieldDeserializer) {\n                    fieldDeserializer = ((FieldDeserializer) deserOrField);\n                } else {\n                    Field field = (Field) deserOrField;\n                    field.setAccessible(true);\n                    FieldInfo fieldInfo = new FieldInfo(key, field.getDeclaringClass(), field.getType(), field.getGenericType(), field, 0, 0, 0);\n                    fieldDeserializer = new DefaultFieldDeserializer(parser.getConfig(), clazz, fieldInfo);\n                    extraFieldDeserializers.put(key, fieldDeserializer);\n                }\n            }\n        }\n\n        if (fieldDeserializer == null) {\n            if (!lexer.isEnabled(Feature.IgnoreNotMatch)) {\n                throw new JSONException(\"setter not found, class \" + clazz.getName() + \", property \" + key);\n            }\n\n            int fieldIndex = -1;\n            for (int i = 0; i < this.sortedFieldDeserializers.length; i++) {\n                FieldDeserializer fieldDeser = this.sortedFieldDeserializers[i];\n\n                FieldInfo fieldInfo = fieldDeser.fieldInfo;\n                if (fieldInfo.unwrapped //\n                        && fieldDeser instanceof DefaultFieldDeserializer) {\n                    if (fieldInfo.field != null) {\n                        DefaultFieldDeserializer defaultFieldDeserializer = (DefaultFieldDeserializer) fieldDeser;\n                        ObjectDeserializer fieldValueDeser = defaultFieldDeserializer.getFieldValueDeserilizer(parser.getConfig());\n                        if (fieldValueDeser instanceof JavaBeanDeserializer) {\n                            JavaBeanDeserializer javaBeanFieldValueDeserializer = (JavaBeanDeserializer) fieldValueDeser;\n                            FieldDeserializer unwrappedFieldDeser = javaBeanFieldValueDeserializer.getFieldDeserializer(key);\n                            if (unwrappedFieldDeser != null) {\n                                Object fieldObject;\n                                try {\n                                    fieldObject = fieldInfo.field.get(object);\n                                    if (fieldObject == null) {\n                                        fieldObject = ((JavaBeanDeserializer) fieldValueDeser).createInstance(parser, fieldInfo.fieldType);\n                                        fieldDeser.setValue(object, fieldObject);\n                                    }\n                                    lexer.nextTokenWithColon(defaultFieldDeserializer.getFastMatchToken());\n                                    unwrappedFieldDeser.parseField(parser, fieldObject, objectType, fieldValues);\n                                    fieldIndex = i;\n                                } catch (Exception e) {\n                                    throw new JSONException(\"parse unwrapped field error.\", e);\n                                }\n                            }\n                        } else if (fieldValueDeser instanceof MapDeserializer) {\n                            MapDeserializer javaBeanFieldValueDeserializer = (MapDeserializer) fieldValueDeser;\n\n                            Map fieldObject;\n                            try {\n                                fieldObject = (Map) fieldInfo.field.get(object);\n                                if (fieldObject == null) {\n                                    fieldObject = javaBeanFieldValueDeserializer.createMap(fieldInfo.fieldType);\n                                    fieldDeser.setValue(object, fieldObject);\n                                }\n\n                                lexer.nextTokenWithColon();\n                                Object fieldValue = parser.parse(key);\n                                fieldObject.put(key, fieldValue);\n                            } catch (Exception e) {\n                                throw new JSONException(\"parse unwrapped field error.\", e);\n                            }\n                            fieldIndex = i;\n                        }\n                    } else if (fieldInfo.method.getParameterTypes().length == 2) {\n                        lexer.nextTokenWithColon();\n                        Object fieldValue = parser.parse(key);\n                        try {\n                            fieldInfo.method.invoke(object, key, fieldValue);\n                        } catch (Exception e) {\n                            throw new JSONException(\"parse unwrapped field error.\", e);\n                        }\n                        fieldIndex = i;\n                    }\n                }\n            }\n\n            if (fieldIndex != -1) {\n                if (setFlags != null) {\n                    int flagIndex = fieldIndex / 32;\n                    int bitIndex = fieldIndex % 32;\n                    setFlags[flagIndex] |= (1 << bitIndex);\n                }\n                return true;\n            }\n            \n            parser.parseExtra(object, key);\n\n            return false;\n        }\n\n        int fieldIndex = -1;\n        for (int i = 0; i < sortedFieldDeserializers.length; ++i) {\n            if (sortedFieldDeserializers[i] == fieldDeserializer) {\n                fieldIndex = i;\n                break;\n            }\n        }\n        if (fieldIndex != -1 && setFlags != null && key.startsWith(\"_\")) {\n            if (isSetFlag(fieldIndex, setFlags)) {\n                parser.parseExtra(object, key);\n                return false;\n            }\n        }\n\n        lexer.nextTokenWithColon(fieldDeserializer.getFastMatchToken());\n\n        fieldDeserializer.parseField(parser, object, objectType, fieldValues);\n\n        if (setFlags != null) {\n            int flagIndex = fieldIndex / 32;\n            int bitIndex = fieldIndex % 32;\n            setFlags[flagIndex] |= (1 << bitIndex);\n        }\n\n        return true;\n    }\n\n    public FieldDeserializer smartMatch(String key) {\n        return smartMatch(key, null);\n    }\n\n    public FieldDeserializer smartMatch(String key, int[] setFlags) {\n        if (key == null) {\n            return null;\n        }\n        \n        FieldDeserializer fieldDeserializer = getFieldDeserializer(key, setFlags);\n\n        if (fieldDeserializer == null) {\n            if (this.smartMatchHashArray == null) {\n                long[] hashArray = new long[sortedFieldDeserializers.length];\n                for (int i = 0; i < sortedFieldDeserializers.length; i++) {\n                    hashArray[i] = sortedFieldDeserializers[i].fieldInfo.nameHashCode;\n                }\n                Arrays.sort(hashArray);\n                this.smartMatchHashArray = hashArray;\n            }\n\n            // smartMatchHashArrayMapping\n            long smartKeyHash = TypeUtils.fnv1a_64_lower(key);\n            int pos = Arrays.binarySearch(smartMatchHashArray, smartKeyHash);\n            if (pos < 0) {\n                long smartKeyHash1 = TypeUtils.fnv1a_64_extract(key);\n                pos = Arrays.binarySearch(smartMatchHashArray, smartKeyHash1);\n            }\n\n            boolean is = false;\n            if (pos < 0 && (is = key.startsWith(\"is\"))) {\n                smartKeyHash = TypeUtils.fnv1a_64_extract(key.substring(2));\n                pos = Arrays.binarySearch(smartMatchHashArray, smartKeyHash);\n            }\n\n            if (pos >= 0) {\n                if (smartMatchHashArrayMapping == null) {\n                    short[] mapping = new short[smartMatchHashArray.length];\n                    Arrays.fill(mapping, (short) -1);\n                    for (int i = 0; i < sortedFieldDeserializers.length; i++) {\n                        int p = Arrays.binarySearch(smartMatchHashArray, sortedFieldDeserializers[i].fieldInfo.nameHashCode);\n                        if (p >= 0) {\n                            mapping[p] = (short) i;\n                        }\n                    }\n                    smartMatchHashArrayMapping = mapping;\n                }\n\n                int deserIndex = smartMatchHashArrayMapping[pos];\n                if (deserIndex != -1) {\n                    if (!isSetFlag(deserIndex, setFlags)) {\n                        fieldDeserializer = sortedFieldDeserializers[deserIndex];\n                    }\n                }\n            }\n\n            if (fieldDeserializer != null) {\n                FieldInfo fieldInfo = fieldDeserializer.fieldInfo;\n                if ((fieldInfo.parserFeatures & Feature.DisableFieldSmartMatch.mask) != 0) {\n                    return null;\n                }\n\n                Class fieldClass = fieldInfo.fieldClass;\n                if (is && (fieldClass != boolean.class && fieldClass != Boolean.class)) {\n                    fieldDeserializer = null;\n                }\n            }\n        }\n\n\n        return fieldDeserializer;\n    }\n\n    public int getFastMatchToken() {\n        return JSONToken.LBRACE;\n    }\n\n    private Object createFactoryInstance(ParserConfig config, Object value) //\n            throws IllegalArgumentException,\n            IllegalAccessException,\n            InvocationTargetException {\n        return beanInfo.factoryMethod.invoke(null, value);\n    }\n    \n    public Object createInstance(Map<String, Object> map, ParserConfig config) //\n                                                                               throws IllegalArgumentException,\n                                                                               IllegalAccessException,\n                                                                               InvocationTargetException {\n        Object object = null;\n        \n        if (beanInfo.creatorConstructor == null && beanInfo.factoryMethod == null) {\n            object = createInstance(null, clazz);\n            \n            for (Map.Entry<String, Object> entry : map.entrySet()) {\n                String key = entry.getKey();\n                Object value = entry.getValue();\n\n                FieldDeserializer fieldDeser = smartMatch(key);\n                if (fieldDeser == null) {\n                    continue;\n                }\n\n                final FieldInfo fieldInfo = fieldDeser.fieldInfo;\n                Field field = fieldDeser.fieldInfo.field;\n                Type paramType = fieldInfo.fieldType;\n\n                Class<?> fieldClass = fieldInfo.fieldClass;\n                JSONField fieldAnnation = fieldInfo.getAnnotation();\n\n                if (fieldInfo.declaringClass != null\n                        && ((!fieldClass.isInstance(value))\n                            || (fieldAnnation != null && fieldAnnation.deserializeUsing() != Void.class))\n                ) {\n                    String input;\n                    if (value instanceof String\n                            && JSONValidator.from(((String) value))\n                                .validate())\n                    {\n                        input = (String) value;\n                    } else {\n                        input = JSON.toJSONString(value);\n                    }\n\n                    DefaultJSONParser parser = new DefaultJSONParser(input);\n                    fieldDeser.parseField(parser, object, paramType, null);\n                    continue;\n                }\n\n                if (field != null && fieldInfo.method == null) {\n                    Class fieldType = field.getType();\n                    if (fieldType == boolean.class) {\n                        if (value == Boolean.FALSE) {\n                            field.setBoolean(object, false);\n                            continue;\n                        }\n\n                        if (value == Boolean.TRUE) {\n                            field.setBoolean(object, true);\n                            continue;\n                        }\n                    } else if (fieldType == int.class) {\n                        if (value instanceof Number) {\n                            field.setInt(object, ((Number) value).intValue());\n                            continue;\n                        }\n                    } else if (fieldType == long.class) {\n                        if (value instanceof Number) {\n                            field.setLong(object, ((Number) value).longValue());\n                            continue;\n                        }\n                    } else if (fieldType == float.class) {\n                        if (value instanceof Number) {\n                            field.setFloat(object, ((Number) value).floatValue());\n                            continue;\n                        } else if (value instanceof String) {\n                            String strVal = (String) value;\n                            float floatValue;\n                            if (strVal.length() <= 10) {\n                                floatValue = TypeUtils.parseFloat(strVal);\n                            } else {\n                                floatValue = Float.parseFloat(strVal);\n                            }\n\n                            field.setFloat(object, floatValue);\n                            continue;\n                        }\n                    } else if (fieldType == double.class) {\n                        if (value instanceof Number) {\n                            field.setDouble(object, ((Number) value).doubleValue());\n                            continue;\n                        } else if (value instanceof String) {\n                            String strVal = (String) value;\n                            double doubleValue;\n                            if (strVal.length() <= 10) {\n                                doubleValue = TypeUtils.parseDouble(strVal);\n                            } else {\n                                doubleValue = Double.parseDouble(strVal);\n                            }\n\n                            field.setDouble(object, doubleValue);\n                            continue;\n                        }\n                    } else if (value != null && paramType == value.getClass()) {\n                        field.set(object, value);\n                        continue;\n                    }\n                }\n\n                String format = fieldInfo.format;\n                if (format != null && paramType == Date.class) {\n                    value = TypeUtils.castToDate(value, format);\n                } else if (format != null && (paramType instanceof Class) && (((Class) paramType).getName().equals(\"java.time.LocalDateTime\"))) {\n                    value = Jdk8DateCodec.castToLocalDateTime(value, format);\n                } else {\n                    if (paramType instanceof ParameterizedType) {\n                        value = TypeUtils.cast(value, (ParameterizedType) paramType, config);\n                    } else {\n                        value = TypeUtils.cast(value, paramType, config);\n                    }\n                }\n\n                fieldDeser.setValue(object, value);\n            }\n\n            if (beanInfo.buildMethod != null) {\n                Object builtObj;\n                try {\n                    builtObj = beanInfo.buildMethod.invoke(object);\n                } catch (Exception e) {\n                    throw new JSONException(\"build object error\", e);\n                }\n\n                return builtObj;\n            }\n\n            return object;\n        }\n\n        \n        FieldInfo[] fieldInfoList = beanInfo.fields;\n        int size = fieldInfoList.length;\n        Object[] params = new Object[size];\n        Map<String, Integer> missFields = null;\n        for (int i = 0; i < size; ++i) {\n            FieldInfo fieldInfo = fieldInfoList[i];\n            Object param = map.get(fieldInfo.name);\n\n            if (param == null) {\n                Class<?> fieldClass = fieldInfo.fieldClass;\n                if (fieldClass == int.class) {\n                    param = 0;\n                } else if (fieldClass == long.class) {\n                    param = 0L;\n                } else if (fieldClass == short.class) {\n                    param = Short.valueOf((short) 0);\n                } else if (fieldClass == byte.class) {\n                    param = Byte.valueOf((byte) 0);\n                } else if (fieldClass == float.class) {\n                    param = Float.valueOf(0);\n                } else if (fieldClass == double.class) {\n                    param = Double.valueOf(0);\n                } else if (fieldClass == char.class) {\n                    param = '0';\n                } else if (fieldClass == boolean.class) {\n                    param = false;\n                }\n                if (missFields == null) {\n                    missFields = new HashMap<String, Integer>();\n                }\n                missFields.put(fieldInfo.name, i);\n            }\n            params[i] = param;\n        }\n\n        if (missFields != null) {\n            for (Map.Entry<String, Object> entry : map.entrySet()) {\n                String key = entry.getKey();\n                Object value = entry.getValue();\n\n                FieldDeserializer fieldDeser = smartMatch(key);\n                if (fieldDeser != null) {\n                    Integer index = missFields.get(fieldDeser.fieldInfo.name);\n                    if (index != null) {\n                        params[index] = value;\n                    }\n                }\n            }\n        }\n\n        if (beanInfo.creatorConstructor != null) {\n            boolean hasNull = false;\n            if (beanInfo.kotlin) {\n                for (int i = 0; i < params.length; i++) {\n                    Object param = params[i];\n                    if (param == null) {\n                        if (beanInfo.fields != null && i < beanInfo.fields.length) {\n                            FieldInfo fieldInfo = beanInfo.fields[i];\n                            if (fieldInfo.fieldClass == String.class) {\n                                hasNull = true;\n                            }\n                        }\n                    } else if (param.getClass() != beanInfo.fields[i].fieldClass){\n                        params[i] = TypeUtils.cast(param, beanInfo.fields[i].fieldClass, config);\n                    }\n                }\n            }\n\n            if (hasNull && beanInfo.kotlinDefaultConstructor != null) {\n                try {\n                    object = beanInfo.kotlinDefaultConstructor.newInstance();\n\n                    for (int i = 0; i < params.length; i++) {\n                        final Object param = params[i];\n                        if (param != null && beanInfo.fields != null && i < beanInfo.fields.length) {\n                            FieldInfo fieldInfo = beanInfo.fields[i];\n                            fieldInfo.set(object, param);\n                        }\n                    }\n                } catch (Exception e) {\n                    throw new JSONException(\"create instance error, \"\n                            + beanInfo.creatorConstructor.toGenericString(), e);\n                }\n            } else {\n                try {\n                    object = beanInfo.creatorConstructor.newInstance(params);\n                } catch (Exception e) {\n                    throw new JSONException(\"create instance error, \"\n                            + beanInfo.creatorConstructor.toGenericString(), e);\n                }\n            }\n        } else if (beanInfo.factoryMethod != null) {\n            try {\n                object = beanInfo.factoryMethod.invoke(null, params);\n            } catch (Exception e) {\n                throw new JSONException(\"create factory method error, \" + beanInfo.factoryMethod.toString(), e);\n            }\n        }\n        \n        return object;\n    }\n    \n    public Type getFieldType(int ordinal) {\n        return sortedFieldDeserializers[ordinal].fieldInfo.fieldType;\n    }\n\n    protected Object parseRest(DefaultJSONParser parser, Type type, Object fieldName, Object instance, int features) {\n        return parseRest(parser, type, fieldName, instance, features, new int[0]);\n    }\n\n    protected Object parseRest(DefaultJSONParser parser\n            , Type type\n            , Object fieldName\n            , Object instance\n            , int features\n            , int[] setFlags) {\n        Object value = deserialze(parser, type, fieldName, instance, features, setFlags);\n\n        return value;\n    }\n    \n    protected static JavaBeanDeserializer getSeeAlso(ParserConfig config, JavaBeanInfo beanInfo, String typeName) {\n        if (beanInfo.jsonType == null) {\n            return null;\n        }\n        \n        for (Class<?> seeAlsoClass : beanInfo.jsonType.seeAlso()) {\n            ObjectDeserializer seeAlsoDeser = config.getDeserializer(seeAlsoClass);\n            if (seeAlsoDeser instanceof JavaBeanDeserializer) {\n                JavaBeanDeserializer seeAlsoJavaBeanDeser = (JavaBeanDeserializer) seeAlsoDeser;\n\n                JavaBeanInfo subBeanInfo = seeAlsoJavaBeanDeser.beanInfo;\n                if (subBeanInfo.typeName.equals(typeName)) {\n                    return seeAlsoJavaBeanDeser;\n                }\n                \n                JavaBeanDeserializer subSeeAlso = getSeeAlso(config, subBeanInfo, typeName);\n                if (subSeeAlso != null) {\n                    return subSeeAlso;\n                }\n            }\n        }\n\n        return null;\n    }\n    \n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    protected static void parseArray(Collection collection, //\n                              ObjectDeserializer deser, //\n                              DefaultJSONParser parser, //\n                              Type type, //\n                              Object fieldName) {\n\n        final JSONLexerBase lexer = (JSONLexerBase) parser.lexer;\n        int token = lexer.token();\n        if (token == JSONToken.NULL) {\n            lexer.nextToken(JSONToken.COMMA);\n            token = lexer.token();\n            return;\n        }\n\n        if (token != JSONToken.LBRACKET) {\n            parser.throwException(token);\n        }\n        char ch = lexer.getCurrent();\n        if (ch == '[') {\n            lexer.next();\n            lexer.setToken(JSONToken.LBRACKET);\n        } else {\n            lexer.nextToken(JSONToken.LBRACKET);\n        }\n        \n        if (lexer.token() == JSONToken.RBRACKET) {\n            lexer.nextToken();\n            return;\n        }\n\n        int index = 0;\n        for (;;) {\n            Object item = deser.deserialze(parser, type, index);\n            collection.add(item);\n            index++;\n            if (lexer.token() == JSONToken.COMMA) {\n                ch = lexer.getCurrent();\n                if (ch == '[') {\n                    lexer.next();\n                    lexer.setToken(JSONToken.LBRACKET);\n                } else {\n                    lexer.nextToken(JSONToken.LBRACKET);\n                }\n            } else {\n                break;\n            }\n        }\n        \n        token = lexer.token();\n        if (token != JSONToken.RBRACKET) {\n            parser.throwException(token);\n        }\n        \n        ch = lexer.getCurrent();\n        if (ch == ',') {\n            lexer.next();\n            lexer.setToken(JSONToken.COMMA);\n        } else {\n            lexer.nextToken(JSONToken.COMMA);\n        }\n//        parser.accept(JSONToken.RBRACKET, JSONToken.COMMA);\n    }\n    \n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/JavaObjectDeserializer.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\nimport java.io.Closeable;\nimport java.io.Serializable;\nimport java.lang.reflect.Array;\nimport java.lang.reflect.GenericArrayType;\nimport java.lang.reflect.Type;\nimport java.lang.reflect.TypeVariable;\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.util.TypeUtils;\n\npublic class JavaObjectDeserializer implements ObjectDeserializer {\n\n    public final static JavaObjectDeserializer instance = new JavaObjectDeserializer();\n\n    @SuppressWarnings(\"unchecked\")\n    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n        if (type instanceof GenericArrayType) {\n            Type componentType = ((GenericArrayType) type).getGenericComponentType();\n            if (componentType instanceof TypeVariable) {\n                TypeVariable<?> componentVar = (TypeVariable<?>) componentType;\n                componentType = componentVar.getBounds()[0];\n            }\n\n            List<Object> list = new ArrayList<Object>();\n            parser.parseArray(componentType, list);\n            Class<?> componentClass = TypeUtils.getRawClass(componentType);\n            Object[] array = (Object[]) Array.newInstance(componentClass, list.size());\n            list.toArray(array);\n            return (T) array;\n        }\n        \n        if (type instanceof Class\n                && type != Object.class\n                && type != Serializable.class\n                && type != Cloneable.class\n                && type != Closeable.class\n                && type != Comparable.class) {\n            return (T) parser.parseObject(type);    \n        }\n\n        return (T) parser.parse(fieldName);\n    }\n\n    public int getFastMatchToken() {\n        return JSONToken.LBRACE;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/Jdk8DateCodec.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\nimport java.time.Duration;\nimport java.time.Instant;\nimport java.time.LocalDate;\nimport java.time.LocalDateTime;\nimport java.time.LocalTime;\nimport java.time.OffsetDateTime;\nimport java.time.OffsetTime;\nimport java.time.Period;\nimport java.time.ZoneId;\nimport java.time.ZonedDateTime;\nimport java.time.chrono.ChronoZonedDateTime;\nimport java.time.format.DateTimeFormatter;\nimport java.time.temporal.TemporalAccessor;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONLexer;\nimport com.alibaba.fastjson.parser.JSONScanner;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.serializer.*;\nimport com.alibaba.fastjson.util.TypeUtils;\n\npublic class Jdk8DateCodec extends ContextObjectDeserializer implements ObjectSerializer, ContextObjectSerializer, ObjectDeserializer {\n\n    public static final Jdk8DateCodec      instance            = new Jdk8DateCodec();\n\n    private final static String            defaultPatttern     = \"yyyy-MM-dd HH:mm:ss\";\n    private final static DateTimeFormatter defaultFormatter    = DateTimeFormatter.ofPattern(defaultPatttern);\n    private final static DateTimeFormatter defaultFormatter_23 = DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm:ss.SSS\");\n    private final static DateTimeFormatter formatter_dt19_tw   = DateTimeFormatter.ofPattern(\"yyyy/MM/dd HH:mm:ss\");\n    private final static DateTimeFormatter formatter_dt19_cn   = DateTimeFormatter.ofPattern(\"yyyy年M月d日 HH:mm:ss\");\n    private final static DateTimeFormatter formatter_dt19_cn_1 = DateTimeFormatter.ofPattern(\"yyyy年M月d日 H时m分s秒\");\n    private final static DateTimeFormatter formatter_dt19_kr   = DateTimeFormatter.ofPattern(\"yyyy년M월d일 HH:mm:ss\");\n    private final static DateTimeFormatter formatter_dt19_us   = DateTimeFormatter.ofPattern(\"MM/dd/yyyy HH:mm:ss\");\n    private final static DateTimeFormatter formatter_dt19_eur  = DateTimeFormatter.ofPattern(\"dd/MM/yyyy HH:mm:ss\");\n    private final static DateTimeFormatter formatter_dt19_de   = DateTimeFormatter.ofPattern(\"dd.MM.yyyy HH:mm:ss\");\n    private final static DateTimeFormatter formatter_dt19_in   = DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm:ss\");\n\n    private final static DateTimeFormatter formatter_d8        = DateTimeFormatter.ofPattern(\"yyyyMMdd\");\n    private final static DateTimeFormatter formatter_d10_tw    = DateTimeFormatter.ofPattern(\"yyyy/MM/dd\");\n    private final static DateTimeFormatter formatter_d10_cn    = DateTimeFormatter.ofPattern(\"yyyy年M月d日\");\n    private final static DateTimeFormatter formatter_d10_kr    = DateTimeFormatter.ofPattern(\"yyyy년M월d일\");\n    private final static DateTimeFormatter formatter_d10_us    = DateTimeFormatter.ofPattern(\"MM/dd/yyyy\");\n    private final static DateTimeFormatter formatter_d10_eur   = DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");\n    private final static DateTimeFormatter formatter_d10_de    = DateTimeFormatter.ofPattern(\"dd.MM.yyyy\");\n    private final static DateTimeFormatter formatter_d10_in    = DateTimeFormatter.ofPattern(\"dd-MM-yyyy\");\n\n    private final static DateTimeFormatter ISO_FIXED_FORMAT =\n            DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm:ss\").withZone(ZoneId.systemDefault());\n\n    private final static String formatter_iso8601_pattern     = \"yyyy-MM-dd'T'HH:mm:ss\";\n    private final static String formatter_iso8601_pattern_23     = \"yyyy-MM-dd'T'HH:mm:ss.SSS\";\n    private final static String formatter_iso8601_pattern_29     = \"yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS\";\n    private final static DateTimeFormatter formatter_iso8601  = DateTimeFormatter.ofPattern(formatter_iso8601_pattern);\n\n    @SuppressWarnings(\"unchecked\")\n    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName, String format, int feature) {\n        JSONLexer lexer = parser.lexer;\n        if (lexer.token() == JSONToken.NULL){\n            lexer.nextToken();\n            return null;\n        }\n\n        if (lexer.token() == JSONToken.LITERAL_STRING) {\n            String text = lexer.stringVal();\n            lexer.nextToken();\n\n            DateTimeFormatter formatter = null;\n            if (format != null) {\n                if (defaultPatttern.equals(format)) {\n                    formatter = defaultFormatter;\n                } else {\n                    formatter = DateTimeFormatter.ofPattern(format);\n                }\n            }\n\n            if (\"\".equals(text)) {\n                return null;\n            }\n\n            if (type == LocalDateTime.class) {\n                LocalDateTime localDateTime;\n                if (text.length() == 10 || text.length() == 8) {\n                    LocalDate localDate = parseLocalDate(text, format, formatter);\n                    localDateTime = LocalDateTime.of(localDate, LocalTime.MIN);\n                } else {\n                    localDateTime = parseDateTime(text, formatter);\n                }\n                return (T) localDateTime;\n            } else if (type == LocalDate.class) {\n                LocalDate localDate;\n                if (text.length() == 23) {\n                    LocalDateTime localDateTime = LocalDateTime.parse(text);\n                    localDate = LocalDate.of(localDateTime.getYear(), localDateTime.getMonthValue(),\n                            localDateTime.getDayOfMonth());\n                } else {\n                    localDate = parseLocalDate(text, format, formatter);\n                }\n\n                return (T) localDate;\n            } else if (type == LocalTime.class) {\n                LocalTime localTime;\n                if (text.length() == 23) {\n                    LocalDateTime localDateTime = LocalDateTime.parse(text);\n                    localTime = LocalTime.of(localDateTime.getHour(), localDateTime.getMinute(),\n                            localDateTime.getSecond(), localDateTime.getNano());\n                } else {\n                    boolean digit = true;\n                    for (int i = 0; i < text.length(); ++i) {\n                        char ch = text.charAt(i);\n                        if (ch < '0' || ch > '9') {\n                            digit = false;\n                            break;\n                        }\n                    }\n\n                    if (digit && text.length() > 8 && text.length() < 19) {\n                        long epochMillis = Long.parseLong(text);\n                        localTime = LocalDateTime\n                                .ofInstant(\n                                        Instant.ofEpochMilli(epochMillis),\n                                        JSON.defaultTimeZone.toZoneId())\n                                .toLocalTime();\n                    } else {\n                        localTime = LocalTime.parse(text);\n                    }\n                }\n                return (T) localTime;\n            } else if (type == ZonedDateTime.class) {\n                if (formatter == defaultFormatter) {\n                    formatter = ISO_FIXED_FORMAT;\n                }\n\n                if (formatter == null) {\n                    if (text.length() <= 19) {\n                        JSONScanner s = new JSONScanner(text);\n                        TimeZone timeZone = parser.lexer.getTimeZone();\n                        s.setTimeZone(timeZone);\n                        boolean match = s.scanISO8601DateIfMatch(false);\n                        if (match) {\n                            Date date = s.getCalendar().getTime();\n                            return (T) ZonedDateTime.ofInstant(date.toInstant(), timeZone.toZoneId());\n                        }\n                    }\n\n                }\n\n                ZonedDateTime zonedDateTime = parseZonedDateTime(text, formatter);\n\n                return (T) zonedDateTime;\n            } else if (type == OffsetDateTime.class) {\n                OffsetDateTime offsetDateTime = OffsetDateTime.parse(text);\n\n                return (T) offsetDateTime;\n            } else if (type == OffsetTime.class) {\n                OffsetTime offsetTime = OffsetTime.parse(text);\n\n                return (T) offsetTime;\n            } else if (type == ZoneId.class) {\n                ZoneId offsetTime = ZoneId.of(text);\n\n                return (T) offsetTime;\n            } else if (type == Period.class) {\n                Period period = Period.parse(text);\n\n                return (T) period;\n            } else if (type == Duration.class) {\n                Duration duration = Duration.parse(text);\n                return (T) duration;\n            } else if (type == Instant.class) {\n                boolean digit = true;\n                for (int i = 0; i < text.length(); ++i) {\n                    char ch = text.charAt(i);\n                    if (ch < '0' || ch > '9') {\n                        digit = false;\n                        break;\n                    }\n                }\n                if (digit && text.length() > 8 && text.length() < 19) {\n                    long epochMillis = Long.parseLong(text);\n                    return (T) Instant.ofEpochMilli(epochMillis);\n                }\n\n                Instant instant = Instant.parse(text);\n\n                return (T) instant;\n            }\n        } else if (lexer.token() == JSONToken.LITERAL_INT) {\n            long millis = lexer.longValue();\n            lexer.nextToken();\n\n            if (\"unixtime\".equals(format)) {\n                millis *= 1000;\n            } else if (\"yyyyMMddHHmmss\".equals(format)) {\n                int yyyy = (int) (millis / 10000000000L);\n                int MM = (int) ((millis / 100000000L) % 100);\n                int dd = (int) ((millis / 1000000L) % 100);\n                int HH = (int) ((millis / 10000L) % 100);\n                int mm = (int) ((millis / 100L) % 100);\n                int ss = (int) (millis % 100);\n\n                if (type == LocalDateTime.class) {\n                    return (T) LocalDateTime.of(yyyy, MM, dd, HH, mm, ss);\n                }\n            }\n\n            if (type == LocalDateTime.class) {\n                return (T) LocalDateTime.ofInstant(Instant.ofEpochMilli(millis), JSON.defaultTimeZone.toZoneId());\n            }\n\n            if (type == LocalDate.class) {\n                return (T) LocalDateTime.ofInstant(Instant.ofEpochMilli(millis), JSON.defaultTimeZone.toZoneId()).toLocalDate();\n            }\n            if (type == LocalTime.class) {\n                return (T) LocalDateTime.ofInstant(Instant.ofEpochMilli(millis), JSON.defaultTimeZone.toZoneId()).toLocalTime();\n            }\n\n            if (type == ZonedDateTime.class) {\n                return (T) ZonedDateTime.ofInstant(Instant.ofEpochMilli(millis), JSON.defaultTimeZone.toZoneId());\n            }\n\n            if (type == Instant.class) {\n                return (T) Instant.ofEpochMilli(millis);\n            }\n\n            throw new UnsupportedOperationException();\n        } else if (lexer.token() == JSONToken.LBRACE) {\n            JSONObject object = parser.parseObject();\n\n            if (type == Instant.class) {\n                Object epochSecond = object.get(\"epochSecond\");\n                Object nano = object.get(\"nano\");\n                if (epochSecond instanceof Number && nano instanceof Number) {\n                    return (T) Instant.ofEpochSecond(\n                            TypeUtils.longExtractValue((Number) epochSecond)\n                            , TypeUtils.longExtractValue((Number) nano));\n                }\n\n                if (epochSecond instanceof Number) {\n                    return (T) Instant.ofEpochSecond(\n                            TypeUtils.longExtractValue((Number) epochSecond));\n                }\n            } else if (type == Duration.class) {\n                Long seconds = object.getLong(\"seconds\");\n                if (seconds != null) {\n                    long nanos = object.getLongValue(\"nano\");\n                    return (T) Duration.ofSeconds(seconds, nanos);\n                }\n            }\n        } else {\n            throw new UnsupportedOperationException();\n        }\n        return null;\n    }\n\n    protected LocalDateTime parseDateTime(String text, DateTimeFormatter formatter) {\n        if (formatter == null) {\n            if (text.length() == 19) {\n                char c4 = text.charAt(4);\n                char c7 = text.charAt(7);\n                char c10 = text.charAt(10);\n                char c13 = text.charAt(13);\n                char c16 = text.charAt(16);\n                if (c13 == ':' && c16 == ':') {\n                    if (c4 == '-' && c7 == '-') {\n                        if (c10 == 'T') {\n                            formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;\n                        } else if (c10 == ' ') {\n                            formatter = defaultFormatter;\n                        }\n                    } else if (c4 == '/' && c7 == '/') { // tw yyyy/mm/dd\n                        formatter = formatter_dt19_tw;\n                    } else {\n                        char c0 = text.charAt(0);\n                        char c1 = text.charAt(1);\n                        char c2 = text.charAt(2);\n                        char c3 = text.charAt(3);\n                        char c5 = text.charAt(5);\n                        if (c2 == '/' && c5 == '/') { // mm/dd/yyyy or mm/dd/yyyy\n                            int v0 = (c0 - '0') * 10 + (c1 - '0');\n                            int v1 = (c3 - '0') * 10 + (c4 - '0');\n                            if (v0 > 12) {\n                                formatter = formatter_dt19_eur;\n                            } else if (v1 > 12) {\n                                formatter = formatter_dt19_us;\n                            } else {\n                                String country = Locale.getDefault().getCountry();\n\n                                if (country.equals(\"US\")) {\n                                    formatter = formatter_dt19_us;\n                                } else if (country.equals(\"BR\") //\n                                           || country.equals(\"AU\")) {\n                                    formatter = formatter_dt19_eur;\n                                }\n                            }\n                        } else if (c2 == '.' && c5 == '.') { // dd.mm.yyyy\n                            formatter = formatter_dt19_de;\n                        } else if (c2 == '-' && c5 == '-') { // dd-mm-yyyy\n                            formatter = formatter_dt19_in;\n                        }\n                    }\n                }\n            } else if (text.length() == 23) {\n                char c4 = text.charAt(4);\n                char c7 = text.charAt(7);\n                char c10 = text.charAt(10);\n                char c13 = text.charAt(13);\n                char c16 = text.charAt(16);\n                char c19 = text.charAt(19);\n\n                if (c13 == ':'\n                        && c16 == ':'\n                        && c4 == '-'\n                        && c7 == '-'\n                        && c10 == ' '\n                        && c19 == '.'\n                ) {\n                    formatter = defaultFormatter_23;\n                }\n            }\n\n            if (text.length() >= 17) {\n                char c4 = text.charAt(4);\n                if (c4 == '年') {\n                    if (text.charAt(text.length() - 1) == '秒') {\n                        formatter = formatter_dt19_cn_1;    \n                    } else {\n                        formatter = formatter_dt19_cn;\n                    }\n                } else if (c4 == '년') {\n                    formatter = formatter_dt19_kr;\n                }\n            }\n        }\n\n        if (formatter == null) {\n            JSONScanner dateScanner = new JSONScanner(text);\n            if (dateScanner.scanISO8601DateIfMatch(false)) {\n                Instant instant = dateScanner.getCalendar().toInstant();\n                return LocalDateTime.ofInstant(instant, ZoneId.systemDefault());\n            }\n\n            boolean digit = true;\n            for (int i = 0; i < text.length(); ++i) {\n                char ch = text.charAt(i);\n                if (ch < '0' || ch > '9') {\n                    digit = false;\n                    break;\n                }\n            }\n            if (digit && text.length() > 8 && text.length() < 19) {\n                long epochMillis = Long.parseLong(text);\n                return LocalDateTime.ofInstant(Instant.ofEpochMilli(epochMillis), JSON.defaultTimeZone.toZoneId());\n            }\n        }\n\n        return formatter == null ? //\n            LocalDateTime.parse(text) //\n            : LocalDateTime.parse(text, formatter);\n    }\n\n    protected LocalDate parseLocalDate(String text, String format, DateTimeFormatter formatter) {\n        if (formatter == null) {\n            if (text.length() == 8) {\n                formatter = formatter_d8;\n            }\n\n            if (text.length() == 10) {\n                char c4 = text.charAt(4);\n                char c7 = text.charAt(7);\n                if (c4 == '/' && c7 == '/') { // tw yyyy/mm/dd\n                    formatter = formatter_d10_tw;\n                }\n\n                char c0 = text.charAt(0);\n                char c1 = text.charAt(1);\n                char c2 = text.charAt(2);\n                char c3 = text.charAt(3);\n                char c5 = text.charAt(5);\n                if (c2 == '/' && c5 == '/') { // mm/dd/yyyy or mm/dd/yyyy\n                    int v0 = (c0 - '0') * 10 + (c1 - '0');\n                    int v1 = (c3 - '0') * 10 + (c4 - '0');\n                    if (v0 > 12) {\n                        formatter = formatter_d10_eur;\n                    } else if (v1 > 12) {\n                        formatter = formatter_d10_us;\n                    } else {\n                        String country = Locale.getDefault().getCountry();\n\n                        if (country.equals(\"US\")) {\n                            formatter = formatter_d10_us;\n                        } else if (country.equals(\"BR\") //\n                                   || country.equals(\"AU\")) {\n                            formatter = formatter_d10_eur;\n                        }\n                    }\n                } else if (c2 == '.' && c5 == '.') { // dd.mm.yyyy\n                    formatter = formatter_d10_de;\n                } else if (c2 == '-' && c5 == '-') { // dd-mm-yyyy\n                    formatter = formatter_d10_in;\n                }\n            }\n\n            if (text.length() >= 9) {\n                char c4 = text.charAt(4);\n                if (c4 == '年') {\n                    formatter = formatter_d10_cn;\n                } else if (c4 == '년') {\n                    formatter = formatter_d10_kr;\n                }\n            }\n\n            boolean digit = true;\n            for (int i = 0; i < text.length(); ++i) {\n                char ch = text.charAt(i);\n                if (ch < '0' || ch > '9') {\n                    digit = false;\n                    break;\n                }\n            }\n            if (digit && text.length() > 8 && text.length() < 19) {\n                long epochMillis = Long.parseLong(text);\n                return LocalDateTime\n                        .ofInstant(\n                                Instant.ofEpochMilli(epochMillis),\n                                JSON.defaultTimeZone.toZoneId())\n                        .toLocalDate();\n            }\n        }\n\n        return formatter == null ? //\n            LocalDate.parse(text) //\n            : LocalDate.parse(text, formatter);\n    }\n\n    protected ZonedDateTime parseZonedDateTime(String text, DateTimeFormatter formatter) {\n        if (formatter == null) {\n            if (text.length() == 19) {\n                char c4 = text.charAt(4);\n                char c7 = text.charAt(7);\n                char c10 = text.charAt(10);\n                char c13 = text.charAt(13);\n                char c16 = text.charAt(16);\n                if (c13 == ':' && c16 == ':') {\n                    if (c4 == '-' && c7 == '-') {\n                        if (c10 == 'T') {\n                            formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;\n                        } else if (c10 == ' ') {\n                            formatter = defaultFormatter;\n                        }\n                    } else if (c4 == '/' && c7 == '/') { // tw yyyy/mm/dd\n                        formatter = formatter_dt19_tw;\n                    } else {\n                        char c0 = text.charAt(0);\n                        char c1 = text.charAt(1);\n                        char c2 = text.charAt(2);\n                        char c3 = text.charAt(3);\n                        char c5 = text.charAt(5);\n                        if (c2 == '/' && c5 == '/') { // mm/dd/yyyy or mm/dd/yyyy\n                            int v0 = (c0 - '0') * 10 + (c1 - '0');\n                            int v1 = (c3 - '0') * 10 + (c4 - '0');\n                            if (v0 > 12) {\n                                formatter = formatter_dt19_eur;\n                            } else if (v1 > 12) {\n                                formatter = formatter_dt19_us;\n                            } else {\n                                String country = Locale.getDefault().getCountry();\n\n                                if (country.equals(\"US\")) {\n                                    formatter = formatter_dt19_us;\n                                } else if (country.equals(\"BR\") //\n                                        || country.equals(\"AU\")) {\n                                    formatter = formatter_dt19_eur;\n                                }\n                            }\n                        } else if (c2 == '.' && c5 == '.') { // dd.mm.yyyy\n                            formatter = formatter_dt19_de;\n                        } else if (c2 == '-' && c5 == '-') { // dd-mm-yyyy\n                            formatter = formatter_dt19_in;\n                        }\n                    }\n                }\n            }\n\n            if (text.length() >= 17) {\n                char c4 = text.charAt(4);\n                if (c4 == '年') {\n                    if (text.charAt(text.length() - 1) == '秒') {\n                        formatter = formatter_dt19_cn_1;\n                    } else {\n                        formatter = formatter_dt19_cn;\n                    }\n                } else if (c4 == '년') {\n                    formatter = formatter_dt19_kr;\n                }\n            }\n\n            boolean digit = true;\n            for (int i = 0; i < text.length(); ++i) {\n                char ch = text.charAt(i);\n                if (ch < '0' || ch > '9') {\n                    digit = false;\n                    break;\n                }\n            }\n            if (digit && text.length() > 8 && text.length() < 19) {\n                long epochMillis = Long.parseLong(text);\n                return ZonedDateTime.ofInstant(Instant.ofEpochMilli(epochMillis), JSON.defaultTimeZone.toZoneId());\n            }\n        }\n\n        return formatter == null ? //\n                ZonedDateTime.parse(text) //\n                : ZonedDateTime.parse(text, formatter);\n    }\n\n    public int getFastMatchToken() {\n        return JSONToken.LITERAL_STRING;\n    }\n\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType,\n                      int features) throws IOException {\n        SerializeWriter out = serializer.out;\n        if (object == null) {\n            out.writeNull();\n        } else {\n            if (fieldType == null) {\n                fieldType = object.getClass();\n            }\n\n            if (fieldType == LocalDateTime.class) {\n                final int mask = SerializerFeature.UseISO8601DateFormat.getMask();\n                LocalDateTime dateTime = (LocalDateTime) object;\n                String format = serializer.getDateFormatPattern();\n\n                if (format == null) {\n                    if ((features & mask) != 0 || serializer.isEnabled(SerializerFeature.UseISO8601DateFormat)) {\n                        format = formatter_iso8601_pattern;\n                    } else if (serializer.isEnabled(SerializerFeature.WriteDateUseDateFormat)) {\n                        if (serializer.getFastJsonConfigDateFormatPattern() != null && \n                                serializer.getFastJsonConfigDateFormatPattern().length() > 0){\n                            format = serializer.getFastJsonConfigDateFormatPattern();\n                        }else{\n                            format = JSON.DEFFAULT_DATE_FORMAT; \n                        }\n                    } else {\n                        int nano = dateTime.getNano();\n                        if (nano == 0) {\n                            format = formatter_iso8601_pattern;\n                        } else if (nano % 1000000 == 0) {\n                            format = formatter_iso8601_pattern_23;\n                        } else {\n                            format = formatter_iso8601_pattern_29;\n                        }\n                    }\n                }\n\n                if (format != null) {\n                    write(out, dateTime, format);\n                } else {\n                    out.writeLong(dateTime.atZone(JSON.defaultTimeZone.toZoneId()).toInstant().toEpochMilli());\n                }\n            } else {\n                out.writeString(object.toString());\n            }\n        }\n    }\n\n    public void write(JSONSerializer serializer, Object object, BeanContext context) throws IOException {\n        SerializeWriter out = serializer.out;\n        String format = context.getFormat();\n        write(out, (TemporalAccessor) object, format);\n    }\n\n    private void write(SerializeWriter out, TemporalAccessor object, String format) {\n        DateTimeFormatter formatter;\n        if (\"unixtime\".equals(format)) {\n            Instant instant = null;\n            if (object instanceof ChronoZonedDateTime) {\n                long seconds = ((ChronoZonedDateTime) object).toEpochSecond();\n                out.writeInt((int) seconds);\n                return;\n            }\n\n            if (object instanceof LocalDateTime) {\n                long seconds = ((LocalDateTime) object).atZone(JSON.defaultTimeZone.toZoneId()).toEpochSecond();\n                out.writeInt((int) seconds);\n                return;\n            }\n        }\n\n        if (\"millis\".equals(format)) {\n            Instant instant = null;\n            if (object instanceof ChronoZonedDateTime) {\n                instant = ((ChronoZonedDateTime) object).toInstant();\n            } else if (object instanceof LocalDateTime) {\n                instant = ((LocalDateTime) object).atZone(JSON.defaultTimeZone.toZoneId()).toInstant();\n            }\n            if (instant != null) {\n                long millis = instant.toEpochMilli();\n                out.writeLong(millis);\n                return;\n            }\n        }\n\n        if (format == formatter_iso8601_pattern) {\n            formatter = formatter_iso8601;\n        } else {\n            formatter = DateTimeFormatter.ofPattern(format);\n        }\n\n        String text = formatter.format((TemporalAccessor) object);\n        out.writeString(text);\n    }\n\n    public static Object castToLocalDateTime(Object value, String format) {\n        if (value == null) {\n            return null;\n        }\n\n        if (format == null) {\n            format = \"yyyy-MM-dd HH:mm:ss\";\n        }\n\n        DateTimeFormatter df = DateTimeFormatter.ofPattern(format);\n        return LocalDateTime.parse(value.toString(), df);\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/MapDeserializer.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\nimport java.lang.reflect.ParameterizedType;\nimport java.lang.reflect.Type;\nimport java.util.*;\nimport java.util.concurrent.ConcurrentHashMap;\nimport java.util.concurrent.ConcurrentMap;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.*;\nimport com.alibaba.fastjson.parser.DefaultJSONParser.ResolveTask;\n\npublic class MapDeserializer extends ContextObjectDeserializer implements ObjectDeserializer {\n    public static MapDeserializer instance = new MapDeserializer();\n\n    @SuppressWarnings(\"unchecked\")\n    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName, String format, int features)\n    {\n        if (type == JSONObject.class && parser.getFieldTypeResolver() == null) {\n            return (T) parser.parseObject();\n        }\n        \n        final JSONLexer lexer = parser.lexer;\n        if (lexer.token() == JSONToken.NULL) {\n            lexer.nextToken(JSONToken.COMMA);\n            return null;\n        }\n\n        boolean unmodifiableMap = type instanceof Class\n                && \"java.util.Collections$UnmodifiableMap\".equals(((Class) type).getName());\n\n        Map<Object, Object> map = (lexer.getFeatures() & Feature.OrderedField.mask) != 0\n                ? createMap(type, lexer.getFeatures())\n                : createMap(type);\n\n        ParseContext context = parser.getContext();\n\n        try {\n            parser.setContext(context, map, fieldName);\n            T t = (T) deserialze(parser, type, fieldName, map, features);\n            if (unmodifiableMap) {\n                t = (T) Collections.unmodifiableMap((Map) t);\n            }\n            return t;\n        } finally {\n            parser.setContext(context);\n        }\n    }\n\n    protected Object deserialze(DefaultJSONParser parser, Type type, Object fieldName, Map map) {\n        return deserialze(parser, type, fieldName, map, 0);\n    }\n\n    @SuppressWarnings({ \"rawtypes\", \"unchecked\" })\n    protected Object deserialze(DefaultJSONParser parser, Type type, Object fieldName, Map map, int features) {\n        if (type instanceof ParameterizedType) {\n            ParameterizedType parameterizedType = (ParameterizedType) type;\n            Type keyType = parameterizedType.getActualTypeArguments()[0];\n            Type valueType = null;\n            if(map.getClass().getName().equals(\"org.springframework.util.LinkedMultiValueMap\")){\n                valueType = List.class;\n            }else{\n                valueType = parameterizedType.getActualTypeArguments()[1];\n            }\n            if (String.class == keyType) {\n                return parseMap(parser, (Map<String, Object>) map, valueType, fieldName, features);\n            } else {\n                return parseMap(parser, map, keyType, valueType, fieldName);\n            }\n        } else {\n            return parser.parseObject(map, fieldName);\n        }\n    }\n\n    public static Map parseMap(DefaultJSONParser parser, Map<String, Object> map, Type valueType, Object fieldName) {\n        return parseMap(parser, map, valueType, fieldName, 0);\n    }\n    \n    @SuppressWarnings(\"rawtypes\")\n    public static Map parseMap(DefaultJSONParser parser, Map<String, Object> map, Type valueType, Object fieldName, int features) {\n        JSONLexer lexer = parser.lexer;\n\n        int token = lexer.token();\n        if (token != JSONToken.LBRACE) {\n            if (token == JSONToken.LITERAL_STRING) {\n                String stringVal = lexer.stringVal();\n                if (stringVal.length() == 0 || stringVal.equals(\"null\")) {\n                    return null;\n                }\n            }\n\n            String msg = \"syntax error, expect {, actual \" + lexer.tokenName();\n            if (fieldName instanceof String) {\n                msg += \", fieldName \";\n                msg += fieldName;\n            }\n            msg += \", \";\n            msg += lexer.info();\n\n            if (token != JSONToken.LITERAL_STRING) {\n                JSONArray array = new JSONArray();\n                parser.parseArray(array, fieldName);\n\n                if (array.size() == 1) {\n                    Object first = array.get(0);\n                    if (first instanceof JSONObject) {\n                        return (JSONObject) first;\n                    }\n                }\n            }\n\n            throw new JSONException(msg);\n        }\n\n        ParseContext context = parser.getContext();\n        try {\n            for (int i = 0;;++i) {\n                lexer.skipWhitespace();\n                char ch = lexer.getCurrent();\n                if (lexer.isEnabled(Feature.AllowArbitraryCommas)) {\n                    while (ch == ',') {\n                        lexer.next();\n                        lexer.skipWhitespace();\n                        ch = lexer.getCurrent();\n                    }\n                }\n\n                String key;\n                if (ch == '\"') {\n                    key = lexer.scanSymbol(parser.getSymbolTable(), '\"');\n                    lexer.skipWhitespace();\n                    ch = lexer.getCurrent();\n                    if (ch != ':') {\n                        throw new JSONException(\"expect ':' at \" + lexer.pos());\n                    }\n                } else if (ch == '}') {\n                    lexer.next();\n                    lexer.resetStringPosition();\n                    lexer.nextToken(JSONToken.COMMA);\n                    return map;\n                } else if (ch == '\\'') {\n                    if (!lexer.isEnabled(Feature.AllowSingleQuotes)) {\n                        throw new JSONException(\"syntax error\");\n                    }\n\n                    key = lexer.scanSymbol(parser.getSymbolTable(), '\\'');\n                    lexer.skipWhitespace();\n                    ch = lexer.getCurrent();\n                    if (ch != ':') {\n                        throw new JSONException(\"expect ':' at \" + lexer.pos());\n                    }\n                } else {\n                    if (!lexer.isEnabled(Feature.AllowUnQuotedFieldNames)) {\n                        throw new JSONException(\"syntax error\");\n                    }\n\n                    key = lexer.scanSymbolUnQuoted(parser.getSymbolTable());\n                    lexer.skipWhitespace();\n                    ch = lexer.getCurrent();\n                    if (ch != ':') {\n                        throw new JSONException(\"expect ':' at \" + lexer.pos() + \", actual \" + ch);\n                    }\n                }\n\n                lexer.next();\n                lexer.skipWhitespace();\n                ch = lexer.getCurrent();\n\n                lexer.resetStringPosition();\n\n                if (key == JSON.DEFAULT_TYPE_KEY\n                        && !lexer.isEnabled(Feature.DisableSpecialKeyDetect)\n                        && !Feature.isEnabled(features, Feature.DisableSpecialKeyDetect)\n                ) {\n                    String typeName = lexer.scanSymbol(parser.getSymbolTable(), '\"');\n                    final ParserConfig config = parser.getConfig();\n\n                    Class<?> clazz;\n\n                    if (typeName.equals(\"java.util.HashMap\")) {\n                        clazz = java.util.HashMap.class;\n                    } else if (typeName.equals(\"java.util.LinkedHashMap\")) {\n                        clazz = java.util.LinkedHashMap.class;\n                    } else if (config.isSafeMode()) {\n                        clazz = java.util.HashMap.class;\n                    } else {\n                        try {\n                            clazz = config.checkAutoType(typeName, null, lexer.getFeatures());\n                        } catch (JSONException ex) {\n                            // skip\n                            clazz = java.util.HashMap.class;\n                        }\n                    }\n\n                    if (Map.class.isAssignableFrom(clazz) ) {\n                        lexer.nextToken(JSONToken.COMMA);\n                        if (lexer.token() == JSONToken.RBRACE) {\n                            lexer.nextToken(JSONToken.COMMA);\n                            return map;\n                        }\n                        continue;\n                    }\n\n                    ObjectDeserializer deserializer = config.getDeserializer(clazz);\n\n                    lexer.nextToken(JSONToken.COMMA);\n\n                    parser.setResolveStatus(DefaultJSONParser.TypeNameRedirect);\n\n                    if (context != null && !(fieldName instanceof Integer)) {\n                        parser.popContext();\n                    }\n\n                    return (Map) deserializer.deserialze(parser, clazz, fieldName);\n                }\n\n                Object value;\n                lexer.nextToken();\n\n                if (i != 0) {\n                    parser.setContext(context);\n                }\n                \n                if (lexer.token() == JSONToken.NULL) {\n                    value = null;\n                    lexer.nextToken();\n                } else {\n                    value = parser.parseObject(valueType, key);\n                }\n\n                map.put(key, value);\n                parser.checkMapResolve(map, key);\n\n                parser.setContext(context, value, key);\n                parser.setContext(context);\n\n                final int tok = lexer.token();\n                if (tok == JSONToken.EOF || tok == JSONToken.RBRACKET) {\n                    return map;\n                }\n\n                if (tok == JSONToken.RBRACE) {\n                    lexer.nextToken();\n                    return map;\n                }\n            }\n        } finally {\n            parser.setContext(context);\n        }\n\n    }\n    \n    public static Object parseMap(DefaultJSONParser parser, Map<Object, Object> map, Type keyType, Type valueType,\n                                  Object fieldName) {\n        JSONLexer lexer = parser.lexer;\n\n        if (lexer.token() != JSONToken.LBRACE && lexer.token() != JSONToken.COMMA) {\n            throw new JSONException(\"syntax error, expect {, actual \" + lexer.tokenName());\n        }\n\n        ObjectDeserializer keyDeserializer = parser.getConfig().getDeserializer(keyType);\n        ObjectDeserializer valueDeserializer = parser.getConfig().getDeserializer(valueType);\n        lexer.nextToken(keyDeserializer.getFastMatchToken());\n\n        ParseContext context = parser.getContext();\n        try {\n            for (;;) {\n                if (lexer.token() == JSONToken.RBRACE) {\n                    lexer.nextToken(JSONToken.COMMA);\n                    break;\n                }\n\n                if (lexer.token() == JSONToken.LITERAL_STRING //\n                    && lexer.isRef() //\n                    && !lexer.isEnabled(Feature.DisableSpecialKeyDetect) //\n                ) {\n                    Object object = null;\n\n                    lexer.nextTokenWithColon(JSONToken.LITERAL_STRING);\n                    if (lexer.token() == JSONToken.LITERAL_STRING) {\n                        String ref = lexer.stringVal();\n                        if (\"..\".equals(ref)) {\n                            ParseContext parentContext = context.parent;\n                            object = parentContext.object;\n                        } else if (\"$\".equals(ref)) {\n                            ParseContext rootContext = context;\n                            while (rootContext.parent != null) {\n                                rootContext = rootContext.parent;\n                            }\n\n                            object = rootContext.object;\n                        } else {\n                            parser.addResolveTask(new ResolveTask(context, ref));\n                            parser.setResolveStatus(DefaultJSONParser.NeedToResolve);\n                        }\n                    } else {\n                        throw new JSONException(\"illegal ref, \" + JSONToken.name(lexer.token()));\n                    }\n\n                    lexer.nextToken(JSONToken.RBRACE);\n                    if (lexer.token() != JSONToken.RBRACE) {\n                        throw new JSONException(\"illegal ref\");\n                    }\n                    lexer.nextToken(JSONToken.COMMA);\n\n                    // parser.setContext(context, map, fieldName);\n                    // parser.setContext(context);\n\n                    return object;\n                }\n\n                if (map.size() == 0 //\n                    && lexer.token() == JSONToken.LITERAL_STRING //\n                    && JSON.DEFAULT_TYPE_KEY.equals(lexer.stringVal()) //\n                    && !lexer.isEnabled(Feature.DisableSpecialKeyDetect)) {\n                    lexer.nextTokenWithColon(JSONToken.LITERAL_STRING);\n                    lexer.nextToken(JSONToken.COMMA);\n                    if (lexer.token() == JSONToken.RBRACE) {\n                        lexer.nextToken();\n                        return map;\n                    }\n                    lexer.nextToken(keyDeserializer.getFastMatchToken());\n                }\n\n                Object key;\n                if (lexer.token() == JSONToken.LITERAL_STRING\n                        && keyDeserializer instanceof JavaBeanDeserializer\n                ) {\n                    String keyStrValue = lexer.stringVal();\n                    lexer.nextToken();\n                    DefaultJSONParser keyParser = new DefaultJSONParser(keyStrValue, parser.getConfig(), parser.getLexer().getFeatures());\n                    keyParser.setDateFormat(parser.getDateFomartPattern());\n                    key = keyDeserializer.deserialze(keyParser, keyType, null);\n                } else {\n                    key = keyDeserializer.deserialze(parser, keyType, null);\n                }\n\n                if (lexer.token() != JSONToken.COLON) {\n                    throw new JSONException(\"syntax error, expect :, actual \" + lexer.token());\n                }\n\n                lexer.nextToken(valueDeserializer.getFastMatchToken());\n\n                Object value = valueDeserializer.deserialze(parser, valueType, key);\n                parser.checkMapResolve(map, key);\n\n                map.put(key, value);\n\n                if (lexer.token() == JSONToken.COMMA) {\n                    lexer.nextToken(keyDeserializer.getFastMatchToken());\n                }\n            }\n        } finally {\n            parser.setContext(context);\n        }\n\n        return map;\n    }\n\n    public Map<Object, Object> createMap(Type type) {\n        return createMap(type, JSON.DEFAULT_GENERATE_FEATURE);\n    }\n\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public Map<Object, Object> createMap(Type type, int featrues) {\n        if (type == Properties.class) {\n            return new Properties();\n        }\n\n        if (type == Hashtable.class) {\n            return new Hashtable();\n        }\n\n        if (type == IdentityHashMap.class) {\n            return new IdentityHashMap();\n        }\n\n        if (type == SortedMap.class || type == TreeMap.class) {\n            return new TreeMap();\n        }\n\n        if (type == ConcurrentMap.class || type == ConcurrentHashMap.class) {\n            return new ConcurrentHashMap();\n        }\n        \n        if (type == Map.class) {\n            return (featrues & Feature.OrderedField.mask) != 0\n                    ? new LinkedHashMap()\n                    : new HashMap();\n        }\n\n        if (type == HashMap.class) {\n            return new HashMap();\n        }\n\n        if (type == LinkedHashMap.class) {\n            return new LinkedHashMap();\n        }\n\n        if (type instanceof ParameterizedType) {\n            ParameterizedType parameterizedType = (ParameterizedType) type;\n\n            Type rawType = parameterizedType.getRawType();\n            if (EnumMap.class.equals(rawType)) {\n                Type[] actualArgs = parameterizedType.getActualTypeArguments();\n                return new EnumMap((Class) actualArgs[0]);\n            }\n\n            return createMap(rawType, featrues);\n        }\n\n        Class<?> clazz = (Class<?>) type;\n        if (clazz.isInterface()) {\n            throw new JSONException(\"unsupport type \" + type);\n        }\n\n        if (\"java.util.Collections$UnmodifiableMap\".equals(clazz.getName())) {\n            return new HashMap();\n        }\n        \n        try {\n            return (Map<Object, Object>) clazz.newInstance();\n        } catch (Exception e) {\n            throw new JSONException(\"unsupport type \" + type, e);\n        }\n    }\n    \n\n    public int getFastMatchToken() {\n        return JSONToken.LBRACE;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/NumberDeserializer.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\nimport java.lang.reflect.Type;\nimport java.math.BigDecimal;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.JSONLexer;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.util.TypeUtils;\n\npublic class NumberDeserializer implements ObjectDeserializer {\n\n    public final static NumberDeserializer instance = new NumberDeserializer();\n\n    @SuppressWarnings(\"unchecked\")\n    public <T> T deserialze(DefaultJSONParser parser, Type clazz, Object fieldName) {\n        final JSONLexer lexer = parser.lexer;\n        if (lexer.token() == JSONToken.LITERAL_INT) {\n            if (clazz == double.class || clazz  == Double.class) {\n                String val = lexer.numberString();\n                lexer.nextToken(JSONToken.COMMA);\n                return (T) Double.valueOf(Double.parseDouble(val));\n            }\n            \n            long val = lexer.longValue();\n            lexer.nextToken(JSONToken.COMMA);\n\n            if (clazz == short.class || clazz == Short.class) {\n                if (val > Short.MAX_VALUE || val < Short.MIN_VALUE) {\n                    throw new JSONException(\"short overflow : \" + val);\n                }\n                return (T) Short.valueOf((short) val);\n            }\n\n            if (clazz == byte.class || clazz == Byte.class) {\n                if (val > Byte.MAX_VALUE || val < Byte.MIN_VALUE) {\n                    throw new JSONException(\"short overflow : \" + val);\n                }\n\n                return (T) Byte.valueOf((byte) val);\n            }\n\n            if (val >= Integer.MIN_VALUE && val <= Integer.MAX_VALUE) {\n                return (T) Integer.valueOf((int) val);\n            }\n            return (T) Long.valueOf(val);\n        }\n\n        if (lexer.token() == JSONToken.LITERAL_FLOAT) {\n            if (clazz == double.class || clazz == Double.class) {\n                String val = lexer.numberString();\n                lexer.nextToken(JSONToken.COMMA);\n                return (T) Double.valueOf(Double.parseDouble(val));\n            }\n\n            if (clazz == short.class || clazz == Short.class) {\n                BigDecimal val = lexer.decimalValue();\n                lexer.nextToken(JSONToken.COMMA);\n                short shortValue = TypeUtils.shortValue(val);\n                return (T) Short.valueOf(shortValue);\n            }\n\n            if (clazz == byte.class || clazz == Byte.class) {\n                BigDecimal val = lexer.decimalValue();\n                lexer.nextToken(JSONToken.COMMA);\n                byte byteValue = TypeUtils.byteValue(val);\n                return (T) Byte.valueOf(byteValue);\n            }\n\n            BigDecimal val = lexer.decimalValue();\n            lexer.nextToken(JSONToken.COMMA);\n\n            if (lexer.isEnabled(Feature.UseBigDecimal)) {\n                return (T) val;\n            } else {\n                return (T) Double.valueOf(val.doubleValue());\n            }\n        }\n\n        if (lexer.token() == JSONToken.IDENTIFIER && \"NaN\".equals(lexer.stringVal())) {\n            lexer.nextToken();\n            Object nan = null;\n            if (clazz == Double.class) {\n                nan = Double.NaN;\n            } else if (clazz == Float.class) {\n                nan = Float.NaN;\n            }\n            return (T) nan;\n        }\n\n        Object value = parser.parse();\n\n        if (value == null) {\n            return null;\n        }\n\n        if (clazz == double.class || clazz == Double.class) {\n            try {\n                return (T) TypeUtils.castToDouble(value);\n            } catch (Exception ex) {\n                throw new JSONException(\"parseDouble error, field : \" + fieldName, ex);\n            }\n        }\n\n        if (clazz == short.class || clazz == Short.class) {\n            try {\n                return (T) TypeUtils.castToShort(value);\n            } catch (Exception ex) {\n                throw new JSONException(\"parseShort error, field : \" + fieldName, ex);\n            }\n        }\n\n        if (clazz == byte.class || clazz == Byte.class) {\n            try {\n                return (T) TypeUtils.castToByte(value);\n            } catch (Exception ex) {\n                throw new JSONException(\"parseByte error, field : \" + fieldName, ex);\n            }\n        }\n\n        return (T) TypeUtils.castToBigDecimal(value);\n    }\n\n    public int getFastMatchToken() {\n        return JSONToken.LITERAL_INT;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/ObjectDeserializer.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\nimport java.lang.reflect.Type;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\n\n/**\n * <p>Interface representing a custom deserializer for Json. You should write a custom\n * deserializer, if you are not happy with the default deserialization done by Gson. You will\n * also need to register this deserializer through\n * {@link ParserConfig#putDeserializer(Type, ObjectDeserializer)}.</p>\n * <pre>\n * public static enum OrderActionEnum {\n *     FAIL(1), SUCC(0);\n * \n *     private int code;\n * \n *     OrderActionEnum(int code){\n *         this.code = code;\n *     }\n * }\n * \n * public static class OrderActionEnumDeser implements ObjectDeserializer {\n *     \n *     public &lt;T&gt; T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n *         Integer intValue = parser.parseObject(int.class);\n *         if (intValue == 1) {\n *             return (T) OrderActionEnum.FAIL;\n *         } else if (intValue == 0) {\n *             return (T) OrderActionEnum.SUCC;\n *         }\n *         throw new IllegalStateException();\n *     }\n * \n *     \n *     public int getFastMatchToken() {\n *         return JSONToken.LITERAL_INT;\n *     }\n * }\n * </pre>\n * \n * <p>You will also need to register {@code OrderActionEnumDeser} to ParserConfig:</p>\n * <pre>\n * ParserConfig.getGlobalInstance().putDeserializer(OrderActionEnum.class, new OrderActionEnumDeser());\n * </pre>\n */\npublic interface ObjectDeserializer {\n    /**\n     * fastjson invokes this call-back method during deserialization when it encounters a field of the\n     * specified type.\n     * <p>In the implementation of this call-back method, you should consider invoking\n     * {@link JSON#parseObject(String, Type, Feature[])} method to create objects\n     * for any non-trivial field of the returned object. \n     *\n     * @param parser context DefaultJSONParser being deserialized\n     * @param type The type of the Object to deserialize to\n     * @param fieldName parent object field name\n     * @return a deserialized object of the specified type which is a subclass of {@code T}\n     */\n    <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName);\n    \n    int getFastMatchToken();\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/OptionalCodec.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\nimport java.util.Optional;\nimport java.util.OptionalDouble;\nimport java.util.OptionalInt;\nimport java.util.OptionalLong;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.ObjectSerializer;\nimport com.alibaba.fastjson.util.TypeUtils;\n\npublic class OptionalCodec implements ObjectSerializer, ObjectDeserializer {\n\n    public static OptionalCodec instance = new OptionalCodec();\n\n    @SuppressWarnings(\"unchecked\")\n    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n        \n        if (type == OptionalInt.class) {\n            Object obj = parser.parseObject(Integer.class);\n            Integer value = TypeUtils.castToInt(obj);\n            if (value == null) {\n                return (T) OptionalInt.empty();\n            } else {\n                return (T) OptionalInt.of(value);\n            }\n        }\n        \n        if (type == OptionalLong.class) {\n            Object obj = parser.parseObject(Long.class);\n            Long value = TypeUtils.castToLong(obj);\n            if (value == null) {\n                return (T) OptionalLong.empty();\n            } else {\n                return (T) OptionalLong.of(value);\n            }\n        }\n        \n        if (type == OptionalDouble.class) {\n            Object obj = parser.parseObject(Double.class);\n            Double value = TypeUtils.castToDouble(obj);\n            if (value == null) {\n                return (T) OptionalDouble.empty();\n            } else {\n                return (T) OptionalDouble.of(value);\n            }\n        }\n        \n        type = TypeUtils.unwrapOptional(type);\n        Object value = parser.parseObject(type);\n        \n        if (value == null) {\n            return (T) Optional.empty();\n        }\n        \n        return (T) Optional.of(value);\n    }\n\n    public int getFastMatchToken() {\n        return JSONToken.LBRACE;\n    }\n\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType,\n                      int features) throws IOException {\n\n        if (object == null) {\n            serializer.writeNull();\n            return;\n        }\n\n        if (object instanceof Optional) {\n            Optional<?> optional = (Optional<?>) object;\n            Object value = optional.isPresent() ? optional.get() : null;\n            serializer.write(value);\n            return;\n        }\n\n        if (object instanceof OptionalDouble) {\n            OptionalDouble optional = (OptionalDouble) object;\n            if (optional.isPresent()) {\n                double value = optional.getAsDouble();\n                serializer.write(value);\n            } else {\n                serializer.writeNull();\n            }\n            return;\n        }\n        \n        if (object instanceof OptionalInt) {\n            OptionalInt optional = (OptionalInt) object;\n            if (optional.isPresent()) {\n                int value = optional.getAsInt();\n                serializer.out.writeInt(value);\n            } else {\n                serializer.writeNull();\n            }\n            return;\n        }\n        \n        if (object instanceof OptionalLong) {\n            OptionalLong optional = (OptionalLong) object;\n            if (optional.isPresent()) {\n                long value = optional.getAsLong();\n                serializer.out.writeLong(value);\n            } else {\n                serializer.writeNull();\n            }\n            return;\n        }\n        \n        throw new JSONException(\"not support optional : \" + object.getClass());\n    }\n\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/ParseProcess.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\n\npublic interface ParseProcess {\n\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/PropertyProcessable.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\nimport java.lang.reflect.Type;\n\n/**\n * @author wenshao[szujobs@hotmail.com]\n */\npublic interface PropertyProcessable extends ParseProcess {\n    /**\n     * provide property's type, {@code java.lang.Class} or {@code Type}\n     * @param name property name\n     * @return property's type\n     */\n    Type getType(String name);\n\n    /**\n     * apply property name and value\n     * @param name property name\n     * @param value property name\n     */\n    void apply(String name, Object value);\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/PropertyProcessableDeserializer.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONToken;\n\nimport java.lang.reflect.Type;\n\n/**\n * Created by wenshao on 15/07/2017.\n */\npublic class PropertyProcessableDeserializer implements ObjectDeserializer {\n    public final Class<PropertyProcessable> type;\n\n    public PropertyProcessableDeserializer(Class<PropertyProcessable> type) {\n        this.type = type;\n    }\n\n    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n        PropertyProcessable processable;\n        try {\n            processable = this.type.newInstance();\n        } catch (Exception e) {\n            throw new JSONException(\"craete instance error\");\n        }\n\n        Object object =parser.parse(processable, fieldName);\n\n        return (T) object;\n    }\n\n    public int getFastMatchToken() {\n        return JSONToken.LBRACE;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/ResolveFieldDeserializer.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\nimport java.lang.reflect.Array;\nimport java.lang.reflect.Type;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.util.TypeUtils;\n\n@SuppressWarnings(\"rawtypes\")\npublic final class ResolveFieldDeserializer extends FieldDeserializer {\n\n    private final int               index;\n    private final List              list;\n    private final DefaultJSONParser parser;\n    \n    private final Object              key;\n    private final Map map;\n    \n    private final Collection collection;\n\n    public ResolveFieldDeserializer(DefaultJSONParser parser, List list, int index){\n        super(null, null);\n        this.parser = parser;\n        this.index = index;\n        this.list = list;\n        \n        key = null;\n        map = null;\n        \n        collection = null;\n    }\n    \n    public ResolveFieldDeserializer(Map map, Object index){\n        super(null, null);\n        \n        this.parser = null;\n        this.index = -1;\n        this.list = null;\n        \n        this.key = index;\n        this.map = map;\n        \n        collection = null;\n    }\n    \n    public ResolveFieldDeserializer(Collection collection){\n        super(null, null);\n        \n        this.parser = null;\n        this.index = -1;\n        this.list = null;\n        \n        key = null;\n        map = null;\n        \n        this.collection = collection;\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    public void setValue(Object object, Object value) {\n        if (map != null) {\n            map.put(key, value);\n            return;\n        }\n        \n        if (collection != null) {\n            collection.add(value);\n            return;\n        }\n        \n        list.set(index, value);\n\n        if (list instanceof JSONArray) {\n            JSONArray jsonArray = (JSONArray) list;\n            Object array = jsonArray.getRelatedArray();\n\n            if (array != null) {\n                int arrayLength = Array.getLength(array);\n\n                if (arrayLength > index) {\n                    Object item;\n                    if (jsonArray.getComponentType() != null) {\n                        item = TypeUtils.cast(value, jsonArray.getComponentType(), parser.getConfig());\n                    } else {\n                        item = value;\n                    }\n                    Array.set(array, index, item);\n                }\n            }\n        }\n    }\n\n    public void parseField(DefaultJSONParser parser, Object object, Type objectType, Map<String, Object> fieldValues) {\n\n    }\n\n}"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/SqlDateDeserializer.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\nimport java.lang.reflect.Type;\nimport java.math.BigDecimal;\nimport java.text.DateFormat;\nimport java.text.ParseException;\nimport java.util.Date;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONScanner;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.util.TypeUtils;\n\npublic class SqlDateDeserializer extends AbstractDateDeserializer implements ObjectDeserializer {\n\n    public final static SqlDateDeserializer instance = new SqlDateDeserializer();\n    public final static SqlDateDeserializer instance_timestamp = new SqlDateDeserializer(true);\n    \n    private boolean                           timestamp = false;\n    \n    public SqlDateDeserializer() {\n        \n    }\n    \n    public SqlDateDeserializer(boolean timestmap) {\n        this.timestamp = true;\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    protected <T> T cast(DefaultJSONParser parser, Type clazz, Object fieldName, Object val) {\n        if (timestamp) {\n            return castTimestamp(parser, clazz, fieldName, val);\n        }\n        \n        if (val == null) {\n            return null;\n        }\n\n        if (val instanceof java.util.Date) {\n            val = new java.sql.Date(((Date) val).getTime());\n        } else if (val instanceof BigDecimal) {\n            val = (T) new java.sql.Date(TypeUtils.longValue((BigDecimal) val));\n        } else if (val instanceof Number) {\n            val = (T) new java.sql.Date(((Number) val).longValue());\n        } else if (val instanceof String) {\n            String strVal = (String) val;\n            if (strVal.length() == 0) {\n                return null;\n            }\n\n            long longVal;\n\n            JSONScanner dateLexer = new JSONScanner(strVal);\n            try {\n                if (dateLexer.scanISO8601DateIfMatch()) {\n                    longVal = dateLexer.getCalendar().getTimeInMillis();\n                } else {\n\n                    DateFormat dateFormat = parser.getDateFormat();\n                    try {\n                        java.util.Date date = (java.util.Date) dateFormat.parse(strVal);\n                        java.sql.Date sqlDate = new java.sql.Date(date.getTime());\n                        return (T) sqlDate;\n                    } catch (ParseException e) {\n                        // skip\n                    }\n\n                    longVal = Long.parseLong(strVal);\n                }\n            } finally {\n                dateLexer.close();\n            }\n            return (T) new java.sql.Date(longVal);\n        } else {\n            throw new JSONException(\"parse error : \" + val);\n        }\n\n        return (T) val;\n    }\n    \n    @SuppressWarnings(\"unchecked\")\n    protected <T> T castTimestamp(DefaultJSONParser parser, Type clazz, Object fieldName, Object val) {\n\n        if (val == null) {\n            return null;\n        }\n\n        if (val instanceof java.util.Date) {\n            return (T) new java.sql.Timestamp(((Date) val).getTime());\n        }\n\n        if (val instanceof BigDecimal) {\n            return (T) new java.sql.Timestamp(TypeUtils.longValue((BigDecimal) val));\n        }\n\n        if (val instanceof Number) {\n            return (T) new java.sql.Timestamp(((Number) val).longValue());\n        }\n\n        if (val instanceof String) {\n            String strVal = (String) val;\n            if (strVal.length() == 0) {\n                return null;\n            }\n\n            long longVal;\n            JSONScanner dateLexer = new JSONScanner(strVal);\n            try {\n                if (strVal.length() > 19\n                        && strVal.charAt(4) == '-'\n                        && strVal.charAt(7) == '-'\n                        && strVal.charAt(10) == ' '\n                        && strVal.charAt(13) == ':'\n                        && strVal.charAt(16) == ':'\n                        && strVal.charAt(19) == '.') {\n                    String dateFomartPattern = parser.getDateFomartPattern();\n                    if (dateFomartPattern.length() != strVal.length() && dateFomartPattern == JSON.DEFFAULT_DATE_FORMAT) {\n                        return (T) java.sql.Timestamp.valueOf(strVal);\n                    }\n                }\n\n                if (dateLexer.scanISO8601DateIfMatch(false)) {\n                    longVal = dateLexer.getCalendar().getTimeInMillis();\n                } else {\n                    DateFormat dateFormat = parser.getDateFormat();\n                    try {\n                        java.util.Date date = (java.util.Date) dateFormat.parse(strVal);\n                        java.sql.Timestamp sqlDate = new java.sql.Timestamp(date.getTime());\n                        return (T) sqlDate;\n                    } catch (ParseException e) {\n                        // skip\n                    }\n\n                    longVal = Long.parseLong(strVal);\n                }\n            } finally {\n                dateLexer.close();\n            }\n\n            return (T) new java.sql.Timestamp(longVal);\n        }\n\n        throw new JSONException(\"parse error\");\n    }\n\n    public int getFastMatchToken() {\n        return JSONToken.LITERAL_INT;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/StackTraceElementDeserializer.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\nimport java.lang.reflect.Type;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.JSONLexer;\nimport com.alibaba.fastjson.parser.JSONToken;\n\npublic class StackTraceElementDeserializer implements ObjectDeserializer {\n\n    public final static StackTraceElementDeserializer instance = new StackTraceElementDeserializer();\n\n    @SuppressWarnings({ \"unchecked\", \"unused\" })\n    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n        JSONLexer lexer = parser.lexer;\n        if (lexer.token() == JSONToken.NULL) {\n            lexer.nextToken();\n            return null;\n        }\n\n        if (lexer.token() != JSONToken.LBRACE && lexer.token() != JSONToken.COMMA) {\n            throw new JSONException(\"syntax error: \" + JSONToken.name(lexer.token()));\n        }\n\n        String declaringClass = null;\n        String methodName = null;\n        String fileName = null;\n        int lineNumber = 0;\n        String moduleName = null;\n        String moduleVersion = null;\n        String classLoaderName = null;\n\n        for (;;) {\n            // lexer.scanSymbol\n            String key = lexer.scanSymbol(parser.getSymbolTable());\n\n            if (key == null) {\n                if (lexer.token() == JSONToken.RBRACE) {\n                    lexer.nextToken(JSONToken.COMMA);\n                    break;\n                }\n                if (lexer.token() == JSONToken.COMMA) {\n                    if (lexer.isEnabled(Feature.AllowArbitraryCommas)) {\n                        continue;\n                    }\n                }\n            }\n\n            lexer.nextTokenWithColon(JSONToken.LITERAL_STRING);\n            if (\"className\".equals(key)) {\n                if (lexer.token() == JSONToken.NULL) {\n                    declaringClass = null;\n                } else if (lexer.token() == JSONToken.LITERAL_STRING) {\n                    declaringClass = lexer.stringVal();\n                } else {\n                    throw new JSONException(\"syntax error\");\n                }\n            } else if (\"methodName\".equals(key)) {\n                if (lexer.token() == JSONToken.NULL) {\n                    methodName = null;\n                } else if (lexer.token() == JSONToken.LITERAL_STRING) {\n                    methodName = lexer.stringVal();\n                } else {\n                    throw new JSONException(\"syntax error\");\n                }\n            } else if (\"fileName\".equals(key)) {\n                if (lexer.token() == JSONToken.NULL) {\n                    fileName = null;\n                } else if (lexer.token() == JSONToken.LITERAL_STRING) {\n                    fileName = lexer.stringVal();\n                } else {\n                    throw new JSONException(\"syntax error\");\n                }\n            } else if (\"lineNumber\".equals(key)) {\n                if (lexer.token() == JSONToken.NULL) {\n                    lineNumber = 0;\n                } else if (lexer.token() == JSONToken.LITERAL_INT) {\n                    lineNumber = lexer.intValue();\n                } else {\n                    throw new JSONException(\"syntax error\");\n                }\n            } else if (\"nativeMethod\".equals(key)) {\n                if (lexer.token() == JSONToken.NULL) {\n                    lexer.nextToken(JSONToken.COMMA);\n                } else if (lexer.token() == JSONToken.TRUE) {\n                    lexer.nextToken(JSONToken.COMMA);\n                } else if (lexer.token() == JSONToken.FALSE) {\n                    lexer.nextToken(JSONToken.COMMA);\n                } else {\n                    throw new JSONException(\"syntax error\");\n                }\n            } else if (key == JSON.DEFAULT_TYPE_KEY) {\n               if (lexer.token() == JSONToken.LITERAL_STRING) {\n                    String elementType = lexer.stringVal();\n                    if (!elementType.equals(\"java.lang.StackTraceElement\")) {\n                        throw new JSONException(\"syntax error : \" + elementType);    \n                    }\n                } else {\n                    if (lexer.token() != JSONToken.NULL) {\n                        throw new JSONException(\"syntax error\");\n                    }\n                }\n            } else if (\"moduleName\".equals(key)) {\n                if (lexer.token() == JSONToken.NULL) {\n                    moduleName = null;\n                } else if (lexer.token() == JSONToken.LITERAL_STRING) {\n                    moduleName = lexer.stringVal();\n                } else {\n                    throw new JSONException(\"syntax error\");\n                }\n            } else if (\"moduleVersion\".equals(key)) {\n                if (lexer.token() == JSONToken.NULL) {\n                    moduleVersion = null;\n                } else if (lexer.token() == JSONToken.LITERAL_STRING) {\n                    moduleVersion = lexer.stringVal();\n                } else {\n                    throw new JSONException(\"syntax error\");\n                }\n            } else if (\"classLoaderName\".equals(key)) {\n                if (lexer.token() == JSONToken.NULL) {\n                    classLoaderName = null;\n                } else if (lexer.token() == JSONToken.LITERAL_STRING) {\n                    classLoaderName = lexer.stringVal();\n                } else {\n                    throw new JSONException(\"syntax error\");\n                }\n            } else {\n                throw new JSONException(\"syntax error : \" + key);\n            }\n\n            if (lexer.token() == JSONToken.RBRACE) {\n                lexer.nextToken(JSONToken.COMMA);\n                break;\n            }\n        }\n        return (T) new StackTraceElement(declaringClass, methodName, fileName, lineNumber);\n    }\n\n    public int getFastMatchToken() {\n        return JSONToken.LBRACE;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/ThrowableDeserializer.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\nimport java.lang.reflect.Constructor;\nimport java.lang.reflect.Type;\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.JSONLexer;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.util.FieldInfo;\nimport com.alibaba.fastjson.util.TypeUtils;\n\npublic class ThrowableDeserializer extends JavaBeanDeserializer {\n\n    public ThrowableDeserializer(ParserConfig mapping, Class<?> clazz){\n        super(mapping, clazz, clazz);\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n        JSONLexer lexer = parser.lexer;\n        \n        if (lexer.token() == JSONToken.NULL) {\n            lexer.nextToken();\n            return null;\n        }\n\n        if (parser.getResolveStatus() == DefaultJSONParser.TypeNameRedirect) {\n            parser.setResolveStatus(DefaultJSONParser.NONE);\n        } else {\n            if (lexer.token() != JSONToken.LBRACE) {\n                throw new JSONException(\"syntax error\");\n            }\n        }\n\n        Throwable cause = null;\n        Class<?> exClass = null;\n        \n        if (type != null && type instanceof Class) {\n        \tClass<?> clazz = (Class<?>) type;\n        \tif (Throwable.class.isAssignableFrom(clazz)) {\n        \t\texClass = clazz;\n        \t}\n        }\n        \n        String message = null;\n        StackTraceElement[] stackTrace = null;\n        Map<String, Object> otherValues = null;\n\n\n        for (;;) {\n            // lexer.scanSymbol\n            String key = lexer.scanSymbol(parser.getSymbolTable());\n\n            if (key == null) {\n                if (lexer.token() == JSONToken.RBRACE) {\n                    lexer.nextToken(JSONToken.COMMA);\n                    break;\n                }\n                if (lexer.token() == JSONToken.COMMA) {\n                    if (lexer.isEnabled(Feature.AllowArbitraryCommas)) {\n                        continue;\n                    }\n                }\n            }\n\n            lexer.nextTokenWithColon(JSONToken.LITERAL_STRING);\n\n            if (JSON.DEFAULT_TYPE_KEY.equals(key)) {\n                if (lexer.token() == JSONToken.LITERAL_STRING) {\n                    String exClassName = lexer.stringVal();\n                    exClass = parser.getConfig().checkAutoType(exClassName, Throwable.class, lexer.getFeatures());\n                } else {\n                    throw new JSONException(\"syntax error\");\n                }\n                lexer.nextToken(JSONToken.COMMA);\n            } else if (\"message\".equals(key)) {\n                if (lexer.token() == JSONToken.NULL) {\n                    message = null;\n                } else if (lexer.token() == JSONToken.LITERAL_STRING) {\n                    message = lexer.stringVal();\n                } else {\n                    throw new JSONException(\"syntax error\");\n                }\n                lexer.nextToken();\n            } else if (\"cause\".equals(key)) {\n                cause = deserialze(parser, null, \"cause\");\n            } else if (\"stackTrace\".equals(key)) {\n                stackTrace = parser.parseObject(StackTraceElement[].class);\n            } else {\n                if (otherValues == null) {\n                    otherValues = new HashMap<String, Object>();\n                }\n                otherValues.put(key, parser.parse());\n            }\n\n            if (lexer.token() == JSONToken.RBRACE) {\n                lexer.nextToken(JSONToken.COMMA);\n                break;\n            }\n        }\n\n        Throwable ex = null;\n        if (exClass == null) {\n            ex = new Exception(message, cause);\n        } else {\n            if (!Throwable.class.isAssignableFrom(exClass)) {\n                throw new JSONException(\"type not match, not Throwable. \" + exClass.getName());\n            }\n\n            try {\n                ex = createException(message, cause, exClass);\n                if (ex == null) {\n                    ex = new Exception(message, cause);\n                }\n            } catch (Exception e) {\n                throw new JSONException(\"create instance error\", e);\n            }\n        }\n\n        if (stackTrace != null) {\n            ex.setStackTrace(stackTrace);\n        }\n\n        if (otherValues != null) {\n            JavaBeanDeserializer exBeanDeser = null;\n\n            if (exClass != null) {\n                if (exClass == clazz) {\n                    exBeanDeser = this;\n                } else {\n                    ObjectDeserializer exDeser = parser.getConfig().getDeserializer(exClass);\n                    if (exDeser instanceof JavaBeanDeserializer) {\n                        exBeanDeser = (JavaBeanDeserializer) exDeser;\n                    }\n                }\n            }\n\n            if (exBeanDeser != null) {\n                for (Map.Entry<String, Object> entry : otherValues.entrySet()) {\n                    String key = entry.getKey();\n                    Object value = entry.getValue();\n\n                    FieldDeserializer fieldDeserializer = exBeanDeser.getFieldDeserializer(key);\n                    if (fieldDeserializer != null) {\n                        FieldInfo fieldInfo = fieldDeserializer.fieldInfo;\n                        if (!fieldInfo.fieldClass.isInstance(value)) {\n                            value = TypeUtils.cast(value, fieldInfo.fieldType, parser.getConfig());\n                        }\n                        fieldDeserializer.setValue(ex, value);\n                    }\n                }\n            }\n        }\n\n        return (T) ex;\n    }\n\n    private Throwable createException(String message, Throwable cause, Class<?> exClass) throws Exception {\n        Constructor<?> defaultConstructor = null;\n        Constructor<?> messageConstructor = null;\n        Constructor<?> causeConstructor = null;\n        for (Constructor<?> constructor : exClass.getConstructors()) {\n        \tClass<?>[] types = constructor.getParameterTypes();\n            if (types.length == 0) {\n                defaultConstructor = constructor;\n                continue;\n            }\n\n            if (types.length == 1 && types[0] == String.class) {\n                messageConstructor = constructor;\n                continue;\n            }\n\n            if (types.length == 2 && types[0] == String.class && types[1] == Throwable.class) {\n                causeConstructor = constructor;\n                continue;\n            }\n        }\n\n        if (causeConstructor != null) {\n            return (Throwable) causeConstructor.newInstance(message, cause);\n        }\n\n        if (messageConstructor != null) {\n            return (Throwable) messageConstructor.newInstance(message);\n        }\n\n        if (defaultConstructor != null) {\n            return (Throwable) defaultConstructor.newInstance();\n        }\n\n        return null;\n    }\n\n    public int getFastMatchToken() {\n        return JSONToken.LBRACE;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/parser/deserializer/TimeDeserializer.java",
    "content": "package com.alibaba.fastjson.parser.deserializer;\n\nimport java.lang.reflect.Type;\nimport java.math.BigDecimal;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONLexer;\nimport com.alibaba.fastjson.parser.JSONScanner;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.util.TypeUtils;\n\npublic class TimeDeserializer implements ObjectDeserializer {\n\n    public final static TimeDeserializer instance = new TimeDeserializer();\n\n    @SuppressWarnings(\"unchecked\")\n    public <T> T deserialze(DefaultJSONParser parser, Type clazz, Object fieldName) {\n        JSONLexer lexer = parser.lexer;\n        \n        if (lexer.token() == JSONToken.COMMA) {\n            lexer.nextToken(JSONToken.LITERAL_STRING);\n            \n            if (lexer.token() != JSONToken.LITERAL_STRING) {\n                throw new JSONException(\"syntax error\");\n            }\n            \n            lexer.nextTokenWithColon(JSONToken.LITERAL_INT);\n            \n            if (lexer.token() != JSONToken.LITERAL_INT) {\n                throw new JSONException(\"syntax error\");\n            }\n            \n            long time = lexer.longValue();\n            lexer.nextToken(JSONToken.RBRACE);\n            if (lexer.token() != JSONToken.RBRACE) {\n                throw new JSONException(\"syntax error\");\n            }\n            lexer.nextToken(JSONToken.COMMA);\n            \n            return (T) new java.sql.Time(time);\n        }\n        \n        Object val = parser.parse();\n\n        if (val == null) {\n            return null;\n        }\n\n        if (val instanceof java.sql.Time) {\n            return (T) val;\n        } else if (val instanceof BigDecimal) {\n            return (T) new java.sql.Time(TypeUtils.longValue((BigDecimal) val));\n        } else if (val instanceof Number) {\n            return (T) new java.sql.Time(((Number) val).longValue());\n        } else if (val instanceof String) {\n            String strVal = (String) val;\n            if (strVal.length() == 0) {\n                return null;\n            }\n            \n            long longVal;\n            JSONScanner dateLexer = new JSONScanner(strVal);\n            if (dateLexer.scanISO8601DateIfMatch()) {\n                longVal = dateLexer.getCalendar().getTimeInMillis();\n            } else {\n                boolean isDigit = true;\n                for (int i = 0; i< strVal.length(); ++i) {\n                    char ch = strVal.charAt(i);\n                    if (ch < '0' || ch > '9') {\n                        isDigit = false;\n                        break;\n                    }\n                }\n                if (!isDigit) {\n                    dateLexer.close();\n                    return (T) java.sql.Time.valueOf(strVal);    \n                }\n                \n                longVal = Long.parseLong(strVal);\n            }\n            dateLexer.close();\n            return (T) new java.sql.Time(longVal);\n        }\n        \n        throw new JSONException(\"parse error\");\n    }\n\n    public int getFastMatchToken() {\n        return JSONToken.LITERAL_INT;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/ASMSerializerFactory.java",
    "content": "package com.alibaba.fastjson.serializer;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.asm.*;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.util.ASMClassLoader;\nimport com.alibaba.fastjson.util.ASMUtils;\nimport com.alibaba.fastjson.util.FieldInfo;\nimport com.alibaba.fastjson.util.TypeUtils;\n\nimport java.io.Serializable;\nimport java.lang.reflect.*;\nimport java.lang.reflect.Type;\nimport java.math.BigDecimal;\nimport java.util.Collection;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.concurrent.atomic.AtomicLong;\n\nimport static com.alibaba.fastjson.util.ASMUtils.desc;\nimport static com.alibaba.fastjson.util.ASMUtils.type;\n\npublic class ASMSerializerFactory implements Opcodes {\n\n    protected final ASMClassLoader classLoader             = new ASMClassLoader();\n\n    private final AtomicLong       seed                    = new AtomicLong();\n\n    static final String            JSONSerializer           = type(JSONSerializer.class);\n    static final String            ObjectSerializer         = type(ObjectSerializer.class);\n    static final String            ObjectSerializer_desc    = \"L\" + ObjectSerializer + \";\";\n    static final String            SerializeWriter          = type(SerializeWriter.class);\n    static final String            SerializeWriter_desc     = \"L\" + SerializeWriter + \";\";\n    static final String            JavaBeanSerializer       = type(JavaBeanSerializer.class);\n    static final String            JavaBeanSerializer_desc  = \"L\" + type(JavaBeanSerializer.class) + \";\";\n    static final String            SerialContext_desc       = desc(SerialContext.class);\n    static final String            SerializeFilterable_desc = desc(SerializeFilterable.class);\n\n    static class Context {\n\n        static final int              serializer     = 1;\n        static final int              obj            = 2;\n        static final int              paramFieldName = 3;\n        static final int              paramFieldType = 4;\n        static final int              features       = 5;\n        static int                    fieldName      = 6;\n        static int                    original       = 7;\n        static int                    processValue   = 8;\n\n        private final FieldInfo[]       getters;\n        private final String            className;\n        private final SerializeBeanInfo beanInfo;\n        private final boolean           writeDirect;\n\n        private Map<String, Integer>    variants       = new HashMap<String, Integer>();\n        private int                     variantIndex   = 9;\n        private final boolean           nonContext;\n\n        public Context(FieldInfo[] getters, //\n                       SerializeBeanInfo beanInfo, //\n                       String className, //\n                       boolean writeDirect, //\n                       boolean nonContext){\n            this.getters = getters;\n            this.className = className;\n            this.beanInfo = beanInfo;\n            this.writeDirect = writeDirect;\n            this.nonContext = nonContext || beanInfo.beanType.isEnum();\n        }\n\n        public int var(String name) {\n            Integer i = variants.get(name);\n            if (i == null) {\n                variants.put(name, variantIndex++);\n            }\n            i = variants.get(name);\n            return i.intValue();\n        }\n\n        public int var(String name, int increment) {\n            Integer i = variants.get(name);\n            if (i == null) {\n                variants.put(name, variantIndex);\n                variantIndex += increment;\n            }\n            i = variants.get(name);\n            return i.intValue();\n        }\n        \n        public int getFieldOrinal(String name) {\n            int fieldIndex = -1;\n            for (int i = 0, size = getters.length; i < size; ++i) {\n                FieldInfo item = getters[i];\n                if (item.name.equals(name)) {\n                    fieldIndex = i;\n                    break;\n                }\n            }\n            return fieldIndex;\n        }\n    }\n\n    public JavaBeanSerializer createJavaBeanSerializer(SerializeBeanInfo beanInfo) throws Exception {\n        Class<?> clazz = beanInfo.beanType;\n        if (clazz.isPrimitive()) {\n            throw new JSONException(\"unsupportd class \" + clazz.getName());\n        }\n\n        JSONType jsonType = TypeUtils.getAnnotation(clazz, JSONType.class);\n\n        FieldInfo[] unsortedGetters = beanInfo.fields;\n\n        for (FieldInfo fieldInfo : unsortedGetters) {\n            if (fieldInfo.field == null //\n                && fieldInfo.method != null //\n                && fieldInfo.method.getDeclaringClass().isInterface()) {\n                return new JavaBeanSerializer(beanInfo);\n            }\n        }\n\n        FieldInfo[] getters = beanInfo.sortedFields;\n\n        boolean nativeSorted = beanInfo.sortedFields == beanInfo.fields;\n\n        if (getters.length > 256) {\n            return new JavaBeanSerializer(beanInfo);\n        }\n\n        for (FieldInfo getter : getters) {\n            if (!ASMUtils.checkName(getter.getMember().getName())) {\n                return new JavaBeanSerializer(beanInfo);\n            }\n        }\n\n        String className = \"ASMSerializer_\" + seed.incrementAndGet() + \"_\" + clazz.getSimpleName();\n        String classNameType;\n        String classNameFull;\n        Package pkg = ASMSerializerFactory.class.getPackage();\n        if (pkg != null) {\n            String packageName = pkg.getName();\n            classNameType = packageName.replace('.', '/') + \"/\" + className;\n            classNameFull = packageName + \".\" + className;\n        } else {\n            classNameType = className;\n            classNameFull = className;\n        }\n\n        ClassWriter cw = new ClassWriter();\n        cw.visit(V1_5 //\n                 , ACC_PUBLIC + ACC_SUPER //\n                 , classNameType //\n                 , JavaBeanSerializer //\n                 , new String[] { ObjectSerializer } //\n        );\n\n        for (FieldInfo fieldInfo : getters) {\n            if (fieldInfo.fieldClass.isPrimitive() //\n                //|| fieldInfo.fieldClass.isEnum() //\n                || fieldInfo.fieldClass == String.class) {\n                continue;\n            }\n\n            new FieldWriter(cw, ACC_PUBLIC, fieldInfo.name + \"_asm_fieldType\", \"Ljava/lang/reflect/Type;\") //\n                                                                                                           .visitEnd();\n\n            if (List.class.isAssignableFrom(fieldInfo.fieldClass)) {\n                new FieldWriter(cw, ACC_PUBLIC, fieldInfo.name + \"_asm_list_item_ser_\",\n                                ObjectSerializer_desc) //\n                                                       .visitEnd();\n            }\n\n            new FieldWriter(cw, ACC_PUBLIC, fieldInfo.name + \"_asm_ser_\", ObjectSerializer_desc) //\n                                                                                                        .visitEnd();\n        }\n\n        MethodVisitor mw = new MethodWriter(cw, ACC_PUBLIC, \"<init>\", \"(\" + desc(SerializeBeanInfo.class) + \")V\", null, null);\n        mw.visitVarInsn(ALOAD, 0);\n        mw.visitVarInsn(ALOAD, 1);\n        mw.visitMethodInsn(INVOKESPECIAL, JavaBeanSerializer, \"<init>\", \"(\" + desc(SerializeBeanInfo.class) + \")V\");\n\n        // init _asm_fieldType\n        for (int i = 0; i < getters.length; ++i) {\n            FieldInfo fieldInfo = getters[i];\n            if (fieldInfo.fieldClass.isPrimitive() //\n//                || fieldInfo.fieldClass.isEnum() //\n                || fieldInfo.fieldClass == String.class) {\n                continue;\n            }\n\n            mw.visitVarInsn(ALOAD, 0);\n\n            if (fieldInfo.method != null) {\n                mw.visitLdcInsn(com.alibaba.fastjson.asm.Type.getType(desc(fieldInfo.declaringClass)));\n                mw.visitLdcInsn(fieldInfo.method.getName());\n                mw.visitMethodInsn(INVOKESTATIC, type(ASMUtils.class), \"getMethodType\",\n                                   \"(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Type;\");\n\n            } else {\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitLdcInsn(i);\n                mw.visitMethodInsn(INVOKESPECIAL, JavaBeanSerializer, \"getFieldType\", \"(I)Ljava/lang/reflect/Type;\");\n            }\n\n            mw.visitFieldInsn(PUTFIELD, classNameType, fieldInfo.name + \"_asm_fieldType\", \"Ljava/lang/reflect/Type;\");\n        }\n\n        mw.visitInsn(RETURN);\n        mw.visitMaxs(4, 4);\n        mw.visitEnd();\n\n        boolean DisableCircularReferenceDetect = false;\n        if (jsonType != null) {\n            for (SerializerFeature featrues : jsonType.serialzeFeatures()) {\n                if (featrues == SerializerFeature.DisableCircularReferenceDetect) {\n                    DisableCircularReferenceDetect = true;\n                    break;\n                }\n            }\n        }\n\n        // 0 write\n        // 1 writeNormal\n        // 2 writeNonContext\n        for (int i = 0; i < 3; ++i) {\n            String methodName;\n            boolean nonContext = DisableCircularReferenceDetect;\n            boolean writeDirect = false;\n            if (i == 0) {\n                methodName = \"write\";\n                writeDirect = true;\n            } else if (i == 1) {\n                methodName = \"writeNormal\";\n            } else {\n                writeDirect = true;\n                nonContext = true;\n                methodName = \"writeDirectNonContext\";\n            }\n\n            Context context = new Context(getters, beanInfo, classNameType, writeDirect,\n                                          nonContext);\n\n            mw = new MethodWriter(cw, //\n                                  ACC_PUBLIC, //\n                                  methodName, //\n                                  \"(L\" + JSONSerializer\n                                              + \";Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V\", //\n                                  null, //\n                                  new String[] { \"java/io/IOException\" } //\n            );\n\n            {\n                Label endIf_ = new Label();\n                mw.visitVarInsn(ALOAD, Context.obj);\n                //serializer.writeNull();\n                mw.visitJumpInsn(IFNONNULL, endIf_);\n                mw.visitVarInsn(ALOAD, Context.serializer);\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONSerializer,\n                        \"writeNull\", \"()V\");\n\n                mw.visitInsn(RETURN);\n                mw.visitLabel(endIf_);\n            }\n\n            mw.visitVarInsn(ALOAD, Context.serializer);\n            mw.visitFieldInsn(GETFIELD, JSONSerializer, \"out\", SerializeWriter_desc);\n            mw.visitVarInsn(ASTORE, context.var(\"out\"));\n\n            if ((!nativeSorted) //\n                && !context.writeDirect) {\n\n                if (jsonType == null || jsonType.alphabetic()) {\n                    Label _else = new Label();\n\n                    mw.visitVarInsn(ALOAD, context.var(\"out\"));\n                    mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"isSortField\", \"()Z\");\n\n                    mw.visitJumpInsn(IFNE, _else);\n                    mw.visitVarInsn(ALOAD, 0);\n                    mw.visitVarInsn(ALOAD, 1);\n                    mw.visitVarInsn(ALOAD, 2);\n                    mw.visitVarInsn(ALOAD, 3);\n                    mw.visitVarInsn(ALOAD, 4);\n                    mw.visitVarInsn(ILOAD, 5);\n                    mw.visitMethodInsn(INVOKEVIRTUAL, classNameType,\n                                       \"writeUnsorted\", \"(L\" + JSONSerializer\n                                                        + \";Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V\");\n                    mw.visitInsn(RETURN);\n\n                    mw.visitLabel(_else);\n                }\n            }\n\n            // isWriteDoubleQuoteDirect\n            if (context.writeDirect && !nonContext) {\n                Label _direct = new Label();\n                Label _directElse = new Label();\n\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitVarInsn(ALOAD, Context.serializer);\n                mw.visitMethodInsn(INVOKEVIRTUAL, JavaBeanSerializer, \"writeDirect\", \"(L\" + JSONSerializer + \";)Z\");\n                mw.visitJumpInsn(IFNE, _directElse);\n\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitVarInsn(ALOAD, 1);\n                mw.visitVarInsn(ALOAD, 2);\n                mw.visitVarInsn(ALOAD, 3);\n                mw.visitVarInsn(ALOAD, 4);\n                mw.visitVarInsn(ILOAD, 5);\n                mw.visitMethodInsn(INVOKEVIRTUAL, classNameType,\n                                   \"writeNormal\", \"(L\" + JSONSerializer\n                                                  + \";Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V\");\n                mw.visitInsn(RETURN);\n\n                mw.visitLabel(_directElse);\n                mw.visitVarInsn(ALOAD, context.var(\"out\"));\n                mw.visitLdcInsn(SerializerFeature.DisableCircularReferenceDetect.mask);\n                mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"isEnabled\", \"(I)Z\");\n                mw.visitJumpInsn(IFEQ, _direct);\n\n                mw.visitVarInsn(ALOAD, 0);\n                mw.visitVarInsn(ALOAD, 1);\n                mw.visitVarInsn(ALOAD, 2);\n                mw.visitVarInsn(ALOAD, 3);\n                mw.visitVarInsn(ALOAD, 4);\n                mw.visitVarInsn(ILOAD, 5);\n                mw.visitMethodInsn(INVOKEVIRTUAL, classNameType, \"writeDirectNonContext\",\n                                   \"(L\" + JSONSerializer + \";Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V\");\n                mw.visitInsn(RETURN);\n\n                mw.visitLabel(_direct);\n            }\n\n            mw.visitVarInsn(ALOAD, Context.obj); // obj\n            mw.visitTypeInsn(CHECKCAST, type(clazz)); // serializer\n            mw.visitVarInsn(ASTORE, context.var(\"entity\")); // obj\n            generateWriteMethod(clazz, mw, getters, context);\n            mw.visitInsn(RETURN);\n            mw.visitMaxs(7, context.variantIndex + 2);\n            mw.visitEnd();\n        }\n\n        if (!nativeSorted) {\n            // sortField support\n            Context context = new Context(getters, beanInfo, classNameType, false,\n                                          DisableCircularReferenceDetect);\n\n            mw = new MethodWriter(cw, ACC_PUBLIC, \"writeUnsorted\",\n                                  \"(L\" + JSONSerializer + \";Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V\",\n                                  null, new String[] { \"java/io/IOException\" });\n\n            mw.visitVarInsn(ALOAD, Context.serializer);\n            mw.visitFieldInsn(GETFIELD, JSONSerializer, \"out\", SerializeWriter_desc);\n            mw.visitVarInsn(ASTORE, context.var(\"out\"));\n\n            mw.visitVarInsn(ALOAD, Context.obj); // obj\n            mw.visitTypeInsn(CHECKCAST, type(clazz)); // serializer\n            mw.visitVarInsn(ASTORE, context.var(\"entity\")); // obj\n\n            generateWriteMethod(clazz, mw, unsortedGetters, context);\n\n            mw.visitInsn(RETURN);\n            mw.visitMaxs(7, context.variantIndex + 2);\n            mw.visitEnd();\n        }\n\n        // 0 writeAsArray\n        // 1 writeAsArrayNormal\n        // 2 writeAsArrayNonContext\n        for (int i = 0; i < 3; ++i) {\n            String methodName;\n            boolean nonContext = DisableCircularReferenceDetect;\n            boolean writeDirect = false;\n            if (i == 0) {\n                methodName = \"writeAsArray\";\n                writeDirect = true;\n            } else if (i == 1) {\n                methodName = \"writeAsArrayNormal\";\n            } else {\n                writeDirect = true;\n                nonContext = true;\n                methodName = \"writeAsArrayNonContext\";\n            }\n\n            Context context = new Context(getters, beanInfo, classNameType, writeDirect,\n                                          nonContext);\n\n            mw = new MethodWriter(cw, ACC_PUBLIC, methodName,\n                                  \"(L\" + JSONSerializer + \";Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V\",\n                                  null, new String[] { \"java/io/IOException\" });\n\n            mw.visitVarInsn(ALOAD, Context.serializer);\n            mw.visitFieldInsn(GETFIELD, JSONSerializer, \"out\", SerializeWriter_desc);\n            mw.visitVarInsn(ASTORE, context.var(\"out\"));\n\n            mw.visitVarInsn(ALOAD, Context.obj); // obj\n            mw.visitTypeInsn(CHECKCAST, type(clazz)); // serializer\n            mw.visitVarInsn(ASTORE, context.var(\"entity\")); // obj\n            generateWriteAsArray(clazz, mw, getters, context);\n            mw.visitInsn(RETURN);\n            mw.visitMaxs(7, context.variantIndex + 2);\n            mw.visitEnd();\n        }\n\n        byte[] code = cw.toByteArray();\n\n        Class<?> serializerClass = classLoader.defineClassPublic(classNameFull, code, 0, code.length);\n        Constructor<?> constructor = serializerClass.getConstructor(SerializeBeanInfo.class);\n        Object instance = constructor.newInstance(beanInfo);\n\n        return (JavaBeanSerializer) instance;\n    }\n\n    private void generateWriteAsArray(Class<?> clazz, MethodVisitor mw, FieldInfo[] getters,\n                                      Context context) throws Exception {\n\n        Label nonPropertyFilters_ = new Label();\n        mw.visitVarInsn(ALOAD, Context.serializer);\n        mw.visitVarInsn(ALOAD, 0);\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONSerializer, \"hasPropertyFilters\", \"(\" + SerializeFilterable_desc + \")Z\");\n        mw.visitJumpInsn(IFNE, nonPropertyFilters_);\n        mw.visitVarInsn(ALOAD, 0);\n        mw.visitVarInsn(ALOAD, 1);\n        mw.visitVarInsn(ALOAD, 2);\n        mw.visitVarInsn(ALOAD, 3);\n        mw.visitVarInsn(ALOAD, 4);\n        mw.visitVarInsn(ILOAD, 5);\n        mw.visitMethodInsn(INVOKESPECIAL, JavaBeanSerializer,\n                \"writeNoneASM\", \"(L\" + JSONSerializer\n                        + \";Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V\");\n        mw.visitInsn(RETURN);\n\n        mw.visitLabel(nonPropertyFilters_);\n        mw.visitVarInsn(ALOAD, context.var(\"out\"));\n        mw.visitVarInsn(BIPUSH, '[');\n        mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"write\", \"(I)V\");\n\n        int size = getters.length;\n\n        if (size == 0) {\n            mw.visitVarInsn(ALOAD, context.var(\"out\"));\n            mw.visitVarInsn(BIPUSH, ']');\n            mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"write\", \"(I)V\");\n            return;\n        }\n\n        for (int i = 0; i < size; ++i) {\n            final char seperator = (i == size - 1) ? ']' : ',';\n\n            FieldInfo fieldInfo = getters[i];\n            Class<?> fieldClass = fieldInfo.fieldClass;\n\n            mw.visitLdcInsn(fieldInfo.name);\n            mw.visitVarInsn(ASTORE, Context.fieldName);\n\n            if (fieldClass == byte.class //\n                || fieldClass == short.class //\n                || fieldClass == int.class) {\n\n                mw.visitVarInsn(ALOAD, context.var(\"out\"));\n                mw.visitInsn(DUP);\n                _get(mw, context, fieldInfo);\n                mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"writeInt\", \"(I)V\");\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"write\", \"(I)V\");\n            } else if (fieldClass == long.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"out\"));\n                mw.visitInsn(DUP);\n                _get(mw, context, fieldInfo);\n                mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"writeLong\", \"(J)V\");\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"write\", \"(I)V\");\n            } else if (fieldClass == float.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"out\"));\n                mw.visitInsn(DUP);\n                _get(mw, context, fieldInfo);\n                mw.visitInsn(ICONST_1);\n                mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"writeFloat\", \"(FZ)V\");\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"write\", \"(I)V\");\n            } else if (fieldClass == double.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"out\"));\n                mw.visitInsn(DUP);\n                _get(mw, context, fieldInfo);\n                mw.visitInsn(ICONST_1);\n                mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"writeDouble\", \"(DZ)V\");\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"write\", \"(I)V\");\n            } else if (fieldClass == boolean.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"out\"));\n                mw.visitInsn(DUP);\n                _get(mw, context, fieldInfo);\n                mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"write\", \"(Z)V\");\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"write\", \"(I)V\");\n            } else if (fieldClass == char.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"out\"));\n                _get(mw, context, fieldInfo); // Character.toString(value)\n                mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Character\", \"toString\", \"(C)Ljava/lang/String;\");\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"writeString\", \"(Ljava/lang/String;C)V\");\n\n            } else if (fieldClass == String.class) {\n                mw.visitVarInsn(ALOAD, context.var(\"out\"));\n                _get(mw, context, fieldInfo);\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"writeString\", \"(Ljava/lang/String;C)V\");\n            } else if (fieldClass.isEnum()) {\n                mw.visitVarInsn(ALOAD, context.var(\"out\"));\n                mw.visitInsn(DUP);\n                _get(mw, context, fieldInfo);\n                mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"writeEnum\", \"(Ljava/lang/Enum;)V\");\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"write\", \"(I)V\");\n            } else if (List.class.isAssignableFrom(fieldClass)) {\n                Type fieldType = fieldInfo.fieldType;\n\n                Type elementType;\n                if (fieldType instanceof Class) {\n                    elementType = Object.class;\n                } else {\n                    elementType = ((ParameterizedType) fieldType).getActualTypeArguments()[0];\n                }\n\n                Class<?> elementClass = null;\n                if (elementType instanceof Class<?>) {\n                    elementClass = (Class<?>) elementType;\n\n                    if (elementClass == Object.class) {\n                        elementClass = null;\n                    }\n                }\n                \n                _get(mw, context, fieldInfo);\n                mw.visitTypeInsn(CHECKCAST, \"java/util/List\"); // cast\n                mw.visitVarInsn(ASTORE, context.var(\"list\"));\n\n                if (elementClass == String.class //\n                    && context.writeDirect) {\n                    mw.visitVarInsn(ALOAD, context.var(\"out\"));\n                    mw.visitVarInsn(ALOAD, context.var(\"list\"));\n                    mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"write\", \"(Ljava/util/List;)V\");\n                } else {\n                    Label nullEnd_ = new Label(), nullElse_ = new Label();\n\n                    mw.visitVarInsn(ALOAD, context.var(\"list\"));\n                    mw.visitJumpInsn(IFNONNULL, nullElse_);\n\n                    mw.visitVarInsn(ALOAD, context.var(\"out\"));\n                    mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"writeNull\", \"()V\");\n                    mw.visitJumpInsn(GOTO, nullEnd_);\n\n                    mw.visitLabel(nullElse_);\n\n                    mw.visitVarInsn(ALOAD, context.var(\"list\"));\n                    mw.visitMethodInsn(INVOKEINTERFACE, \"java/util/List\", \"size\", \"()I\");\n                    mw.visitVarInsn(ISTORE, context.var(\"size\"));\n\n                    mw.visitVarInsn(ALOAD, context.var(\"out\"));\n                    mw.visitVarInsn(BIPUSH, '[');\n                    mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"write\", \"(I)V\");\n\n                    Label for_ = new Label(), forFirst_ = new Label(), forEnd_ = new Label();\n\n                    mw.visitInsn(ICONST_0);\n                    mw.visitVarInsn(ISTORE, context.var(\"i\"));\n\n                    // for (; i < list.size() -1; ++i) {\n                    mw.visitLabel(for_);\n                    mw.visitVarInsn(ILOAD, context.var(\"i\"));\n                    mw.visitVarInsn(ILOAD, context.var(\"size\"));\n                    mw.visitJumpInsn(IF_ICMPGE, forEnd_); // i < list.size - 1\n\n                    mw.visitVarInsn(ILOAD, context.var(\"i\"));\n                    mw.visitJumpInsn(IFEQ, forFirst_); // i < list.size - 1\n\n                    mw.visitVarInsn(ALOAD, context.var(\"out\"));\n                    mw.visitVarInsn(BIPUSH, ',');\n                    mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"write\", \"(I)V\");\n\n                    mw.visitLabel(forFirst_);\n\n                    mw.visitVarInsn(ALOAD, context.var(\"list\"));\n                    mw.visitVarInsn(ILOAD, context.var(\"i\"));\n                    mw.visitMethodInsn(INVOKEINTERFACE, \"java/util/List\", \"get\", \"(I)Ljava/lang/Object;\");\n                    mw.visitVarInsn(ASTORE, context.var(\"list_item\"));\n\n                    Label forItemNullEnd_ = new Label(), forItemNullElse_ = new Label();\n\n                    mw.visitVarInsn(ALOAD, context.var(\"list_item\"));\n                    mw.visitJumpInsn(IFNONNULL, forItemNullElse_);\n\n                    mw.visitVarInsn(ALOAD, context.var(\"out\"));\n                    mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"writeNull\", \"()V\");\n                    mw.visitJumpInsn(GOTO, forItemNullEnd_);\n\n                    mw.visitLabel(forItemNullElse_);\n\n                    Label forItemClassIfEnd_ = new Label(), forItemClassIfElse_ = new Label();\n                    if (elementClass != null && Modifier.isPublic(elementClass.getModifiers())) {\n                        mw.visitVarInsn(ALOAD, context.var(\"list_item\"));\n                        mw.visitMethodInsn(INVOKEVIRTUAL, \"java/lang/Object\", \"getClass\", \"()Ljava/lang/Class;\");\n                        mw.visitLdcInsn(com.alibaba.fastjson.asm.Type.getType(desc(elementClass)));\n                        mw.visitJumpInsn(IF_ACMPNE, forItemClassIfElse_);\n\n                        _getListFieldItemSer(context, mw, fieldInfo, elementClass);\n                        mw.visitVarInsn(ASTORE, context.var(\"list_item_desc\"));\n\n                        Label instanceOfElse_ = new Label(), instanceOfEnd_ = new Label();\n\n                        if (context.writeDirect) {\n                            mw.visitVarInsn(ALOAD, context.var(\"list_item_desc\"));\n                            mw.visitTypeInsn(INSTANCEOF, JavaBeanSerializer);\n                            mw.visitJumpInsn(IFEQ, instanceOfElse_);\n\n                            mw.visitVarInsn(ALOAD, context.var(\"list_item_desc\"));\n                            mw.visitTypeInsn(CHECKCAST, JavaBeanSerializer); // cast\n                            mw.visitVarInsn(ALOAD, Context.serializer);\n                            mw.visitVarInsn(ALOAD, context.var(\"list_item\")); // object\n                            if (context.nonContext) { // fieldName\n                                mw.visitInsn(ACONST_NULL);\n                            } else {\n                                mw.visitVarInsn(ILOAD, context.var(\"i\"));\n                                mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Integer\", \"valueOf\",\n                                                   \"(I)Ljava/lang/Integer;\");\n                            }\n                            mw.visitLdcInsn(com.alibaba.fastjson.asm.Type.getType(desc(elementClass))); // fieldType\n                            mw.visitLdcInsn(fieldInfo.serialzeFeatures); // features\n                            mw.visitMethodInsn(INVOKEVIRTUAL, JavaBeanSerializer, \"writeAsArrayNonContext\", //\n                                               \"(L\" + JSONSerializer + \";Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V\");\n                            mw.visitJumpInsn(GOTO, instanceOfEnd_);\n\n                            mw.visitLabel(instanceOfElse_);\n                        }\n\n                        mw.visitVarInsn(ALOAD, context.var(\"list_item_desc\"));\n                        mw.visitVarInsn(ALOAD, Context.serializer);\n                        mw.visitVarInsn(ALOAD, context.var(\"list_item\")); // object\n                        if (context.nonContext) { // fieldName\n                            mw.visitInsn(ACONST_NULL);\n                        } else {\n                            mw.visitVarInsn(ILOAD, context.var(\"i\"));\n                            mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Integer\", \"valueOf\", \"(I)Ljava/lang/Integer;\");\n                        }\n                        mw.visitLdcInsn(com.alibaba.fastjson.asm.Type.getType(desc(elementClass))); // fieldType\n                        mw.visitLdcInsn(fieldInfo.serialzeFeatures); // features\n                        mw.visitMethodInsn(INVOKEINTERFACE, ObjectSerializer, \"write\", //\n                                           \"(L\" + JSONSerializer + \";Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V\");\n                        mw.visitLabel(instanceOfEnd_);\n                        mw.visitJumpInsn(GOTO, forItemClassIfEnd_);\n                    }\n\n                    mw.visitLabel(forItemClassIfElse_);\n                    mw.visitVarInsn(ALOAD, Context.serializer);\n                    mw.visitVarInsn(ALOAD, context.var(\"list_item\"));\n                    if (context.nonContext) {\n                        mw.visitInsn(ACONST_NULL);\n                    } else {\n                        mw.visitVarInsn(ILOAD, context.var(\"i\"));\n                        mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Integer\", \"valueOf\", \"(I)Ljava/lang/Integer;\");\n                    }\n                    if (elementClass != null && Modifier.isPublic(elementClass.getModifiers())) {\n                        mw.visitLdcInsn(com.alibaba.fastjson.asm.Type.getType(desc((Class<?>) elementType)));\n                        mw.visitLdcInsn(fieldInfo.serialzeFeatures);\n                        mw.visitMethodInsn(INVOKEVIRTUAL, JSONSerializer, \"writeWithFieldName\",\n                                           \"(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V\");\n                    } else {\n                        mw.visitMethodInsn(INVOKEVIRTUAL, JSONSerializer, \"writeWithFieldName\",\n                                           \"(Ljava/lang/Object;Ljava/lang/Object;)V\");\n                    }\n                    mw.visitLabel(forItemClassIfEnd_);\n                    mw.visitLabel(forItemNullEnd_);\n\n                    mw.visitIincInsn(context.var(\"i\"), 1);\n                    mw.visitJumpInsn(GOTO, for_);\n\n                    mw.visitLabel(forEnd_);\n\n                    mw.visitVarInsn(ALOAD, context.var(\"out\"));\n                    mw.visitVarInsn(BIPUSH, ']');\n                    mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"write\", \"(I)V\");\n\n                    mw.visitLabel(nullEnd_);\n                }\n\n                mw.visitVarInsn(ALOAD, context.var(\"out\"));\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"write\", \"(I)V\");\n            } else {\n                Label notNullEnd_ = new Label(), notNullElse_ = new Label();\n\n                _get(mw, context, fieldInfo);\n                mw.visitInsn(DUP);\n                mw.visitVarInsn(ASTORE, context.var(\"field_\" + fieldInfo.fieldClass.getName()));\n                mw.visitJumpInsn(IFNONNULL, notNullElse_);\n\n                mw.visitVarInsn(ALOAD, context.var(\"out\"));\n                mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"writeNull\", \"()V\");\n                mw.visitJumpInsn(GOTO, notNullEnd_);\n\n                mw.visitLabel(notNullElse_);\n\n                Label classIfEnd_ = new Label(), classIfElse_ = new Label();\n                mw.visitVarInsn(ALOAD, context.var(\"field_\" + fieldInfo.fieldClass.getName()));\n                mw.visitMethodInsn(INVOKEVIRTUAL, \"java/lang/Object\", \"getClass\", \"()Ljava/lang/Class;\");\n                mw.visitLdcInsn(com.alibaba.fastjson.asm.Type.getType(desc(fieldClass)));\n                mw.visitJumpInsn(IF_ACMPNE, classIfElse_);\n\n                _getFieldSer(context, mw, fieldInfo);\n                mw.visitVarInsn(ASTORE, context.var(\"fied_ser\"));\n\n                Label instanceOfElse_ = new Label(), instanceOfEnd_ = new Label();\n                if (context.writeDirect && Modifier.isPublic(fieldClass.getModifiers())) {\n                    mw.visitVarInsn(ALOAD, context.var(\"fied_ser\"));\n                    mw.visitTypeInsn(INSTANCEOF, JavaBeanSerializer);\n                    mw.visitJumpInsn(IFEQ, instanceOfElse_);\n\n                    mw.visitVarInsn(ALOAD, context.var(\"fied_ser\"));\n                    mw.visitTypeInsn(CHECKCAST, JavaBeanSerializer); // cast\n                    mw.visitVarInsn(ALOAD, Context.serializer);\n                    mw.visitVarInsn(ALOAD, context.var(\"field_\" + fieldInfo.fieldClass.getName()));\n                    mw.visitVarInsn(ALOAD, Context.fieldName);\n                    mw.visitLdcInsn(com.alibaba.fastjson.asm.Type.getType(desc(fieldClass))); // fieldType\n                    mw.visitLdcInsn(fieldInfo.serialzeFeatures); // features\n                    mw.visitMethodInsn(INVOKEVIRTUAL, JavaBeanSerializer, \"writeAsArrayNonContext\", //\n                                       \"(L\" + JSONSerializer + \";Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V\");\n                    mw.visitJumpInsn(GOTO, instanceOfEnd_);\n\n                    mw.visitLabel(instanceOfElse_);\n                }\n                mw.visitVarInsn(ALOAD, context.var(\"fied_ser\"));\n                mw.visitVarInsn(ALOAD, Context.serializer);\n                mw.visitVarInsn(ALOAD, context.var(\"field_\" + fieldInfo.fieldClass.getName()));\n                mw.visitVarInsn(ALOAD, Context.fieldName);\n                mw.visitLdcInsn(com.alibaba.fastjson.asm.Type.getType(desc(fieldClass))); // fieldType\n                mw.visitLdcInsn(fieldInfo.serialzeFeatures); // features\n                mw.visitMethodInsn(INVOKEINTERFACE, ObjectSerializer, \"write\", //\n                                   \"(L\" + JSONSerializer + \";Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V\");\n                mw.visitLabel(instanceOfEnd_);\n                mw.visitJumpInsn(GOTO, classIfEnd_);\n\n                mw.visitLabel(classIfElse_);\n                String format = fieldInfo.getFormat();\n\n                mw.visitVarInsn(ALOAD, Context.serializer);\n                mw.visitVarInsn(ALOAD, context.var(\"field_\" + fieldInfo.fieldClass.getName()));\n                if (format != null) {\n                    mw.visitLdcInsn(format);\n                    mw.visitMethodInsn(INVOKEVIRTUAL, JSONSerializer, \"writeWithFormat\",\n                                       \"(Ljava/lang/Object;Ljava/lang/String;)V\");\n                } else {\n                    mw.visitVarInsn(ALOAD, Context.fieldName);\n                    if (fieldInfo.fieldType instanceof Class<?> //\n                        && ((Class<?>) fieldInfo.fieldType).isPrimitive()) {\n                        mw.visitMethodInsn(INVOKEVIRTUAL, JSONSerializer, \"writeWithFieldName\",\n                                           \"(Ljava/lang/Object;Ljava/lang/Object;)V\");\n                    } else {\n                        mw.visitVarInsn(ALOAD, 0); // this\n                        mw.visitFieldInsn(GETFIELD, context.className, fieldInfo.name + \"_asm_fieldType\",\n                                          \"Ljava/lang/reflect/Type;\");\n                        mw.visitLdcInsn(fieldInfo.serialzeFeatures);\n\n                        mw.visitMethodInsn(INVOKEVIRTUAL, JSONSerializer, \"writeWithFieldName\",\n                                           \"(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V\");\n                    }\n                }\n                mw.visitLabel(classIfEnd_);\n                mw.visitLabel(notNullEnd_);\n                \n\n                mw.visitVarInsn(ALOAD, context.var(\"out\"));\n                mw.visitVarInsn(BIPUSH, seperator);\n                mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"write\", \"(I)V\");\n            }\n        }\n    }\n\n    private void generateWriteMethod(Class<?> clazz, MethodVisitor mw, FieldInfo[] getters,\n                                     Context context) throws Exception {\n\n        // if (serializer.containsReference(object)) {\n        Label end = new Label();\n\n        int size = getters.length;\n\n        if (!context.writeDirect) {\n            // pretty format not byte code optimized\n            Label endSupper_ = new Label();\n            Label supper_ = new Label();\n            mw.visitVarInsn(ALOAD, context.var(\"out\"));\n            mw.visitLdcInsn(SerializerFeature.PrettyFormat.mask);\n            mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"isEnabled\", \"(I)Z\");\n            mw.visitJumpInsn(IFNE, supper_);\n\n            boolean hasMethod = false;\n            for (FieldInfo getter : getters) {\n                if (getter.method != null) {\n                    hasMethod = true;\n                    break;\n                }\n            }\n\n            if (hasMethod) {\n                mw.visitVarInsn(ALOAD, context.var(\"out\"));\n                mw.visitLdcInsn(SerializerFeature.IgnoreErrorGetter.mask);\n                mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"isEnabled\", \"(I)Z\");\n                mw.visitJumpInsn(IFEQ, endSupper_);\n            } else {\n                mw.visitJumpInsn(GOTO, endSupper_);\n            }\n\n            mw.visitLabel(supper_);\n            mw.visitVarInsn(ALOAD, 0);\n            mw.visitVarInsn(ALOAD, 1);\n            mw.visitVarInsn(ALOAD, 2);\n            mw.visitVarInsn(ALOAD, 3);\n            mw.visitVarInsn(ALOAD, 4);\n            mw.visitVarInsn(ILOAD, 5);\n            mw.visitMethodInsn(INVOKESPECIAL, JavaBeanSerializer,\n                               \"write\", \"(L\" + JSONSerializer\n                                        + \";Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V\");\n            mw.visitInsn(RETURN);\n\n            mw.visitLabel(endSupper_);\n        }\n\n        if (!context.nonContext) {\n            Label endRef_ = new Label();\n\n            // /////\n            mw.visitVarInsn(ALOAD, 0); // this\n            mw.visitVarInsn(ALOAD, Context.serializer);\n            mw.visitVarInsn(ALOAD, Context.obj);\n            mw.visitVarInsn(ILOAD, Context.features);\n            mw.visitMethodInsn(INVOKEVIRTUAL, JavaBeanSerializer, \"writeReference\",\n                               \"(L\" + JSONSerializer + \";Ljava/lang/Object;I)Z\");\n\n            mw.visitJumpInsn(IFEQ, endRef_);\n\n            mw.visitInsn(RETURN);\n\n            mw.visitLabel(endRef_);\n        }\n\n        final String writeAsArrayMethodName;\n\n        if (context.writeDirect) {\n            if (context.nonContext) {\n                writeAsArrayMethodName = \"writeAsArrayNonContext\";\n            } else {\n                writeAsArrayMethodName = \"writeAsArray\";\n            }\n        } else {\n            writeAsArrayMethodName = \"writeAsArrayNormal\";\n        }\n\n        if ((context.beanInfo.features & SerializerFeature.BeanToArray.mask) == 0) {\n            Label endWriteAsArray_ = new Label();\n\n            mw.visitVarInsn(ALOAD, context.var(\"out\"));\n            mw.visitLdcInsn(SerializerFeature.BeanToArray.mask);\n            mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"isEnabled\", \"(I)Z\");\n            mw.visitJumpInsn(IFEQ, endWriteAsArray_);\n\n            // /////\n            mw.visitVarInsn(ALOAD, 0); // this\n            mw.visitVarInsn(ALOAD, Context.serializer);\n            mw.visitVarInsn(ALOAD, 2); // obj\n            mw.visitVarInsn(ALOAD, 3); // fieldObj\n            mw.visitVarInsn(ALOAD, 4); // fieldType\n            mw.visitVarInsn(ILOAD, 5); // features\n            mw.visitMethodInsn(INVOKEVIRTUAL, //\n                               context.className, //\n                               writeAsArrayMethodName, //\n                               \"(L\" + JSONSerializer + \";Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V\");\n\n            mw.visitInsn(RETURN);\n\n            mw.visitLabel(endWriteAsArray_);\n        } else {\n            mw.visitVarInsn(ALOAD, 0); // this\n            mw.visitVarInsn(ALOAD, Context.serializer);\n            mw.visitVarInsn(ALOAD, 2); // obj\n            mw.visitVarInsn(ALOAD, 3); // fieldObj\n            mw.visitVarInsn(ALOAD, 4); // fieldType\n            mw.visitVarInsn(ILOAD, 5); // features\n            mw.visitMethodInsn(INVOKEVIRTUAL, //\n                               context.className, //\n                               writeAsArrayMethodName, //\n                               \"(L\" + JSONSerializer + \";Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V\");\n            mw.visitInsn(RETURN);\n        }\n\n        if (!context.nonContext) {\n            mw.visitVarInsn(ALOAD, Context.serializer);\n            mw.visitMethodInsn(INVOKEVIRTUAL, JSONSerializer, \"getContext\", \"()\" + SerialContext_desc);\n            mw.visitVarInsn(ASTORE, context.var(\"parent\"));\n\n            mw.visitVarInsn(ALOAD, Context.serializer);\n            mw.visitVarInsn(ALOAD, context.var(\"parent\"));\n            mw.visitVarInsn(ALOAD, Context.obj);\n            mw.visitVarInsn(ALOAD, Context.paramFieldName);\n            mw.visitLdcInsn(context.beanInfo.features);\n            mw.visitMethodInsn(INVOKEVIRTUAL, JSONSerializer, \"setContext\",\n                               \"(\" + SerialContext_desc + \"Ljava/lang/Object;Ljava/lang/Object;I)V\");\n        }\n\n        boolean writeClasName = (context.beanInfo.features & SerializerFeature.WriteClassName.mask) != 0;\n\n        // SEPERATO\n        if (writeClasName || !context.writeDirect) {\n            Label end_ = new Label();\n            Label else_ = new Label();\n            Label writeClass_ = new Label();\n\n            if (!writeClasName) {\n                mw.visitVarInsn(ALOAD, Context.serializer);\n                mw.visitVarInsn(ALOAD, Context.paramFieldType);\n                mw.visitVarInsn(ALOAD, Context.obj);\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONSerializer, \"isWriteClassName\",\n                        \"(Ljava/lang/reflect/Type;Ljava/lang/Object;)Z\");\n                mw.visitJumpInsn(IFEQ, else_);\n            }\n\n            // IFNULL\n            mw.visitVarInsn(ALOAD, Context.paramFieldType);\n            mw.visitVarInsn(ALOAD, Context.obj);\n            mw.visitMethodInsn(INVOKEVIRTUAL, \"java/lang/Object\", \"getClass\", \"()Ljava/lang/Class;\");\n            mw.visitJumpInsn(IF_ACMPEQ, else_);\n\n            mw.visitLabel(writeClass_);\n            mw.visitVarInsn(ALOAD, context.var(\"out\"));\n            mw.visitVarInsn(BIPUSH, '{');\n            mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"write\", \"(I)V\");\n            \n            mw.visitVarInsn(ALOAD, 0);\n            mw.visitVarInsn(ALOAD, Context.serializer);\n            if (context.beanInfo.typeKey != null) {\n                mw.visitLdcInsn(context.beanInfo.typeKey);\n            } else {\n                mw.visitInsn(ACONST_NULL);\n            }\n            mw.visitVarInsn(ALOAD, Context.obj);\n\n            mw.visitMethodInsn(INVOKEVIRTUAL, JavaBeanSerializer, \"writeClassName\", \"(L\" + JSONSerializer + \";Ljava/lang/String;Ljava/lang/Object;)V\");\n            mw.visitVarInsn(BIPUSH, ',');\n            mw.visitJumpInsn(GOTO, end_);\n\n            mw.visitLabel(else_);\n            mw.visitVarInsn(BIPUSH, '{');\n\n            mw.visitLabel(end_);\n        } else {\n            mw.visitVarInsn(BIPUSH, '{');\n        }\n\n        mw.visitVarInsn(ISTORE, context.var(\"seperator\"));\n\n        if (!context.writeDirect) {\n            _before(mw, context);\n        }\n\n        if (!context.writeDirect) {\n            mw.visitVarInsn(ALOAD, context.var(\"out\"));\n            mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"isNotWriteDefaultValue\", \"()Z\");\n            mw.visitVarInsn(ISTORE, context.var(\"notWriteDefaultValue\"));\n\n            mw.visitVarInsn(ALOAD, Context.serializer);\n            mw.visitVarInsn(ALOAD, 0);\n            mw.visitMethodInsn(INVOKEVIRTUAL, JSONSerializer, \"checkValue\", \"(\" + SerializeFilterable_desc + \")Z\");\n            mw.visitVarInsn(ISTORE, context.var(\"checkValue\"));\n\n            mw.visitVarInsn(ALOAD, Context.serializer);\n            mw.visitVarInsn(ALOAD, 0);\n            mw.visitMethodInsn(INVOKEVIRTUAL, JSONSerializer, \"hasNameFilters\", \"(\" + SerializeFilterable_desc + \")Z\");\n            mw.visitVarInsn(ISTORE, context.var(\"hasNameFilters\"));\n        }\n\n        for (int i = 0; i < size; ++i) {\n            FieldInfo property = getters[i];\n            Class<?> propertyClass = property.fieldClass;\n\n            mw.visitLdcInsn(property.name);\n            mw.visitVarInsn(ASTORE, Context.fieldName);\n\n            if (propertyClass == byte.class //\n                || propertyClass == short.class //\n                || propertyClass == int.class) {\n                _int(clazz, mw, property, context, context.var(propertyClass.getName()), 'I');\n            } else if (propertyClass == long.class) {\n                _long(clazz, mw, property, context);\n            } else if (propertyClass == float.class) {\n                _float(clazz, mw, property, context);\n            } else if (propertyClass == double.class) {\n                _double(clazz, mw, property, context);\n            } else if (propertyClass == boolean.class) {\n                _int(clazz, mw, property, context, context.var(\"boolean\"), 'Z');\n            } else if (propertyClass == char.class) {\n                _int(clazz, mw, property, context, context.var(\"char\"), 'C');\n            } else if (propertyClass == String.class) {\n                _string(clazz, mw, property, context);\n            } else if (propertyClass == BigDecimal.class) {\n                _decimal(clazz, mw, property, context);\n            } else if (List.class.isAssignableFrom(propertyClass)) {\n                _list(clazz, mw, property, context);\n            } else if (propertyClass.isEnum()) {\n                _enum(clazz, mw, property, context);\n            } else {\n                _object(clazz, mw, property, context);\n            }\n        }\n\n        if (!context.writeDirect) {\n            _after(mw, context);\n        }\n\n        Label _else = new Label();\n        Label _end_if = new Label();\n\n        mw.visitVarInsn(ILOAD, context.var(\"seperator\"));\n        mw.visitIntInsn(BIPUSH, '{');\n        mw.visitJumpInsn(IF_ICMPNE, _else);\n\n        mw.visitVarInsn(ALOAD, context.var(\"out\"));\n        mw.visitVarInsn(BIPUSH, '{');\n        mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"write\", \"(I)V\");\n\n        mw.visitLabel(_else);\n\n        mw.visitVarInsn(ALOAD, context.var(\"out\"));\n        mw.visitVarInsn(BIPUSH, '}');\n        mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"write\", \"(I)V\");\n\n        mw.visitLabel(_end_if);\n        mw.visitLabel(end);\n\n        if (!context.nonContext) {\n            mw.visitVarInsn(ALOAD, Context.serializer);\n            mw.visitVarInsn(ALOAD, context.var(\"parent\"));\n            mw.visitMethodInsn(INVOKEVIRTUAL, JSONSerializer, \"setContext\", \"(\" + SerialContext_desc + \")V\");\n        }\n\n    }\n\n    private void _object(Class<?> clazz, MethodVisitor mw, FieldInfo property, Context context) {\n        Label _end = new Label();\n\n        _nameApply(mw, property, context, _end);\n        _get(mw, context, property);\n        mw.visitVarInsn(ASTORE, context.var(\"object\"));\n\n        _filters(mw, property, context, _end);\n\n        _writeObject(mw, property, context, _end);\n\n        mw.visitLabel(_end);\n    }\n\n    private void _enum(Class<?> clazz, MethodVisitor mw, FieldInfo fieldInfo, Context context) {\n        Label _not_null = new Label();\n        Label _end_if = new Label();\n        Label _end = new Label();\n\n        _nameApply(mw, fieldInfo, context, _end);\n        _get(mw, context, fieldInfo);\n        mw.visitTypeInsn(CHECKCAST, \"java/lang/Enum\"); // cast\n        mw.visitVarInsn(ASTORE, context.var(\"enum\"));\n\n        _filters(mw, fieldInfo, context, _end);\n\n        mw.visitVarInsn(ALOAD, context.var(\"enum\"));\n        mw.visitJumpInsn(IFNONNULL, _not_null);\n        _if_write_null(mw, fieldInfo, context);\n        mw.visitJumpInsn(GOTO, _end_if);\n\n        mw.visitLabel(_not_null);\n\n       if (context.writeDirect) {\n            mw.visitVarInsn(ALOAD, context.var(\"out\"));\n            mw.visitVarInsn(ILOAD, context.var(\"seperator\"));\n            mw.visitVarInsn(ALOAD, Context.fieldName);\n            mw.visitVarInsn(ALOAD, context.var(\"enum\"));\n            mw.visitMethodInsn(INVOKEVIRTUAL, \"java/lang/Enum\", \"name\", \"()Ljava/lang/String;\");\n            mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"writeFieldValueStringWithDoubleQuote\",\n                               \"(CLjava/lang/String;Ljava/lang/String;)V\");\n        } else {\n            mw.visitVarInsn(ALOAD, context.var(\"out\"));\n            mw.visitVarInsn(ILOAD, context.var(\"seperator\"));\n            mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"write\", \"(I)V\");\n            \n            mw.visitVarInsn(ALOAD, context.var(\"out\"));\n            mw.visitVarInsn(ALOAD, Context.fieldName);\n            mw.visitInsn(ICONST_0);\n            mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"writeFieldName\", \"(Ljava/lang/String;Z)V\");\n            \n            mw.visitVarInsn(ALOAD, Context.serializer);\n            mw.visitVarInsn(ALOAD, context.var(\"enum\"));\n            mw.visitVarInsn(ALOAD, Context.fieldName);\n            mw.visitLdcInsn(com.alibaba.fastjson.asm.Type.getType(desc((Class<?>) fieldInfo.fieldClass)));\n            mw.visitLdcInsn(fieldInfo.serialzeFeatures);\n            mw.visitMethodInsn(INVOKEVIRTUAL, JSONSerializer, \"writeWithFieldName\",\n                    \"(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V\");\n        }\n\n        _seperator(mw, context);\n\n        mw.visitLabel(_end_if);\n        mw.visitLabel(_end);\n    }\n    \n    private void _int(Class<?> clazz, MethodVisitor mw, FieldInfo property, Context context, int var, char type) {\n        Label end_ = new Label();\n\n        _nameApply(mw, property, context, end_);\n        _get(mw, context, property);\n        mw.visitVarInsn(ISTORE, var);\n\n        _filters(mw, property, context, end_);\n\n        mw.visitVarInsn(ALOAD, context.var(\"out\"));\n        mw.visitVarInsn(ILOAD, context.var(\"seperator\"));\n        mw.visitVarInsn(ALOAD, Context.fieldName);\n        mw.visitVarInsn(ILOAD, var);\n\n        mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"writeFieldValue\", \"(CLjava/lang/String;\" + type + \")V\");\n\n        _seperator(mw, context);\n\n        mw.visitLabel(end_);\n    }\n\n    private void _long(Class<?> clazz, MethodVisitor mw, FieldInfo property, Context context) {\n        Label end_ = new Label();\n\n        _nameApply(mw, property, context, end_);\n        _get(mw, context, property);\n        mw.visitVarInsn(LSTORE, context.var(\"long\", 2));\n\n        _filters(mw, property, context, end_);\n\n        mw.visitVarInsn(ALOAD, context.var(\"out\"));\n        mw.visitVarInsn(ILOAD, context.var(\"seperator\"));\n        mw.visitVarInsn(ALOAD, Context.fieldName);\n        mw.visitVarInsn(LLOAD, context.var(\"long\", 2));\n        mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"writeFieldValue\", \"(CLjava/lang/String;J)V\");\n\n        _seperator(mw, context);\n\n        mw.visitLabel(end_);\n    }\n    \n    private void _float(Class<?> clazz, MethodVisitor mw, FieldInfo property, Context context) {\n        Label end_ = new Label();\n\n        _nameApply(mw, property, context, end_);\n        _get(mw, context, property);\n        mw.visitVarInsn(FSTORE, context.var(\"float\"));\n\n        _filters(mw, property, context, end_);\n\n        mw.visitVarInsn(ALOAD, context.var(\"out\"));\n        mw.visitVarInsn(ILOAD, context.var(\"seperator\"));\n        mw.visitVarInsn(ALOAD, Context.fieldName);\n        mw.visitVarInsn(FLOAD, context.var(\"float\"));\n        mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"writeFieldValue\", \"(CLjava/lang/String;F)V\");\n\n        _seperator(mw, context);\n\n        mw.visitLabel(end_);\n    }\n\n    private void _double(Class<?> clazz, MethodVisitor mw, FieldInfo property, Context context) {\n        Label end_ = new Label();\n\n        _nameApply(mw, property, context, end_);\n        _get(mw, context, property);\n        mw.visitVarInsn(DSTORE, context.var(\"double\", 2));\n\n        _filters(mw, property, context, end_);\n\n        mw.visitVarInsn(ALOAD, context.var(\"out\"));\n        mw.visitVarInsn(ILOAD, context.var(\"seperator\"));\n        mw.visitVarInsn(ALOAD, Context.fieldName);\n        mw.visitVarInsn(DLOAD, context.var(\"double\", 2));\n        mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"writeFieldValue\", \"(CLjava/lang/String;D)V\");\n\n        _seperator(mw, context);\n\n        mw.visitLabel(end_);\n    }\n    \n    private void _get(MethodVisitor mw, Context context, FieldInfo fieldInfo) {\n        Method method = fieldInfo.method;\n        if (method != null) {\n            mw.visitVarInsn(ALOAD, context.var(\"entity\"));\n            Class<?> declaringClass = method.getDeclaringClass();\n            mw.visitMethodInsn(declaringClass.isInterface() ? INVOKEINTERFACE : INVOKEVIRTUAL, type(declaringClass), method.getName(), desc(method));\n            if (!method.getReturnType().equals(fieldInfo.fieldClass)) {\n                mw.visitTypeInsn(CHECKCAST, type(fieldInfo.fieldClass)); // cast\n            }\n        } else {\n            mw.visitVarInsn(ALOAD, context.var(\"entity\"));\n            Field field = fieldInfo.field;\n            mw.visitFieldInsn(GETFIELD, type(fieldInfo.declaringClass), field.getName(),\n                              desc(field.getType()));\n            if (!field.getType().equals(fieldInfo.fieldClass)) {\n                mw.visitTypeInsn(CHECKCAST, type(fieldInfo.fieldClass)); // cast\n            }\n        }\n    }\n\n    private void _decimal(Class<?> clazz, MethodVisitor mw, FieldInfo property, Context context) {\n        Label end_ = new Label();\n\n        _nameApply(mw, property, context, end_);\n        _get(mw, context, property);\n        mw.visitVarInsn(ASTORE, context.var(\"decimal\"));\n\n        _filters(mw, property, context, end_);\n\n        Label if_ = new Label();\n        Label else_ = new Label();\n        Label endIf_ = new Label();\n\n        mw.visitLabel(if_);\n\n        // if (decimalValue == null) {\n        mw.visitVarInsn(ALOAD, context.var(\"decimal\"));\n        mw.visitJumpInsn(IFNONNULL, else_);\n        _if_write_null(mw, property, context);\n        mw.visitJumpInsn(GOTO, endIf_);\n\n        mw.visitLabel(else_); // else { out.writeFieldValue(seperator, fieldName, fieldValue)\n\n        mw.visitVarInsn(ALOAD, context.var(\"out\"));\n        mw.visitVarInsn(ILOAD, context.var(\"seperator\"));\n        mw.visitVarInsn(ALOAD, Context.fieldName);\n        mw.visitVarInsn(ALOAD, context.var(\"decimal\"));\n        mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"writeFieldValue\",\n                           \"(CLjava/lang/String;Ljava/math/BigDecimal;)V\");\n\n        _seperator(mw, context);\n        mw.visitJumpInsn(GOTO, endIf_);\n\n        mw.visitLabel(endIf_);\n\n        mw.visitLabel(end_);\n    }\n\n    private void _string(Class<?> clazz, MethodVisitor mw, FieldInfo property, Context context) {\n        Label end_ = new Label();\n\n        if (property.name.equals(context.beanInfo.typeKey)) {\n            mw.visitVarInsn(ALOAD, Context.serializer);\n            mw.visitVarInsn(ALOAD, Context.paramFieldType);\n            mw.visitVarInsn(ALOAD, Context.obj);\n            mw.visitMethodInsn(INVOKEVIRTUAL, JSONSerializer, \"isWriteClassName\",\n                    \"(Ljava/lang/reflect/Type;Ljava/lang/Object;)Z\");\n            mw.visitJumpInsn(IFNE, end_);\n        }\n\n        _nameApply(mw, property, context, end_);\n        _get(mw, context, property);\n        mw.visitVarInsn(ASTORE, context.var(\"string\"));\n\n        _filters(mw, property, context, end_);\n\n        Label else_ = new Label();\n        Label endIf_ = new Label();\n\n        // if (value == null) {\n        mw.visitVarInsn(ALOAD, context.var(\"string\"));\n        mw.visitJumpInsn(IFNONNULL, else_);\n\n        _if_write_null(mw, property, context);\n\n        mw.visitJumpInsn(GOTO, endIf_);\n\n        mw.visitLabel(else_); // else { out.writeFieldValue(seperator, fieldName, fieldValue)\n\n\n        if (\"trim\".equals(property.format)) {\n            mw.visitVarInsn(ALOAD, context.var(\"string\"));\n            mw.visitMethodInsn(INVOKEVIRTUAL, \"java/lang/String\", \"trim\", \"()Ljava/lang/String;\");\n            mw.visitVarInsn(ASTORE, context.var(\"string\"));\n        }\n\n        if (context.writeDirect) {\n            mw.visitVarInsn(ALOAD, context.var(\"out\"));\n            mw.visitVarInsn(ILOAD, context.var(\"seperator\"));\n            mw.visitVarInsn(ALOAD, Context.fieldName);\n            mw.visitVarInsn(ALOAD, context.var(\"string\"));\n            mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"writeFieldValueStringWithDoubleQuoteCheck\",\n                               \"(CLjava/lang/String;Ljava/lang/String;)V\");\n        } else {\n            mw.visitVarInsn(ALOAD, context.var(\"out\"));\n            mw.visitVarInsn(ILOAD, context.var(\"seperator\"));\n            mw.visitVarInsn(ALOAD, Context.fieldName);\n            mw.visitVarInsn(ALOAD, context.var(\"string\"));\n            mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"writeFieldValue\",\n                               \"(CLjava/lang/String;Ljava/lang/String;)V\");\n        }\n        _seperator(mw, context);\n\n        mw.visitLabel(endIf_);\n\n        mw.visitLabel(end_);\n    }\n\n    private void _list(Class<?> clazz, MethodVisitor mw, FieldInfo fieldInfo, Context context) {\n        Type propertyType = fieldInfo.fieldType;\n\n        Type elementType = TypeUtils.getCollectionItemType(propertyType);\n\n        Class<?> elementClass = null;\n        if (elementType instanceof Class<?>) {\n            elementClass = (Class<?>) elementType;\n        }\n        \n        if (elementClass == Object.class //\n            || elementClass == Serializable.class) {\n            elementClass = null;\n        }\n\n        Label end_ = new Label(), else_ = new Label(), endIf_ = new Label();\n\n        _nameApply(mw, fieldInfo, context, end_);\n        _get(mw, context, fieldInfo);\n        mw.visitTypeInsn(CHECKCAST, \"java/util/List\"); // cast\n        mw.visitVarInsn(ASTORE, context.var(\"list\"));\n\n        _filters(mw, fieldInfo, context, end_);\n\n        mw.visitVarInsn(ALOAD, context.var(\"list\"));\n        mw.visitJumpInsn(IFNONNULL, else_);\n        _if_write_null(mw, fieldInfo, context);\n        mw.visitJumpInsn(GOTO, endIf_);\n\n        mw.visitLabel(else_); // else {\n\n        mw.visitVarInsn(ALOAD, context.var(\"out\"));\n        mw.visitVarInsn(ILOAD, context.var(\"seperator\"));\n        mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"write\", \"(I)V\");\n\n        _writeFieldName(mw, context);\n\n        //\n        mw.visitVarInsn(ALOAD, context.var(\"list\"));\n        mw.visitMethodInsn(INVOKEINTERFACE, \"java/util/List\", \"size\", \"()I\");\n        mw.visitVarInsn(ISTORE, context.var(\"size\"));\n\n        Label _else_3 = new Label();\n        Label _end_if_3 = new Label();\n\n        mw.visitVarInsn(ILOAD, context.var(\"size\"));\n        mw.visitInsn(ICONST_0);\n        mw.visitJumpInsn(IF_ICMPNE, _else_3);\n\n        mw.visitVarInsn(ALOAD, context.var(\"out\"));\n        mw.visitLdcInsn(\"[]\");\n        mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"write\", \"(Ljava/lang/String;)V\");\n\n        mw.visitJumpInsn(GOTO, _end_if_3);\n\n        mw.visitLabel(_else_3);\n\n        if (!context.nonContext) {\n            mw.visitVarInsn(ALOAD, Context.serializer);\n            mw.visitVarInsn(ALOAD, context.var(\"list\"));\n            mw.visitVarInsn(ALOAD, Context.fieldName);\n            mw.visitMethodInsn(INVOKEVIRTUAL, JSONSerializer, \"setContext\", \"(Ljava/lang/Object;Ljava/lang/Object;)V\");\n        }\n\n        if (elementType == String.class //\n            && context.writeDirect) {\n            mw.visitVarInsn(ALOAD, context.var(\"out\"));\n            mw.visitVarInsn(ALOAD, context.var(\"list\"));\n            mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"write\", \"(Ljava/util/List;)V\");\n        } else {\n            mw.visitVarInsn(ALOAD, context.var(\"out\"));\n            mw.visitVarInsn(BIPUSH, '[');\n            mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"write\", \"(I)V\");\n\n            Label for_ = new Label(), forFirst_ = new Label(), forEnd_ = new Label();\n\n            mw.visitInsn(ICONST_0);\n            mw.visitVarInsn(ISTORE, context.var(\"i\"));\n\n            // for (; i < list.size() -1; ++i) {\n            mw.visitLabel(for_);\n            mw.visitVarInsn(ILOAD, context.var(\"i\"));\n            mw.visitVarInsn(ILOAD, context.var(\"size\"));\n            mw.visitJumpInsn(IF_ICMPGE, forEnd_); // i < list.size - 1\n\n            mw.visitVarInsn(ILOAD, context.var(\"i\"));\n            mw.visitJumpInsn(IFEQ, forFirst_); // i < list.size - 1\n\n            mw.visitVarInsn(ALOAD, context.var(\"out\"));\n            mw.visitVarInsn(BIPUSH, ',');\n            mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"write\", \"(I)V\");\n\n            mw.visitLabel(forFirst_);\n\n            mw.visitVarInsn(ALOAD, context.var(\"list\"));\n            mw.visitVarInsn(ILOAD, context.var(\"i\"));\n            mw.visitMethodInsn(INVOKEINTERFACE, \"java/util/List\", \"get\", \"(I)Ljava/lang/Object;\");\n            mw.visitVarInsn(ASTORE, context.var(\"list_item\"));\n\n            Label forItemNullEnd_ = new Label(), forItemNullElse_ = new Label();\n\n            mw.visitVarInsn(ALOAD, context.var(\"list_item\"));\n            mw.visitJumpInsn(IFNONNULL, forItemNullElse_);\n\n            mw.visitVarInsn(ALOAD, context.var(\"out\"));\n            mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"writeNull\", \"()V\");\n            mw.visitJumpInsn(GOTO, forItemNullEnd_);\n\n            mw.visitLabel(forItemNullElse_);\n\n            Label forItemClassIfEnd_ = new Label(), forItemClassIfElse_ = new Label();\n            if (elementClass != null && Modifier.isPublic(elementClass.getModifiers())) {\n                mw.visitVarInsn(ALOAD, context.var(\"list_item\"));\n                mw.visitMethodInsn(INVOKEVIRTUAL, \"java/lang/Object\", \"getClass\", \"()Ljava/lang/Class;\");\n                mw.visitLdcInsn(com.alibaba.fastjson.asm.Type.getType(desc(elementClass)));\n                mw.visitJumpInsn(IF_ACMPNE, forItemClassIfElse_);\n\n                _getListFieldItemSer(context, mw, fieldInfo, elementClass);\n                // mw.visitInsn(DUP);\n                mw.visitVarInsn(ASTORE, context.var(\"list_item_desc\"));\n\n                Label instanceOfElse_ = new Label(), instanceOfEnd_ = new Label();\n\n                if (context.writeDirect) {\n                    String writeMethodName = context.nonContext && context.writeDirect ? //\n                        \"writeDirectNonContext\" //\n                        : \"write\";\n                    mw.visitVarInsn(ALOAD, context.var(\"list_item_desc\"));\n                    mw.visitTypeInsn(INSTANCEOF, JavaBeanSerializer);\n                    mw.visitJumpInsn(IFEQ, instanceOfElse_);\n\n                    mw.visitVarInsn(ALOAD, context.var(\"list_item_desc\"));\n                    mw.visitTypeInsn(CHECKCAST, JavaBeanSerializer); // cast\n                    mw.visitVarInsn(ALOAD, Context.serializer);\n                    mw.visitVarInsn(ALOAD, context.var(\"list_item\")); // object\n                    if (context.nonContext) { // fieldName\n                        mw.visitInsn(ACONST_NULL);\n                    } else {\n                        mw.visitVarInsn(ILOAD, context.var(\"i\"));\n                        mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Integer\", \"valueOf\", \"(I)Ljava/lang/Integer;\");\n                    }\n                    mw.visitLdcInsn(com.alibaba.fastjson.asm.Type.getType(desc(elementClass))); // fieldType\n                    mw.visitLdcInsn(fieldInfo.serialzeFeatures); // features\n                    mw.visitMethodInsn(INVOKEVIRTUAL, JavaBeanSerializer, writeMethodName, //\n                                       \"(L\" + JSONSerializer + \";Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V\");\n                    mw.visitJumpInsn(GOTO, instanceOfEnd_);\n\n                    mw.visitLabel(instanceOfElse_);\n                }\n                mw.visitVarInsn(ALOAD, context.var(\"list_item_desc\"));\n                mw.visitVarInsn(ALOAD, Context.serializer);\n                mw.visitVarInsn(ALOAD, context.var(\"list_item\")); // object\n                if (context.nonContext) { // fieldName\n                    mw.visitInsn(ACONST_NULL);\n                } else {\n                    mw.visitVarInsn(ILOAD, context.var(\"i\"));\n                    mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Integer\", \"valueOf\", \"(I)Ljava/lang/Integer;\");\n                }\n                mw.visitLdcInsn(com.alibaba.fastjson.asm.Type.getType(desc(elementClass))); // fieldType\n                mw.visitLdcInsn(fieldInfo.serialzeFeatures); // features\n                mw.visitMethodInsn(INVOKEINTERFACE, ObjectSerializer, \"write\", //\n                                   \"(L\" + JSONSerializer + \";Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V\");\n\n                mw.visitLabel(instanceOfEnd_);\n                mw.visitJumpInsn(GOTO, forItemClassIfEnd_);\n            }\n\n            mw.visitLabel(forItemClassIfElse_);\n\n            mw.visitVarInsn(ALOAD, Context.serializer);\n            mw.visitVarInsn(ALOAD, context.var(\"list_item\"));\n            if (context.nonContext) {\n                mw.visitInsn(ACONST_NULL);\n            } else {\n                mw.visitVarInsn(ILOAD, context.var(\"i\"));\n                mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Integer\", \"valueOf\", \"(I)Ljava/lang/Integer;\");\n            }\n\n            if (elementClass != null && Modifier.isPublic(elementClass.getModifiers())) {\n                mw.visitLdcInsn(com.alibaba.fastjson.asm.Type.getType(desc((Class<?>) elementType)));\n                mw.visitLdcInsn(fieldInfo.serialzeFeatures);\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONSerializer, \"writeWithFieldName\",\n                                   \"(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V\");\n            } else {\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONSerializer, \"writeWithFieldName\",\n                                   \"(Ljava/lang/Object;Ljava/lang/Object;)V\");\n            }\n\n            mw.visitLabel(forItemClassIfEnd_);\n            mw.visitLabel(forItemNullEnd_);\n\n            mw.visitIincInsn(context.var(\"i\"), 1);\n            mw.visitJumpInsn(GOTO, for_);\n\n            mw.visitLabel(forEnd_);\n\n            mw.visitVarInsn(ALOAD, context.var(\"out\"));\n            mw.visitVarInsn(BIPUSH, ']');\n            mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"write\", \"(I)V\");\n        }\n\n        {\n            mw.visitVarInsn(ALOAD, Context.serializer);\n            mw.visitMethodInsn(INVOKEVIRTUAL, JSONSerializer, \"popContext\", \"()V\");\n        }\n\n        mw.visitLabel(_end_if_3);\n\n        _seperator(mw, context);\n\n        mw.visitLabel(endIf_);\n\n        mw.visitLabel(end_);\n    }\n\n    private void _filters(MethodVisitor mw, FieldInfo property, Context context, Label _end) {\n        if (property.fieldTransient) {\n            mw.visitVarInsn(ALOAD, context.var(\"out\"));\n            mw.visitLdcInsn(SerializerFeature.SkipTransientField.mask);\n            mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"isEnabled\", \"(I)Z\");\n            mw.visitJumpInsn(IFNE, _end);\n        }\n\n        _notWriteDefault(mw, property, context, _end);\n\n        if (context.writeDirect) {\n            return;\n        }\n\n        _apply(mw, property, context);\n        mw.visitJumpInsn(IFEQ, _end);\n\n        _processKey(mw, property, context);\n\n        _processValue(mw, property, context, _end);\n    }\n\n    private void _nameApply(MethodVisitor mw, FieldInfo property, Context context, Label _end) {\n        if (!context.writeDirect) {\n            mw.visitVarInsn(ALOAD, 0);\n            mw.visitVarInsn(ALOAD, Context.serializer);\n            mw.visitVarInsn(ALOAD, Context.obj);\n            mw.visitVarInsn(ALOAD, Context.fieldName);\n            mw.visitMethodInsn(INVOKEVIRTUAL, JavaBeanSerializer, \"applyName\",\n                               \"(L\" + JSONSerializer + \";Ljava/lang/Object;Ljava/lang/String;)Z\");\n            mw.visitJumpInsn(IFEQ, _end);\n\n            _labelApply(mw, property, context, _end);\n        }\n\n        if (property.field == null) {\n            mw.visitVarInsn(ALOAD, context.var(\"out\"));\n            mw.visitLdcInsn(SerializerFeature.IgnoreNonFieldGetter.mask);\n            mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"isEnabled\", \"(I)Z\");\n\n            // if true\n            mw.visitJumpInsn(IFNE, _end);\n        }\n    }\n\n    private void _labelApply(MethodVisitor mw, FieldInfo property, Context context, Label _end) {\n        mw.visitVarInsn(ALOAD, 0); // this\n        mw.visitVarInsn(ALOAD, Context.serializer);\n        mw.visitLdcInsn(property.label);\n        mw.visitMethodInsn(INVOKEVIRTUAL, JavaBeanSerializer, \"applyLabel\",\n                           \"(L\" + JSONSerializer + \";Ljava/lang/String;)Z\");\n        mw.visitJumpInsn(IFEQ, _end);\n    }\n\n    private void _writeObject(MethodVisitor mw, FieldInfo fieldInfo, Context context, Label _end) {\n        String format = fieldInfo.getFormat();\n        Class<?> fieldClass = fieldInfo.fieldClass;\n\n        Label notNull_ = new Label();\n\n        // if (obj == null)\n        if (context.writeDirect) {\n            mw.visitVarInsn(ALOAD, context.var(\"object\"));\n        } else {\n            mw.visitVarInsn(ALOAD, Context.processValue);\n        }\n        mw.visitInsn(DUP);\n        mw.visitVarInsn(ASTORE, context.var(\"object\"));\n        mw.visitJumpInsn(IFNONNULL, notNull_);\n        _if_write_null(mw, fieldInfo, context);\n        mw.visitJumpInsn(GOTO, _end);\n\n        mw.visitLabel(notNull_);\n\n        mw.visitVarInsn(ALOAD, context.var(\"out\"));\n        mw.visitVarInsn(ILOAD, context.var(\"seperator\"));\n        mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"write\", \"(I)V\");\n\n        _writeFieldName(mw, context);\n\n        Label classIfEnd_ = new Label(), classIfElse_ = new Label();\n        if (Modifier.isPublic(fieldClass.getModifiers()) //\n            && !ParserConfig.isPrimitive2(fieldClass) //\n        ) {\n            mw.visitVarInsn(ALOAD, context.var(\"object\"));\n            mw.visitMethodInsn(INVOKEVIRTUAL, \"java/lang/Object\", \"getClass\", \"()Ljava/lang/Class;\");\n            mw.visitLdcInsn(com.alibaba.fastjson.asm.Type.getType(desc(fieldClass)));\n            mw.visitJumpInsn(IF_ACMPNE, classIfElse_);\n\n            _getFieldSer(context, mw, fieldInfo);\n            mw.visitVarInsn(ASTORE, context.var(\"fied_ser\"));\n\n            Label instanceOfElse_ = new Label(), instanceOfEnd_ = new Label();\n            mw.visitVarInsn(ALOAD, context.var(\"fied_ser\"));\n            mw.visitTypeInsn(INSTANCEOF, JavaBeanSerializer);\n            mw.visitJumpInsn(IFEQ, instanceOfElse_);\n\n            boolean disableCircularReferenceDetect = (fieldInfo.serialzeFeatures & SerializerFeature.DisableCircularReferenceDetect.mask) != 0;\n            boolean fieldBeanToArray = (fieldInfo.serialzeFeatures & SerializerFeature.BeanToArray.mask) != 0;\n            String writeMethodName;\n            if (disableCircularReferenceDetect || (context.nonContext && context.writeDirect)) {\n                writeMethodName = fieldBeanToArray ? \"writeAsArrayNonContext\" : \"writeDirectNonContext\";\n            } else {\n                writeMethodName = fieldBeanToArray ? \"writeAsArray\" : \"write\";\n            }\n            \n            mw.visitVarInsn(ALOAD, context.var(\"fied_ser\"));\n            mw.visitTypeInsn(CHECKCAST, JavaBeanSerializer); // cast\n            mw.visitVarInsn(ALOAD, Context.serializer);\n            mw.visitVarInsn(ALOAD, context.var(\"object\"));\n            mw.visitVarInsn(ALOAD, Context.fieldName);\n            mw.visitVarInsn(ALOAD, 0);\n            mw.visitFieldInsn(GETFIELD, context.className, fieldInfo.name + \"_asm_fieldType\",\n                              \"Ljava/lang/reflect/Type;\");\n            mw.visitLdcInsn(fieldInfo.serialzeFeatures); // features\n            mw.visitMethodInsn(INVOKEVIRTUAL, JavaBeanSerializer, writeMethodName, //\n                               \"(L\" + JSONSerializer + \";Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V\");\n            mw.visitJumpInsn(GOTO, instanceOfEnd_);\n\n            mw.visitLabel(instanceOfElse_);\n\n            mw.visitVarInsn(ALOAD, context.var(\"fied_ser\"));\n            mw.visitVarInsn(ALOAD, Context.serializer);\n            mw.visitVarInsn(ALOAD, context.var(\"object\"));\n            mw.visitVarInsn(ALOAD, Context.fieldName);\n            mw.visitVarInsn(ALOAD, 0);\n            mw.visitFieldInsn(GETFIELD, context.className, fieldInfo.name + \"_asm_fieldType\",\n                              \"Ljava/lang/reflect/Type;\");\n            mw.visitLdcInsn(fieldInfo.serialzeFeatures); // features\n            mw.visitMethodInsn(INVOKEINTERFACE, ObjectSerializer, \"write\", //\n                               \"(L\" + JSONSerializer + \";Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V\");\n\n            mw.visitLabel(instanceOfEnd_);\n            mw.visitJumpInsn(GOTO, classIfEnd_);\n        }\n\n        mw.visitLabel(classIfElse_);\n\n        mw.visitVarInsn(ALOAD, Context.serializer);\n        if (context.writeDirect) {\n            mw.visitVarInsn(ALOAD, context.var(\"object\"));\n        } else {\n            mw.visitVarInsn(ALOAD, Context.processValue);\n        }\n        if (format != null) {\n            mw.visitLdcInsn(format);\n            mw.visitMethodInsn(INVOKEVIRTUAL, JSONSerializer, \"writeWithFormat\",\n                               \"(Ljava/lang/Object;Ljava/lang/String;)V\");\n        } else {\n            mw.visitVarInsn(ALOAD, Context.fieldName);\n            if (fieldInfo.fieldType instanceof Class<?> //\n                && ((Class<?>) fieldInfo.fieldType).isPrimitive()) {\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONSerializer, \"writeWithFieldName\",\n                                   \"(Ljava/lang/Object;Ljava/lang/Object;)V\");\n            } else {\n                if (fieldInfo.fieldClass == String.class) {\n                    mw.visitLdcInsn(com.alibaba.fastjson.asm.Type.getType(desc(String.class)));\n                } else {\n                    mw.visitVarInsn(ALOAD, 0);\n                    mw.visitFieldInsn(GETFIELD, context.className, fieldInfo.name + \"_asm_fieldType\",\n                                      \"Ljava/lang/reflect/Type;\");\n                }\n                mw.visitLdcInsn(fieldInfo.serialzeFeatures);\n\n                mw.visitMethodInsn(INVOKEVIRTUAL, JSONSerializer, \"writeWithFieldName\",\n                                   \"(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V\");\n            }\n        }\n        mw.visitLabel(classIfEnd_);\n\n        _seperator(mw, context);\n    }\n\n    private void _before(MethodVisitor mw, Context context) {\n        mw.visitVarInsn(ALOAD, 0); // this\n        mw.visitVarInsn(ALOAD, Context.serializer);\n        mw.visitVarInsn(ALOAD, Context.obj);\n        mw.visitVarInsn(ILOAD, context.var(\"seperator\"));\n        mw.visitMethodInsn(INVOKEVIRTUAL, JavaBeanSerializer, \"writeBefore\",\n                           \"(L\" + JSONSerializer + \";Ljava/lang/Object;C)C\");\n        mw.visitVarInsn(ISTORE, context.var(\"seperator\"));\n    }\n\n    private void _after(MethodVisitor mw, Context context) {\n        mw.visitVarInsn(ALOAD, 0); // this\n        mw.visitVarInsn(ALOAD, Context.serializer);\n        mw.visitVarInsn(ALOAD, 2); // obj\n        mw.visitVarInsn(ILOAD, context.var(\"seperator\"));\n        mw.visitMethodInsn(INVOKEVIRTUAL, JavaBeanSerializer, \"writeAfter\",\n                           \"(L\" + JSONSerializer + \";Ljava/lang/Object;C)C\");\n        mw.visitVarInsn(ISTORE, context.var(\"seperator\"));\n    }\n\n    private void _notWriteDefault(MethodVisitor mw, FieldInfo property, Context context, Label _end) {\n        if (context.writeDirect) {\n            return;\n        }\n\n        Label elseLabel = new Label();\n\n        mw.visitVarInsn(ILOAD, context.var(\"notWriteDefaultValue\"));\n        mw.visitJumpInsn(IFEQ, elseLabel);\n\n        Class<?> propertyClass = property.fieldClass;\n        if (propertyClass == boolean.class) {\n            mw.visitVarInsn(ILOAD, context.var(\"boolean\"));\n            mw.visitJumpInsn(IFEQ, _end);\n        } else if (propertyClass == byte.class) {\n            mw.visitVarInsn(ILOAD, context.var(\"byte\"));\n            mw.visitJumpInsn(IFEQ, _end);\n        } else if (propertyClass == short.class) {\n            mw.visitVarInsn(ILOAD, context.var(\"short\"));\n            mw.visitJumpInsn(IFEQ, _end);\n        } else if (propertyClass == int.class) {\n            mw.visitVarInsn(ILOAD, context.var(\"int\"));\n            mw.visitJumpInsn(IFEQ, _end);\n        } else if (propertyClass == long.class) {\n            mw.visitVarInsn(LLOAD, context.var(\"long\"));\n            mw.visitInsn(LCONST_0);\n            mw.visitInsn(LCMP);\n            mw.visitJumpInsn(IFEQ, _end);\n        } else if (propertyClass == float.class) {\n            mw.visitVarInsn(FLOAD, context.var(\"float\"));\n            mw.visitInsn(FCONST_0);\n            mw.visitInsn(FCMPL);\n            mw.visitJumpInsn(IFEQ, _end);\n        } else if (propertyClass == double.class) {\n            mw.visitVarInsn(DLOAD, context.var(\"double\"));\n            mw.visitInsn(DCONST_0);\n            mw.visitInsn(DCMPL);\n            mw.visitJumpInsn(IFEQ, _end);\n        }\n\n        mw.visitLabel(elseLabel);\n    }\n\n    private void _apply(MethodVisitor mw, FieldInfo property, Context context) {\n        Class<?> propertyClass = property.fieldClass;\n\n        mw.visitVarInsn(ALOAD, 0); // this\n        mw.visitVarInsn(ALOAD, Context.serializer);\n        mw.visitVarInsn(ALOAD, Context.obj);\n        mw.visitVarInsn(ALOAD, Context.fieldName);\n\n        if (propertyClass == byte.class) {\n            mw.visitVarInsn(ILOAD, context.var(\"byte\"));\n            mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Byte\", \"valueOf\", \"(B)Ljava/lang/Byte;\");\n        } else if (propertyClass == short.class) {\n            mw.visitVarInsn(ILOAD, context.var(\"short\"));\n            mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Short\", \"valueOf\", \"(S)Ljava/lang/Short;\");\n        } else if (propertyClass == int.class) {\n            mw.visitVarInsn(ILOAD, context.var(\"int\"));\n            mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Integer\", \"valueOf\", \"(I)Ljava/lang/Integer;\");\n        } else if (propertyClass == char.class) {\n            mw.visitVarInsn(ILOAD, context.var(\"char\"));\n            mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Character\", \"valueOf\", \"(C)Ljava/lang/Character;\");\n        } else if (propertyClass == long.class) {\n            mw.visitVarInsn(LLOAD, context.var(\"long\", 2));\n            mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Long\", \"valueOf\", \"(J)Ljava/lang/Long;\");\n        } else if (propertyClass == float.class) {\n            mw.visitVarInsn(FLOAD, context.var(\"float\"));\n            mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Float\", \"valueOf\", \"(F)Ljava/lang/Float;\");\n        } else if (propertyClass == double.class) {\n            mw.visitVarInsn(DLOAD, context.var(\"double\", 2));\n            mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Double\", \"valueOf\", \"(D)Ljava/lang/Double;\");\n        } else if (propertyClass == boolean.class) {\n            mw.visitVarInsn(ILOAD, context.var(\"boolean\"));\n            mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Boolean\", \"valueOf\", \"(Z)Ljava/lang/Boolean;\");\n        } else if (propertyClass == BigDecimal.class) {\n            mw.visitVarInsn(ALOAD, context.var(\"decimal\"));\n        } else if (propertyClass == String.class) {\n            mw.visitVarInsn(ALOAD, context.var(\"string\"));\n        } else if (propertyClass.isEnum()) {\n            mw.visitVarInsn(ALOAD, context.var(\"enum\"));\n        } else if (List.class.isAssignableFrom(propertyClass)) {\n            mw.visitVarInsn(ALOAD, context.var(\"list\"));\n        } else {\n            mw.visitVarInsn(ALOAD, context.var(\"object\"));\n        }\n        mw.visitMethodInsn(INVOKEVIRTUAL, JavaBeanSerializer,\n                           \"apply\", \"(L\" + JSONSerializer\n                                    + \";Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Z\");\n    }\n\n    private void _processValue(MethodVisitor mw, FieldInfo fieldInfo, Context context, Label _end) {\n        Label processKeyElse_ = new Label();\n\n        Class<?> fieldClass = fieldInfo.fieldClass;\n\n        if (fieldClass.isPrimitive()) {\n            Label checkValueEnd_ = new Label();\n            mw.visitVarInsn(ILOAD, context.var(\"checkValue\"));\n            mw.visitJumpInsn(IFNE, checkValueEnd_);\n\n            mw.visitInsn(ACONST_NULL);\n            mw.visitInsn(DUP);\n            mw.visitVarInsn(ASTORE, Context.original);\n            mw.visitVarInsn(ASTORE, Context.processValue);\n            mw.visitJumpInsn(GOTO, processKeyElse_);\n\n            mw.visitLabel(checkValueEnd_);\n        }\n\n        mw.visitVarInsn(ALOAD, 0);\n        mw.visitVarInsn(ALOAD, Context.serializer);\n        mw.visitVarInsn(ALOAD, 0);\n        mw.visitLdcInsn(context.getFieldOrinal(fieldInfo.name));\n        mw.visitMethodInsn(INVOKEVIRTUAL, JavaBeanSerializer, \"getBeanContext\", \"(I)\" + desc(BeanContext.class));\n        mw.visitVarInsn(ALOAD, Context.obj);\n        mw.visitVarInsn(ALOAD, Context.fieldName);\n\n        String valueDesc = \"Ljava/lang/Object;\";\n        if (fieldClass == byte.class) {\n            mw.visitVarInsn(ILOAD, context.var(\"byte\"));\n            mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Byte\", \"valueOf\", \"(B)Ljava/lang/Byte;\");\n            mw.visitInsn(DUP);\n            mw.visitVarInsn(ASTORE, Context.original);\n        } else if (fieldClass == short.class) {\n            mw.visitVarInsn(ILOAD, context.var(\"short\"));\n            mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Short\", \"valueOf\", \"(S)Ljava/lang/Short;\");\n            mw.visitInsn(DUP);\n            mw.visitVarInsn(ASTORE, Context.original);\n        } else if (fieldClass == int.class) {\n            mw.visitVarInsn(ILOAD, context.var(\"int\"));\n            mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Integer\", \"valueOf\", \"(I)Ljava/lang/Integer;\");\n            mw.visitInsn(DUP);\n            mw.visitVarInsn(ASTORE, Context.original);\n        } else if (fieldClass == char.class) {\n            mw.visitVarInsn(ILOAD, context.var(\"char\"));\n            mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Character\", \"valueOf\", \"(C)Ljava/lang/Character;\");\n            mw.visitInsn(DUP);\n            mw.visitVarInsn(ASTORE, Context.original);\n        } else if (fieldClass == long.class) {\n            mw.visitVarInsn(LLOAD, context.var(\"long\", 2));\n            mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Long\", \"valueOf\", \"(J)Ljava/lang/Long;\");\n            mw.visitInsn(DUP);\n            mw.visitVarInsn(ASTORE, Context.original);\n        } else if (fieldClass == float.class) {\n            mw.visitVarInsn(FLOAD, context.var(\"float\"));\n            mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Float\", \"valueOf\", \"(F)Ljava/lang/Float;\");\n            mw.visitInsn(DUP);\n            mw.visitVarInsn(ASTORE, Context.original);\n        } else if (fieldClass == double.class) {\n            mw.visitVarInsn(DLOAD, context.var(\"double\", 2));\n            mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Double\", \"valueOf\", \"(D)Ljava/lang/Double;\");\n            mw.visitInsn(DUP);\n            mw.visitVarInsn(ASTORE, Context.original);\n        } else if (fieldClass == boolean.class) {\n            mw.visitVarInsn(ILOAD, context.var(\"boolean\"));\n            mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Boolean\", \"valueOf\", \"(Z)Ljava/lang/Boolean;\");\n            mw.visitInsn(DUP);\n            mw.visitVarInsn(ASTORE, Context.original);\n        } else if (fieldClass == BigDecimal.class) {\n            mw.visitVarInsn(ALOAD, context.var(\"decimal\"));\n            mw.visitVarInsn(ASTORE, Context.original);\n            mw.visitVarInsn(ALOAD, Context.original);\n        } else if (fieldClass == String.class) {\n            mw.visitVarInsn(ALOAD, context.var(\"string\"));\n            mw.visitVarInsn(ASTORE, Context.original);\n            mw.visitVarInsn(ALOAD, Context.original);\n        } else if (fieldClass.isEnum()) {\n            mw.visitVarInsn(ALOAD, context.var(\"enum\"));\n            mw.visitVarInsn(ASTORE, Context.original);\n            mw.visitVarInsn(ALOAD, Context.original);\n        } else if (List.class.isAssignableFrom(fieldClass)) {\n            mw.visitVarInsn(ALOAD, context.var(\"list\"));\n            mw.visitVarInsn(ASTORE, Context.original);\n            mw.visitVarInsn(ALOAD, Context.original);\n        } else {\n            mw.visitVarInsn(ALOAD, context.var(\"object\"));\n            mw.visitVarInsn(ASTORE, Context.original);\n            mw.visitVarInsn(ALOAD, Context.original);\n        }\n\n        mw.visitMethodInsn(INVOKEVIRTUAL, JavaBeanSerializer, \"processValue\",\n                           \"(L\" + JSONSerializer  + \";\" //\n                                                                          + desc(BeanContext.class) //\n                                                                          + \"Ljava/lang/Object;Ljava/lang/String;\" //\n                                                                          + valueDesc + \")Ljava/lang/Object;\");\n\n        mw.visitVarInsn(ASTORE, Context.processValue);\n\n        mw.visitVarInsn(ALOAD, Context.original);\n        mw.visitVarInsn(ALOAD, Context.processValue);\n        mw.visitJumpInsn(IF_ACMPEQ, processKeyElse_);\n        _writeObject(mw, fieldInfo, context, _end);\n        mw.visitJumpInsn(GOTO, _end);\n\n        mw.visitLabel(processKeyElse_);\n    }\n\n    private void _processKey(MethodVisitor mw, FieldInfo property, Context context) {\n        Label _else_processKey = new Label();\n\n        mw.visitVarInsn(ILOAD, context.var(\"hasNameFilters\"));\n        mw.visitJumpInsn(IFEQ, _else_processKey);\n\n        Class<?> propertyClass = property.fieldClass;\n\n        mw.visitVarInsn(ALOAD, 0);\n        mw.visitVarInsn(ALOAD, Context.serializer);\n        mw.visitVarInsn(ALOAD, Context.obj);\n        mw.visitVarInsn(ALOAD, Context.fieldName);\n\n        if (propertyClass == byte.class) {\n            mw.visitVarInsn(ILOAD, context.var(\"byte\"));\n            mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Byte\", \"valueOf\", \"(B)Ljava/lang/Byte;\");\n        } else if (propertyClass == short.class) {\n            mw.visitVarInsn(ILOAD, context.var(\"short\"));\n            mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Short\", \"valueOf\", \"(S)Ljava/lang/Short;\");\n        } else if (propertyClass == int.class) {\n            mw.visitVarInsn(ILOAD, context.var(\"int\"));\n            mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Integer\", \"valueOf\", \"(I)Ljava/lang/Integer;\");\n        } else if (propertyClass == char.class) {\n            mw.visitVarInsn(ILOAD, context.var(\"char\"));\n            mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Character\", \"valueOf\", \"(C)Ljava/lang/Character;\");\n        } else if (propertyClass == long.class) {\n            mw.visitVarInsn(LLOAD, context.var(\"long\", 2));\n            mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Long\", \"valueOf\", \"(J)Ljava/lang/Long;\");\n        } else if (propertyClass == float.class) {\n            mw.visitVarInsn(FLOAD, context.var(\"float\"));\n            mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Float\", \"valueOf\", \"(F)Ljava/lang/Float;\");\n        } else if (propertyClass == double.class) {\n            mw.visitVarInsn(DLOAD, context.var(\"double\", 2));\n            mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Double\", \"valueOf\", \"(D)Ljava/lang/Double;\");\n        } else if (propertyClass == boolean.class) {\n            mw.visitVarInsn(ILOAD, context.var(\"boolean\"));\n            mw.visitMethodInsn(INVOKESTATIC, \"java/lang/Boolean\", \"valueOf\", \"(Z)Ljava/lang/Boolean;\");\n        } else if (propertyClass == BigDecimal.class) {\n            mw.visitVarInsn(ALOAD, context.var(\"decimal\"));\n        } else if (propertyClass == String.class) {\n            mw.visitVarInsn(ALOAD, context.var(\"string\"));\n        } else if (propertyClass.isEnum()) {\n            mw.visitVarInsn(ALOAD, context.var(\"enum\"));\n        } else if (List.class.isAssignableFrom(propertyClass)) {\n            mw.visitVarInsn(ALOAD, context.var(\"list\"));\n        } else {\n            mw.visitVarInsn(ALOAD, context.var(\"object\"));\n        }\n\n        mw.visitMethodInsn(INVOKEVIRTUAL, JavaBeanSerializer,\n                           \"processKey\", \"(L\" + JSONSerializer\n                                         + \";Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/String;\");\n\n        mw.visitVarInsn(ASTORE, Context.fieldName);\n\n        mw.visitLabel(_else_processKey);\n    }\n\n    private void _if_write_null(MethodVisitor mw, FieldInfo fieldInfo, Context context) {\n        Class<?> propertyClass = fieldInfo.fieldClass;\n\n        Label _if = new Label();\n        Label _else = new Label();\n        Label _write_null = new Label();\n        Label _end_if = new Label();\n\n        mw.visitLabel(_if);\n\n        JSONField annotation = fieldInfo.getAnnotation();\n        int features = 0;\n        if (annotation != null) {\n            features = SerializerFeature.of(annotation.serialzeFeatures());\n        }\n        JSONType jsonType = context.beanInfo.jsonType;\n        if (jsonType != null) {\n            features |= SerializerFeature.of(jsonType.serialzeFeatures());\n        }\n\n        int writeNullFeatures;\n        if (propertyClass == String.class) {\n            writeNullFeatures = SerializerFeature.WriteMapNullValue.getMask()\n                    | SerializerFeature.WriteNullStringAsEmpty.getMask();\n        } else if (Number.class.isAssignableFrom(propertyClass)) {\n            writeNullFeatures = SerializerFeature.WriteMapNullValue.getMask()\n                    | SerializerFeature.WriteNullNumberAsZero.getMask();\n        } else if (Collection.class.isAssignableFrom(propertyClass)) {\n            writeNullFeatures = SerializerFeature.WriteMapNullValue.getMask()\n                    | SerializerFeature.WriteNullListAsEmpty.getMask();\n        } else if (Boolean.class == propertyClass) {\n            writeNullFeatures = SerializerFeature.WriteMapNullValue.getMask()\n                    | SerializerFeature.WriteNullBooleanAsFalse.getMask();\n        } else {\n            writeNullFeatures = SerializerFeature.WRITE_MAP_NULL_FEATURES;\n        }\n\n        if ((features & writeNullFeatures) == 0) {\n            mw.visitVarInsn(ALOAD, context.var(\"out\"));\n            mw.visitLdcInsn(writeNullFeatures);\n            mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"isEnabled\", \"(I)Z\");\n            mw.visitJumpInsn(IFEQ, _else);\n        }\n\n        mw.visitLabel(_write_null);\n\n        mw.visitVarInsn(ALOAD, context.var(\"out\"));\n        mw.visitVarInsn(ILOAD, context.var(\"seperator\"));\n        mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"write\", \"(I)V\");\n\n        _writeFieldName(mw, context);\n\n        mw.visitVarInsn(ALOAD, context.var(\"out\"));\n        mw.visitLdcInsn(features);\n        // features\n\n        if (propertyClass == String.class || propertyClass == Character.class) {\n            mw.visitLdcInsn(SerializerFeature.WriteNullStringAsEmpty.mask);\n        } else if (Number.class.isAssignableFrom(propertyClass)) {\n            mw.visitLdcInsn(SerializerFeature.WriteNullNumberAsZero.mask);\n        } else if (propertyClass == Boolean.class) {\n            mw.visitLdcInsn(SerializerFeature.WriteNullBooleanAsFalse.mask);\n        } else if (Collection.class.isAssignableFrom(propertyClass) || propertyClass.isArray()) {\n            mw.visitLdcInsn(SerializerFeature.WriteNullListAsEmpty.mask);\n        } else {\n            mw.visitLdcInsn(0);\n        }\n        mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"writeNull\", \"(II)V\");\n\n        // seperator = ',';\n        _seperator(mw, context);\n\n        mw.visitJumpInsn(GOTO, _end_if);\n\n        mw.visitLabel(_else);\n\n        mw.visitLabel(_end_if);\n    }\n\n    private void _writeFieldName(MethodVisitor mw, Context context) {\n        if (context.writeDirect) {\n            mw.visitVarInsn(ALOAD, context.var(\"out\"));\n            mw.visitVarInsn(ALOAD, Context.fieldName);\n            mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"writeFieldNameDirect\", \"(Ljava/lang/String;)V\");\n        } else {\n            mw.visitVarInsn(ALOAD, context.var(\"out\"));\n            mw.visitVarInsn(ALOAD, Context.fieldName);\n            mw.visitInsn(ICONST_0);\n            mw.visitMethodInsn(INVOKEVIRTUAL, SerializeWriter, \"writeFieldName\", \"(Ljava/lang/String;Z)V\");\n        }\n    }\n\n    private void _seperator(MethodVisitor mw, Context context) {\n        mw.visitVarInsn(BIPUSH, ',');\n        mw.visitVarInsn(ISTORE, context.var(\"seperator\"));\n    }\n\n    private void _getListFieldItemSer(Context context, MethodVisitor mw, FieldInfo fieldInfo, Class<?> itemType) {\n        Label notNull_ = new Label();\n        mw.visitVarInsn(ALOAD, 0);\n        mw.visitFieldInsn(GETFIELD, context.className, fieldInfo.name + \"_asm_list_item_ser_\",\n                          ObjectSerializer_desc);\n        mw.visitJumpInsn(IFNONNULL, notNull_);\n\n        mw.visitVarInsn(ALOAD, 0); // this\n        mw.visitVarInsn(ALOAD, Context.serializer);\n        mw.visitLdcInsn(com.alibaba.fastjson.asm.Type.getType(desc(itemType)));\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONSerializer, \"getObjectWriter\",\n                           \"(Ljava/lang/Class;)\" + ObjectSerializer_desc);\n\n        mw.visitFieldInsn(PUTFIELD, context.className, fieldInfo.name + \"_asm_list_item_ser_\",\n                          ObjectSerializer_desc);\n\n        mw.visitLabel(notNull_);\n\n        mw.visitVarInsn(ALOAD, 0);\n        mw.visitFieldInsn(GETFIELD, context.className, fieldInfo.name + \"_asm_list_item_ser_\",\n                          ObjectSerializer_desc);\n    }\n\n    private void _getFieldSer(Context context, MethodVisitor mw, FieldInfo fieldInfo) {\n        Label notNull_ = new Label();\n        mw.visitVarInsn(ALOAD, 0);\n        mw.visitFieldInsn(GETFIELD, context.className, fieldInfo.name + \"_asm_ser_\", ObjectSerializer_desc);\n        mw.visitJumpInsn(IFNONNULL, notNull_);\n\n        mw.visitVarInsn(ALOAD, 0); // this\n        mw.visitVarInsn(ALOAD, Context.serializer);\n        mw.visitLdcInsn(com.alibaba.fastjson.asm.Type.getType(desc(fieldInfo.fieldClass)));\n        mw.visitMethodInsn(INVOKEVIRTUAL, JSONSerializer, \"getObjectWriter\",\n                           \"(Ljava/lang/Class;)\" + ObjectSerializer_desc);\n\n        mw.visitFieldInsn(PUTFIELD, context.className, fieldInfo.name + \"_asm_ser_\", ObjectSerializer_desc);\n\n        mw.visitLabel(notNull_);\n\n        mw.visitVarInsn(ALOAD, 0);\n        mw.visitFieldInsn(GETFIELD, context.className, fieldInfo.name + \"_asm_ser_\", ObjectSerializer_desc);\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/AdderSerializer.java",
    "content": "package com.alibaba.fastjson.serializer;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\nimport java.util.concurrent.atomic.DoubleAdder;\nimport java.util.concurrent.atomic.LongAdder;\n\n/**\n * Created by wenshao on 14/03/2017.\n */\npublic class AdderSerializer implements ObjectSerializer {\n    public static final AdderSerializer instance = new AdderSerializer();\n\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\n        SerializeWriter out = serializer.out;\n        if (object instanceof LongAdder) {\n            out.writeFieldValue('{', \"value\", ((LongAdder) object).longValue());\n            out.write('}');\n        } else  if (object instanceof DoubleAdder) {\n            out.writeFieldValue('{', \"value\", ((DoubleAdder) object).doubleValue());\n            out.write('}');\n        }\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/AfterFilter.java",
    "content": "package com.alibaba.fastjson.serializer;\n\n/**\n * @since 1.1.35\n */\npublic abstract class AfterFilter implements SerializeFilter {\n\n    private static final ThreadLocal<JSONSerializer> serializerLocal = new ThreadLocal<JSONSerializer>();\n    private static final ThreadLocal<Character>      seperatorLocal  = new ThreadLocal<Character>();\n\n    private final static Character                   COMMA           = Character.valueOf(',');\n\n    final char writeAfter(JSONSerializer serializer, Object object, char seperator) {\n        JSONSerializer last = serializerLocal.get();\n        serializerLocal.set(serializer);\n        seperatorLocal.set(seperator);\n        writeAfter(object);\n        serializerLocal.set(last);\n        return seperatorLocal.get();\n    }\n\n    protected final void writeKeyValue(String key, Object value) {\n        JSONSerializer serializer = serializerLocal.get();\n        char seperator = seperatorLocal.get();\n\n        boolean ref = serializer.containsReference(value);\n        serializer.writeKeyValue(seperator, key, value);\n        if (!ref && serializer.references != null) {\n            serializer.references.remove(value);\n        }\n        if (seperator != ',') {\n            seperatorLocal.set(COMMA);\n        }\n    }\n\n    public abstract void writeAfter(Object object);\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/AnnotationSerializer.java",
    "content": "package com.alibaba.fastjson.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONObject;\n\nimport java.io.IOException;\nimport java.lang.reflect.InvocationTargetException;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Type;\nimport java.util.Iterator;\nimport java.util.Map;\n\n/**\n * Created by wenshao on 10/05/2017.\n */\npublic class AnnotationSerializer implements ObjectSerializer {\n    private static volatile Class sun_AnnotationType = null;\n    private static volatile boolean sun_AnnotationType_error = false;\n    private static volatile Method sun_AnnotationType_getInstance = null;\n    private static volatile Method sun_AnnotationType_members = null;\n\n    public static AnnotationSerializer instance = new AnnotationSerializer();\n\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\n        Class objClass = object.getClass();\n        Class[] interfaces = objClass.getInterfaces();\n        if (interfaces.length == 1 && interfaces[0].isAnnotation()) {\n            Class annotationClass = interfaces[0];\n\n            if (sun_AnnotationType == null && !sun_AnnotationType_error) {\n                try {\n                    sun_AnnotationType = Class.forName(\"sun.reflect.annotation.AnnotationType\");\n                } catch (Throwable ex) {\n                    sun_AnnotationType_error = true;\n                    throw new JSONException(\"not support Type Annotation.\", ex);\n                }\n            }\n\n            if (sun_AnnotationType == null) {\n                throw new JSONException(\"not support Type Annotation.\");\n            }\n\n            if (sun_AnnotationType_getInstance == null && !sun_AnnotationType_error) {\n                try {\n                    sun_AnnotationType_getInstance = sun_AnnotationType.getMethod(\"getInstance\", Class.class);\n                } catch (Throwable ex) {\n                    sun_AnnotationType_error = true;\n                    throw new JSONException(\"not support Type Annotation.\", ex);\n                }\n            }\n\n            if (sun_AnnotationType_members == null && !sun_AnnotationType_error) {\n                try {\n                    sun_AnnotationType_members = sun_AnnotationType.getMethod(\"members\");\n                } catch (Throwable ex) {\n                    sun_AnnotationType_error = true;\n                    throw new JSONException(\"not support Type Annotation.\", ex);\n                }\n            }\n\n            if (sun_AnnotationType_getInstance == null || sun_AnnotationType_error) {\n                throw new JSONException(\"not support Type Annotation.\");\n            }\n\n            Object type;\n            try {\n                type = sun_AnnotationType_getInstance.invoke(null, annotationClass);\n            } catch (Throwable ex) {\n                sun_AnnotationType_error = true;\n                throw new JSONException(\"not support Type Annotation.\", ex);\n            }\n\n            Map<String, Method> members;\n            try {\n                members = (Map<String, Method>) sun_AnnotationType_members.invoke(type);\n            } catch (Throwable ex) {\n                sun_AnnotationType_error = true;\n                throw new JSONException(\"not support Type Annotation.\", ex);\n            }\n\n            JSONObject json = new JSONObject(members.size());\n            Iterator<Map.Entry<String, Method>> iterator = members.entrySet().iterator();\n            Map.Entry<String, Method> entry;\n            Object val = null;\n            while (iterator.hasNext()) {\n                entry = iterator.next();\n                try {\n                    val = entry.getValue().invoke(object);\n                } catch (IllegalAccessException e) {\n                    // skip\n                } catch (InvocationTargetException e) {\n                    // skip\n                }\n                json.put(entry.getKey(), JSON.toJSON(val));\n            }\n            serializer.write(json);\n            return;\n        }\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/AppendableSerializer.java",
    "content": "package com.alibaba.fastjson.serializer;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\n\npublic class AppendableSerializer implements ObjectSerializer {\n\n    public final static AppendableSerializer instance = new AppendableSerializer();\n\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\n        if (object == null) {\n            SerializeWriter out = serializer.out;\n            out.writeNull(SerializerFeature.WriteNullStringAsEmpty);\n            return;\n        }\n\n        serializer.write(object.toString());\n    }\n\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/ArraySerializer.java",
    "content": "/*\r\n * Copyright 1999-2018 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.serializer;\r\n\r\nimport java.io.IOException;\r\nimport java.lang.reflect.Type;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class ArraySerializer implements ObjectSerializer {\r\n\r\n\tprivate final Class<?> componentType;\r\n    private final ObjectSerializer compObjectSerializer;\r\n\r\n    public ArraySerializer(Class<?> componentType, ObjectSerializer compObjectSerializer){\r\n        this.componentType = componentType;\r\n        this.compObjectSerializer = compObjectSerializer;\r\n    }\r\n\r\n    public final void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features)\r\n                                                                                                       throws IOException {\r\n        SerializeWriter out = serializer.out;\r\n\r\n        if (object == null) {\r\n            out.writeNull(SerializerFeature.WriteNullListAsEmpty);\r\n            return;\r\n        }\r\n\r\n        Object[] array = (Object[]) object;\r\n        int size = array.length;\r\n\r\n        SerialContext context = serializer.context;\r\n        serializer.setContext(context, object, fieldName, 0);\r\n\r\n        try {\r\n            out.append('[');\r\n            for (int i = 0; i < size; ++i) {\r\n            \tif (i != 0) {\r\n            \t\tout.append(',');\r\n            \t}\r\n                Object item = array[i];\r\n\r\n                if (item == null) {\r\n                    if (out.isEnabled(SerializerFeature.WriteNullStringAsEmpty) && object instanceof String[]) {\r\n                        out.writeString(\"\");\r\n                    } else {\r\n                        out.append(\"null\");\r\n                    }\r\n                } else if (item.getClass() == componentType) {\r\n                \tcompObjectSerializer.write(serializer, item, i, null, 0);\r\n                } else {\r\n                \tObjectSerializer itemSerializer = serializer.getObjectWriter(item.getClass());\r\n                \titemSerializer.write(serializer, item, i, null, 0);\r\n                }\r\n            }\r\n            out.append(']');\r\n        } finally {\r\n            serializer.context = context;\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/AtomicCodec.java",
    "content": "/*\r\n * Copyright 1999-2018 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.serializer;\r\n\r\nimport java.io.IOException;\r\nimport java.lang.reflect.Type;\r\nimport java.util.concurrent.atomic.AtomicBoolean;\r\nimport java.util.concurrent.atomic.AtomicInteger;\r\nimport java.util.concurrent.atomic.AtomicIntegerArray;\r\nimport java.util.concurrent.atomic.AtomicLong;\r\nimport java.util.concurrent.atomic.AtomicLongArray;\r\n\r\nimport com.alibaba.fastjson.JSONArray;\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.JSONToken;\r\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class AtomicCodec implements ObjectSerializer, ObjectDeserializer {\r\n\r\n    public final static AtomicCodec instance = new AtomicCodec();\r\n\r\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\r\n        SerializeWriter out = serializer.out;\r\n        \r\n        if (object instanceof AtomicInteger) {\r\n            AtomicInteger val = (AtomicInteger) object;\r\n            out.writeInt(val.get());\r\n            return;\r\n        }\r\n        \r\n        if (object instanceof AtomicLong) {\r\n            AtomicLong val = (AtomicLong) object;\r\n            out.writeLong(val.get());\r\n            return;\r\n        }\r\n        \r\n        if (object instanceof AtomicBoolean) {\r\n            AtomicBoolean val = (AtomicBoolean) object;\r\n            out.append(val.get() ? \"true\" : \"false\");\r\n            return;\r\n        }\r\n\r\n        if (object == null) {\r\n            out.writeNull(SerializerFeature.WriteNullListAsEmpty);\r\n            return;\r\n        }\r\n\r\n        if (object instanceof AtomicIntegerArray) {\r\n            AtomicIntegerArray array = (AtomicIntegerArray) object;\r\n            int len = array.length();\r\n            out.write('[');\r\n            for (int i = 0; i < len; ++i) {\r\n                int val = array.get(i);\r\n                if (i != 0) {\r\n                    out.write(',');\r\n                }\r\n                out.writeInt(val);\r\n            }\r\n            out.write(']');\r\n            \r\n            return;\r\n        }\r\n        \r\n        AtomicLongArray array = (AtomicLongArray) object;\r\n        int len = array.length();\r\n        out.write('[');\r\n        for (int i = 0; i < len; ++i) {\r\n            long val = array.get(i);\r\n            if (i != 0) {\r\n                out.write(',');\r\n            }\r\n            out.writeLong(val);\r\n        }\r\n        out.write(']');\r\n    }\r\n\r\n    @SuppressWarnings(\"unchecked\")\r\n    public <T> T deserialze(DefaultJSONParser parser, Type clazz, Object fieldName) {\r\n        if (parser.lexer.token() == JSONToken.NULL) {\r\n            parser.lexer.nextToken(JSONToken.COMMA);\r\n            return null;\r\n        }\r\n\r\n        JSONArray array = new JSONArray();\r\n        parser.parseArray(array);\r\n\r\n        if (clazz == AtomicIntegerArray.class) {\r\n            AtomicIntegerArray atomicArray = new AtomicIntegerArray(array.size());\r\n            for (int i = 0; i < array.size(); ++i) {\r\n                atomicArray.set(i, array.getInteger(i));\r\n            }\r\n    \r\n            return (T) atomicArray;\r\n        }\r\n        \r\n        AtomicLongArray atomicArray = new AtomicLongArray(array.size());\r\n        for (int i = 0; i < array.size(); ++i) {\r\n            atomicArray.set(i, array.getLong(i));\r\n        }\r\n\r\n        return (T) atomicArray;\r\n    }\r\n\r\n    public int getFastMatchToken() {\r\n        return JSONToken.LBRACKET;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/AutowiredObjectSerializer.java",
    "content": "/*\r\n * Copyright 1999-2018 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.serializer;\r\n\r\nimport java.lang.reflect.Type;\r\nimport java.util.Set;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic interface AutowiredObjectSerializer extends ObjectSerializer {\r\n    Set<Type> getAutowiredFor();\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/AwtCodec.java",
    "content": "package com.alibaba.fastjson.serializer;\n\nimport java.awt.Color;\nimport java.awt.Font;\nimport java.awt.Point;\nimport java.awt.Rectangle;\nimport java.io.IOException;\nimport java.lang.reflect.Type;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONLexer;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.ParseContext;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\n\npublic class AwtCodec implements ObjectSerializer, ObjectDeserializer {\n\n    public final static AwtCodec instance = new AwtCodec();\n    \n    public static boolean support(Class<?> clazz) {\n        return clazz == Point.class //\n               || clazz == Rectangle.class //\n               || clazz == Font.class //\n               || clazz == Color.class //\n        ;\n    }\n\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType,\n                      int features) throws IOException {\n        SerializeWriter out = serializer.out;\n\n        if (object == null) {\n            out.writeNull();\n            return;\n        }\n\n        char sep = '{';\n\n        if (object instanceof Point) {\n            Point font = (Point) object;\n            \n            sep = writeClassName(out, Point.class, sep);\n            \n            out.writeFieldValue(sep, \"x\", font.x);\n            out.writeFieldValue(',', \"y\", font.y);\n        } else if (object instanceof Font) {\n            Font font = (Font) object;\n            \n            sep = writeClassName(out, Font.class, sep);\n            \n            out.writeFieldValue(sep, \"name\", font.getName());\n            out.writeFieldValue(',', \"style\", font.getStyle());\n            out.writeFieldValue(',', \"size\", font.getSize());\n        } else if (object instanceof Rectangle) {\n            Rectangle rectangle = (Rectangle) object;\n            \n            sep = writeClassName(out, Rectangle.class, sep);\n            \n            out.writeFieldValue(sep, \"x\", rectangle.x);\n            out.writeFieldValue(',', \"y\", rectangle.y);\n            out.writeFieldValue(',', \"width\", rectangle.width);\n            out.writeFieldValue(',', \"height\", rectangle.height);\n        } else if (object instanceof Color) {\n            Color color = (Color) object;\n            \n            sep = writeClassName(out, Color.class, sep);\n            \n            out.writeFieldValue(sep, \"r\", color.getRed());\n            out.writeFieldValue(',', \"g\", color.getGreen());\n            out.writeFieldValue(',', \"b\", color.getBlue());\n            if (color.getAlpha() > 0) {\n                out.writeFieldValue(',', \"alpha\", color.getAlpha());\n            }\n        } else {\n            throw new JSONException(\"not support awt class : \" + object.getClass().getName());\n        }\n\n        out.write('}');\n\n    }\n\n    protected char writeClassName(SerializeWriter out, Class<?> clazz, char sep) {\n        if (out.isEnabled(SerializerFeature.WriteClassName)) {\n            out.write('{');\n            out.writeFieldName(JSON.DEFAULT_TYPE_KEY);\n            out.writeString(clazz.getName());\n            sep = ',';\n        }\n        return sep;\n    }\n\n    @SuppressWarnings(\"unchecked\")\n\n    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n        JSONLexer lexer = parser.lexer;\n\n        if (lexer.token() == JSONToken.NULL) {\n            lexer.nextToken(JSONToken.COMMA);\n            return null;\n        }\n\n        if (lexer.token() != JSONToken.LBRACE && lexer.token() != JSONToken.COMMA) {\n            throw new JSONException(\"syntax error\");\n        }\n        lexer.nextToken();\n\n        T obj;\n        if (type == Point.class) {\n            obj = (T) parsePoint(parser, fieldName);\n        } else if (type == Rectangle.class) {\n            obj = (T) parseRectangle(parser);\n        } else if (type == Color.class) {\n            obj = (T) parseColor(parser);\n        } else if (type == Font.class) {\n            obj = (T) parseFont(parser);\n        } else {\n            throw new JSONException(\"not support awt class : \" + type);\n        }\n\n        ParseContext context = parser.getContext();\n        parser.setContext(obj, fieldName);\n        parser.setContext(context);\n\n        return obj;\n    }\n    \n    protected Font parseFont(DefaultJSONParser parser) {\n        JSONLexer lexer = parser.lexer;\n        \n        int size = 0, style = 0;\n        String name = null;\n        for (;;) {\n            if (lexer.token() == JSONToken.RBRACE) {\n                lexer.nextToken();\n                break;\n            }\n\n            String key;\n            if (lexer.token() == JSONToken.LITERAL_STRING) {\n                key = lexer.stringVal();\n                lexer.nextTokenWithColon(JSONToken.LITERAL_INT);\n            } else {\n                throw new JSONException(\"syntax error\");\n            }\n\n\n            if (key.equalsIgnoreCase(\"name\")) {\n                if (lexer.token() == JSONToken.LITERAL_STRING) {\n                    name = lexer.stringVal();\n                    lexer.nextToken();\n                } else {\n                    throw new JSONException(\"syntax error\");\n                }\n            } else if (key.equalsIgnoreCase(\"style\")) {\n                if (lexer.token() == JSONToken.LITERAL_INT) {\n                    style = lexer.intValue();\n                    lexer.nextToken();\n                } else {\n                    throw new JSONException(\"syntax error\");\n                }\n            } else if (key.equalsIgnoreCase(\"size\")) {\n                if (lexer.token() == JSONToken.LITERAL_INT) {\n                    size = lexer.intValue();\n                    lexer.nextToken();\n                } else {\n                    throw new JSONException(\"syntax error\");\n                }\n            } else {\n                throw new JSONException(\"syntax error, \" + key);\n            }\n\n            if (lexer.token() == JSONToken.COMMA) {\n                lexer.nextToken(JSONToken.LITERAL_STRING);\n            }\n        }\n\n        return new Font(name, style, size);\n    }\n    \n    protected Color parseColor(DefaultJSONParser parser) {\n        JSONLexer lexer = parser.lexer;\n        \n        int r = 0, g = 0, b = 0, alpha = 0;\n        for (;;) {\n            if (lexer.token() == JSONToken.RBRACE) {\n                lexer.nextToken();\n                break;\n            }\n\n            String key;\n            if (lexer.token() == JSONToken.LITERAL_STRING) {\n                key = lexer.stringVal();\n                lexer.nextTokenWithColon(JSONToken.LITERAL_INT);\n            } else {\n                throw new JSONException(\"syntax error\");\n            }\n\n            int val;\n            if (lexer.token() == JSONToken.LITERAL_INT) {\n                val = lexer.intValue();\n                lexer.nextToken();\n            } else {\n                throw new JSONException(\"syntax error\");\n            }\n\n            if (key.equalsIgnoreCase(\"r\")) {\n                r = val;\n            } else if (key.equalsIgnoreCase(\"g\")) {\n                g = val;\n            } else if (key.equalsIgnoreCase(\"b\")) {\n                b = val;\n            } else if (key.equalsIgnoreCase(\"alpha\")) {\n                alpha = val;\n            } else {\n                throw new JSONException(\"syntax error, \" + key);\n            }\n\n            if (lexer.token() == JSONToken.COMMA) {\n                lexer.nextToken(JSONToken.LITERAL_STRING);\n            }\n        }\n\n        return new Color(r, g, b, alpha);\n    }\n    \n    protected Rectangle parseRectangle(DefaultJSONParser parser) {\n        JSONLexer lexer = parser.lexer;\n        \n        int x = 0, y = 0, width = 0, height = 0;\n        for (;;) {\n            if (lexer.token() == JSONToken.RBRACE) {\n                lexer.nextToken();\n                break;\n            }\n\n            String key;\n            if (lexer.token() == JSONToken.LITERAL_STRING) {\n                key = lexer.stringVal();\n                lexer.nextTokenWithColon(JSONToken.LITERAL_INT);\n            } else {\n                throw new JSONException(\"syntax error\");\n            }\n\n            int val;\n            int token = lexer.token();\n            if (token == JSONToken.LITERAL_INT) {\n                val = lexer.intValue();\n                lexer.nextToken();\n            } else if (token == JSONToken.LITERAL_FLOAT) {\n                val = (int) lexer.floatValue();\n                lexer.nextToken();\n            } else {\n                throw new JSONException(\"syntax error\");\n            }\n\n            if (key.equalsIgnoreCase(\"x\")) {\n                x = val;\n            } else if (key.equalsIgnoreCase(\"y\")) {\n                y = val;\n            } else if (key.equalsIgnoreCase(\"width\")) {\n                width = val;\n            } else if (key.equalsIgnoreCase(\"height\")) {\n                height = val;\n            } else {\n                throw new JSONException(\"syntax error, \" + key);\n            }\n\n            if (lexer.token() == JSONToken.COMMA) {\n                lexer.nextToken(JSONToken.LITERAL_STRING);\n            }\n        }\n\n        return new Rectangle(x, y, width, height);\n    }\n\n    protected Point parsePoint(DefaultJSONParser parser, Object fieldName) {\n        JSONLexer lexer = parser.lexer;\n        \n        int x = 0, y = 0;\n        for (;;) {\n            if (lexer.token() == JSONToken.RBRACE) {\n                lexer.nextToken();\n                break;\n            }\n\n            String key;\n            if (lexer.token() == JSONToken.LITERAL_STRING) {\n                key = lexer.stringVal();\n\n                if (JSON.DEFAULT_TYPE_KEY.equals(key)) {\n                    parser.acceptType(\"java.awt.Point\");\n                    continue;\n                }\n\n                if (\"$ref\".equals(key)) {\n                    return (Point) parseRef(parser, fieldName);\n                }\n\n                lexer.nextTokenWithColon(JSONToken.LITERAL_INT);\n            } else {\n                throw new JSONException(\"syntax error\");\n            }\n\n            int token = lexer.token();\n            int val;\n            if (token == JSONToken.LITERAL_INT) {\n                val = lexer.intValue();\n                lexer.nextToken();\n            } else if(token == JSONToken.LITERAL_FLOAT) {\n                val = (int) lexer.floatValue();\n                lexer.nextToken();\n            } else {\n                throw new JSONException(\"syntax error : \" + lexer.tokenName());\n            }\n\n            if (key.equalsIgnoreCase(\"x\")) {\n                x = val;\n            } else if (key.equalsIgnoreCase(\"y\")) {\n                y = val;\n            } else {\n                throw new JSONException(\"syntax error, \" + key);\n            }\n\n            if (lexer.token() == JSONToken.COMMA) {\n                lexer.nextToken(JSONToken.LITERAL_STRING);\n            }\n        }\n\n        return new Point(x, y);\n    }\n\n    private Object parseRef(DefaultJSONParser parser, Object fieldName) {\n        JSONLexer lexer = parser.getLexer();\n        lexer.nextTokenWithColon(JSONToken.LITERAL_STRING);\n        String ref = lexer.stringVal();\n        parser.setContext(parser.getContext(), fieldName);\n        parser.addResolveTask(new DefaultJSONParser.ResolveTask(parser.getContext(), ref));\n        parser.popContext();\n        parser.setResolveStatus(DefaultJSONParser.NeedToResolve);\n        lexer.nextToken(JSONToken.RBRACE);\n        parser.accept(JSONToken.RBRACE);\n        return null;\n    }\n\n    public int getFastMatchToken() {\n        return JSONToken.LBRACE;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/BeanContext.java",
    "content": "package com.alibaba.fastjson.serializer;\n\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Field;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Type;\n\nimport com.alibaba.fastjson.util.FieldInfo;\n\n/**\n * @since 1.2.9\n *\n */\npublic final class BeanContext {\n\n    private final Class<?>  beanClass;\n    private final FieldInfo fieldInfo;\n    private final String format;\n\n    public BeanContext(Class<?> beanClass, FieldInfo fieldInfo){\n        this.beanClass = beanClass;\n        this.fieldInfo = fieldInfo;\n        this.format = fieldInfo.getFormat();\n    }\n\n    public Class<?> getBeanClass() {\n        return beanClass;\n    }\n\n    public Method getMethod() {\n        return fieldInfo.method;\n    }\n\n    public Field getField() {\n        return fieldInfo.field;\n    }\n    \n    public String getName() {\n        return fieldInfo.name;\n    }\n    \n    public String getLabel() {\n        return fieldInfo.label;\n    }\n    \n    public Class<?> getFieldClass() {\n        return fieldInfo.fieldClass;\n    }\n    \n    public Type getFieldType() {\n        return fieldInfo.fieldType;\n    }\n    \n    public int getFeatures() {\n        return fieldInfo.serialzeFeatures;\n    }\n    \n    public boolean isJsonDirect() {\n        return this.fieldInfo.jsonDirect;\n    }\n\n    public <T extends Annotation> T getAnnation(Class<T> annotationClass) {\n        return fieldInfo.getAnnation(annotationClass);\n    }\n    \n    public String getFormat() {\n        return format;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/BeforeFilter.java",
    "content": "package com.alibaba.fastjson.serializer;\n\npublic abstract class BeforeFilter implements SerializeFilter {\n\n    private static final ThreadLocal<JSONSerializer> serializerLocal = new ThreadLocal<JSONSerializer>();\n    private static final ThreadLocal<Character>      seperatorLocal  = new ThreadLocal<Character>();\n\n    private final static Character                   COMMA           = Character.valueOf(',');\n\n    final char writeBefore(JSONSerializer serializer, Object object, char seperator) {\n        JSONSerializer last = serializerLocal.get();\n        serializerLocal.set(serializer);\n        seperatorLocal.set(seperator);\n        writeBefore(object);\n        serializerLocal.set(last);\n        return seperatorLocal.get();\n    }\n\n    protected final void writeKeyValue(String key, Object value) {\n        JSONSerializer serializer = serializerLocal.get();\n        char seperator = seperatorLocal.get();\n\n        boolean ref = serializer.references.containsKey(value);\n        serializer.writeKeyValue(seperator, key, value);\n        if (!ref) {\n            serializer.references.remove(value);\n        }\n\n        if (seperator != ',') {\n            seperatorLocal.set(COMMA);\n        }\n    }\n\n    public abstract void writeBefore(Object object);\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/BigDecimalCodec.java",
    "content": "/*\r\n * Copyright 1999-2018 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.serializer;\r\n\r\nimport java.io.IOException;\r\nimport java.lang.reflect.Type;\r\nimport java.math.BigDecimal;\r\n\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.JSONLexer;\r\nimport com.alibaba.fastjson.parser.JSONToken;\r\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\r\nimport com.alibaba.fastjson.util.TypeUtils;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class BigDecimalCodec implements ObjectSerializer, ObjectDeserializer {\r\n    final static BigDecimal LOW = BigDecimal.valueOf(-9007199254740991L);\r\n    final static BigDecimal HIGH = BigDecimal.valueOf(9007199254740991L);\r\n\r\n    public final static BigDecimalCodec instance = new BigDecimalCodec();\r\n\r\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\r\n        SerializeWriter out = serializer.out;\r\n\r\n        if (object == null) {\r\n            out.writeNull(SerializerFeature.WriteNullNumberAsZero);\r\n        } else {\r\n            BigDecimal val = (BigDecimal) object;\r\n            int scale = val.scale();\r\n\r\n            String outText;\r\n            if (SerializerFeature.isEnabled(features, out.features, SerializerFeature.WriteBigDecimalAsPlain)\r\n                    && scale >= -100 && scale < 100) {\r\n                outText = val.toPlainString();\r\n            } else {\r\n                outText = val.toString();\r\n            }\r\n\r\n            if (scale == 0) {\r\n                if (outText.length() >= 16\r\n                        && SerializerFeature.isEnabled(features, out.features, SerializerFeature.BrowserCompatible)\r\n                        && (val.compareTo(LOW) < 0\r\n                        || val.compareTo(HIGH) > 0))\r\n                {\r\n                    out.writeString(outText);\r\n                    return;\r\n                }\r\n            }\r\n\r\n            out.write(outText);\r\n\r\n            if (out.isEnabled(SerializerFeature.WriteClassName) && fieldType != BigDecimal.class && val.scale() == 0) {\r\n                out.write('.');\r\n            }\r\n        }\r\n    }\r\n\r\n    @SuppressWarnings(\"unchecked\")\r\n    public <T> T deserialze(DefaultJSONParser parser, Type clazz, Object fieldName) {\r\n        try {\r\n            return (T) deserialze(parser);\r\n        } catch (Exception ex) {\r\n            throw new JSONException(\"parseDecimal error, field : \" + fieldName, ex);\r\n        }\r\n    }\r\n\r\n    @SuppressWarnings(\"unchecked\")\r\n    public static <T> T deserialze(DefaultJSONParser parser) {\r\n        final JSONLexer lexer = parser.lexer;\r\n        if (lexer.token() == JSONToken.LITERAL_INT) {\r\n            BigDecimal decimalValue = lexer.decimalValue();\r\n            lexer.nextToken(JSONToken.COMMA);\r\n            return (T) decimalValue;\r\n        }\r\n\r\n        if (lexer.token() == JSONToken.LITERAL_FLOAT) {\r\n            BigDecimal val = lexer.decimalValue();\r\n            lexer.nextToken(JSONToken.COMMA);\r\n            return (T) val;\r\n        }\r\n\r\n        Object value = parser.parse();\r\n        return value == null //\r\n            ? null //\r\n            : (T) TypeUtils.castToBigDecimal(value);\r\n    }\r\n\r\n    public int getFastMatchToken() {\r\n        return JSONToken.LITERAL_INT;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/BigIntegerCodec.java",
    "content": "/*\r\n * Copyright 1999-2018 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.serializer;\r\n\r\nimport java.io.IOException;\r\nimport java.lang.reflect.Type;\r\nimport java.math.BigInteger;\r\n\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.JSONLexer;\r\nimport com.alibaba.fastjson.parser.JSONToken;\r\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\r\nimport com.alibaba.fastjson.util.TypeUtils;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class BigIntegerCodec implements ObjectSerializer, ObjectDeserializer {\r\n    private final static BigInteger LOW = BigInteger.valueOf(-9007199254740991L);\r\n    private final static BigInteger HIGH = BigInteger.valueOf(9007199254740991L);\r\n\r\n    public final static BigIntegerCodec instance = new BigIntegerCodec();\r\n\r\n    public void write(JSONSerializer serializer\r\n            , Object object\r\n            , Object fieldName\r\n            , Type fieldType, int features) throws IOException\r\n    {\r\n        SerializeWriter out = serializer.out;\r\n\r\n        if (object == null) {\r\n            out.writeNull(SerializerFeature.WriteNullNumberAsZero);\r\n            return;\r\n        }\r\n        \r\n        BigInteger val = (BigInteger) object;\r\n        String str = val.toString();\r\n        if (str.length() >= 16\r\n                && SerializerFeature.isEnabled(features, out.features, SerializerFeature.BrowserCompatible)\r\n                && (val.compareTo(LOW) < 0\r\n                    || val.compareTo(HIGH) > 0))\r\n        {\r\n            out.writeString(str);\r\n            return;\r\n        }\r\n        out.write(str);\r\n    }\r\n\r\n    @SuppressWarnings(\"unchecked\")\r\n    public <T> T deserialze(DefaultJSONParser parser, Type clazz, Object fieldName) {\r\n        return (T) deserialze(parser);\r\n    }\r\n\r\n    @SuppressWarnings(\"unchecked\")\r\n    public static <T> T deserialze(DefaultJSONParser parser) {\r\n        final JSONLexer lexer = parser.lexer;\r\n        if (lexer.token() == JSONToken.LITERAL_INT) {\r\n            String val = lexer.numberString();\r\n            lexer.nextToken(JSONToken.COMMA);\r\n\r\n            if (val.length() > 65535) {\r\n                throw new JSONException(\"decimal overflow\");\r\n            }\r\n\r\n            return (T) new BigInteger(val);\r\n        }\r\n\r\n        Object value = parser.parse();\r\n        return value == null //\r\n            ? null //\r\n            : (T) TypeUtils.castToBigInteger(value);\r\n    }\r\n\r\n    public int getFastMatchToken() {\r\n        return JSONToken.LITERAL_INT;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/BooleanCodec.java",
    "content": "/*\r\n * Copyright 1999-2018 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.serializer;\r\n\r\nimport java.io.IOException;\r\nimport java.lang.reflect.Type;\r\nimport java.util.concurrent.atomic.AtomicBoolean;\r\n\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.JSONLexer;\r\nimport com.alibaba.fastjson.parser.JSONToken;\r\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\r\nimport com.alibaba.fastjson.util.TypeUtils;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class BooleanCodec implements ObjectSerializer, ObjectDeserializer {\r\n\r\n    public final static BooleanCodec instance = new BooleanCodec();\r\n\r\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\r\n        SerializeWriter out = serializer.out;\r\n\r\n        Boolean value = (Boolean) object;\r\n        if (value == null) {\r\n            out.writeNull(SerializerFeature.WriteNullBooleanAsFalse);\r\n            return;\r\n        }\r\n\r\n        if (value.booleanValue()) {\r\n            out.write(\"true\");\r\n        } else {\r\n            out.write(\"false\");\r\n        }\r\n    }\r\n\r\n    @SuppressWarnings(\"unchecked\")\r\n    public <T> T deserialze(DefaultJSONParser parser, Type clazz, Object fieldName) {\r\n        final JSONLexer lexer = parser.lexer;\r\n\r\n        Boolean boolObj;\r\n\r\n        try {\r\n            if (lexer.token() == JSONToken.TRUE) {\r\n                lexer.nextToken(JSONToken.COMMA);\r\n                boolObj = Boolean.TRUE;\r\n            } else if (lexer.token() == JSONToken.FALSE) {\r\n                lexer.nextToken(JSONToken.COMMA);\r\n                boolObj = Boolean.FALSE;\r\n            } else if (lexer.token() == JSONToken.LITERAL_INT) {\r\n                int intValue = lexer.intValue();\r\n                lexer.nextToken(JSONToken.COMMA);\r\n\r\n                if (intValue == 1) {\r\n                    boolObj = Boolean.TRUE;\r\n                } else {\r\n                    boolObj = Boolean.FALSE;\r\n                }\r\n            } else {\r\n                Object value = parser.parse();\r\n\r\n                if (value == null) {\r\n                    return null;\r\n                }\r\n\r\n                boolObj = TypeUtils.castToBoolean(value);\r\n            }\r\n        } catch (Exception ex) {\r\n            throw new JSONException(\"parseBoolean error, field : \" + fieldName, ex);\r\n        }\r\n\r\n        if (clazz == AtomicBoolean.class) {\r\n            return (T) new AtomicBoolean(boolObj.booleanValue());\r\n        }\r\n\r\n        return (T) boolObj;\r\n    }\r\n\r\n    public int getFastMatchToken() {\r\n        return JSONToken.TRUE;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/ByteBufferCodec.java",
    "content": "package com.alibaba.fastjson.serializer;\n\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\nimport java.nio.ByteBuffer;\n\npublic class ByteBufferCodec implements ObjectSerializer, ObjectDeserializer {\n    public final static ByteBufferCodec instance = new ByteBufferCodec();\n\n    @Override\n    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n        ByteBufferBean bean = parser.parseObject(ByteBufferBean.class);\n        return (T) bean.byteBuffer();\n    }\n\n    @Override\n    public int getFastMatchToken() {\n        return JSONToken.LBRACKET;\n    }\n\n    @Override\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\n        ByteBuffer byteBuf = (ByteBuffer) object;\n\n        byte[] array = byteBuf.array();\n\n        SerializeWriter out = serializer.out;\n        out.write('{');\n\n        out.writeFieldName(\"array\");\n        out.writeByteArray(array);\n        out.writeFieldValue(',', \"limit\", byteBuf.limit());\n        out.writeFieldValue(',', \"position\", byteBuf.position());\n\n        out.write('}');\n    }\n\n    public static class ByteBufferBean {\n        public byte[] array;\n        public int limit;\n        public int position;\n\n        public ByteBuffer byteBuffer() {\n            ByteBuffer buf = ByteBuffer.wrap(array);\n            buf.limit(limit);\n            buf.position(position);\n            return buf;\n        }\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/CalendarCodec.java",
    "content": "package com.alibaba.fastjson.serializer;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\nimport java.text.DateFormat;\nimport java.text.SimpleDateFormat;\nimport java.util.Calendar;\nimport java.util.Date;\nimport java.util.GregorianCalendar;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONLexer;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.deserializer.ContextObjectDeserializer;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\nimport com.alibaba.fastjson.util.IOUtils;\n\nimport javax.xml.datatype.DatatypeConfigurationException;\nimport javax.xml.datatype.DatatypeFactory;\nimport javax.xml.datatype.XMLGregorianCalendar;\n\npublic class CalendarCodec extends ContextObjectDeserializer implements ObjectSerializer, ObjectDeserializer, ContextObjectSerializer {\n\n    public final static CalendarCodec instance = new CalendarCodec();\n\n    private DatatypeFactory dateFactory;\n\n    public void write(JSONSerializer serializer, Object object, BeanContext context) throws IOException {\n        SerializeWriter out = serializer.out;\n        String format = context.getFormat();\n        Calendar calendar = (Calendar) object;\n\n        if (format.equals(\"unixtime\")) {\n            long seconds = calendar.getTimeInMillis() / 1000L;\n            out.writeInt((int) seconds);\n            return;\n        }\n\n        DateFormat dateFormat = new SimpleDateFormat(format);\n        if (dateFormat == null) {\n            dateFormat = new SimpleDateFormat(JSON.DEFFAULT_DATE_FORMAT, serializer.locale);\n        }\n        dateFormat.setTimeZone(serializer.timeZone);\n        String text = dateFormat.format(calendar.getTime());\n        out.writeString(text);\n    }\n\n\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features)\n                                                                                                               throws IOException {\n        SerializeWriter out = serializer.out;\n\n        if (object == null) {\n            out.writeNull();\n            return;\n        }\n\n        Calendar calendar;\n        if (object instanceof XMLGregorianCalendar) {\n            calendar = ((XMLGregorianCalendar) object).toGregorianCalendar();\n        } else {\n            calendar = (Calendar) object;\n        }\n\n        if (out.isEnabled(SerializerFeature.UseISO8601DateFormat)) {\n            final char quote = out.isEnabled(SerializerFeature.UseSingleQuotes) //\n                ? '\\'' //\n                : '\\\"';\n            out.append(quote);\n\n            int year = calendar.get(Calendar.YEAR);\n            int month = calendar.get(Calendar.MONTH) + 1;\n            int day = calendar.get(Calendar.DAY_OF_MONTH);\n            int hour = calendar.get(Calendar.HOUR_OF_DAY);\n            int minute = calendar.get(Calendar.MINUTE);\n            int second = calendar.get(Calendar.SECOND);\n            int millis = calendar.get(Calendar.MILLISECOND);\n\n            char[] buf;\n            if (millis != 0) {\n                buf = \"0000-00-00T00:00:00.000\".toCharArray();\n                IOUtils.getChars(millis, 23, buf);\n                IOUtils.getChars(second, 19, buf);\n                IOUtils.getChars(minute, 16, buf);\n                IOUtils.getChars(hour, 13, buf);\n                IOUtils.getChars(day, 10, buf);\n                IOUtils.getChars(month, 7, buf);\n                IOUtils.getChars(year, 4, buf);\n\n            } else {\n                if (second == 0 && minute == 0 && hour == 0) {\n                    buf = \"0000-00-00\".toCharArray();\n                    IOUtils.getChars(day, 10, buf);\n                    IOUtils.getChars(month, 7, buf);\n                    IOUtils.getChars(year, 4, buf);\n                } else {\n                    buf = \"0000-00-00T00:00:00\".toCharArray();\n                    IOUtils.getChars(second, 19, buf);\n                    IOUtils.getChars(minute, 16, buf);\n                    IOUtils.getChars(hour, 13, buf);\n                    IOUtils.getChars(day, 10, buf);\n                    IOUtils.getChars(month, 7, buf);\n                    IOUtils.getChars(year, 4, buf);\n                }\n            }\n\n            out.write(buf);\n\n            float timeZoneF = calendar.getTimeZone().getOffset(calendar.getTimeInMillis()) / (3600.0f * 1000);\n            int timeZone = (int)timeZoneF;\n            if (timeZone == 0.0) {\n                out.write('Z');\n            } else {\n                if (timeZone > 9) {\n                    out.write('+');\n                    out.writeInt(timeZone);\n                } else if (timeZone > 0) {\n                    out.write('+');\n                    out.write('0');\n                    out.writeInt(timeZone);\n                } else if (timeZone < -9) {\n                    out.write('-');\n                    out.writeInt(timeZone);\n                } else if (timeZone < 0) {\n                    out.write('-');\n                    out.write('0');\n                    out.writeInt(-timeZone);\n                }\n                out.write(':');\n                // handles uneven timeZones 30 mins, 45 mins\n                // this would always be less than 60\n                int offSet = (int)((timeZoneF - timeZone) * 60);\n                out.append(String.format(\"%02d\", offSet));\n            }\n\n            out.append(quote);\n        } else {\n            Date date = calendar.getTime();\n            serializer.write(date);\n        }\n    }\n\n    public <T> T deserialze(DefaultJSONParser parser, Type clazz, Object fieldName) {\n        return deserialze(parser, clazz, fieldName, null, 0);\n    }\n\n    @Override\n    @SuppressWarnings(\"unchecked\")\n    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName, String format, int features) {\n        Object value = DateCodec.instance.deserialze(parser, type, fieldName, format, features);\n\n        if (value instanceof Calendar) {\n            return (T) value;\n        }\n\n        Date date = (Date) value;\n        if (date == null) {\n            return null;\n        }\n\n        JSONLexer lexer = parser.lexer;\n        Calendar calendar = Calendar.getInstance(lexer.getTimeZone(), lexer.getLocale());\n        calendar.setTime(date);\n\n        if (type == XMLGregorianCalendar.class) {\n            return (T) createXMLGregorianCalendar((GregorianCalendar) calendar);\n        }\n\n        return (T) calendar;\n    }\n\n    public XMLGregorianCalendar createXMLGregorianCalendar(Calendar calendar) {\n        if (dateFactory == null) {\n            try {\n                dateFactory = DatatypeFactory.newInstance();\n            } catch (DatatypeConfigurationException e) {\n                throw new IllegalStateException(\"Could not obtain an instance of DatatypeFactory.\", e);\n            }\n        }\n        return dateFactory.newXMLGregorianCalendar((GregorianCalendar) calendar);\n    }\n\n    public int getFastMatchToken() {\n        return JSONToken.LITERAL_INT;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/CharArrayCodec.java",
    "content": "package com.alibaba.fastjson.serializer;\n\nimport java.lang.reflect.Type;\nimport java.util.Collection;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONLexer;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\n\n\npublic class CharArrayCodec implements ObjectDeserializer {\n\n    @SuppressWarnings(\"unchecked\")\n    public <T> T deserialze(DefaultJSONParser parser, Type clazz, Object fieldName) {\n        return (T) deserialze(parser);\n    }\n    \n    @SuppressWarnings(\"unchecked\")\n    public static <T> T deserialze(DefaultJSONParser parser) {\n        final JSONLexer lexer = parser.lexer;\n        if (lexer.token() == JSONToken.LITERAL_STRING) {\n            String val = lexer.stringVal();\n            lexer.nextToken(JSONToken.COMMA);\n            return (T) val.toCharArray();\n        }\n        \n        if (lexer.token() == JSONToken.LITERAL_INT) {\n            Number val = lexer.integerValue();\n            lexer.nextToken(JSONToken.COMMA);\n            return (T) val.toString().toCharArray();\n        }\n\n        Object value = parser.parse();\n\n        if (value instanceof  String) {\n            return (T) ((String) value).toCharArray();\n        }\n\n        if (value instanceof Collection) {\n            Collection<?> collection = (Collection) value;\n\n            boolean accept = true;\n            for (Object item : collection) {\n                if (item instanceof String) {\n                    int itemLength = ((String) item).length();\n                    if (itemLength != 1) {\n                        accept = false;\n                        break;\n                    }\n                }\n            }\n\n            if (!accept) {\n                throw new JSONException(\"can not cast to char[]\");\n            }\n\n            char[] chars = new char[collection.size()];\n            int pos = 0;\n            for (Object item : collection) {\n                chars[pos++] = ((String) item).charAt(0);\n            }\n            return (T) chars;\n        }\n\n        return value == null //\n            ? null //\n            : (T) JSON.toJSONString(value).toCharArray();\n    }\n\n    public int getFastMatchToken() {\n        return JSONToken.LITERAL_STRING;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/CharacterCodec.java",
    "content": "/*\r\n * Copyright 1999-2018 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.serializer;\r\n\r\nimport java.io.IOException;\r\nimport java.lang.reflect.Type;\r\n\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.JSONToken;\r\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\r\nimport com.alibaba.fastjson.util.TypeUtils;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class CharacterCodec implements ObjectSerializer, ObjectDeserializer {\r\n\r\n    public final static CharacterCodec instance = new CharacterCodec();\r\n\r\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\r\n        SerializeWriter out = serializer.out;\r\n\r\n        Character value = (Character) object;\r\n        if (value == null) {\r\n            out.writeString(\"\");\r\n            return;\r\n        }\r\n\r\n        char c = value.charValue();\r\n        if (c == 0) {\r\n            out.writeString(\"\\u0000\");\r\n        } else {\r\n            out.writeString(value.toString());\r\n        }\r\n    }\r\n\r\n    @SuppressWarnings(\"unchecked\")\r\n    public <T> T deserialze(DefaultJSONParser parser, Type clazz, Object fieldName) {\r\n        Object value = parser.parse();\r\n        return value == null //\r\n            ? null //\r\n            : (T) TypeUtils.castToChar(value);\r\n    }\r\n\r\n    public int getFastMatchToken() {\r\n        return JSONToken.LITERAL_STRING;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/ClobSerializer.java",
    "content": "package com.alibaba.fastjson.serializer;\n\nimport java.io.IOException;\nimport java.io.Reader;\nimport java.lang.reflect.Type;\nimport java.sql.Clob;\nimport java.sql.SQLException;\n\nimport com.alibaba.fastjson.JSONException;\n\npublic class ClobSerializer implements ObjectSerializer {\n\n    public final static ClobSerializer instance = new ClobSerializer();\n\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\n        try {\n            if (object == null) {\n                serializer.writeNull();\n                return;\n            }\n            \n            Clob clob = (Clob) object;\n            Reader reader = clob.getCharacterStream();\n\n            StringBuilder buf = new StringBuilder();\n            \n            try {\n                char[] chars = new char[2048];\n                for (;;) {\n                    int len = reader.read(chars, 0, chars.length);\n                    if (len < 0) {\n                        break;\n                    }\n                    buf.append(chars, 0, len);\n                }\n            } catch(Exception ex) {\n                throw new JSONException(\"read string from reader error\", ex);\n            }\n            \n            String text = buf.toString();\n            reader.close();\n            serializer.write(text);\n        } catch (SQLException e) {\n            throw new IOException(\"write clob error\", e);\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/CollectionCodec.java",
    "content": "/*\r\n * Copyright 1999-2018 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.serializer;\r\n\r\nimport java.io.IOException;\r\nimport java.lang.reflect.Type;\r\nimport java.util.Collection;\r\nimport java.util.HashSet;\r\nimport java.util.TreeSet;\r\n\r\nimport com.alibaba.fastjson.JSONArray;\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.JSONToken;\r\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\r\nimport com.alibaba.fastjson.util.TypeUtils;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class CollectionCodec implements ObjectSerializer, ObjectDeserializer {\r\n\r\n    public final static CollectionCodec instance = new CollectionCodec();\r\n\r\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\r\n        SerializeWriter out = serializer.out;\r\n\r\n        if (object == null) {\r\n            out.writeNull(SerializerFeature.WriteNullListAsEmpty);\r\n            return;\r\n        }\r\n\r\n        Type elementType = null;\r\n        if (out.isEnabled(SerializerFeature.WriteClassName)\r\n                || SerializerFeature.isEnabled(features, SerializerFeature.WriteClassName))\r\n        {\r\n            elementType = TypeUtils.getCollectionItemType(fieldType);\r\n        }\r\n\r\n        Collection<?> collection = (Collection<?>) object;\r\n\r\n        SerialContext context = serializer.context;\r\n        serializer.setContext(context, object, fieldName, 0);\r\n\r\n        if (out.isEnabled(SerializerFeature.WriteClassName)) {\r\n            if (HashSet.class.isAssignableFrom(collection.getClass())) {\r\n                out.append(\"Set\");\r\n            } else if (TreeSet.class == collection.getClass()) {\r\n                out.append(\"TreeSet\");\r\n            }\r\n        }\r\n\r\n        try {\r\n            int i = 0;\r\n            out.append('[');\r\n            for (Object item : collection) {\r\n\r\n                if (i++ != 0) {\r\n                    out.append(',');\r\n                }\r\n\r\n                if (item == null) {\r\n                    out.writeNull();\r\n                    continue;\r\n                }\r\n\r\n                Class<?> clazz = item.getClass();\r\n\r\n                if (clazz == Integer.class) {\r\n                    out.writeInt(((Integer) item).intValue());\r\n                    continue;\r\n                }\r\n\r\n                if (clazz == Long.class) {\r\n                    out.writeLong(((Long) item).longValue());\r\n\r\n                    if (out.isEnabled(SerializerFeature.WriteClassName)) {\r\n                        out.write('L');\r\n                    }\r\n                    continue;\r\n                }\r\n\r\n                ObjectSerializer itemSerializer = serializer.getObjectWriter(clazz);\r\n                if (SerializerFeature.isEnabled(features, SerializerFeature.WriteClassName)\r\n                        && itemSerializer instanceof JavaBeanSerializer) {\r\n                    JavaBeanSerializer javaBeanSerializer = (JavaBeanSerializer) itemSerializer;\r\n                    javaBeanSerializer.writeNoneASM(serializer, item, i - 1, elementType, features);\r\n                } else {\r\n                    itemSerializer.write(serializer, item, i - 1, elementType, features);\r\n                }\r\n            }\r\n            out.append(']');\r\n        } finally {\r\n            serializer.context = context;\r\n        }\r\n    }\r\n\r\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\r\n    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\r\n        if (parser.lexer.token() == JSONToken.NULL) {\r\n            parser.lexer.nextToken(JSONToken.COMMA);\r\n            return null;\r\n        }\r\n        \r\n        if (type == JSONArray.class) {\r\n            JSONArray array = new JSONArray();\r\n            parser.parseArray(array);\r\n            return (T) array;\r\n        }\r\n\r\n        Collection list;\r\n        if (parser.lexer.token() == JSONToken.SET) {\r\n            parser.lexer.nextToken();\r\n            list = TypeUtils.createSet(type);\r\n        } else {\r\n            list = TypeUtils.createCollection(type);\r\n        }\r\n\r\n        Type itemType = TypeUtils.getCollectionItemType(type);\r\n        parser.parseArray(itemType, list, fieldName);\r\n\r\n        return (T) list;\r\n    }\r\n\r\n  \r\n\r\n    public int getFastMatchToken() {\r\n        return JSONToken.LBRACKET;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/ContextObjectSerializer.java",
    "content": "package com.alibaba.fastjson.serializer;\n\nimport java.io.IOException;\n\npublic interface ContextObjectSerializer extends ObjectSerializer {\n    void write(JSONSerializer serializer, //\n               Object object, //\n               BeanContext context) throws IOException;\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/ContextValueFilter.java",
    "content": "package com.alibaba.fastjson.serializer;\n\n/**\n * @since 1.2.9\n *\n */\npublic interface ContextValueFilter extends SerializeFilter {\n    Object process(BeanContext context, Object object, String name, Object value);\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/DateCodec.java",
    "content": "/*\r\n * Copyright 1999-2018 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.serializer;\r\n\r\nimport java.io.IOException;\r\nimport java.lang.reflect.Type;\r\nimport java.math.BigDecimal;\r\nimport java.text.DateFormat;\r\nimport java.text.ParseException;\r\nimport java.text.SimpleDateFormat;\r\nimport java.util.Calendar;\r\nimport java.util.Date;\r\nimport java.util.TimeZone;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.JSONScanner;\r\nimport com.alibaba.fastjson.parser.JSONToken;\r\nimport com.alibaba.fastjson.parser.deserializer.AbstractDateDeserializer;\r\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\r\nimport com.alibaba.fastjson.util.IOUtils;\r\nimport com.alibaba.fastjson.util.TypeUtils;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class DateCodec extends AbstractDateDeserializer implements ObjectSerializer, ObjectDeserializer {\r\n\r\n    public final static DateCodec instance = new DateCodec();\r\n    \r\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\r\n        SerializeWriter out = serializer.out;\r\n\r\n        if (object == null) {\r\n            out.writeNull();\r\n            return;\r\n        }\r\n\r\n        Class<?> clazz = object.getClass();\r\n        if (clazz == java.sql.Date.class && !out.isEnabled(SerializerFeature.WriteDateUseDateFormat)) {\r\n            long millis = ((java.sql.Date) object).getTime();\r\n            TimeZone timeZone = serializer.timeZone;\r\n            int offset = timeZone.getOffset(millis);\r\n            //\r\n            if ((millis + offset) % (24 * 1000 * 3600) == 0\r\n                    && !SerializerFeature.isEnabled(out.features, features, SerializerFeature.WriteClassName)) {\r\n                out.writeString(object.toString());\r\n                return;\r\n            }\r\n        }\r\n\r\n        if (clazz == java.sql.Time.class) {\r\n            long millis = ((java.sql.Time) object).getTime();\r\n            if (\"unixtime\".equals(serializer.getDateFormatPattern())) {\r\n                long seconds = millis / 1000;\r\n                out.writeLong(seconds);\r\n                return;\r\n            }\r\n\r\n            if (\"millis\".equals(serializer.getDateFormatPattern())) {\r\n                long seconds = millis;\r\n                out.writeLong(millis);\r\n                return;\r\n            }\r\n\r\n            if (millis < 24L * 60L * 60L * 1000L) {\r\n                out.writeString(object.toString());\r\n                return;\r\n            }\r\n        }\r\n\r\n        int nanos = 0;\r\n        if (clazz == java.sql.Timestamp.class) {\r\n            java.sql.Timestamp ts = (java.sql.Timestamp) object;\r\n            nanos = ts.getNanos();\r\n        }\r\n        \r\n        Date date;\r\n        if (object instanceof Date) {\r\n            date = (Date) object;\r\n        } else {\r\n            date = TypeUtils.castToDate(object);\r\n        }\r\n\r\n        if (\"unixtime\".equals(serializer.getDateFormatPattern())) {\r\n            long seconds = date.getTime() / 1000;\r\n            out.writeLong(seconds);\r\n            return;\r\n        }\r\n\r\n        if (\"millis\".equals(serializer.getDateFormatPattern())) {\r\n            long millis = date.getTime();\r\n            out.writeLong(millis);\r\n            return;\r\n        }\r\n\r\n        if (out.isEnabled(SerializerFeature.WriteDateUseDateFormat)) {\r\n            DateFormat format = serializer.getDateFormat();\r\n            if (format == null) {\r\n                // 如果是通过FastJsonConfig进行设置，优先从FastJsonConfig获取\r\n                String dateFormatPattern = serializer.getFastJsonConfigDateFormatPattern();\r\n                if(dateFormatPattern == null) {\r\n                    dateFormatPattern = JSON.DEFFAULT_DATE_FORMAT;\r\n                }\r\n\r\n                format = new SimpleDateFormat(dateFormatPattern, serializer.locale);\r\n                format.setTimeZone(serializer.timeZone);\r\n            }\r\n            String text = format.format(date);\r\n            out.writeString(text);\r\n            return;\r\n        }\r\n        \r\n        if (out.isEnabled(SerializerFeature.WriteClassName)) {\r\n            if (clazz != fieldType) {\r\n                if (clazz == java.util.Date.class) {\r\n                    out.write(\"new Date(\");\r\n                    out.writeLong(((Date) object).getTime());\r\n                    out.write(')');\r\n                } else {\r\n                    out.write('{');\r\n                    out.writeFieldName(JSON.DEFAULT_TYPE_KEY);\r\n                    serializer.write(clazz.getName());\r\n                    out.writeFieldValue(',', \"val\", ((Date) object).getTime());\r\n                    out.write('}');\r\n                }\r\n                return;\r\n            }\r\n        }\r\n\r\n        long time = date.getTime();\r\n        if (out.isEnabled(SerializerFeature.UseISO8601DateFormat)) {\r\n            char quote = out.isEnabled(SerializerFeature.UseSingleQuotes) ? '\\'' : '\\\"'; \r\n            out.write(quote);\r\n\r\n            Calendar calendar = Calendar.getInstance(serializer.timeZone, serializer.locale);\r\n            calendar.setTimeInMillis(time);\r\n\r\n            int year = calendar.get(Calendar.YEAR);\r\n            int month = calendar.get(Calendar.MONTH) + 1;\r\n            int day = calendar.get(Calendar.DAY_OF_MONTH);\r\n            int hour = calendar.get(Calendar.HOUR_OF_DAY);\r\n            int minute = calendar.get(Calendar.MINUTE);\r\n            int second = calendar.get(Calendar.SECOND);\r\n            int millis = calendar.get(Calendar.MILLISECOND);\r\n\r\n            char[] buf;\r\n            if (nanos > 0) {\r\n                buf = \"0000-00-00 00:00:00.000000000\".toCharArray();\r\n                IOUtils.getChars(nanos, 29, buf);\r\n                IOUtils.getChars(second, 19, buf);\r\n                IOUtils.getChars(minute, 16, buf);\r\n                IOUtils.getChars(hour, 13, buf);\r\n                IOUtils.getChars(day, 10, buf);\r\n                IOUtils.getChars(month, 7, buf);\r\n                IOUtils.getChars(year, 4, buf);\r\n            } else if (millis != 0) {\r\n                buf = \"0000-00-00T00:00:00.000\".toCharArray();\r\n                IOUtils.getChars(millis, 23, buf);\r\n                IOUtils.getChars(second, 19, buf);\r\n                IOUtils.getChars(minute, 16, buf);\r\n                IOUtils.getChars(hour, 13, buf);\r\n                IOUtils.getChars(day, 10, buf);\r\n                IOUtils.getChars(month, 7, buf);\r\n                IOUtils.getChars(year, 4, buf);\r\n\r\n            } else {\r\n                if (second == 0 && minute == 0 && hour == 0) {\r\n                    buf = \"0000-00-00\".toCharArray();\r\n                    IOUtils.getChars(day, 10, buf);\r\n                    IOUtils.getChars(month, 7, buf);\r\n                    IOUtils.getChars(year, 4, buf);\r\n                } else {\r\n                    buf = \"0000-00-00T00:00:00\".toCharArray();\r\n                    IOUtils.getChars(second, 19, buf);\r\n                    IOUtils.getChars(minute, 16, buf);\r\n                    IOUtils.getChars(hour, 13, buf);\r\n                    IOUtils.getChars(day, 10, buf);\r\n                    IOUtils.getChars(month, 7, buf);\r\n                    IOUtils.getChars(year, 4, buf);\r\n                }\r\n            }\r\n\r\n\r\n            if (nanos > 0) { // java.sql.Timestamp\r\n                int i = 0;\r\n                for (; i < 9; ++i) {\r\n                    int off = buf.length - i - 1;\r\n                    if (buf[off] != '0') {\r\n                        break;\r\n                    }\r\n                }\r\n                out.write(buf, 0, buf.length - i);\r\n                out.write(quote);\r\n                return;\r\n            }\r\n\r\n            out.write(buf);\r\n\r\n            float timeZoneF = calendar.getTimeZone().getOffset(calendar.getTimeInMillis()) / (3600.0f * 1000);\r\n            int timeZone = (int)timeZoneF;\r\n            if (timeZone == 0.0) {\r\n                out.write('Z');\r\n            } else {\r\n                if (timeZone > 9) {\r\n                    out.write('+');\r\n                    out.writeInt(timeZone);\r\n                } else if (timeZone > 0) {\r\n                    out.write('+');\r\n                    out.write('0');\r\n                    out.writeInt(timeZone);\r\n                } else if (timeZone < -9) {\r\n                    out.write('-');\r\n                    out.writeInt(-timeZone);\r\n                } else if (timeZone < 0) {\r\n                    out.write('-');\r\n                    out.write('0');\r\n                    out.writeInt(-timeZone);\r\n                }\r\n                out.write(':');\r\n                // handles uneven timeZones 30 mins, 45 mins\r\n                // this would always be less than 60\r\n                int offSet = (int)(Math.abs(timeZoneF - timeZone) * 60);\r\n                out.append(String.format(\"%02d\", offSet));\r\n            }\r\n\r\n            out.write(quote);\r\n        } else {\r\n            out.writeLong(time);\r\n        }\r\n    }\r\n    \r\n    @SuppressWarnings(\"unchecked\")\r\n    public <T> T cast(DefaultJSONParser parser, Type clazz, Object fieldName, Object val) {\r\n\r\n        if (val == null) {\r\n            return null;\r\n        }\r\n\r\n        if (val instanceof java.util.Date) {\r\n            return (T) val;\r\n        } else if (val instanceof BigDecimal) {\r\n            return (T) new java.util.Date(TypeUtils.longValue((BigDecimal) val));\r\n        } else if (val instanceof Number) {\r\n            return (T) new java.util.Date(((Number) val).longValue());\r\n        } else if (val instanceof String) {\r\n            String strVal = (String) val;\r\n            if (strVal.length() == 0) {\r\n                return null;\r\n            }\r\n\r\n            if (strVal.length() == 23 && strVal.endsWith(\" 000\")) {\r\n                strVal = strVal.substring(0, 19);\r\n            }\r\n\r\n            {\r\n                JSONScanner dateLexer = new JSONScanner(strVal);\r\n                try {\r\n                    if (dateLexer.scanISO8601DateIfMatch(false)) {\r\n                        Calendar calendar = dateLexer.getCalendar();\r\n\r\n                        if (clazz == Calendar.class) {\r\n                            return (T) calendar;\r\n                        }\r\n\r\n                        return (T) calendar.getTime();\r\n                    }\r\n                } finally {\r\n                    dateLexer.close();\r\n                }\r\n            }\r\n\r\n            String dateFomartPattern = parser.getDateFomartPattern();\r\n            boolean formatMatch = strVal.length() == dateFomartPattern.length()\r\n                    || (strVal.length() == 22 && dateFomartPattern.equals(\"yyyyMMddHHmmssSSSZ\"))\r\n                    || (strVal.indexOf('T') != -1 && dateFomartPattern.contains(\"'T'\") && strVal.length() + 2 == dateFomartPattern.length())\r\n                    ;\r\n            if (formatMatch) {\r\n                DateFormat dateFormat = parser.getDateFormat();\r\n                try {\r\n                    return (T) dateFormat.parse(strVal);\r\n                } catch (ParseException e) {\r\n                    // skip\r\n                }\r\n            }\r\n            \r\n            if (strVal.startsWith(\"/Date(\") && strVal.endsWith(\")/\")) {\r\n                String dotnetDateStr = strVal.substring(6, strVal.length() - 2);\r\n                strVal = dotnetDateStr;\r\n            }\r\n\r\n            if (\"0000-00-00\".equals(strVal)\r\n                    || \"0000-00-00T00:00:00\".equalsIgnoreCase(strVal)\r\n                    || \"0001-01-01T00:00:00+08:00\".equalsIgnoreCase(strVal)) {\r\n                return null;\r\n            }\r\n\r\n            int index = strVal.lastIndexOf('|');\r\n            if (index > 20) {\r\n                String tzStr = strVal.substring(index + 1);\r\n                TimeZone timeZone = TimeZone.getTimeZone(tzStr);\r\n                if (!\"GMT\".equals(timeZone.getID())) {\r\n                    String subStr = strVal.substring(0, index);\r\n                    JSONScanner dateLexer = new JSONScanner(subStr);\r\n                    try {\r\n                        if (dateLexer.scanISO8601DateIfMatch(false)) {\r\n                            Calendar calendar = dateLexer.getCalendar();\r\n\r\n                            calendar.setTimeZone(timeZone);\r\n\r\n                            if (clazz == Calendar.class) {\r\n                                return (T) calendar;\r\n                            }\r\n\r\n                            return (T) calendar.getTime();\r\n                        }\r\n                    } finally {\r\n                        dateLexer.close();\r\n                    }\r\n                }\r\n            }\r\n\r\n            // 2017-08-14 19:05:30.000|America/Los_Angeles\r\n//            \r\n            long longVal = Long.parseLong(strVal);\r\n            return (T) new java.util.Date(longVal);\r\n        }\r\n\r\n        throw new JSONException(\"parse error\");\r\n    }\r\n\r\n    public int getFastMatchToken() {\r\n        return JSONToken.LITERAL_INT;\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/DoubleSerializer.java",
    "content": "/*\r\n * Copyright 1999-2018 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.serializer;\r\n\r\nimport java.io.IOException;\r\nimport java.lang.reflect.Type;\r\nimport java.text.DecimalFormat;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class DoubleSerializer implements ObjectSerializer {\r\n\r\n    public final static DoubleSerializer instance      = new DoubleSerializer();\r\n\r\n    private DecimalFormat                decimalFormat = null;\r\n\r\n    public DoubleSerializer(){\r\n\r\n    }\r\n\r\n    public DoubleSerializer(DecimalFormat decimalFormat){\r\n        this.decimalFormat = decimalFormat;\r\n    }\r\n\r\n    public DoubleSerializer(String decimalFormat){\r\n        this(new DecimalFormat(decimalFormat));\r\n    }\r\n\r\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\r\n        SerializeWriter out = serializer.out;\r\n\r\n        if (object == null) {\r\n            out.writeNull(SerializerFeature.WriteNullNumberAsZero);\r\n            return;\r\n        }\r\n\r\n        double doubleValue = ((Double) object).doubleValue();\r\n\r\n        if (Double.isNaN(doubleValue) //\r\n                || Double.isInfinite(doubleValue)) {\r\n            out.writeNull();\r\n        } else {\r\n            if (decimalFormat == null) {\r\n                out.writeDouble(doubleValue, true);\r\n            } else {\r\n                String doubleText = decimalFormat.format(doubleValue);\r\n                out.write(doubleText);\r\n            }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/EnumSerializer.java",
    "content": "/*\r\n * Copyright 1999-2018 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.serializer;\r\n\r\nimport com.alibaba.fastjson.JSONException;\r\n\r\nimport java.io.IOException;\r\nimport java.lang.reflect.*;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class EnumSerializer implements ObjectSerializer {\r\n\r\n    private final Member member;\r\n\r\n    public EnumSerializer() {\r\n        this.member = null;\r\n    }\r\n\r\n    public EnumSerializer(Member member) {\r\n        this.member = member;\r\n    }\r\n\r\n    public final static EnumSerializer instance = new EnumSerializer();\r\n\r\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\r\n        if (member == null) {\r\n            SerializeWriter out = serializer.out;\r\n            out.writeEnum((Enum<?>) object);\r\n            return;\r\n        }\r\n\r\n        Object fieldValue = null;\r\n        try {\r\n            if (member instanceof Field) {\r\n                fieldValue = ((Field) member).get(object);\r\n            } else {\r\n                fieldValue = ((Method) member).invoke(object);\r\n            }\r\n        } catch (Exception e) {\r\n            throw new JSONException(\"getEnumValue error\", e);\r\n        }\r\n\r\n        serializer.write(fieldValue);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/EnumerationSerializer.java",
    "content": "package com.alibaba.fastjson.serializer;\n\nimport java.io.IOException;\nimport java.lang.reflect.ParameterizedType;\nimport java.lang.reflect.Type;\nimport java.util.Enumeration;\n\n\npublic class EnumerationSerializer implements ObjectSerializer {\n    public static EnumerationSerializer instance = new EnumerationSerializer();\n    \n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\n        SerializeWriter out = serializer.out;\n\n        if (object == null) {\n            out.writeNull(SerializerFeature.WriteNullListAsEmpty);\n            return;\n        }\n        \n        Type elementType = null;\n        if (out.isEnabled(SerializerFeature.WriteClassName)) {\n            if (fieldType instanceof ParameterizedType) {\n                ParameterizedType param = (ParameterizedType) fieldType;\n                elementType = param.getActualTypeArguments()[0];\n            }\n        }\n        \n        Enumeration<?> e = (Enumeration<?>) object;\n        \n        SerialContext context = serializer.context;\n        serializer.setContext(context, object, fieldName, 0);\n\n        try {\n            int i = 0;\n            out.append('[');\n            while (e.hasMoreElements()) {\n                Object item = e.nextElement();\n                if (i++ != 0) {\n                    out.append(',');\n                }\n\n                if (item == null) {\n                    out.writeNull();\n                    continue;\n                }\n\n                ObjectSerializer itemSerializer = serializer.getObjectWriter(item.getClass());\n                itemSerializer.write(serializer, item, i - 1, elementType, 0);\n            }\n            out.append(']');\n        } finally {\n            serializer.context = context;\n        }\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/FieldSerializer.java",
    "content": "/*\r\n * Copyright 1999-2018 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.serializer;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.annotation.JSONField;\r\nimport com.alibaba.fastjson.annotation.JSONType;\r\nimport com.alibaba.fastjson.util.FieldInfo;\r\nimport com.alibaba.fastjson.util.TypeUtils;\r\n\r\nimport java.io.IOException;\r\nimport java.lang.reflect.InvocationTargetException;\r\nimport java.text.SimpleDateFormat;\r\nimport java.util.Collection;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class FieldSerializer implements Comparable<FieldSerializer> {\r\n\r\n    public final FieldInfo        fieldInfo;\r\n    protected final boolean       writeNull;\r\n    protected int                 features;\r\n\r\n    private final String          double_quoted_fieldPrefix;\r\n    private String                single_quoted_fieldPrefix;\r\n    private String                un_quoted_fieldPrefix;\r\n\r\n    protected BeanContext         fieldContext;\r\n\r\n    private String                format;\r\n    protected boolean             writeEnumUsingToString  = false;\r\n    protected boolean             writeEnumUsingName      = false;\r\n    protected boolean             disableCircularReferenceDetect = false;\r\n\r\n    protected boolean             serializeUsing          = false;\r\n\r\n    protected boolean             persistenceXToMany      = false; // OneToMany or ManyToMany\r\n    protected boolean             browserCompatible;\r\n\r\n    private RuntimeSerializerInfo runtimeInfo;\r\n    \r\n    public FieldSerializer(Class<?> beanType, FieldInfo fieldInfo) {\r\n        this.fieldInfo = fieldInfo;\r\n        this.fieldContext = new BeanContext(beanType, fieldInfo);\r\n\r\n        if (beanType != null) {\r\n            JSONType jsonType = TypeUtils.getAnnotation(beanType,JSONType.class);\r\n            if (jsonType != null) {\r\n                for (SerializerFeature feature : jsonType.serialzeFeatures()) {\r\n                    if (feature == SerializerFeature.WriteEnumUsingToString) {\r\n                        writeEnumUsingToString = true;\r\n                    } else if(feature == SerializerFeature.WriteEnumUsingName){\r\n                        writeEnumUsingName = true;\r\n                    } else if(feature == SerializerFeature.DisableCircularReferenceDetect){\r\n                        disableCircularReferenceDetect = true;\r\n                    } else if(feature == SerializerFeature.BrowserCompatible){\r\n                        features |= SerializerFeature.BrowserCompatible.mask;\r\n                        browserCompatible = true;\r\n                    } else if (feature == SerializerFeature.WriteMapNullValue) {\r\n                        features |= SerializerFeature.WriteMapNullValue.mask;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        \r\n        fieldInfo.setAccessible();\r\n\r\n        this.double_quoted_fieldPrefix = '\"' + fieldInfo.name + \"\\\":\";\r\n\r\n        boolean writeNull = false;\r\n        JSONField annotation = fieldInfo.getAnnotation();\r\n        if (annotation != null) {\r\n            for (SerializerFeature feature : annotation.serialzeFeatures()) {\r\n                if ((feature.getMask() & SerializerFeature.WRITE_MAP_NULL_FEATURES) != 0) {\r\n                    writeNull = true;\r\n                    break;\r\n                }\r\n            }\r\n\r\n            format = annotation.format();\r\n\r\n            if (format.trim().length() == 0) {\r\n                format = null;\r\n            }\r\n\r\n            for (SerializerFeature feature : annotation.serialzeFeatures()) {\r\n                if (feature == SerializerFeature.WriteEnumUsingToString) {\r\n                    writeEnumUsingToString = true;\r\n                } else if(feature == SerializerFeature.WriteEnumUsingName){\r\n                    writeEnumUsingName = true;\r\n                } else if(feature == SerializerFeature.DisableCircularReferenceDetect){\r\n                    disableCircularReferenceDetect = true;\r\n                } else if(feature == SerializerFeature.BrowserCompatible){\r\n                    browserCompatible = true;\r\n                }\r\n            }\r\n            \r\n            features |= SerializerFeature.of(annotation.serialzeFeatures());\r\n        }\r\n        \r\n        this.writeNull = writeNull;\r\n\r\n        persistenceXToMany = TypeUtils.isAnnotationPresentOneToMany(fieldInfo.method)\r\n                || TypeUtils.isAnnotationPresentManyToMany(fieldInfo.method);\r\n    }\r\n\r\n    public void writePrefix(JSONSerializer serializer) throws IOException {\r\n        SerializeWriter out = serializer.out;\r\n\r\n        if (out.quoteFieldNames) {\r\n            boolean useSingleQuotes = SerializerFeature.isEnabled(out.features, fieldInfo.serialzeFeatures, SerializerFeature.UseSingleQuotes);\r\n            if (useSingleQuotes) {\r\n                if (single_quoted_fieldPrefix == null) {\r\n                    single_quoted_fieldPrefix = '\\'' + fieldInfo.name + \"\\':\";\r\n                }\r\n                out.write(single_quoted_fieldPrefix);\r\n            } else {\r\n                out.write(double_quoted_fieldPrefix);\r\n            }\r\n        } else {\r\n            if (un_quoted_fieldPrefix == null) {\r\n                this.un_quoted_fieldPrefix = fieldInfo.name + \":\";\r\n            }\r\n            out.write(un_quoted_fieldPrefix);\r\n        }\r\n    }\r\n\r\n    public Object getPropertyValueDirect(Object object) throws InvocationTargetException, IllegalAccessException {\r\n        Object fieldValue =  fieldInfo.get(object);\r\n        if (persistenceXToMany && !TypeUtils.isHibernateInitialized(fieldValue)) {\r\n            return null;\r\n        }\r\n        return fieldValue;\r\n    }\r\n\r\n    public Object getPropertyValue(Object object) throws InvocationTargetException, IllegalAccessException {\r\n        Object propertyValue =  fieldInfo.get(object);\r\n        if (format != null && propertyValue != null) {\r\n            if (fieldInfo.fieldClass == java.util.Date.class || fieldInfo.fieldClass == java.sql.Date.class) {\r\n                SimpleDateFormat dateFormat = new SimpleDateFormat(format, JSON.defaultLocale);\r\n                dateFormat.setTimeZone(JSON.defaultTimeZone);\r\n                return dateFormat.format(propertyValue);\r\n            }\r\n        }\r\n        return propertyValue;\r\n    }\r\n    \r\n    public int compareTo(FieldSerializer o) {\r\n        return this.fieldInfo.compareTo(o.fieldInfo);\r\n    }\r\n    \r\n\r\n    public void writeValue(JSONSerializer serializer, Object propertyValue) throws Exception {\r\n        if (runtimeInfo == null) {\r\n\r\n            Class<?> runtimeFieldClass;\r\n            if (propertyValue == null) {\r\n                runtimeFieldClass = this.fieldInfo.fieldClass;\r\n                if (runtimeFieldClass == byte.class) {\r\n                    runtimeFieldClass = Byte.class;\r\n                } else if (runtimeFieldClass == short.class) {\r\n                    runtimeFieldClass = Short.class;\r\n                } else if (runtimeFieldClass == int.class) {\r\n                    runtimeFieldClass = Integer.class;\r\n                } else if (runtimeFieldClass == long.class) {\r\n                    runtimeFieldClass = Long.class;\r\n                } else if (runtimeFieldClass == float.class) {\r\n                    runtimeFieldClass = Float.class;\r\n                } else if (runtimeFieldClass == double.class) {\r\n                    runtimeFieldClass = Double.class;\r\n                } else if (runtimeFieldClass == boolean.class) {\r\n                    runtimeFieldClass = Boolean.class;\r\n                }\r\n            } else {\r\n                runtimeFieldClass = propertyValue.getClass();\r\n            }\r\n\r\n            ObjectSerializer fieldSerializer = null;\r\n            JSONField fieldAnnotation = fieldInfo.getAnnotation();\r\n\r\n            if (fieldAnnotation != null && fieldAnnotation.serializeUsing() != Void.class) {\r\n                fieldSerializer = (ObjectSerializer) fieldAnnotation.serializeUsing().newInstance();\r\n                serializeUsing = true;\r\n            } else {\r\n                if (format != null) {\r\n                    if (runtimeFieldClass == double.class || runtimeFieldClass == Double.class) {\r\n                        fieldSerializer = new DoubleSerializer(format);\r\n                    } else if (runtimeFieldClass == float.class || runtimeFieldClass == Float.class) {\r\n                        fieldSerializer = new FloatCodec(format);\r\n                    }\r\n                }\r\n\r\n                if (fieldSerializer == null) {\r\n                    fieldSerializer = serializer.getObjectWriter(runtimeFieldClass);\r\n                }\r\n            }\r\n\r\n            runtimeInfo = new RuntimeSerializerInfo(fieldSerializer, runtimeFieldClass);\r\n        }\r\n        \r\n        final RuntimeSerializerInfo runtimeInfo = this.runtimeInfo;\r\n        \r\n        final int fieldFeatures\r\n                = (disableCircularReferenceDetect\r\n                ? (fieldInfo.serialzeFeatures | SerializerFeature.DisableCircularReferenceDetect.mask)\r\n                : fieldInfo.serialzeFeatures) | features;\r\n\r\n        if (propertyValue == null) {\r\n            SerializeWriter out  = serializer.out;\r\n\r\n            if (fieldInfo.fieldClass == Object.class\r\n                    && out.isEnabled(SerializerFeature.WRITE_MAP_NULL_FEATURES)) {\r\n                out.writeNull();\r\n                return;\r\n            }\r\n\r\n            Class<?> runtimeFieldClass = runtimeInfo.runtimeFieldClass;\r\n\r\n            if (Number.class.isAssignableFrom(runtimeFieldClass)) {\r\n                out.writeNull(features, SerializerFeature.WriteNullNumberAsZero.mask);\r\n                return;\r\n            } else if (String.class == runtimeFieldClass) {\r\n                out.writeNull(features, SerializerFeature.WriteNullStringAsEmpty.mask);\r\n                return;\r\n            } else if (Boolean.class == runtimeFieldClass) {\r\n                out.writeNull(features, SerializerFeature.WriteNullBooleanAsFalse.mask);\r\n                return;\r\n            } else if (Collection.class.isAssignableFrom(runtimeFieldClass)\r\n                    || runtimeFieldClass.isArray()) {\r\n                out.writeNull(features, SerializerFeature.WriteNullListAsEmpty.mask);\r\n                return;\r\n            }\r\n\r\n            ObjectSerializer fieldSerializer = runtimeInfo.fieldSerializer;\r\n\r\n            if ((out.isEnabled(SerializerFeature.WRITE_MAP_NULL_FEATURES))\r\n                    && fieldSerializer instanceof JavaBeanSerializer) {\r\n                out.writeNull();\r\n                return;\r\n            }\r\n\r\n            fieldSerializer.write(serializer, null, fieldInfo.name, fieldInfo.fieldType, fieldFeatures);\r\n            return;\r\n        }\r\n\r\n        if (fieldInfo.isEnum) {\r\n            if (writeEnumUsingName) {\r\n                serializer.out.writeString(((Enum<?>) propertyValue).name());\r\n                return;\r\n            }\r\n\r\n            if (writeEnumUsingToString) {\r\n                serializer.out.writeString(((Enum<?>) propertyValue).toString());\r\n                return;\r\n            }\r\n        }\r\n        \r\n        Class<?> valueClass = propertyValue.getClass();\r\n        ObjectSerializer valueSerializer;\r\n        if (valueClass == runtimeInfo.runtimeFieldClass || serializeUsing) {\r\n            valueSerializer = runtimeInfo.fieldSerializer;\r\n        } else {\r\n            valueSerializer = serializer.getObjectWriter(valueClass);\r\n        }\r\n        \r\n        if (format != null && !(valueSerializer instanceof DoubleSerializer || valueSerializer instanceof FloatCodec)) {\r\n            if (valueSerializer instanceof ContextObjectSerializer) {\r\n                ((ContextObjectSerializer) valueSerializer).write(serializer, propertyValue, this.fieldContext);    \r\n            } else {\r\n                serializer.writeWithFormat(propertyValue, format);\r\n            }\r\n            return;\r\n        }\r\n\r\n        if (fieldInfo.unwrapped) {\r\n            if (valueSerializer instanceof JavaBeanSerializer) {\r\n                JavaBeanSerializer javaBeanSerializer = (JavaBeanSerializer) valueSerializer;\r\n                javaBeanSerializer.write(serializer, propertyValue, fieldInfo.name, fieldInfo.fieldType, fieldFeatures, true);\r\n                return;\r\n            }\r\n\r\n            if (valueSerializer instanceof MapSerializer) {\r\n                MapSerializer mapSerializer = (MapSerializer) valueSerializer;\r\n                mapSerializer.write(serializer, propertyValue, fieldInfo.name, fieldInfo.fieldType, fieldFeatures, true);\r\n                return;\r\n            }\r\n        }\r\n\r\n        if ((features & SerializerFeature.WriteClassName.mask) != 0\r\n                && valueClass != fieldInfo.fieldClass\r\n                && valueSerializer instanceof JavaBeanSerializer) {\r\n            ((JavaBeanSerializer) valueSerializer).write(serializer, propertyValue, fieldInfo.name, fieldInfo.fieldType, fieldFeatures, false);\r\n            return;\r\n        }\r\n\r\n        if (browserCompatible && (fieldInfo.fieldClass == long.class || fieldInfo.fieldClass == Long.class)) {\r\n            long value = (Long) propertyValue;\r\n            if (value > 9007199254740991L || value < -9007199254740991L) {\r\n                serializer.getWriter().writeString(Long.toString(value));\r\n                return;\r\n            }\r\n        }\r\n\r\n        valueSerializer.write(serializer, propertyValue, fieldInfo.name, fieldInfo.fieldType, fieldFeatures);\r\n    }\r\n\r\n    static class RuntimeSerializerInfo {\r\n        final ObjectSerializer fieldSerializer;\r\n        final Class<?>         runtimeFieldClass;\r\n\r\n        public RuntimeSerializerInfo(ObjectSerializer fieldSerializer, Class<?> runtimeFieldClass){\r\n            this.fieldSerializer = fieldSerializer;\r\n            this.runtimeFieldClass = runtimeFieldClass;\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/FloatCodec.java",
    "content": "/*\r\n * Copyright 1999-2018 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.serializer;\r\n\r\nimport java.io.IOException;\r\nimport java.lang.reflect.Type;\r\nimport java.text.DecimalFormat;\r\nimport java.text.NumberFormat;\r\n\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.JSONLexer;\r\nimport com.alibaba.fastjson.parser.JSONToken;\r\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\r\nimport com.alibaba.fastjson.util.TypeUtils;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class FloatCodec implements ObjectSerializer, ObjectDeserializer {\r\n    private NumberFormat decimalFormat;\r\n\r\n    public static FloatCodec instance = new FloatCodec();\r\n\r\n    public FloatCodec(){\r\n\r\n    }\r\n\r\n    public FloatCodec(DecimalFormat decimalFormat){\r\n        this.decimalFormat = decimalFormat;\r\n    }\r\n\r\n    public FloatCodec(String decimalFormat){\r\n        this(new DecimalFormat(decimalFormat));\r\n    }\r\n\r\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\r\n        SerializeWriter out = serializer.out;\r\n        \r\n        if (object == null) {\r\n            out.writeNull(SerializerFeature.WriteNullNumberAsZero);\r\n            return;\r\n        }\r\n\r\n        float floatValue = ((Float) object).floatValue();\r\n        if (decimalFormat != null) {\r\n            String floatText = decimalFormat.format(floatValue);\r\n            out.write(floatText);\r\n        } else {\r\n            out.writeFloat(floatValue, true);\r\n        }\r\n    }\r\n    \r\n    @SuppressWarnings(\"unchecked\")\r\n    public <T> T deserialze(DefaultJSONParser parser, Type clazz, Object fieldName) {\r\n        try {\r\n            return (T) deserialze(parser);\r\n        } catch (Exception ex) {\r\n            throw new JSONException(\"parseLong error, field : \" + fieldName, ex);\r\n        }\r\n    }\r\n\r\n    @SuppressWarnings(\"unchecked\")\r\n    public static <T> T deserialze(DefaultJSONParser parser) {\r\n        final JSONLexer lexer = parser.lexer;\r\n\r\n        if (lexer.token() == JSONToken.LITERAL_INT) {\r\n            String val = lexer.numberString();\r\n            lexer.nextToken(JSONToken.COMMA);\r\n            return (T) Float.valueOf(Float.parseFloat(val));\r\n        }\r\n\r\n        if (lexer.token() == JSONToken.LITERAL_FLOAT) {\r\n            float val = lexer.floatValue();\r\n            lexer.nextToken(JSONToken.COMMA);\r\n            return (T) Float.valueOf(val);\r\n        }\r\n\r\n        Object value = parser.parse();\r\n\r\n        if (value == null) {\r\n            return null;\r\n        }\r\n\r\n        return (T) TypeUtils.castToFloat(value);\r\n    }\r\n\r\n    public int getFastMatchToken() {\r\n        return JSONToken.LITERAL_INT;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/GuavaCodec.java",
    "content": "package com.alibaba.fastjson.serializer;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\nimport com.google.common.collect.ArrayListMultimap;\nimport com.google.common.collect.Multimap;\n\nimport java.io.IOException;\nimport java.lang.reflect.ParameterizedType;\nimport java.lang.reflect.Type;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\n\n/**\n * Created by wenshao on 15/01/2017.\n */\npublic class GuavaCodec implements ObjectSerializer, ObjectDeserializer {\n    public static GuavaCodec instance = new GuavaCodec();\n\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\n        SerializeWriter out = serializer.out;\n        if (object instanceof Multimap) {\n            Multimap multimap = (Multimap) object;\n            serializer.write(multimap.asMap());\n        }\n    }\n\n    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n        Type rawType = type;\n        if (type instanceof ParameterizedType) {\n            rawType = ((ParameterizedType) type).getRawType();\n        }\n\n        if (rawType == ArrayListMultimap.class) {\n            ArrayListMultimap multimap = ArrayListMultimap.create();\n            JSONObject object = parser.parseObject();\n            for (Map.Entry entry : object.entrySet()) {\n                Object value = entry.getValue();\n                if (value instanceof Collection) {\n                    multimap.putAll(entry.getKey(), (List) value);\n                } else {\n                    multimap.put(entry.getKey(), value);\n                }\n            }\n\n            return (T) multimap;\n        }\n        return null;\n    }\n\n    public int getFastMatchToken() {\n        return 0;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/IntegerCodec.java",
    "content": "/*\r\n * Copyright 1999-2018 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.serializer;\r\n\r\nimport java.io.IOException;\r\nimport java.lang.reflect.Type;\r\nimport java.math.BigDecimal;\r\nimport java.util.concurrent.atomic.AtomicInteger;\r\n\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.JSONObject;\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.JSONLexer;\r\nimport com.alibaba.fastjson.parser.JSONToken;\r\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\r\nimport com.alibaba.fastjson.util.TypeUtils;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class IntegerCodec implements ObjectSerializer, ObjectDeserializer {\r\n\r\n    public static IntegerCodec instance = new IntegerCodec();\r\n\r\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\r\n        SerializeWriter out = serializer.out;\r\n\r\n        Number value = (Number) object;\r\n        \r\n        if (value == null) {\r\n            out.writeNull(SerializerFeature.WriteNullNumberAsZero);\r\n            return;\r\n        }\r\n        \r\n        if (object instanceof Long) {\r\n            out.writeLong(value.longValue());\r\n        } else {\r\n            out.writeInt(value.intValue());\r\n        }\r\n        \r\n        if (out.isEnabled(SerializerFeature.WriteClassName)) {\r\n            Class<?> clazz = value.getClass();\r\n            if (clazz == Byte.class) {\r\n                out.write('B');\r\n            } else if (clazz == Short.class) {\r\n                out.write('S');\r\n            }\r\n        }\r\n    }\r\n    \r\n    @SuppressWarnings(\"unchecked\")\r\n    public <T> T deserialze(DefaultJSONParser parser, Type clazz, Object fieldName) {\r\n        final JSONLexer lexer = parser.lexer;\r\n\r\n        final int token = lexer.token();\r\n\r\n        if (token == JSONToken.NULL) {\r\n            lexer.nextToken(JSONToken.COMMA);\r\n            return null;\r\n        }\r\n\r\n\r\n        Integer intObj;\r\n        try {\r\n            if (token == JSONToken.LITERAL_INT) {\r\n                int val = lexer.intValue();\r\n                lexer.nextToken(JSONToken.COMMA);\r\n                intObj = Integer.valueOf(val);\r\n            } else if (token == JSONToken.LITERAL_FLOAT) {\r\n                BigDecimal number = lexer.decimalValue();\r\n                intObj = TypeUtils.intValue(number);\r\n                lexer.nextToken(JSONToken.COMMA);\r\n            } else {\r\n                if (token == JSONToken.LBRACE) {\r\n                    JSONObject jsonObject = new JSONObject(true);\r\n                    parser.parseObject(jsonObject);\r\n                    intObj = TypeUtils.castToInt(jsonObject);\r\n                } else {\r\n                    Object value = parser.parse();\r\n                    intObj = TypeUtils.castToInt(value);\r\n                }\r\n            }\r\n        } catch (Exception ex) {\r\n            String message = \"parseInt error\";\r\n            if (fieldName != null) {\r\n                message += (\", field : \" + fieldName);\r\n            }\r\n            throw new JSONException(message, ex);\r\n        }\r\n\r\n        \r\n        if (clazz == AtomicInteger.class) {\r\n            return (T) new AtomicInteger(intObj.intValue());\r\n        }\r\n        \r\n        return (T) intObj;\r\n    }\r\n\r\n    public int getFastMatchToken() {\r\n        return JSONToken.LITERAL_INT;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/JSONAwareSerializer.java",
    "content": "/*\r\n * Copyright 1999-2018 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.serializer;\r\n\r\nimport java.io.IOException;\r\nimport java.lang.reflect.Type;\r\n\r\nimport com.alibaba.fastjson.JSONAware;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class JSONAwareSerializer implements ObjectSerializer {\r\n\r\n    public static JSONAwareSerializer instance = new JSONAwareSerializer();\r\n\r\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\r\n        SerializeWriter out = serializer.out;\r\n\r\n        if (object == null) {\r\n            out.writeNull();\r\n            return;\r\n        }\r\n\r\n        JSONAware aware = (JSONAware) object;\r\n        out.write(aware.toJSONString());\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/JSONLibDataFormatSerializer.java",
    "content": "package com.alibaba.fastjson.serializer;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\nimport java.util.Date;\n\nimport com.alibaba.fastjson.JSONObject;\n\npublic class JSONLibDataFormatSerializer implements ObjectSerializer {\n\n    public JSONLibDataFormatSerializer(){\n    }\n\n    @SuppressWarnings(\"deprecation\")\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\n    \tif (object == null) {\n    \t\tserializer.out.writeNull();\n    \t\treturn;\n    \t}\n    \t\n        Date date = (Date) object;\n       \n        JSONObject json = new JSONObject();\n        json.put(\"date\", date.getDate());\n        json.put(\"day\", date.getDay());\n        json.put(\"hours\", date.getHours());\n        json.put(\"minutes\", date.getMinutes());\n        json.put(\"month\", date.getMonth());\n        json.put(\"seconds\", date.getSeconds());\n        json.put(\"time\", date.getTime());\n        json.put(\"timezoneOffset\", date.getTimezoneOffset());\n        json.put(\"year\", date.getYear());\n\n        serializer.write(json);\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/JSONObjectCodec.java",
    "content": "package com.alibaba.fastjson.serializer;\n\nimport java.io.IOException;\nimport java.lang.reflect.Field;\nimport java.lang.reflect.Modifier;\nimport java.lang.reflect.Type;\n\npublic class JSONObjectCodec implements ObjectSerializer {\n\tpublic final static JSONObjectCodec instance = new JSONObjectCodec();\n\n\tpublic void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features)\n\t\t\tthrows IOException {\n\t\tSerializeWriter out = serializer.out;\n\t\tMapSerializer mapSerializer = MapSerializer.instance;\n\n\t\ttry {\n\t\t\tField mapField = object.getClass().getDeclaredField(\"map\");\n\t\t\tif (Modifier.isPrivate(mapField.getModifiers())) {\n\t\t\t\tmapField.setAccessible(true);\n\t\t\t}\n\n\t\t\tObject map = mapField.get(object);\n\t\t\tmapSerializer.write(serializer, map, fieldName, fieldType, features);\n\n\t\t} catch (Exception e) {\n\t\t\tout.writeNull();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/JSONSerializable.java",
    "content": "/*\n * Copyright 1999-2018 Alibaba Group.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage com.alibaba.fastjson.serializer;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\n\n/**\n * @author wenshao[szujobs@hotmail.com]\n */\npublic interface JSONSerializable {\n\n    /**\n     * write to json\n     * @param serializer json seriliazer\n     * @param fieldName field name\n     * @param fieldType field type\n     * @param features field features\n     * @throws IOException\n     */\n    void write(JSONSerializer serializer, //\n               Object fieldName, //\n               Type fieldType, //\n               int features //\n    ) throws IOException;\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/JSONSerializableSerializer.java",
    "content": "/*\n * Copyright 1999-2018 Alibaba Group.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage com.alibaba.fastjson.serializer;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\n\n/**\n * @author wenshao[szujobs@hotmail.com]\n */\npublic class JSONSerializableSerializer implements ObjectSerializer {\n\n    public static JSONSerializableSerializer instance = new JSONSerializableSerializer();\n\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\n        JSONSerializable jsonSerializable = ((JSONSerializable) object);\n        if (jsonSerializable == null) {\n            serializer.writeNull();\n            return;\n        }\n        jsonSerializable.write(serializer, fieldName, fieldType, features);\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/JSONSerializer.java",
    "content": "/*\r\n * Copyright 1999-2018 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.serializer;\r\n\r\nimport java.io.ByteArrayOutputStream;\r\nimport java.io.IOException;\r\nimport java.io.Writer;\r\nimport java.lang.reflect.Type;\r\nimport java.text.DateFormat;\r\nimport java.text.SimpleDateFormat;\r\nimport java.util.*;\r\nimport java.util.zip.GZIPOutputStream;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.util.IOUtils;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class JSONSerializer extends SerializeFilterable {\r\n\r\n    protected final SerializeConfig                  config;\r\n    public final SerializeWriter                     out;\r\n\r\n    private int                                      indentCount = 0;\r\n    private String                                   indent      = \"\\t\";\r\n\r\n    /**\r\n     * #1868 为了区分全局配置（FastJsonConfig）的日期格式配置以及toJSONString传入的日期格式配置\r\n     * 建议使用以下调整：\r\n     * 1. dateFormatPattern、dateFormat只作为toJSONString传入配置使用；\r\n     * 2. 新增fastJsonConfigDateFormatPattern，用于存储通过（FastJsonConfig）配置的日期格式\r\n     */\r\n    private String                                   dateFormatPattern;\r\n    private DateFormat                               dateFormat;\r\n\r\n    private String                                   fastJsonConfigDateFormatPattern;\r\n\r\n    protected IdentityHashMap<Object, SerialContext> references  = null;\r\n    protected SerialContext                          context;\r\n\r\n    protected TimeZone                               timeZone    = JSON.defaultTimeZone;\r\n    protected Locale                                 locale      = JSON.defaultLocale;\r\n\r\n    public JSONSerializer(){\r\n        this(new SerializeWriter(), SerializeConfig.getGlobalInstance());\r\n    }\r\n\r\n    public JSONSerializer(SerializeWriter out){\r\n        this(out, SerializeConfig.getGlobalInstance());\r\n    }\r\n\r\n    public JSONSerializer(SerializeConfig config){\r\n        this(new SerializeWriter(), config);\r\n    }\r\n\r\n    public JSONSerializer(SerializeWriter out, SerializeConfig config){\r\n        this.out = out;\r\n        this.config = config;\r\n    }\r\n\r\n    public String getDateFormatPattern() {\r\n        if (dateFormat instanceof SimpleDateFormat) {\r\n            return ((SimpleDateFormat) dateFormat).toPattern();\r\n        }\r\n        return dateFormatPattern;\r\n    }\r\n\r\n    public DateFormat getDateFormat() {\r\n        if (dateFormat == null) {\r\n            if (dateFormatPattern != null) {\r\n                dateFormat = this.generateDateFormat( dateFormatPattern );\r\n            }\r\n        }\r\n\r\n        return dateFormat;\r\n    }\r\n\r\n    private DateFormat generateDateFormat(String dateFormatPattern) {\r\n        DateFormat dateFormat = new SimpleDateFormat(dateFormatPattern, locale);\r\n        dateFormat.setTimeZone(timeZone);\r\n\r\n        return dateFormat;\r\n    }\r\n\r\n    public void setDateFormat(DateFormat dateFormat) {\r\n        this.dateFormat = dateFormat;\r\n        if (dateFormatPattern != null) {\r\n            dateFormatPattern = null;\r\n        }\r\n    }\r\n\r\n    public void setDateFormat(String dateFormat) {\r\n        this.dateFormatPattern = dateFormat;\r\n        if (this.dateFormat != null) {\r\n            this.dateFormat = null;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Set global date format pattern in FastJsonConfig\r\n     *\r\n     * @param dateFormatPattern global date format pattern\r\n     */\r\n    public void setFastJsonConfigDateFormatPattern(String dateFormatPattern) {\r\n        this.fastJsonConfigDateFormatPattern = dateFormatPattern;\r\n    }\r\n\r\n    public String getFastJsonConfigDateFormatPattern() {\r\n        return this.fastJsonConfigDateFormatPattern;\r\n    }\r\n\r\n    public SerialContext getContext() {\r\n        return context;\r\n    }\r\n\r\n    public void setContext(SerialContext context) {\r\n        this.context = context;\r\n    }\r\n\r\n    public void setContext(SerialContext parent, Object object, Object fieldName, int features) {\r\n        this.setContext(parent, object, fieldName, features, 0);\r\n    }\r\n\r\n    public void setContext(SerialContext parent, Object object, Object fieldName, int features, int fieldFeatures) {\r\n        if (out.disableCircularReferenceDetect) {\r\n            return;\r\n        }\r\n\r\n        this.context = new SerialContext(parent, object, fieldName, features, fieldFeatures);\r\n        if (references == null) {\r\n            references = new IdentityHashMap<Object, SerialContext>();\r\n        }\r\n        this.references.put(object, context);\r\n    }\r\n\r\n    public void setContext(Object object, Object fieldName) {\r\n        this.setContext(context, object, fieldName, 0);\r\n    }\r\n\r\n    public void popContext() {\r\n        if (context != null) {\r\n            this.context = this.context.parent;\r\n        }\r\n    }\r\n\r\n    public final boolean isWriteClassName(Type fieldType, Object obj) {\r\n        return out.isEnabled(SerializerFeature.WriteClassName) //\r\n               && (fieldType != null //\r\n                   || (!out.isEnabled(SerializerFeature.NotWriteRootClassName)) //\r\n                   || (context != null && (context.parent != null)));\r\n    }\r\n\r\n    public boolean containsReference(Object value) {\r\n        if (references == null) {\r\n            return false;\r\n        }\r\n\r\n        SerialContext refContext = references.get(value);\r\n        if (refContext == null) {\r\n            return false;\r\n        }\r\n\r\n        if (value == Collections.emptyMap()) {\r\n            return false;\r\n        }\r\n\r\n        Object fieldName = refContext.fieldName;\r\n\r\n        return fieldName == null || fieldName instanceof Integer || fieldName instanceof String;\r\n    }\r\n\r\n    public void writeReference(Object object) {\r\n        SerialContext context = this.context;\r\n        Object current = context.object;\r\n\r\n        if (object == current) {\r\n            out.write(\"{\\\"$ref\\\":\\\"@\\\"}\");\r\n            return;\r\n        }\r\n\r\n        SerialContext parentContext = context.parent;\r\n\r\n        if (parentContext != null) {\r\n            if (object == parentContext.object) {\r\n                out.write(\"{\\\"$ref\\\":\\\"..\\\"}\");\r\n                return;\r\n            }\r\n        }\r\n\r\n        SerialContext rootContext = context;\r\n        for (;;) {\r\n            if (rootContext.parent == null) {\r\n                break;\r\n            }\r\n            rootContext = rootContext.parent;\r\n        }\r\n\r\n        if (object == rootContext.object) {\r\n            out.write(\"{\\\"$ref\\\":\\\"$\\\"}\");\r\n        } else {\r\n            out.write(\"{\\\"$ref\\\":\\\"\");\r\n            String path = references.get(object).toString();\r\n            out.write(path);\r\n            out.write(\"\\\"}\");\r\n        }\r\n    }\r\n\r\n    public boolean checkValue(SerializeFilterable filterable) {\r\n        return (valueFilters != null && valueFilters.size() > 0) //\r\n               || (contextValueFilters != null && contextValueFilters.size() > 0) //\r\n               || (filterable.valueFilters != null && filterable.valueFilters.size() > 0)\r\n               || (filterable.contextValueFilters != null && filterable.contextValueFilters.size() > 0)\r\n               || out.writeNonStringValueAsString;\r\n    }\r\n    \r\n    public boolean hasNameFilters(SerializeFilterable filterable) {\r\n        return (nameFilters != null && nameFilters.size() > 0) //\r\n               || (filterable.nameFilters != null && filterable.nameFilters.size() > 0);\r\n    }\r\n\r\n    public boolean hasPropertyFilters(SerializeFilterable filterable) {\r\n        return (propertyFilters != null && propertyFilters.size() > 0) //\r\n                || (filterable.propertyFilters != null && filterable.propertyFilters.size() > 0);\r\n    }\r\n\r\n    public int getIndentCount() {\r\n        return indentCount;\r\n    }\r\n\r\n    public void incrementIndent() {\r\n        indentCount++;\r\n    }\r\n\r\n    public void decrementIdent() {\r\n        indentCount--;\r\n    }\r\n\r\n    public void println() {\r\n        out.write('\\n');\r\n        for (int i = 0; i < indentCount; ++i) {\r\n            out.write(indent);\r\n        }\r\n    }\r\n\r\n    public SerializeWriter getWriter() {\r\n        return out;\r\n    }\r\n\r\n    public String toString() {\r\n        return out.toString();\r\n    }\r\n\r\n    public void config(SerializerFeature feature, boolean state) {\r\n        out.config(feature, state);\r\n    }\r\n\r\n    public boolean isEnabled(SerializerFeature feature) {\r\n        return out.isEnabled(feature);\r\n    }\r\n\r\n    public void writeNull() {\r\n        this.out.writeNull();\r\n    }\r\n\r\n    public SerializeConfig getMapping() {\r\n        return config;\r\n    }\r\n\r\n    public static void write(Writer out, Object object) {\r\n        SerializeWriter writer = new SerializeWriter();\r\n        try {\r\n            JSONSerializer serializer = new JSONSerializer(writer);\r\n            serializer.write(object);\r\n            writer.writeTo(out);\r\n        } catch (IOException ex) {\r\n            throw new JSONException(ex.getMessage(), ex);\r\n        } finally {\r\n            writer.close();\r\n        }\r\n    }\r\n\r\n    public static void write(SerializeWriter out, Object object) {\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.write(object);\r\n    }\r\n\r\n    public final void write(Object object) {\r\n        if (object == null) {\r\n            out.writeNull();\r\n            return;\r\n        }\r\n\r\n        Class<?> clazz = object.getClass();\r\n        ObjectSerializer writer = getObjectWriter(clazz);\r\n\r\n        try {\r\n            writer.write(this, object, null, null, 0);\r\n        } catch (IOException e) {\r\n            throw new JSONException(e.getMessage(), e);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * @since 1.2.57\r\n     *\r\n     */\r\n    public final void writeAs(Object object, Class type) {\r\n        if (object == null) {\r\n            out.writeNull();\r\n            return;\r\n        }\r\n\r\n        ObjectSerializer writer = getObjectWriter(type);\r\n\r\n        try {\r\n            writer.write(this, object, null, null, 0);\r\n        } catch (IOException e) {\r\n            throw new JSONException(e.getMessage(), e);\r\n        }\r\n    }\r\n\r\n    public final void writeWithFieldName(Object object, Object fieldName) {\r\n        writeWithFieldName(object, fieldName, null, 0);\r\n    }\r\n\r\n    protected final void writeKeyValue(char seperator, String key, Object value) {\r\n        if (seperator != '\\0') {\r\n            out.write(seperator);\r\n        }\r\n        out.writeFieldName(key);\r\n        write(value);\r\n    }\r\n\r\n    public final void writeWithFieldName(Object object, Object fieldName, Type fieldType, int fieldFeatures) {\r\n        try {\r\n            if (object == null) {\r\n                out.writeNull();\r\n                return;\r\n            }\r\n\r\n            Class<?> clazz = object.getClass();\r\n\r\n            ObjectSerializer writer = getObjectWriter(clazz);\r\n\r\n            writer.write(this, object, fieldName, fieldType, fieldFeatures);\r\n        } catch (IOException e) {\r\n            throw new JSONException(e.getMessage(), e);\r\n        }\r\n    }\r\n\r\n    public final void writeWithFormat(Object object, String format) {\r\n        if (object instanceof Date) {\r\n            if (\"unixtime\".equals(format)) {\r\n                long seconds = ((Date) object).getTime() / 1000L;\r\n                out.writeInt((int) seconds);\r\n                return;\r\n            }\r\n\r\n            if (\"millis\".equals(format)) {\r\n                out.writeLong(((Date) object).getTime());\r\n                return;\r\n            }\r\n\r\n            DateFormat dateFormat = this.getDateFormat();\r\n            if (dateFormat == null) {\r\n                if (format != null) {\r\n                    try {\r\n                        dateFormat = this.generateDateFormat(format);\r\n                    } catch (IllegalArgumentException e) {\r\n                        String format2 = format.replaceAll(\"T\", \"'T'\");\r\n                        dateFormat = this.generateDateFormat(format2);\r\n                    }\r\n                } else if (fastJsonConfigDateFormatPattern != null) {\r\n                    dateFormat = this.generateDateFormat(fastJsonConfigDateFormatPattern);\r\n                } else {\r\n                    dateFormat = this.generateDateFormat(JSON.DEFFAULT_DATE_FORMAT);\r\n                }\r\n            }\r\n            String text = dateFormat.format((Date) object);\r\n            out.writeString(text);\r\n            return;\r\n        }\r\n\r\n        if (object instanceof byte[]) {\r\n            byte[] bytes = (byte[]) object;\r\n            if (\"gzip\".equals(format) || \"gzip,base64\".equals(format)) {\r\n                GZIPOutputStream gzipOut = null;\r\n                try {\r\n                    ByteArrayOutputStream byteOut = new ByteArrayOutputStream();\r\n                    if (bytes.length < 512) {\r\n                        gzipOut = new GZIPOutputStream(byteOut, bytes.length);\r\n                    } else {\r\n                        gzipOut = new GZIPOutputStream(byteOut);\r\n                    }\r\n                    gzipOut.write(bytes);\r\n                    gzipOut.finish();\r\n                    out.writeByteArray(byteOut.toByteArray());\r\n                } catch (IOException ex) {\r\n                    throw new JSONException(\"write gzipBytes error\", ex);\r\n                } finally {\r\n                    IOUtils.close(gzipOut);\r\n                }\r\n            } else if (\"hex\".equals(format)) {\r\n                out.writeHex(bytes);\r\n            } else {\r\n                out.writeByteArray(bytes);\r\n            }\r\n            return;\r\n        }\r\n\r\n        if (object instanceof Collection) {\r\n            Collection collection = (Collection) object;\r\n            Iterator iterator = collection.iterator();\r\n            out.write('[');\r\n            for (int i = 0; i < collection.size(); i++) {\r\n                Object item = iterator.next();\r\n                if (i != 0) {\r\n                    out.write(',');\r\n                }\r\n                writeWithFormat(item, format);\r\n            }\r\n            out.write(']');\r\n            return;\r\n        }\r\n        write(object);\r\n    }\r\n\r\n    public final void write(String text) {\r\n        StringCodec.instance.write(this, text);\r\n    }\r\n\r\n    public ObjectSerializer getObjectWriter(Class<?> clazz) {\r\n        return config.getObjectWriter(clazz);\r\n    }\r\n\r\n    public void close() {\r\n        this.out.close();\r\n    }\r\n   \r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/JSONSerializerMap.java",
    "content": "package com.alibaba.fastjson.serializer;\n\n\n@Deprecated\npublic class JSONSerializerMap extends SerializeConfig {\n    public final boolean put(Class<?> clazz, ObjectSerializer serializer) {\n        return super.put(clazz, serializer);\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/JavaBeanSerializer.java",
    "content": "/*\r\n * Copyright 1999-2018 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.serializer;\r\n\r\nimport java.io.IOException;\r\nimport java.lang.reflect.Field;\r\nimport java.lang.reflect.InvocationTargetException;\r\nimport java.lang.reflect.Type;\r\nimport java.lang.reflect.WildcardType;\r\nimport java.util.ArrayList;\r\nimport java.util.Arrays;\r\nimport java.util.Collection;\r\nimport java.util.Collections;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.LinkedHashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Set;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.PropertyNamingStrategy;\r\nimport com.alibaba.fastjson.annotation.JSONField;\r\nimport com.alibaba.fastjson.annotation.JSONType;\r\nimport com.alibaba.fastjson.util.FieldInfo;\r\nimport com.alibaba.fastjson.util.TypeUtils;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class JavaBeanSerializer extends SerializeFilterable implements ObjectSerializer {\r\n    // serializers\r\n    protected final FieldSerializer[] getters;\r\n    protected final FieldSerializer[] sortedGetters;\r\n    \r\n    protected final SerializeBeanInfo  beanInfo;\r\n\r\n    private transient volatile long[] hashArray;\r\n    private transient volatile short[] hashArrayMapping;\r\n    \r\n    public JavaBeanSerializer(Class<?> beanType){\r\n        this(beanType, (Map<String, String>) null);\r\n    }\r\n\r\n    public JavaBeanSerializer(Class<?> beanType, String... aliasList){\r\n        this(beanType, createAliasMap(aliasList));\r\n    }\r\n\r\n    static Map<String, String> createAliasMap(String... aliasList) {\r\n        Map<String, String> aliasMap = new HashMap<String, String>();\r\n        for (String alias : aliasList) {\r\n            aliasMap.put(alias, alias);\r\n        }\r\n\r\n        return aliasMap;\r\n    }\r\n\r\n    public JSONType getJSONType() {\r\n        return beanInfo.jsonType;\r\n    }\r\n\r\n    /**\r\n     * @since 1.2.42\r\n     */\r\n    public Class<?> getType() {\r\n        return beanInfo.beanType;\r\n    }\r\n\r\n    public JavaBeanSerializer(Class<?> beanType, Map<String, String> aliasMap){\r\n        this(TypeUtils.buildBeanInfo(beanType, aliasMap, null));\r\n    }\r\n    \r\n    public JavaBeanSerializer(SerializeBeanInfo beanInfo) {\r\n        this.beanInfo = beanInfo;\r\n        \r\n        sortedGetters = new FieldSerializer[beanInfo.sortedFields.length];\r\n        for (int i = 0; i < sortedGetters.length; ++i) {\r\n            sortedGetters[i] = new FieldSerializer(beanInfo.beanType, beanInfo.sortedFields[i]);\r\n        }\r\n        \r\n        if (beanInfo.fields == beanInfo.sortedFields) {\r\n            getters = sortedGetters;\r\n        } else {\r\n            getters = new FieldSerializer[beanInfo.fields.length];\r\n            boolean hashNotMatch = false;\r\n            for (int i = 0; i < getters.length; ++i) {\r\n                FieldSerializer fieldSerializer = getFieldSerializer(beanInfo.fields[i].name);\r\n                if (fieldSerializer == null) {\r\n                    hashNotMatch = true;\r\n                    break;\r\n                }\r\n                getters[i] = fieldSerializer;\r\n            }\r\n            if (hashNotMatch) {\r\n                System.arraycopy(sortedGetters, 0, getters, 0, sortedGetters.length);\r\n            }\r\n        }\r\n\r\n        if (beanInfo.jsonType != null) {\r\n            for (Class<? extends SerializeFilter> filterClass : beanInfo.jsonType.serialzeFilters()) {\r\n                try {\r\n                    SerializeFilter filter = filterClass.getConstructor().newInstance();\r\n                    this.addFilter(filter);\r\n                } catch (Exception e) {\r\n                    // skip\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    public void writeDirectNonContext(JSONSerializer serializer, //\r\n                      Object object, //\r\n                      Object fieldName, //\r\n                      Type fieldType, //\r\n                      int features) throws IOException {\r\n        write(serializer, object, fieldName, fieldType, features);\r\n    }\r\n    \r\n    public void writeAsArray(JSONSerializer serializer, //\r\n                                       Object object, //\r\n                                       Object fieldName, //\r\n                                       Type fieldType, //\r\n                                       int features) throws IOException {\r\n        write(serializer, object, fieldName, fieldType, features);\r\n    }\r\n    \r\n    public void writeAsArrayNonContext(JSONSerializer serializer, //\r\n                                       Object object, //\r\n                                       Object fieldName, //\r\n                                       Type fieldType, //\r\n                                       int features) throws IOException {\r\n        write(serializer, object, fieldName, fieldType, features);\r\n    }\r\n\r\n    public void write(JSONSerializer serializer, //\r\n                      Object object, //\r\n                      Object fieldName, //\r\n                      Type fieldType, //\r\n                      int features) throws IOException {\r\n        write(serializer, object, fieldName, fieldType, features, false);\r\n    }\r\n\r\n    public void writeNoneASM(JSONSerializer serializer, //\r\n                      Object object, //\r\n                      Object fieldName, //\r\n                      Type fieldType, //\r\n                      int features) throws IOException {\r\n        write(serializer, object, fieldName, fieldType, features, false);\r\n    }\r\n\r\n    protected void write(JSONSerializer serializer, //\r\n                      Object object, //\r\n                      Object fieldName, //\r\n                      Type fieldType, //\r\n                      int features,\r\n                      boolean unwrapped\r\n    ) throws IOException {\r\n        SerializeWriter out = serializer.out;\r\n\r\n        if (object == null) {\r\n            out.writeNull();\r\n            return;\r\n        }\r\n\r\n        if (writeReference(serializer, object, features)) {\r\n            return;\r\n        }\r\n\r\n        final FieldSerializer[] getters;\r\n\r\n        if (out.sortField) {\r\n            getters = this.sortedGetters;\r\n        } else {\r\n            getters = this.getters;\r\n        }\r\n\r\n        SerialContext parent = serializer.context;\r\n        if (!this.beanInfo.beanType.isEnum()) {\r\n            serializer.setContext(parent, object, fieldName, this.beanInfo.features, features);\r\n        }\r\n\r\n        final boolean writeAsArray = isWriteAsArray(serializer, features);\r\n\r\n        FieldSerializer errorFieldSerializer = null;\r\n        try {\r\n            final char startSeperator = writeAsArray ? '[' : '{';\r\n            final char endSeperator = writeAsArray ? ']' : '}';\r\n            if (!unwrapped) {\r\n                out.append(startSeperator);\r\n            }\r\n\r\n            if (getters.length > 0 && out.isEnabled(SerializerFeature.PrettyFormat)) {\r\n                serializer.incrementIndent();\r\n                serializer.println();\r\n            }\r\n\r\n            boolean commaFlag = false;\r\n\r\n            if ((this.beanInfo.features & SerializerFeature.WriteClassName.mask) != 0\r\n                ||(features & SerializerFeature.WriteClassName.mask) != 0\r\n                || serializer.isWriteClassName(fieldType, object)) {\r\n                Class<?> objClass = object.getClass();\r\n\r\n                final Type type;\r\n                if (objClass != fieldType && fieldType instanceof WildcardType) {\r\n                    type = TypeUtils.getClass(fieldType);\r\n                } else {\r\n                    type = fieldType;\r\n                }\r\n\r\n                if (objClass != type) {\r\n                    writeClassName(serializer, beanInfo.typeKey, object);\r\n                    commaFlag = true;\r\n                }\r\n            }\r\n\r\n            char seperator = commaFlag ? ',' : '\\0';\r\n\r\n            final boolean writeClassName = out.isEnabled(SerializerFeature.WriteClassName);\r\n            char newSeperator = this.writeBefore(serializer, object, seperator);\r\n            commaFlag = newSeperator == ',';\r\n\r\n            final boolean skipTransient = out.isEnabled(SerializerFeature.SkipTransientField);\r\n            final boolean ignoreNonFieldGetter = out.isEnabled(SerializerFeature.IgnoreNonFieldGetter);\r\n\r\n            for (int i = 0; i < getters.length; ++i) {\r\n                FieldSerializer fieldSerializer = getters[i];\r\n\r\n                Field field = fieldSerializer.fieldInfo.field;\r\n                FieldInfo fieldInfo = fieldSerializer.fieldInfo;\r\n                String fieldInfoName = fieldInfo.name;\r\n                Class<?> fieldClass = fieldInfo.fieldClass;\r\n\r\n                final boolean fieldUseSingleQuotes = SerializerFeature.isEnabled(out.features, fieldInfo.serialzeFeatures, SerializerFeature.UseSingleQuotes);\r\n                final boolean directWritePrefix = out.quoteFieldNames && !fieldUseSingleQuotes;\r\n\r\n                if (skipTransient) {\r\n                    if (fieldInfo.fieldTransient) {\r\n                        continue;\r\n                    }\r\n                }\r\n\r\n                if (ignoreNonFieldGetter) {\r\n                    if (field == null) {\r\n                        continue;\r\n                    }\r\n                }\r\n\r\n                boolean notApply = false;\r\n                if ((!this.applyName(serializer, object, fieldInfoName)) //\r\n                    || !this.applyLabel(serializer, fieldInfo.label)) {\r\n                    if (writeAsArray) {\r\n                        notApply = true;\r\n                    } else {\r\n                        continue;\r\n                    }\r\n                }\r\n\r\n                if (fieldInfoName.equals(beanInfo.typeKey)\r\n                        && serializer.isWriteClassName(fieldType, object)) {\r\n                    continue;\r\n                }\r\n\r\n                Object propertyValue;\r\n\r\n                if (notApply) {\r\n                    propertyValue = null;\r\n                } else {\r\n                    try {\r\n                        propertyValue = fieldSerializer.getPropertyValueDirect(object);\r\n                    } catch (InvocationTargetException ex) {\r\n                        errorFieldSerializer = fieldSerializer;\r\n                        if (out.isEnabled(SerializerFeature.IgnoreErrorGetter)) {\r\n                            propertyValue = null;\r\n                        } else {\r\n                            throw ex;\r\n                        }\r\n                    }\r\n                }\r\n\r\n                if (!this.apply(serializer, object, fieldInfoName, propertyValue)) {\r\n                    continue;\r\n                }\r\n\r\n                if (fieldClass == String.class && \"trim\".equals(fieldInfo.format)) {\r\n                    if (propertyValue != null) {\r\n                        propertyValue = ((String) propertyValue).trim();\r\n                    }\r\n                }\r\n\r\n                String key = fieldInfoName;\r\n                key = this.processKey(serializer, object, key, propertyValue);\r\n\r\n                Object originalValue = propertyValue;\r\n                propertyValue = this.processValue(serializer, fieldSerializer.fieldContext, object, fieldInfoName,\r\n                                                        propertyValue, features);\r\n\r\n                if (propertyValue == null) {\r\n                    int serialzeFeatures = fieldInfo.serialzeFeatures;\r\n                    JSONField jsonField = fieldInfo.getAnnotation();\r\n                    if (beanInfo.jsonType != null) {\r\n                        serialzeFeatures |= SerializerFeature.of(beanInfo.jsonType.serialzeFeatures());\r\n                    }\r\n                    // beanInfo.jsonType\r\n                    if (jsonField != null && !\"\".equals(jsonField.defaultValue())) {\r\n                        propertyValue = jsonField.defaultValue();\r\n                    } else if (fieldClass == Boolean.class) {\r\n                        int defaultMask = SerializerFeature.WriteNullBooleanAsFalse.mask;\r\n                        final int mask = defaultMask | SerializerFeature.WriteMapNullValue.mask;\r\n                        if ((!writeAsArray) && (serialzeFeatures & mask) == 0 && (out.features & mask) == 0) {\r\n                            continue;\r\n                        } else if ((serialzeFeatures & defaultMask) != 0) {\r\n                            propertyValue = false;\r\n                        } else if ((out.features & defaultMask) != 0\r\n                                && (serialzeFeatures & SerializerFeature.WriteMapNullValue.mask) == 0) {\r\n                            propertyValue = false;\r\n                        }\r\n                    } else if (fieldClass == String.class) {\r\n                        int defaultMask = SerializerFeature.WriteNullStringAsEmpty.mask;\r\n                        final int mask = defaultMask | SerializerFeature.WriteMapNullValue.mask;\r\n                        if ((!writeAsArray) && (serialzeFeatures & mask) == 0 && (out.features & mask) == 0) {\r\n                            continue;\r\n                        } else if ((serialzeFeatures & defaultMask) != 0) {\r\n                            propertyValue = \"\";\r\n                        } else if ((out.features & defaultMask) != 0\r\n                                && (serialzeFeatures & SerializerFeature.WriteMapNullValue.mask) == 0) {\r\n                            propertyValue = \"\";\r\n                        }\r\n                    } else if (Number.class.isAssignableFrom(fieldClass)) {\r\n                        int defaultMask = SerializerFeature.WriteNullNumberAsZero.mask;\r\n                        final int mask = defaultMask | SerializerFeature.WriteMapNullValue.mask;\r\n                        if ((!writeAsArray) && (serialzeFeatures & mask) == 0 && (out.features & mask) == 0) {\r\n                            continue;\r\n                        } else if ((serialzeFeatures & defaultMask) != 0) {\r\n                            propertyValue = 0;\r\n                        } else if ((out.features & defaultMask) != 0\r\n                                && (serialzeFeatures & SerializerFeature.WriteMapNullValue.mask) == 0) {\r\n                            propertyValue = 0;\r\n                        }\r\n                    } else if (Collection.class.isAssignableFrom(fieldClass)) {\r\n                        int defaultMask = SerializerFeature.WriteNullListAsEmpty.mask;\r\n                        final int mask = defaultMask | SerializerFeature.WriteMapNullValue.mask;\r\n                        if ((!writeAsArray) && (serialzeFeatures & mask) == 0 && (out.features & mask) == 0) {\r\n                            continue;\r\n                        } else if ((serialzeFeatures & defaultMask) != 0) {\r\n                            propertyValue = Collections.emptyList();\r\n                        } else if ((out.features & defaultMask) != 0\r\n                                && (serialzeFeatures & SerializerFeature.WriteMapNullValue.mask) == 0) {\r\n                            propertyValue = Collections.emptyList();\r\n                        }\r\n                    } else if ((!writeAsArray) && (!fieldSerializer.writeNull)\r\n                            && !out.isEnabled(SerializerFeature.WriteMapNullValue.mask)\r\n                            && (serialzeFeatures & SerializerFeature.WriteMapNullValue.mask) == 0) { \r\n                        continue;\r\n                    }\r\n                }\r\n\r\n                if (propertyValue != null  //\r\n                        && (out.notWriteDefaultValue //\r\n                        || (fieldInfo.serialzeFeatures & SerializerFeature.NotWriteDefaultValue.mask) != 0 //\r\n                        || (beanInfo.features & SerializerFeature.NotWriteDefaultValue.mask) != 0 //\r\n                        )) {\r\n                    Class<?> fieldCLass = fieldInfo.fieldClass;\r\n                    if (fieldCLass == byte.class && propertyValue instanceof Byte\r\n                        && ((Byte) propertyValue).byteValue() == 0) {\r\n                        continue;\r\n                    } else if (fieldCLass == short.class && propertyValue instanceof Short\r\n                               && ((Short) propertyValue).shortValue() == 0) {\r\n                        continue;\r\n                    } else if (fieldCLass == int.class && propertyValue instanceof Integer\r\n                               && ((Integer) propertyValue).intValue() == 0) {\r\n                        continue;\r\n                    } else if (fieldCLass == long.class && propertyValue instanceof Long\r\n                               && ((Long) propertyValue).longValue() == 0L) {\r\n                        continue;\r\n                    } else if (fieldCLass == float.class && propertyValue instanceof Float\r\n                               && ((Float) propertyValue).floatValue() == 0F) {\r\n                        continue;\r\n                    } else if (fieldCLass == double.class && propertyValue instanceof Double\r\n                               && ((Double) propertyValue).doubleValue() == 0D) {\r\n                        continue;\r\n                    } else if (fieldCLass == boolean.class && propertyValue instanceof Boolean\r\n                               && !((Boolean) propertyValue).booleanValue()) {\r\n                        continue;\r\n                    }\r\n                }\r\n\r\n                if (commaFlag) {\r\n                    if (fieldInfo.unwrapped\r\n                            && propertyValue instanceof Map\r\n                            && ((Map) propertyValue).size() == 0) {\r\n                        continue;\r\n                    }\r\n\r\n                    out.write(',');\r\n                    if (out.isEnabled(SerializerFeature.PrettyFormat)) {\r\n                        serializer.println();\r\n                    }\r\n                }\r\n\r\n                if (key != fieldInfoName) {\r\n                    if (!writeAsArray) {\r\n                        out.writeFieldName(key, true);\r\n                    }\r\n\r\n                    serializer.write(propertyValue);\r\n                } else if (originalValue != propertyValue) {\r\n                    if (!writeAsArray) {\r\n                        fieldSerializer.writePrefix(serializer);\r\n                    }\r\n                    serializer.write(propertyValue);\r\n                } else {\r\n                    if (!writeAsArray) {\r\n                        boolean isMap = Map.class.isAssignableFrom(fieldClass);\r\n                        boolean isJavaBean = !fieldClass.isPrimitive() && !fieldClass.getName().startsWith(\"java.\") || fieldClass == Object.class;\r\n                        if (writeClassName || !fieldInfo.unwrapped || !(isMap || isJavaBean)) {\r\n                            if (directWritePrefix) {\r\n                                out.write(fieldInfo.name_chars, 0, fieldInfo.name_chars.length);\r\n                            } else {\r\n                                fieldSerializer.writePrefix(serializer);\r\n                            }\r\n                        }\r\n                    }\r\n\r\n                    if (!writeAsArray) {\r\n                        JSONField fieldAnnotation = fieldInfo.getAnnotation();\r\n                        if (fieldClass == String.class && (fieldAnnotation == null || fieldAnnotation.serializeUsing() == Void.class)) {\r\n                            if (propertyValue == null) {\r\n                                int serialzeFeatures = fieldSerializer.features;\r\n                                if (beanInfo.jsonType != null) {\r\n                                    serialzeFeatures |= SerializerFeature.of(beanInfo.jsonType.serialzeFeatures());\r\n                                }\r\n                                if ((out.features & SerializerFeature.WriteNullStringAsEmpty.mask) != 0\r\n                                        && (serialzeFeatures & SerializerFeature.WriteMapNullValue.mask) == 0) {\r\n                                    out.writeString(\"\");\r\n                                } else if ((serialzeFeatures & SerializerFeature.WriteNullStringAsEmpty.mask) != 0) {\r\n                                    out.writeString(\"\");\r\n                                } else {\r\n                                    out.writeNull();\r\n                                }\r\n                            } else {\r\n                                String propertyValueString = (String) propertyValue;\r\n\r\n                                if (fieldUseSingleQuotes) {\r\n                                    out.writeStringWithSingleQuote(propertyValueString);\r\n                                } else {\r\n                                    out.writeStringWithDoubleQuote(propertyValueString, (char) 0);\r\n                                }\r\n                            }\r\n                        } else {\r\n                            if (fieldInfo.unwrapped\r\n                                    && propertyValue instanceof Map\r\n                                    && ((Map) propertyValue).size() == 0) {\r\n                                commaFlag = false;\r\n                                continue;\r\n                            }\r\n\r\n                            fieldSerializer.writeValue(serializer, propertyValue);\r\n                        }\r\n                    } else {\r\n                        fieldSerializer.writeValue(serializer, propertyValue);\r\n                    }\r\n                }\r\n\r\n                boolean fieldUnwrappedNull = false;\r\n                if (fieldInfo.unwrapped\r\n                        && propertyValue instanceof Map) {\r\n                    Map map = ((Map) propertyValue);\r\n                    if (map.size() == 0) {\r\n                        fieldUnwrappedNull = true;\r\n                    } else if (!serializer.isEnabled(SerializerFeature.WriteMapNullValue)){\r\n                        boolean hasNotNull = false;\r\n                        for (Object value : map.values()) {\r\n                            if (value != null) {\r\n                                hasNotNull = true;\r\n                                break;\r\n                            }\r\n                        }\r\n                        if (!hasNotNull) {\r\n                            fieldUnwrappedNull = true;\r\n                        }\r\n                    }\r\n                }\r\n\r\n                if (!fieldUnwrappedNull) {\r\n                    commaFlag = true;\r\n                }\r\n            }\r\n\r\n            this.writeAfter(serializer, object, commaFlag ? ',' : '\\0');\r\n\r\n            if (getters.length > 0 && out.isEnabled(SerializerFeature.PrettyFormat)) {\r\n                serializer.decrementIdent();\r\n                serializer.println();\r\n            }\r\n\r\n            if (!unwrapped) {\r\n                out.append(endSeperator);\r\n            }\r\n        } catch (Exception e) {\r\n            String errorMessage = \"write javaBean error, fastjson version \" + JSON.VERSION;\r\n            if (object != null) {\r\n                errorMessage += \", class \" + object.getClass().getName();\r\n            }\r\n            if (fieldName != null) {\r\n                errorMessage += \", fieldName : \" + fieldName;\r\n            } else if (errorFieldSerializer != null && errorFieldSerializer.fieldInfo != null) {\r\n                FieldInfo fieldInfo = errorFieldSerializer.fieldInfo;\r\n                if (fieldInfo.method != null) {\r\n                    errorMessage += \", method : \" + fieldInfo.method.getName();\r\n                } else {\r\n                    errorMessage += \", fieldName : \" + errorFieldSerializer.fieldInfo.name;\r\n                }\r\n            }\r\n            if (e.getMessage() != null) {\r\n                errorMessage += (\", \" + e.getMessage());\r\n            }\r\n\r\n            Throwable cause = null;\r\n            if (e instanceof InvocationTargetException) {\r\n                cause = e.getCause();\r\n            }\r\n            if (cause == null) {\r\n                cause = e;\r\n            }\r\n\r\n            throw new JSONException(errorMessage, cause);\r\n        } finally {\r\n            serializer.context = parent;\r\n        }\r\n    }\r\n\r\n    protected void writeClassName(JSONSerializer serializer, String typeKey, Object object) {\r\n        if (typeKey == null) {\r\n            typeKey = serializer.config.typeKey;\r\n        }\r\n        serializer.out.writeFieldName(typeKey, false);\r\n        String typeName = this.beanInfo.typeName;\r\n        if (typeName == null) {\r\n            Class<?> clazz = object.getClass();\r\n\r\n            if (TypeUtils.isProxy(clazz)) {\r\n                clazz = clazz.getSuperclass();\r\n            }\r\n\r\n            typeName = clazz.getName();\r\n        }\r\n        serializer.write(typeName);\r\n    }\r\n\r\n    public boolean writeReference(JSONSerializer serializer, Object object, int fieldFeatures) {\r\n        SerialContext context = serializer.context;\r\n        int mask = SerializerFeature.DisableCircularReferenceDetect.mask;\r\n        if (context == null || (context.features & mask) != 0 || (fieldFeatures & mask) != 0) {\r\n            return false;\r\n        }\r\n\r\n        if (serializer.references != null && serializer.references.containsKey(object)) {\r\n            serializer.writeReference(object);\r\n            return true;\r\n        } else {\r\n            return false;\r\n        }\r\n    }\r\n    \r\n    protected boolean isWriteAsArray(JSONSerializer serializer) {\r\n        return isWriteAsArray(serializer, 0);   \r\n    }\r\n\r\n    protected boolean isWriteAsArray(JSONSerializer serializer, int fieldFeatrues) {\r\n        final int mask = SerializerFeature.BeanToArray.mask;\r\n        return (beanInfo.features & mask) != 0 //\r\n                || serializer.out.beanToArray //\r\n                || (fieldFeatrues & mask) != 0;\r\n    }\r\n    \r\n    public Object getFieldValue(Object object, String key) {\r\n        FieldSerializer fieldDeser = getFieldSerializer(key);\r\n        if (fieldDeser == null) {\r\n            throw new JSONException(\"field not found. \" + key);\r\n        }\r\n        \r\n        try {\r\n            return fieldDeser.getPropertyValue(object);\r\n        } catch (InvocationTargetException ex) {\r\n            throw new JSONException(\"getFieldValue error.\" + key, ex);\r\n        } catch (IllegalAccessException ex) {\r\n            throw new JSONException(\"getFieldValue error.\" + key, ex);\r\n        }\r\n    }\r\n\r\n    public Object getFieldValue(Object object, String key, long keyHash, boolean throwFieldNotFoundException) {\r\n        FieldSerializer fieldDeser = getFieldSerializer(keyHash);\r\n        if (fieldDeser == null) {\r\n            if (throwFieldNotFoundException) {\r\n                throw new JSONException(\"field not found. \" + key);\r\n            }\r\n            return null;\r\n        }\r\n\r\n        try {\r\n            return fieldDeser.getPropertyValue(object);\r\n        } catch (InvocationTargetException ex) {\r\n            throw new JSONException(\"getFieldValue error.\" + key, ex);\r\n        } catch (IllegalAccessException ex) {\r\n            throw new JSONException(\"getFieldValue error.\" + key, ex);\r\n        }\r\n    }\r\n\r\n    public FieldSerializer getFieldSerializer(String key) {\r\n        if (key == null) {\r\n            return null;\r\n        }\r\n\r\n        int low = 0;\r\n        int high = sortedGetters.length - 1;\r\n\r\n        while (low <= high) {\r\n            int mid = (low + high) >>> 1;\r\n\r\n            String fieldName = sortedGetters[mid].fieldInfo.name;\r\n\r\n            int cmp = fieldName.compareTo(key);\r\n\r\n            if (cmp < 0) {\r\n                low = mid + 1;\r\n            } else if (cmp > 0) {\r\n                high = mid - 1;\r\n            } else {\r\n                return sortedGetters[mid]; // key found\r\n            }\r\n        }\r\n\r\n        return null; // key not found.\r\n    }\r\n\r\n    public FieldSerializer getFieldSerializer(long hash) {\r\n        PropertyNamingStrategy[] namingStrategies = null;\r\n        if (this.hashArray == null) {\r\n            namingStrategies = PropertyNamingStrategy.values();\r\n\r\n            long[] hashArray = new long[sortedGetters.length * namingStrategies.length];\r\n            int index = 0;\r\n            for (int i = 0; i < sortedGetters.length; i++) {\r\n                String name = sortedGetters[i].fieldInfo.name;\r\n                hashArray[index++] = TypeUtils.fnv1a_64(name);\r\n\r\n                for (int j = 0; j < namingStrategies.length; j++) {\r\n                    String name_t = namingStrategies[j].translate(name);\r\n                    if (name.equals(name_t)) {\r\n                        continue;\r\n                    }\r\n                    hashArray[index++] = TypeUtils.fnv1a_64(name_t);\r\n                }\r\n            }\r\n            Arrays.sort(hashArray, 0, index);\r\n\r\n            this.hashArray = new long[index];\r\n            System.arraycopy(hashArray, 0, this.hashArray, 0, index);\r\n        }\r\n\r\n        int pos = Arrays.binarySearch(hashArray, hash);\r\n        if (pos < 0) {\r\n            return null;\r\n        }\r\n\r\n        if (hashArrayMapping == null) {\r\n            if (namingStrategies == null) {\r\n                namingStrategies = PropertyNamingStrategy.values();\r\n            }\r\n\r\n            short[] mapping = new short[hashArray.length];\r\n            Arrays.fill(mapping, (short) -1);\r\n            for (int i = 0; i < sortedGetters.length; i++) {\r\n                String name = sortedGetters[i].fieldInfo.name;\r\n\r\n                int p = Arrays.binarySearch(hashArray\r\n                        , TypeUtils.fnv1a_64(name));\r\n                if (p >= 0) {\r\n                    mapping[p] = (short) i;\r\n                }\r\n\r\n                for (int j = 0; j < namingStrategies.length; j++) {\r\n                    String name_t = namingStrategies[j].translate(name);\r\n                    if (name.equals(name_t)) {\r\n                        continue;\r\n                    }\r\n\r\n                    int p_t = Arrays.binarySearch(hashArray\r\n                            , TypeUtils.fnv1a_64(name_t));\r\n                    if (p_t >= 0) {\r\n                        mapping[p_t] = (short) i;\r\n                    }\r\n                }\r\n            }\r\n            hashArrayMapping = mapping;\r\n        }\r\n\r\n        int getterIndex = hashArrayMapping[pos];\r\n        if (getterIndex != -1) {\r\n            return sortedGetters[getterIndex];\r\n        }\r\n\r\n        return null; // key not found.\r\n    }\r\n\r\n    public List<Object> getFieldValues(Object object) throws Exception {\r\n        List<Object> fieldValues = new ArrayList<Object>(sortedGetters.length);\r\n        for (FieldSerializer getter : sortedGetters) {\r\n            fieldValues.add(getter.getPropertyValue(object));\r\n        }\r\n\r\n        return fieldValues;\r\n    }\r\n\r\n    // for jsonpath deepSet\r\n    public List<Object> getObjectFieldValues(Object object) throws Exception {\r\n        List<Object> fieldValues = new ArrayList<Object>(sortedGetters.length);\r\n        for (FieldSerializer getter : sortedGetters) {\r\n            Class fieldClass = getter.fieldInfo.fieldClass;\r\n            if (fieldClass.isPrimitive()) {\r\n                continue;\r\n            }\r\n            if (fieldClass.getName().startsWith(\"java.lang.\")) {\r\n                continue;\r\n            }\r\n            fieldValues.add(getter.getPropertyValue(object));\r\n        }\r\n\r\n        return fieldValues;\r\n    }\r\n    \r\n    public int getSize(Object object) throws Exception {\r\n        int size = 0;\r\n        for (FieldSerializer getter : sortedGetters) {\r\n            Object value = getter.getPropertyValueDirect(object);\r\n            if (value != null) {\r\n                size ++;\r\n            }\r\n        }\r\n        return size;\r\n    }\r\n    \r\n    /**\r\n     * Get field names of not null fields. Keep the same logic as getSize.\r\n     * \r\n     * @param object the object to be checked\r\n     * @return field name set\r\n     * @throws Exception\r\n     * @see #getSize(Object)\r\n     */\r\n    public Set<String> getFieldNames(Object object) throws Exception {\r\n        Set<String> fieldNames = new HashSet<String>();\r\n        for (FieldSerializer getter : sortedGetters) {\r\n            Object value = getter.getPropertyValueDirect(object);\r\n            if (value != null) {\r\n                fieldNames.add(getter.fieldInfo.name);\r\n            }\r\n        }\r\n        return fieldNames;\r\n    }\r\n\r\n    public Map<String, Object> getFieldValuesMap(Object object) throws Exception {\r\n        Map<String, Object> map = new LinkedHashMap<String, Object>(sortedGetters.length);\r\n        boolean skipTransient = true;\r\n        FieldInfo fieldInfo = null;\r\n\r\n        for (FieldSerializer getter : sortedGetters) {\r\n            skipTransient = SerializerFeature.isEnabled(getter.features, SerializerFeature.SkipTransientField);\r\n            fieldInfo = getter.fieldInfo;\r\n\r\n            if (skipTransient && fieldInfo != null && fieldInfo.fieldTransient) {\r\n                continue;\r\n            }\r\n\r\n            if (getter.fieldInfo.unwrapped) {\r\n                Object unwrappedValue = getter.getPropertyValue(object);\r\n                Object map1 = JSON.toJSON(unwrappedValue);\r\n                if (map1 instanceof Map) {\r\n                    map.putAll((Map) map1);\r\n                } else {\r\n                    map.put(getter.fieldInfo.name, getter.getPropertyValue(object));\r\n                }\r\n            } else {\r\n                map.put(getter.fieldInfo.name, getter.getPropertyValue(object));\r\n            }\r\n        }\r\n\r\n        return map;\r\n    }\r\n\r\n    protected BeanContext getBeanContext(int orinal) {\r\n        return sortedGetters[orinal].fieldContext;\r\n    }\r\n    \r\n    protected Type getFieldType(int ordinal) {\r\n        return sortedGetters[ordinal].fieldInfo.fieldType;\r\n    }\r\n    \r\n    protected char writeBefore(JSONSerializer jsonBeanDeser, //\r\n                            Object object, char seperator) {\r\n        \r\n        if (jsonBeanDeser.beforeFilters != null) {\r\n            for (BeforeFilter beforeFilter : jsonBeanDeser.beforeFilters) {\r\n                seperator = beforeFilter.writeBefore(jsonBeanDeser, object, seperator);\r\n            }\r\n        }\r\n        \r\n        if (this.beforeFilters != null) {\r\n            for (BeforeFilter beforeFilter : this.beforeFilters) {\r\n                seperator = beforeFilter.writeBefore(jsonBeanDeser, object, seperator);\r\n            }\r\n        }\r\n        \r\n        return seperator;\r\n    }\r\n    \r\n    protected char writeAfter(JSONSerializer jsonBeanDeser, // \r\n                           Object object, char seperator) {\r\n        if (jsonBeanDeser.afterFilters != null) {\r\n            for (AfterFilter afterFilter : jsonBeanDeser.afterFilters) {\r\n                seperator = afterFilter.writeAfter(jsonBeanDeser, object, seperator);\r\n            }\r\n        }\r\n        \r\n        if (this.afterFilters != null) {\r\n            for (AfterFilter afterFilter : this.afterFilters) {\r\n                seperator = afterFilter.writeAfter(jsonBeanDeser, object, seperator);\r\n            }\r\n        }\r\n        \r\n        return seperator;\r\n    }\r\n    \r\n    protected boolean applyLabel(JSONSerializer jsonBeanDeser, String label) {\r\n        if (jsonBeanDeser.labelFilters != null) {\r\n            for (LabelFilter propertyFilter : jsonBeanDeser.labelFilters) {\r\n                if (!propertyFilter.apply(label)) {\r\n                    return false;\r\n                }\r\n            }\r\n        }\r\n        \r\n        if (this.labelFilters != null) {\r\n            for (LabelFilter propertyFilter : this.labelFilters) {\r\n                if (!propertyFilter.apply(label)) {\r\n                    return false;\r\n                }\r\n            }\r\n        }\r\n        \r\n        return true;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/JodaCodec.java",
    "content": "package com.alibaba.fastjson.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONLexer;\nimport com.alibaba.fastjson.parser.JSONToken;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\nimport com.alibaba.fastjson.util.TypeUtils;\nimport org.joda.time.*;\nimport org.joda.time.format.*;\n\npublic class JodaCodec implements ObjectSerializer, ContextObjectSerializer, ObjectDeserializer {\n    public final static JodaCodec instance = new JodaCodec();\n\n    private final static String            defaultPatttern     = \"yyyy-MM-dd HH:mm:ss\";\n    private final static DateTimeFormatter defaultFormatter    = DateTimeFormat.forPattern(defaultPatttern);\n    private final static DateTimeFormatter defaultFormatter_23 = DateTimeFormat.forPattern(\"yyyy-MM-dd HH:mm:ss.SSS\");\n    private final static DateTimeFormatter formatter_dt19_tw   = DateTimeFormat.forPattern(\"yyyy/MM/dd HH:mm:ss\");\n    private final static DateTimeFormatter formatter_dt19_cn   = DateTimeFormat.forPattern(\"yyyy年M月d日 HH:mm:ss\");\n    private final static DateTimeFormatter formatter_dt19_cn_1 = DateTimeFormat.forPattern(\"yyyy年M月d日 H时m分s秒\");\n    private final static DateTimeFormatter formatter_dt19_kr   = DateTimeFormat.forPattern(\"yyyy년M월d일 HH:mm:ss\");\n    private final static DateTimeFormatter formatter_dt19_us   = DateTimeFormat.forPattern(\"MM/dd/yyyy HH:mm:ss\");\n    private final static DateTimeFormatter formatter_dt19_eur  = DateTimeFormat.forPattern(\"dd/MM/yyyy HH:mm:ss\");\n    private final static DateTimeFormatter formatter_dt19_de   = DateTimeFormat.forPattern(\"dd.MM.yyyy HH:mm:ss\");\n    private final static DateTimeFormatter formatter_dt19_in   = DateTimeFormat.forPattern(\"dd-MM-yyyy HH:mm:ss\");\n\n    private final static DateTimeFormatter formatter_d8        = DateTimeFormat.forPattern(\"yyyyMMdd\");\n    private final static DateTimeFormatter formatter_d10_tw    = DateTimeFormat.forPattern(\"yyyy/MM/dd\");\n    private final static DateTimeFormatter formatter_d10_cn    = DateTimeFormat.forPattern(\"yyyy年M月d日\");\n    private final static DateTimeFormatter formatter_d10_kr    = DateTimeFormat.forPattern(\"yyyy년M월d일\");\n    private final static DateTimeFormatter formatter_d10_us    = DateTimeFormat.forPattern(\"MM/dd/yyyy\");\n    private final static DateTimeFormatter formatter_d10_eur   = DateTimeFormat.forPattern(\"dd/MM/yyyy\");\n    private final static DateTimeFormatter formatter_d10_de    = DateTimeFormat.forPattern(\"dd.MM.yyyy\");\n    private final static DateTimeFormatter formatter_d10_in    = DateTimeFormat.forPattern(\"dd-MM-yyyy\");\n\n    private final static DateTimeFormatter ISO_FIXED_FORMAT =\n            DateTimeFormat.forPattern(\"yyyy-MM-dd HH:mm:ss\").withZone(DateTimeZone.getDefault());\n\n    private final static String formatter_iso8601_pattern     = \"yyyy-MM-dd'T'HH:mm:ss\";\n    private final static String formatter_iso8601_pattern_23     = \"yyyy-MM-dd'T'HH:mm:ss.SSS\";\n    private final static String formatter_iso8601_pattern_29     = \"yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS\";\n    private final static DateTimeFormatter formatter_iso8601  = DateTimeFormat.forPattern(formatter_iso8601_pattern);\n\n\n    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n        return deserialze(parser, type, fieldName, null, 0);\n    }\n\n    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName, String format, int feature) {\n        JSONLexer lexer = parser.lexer;\n        if (lexer.token() == JSONToken.NULL){\n            lexer.nextToken();\n            return null;\n        }\n\n        if (lexer.token() == JSONToken.LITERAL_STRING) {\n            String text = lexer.stringVal();\n            lexer.nextToken();\n\n            DateTimeFormatter formatter = null;\n            if (format != null) {\n                if (defaultPatttern.equals(format)) {\n                    formatter = defaultFormatter;\n                } else {\n                    formatter = DateTimeFormat.forPattern(format);\n                }\n            }\n\n            if (\"\".equals(text)) {\n                return null;\n            }\n\n            if (type == LocalDateTime.class) {\n                LocalDateTime localDateTime;\n                if (text.length() == 10 || text.length() == 8) {\n                    LocalDate localDate = parseLocalDate(text, format, formatter);\n                    localDateTime = localDate.toLocalDateTime(LocalTime.MIDNIGHT);\n                } else {\n                    localDateTime = parseDateTime(text, formatter);\n                }\n                return (T) localDateTime;\n            } else if (type == LocalDate.class) {\n                LocalDate localDate;\n                if (text.length() == 23) {\n                    LocalDateTime localDateTime = LocalDateTime.parse(text);\n                    localDate = localDateTime.toLocalDate();\n                } else {\n                    localDate = parseLocalDate(text, format, formatter);\n                }\n\n                return (T) localDate;\n            } else if (type == LocalTime.class) {\n                LocalTime localDate;\n                if (text.length() == 23) {\n                    LocalDateTime localDateTime = LocalDateTime.parse(text);\n                    localDate = localDateTime.toLocalTime();\n                } else {\n                    localDate = LocalTime.parse(text);\n                }\n                return (T) localDate;\n            } else if (type == DateTime.class) {\n                if (formatter == defaultFormatter) {\n                    formatter = ISO_FIXED_FORMAT;\n                }\n\n                DateTime zonedDateTime = parseZonedDateTime(text, formatter);\n\n                return (T) zonedDateTime;\n            } else if (type == DateTimeZone.class) {\n                DateTimeZone offsetTime = DateTimeZone.forID(text);\n\n                return (T) offsetTime;\n            } else if (type == Period.class) {\n                Period period = Period.parse(text);\n\n                return (T) period;\n            } else if (type == Duration.class) {\n                Duration duration = Duration.parse(text);\n\n                return (T) duration;\n            } else if (type == Instant.class) {\n                boolean digit = true;\n                for (int i = 0; i < text.length(); ++i) {\n                    char ch = text.charAt(i);\n                    if (ch < '0' || ch > '9') {\n                        digit = false;\n                        break;\n                    }\n                }\n                if (digit && text.length() > 8 && text.length() < 19) {\n                    long epochMillis = Long.parseLong(text);\n                    return (T) new Instant(epochMillis);\n                }\n\n                Instant instant = Instant.parse(text);\n\n                return (T) instant;\n            } else if (type == DateTimeFormatter.class) {\n                return (T) DateTimeFormat.forPattern(text);\n            }\n        } else if (lexer.token() == JSONToken.LITERAL_INT) {\n            long millis = lexer.longValue();\n            lexer.nextToken();\n\n            TimeZone timeZone = JSON.defaultTimeZone;\n            if (timeZone == null) {\n                timeZone = TimeZone.getDefault();\n            }\n\n            if (type == DateTime.class) {\n                return (T) new DateTime(millis, DateTimeZone.forTimeZone(timeZone));\n            }\n\n            LocalDateTime localDateTime = new LocalDateTime(millis, DateTimeZone.forTimeZone(timeZone));\n            if (type == LocalDateTime.class) {\n                return (T) localDateTime;\n            }\n\n            if (type == LocalDate.class) {\n                return (T) localDateTime.toLocalDate();\n            }\n\n            if (type == LocalTime.class) {\n                return (T) localDateTime.toLocalTime();\n            }\n\n            if (type == Instant.class) {\n                Instant instant = new Instant(millis);\n\n                return (T) instant;\n            }\n\n            throw new UnsupportedOperationException();\n        } else if (lexer.token() == JSONToken.LBRACE) {\n            JSONObject object = parser.parseObject();\n\n            if (type == Instant.class) {\n                Object epochSecond = object.get(\"epochSecond\");\n\n                if (epochSecond instanceof Number) {\n                    return (T) Instant.ofEpochSecond(\n                                TypeUtils.longExtractValue((Number) epochSecond));\n                }\n\n                Object millis = object.get(\"millis\");\n                if (millis instanceof Number) {\n                    return (T) Instant.ofEpochMilli(\n                            TypeUtils.longExtractValue((Number) millis));\n                }\n            }\n        } else {\n            throw new UnsupportedOperationException();\n        }\n        return null;\n    }\n\n    protected LocalDateTime parseDateTime(String text, DateTimeFormatter formatter) {\n        if (formatter == null) {\n            if (text.length() == 19) {\n                char c4 = text.charAt(4);\n                char c7 = text.charAt(7);\n                char c10 = text.charAt(10);\n                char c13 = text.charAt(13);\n                char c16 = text.charAt(16);\n                if (c13 == ':' && c16 == ':') {\n                    if (c4 == '-' && c7 == '-') { // yyyy-MM-dd  or  yyyy-MM-dd'T'\n                        if (c10 == 'T') {\n                            formatter = formatter_iso8601;\n                        } else if (c10 == ' ') {\n                            formatter = defaultFormatter;\n                        }\n                    } else if (c4 == '/' && c7 == '/') { // tw yyyy/mm/dd\n                        formatter = formatter_dt19_tw;\n                    } else {\n                        char c0 = text.charAt(0);\n                        char c1 = text.charAt(1);\n                        char c2 = text.charAt(2);\n                        char c3 = text.charAt(3);\n                        char c5 = text.charAt(5);\n                        if (c2 == '/' && c5 == '/') { // mm/dd/yyyy or mm/dd/yyyy\n                            int v0 = (c0 - '0') * 10 + (c1 - '0');\n                            int v1 = (c3 - '0') * 10 + (c4 - '0');\n                            if (v0 > 12) {\n                                formatter = formatter_dt19_eur;\n                            } else if (v1 > 12) {\n                                formatter = formatter_dt19_us;\n                            } else {\n                                String country = Locale.getDefault().getCountry();\n\n                                if (country.equals(\"US\")) {\n                                    formatter = formatter_dt19_us;\n                                } else if (country.equals(\"BR\") //\n                                        || country.equals(\"AU\")) {\n                                    formatter = formatter_dt19_eur;\n                                }\n                            }\n                        } else if (c2 == '.' && c5 == '.') { // dd.mm.yyyy\n                            formatter = formatter_dt19_de;\n                        } else if (c2 == '-' && c5 == '-') { // dd-mm-yyyy\n                            formatter = formatter_dt19_in;\n                        }\n                    }\n                }\n            } else if (text.length() == 23) {\n                char c4 = text.charAt(4);\n                char c7 = text.charAt(7);\n                char c10 = text.charAt(10);\n                char c13 = text.charAt(13);\n                char c16 = text.charAt(16);\n                char c19 = text.charAt(19);\n\n                if (c13 == ':'\n                        && c16 == ':'\n                        && c4 == '-'\n                        && c7 == '-'\n                        && c10 == ' '\n                        && c19 == '.'\n                ) {\n                    formatter = defaultFormatter_23;\n                }\n            }\n\n            if (text.length() >= 17) {\n                char c4 = text.charAt(4);\n                if (c4 == '年') {\n                    if (text.charAt(text.length() - 1) == '秒') {\n                        formatter = formatter_dt19_cn_1;\n                    } else {\n                        formatter = formatter_dt19_cn;\n                    }\n                } else if (c4 == '년') {\n                    formatter = formatter_dt19_kr;\n                }\n            }\n\n            boolean digit = true;\n            for (int i = 0; i < text.length(); ++i) {\n                char ch = text.charAt(i);\n                if (ch < '0' || ch > '9') {\n                    digit = false;\n                    break;\n                }\n            }\n            if (digit && text.length() > 8 && text.length() < 19) {\n                long epochMillis = Long.parseLong(text);\n                return new LocalDateTime(epochMillis, DateTimeZone.forTimeZone(JSON.defaultTimeZone));\n            }\n        }\n\n        return formatter == null ? //\n                LocalDateTime.parse(text) //\n                : LocalDateTime.parse(text, formatter);\n    }\n\n    protected LocalDate parseLocalDate(String text, String format, DateTimeFormatter formatter) {\n        if (formatter == null) {\n            if (text.length() == 8) {\n                formatter = formatter_d8;\n            }\n\n            if (text.length() == 10) {\n                char c4 = text.charAt(4);\n                char c7 = text.charAt(7);\n                if (c4 == '/' && c7 == '/') { // tw yyyy/mm/dd\n                    formatter = formatter_d10_tw;\n                }\n\n                char c0 = text.charAt(0);\n                char c1 = text.charAt(1);\n                char c2 = text.charAt(2);\n                char c3 = text.charAt(3);\n                char c5 = text.charAt(5);\n                if (c2 == '/' && c5 == '/') { // mm/dd/yyyy or mm/dd/yyyy\n                    int v0 = (c0 - '0') * 10 + (c1 - '0');\n                    int v1 = (c3 - '0') * 10 + (c4 - '0');\n                    if (v0 > 12) {\n                        formatter = formatter_d10_eur;\n                    } else if (v1 > 12) {\n                        formatter = formatter_d10_us;\n                    } else {\n                        String country = Locale.getDefault().getCountry();\n\n                        if (country.equals(\"US\")) {\n                            formatter = formatter_d10_us;\n                        } else if (country.equals(\"BR\") //\n                                || country.equals(\"AU\")) {\n                            formatter = formatter_d10_eur;\n                        }\n                    }\n                } else if (c2 == '.' && c5 == '.') { // dd.mm.yyyy\n                    formatter = formatter_d10_de;\n                } else if (c2 == '-' && c5 == '-') { // dd-mm-yyyy\n                    formatter = formatter_d10_in;\n                }\n            }\n\n            if (text.length() >= 9) {\n                char c4 = text.charAt(4);\n                if (c4 == '年') {\n                    formatter = formatter_d10_cn;\n                } else if (c4 == '년') {\n                    formatter = formatter_d10_kr;\n                }\n            }\n\n            boolean digit = true;\n            for (int i = 0; i < text.length(); ++i) {\n                char ch = text.charAt(i);\n                if (ch < '0' || ch > '9') {\n                    digit = false;\n                    break;\n                }\n            }\n            if (digit && text.length() > 8 && text.length() < 19) {\n                long epochMillis = Long.parseLong(text);\n                return new LocalDateTime(epochMillis, DateTimeZone.forTimeZone(JSON.defaultTimeZone))\n                        .toLocalDate();\n            }\n        }\n\n        return formatter == null ? //\n                LocalDate.parse(text) //\n                : LocalDate.parse(text, formatter);\n    }\n\n    protected DateTime parseZonedDateTime(String text, DateTimeFormatter formatter) {\n        if (formatter == null) {\n            if (text.length() == 19) {\n                char c4 = text.charAt(4);\n                char c7 = text.charAt(7);\n                char c10 = text.charAt(10);\n                char c13 = text.charAt(13);\n                char c16 = text.charAt(16);\n                if (c13 == ':' && c16 == ':') {\n                    if (c4 == '-' && c7 == '-') { // yyyy-MM-dd  or  yyyy-MM-dd'T'\n                        if (c10 == 'T') {\n                            formatter = formatter_iso8601;\n                        } else if (c10 == ' ') {\n                            formatter = defaultFormatter;\n                        }\n                    } else if (c4 == '/' && c7 == '/') { // tw yyyy/mm/dd\n                        formatter = formatter_dt19_tw;\n                    } else {\n                        char c0 = text.charAt(0);\n                        char c1 = text.charAt(1);\n                        char c2 = text.charAt(2);\n                        char c3 = text.charAt(3);\n                        char c5 = text.charAt(5);\n                        if (c2 == '/' && c5 == '/') { // mm/dd/yyyy or mm/dd/yyyy\n                            int v0 = (c0 - '0') * 10 + (c1 - '0');\n                            int v1 = (c3 - '0') * 10 + (c4 - '0');\n                            if (v0 > 12) {\n                                formatter = formatter_dt19_eur;\n                            } else if (v1 > 12) {\n                                formatter = formatter_dt19_us;\n                            } else {\n                                String country = Locale.getDefault().getCountry();\n\n                                if (country.equals(\"US\")) {\n                                    formatter = formatter_dt19_us;\n                                } else if (country.equals(\"BR\") //\n                                        || country.equals(\"AU\")) {\n                                    formatter = formatter_dt19_eur;\n                                }\n                            }\n                        } else if (c2 == '.' && c5 == '.') { // dd.mm.yyyy\n                            formatter = formatter_dt19_de;\n                        } else if (c2 == '-' && c5 == '-') { // dd-mm-yyyy\n                            formatter = formatter_dt19_in;\n                        }\n                    }\n                }\n            }\n\n            if (text.length() >= 17) {\n                char c4 = text.charAt(4);\n                if (c4 == '年') {\n                    if (text.charAt(text.length() - 1) == '秒') {\n                        formatter = formatter_dt19_cn_1;\n                    } else {\n                        formatter = formatter_dt19_cn;\n                    }\n                } else if (c4 == '년') {\n                    formatter = formatter_dt19_kr;\n                }\n            }\n        }\n\n        return formatter == null ? //\n                DateTime.parse(text) //\n                : DateTime.parse(text, formatter);\n    }\n\n    public int getFastMatchToken() {\n        return JSONToken.LITERAL_STRING;\n    }\n\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType,\n                      int features) throws IOException {\n        SerializeWriter out = serializer.out;\n        if (object == null) {\n            out.writeNull();\n        } else {\n            if (fieldType == null) {\n                fieldType = object.getClass();\n            }\n\n            if (fieldType == LocalDateTime.class) {\n                final int mask = SerializerFeature.UseISO8601DateFormat.getMask();\n                LocalDateTime dateTime = (LocalDateTime) object;\n                String format = serializer.getDateFormatPattern();\n\n                if (format == null) {\n                    if ((features & mask) != 0 || serializer.isEnabled(SerializerFeature.UseISO8601DateFormat)) {\n                        format = formatter_iso8601_pattern;\n                    } else if (serializer.isEnabled(SerializerFeature.WriteDateUseDateFormat)) {\n                        format = JSON.DEFFAULT_DATE_FORMAT;\n                    } else {\n                        int millis = dateTime.getMillisOfSecond();\n                        if (millis == 0) {\n                            format = formatter_iso8601_pattern_23;\n                        } else {\n                            format = formatter_iso8601_pattern_29;\n                        }\n                    }\n                }\n\n                if (format != null) {\n                    write(out, dateTime, format);\n                } else {\n                    out.writeLong(dateTime.toDateTime(DateTimeZone.forTimeZone(JSON.defaultTimeZone)).toInstant().getMillis());\n                }\n            } else {\n                out.writeString(object.toString());\n            }\n        }\n    }\n\n    public void write(JSONSerializer serializer, Object object, BeanContext context) throws IOException {\n        SerializeWriter out = serializer.out;\n        String format = context.getFormat();\n        write(out, (ReadablePartial) object, format);\n    }\n\n    private void write(SerializeWriter out, ReadablePartial object, String format) {\n        DateTimeFormatter formatter;\n        if (format.equals(formatter_iso8601_pattern)) {\n            formatter = formatter_iso8601;\n        } else {\n            formatter = DateTimeFormat.forPattern(format);\n        }\n\n        String text = formatter.print(object);\n        out.writeString(text);\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/LabelFilter.java",
    "content": "/*\n * Copyright 1999-2018 Alibaba Group.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage com.alibaba.fastjson.serializer;\n\n/**\n * @author wenshao[szujobs@hotmail.com]\n * @since 1.2.7\n */\npublic interface LabelFilter extends SerializeFilter {\n    boolean apply(String label);\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/Labels.java",
    "content": "/*\n * Copyright 1999-2018 Alibaba Group.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage com.alibaba.fastjson.serializer;\n\nimport java.util.Arrays;\n\n/**\n * @author wenshao[szujobs@hotmail.com]\n */\npublic class Labels {\n\n    private static class DefaultLabelFilter implements LabelFilter {\n\n        private String[] includes;\n        private String[] excludes;\n\n        public DefaultLabelFilter(String[] includes, String[] excludes){\n            if (includes != null) {\n                this.includes = new String[includes.length];\n                System.arraycopy(includes, 0, this.includes, 0, includes.length);\n                Arrays.sort(this.includes);\n            }\n            if (excludes != null) {\n                this.excludes = new String[excludes.length];\n                System.arraycopy(excludes, 0, this.excludes, 0, excludes.length);\n                Arrays.sort(this.excludes);\n            }\n        }\n\n        public boolean apply(String label) {\n            if (excludes != null) {\n                return Arrays.binarySearch(excludes, label) < 0;\n            }\n\n            return includes != null // \n                    && Arrays.binarySearch(includes, label) >= 0;\n        }\n    }\n\n    public static LabelFilter includes(String... views) {\n        return new DefaultLabelFilter(views, null);\n    }\n\n    public static LabelFilter excludes(String... views) {\n        return new DefaultLabelFilter(null, views);\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/ListSerializer.java",
    "content": "/*\r\n * Copyright 1999-2018 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.serializer;\r\n\r\nimport com.alibaba.fastjson.util.TypeUtils;\r\n\r\nimport java.io.IOException;\r\nimport java.lang.reflect.Type;\r\nimport java.util.List;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic final class ListSerializer implements ObjectSerializer {\r\n\r\n    public static final ListSerializer instance = new ListSerializer();\r\n\r\n    public final void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features)\r\n                                                                                                       throws IOException {\r\n\r\n        boolean writeClassName = serializer.out.isEnabled(SerializerFeature.WriteClassName)\r\n                || SerializerFeature.isEnabled(features, SerializerFeature.WriteClassName);\r\n\r\n        SerializeWriter out = serializer.out;\r\n\r\n        Type elementType = null;\r\n        if (writeClassName) {\r\n            elementType = TypeUtils.getCollectionItemType(fieldType);\r\n        }\r\n\r\n        if (object == null) {\r\n            out.writeNull(SerializerFeature.WriteNullListAsEmpty);\r\n            return;\r\n        }\r\n\r\n        List<?> list = (List<?>) object;\r\n\r\n        if (list.size() == 0) {\r\n            out.append(\"[]\");\r\n            return;\r\n        }\r\n\r\n        SerialContext context = serializer.context;\r\n        serializer.setContext(context, object, fieldName, 0);\r\n\r\n        ObjectSerializer itemSerializer = null;\r\n        try {\r\n            if (out.isEnabled(SerializerFeature.PrettyFormat)) {\r\n                out.append('[');\r\n                serializer.incrementIndent();\r\n\r\n                int i = 0;\r\n                for (Object item : list) {\r\n                    if (i != 0) {\r\n                        out.append(',');\r\n                    }\r\n\r\n                    serializer.println();\r\n                    if (item != null) {\r\n                        if (serializer.containsReference(item)) {\r\n                            serializer.writeReference(item);\r\n                        } else {\r\n                            itemSerializer = serializer.getObjectWriter(item.getClass());\r\n                            SerialContext itemContext = new SerialContext(context, object, fieldName, 0, 0);\r\n                            serializer.context = itemContext;\r\n                            itemSerializer.write(serializer, item, i, elementType, features);\r\n                        }\r\n                    } else {\r\n                        serializer.out.writeNull();\r\n                    }\r\n                    i++;\r\n                }\r\n\r\n                serializer.decrementIdent();\r\n                serializer.println();\r\n                out.append(']');\r\n                return;\r\n            }\r\n\r\n            out.append('[');\r\n            for (int i = 0, size = list.size(); i < size; ++i) {\r\n                Object item = list.get(i);\r\n                if (i != 0) {\r\n                    out.append(',');\r\n                }\r\n                \r\n                if (item == null) {\r\n                    out.append(\"null\");\r\n                } else {\r\n                    Class<?> clazz = item.getClass();\r\n\r\n                    if (clazz == Integer.class) {\r\n                        out.writeInt(((Integer) item).intValue());\r\n                    } else if (clazz == Long.class) {\r\n                        long val = ((Long) item).longValue();\r\n                        if (writeClassName) {\r\n                            out.writeLong(val);\r\n                            out.write('L');\r\n                        } else {\r\n                            out.writeLong(val);\r\n                        }\r\n                    } else {\r\n                        if ((SerializerFeature.DisableCircularReferenceDetect.mask & features) != 0){\r\n                            itemSerializer = serializer.getObjectWriter(item.getClass());\r\n                            itemSerializer.write(serializer, item, i, elementType, features);\r\n                        }else {\r\n                            if (!out.disableCircularReferenceDetect) {\r\n                                SerialContext itemContext = new SerialContext(context, object, fieldName, 0, 0);\r\n                                serializer.context = itemContext;\r\n                            }\r\n\r\n                            if (serializer.containsReference(item)) {\r\n                                serializer.writeReference(item);\r\n                            } else {\r\n                                itemSerializer = serializer.getObjectWriter(item.getClass());\r\n                                if ((SerializerFeature.WriteClassName.mask & features) != 0\r\n                                        && itemSerializer instanceof JavaBeanSerializer)\r\n                                {\r\n                                    JavaBeanSerializer javaBeanSerializer = (JavaBeanSerializer) itemSerializer;\r\n                                    javaBeanSerializer.writeNoneASM(serializer, item, i, elementType, features);\r\n                                } else {\r\n                                    itemSerializer.write(serializer, item, i, elementType, features);\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            out.append(']');\r\n        } finally {\r\n            serializer.context = context;\r\n        }\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/LongCodec.java",
    "content": "/*\r\n * Copyright 1999-2018 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.serializer;\r\n\r\nimport java.io.IOException;\r\nimport java.lang.reflect.Type;\r\nimport java.math.BigDecimal;\r\nimport java.util.concurrent.atomic.AtomicLong;\r\n\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.JSONObject;\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.JSONLexer;\r\nimport com.alibaba.fastjson.parser.JSONToken;\r\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\r\nimport com.alibaba.fastjson.util.TypeUtils;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class LongCodec implements ObjectSerializer, ObjectDeserializer {\r\n\r\n    public static LongCodec instance = new LongCodec();\r\n\r\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\r\n        SerializeWriter out = serializer.out;\r\n\r\n        if (object == null) {\r\n            out.writeNull(SerializerFeature.WriteNullNumberAsZero);\r\n        } else {\r\n            long value = ((Long) object).longValue();\r\n            out.writeLong(value);\r\n    \r\n            if (out.isEnabled(SerializerFeature.WriteClassName) //\r\n                && value <= Integer.MAX_VALUE && value >= Integer.MIN_VALUE //\r\n                && fieldType != Long.class\r\n                && fieldType != long.class) {\r\n                out.write('L');\r\n            }\r\n        }\r\n    }\r\n    \r\n    @SuppressWarnings(\"unchecked\")\r\n    public <T> T deserialze(DefaultJSONParser parser, Type clazz, Object fieldName) {\r\n        final JSONLexer lexer = parser.lexer;\r\n\r\n        Long longObject;\r\n        try {\r\n            final int token = lexer.token();\r\n            if (token == JSONToken.LITERAL_INT) {\r\n                long longValue = lexer.longValue();\r\n                lexer.nextToken(JSONToken.COMMA);\r\n                longObject = Long.valueOf(longValue);\r\n            } else if (token == JSONToken.LITERAL_FLOAT) {\r\n                BigDecimal number = lexer.decimalValue();\r\n                longObject = TypeUtils.longValue(number);\r\n                lexer.nextToken(JSONToken.COMMA);\r\n            } else {\r\n                if (token == JSONToken.LBRACE) {\r\n                    JSONObject jsonObject = new JSONObject(true);\r\n                    parser.parseObject(jsonObject);\r\n                    longObject = TypeUtils.castToLong(jsonObject);\r\n                } else {\r\n                    Object value = parser.parse();\r\n\r\n                    longObject = TypeUtils.castToLong(value);\r\n                }\r\n                if (longObject == null) {\r\n                    return null;\r\n                }\r\n            }\r\n        } catch (Exception ex) {\r\n            throw new JSONException(\"parseLong error, field : \" + fieldName, ex);\r\n        }\r\n        \r\n        return clazz == AtomicLong.class //\r\n            ? (T) new AtomicLong(longObject.longValue()) //\r\n            : (T) longObject;\r\n    }\r\n\r\n    public int getFastMatchToken() {\r\n        return JSONToken.LITERAL_INT;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/MapSerializer.java",
    "content": "/*\n * Copyright 1999-2018 Alibaba Group.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage com.alibaba.fastjson.serializer;\n\nimport java.io.IOException;\nimport java.lang.reflect.ParameterizedType;\nimport java.lang.reflect.Type;\nimport java.util.*;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\n/**\n * @author wenshao[szujobs@hotmail.com]\n */\npublic class MapSerializer extends SerializeFilterable implements ObjectSerializer {\n\n    public static MapSerializer instance = new MapSerializer();\n\n    private static final int NON_STRINGKEY_AS_STRING = SerializerFeature.of(\n            new SerializerFeature[] {\n                    SerializerFeature.BrowserCompatible,\n                    SerializerFeature.WriteNonStringKeyAsString,\n                    SerializerFeature.BrowserSecure});\n\n    public void write(JSONSerializer serializer\n            , Object object\n            , Object fieldName\n            , Type fieldType\n            , int features) throws IOException {\n        write(serializer, object, fieldName, fieldType, features, false);\n    }\n\n    @SuppressWarnings({ \"rawtypes\"})\n    public void write(JSONSerializer serializer\n            , Object object\n            , Object fieldName\n            , Type fieldType\n            , int features //\n            , boolean unwrapped) throws IOException {\n        SerializeWriter out = serializer.out;\n\n        if (object == null) {\n            out.writeNull();\n            return;\n        }\n\n        Map<?, ?> map = (Map<?, ?>) object;\n        final int mapSortFieldMask = SerializerFeature.MapSortField.mask;\n        if ((out.features & mapSortFieldMask) != 0 || (features & mapSortFieldMask) != 0) {\n            if (map instanceof JSONObject) {\n                map = ((JSONObject) map).getInnerMap();\n            }\n\n            if ((!(map instanceof SortedMap)) && !(map instanceof LinkedHashMap)) {\n                try {\n                    map = new TreeMap(map);\n                } catch (Exception ex) {\n                    // skip\n                }\n            }\n        }\n\n        if (serializer.containsReference(object)) {\n            serializer.writeReference(object);\n            return;\n        }\n\n        SerialContext parent = serializer.context;\n        serializer.setContext(parent, object, fieldName, 0);\n        try {\n            if (!unwrapped) {\n                out.write('{');\n            }\n\n            serializer.incrementIndent();\n\n            Class<?> preClazz = null;\n            ObjectSerializer preWriter = null;\n\n            boolean first = true;\n\n            if (out.isEnabled(SerializerFeature.WriteClassName)) {\n                String typeKey = serializer.config.typeKey;\n                Class<?> mapClass = map.getClass();\n                boolean containsKey = (mapClass == JSONObject.class || mapClass == HashMap.class || mapClass == LinkedHashMap.class) \n                        && map.containsKey(typeKey);\n                if (!containsKey) {\n                    out.writeFieldName(typeKey);\n                    out.writeString(object.getClass().getName());\n                    first = false;\n                }\n            }\n\n            for (Map.Entry entry : map.entrySet()) {\n                Object value = entry.getValue();\n\n                Object entryKey = entry.getKey();\n\n                {\n                    List<PropertyPreFilter> preFilters = serializer.propertyPreFilters;\n                    if (preFilters != null && preFilters.size() > 0) {\n                        if (entryKey == null || entryKey instanceof String) {\n                            if (!this.applyName(serializer, object, (String) entryKey)) {\n                                continue;\n                            }\n                        } else if (entryKey.getClass().isPrimitive() || entryKey instanceof Number) {\n                            String strKey = JSON.toJSONString(entryKey);\n                            if (!this.applyName(serializer, object, strKey)) {\n                                continue;\n                            }\n                        }\n                    }\n                }\n                {\n                    List<PropertyPreFilter> preFilters = this.propertyPreFilters;\n                    if (preFilters != null && preFilters.size() > 0) {\n                        if (entryKey == null || entryKey instanceof String) {\n                            if (!this.applyName(serializer, object, (String) entryKey)) {\n                                continue;\n                            }\n                        } else if (entryKey.getClass().isPrimitive() || entryKey instanceof Number) {\n                            String strKey = JSON.toJSONString(entryKey);\n                            if (!this.applyName(serializer, object, strKey)) {\n                                continue;\n                            }\n                        }\n                    }\n                }\n                \n                {\n                    List<PropertyFilter> propertyFilters = serializer.propertyFilters;\n                    if (propertyFilters != null && propertyFilters.size() > 0) {\n                        if (entryKey == null || entryKey instanceof String) {\n                            if (!this.apply(serializer, object, (String) entryKey, value)) {\n                                continue;\n                            }\n                        } else if (entryKey.getClass().isPrimitive() || entryKey instanceof Number) {\n                            String strKey = JSON.toJSONString(entryKey);\n                            if (!this.apply(serializer, object, strKey, value)) {\n                                continue;\n                            }\n                        }\n                    }\n                }\n                {\n                    List<PropertyFilter> propertyFilters = this.propertyFilters;\n                    if (propertyFilters != null && propertyFilters.size() > 0) {\n                        if (entryKey == null || entryKey instanceof String) {\n                            if (!this.apply(serializer, object, (String) entryKey, value)) {\n                                continue;\n                            }\n                        } else if (entryKey.getClass().isPrimitive() || entryKey instanceof Number) {\n                            String strKey = JSON.toJSONString(entryKey);\n                            if (!this.apply(serializer, object, strKey, value)) {\n                                continue;\n                            }\n                        }\n                    }\n                }\n                \n                {\n                    List<NameFilter> nameFilters = serializer.nameFilters;\n                    if (nameFilters != null && nameFilters.size() > 0) {\n                        if (entryKey == null || entryKey instanceof String) {\n                            entryKey = this.processKey(serializer, object, (String) entryKey, value);\n                        } else if (entryKey.getClass().isPrimitive() || entryKey instanceof Number) {\n                            String strKey = JSON.toJSONString(entryKey);\n                            entryKey = this.processKey(serializer, object, strKey, value);\n                        }\n                    }\n                }\n                {\n                    List<NameFilter> nameFilters = this.nameFilters;\n                    if (nameFilters != null && nameFilters.size() > 0) {\n                        if (entryKey == null || entryKey instanceof String) {\n                            entryKey = this.processKey(serializer, object, (String) entryKey, value);\n                        } else if (entryKey.getClass().isPrimitive() || entryKey instanceof Number) {\n                            String strKey = JSON.toJSONString(entryKey);\n                            entryKey = this.processKey(serializer, object, strKey, value);\n                        }\n                    }\n                }\n\n                {\n                    if (entryKey == null || entryKey instanceof String) {\n                        value = this.processValue(serializer, null, object, (String) entryKey, value, features);\n                    } else {\n                        boolean objectOrArray = entryKey instanceof Map || entryKey instanceof Collection;\n                        if (!objectOrArray) {\n                            String strKey = JSON.toJSONString(entryKey);\n                            value = this.processValue(serializer, null, object, strKey, value, features);\n                        }\n                    }\n                }\n\n                if (value == null) {\n                    if (!SerializerFeature.isEnabled(out.features, features, SerializerFeature.WriteMapNullValue)) {\n                        continue;\n                    }\n                }\n\n                if (entryKey instanceof String) {\n                    String key = (String) entryKey;\n\n                    if (!first) {\n                        out.write(',');\n                    }\n\n                    if (out.isEnabled(SerializerFeature.PrettyFormat)) {\n                        serializer.println();\n                    }\n                    out.writeFieldName(key, true);\n                } else {\n                    if (!first) {\n                        out.write(',');\n                    }\n\n                    if ((out.isEnabled(NON_STRINGKEY_AS_STRING) || SerializerFeature.isEnabled(features, SerializerFeature.WriteNonStringKeyAsString))\n                            && !(entryKey instanceof Enum)) {\n                        String strEntryKey = JSON.toJSONString(entryKey);\n                        serializer.write(strEntryKey);\n                    } else {\n                        serializer.write(entryKey);\n                    }\n\n                    out.write(':');\n                }\n\n                first = false;\n\n                if (value == null) {\n                    out.writeNull();\n                    continue;\n                }\n\n                Class<?> clazz = value.getClass();\n\n                if (clazz != preClazz) {\n                    preClazz = clazz;\n                    preWriter = serializer.getObjectWriter(clazz);\n                }\n\n                if (SerializerFeature.isEnabled(features, SerializerFeature.WriteClassName)\n                        && preWriter instanceof JavaBeanSerializer) {\n                    Type valueType = null;\n                    if (fieldType instanceof ParameterizedType) {\n                        ParameterizedType parameterizedType = (ParameterizedType) fieldType;\n                        Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();\n                        if (actualTypeArguments.length == 2) {\n                            valueType = actualTypeArguments[1];\n                        }\n                    }\n\n                    JavaBeanSerializer javaBeanSerializer = (JavaBeanSerializer) preWriter;\n                    javaBeanSerializer.writeNoneASM(serializer, value, entryKey, valueType, features);\n                } else {\n                    preWriter.write(serializer, value, entryKey, null, features);\n                }\n            }\n        } finally {\n            serializer.context = parent;\n        }\n\n        serializer.decrementIdent();\n        if (out.isEnabled(SerializerFeature.PrettyFormat) && map.size() > 0) {\n            serializer.println();\n        }\n\n        if (!unwrapped) {\n            out.write('}');\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/MiscCodec.java",
    "content": "/*\r\n * Copyright 1999-2018 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.serializer;\r\n\r\nimport java.io.File;\r\nimport java.io.IOException;\r\nimport java.io.StringWriter;\r\nimport java.lang.reflect.InvocationTargetException;\r\nimport java.lang.reflect.Method;\r\nimport java.lang.reflect.ParameterizedType;\r\nimport java.lang.reflect.Type;\r\nimport java.net.Inet4Address;\r\nimport java.net.Inet6Address;\r\nimport java.net.InetAddress;\r\nimport java.net.InetSocketAddress;\r\nimport java.net.MalformedURLException;\r\nimport java.net.URI;\r\nimport java.net.URL;\r\nimport java.net.UnknownHostException;\r\nimport java.nio.charset.Charset;\r\nimport java.text.SimpleDateFormat;\r\nimport java.util.*;\r\nimport java.util.regex.Pattern;\r\n\r\nimport com.alibaba.fastjson.*;\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.JSONLexer;\r\nimport com.alibaba.fastjson.parser.JSONToken;\r\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\r\nimport com.alibaba.fastjson.util.IOUtils;\r\nimport com.alibaba.fastjson.util.TypeUtils;\r\nimport org.w3c.dom.Node;\r\n\r\nimport javax.xml.transform.Transformer;\r\nimport javax.xml.transform.TransformerException;\r\nimport javax.xml.transform.TransformerFactory;\r\nimport javax.xml.transform.dom.DOMSource;\r\nimport javax.xml.transform.stream.StreamResult;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class MiscCodec implements ObjectSerializer, ObjectDeserializer {\r\n    private static      boolean   FILE_RELATIVE_PATH_SUPPORT = false;\r\n    public final static MiscCodec instance                   = new MiscCodec();\r\n    private static      Method    method_paths_get;\r\n    private static      boolean   method_paths_get_error     = false;\r\n\r\n    static {\r\n        FILE_RELATIVE_PATH_SUPPORT = \"true\".equals(IOUtils.getStringProperty(\"fastjson.deserializer.fileRelativePathSupport\"));\r\n    }\r\n\r\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType,\r\n                      int features) throws IOException {\r\n        SerializeWriter out = serializer.out;\r\n\r\n        if (object == null) {\r\n            out.writeNull();\r\n            return;\r\n        }\r\n\r\n        Class<?> objClass = object.getClass();\r\n\r\n        String strVal;\r\n        if (objClass == SimpleDateFormat.class) {\r\n            String pattern = ((SimpleDateFormat) object).toPattern();\r\n\r\n            if (out.isEnabled(SerializerFeature.WriteClassName)) {\r\n                if (object.getClass() != fieldType) {\r\n                    out.write('{');\r\n                    out.writeFieldName(JSON.DEFAULT_TYPE_KEY);\r\n                    serializer.write(object.getClass().getName());\r\n                    out.writeFieldValue(',', \"val\", pattern);\r\n                    out.write('}');\r\n                    return;\r\n                }\r\n            }\r\n\r\n            strVal = pattern;\r\n        } else if (objClass == Class.class) {\r\n            Class<?> clazz = (Class<?>) object;\r\n            strVal = clazz.getName();\r\n        } else if (objClass == InetSocketAddress.class) {\r\n            InetSocketAddress address = (InetSocketAddress) object;\r\n\r\n            InetAddress inetAddress = address.getAddress();\r\n\r\n            out.write('{');\r\n            if (inetAddress != null) {\r\n                out.writeFieldName(\"address\");\r\n                serializer.write(inetAddress);\r\n                out.write(',');\r\n            }\r\n            out.writeFieldName(\"port\");\r\n            out.writeInt(address.getPort());\r\n            out.write('}');\r\n            return;\r\n        } else if (object instanceof File) {\r\n            strVal = ((File) object).getPath();\r\n        } else if (object instanceof InetAddress) {\r\n            strVal = ((InetAddress) object).getHostAddress();\r\n        } else if (object instanceof TimeZone) {\r\n            TimeZone timeZone = (TimeZone) object;\r\n            strVal = timeZone.getID();\r\n        } else if (object instanceof Currency) {\r\n            Currency currency = (Currency) object;\r\n            strVal = currency.getCurrencyCode();\r\n        } else if (object instanceof JSONStreamAware) {\r\n            JSONStreamAware aware = (JSONStreamAware) object;\r\n            aware.writeJSONString(out);\r\n            return;\r\n        } else if (object instanceof Iterator) {\r\n            Iterator<?> it = ((Iterator<?>) object);\r\n            writeIterator(serializer, out, it);\r\n            return;\r\n        } else if (object instanceof Iterable) {\r\n            Iterator<?> it = ((Iterable<?>) object).iterator();\r\n            writeIterator(serializer, out, it);\r\n            return;\r\n        } else if (object instanceof Map.Entry) {\r\n            Map.Entry entry = (Map.Entry) object;\r\n            Object objKey = entry.getKey();\r\n            Object objVal = entry.getValue();\r\n\r\n            if (objKey instanceof String) {\r\n                String key = (String) objKey;\r\n\r\n                if (objVal instanceof String) {\r\n                    String value = (String) objVal;\r\n                    out.writeFieldValueStringWithDoubleQuoteCheck('{', key, value);\r\n                } else {\r\n                    out.write('{');\r\n                    out.writeFieldName(key);\r\n                    serializer.write(objVal);\r\n                }\r\n            } else {\r\n                out.write('{');\r\n                serializer.write(objKey);\r\n                out.write(':');\r\n                serializer.write(objVal);\r\n            }\r\n            out.write('}');\r\n            return;\r\n        } else if (object.getClass().getName().equals(\"net.sf.json.JSONNull\")) {\r\n            out.writeNull();\r\n            return;\r\n        } else if (object instanceof org.w3c.dom.Node) {\r\n            strVal = toString((Node) object);\r\n        } else {\r\n            throw new JSONException(\"not support class : \" + objClass);\r\n        }\r\n\r\n        out.writeString(strVal);\r\n    }\r\n\r\n    private static String toString(org.w3c.dom.Node node) {\r\n        try {\r\n            TransformerFactory transFactory = TransformerFactory.newInstance();\r\n            Transformer transformer = transFactory.newTransformer();\r\n            DOMSource domSource = new DOMSource(node);\r\n\r\n            StringWriter out = new StringWriter();\r\n            transformer.transform(domSource, new StreamResult(out));\r\n            return out.toString();\r\n        } catch (TransformerException e) {\r\n            throw new JSONException(\"xml node to string error\", e);\r\n        }\r\n    }\r\n\r\n    protected void writeIterator(JSONSerializer serializer, SerializeWriter out, Iterator<?> it) {\r\n        int i = 0;\r\n        out.write('[');\r\n        while (it.hasNext()) {\r\n            if (i != 0) {\r\n                out.write(',');\r\n            }\r\n            Object item = it.next();\r\n            serializer.write(item);\r\n            ++i;\r\n        }\r\n        out.write(']');\r\n        return;\r\n    }\r\n\r\n    @SuppressWarnings(\"unchecked\")\r\n    public <T> T deserialze(DefaultJSONParser parser, Type clazz, Object fieldName) {\r\n        JSONLexer lexer = parser.lexer;\r\n\r\n        if (clazz == InetSocketAddress.class) {\r\n            if (lexer.token() == JSONToken.NULL) {\r\n                lexer.nextToken();\r\n                return null;\r\n            }\r\n\r\n            parser.accept(JSONToken.LBRACE);\r\n\r\n            InetAddress address = null;\r\n            int port = 0;\r\n            for (;;) {\r\n                String key = lexer.stringVal();\r\n                lexer.nextToken(JSONToken.COLON);\r\n\r\n                if (key.equals(\"address\")) {\r\n                    parser.accept(JSONToken.COLON);\r\n                    address = parser.parseObject(InetAddress.class);\r\n                } else if (key.equals(\"port\")) {\r\n                    parser.accept(JSONToken.COLON);\r\n                    if (lexer.token() != JSONToken.LITERAL_INT) {\r\n                        throw new JSONException(\"port is not int\");\r\n                    }\r\n                    port = lexer.intValue();\r\n                    lexer.nextToken();\r\n                } else {\r\n                    parser.accept(JSONToken.COLON);\r\n                    parser.parse();\r\n                }\r\n\r\n                if (lexer.token() == JSONToken.COMMA) {\r\n                    lexer.nextToken();\r\n                    continue;\r\n                }\r\n\r\n                break;\r\n            }\r\n\r\n            parser.accept(JSONToken.RBRACE);\r\n\r\n            return (T) new InetSocketAddress(address, port);\r\n        }\r\n\r\n        Object objVal;\r\n\r\n        if (parser.resolveStatus == DefaultJSONParser.TypeNameRedirect) {\r\n            parser.resolveStatus = DefaultJSONParser.NONE;\r\n            parser.accept(JSONToken.COMMA);\r\n\r\n            if (lexer.token() == JSONToken.LITERAL_STRING) {\r\n                if (!\"val\".equals(lexer.stringVal())) {\r\n                    throw new JSONException(\"syntax error\");\r\n                }\r\n                lexer.nextToken();\r\n            } else {\r\n                throw new JSONException(\"syntax error\");\r\n            }\r\n\r\n            parser.accept(JSONToken.COLON);\r\n\r\n            objVal = parser.parse();\r\n\r\n            parser.accept(JSONToken.RBRACE);\r\n        } else {\r\n            objVal = parser.parse();\r\n        }\r\n\r\n        String strVal;\r\n\r\n        if (objVal == null) {\r\n            strVal = null;\r\n        } else if (objVal instanceof String) {\r\n            strVal = (String) objVal;\r\n        } else {\r\n            if (objVal instanceof JSONObject) {\r\n                JSONObject jsonObject = (JSONObject) objVal;\r\n\r\n                if (clazz == Currency.class) {\r\n                    String currency = jsonObject.getString(\"currency\");\r\n                    if (currency != null) {\r\n                        return (T) Currency.getInstance(currency);\r\n                    }\r\n\r\n                    String symbol = jsonObject.getString(\"currencyCode\");\r\n                    if (symbol != null) {\r\n                        return (T) Currency.getInstance(symbol);\r\n                    }\r\n                }\r\n\r\n                if (clazz == Map.Entry.class) {\r\n                   return (T) jsonObject.entrySet().iterator().next();\r\n                }\r\n\r\n                return jsonObject.toJavaObject(clazz);\r\n            }\r\n            throw new JSONException(\"expect string\");\r\n        }\r\n\r\n        if (strVal == null || strVal.length() == 0) {\r\n            return null;\r\n        }\r\n\r\n        if (clazz == UUID.class) {\r\n            return (T) UUID.fromString(strVal);\r\n        }\r\n\r\n        if (clazz == URI.class) {\r\n            return (T) URI.create(strVal);\r\n        }\r\n\r\n        if (clazz == URL.class) {\r\n            try {\r\n                return (T) new URL(strVal);\r\n            } catch (MalformedURLException e) {\r\n                throw new JSONException(\"create url error\", e);\r\n            }\r\n        }\r\n\r\n        if (clazz == Pattern.class) {\r\n            return (T) Pattern.compile(strVal);\r\n        }\r\n\r\n        if (clazz == Locale.class) {\r\n            return (T) TypeUtils.toLocale(strVal);\r\n        }\r\n\r\n        if (clazz == SimpleDateFormat.class) {\r\n            SimpleDateFormat dateFormat = new SimpleDateFormat(strVal, lexer.getLocale());\r\n            dateFormat.setTimeZone(lexer.getTimeZone());\r\n            return (T) dateFormat;\r\n        }\r\n\r\n        if (clazz == InetAddress.class || clazz == Inet4Address.class || clazz == Inet6Address.class) {\r\n            try {\r\n                return (T) InetAddress.getByName(strVal);\r\n            } catch (UnknownHostException e) {\r\n                throw new JSONException(\"deserialize inet adress error\", e);\r\n            }\r\n        }\r\n\r\n        if (clazz == File.class) {\r\n            if (strVal.indexOf(\"..\") >= 0 && !FILE_RELATIVE_PATH_SUPPORT) {\r\n                throw new JSONException(\"file relative path not support.\");\r\n            }\r\n\r\n            return (T) new File(strVal);\r\n        }\r\n\r\n        if (clazz == TimeZone.class) {\r\n            return (T) TimeZone.getTimeZone(strVal);\r\n        }\r\n\r\n        if (clazz instanceof ParameterizedType) {\r\n            ParameterizedType parmeterizedType = (ParameterizedType) clazz;\r\n            clazz = parmeterizedType.getRawType();\r\n        }\r\n\r\n        if (clazz == Class.class) {\r\n            return (T) TypeUtils.loadClass(strVal, parser.getConfig().getDefaultClassLoader(), false);\r\n        }\r\n\r\n        if (clazz == Charset.class) {\r\n            return (T) Charset.forName(strVal);\r\n        }\r\n\r\n        if (clazz == Currency.class) {\r\n            return (T) Currency.getInstance(strVal);\r\n        }\r\n\r\n        if (clazz == JSONPath.class) {\r\n            return (T) new JSONPath(strVal);\r\n        }\r\n\r\n\r\n\r\n        if (clazz instanceof Class) {\r\n            String className = ((Class) clazz).getName();\r\n\r\n            if (className.equals(\"java.nio.file.Path\")) {\r\n                try {\r\n                    if (method_paths_get == null && !method_paths_get_error) {\r\n                        Class<?> paths = TypeUtils.loadClass(\"java.nio.file.Paths\");\r\n                        method_paths_get = paths.getMethod(\"get\", String.class, String[].class);\r\n                    }\r\n                    if (method_paths_get != null) {\r\n                        return (T) method_paths_get.invoke(null, strVal, new String[0]);\r\n                    }\r\n\r\n                    throw new JSONException(\"Path deserialize erorr\");\r\n                } catch (NoSuchMethodException ex) {\r\n                    method_paths_get_error = true;\r\n                } catch (IllegalAccessException ex) {\r\n                    throw new JSONException(\"Path deserialize erorr\", ex);\r\n                } catch (InvocationTargetException ex) {\r\n                    throw new JSONException(\"Path deserialize erorr\", ex);\r\n                }\r\n            }\r\n\r\n            throw new JSONException(\"MiscCodec not support \" + className);\r\n        }\r\n\r\n        throw new JSONException(\"MiscCodec not support \" + clazz.toString());\r\n    }\r\n\r\n    public int getFastMatchToken() {\r\n        return JSONToken.LITERAL_STRING;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/NameFilter.java",
    "content": "/*\n * Copyright 1999-2018 Alibaba Group.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage com.alibaba.fastjson.serializer;\n\npublic interface NameFilter extends SerializeFilter {\n    String process(Object object, String name, Object value);\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/ObjectArrayCodec.java",
    "content": "/*\r\n * Copyright 1999-2018 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.serializer;\r\n\r\nimport java.io.IOException;\r\nimport java.lang.reflect.Array;\r\nimport java.lang.reflect.GenericArrayType;\r\nimport java.lang.reflect.ParameterizedType;\r\nimport java.lang.reflect.Type;\r\nimport java.lang.reflect.TypeVariable;\r\n\r\nimport com.alibaba.fastjson.JSONArray;\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.JSONLexer;\r\nimport com.alibaba.fastjson.parser.JSONToken;\r\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\r\nimport com.alibaba.fastjson.util.TypeUtils;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class ObjectArrayCodec implements ObjectSerializer, ObjectDeserializer {\r\n\r\n    public static final ObjectArrayCodec instance = new ObjectArrayCodec();\r\n\r\n    public ObjectArrayCodec(){\r\n    }\r\n\r\n    public final void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features)\r\n                                                                                                       throws IOException {\r\n        SerializeWriter out = serializer.out;\r\n\r\n        Object[] array = (Object[]) object;\r\n\r\n        if (object == null) {\r\n            out.writeNull(SerializerFeature.WriteNullListAsEmpty);\r\n            return;\r\n        }\r\n\r\n        int size = array.length;\r\n\r\n        int end = size - 1;\r\n\r\n        if (end == -1) {\r\n            out.append(\"[]\");\r\n            return;\r\n        }\r\n\r\n        SerialContext context = serializer.context;\r\n        serializer.setContext(context, object, fieldName, 0);\r\n\r\n        try {\r\n            Class<?> preClazz = null;\r\n            ObjectSerializer preWriter = null;\r\n            out.append('[');\r\n\r\n            if (out.isEnabled(SerializerFeature.PrettyFormat)) {\r\n                serializer.incrementIndent();\r\n                serializer.println();\r\n                for (int i = 0; i < size; ++i) {\r\n                    if (i != 0) {\r\n                        out.write(',');\r\n                        serializer.println();\r\n                    }\r\n                    serializer.writeWithFieldName(array[i], Integer.valueOf(i));\r\n                }\r\n                serializer.decrementIdent();\r\n                serializer.println();\r\n                out.write(']');\r\n                return;\r\n            }\r\n\r\n            for (int i = 0; i < end; ++i) {\r\n                Object item = array[i];\r\n\r\n                if (item == null) {\r\n                    out.append(\"null,\");\r\n                } else {\r\n                    if (serializer.containsReference(item)) {\r\n                        serializer.writeReference(item);\r\n                    } else {\r\n                        Class<?> clazz = item.getClass();\r\n\r\n                        if (clazz == preClazz) {\r\n                            preWriter.write(serializer, item, i, null, 0);\r\n                        } else {\r\n                            preClazz = clazz;\r\n                            preWriter = serializer.getObjectWriter(clazz);\r\n\r\n                            preWriter.write(serializer, item, i, null, 0);\r\n                        }\r\n                    }\r\n                    out.append(',');\r\n                }\r\n            }\r\n\r\n            Object item = array[end];\r\n\r\n            if (item == null) {\r\n                out.append(\"null]\");\r\n            } else {\r\n                if (serializer.containsReference(item)) {\r\n                    serializer.writeReference(item);\r\n                } else {\r\n                    serializer.writeWithFieldName(item, end);\r\n                }\r\n                out.append(']');\r\n            }\r\n        } finally {\r\n            serializer.context = context;\r\n        }\r\n    }\r\n    \r\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\r\n    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\r\n        final JSONLexer lexer = parser.lexer;\r\n        int token = lexer.token();\r\n        if (token == JSONToken.NULL) {\r\n            lexer.nextToken(JSONToken.COMMA);\r\n            return null;\r\n        }\r\n\r\n        if (token == JSONToken.LITERAL_STRING || token == JSONToken.HEX) {\r\n            byte[] bytes = lexer.bytesValue();\r\n            lexer.nextToken(JSONToken.COMMA);\r\n\r\n            if (bytes.length == 0 && type != byte[].class) {\r\n                return null;\r\n            }\r\n\r\n            return (T) bytes;\r\n        }\r\n\r\n        Class componentClass;\r\n        Type componentType;\r\n        if (type instanceof GenericArrayType) {\r\n            GenericArrayType clazz = (GenericArrayType) type;\r\n            componentType = clazz.getGenericComponentType();\r\n            if (componentType instanceof TypeVariable) {\r\n                TypeVariable typeVar = (TypeVariable) componentType;\r\n                Type objType = parser.getContext().type;\r\n                if (objType instanceof ParameterizedType) {\r\n                    ParameterizedType objParamType = (ParameterizedType) objType;\r\n                    Type objRawType = objParamType.getRawType();\r\n                    Type actualType = null;\r\n                    if (objRawType instanceof Class) {\r\n                        TypeVariable[] objTypeParams = ((Class) objRawType).getTypeParameters();\r\n                        for (int i = 0; i < objTypeParams.length; ++i) {\r\n                            if (objTypeParams[i].getName().equals(typeVar.getName())) {\r\n                                actualType = objParamType.getActualTypeArguments()[i];\r\n                            }\r\n                        }\r\n                    }\r\n                    if (actualType instanceof Class) {\r\n                        componentClass = (Class) actualType;\r\n                    } else {\r\n                        componentClass = Object.class;\r\n                    }\r\n                } else {\r\n                    componentClass = TypeUtils.getClass(typeVar.getBounds()[0]);\r\n                }\r\n            } else {\r\n                componentClass = TypeUtils.getClass(componentType);\r\n            }\r\n        } else {\r\n            Class clazz = (Class) type;\r\n            componentType = componentClass = clazz.getComponentType();\r\n        }\r\n        JSONArray array = new JSONArray();\r\n        parser.parseArray(componentType, array, fieldName);\r\n\r\n        return (T) toObjectArray(parser, componentClass, array);\r\n    }\r\n\r\n    @SuppressWarnings(\"unchecked\")\r\n    private <T> T toObjectArray(DefaultJSONParser parser, Class<?> componentType, JSONArray array) {\r\n        if (array == null) {\r\n            return null;\r\n        }\r\n\r\n        int size = array.size();\r\n\r\n        Object objArray = Array.newInstance(componentType, size);\r\n        for (int i = 0; i < size; ++i) {\r\n            Object value = array.get(i);\r\n\r\n            if (value == array) {\r\n                Array.set(objArray, i, objArray);\r\n                continue;\r\n            }\r\n\r\n            if (componentType.isArray()) {\r\n                Object element;\r\n                if (componentType.isInstance(value)) {\r\n                    element = value;\r\n                } else {\r\n                    element = toObjectArray(parser, componentType, (JSONArray) value);\r\n                }\r\n\r\n                Array.set(objArray, i, element);\r\n            } else {\r\n                Object element = null;\r\n                if (value instanceof JSONArray) {\r\n                    boolean contains = false;\r\n                    JSONArray valueArray = (JSONArray) value;\r\n                    int valueArraySize = valueArray.size();\r\n                    for (int y = 0; y < valueArraySize; ++y) {\r\n                        Object valueItem = valueArray.get(y);\r\n                        if (valueItem == array) {\r\n                            valueArray.set(i, objArray);\r\n                            contains = true;\r\n                        }\r\n                    }\r\n                    if (contains) {\r\n                        element = valueArray.toArray();\r\n                    }\r\n                }\r\n\r\n                if (element == null) {\r\n                    element = TypeUtils.cast(value, componentType, parser.getConfig());\r\n                }\r\n                Array.set(objArray, i, element);\r\n\r\n            }\r\n        }\r\n\r\n        array.setRelatedArray(objArray);\r\n        array.setComponentType(componentType);\r\n        return (T) objArray; // TODO\r\n    }\r\n\r\n    public int getFastMatchToken() {\r\n        return JSONToken.LBRACKET;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/ObjectSerializer.java",
    "content": "/*\r\n * Copyright 1999-2018 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.serializer;\r\n\r\nimport java.io.IOException;\r\nimport java.lang.reflect.Type;\r\n\r\n/**\r\n * Interface representing a custom serializer for fastjson. You should write a custom serializer, if\r\n * you are not happy with the default serialization done by fastjson. You will also need to register\r\n * this serializer through {@link com.alibaba.fastjson.serializer.SerializeConfig#put(Type, ObjectSerializer)}.\r\n *\r\n * <pre>\r\n * public static class Result {\r\n *     public ResultCode code;\r\n * }\r\n * \r\n * public static enum ResultCode {\r\n *     LOGIN_FAILURE(8), INVALID_ARGUMENT(0), SIGN_ERROR(17);\r\n *     public final int value;\r\n *     ResultCode(int value){\r\n *         this.value = value;\r\n *     }\r\n * }\r\n * \r\n * public static class ResultCodeSerilaizer implements ObjectSerializer {\r\n *     public void write(JSONSerializer serializer, \r\n *                       Object object, \r\n *                       Object fieldName, \r\n *                       Type fieldType,\r\n *                       int features) throws IOException {\r\n *         serializer.write(((ResultCode) object).value);\r\n *     }\r\n * }\r\n * \r\n * SerializeConfig.getGlobalInstance().put(ResultCode.class, new ResultCodeSerilaizer());\r\n * \r\n * Result result = new Result();\r\n * result.code = ResultCode.SIGN_ERROR;\r\n * String json = JSON.toJSONString(result, config); // {\"code\":17}\r\n * Assert.assertEquals(\"{\\\"code\\\":17}\", json);\r\n * </pre>\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic interface ObjectSerializer {\r\n    \r\n    /**\r\n     * fastjson invokes this call-back method during serialization when it encounters a field of the\r\n     * specified type.\r\n     * @param serializer \r\n     * @param object src the object that needs to be converted to Json.\r\n     * @param fieldName parent object field name\r\n     * @param fieldType parent object field type\r\n     * @param features parent object field serializer features\r\n     * @throws IOException\r\n     */\r\n    void write(JSONSerializer serializer, //\r\n               Object object, //\r\n               Object fieldName, //\r\n               Type fieldType, //\r\n               int features) throws IOException;\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/PascalNameFilter.java",
    "content": "package com.alibaba.fastjson.serializer;\n\npublic class PascalNameFilter implements NameFilter {\n\n    public String process(Object source, String name, Object value) {\n        if (name == null || name.length() == 0) {\n            return name;\n        }\n        \n        char[] chars = name.toCharArray();\n        chars[0]= Character.toUpperCase(chars[0]);\n        \n        String pascalName = new String(chars);\n        return pascalName;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/PrimitiveArraySerializer.java",
    "content": "/*\r\n * Copyright 1999-2018 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.serializer;\r\n\r\nimport java.io.IOException;\r\nimport java.lang.reflect.Type;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class PrimitiveArraySerializer implements ObjectSerializer {\r\n\r\n    public static PrimitiveArraySerializer instance = new PrimitiveArraySerializer();\r\n\r\n    public final void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\r\n        SerializeWriter out = serializer.out;\r\n        \r\n        if (object == null) {\r\n            out.writeNull(SerializerFeature.WriteNullListAsEmpty);\r\n            return;\r\n        }\r\n        \r\n        if (object instanceof int[]) {\r\n            int[] array = (int[]) object;\r\n            out.write('[');\r\n            for (int i = 0; i < array.length; ++i) {\r\n                if (i != 0) {\r\n                    out.write(',');\r\n                }\r\n                out.writeInt(array[i]);\r\n            }\r\n            out.write(']');\r\n            return;\r\n        }\r\n        \r\n        if (object instanceof short[]) {\r\n            short[] array = (short[]) object;\r\n            out.write('[');\r\n            for (int i = 0; i < array.length; ++i) {\r\n                if (i != 0) {\r\n                    out.write(',');\r\n                }\r\n                out.writeInt(array[i]);\r\n            }\r\n            out.write(']');\r\n            return;\r\n        }\r\n        \r\n        if (object instanceof long[]) {\r\n            long[] array = (long[]) object;\r\n\r\n            out.write('[');\r\n            for (int i = 0; i < array.length; ++i) {\r\n                if (i != 0) {\r\n                    out.write(',');\r\n                }\r\n                out.writeLong(array[i]);\r\n            }\r\n            out.write(']');\r\n            return;\r\n        }\r\n        \r\n        if (object instanceof boolean[]) {\r\n            boolean[] array = (boolean[]) object;\r\n            out.write('[');\r\n            for (int i = 0; i < array.length; ++i) {\r\n                if (i != 0) {\r\n                    out.write(',');\r\n                }\r\n                out.write(array[i]);\r\n            }\r\n            out.write(']');\r\n            return;\r\n        }\r\n        \r\n        if (object instanceof float[]) {\r\n            float[] array = (float[]) object;\r\n            out.write('[');\r\n            for (int i = 0; i < array.length; ++i) {\r\n                if (i != 0) {\r\n                    out.write(',');\r\n                }\r\n                \r\n                float item = array[i];\r\n                if (Float.isNaN(item)) {\r\n                    out.writeNull();\r\n                } else {\r\n                    out.append(Float.toString(item));\r\n                }\r\n            }\r\n            out.write(']');\r\n            return;\r\n        }\r\n        \r\n        if (object instanceof double[]) {\r\n            double[] array = (double[]) object;\r\n            out.write('[');\r\n            for (int i = 0; i < array.length; ++i) {\r\n                if (i != 0) {\r\n                    out.write(',');\r\n                }\r\n                \r\n                double item = array[i];\r\n                if (Double.isNaN(item)) {\r\n                    out.writeNull();\r\n                } else {\r\n                    out.append(Double.toString(item));\r\n                }\r\n            }\r\n            out.write(']');\r\n            return;\r\n        }\r\n        \r\n        if (object instanceof byte[]) {\r\n            byte[] array = (byte[]) object;\r\n            out.writeByteArray(array);\r\n            return;\r\n        }\r\n        \r\n        char[] chars = (char[]) object;\r\n        out.writeString(chars);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/PropertyFilter.java",
    "content": "/*\n * Copyright 1999-2018 Alibaba Group.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage com.alibaba.fastjson.serializer;\n\n/**\n * @author wenshao[szujobs@hotmail.com]\n */\npublic interface PropertyFilter extends SerializeFilter {\n\n    /**\n     * @param object the owner of the property\n     * @param name the name of the property\n     * @param value the value of the property\n     * @return true if the property will be included, false if to be filtered out\n     */\n    boolean apply(Object object, String name, Object value);\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/PropertyPreFilter.java",
    "content": "/*\n * Copyright 1999-2018 Alibaba Group.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage com.alibaba.fastjson.serializer;\n\npublic interface PropertyPreFilter extends SerializeFilter {\n\n    boolean apply(JSONSerializer serializer, Object object, String name);\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/ReferenceCodec.java",
    "content": "/*\n * Copyright 1999-2018 Alibaba Group.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage com.alibaba.fastjson.serializer;\n\nimport java.io.IOException;\nimport java.lang.ref.Reference;\nimport java.lang.ref.SoftReference;\nimport java.lang.ref.WeakReference;\nimport java.lang.reflect.ParameterizedType;\nimport java.lang.reflect.Type;\nimport java.util.concurrent.atomic.AtomicReference;\n\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\n\n/**\n * @author wenshao[szujobs@hotmail.com]\n */\npublic class ReferenceCodec implements ObjectSerializer, ObjectDeserializer {\n\n    public final static ReferenceCodec instance = new ReferenceCodec();\n\n    @SuppressWarnings(\"rawtypes\")\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\n        Object item;\n        if (object instanceof AtomicReference) {\n            AtomicReference val = (AtomicReference) object;\n            item = val.get();\n        } else {\n            item = ((Reference) object).get();\n        }\n        serializer.write(item);\n    }\n\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n        ParameterizedType paramType = (ParameterizedType) type;\n        Type itemType = paramType.getActualTypeArguments()[0];\n\n        Object itemObject = parser.parseObject(itemType);\n\n        Type rawType = paramType.getRawType();\n        if (rawType == AtomicReference.class) {\n            return (T) new AtomicReference(itemObject);\n        }\n\n        if (rawType == WeakReference.class) {\n            return (T) new WeakReference(itemObject);\n        }\n\n        if (rawType == SoftReference.class) {\n            return (T) new SoftReference(itemObject);\n        }\n\n        throw new UnsupportedOperationException(rawType.toString());\n    }\n\n    public int getFastMatchToken() {\n        return JSONToken.LBRACE;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/SerialContext.java",
    "content": "package com.alibaba.fastjson.serializer;\n\npublic class SerialContext {\n\n    public final SerialContext parent;\n    public final Object        object;\n    public final Object        fieldName;\n    public final int           features;\n\n    public SerialContext(SerialContext parent, Object object, Object fieldName, int features, int fieldFeatures){\n        this.parent = parent;\n        this.object = object;\n        this.fieldName = fieldName;\n        this.features = features;\n    }\n\n    public String toString() {\n        if (parent == null) {\n            return \"$\";\n        } else {\n            StringBuilder buf = new StringBuilder();\n            toString(buf);\n            return buf.toString();\n        }\n    }\n\n    protected void toString(StringBuilder buf) {\n        if (parent == null) {\n            buf.append('$');\n        } else {\n            parent.toString(buf);\n            if (fieldName == null) {\n                buf.append(\".null\");\n            } else if (fieldName instanceof Integer) {\n                buf.append('[');\n                buf.append(((Integer)fieldName).intValue());\n                buf.append(']');\n            } else {\n                buf.append('.');\n\n                String fieldName = this.fieldName.toString();\n                boolean special = false;\n                for (int i = 0; i < fieldName.length(); ++i) {\n                    char ch = fieldName.charAt(i);\n                    if ((ch >= '0' && ch <='9') || (ch >= 'A' && ch <='Z') || (ch >= 'a' && ch <='z') || ch > 128) {\n                        continue;\n                    }\n                    special = true;\n                    break;\n                }\n\n                if (special) {\n                    for (int i = 0; i < fieldName.length(); ++i) {\n                        char ch = fieldName.charAt(i);\n                        if (ch == '\\\\') {\n                            buf.append('\\\\');\n                            buf.append('\\\\');\n                            buf.append('\\\\');\n                        } else if ((ch >= '0' && ch <='9') || (ch >= 'A' && ch <='Z') || (ch >= 'a' && ch <='z') || ch > 128) {\n                            buf.append(ch);\n                            continue;\n                        } else if(ch == '\\\"'){\n                            buf.append('\\\\');\n                            buf.append('\\\\');\n                            buf.append('\\\\');\n                        } else {\n                            buf.append('\\\\');\n                            buf.append('\\\\');\n                        }\n                        buf.append(ch);\n                    }\n                } else {\n                    buf.append(fieldName);\n                }\n            }\n        }\n    }\n\n    /**\n     * @deprecated\n     */\n    public SerialContext getParent() {\n        return parent;\n    }\n\n    /**\n     * @deprecated\n     */\n    public Object getObject() {\n        return object;\n    }\n\n    /**\n     * @deprecated\n     */\n    public Object getFieldName() {\n        return fieldName;\n    }\n\n    /**\n     * @deprecated\n     */\n    public String getPath() {\n        return toString();\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/SerializeBeanInfo.java",
    "content": "package com.alibaba.fastjson.serializer;\n\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.util.FieldInfo;\n\npublic class SerializeBeanInfo {\n\n    protected final Class<?> beanType;\n    protected final String   typeName;\n    protected final String   typeKey;\n    protected final JSONType jsonType;\n\n    protected final FieldInfo[] fields;\n    protected final FieldInfo[] sortedFields;\n    \n    protected int               features;\n\n    public SerializeBeanInfo(Class<?> beanType, //\n                             JSONType jsonType, //\n                             String typeName, //\n                             String typeKey,\n                             int features,\n                             FieldInfo[] fields, //\n                             FieldInfo[] sortedFields\n                             ){\n        this.beanType = beanType;\n        this.jsonType = jsonType;\n        this.typeName = typeName;\n        this.typeKey = typeKey;\n        this.features = features;\n        this.fields = fields;\n        this.sortedFields = sortedFields;\n    }\n\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/SerializeConfig.java",
    "content": "/*\n * Copyright 1999-2018 Alibaba Group.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage com.alibaba.fastjson.serializer;\n\nimport com.alibaba.fastjson.*;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec;\nimport com.alibaba.fastjson.parser.deserializer.OptionalCodec;\nimport com.alibaba.fastjson.spi.Module;\nimport com.alibaba.fastjson.support.moneta.MonetaCodec;\nimport com.alibaba.fastjson.support.springfox.SwaggerJsonSerializer;\nimport com.alibaba.fastjson.util.*;\nimport com.alibaba.fastjson.util.IdentityHashMap;\nimport com.alibaba.fastjson.util.ServiceLoader;\n\nimport javax.xml.datatype.XMLGregorianCalendar;\nimport java.io.File;\nimport java.io.Serializable;\nimport java.lang.ref.SoftReference;\nimport java.lang.ref.WeakReference;\nimport java.lang.reflect.*;\nimport java.lang.reflect.Proxy;\nimport java.math.BigDecimal;\nimport java.math.BigInteger;\nimport java.net.*;\nimport java.nio.charset.Charset;\nimport java.text.SimpleDateFormat;\nimport java.util.*;\nimport java.util.concurrent.atomic.*;\nimport java.util.regex.Pattern;\n\n/**\n * circular references detect\n * \n * @author wenshao[szujobs@hotmail.com]\n */\npublic class SerializeConfig {\n\n    public final static SerializeConfig                   globalInstance  = new SerializeConfig();\n\n    private static boolean                                awtError        = false;\n    private static boolean                                jdk8Error       = false;\n    private static boolean                                oracleJdbcError = false;\n    private static boolean                                springfoxError  = false;\n    private static boolean                                guavaError      = false;\n    \n    private static boolean                                jodaError       = false;\n\n    private boolean                                       asm             = !ASMUtils.IS_ANDROID;\n    private ASMSerializerFactory                          asmFactory;\n    protected String                                      typeKey         = JSON.DEFAULT_TYPE_KEY;\n    public PropertyNamingStrategy                         propertyNamingStrategy;\n\n    private final IdentityHashMap<Type, ObjectSerializer> serializers;\n    private final IdentityHashMap<Type, IdentityHashMap<Type, ObjectSerializer>> mixInSerializers;\n\n    private final boolean                                 fieldBased;\n\n    private long[]                                        denyClasses =\n            {\n                    4165360493669296979L,\n                    4446674157046724083L\n            };\n\n    private List<Module>                                    modules                = new ArrayList<Module>();\n\n\tpublic String getTypeKey() {\n\t\treturn typeKey;\n\t}\n\n\tpublic void setTypeKey(String typeKey) {\n\t\tthis.typeKey = typeKey;\n\t}\n\t\n    private final JavaBeanSerializer createASMSerializer(SerializeBeanInfo beanInfo) throws Exception {\n        JavaBeanSerializer serializer = asmFactory.createJavaBeanSerializer(beanInfo);\n        \n        for (int i = 0; i < serializer.sortedGetters.length; ++i) {\n            FieldSerializer fieldDeser = serializer.sortedGetters[i];\n            Class<?> fieldClass = fieldDeser.fieldInfo.fieldClass;\n            if (fieldClass.isEnum()) {\n                ObjectSerializer fieldSer = this.getObjectWriter(fieldClass);\n                if (!(fieldSer instanceof EnumSerializer)) {\n                    serializer.writeDirect = false;\n                }\n            }\n        }\n     \n        return serializer;\n    }\n\n    public final ObjectSerializer createJavaBeanSerializer(Class<?> clazz) {\n        String className = clazz.getName();\n        long hashCode64 = TypeUtils.fnv1a_64(className);\n\t    if (Arrays.binarySearch(denyClasses, hashCode64) >= 0) {\n\t        throw new JSONException(\"not support class : \" + className);\n        }\n\n\t    SerializeBeanInfo beanInfo = TypeUtils.buildBeanInfo(clazz, null, propertyNamingStrategy, fieldBased);\n\t    if (beanInfo.fields.length == 0 && Iterable.class.isAssignableFrom(clazz)) {\n\t        return MiscCodec.instance;\n\t    }\n\n\t    return createJavaBeanSerializer(beanInfo);\n\t}\n\t\n\tpublic ObjectSerializer createJavaBeanSerializer(SerializeBeanInfo beanInfo) {\n\t    JSONType jsonType = beanInfo.jsonType;\n\n        boolean asm = this.asm && !fieldBased;\n\t    \n\t    if (jsonType != null) {\n\t        Class<?> serializerClass = jsonType.serializer();\n\t        if (serializerClass != Void.class) {\n\t            try {\n                    Object seralizer = serializerClass.newInstance();\n                    if (seralizer instanceof ObjectSerializer) {\n                        return (ObjectSerializer) seralizer;\n                    }\n                } catch (Throwable e) {\n                    // skip\n                }\n\t        }\n\t        \n\t        if (jsonType.asm() == false) {\n\t            asm = false;\n\t        }\n\n\t        if (asm) {\n                for (SerializerFeature feature : jsonType.serialzeFeatures()) {\n                    if (SerializerFeature.WriteNonStringValueAsString == feature //\n                            || SerializerFeature.WriteEnumUsingToString == feature //\n                            || SerializerFeature.NotWriteDefaultValue == feature\n                            || SerializerFeature.BrowserCompatible == feature) {\n                        asm = false;\n                        break;\n                    }\n                }\n            }\n\n            if (asm) {\n                final Class<? extends SerializeFilter>[] filterClasses = jsonType.serialzeFilters();\n                if (filterClasses.length != 0) {\n                    asm = false;\n                }\n            }\n        }\n\n\t    Class<?> clazz = beanInfo.beanType;\n\t\tif (!Modifier.isPublic(beanInfo.beanType.getModifiers())) {\n\t\t\treturn new JavaBeanSerializer(beanInfo);\n\t\t}\n\n\n\n\t\tif (asm && asmFactory.classLoader.isExternalClass(clazz)\n\t\t\t\t|| clazz == Serializable.class || clazz == Object.class) {\n\t\t\tasm = false;\n\t\t}\n\n\t\tif (asm && !ASMUtils.checkName(clazz.getSimpleName())) {\n\t\t    asm = false;\n\t\t}\n\n\t\tif (asm && beanInfo.beanType.isInterface()) {\n\t\t    asm = false;\n        }\n\t\t\n\t\tif (asm) {\n    \t\tfor(FieldInfo fieldInfo : beanInfo.fields){\n                Field field = fieldInfo.field;\n                if (field != null && !field.getType().equals(fieldInfo.fieldClass)) {\n                    asm = false;\n                    break;\n                }\n\n                Method method = fieldInfo.method;\n                if (method != null && !method.getReturnType().equals(fieldInfo.fieldClass)) {\n                    asm = false;\n                    break;\n                }\n\n                if (fieldInfo.fieldClass.isEnum()\n                        && get(fieldInfo.fieldClass) != EnumSerializer.instance) {\n                    asm = false;\n                    break;\n                }\n\n    \t\t\tJSONField annotation = fieldInfo.getAnnotation();\n    \t\t\t\n    \t\t\tif (annotation == null) {\n    \t\t\t    continue;\n    \t\t\t}\n\n    \t\t\tString format = annotation.format();\n    \t\t\tif (format.length() != 0) {\n    \t\t\t    if (fieldInfo.fieldClass == String.class && \"trim\".equals(format)) {\n\n                    } else {\n                        asm = false;\n                        break;\n                    }\n                }\n\n                if ((!ASMUtils.checkName(annotation.name())) //\n                        || annotation.jsonDirect()\n                        || annotation.serializeUsing() != Void.class\n                        || annotation.unwrapped()\n                        ) {\n    \t\t\t\tasm = false;\n    \t\t\t\tbreak;\n    \t\t\t}\n\n                for (SerializerFeature feature : annotation.serialzeFeatures()) {\n                    if (SerializerFeature.WriteNonStringValueAsString == feature //\n                            || SerializerFeature.WriteEnumUsingToString == feature //\n                            || SerializerFeature.NotWriteDefaultValue == feature\n                            || SerializerFeature.BrowserCompatible == feature\n                            || SerializerFeature.WriteClassName == feature) {\n                        asm = false;\n                        break;\n                    }\n                }\n\n                if (TypeUtils.isAnnotationPresentOneToMany(method) || TypeUtils.isAnnotationPresentManyToMany(method)) {\n    \t\t\t    asm = false;\n    \t\t\t    break;\n                }\n                if (annotation.defaultValue() != null && !\"\".equals(annotation.defaultValue())) {\n                    asm = false;\n                    break;\n                }\n    \t\t}\n\t\t}\n\t\t\n\t\tif (asm) {\n\t\t\ttry {\n                ObjectSerializer asmSerializer = createASMSerializer(beanInfo);\n                if (asmSerializer != null) {\n                    return asmSerializer;\n                }\n            } catch (ClassNotFoundException ex) {\n\t\t\t    // skip\n\t\t\t} catch (ClassFormatError e) {\n\t\t\t    // skip\n\t\t\t} catch (ClassCastException e) {\n\t\t\t    // skip\n            } catch (OutOfMemoryError e) {\n\t\t\t    if (e.getMessage().indexOf(\"Metaspace\") != -1) {\n\t\t\t        throw e;\n                }\n                // skip\n\t\t\t} catch (Throwable e) {\n\t\t\t\tthrow new JSONException(\"create asm serializer error, verson \" + JSON.VERSION + \", class \" + clazz, e);\n\t\t\t}\n\t\t}\n\n\t\treturn new JavaBeanSerializer(beanInfo);\n\t}\n\n\tpublic boolean isAsmEnable() {\n\t\treturn asm;\n\t}\n\n\tpublic void setAsmEnable(boolean asmEnable) {\n\t    if (ASMUtils.IS_ANDROID) {\n\t        return;\n\t    }\n\t\tthis.asm = asmEnable;\n\t}\n\n\tpublic static SerializeConfig getGlobalInstance() {\n\t\treturn globalInstance;\n\t}\n\n\tpublic SerializeConfig() {\n\t\tthis(IdentityHashMap.DEFAULT_SIZE);\n\t}\n\n    public SerializeConfig(boolean fieldBase) {\n\t    this(IdentityHashMap.DEFAULT_SIZE, fieldBase);\n    }\n\n    public SerializeConfig(int tableSize) {\n        this(tableSize, false);\n    }\n\n\tpublic SerializeConfig(int tableSize, boolean fieldBase) {\n\t    this.fieldBased = fieldBase;\n\t    serializers = new IdentityHashMap<Type, ObjectSerializer>(tableSize);\n        this.mixInSerializers = new IdentityHashMap<Type, IdentityHashMap<Type, ObjectSerializer>>(16);\n\t\ttry {\n\t\t    if (asm) {\n\t\t        asmFactory = new ASMSerializerFactory();\n\t\t    }\n\t\t} catch (Throwable eror) {\n\t\t    asm = false;\n\t\t}\n\n        initSerializers();\n\t}\n\n    private void initSerializers() {\n        put(Boolean.class, BooleanCodec.instance);\n        put(Character.class, CharacterCodec.instance);\n        put(Byte.class, IntegerCodec.instance);\n        put(Short.class, IntegerCodec.instance);\n        put(Integer.class, IntegerCodec.instance);\n        put(Long.class, LongCodec.instance);\n        put(Float.class, FloatCodec.instance);\n        put(Double.class, DoubleSerializer.instance);\n        put(BigDecimal.class, BigDecimalCodec.instance);\n        put(BigInteger.class, BigIntegerCodec.instance);\n        put(String.class, StringCodec.instance);\n        put(byte[].class, PrimitiveArraySerializer.instance);\n        put(short[].class, PrimitiveArraySerializer.instance);\n        put(int[].class, PrimitiveArraySerializer.instance);\n        put(long[].class, PrimitiveArraySerializer.instance);\n        put(float[].class, PrimitiveArraySerializer.instance);\n        put(double[].class, PrimitiveArraySerializer.instance);\n        put(boolean[].class, PrimitiveArraySerializer.instance);\n        put(char[].class, PrimitiveArraySerializer.instance);\n        put(Object[].class, ObjectArrayCodec.instance);\n        put(Class.class, MiscCodec.instance);\n\n        put(SimpleDateFormat.class, MiscCodec.instance);\n        put(Currency.class, new MiscCodec());\n        put(TimeZone.class, MiscCodec.instance);\n        put(InetAddress.class, MiscCodec.instance);\n        put(Inet4Address.class, MiscCodec.instance);\n        put(Inet6Address.class, MiscCodec.instance);\n        put(InetSocketAddress.class, MiscCodec.instance);\n        put(File.class, MiscCodec.instance);\n        put(Appendable.class, AppendableSerializer.instance);\n        put(StringBuffer.class, AppendableSerializer.instance);\n        put(StringBuilder.class, AppendableSerializer.instance);\n        put(Charset.class, ToStringSerializer.instance);\n        put(Pattern.class, ToStringSerializer.instance);\n        put(Locale.class, ToStringSerializer.instance);\n        put(URI.class, ToStringSerializer.instance);\n        put(URL.class, ToStringSerializer.instance);\n        put(UUID.class, ToStringSerializer.instance);\n\n        // atomic\n        put(AtomicBoolean.class, AtomicCodec.instance);\n        put(AtomicInteger.class, AtomicCodec.instance);\n        put(AtomicLong.class, AtomicCodec.instance);\n        put(AtomicReference.class, ReferenceCodec.instance);\n        put(AtomicIntegerArray.class, AtomicCodec.instance);\n        put(AtomicLongArray.class, AtomicCodec.instance);\n\n        put(WeakReference.class, ReferenceCodec.instance);\n        put(SoftReference.class, ReferenceCodec.instance);\n\n        put(LinkedList.class, CollectionCodec.instance);\n    }\n\n    /**\n\t * add class level serialize filter\n\t * @since 1.2.10\n\t */\n\tpublic void addFilter(Class<?> clazz, SerializeFilter filter) {\n\t    ObjectSerializer serializer = getObjectWriter(clazz);\n\t    \n\t    if (serializer instanceof SerializeFilterable) {\n\t        SerializeFilterable filterable = (SerializeFilterable) serializer;\n\t        \n\t        if (this != SerializeConfig.globalInstance) {\n\t            if (filterable == MapSerializer.instance) {\n\t                MapSerializer newMapSer = new MapSerializer();\n\t                this.put(clazz, newMapSer);\n\t                newMapSer.addFilter(filter);\n\t                return;\n\t            }\n\t        }\n\t        \n\t        filterable.addFilter(filter);\n\t    }\n\t}\n\t\n    /** class level serializer feature config\n     * @since 1.2.12\n     */\n    public void config(Class<?> clazz, SerializerFeature feature, boolean value) {\n        ObjectSerializer serializer = getObjectWriter(clazz, false);\n        \n        if (serializer == null) {\n            SerializeBeanInfo beanInfo = TypeUtils.buildBeanInfo(clazz, null, propertyNamingStrategy);\n            \n            if (value) {\n                beanInfo.features |= feature.mask;\n            } else {\n                beanInfo.features &= ~feature.mask;\n            }\n            \n            serializer = this.createJavaBeanSerializer(beanInfo);\n            \n            put(clazz, serializer);\n            return;\n        }\n\n        if (serializer instanceof JavaBeanSerializer) {\n            JavaBeanSerializer javaBeanSerializer = (JavaBeanSerializer) serializer;\n            SerializeBeanInfo beanInfo = javaBeanSerializer.beanInfo;\n            \n            int originalFeaturs = beanInfo.features;\n            if (value) {\n                beanInfo.features |= feature.mask;\n            } else {\n                beanInfo.features &= ~feature.mask;\n            }\n            \n            if (originalFeaturs == beanInfo.features) {\n                return;\n            }\n            \n            Class<?> serializerClass = serializer.getClass();\n            if (serializerClass != JavaBeanSerializer.class) {\n                ObjectSerializer newSerializer = this.createJavaBeanSerializer(beanInfo);\n                this.put(clazz, newSerializer);\n            }\n        }\n    }\n    \n    public ObjectSerializer getObjectWriter(Class<?> clazz) {\n        return getObjectWriter(clazz, true);\n    }\n\t\n\tpublic ObjectSerializer getObjectWriter(Class<?> clazz, boolean create) {\n        ObjectSerializer writer = get(clazz);\n\n        if (writer != null) {\n            return writer;\n        }\n\n        try {\n            final ClassLoader classLoader = Thread.currentThread().getContextClassLoader();\n            for (Object o : ServiceLoader.load(AutowiredObjectSerializer.class, classLoader)) {\n                if (!(o instanceof AutowiredObjectSerializer)) {\n                    continue;\n                }\n\n                AutowiredObjectSerializer autowired = (AutowiredObjectSerializer) o;\n                for (Type forType : autowired.getAutowiredFor()) {\n                    put(forType, autowired);\n                }\n            }\n        } catch (ClassCastException ex) {\n            // skip\n        }\n\n        writer = get(clazz);\n\n        if (writer == null) {\n            final ClassLoader classLoader = JSON.class.getClassLoader();\n            if (classLoader != Thread.currentThread().getContextClassLoader()) {\n                try {\n                    for (Object o : ServiceLoader.load(AutowiredObjectSerializer.class, classLoader)) {\n\n                        if (!(o instanceof AutowiredObjectSerializer)) {\n                            continue;\n                        }\n\n                        AutowiredObjectSerializer autowired = (AutowiredObjectSerializer) o;\n                        for (Type forType : autowired.getAutowiredFor()) {\n                            put(forType, autowired);\n                        }\n                    }\n                } catch (ClassCastException ex) {\n                    // skip\n                }\n\n                writer = get(clazz);\n            }\n        }\n\n        for (Module module : modules) {\n            writer = module.createSerializer(this, clazz);\n            if (writer != null) {\n                put(clazz, writer);\n                return writer;\n            }\n        }\n        \n        if (writer == null) {\n            String className = clazz.getName();\n            Class<?> superClass;\n\n            if (Map.class.isAssignableFrom(clazz)) {\n                put(clazz, writer = MapSerializer.instance);\n            } else if (List.class.isAssignableFrom(clazz)) {\n                put(clazz, writer = ListSerializer.instance);\n            } else if (Collection.class.isAssignableFrom(clazz)) {\n                put(clazz, writer = CollectionCodec.instance);\n            } else if (Date.class.isAssignableFrom(clazz)) {\n                put(clazz, writer = DateCodec.instance);\n            } else if (JSONAware.class.isAssignableFrom(clazz)) {\n                put(clazz, writer = JSONAwareSerializer.instance);\n            } else if (JSONSerializable.class.isAssignableFrom(clazz)) {\n                put(clazz, writer = JSONSerializableSerializer.instance);\n            } else if (JSONStreamAware.class.isAssignableFrom(clazz)) {\n                put(clazz, writer = MiscCodec.instance);\n            } else if (clazz.isEnum()) {\n                Class mixedInType = (Class) JSON.getMixInAnnotations(clazz);\n\n                JSONType jsonType;\n                if (mixedInType != null) {\n                    jsonType = TypeUtils.getAnnotation(mixedInType, JSONType.class);\n                } else {\n                    jsonType = TypeUtils.getAnnotation(clazz, JSONType.class);\n                }\n\n                if (jsonType != null && jsonType.serializeEnumAsJavaBean()) {\n                    put(clazz, writer = createJavaBeanSerializer(clazz));\n                } else {\n                    Member member = null;\n                    if (mixedInType != null) {\n                        Member mixedInMember = getEnumValueField(mixedInType);\n                        if (mixedInMember != null) {\n                            try {\n                                if (mixedInMember instanceof Method) {\n                                    Method mixedInMethod = (Method) mixedInMember;\n                                    member = clazz.getMethod(mixedInMethod.getName(), mixedInMethod.getParameterTypes());\n                                }\n                            } catch (Exception e) {\n                                // skip\n                            }\n                        }\n                    } else {\n                        member = getEnumValueField(clazz);\n                    }\n                    if (member != null) {\n                        put(clazz, writer = new EnumSerializer(member));\n                    } else {\n                        put(clazz, writer = getEnumSerializer());\n                    }\n                }\n            } else if ((superClass = clazz.getSuperclass()) != null && superClass.isEnum()) {\n                JSONType jsonType = TypeUtils.getAnnotation(superClass, JSONType.class);\n                if (jsonType != null && jsonType.serializeEnumAsJavaBean()) {\n                    put(clazz, writer = createJavaBeanSerializer(clazz));\n                } else {\n                    put(clazz, writer = getEnumSerializer());\n                }\n            } else if (clazz.isArray()) {\n                Class<?> componentType = clazz.getComponentType();\n                ObjectSerializer compObjectSerializer = getObjectWriter(componentType);\n                put(clazz, writer = new ArraySerializer(componentType, compObjectSerializer));\n            } else if (Throwable.class.isAssignableFrom(clazz)) {\n                SerializeBeanInfo beanInfo = TypeUtils.buildBeanInfo(clazz, null, propertyNamingStrategy);\n                beanInfo.features |= SerializerFeature.WriteClassName.mask;\n                put(clazz, writer = new JavaBeanSerializer(beanInfo));\n            } else if (TimeZone.class.isAssignableFrom(clazz) || Map.Entry.class.isAssignableFrom(clazz)) {\n                put(clazz, writer = MiscCodec.instance);\n            } else if (Appendable.class.isAssignableFrom(clazz)) {\n                put(clazz, writer = AppendableSerializer.instance);\n            } else if (Charset.class.isAssignableFrom(clazz)) {\n                put(clazz, writer = ToStringSerializer.instance);\n            } else if (Enumeration.class.isAssignableFrom(clazz)) {\n                put(clazz, writer = EnumerationSerializer.instance);\n            } else if (Calendar.class.isAssignableFrom(clazz) //\n                    || XMLGregorianCalendar.class.isAssignableFrom(clazz)) {\n                put(clazz, writer = CalendarCodec.instance);\n            } else if (TypeUtils.isClob(clazz)) {\n                put(clazz, writer = ClobSerializer.instance);\n            } else if (TypeUtils.isPath(clazz)) {\n                put(clazz, writer = ToStringSerializer.instance);\n            } else if (Iterator.class.isAssignableFrom(clazz)) {\n                put(clazz, writer = MiscCodec.instance);\n            } else if (org.w3c.dom.Node.class.isAssignableFrom(clazz)) {\n                put(clazz, writer = MiscCodec.instance);\n            } else {\n                if (className.startsWith(\"java.awt.\") //\n                    && AwtCodec.support(clazz) //\n                ) {\n                    // awt\n                    if (!awtError) {\n                        try {\n                            String[] names = new String[]{\n                                    \"java.awt.Color\",\n                                    \"java.awt.Font\",\n                                    \"java.awt.Point\",\n                                    \"java.awt.Rectangle\"\n                            };\n                            for (String name : names) {\n                                if (name.equals(className)) {\n                                    put(Class.forName(name), writer = AwtCodec.instance);\n                                    return writer;\n                                }\n                            }\n                        } catch (Throwable e) {\n                            awtError = true;\n                            // skip\n                        }\n                    }\n                }\n                \n                // jdk8\n                if ((!jdk8Error) //\n                    && (className.startsWith(\"java.time.\") //\n                        || className.startsWith(\"java.util.Optional\") //\n                        || className.equals(\"java.util.concurrent.atomic.LongAdder\")\n                        || className.equals(\"java.util.concurrent.atomic.DoubleAdder\")\n                    )) {\n                    try {\n                        {\n                            String[] names = new String[]{\n                                    \"java.time.LocalDateTime\",\n                                    \"java.time.LocalDate\",\n                                    \"java.time.LocalTime\",\n                                    \"java.time.ZonedDateTime\",\n                                    \"java.time.OffsetDateTime\",\n                                    \"java.time.OffsetTime\",\n                                    \"java.time.ZoneOffset\",\n                                    \"java.time.ZoneRegion\",\n                                    \"java.time.Period\",\n                                    \"java.time.Duration\",\n                                    \"java.time.Instant\"\n                            };\n                            for (String name : names) {\n                                if (name.equals(className)) {\n                                    put(Class.forName(name), writer = Jdk8DateCodec.instance);\n                                    return writer;\n                                }\n                            }\n                        }\n                        {\n                            String[] names = new String[]{\n                                    \"java.util.Optional\",\n                                    \"java.util.OptionalDouble\",\n                                    \"java.util.OptionalInt\",\n                                    \"java.util.OptionalLong\"\n                            };\n                            for (String name : names) {\n                                if (name.equals(className)) {\n                                    put(Class.forName(name), writer = OptionalCodec.instance);\n                                    return writer;\n                                }\n                            }\n                        }\n                        {\n                            String[] names = new String[]{\n                                    \"java.util.concurrent.atomic.LongAdder\",\n                                    \"java.util.concurrent.atomic.DoubleAdder\"\n                            };\n                            for (String name : names) {\n                                if (name.equals(className)) {\n                                    put(Class.forName(name), writer = AdderSerializer.instance);\n                                    return writer;\n                                }\n                            }\n                        }\n                    } catch (Throwable e) {\n                        // skip\n                        jdk8Error = true;\n                    }\n                }\n                \n                if ((!oracleJdbcError) //\n                    && className.startsWith(\"oracle.sql.\")) {\n                    try {\n                        String[] names = new String[] {\n                                \"oracle.sql.DATE\",\n                                \"oracle.sql.TIMESTAMP\"\n                        };\n\n                        for (String name : names) {\n                            if (name.equals(className)) {\n                                put(Class.forName(name), writer = DateCodec.instance);\n                                return writer;\n                            }\n                        }\n                    } catch (Throwable e) {\n                        // skip\n                        oracleJdbcError = true;\n                    }\n                }\n                \n                if ((!springfoxError) //\n                    && className.equals(\"springfox.documentation.spring.web.json.Json\")) {\n                    try {\n                        put(Class.forName(\"springfox.documentation.spring.web.json.Json\"), //\n                                writer = SwaggerJsonSerializer.instance);\n                        return writer;\n                    } catch (ClassNotFoundException e) {\n                        // skip\n                        springfoxError = true;\n                    }\n                }\n\n                if ((!guavaError) //\n                        && className.startsWith(\"com.google.common.collect.\")) {\n                    try {\n                        String[] names = new String[] {\n                                \"com.google.common.collect.HashMultimap\",\n                                \"com.google.common.collect.LinkedListMultimap\",\n                                \"com.google.common.collect.LinkedHashMultimap\",\n                                \"com.google.common.collect.ArrayListMultimap\",\n                                \"com.google.common.collect.TreeMultimap\"\n                        };\n\n                        for (String name : names) {\n                            if (name.equals(className)) {\n                                put(Class.forName(name), writer = GuavaCodec.instance);\n                                return writer;\n                            }\n                        }\n                    } catch (ClassNotFoundException e) {\n                        // skip\n                        guavaError = true;\n                    }\n                }\n\n                if (className.equals(\"net.sf.json.JSONNull\")) {\n                    put(clazz, writer = MiscCodec.instance);\n                    return writer;\n                }\n                \n\t\t\t\tif (className.equals(\"org.json.JSONObject\")) {\n                    put(clazz, writer = JSONObjectCodec.instance);\n                    return writer;\n\t\t\t\t}\n\n                if ((!jodaError) && className.startsWith(\"org.joda.\")) {\n                    try {\n                        String[] names = new String[] {\n                                \"org.joda.time.LocalDate\",\n                                \"org.joda.time.LocalDateTime\",\n                                \"org.joda.time.LocalTime\",\n                                \"org.joda.time.Instant\",\n                                \"org.joda.time.DateTime\",\n                                \"org.joda.time.Period\",\n                                \"org.joda.time.Duration\",\n                                \"org.joda.time.DateTimeZone\",\n                                \"org.joda.time.UTCDateTimeZone\",\n                                \"org.joda.time.tz.CachedDateTimeZone\",\n                                \"org.joda.time.tz.FixedDateTimeZone\",\n                        };\n\n                        for (String name : names) {\n                            if (name.equals(className)) {\n                                put(Class.forName(name), writer = JodaCodec.instance);\n                                return writer;\n                            }\n                        }\n                    } catch (ClassNotFoundException e) {\n                        // skip\n                        jodaError = true;\n                    }\n                }\n\n                if (\"java.nio.HeapByteBuffer\".equals(className)) {\n                    put(clazz, writer = ByteBufferCodec.instance);\n                    return writer;\n                }\n\n                if (\"org.javamoney.moneta.Money\".equals(className)) {\n                    put(clazz, writer = MonetaCodec.instance);\n                    return writer;\n                }\n\n                if (\"com.google.protobuf.Descriptors$FieldDescriptor\".equals(className)) {\n                    put(clazz, writer = ToStringSerializer.instance);\n                    return writer;\n                }\n\n                Class[] interfaces = clazz.getInterfaces();\n                if (interfaces.length == 1 && interfaces[0].isAnnotation()) {\n                    put(clazz, AnnotationSerializer.instance);\n                    return AnnotationSerializer.instance;\n                }\n\n                if (TypeUtils.isProxy(clazz)) {\n                    Class<?> superClazz = clazz.getSuperclass();\n\n                    ObjectSerializer superWriter = getObjectWriter(superClazz);\n                    put(clazz, superWriter);\n                    return superWriter;\n                }\n\n                if (Proxy.isProxyClass(clazz)) {\n                    Class handlerClass = null;\n\n                    if (interfaces.length == 2) {\n                        handlerClass = interfaces[1];\n                    } else {\n                        for (Class proxiedInterface : interfaces) {\n                            if (proxiedInterface.getName().startsWith(\"org.springframework.aop.\")) {\n                                continue;\n                            }\n                            if (handlerClass != null) {\n                                handlerClass = null; // multi-matched\n                                break;\n                            }\n                            handlerClass = proxiedInterface;\n                        }\n                    }\n\n                    if (handlerClass != null) {\n                        ObjectSerializer superWriter = getObjectWriter(handlerClass);\n                        put(clazz, superWriter);\n                        return superWriter;\n                    }\n                }\n\n                if (create) {\n                    writer = createJavaBeanSerializer(clazz);\n                    put(clazz, writer);\n                }\n            }\n\n            if (writer == null) {\n                writer = get(clazz);\n            }\n        }\n        return writer;\n    }\n\n    private static Member getEnumValueField(Class clazz) {\n        Member member = null;\n\n        Method[] methods = clazz.getMethods();\n\n        for (Method method : methods) {\n            if (method.getReturnType() == Void.class) {\n                continue;\n            }\n            JSONField jsonField = method.getAnnotation(JSONField.class);\n            if (jsonField != null) {\n                if (member != null) {\n                    return null;\n                }\n\n                member = method;\n            }\n        }\n\n        for (Field field : clazz.getFields()) {\n            JSONField jsonField = field.getAnnotation(JSONField.class);\n\n            if (jsonField != null) {\n                if (member != null) {\n                    return null;\n                }\n\n                member = field;\n            }\n        }\n\n        return member;\n    }\n\n    /**\n     * 可以通过重写这个方法，定义自己的枚举序列化实现\n     * @return 返回一个枚举的反序列化实现\n     * @author zhu.xiaojie\n     * @time 2020-4-5\n     */\n    protected ObjectSerializer getEnumSerializer(){\n        return EnumSerializer.instance;\n    }\n\t\n    public final ObjectSerializer get(Type type) {\n        Type mixin = JSON.getMixInAnnotations(type);\n        if (null == mixin) {\n            return this.serializers.get(type);\n        }\n        IdentityHashMap<Type, ObjectSerializer> mixInClasses = this.mixInSerializers.get(type);\n        if (mixInClasses == null) {\n            return null;\n        }\n        return mixInClasses.get(mixin);\n    }\n\n    public boolean put(Object type, Object value) {\n        return put((Type)type, (ObjectSerializer)value);\n    }\n\n    public boolean put(Type type, ObjectSerializer value) {\n        Type mixin = JSON.getMixInAnnotations(type);\n        if (mixin != null) {\n            IdentityHashMap<Type, ObjectSerializer> mixInClasses = this.mixInSerializers.get(type);\n            if (mixInClasses == null) {\n                //多线程下可能会重复创建，但不影响正确性\n                mixInClasses = new IdentityHashMap<Type, ObjectSerializer>(4);\n                mixInSerializers.put(type, mixInClasses);\n            }\n            return mixInClasses.put(mixin, value);\n        }\n        return this.serializers.put(type, value);\n    }\n\n    /**\n     * 1.2.24\n     * @param enumClasses\n     */\n\tpublic void configEnumAsJavaBean(Class<? extends Enum>... enumClasses) {\n        for (Class<? extends Enum> enumClass : enumClasses) {\n            put(enumClass, createJavaBeanSerializer(enumClass));\n        }\n    }\n\n    /**\n     * for spring config support\n     * @param propertyNamingStrategy\n     */\n    public void setPropertyNamingStrategy(PropertyNamingStrategy propertyNamingStrategy) {\n        this.propertyNamingStrategy = propertyNamingStrategy;\n    }\n\n    public void clearSerializers() {\n        this.serializers.clear();\n        this.initSerializers();\n    }\n\n    public void register(Module module) {\n        this.modules.add(module);\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/SerializeFilter.java",
    "content": "package com.alibaba.fastjson.serializer;\n\n\npublic interface SerializeFilter {\n\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/SerializeFilterable.java",
    "content": "package com.alibaba.fastjson.serializer;\n\nimport java.text.DecimalFormat;\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport com.alibaba.fastjson.JSON;\n\npublic abstract class SerializeFilterable {\n\n    protected List<BeforeFilter>       beforeFilters       = null;\n    protected List<AfterFilter>        afterFilters        = null;\n    protected List<PropertyFilter>     propertyFilters     = null;\n    protected List<ValueFilter>        valueFilters        = null;\n    protected List<NameFilter>         nameFilters         = null;\n    protected List<PropertyPreFilter>  propertyPreFilters  = null;\n    protected List<LabelFilter>        labelFilters        = null;\n    protected List<ContextValueFilter> contextValueFilters = null;\n\n    protected boolean                  writeDirect         = true;\n\n    public List<BeforeFilter> getBeforeFilters() {\n        if (beforeFilters == null) {\n            beforeFilters = new ArrayList<BeforeFilter>();\n            writeDirect = false;\n        }\n\n        return beforeFilters;\n    }\n\n    public List<AfterFilter> getAfterFilters() {\n        if (afterFilters == null) {\n            afterFilters = new ArrayList<AfterFilter>();\n            writeDirect = false;\n        }\n\n        return afterFilters;\n    }\n\n    public List<NameFilter> getNameFilters() {\n        if (nameFilters == null) {\n            nameFilters = new ArrayList<NameFilter>();\n            writeDirect = false;\n        }\n\n        return nameFilters;\n    }\n\n    public List<PropertyPreFilter> getPropertyPreFilters() {\n        if (propertyPreFilters == null) {\n            propertyPreFilters = new ArrayList<PropertyPreFilter>();\n            writeDirect = false;\n        }\n\n        return propertyPreFilters;\n    }\n\n    public List<LabelFilter> getLabelFilters() {\n        if (labelFilters == null) {\n            labelFilters = new ArrayList<LabelFilter>();\n            writeDirect = false;\n        }\n\n        return labelFilters;\n    }\n\n    public List<PropertyFilter> getPropertyFilters() {\n        if (propertyFilters == null) {\n            propertyFilters = new ArrayList<PropertyFilter>();\n            writeDirect = false;\n        }\n\n        return propertyFilters;\n    }\n\n    public List<ContextValueFilter> getContextValueFilters() {\n        if (contextValueFilters == null) {\n            contextValueFilters = new ArrayList<ContextValueFilter>();\n            writeDirect = false;\n        }\n\n        return contextValueFilters;\n    }\n\n    public List<ValueFilter> getValueFilters() {\n        if (valueFilters == null) {\n            valueFilters = new ArrayList<ValueFilter>();\n            writeDirect = false;\n        }\n\n        return valueFilters;\n    }\n\n    public void addFilter(SerializeFilter filter) {\n        if (filter == null) {\n            return;\n        }\n\n        if (filter instanceof PropertyPreFilter) {\n            this.getPropertyPreFilters().add((PropertyPreFilter) filter);\n        }\n\n        if (filter instanceof NameFilter) {\n            this.getNameFilters().add((NameFilter) filter);\n        }\n\n        if (filter instanceof ValueFilter) {\n            this.getValueFilters().add((ValueFilter) filter);\n        }\n\n        if (filter instanceof ContextValueFilter) {\n            this.getContextValueFilters().add((ContextValueFilter) filter);\n        }\n\n        if (filter instanceof PropertyFilter) {\n            this.getPropertyFilters().add((PropertyFilter) filter);\n        }\n\n        if (filter instanceof BeforeFilter) {\n            this.getBeforeFilters().add((BeforeFilter) filter);\n        }\n\n        if (filter instanceof AfterFilter) {\n            this.getAfterFilters().add((AfterFilter) filter);\n        }\n\n        if (filter instanceof LabelFilter) {\n            this.getLabelFilters().add((LabelFilter) filter);\n        }\n    }\n\n    public boolean applyName(JSONSerializer jsonBeanDeser, //\n                             Object object, String key) {\n\n        if (jsonBeanDeser.propertyPreFilters != null) {\n            for (PropertyPreFilter filter : jsonBeanDeser.propertyPreFilters) {\n                if (!filter.apply(jsonBeanDeser, object, key)) {\n                    return false;\n                }\n            }\n        }\n        \n        if (this.propertyPreFilters != null) {\n            for (PropertyPreFilter filter : this.propertyPreFilters) {\n                if (!filter.apply(jsonBeanDeser, object, key)) {\n                    return false;\n                }\n            }\n        }\n\n        return true;\n    }\n    \n    public boolean apply(JSONSerializer jsonBeanDeser, //\n                         Object object, //\n                         String key, Object propertyValue) {\n        \n        if (jsonBeanDeser.propertyFilters != null) {\n            for (PropertyFilter propertyFilter : jsonBeanDeser.propertyFilters) {\n                if (!propertyFilter.apply(object, key, propertyValue)) {\n                    return false;\n                }\n            }\n        }\n        \n        if (this.propertyFilters != null) {\n            for (PropertyFilter propertyFilter : this.propertyFilters) {\n                if (!propertyFilter.apply(object, key, propertyValue)) {\n                    return false;\n                }\n            }\n        }\n\n        return true;\n    }\n    \n    protected String processKey(JSONSerializer jsonBeanDeser, //\n                             Object object, //\n                             String key, //\n                             Object propertyValue) {\n\n        if (jsonBeanDeser.nameFilters != null) {\n            for (NameFilter nameFilter : jsonBeanDeser.nameFilters) {\n                key = nameFilter.process(object, key, propertyValue);\n            }\n        }\n        \n        if (this.nameFilters != null) {\n            for (NameFilter nameFilter : this.nameFilters) {\n                key = nameFilter.process(object, key, propertyValue);\n            }\n        }\n\n        return key;\n    }\n\n    protected Object processValue(JSONSerializer jsonBeanDeser, //\n            BeanContext beanContext,\n            Object object, //\n            String key, //\n            Object propertyValue) {\n        return processValue(jsonBeanDeser, beanContext, object, key, propertyValue, 0);\n    }\n    \n    protected Object processValue(JSONSerializer jsonBeanDeser, //\n                               BeanContext beanContext,\n                               Object object, //\n                               String key, //\n                               Object propertyValue, //\n                               int features) {\n\n        if (propertyValue != null) {\n            if ((SerializerFeature.isEnabled(jsonBeanDeser.out.features, features, SerializerFeature.WriteNonStringValueAsString)  //\n                    || (beanContext != null && (beanContext.getFeatures() & SerializerFeature.WriteNonStringValueAsString.mask) != 0))\n                    && (propertyValue instanceof Number || propertyValue instanceof Boolean)) {\n                String format = null;\n                if (propertyValue instanceof Number\n                        && beanContext != null) {\n                    format = beanContext.getFormat();\n                }\n\n                if (format != null) {\n                    propertyValue = new DecimalFormat(format).format(propertyValue);\n                } else {\n                    propertyValue = propertyValue.toString();\n                }\n            } else if (beanContext != null && beanContext.isJsonDirect()) {\n                String jsonStr = (String) propertyValue;\n                propertyValue = JSON.parse(jsonStr);\n            }\n        }\n        \n        if (jsonBeanDeser.valueFilters != null) {\n            for (ValueFilter valueFilter : jsonBeanDeser.valueFilters) {\n                propertyValue = valueFilter.process(object, key, propertyValue);\n            }\n        }\n\n        List<ValueFilter> valueFilters = this.valueFilters;\n        if (valueFilters != null) {\n            for (ValueFilter valueFilter : valueFilters) {\n                propertyValue = valueFilter.process(object, key, propertyValue);\n            }\n        }\n\n        if (jsonBeanDeser.contextValueFilters != null) {\n            for (ContextValueFilter valueFilter : jsonBeanDeser.contextValueFilters) {\n                propertyValue = valueFilter.process(beanContext, object, key, propertyValue);\n            }\n        }\n\n        if (this.contextValueFilters != null) {\n            for (ContextValueFilter valueFilter : this.contextValueFilters) {\n                propertyValue = valueFilter.process(beanContext, object, key, propertyValue);\n            }\n        }\n\n        return propertyValue;\n    }\n    \n    /**\n     * only invoke by asm byte\n     * \n     * @return\n     */\n    protected boolean writeDirect(JSONSerializer jsonBeanDeser) {\n        return jsonBeanDeser.out.writeDirect //\n               && this.writeDirect //\n               && jsonBeanDeser.writeDirect;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/SerializeWriter.java",
    "content": "/*\r\n * Copyright 1999-2018 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.serializer;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.util.IOUtils;\r\nimport com.alibaba.fastjson.util.RyuDouble;\r\nimport com.alibaba.fastjson.util.RyuFloat;\r\n\r\nimport java.io.IOException;\r\nimport java.io.OutputStream;\r\nimport java.io.Writer;\r\nimport java.math.BigDecimal;\r\nimport java.nio.charset.Charset;\r\nimport java.util.List;\r\n\r\nimport static com.alibaba.fastjson.util.IOUtils.replaceChars;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic final class SerializeWriter extends Writer {\r\n    private final static ThreadLocal<char[]> bufLocal         = new ThreadLocal<char[]>();\r\n    private final static ThreadLocal<byte[]> bytesBufLocal    = new ThreadLocal<byte[]>();\r\n    private static final char[] VALUE_TRUE = \":true\".toCharArray();\r\n    private static final char[] VALUE_FALSE = \":false\".toCharArray();\r\n    private static       int                 BUFFER_THRESHOLD = 1024 * 128;\r\n\r\n    static {\r\n        try {\r\n            String prop = IOUtils.getStringProperty(\"fastjson.serializer_buffer_threshold\");\r\n            if (prop != null && prop.length() > 0) {\r\n                int serializer_buffer_threshold = Integer.parseInt(prop);\r\n                if (serializer_buffer_threshold >= 64 && serializer_buffer_threshold <= 1024 * 64) {\r\n                    BUFFER_THRESHOLD = serializer_buffer_threshold * 1024;\r\n                }\r\n            }\r\n        } catch (Throwable error) {\r\n            // skip\r\n        }\r\n    }\r\n\r\n    protected char                           buf[];\r\n\r\n    /**\r\n     * The number of chars in the buffer.\r\n     */\r\n    protected int                            count;\r\n\r\n    protected int                            features;\r\n\r\n    private final Writer                     writer;\r\n\r\n    protected boolean                        useSingleQuotes;\r\n    protected boolean                        quoteFieldNames;\r\n    protected boolean                        sortField;\r\n    protected boolean                        disableCircularReferenceDetect;\r\n    protected boolean                        beanToArray;\r\n    protected boolean                        writeNonStringValueAsString;\r\n    protected boolean                        notWriteDefaultValue;\r\n    protected boolean                        writeEnumUsingName;\r\n    protected boolean                        writeEnumUsingToString;\r\n    protected boolean                        writeDirect;\r\n\r\n    protected char                           keySeperator;\r\n\r\n    protected int                            maxBufSize = -1;\r\n\r\n    protected boolean                        browserSecure;\r\n    protected long                           sepcialBits;\r\n\r\n    public SerializeWriter(){\r\n        this((Writer) null);\r\n    }\r\n\r\n    public SerializeWriter(Writer writer){\r\n        this(writer, JSON.DEFAULT_GENERATE_FEATURE, SerializerFeature.EMPTY);\r\n    }\r\n\r\n    public SerializeWriter(SerializerFeature... features){\r\n        this(null, features);\r\n    }\r\n\r\n    public SerializeWriter(Writer writer, SerializerFeature... features){\r\n        this(writer, 0, features);\r\n    }\r\n\r\n    /**\r\n     * @since 1.2.9\r\n     * @param writer\r\n     * @param defaultFeatures\r\n     * @param features\r\n     */\r\n    public SerializeWriter(Writer writer, int defaultFeatures, SerializerFeature... features){\r\n        this.writer = writer;\r\n\r\n        buf = bufLocal.get();\r\n\r\n        if (buf != null) {\r\n            bufLocal.set(null);\r\n        } else {\r\n            buf = new char[2048];\r\n        }\r\n\r\n        int featuresValue = defaultFeatures;\r\n        for (SerializerFeature feature : features) {\r\n            featuresValue |= feature.getMask();\r\n        }\r\n        this.features = featuresValue;\r\n\r\n        computeFeatures();\r\n    }\r\n\r\n    public int getMaxBufSize() {\r\n        return maxBufSize;\r\n    }\r\n\r\n    public void setMaxBufSize(int maxBufSize) {\r\n        if (maxBufSize < this.buf.length) {\r\n            throw new JSONException(\"must > \" + buf.length);\r\n        }\r\n\r\n        this.maxBufSize = maxBufSize;\r\n    }\r\n\r\n    public int getBufferLength() {\r\n        return this.buf.length;\r\n    }\r\n\r\n    public SerializeWriter(int initialSize){\r\n        this(null, initialSize);\r\n    }\r\n\r\n    public SerializeWriter(Writer writer, int initialSize){\r\n        this.writer = writer;\r\n\r\n        if (initialSize <= 0) {\r\n            throw new IllegalArgumentException(\"Negative initial size: \" + initialSize);\r\n        }\r\n        buf = new char[initialSize];\r\n\r\n        computeFeatures();\r\n    }\r\n\r\n    public void config(SerializerFeature feature, boolean state) {\r\n        if (state) {\r\n            features |= feature.getMask();\r\n            // 由于枚举序列化特性WriteEnumUsingToString和WriteEnumUsingName不能共存，需要检查\r\n            if (feature == SerializerFeature.WriteEnumUsingToString) {\r\n                features &= ~SerializerFeature.WriteEnumUsingName.getMask();\r\n            } else if (feature == SerializerFeature.WriteEnumUsingName) {\r\n                features &= ~SerializerFeature.WriteEnumUsingToString.getMask();\r\n            }\r\n        } else {\r\n            features &= ~feature.getMask();\r\n        }\r\n\r\n        computeFeatures();\r\n    }\r\n\r\n    final static int nonDirectFeatures = 0 //\r\n            | SerializerFeature.UseSingleQuotes.mask //\r\n            | SerializerFeature.BrowserCompatible.mask //\r\n            | SerializerFeature.PrettyFormat.mask //\r\n            | SerializerFeature.WriteEnumUsingToString.mask\r\n            | SerializerFeature.WriteNonStringValueAsString.mask\r\n            | SerializerFeature.WriteSlashAsSpecial.mask\r\n            | SerializerFeature.IgnoreErrorGetter.mask\r\n            | SerializerFeature.WriteClassName.mask\r\n            | SerializerFeature.NotWriteDefaultValue.mask\r\n            ;\r\n    protected void computeFeatures() {\r\n        quoteFieldNames = (this.features & SerializerFeature.QuoteFieldNames.mask) != 0;\r\n        useSingleQuotes = (this.features & SerializerFeature.UseSingleQuotes.mask) != 0;\r\n        sortField = (this.features & SerializerFeature.SortField.mask) != 0;\r\n        disableCircularReferenceDetect = (this.features & SerializerFeature.DisableCircularReferenceDetect.mask) != 0;\r\n        beanToArray = (this.features & SerializerFeature.BeanToArray.mask) != 0;\r\n        writeNonStringValueAsString = (this.features & SerializerFeature.WriteNonStringValueAsString.mask) != 0;\r\n        notWriteDefaultValue = (this.features & SerializerFeature.NotWriteDefaultValue.mask) != 0;\r\n        writeEnumUsingName = (this.features & SerializerFeature.WriteEnumUsingName.mask) != 0;\r\n        writeEnumUsingToString = (this.features & SerializerFeature.WriteEnumUsingToString.mask) != 0;\r\n\r\n        writeDirect = quoteFieldNames //\r\n                      && (this.features & nonDirectFeatures) == 0 //\r\n                      && (beanToArray || writeEnumUsingName)\r\n                      ;\r\n\r\n        keySeperator = useSingleQuotes ? '\\'' : '\"';\r\n\r\n        browserSecure = (this.features & SerializerFeature.BrowserSecure.mask) != 0;\r\n\r\n        final long S0 = 0x4FFFFFFFFL, S1 = 0x8004FFFFFFFFL, S2 = 0x50000304ffffffffL;\r\n//        long s = 0;\r\n//        for (int i = 0; i <= 31; ++i) {\r\n//            s |= (1L << i);\r\n//        }\r\n//        s |= (1L << '\"');\r\n//\r\n//        //S0 = s;\r\n//        //S1 = s | (1L << '/');\r\n//\r\n//        s |= (1L << '('); // 41\r\n//        s |= (1L << ')'); // 42\r\n//        s |= (1L << '<'); // 60\r\n//        s |= (1L << '>'); // 62\r\n//        S2 = s;\r\n        sepcialBits = browserSecure\r\n                ? S2\r\n                : (features & SerializerFeature.WriteSlashAsSpecial.mask) != 0 ? S1 : S0;\r\n    }\r\n\r\n    public boolean isSortField() {\r\n        return sortField;\r\n    }\r\n\r\n    public boolean isNotWriteDefaultValue() {\r\n        return notWriteDefaultValue;\r\n    }\r\n\r\n    public boolean isEnabled(SerializerFeature feature) {\r\n        return (this.features & feature.mask) != 0;\r\n    }\r\n    \r\n    public boolean isEnabled(int feature) {\r\n        return (this.features & feature) != 0;\r\n    }\r\n\r\n    /**\r\n     * Writes a character to the buffer.\r\n     */\r\n    public void write(int c) {\r\n        int newcount = count + 1;\r\n        if (newcount > buf.length) {\r\n            if (writer == null) {\r\n                expandCapacity(newcount);\r\n            } else {\r\n                flush();\r\n                newcount = 1;\r\n            }\r\n        }\r\n        buf[count] = (char) c;\r\n        count = newcount;\r\n    }\r\n\r\n    /**\r\n     * Writes characters to the buffer.\r\n     * \r\n     * @param c the data to be written\r\n     * @param off the start offset in the data\r\n     * @param len the number of chars that are written\r\n     */\r\n    public void write(char c[], int off, int len) {\r\n        if (off < 0 //\r\n            || off > c.length //\r\n            || len < 0 //\r\n            || off + len > c.length //\r\n            || off + len < 0) {\r\n            throw new IndexOutOfBoundsException();\r\n        } else if (len == 0) {\r\n            return;\r\n        }\r\n\r\n        int newcount = count + len;\r\n        if (newcount > buf.length) {\r\n            if (writer == null) {\r\n                expandCapacity(newcount);\r\n            } else {\r\n                do {\r\n                    int rest = buf.length - count;\r\n                    System.arraycopy(c, off, buf, count, rest);\r\n                    count = buf.length;\r\n                    flush();\r\n                    len -= rest;\r\n                    off += rest;\r\n                } while (len > buf.length);\r\n                newcount = len;\r\n            }\r\n        }\r\n        System.arraycopy(c, off, buf, count, len);\r\n        count = newcount;\r\n\r\n    }\r\n\r\n    public void expandCapacity(int minimumCapacity) {\r\n        if (maxBufSize != -1 && minimumCapacity >= maxBufSize) {\r\n            throw new JSONException(\"serialize exceeded MAX_OUTPUT_LENGTH=\" + maxBufSize + \", minimumCapacity=\" + minimumCapacity);\r\n        }\r\n\r\n        int newCapacity = buf.length + (buf.length >> 1) + 1;\r\n\r\n        if (newCapacity < minimumCapacity) {\r\n            newCapacity = minimumCapacity;\r\n        }\r\n        char newValue[] = new char[newCapacity];\r\n        System.arraycopy(buf, 0, newValue, 0, count);\r\n\r\n        if (buf.length < BUFFER_THRESHOLD) {\r\n            char[] charsLocal = bufLocal.get();\r\n            if (charsLocal == null || charsLocal.length < buf.length) {\r\n                bufLocal.set(buf);\r\n            }\r\n        }\r\n\r\n        buf = newValue;\r\n    }\r\n    \r\n    public SerializeWriter append(CharSequence csq) {\r\n        String s = (csq == null ? \"null\" : csq.toString());\r\n        write(s, 0, s.length());\r\n        return this;\r\n    }\r\n\r\n    public SerializeWriter append(CharSequence csq, int start, int end) {\r\n        String s = (csq == null ? \"null\" : csq).subSequence(start, end).toString();\r\n        write(s, 0, s.length());\r\n        return this;\r\n    }\r\n\r\n    public SerializeWriter append(char c) {\r\n        write(c);\r\n        return this;\r\n    }\r\n\r\n    /**\r\n     * Write a portion of a string to the buffer.\r\n     * \r\n     * @param str String to be written from\r\n     * @param off Offset from which to start reading characters\r\n     * @param len Number of characters to be written\r\n     */\r\n    public void write(String str, int off, int len) {\r\n        int newcount = count + len;\r\n        if (newcount > buf.length) {\r\n            if (writer == null) {\r\n                expandCapacity(newcount);\r\n            } else {\r\n                do {\r\n                    int rest = buf.length - count;\r\n                    str.getChars(off, off + rest, buf, count);\r\n                    count = buf.length;\r\n                    flush();\r\n                    len -= rest;\r\n                    off += rest;\r\n                } while (len > buf.length);\r\n                newcount = len;\r\n            }\r\n        }\r\n        str.getChars(off, off + len, buf, count);\r\n        count = newcount;\r\n    }\r\n\r\n    /**\r\n     * Writes the contents of the buffer to another character stream.\r\n     * \r\n     * @param out the output stream to write to\r\n     * @throws IOException If an I/O error occurs.\r\n     */\r\n    public void writeTo(Writer out) throws IOException {\r\n        if (this.writer != null) {\r\n            throw new UnsupportedOperationException(\"writer not null\");\r\n        }\r\n        out.write(buf, 0, count);\r\n    }\r\n\r\n    public void writeTo(OutputStream out, String charsetName) throws IOException {\r\n        writeTo(out, Charset.forName(charsetName));\r\n    }\r\n    \r\n    public void writeTo(OutputStream out, Charset charset) throws IOException {\r\n        writeToEx(out, charset);\r\n    }\r\n\r\n    public int writeToEx(OutputStream out, Charset charset) throws IOException {\r\n        if (this.writer != null) {\r\n            throw new UnsupportedOperationException(\"writer not null\");\r\n        }\r\n        \r\n        if (charset == IOUtils.UTF8) {\r\n            return encodeToUTF8(out);\r\n        } else {\r\n            byte[] bytes = new String(buf, 0, count).getBytes(charset);\r\n            out.write(bytes);\r\n            return bytes.length;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Returns a copy of the input data.\r\n     * \r\n     * @return an array of chars copied from the input data.\r\n     */\r\n    public char[] toCharArray() {\r\n        if (this.writer != null) {\r\n            throw new UnsupportedOperationException(\"writer not null\");\r\n        }\r\n\r\n        char[] newValue = new char[count];\r\n        System.arraycopy(buf, 0, newValue, 0, count);\r\n        return newValue;\r\n    }\r\n    \r\n    /**\r\n     * only for springwebsocket\r\n     * @return\r\n     */\r\n    public char[] toCharArrayForSpringWebSocket() {\r\n        if (this.writer != null) {\r\n            throw new UnsupportedOperationException(\"writer not null\");\r\n        }\r\n\r\n        char[] newValue = new char[count - 2];\r\n        System.arraycopy(buf, 1, newValue, 0, count - 2);\r\n        return newValue;\r\n    }\r\n\r\n    public byte[] toBytes(String charsetName) {\r\n        return toBytes(charsetName == null || \"UTF-8\".equals(charsetName) //\r\n            ? IOUtils.UTF8 //\r\n            : Charset.forName(charsetName));\r\n    }\r\n\r\n    public byte[] toBytes(Charset charset) {\r\n        if (this.writer != null) {\r\n            throw new UnsupportedOperationException(\"writer not null\");\r\n        }\r\n        \r\n        if (charset == IOUtils.UTF8) {\r\n            return encodeToUTF8Bytes();\r\n        } else {\r\n            return new String(buf, 0, count).getBytes(charset);\r\n        }\r\n    }\r\n\r\n    private int encodeToUTF8(OutputStream out) throws IOException {\r\n\r\n        int bytesLength = (int) (count * (double) 3);\r\n        byte[] bytes = bytesBufLocal.get();\r\n\r\n        if (bytes == null) {\r\n            bytes = new byte[1024 * 8];\r\n            bytesBufLocal.set(bytes);\r\n        }\r\n        byte[] bytesLocal = bytes;\r\n\r\n        if (bytes.length < bytesLength) {\r\n            bytes = new byte[bytesLength];\r\n        }\r\n\r\n        int position = IOUtils.encodeUTF8(buf, 0, count, bytes);\r\n        out.write(bytes, 0, position);\r\n\r\n        if (bytes != bytesLocal && bytes.length <= BUFFER_THRESHOLD) {\r\n            bytesBufLocal.set(bytes);\r\n        }\r\n\r\n        return position;\r\n    }\r\n    \r\n    private byte[] encodeToUTF8Bytes() {\r\n        int bytesLength = (int) (count * (double) 3);\r\n        byte[] bytes = bytesBufLocal.get();\r\n\r\n        if (bytes == null) {\r\n            bytes = new byte[1024 * 8];\r\n            bytesBufLocal.set(bytes);\r\n        }\r\n        byte[] bytesLocal = bytes;\r\n\r\n        if (bytes.length < bytesLength) {\r\n            bytes = new byte[bytesLength];\r\n        }\r\n\r\n        int position = IOUtils.encodeUTF8(buf, 0, count, bytes);\r\n        byte[] copy = new byte[position];\r\n        System.arraycopy(bytes, 0, copy, 0, position);\r\n\r\n        if (bytes != bytesLocal && bytes.length <= BUFFER_THRESHOLD) {\r\n            bytesBufLocal.set(bytes);\r\n        }\r\n\r\n        return copy;\r\n    }\r\n    \r\n    public int size() {\r\n        return count;\r\n    }\r\n\r\n    public String toString() {\r\n        return new String(buf, 0, count);\r\n    }\r\n\r\n    /**\r\n     * Close the stream. This method does not release the buffer, since its contents might still be required. Note:\r\n     * Invoking this method in this class will have no effect.\r\n     */\r\n    public void close() {\r\n        if (writer != null && count > 0) {\r\n            flush();\r\n        }\r\n        if (buf.length <= BUFFER_THRESHOLD) {\r\n            bufLocal.set(buf);\r\n        }\r\n\r\n        this.buf = null;\r\n    }\r\n\r\n    public void write(String text) {\r\n        if (text == null) {\r\n            writeNull();\r\n            return;\r\n        }\r\n\r\n        write(text, 0, text.length());\r\n    }\r\n\r\n    public void writeInt(int i) {\r\n        if (i == Integer.MIN_VALUE) {\r\n            write(\"-2147483648\");\r\n            return;\r\n        }\r\n\r\n        int size = (i < 0) ? IOUtils.stringSize(-i) + 1 : IOUtils.stringSize(i);\r\n\r\n        int newcount = count + size;\r\n        if (newcount > buf.length) {\r\n            if (writer == null) {\r\n                expandCapacity(newcount);\r\n            } else {\r\n                char[] chars = new char[size];\r\n                IOUtils.getChars(i, size, chars);\r\n                write(chars, 0, chars.length);\r\n                return;\r\n            }\r\n        }\r\n\r\n        IOUtils.getChars(i, newcount, buf);\r\n\r\n        count = newcount;\r\n    }\r\n\r\n    public void writeByteArray(byte[] bytes) {\r\n        if (isEnabled(SerializerFeature.WriteClassName.mask)) {\r\n            writeHex(bytes);\r\n            return;\r\n        }\r\n\r\n        int bytesLen = bytes.length;\r\n        final char quote = useSingleQuotes ? '\\'' : '\"';\r\n        if (bytesLen == 0) {\r\n            String emptyString = useSingleQuotes ? \"''\" : \"\\\"\\\"\";\r\n            write(emptyString);\r\n            return;\r\n        }\r\n\r\n        final char[] CA = IOUtils.CA;\r\n\r\n        // base64 algorithm author Mikael Grev\r\n        int eLen = (bytesLen / 3) * 3; // Length of even 24-bits.\r\n        int charsLen = ((bytesLen - 1) / 3 + 1) << 2; // base64 character count\r\n        // char[] chars = new char[charsLen];\r\n        int offset = count;\r\n        int newcount = count + charsLen + 2;\r\n        if (newcount > buf.length) {\r\n            if (writer != null) {\r\n                write(quote);\r\n\r\n                for (int s = 0; s < eLen;) {\r\n                    // Copy next three bytes into lower 24 bits of int, paying attension to sign.\r\n                    int i = (bytes[s++] & 0xff) << 16 | (bytes[s++] & 0xff) << 8 | (bytes[s++] & 0xff);\r\n\r\n                    // Encode the int into four chars\r\n                    write(CA[(i >>> 18) & 0x3f]);\r\n                    write(CA[(i >>> 12) & 0x3f]);\r\n                    write(CA[(i >>> 6) & 0x3f]);\r\n                    write(CA[i & 0x3f]);\r\n                }\r\n\r\n                // Pad and encode last bits if source isn't even 24 bits.\r\n                int left = bytesLen - eLen; // 0 - 2.\r\n                if (left > 0) {\r\n                    // Prepare the int\r\n                    int i = ((bytes[eLen] & 0xff) << 10) | (left == 2 ? ((bytes[bytesLen - 1] & 0xff) << 2) : 0);\r\n\r\n                    // Set last four chars\r\n                    write(CA[i >> 12]);\r\n                    write(CA[(i >>> 6) & 0x3f]);\r\n                    write(left == 2 ? CA[i & 0x3f] : '=');\r\n                    write('=');\r\n                }\r\n\r\n                write(quote);\r\n                return;\r\n            }\r\n            expandCapacity(newcount);\r\n        }\r\n        count = newcount;\r\n        buf[offset++] = quote;\r\n\r\n        // Encode even 24-bits\r\n        for (int s = 0, d = offset; s < eLen;) {\r\n            // Copy next three bytes into lower 24 bits of int, paying attension to sign.\r\n            int i = (bytes[s++] & 0xff) << 16 | (bytes[s++] & 0xff) << 8 | (bytes[s++] & 0xff);\r\n\r\n            // Encode the int into four chars\r\n            buf[d++] = CA[(i >>> 18) & 0x3f];\r\n            buf[d++] = CA[(i >>> 12) & 0x3f];\r\n            buf[d++] = CA[(i >>> 6) & 0x3f];\r\n            buf[d++] = CA[i & 0x3f];\r\n        }\r\n\r\n        // Pad and encode last bits if source isn't even 24 bits.\r\n        int left = bytesLen - eLen; // 0 - 2.\r\n        if (left > 0) {\r\n            // Prepare the int\r\n            int i = ((bytes[eLen] & 0xff) << 10) | (left == 2 ? ((bytes[bytesLen - 1] & 0xff) << 2) : 0);\r\n\r\n            // Set last four chars\r\n            buf[newcount - 5] = CA[i >> 12];\r\n            buf[newcount - 4] = CA[(i >>> 6) & 0x3f];\r\n            buf[newcount - 3] = left == 2 ? CA[i & 0x3f] : '=';\r\n            buf[newcount - 2] = '=';\r\n        }\r\n        buf[newcount - 1] = quote;\r\n    }\r\n\r\n    public void writeHex(byte[] bytes) {\r\n        int newcount = count + bytes.length * 2 + 3;\r\n        if (newcount > buf.length) {\r\n            expandCapacity(newcount);\r\n        }\r\n\r\n        buf[count++] = 'x';\r\n        buf[count++] = '\\'';\r\n\r\n        for (int i = 0; i < bytes.length; ++i) {\r\n            byte b = bytes[i];\r\n\r\n            int a = b & 0xFF;\r\n            int b0 = a >> 4;\r\n            int b1 = a & 0xf;\r\n\r\n            buf[count++] = (char) (b0 + (b0 < 10 ? 48 : 55));\r\n            buf[count++] = (char) (b1 + (b1 < 10 ? 48 : 55));\r\n        }\r\n        buf[count++] = '\\'';\r\n    }\r\n\r\n    public void writeFloat(float value, boolean checkWriteClassName) {\r\n        if (value != value || value == Float.POSITIVE_INFINITY || value == Float.NEGATIVE_INFINITY) {\r\n            writeNull();\r\n        } else {\r\n            int newcount = count + 15;\r\n            if (newcount > buf.length) {\r\n                if (writer == null) {\r\n                    expandCapacity(newcount);\r\n                } else {\r\n                    String str = RyuFloat.toString(value);\r\n                    write(str, 0, str.length());\r\n\r\n                    if (checkWriteClassName && isEnabled(SerializerFeature.WriteClassName)) {\r\n                        write('F');\r\n                    }\r\n                    return;\r\n                }\r\n            }\r\n\r\n            int len = RyuFloat.toString(value, buf, count);\r\n            count += len;\r\n\r\n            if (checkWriteClassName && isEnabled(SerializerFeature.WriteClassName)) {\r\n                write('F');\r\n            }\r\n        }\r\n    }\r\n\r\n    public void writeDouble(double value, boolean checkWriteClassName) {\r\n        if (Double.isNaN(value)\r\n                || Double.isInfinite(value)) {\r\n            writeNull();\r\n            return;\r\n        }\r\n\r\n        int newcount = count + 24;\r\n        if (newcount > buf.length) {\r\n            if (writer == null) {\r\n                expandCapacity(newcount);\r\n            } else {\r\n                String str = RyuDouble.toString(value);\r\n                write(str, 0, str.length());\r\n\r\n                if (checkWriteClassName && isEnabled(SerializerFeature.WriteClassName)) {\r\n                    write('D');\r\n                }\r\n                return;\r\n            }\r\n        }\r\n\r\n        int len = RyuDouble.toString(value, buf, count);\r\n        count += len;\r\n\r\n        if (checkWriteClassName && isEnabled(SerializerFeature.WriteClassName)) {\r\n            write('D');\r\n        }\r\n    }\r\n\r\n    public void writeEnum(Enum<?> value) {\r\n        if (value == null) {\r\n            writeNull();\r\n            return;\r\n        }\r\n        \r\n        String strVal = null;\r\n        if (writeEnumUsingName && !writeEnumUsingToString) {\r\n            strVal = value.name();\r\n        } else if (writeEnumUsingToString) {\r\n            strVal = value.toString();\r\n        }\r\n\r\n        if (strVal != null) {\r\n            char quote = isEnabled(SerializerFeature.UseSingleQuotes) ? '\\'' : '\"';\r\n            write(quote);\r\n            write(strVal);\r\n            write(quote);\r\n        } else {\r\n            writeInt(value.ordinal());\r\n        }\r\n    }\r\n\r\n    /**\r\n     * @deprecated\r\n     */\r\n    public void writeLongAndChar(long i, char c) throws IOException {\r\n        writeLong(i);\r\n        write(c);\r\n    }\r\n\r\n    public void writeLong(long i) {\r\n        boolean needQuotationMark = isEnabled(SerializerFeature.BrowserCompatible) //\r\n                                    && (!isEnabled(SerializerFeature.WriteClassName)) //\r\n                                    && (i > 9007199254740991L || i < -9007199254740991L);\r\n\r\n        if (i == Long.MIN_VALUE) {\r\n            if (needQuotationMark) {\r\n                write(\"\\\"-9223372036854775808\\\"\");\r\n            } else {\r\n                write(\"-9223372036854775808\");\r\n            }\r\n            return;\r\n        }\r\n\r\n        int size = (i < 0) ? IOUtils.stringSize(-i) + 1 : IOUtils.stringSize(i);\r\n\r\n        int newcount = count + size;\r\n        if (needQuotationMark) newcount += 2;\r\n        if (newcount > buf.length) {\r\n            if (writer == null) {\r\n                expandCapacity(newcount);\r\n            } else {\r\n                char[] chars = new char[size];\r\n                IOUtils.getChars(i, size, chars);\r\n                if (needQuotationMark) {\r\n                    write('\"');\r\n                    write(chars, 0, chars.length);\r\n                    write('\"');\r\n                } else {\r\n                    write(chars, 0, chars.length);\r\n                }\r\n                return;\r\n            }\r\n        }\r\n\r\n        if (needQuotationMark) {\r\n            buf[count] = '\"';\r\n            IOUtils.getChars(i, newcount - 1, buf);\r\n            buf[newcount - 1] = '\"';\r\n        } else {\r\n            IOUtils.getChars(i, newcount, buf);\r\n        }\r\n\r\n        count = newcount;\r\n    }\r\n\r\n    public void writeNull() {\r\n        write(\"null\");\r\n    }\r\n    \r\n    public void writeNull(SerializerFeature feature) {\r\n        writeNull(0, feature.mask);\r\n    }\r\n    \r\n    public void writeNull(int beanFeatures , int feature) {\r\n        if ((beanFeatures & feature) == 0 //\r\n            && (this.features & feature) == 0) {\r\n            writeNull();\r\n            return;\r\n        }\r\n        if ((beanFeatures & SerializerFeature.WriteMapNullValue.mask) != 0\r\n                && (beanFeatures & ~SerializerFeature.WriteMapNullValue.mask\r\n                & SerializerFeature.WRITE_MAP_NULL_FEATURES) == 0) {\r\n            writeNull();\r\n            return;\r\n        }\r\n        \r\n        if (feature == SerializerFeature.WriteNullListAsEmpty.mask) {\r\n            write(\"[]\");\r\n        } else if (feature == SerializerFeature.WriteNullStringAsEmpty.mask) {\r\n            writeString(\"\");\r\n        } else if (feature == SerializerFeature.WriteNullBooleanAsFalse.mask) {\r\n            write(\"false\");\r\n        } else if (feature == SerializerFeature.WriteNullNumberAsZero.mask) {\r\n            write('0');\r\n        } else {\r\n            writeNull();\r\n        }\r\n    }\r\n    \r\n    public void writeStringWithDoubleQuote(String text, final char seperator) {\r\n        if (text == null) {\r\n            writeNull();\r\n            if (seperator != 0) {\r\n                write(seperator);\r\n            }\r\n            return;\r\n        }\r\n\r\n        int len = text.length();\r\n        int newcount = count + len + 2;\r\n        if (seperator != 0) {\r\n            newcount++;\r\n        }\r\n\r\n        if (newcount > buf.length) {\r\n            if (writer != null) {\r\n                write('\"');\r\n\r\n                for (int i = 0; i < text.length(); ++i) {\r\n                    char ch = text.charAt(i);\r\n\r\n                    if (isEnabled(SerializerFeature.BrowserSecure)) {\r\n                       if (ch == '(' || ch == ')' || ch == '<' || ch == '>') {\r\n                            write('\\\\');\r\n                            write('u');\r\n                            write(IOUtils.DIGITS[(ch >>> 12) & 15]);\r\n                            write(IOUtils.DIGITS[(ch >>> 8 ) & 15]);\r\n                            write(IOUtils.DIGITS[(ch >>> 4 ) & 15]);\r\n                            write(IOUtils.DIGITS[ch & 15]);\r\n                            continue;\r\n                        }\r\n                    }\r\n\r\n                    if (isEnabled(SerializerFeature.BrowserCompatible)) {\r\n                        if (ch == '\\b' //\r\n                            || ch == '\\f' //\r\n                            || ch == '\\n' //\r\n                            || ch == '\\r' //\r\n                            || ch == '\\t' //\r\n                            || ch == '\"' //\r\n                            || ch == '/' //\r\n                            || ch == '\\\\') {\r\n                            write('\\\\');\r\n                            write(replaceChars[(int) ch]);\r\n                            continue;\r\n                        }\r\n\r\n                        if (ch < 32) {\r\n                            write('\\\\');\r\n                            write('u');\r\n                            write('0');\r\n                            write('0');\r\n                            write(IOUtils.ASCII_CHARS[ch * 2    ]);\r\n                            write(IOUtils.ASCII_CHARS[ch * 2 + 1]);\r\n                            continue;\r\n                        }\r\n\r\n                        if (ch >= 127) {\r\n                            write('\\\\');\r\n                            write('u');\r\n                            write(IOUtils.DIGITS[(ch >>> 12) & 15]);\r\n                            write(IOUtils.DIGITS[(ch >>> 8 ) & 15]);\r\n                            write(IOUtils.DIGITS[(ch >>> 4 ) & 15]);\r\n                            write(IOUtils.DIGITS[ ch         & 15]);\r\n                            continue;\r\n                        }\r\n                    } else {\r\n                        if (ch < IOUtils.specicalFlags_doubleQuotes.length\r\n                            && IOUtils.specicalFlags_doubleQuotes[ch] != 0 //\r\n                            || (ch == '/' && isEnabled(SerializerFeature.WriteSlashAsSpecial))) {\r\n                            write('\\\\');\r\n                            if (IOUtils.specicalFlags_doubleQuotes[ch] == 4) {\r\n                                write('u');\r\n                                write(IOUtils.DIGITS[ch >>> 12 & 15]);\r\n                                write(IOUtils.DIGITS[ch >>> 8  & 15]);\r\n                                write(IOUtils.DIGITS[ch >>> 4  & 15]);\r\n                                write(IOUtils.DIGITS[ch        & 15]);\r\n                            } else {\r\n                                write(IOUtils.replaceChars[ch]);\r\n                            }\r\n                            continue;\r\n                        }\r\n                    }\r\n\r\n                    write(ch);\r\n                }\r\n\r\n                write('\"');\r\n                if (seperator != 0) {\r\n                    write(seperator);\r\n                }\r\n                return;\r\n            }\r\n            expandCapacity(newcount);\r\n        }\r\n\r\n        int start = count + 1;\r\n        int end = start + len;\r\n\r\n        buf[count] = '\\\"';\r\n        text.getChars(0, len, buf, start);\r\n\r\n        count = newcount;\r\n\r\n        if (isEnabled(SerializerFeature.BrowserCompatible)) {\r\n            int lastSpecialIndex = -1;\r\n\r\n            for (int i = start; i < end; ++i) {\r\n                char ch = buf[i];\r\n\r\n                if (ch == '\"' //\r\n                    || ch == '/' //\r\n                    || ch == '\\\\') {\r\n                    lastSpecialIndex = i;\r\n                    newcount += 1;\r\n                    continue;\r\n                }\r\n\r\n                if (ch == '\\b' //\r\n                    || ch == '\\f' //\r\n                    || ch == '\\n' //\r\n                    || ch == '\\r' //\r\n                    || ch == '\\t') {\r\n                    lastSpecialIndex = i;\r\n                    newcount += 1;\r\n                    continue;\r\n                }\r\n\r\n                if (ch < 32) {\r\n                    lastSpecialIndex = i;\r\n                    newcount += 5;\r\n                    continue;\r\n                }\r\n\r\n                if (ch >= 127) {\r\n                    lastSpecialIndex = i;\r\n                    newcount += 5;\r\n                    continue;\r\n                }\r\n            }\r\n\r\n            if (newcount > buf.length) {\r\n                expandCapacity(newcount);\r\n            }\r\n            count = newcount;\r\n\r\n            for (int i = lastSpecialIndex; i >= start; --i) {\r\n                char ch = buf[i];\r\n\r\n                if (ch == '\\b' //\r\n                    || ch == '\\f'//\r\n                    || ch == '\\n' //\r\n                    || ch == '\\r' //\r\n                    || ch == '\\t'\r\n                ) {\r\n                    System.arraycopy(buf, i + 1, buf, i + 2, end - i - 1);\r\n                    buf[i] = '\\\\';\r\n                    buf[i + 1] = replaceChars[(int) ch];\r\n                    end += 1;\r\n                    continue;\r\n                }\r\n\r\n                if (ch == '\"' //\r\n                    || ch == '/' //\r\n                    || ch == '\\\\'\r\n                ) {\r\n                    System.arraycopy(buf, i + 1, buf, i + 2, end - i - 1);\r\n                    buf[i] = '\\\\';\r\n                    buf[i + 1] = ch;\r\n                    end += 1;\r\n                    continue;\r\n                }\r\n\r\n                if (ch < 32) {\r\n                    System.arraycopy(buf, i + 1, buf, i + 6, end - i - 1);\r\n                    buf[i    ] = '\\\\';\r\n                    buf[i + 1] = 'u';\r\n                    buf[i + 2] = '0';\r\n                    buf[i + 3] = '0';\r\n                    buf[i + 4] = IOUtils.ASCII_CHARS[ch * 2];\r\n                    buf[i + 5] = IOUtils.ASCII_CHARS[ch * 2 + 1];\r\n                    end += 5;\r\n                    continue;\r\n                }\r\n\r\n                if (ch >= 127) {\r\n                    System.arraycopy(buf, i + 1, buf, i + 6, end - i - 1);\r\n                    buf[i    ] = '\\\\';\r\n                    buf[i + 1] = 'u';\r\n                    buf[i + 2] = IOUtils.DIGITS[(ch >>> 12) & 15];\r\n                    buf[i + 3] = IOUtils.DIGITS[(ch >>> 8) & 15];\r\n                    buf[i + 4] = IOUtils.DIGITS[(ch >>> 4) & 15];\r\n                    buf[i + 5] = IOUtils.DIGITS[ch & 15];\r\n                    end += 5;\r\n                }\r\n            }\r\n\r\n            if (seperator != 0) {\r\n                buf[count - 2] = '\\\"';\r\n                buf[count - 1] = seperator;\r\n            } else {\r\n                buf[count - 1] = '\\\"';\r\n            }\r\n\r\n            return;\r\n        }\r\n\r\n        int specialCount      = 0;\r\n        int lastSpecialIndex  = -1;\r\n        int firstSpecialIndex = -1;\r\n        char lastSpecial      = '\\0';\r\n\r\n        for (int i = start; i < end; ++i) {\r\n            char ch = buf[i];\r\n\r\n            if (ch >= ']') { // 93\r\n                if (ch >= 0x7F //\r\n                        && (ch == '\\u2028' //\r\n                        || ch == '\\u2029' //\r\n                        || ch < 0xA0)) {\r\n                    if (firstSpecialIndex == -1) {\r\n                        firstSpecialIndex = i;\r\n                    }\r\n\r\n                    specialCount++;\r\n                    lastSpecialIndex = i;\r\n                    lastSpecial = ch;\r\n                    newcount += 4;\r\n                }\r\n                continue;\r\n            }\r\n\r\n            boolean special = (ch < 64 && (sepcialBits & (1L << ch)) != 0) || ch == '\\\\';\r\n            if (special) {\r\n                specialCount++;\r\n                lastSpecialIndex = i;\r\n                lastSpecial = ch;\r\n\r\n                if (ch == '('\r\n                        || ch == ')'\r\n                        || ch == '<'\r\n                        || ch == '>'\r\n                        || (ch < IOUtils.specicalFlags_doubleQuotes.length //\r\n                    && IOUtils.specicalFlags_doubleQuotes[ch] == 4) //\r\n                ) {\r\n                    newcount += 4;\r\n                }\r\n\r\n                if (firstSpecialIndex == -1) {\r\n                    firstSpecialIndex = i;\r\n                }\r\n            }\r\n        }\r\n\r\n        if (specialCount > 0) {\r\n            newcount += specialCount;\r\n            if (newcount > buf.length) {\r\n                expandCapacity(newcount);\r\n            }\r\n            count = newcount;\r\n\r\n            if (specialCount == 1) {\r\n                if (lastSpecial == '\\u2028') {\r\n                    int srcPos = lastSpecialIndex + 1;\r\n                    int destPos = lastSpecialIndex + 6;\r\n                    int LengthOfCopy = end - lastSpecialIndex - 1;\r\n\r\n                    System.arraycopy(buf, srcPos, buf, destPos, LengthOfCopy);\r\n                    buf[lastSpecialIndex  ] = '\\\\';\r\n                    buf[++lastSpecialIndex] = 'u';\r\n                    buf[++lastSpecialIndex] = '2';\r\n                    buf[++lastSpecialIndex] = '0';\r\n                    buf[++lastSpecialIndex] = '2';\r\n                    buf[++lastSpecialIndex] = '8';\r\n\r\n                } else if (lastSpecial == '\\u2029') {\r\n                    int srcPos = lastSpecialIndex + 1;\r\n                    int destPos = lastSpecialIndex + 6;\r\n                    int LengthOfCopy = end - lastSpecialIndex - 1;\r\n\r\n                    System.arraycopy(buf, srcPos, buf, destPos, LengthOfCopy);\r\n                    buf[lastSpecialIndex  ] = '\\\\';\r\n                    buf[++lastSpecialIndex] = 'u';\r\n                    buf[++lastSpecialIndex] = '2';\r\n                    buf[++lastSpecialIndex] = '0';\r\n                    buf[++lastSpecialIndex] = '2';\r\n                    buf[++lastSpecialIndex] = '9';\r\n\r\n                } else if (lastSpecial == '(' || lastSpecial == ')' || lastSpecial == '<' || lastSpecial == '>') {\r\n                    int srcPos = lastSpecialIndex + 1;\r\n                    int destPos = lastSpecialIndex + 6;\r\n                    int LengthOfCopy = end - lastSpecialIndex - 1;\r\n                    System.arraycopy(buf, srcPos, buf, destPos, LengthOfCopy);\r\n                    buf[lastSpecialIndex] = '\\\\';\r\n                    buf[++lastSpecialIndex] = 'u';\r\n\r\n                    final char ch = lastSpecial;\r\n                    buf[++lastSpecialIndex] = IOUtils.DIGITS[(ch >>> 12) & 15];\r\n                    buf[++lastSpecialIndex] = IOUtils.DIGITS[(ch >>> 8) & 15];\r\n                    buf[++lastSpecialIndex] = IOUtils.DIGITS[(ch >>> 4) & 15];\r\n                    buf[++lastSpecialIndex] = IOUtils.DIGITS[ch & 15];\r\n                } else {\r\n                    final char ch = lastSpecial;\r\n                    if (ch < IOUtils.specicalFlags_doubleQuotes.length //\r\n                        && IOUtils.specicalFlags_doubleQuotes[ch] == 4) {\r\n                        int srcPos = lastSpecialIndex + 1;\r\n                        int destPos = lastSpecialIndex + 6;\r\n                        int LengthOfCopy = end - lastSpecialIndex - 1;\r\n                        System.arraycopy(buf, srcPos, buf, destPos, LengthOfCopy);\r\n\r\n                        int bufIndex = lastSpecialIndex;\r\n                        buf[bufIndex++] = '\\\\';\r\n                        buf[bufIndex++] = 'u';\r\n                        buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 12) & 15];\r\n                        buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 8) & 15];\r\n                        buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 4) & 15];\r\n                        buf[bufIndex++] = IOUtils.DIGITS[ch & 15];\r\n                    } else {\r\n                        int srcPos = lastSpecialIndex + 1;\r\n                        int destPos = lastSpecialIndex + 2;\r\n                        int LengthOfCopy = end - lastSpecialIndex - 1;\r\n                        System.arraycopy(buf, srcPos, buf, destPos, LengthOfCopy);\r\n                        buf[lastSpecialIndex] = '\\\\';\r\n                        buf[++lastSpecialIndex] = replaceChars[(int) ch];\r\n                    }\r\n                }\r\n            } else if (specialCount > 1) {\r\n                int textIndex = firstSpecialIndex - start;\r\n                int bufIndex = firstSpecialIndex;\r\n                for (int i = textIndex; i < text.length(); ++i) {\r\n                    char ch = text.charAt(i);\r\n\r\n                    if (browserSecure && (ch == '('\r\n                            || ch == ')'\r\n                            || ch == '<'\r\n                            || ch == '>')) {\r\n                        buf[bufIndex++] = '\\\\';\r\n                        buf[bufIndex++] = 'u';\r\n                        buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 12) & 15];\r\n                        buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 8 ) & 15];\r\n                        buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 4 ) & 15];\r\n                        buf[bufIndex++] = IOUtils.DIGITS[ch          & 15];\r\n                        end += 5;\r\n                    } else if (ch < IOUtils.specicalFlags_doubleQuotes.length //\r\n                        && IOUtils.specicalFlags_doubleQuotes[ch] != 0 //\r\n                        || (ch == '/' && isEnabled(SerializerFeature.WriteSlashAsSpecial))) {\r\n                        buf[bufIndex++] = '\\\\';\r\n                        if (IOUtils.specicalFlags_doubleQuotes[ch] == 4) {\r\n                            buf[bufIndex++] = 'u';\r\n                            buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 12) & 15];\r\n                            buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 8 ) & 15];\r\n                            buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 4 ) & 15];\r\n                            buf[bufIndex++] = IOUtils.DIGITS[ch          & 15];\r\n                            end += 5;\r\n                        } else {\r\n                            buf[bufIndex++] = replaceChars[(int) ch];\r\n                            end++;\r\n                        }\r\n                    } else {\r\n                        if (ch == '\\u2028' || ch == '\\u2029') {\r\n                            buf[bufIndex++] = '\\\\';\r\n                            buf[bufIndex++] = 'u';\r\n                            buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 12) & 15];\r\n                            buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 8 ) & 15];\r\n                            buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 4 ) & 15];\r\n                            buf[bufIndex++] = IOUtils.DIGITS[ch          & 15];\r\n                            end += 5;\r\n                        } else {\r\n                            buf[bufIndex++] = ch;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        if (seperator != 0) {\r\n            buf[count - 2] = '\\\"';\r\n            buf[count - 1] = seperator;\r\n        } else {\r\n            buf[count - 1] = '\\\"';\r\n        }\r\n    }\r\n\r\n    public void writeStringWithDoubleQuote(char[] text, final char seperator) {\r\n        if (text == null) {\r\n            writeNull();\r\n            if (seperator != 0) {\r\n                write(seperator);\r\n            }\r\n            return;\r\n        }\r\n\r\n        int len = text.length;\r\n        int newcount = count + len + 2;\r\n        if (seperator != 0) {\r\n            newcount++;\r\n        }\r\n\r\n        if (newcount > buf.length) {\r\n            if (writer != null) {\r\n                write('\"');\r\n\r\n                for (int i = 0; i < text.length; ++i) {\r\n                    char ch = text[i];\r\n\r\n                    if (isEnabled(SerializerFeature.BrowserSecure)) {\r\n                        if (ch == '('\r\n                                || ch == ')'\r\n                                || ch == '<'\r\n                                || ch == '>'\r\n                        ) {\r\n                            write('\\\\');\r\n                            write('u');\r\n                            write(IOUtils.DIGITS[(ch >>> 12) & 15]);\r\n                            write(IOUtils.DIGITS[(ch >>> 8 ) & 15]);\r\n                            write(IOUtils.DIGITS[(ch >>> 4 ) & 15]);\r\n                            write(IOUtils.DIGITS[ch          & 15]);\r\n                            continue;\r\n                        }\r\n                    }\r\n\r\n                    if (isEnabled(SerializerFeature.BrowserCompatible)) {\r\n                        if (ch == '\\b' //\r\n                                || ch == '\\f' //\r\n                                || ch == '\\n' //\r\n                                || ch == '\\r' //\r\n                                || ch == '\\t' //\r\n                                || ch == '\"' //\r\n                                || ch == '/' //\r\n                                || ch == '\\\\') {\r\n                            write('\\\\');\r\n                            write(replaceChars[(int) ch]);\r\n                            continue;\r\n                        }\r\n\r\n                        if (ch < 32) {\r\n                            write('\\\\');\r\n                            write('u');\r\n                            write('0');\r\n                            write('0');\r\n                            write(IOUtils.ASCII_CHARS[ch * 2    ]);\r\n                            write(IOUtils.ASCII_CHARS[ch * 2 + 1]);\r\n                            continue;\r\n                        }\r\n\r\n                        if (ch >= 127) {\r\n                            write('\\\\');\r\n                            write('u');\r\n                            write(IOUtils.DIGITS[(ch >>> 12) & 15]);\r\n                            write(IOUtils.DIGITS[(ch >>> 8 ) & 15]);\r\n                            write(IOUtils.DIGITS[(ch >>> 4 ) & 15]);\r\n                            write(IOUtils.DIGITS[ch          & 15]);\r\n                            continue;\r\n                        }\r\n                    } else {\r\n                        if (ch < IOUtils.specicalFlags_doubleQuotes.length\r\n                                && IOUtils.specicalFlags_doubleQuotes[ch] != 0 //\r\n                                || (ch == '/' && isEnabled(SerializerFeature.WriteSlashAsSpecial))) {\r\n                            write('\\\\');\r\n                            if (IOUtils.specicalFlags_doubleQuotes[ch] == 4) {\r\n                                write('u');\r\n                                write(IOUtils.DIGITS[ch >>> 12 & 15]);\r\n                                write(IOUtils.DIGITS[ch >>> 8  & 15]);\r\n                                write(IOUtils.DIGITS[ch >>> 4  & 15]);\r\n                                write(IOUtils.DIGITS[ch        & 15]);\r\n                            } else {\r\n                                write(IOUtils.replaceChars[ch]);\r\n                            }\r\n                            continue;\r\n                        }\r\n                    }\r\n\r\n                    write(ch);\r\n                }\r\n\r\n                write('\"');\r\n                if (seperator != 0) {\r\n                    write(seperator);\r\n                }\r\n                return;\r\n            }\r\n            expandCapacity(newcount);\r\n        }\r\n\r\n        int start = count + 1;\r\n        int end = start + len;\r\n\r\n        buf[count] = '\\\"';\r\n//        text.getChars(0, len, buf, start);\r\n        System.arraycopy(text, 0, buf, start, text.length);\r\n\r\n        count = newcount;\r\n\r\n        if (isEnabled(SerializerFeature.BrowserCompatible)) {\r\n            int lastSpecialIndex = -1;\r\n\r\n            for (int i = start; i < end; ++i) {\r\n                char ch = buf[i];\r\n\r\n                if (ch == '\"' //\r\n                        || ch == '/' //\r\n                        || ch == '\\\\') {\r\n                    lastSpecialIndex = i;\r\n                    newcount += 1;\r\n                    continue;\r\n                }\r\n\r\n                if (ch == '\\b' //\r\n                        || ch == '\\f' //\r\n                        || ch == '\\n' //\r\n                        || ch == '\\r' //\r\n                        || ch == '\\t') {\r\n                    lastSpecialIndex = i;\r\n                    newcount += 1;\r\n                    continue;\r\n                }\r\n\r\n                if (ch < 32) {\r\n                    lastSpecialIndex = i;\r\n                    newcount += 5;\r\n                    continue;\r\n                }\r\n\r\n                if (ch >= 127) {\r\n                    lastSpecialIndex = i;\r\n                    newcount += 5;\r\n                    continue;\r\n                }\r\n            }\r\n\r\n            if (newcount > buf.length) {\r\n                expandCapacity(newcount);\r\n            }\r\n            count = newcount;\r\n\r\n            for (int i = lastSpecialIndex; i >= start; --i) {\r\n                char ch = buf[i];\r\n\r\n                if (ch == '\\b' //\r\n                        || ch == '\\f'//\r\n                        || ch == '\\n' //\r\n                        || ch == '\\r' //\r\n                        || ch == '\\t') {\r\n                    System.arraycopy(buf, i + 1, buf, i + 2, end - i - 1);\r\n                    buf[i] = '\\\\';\r\n                    buf[i + 1] = replaceChars[(int) ch];\r\n                    end += 1;\r\n                    continue;\r\n                }\r\n\r\n                if (ch == '\"' //\r\n                        || ch == '/' //\r\n                        || ch == '\\\\') {\r\n                    System.arraycopy(buf, i + 1, buf, i + 2, end - i - 1);\r\n                    buf[i] = '\\\\';\r\n                    buf[i + 1] = ch;\r\n                    end += 1;\r\n                    continue;\r\n                }\r\n\r\n                if (ch < 32) {\r\n                    System.arraycopy(buf, i + 1, buf, i + 6, end - i - 1);\r\n                    buf[i] = '\\\\';\r\n                    buf[i + 1] = 'u';\r\n                    buf[i + 2] = '0';\r\n                    buf[i + 3] = '0';\r\n                    buf[i + 4] = IOUtils.ASCII_CHARS[ch * 2];\r\n                    buf[i + 5] = IOUtils.ASCII_CHARS[ch * 2 + 1];\r\n                    end += 5;\r\n                    continue;\r\n                }\r\n\r\n                if (ch >= 127) {\r\n                    System.arraycopy(buf, i + 1, buf, i + 6, end - i - 1);\r\n                    buf[i] = '\\\\';\r\n                    buf[i + 1] = 'u';\r\n                    buf[i + 2] = IOUtils.DIGITS[(ch >>> 12) & 15];\r\n                    buf[i + 3] = IOUtils.DIGITS[(ch >>> 8) & 15];\r\n                    buf[i + 4] = IOUtils.DIGITS[(ch >>> 4) & 15];\r\n                    buf[i + 5] = IOUtils.DIGITS[ch & 15];\r\n                    end += 5;\r\n                }\r\n            }\r\n\r\n            if (seperator != 0) {\r\n                buf[count - 2] = '\\\"';\r\n                buf[count - 1] = seperator;\r\n            } else {\r\n                buf[count - 1] = '\\\"';\r\n            }\r\n\r\n            return;\r\n        }\r\n\r\n        int specialCount = 0;\r\n        int lastSpecialIndex = -1;\r\n        int firstSpecialIndex = -1;\r\n        char lastSpecial = '\\0';\r\n\r\n        for (int i = start; i < end; ++i) {\r\n            char ch = buf[i];\r\n\r\n            if (ch >= ']') { // 93\r\n                if (ch >= 0x7F //\r\n                        && (ch == '\\u2028' //\r\n                        || ch == '\\u2029' //\r\n                        || ch < 0xA0)) {\r\n                    if (firstSpecialIndex == -1) {\r\n                        firstSpecialIndex = i;\r\n                    }\r\n\r\n                    specialCount++;\r\n                    lastSpecialIndex = i;\r\n                    lastSpecial = ch;\r\n                    newcount += 4;\r\n                }\r\n                continue;\r\n            }\r\n\r\n            boolean special = (ch < 64 && (sepcialBits & (1L << ch)) != 0) || ch == '\\\\';\r\n            if (special) {\r\n                specialCount++;\r\n                lastSpecialIndex = i;\r\n                lastSpecial = ch;\r\n\r\n                if (ch == '('\r\n                        || ch == ')'\r\n                        || ch == '<'\r\n                        || ch == '>'\r\n                        || (ch < IOUtils.specicalFlags_doubleQuotes.length //\r\n                        && IOUtils.specicalFlags_doubleQuotes[ch] == 4) //\r\n                        ) {\r\n                    newcount += 4;\r\n                }\r\n\r\n                if (firstSpecialIndex == -1) {\r\n                    firstSpecialIndex = i;\r\n                }\r\n            }\r\n        }\r\n\r\n        if (specialCount > 0) {\r\n            newcount += specialCount;\r\n            if (newcount > buf.length) {\r\n                expandCapacity(newcount);\r\n            }\r\n            count = newcount;\r\n\r\n            if (specialCount == 1) {\r\n                if (lastSpecial == '\\u2028') {\r\n                    int srcPos = lastSpecialIndex + 1;\r\n                    int destPos = lastSpecialIndex + 6;\r\n                    int LengthOfCopy = end - lastSpecialIndex - 1;\r\n                    System.arraycopy(buf, srcPos, buf, destPos, LengthOfCopy);\r\n                    buf[lastSpecialIndex  ] = '\\\\';\r\n                    buf[++lastSpecialIndex] = 'u';\r\n                    buf[++lastSpecialIndex] = '2';\r\n                    buf[++lastSpecialIndex] = '0';\r\n                    buf[++lastSpecialIndex] = '2';\r\n                    buf[++lastSpecialIndex] = '8';\r\n                } else if (lastSpecial == '\\u2029') {\r\n                    int srcPos = lastSpecialIndex + 1;\r\n                    int destPos = lastSpecialIndex + 6;\r\n                    int LengthOfCopy = end - lastSpecialIndex - 1;\r\n                    System.arraycopy(buf, srcPos, buf, destPos, LengthOfCopy);\r\n                    buf[lastSpecialIndex  ] = '\\\\';\r\n                    buf[++lastSpecialIndex] = 'u';\r\n                    buf[++lastSpecialIndex] = '2';\r\n                    buf[++lastSpecialIndex] = '0';\r\n                    buf[++lastSpecialIndex] = '2';\r\n                    buf[++lastSpecialIndex] = '9';\r\n                } else if (lastSpecial == '(' || lastSpecial == ')' || lastSpecial == '<' || lastSpecial == '>') {\r\n                    int srcPos = lastSpecialIndex + 1;\r\n                    int destPos = lastSpecialIndex + 6;\r\n                    int LengthOfCopy = end - lastSpecialIndex - 1;\r\n                    System.arraycopy(buf, srcPos, buf, destPos, LengthOfCopy);\r\n                    buf[lastSpecialIndex] = '\\\\';\r\n                    buf[++lastSpecialIndex] = 'u';\r\n\r\n                    final char ch = lastSpecial;\r\n                    buf[++lastSpecialIndex] = IOUtils.DIGITS[(ch >>> 12) & 15];\r\n                    buf[++lastSpecialIndex] = IOUtils.DIGITS[(ch >>> 8) & 15];\r\n                    buf[++lastSpecialIndex] = IOUtils.DIGITS[(ch >>> 4) & 15];\r\n                    buf[++lastSpecialIndex] = IOUtils.DIGITS[ch & 15];\r\n                } else {\r\n                    final char ch = lastSpecial;\r\n                    if (ch < IOUtils.specicalFlags_doubleQuotes.length //\r\n                            && IOUtils.specicalFlags_doubleQuotes[ch] == 4) {\r\n                        int srcPos = lastSpecialIndex + 1;\r\n                        int destPos = lastSpecialIndex + 6;\r\n                        int LengthOfCopy = end - lastSpecialIndex - 1;\r\n                        System.arraycopy(buf, srcPos, buf, destPos, LengthOfCopy);\r\n\r\n                        int bufIndex = lastSpecialIndex;\r\n                        buf[bufIndex++] = '\\\\';\r\n                        buf[bufIndex++] = 'u';\r\n                        buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 12) & 15];\r\n                        buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 8) & 15];\r\n                        buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 4) & 15];\r\n                        buf[bufIndex++] = IOUtils.DIGITS[ch & 15];\r\n                    } else {\r\n                        int srcPos = lastSpecialIndex + 1;\r\n                        int destPos = lastSpecialIndex + 2;\r\n                        int LengthOfCopy = end - lastSpecialIndex - 1;\r\n                        System.arraycopy(buf, srcPos, buf, destPos, LengthOfCopy);\r\n                        buf[lastSpecialIndex] = '\\\\';\r\n                        buf[++lastSpecialIndex] = replaceChars[(int) ch];\r\n                    }\r\n                }\r\n            } else if (specialCount > 1) {\r\n                int textIndex = firstSpecialIndex - start;\r\n                int bufIndex = firstSpecialIndex;\r\n                for (int i = textIndex; i < text.length; ++i) {\r\n                    char ch = text[i];\r\n\r\n                    if (browserSecure && (ch == '('\r\n                            || ch == ')'\r\n                            || ch == '<'\r\n                            || ch == '>')) {\r\n                        buf[bufIndex++] = '\\\\';\r\n                        buf[bufIndex++] = 'u';\r\n                        buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 12) & 15];\r\n                        buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 8) & 15];\r\n                        buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 4) & 15];\r\n                        buf[bufIndex++] = IOUtils.DIGITS[ch & 15];\r\n                        end += 5;\r\n                    } else if (ch < IOUtils.specicalFlags_doubleQuotes.length //\r\n                            && IOUtils.specicalFlags_doubleQuotes[ch] != 0 //\r\n                            || (ch == '/' && isEnabled(SerializerFeature.WriteSlashAsSpecial))) {\r\n                        buf[bufIndex++] = '\\\\';\r\n                        if (IOUtils.specicalFlags_doubleQuotes[ch] == 4) {\r\n                            buf[bufIndex++] = 'u';\r\n                            buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 12) & 15];\r\n                            buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 8) & 15];\r\n                            buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 4) & 15];\r\n                            buf[bufIndex++] = IOUtils.DIGITS[ch & 15];\r\n                            end += 5;\r\n                        } else {\r\n                            buf[bufIndex++] = replaceChars[(int) ch];\r\n                            end++;\r\n                        }\r\n                    } else {\r\n                        if (ch == '\\u2028' || ch == '\\u2029') {\r\n                            buf[bufIndex++] = '\\\\';\r\n                            buf[bufIndex++] = 'u';\r\n                            buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 12) & 15];\r\n                            buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 8) & 15];\r\n                            buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 4) & 15];\r\n                            buf[bufIndex++] = IOUtils.DIGITS[ch & 15];\r\n                            end += 5;\r\n                        } else {\r\n                            buf[bufIndex++] = ch;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        if (seperator != 0) {\r\n            buf[count - 2] = '\\\"';\r\n            buf[count - 1] = seperator;\r\n        } else {\r\n            buf[count - 1] = '\\\"';\r\n        }\r\n    }\r\n    \r\n    public void writeFieldNameDirect(String text) {\r\n        int len = text.length();\r\n        int newcount = count + len + 3;\r\n\r\n        if (newcount > buf.length) {\r\n            expandCapacity(newcount);\r\n        }\r\n\r\n        int start = count + 1;\r\n\r\n        buf[count] = '\\\"';\r\n        text.getChars(0, len, buf, start);\r\n\r\n        count = newcount;\r\n        buf[count - 2] = '\\\"';\r\n        buf[count - 1] = ':';\r\n    }\r\n\r\n    public void write(List<String> list) {\r\n        if (list.isEmpty()) {\r\n            write(\"[]\");\r\n            return;\r\n        }\r\n\r\n        int offset = count;\r\n        final int initOffset = offset;\r\n        for (int i = 0, list_size = list.size(); i < list_size; ++i) {\r\n            String text = list.get(i);\r\n\r\n            boolean hasSpecial = false;\r\n            if (text == null) {\r\n                hasSpecial = true;\r\n            } else {\r\n                for (int j = 0, len = text.length(); j < len; ++j) {\r\n                    char ch = text.charAt(j);\r\n                    if (hasSpecial = (ch < ' ' //\r\n                                      || ch > '~' //\r\n                                      || ch == '\"' //\r\n                                      || ch == '\\\\')) {\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n\r\n            if (hasSpecial) {\r\n                count = initOffset;\r\n                write('[');\r\n                for (int j = 0; j < list.size(); ++j) {\r\n                    text = list.get(j);\r\n                    if (j != 0) {\r\n                        write(',');\r\n                    }\r\n\r\n                    if (text == null) {\r\n                        write(\"null\");\r\n                    } else {\r\n                        writeStringWithDoubleQuote(text, (char) 0);\r\n                    }\r\n                }\r\n                write(']');\r\n                return;\r\n            }\r\n\r\n            int newcount = offset + text.length() + 3;\r\n            if (i == list.size() - 1) {\r\n                newcount++;\r\n            }\r\n            if (newcount > buf.length) {\r\n                count = offset;\r\n                expandCapacity(newcount);\r\n            }\r\n\r\n            if (i == 0) {\r\n                buf[offset++] = '[';\r\n            } else {\r\n                buf[offset++] = ',';\r\n            }\r\n            buf[offset++] = '\"';\r\n            text.getChars(0, text.length(), buf, offset);\r\n            offset += text.length();\r\n            buf[offset++] = '\"';\r\n        }\r\n        buf[offset++] = ']';\r\n        count = offset;\r\n    }\r\n\r\n    \r\n    public void writeFieldValue(char seperator, String name, char value) {\r\n        write(seperator);\r\n        writeFieldName(name);\r\n        if (value == 0) {\r\n            writeString(\"\\u0000\");\r\n        } else {\r\n            writeString(Character.toString(value));\r\n        }\r\n    }\r\n\r\n    public void writeFieldValue(char seperator, String name, boolean value) {\r\n        if (!quoteFieldNames) {\r\n            write(seperator);\r\n            writeFieldName(name);\r\n            write(value);\r\n            return;\r\n        }\r\n        int intSize = value ? 4 : 5;\r\n\r\n        int nameLen = name.length();\r\n        int newcount = count + nameLen + 4 + intSize;\r\n        if (newcount > buf.length) {\r\n            if (writer != null) {\r\n                write(seperator);\r\n                writeString(name);\r\n                write(':');\r\n                write(value);\r\n                return;\r\n            }\r\n            expandCapacity(newcount);\r\n        }\r\n\r\n        int start = count;\r\n        count = newcount;\r\n\r\n        buf[start] = seperator;\r\n\r\n        int nameEnd = start + nameLen + 1;\r\n\r\n        buf[start + 1] = keySeperator;\r\n\r\n        name.getChars(0, nameLen, buf, start + 2);\r\n\r\n        buf[nameEnd + 1] = keySeperator;\r\n\r\n        if (value) {\r\n            System.arraycopy(VALUE_TRUE, 0, buf, nameEnd + 2, 5);\r\n        } else {\r\n            System.arraycopy(VALUE_FALSE, 0, buf, nameEnd + 2, 6);\r\n        }\r\n    }\r\n\r\n    public void write(boolean value) {\r\n        if (value) {\r\n            write(\"true\");\r\n        } else {\r\n            write(\"false\");\r\n        }\r\n    }\r\n\r\n    public void writeFieldValue(char seperator, String name, int value) {\r\n        if (value == Integer.MIN_VALUE || !quoteFieldNames) {\r\n            write(seperator);\r\n            writeFieldName(name);\r\n            writeInt(value);\r\n            return;\r\n        }\r\n\r\n        int intSize = (value < 0) ? IOUtils.stringSize(-value) + 1 : IOUtils.stringSize(value);\r\n\r\n        int nameLen = name.length();\r\n        int newcount = count + nameLen + 4 + intSize;\r\n        if (newcount > buf.length) {\r\n            if (writer != null) {\r\n                write(seperator);\r\n                writeFieldName(name);\r\n                writeInt(value);\r\n                return;\r\n            }\r\n            expandCapacity(newcount);\r\n        }\r\n\r\n        int start = count;\r\n        count = newcount;\r\n\r\n        buf[start] = seperator;\r\n\r\n        int nameEnd = start + nameLen + 1;\r\n\r\n        buf[start + 1] = keySeperator;\r\n\r\n        name.getChars(0, nameLen, buf, start + 2);\r\n\r\n        buf[nameEnd + 1] = keySeperator;\r\n        buf[nameEnd + 2] = ':';\r\n\r\n        IOUtils.getChars(value, count, buf);\r\n    }\r\n\r\n    public void writeFieldValue(char seperator, String name, long value) {\r\n        if (value == Long.MIN_VALUE\r\n                || !quoteFieldNames\r\n                || isEnabled(SerializerFeature.BrowserCompatible.mask)\r\n        ) {\r\n            write(seperator);\r\n            writeFieldName(name);\r\n            writeLong(value);\r\n            return;\r\n        }\r\n\r\n        int intSize = (value < 0) ? IOUtils.stringSize(-value) + 1 : IOUtils.stringSize(value);\r\n\r\n        int nameLen = name.length();\r\n        int newcount = count + nameLen + 4 + intSize;\r\n        if (newcount > buf.length) {\r\n            if (writer != null) {\r\n                write(seperator);\r\n                writeFieldName(name);\r\n                writeLong(value);\r\n                return;\r\n            }\r\n            expandCapacity(newcount);\r\n        }\r\n\r\n        int start = count;\r\n        count = newcount;\r\n\r\n        buf[start] = seperator;\r\n\r\n        int nameEnd = start + nameLen + 1;\r\n\r\n        buf[start + 1] = keySeperator;\r\n\r\n        name.getChars(0, nameLen, buf, start + 2);\r\n\r\n        buf[nameEnd + 1] = keySeperator;\r\n        buf[nameEnd + 2] = ':';\r\n\r\n        IOUtils.getChars(value, count, buf);\r\n    }\r\n\r\n    public void writeFieldValue(char seperator, String name, float value) {\r\n        write(seperator);\r\n        writeFieldName(name);\r\n        writeFloat(value, false);\r\n    }\r\n\r\n    public void writeFieldValue(char seperator, String name, double value) {\r\n        write(seperator);\r\n        writeFieldName(name);\r\n        writeDouble(value, false);\r\n    }\r\n\r\n    public void writeFieldValue(char seperator, String name, String value) {\r\n        if (quoteFieldNames) {\r\n            if (useSingleQuotes) {\r\n                write(seperator);\r\n                writeFieldName(name);\r\n                if (value == null) {\r\n                    writeNull();\r\n                } else {\r\n                    writeString(value);\r\n                }\r\n            } else {\r\n                if (isEnabled(SerializerFeature.BrowserCompatible)) {\r\n                    write(seperator);\r\n                    writeStringWithDoubleQuote(name, ':');\r\n                    writeStringWithDoubleQuote(value, (char) 0);\r\n                } else {\r\n                    writeFieldValueStringWithDoubleQuoteCheck(seperator, name, value);\r\n                }\r\n            }\r\n        } else {\r\n            write(seperator);\r\n            writeFieldName(name);\r\n            if (value == null) {\r\n                writeNull();\r\n            } else {\r\n                writeString(value);\r\n            }\r\n        }\r\n    }\r\n\r\n    public void writeFieldValueStringWithDoubleQuoteCheck(char seperator, String name, String value) {\r\n        int nameLen = name.length();\r\n        int valueLen;\r\n\r\n        int newcount = count;\r\n\r\n        if (value == null) {\r\n            valueLen = 4;\r\n            newcount += nameLen + 8;\r\n        } else {\r\n            valueLen = value.length();\r\n            newcount += nameLen + valueLen + 6;\r\n        }\r\n\r\n        if (newcount > buf.length) {\r\n            if (writer != null) {\r\n                write(seperator);\r\n                writeStringWithDoubleQuote(name, ':');\r\n                writeStringWithDoubleQuote(value, (char) 0);\r\n                return;\r\n            }\r\n            expandCapacity(newcount);\r\n        }\r\n\r\n        buf[count] = seperator;\r\n\r\n        int nameStart = count + 2;\r\n        int nameEnd = nameStart + nameLen;\r\n\r\n        buf[count + 1] = '\\\"';\r\n        name.getChars(0, nameLen, buf, nameStart);\r\n\r\n        count = newcount;\r\n\r\n        buf[nameEnd] = '\\\"';\r\n\r\n        int index = nameEnd + 1;\r\n        buf[index++] = ':';\r\n\r\n        if (value == null) {\r\n            buf[index++] = 'n';\r\n            buf[index++] = 'u';\r\n            buf[index++] = 'l';\r\n            buf[index++] = 'l';\r\n            return;\r\n        }\r\n\r\n        buf[index++] = '\"';\r\n\r\n        int valueStart = index;\r\n        int valueEnd = valueStart + valueLen;\r\n\r\n        value.getChars(0, valueLen, buf, valueStart);\r\n\r\n        int specialCount = 0;\r\n        int lastSpecialIndex = -1;\r\n        int firstSpecialIndex = -1;\r\n        char lastSpecial = '\\0';\r\n\r\n        for (int i = valueStart; i < valueEnd; ++i) {\r\n            char ch = buf[i];\r\n\r\n            if (ch >= ']') {\r\n                if (ch >= 0x7F //\r\n                    && (ch == '\\u2028' //\r\n                        || ch == '\\u2029' //\r\n                        || ch < 0xA0)) {\r\n                    if (firstSpecialIndex == -1) {\r\n                        firstSpecialIndex = i;\r\n                    }\r\n\r\n                    specialCount++;\r\n                    lastSpecialIndex = i;\r\n                    lastSpecial = ch;\r\n                    newcount += 4;\r\n                }\r\n                continue;\r\n            }\r\n\r\n            boolean special = (ch < 64 && (sepcialBits & (1L << ch)) != 0) || ch == '\\\\';\r\n            if (special) {\r\n                specialCount++;\r\n                lastSpecialIndex = i;\r\n                lastSpecial = ch;\r\n\r\n                if (ch == '('\r\n                        || ch == ')'\r\n                        || ch == '<'\r\n                        || ch == '>'\r\n                        || (ch < IOUtils.specicalFlags_doubleQuotes.length //\r\n                        && IOUtils.specicalFlags_doubleQuotes[ch] == 4) //\r\n                        ) {\r\n                    newcount += 4;\r\n                }\r\n\r\n                if (firstSpecialIndex == -1) {\r\n                    firstSpecialIndex = i;\r\n                }\r\n            }\r\n        }\r\n\r\n        if (specialCount > 0) {\r\n            newcount += specialCount;\r\n            if (newcount > buf.length) {\r\n                expandCapacity(newcount);\r\n            }\r\n            count = newcount;\r\n\r\n            if (specialCount == 1) {\r\n                if (lastSpecial == '\\u2028') {\r\n                    int srcPos = lastSpecialIndex + 1;\r\n                    int destPos = lastSpecialIndex + 6;\r\n                    int LengthOfCopy = valueEnd - lastSpecialIndex - 1;\r\n                    System.arraycopy(buf, srcPos, buf, destPos, LengthOfCopy);\r\n                    buf[lastSpecialIndex] = '\\\\';\r\n                    buf[++lastSpecialIndex] = 'u';\r\n                    buf[++lastSpecialIndex] = '2';\r\n                    buf[++lastSpecialIndex] = '0';\r\n                    buf[++lastSpecialIndex] = '2';\r\n                    buf[++lastSpecialIndex] = '8';\r\n                } else if (lastSpecial == '\\u2029') {\r\n                    int srcPos = lastSpecialIndex + 1;\r\n                    int destPos = lastSpecialIndex + 6;\r\n                    int LengthOfCopy = valueEnd - lastSpecialIndex - 1;\r\n                    System.arraycopy(buf, srcPos, buf, destPos, LengthOfCopy);\r\n                    buf[lastSpecialIndex] = '\\\\';\r\n                    buf[++lastSpecialIndex] = 'u';\r\n                    buf[++lastSpecialIndex] = '2';\r\n                    buf[++lastSpecialIndex] = '0';\r\n                    buf[++lastSpecialIndex] = '2';\r\n                    buf[++lastSpecialIndex] = '9';\r\n                } else if (lastSpecial == '(' || lastSpecial == ')' || lastSpecial == '<' || lastSpecial == '>') {\r\n                    final char ch = lastSpecial;\r\n                    int srcPos = lastSpecialIndex + 1;\r\n                    int destPos = lastSpecialIndex + 6;\r\n                    int LengthOfCopy = valueEnd - lastSpecialIndex - 1;\r\n                    System.arraycopy(buf, srcPos, buf, destPos, LengthOfCopy);\r\n\r\n                    int bufIndex = lastSpecialIndex;\r\n                    buf[bufIndex++] = '\\\\';\r\n                    buf[bufIndex++] = 'u';\r\n                    buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 12) & 15];\r\n                    buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 8) & 15];\r\n                    buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 4) & 15];\r\n                    buf[bufIndex++] = IOUtils.DIGITS[ch & 15];\r\n                } else {\r\n                    final char ch = lastSpecial;\r\n                    if (ch < IOUtils.specicalFlags_doubleQuotes.length //\r\n                        && IOUtils.specicalFlags_doubleQuotes[ch] == 4) {\r\n                        int srcPos = lastSpecialIndex + 1;\r\n                        int destPos = lastSpecialIndex + 6;\r\n                        int LengthOfCopy = valueEnd - lastSpecialIndex - 1;\r\n                        System.arraycopy(buf, srcPos, buf, destPos, LengthOfCopy);\r\n\r\n                        int bufIndex = lastSpecialIndex;\r\n                        buf[bufIndex++] = '\\\\';\r\n                        buf[bufIndex++] = 'u';\r\n                        buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 12) & 15];\r\n                        buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 8) & 15];\r\n                        buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 4) & 15];\r\n                        buf[bufIndex++] = IOUtils.DIGITS[ch & 15];\r\n                    } else {\r\n                        int srcPos = lastSpecialIndex + 1;\r\n                        int destPos = lastSpecialIndex + 2;\r\n                        int LengthOfCopy = valueEnd - lastSpecialIndex - 1;\r\n                        System.arraycopy(buf, srcPos, buf, destPos, LengthOfCopy);\r\n                        buf[lastSpecialIndex] = '\\\\';\r\n                        buf[++lastSpecialIndex] = replaceChars[(int) ch];\r\n                    }\r\n                }\r\n            } else if (specialCount > 1) {\r\n                int textIndex = firstSpecialIndex - valueStart;\r\n                int bufIndex = firstSpecialIndex;\r\n                for (int i = textIndex; i < value.length(); ++i) {\r\n                    char ch = value.charAt(i);\r\n\r\n                    if (browserSecure && (ch == '('\r\n                            || ch == ')'\r\n                            || ch == '<'\r\n                            || ch == '>')) {\r\n                        buf[bufIndex++] = '\\\\';\r\n                        buf[bufIndex++] = 'u';\r\n                        buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 12) & 15];\r\n                        buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 8 ) & 15];\r\n                        buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 4 ) & 15];\r\n                        buf[bufIndex++] = IOUtils.DIGITS[ch          & 15];\r\n                        valueEnd += 5;\r\n                    } else if (ch < IOUtils.specicalFlags_doubleQuotes.length //\r\n                        && IOUtils.specicalFlags_doubleQuotes[ch] != 0 //\r\n                        || (ch == '/' && isEnabled(SerializerFeature.WriteSlashAsSpecial))) {\r\n                        buf[bufIndex++] = '\\\\';\r\n                        if (IOUtils.specicalFlags_doubleQuotes[ch] == 4) {\r\n                            buf[bufIndex++] = 'u';\r\n                            buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 12) & 15];\r\n                            buf[bufIndex++] = IOUtils.DIGITS[(ch >>>  8) & 15];\r\n                            buf[bufIndex++] = IOUtils.DIGITS[(ch >>>  4) & 15];\r\n                            buf[bufIndex++] = IOUtils.DIGITS[ch          & 15];\r\n                            valueEnd += 5;\r\n                        } else {\r\n                            buf[bufIndex++] = replaceChars[(int) ch];\r\n                            valueEnd++;\r\n                        }\r\n                    } else {\r\n                        if (ch == '\\u2028' || ch == '\\u2029') {\r\n                            buf[bufIndex++] = '\\\\';\r\n                            buf[bufIndex++] = 'u';\r\n                            buf[bufIndex++] = IOUtils.DIGITS[(ch >>> 12) & 15];\r\n                            buf[bufIndex++] = IOUtils.DIGITS[(ch >>>  8) & 15];\r\n                            buf[bufIndex++] = IOUtils.DIGITS[(ch >>>  4) & 15];\r\n                            buf[bufIndex++] = IOUtils.DIGITS[ch          & 15];\r\n                            valueEnd += 5;\r\n                        } else {\r\n                            buf[bufIndex++] = ch;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        \r\n\r\n        buf[count - 1] = '\\\"';\r\n    }\r\n\r\n    public void writeFieldValueStringWithDoubleQuote(char seperator, String name, String value) {\r\n        int nameLen = name.length();\r\n        int valueLen;\r\n\r\n        int newcount = count;\r\n\r\n        valueLen = value.length();\r\n        newcount += nameLen + valueLen + 6;\r\n\r\n        if (newcount > buf.length) {\r\n            if (writer != null) {\r\n                write(seperator);\r\n                writeStringWithDoubleQuote(name, ':');\r\n                writeStringWithDoubleQuote(value, (char) 0);\r\n                return;\r\n            }\r\n            expandCapacity(newcount);\r\n        }\r\n\r\n        buf[count] = seperator;\r\n\r\n        int nameStart = count + 2;\r\n        int nameEnd = nameStart + nameLen;\r\n\r\n        buf[count + 1] = '\\\"';\r\n        name.getChars(0, nameLen, buf, nameStart);\r\n\r\n        count = newcount;\r\n\r\n        buf[nameEnd] = '\\\"';\r\n\r\n        int index = nameEnd + 1;\r\n        buf[index++] = ':';\r\n        buf[index++] = '\"';\r\n\r\n        int valueStart = index;\r\n        value.getChars(0, valueLen, buf, valueStart);\r\n        buf[count - 1] = '\\\"';\r\n    }\r\n\r\n\r\n    \r\n    public void writeFieldValue(char seperator, String name, Enum<?> value) {\r\n        if (value == null) {\r\n            write(seperator);\r\n            writeFieldName(name);\r\n            writeNull();\r\n            return;\r\n        }\r\n\r\n        if (writeEnumUsingName && !writeEnumUsingToString) {\r\n            writeEnumFieldValue(seperator, name, value.name());\r\n        } else if (writeEnumUsingToString) {\r\n            writeEnumFieldValue(seperator, name, value.toString());\r\n        } else {\r\n            writeFieldValue(seperator, name, value.ordinal());\r\n        }\r\n    }\r\n\r\n    private void writeEnumFieldValue(char seperator, String name, String value) {\r\n        if (useSingleQuotes) {\r\n            writeFieldValue(seperator, name, value);\r\n        } else {\r\n            writeFieldValueStringWithDoubleQuote(seperator, name, value);\r\n        }\r\n    }\r\n\r\n    public void writeFieldValue(char seperator, String name, BigDecimal value) {\r\n        write(seperator);\r\n        writeFieldName(name);\r\n        if (value == null) {\r\n            writeNull();\r\n        } else {\r\n            int scale = value.scale();\r\n            write(isEnabled(SerializerFeature.WriteBigDecimalAsPlain) && scale >= -100 && scale < 100\r\n                    ? value.toPlainString()\r\n                    : value.toString()\r\n            );\r\n        }\r\n    }\r\n\r\n    public void writeString(String text, char seperator) {\r\n        if (useSingleQuotes) {\r\n            writeStringWithSingleQuote(text);\r\n            write(seperator);\r\n        } else {\r\n            writeStringWithDoubleQuote(text, seperator);\r\n        }\r\n    }\r\n\r\n    public void writeString(String text) {\r\n        if (useSingleQuotes) {\r\n            writeStringWithSingleQuote(text);\r\n        } else {\r\n            writeStringWithDoubleQuote(text, (char) 0);\r\n        }\r\n    }\r\n\r\n    public void writeString(char[] chars) {\r\n        if (useSingleQuotes) {\r\n            writeStringWithSingleQuote(chars);\r\n        } else {\r\n            String text = new String(chars);\r\n            writeStringWithDoubleQuote(text, (char) 0);\r\n        }\r\n    }\r\n\r\n    protected void writeStringWithSingleQuote(String text) {\r\n        if (text == null) {\r\n            int newcount = count + 4;\r\n            if (newcount > buf.length) {\r\n                expandCapacity(newcount);\r\n            }\r\n            \"null\".getChars(0, 4, buf, count);\r\n            count = newcount;\r\n            return;\r\n        }\r\n\r\n        int len = text.length();\r\n        int newcount = count + len + 2;\r\n        if (newcount > buf.length) {\r\n            if (writer != null) {\r\n                write('\\'');\r\n                for (int i = 0; i < text.length(); ++i) {\r\n                    char ch = text.charAt(i);\r\n                    if (ch <= 13 || ch == '\\\\' || ch == '\\'' //\r\n                        || (ch == '/' && isEnabled(SerializerFeature.WriteSlashAsSpecial))) {\r\n                        write('\\\\');\r\n                        write(replaceChars[(int) ch]);\r\n                    } else {\r\n                        write(ch);\r\n                    }\r\n                }\r\n                write('\\'');\r\n                return;\r\n            }\r\n            expandCapacity(newcount);\r\n        }\r\n\r\n        int start = count + 1;\r\n        int end = start + len;\r\n\r\n        buf[count] = '\\'';\r\n        text.getChars(0, len, buf, start);\r\n        count = newcount;\r\n\r\n        int specialCount = 0;\r\n        int lastSpecialIndex = -1;\r\n        char lastSpecial = '\\0';\r\n        for (int i = start; i < end; ++i) {\r\n            char ch = buf[i];\r\n            if (ch <= 13 || ch == '\\\\' || ch == '\\'' //\r\n                || (ch == '/' && isEnabled(SerializerFeature.WriteSlashAsSpecial))) {\r\n                specialCount++;\r\n                lastSpecialIndex = i;\r\n                lastSpecial = ch;\r\n            }\r\n        }\r\n\r\n        newcount += specialCount;\r\n        if (newcount > buf.length) {\r\n            expandCapacity(newcount);\r\n        }\r\n        count = newcount;\r\n\r\n        if (specialCount == 1) {\r\n            System.arraycopy(buf, lastSpecialIndex + 1, buf, lastSpecialIndex + 2, end - lastSpecialIndex - 1);\r\n            buf[lastSpecialIndex] = '\\\\';\r\n            buf[++lastSpecialIndex] = replaceChars[(int) lastSpecial];\r\n        } else if (specialCount > 1) {\r\n            System.arraycopy(buf, lastSpecialIndex + 1, buf, lastSpecialIndex + 2, end - lastSpecialIndex - 1);\r\n            buf[lastSpecialIndex] = '\\\\';\r\n            buf[++lastSpecialIndex] = replaceChars[(int) lastSpecial];\r\n            end++;\r\n            for (int i = lastSpecialIndex - 2; i >= start; --i) {\r\n                char ch = buf[i];\r\n\r\n                if (ch <= 13 || ch == '\\\\' || ch == '\\'' //\r\n                    || (ch == '/' && isEnabled(SerializerFeature.WriteSlashAsSpecial))) {\r\n                    System.arraycopy(buf, i + 1, buf, i + 2, end - i - 1);\r\n                    buf[i] = '\\\\';\r\n                    buf[i + 1] = replaceChars[(int) ch];\r\n                    end++;\r\n                }\r\n            }\r\n        }\r\n\r\n        buf[count - 1] = '\\'';\r\n    }\r\n\r\n    protected void writeStringWithSingleQuote(char[] chars) {\r\n        if (chars == null) {\r\n            int newcount = count + 4;\r\n            if (newcount > buf.length) {\r\n                expandCapacity(newcount);\r\n            }\r\n            \"null\".getChars(0, 4, buf, count);\r\n            count = newcount;\r\n            return;\r\n        }\r\n\r\n        int len = chars.length;\r\n        int newcount = count + len + 2;\r\n        if (newcount > buf.length) {\r\n            if (writer != null) {\r\n                write('\\'');\r\n                for (int i = 0; i < chars.length; ++i) {\r\n                    char ch = chars[i];\r\n                    if (ch <= 13 || ch == '\\\\' || ch == '\\'' //\r\n                            || (ch == '/' && isEnabled(SerializerFeature.WriteSlashAsSpecial))) {\r\n                        write('\\\\');\r\n                        write(replaceChars[(int) ch]);\r\n                    } else {\r\n                        write(ch);\r\n                    }\r\n                }\r\n                write('\\'');\r\n                return;\r\n            }\r\n            expandCapacity(newcount);\r\n        }\r\n\r\n        int start = count + 1;\r\n        int end = start + len;\r\n\r\n        buf[count] = '\\'';\r\n//        text.getChars(0, len, buf, start);\r\n        System.arraycopy(chars, 0, buf, start, chars.length);\r\n        count = newcount;\r\n\r\n        int specialCount = 0;\r\n        int lastSpecialIndex = -1;\r\n        char lastSpecial = '\\0';\r\n        for (int i = start; i < end; ++i) {\r\n            char ch = buf[i];\r\n            if (ch <= 13 || ch == '\\\\' || ch == '\\'' //\r\n                    || (ch == '/' && isEnabled(SerializerFeature.WriteSlashAsSpecial))) {\r\n                specialCount++;\r\n                lastSpecialIndex = i;\r\n                lastSpecial = ch;\r\n            }\r\n        }\r\n\r\n        newcount += specialCount;\r\n        if (newcount > buf.length) {\r\n            expandCapacity(newcount);\r\n        }\r\n        count = newcount;\r\n\r\n        if (specialCount == 1) {\r\n            System.arraycopy(buf, lastSpecialIndex + 1, buf, lastSpecialIndex + 2, end - lastSpecialIndex - 1);\r\n            buf[lastSpecialIndex] = '\\\\';\r\n            buf[++lastSpecialIndex] = replaceChars[(int) lastSpecial];\r\n        } else if (specialCount > 1) {\r\n            System.arraycopy(buf, lastSpecialIndex + 1, buf, lastSpecialIndex + 2, end - lastSpecialIndex - 1);\r\n            buf[lastSpecialIndex] = '\\\\';\r\n            buf[++lastSpecialIndex] = replaceChars[(int) lastSpecial];\r\n            end++;\r\n            for (int i = lastSpecialIndex - 2; i >= start; --i) {\r\n                char ch = buf[i];\r\n\r\n                if (ch <= 13 || ch == '\\\\' || ch == '\\'' //\r\n                        || (ch == '/' && isEnabled(SerializerFeature.WriteSlashAsSpecial))) {\r\n                    System.arraycopy(buf, i + 1, buf, i + 2, end - i - 1);\r\n                    buf[i] = '\\\\';\r\n                    buf[i + 1] = replaceChars[(int) ch];\r\n                    end++;\r\n                }\r\n            }\r\n        }\r\n\r\n        buf[count - 1] = '\\'';\r\n    }\r\n\r\n    public void writeFieldName(String key) {\r\n        writeFieldName(key, false);\r\n    }\r\n\r\n    public void writeFieldName(String key, boolean checkSpecial) {\r\n        if (key == null) {\r\n            write(\"null:\");\r\n            return;\r\n        }\r\n\r\n        if (useSingleQuotes) {\r\n            if (quoteFieldNames) {\r\n                writeStringWithSingleQuote(key);\r\n                write(':');\r\n            } else {\r\n                writeKeyWithSingleQuoteIfHasSpecial(key);\r\n            }\r\n        } else {\r\n            if (quoteFieldNames) {\r\n                writeStringWithDoubleQuote(key, ':');\r\n            } else {\r\n                boolean hashSpecial = key.length() == 0;\r\n                for (int i = 0; i < key.length(); ++i) {\r\n                    char ch = key.charAt(i);\r\n                    boolean special = (ch < 64 && (sepcialBits & (1L << ch)) != 0) || ch == '\\\\';\r\n                    if (special) {\r\n                        hashSpecial = true;\r\n                        break;\r\n                    }\r\n                }\r\n                if (hashSpecial) {\r\n                    writeStringWithDoubleQuote(key, ':');\r\n                } else {\r\n                    write(key);\r\n                    write(':');\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    private void writeKeyWithSingleQuoteIfHasSpecial(String text) {\r\n        final byte[] specicalFlags_singleQuotes = IOUtils.specicalFlags_singleQuotes;\r\n\r\n        int len = text.length();\r\n        int newcount = count + len + 1;\r\n        if (newcount > buf.length) {\r\n            if (writer != null) {\r\n                if (len == 0) {\r\n                    write('\\'');\r\n                    write('\\'');\r\n                    write(':');\r\n                    return;\r\n                }\r\n\r\n                boolean hasSpecial = false;\r\n                for (int i = 0; i < len; ++i) {\r\n                    char ch = text.charAt(i);\r\n                    if (ch < specicalFlags_singleQuotes.length && specicalFlags_singleQuotes[ch] != 0) {\r\n                        hasSpecial = true;\r\n                        break;\r\n                    }\r\n                }\r\n\r\n                if (hasSpecial) {\r\n                    write('\\'');\r\n                }\r\n                for (int i = 0; i < len; ++i) {\r\n                    char ch = text.charAt(i);\r\n                    if (ch < specicalFlags_singleQuotes.length && specicalFlags_singleQuotes[ch] != 0) {\r\n                        write('\\\\');\r\n                        write(replaceChars[(int) ch]);\r\n                    } else {\r\n                        write(ch);\r\n                    }\r\n                }\r\n                if (hasSpecial) {\r\n                    write('\\'');\r\n                }\r\n                write(':');\r\n                return;\r\n            }\r\n\r\n            expandCapacity(newcount);\r\n        }\r\n\r\n        if (len == 0) {\r\n            int newCount = count + 3;\r\n            if (newCount > buf.length) {\r\n                expandCapacity(count + 3);\r\n            }\r\n            buf[count++] = '\\'';\r\n            buf[count++] = '\\'';\r\n            buf[count++] = ':';\r\n            return;\r\n        }\r\n\r\n        int start = count;\r\n        int end = start + len;\r\n\r\n        text.getChars(0, len, buf, start);\r\n        count = newcount;\r\n\r\n        boolean hasSpecial = false;\r\n\r\n        for (int i = start; i < end; ++i) {\r\n            char ch = buf[i];\r\n            if (ch < specicalFlags_singleQuotes.length && specicalFlags_singleQuotes[ch] != 0) {\r\n                if (!hasSpecial) {\r\n                    newcount += 3;\r\n                    if (newcount > buf.length) {\r\n                        expandCapacity(newcount);\r\n                    }\r\n                    count = newcount;\r\n\r\n                    System.arraycopy(buf, i + 1, buf, i + 3, end - i - 1);\r\n                    System.arraycopy(buf, 0, buf, 1, i);\r\n                    buf[start] = '\\'';\r\n                    buf[++i] = '\\\\';\r\n                    buf[++i] = replaceChars[(int) ch];\r\n                    end += 2;\r\n                    buf[count - 2] = '\\'';\r\n\r\n                    hasSpecial = true;\r\n                } else {\r\n                    newcount++;\r\n                    if (newcount > buf.length) {\r\n                        expandCapacity(newcount);\r\n                    }\r\n                    count = newcount;\r\n\r\n                    System.arraycopy(buf, i + 1, buf, i + 2, end - i);\r\n                    buf[i] = '\\\\';\r\n                    buf[++i] = replaceChars[(int) ch];\r\n                    end++;\r\n                }\r\n            }\r\n        }\r\n\r\n        buf[newcount - 1] = ':';\r\n    }\r\n\r\n    public void flush() {\r\n        if (writer == null) {\r\n            return;\r\n        }\r\n\r\n        try {\r\n            writer.write(buf, 0, count);\r\n            writer.flush();\r\n        } catch (IOException e) {\r\n            throw new JSONException(e.getMessage(), e);\r\n        }\r\n        count = 0;\r\n    }\r\n\r\n    /**\r\n     * @deprecated\r\n     */\r\n    public void reset() {\r\n        count = 0;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/SerializerFeature.java",
    "content": "/*\n * Copyright 1999-2018 Alibaba Group.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage com.alibaba.fastjson.serializer;\n\n/**\n * @author wenshao[szujobs@hotmail.com]\n */\npublic enum SerializerFeature {\n    QuoteFieldNames,\n    /**\n     * \n     */\n    UseSingleQuotes,\n    /**\n     * \n     */\n    WriteMapNullValue,\n    /**\n     * 用枚举toString()值输出\n     */\n    WriteEnumUsingToString,\n    /**\n     * 用枚举name()输出\n     */\n    WriteEnumUsingName,\n    /**\n     * \n     */\n    UseISO8601DateFormat,\n    /**\n     * @since 1.1\n     */\n    WriteNullListAsEmpty,\n    /**\n     * @since 1.1\n     */\n    WriteNullStringAsEmpty,\n    /**\n     * @since 1.1\n     */\n    WriteNullNumberAsZero,\n    /**\n     * @since 1.1\n     */\n    WriteNullBooleanAsFalse,\n    /**\n     * @since 1.1\n     */\n    SkipTransientField,\n    /**\n     * @since 1.1\n     */\n    SortField,\n    /**\n     * @since 1.1.1\n     */\n    @Deprecated\n    WriteTabAsSpecial,\n    /**\n     * @since 1.1.2\n     */\n    PrettyFormat,\n    /**\n     * @since 1.1.2\n     */\n    WriteClassName,\n\n    /**\n     * @since 1.1.6\n     */\n    DisableCircularReferenceDetect, // 32768\n\n    /**\n     * @since 1.1.9\n     */\n    WriteSlashAsSpecial,\n\n    /**\n     * @since 1.1.10\n     */\n    BrowserCompatible,\n\n    /**\n     * @since 1.1.14\n     */\n    WriteDateUseDateFormat,\n\n    /**\n     * @since 1.1.15\n     */\n    NotWriteRootClassName,\n\n    /**\n     * @since 1.1.19\n     * @deprecated\n     */\n    DisableCheckSpecialChar,\n\n    /**\n     * @since 1.1.35\n     */\n    BeanToArray,\n\n    /**\n     * @since 1.1.37\n     */\n    WriteNonStringKeyAsString,\n    \n    /**\n     * @since 1.1.42\n     */\n    NotWriteDefaultValue,\n    \n    /**\n     * @since 1.2.6\n     */\n    BrowserSecure,\n    \n    /**\n     * @since 1.2.7\n     */\n    IgnoreNonFieldGetter,\n    \n    /**\n     * @since 1.2.9\n     */\n    WriteNonStringValueAsString,\n    \n    /**\n     * @since 1.2.11\n     */\n    IgnoreErrorGetter,\n\n    /**\n     * @since 1.2.16\n     */\n    WriteBigDecimalAsPlain,\n\n    /**\n     * @since 1.2.27\n     */\n    MapSortField;\n\n    SerializerFeature(){\n        mask = (1 << ordinal());\n    }\n\n    public final int mask;\n\n    public final int getMask() {\n        return mask;\n    }\n\n    public static boolean isEnabled(int features, SerializerFeature feature) {\n        return (features & feature.mask) != 0;\n    }\n    \n    public static boolean isEnabled(int features, int featuresB, SerializerFeature feature) {\n        int mask = feature.mask;\n        \n        return (features & mask) != 0 || (featuresB & mask) != 0;\n    }\n\n    public static int config(int features, SerializerFeature feature, boolean state) {\n        if (state) {\n            features |= feature.mask;\n        } else {\n            features &= ~feature.mask;\n        }\n\n        return features;\n    }\n    \n    public static int of(SerializerFeature[] features) {\n        if (features == null) {\n            return 0;\n        }\n        \n        int value = 0;\n        \n        for (SerializerFeature feature: features) {\n            value |= feature.mask;\n        }\n        \n        return value;\n    }\n    \n    public final static SerializerFeature[] EMPTY = new SerializerFeature[0];\n\n    public static final int WRITE_MAP_NULL_FEATURES\n            = WriteMapNullValue.getMask()\n            | WriteNullBooleanAsFalse.getMask()\n            | WriteNullListAsEmpty.getMask()\n            | WriteNullNumberAsZero.getMask()\n            | WriteNullStringAsEmpty.getMask()\n            ;\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/SimpleDateFormatSerializer.java",
    "content": "package com.alibaba.fastjson.serializer;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\n\npublic class SimpleDateFormatSerializer implements ObjectSerializer {\n\n    private final String pattern;\n\n    public SimpleDateFormatSerializer(String pattern){\n        this.pattern = pattern;\n    }\n\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\n    \tif (object == null) {\n    \t\tserializer.out.writeNull();\n    \t\treturn;\n    \t}\n    \t\n        Date date = (Date) object;\n        SimpleDateFormat format = new SimpleDateFormat(pattern, serializer.locale);\n        format.setTimeZone(serializer.timeZone);\n\n        String text = format.format(date);\n        serializer.write(text);\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/SimplePropertyPreFilter.java",
    "content": "package com.alibaba.fastjson.serializer;\n\nimport java.util.HashSet;\nimport java.util.Set;\n\n/*\n * Copyright 1999-2018 Alibaba Group.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npublic class SimplePropertyPreFilter implements PropertyPreFilter {\n\n    private final Class<?>    clazz;\n    private final Set<String> includes = new HashSet<String>();\n    private final Set<String> excludes = new HashSet<String>();\n    private int               maxLevel = 0;\n\n    public SimplePropertyPreFilter(String... properties){\n        this(null, properties);\n    }\n\n    public SimplePropertyPreFilter(Class<?> clazz, String... properties){\n        super();\n        this.clazz = clazz;\n        for (String item : properties) {\n            if (item != null) {\n                this.includes.add(item);\n            }\n        }\n    }\n    \n    /**\n     * @since 1.2.9\n     */\n    public int getMaxLevel() {\n        return maxLevel;\n    }\n    \n    /**\n     * @since 1.2.9\n     */\n    public void setMaxLevel(int maxLevel) {\n        this.maxLevel = maxLevel;\n    }\n\n    public Class<?> getClazz() {\n        return clazz;\n    }\n\n    public Set<String> getIncludes() {\n        return includes;\n    }\n\n    public Set<String> getExcludes() {\n        return excludes;\n    }\n\n    public boolean apply(JSONSerializer serializer, Object source, String name) {\n        if (source == null) {\n            return true;\n        }\n\n        if (clazz != null && !clazz.isInstance(source)) {\n            return true;\n        }\n\n        if (this.excludes.contains(name)) {\n            return false;\n        }\n        \n        if (maxLevel > 0) {\n            int level = 0;\n            SerialContext context = serializer.context;\n            while (context != null) {\n                level++;\n                if (level > maxLevel) {\n                    return false;\n                }\n                context = context.parent;\n            }\n        }\n\n        return includes.size() == 0\n                || includes.contains(name);\n    }\n\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/StringCodec.java",
    "content": "/*\r\n * Copyright 1999-2018 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.serializer;\r\n\r\nimport java.io.IOException;\r\nimport java.lang.reflect.Type;\r\n\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.JSONLexer;\r\nimport com.alibaba.fastjson.parser.JSONToken;\r\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class StringCodec implements ObjectSerializer, ObjectDeserializer {\r\n\r\n    public static StringCodec instance = new StringCodec();\r\n\r\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features)\r\n                                                                                                               throws IOException {\r\n        write(serializer, (String) object);\r\n    }\r\n\r\n    public void write(JSONSerializer serializer, String value) {\r\n        SerializeWriter out = serializer.out;\r\n\r\n        if (value == null) {\r\n            out.writeNull(SerializerFeature.WriteNullStringAsEmpty);\r\n            return;\r\n        }\r\n\r\n        out.writeString(value);\r\n    }\r\n\r\n    @SuppressWarnings(\"unchecked\")\r\n    public <T> T deserialze(DefaultJSONParser parser, Type clazz, Object fieldName) {\r\n        if (clazz == StringBuffer.class) {\r\n            final JSONLexer lexer = parser.lexer;\r\n            if (lexer.token() == JSONToken.LITERAL_STRING) {\r\n                String val = lexer.stringVal();\r\n                lexer.nextToken(JSONToken.COMMA);\r\n\r\n                return (T) new StringBuffer(val);\r\n            }\r\n\r\n            Object value = parser.parse();\r\n\r\n            if (value == null) {\r\n                return null;\r\n            }\r\n\r\n            return (T) new StringBuffer(value.toString());\r\n        }\r\n\r\n        if (clazz == StringBuilder.class) {\r\n            final JSONLexer lexer = parser.lexer;\r\n            if (lexer.token() == JSONToken.LITERAL_STRING) {\r\n                String val = lexer.stringVal();\r\n                lexer.nextToken(JSONToken.COMMA);\r\n\r\n                return (T) new StringBuilder(val);\r\n            }\r\n\r\n            Object value = parser.parse();\r\n\r\n            if (value == null) {\r\n                return null;\r\n            }\r\n\r\n            return (T) new StringBuilder(value.toString());\r\n        }\r\n\r\n        return (T) deserialze(parser);\r\n    }\r\n\r\n    @SuppressWarnings(\"unchecked\")\r\n    public static <T> T deserialze(DefaultJSONParser parser) {\r\n        final JSONLexer lexer = parser.getLexer();\r\n        if (lexer.token() == JSONToken.LITERAL_STRING) {\r\n            String val = lexer.stringVal();\r\n            lexer.nextToken(JSONToken.COMMA);\r\n            return (T) val;\r\n        }\r\n\r\n        if (lexer.token() == JSONToken.LITERAL_INT) {\r\n            String val = lexer.numberString();\r\n            lexer.nextToken(JSONToken.COMMA);\r\n            return (T) val;\r\n        }\r\n\r\n        Object value = parser.parse();\r\n\r\n        if (value == null) {\r\n            return null;\r\n        }\r\n\r\n        return (T) value.toString();\r\n    }\r\n\r\n    public int getFastMatchToken() {\r\n        return JSONToken.LITERAL_STRING;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/ToStringSerializer.java",
    "content": "package com.alibaba.fastjson.serializer;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\n\npublic class ToStringSerializer implements ObjectSerializer {\n\n    public static final ToStringSerializer instance = new ToStringSerializer();\n\n    @Override\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType,\n                      int features) throws IOException {\n        SerializeWriter out = serializer.out;\n\n        if (object == null) {\n            out.writeNull();\n            return;\n        }\n\n        String strVal = object.toString();\n        out.writeString(strVal);\n    }\n\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/serializer/ValueFilter.java",
    "content": "/*\n * Copyright 1999-2018 Alibaba Group.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage com.alibaba.fastjson.serializer;\n\npublic interface ValueFilter extends SerializeFilter {\n\n    Object process(Object object, String name, Object value);\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/spi/Module.java",
    "content": "package com.alibaba.fastjson.spi;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\nimport com.alibaba.fastjson.serializer.ObjectSerializer;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\n\npublic interface Module {\n    ObjectDeserializer createDeserializer(ParserConfig config, Class type);\n    ObjectSerializer createSerializer(SerializeConfig config, Class type);\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/config/FastJsonConfig.java",
    "content": "\r\npackage com.alibaba.fastjson.support.config;\r\n\r\nimport com.alibaba.fastjson.parser.Feature;\r\nimport com.alibaba.fastjson.parser.ParserConfig;\r\nimport com.alibaba.fastjson.parser.deserializer.ParseProcess;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializeFilter;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\nimport com.alibaba.fastjson.util.IOUtils;\r\n\r\nimport java.nio.charset.Charset;\r\nimport java.util.Map;\r\nimport java.util.Map.Entry;\r\n\r\n/**\r\n * Config for FastJson.\r\n *\r\n * @author VictorZeng\r\n * @see SerializeConfig\r\n * @see ParserConfig\r\n * @see ParseProcess\r\n * @see SerializerFeature\r\n * @see SerializeFilter\r\n * @see Feature\r\n * @since 1.2.11\r\n */\r\n\r\npublic class FastJsonConfig {\r\n\r\n    /**\r\n     * default charset\r\n     */\r\n    private Charset charset;\r\n\r\n    /**\r\n     * serializeConfig\r\n     */\r\n    private SerializeConfig serializeConfig;\r\n\r\n    /**\r\n     * parserConfig\r\n     */\r\n    private ParserConfig parserConfig;\r\n\r\n    /**\r\n     * parseProcess\r\n     */\r\n    private ParseProcess parseProcess;\r\n\r\n    /**\r\n     * serializerFeatures\r\n     */\r\n    private SerializerFeature[] serializerFeatures;\r\n\r\n    /**\r\n     * serializeFilters\r\n     */\r\n    private SerializeFilter[] serializeFilters;\r\n\r\n    /**\r\n     * features\r\n     */\r\n    private Feature[] features;\r\n\r\n    /**\r\n     * class level serializeFilter\r\n     */\r\n    private Map<Class<?>, SerializeFilter> classSerializeFilters;\r\n\r\n    /**\r\n     * format date type\r\n     */\r\n    private String dateFormat;\r\n\r\n    /**\r\n     * The Write content length.\r\n     */\r\n    private boolean writeContentLength;\r\n\r\n    /**\r\n     * init param.\r\n     */\r\n    public FastJsonConfig() {\r\n\r\n        this.charset = IOUtils.UTF8;\r\n\r\n        this.serializeConfig = SerializeConfig.getGlobalInstance();\r\n        this.parserConfig = ParserConfig.getGlobalInstance();\r\n\r\n        this.serializerFeatures = new SerializerFeature[] {\r\n                SerializerFeature.BrowserSecure\r\n        };\r\n\r\n        this.serializeFilters = new SerializeFilter[0];\r\n        this.features = new Feature[0];\r\n\r\n        this.writeContentLength = true;\r\n    }\r\n\r\n    /**\r\n     * @return the serializeConfig\r\n     */\r\n    public SerializeConfig getSerializeConfig() {\r\n        return serializeConfig;\r\n    }\r\n\r\n    /**\r\n     * @param serializeConfig the serializeConfig to set\r\n     */\r\n    public void setSerializeConfig(SerializeConfig serializeConfig) {\r\n        this.serializeConfig = serializeConfig;\r\n    }\r\n\r\n    /**\r\n     * @return the parserConfig\r\n     */\r\n    public ParserConfig getParserConfig() {\r\n        return parserConfig;\r\n    }\r\n\r\n    /**\r\n     * @param parserConfig the parserConfig to set\r\n     */\r\n    public void setParserConfig(ParserConfig parserConfig) {\r\n        this.parserConfig = parserConfig;\r\n    }\r\n\r\n    /**\r\n     * @return the serializerFeatures\r\n     */\r\n    public SerializerFeature[] getSerializerFeatures() {\r\n        return serializerFeatures;\r\n    }\r\n\r\n    /**\r\n     * @param serializerFeatures the serializerFeatures to set\r\n     */\r\n    public void setSerializerFeatures(SerializerFeature... serializerFeatures) {\r\n        this.serializerFeatures = serializerFeatures;\r\n    }\r\n\r\n    /**\r\n     * @return the serializeFilters\r\n     */\r\n    public SerializeFilter[] getSerializeFilters() {\r\n        return serializeFilters;\r\n    }\r\n\r\n    /**\r\n     * @param serializeFilters the serializeFilters to set\r\n     */\r\n    public void setSerializeFilters(SerializeFilter... serializeFilters) {\r\n        this.serializeFilters = serializeFilters;\r\n    }\r\n\r\n    /**\r\n     * @return the features\r\n     */\r\n    public Feature[] getFeatures() {\r\n        return features;\r\n    }\r\n\r\n    /**\r\n     * @param features the features to set\r\n     */\r\n    public void setFeatures(Feature... features) {\r\n        this.features = features;\r\n    }\r\n\r\n    /**\r\n     * @return the classSerializeFilters\r\n     */\r\n    public Map<Class<?>, SerializeFilter> getClassSerializeFilters() {\r\n        return classSerializeFilters;\r\n    }\r\n\r\n    /**\r\n     * @param classSerializeFilters the classSerializeFilters to set\r\n     */\r\n    public void setClassSerializeFilters(\r\n            Map<Class<?>, SerializeFilter> classSerializeFilters) {\r\n\r\n        if (classSerializeFilters == null)\r\n            return;\r\n\r\n        for (Entry<Class<?>, SerializeFilter> entry : classSerializeFilters.entrySet())\r\n\r\n            this.serializeConfig.addFilter(entry.getKey(), entry.getValue());\r\n\r\n        this.classSerializeFilters = classSerializeFilters;\r\n    }\r\n\r\n    /**\r\n     * @return the dateFormat\r\n     */\r\n    public String getDateFormat() {\r\n        return dateFormat;\r\n    }\r\n\r\n    /**\r\n     * @param dateFormat the dateFormat to set\r\n     */\r\n    public void setDateFormat(String dateFormat) {\r\n        this.dateFormat = dateFormat;\r\n    }\r\n\r\n    /**\r\n     * @return the charset\r\n     */\r\n    public Charset getCharset() {\r\n        return charset;\r\n    }\r\n\r\n    /**\r\n     * @param charset the charset to set\r\n     */\r\n    public void setCharset(Charset charset) {\r\n        this.charset = charset;\r\n    }\r\n\r\n    /**\r\n     * Is write content length boolean.\r\n     *\r\n     * @return the boolean\r\n     */\r\n    public boolean isWriteContentLength() {\r\n        return writeContentLength;\r\n    }\r\n\r\n    /**\r\n     * Sets write content length.\r\n     *\r\n     * @param writeContentLength the write content length\r\n     */\r\n    public void setWriteContentLength(boolean writeContentLength) {\r\n        this.writeContentLength = writeContentLength;\r\n    }\r\n\r\n    /**\r\n     * Gets parse process.\r\n     *\r\n     * @return the parse process\r\n     */\r\n    public ParseProcess getParseProcess() {\r\n        return parseProcess;\r\n    }\r\n\r\n    /**\r\n     * Sets parse process.\r\n     *\r\n     * @param parseProcess the parse process\r\n     */\r\n    public void setParseProcess(ParseProcess parseProcess) {\r\n        this.parseProcess = parseProcess;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/geo/Feature.java",
    "content": "package com.alibaba.fastjson.support.geo;\n\nimport com.alibaba.fastjson.annotation.JSONType;\n\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\n/**\n * @since 1.2.68\n */\n@JSONType(typeName = \"Feature\", orders = {\"type\", \"id\", \"bbox\", \"coordinates\", \"properties\"})\npublic class Feature\n        extends Geometry {\n    private String id;\n    private Geometry geometry;\n    private Map<String, String> properties = new LinkedHashMap<String, String>();\n\n    public Feature() {\n        super(\"Feature\");\n    }\n\n    public Geometry getGeometry() {\n        return geometry;\n    }\n\n    public void setGeometry(Geometry geometry) {\n        this.geometry = geometry;\n    }\n\n    public Map<String, String> getProperties() {\n        return properties;\n    }\n\n    public void setProperties(Map<String, String> properties) {\n        this.properties = properties;\n    }\n\n    public String getId() {\n        return id;\n    }\n\n    public void setId(String id) {\n        this.id = id;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/geo/FeatureCollection.java",
    "content": "package com.alibaba.fastjson.support.geo;\n\nimport com.alibaba.fastjson.annotation.JSONType;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * @since 1.2.68\n */\n@JSONType(typeName = \"FeatureCollection\", orders = {\"type\", \"bbox\", \"coordinates\"})\npublic class FeatureCollection\n        extends Geometry {\n    private List<Feature> features = new ArrayList<Feature>();\n\n    public FeatureCollection() {\n        super(\"FeatureCollection\");\n    }\n\n    public List<Feature> getFeatures() {\n        return features;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/geo/Geometry.java",
    "content": "package com.alibaba.fastjson.support.geo;\n\nimport com.alibaba.fastjson.annotation.JSONType;\n\n/**\n * @since 1.2.68\n */\n@JSONType(seeAlso = {GeometryCollection.class\n        , LineString.class\n        , MultiLineString.class\n        , Point.class\n        , MultiPoint.class\n        , Polygon.class\n        , MultiPolygon.class\n        , Feature.class\n        , FeatureCollection.class}\n    , typeKey = \"type\")\npublic abstract class Geometry {\n    private final String type;\n    private double[] bbox;\n\n    protected Geometry(String type) {\n        this.type = type;\n    }\n\n    public String getType() {\n        return type;\n    }\n\n    public double[] getBbox() {\n        return bbox;\n    }\n\n    public void setBbox(double[] bbox) {\n        this.bbox = bbox;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/geo/GeometryCollection.java",
    "content": "package com.alibaba.fastjson.support.geo;\n\nimport com.alibaba.fastjson.annotation.JSONType;\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * @since 1.2.68\n */\n@JSONType(typeName = \"GeometryCollection\", orders = {\"type\", \"bbox\", \"geometries\"})\npublic class GeometryCollection extends Geometry {\n    private List<Geometry> geometries = new ArrayList<Geometry>();\n\n    public GeometryCollection() {\n        super(\"GeometryCollection\");\n    }\n\n    public List<Geometry> getGeometries() {\n        return geometries;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/geo/LineString.java",
    "content": "package com.alibaba.fastjson.support.geo;\n\nimport com.alibaba.fastjson.annotation.JSONType;\n\n/**\n * @since 1.2.68\n */\n@JSONType(typeName = \"LineString\", orders = {\"type\", \"bbox\", \"coordinates\"})\npublic class LineString extends Geometry {\n    private double[][] coordinates;\n\n    public LineString() {\n        super(\"LineString\");\n    }\n\n    public double[][] getCoordinates() {\n        return coordinates;\n    }\n\n    public void setCoordinates(double[][] coordinates) {\n        this.coordinates = coordinates;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/geo/MultiLineString.java",
    "content": "package com.alibaba.fastjson.support.geo;\n\nimport com.alibaba.fastjson.annotation.JSONType;\n\n/**\n * @since 1.2.68\n */\n@JSONType(typeName = \"MultiLineString\", orders = {\"type\", \"bbox\", \"coordinates\"})\npublic class MultiLineString extends Geometry {\n    private double[][][] coordinates;\n\n    public MultiLineString() {\n        super(\"MultiLineString\");\n    }\n\n    public double[][][] getCoordinates() {\n        return coordinates;\n    }\n\n    public void setCoordinates(double[][][] coordinates) {\n        this.coordinates = coordinates;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/geo/MultiPoint.java",
    "content": "package com.alibaba.fastjson.support.geo;\n\nimport com.alibaba.fastjson.annotation.JSONType;\n\n/**\n * @since 1.2.68\n */\n@JSONType(typeName = \"MultiPoint\", orders = {\"type\", \"bbox\", \"coordinates\"})\npublic class MultiPoint extends Geometry {\n    private double[][] coordinates;\n\n    public MultiPoint() {\n        super(\"MultiPoint\");\n    }\n\n    public double[][] getCoordinates() {\n        return coordinates;\n    }\n\n    public void setCoordinates(double[][] coordinates) {\n        this.coordinates = coordinates;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/geo/MultiPolygon.java",
    "content": "package com.alibaba.fastjson.support.geo;\n\nimport com.alibaba.fastjson.annotation.JSONType;\n\n/**\n * @since 1.2.68\n */\n@JSONType(typeName = \"MultiPolygon\", orders = {\"type\", \"bbox\", \"coordinates\"})\npublic class MultiPolygon\n        extends Geometry {\n    private double[][][][] coordinates;\n\n    public MultiPolygon() {\n        super(\"MultiPolygon\");\n    }\n\n    public double[][][][] getCoordinates() {\n        return coordinates;\n    }\n\n    public void setCoordinates(double[][][][] coordinates) {\n        this.coordinates = coordinates;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/geo/Point.java",
    "content": "package com.alibaba.fastjson.support.geo;\n\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\n\n/**\n * @since 1.2.68\n */\n@JSONType(typeName = \"Point\", orders = {\"type\", \"bbox\", \"coordinates\"})\npublic class Point extends Geometry {\n    private double longitude;\n    private double latitude;\n\n    public Point() {\n        super(\"Point\");\n    }\n\n    public double[] getCoordinates() {\n        return new double[] {longitude, latitude};\n    }\n\n    public void setCoordinates(double[] coordinates) {\n        if (coordinates == null || coordinates.length == 0) {\n            this.longitude = 0;\n            this.latitude = 0;\n            return;\n        }\n\n        if (coordinates.length == 1) {\n            this.longitude = coordinates[0];\n            return;\n        }\n\n        this.longitude = coordinates[0];\n        this.latitude = coordinates[1];\n    }\n\n    @JSONField(serialize = false)\n    public double getLongitude() {\n        return longitude;\n    }\n\n    @JSONField(serialize = false)\n    public double getLatitude() {\n        return latitude;\n    }\n\n    @JSONField(deserialize = false)\n    public void setLongitude(double longitude) {\n        this.longitude = longitude;\n    }\n\n    @JSONField(deserialize = false)\n    public void setLatitude(double latitude) {\n        this.latitude = latitude;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/geo/Polygon.java",
    "content": "package com.alibaba.fastjson.support.geo;\n\nimport com.alibaba.fastjson.annotation.JSONType;\n\n/**\n * @since 1.2.68\n */\n@JSONType(typeName = \"Polygon\", orders = {\"type\", \"bbox\", \"coordinates\"})\npublic class Polygon extends Geometry {\n    private double[][][] coordinates;\n\n    public Polygon() {\n        super(\"Polygon\");\n    }\n\n    public double[][][] getCoordinates() {\n        return coordinates;\n    }\n\n    public void setCoordinates(double[][][] coordinates) {\n        this.coordinates = coordinates;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/hsf/HSFJSONUtils.java",
    "content": "package com.alibaba.fastjson.support.hsf;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.*;\nimport com.alibaba.fastjson.util.TypeUtils;\n\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Type;\n\nimport static com.alibaba.fastjson.parser.JSONLexer.NOT_MATCH_NAME;\n\npublic class HSFJSONUtils {\n    final static SymbolTable typeSymbolTable      = new SymbolTable(1024);\n    final static char[]      fieldName_argsTypes  = \"\\\"argsTypes\\\"\".toCharArray();\n    final static char[]      fieldName_argsObjs   = \"\\\"argsObjs\\\"\".toCharArray();\n\n    final static char[]      fieldName_type       = \"\\\"@type\\\":\".toCharArray();\n\n    public static Object[] parseInvocationArguments(String json, MethodLocator methodLocator) {\n        DefaultJSONParser parser = new DefaultJSONParser(json);\n\n        JSONLexerBase lexer = (JSONLexerBase) parser.getLexer();\n\n        ParseContext rootContext = parser.setContext(null, null);\n\n        Object[] values;\n        int token = lexer.token();\n        if (token == JSONToken.LBRACE) {\n            String[] typeNames = lexer.scanFieldStringArray(fieldName_argsTypes, -1, typeSymbolTable);\n            if (typeNames == null && lexer.matchStat == NOT_MATCH_NAME) {\n                String type = lexer.scanFieldString(fieldName_type);\n                if (\"com.alibaba.fastjson.JSONObject\".equals(type)) {\n                    typeNames = lexer.scanFieldStringArray(fieldName_argsTypes, -1, typeSymbolTable);\n                }\n            }\n            Method method = methodLocator.findMethod(typeNames);\n\n            if (method == null) {\n                lexer.close();\n\n                JSONObject jsonObject = JSON.parseObject(json);\n                typeNames = jsonObject.getObject(\"argsTypes\", String[].class);\n                method = methodLocator.findMethod(typeNames);\n\n                JSONArray argsObjs = jsonObject.getJSONArray(\"argsObjs\");\n                if (argsObjs == null) {\n                    values = null;\n                } else {\n                    Type[] argTypes = method.getGenericParameterTypes();\n                    values = new Object[argTypes.length];\n                    for (int i = 0; i < argTypes.length; i++) {\n                        Type type = argTypes[i];\n                        values[i] = argsObjs.getObject(i, type);\n                    }\n                }\n            } else {\n                Type[] argTypes = method.getGenericParameterTypes();\n\n                lexer.skipWhitespace();\n                if (lexer.getCurrent() == ',') {\n                    lexer.next();\n                }\n\n                if (lexer.matchField2(fieldName_argsObjs)) {\n                    lexer.nextToken();\n\n                    ParseContext context = parser.setContext(rootContext, null, \"argsObjs\");\n                    values = parser.parseArray(argTypes);\n                    context.object = values;\n\n                    parser.accept(JSONToken.RBRACE);\n\n                    parser.handleResovleTask(null);\n                } else {\n                    values = null;\n                }\n\n                parser.close();\n            }\n        } else if (token == JSONToken.LBRACKET) {\n            String[] typeNames = lexer.scanFieldStringArray(null, -1, typeSymbolTable);\n\n            lexer.skipWhitespace();\n\n            char ch = lexer.getCurrent();\n\n            if (ch == ']') {\n                Method method = methodLocator.findMethod(null);\n                Type[] argTypes = method.getGenericParameterTypes();\n                values = new Object[typeNames.length];\n                for (int i = 0; i < typeNames.length; ++i) {\n                    Type argType = argTypes[i];\n                    String typeName = typeNames[i];\n                    if (argType != String.class) {\n                        values[i] = TypeUtils.cast(typeName, argType, parser.getConfig());\n                    } else {\n                        values[i] = typeName;\n                    }\n                }\n                return values;\n            }\n            if (ch == ',') {\n                lexer.next();\n                lexer.skipWhitespace();\n            }\n            lexer.nextToken(JSONToken.LBRACKET);\n\n            Method method = methodLocator.findMethod(typeNames);\n            Type[] argTypes = method.getGenericParameterTypes();\n            values = parser.parseArray(argTypes);\n            lexer.close();\n        } else {\n            values = null;\n        }\n\n        return values;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/hsf/MethodLocator.java",
    "content": "package com.alibaba.fastjson.support.hsf;\n\nimport java.lang.reflect.Method;\n\npublic interface MethodLocator {\n    Method findMethod(String[] types);\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/jaxrs/FastJsonAutoDiscoverable.java",
    "content": "package com.alibaba.fastjson.support.jaxrs;\n\nimport org.glassfish.jersey.internal.spi.AutoDiscoverable;\n\nimport javax.annotation.Priority;\nimport javax.ws.rs.core.Configuration;\nimport javax.ws.rs.core.FeatureContext;\n\n/**\n * <p>Title: FastJsonAutoDiscoverable</p>\n * <p>Description: FastJsonAutoDiscoverable</p>\n *\n * @author Victor.Zxy\n * @see AutoDiscoverable\n * @since 1.2.37\n */\n@Priority(AutoDiscoverable.DEFAULT_PRIORITY - 1)\npublic class FastJsonAutoDiscoverable implements AutoDiscoverable {\n\n    public static final String FASTJSON_AUTO_DISCOVERABLE = \"fastjson.auto.discoverable\";\n\n    public volatile static boolean autoDiscover = true;\n\n    static {\n        try {\n            autoDiscover = Boolean.parseBoolean(\n                    System.getProperty(FASTJSON_AUTO_DISCOVERABLE, String.valueOf(autoDiscover)));\n        } catch (Throwable ex) {\n            //skip\n        }\n    }\n\n    public void configure(final FeatureContext context) {\n\n        final Configuration config = context.getConfiguration();\n\n        // Register FastJson.\n        if (!config.isRegistered(FastJsonFeature.class) && autoDiscover) {\n\n            context.register(FastJsonFeature.class);\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/jaxrs/FastJsonFeature.java",
    "content": "package com.alibaba.fastjson.support.jaxrs;\n\nimport org.glassfish.jersey.CommonProperties;\nimport org.glassfish.jersey.internal.InternalProperties;\nimport org.glassfish.jersey.internal.util.PropertiesHelper;\n\nimport javax.ws.rs.core.Configuration;\nimport javax.ws.rs.core.Feature;\nimport javax.ws.rs.core.FeatureContext;\nimport javax.ws.rs.ext.MessageBodyReader;\nimport javax.ws.rs.ext.MessageBodyWriter;\n\n/**\n * <p>Title: FastJsonFeature</p>\n * <p>Description: FastJsonFeature</p>\n *\n * @author Victor.Zxy\n * @see Feature\n * @since 1.2.37\n */\npublic class FastJsonFeature implements Feature {\n\n    private final static String JSON_FEATURE = FastJsonFeature.class.getSimpleName();\n\n    @Override\n    public boolean configure(final FeatureContext context) {\n        try {\n            final Configuration config = context.getConfiguration();\n\n            final String jsonFeature = CommonProperties.getValue(\n                    config.getProperties()\n                    , config.getRuntimeType()\n                    , InternalProperties.JSON_FEATURE, JSON_FEATURE,\n                    String.class\n            );\n\n            // Other JSON providers registered.\n            if (!JSON_FEATURE.equalsIgnoreCase(jsonFeature)) {\n                return false;\n            }\n\n            // Disable other JSON providers.\n            context.property(\n                    PropertiesHelper.getPropertyNameForRuntime(InternalProperties.JSON_FEATURE, config.getRuntimeType())\n                    , JSON_FEATURE);\n\n            // Register FastJson.\n            if (!config.isRegistered(FastJsonProvider.class)) {\n                context.register(FastJsonProvider.class, MessageBodyReader.class, MessageBodyWriter.class);\n            }\n        } catch (NoSuchMethodError e) {\n            // skip\n        }\n\n        return true;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/jaxrs/FastJsonProvider.java",
    "content": "package com.alibaba.fastjson.support.jaxrs;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializeFilter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.fastjson.support.config.FastJsonConfig;\n\nimport javax.ws.rs.Consumes;\nimport javax.ws.rs.Produces;\nimport javax.ws.rs.WebApplicationException;\nimport javax.ws.rs.core.*;\nimport javax.ws.rs.ext.*;\nimport java.io.*;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Type;\nimport java.nio.charset.Charset;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.List;\n\n/**\n * Fastjson for JAX-RS Provider.\n *\n * @author smallnest\n * @author VictorZeng\n * @see MessageBodyReader\n * @see MessageBodyWriter\n * @since 1.2.9\n */\n\n@Provider\n@Consumes({MediaType.WILDCARD})\n@Produces({MediaType.WILDCARD})\npublic class FastJsonProvider //\n        implements MessageBodyReader<Object>, MessageBodyWriter<Object> {\n\n    /**\n     * These are classes that we never use for reading\n     * (never try to deserialize instances of these types).\n     */\n    public final static Class<?>[] DEFAULT_UNREADABLES = new Class<?>[]{\n            InputStream.class, Reader.class\n    };\n\n    /**\n     * These are classes that we never use for writing\n     * (never try to serialize instances of these types).\n     */\n    public final static Class<?>[] DEFAULT_UNWRITABLES = new Class<?>[]{\n            InputStream.class,\n            OutputStream.class, Writer.class,\n            StreamingOutput.class, Response.class\n    };\n\n    @Deprecated\n    protected Charset charset = Charset.forName(\"UTF-8\");\n\n    @Deprecated\n    protected SerializerFeature[] features = new SerializerFeature[0];\n\n    @Deprecated\n    protected SerializeFilter[] filters = new SerializeFilter[0];\n\n    @Deprecated\n    protected String dateFormat;\n\n    /**\n     * Injectable context object used to locate configured\n     * instance of {@link FastJsonConfig} to use for actual\n     * serialization.\n     */\n    @Context\n    protected Providers providers;\n\n    /**\n     * with fastJson config\n     */\n    private FastJsonConfig fastJsonConfig = new FastJsonConfig();\n\n    /**\n     * allow serialize/deserialize types in clazzes\n     */\n    private Class<?>[] clazzes = null;\n\n    /**\n     * whether set PrettyFormat while exec WriteTo()\n     */\n    private boolean pretty;\n\n\n    /**\n     * @return the fastJsonConfig.\n     * @since 1.2.11\n     */\n    public FastJsonConfig getFastJsonConfig() {\n        return fastJsonConfig;\n    }\n\n    /**\n     * @param fastJsonConfig the fastJsonConfig to set.\n     * @since 1.2.11\n     */\n    public void setFastJsonConfig(FastJsonConfig fastJsonConfig) {\n        this.fastJsonConfig = fastJsonConfig;\n    }\n\n    /**\n     * Can serialize/deserialize all types.\n     */\n    public FastJsonProvider() {\n\n    }\n\n    /**\n     * Only serialize/deserialize all types in clazzes.\n     */\n    public FastJsonProvider(Class<?>[] clazzes) {\n        this.clazzes = clazzes;\n    }\n\n    /**\n     * Set pretty format\n     */\n    public FastJsonProvider setPretty(boolean p) {\n        this.pretty = p;\n        return this;\n    }\n\n    /**\n     * Instantiates a new Fast json provider.\n     *\n     * @param charset the charset\n     * @see FastJsonConfig#setCharset(Charset)\n     * @deprecated\n     */\n    @Deprecated\n    public FastJsonProvider(String charset) {\n        this.fastJsonConfig.setCharset(Charset.forName(charset));\n    }\n\n    /**\n     * Gets charset.\n     *\n     * @return the charset\n     * @see FastJsonConfig#getCharset()\n     * @deprecated\n     */\n    @Deprecated\n    public Charset getCharset() {\n        return this.fastJsonConfig.getCharset();\n    }\n\n    /**\n     * Sets charset.\n     *\n     * @param charset the charset\n     * @see FastJsonConfig#setCharset(Charset)\n     * @deprecated\n     */\n    @Deprecated\n    public void setCharset(Charset charset) {\n        this.fastJsonConfig.setCharset(charset);\n    }\n\n    /**\n     * Gets date format.\n     *\n     * @return the date format\n     * @see FastJsonConfig#getDateFormat()\n     * @deprecated\n     */\n    @Deprecated\n    public String getDateFormat() {\n        return this.fastJsonConfig.getDateFormat();\n    }\n\n    /**\n     * Sets date format.\n     *\n     * @param dateFormat the date format\n     * @see FastJsonConfig#setDateFormat(String)\n     * @deprecated\n     */\n    @Deprecated\n    public void setDateFormat(String dateFormat) {\n        this.fastJsonConfig.setDateFormat(dateFormat);\n    }\n\n    /**\n     * Get features serializer feature [].\n     *\n     * @return the serializer feature []\n     * @see FastJsonConfig#getFeatures()\n     * @deprecated\n     */\n    @Deprecated\n    public SerializerFeature[] getFeatures() {\n        return this.fastJsonConfig.getSerializerFeatures();\n    }\n\n    /**\n     * Sets features.\n     *\n     * @param features the features\n     * @see FastJsonConfig#setFeatures(Feature...)\n     * @deprecated\n     */\n    @Deprecated\n    public void setFeatures(SerializerFeature... features) {\n        this.fastJsonConfig.setSerializerFeatures(features);\n    }\n\n    /**\n     * Get filters serialize filter [].\n     *\n     * @return the serialize filter []\n     * @see FastJsonConfig#getSerializeFilters()\n     * @deprecated\n     */\n    @Deprecated\n    public SerializeFilter[] getFilters() {\n        return this.fastJsonConfig.getSerializeFilters();\n    }\n\n    /**\n     * Sets filters.\n     *\n     * @param filters the filters\n     * @see FastJsonConfig#setSerializeFilters(SerializeFilter...)\n     * @deprecated\n     */\n    @Deprecated\n    public void setFilters(SerializeFilter... filters) {\n        this.fastJsonConfig.setSerializeFilters(filters);\n    }\n\n    /**\n     * Check some are interface/abstract classes to exclude.\n     *\n     * @param type    the type\n     * @param classes the classes\n     * @return the boolean\n     */\n    protected boolean isAssignableFrom(Class<?> type, Class<?>[] classes) {\n\n        if (type == null)\n            return false;\n\n        //  there are some other abstract/interface types to exclude too:\n        for (Class<?> cls : classes) {\n            if (cls.isAssignableFrom(type)) {\n                return false;\n            }\n        }\n\n        return true;\n    }\n\n    /**\n     * Check whether a class can be serialized or deserialized. It can check\n     * based on packages, annotations on entities or explicit classes.\n     *\n     * @param type class need to check\n     * @return true if valid\n     */\n    protected boolean isValidType(Class<?> type, Annotation[] classAnnotations) {\n        if (type == null)\n            return false;\n\n        if (clazzes != null) {\n            for (Class<?> cls : clazzes) { // must strictly equal. Don't check\n                // inheritance\n                if (cls == type)\n                    return true;\n            }\n\n            return false;\n        }\n\n        return true;\n    }\n\n    /**\n     * Check media type like \"application/json\".\n     *\n     * @param mediaType media type\n     * @return true if the media type is valid\n     */\n    protected boolean hasMatchingMediaType(MediaType mediaType) {\n        if (mediaType != null) {\n            String subtype = mediaType.getSubtype();\n\n            return ((\"json\".equalsIgnoreCase(subtype)) //\n                    || (subtype.endsWith(\"+json\")) //\n                    || (\"javascript\".equals(subtype)) //\n                    || (\"x-javascript\".equals(subtype)) //\n                    || (\"x-json\".equals(subtype)) //\n                    || (\"x-www-form-urlencoded\".equalsIgnoreCase(subtype)) //\n                    || (subtype.endsWith(\"x-www-form-urlencoded\")));\n        }\n        return true;\n    }\n\n    /**\n     * Method that JAX-RS container calls to try to check whether given value\n     * (of specified type) can be serialized by this provider.\n     */\n    public boolean isWriteable(Class<?> type, //\n                               Type genericType, //\n                               Annotation[] annotations, //\n                               MediaType mediaType) {\n        if (!hasMatchingMediaType(mediaType)) {\n            return false;\n        }\n\n        if (!isAssignableFrom(type, DEFAULT_UNWRITABLES))\n            return false;\n\n        return isValidType(type, annotations);\n    }\n\n    /**\n     * Method that JAX-RS container calls to try to figure out serialized length\n     * of given value. always return -1 to denote \"not known\".\n     */\n    public long getSize(Object t, //\n                        Class<?> type, //\n                        Type genericType, //\n                        Annotation[] annotations, //\n                        MediaType mediaType) {\n        return -1;\n    }\n\n    /**\n     * Method that JAX-RS container calls to serialize given value.\n     */\n    public void writeTo(Object obj, //\n                        Class<?> type, //\n                        Type genericType, //\n                        Annotation[] annotations, //\n                        MediaType mediaType, //\n                        MultivaluedMap<String, Object> httpHeaders, //\n                        OutputStream entityStream //\n    ) throws IOException, WebApplicationException {\n\n        FastJsonConfig fastJsonConfig = locateConfigProvider(type, mediaType);\n\n        SerializerFeature[] serializerFeatures = fastJsonConfig.getSerializerFeatures();\n\n        if (pretty) {\n            if (serializerFeatures == null)\n                serializerFeatures = new SerializerFeature[]{SerializerFeature.PrettyFormat};\n            else {\n                List<SerializerFeature> featureList = new ArrayList<SerializerFeature>(Arrays.asList(serializerFeatures));\n                featureList.add(SerializerFeature.PrettyFormat);\n                serializerFeatures = featureList.toArray(serializerFeatures);\n            }\n            fastJsonConfig.setSerializerFeatures(serializerFeatures);\n        }\n\n        try {\n            JSON.writeJSONStringWithFastJsonConfig(entityStream, //\n                    fastJsonConfig.getCharset(), //\n                    obj, //\n                    fastJsonConfig.getSerializeConfig(), //\n                    fastJsonConfig.getSerializeFilters(), //\n                    fastJsonConfig.getDateFormat(), //\n                    JSON.DEFAULT_GENERATE_FEATURE, //\n                    fastJsonConfig.getSerializerFeatures());\n\n            entityStream.flush();\n\n        } catch (JSONException ex) {\n\n            throw new WebApplicationException(ex);\n        }\n    }\n\n    /**\n     * Method that JAX-RS container calls to try to check whether values of\n     * given type (and media type) can be deserialized by this provider.\n     */\n    public boolean isReadable(Class<?> type, //\n                              Type genericType, //\n                              Annotation[] annotations, //\n                              MediaType mediaType) {\n\n        if (!hasMatchingMediaType(mediaType)) {\n            return false;\n        }\n\n        if (!isAssignableFrom(type, DEFAULT_UNREADABLES))\n            return false;\n\n        return isValidType(type, annotations);\n    }\n\n    /**\n     * Method that JAX-RS container calls to deserialize given value.\n     */\n    public Object readFrom(Class<Object> type, //\n                           Type genericType, //\n                           Annotation[] annotations, //\n                           MediaType mediaType, //\n                           MultivaluedMap<String, String> httpHeaders, //\n                           InputStream entityStream) throws IOException, WebApplicationException {\n\n        try {\n            FastJsonConfig fastJsonConfig = locateConfigProvider(type, mediaType);\n\n            return JSON.parseObject(entityStream,\n                    fastJsonConfig.getCharset(),\n                    genericType,\n                    fastJsonConfig.getParserConfig(),\n                    fastJsonConfig.getParseProcess(),\n                    JSON.DEFAULT_PARSER_FEATURE,\n                    fastJsonConfig.getFeatures());\n\n        } catch (JSONException ex) {\n\n            throw new WebApplicationException(ex);\n        }\n    }\n\n    /**\n     * Helper method that is called if no config has been explicitly configured.\n     */\n    protected FastJsonConfig locateConfigProvider(Class<?> type, MediaType mediaType) {\n\n        if (providers != null) {\n\n            ContextResolver<FastJsonConfig> resolver = providers.getContextResolver(FastJsonConfig.class, mediaType);\n\n            if (resolver == null) {\n\n                resolver = providers.getContextResolver(FastJsonConfig.class, null);\n            }\n\n            if (resolver != null) {\n\n                return resolver.getContext(type);\n            }\n        }\n\n        return fastJsonConfig;\n    }\n\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/moneta/MonetaCodec.java",
    "content": "package com.alibaba.fastjson.support.moneta;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.ObjectSerializer;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport org.javamoney.moneta.Money;\n\nimport javax.money.Monetary;\nimport java.io.IOException;\nimport java.lang.reflect.Type;\nimport java.math.BigDecimal;\nimport java.math.BigInteger;\n\npublic class MonetaCodec implements ObjectSerializer, ObjectDeserializer {\n    public static final MonetaCodec instance = new MonetaCodec();\n\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\n        Money money = (Money) object;\n        if (money == null) {\n            serializer.writeNull();\n            return;\n        }\n\n        SerializeWriter out = serializer.out;\n        out.writeFieldValue('{', \"numberStripped\", money.getNumberStripped());\n        out.writeFieldValue(',', \"currency\", money.getCurrency().getCurrencyCode());\n        out.write('}');\n    }\n\n    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n        JSONObject object = parser.parseObject();\n        Object currency = object.get(\"currency\");\n\n        String currencyCode = null;\n        if (currency instanceof JSONObject) {\n            currencyCode = ((JSONObject) currency).getString(\"currencyCode\");\n        } else if (currency instanceof String) {\n            currencyCode = (String) currency;\n        }\n\n        Object numberStripped = object.get(\"numberStripped\");\n\n        if (numberStripped instanceof BigDecimal\n                || numberStripped instanceof Integer || numberStripped instanceof BigInteger) {\n            return (T) Money.of((Number) numberStripped, Monetary.getCurrency(currencyCode));\n        }\n\n        throw new UnsupportedOperationException();\n    }\n\n    public int getFastMatchToken() {\n        return 0;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/retrofit/Retrofit2ConverterFactory.java",
    "content": "package com.alibaba.fastjson.support.retrofit;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.fastjson.support.config.FastJsonConfig;\nimport okhttp3.MediaType;\nimport okhttp3.RequestBody;\nimport okhttp3.ResponseBody;\nimport retrofit2.Converter;\nimport retrofit2.Retrofit;\n\nimport java.io.IOException;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Type;\n\n/**\n * @author ligboy, wenshao\n * @author Victor.Zxy\n */\npublic class Retrofit2ConverterFactory extends Converter.Factory {\n\n    private static final MediaType MEDIA_TYPE = MediaType.parse(\"application/json; charset=UTF-8\");\n\n    private FastJsonConfig fastJsonConfig;\n\n    @Deprecated\n    private static final Feature[] EMPTY_SERIALIZER_FEATURES = new Feature[0];\n    @Deprecated\n    private ParserConfig parserConfig = ParserConfig.getGlobalInstance();\n    @Deprecated\n    private int featureValues = JSON.DEFAULT_PARSER_FEATURE;\n    @Deprecated\n    private Feature[] features;\n    @Deprecated\n    private SerializeConfig serializeConfig;\n    @Deprecated\n    private SerializerFeature[] serializerFeatures;\n\n    public Retrofit2ConverterFactory() {\n        this.fastJsonConfig = new FastJsonConfig();\n    }\n\n    public Retrofit2ConverterFactory(FastJsonConfig fastJsonConfig) {\n        this.fastJsonConfig = fastJsonConfig;\n    }\n\n    public static Retrofit2ConverterFactory create() {\n        return create(new FastJsonConfig());\n    }\n\n    public static Retrofit2ConverterFactory create(FastJsonConfig fastJsonConfig) {\n        if (fastJsonConfig == null) throw new NullPointerException(\"fastJsonConfig == null\");\n        return new Retrofit2ConverterFactory(fastJsonConfig);\n    }\n\n    @Override\n    public Converter<ResponseBody, Object> responseBodyConverter(Type type, //\n                                                                 Annotation[] annotations, //\n                                                                 Retrofit retrofit) {\n        return new ResponseBodyConverter<Object>(type);\n    }\n\n    @Override\n    public Converter<Object, RequestBody> requestBodyConverter(Type type, //\n                                                               Annotation[] parameterAnnotations, //\n                                                               Annotation[] methodAnnotations, //\n                                                               Retrofit retrofit) {\n        return new RequestBodyConverter<Object>();\n    }\n\n    public FastJsonConfig getFastJsonConfig() {\n        return fastJsonConfig;\n    }\n\n    public Retrofit2ConverterFactory setFastJsonConfig(FastJsonConfig fastJsonConfig) {\n        this.fastJsonConfig = fastJsonConfig;\n        return this;\n    }\n\n    /**\n     * Gets parser config.\n     *\n     * @return the parser config\n     * @see FastJsonConfig#getParserConfig()\n     * @deprecated\n     */\n    @Deprecated\n    public ParserConfig getParserConfig() {\n        return fastJsonConfig.getParserConfig();\n    }\n\n    /**\n     * Sets parser config.\n     *\n     * @param config the config\n     * @return the parser config\n     * @see FastJsonConfig#setParserConfig(ParserConfig)\n     * @deprecated\n     */\n    @Deprecated\n    public Retrofit2ConverterFactory setParserConfig(ParserConfig config) {\n        fastJsonConfig.setParserConfig(config);\n        return this;\n    }\n\n    /**\n     * Gets parser feature values.\n     *\n     * @return the parser feature values\n     * @see JSON#DEFAULT_PARSER_FEATURE\n     * @deprecated\n     */\n    @Deprecated\n    public int getParserFeatureValues() {\n        return JSON.DEFAULT_PARSER_FEATURE;\n    }\n\n    /**\n     * Sets parser feature values.\n     *\n     * @param featureValues the feature values\n     * @return the parser feature values\n     * @see JSON#DEFAULT_PARSER_FEATURE\n     * @deprecated\n     */\n    @Deprecated\n    public Retrofit2ConverterFactory setParserFeatureValues(int featureValues) {\n        return this;\n    }\n\n    /**\n     * Get parser features feature [].\n     *\n     * @return the feature []\n     * @see FastJsonConfig#getFeatures()\n     * @deprecated\n     */\n    @Deprecated\n    public Feature[] getParserFeatures() {\n        return fastJsonConfig.getFeatures();\n    }\n\n    /**\n     * Sets parser features.\n     *\n     * @param features the features\n     * @return the parser features\n     * @see FastJsonConfig#setFeatures(Feature...)\n     * @deprecated\n     */\n    @Deprecated\n    public Retrofit2ConverterFactory setParserFeatures(Feature[] features) {\n        fastJsonConfig.setFeatures(features);\n        return this;\n    }\n\n    /**\n     * Gets serialize config.\n     *\n     * @return the serialize config\n     * @see FastJsonConfig#getSerializeConfig()\n     * @deprecated\n     */\n    @Deprecated\n    public SerializeConfig getSerializeConfig() {\n        return fastJsonConfig.getSerializeConfig();\n    }\n\n    /**\n     * Sets serialize config.\n     *\n     * @param serializeConfig the serialize config\n     * @return the serialize config\n     * @see FastJsonConfig#setSerializeConfig(SerializeConfig)\n     * @deprecated\n     */\n    @Deprecated\n    public Retrofit2ConverterFactory setSerializeConfig(SerializeConfig serializeConfig) {\n        fastJsonConfig.setSerializeConfig(serializeConfig);\n        return this;\n    }\n\n    /**\n     * Get serializer features serializer feature [].\n     *\n     * @return the serializer feature []\n     * @see FastJsonConfig#getSerializerFeatures()\n     * @deprecated\n     */\n    @Deprecated\n    public SerializerFeature[] getSerializerFeatures() {\n        return fastJsonConfig.getSerializerFeatures();\n    }\n\n    /**\n     * Sets serializer features.\n     *\n     * @param features the features\n     * @return the serializer features\n     * @see FastJsonConfig#setSerializerFeatures(SerializerFeature...)\n     * @deprecated\n     */\n    @Deprecated\n    public Retrofit2ConverterFactory setSerializerFeatures(SerializerFeature[] features) {\n        fastJsonConfig.setSerializerFeatures(features);\n        return this;\n    }\n\n    final class ResponseBodyConverter<T> implements Converter<ResponseBody, T> {\n        private Type type;\n\n        ResponseBodyConverter(Type type) {\n            this.type = type;\n        }\n\n        public T convert(ResponseBody value) throws IOException {\n            try {\n                return JSON.parseObject(value.bytes()\n                        , fastJsonConfig.getCharset()\n                        , type\n                        , fastJsonConfig.getParserConfig()\n                        , fastJsonConfig.getParseProcess()\n                        , JSON.DEFAULT_PARSER_FEATURE\n                        , fastJsonConfig.getFeatures()\n                );\n            } catch (Exception e) {\n                throw new IOException(\"JSON parse error: \" + e.getMessage(), e);\n            } finally {\n                value.close();\n            }\n        }\n    }\n\n    final class RequestBodyConverter<T> implements Converter<T, RequestBody> {\n        RequestBodyConverter() {\n        }\n\n        public RequestBody convert(T value) throws IOException {\n            try {\n                byte[] content = JSON.toJSONBytesWithFastJsonConfig(fastJsonConfig.getCharset()\n                        , value\n                        , fastJsonConfig.getSerializeConfig()\n                        , fastJsonConfig.getSerializeFilters()\n                        , fastJsonConfig.getDateFormat()\n                        , JSON.DEFAULT_GENERATE_FEATURE\n                        , fastJsonConfig.getSerializerFeatures()\n                );\n                return RequestBody.create(MEDIA_TYPE, content);\n            } catch (Exception e) {\n                throw new IOException(\"Could not write JSON: \" + e.getMessage(), e);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/spring/FastJsonContainer.java",
    "content": "package com.alibaba.fastjson.support.spring;\n\n/**\n * 一个简单的PO对象，包含原始输出对象和对应的过滤条件{@link PropertyPreFilters}\n * @author yanquanyu\n * @author liuming\n */\npublic class FastJsonContainer {\n    private Object value;\n    private PropertyPreFilters filters;\n\n    FastJsonContainer(Object body){\n        this.value = body;\n    }\n\n    public Object getValue() {\n        return this.value;\n    }\n\n    public void setValue(Object value) {\n        this.value = value;\n    }\n\n    public PropertyPreFilters getFilters() {\n        return this.filters;\n    }\n\n    public void setFilters(PropertyPreFilters filters) {\n        this.filters = filters;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter.java",
    "content": "package com.alibaba.fastjson.support.spring;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONPObject;\nimport com.alibaba.fastjson.serializer.SerializeFilter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.fastjson.support.config.FastJsonConfig;\nimport com.alibaba.fastjson.util.ParameterizedTypeImpl;\nimport org.springframework.core.ResolvableType;\nimport org.springframework.http.HttpHeaders;\nimport org.springframework.http.HttpInputMessage;\nimport org.springframework.http.HttpOutputMessage;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.converter.AbstractHttpMessageConverter;\nimport org.springframework.http.converter.GenericHttpMessageConverter;\nimport org.springframework.http.converter.HttpMessageNotReadableException;\nimport org.springframework.http.converter.HttpMessageNotWritableException;\nimport org.springframework.util.StringUtils;\n\nimport java.io.ByteArrayOutputStream;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.lang.reflect.ParameterizedType;\nimport java.lang.reflect.Type;\nimport java.lang.reflect.TypeVariable;\nimport java.nio.charset.Charset;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.List;\n\n/**\n * Fastjson for Spring MVC Converter.\n * <p>\n * Compatible Spring MVC version 3.2+\n *\n * @author VictorZeng\n * @see AbstractHttpMessageConverter\n * @see GenericHttpMessageConverter\n * @since 1.2.10\n * <p>\n * <p>\n * <p>\n * Supported return type:\n * </p>\n * Simple object: Object\n * <p>\n * <p>\n * With property filter :FastJsonContainer[Object]\n * </p>\n * <p>\n * Jsonp :MappingFastJsonValue[Object]\n * </p>\n * Jsonp with property filter: MappingFastJsonValue[FastJsonContainer[Object]]\n */\n\npublic class FastJsonHttpMessageConverter extends AbstractHttpMessageConverter<Object>//\n        implements GenericHttpMessageConverter<Object> {\n\n    public static final MediaType APPLICATION_JAVASCRIPT = new MediaType(\"application\", \"javascript\");\n\n    @Deprecated\n    protected SerializerFeature[] features = new SerializerFeature[0];\n\n    @Deprecated\n    protected SerializeFilter[] filters = new SerializeFilter[0];\n\n    @Deprecated\n    protected String dateFormat;\n\n    private boolean setLengthError = false;\n\n    /**\n     * with fastJson config\n     */\n    private FastJsonConfig fastJsonConfig = new FastJsonConfig();\n\n    /**\n     * @return the fastJsonConfig.\n     * @since 1.2.11\n     */\n    public FastJsonConfig getFastJsonConfig() {\n        return fastJsonConfig;\n    }\n\n    /**\n     * @param fastJsonConfig the fastJsonConfig to set.\n     * @since 1.2.11\n     */\n    public void setFastJsonConfig(FastJsonConfig fastJsonConfig) {\n        this.fastJsonConfig = fastJsonConfig;\n    }\n\n    /**\n     * Can serialize/deserialize all types.\n     */\n    public FastJsonHttpMessageConverter() {\n\n        super(MediaType.ALL);\n    }\n\n    /**\n     * Gets charset.\n     *\n     * @return the charset\n     * @see FastJsonConfig#getCharset()\n     * @deprecated\n     */\n    @Deprecated\n    public Charset getCharset() {\n        return this.fastJsonConfig.getCharset();\n    }\n\n    /**\n     * Sets charset.\n     *\n     * @param charset the charset\n     * @see FastJsonConfig#setCharset(Charset)\n     * @deprecated\n     */\n    @Deprecated\n    public void setCharset(Charset charset) {\n        this.fastJsonConfig.setCharset(charset);\n    }\n\n    /**\n     * Gets date format.\n     *\n     * @return the date format\n     * @see FastJsonConfig#getDateFormat()\n     * @deprecated\n     */\n    @Deprecated\n    public String getDateFormat() {\n        return this.fastJsonConfig.getDateFormat();\n    }\n\n    /**\n     * Sets date format.\n     *\n     * @param dateFormat the date format\n     * @see FastJsonConfig#setDateFormat(String)\n     * @deprecated\n     */\n    @Deprecated\n    public void setDateFormat(String dateFormat) {\n        this.fastJsonConfig.setDateFormat(dateFormat);\n    }\n\n    /**\n     * Get features serializer feature [].\n     *\n     * @return the serializer feature []\n     * @see FastJsonConfig#getSerializerFeatures()\n     * @deprecated\n     */\n    @Deprecated\n    public SerializerFeature[] getFeatures() {\n        return this.fastJsonConfig.getSerializerFeatures();\n    }\n\n    /**\n     * Sets features.\n     *\n     * @param features the features\n     * @see FastJsonConfig#setSerializerFeatures(SerializerFeature...)\n     * @deprecated\n     */\n    @Deprecated\n    public void setFeatures(SerializerFeature... features) {\n        this.fastJsonConfig.setSerializerFeatures(features);\n    }\n\n    /**\n     * Get filters serialize filter [].\n     *\n     * @return the serialize filter []\n     * @see FastJsonConfig#getSerializeFilters()\n     * @deprecated\n     */\n    @Deprecated\n    public SerializeFilter[] getFilters() {\n        return this.fastJsonConfig.getSerializeFilters();\n    }\n\n    /**\n     * Sets filters.\n     *\n     * @param filters the filters\n     * @see FastJsonConfig#setSerializeFilters(SerializeFilter...)\n     * @deprecated\n     */\n    @Deprecated\n    public void setFilters(SerializeFilter... filters) {\n        this.fastJsonConfig.setSerializeFilters(filters);\n    }\n\n    /**\n     * Add serialize filter.\n     *\n     * @param filter the filter\n     * @see FastJsonConfig#setSerializeFilters(SerializeFilter...)\n     * @deprecated\n     */\n    @Deprecated\n    public void addSerializeFilter(SerializeFilter filter) {\n        if (filter == null) {\n            return;\n        }\n\n        int length = this.fastJsonConfig.getSerializeFilters().length;\n        SerializeFilter[] filters = new SerializeFilter[length + 1];\n        System.arraycopy(this.fastJsonConfig.getSerializeFilters(), 0, filters, 0, length);\n        filters[filters.length - 1] = filter;\n        this.fastJsonConfig.setSerializeFilters(filters);\n    }\n\n    @Override\n    protected boolean supports(Class<?> clazz) {\n        return true;\n    }\n\n\n    public boolean canRead(Type type, Class<?> contextClass, MediaType mediaType) {\n        return super.canRead(contextClass, mediaType);\n    }\n\n\n    public boolean canWrite(Type type, Class<?> clazz, MediaType mediaType) {\n        return super.canWrite(clazz, mediaType);\n    }\n\n    /*\n     * @see org.springframework.http.converter.GenericHttpMessageConverter#read(java.lang.reflect.Type, java.lang.Class, org.springframework.http.HttpInputMessage)\n     */\n    public Object read(Type type, //\n                       Class<?> contextClass, //\n                       HttpInputMessage inputMessage //\n    ) throws IOException, HttpMessageNotReadableException {\n        return readType(getType(type, contextClass), inputMessage);\n    }\n\n    /*\n     * @see org.springframework.http.converter.GenericHttpMessageConverter.write\n     */\n    public void write(Object o, Type type, MediaType contentType, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {\n        super.write(o, contentType, outputMessage);// support StreamingHttpOutputMessage in spring4.0+\n        //writeInternal(o, outputMessage);\n    }\n\n\n    /*\n     * @see org.springframework.http.converter.AbstractHttpMessageConverter#readInternal(java.lang.Class, org.springframework.http.HttpInputMessage)\n     */\n    @Override\n    protected Object readInternal(Class<?> clazz, //\n                                  HttpInputMessage inputMessage //\n    ) throws IOException, HttpMessageNotReadableException {\n        return readType(getType(clazz, null), inputMessage);\n    }\n\n    private Object readType(Type type, HttpInputMessage inputMessage) {\n\n        try {\n            InputStream in = inputMessage.getBody();\n            return JSON.parseObject(in,\n                    fastJsonConfig.getCharset(),\n                    type,\n                    fastJsonConfig.getParserConfig(),\n                    fastJsonConfig.getParseProcess(),\n                    JSON.DEFAULT_PARSER_FEATURE,\n                    fastJsonConfig.getFeatures());\n        } catch (JSONException ex) {\n            throw new HttpMessageNotReadableException(\"JSON parse error: \" + ex.getMessage(), ex);\n        } catch (IOException ex) {\n            throw new HttpMessageNotReadableException(\"I/O error while reading input message\", ex);\n        }\n    }\n\n    @Override\n    protected void writeInternal(Object object, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {\n\n        ByteArrayOutputStream outnew = new ByteArrayOutputStream();\n        try {\n            HttpHeaders headers = outputMessage.getHeaders();\n\n            //获取全局配置的filter\n            SerializeFilter[] globalFilters = fastJsonConfig.getSerializeFilters();\n            List<SerializeFilter> allFilters = new ArrayList<SerializeFilter>(Arrays.asList(globalFilters));\n\n            boolean isJsonp = false;\n\n            //不知道为什么会有这行代码， 但是为了保持和原来的行为一致，还是保留下来\n            Object value = strangeCodeForJackson(object);\n\n            if (value instanceof FastJsonContainer) {\n                FastJsonContainer fastJsonContainer = (FastJsonContainer) value;\n                PropertyPreFilters filters = fastJsonContainer.getFilters();\n                allFilters.addAll(filters.getFilters());\n                value = fastJsonContainer.getValue();\n            }\n\n            //revise 2017-10-23 ,\n            // 保持原有的MappingFastJsonValue对象的contentType不做修改 保持旧版兼容。\n            // 但是新的JSONPObject将返回标准的contentType：application/javascript ，不对是否有function进行判断\n            if (value instanceof MappingFastJsonValue) {\n                if (!StringUtils.isEmpty(((MappingFastJsonValue) value).getJsonpFunction())) {\n                    isJsonp = true;\n                }\n            } else if (value instanceof JSONPObject) {\n                isJsonp = true;\n            }\n\n\n            int len = JSON.writeJSONStringWithFastJsonConfig(outnew, //\n                    fastJsonConfig.getCharset(), //\n                    value, //\n                    fastJsonConfig.getSerializeConfig(), //\n                    //fastJsonConfig.getSerializeFilters(), //\n                    allFilters.toArray(new SerializeFilter[allFilters.size()]),\n                    fastJsonConfig.getDateFormat(), //\n                    JSON.DEFAULT_GENERATE_FEATURE, //\n                    fastJsonConfig.getSerializerFeatures());\n\n            if (isJsonp) {\n                headers.setContentType(APPLICATION_JAVASCRIPT);\n            }\n\n            if (fastJsonConfig.isWriteContentLength() && !setLengthError) {\n                try {\n                    headers.setContentLength(len);\n                } catch (UnsupportedOperationException ex) {\n                    // skip\n                    setLengthError = true;\n                }\n            }\n\n            outnew.writeTo(outputMessage.getBody());\n\n        } catch (JSONException ex) {\n            throw new HttpMessageNotWritableException(\"Could not write JSON: \" + ex.getMessage(), ex);\n        } finally {\n            outnew.close();\n        }\n    }\n\n    private Object strangeCodeForJackson(Object obj) {\n        if (obj != null) {\n            String className = obj.getClass().getName();\n            if (\"com.fasterxml.jackson.databind.node.ObjectNode\".equals(className)) {\n                return obj.toString();\n            }\n        }\n        return obj;\n    }\n\n    protected Type getType(Type type, Class<?> contextClass) {\n        if (Spring4TypeResolvableHelper.isSupport()) {\n            return Spring4TypeResolvableHelper.getType(type, contextClass);\n        }\n\n        /**\n         * 如果type的实例不是com.alibaba.fastjson.util.ParameterizedTypeImpl,则需进行转换。\n         * 避免触发fastjson中因无法命中泛型缓存导致不断生成反序列化器引起的fullgc问题\n         */\n        if (type instanceof ParameterizedType && !(type instanceof ParameterizedTypeImpl)) {\n            type = handlerParameterizedType((ParameterizedType) type);\n        }\n        return type;\n    }\n\n    private Type handlerParameterizedType(ParameterizedType type) {\n        Type ownerType = type.getOwnerType();\n        Type rawType = type.getRawType();\n        Type[] argTypes = type.getActualTypeArguments();\n\n        for(int i = 0; i < argTypes.length; ++i) {\n            if (argTypes[i] instanceof ParameterizedType) {\n                argTypes[i] = handlerParameterizedType((ParameterizedType)argTypes[i]);\n            }\n        }\n\n        Type key = new ParameterizedTypeImpl(argTypes, ownerType, rawType);\n        return key;\n    }\n\n    private static class Spring4TypeResolvableHelper {\n        private static boolean hasClazzResolvableType;\n\n        static {\n            try {\n                Class.forName(\"org.springframework.core.ResolvableType\");\n                hasClazzResolvableType = true;\n            } catch (ClassNotFoundException e) {\n                hasClazzResolvableType = false;\n            }\n        }\n\n        private static boolean isSupport() {\n            return hasClazzResolvableType;\n        }\n\n\n        private static Type getType(Type type, Class<?> contextClass) {\n            if (contextClass != null) {\n                ResolvableType resolvedType = ResolvableType.forType(type);\n                if (type instanceof TypeVariable) {\n                    ResolvableType resolvedTypeVariable = resolveVariable((TypeVariable) type, ResolvableType.forClass(contextClass));\n                    if (resolvedTypeVariable != ResolvableType.NONE) {\n                        return resolvedTypeVariable.resolve();\n                    }\n                } else if (type instanceof ParameterizedType && resolvedType.hasUnresolvableGenerics()) {\n                    ParameterizedType parameterizedType = (ParameterizedType) type;\n                    Class<?>[] generics = new Class[parameterizedType.getActualTypeArguments().length];\n                    Type[] typeArguments = parameterizedType.getActualTypeArguments();\n\n                    for (int i = 0; i < typeArguments.length; ++i) {\n                        Type typeArgument = typeArguments[i];\n                        if (typeArgument instanceof TypeVariable) {\n                            ResolvableType resolvedTypeArgument = resolveVariable((TypeVariable) typeArgument, ResolvableType.forClass(contextClass));\n                            if (resolvedTypeArgument != ResolvableType.NONE) {\n                                generics[i] = resolvedTypeArgument.resolve();\n                            } else {\n                                generics[i] = ResolvableType.forType(typeArgument).resolve();\n                            }\n                        } else {\n                            generics[i] = ResolvableType.forType(typeArgument).resolve();\n                        }\n                    }\n\n                    return ResolvableType.forClassWithGenerics(resolvedType.getRawClass(), generics).getType();\n                }\n            }\n\n            return type;\n        }\n\n        private static ResolvableType resolveVariable(TypeVariable<?> typeVariable, ResolvableType contextType) {\n            ResolvableType resolvedType;\n            if (contextType.hasGenerics()) {\n                resolvedType = ResolvableType.forType(typeVariable, contextType);\n                if (resolvedType.resolve() != null) {\n                    return resolvedType;\n                }\n            }\n\n            ResolvableType superType = contextType.getSuperType();\n            if (superType != ResolvableType.NONE) {\n                resolvedType = resolveVariable(typeVariable, superType);\n                if (resolvedType.resolve() != null) {\n                    return resolvedType;\n                }\n            }\n            for (ResolvableType ifc : contextType.getInterfaces()) {\n                resolvedType = resolveVariable(typeVariable, ifc);\n                if (resolvedType.resolve() != null) {\n                    return resolvedType;\n                }\n            }\n            return ResolvableType.NONE;\n        }\n    }\n\n\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter4.java",
    "content": "package com.alibaba.fastjson.support.spring;\r\n\r\nimport org.springframework.http.HttpInputMessage;\r\nimport org.springframework.http.HttpOutputMessage;\r\nimport org.springframework.http.MediaType;\r\nimport org.springframework.http.converter.HttpMessageNotReadableException;\r\nimport org.springframework.http.converter.HttpMessageNotWritableException;\r\n\r\nimport java.io.IOException;\r\nimport java.lang.reflect.Type;\r\n\r\n\r\n/**\r\n * keep the class for compatibility\r\n * @see FastJsonHttpMessageConverter\r\n */\r\n@Deprecated\r\npublic class FastJsonHttpMessageConverter4 extends FastJsonHttpMessageConverter {\r\n    @Override\r\n    protected boolean supports(Class<?> clazz) {\r\n        return super.supports(clazz);\r\n    }\r\n\r\n    @Override\r\n    public boolean canRead(Type type, Class<?> contextClass, MediaType mediaType) {\r\n        return super.canRead(type, contextClass, mediaType);\r\n    }\r\n\r\n    @Override\r\n    public boolean canWrite(Type type, Class<?> clazz, MediaType mediaType) {\r\n        return super.canWrite(type, clazz, mediaType);\r\n    }\r\n\r\n    @Override\r\n    public Object read(Type type, Class<?> contextClass, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {\r\n        return super.read(type, contextClass, inputMessage);\r\n    }\r\n\r\n    @Override\r\n    public void write(Object o, Type type, MediaType contentType, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {\r\n        super.write(o, type, contentType, outputMessage);\r\n    }\r\n\r\n    @Override\r\n    protected Object readInternal(Class<?> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {\r\n        return super.readInternal(clazz, inputMessage);\r\n    }\r\n\r\n    @Override\r\n    protected void writeInternal(Object object, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {\r\n        super.writeInternal(object, outputMessage);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/spring/FastJsonJsonView.java",
    "content": "package com.alibaba.fastjson.support.spring;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONPObject;\nimport com.alibaba.fastjson.serializer.SerializeFilter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.fastjson.support.config.FastJsonConfig;\nimport com.alibaba.fastjson.util.IOUtils;\nimport org.springframework.util.Assert;\nimport org.springframework.util.CollectionUtils;\nimport org.springframework.validation.BindingResult;\nimport org.springframework.web.servlet.view.AbstractView;\n\nimport javax.servlet.ServletOutputStream;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\nimport java.io.ByteArrayOutputStream;\nimport java.nio.charset.Charset;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Set;\nimport java.util.regex.Pattern;\n\n/**\n * Fastjson for Spring MVC View.\n *\n * @author libinsong1204@gmail.com\n * @author VictorZeng\n * @see AbstractView\n * @since 1.2.9\n */\n\npublic class FastJsonJsonView extends AbstractView {\n\n\n    /**\n     * default content type\n     */\n    public static final String DEFAULT_CONTENT_TYPE = \"application/json;charset=UTF-8\";\n\n    /**\n     * Default content type for JSONP: \"application/javascript\".\n     */\n    public static final String DEFAULT_JSONP_CONTENT_TYPE = \"application/javascript\";\n\n    /**\n     * Pattern for validating jsonp callback parameter values.\n     */\n    private static final Pattern CALLBACK_PARAM_PATTERN = Pattern.compile(\"[0-9A-Za-z_\\\\.]*\");\n\n    @Deprecated\n    protected Charset charset = Charset.forName(\"UTF-8\");\n\n    @Deprecated\n    protected SerializerFeature[] features = new SerializerFeature[0];\n\n    @Deprecated\n    protected SerializeFilter[] filters = new SerializeFilter[0];\n\n    @Deprecated\n    protected String dateFormat;\n\n    /**\n     * renderedAttributes\n     */\n    private Set<String> renderedAttributes;\n\n    /**\n     * disableCaching\n     */\n    private boolean disableCaching = true;\n\n    /**\n     * updateContentLength\n     */\n    private boolean updateContentLength = true;\n\n    /**\n     * extractValueFromSingleKeyModel\n     */\n    private boolean extractValueFromSingleKeyModel = false;\n\n    /**\n     * with fastJson config\n     */\n    private FastJsonConfig fastJsonConfig = new FastJsonConfig();\n\n    /**\n     * jsonp parameter name\n     */\n    private String[] jsonpParameterNames = {\"jsonp\", \"callback\"};\n\n    /**\n     * Set default param.\n     */\n    public FastJsonJsonView() {\n\n        setContentType(DEFAULT_CONTENT_TYPE);\n        setExposePathVariables(false);\n    }\n\n    /**\n     * @return the fastJsonConfig.\n     * @since 1.2.11\n     */\n    public FastJsonConfig getFastJsonConfig() {\n        return fastJsonConfig;\n    }\n\n    /**\n     * @param fastJsonConfig the fastJsonConfig to set.\n     * @since 1.2.11\n     */\n    public void setFastJsonConfig(FastJsonConfig fastJsonConfig) {\n        this.fastJsonConfig = fastJsonConfig;\n    }\n\n    /**\n     * Sets serializer feature.\n     *\n     * @param features the features\n     * @see FastJsonConfig#setSerializerFeatures(SerializerFeature...)\n     * @deprecated\n     */\n    @Deprecated\n    public void setSerializerFeature(SerializerFeature... features) {\n        this.fastJsonConfig.setSerializerFeatures(features);\n    }\n\n    /**\n     * Gets charset.\n     *\n     * @return the charset\n     * @see FastJsonConfig#getCharset()\n     * @deprecated\n     */\n    @Deprecated\n    public Charset getCharset() {\n        return this.fastJsonConfig.getCharset();\n    }\n\n    /**\n     * Sets charset.\n     *\n     * @param charset the charset\n     * @see FastJsonConfig#setCharset(Charset)\n     * @deprecated\n     */\n    @Deprecated\n    public void setCharset(Charset charset) {\n        this.fastJsonConfig.setCharset(charset);\n    }\n\n    /**\n     * Gets date format.\n     *\n     * @return the date format\n     * @see FastJsonConfig#getDateFormat()\n     * @deprecated\n     */\n    @Deprecated\n    public String getDateFormat() {\n        return this.fastJsonConfig.getDateFormat();\n    }\n\n    /**\n     * Sets date format.\n     *\n     * @param dateFormat the date format\n     * @see FastJsonConfig#setDateFormat(String)\n     * @deprecated\n     */\n    @Deprecated\n    public void setDateFormat(String dateFormat) {\n        this.fastJsonConfig.setDateFormat(dateFormat);\n    }\n\n    /**\n     * Get features serializer feature [].\n     *\n     * @return the serializer feature []\n     * @see FastJsonConfig#getSerializerFeatures()\n     * @deprecated\n     */\n    @Deprecated\n    public SerializerFeature[] getFeatures() {\n        return this.fastJsonConfig.getSerializerFeatures();\n    }\n\n    /**\n     * Sets features.\n     *\n     * @param features the features\n     * @see FastJsonConfig#setSerializerFeatures(SerializerFeature...)\n     * @deprecated\n     */\n    @Deprecated\n    public void setFeatures(SerializerFeature... features) {\n        this.fastJsonConfig.setSerializerFeatures(features);\n    }\n\n    /**\n     * Get filters serialize filter [].\n     *\n     * @return the serialize filter []\n     * @see FastJsonConfig#getSerializeFilters()\n     * @deprecated\n     */\n    @Deprecated\n    public SerializeFilter[] getFilters() {\n        return this.fastJsonConfig.getSerializeFilters();\n    }\n\n    /**\n     * Sets filters.\n     *\n     * @param filters the filters\n     * @see FastJsonConfig#setSerializeFilters(SerializeFilter...)\n     * @deprecated\n     */\n    @Deprecated\n    public void setFilters(SerializeFilter... filters) {\n        this.fastJsonConfig.setSerializeFilters(filters);\n    }\n\n    /**\n     * Set renderedAttributes.\n     *\n     * @param renderedAttributes renderedAttributes\n     */\n    public void setRenderedAttributes(Set<String> renderedAttributes) {\n        this.renderedAttributes = renderedAttributes;\n    }\n\n    /**\n     * Check extractValueFromSingleKeyModel.\n     *\n     * @return extractValueFromSingleKeyModel\n     */\n    public boolean isExtractValueFromSingleKeyModel() {\n        return extractValueFromSingleKeyModel;\n    }\n\n    /**\n     * Set extractValueFromSingleKeyModel.\n     *\n     * @param extractValueFromSingleKeyModel\n     */\n    public void setExtractValueFromSingleKeyModel(boolean extractValueFromSingleKeyModel) {\n        this.extractValueFromSingleKeyModel = extractValueFromSingleKeyModel;\n    }\n\n    /**\n     * Set JSONP request parameter names. Each time a request has one of those\n     * parameters, the resulting JSON will be wrapped into a function named as\n     * specified by the JSONP request parameter value.\n     * <p>The parameter names configured by default are \"jsonp\" and \"callback\".\n     *\n     * @see <a href=\"http://en.wikipedia.org/wiki/JSONP\">JSONP Wikipedia article</a>\n     * @since 4.1\n     */\n    public void setJsonpParameterNames(Set<String> jsonpParameterNames) {\n        Assert.notEmpty(jsonpParameterNames, \"jsonpParameterName cannot be empty\");\n        this.jsonpParameterNames = jsonpParameterNames.toArray(new String[jsonpParameterNames.size()]);\n    }\n\n\n    private String getJsonpParameterValue(HttpServletRequest request) {\n        if (this.jsonpParameterNames != null) {\n            for (String name : this.jsonpParameterNames) {\n                String value = request.getParameter(name);\n\n                if (IOUtils.isValidJsonpQueryParam(value)) {\n                    return value;\n                }\n\n                if (logger.isDebugEnabled()) {\n                    logger.debug(\"Ignoring invalid jsonp parameter value: \" + value);\n                }\n            }\n        }\n        return null;\n    }\n\n\n    @Override\n    protected void renderMergedOutputModel(Map<String, Object> model, //\n                                           HttpServletRequest request, //\n                                           HttpServletResponse response) throws Exception {\n        Object value = filterModel(model);\n        String jsonpParameterValue = getJsonpParameterValue(request);\n        if (jsonpParameterValue != null) {\n            JSONPObject jsonpObject = new JSONPObject(jsonpParameterValue);\n            jsonpObject.addParameter(value);\n            value = jsonpObject;\n        }\n\n        ByteArrayOutputStream outnew = new ByteArrayOutputStream();\n\n        int len = JSON.writeJSONStringWithFastJsonConfig(outnew, //\n                fastJsonConfig.getCharset(), //\n                value, //\n                fastJsonConfig.getSerializeConfig(), //\n                fastJsonConfig.getSerializeFilters(), //\n                fastJsonConfig.getDateFormat(), //\n                JSON.DEFAULT_GENERATE_FEATURE, //\n                fastJsonConfig.getSerializerFeatures());\n\n        if (this.updateContentLength) {\n            // Write content length (determined via byte array).\n            response.setContentLength(len);\n        }\n\n        // Flush byte array to servlet output stream.\n        ServletOutputStream out = response.getOutputStream();\n        outnew.writeTo(out);\n        outnew.close();\n        out.flush();\n    }\n\n    @Override\n    protected void prepareResponse(HttpServletRequest request, //\n                                   HttpServletResponse response) {\n\n        setResponseContentType(request, response);\n        response.setCharacterEncoding(fastJsonConfig.getCharset().name());\n        if (this.disableCaching) {\n            response.addHeader(\"Pragma\", \"no-cache\");\n            response.addHeader(\"Cache-Control\", \"no-cache, no-store, max-age=0\");\n            response.addDateHeader(\"Expires\", 1L);\n        }\n    }\n\n    /**\n     * Disables caching of the generated JSON.\n     * <p>\n     * Default is {@code true}, which will prevent the client from caching the\n     * generated JSON.\n     */\n    public void setDisableCaching(boolean disableCaching) {\n        this.disableCaching = disableCaching;\n    }\n\n    /**\n     * Whether to update the 'Content-Length' header of the response. When set\n     * to {@code true}, the response is buffered in order to determine the\n     * content length and set the 'Content-Length' header of the response.\n     * <p>\n     * The default setting is {@code false}.\n     */\n    public void setUpdateContentLength(boolean updateContentLength) {\n        this.updateContentLength = updateContentLength;\n    }\n\n    /**\n     * Filters out undesired attributes from the given model. The return value\n     * can be either another {@link Map}, or a single value object.\n     * <p>\n     * Default implementation removes {@link BindingResult} instances and\n     * entries not included in the {@link #setRenderedAttributes(Set)\n     * renderedAttributes} property.\n     *\n     * @param model the model, as passed on to {@link #renderMergedOutputModel}\n     * @return the object to be rendered\n     */\n    protected Object filterModel(Map<String, Object> model) {\n        Map<String, Object> result = new HashMap<String, Object>(model.size());\n        Set<String> renderedAttributes = !CollectionUtils.isEmpty(this.renderedAttributes) ? //\n                this.renderedAttributes //\n                : model.keySet();\n\n        for (Map.Entry<String, Object> entry : model.entrySet()) {\n            if (!(entry.getValue() instanceof BindingResult)\n                    && renderedAttributes.contains(entry.getKey())) {\n                result.put(entry.getKey(), entry.getValue());\n            }\n        }\n        if (extractValueFromSingleKeyModel) {\n            if (result.size() == 1) {\n                for (Map.Entry<String, Object> entry : result.entrySet()) {\n                    return entry.getValue();\n                }\n            }\n        }\n        return result;\n    }\n\n    @Override\n    protected void setResponseContentType(HttpServletRequest request, HttpServletResponse response) {\n        if (getJsonpParameterValue(request) != null) {\n            response.setContentType(DEFAULT_JSONP_CONTENT_TYPE);\n        } else {\n            super.setResponseContentType(request, response);\n        }\n    }\n\n\n}"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/spring/FastJsonRedisSerializer.java",
    "content": "package com.alibaba.fastjson.support.spring;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.support.config.FastJsonConfig;\nimport org.springframework.data.redis.serializer.RedisSerializer;\nimport org.springframework.data.redis.serializer.SerializationException;\n\n/**\n * {@link RedisSerializer} FastJson Impl\n *\n * @author lihengming\n * @author Victor.Zxy\n * @since 1.2.36\n */\npublic class FastJsonRedisSerializer<T> implements RedisSerializer<T> {\n    private FastJsonConfig fastJsonConfig = new FastJsonConfig();\n    private Class<T> type;\n\n    public FastJsonRedisSerializer(Class<T> type) {\n        this.type = type;\n    }\n\n    public FastJsonConfig getFastJsonConfig() {\n        return fastJsonConfig;\n    }\n\n    public void setFastJsonConfig(FastJsonConfig fastJsonConfig) {\n        this.fastJsonConfig = fastJsonConfig;\n    }\n\n    @Override\n    public byte[] serialize(T t) throws SerializationException {\n        if (t == null) {\n            return new byte[0];\n        }\n        try {\n            return JSON.toJSONBytesWithFastJsonConfig(\n                    fastJsonConfig.getCharset(),\n                    t,\n                    fastJsonConfig.getSerializeConfig(),\n                    fastJsonConfig.getSerializeFilters(),\n                    fastJsonConfig.getDateFormat(),\n                    JSON.DEFAULT_GENERATE_FEATURE,\n                    fastJsonConfig.getSerializerFeatures()\n            );\n        } catch (Exception ex) {\n            throw new SerializationException(\"Could not serialize: \" + ex.getMessage(), ex);\n        }\n    }\n\n    @Override\n    public T deserialize(byte[] bytes) throws SerializationException {\n        if (bytes == null || bytes.length == 0) {\n            return null;\n        }\n        try {\n            return (T) JSON.parseObject(\n                    bytes,\n                    fastJsonConfig.getCharset(),\n                    type,\n                    fastJsonConfig.getParserConfig(),\n                    fastJsonConfig.getParseProcess(),\n                    JSON.DEFAULT_PARSER_FEATURE,\n                    fastJsonConfig.getFeatures()\n            );\n        } catch (Exception ex) {\n            throw new SerializationException(\"Could not deserialize: \" + ex.getMessage(), ex);\n        }\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/spring/FastJsonViewResponseBodyAdvice.java",
    "content": "package com.alibaba.fastjson.support.spring;\n\nimport com.alibaba.fastjson.support.spring.annotation.FastJsonFilter;\nimport com.alibaba.fastjson.support.spring.annotation.FastJsonView;\nimport org.springframework.core.MethodParameter;\nimport org.springframework.core.annotation.Order;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.converter.HttpMessageConverter;\nimport org.springframework.http.server.ServerHttpRequest;\nimport org.springframework.http.server.ServerHttpResponse;\nimport org.springframework.web.bind.annotation.ControllerAdvice;\nimport org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;\n\n/**\n * A convenient base class for {@code ResponseBodyAdvice} implementations\n * that customize the response before JSON serialization with {@link FastJsonHttpMessageConverter4}'s concrete\n * subclasses.\n * <p>\n *\n * @author yanquanyu\n * @author liuming\n */\n@Order\n@ControllerAdvice\npublic class FastJsonViewResponseBodyAdvice implements ResponseBodyAdvice<Object> {\n\n    public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {\n        return FastJsonHttpMessageConverter.class.isAssignableFrom(converterType) && returnType.hasMethodAnnotation(FastJsonView.class);\n    }\n\n    public FastJsonContainer beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {\n        FastJsonContainer container = getOrCreateContainer(body);\n        beforeBodyWriteInternal(container, selectedContentType, returnType, request, response);\n        return container;\n    }\n\n    private FastJsonContainer getOrCreateContainer(Object body) {\n        return (body instanceof FastJsonContainer ? (FastJsonContainer) body : new FastJsonContainer(body));\n\n    }\n\n    protected void beforeBodyWriteInternal(FastJsonContainer container, MediaType contentType,\n                                           MethodParameter returnType, ServerHttpRequest request, ServerHttpResponse response) {\n        FastJsonView annotation = returnType.getMethodAnnotation(FastJsonView.class);\n\n        FastJsonFilter[] include = annotation.include();\n        FastJsonFilter[] exclude = annotation.exclude();\n        PropertyPreFilters filters = new PropertyPreFilters();\n        for (FastJsonFilter item : include) {\n            filters.addFilter(item.clazz(),item.props());\n        }\n        for (FastJsonFilter item : exclude) {\n            filters.addFilter(item.clazz()).addExcludes(item.props());\n        }\n        container.setFilters(filters);\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/spring/FastJsonpHttpMessageConverter4.java",
    "content": "package com.alibaba.fastjson.support.spring;\n\nimport org.springframework.http.HttpInputMessage;\nimport org.springframework.http.HttpOutputMessage;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.converter.HttpMessageNotReadableException;\nimport org.springframework.http.converter.HttpMessageNotWritableException;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\n\n/**\n * keep the class for compatibility\n * @see FastJsonHttpMessageConverter\n */\n@Deprecated\npublic class FastJsonpHttpMessageConverter4 extends FastJsonHttpMessageConverter {\n    @Override\n    protected boolean supports(Class<?> clazz) {\n        return super.supports(clazz);\n    }\n\n    @Override\n    public boolean canRead(Type type, Class<?> contextClass, MediaType mediaType) {\n        return super.canRead(type, contextClass, mediaType);\n    }\n\n    @Override\n    public boolean canWrite(Type type, Class<?> clazz, MediaType mediaType) {\n        return super.canWrite(type, clazz, mediaType);\n    }\n\n    @Override\n    public Object read(Type type, Class<?> contextClass, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {\n        return super.read(type, contextClass, inputMessage);\n    }\n\n    @Override\n    public void write(Object o, Type type, MediaType contentType, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {\n        super.write(o, type, contentType, outputMessage);\n    }\n\n    @Override\n    protected Object readInternal(Class<?> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {\n        return super.readInternal(clazz, inputMessage);\n    }\n\n    @Override\n    protected void writeInternal(Object object, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {\n        super.writeInternal(object, outputMessage);\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/spring/FastJsonpResponseBodyAdvice.java",
    "content": "package com.alibaba.fastjson.support.spring;\n\nimport org.springframework.core.MethodParameter;\nimport org.springframework.core.annotation.Order;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.converter.HttpMessageConverter;\nimport org.springframework.http.server.ServerHttpRequest;\nimport org.springframework.http.server.ServerHttpResponse;\nimport org.springframework.http.server.ServletServerHttpRequest;\nimport org.springframework.util.Assert;\nimport org.springframework.util.ObjectUtils;\nimport org.springframework.web.bind.annotation.ControllerAdvice;\nimport org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;\n\nimport javax.servlet.http.HttpServletRequest;\nimport java.util.regex.Pattern;\n\n/**\n * A convenient base class for {@code ResponseBodyAdvice} implementations\n * that customize the response before JSON serialization with {@link FastJsonpHttpMessageConverter4}'s concrete\n * subclasses.\n * <p>\n * Compatible Spring MVC version 4.2+\n *\n * @author Jerry.Chen\n * @see JSONPResponseBodyAdvice\n * @since 1.2.20\n */\n@Deprecated\n@Order(Integer.MIN_VALUE) //before FastJsonViewResponseBodyAdvice\n@ControllerAdvice\npublic class FastJsonpResponseBodyAdvice implements ResponseBodyAdvice<Object> {\n    /**\n     * Pattern for validating jsonp callback parameter values.\n     */\n    private static final Pattern CALLBACK_PARAM_PATTERN = Pattern.compile(\"[0-9A-Za-z_\\\\.]*\");\n    private final String[] jsonpQueryParamNames;\n    /**\n     * Default JSONP query param names: callback/jsonp\n     */\n    public static final String[] DEFAULT_JSONP_QUERY_PARAM_NAMES = {\"callback\", \"jsonp\"};\n\n    public FastJsonpResponseBodyAdvice() {\n        this.jsonpQueryParamNames = DEFAULT_JSONP_QUERY_PARAM_NAMES;\n    }\n\n    public FastJsonpResponseBodyAdvice(String... queryParamNames) {\n        Assert.isTrue(!ObjectUtils.isEmpty(queryParamNames), \"At least one query param name is required\");\n        this.jsonpQueryParamNames = queryParamNames;\n    }\n\n    public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {\n        return FastJsonHttpMessageConverter.class.isAssignableFrom(converterType);\n    }\n\n    public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType,\n                                  Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request,\n                                  ServerHttpResponse response) {\n        MappingFastJsonValue container = getOrCreateContainer(body);\n        beforeBodyWriteInternal(container, selectedContentType, returnType, request, response);\n        return container;\n    }\n\n    /**\n     * Wrap the body in a {@link MappingFastJsonValue} value container (for providing\n     * additional serialization instructions) or simply cast it if already wrapped.\n     */\n    protected MappingFastJsonValue getOrCreateContainer(Object body) {\n        return (body instanceof MappingFastJsonValue ? (MappingFastJsonValue) body : new MappingFastJsonValue(body));\n    }\n\n    /**\n     * Invoked only if the converter type is {@code FastJsonpHttpMessageConverter4}.\n     */\n    public void beforeBodyWriteInternal(MappingFastJsonValue bodyContainer, MediaType contentType,\n                                        MethodParameter returnType, ServerHttpRequest request, ServerHttpResponse response) {\n        HttpServletRequest servletRequest = ((ServletServerHttpRequest) request).getServletRequest();\n        for (String name : this.jsonpQueryParamNames) {\n            String value = servletRequest.getParameter(name);\n            if (value != null) {\n                if (!isValidJsonpQueryParam(value)) {\n                    continue;\n                }\n                // MediaType contentTypeToUse = getContentType(contentType, request, response);\n                // response.getHeaders().setContentType(contentTypeToUse);\n                bodyContainer.setJsonpFunction(value);\n                break;\n            }\n        }\n    }\n\n    /**\n     * Validate the jsonp query parameter value. The default implementation\n     * returns true if it consists of digits, letters, or \"_\" and \".\".\n     * Invalid parameter values are ignored.\n     *\n     * @param value the query param value, never {@code null}\n     */\n    protected boolean isValidJsonpQueryParam(String value) {\n        return CALLBACK_PARAM_PATTERN.matcher(value).matches();\n    }\n\n    /**\n     * Return the content type to set the response to.\n     * This implementation always returns \"application/javascript\".\n     *\n     * @param contentType the content type selected through content negotiation\n     * @param request     the current request\n     * @param response    the current response\n     * @return the content type to set the response to\n     */\n    protected MediaType getContentType(MediaType contentType, ServerHttpRequest request, ServerHttpResponse response) {\n        return new MediaType(\"application\", \"javascript\");\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/spring/FastjsonSockJsMessageCodec.java",
    "content": "package com.alibaba.fastjson.support.spring;\n\nimport java.io.IOException;\nimport java.io.InputStream;\n\nimport org.springframework.web.socket.sockjs.frame.AbstractSockJsMessageCodec;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\npublic class FastjsonSockJsMessageCodec extends AbstractSockJsMessageCodec {\n\n    public String[] decode(String content) throws IOException {\n        return JSON.parseObject(content, String[].class);\n    }\n\n    public String[] decodeInputStream(InputStream content) throws IOException {\n        return JSON.parseObject(content, String[].class);\n    }\n\n    @Override\n    protected char[] applyJsonQuoting(String content) {\n        SerializeWriter out = new SerializeWriter();\n        try {\n            JSONSerializer serializer = new JSONSerializer(out);\n            serializer.write(content);\n            return out.toCharArrayForSpringWebSocket();\n        } finally {\n            out.close();\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/spring/GenericFastJsonRedisSerializer.java",
    "content": "package com.alibaba.fastjson.support.spring;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.fastjson.util.IOUtils;\nimport org.springframework.data.redis.serializer.RedisSerializer;\nimport org.springframework.data.redis.serializer.SerializationException;\n\n/**\n * {@link RedisSerializer} FastJson Generic Impl\n * @author lihengming\n * @since 1.2.36\n */\npublic class GenericFastJsonRedisSerializer implements RedisSerializer<Object> {\n    private final static ParserConfig defaultRedisConfig = new ParserConfig();\n    static { defaultRedisConfig.setAutoTypeSupport(true);}\n\n    public byte[] serialize(Object object) throws SerializationException {\n        if (object == null) {\n            return new byte[0];\n        }\n        try {\n            return JSON.toJSONBytes(object, SerializerFeature.WriteClassName);\n        } catch (Exception ex) {\n            throw new SerializationException(\"Could not serialize: \" + ex.getMessage(), ex);\n        }\n    }\n\n    public Object deserialize(byte[] bytes) throws SerializationException {\n        if (bytes == null || bytes.length == 0) {\n            return null;\n        }\n        try {\n            return JSON.parseObject(new String(bytes, IOUtils.UTF8), Object.class, defaultRedisConfig);\n        } catch (Exception ex) {\n            throw new SerializationException(\"Could not deserialize: \" + ex.getMessage(), ex);\n        }\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/spring/JSONPResponseBodyAdvice.java",
    "content": "package com.alibaba.fastjson.support.spring;\n\nimport com.alibaba.fastjson.JSONPObject;\nimport com.alibaba.fastjson.support.spring.annotation.ResponseJSONP;\nimport com.alibaba.fastjson.util.IOUtils;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.springframework.core.MethodParameter;\nimport org.springframework.core.annotation.Order;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.converter.HttpMessageConverter;\nimport org.springframework.http.server.ServerHttpRequest;\nimport org.springframework.http.server.ServerHttpResponse;\nimport org.springframework.http.server.ServletServerHttpRequest;\nimport org.springframework.web.bind.annotation.ControllerAdvice;\nimport org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;\n\nimport javax.servlet.http.HttpServletRequest;\n\n/**\n * Created by SongLing.Dong on 7/22/2017.\n * <p>\n * Wrap with the return object from method annotated by <code>@ResponseJSONP</code>\n * in order to be serialized into jsonp format.\n * </p>\n * <p>\n * <p>\n * url: /path/to/your/api?<b>callback=functionName</b>\n * </p>\n *\n * @see JSONPObject\n * @see ResponseJSONP\n * @since Spring 4.2 when ResponseBodyAdvice is supported.\n * <p>\n * In Spring 3.x, use method directly return a <code>JSONPObject</code> instead.\n * </p>\n */\n@Order(Integer.MIN_VALUE)//before FastJsonViewResponseBodyAdvice\n@ControllerAdvice\npublic class JSONPResponseBodyAdvice implements ResponseBodyAdvice<Object> {\n\n    public final Log logger = LogFactory.getLog(this.getClass());\n\n    public JSONPResponseBodyAdvice() {\n    }\n\n\n    public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {\n\n\n        return FastJsonHttpMessageConverter.class.isAssignableFrom(converterType)\n                &&\n                (returnType.getContainingClass().isAnnotationPresent(ResponseJSONP.class) || returnType.hasMethodAnnotation(ResponseJSONP.class));\n    }\n\n    public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType,\n                                  Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request,\n                                  ServerHttpResponse response) {\n\n        ResponseJSONP responseJsonp = returnType.getMethodAnnotation(ResponseJSONP.class);\n        if(responseJsonp == null){\n            responseJsonp = returnType.getContainingClass().getAnnotation(ResponseJSONP.class);\n        }\n\n        HttpServletRequest servletRequest = ((ServletServerHttpRequest) request).getServletRequest();\n        String callbackMethodName = servletRequest.getParameter(responseJsonp.callback());\n\n        if (!IOUtils.isValidJsonpQueryParam(callbackMethodName)) {\n            if (logger.isDebugEnabled()) {\n                logger.debug(\"Invalid jsonp parameter value:\" + callbackMethodName);\n            }\n            callbackMethodName = null;\n        }\n\n        JSONPObject jsonpObject = new JSONPObject(callbackMethodName);\n        jsonpObject.addParameter(body);\n        beforeBodyWriteInternal(jsonpObject, selectedContentType, returnType, request, response);\n        return jsonpObject;\n    }\n\n\n    public void beforeBodyWriteInternal(JSONPObject jsonpObject, MediaType contentType,\n                                        MethodParameter returnType, ServerHttpRequest request, ServerHttpResponse response) {\n        //MediaType contentTypeToUse = getContentType(contentType, request, response);\n        //response.getHeaders().setContentType(contentTypeToUse);\n    }\n\n    /**\n     * Return the content type to set the response to.\n     * This implementation always returns \"application/javascript\".\n     *\n     * @param contentType the content type selected through content negotiation\n     * @param request     the current request\n     * @param response    the current response\n     * @return the content type to set the response to\n     */\n    protected MediaType getContentType(MediaType contentType, ServerHttpRequest request, ServerHttpResponse response) {\n        return FastJsonHttpMessageConverter.APPLICATION_JAVASCRIPT;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/spring/MappingFastJsonValue.java",
    "content": "package com.alibaba.fastjson.support.spring;\n\nimport com.alibaba.fastjson.JSONPObject;\nimport com.alibaba.fastjson.serializer.JSONSerializable;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\n\n/**\n * A simple holder for the POJO to serialize via {@link FastJsonHttpMessageConverter} along with further\n * serialization instructions to be passed in to the converter.\n *\n * <p>\n * On the server side this wrapper is added with a {@code ResponseBodyInterceptor} after content negotiation selects the\n * converter to use but before the write.\n *\n * <p>\n * On the client side, simply wrap the POJO and pass it in to the {@code RestTemplate}.\n *\n * @author Jerry.Chen\n * @since 1.2.20\n *\n * @see JSONPObject\n */\n@Deprecated\npublic class MappingFastJsonValue implements JSONSerializable {\n    private static final String SECURITY_PREFIX = \"/**/\";\n    private static final int BrowserSecureMask = SerializerFeature.BrowserSecure.mask;\n\n    private Object value;\n    private String jsonpFunction;\n\n    /**\n     * Create a new instance wrapping the given POJO to be serialized.\n     *\n     * @param value the Object to be serialized\n     */\n    public MappingFastJsonValue(Object value) {\n        this.value = value;\n    }\n\n    /**\n     * Modify the POJO to serialize.\n     */\n    public void setValue(Object value) {\n        this.value = value;\n    }\n\n    /**\n     * Return the POJO that needs to be serialized.\n     */\n    public Object getValue() {\n        return this.value;\n    }\n\n    /**\n     * Set the name of the JSONP function name.\n     */\n    public void setJsonpFunction(String functionName) {\n        this.jsonpFunction = functionName;\n    }\n\n    /**\n     * Return the configured JSONP function name.\n     */\n    public String getJsonpFunction() {\n        return this.jsonpFunction;\n    }\n\n    public void write(JSONSerializer serializer, Object fieldName, Type fieldType, int features) throws IOException {\n        SerializeWriter writer = serializer.out;\n\n        if(jsonpFunction == null){\n            serializer.write(value);\n            return;\n        }\n\n\n        if ((features & BrowserSecureMask) != 0 || (writer.isEnabled(BrowserSecureMask))) {\n            writer.write(SECURITY_PREFIX);\n        }\n\n        writer.write(jsonpFunction);\n        writer.write('(');\n        serializer.write(value);\n        writer.write(')');\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/spring/PropertyPreFilters.java",
    "content": "package com.alibaba.fastjson.support.spring;\n\nimport com.alibaba.fastjson.serializer.SimplePropertyPreFilter;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * {@link SimplePropertyPreFilter}的一个简单封装\n * @author  yanquanyu\n * @author  liuming\n */\npublic class PropertyPreFilters {\n    private List<MySimplePropertyPreFilter> filters = new ArrayList<MySimplePropertyPreFilter>();\n\n\n    public MySimplePropertyPreFilter addFilter(){\n        MySimplePropertyPreFilter filter = new MySimplePropertyPreFilter();\n        filters.add(filter);\n        return filter;\n    }\n\n    public MySimplePropertyPreFilter addFilter(String... properties){\n        MySimplePropertyPreFilter filter = new MySimplePropertyPreFilter(properties);\n        filters.add(filter);\n        return filter;\n    }\n\n    public MySimplePropertyPreFilter addFilter(Class<?> clazz, String... properties){\n        MySimplePropertyPreFilter filter = new MySimplePropertyPreFilter(clazz,properties);\n        filters.add(filter);\n        return filter;\n    }\n\n    public List<MySimplePropertyPreFilter> getFilters() {\n        return filters;\n    }\n\n    public void setFilters(List<MySimplePropertyPreFilter> filters) {\n        this.filters = filters;\n    }\n\n    public MySimplePropertyPreFilter[] toFilters(){\n        return filters.toArray(new MySimplePropertyPreFilter[]{});\n    }\n\n    public class MySimplePropertyPreFilter extends SimplePropertyPreFilter {\n\n        public MySimplePropertyPreFilter(){}\n\n        public MySimplePropertyPreFilter(String... properties){\n            super(properties);\n        }\n\n        public MySimplePropertyPreFilter(Class<?> clazz, String... properties){\n            super(clazz,properties);\n        }\n\n        public MySimplePropertyPreFilter addExcludes(String... filters){\n            for (int i = 0; i < filters.length; i++) {\n                this.getExcludes().add(filters[i]);\n            }\n            return this;\n        }\n\n        public MySimplePropertyPreFilter addIncludes(String... filters){\n            for (int i = 0; i < filters.length; i++) {\n                this.getIncludes().add(filters[i]);\n            }\n            return this;\n        }\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/spring/annotation/FastJsonFilter.java",
    "content": "package com.alibaba.fastjson.support.spring.annotation;\n\nimport java.lang.annotation.*;\n\n/**\n * <pre>\n * 设置过滤对象对应的class和对应的属性\n * </pre>\n * @author yanquanyu\n * @author liuming\n */\n@Target(ElementType.ANNOTATION_TYPE)\n@Retention(RetentionPolicy.RUNTIME)\n@Documented\npublic @interface FastJsonFilter {\n    Class<?> clazz();\n    String[] props();\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/spring/annotation/FastJsonView.java",
    "content": "package com.alibaba.fastjson.support.spring.annotation;\n\nimport java.lang.annotation.*;\n\n/**\n * <pre>\n * 一个放置到 {@link org.springframework.stereotype.Controller Controller}方法上的注解.\n * 设置返回对象针对某个类需要排除或者包括的字段\n * 例如：\n * <code>&#064;FastJsonView(exclude = {&#064;FastJsonFilter(clazz = JSON.class,props = {\"data\"})})</code>\n *\n * </pre>\n * @author yanquanyu\n * @author liuming\n */\n@Target({ElementType.METHOD})\n@Retention(RetentionPolicy.RUNTIME)\n@Documented\npublic @interface FastJsonView {\n    FastJsonFilter[] include() default {};\n    FastJsonFilter[] exclude() default {};\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/spring/annotation/ResponseJSONP.java",
    "content": "package com.alibaba.fastjson.support.spring.annotation;\n\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport java.lang.annotation.*;\n\n/**\n * Created by SongLing.Dong on 7/22/2017.\n * @see com.alibaba.fastjson.support.spring.JSONPResponseBodyAdvice\n */\n@Documented\n@Target({ElementType.TYPE,ElementType.METHOD})\n@Retention(RetentionPolicy.RUNTIME)\n@ResponseBody\npublic @interface ResponseJSONP {\n    /**\n     * The parameter's name of the callback method.\n     */\n    String callback() default \"callback\";\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/spring/messaging/MappingFastJsonMessageConverter.java",
    "content": "package com.alibaba.fastjson.support.spring.messaging;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.support.config.FastJsonConfig;\nimport org.springframework.messaging.Message;\nimport org.springframework.messaging.MessageHeaders;\nimport org.springframework.messaging.converter.AbstractMessageConverter;\nimport org.springframework.util.MimeType;\n\nimport java.nio.charset.Charset;\n\n/**\n * Fastjson for Spring Messaging Json Converter.\n * <p>\n * Compatible Spring Messaging version 4+\n *\n * @author KimmKing\n * @author Victor.Zxy\n * @see AbstractMessageConverter\n * @since 1.2.47\n */\npublic class MappingFastJsonMessageConverter extends AbstractMessageConverter {\n\n    /**\n     * with fastJson config\n     */\n    private FastJsonConfig fastJsonConfig = new FastJsonConfig();\n\n    /**\n     * @return the fastJsonConfig.\n     * @since 1.2.47\n     */\n    public FastJsonConfig getFastJsonConfig() {\n        return fastJsonConfig;\n    }\n\n    /**\n     * @param fastJsonConfig the fastJsonConfig to set.\n     * @since 1.2.47\n     */\n    public void setFastJsonConfig(FastJsonConfig fastJsonConfig) {\n        this.fastJsonConfig = fastJsonConfig;\n    }\n\n    public MappingFastJsonMessageConverter() {\n        super(new MimeType(\"application\", \"json\", Charset.forName(\"UTF-8\")));\n    }\n\n    protected boolean supports(Class<?> clazz) {\n        return true;\n    }\n\n    @Override\n    protected boolean canConvertFrom(Message<?> message, Class<?> targetClass) {\n        return supports(targetClass);\n    }\n\n    @Override\n    protected boolean canConvertTo(Object payload, MessageHeaders headers) {\n        return supports(payload.getClass());\n    }\n\n    @Override\n    protected Object convertFromInternal(Message<?> message, Class<?> targetClass, Object conversionHint) {\n        // parse byte[] or String payload to Java Object\n        Object payload = message.getPayload();\n        Object obj = null;\n        if (payload instanceof byte[]) {\n            obj = JSON.parseObject((byte[]) payload, fastJsonConfig.getCharset(), targetClass, fastJsonConfig.getParserConfig(),\n                    fastJsonConfig.getParseProcess(), JSON.DEFAULT_PARSER_FEATURE, fastJsonConfig.getFeatures());\n        } else if (payload instanceof String) {\n            obj = JSON.parseObject((String) payload, targetClass, fastJsonConfig.getParserConfig(),\n                    fastJsonConfig.getParseProcess(), JSON.DEFAULT_PARSER_FEATURE, fastJsonConfig.getFeatures());\n        }\n\n        return obj;\n    }\n\n    @Override\n    protected Object convertToInternal(Object payload, MessageHeaders headers, Object conversionHint) {\n        // encode payload to json string or byte[]\n        Object obj;\n        if (byte[].class == getSerializedPayloadClass()) {\n            if (payload instanceof String && JSON.isValid((String) payload)) {\n                obj = ((String) payload).getBytes(fastJsonConfig.getCharset());\n            } else {\n                obj = JSON.toJSONBytesWithFastJsonConfig(fastJsonConfig.getCharset(), payload, fastJsonConfig.getSerializeConfig(), fastJsonConfig.getSerializeFilters(),\n                        fastJsonConfig.getDateFormat(), JSON.DEFAULT_GENERATE_FEATURE, fastJsonConfig.getSerializerFeatures());\n            }\n        } else {\n            if (payload instanceof String && JSON.isValid((String) payload)) {\n                obj = payload;\n            } else {\n                obj = JSON.toJSONString(payload, fastJsonConfig.getSerializeConfig(), fastJsonConfig.getSerializeFilters(),\n                        fastJsonConfig.getDateFormat(), JSON.DEFAULT_GENERATE_FEATURE, fastJsonConfig.getSerializerFeatures());\n            }\n        }\n\n        return obj;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/support/springfox/SwaggerJsonSerializer.java",
    "content": "package com.alibaba.fastjson.support.springfox;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.ObjectSerializer;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\nimport springfox.documentation.spring.web.json.Json;\n\n/**\n * Swagger的Json处理，解决/v2/api-docs获取不到内容导致获取不到API页面内容的问题\n *\n * @author zhaiyongchao [http://blog.didispace.com]\n * @since 1.2.15\n */\npublic class SwaggerJsonSerializer implements ObjectSerializer {\n\n    public final static SwaggerJsonSerializer instance = new SwaggerJsonSerializer();\n\n    public void write(JSONSerializer serializer, //\n                      Object object, Object fieldName, Type fieldType, int features) throws IOException {\n        SerializeWriter out = serializer.getWriter();\n        Json json = (Json) object;\n        String value = json.value();\n        out.write(value);\n    }\n\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/util/ASMClassLoader.java",
    "content": "package com.alibaba.fastjson.util;\n\nimport java.security.PrivilegedAction;\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONAware;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport com.alibaba.fastjson.JSONPathException;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.JSONStreamAware;\nimport com.alibaba.fastjson.JSONWriter;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.JSONLexer;\nimport com.alibaba.fastjson.parser.JSONLexerBase;\nimport com.alibaba.fastjson.parser.JSONReaderScanner;\nimport com.alibaba.fastjson.parser.JSONScanner;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.ParseContext;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.SymbolTable;\nimport com.alibaba.fastjson.parser.deserializer.AutowiredObjectDeserializer;\nimport com.alibaba.fastjson.parser.deserializer.DefaultFieldDeserializer;\nimport com.alibaba.fastjson.parser.deserializer.ExtraProcessable;\nimport com.alibaba.fastjson.parser.deserializer.ExtraProcessor;\nimport com.alibaba.fastjson.parser.deserializer.ExtraTypeProvider;\nimport com.alibaba.fastjson.parser.deserializer.FieldDeserializer;\nimport com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\nimport com.alibaba.fastjson.serializer.AfterFilter;\nimport com.alibaba.fastjson.serializer.BeanContext;\nimport com.alibaba.fastjson.serializer.BeforeFilter;\nimport com.alibaba.fastjson.serializer.ContextObjectSerializer;\nimport com.alibaba.fastjson.serializer.ContextValueFilter;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.JavaBeanSerializer;\nimport com.alibaba.fastjson.serializer.LabelFilter;\nimport com.alibaba.fastjson.serializer.Labels;\nimport com.alibaba.fastjson.serializer.NameFilter;\nimport com.alibaba.fastjson.serializer.ObjectSerializer;\nimport com.alibaba.fastjson.serializer.PropertyFilter;\nimport com.alibaba.fastjson.serializer.PropertyPreFilter;\nimport com.alibaba.fastjson.serializer.SerialContext;\nimport com.alibaba.fastjson.serializer.SerializeBeanInfo;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializeFilter;\nimport com.alibaba.fastjson.serializer.SerializeFilterable;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.fastjson.serializer.ValueFilter;\n\npublic class ASMClassLoader extends ClassLoader {\n\n    private static java.security.ProtectionDomain DOMAIN;\n    \n    private static Map<String, Class<?>> classMapping = new HashMap<String, Class<?>>();\n\n    static {\n        DOMAIN = (java.security.ProtectionDomain) java.security.AccessController.doPrivileged(new PrivilegedAction<Object>() {\n\n            public Object run() {\n                return ASMClassLoader.class.getProtectionDomain();\n            }\n        });\n        \n        Class<?>[] jsonClasses = new Class<?>[] {JSON.class,\n            JSONObject.class,\n            JSONArray.class,\n            JSONPath.class,\n            JSONAware.class,\n            JSONException.class,\n            JSONPathException.class,\n            JSONReader.class,\n            JSONStreamAware.class,\n            JSONWriter.class,\n            TypeReference.class,\n                    \n            FieldInfo.class,\n            TypeUtils.class,\n            IOUtils.class,\n            IdentityHashMap.class,\n            ParameterizedTypeImpl.class,\n            JavaBeanInfo.class,\n                    \n            ObjectSerializer.class,\n            JavaBeanSerializer.class,\n            SerializeFilterable.class,\n            SerializeBeanInfo.class,\n            JSONSerializer.class,\n            SerializeWriter.class,\n            SerializeFilter.class,\n            Labels.class,\n            LabelFilter.class,\n            ContextValueFilter.class,\n            AfterFilter.class,\n            BeforeFilter.class,\n            NameFilter.class,\n            PropertyFilter.class,\n            PropertyPreFilter.class,\n            ValueFilter.class,\n            SerializerFeature.class,\n            ContextObjectSerializer.class,\n            SerialContext.class,\n            SerializeConfig.class,\n                    \n            JavaBeanDeserializer.class,\n            ParserConfig.class,\n            DefaultJSONParser.class,\n            JSONLexer.class,\n            JSONLexerBase.class,\n            ParseContext.class,\n            JSONToken.class,\n            SymbolTable.class,\n            Feature.class,\n            JSONScanner.class,\n            JSONReaderScanner.class,\n                    \n            AutowiredObjectDeserializer.class,\n            ObjectDeserializer.class,\n            ExtraProcessor.class,\n            ExtraProcessable.class,\n            ExtraTypeProvider.class,\n            BeanContext.class,\n            FieldDeserializer.class,\n            DefaultFieldDeserializer.class,\n        };\n        \n        for (Class<?> clazz : jsonClasses) {\n            classMapping.put(clazz.getName(), clazz);\n        }\n    }\n    \n    public ASMClassLoader(){\n        super(getParentClassLoader());\n    }\n\n    public ASMClassLoader(ClassLoader parent){\n        super (parent);\n    }\n\n    static ClassLoader getParentClassLoader() {\n        ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();\n        if (contextClassLoader != null) {\n            try {\n                contextClassLoader.loadClass(JSON.class.getName());\n                return contextClassLoader;\n            } catch (ClassNotFoundException e) {\n                // skip\n            }\n        }\n        return JSON.class.getClassLoader();\n    }\n\n    protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {\n        Class<?> mappingClass = classMapping.get(name);\n        if (mappingClass != null) {\n            return mappingClass;\n        }\n        \n        try {\n            return super.loadClass(name, resolve);\n        } catch (ClassNotFoundException e) {\n            throw e;\n        }\n    }\n\n    public Class<?> defineClassPublic(String name, byte[] b, int off, int len) throws ClassFormatError {\n        Class<?> clazz = defineClass(name, b, off, len, DOMAIN);\n\n        return clazz;\n    }\n\n    public boolean isExternalClass(Class<?> clazz) {\n        ClassLoader classLoader = clazz.getClassLoader();\n\n        if (classLoader == null) {\n            return false;\n        }\n\n        ClassLoader current = this;\n        while (current != null) {\n            if (current == classLoader) {\n                return false;\n            }\n\n            current = current.getParent();\n        }\n\n        return true;\n    }\n\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/util/ASMUtils.java",
    "content": "package com.alibaba.fastjson.util;\n\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.asm.ClassReader;\nimport com.alibaba.fastjson.asm.TypeCollector;\n\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.AccessibleObject;\nimport java.lang.reflect.Constructor;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Type;\n\npublic class ASMUtils {\n\n    public static final String JAVA_VM_NAME = System.getProperty(\"java.vm.name\");\n    \n    public static final boolean IS_ANDROID = isAndroid(JAVA_VM_NAME);\n\t\n    public static boolean isAndroid(String vmName) {\n        if (vmName == null) { // default is false\n            return false;\n        }\n        \n        String lowerVMName = vmName.toLowerCase();\n        \n        return lowerVMName.contains(\"dalvik\") //\n               || lowerVMName.contains(\"lemur\") // aliyun-vm name\n        ;\n    }\n\n    public static String desc(Method method) {   \n    \tClass<?>[] types = method.getParameterTypes();\n        StringBuilder buf = new StringBuilder((types.length + 1) << 4);\n        buf.append('(');\n        for (int i = 0; i < types.length; ++i) {\n            buf.append(desc(types[i]));\n        }\n        buf.append(')');\n        buf.append(desc(method.getReturnType()));\n        return buf.toString();\n    }\n\n    public static String desc(Class<?> returnType) {\n        if (returnType.isPrimitive()) {\n            return getPrimitiveLetter(returnType);\n        } else if (returnType.isArray()) {\n            return \"[\" + desc(returnType.getComponentType());\n        } else {\n            return \"L\" + type(returnType) + \";\";\n        }\n    }\n\n    public static String type(Class<?> parameterType) {\n        if (parameterType.isArray()) {\n            return \"[\" + desc(parameterType.getComponentType());\n        } else {\n            if (!parameterType.isPrimitive()) {\n                String clsName = parameterType.getName();\n                return clsName.replace('.', '/'); // 直接基于字符串替换，不使用正则替换\n            } else {\n                return getPrimitiveLetter(parameterType);\n            }\n        }\n    }\n    \n\n    public static String getPrimitiveLetter(Class<?> type) {\n        if (Integer.TYPE == type) {\n            return \"I\";\n        } else if (Void.TYPE == type) {\n            return \"V\";\n        } else if (Boolean.TYPE == type) {\n            return \"Z\";\n        } else if (Character.TYPE == type) {\n            return \"C\";\n        } else if (Byte.TYPE == type) {\n            return \"B\";\n        } else if (Short.TYPE == type) {\n            return \"S\";\n        } else if (Float.TYPE == type) {\n            return \"F\";\n        } else if (Long.TYPE == type) {\n            return \"J\";\n        } else if (Double.TYPE == type) {\n            return \"D\";\n        }\n\n        throw new IllegalStateException(\"Type: \" + type.getCanonicalName() + \" is not a primitive type\");\n    }\n\n    public static Type getMethodType(Class<?> clazz, String methodName) {\n        try {\n            Method method = clazz.getMethod(methodName);\n\n            return method.getGenericReturnType();\n        } catch (Exception ex) {\n            return null;\n        }\n    }\n\n    public static boolean checkName(String name) {\n        for (int i = 0; i < name.length(); ++i) {\n            char c = name.charAt(i);\n            if (c < '\\001' || c > '\\177' || c == '.') {\n                return false;\n            }\n        }\n        \n        return true;\n    }\n\n\n    public static String[] lookupParameterNames(AccessibleObject methodOrCtor) {\n        if (IS_ANDROID) {\n            return new String[0];\n        }\n\n        final Class<?>[] types;\n        final Class<?> declaringClass;\n        final String name;\n\n        Annotation[][] parameterAnnotations;\n        if (methodOrCtor instanceof Method) {\n            Method method = (Method) methodOrCtor;\n            types = method.getParameterTypes();\n            name = method.getName();\n            declaringClass = method.getDeclaringClass();\n            parameterAnnotations = TypeUtils.getParameterAnnotations(method);\n        } else {\n            Constructor<?> constructor = (Constructor<?>) methodOrCtor;\n            types = constructor.getParameterTypes();\n            declaringClass = constructor.getDeclaringClass();\n            name = \"<init>\";\n            parameterAnnotations = TypeUtils.getParameterAnnotations(constructor);\n        }\n\n        if (types.length == 0) {\n            return new String[0];\n        }\n\n        ClassLoader classLoader = declaringClass.getClassLoader();\n        if (classLoader == null) {\n            classLoader = ClassLoader.getSystemClassLoader();\n        }\n\n        String className = declaringClass.getName();\n        String resourceName = className.replace('.', '/') + \".class\";\n        InputStream is = classLoader.getResourceAsStream(resourceName);\n\n        if (is == null) {\n            return new String[0];\n        }\n\n        try {\n            ClassReader reader = new ClassReader(is, false);\n            TypeCollector visitor = new TypeCollector(name, types);\n            reader.accept(visitor);\n            String[] parameterNames = visitor.getParameterNamesForMethod();\n\n            for (int i = 0; i < parameterNames.length; i++) {\n                Annotation[] annotations = parameterAnnotations[i];\n                if (annotations != null) {\n                    for (int j = 0; j < annotations.length; j++) {\n                        if (annotations[j] instanceof JSONField) {\n                            JSONField jsonField = (JSONField) annotations[j];\n                            String fieldName = jsonField.name();\n                            if (fieldName != null && fieldName.length() > 0) {\n                                parameterNames[i] = fieldName;\n                            }\n                        }\n                    }\n                }\n            }\n\n            return parameterNames;\n        } catch (IOException e) {\n            return new String[0];\n        } finally {\n            IOUtils.close(is);\n        }\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/util/AntiCollisionHashMap.java",
    "content": "package com.alibaba.fastjson.util;\n\nimport java.io.IOException;\nimport java.io.Serializable;\nimport java.util.*;\n\n/**\n * @deprecated\n */\npublic class AntiCollisionHashMap<K, V> extends AbstractMap<K, V> implements\n        Map<K, V>, Cloneable, Serializable {\n\n    transient volatile Set<K> keySet = null;\n    transient volatile Collection<V> values = null;\n\n    /**\n     * The default initial capacity - MUST be a power of two.\n     */\n    static final int DEFAULT_INITIAL_CAPACITY = 16;\n\n    /**\n     * The maximum capacity, used if a higher value is implicitly specified by\n     * either of the constructors with arguments. MUST be a power of two <=\n     * 1<<30.\n     */\n    static final int MAXIMUM_CAPACITY = 1 << 30;\n\n    /**\n     * The load factor used when none specified in constructor.\n     */\n    static final float DEFAULT_LOAD_FACTOR = 0.75f;\n\n    /**\n     * The table, resized as necessary. Length MUST Always be a power of two.\n     */\n    transient Entry<K, V>[] table;\n\n    /**\n     * The number of key-value mappings contained in this map.\n     */\n    transient int size;\n\n    /**\n     * The next size value at which to resize (capacity * load factor).\n     *\n     * @serial\n     */\n    int threshold;\n\n    /**\n     * The load factor for the hash table.\n     *\n     * @serial\n     */\n    final float loadFactor;\n\n    /**\n     * The number of times this SafelyHashMap has been structurally modified\n     * Structural modifications are those that change the number of mappings in\n     * the SafelyHashMap or otherwise modify its internal structure (e.g.,\n     * rehash). This field is used to make iterators on Collection-views of the\n     * SafelyHashMap fail-fast. (See ConcurrentModificationException).\n     */\n    transient volatile int modCount;\n\n    /**\n     * Constructs an empty <tt>SafelyHashMap</tt> with the specified initial\n     * capacity and load factor.\n     *\n     * @param initialCapacity\n     *            the initial capacity\n     * @param loadFactor\n     *            the load factor\n     * @throws IllegalArgumentException\n     *             if the initial capacity is negative or the load factor is\n     *             nonpositive\n     */\n\n    final static int M_MASK = 0x8765fed3;\n    final static int SEED = -2128831035;\n    final static int KEY = 16777619;\n\n    final int random = new Random().nextInt(99999); // a fixed value in an instance\n    private int hashString(String key) {\n\n        int hash = SEED * random;\n        for (int i = 0; i < key.length(); i++)\n            hash = (hash * KEY) ^ key.charAt(i);\n        return (hash ^ (hash >> 1)) & M_MASK;\n    }\n\n    public AntiCollisionHashMap(int initialCapacity, float loadFactor) {\n        if (initialCapacity < 0)\n            throw new IllegalArgumentException(\"Illegal initial capacity: \"\n                    + initialCapacity);\n        if (initialCapacity > MAXIMUM_CAPACITY)\n            initialCapacity = MAXIMUM_CAPACITY;\n        if (loadFactor <= 0 || Float.isNaN(loadFactor))\n            throw new IllegalArgumentException(\"Illegal load factor: \"\n                    + loadFactor);\n\n        // Find a power of 2 >= initialCapacity\n        int capacity = 1;\n        while (capacity < initialCapacity)\n            capacity <<= 1;\n\n        this.loadFactor = loadFactor;\n        threshold = (int) (capacity * loadFactor);\n        table = new Entry[capacity];\n        init();\n    }\n\n    /**\n     * Constructs an empty <tt>SafelyHashMap</tt> with the specified initial\n     * capacity and the default load factor (0.75).\n     *\n     * @param initialCapacity\n     *            the initial capacity.\n     * @throws IllegalArgumentException\n     *             if the initial capacity is negative.\n     */\n    public AntiCollisionHashMap(int initialCapacity) {\n        this(initialCapacity, DEFAULT_LOAD_FACTOR);\n    }\n\n    /**\n     * Constructs an empty <tt>SafelyHashMap</tt> with the default initial\n     * capacity (16) and the default load factor (0.75).\n     */\n    public AntiCollisionHashMap() {\n        this.loadFactor = DEFAULT_LOAD_FACTOR;\n        threshold = (int) (DEFAULT_INITIAL_CAPACITY * DEFAULT_LOAD_FACTOR);\n        table = new Entry[DEFAULT_INITIAL_CAPACITY];\n        init();\n    }\n\n    /**\n     * Constructs a new <tt>SafelyHashMap</tt> with the same mappings as the\n     * specified <tt>Map</tt>. The <tt>SafelyHashMap</tt> is created with\n     * default load factor (0.75) and an initial capacity sufficient to hold the\n     * mappings in the specified <tt>Map</tt>.\n     *\n     * @param m\n     *            the map whose mappings are to be placed in this map\n     * @throws NullPointerException\n     *             if the specified map is null\n     */\n    public AntiCollisionHashMap(Map<? extends K, ? extends V> m) {\n        this(Math.max((int) (m.size() / DEFAULT_LOAD_FACTOR) + 1,\n                DEFAULT_INITIAL_CAPACITY), DEFAULT_LOAD_FACTOR);\n        putAllForCreate(m);\n    }\n\n    // internal utilities\n\n    /**\n     * Initialization hook for subclasses. This method is called in all\n     * constructors and pseudo-constructors (clone, readObject) after\n     * SafelyHashMap has been initialized but before any entries have been\n     * inserted. (In the absence of this method, readObject would require\n     * explicit knowledge of subclasses.)\n     */\n    void init() {\n    }\n\n    /**\n     * Applies a supplemental hash function to a given hashCode, which defends\n     * against poor quality hash functions. This is critical because\n     * SafelyHashMap uses power-of-two length hash tables, that otherwise\n     * encounter collisions for hashCodes that do not differ in lower bits.\n     * Note: Null keys always map to hash 0, thus index 0.\n     */\n    static int hash(int h) {\n        // This function ensures that hashCodes that differ only by\n        // constant multiples at each bit position have a bounded\n        // number of collisions (approximately 8 at default load factor).\n        h = h * h;\n        h ^= (h >>> 20) ^ (h >>> 12);\n        return h ^ (h >>> 7) ^ (h >>> 4);\n    }\n\n    /**\n     * Returns index for hash code h.\n     */\n    static int indexFor(int h, int length) {\n        return h & (length - 1);\n    }\n\n    /**\n     * Returns the number of key-value mappings in this map.\n     *\n     * @return the number of key-value mappings in this map\n     */\n    public int size() {\n        return size;\n    }\n\n    /**\n     * Returns <tt>true</tt> if this map contains no key-value mappings.\n     *\n     * @return <tt>true</tt> if this map contains no key-value mappings\n     */\n    public boolean isEmpty() {\n        return size == 0;\n    }\n\n    /**\n     * Returns the value to which the specified key is mapped, or {@code null}\n     * if this map contains no mapping for the key.\n     *\n     * <p>\n     * More formally, if this map contains a mapping from a key {@code k} to a\n     * value {@code v} such that {@code (key==null ? k==null :\n     * key.equals(k))}, then this method returns {@code v}; otherwise it returns\n     * {@code null}. (There can be at most one such mapping.)\n     *\n     * <p>\n     * A return value of {@code null} does not <i>necessarily</i> indicate that\n     * the map contains no mapping for the key; it's also possible that the map\n     * explicitly maps the key to {@code null}. The {@link #containsKey\n     * containsKey} operation may be used to distinguish these two cases.\n     *\n     * @see #put(Object, Object)\n     */\n    public V get(Object key) {\n        if (key == null)\n            return getForNullKey();\n        int hash = 0;\n        if (key instanceof String)\n            hash = hash(hashString((String) key));\n        else\n            hash = hash(key.hashCode());\n        for (Entry<K, V> e = table[indexFor(hash, table.length)]; e != null; e = e.next) {\n            Object k;\n            if (e.hash == hash && ((k = e.key) == key || key.equals(k)))\n                return e.value;\n        }\n        return null;\n    }\n\n    /**\n     * Offloaded version of get() to look up null keys. Null keys map to index\n     * 0. This null case is split out into separate methods for the sake of\n     * performance in the two most commonly used operations (get and put), but\n     * incorporated with conditionals in others.\n     */\n    private V getForNullKey() {\n        for (Entry<K, V> e = table[0]; e != null; e = e.next) {\n            if (e.key == null)\n                return e.value;\n        }\n        return null;\n    }\n\n    /**\n     * Returns <tt>true</tt> if this map contains a mapping for the specified\n     * key.\n     *\n     * @param key\n     *            The key whose presence in this map is to be tested\n     * @return <tt>true</tt> if this map contains a mapping for the specified\n     *         key.\n     */\n    public boolean containsKey(Object key) {\n        return getEntry(key) != null;\n    }\n\n    /**\n     * Returns the entry associated with the specified key in the SafelyHashMap.\n     * Returns null if the SafelyHashMap contains no mapping for the key.\n     */\n    final Entry<K, V> getEntry(Object key) {\n        int hash = (key == null) ? 0\n                : (key instanceof String) ? hash(hashString((String) key))\n                : hash(key.hashCode());\n        for (Entry<K, V> e = table[indexFor(hash, table.length)]; e != null; e = e.next) {\n            Object k;\n            if (e.hash == hash\n                    && ((k = e.key) == key || (key != null && key.equals(k))))\n                return e;\n        }\n        return null;\n    }\n\n    /**\n     * Associates the specified value with the specified key in this map. If the\n     * map previously contained a mapping for the key, the old value is\n     * replaced.\n     *\n     * @param key\n     *            key with which the specified value is to be associated\n     * @param value\n     *            value to be associated with the specified key\n     * @return the previous value associated with <tt>key</tt>, or <tt>null</tt>\n     *         if there was no mapping for <tt>key</tt>. (A <tt>null</tt> return\n     *         can also indicate that the map previously associated\n     *         <tt>null</tt> with <tt>key</tt>.)\n     */\n    public V put(K key, V value) {\n        if (key == null)\n            return putForNullKey(value);\n        int hash = 0;\n        if (key instanceof String)\n            hash = hash(hashString((String) key));\n        else\n            hash = hash(key.hashCode());\n        int i = indexFor(hash, table.length);\n        for (Entry<K, V> e = table[i]; e != null; e = e.next) {\n            Object k;\n            if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {\n                V oldValue = e.value;\n                e.value = value;\n                return oldValue;\n            }\n        }\n\n        modCount++;\n        addEntry(hash, key, value, i);\n        return null;\n    }\n\n    /**\n     * Offloaded version of put for null keys\n     */\n    private V putForNullKey(V value) {\n        for (Entry<K, V> e = table[0]; e != null; e = e.next) {\n            if (e.key == null) {\n                V oldValue = e.value;\n                e.value = value;\n                return oldValue;\n            }\n        }\n        modCount++;\n        addEntry(0, null, value, 0);\n        return null;\n    }\n\n    /**\n     * This method is used instead of put by constructors and pseudoconstructors\n     * (clone, readObject). It does not resize the table, check for\n     * comodification, etc. It calls createEntry rather than addEntry.\n     */\n    private void putForCreate(K key, V value) {\n        int hash = (key == null) ? 0\n                : (key instanceof String) ? hash(hashString((String) key))\n                : hash(key.hashCode());\n        int i = indexFor(hash, table.length);\n\n        /**\n         * Look for preexisting entry for key. This will never happen for clone\n         * or deserialize. It will only happen for construction if the input Map\n         * is a sorted map whose ordering is inconsistent w/ equals.\n         */\n        for (Entry<K, V> e = table[i]; e != null; e = e.next) {\n            Object k;\n            if (e.hash == hash\n                    && ((k = e.key) == key || (key != null && key.equals(k)))) {\n                e.value = value;\n                return;\n            }\n        }\n\n        createEntry(hash, key, value, i);\n    }\n\n    private void putAllForCreate(Map<? extends K, ? extends V> m) {\n        for (Iterator<? extends Map.Entry<? extends K, ? extends V>> i = m\n                .entrySet().iterator(); i.hasNext();) {\n            Map.Entry<? extends K, ? extends V> e = i.next();\n            putForCreate(e.getKey(), e.getValue());\n        }\n    }\n\n    /**\n     * Rehashes the contents of this map into a new array with a larger\n     * capacity. This method is called automatically when the number of keys in\n     * this map reaches its threshold.\n     *\n     * If current capacity is MAXIMUM_CAPACITY, this method does not resize the\n     * map, but sets threshold to Integer.MAX_VALUE. This has the effect of\n     * preventing future calls.\n     *\n     * @param newCapacity\n     *            the new capacity, MUST be a power of two; must be greater than\n     *            current capacity unless current capacity is MAXIMUM_CAPACITY\n     *            (in which case value is irrelevant).\n     */\n    void resize(int newCapacity) {\n        Entry<K, V>[] oldTable = table;\n        int oldCapacity = oldTable.length;\n        if (oldCapacity == MAXIMUM_CAPACITY) {\n            threshold = Integer.MAX_VALUE;\n            return;\n        }\n\n        Entry<K, V>[] newTable = new Entry[newCapacity];\n        transfer(newTable);\n        table = newTable;\n        threshold = (int) (newCapacity * loadFactor);\n    }\n\n    /**\n     * Transfers all entries from current table to newTable.\n     */\n    void transfer(Entry[] newTable) {\n        Entry[] src = table;\n        int newCapacity = newTable.length;\n        for (int j = 0; j < src.length; j++) {\n            Entry<K, V> e = src[j];\n            if (e != null) {\n                src[j] = null;\n                do {\n                    Entry<K, V> next = e.next;\n                    int i = indexFor(e.hash, newCapacity);\n                    e.next = newTable[i];\n                    newTable[i] = e;\n                    e = next;\n                } while (e != null);\n            }\n        }\n    }\n\n    /**\n     * Copies all of the mappings from the specified map to this map. These\n     * mappings will replace any mappings that this map had for any of the keys\n     * currently in the specified map.\n     *\n     * @param m\n     *            mappings to be stored in this map\n     * @throws NullPointerException\n     *             if the specified map is null\n     */\n    public void putAll(Map<? extends K, ? extends V> m) {\n        int numKeysToBeAdded = m.size();\n        if (numKeysToBeAdded == 0)\n            return;\n\n\t\t/*\n\t\t * Expand the map if the map if the number of mappings to be added is\n\t\t * greater than or equal to threshold. This is conservative; the obvious\n\t\t * condition is (m.size() + size) >= threshold, but this condition could\n\t\t * result in a map with twice the appropriate capacity, if the keys to\n\t\t * be added overlap with the keys already in this map. By using the\n\t\t * conservative calculation, we subject ourself to at most one extra\n\t\t * resize.\n\t\t */\n        if (numKeysToBeAdded > threshold) {\n            int targetCapacity = (int) (numKeysToBeAdded / loadFactor + 1);\n            if (targetCapacity > MAXIMUM_CAPACITY)\n                targetCapacity = MAXIMUM_CAPACITY;\n            int newCapacity = table.length;\n            while (newCapacity < targetCapacity)\n                newCapacity <<= 1;\n            if (newCapacity > table.length)\n                resize(newCapacity);\n        }\n\n        for (Iterator<? extends Map.Entry<? extends K, ? extends V>> i = m\n                .entrySet().iterator(); i.hasNext();) {\n            Map.Entry<? extends K, ? extends V> e = i.next();\n            put(e.getKey(), e.getValue());\n        }\n    }\n\n    /**\n     * Removes the mapping for the specified key from this map if present.\n     *\n     * @param key\n     *            key whose mapping is to be removed from the map\n     * @return the previous value associated with <tt>key</tt>, or <tt>null</tt>\n     *         if there was no mapping for <tt>key</tt>. (A <tt>null</tt> return\n     *         can also indicate that the map previously associated\n     *         <tt>null</tt> with <tt>key</tt>.)\n     */\n    public V remove(Object key) {\n        Entry<K, V> e = removeEntryForKey(key);\n        return (e == null ? null : e.value);\n    }\n\n    /**\n     * Removes and returns the entry associated with the specified key in the\n     * SafelyHashMap. Returns null if the SafelyHashMap contains no mapping for\n     * this key.\n     */\n    final Entry<K, V> removeEntryForKey(Object key) {\n        int hash = (key == null) ? 0\n                : (key instanceof String) ? hash(hashString((String) key))\n                : hash(key.hashCode());\n        int i = indexFor(hash, table.length);\n        Entry<K, V> prev = table[i];\n        Entry<K, V> e = prev;\n\n        while (e != null) {\n            Entry<K, V> next = e.next;\n            Object k;\n            if (e.hash == hash\n                    && ((k = e.key) == key || (key != null && key.equals(k)))) {\n                modCount++;\n                size--;\n                if (prev == e)\n                    table[i] = next;\n                else\n                    prev.next = next;\n                return e;\n            }\n            prev = e;\n            e = next;\n        }\n\n        return e;\n    }\n\n    /**\n     * Special version of remove for EntrySet.\n     */\n    final Entry<K, V> removeMapping(Object o) {\n        if (!(o instanceof Map.Entry))\n            return null;\n\n        Map.Entry<K, V> entry = (Map.Entry<K, V>) o;\n        Object key = entry.getKey();\n        int hash = (key == null) ? 0\n                : (key instanceof String) ? hash(hashString((String) key))\n                : hash(key.hashCode());\n        int i = indexFor(hash, table.length);\n        Entry<K, V> prev = table[i];\n        Entry<K, V> e = prev;\n\n        while (e != null) {\n            Entry<K, V> next = e.next;\n            if (e.hash == hash && e.equals(entry)) {\n                modCount++;\n                size--;\n                if (prev == e)\n                    table[i] = next;\n                else\n                    prev.next = next;\n                return e;\n            }\n            prev = e;\n            e = next;\n        }\n\n        return e;\n    }\n\n    /**\n     * Removes all of the mappings from this map. The map will be empty after\n     * this call returns.\n     */\n    public void clear() {\n        modCount++;\n        Entry[] tab = table;\n        for (int i = 0; i < tab.length; i++)\n            tab[i] = null;\n        size = 0;\n    }\n\n    /**\n     * Returns <tt>true</tt> if this map maps one or more keys to the specified\n     * value.\n     *\n     * @param value\n     *            value whose presence in this map is to be tested\n     * @return <tt>true</tt> if this map maps one or more keys to the specified\n     *         value\n     */\n    public boolean containsValue(Object value) {\n        if (value == null)\n            return containsNullValue();\n\n        Entry[] tab = table;\n        for (int i = 0; i < tab.length; i++)\n            for (Entry e = tab[i]; e != null; e = e.next)\n                if (value.equals(e.value))\n                    return true;\n        return false;\n    }\n\n    /**\n     * Special-case code for containsValue with null argument\n     */\n    private boolean containsNullValue() {\n        Entry[] tab = table;\n        for (int i = 0; i < tab.length; i++)\n            for (Entry e = tab[i]; e != null; e = e.next)\n                if (e.value == null)\n                    return true;\n        return false;\n    }\n\n    /**\n     * Returns a shallow copy of this <tt>SafelyHashMap</tt> instance: the keys\n     * and values themselves are not cloned.\n     *\n     * @return a shallow copy of this map\n     */\n    public Object clone() {\n        AntiCollisionHashMap<K, V> result = null;\n        try {\n            result = (AntiCollisionHashMap<K, V>) super.clone();\n        } catch (CloneNotSupportedException e) {\n            // assert false;\n        }\n        result.table = new Entry[table.length];\n        result.entrySet = null;\n        result.modCount = 0;\n        result.size = 0;\n        result.init();\n        result.putAllForCreate(this);\n\n        return result;\n    }\n\n    static class Entry<K, V> implements Map.Entry<K, V> {\n        final K key;\n        V value;\n        Entry<K, V> next;\n        final int hash;\n\n        /**\n         * Creates new entry.\n         */\n        Entry(int h, K k, V v, Entry<K, V> n) {\n            value = v;\n            next = n;\n            key = k;\n            hash = h;\n        }\n\n        public final K getKey() {\n            return key;\n        }\n\n        public final V getValue() {\n            return value;\n        }\n\n        public final V setValue(V newValue) {\n            V oldValue = value;\n            value = newValue;\n            return oldValue;\n        }\n\n        public final boolean equals(Object o) {\n            if (!(o instanceof Map.Entry))\n                return false;\n            Map.Entry e = (Map.Entry) o;\n            Object k1 = getKey();\n            Object k2 = e.getKey();\n            if (k1 == k2 || (k1 != null && k1.equals(k2))) {\n                Object v1 = getValue();\n                Object v2 = e.getValue();\n                return (v1 == v2 || (v1 != null && v1.equals(v2)));\n            }\n            return false;\n        }\n\n        public final int hashCode() {\n            return (key == null ? 0 : key.hashCode())\n                    ^ (value == null ? 0 : value.hashCode());\n        }\n\n        public final String toString() {\n            return getKey() + \"=\" + getValue();\n        }\n\n    }\n\n    /**\n     * Adds a new entry with the specified key, value and hash code to the\n     * specified bucket. It is the responsibility of this method to resize the\n     * table if appropriate.\n     *\n     * Subclass overrides this to alter the behavior of put method.\n     */\n    void addEntry(int hash, K key, V value, int bucketIndex) {\n        Entry<K, V> e = table[bucketIndex];\n        table[bucketIndex] = new Entry<K, V>(hash, key, value, e);\n        if (size++ >= threshold)\n            resize(2 * table.length);\n    }\n\n    /**\n     * Like addEntry except that this version is used when creating entries as\n     * part of Map construction or \"pseudo-construction\" (cloning,\n     * deserialization). This version needn't worry about resizing the table.\n     *\n     * Subclass overrides this to alter the behavior of SafelyHashMap(Map),\n     * clone, and readObject.\n     */\n    void createEntry(int hash, K key, V value, int bucketIndex) {\n        Entry<K, V> e = table[bucketIndex];\n        table[bucketIndex] = new Entry<K, V>(hash, key, value, e);\n        size++;\n    }\n\n    private abstract class HashIterator<E> implements Iterator<E> {\n        Entry<K, V> next; // next entry to return\n        int expectedModCount; // For fast-fail\n        int index; // current slot\n        Entry<K, V> current; // current entry\n\n        HashIterator() {\n            expectedModCount = modCount;\n            if (size > 0) { // advance to first entry\n                Entry[] t = table;\n                while (index < t.length && (next = t[index++]) == null)\n                    ;\n            }\n        }\n\n        public final boolean hasNext() {\n            return next != null;\n        }\n\n        final Entry<K, V> nextEntry() {\n            if (modCount != expectedModCount)\n                throw new ConcurrentModificationException();\n            Entry<K, V> e = next;\n            if (e == null)\n                throw new NoSuchElementException();\n\n            if ((next = e.next) == null) {\n                Entry[] t = table;\n                while (index < t.length && (next = t[index++]) == null)\n                    ;\n            }\n            current = e;\n            return e;\n        }\n\n        public void remove() {\n            if (current == null)\n                throw new IllegalStateException();\n            if (modCount != expectedModCount)\n                throw new ConcurrentModificationException();\n            Object k = current.key;\n            current = null;\n            AntiCollisionHashMap.this.removeEntryForKey(k);\n            expectedModCount = modCount;\n        }\n\n    }\n\n    private final class ValueIterator extends HashIterator<V> {\n        public V next() {\n            return nextEntry().value;\n        }\n    }\n\n    private final class KeyIterator extends HashIterator<K> {\n        public K next() {\n            return nextEntry().getKey();\n        }\n    }\n\n    private final class EntryIterator extends HashIterator<Map.Entry<K, V>> {\n        public Map.Entry<K, V> next() {\n            return nextEntry();\n        }\n    }\n\n    // Subclass overrides these to alter behavior of views' iterator() method\n    Iterator<K> newKeyIterator() {\n        return new KeyIterator();\n    }\n\n    Iterator<V> newValueIterator() {\n        return new ValueIterator();\n    }\n\n    Iterator<Map.Entry<K, V>> newEntryIterator() {\n        return new EntryIterator();\n    }\n\n    // Views\n\n    private transient Set<Map.Entry<K, V>> entrySet = null;\n\n    /**\n     * Returns a {@link Set} view of the keys contained in this map. The set is\n     * backed by the map, so changes to the map are reflected in the set, and\n     * vice-versa. If the map is modified while an iteration over the set is in\n     * progress (except through the iterator's own <tt>remove</tt> operation),\n     * the results of the iteration are undefined. The set supports element\n     * removal, which removes the corresponding mapping from the map, via the\n     * <tt>Iterator.remove</tt>, <tt>Set.remove</tt>, <tt>removeAll</tt>,\n     * <tt>retainAll</tt>, and <tt>clear</tt> operations. It does not support\n     * the <tt>add</tt> or <tt>addAll</tt> operations.\n     */\n    public Set<K> keySet() {\n\n        Set<K> ks = keySet;\n        return (ks != null ? ks : (keySet = new KeySet()));\n    }\n\n    private final class KeySet extends AbstractSet<K> {\n        public Iterator<K> iterator() {\n            return newKeyIterator();\n        }\n\n        public int size() {\n            return size;\n        }\n\n        public boolean contains(Object o) {\n            return containsKey(o);\n        }\n\n        public boolean remove(Object o) {\n            return AntiCollisionHashMap.this.removeEntryForKey(o) != null;\n        }\n\n        public void clear() {\n            AntiCollisionHashMap.this.clear();\n        }\n    }\n\n    /**\n     * Returns a {@link Collection} view of the values contained in this map.\n     * The collection is backed by the map, so changes to the map are reflected\n     * in the collection, and vice-versa. If the map is modified while an\n     * iteration over the collection is in progress (except through the\n     * iterator's own <tt>remove</tt> operation), the results of the iteration\n     * are undefined. The collection supports element removal, which removes the\n     * corresponding mapping from the map, via the <tt>Iterator.remove</tt>,\n     * <tt>Collection.remove</tt>, <tt>removeAll</tt>, <tt>retainAll</tt> and\n     * <tt>clear</tt> operations. It does not support the <tt>add</tt> or\n     * <tt>addAll</tt> operations.\n     */\n    public Collection<V> values() {\n        Collection<V> vs = values;\n        return (vs != null ? vs : (values = new Values()));\n    }\n\n    private final class Values extends AbstractCollection<V> {\n        public Iterator<V> iterator() {\n            return newValueIterator();\n        }\n\n        public int size() {\n            return size;\n        }\n\n        public boolean contains(Object o) {\n            return containsValue(o);\n        }\n\n        public void clear() {\n            AntiCollisionHashMap.this.clear();\n        }\n    }\n\n    /**\n     * Returns a {@link Set} view of the mappings contained in this map. The set\n     * is backed by the map, so changes to the map are reflected in the set, and\n     * vice-versa. If the map is modified while an iteration over the set is in\n     * progress (except through the iterator's own <tt>remove</tt> operation, or\n     * through the <tt>setValue</tt> operation on a map entry returned by the\n     * iterator) the results of the iteration are undefined. The set supports\n     * element removal, which removes the corresponding mapping from the map,\n     * via the <tt>Iterator.remove</tt>, <tt>Set.remove</tt>, <tt>removeAll</tt>\n     * , <tt>retainAll</tt> and <tt>clear</tt> operations. It does not support\n     * the <tt>add</tt> or <tt>addAll</tt> operations.\n     *\n     * @return a set view of the mappings contained in this map\n     */\n    public Set<Map.Entry<K, V>> entrySet() {\n        return entrySet0();\n    }\n\n    private Set<Map.Entry<K, V>> entrySet0() {\n        Set<Map.Entry<K, V>> es = entrySet;\n        return es != null ? es : (entrySet = new EntrySet());\n    }\n\n    private final class EntrySet extends AbstractSet<Map.Entry<K, V>> {\n        public Iterator<Map.Entry<K, V>> iterator() {\n            return newEntryIterator();\n        }\n\n        public boolean contains(Object o) {\n            if (!(o instanceof Map.Entry))\n                return false;\n            Map.Entry<K, V> e = (Map.Entry<K, V>) o;\n            Entry<K, V> candidate = getEntry(e.getKey());\n            return candidate != null && candidate.equals(e);\n        }\n\n        public boolean remove(Object o) {\n            return removeMapping(o) != null;\n        }\n\n        public int size() {\n            return size;\n        }\n\n        public void clear() {\n            AntiCollisionHashMap.this.clear();\n        }\n    }\n\n    /**\n     * Save the state of the <tt>SafelyHashMap</tt> instance to a stream (i.e.,\n     * serialize it).\n     *\n     * @serialData The <i>capacity</i> of the SafelyHashMap (the length of the\n     *             bucket array) is emitted (int), followed by the <i>size</i>\n     *             (an int, the number of key-value mappings), followed by the\n     *             key (Object) and value (Object) for each key-value mapping.\n     *             The key-value mappings are emitted in no particular order.\n     */\n    private void writeObject(java.io.ObjectOutputStream s) throws IOException {\n        Iterator<Map.Entry<K, V>> i = (size > 0) ? entrySet0().iterator()\n                : null;\n\n        // Write out the threshold, loadfactor, and any hidden stuff\n        s.defaultWriteObject();\n\n        // Write out number of buckets\n        s.writeInt(table.length);\n\n        // Write out size (number of Mappings)\n        s.writeInt(size);\n\n        // Write out keys and values (alternating)\n        if (i != null) {\n            while (i.hasNext()) {\n                Map.Entry<K, V> e = i.next();\n                s.writeObject(e.getKey());\n                s.writeObject(e.getValue());\n            }\n        }\n    }\n\n    private static final long serialVersionUID = 362498820763181265L;\n\n    /**\n     * Reconstitute the <tt>SafelyHashMap</tt> instance from a stream (i.e.,\n     * deserialize it).\n     */\n    private void readObject(java.io.ObjectInputStream s) throws IOException,\n            ClassNotFoundException {\n        // Read in the threshold, loadfactor, and any hidden stuff\n        s.defaultReadObject();\n\n        // Read in number of buckets and allocate the bucket array;\n        int numBuckets = s.readInt();\n        table = new Entry[numBuckets];\n\n        init(); // Give subclass a chance to do its thing.\n\n        // Read in size (number of Mappings)\n        int size = s.readInt();\n\n        // Read the keys and values, and put the mappings in the SafelyHashMap\n        for (int i = 0; i < size; i++) {\n            K key = (K) s.readObject();\n            V value = (V) s.readObject();\n            putForCreate(key, value);\n        }\n    }\n\n}"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/util/Base64.java",
    "content": "package com.alibaba.fastjson.util;\n\nimport java.util.Arrays;\n\n/**\n *\n * @version 2.2\n * @author Mikael Grev Date: 2004-aug-02 Time: 11:31:11\n * @deprecated internal api, don't use.\n */\npublic class Base64 {\n\n    public static final char[] CA = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\".toCharArray();\n    public static final int[]  IA = new int[256];\n    static {\n        Arrays.fill(IA, -1);\n        for (int i = 0, iS = CA.length; i < iS; i++)\n            IA[CA[i]] = i;\n        IA['='] = 0;\n    }\n\n    /**\n     * Decodes a BASE64 encoded char array that is known to be resonably well formatted. The method is about twice as\n     * fast as #decode(char[]). The preconditions are:<br>\n     * + The array must have a line length of 76 chars OR no line separators at all (one line).<br>\n     * + Line separator must be \"\\r\\n\", as specified in RFC 2045 + The array must not contain illegal characters within\n     * the encoded string<br>\n     * + The array CAN have illegal characters at the beginning and end, those will be dealt with appropriately.<br>\n     *\n     * @param chars The source array. Length 0 will return an empty array. <code>null</code> will throw an exception.\n     * @return The decoded array of bytes. May be of length 0.\n     */\n    public static byte[] decodeFast(char[] chars, int offset, int charsLen) {\n        // Check special case\n        if (charsLen == 0) {\n            return new byte[0];\n        }\n\n        int sIx = offset, eIx = offset + charsLen - 1; // Start and end index after trimming.\n\n        // Trim illegal chars from start\n        while (sIx < eIx && IA[chars[sIx]] < 0)\n            sIx++;\n\n        // Trim illegal chars from end\n        while (eIx > 0 && IA[chars[eIx]] < 0)\n            eIx--;\n\n        // get the padding count (=) (0, 1 or 2)\n        int pad = chars[eIx] == '=' ? (chars[eIx - 1] == '=' ? 2 : 1) : 0; // Count '=' at end.\n        int cCnt = eIx - sIx + 1; // Content count including possible separators\n        int sepCnt = charsLen > 76 ? (chars[76] == '\\r' ? cCnt / 78 : 0) << 1 : 0;\n\n        int len = ((cCnt - sepCnt) * 6 >> 3) - pad; // The number of decoded bytes\n        byte[] bytes = new byte[len]; // Preallocate byte[] of exact length\n\n        // Decode all but the last 0 - 2 bytes.\n        int d = 0;\n        for (int cc = 0, eLen = (len / 3) * 3; d < eLen;) {\n            // Assemble three bytes into an int from four \"valid\" characters.\n            int i = IA[chars[sIx++]] << 18 | IA[chars[sIx++]] << 12 | IA[chars[sIx++]] << 6 | IA[chars[sIx++]];\n\n            // Add the bytes\n            bytes[d++] = (byte) (i >> 16);\n            bytes[d++] = (byte) (i >> 8);\n            bytes[d++] = (byte) i;\n\n            // If line separator, jump over it.\n            if (sepCnt > 0 && ++cc == 19) {\n                sIx += 2;\n                cc = 0;\n            }\n        }\n\n        if (d < len) {\n            // Decode last 1-3 bytes (incl '=') into 1-3 bytes\n            int i = 0;\n            for (int j = 0; sIx <= eIx - pad; j++)\n                i |= IA[chars[sIx++]] << (18 - j * 6);\n\n            for (int r = 16; d < len; r -= 8)\n                bytes[d++] = (byte) (i >> r);\n        }\n\n        return bytes;\n    }\n\n    public static byte[] decodeFast(String chars, int offset, int charsLen) {\n        // Check special case\n        if (charsLen == 0) {\n            return new byte[0];\n        }\n\n        int sIx = offset, eIx = offset + charsLen - 1; // Start and end index after trimming.\n\n        // Trim illegal chars from start\n        while (sIx < eIx && IA[chars.charAt(sIx)] < 0)\n            sIx++;\n\n        // Trim illegal chars from end\n        while (eIx > 0 && IA[chars.charAt(eIx)] < 0)\n            eIx--;\n\n        // get the padding count (=) (0, 1 or 2)\n        int pad = chars.charAt(eIx) == '=' ? (chars.charAt(eIx - 1) == '=' ? 2 : 1) : 0; // Count '=' at end.\n        int cCnt = eIx - sIx + 1; // Content count including possible separators\n        int sepCnt = charsLen > 76 ? (chars.charAt(76) == '\\r' ? cCnt / 78 : 0) << 1 : 0;\n\n        int len = ((cCnt - sepCnt) * 6 >> 3) - pad; // The number of decoded bytes\n        byte[] bytes = new byte[len]; // Preallocate byte[] of exact length\n\n        // Decode all but the last 0 - 2 bytes.\n        int d = 0;\n        for (int cc = 0, eLen = (len / 3) * 3; d < eLen;) {\n            // Assemble three bytes into an int from four \"valid\" characters.\n            int i = IA[chars.charAt(sIx++)] << 18 | IA[chars.charAt(sIx++)] << 12 | IA[chars.charAt(sIx++)] << 6 | IA[chars.charAt(sIx++)];\n\n            // Add the bytes\n            bytes[d++] = (byte) (i >> 16);\n            bytes[d++] = (byte) (i >> 8);\n            bytes[d++] = (byte) i;\n\n            // If line separator, jump over it.\n            if (sepCnt > 0 && ++cc == 19) {\n                sIx += 2;\n                cc = 0;\n            }\n        }\n\n        if (d < len) {\n            // Decode last 1-3 bytes (incl '=') into 1-3 bytes\n            int i = 0;\n            for (int j = 0; sIx <= eIx - pad; j++)\n                i |= IA[chars.charAt(sIx++)] << (18 - j * 6);\n\n            for (int r = 16; d < len; r -= 8)\n                bytes[d++] = (byte) (i >> r);\n        }\n\n        return bytes;\n    }\n\n    /**\n     * Decodes a BASE64 encoded string that is known to be resonably well formatted. The method is about twice as fast\n     * as decode(String). The preconditions are:<br>\n     * + The array must have a line length of 76 chars OR no line separators at all (one line).<br>\n     * + Line separator must be \"\\r\\n\", as specified in RFC 2045 + The array must not contain illegal characters within\n     * the encoded string<br>\n     * + The array CAN have illegal characters at the beginning and end, those will be dealt with appropriately.<br>\n     *\n     * @param s The source string. Length 0 will return an empty array. <code>null</code> will throw an exception.\n     * @return The decoded array of bytes. May be of length 0.\n     */\n    public static byte[] decodeFast(String s) {\n        // Check special case\n        int sLen = s.length();\n        if (sLen == 0) {\n            return new byte[0];\n        }\n\n        int sIx = 0, eIx = sLen - 1; // Start and end index after trimming.\n\n        // Trim illegal chars from start\n        while (sIx < eIx && IA[s.charAt(sIx) & 0xff] < 0)\n            sIx++;\n\n        // Trim illegal chars from end\n        while (eIx > 0 && IA[s.charAt(eIx) & 0xff] < 0)\n            eIx--;\n\n        // get the padding count (=) (0, 1 or 2)\n        int pad = s.charAt(eIx) == '=' ? (s.charAt(eIx - 1) == '=' ? 2 : 1) : 0; // Count '=' at end.\n        int cCnt = eIx - sIx + 1; // Content count including possible separators\n        int sepCnt = sLen > 76 ? (s.charAt(76) == '\\r' ? cCnt / 78 : 0) << 1 : 0;\n\n        int len = ((cCnt - sepCnt) * 6 >> 3) - pad; // The number of decoded bytes\n        byte[] dArr = new byte[len]; // Preallocate byte[] of exact length\n\n        // Decode all but the last 0 - 2 bytes.\n        int d = 0;\n        for (int cc = 0, eLen = (len / 3) * 3; d < eLen;) {\n            // Assemble three bytes into an int from four \"valid\" characters.\n            int i = IA[s.charAt(sIx++)] << 18 | IA[s.charAt(sIx++)] << 12 | IA[s.charAt(sIx++)] << 6\n                    | IA[s.charAt(sIx++)];\n\n            // Add the bytes\n            dArr[d++] = (byte) (i >> 16);\n            dArr[d++] = (byte) (i >> 8);\n            dArr[d++] = (byte) i;\n\n            // If line separator, jump over it.\n            if (sepCnt > 0 && ++cc == 19) {\n                sIx += 2;\n                cc = 0;\n            }\n        }\n\n        if (d < len) {\n            // Decode last 1-3 bytes (incl '=') into 1-3 bytes\n            int i = 0;\n            for (int j = 0; sIx <= eIx - pad; j++)\n                i |= IA[s.charAt(sIx++)] << (18 - j * 6);\n\n            for (int r = 16; d < len; r -= 8)\n                dArr[d++] = (byte) (i >> r);\n        }\n\n        return dArr;\n    }\n}"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/util/BiFunction.java",
    "content": "package com.alibaba.fastjson.util;\n\npublic interface BiFunction<T, U, R> {\n\n    /**\n     * Applies this function to the given arguments.\n     *\n     * @param t the first function argument\n     * @param u the second function argument\n     * @return the function result\n     */\n    R apply(T t, U u);\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/util/FieldInfo.java",
    "content": "package com.alibaba.fastjson.util;\n\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Array;\nimport java.lang.reflect.Field;\nimport java.lang.reflect.GenericArrayType;\nimport java.lang.reflect.GenericDeclaration;\nimport java.lang.reflect.InvocationTargetException;\nimport java.lang.reflect.Member;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Modifier;\nimport java.lang.reflect.ParameterizedType;\nimport java.lang.reflect.Type;\nimport java.lang.reflect.TypeVariable;\nimport java.util.Map;\n\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic class FieldInfo implements Comparable<FieldInfo> {\n\n    public final String     name;\n    public final Method     method;\n    public final Field      field;\n\n    private int             ordinal = 0;\n    public final Class<?>   fieldClass;\n    public final Type       fieldType;\n    public final Class<?>   declaringClass;\n    public final boolean    getOnly;\n    public final int        serialzeFeatures;\n    public final int        parserFeatures;\n    public final String     label;\n\n    private final JSONField fieldAnnotation;\n    private final JSONField methodAnnotation;\n\n    public final boolean    fieldAccess;\n    public final boolean    fieldTransient;\n\n    public final char[]     name_chars;\n    \n    public final boolean    isEnum;\n    public final boolean    jsonDirect;\n    public final boolean    unwrapped;\n    \n    public final String     format;\n\n    public final String[]  alternateNames;\n\n    public final long nameHashCode;\n    \n    public FieldInfo(String name, // \n                     Class<?> declaringClass, // \n                     Class<?> fieldClass, // \n                     Type fieldType, // \n                     Field field, // \n                     int ordinal, // \n                     int serialzeFeatures, // \n                     int parserFeatures){\n        if (ordinal < 0) {\n            ordinal = 0;\n        }\n\n        this.name = name;\n        this.declaringClass = declaringClass;\n        this.fieldClass = fieldClass;\n        this.fieldType = fieldType;\n        this.method = null;\n        this.field = field;\n        this.ordinal = ordinal;\n        this.serialzeFeatures = serialzeFeatures;\n        this.parserFeatures = parserFeatures;\n        \n        isEnum = fieldClass.isEnum();\n        \n        if (field != null) {\n            int modifiers = field.getModifiers();\n            fieldAccess = (modifiers & Modifier.PUBLIC) != 0 || method == null;\n            fieldTransient = Modifier.isTransient(modifiers);\n        } else {\n            fieldTransient = false;\n            fieldAccess = false;\n        }\n        \n        name_chars = genFieldNameChars();\n\n        if (field != null) {\n            TypeUtils.setAccessible(field);\n        }\n        \n        this.label = \"\";\n        fieldAnnotation = field == null ? null : TypeUtils.getAnnotation(field, JSONField.class);\n        methodAnnotation = null;\n        this.getOnly = false;\n        this.jsonDirect = false;\n        this.unwrapped = false;\n        this.format = null;\n        this.alternateNames = new String[0];\n\n        nameHashCode = nameHashCode64(name, fieldAnnotation);\n    }\n\n    public FieldInfo(String name, //\n                     Method method, //\n                     Field field, //\n                     Class<?> clazz, //\n                     Type type, //\n                     int ordinal, //\n                     int serialzeFeatures, //\n                     int parserFeatures, //\n                     JSONField fieldAnnotation, //\n                     JSONField methodAnnotation, //\n                     String label){\n        this(name, method, field, clazz, type, ordinal, serialzeFeatures, parserFeatures,\n                fieldAnnotation, methodAnnotation, label, null);\n    }\n\n    public FieldInfo(String name, //\n                     Method method, //\n                     Field field, //\n                     Class<?> clazz, //\n                     Type type, //\n                     int ordinal, //\n                     int serialzeFeatures, //\n                     int parserFeatures, //\n                     JSONField fieldAnnotation, //\n                     JSONField methodAnnotation, //\n                     String label,\n                     Map<TypeVariable, Type> genericInfo){\n        if (field != null) {\n            String fieldName = field.getName();\n            if (fieldName.equals(name)) {\n                name = fieldName;\n            }\n        }\n\n        if (ordinal < 0) {\n            ordinal = 0;\n        }\n        \n        this.name = name;\n        this.method = method;\n        this.field = field;\n        this.ordinal = ordinal;\n        this.serialzeFeatures = serialzeFeatures;\n        this.parserFeatures = parserFeatures;\n        this.fieldAnnotation = fieldAnnotation;\n        this.methodAnnotation = methodAnnotation;\n\n        if (field != null) {\n            int modifiers = field.getModifiers();\n            fieldAccess = ((modifiers & Modifier.PUBLIC) != 0 || method == null);\n            fieldTransient = Modifier.isTransient(modifiers)\n                    || TypeUtils.isTransient(method);\n        } else {\n            fieldAccess = false;\n            fieldTransient = TypeUtils.isTransient(method);\n        }\n        \n        if (label != null && label.length() > 0) { \n            this.label = label;\n        } else {\n            this.label = \"\";\n        }\n        \n        String format = null;\n        JSONField annotation = getAnnotation();\n\n        nameHashCode = nameHashCode64(name, annotation);\n\n        boolean jsonDirect = false;\n        if (annotation != null) {\n            format = annotation.format();\n\n            if (format.trim().length() == 0) {\n                format = null;\n            }\n            jsonDirect = annotation.jsonDirect();\n            unwrapped = annotation.unwrapped();\n            alternateNames = annotation.alternateNames();\n        } else {\n            jsonDirect = false;\n            unwrapped = false;\n            alternateNames = new String[0];\n        }\n        this.format = format;\n        \n        name_chars = genFieldNameChars();\n\n        if (method != null) {\n            TypeUtils.setAccessible(method);\n        }\n\n        if (field != null) {\n            TypeUtils.setAccessible(field);\n        }\n\n        boolean getOnly = false;\n        Type fieldType;\n        Class<?> fieldClass;\n        if (method != null) {\n        \tClass<?>[] types;\n            if ((types = method.getParameterTypes()).length == 1) {\n                fieldClass = types[0];\n                fieldType = method.getGenericParameterTypes()[0];\n            } else if (types.length == 2 && types[0] == String.class && types[1] == Object.class) {\n                fieldType = fieldClass = types[0];\n            } else {\n                fieldClass = method.getReturnType();\n                fieldType = method.getGenericReturnType();\n                getOnly = true;\n            }\n            this.declaringClass = method.getDeclaringClass();\n        } else {\n            fieldClass = field.getType();\n            fieldType = field.getGenericType();\n            this.declaringClass = field.getDeclaringClass();\n            getOnly = Modifier.isFinal(field.getModifiers());\n        }\n        this.getOnly = getOnly;\n        this.jsonDirect = jsonDirect && fieldClass == String.class;\n\n        if (clazz != null && fieldClass == Object.class && fieldType instanceof TypeVariable) {\n            TypeVariable<?> tv = (TypeVariable<?>) fieldType;\n            Type genericFieldType = getInheritGenericType(clazz, type, tv);\n            if (genericFieldType != null) {\n                this.fieldClass = TypeUtils.getClass(genericFieldType);\n                this.fieldType = genericFieldType;\n                \n                isEnum = fieldClass.isEnum();\n                return;\n            }\n        }\n\n        Type genericFieldType = fieldType;\n        \n        if (!(fieldType instanceof Class)) {\n            genericFieldType = getFieldType(clazz, type != null ? type : clazz, fieldType, genericInfo);\n\n            if (genericFieldType != fieldType) {\n                if (genericFieldType instanceof ParameterizedType) {\n                    fieldClass = TypeUtils.getClass(genericFieldType);\n                } else if (genericFieldType instanceof Class) {\n                    fieldClass = TypeUtils.getClass(genericFieldType);\n                }\n            }\n        }\n\n        this.fieldType = genericFieldType;\n        this.fieldClass = fieldClass;\n        \n        isEnum = fieldClass.isEnum();\n    }\n\n    private long nameHashCode64(String name, JSONField annotation)\n    {\n        if (annotation != null && annotation.name().length() != 0) {\n            return TypeUtils.fnv1a_64_lower(name);\n        }\n        return TypeUtils.fnv1a_64_extract(name);\n    }\n\n    protected char[] genFieldNameChars() {\n        int nameLen = this.name.length();\n        char[] name_chars = new char[nameLen + 3];\n        this.name.getChars(0, this.name.length(), name_chars, 1);\n        name_chars[0] = '\"';\n        name_chars[nameLen + 1] = '\"';\n        name_chars[nameLen + 2] = ':';\n        return name_chars;\n    }\n    \n    @SuppressWarnings(\"unchecked\")\n    public <T extends Annotation> T getAnnation(Class<T> annotationClass) {\n        if (annotationClass == JSONField.class) {\n            return (T) getAnnotation();\n        }\n        \n        T annotatition = null;\n        if (method != null) {\n            annotatition = TypeUtils.getAnnotation(method, annotationClass);\n        }\n        \n        if (annotatition == null && field != null) {\n            annotatition = TypeUtils.getAnnotation(field, annotationClass);\n        }\n        \n        return annotatition;\n    }\n\n    public static Type getFieldType(final Class<?> clazz, final Type type, Type fieldType){\n        return getFieldType(clazz, type, fieldType, null);\n    }\n\n    public static Type getFieldType(final Class<?> clazz, final Type type, Type fieldType, Map<TypeVariable, Type> genericInfo) {\n        if (clazz == null || type == null) {\n            return fieldType;\n        }\n\n        if (fieldType instanceof GenericArrayType) {\n            GenericArrayType genericArrayType = (GenericArrayType) fieldType;\n            Type componentType = genericArrayType.getGenericComponentType();\n            Type componentTypeX = getFieldType(clazz, type, componentType, genericInfo);\n            if (componentType != componentTypeX) {\n                Type fieldTypeX = Array.newInstance(TypeUtils.getClass(componentTypeX), 0).getClass();\n                return fieldTypeX;\n            }\n\n            return fieldType;\n        }\n\n        if (!TypeUtils.isGenericParamType(type)) {\n            return fieldType;\n        }\n\n        if (fieldType instanceof TypeVariable) {\n            ParameterizedType paramType = (ParameterizedType) TypeUtils.getGenericParamType(type);\n            Class<?> parameterizedClass = TypeUtils.getClass(paramType);\n            final TypeVariable<?> typeVar = (TypeVariable<?>) fieldType;\n            \n            TypeVariable<?>[] typeVariables = parameterizedClass.getTypeParameters();\n            for (int i = 0; i < typeVariables.length; ++i) {\n                if (typeVariables[i].getName().equals(typeVar.getName())) {\n                    fieldType = paramType.getActualTypeArguments()[i];\n                    return fieldType;\n                }\n            }\n        }\n\n        if (fieldType instanceof ParameterizedType) {\n            ParameterizedType parameterizedFieldType = (ParameterizedType) fieldType;\n\n            Type[] arguments = parameterizedFieldType.getActualTypeArguments();\n            TypeVariable<?>[] typeVariables;\n            ParameterizedType paramType;\n\n            boolean changed = getArgument(arguments, genericInfo);\n            //if genericInfo is not working use the old path;\n            if(!changed){\n                if (type instanceof ParameterizedType) {\n                    paramType = (ParameterizedType) type;\n                    typeVariables = clazz.getTypeParameters();\n                } else if(clazz.getGenericSuperclass() instanceof ParameterizedType) {\n                    paramType = (ParameterizedType) clazz.getGenericSuperclass();\n                    typeVariables = clazz.getSuperclass().getTypeParameters();\n                } else {\n                    paramType = parameterizedFieldType;\n                    typeVariables = type.getClass().getTypeParameters();\n                }\n\n                changed = getArgument(arguments, typeVariables, paramType.getActualTypeArguments());\n            }\n\n            if (changed) {\n                fieldType = TypeReference.intern(\n                        new ParameterizedTypeImpl(arguments, parameterizedFieldType.getOwnerType(),\n                                parameterizedFieldType.getRawType())\n                );\n                return fieldType;\n            }\n        }\n\n        return fieldType;\n    }\n\n    private static boolean getArgument(Type[] typeArgs, Map<TypeVariable, Type> genericInfo){\n        if(genericInfo == null || genericInfo.size() == 0){\n            return false;\n        }\n        boolean changed = false;\n        for (int i = 0; i < typeArgs.length; ++i) {\n            Type typeArg = typeArgs[i];\n            if (typeArg instanceof ParameterizedType) {\n                ParameterizedType p_typeArg = (ParameterizedType) typeArg;\n                Type[] p_typeArg_args = p_typeArg.getActualTypeArguments();\n                boolean p_changed = getArgument(p_typeArg_args, genericInfo);\n                if (p_changed) {\n                    typeArgs[i] = TypeReference.intern(\n                            new ParameterizedTypeImpl(p_typeArg_args, p_typeArg.getOwnerType(), p_typeArg.getRawType())\n                    );\n                    changed = true;\n                }\n            } else if (typeArg instanceof TypeVariable) {\n                if (genericInfo.containsKey(typeArg)) {\n                    typeArgs[i] = genericInfo.get(typeArg);\n                    changed = true;\n                }\n            }\n        }\n\n        return changed;\n    }\n\n    private static boolean getArgument(Type[] typeArgs, TypeVariable[] typeVariables, Type[] arguments) {\n        if (arguments == null || typeVariables.length == 0) {\n            return false;\n        }\n\n        boolean changed = false;\n        for (int i = 0; i < typeArgs.length; ++i) {\n            Type typeArg = typeArgs[i];\n            if (typeArg instanceof ParameterizedType) {\n                ParameterizedType p_typeArg = (ParameterizedType) typeArg;\n                Type[] p_typeArg_args = p_typeArg.getActualTypeArguments();\n                boolean p_changed = getArgument(p_typeArg_args, typeVariables, arguments);\n                if (p_changed) {\n                    typeArgs[i] = TypeReference.intern(\n                            new ParameterizedTypeImpl(p_typeArg_args, p_typeArg.getOwnerType(), p_typeArg.getRawType())\n                    );\n                    changed = true;\n                }\n            } else if (typeArg instanceof TypeVariable) {\n                for (int j = 0; j < typeVariables.length; ++j) {\n                    if (typeArg.equals(typeVariables[j])) {\n                        typeArgs[i] = arguments[j];\n                        changed = true;\n                    }\n                }\n            }\n        }\n\n        return changed;\n    }\n\n    private static Type getInheritGenericType(Class<?> clazz, Type type, TypeVariable<?> tv) {\n        GenericDeclaration gd = tv.getGenericDeclaration();\n\n        Class<?> class_gd = null;\n        if (gd instanceof Class) {\n            class_gd = (Class<?>) tv.getGenericDeclaration();\n        }\n\n        Type[] arguments = null;\n        if (class_gd == clazz) {\n            if (type instanceof ParameterizedType) {\n                ParameterizedType ptype = (ParameterizedType) type;\n                arguments = ptype.getActualTypeArguments();\n            }\n        } else {\n            for (Class<?> c = clazz; c != null && c != Object.class && c != class_gd; c = c.getSuperclass()) {\n                Type superType = c.getGenericSuperclass();\n\n                if (superType instanceof ParameterizedType) {\n                    ParameterizedType p_superType = (ParameterizedType) superType;\n                    Type[] p_superType_args = p_superType.getActualTypeArguments();\n                    getArgument(p_superType_args, c.getTypeParameters(), arguments);\n                    arguments = p_superType_args;\n                }\n            }\n        }\n\n        if (arguments == null || class_gd == null) {\n            return null;\n        }\n\n        Type actualType = null;\n        TypeVariable<?>[] typeVariables = class_gd.getTypeParameters();\n        for (int j = 0; j < typeVariables.length; ++j) {\n            if (tv.equals(typeVariables[j])) {\n                actualType = arguments[j];\n                break;\n            }\n        }\n\n        return actualType;\n    }\n\n    public String toString() {\n        return this.name;\n    }\n\n    public Member getMember() {\n        if (method != null) {\n            return method;\n        } else {\n            return field;\n        }\n    }\n\n    protected Class<?> getDeclaredClass() {\n        if (this.method != null) {\n            return this.method.getDeclaringClass();\n        }\n        \n        if (this.field != null) {\n            return this.field.getDeclaringClass();\n        }\n        \n        return null;\n    }\n\n    public int compareTo(FieldInfo o) {\n        // Deal extend bridge\n        if (o.method != null && this.method != null\n                && o.method.isBridge() && !this.method.isBridge()\n                && o.method.getName().equals(this.method.getName())) {\n            return 1;\n        }\n\n        if (this.ordinal < o.ordinal) {\n            return -1;\n        }\n\n        if (this.ordinal > o.ordinal) {\n            return 1;\n        }\n\n        int result = this.name.compareTo(o.name);\n        \n        if (result != 0) {\n            return result;\n        }\n        \n        Class<?> thisDeclaringClass = this.getDeclaredClass();\n        Class<?> otherDeclaringClass = o.getDeclaredClass();\n        \n        if (thisDeclaringClass != null && otherDeclaringClass != null && thisDeclaringClass != otherDeclaringClass) {\n            if (thisDeclaringClass.isAssignableFrom(otherDeclaringClass)) {\n                return -1;\n            }\n            \n            if (otherDeclaringClass.isAssignableFrom(thisDeclaringClass)) {\n                return 1;\n            }\n        }\n        boolean isSampeType = this.field != null && this.field.getType() == this.fieldClass;\n        boolean oSameType = o.field != null && o.field.getType() == o.fieldClass;\n        \n        if (isSampeType && !oSameType) {\n            return 1;\n        }\n        \n        if (oSameType && !isSampeType) {\n            return -1;\n        }\n        \n        if (o.fieldClass.isPrimitive() && !this.fieldClass.isPrimitive()) {\n            return 1;\n        }\n        \n        if (this.fieldClass.isPrimitive() && !o.fieldClass.isPrimitive()) {\n            return -1;\n        }\n        \n        if (o.fieldClass.getName().startsWith(\"java.\") && !this.fieldClass.getName().startsWith(\"java.\")) {\n            return 1;\n        }\n        \n        if (this.fieldClass.getName().startsWith(\"java.\") && !o.fieldClass.getName().startsWith(\"java.\")) {\n            return -1;\n        }\n        \n        return this.fieldClass.getName().compareTo(o.fieldClass.getName());\n    }\n    \n    public JSONField getAnnotation() {\n        if (this.fieldAnnotation != null) {\n            return this.fieldAnnotation;\n        }\n        \n        return this.methodAnnotation;\n    }\n\n    public String getFormat() {\n        return format;\n    }\n\n    public Object get(Object javaObject) throws IllegalAccessException, InvocationTargetException {\n        return method != null\n                ? method.invoke(javaObject)\n                : field.get(javaObject);\n    }\n\n    public void set(Object javaObject, Object value) throws IllegalAccessException, InvocationTargetException {\n        if (method != null) {\n            method.invoke(javaObject, new Object[] { value });\n            return;\n        }\n\n        field.set(javaObject, value);\n    }\n\n    public void setAccessible() throws SecurityException {\n        if (method != null) {\n            TypeUtils.setAccessible(method);\n            return;\n        }\n\n        TypeUtils.setAccessible(field);\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/util/Function.java",
    "content": "package com.alibaba.fastjson.util;\n\npublic interface Function<ARG, V> {\n    /**\n     * Computes a result\n     *\n     * @return computed result\n     */\n    V apply(ARG arg);\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/util/GenericArrayTypeImpl.java",
    "content": "package com.alibaba.fastjson.util;\n\nimport java.lang.reflect.GenericArrayType;\nimport java.lang.reflect.Type;\n\npublic class GenericArrayTypeImpl implements GenericArrayType {\n    private final Type genericComponentType;\n\n    public GenericArrayTypeImpl(Type genericComponentType) {\n        assert genericComponentType != null;\n        this.genericComponentType = genericComponentType;\n    }\n\n    @Override\n    public Type getGenericComponentType() {\n        return this.genericComponentType;\n    }\n\n    @Override\n    public String toString() {\n        Type genericComponentType = this.getGenericComponentType();\n        StringBuilder builder = new StringBuilder();\n        if (genericComponentType instanceof Class) {\n            builder.append(((Class) genericComponentType).getName());\n        } else {\n            builder.append(genericComponentType.toString());\n        }\n        builder.append(\"[]\");\n        return builder.toString();\n    }\n\n    @Override\n    public boolean equals(Object obj) {\n        if (obj instanceof GenericArrayType) {\n            GenericArrayType that = (GenericArrayType) obj;\n            return this.genericComponentType.equals(that.getGenericComponentType());\n        }\n        return false;\n    }\n\n    @Override\n    public int hashCode() {\n        return this.genericComponentType.hashCode();\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/util/IOUtils.java",
    "content": "/*\r\n * Copyright 1999-2017 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.util;\r\n\r\nimport java.io.Closeable;\r\nimport java.io.InputStream;\r\nimport java.io.Reader;\r\nimport java.nio.ByteBuffer;\r\nimport java.nio.CharBuffer;\r\nimport java.nio.charset.CharacterCodingException;\r\nimport java.nio.charset.Charset;\r\nimport java.nio.charset.CharsetDecoder;\r\nimport java.nio.charset.CoderResult;\r\nimport java.nio.charset.MalformedInputException;\r\nimport java.security.AccessController;\r\nimport java.security.PrivilegedAction;\r\nimport java.util.Arrays;\r\nimport java.util.Properties;\r\n\r\nimport com.alibaba.fastjson.JSONException;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class IOUtils {\r\n    \r\n    public final static String     FASTJSON_PROPERTIES              = \"fastjson.properties\";\r\n    public final static String     FASTJSON_COMPATIBLEWITHJAVABEAN  = \"fastjson.compatibleWithJavaBean\";\r\n    public final static String     FASTJSON_COMPATIBLEWITHFIELDNAME = \"fastjson.compatibleWithFieldName\";\r\n    public final static Properties DEFAULT_PROPERTIES               = new Properties();\r\n    public final static Charset    UTF8                             = Charset.forName(\"UTF-8\");\r\n    public final static char[]     DIGITS                           = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};\r\n    public final static boolean[]  firstIdentifierFlags             = new boolean[256];\r\n    public final static boolean[]  identifierFlags                  = new boolean[256];\r\n    static {\r\n        for (char c = 0; c < firstIdentifierFlags.length; ++c) {\r\n            if (c >= 'A' && c <= 'Z') {\r\n                firstIdentifierFlags[c] = true;\r\n            } else if (c >= 'a' && c <= 'z') {\r\n                firstIdentifierFlags[c] = true;\r\n            } else if (c == '_' || c == '$') {\r\n                firstIdentifierFlags[c] = true;\r\n            }\r\n        }\r\n\r\n        for (char c = 0; c < identifierFlags.length; ++c) {\r\n            if (c >= 'A' && c <= 'Z') {\r\n                identifierFlags[c] = true;\r\n            } else if (c >= 'a' && c <= 'z') {\r\n                identifierFlags[c] = true;\r\n            } else if (c == '_') {\r\n                identifierFlags[c] = true;\r\n            } else if (c >= '0' && c <= '9') {\r\n                identifierFlags[c] = true;\r\n            }\r\n        }\r\n\r\n        try {\r\n            loadPropertiesFromFile();\r\n        } catch (Throwable e) {\r\n            //skip\r\n        }\r\n    }\r\n    \r\n    public static String getStringProperty(String name) {\r\n        String prop = null;\r\n        try {\r\n            prop = System.getProperty(name);\r\n        } catch (SecurityException e) {\r\n            //skip\r\n        }\r\n        return (prop == null) ? DEFAULT_PROPERTIES.getProperty(name) : prop;\r\n    }\r\n    \r\n    public static void loadPropertiesFromFile(){\r\n        InputStream imputStream = AccessController.doPrivileged(new PrivilegedAction<InputStream>() {\r\n            public InputStream run() {\r\n                ClassLoader cl = Thread.currentThread().getContextClassLoader();\r\n                if (cl != null) {\r\n                    return cl.getResourceAsStream(FASTJSON_PROPERTIES);\r\n                } else {\r\n                    return ClassLoader.getSystemResourceAsStream(FASTJSON_PROPERTIES);\r\n                }\r\n            }\r\n        });\r\n        \r\n        if (null != imputStream) {\r\n            try {\r\n                DEFAULT_PROPERTIES.load(imputStream);\r\n                imputStream.close();\r\n            } catch (java.io.IOException e) {\r\n                // skip\r\n            }\r\n        }\r\n    }\r\n\r\n    public final static byte[]    specicalFlags_doubleQuotes = new byte[161];\r\n    public final static byte[]    specicalFlags_singleQuotes = new byte[161];\r\n    public final static boolean[] specicalFlags_doubleQuotesFlags = new boolean[161];\r\n    public final static boolean[] specicalFlags_singleQuotesFlags = new boolean[161];\r\n\r\n    public final static char[]    replaceChars               = new char[93];\r\n    static {\r\n        specicalFlags_doubleQuotes['\\0'] = 4;\r\n        specicalFlags_doubleQuotes['\\1'] = 4;\r\n        specicalFlags_doubleQuotes['\\2'] = 4;\r\n        specicalFlags_doubleQuotes['\\3'] = 4;\r\n        specicalFlags_doubleQuotes['\\4'] = 4;\r\n        specicalFlags_doubleQuotes['\\5'] = 4;\r\n        specicalFlags_doubleQuotes['\\6'] = 4;\r\n        specicalFlags_doubleQuotes['\\7'] = 4;\r\n        specicalFlags_doubleQuotes['\\b'] = 1; // 8\r\n        specicalFlags_doubleQuotes['\\t'] = 1; // 9\r\n        specicalFlags_doubleQuotes['\\n'] = 1; // 10\r\n        specicalFlags_doubleQuotes['\\u000B'] = 4; // 11\r\n        specicalFlags_doubleQuotes['\\f'] = 1; // 12\r\n        specicalFlags_doubleQuotes['\\r'] = 1; // 13\r\n        specicalFlags_doubleQuotes['\\\"'] = 1; // 34\r\n        specicalFlags_doubleQuotes['\\\\'] = 1; // 92\r\n\r\n        specicalFlags_singleQuotes['\\0'] = 4;\r\n        specicalFlags_singleQuotes['\\1'] = 4;\r\n        specicalFlags_singleQuotes['\\2'] = 4;\r\n        specicalFlags_singleQuotes['\\3'] = 4;\r\n        specicalFlags_singleQuotes['\\4'] = 4;\r\n        specicalFlags_singleQuotes['\\5'] = 4;\r\n        specicalFlags_singleQuotes['\\6'] = 4;\r\n        specicalFlags_singleQuotes['\\7'] = 4;\r\n        specicalFlags_singleQuotes['\\b'] = 1; // 8\r\n        specicalFlags_singleQuotes['\\t'] = 1; // 9\r\n        specicalFlags_singleQuotes['\\n'] = 1; // 10\r\n        specicalFlags_singleQuotes['\\u000B'] = 4; // 11\r\n        specicalFlags_singleQuotes['\\f'] = 1; // 12\r\n        specicalFlags_singleQuotes['\\r'] = 1; // 13\r\n        specicalFlags_singleQuotes['\\\\'] = 1; // 92\r\n        specicalFlags_singleQuotes['\\''] = 1; // 39\r\n\r\n        for (int i = 14; i <= 31; ++i) {\r\n            specicalFlags_doubleQuotes[i] = 4;\r\n            specicalFlags_singleQuotes[i] = 4;\r\n        }\r\n\r\n        for (int i = 127; i < 160; ++i) {\r\n            specicalFlags_doubleQuotes[i] = 4;\r\n            specicalFlags_singleQuotes[i] = 4;\r\n        }\r\n        \r\n        for (int i = 0; i < 161; ++i) {\r\n            specicalFlags_doubleQuotesFlags[i] = specicalFlags_doubleQuotes[i] != 0;\r\n            specicalFlags_singleQuotesFlags[i] = specicalFlags_singleQuotes[i] != 0;\r\n        }\r\n\r\n        replaceChars['\\0'] = '0';\r\n        replaceChars['\\1'] = '1';\r\n        replaceChars['\\2'] = '2';\r\n        replaceChars['\\3'] = '3';\r\n        replaceChars['\\4'] = '4';\r\n        replaceChars['\\5'] = '5';\r\n        replaceChars['\\6'] = '6';\r\n        replaceChars['\\7'] = '7';\r\n        replaceChars['\\b'] = 'b'; // 8\r\n        replaceChars['\\t'] = 't'; // 9\r\n        replaceChars['\\n'] = 'n'; // 10\r\n        replaceChars['\\u000B'] = 'v'; // 11\r\n        replaceChars['\\f'] = 'f'; // 12\r\n        replaceChars['\\r'] = 'r'; // 13\r\n        replaceChars['\\\"'] = '\"'; // 34\r\n        replaceChars['\\''] = '\\''; // 39\r\n        replaceChars['/'] = '/'; // 47\r\n        replaceChars['\\\\'] = '\\\\'; // 92\r\n    }\r\n\r\n    public final static char[]    ASCII_CHARS                = { '0', '0', '0', '1', '0', '2', '0', '3', '0', '4', '0',\r\n            '5', '0', '6', '0', '7', '0', '8', '0', '9', '0', 'A', '0', 'B', '0', 'C', '0', 'D', '0', 'E', '0', 'F',\r\n            '1', '0', '1', '1', '1', '2', '1', '3', '1', '4', '1', '5', '1', '6', '1', '7', '1', '8', '1', '9', '1',\r\n            'A', '1', 'B', '1', 'C', '1', 'D', '1', 'E', '1', 'F', '2', '0', '2', '1', '2', '2', '2', '3', '2', '4',\r\n            '2', '5', '2', '6', '2', '7', '2', '8', '2', '9', '2', 'A', '2', 'B', '2', 'C', '2', 'D', '2', 'E', '2',\r\n            'F',                                            };\r\n\r\n    public static void close(Closeable x) {\r\n        if (x != null) {\r\n            try {\r\n                x.close();\r\n            } catch (Exception e) {\r\n                // skip\r\n            }\r\n        }\r\n    }\r\n\r\n    // Requires positive x\r\n    public static int stringSize(long x) {\r\n        long p = 10;\r\n        for (int i = 1; i < 19; i++) {\r\n            if (x < p) return i;\r\n            p = 10 * p;\r\n        }\r\n        return 19;\r\n    }\r\n\r\n    public static void getChars(long i, int index, char[] buf) {\r\n        long q;\r\n        int r;\r\n        int charPos = index;\r\n        char sign = 0;\r\n\r\n        if (i < 0) {\r\n            sign = '-';\r\n            i = -i;\r\n        }\r\n\r\n        // Get 2 digits/iteration using longs until quotient fits into an int\r\n        while (i > Integer.MAX_VALUE) {\r\n            q = i / 100;\r\n            // really: r = i - (q * 100);\r\n            r = (int) (i - ((q << 6) + (q << 5) + (q << 2)));\r\n            i = q;\r\n            buf[--charPos] = DigitOnes[r];\r\n            buf[--charPos] = DigitTens[r];\r\n        }\r\n\r\n        // Get 2 digits/iteration using ints\r\n        int q2;\r\n        int i2 = (int) i;\r\n        while (i2 >= 65536) {\r\n            q2 = i2 / 100;\r\n            // really: r = i2 - (q * 100);\r\n            r = i2 - ((q2 << 6) + (q2 << 5) + (q2 << 2));\r\n            i2 = q2;\r\n            buf[--charPos] = DigitOnes[r];\r\n            buf[--charPos] = DigitTens[r];\r\n        }\r\n\r\n        // Fall thru to fast mode for smaller numbers\r\n        // assert(i2 <= 65536, i2);\r\n        for (;;) {\r\n            q2 = (i2 * 52429) >>> (16 + 3);\r\n            r = i2 - ((q2 << 3) + (q2 << 1)); // r = i2-(q2*10) ...\r\n            buf[--charPos] = digits[r];\r\n            i2 = q2;\r\n            if (i2 == 0) break;\r\n        }\r\n        if (sign != 0) {\r\n            buf[--charPos] = sign;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Places characters representing the integer i into the character array buf. The characters are placed into the\r\n     * buffer backwards starting with the least significant digit at the specified index (exclusive), and working\r\n     * backwards from there. Will fail if i == Integer.MIN_VALUE\r\n     */\r\n    public static void getChars(int i, int index, char[] buf) {\r\n        int q, r, p = index;\r\n        char sign = 0;\r\n\r\n        if (i < 0) {\r\n            sign = '-';\r\n            i = -i;\r\n        }\r\n\r\n        while (i >= 65536) {\r\n            q = i / 100;\r\n            // really: r = i - (q * 100);\r\n            r = i - ((q << 6) + (q << 5) + (q << 2));\r\n            i = q;\r\n            buf[--p] = DigitOnes[r];\r\n            buf[--p] = DigitTens[r];\r\n        }\r\n\r\n        // Fall thru to fast mode for smaller numbers\r\n        // assert(i <= 65536, i);\r\n        for (;;) {\r\n            q = (i * 52429) >>> (16 + 3);\r\n            r = i - ((q << 3) + (q << 1)); // r = i-(q*10) ...\r\n            buf[--p] = digits[r];\r\n            i = q;\r\n            if (i == 0) break;\r\n        }\r\n        if (sign != 0) {\r\n            buf[--p] = sign;\r\n        }\r\n    }\r\n\r\n    public static void getChars(byte b, int index, char[] buf) {\r\n        int i = b;\r\n        int q, r;\r\n        int charPos = index;\r\n        char sign = 0;\r\n\r\n        if (i < 0) {\r\n            sign = '-';\r\n            i = -i;\r\n        }\r\n\r\n        // Fall thru to fast mode for smaller numbers\r\n        // assert(i <= 65536, i);\r\n        for (;;) {\r\n            q = (i * 52429) >>> (16 + 3);\r\n            r = i - ((q << 3) + (q << 1)); // r = i-(q*10) ...\r\n            buf[--charPos] = digits[r];\r\n            i = q;\r\n            if (i == 0) break;\r\n        }\r\n        if (sign != 0) {\r\n            buf[--charPos] = sign;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * All possible chars for representing a number as a String\r\n     */\r\n    final static char[] digits    = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f',\r\n            'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };\r\n\r\n    final static char[] DigitTens = { '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '1', '1',\r\n            '1', '1', '1', '1', '2', '2', '2', '2', '2', '2', '2', '2', '2', '2', '3', '3', '3', '3', '3', '3', '3',\r\n            '3', '3', '3', '4', '4', '4', '4', '4', '4', '4', '4', '4', '4', '5', '5', '5', '5', '5', '5', '5', '5',\r\n            '5', '5', '6', '6', '6', '6', '6', '6', '6', '6', '6', '6', '7', '7', '7', '7', '7', '7', '7', '7', '7',\r\n            '7', '8', '8', '8', '8', '8', '8', '8', '8', '8', '8', '9', '9', '9', '9', '9', '9', '9', '9', '9', '9', };\r\n\r\n    final static char[] DigitOnes = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '1', '2', '3', '4', '5',\r\n            '6', '7', '8', '9', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '1', '2', '3', '4', '5', '6',\r\n            '7', '8', '9', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '1', '2', '3', '4', '5', '6', '7',\r\n            '8', '9', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '1', '2', '3', '4', '5', '6', '7', '8',\r\n            '9', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', };\r\n\r\n    final static int[]  sizeTable = { 9, 99, 999, 9999, 99999, 999999, 9999999, 99999999, 999999999, Integer.MAX_VALUE };\r\n\r\n    // Requires positive x\r\n    public static int stringSize(int x) {\r\n        for (int i = 0;; i++) {\r\n            if (x <= sizeTable[i]) {\r\n                return i + 1;\r\n            }\r\n        }\r\n    }\r\n\r\n    public static void decode(CharsetDecoder charsetDecoder, ByteBuffer byteBuf, CharBuffer charByte) {\r\n        try {\r\n            CoderResult cr = charsetDecoder.decode(byteBuf, charByte, true);\r\n\r\n            if (!cr.isUnderflow()) {\r\n                cr.throwException();\r\n            }\r\n\r\n            cr = charsetDecoder.flush(charByte);\r\n\r\n            if (!cr.isUnderflow()) {\r\n                cr.throwException();\r\n            }\r\n        } catch (CharacterCodingException x) {\r\n            // Substitution is always enabled,\r\n            // so this shouldn't happen\r\n            throw new JSONException(\"utf8 decode error, \" + x.getMessage(), x);\r\n        }\r\n    }\r\n\r\n    public static boolean firstIdentifier(char ch) {\r\n        return ch < IOUtils.firstIdentifierFlags.length && IOUtils.firstIdentifierFlags[ch];\r\n    }\r\n    \r\n    public static boolean isIdent(char ch) {\r\n        return ch < identifierFlags.length && identifierFlags[ch];\r\n    }\r\n    \r\n    public static final char[] CA = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\".toCharArray();\r\n    public static final int[]  IA = new int[256];\r\n    static {\r\n        Arrays.fill(IA, -1);\r\n        for (int i = 0, iS = CA.length; i < iS; i++)\r\n            IA[CA[i]] = i;\r\n        IA['='] = 0;\r\n    }\r\n\r\n    /**\r\n     * Decodes a BASE64 encoded char array that is known to be resonably well formatted. The method is about twice as\r\n     * fast as #decode(char[]). The preconditions are:<br>\r\n     * + The array must have a line length of 76 chars OR no line separators at all (one line).<br>\r\n     * + Line separator must be \"\\r\\n\", as specified in RFC 2045 + The array must not contain illegal characters within\r\n     * the encoded string<br>\r\n     * + The array CAN have illegal characters at the beginning and end, those will be dealt with appropriately.<br>\r\n     *\r\n     * @author Mikael Grev Date: 2004-aug-02 Time: 11:31:11\r\n     * @param chars The source array. Length 0 will return an empty array. <code>null</code> will throw an exception.\r\n     * @return The decoded array of bytes. May be of length 0.\r\n     */\r\n    public static byte[] decodeBase64(char[] chars, int offset, int charsLen) {\r\n        // Check special case\r\n        if (charsLen == 0) {\r\n            return new byte[0];\r\n        }\r\n\r\n        int sIx = offset, eIx = offset + charsLen - 1; // Start and end index after trimming.\r\n\r\n        // Trim illegal chars from start\r\n        while (sIx < eIx && IA[chars[sIx]] < 0)\r\n            sIx++;\r\n\r\n        // Trim illegal chars from end\r\n        while (eIx > 0 && IA[chars[eIx]] < 0)\r\n            eIx--;\r\n\r\n        // get the padding count (=) (0, 1 or 2)\r\n        int pad = chars[eIx] == '=' ? (chars[eIx - 1] == '=' ? 2 : 1) : 0; // Count '=' at end.\r\n        int cCnt = eIx - sIx + 1; // Content count including possible separators\r\n        int sepCnt = charsLen > 76 ? (chars[76] == '\\r' ? cCnt / 78 : 0) << 1 : 0;\r\n\r\n        int len = ((cCnt - sepCnt) * 6 >> 3) - pad; // The number of decoded bytes\r\n        byte[] bytes = new byte[len]; // Preallocate byte[] of exact length\r\n\r\n        // Decode all but the last 0 - 2 bytes.\r\n        int d = 0;\r\n        for (int cc = 0, eLen = (len / 3) * 3; d < eLen;) {\r\n            // Assemble three bytes into an int from four \"valid\" characters.\r\n            int i = IA[chars[sIx++]] << 18 | IA[chars[sIx++]] << 12 | IA[chars[sIx++]] << 6 | IA[chars[sIx++]];\r\n\r\n            // Add the bytes\r\n            bytes[d++] = (byte) (i >> 16);\r\n            bytes[d++] = (byte) (i >> 8);\r\n            bytes[d++] = (byte) i;\r\n\r\n            // If line separator, jump over it.\r\n            if (sepCnt > 0 && ++cc == 19) {\r\n                sIx += 2;\r\n                cc = 0;\r\n            }\r\n        }\r\n\r\n        if (d < len) {\r\n            // Decode last 1-3 bytes (incl '=') into 1-3 bytes\r\n            int i = 0;\r\n            for (int j = 0; sIx <= eIx - pad; j++)\r\n                i |= IA[chars[sIx++]] << (18 - j * 6);\r\n\r\n            for (int r = 16; d < len; r -= 8)\r\n                bytes[d++] = (byte) (i >> r);\r\n        }\r\n\r\n        return bytes;\r\n    }\r\n\r\n    /**\r\n     * @author Mikael Grev Date: 2004-aug-02 Time: 11:31:11\r\n     */\r\n    public static byte[] decodeBase64(String chars, int offset, int charsLen) {\r\n        // Check special case\r\n        if (charsLen == 0) {\r\n            return new byte[0];\r\n        }\r\n\r\n        int sIx = offset, eIx = offset + charsLen - 1; // Start and end index after trimming.\r\n\r\n        // Trim illegal chars from start\r\n        while (sIx < eIx && IA[chars.charAt(sIx)] < 0)\r\n            sIx++;\r\n\r\n        // Trim illegal chars from end\r\n        while (eIx > 0 && IA[chars.charAt(eIx)] < 0)\r\n            eIx--;\r\n\r\n        // get the padding count (=) (0, 1 or 2)\r\n        int pad = chars.charAt(eIx) == '=' ? (chars.charAt(eIx - 1) == '=' ? 2 : 1) : 0; // Count '=' at end.\r\n        int cCnt = eIx - sIx + 1; // Content count including possible separators\r\n        int sepCnt = charsLen > 76 ? (chars.charAt(76) == '\\r' ? cCnt / 78 : 0) << 1 : 0;\r\n\r\n        int len = ((cCnt - sepCnt) * 6 >> 3) - pad; // The number of decoded bytes\r\n        byte[] bytes = new byte[len]; // Preallocate byte[] of exact length\r\n\r\n        // Decode all but the last 0 - 2 bytes.\r\n        int d = 0;\r\n        for (int cc = 0, eLen = (len / 3) * 3; d < eLen;) {\r\n            // Assemble three bytes into an int from four \"valid\" characters.\r\n            int i = IA[chars.charAt(sIx++)] << 18\r\n                    | IA[chars.charAt(sIx++)] << 12\r\n                    | IA[chars.charAt(sIx++)] << 6\r\n                    | IA[chars.charAt(sIx++)];\r\n\r\n            // Add the bytes\r\n            bytes[d++] = (byte) (i >> 16);\r\n            bytes[d++] = (byte) (i >> 8);\r\n            bytes[d++] = (byte) i;\r\n\r\n            // If line separator, jump over it.\r\n            if (sepCnt > 0 && ++cc == 19) {\r\n                sIx += 2;\r\n                cc = 0;\r\n            }\r\n        }\r\n\r\n        if (d < len) {\r\n            // Decode last 1-3 bytes (incl '=') into 1-3 bytes\r\n            int i = 0;\r\n            for (int j = 0; sIx <= eIx - pad; j++)\r\n                i |= IA[chars.charAt(sIx++)] << (18 - j * 6);\r\n\r\n            for (int r = 16; d < len; r -= 8)\r\n                bytes[d++] = (byte) (i >> r);\r\n        }\r\n\r\n        return bytes;\r\n    }\r\n\r\n    /**\r\n     * Decodes a BASE64 encoded string that is known to be resonably well formatted. The method is about twice as fast\r\n     * as decode(String). The preconditions are:<br>\r\n     * + The array must have a line length of 76 chars OR no line separators at all (one line).<br>\r\n     * + Line separator must be \"\\r\\n\", as specified in RFC 2045 + The array must not contain illegal characters within\r\n     * the encoded string<br>\r\n     * + The array CAN have illegal characters at the beginning and end, those will be dealt with appropriately.<br>\r\n     *\r\n     * @author Mikael Grev Date: 2004-aug-02 Time: 11:31:11\r\n     * @param s The source string. Length 0 will return an empty array. <code>null</code> will throw an exception.\r\n     * @return The decoded array of bytes. May be of length 0.\r\n     */\r\n    public static byte[] decodeBase64(String s) {\r\n        // Check special case\r\n        int sLen = s.length();\r\n        if (sLen == 0) {\r\n            return new byte[0];\r\n        }\r\n\r\n        int sIx = 0, eIx = sLen - 1; // Start and end index after trimming.\r\n\r\n        // Trim illegal chars from start\r\n        while (sIx < eIx && IA[s.charAt(sIx) & 0xff] < 0)\r\n            sIx++;\r\n\r\n        // Trim illegal chars from end\r\n        while (eIx > 0 && IA[s.charAt(eIx) & 0xff] < 0)\r\n            eIx--;\r\n\r\n        // get the padding count (=) (0, 1 or 2)\r\n        int pad = s.charAt(eIx) == '=' ? (s.charAt(eIx - 1) == '=' ? 2 : 1) : 0; // Count '=' at end.\r\n        int cCnt = eIx - sIx + 1; // Content count including possible separators\r\n        int sepCnt = sLen > 76 ? (s.charAt(76) == '\\r' ? cCnt / 78 : 0) << 1 : 0;\r\n\r\n        int len = ((cCnt - sepCnt) * 6 >> 3) - pad; // The number of decoded bytes\r\n        byte[] dArr = new byte[len]; // Preallocate byte[] of exact length\r\n\r\n        // Decode all but the last 0 - 2 bytes.\r\n        int d = 0;\r\n        for (int cc = 0, eLen = (len / 3) * 3; d < eLen;) {\r\n            // Assemble three bytes into an int from four \"valid\" characters.\r\n            int i = IA[s.charAt(sIx++)] << 18 | IA[s.charAt(sIx++)] << 12 | IA[s.charAt(sIx++)] << 6\r\n                    | IA[s.charAt(sIx++)];\r\n\r\n            // Add the bytes\r\n            dArr[d++] = (byte) (i >> 16);\r\n            dArr[d++] = (byte) (i >> 8);\r\n            dArr[d++] = (byte) i;\r\n\r\n            // If line separator, jump over it.\r\n            if (sepCnt > 0 && ++cc == 19) {\r\n                sIx += 2;\r\n                cc = 0;\r\n            }\r\n        }\r\n\r\n        if (d < len) {\r\n            // Decode last 1-3 bytes (incl '=') into 1-3 bytes\r\n            int i = 0;\r\n            for (int j = 0; sIx <= eIx - pad; j++)\r\n                i |= IA[s.charAt(sIx++)] << (18 - j * 6);\r\n\r\n            for (int r = 16; d < len; r -= 8)\r\n                dArr[d++] = (byte) (i >> r);\r\n        }\r\n\r\n        return dArr;\r\n    }\r\n    \r\n    public static int encodeUTF8(char[] chars, int offset, int len, byte[] bytes) {\r\n        int sl = offset + len;\r\n        int dp = 0;\r\n        int dlASCII = dp + Math.min(len, bytes.length);\r\n\r\n        // ASCII only optimized loop\r\n        while (dp < dlASCII && chars[offset] < '\\u0080') {\r\n            bytes[dp++] = (byte) chars[offset++];\r\n        }\r\n\r\n        while (offset < sl) {\r\n            char c = chars[offset++];\r\n            if (c < 0x80) {\r\n                // Have at most seven bits\r\n                bytes[dp++] = (byte) c;\r\n            } else if (c < 0x800) {\r\n                // 2 bytes, 11 bits\r\n                bytes[dp++] = (byte) (0xc0 | (c >> 6));\r\n                bytes[dp++] = (byte) (0x80 | (c & 0x3f));\r\n            } else if (c >= '\\uD800' && c < ('\\uDFFF' + 1)) { //Character.isSurrogate(c) but 1.7\r\n                final int uc;\r\n                int ip = offset - 1;\r\n                if (c >= '\\uD800' && c < ('\\uDBFF' + 1)) { // Character.isHighSurrogate(c)\r\n                    if (sl - ip < 2) {\r\n                        uc = -1;\r\n                    } else {\r\n                        char d = chars[ip + 1];\r\n                        // d >= '\\uDC00' && d < ('\\uDFFF' + 1)\r\n                        if (d >= '\\uDC00' && d < ('\\uDFFF' + 1)) { // Character.isLowSurrogate(d)\r\n                            uc = ((c << 10) + d) + (0x010000 - ('\\uD800' << 10) - '\\uDC00'); // Character.toCodePoint(c, d)\r\n                        } else {\r\n//                            throw new JSONException(\"encodeUTF8 error\", new MalformedInputException(1));\r\n                            bytes[dp++] = (byte) '?';\r\n                            continue;\r\n                        }\r\n                    }\r\n                } else {\r\n                    //\r\n                    if (c >= '\\uDC00' && c < ('\\uDFFF' + 1)) { // Character.isLowSurrogate(c)\r\n                        bytes[dp++] = (byte) '?';\r\n                        continue;\r\n//                        throw new JSONException(\"encodeUTF8 error\", new MalformedInputException(1));\r\n                    } else {\r\n                        uc = c;\r\n                    }\r\n                }\r\n                \r\n                if (uc < 0) {\r\n                    bytes[dp++] = (byte) '?';\r\n                } else {\r\n                    bytes[dp++] = (byte) (0xf0 | ((uc >> 18)));\r\n                    bytes[dp++] = (byte) (0x80 | ((uc >> 12) & 0x3f));\r\n                    bytes[dp++] = (byte) (0x80 | ((uc >> 6) & 0x3f));\r\n                    bytes[dp++] = (byte) (0x80 | (uc & 0x3f));\r\n                    offset++; // 2 chars\r\n                }\r\n            } else {\r\n                // 3 bytes, 16 bits\r\n                bytes[dp++] = (byte) (0xe0 | ((c >> 12)));\r\n                bytes[dp++] = (byte) (0x80 | ((c >> 6) & 0x3f));\r\n                bytes[dp++] = (byte) (0x80 | (c & 0x3f));\r\n            }\r\n        }\r\n        return dp;\r\n    }\r\n\r\n    /**\r\n     * @deprecated\r\n     */\r\n    public static int decodeUTF8(byte[] sa, int sp, int len, char[] da) {\r\n        final int sl = sp + len;\r\n        int dp = 0;\r\n        int dlASCII = Math.min(len, da.length);\r\n\r\n        // ASCII only optimized loop\r\n        while (dp < dlASCII && sa[sp] >= 0)\r\n            da[dp++] = (char) sa[sp++];\r\n\r\n        while (sp < sl) {\r\n            int b1 = sa[sp++];\r\n            if (b1 >= 0) {\r\n                // 1 byte, 7 bits: 0xxxxxxx\r\n                da[dp++] = (char) b1;\r\n            } else if ((b1 >> 5) == -2 && (b1 & 0x1e) != 0) {\r\n                // 2 bytes, 11 bits: 110xxxxx 10xxxxxx\r\n                if (sp < sl) {\r\n                    int b2 = sa[sp++];\r\n                    if ((b2 & 0xc0) != 0x80) { // isNotContinuation(b2)\r\n                        return -1;\r\n                    } else {\r\n                        da[dp++] = (char) (((b1 << 6) ^ b2)^\r\n                                       (((byte) 0xC0 << 6) ^\r\n                                        ((byte) 0x80 << 0)));\r\n                    }\r\n                    continue;\r\n                }\r\n                return -1;\r\n            } else if ((b1 >> 4) == -2) {\r\n                // 3 bytes, 16 bits: 1110xxxx 10xxxxxx 10xxxxxx\r\n                if (sp + 1 < sl) {\r\n                    int b2 = sa[sp++];\r\n                    int b3 = sa[sp++];\r\n                    if ((b1 == (byte) 0xe0 && (b2 & 0xe0) == 0x80) //\r\n                        || (b2 & 0xc0) != 0x80 //\r\n                        || (b3 & 0xc0) != 0x80) { // isMalformed3(b1, b2, b3)\r\n                        return -1;\r\n                    } else {\r\n                        char c = (char)((b1 << 12) ^\r\n                                          (b2 <<  6) ^\r\n                                          (b3 ^\r\n                                          (((byte) 0xE0 << 12) ^\r\n                                          ((byte) 0x80 <<  6) ^\r\n                                          ((byte) 0x80 <<  0))));\r\n                        boolean isSurrogate = c >= '\\uD800' && c < ('\\uDFFF' + 1);\r\n                        if (isSurrogate) {\r\n                            return -1;\r\n                        } else {\r\n                            da[dp++] = c;\r\n                        }\r\n                    }\r\n                    continue;\r\n                }\r\n                return -1;\r\n            } else if ((b1 >> 3) == -2) {\r\n                // 4 bytes, 21 bits: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\r\n                if (sp + 2 < sl) {\r\n                    int b2 = sa[sp++];\r\n                    int b3 = sa[sp++];\r\n                    int b4 = sa[sp++];\r\n                    int uc = ((b1 << 18) ^\r\n                              (b2 << 12) ^\r\n                              (b3 <<  6) ^\r\n                              (b4 ^\r\n                               (((byte) 0xF0 << 18) ^\r\n                               ((byte) 0x80 << 12) ^\r\n                               ((byte) 0x80 <<  6) ^\r\n                               ((byte) 0x80 <<  0))));\r\n                    if (((b2 & 0xc0) != 0x80 || (b3 & 0xc0) != 0x80 || (b4 & 0xc0) != 0x80) // isMalformed4\r\n                        ||\r\n                        // shortest form check\r\n                        !(uc >= 0x010000 && uc <  0X10FFFF + 1) // !Character.isSupplementaryCodePoint(uc)\r\n                    ) {\r\n                        return -1;\r\n                    } else {\r\n                        da[dp++] =  (char) ((uc >>> 10) + ('\\uD800' - (0x010000 >>> 10))); // Character.highSurrogate(uc);\r\n                        da[dp++] = (char) ((uc & 0x3ff) + '\\uDC00'); // Character.lowSurrogate(uc);\r\n                    }\r\n                    continue;\r\n                }\r\n                return -1;\r\n            } else {\r\n                return -1;\r\n            }\r\n        }\r\n        return dp;\r\n    }\r\n\r\n    /**\r\n     * @deprecated\r\n     */\r\n    public static String readAll(Reader reader) {\r\n        StringBuilder buf = new StringBuilder();\r\n\r\n        try {\r\n            char[] chars = new char[2048];\r\n            for (;;) {\r\n                int len = reader.read(chars, 0, chars.length);\r\n                if (len < 0) {\r\n                    break;\r\n                }\r\n                buf.append(chars, 0, len);\r\n            }\r\n        } catch(Exception ex) {\r\n            throw new JSONException(\"read string from reader error\", ex);\r\n        }\r\n\r\n        return buf.toString();\r\n    }\r\n\r\n    public static boolean isValidJsonpQueryParam(String value){\r\n        if (value == null || value.length() == 0) {\r\n            return false;\r\n        }\r\n\r\n        for (int i = 0, len = value.length(); i < len; ++i) {\r\n            char ch = value.charAt(i);\r\n            if(ch != '.' && !IOUtils.isIdent(ch)){\r\n                return false;\r\n            }\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/util/IdentityHashMap.java",
    "content": "/*\r\n * Copyright 1999-2017 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.fastjson.util;\r\n\r\nimport java.util.Arrays;\r\n\r\n/**\r\n * for concurrent IdentityHashMap\r\n * \r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\n@SuppressWarnings(\"unchecked\")\r\npublic class IdentityHashMap<K, V> {\r\n    private final Entry<K, V>[] buckets;\r\n    private final int           indexMask;\r\n    public final static int DEFAULT_SIZE = 8192;\r\n\r\n    public IdentityHashMap(){\r\n        this(DEFAULT_SIZE);\r\n    }\r\n\r\n    public IdentityHashMap(int tableSize){\r\n        this.indexMask = tableSize - 1;\r\n        this.buckets = new Entry[tableSize];\r\n    }\r\n\r\n    public final V get(K key) {\r\n        final int hash = System.identityHashCode(key);\r\n        final int bucket = hash & indexMask;\r\n\r\n        for (Entry<K, V> entry = buckets[bucket]; entry != null; entry = entry.next) {\r\n            if (key == entry.key) {\r\n                return (V) entry.value;\r\n            }\r\n        }\r\n\r\n        return null;\r\n    }\r\n\r\n    public Class findClass(String keyString) {\r\n        for (int i = 0; i < buckets.length; i++) {\r\n            Entry bucket = buckets[i];\r\n\r\n            if (bucket == null) {\r\n                continue;\r\n            }\r\n\r\n            for (Entry<K, V> entry = bucket; entry != null; entry = entry.next) {\r\n                Object key = bucket.key;\r\n                if (key instanceof Class) {\r\n                    Class clazz = ((Class) key);\r\n                    String className = clazz.getName();\r\n                    if (className.equals(keyString)) {\r\n                        return clazz;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        return null;\r\n    }\r\n\r\n    public boolean put(K key, V value) {\r\n        final int hash = System.identityHashCode(key);\r\n        final int bucket = hash & indexMask;\r\n\r\n        for (Entry<K, V> entry = buckets[bucket]; entry != null; entry = entry.next) {\r\n            if (key == entry.key) {\r\n                entry.value = value;\r\n                return true;\r\n            }\r\n        }\r\n\r\n        Entry<K, V> entry = new Entry<K, V>(key, value, hash, buckets[bucket]);\r\n        buckets[bucket] = entry;  // 并发是处理时会可能导致缓存丢失，但不影响正确性\r\n\r\n        return false;\r\n    }\r\n\r\n    protected static final class Entry<K, V> {\r\n\r\n        public final int   hashCode;\r\n        public final K     key;\r\n        public V     value;\r\n\r\n        public final Entry<K, V> next;\r\n\r\n        public Entry(K key, V value, int hash, Entry<K, V> next){\r\n            this.key = key;\r\n            this.value = value;\r\n            this.next = next;\r\n            this.hashCode = hash;\r\n        }\r\n    }\r\n\r\n    public void clear() {\r\n        Arrays.fill(this.buckets, null);\r\n    }\r\n\r\n    public int size() {\r\n        int count = 0;\r\n        for (Entry<K, V> bucket : this.buckets) {\r\n            for (; bucket != null; bucket = bucket.next) {\r\n                count++;\r\n            }\r\n        }\r\n\r\n        return count;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/util/JavaBeanInfo.java",
    "content": "package com.alibaba.fastjson.util;\n\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.*;\nimport java.util.*;\nimport java.util.concurrent.atomic.AtomicBoolean;\nimport java.util.concurrent.atomic.AtomicInteger;\nimport java.util.concurrent.atomic.AtomicLong;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.PropertyNamingStrategy;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONPOJOBuilder;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class JavaBeanInfo {\n\n    public final Class<?> clazz;\n    public final Class<?> builderClass;\n    public final Constructor<?> defaultConstructor;\n    public final Constructor<?> creatorConstructor;\n    public final Method factoryMethod;\n    public final Method buildMethod;\n\n    public final int defaultConstructorParameterSize;\n\n    public final FieldInfo[] fields;\n    public final FieldInfo[] sortedFields;\n\n    public final int parserFeatures;\n\n    public final JSONType jsonType;\n\n    public final String typeName;\n    public final String typeKey;\n\n    public String[] orders;\n\n    public Type[] creatorConstructorParameterTypes;\n    public String[] creatorConstructorParameters;\n\n    public boolean kotlin;\n    public Constructor<?> kotlinDefaultConstructor;\n\n    public JavaBeanInfo(Class<?> clazz, //\n                        Class<?> builderClass, //\n                        Constructor<?> defaultConstructor, //\n                        Constructor<?> creatorConstructor, //\n                        Method factoryMethod, //\n                        Method buildMethod, //\n                        JSONType jsonType, //\n                        List<FieldInfo> fieldList) {\n        this.clazz = clazz;\n        this.builderClass = builderClass;\n        this.defaultConstructor = defaultConstructor;\n        this.creatorConstructor = creatorConstructor;\n        this.factoryMethod = factoryMethod;\n        this.parserFeatures = TypeUtils.getParserFeatures(clazz);\n        this.buildMethod = buildMethod;\n\n        this.jsonType = jsonType;\n        if (jsonType != null) {\n            String typeName = jsonType.typeName();\n            String typeKey = jsonType.typeKey();\n            this.typeKey = typeKey.length() > 0 ? typeKey : null;\n\n            if (typeName.length() != 0) {\n                this.typeName = typeName;\n            } else {\n                this.typeName = clazz.getName();\n            }\n            String[] orders = jsonType.orders();\n            this.orders = orders.length == 0 ? null : orders;\n        } else {\n            this.typeName = clazz.getName();\n            this.typeKey = null;\n            this.orders = null;\n        }\n\n        fields = new FieldInfo[fieldList.size()];\n        fieldList.toArray(fields);\n\n        FieldInfo[] sortedFields = new FieldInfo[fields.length];\n        if (orders != null) {\n            LinkedHashMap<String, FieldInfo> map = new LinkedHashMap<String, FieldInfo>(fieldList.size());\n            for (FieldInfo field : fields) {\n                map.put(field.name, field);\n            }\n            int i = 0;\n            for (String item : orders) {\n                FieldInfo field = map.get(item);\n                if (field != null) {\n                    sortedFields[i++] = field;\n                    map.remove(item);\n                }\n            }\n            for (FieldInfo field : map.values()) {\n                sortedFields[i++] = field;\n            }\n        } else {\n            System.arraycopy(fields, 0, sortedFields, 0, fields.length);\n            Arrays.sort(sortedFields);\n        }\n\n        if (Arrays.equals(fields, sortedFields)) {\n            sortedFields = fields;\n        }\n        this.sortedFields = sortedFields;\n\n        if (defaultConstructor != null) {\n            defaultConstructorParameterSize = defaultConstructor.getParameterTypes().length;\n        } else if (factoryMethod != null) {\n            defaultConstructorParameterSize = factoryMethod.getParameterTypes().length;\n        } else {\n            defaultConstructorParameterSize = 0;\n        }\n\n        if (creatorConstructor != null) {\n            this.creatorConstructorParameterTypes = creatorConstructor.getParameterTypes();\n\n\n            kotlin = TypeUtils.isKotlin(clazz);\n            if (kotlin) {\n                this.creatorConstructorParameters = TypeUtils.getKoltinConstructorParameters(clazz);\n                try {\n                    this.kotlinDefaultConstructor = clazz.getConstructor();\n                } catch (Throwable ex) {\n                    // skip\n                }\n\n                Annotation[][] paramAnnotationArrays = TypeUtils.getParameterAnnotations(creatorConstructor);\n                for (int i = 0; i < creatorConstructorParameters.length && i < paramAnnotationArrays.length; ++i) {\n                    Annotation[] paramAnnotations = paramAnnotationArrays[i];\n                    JSONField fieldAnnotation = null;\n                    for (Annotation paramAnnotation : paramAnnotations) {\n                        if (paramAnnotation instanceof JSONField) {\n                            fieldAnnotation = (JSONField) paramAnnotation;\n                            break;\n                        }\n                    }\n                    if (fieldAnnotation != null) {\n                        String fieldAnnotationName = fieldAnnotation.name();\n                        if (fieldAnnotationName.length() > 0) {\n                            creatorConstructorParameters[i] = fieldAnnotationName;\n                        }\n                    }\n                }\n            } else {\n                boolean match;\n                if (creatorConstructorParameterTypes.length != fields.length) {\n                    match = false;\n                } else {\n                    match = true;\n                    for (int i = 0; i < creatorConstructorParameterTypes.length; i++) {\n                        if (creatorConstructorParameterTypes[i] != fields[i].fieldClass) {\n                            match = false;\n                            break;\n                        }\n                    }\n                }\n\n                if (!match) {\n                    this.creatorConstructorParameters = ASMUtils.lookupParameterNames(creatorConstructor);\n                }\n            }\n        }\n    }\n\n    private static FieldInfo getField(List<FieldInfo> fieldList, String propertyName) {\n        for (FieldInfo item : fieldList) {\n            if (item.name.equals(propertyName)) {\n                return item;\n            }\n\n            Field field = item.field;\n            if (field != null && item.getAnnotation() != null && field.getName().equals(propertyName)) {\n                return item;\n            }\n        }\n        return null;\n    }\n\n\n    static boolean add(List<FieldInfo> fieldList, FieldInfo field) {\n        for (int i = fieldList.size() - 1; i >= 0; --i) {\n            FieldInfo item = fieldList.get(i);\n\n            if (item.name.equals(field.name)) {\n                if (item.getOnly && !field.getOnly) {\n                    continue;\n                }\n\n                if (item.fieldClass.isAssignableFrom(field.fieldClass)) {\n                    fieldList.set(i, field);\n                    return true;\n                }\n\n                int result = item.compareTo(field);\n\n                if (result < 0) {\n                    fieldList.set(i, field);\n                    return true;\n                } else {\n                    return false;\n                }\n            }\n        }\n        fieldList.add(field);\n\n        return true;\n    }\n\n    public static JavaBeanInfo build(Class<?> clazz, Type type, PropertyNamingStrategy propertyNamingStrategy) {\n        return build(clazz, type, propertyNamingStrategy, false, TypeUtils.compatibleWithJavaBean, false);\n    }\n\n    private static Map<TypeVariable, Type> buildGenericInfo(Class<?> clazz) {\n        Class<?> childClass = clazz;\n        Class<?> currentClass = clazz.getSuperclass();\n        if (currentClass == null) {\n            return null;\n        }\n\n        Map<TypeVariable, Type> typeVarMap = null;\n\n        //analyse the whole generic info from the class inheritance\n        for (; currentClass != null && currentClass != Object.class; childClass = currentClass, currentClass = currentClass.getSuperclass()) {\n            if (childClass.getGenericSuperclass() instanceof ParameterizedType) {\n                Type[] childGenericParentActualTypeArgs = ((ParameterizedType) childClass.getGenericSuperclass()).getActualTypeArguments();\n                TypeVariable[] currentTypeParameters = currentClass.getTypeParameters();\n                for (int i = 0; i < childGenericParentActualTypeArgs.length; i++) {\n                    //if the child class's generic super class actual args is defined in the child class type parameters\n                    if (typeVarMap == null) {\n                        typeVarMap = new HashMap<TypeVariable, Type>();\n                    }\n\n                    if (typeVarMap.containsKey(childGenericParentActualTypeArgs[i])) {\n                        Type actualArg = typeVarMap.get(childGenericParentActualTypeArgs[i]);\n                        typeVarMap.put(currentTypeParameters[i], actualArg);\n                    } else {\n                        typeVarMap.put(currentTypeParameters[i], childGenericParentActualTypeArgs[i]);\n                    }\n                }\n            }\n        }\n\n        return typeVarMap;\n    }\n\n\n    public static JavaBeanInfo build(Class<?> clazz //\n            , Type type //\n            , PropertyNamingStrategy propertyNamingStrategy //\n            , boolean fieldBased //\n            , boolean compatibleWithJavaBean\n    ) {\n        return build(clazz, type, propertyNamingStrategy, fieldBased, compatibleWithJavaBean, false);\n    }\n\n    public static JavaBeanInfo build(Class<?> clazz //\n            , Type type //\n            , PropertyNamingStrategy propertyNamingStrategy //\n            , boolean fieldBased //\n            , boolean compatibleWithJavaBean\n            , boolean jacksonCompatible\n    ) {\n        JSONType jsonType = TypeUtils.getAnnotation(clazz,JSONType.class);\n        if (jsonType != null) {\n            PropertyNamingStrategy jsonTypeNaming = jsonType.naming();\n            if (jsonTypeNaming != null && jsonTypeNaming != PropertyNamingStrategy.CamelCase) {\n                propertyNamingStrategy = jsonTypeNaming;\n            }\n        }\n\n        Class<?> builderClass = getBuilderClass(clazz, jsonType);\n\n        Field[] declaredFields = clazz.getDeclaredFields();\n        Method[] methods = clazz.getMethods();\n        Map<TypeVariable, Type> genericInfo = buildGenericInfo(clazz);\n\n        boolean kotlin = TypeUtils.isKotlin(clazz);\n        Constructor[] constructors = clazz.getDeclaredConstructors();\n\n        Constructor<?> defaultConstructor = null;\n        if ((!kotlin) || constructors.length == 1) {\n            if (builderClass == null) {\n                defaultConstructor = getDefaultConstructor(clazz, constructors);\n            } else {\n                defaultConstructor = getDefaultConstructor(builderClass, builderClass.getDeclaredConstructors());\n            }\n        }\n\n        Constructor<?> creatorConstructor = null;\n        Method buildMethod = null;\n        Method factoryMethod = null;\n\n        List<FieldInfo> fieldList = new ArrayList<FieldInfo>();\n\n        if (fieldBased) {\n            for (Class<?> currentClass = clazz; currentClass != null; currentClass = currentClass.getSuperclass()) {\n                Field[] fields = currentClass.getDeclaredFields();\n\n                computeFields(clazz, type, propertyNamingStrategy, fieldList, fields);\n            }\n\n            if (defaultConstructor != null) {\n                TypeUtils.setAccessible(defaultConstructor);\n            }\n\n            return new JavaBeanInfo(clazz, builderClass, defaultConstructor, null, factoryMethod, buildMethod, jsonType, fieldList);\n        }\n\n        boolean isInterfaceOrAbstract = clazz.isInterface() || Modifier.isAbstract(clazz.getModifiers());\n        if ((defaultConstructor == null && builderClass == null) || isInterfaceOrAbstract) {\n\n            Type mixInType = JSON.getMixInAnnotations(clazz);\n            if (mixInType instanceof Class) {\n                Constructor<?>[] mixInConstructors = ((Class<?>) mixInType).getConstructors();\n                Constructor<?> mixInCreator = getCreatorConstructor(mixInConstructors);\n                if (mixInCreator != null) {\n                    try {\n                        creatorConstructor = clazz.getConstructor(mixInCreator.getParameterTypes());\n                    } catch (NoSuchMethodException e) {\n                        // skip\n                    }\n                }\n            }\n\n            if (creatorConstructor == null) {\n                creatorConstructor = getCreatorConstructor(constructors);\n            }\n\n            if (creatorConstructor != null && !isInterfaceOrAbstract) { // 基于标记 JSONCreator 注解的构造方法\n                TypeUtils.setAccessible(creatorConstructor);\n\n                Class<?>[] types = creatorConstructor.getParameterTypes();\n\n                String[] lookupParameterNames = null;\n                if (types.length > 0) {\n                    Annotation[][] paramAnnotationArrays = TypeUtils.getParameterAnnotations(creatorConstructor);\n                    for (int i = 0; i < types.length && i < paramAnnotationArrays.length; ++i) {\n                        Annotation[] paramAnnotations = paramAnnotationArrays[i];\n                        JSONField fieldAnnotation = null;\n                        for (Annotation paramAnnotation : paramAnnotations) {\n                            if (paramAnnotation instanceof JSONField) {\n                                fieldAnnotation = (JSONField) paramAnnotation;\n                                break;\n                            }\n                        }\n\n                        Class<?> fieldClass = types[i];\n                        Type fieldType = creatorConstructor.getGenericParameterTypes()[i];\n\n                        String fieldName = null;\n                        Field field = null;\n                        int ordinal = 0, serialzeFeatures = 0, parserFeatures = 0;\n                        if (fieldAnnotation != null) {\n                            field = TypeUtils.getField(clazz, fieldAnnotation.name(), declaredFields);\n                            ordinal = fieldAnnotation.ordinal();\n                            serialzeFeatures = SerializerFeature.of(fieldAnnotation.serialzeFeatures());\n                            parserFeatures = Feature.of(fieldAnnotation.parseFeatures());\n                            fieldName = fieldAnnotation.name();\n                        }\n\n                        if (fieldName == null || fieldName.length() == 0) {\n                            if (lookupParameterNames == null) {\n                                lookupParameterNames = ASMUtils.lookupParameterNames(creatorConstructor);\n                            }\n                            fieldName = lookupParameterNames[i];\n                        }\n\n                        if (field == null) {\n                            if (lookupParameterNames == null) {\n                                if (kotlin) {\n                                    lookupParameterNames = TypeUtils.getKoltinConstructorParameters(clazz);\n                                } else {\n                                    lookupParameterNames = ASMUtils.lookupParameterNames(creatorConstructor);\n                                }\n                            }\n\n                            if (lookupParameterNames.length > i) {\n                                String parameterName = lookupParameterNames[i];\n                                field = TypeUtils.getField(clazz, parameterName, declaredFields);\n                            }\n                        }\n\n                        FieldInfo fieldInfo = new FieldInfo(fieldName, clazz, fieldClass, fieldType, field,\n                                ordinal, serialzeFeatures, parserFeatures);\n                        add(fieldList, fieldInfo);\n                    }\n                }\n\n                //return new JavaBeanInfo(clazz, builderClass, null, creatorConstructor, null, null, jsonType, fieldList);\n            } else if ((factoryMethod = getFactoryMethod(clazz, methods, jacksonCompatible)) != null) {\n                TypeUtils.setAccessible(factoryMethod);\n\n                String[] lookupParameterNames = null;\n                Class<?>[] types = factoryMethod.getParameterTypes();\n                if (types.length > 0) {\n                    Annotation[][] paramAnnotationArrays = TypeUtils.getParameterAnnotations(factoryMethod);\n                    for (int i = 0; i < types.length; ++i) {\n                        Annotation[] paramAnnotations = paramAnnotationArrays[i];\n                        JSONField fieldAnnotation = null;\n                        for (Annotation paramAnnotation : paramAnnotations) {\n                            if (paramAnnotation instanceof JSONField) {\n                                fieldAnnotation = (JSONField) paramAnnotation;\n                                break;\n                            }\n                        }\n                        if (fieldAnnotation == null && !(jacksonCompatible && TypeUtils.isJacksonCreator(factoryMethod))) {\n                            throw new JSONException(\"illegal json creator\");\n                        }\n\n                        String fieldName = null;\n                        int ordinal = 0, serialzeFeatures = 0, parserFeatures = 0;\n\n                        if (fieldAnnotation != null) {\n                            fieldName = fieldAnnotation.name();\n                            ordinal = fieldAnnotation.ordinal();\n                            serialzeFeatures = SerializerFeature.of(fieldAnnotation.serialzeFeatures());\n                            parserFeatures = Feature.of(fieldAnnotation.parseFeatures());\n                        }\n\n                        if (fieldName == null || fieldName.length() == 0) {\n                            if (lookupParameterNames == null) {\n                                lookupParameterNames = ASMUtils.lookupParameterNames(factoryMethod);\n                            }\n                            fieldName = lookupParameterNames[i];\n                        }\n\n                        Class<?> fieldClass = types[i];\n                        Type fieldType = factoryMethod.getGenericParameterTypes()[i];\n\n                        Field field = TypeUtils.getField(clazz, fieldName, declaredFields);\n                        FieldInfo fieldInfo = new FieldInfo(fieldName, clazz, fieldClass, fieldType, field,\n                                ordinal, serialzeFeatures, parserFeatures);\n                        add(fieldList, fieldInfo);\n                    }\n\n                    return new JavaBeanInfo(clazz, builderClass, null, null, factoryMethod, null, jsonType, fieldList);\n                }\n            } else if (!isInterfaceOrAbstract) {\n                String className = clazz.getName();\n\n                String[] paramNames = null;\n                if (kotlin && constructors.length > 0) {\n                    paramNames = TypeUtils.getKoltinConstructorParameters(clazz);\n                    creatorConstructor = TypeUtils.getKotlinConstructor(constructors, paramNames);\n                    TypeUtils.setAccessible(creatorConstructor);\n                } else {\n\n                    for (Constructor constructor : constructors) {\n                        Class<?>[] parameterTypes = constructor.getParameterTypes();\n\n                        if (className.equals(\"org.springframework.security.web.authentication.WebAuthenticationDetails\")) {\n                            if (parameterTypes.length == 2 && parameterTypes[0] == String.class && parameterTypes[1] == String.class) {\n                                creatorConstructor = constructor;\n                                creatorConstructor.setAccessible(true);\n                                paramNames = ASMUtils.lookupParameterNames(constructor);\n                                break;\n                            } else {\n                                continue;\n                            }\n                        }\n\n                        if (className.equals(\"org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationToken\")) {\n                            if (parameterTypes.length == 3\n                                    && parameterTypes[0] == Object.class\n                                    && parameterTypes[1] == Object.class\n                                    && parameterTypes[2] == Collection.class) {\n                                creatorConstructor = constructor;\n                                creatorConstructor.setAccessible(true);\n                                paramNames = new String[] {\"principal\", \"credentials\", \"authorities\"};\n                                break;\n                            } else {\n                                continue;\n                            }\n                        }\n\n                        if (className.equals(\"org.springframework.security.core.authority.SimpleGrantedAuthority\")) {\n                            if (parameterTypes.length == 1\n                                    && parameterTypes[0] == String.class) {\n                                creatorConstructor = constructor;\n                                paramNames = new String[] {\"authority\"};\n                                break;\n                            } else {\n                                continue;\n                            }\n                        }\n\n                        //\n\n\n                        boolean is_public = (constructor.getModifiers() & Modifier.PUBLIC) != 0;\n                        if (!is_public) {\n                            continue;\n                        }\n                        String[] lookupParameterNames = ASMUtils.lookupParameterNames(constructor);\n                        if (lookupParameterNames == null || lookupParameterNames.length == 0) {\n                            continue;\n                        }\n\n                        if (creatorConstructor != null\n                                && paramNames != null && lookupParameterNames.length <= paramNames.length) {\n                            continue;\n                        }\n\n                        paramNames = lookupParameterNames;\n                        creatorConstructor = constructor;\n                    }\n                }\n\n                Class<?>[] types = null;\n                if (paramNames != null) {\n                    types = creatorConstructor.getParameterTypes();\n                }\n\n                if (paramNames != null\n                        && types.length == paramNames.length) {\n                    Annotation[][] paramAnnotationArrays = TypeUtils.getParameterAnnotations(creatorConstructor);\n                    for (int i = 0; i < types.length; ++i) {\n                        Annotation[] paramAnnotations = paramAnnotationArrays[i];\n                        String paramName = paramNames[i];\n\n                        JSONField fieldAnnotation = null;\n                        for (Annotation paramAnnotation : paramAnnotations) {\n                            if (paramAnnotation instanceof JSONField) {\n                                fieldAnnotation = (JSONField) paramAnnotation;\n                                break;\n                            }\n                        }\n\n                        Class<?> fieldClass = types[i];\n                        Type fieldType = creatorConstructor.getGenericParameterTypes()[i];\n                        Field field = TypeUtils.getField(clazz, paramName, declaredFields);\n                        if (field != null) {\n                            if (fieldAnnotation == null) {\n                                fieldAnnotation = TypeUtils.getAnnotation(field, JSONField.class);\n                            }\n                        }\n                        final int ordinal, serialzeFeatures, parserFeatures;\n                        if (fieldAnnotation == null) {\n                            ordinal = 0;\n                            serialzeFeatures = 0;\n\n                            if (\"org.springframework.security.core.userdetails.User\".equals(className)\n                                    && \"password\".equals(paramName)) {\n                                parserFeatures = Feature.InitStringFieldAsEmpty.mask;\n                            } else {\n                                parserFeatures = 0;\n                            }\n                        } else {\n                            String nameAnnotated = fieldAnnotation.name();\n                            if (nameAnnotated.length() != 0) {\n                                paramName = nameAnnotated;\n                            }\n                            ordinal = fieldAnnotation.ordinal();\n                            serialzeFeatures = SerializerFeature.of(fieldAnnotation.serialzeFeatures());\n                            parserFeatures = Feature.of(fieldAnnotation.parseFeatures());\n                        }\n                        FieldInfo fieldInfo = new FieldInfo(paramName, clazz, fieldClass, fieldType, field,\n                                ordinal, serialzeFeatures, parserFeatures);\n                        add(fieldList, fieldInfo);\n                    }\n\n                    if ((!kotlin) && !clazz.getName().equals(\"javax.servlet.http.Cookie\")) {\n                        return new JavaBeanInfo(clazz, builderClass, null, creatorConstructor, null, null, jsonType, fieldList);\n                    }\n                } else {\n                    throw new JSONException(\"default constructor not found. \" + clazz);\n                }\n            }\n        }\n\n        if (defaultConstructor != null) {\n            TypeUtils.setAccessible(defaultConstructor);\n        }\n\n        if (builderClass != null) {\n            String withPrefix = null;\n\n            JSONPOJOBuilder builderAnno = TypeUtils.getAnnotation(builderClass, JSONPOJOBuilder.class);\n            if (builderAnno != null) {\n                withPrefix = builderAnno.withPrefix();\n            }\n\n            if (withPrefix == null) {\n                withPrefix = \"with\";\n            }\n\n            for (Method method : builderClass.getMethods()) {\n                if (Modifier.isStatic(method.getModifiers())) {\n                    continue;\n                }\n\n                if (!(method.getReturnType().equals(builderClass))) {\n                    continue;\n                }\n\n                int ordinal = 0, serialzeFeatures = 0, parserFeatures = 0;\n\n                JSONField annotation = TypeUtils.getAnnotation(method, JSONField.class);\n\n                if (annotation == null) {\n                    annotation = TypeUtils.getSuperMethodAnnotation(clazz, method);\n                }\n\n                if (annotation != null) {\n                    if (!annotation.deserialize()) {\n                        continue;\n                    }\n\n                    ordinal = annotation.ordinal();\n                    serialzeFeatures = SerializerFeature.of(annotation.serialzeFeatures());\n                    parserFeatures = Feature.of(annotation.parseFeatures());\n\n                    if (annotation.name().length() != 0) {\n                        String propertyName = annotation.name();\n                        add(fieldList, new FieldInfo(propertyName, method, null, clazz, type, ordinal, serialzeFeatures, parserFeatures,\n                                annotation, null, null, genericInfo));\n                        continue;\n                    }\n                }\n\n                String methodName = method.getName();\n                StringBuilder properNameBuilder;\n                if (methodName.startsWith(\"set\") && methodName.length() > 3) {\n                    properNameBuilder = new StringBuilder(methodName.substring(3));\n                } else {\n                    if (withPrefix.length() == 0){\n                        properNameBuilder = new StringBuilder(methodName);\n                    } else {\n                        if (!methodName.startsWith(withPrefix)) {\n                            continue;\n                        }\n\n                        if (methodName.length() <= withPrefix.length()) {\n                            continue;\n                        }\n                        \n                        properNameBuilder = new StringBuilder(methodName.substring(withPrefix.length()));\n                    }\n                }\n\n                char c0 = properNameBuilder.charAt(0);\n                if (withPrefix.length() != 0 && !Character.isUpperCase(c0)) {\n                    continue;\n                }\n\n                properNameBuilder.setCharAt(0, Character.toLowerCase(c0));\n\n                String propertyName = properNameBuilder.toString();\n\n                add(fieldList, new FieldInfo(propertyName, method, null, clazz, type, ordinal, serialzeFeatures, parserFeatures,\n                        annotation, null, null, genericInfo));\n            }\n\n            if (builderClass != null) {\n                JSONPOJOBuilder builderAnnotation = TypeUtils.getAnnotation(builderClass, JSONPOJOBuilder.class);\n\n                String buildMethodName = null;\n                if (builderAnnotation != null) {\n                    buildMethodName = builderAnnotation.buildMethod();\n                }\n\n                if (buildMethodName == null || buildMethodName.length() == 0) {\n                    buildMethodName = \"build\";\n                }\n\n                try {\n                    buildMethod = builderClass.getMethod(buildMethodName);\n                } catch (NoSuchMethodException e) {\n                    // skip\n                } catch (SecurityException e) {\n                    // skip\n                }\n\n                if (buildMethod == null) {\n                    try {\n                        buildMethod = builderClass.getMethod(\"create\");\n                    } catch (NoSuchMethodException e) {\n                        // skip\n                    } catch (SecurityException e) {\n                        // skip\n                    }\n                }\n\n                if (buildMethod == null) {\n                    throw new JSONException(\"buildMethod not found.\");\n                }\n\n                TypeUtils.setAccessible(buildMethod);\n            }\n        }\n\n        for (Method method : methods) { //\n            int ordinal = 0, serialzeFeatures = 0, parserFeatures = 0;\n            String methodName = method.getName();\n\n            if (Modifier.isStatic(method.getModifiers())) {\n                continue;\n            }\n\n            // support builder set\n            Class<?> returnType = method.getReturnType();\n            if (!(returnType.equals(Void.TYPE) || returnType.equals(method.getDeclaringClass()))) {\n                continue;\n            }\n\n            if (method.getDeclaringClass() == Object.class) {\n                continue;\n            }\n\n            Class<?>[] types = method.getParameterTypes();\n\n            if (types.length == 0 || types.length > 2) {\n                continue;\n            }\n\n            JSONField annotation = TypeUtils.getAnnotation(method, JSONField.class);\n            if (annotation != null\n                    && types.length == 2\n                    && types[0] == String.class\n                    && types[1] == Object.class) {\n                add(fieldList, new FieldInfo(\"\", method, null, clazz, type, ordinal,\n                        serialzeFeatures, parserFeatures, annotation, null, null, genericInfo));\n                continue;\n            }\n\n            if (types.length != 1) {\n                continue;\n            }\n\n            if (annotation == null) {\n                annotation = TypeUtils.getSuperMethodAnnotation(clazz, method);\n            }\n\n            if (annotation == null && methodName.length() < 4) {\n                continue;\n            }\n\n            if (annotation != null) {\n                if (!annotation.deserialize()) {\n                    continue;\n                }\n\n                ordinal = annotation.ordinal();\n                serialzeFeatures = SerializerFeature.of(annotation.serialzeFeatures());\n                parserFeatures = Feature.of(annotation.parseFeatures());\n\n                if (annotation.name().length() != 0) {\n                    String propertyName = annotation.name();\n                    add(fieldList, new FieldInfo(propertyName, method, null, clazz, type, ordinal, serialzeFeatures, parserFeatures,\n                            annotation, null, null, genericInfo));\n                    continue;\n                }\n            }\n\n            if (annotation == null && !methodName.startsWith(\"set\") || builderClass != null) { // TODO \"set\"的判断放在 JSONField 注解后面，意思是允许非 setter 方法标记 JSONField 注解？\n                continue;\n            }\n\n            char c3 = methodName.charAt(3);\n\n            String propertyName;\n            Field field = null;\n            // 用于存储KotlinBean中所有的get方法, 方便后续判断\n            List<String> getMethodNameList = null;\n\n            if (kotlin) {\n                getMethodNameList = new ArrayList();\n                for (int i = 0; i < methods.length; i++) {\n                    if (methods[i].getName().startsWith(\"get\")) {\n                        getMethodNameList.add(methods[i].getName());\n                    }\n                }\n            }\n\n            if (Character.isUpperCase(c3) //\n                    || c3 > 512 // for unicode method name\n                    ) {\n                // 这里本身的逻辑是通过setAbc这类方法名解析出成员变量名为abc或者Abc, 但是在kotlin中, isAbc, abc成员变量的set方法都是setAbc\n                // 因此如果是kotlin的话还需要进行不一样的判断, 判断的方式是通过get方法进行判断, isAbc的get方法名为isAbc(), abc的get方法名为getAbc()\n                if (kotlin) {\n                    String getMethodName = \"g\" + methodName.substring(1);\n                    propertyName = TypeUtils.getPropertyNameByMethodName(getMethodName);\n                } else {\n                    if (TypeUtils.compatibleWithJavaBean) {\n                        propertyName = TypeUtils.decapitalize(methodName.substring(3));\n                    } else {\n                        propertyName = TypeUtils.getPropertyNameByMethodName(methodName);\n                    }\n                }\n\n            } else if (c3 == '_') {\n                // 这里本身的逻辑是通过set_abc这类方法名解析出成员变量名为abc, 但是在kotlin中, is_abc和_abc成员变量的set方法都是set_abc\n                // 因此如果是kotlin的话还需要进行不一样的判断, 判断的方式是通过get方法进行判断, is_abc的get方法名为is_abc(), _abc的get方法名为get_abc()\n                if (kotlin) {\n                    String getMethodName = \"g\" + methodName.substring(1);\n                    if (getMethodNameList.contains(getMethodName)) {\n                        propertyName = methodName.substring(3);\n                    } else {\n                        propertyName = \"is\" + methodName.substring(3);\n                    }\n                    field = TypeUtils.getField(clazz, propertyName, declaredFields);\n                } else {\n                    propertyName = methodName.substring(4);\n                    field = TypeUtils.getField(clazz, propertyName, declaredFields);\n                    if (field == null) {\n                        String temp = propertyName;\n                        propertyName = methodName.substring(3);\n                        field = TypeUtils.getField(clazz, propertyName, declaredFields);\n                        if (field == null) {\n                            propertyName = temp; //减少修改代码带来的影响\n                        }\n                    }\n                }\n\n            } else if (c3 == 'f') {\n                propertyName = methodName.substring(3);\n            } else if (methodName.length() >= 5 && Character.isUpperCase(methodName.charAt(4))) {\n                propertyName = TypeUtils.decapitalize(methodName.substring(3));\n            } else {\n                propertyName = methodName.substring(3);\n                field = TypeUtils.getField(clazz, propertyName, declaredFields);\n                if (field == null) {\n                    continue;\n                }\n            }\n\n            if (field == null) {\n                field = TypeUtils.getField(clazz, propertyName, declaredFields);\n            }\n\n            if (field == null && types[0] == boolean.class) {\n                String isFieldName = \"is\" + Character.toUpperCase(propertyName.charAt(0)) + propertyName.substring(1);\n                field = TypeUtils.getField(clazz, isFieldName, declaredFields);\n            }\n\n            JSONField fieldAnnotation = null;\n            if (field != null) {\n                fieldAnnotation = TypeUtils.getAnnotation(field, JSONField.class);\n\n                if (fieldAnnotation != null) {\n                    if (!fieldAnnotation.deserialize()) {\n                        continue;\n                    }\n\n                    ordinal = fieldAnnotation.ordinal();\n                    serialzeFeatures = SerializerFeature.of(fieldAnnotation.serialzeFeatures());\n                    parserFeatures = Feature.of(fieldAnnotation.parseFeatures());\n\n                    if (fieldAnnotation.name().length() != 0) {\n                        propertyName = fieldAnnotation.name();\n                        add(fieldList, new FieldInfo(propertyName, method, field, clazz, type, ordinal,\n                                serialzeFeatures, parserFeatures, annotation, fieldAnnotation, null, genericInfo));\n                        continue;\n                    }\n                }\n\n            }\n\n            if (propertyNamingStrategy != null) {\n                propertyName = propertyNamingStrategy.translate(propertyName);\n            }\n\n            add(fieldList, new FieldInfo(propertyName, method, field, clazz, type, ordinal, serialzeFeatures, parserFeatures,\n                    annotation, fieldAnnotation, null, genericInfo));\n        }\n\n        Field[] fields = clazz.getFields();\n        computeFields(clazz, type, propertyNamingStrategy, fieldList, fields);\n\n        for (Method method : clazz.getMethods()) { // getter methods\n            String methodName = method.getName();\n            if (methodName.length() < 4) {\n                continue;\n            }\n\n            if (Modifier.isStatic(method.getModifiers())) {\n                continue;\n            }\n\n            if (builderClass == null && methodName.startsWith(\"get\") && Character.isUpperCase(methodName.charAt(3))) {\n                if (method.getParameterTypes().length != 0) {\n                    continue;\n                }\n\n                if (Collection.class.isAssignableFrom(method.getReturnType()) //\n                        || Map.class.isAssignableFrom(method.getReturnType()) //\n                        || AtomicBoolean.class == method.getReturnType() //\n                        || AtomicInteger.class == method.getReturnType() //\n                        || AtomicLong.class == method.getReturnType() //\n                        ) {\n                    String propertyName;\n                    Field collectionField = null;\n\n                    JSONField annotation = TypeUtils.getAnnotation(method, JSONField.class);\n                    if (annotation != null && annotation.deserialize()) {\n                        continue;\n                    }\n\n                    if (annotation != null && annotation.name().length() > 0) {\n                        propertyName = annotation.name();\n                    } else {\n                        propertyName = TypeUtils.getPropertyNameByMethodName(methodName);\n\n                        Field field = TypeUtils.getField(clazz, propertyName, declaredFields);\n                        if (field != null) {\n                            JSONField fieldAnnotation = TypeUtils.getAnnotation(field, JSONField.class);\n                            if (fieldAnnotation != null && !fieldAnnotation.deserialize()) {\n                                continue;\n                            }\n\n                            if (Collection.class.isAssignableFrom(method.getReturnType())\n                                || Map.class.isAssignableFrom(method.getReturnType())) {\n                                collectionField = field;\n                            }\n                        }\n                    }\n\n                    if (propertyNamingStrategy != null) {\n                        propertyName = propertyNamingStrategy.translate(propertyName);\n                    }\n\n                    FieldInfo fieldInfo = getField(fieldList, propertyName);\n                    if (fieldInfo != null) {\n                        continue;\n                    }\n\n                    add(fieldList, new FieldInfo(propertyName, method, collectionField, clazz, type, 0, 0, 0, annotation, null, null, genericInfo));\n                }\n            }\n        }\n\n        if (fieldList.size() == 0) {\n            if (TypeUtils.isXmlField(clazz)) {\n                fieldBased = true;\n            }\n\n            if (fieldBased) {\n                for (Class<?> currentClass = clazz; currentClass != null; currentClass = currentClass.getSuperclass()) {\n                    computeFields(clazz, type, propertyNamingStrategy, fieldList, declaredFields);\n                }\n            }\n        }\n\n        return new JavaBeanInfo(clazz, builderClass, defaultConstructor, creatorConstructor, factoryMethod, buildMethod, jsonType, fieldList);\n    }\n\n    private static void computeFields(Class<?> clazz, Type type, PropertyNamingStrategy propertyNamingStrategy, List<FieldInfo> fieldList, Field[] fields) {\n        Map<TypeVariable, Type> genericInfo = buildGenericInfo(clazz);\n\n        for (Field field : fields) { // public static fields\n            int modifiers = field.getModifiers();\n            if ((modifiers & Modifier.STATIC) != 0) {\n                continue;\n            }\n\n            if ((modifiers & Modifier.FINAL) != 0) {\n                Class<?> fieldType = field.getType();\n                boolean supportReadOnly = Map.class.isAssignableFrom(fieldType)\n                        || Collection.class.isAssignableFrom(fieldType)\n                        || AtomicLong.class.equals(fieldType) //\n                        || AtomicInteger.class.equals(fieldType) //\n                        || AtomicBoolean.class.equals(fieldType);\n                if (!supportReadOnly) {\n                    continue;\n                }\n            }\n\n            boolean contains = false;\n            for (FieldInfo item : fieldList) {\n                if (item.name.equals(field.getName())) {\n                    contains = true;\n                    break; // 已经是 contains = true，无需继续遍历\n                }\n            }\n\n            if (contains) {\n                continue;\n            }\n\n            int ordinal = 0, serialzeFeatures = 0, parserFeatures = 0;\n            String propertyName = field.getName();\n\n            JSONField fieldAnnotation = TypeUtils.getAnnotation(field, JSONField.class);\n\n            if (fieldAnnotation != null) {\n                if (!fieldAnnotation.deserialize()) {\n                    continue;\n                }\n\n                ordinal = fieldAnnotation.ordinal();\n                serialzeFeatures = SerializerFeature.of(fieldAnnotation.serialzeFeatures());\n                parserFeatures = Feature.of(fieldAnnotation.parseFeatures());\n\n                if (fieldAnnotation.name().length() != 0) {\n                    propertyName = fieldAnnotation.name();\n                }\n            }\n\n            if (propertyNamingStrategy != null) {\n                propertyName = propertyNamingStrategy.translate(propertyName);\n            }\n\n            add(fieldList, new FieldInfo(propertyName, null, field, clazz, type, ordinal, serialzeFeatures, parserFeatures, null,\n                    fieldAnnotation, null, genericInfo));\n        }\n    }\n\n    static Constructor<?> getDefaultConstructor(Class<?> clazz, final Constructor<?>[] constructors) {\n        if (Modifier.isAbstract(clazz.getModifiers())) {\n            return null;\n        }\n\n        Constructor<?> defaultConstructor = null;\n\n        for (Constructor<?> constructor : constructors) {\n            if (constructor.getParameterTypes().length == 0) {\n                defaultConstructor = constructor;\n                break;\n            }\n        }\n\n        if (defaultConstructor == null) {\n            if (clazz.isMemberClass() && !Modifier.isStatic(clazz.getModifiers())) {\n                Class<?>[] types;\n                for (Constructor<?> constructor : constructors) {\n                    if ((types = constructor.getParameterTypes()).length == 1\n                            && types[0].equals(clazz.getDeclaringClass())) {\n                        defaultConstructor = constructor;\n                        break;\n                    }\n                }\n            }\n        }\n\n        return defaultConstructor;\n    }\n\n    public static Constructor<?> getCreatorConstructor(Constructor[] constructors) {\n        Constructor<?> creatorConstructor = null;\n\n        for (Constructor<?> constructor : constructors) {\n            JSONCreator annotation = constructor.getAnnotation(JSONCreator.class);\n            if (annotation != null) {\n                if (creatorConstructor != null) {\n                    throw new JSONException(\"multi-JSONCreator\");\n                }\n\n                creatorConstructor = constructor;\n                // 不应该break，否则多个构造方法上存在 JSONCreator 注解时，并不会触发上述异常抛出\n            }\n        }\n        if (creatorConstructor != null) {\n            return creatorConstructor;\n        }\n\n        for (Constructor constructor : constructors) {\n            Annotation[][] paramAnnotationArrays = TypeUtils.getParameterAnnotations(constructor);\n\n            if (paramAnnotationArrays.length == 0) {\n                continue;\n            }\n            boolean match = true;\n            for (Annotation[] paramAnnotationArray : paramAnnotationArrays) {\n                boolean paramMatch = false;\n                for (Annotation paramAnnotation : paramAnnotationArray) {\n                    if (paramAnnotation instanceof JSONField) {\n                        paramMatch = true;\n                        break;\n                    }\n                }\n                if (!paramMatch) {\n                    match = false;\n                    break;\n                }\n            }\n\n            if (match) {\n                if (creatorConstructor != null) {\n                    throw new JSONException(\"multi-JSONCreator\");\n                }\n\n                creatorConstructor = constructor;\n            }\n        }\n\n        return creatorConstructor;\n    }\n\n    private static Method getFactoryMethod(Class<?> clazz, Method[] methods, boolean jacksonCompatible) {\n        Method factoryMethod = null;\n\n        for (Method method : methods) {\n            if (!Modifier.isStatic(method.getModifiers())) {\n                continue;\n            }\n\n            if (!clazz.isAssignableFrom(method.getReturnType())) {\n                continue;\n            }\n\n            JSONCreator annotation = TypeUtils.getAnnotation(method, JSONCreator.class);\n            if (annotation != null) {\n                if (factoryMethod != null) {\n                    throw new JSONException(\"multi-JSONCreator\");\n                }\n\n                factoryMethod = method;\n                // 不应该break，否则多个静态工厂方法上存在 JSONCreator 注解时，并不会触发上述异常抛出\n            }\n        }\n\n        if (factoryMethod == null && jacksonCompatible) {\n            for (Method method : methods) {\n                if (TypeUtils.isJacksonCreator(method)) {\n                    factoryMethod = method;\n                    break;\n                }\n            }\n        }\n        return factoryMethod;\n    }\n\n    /**\n     * @deprecated\n     */\n    public static Class<?> getBuilderClass(JSONType type) {\n        return getBuilderClass(null, type);\n    }\n\n    public static Class<?> getBuilderClass(Class<?> clazz, JSONType type) {\n        if (clazz != null && clazz.getName().equals(\"org.springframework.security.web.savedrequest.DefaultSavedRequest\")) {\n            return TypeUtils.loadClass(\"org.springframework.security.web.savedrequest.DefaultSavedRequest$Builder\");\n        }\n\n        if (type == null) {\n            return null;\n        }\n\n        Class<?> builderClass = type.builder();\n\n        if (builderClass == Void.class) {\n            return null;\n        }\n\n        return builderClass;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/util/ModuleUtil.java",
    "content": "package com.alibaba.fastjson.util;\n\nimport java.util.concurrent.Callable;\n\npublic class ModuleUtil {\n    private static boolean hasJavaSql = false;\n\n    static {\n        try {\n            Class.forName(\"java.sql.Time\");\n            hasJavaSql = true;\n        } catch (Throwable e) {\n            hasJavaSql = false;\n        }\n    }\n\n    public static <T> T callWhenHasJavaSql(Callable<T> callable) {\n        if (hasJavaSql) {\n            try {\n                return callable.call();\n            } catch (Exception e) {\n                throw new RuntimeException(e);\n            }\n        }\n        return null;\n    }\n\n    public static <ARG, T> T callWhenHasJavaSql(Function<ARG, T> callable, ARG arg) {\n        if (hasJavaSql) {\n            return callable.apply(arg);\n        }\n        return null;\n    }\n\n    public static <T, U, R> R callWhenHasJavaSql(BiFunction<T, U, R> callable, T t, U u) {\n        if (hasJavaSql) {\n            return callable.apply(t, u);\n        }\n        return null;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/util/ParameterizedTypeImpl.java",
    "content": "package com.alibaba.fastjson.util;\n\nimport java.lang.reflect.ParameterizedType;\nimport java.lang.reflect.Type;\nimport java.util.Arrays;\n\npublic class ParameterizedTypeImpl implements ParameterizedType {\n\n    private final Type[] actualTypeArguments;\n    private final Type   ownerType;\n    private final Type   rawType;\n\n    public ParameterizedTypeImpl(Type[] actualTypeArguments, Type ownerType, Type rawType){\n        this.actualTypeArguments = actualTypeArguments;\n        this.ownerType = ownerType;\n        this.rawType = rawType;\n    }\n\n    public Type[] getActualTypeArguments() {\n        return actualTypeArguments;\n    }\n\n    public Type getOwnerType() {\n        return ownerType;\n    }\n\n    public Type getRawType() {\n        return rawType;\n    }\n\n\n    @Override\n    public boolean equals(Object o) {\n        if (this == o) return true;\n        if (o == null || getClass() != o.getClass()) return false;\n\n        ParameterizedTypeImpl that = (ParameterizedTypeImpl) o;\n\n        // Probably incorrect - comparing Object[] arrays with Arrays.equals\n        if (!Arrays.equals(actualTypeArguments, that.actualTypeArguments)) return false;\n        if (ownerType != null ? !ownerType.equals(that.ownerType) : that.ownerType != null) return false;\n        return rawType != null ? rawType.equals(that.rawType) : that.rawType == null;\n\n    }\n\n    @Override\n    public int hashCode() {\n        int result = actualTypeArguments != null ? Arrays.hashCode(actualTypeArguments) : 0;\n        result = 31 * result + (ownerType != null ? ownerType.hashCode() : 0);\n        result = 31 * result + (rawType != null ? rawType.hashCode() : 0);\n        return result;\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/util/RyuDouble.java",
    "content": "// Copyright 2018 Ulf Adams\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage com.alibaba.fastjson.util;\n\nimport java.math.BigInteger;\n\n/**\n * An implementation of Ryu for double.\n */\npublic final class RyuDouble {\n    private static final int[][] POW5_SPLIT = new int[326][4];\n    private static final int[][] POW5_INV_SPLIT = new int[291][4];\n\n    static {\n        BigInteger mask = BigInteger.ONE.shiftLeft(31).subtract(BigInteger.ONE);\n        BigInteger invMask = BigInteger.ONE.shiftLeft(31).subtract(BigInteger.ONE);\n        for (int i = 0; i < 326; i++) {\n            BigInteger pow = BigInteger.valueOf(5).pow(i);\n            int pow5len = pow.bitLength();\n            int expectedPow5Bits = i == 0 ? 1 : (int) ((i * 23219280L + 10000000L - 1) / 10000000L);\n            if (expectedPow5Bits != pow5len) {\n                throw new IllegalStateException(pow5len + \" != \" + expectedPow5Bits);\n            }\n            if (i < POW5_SPLIT.length) {\n                for (int j = 0; j < 4; j++) {\n                    POW5_SPLIT[i][j] = pow\n                            .shiftRight(pow5len - 121 + (3 - j) * 31)\n                            .and(mask)\n                            .intValue();\n                }\n            }\n\n            if (i < POW5_INV_SPLIT.length) {\n                // We want floor(log_2 5^q) here, which is pow5len - 1.\n                int j = pow5len + 121;\n                BigInteger inv = BigInteger.ONE\n                        .shiftLeft(j)\n                        .divide(pow)\n                        .add(BigInteger.ONE);\n                for (int k = 0; k < 4; k++) {\n                    if (k == 0) {\n                        POW5_INV_SPLIT[i][k] = inv\n                                .shiftRight((3 - k) * 31)\n                                .intValue();\n                    } else {\n                        POW5_INV_SPLIT[i][k] = inv\n                                .shiftRight((3 - k) * 31)\n                                .and(invMask)\n                                .intValue();\n                    }\n                }\n            }\n        }\n    }\n\n    public static String toString(double value) {\n        char[] result = new char[24];\n        int len = toString(value, result, 0);\n        return new String(result, 0, len);\n    }\n\n    public static int toString(double value, char[] result, int off) {\n        final long DOUBLE_MANTISSA_MASK = 4503599627370495L; // (1L << 52) - 1;\n        final int DOUBLE_EXPONENT_MASK = 2047; // (1 << 11) - 1;\n        final int DOUBLE_EXPONENT_BIAS = 1023; // (1 << (11 - 1)) - 1;\n        final long LOG10_5_NUMERATOR = 6989700L; // (long) (10000000L * Math.log10(5));\n        final long LOG10_2_NUMERATOR = 3010299L; // (long) (10000000L * Math.log10(2));\n\n        // Step 1: Decode the floating point number, and unify normalized and subnormal cases.\n        // First, handle all the trivial cases.\n        int index = off;\n        if (Double.isNaN(value)) {\n            result[index++] = 'N';\n            result[index++] = 'a';\n            result[index++] = 'N';\n            return index - off;\n        }\n\n        if (value == Double.POSITIVE_INFINITY) {\n            result[index++] = 'I';\n            result[index++] = 'n';\n            result[index++] = 'f';\n            result[index++] = 'i';\n            result[index++] = 'n';\n            result[index++] = 'i';\n            result[index++] = 't';\n            result[index++] = 'y';\n            return index - off;\n        }\n\n        if (value == Double.NEGATIVE_INFINITY) {\n            result[index++] = '-';\n            result[index++] = 'I';\n            result[index++] = 'n';\n            result[index++] = 'f';\n            result[index++] = 'i';\n            result[index++] = 'n';\n            result[index++] = 'i';\n            result[index++] = 't';\n            result[index++] = 'y';\n            return index - off;\n        }\n\n        long bits = Double.doubleToLongBits(value);\n        if (bits == 0) {\n            result[index++] = '0';\n            result[index++] = '.';\n            result[index++] = '0';\n            return index - off;\n        }\n        if (bits == 0x8000000000000000L) {\n            result[index++] = '-';\n            result[index++] = '0';\n            result[index++] = '.';\n            result[index++] = '0';\n            return index - off;\n        }\n\n        final int DOUBLE_MANTISSA_BITS = 52;\n        // Otherwise extract the mantissa and exponent bits and run the full algorithm.\n        int ieeeExponent = (int) ((bits >>> DOUBLE_MANTISSA_BITS) & DOUBLE_EXPONENT_MASK);\n        long ieeeMantissa = bits & DOUBLE_MANTISSA_MASK;\n        int e2;\n        long m2;\n        if (ieeeExponent == 0) {\n            // Denormal number - no implicit leading 1, and the exponent is 1, not 0.\n            e2 = 1 - DOUBLE_EXPONENT_BIAS - DOUBLE_MANTISSA_BITS;\n            m2 = ieeeMantissa;\n        } else {\n            // Add implicit leading 1.\n            e2 = ieeeExponent - DOUBLE_EXPONENT_BIAS - DOUBLE_MANTISSA_BITS;\n            m2 = ieeeMantissa | (1L << DOUBLE_MANTISSA_BITS);\n        }\n\n        boolean sign = bits < 0;\n\n        // Step 2: Determine the interval of legal decimal representations.\n        boolean even = (m2 & 1) == 0;\n        final long mv = 4 * m2;\n        final long mp = 4 * m2 + 2;\n        final int mmShift = ((m2 != (1L << DOUBLE_MANTISSA_BITS)) || (ieeeExponent <= 1)) ? 1 : 0;\n        final long mm = 4 * m2 - 1 - mmShift;\n        e2 -= 2;\n\n        // Step 3: Convert to a decimal power base using 128-bit arithmetic.\n        // -1077 = 1 - 1023 - 53 - 2 <= e_2 - 2 <= 2046 - 1023 - 53 - 2 = 968\n        long dv, dp, dm;\n        final int e10;\n        boolean dmIsTrailingZeros = false, dvIsTrailingZeros = false;\n        if (e2 >= 0) {\n            final int q = Math.max(0, (int) (e2 * LOG10_2_NUMERATOR / 10000000L) - 1);\n            // k = constant + floor(log_2(5^q))\n            // q == 0 ? 1 : (int) ((q * 23219280L + 10000000L - 1) / 10000000L)\n            final int k = 122 + (q == 0 ? 1 : (int) ((q * 23219280L + 10000000L - 1) / 10000000L)) - 1;\n            final int i = -e2 + q + k;\n\n            int actualShift = i - 3 * 31 - 21;\n            if (actualShift < 0) {\n                throw new IllegalArgumentException(\"\" + actualShift);\n            }\n\n            final int[] ints = POW5_INV_SPLIT[q];\n            {\n                long mHigh = mv >>> 31;\n                long mLow = mv & 0x7fffffff;\n                long bits13 = mHigh * ints[0];\n                long bits03 = mLow * ints[0];\n                long bits12 = mHigh * ints[1];\n                long bits02 = mLow * ints[1];\n                long bits11 = mHigh * ints[2];\n                long bits01 = mLow * ints[2];\n                long bits10 = mHigh * ints[3];\n                long bits00 = mLow * ints[3];\n\n\n                dv = ((((((\n                        ((bits00 >>> 31) + bits01 + bits10) >>> 31)\n                        + bits02 + bits11) >>> 31)\n                        + bits03 + bits12) >>> 21)\n                        + (bits13 << 10)) >>> actualShift;\n            }\n            {\n                long mHigh = mp >>> 31;\n                long mLow = mp & 0x7fffffff;\n                long bits13 = mHigh * ints[0];\n                long bits03 = mLow * ints[0];\n                long bits12 = mHigh * ints[1];\n                long bits02 = mLow * ints[1];\n                long bits11 = mHigh * ints[2];\n                long bits01 = mLow * ints[2];\n                long bits10 = mHigh * ints[3];\n                long bits00 = mLow * ints[3];\n\n                dp = ((((((\n                        ((bits00 >>> 31) + bits01 + bits10) >>> 31)\n                        + bits02 + bits11) >>> 31)\n                        + bits03 + bits12) >>> 21)\n                        + (bits13 << 10)) >>> actualShift;\n            }\n            {\n                long mHigh = mm >>> 31;\n                long mLow = mm & 0x7fffffff;\n                long bits13 = mHigh * ints[0];\n                long bits03 = mLow * ints[0];\n                long bits12 = mHigh * ints[1];\n                long bits02 = mLow * ints[1];\n                long bits11 = mHigh * ints[2];\n                long bits01 = mLow * ints[2];\n                long bits10 = mHigh * ints[3];\n                long bits00 = mLow * ints[3];\n\n                dm = ((((((\n                        ((bits00 >>> 31) + bits01 + bits10) >>> 31)\n                        + bits02 + bits11) >>> 31)\n                        + bits03 + bits12) >>> 21)\n                        + (bits13 << 10)) >>> actualShift;\n            }\n\n            e10 = q;\n\n            if (q <= 21) {\n                if (mv % 5 == 0) {\n                    int pow5Factor_mv;\n                    {\n                        long v = mv;\n                        if ((v % 5) != 0) {\n                            pow5Factor_mv = 0;\n                        } else if ((v % 25) != 0) {\n                            pow5Factor_mv = 1;\n                        } else if ((v % 125) != 0) {\n                            pow5Factor_mv = 2;\n                        } else if ((v % 625) != 0) {\n                            pow5Factor_mv = 3;\n                        } else {\n                            pow5Factor_mv = 4;\n                            v /= 625;\n                            while (v > 0) {\n                                if (v % 5 != 0) {\n                                    break;\n                                }\n                                v /= 5;\n                                pow5Factor_mv++;\n                            }\n                        }\n                    }\n                    dvIsTrailingZeros = pow5Factor_mv >= q;\n                } else if (even) {\n                    int pow5Factor_mm;\n                    {\n                        long v = mm;\n                        if ((v % 5) != 0) {\n                            pow5Factor_mm = 0;\n                        } else if ((v % 25) != 0) {\n                            pow5Factor_mm = 1;\n                        } else if ((v % 125) != 0) {\n                            pow5Factor_mm = 2;\n                        } else if ((v % 625) != 0) {\n                            pow5Factor_mm = 3;\n                        } else {\n                            pow5Factor_mm = 4;\n                            v /= 625;\n                            while (v > 0) {\n                                if (v % 5 != 0) {\n                                    break;\n                                }\n                                v /= 5;\n                                pow5Factor_mm++;\n                            }\n                        }\n                    }\n\n                    dmIsTrailingZeros = pow5Factor_mm >= q; //\n                } else {\n                    int pow5Factor_mp;\n                    {\n                        long v = mp;\n                        if ((v % 5) != 0) {\n                            pow5Factor_mp = 0;\n                        } else if ((v % 25) != 0) {\n                            pow5Factor_mp = 1;\n                        } else if ((v % 125) != 0) {\n                            pow5Factor_mp = 2;\n                        } else if ((v % 625) != 0) {\n                            pow5Factor_mp = 3;\n                        } else {\n                            pow5Factor_mp = 4;\n                            v /= 625;\n                            while (v > 0) {\n                                if (v % 5 != 0) {\n                                    break;\n                                }\n                                v /= 5;\n                                pow5Factor_mp++;\n                            }\n                        }\n                    }\n\n                    if (pow5Factor_mp >= q) {\n                        dp--;\n                    }\n                }\n            }\n        } else {\n            final int q = Math.max(0, (int) (-e2 * LOG10_5_NUMERATOR / 10000000L) - 1);\n            final int i = -e2 - q;\n            final int k = (i == 0 ? 1 : (int) ((i * 23219280L + 10000000L - 1) / 10000000L)) - 121;\n            final int j = q - k;\n\n            int actualShift = j - 3 * 31 - 21;\n            if (actualShift < 0) {\n                throw new IllegalArgumentException(\"\" + actualShift);\n            }\n            int[] ints = POW5_SPLIT[i];\n            {\n                long mHigh = mv >>> 31;\n                long mLow = mv & 0x7fffffff;\n                long bits13 = mHigh * ints[0]; // 124\n                long bits03 = mLow * ints[0];  // 93\n                long bits12 = mHigh * ints[1]; // 93\n                long bits02 = mLow * ints[1];  // 62\n                long bits11 = mHigh * ints[2]; // 62\n                long bits01 = mLow * ints[2];  // 31\n                long bits10 = mHigh * ints[3]; // 31\n                long bits00 = mLow * ints[3];  // 0\n\n                dv = ((((((\n                        ((bits00 >>> 31) + bits01 + bits10) >>> 31)\n                        + bits02 + bits11) >>> 31)\n                        + bits03 + bits12) >>> 21)\n                        + (bits13 << 10)) >>> actualShift;\n            }\n            {\n                long mHigh = mp >>> 31;\n                long mLow = mp & 0x7fffffff;\n                long bits13 = mHigh * ints[0]; // 124\n                long bits03 = mLow * ints[0];  // 93\n                long bits12 = mHigh * ints[1]; // 93\n                long bits02 = mLow * ints[1];  // 62\n                long bits11 = mHigh * ints[2]; // 62\n                long bits01 = mLow * ints[2];  // 31\n                long bits10 = mHigh * ints[3]; // 31\n                long bits00 = mLow * ints[3];  // 0\n                dp = ((((((\n                        ((bits00 >>> 31) + bits01 + bits10) >>> 31)\n                        + bits02 + bits11) >>> 31)\n                        + bits03 + bits12) >>> 21)\n                        + (bits13 << 10)) >>> actualShift;\n            }\n            {\n                long mHigh = mm >>> 31;\n                long mLow = mm & 0x7fffffff;\n                long bits13 = mHigh * ints[0]; // 124\n                long bits03 = mLow * ints[0];  // 93\n                long bits12 = mHigh * ints[1]; // 93\n                long bits02 = mLow * ints[1];  // 62\n                long bits11 = mHigh * ints[2]; // 62\n                long bits01 = mLow * ints[2];  // 31\n                long bits10 = mHigh * ints[3]; // 31\n                long bits00 = mLow * ints[3];  // 0\n                dm = ((((((\n                        ((bits00 >>> 31) + bits01 + bits10) >>> 31)\n                        + bits02 + bits11) >>> 31)\n                        + bits03 + bits12) >>> 21)\n                        + (bits13 << 10)) >>> actualShift;\n            }\n\n            e10 = q + e2;\n            if (q <= 1) {\n                dvIsTrailingZeros = true;\n                if (even) {\n                    dmIsTrailingZeros = mmShift == 1;\n                } else {\n                    dp--;\n                }\n            } else if (q < 63) {\n                dvIsTrailingZeros = (mv & ((1L << (q - 1)) - 1)) == 0;\n            }\n        }\n\n        // Step 4: Find the shortest decimal representation in the interval of legal representations.\n        //\n        // We do some extra work here in order to follow Float/Double.toString semantics. In particular,\n        // that requires printing in scientific format if and only if the exponent is between -3 and 7,\n        // and it requires printing at least two decimal digits.\n        //\n        // Above, we moved the decimal dot all the way to the right, so now we need to count digits to\n        // figure out the correct exponent for scientific notation.\n        final int vplength; //  = decimalLength(dp);\n        if (dp >=        1000000000000000000L) {\n            vplength= 19;\n        } else if (dp >= 100000000000000000L) {\n            vplength=  18;\n        } else if (dp >= 10000000000000000L) {\n            vplength = 17;\n        } else if (dp >= 1000000000000000L) {\n            vplength = 16;\n        } else if (dp >= 100000000000000L) {\n            vplength = 15;\n        } else if (dp >= 10000000000000L) {\n            vplength = 14;\n        } else if (dp >= 1000000000000L) {\n            vplength = 13;\n        } else if (dp >= 100000000000L) {\n            vplength = 12;\n        } else if (dp >= 10000000000L) {\n            vplength = 11;\n        } else if (dp >= 1000000000L) {\n            vplength = 10;\n        } else if (dp >= 100000000L) {\n            vplength = 9;\n        } else if (dp >= 10000000L) {\n            vplength = 8;\n        } else if (dp >= 1000000L) {\n            vplength = 7;\n        } else if (dp >= 100000L) {\n            vplength = 6;\n        } else if (dp >= 10000L) {\n            vplength = 5;\n        } else if (dp >= 1000L) {\n            vplength = 4;\n        } else if (dp >= 100L) {\n            vplength = 3;\n        } else if (dp >= 10L) {\n            vplength = 2;\n        } else {\n            vplength = 1;\n        }\n\n        int exp = e10 + vplength - 1;\n\n        // Double.toString semantics requires using scientific notation if and only if outside this range.\n        boolean scientificNotation = !((exp >= -3) && (exp < 7));\n\n        int removed = 0;\n\n        int lastRemovedDigit = 0;\n        long output;\n        if (dmIsTrailingZeros || dvIsTrailingZeros) {\n            while (dp / 10 > dm / 10) {\n                if ((dp < 100) && scientificNotation) {\n                    // Double.toString semantics requires printing at least two digits.\n                    break;\n                }\n                dmIsTrailingZeros &= dm % 10 == 0;\n                dvIsTrailingZeros &= lastRemovedDigit == 0;\n                lastRemovedDigit = (int) (dv % 10);\n                dp /= 10;\n                dv /= 10;\n                dm /= 10;\n                removed++;\n            }\n            if (dmIsTrailingZeros && even) {\n                while (dm % 10 == 0) {\n                    if ((dp < 100) && scientificNotation) {\n                        // Double.toString semantics requires printing at least two digits.\n                        break;\n                    }\n                    dvIsTrailingZeros &= lastRemovedDigit == 0;\n                    lastRemovedDigit = (int) (dv % 10);\n                    dp /= 10;\n                    dv /= 10;\n                    dm /= 10;\n                    removed++;\n                }\n            }\n            if (dvIsTrailingZeros && (lastRemovedDigit == 5) && (dv % 2 == 0)) {\n                // Round even if the exact numbers is .....50..0.\n                lastRemovedDigit = 4;\n            }\n            output = dv +\n                    ((dv == dm && !(dmIsTrailingZeros && even)) || (lastRemovedDigit >= 5) ? 1 : 0);\n        } else {\n            while (dp / 10 > dm / 10) {\n                if ((dp < 100) && scientificNotation) {\n                    // Double.toString semantics requires printing at least two digits.\n                    break;\n                }\n                lastRemovedDigit = (int) (dv % 10);\n                dp /= 10;\n                dv /= 10;\n                dm /= 10;\n                removed++;\n            }\n            output = dv + ((dv == dm || (lastRemovedDigit >= 5)) ? 1 : 0);\n        }\n        int olength = vplength - removed;\n\n        // Step 5: Print the decimal representation.\n        // We follow Double.toString semantics here.\n        if (sign) {\n            result[index++] = '-';\n        }\n\n        // Values in the interval [1E-3, 1E7) are special.\n        if (scientificNotation) {\n            // Print in the format x.xxxxxE-yy.\n            for (int i = 0; i < olength - 1; i++) {\n                int c = (int) (output % 10);\n                output /= 10;\n                result[index + olength - i] = (char) ('0' + c);\n            }\n            result[index] = (char) ('0' + output % 10);\n            result[index + 1] = '.';\n            index += olength + 1;\n            if (olength == 1) {\n                result[index++] = '0';\n            }\n\n            // Print 'E', the exponent sign, and the exponent, which has at most three digits.\n            result[index++] = 'E';\n            if (exp < 0) {\n                result[index++] = '-';\n                exp = -exp;\n            }\n            if (exp >= 100) {\n                result[index++] = (char) ('0' + exp / 100);\n                exp %= 100;\n                result[index++] = (char) ('0' + exp / 10);\n            } else if (exp >= 10) {\n                result[index++] = (char) ('0' + exp / 10);\n            }\n            result[index++] = (char) ('0' + exp % 10);\n            return index - off;\n        } else {\n            // Otherwise follow the Java spec for values in the interval [1E-3, 1E7).\n            if (exp < 0) {\n                // Decimal dot is before any of the digits.\n                result[index++] = '0';\n                result[index++] = '.';\n                for (int i = -1; i > exp; i--) {\n                    result[index++] = '0';\n                }\n                int current = index;\n                for (int i = 0; i < olength; i++) {\n                    result[current + olength - i - 1] = (char) ('0' + output % 10);\n                    output /= 10;\n                    index++;\n                }\n            } else if (exp + 1 >= olength) {\n                // Decimal dot is after any of the digits.\n                for (int i = 0; i < olength; i++) {\n                    result[index + olength - i - 1] = (char) ('0' + output % 10);\n                    output /= 10;\n                }\n                index += olength;\n                for (int i = olength; i < exp + 1; i++) {\n                    result[index++] = '0';\n                }\n                result[index++] = '.';\n                result[index++] = '0';\n            } else {\n                // Decimal dot is somewhere between the digits.\n                int current = index + 1;\n                for (int i = 0; i < olength; i++) {\n                    if (olength - i - 1 == exp) {\n                        result[current + olength - i - 1] = '.';\n                        current--;\n                    }\n                    result[current + olength - i - 1] = (char) ('0' + output % 10);\n                    output /= 10;\n                }\n                index += olength + 1;\n            }\n            return index - off;\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/util/RyuFloat.java",
    "content": "// Copyright 2018 Ulf Adams\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage com.alibaba.fastjson.util;\n\n/**\n * An implementation of Ryu for float.\n */\npublic final class RyuFloat {\n    private static final int[][] POW5_SPLIT = {\n            {536870912, 0},\n            {671088640, 0},\n            {838860800, 0},\n            {1048576000, 0},\n            {655360000, 0},\n            {819200000, 0},\n            {1024000000, 0},\n            {640000000, 0},\n            {800000000, 0},\n            {1000000000, 0},\n            {625000000, 0},\n            {781250000, 0},\n            {976562500, 0},\n            {610351562, 1073741824},\n            {762939453, 268435456},\n            {953674316, 872415232},\n            {596046447, 1619001344},\n            {745058059, 1486880768},\n            {931322574, 1321730048},\n            {582076609, 289210368},\n            {727595761, 898383872},\n            {909494701, 1659850752},\n            {568434188, 1305842176},\n            {710542735, 1632302720},\n            {888178419, 1503507488},\n            {555111512, 671256724},\n            {693889390, 839070905},\n            {867361737, 2122580455},\n            {542101086, 521306416},\n            {677626357, 1725374844},\n            {847032947, 546105819},\n            {1058791184, 145761362},\n            {661744490, 91100851},\n            {827180612, 1187617888},\n            {1033975765, 1484522360},\n            {646234853, 1196261931},\n            {807793566, 2032198326},\n            {1009741958, 1466506084},\n            {631088724, 379695390},\n            {788860905, 474619238},\n            {986076131, 1130144959},\n            {616297582, 437905143},\n            {770371977, 1621123253},\n            {962964972, 415791331},\n            {601853107, 1333611405},\n            {752316384, 1130143345},\n            {940395480, 1412679181},\n    };\n\n    private static final int[][] POW5_INV_SPLIT = {\n            {268435456, 1},\n            {214748364, 1717986919},\n            {171798691, 1803886265},\n            {137438953, 1013612282},\n            {219902325, 1192282922},\n            {175921860, 953826338},\n            {140737488, 763061070},\n            {225179981, 791400982},\n            {180143985, 203624056},\n            {144115188, 162899245},\n            {230584300, 1978625710},\n            {184467440, 1582900568},\n            {147573952, 1266320455},\n            {236118324, 308125809},\n            {188894659, 675997377},\n            {151115727, 970294631},\n            {241785163, 1981968139},\n            {193428131, 297084323},\n            {154742504, 1955654377},\n            {247588007, 1840556814},\n            {198070406, 613451992},\n            {158456325, 61264864},\n            {253530120, 98023782},\n            {202824096, 78419026},\n            {162259276, 1780722139},\n            {259614842, 1990161963},\n            {207691874, 733136111},\n            {166153499, 1016005619},\n            {265845599, 337118801},\n            {212676479, 699191770},\n            {170141183, 988850146},\n    };\n\n    public static String toString(float value) {\n        char[] result = new char[15];\n        int len = toString(value, result, 0);\n        return new String(result, 0, len);\n    }\n\n    public static int toString(float value, char[] result, int off) {\n        final int FLOAT_MANTISSA_MASK = 8388607; // (1 << 23) - 1;\n        final int FLOAT_EXPONENT_MASK = 255; // (1 << 8) - 1;\n        final int FLOAT_EXPONENT_BIAS = 127; // (1 << (8 - 1)) - 1;\n        final long LOG10_2_NUMERATOR = 3010299; // (long) (10000000L * Math.log10(2));\n        final long LOG10_5_DENOMINATOR = 10000000L;\n        final long LOG10_5_NUMERATOR = 6989700L; // (long) (LOG10_5_DENOMINATOR * Math.log10(5));\n\n\n        // Step 1: Decode the floating point number, and unify normalized and subnormal cases.\n        // First, handle all the trivial cases.\n        int index = off;\n        if (Float.isNaN(value)) {\n            result[index++] = 'N';\n            result[index++] = 'a';\n            result[index++] = 'N';\n            return index - off;\n        }\n\n        if (value == Float.POSITIVE_INFINITY) {\n            result[index++] = 'I';\n            result[index++] = 'n';\n            result[index++] = 'f';\n            result[index++] = 'i';\n            result[index++] = 'n';\n            result[index++] = 'i';\n            result[index++] = 't';\n            result[index++] = 'y';\n            return index - off;\n        }\n\n        if (value == Float.NEGATIVE_INFINITY) {\n            result[index++] = '-';\n            result[index++] = 'I';\n            result[index++] = 'n';\n            result[index++] = 'f';\n            result[index++] = 'i';\n            result[index++] = 'n';\n            result[index++] = 'i';\n            result[index++] = 't';\n            result[index++] = 'y';\n            return index - off;\n        }\n\n        int bits = Float.floatToIntBits(value);\n        if (bits == 0) {\n            result[index++] = '0';\n            result[index++] = '.';\n            result[index++] = '0';\n            return index - off;\n        }\n        if (bits == 0x80000000) {\n            result[index++] = '-';\n            result[index++] = '0';\n            result[index++] = '.';\n            result[index++] = '0';\n            return index - off;\n        }\n\n        // Otherwise extract the mantissa and exponent bits and run the full algorithm.\n        int ieeeExponent = (bits >> 23) & FLOAT_EXPONENT_MASK;\n        int ieeeMantissa = bits & FLOAT_MANTISSA_MASK;\n        // By default, the correct mantissa starts with a 1, except for denormal numbers.\n        int e2;\n        int m2;\n        if (ieeeExponent == 0) {\n            e2 = 1 - FLOAT_EXPONENT_BIAS - 23;\n            m2 = ieeeMantissa;\n        } else {\n            e2 = ieeeExponent - FLOAT_EXPONENT_BIAS - 23;\n            m2 = ieeeMantissa | (1 << 23);\n        }\n\n        boolean sign = bits < 0;\n\n        // Step 2: Determine the interval of legal decimal representations.\n        boolean even = (m2 & 1) == 0;\n        int mv = 4 * m2;\n        int mp = 4 * m2 + 2;\n        int mm = 4 * m2 - ((m2 != (1L << 23)) || (ieeeExponent <= 1) ? 2 : 1);\n        e2 -= 2;\n\n        // Step 3: Convert to a decimal power base using 128-bit arithmetic.\n        // -151 = 1 - 127 - 23 - 2 <= e_2 - 2 <= 254 - 127 - 23 - 2 = 102\n        int dp, dv, dm;\n        int e10;\n        boolean dpIsTrailingZeros, dvIsTrailingZeros, dmIsTrailingZeros;\n        int lastRemovedDigit = 0;\n        if (e2 >= 0) {\n            // Compute m * 2^e_2 / 10^q = m * 2^(e_2 - q) / 5^q\n            int q = (int) (e2 * LOG10_2_NUMERATOR / 10000000L);\n            int k = 59 + (q == 0 ? 1 : (int) ((q * 23219280L + 10000000L - 1) / 10000000L)) - 1;\n            int i = -e2 + q + k;\n            long pis0 = (long) POW5_INV_SPLIT[q][0];\n            long pis1 = (long) POW5_INV_SPLIT[q][1];\n            dv = (int) ((mv * pis0 + ((mv * pis1) >> 31)) >> (i - 31));\n            dp = (int) ((mp * pis0 + ((mp * pis1) >> 31)) >> (i - 31));\n            dm = (int) ((mm * pis0 + ((mm * pis1) >> 31)) >> (i - 31));\n            if (q != 0 && ((dp - 1) / 10 <= dm / 10)) {\n                // We need to know one removed digit even if we are not going to loop below. We could use\n                // q = X - 1 above, except that would require 33 bits for the result, and we've found that\n                // 32-bit arithmetic is faster even on 64-bit machines.\n                int e = q - 1;\n                int l = 59 + (e == 0 ? 1 : (int) ((e * 23219280L + 10000000L - 1) / 10000000L)) - 1;\n                int qx = q - 1, ii = -e2 + q - 1 + l;\n                long mulPow5InvDivPow2 =  (mv * (long) POW5_INV_SPLIT[qx][0] + ((mv * (long) POW5_INV_SPLIT[qx][1]) >> 31)) >> (ii - 31);\n                lastRemovedDigit = (int) (mulPow5InvDivPow2 % 10);\n            }\n            e10 = q;\n\n            int pow5Factor_mp = 0;\n            {\n                int v = mp;\n                while (v > 0) {\n                    if (v % 5 != 0) {\n                        break;\n                    }\n                    v /= 5;\n                    pow5Factor_mp++;\n                }\n            }\n\n            int pow5Factor_mv = 0;\n            {\n                int v = mv;\n                while (v > 0) {\n                    if (v % 5 != 0) {\n                        break;\n                    }\n                    v /= 5;\n                    pow5Factor_mv++;\n                }\n            }\n\n            int pow5Factor_mm = 0;\n            {\n                int v = mm;\n                while (v > 0) {\n                    if (v % 5 != 0) {\n                        break;\n                    }\n                    v /= 5;\n                    pow5Factor_mm++;\n                }\n            }\n\n            dpIsTrailingZeros = pow5Factor_mp >= q;\n            dvIsTrailingZeros = pow5Factor_mv >= q;\n            dmIsTrailingZeros = pow5Factor_mm >= q;\n        } else {\n            // Compute m * 5^(-e_2) / 10^q = m * 5^(-e_2 - q) / 2^q\n            int q = (int) (-e2 * LOG10_5_NUMERATOR / LOG10_5_DENOMINATOR);\n            int i = -e2 - q;\n            int k = (i == 0 ? 1 : (int) ((i * 23219280L + 10000000L - 1) / 10000000L)) - 61;\n            int j = q - k;\n\n            long ps0 = POW5_SPLIT[i][0];\n            long ps1 = POW5_SPLIT[i][1];\n            int j31 = j - 31;\n            dv = (int) ((mv * ps0 + ((mv * ps1) >> 31)) >> j31);\n            dp = (int) ((mp * ps0 + ((mp * ps1) >> 31)) >> j31);\n            dm = (int) ((mm * ps0 + ((mm * ps1) >> 31)) >> j31);\n\n            if (q != 0 && ((dp - 1) / 10 <= dm / 10)) {\n                int e = i + 1;\n                j = q - 1 - ((e == 0 ? 1 : (int) ((e * 23219280L + 10000000L - 1) / 10000000L)) - 61);\n                int ix = i + 1;\n                long mulPow5divPow2 = (mv * (long) POW5_SPLIT[ix][0] + ((mv * (long) POW5_SPLIT[ix][1]) >> 31)) >> (j - 31);\n                lastRemovedDigit = (int) (mulPow5divPow2 % 10);\n            }\n            e10 = q + e2; // Note: e2 and e10 are both negative here.\n\n            dpIsTrailingZeros = 1 >= q;\n            dvIsTrailingZeros = (q < 23) && (mv & ((1 << (q - 1)) - 1)) == 0;\n            dmIsTrailingZeros = (mm % 2 == 1 ? 0 : 1) >= q;\n        }\n\n        // Step 4: Find the shortest decimal representation in the interval of legal representations.\n        //\n        // We do some extra work here in order to follow Float/Double.toString semantics. In particular,\n        // that requires printing in scientific format if and only if the exponent is between -3 and 7,\n        // and it requires printing at least two decimal digits.\n        //\n        // Above, we moved the decimal dot all the way to the right, so now we need to count digits to\n        // figure out the correct exponent for scientific notation.\n\n        int dplength = 10;\n        int factor = 1000000000;\n        for (; dplength > 0; dplength--) {\n            if (dp >= factor) {\n                break;\n            }\n            factor /= 10;\n        }\n        int exp = e10 + dplength - 1;\n\n        // Float.toString semantics requires using scientific notation if and only if outside this range.\n        boolean scientificNotation = !((exp >= -3) && (exp < 7));\n\n        int removed = 0;\n        if (dpIsTrailingZeros && !even) {\n            dp--;\n        }\n\n        while (dp / 10 > dm / 10) {\n            if ((dp < 100) && scientificNotation) {\n                // We print at least two digits, so we might as well stop now.\n                break;\n            }\n            dmIsTrailingZeros &= dm % 10 == 0;\n            dp /= 10;\n            lastRemovedDigit = dv % 10;\n            dv /= 10;\n            dm /= 10;\n            removed++;\n        }\n        if (dmIsTrailingZeros && even) {\n            while (dm % 10 == 0) {\n                if ((dp < 100) && scientificNotation) {\n                    // We print at least two digits, so we might as well stop now.\n                    break;\n                }\n                dp /= 10;\n                lastRemovedDigit = dv % 10;\n                dv /= 10;\n                dm /= 10;\n                removed++;\n            }\n        }\n\n        if (dvIsTrailingZeros && (lastRemovedDigit == 5) && (dv % 2 == 0)) {\n            // Round down not up if the number ends in X50000 and the number is even.\n            lastRemovedDigit = 4;\n        }\n        int output = dv +\n                ((dv == dm && !(dmIsTrailingZeros && even)) || (lastRemovedDigit >= 5) ? 1 : 0);\n        int olength = dplength - removed;\n\n        // Step 5: Print the decimal representation.\n        // We follow Float.toString semantics here.\n        if (sign) {\n            result[index++] = '-';\n        }\n\n        if (scientificNotation) {\n            // Print in the format x.xxxxxE-yy.\n            for (int i = 0; i < olength - 1; i++) {\n                int c = output % 10;\n                output /= 10;\n                result[index + olength - i] = (char) ('0' + c);\n            }\n            result[index] = (char) ('0' + output % 10);\n            result[index + 1] = '.';\n            index += olength + 1;\n            if (olength == 1) {\n                result[index++] = '0';\n            }\n\n            // Print 'E', the exponent sign, and the exponent, which has at most two digits.\n            result[index++] = 'E';\n            if (exp < 0) {\n                result[index++] = '-';\n                exp = -exp;\n            }\n            if (exp >= 10) {\n                result[index++] = (char) ('0' + exp / 10);\n            }\n            result[index++] = (char) ('0' + exp % 10);\n        } else {\n            // Otherwise follow the Java spec for values in the interval [1E-3, 1E7).\n            if (exp < 0) {\n                // Decimal dot is before any of the digits.\n                result[index++] = '0';\n                result[index++] = '.';\n                for (int i = -1; i > exp; i--) {\n                    result[index++] = '0';\n                }\n                int current = index;\n                for (int i = 0; i < olength; i++) {\n                    result[current + olength - i - 1] = (char) ('0' + output % 10);\n                    output /= 10;\n                    index++;\n                }\n            } else if (exp + 1 >= olength) {\n                // Decimal dot is after any of the digits.\n                for (int i = 0; i < olength; i++) {\n                    result[index + olength - i - 1] = (char) ('0' + output % 10);\n                    output /= 10;\n                }\n                index += olength;\n                for (int i = olength; i < exp + 1; i++) {\n                    result[index++] = '0';\n                }\n                result[index++] = '.';\n                result[index++] = '0';\n            } else {\n                // Decimal dot is somewhere between the digits.\n                int current = index + 1;\n                for (int i = 0; i < olength; i++) {\n                    if (olength - i - 1 == exp) {\n                        result[current + olength - i - 1] = '.';\n                        current--;\n                    }\n                    result[current + olength - i - 1] = (char) ('0' + output % 10);\n                    output /= 10;\n                }\n                index += olength + 1;\n            }\n        }\n        return index - off;\n    }\n\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/util/ServiceLoader.java",
    "content": "package com.alibaba.fastjson.util;\n\nimport java.io.BufferedReader;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.InputStreamReader;\nimport java.net.URL;\nimport java.util.Collections;\nimport java.util.Enumeration;\nimport java.util.HashSet;\nimport java.util.Set;\n\npublic class ServiceLoader {\n\n    private static final String      PREFIX     = \"META-INF/services/\";\n\n    private static final Set<String> loadedUrls = new HashSet<String>();\n\n    @SuppressWarnings(\"unchecked\")\n    public static <T> Set<T> load(Class<T> clazz, ClassLoader classLoader) {\n        if (classLoader == null) {\n            return Collections.emptySet();\n        }\n        \n        Set<T> services = new HashSet<T>();\n\n        String className = clazz.getName();\n        String path = PREFIX + className;\n\n        Set<String> serviceNames = new HashSet<String>();\n\n        try {\n            Enumeration<URL> urls = classLoader.getResources(path);\n            while (urls.hasMoreElements()) {\n                URL url = urls.nextElement();\n                if (loadedUrls.contains(url.toString())) {\n                    continue;\n                }\n                load(url, serviceNames);\n                loadedUrls.add(url.toString());\n            }\n        } catch (Throwable ex) {\n            // skip\n        }\n\n        for (String serviceName : serviceNames) {\n            try {\n                Class<?> serviceClass = classLoader.loadClass(serviceName);\n                T service = (T) serviceClass.newInstance();\n                services.add(service);\n            } catch (Exception e) {\n                // skip\n            }\n        }\n\n        return services;\n    }\n\n    public static void load(URL url, Set<String> set) throws IOException {\n        InputStream is = null;\n        BufferedReader reader = null;\n        try {\n            is = url.openStream();\n            reader = new BufferedReader(new InputStreamReader(is, \"utf-8\"));\n            for (;;) {\n                String line = reader.readLine();\n                if (line == null) {\n                    break;\n                }\n\n                int ci = line.indexOf('#');\n                if (ci >= 0) {\n                    line = line.substring(0, ci);\n                }\n                line = line.trim();\n                if (line.length() == 0) {\n                    continue;\n                }\n                set.add(line);\n            }\n        } finally {\n            IOUtils.close(reader);\n            IOUtils.close(is);\n        }\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/util/ThreadLocalCache.java",
    "content": "package com.alibaba.fastjson.util;\n\nimport java.lang.ref.SoftReference;\nimport java.nio.charset.CharsetDecoder;\n\n/**\n * @deprecated\n */\npublic class ThreadLocalCache {\n\n    public final static int                                 CHARS_CACH_INIT_SIZE = 1024;                                    // 1k, 2^10;\n    public final static int \t\t\t\t\t\t\t\tCHARS_CACH_INIT_SIZE_EXP = 10;\n    public final static int                                 CHARS_CACH_MAX_SIZE  = 1024 * 128;                              // 128k, 2^17;\n    public final static int \t\t\t\t\t\t\t\tCHARS_CACH_MAX_SIZE_EXP = 17;\n    private final static ThreadLocal<SoftReference<char[]>> charsBufLocal        = new ThreadLocal<SoftReference<char[]>>();\n\n    private final static ThreadLocal<CharsetDecoder>        decoderLocal         = new ThreadLocal<CharsetDecoder>();\n\n    public static CharsetDecoder getUTF8Decoder() {\n        CharsetDecoder decoder = decoderLocal.get();\n        if (decoder == null) {\n            decoder = new UTF8Decoder();\n            decoderLocal.set(decoder);\n        }\n        return decoder;\n    }\n\n    public static void clearChars() {\n        charsBufLocal.set(null);\n    }\n\n    public static char[] getChars(int length) {\n        SoftReference<char[]> ref = charsBufLocal.get();\n\n        if (ref == null) {\n            return allocate(length);\n        }\n\n        char[] chars = ref.get();\n\n        if (chars == null) {\n            return allocate(length);\n        }\n\n        if (chars.length < length) {\n            chars = allocate(length);\n        }\n\n        return chars;\n    }\n\n    private static char[] allocate(int length) {\n        if(length> CHARS_CACH_MAX_SIZE) {\n            return new char[length];\n        }\n\n        int allocateLength = getAllocateLengthExp(CHARS_CACH_INIT_SIZE_EXP, CHARS_CACH_MAX_SIZE_EXP, length);\n        char[] chars = new char[allocateLength];\n        charsBufLocal.set(new SoftReference<char[]>(chars));\n        return chars;\n    }\n\n    private static int getAllocateLengthExp(int minExp, int maxExp, int length) {\n        assert (1<<maxExp) >= length;\n//\t\tint max = 1 << maxExp;\n//\t\tif(length>= max) {\n//\t\t\treturn length;\n//\t\t}\n        int part = length >>> minExp;\n        if(part <= 0) {\n            return 1<< minExp;\n        }\n        return 1 << 32 - Integer.numberOfLeadingZeros(length-1);\n    }\n\n    // /////////\n    public final static int                                 BYTES_CACH_INIT_SIZE = 1024;                                    // 1k, 2^10;\n    public final static int \t\t\t\t\t\t\t\tBYTES_CACH_INIT_SIZE_EXP = 10;\n    public final static int                                 BYTES_CACH_MAX_SIZE  = 1024 * 128;                              // 128k, 2^17;\n    public final static int \t\t\t\t\t\t\t\tBYTES_CACH_MAX_SIZE_EXP = 17;\n    private final static ThreadLocal<SoftReference<byte[]>> bytesBufLocal        = new ThreadLocal<SoftReference<byte[]>>();\n\n    public static void clearBytes() {\n        bytesBufLocal.set(null);\n    }\n\n    public static byte[] getBytes(int length) {\n        SoftReference<byte[]> ref = bytesBufLocal.get();\n\n        if (ref == null) {\n            return allocateBytes(length);\n        }\n\n        byte[] bytes = ref.get();\n\n        if (bytes == null) {\n            return allocateBytes(length);\n        }\n\n        if (bytes.length < length) {\n            bytes = allocateBytes(length);\n        }\n\n        return bytes;\n    }\n\n    private static byte[] allocateBytes(int length) {\n        if(length > BYTES_CACH_MAX_SIZE) {\n            return new byte[length];\n        }\n\n        int allocateLength = getAllocateLengthExp(BYTES_CACH_INIT_SIZE_EXP, BYTES_CACH_MAX_SIZE_EXP, length);\n        byte[] chars = new byte[allocateLength];\n        bytesBufLocal.set(new SoftReference<byte[]>(chars));\n        return chars;\n    }\n\n}"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/util/TypeUtils.java",
    "content": "/*\n * Copyright 1999-2017 Alibaba Group.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage com.alibaba.fastjson.util;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.PropertyNamingStrategy;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.JSONScanner;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.EnumDeserializer;\nimport com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\nimport com.alibaba.fastjson.serializer.CalendarCodec;\nimport com.alibaba.fastjson.serializer.SerializeBeanInfo;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport java.io.InputStream;\nimport java.io.Reader;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.*;\nimport java.math.BigDecimal;\nimport java.math.BigInteger;\nimport java.sql.Clob;\nimport java.text.ParseException;\nimport java.text.SimpleDateFormat;\nimport java.util.*;\nimport java.util.concurrent.Callable;\nimport java.util.concurrent.ConcurrentHashMap;\nimport java.util.concurrent.ConcurrentMap;\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\n\n/**\n * @author wenshao[szujobs@hotmail.com]\n */\npublic class TypeUtils {\n    private static final Pattern NUMBER_WITH_TRAILING_ZEROS_PATTERN = Pattern.compile(\"\\\\.0*$\");\n\n    public static boolean compatibleWithJavaBean = false;\n    /**\n     * 根据field name的大小写输出输入数据\n     */\n    public static boolean compatibleWithFieldName = false;\n    private static boolean setAccessibleEnable = true;\n    private static boolean oracleTimestampMethodInited = false;\n    private static Method oracleTimestampMethod;\n    private static boolean oracleDateMethodInited = false;\n    private static Method oracleDateMethod;\n    private static boolean optionalClassInited = false;\n    private static Class<?> optionalClass;\n    private static boolean transientClassInited = false;\n    private static Class<? extends Annotation> transientClass;\n\n    private static Class<? extends Annotation> class_OneToMany = null;\n    private static boolean class_OneToMany_error = false;\n    private static Class<? extends Annotation> class_ManyToMany = null;\n    private static boolean class_ManyToMany_error = false;\n\n    private static Method method_HibernateIsInitialized = null;\n    private static boolean method_HibernateIsInitialized_error = false;\n    private static volatile Class kotlin_metadata;\n    private static volatile boolean kotlin_metadata_error;\n    private static volatile boolean kotlin_class_klass_error;\n    private static volatile Constructor kotlin_kclass_constructor;\n    private static volatile Method kotlin_kclass_getConstructors;\n    private static volatile Method kotlin_kfunction_getParameters;\n    private static volatile Method kotlin_kparameter_getName;\n    private static volatile boolean kotlin_error;\n    private static volatile Map<Class, String[]> kotlinIgnores;\n    private static volatile boolean kotlinIgnores_error;\n    private static ConcurrentMap<String, Class<?>> mappings = new ConcurrentHashMap<String, Class<?>>(256, 0.75f, 1);\n    private static Class<?> pathClass;\n    private static boolean pathClass_error = false;\n\n    private static Class<? extends Annotation> class_JacksonCreator = null;\n    private static boolean class_JacksonCreator_error = false;\n\n    private static volatile Class class_XmlAccessType = null;\n    private static volatile Class class_XmlAccessorType = null;\n    private static volatile boolean classXmlAccessorType_error = false;\n    private static volatile Method method_XmlAccessorType_value = null;\n    private static volatile Field field_XmlAccessType_FIELD = null;\n    private static volatile Object field_XmlAccessType_FIELD_VALUE = null;\n\n    private static Class class_deque = null;\n\n    static {\n        try {\n            TypeUtils.compatibleWithJavaBean = \"true\".equals(IOUtils.getStringProperty(IOUtils.FASTJSON_COMPATIBLEWITHJAVABEAN));\n            TypeUtils.compatibleWithFieldName = \"true\".equals(IOUtils.getStringProperty(IOUtils.FASTJSON_COMPATIBLEWITHFIELDNAME));\n        } catch (Throwable e) {\n            // skip\n        }\n\n        try {\n            class_deque = Class.forName(\"java.util.Deque\");\n        } catch (Throwable e) {\n            // skip\n        }\n    }\n\n    public static boolean isXmlField(Class clazz) {\n        if (class_XmlAccessorType == null && !classXmlAccessorType_error) {\n            try {\n                class_XmlAccessorType = Class.forName(\"javax.xml.bind.annotation.XmlAccessorType\");\n            } catch (Throwable ex) {\n                classXmlAccessorType_error = true;\n            }\n        }\n\n        if (class_XmlAccessorType == null) {\n            return false;\n        }\n\n        Annotation annotation = TypeUtils.getAnnotation(clazz, class_XmlAccessorType);\n        if (annotation == null) {\n            return false;\n        }\n\n        if (method_XmlAccessorType_value == null && !classXmlAccessorType_error) {\n            try {\n                method_XmlAccessorType_value = class_XmlAccessorType.getMethod(\"value\");\n            } catch (Throwable ex) {\n                classXmlAccessorType_error = true;\n            }\n        }\n\n        if (method_XmlAccessorType_value == null) {\n            return false;\n        }\n\n        Object value = null;\n        if (!classXmlAccessorType_error) {\n            try {\n                value = method_XmlAccessorType_value.invoke(annotation);\n            } catch (Throwable ex) {\n                classXmlAccessorType_error = true;\n            }\n        }\n        if (value == null) {\n            return false;\n        }\n\n        if (class_XmlAccessType == null && !classXmlAccessorType_error) {\n            try {\n                class_XmlAccessType = Class.forName(\"javax.xml.bind.annotation.XmlAccessType\");\n                field_XmlAccessType_FIELD = class_XmlAccessType.getField(\"FIELD\");\n                field_XmlAccessType_FIELD_VALUE = field_XmlAccessType_FIELD.get(null);\n            } catch (Throwable ex) {\n                classXmlAccessorType_error = true;\n            }\n        }\n\n        return value == field_XmlAccessType_FIELD_VALUE;\n    }\n\n    public static Annotation getXmlAccessorType(Class clazz) {\n        if (class_XmlAccessorType == null && !classXmlAccessorType_error) {\n\n            try {\n                class_XmlAccessorType = Class.forName(\"javax.xml.bind.annotation.XmlAccessorType\");\n            } catch (Throwable ex) {\n                classXmlAccessorType_error = true;\n            }\n        }\n\n        if (class_XmlAccessorType == null) {\n            return null;\n        }\n\n        return TypeUtils.getAnnotation(clazz, class_XmlAccessorType);\n    }\n\n//\n//    public static boolean isXmlAccessType(Class clazz) {\n//        if (class_XmlAccessType == null && !class_XmlAccessType_error) {\n//\n//            try{\n//                class_XmlAccessType = Class.forName(\"javax.xml.bind.annotation.XmlAccessType\");\n//            } catch(Throwable ex){\n//                class_XmlAccessType_error = true;\n//            }\n//        }\n//\n//        if (class_XmlAccessType == null) {\n//            return false;\n//        }\n//\n//        return  class_XmlAccessType.isAssignableFrom(clazz);\n//    }\n\n    private static Function<Class, Boolean> isClobFunction = new Function<Class, Boolean>() {\n        public Boolean apply(Class clazz) {\n            return Clob.class.isAssignableFrom(clazz);\n        }\n    };\n\n    public static boolean isClob(final Class clazz) {\n        Boolean isClob = ModuleUtil.callWhenHasJavaSql(isClobFunction, clazz);\n\n        return isClob != null ? isClob : false;\n    }\n\n    public static String castToString(Object value) {\n        if (value == null) {\n            return null;\n        }\n        return value.toString();\n    }\n\n    public static Byte castToByte(Object value) {\n        if (value == null) {\n            return null;\n        }\n\n        if (value instanceof BigDecimal) {\n            return byteValue((BigDecimal) value);\n        }\n\n        if (value instanceof Number) {\n            return ((Number) value).byteValue();\n        }\n\n        if (value instanceof String) {\n            String strVal = (String) value;\n            if (strVal.length() == 0 //\n                    || \"null\".equals(strVal) //\n                    || \"NULL\".equals(strVal)) {\n                return null;\n            }\n            return Byte.parseByte(strVal);\n        }\n\n        if (value instanceof Boolean) {\n            return (Boolean) value ? (byte) 1 : (byte) 0;\n        }\n\n        throw new JSONException(\"can not cast to byte, value : \" + value);\n    }\n\n    public static Character castToChar(Object value) {\n        if (value == null) {\n            return null;\n        }\n        if (value instanceof Character) {\n            return (Character) value;\n        }\n        if (value instanceof String) {\n            String strVal = (String) value;\n            if (strVal.length() == 0) {\n                return null;\n            }\n            if (strVal.length() != 1) {\n                throw new JSONException(\"can not cast to char, value : \" + value);\n            }\n            return strVal.charAt(0);\n        }\n        throw new JSONException(\"can not cast to char, value : \" + value);\n    }\n\n    public static Short castToShort(Object value) {\n        if (value == null) {\n            return null;\n        }\n\n        if (value instanceof BigDecimal) {\n            return shortValue((BigDecimal) value);\n        }\n\n        if (value instanceof Number) {\n            return ((Number) value).shortValue();\n        }\n\n        if (value instanceof String) {\n            String strVal = (String) value;\n            if (strVal.length() == 0 //\n                    || \"null\".equals(strVal) //\n                    || \"NULL\".equals(strVal)) {\n                return null;\n            }\n            return Short.parseShort(strVal);\n        }\n\n        if (value instanceof Boolean) {\n            return ((Boolean) value).booleanValue() ? (short) 1 : (short) 0;\n        }\n\n        throw new JSONException(\"can not cast to short, value : \" + value);\n    }\n\n    public static BigDecimal castToBigDecimal(Object value) {\n        if (value == null) {\n            return null;\n        }\n\n        if (value instanceof Float) {\n            if (Float.isNaN((Float) value) || Float.isInfinite((Float) value)) {\n                return null;\n            }\n        } else if (value instanceof Double) {\n            if (Double.isNaN((Double) value) || Double.isInfinite((Double) value)) {\n                return null;\n            }\n        } else if (value instanceof BigDecimal) {\n            return (BigDecimal) value;\n        } else if (value instanceof BigInteger) {\n            return new BigDecimal((BigInteger) value);\n        } else if (value instanceof Map && ((Map) value).size() == 0) {\n            return null;\n        }\n\n        String strVal = value.toString();\n\n        if (strVal.length() == 0\n                || strVal.equalsIgnoreCase(\"null\")) {\n            return null;\n        }\n\n        if (strVal.length() > 65535) {\n            throw new JSONException(\"decimal overflow\");\n        }\n        return new BigDecimal(strVal);\n    }\n\n    public static BigInteger castToBigInteger(Object value) {\n        if (value == null) {\n            return null;\n        }\n\n        if (value instanceof Float) {\n            Float floatValue = (Float) value;\n            if (Float.isNaN(floatValue) || Float.isInfinite(floatValue)) {\n                return null;\n            }\n            return BigInteger.valueOf(floatValue.longValue());\n        } else if (value instanceof Double) {\n            Double doubleValue = (Double) value;\n            if (Double.isNaN(doubleValue) || Double.isInfinite(doubleValue)) {\n                return null;\n            }\n            return BigInteger.valueOf(doubleValue.longValue());\n        } else if (value instanceof BigInteger) {\n            return (BigInteger) value;\n        } else if (value instanceof BigDecimal) {\n            BigDecimal decimal = (BigDecimal) value;\n            int scale = decimal.scale();\n            if (scale > -1000 && scale < 1000) {\n                return ((BigDecimal) value).toBigInteger();\n            }\n        }\n\n        String strVal = value.toString();\n\n        if (strVal.length() == 0\n                || strVal.equalsIgnoreCase(\"null\")) {\n            return null;\n        }\n\n        if (strVal.length() > 65535) {\n            throw new JSONException(\"decimal overflow\");\n        }\n        return new BigInteger(strVal);\n    }\n\n    public static Float castToFloat(Object value) {\n        if (value == null) {\n            return null;\n        }\n        if (value instanceof Number) {\n            return ((Number) value).floatValue();\n        }\n        if (value instanceof String) {\n            String strVal = value.toString();\n            if (strVal.length() == 0 //\n                    || \"null\".equals(strVal) //\n                    || \"NULL\".equals(strVal)) {\n                return null;\n            }\n            if (strVal.indexOf(',') != -1) {\n                strVal = strVal.replaceAll(\",\", \"\");\n            }\n            return Float.parseFloat(strVal);\n        }\n\n        if (value instanceof Boolean) {\n            return (Boolean) value ? 1F : 0F;\n        }\n\n        throw new JSONException(\"can not cast to float, value : \" + value);\n    }\n\n    public static Double castToDouble(Object value) {\n        if (value == null) {\n            return null;\n        }\n        if (value instanceof Number) {\n            return ((Number) value).doubleValue();\n        }\n        if (value instanceof String) {\n            String strVal = value.toString();\n            if (strVal.length() == 0 //\n                    || \"null\".equals(strVal) //\n                    || \"NULL\".equals(strVal)) {\n                return null;\n            }\n            if (strVal.indexOf(',') != -1) {\n                strVal = strVal.replaceAll(\",\", \"\");\n            }\n            return Double.parseDouble(strVal);\n        }\n\n        if (value instanceof Boolean) {\n            return (Boolean) value ? 1D : 0D;\n        }\n\n        throw new JSONException(\"can not cast to double, value : \" + value);\n    }\n\n    public static Date castToDate(Object value) {\n        return castToDate(value, null);\n    }\n\n    public static Date castToDate(Object value, String format) {\n        if (value == null) {\n            return null;\n        }\n\n        if (value instanceof Date) { // 使用频率最高的，应优先处理\n            return (Date) value;\n        }\n\n        if (value instanceof Calendar) {\n            return ((Calendar) value).getTime();\n        }\n\n        long longValue = -1;\n\n        if (value instanceof BigDecimal) {\n            longValue = longValue((BigDecimal) value);\n            return new Date(longValue);\n        }\n\n        if (value instanceof Number) {\n            longValue = ((Number) value).longValue();\n            if (\"unixtime\".equals(format)) {\n                longValue *= 1000;\n            }\n            return new Date(longValue);\n        }\n\n        if (value instanceof String) {\n            String strVal = (String) value;\n            JSONScanner dateLexer = new JSONScanner(strVal);\n            try {\n                if (dateLexer.scanISO8601DateIfMatch(false)) {\n                    Calendar calendar = dateLexer.getCalendar();\n                    return calendar.getTime();\n                }\n            } finally {\n                dateLexer.close();\n            }\n\n            if (strVal.startsWith(\"/Date(\") && strVal.endsWith(\")/\")) {\n                strVal = strVal.substring(6, strVal.length() - 2);\n            }\n\n            if (strVal.indexOf('-') > 0 || strVal.indexOf('+') > 0 || format != null) {\n                if (format == null) {\n                    final int len = strVal.length();\n                    if (len == JSON.DEFFAULT_DATE_FORMAT.length()\n                            || (len == 22 && JSON.DEFFAULT_DATE_FORMAT.equals(\"yyyyMMddHHmmssSSSZ\"))) {\n                        format = JSON.DEFFAULT_DATE_FORMAT;\n                    } else if (len == 10) {\n                        format = \"yyyy-MM-dd\";\n                    } else if (len == \"yyyy-MM-dd HH:mm:ss\".length()) {\n                        format = \"yyyy-MM-dd HH:mm:ss\";\n                    } else if (len == 29\n                            && strVal.charAt(26) == ':'\n                            && strVal.charAt(28) == '0') {\n                        format = \"yyyy-MM-dd'T'HH:mm:ss.SSSXXX\";\n                    } else if (len == 23 && strVal.charAt(19) == ',') {\n                        format = \"yyyy-MM-dd HH:mm:ss,SSS\";\n                    } else {\n                        format = \"yyyy-MM-dd HH:mm:ss.SSS\";\n                    }\n                }\n\n                SimpleDateFormat dateFormat = new SimpleDateFormat(format, JSON.defaultLocale);\n                dateFormat.setTimeZone(JSON.defaultTimeZone);\n                try {\n                    return dateFormat.parse(strVal);\n                } catch (ParseException e) {\n                    throw new JSONException(\"can not cast to Date, value : \" + strVal);\n                }\n            }\n            if (strVal.length() == 0) {\n                return null;\n            }\n            longValue = Long.parseLong(strVal);\n        }\n\n        if (longValue == -1) {\n            Class<?> clazz = value.getClass();\n            if (\"oracle.sql.TIMESTAMP\".equals(clazz.getName())) {\n                if (oracleTimestampMethod == null && !oracleTimestampMethodInited) {\n                    try {\n                        oracleTimestampMethod = clazz.getMethod(\"toJdbc\");\n                    } catch (NoSuchMethodException e) {\n                        // skip\n                    } finally {\n                        oracleTimestampMethodInited = true;\n                    }\n                }\n                Object result;\n                try {\n                    result = oracleTimestampMethod.invoke(value);\n                } catch (Exception e) {\n                    throw new JSONException(\"can not cast oracle.sql.TIMESTAMP to Date\", e);\n                }\n                return (Date) result;\n            }\n            if (\"oracle.sql.DATE\".equals(clazz.getName())) {\n                if (oracleDateMethod == null && !oracleDateMethodInited) {\n                    try {\n                        oracleDateMethod = clazz.getMethod(\"toJdbc\");\n                    } catch (NoSuchMethodException e) {\n                        // skip\n                    } finally {\n                        oracleDateMethodInited = true;\n                    }\n                }\n                Object result;\n                try {\n                    result = oracleDateMethod.invoke(value);\n                } catch (Exception e) {\n                    throw new JSONException(\"can not cast oracle.sql.DATE to Date\", e);\n                }\n                return (Date) result;\n            }\n\n            throw new JSONException(\"can not cast to Date, value : \" + value);\n        }\n\n        return new Date(longValue);\n    }\n\n    private static Function<Object, Object> castToSqlDateFunction = new Function<Object, Object>() {\n        public Object apply(Object value) {\n            if (value == null) {\n                return null;\n            }\n            if (value instanceof java.sql.Date) {\n                return (java.sql.Date) value;\n            }\n            if (value instanceof Date) {\n                return new java.sql.Date(((Date) value).getTime());\n            }\n            if (value instanceof Calendar) {\n                return new java.sql.Date(((Calendar) value).getTimeInMillis());\n            }\n\n            long longValue = 0;\n            if (value instanceof BigDecimal) {\n                longValue = longValue((BigDecimal) value);\n            } else if (value instanceof Number) {\n                longValue = ((Number) value).longValue();\n            }\n\n            if (value instanceof String) {\n                String strVal = (String) value;\n                if (strVal.length() == 0 //\n                        || \"null\".equals(strVal) //\n                        || \"NULL\".equals(strVal)) {\n                    return null;\n                }\n                if (isNumber(strVal)) {\n                    longValue = Long.parseLong(strVal);\n                } else {\n                    JSONScanner scanner = new JSONScanner(strVal);\n                    if (scanner.scanISO8601DateIfMatch(false)) {\n                        longValue = scanner.getCalendar().getTime().getTime();\n                    } else {\n                        throw new JSONException(\"can not cast to Timestamp, value : \" + strVal);\n                    }\n                }\n            }\n            if (longValue <= 0) {\n                throw new JSONException(\"can not cast to Date, value : \" + value); // TODO 忽略 1970-01-01 之前的时间处理？\n            }\n            return new java.sql.Date(longValue);\n        }\n    };\n\n    public static Object castToSqlDate(final Object value) {\n        return ModuleUtil.callWhenHasJavaSql(castToSqlDateFunction, value);\n    }\n\n    public static long longExtractValue(Number number) {\n        if (number instanceof BigDecimal) {\n            return ((BigDecimal) number).longValueExact();\n        }\n\n        return number.longValue();\n    }\n\n    private static Function<Object, Object> castToSqlTimeFunction = new Function<Object, Object>() {\n        public Object apply(Object value) {\n            if (value == null) {\n                return null;\n            }\n            if (value instanceof java.sql.Time) {\n                return (java.sql.Time) value;\n            }\n            if (value instanceof java.util.Date) {\n                return new java.sql.Time(((java.util.Date) value).getTime());\n            }\n            if (value instanceof Calendar) {\n                return new java.sql.Time(((Calendar) value).getTimeInMillis());\n            }\n\n            long longValue = 0;\n            if (value instanceof BigDecimal) {\n                longValue = longValue((BigDecimal) value);\n            } else if (value instanceof Number) {\n                longValue = ((Number) value).longValue();\n            }\n\n            if (value instanceof String) {\n                String strVal = (String) value;\n                if (strVal.length() == 0 //\n                        || \"null\".equalsIgnoreCase(strVal)) {\n                    return null;\n                }\n\n                if (isNumber(strVal)) {\n                    longValue = Long.parseLong(strVal);\n                } else {\n                    if (strVal.length() == 8 && strVal.charAt(2) == ':' && strVal.charAt(5) == ':') {\n                        return java.sql.Time.valueOf(strVal);\n                    }\n\n                    JSONScanner scanner = new JSONScanner(strVal);\n                    if (scanner.scanISO8601DateIfMatch(false)) {\n                        longValue = scanner.getCalendar().getTime().getTime();\n                    } else {\n                        throw new JSONException(\"can not cast to Timestamp, value : \" + strVal);\n                    }\n\n                }\n            }\n            if (longValue <= 0) {\n                throw new JSONException(\"can not cast to Date, value : \" + value); // TODO 忽略 1970-01-01 之前的时间处理？\n            }\n            return new java.sql.Time(longValue);\n        }\n    };\n\n    public static Object castToSqlTime(final Object value) {\n        return ModuleUtil.callWhenHasJavaSql(castToSqlTimeFunction, value);\n    }\n\n    public static Function<Object, Object> castToTimestampFunction = new Function<Object, Object>() {\n        public Object apply(Object value) {\n            if (value == null) {\n                return null;\n            }\n            if (value instanceof Calendar) {\n                return new java.sql.Timestamp(((Calendar) value).getTimeInMillis());\n            }\n            if (value instanceof java.sql.Timestamp) {\n                return (java.sql.Timestamp) value;\n            }\n            if (value instanceof java.util.Date) {\n                return new java.sql.Timestamp(((java.util.Date) value).getTime());\n            }\n            long longValue = 0;\n            if (value instanceof BigDecimal) {\n                longValue = longValue((BigDecimal) value);\n            } else if (value instanceof Number) {\n                longValue = ((Number) value).longValue();\n            }\n            if (value instanceof String) {\n                String strVal = (String) value;\n                if (strVal.length() == 0 //\n                        || \"null\".equals(strVal) //\n                        || \"NULL\".equals(strVal)) {\n                    return null;\n                }\n                if (strVal.endsWith(\".000000000\")) {\n                    strVal = strVal.substring(0, strVal.length() - 10);\n                } else if (strVal.endsWith(\".000000\")) {\n                    strVal = strVal.substring(0, strVal.length() - 7);\n                }\n\n                if (strVal.length() == 29\n                        && strVal.charAt(4) == '-'\n                        && strVal.charAt(7) == '-'\n                        && strVal.charAt(10) == ' '\n                        && strVal.charAt(13) == ':'\n                        && strVal.charAt(16) == ':'\n                        && strVal.charAt(19) == '.') {\n                    int year = num(\n                            strVal.charAt(0),\n                            strVal.charAt(1),\n                            strVal.charAt(2),\n                            strVal.charAt(3));\n                    int month = num(\n                            strVal.charAt(5),\n                            strVal.charAt(6));\n                    int day = num(\n                            strVal.charAt(8),\n                            strVal.charAt(9));\n                    int hour = num(\n                            strVal.charAt(11),\n                            strVal.charAt(12));\n                    int minute = num(\n                            strVal.charAt(14),\n                            strVal.charAt(15));\n                    int second = num(\n                            strVal.charAt(17),\n                            strVal.charAt(18));\n                    int nanos = num(\n                            strVal.charAt(20),\n                            strVal.charAt(21),\n                            strVal.charAt(22),\n                            strVal.charAt(23),\n                            strVal.charAt(24),\n                            strVal.charAt(25),\n                            strVal.charAt(26),\n                            strVal.charAt(27),\n                            strVal.charAt(28));\n                    return new java.sql.Timestamp(year - 1900, month - 1, day, hour, minute, second, nanos);\n                }\n\n                if (isNumber(strVal)) {\n                    longValue = Long.parseLong(strVal);\n                } else {\n                    JSONScanner scanner = new JSONScanner(strVal);\n                    if (scanner.scanISO8601DateIfMatch(false)) {\n                        longValue = scanner.getCalendar().getTime().getTime();\n                    } else {\n                        throw new JSONException(\"can not cast to Timestamp, value : \" + strVal);\n                    }\n                }\n            }\n\n            return new java.sql.Timestamp(longValue);\n        }\n    };\n\n    public static Object castToTimestamp(final Object value) {\n        return ModuleUtil.callWhenHasJavaSql(castToTimestampFunction, value);\n    }\n\n    static int num(char c0, char c1) {\n        if (c0 >= '0'\n                && c0 <= '9'\n                && c1 >= '0'\n                && c1 <= '9'\n        ) {\n            return (c0 - '0') * 10\n                    + (c1 - '0');\n        }\n\n        return -1;\n    }\n\n    static int num(char c0, char c1, char c2, char c3) {\n        if (c0 >= '0'\n                && c0 <= '9'\n                && c1 >= '0'\n                && c1 <= '9'\n                && c2 >= '0'\n                && c2 <= '9'\n                && c3 >= '0'\n                && c3 <= '9'\n        ) {\n            return (c0 - '0') * 1000\n                    + (c1 - '0') * 100\n                    + (c2 - '0') * 10\n                    + (c3 - '0');\n        }\n\n        return -1;\n    }\n\n    static int num(char c0, char c1, char c2, char c3, char c4, char c5, char c6, char c7, char c8) {\n        if (c0 >= '0'\n                && c0 <= '9'\n                && c1 >= '0'\n                && c1 <= '9'\n                && c2 >= '0'\n                && c2 <= '9'\n                && c3 >= '0'\n                && c3 <= '9'\n                && c4 >= '0'\n                && c4 <= '9'\n                && c5 >= '0'\n                && c5 <= '9'\n                && c6 >= '0'\n                && c6 <= '9'\n                && c7 >= '0'\n                && c7 <= '9'\n                && c8 >= '0'\n                && c8 <= '9'\n        ) {\n            return (c0 - '0') * 100000000\n                    + (c1 - '0') * 10000000\n                    + (c2 - '0') * 1000000\n                    + (c3 - '0') * 100000\n                    + (c4 - '0') * 10000\n                    + (c5 - '0') * 1000\n                    + (c6 - '0') * 100\n                    + (c7 - '0') * 10\n                    + (c8 - '0');\n        }\n\n        return -1;\n    }\n\n    public static boolean isNumber(String str) {\n        for (int i = 0; i < str.length(); ++i) {\n            char ch = str.charAt(i);\n            if (ch == '+' || ch == '-') {\n                if (i != 0) {\n                    return false;\n                }\n            } else if (ch < '0' || ch > '9') {\n                return false;\n            }\n        }\n        return true;\n    }\n\n    public static Long castToLong(Object value) {\n        if (value == null) {\n            return null;\n        }\n\n        if (value instanceof BigDecimal) {\n            return longValue((BigDecimal) value);\n        }\n\n        if (value instanceof Number) {\n            return ((Number) value).longValue();\n        }\n\n        if (value instanceof String) {\n            String strVal = (String) value;\n            if (strVal.length() == 0 //\n                    || \"null\".equals(strVal) //\n                    || \"NULL\".equals(strVal)) {\n                return null;\n            }\n            if (strVal.indexOf(',') != -1) {\n                strVal = strVal.replaceAll(\",\", \"\");\n            }\n            try {\n                return Long.parseLong(strVal);\n            } catch (NumberFormatException ex) {\n                //\n            }\n            JSONScanner dateParser = new JSONScanner(strVal);\n            Calendar calendar = null;\n            if (dateParser.scanISO8601DateIfMatch(false)) {\n                calendar = dateParser.getCalendar();\n            }\n            dateParser.close();\n            if (calendar != null) {\n                return calendar.getTimeInMillis();\n            }\n        }\n\n        if (value instanceof Map) {\n            Map map = (Map) value;\n            if (map.size() == 2\n                    && map.containsKey(\"andIncrement\")\n                    && map.containsKey(\"andDecrement\")) {\n                Iterator iter = map.values().iterator();\n                iter.next();\n                Object value2 = iter.next();\n                return castToLong(value2);\n            }\n        }\n\n        if (value instanceof Boolean) {\n            return (Boolean) value ? 1L : 0L;\n        }\n\n        throw new JSONException(\"can not cast to long, value : \" + value);\n    }\n\n    public static byte byteValue(BigDecimal decimal) {\n        if (decimal == null) {\n            return 0;\n        }\n\n        int scale = decimal.scale();\n        if (scale >= -100 && scale <= 100) {\n            return decimal.byteValue();\n        }\n\n        return decimal.byteValueExact();\n    }\n\n    public static short shortValue(BigDecimal decimal) {\n        if (decimal == null) {\n            return 0;\n        }\n\n        int scale = decimal.scale();\n        if (scale >= -100 && scale <= 100) {\n            return decimal.shortValue();\n        }\n\n        return decimal.shortValueExact();\n    }\n\n    public static int intValue(BigDecimal decimal) {\n        if (decimal == null) {\n            return 0;\n        }\n\n        int scale = decimal.scale();\n        if (scale >= -100 && scale <= 100) {\n            return decimal.intValue();\n        }\n\n        return decimal.intValueExact();\n    }\n\n    public static long longValue(BigDecimal decimal) {\n        if (decimal == null) {\n            return 0;\n        }\n\n        int scale = decimal.scale();\n        if (scale >= -100 && scale <= 100) {\n            return decimal.longValue();\n        }\n\n        return decimal.longValueExact();\n    }\n\n    public static Integer castToInt(Object value) {\n        if (value == null) {\n            return null;\n        }\n\n        if (value instanceof Integer) {\n            return (Integer) value;\n        }\n\n        if (value instanceof BigDecimal) {\n            return intValue((BigDecimal) value);\n        }\n\n        if (value instanceof Number) {\n            return ((Number) value).intValue();\n        }\n\n        if (value instanceof String) {\n            String strVal = (String) value;\n            if (strVal.length() == 0 //\n                    || \"null\".equals(strVal) //\n                    || \"NULL\".equals(strVal)) {\n                return null;\n            }\n            if (strVal.indexOf(',') != -1) {\n                strVal = strVal.replaceAll(\",\", \"\");\n            }\n\n            Matcher matcher = NUMBER_WITH_TRAILING_ZEROS_PATTERN.matcher(strVal);\n            if (matcher.find()) {\n                strVal = matcher.replaceAll(\"\");\n            }\n            return Integer.parseInt(strVal);\n        }\n\n        if (value instanceof Boolean) {\n            return (Boolean) value ? 1 : 0;\n        }\n        if (value instanceof Map) {\n            Map map = (Map) value;\n            if (map.size() == 2\n                    && map.containsKey(\"andIncrement\")\n                    && map.containsKey(\"andDecrement\")) {\n                Iterator iter = map.values().iterator();\n                iter.next();\n                Object value2 = iter.next();\n                return castToInt(value2);\n            }\n        }\n        throw new JSONException(\"can not cast to int, value : \" + value);\n    }\n\n    public static byte[] castToBytes(Object value) {\n        if (value instanceof byte[]) {\n            return (byte[]) value;\n        }\n        if (value instanceof String) {\n            return IOUtils.decodeBase64((String) value);\n        }\n        throw new JSONException(\"can not cast to byte[], value : \" + value);\n    }\n\n    public static Boolean castToBoolean(Object value) {\n        if (value == null) {\n            return null;\n        }\n        if (value instanceof Boolean) {\n            return (Boolean) value;\n        }\n\n        if (value instanceof BigDecimal) {\n            return intValue((BigDecimal) value) == 1;\n        }\n\n        if (value instanceof Number) {\n            return ((Number) value).intValue() == 1;\n        }\n\n        if (value instanceof String) {\n            String strVal = (String) value;\n            if (strVal.length() == 0 //\n                    || \"null\".equals(strVal) //\n                    || \"NULL\".equals(strVal)) {\n                return null;\n            }\n            if (\"true\".equalsIgnoreCase(strVal) //\n                    || \"1\".equals(strVal)) {\n                return Boolean.TRUE;\n            }\n            if (\"false\".equalsIgnoreCase(strVal) //\n                    || \"0\".equals(strVal)) {\n                return Boolean.FALSE;\n            }\n            if (\"Y\".equalsIgnoreCase(strVal) //\n                    || \"T\".equals(strVal)) {\n                return Boolean.TRUE;\n            }\n            if (\"F\".equalsIgnoreCase(strVal) //\n                    || \"N\".equals(strVal)) {\n                return Boolean.FALSE;\n            }\n        }\n        throw new JSONException(\"can not cast to boolean, value : \" + value);\n    }\n\n    public static <T> T castToJavaBean(Object obj, Class<T> clazz) {\n        return cast(obj, clazz, ParserConfig.getGlobalInstance());\n    }\n\n    private static BiFunction<Object, Class, Object> castFunction = new BiFunction<Object, Class, Object>() {\n        public Object apply(Object obj, Class clazz) {\n            if (clazz == java.sql.Date.class) {\n                return castToSqlDate(obj);\n            }\n\n            if (clazz == java.sql.Time.class) {\n                return castToSqlTime(obj);\n            }\n\n            if (clazz == java.sql.Timestamp.class) {\n                return castToTimestamp(obj);\n            }\n            return null;\n        }\n    };\n\n    @SuppressWarnings({\"unchecked\", \"rawtypes\"})\n    public static <T> T cast(final Object obj, final Class<T> clazz, ParserConfig config) {\n        if (obj == null) {\n            if (clazz == int.class) {\n                return (T) Integer.valueOf(0);\n            } else if (clazz == long.class) {\n                return (T) Long.valueOf(0);\n            } else if (clazz == short.class) {\n                return (T) Short.valueOf((short) 0);\n            } else if (clazz == byte.class) {\n                return (T) Byte.valueOf((byte) 0);\n            } else if (clazz == float.class) {\n                return (T) Float.valueOf(0);\n            } else if (clazz == double.class) {\n                return (T) Double.valueOf(0);\n            } else if (clazz == boolean.class) {\n                return (T) Boolean.FALSE;\n            }\n            return null;\n        }\n\n        if (clazz == null) {\n            throw new IllegalArgumentException(\"clazz is null\");\n        }\n\n        if (clazz == obj.getClass()) {\n            return (T) obj;\n        }\n\n        if (obj instanceof Map) {\n            if (clazz == Map.class) {\n                return (T) obj;\n            }\n\n            Map map = (Map) obj;\n            if (clazz == Object.class && !map.containsKey(JSON.DEFAULT_TYPE_KEY)) {\n                return (T) obj;\n            }\n            return castToJavaBean((Map<String, Object>) obj, clazz, config);\n        }\n\n        if (clazz.isArray()) {\n            if (obj instanceof Collection) {\n                Collection collection = (Collection) obj;\n                int index = 0;\n                Object array = Array.newInstance(clazz.getComponentType(), collection.size());\n                for (Object item : collection) {\n                    Object value = cast(item, clazz.getComponentType(), config);\n                    Array.set(array, index, value);\n                    index++;\n                }\n                return (T) array;\n            }\n            if (clazz == byte[].class) {\n                return (T) castToBytes(obj);\n            }\n        }\n\n        if (clazz.isAssignableFrom(obj.getClass())) {\n            return (T) obj;\n        }\n\n        if (clazz == boolean.class || clazz == Boolean.class) {\n            return (T) castToBoolean(obj);\n        }\n\n        if (clazz == byte.class || clazz == Byte.class) {\n            return (T) castToByte(obj);\n        }\n\n        if (clazz == char.class || clazz == Character.class) {\n            return (T) castToChar(obj);\n        }\n\n        if (clazz == short.class || clazz == Short.class) {\n            return (T) castToShort(obj);\n        }\n\n        if (clazz == int.class || clazz == Integer.class) {\n            return (T) castToInt(obj);\n        }\n\n        if (clazz == long.class || clazz == Long.class) {\n            return (T) castToLong(obj);\n        }\n\n        if (clazz == float.class || clazz == Float.class) {\n            return (T) castToFloat(obj);\n        }\n\n        if (clazz == double.class || clazz == Double.class) {\n            return (T) castToDouble(obj);\n        }\n\n        if (clazz == String.class) {\n            return (T) castToString(obj);\n        }\n\n        if (clazz == BigDecimal.class) {\n            return (T) castToBigDecimal(obj);\n        }\n\n        if (clazz == BigInteger.class) {\n            return (T) castToBigInteger(obj);\n        }\n\n        if (clazz == Date.class) {\n            return (T) castToDate(obj);\n        }\n\n        T retObj = (T) ModuleUtil.callWhenHasJavaSql(castFunction, obj, clazz);\n\n        if (retObj != null) {\n            return retObj;\n        }\n\n        if (clazz.isEnum()) {\n            return castToEnum(obj, clazz, config);\n        }\n\n        if (Calendar.class.isAssignableFrom(clazz)) {\n            Date date = castToDate(obj);\n            Calendar calendar;\n            if (clazz == Calendar.class) {\n                calendar = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n            } else {\n                try {\n                    calendar = (Calendar) clazz.newInstance();\n                } catch (Exception e) {\n                    throw new JSONException(\"can not cast to : \" + clazz.getName(), e);\n                }\n            }\n            calendar.setTime(date);\n            return (T) calendar;\n        }\n\n        String className = clazz.getName();\n        if (className.equals(\"javax.xml.datatype.XMLGregorianCalendar\")) {\n            Date date = castToDate(obj);\n            Calendar calendar = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n            calendar.setTime(date);\n            return (T) CalendarCodec.instance.createXMLGregorianCalendar(calendar);\n        }\n\n        if (obj instanceof String) {\n            String strVal = (String) obj;\n            if (strVal.length() == 0 //\n                    || \"null\".equals(strVal) //\n                    || \"NULL\".equals(strVal)) {\n                return null;\n            }\n\n            if (clazz == java.util.Currency.class) {\n                return (T) java.util.Currency.getInstance(strVal);\n            }\n\n            if (clazz == java.util.Locale.class) {\n                return (T) toLocale(strVal);\n            }\n\n            if (className.startsWith(\"java.time.\")) {\n                String json = JSON.toJSONString(strVal);\n                return JSON.parseObject(json, clazz);\n            }\n        }\n\n        final ObjectDeserializer objectDeserializer = config.get(clazz);\n        if (objectDeserializer != null) {\n            String str = JSON.toJSONString(obj);\n            return JSON.parseObject(str, clazz);\n        }\n        throw new JSONException(\"can not cast to : \" + clazz.getName());\n    }\n\n    public static Locale toLocale(String strVal) {\n        String[] items = strVal.split(\"_\");\n        if (items.length == 1) {\n            return new Locale(items[0]);\n        }\n        if (items.length == 2) {\n            return new Locale(items[0], items[1]);\n        }\n        return new Locale(items[0], items[1], items[2]);\n    }\n\n    @SuppressWarnings({\"unchecked\", \"rawtypes\"})\n    public static <T> T castToEnum(Object obj, Class<T> clazz, ParserConfig mapping) {\n        try {\n            if (obj instanceof String) {\n                String name = (String) obj;\n                if (name.length() == 0) {\n                    return null;\n                }\n\n                if (mapping == null) {\n                    mapping = ParserConfig.getGlobalInstance();\n                }\n\n                ObjectDeserializer deserializer = mapping.getDeserializer(clazz);\n                if (deserializer instanceof EnumDeserializer) {\n                    EnumDeserializer enumDeserializer = (EnumDeserializer) deserializer;\n                    return (T) enumDeserializer.getEnumByHashCode(TypeUtils.fnv1a_64(name));\n                }\n\n                return (T) Enum.valueOf((Class<? extends Enum>) clazz, name);\n            }\n\n            if (obj instanceof BigDecimal) {\n                int ordinal = intValue((BigDecimal) obj);\n                Object[] values = clazz.getEnumConstants();\n                if (ordinal < values.length) {\n                    return (T) values[ordinal];\n                }\n            }\n\n            if (obj instanceof Number) {\n                int ordinal = ((Number) obj).intValue();\n                Object[] values = clazz.getEnumConstants();\n                if (ordinal < values.length) {\n                    return (T) values[ordinal];\n                }\n            }\n        } catch (Exception ex) {\n            throw new JSONException(\"can not cast to : \" + clazz.getName(), ex);\n        }\n        throw new JSONException(\"can not cast to : \" + clazz.getName());\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    public static <T> T cast(Object obj, Type type, ParserConfig mapping) {\n        if (obj == null) {\n            return null;\n        }\n        if (type instanceof Class) {\n            return cast(obj, (Class<T>) type, mapping);\n        }\n        if (type instanceof ParameterizedType) {\n            return (T) cast(obj, (ParameterizedType) type, mapping);\n        }\n        if (obj instanceof String) {\n            String strVal = (String) obj;\n            if (strVal.length() == 0 //\n                    || \"null\".equals(strVal) //\n                    || \"NULL\".equals(strVal)) {\n                return null;\n            }\n        }\n        if (type instanceof TypeVariable) {\n            return (T) obj;\n        }\n        throw new JSONException(\"can not cast to : \" + type);\n    }\n\n    @SuppressWarnings({\"rawtypes\", \"unchecked\"})\n    public static <T> T cast(Object obj, ParameterizedType type, ParserConfig mapping) {\n        Type rawTye = type.getRawType();\n\n        if (rawTye == List.class || rawTye == ArrayList.class) {\n            Type itemType = type.getActualTypeArguments()[0];\n            if (obj instanceof List) {\n                List listObj = (List) obj;\n                List arrayList = new ArrayList(listObj.size());\n\n                for (Object item : listObj) {\n                    Object itemValue;\n                    if (itemType instanceof Class) {\n                        if (item != null && item.getClass() == JSONObject.class) {\n                            itemValue = ((JSONObject) item).toJavaObject((Class<T>) itemType, mapping, 0);\n                        } else {\n                            itemValue = cast(item, (Class<T>) itemType, mapping);\n                        }\n                    } else {\n                        itemValue = cast(item, itemType, mapping);\n                    }\n\n                    arrayList.add(itemValue);\n                }\n                return (T) arrayList;\n            }\n        }\n\n        if (rawTye == Set.class || rawTye == HashSet.class //\n                || rawTye == TreeSet.class //\n                || rawTye == Collection.class //\n                || rawTye == List.class //\n                || rawTye == ArrayList.class) {\n            Type itemType = type.getActualTypeArguments()[0];\n            if (obj instanceof Iterable) {\n                Collection collection;\n                if (rawTye == Set.class || rawTye == HashSet.class) {\n                    collection = new HashSet();\n                } else if (rawTye == TreeSet.class) {\n                    collection = new TreeSet();\n                } else {\n                    collection = new ArrayList();\n                }\n                for (Object item : (Iterable) obj) {\n                    Object itemValue;\n                    if (itemType instanceof Class) {\n                        if (item != null && item.getClass() == JSONObject.class) {\n                            itemValue = ((JSONObject) item).toJavaObject((Class<T>) itemType, mapping, 0);\n                        } else {\n                            itemValue = cast(item, (Class<T>) itemType, mapping);\n                        }\n                    } else {\n                        itemValue = cast(item, itemType, mapping);\n                    }\n\n                    collection.add(itemValue);\n                }\n                return (T) collection;\n            }\n        }\n\n        if (rawTye == Map.class || rawTye == HashMap.class) {\n            Type keyType = type.getActualTypeArguments()[0];\n            Type valueType = type.getActualTypeArguments()[1];\n            if (obj instanceof Map) {\n                Map map = new HashMap();\n                for (Map.Entry entry : ((Map<?, ?>) obj).entrySet()) {\n                    Object key = cast(entry.getKey(), keyType, mapping);\n                    Object value = cast(entry.getValue(), valueType, mapping);\n                    map.put(key, value);\n                }\n                return (T) map;\n            }\n        }\n        if (obj instanceof String) {\n            String strVal = (String) obj;\n            if (strVal.length() == 0) {\n                return null;\n            }\n        }\n\n        Type[] actualTypeArguments = type.getActualTypeArguments();\n        if (actualTypeArguments.length == 1) {\n            Type argType = type.getActualTypeArguments()[0];\n            if (argType instanceof WildcardType) {\n                return (T) cast(obj, rawTye, mapping);\n            }\n        }\n\n        if (rawTye == Map.Entry.class && obj instanceof Map && ((Map) obj).size() == 1) {\n            Map.Entry entry = (Map.Entry) ((Map) obj).entrySet().iterator().next();\n            Object entryValue = entry.getValue();\n            if (actualTypeArguments.length == 2 && entryValue instanceof Map) {\n                Type valueType = actualTypeArguments[1];\n                entry.setValue(\n                        cast(entryValue, valueType, mapping)\n                );\n            }\n            return (T) entry;\n        }\n\n        if (rawTye instanceof Class) {\n            if (mapping == null) {\n                mapping = ParserConfig.global;\n            }\n            ObjectDeserializer deserializer = mapping.getDeserializer(rawTye);\n            if (deserializer != null) {\n                String str = JSON.toJSONString(obj);\n                DefaultJSONParser parser = new DefaultJSONParser(str, mapping);\n                return (T) deserializer.deserialze(parser, type, null);\n            }\n        }\n\n        throw new JSONException(\"can not cast to : \" + type);\n    }\n\n    @SuppressWarnings({\"unchecked\"})\n    public static <T> T castToJavaBean(Map<String, Object> map, Class<T> clazz, ParserConfig config) {\n        try {\n            if (clazz == StackTraceElement.class) {\n                String declaringClass = (String) map.get(\"className\");\n                String methodName = (String) map.get(\"methodName\");\n                String fileName = (String) map.get(\"fileName\");\n                int lineNumber;\n                {\n                    Number value = (Number) map.get(\"lineNumber\");\n                    if (value == null) {\n                        lineNumber = 0;\n                    } else if (value instanceof BigDecimal) {\n                        lineNumber = ((BigDecimal) value).intValueExact();\n                    } else {\n                        lineNumber = value.intValue();\n                    }\n                }\n                return (T) new StackTraceElement(declaringClass, methodName, fileName, lineNumber);\n            }\n\n            {\n                Object iClassObject = map.get(JSON.DEFAULT_TYPE_KEY);\n                if (iClassObject instanceof String) {\n                    String className = (String) iClassObject;\n                    Class<?> loadClazz;\n                    if (config == null) {\n                        config = ParserConfig.global;\n                    }\n                    loadClazz = config.checkAutoType(className, null);\n                    if (loadClazz == null) {\n                        throw new ClassNotFoundException(className + \" not found\");\n                    }\n                    if (!loadClazz.equals(clazz)) {\n                        return (T) castToJavaBean(map, loadClazz, config);\n                    }\n                }\n            }\n\n            if (clazz.isInterface()) {\n                JSONObject object;\n                if (map instanceof JSONObject) {\n                    object = (JSONObject) map;\n                } else {\n                    object = new JSONObject(map);\n                }\n                if (config == null) {\n                    config = ParserConfig.getGlobalInstance();\n                }\n                ObjectDeserializer deserializer = config.get(clazz);\n                if (deserializer != null) {\n                    String json = JSON.toJSONString(object);\n                    return JSON.parseObject(json, clazz);\n                }\n                return (T) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(),\n                        new Class<?>[]{clazz}, object);\n            }\n\n            if (clazz == Locale.class) {\n                Object arg0 = map.get(\"language\");\n                Object arg1 = map.get(\"country\");\n                if (arg0 instanceof String) {\n                    String language = (String) arg0;\n                    if (arg1 instanceof String) {\n                        String country = (String) arg1;\n                        return (T) new Locale(language, country);\n                    } else if (arg1 == null) {\n                        return (T) new Locale(language);\n                    }\n                }\n            }\n\n            if (clazz == String.class && map instanceof JSONObject) {\n                return (T) map.toString();\n            }\n\n            if (clazz == JSON.class && map instanceof JSONObject) {\n                return (T) map;\n            }\n\n            if (clazz == LinkedHashMap.class && map instanceof JSONObject) {\n                JSONObject jsonObject = (JSONObject) map;\n                Map<String, Object> innerMap = jsonObject.getInnerMap();\n                if (innerMap instanceof LinkedHashMap) {\n                    return (T) innerMap;\n                }\n            }\n\n            if (clazz.isInstance(map)) {\n                return (T) map;\n            }\n\n            if (clazz == JSONObject.class) {\n                return (T) new JSONObject(map);\n            }\n\n            if (config == null) {\n                config = ParserConfig.getGlobalInstance();\n            }\n\n            JavaBeanDeserializer javaBeanDeser = null;\n            ObjectDeserializer deserializer = config.getDeserializer(clazz);\n            if (deserializer instanceof JavaBeanDeserializer) {\n                javaBeanDeser = (JavaBeanDeserializer) deserializer;\n            }\n\n            if (javaBeanDeser == null) {\n                throw new JSONException(\"can not get javaBeanDeserializer. \" + clazz.getName());\n            }\n            return (T) javaBeanDeser.createInstance(map, config);\n        } catch (Exception e) {\n            throw new JSONException(e.getMessage(), e);\n        }\n    }\n\n    private static Function<Map<String, Class<?>>, Void> addBaseClassMappingsFunction =\n            new Function<Map<String, Class<?>>, Void>() {\n                public Void apply(Map<String, Class<?>> mappings) {\n                    Class<?>[] classes = new Class[]{\n                            java.sql.Time.class,\n                            java.sql.Date.class,\n                            java.sql.Timestamp.class\n                    };\n                    for (Class clazz : classes) {\n                        if (clazz == null) {\n                            continue;\n                        }\n                        mappings.put(clazz.getName(), clazz);\n                    }\n                    return null;\n                }\n            };\n\n    static {\n        addBaseClassMappings();\n    }\n\n    private static void addBaseClassMappings() {\n        mappings.put(\"byte\", byte.class);\n        mappings.put(\"short\", short.class);\n        mappings.put(\"int\", int.class);\n        mappings.put(\"long\", long.class);\n        mappings.put(\"float\", float.class);\n        mappings.put(\"double\", double.class);\n        mappings.put(\"boolean\", boolean.class);\n        mappings.put(\"char\", char.class);\n        mappings.put(\"[byte\", byte[].class);\n        mappings.put(\"[short\", short[].class);\n        mappings.put(\"[int\", int[].class);\n        mappings.put(\"[long\", long[].class);\n        mappings.put(\"[float\", float[].class);\n        mappings.put(\"[double\", double[].class);\n        mappings.put(\"[boolean\", boolean[].class);\n        mappings.put(\"[char\", char[].class);\n        mappings.put(\"[B\", byte[].class);\n        mappings.put(\"[S\", short[].class);\n        mappings.put(\"[I\", int[].class);\n        mappings.put(\"[J\", long[].class);\n        mappings.put(\"[F\", float[].class);\n        mappings.put(\"[D\", double[].class);\n        mappings.put(\"[C\", char[].class);\n        mappings.put(\"[Z\", boolean[].class);\n        Class<?>[] classes = new Class[]{\n                Object.class,\n                java.lang.Cloneable.class,\n                loadClass(\"java.lang.AutoCloseable\"),\n                java.lang.Exception.class,\n                java.lang.RuntimeException.class,\n                java.lang.IllegalAccessError.class,\n                java.lang.IllegalAccessException.class,\n                java.lang.IllegalArgumentException.class,\n                java.lang.IllegalMonitorStateException.class,\n                java.lang.IllegalStateException.class,\n                java.lang.IllegalThreadStateException.class,\n                java.lang.IndexOutOfBoundsException.class,\n                java.lang.InstantiationError.class,\n                java.lang.InstantiationException.class,\n                java.lang.InternalError.class,\n                java.lang.InterruptedException.class,\n                java.lang.LinkageError.class,\n                java.lang.NegativeArraySizeException.class,\n                java.lang.NoClassDefFoundError.class,\n                java.lang.NoSuchFieldError.class,\n                java.lang.NoSuchFieldException.class,\n                java.lang.NoSuchMethodError.class,\n                java.lang.NoSuchMethodException.class,\n                java.lang.NullPointerException.class,\n                java.lang.NumberFormatException.class,\n                java.lang.OutOfMemoryError.class,\n                java.lang.SecurityException.class,\n                java.lang.StackOverflowError.class,\n                java.lang.StringIndexOutOfBoundsException.class,\n                java.lang.TypeNotPresentException.class,\n                java.lang.VerifyError.class,\n                java.lang.StackTraceElement.class,\n                java.util.HashMap.class,\n                java.util.LinkedHashMap.class,\n                java.util.Hashtable.class,\n                java.util.TreeMap.class,\n                java.util.IdentityHashMap.class,\n                java.util.WeakHashMap.class,\n                java.util.LinkedHashMap.class,\n                java.util.HashSet.class,\n                java.util.LinkedHashSet.class,\n                java.util.TreeSet.class,\n                java.util.ArrayList.class,\n                java.util.concurrent.TimeUnit.class,\n                java.util.concurrent.ConcurrentHashMap.class,\n                java.util.concurrent.atomic.AtomicInteger.class,\n                java.util.concurrent.atomic.AtomicLong.class,\n                java.util.Collections.EMPTY_MAP.getClass(),\n                java.lang.Boolean.class,\n                java.lang.Character.class,\n                java.lang.Byte.class,\n                java.lang.Short.class,\n                java.lang.Integer.class,\n                java.lang.Long.class,\n                java.lang.Float.class,\n                java.lang.Double.class,\n                java.lang.Number.class,\n                java.lang.String.class,\n                java.math.BigDecimal.class,\n                java.math.BigInteger.class,\n                java.util.BitSet.class,\n                java.util.Calendar.class,\n                java.util.Date.class,\n                java.util.Locale.class,\n                java.util.UUID.class,\n                java.text.SimpleDateFormat.class,\n                com.alibaba.fastjson.JSONObject.class,\n                com.alibaba.fastjson.JSONPObject.class,\n                com.alibaba.fastjson.JSONArray.class,\n        };\n        for (Class clazz : classes) {\n            if (clazz == null) {\n                continue;\n            }\n            mappings.put(clazz.getName(), clazz);\n        }\n        ModuleUtil.callWhenHasJavaSql(addBaseClassMappingsFunction, mappings);\n    }\n\n    public static void clearClassMapping() {\n        mappings.clear();\n        addBaseClassMappings();\n    }\n\n    public static void addMapping(String className, Class<?> clazz) {\n        mappings.put(className, clazz);\n    }\n\n    public static Class<?> loadClass(String className) {\n        return loadClass(className, null);\n    }\n\n    public static boolean isPath(Class<?> clazz) {\n        if (pathClass == null && !pathClass_error) {\n            try {\n                pathClass = Class.forName(\"java.nio.file.Path\");\n            } catch (Throwable ex) {\n                pathClass_error = true;\n            }\n        }\n        if (pathClass != null) {\n            return pathClass.isAssignableFrom(clazz);\n        }\n        return false;\n    }\n\n    public static Class<?> getClassFromMapping(String className) {\n        return mappings.get(className);\n    }\n\n    public static Class<?> loadClass(String className, ClassLoader classLoader) {\n        return loadClass(className, classLoader, false);\n    }\n\n    public static Class<?> loadClass(String className, ClassLoader classLoader, boolean cache) {\n        if (className == null || className.length() == 0) {\n            return null;\n        }\n\n        if (className.length() > 198) {\n            throw new JSONException(\"illegal className : \" + className);\n        }\n\n        Class<?> clazz = mappings.get(className);\n        if (clazz != null) {\n            return clazz;\n        }\n\n        if (className.charAt(0) == '[') {\n            Class<?> componentType = loadClass(className.substring(1), classLoader);\n            return Array.newInstance(componentType, 0).getClass();\n        }\n\n        if (className.startsWith(\"L\") && className.endsWith(\";\")) {\n            String newClassName = className.substring(1, className.length() - 1);\n            return loadClass(newClassName, classLoader);\n        }\n\n        try {\n            if (classLoader != null) {\n                clazz = classLoader.loadClass(className);\n                if (cache) {\n                    mappings.put(className, clazz);\n                }\n                return clazz;\n            }\n        } catch (Throwable e) {\n            e.printStackTrace();\n            // skip\n        }\n        try {\n            ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();\n            if (contextClassLoader != null && contextClassLoader != classLoader) {\n                clazz = contextClassLoader.loadClass(className);\n                if (cache) {\n                    mappings.put(className, clazz);\n                }\n                return clazz;\n            }\n        } catch (Throwable e) {\n            // skip\n        }\n        try {\n            clazz = Class.forName(className);\n            if (cache) {\n                mappings.put(className, clazz);\n            }\n            return clazz;\n        } catch (Throwable e) {\n            // skip\n        }\n        return clazz;\n    }\n\n    public static SerializeBeanInfo buildBeanInfo(Class<?> beanType //\n            , Map<String, String> aliasMap //\n            , PropertyNamingStrategy propertyNamingStrategy) {\n        return buildBeanInfo(beanType, aliasMap, propertyNamingStrategy, false);\n    }\n\n    public static SerializeBeanInfo buildBeanInfo(Class<?> beanType //\n            , Map<String, String> aliasMap //\n            , PropertyNamingStrategy propertyNamingStrategy //\n            , boolean fieldBased //\n    ) {\n        JSONType jsonType = TypeUtils.getAnnotation(beanType, JSONType.class);\n        String[] orders = null;\n        final int features;\n        String typeName = null, typeKey = null;\n        if (jsonType != null) {\n            orders = jsonType.orders();\n\n            typeName = jsonType.typeName();\n            if (typeName.length() == 0) {\n                typeName = null;\n            }\n\n            PropertyNamingStrategy jsonTypeNaming = jsonType.naming();\n            if (jsonTypeNaming != PropertyNamingStrategy.NeverUseThisValueExceptDefaultValue) {\n                propertyNamingStrategy = jsonTypeNaming;\n            }\n\n            features = SerializerFeature.of(jsonType.serialzeFeatures());\n            for (Class<?> supperClass = beanType.getSuperclass()\n                 ; supperClass != null && supperClass != Object.class\n                    ; supperClass = supperClass.getSuperclass()) {\n                JSONType superJsonType = TypeUtils.getAnnotation(supperClass, JSONType.class);\n                if (superJsonType == null) {\n                    break;\n                }\n                typeKey = superJsonType.typeKey();\n                if (typeKey.length() != 0) {\n                    break;\n                }\n            }\n\n            for (Class<?> interfaceClass : beanType.getInterfaces()) {\n                JSONType superJsonType = TypeUtils.getAnnotation(interfaceClass, JSONType.class);\n                if (superJsonType != null) {\n                    typeKey = superJsonType.typeKey();\n                    if (typeKey.length() != 0) {\n                        break;\n                    }\n                }\n            }\n\n            if (typeKey != null && typeKey.length() == 0) {\n                typeKey = null;\n            }\n        } else {\n            features = 0;\n        }\n        // fieldName,field ，先生成fieldName的快照，减少之后的findField的轮询\n        Map<String, Field> fieldCacheMap = new HashMap<String, Field>();\n        ParserConfig.parserAllFieldToCache(beanType, fieldCacheMap);\n        List<FieldInfo> fieldInfoList = fieldBased\n                ? computeGettersWithFieldBase(beanType, aliasMap, false, propertyNamingStrategy) //\n                : computeGetters(beanType, jsonType, aliasMap, fieldCacheMap, false, propertyNamingStrategy);\n        FieldInfo[] fields = new FieldInfo[fieldInfoList.size()];\n        fieldInfoList.toArray(fields);\n        FieldInfo[] sortedFields;\n        List<FieldInfo> sortedFieldList;\n        if (orders != null && orders.length != 0) {\n            sortedFieldList = fieldBased\n                    ? computeGettersWithFieldBase(beanType, aliasMap, true, propertyNamingStrategy) //\n                    : computeGetters(beanType, jsonType, aliasMap, fieldCacheMap, true, propertyNamingStrategy);\n        } else {\n            sortedFieldList = new ArrayList<FieldInfo>(fieldInfoList);\n            Collections.sort(sortedFieldList);\n        }\n        sortedFields = new FieldInfo[sortedFieldList.size()];\n        sortedFieldList.toArray(sortedFields);\n        if (Arrays.equals(sortedFields, fields)) {\n            sortedFields = fields;\n        }\n        return new SerializeBeanInfo(beanType, jsonType, typeName, typeKey, features, fields, sortedFields);\n    }\n\n    public static List<FieldInfo> computeGettersWithFieldBase(\n            Class<?> clazz, //\n            Map<String, String> aliasMap, //\n            boolean sorted, //\n            PropertyNamingStrategy propertyNamingStrategy) {\n        Map<String, FieldInfo> fieldInfoMap = new LinkedHashMap<String, FieldInfo>();\n        for (Class<?> currentClass = clazz; currentClass != null; currentClass = currentClass.getSuperclass()) {\n            Field[] fields = currentClass.getDeclaredFields();\n            computeFields(currentClass, aliasMap, propertyNamingStrategy, fieldInfoMap, fields);\n        }\n        return getFieldInfos(clazz, sorted, fieldInfoMap);\n    }\n\n    public static List<FieldInfo> computeGetters(Class<?> clazz, Map<String, String> aliasMap) {\n        return computeGetters(clazz, aliasMap, true);\n    }\n\n    public static List<FieldInfo> computeGetters(Class<?> clazz, Map<String, String> aliasMap, boolean sorted) {\n        JSONType jsonType = TypeUtils.getAnnotation(clazz, JSONType.class);\n        Map<String, Field> fieldCacheMap = new HashMap<String, Field>();\n        ParserConfig.parserAllFieldToCache(clazz, fieldCacheMap);\n        return computeGetters(clazz, jsonType, aliasMap, fieldCacheMap, sorted, PropertyNamingStrategy.CamelCase);\n    }\n\n    public static List<FieldInfo> computeGetters(Class<?> clazz, //\n                                                 JSONType jsonType, //\n                                                 Map<String, String> aliasMap, //\n                                                 Map<String, Field> fieldCacheMap, //\n                                                 boolean sorted, //\n                                                 PropertyNamingStrategy propertyNamingStrategy //\n    ) {\n        Map<String, FieldInfo> fieldInfoMap = new LinkedHashMap<String, FieldInfo>();\n        boolean kotlin = TypeUtils.isKotlin(clazz);\n        // for kotlin\n        Constructor[] constructors = null;\n        Annotation[][] paramAnnotationArrays = null;\n        String[] paramNames = null;\n        short[] paramNameMapping = null;\n        Method[] methods = clazz.getMethods();\n        try {\n            Arrays.sort(methods, new MethodInheritanceComparator());\n        } catch (Throwable ignored) {\n\n        }\n\n        for (Method method : methods) {\n            String methodName = method.getName();\n            int ordinal = 0, serialzeFeatures = 0, parserFeatures = 0;\n            String label = null;\n            if (Modifier.isStatic(method.getModifiers())) {\n                continue;\n            }\n\n            Class<?> returnType = method.getReturnType();\n            if (returnType.equals(Void.TYPE)) {\n                continue;\n            }\n\n            if (method.getParameterTypes().length != 0) {\n                continue;\n            }\n\n            if (returnType == ClassLoader.class\n                    || returnType == InputStream.class\n                    || returnType == Reader.class) {\n                continue;\n            }\n\n            if (methodName.equals(\"getMetaClass\")\n                    && returnType.getName().equals(\"groovy.lang.MetaClass\")) {\n                continue;\n            }\n            if (methodName.equals(\"getSuppressed\")\n                    && method.getDeclaringClass() == Throwable.class) {\n                continue;\n            }\n\n            if (kotlin && isKotlinIgnore(clazz, methodName)) {\n                continue;\n            }\n            /**\n             *  如果在属性或者方法上存在JSONField注解，并且定制了name属性，不以类上的propertyNamingStrategy设置为准，以此字段的JSONField的name定制为准。\n             */\n            Boolean fieldAnnotationAndNameExists = false;\n            JSONField annotation = TypeUtils.getAnnotation(method, JSONField.class);\n            if (annotation == null) {\n                annotation = getSuperMethodAnnotation(clazz, method);\n            }\n            if (annotation == null && kotlin) {\n                if (constructors == null) {\n                    constructors = clazz.getDeclaredConstructors();\n                    Constructor creatorConstructor = TypeUtils.getKotlinConstructor(constructors);\n                    if (creatorConstructor != null) {\n                        paramAnnotationArrays = TypeUtils.getParameterAnnotations(creatorConstructor);\n                        paramNames = TypeUtils.getKoltinConstructorParameters(clazz);\n                        if (paramNames != null) {\n                            String[] paramNames_sorted = new String[paramNames.length];\n                            System.arraycopy(paramNames, 0, paramNames_sorted, 0, paramNames.length);\n\n                            Arrays.sort(paramNames_sorted);\n                            paramNameMapping = new short[paramNames.length];\n                            for (short p = 0; p < paramNames.length; p++) {\n                                int index = Arrays.binarySearch(paramNames_sorted, paramNames[p]);\n                                paramNameMapping[index] = p;\n                            }\n                            paramNames = paramNames_sorted;\n                        }\n                    }\n                }\n                if (paramNames != null && paramNameMapping != null && methodName.startsWith(\"get\")) {\n                    String propertyName = decapitalize(methodName.substring(3));\n                    int p = Arrays.binarySearch(paramNames, propertyName);\n                    if (p < 0) {\n                        for (int i = 0; i < paramNames.length; i++) {\n                            if (propertyName.equalsIgnoreCase(paramNames[i])) {\n                                p = i;\n                                break;\n                            }\n                        }\n                    }\n                    if (p >= 0) {\n                        short index = paramNameMapping[p];\n                        Annotation[] paramAnnotations = paramAnnotationArrays[index];\n                        if (paramAnnotations != null) {\n                            for (Annotation paramAnnotation : paramAnnotations) {\n                                if (paramAnnotation instanceof JSONField) {\n                                    annotation = (JSONField) paramAnnotation;\n                                    break;\n                                }\n                            }\n                        }\n                        if (annotation == null) {\n                            Field field = ParserConfig.getFieldFromCache(propertyName, fieldCacheMap);\n                            if (field != null) {\n                                annotation = TypeUtils.getAnnotation(field, JSONField.class);\n                            }\n                        }\n                    }\n                }\n            }\n            if (annotation != null) {\n                if (!annotation.serialize()) {\n                    continue;\n                }\n                ordinal = annotation.ordinal();\n                serialzeFeatures = SerializerFeature.of(annotation.serialzeFeatures());\n                parserFeatures = Feature.of(annotation.parseFeatures());\n                if (annotation.name().length() != 0) {\n                    String propertyName = annotation.name();\n                    if (aliasMap != null) {\n                        propertyName = aliasMap.get(propertyName);\n                        if (propertyName == null) {\n                            continue;\n                        }\n                    }\n                    FieldInfo fieldInfo = new FieldInfo(propertyName, method, null, clazz, null, ordinal,\n                            serialzeFeatures, parserFeatures, annotation, null, label);\n                    fieldInfoMap.put(propertyName, fieldInfo);\n                    continue;\n                }\n                if (annotation.label().length() != 0) {\n                    label = annotation.label();\n                }\n            }\n            if (methodName.startsWith(\"get\")) {\n                if (methodName.length() < 4) {\n                    continue;\n                }\n                if (methodName.equals(\"getClass\")) {\n                    continue;\n                }\n                if (methodName.equals(\"getDeclaringClass\") && clazz.isEnum()) {\n                    continue;\n                }\n                char c3 = methodName.charAt(3);\n                String propertyName;\n                Field field = null;\n                if (Character.isUpperCase(c3) //\n                        || c3 > 512 // for unicode method name\n                ) {\n                    if (compatibleWithJavaBean) {\n                        propertyName = decapitalize(methodName.substring(3));\n                    } else {\n                        propertyName = TypeUtils.getPropertyNameByMethodName(methodName);\n                    }\n                    propertyName = getPropertyNameByCompatibleFieldName(fieldCacheMap, methodName, propertyName, 3);\n                } else if (c3 == '_') {\n                    propertyName = methodName.substring(3);\n                    field = fieldCacheMap.get(propertyName);\n                    if (field == null) {\n                        String temp = propertyName;\n                        propertyName = methodName.substring(4);\n                        field = ParserConfig.getFieldFromCache(propertyName, fieldCacheMap);\n                        if (field == null) {\n                            propertyName = temp; //减少修改代码带来的影响\n                        }\n                    }\n                } else if (c3 == 'f') {\n                    propertyName = methodName.substring(3);\n                } else if (methodName.length() >= 5 && Character.isUpperCase(methodName.charAt(4))) {\n                    propertyName = decapitalize(methodName.substring(3));\n                } else {\n                    propertyName = methodName.substring(3);\n                    field = ParserConfig.getFieldFromCache(propertyName, fieldCacheMap);\n                    if (field == null) {\n                        continue;\n                    }\n                }\n                boolean ignore = isJSONTypeIgnore(clazz, propertyName);\n                if (ignore) {\n                    continue;\n                }\n\n                if (field == null) {\n                    // 假如bean的field很多的情况一下，轮询时将大大降低效率\n                    field = ParserConfig.getFieldFromCache(propertyName, fieldCacheMap);\n                }\n\n                if (field == null && propertyName.length() > 1) {\n                    char ch = propertyName.charAt(1);\n                    if (ch >= 'A' && ch <= 'Z') {\n                        String javaBeanCompatiblePropertyName = decapitalize(methodName.substring(3));\n                        field = ParserConfig.getFieldFromCache(javaBeanCompatiblePropertyName, fieldCacheMap);\n                    }\n                }\n                JSONField fieldAnnotation = null;\n                if (field != null) {\n                    fieldAnnotation = TypeUtils.getAnnotation(field, JSONField.class);\n                    if (fieldAnnotation != null) {\n                        if (!fieldAnnotation.serialize()) {\n                            continue;\n                        }\n                        ordinal = fieldAnnotation.ordinal();\n                        serialzeFeatures = SerializerFeature.of(fieldAnnotation.serialzeFeatures());\n                        parserFeatures = Feature.of(fieldAnnotation.parseFeatures());\n                        if (fieldAnnotation.name().length() != 0) {\n                            fieldAnnotationAndNameExists = true;\n                            propertyName = fieldAnnotation.name();\n                            if (aliasMap != null) {\n                                propertyName = aliasMap.get(propertyName);\n                                if (propertyName == null) {\n                                    continue;\n                                }\n                            }\n                        }\n                        if (fieldAnnotation.label().length() != 0) {\n                            label = fieldAnnotation.label();\n                        }\n                    }\n                }\n                if (aliasMap != null) {\n                    propertyName = aliasMap.get(propertyName);\n                    if (propertyName == null) {\n                        continue;\n                    }\n                }\n                if (propertyNamingStrategy != null && !fieldAnnotationAndNameExists) {\n                    propertyName = propertyNamingStrategy.translate(propertyName);\n                }\n                FieldInfo fieldInfo = new FieldInfo(propertyName, method, field, clazz, null, ordinal, serialzeFeatures, parserFeatures,\n                        annotation, fieldAnnotation, label);\n                fieldInfoMap.put(propertyName, fieldInfo);\n            }\n            if (methodName.startsWith(\"is\")) {\n                if (methodName.length() < 3) {\n                    continue;\n                }\n                if (returnType != Boolean.TYPE\n                        && returnType != Boolean.class) {\n                    continue;\n                }\n                char c2 = methodName.charAt(2);\n                String propertyName;\n                Field field = null;\n                if (Character.isUpperCase(c2)) {\n                    if (compatibleWithJavaBean) {\n                        propertyName = decapitalize(methodName.substring(2));\n                    } else {\n                        propertyName = Character.toLowerCase(methodName.charAt(2)) + methodName.substring(3);\n                    }\n                    propertyName = getPropertyNameByCompatibleFieldName(fieldCacheMap, methodName, propertyName, 2);\n                } else if (c2 == '_') {\n                    propertyName = methodName.substring(3);\n                    field = fieldCacheMap.get(propertyName);\n                    if (field == null) {\n                        String temp = propertyName;\n                        propertyName = methodName.substring(2);\n                        field = ParserConfig.getFieldFromCache(propertyName, fieldCacheMap);\n                        if (field == null) {\n                            propertyName = temp;\n                        }\n                    }\n                } else if (c2 == 'f') {\n                    propertyName = methodName.substring(2);\n                } else {\n                    propertyName = methodName.substring(2);\n                    field = ParserConfig.getFieldFromCache(propertyName, fieldCacheMap);\n                    if (field == null) {\n                        continue;\n                    }\n                }\n                boolean ignore = isJSONTypeIgnore(clazz, propertyName);\n                if (ignore) {\n                    continue;\n                }\n\n                if (field == null) {\n                    field = ParserConfig.getFieldFromCache(propertyName, fieldCacheMap);\n                }\n\n                if (field == null) {\n                    field = ParserConfig.getFieldFromCache(methodName, fieldCacheMap);\n                }\n                JSONField fieldAnnotation = null;\n                if (field != null) {\n                    fieldAnnotation = TypeUtils.getAnnotation(field, JSONField.class);\n                    if (fieldAnnotation != null) {\n                        if (!fieldAnnotation.serialize()) {\n                            continue;\n                        }\n                        ordinal = fieldAnnotation.ordinal();\n                        serialzeFeatures = SerializerFeature.of(fieldAnnotation.serialzeFeatures());\n                        parserFeatures = Feature.of(fieldAnnotation.parseFeatures());\n                        if (fieldAnnotation.name().length() != 0) {\n                            propertyName = fieldAnnotation.name();\n                            if (aliasMap != null) {\n                                propertyName = aliasMap.get(propertyName);\n                                if (propertyName == null) {\n                                    continue;\n                                }\n                            }\n                        }\n                        if (fieldAnnotation.label().length() != 0) {\n                            label = fieldAnnotation.label();\n                        }\n                    }\n                }\n                if (aliasMap != null) {\n                    propertyName = aliasMap.get(propertyName);\n                    if (propertyName == null) {\n                        continue;\n                    }\n                }\n                if (propertyNamingStrategy != null) {\n                    propertyName = propertyNamingStrategy.translate(propertyName);\n                }\n                //优先选择get\n                if (fieldInfoMap.containsKey(propertyName)) {\n                    continue;\n                }\n                FieldInfo fieldInfo = new FieldInfo(propertyName, method, field, clazz, null, ordinal, serialzeFeatures, parserFeatures,\n                        annotation, fieldAnnotation, label);\n                fieldInfoMap.put(propertyName, fieldInfo);\n            }\n        }\n        Field[] fields = clazz.getFields();\n        computeFields(clazz, aliasMap, propertyNamingStrategy, fieldInfoMap, fields);\n        return getFieldInfos(clazz, sorted, fieldInfoMap);\n    }\n\n    private static List<FieldInfo> getFieldInfos(Class<?> clazz, boolean sorted, Map<String, FieldInfo> fieldInfoMap) {\n        List<FieldInfo> fieldInfoList = new ArrayList<FieldInfo>();\n        String[] orders = null;\n        JSONType annotation = TypeUtils.getAnnotation(clazz, JSONType.class);\n        if (annotation != null) {\n            orders = annotation.orders();\n        }\n        if (orders != null && orders.length > 0) {\n            LinkedHashMap<String, FieldInfo> map = new LinkedHashMap<String, FieldInfo>(fieldInfoMap.size());\n            for (FieldInfo field : fieldInfoMap.values()) {\n                map.put(field.name, field);\n            }\n            for (String item : orders) {\n                FieldInfo field = map.get(item);\n                if (field != null) {\n                    fieldInfoList.add(field);\n                    map.remove(item);\n                }\n            }\n            fieldInfoList.addAll(map.values());\n        } else {\n            fieldInfoList.addAll(fieldInfoMap.values());\n            if (sorted) {\n                Collections.sort(fieldInfoList);\n            }\n        }\n        return fieldInfoList;\n    }\n\n    private static void computeFields(\n            Class<?> clazz, //\n            Map<String, String> aliasMap, //\n            PropertyNamingStrategy propertyNamingStrategy, //\n            Map<String, FieldInfo> fieldInfoMap, //\n            Field[] fields) {\n        for (Field field : fields) {\n            if (Modifier.isStatic(field.getModifiers())) {\n                continue;\n            }\n            JSONField fieldAnnotation = TypeUtils.getAnnotation(field, JSONField.class);\n            int ordinal = 0, serialzeFeatures = 0, parserFeatures = 0;\n            String propertyName = field.getName();\n            String label = null;\n            if (fieldAnnotation != null) {\n                if (!fieldAnnotation.serialize()) {\n                    continue;\n                }\n                ordinal = fieldAnnotation.ordinal();\n                serialzeFeatures = SerializerFeature.of(fieldAnnotation.serialzeFeatures());\n                parserFeatures = Feature.of(fieldAnnotation.parseFeatures());\n                if (fieldAnnotation.name().length() != 0) {\n                    propertyName = fieldAnnotation.name();\n                }\n                if (fieldAnnotation.label().length() != 0) {\n                    label = fieldAnnotation.label();\n                }\n            }\n            if (aliasMap != null) {\n                propertyName = aliasMap.get(propertyName);\n                if (propertyName == null) {\n                    continue;\n                }\n            }\n            if (propertyNamingStrategy != null) {\n                propertyName = propertyNamingStrategy.translate(propertyName);\n            }\n            if (!fieldInfoMap.containsKey(propertyName)) {\n                FieldInfo fieldInfo = new FieldInfo(propertyName, null, field, clazz, null, ordinal, serialzeFeatures, parserFeatures,\n                        null, fieldAnnotation, label);\n                fieldInfoMap.put(propertyName, fieldInfo);\n            }\n        }\n    }\n\n    private static String getPropertyNameByCompatibleFieldName(Map<String, Field> fieldCacheMap, String methodName,\n                                                               String propertyName, int fromIdx) {\n        if (compatibleWithFieldName) {\n            if (!fieldCacheMap.containsKey(propertyName)) {\n                String tempPropertyName = methodName.substring(fromIdx);\n                return fieldCacheMap.containsKey(tempPropertyName) ? tempPropertyName : propertyName;\n            }\n        }\n        return propertyName;\n    }\n\n    public static JSONField getSuperMethodAnnotation(final Class<?> clazz, final Method method) {\n        Class<?>[] interfaces = clazz.getInterfaces();\n        if (interfaces.length > 0) {\n            Class<?>[] types = method.getParameterTypes();\n            for (Class<?> interfaceClass : interfaces) {\n                for (Method interfaceMethod : interfaceClass.getMethods()) {\n                    Class<?>[] interfaceTypes = interfaceMethod.getParameterTypes();\n                    if (interfaceTypes.length != types.length) {\n                        continue;\n                    }\n                    if (!interfaceMethod.getName().equals(method.getName())) {\n                        continue;\n                    }\n                    boolean match = true;\n                    for (int i = 0; i < types.length; ++i) {\n                        if (!interfaceTypes[i].equals(types[i])) {\n                            match = false;\n                            break;\n                        }\n                    }\n                    if (!match) {\n                        continue;\n                    }\n                    JSONField annotation = TypeUtils.getAnnotation(interfaceMethod, JSONField.class);\n                    if (annotation != null) {\n                        return annotation;\n                    }\n                }\n            }\n        }\n        Class<?> superClass = clazz.getSuperclass();\n        if (superClass == null) {\n            return null;\n        }\n        if (Modifier.isAbstract(superClass.getModifiers())) {\n            Class<?>[] types = method.getParameterTypes();\n            for (Method interfaceMethod : superClass.getMethods()) {\n                Class<?>[] interfaceTypes = interfaceMethod.getParameterTypes();\n                if (interfaceTypes.length != types.length) {\n                    continue;\n                }\n                if (!interfaceMethod.getName().equals(method.getName())) {\n                    continue;\n                }\n                boolean match = true;\n                for (int i = 0; i < types.length; ++i) {\n                    if (!interfaceTypes[i].equals(types[i])) {\n                        match = false;\n                        break;\n                    }\n                }\n                if (!match) {\n                    continue;\n                }\n                JSONField annotation = TypeUtils.getAnnotation(interfaceMethod, JSONField.class);\n                if (annotation != null) {\n                    return annotation;\n                }\n            }\n        }\n        return null;\n    }\n\n    private static boolean isJSONTypeIgnore(Class<?> clazz, String propertyName) {\n        JSONType jsonType = TypeUtils.getAnnotation(clazz, JSONType.class);\n        if (jsonType != null) {\n            // 1、新增 includes 支持，如果 JSONType 同时设置了includes 和 ignores 属性，则以includes为准。\n            // 2、个人认为对于大小写敏感的Java和JS而言，使用 equals() 比 equalsIgnoreCase() 更好，改动的唯一风险就是向后兼容性的问题\n            // 不过，相信开发者应该都是严格按照大小写敏感的方式进行属性设置的\n            String[] fields = jsonType.includes();\n            if (fields.length > 0) {\n                for (String field : fields) {\n                    if (propertyName.equals(field)) {\n                        return false;\n                    }\n                }\n                return true;\n            } else {\n                fields = jsonType.ignores();\n                for (String field : fields) {\n                    if (propertyName.equals(field)) {\n                        return true;\n                    }\n                }\n            }\n        }\n        if (clazz.getSuperclass() != Object.class && clazz.getSuperclass() != null) {\n            return isJSONTypeIgnore(clazz.getSuperclass(), propertyName);\n        }\n        return false;\n    }\n\n    public static boolean isGenericParamType(Type type) {\n        if (type instanceof ParameterizedType) {\n            return true;\n        }\n        if (type instanceof Class) {\n            Type superType = ((Class<?>) type).getGenericSuperclass();\n            return superType != Object.class && isGenericParamType(superType);\n        }\n        return false;\n    }\n\n    public static Type getGenericParamType(Type type) {\n        if (type instanceof ParameterizedType) {\n            return type;\n        }\n        if (type instanceof Class) {\n            return getGenericParamType(((Class<?>) type).getGenericSuperclass());\n        }\n        return type;\n    }\n\n    public static Type unwrapOptional(Type type) {\n        if (!optionalClassInited) {\n            try {\n                optionalClass = Class.forName(\"java.util.Optional\");\n            } catch (Exception e) {\n                // skip\n            } finally {\n                optionalClassInited = true;\n            }\n        }\n        if (type instanceof ParameterizedType) {\n            ParameterizedType parameterizedType = (ParameterizedType) type;\n            if (parameterizedType.getRawType() == optionalClass) {\n                return parameterizedType.getActualTypeArguments()[0];\n            }\n        }\n        return type;\n    }\n\n    public static Class<?> getClass(Type type) {\n        if (type.getClass() == Class.class) {\n            return (Class<?>) type;\n        }\n\n        if (type instanceof ParameterizedType) {\n            return getClass(((ParameterizedType) type).getRawType());\n        }\n\n        if (type instanceof TypeVariable) {\n            Type boundType = ((TypeVariable<?>) type).getBounds()[0];\n            if (boundType instanceof Class) {\n                return (Class) boundType;\n            }\n            return getClass(boundType);\n        }\n\n        if (type instanceof WildcardType) {\n            Type[] upperBounds = ((WildcardType) type).getUpperBounds();\n            if (upperBounds.length == 1) {\n                return getClass(upperBounds[0]);\n            }\n        }\n\n        return Object.class;\n    }\n\n    public static Field getField(Class<?> clazz, String fieldName, Field[] declaredFields) {\n        for (Field field : declaredFields) {\n            String itemName = field.getName();\n            if (fieldName.equals(itemName)) {\n                return field;\n            }\n\n            char c0, c1;\n            if (fieldName.length() > 2\n                    && (c0 = fieldName.charAt(0)) >= 'a' && c0 <= 'z'\n                    && (c1 = fieldName.charAt(1)) >= 'A' && c1 <= 'Z'\n                    && fieldName.equalsIgnoreCase(itemName)) {\n                return field;\n            }\n        }\n        Class<?> superClass = clazz.getSuperclass();\n        if (superClass != null && superClass != Object.class) {\n            return getField(superClass, fieldName, superClass.getDeclaredFields());\n        }\n        return null;\n    }\n\n    /**\n     * @deprecated\n     */\n    public static int getSerializeFeatures(Class<?> clazz) {\n        JSONType annotation = TypeUtils.getAnnotation(clazz, JSONType.class);\n        if (annotation == null) {\n            return 0;\n        }\n        return SerializerFeature.of(annotation.serialzeFeatures());\n    }\n\n    public static int getParserFeatures(Class<?> clazz) {\n        JSONType annotation = TypeUtils.getAnnotation(clazz, JSONType.class);\n        if (annotation == null) {\n            return 0;\n        }\n        return Feature.of(annotation.parseFeatures());\n    }\n\n    public static String decapitalize(String name) {\n        if (name == null || name.length() == 0) {\n            return name;\n        }\n        if (name.length() > 1 && Character.isUpperCase(name.charAt(1)) && Character.isUpperCase(name.charAt(0))) {\n            return name;\n        }\n        char[] chars = name.toCharArray();\n        chars[0] = Character.toLowerCase(chars[0]);\n        return new String(chars);\n    }\n\n    /**\n     * resolve property name from get/set method name\n     *\n     * @param methodName get/set method name\n     * @return property name\n     */\n    public static String getPropertyNameByMethodName(String methodName) {\n        return Character.toLowerCase(methodName.charAt(3)) + methodName.substring(4);\n    }\n\n    static void setAccessible(AccessibleObject obj) {\n        if (!setAccessibleEnable) {\n            return;\n        }\n        if (obj.isAccessible()) {\n            return;\n        }\n        try {\n            obj.setAccessible(true);\n        } catch (Throwable error) {\n            setAccessibleEnable = false;\n        }\n    }\n\n    public static Type getCollectionItemType(Type fieldType) {\n        if (fieldType instanceof ParameterizedType) {\n            return getCollectionItemType((ParameterizedType) fieldType);\n        }\n        if (fieldType instanceof Class<?>) {\n            return getCollectionItemType((Class<?>) fieldType);\n        }\n        return Object.class;\n    }\n\n    private static Type getCollectionItemType(Class<?> clazz) {\n        return clazz.getName().startsWith(\"java.\")\n                ? Object.class\n                : getCollectionItemType(getCollectionSuperType(clazz));\n    }\n\n    private static Type getCollectionItemType(ParameterizedType parameterizedType) {\n        Type rawType = parameterizedType.getRawType();\n        Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();\n        if (rawType == Collection.class) {\n            return getWildcardTypeUpperBounds(actualTypeArguments[0]);\n        }\n        Class<?> rawClass = (Class<?>) rawType;\n        Map<TypeVariable, Type> actualTypeMap = createActualTypeMap(rawClass.getTypeParameters(), actualTypeArguments);\n        Type superType = getCollectionSuperType(rawClass);\n        if (superType instanceof ParameterizedType) {\n            Class<?> superClass = getRawClass(superType);\n            Type[] superClassTypeParameters = ((ParameterizedType) superType).getActualTypeArguments();\n            return superClassTypeParameters.length > 0\n                    ? getCollectionItemType(makeParameterizedType(superClass, superClassTypeParameters, actualTypeMap))\n                    : getCollectionItemType(superClass);\n        }\n        return getCollectionItemType((Class<?>) superType);\n    }\n\n    private static Type getCollectionSuperType(Class<?> clazz) {\n        Type assignable = null;\n        for (Type type : clazz.getGenericInterfaces()) {\n            Class<?> rawClass = getRawClass(type);\n            if (rawClass == Collection.class) {\n                return type;\n            }\n            if (Collection.class.isAssignableFrom(rawClass)) {\n                assignable = type;\n            }\n        }\n        return assignable == null ? clazz.getGenericSuperclass() : assignable;\n    }\n\n    private static Map<TypeVariable, Type> createActualTypeMap(TypeVariable[] typeParameters, Type[] actualTypeArguments) {\n        int length = typeParameters.length;\n        Map<TypeVariable, Type> actualTypeMap = new HashMap<TypeVariable, Type>(length);\n        for (int i = 0; i < length; i++) {\n            actualTypeMap.put(typeParameters[i], actualTypeArguments[i]);\n        }\n        return actualTypeMap;\n    }\n\n    private static ParameterizedType makeParameterizedType(Class<?> rawClass, Type[] typeParameters, Map<TypeVariable, Type> actualTypeMap) {\n        int length = typeParameters.length;\n        Type[] actualTypeArguments = new Type[length];\n        for (int i = 0; i < length; i++) {\n            actualTypeArguments[i] = getActualType(typeParameters[i], actualTypeMap);\n        }\n        return new ParameterizedTypeImpl(actualTypeArguments, null, rawClass);\n    }\n\n    private static Type getActualType(Type typeParameter, Map<TypeVariable, Type> actualTypeMap) {\n        if (typeParameter instanceof TypeVariable) {\n            return actualTypeMap.get(typeParameter);\n        } else if (typeParameter instanceof ParameterizedType) {\n            return makeParameterizedType(getRawClass(typeParameter), ((ParameterizedType) typeParameter).getActualTypeArguments(), actualTypeMap);\n        } else if (typeParameter instanceof GenericArrayType) {\n            return new GenericArrayTypeImpl(getActualType(((GenericArrayType) typeParameter).getGenericComponentType(), actualTypeMap));\n        }\n        return typeParameter;\n    }\n\n    private static Type getWildcardTypeUpperBounds(Type type) {\n        if (type instanceof WildcardType) {\n            WildcardType wildcardType = (WildcardType) type;\n            Type[] upperBounds = wildcardType.getUpperBounds();\n            return upperBounds.length > 0 ? upperBounds[0] : Object.class;\n        }\n        return type;\n    }\n\n    public static Class<?> getCollectionItemClass(Type fieldType) {\n        if (fieldType instanceof ParameterizedType) {\n            Class<?> itemClass;\n            Type actualTypeArgument = ((ParameterizedType) fieldType).getActualTypeArguments()[0];\n            if (actualTypeArgument instanceof WildcardType) {\n                WildcardType wildcardType = (WildcardType) actualTypeArgument;\n                Type[] upperBounds = wildcardType.getUpperBounds();\n                if (upperBounds.length == 1) {\n                    actualTypeArgument = upperBounds[0];\n                }\n            }\n            if (actualTypeArgument instanceof Class) {\n                itemClass = (Class<?>) actualTypeArgument;\n                if (!Modifier.isPublic(itemClass.getModifiers())) {\n                    throw new JSONException(\"can not create ASMParser\");\n                }\n            } else {\n                throw new JSONException(\"can not create ASMParser\");\n            }\n            return itemClass;\n        }\n        return Object.class;\n    }\n\n    private static final Map primitiveTypeMap = new HashMap<Class, String>(8) {{\n        put(boolean.class, \"Z\");\n        put(char.class, \"C\");\n        put(byte.class, \"B\");\n        put(short.class, \"S\");\n        put(int.class, \"I\");\n        put(long.class, \"J\");\n        put(float.class, \"F\");\n        put(double.class, \"D\");\n    }};\n\n    public static Type checkPrimitiveArray(GenericArrayType genericArrayType) {\n        Type clz = genericArrayType;\n        Type genericComponentType = genericArrayType.getGenericComponentType();\n\n        String prefix = \"[\";\n        while (genericComponentType instanceof GenericArrayType) {\n            genericComponentType = ((GenericArrayType) genericComponentType)\n                    .getGenericComponentType();\n            prefix += prefix;\n        }\n\n        if (genericComponentType instanceof Class<?>) {\n            Class<?> ck = (Class<?>) genericComponentType;\n            if (ck.isPrimitive()) {\n                try {\n                    String postfix = (String) primitiveTypeMap.get(ck);\n                    if (postfix != null) {\n                        clz = Class.forName(prefix + postfix);\n                    }\n                } catch (ClassNotFoundException ignored) {\n                }\n            }\n        }\n\n        return clz;\n    }\n\n    public static Set createSet(Type type) {\n        Class<?> rawClass = getRawClass(type);\n        Set set;\n        if (rawClass == AbstractCollection.class //\n                || rawClass == Collection.class) {\n            set = new HashSet();\n        } else if (rawClass.isAssignableFrom(HashSet.class)) {\n            set = new HashSet();\n        } else if (rawClass.isAssignableFrom(LinkedHashSet.class)) {\n            set = new LinkedHashSet();\n        } else if (rawClass.isAssignableFrom(TreeSet.class)) {\n            set = new TreeSet();\n        } else if (rawClass.isAssignableFrom(EnumSet.class)) {\n            Type itemType;\n            if (type instanceof ParameterizedType) {\n                itemType = ((ParameterizedType) type).getActualTypeArguments()[0];\n            } else {\n                itemType = Object.class;\n            }\n            set = EnumSet.noneOf((Class<Enum>) itemType);\n        } else {\n            try {\n                set = (Set) rawClass.newInstance();\n            } catch (Exception e) {\n                throw new JSONException(\"create instance error, class \" + rawClass.getName());\n            }\n        }\n        return set;\n    }\n\n    @SuppressWarnings({\"rawtypes\", \"unchecked\"})\n    public static Collection createCollection(Type type) {\n        Class<?> rawClass = getRawClass(type);\n        Collection list;\n        if (rawClass == AbstractCollection.class //\n                || rawClass == Collection.class) {\n            list = new ArrayList();\n        } else if (rawClass.isAssignableFrom(HashSet.class)) {\n            list = new HashSet();\n        } else if (rawClass.isAssignableFrom(LinkedHashSet.class)) {\n            list = new LinkedHashSet();\n        } else if (rawClass.isAssignableFrom(TreeSet.class)) {\n            list = new TreeSet();\n        } else if (rawClass.isAssignableFrom(ArrayList.class)) {\n            list = new ArrayList();\n        } else if (rawClass.isAssignableFrom(EnumSet.class)) {\n            Type itemType;\n            if (type instanceof ParameterizedType) {\n                itemType = ((ParameterizedType) type).getActualTypeArguments()[0];\n            } else {\n                itemType = Object.class;\n            }\n            list = EnumSet.noneOf((Class<Enum>) itemType);\n        } else if (rawClass.isAssignableFrom(Queue.class)\n                || (class_deque != null && rawClass.isAssignableFrom(class_deque))) {\n            list = new LinkedList();\n        } else {\n            try {\n                list = (Collection) rawClass.newInstance();\n            } catch (Exception e) {\n                throw new JSONException(\"create instance error, class \" + rawClass.getName());\n            }\n        }\n        return list;\n    }\n\n    public static Class<?> getRawClass(Type type) {\n        if (type instanceof Class<?>) {\n            return (Class<?>) type;\n        } else if (type instanceof ParameterizedType) {\n            return getRawClass(((ParameterizedType) type).getRawType());\n        } else if (type instanceof WildcardType) {\n            WildcardType wildcardType = (WildcardType) type;\n            Type[] upperBounds = wildcardType.getUpperBounds();\n            if (upperBounds.length == 1) {\n                return getRawClass(upperBounds[0]);\n            } else {\n                throw new JSONException(\"TODO\");\n            }\n        } else {\n            throw new JSONException(\"TODO\");\n        }\n    }\n\n    private static final Set<String> isProxyClassNames = new HashSet<String>(6) {{\n        add(\"net.sf.cglib.proxy.Factory\");\n        add(\"org.springframework.cglib.proxy.Factory\");\n        add(\"javassist.util.proxy.ProxyObject\");\n        add(\"org.apache.ibatis.javassist.util.proxy.ProxyObject\");\n        add(\"org.hibernate.proxy.HibernateProxy\");\n        add(\"org.springframework.context.annotation.ConfigurationClassEnhancer$EnhancedConfiguration\");\n    }};\n\n    public static boolean isProxy(Class<?> clazz) {\n\n        for (Class<?> item : clazz.getInterfaces()) {\n            String interfaceName = item.getName();\n            if (isProxyClassNames.contains(interfaceName)) {\n                return true;\n            }\n        }\n        return false;\n    }\n\n    public static boolean isTransient(Method method) {\n        if (method == null) {\n            return false;\n        }\n        if (!transientClassInited) {\n            try {\n                transientClass = (Class<? extends Annotation>) Class.forName(\"java.beans.Transient\");\n            } catch (Exception e) {\n                // skip\n            } finally {\n                transientClassInited = true;\n            }\n        }\n        if (transientClass != null) {\n            Annotation annotation = TypeUtils.getAnnotation(method, transientClass);\n            return annotation != null;\n        }\n        return false;\n    }\n\n    public static boolean isAnnotationPresentOneToMany(Method method) {\n        if (method == null) {\n            return false;\n        }\n\n        if (class_OneToMany == null && !class_OneToMany_error) {\n            try {\n                class_OneToMany = (Class<? extends Annotation>) Class.forName(\"javax.persistence.OneToMany\");\n            } catch (Throwable e) {\n                // skip\n                class_OneToMany_error = true;\n            }\n        }\n        return class_OneToMany != null && method.isAnnotationPresent(class_OneToMany);\n\n    }\n\n    public static boolean isAnnotationPresentManyToMany(Method method) {\n        if (method == null) {\n            return false;\n        }\n\n        if (class_ManyToMany == null && !class_ManyToMany_error) {\n            try {\n                class_ManyToMany = (Class<? extends Annotation>) Class.forName(\"javax.persistence.ManyToMany\");\n            } catch (Throwable e) {\n                // skip\n                class_ManyToMany_error = true;\n            }\n        }\n        return class_ManyToMany != null && (method.isAnnotationPresent(class_OneToMany) || method.isAnnotationPresent(class_ManyToMany));\n\n    }\n\n    public static boolean isHibernateInitialized(Object object) {\n        if (object == null) {\n            return false;\n        }\n        if (method_HibernateIsInitialized == null && !method_HibernateIsInitialized_error) {\n            try {\n                Class<?> class_Hibernate = Class.forName(\"org.hibernate.Hibernate\");\n                method_HibernateIsInitialized = class_Hibernate.getMethod(\"isInitialized\", Object.class);\n            } catch (Throwable e) {\n                // skip\n                method_HibernateIsInitialized_error = true;\n            }\n        }\n        if (method_HibernateIsInitialized != null) {\n            try {\n                Boolean initialized = (Boolean) method_HibernateIsInitialized.invoke(null, object);\n                return initialized;\n            } catch (Throwable e) {\n                // skip\n            }\n        }\n        return true;\n    }\n\n    public static double parseDouble(String str) {\n        final int len = str.length();\n        if (len > 10) {\n            return Double.parseDouble(str);\n        }\n\n        boolean negative = false;\n\n        long longValue = 0;\n        int scale = 0;\n        for (int i = 0; i < len; ++i) {\n            char ch = str.charAt(i);\n            if (ch == '-' && i == 0) {\n                negative = true;\n                continue;\n            }\n\n            if (ch == '.') {\n                if (scale != 0) {\n                    return Double.parseDouble(str);\n                }\n                scale = len - i - 1;\n                continue;\n            }\n\n            if (ch >= '0' && ch <= '9') {\n                int digit = ch - '0';\n                longValue = longValue * 10 + digit;\n            } else {\n                return Double.parseDouble(str);\n            }\n        }\n\n        if (negative) {\n            longValue = -longValue;\n        }\n\n        switch (scale) {\n            case 0:\n                return (double) longValue;\n            case 1:\n                return ((double) longValue) / 10;\n            case 2:\n                return ((double) longValue) / 100;\n            case 3:\n                return ((double) longValue) / 1000;\n            case 4:\n                return ((double) longValue) / 10000;\n            case 5:\n                return ((double) longValue) / 100000;\n            case 6:\n                return ((double) longValue) / 1000000;\n            case 7:\n                return ((double) longValue) / 10000000;\n            case 8:\n                return ((double) longValue) / 100000000;\n            case 9:\n                return ((double) longValue) / 1000000000;\n        }\n\n        return Double.parseDouble(str);\n    }\n\n    public static float parseFloat(String str) {\n        final int len = str.length();\n        if (len >= 10) {\n            return Float.parseFloat(str);\n        }\n\n        boolean negative = false;\n\n        long longValue = 0;\n        int scale = 0;\n        for (int i = 0; i < len; ++i) {\n            char ch = str.charAt(i);\n            if (ch == '-' && i == 0) {\n                negative = true;\n                continue;\n            }\n\n            if (ch == '.') {\n                if (scale != 0) {\n                    return Float.parseFloat(str);\n                }\n                scale = len - i - 1;\n                continue;\n            }\n\n            if (ch >= '0' && ch <= '9') {\n                int digit = ch - '0';\n                longValue = longValue * 10 + digit;\n            } else {\n                return Float.parseFloat(str);\n            }\n        }\n\n        if (negative) {\n            longValue = -longValue;\n        }\n\n        switch (scale) {\n            case 0:\n                return (float) longValue;\n            case 1:\n                return ((float) longValue) / 10;\n            case 2:\n                return ((float) longValue) / 100;\n            case 3:\n                return ((float) longValue) / 1000;\n            case 4:\n                return ((float) longValue) / 10000;\n            case 5:\n                return ((float) longValue) / 100000;\n            case 6:\n                return ((float) longValue) / 1000000;\n            case 7:\n                return ((float) longValue) / 10000000;\n            case 8:\n                return ((float) longValue) / 100000000;\n            case 9:\n                return ((float) longValue) / 1000000000;\n        }\n\n        return Float.parseFloat(str);\n    }\n\n    public static final long fnv1a_64_magic_hashcode = 0xcbf29ce484222325L;\n    public static final long fnv1a_64_magic_prime = 0x100000001b3L;\n\n    public static long fnv1a_64_extract(String key) {\n        long hashCode = fnv1a_64_magic_hashcode;\n        for (int i = 0; i < key.length(); ++i) {\n            char ch = key.charAt(i);\n            if (ch == '_' || ch == '-') {\n                continue;\n            }\n            if (ch >= 'A' && ch <= 'Z') {\n                ch = (char) (ch + 32);\n            }\n            hashCode ^= ch;\n            hashCode *= fnv1a_64_magic_prime;\n        }\n        return hashCode;\n    }\n\n    public static long fnv1a_64_lower(String key) {\n        long hashCode = fnv1a_64_magic_hashcode;\n        for (int i = 0; i < key.length(); ++i) {\n            char ch = key.charAt(i);\n            if (ch >= 'A' && ch <= 'Z') {\n                ch = (char) (ch + 32);\n            }\n            hashCode ^= ch;\n            hashCode *= fnv1a_64_magic_prime;\n        }\n        return hashCode;\n    }\n\n    public static long fnv1a_64(String key) {\n        long hashCode = fnv1a_64_magic_hashcode;\n        for (int i = 0; i < key.length(); ++i) {\n            char ch = key.charAt(i);\n            hashCode ^= ch;\n            hashCode *= fnv1a_64_magic_prime;\n        }\n        return hashCode;\n    }\n\n    public static boolean isKotlin(Class clazz) {\n        if (kotlin_metadata == null && !kotlin_metadata_error) {\n            try {\n                kotlin_metadata = Class.forName(\"kotlin.Metadata\");\n            } catch (Throwable e) {\n                kotlin_metadata_error = true;\n            }\n        }\n        return kotlin_metadata != null && clazz.isAnnotationPresent(kotlin_metadata);\n    }\n\n    public static Constructor getKotlinConstructor(Constructor[] constructors) {\n        return getKotlinConstructor(constructors, null);\n    }\n\n    public static Constructor getKotlinConstructor(Constructor[] constructors, String[] paramNames) {\n        Constructor creatorConstructor = null;\n        for (Constructor<?> constructor : constructors) {\n            Class<?>[] parameterTypes = constructor.getParameterTypes();\n            if (paramNames != null && parameterTypes.length != paramNames.length) {\n                continue;\n            }\n\n            if (parameterTypes.length > 0 && parameterTypes[parameterTypes.length - 1].getName().equals(\"kotlin.jvm.internal.DefaultConstructorMarker\")) {\n                continue;\n            }\n            if (creatorConstructor != null && creatorConstructor.getParameterTypes().length >= parameterTypes.length) {\n                continue;\n            }\n            creatorConstructor = constructor;\n        }\n        return creatorConstructor;\n    }\n\n    public static String[] getKoltinConstructorParameters(Class clazz) {\n        if (kotlin_kclass_constructor == null && !kotlin_class_klass_error) {\n            try {\n                Class class_kotlin_kclass = Class.forName(\"kotlin.reflect.jvm.internal.KClassImpl\");\n                kotlin_kclass_constructor = class_kotlin_kclass.getConstructor(Class.class);\n            } catch (Throwable e) {\n                kotlin_class_klass_error = true;\n            }\n        }\n        if (kotlin_kclass_constructor == null) {\n            return null;\n        }\n\n        if (kotlin_kclass_getConstructors == null && !kotlin_class_klass_error) {\n            try {\n                Class class_kotlin_kclass = Class.forName(\"kotlin.reflect.jvm.internal.KClassImpl\");\n                kotlin_kclass_getConstructors = class_kotlin_kclass.getMethod(\"getConstructors\");\n            } catch (Throwable e) {\n                kotlin_class_klass_error = true;\n            }\n        }\n\n        if (kotlin_kfunction_getParameters == null && !kotlin_class_klass_error) {\n            try {\n                Class class_kotlin_kfunction = Class.forName(\"kotlin.reflect.KFunction\");\n                kotlin_kfunction_getParameters = class_kotlin_kfunction.getMethod(\"getParameters\");\n            } catch (Throwable e) {\n                kotlin_class_klass_error = true;\n            }\n        }\n\n        if (kotlin_kparameter_getName == null && !kotlin_class_klass_error) {\n            try {\n                Class class_kotlinn_kparameter = Class.forName(\"kotlin.reflect.KParameter\");\n                kotlin_kparameter_getName = class_kotlinn_kparameter.getMethod(\"getName\");\n            } catch (Throwable e) {\n                kotlin_class_klass_error = true;\n            }\n        }\n\n        if (kotlin_error) {\n            return null;\n        }\n\n        try {\n            Object constructor = null;\n            Object kclassImpl = kotlin_kclass_constructor.newInstance(clazz);\n            Iterable it = (Iterable) kotlin_kclass_getConstructors.invoke(kclassImpl);\n            for (Iterator iterator = it.iterator(); iterator.hasNext(); iterator.hasNext()) {\n                Object item = iterator.next();\n                List parameters = (List) kotlin_kfunction_getParameters.invoke(item);\n                if (constructor != null && parameters.size() == 0) {\n                    continue;\n                }\n                constructor = item;\n            }\n\n            if (constructor == null) {\n                return null;\n            }\n\n            List parameters = (List) kotlin_kfunction_getParameters.invoke(constructor);\n            String[] names = new String[parameters.size()];\n            for (int i = 0; i < parameters.size(); i++) {\n                Object param = parameters.get(i);\n                names[i] = (String) kotlin_kparameter_getName.invoke(param);\n            }\n            return names;\n        } catch (Throwable e) {\n            e.printStackTrace();\n            kotlin_error = true;\n        }\n        return null;\n    }\n\n    private static boolean isKotlinIgnore(Class clazz, String methodName) {\n        if (kotlinIgnores == null && !kotlinIgnores_error) {\n            try {\n                Map<Class, String[]> map = new HashMap<Class, String[]>();\n                Class charRangeClass = Class.forName(\"kotlin.ranges.CharRange\");\n                map.put(charRangeClass, new String[]{\"getEndInclusive\", \"isEmpty\"});\n                Class intRangeClass = Class.forName(\"kotlin.ranges.IntRange\");\n                map.put(intRangeClass, new String[]{\"getEndInclusive\", \"isEmpty\"});\n                Class longRangeClass = Class.forName(\"kotlin.ranges.LongRange\");\n                map.put(longRangeClass, new String[]{\"getEndInclusive\", \"isEmpty\"});\n                Class floatRangeClass = Class.forName(\"kotlin.ranges.ClosedFloatRange\");\n                map.put(floatRangeClass, new String[]{\"getEndInclusive\", \"isEmpty\"});\n                Class doubleRangeClass = Class.forName(\"kotlin.ranges.ClosedDoubleRange\");\n                map.put(doubleRangeClass, new String[]{\"getEndInclusive\", \"isEmpty\"});\n                kotlinIgnores = map;\n            } catch (Throwable error) {\n                kotlinIgnores_error = true;\n            }\n        }\n        if (kotlinIgnores == null) {\n            return false;\n        }\n        String[] ignores = kotlinIgnores.get(clazz);\n        return ignores != null && Arrays.binarySearch(ignores, methodName) >= 0;\n    }\n\n    public static <A extends Annotation> A getAnnotation(Class<?> targetClass, Class<A> annotationClass) {\n        A targetAnnotation = targetClass.getAnnotation(annotationClass);\n\n        Class<?> mixInClass = null;\n        Type type = JSON.getMixInAnnotations(targetClass);\n        if (type instanceof Class<?>) {\n            mixInClass = (Class<?>) type;\n        }\n\n        if (mixInClass != null) {\n            A mixInAnnotation = mixInClass.getAnnotation(annotationClass);\n            Annotation[] annotations = mixInClass.getAnnotations();\n            if (mixInAnnotation == null && annotations.length > 0) {\n                for (Annotation annotation : annotations) {\n                    mixInAnnotation = annotation.annotationType().getAnnotation(annotationClass);\n                    if (mixInAnnotation != null) {\n                        break;\n                    }\n                }\n            }\n            if (mixInAnnotation != null) {\n                return mixInAnnotation;\n            }\n        }\n\n        Annotation[] targetClassAnnotations = targetClass.getAnnotations();\n        if (targetAnnotation == null && targetClassAnnotations.length > 0) {\n            for (Annotation annotation : targetClassAnnotations) {\n                targetAnnotation = annotation.annotationType().getAnnotation(annotationClass);\n                if (targetAnnotation != null) {\n                    break;\n                }\n            }\n        }\n        return targetAnnotation;\n    }\n\n    public static <A extends Annotation> A getAnnotation(Field field, Class<A> annotationClass) {\n        A targetAnnotation = field.getAnnotation(annotationClass);\n\n        Class<?> clazz = field.getDeclaringClass();\n        A mixInAnnotation;\n        Class<?> mixInClass = null;\n        Type type = JSON.getMixInAnnotations(clazz);\n        if (type instanceof Class<?>) {\n            mixInClass = (Class<?>) type;\n        }\n\n        if (mixInClass != null) {\n            Field mixInField = null;\n            String fieldName = field.getName();\n            // 递归从MixIn类的父类中查找注解（如果有父类的话）\n            for (Class<?> currClass = mixInClass; currClass != null && currClass != Object.class;\n                 currClass = currClass.getSuperclass()) {\n                try {\n                    mixInField = currClass.getDeclaredField(fieldName);\n                    break;\n                } catch (NoSuchFieldException e) {\n                    // skip\n                }\n            }\n            if (mixInField == null) {\n                return targetAnnotation;\n            }\n            mixInAnnotation = mixInField.getAnnotation(annotationClass);\n            if (mixInAnnotation != null) {\n                return mixInAnnotation;\n            }\n        }\n        return targetAnnotation;\n    }\n\n    public static <A extends Annotation> A getAnnotation(Method method, Class<A> annotationClass) {\n        A targetAnnotation = method.getAnnotation(annotationClass);\n\n        Class<?> clazz = method.getDeclaringClass();\n        A mixInAnnotation;\n        Class<?> mixInClass = null;\n        Type type = JSON.getMixInAnnotations(clazz);\n        if (type instanceof Class<?>) {\n            mixInClass = (Class<?>) type;\n        }\n\n        if (mixInClass != null) {\n            Method mixInMethod = null;\n            String methodName = method.getName();\n            Class<?>[] parameterTypes = method.getParameterTypes();\n            // 递归从MixIn类的父类中查找注解（如果有父类的话）\n            for (Class<?> currClass = mixInClass; currClass != null && currClass != Object.class;\n                 currClass = currClass.getSuperclass()) {\n                try {\n                    mixInMethod = currClass.getDeclaredMethod(methodName, parameterTypes);\n                    break;\n                } catch (NoSuchMethodException e) {\n                    // skip\n                }\n            }\n            if (mixInMethod == null) {\n                return targetAnnotation;\n            }\n            mixInAnnotation = mixInMethod.getAnnotation(annotationClass);\n            if (mixInAnnotation != null) {\n                return mixInAnnotation;\n            }\n        }\n        return targetAnnotation;\n    }\n\n    public static Annotation[][] getParameterAnnotations(Method method) {\n        Annotation[][] targetAnnotations = method.getParameterAnnotations();\n\n        Class<?> clazz = method.getDeclaringClass();\n        Annotation[][] mixInAnnotations;\n        Class<?> mixInClass = null;\n        Type type = JSON.getMixInAnnotations(clazz);\n        if (type instanceof Class<?>) {\n            mixInClass = (Class<?>) type;\n        }\n\n        if (mixInClass != null) {\n            Method mixInMethod = null;\n            String methodName = method.getName();\n            Class<?>[] parameterTypes = method.getParameterTypes();\n            // 递归从MixIn类的父类中查找注解（如果有父类的话）\n            for (Class<?> currClass = mixInClass; currClass != null && currClass != Object.class;\n                 currClass = currClass.getSuperclass()) {\n                try {\n                    mixInMethod = currClass.getDeclaredMethod(methodName, parameterTypes);\n                    break;\n                } catch (NoSuchMethodException e) {\n                    continue;\n                }\n            }\n            if (mixInMethod == null) {\n                return targetAnnotations;\n            }\n            mixInAnnotations = mixInMethod.getParameterAnnotations();\n            if (mixInAnnotations != null) {\n                return mixInAnnotations;\n            }\n        }\n        return targetAnnotations;\n    }\n\n    public static Annotation[][] getParameterAnnotations(Constructor constructor) {\n        Annotation[][] targetAnnotations = constructor.getParameterAnnotations();\n\n        Class<?> clazz = constructor.getDeclaringClass();\n        Annotation[][] mixInAnnotations;\n        Class<?> mixInClass = null;\n        Type type = JSON.getMixInAnnotations(clazz);\n        if (type instanceof Class<?>) {\n            mixInClass = (Class<?>) type;\n        }\n\n        if (mixInClass != null) {\n            Constructor mixInConstructor = null;\n            Class<?>[] parameterTypes = constructor.getParameterTypes();\n            // 构建参数列表，因为内部类的构造函数需要传入外部类的引用\n            List<Class<?>> enclosingClasses = new ArrayList<Class<?>>(2);\n            for (Class<?> enclosingClass = mixInClass.getEnclosingClass(); enclosingClass != null; enclosingClass = enclosingClass.getEnclosingClass()) {\n                enclosingClasses.add(enclosingClass);\n            }\n            int level = enclosingClasses.size();\n            // 递归从MixIn类的父类中查找注解（如果有父类的话）\n            for (Class<?> currClass = mixInClass; currClass != null && currClass != Object.class;\n                 currClass = currClass.getSuperclass()) {\n                try {\n                    if (level != 0) {\n                        Class<?>[] outerClassAndParameterTypes = new Class[level + parameterTypes.length];\n                        System.arraycopy(parameterTypes, 0, outerClassAndParameterTypes, level, parameterTypes.length);\n                        for (int i = level; i > 0; i--) {\n                            outerClassAndParameterTypes[i - 1] = enclosingClasses.get(i - 1);\n                        }\n                        mixInConstructor = mixInClass.getDeclaredConstructor(outerClassAndParameterTypes);\n                    } else {\n                        mixInConstructor = mixInClass.getDeclaredConstructor(parameterTypes);\n                    }\n                    break;\n                } catch (NoSuchMethodException e) {\n                    level--;\n                }\n            }\n            if (mixInConstructor == null) {\n                return targetAnnotations;\n            }\n            mixInAnnotations = mixInConstructor.getParameterAnnotations();\n            if (mixInAnnotations != null) {\n                return mixInAnnotations;\n            }\n        }\n        return targetAnnotations;\n    }\n\n    public static boolean isJacksonCreator(Method method) {\n        if (method == null) {\n            return false;\n        }\n\n        if (class_JacksonCreator == null && !class_JacksonCreator_error) {\n            try {\n                class_JacksonCreator = (Class<? extends Annotation>) Class.forName(\"com.fasterxml.jackson.annotation.JsonCreator\");\n            } catch (Throwable e) {\n                // skip\n                class_JacksonCreator_error = true;\n            }\n        }\n        return class_JacksonCreator != null && method.isAnnotationPresent(class_JacksonCreator);\n    }\n\n    private static Object OPTIONAL_EMPTY;\n    private static boolean OPTIONAL_ERROR = false;\n\n    public static Object optionalEmpty(Type type) {\n        if (OPTIONAL_ERROR) {\n            return null;\n        }\n\n        Class clazz = getClass(type);\n        if (clazz == null) {\n            return null;\n        }\n\n        String className = clazz.getName();\n\n        if (\"java.util.Optional\".equals(className)) {\n            if (OPTIONAL_EMPTY == null) {\n                try {\n                    Method empty = Class.forName(className).getMethod(\"empty\");\n                    OPTIONAL_EMPTY = empty.invoke(null);\n                } catch (Throwable e) {\n                    OPTIONAL_ERROR = true;\n                }\n            }\n            return OPTIONAL_EMPTY;\n        }\n        return null;\n    }\n\n    public static class MethodInheritanceComparator implements Comparator<Method> {\n        public int compare(Method m1, Method m2) {\n            int cmp = m1.getName().compareTo(m2.getName());\n            if (cmp != 0) {\n                return cmp;\n            }\n\n            Class<?> class1 = m1.getReturnType();\n            Class<?> class2 = m2.getReturnType();\n\n            if (class1.equals(class2)) {\n                return 0;\n            }\n\n            if (class1.isAssignableFrom(class2)) {\n                return -1;\n            }\n            \n            if (class2.isAssignableFrom(class1)) {\n                return 1;\n            }\n            return 0;\n        }\n    }\n}\n"
  },
  {
    "path": "src/main/java/com/alibaba/fastjson/util/UTF8Decoder.java",
    "content": "package com.alibaba.fastjson.util;\n\nimport java.nio.Buffer;\nimport java.nio.ByteBuffer;\nimport java.nio.CharBuffer;\nimport java.nio.charset.Charset;\nimport java.nio.charset.CharsetDecoder;\nimport java.nio.charset.CoderResult;\n\n/*  Legal UTF-8 Byte Sequences\n *\n * #    Code Points      Bits   Bit/Byte pattern\n * 1                     7      0xxxxxxx\n *      U+0000..U+007F          00..7F\n *\n * 2                     11     110xxxxx    10xxxxxx\n *      U+0080..U+07FF          C2..DF      80..BF\n *\n * 3                     16     1110xxxx    10xxxxxx    10xxxxxx\n *      U+0800..U+0FFF          E0          A0..BF      80..BF\n *      U+1000..U+FFFF          E1..EF      80..BF      80..BF\n *\n * 4                     21     11110xxx    10xxxxxx    10xxxxxx    10xxxxxx\n *     U+10000..U+3FFFF         F0          90..BF      80..BF      80..BF\n *     U+40000..U+FFFFF         F1..F3      80..BF      80..BF      80..BF\n *    U+100000..U10FFFF         F4          80..8F      80..BF      80..BF\n *\n */\n\n/**\n * @deprecated\n */\npublic class UTF8Decoder extends CharsetDecoder {\n\n    private final static Charset charset = Charset.forName(\"UTF-8\");\n\n    public UTF8Decoder(){\n        super(charset, 1.0f, 1.0f);\n    }\n\n    private static boolean isNotContinuation(int b) {\n        return (b & 0xc0) != 0x80;\n    }\n\n    // [C2..DF] [80..BF]\n    private static boolean isMalformed2(int b1, int b2) {\n        return (b1 & 0x1e) == 0x0 || (b2 & 0xc0) != 0x80;\n    }\n\n    // [E0] [A0..BF] [80..BF]\n    // [E1..EF] [80..BF] [80..BF]\n    private static boolean isMalformed3(int b1, int b2, int b3) {\n        return (b1 == (byte) 0xe0 && (b2 & 0xe0) == 0x80) || (b2 & 0xc0) != 0x80 || (b3 & 0xc0) != 0x80;\n    }\n\n    // [F0] [90..BF] [80..BF] [80..BF]\n    // [F1..F3] [80..BF] [80..BF] [80..BF]\n    // [F4] [80..8F] [80..BF] [80..BF]\n    // only check 80-be range here, the [0xf0,0x80...] and [0xf4,0x90-...]\n    // will be checked by Surrogate.neededFor(uc)\n    private static boolean isMalformed4(int b2, int b3, int b4) {\n        return (b2 & 0xc0) != 0x80 || (b3 & 0xc0) != 0x80 || (b4 & 0xc0) != 0x80;\n    }\n\n    private static CoderResult lookupN(ByteBuffer src, int n) {\n        for (int i = 1; i < n; i++) {\n            if (isNotContinuation(src.get())) return CoderResult.malformedForLength(i);\n        }\n        return CoderResult.malformedForLength(n);\n    }\n\n    public static CoderResult malformedN(ByteBuffer src, int nb) {\n        switch (nb) {\n            case 1:\n                int b1 = src.get();\n                if ((b1 >> 2) == -2) {\n                    // 5 bytes 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx\n                    if (src.remaining() < 4) return CoderResult.UNDERFLOW;\n                    return lookupN(src, 5);\n                }\n                if ((b1 >> 1) == -2) {\n                    // 6 bytes 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx\n                    if (src.remaining() < 5) {\n                        return CoderResult.UNDERFLOW;\n                    }\n                    return lookupN(src, 6);\n                }\n                return CoderResult.malformedForLength(1);\n            case 2: // always 1\n                return CoderResult.malformedForLength(1);\n            case 3:\n                b1 = src.get();\n                int b2 = src.get(); // no need to lookup b3\n                return CoderResult.malformedForLength(((b1 == (byte) 0xe0 && (b2 & 0xe0) == 0x80) || isNotContinuation(b2)) ? 1 : 2);\n            case 4: // we don't care the speed here\n                b1 = src.get() & 0xff;\n                b2 = src.get() & 0xff;\n                if (b1 > 0xf4 || (b1 == 0xf0 && (b2 < 0x90 || b2 > 0xbf)) || (b1 == 0xf4 && (b2 & 0xf0) != 0x80) || isNotContinuation(b2)) return CoderResult.malformedForLength(1);\n                if (isNotContinuation(src.get())) return CoderResult.malformedForLength(2);\n                return CoderResult.malformedForLength(3);\n            default:\n                throw new IllegalStateException();\n        }\n    }\n\n    private static CoderResult malformed(ByteBuffer src, int sp, CharBuffer dst, int dp, int nb) {\n        src.position(sp - src.arrayOffset());\n        CoderResult cr = malformedN(src, nb);\n        src.position(sp);\n        dst.position(dp);\n        return cr;\n    }\n\n    private static CoderResult xflow(Buffer src, int sp, int sl, Buffer dst, int dp, int nb) {\n        src.position(sp);\n        dst.position(dp);\n        return (nb == 0 || sl - sp < nb) ? CoderResult.UNDERFLOW : CoderResult.OVERFLOW;\n    }\n\n    private CoderResult decodeArrayLoop(ByteBuffer src, CharBuffer dst) {\n        // This method is optimized for ASCII input.\n        byte[] srcArray = src.array();\n        int srcPosition = src.arrayOffset() + src.position();\n        int srcLength = src.arrayOffset() + src.limit();\n\n        char[] destArray = dst.array();\n        int destPosition = dst.arrayOffset() + dst.position();\n        int destLength = dst.arrayOffset() + dst.limit();\n        int destLengthASCII = destPosition + Math.min(srcLength - srcPosition, destLength - destPosition);\n\n        // ASCII only loop\n        while (destPosition < destLengthASCII && srcArray[srcPosition] >= 0) {\n            destArray[destPosition++] = (char) srcArray[srcPosition++];\n        }\n\n        while (srcPosition < srcLength) {\n            int b1 = srcArray[srcPosition];\n            if (b1 >= 0) {\n                // 1 byte, 7 bits: 0xxxxxxx\n                if (destPosition >= destLength) {\n                    return xflow(src, srcPosition, srcLength, dst, destPosition, 1);\n                }\n                destArray[destPosition++] = (char) b1;\n                srcPosition++;\n            } else if ((b1 >> 5) == -2) {\n                // 2 bytes, 11 bits: 110xxxxx 10xxxxxx\n                if (srcLength - srcPosition < 2 || destPosition >= destLength) {\n                    return xflow(src, srcPosition, srcLength, dst, destPosition, 2);\n                }\n                int b2 = srcArray[srcPosition + 1];\n                if (isMalformed2(b1, b2)) {\n                    return malformed(src, srcPosition, dst, destPosition, 2);\n                }\n                destArray[destPosition++] = (char) (((b1 << 6) ^ b2) ^ 0x0f80);\n                srcPosition += 2;\n            } else if ((b1 >> 4) == -2) {\n                // 3 bytes, 16 bits: 1110xxxx 10xxxxxx 10xxxxxx\n                if (srcLength - srcPosition < 3 || destPosition >= destLength) {\n                    return xflow(src, srcPosition, srcLength, dst, destPosition, 3);\n                }\n                int b2 = srcArray[srcPosition + 1];\n                int b3 = srcArray[srcPosition + 2];\n                if (isMalformed3(b1, b2, b3)) {\n                    return malformed(src, srcPosition, dst, destPosition, 3);\n                }\n                destArray[destPosition++] = (char) (((b1 << 12) ^ (b2 << 6) ^ b3) ^ 0x1f80);\n                srcPosition += 3;\n            } else if ((b1 >> 3) == -2) {\n                // 4 bytes, 21 bits: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n                if (srcLength - srcPosition < 4 || destLength - destPosition < 2) {\n                    return xflow(src, srcPosition, srcLength, dst, destPosition, 4);\n                }\n                int b2 = srcArray[srcPosition + 1];\n                int b3 = srcArray[srcPosition + 2];\n                int b4 = srcArray[srcPosition + 3];\n                int uc = ((b1 & 0x07) << 18) | ((b2 & 0x3f) << 12) | ((b3 & 0x3f) << 06) | (b4 & 0x3f);\n                if (isMalformed4(b2, b3, b4) || !((uc >= 0x10000) && (uc <= 1114111))) {\n                    return malformed(src, srcPosition, dst, destPosition, 4);\n                }\n                destArray[destPosition++] = (char) (0xd800 | (((uc - 0x10000) >> 10) & 0x3ff));\n                destArray[destPosition++] = (char) (0xdc00 | ((uc - 0x10000) & 0x3ff));\n                srcPosition += 4;\n            } else {\n                return malformed(src, srcPosition, dst, destPosition, 1);\n            }\n        }\n        return xflow(src, srcPosition, srcLength, dst, destPosition, 0);\n    }\n\n    protected CoderResult decodeLoop(ByteBuffer src, CharBuffer dst) {\n        return decodeArrayLoop(src, dst);\n    }\n\n\n\n\n}\n"
  },
  {
    "path": "src/main/resources/META-INF/LICENSE.txt",
    "content": "\r\n                                 Apache License\r\n                           Version 2.0, January 2004\r\n                        http://www.apache.org/licenses/\r\n\r\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\r\n\r\n   1. Definitions.\r\n\r\n      \"License\" shall mean the terms and conditions for use, reproduction,\r\n      and distribution as defined by Sections 1 through 9 of this document.\r\n\r\n      \"Licensor\" shall mean the copyright owner or entity authorized by\r\n      the copyright owner that is granting the License.\r\n\r\n      \"Legal Entity\" shall mean the union of the acting entity and all\r\n      other entities that control, are controlled by, or are under common\r\n      control with that entity. For the purposes of this definition,\r\n      \"control\" means (i) the power, direct or indirect, to cause the\r\n      direction or management of such entity, whether by contract or\r\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\r\n      outstanding shares, or (iii) beneficial ownership of such entity.\r\n\r\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\r\n      exercising permissions granted by this License.\r\n\r\n      \"Source\" form shall mean the preferred form for making modifications,\r\n      including but not limited to software source code, documentation\r\n      source, and configuration files.\r\n\r\n      \"Object\" form shall mean any form resulting from mechanical\r\n      transformation or translation of a Source form, including but\r\n      not limited to compiled object code, generated documentation,\r\n      and conversions to other media types.\r\n\r\n      \"Work\" shall mean the work of authorship, whether in Source or\r\n      Object form, made available under the License, as indicated by a\r\n      copyright notice that is included in or attached to the work\r\n      (an example is provided in the Appendix below).\r\n\r\n      \"Derivative Works\" shall mean any work, whether in Source or Object\r\n      form, that is based on (or derived from) the Work and for which the\r\n      editorial revisions, annotations, elaborations, or other modifications\r\n      represent, as a whole, an original work of authorship. For the purposes\r\n      of this License, Derivative Works shall not include works that remain\r\n      separable from, or merely link (or bind by name) to the interfaces of,\r\n      the Work and Derivative Works thereof.\r\n\r\n      \"Contribution\" shall mean any work of authorship, including\r\n      the original version of the Work and any modifications or additions\r\n      to that Work or Derivative Works thereof, that is intentionally\r\n      submitted to Licensor for inclusion in the Work by the copyright owner\r\n      or by an individual or Legal Entity authorized to submit on behalf of\r\n      the copyright owner. For the purposes of this definition, \"submitted\"\r\n      means any form of electronic, verbal, or written communication sent\r\n      to the Licensor or its representatives, including but not limited to\r\n      communication on electronic mailing lists, source code control systems,\r\n      and issue tracking systems that are managed by, or on behalf of, the\r\n      Licensor for the purpose of discussing and improving the Work, but\r\n      excluding communication that is conspicuously marked or otherwise\r\n      designated in writing by the copyright owner as \"Not a Contribution.\"\r\n\r\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\r\n      on behalf of whom a Contribution has been received by Licensor and\r\n      subsequently incorporated within the Work.\r\n\r\n   2. Grant of Copyright License. Subject to the terms and conditions of\r\n      this License, each Contributor hereby grants to You a perpetual,\r\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\r\n      copyright license to reproduce, prepare Derivative Works of,\r\n      publicly display, publicly perform, sublicense, and distribute the\r\n      Work and such Derivative Works in Source or Object form.\r\n\r\n   3. Grant of Patent License. Subject to the terms and conditions of\r\n      this License, each Contributor hereby grants to You a perpetual,\r\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\r\n      (except as stated in this section) patent license to make, have made,\r\n      use, offer to sell, sell, import, and otherwise transfer the Work,\r\n      where such license applies only to those patent claims licensable\r\n      by such Contributor that are necessarily infringed by their\r\n      Contribution(s) alone or by combination of their Contribution(s)\r\n      with the Work to which such Contribution(s) was submitted. If You\r\n      institute patent litigation against any entity (including a\r\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\r\n      or a Contribution incorporated within the Work constitutes direct\r\n      or contributory patent infringement, then any patent licenses\r\n      granted to You under this License for that Work shall terminate\r\n      as of the date such litigation is filed.\r\n\r\n   4. Redistribution. You may reproduce and distribute copies of the\r\n      Work or Derivative Works thereof in any medium, with or without\r\n      modifications, and in Source or Object form, provided that You\r\n      meet the following conditions:\r\n\r\n      (a) You must give any other recipients of the Work or\r\n          Derivative Works a copy of this License; and\r\n\r\n      (b) You must cause any modified files to carry prominent notices\r\n          stating that You changed the files; and\r\n\r\n      (c) You must retain, in the Source form of any Derivative Works\r\n          that You distribute, all copyright, patent, trademark, and\r\n          attribution notices from the Source form of the Work,\r\n          excluding those notices that do not pertain to any part of\r\n          the Derivative Works; and\r\n\r\n      (d) If the Work includes a \"NOTICE\" text file as part of its\r\n          distribution, then any Derivative Works that You distribute must\r\n          include a readable copy of the attribution notices contained\r\n          within such NOTICE file, excluding those notices that do not\r\n          pertain to any part of the Derivative Works, in at least one\r\n          of the following places: within a NOTICE text file distributed\r\n          as part of the Derivative Works; within the Source form or\r\n          documentation, if provided along with the Derivative Works; or,\r\n          within a display generated by the Derivative Works, if and\r\n          wherever such third-party notices normally appear. The contents\r\n          of the NOTICE file are for informational purposes only and\r\n          do not modify the License. You may add Your own attribution\r\n          notices within Derivative Works that You distribute, alongside\r\n          or as an addendum to the NOTICE text from the Work, provided\r\n          that such additional attribution notices cannot be construed\r\n          as modifying the License.\r\n\r\n      You may add Your own copyright statement to Your modifications and\r\n      may provide additional or different license terms and conditions\r\n      for use, reproduction, or distribution of Your modifications, or\r\n      for any such Derivative Works as a whole, provided Your use,\r\n      reproduction, and distribution of the Work otherwise complies with\r\n      the conditions stated in this License.\r\n\r\n   5. Submission of Contributions. Unless You explicitly state otherwise,\r\n      any Contribution intentionally submitted for inclusion in the Work\r\n      by You to the Licensor shall be under the terms and conditions of\r\n      this License, without any additional terms or conditions.\r\n      Notwithstanding the above, nothing herein shall supersede or modify\r\n      the terms of any separate license agreement you may have executed\r\n      with Licensor regarding such Contributions.\r\n\r\n   6. Trademarks. This License does not grant permission to use the trade\r\n      names, trademarks, service marks, or product names of the Licensor,\r\n      except as required for reasonable and customary use in describing the\r\n      origin of the Work and reproducing the content of the NOTICE file.\r\n\r\n   7. Disclaimer of Warranty. Unless required by applicable law or\r\n      agreed to in writing, Licensor provides the Work (and each\r\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\r\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\r\n      implied, including, without limitation, any warranties or conditions\r\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\r\n      PARTICULAR PURPOSE. You are solely responsible for determining the\r\n      appropriateness of using or redistributing the Work and assume any\r\n      risks associated with Your exercise of permissions under this License.\r\n\r\n   8. Limitation of Liability. In no event and under no legal theory,\r\n      whether in tort (including negligence), contract, or otherwise,\r\n      unless required by applicable law (such as deliberate and grossly\r\n      negligent acts) or agreed to in writing, shall any Contributor be\r\n      liable to You for damages, including any direct, indirect, special,\r\n      incidental, or consequential damages of any character arising as a\r\n      result of this License or out of the use or inability to use the\r\n      Work (including but not limited to damages for loss of goodwill,\r\n      work stoppage, computer failure or malfunction, or any and all\r\n      other commercial damages or losses), even if such Contributor\r\n      has been advised of the possibility of such damages.\r\n\r\n   9. Accepting Warranty or Additional Liability. While redistributing\r\n      the Work or Derivative Works thereof, You may choose to offer,\r\n      and charge a fee for, acceptance of support, warranty, indemnity,\r\n      or other liability obligations and/or rights consistent with this\r\n      License. However, in accepting such obligations, You may act only\r\n      on Your own behalf and on Your sole responsibility, not on behalf\r\n      of any other Contributor, and only if You agree to indemnify,\r\n      defend, and hold each Contributor harmless for any liability\r\n      incurred by, or claims asserted against, such Contributor by reason\r\n      of your accepting any such warranty or additional liability.\r\n\r\n   END OF TERMS AND CONDITIONS\r\n\r\n   APPENDIX: How to apply the Apache License to your work.\r\n\r\n      To apply the Apache License to your work, attach the following\r\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\r\n      replaced with your own identifying information. (Don't include\r\n      the brackets!)  The text should be enclosed in the appropriate\r\n      comment syntax for the file format. We also recommend that a\r\n      file or class name and description of purpose be included on the\r\n      same \"printed page\" as the copyright notice for easier\r\n      identification within third-party archives.\r\n\r\n   Copyright [yyyy] [name of copyright owner]\r\n\r\n   Licensed under the Apache License, Version 2.0 (the \"License\");\r\n   you may not use this file except in compliance with the License.\r\n   You may obtain a copy of the License at\r\n\r\n       http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n   Unless required by applicable law or agreed to in writing, software\r\n   distributed under the License is distributed on an \"AS IS\" BASIS,\r\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n   See the License for the specific language governing permissions and\r\n   limitations under the License.\r\n\r\n"
  },
  {
    "path": "src/main/resources/META-INF/NOTICE.txt",
    "content": "/*\r\n * Copyright 1999-2017 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */"
  },
  {
    "path": "src/main/resources/META-INF/services/javax.ws.rs.ext.MessageBodyReader",
    "content": "com.alibaba.fastjson.support.jaxrs.FastJsonProvider"
  },
  {
    "path": "src/main/resources/META-INF/services/javax.ws.rs.ext.MessageBodyWriter",
    "content": "com.alibaba.fastjson.support.jaxrs.FastJsonProvider"
  },
  {
    "path": "src/main/resources/META-INF/services/javax.ws.rs.ext.Providers",
    "content": "com.alibaba.fastjson.support.jaxrs.FastJsonProvider"
  },
  {
    "path": "src/main/resources/META-INF/services/org.glassfish.jersey.internal.spi.AutoDiscoverable",
    "content": "com.alibaba.fastjson.support.jaxrs.FastJsonAutoDiscoverable"
  },
  {
    "path": "src/test/java/cn/com/tx/domain/notifyDetail/NotifyDetail.java",
    "content": "package cn.com.tx.domain.notifyDetail;\r\n\r\nimport java.io.Serializable;\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.List;\r\n\r\npublic class NotifyDetail implements Serializable {\r\n\t\r\n\t/**\r\n\t * \r\n\t */\r\n\tprivate static final long serialVersionUID = 8760630447394929224L;\r\n\r\n\tprivate int detailId;\r\n\r\n\tprivate int hotId;\r\n\r\n\tprivate int templateId;\r\n\r\n\tprivate int srcId;\r\n\r\n\tprivate int destId;\r\n\r\n\tprivate boolean display;\r\n\r\n\tprivate Date foundTime;\r\n\t\r\n\tprivate List<String> args = new ArrayList<String>(); \r\n\t\r\n\r\n\tpublic int getDetailId() {\r\n\t\treturn detailId;\r\n\t}\r\n\r\n\tpublic void setDetailId(int detailId) {\r\n\t\tthis.detailId = detailId;\r\n\t}\r\n\r\n\tpublic int getHotId() {\r\n\t\treturn hotId;\r\n\t}\r\n\r\n\tpublic void setHotId(int hotId) {\r\n\t\tthis.hotId = hotId;\r\n\t}\r\n\r\n\tpublic int getTemplateId() {\r\n\t\treturn templateId;\r\n\t}\r\n\r\n\tpublic List<String> getArgs() {\r\n\t\treturn args;\r\n\t}\r\n\r\n\tpublic void setArgs(List<String> args) {\r\n\t\tthis.args = args;\r\n\t}\r\n\r\n\tpublic void setTemplateId(int templateId) {\r\n\t\tthis.templateId = templateId;\r\n\t}\r\n\r\n\tpublic int getSrcId() {\r\n\t\treturn srcId;\r\n\t}\r\n\r\n\tpublic void setSrcId(int srcId) {\r\n\t\tthis.srcId = srcId;\r\n\t}\r\n\r\n\tpublic int getDestId() {\r\n\t\treturn destId;\r\n\t}\r\n\r\n\tpublic void setDestId(int destId) {\r\n\t\tthis.destId = destId;\r\n\t}\r\n\r\n\tpublic boolean isDisplay() {\r\n\t\treturn display;\r\n\t}\r\n\r\n\tpublic void setDisplay(boolean display) {\r\n\t\tthis.display = display;\r\n\t}\r\n\r\n\tpublic Date getFoundTime() {\r\n\t\treturn foundTime;\r\n\t}\r\n\r\n\tpublic void setFoundTime(Date foundTime) {\r\n\t\tthis.foundTime = foundTime;\r\n\t}\r\n\r\n\t/*\r\n\t * (non-Javadoc)\r\n\t * \r\n\t * @see java.lang.Object#hashCode()\r\n\t */\r\n\t@Override\r\n\tpublic int hashCode() {\r\n\t\tint hasCode = 0;\r\n\t\tif (this.detailId != 0) {\r\n\t\t\thasCode += this.detailId;\r\n\t\t}\r\n\t\treturn hasCode;\r\n\t}\r\n\r\n\t/*\r\n\t * (non-Javadoc)\r\n\t * \r\n\t * @see java.lang.Object#equals(java.lang.Object)\r\n\t */\r\n\t@Override\r\n\tpublic boolean equals(Object obj) {\r\n\t\tif (obj == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (!(obj instanceof NotifyDetail)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn this.hashCode() == obj.hashCode();\r\n\t}\r\n\t\r\n\t\r\n}\r\n"
  },
  {
    "path": "src/test/java/cn/com/tx/domain/pagination/Pagination.java",
    "content": "package cn.com.tx.domain.pagination;\r\n\r\nimport java.io.Serializable;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\npublic class Pagination<T> implements Serializable {\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tprivate static final long serialVersionUID = 5038839734218582220L;\r\n\r\n\tprivate int totalResult = 0;\r\n\r\n\tprivate int totalPage = 1;\r\n\r\n\tprivate int pageIndex = 1;\r\n\r\n\tprivate int maxLength = 5;\r\n\r\n\tprivate int fromIndex = 0;\r\n\r\n\tprivate int toIndex = 0;\r\n\r\n\tprivate List<T> list = new ArrayList<T>();\r\n\t\r\n\tpublic Pagination(){\r\n\t\t\r\n\t}\r\n\t\r\n\t\r\n\r\n\tpublic void setTotalResult(int totalResult) {\r\n\t\tthis.totalResult = totalResult;\r\n\t}\r\n\r\n\r\n\r\n\tpublic void setTotalPage(int totalPage) {\r\n\t\tthis.totalPage = totalPage;\r\n\t}\r\n\r\n\r\n\r\n\tpublic void setPageIndex(int pageIndex) {\r\n\t\tthis.pageIndex = pageIndex;\r\n\t}\r\n\r\n\r\n\r\n\tpublic void setMaxLength(int maxLength) {\r\n\t\tthis.maxLength = maxLength;\r\n\t}\r\n\r\n\r\n\r\n\tpublic void setFromIndex(int fromIndex) {\r\n\t\tthis.fromIndex = fromIndex;\r\n\t}\r\n\r\n\r\n\r\n\tpublic void setToIndex(int toIndex) {\r\n\t\tthis.toIndex = toIndex;\r\n\t}\r\n\r\n\r\n\r\n\tpublic int getFromIndex() {\r\n\t\treturn this.fromIndex;\r\n\t}\r\n\r\n\tpublic int getToIndex() {\r\n\t\treturn this.toIndex;\r\n\t}\r\n\r\n\tpublic int getNextPage() {\r\n\t\tif (this.pageIndex < this.totalPage) {\r\n\t\t\treturn this.pageIndex + 1;\r\n\t\t} else {\r\n\t\t\treturn this.pageIndex;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic int getPrevPage() {\r\n\t\tif (this.pageIndex > 1) {\r\n\t\t\treturn this.pageIndex - 1;\r\n\t\t}\r\n\t\treturn this.pageIndex;\r\n\t}\r\n\r\n\t/**\r\n\t * @return the currentPage\r\n\t */\r\n\tpublic int getPageIndex() {\r\n\t\treturn pageIndex;\r\n\t}\r\n\r\n\t/**\r\n\t * @return the list\r\n\t */\r\n\tpublic List<T> getList() {\r\n\t\tif (list == null) {\r\n\t\t\treturn new ArrayList<T>();\r\n\t\t}\r\n\t\treturn new ArrayList<T>(list);\r\n\t}\r\n\r\n\t/**\r\n\t * @return the totalPage\r\n\t */\r\n\tpublic int getTotalPage() {\r\n\t\treturn totalPage;\r\n\t}\r\n\r\n\t/**\r\n\t * @return the totalRecord\r\n\t */\r\n\tpublic int getTotalResult() {\r\n\t\treturn totalResult;\r\n\t}\r\n\r\n\tpublic int getMaxLength() {\r\n\t\treturn maxLength;\r\n\t}\r\n\r\n\t/**\r\n\t * \r\n\t * @param totalResult\r\n\t * @param pageIndex\r\n\t * @param maxLength\r\n\t */\r\n\tpublic Pagination(int totalResult, int pageIndex, int maxLength) {\r\n\t\tif (maxLength > 0) {\r\n\t\t\tthis.maxLength = maxLength;\r\n\t\t}\r\n\t\tif (totalResult > 0) {\r\n\t\t\tthis.totalResult = totalResult;\r\n\t\t}\r\n\t\tif (pageIndex > 0) {\r\n\t\t\tthis.pageIndex = pageIndex;\r\n\t\t}\r\n\t\tthis.totalPage = this.totalResult / this.maxLength;\r\n\t\tif (this.totalResult % this.maxLength != 0) {\r\n\t\t\tthis.totalPage = this.totalPage + 1;\r\n\t\t}\r\n\t\tif (this.totalPage == 0) {\r\n\t\t\tthis.totalPage = 1;\r\n\t\t}\r\n\t\tif (this.pageIndex > this.totalPage) {\r\n\t\t\tthis.pageIndex = this.totalPage;\r\n\t\t}\r\n\t\tif (this.pageIndex <= 0) {\r\n\t\t\tthis.pageIndex = 1;\r\n\t\t}\r\n\t\tthis.fromIndex = (this.pageIndex - 1) * maxLength;\r\n\t\tthis.toIndex = this.fromIndex + maxLength;\r\n\t\tif (this.toIndex < 0) {\r\n\t\t\tthis.toIndex = fromIndex;\r\n\t\t}\r\n\t\tif (this.toIndex > this.totalResult) {\r\n\t\t\tthis.toIndex = this.totalResult;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * @param datas\r\n\t *            the datas to set\r\n\t */\r\n\tpublic void setList(List<T> list) {\r\n\t\tthis.list = list;\r\n\t}\r\n\r\n\t/*\r\n\t * (non-Javadoc)\r\n\t * \r\n\t * @see java.lang.Object#toString()\r\n\t */\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\tStringBuffer sb = new StringBuffer();\r\n\t\tsb.append(\"Pagination:\\r\\n\");\r\n\t\tsb.append(\"\\tpageIndex\\t\" + this.pageIndex + \"\\r\\n\");\r\n\t\tsb.append(\"\\ttotalPage\\t\" + this.totalPage + \"\\r\\n\");\r\n\t\tsb.append(\"\\tmaxLength\\t\" + this.maxLength + \"\\r\\n\");\r\n\t\tsb.append(\"\\ttotalResult\\t\" + this.totalResult + \"\\r\\n\");\r\n\t\tfor (T t : list) {\r\n\t\t\tsb.append(t + \"\\r\\n\");\r\n\t\t}\r\n\t\treturn sb.toString();\r\n\t}\r\n\t\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/china/bolt/biz/daili/merchants/vo/MerchantsVO.java",
    "content": "package com.alibaba.china.bolt.biz.daili.merchants.vo;\n\nimport java.io.Serializable;\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\n\nimport org.apache.commons.lang.builder.ToStringBuilder;\n\nimport com.alibaba.fastjson.JSON;\n\n\n/**\n * 商家基本信息\n * @author hongwei.quhw\n *\n */\npublic class MerchantsVO implements Serializable {\n\t/**\n     * \n     */\n    private static final long serialVersionUID = 1L;\n    \n    /** -----------------实体商家信息----------**/\n\t//店铺类型code\n\tprivate String type;\n\t//店铺类型name\n    private String typename;\n\t//招商区域code\n\tprivate String[] region;\n\t//招商区域name\n\tprivate String[] regionname;\n\t//最小面积\n\tprivate Integer minarea = -1;\n\t//最大面积\n\tprivate Integer maxarea;\n\t//启动资金\n\tprivate Long initialcapital;\n\t//加盟保证金\n\tprivate Long cashdeposit;\n\t/** -----------------网络商家信息----------**/\n\t//招商渠道搜索索引名\n\tprivate String[] shoptype;\n\t//招商渠道搜索名称\n    private String[] shoptypename;\n\t//主营类目\n\tprivate String[] categoryids;\n\t//主营类目名称\n\tprivate String[] categoryidsname;\n\t\n\t/** -----------------商家共有信息----------**/\n\t//MemberId\n\tprivate String memberid;\n\t//商家类型\n\tprivate int merchantstype;\n\t//是否已删除\n\tprivate boolean isdelete;\n\t//招商截止日期\n\tprivate Date expirationdate;\n\t//旺旺\n\tprivate String wangwang;\n\t//联系电话\n\tprivate String tel;\n\t//是否品牌 \n\tprivate boolean hasbrand;\n\t//（30天）加盟人数 \n\tprivate int joincount;\n\t//公司旺铺地址\n    private String winportdomain;\n\t/** ----------------下面是品牌库信息----------------  **/\n\t//logo/商标 图片URL\n\tprivate String brandlogourl;\n\t//品牌名称\n\tprivate String brandname;\n\t//创立时间\n\tprivate Date brandfoundtime;\n\t//详情\n\tprivate String brandintroduction;\n\t//证书  图片URL \n\tprivate String brandcertificateurl; \n\t\n\t/** ----------------下面是公司库信息----------------  **/\n\t//公司名\n\tprivate String companyname;\n\t//成立年份\n\tprivate String companyestablishedyear;\n\t//注册资本\n\tprivate Double companyregcapital;\n\t//注册地\n\tprivate String companyfoundedplace;\n\t//简介\n    private String companyintroduction;\n    \n\t/** ----------------下面是DW交易信息----------------  **/\n\t//最近30天代理商支付订单金额（单位为分）\n\tprivate Double payordamt30;\n\t//最近30天代理商支付订单数\n\tprivate long payordcnt30;\n\t//最近30天支付订单代理商买家数\n\tprivate long payordbuyercnt30;\n\t//最近90天旺铺回头率\n\tprivate Double returnordrate90;\n\t//截至当日成功申请代理商人数\n\tprivate int membercnttd;\n\t//主营一级类目ID（主营top1、top2、top3一级类目以char(6)拼装成一串，需要解析出top1一级类目即可）example:\"7\"\n\tprivate String stdcategoryid1;\n\t//主营二级类目ID（主营top1、top2、top3二级类目以char(6)拼装成一串，需要解析出top1二级类目即可）example:\"7\"\n\tprivate String stdcategoryid2;\n\t//主营一级类目ID名称 example:\"服装\"\n    private String stdcategoryname1;\n    //主营二级类目ID名称 example:\"男装\"\n    private String stdcategoryname2;\n    \n    /** ----------------下面是offer信息----------------  **/\n    //offer缩略图url地址\n    private String[]  summimageurilist;\n    //offer链接url地址\n    private String[] detailurl;\n\t\n\t@Override\n\tpublic String toString() {\n\t\treturn ToStringBuilder.reflectionToString(this);\n\t}\n\n    public String getType() {\n        return type;\n    }\n\n    public void setType(String type) {\n        this.type = type;\n    }\n\n    public String getTypename() {\n        return typename;\n    }\n\n    public void setTypename(String typename) {\n        this.typename = typename;\n    }\n\n    public String[] getRegion() {\n        return region;\n    }\n\n    public void setRegionArray(String[] region) {\n        this.region = region;\n    }\n\n    public String[] getRegionname() {\n        return regionname;\n    }\n\n    public void setRegionnameArray(String[] regionname) {\n        this.regionname = regionname;\n    }\n\n    public Integer getMinarea() {\n\t\treturn minarea;\n\t}\n\n\tpublic void setMinarea(Integer minarea) {\n\t\tif (null == minarea) {\n\t\t\tminarea = -1; //opensearch 搜索空问题 ，设置默认值\n\t\t}\n\t\tthis.minarea = minarea;\n\t}\n\n\tpublic Integer getMaxarea() {\n\t\treturn maxarea;\n\t}\n\n\tpublic void setMaxarea(Integer maxarea) {\n\t\tthis.maxarea = maxarea;\n\t}\n\n\tpublic Long getInitialcapital() {\n        return initialcapital;\n    }\n\n    public void setInitialcapital(Long initialcapital) {\n        this.initialcapital = initialcapital;\n    }\n\n    public Long getCashdeposit() {\n        return cashdeposit;\n    }\n\n    public void setCashdeposit(Long cashdeposit) {\n        this.cashdeposit = cashdeposit;\n    }\n\n    public String[] getShoptype() {\n        return shoptype;\n    }\n\n    public void setShoptypeArray(String[] shoptype) {\n        this.shoptype = shoptype;\n    }\n\n    public String[] getShoptypename() {\n        return shoptypename;\n    }\n\n    public void setShoptypenameArray(String[] shoptypename) {\n        this.shoptypename = shoptypename;\n    }\n\n    public String[] getCategoryids() {\n        return categoryids;\n    }\n\n    public void setCategoryidsArray(String[] categoryids) {\n        this.categoryids = categoryids;\n    }\n\n    public String[] getCategoryidsname() {\n        return categoryidsname;\n    }\n\n    public void setCategoryidsnameArray(String[] categoryidsname) {\n        this.categoryidsname = categoryidsname;\n    }\n\n    public String getMemberid() {\n        return memberid;\n    }\n\n    public void setMemberid(String memberid) {\n        this.memberid = memberid;\n    }\n\n    public int getMerchantstype() {\n        return merchantstype;\n    }\n\n    public void setMerchantstype(int merchantstype) {\n        this.merchantstype = merchantstype;\n    }\n\n    public boolean isIsdelete() {\n        return isdelete;\n    }\n\n    public void setIsdelete(boolean isdelete) {\n        this.isdelete = isdelete;\n    }\n\n    public Date getExpirationdate() {\n        return expirationdate;\n    }\n\n    public void setExpirationdate(Date expirationdate) {\n        this.expirationdate = expirationdate;\n    }\n\n    public String getWangwang() {\n        return wangwang;\n    }\n\n    public void setWangwang(String wangwang) {\n        this.wangwang = wangwang;\n    }\n\n    public String getTel() {\n        return tel;\n    }\n\n    public void setTel(String tel) {\n        this.tel = tel;\n    }\n\n    public boolean isHasbrand() {\n        return hasbrand;\n    }\n\n    public void setHasbrand(boolean hasbrand) {\n        this.hasbrand = hasbrand;\n    }\n\n    public int getJoincount() {\n        return joincount;\n    }\n\n    public void setJoincount(int joincount) {\n        this.joincount = joincount;\n    }\n\n    public String getWinportdomain() {\n        return winportdomain;\n    }\n\n    public void setWinportdomain(String winportdomain) {\n        this.winportdomain = winportdomain;\n    }\n\n    public String getBrandlogourl() {\n        return brandlogourl;\n    }\n\n    public void setBrandlogourl(String brandlogourl) {\n        this.brandlogourl = brandlogourl;\n    }\n\n    public String getBrandname() {\n        return brandname;\n    }\n\n    public void setBrandname(String brandname) {\n        this.brandname = brandname;\n    }\n\n    public Date getBrandfoundtime() {\n        return brandfoundtime;\n    }\n\n    public void setBrandfoundtime(Date brandfoundtime) {\n        this.brandfoundtime = brandfoundtime;\n    }\n\n    public String getBrandintroduction() {\n        return brandintroduction;\n    }\n\n    public void setBrandintroduction(String brandintroduction) {\n        this.brandintroduction = brandintroduction;\n    }\n\n    public String getBrandcertificateurl() {\n        return brandcertificateurl;\n    }\n\n    public void setBrandcertificateurl(String brandcertificateurl) {\n        this.brandcertificateurl = brandcertificateurl;\n    }\n\n    public String getCompanyname() {\n        return companyname;\n    }\n\n    public void setCompanyname(String companyname) {\n        this.companyname = companyname;\n    }\n\n    public String getCompanyestablishedyear() {\n        return companyestablishedyear;\n    }\n\n    public void setCompanyestablishedyear(String companyestablishedyear) {\n        this.companyestablishedyear = companyestablishedyear;\n    }\n\n    public Double getCompanyregcapital() {\n        return companyregcapital;\n    }\n\n    public void setCompanyregcapital(Double companyregcapital) {\n        this.companyregcapital = companyregcapital;\n    }\n\n    public String getCompanyfoundedplace() {\n        return companyfoundedplace;\n    }\n\n    public void setCompanyfoundedplace(String companyfoundedplace) {\n        this.companyfoundedplace = companyfoundedplace;\n    }\n\n    public String getCompanyintroduction() {\n        return companyintroduction;\n    }\n\n    public void setCompanyintroduction(String companyintroduction) {\n        this.companyintroduction = companyintroduction;\n    }\n\n    public String[] getSummimageurilist() {\n        return summimageurilist;\n    }\n\n    public void setSummimageurilistArray(String[] summimageuriList) {\n        this.summimageurilist = summimageuriList;\n    }\n\n    public String[] getDetailurl() {\n        return detailurl;\n    }\n    \n    public void setDetailurlArray(String[] detailurl) {\n        this.detailurl = detailurl;\n    }\n    \n    public String getExpirationdateForString(){\n        SimpleDateFormat dateFormat = new SimpleDateFormat(\"yyyy年MM月dd日\", JSON.defaultLocale);\n        dateFormat.setTimeZone(JSON.defaultTimeZone);\n        return dateFormat.format(this.expirationdate);\n     }\n\n    /**\n     * 为opensearch特供\n     * @param region\n     */\n    public void setRegion(String region) {\n        this.region = region== null ?new String[0]:region.split(\"\\\\t\");\n    }\n\n    public void setRegionname(String regionname) {\n        this.regionname = regionname== null ?new String[0]:regionname.split(\"\\\\t\");;\n    }\n\n    public void setShoptype(String shoptype) {\n        this.shoptype = shoptype== null ?new String[0]:shoptype.split(\"\\\\t\");;\n    }\n\n    public void setShoptypename(String shoptypename) {\n        this.shoptypename = shoptypename== null ?new String[0]:shoptypename.split(\"\\\\t\");;\n    }\n\n    public void setCategoryids(String categoryids) {\n        this.categoryids = categoryids== null ?new String[0]:categoryids.split(\"\\\\t\");;\n    }\n\n    public void setCategoryidsname(String categoryidsname) {\n        this.categoryidsname = categoryidsname== null ?new String[0]:categoryidsname.split(\"\\\\t\");;\n    }\n\n    public void setSummimageurilist(String summimageuriList) {\n        this.summimageurilist = summimageuriList== null ?new String[0]:summimageuriList.split(\"\\\\t\");;\n    }\n\n    public void setDetailurl(String detailurl) {\n        this.detailurl = detailurl== null ?new String[0]:detailurl.split(\"\\\\t\");;\n    }\n\n    /**\n     * @return the payordamt30\n     */\n    public Double getPayordamt30() {\n        return payordamt30;\n    }\n\n    /**\n     * @param payordamt30 the payordamt30 to set\n     */\n    public void setPayordamt30(Double payordamt30) {\n        this.payordamt30 = payordamt30;\n    }\n\n    /**\n     * @return the payordcnt30\n     */\n    public long getPayordcnt30() {\n        return payordcnt30;\n    }\n\n    /**\n     * @param payordcnt30 the payordcnt30 to set\n     */\n    public void setPayordcnt30(long payordcnt30) {\n        this.payordcnt30 = payordcnt30;\n    }\n\n    /**\n     * @return the payordbuyercnt30\n     */\n    public long getPayordbuyercnt30() {\n        return payordbuyercnt30;\n    }\n\n    /**\n     * @param payordbuyercnt30 the payordbuyercnt30 to set\n     */\n    public void setPayordbuyercnt30(long payordbuyercnt30) {\n        this.payordbuyercnt30 = payordbuyercnt30;\n    }\n\n    /**\n     * @return the returnordrate90\n     */\n    public Double getReturnordrate90() {\n        return returnordrate90;\n    }\n\n    /**\n     * @param returnordrate90 the returnordrate90 to set\n     */\n    public void setReturnordrate90(Double returnordrate90) {\n        this.returnordrate90 = returnordrate90;\n    }\n\n    /**\n     * @return the membercnttd\n     */\n    public int getMembercnttd() {\n        return membercnttd;\n    }\n\n    /**\n     * @param membercnttd the membercnttd to set\n     */\n    public void setMembercnttd(int membercnttd) {\n        this.membercnttd = membercnttd;\n    }\n\n    public String getStdcategoryid1() {\n        return stdcategoryid1;\n    }\n\n    public void setStdcategoryid1(String stdcategoryid1) {\n        this.stdcategoryid1 = stdcategoryid1;\n    }\n\n    public String getStdcategoryid2() {\n        return stdcategoryid2;\n    }\n\n    public void setStdcategoryid2(String stdcategoryid2) {\n        this.stdcategoryid2 = stdcategoryid2;\n    }\n\n    public String getStdcategoryname1() {\n        return stdcategoryname1;\n    }\n\n    public void setStdcategoryname1(String stdcategoryname1) {\n        this.stdcategoryname1 = stdcategoryname1;\n    }\n\n    public String getStdcategoryname2() {\n        return stdcategoryname2;\n    }\n\n    public void setStdcategoryname2(String stdcategoryname2) {\n        this.stdcategoryname2 = stdcategoryname2;\n    }\n\n  \n\t\n}"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/JSONPathTest.java",
    "content": "/*\n * Copyright 2018 Diffblue Limited\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * \n *    http://www.apache.org/licenses/LICENSE-2.0\n * \n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage com.alibaba.fastjson;\n\nimport com.alibaba.fastjson.JSONPath;\nimport com.diffblue.deeptestutils.Reflector;\nimport org.junit.Assert;\nimport org.junit.Rule;\nimport org.junit.Test;\nimport org.junit.rules.ExpectedException;\n\nimport java.lang.reflect.Array;\nimport java.lang.reflect.Constructor;\nimport java.lang.reflect.InvocationTargetException;\nimport java.lang.reflect.Method;\n\n\npublic class JSONPathTest {\n\n  @Rule\n  public ExpectedException thrown = ExpectedException.none();\n\n  /* testedClasses: JSONPath */\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 2547 branch to line 2551\n   *  - conditional line 2551 branch to line 2551\n   *  - conditional line 2551 branch to line 2552\n   */\n  @Test\n  public void eq1() throws Throwable {\n    // Arrange\n    Object a = -1;\n    Object b = null;\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.JSONPath\");\n    Method m = c.getDeclaredMethod(\"eq\", Reflector.forName(\"java.lang.Object\"), Reflector.forName(\"java.lang.Object\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(null, a, b);\n    // Assert result\n    Assert.assertEquals(false, retval);\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 2547 branch to line 2548\n   */\n  @Test\n  public void eq2() throws Throwable {\n    // Arrange\n    Object a = null;\n    Object b = null;\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.JSONPath\");\n    Method m = c.getDeclaredMethod(\"eq\", Reflector.forName(\"java.lang.Object\"), Reflector.forName(\"java.lang.Object\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(null, a, b);\n    // Assert result\n    Assert.assertEquals(true, retval);\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 1434 branch to line 1434\n   */\n  @Test\n  public void isDigitFirst1() throws Throwable {\n    // Arrange\n    char ch = '2';\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.JSONPath$JSONPathParser\");\n    Method m = c.getDeclaredMethod(\"isDigitFirst\", Reflector.forName(\"char\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(null, ch);\n    // Assert result\n    Assert.assertEquals(true, retval);\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 1434 branch to line 1434\n   */\n  @Test\n  public void isDigitFirst2() throws Throwable {\n    // Arrange\n    char ch = ':';\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.JSONPath$JSONPathParser\");\n    Method m = c.getDeclaredMethod(\"isDigitFirst\", Reflector.forName(\"char\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(null, ch);\n    // Assert result\n    Assert.assertEquals(false, retval);\n  }\n\n   /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 1434 branch to line 1434\n   */\n  @Test\n  public void isDigitFirst3() throws Throwable {\n    // Arrange\n    char ch = '\\u0000';\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.JSONPath$JSONPathParser\");\n    Method m = c.getDeclaredMethod(\"isDigitFirst\", Reflector.forName(\"char\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(null, ch);\n    // Assert result\n    Assert.assertEquals(false, retval);\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 674 branch to line 674\n   */\n  @Test\n  public void isEOF1() throws Throwable {\n    // Arrange\n    Object objectUnderTest = Reflector.getInstance(\"com.alibaba.fastjson.JSONPath$JSONPathParser\");\n    Reflector.setField(objectUnderTest, \"path\", \"\");\n    Reflector.setField(objectUnderTest, \"pos\", -2147483647);\n    Reflector.setField(objectUnderTest, \"level\", 0);\n    Reflector.setField(objectUnderTest, \"ch\", '\\u0000');\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.JSONPath$JSONPathParser\");\n    Method m = c.getDeclaredMethod(\"isEOF\");\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(objectUnderTest);\n    // Assert result\n    Assert.assertEquals(false, retval);\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 674 branch to line 674\n   */\n  @Test\n  public void isEOF2() throws Throwable {\n    // Arrange\n    Object objectUnderTest = Reflector.getInstance(\"com.alibaba.fastjson.JSONPath$JSONPathParser\");\n    Reflector.setField(objectUnderTest, \"path\", \"!\");\n    Reflector.setField(objectUnderTest, \"pos\", 1);\n    Reflector.setField(objectUnderTest, \"level\", 0);\n    Reflector.setField(objectUnderTest, \"ch\", '\\u0000');\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.JSONPath$JSONPathParser\");\n    Method m = c.getDeclaredMethod(\"isEOF\");\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(objectUnderTest);\n    // Assert result\n    Assert.assertEquals(true, retval);\n  }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/codegen/ClassGen.java",
    "content": "package com.alibaba.fastjson.codegen;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\n\npublic abstract class ClassGen {\n\n    protected Class<?>   clazz;\n    protected Type       type;\n    protected Appendable out;\n\n    private String       indent      = \"\\t\";\n    private int          indentCount = 0;\n\n    public ClassGen(Class<?> clazz, Appendable out){\n        this(clazz, null, out);\n    }\n\n    public ClassGen(Class<?> clazz, Type type, Appendable out){\n        this.clazz = clazz;\n        this.type = type;\n        this.out = out;\n    }\n\n    public abstract void gen() throws IOException;\n\n    protected void println() throws IOException {\n        out.append(\"\\n\");\n        printIndent();\n    }\n\n    protected void println(String text) throws IOException {\n        out.append(text);\n        out.append(\"\\n\");\n        printIndent();\n    }\n\n    protected void print(String text) throws IOException {\n        out.append(text);\n    }\n\n    protected void printPackage() throws IOException {\n        print(\"package \");\n        print(clazz.getPackage().getName());\n        println(\";\");\n    }\n\n    protected void beginClass(String className) throws IOException {\n        print(\"public class \");\n        print(className);\n        print(\" implements ObjectDeserializer {\");\n        incrementIndent();\n        println();\n    }\n\n    protected void endClass() throws IOException {\n        decrementIndent();\n        println();\n        print(\"}\");\n        println();\n    }\n\n    protected void genField(String name, Class<?> feildClass) throws IOException {\n        if (feildClass == char[].class) {\n            print(\"char[]\");\n        }\n\n        print(\" \");\n        print(name);\n        println(\";\");\n    }\n\n    protected void beginInit(String className) throws IOException {\n        print(\"public \");\n        print(className);\n        println(\" () {\");\n        incrementIndent();\n    }\n\n    protected void endInit() throws IOException {\n        decrementIndent();\n        print(\"}\");\n        println();\n    }\n    \n    public void decrementIndent() {\n        this.indentCount -= 1;\n    }\n\n    public void incrementIndent() {\n        this.indentCount += 1;\n    }\n\n    public void printIndent() throws IOException {\n        for (int i = 0; i < this.indentCount; ++i) {\n            print(this.indent);\n        }\n    }\n    \n    protected void printClassName(Class<?> clazz) throws IOException {\n        String name = clazz.getName();\n        name = name.replace('$', '.');\n        print(name);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/codegen/DeserializerGen.java",
    "content": "package com.alibaba.fastjson.codegen;\n\nimport java.io.IOException;\nimport java.lang.reflect.Constructor;\nimport java.lang.reflect.Modifier;\nimport java.lang.reflect.ParameterizedType;\nimport java.lang.reflect.Type;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Collections;\nimport java.util.HashSet;\nimport java.util.LinkedList;\nimport java.util.List;\nimport java.util.TreeSet;\n\nimport com.alibaba.fastjson.util.JavaBeanInfo;\nimport com.alibaba.fastjson.util.FieldInfo;\nimport com.alibaba.fastjson.util.TypeUtils;\n\npublic class DeserializerGen extends ClassGen {\n\n    private JavaBeanInfo beanInfo;\n    private String              genClassName;\n\n    public DeserializerGen(Class<?> clazz, Appendable out){\n        super(clazz, out);\n    }\n\n    @Override\n    public void gen() throws IOException {\n        beanInfo = JavaBeanInfo.build(clazz, type, null);\n        genClassName = clazz.getSimpleName() + \"GenDecoder\";\n\n        print(\"package \");\n        print(clazz.getPackage().getName());\n        println(\";\");\n        println();\n\n        println(\"import java.lang.reflect.Type;\");\n        println();\n\n        println(\"import com.alibaba.fastjson.parser.DefaultJSONParser;\");\n        println(\"import com.alibaba.fastjson.parser.DefaultJSONParser.ResolveTask;\");\n        println(\"import com.alibaba.fastjson.parser.ParserConfig;\");\n        println(\"import com.alibaba.fastjson.parser.Feature;\");\n        println(\"import com.alibaba.fastjson.parser.JSONLexerBase;\");\n        println(\"import com.alibaba.fastjson.parser.JSONToken;\");\n        println(\"import com.alibaba.fastjson.parser.ParseContext;\");\n        println(\"import com.alibaba.fastjson.parser.deserializer.ASMJavaBeanDeserializer;\");\n        println(\"import com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\");\n        println();\n\n        print(\"public class \");\n        print(genClassName);\n        print(\" extends ASMJavaBeanDeserializer implements ObjectDeserializer {\");\n        incrementIndent();\n        println();\n\n        genConstructor();\n\n        genCreateInstance();\n\n        genDeserialze();\n\n        endClass();\n    }\n\n    protected void genCreateInstance() throws IOException {\n        println();\n        print(\"public Object createInstance(DefaultJSONParser parser, Type type) {\");\n        incrementIndent();\n        println();\n\n        print(\"return new \");\n        print(clazz.getSimpleName());\n        print(\"();\");\n        println();\n\n        decrementIndent();\n        println();\n        print(\"}\");\n    }\n\n    protected void genDeserialze() throws IOException {\n        if (beanInfo.fields.length == 0) {\n            return;\n        }\n\n        for (FieldInfo fieldInfo : beanInfo.fields) {\n            Class<?> fieldClass = fieldInfo.fieldClass;\n            Type fieldType = fieldInfo.fieldType;\n\n            if (fieldClass == char.class) {\n                return;\n            }\n\n            if (Collection.class.isAssignableFrom(fieldClass)) {\n                if (fieldType instanceof ParameterizedType) {\n                    Type itemType = ((ParameterizedType) fieldType).getActualTypeArguments()[0];\n                    if (itemType instanceof Class) {\n                        continue;\n                    } else {\n                        return;\n                    }\n                } else {\n                    return;\n                }\n            }\n        }\n\n        FieldInfo[] fieldList = beanInfo.sortedFields;\n\n        println();\n        print(\"public Object deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\");\n        incrementIndent();\n        println();\n\n        println(\"JSONLexerBase lexer = (JSONLexerBase) parser.getLexer();\");\n        println();\n\n        println(\"if (!lexer.isEnabled(Feature.SortFeidFastMatch)) {\");\n        println(\"\\treturn super.deserialze(parser, type, fieldName);\");\n        println(\"}\");\n\n        println();\n\n        println(\"if (isSupportArrayToBean(lexer)) {\");\n        println(\"\\t// deserialzeArrayMapping\");\n        println(\"}\");\n\n        println();\n        println(\"if (lexer.scanType(\\\"Department\\\") == JSONLexerBase.NOT_MATCH) {\");\n        println(\"\\treturn super.deserialze(parser, type, fieldName);\");\n        println(\"}\");\n\n        println();\n\n        println(\"ParseContext mark_context = parser.getContext();\");\n        println(\"int matchedCount = 0;\");\n\n        print(clazz.getSimpleName());\n        print(\" instance = \");\n        Constructor<?> defaultConstructor = beanInfo.defaultConstructor;\n        if (Modifier.isPublic(defaultConstructor.getModifiers())) {\n            print(\"new \");\n            print(clazz.getSimpleName());\n            println(\"();\");\n        } else {\n            print(\"(\");\n            print(clazz.getSimpleName());\n            print(\") createInstance(parser);\");\n        }\n\n        println();\n\n        println(\"ParseContext context = parser.getContext();\");\n        println(\"ParseContext childContext = parser.setContext(context, instance, fieldName);\");\n\n        println();\n\n        println(\"if (lexer.matchStat == JSONLexerBase.END) {\");\n        println(\"\\treturn instance;\");\n        println(\"}\");\n\n        println();\n\n        println(\"int matchStat = 0;\");\n\n        int fieldListSize = fieldList.length;\n        for (int i = 0; i < fieldListSize; i += 32) {\n            print(\"int _asm_flag_\");\n            print(Integer.toString(i / 32));\n            println(\" = 0;\");\n        }\n\n        for (int i = 0; i < fieldListSize; ++i) {\n            FieldInfo fieldInfo = fieldList[i];\n            Class<?> fieldClass = fieldInfo.fieldClass;\n\n            if (fieldClass == boolean.class) {\n                print(\"boolean \");\n                printFieldVarName(fieldInfo);\n                println(\" = false;\");\n            } else if (fieldClass == byte.class //\n                       || fieldClass == short.class //\n                       || fieldClass == int.class //\n                       || fieldClass == long.class //\n                       || fieldClass == float.class //\n                       || fieldClass == double.class //\n            ) {\n                print(fieldClass.getSimpleName());\n                print(\" \");\n                printFieldVarName(fieldInfo);\n                println(\" = 0;\");\n            } else {\n                if (fieldClass == String.class) {\n                    print(\"String \");\n                    printFieldVarName(fieldInfo);\n                    println(\";\");\n\n                    println(\"if (lexer.isEnabled(Feature.InitStringFieldAsEmpty)) {\");\n                    print(\"\\t\");\n                    printFieldVarName(fieldInfo);\n                    println(\" = lexer.stringDefaultValue();\");\n                    print(\"\\t\");\n                    genSetFlag(i);\n                    println(\"} else {\");\n                    print(\"\\t\");\n                    printFieldVarName(fieldInfo);\n                    println(\" = null;\");\n                    println(\"}\");\n                } else {\n                    printClassName(fieldClass);\n                    print(\" \");\n                    printFieldVarName(fieldInfo);\n                    print(\" = null;\");\n                    println();\n                }\n            }\n        }\n\n        println(\"boolean endFlag = false, restFlag = false;\");\n        println();\n\n        for (int i = 0; i < fieldListSize; ++i) {\n            print(\"if ((!endFlag) && (!restFlag)) {\");\n            incrementIndent();\n            println();\n\n            FieldInfo fieldInfo = fieldList[i];\n            Class<?> fieldClass = fieldInfo.fieldClass;\n            Type fieldType = fieldInfo.fieldType;\n\n            if (fieldClass == boolean.class) {\n                printFieldVarName(fieldInfo);\n                print(\" = lexer.scanFieldBoolean(\");\n                printFieldPrefix(fieldInfo);\n                println(\");\");\n            } else if (fieldClass == byte.class || fieldClass == short.class || fieldClass == int.class) {\n                printFieldVarName(fieldInfo);\n                print(\" = lexer.scanFieldInt(\");\n                printFieldPrefix(fieldInfo);\n                println(\");\");\n            } else if (fieldClass == long.class) {\n                printFieldVarName(fieldInfo);\n                print(\" = lexer.scanFieldLong(\");\n                printFieldPrefix(fieldInfo);\n                println(\");\");\n            } else if (fieldClass == float.class) {\n                printFieldVarName(fieldInfo);\n                print(\" = lexer.scanFieldFloat(\");\n                printFieldPrefix(fieldInfo);\n                println(\");\");\n            } else if (fieldClass == double.class) {\n                printFieldVarName(fieldInfo);\n                print(\" = lexer.scanFieldDouble(\");\n                printFieldPrefix(fieldInfo);\n                println(\");\");\n            } else if (fieldClass == String.class) {\n                printFieldVarName(fieldInfo);\n                print(\" = lexer.scanFieldString(\");\n                printFieldPrefix(fieldInfo);\n                println(\");\");\n            } else if (fieldClass.isEnum()) {\n                print(\"String \");\n                printFieldVarEnumName(fieldInfo);\n\n                print(\" = lexer.scanFieldSymbol(\");\n                printFieldPrefix(fieldInfo);\n                println(\", parser.getSymbolTable());\");\n\n                print(\"if (\");\n                printFieldVarEnumName(fieldInfo);\n                println(\" == null) {\");\n                print(\"\\t\");\n                printFieldVarName(fieldInfo);\n                print(\" = \");\n                printClassName(fieldClass);\n                print(\".valueOf(\");\n                printFieldVarEnumName(fieldInfo);\n                println(\");\");\n                println(\"}\");\n            } else if (Collection.class.isAssignableFrom(fieldClass)) {\n                Class<?> itemClass = TypeUtils.getCollectionItemClass(fieldType);\n\n                if (itemClass == String.class) {\n                    printFieldVarName(fieldInfo);\n                    print(\" = (\");\n                    printClassName(fieldClass);\n                    print(\") lexer.scanFieldStringArray(\");\n                    printFieldPrefix(fieldInfo);\n                    print(\", \");\n                    printClassName(fieldClass);\n                    print(\".class);\");\n                    println();\n                } else {\n                    genDeserialzeList(fieldInfo, i, itemClass);\n                    if (i == fieldListSize - 1) {\n                        genEndCheck();\n                    }\n                }\n            } else {\n                genDeserialzeObject(fieldInfo, i);\n\n                if (i == fieldListSize - 1) {\n                    genEndCheck();\n                }\n            }\n\n            println(\"if(lexer.matchStat > 0) {\");\n            print(\"\\t\");\n            genSetFlag(i);\n            println(\"\\tmatchedCount++;\");\n            println(\"}\");\n\n            println(\"if(lexer.matchStat == JSONLexerBase.NOT_MATCH) {\");\n            println(\"\\trestFlag = true;\");\n            println(\"}\");\n\n  \n            println(\"if(lexer.matchStat != JSONLexerBase.END) {\");\n            println(\"\\tendFlag = true;\");\n            println(\"}\");\n            \n\n            decrementIndent();\n            println();\n            println(\"}\");\n        }\n\n        genBatchSet(fieldList, true);\n\n        println();\n        println(\"if (restFlag) {\");\n        println(\"\\treturn super.parseRest(parser, type, fieldName, instance);\");\n        println(\"}\");\n\n        println();\n        print(\"return instance;\");\n        println();\n\n        decrementIndent();\n        println();\n        print(\"}\");\n    }\n\n    private void genBatchSet(FieldInfo[] fieldList, boolean flag) throws IOException {\n        for (int i = 0, size = fieldList.length; i < size; ++i) {\n            FieldInfo fieldInfo = fieldList[i];\n            \n            String varName = \"_asm_flag_\" + (i / 32);\n            if (flag) {\n                print(\"if ((\");\n                print(varName);\n                print(\" & \");\n                print(Integer.toString(1 << i));\n                print(\") != 0) {\");\n                println();\n                incrementIndent();\n            }\n            \n            if (fieldInfo.method != null) {\n                print(\"\\tinstance.\");\n                print(fieldInfo.method.getName());\n                print(\"(\");\n                printFieldVarName(fieldInfo);\n                println(\");\");\n            } else {\n                print(\"\\tinstance.\");\n                print(fieldInfo.field.getName());\n                print(\" = \");\n                printFieldVarName(fieldInfo);\n                println(\";\");\n            }\n\n            if (flag) {\n                decrementIndent();\n                println();\n                println(\"}\");\n            }\n        }\n    }\n\n    private void genEndCheck() throws IOException {\n        println(\"if (matchedCount <= 0 || lexer.token() != JSONToken.RBRACE) {\");\n        println(\"\\trestFlag = true;\");\n        println(\"} else if (lexer.token() == JSONToken.COMMA) {\");\n        println(\"\\tlexer.nextToken();\");\n        println(\"}\");\n    }\n\n    protected void genDeserialzeList(FieldInfo fieldInfo, int i, Class<?> itemClass) throws IOException {\n        print(\"if (lexer.matchField(\");\n        printFieldPrefix(fieldInfo);\n        print(\")) {\");\n        println();\n        print(\"\\t\");\n        genSetFlag(i);\n        println(\"\\tif (lexer.token() == JSONToken.NULL) {\");\n        println(\"\\t\\tlexer.nextToken(JSONToken.COMMA);\");\n        println(\"\\t} else {\");\n        println(\"\\t\\tif (lexer.token() == JSONToken.LBRACKET) {\");\n        print(\"\\t\\t\\tif(\");\n        printListFieldItemDeser(fieldInfo);\n        print(\" == null) {\");\n        println();\n\n        print(\"\\t\\t\\t\\t\");\n        printListFieldItemDeser(fieldInfo);\n        print(\" = parser.getConfig().getDeserializer(\");\n        printClassName(itemClass);\n        print(\".class);\");\n        println();\n\n        print(\"\\t\\t\\t}\");\n        println();\n\n        print(\"\\t\\t\\tfinal int fastMatchToken = \");\n        printListFieldItemDeser(fieldInfo);\n        print(\".getFastMatchToken();\");\n        println();\n        println(\"\\t\\t\\tlexer.nextToken(fastMatchToken);\");\n\n        // _newCollection\n        print(\"\\t\\t\\t\");\n        printFieldVarName(fieldInfo);\n        print(\" = \");\n        Class<?> fieldClass = fieldInfo.fieldClass;\n        if (fieldClass.isAssignableFrom(ArrayList.class)) {\n            print(\"new java.util.ArrayList();\");\n        } else if (fieldClass.isAssignableFrom(LinkedList.class)) {\n            print(\"new java.util.LinkedList();\");\n        } else if (fieldClass.isAssignableFrom(HashSet.class)) {\n            print(\"new java.util.HashSet();\");\n        } else if (fieldClass.isAssignableFrom(TreeSet.class)) {\n            print(\"new java.util.TreeSet();\");\n        } else {\n            print(\"new \");\n            printClassName(fieldClass);\n            print(\"();\");\n        }\n        println();\n\n        println(\"\\t\\t\\tParseContext listContext = parser.getContext();\");\n        print(\"\\t\\t\\tparser.setContext(\");\n        printFieldVarName(fieldInfo);\n        print(\", \\\"\");\n        print(fieldInfo.name);\n        print(\"\\\");\");\n        println();\n\n        println();\n        println(\"\\t\\t\\tfor(int i = 0; ;++i) {\");\n\n        println(\"\\t\\t\\t\\tif (lexer.token() == JSONToken.RBRACKET) {\");\n        println(\"\\t\\t\\t\\t\\tbreak;\");\n        println(\"\\t\\t\\t\\t}\");\n        print(\"\\t\\t\\t\\t\");\n        printClassName(itemClass);\n        print(\" itemValue = \");\n        printListFieldItemDeser(fieldInfo);\n        print(\".deserialze(parser, \");\n        printListFieldItemType(fieldInfo);\n        println(\", i);\");\n\n        print(\"\\t\\t\\t\\t\");\n        printFieldVarName(fieldInfo);\n        println(\".add(itemValue);\");\n\n        print(\"\\t\\t\\t\\tparser.checkListResolve(\");\n        printFieldVarName(fieldInfo);\n        println(\");\");\n\n        println(\"\\t\\t\\t\\tif (lexer.token() == JSONToken.COMMA) {\");\n        println(\"\\t\\t\\t\\t\\tlexer.nextToken(fastMatchToken);\");\n        println(\"\\t\\t\\t\\t}\");\n\n        // end for\n        println(\"\\t\\t\\t}\");\n\n        println(\"\\t\\t\\tparser.setContext(listContext);\");\n\n        println(\"\\t\\t\\tif (lexer.token() != JSONToken.RBRACKET) {\");\n        println(\"\\t\\t\\t\\trestFlag = true;\");\n        println(\"\\t\\t\\t}\");\n        println(\"\\t\\t\\tlexer.nextToken(JSONToken.COMMA);\");\n\n        println();\n        println(\"\\t\\t} else {\");\n        println(\"\\t\\t\\trestFlag = true;\");\n        println(\"\\t\\t}\");\n        println(\"\\t}\");\n        println(\"}\");\n    }\n\n    protected void genDeserialzeObject(FieldInfo fieldInfo, int i) throws IOException {\n        print(\"if (lexer.matchField(\");\n        printFieldPrefix(fieldInfo);\n        print(\")) {\");\n        println();\n        print(\"\\t\");\n        genSetFlag(i);\n        println(\"\\tmatchedCount++;\");\n\n        // _deserObject\n        print(\"if (\");\n        printFieldDeser(fieldInfo);\n        print(\" == null) {\");\n        println();\n\n        print(\"\\t\");\n        printFieldDeser(fieldInfo);\n        print(\" = parser.getConfig().getDeserializer(\");\n        printClassName(fieldInfo.fieldClass);\n        println(\".class);\");\n        println(\"}\");\n\n        print(\"\\t\");\n        printFieldDeser(fieldInfo);\n        print(\".deserialze(parser, \");\n        if (fieldInfo.fieldType instanceof Class) {\n            printClassName(fieldInfo.fieldClass);\n            print(\".class\");\n        } else {\n            print(\"getFieldType(\\\"\");\n            println(fieldInfo.name);\n            print(\"\\\")\");\n        }\n        print(\",\\\"\");\n        print(fieldInfo.name);\n        println(\"\\\");\");\n\n        println(\"\\tif(parser.getResolveStatus() == DefaultJSONParser.NeedToResolve) {\");\n        println(\"\\t\\tResolveTask resolveTask = parser.getLastResolveTask();\");\n        println(\"\\t\\tresolveTask.setOwnerContext(parser.getContext());\");\n        print(\"\\t\\tresolveTask.setFieldDeserializer(this.getFieldDeserializer(\\\"\");\n        print(fieldInfo.name);\n        println(\"\\\"));\");\n        println(\"\\t\\tparser.setResolveStatus(DefaultJSONParser.NONE);\");\n        println(\"\\t}\");\n        println(\"}\");\n    }\n\n    private void printFieldVarName(FieldInfo fieldInfo) throws IOException {\n        print(fieldInfo.name);\n        print(\"_gen\");\n    }\n\n    private void printFieldVarEnumName(FieldInfo fieldInfo) throws IOException {\n        print(fieldInfo.name);\n        print(\"_gen_enum_name\");\n    }\n\n    private void printFieldPrefix(FieldInfo fieldInfo) throws IOException {\n        print(fieldInfo.name);\n        print(\"_gen_prefix__\");\n    }\n\n    private void printListFieldItemDeser(FieldInfo fieldInfo) throws IOException {\n        print(fieldInfo.name);\n        print(\"_gen_list_item_deser__\");\n    }\n\n    private void printFieldDeser(FieldInfo fieldInfo) throws IOException {\n        print(fieldInfo.name);\n        print(\"_gen_deser__\");\n    }\n\n    private void printListFieldItemType(FieldInfo fieldInfo) throws IOException {\n        print(fieldInfo.name);\n        print(\"_gen_list_item_type__\");\n    }\n\n    private void genSetFlag(int flag) throws IOException {\n        String varName = \"_asm_flag_\" + (flag / 32);\n        print(varName);\n        print(\" |= \");\n        print(Integer.toString(1 << flag));\n        print(\";\");\n        println();\n    }\n\n    protected void genConstructor() throws IOException {\n        for (int i = 0, size = beanInfo.fields.length; i < size; ++i) {\n            FieldInfo fieldInfo = beanInfo.fields[i];\n            print(\"private char[] \");\n            printFieldPrefix(fieldInfo);\n            print(\" = \\\"\\\\\\\"\");\n            print(fieldInfo.name);\n            print(\"\\\\\\\":\\\".toCharArray();\");\n            println();\n        }\n\n        println();\n\n        boolean fieldDeserFlag = false;\n        for (int i = 0, size = beanInfo.fields.length; i < size; ++i) {\n            FieldInfo fieldInfo = beanInfo.fields[i];\n            Class<?> fieldClass = fieldInfo.fieldClass;\n\n            if (fieldClass.isPrimitive()) {\n                continue;\n            }\n\n            if (fieldClass.isEnum()) {\n                continue;\n            }\n\n            print(\"private ObjectDeserializer \");\n\n            if (Collection.class.isAssignableFrom(fieldClass)) {\n                printListFieldItemDeser(fieldInfo);\n            } else {\n                printFieldDeser(fieldInfo);\n            }\n            println(\";\");\n            fieldDeserFlag = true;\n\n            if (Collection.class.isAssignableFrom(fieldClass)) {\n                print(\"private Type \");\n                printListFieldItemType(fieldInfo);\n                print(\" = \");\n                Class<?> fieldItemClass = TypeUtils.getCollectionItemClass(fieldInfo.fieldType);\n                printClassName(fieldItemClass);\n                println(\".class;\");\n            }\n        }\n\n        if (fieldDeserFlag) {\n            println();\n        }\n\n        // constructor\n        print(\"public \");\n        print(genClassName);\n        print(\" (ParserConfig config, Class clazz) {\");\n        incrementIndent();\n        println();\n\n        println(\"super(config, clazz);\");\n\n        decrementIndent();\n        println();\n        print(\"}\");\n        println();\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/IgnoreTypeDeserializer.java",
    "content": "package com.alibaba.fastjson.deserializer;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.After;\nimport org.junit.Assert;\nimport org.junit.Before;\nimport org.junit.Test;\n\n\n/**\n * Created by jiangyu on 2017-03-03 11:33.\n */\npublic class IgnoreTypeDeserializer {\n    \n    @Before\n    public void before() {\n        ParserConfig.global.setAutoTypeSupport(true);\n    }\n\n    @After\n    public void after() {\n        ParserConfig.global.setAutoTypeSupport(false);\n    }\n\n    @Test(expected = JSONException.class)\n    public void parseObjectWithNotExistTypeThrowException() {\n        String s = \"{\\\"@type\\\":\\\"com.alibaba.fastjson.ValueBean\\\",\\\"val\\\":1}\";\n        JSONObject.parseObject(s, ValueBean.class);\n    }\n\n    @Test\n    public void parseObjectWithNotExistType() {\n        String s = \"{\\\"@type\\\":\\\"com.alibaba.fastjson.ValueBean\\\",\\\"val\\\":1}\";\n        ValueBean v = JSONObject.parseObject(s, ValueBean.class, Feature.IgnoreAutoType);\n        Assert.assertNotNull(v);\n        Assert.assertEquals(new Integer(1), v.getVal());\n    }\n\n    @Test\n    public void parseWithNotExistType() {\n        String s = \"{\\\"@type\\\":\\\"com.alibaba.fastjson.ValueBean\\\",\\\"val\\\":1}\";\n        Object object = JSONObject.parse(s);\n        Assert.assertNotNull(object);\n        Assert.assertTrue(object instanceof JSONObject);\n        Assert.assertEquals(new Integer(1), JSONObject.class.cast(object).getInteger(\"val\"));\n    }\n\n    @Test\n    public void parseWithExistType() {\n        String s = \"{\\\"@type\\\":\\\"com.alibaba.fastjson.deserializer.ValueBean\\\",\\\"val\\\":1}\";\n        Object object = JSONObject.parse(s);\n        Assert.assertNotNull(object);\n        Assert.assertTrue(object instanceof ValueBean);\n        Assert.assertEquals(new Integer(1), ValueBean.class.cast(object).getVal());\n    }\n\n    @Test\n    public void parseObjectWithExistType() {\n        String s = \"{\\\"@type\\\":\\\"com.alibaba.fastjson.deserializer.ValueBean\\\",\\\"val\\\":1}\";\n        ValueBean object = JSONObject.parseObject(s, ValueBean.class);\n        Assert.assertNotNull(object);\n        Assert.assertEquals(new Integer(1), object.getVal());\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/TestISO8601Date.java",
    "content": "package com.alibaba.fastjson.deserializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.Feature;\nimport org.junit.*;\n\nimport java.util.*;\n\n/**\n * Issue #1884 Test Case\n *\n * @author cnzgray@qq.com\n * @since 2018-05-31 17:15\n */\npublic class TestISO8601Date {\n    @Before\n    public void init() {\n        JSON.DEFAULT_PARSER_FEATURE |= Feature.AllowISO8601DateFormat.mask;\n    }\n\n    @Test\n    public void testBug1884() {\n        Calendar cale = Calendar.getInstance();\n        cale.clear();\n        cale.setTimeZone( TimeZone.getTimeZone( \"GMT+7\" ) );\n        cale.set( 2018, Calendar.MAY, 31, 19, 13, 42 );\n        Date date = cale.getTime();\n\n        String s1 = \"{date: \\\"2018-05-31T19:13:42+07:00\\\"}\"; // 错误的\n        String s2 = \"{date: \\\"2018-05-31T19:13:42.000+07:00\\\"}\"; // 正确的\n        Date date1 = JSON.parseObject( s1, JSONObject.class ).getDate( \"date\" );\n        Date date2 = JSON.parseObject( s2, JSONObject.class ).getDate( \"date\" );\n        assertEquals(date1, date2);\n        assertEquals(date, date1);\n        assertEquals(date, date2);\n    }\n\n    @Test\n    public void testBug376() {\n        Calendar cale = Calendar.getInstance();\n        cale.clear();\n        cale.setTimeZone( TimeZone.getTimeZone( \"GMT\" ) );\n        cale.set( 2018, Calendar.MAY, 31, 19, 13, 42 );\n        Date date = cale.getTime();\n\n        String s1 = \"{date: \\\"2018-05-31T19:13:42Z\\\"}\";\n        String s2 = \"{date: \\\"2018-05-31T19:13:42.000Z\\\"}\";\n\n        Date date1 = JSON.parseObject( s1, JSONObject.class ).getDate( \"date\" );\n        Date date2 = JSON.parseObject( s2, JSONObject.class ).getDate( \"date\" );\n\n        assertEquals( date1, date2 );\n        assertEquals( date, date1 );\n        assertEquals( date, date2 );\n    }\n\n    private void assertEquals( Date expected, Date actual ) {\n        Assert.assertEquals( 0, expected.compareTo( actual ) );\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/ValueBean.java",
    "content": "package com.alibaba.fastjson.deserializer;\n\n/**\n * Created by jiangyu on 2017-03-03 11:34.\n */\npublic class ValueBean {\n\n    private Integer val;\n\n    public Integer getVal() {\n        return val;\n    }\n\n    public ValueBean setVal(Integer val) {\n        this.val = val;\n        return this;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issue1463/TestIssue1463.java",
    "content": "package com.alibaba.fastjson.deserializer.issue1463;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.deserializer.issue1463.beans.Person;\n\nimport org.junit.Assert;\nimport org.junit.Before;\nimport org.junit.Test;\n\n/**\n *\n * @author LNAmp\n * @since  2017年09月11日\n *\n * https://github.com/alibaba/fastjson/issues/569\n */\npublic class TestIssue1463 {\n\n    private Person wenshao;\n\n    @Before\n    public void setUp() {\n        wenshao = new Person(\"wenshao\", 18);\n    }\n\n    @Test\n    public void testIssue1463() {\n        String str = doubleDeserialization(wenshao);\n        try {\n            wenshao = JSON.parseObject(str, Person.class);\n        } catch (Throwable ex) {\n            Assert.assertEquals(ex.getCause() instanceof NullPointerException, false);\n        }\n    }\n\n    private String doubleDeserialization(Person person) {\n        return JSON.toJSONString(JSON.toJSONString(person));\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issue1463/beans/Person.java",
    "content": "package com.alibaba.fastjson.deserializer.issue1463.beans;\n\nimport java.io.Serializable;\n\n/**\n * issue 1463\n *\n * @author LNAmp\n * @since 2017年09月11日\n *\n */\npublic class Person implements Serializable {\n\n    private static final long serialVersionUID = 248616267815851026L;\n\n    private String name;\n\n    private Integer age;\n\n    public Person(String name, Integer age) {\n        this.name = name;\n        this.age = age;\n    }\n\n    public String getName() {\n        return name;\n    }\n\n    public Integer getAge() {\n        return age;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issue2358/TestJson.java",
    "content": "package com.alibaba.fastjson.deserializer.issue2358;\n\nimport com.alibaba.fastjson.JSONObject;\n\nimport java.util.List;\n\n/**\n * Created by liangchuyi on 2019/4/8.\n */\npublic class TestJson {\n\n    private String test1;\n    private String test2;\n\n    public String getTest1() {\n        return test1;\n    }\n\n    public void setTest1(String test1) {\n        this.test1 = test1;\n    }\n\n    public String getTest2() {\n        return test2;\n    }\n\n    public void setTest2(String test2) {\n        this.test2 = test2;\n    }\n\n    class TestJson2 {\n        private String test1;\n        private String test2;\n\n        public String getTest1() {\n            return test1;\n        }\n\n        public void setTest1(String test1) {\n            this.test1 = test1;\n        }\n\n        public String getTest2() {\n            return test2;\n        }\n\n        public void setTest2(String test2) {\n            this.test2 = test2;\n        }\n    }\n\n    public static void main(String args[]) {\n        String str = \"[{\\n\" +\n                \"  \\\"test1\\\":\\\"1\\\",\\n\" +\n                \"  \\\"test2\\\":\\\"2\\\"\\n\" +\n                \"},\\n\" +\n                \" {\\n\" +\n                \"   \\\"test1\\\":\\\"1\\\",\\n\" +\n                \"   \\\"test2\\\":\\\"2\\\"\\n\" +\n                \" }]\";\n        List<TestJson2> testJsons = JSONObject.parseArray(str, TestJson2.class);\n        System.out.println(testJsons);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issue2638/Person.java",
    "content": "package com.alibaba.fastjson.deserializer.issue2638;\n\nclass Person {\n        private String name;\n        private Integer age;\n\n        public Person(){}\n\n        public Person(String name, Integer age) {\n            super();\n            this.name = name;\n            this.age = age;\n        }\n        public String getName() {\n            return name;\n        }\n        public void setName(String name) {\n            this.name = name;\n        }\n        public Integer getAge() {\n            return age;\n        }\n        public void setAge(Integer age) {\n            this.age = age;\n        }\n    }"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issue2638/TestIssue2638.java",
    "content": "package com.alibaba.fastjson.deserializer.issue2638;\n\nimport com.alibaba.fastjson.JSON;\nimport org.junit.Test;\n\n/**\n * @Author:JacceYang chaoyang_sjtu@126.com\n * @Description:\n * @Data:Initialized in 7:54 PM 2019/8/17\n **/\npublic class TestIssue2638 {\n\n    @Test\n    public void testBug2638() {\n        String str=\"}\";\n        JSON.parseObject(str,Person.class);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issue2711/PageRequest.java",
    "content": "package com.alibaba.fastjson.deserializer.issue2711;\n\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic class PageRequest<T> {\n    @JSONField(unwrapped = true)\n    T data;\n    int from = 0;\n    int size = 10;\n\n    public T getData() {\n        return data;\n    }\n\n    public void setData(T data) {\n        this.data = data;\n    }\n\n    public int getFrom() {\n        return from;\n    }\n\n    public void setFrom(int from) {\n        this.from = from;\n    }\n\n    public int getSize() {\n        return size;\n    }\n\n    public void setSize(int size) {\n        this.size = size;\n    }\n}"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issue2711/TestIssue.java",
    "content": "package com.alibaba.fastjson.deserializer.issue2711;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport org.junit.Assert;\nimport org.junit.Test;\n\npublic class TestIssue {\n    @Test\n    public void testDeserializeGenericsUnwrapped() {\n        PageRequest<User> req = new PageRequest<User>();\n        req.setData(new User(1L, \"jack\"));\n        req.setFrom(10);\n        req.setSize(20);\n        String s = JSON.toJSONString(req);\n        System.out.println(s);\n\n        PageRequest<User> newReq = JSON.parseObject(s, new TypeReference<PageRequest<User>>() {});\n        Assert.assertNotNull(newReq);\n    }\n}"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issue2711/User.java",
    "content": "package com.alibaba.fastjson.deserializer.issue2711;\n\npublic class User {\n    Long id;\n    String name;\n\n    public User(Long id, String name) {\n        this.id = id;\n        this.name = name;\n    }\n\n    public Long getId() {\n        return id;\n    }\n\n    public void setId(Long id) {\n        this.id = id;\n    }\n\n    public String getName() {\n        return name;\n    }\n\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    @Override\n    public String toString() {\n        return \"User{\" +\n                \"id=\" + id +\n                \", name='\" + name + '\\'' +\n                '}';\n    }\n}"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issue2779/Issue2779Test.java",
    "content": "package com.alibaba.fastjson.deserializer.issue2779;\n\nimport com.alibaba.fastjson.JSON;\nimport org.junit.Test;\n\n// https://github.com/alibaba/fastjson/issues/2779\npublic class Issue2779Test {\n    @Test\n    public void canDeserializeLargeJavaBean() {\n        JSON.parseObject(\"{}\", LargeJavaBean.class);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issue2779/LargeJavaBean.java",
    "content": "package com.alibaba.fastjson.deserializer.issue2779;\n\nimport java.util.List;\n\npublic class LargeJavaBean {\n    public List<Alphabet> getList100() {\n        return list100;\n    }\n\n    public void setList100(List<Alphabet> list100) {\n        this.list100 = list100;\n    }\n\n    public List<Alphabet> getList101() {\n        return list101;\n    }\n\n    public void setList101(List<Alphabet> list101) {\n        this.list101 = list101;\n    }\n\n    public List<Alphabet> getList102() {\n        return list102;\n    }\n\n    public void setList102(List<Alphabet> list102) {\n        this.list102 = list102;\n    }\n\n    public List<Alphabet> getList103() {\n        return list103;\n    }\n\n    public void setList103(List<Alphabet> list103) {\n        this.list103 = list103;\n    }\n\n    public List<Alphabet> getList104() {\n        return list104;\n    }\n\n    public void setList104(List<Alphabet> list104) {\n        this.list104 = list104;\n    }\n\n    public List<Alphabet> getList105() {\n        return list105;\n    }\n\n    public void setList105(List<Alphabet> list105) {\n        this.list105 = list105;\n    }\n\n    public List<Alphabet> getList106() {\n        return list106;\n    }\n\n    public void setList106(List<Alphabet> list106) {\n        this.list106 = list106;\n    }\n\n    public List<Alphabet> getList107() {\n        return list107;\n    }\n\n    public void setList107(List<Alphabet> list107) {\n        this.list107 = list107;\n    }\n\n    public List<Alphabet> getList108() {\n        return list108;\n    }\n\n    public void setList108(List<Alphabet> list108) {\n        this.list108 = list108;\n    }\n\n    public List<Alphabet> getList109() {\n        return list109;\n    }\n\n    public void setList109(List<Alphabet> list109) {\n        this.list109 = list109;\n    }\n\n    public List<Alphabet> getList110() {\n        return list110;\n    }\n\n    public void setList110(List<Alphabet> list110) {\n        this.list110 = list110;\n    }\n\n    public List<Alphabet> getList111() {\n        return list111;\n    }\n\n    public void setList111(List<Alphabet> list111) {\n        this.list111 = list111;\n    }\n\n    public List<Alphabet> getList112() {\n        return list112;\n    }\n\n    public void setList112(List<Alphabet> list112) {\n        this.list112 = list112;\n    }\n\n    public List<Alphabet> getList113() {\n        return list113;\n    }\n\n    public void setList113(List<Alphabet> list113) {\n        this.list113 = list113;\n    }\n\n    public List<Alphabet> getList114() {\n        return list114;\n    }\n\n    public void setList114(List<Alphabet> list114) {\n        this.list114 = list114;\n    }\n\n    public List<Alphabet> getList115() {\n        return list115;\n    }\n\n    public void setList115(List<Alphabet> list115) {\n        this.list115 = list115;\n    }\n\n    public List<Alphabet> getList116() {\n        return list116;\n    }\n\n    public void setList116(List<Alphabet> list116) {\n        this.list116 = list116;\n    }\n\n    public List<Alphabet> getList117() {\n        return list117;\n    }\n\n    public void setList117(List<Alphabet> list117) {\n        this.list117 = list117;\n    }\n\n    public List<Alphabet> getList118() {\n        return list118;\n    }\n\n    public void setList118(List<Alphabet> list118) {\n        this.list118 = list118;\n    }\n\n    public List<Alphabet> getList119() {\n        return list119;\n    }\n\n    public void setList119(List<Alphabet> list119) {\n        this.list119 = list119;\n    }\n\n    public List<Alphabet> getList120() {\n        return list120;\n    }\n\n    public void setList120(List<Alphabet> list120) {\n        this.list120 = list120;\n    }\n\n    public List<Alphabet> getList121() {\n        return list121;\n    }\n\n    public void setList121(List<Alphabet> list121) {\n        this.list121 = list121;\n    }\n\n    public List<Alphabet> getList122() {\n        return list122;\n    }\n\n    public void setList122(List<Alphabet> list122) {\n        this.list122 = list122;\n    }\n\n    public List<Alphabet> getList123() {\n        return list123;\n    }\n\n    public void setList123(List<Alphabet> list123) {\n        this.list123 = list123;\n    }\n\n    public List<Alphabet> getList124() {\n        return list124;\n    }\n\n    public void setList124(List<Alphabet> list124) {\n        this.list124 = list124;\n    }\n\n    public List<Alphabet> getList125() {\n        return list125;\n    }\n\n    public void setList125(List<Alphabet> list125) {\n        this.list125 = list125;\n    }\n\n    public List<Alphabet> getList126() {\n        return list126;\n    }\n\n    public void setList126(List<Alphabet> list126) {\n        this.list126 = list126;\n    }\n\n    public List<Alphabet> getList127() {\n        return list127;\n    }\n\n    public void setList127(List<Alphabet> list127) {\n        this.list127 = list127;\n    }\n\n    public List<Alphabet> getList128() {\n        return list128;\n    }\n\n    public void setList128(List<Alphabet> list128) {\n        this.list128 = list128;\n    }\n\n    public List<Alphabet> getList129() {\n        return list129;\n    }\n\n    public void setList129(List<Alphabet> list129) {\n        this.list129 = list129;\n    }\n\n    public List<Alphabet> getList130() {\n        return list130;\n    }\n\n    public void setList130(List<Alphabet> list130) {\n        this.list130 = list130;\n    }\n\n    public List<Alphabet> getList131() {\n        return list131;\n    }\n\n    public void setList131(List<Alphabet> list131) {\n        this.list131 = list131;\n    }\n\n    public List<Alphabet> getList132() {\n        return list132;\n    }\n\n    public void setList132(List<Alphabet> list132) {\n        this.list132 = list132;\n    }\n\n    public List<Alphabet> getList133() {\n        return list133;\n    }\n\n    public void setList133(List<Alphabet> list133) {\n        this.list133 = list133;\n    }\n\n    public List<Alphabet> getList134() {\n        return list134;\n    }\n\n    public void setList134(List<Alphabet> list134) {\n        this.list134 = list134;\n    }\n\n    public List<Alphabet> getList135() {\n        return list135;\n    }\n\n    public void setList135(List<Alphabet> list135) {\n        this.list135 = list135;\n    }\n\n    public List<Alphabet> getList136() {\n        return list136;\n    }\n\n    public void setList136(List<Alphabet> list136) {\n        this.list136 = list136;\n    }\n\n    public List<Alphabet> getList137() {\n        return list137;\n    }\n\n    public void setList137(List<Alphabet> list137) {\n        this.list137 = list137;\n    }\n\n    public List<Alphabet> getList138() {\n        return list138;\n    }\n\n    public void setList138(List<Alphabet> list138) {\n        this.list138 = list138;\n    }\n\n    public List<Alphabet> getList139() {\n        return list139;\n    }\n\n    public void setList139(List<Alphabet> list139) {\n        this.list139 = list139;\n    }\n\n    public List<Alphabet> getList140() {\n        return list140;\n    }\n\n    public void setList140(List<Alphabet> list140) {\n        this.list140 = list140;\n    }\n\n    public List<Alphabet> getList141() {\n        return list141;\n    }\n\n    public void setList141(List<Alphabet> list141) {\n        this.list141 = list141;\n    }\n\n    public List<Alphabet> getList142() {\n        return list142;\n    }\n\n    public void setList142(List<Alphabet> list142) {\n        this.list142 = list142;\n    }\n\n    public List<Alphabet> getList143() {\n        return list143;\n    }\n\n    public void setList143(List<Alphabet> list143) {\n        this.list143 = list143;\n    }\n\n    public List<Alphabet> getList144() {\n        return list144;\n    }\n\n    public void setList144(List<Alphabet> list144) {\n        this.list144 = list144;\n    }\n\n    public List<Alphabet> getList145() {\n        return list145;\n    }\n\n    public void setList145(List<Alphabet> list145) {\n        this.list145 = list145;\n    }\n\n    public List<Alphabet> getList146() {\n        return list146;\n    }\n\n    public void setList146(List<Alphabet> list146) {\n        this.list146 = list146;\n    }\n\n    public List<Alphabet> getList147() {\n        return list147;\n    }\n\n    public void setList147(List<Alphabet> list147) {\n        this.list147 = list147;\n    }\n\n    public List<Alphabet> getList148() {\n        return list148;\n    }\n\n    public void setList148(List<Alphabet> list148) {\n        this.list148 = list148;\n    }\n\n    public List<Alphabet> getList149() {\n        return list149;\n    }\n\n    public void setList149(List<Alphabet> list149) {\n        this.list149 = list149;\n    }\n\n    public List<Alphabet> getList150() {\n        return list150;\n    }\n\n    public void setList150(List<Alphabet> list150) {\n        this.list150 = list150;\n    }\n\n    public List<Alphabet> getList151() {\n        return list151;\n    }\n\n    public void setList151(List<Alphabet> list151) {\n        this.list151 = list151;\n    }\n\n    public List<Alphabet> getList152() {\n        return list152;\n    }\n\n    public void setList152(List<Alphabet> list152) {\n        this.list152 = list152;\n    }\n\n    public List<Alphabet> getList153() {\n        return list153;\n    }\n\n    public void setList153(List<Alphabet> list153) {\n        this.list153 = list153;\n    }\n\n    public List<Alphabet> getList154() {\n        return list154;\n    }\n\n    public void setList154(List<Alphabet> list154) {\n        this.list154 = list154;\n    }\n\n    public List<Alphabet> getList155() {\n        return list155;\n    }\n\n    public void setList155(List<Alphabet> list155) {\n        this.list155 = list155;\n    }\n\n    public List<Alphabet> getList156() {\n        return list156;\n    }\n\n    public void setList156(List<Alphabet> list156) {\n        this.list156 = list156;\n    }\n\n    public List<Alphabet> getList157() {\n        return list157;\n    }\n\n    public void setList157(List<Alphabet> list157) {\n        this.list157 = list157;\n    }\n\n    public List<Alphabet> getList158() {\n        return list158;\n    }\n\n    public void setList158(List<Alphabet> list158) {\n        this.list158 = list158;\n    }\n\n    public List<Alphabet> getList159() {\n        return list159;\n    }\n\n    public void setList159(List<Alphabet> list159) {\n        this.list159 = list159;\n    }\n\n    public List<Alphabet> getList160() {\n        return list160;\n    }\n\n    public void setList160(List<Alphabet> list160) {\n        this.list160 = list160;\n    }\n\n    public List<Alphabet> getList161() {\n        return list161;\n    }\n\n    public void setList161(List<Alphabet> list161) {\n        this.list161 = list161;\n    }\n\n    public List<Alphabet> getList162() {\n        return list162;\n    }\n\n    public void setList162(List<Alphabet> list162) {\n        this.list162 = list162;\n    }\n\n    public List<Alphabet> getList163() {\n        return list163;\n    }\n\n    public void setList163(List<Alphabet> list163) {\n        this.list163 = list163;\n    }\n\n    // provide by zhaiyao, for fastjson test\n    private List<Alphabet> list100;\n    private List<Alphabet> list101;\n    private List<Alphabet> list102;\n    private List<Alphabet> list103;\n    private List<Alphabet> list104;\n    private List<Alphabet> list105;\n    private List<Alphabet> list106;\n    private List<Alphabet> list107;\n    private List<Alphabet> list108;\n    private List<Alphabet> list109;\n    private List<Alphabet> list110;\n    private List<Alphabet> list111;\n    private List<Alphabet> list112;\n    private List<Alphabet> list113;\n    private List<Alphabet> list114;\n    private List<Alphabet> list115;\n    private List<Alphabet> list116;\n    private List<Alphabet> list117;\n    private List<Alphabet> list118;\n    private List<Alphabet> list119;\n    private List<Alphabet> list120;\n    private List<Alphabet> list121;\n    private List<Alphabet> list122;\n    private List<Alphabet> list123;\n    private List<Alphabet> list124;\n    private List<Alphabet> list125;\n    private List<Alphabet> list126;\n    private List<Alphabet> list127;\n    private List<Alphabet> list128;\n    private List<Alphabet> list129;\n    private List<Alphabet> list130;\n    private List<Alphabet> list131;\n    private List<Alphabet> list132;\n    private List<Alphabet> list133;\n    private List<Alphabet> list134;\n    private List<Alphabet> list135;\n    private List<Alphabet> list136;\n    private List<Alphabet> list137;\n    private List<Alphabet> list138;\n    private List<Alphabet> list139;\n    private List<Alphabet> list140;\n    private List<Alphabet> list141;\n    private List<Alphabet> list142;\n    private List<Alphabet> list143;\n    private List<Alphabet> list144;\n    private List<Alphabet> list145;\n    private List<Alphabet> list146;\n    private List<Alphabet> list147;\n    private List<Alphabet> list148;\n    private List<Alphabet> list149;\n    private List<Alphabet> list150;\n    private List<Alphabet> list151;\n    private List<Alphabet> list152;\n    private List<Alphabet> list153;\n    private List<Alphabet> list154;\n    private List<Alphabet> list155;\n    private List<Alphabet> list156;\n    private List<Alphabet> list157;\n    private List<Alphabet> list158;\n    private List<Alphabet> list159;\n    private List<Alphabet> list160;\n    private List<Alphabet> list161;\n    private List<Alphabet> list162;\n    private List<Alphabet> list163;\n\n\n    public static class Alphabet {\n        // provide by zhaiyao, for fastjson test\n        private List<Double> a;\n        private List<Double> b;\n        private List<Double> c;\n        private List<Double> d;\n        private List<Double> e;\n        private List<Double> f;\n        private List<Double> g;\n        private List<Double> h;\n        private List<Double> i;\n        private List<Double> j;\n        private List<Double> k;\n        private List<Double> l;\n        private List<Double> m;\n        private List<Double> n;\n        private List<Double> o;\n        private List<Double> p;\n        private List<Double> q;\n        private List<Double> r;\n        private List<Double> s;\n        private List<Double> t;\n        private List<Double> u;\n        private List<Double> v;\n        private List<Double> w;\n        private List<Double> x;\n        private List<Double> y;\n        private List<Double> z;\n    }\n\n}"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issue2898/TestIssue2898.java",
    "content": "package com.alibaba.fastjson.deserializer.issue2898;\n\nimport java.io.IOException;\nimport java.io.InputStream;\n\nimport com.alibaba.fastjson.JSON;\n\nimport org.apache.commons.io.IOUtils;\nimport org.junit.Assert;\nimport org.junit.Test;\n\npublic class TestIssue2898 {\n    @Test\n    public void testDeserialzeComplexGenericType() throws Exception {\n        String s = \"{\\\"props\\\": {\\\"test\\\": [{\\\"foo\\\": \\\"bar\\\"}]}}\";\n        ExtClassLoader classLoader = new ExtClassLoader();\n        Class clazz = classLoader.loadClass(\"DataClassPropsGeneric\");\n        Object d = JSON.parseObject(s, clazz);\n        System.out.println(d);\n        Assert.assertNotNull(d);\n    }\n\n    public static class ExtClassLoader extends ClassLoader {\n\n        public ExtClassLoader() throws IOException {\n            super(Thread.currentThread().getContextClassLoader());\n\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\n                    \"kotlin/DataClassPropsGeneric.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n\n                super.defineClass(\"DataClassPropsGeneric\", bytes, 0, bytes.length);\n            }\n        }\n    }\n}"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issue2951/TestIssue2951.java",
    "content": "package com.alibaba.fastjson.deserializer.issue2951;\n\nimport com.alibaba.fastjson.JSON;\n\nimport org.junit.Assert;\nimport org.junit.Test;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class TestIssue2951 {\n    @Test\n    public void test() {\n        String data = \"{\\\"field1\\\": null, \\\"field2\\\": null, \\\"field3\\\": \\\"1\\\", \\\"field4\\\": null}\";\n\n        Model model;\n\n        model = JSON.parseObject(data, Model.class);\n\n        Assert.assertEquals(model.field1, 0);\n        Assert.assertEquals(model.field2, 0F, 0);\n        Assert.assertEquals(model.field3, \"1\");\n        Assert.assertNull(model.field4);\n\n        String data1 = \"{\\\"field1\\\": null, \\\"field2\\\": null, \\\"field3\\\": \\\"1\\\", \\\"field4\\\": \\\"null\\\"}\";\n        model = JSON.parseObject(data1, Model.class);\n        Assert.assertEquals(model.field1, 0);\n        Assert.assertEquals(model.field2, 0F, 0);\n        Assert.assertEquals(model.field3, \"1\");\n\n        List<String> actualField4 = new ArrayList<String>();\n        actualField4.add(\"null\");\n        Assert.assertEquals(model.field4, actualField4);\n    }\n\n    public static class Model {\n        public final int field1;\n        public final float field2;\n        public final String field3;\n        public final List<String> field4;\n\n        public Model(int field1, float field2, String field3, List<String> field4) {\n            this.field1 = field1;\n            this.field2 = field2;\n            this.field3 = field3;\n            this.field4 = field4;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issue3050/TestIssue3050.java",
    "content": "package com.alibaba.fastjson.deserializer.issue3050;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.deserializer.issue3050.beans.Person;\nimport com.alibaba.fastjson.parser.Feature;\nimport org.junit.Assert;\nimport org.junit.Test;\n\n/**\n * https://github.com/alibaba/fastjson/issues/3050\n *\n * @author yangy\n * @since 2020年05月03日\n */\npublic class TestIssue3050 {\n\n    @Test\n    public void testIssue3050() {\n        String jsonStr = \"{\\\"name\\\":5, \\\"address\\\":\\\"beijing\\\", \\\"id\\\":\\\"100\\\", \\\"age\\\":10}\";\n        Person person = JSON.parseObject(jsonStr, Person.class, Feature.InitStringFieldAsEmpty);\n        Assert.assertEquals(\"5\", person.getName());\n        Assert.assertEquals(\"beijing\", person.getAddress());\n        Assert.assertEquals(\"100\", person.getId());\n        Assert.assertEquals(10, person.getAge());\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issue3050/beans/Person.java",
    "content": "package com.alibaba.fastjson.deserializer.issue3050.beans;\n\n/**\n * issue3050\n *\n * @author yangy\n * @since 2020年05月03日\n */\npublic class Person {\n    private String name;\n    private String address;\n    private String id;\n    private int age;\n\n    public String getName() {\n        return name;\n    }\n\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    public String getAddress() {\n        return address;\n    }\n\n    public void setAddress(String address) {\n        this.address = address;\n    }\n\n    public int getAge() {\n        return age;\n    }\n\n    public void setAge(int age) {\n        this.age = age;\n    }\n\n    public String getId() {\n        return id;\n    }\n\n    public void setId(String id) {\n        this.id = id;\n    }\n\n    @Override\n    public String toString() {\n        return \"Person{\" +\n                \"name='\" + name + '\\'' +\n                \", address='\" + address + '\\'' +\n                \", id='\" + id + '\\'' +\n                \", age=\" + age +\n                '}';\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issue3248/TestIssue3248.kt",
    "content": "package com.alibaba.fastjson.deserializer.issue3248\n\nimport com.alibaba.fastjson.JSON\nimport com.alibaba.fastjson.annotation.JSONField\nimport org.junit.Assert\nimport org.junit.Test\n\n/**\n * https://github.com/alibaba/fastjson/issues/3248\n * @author 佐井\n * @since 2020-06-10 09:19\n */\nclass TestIssue3248 {\n\n    @JSONField(name = \"namex\")\n    var name = \"\"\n\n    var isTest: Boolean = false\n\n    @Test\n    fun test() {\n\n        val test = TestIssue3248().also {\n            it.name = \"my name\"\n            it.isTest = true\n        }\n        val raw = JSON.toJSONString(test)\n        val parsed = JSON.parseObject(raw, TestIssue3248::class.java)\n        Assert.assertEquals(test.name, parsed.name)\n        Assert.assertEquals(test.isTest, parsed.isTest)\n\n    }\n}"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issue3804/TestIssue3804.java",
    "content": "package com.alibaba.fastjson.deserializer.issue3804;\nimport com.alibaba.fastjson.JSONValidator;\nimport org.junit.Test;\n\npublic class TestIssue3804 {\n    @Test\n    public void testIssue3804() {\n        //String textResponse=\"{\\\"error\\\":false,\\\"code\\\":0}\";\n        String textResponse=\"{\\\"error\\\":false,\\\"code\";\n        JSONValidator validator = JSONValidator.from(textResponse);\n        if (validator.validate() && validator.getType() == JSONValidator.Type.Object) {\n            System.out.println(\"Yes, it is Object\");\n        } else {\n            System.out.println(\"No, it is not Object\");\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3671/TestIssue3671.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3671;\n\nimport com.alibaba.fastjson.JSONValidator;\nimport org.junit.Assert;\nimport org.junit.Test;\n\n/**\n * https://github.com/alibaba/fastjson/issues/3671\n *\n * @author ryc\n * @date 2021/03/12 15:40\n */\npublic class TestIssue3671 {\n\n    @Test\n    public void testIssue3671() {\n        String json = \"[{\\n\" +\n                \"    \\\"filters\\\": [],\\n\" +\n                \"    \\\"id\\\": \\\"baidu_route2\\\",\\n\" +\n                \"    \\\"order\\\": 0,\\n\" +\n                \"    \\\"predicates\\\": [{\\n\" +\n                \"        \\\"args\\\": {\\n\" +\n                \"            \\\"pattern\\\": \\\"/baidu/**\\\"\\n\" +\n                \"        },\\n\" +\n                \"        \\\"name\\\": \\\"Path\\\"\\n\" +\n                \"    }],\\n\" +\n                \"    \\\"uri\\\": \\\"https://www.baidu.com\\\"\\n\" +\n                \"}]\\n \";\n        Assert.assertTrue(JSONValidator.from(json).validate());\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/TestIssues3796.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.deserializer.issues3796.bean.LargeJavaBean;\nimport org.junit.Test;\n\n/**\n * @author kurisu9az\n * @description 修复issues3796\n * @date 2021/6/2 18:48\n **/\npublic class TestIssues3796 {\n\n    @Test\n    public void testIssues3796() {\n        JSON.parseObject(\"{}\", LargeJavaBean.class);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/CommonObject.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\npublic class CommonObject {\n\n\tprivate int a;\n\n\tprivate int b;\n\n\n\tprivate int c;\n\n\tpublic CommonObject() {\n\t}\n\n\tpublic CommonObject(int a, int b) {\n\t\tthis.a = a;\n\t\tthis.b = b;\n\t}\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/CommonObject2.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\npublic class CommonObject2 {\n\t\n\tprivate int a;\n\t\n\tprivate long b;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic long getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(long b) {\n\t\tthis.b = b;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/CommonObject3.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\npublic class CommonObject3 {\n\t\n\tprivate long a;\n\t\n\tprivate long b;\n\t\n\tprivate int c;\n\n\tpublic long getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(long a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic long getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(long b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/LargeJavaBean.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport java.util.List;\n\npublic class LargeJavaBean {\n\tpublic static final String testName = \"testName\";\n\t\n\t@JSONField(name = \"_id\")\n\tprivate long id;\n\t\n\tprivate String a = \"null\";\n\n\t\n\tprivate String b = \"null\";\n\t\n\tprivate String c = \"null\";\n\n\tprivate int d = -1;\n\t\n\tprivate String e = \"null\";\n\t\n\tprivate String f = \"null\";\n\t\n\tprivate String g = \"null\";\n\n\t\n\t@JSONField(serialize = false)\n\tprivate ObjectA h = new ObjectA();\n\n\tprivate int i;\n\n\tprivate int j;\n\n\t\n\tprivate String k;\n\t\n\tprivate String l;\n\n\t\n\tprivate ObjectB m = new ObjectB();\n\n\t\n\tprivate int n;\n\n\t\n\tprivate String o;\n\n\t\n\tprivate int p;\n\n\t\n\tprivate long q;\n\n\t\n\tprivate long r;\n\t\n\tprivate long s;\n\n\t\n\tprivate long t;\n\t\n\tprivate long u;\n\t\n\tprivate long v;\n\n\t\n\tprivate int w = 0;\n\t\n\tprivate int x = 0;\n\t\n\tprivate boolean y = false;\n\n\tprivate List<ObjectC> z;\n\n\t\n\tprivate List<ObjectD> a1;\n\n\t\n\tprivate List<ObjectE> b1;\n\n\t\n\tprivate List<CommonObject> c1;\n\n\t\n\tprivate List<ObjectF> d1;\n\n\t\n\t@JSONField(serialize = false)\n\tprivate List<ObjectG> e1;\n\n\t\n\tprivate long f1;\n\n\t\n\tprivate long g1;\n\n\t\n\tprivate List<ObjectH> h1;\n\n\t\n\n\tprivate List<Integer> j1;\n\n\t\n\tprivate ObjectI k1;\n\t\n\tprivate List<Integer> l1;\n\t\n\tprivate List<ObjectJ> m1;\n\n\t\n\tprivate ObjectL n1;\n\t\n\tprivate List<ObjectM> o1;\n\n\t\n\tprivate ObjectN p1;\n\n\t\n\tprivate int q1;\n\n\t\n\tprivate long r1;\n\n\t\n\tprivate long[] s1;\n\n\t@JSONField(serialize = false)\n\tprivate ObjectO t1;\n\n\t@JSONField(serialize = false)\n\tprivate ObjectP u1;\n\n\t\n\tprivate List<ObjectQ> v1;\n\n\t\n\tprivate List<Integer> w1;\n\t\n\tprivate List<ObjectR> x1;\n\t\n\tprivate List<Integer> y1;\n\t\n\tprivate List<ObjectS> z1;\n\n\t\n\tprivate ObjectT a2 = new ObjectT();\n\t\n\tprivate List<ObjectU> b2;\n\t\n\tprivate ObjectV c2 = new ObjectV();\n\t\n\tprivate List<ObjectW> d2;\n\n\t\n\tprivate List<ObjectW> e2;\n\n\t\n\tprivate ObjectX f2;\n\n\t\n\tprivate ObjectY g2;\n\n\t\n\tprivate ObjectZ h2;\n\n\t\n\tprivate int i2 = 0;\n\n\t\n\tprivate ObjectA1 j2;\n\n\t\n\tprivate List<CommonObject2> k2;\n\n\t\n\tprivate ObjectB1 l2;\n\n\t\n\tprivate List<ObjectC1> m2;\n\n\t\n\tprivate int n2;\n\n\t\n\tprivate ObjectD1 o2;\n\n\t\n\tprivate int p2;\n\n\t\n\tlong q2;\n\n\t\n\tlong r2;\n\n\t\n\tint s2;\n\n\t\n\tint t2;\n\n\t\n\tint u2;\n\n\t\n\tint v2;\n\n\t\n\tint w2;\n\n\t\n\tprivate List<ObjectE1> x2;\n\n\t\n\tprivate List<ObjectE1> y2;\n\n\tObjectF1 z2 = new ObjectF1();\n\t\n\tprivate List<Integer> a3;\n\n\t\n\tprivate List<ObjectG1> b3;\n\t\n\tprivate List<Integer> c3;\n\t\n\tprivate ObjectH1 d3;\n\n\t\n\tprivate List <CommonObject> e3;\n\n\t\n\tprivate ObjectI1 f3;\n\n\t\n\tprivate ObjectJ1 g3;\n\n\t\n\tprivate ObjectK1 h3;\n\n\n\tObjectL1 i3 = new ObjectL1();\n\n\t\n\tprivate ObjectM1 j3;\n\t\n\tprivate ObjectN1 k3;\n\n\t\n\tprivate List<CommonObject> l3;\n\n\t\n\tprivate List<ObjectO1> m3;\n\n\t\n\tprivate ObjectP1 n3;\n\n\t\n\tprivate List<ObjectQ1> o3;\n\n\t\n\tprivate ObjectR1 p3;\n\n\t\n\tprivate ObjectS1 q3;\n\n\t\n\tprivate List<ObjectT1> r3;\n\n\t\n\tprivate List<ObjectU1> s3;\n\n\t\n\tprivate ObjectV1 t3;\n\n\t\n\tprivate List<Integer> u3;\n\n\t\n\tprivate int v3;\n\n\t\n\tprivate ObjectW1 w3;\n\n\t\n\tprivate List<ObjectX1>  x3;\n\t\n\tprivate List<Integer> y3;\n\t\n\tprivate List<Integer> z3;\n\t\n\tprivate int a4;\n\t\n\tprivate List<ObjectY1> b4;\n\n\t\n\tprivate ObjectZ1 c4;\n\n\t\n\tprivate List<ObjectA2> d4;\n\n\t\n\tprivate ObjectB2 e4;\n\n\t\n\tprivate List<ObjectC2> f4;\n\t\n\tprivate List<ObjectD2> g4 ;\n\n\t\n\tprivate List<ObjectE2> h4;\n\n\t\n\tprivate ObjectF2 i4;\n\n\t\n\tprivate ObjectG2 j4;\n\t\n\tprivate ObjectH2 k4;\n\t\n\tprivate ObjectI2 l4;\n\t\n\tprivate int m4;\n\t\n\tprivate ObjectJ2 n4;\n\t\n\tprivate List<ObjectK2> o4;\n\tprivate int p4;\n\tprivate int q4;\n\tprivate List<Integer> r4;\n\n\t\n\tprivate List<String> s4;\n\n\t\n\tprivate int t4;\n\tprivate boolean u4 = false;\n\t\n\tprivate List<ObjectL2> v4;\n\n\t\n\tprivate int w4;\n\n\t\n\tprivate ObjectM2 x4;\n\n\t\n\tprivate ObjectM2 y4;\n\n\t\n\tprivate List<ObjectN2> z4;\n\n\t\n\tprivate List<CommonObject> a5;\n\n\t\n\tprivate boolean[] b5;\n\n\t\n\tprivate ObjectO2 c5;\n\n\tpublic static String getTestName() {\n\t\treturn testName;\n\t}\n\n\tpublic long getId() {\n\t\treturn id;\n\t}\n\n\tpublic void setId(long id) {\n\t\tthis.id = id;\n\t}\n\n\tpublic String getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(String a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic String getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(String b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic String getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(String c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic String getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(String e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic String getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(String f) {\n\t\tthis.f = f;\n\t}\n\n\tpublic String getG() {\n\t\treturn g;\n\t}\n\n\tpublic void setG(String g) {\n\t\tthis.g = g;\n\t}\n\n\tpublic ObjectA getH() {\n\t\treturn h;\n\t}\n\n\tpublic void setH(ObjectA h) {\n\t\tthis.h = h;\n\t}\n\n\tpublic int getI() {\n\t\treturn i;\n\t}\n\n\tpublic void setI(int i) {\n\t\tthis.i = i;\n\t}\n\n\tpublic int getJ() {\n\t\treturn j;\n\t}\n\n\tpublic void setJ(int j) {\n\t\tthis.j = j;\n\t}\n\n\tpublic String getK() {\n\t\treturn k;\n\t}\n\n\tpublic void setK(String k) {\n\t\tthis.k = k;\n\t}\n\n\tpublic String getL() {\n\t\treturn l;\n\t}\n\n\tpublic void setL(String l) {\n\t\tthis.l = l;\n\t}\n\n\tpublic ObjectB getM() {\n\t\treturn m;\n\t}\n\n\tpublic void setM(ObjectB m) {\n\t\tthis.m = m;\n\t}\n\n\tpublic int getN() {\n\t\treturn n;\n\t}\n\n\tpublic void setN(int n) {\n\t\tthis.n = n;\n\t}\n\n\tpublic String getO() {\n\t\treturn o;\n\t}\n\n\tpublic void setO(String o) {\n\t\tthis.o = o;\n\t}\n\n\tpublic int getP() {\n\t\treturn p;\n\t}\n\n\tpublic void setP(int p) {\n\t\tthis.p = p;\n\t}\n\n\tpublic long getQ() {\n\t\treturn q;\n\t}\n\n\tpublic void setQ(long q) {\n\t\tthis.q = q;\n\t}\n\n\tpublic long getR() {\n\t\treturn r;\n\t}\n\n\tpublic void setR(long r) {\n\t\tthis.r = r;\n\t}\n\n\tpublic long getS() {\n\t\treturn s;\n\t}\n\n\tpublic void setS(long s) {\n\t\tthis.s = s;\n\t}\n\n\tpublic long getT() {\n\t\treturn t;\n\t}\n\n\tpublic void setT(long t) {\n\t\tthis.t = t;\n\t}\n\n\tpublic long getU() {\n\t\treturn u;\n\t}\n\n\tpublic void setU(long u) {\n\t\tthis.u = u;\n\t}\n\n\tpublic long getV() {\n\t\treturn v;\n\t}\n\n\tpublic void setV(long v) {\n\t\tthis.v = v;\n\t}\n\n\tpublic int getW() {\n\t\treturn w;\n\t}\n\n\tpublic void setW(int w) {\n\t\tthis.w = w;\n\t}\n\n\tpublic int getX() {\n\t\treturn x;\n\t}\n\n\tpublic void setX(int x) {\n\t\tthis.x = x;\n\t}\n\n\tpublic boolean isY() {\n\t\treturn y;\n\t}\n\n\tpublic void setY(boolean y) {\n\t\tthis.y = y;\n\t}\n\n\tpublic List<ObjectC> getZ() {\n\t\treturn z;\n\t}\n\n\tpublic void setZ(List<ObjectC> z) {\n\t\tthis.z = z;\n\t}\n\n\tpublic List<ObjectD> getA1() {\n\t\treturn a1;\n\t}\n\n\tpublic void setA1(List<ObjectD> a1) {\n\t\tthis.a1 = a1;\n\t}\n\n\tpublic List<ObjectE> getB1() {\n\t\treturn b1;\n\t}\n\n\tpublic void setB1(List<ObjectE> b1) {\n\t\tthis.b1 = b1;\n\t}\n\n\tpublic List<CommonObject> getC1() {\n\t\treturn c1;\n\t}\n\n\tpublic void setC1(List<CommonObject> c1) {\n\t\tthis.c1 = c1;\n\t}\n\n\tpublic List<ObjectF> getD1() {\n\t\treturn d1;\n\t}\n\n\tpublic void setD1(List<ObjectF> d1) {\n\t\tthis.d1 = d1;\n\t}\n\n\tpublic List<ObjectG> getE1() {\n\t\treturn e1;\n\t}\n\n\tpublic void setE1(List<ObjectG> e1) {\n\t\tthis.e1 = e1;\n\t}\n\n\tpublic long getF1() {\n\t\treturn f1;\n\t}\n\n\tpublic void setF1(long f1) {\n\t\tthis.f1 = f1;\n\t}\n\n\tpublic long getG1() {\n\t\treturn g1;\n\t}\n\n\tpublic void setG1(long g1) {\n\t\tthis.g1 = g1;\n\t}\n\n\tpublic List<ObjectH> getH1() {\n\t\treturn h1;\n\t}\n\n\tpublic void setH1(List<ObjectH> h1) {\n\t\tthis.h1 = h1;\n\t}\n\n\tpublic List<Integer> getJ1() {\n\t\treturn j1;\n\t}\n\n\tpublic void setJ1(List<Integer> j1) {\n\t\tthis.j1 = j1;\n\t}\n\n\tpublic ObjectI getK1() {\n\t\treturn k1;\n\t}\n\n\tpublic void setK1(ObjectI k1) {\n\t\tthis.k1 = k1;\n\t}\n\n\tpublic List<Integer> getL1() {\n\t\treturn l1;\n\t}\n\n\tpublic void setL1(List<Integer> l1) {\n\t\tthis.l1 = l1;\n\t}\n\n\tpublic List<ObjectJ> getM1() {\n\t\treturn m1;\n\t}\n\n\tpublic void setM1(List<ObjectJ> m1) {\n\t\tthis.m1 = m1;\n\t}\n\n\tpublic ObjectL getN1() {\n\t\treturn n1;\n\t}\n\n\tpublic void setN1(ObjectL n1) {\n\t\tthis.n1 = n1;\n\t}\n\n\tpublic List<ObjectM> getO1() {\n\t\treturn o1;\n\t}\n\n\tpublic void setO1(List<ObjectM> o1) {\n\t\tthis.o1 = o1;\n\t}\n\n\tpublic ObjectN getP1() {\n\t\treturn p1;\n\t}\n\n\tpublic void setP1(ObjectN p1) {\n\t\tthis.p1 = p1;\n\t}\n\n\tpublic int getQ1() {\n\t\treturn q1;\n\t}\n\n\tpublic void setQ1(int q1) {\n\t\tthis.q1 = q1;\n\t}\n\n\tpublic long getR1() {\n\t\treturn r1;\n\t}\n\n\tpublic void setR1(long r1) {\n\t\tthis.r1 = r1;\n\t}\n\n\tpublic long[] getS1() {\n\t\treturn s1;\n\t}\n\n\tpublic void setS1(long[] s1) {\n\t\tthis.s1 = s1;\n\t}\n\n\tpublic ObjectO getT1() {\n\t\treturn t1;\n\t}\n\n\tpublic void setT1(ObjectO t1) {\n\t\tthis.t1 = t1;\n\t}\n\n\tpublic ObjectP getU1() {\n\t\treturn u1;\n\t}\n\n\tpublic void setU1(ObjectP u1) {\n\t\tthis.u1 = u1;\n\t}\n\n\tpublic List<ObjectQ> getV1() {\n\t\treturn v1;\n\t}\n\n\tpublic void setV1(List<ObjectQ> v1) {\n\t\tthis.v1 = v1;\n\t}\n\n\tpublic List<Integer> getW1() {\n\t\treturn w1;\n\t}\n\n\tpublic void setW1(List<Integer> w1) {\n\t\tthis.w1 = w1;\n\t}\n\n\tpublic List<ObjectR> getX1() {\n\t\treturn x1;\n\t}\n\n\tpublic void setX1(List<ObjectR> x1) {\n\t\tthis.x1 = x1;\n\t}\n\n\tpublic List<Integer> getY1() {\n\t\treturn y1;\n\t}\n\n\tpublic void setY1(List<Integer> y1) {\n\t\tthis.y1 = y1;\n\t}\n\n\tpublic List<ObjectS> getZ1() {\n\t\treturn z1;\n\t}\n\n\tpublic void setZ1(List<ObjectS> z1) {\n\t\tthis.z1 = z1;\n\t}\n\n\tpublic ObjectT getA2() {\n\t\treturn a2;\n\t}\n\n\tpublic void setA2(ObjectT a2) {\n\t\tthis.a2 = a2;\n\t}\n\n\tpublic List<ObjectU> getB2() {\n\t\treturn b2;\n\t}\n\n\tpublic void setB2(List<ObjectU> b2) {\n\t\tthis.b2 = b2;\n\t}\n\n\tpublic ObjectV getC2() {\n\t\treturn c2;\n\t}\n\n\tpublic void setC2(ObjectV c2) {\n\t\tthis.c2 = c2;\n\t}\n\n\tpublic List<ObjectW> getD2() {\n\t\treturn d2;\n\t}\n\n\tpublic void setD2(List<ObjectW> d2) {\n\t\tthis.d2 = d2;\n\t}\n\n\tpublic List<ObjectW> getE2() {\n\t\treturn e2;\n\t}\n\n\tpublic void setE2(List<ObjectW> e2) {\n\t\tthis.e2 = e2;\n\t}\n\n\tpublic ObjectX getF2() {\n\t\treturn f2;\n\t}\n\n\tpublic void setF2(ObjectX f2) {\n\t\tthis.f2 = f2;\n\t}\n\n\tpublic ObjectY getG2() {\n\t\treturn g2;\n\t}\n\n\tpublic void setG2(ObjectY g2) {\n\t\tthis.g2 = g2;\n\t}\n\n\tpublic ObjectZ getH2() {\n\t\treturn h2;\n\t}\n\n\tpublic void setH2(ObjectZ h2) {\n\t\tthis.h2 = h2;\n\t}\n\n\tpublic int getI2() {\n\t\treturn i2;\n\t}\n\n\tpublic void setI2(int i2) {\n\t\tthis.i2 = i2;\n\t}\n\n\tpublic ObjectA1 getJ2() {\n\t\treturn j2;\n\t}\n\n\tpublic void setJ2(ObjectA1 j2) {\n\t\tthis.j2 = j2;\n\t}\n\n\tpublic List<CommonObject2> getK2() {\n\t\treturn k2;\n\t}\n\n\tpublic void setK2(List<CommonObject2> k2) {\n\t\tthis.k2 = k2;\n\t}\n\n\tpublic ObjectB1 getL2() {\n\t\treturn l2;\n\t}\n\n\tpublic void setL2(ObjectB1 l2) {\n\t\tthis.l2 = l2;\n\t}\n\n\tpublic List<ObjectC1> getM2() {\n\t\treturn m2;\n\t}\n\n\tpublic void setM2(List<ObjectC1> m2) {\n\t\tthis.m2 = m2;\n\t}\n\n\tpublic int getN2() {\n\t\treturn n2;\n\t}\n\n\tpublic void setN2(int n2) {\n\t\tthis.n2 = n2;\n\t}\n\n\tpublic ObjectD1 getO2() {\n\t\treturn o2;\n\t}\n\n\tpublic void setO2(ObjectD1 o2) {\n\t\tthis.o2 = o2;\n\t}\n\n\tpublic int getP2() {\n\t\treturn p2;\n\t}\n\n\tpublic void setP2(int p2) {\n\t\tthis.p2 = p2;\n\t}\n\n\tpublic long getQ2() {\n\t\treturn q2;\n\t}\n\n\tpublic void setQ2(long q2) {\n\t\tthis.q2 = q2;\n\t}\n\n\tpublic long getR2() {\n\t\treturn r2;\n\t}\n\n\tpublic void setR2(long r2) {\n\t\tthis.r2 = r2;\n\t}\n\n\tpublic int getS2() {\n\t\treturn s2;\n\t}\n\n\tpublic void setS2(int s2) {\n\t\tthis.s2 = s2;\n\t}\n\n\tpublic int getT2() {\n\t\treturn t2;\n\t}\n\n\tpublic void setT2(int t2) {\n\t\tthis.t2 = t2;\n\t}\n\n\tpublic int getU2() {\n\t\treturn u2;\n\t}\n\n\tpublic void setU2(int u2) {\n\t\tthis.u2 = u2;\n\t}\n\n\tpublic int getV2() {\n\t\treturn v2;\n\t}\n\n\tpublic void setV2(int v2) {\n\t\tthis.v2 = v2;\n\t}\n\n\tpublic int getW2() {\n\t\treturn w2;\n\t}\n\n\tpublic void setW2(int w2) {\n\t\tthis.w2 = w2;\n\t}\n\n\tpublic List<ObjectE1> getX2() {\n\t\treturn x2;\n\t}\n\n\tpublic void setX2(List<ObjectE1> x2) {\n\t\tthis.x2 = x2;\n\t}\n\n\tpublic List<ObjectE1> getY2() {\n\t\treturn y2;\n\t}\n\n\tpublic void setY2(List<ObjectE1> y2) {\n\t\tthis.y2 = y2;\n\t}\n\n\tpublic ObjectF1 getZ2() {\n\t\treturn z2;\n\t}\n\n\tpublic void setZ2(ObjectF1 z2) {\n\t\tthis.z2 = z2;\n\t}\n\n\tpublic List<Integer> getA3() {\n\t\treturn a3;\n\t}\n\n\tpublic void setA3(List<Integer> a3) {\n\t\tthis.a3 = a3;\n\t}\n\n\tpublic List<ObjectG1> getB3() {\n\t\treturn b3;\n\t}\n\n\tpublic void setB3(List<ObjectG1> b3) {\n\t\tthis.b3 = b3;\n\t}\n\n\tpublic List<Integer> getC3() {\n\t\treturn c3;\n\t}\n\n\tpublic void setC3(List<Integer> c3) {\n\t\tthis.c3 = c3;\n\t}\n\n\tpublic ObjectH1 getD3() {\n\t\treturn d3;\n\t}\n\n\tpublic void setD3(ObjectH1 d3) {\n\t\tthis.d3 = d3;\n\t}\n\n\tpublic List<CommonObject> getE3() {\n\t\treturn e3;\n\t}\n\n\tpublic void setE3(List<CommonObject> e3) {\n\t\tthis.e3 = e3;\n\t}\n\n\tpublic ObjectI1 getF3() {\n\t\treturn f3;\n\t}\n\n\tpublic void setF3(ObjectI1 f3) {\n\t\tthis.f3 = f3;\n\t}\n\n\tpublic ObjectJ1 getG3() {\n\t\treturn g3;\n\t}\n\n\tpublic void setG3(ObjectJ1 g3) {\n\t\tthis.g3 = g3;\n\t}\n\n\tpublic ObjectK1 getH3() {\n\t\treturn h3;\n\t}\n\n\tpublic void setH3(ObjectK1 h3) {\n\t\tthis.h3 = h3;\n\t}\n\n\tpublic ObjectL1 getI3() {\n\t\treturn i3;\n\t}\n\n\tpublic void setI3(ObjectL1 i3) {\n\t\tthis.i3 = i3;\n\t}\n\n\tpublic ObjectM1 getJ3() {\n\t\treturn j3;\n\t}\n\n\tpublic void setJ3(ObjectM1 j3) {\n\t\tthis.j3 = j3;\n\t}\n\n\tpublic ObjectN1 getK3() {\n\t\treturn k3;\n\t}\n\n\tpublic void setK3(ObjectN1 k3) {\n\t\tthis.k3 = k3;\n\t}\n\n\tpublic List<CommonObject> getL3() {\n\t\treturn l3;\n\t}\n\n\tpublic void setL3(List<CommonObject> l3) {\n\t\tthis.l3 = l3;\n\t}\n\n\tpublic List<ObjectO1> getM3() {\n\t\treturn m3;\n\t}\n\n\tpublic void setM3(List<ObjectO1> m3) {\n\t\tthis.m3 = m3;\n\t}\n\n\tpublic ObjectP1 getN3() {\n\t\treturn n3;\n\t}\n\n\tpublic void setN3(ObjectP1 n3) {\n\t\tthis.n3 = n3;\n\t}\n\n\tpublic List<ObjectQ1> getO3() {\n\t\treturn o3;\n\t}\n\n\tpublic void setO3(List<ObjectQ1> o3) {\n\t\tthis.o3 = o3;\n\t}\n\n\tpublic ObjectR1 getP3() {\n\t\treturn p3;\n\t}\n\n\tpublic void setP3(ObjectR1 p3) {\n\t\tthis.p3 = p3;\n\t}\n\n\tpublic ObjectS1 getQ3() {\n\t\treturn q3;\n\t}\n\n\tpublic void setQ3(ObjectS1 q3) {\n\t\tthis.q3 = q3;\n\t}\n\n\tpublic List<ObjectT1> getR3() {\n\t\treturn r3;\n\t}\n\n\tpublic void setR3(List<ObjectT1> r3) {\n\t\tthis.r3 = r3;\n\t}\n\n\tpublic List<ObjectU1> getS3() {\n\t\treturn s3;\n\t}\n\n\tpublic void setS3(List<ObjectU1> s3) {\n\t\tthis.s3 = s3;\n\t}\n\n\tpublic ObjectV1 getT3() {\n\t\treturn t3;\n\t}\n\n\tpublic void setT3(ObjectV1 t3) {\n\t\tthis.t3 = t3;\n\t}\n\n\tpublic List<Integer> getU3() {\n\t\treturn u3;\n\t}\n\n\tpublic void setU3(List<Integer> u3) {\n\t\tthis.u3 = u3;\n\t}\n\n\tpublic int getV3() {\n\t\treturn v3;\n\t}\n\n\tpublic void setV3(int v3) {\n\t\tthis.v3 = v3;\n\t}\n\n\tpublic ObjectW1 getW3() {\n\t\treturn w3;\n\t}\n\n\tpublic void setW3(ObjectW1 w3) {\n\t\tthis.w3 = w3;\n\t}\n\n\tpublic List<ObjectX1> getX3() {\n\t\treturn x3;\n\t}\n\n\tpublic void setX3(List<ObjectX1> x3) {\n\t\tthis.x3 = x3;\n\t}\n\n\tpublic List<Integer> getY3() {\n\t\treturn y3;\n\t}\n\n\tpublic void setY3(List<Integer> y3) {\n\t\tthis.y3 = y3;\n\t}\n\n\tpublic List<Integer> getZ3() {\n\t\treturn z3;\n\t}\n\n\tpublic void setZ3(List<Integer> z3) {\n\t\tthis.z3 = z3;\n\t}\n\n\tpublic int getA4() {\n\t\treturn a4;\n\t}\n\n\tpublic void setA4(int a4) {\n\t\tthis.a4 = a4;\n\t}\n\n\tpublic List<ObjectY1> getB4() {\n\t\treturn b4;\n\t}\n\n\tpublic void setB4(List<ObjectY1> b4) {\n\t\tthis.b4 = b4;\n\t}\n\n\tpublic ObjectZ1 getC4() {\n\t\treturn c4;\n\t}\n\n\tpublic void setC4(ObjectZ1 c4) {\n\t\tthis.c4 = c4;\n\t}\n\n\tpublic List<ObjectA2> getD4() {\n\t\treturn d4;\n\t}\n\n\tpublic void setD4(List<ObjectA2> d4) {\n\t\tthis.d4 = d4;\n\t}\n\n\tpublic ObjectB2 getE4() {\n\t\treturn e4;\n\t}\n\n\tpublic void setE4(ObjectB2 e4) {\n\t\tthis.e4 = e4;\n\t}\n\n\tpublic List<ObjectC2> getF4() {\n\t\treturn f4;\n\t}\n\n\tpublic void setF4(List<ObjectC2> f4) {\n\t\tthis.f4 = f4;\n\t}\n\n\tpublic List<ObjectD2> getG4() {\n\t\treturn g4;\n\t}\n\n\tpublic void setG4(List<ObjectD2> g4) {\n\t\tthis.g4 = g4;\n\t}\n\n\tpublic List<ObjectE2> getH4() {\n\t\treturn h4;\n\t}\n\n\tpublic void setH4(List<ObjectE2> h4) {\n\t\tthis.h4 = h4;\n\t}\n\n\tpublic ObjectF2 getI4() {\n\t\treturn i4;\n\t}\n\n\tpublic void setI4(ObjectF2 i4) {\n\t\tthis.i4 = i4;\n\t}\n\n\tpublic ObjectG2 getJ4() {\n\t\treturn j4;\n\t}\n\n\tpublic void setJ4(ObjectG2 j4) {\n\t\tthis.j4 = j4;\n\t}\n\n\tpublic ObjectH2 getK4() {\n\t\treturn k4;\n\t}\n\n\tpublic void setK4(ObjectH2 k4) {\n\t\tthis.k4 = k4;\n\t}\n\n\tpublic ObjectI2 getL4() {\n\t\treturn l4;\n\t}\n\n\tpublic void setL4(ObjectI2 l4) {\n\t\tthis.l4 = l4;\n\t}\n\n\tpublic int getM4() {\n\t\treturn m4;\n\t}\n\n\tpublic void setM4(int m4) {\n\t\tthis.m4 = m4;\n\t}\n\n\tpublic ObjectJ2 getN4() {\n\t\treturn n4;\n\t}\n\n\tpublic void setN4(ObjectJ2 n4) {\n\t\tthis.n4 = n4;\n\t}\n\n\tpublic List<ObjectK2> getO4() {\n\t\treturn o4;\n\t}\n\n\tpublic void setO4(List<ObjectK2> o4) {\n\t\tthis.o4 = o4;\n\t}\n\n\tpublic int getP4() {\n\t\treturn p4;\n\t}\n\n\tpublic void setP4(int p4) {\n\t\tthis.p4 = p4;\n\t}\n\n\tpublic int getQ4() {\n\t\treturn q4;\n\t}\n\n\tpublic void setQ4(int q4) {\n\t\tthis.q4 = q4;\n\t}\n\n\tpublic List<Integer> getR4() {\n\t\treturn r4;\n\t}\n\n\tpublic void setR4(List<Integer> r4) {\n\t\tthis.r4 = r4;\n\t}\n\n\tpublic List<String> getS4() {\n\t\treturn s4;\n\t}\n\n\tpublic void setS4(List<String> s4) {\n\t\tthis.s4 = s4;\n\t}\n\n\tpublic int getT4() {\n\t\treturn t4;\n\t}\n\n\tpublic void setT4(int t4) {\n\t\tthis.t4 = t4;\n\t}\n\n\tpublic boolean isU4() {\n\t\treturn u4;\n\t}\n\n\tpublic void setU4(boolean u4) {\n\t\tthis.u4 = u4;\n\t}\n\n\tpublic List<ObjectL2> getV4() {\n\t\treturn v4;\n\t}\n\n\tpublic void setV4(List<ObjectL2> v4) {\n\t\tthis.v4 = v4;\n\t}\n\n\tpublic int getW4() {\n\t\treturn w4;\n\t}\n\n\tpublic void setW4(int w4) {\n\t\tthis.w4 = w4;\n\t}\n\n\tpublic ObjectM2 getX4() {\n\t\treturn x4;\n\t}\n\n\tpublic void setX4(ObjectM2 x4) {\n\t\tthis.x4 = x4;\n\t}\n\n\tpublic ObjectM2 getY4() {\n\t\treturn y4;\n\t}\n\n\tpublic void setY4(ObjectM2 y4) {\n\t\tthis.y4 = y4;\n\t}\n\n\tpublic List<ObjectN2> getZ4() {\n\t\treturn z4;\n\t}\n\n\tpublic void setZ4(List<ObjectN2> z4) {\n\t\tthis.z4 = z4;\n\t}\n\n\tpublic List<CommonObject> getA5() {\n\t\treturn a5;\n\t}\n\n\tpublic void setA5(List<CommonObject> a5) {\n\t\tthis.a5 = a5;\n\t}\n\n\tpublic boolean[] getB5() {\n\t\treturn b5;\n\t}\n\n\tpublic void setB5(boolean[] b5) {\n\t\tthis.b5 = b5;\n\t}\n\n\tpublic ObjectO2 getC5() {\n\t\treturn c5;\n\t}\n\n\tpublic void setC5(ObjectO2 c5) {\n\t\tthis.c5 = c5;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectA.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\npublic class ObjectA {\n\n    private static final String NULL = \"NULL\";\n    \n    private String a = NULL;\n\n    private String b = NULL;\n\n    private String c = NULL;\n    \n    private String d = NULL;\n\n    \n    \n    private String e = NULL;\n\n    \n    \n    private int f;\n\n    \n    \n    private int g;\n\n    \n    \n    private float h;\n\n    \n    \n    private String i = NULL;\n\n    \n    \n    private int j;\n\n    \n    \n    private String k = NULL;\n\n    \n    \n    private String l = NULL;\n\n    \n    \n    private String m = NULL;\n\n    \n    \n    private int n = 1;\n\n    \n\n    private String o = NULL;\n\n    \n    \n    private String p = NULL;\n\n    \n    \n    private int q;\n\n    \n    \n    private int r;\n\n    \n    \n    private String s = \"NULL\";\n\n\n    \n    \n    private String t = \"NULL\";\n\n    \n    \n    private String u = \"NULL\";\n\n    \n    \n    private String v = \"NULL\";\n\n\n    public static String getNULL() {\n        return NULL;\n    }\n\n    public String getA() {\n        return a;\n    }\n\n    public void setA(String a) {\n        this.a = a;\n    }\n\n    public String getB() {\n        return b;\n    }\n\n    public void setB(String b) {\n        this.b = b;\n    }\n\n    public String getC() {\n        return c;\n    }\n\n    public void setC(String c) {\n        this.c = c;\n    }\n\n    public String getD() {\n        return d;\n    }\n\n    public void setD(String d) {\n        this.d = d;\n    }\n\n    public String getE() {\n        return e;\n    }\n\n    public void setE(String e) {\n        this.e = e;\n    }\n\n    public int getF() {\n        return f;\n    }\n\n    public void setF(int f) {\n        this.f = f;\n    }\n\n    public int getG() {\n        return g;\n    }\n\n    public void setG(int g) {\n        this.g = g;\n    }\n\n    public float getH() {\n        return h;\n    }\n\n    public void setH(float h) {\n        this.h = h;\n    }\n\n    public String getI() {\n        return i;\n    }\n\n    public void setI(String i) {\n        this.i = i;\n    }\n\n    public int getJ() {\n        return j;\n    }\n\n    public void setJ(int j) {\n        this.j = j;\n    }\n\n    public String getK() {\n        return k;\n    }\n\n    public void setK(String k) {\n        this.k = k;\n    }\n\n    public String getL() {\n        return l;\n    }\n\n    public void setL(String l) {\n        this.l = l;\n    }\n\n    public String getM() {\n        return m;\n    }\n\n    public void setM(String m) {\n        this.m = m;\n    }\n\n    public int getN() {\n        return n;\n    }\n\n    public void setN(int n) {\n        this.n = n;\n    }\n\n    public String getO() {\n        return o;\n    }\n\n    public void setO(String o) {\n        this.o = o;\n    }\n\n    public String getP() {\n        return p;\n    }\n\n    public void setP(String p) {\n        this.p = p;\n    }\n\n    public int getQ() {\n        return q;\n    }\n\n    public void setQ(int q) {\n        this.q = q;\n    }\n\n    public int getR() {\n        return r;\n    }\n\n    public void setR(int r) {\n        this.r = r;\n    }\n\n    public String getS() {\n        return s;\n    }\n\n    public void setS(String s) {\n        this.s = s;\n    }\n\n    public String getT() {\n        return t;\n    }\n\n    public void setT(String t) {\n        this.t = t;\n    }\n\n    public String getU() {\n        return u;\n    }\n\n    public void setU(String u) {\n        this.u = u;\n    }\n\n    public String getV() {\n        return v;\n    }\n\n    public void setV(String v) {\n        this.v = v;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectA1.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\nimport java.util.List;\n\n\npublic class ObjectA1 {\n\t\n\tprivate List<CommonObject> a;\n\t\n\tprivate CommonObject b;\n\n\n\t\n\tprivate CommonObject c;\n\n\t\n\tprivate List<CommonObject> d;\n\n\t\n\tprivate boolean e = true;\n\n\tpublic List<CommonObject> getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(List<CommonObject> a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic CommonObject getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(CommonObject b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic CommonObject getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(CommonObject c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic List<CommonObject> getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(List<CommonObject> d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic boolean isE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(boolean e) {\n\t\tthis.e = e;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectA2.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\npublic class ObjectA2 {\n\t\n\tprivate int a;\n\t\n\tprivate int b;\n\n\t\n\tprivate long c;\n\n\t\n\tprivate int d;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic long getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(long c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectB.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\npublic class ObjectB {\n\t\n\tprivate long a;\n\t\n\tprivate long b;\n\t\n\tprivate long c;\n\t\n\tprivate long d;\n\t\n\tprivate long e;\n\t\n\tprivate long f;\n\t\n\tprivate long g;\n\n\t\n\tprivate long h;\n\n\t\n\tprivate long i;\n\n\t\n\tprivate long j;\n\n\t\n\tprivate long k = 0;\n\n\t\n\tprivate long l = 0;\n\t\n\tprivate long m = 0;\n\n\t\n\tprivate long n;\n\n\t\n\tprivate long o;\n\n\t\n\tprivate long p;\n\n\t\n\tprivate int q;\n\n\tpublic long getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(long a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic long getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(long b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic long getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(long c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic long getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(long d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic long getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(long e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic long getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(long f) {\n\t\tthis.f = f;\n\t}\n\n\tpublic long getG() {\n\t\treturn g;\n\t}\n\n\tpublic void setG(long g) {\n\t\tthis.g = g;\n\t}\n\n\tpublic long getH() {\n\t\treturn h;\n\t}\n\n\tpublic void setH(long h) {\n\t\tthis.h = h;\n\t}\n\n\tpublic long getI() {\n\t\treturn i;\n\t}\n\n\tpublic void setI(long i) {\n\t\tthis.i = i;\n\t}\n\n\tpublic long getJ() {\n\t\treturn j;\n\t}\n\n\tpublic void setJ(long j) {\n\t\tthis.j = j;\n\t}\n\n\tpublic long getK() {\n\t\treturn k;\n\t}\n\n\tpublic void setK(long k) {\n\t\tthis.k = k;\n\t}\n\n\tpublic long getL() {\n\t\treturn l;\n\t}\n\n\tpublic void setL(long l) {\n\t\tthis.l = l;\n\t}\n\n\tpublic long getM() {\n\t\treturn m;\n\t}\n\n\tpublic void setM(long m) {\n\t\tthis.m = m;\n\t}\n\n\tpublic long getN() {\n\t\treturn n;\n\t}\n\n\tpublic void setN(long n) {\n\t\tthis.n = n;\n\t}\n\n\tpublic long getO() {\n\t\treturn o;\n\t}\n\n\tpublic void setO(long o) {\n\t\tthis.o = o;\n\t}\n\n\tpublic long getP() {\n\t\treturn p;\n\t}\n\n\tpublic void setP(long p) {\n\t\tthis.p = p;\n\t}\n\n\tpublic int getQ() {\n\t\treturn q;\n\t}\n\n\tpublic void setQ(int q) {\n\t\tthis.q = q;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectB1.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\nimport java.util.List;\n\npublic class ObjectB1 {\n    \n    List<ObjectI_A> a;\n\n    \n    private int b;\n\n    public List<ObjectI_A> getA() {\n        return a;\n    }\n\n    public void setA(List<ObjectI_A> a) {\n        this.a = a;\n    }\n\n    public int getB() {\n        return b;\n    }\n\n    public void setB(int b) {\n        this.b = b;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectB2.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport java.util.List;\n\npublic class ObjectB2 {\n\n\n    \n    @JSONField(serialize = false)\n    private int a = 1;\n\n\n    \n    @JSONField(serialize = false)\n    private long b;\n\n\n    private List<Boolean> c;\n\n\n    private List<Integer> d;\n\n    public int getA() {\n        return a;\n    }\n\n    public void setA(int a) {\n        this.a = a;\n    }\n\n    public long getB() {\n        return b;\n    }\n\n    public void setB(long b) {\n        this.b = b;\n    }\n\n    public List<Boolean> getC() {\n        return c;\n    }\n\n    public void setC(List<Boolean> c) {\n        this.c = c;\n    }\n\n    public List<Integer> getD() {\n        return d;\n    }\n\n    public void setD(List<Integer> d) {\n        this.d = d;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectC.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\npublic class ObjectC {\n\t\n\tprivate int a;\n\t\n\tprivate int b = 0;\n\t\n\tprivate long c;\n\t\n\tprivate int d;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic long getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(long c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectC1.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\npublic class ObjectC1 {\n\t\n\tprivate int a;\n\n\t\n\tprivate int b;\n\t\n\tprivate int c;\n\t\n\tprivate int d;\n\n\tprivate int e;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic int getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(int e) {\n\t\tthis.e = e;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectC2.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\npublic class ObjectC2 {\n    private int a;\n\n    private boolean b;\n\n    public int getA() {\n        return a;\n    }\n\n    public void setA(int a) {\n        this.a = a;\n    }\n\n    public boolean isB() {\n        return b;\n    }\n\n    public void setB(boolean b) {\n        this.b = b;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectD.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\nimport java.util.List;\n\npublic class ObjectD {\n\t\n\tprivate int a;\n\n\t\n\tprivate int b;\n\n\t\n\tprivate int c;\n\n\t\n\tprivate int d;\n\n\t\n\tprivate boolean e;\n\n\t\n\tprivate List<ObjectD_A> f;\n\n\t\n\tprivate int g;\n\n\t\n\tprivate int h;\n\n\t\n\tprivate long i;\n\n\t\n\tprivate long j;\n\n\t\n\tprivate int k;\n\n\t\n\tprivate int l;\n\n\t\n\tprivate ObjectD_B m;\n\t\n\tprivate long n;\n\t\n\tprivate long o;\n\t\n\tprivate long dieFans;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic boolean isE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(boolean e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic List<ObjectD_A> getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(List<ObjectD_A> f) {\n\t\tthis.f = f;\n\t}\n\n\tpublic int getG() {\n\t\treturn g;\n\t}\n\n\tpublic void setG(int g) {\n\t\tthis.g = g;\n\t}\n\n\tpublic int getH() {\n\t\treturn h;\n\t}\n\n\tpublic void setH(int h) {\n\t\tthis.h = h;\n\t}\n\n\tpublic long getI() {\n\t\treturn i;\n\t}\n\n\tpublic void setI(long i) {\n\t\tthis.i = i;\n\t}\n\n\tpublic long getJ() {\n\t\treturn j;\n\t}\n\n\tpublic void setJ(long j) {\n\t\tthis.j = j;\n\t}\n\n\tpublic int getK() {\n\t\treturn k;\n\t}\n\n\tpublic void setK(int k) {\n\t\tthis.k = k;\n\t}\n\n\tpublic int getL() {\n\t\treturn l;\n\t}\n\n\tpublic void setL(int l) {\n\t\tthis.l = l;\n\t}\n\n\tpublic ObjectD_B getM() {\n\t\treturn m;\n\t}\n\n\tpublic void setM(ObjectD_B m) {\n\t\tthis.m = m;\n\t}\n\n\tpublic long getN() {\n\t\treturn n;\n\t}\n\n\tpublic void setN(long n) {\n\t\tthis.n = n;\n\t}\n\n\tpublic long getO() {\n\t\treturn o;\n\t}\n\n\tpublic void setO(long o) {\n\t\tthis.o = o;\n\t}\n\n\tpublic long getDieFans() {\n\t\treturn dieFans;\n\t}\n\n\tpublic void setDieFans(long dieFans) {\n\t\tthis.dieFans = dieFans;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectD1.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\nimport java.util.List;\n\npublic class ObjectD1 {\n\t\n\tprivate int a;\n\t\n\tprivate int b;\n\t\n\tprivate List<ObjectD1_A> c;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic List<ObjectD1_A> getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(List<ObjectD1_A> c) {\n\t\tthis.c = c;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectD1_A.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\nimport java.util.List;\n\npublic class ObjectD1_A {\n\t\n\tprivate int a;\n\t\n\tprivate List<Integer> b;\n\t\n\tprivate int c;\n\n\t\n\tprivate CommonObject d;\n\n\t\n\tprivate int e;\n\n\t\n\tprivate int f;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic List<Integer> getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(List<Integer> b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic CommonObject getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(CommonObject d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic int getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(int e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic int getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(int f) {\n\t\tthis.f = f;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectD2.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\nimport java.util.List;\n\n\npublic class ObjectD2 {\n\t\n\tprivate int a;\n\t\n\tprivate int b;\n\t\n\tprivate int c;\n\t\n\tprivate List<Integer> d;\n\tprivate List<Integer> e;\n\tprivate List<Integer> f;\n\tprivate List<Integer> g;\n\tprivate List<Integer> h;\n\t\n\tprivate List<CommonObject> i;\n\t\n\tprivate int j;\n\t\n\tprivate int k;\n\t\n\tprivate int l;\n\tprivate boolean m;\n\tprivate boolean n;\n\t\n\tprivate int o;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic List<Integer> getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(List<Integer> d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic List<Integer> getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(List<Integer> e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic List<Integer> getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(List<Integer> f) {\n\t\tthis.f = f;\n\t}\n\n\tpublic List<Integer> getG() {\n\t\treturn g;\n\t}\n\n\tpublic void setG(List<Integer> g) {\n\t\tthis.g = g;\n\t}\n\n\tpublic List<Integer> getH() {\n\t\treturn h;\n\t}\n\n\tpublic void setH(List<Integer> h) {\n\t\tthis.h = h;\n\t}\n\n\tpublic List<CommonObject> getI() {\n\t\treturn i;\n\t}\n\n\tpublic void setI(List<CommonObject> i) {\n\t\tthis.i = i;\n\t}\n\n\tpublic int getJ() {\n\t\treturn j;\n\t}\n\n\tpublic void setJ(int j) {\n\t\tthis.j = j;\n\t}\n\n\tpublic int getK() {\n\t\treturn k;\n\t}\n\n\tpublic void setK(int k) {\n\t\tthis.k = k;\n\t}\n\n\tpublic int getL() {\n\t\treturn l;\n\t}\n\n\tpublic void setL(int l) {\n\t\tthis.l = l;\n\t}\n\n\tpublic boolean isM() {\n\t\treturn m;\n\t}\n\n\tpublic void setM(boolean m) {\n\t\tthis.m = m;\n\t}\n\n\tpublic boolean isN() {\n\t\treturn n;\n\t}\n\n\tpublic void setN(boolean n) {\n\t\tthis.n = n;\n\t}\n\n\tpublic int getO() {\n\t\treturn o;\n\t}\n\n\tpublic void setO(int o) {\n\t\tthis.o = o;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectD_A.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\npublic class ObjectD_A {\n\t\n\tprivate int a;\n\n\t\n\tprivate boolean b;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic boolean isB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(boolean b) {\n\t\tthis.b = b;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectD_B.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\n\npublic class ObjectD_B {\n\t\n\tprivate int a;\n\t\n\tprivate int b;\n\t\n\tprivate int c;\n\t\n\tprivate int d;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectE.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\n\npublic class ObjectE {\n\t\n\tprivate int a;\n\n\t\n\tprivate int b;\n\n\t\n\tprivate int c;\n\n\t\n\tprivate int d;\n\n\t\n\tprivate int e;\n\n\t\n\tprivate boolean f;\n\n\t\n\tprivate long g;\n\n\t\n\tprivate int h;\n\n\t\n\tprivate int i;\n\n\t\n\tpublic int j() {\n\t\treturn -1;\n\t}\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic int getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(int e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic boolean isF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(boolean f) {\n\t\tthis.f = f;\n\t}\n\n\tpublic long getG() {\n\t\treturn g;\n\t}\n\n\tpublic void setG(long g) {\n\t\tthis.g = g;\n\t}\n\n\tpublic int getH() {\n\t\treturn h;\n\t}\n\n\tpublic void setH(int h) {\n\t\tthis.h = h;\n\t}\n\n\tpublic int getI() {\n\t\treturn i;\n\t}\n\n\tpublic void setI(int i) {\n\t\tthis.i = i;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectE1.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\n\n\npublic class ObjectE1 {\n\t\n\tprivate int a;\n\t\n\tprivate int b;\n\n\tprivate int c;\n\t\n\tprivate int d;\n\t\n\tprivate long e;\n\t\n\tprivate long f;\n\t\n\tprivate boolean g;\n\t\n\tprivate int h;\n\t\n\tprivate int i;\n\t\n\tprivate int j;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic long getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(long e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic long getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(long f) {\n\t\tthis.f = f;\n\t}\n\n\tpublic boolean isG() {\n\t\treturn g;\n\t}\n\n\tpublic void setG(boolean g) {\n\t\tthis.g = g;\n\t}\n\n\tpublic int getH() {\n\t\treturn h;\n\t}\n\n\tpublic void setH(int h) {\n\t\tthis.h = h;\n\t}\n\n\tpublic int getI() {\n\t\treturn i;\n\t}\n\n\tpublic void setI(int i) {\n\t\tthis.i = i;\n\t}\n\n\tpublic int getJ() {\n\t\treturn j;\n\t}\n\n\tpublic void setJ(int j) {\n\t\tthis.j = j;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectE2.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\npublic class ObjectE2 {\n\t\n\tprivate int a;\n\n\t\n\tprivate boolean b;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic boolean isB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(boolean b) {\n\t\tthis.b = b;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectF.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\nimport java.util.List;\n\n\npublic class ObjectF {\n\t\n\tprotected long a;\n\n\t\n\tprotected int b;\n\n\t\n\tprotected  int c;\n\n\t\n\tprotected long d;\n\n\t\n\tprotected long e;\n\n\t\n\tprotected String f = \"\";\n\n\t\n\tprotected long g;\n\t\n\tprotected String h = \"\";\n\t\n\tprotected String i = \"\";\n\t\n\tprotected int j;\n\t\n\tprotected long k;\n\n\t\n\tprotected int l;\n\n\t\n\tprivate int m;\n\t\n\tprotected List<Integer> n;\n\n\t\n\tprotected List<String> o;\n\n\t\n\tprotected List<CommonObject> p;\n\n\tpublic long getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(long a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic long getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(long d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic long getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(long e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic String getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(String f) {\n\t\tthis.f = f;\n\t}\n\n\tpublic long getG() {\n\t\treturn g;\n\t}\n\n\tpublic void setG(long g) {\n\t\tthis.g = g;\n\t}\n\n\tpublic String getH() {\n\t\treturn h;\n\t}\n\n\tpublic void setH(String h) {\n\t\tthis.h = h;\n\t}\n\n\tpublic String getI() {\n\t\treturn i;\n\t}\n\n\tpublic void setI(String i) {\n\t\tthis.i = i;\n\t}\n\n\tpublic int getJ() {\n\t\treturn j;\n\t}\n\n\tpublic void setJ(int j) {\n\t\tthis.j = j;\n\t}\n\n\tpublic long getK() {\n\t\treturn k;\n\t}\n\n\tpublic void setK(long k) {\n\t\tthis.k = k;\n\t}\n\n\tpublic int getL() {\n\t\treturn l;\n\t}\n\n\tpublic void setL(int l) {\n\t\tthis.l = l;\n\t}\n\n\tpublic int getM() {\n\t\treturn m;\n\t}\n\n\tpublic void setM(int m) {\n\t\tthis.m = m;\n\t}\n\n\tpublic List<Integer> getN() {\n\t\treturn n;\n\t}\n\n\tpublic void setN(List<Integer> n) {\n\t\tthis.n = n;\n\t}\n\n\tpublic List<String> getO() {\n\t\treturn o;\n\t}\n\n\tpublic void setO(List<String> o) {\n\t\tthis.o = o;\n\t}\n\n\tpublic List<CommonObject> getP() {\n\t\treturn p;\n\t}\n\n\tpublic void setP(List<CommonObject> p) {\n\t\tthis.p = p;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectF1.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport java.util.List;\n\n\npublic class ObjectF1 {\n    \n    long a = -1;\n    int b = 0;\n    \n    long c = 0;\n    \n    int d = 0;\n    \n    int e = 0;\n\n\n    @JSONField(serialize = false)\n    String f = \"\";\n\n    transient boolean g;\n    \n    long h;\n\n    \n    long i;\n\n    \n    int j;\n    \n    int k;\n    \n    int l;\n\n    \n    int m;\n\n    \n    int n;\n\n    \n    List<Long> o;\n\n    \n    int p;\n\n    \n    int q;\n\n    public long getA() {\n        return a;\n    }\n\n    public void setA(long a) {\n        this.a = a;\n    }\n\n    public int getB() {\n        return b;\n    }\n\n    public void setB(int b) {\n        this.b = b;\n    }\n\n    public long getC() {\n        return c;\n    }\n\n    public void setC(long c) {\n        this.c = c;\n    }\n\n    public int getD() {\n        return d;\n    }\n\n    public void setD(int d) {\n        this.d = d;\n    }\n\n    public int getE() {\n        return e;\n    }\n\n    public void setE(int e) {\n        this.e = e;\n    }\n\n    public String getF() {\n        return f;\n    }\n\n    public void setF(String f) {\n        this.f = f;\n    }\n\n    public boolean isG() {\n        return g;\n    }\n\n    public void setG(boolean g) {\n        this.g = g;\n    }\n\n    public long getH() {\n        return h;\n    }\n\n    public void setH(long h) {\n        this.h = h;\n    }\n\n    public long getI() {\n        return i;\n    }\n\n    public void setI(long i) {\n        this.i = i;\n    }\n\n    public int getJ() {\n        return j;\n    }\n\n    public void setJ(int j) {\n        this.j = j;\n    }\n\n    public int getK() {\n        return k;\n    }\n\n    public void setK(int k) {\n        this.k = k;\n    }\n\n    public int getL() {\n        return l;\n    }\n\n    public void setL(int l) {\n        this.l = l;\n    }\n\n    public int getM() {\n        return m;\n    }\n\n    public void setM(int m) {\n        this.m = m;\n    }\n\n    public int getN() {\n        return n;\n    }\n\n    public void setN(int n) {\n        this.n = n;\n    }\n\n    public List<Long> getO() {\n        return o;\n    }\n\n    public void setO(List<Long> o) {\n        this.o = o;\n    }\n\n    public int getP() {\n        return p;\n    }\n\n    public void setP(int p) {\n        this.p = p;\n    }\n\n    public int getQ() {\n        return q;\n    }\n\n    public void setQ(int q) {\n        this.q = q;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectF2.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\nimport java.util.List;\n\n\npublic class ObjectF2 {\n\n\t\n\tprivate int a;\n\n\t\n\tprivate int b;\n\n\t\n\tprivate List<Integer> c;\n\n\t\n\tprivate boolean d;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic List<Integer> getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(List<Integer> c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic boolean isD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(boolean d) {\n\t\tthis.d = d;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectG.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\nimport com.alibaba.fastjson.annotation.JSONField;\n\n\npublic class ObjectG {\n\n\tpublic static final String tesdt = \"tesdt\";\n\n\n\t@JSONField(name = \"a\")\n\tprivate long a;\n\n\n\tprivate long b;\n\n\n\tprivate ObjectF c;\n\n\tpublic long getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(long a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic long getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(long b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic ObjectF getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(ObjectF c) {\n\t\tthis.c = c;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectG1.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\n\npublic class ObjectG1 {\n\tprivate int a;\n\tprivate int b;\n\tprivate int c;\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectG2.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\nimport java.util.List;\n\n\npublic class ObjectG2 {\n\t\n\tprivate int a;\n\n\t\n\tprivate boolean b = true;\n\n\t\n\tprivate List<CommonObject> c;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic boolean isB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(boolean b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic List<CommonObject> getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(List<CommonObject> c) {\n\t\tthis.c = c;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectH.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectH {\n\t\n\tprivate int a;\n\n\t\n\tprivate long b;\n\t\n\tprivate int c;\n\t\n\tprivate int d;\n\t\n\tprivate int e;\n\t\n\tprivate int f;\n\t\n\tprivate int g;\n\t\n\tprivate int h;\n\t\n\tprivate int i;\n\t\n\tprivate int j;\n\n\t\n\n\tprivate int k;\n\n\t\n\n\tprivate int l;\n\n\t\n\n\tprivate List<ObjectH_A> m;\n\n\t\n\n\tprivate int n;\n\n\t\n\tprivate int o;\n\n\t\n\tprivate boolean p = false;\n\n\t\n\tprivate boolean q = false;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic long getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(long b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic int getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(int e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic int getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(int f) {\n\t\tthis.f = f;\n\t}\n\n\tpublic int getG() {\n\t\treturn g;\n\t}\n\n\tpublic void setG(int g) {\n\t\tthis.g = g;\n\t}\n\n\tpublic int getH() {\n\t\treturn h;\n\t}\n\n\tpublic void setH(int h) {\n\t\tthis.h = h;\n\t}\n\n\tpublic int getI() {\n\t\treturn i;\n\t}\n\n\tpublic void setI(int i) {\n\t\tthis.i = i;\n\t}\n\n\tpublic int getJ() {\n\t\treturn j;\n\t}\n\n\tpublic void setJ(int j) {\n\t\tthis.j = j;\n\t}\n\n\tpublic int getK() {\n\t\treturn k;\n\t}\n\n\tpublic void setK(int k) {\n\t\tthis.k = k;\n\t}\n\n\tpublic int getL() {\n\t\treturn l;\n\t}\n\n\tpublic void setL(int l) {\n\t\tthis.l = l;\n\t}\n\n\tpublic List<ObjectH_A> getM() {\n\t\treturn m;\n\t}\n\n\tpublic void setM(List<ObjectH_A> m) {\n\t\tthis.m = m;\n\t}\n\n\tpublic int getN() {\n\t\treturn n;\n\t}\n\n\tpublic void setN(int n) {\n\t\tthis.n = n;\n\t}\n\n\tpublic int getO() {\n\t\treturn o;\n\t}\n\n\tpublic void setO(int o) {\n\t\tthis.o = o;\n\t}\n\n\tpublic boolean isP() {\n\t\treturn p;\n\t}\n\n\tpublic void setP(boolean p) {\n\t\tthis.p = p;\n\t}\n\n\tpublic boolean isQ() {\n\t\treturn q;\n\t}\n\n\tpublic void setQ(boolean q) {\n\t\tthis.q = q;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectH1.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectH1 {\n\n\t\n\tprivate List<Integer> a;\n\n\t\n\tprivate List<Integer> b;\n\t\n\tprivate List<Integer> c;\n\t\n\tprivate List<Integer> d;\n\t\n\tprivate int e;\n\n\t\n\tprivate int f;\n\t\n\tprivate int g;\n\t\n\tprivate int h;\n\t\n\tprivate int i;\n\t\n\tprivate int j;\n\t\n\tprivate int k;\n\t\n\tprivate int l;\n\t\n\tprivate List<Integer> m;\n\t\n\tprivate List<Integer> n;\n\t\n\tprivate List<Integer> o;\n\n\tpublic List<Integer> getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(List<Integer> a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic List<Integer> getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(List<Integer> b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic List<Integer> getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(List<Integer> c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic List<Integer> getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(List<Integer> d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic int getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(int e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic int getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(int f) {\n\t\tthis.f = f;\n\t}\n\n\tpublic int getG() {\n\t\treturn g;\n\t}\n\n\tpublic void setG(int g) {\n\t\tthis.g = g;\n\t}\n\n\tpublic int getH() {\n\t\treturn h;\n\t}\n\n\tpublic void setH(int h) {\n\t\tthis.h = h;\n\t}\n\n\tpublic int getI() {\n\t\treturn i;\n\t}\n\n\tpublic void setI(int i) {\n\t\tthis.i = i;\n\t}\n\n\tpublic int getJ() {\n\t\treturn j;\n\t}\n\n\tpublic void setJ(int j) {\n\t\tthis.j = j;\n\t}\n\n\tpublic int getK() {\n\t\treturn k;\n\t}\n\n\tpublic void setK(int k) {\n\t\tthis.k = k;\n\t}\n\n\tpublic int getL() {\n\t\treturn l;\n\t}\n\n\tpublic void setL(int l) {\n\t\tthis.l = l;\n\t}\n\n\tpublic List<Integer> getM() {\n\t\treturn m;\n\t}\n\n\tpublic void setM(List<Integer> m) {\n\t\tthis.m = m;\n\t}\n\n\tpublic List<Integer> getN() {\n\t\treturn n;\n\t}\n\n\tpublic void setN(List<Integer> n) {\n\t\tthis.n = n;\n\t}\n\n\tpublic List<Integer> getO() {\n\t\treturn o;\n\t}\n\n\tpublic void setO(List<Integer> o) {\n\t\tthis.o = o;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectH2.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\nimport java.util.List;\n\n\npublic class ObjectH2 {\n\n    \n    private boolean a;\n\n\n    \n    private int b;\n\n    \n    private int c;\n\n    \n    private boolean d;\n\n    \n    private List<CommonObject> e;\n\n    public boolean isA() {\n        return a;\n    }\n\n    public void setA(boolean a) {\n        this.a = a;\n    }\n\n    public int getB() {\n        return b;\n    }\n\n    public void setB(int b) {\n        this.b = b;\n    }\n\n    public int getC() {\n        return c;\n    }\n\n    public void setC(int c) {\n        this.c = c;\n    }\n\n    public boolean isD() {\n        return d;\n    }\n\n    public void setD(boolean d) {\n        this.d = d;\n    }\n\n    public List<CommonObject> getE() {\n        return e;\n    }\n\n    public void setE(List<CommonObject> e) {\n        this.e = e;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectH_A.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\n\npublic class ObjectH_A {\n\t\n\tprivate int a;\n\t\n\tprivate int b;\n\t\n\tprivate int c;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectI.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectI {\n\t\n\tprivate String a;\n\t\n\tprivate int b;\n\t\n\tprivate long c;\n\t\n\tprivate int d;\n\t\n\tprivate int e;\n\t\n\tprivate int f;\n\n\t\n\tprivate int g;\n\n\t\n\tprivate List<ObjectI_A> h;\n\n\t\n\tprivate List<Integer> i;\n\n\t\n\tprivate int j;\n\n\tprivate int k;\n\tprivate int l;\n\n\tpublic String getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(String a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic long getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(long c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic int getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(int e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic int getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(int f) {\n\t\tthis.f = f;\n\t}\n\n\tpublic int getG() {\n\t\treturn g;\n\t}\n\n\tpublic void setG(int g) {\n\t\tthis.g = g;\n\t}\n\n\tpublic List<ObjectI_A> getH() {\n\t\treturn h;\n\t}\n\n\tpublic void setH(List<ObjectI_A> h) {\n\t\tthis.h = h;\n\t}\n\n\tpublic List<Integer> getI() {\n\t\treturn i;\n\t}\n\n\tpublic void setI(List<Integer> i) {\n\t\tthis.i = i;\n\t}\n\n\tpublic int getJ() {\n\t\treturn j;\n\t}\n\n\tpublic void setJ(int j) {\n\t\tthis.j = j;\n\t}\n\n\tpublic int getK() {\n\t\treturn k;\n\t}\n\n\tpublic void setK(int k) {\n\t\tthis.k = k;\n\t}\n\n\tpublic int getL() {\n\t\treturn l;\n\t}\n\n\tpublic void setL(int l) {\n\t\tthis.l = l;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectI1.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectI1 {\n\t\n\tprivate int a = 0;\n\t\n\tprivate long b = 0;\n\n\t\n\tprivate int c = 0;\n\n\t\n\tprivate List<Integer> d;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic long getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(long b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic List<Integer> getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(List<Integer> d) {\n\t\tthis.d = d;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectI2.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\nimport java.util.List;\n\n\npublic class ObjectI2 {\n    private int a;\n\n    \n    private List<Integer> b;\n\n    \n    private boolean c;\n\n    public int getA() {\n        return a;\n    }\n\n    public void setA(int a) {\n        this.a = a;\n    }\n\n    public List<Integer> getB() {\n        return b;\n    }\n\n    public void setB(List<Integer> b) {\n        this.b = b;\n    }\n\n    public boolean isC() {\n        return c;\n    }\n\n    public void setC(boolean c) {\n        this.c = c;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectI_A.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\npublic class ObjectI_A {\n    int a;\n    int b;\n    boolean c;\n\n    public int getA() {\n        return a;\n    }\n\n    public void setA(int a) {\n        this.a = a;\n    }\n\n    public int getB() {\n        return b;\n    }\n\n    public void setB(int b) {\n        this.b = b;\n    }\n\n    public boolean isC() {\n        return c;\n    }\n\n    public void setC(boolean c) {\n        this.c = c;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectJ.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectJ {\n\t\n\tprivate long a;\n\t\n\tprivate int b;\n\n\t\n\tprivate int c;\n\t\n\tprivate int d;\n\n\t\n\tprivate int e;\n\n\t\n\n\tprivate int f;\n\t\n\n\tprivate int g;\n\t\n\n\tprivate int h;\n\t\n\tprivate List<CommonObject3> i;\n\t\n\tprivate int j;\n\t\n\tprivate int k;\n\n\t\n\tprivate int l;\n\t\n\tprivate int m;\n\t\n\tprivate List<CommonObject> n;\n\n\t\n\tprivate List<Integer> o;\n\t\n\tprivate int p;\n\t\n\tprivate int q;\n\t\n\tprivate int r;\n\t\n\tprivate int s;\n\t\n\tprivate int t;\n\t\n\tprivate int x;\n\n\t\n\tprivate int y;\n\t\n\tprivate int z;\n\t\n\tprivate int a1;\n\n\t\n\tprivate int b1;\n\t\n\tprivate List<ObjectJ_A> c1;\n\n\tprivate List<ObjectK> d1;\n\t\n\tprivate List<Long> e1;\n\n\t\n\tprivate int f1;\n\n\t\n\tprivate int g1;\n\n\t\n\tboolean  h1;\n\n\tpublic long getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(long a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic int getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(int e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic int getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(int f) {\n\t\tthis.f = f;\n\t}\n\n\tpublic int getG() {\n\t\treturn g;\n\t}\n\n\tpublic void setG(int g) {\n\t\tthis.g = g;\n\t}\n\n\tpublic int getH() {\n\t\treturn h;\n\t}\n\n\tpublic void setH(int h) {\n\t\tthis.h = h;\n\t}\n\n\tpublic List<CommonObject3> getI() {\n\t\treturn i;\n\t}\n\n\tpublic void setI(List<CommonObject3> i) {\n\t\tthis.i = i;\n\t}\n\n\tpublic int getJ() {\n\t\treturn j;\n\t}\n\n\tpublic void setJ(int j) {\n\t\tthis.j = j;\n\t}\n\n\tpublic int getK() {\n\t\treturn k;\n\t}\n\n\tpublic void setK(int k) {\n\t\tthis.k = k;\n\t}\n\n\tpublic int getL() {\n\t\treturn l;\n\t}\n\n\tpublic void setL(int l) {\n\t\tthis.l = l;\n\t}\n\n\tpublic int getM() {\n\t\treturn m;\n\t}\n\n\tpublic void setM(int m) {\n\t\tthis.m = m;\n\t}\n\n\tpublic List<CommonObject> getN() {\n\t\treturn n;\n\t}\n\n\tpublic void setN(List<CommonObject> n) {\n\t\tthis.n = n;\n\t}\n\n\tpublic List<Integer> getO() {\n\t\treturn o;\n\t}\n\n\tpublic void setO(List<Integer> o) {\n\t\tthis.o = o;\n\t}\n\n\tpublic int getP() {\n\t\treturn p;\n\t}\n\n\tpublic void setP(int p) {\n\t\tthis.p = p;\n\t}\n\n\tpublic int getQ() {\n\t\treturn q;\n\t}\n\n\tpublic void setQ(int q) {\n\t\tthis.q = q;\n\t}\n\n\tpublic int getR() {\n\t\treturn r;\n\t}\n\n\tpublic void setR(int r) {\n\t\tthis.r = r;\n\t}\n\n\tpublic int getS() {\n\t\treturn s;\n\t}\n\n\tpublic void setS(int s) {\n\t\tthis.s = s;\n\t}\n\n\tpublic int getT() {\n\t\treturn t;\n\t}\n\n\tpublic void setT(int t) {\n\t\tthis.t = t;\n\t}\n\n\tpublic int getX() {\n\t\treturn x;\n\t}\n\n\tpublic void setX(int x) {\n\t\tthis.x = x;\n\t}\n\n\tpublic int getY() {\n\t\treturn y;\n\t}\n\n\tpublic void setY(int y) {\n\t\tthis.y = y;\n\t}\n\n\tpublic int getZ() {\n\t\treturn z;\n\t}\n\n\tpublic void setZ(int z) {\n\t\tthis.z = z;\n\t}\n\n\tpublic int getA1() {\n\t\treturn a1;\n\t}\n\n\tpublic void setA1(int a1) {\n\t\tthis.a1 = a1;\n\t}\n\n\tpublic int getB1() {\n\t\treturn b1;\n\t}\n\n\tpublic void setB1(int b1) {\n\t\tthis.b1 = b1;\n\t}\n\n\tpublic List<ObjectJ_A> getC1() {\n\t\treturn c1;\n\t}\n\n\tpublic void setC1(List<ObjectJ_A> c1) {\n\t\tthis.c1 = c1;\n\t}\n\n\tpublic List<ObjectK> getD1() {\n\t\treturn d1;\n\t}\n\n\tpublic void setD1(List<ObjectK> d1) {\n\t\tthis.d1 = d1;\n\t}\n\n\tpublic List<Long> getE1() {\n\t\treturn e1;\n\t}\n\n\tpublic void setE1(List<Long> e1) {\n\t\tthis.e1 = e1;\n\t}\n\n\tpublic int getF1() {\n\t\treturn f1;\n\t}\n\n\tpublic void setF1(int f1) {\n\t\tthis.f1 = f1;\n\t}\n\n\tpublic int getG1() {\n\t\treturn g1;\n\t}\n\n\tpublic void setG1(int g1) {\n\t\tthis.g1 = g1;\n\t}\n\n\tpublic boolean isH1() {\n\t\treturn h1;\n\t}\n\n\tpublic void setH1(boolean h1) {\n\t\tthis.h1 = h1;\n\t}\n}"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectJ1.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectJ1 {\n\t\n\tprivate int a = 0;\n\t\n\tprivate int b = 0;\n\t\n\tprivate List<ObjectJ1_A> c;\n\t\n\tprivate int d = 0;\n\t\n\tprivate List<CommonObject> e;\n\t\n\tprivate List<Integer> f;\n\t\n\tprivate List<Integer> g;\n\t\n\tprivate List<Integer> h;\n\t\n\tprivate boolean i = false;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic List<ObjectJ1_A> getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(List<ObjectJ1_A> c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic List<CommonObject> getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(List<CommonObject> e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic List<Integer> getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(List<Integer> f) {\n\t\tthis.f = f;\n\t}\n\n\tpublic List<Integer> getG() {\n\t\treturn g;\n\t}\n\n\tpublic void setG(List<Integer> g) {\n\t\tthis.g = g;\n\t}\n\n\tpublic List<Integer> getH() {\n\t\treturn h;\n\t}\n\n\tpublic void setH(List<Integer> h) {\n\t\tthis.h = h;\n\t}\n\n\tpublic boolean isI() {\n\t\treturn i;\n\t}\n\n\tpublic void setI(boolean i) {\n\t\tthis.i = i;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectJ1_A.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectJ1_A {\n\t\n\tprivate int a = 0;\n\t\n\tprivate int b = 0;\n\t\n\tprivate int c = 0;\n\t\n\tprivate int d = 0;\n\t\n\tprivate int e = 0;\n\t\n\tprivate List<CommonObject> f;\n\t\n\tprivate List<ObjectJ1_C> g;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic int getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(int e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic List<CommonObject> getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(List<CommonObject> f) {\n\t\tthis.f = f;\n\t}\n\n\tpublic List<ObjectJ1_C> getG() {\n\t\treturn g;\n\t}\n\n\tpublic void setG(List<ObjectJ1_C> g) {\n\t\tthis.g = g;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectJ1_C.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\n\npublic class ObjectJ1_C {\n\t\n\tprivate int a = 0;\n\t\n\tprivate int b = 0;\n\t\n\tprivate int c = 0;\n\t\n\tprivate int d = 0;\n\t\n\tprivate boolean e = false;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic boolean isE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(boolean e) {\n\t\tthis.e = e;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectJ2.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\n\npublic class ObjectJ2 {\n\n    \n    private boolean a;\n\n    \n    private boolean b;\n\n    public boolean isA() {\n        return a;\n    }\n\n    public void setA(boolean a) {\n        this.a = a;\n    }\n\n    public boolean isB() {\n        return b;\n    }\n\n    public void setB(boolean b) {\n        this.b = b;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectJ_A.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectJ_A {\n\n\t\n\tprivate long a;\n\n\t\n\tprivate int b;\n\n\t\n\tprivate int c;\n\n\t\n\tprivate int d;\n\n\t\n\tprivate int e;\n\n\t\n\tprivate int f;\n\n\t\n\tprivate int g;\n\n\t\n\tprivate int h;\n\n\t\n\tprivate int i;\n\n\t\n\tprivate List<ObjectJ_B> j;\n\n\t\n\tprivate List<ObjectC> k;\n\n\t\n\tprivate List<ObjectJ_C> l;\n\n\t\n\tprivate List<CommonObject> m;\n\n\tpublic long getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(long a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic int getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(int e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic int getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(int f) {\n\t\tthis.f = f;\n\t}\n\n\tpublic int getG() {\n\t\treturn g;\n\t}\n\n\tpublic void setG(int g) {\n\t\tthis.g = g;\n\t}\n\n\tpublic int getH() {\n\t\treturn h;\n\t}\n\n\tpublic void setH(int h) {\n\t\tthis.h = h;\n\t}\n\n\tpublic int getI() {\n\t\treturn i;\n\t}\n\n\tpublic void setI(int i) {\n\t\tthis.i = i;\n\t}\n\n\tpublic List<ObjectJ_B> getJ() {\n\t\treturn j;\n\t}\n\n\tpublic void setJ(List<ObjectJ_B> j) {\n\t\tthis.j = j;\n\t}\n\n\tpublic List<ObjectC> getK() {\n\t\treturn k;\n\t}\n\n\tpublic void setK(List<ObjectC> k) {\n\t\tthis.k = k;\n\t}\n\n\tpublic List<ObjectJ_C> getL() {\n\t\treturn l;\n\t}\n\n\tpublic void setL(List<ObjectJ_C> l) {\n\t\tthis.l = l;\n\t}\n\n\tpublic List<CommonObject> getM() {\n\t\treturn m;\n\t}\n\n\tpublic void setM(List<CommonObject> m) {\n\t\tthis.m = m;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectJ_B.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\n\n\npublic class ObjectJ_B {\n\n\tprivate long a;\n\n\tprivate int b;\n\n\tprivate long c;\n\n\tprivate int d;\n\n\tprivate int e;\n\n\tprivate int f;\n\n\tprivate int g;\n\n\tprivate int h;\n\n\tprivate int i;\n\n\tpublic long getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(long a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic long getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(long c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic int getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(int e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic int getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(int f) {\n\t\tthis.f = f;\n\t}\n\n\tpublic int getG() {\n\t\treturn g;\n\t}\n\n\tpublic void setG(int g) {\n\t\tthis.g = g;\n\t}\n\n\tpublic int getH() {\n\t\treturn h;\n\t}\n\n\tpublic void setH(int h) {\n\t\tthis.h = h;\n\t}\n\n\tpublic int getI() {\n\t\treturn i;\n\t}\n\n\tpublic void setI(int i) {\n\t\tthis.i = i;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectJ_C.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\npublic class ObjectJ_C {\n\t\n\tprivate int a;\n\n\t\n\tprivate int b;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectK.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\npublic class ObjectK {\n\n\tprivate int a;\n\n\tprivate int b = 0;\n\n\tprivate int c = 0;\n\n\tprivate int d = 0;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectK1.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectK1 {\n\n\t\n\tprivate int a = 0;\n\t\n\tprivate boolean b = false;\n\t\n\tprivate int c = 0;\n\t\n\tprivate int d = 0;\n\t\n\tprivate int e = 0;\n\t\n\tprivate List<CommonObject> f;\n\t\n\tprivate List<ObjectK1_A> g;\n\n\n\n\n\n\t\n\tprivate int h = 0;\n\t\n\tprivate List<ObjectK1_C> i;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic boolean isB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(boolean b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic int getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(int e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic List<CommonObject> getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(List<CommonObject> f) {\n\t\tthis.f = f;\n\t}\n\n\tpublic List<ObjectK1_A> getG() {\n\t\treturn g;\n\t}\n\n\tpublic void setG(List<ObjectK1_A> g) {\n\t\tthis.g = g;\n\t}\n\n\tpublic int getH() {\n\t\treturn h;\n\t}\n\n\tpublic void setH(int h) {\n\t\tthis.h = h;\n\t}\n\n\tpublic List<ObjectK1_C> getI() {\n\t\treturn i;\n\t}\n\n\tpublic void setI(List<ObjectK1_C> i) {\n\t\tthis.i = i;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectK1_A.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\n\npublic class ObjectK1_A {\n\t\n\tprivate int a = 0;\n\t\n\tprivate int b = 0;\n\t\n\tprivate int c = 0;\n\t\n\tprivate int d = 0;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectK1_C.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\n\npublic class ObjectK1_C {\n\t\n\tprivate int a = 0;\n\t\n\tprivate int b = 0;\n\t\n\tprivate boolean c = false;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic boolean isC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(boolean c) {\n\t\tthis.c = c;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectK2.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\nimport java.util.List;\n\n\npublic class ObjectK2 {\n    private int a;\n    private List<ObjectK2_A> b;\n\n    public int getA() {\n        return a;\n    }\n\n    public void setA(int a) {\n        this.a = a;\n    }\n\n    public List<ObjectK2_A> getB() {\n        return b;\n    }\n\n    public void setB(List<ObjectK2_A> b) {\n        this.b = b;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectK2_A.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\n\npublic class ObjectK2_A {\n    private int a;\n    private int b;\n    private int c;\n    private int d;\n    private int e;\n\n    public int getA() {\n        return a;\n    }\n\n    public void setA(int a) {\n        this.a = a;\n    }\n\n    public int getB() {\n        return b;\n    }\n\n    public void setB(int b) {\n        this.b = b;\n    }\n\n    public int getC() {\n        return c;\n    }\n\n    public void setC(int c) {\n        this.c = c;\n    }\n\n    public int getD() {\n        return d;\n    }\n\n    public void setD(int d) {\n        this.d = d;\n    }\n\n    public int getE() {\n        return e;\n    }\n\n    public void setE(int e) {\n        this.e = e;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectL.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\nimport java.util.List;\n\n\npublic class ObjectL {\n\n\tprivate List<ObjectL_A> a;\n\n\n\tprivate List<ObjectL_B> b;\n\n\n\tprivate List<Integer> c;\n\n\tpublic List<ObjectL_A> getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(List<ObjectL_A> a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic List<ObjectL_B> getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(List<ObjectL_B> b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic List<Integer> getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(List<Integer> c) {\n\t\tthis.c = c;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectL1.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\nimport java.util.HashMap;\nimport java.util.List;\n\n\npublic class ObjectL1 {\n    \n    \n    List<ObjectL1_A> a;\n    \n    int b;\n    \n    int c;\n    \n    int d;\n\n    \n    long e;\n\n    long f;\n\n    List<ObjectL2_B> g;\n    \n    List<CommonObject> h;\n\n    HashMap<Integer, HashMap<Integer, ObjectL2_C>> i;\n    \n    boolean j = false;\n\n    public List<ObjectL1_A> getA() {\n        return a;\n    }\n\n    public void setA(List<ObjectL1_A> a) {\n        this.a = a;\n    }\n\n    public int getB() {\n        return b;\n    }\n\n    public void setB(int b) {\n        this.b = b;\n    }\n\n    public int getC() {\n        return c;\n    }\n\n    public void setC(int c) {\n        this.c = c;\n    }\n\n    public int getD() {\n        return d;\n    }\n\n    public void setD(int d) {\n        this.d = d;\n    }\n\n    public long getE() {\n        return e;\n    }\n\n    public void setE(long e) {\n        this.e = e;\n    }\n\n    public long getF() {\n        return f;\n    }\n\n    public void setF(long f) {\n        this.f = f;\n    }\n\n    public List<ObjectL2_B> getG() {\n        return g;\n    }\n\n    public void setG(List<ObjectL2_B> g) {\n        this.g = g;\n    }\n\n    public List<CommonObject> getH() {\n        return h;\n    }\n\n    public void setH(List<CommonObject> h) {\n        this.h = h;\n    }\n\n    public HashMap<Integer, HashMap<Integer, ObjectL2_C>> getI() {\n        return i;\n    }\n\n    public void setI(HashMap<Integer, HashMap<Integer, ObjectL2_C>> i) {\n        this.i = i;\n    }\n\n    public boolean isJ() {\n        return j;\n    }\n\n    public void setJ(boolean j) {\n        this.j = j;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectL1_A.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\npublic class ObjectL1_A {\n    \n    protected int a;\n    \n    protected int b;\n    \n    protected int c;\n    \n    protected int d;\n\n    public int getA() {\n        return a;\n    }\n\n    public void setA(int a) {\n        this.a = a;\n    }\n\n    public int getB() {\n        return b;\n    }\n\n    public void setB(int b) {\n        this.b = b;\n    }\n\n    public int getC() {\n        return c;\n    }\n\n    public void setC(int c) {\n        this.c = c;\n    }\n\n    public int getD() {\n        return d;\n    }\n\n    public void setD(int d) {\n        this.d = d;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectL2.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\nimport java.util.List;\n\n\npublic class ObjectL2 {\n\n\tint a;\n\n\tObjectL2_A b;\n\n\tList<ObjectL2_A> c ;\n\n\tint d;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic ObjectL2_A getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(ObjectL2_A b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic List<ObjectL2_A> getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(List<ObjectL2_A> c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectL2_A.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\n\npublic class ObjectL2_A {\n\tint a = 1;\n\n\tint b = 2;\n\n\tint c = 4;\n\n\tint d = 5;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectL2_B.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\npublic class ObjectL2_B {\n    \n    int a;\n    \n    int b;\n\n    public int getA() {\n        return a;\n    }\n\n    public void setA(int a) {\n        this.a = a;\n    }\n\n    public int getB() {\n        return b;\n    }\n\n    public void setB(int b) {\n        this.b = b;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectL2_C.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\npublic class ObjectL2_C {\n    int a;\n    int b;\n\n    public int getA() {\n        return a;\n    }\n\n    public void setA(int a) {\n        this.a = a;\n    }\n\n    public int getB() {\n        return b;\n    }\n\n    public void setB(int b) {\n        this.b = b;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectL_A.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\npublic class ObjectL_A {\n\t\n\tprivate int a;\n\n\t\n\tprivate int b;\n\n\t\n\tprivate long c;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic long getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(long c) {\n\t\tthis.c = c;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectL_B.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectL_B {\n\n\t\n\tprivate int a;\n\t\n\tprivate List<Integer> b;\n\t\n\tprivate List<Integer> c;\n\t\n\tprivate long d;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic List<Integer> getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(List<Integer> b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic List<Integer> getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(List<Integer> c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic long getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(long d) {\n\t\tthis.d = d;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectM.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectM {\n\t\n\tprivate int a;\n\t\n\tprivate int b;\n\t\n\tprivate String c = \"\";\n\t\n\tprivate long d;\n\t\n\tprivate int e;\n\t\n\tprivate int f;\n\n\t\n\tprivate List<ObjectM_A> g;\n\n\t\n\tprivate List<ObjectM_B> h;\n\n\t\n\tprivate ObjectM_B i;\n\n\t\n\tprivate long j;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic String getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(String c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic long getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(long d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic int getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(int e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic int getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(int f) {\n\t\tthis.f = f;\n\t}\n\n\tpublic List<ObjectM_A> getG() {\n\t\treturn g;\n\t}\n\n\tpublic void setG(List<ObjectM_A> g) {\n\t\tthis.g = g;\n\t}\n\n\tpublic List<ObjectM_B> getH() {\n\t\treturn h;\n\t}\n\n\tpublic void setH(List<ObjectM_B> h) {\n\t\tthis.h = h;\n\t}\n\n\tpublic ObjectM_B getI() {\n\t\treturn i;\n\t}\n\n\tpublic void setI(ObjectM_B i) {\n\t\tthis.i = i;\n\t}\n\n\tpublic long getJ() {\n\t\treturn j;\n\t}\n\n\tpublic void setJ(long j) {\n\t\tthis.j = j;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectM1.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectM1 {\n\n\t\n\tprivate int a;\n\n\t\n\tprivate int b;\n\n\t\n\tprivate int c;\n\n\t\n\tprivate int d;\n\n\t\n\tprivate List<ObjectM1_A> e;\n\n\t\n\tprivate List<ObjectM1_B> f;\n\n\t\n\tprivate int g;\n\t\n\tprivate int h;\n\t\n\tprivate int i;\n\t\n\tprivate int j;\n\t\n\tprivate int k;\n\t\n\tprivate boolean l;\n\t\n\tprivate int m;\n\t\n\tprivate int n;\n\n\t\n\tprivate int o;\n\t\n\tprivate int p;\n\t\n\tprivate boolean q;\n\t\n\tprivate CommonObject r;\n\t\n\tprivate int s;\n\n\t\n\tprivate long t;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic List<ObjectM1_A> getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(List<ObjectM1_A> e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic List<ObjectM1_B> getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(List<ObjectM1_B> f) {\n\t\tthis.f = f;\n\t}\n\n\tpublic int getG() {\n\t\treturn g;\n\t}\n\n\tpublic void setG(int g) {\n\t\tthis.g = g;\n\t}\n\n\tpublic int getH() {\n\t\treturn h;\n\t}\n\n\tpublic void setH(int h) {\n\t\tthis.h = h;\n\t}\n\n\tpublic int getI() {\n\t\treturn i;\n\t}\n\n\tpublic void setI(int i) {\n\t\tthis.i = i;\n\t}\n\n\tpublic int getJ() {\n\t\treturn j;\n\t}\n\n\tpublic void setJ(int j) {\n\t\tthis.j = j;\n\t}\n\n\tpublic int getK() {\n\t\treturn k;\n\t}\n\n\tpublic void setK(int k) {\n\t\tthis.k = k;\n\t}\n\n\tpublic boolean isL() {\n\t\treturn l;\n\t}\n\n\tpublic void setL(boolean l) {\n\t\tthis.l = l;\n\t}\n\n\tpublic int getM() {\n\t\treturn m;\n\t}\n\n\tpublic void setM(int m) {\n\t\tthis.m = m;\n\t}\n\n\tpublic int getN() {\n\t\treturn n;\n\t}\n\n\tpublic void setN(int n) {\n\t\tthis.n = n;\n\t}\n\n\tpublic int getO() {\n\t\treturn o;\n\t}\n\n\tpublic void setO(int o) {\n\t\tthis.o = o;\n\t}\n\n\tpublic int getP() {\n\t\treturn p;\n\t}\n\n\tpublic void setP(int p) {\n\t\tthis.p = p;\n\t}\n\n\tpublic boolean isQ() {\n\t\treturn q;\n\t}\n\n\tpublic void setQ(boolean q) {\n\t\tthis.q = q;\n\t}\n\n\tpublic CommonObject getR() {\n\t\treturn r;\n\t}\n\n\tpublic void setR(CommonObject r) {\n\t\tthis.r = r;\n\t}\n\n\tpublic int getS() {\n\t\treturn s;\n\t}\n\n\tpublic void setS(int s) {\n\t\tthis.s = s;\n\t}\n\n\tpublic long getT() {\n\t\treturn t;\n\t}\n\n\tpublic void setT(long t) {\n\t\tthis.t = t;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectM1_A.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\npublic class ObjectM1_A {\n    \n    private int a;\n    \n    private int b;\n\n    public int getA() {\n        return a;\n    }\n\n    public void setA(int a) {\n        this.a = a;\n    }\n\n    public int getB() {\n        return b;\n    }\n\n    public void setB(int b) {\n        this.b = b;\n    }\n}"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectM1_B.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectM1_B {\n    \n    private long a;\n    \n    private String b;\n    \n    private String c;\n    \n    private int d;\n\n    \n    private long e;\n    \n    private int f;\n\n    \n    private int g;\n\n    \n    private List<Integer> h;\n\n    \n    private List<ObjectM1_C> i;\n\n    \n    private int j;\n\n    \n    private int k;\n\n    \n    private boolean l;\n\n    public long getA() {\n        return a;\n    }\n\n    public void setA(long a) {\n        this.a = a;\n    }\n\n    public String getB() {\n        return b;\n    }\n\n    public void setB(String b) {\n        this.b = b;\n    }\n\n    public String getC() {\n        return c;\n    }\n\n    public void setC(String c) {\n        this.c = c;\n    }\n\n    public int getD() {\n        return d;\n    }\n\n    public void setD(int d) {\n        this.d = d;\n    }\n\n    public long getE() {\n        return e;\n    }\n\n    public void setE(long e) {\n        this.e = e;\n    }\n\n    public int getF() {\n        return f;\n    }\n\n    public void setF(int f) {\n        this.f = f;\n    }\n\n    public int getG() {\n        return g;\n    }\n\n    public void setG(int g) {\n        this.g = g;\n    }\n\n    public List<Integer> getH() {\n        return h;\n    }\n\n    public void setH(List<Integer> h) {\n        this.h = h;\n    }\n\n    public List<ObjectM1_C> getI() {\n        return i;\n    }\n\n    public void setI(List<ObjectM1_C> i) {\n        this.i = i;\n    }\n\n    public int getJ() {\n        return j;\n    }\n\n    public void setJ(int j) {\n        this.j = j;\n    }\n\n    public int getK() {\n        return k;\n    }\n\n    public void setK(int k) {\n        this.k = k;\n    }\n\n    public boolean isL() {\n        return l;\n    }\n\n    public void setL(boolean l) {\n        this.l = l;\n    }\n}"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectM1_C.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectM1_C {\n    \n    private int a;\n\n    \n    private int b;\n\n    \n    private int c;\n\n\n    \n    private int d;\n\n    \n    private int e;\n\n    \n    private int f;\n\n    \n    private int g;\n\n    \n    private List<Integer> h;\n\n    \n    private List<Integer> i;\n\n    \n    private int j;\n\n    \n    private int k;\n\n    \n    private int l;\n\n    \n    private int m;\n\n    \n    private int n;\n\n    \n    private int o;\n\n    public int getA() {\n        return a;\n    }\n\n    public void setA(int a) {\n        this.a = a;\n    }\n\n    public int getB() {\n        return b;\n    }\n\n    public void setB(int b) {\n        this.b = b;\n    }\n\n    public int getC() {\n        return c;\n    }\n\n    public void setC(int c) {\n        this.c = c;\n    }\n\n    public int getD() {\n        return d;\n    }\n\n    public void setD(int d) {\n        this.d = d;\n    }\n\n    public int getE() {\n        return e;\n    }\n\n    public void setE(int e) {\n        this.e = e;\n    }\n\n    public int getF() {\n        return f;\n    }\n\n    public void setF(int f) {\n        this.f = f;\n    }\n\n    public int getG() {\n        return g;\n    }\n\n    public void setG(int g) {\n        this.g = g;\n    }\n\n    public List<Integer> getH() {\n        return h;\n    }\n\n    public void setH(List<Integer> h) {\n        this.h = h;\n    }\n\n    public List<Integer> getI() {\n        return i;\n    }\n\n    public void setI(List<Integer> i) {\n        this.i = i;\n    }\n\n    public int getJ() {\n        return j;\n    }\n\n    public void setJ(int j) {\n        this.j = j;\n    }\n\n    public int getK() {\n        return k;\n    }\n\n    public void setK(int k) {\n        this.k = k;\n    }\n\n    public int getL() {\n        return l;\n    }\n\n    public void setL(int l) {\n        this.l = l;\n    }\n\n    public int getM() {\n        return m;\n    }\n\n    public void setM(int m) {\n        this.m = m;\n    }\n\n    public int getN() {\n        return n;\n    }\n\n    public void setN(int n) {\n        this.n = n;\n    }\n\n    public int getO() {\n        return o;\n    }\n\n    public void setO(int o) {\n        this.o = o;\n    }\n}"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectM2.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectM2 {\n\n    \n    private long a;\n\n    \n    private int b;\n\n    \n    private boolean c;\n\n    \n    private int d;\n\n    \n    private List<ObjectM2_A> e;\n\n    public long getA() {\n        return a;\n    }\n\n    public void setA(long a) {\n        this.a = a;\n    }\n\n    public int getB() {\n        return b;\n    }\n\n    public void setB(int b) {\n        this.b = b;\n    }\n\n    public boolean isC() {\n        return c;\n    }\n\n    public void setC(boolean c) {\n        this.c = c;\n    }\n\n    public int getD() {\n        return d;\n    }\n\n    public void setD(int d) {\n        this.d = d;\n    }\n\n    public List<ObjectM2_A> getE() {\n        return e;\n    }\n\n    public void setE(List<ObjectM2_A> e) {\n        this.e = e;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectM2_A.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\npublic class ObjectM2_A {\n\n    \n    private int a;\n\n    public int getA() {\n        return a;\n    }\n\n    public void setA(int a) {\n        this.a = a;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectM_A.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\npublic class ObjectM_A {\n\t\n\tprivate int a;\n\t\n\tprivate int b;\n\t\n\tprivate long c;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic long getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(long c) {\n\t\tthis.c = c;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectM_B.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\nimport java.util.List;\n\n\npublic class ObjectM_B {\n\n\tprivate int a;\n\n\tprivate int b;\n\n\tprivate int c;\n\n\tprivate long d;\n\n\tprivate List<Integer> e;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic long getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(long d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic List<Integer> getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(List<Integer> e) {\n\t\tthis.e = e;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectN.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectN {\n\n\tprivate List<Long> a;\n\n\tprivate List<Long> b;\n\n\n\tprivate List<CommonObject3> c;\n\n\n\tprivate List<CommonObject3> d;\n\n\n\tprivate List<Long> e;\n\n\n\tprivate List<String> f;\n\n\n\tprivate List<Long> g;\n\n\n\tprivate List<OjectN_A> h;\n\n\n\tprivate List<CommonObject3> i;\n\n\n\tprivate List<Long> j;\n\n\n\tprivate List<String> k;\n\n\n\tprivate List<CommonObject3> l;\n\n\tpublic List<Long> getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(List<Long> a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic List<Long> getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(List<Long> b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic List<CommonObject3> getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(List<CommonObject3> c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic List<CommonObject3> getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(List<CommonObject3> d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic List<Long> getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(List<Long> e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic List<String> getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(List<String> f) {\n\t\tthis.f = f;\n\t}\n\n\tpublic List<Long> getG() {\n\t\treturn g;\n\t}\n\n\tpublic void setG(List<Long> g) {\n\t\tthis.g = g;\n\t}\n\n\tpublic List<OjectN_A> getH() {\n\t\treturn h;\n\t}\n\n\tpublic void setH(List<OjectN_A> h) {\n\t\tthis.h = h;\n\t}\n\n\tpublic List<CommonObject3> getI() {\n\t\treturn i;\n\t}\n\n\tpublic void setI(List<CommonObject3> i) {\n\t\tthis.i = i;\n\t}\n\n\tpublic List<Long> getJ() {\n\t\treturn j;\n\t}\n\n\tpublic void setJ(List<Long> j) {\n\t\tthis.j = j;\n\t}\n\n\tpublic List<String> getK() {\n\t\treturn k;\n\t}\n\n\tpublic void setK(List<String> k) {\n\t\tthis.k = k;\n\t}\n\n\tpublic List<CommonObject3> getL() {\n\t\treturn l;\n\t}\n\n\tpublic void setL(List<CommonObject3> l) {\n\t\tthis.l = l;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectN1.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\npublic class ObjectN1 {\n    \n    private int a;\n    private int b;\n    \n    private boolean c;\n    private boolean d;\n    \n    private int e;\n\n    public int getA() {\n        return a;\n    }\n\n    public void setA(int a) {\n        this.a = a;\n    }\n\n    public int getB() {\n        return b;\n    }\n\n    public void setB(int b) {\n        this.b = b;\n    }\n\n    public boolean isC() {\n        return c;\n    }\n\n    public void setC(boolean c) {\n        this.c = c;\n    }\n\n    public boolean isD() {\n        return d;\n    }\n\n    public void setD(boolean d) {\n        this.d = d;\n    }\n\n    public int getE() {\n        return e;\n    }\n\n    public void setE(int e) {\n        this.e = e;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectN2.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\n\npublic class ObjectN2 {\n    \n    private int a;\n\n    private int b;\n\n    \n    private long c;\n\n    \n    private int d;\n\n    public int getA() {\n        return a;\n    }\n\n    public void setA(int a) {\n        this.a = a;\n    }\n\n    public int getB() {\n        return b;\n    }\n\n    public void setB(int b) {\n        this.b = b;\n    }\n\n    public long getC() {\n        return c;\n    }\n\n    public void setC(long c) {\n        this.c = c;\n    }\n\n    public int getD() {\n        return d;\n    }\n\n    public void setD(int d) {\n        this.d = d;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectO.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport java.util.List;\n\n\npublic class ObjectO {\n\tpublic static final String tstN = \"tstN\";\n\n\t@JSONField(name = \"a\")\n\tprivate long a;\n\n\tprivate List<ObjectO_A> b;\n\n\tpublic long getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(long a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic List<ObjectO_A> getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(List<ObjectO_A> b) {\n\t\tthis.b = b;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectO1.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\nimport java.io.Serializable;\nimport java.util.List;\n\n\npublic class ObjectO1 implements Serializable {\n\t\n\tint a;\n\t\n\tint b;\n\t\n\tList<ObjectO1_A> c;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic List<ObjectO1_A> getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(List<ObjectO1_A> c) {\n\t\tthis.c = c;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectO1_A.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\nimport java.io.Serializable;\n\n\npublic class ObjectO1_A implements Serializable {\n\t\n\tint a;\n\t\n\tint b;\n\t\n\tint c;\n\t\n\tint d;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectO2.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\npublic class ObjectO2 {\n\t\n\tprivate int a;\n\n\t\n\tprivate boolean b = true;\n\n\t\n\tprivate int c;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic boolean isB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(boolean b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectO_A.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\n\npublic class ObjectO_A {\n\t\n\tprivate int a;\n\t\n\tprivate int b;\n\t\n\tprivate int c;\n\t\n\tprivate int d;\n\t\n\tprivate int e;\n\t\n\tprivate int f;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic int getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(int e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic int getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(int f) {\n\t\tthis.f = f;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectP.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport java.util.List;\n\n\npublic class ObjectP {\n\n\tpublic static final String tsnst = \"tsnst\";\n\n\t@JSONField(name = \"a\")\n\tprivate long a;\n\n\tprivate List<ObjectP_A> b;\n\n\tpublic static String getTsnst() {\n\t\treturn tsnst;\n\t}\n\n\tpublic long getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(long a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic List<ObjectP_A> getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(List<ObjectP_A> b) {\n\t\tthis.b = b;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectP1.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectP1 {\n    \n    private int a;\n    \n    private int b;\n    \n    private int c;\n    \n    private List<Long> d;\n    \n    private int e = 0;\n    \n    private int f = 0;\n    \n    private List<ObjectP1_A> g;\n    \n    private List<Integer> h;\n    \n    private List<ObjectP1_B> i;\n    \n    private boolean j = true;\n\n    public int getA() {\n        return a;\n    }\n\n    public void setA(int a) {\n        this.a = a;\n    }\n\n    public int getB() {\n        return b;\n    }\n\n    public void setB(int b) {\n        this.b = b;\n    }\n\n    public int getC() {\n        return c;\n    }\n\n    public void setC(int c) {\n        this.c = c;\n    }\n\n    public List<Long> getD() {\n        return d;\n    }\n\n    public void setD(List<Long> d) {\n        this.d = d;\n    }\n\n    public int getE() {\n        return e;\n    }\n\n    public void setE(int e) {\n        this.e = e;\n    }\n\n    public int getF() {\n        return f;\n    }\n\n    public void setF(int f) {\n        this.f = f;\n    }\n\n    public List<ObjectP1_A> getG() {\n        return g;\n    }\n\n    public void setG(List<ObjectP1_A> g) {\n        this.g = g;\n    }\n\n    public List<Integer> getH() {\n        return h;\n    }\n\n    public void setH(List<Integer> h) {\n        this.h = h;\n    }\n\n    public List<ObjectP1_B> getI() {\n        return i;\n    }\n\n    public void setI(List<ObjectP1_B> i) {\n        this.i = i;\n    }\n\n    public boolean isJ() {\n        return j;\n    }\n\n    public void setJ(boolean j) {\n        this.j = j;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectP1_A.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\n\npublic class ObjectP1_A {\n    \n    private int a = 0;\n    \n    private int b = 0;\n    \n    private int c = 0;\n    \n    private boolean d = false;\n    \n    private int e = 0;\n    \n    private int f = 0;\n\n    public int getA() {\n        return a;\n    }\n\n    public void setA(int a) {\n        this.a = a;\n    }\n\n    public int getB() {\n        return b;\n    }\n\n    public void setB(int b) {\n        this.b = b;\n    }\n\n    public int getC() {\n        return c;\n    }\n\n    public void setC(int c) {\n        this.c = c;\n    }\n\n    public boolean isD() {\n        return d;\n    }\n\n    public void setD(boolean d) {\n        this.d = d;\n    }\n\n    public int getE() {\n        return e;\n    }\n\n    public void setE(int e) {\n        this.e = e;\n    }\n\n    public int getF() {\n        return f;\n    }\n\n    public void setF(int f) {\n        this.f = f;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectP1_B.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\n\npublic class ObjectP1_B {\n    \n    private long a = 0;\n    \n    private int b = 0;\n\t\n\tprivate int c = 0;\n    \n    private int d = 0;\n\t\n\tprivate int e = 0;\n\t\n\tprivate int f = 0;\n    \n    private long g = 0;\n    \n    private boolean h = true;\n\n    public long getA() {\n        return a;\n    }\n\n    public void setA(long a) {\n        this.a = a;\n    }\n\n    public int getB() {\n        return b;\n    }\n\n    public void setB(int b) {\n        this.b = b;\n    }\n\n    public int getC() {\n        return c;\n    }\n\n    public void setC(int c) {\n        this.c = c;\n    }\n\n    public int getD() {\n        return d;\n    }\n\n    public void setD(int d) {\n        this.d = d;\n    }\n\n    public int getE() {\n        return e;\n    }\n\n    public void setE(int e) {\n        this.e = e;\n    }\n\n    public int getF() {\n        return f;\n    }\n\n    public void setF(int f) {\n        this.f = f;\n    }\n\n    public long getG() {\n        return g;\n    }\n\n    public void setG(long g) {\n        this.g = g;\n    }\n\n    public boolean isH() {\n        return h;\n    }\n\n    public void setH(boolean h) {\n        this.h = h;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectP_A.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\n\npublic class ObjectP_A {\n\t\n\tprivate int a;\n\t\n\tprivate int b;\n\t\n\tprivate int c;\n\t\n\tprivate boolean d;\n\t\n\tprivate boolean e;\n\t\n\tprivate boolean f;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic boolean isD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(boolean d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic boolean isE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(boolean e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic boolean isF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(boolean f) {\n\t\tthis.f = f;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectQ.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectQ {\n\t\n\tprivate int a;\n\t\n\tprivate int b;\n\t\n\tprivate boolean c = false;\n\t\n\tprivate List<CommonObject> d;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic boolean isC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(boolean c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic List<CommonObject> getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(List<CommonObject> d) {\n\t\tthis.d = d;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectQ1.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\nimport java.util.List;\n\n\npublic class ObjectQ1 {\n\t\n\tprivate int a;\n\n\t\n\tprivate int b;\n\t\n\tprivate long c;\n\t\n\tprivate int d;\n\t\n\tprivate int e;\n\t\n\tprivate int f;\n\t\n\tprivate int g;\n\t\n\tprivate int h;\n\n\t\n\tprivate int i;\n\t\n\tprivate int j;\n\t\n\tprivate int k;\n\t\n\tprivate int l;\n\t\n\tprivate int m;\n\t\n\tprivate List<ObjectK> n;\n\t\n\tprivate int o;\n\t\n\tprivate long p;\n\t\n\tprivate int q;\n\t\n\tprivate int r;\n\t\n\tprivate int s;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic long getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(long c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic int getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(int e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic int getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(int f) {\n\t\tthis.f = f;\n\t}\n\n\tpublic int getG() {\n\t\treturn g;\n\t}\n\n\tpublic void setG(int g) {\n\t\tthis.g = g;\n\t}\n\n\tpublic int getH() {\n\t\treturn h;\n\t}\n\n\tpublic void setH(int h) {\n\t\tthis.h = h;\n\t}\n\n\tpublic int getI() {\n\t\treturn i;\n\t}\n\n\tpublic void setI(int i) {\n\t\tthis.i = i;\n\t}\n\n\tpublic int getJ() {\n\t\treturn j;\n\t}\n\n\tpublic void setJ(int j) {\n\t\tthis.j = j;\n\t}\n\n\tpublic int getK() {\n\t\treturn k;\n\t}\n\n\tpublic void setK(int k) {\n\t\tthis.k = k;\n\t}\n\n\tpublic int getL() {\n\t\treturn l;\n\t}\n\n\tpublic void setL(int l) {\n\t\tthis.l = l;\n\t}\n\n\tpublic int getM() {\n\t\treturn m;\n\t}\n\n\tpublic void setM(int m) {\n\t\tthis.m = m;\n\t}\n\n\tpublic List<ObjectK> getN() {\n\t\treturn n;\n\t}\n\n\tpublic void setN(List<ObjectK> n) {\n\t\tthis.n = n;\n\t}\n\n\tpublic int getO() {\n\t\treturn o;\n\t}\n\n\tpublic void setO(int o) {\n\t\tthis.o = o;\n\t}\n\n\tpublic long getP() {\n\t\treturn p;\n\t}\n\n\tpublic void setP(long p) {\n\t\tthis.p = p;\n\t}\n\n\tpublic int getQ() {\n\t\treturn q;\n\t}\n\n\tpublic void setQ(int q) {\n\t\tthis.q = q;\n\t}\n\n\tpublic int getR() {\n\t\treturn r;\n\t}\n\n\tpublic void setR(int r) {\n\t\tthis.r = r;\n\t}\n\n\tpublic int getS() {\n\t\treturn s;\n\t}\n\n\tpublic void setS(int s) {\n\t\tthis.s = s;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectQ1_A.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectQ1_A {\n    \n    private int a;\n\n    \n    private List<ObjectQ1_B> b;\n\n    \n    private int c;\n\n    \n    private boolean d;\n\n    \n    private boolean e;\n\n    public int getA() {\n        return a;\n    }\n\n    public void setA(int a) {\n        this.a = a;\n    }\n\n    public List<ObjectQ1_B> getB() {\n        return b;\n    }\n\n    public void setB(List<ObjectQ1_B> b) {\n        this.b = b;\n    }\n\n    public int getC() {\n        return c;\n    }\n\n    public void setC(int c) {\n        this.c = c;\n    }\n\n    public boolean isD() {\n        return d;\n    }\n\n    public void setD(boolean d) {\n        this.d = d;\n    }\n\n    public boolean isE() {\n        return e;\n    }\n\n    public void setE(boolean e) {\n        this.e = e;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectQ1_B.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\npublic class ObjectQ1_B {\n\n\n    private int a;\n\n\n    private boolean b;\n\n    public int getA() {\n        return a;\n    }\n\n    public void setA(int a) {\n        this.a = a;\n    }\n\n    public boolean isB() {\n        return b;\n    }\n\n    public void setB(boolean b) {\n        this.b = b;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectR.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\nimport java.util.List;\n\n\npublic class ObjectR {\n    private int a;\n    private int b;\n    private int c;\n    private int d;\n    private List<Integer> e;\n    private int f;\n\n    public int getA() {\n        return a;\n    }\n\n    public void setA(int a) {\n        this.a = a;\n    }\n\n    public int getB() {\n        return b;\n    }\n\n    public void setB(int b) {\n        this.b = b;\n    }\n\n    public int getC() {\n        return c;\n    }\n\n    public void setC(int c) {\n        this.c = c;\n    }\n\n    public int getD() {\n        return d;\n    }\n\n    public void setD(int d) {\n        this.d = d;\n    }\n\n    public List<Integer> getE() {\n        return e;\n    }\n\n    public void setE(List<Integer> e) {\n        this.e = e;\n    }\n\n    public int getF() {\n        return f;\n    }\n\n    public void setF(int f) {\n        this.f = f;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectR1.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectR1 {\n    \n    private List<Integer> a;\n\n    \n    private int b;\n\n    \n    private List<ObjectQ1_A> c;\n\n    private boolean d;\n\n    \n    private boolean e;\n\n    \n    private int f;\n\n    \n    private int g;\n\n    \n    private boolean h;\n\n    \n    private long i;\n\n    \n    private long j;\n\n    \n    private List<ObjectM1_A> k;\n\n    public List<Integer> getA() {\n        return a;\n    }\n\n    public void setA(List<Integer> a) {\n        this.a = a;\n    }\n\n    public int getB() {\n        return b;\n    }\n\n    public void setB(int b) {\n        this.b = b;\n    }\n\n    public List<ObjectQ1_A> getC() {\n        return c;\n    }\n\n    public void setC(List<ObjectQ1_A> c) {\n        this.c = c;\n    }\n\n    public boolean isD() {\n        return d;\n    }\n\n    public void setD(boolean d) {\n        this.d = d;\n    }\n\n    public boolean isE() {\n        return e;\n    }\n\n    public void setE(boolean e) {\n        this.e = e;\n    }\n\n    public int getF() {\n        return f;\n    }\n\n    public void setF(int f) {\n        this.f = f;\n    }\n\n    public int getG() {\n        return g;\n    }\n\n    public void setG(int g) {\n        this.g = g;\n    }\n\n    public boolean isH() {\n        return h;\n    }\n\n    public void setH(boolean h) {\n        this.h = h;\n    }\n\n    public long getI() {\n        return i;\n    }\n\n    public void setI(long i) {\n        this.i = i;\n    }\n\n    public long getJ() {\n        return j;\n    }\n\n    public void setJ(long j) {\n        this.j = j;\n    }\n\n    public List<ObjectM1_A> getK() {\n        return k;\n    }\n\n    public void setK(List<ObjectM1_A> k) {\n        this.k = k;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectS.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\n\npublic class ObjectS {\n\t\n\tprivate int a;\n\t\n\tprivate int b;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectS1.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectS1 {\n\t\n\tprivate int a;\n\n\t\n\tprivate int b;\n\n\t\n\tprivate int c = 0;\n\n\t\n\tprivate int d;\n\n\t\n\tprivate int e;\n\n\t\n\tprivate List<ObjectS1_A> f;\n\n\t\n\tprivate boolean g = false;\n\n\t\n\tprivate List<ObjectK> h;\n\n\t\n\tprivate List<ObjectK> i;\n\n\t\n\tprivate List<ObjectK> j;\n\n\t\n\tprivate boolean k = true;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic int getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(int e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic List<ObjectS1_A> getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(List<ObjectS1_A> f) {\n\t\tthis.f = f;\n\t}\n\n\tpublic boolean isG() {\n\t\treturn g;\n\t}\n\n\tpublic void setG(boolean g) {\n\t\tthis.g = g;\n\t}\n\n\tpublic List<ObjectK> getH() {\n\t\treturn h;\n\t}\n\n\tpublic void setH(List<ObjectK> h) {\n\t\tthis.h = h;\n\t}\n\n\tpublic List<ObjectK> getI() {\n\t\treturn i;\n\t}\n\n\tpublic void setI(List<ObjectK> i) {\n\t\tthis.i = i;\n\t}\n\n\tpublic List<ObjectK> getJ() {\n\t\treturn j;\n\t}\n\n\tpublic void setJ(List<ObjectK> j) {\n\t\tthis.j = j;\n\t}\n\n\tpublic boolean isK() {\n\t\treturn k;\n\t}\n\n\tpublic void setK(boolean k) {\n\t\tthis.k = k;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectS1_A.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\n\npublic class ObjectS1_A {\n\t\n\tprivate int a;\n\t\n\tprivate int b;\n\t\n\tprivate int c;\n\n\t\n\tprivate boolean d;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic boolean isD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(boolean d) {\n\t\tthis.d = d;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectT.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectT {\n\t\n\tprivate int a = 0;\n\n\t\n\tprivate int b = 0;\n\t\n\tprivate int c = 0;\n\n\t\n\tprivate List<ObjectT_A> d;\n\n\t\n\tprivate int e = 0;\n\n\t\n\tprivate int f;\n\n\t\n\tprivate int g;\n\n\t\n\tprivate int h;\n\n\t\n\tprivate int i;\n\n\t\n\tprivate int j;\n\n\t\n\tprivate boolean k = false;\n\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic List<ObjectT_A> getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(List<ObjectT_A> d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic int getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(int e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic int getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(int f) {\n\t\tthis.f = f;\n\t}\n\n\tpublic int getG() {\n\t\treturn g;\n\t}\n\n\tpublic void setG(int g) {\n\t\tthis.g = g;\n\t}\n\n\tpublic int getH() {\n\t\treturn h;\n\t}\n\n\tpublic void setH(int h) {\n\t\tthis.h = h;\n\t}\n\n\tpublic int getI() {\n\t\treturn i;\n\t}\n\n\tpublic void setI(int i) {\n\t\tthis.i = i;\n\t}\n\n\tpublic int getJ() {\n\t\treturn j;\n\t}\n\n\tpublic void setJ(int j) {\n\t\tthis.j = j;\n\t}\n\n\tpublic boolean isK() {\n\t\treturn k;\n\t}\n\n\tpublic void setK(boolean k) {\n\t\tthis.k = k;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectT1.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\n\npublic class ObjectT1 {\n\t\n\tprivate int a;\n\n\t\n\tprivate int b;\n\t\n\tprivate int c;\n\t\n\tprivate int d;\n\t\n\tprivate int e;\n\t\n\tprivate int f;\n\t\n\tprivate int g;\n\t\n\tprivate int h;\n\t\n\tprivate long i;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic int getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(int e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic int getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(int f) {\n\t\tthis.f = f;\n\t}\n\n\tpublic int getG() {\n\t\treturn g;\n\t}\n\n\tpublic void setG(int g) {\n\t\tthis.g = g;\n\t}\n\n\tpublic int getH() {\n\t\treturn h;\n\t}\n\n\tpublic void setH(int h) {\n\t\tthis.h = h;\n\t}\n\n\tpublic long getI() {\n\t\treturn i;\n\t}\n\n\tpublic void setI(long i) {\n\t\tthis.i = i;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectT_A.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\npublic class ObjectT_A {\n\t\n\tprivate int a;\n\n\t\n\tprivate boolean b;\n\n\t\n\tprivate long c;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic boolean isB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(boolean b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic long getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(long c) {\n\t\tthis.c = c;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectU.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\npublic class ObjectU {\n\t\n\tprivate int a;\n\n\t\n\tprivate Integer b;\n\t\n\tprivate int c;\n\n\t\n\tprivate int d;\n\t\n\tprivate int e;\n\n\t\n\tprivate int f;\n\t\n\tprivate boolean g;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic Integer getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(Integer b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic int getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(int e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic int getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(int f) {\n\t\tthis.f = f;\n\t}\n\n\tpublic boolean isG() {\n\t\treturn g;\n\t}\n\n\tpublic void setG(boolean g) {\n\t\tthis.g = g;\n\t}\n}"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectU1.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectU1 {\n\t\n\tprivate int a;\n\t\n\tprivate String b = \"\";\n\t\n\tprivate String c = \"\";\n\t\n\tprivate String d = \"\";\n\t\n\tprivate List<ObjectU1_A> e;\n\t\n\tprivate List<ObjectU1_B> f;\n\t\n\tprivate long g;\n\t\n\tprivate long h;\n\t\n\tprivate long i;\n\t\n\tprivate long j;\n\t\n\tprivate long k;\n\t\n\tprivate long l;\n\t\n\tprivate List<ObjectV1_A> m;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic String getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(String b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic String getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(String c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic String getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(String d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic List<ObjectU1_A> getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(List<ObjectU1_A> e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic List<ObjectU1_B> getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(List<ObjectU1_B> f) {\n\t\tthis.f = f;\n\t}\n\n\tpublic long getG() {\n\t\treturn g;\n\t}\n\n\tpublic void setG(long g) {\n\t\tthis.g = g;\n\t}\n\n\tpublic long getH() {\n\t\treturn h;\n\t}\n\n\tpublic void setH(long h) {\n\t\tthis.h = h;\n\t}\n\n\tpublic long getI() {\n\t\treturn i;\n\t}\n\n\tpublic void setI(long i) {\n\t\tthis.i = i;\n\t}\n\n\tpublic long getJ() {\n\t\treturn j;\n\t}\n\n\tpublic void setJ(long j) {\n\t\tthis.j = j;\n\t}\n\n\tpublic long getK() {\n\t\treturn k;\n\t}\n\n\tpublic void setK(long k) {\n\t\tthis.k = k;\n\t}\n\n\tpublic long getL() {\n\t\treturn l;\n\t}\n\n\tpublic void setL(long l) {\n\t\tthis.l = l;\n\t}\n\n\tpublic List<ObjectV1_A> getM() {\n\t\treturn m;\n\t}\n\n\tpublic void setM(List<ObjectV1_A> m) {\n\t\tthis.m = m;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectU1_A.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\npublic class ObjectU1_A {\n\t\n\tprivate int a;\n\t\n\tprivate long b;\n\t\n\tprivate int c;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic long getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(long b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectU1_B.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\nimport java.util.List;\n\n\npublic class ObjectU1_B {\n\t\n\tprivate int a;\n\t\n\tprivate long b;\n\t\n\tprivate List<ObjectU1_C> c;\n\t\n\tprivate boolean d;\n\t\n\tprivate boolean e;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic long getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(long b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic List<ObjectU1_C> getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(List<ObjectU1_C> c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic boolean isD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(boolean d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic boolean isE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(boolean e) {\n\t\tthis.e = e;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectU1_C.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\npublic class ObjectU1_C {\n\t\n\tprivate int a;\n\t\n\tprivate boolean b;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic boolean isB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(boolean b) {\n\t\tthis.b = b;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectV.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectV {\n\t\n\tprivate List<ObjectV_A> a;\n\n\t\n\tprivate List<ObjectV_A> b;\n\n\tpublic List<ObjectV_A> getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(List<ObjectV_A> a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic List<ObjectV_A> getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(List<ObjectV_A> b) {\n\t\tthis.b = b;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectV1.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectV1 {\n\t\n\tprivate int a;\n\t\n\tprivate int b;\n\t\n\tprivate List<ObjectK> c;\n\t\n\tprivate List<ObjectV1_A> d;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic List<ObjectK> getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(List<ObjectK> c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic List<ObjectV1_A> getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(List<ObjectV1_A> d) {\n\t\tthis.d = d;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectV1_A.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectV1_A {\n\t\n\tprivate int a;\n\t\n\tprivate List<Integer> b;\n\t\n\tprivate boolean c;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic List<Integer> getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(List<Integer> b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic boolean isC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(boolean c) {\n\t\tthis.c = c;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectV_A.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\npublic class ObjectV_A {\n\t\n\tprivate int a;\n\n\t\n\tprivate int b;\n\t\n\tprivate int c;\n\t\n\tprivate int d;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectW.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\n\npublic class ObjectW {\n\t\n\tprivate long a;\n\n\t\n\tprivate int b;\n\t\n\tprivate long c;\n\n\t\n\tprivate int d;\n\t\n\tprivate String e;\n\n\t\n\tprivate long f;\n\n\tpublic long getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(long a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic long getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(long c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic String getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(String e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic long getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(long f) {\n\t\tthis.f = f;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectW1.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectW1 {\n\n    \n    private int a;\n\n    \n    private int b;\n\n    \n    private List<Boolean> c;\n\n    \n    private boolean d;\n\n    \n    private List<CommonObject> e;\n\n    \n    private int f = 0;\n\n    public int getA() {\n        return a;\n    }\n\n    public void setA(int a) {\n        this.a = a;\n    }\n\n    public int getB() {\n        return b;\n    }\n\n    public void setB(int b) {\n        this.b = b;\n    }\n\n    public List<Boolean> getC() {\n        return c;\n    }\n\n    public void setC(List<Boolean> c) {\n        this.c = c;\n    }\n\n    public boolean isD() {\n        return d;\n    }\n\n    public void setD(boolean d) {\n        this.d = d;\n    }\n\n    public List<CommonObject> getE() {\n        return e;\n    }\n\n    public void setE(List<CommonObject> e) {\n        this.e = e;\n    }\n\n    public int getF() {\n        return f;\n    }\n\n    public void setF(int f) {\n        this.f = f;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectX.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectX {\n\n\t\n\tprivate long a = 0;\n\t\n\tprivate int b;\n\n\t\n\tprivate List<Integer> c;\n\n\t\n\tprivate int d = 0;\n\n\t\n\tprivate int e;\n\n\t\n\tprivate List<Integer> f;\n\n\t\n\tprivate List<String> g;\n\t\n\tprivate List<Integer> h;\n\n\tpublic long getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(long a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic List<Integer> getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(List<Integer> c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic int getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(int e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic List<Integer> getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(List<Integer> f) {\n\t\tthis.f = f;\n\t}\n\n\tpublic List<String> getG() {\n\t\treturn g;\n\t}\n\n\tpublic void setG(List<String> g) {\n\t\tthis.g = g;\n\t}\n\n\tpublic List<Integer> getH() {\n\t\treturn h;\n\t}\n\n\tpublic void setH(List<Integer> h) {\n\t\tthis.h = h;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectX1.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\n\n\npublic class ObjectX1 {\n    \n    int a;\n    \n    int b;\n    \n    String c;\n    \n    String d;\n    \n    long e;\n\n    public int getA() {\n        return a;\n    }\n\n    public void setA(int a) {\n        this.a = a;\n    }\n\n    public int getB() {\n        return b;\n    }\n\n    public void setB(int b) {\n        this.b = b;\n    }\n\n    public String getC() {\n        return c;\n    }\n\n    public void setC(String c) {\n        this.c = c;\n    }\n\n    public String getD() {\n        return d;\n    }\n\n    public void setD(String d) {\n        this.d = d;\n    }\n\n    public long getE() {\n        return e;\n    }\n\n    public void setE(long e) {\n        this.e = e;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectY.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\nimport java.util.List;\n\n\npublic class ObjectY {\n\t\n\tprivate List<ObjectY_A> a;\n\n\t\n\tprivate long b;\n\n\t\n\tprivate int c = 0;\n\n\t\n\tprivate boolean d = false;\n\n\t\n\tprivate int e = -1;\n\n\t\n\tprivate int f = 0;\n\n\t\n\tprivate int g = 0;\n\n\t\n\n\t\n\tprivate int h;\n\t\n\tprivate boolean i =false;\n\t\n\tprivate List<Integer> j;\n\t\n\tprivate List<Integer> k;\n\n\tpublic List<ObjectY_A> getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(List<ObjectY_A> a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic long getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(long b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic boolean isD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(boolean d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic int getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(int e) {\n\t\tthis.e = e;\n\t}\n\n\tpublic int getF() {\n\t\treturn f;\n\t}\n\n\tpublic void setF(int f) {\n\t\tthis.f = f;\n\t}\n\n\tpublic int getG() {\n\t\treturn g;\n\t}\n\n\tpublic void setG(int g) {\n\t\tthis.g = g;\n\t}\n\n\tpublic int getH() {\n\t\treturn h;\n\t}\n\n\tpublic void setH(int h) {\n\t\tthis.h = h;\n\t}\n\n\tpublic boolean isI() {\n\t\treturn i;\n\t}\n\n\tpublic void setI(boolean i) {\n\t\tthis.i = i;\n\t}\n\n\tpublic List<Integer> getJ() {\n\t\treturn j;\n\t}\n\n\tpublic void setJ(List<Integer> j) {\n\t\tthis.j = j;\n\t}\n\n\tpublic List<Integer> getK() {\n\t\treturn k;\n\t}\n\n\tpublic void setK(List<Integer> k) {\n\t\tthis.k = k;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectY1.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\n\npublic class ObjectY1 {\n\t\n\tprivate int a;\n\n\t\n\tprivate int b;\n\t\n\tprivate int c;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectY_A.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\n\npublic class ObjectY_A {\n\n\t\n\tprivate int a = 0;\n\n\t\n\tprivate int b;\n\n\t\n\tprivate int c;\n\n\t\n\tprivate int d;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic int getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(int b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic int getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(int c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectZ.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\npublic class ObjectZ {\n\t\n\tprivate int a;\n\t\n\tprivate long b;\n\n\tpublic int getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(int a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic long getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(long b) {\n\t\tthis.b = b;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectZ1.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\nimport java.util.List;\n\n\npublic class ObjectZ1 {\n    private int a;\n\n\n    private int b;\n\n\n    private int c;\n\n\n    private int d;\n\n\n    private int e;\n\n\n    private List<Integer> f;\n\n\n    private List<Integer> g;\n\n\n    private List<Integer> h;\n\n\n    private List<ObjectZ1_A> i;\n\n    public int getA() {\n        return a;\n    }\n\n    public void setA(int a) {\n        this.a = a;\n    }\n\n    public int getB() {\n        return b;\n    }\n\n    public void setB(int b) {\n        this.b = b;\n    }\n\n    public int getC() {\n        return c;\n    }\n\n    public void setC(int c) {\n        this.c = c;\n    }\n\n    public int getD() {\n        return d;\n    }\n\n    public void setD(int d) {\n        this.d = d;\n    }\n\n    public int getE() {\n        return e;\n    }\n\n    public void setE(int e) {\n        this.e = e;\n    }\n\n    public List<Integer> getF() {\n        return f;\n    }\n\n    public void setF(List<Integer> f) {\n        this.f = f;\n    }\n\n    public List<Integer> getG() {\n        return g;\n    }\n\n    public void setG(List<Integer> g) {\n        this.g = g;\n    }\n\n    public List<Integer> getH() {\n        return h;\n    }\n\n    public void setH(List<Integer> h) {\n        this.h = h;\n    }\n\n    public List<ObjectZ1_A> getI() {\n        return i;\n    }\n\n    public void setI(List<ObjectZ1_A> i) {\n        this.i = i;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/ObjectZ1_A.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\n\n\n\n\n\npublic class ObjectZ1_A {\n    \n    private int a;\n\n    \n    private int b;\n\n    \n    private int c;\n\n    public int getA() {\n        return a;\n    }\n\n    public void setA(int a) {\n        this.a = a;\n    }\n\n    public int getB() {\n        return b;\n    }\n\n    public void setB(int b) {\n        this.b = b;\n    }\n\n    public int getC() {\n        return c;\n    }\n\n    public void setC(int c) {\n        this.c = c;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues3796/bean/OjectN_A.java",
    "content": "package com.alibaba.fastjson.deserializer.issues3796.bean;\n\npublic class OjectN_A {\n\tprivate long a;\n\tprivate String b;\n\tprivate String c;\n\tprivate int d;\n\tprivate String e;\n\n\tpublic long getA() {\n\t\treturn a;\n\t}\n\n\tpublic void setA(long a) {\n\t\tthis.a = a;\n\t}\n\n\tpublic String getB() {\n\t\treturn b;\n\t}\n\n\tpublic void setB(String b) {\n\t\tthis.b = b;\n\t}\n\n\tpublic String getC() {\n\t\treturn c;\n\t}\n\n\tpublic void setC(String c) {\n\t\tthis.c = c;\n\t}\n\n\tpublic int getD() {\n\t\treturn d;\n\t}\n\n\tpublic void setD(int d) {\n\t\tthis.d = d;\n\t}\n\n\tpublic String getE() {\n\t\treturn e;\n\t}\n\n\tpublic void setE(String e) {\n\t\tthis.e = e;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues569/TestIssues569.java",
    "content": "package com.alibaba.fastjson.deserializer.issues569;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.deserializer.issues569.beans.Dept;\nimport com.alibaba.fastjson.deserializer.issues569.beans.MyResponse;\nimport com.alibaba.fastjson.deserializer.issues569.parser.ParserConfigBug569;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\nimport org.junit.Before;\nimport org.junit.Test;\n\nimport java.lang.reflect.Type;\nimport java.util.*;\n\n/**\n * Author : BlackShadowWalker\n * Date   : 2016-10-10\n *\n * https://github.com/alibaba/fastjson/issues/569\n */\npublic class TestIssues569 {\n\n    private int featureValues = JSON.DEFAULT_PARSER_FEATURE;\n    private Feature[] features;\n\n    private static final Feature[] EMPTY_SERIALIZER_FEATURES = new Feature[0];\n\n    private String jsonData = \"{\\\"result\\\":[{\\\"id\\\":0,\\\"startDate\\\":1420041600000,\\\"name\\\":\\\"集团\\\",\\\"abbr\\\":\\\"集团\\\",\\\"endDate\\\":253402185600000,\\\"type\\\":\\\"1317967b-4a83-442c-a7b4-1ac9e7bf84d9\\\"},{\\\"id\\\":0,\\\"startDate\\\":1420041600000,\\\"name\\\":\\\"集团总裁办\\\",\\\"abbr\\\":\\\"集团总裁办\\\",\\\"endDate\\\":253402185600000,\\\"pcode\\\":\\\"4aa2817e-ae16-4355-a1cc-a73d0b8abc43\\\",\\\"type\\\":\\\"36e9bde9-2e94-4b91-8b9f-b1078296e3ad\\\"}],\\\"errCode\\\":0,\\\"success\\\":true}\";\n\n    private Type mType1;//MyResponse\n    private Type mType;//MyResponse<List<Dept>>\n\n    ParserConfig config = ParserConfig.getGlobalInstance();\n    ParserConfig configBug569 = new ParserConfigBug569();//这个是包含bug的代码\n\n    @Before\n    public void init() {\n        mType = new TypeReference<MyResponse<List<Dept>>>() {\n        }.getType();\n        mType1 = new TypeReference<MyResponse>() {\n        }.getType();\n    }\n\n    //复现\n    @Test\n    public void testBug569() {\n        //第一次反序列化是使用的 MyResponse， 没有指定泛型类型，貌似会缓存 MyResponse， 后面在调用的MyResponse<?>反序列化就受影响了\n        MyResponse resp1 = JSON.parseObject(jsonData, mType1, configBug569, featureValues,\n                features != null ? features : EMPTY_SERIALIZER_FEATURES);\n\n        //expect MyResponse<JSONArray<JSONObject>>\n        MyResponse resp = JSON.parseObject(jsonData, mType, configBug569, featureValues,\n                features != null ? features : EMPTY_SERIALIZER_FEATURES);\n        Assert.assertNotNull(resp);\n        Assert.assertNotNull(resp.getResult());\n        Assert.assertEquals(JSONArray.class, resp.getResult().getClass());//这里会受到 resp1 的影响\n    }\n\n    //修复\n    @Test\n    public void testFixBug569() {\n        MyResponse resp1 = JSON.parseObject(jsonData, mType1, config, featureValues,\n                features != null ? features : EMPTY_SERIALIZER_FEATURES);\n\n        //expect MyResponse<List<Dept>>\n        MyResponse resp = JSON.parseObject(jsonData, mType, config, featureValues,\n                features != null ? features : EMPTY_SERIALIZER_FEATURES);\n        Assert.assertNotNull(resp);\n        Assert.assertNotNull(resp.getResult());\n        Assert.assertEquals(ArrayList.class, resp.getResult().getClass());\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues569/beans/Dept.java",
    "content": "package com.alibaba.fastjson.deserializer.issues569.beans;\n\n/**\n * Author : BlackShadowWalker\n * Date   : 2016-10-10\n */\npublic class Dept {\n\n    Long id;\n    String code;//部门编号\n    String name;//部门名称\n    String abbr;//简称\n\n    public Long getId() {\n        return id;\n    }\n\n    public void setId(Long id) {\n        this.id = id;\n    }\n\n    public String getCode() {\n        return code;\n    }\n\n    public void setCode(String code) {\n        this.code = code;\n    }\n\n    public String getName() {\n        return name;\n    }\n\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    public String getAbbr() {\n        return abbr;\n    }\n\n    public void setAbbr(String abbr) {\n        this.abbr = abbr;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues569/beans/MyResponse.java",
    "content": "package com.alibaba.fastjson.deserializer.issues569.beans;\n\n/**\n * Author : BlackShadowWalker\n * Date   : 2016-09-06\n */\npublic class MyResponse<T> {\n\n    Boolean success;\n    Integer errCode;\n    String errDes;\n    T       result;\n\n    public Boolean getSuccess() {\n        return success;\n    }\n\n    public void setSuccess(Boolean success) {\n        this.success = success;\n    }\n\n    public Integer getErrCode() {\n        return errCode;\n    }\n\n    public void setErrCode(Integer errCode) {\n        this.errCode = errCode;\n    }\n\n    public String getErrDes() {\n        return errDes;\n    }\n\n    public void setErrDes(String errDes) {\n        this.errDes = errDes;\n    }\n\n    public T getResult() {\n        return result;\n    }\n\n    public void setResult(T result) {\n        this.result = result;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues569/parser/DefaultFieldDeserializerBug569.java",
    "content": "package com.alibaba.fastjson.deserializer.issues569.parser;\r\n\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.ParseContext;\r\nimport com.alibaba.fastjson.parser.ParserConfig;\r\nimport com.alibaba.fastjson.parser.deserializer.ContextObjectDeserializer;\r\nimport com.alibaba.fastjson.parser.deserializer.DefaultFieldDeserializer;\r\nimport com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer;\r\nimport com.alibaba.fastjson.util.FieldInfo;\r\n\r\nimport java.lang.reflect.ParameterizedType;\r\nimport java.lang.reflect.Type;\r\nimport java.util.Map;\r\n\r\n/**\r\n * Author : BlackShadowWalker\r\n * Date   : 2016-10-10\r\n */\r\npublic class DefaultFieldDeserializerBug569 extends DefaultFieldDeserializer {\r\n    public DefaultFieldDeserializerBug569(ParserConfig mapping, Class<?> clazz, FieldInfo fieldInfo) {\r\n        super(mapping, clazz, fieldInfo);\r\n    }\r\n\r\n    @Override\r\n    public void parseField(DefaultJSONParser parser, Object object, Type objectType, Map<String, Object> fieldValues) {\r\n        if (fieldValueDeserilizer == null) {\r\n            getFieldValueDeserilizer(parser.getConfig());\r\n        }\r\n\r\n        Type fieldType = fieldInfo.fieldType;\r\n        if (objectType instanceof ParameterizedType) {\r\n            ParseContext objContext = parser.getContext();\r\n            objContext.type = objectType;\r\n            fieldType = FieldInfo.getFieldType(this.clazz, objectType, fieldType);\r\n        }\r\n\r\n        // ContextObjectDeserializer\r\n        Object value;\r\n        if (fieldValueDeserilizer instanceof JavaBeanDeserializer) {\r\n            JavaBeanDeserializer javaBeanDeser = (JavaBeanDeserializer) fieldValueDeserilizer;\r\n            value = javaBeanDeser.deserialze(parser, fieldType, fieldInfo.name, fieldInfo.parserFeatures);\r\n        } else {\r\n            if (this.fieldInfo.format != null && fieldValueDeserilizer instanceof ContextObjectDeserializer) {\r\n                value = ((ContextObjectDeserializer) fieldValueDeserilizer) //\r\n                        .deserialze(parser, fieldType,\r\n                                fieldInfo.name,\r\n                                fieldInfo.format,\r\n                                fieldInfo.parserFeatures);\r\n            } else {\r\n                value = fieldValueDeserilizer.deserialze(parser, fieldType, fieldInfo.name);\r\n            }\r\n        }\r\n        if (parser.getResolveStatus() == DefaultJSONParser.NeedToResolve) {\r\n            DefaultJSONParser.ResolveTask task = parser.getLastResolveTask();\r\n            task.fieldDeserializer = this;\r\n            task.ownerContext = parser.getContext();\r\n            parser.setResolveStatus(DefaultJSONParser.NONE);\r\n        } else {\r\n            if (object == null) {\r\n                fieldValues.put(fieldInfo.name, value);\r\n            } else {\r\n                setValue(object, value);\r\n            }\r\n        }\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/issues569/parser/ParserConfigBug569.java",
    "content": "package com.alibaba.fastjson.deserializer.issues569.parser;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.*;\nimport com.alibaba.fastjson.serializer.AwtCodec;\nimport com.alibaba.fastjson.serializer.CollectionCodec;\nimport com.alibaba.fastjson.serializer.MiscCodec;\nimport com.alibaba.fastjson.serializer.ObjectArrayCodec;\nimport com.alibaba.fastjson.util.FieldInfo;\nimport com.alibaba.fastjson.util.JavaBeanInfo;\nimport com.alibaba.fastjson.util.ServiceLoader;\nimport com.alibaba.fastjson.util.TypeUtils;\n\nimport java.lang.reflect.ParameterizedType;\nimport java.lang.reflect.Type;\nimport java.lang.reflect.TypeVariable;\nimport java.lang.reflect.WildcardType;\nimport java.util.*;\n\n/**\n * Author : BlackShadowWalker\n * Date   : 2016-10-10\n */\npublic class ParserConfigBug569 extends ParserConfig {\n\n    private static boolean                                  awtError    = false;\n    private static boolean                                  jdk8Error   = false;\n    private String[]                                        denyList    = new String[] { \"java.lang.Thread\" };\n\n    public FieldDeserializer createFieldDeserializer(ParserConfig mapping, //\n                                                     JavaBeanInfo beanInfo, //\n                                                     FieldInfo fieldInfo) {\n        Class<?> clazz = beanInfo.clazz;\n        Class<?> fieldClass = fieldInfo.fieldClass;\n\n        Class<?> deserializeUsing = null;\n        JSONField annotation = fieldInfo.getAnnotation();\n        if (annotation != null) {\n            deserializeUsing = annotation.deserializeUsing();\n            if (deserializeUsing == Void.class) {\n                deserializeUsing = null;\n            }\n        }\n\n        if (deserializeUsing == null && (fieldClass == List.class || fieldClass == ArrayList.class)) {\n            return new ArrayListTypeFieldDeserializer(mapping, clazz, fieldInfo);\n        }\n\n        return new DefaultFieldDeserializerBug569(mapping, clazz, fieldInfo);\n    }\n\n    public ObjectDeserializer getDeserializer(Class<?> clazz, Type type) {\n        com.alibaba.fastjson.util.IdentityHashMap<Type, ObjectDeserializer> deserializers = super.getDeserializers();\n        ObjectDeserializer deserializer = deserializers.get(type);\n        if (deserializer != null) {\n            return deserializer;\n        }\n\n        if (type == null) {\n            type = clazz;\n        }\n\n        deserializer = deserializers.get(type);\n        if (deserializer != null) {\n            return deserializer;\n        }\n\n        {\n            JSONType annotation = TypeUtils.getAnnotation(clazz,JSONType.class);\n            if (annotation != null) {\n                Class<?> mappingTo = annotation.mappingTo();\n                if (mappingTo != Void.class) {\n                    return getDeserializer(mappingTo, mappingTo);\n                }\n            }\n        }\n\n        if (type instanceof WildcardType || type instanceof TypeVariable || type instanceof ParameterizedType) {\n            deserializer = deserializers.get(clazz);\n        }\n\n        if (deserializer != null) {\n            return deserializer;\n        }\n\n        String className = clazz.getName();\n        className = className.replace('$', '.');\n        for (int i = 0; i < denyList.length; ++i) {\n            String deny = denyList[i];\n            if (className.startsWith(deny)) {\n                throw new JSONException(\"parser deny : \" + className);\n            }\n        }\n\n        if (className.startsWith(\"java.awt.\") //\n                && AwtCodec.support(clazz)) {\n            if (!awtError) {\n                try {\n                    deserializers.put(Class.forName(\"java.awt.Point\"), AwtCodec.instance);\n                    deserializers.put(Class.forName(\"java.awt.Font\"), AwtCodec.instance);\n                    deserializers.put(Class.forName(\"java.awt.Rectangle\"), AwtCodec.instance);\n                    deserializers.put(Class.forName(\"java.awt.Color\"), AwtCodec.instance);\n                } catch (Throwable e) {\n                    // skip\n                    awtError = true;\n                }\n\n                deserializer = AwtCodec.instance;\n            }\n        }\n\n        if (!jdk8Error) {\n            try {\n                if (className.startsWith(\"java.time.\")) {\n\n                    deserializers.put(Class.forName(\"java.time.LocalDateTime\"), Jdk8DateCodec.instance);\n                    deserializers.put(Class.forName(\"java.time.LocalDate\"), Jdk8DateCodec.instance);\n                    deserializers.put(Class.forName(\"java.time.LocalTime\"), Jdk8DateCodec.instance);\n                    deserializers.put(Class.forName(\"java.time.ZonedDateTime\"), Jdk8DateCodec.instance);\n                    deserializers.put(Class.forName(\"java.time.OffsetDateTime\"), Jdk8DateCodec.instance);\n                    deserializers.put(Class.forName(\"java.time.OffsetTime\"), Jdk8DateCodec.instance);\n                    deserializers.put(Class.forName(\"java.time.ZoneOffset\"), Jdk8DateCodec.instance);\n                    deserializers.put(Class.forName(\"java.time.ZoneRegion\"), Jdk8DateCodec.instance);\n                    deserializers.put(Class.forName(\"java.time.ZoneId\"), Jdk8DateCodec.instance);\n                    deserializers.put(Class.forName(\"java.time.Period\"), Jdk8DateCodec.instance);\n                    deserializers.put(Class.forName(\"java.time.Duration\"), Jdk8DateCodec.instance);\n                    deserializers.put(Class.forName(\"java.time.Instant\"), Jdk8DateCodec.instance);\n\n                    deserializer = deserializers.get(clazz);\n                } else if (className.startsWith(\"java.util.Optional\")) {\n\n                    deserializers.put(Class.forName(\"java.util.Optional\"), OptionalCodec.instance);\n                    deserializers.put(Class.forName(\"java.util.OptionalDouble\"), OptionalCodec.instance);\n                    deserializers.put(Class.forName(\"java.util.OptionalInt\"), OptionalCodec.instance);\n                    deserializers.put(Class.forName(\"java.util.OptionalLong\"), OptionalCodec.instance);\n\n                    deserializer = deserializers.get(clazz);\n                }\n            } catch (Throwable e) {\n                // skip\n                jdk8Error = true;\n            }\n        }\n\n        if (className.equals(\"java.nio.file.Path\")) {\n            deserializers.put(clazz, MiscCodec.instance);\n        }\n\n        final ClassLoader classLoader = Thread.currentThread().getContextClassLoader();\n        try {\n            for (AutowiredObjectDeserializer autowired : ServiceLoader.load(AutowiredObjectDeserializer.class,\n                    classLoader)) {\n                for (Type forType : autowired.getAutowiredFor()) {\n                    deserializers.put(forType, autowired);\n                }\n            }\n        } catch (Exception ex) {\n            // skip\n        }\n\n        if (deserializer == null) {\n            deserializer = deserializers.get(type);\n        }\n\n        if (deserializer != null) {\n            return deserializer;\n        }\n\n        if (clazz.isEnum()) {\n            deserializer = new EnumDeserializer(clazz);\n        } else if (clazz.isArray()) {\n            deserializer = ObjectArrayCodec.instance;\n        } else if (clazz == Set.class || clazz == HashSet.class || clazz == Collection.class || clazz == List.class\n                || clazz == ArrayList.class) {\n            deserializer = CollectionCodec.instance;\n        } else if (Collection.class.isAssignableFrom(clazz)) {\n            deserializer = CollectionCodec.instance;\n        } else if (Map.class.isAssignableFrom(clazz)) {\n            deserializer = MapDeserializer.instance;\n        } else if (Throwable.class.isAssignableFrom(clazz)) {\n            deserializer = new ThrowableDeserializer(this, clazz);\n        } else {\n            deserializer = createJavaBeanDeserializer(clazz, type);\n        }\n\n        putDeserializer(type, deserializer);\n\n        return deserializer;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/javabean/ConvertDO.java",
    "content": "package com.alibaba.fastjson.deserializer.javabean;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\nimport java.io.Serializable;\nimport java.time.LocalDate;\nimport java.time.LocalDateTime;\nimport java.time.LocalTime;\nimport java.util.Date;\nimport java.util.List;\nimport java.util.Map;\n\n/**\n * @author ylyue\n * @since 2021/3/23\n */\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\npublic class ConvertDO implements Serializable {\n\n    private static final long serialVersionUID = 3987648902475498726L;\n\n    private int inta;\n    private Integer intb;\n    private long longa;\n    private Long longb;\n    private boolean booleana;\n    private Boolean booleanb;\n    private Character character;\n    private String str;\n\n    private String[] arrayStr;\n    private long[] arrayLong;\n    private List<String> list;\n\n    private Date date;\n//    private DateTime dateTime;\n//    private LocalDate localDate;\n//    private LocalTime localTime;\n//    private LocalDateTime localDateTime;\n\n    private Map<String, Object> map;\n    private JSONObject jsonObject;\n    private JSONArray jsonArray;\n    private List<JSONObject> jsonObjectList;\n\n    private Map<String, Object> strToMap;\n    private JSONObject strToJsonObject;\n    private JSONArray strToJsonArray;\n    private List<JSONObject> strToJsonObjectList;\n\n    private ConvertEnum convertEnum;\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/javabean/ConvertEnum.java",
    "content": "package com.alibaba.fastjson.deserializer.javabean;\n\n/**\n * @author ylyue\n * @since 2021/3/24\n */\n\npublic enum ConvertEnum {\n\n    A_A, BB_B;\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/deserializer/javabean/JavaBeanConvertTest.java",
    "content": "package com.alibaba.fastjson.deserializer.javabean;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.util.TypeUtils;\nimport org.junit.Assert;\nimport org.junit.Test;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * JavaBean类型转换器测试\n *\n * @author ylyue\n * @since 2021/3/23\n */\npublic class JavaBeanConvertTest {\n\n    @Test\n    public void javaBeanDeserializerTest() {\n        Map<String, Object> map = new HashMap();\n        map.put(\"key1\", \"value1\");\n        map.put(\"key2\", \"value2\");\n\n        JSONObject jsonObject = new JSONObject();\n        jsonObject.put(\"aaa\", 1);\n        jsonObject.put(\"bbb\", 2);\n        jsonObject.put(\"ccc\", \"11111\");\n\n        JSONArray jsonArray = new JSONArray();\n        jsonArray.add(jsonObject);\n\n        JSONObject paramJson = new JSONObject();\n        // JSON - JSON\n        paramJson.put(\"map\", map);\n        paramJson.put(\"jsonObject\", jsonObject);\n        paramJson.put(\"jsonArray\", jsonArray);\n        paramJson.put(\"jsonObjectList\", jsonArray);\n        // JSONString - JSON\n        paramJson.put(\"strToMap\", map);\n        paramJson.put(\"strToJsonObject\", jsonObject.toJSONString());\n        paramJson.put(\"strToJsonArray\", jsonArray.toJSONString());\n        paramJson.put(\"strToJsonObjectList\", jsonArray.toJSONString());\n\n        // 基本类型\n        paramJson.put(\"character\", \"c\");\n        paramJson.put(\"str\", \"STR\");\n        paramJson.put(\"inta\", \"1\");\n        paramJson.put(\"intb\", \"2\");\n        paramJson.put(\"longa\", \"3\");\n        paramJson.put(\"longb\", 888l);\n        paramJson.put(\"booleana\", \"1\");\n        paramJson.put(\"booleanb\", true);\n\n        // 数组\n        paramJson.put(\"arrayStr\", new String[]{\"aaaa\", \"bbbbb\", \"cccc\"});\n        paramJson.put(\"arrayLong\", new Long[]{1L, 2L, 3L});\n        paramJson.put(\"list\", new String[]{\"aaaa\", \"bbbbb\", \"cccc\"});\n\n        // 时间类型\n        paramJson.put(\"date\", \"2021-03-23\");\n        paramJson.put(\"dateTime\", \"2021-03-24\");\n        paramJson.put(\"localDate\", \"2021-03-24\");\n        paramJson.put(\"localTime\", \"16:03:24\");\n        paramJson.put(\"localDateTime\", \"2021-03-24 16:03:24\");\n\n        // 其它\n        paramJson.put(\"convertEnum\", \"A_A\");\n\n        ConvertDO convertDO = TypeUtils.castToJavaBean(paramJson, ConvertDO.class, ParserConfig.getGlobalInstance());\n        Assert.assertNotNull(convertDO);\n//        System.out.println(convertDO);\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/jsonpath/issue3493/TestIssue3493.java",
    "content": "package com.alibaba.fastjson.jsonpath.issue3493;\n\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONPath;\nimport org.junit.Assert;\nimport org.junit.Test;\n\n\n/**\n * @author wangzn\n * @since 2020/10/27 10:27\n */\npublic class TestIssue3493 {\n\n    @Test\n    public void testIssue3493(){\n        String json = \"{\\n\" +\n                \"\\\"result\\\": [\\n\" +\n                \"{\\n\" +\n                \"\\\"puid\\\": \\\"21025318\\\"\\n\" +\n                \"},\\n\" +\n                \"{\\n\" +\n                \"\\\"puid\\\": \\\"21482682\\\"\\n\" +\n                \"},\\n\" +\n                \"{\\n\" +\n                \"\\\"puid\\\": \\\"21025345\\\"\\n\" +\n                \"}\\n\" +\n                \"],\\n\" +\n                \"\\\"state\\\": 0\\n\" +\n                \"}\";\n        Object list = JSONPath.extract(json, \"$.result[0,2].puid\");\n        JSONArray jsonArray = JSON.parseArray(list.toString());\n        Assert.assertEquals(jsonArray.size(), 2);\n        Assert.assertEquals(jsonArray.get(0), \"21025318\");\n        Assert.assertEquals(jsonArray.get(1), \"21025345\");\n    }\n}\n\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/jsonpath/issue3607/TestIssue3607.java",
    "content": "package com.alibaba.fastjson.jsonpath.issue3607;\n\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONPath;\nimport org.junit.Assert;\nimport org.junit.Test;\n\nimport java.util.List;\n\n/**\n * @author : ganyu\n * <p> @Date: 2021/1/6 10:57 </p>\n */\npublic class TestIssue3607 {\n\n    @Test\n    public void testIssue3607() {\n        TestData testData = JSON.parseObject(\"{\\n\" +\n                \"    \\\"data\\\": {\\n\" +\n                \"        \\\"dataRows\\\": [\\n\" +\n                \"            {\\n\" +\n                \"                \\\"dataFields\\\": [\\n\" +\n                \"                    {\\n\" +\n                \"                        \\\"id\\\": 1332,\\n\" +\n                \"                        \\\"name\\\": \\\"gmtRegular\\\",\\n\" +\n                \"                        \\\"status\\\": \\\"success\\\",\\n\" +\n                \"                        \\\"valueType\\\": \\\"DATE\\\"\\n\" +\n                \"                    },\\n\" +\n                \"                    {\\n\" +\n                \"                        \\\"id\\\": 302,\\n\" +\n                \"                        \\\"name\\\": \\\"deptNo\\\",\\n\" +\n                \"                        \\\"status\\\": \\\"success\\\",\\n\" +\n                \"                        \\\"value\\\": \\\"C3736\\\",\\n\" +\n                \"                        \\\"valueType\\\": \\\"STRING\\\"\\n\" +\n                \"                    },\\n\" +\n                \"                    {\\n\" +\n                \"                        \\\"id\\\": 143,\\n\" +\n                \"                        \\\"name\\\": \\\"gmtOrigRegular\\\",\\n\" +\n                \"                        \\\"status\\\": \\\"success\\\",\\n\" +\n                \"                        \\\"value\\\": 1621126800000,\\n\" +\n                \"                        \\\"valueType\\\": \\\"DATE\\\"\\n\" +\n                \"                    },\\n\" +\n                \"                    {\\n\" +\n                \"                        \\\"id\\\": 135,\\n\" +\n                \"                        \\\"name\\\": \\\"name\\\",\\n\" +\n                \"                        \\\"status\\\": \\\"success\\\",\\n\" +\n                \"                        \\\"value\\\": \\\"\\\",\\n\" +\n                \"                        \\\"valueType\\\": \\\"STRING\\\"\\n\" +\n                \"                    },\\n\" +\n                \"                    {\\n\" +\n                \"                        \\\"id\\\": 133,\\n\" +\n                \"                        \\\"name\\\": \\\"workNo\\\",\\n\" +\n                \"                        \\\"status\\\": \\\"success\\\",\\n\" +\n                \"                        \\\"value\\\": \\\"29*6\\\",\\n\" +\n                \"                        \\\"valueType\\\": \\\"STRING\\\"\\n\" +\n                \"                    },\\n\" +\n                \"                    {\\n\" +\n                \"                        \\\"id\\\": 140,\\n\" +\n                \"                        \\\"name\\\": \\\"gmtEntry\\\",\\n\" +\n                \"                        \\\"status\\\": \\\"success\\\",\\n\" +\n                \"                        \\\"value\\\": 1605456000000,\\n\" +\n                \"                        \\\"valueType\\\": \\\"DATE\\\"\\n\" +\n                \"                    },\\n\" +\n                \"                    {\\n\" +\n                \"                        \\\"id\\\": 199,\\n\" +\n                \"                        \\\"name\\\": \\\"superWorkNo\\\",\\n\" +\n                \"                        \\\"status\\\": \\\"success\\\",\\n\" +\n                \"                        \\\"value\\\": \\\"240397\\\",\\n\" +\n                \"                        \\\"valueType\\\": \\\"STRING\\\"\\n\" +\n                \"                    }\\n\" +\n                \"                ]\\n\" +\n                \"            }\\n\" +\n                \"        ]\\n\" +\n                \"    },\\n\" +\n                \"    \\\"status\\\": \\\"success\\\",\\n\" +\n                \"    \\\"success\\\": true\\n\" +\n                \"}\", TestData.class);\n\n\n        List<String> evalResult = (List<String>) JSONPath.eval(testData, \"$.data.dataRows[*].dataFields[*].value\", false);\n        Assert.assertEquals(testData.getData().getDataRows().get(0).getDataFields().size(), evalResult.size());\n\n    }\n\n    static class TestData {\n        private Test1 data;\n        private String status;\n        private Boolean success;\n\n        public Test1 getData() {\n            return data;\n        }\n\n        public void setData(Test1 data) {\n            this.data = data;\n        }\n\n        public String getStatus() {\n            return status;\n        }\n\n        public void setStatus(String status) {\n            this.status = status;\n        }\n\n        public Boolean getSuccess() {\n            return success;\n        }\n\n        public void setSuccess(Boolean success) {\n            this.success = success;\n        }\n    }\n\n    static class Test1 {\n        List<Test2> dataRows;\n\n        public List<Test2> getDataRows() {\n            return dataRows;\n        }\n\n        public void setDataRows(List<Test2> dataRows) {\n            this.dataRows = dataRows;\n        }\n    }\n\n    static class Test2 {\n        List<Test3> dataFields;\n\n        public List<Test3> getDataFields() {\n            return dataFields;\n        }\n\n        public void setDataFields(List<Test3> dataFields) {\n            this.dataFields = dataFields;\n        }\n    }\n\n    static class Test3 {\n        private Integer id;\n        private String name;\n        private String status;\n        private String value;\n        private String valueType;\n\n        public Integer getId() {\n            return id;\n        }\n\n        public void setId(Integer id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public String getStatus() {\n            return status;\n        }\n\n        public void setStatus(String status) {\n            this.status = status;\n        }\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n\n        public String getValueType() {\n            return valueType;\n        }\n\n        public void setValueType(String valueType) {\n            this.valueType = valueType;\n        }\n    }\n\n}\n\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/parser/JSONScannerTest.java",
    "content": "/*\n * Copyright 2018 Diffblue Limited\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * \n *    http://www.apache.org/licenses/LICENSE-2.0\n * \n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\npackage com.alibaba.fastjson.parser;\n\nimport com.alibaba.fastjson.parser.JSONScanner;\nimport com.diffblue.deeptestutils.Reflector;\nimport org.junit.Assert;\nimport org.junit.Rule;\nimport org.junit.Test;\nimport org.junit.rules.ExpectedException;\n\nimport java.lang.reflect.Array;\nimport java.lang.reflect.InvocationTargetException;\nimport java.lang.reflect.Method;\nimport java.util.Calendar;\nimport java.util.Locale;\n\n\npublic class JSONScannerTest {\n\n  @Rule\n  public ExpectedException thrown = ExpectedException.none();\n\n  /* testedClasses: JSONScanner */\n\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 82 branch to line 83\n   */\n\n  @Test\n  public void charArrayCompare1() throws Throwable {\n\n    // Arrange\n    String src = \"\";\n    int offset = 7;\n    char[] dest = { '\\u0000' };\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"charArrayCompare\", Reflector.forName(\"java.lang.String\"), Reflector.forName(\"int\"), Reflector.forName(\"char []\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(null, src, offset, dest);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.This test covers `boolean\n   * charArrayCompare(String, char [])' block 2 (line 81)\n   * This test covers `boolean charArrayCompare(String, char [])' block 3 (line\n   * 82)\n   * This test covers `boolean charArrayCompare(String, char [])' block 4 (line\n   * 82)\n   * This test covers `boolean charArrayCompare(String, char [])' block 5 (line\n   * 86)\n   * This test covers `boolean charArrayCompare(String, char [])' block 7 (line\n   * 86)\n   * This test covers `boolean charArrayCompare(String, char [])' block 8 (line\n   * 86)\n   * This test covers `boolean charArrayCompare(String, char [])' block 10\n   * (line 87)\n   * This test covers `boolean charArrayCompare(String, char [])' block 11\n   * (line 87)\n   * This test covers `boolean charArrayCompare(String, char [])' block 13\n   * (line 88)\n   *\n   */\n\n  @Test\n  public void charArrayCompare3() throws Throwable {\n\n    // Arrange\n    String src = \"!!!!!!!\\\"&&\";\n    int offset = 6;\n    char[] dest = { '\\u0000' };\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"charArrayCompare\", Reflector.forName(\"java.lang.String\"), Reflector.forName(\"int\"), Reflector.forName(\"char []\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(null, src, offset, dest);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 82 branch to line 86\n   *\n   */\n\n  @Test\n  public void charArrayCompare4() throws Throwable {\n\n    // Arrange\n    String src = \"!\\\"&&&&&\";\n    int offset = 0;\n    char[] dest = { };\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"charArrayCompare\", Reflector.forName(\"java.lang.String\"), Reflector.forName(\"int\"), Reflector.forName(\"char []\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(null, src, offset, dest);\n\n    // Assert result\n    Assert.assertEquals(true, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 690 branch to line 690\n   *  - conditional line 690 branch to line 693\n   *  - conditional line 693 branch to line 693\n   *  - conditional line 693 branch to line 696\n   *  - conditional line 696 branch to line 696\n   *  - conditional line 696 branch to line 699\n   *  - conditional line 699 branch to line 699\n   *  - conditional line 699 branch to line 703\n   *  - conditional line 703 branch to line 707\n   *  - conditional line 707 branch to line 708\n   *  - conditional line 708 branch to line 715\n   *  - conditional line 715 branch to line 719\n   *  - conditional line 719 branch to line 719\n   *  - conditional line 719 branch to line 723\n   *  - conditional line 723 branch to line 724\n   *  - conditional line 724 branch to line 731\n   */\n\n  @Test\n  public void checkDate1() throws Throwable {\n\n    // Arrange\n    char y0 = '2';\n    char y1 = '1';\n    char y2 = '1';\n    char y3 = '1';\n    char M0 = '1';\n    char M1 = '0';\n    int d0 = 51;\n    int d1 = 48;\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n    // Assert result\n    Assert.assertEquals(true, retval);\n\n  }\n  \n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 690 branch to line 690\n   *  - conditional line 690 branch to line 693\n   *  - conditional line 693 branch to line 693\n   *  - conditional line 693 branch to line 696\n   *  - conditional line 696 branch to line 696\n   *  - conditional line 696 branch to line 699\n   *  - conditional line 699 branch to line 699\n   *  - conditional line 699 branch to line 703\n   *  - conditional line 703 branch to line 704\n   *  - conditional line 704 branch to line 704\n   *  - conditional line 704 branch to line 705\n   */\n\n  @Test\n  public void checkDate2() throws Throwable {\n\n    // Arrange\n    char y0 = '2';\n    char y1 = '1';\n    char y2 = '1';\n    char y3 = '1';\n    char M0 = '0';\n    char M1 = '\\u8031';\n    int d0 = 0;\n    int d1 = 0;\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 690 branch to line 690\n   *  - conditional line 690 branch to line 693\n   *  - conditional line 693 branch to line 693\n   *  - conditional line 693 branch to line 696\n   *  - conditional line 696 branch to line 696\n   *  - conditional line 696 branch to line 699\n   *  - conditional line 699 branch to line 699\n   *  - conditional line 699 branch to line 703\n   *  - conditional line 703 branch to line 707\n   *  - conditional line 707 branch to line 708\n   *  - conditional line 708 branch to line 715\n   *  - conditional line 715 branch to line 719\n   *  - conditional line 719 branch to line 720\n   *  - conditional line 720 branch to line 720\n   *  - conditional line 720 branch to line 721\n   */\n\n  @Test\n  public void checkDate3() throws Throwable {\n\n    // Arrange\n    char y0 = '2';\n    char y1 = '1';\n    char y2 = '1';\n    char y3 = '1';\n    char M0 = '1';\n    char M1 = '0';\n    int d0 = 49;\n    int d1 = 32810;\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 690 branch to line 690\n   *  - conditional line 690 branch to line 693\n   *  - conditional line 693 branch to line 693\n   *  - conditional line 693 branch to line 696\n   *  - conditional line 696 branch to line 696\n   *  - conditional line 696 branch to line 699\n   *  - conditional line 699 branch to line 699\n   *  - conditional line 699 branch to line 703\n   *  - conditional line 703 branch to line 707\n   *  - conditional line 707 branch to line 708\n   *  - conditional line 708 branch to line 715\n   *  - conditional line 715 branch to line 719\n   *  - conditional line 719 branch to line 719\n   *  - conditional line 719 branch to line 720\n   *  - conditional line 720 branch to line 720\n   *  - conditional line 720 branch to line 721\n   */\n\n  @Test\n  public void checkDate4() throws Throwable {\n\n    // Arrange\n    char y0 = '2';\n    char y1 = '1';\n    char y2 = '1';\n    char y3 = '1';\n    char M0 = '1';\n    char M1 = '0';\n    int d0 = 50;\n    int d1 = 32810;\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 690 branch to line 690\n   *  - conditional line 690 branch to line 691\n   */\n\n  @Test\n  public void checkDate5() throws Throwable {\n\n    // Arrange\n    char y0 = '4';\n    char y1 = '\\u0000';\n    char y2 = '\\u0000';\n    char y3 = '\\u0000';\n    char M0 = '\\u0000';\n    char M1 = '\\u0000';\n    int d0 = 0;\n    int d1 = 0;\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 690 branch to line 691\n   */\n\n  @Test\n  public void checkDate6() throws Throwable {\n\n    // Arrange\n    char y0 = '\\u0000';\n    char y1 = '\\u0000';\n    char y2 = '\\u0000';\n    char y3 = '\\u0000';\n    char M0 = '\\u0000';\n    char M1 = '\\u0000';\n    int d0 = 0;\n    int d1 = 0;\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 690 branch to line 690\n   *  - conditional line 690 branch to line 693\n   *  - conditional line 693 branch to line 693\n   *  - conditional line 693 branch to line 696\n   *  - conditional line 696 branch to line 696\n   *  - conditional line 696 branch to line 699\n   *  - conditional line 699 branch to line 699\n   *  - conditional line 699 branch to line 703\n   *  - conditional line 703 branch to line 704\n   *  - conditional line 704 branch to line 705\n   */\n\n  @Test\n  public void checkDate7() throws Throwable {\n\n    // Arrange\n    char y0 = '2';\n    char y1 = '1';\n    char y2 = '0';\n    char y3 = '0';\n    char M0 = '0';\n    char M1 = '\\u0000';\n    int d0 = 0;\n    int d1 = 0;\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 690 branch to line 690\n   *  - conditional line 690 branch to line 693\n   *  - conditional line 693 branch to line 694\n   */\n\n  @Test\n  public void checkDate8() throws Throwable {\n\n    // Arrange\n    char y0 = '2';\n    char y1 = '\\u0011';\n    char y2 = '0';\n    char y3 = '\\u0830';\n    char M0 = '1';\n    char M1 = '\\u0000';\n    int d0 = 0;\n    int d1 = 0;\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 690 branch to line 690\n   *  - conditional line 690 branch to line 693\n   *  - conditional line 693 branch to line 693\n   *  - conditional line 693 branch to line 696\n   *  - conditional line 696 branch to line 696\n   *  - conditional line 696 branch to line 699\n   *  - conditional line 699 branch to line 699\n   *  - conditional line 699 branch to line 703\n   *  - conditional line 703 branch to line 707\n   *  - conditional line 707 branch to line 708\n   *  - conditional line 708 branch to line 715\n   *  - conditional line 715 branch to line 719\n   *  - conditional line 719 branch to line 720\n   *  - conditional line 720 branch to line 720\n   *  - conditional line 720 branch to line 731\n   */\n\n  @Test\n  public void checkDate9() throws Throwable {\n\n    // Arrange\n    char y0 = '2';\n    char y1 = '1';\n    char y2 = '1';\n    char y3 = '1';\n    char M0 = '1';\n    char M1 = '0';\n    int d0 = 49;\n    int d1 = 49;\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n    // Assert result\n    Assert.assertEquals(true, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 690 branch to line 690\n   *  - conditional line 690 branch to line 693\n   *  - conditional line 693 branch to line 693\n   *  - conditional line 693 branch to line 696\n   *  - conditional line 696 branch to line 696\n   *  - conditional line 696 branch to line 699\n   *  - conditional line 699 branch to line 699\n   *  - conditional line 699 branch to line 703\n   *  - conditional line 703 branch to line 707\n   *  - conditional line 707 branch to line 708\n   *  - conditional line 708 branch to line 715\n   *  - conditional line 715 branch to line 719\n   *  - conditional line 719 branch to line 719\n   *  - conditional line 719 branch to line 723\n   *  - conditional line 723 branch to line 728\n   */\n\n  @Test\n  public void checkDate10() throws Throwable {\n\n    // Arrange\n    char y0 = '2';\n    char y1 = '1';\n    char y2 = '1';\n    char y3 = '1';\n    char M0 = '1';\n    char M1 = '0';\n    int d0 = 8388658;\n    int d1 = 32810;\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 690 branch to line 690\n   *  - conditional line 690 branch to line 693\n   *  - conditional line 693 branch to line 693\n   *  - conditional line 693 branch to line 696\n   *  - conditional line 696 branch to line 696\n   *  - conditional line 696 branch to line 699\n   *  - conditional line 699 branch to line 699\n   *  - conditional line 699 branch to line 703\n   *  - conditional line 703 branch to line 707\n   *  - conditional line 707 branch to line 708\n   *  - conditional line 708 branch to line 715\n   *  - conditional line 715 branch to line 716\n   *  - conditional line 716 branch to line 716\n   *  - conditional line 716 branch to line 731\n   */\n\n  @Test\n  public void checkDate11() throws Throwable {\n\n    // Arrange\n    char y0 = '2';\n    char y1 = '1';\n    char y2 = '1';\n    char y3 = '1';\n    char M0 = '1';\n    char M1 = '0';\n    int d0 = 48;\n    int d1 = 49;\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n    // Assert result\n    Assert.assertEquals(true, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 690 branch to line 690\n   *  - conditional line 690 branch to line 693\n   *  - conditional line 693 branch to line 693\n   *  - conditional line 693 branch to line 696\n   *  - conditional line 696 branch to line 696\n   *  - conditional line 696 branch to line 697\n   */\n\n  @Test\n  public void checkDate12() throws Throwable {\n\n    // Arrange\n    char y0 = '2';\n    char y1 = '1';\n    char y2 = '\\u8030';\n    char y3 = '\\u0830';\n    char M0 = '1';\n    char M1 = '\\u0000';\n    int d0 = 0;\n    int d1 = 0;\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 690 branch to line 690\n   *  - conditional line 690 branch to line 693\n   *  - conditional line 693 branch to line 693\n   *  - conditional line 693 branch to line 696\n   *  - conditional line 696 branch to line 696\n   *  - conditional line 696 branch to line 699\n   *  - conditional line 699 branch to line 699\n   *  - conditional line 699 branch to line 703\n   *  - conditional line 703 branch to line 707\n   *  - conditional line 707 branch to line 708\n   *  - conditional line 708 branch to line 715\n   *  - conditional line 715 branch to line 716\n   *  - conditional line 716 branch to line 717\n   */\n\n  @Test\n  public void checkDate13() throws Throwable {\n\n    // Arrange\n    char y0 = '2';\n    char y1 = '1';\n    char y2 = '1';\n    char y3 = '1';\n    char M0 = '1';\n    char M1 = '0';\n    int d0 = 48;\n    int d1 = 0;\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 690 branch to line 690\n   *  - conditional line 690 branch to line 693\n   *  - conditional line 693 branch to line 693\n   *  - conditional line 693 branch to line 696\n   *  - conditional line 696 branch to line 696\n   *  - conditional line 696 branch to line 699\n   *  - conditional line 699 branch to line 699\n   *  - conditional line 699 branch to line 703\n   *  - conditional line 703 branch to line 707\n   *  - conditional line 707 branch to line 708\n   *  - conditional line 708 branch to line 715\n   *  - conditional line 715 branch to line 719\n   *  - conditional line 719 branch to line 719\n   *  - conditional line 719 branch to line 723\n   *  - conditional line 723 branch to line 724\n   *  - conditional line 724 branch to line 724\n   *  - conditional line 724 branch to line 725\n   */\n\n  @Test\n  public void checkDate14() throws Throwable {\n\n    // Arrange\n    char y0 = '2';\n    char y1 = '1';\n    char y2 = '1';\n    char y3 = '1';\n    char M0 = '1';\n    char M1 = '0';\n    int d0 = 51;\n    int d1 = -2147483600;\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 690 branch to line 690\n   *  - conditional line 690 branch to line 693\n   *  - conditional line 693 branch to line 693\n   *  - conditional line 693 branch to line 696\n   *  - conditional line 696 branch to line 696\n   *  - conditional line 696 branch to line 699\n   *  - conditional line 699 branch to line 699\n   *  - conditional line 699 branch to line 703\n   *  - conditional line 703 branch to line 707\n   *  - conditional line 707 branch to line 708\n   *  - conditional line 708 branch to line 708\n   *  - conditional line 708 branch to line 709\n   */\n\n  @Test\n  public void checkDate15() throws Throwable {\n\n    // Arrange\n    char y0 = '2';\n    char y1 = '1';\n    char y2 = '1';\n    char y3 = '1';\n    char M0 = '1';\n    char M1 = '\\u8031';\n    int d0 = 0;\n    int d1 = 0;\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 690 branch to line 690\n   *  - conditional line 690 branch to line 693\n   *  - conditional line 693 branch to line 693\n   *  - conditional line 693 branch to line 696\n   *  - conditional line 696 branch to line 696\n   *  - conditional line 696 branch to line 699\n   *  - conditional line 699 branch to line 699\n   *  - conditional line 699 branch to line 700\n   */\n\n  @Test\n  public void checkDate16() throws Throwable {\n\n    // Arrange\n    char y0 = '2';\n    char y1 = '1';\n    char y2 = '0';\n    char y3 = '\\u0830';\n    char M0 = '1';\n    char M1 = '\\u0000';\n    int d0 = 0;\n    int d1 = 0;\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 690 branch to line 690\n   *  - conditional line 690 branch to line 693\n   *  - conditional line 693 branch to line 693\n   *  - conditional line 693 branch to line 696\n   *  - conditional line 696 branch to line 696\n   *  - conditional line 696 branch to line 699\n   *  - conditional line 699 branch to line 699\n   *  - conditional line 699 branch to line 703\n   *  - conditional line 703 branch to line 707\n   *  - conditional line 707 branch to line 712\n   */\n\n  @Test\n  public void checkDate17() throws Throwable {\n\n    // Arrange\n    char y0 = '2';\n    char y1 = '1';\n    char y2 = '0';\n    char y3 = '0';\n    char M0 = '\\u0000';\n    char M1 = '\\u0000';\n    int d0 = 0;\n    int d1 = 0;\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 635 branch to line 639\n   *  - conditional line 639 branch to line 643\n   *  - conditional line 643 branch to line 648\n   */\n\n  @Test\n  public void checkTime1() throws Throwable {\n\n    // Arrange\n    JSONScanner objectUnderTest = ((JSONScanner)Reflector.getInstance(\"com.alibaba.fastjson.parser.JSONScanner\"));\n    objectUnderTest.hasSpecial = false;\n    objectUnderTest.token = 0;\n    objectUnderTest.locale = null;\n    objectUnderTest.np = 0;\n    objectUnderTest.features = 0;\n    Reflector.setField(objectUnderTest, \"text\", \"\");\n    objectUnderTest.calendar = null;\n    objectUnderTest.matchStat = 0;\n    objectUnderTest.bp = 0;\n    Reflector.setField(objectUnderTest, \"len\", 0);\n    objectUnderTest.stringDefaultValue = \"\";\n    objectUnderTest.pos = 0;\n    objectUnderTest.sp = 0;\n    objectUnderTest.sbuf = null;\n    objectUnderTest.ch = '\\u0000';\n    objectUnderTest.timeZone = null;\n    objectUnderTest.eofPos = 0;\n    char h0 = '\\u0000';\n    char h1 = '\\u0000';\n    char m0 = '\\u0000';\n    char m1 = '\\u0000';\n    char s0 = '\\u0000';\n    char s1 = '\\u0000';\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkTime\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(objectUnderTest, h0, h1, m0, m1, s0, s1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 635 branch to line 639\n   *  - conditional line 639 branch to line 643\n   *  - conditional line 643 branch to line 644\n   *  - conditional line 644 branch to line 645\n   */\n\n  @Test\n  public void checkTime2() throws Throwable {\n\n    // Arrange\n    JSONScanner objectUnderTest = ((JSONScanner)Reflector.getInstance(\"com.alibaba.fastjson.parser.JSONScanner\"));\n    objectUnderTest.hasSpecial = false;\n    objectUnderTest.token = 0;\n    objectUnderTest.locale = null;\n    objectUnderTest.np = 0;\n    objectUnderTest.features = 0;\n    Reflector.setField(objectUnderTest, \"text\", \"\");\n    objectUnderTest.calendar = null;\n    objectUnderTest.matchStat = 0;\n    objectUnderTest.bp = 0;\n    Reflector.setField(objectUnderTest, \"len\", 0);\n    objectUnderTest.stringDefaultValue = \"\";\n    objectUnderTest.pos = 0;\n    objectUnderTest.sp = 0;\n    objectUnderTest.sbuf = null;\n    objectUnderTest.ch = '\\u0000';\n    objectUnderTest.timeZone = null;\n    objectUnderTest.eofPos = 0;\n    char h0 = '2';\n    char h1 = '\\u0000';\n    char m0 = '\\u0000';\n    char m1 = '\\u0000';\n    char s0 = '\\u0000';\n    char s1 = '\\u0000';\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkTime\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(objectUnderTest, h0, h1, m0, m1, s0, s1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 635 branch to line 636\n   *  - conditional line 636 branch to line 636\n   *  - conditional line 636 branch to line 637\n   */\n\n  @Test\n  public void checkTime3() throws Throwable {\n\n    // Arrange\n    JSONScanner objectUnderTest = ((JSONScanner)Reflector.getInstance(\"com.alibaba.fastjson.parser.JSONScanner\"));\n    objectUnderTest.hasSpecial = false;\n    objectUnderTest.token = 0;\n    objectUnderTest.locale = null;\n    objectUnderTest.np = 0;\n    objectUnderTest.features = 0;\n    Reflector.setField(objectUnderTest, \"text\", \"\");\n    objectUnderTest.calendar = null;\n    objectUnderTest.matchStat = 0;\n    objectUnderTest.bp = 0;\n    Reflector.setField(objectUnderTest, \"len\", 0);\n    objectUnderTest.stringDefaultValue = \"\";\n    objectUnderTest.pos = 0;\n    objectUnderTest.sp = 0;\n    objectUnderTest.sbuf = null;\n    objectUnderTest.ch = '\\u0000';\n    objectUnderTest.timeZone = null;\n    objectUnderTest.eofPos = 0;\n    char h0 = '0';\n    char h1 = '<';\n    char m0 = '\\u0000';\n    char m1 = '\\u0000';\n    char s0 = '\\u0000';\n    char s1 = '\\u0000';\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkTime\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(objectUnderTest, h0, h1, m0, m1, s0, s1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 635 branch to line 636\n   *  - conditional line 636 branch to line 637\n   */\n\n  @Test\n  public void checkTime4() throws Throwable {\n\n    // Arrange\n    JSONScanner objectUnderTest = ((JSONScanner)Reflector.getInstance(\"com.alibaba.fastjson.parser.JSONScanner\"));\n    objectUnderTest.hasSpecial = false;\n    objectUnderTest.token = 0;\n    objectUnderTest.locale = null;\n    objectUnderTest.np = 0;\n    objectUnderTest.features = 0;\n    Reflector.setField(objectUnderTest, \"text\", \"\");\n    objectUnderTest.calendar = null;\n    objectUnderTest.matchStat = 0;\n    objectUnderTest.bp = 0;\n    Reflector.setField(objectUnderTest, \"len\", 0);\n    objectUnderTest.stringDefaultValue = \"\";\n    objectUnderTest.pos = 0;\n    objectUnderTest.sp = 0;\n    objectUnderTest.sbuf = null;\n    objectUnderTest.ch = '\\u0000';\n    objectUnderTest.timeZone = null;\n    objectUnderTest.eofPos = 0;\n    char h0 = '0';\n    char h1 = ' ';\n    char m0 = '\\u0000';\n    char m1 = '\\u0000';\n    char s0 = '\\u0000';\n    char s1 = '\\u0000';\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkTime\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(objectUnderTest, h0, h1, m0, m1, s0, s1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 635 branch to line 639\n   *  - conditional line 639 branch to line 643\n   *  - conditional line 643 branch to line 644\n   *  - conditional line 644 branch to line 644\n   *  - conditional line 644 branch to line 645\n   */\n\n  @Test\n  public void checkTime5() throws Throwable {\n\n    // Arrange\n    JSONScanner objectUnderTest = ((JSONScanner)Reflector.getInstance(\"com.alibaba.fastjson.parser.JSONScanner\"));\n    objectUnderTest.hasSpecial = false;\n    objectUnderTest.token = 0;\n    objectUnderTest.locale = null;\n    objectUnderTest.np = 0;\n    objectUnderTest.features = 0;\n    Reflector.setField(objectUnderTest, \"text\", \"\");\n    objectUnderTest.calendar = null;\n    objectUnderTest.matchStat = 0;\n    objectUnderTest.bp = 0;\n    Reflector.setField(objectUnderTest, \"len\", 0);\n    objectUnderTest.stringDefaultValue = \"\";\n    objectUnderTest.pos = 0;\n    objectUnderTest.sp = 0;\n    objectUnderTest.sbuf = null;\n    objectUnderTest.ch = '\\u0000';\n    objectUnderTest.timeZone = null;\n    objectUnderTest.eofPos = 0;\n    char h0 = '2';\n    char h1 = '5';\n    char m0 = '\\u0000';\n    char m1 = '\\u0000';\n    char s0 = '\\u0000';\n    char s1 = '\\u0000';\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkTime\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(objectUnderTest, h0, h1, m0, m1, s0, s1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 635 branch to line 636\n   *  - conditional line 636 branch to line 636\n   *  - conditional line 636 branch to line 651\n   *  - conditional line 651 branch to line 651\n   *  - conditional line 651 branch to line 652\n   *  - conditional line 652 branch to line 653\n   */\n\n  @Test\n  public void checkTime6() throws Throwable {\n\n    // Arrange\n    JSONScanner objectUnderTest = ((JSONScanner)Reflector.getInstance(\"com.alibaba.fastjson.parser.JSONScanner\"));\n    objectUnderTest.hasSpecial = false;\n    objectUnderTest.token = 0;\n    objectUnderTest.locale = null;\n    objectUnderTest.np = 0;\n    objectUnderTest.features = 0;\n    Reflector.setField(objectUnderTest, \"text\", \"\");\n    objectUnderTest.calendar = null;\n    objectUnderTest.matchStat = 0;\n    objectUnderTest.bp = 0;\n    Reflector.setField(objectUnderTest, \"len\", 0);\n    objectUnderTest.stringDefaultValue = \"\";\n    objectUnderTest.pos = 0;\n    objectUnderTest.sp = 0;\n    objectUnderTest.sbuf = null;\n    objectUnderTest.ch = '\\u0000';\n    objectUnderTest.timeZone = null;\n    objectUnderTest.eofPos = 0;\n    char h0 = '0';\n    char h1 = '9';\n    char m0 = '1';\n    char m1 = '\\u0000';\n    char s0 = '\\u0000';\n    char s1 = '\\u0000';\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkTime\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(objectUnderTest, h0, h1, m0, m1, s0, s1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 635 branch to line 639\n   *  - conditional line 639 branch to line 640\n   *  - conditional line 640 branch to line 640\n   *  - conditional line 640 branch to line 641\n   */\n\n  @Test\n  public void checkTime7() throws Throwable {\n\n    // Arrange\n    JSONScanner objectUnderTest = ((JSONScanner)Reflector.getInstance(\"com.alibaba.fastjson.parser.JSONScanner\"));\n    objectUnderTest.hasSpecial = false;\n    objectUnderTest.token = 0;\n    objectUnderTest.locale = null;\n    objectUnderTest.np = 0;\n    objectUnderTest.features = 0;\n    Reflector.setField(objectUnderTest, \"text\", \"\");\n    objectUnderTest.calendar = null;\n    objectUnderTest.matchStat = 0;\n    objectUnderTest.bp = 0;\n    Reflector.setField(objectUnderTest, \"len\", 0);\n    objectUnderTest.stringDefaultValue = \"\";\n    objectUnderTest.pos = 0;\n    objectUnderTest.sp = 0;\n    objectUnderTest.sbuf = null;\n    objectUnderTest.ch = '\\u0000';\n    objectUnderTest.timeZone = null;\n    objectUnderTest.eofPos = 0;\n    char h0 = '1';\n    char h1 = '=';\n    char m0 = '1';\n    char m1 = '\\u0000';\n    char s0 = '\\u0000';\n    char s1 = '\\u0000';\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkTime\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(objectUnderTest, h0, h1, m0, m1, s0, s1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 635 branch to line 639\n   *  - conditional line 639 branch to line 640\n   *  - conditional line 640 branch to line 640\n   *  - conditional line 640 branch to line 651\n   *  - conditional line 651 branch to line 651\n   *  - conditional line 651 branch to line 652\n   *  - conditional line 652 branch to line 653\n   */\n\n  @Test\n  public void checkTime8() throws Throwable {\n\n    // Arrange\n    JSONScanner objectUnderTest = ((JSONScanner)Reflector.getInstance(\"com.alibaba.fastjson.parser.JSONScanner\"));\n    objectUnderTest.hasSpecial = false;\n    objectUnderTest.token = 0;\n    objectUnderTest.locale = null;\n    objectUnderTest.np = 0;\n    objectUnderTest.features = 0;\n    Reflector.setField(objectUnderTest, \"text\", \"\");\n    objectUnderTest.calendar = null;\n    objectUnderTest.matchStat = 0;\n    objectUnderTest.bp = 0;\n    Reflector.setField(objectUnderTest, \"len\", 0);\n    objectUnderTest.stringDefaultValue = \"\";\n    objectUnderTest.pos = 0;\n    objectUnderTest.sp = 0;\n    objectUnderTest.sbuf = null;\n    objectUnderTest.ch = '\\u0000';\n    objectUnderTest.timeZone = null;\n    objectUnderTest.eofPos = 0;\n    char h0 = '1';\n    char h1 = '9';\n    char m0 = '1';\n    char m1 = '\\u0000';\n    char s0 = '\\u0000';\n    char s1 = '\\u0000';\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkTime\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(objectUnderTest, h0, h1, m0, m1, s0, s1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 635 branch to line 639\n   *  - conditional line 639 branch to line 640\n   *  - conditional line 640 branch to line 640\n   *  - conditional line 640 branch to line 651\n   *  - conditional line 651 branch to line 655\n   *  - conditional line 655 branch to line 660\n   */\n\n  @Test\n  public void checkTime9() throws Throwable {\n\n    // Arrange\n    JSONScanner objectUnderTest = ((JSONScanner)Reflector.getInstance(\"com.alibaba.fastjson.parser.JSONScanner\"));\n    objectUnderTest.hasSpecial = false;\n    objectUnderTest.token = 0;\n    objectUnderTest.locale = null;\n    objectUnderTest.np = 0;\n    objectUnderTest.features = 0;\n    Reflector.setField(objectUnderTest, \"text\", \"\");\n    objectUnderTest.calendar = null;\n    objectUnderTest.matchStat = 0;\n    objectUnderTest.bp = 0;\n    Reflector.setField(objectUnderTest, \"len\", 0);\n    objectUnderTest.stringDefaultValue = \"\";\n    objectUnderTest.pos = 0;\n    objectUnderTest.sp = 0;\n    objectUnderTest.sbuf = null;\n    objectUnderTest.ch = '\\u0000';\n    objectUnderTest.timeZone = null;\n    objectUnderTest.eofPos = 0;\n    char h0 = '1';\n    char h1 = '9';\n    char m0 = ' ';\n    char m1 = '\\u0000';\n    char s0 = '\\u0000';\n    char s1 = '\\u0000';\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkTime\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(objectUnderTest, h0, h1, m0, m1, s0, s1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 635 branch to line 639\n   *  - conditional line 639 branch to line 640\n   *  - conditional line 640 branch to line 640\n   *  - conditional line 640 branch to line 651\n   *  - conditional line 651 branch to line 651\n   *  - conditional line 651 branch to line 652\n   *  - conditional line 652 branch to line 652\n   *  - conditional line 652 branch to line 663\n   *  - conditional line 663 branch to line 663\n   *  - conditional line 663 branch to line 664\n   *  - conditional line 664 branch to line 665\n   */\n\n  @Test\n  public void checkTime10() throws Throwable {\n\n    // Arrange\n    JSONScanner objectUnderTest = ((JSONScanner)Reflector.getInstance(\"com.alibaba.fastjson.parser.JSONScanner\"));\n    objectUnderTest.hasSpecial = false;\n    objectUnderTest.token = 0;\n    objectUnderTest.locale = null;\n    objectUnderTest.np = 0;\n    objectUnderTest.features = 0;\n    Reflector.setField(objectUnderTest, \"text\", \"\");\n    objectUnderTest.calendar = null;\n    objectUnderTest.matchStat = 0;\n    objectUnderTest.bp = 0;\n    Reflector.setField(objectUnderTest, \"len\", 0);\n    objectUnderTest.stringDefaultValue = \"\";\n    objectUnderTest.pos = 0;\n    objectUnderTest.sp = 0;\n    objectUnderTest.sbuf = null;\n    objectUnderTest.ch = '\\u0000';\n    objectUnderTest.timeZone = null;\n    objectUnderTest.eofPos = 0;\n    char h0 = '1';\n    char h1 = '9';\n    char m0 = '4';\n    char m1 = '3';\n    char s0 = '1';\n    char s1 = '\\u0000';\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkTime\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(objectUnderTest, h0, h1, m0, m1, s0, s1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 635 branch to line 639\n   *  - conditional line 639 branch to line 640\n   *  - conditional line 640 branch to line 640\n   *  - conditional line 640 branch to line 651\n   *  - conditional line 651 branch to line 651\n   *  - conditional line 651 branch to line 655\n   *  - conditional line 655 branch to line 656\n   *  - conditional line 656 branch to line 663\n   *  - conditional line 663 branch to line 663\n   *  - conditional line 663 branch to line 664\n   *  - conditional line 664 branch to line 664\n   *  - conditional line 664 branch to line 665\n   */\n\n  @Test\n  public void checkTime11() throws Throwable {\n\n    // Arrange\n    JSONScanner objectUnderTest = ((JSONScanner)Reflector.getInstance(\"com.alibaba.fastjson.parser.JSONScanner\"));\n    objectUnderTest.hasSpecial = false;\n    objectUnderTest.token = 0;\n    objectUnderTest.locale = null;\n    objectUnderTest.np = 0;\n    objectUnderTest.features = 0;\n    Reflector.setField(objectUnderTest, \"text\", \"\");\n    objectUnderTest.calendar = null;\n    objectUnderTest.matchStat = 0;\n    objectUnderTest.bp = 0;\n    Reflector.setField(objectUnderTest, \"len\", 0);\n    objectUnderTest.stringDefaultValue = \"\";\n    objectUnderTest.pos = 0;\n    objectUnderTest.sp = 0;\n    objectUnderTest.sbuf = null;\n    objectUnderTest.ch = '\\u0000';\n    objectUnderTest.timeZone = null;\n    objectUnderTest.eofPos = 0;\n    char h0 = '1';\n    char h1 = '9';\n    char m0 = '6';\n    char m1 = '0';\n    char s0 = '1';\n    char s1 = '\\u0430';\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkTime\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(objectUnderTest, h0, h1, m0, m1, s0, s1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 635 branch to line 639\n   *  - conditional line 639 branch to line 640\n   *  - conditional line 640 branch to line 640\n   *  - conditional line 640 branch to line 651\n   *  - conditional line 651 branch to line 651\n   *  - conditional line 651 branch to line 655\n   *  - conditional line 655 branch to line 656\n   *  - conditional line 656 branch to line 663\n   *  - conditional line 663 branch to line 663\n   *  - conditional line 663 branch to line 667\n   *  - conditional line 667 branch to line 668\n   *  - conditional line 668 branch to line 669\n   */\n\n  @Test\n  public void checkTime12() throws Throwable {\n\n    // Arrange\n    JSONScanner objectUnderTest = ((JSONScanner)Reflector.getInstance(\"com.alibaba.fastjson.parser.JSONScanner\"));\n    objectUnderTest.hasSpecial = false;\n    objectUnderTest.token = 0;\n    objectUnderTest.locale = null;\n    objectUnderTest.np = 0;\n    objectUnderTest.features = 0;\n    Reflector.setField(objectUnderTest, \"text\", \"\");\n    objectUnderTest.calendar = null;\n    objectUnderTest.matchStat = 0;\n    objectUnderTest.bp = 0;\n    Reflector.setField(objectUnderTest, \"len\", 0);\n    objectUnderTest.stringDefaultValue = \"\";\n    objectUnderTest.pos = 0;\n    objectUnderTest.sp = 0;\n    objectUnderTest.sbuf = null;\n    objectUnderTest.ch = '\\u0000';\n    objectUnderTest.timeZone = null;\n    objectUnderTest.eofPos = 0;\n    char h0 = '1';\n    char h1 = '9';\n    char m0 = '6';\n    char m1 = '0';\n    char s0 = '6';\n    char s1 = '\\u0430';\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkTime\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(objectUnderTest, h0, h1, m0, m1, s0, s1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 635 branch to line 639\n   *  - conditional line 639 branch to line 640\n   *  - conditional line 640 branch to line 640\n   *  - conditional line 640 branch to line 651\n   *  - conditional line 651 branch to line 651\n   *  - conditional line 651 branch to line 655\n   *  - conditional line 655 branch to line 656\n   *  - conditional line 656 branch to line 663\n   *  - conditional line 663 branch to line 663\n   *  - conditional line 663 branch to line 667\n   *  - conditional line 667 branch to line 672\n   */\n\n  @Test\n  public void checkTime13() throws Throwable {\n\n    // Arrange\n    JSONScanner objectUnderTest = ((JSONScanner)Reflector.getInstance(\"com.alibaba.fastjson.parser.JSONScanner\"));\n    objectUnderTest.hasSpecial = false;\n    objectUnderTest.token = 0;\n    objectUnderTest.locale = null;\n    objectUnderTest.np = 0;\n    objectUnderTest.features = 0;\n    Reflector.setField(objectUnderTest, \"text\", \"\");\n    objectUnderTest.calendar = null;\n    objectUnderTest.matchStat = 0;\n    objectUnderTest.bp = 0;\n    Reflector.setField(objectUnderTest, \"len\", 0);\n    objectUnderTest.stringDefaultValue = \"\";\n    objectUnderTest.pos = 0;\n    objectUnderTest.sp = 0;\n    objectUnderTest.sbuf = null;\n    objectUnderTest.ch = '\\u0000';\n    objectUnderTest.timeZone = null;\n    objectUnderTest.eofPos = 0;\n    char h0 = '1';\n    char h1 = '9';\n    char m0 = '6';\n    char m1 = '0';\n    char s0 = '>';\n    char s1 = '\\u0430';\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkTime\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(objectUnderTest, h0, h1, m0, m1, s0, s1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 635 branch to line 639\n   *  - conditional line 639 branch to line 640\n   *  - conditional line 640 branch to line 640\n   *  - conditional line 640 branch to line 651\n   *  - conditional line 651 branch to line 651\n   *  - conditional line 651 branch to line 655\n   *  - conditional line 655 branch to line 656\n   *  - conditional line 656 branch to line 663\n   *  - conditional line 663 branch to line 663\n   *  - conditional line 663 branch to line 667\n   *  - conditional line 667 branch to line 668\n   *  - conditional line 668 branch to line 675\n   */\n\n  @Test\n  public void checkTime14() throws Throwable {\n\n    // Arrange\n    JSONScanner objectUnderTest = ((JSONScanner)Reflector.getInstance(\"com.alibaba.fastjson.parser.JSONScanner\"));\n    objectUnderTest.hasSpecial = false;\n    objectUnderTest.token = 0;\n    objectUnderTest.locale = null;\n    objectUnderTest.np = 0;\n    objectUnderTest.features = 0;\n    Reflector.setField(objectUnderTest, \"text\", \"\");\n    objectUnderTest.calendar = null;\n    objectUnderTest.matchStat = 0;\n    objectUnderTest.bp = 0;\n    Reflector.setField(objectUnderTest, \"len\", 0);\n    objectUnderTest.stringDefaultValue = \"\";\n    objectUnderTest.pos = 0;\n    objectUnderTest.sp = 0;\n    objectUnderTest.sbuf = null;\n    objectUnderTest.ch = '\\u0000';\n    objectUnderTest.timeZone = null;\n    objectUnderTest.eofPos = 0;\n    char h0 = '1';\n    char h1 = '9';\n    char m0 = '6';\n    char m1 = '0';\n    char s0 = '6';\n    char s1 = '0';\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkTime\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(objectUnderTest, h0, h1, m0, m1, s0, s1);\n\n    // Assert result\n    Assert.assertEquals(true, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 635 branch to line 639\n   *  - conditional line 639 branch to line 640\n   *  - conditional line 640 branch to line 640\n   *  - conditional line 640 branch to line 651\n   *  - conditional line 651 branch to line 651\n   *  - conditional line 651 branch to line 652\n   *  - conditional line 652 branch to line 652\n   *  - conditional line 652 branch to line 663\n   *  - conditional line 663 branch to line 663\n   *  - conditional line 663 branch to line 664\n   *  - conditional line 664 branch to line 664\n   *  - conditional line 664 branch to line 665\n   */\n\n  @Test\n  public void checkTime15() throws Throwable {\n\n    // Arrange\n    JSONScanner objectUnderTest = ((JSONScanner)Reflector.getInstance(\"com.alibaba.fastjson.parser.JSONScanner\"));\n    objectUnderTest.hasSpecial = false;\n    objectUnderTest.token = 0;\n    objectUnderTest.locale = null;\n    objectUnderTest.np = 0;\n    objectUnderTest.features = 0;\n    Reflector.setField(objectUnderTest, \"text\", \"\");\n    objectUnderTest.calendar = null;\n    objectUnderTest.matchStat = 0;\n    objectUnderTest.bp = 0;\n    Reflector.setField(objectUnderTest, \"len\", 0);\n    objectUnderTest.stringDefaultValue = \"\";\n    objectUnderTest.pos = 0;\n    objectUnderTest.sp = 0;\n    objectUnderTest.sbuf = null;\n    objectUnderTest.ch = '\\u0000';\n    objectUnderTest.timeZone = null;\n    objectUnderTest.eofPos = 0;\n    char h0 = '1';\n    char h1 = '9';\n    char m0 = '4';\n    char m1 = '3';\n    char s0 = '1';\n    char s1 = '\\u0430';\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkTime\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(objectUnderTest, h0, h1, m0, m1, s0, s1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 635 branch to line 639\n   *  - conditional line 639 branch to line 640\n   *  - conditional line 640 branch to line 640\n   *  - conditional line 640 branch to line 651\n   *  - conditional line 651 branch to line 651\n   *  - conditional line 651 branch to line 652\n   *  - conditional line 652 branch to line 652\n   *  - conditional line 652 branch to line 653\n   */\n\n  @Test\n  public void checkTime16() throws Throwable {\n\n    // Arrange\n    JSONScanner objectUnderTest = ((JSONScanner)Reflector.getInstance(\"com.alibaba.fastjson.parser.JSONScanner\"));\n    objectUnderTest.hasSpecial = false;\n    objectUnderTest.token = 0;\n    objectUnderTest.locale = null;\n    objectUnderTest.np = 0;\n    objectUnderTest.features = 0;\n    Reflector.setField(objectUnderTest, \"text\", \"\");\n    objectUnderTest.calendar = null;\n    objectUnderTest.matchStat = 0;\n    objectUnderTest.bp = 0;\n    Reflector.setField(objectUnderTest, \"len\", 0);\n    objectUnderTest.stringDefaultValue = \"\";\n    objectUnderTest.pos = 0;\n    objectUnderTest.sp = 0;\n    objectUnderTest.sbuf = null;\n    objectUnderTest.ch = '\\u0000';\n    objectUnderTest.timeZone = null;\n    objectUnderTest.eofPos = 0;\n    char h0 = '1';\n    char h1 = '9';\n    char m0 = '4';\n    char m1 = ':';\n    char s0 = '\\u0000';\n    char s1 = '\\u0000';\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkTime\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(objectUnderTest, h0, h1, m0, m1, s0, s1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 635 branch to line 639\n   *  - conditional line 639 branch to line 640\n   *  - conditional line 640 branch to line 640\n   *  - conditional line 640 branch to line 651\n   *  - conditional line 651 branch to line 651\n   *  - conditional line 651 branch to line 655\n   *  - conditional line 655 branch to line 656\n   *  - conditional line 656 branch to line 657\n   */\n\n  @Test\n  public void checkTime17() throws Throwable {\n\n    // Arrange\n    JSONScanner objectUnderTest = ((JSONScanner)Reflector.getInstance(\"com.alibaba.fastjson.parser.JSONScanner\"));\n    objectUnderTest.hasSpecial = false;\n    objectUnderTest.token = 0;\n    objectUnderTest.locale = null;\n    objectUnderTest.np = 0;\n    objectUnderTest.features = 0;\n    Reflector.setField(objectUnderTest, \"text\", \"\");\n    objectUnderTest.calendar = null;\n    objectUnderTest.matchStat = 0;\n    objectUnderTest.bp = 0;\n    Reflector.setField(objectUnderTest, \"len\", 0);\n    objectUnderTest.stringDefaultValue = \"\";\n    objectUnderTest.pos = 0;\n    objectUnderTest.sp = 0;\n    objectUnderTest.sbuf = null;\n    objectUnderTest.ch = '\\u0000';\n    objectUnderTest.timeZone = null;\n    objectUnderTest.eofPos = 0;\n    char h0 = '1';\n    char h1 = '9';\n    char m0 = '6';\n    char m1 = '1';\n    char s0 = '1';\n    char s1 = '\\u0430';\n\n    // Act\n    Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n    Method m = c.getDeclaredMethod(\"checkTime\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"));\n    m.setAccessible(true);\n    boolean retval = (Boolean)m.invoke(objectUnderTest, h0, h1, m0, m1, s0, s1);\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 2040 branch to line 2040\n   */\n\n  @Test\n  public void info1() throws Throwable {\n\n    // Arrange\n    JSONScanner objectUnderTest = ((JSONScanner)Reflector.getInstance(\"com.alibaba.fastjson.parser.JSONScanner\"));\n    objectUnderTest.hasSpecial = false;\n    objectUnderTest.token = 0;\n    Locale locale = ((Locale)Reflector.getInstance(\"java.util.Locale\"));\n    objectUnderTest.locale = locale;\n    objectUnderTest.np = 0;\n    objectUnderTest.features = 0;\n    Reflector.setField(objectUnderTest, \"text\", \"((((\");\n    objectUnderTest.calendar = null;\n    objectUnderTest.matchStat = 0;\n    objectUnderTest.bp = 7;\n    Reflector.setField(objectUnderTest, \"len\", 0);\n    objectUnderTest.stringDefaultValue = \"!!!!\";\n    objectUnderTest.pos = 0;\n    objectUnderTest.sp = 0;\n    char[] charArray = { '\\u0000' };\n    objectUnderTest.sbuf = charArray;\n    objectUnderTest.ch = '\\u0000';\n    objectUnderTest.timeZone = null;\n    objectUnderTest.eofPos = 0;\n\n    // Act\n    String retval = objectUnderTest.info();\n\n    // Assert result\n    Assert.assertEquals(\"pos 7, json : ((((\", retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 736 branch to line 736\n   */\n\n  @Test\n  public void isEOF1() throws Throwable {\n\n    // Arrange\n    JSONScanner objectUnderTest = ((JSONScanner)Reflector.getInstance(\"com.alibaba.fastjson.parser.JSONScanner\"));\n    objectUnderTest.hasSpecial = false;\n    objectUnderTest.token = 0;\n    objectUnderTest.locale = null;\n    objectUnderTest.np = 0;\n    objectUnderTest.features = 0;\n    Reflector.setField(objectUnderTest, \"text\", null);\n    objectUnderTest.calendar = null;\n    objectUnderTest.matchStat = 0;\n    objectUnderTest.bp = 0;\n    Reflector.setField(objectUnderTest, \"len\", 0);\n    objectUnderTest.stringDefaultValue = null;\n    objectUnderTest.pos = 0;\n    objectUnderTest.sp = 0;\n    objectUnderTest.sbuf = null;\n    objectUnderTest.ch = '\\u001a';\n    objectUnderTest.timeZone = null;\n    objectUnderTest.eofPos = 0;\n\n    // Act\n    boolean retval = objectUnderTest.isEOF();\n\n    // Assert result\n    Assert.assertEquals(true, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 736 branch to line 736\n   */\n\n  @Test\n  public void isEOF2() throws Throwable {\n\n    // Arrange\n    JSONScanner objectUnderTest = ((JSONScanner)Reflector.getInstance(\"com.alibaba.fastjson.parser.JSONScanner\"));\n    objectUnderTest.hasSpecial = false;\n    objectUnderTest.token = 0;\n    objectUnderTest.locale = null;\n    objectUnderTest.np = 0;\n    objectUnderTest.features = 0;\n    Reflector.setField(objectUnderTest, \"text\", null);\n    objectUnderTest.calendar = null;\n    objectUnderTest.matchStat = 0;\n    objectUnderTest.bp = 1;\n    Reflector.setField(objectUnderTest, \"len\", 0);\n    objectUnderTest.stringDefaultValue = null;\n    objectUnderTest.pos = 0;\n    objectUnderTest.sp = 0;\n    objectUnderTest.sbuf = null;\n    objectUnderTest.ch = '\\u0000';\n    objectUnderTest.timeZone = null;\n    objectUnderTest.eofPos = 0;\n\n    // Act\n    boolean retval = objectUnderTest.isEOF();\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n\n  /*\n   * Test generated by Diffblue Deeptest.\n   * This test case covers:\n   *  - conditional line 736 branch to line 736\n   */\n\n  @Test\n  public void isEOF3() throws Throwable {\n\n    // Arrange\n    JSONScanner objectUnderTest = ((JSONScanner)Reflector.getInstance(\"com.alibaba.fastjson.parser.JSONScanner\"));\n    objectUnderTest.hasSpecial = false;\n    objectUnderTest.token = 0;\n    objectUnderTest.locale = null;\n    objectUnderTest.np = 0;\n    objectUnderTest.features = 0;\n    Reflector.setField(objectUnderTest, \"text\", null);\n    objectUnderTest.calendar = null;\n    objectUnderTest.matchStat = 0;\n    objectUnderTest.bp = 1;\n    Reflector.setField(objectUnderTest, \"len\", 0);\n    objectUnderTest.stringDefaultValue = null;\n    objectUnderTest.pos = 0;\n    objectUnderTest.sp = 0;\n    objectUnderTest.sbuf = null;\n    objectUnderTest.ch = '\\u001a';\n    objectUnderTest.timeZone = null;\n    objectUnderTest.eofPos = 0;\n\n    // Act\n    boolean retval = objectUnderTest.isEOF();\n\n    // Assert result\n    Assert.assertEquals(false, retval);\n\n  }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/serializer/SerializeWriterTest.java",
    "content": "package com.alibaba.fastjson.serializer;\n\nimport java.io.ByteArrayOutputStream;\nimport java.io.OutputStreamWriter;\nimport java.io.UnsupportedEncodingException;\nimport java.lang.reflect.Field;\nimport java.util.logging.Logger;\n\nimport org.junit.After;\nimport org.junit.Assert;\nimport org.junit.Before;\nimport org.junit.Test;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.util.IOUtils;\n\npublic class SerializeWriterTest {\n\n    private final Logger logger = Logger.getLogger(SerializeWriterTest.class.getSimpleName());\n\n    private final ByteArrayOutputStream baos = new ByteArrayOutputStream();\n\n    private final SerializeWriter writer = new SerializeWriter(new OutputStreamWriter(baos));\n\n    @Before\n    public void setUp() throws Exception {\n    }\n\n    @After\n    public void tearDown() throws Exception {\n    }\n\n    @Test\n    public void testWriteLiteBasicStr() throws UnsupportedEncodingException {\n        String targetStr = new String(IOUtils.DIGITS);\n        this.doTestWrite(targetStr);\n    }\n\n    private String doTestWrite(String input) throws UnsupportedEncodingException {\n        writer.writeString(input, (char) 0);\n        writer.flush();\n        String result = this.baos.toString(\"UTF-8\");\n\n        Assert.assertEquals(input, JSON.parse(result));\n\n        logger.info(result);\n\n        return result;\n    }\n\n    @Test\n    public void testWriteLiteSpecilaStr() throws UnsupportedEncodingException {\n        this.doTestWrite(this.makeSpecialChars());\n    }\n\n    private String makeSpecialChars() {\n        StringBuilder strBuilder = new StringBuilder(128);\n        for (char c = 128; c <= 160; c++) {\n            strBuilder.append(c);\n        }\n        return strBuilder.toString();\n    }\n\n    @Test\n    public void testWriteLargeBasicStr() throws UnsupportedEncodingException {\n        String str = createLargeBasicStr();\n        this.doTestWrite(str);\n    }\n\n    private String createLargeBasicStr() {\n        String tmp = new String(IOUtils.DIGITS);\n        StringBuilder builder = new StringBuilder();\n        for (int i = 0; i < 400; i++) {\n            builder.append(tmp);\n        }\n        return builder.toString();\n    }\n\n    @Test\n    public void testWriteLargeSpecialStr() throws UnsupportedEncodingException {\n\n        String tmp = this.makeSpecialChars();\n        StringBuilder builder = new StringBuilder();\n        for (int i = 0; i < 200; i++) {\n            builder.append(tmp);\n        }\n        this.doTestWrite(builder.toString());\n    }\n\n    @Test\n    public void test_large() throws Exception {\n        SerializeWriter writer = new SerializeWriter();\n\n        for (int i = 0; i < 1024 * 1024; ++i) {\n            writer.write(i);\n        }\n\n        writer.close();\n    }\n\n    @Test\n    public void testBytesBufLocal() throws Exception {\n        String str = createLargeBasicStr();\n        SerializeWriter writer = new SerializeWriter();\n        //写入大于12K的字符串\n        writer.writeString(str);\n        writer.writeString(str);\n        byte[] bytes = writer.toBytes(\"UTF-8\");\n        writer.close();\n\n        //检查bytesLocal大小，如果缓存成功应该大于等于输出的bytes长度\n        Field bytesBufLocalField = SerializeWriter.class.getDeclaredField(\"bytesBufLocal\");\n        bytesBufLocalField.setAccessible(true);\n        ThreadLocal<byte[]> bytesBufLocal = (ThreadLocal<byte[]>) bytesBufLocalField.get(null);\n        byte[] bytesLocal = bytesBufLocal.get();\n        Assert.assertNotNull(\"bytesLocal is null\", bytesLocal);\n        Assert.assertTrue(\"bytesLocal is smaller than expected\", bytesLocal.length >= bytes.length);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/serializer/SerializeWriterToBytesTest.java",
    "content": "package com.alibaba.fastjson.serializer;\n\nimport com.alibaba.fastjson.util.IOUtils;\n\nimport java.io.ByteArrayOutputStream;\nimport java.io.IOException;\n\n/**\n * @author gongdewei 2020/5/15\n */\npublic class SerializeWriterToBytesTest {\n\n    /**\n     * Execute toBytes periodically, use tools to analyze JVM memory allocation.\n     * For example, Memory Allocation Record of YourKit java profiler\n     */\n    public static void testLargeStrToBytes() {\n        String str = createTestStr();\n        for (int i = 0; i < 600; i++) {\n            SerializeWriter writer = new SerializeWriter();\n            try {\n                writer.writeString(str);\n                writer.toBytes(\"UTF-8\");\n            } finally {\n                writer.close();\n            }\n            try {\n                Thread.sleep(1000);\n            } catch (InterruptedException e) {\n            }\n        }\n    }\n\n    public static void testLargeStrWriteToEx() throws IOException {\n        String str = createTestStr();\n        ByteArrayOutputStream baos = new ByteArrayOutputStream(str.length()+2);\n        for (int i = 0; i < 600; i++) {\n            SerializeWriter writer = new SerializeWriter();\n            try {\n                writer.writeString(str);\n                writer.writeToEx(baos, IOUtils.UTF8);\n            } finally {\n                writer.close();\n                baos.reset();\n            }\n            try {\n                Thread.sleep(1000);\n            } catch (InterruptedException e) {\n            }\n        }\n    }\n\n    private static String createTestStr() {\n        String tmp = new String(IOUtils.DIGITS);\n        StringBuilder builder = new StringBuilder();\n        for (int i = 0; i < 400; i++) {\n            builder.append(tmp);\n        }\n        return builder.toString();\n    }\n\n    public static void main(String[] args) throws IOException {\n        testLargeStrToBytes();\n//        testLargeStrWriteToEx();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/serializer/TestBean.java",
    "content": "package com.alibaba.fastjson.serializer;\r\n\r\nimport com.alibaba.fastjson.JSONObject;\r\n\r\n/**\r\n * java bean for test\r\n * Created by yixian on 2016-02-25.\r\n */\r\nclass TestBean {\r\n    private JSONObject data;\r\n    private String name;\r\n\r\n    public JSONObject getData() {\r\n        return data;\r\n    }\r\n\r\n    public void setData(JSONObject data) {\r\n        this.data = data;\r\n    }\r\n\r\n    public String getName() {\r\n        return name;\r\n    }\r\n\r\n    public void setName(String name) {\r\n        this.name = name;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/serializer/TestParse.java",
    "content": "package com.alibaba.fastjson.serializer;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONObject;\r\nimport org.junit.Before;\r\nimport org.junit.Test;\r\n\r\nimport java.util.logging.Logger;\r\n\r\n/**\r\n * test parse json contains jsonobject in javabean\r\n * Created by yixian on 2016-02-25.\r\n */\r\npublic class TestParse {\r\n    private final Logger logger = Logger.getLogger(TestParse.class.getSimpleName());\r\n\r\n    private String jsonString;\r\n\r\n    @Before\r\n    public void prepareJsonString() {\r\n        TestBean bean = new TestBean();\r\n        bean.setName(\"tester\");\r\n        JSONObject data = new JSONObject();\r\n        data.put(\"key\", \"value\");\r\n        bean.setData(data);\r\n        jsonString = JSON.toJSONString(bean, SerializerFeature.WriteClassName);\r\n    }\r\n\r\n    @Test\r\n    public void testParse() {\r\n        logger.info(\"parsing json string:\" + jsonString);\r\n        TestBean testBean = (TestBean) JSON.parse(jsonString);\r\n        assert testBean.getData() != null;\r\n        assert \"tester\".equals(testBean.getName());\r\n        assert \"value\".equals(testBean.getData().getString(\"key\"));\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/serializer/issue3084/TestRefWithQuote.java",
    "content": "package com.alibaba.fastjson.serializer.issue3084;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport org.junit.Test;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport static org.junit.Assert.*;\n\npublic class TestRefWithQuote {\n\n    public static class X {\n        private String x;\n\n        public X(String x) {\n            this.x = x;\n        }\n\n        public String getX() {\n            return x;\n        }\n\n        public void setX(String x) {\n            this.x = x;\n        }\n    }\n\n    @Test\n    public void testIssue3084() {\n        Map<String, TestRefWithQuote.X> origin = new HashMap<String, X>();\n        TestRefWithQuote.X x = new TestRefWithQuote.X(\"x\");\n        origin.put(\"aaaa\\\"\", x);\n        origin.put(\"bbbb\\\"\", x);\n\n        try {\n            String json = JSON.toJSONString(origin, true);\n            JSONObject root = JSON.parseObject(json);\n            assertSame(root.get(\"bbbb\\\\\"), root.get(\"aaaa\\\\\"));\n        } catch (Exception e) {\n            fail(\"should not fail !!!\");\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/serializer/issue3177/Test3177Bean.java",
    "content": "package com.alibaba.fastjson.serializer.issue3177;\n\n/**\n *\n * @author shenzhou-6\n * @since  2020年05月26日\n *\n * https://github.com/alibaba/fastjson/issues/3177\n */\npublic class Test3177Bean {\n    static class Parent {\n        private String _status;\n\n        public String get_status() {\n            return _status;\n        }\n\n        public void set_status(String _status) {\n            this._status = _status;\n        }\n    }\n\n    static class Son extends Parent {\n\n        private String status;\n\n        public String getStatus() {\n            return status;\n        }\n\n        public void setStatus(String status) {\n            this.status = status;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/serializer/issue3177/TestIssues3177.java",
    "content": "package com.alibaba.fastjson.serializer.issue3177;\n\nimport com.alibaba.fastjson.JSON;\nimport org.junit.Assert;\nimport org.junit.Test;\n\n/**\n *\n * @author shenzhou-6\n * @since  2020年05月26日\n *\n * https://github.com/alibaba/fastjson/issues/3177\n */\npublic class TestIssues3177 {\n\n    @Test\n    public void testIssues3177(){\n        Test3177Bean.Son son = new Test3177Bean.Son();\n        son.setStatus(\"status\");\n        Assert.assertEquals(\"{\\\"status\\\":\\\"status\\\"}\",JSON.toJSONString(son));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/serializer/issue3473/SerializeWriterJavaSqlDateTest.java",
    "content": "package com.alibaba.fastjson.serializer.issue3473;\n\nimport java.sql.Date;\nimport java.text.ParseException;\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.apache.commons.lang3.time.DateUtils;\nimport org.junit.Assert;\nimport org.junit.Before;\nimport org.junit.Test;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\n/**\n * package com.alibaba.fastjson.serializer.issue3473 <br/>\n * description: java.sql.Date序列化测试 <br/>\n * Copyright 2019 thunisoft, Inc. All rights reserved.\n *\n * @author fanzhongwei\n * @date 20-9-29\n */\npublic class SerializeWriterJavaSqlDateTest {\n\n    private Map<String, Object> data = new HashMap<String, Object>(1, 1);\n\n    @Before\n    public void before() throws ParseException {\n        data.put(\"sqlDate\", new Date(DateUtils.parseDate(\"2020-09-29\", \"yyyy-MM-dd\")\n            .getTime()));\n    }\n\n    @Test\n    public void yyyy_MM_dd_HH_mm_ss_test() {\n        String json = JSON.toJSONString(data, SerializerFeature.WriteDateUseDateFormat);\n        Assert.assertEquals(\"{\\\"sqlDate\\\":\\\"2020-09-29 00:00:00\\\"}\", json);\n    }\n\n    @Test\n    public void yyyy_MM_dd_test() {\n        String json = JSON.toJSONString(data);\n        Assert.assertEquals(\"{\\\"sqlDate\\\":\\\"2020-09-29\\\"}\", json);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/serializer/issue3479/TestIssue3479.java",
    "content": "package com.alibaba.fastjson.serializer.issue3479;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class TestIssue3479 {\n\n    @JSONType(seeAlso = {Dog.class, Cat.class}, typeKey = \"typeKey\")\n    public static abstract class Animal {\n\n        private String typeKey;\n\n        public String getTypeKey() {\n            return typeKey;\n        }\n\n        public void setTypeKey(String typeKey) {\n            this.typeKey = typeKey;\n        }\n    }\n\n    @JSONType(typeName = \"dog\")\n    public static class Dog extends Animal {\n        private String dogName;\n\n        public String getDogName() {\n            return dogName;\n        }\n\n        public void setDogName(String dogName) {\n            this.dogName = dogName;\n        }\n\n        @Override\n        public String toString() {\n            return \"Dog{\" +\n                    \"dogName='\" + dogName + '\\'' +\n                    '}';\n        }\n    }\n\n    @JSONType(typeName = \"cat\")\n    public static class Cat extends Animal {\n        private String catName;\n\n        public String getCatName() {\n            return catName;\n        }\n\n        public void setCatName(String catName) {\n            this.catName = catName;\n        }\n\n        @Override\n        public String toString() {\n            return \"Cat{\" +\n                    \"catName='\" + catName + '\\'' +\n                    '}';\n        }\n    }\n\n\n    public static void main(String[] args) {\n        Dog dog = new Dog();\n        dog.dogName = \"dog1001\";\n\n        String text = JSON.toJSONString(dog, SerializerFeature.WriteClassName);\n        System.out.println(text);\n\n        Dog dog2 = (Dog) JSON.parseObject(text, Animal.class);\n\n        System.out.println(dog2);\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/serializer/issue3638and3067/Issue3638and3067Test.java",
    "content": "package com.alibaba.fastjson.serializer.issue3638and3067;\n\nimport com.alibaba.fastjson.JSONObject;\nimport org.junit.Assert;\nimport org.junit.Before;\nimport org.junit.Test;\n\nimport java.sql.Timestamp;\n\n/**\n * @author Shilong Li (Lori)\n * @project fastjson\n * @filename Issue3638and3067Test\n * @date 2021/4/17 14:47\n */\npublic class Issue3638and3067Test {\n    JSONObject jo;\n\n    @Before\n    public void init() {\n        jo = new JSONObject();\n    }\n\n    @Test\n    public void testTime1() {\n        jo.put(\"d1\", \"2021-04-17 15:14:00\");\n        Assert.assertEquals(new Timestamp(jo.getDate(\"d1\").getTime()), jo.getTimestamp(\"d1\"));\n    }\n\n    @Test\n    public void testTime2() {\n        jo.put(\"d2\", \"1970-01-01 08:00:00\");\n        Assert.assertEquals(new Timestamp(jo.getDate(\"d2\").getTime()), jo.getTimestamp(\"d2\"));\n    }\n\n    @Test\n    public void testTime3() {\n        jo.put(\"d3\", \"1970-01-01 07:00:00\");\n        Assert.assertEquals(new Timestamp(jo.getDate(\"d3\").getTime()), jo.getTimestamp(\"d3\"));\n    }\n\n    @Test\n    public void testTime4() {\n        jo.put(\"d4\", \"1900-01-01\");\n        Assert.assertEquals(new Timestamp(jo.getDate(\"d4\").getTime()), jo.getTimestamp(\"d4\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/serializer/issues3601/TestEntity.java",
    "content": "package com.alibaba.fastjson.serializer.issues3601;\n\nimport lombok.Data;\n\n@Data\npublic class TestEntity {\n    private TestEnum testEnum;\n    private String testName;\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/serializer/issues3601/TestEnum.java",
    "content": "package com.alibaba.fastjson.serializer.issues3601;\n\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic enum TestEnum {\n\n    @JSONField\n    test1(\"1\"),\n//    @JSONField\n    test2(\"2\");\n\n    private String title;\n\n    TestEnum(String title) {\n        this.title = title;\n    }\n\n//    @JSONField\n    public String getTitle() {\n        return title;\n    }\n\n    private Integer i = 100;\n\n    @JSONField\n    public Integer getI() {\n        return i;\n    }\n\n}\n\n\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/serializer/issues3601/TestIssue3601.java",
    "content": "package com.alibaba.fastjson.serializer.issues3601;\n\nimport com.alibaba.fastjson.JSON;\nimport org.junit.Assert;\nimport org.junit.Test;\n\npublic class TestIssue3601 {\n\n    @Test\n    public void enumTest() {\n        TestEntity testEntity = new TestEntity();\n        testEntity.setTestName(\"ganyu\");\n        testEntity.setTestEnum(TestEnum.test1);\n        String json = JSON.toJSONString(testEntity);\n        System.out.println(json);\n        Assert.assertEquals(\"{\\\"testEnum\\\":\\\"test1\\\",\\\"testName\\\":\\\"ganyu\\\"}\", json);\n    }\n\n}"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/support/jaxrs/TestIssue885.java",
    "content": "package com.alibaba.fastjson.support.jaxrs;\n\n\nimport org.glassfish.jersey.client.ClientConfig;\nimport org.glassfish.jersey.server.ResourceConfig;\nimport org.glassfish.jersey.test.JerseyTest;\nimport org.glassfish.jersey.test.TestProperties;\nimport org.junit.Test;\n\nimport javax.ws.rs.GET;\nimport javax.ws.rs.Path;\nimport javax.ws.rs.core.Application;\nimport java.util.Date;\n\nimport static org.junit.Assert.*;\n\npublic class TestIssue885 extends JerseyTest {\n\n    @Path(\"user\")\n    public static class UserResource {\n        @GET\n        public User getUser() {\n            User user = new User();\n            user.setId(12345L);\n            user.setName(\"smallnest\");\n            user.setCreatedOn(new Date());\n            return user;\n        }\n    }\n\n    @Override\n    protected void configureClient(ClientConfig config) {\n        config.register(new FastJsonFeature()).register(FastJsonProvider.class);\n    }\n\n    @Override\n    protected Application configure() {\n        enable(TestProperties.LOG_TRAFFIC);\n        enable(TestProperties.DUMP_ENTITY);\n\n        ResourceConfig config = new ResourceConfig();\n        //config.register(new FastJsonFeature()).register(FastJsonProvider.class);\n        config.register(new FastJsonFeature()).register(new FastJsonProvider().setPretty(true));\n        config.packages(\"com.alibaba.fastjson\");\n        return config;\n    }\n\n    @Test\n    public void testWriteTo() {\n        final String user = target(\"user\").request().accept(\"application/json\").get(String.class);\n        // {\"createdOn\":1412036891919,\"id\":12345,\"name\":\"smallnest\"}]\n        assertTrue(user.indexOf(\"createdOn\") > 0);\n        assertTrue(user.indexOf(\"\\\"id\\\":12345\") > 0);\n        assertTrue(user.indexOf(\"\\\"name\\\":\\\"smallnest\\\"\") > 0);\n    }\n\n    @Test\n    public void testWriteToWithPretty() {\n        //System.out.println(\"@@@@@Test Pretty\");\n        final String user = target(\"user\").queryParam(\"pretty\", \"true\").request().accept(\"application/json\").get(String.class);\n        // {\"createdOn\":1412036891919,\"id\":12345,\"name\":\"smallnest\"}]\n        assertTrue(user.indexOf(\"createdOn\") > 0);\n        assertTrue(user.indexOf(\"\\\"id\\\":12345\") > 0);\n        assertTrue(user.indexOf(\"\\\"name\\\":\\\"smallnest\\\"\") > 0);\n        //response does not contain a return character\n        //assertTrue(user.indexOf(\"\\n\\t\") > 0);\n\n    }\n\n    @Test\n    public void testReadFrom() {\n        final User user = target(\"user\").request().accept(\"application/json\").get(User.class);\n        assertNotNull(user);\n        assertNotNull(user.getCreatedOn());\n        assertEquals(user.getId().longValue(), 12345L);\n        assertEquals(user.getName(), \"smallnest\");\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/support/jaxrs/User.java",
    "content": "package com.alibaba.fastjson.support.jaxrs;\n\nimport com.alibaba.fastjson.annotation.JSONType;\n\nimport java.util.Date;\n\n@JSONType\npublic class User {\n\n    private Long id;\n    private String name;\n    private Date createdOn;\n\n    public Long getId() {\n        return id;\n    }\n\n    public void setId(Long id) {\n        this.id = id;\n    }\n\n    public String getName() {\n        return name;\n    }\n\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    public Date getCreatedOn() {\n        return createdOn;\n    }\n\n    public void setCreatedOn(Date createdOn) {\n        this.createdOn = createdOn;\n    }\n\n}"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/validate/JSONValidateTest_0.java",
    "content": "package com.alibaba.fastjson.validate;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONValidator;\nimport com.alibaba.json.test.benchmark.decode.EishayDecodeBytes;\nimport junit.framework.TestCase;\n\nimport java.io.ByteArrayInputStream;\n\npublic class JSONValidateTest_0 extends TestCase {\n    public void test_validate_benchmark() throws Exception {\n        String json = JSON.toJSONString(EishayDecodeBytes.instance.getContent());\n\n        for (int n = 0; n < 10; ++n) {\n            long start = System.currentTimeMillis();\n            for (int i = 0; i < 1000 * 1000 * 1; ++i) {\n                JSONValidator validator = JSONValidator.from(json);\n                validator.validate(); // 518\n            }\n            System.out.println(\"millis : \" + (System.currentTimeMillis() - start));\n        }\n    }\n\n\n\n\n    public void test_validate_utf8_benchmark() throws Exception {\n        byte[] json = JSON.toJSONBytes(EishayDecodeBytes.instance.getContent());\n\n        for (int n = 0; n < 5; ++n) {\n            long start = System.currentTimeMillis();\n            for (int i = 0; i < 1000 * 1000 * 1; ++i) {\n                JSONValidator validator = JSONValidator.fromUtf8(json);\n                validator.validate();\n            }\n            System.out.println(\"millis : \" + (System.currentTimeMillis() - start));\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/validate/JSONValidateTest_T1",
    "content": "package com.alibaba.fastjson.validate;\n\nimport static org.junit.Assert.*;\n\nimport org.junit.Before;\nimport org.junit.Test;\n\nimport com.alibaba.fastjson.JSONValidator;\nimport junit.framework.TestCase;\n\npublic class JSONValidateTest_T1 {\n    @Before\n    public void setUp() throws Exception {\n\n    }\n\n    @Test\n    public void testCap1Case1() {\n        try {\n            JSONValidator.from((String) null).validate();\n            fail(\"Should not be able to validate a null object but it did\");\n        } catch (Exception e) {\n\n        }\n    }\n\n    @Test\n    public void testCap1Case2() {\n        try {\n            JSONValidator jsv = JSONValidator.from((String) null);\n            jsv.setSupportMultiValue(true);\n            jsv.validate();\n            fail(\"Should not be able to validate a null object but it did\");\n        } catch (Exception e) {\n\n        }\n    }\n\n    @Test\n    public void testCap1Case3() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"a\\\" : \\\"b\\\"}\");\n        assertTrue(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case4() {\n        JSONValidator jsv = JSONValidator.from(\"true\");\n        assertTrue(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case5() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"a\\\" : \\\"b\\\"}{\\\"a\\\" : \\\"b\\\"}\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case6() {\n        JSONValidator jsv = JSONValidator.from(\"true true\");\n        jsv.setSupportMultiValue(true);\n        assertTrue(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case7() {\n        JSONValidator jsv = JSONValidator.from(\"true true false\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case8() {\n        JSONValidator jsv = JSONValidator.from(\"true true false\");\n        jsv.setSupportMultiValue(true);\n        assertTrue(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case9() {\n        JSONValidator jsv = JSONValidator.from(\"\");\n        assertFalse(jsv.validate());\n        assertNull(jsv.getType());\n    }\n\n    @Test\n    public void testCap1Case10() {\n        JSONValidator jsv = JSONValidator.from(\"\");\n        jsv.setSupportMultiValue(true);\n        assertFalse(jsv.validate());\n        assertNull(jsv.getType());\n    }\n\n    @Test\n    public void testCap1Case11() {\n        JSONValidator jsv = JSONValidator.from(\"ÏÇ◊ÎÏ◊Œ„´ˇÁ¨ˆØÏ◊ı˜\");\n        assertFalse(jsv.validate());\n        assertNull(jsv.getType());\n    }\n\n    @Test\n    public void testCap1Case12() {\n        JSONValidator jsv = JSONValidator.from(\"ÏÇ◊ÎÏ◊Œ„´ˇÁ¨ˆØÏ◊ı˜\");\n        jsv.setSupportMultiValue(true);\n        assertFalse(jsv.validate());\n        assertNull(jsv.getType());\n    }\n\n    @Test\n    public void testCap1Case13() {\n        JSONValidator jsv = JSONValidator.from(\"ÏÇ◊ÎÏ◊Œ„´ ˇÁ¨ˆØÏ◊ı˜\");\n        assertFalse(jsv.validate());\n        assertNull(jsv.getType());\n    }\n\n    @Test\n    public void testCap1Case14() {\n        JSONValidator jsv = JSONValidator.from(\"ÏÇ◊ÎÏ◊Œ„´ ˇÁ¨ˆØÏ◊ı˜\");\n        jsv.setSupportMultiValue(true);\n        assertFalse(jsv.validate());\n        assertNull(jsv.getType());\n    }\n\n    @Test\n    public void testCap1Case15() {\n        JSONValidator jsv = JSONValidator.from(\"ÏÇ◊ÎÏ◊Œ„´ ˇÁ¨ˆØÏ◊ı˜ ÏÇ◊ÎÏ◊Œ„´\");\n        assertFalse(jsv.validate());\n        assertNull(jsv.getType());\n    }\n\n    @Test\n    public void testCap1Case16() {\n        JSONValidator jsv = JSONValidator.from(\"ÏÇ◊ÎÏ◊Œ„´ ˇÁ¨ˆØÏ◊ı˜ ÏÇ◊ÎÏ◊Œ„´\");\n        jsv.setSupportMultiValue(true);\n        assertFalse(jsv.validate());\n        assertNull(jsv.getType());\n    }\n\n    @Test\n    public void testCap1Case17() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"a\\\" : \\\"b\\\"},{\\\"a\\\" : \\\"b\\\"}\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case18() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"a\\\" : \\\"b\\\"},{\\\"a\\\" : \\\"b\\\"},{\\\"a\\\" : \\\"b\\\"}\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case19() {\n        JSONValidator jsv = JSONValidator.from(\"[{\\\"a\\\" : {\\\"b\\\" : \\\"c\\\"}}]\");\n        assertTrue(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case20() {\n        JSONValidator jsv = JSONValidator.from(\"[{\\\"a\\\" : {\\\"b\\\" : \\\"c\\\"}}],[{\\\"a\\\" : {\\\"b\\\" : \\\"c\\\"}}]\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case21() {\n        JSONValidator jsv = JSONValidator.from(\"[{\\\"a\\\" : {\\\"b\\\" : \\\"c\\\"}}],[{\\\"a\\\" : {\\\"b\\\" : \\\"c\\\"}}],[{\\\"a\\\" : {\\\"b\\\" : \\\"c\\\"}}]\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case22() {\n        JSONValidator jsv = JSONValidator.from(\"true, true\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case23() {\n        JSONValidator jsv = JSONValidator.from(\"true, true, true\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case24() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"a\\\" : {\\\"b\\\" : \\\"c\\\"}}\");\n        assertTrue(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case25() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"a\\\" : {\\\"b\\\" : \\\"c\\\"}},{\\\"a\\\" : {\\\"b\\\" : \\\"c\\\"}}\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case26() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"a\\\" : {\\\"b\\\" : \\\"c\\\"}},{\\\"a\\\" : {\\\"b\\\" : \\\"c\\\"}},{\\\"a\\\" : {\\\"b\\\" : \\\"c\\\"}}\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case27() {\n        JSONValidator jsv = JSONValidator.from(\"[{\\\"a\\\" : \\\"b\\\"}]\");\n        assertTrue(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case28() {\n        JSONValidator jsv = JSONValidator.from(\"[{\\\"a\\\" : \\\"b\\\"}],[{\\\"a\\\" : \\\"b\\\"}]\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case29() {\n        JSONValidator jsv = JSONValidator.from(\"[{\\\"a\\\" : \\\"b\\\"}],[{\\\"a\\\" : \\\"b\\\"}],[{\\\"a\\\" : \\\"b\\\"}]\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case30() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"a\\\" : {\\\"b\\\" : {\\\"c\\\" : \\\"d\\\"}}}\");\n        assertTrue(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case31() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"a\\\" : {\\\"b\\\" : {\\\"c\\\" : \\\"d\\\"}}},{\\\"a\\\" : {\\\"b\\\" : {\\\"c\\\" : \\\"d\\\"}}}\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case32() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"a\\\" : {\\\"b\\\" : {\\\"c\\\" : \\\"d\\\"}}},{\\\"a\\\" : {\\\"b\\\" : {\\\"c\\\" : \\\"d\\\"}}},{\\\"a\\\" : {\\\"b\\\" : {\\\"c\\\" : \\\"d\\\"}}}\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case33() {\n        JSONValidator jsv = JSONValidator.from(\"[{\\\"a\\\" : {\\\"b\\\" : \\\"c\\\"}}]\");\n        assertTrue(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case34() {\n        JSONValidator jsv = JSONValidator.from(\"[{\\\"a\\\" : {\\\"b\\\" : \\\"c\\\"}}],[{\\\"a\\\" : {\\\"b\\\" : \\\"c\\\"}}]\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case35() {\n        JSONValidator jsv = JSONValidator.from(\"[{\\\"a\\\" : {\\\"b\\\" : \\\"c\\\"}}],[{\\\"a\\\" : {\\\"b\\\" : \\\"c\\\"}}],[{\\\"a\\\" : {\\\"b\\\" : \\\"c\\\"}}]\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case36() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"a\\\" : {\\\"b\\\" : {\\\"c\\\" : {\\\"d\\\" : \\\"e\\\"}}}}\");\n        assertTrue(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case37() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"a\\\" : {\\\"b\\\" : {\\\"c\\\" : {\\\"d\\\" : \\\"e\\\"}}}},{\\\"a\\\" : {\\\"b\\\" : {\\\"c\\\" : {\\\"d\\\" : \\\"e\\\"}}}}\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case38() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"a\\\" : {\\\"b\\\" : {\\\"c\\\" : {\\\"d\\\" : \\\"e\\\"}}}},{\\\"a\\\" : {\\\"b\\\" : {\\\"c\\\" : {\\\"d\\\" : \\\"e\\\"}}}},{\\\"a\\\" : {\\\"b\\\" : {\\\"c\\\" : {\\\"d\\\" : \\\"e\\\"}}}}\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case39() {\n        JSONValidator jsv = JSONValidator.from(\"[{\\\"a\\\" : {\\\"b\\\" : {\\\"c\\\" : \\\"d\\\"}}}]\");\n        assertTrue(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case40() {\n        JSONValidator jsv = JSONValidator.from(\"[{\\\"a\\\" : {\\\"b\\\" : {\\\"c\\\" : \\\"d\\\"}}}],[{\\\"a\\\" : {\\\"b\\\" : {\\\"c\\\" : \\\"d\\\"}}}]\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case41() {\n        JSONValidator jsv = JSONValidator.from(\"[{\\\"a\\\" : {\\\"b\\\" : {\\\"c\\\" : \\\"d\\\"}}}],[{\\\"a\\\" : {\\\"b\\\" : {\\\"c\\\" : \\\"d\\\"}}}],[{\\\"a\\\" : {\\\"b\\\" : {\\\"c\\\" : \\\"d\\\"}}}]\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case42() {\n        JSONValidator jsv = JSONValidator.from(\"1e4\");\n        assertTrue(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case43() {\n        JSONValidator jsv = JSONValidator.from(\"e10\");\n        assertFalse(jsv.validate());\n        assertNull(jsv.getType());\n    }\n\n    @Test\n    public void testCap1Case44() {\n        JSONValidator jsv = JSONValidator.from(\"4e\");\n        assertFalse(jsv.validate());\n        assertNull(jsv.getType());\n    }\n\n    @Test\n    public void testCap1Case46() {\n        JSONValidator jsv = JSONValidator.from(\"12.34\");\n        assertTrue(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case47() {\n        JSONValidator jsv = JSONValidator.from(\".3\");\n        assertFalse(jsv.validate());\n        assertNull(jsv.getType());\n    }\n\n    @Test\n    public void testCap1Case48() {\n        JSONValidator jsv = JSONValidator.from(\"13.\");\n        assertFalse(jsv.validate());\n        assertNull(jsv.getType());\n    }\n\n    @Test\n    public void testCap1Case50() {\n        JSONValidator jsv = JSONValidator.from(\"-12\");\n        assertTrue(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case51() {\n        JSONValidator jsv = JSONValidator.from(\"+43\");\n        assertTrue(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case52() {\n        JSONValidator jsv = JSONValidator.from(\"-\");\n        assertFalse(jsv.validate());\n        assertNull(jsv.getType());\n    }\n\n    @Test\n    public void testCap1Case53() {\n        JSONValidator jsv = JSONValidator.from(\"[\\\"a\\\",\\\"b\\\"]\");\n        assertTrue(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case54() {\n        JSONValidator jsv = JSONValidator.from(\"1,2]\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case55() {\n        JSONValidator jsv = JSONValidator.from(\"[{\\\"a\\\":\\\"b\\\"},123\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case56() {\n        JSONValidator jsv = JSONValidator.from(\"[1 {\\\"abc\\\":\\\"zxy\\\"}\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case57() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"123\\\": [1,2,3]}\");\n        assertTrue(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case58() {\n        JSONValidator jsv = JSONValidator.from(\"\\\"Zxy\\\":\\\"abc\\\",\\\"x\\\":\\\"y\\\"}\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case59() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"h\\\":[12,23],\\\"a\\\":\\\"b\\\"\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case60() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"a\\\":\\\"z\\\" \\\"b\\\":\\\"y\\\"\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case61() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"123\\\"\\\"abc\\\", \\\"efg\\\":\\\"456\\\"\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case62() {\n        JSONValidator jsv = JSONValidator.from(\"\\\"abc\\\"\");\n        assertTrue(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case63() {\n        JSONValidator jsv = JSONValidator.from(\"abc\\\"\");\n        assertFalse(jsv.validate());\n        assertNull(jsv.getType());\n    }\n\n    @Test\n    public void testCap1Case64() {\n        JSONValidator jsv = JSONValidator.from(\"\\\"abc\");\n        assertFalse(jsv.validate());\n        assertNull(jsv.getType());\n    }\n\n    @Test\n    public void testCap1Case65() {\n        JSONValidator jsv = JSONValidator.from(\"null\");\n        assertTrue(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case66() {\n        JSONValidator jsv = JSONValidator.from(\"abc\");\n        assertFalse(jsv.validate());\n        assertNull(jsv.getType());\n    }\n\n    @Test\n    public void testCap1Case67() {\n        JSONValidator jsv = JSONValidator.from(\"true\");\n        assertTrue(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case68() {\n        JSONValidator jsv = JSONValidator.from(\"true;\");\n        assertFalse(jsv.validate());\n        assertNull(jsv.getType());\n    }\n\n    @Test\n    public void testCap1Case69() {\n        JSONValidator jsv = JSONValidator.from(\"true \");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case70() {\n        JSONValidator jsv = JSONValidator.from(\"true\\t\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case71() {\n        JSONValidator jsv = JSONValidator.from(\"true\\r\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case72() {\n        JSONValidator jsv = JSONValidator.from(\"true\\n\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case73() {\n        JSONValidator jsv = JSONValidator.from(\"true\\f\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case74() {\n        JSONValidator jsv = JSONValidator.from(\"true\\b\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case75() {\n        JSONValidator jsv = JSONValidator.from(\"true,\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case76() {\n        JSONValidator jsv = JSONValidator.from(\"true]\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case77() {\n        JSONValidator jsv = JSONValidator.from(\"true}\");\n        assertFalse(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case78() {\n        JSONValidator jsv = JSONValidator.from(\"true\\0\");\n        assertFalse(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case79() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"abc\\\":\\\"bcd\\\"}\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case80() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"cat\\\":\\\"dog\\\"\\\"cat\\\":\\\"dog\\\"}\");\n        assertFalse(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case81() {\n        JSONValidator jsv = JSONValidator.from(\"{}\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case82() {\n        JSONValidator jsv = JSONValidator.from(\"{ }\");\n        assertTrue(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case83() {\n        JSONValidator jsv = JSONValidator.from(\"{abc:\\\"abc\\\"}\");\n        assertFalse(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case84() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"xyz\\\" }\");\n        assertFalse(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case85() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"test\\\": test}\");\n        assertFalse(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case86() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"hello\\\":\\\"world\\\", \\\"x\\\":\\\"y\\\"}\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case87() {\n        JSONValidator jsv = JSONValidator.from(\"[ 123 ]\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case88() {\n        JSONValidator jsv = JSONValidator.from(\"[ \\\"ab\\\"\");\n        assertFalse(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case89() {\n        JSONValidator jsv = JSONValidator.from(\"[ true,\\\"g\\\" ]\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case90() {\n        JSONValidator jsv = JSONValidator.from(\"[ tru ]\");\n        assertFalse(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case91() {\n        JSONValidator jsv = JSONValidator.from(\"[ ]\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case92() {\n        JSONValidator jsv = JSONValidator.from(\"4.3e-1\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case94() {\n        JSONValidator jsv = JSONValidator.from(\"[4.3e-1]\");\n        assertTrue(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case193() {\n        JSONValidator jsv = JSONValidator.from(\"4.3e-13\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case95() {\n        JSONValidator jsv = JSONValidator.from(\"4.3e-:\");\n        assertFalse(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case96() {\n        JSONValidator jsv = JSONValidator.from(\"4.3e-.\");\n        assertFalse(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case97() {\n        JSONValidator jsv = JSONValidator.from(\"4.3e+13\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case98() {\n        JSONValidator jsv = JSONValidator.from(\"4.3e13\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case99() {\n        JSONValidator jsv = JSONValidator.from(\"4.3E-1\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case100() {\n        JSONValidator jsv = JSONValidator.from(\"4.3\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case101() {\n        JSONValidator jsv = JSONValidator.from(\"4.:\");\n        assertFalse(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case102() {\n        JSONValidator jsv = JSONValidator.from(\"4..:\");\n        assertFalse(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case103() {\n        JSONValidator jsv = JSONValidator.from(\"45.3\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case104() {\n        JSONValidator jsv = JSONValidator.from(\"+4.3\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case105() {\n        JSONValidator jsv = JSONValidator.from(\"+]\");\n        assertFalse(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case106() {\n        JSONValidator jsv = JSONValidator.from(\"+.\");\n        assertFalse(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case107() {\n        JSONValidator jsv = JSONValidator.from(\"-4.3\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case108() {\n        JSONValidator jsv = JSONValidator.from(\"9\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case109() {\n        JSONValidator jsv = JSONValidator.from(\"8\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case110() {\n        JSONValidator jsv = JSONValidator.from(\"7\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case111() {\n        JSONValidator jsv = JSONValidator.from(\"6\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case112() {\n        JSONValidator jsv = JSONValidator.from(\"5\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case114() {\n        JSONValidator jsv = JSONValidator.from(\"3\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case115() {\n        JSONValidator jsv = JSONValidator.from(\"2\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case116() {\n        JSONValidator jsv = JSONValidator.from(\"1\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case117() {\n        JSONValidator jsv = JSONValidator.from(\"0\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case118() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"abc\\\":\\\"\\\"}\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case119() {\n        JSONValidator jsv = JSONValidator.from(\"[\\\"a\\\"]\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case120() {\n        JSONValidator jsv = JSONValidator.from(\"\\\"\");\n        assertFalse(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case121() {\n        JSONValidator jsv = JSONValidator.from(\"[\\\"\\\\\\n\\\"]\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case122() {\n        JSONValidator jsv = JSONValidator.from(\"[\\\"\\\\\\uffff\\\"]\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case124() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"qwe\\\":true}\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case125() {\n        JSONValidator jsv = JSONValidator.from(\"[true]\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case126() {\n        JSONValidator jsv = JSONValidator.from(\"[true, false]\");\n        assertTrue(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case123() {\n        JSONValidator jsv = JSONValidator.from(\"true\");\n        assertTrue(jsv.validate());\n    }\n\n    @Test\n    public void testCap1Case127() {\n        JSONValidator jsv = JSONValidator.from(\"truu\");\n        assertFalse(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case128() {\n        JSONValidator jsv = JSONValidator.from(\"trr\");\n        assertFalse(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case129() {\n        JSONValidator jsv = JSONValidator.from(\"tt\");\n        assertFalse(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case130() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"hi\\\":false}\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case131() {\n        JSONValidator jsv = JSONValidator.from(\"[false]\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case132() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"abc\\\":false, \\\"bcd\\\":\\\"a\\\"}\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case133() {\n        JSONValidator jsv = JSONValidator.from(\"false\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case134() {\n        JSONValidator jsv = JSONValidator.from(\"falss\");\n        assertFalse(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case135() {\n        JSONValidator jsv = JSONValidator.from(\"fall\");\n        assertFalse(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case136() {\n        JSONValidator jsv = JSONValidator.from(\"faa\");\n        assertFalse(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case137() {\n        JSONValidator jsv = JSONValidator.from(\"fo\");\n        assertFalse(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case138() {\n        JSONValidator jsv = JSONValidator.from(\"null1\");\n        assertFalse(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case139() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"abc\\\":null}\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case140() {\n        JSONValidator jsv = JSONValidator.from(\"[null]\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case141() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"test\\\":[null,null]}\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case142() {\n        JSONValidator jsv = JSONValidator.from(\"null\");\n        assertTrue(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case143() {\n        JSONValidator jsv = JSONValidator.from(\"nulo\");\n        assertFalse(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case144() {\n        JSONValidator jsv = JSONValidator.from(\"nui\");\n        assertFalse(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case145() {\n        JSONValidator jsv = JSONValidator.from(\"no\");\n        assertFalse(jsv.validate());\n    }\n    \n    @Test\n    public void testCap1Case146() {\n        JSONValidator jsv = JSONValidator.from(\"[]\");\n        jsv.validate();\n        assertEquals(JSONValidator.Type.Array, jsv.getType());\n    }\n    \n    @Test\n    public void testCap1Case147() {\n        JSONValidator jsv = JSONValidator.from(\"[1]\");\n        jsv.validate();\n        assertEquals(JSONValidator.Type.Array, jsv.getType());\n    }\n    \n    @Test\n    public void testCap1Case148() {\n        JSONValidator jsv = JSONValidator.from(\"[1,2]\");\n        jsv.validate();\n        assertEquals(JSONValidator.Type.Array, jsv.getType());\n    }\n    \n    @Test\n    public void testCap1Case149() {\n        JSONValidator jsv = JSONValidator.from(\"{}\");\n        jsv.validate();\n        assertEquals(JSONValidator.Type.Object, jsv.getType());\n    }\n    \n    @Test\n    public void testCap1Case150() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"a\\\":\\\"b\\\"}\");\n        jsv.validate();\n        assertEquals(JSONValidator.Type.Object, jsv.getType());\n    }\n    \n    @Test\n    public void testCap1Case151() {\n        JSONValidator jsv = JSONValidator.from(\"{\\\"a\\\":\\\"b\\\",\\\"a\\\":\\\"b\\\"}\");\n        jsv.validate();\n        assertEquals(JSONValidator.Type.Object, jsv.getType());\n    }\n    \n    @Test\n    public void testCap1Case152() {\n        JSONValidator jsv = JSONValidator.from(\"\\\"\\\"\");\n        jsv.validate();\n        assertEquals(JSONValidator.Type.Value, jsv.getType());\n    }\n    \n    @Test\n    public void testCap1Case153() {\n        JSONValidator jsv = JSONValidator.from(\"\\\"true\\\"\");\n        jsv.validate();\n        assertEquals(JSONValidator.Type.Value, jsv.getType());\n    }\n    \n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/validate/JSONValidateTest_basic.java",
    "content": "package com.alibaba.fastjson.validate;\n\nimport com.alibaba.fastjson.JSONValidator;\nimport junit.framework.TestCase;\n\npublic class JSONValidateTest_basic extends TestCase\n{\n    public void test_for_bastic_true() throws Exception {\n        assertTrue(JSONValidator.from(\"{\\\"id\\\":true}\").validate());\n        assertTrue(JSONValidator.from(\"[true]\").validate());\n        assertTrue(JSONValidator.from(\"true\").validate());\n    }\n\n    public void test_for_bastic_false() throws Exception {\n        assertTrue(JSONValidator.from(\"{\\\"id\\\":false}\").validate());\n        assertTrue(JSONValidator.from(\"[false]\").validate());\n        assertTrue(JSONValidator.from(\"false\").validate());\n    }\n\n    public void test_for_bastic_null() throws Exception {\n        assertTrue(JSONValidator.from(\"{\\\"id\\\":null}\").validate());\n        assertTrue(JSONValidator.from(\"[null]\").validate());\n        assertTrue(JSONValidator.from(\"null\").validate());\n\n\n    }\n\n    public void test_long2ip() {\n        long a = 1677734491111L;\n        long b = 2697245671L;\n        long longVal = a;\n\n        int intVal = -1597721625;\n        long unsignedIntVal = intVal & 0xFFFFFFFFL;\n        boolean negative = (longVal & 0xFFFFFFFF00000000L) != 0;\n\n\n\n        System.out.println(intVal & 0xFFFFFFFFL);\n\n        System.out.println((int) b);\n\n        byte[] bytes0 = new byte[8];\n        byte[] bytes1 = new byte[8];\n        byte[] bytes2 = new byte[8];\n\n        putLong(bytes0, 0, a);\n        putLong(bytes1, 0, b);\n        putLong(bytes2, 0, 0xFFFFFFFF00000000L);\n        System.out.println(\"\");\n\n    }\n\n    static void putLong(byte[] b, int off, long val) {\n        b[off + 7] = (byte) (val       );\n        b[off + 6] = (byte) (val >>>  8);\n        b[off + 5] = (byte) (val >>> 16);\n        b[off + 4] = (byte) (val >>> 24);\n        b[off + 3] = (byte) (val >>> 32);\n        b[off + 2] = (byte) (val >>> 40);\n        b[off + 1] = (byte) (val >>> 48);\n        b[off    ] = (byte) (val >>> 56);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/fastjson/validate/JSONValidateTest_file.java",
    "content": "package com.alibaba.fastjson.validate;\n\nimport com.alibaba.fastjson.JSONValidator;\nimport junit.framework.TestCase;\nimport org.apache.commons.io.FileUtils;\n\nimport java.io.ByteArrayInputStream;\nimport java.io.File;\nimport java.io.FileInputStream;\nimport java.io.InputStreamReader;\nimport java.io.Reader;\n\npublic class JSONValidateTest_file extends TestCase\n{\n    public void test_for_file() throws Exception {\n        for (int i = 0; i < 10; ++i) {\n            long start = System.currentTimeMillis();\n\n            File file = new File(\"/Users/wenshao/Downloads/000002_0.json\");\n            FileInputStream is = new FileInputStream(file);\n            JSONValidator validator = JSONValidator.fromUtf8(is);\n            assertTrue(validator.validate());\n            validator.close();\n\n            // 642 335 796\n            System.out.println(\"millis \" + (System.currentTimeMillis() - start));\n        }\n    }\n\n    public void test_for_file2() throws Exception {\n        File file = new File(\"/Users/wenshao/Downloads/000002_0.json\");\n        byte[] bytes = FileUtils.readFileToByteArray(file);\n\n        for (int i = 0; i < 10; ++i) {\n            long start = System.currentTimeMillis();\n\n            ByteArrayInputStream is = new ByteArrayInputStream(bytes);\n\n            JSONValidator validator = JSONValidator.fromUtf8(is);\n            assertTrue(validator.validate());\n            validator.close();\n\n            // 642 335 796\n            System.out.println(\"millis \" + (System.currentTimeMillis() - start));\n        }\n    }\n\n\n    public void test_for_fileReader() throws Exception {\n        for (int i = 0; i < 10; ++i) {\n            long start = System.currentTimeMillis();\n\n            File file = new File(\"/Users/wenshao/Downloads/000002_0.json\");\n            Reader is = new InputStreamReader(new FileInputStream(file), \"UTF8\");\n            JSONValidator validator = JSONValidator.from(is);\n            assertTrue(validator.validate());\n            validator.close();\n\n            // 642 335 796\n            System.out.println(\"millis \" + (System.currentTimeMillis() - start));\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/ArrayRefTest2.java",
    "content": "package com.alibaba.json;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class ArrayRefTest2 extends TestCase {\n    \n    public void test_0() throws Exception {\n        String text;\n        {\n            List<Group> groups = new ArrayList<Group>();\n            \n            Group g0 = new Group(0);\n            Group g1 = new Group(1);\n            Group g2 = new Group(2);\n            \n            groups.add(g0);\n            groups.add(g1);\n            groups.add(g2);\n            groups.add(g0);\n            groups.add(g1);\n            groups.add(g2);\n            \n            text = JSON.toJSONString(groups);\n        }\n        \n        System.out.println(text);\n        \n        Group[] groups = JSON.parseObject(text, new TypeReference<Group[]>() {});\n        Assert.assertEquals(6, groups.length);\n        \n        Assert.assertNotNull(groups[0]);\n        Assert.assertNotNull(groups[1]);\n        Assert.assertNotNull(groups[2]);\n        Assert.assertNotNull(groups[3]);\n        Assert.assertNotNull(groups[4]);\n        Assert.assertNotNull(groups[5]);\n        \n        Assert.assertEquals(0, groups[0].getId());\n        Assert.assertEquals(1, groups[1].getId());\n        Assert.assertEquals(2, groups[2].getId());\n        Assert.assertEquals(0, groups[3].getId());\n        Assert.assertEquals(1, groups[4].getId());\n        Assert.assertEquals(2, groups[5].getId());\n    }\n\n    public static class Group {\n\n        private int id;\n\n        public Group(){\n\n        }\n\n        public Group(int id){\n            this.id = id;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n        \n        public String toString() {\n            return \"{id:\" + id + \"}\";\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/ByteArrayTest2.java",
    "content": "package com.alibaba.json;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONWriter;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.io.ByteArrayOutputStream;\nimport java.io.OutputStreamWriter;\nimport java.nio.charset.Charset;\n\n\npublic class ByteArrayTest2  extends TestCase {\n\n    public static class CertFile {\n        public String name;\n        public byte[] data;\n    }\n\n    public void test_0() throws Exception {\n        ParserConfig.getGlobalInstance().setAutoTypeSupport(true);\n\n        CertFile file = new CertFile();\n        file.name = \"testname\";\n\n        StringBuilder sb = new StringBuilder();\n        for (int i = 0; i < 2048; i++) {\n            sb.append(\"1\");\n        }\n        file.data = sb.toString().getBytes();\n\n        ByteArrayOutputStream bos = new ByteArrayOutputStream();\n        JSONWriter writer = new JSONWriter(new OutputStreamWriter(bos));\n        writer.config(SerializerFeature.WriteClassName, true);\n        writer.writeObject(file);\n        writer.flush();\n\n        System.out.println(bos);\n\n        byte[] data = bos.toByteArray();\n        Charset charset = Charset.forName(\"UTF-8\");\n        CertFile convertFile =  (CertFile)JSON.parse(data, 0, data.length, charset.newDecoder(), Feature.AllowArbitraryCommas,\n                Feature.IgnoreNotMatch, Feature.SortFeidFastMatch, Feature.DisableCircularReferenceDetect,\n                Feature.AutoCloseSource);\n\n        Assert.assertEquals(file.name, convertFile.name);\n        Assert.assertArrayEquals(file.data, convertFile.data);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/SerializerFeatureDistinctTest.java",
    "content": "package com.alibaba.json;\n\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.util.HashSet;\nimport java.util.Set;\n\n/**\n * Created by wenshao on 24/06/2017.\n */\npublic class SerializerFeatureDistinctTest extends TestCase {\n    public void test_allfeatures() throws Exception {\n        Set<Object> masks = new HashSet<Object>();\n        for (SerializerFeature feature : SerializerFeature.values()) {\n            Object mask = feature.getMask();\n            assertFalse(masks.contains(mask));\n            masks.add(mask);\n        }\n        assertEquals(masks.size(), SerializerFeature.values().length);\n\n        System.out.println(SerializerFeature.values().length);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/TestGC.java",
    "content": "package com.alibaba.json;\n\nimport junit.framework.TestCase;\n\n\npublic class TestGC extends TestCase {\n    public void test_0 () throws Exception {\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            StringBuilder buf = new StringBuilder(1000 * 1000 * 10);\n            buf.append(i);\n            Thread.sleep(10);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/AnnotationTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.annotation.JSONField;\r\n\r\npublic class AnnotationTest extends TestCase {\r\n\r\n    public void test_codec() throws Exception {\r\n        User user = new User();\r\n        user.setId(1001);\r\n        user.setName(\"bob.panl\");\r\n        user.setDescrition(\"大黄牛\");\r\n\r\n        String text = JSON.toJSONString(user);\r\n        System.out.println(text);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user1.getId(), user.getId());\r\n        Assert.assertEquals(user1.getName(), user.getName());\r\n    }\r\n\r\n    public static class User {\r\n\r\n        private int    id;\r\n        private String name;\r\n        private String descrition;\r\n\r\n        @JSONField(name = \"ID\")\r\n        public int getId() {\r\n            return id;\r\n        }\r\n\r\n        @JSONField(name = \"ID\")\r\n        public void setId(int id) {\r\n            this.id = id;\r\n        }\r\n\r\n        public String getName() {\r\n            return name;\r\n        }\r\n\r\n        public void setName(String name) {\r\n            this.name = name;\r\n        }\r\n\r\n        @JSONField(name = \"desc\")\r\n        public String getDescrition() {\r\n            return descrition;\r\n        }\r\n\r\n        @JSONField(name = \"desc\")\r\n        public void setDescrition(String descrition) {\r\n            this.descrition = descrition;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/AnnotationTest2.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.annotation.JSONField;\r\n\r\npublic class AnnotationTest2 extends TestCase {\r\n\r\n    public void test_codec() throws Exception {\r\n        User user = new User();\r\n        user.setId(1001);\r\n        user.setName(\"bob.panl\");\r\n        user.setDescrition(\"大黄牛\");\r\n\r\n        String text = JSON.toJSONString(user);\r\n        System.out.println(text);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user1.getId(), user.getId());\r\n        Assert.assertEquals(user1.getName(), user.getName());\r\n    }\r\n\r\n    public static class User {\r\n\r\n        @JSONField(name = \"ID\")\r\n        private int    id;\r\n        private String name;\r\n        private String descrition;\r\n\r\n        public int getId() {\r\n            return id;\r\n        }\r\n\r\n        public void setId(int id) {\r\n            this.id = id;\r\n        }\r\n\r\n        public String getName() {\r\n            return name;\r\n        }\r\n\r\n        public void setName(String name) {\r\n            this.name = name;\r\n        }\r\n\r\n        @JSONField(name = \"desc\")\r\n        public String getDescrition() {\r\n            return descrition;\r\n        }\r\n\r\n        @JSONField(name = \"desc\")\r\n        public void setDescrition(String descrition) {\r\n            this.descrition = descrition;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/AnnotationTest3.java",
    "content": "package com.alibaba.json.bvt;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic class AnnotationTest3 extends TestCase {\n\n    public void test_supperField() throws Exception {\n        C c = new C();\n        c.setId(123);\n        c.setName(\"jobs\");\n\n        String str = JSON.toJSONString(c);\n        Assert.assertEquals(\"{\\\"ID\\\":123,\\\"name\\\":\\\"jobs\\\"}\", str);\n    }\n\n    public static class S {\n\n        @JSONField(name = \"ID\")\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n    }\n\n    public static class C extends S {\n\n        private String name;\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/AppendableFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class AppendableFieldTest extends TestCase {\r\n\r\n    public void test_codec_null() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n        Assert.assertTrue(!mapping.isAsmEnable());\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);\r\n        Assert.assertEquals(\"{\\\"value\\\":\\\"\\\"}\", text);\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private Appendable value;\r\n\r\n        public Appendable getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(Appendable value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ArmoryTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class ArmoryTest extends TestCase {\n    \n    public void test_item() throws Exception {\n        Item item = new Item();\n        String text = JSON.toJSONString(item, SerializerFeature.SortField, SerializerFeature.UseSingleQuotes);\n        Assert.assertEquals(\"{'id':0,'name':'xx'}\", text);\n    }\n\n    public void test_0() throws Exception {\n        List<Object> message = new ArrayList<Object>();\n        MessageBody body = new MessageBody();\n        Item item = new Item();\n        body.getItems().add(item);\n        \n        message.add(new MessageHead());\n        message.add(body);\n\n        String text = JSON.toJSONString(message, SerializerFeature.SortField, SerializerFeature.UseSingleQuotes);\n        Assert.assertEquals(\"[{},{'items':[{'id':0,'name':'xx'}]}]\", text);\n    }\n    \n    public static class Item {\n        private int id;\n        private String name = \"xx\";\n        \n        public int getId() {\n            return id;\n        }\n        \n        public void setId(int id) {\n            this.id = id;\n        }\n        \n        public String getName() {\n            return name;\n        }\n        \n        public void setName(String name) {\n            this.name = name;\n        }\n        \n    }\n\n    public static class MessageHead {\n\n    }\n\n    public static class MessageBody {\n\n        private List<Object> items = new ArrayList<Object>();\n\n        public List<Object> getItems() {\n            return items;\n        }\n\n        public void setItems(List<Object> items) {\n            this.items = items;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ArrayListFieldTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.ArrayList;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class ArrayListFieldTest extends TestCase {\n    public void test_codec_null() throws Exception {\n        V0 v = new V0();\n\n        SerializeConfig mapping = new SerializeConfig();\n        mapping.setAsmEnable(false);\n\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\n\n        ParserConfig config = new ParserConfig();\n        config.setAsmEnable(false);\n        \n        V0 v1 = JSON.parseObject(text, V0.class, config, JSON.DEFAULT_PARSER_FEATURE);\n\n        Assert.assertEquals(v1.getValue(), v.getValue());\n    }\n\n\tprivate static class V0 {\n\n\t\tprivate ArrayList<Object> value;\n\n\t\tpublic ArrayList<Object> getValue() {\n\t\t\treturn value;\n\t\t}\n\n\t\tpublic void setValue(ArrayList<Object> value) {\n\t\t\tthis.value = value;\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ArrayListFieldTest_1.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.ArrayList;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class ArrayListFieldTest_1 extends TestCase {\n\n    public void test_var() throws Exception {\n        JSON.parseObject(\"{\\\"value\\\":[{}]}\", V0.class);\n        V0<A> v1 = JSON.parseObject(\"{\\\"value\\\":[{}]}\", new TypeReference<V0<A>>() {\n        });\n        Assert.assertTrue(v1.getValue().get(0) instanceof A);\n        \n        V0<B> v2 = JSON.parseObject(\"{\\\"value\\\":[{}]}\", new TypeReference<V0<B>>() {\n        });\n        Assert.assertTrue(v2.getValue().get(0) instanceof B);\n    }\n\n    private static class V<T> {\n\n    }\n\n    private static class V0<T> extends V<T> {\n\n        private ArrayList<T> value;\n\n        public ArrayList<T> getValue() {\n            return value;\n        }\n\n        public void setValue(ArrayList<T> value) {\n            this.value = value;\n        }\n    }\n\n    public static class A {\n\n    }\n\n    public static class B {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ArrayListFloatFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\n\r\npublic class ArrayListFloatFieldTest extends TestCase {\r\n\r\n    public void test_codec() throws Exception {\r\n        User user = new User();\r\n        user.setValue(new ArrayList<Float>());\r\n        user.getValue().add(1F);\r\n\r\n        String text = JSON.toJSONString(user);\r\n        System.out.println(text);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user.getValue(), user1.getValue());\r\n    }\r\n\r\n    public static class User {\r\n\r\n        private ArrayList<Float> value;\r\n        \r\n        public User() {\r\n            \r\n        }\r\n\r\n        public List<Float> getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(ArrayList<Float> value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ArrayRefTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class ArrayRefTest extends TestCase {\n\n    public void test_0() throws Exception {\n        String text;\n        {\n            List<Group> groups = new ArrayList<Group>();\n            \n            Group g0 = new Group(0);\n            Group g1 = new Group(1);\n            Group g2 = new Group(2);\n            \n            groups.add(g0);\n            groups.add(g1);\n            groups.add(g2);\n            groups.add(g0);\n            groups.add(g1);\n            groups.add(g2);\n            \n            text = JSON.toJSONString(groups);\n        }\n        \n        System.out.println(text);\n        \n        List<Group> groups = JSON.parseObject(text, new TypeReference<List<Group>>() {});\n        Assert.assertEquals(6, groups.size());\n        \n        Assert.assertEquals(0, groups.get(0).getId());\n        Assert.assertEquals(1, groups.get(1).getId());\n        Assert.assertEquals(2, groups.get(2).getId());\n        Assert.assertEquals(0, groups.get(3).getId());\n        Assert.assertEquals(1, groups.get(4).getId());\n        Assert.assertEquals(2, groups.get(5).getId());\n    }\n\n    public static class Group {\n\n        private int id;\n\n        public Group(){\n\n        }\n\n        public Group(int id){\n            this.id = id;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n        \n        public String toString() {\n            return \"{id:\" + id + \"}\";\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/Base64Test.java",
    "content": "package com.alibaba.json.bvt;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.util.IOUtils;\n\nimport junit.framework.TestCase;\n\n\npublic class Base64Test extends TestCase {\n    public void test_base64() throws Exception {\n        Assert.assertEquals(IOUtils.decodeBase64(new char[0], 0, 0).length, 0);\n        Assert.assertEquals(IOUtils.decodeBase64(\"ABC\".toCharArray(), 0, 3).length, 2);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/Base64Test2.java",
    "content": "package com.alibaba.json.bvt;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.util.IOUtils;\n\nimport junit.framework.TestCase;\n\npublic class Base64Test2 extends TestCase {\n\n    public void test_base64_2() throws Exception {\n        String text = \"\";\n        for (int i = 0; i < 1000; ++i) {\n            byte[] bytes = text.getBytes(\"UTF-8\");\n            {\n                String str = com.alibaba.json.test.Base64.encodeToString(bytes, true);\n                Assert.assertEquals(text, new String(IOUtils.decodeBase64(str.toCharArray(), 0, str.length()), \"UTF-8\"));\n                Assert.assertEquals(text, new String(IOUtils.decodeBase64(str), \"UTF-8\"));\n                Assert.assertEquals(text, new String(IOUtils.decodeBase64(str, 0, str.length()), \"UTF-8\"));\n            }\n            {\n                String str = com.alibaba.json.test.Base64.encodeToString(bytes, false);\n                Assert.assertEquals(text, new String(IOUtils.decodeBase64(str.toCharArray(), 0, str.length()), \"UTF-8\"));\n                Assert.assertEquals(text, new String(IOUtils.decodeBase64(str), \"UTF-8\"));\n                Assert.assertEquals(text, new String(IOUtils.decodeBase64(str, 0, str.length()), \"UTF-8\"));\n            }\n            text += ((char) i);\n\n        }\n    }\n    \n    public void test_illegal() throws Exception {\n        String text = \"abc\";\n        byte[] bytes = text.getBytes(\"UTF-8\");\n        String str = \"\\0\" + com.alibaba.json.test.Base64.encodeToString(bytes, false) + \"\\0\";\n        Assert.assertEquals(text, new String(IOUtils.decodeBase64(str.toCharArray(), 0, str.length()), \"UTF-8\"));\n        Assert.assertEquals(text, new String(IOUtils.decodeBase64(str), \"UTF-8\"));\n        Assert.assertEquals(text, new String(IOUtils.decodeBase64(str, 0, str.length()), \"UTF-8\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/BigDecimalFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.math.BigDecimal;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class BigDecimalFieldTest extends TestCase {\r\n\r\n    public void test_codec_null() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullNumberAsZero);\r\n        Assert.assertEquals(\"{\\\"value\\\":0}\", text);\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private BigDecimal value;\r\n\r\n        public BigDecimal getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(BigDecimal value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/BigIntegerFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.math.BigInteger;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class BigIntegerFieldTest extends TestCase {\r\n\r\n    public void test_codec_null() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullNumberAsZero);\r\n        Assert.assertEquals(\"{\\\"value\\\":0}\", text);\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private BigInteger value;\r\n\r\n        public BigInteger getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(BigInteger value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/BooleanArrayFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class BooleanArrayFieldTest extends TestCase {\r\n\r\n    public void test_codec_null() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty);\r\n        Assert.assertEquals(\"{\\\"value\\\":[]}\", text);\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private Boolean[] value;\r\n\r\n        public Boolean[] getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(Boolean[] value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/BooleanArrayFieldTest_primitive.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class BooleanArrayFieldTest_primitive extends TestCase {\r\n\r\n    public void test_array() throws Exception {\r\n        Assert.assertEquals(\"[true]\", JSON.toJSONString(new boolean[] { true }));\r\n\r\n    }\r\n\r\n    public void test_codec_null() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty);\r\n        Assert.assertEquals(\"{\\\"value\\\":[]}\", text);\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private boolean[] value;\r\n\r\n        public boolean[] getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(boolean[] value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/BooleanArrayFieldTest_primitive_private.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class BooleanArrayFieldTest_primitive_private extends TestCase {\r\n\r\n    public void test_array() throws Exception {\r\n        Assert.assertEquals(\"[true]\", JSON.toJSONString(new boolean[] { true }));\r\n\r\n    }\r\n\r\n    public void test_codec_null() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty);\r\n        Assert.assertEquals(\"{\\\"value\\\":[]}\", text);\r\n    }\r\n\r\n    private static class V0 {\r\n\r\n        private boolean[] value;\r\n\r\n        public boolean[] getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(boolean[] value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/Bug12.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.io.InputStream;\nimport java.io.InputStreamReader;\n\nimport junit.framework.TestCase;\n\nimport org.apache.commons.io.IOUtils;\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug12 extends TestCase {\n\n    public void test_0() throws Exception {\n        String resource = \"2.json\";\n        InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource);\n        String text = IOUtils.toString(new InputStreamReader(is, \"UTF-8\"));\n        is.close();\n        \n        Object obj = JSON.parse(text);\n        Assert.assertNotNull(obj);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/Bug89.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport org.junit.Test;\n\nimport static org.junit.Assert.fail;\n\npublic class Bug89 {\n    @Test\n    public void testBug89() {\n        try {\n            String s = \"{\\\"a\\\":з」∠)_,\\\"}\";\n            JSON.parseObject(s);\n            fail(\"Expect JSONException\");\n        } catch (JSONException e) {\n            // good\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/BuilderTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class BuilderTest extends TestCase {\n\tpublic void test_builder() throws Exception {\n\t\tRainbowStats rainbowStats = JSON.parseObject(\"{\\\"id\\\":33}\", RainbowStats.class);\n\t\tAssert.assertEquals(33, rainbowStats.getId());\n\t}\n\t\n\tprivate static class RainbowStats {\n\t\tprivate int id;\n\t\tprivate String name;\n\n\t\tpublic int getId() {\n\t\t\treturn id;\n\t\t}\n\n\t\tpublic RainbowStats setId(int id) {\n\t\t\tthis.id = id;\n\t\t\treturn this;\n\t\t}\n\n\t\tpublic String getName() {\n\t\t\treturn name;\n\t\t}\n\n\t\tpublic RainbowStats setName(String name) {\n\t\t\tthis.name = name;\n\t\t\treturn this;\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ByteArrayFieldTest_1.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class ByteArrayFieldTest_1 extends TestCase {\r\n\r\n    public void test_array() throws Exception {\r\n        Assert.assertEquals(\"\\\"AQ==\\\"\", JSON.toJSONString(new byte[] { 1 }));\r\n\r\n    }\r\n\r\n    public void test_codec_null() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty);\r\n        Assert.assertEquals(\"{\\\"value\\\":[]}\", text);\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private byte[] value;\r\n\r\n        public byte[] getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(byte[] value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ByteArrayFieldTest_2.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.io.UnsupportedEncodingException;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.json.test.TestUtils;\n\npublic class ByteArrayFieldTest_2 extends TestCase {\n\n    public void test_0() throws Exception {\n        Entity entity = new Entity(\"中华人民共和国\");\n        String text = JSON.toJSONString(entity);\n        JSONObject json = JSON.parseObject(text);\n        Assert.assertEquals(TestUtils.encodeToBase64String(entity.getValue(), false), json.getString(\"value\"));\n        \n        Entity entity2 = JSON.parseObject(text, Entity.class);\n        Assert.assertEquals(\"中华人民共和国\", new String(entity2.getValue(), \"UTF-8\"));\n    }\n\n    public static class Entity {\n\n        private byte[] value;\n\n        public Entity(){\n\n        }\n\n        public Entity(String value) throws UnsupportedEncodingException{\n            this.value = value.getBytes(\"UTF-8\");\n        }\n\n        public byte[] getValue() {\n            return value;\n        }\n\n        public void setValue(byte[] value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ByteArrayFieldTest_3.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.io.UnsupportedEncodingException;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.json.test.TestUtils;\n\npublic class ByteArrayFieldTest_3 extends TestCase {\n\n    public void test_0() throws Exception {\n        Entity entity = new Entity(\"中华人民共和国\");\n        String text = JSON.toJSONString(entity);\n        JSONObject json = JSON.parseObject(text);\n        Assert.assertEquals(TestUtils.encodeToBase64String(entity.getValue(), false), json.getString(\"value\"));\n        \n        Entity entity2 = JSON.parseObject(text, Entity.class);\n        Assert.assertEquals(\"中华人民共和国\", new String(entity2.getValue(), \"UTF-8\"));\n    }\n\n    private static class Entity {\n\n        private byte[] value;\n\n        public Entity(){\n\n        }\n\n        public Entity(String value) throws UnsupportedEncodingException{\n            this.value = value.getBytes(\"UTF-8\");\n        }\n\n        public byte[] getValue() {\n            return value;\n        }\n\n        public void setValue(byte[] value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ByteArrayFieldTest_4.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.json.test.TestUtils;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.io.UnsupportedEncodingException;\n\npublic class ByteArrayFieldTest_4 extends TestCase {\n\n    public void test_0() throws Exception {\n        Model model = new Model();\n\n        model.value = \"ABCDEG\".getBytes();\n\n        String json = JSON.toJSONString(model);\n\n        assertEquals(\"{\\\"value\\\":x'414243444547'}\", json);\n\n        Model model1 = JSON.parseObject(json, Model.class);\n        Assert.assertArrayEquals(model.value, model1.value);\n\n    }\n\n    private static class Model {\n\n        @JSONField(format = \"hex\")\n        public byte[] value;\n\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ByteArrayFieldTest_5_base64.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\npublic class ByteArrayFieldTest_5_base64 extends TestCase {\n\n    public void test_0() throws Exception {\n        Model model = new Model();\n\n        model.value = \"ABCDEG\".getBytes();\n\n        String json = JSON.toJSONString(model);\n\n        assertEquals(\"{\\\"value\\\":\\\"QUJDREVH\\\"}\", json);\n\n        Model model1 = JSON.parseObject(json, Model.class);\n        Assert.assertArrayEquals(model.value, model1.value);\n    }\n\n    private static class Model {\n\n        @JSONField(format = \"base64\")\n        public byte[] value;\n\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ByteArrayFieldTest_6_gzip.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\npublic class ByteArrayFieldTest_6_gzip extends TestCase {\n\n    public void test_0() throws Exception {\n        Model model = new Model();\n\n        StringBuffer buf = new StringBuffer();\n        for (int i = 0; i < 1000; ++i) {\n            buf.append(\"0123456890\");\n            buf.append(\"ABCDEFGHIJ\");\n        }\n\n        model.value = buf.toString().getBytes();\n\n        String json = JSON.toJSONString(model);\n\n        assertEquals(\"{\\\"value\\\":\\\"H4sIAAAAAAAAAO3IsRGAIBAAsJVeUE5LBBXcfyC3sErKxJLyupX9iHq2ft3PmG8455xzzjnnnHPOOeecc84555xzzjnnnHPOOeecc84555xzzjnnnHPOOeecc84555z7/T6powiAIE4AAA==\\\"}\", json);\n\n        Model model1 = JSON.parseObject(json, Model.class);\n        Assert.assertArrayEquals(model.value, model1.value);\n    }\n\n    public static class Model {\n        @JSONField(format = \"gzip\")\n        public byte[] value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ByteArrayFieldTest_7_gzip_hex.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\npublic class ByteArrayFieldTest_7_gzip_hex extends TestCase {\n\n    public void test_0() throws Exception {\n        Model model = new Model();\n\n        StringBuffer buf = new StringBuffer();\n        for (int i = 0; i < 1000; ++i) {\n            buf.append(\"0123456890\");\n            buf.append(\"ABCDEFGHIJ\");\n        }\n\n        model.value = buf.toString().getBytes();\n\n        String json = JSON.toJSONString(model);\n\n        assertEquals(\"{\\\"value\\\":\\\"H4sIAAAAAAAAAO3IsRGAIBAAsJVeUE5LBBXcfyC3sErKxJLyupX9iHq2ft3PmG8455xzzjnnnHPOOeecc84555xzzjnnnHPOOeecc84555xzzjnnnHPOOeecc84555z7/T6powiAIE4AAA==\\\"}\", json);\n\n        Model model1 = JSON.parseObject(json, Model.class);\n        Assert.assertArrayEquals(model.value, model1.value);\n    }\n\n    private static class Model {\n\n        @JSONField(format = \"gzip,base64\")\n        public byte[] value;\n\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ByteFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class ByteFieldTest extends TestCase {\r\n\r\n    public void test_codec() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue((byte) 10);\r\n\r\n        String text = JSON.toJSONString(v);\r\n        System.out.println(text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n    \r\n    public void test_codec_null_asm() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(true);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullNumberAsZero);\r\n        Assert.assertEquals(\"{\\\"value\\\":0}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(Byte.valueOf((byte) 0), v1.getValue());\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private Byte value;\r\n\r\n        public Byte getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(Byte value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/CastTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\n\npublic class CastTest extends TestCase {\n\n    public void test_0() throws Exception {\n        String text;\n        {\n            List<Object> list = new ArrayList<Object>();\n\n            list.add(new Header());\n\n            Body body = new Body(\"张三\");\n            body.getItems().add(new Item());\n\n            list.add(body);\n\n            text = JSON.toJSONString(list);\n            \n            System.out.println(text);\n        }\n\n        JSONArray array = JSON.parseArray(text);\n\n//        Body body = array.getObject(1, Body.class);\n//        Assert.assertEquals(1, body.getItems().size());\n\n//        Assert.assertEquals(\"张三\", body.getName());\n    }\n\n    public static class Header {\n\n    }\n\n    public static class Body {\n\n        private String name;\n\n        public Body(){\n\n        }\n\n        public Body(String name){\n            this.name = name;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        private List<Item> items = new ArrayList<Item>();\n\n        public List<Item> getItems() {\n            return items;\n        }\n\n        public void setItems(List<Item> items) {\n            this.items = items;\n        }\n    }\n\n    public static class Item {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/CastTest2.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\n\npublic class CastTest2 extends TestCase {\n\n    public void test_0() throws Exception {\n        String text;\n        {\n            List<Object> list = new ArrayList<Object>();\n\n            list.add(new Header());\n\n            Body body = new Body(\"张三\");\n            body.getItems().put(\"1\", new Item());\n\n            list.add(body);\n\n            text = JSON.toJSONString(list);\n            \n            System.out.println(text);\n        }\n\n        JSONArray array = JSON.parseArray(text);\n\n        Body body = array.getObject(1, Body.class);\n\n        Assert.assertEquals(\"张三\", body.getName());\n        Assert.assertEquals(1, body.getItems().size());\n    }\n\n    public static class Header {\n\n    }\n\n    public static class Body {\n\n        private String name;\n\n        public Body(){\n\n        }\n\n        public Body(String name){\n            this.name = name;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        private Map<String, Item> items = new HashMap<String, Item>();\n\n        public Map<String, Item> getItems() {\n            return items;\n        }\n\n        public void setItems(Map<String, Item> items) {\n            this.items = items;\n        }\n    }\n\n    public static class Item {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/CharTypesTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.util.IOUtils;\r\n\r\npublic class CharTypesTest extends TestCase {\r\n    static byte[] specicalFlags_singleQuotes = IOUtils.specicalFlags_singleQuotes;\r\n    static byte[] specicalFlags_doubleQuotes = IOUtils.specicalFlags_doubleQuotes;\r\n\r\n    public void test_0() throws Exception {\r\n        \r\n        Assert.assertTrue(isSpecial_doubleQuotes('\\n'));\r\n        Assert.assertTrue(isSpecial_doubleQuotes('\\r'));\r\n        Assert.assertTrue(isSpecial_doubleQuotes('\\b'));\r\n        Assert.assertTrue(isSpecial_doubleQuotes('\\f'));\r\n        Assert.assertTrue(isSpecial_doubleQuotes('\\\"'));\r\n        Assert.assertFalse(isSpecial_doubleQuotes('0'));\r\n        Assert.assertTrue(isSpecial_doubleQuotes('\\0'));\r\n        Assert.assertFalse(isSpecial_doubleQuotes('中'));\r\n        Assert.assertFalse(isSpecial_doubleQuotes('中'));\r\n    }\r\n    \r\n    public static boolean isSpecial_doubleQuotes(char ch) {\r\n        return ch < specicalFlags_doubleQuotes.length && specicalFlags_doubleQuotes[ch] != 0;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/CharsetFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.nio.charset.Charset;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class CharsetFieldTest extends TestCase {\r\n\r\n    public void test_codec() throws Exception {\r\n        User user = new User();\r\n        user.setValue(Charset.forName(\"UTF-8\"));\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n        String text = JSON.toJSONString(user, mapping, SerializerFeature.WriteMapNullValue);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user1.getValue(), user.getValue());\r\n    }\r\n\r\n    public void test_codec_null() throws Exception {\r\n        User user = new User();\r\n        user.setValue(null);\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n        String text = JSON.toJSONString(user, mapping, SerializerFeature.WriteMapNullValue);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user1.getValue(), user.getValue());\r\n    }\r\n\r\n    public static class User {\r\n\r\n        private Charset value;\r\n\r\n        public Charset getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(Charset value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ChineseSpaceTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * Created by wenshao on 2016/10/14.\n */\npublic class ChineseSpaceTest extends TestCase {\n    public void test_for_chinese_space() throws Exception {\n        Map<String, String> map = Collections.singletonMap(\"v\", \" \");\n        String json = JSON.toJSONString(map);\n        assertEquals(\"{\\\"v\\\":\\\" \\\"}\", json);\n\n        JSONObject jsonObject = JSON.parseObject(json);\n        assertEquals(map.get(\"v\"), jsonObject.get(\"v\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/CircularReferenceTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.io.ByteArrayOutputStream;\r\nimport java.io.ObjectOutputStream;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.json.test.entity.case2.Category;\r\n\r\npublic class CircularReferenceTest extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        ByteArrayOutputStream out = new ByteArrayOutputStream();\r\n        ObjectOutputStream objectOut = new ObjectOutputStream(out);\r\n\r\n        Category p = new Category();\r\n        p.setId(1);\r\n        p.setName(\"root\");\r\n        {\r\n            Category child = new Category();\r\n            child.setId(2);\r\n            child.setName(\"child\");\r\n            p.getChildren().add(child);\r\n            child.setParent(p);\r\n        }\r\n        objectOut.writeObject(p);\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ClassFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.util.ASMClassLoader;\r\n\r\npublic class ClassFieldTest extends TestCase {\r\n\r\n    public void test_codec() throws Exception {\r\n        User user = new User();\r\n        user.setValue(Object.class);\r\n\r\n        String text = JSON.toJSONString(user);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user1.getValue(), user.getValue());\r\n    }\r\n\r\n    public void test_error() throws Exception {\r\n        Exception error = null;\r\n        try {\r\n            JSON.parseObject(\"{\\\"value\\\":123}\", User.class);\r\n        } catch (JSONException ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public static class User {\r\n\r\n        private Class<?> value;\r\n\r\n        public Class<?> getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(Class<?> value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/CurrencyTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.Currency;\nimport java.util.Locale;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class CurrencyTest extends TestCase {\n\n    public void test_0() throws Exception {\n        VO vo = new VO();\n        vo.setValue(Currency.getInstance(Locale.CHINA));\n        String text = JSON.toJSONString(vo);\n        System.out.println(text);\n        JSON.parseObject(text, VO.class);\n    }\n\n    public static class VO {\n\n        private Currency value;\n\n        public Currency getValue() {\n            return value;\n        }\n\n        public void setValue(Currency value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/CurrencyTest3.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.math.BigDecimal;\nimport java.util.Currency;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\n\npublic class CurrencyTest3 extends TestCase {\n    public static class Money {\n        public Currency currency;\n        public BigDecimal amount;\n\n        @Override\n        public String toString() {\n            return \"Money{currency=\" + currency + \", amount=\" + amount + '}';\n        }\n    }\n\n    public void testJson() throws Exception {\n        Money money = new Money();\n        money.currency = Currency.getInstance(\"CNY\");\n        money.amount = new BigDecimal(\"10.03\");\n\n        String json = JSON.toJSONString(money);\n        System.out.println(\"json = \" + json);\n\n        Money moneyBack = JSON.parseObject(json, Money.class);\n        System.out.println(\"money = \" + moneyBack);\n\n        JSONObject jsonObject = JSON.parseObject(json);\n        Money moneyCast = JSON.toJavaObject(jsonObject, Money.class);\n        System.out.printf(\"money = \" + moneyCast);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/CurrencyTest4.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.google.gson.Gson;\nimport junit.framework.TestCase;\n\nimport java.util.Currency;\nimport java.util.Locale;\n\npublic class CurrencyTest4 extends TestCase {\n\n    public void test_0() throws Exception {\n        JSONObject jsonObject = new JSONObject();\n        jsonObject.put(\"currency\", \"CNY\");\n\n        String text = JSON.toJSONString(jsonObject);\n\n        Currency currency = JSON.parseObject(text, Currency.class);\n\n        assertSame(Currency.getInstance(\"CNY\"), currency);\n    }\n\n    public void test_1() throws Exception {\n        JSONObject jsonObject = new JSONObject();\n        jsonObject.put(\"currencyCode\", \"CNY\");\n\n        String text = JSON.toJSONString(jsonObject);\n\n        Currency currency = JSON.parseObject(text, Currency.class);\n\n        assertSame(Currency.getInstance(\"CNY\"), currency);\n    }\n\n    public static class VO {\n        public Currency value;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/CurrencyTest5.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport junit.framework.TestCase;\n\nimport java.util.Currency;\n\npublic class CurrencyTest5 extends TestCase {\n\n    public void test_0() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.put(Currency.class\n                , config.createJavaBeanSerializer(Currency.class));\n\n        JSONObject jsonObject = new JSONObject();\n        jsonObject.put(\"value\", Currency.getInstance(\"CNY\"));\n\n        String text = JSON.toJSONString(jsonObject, config);\n        System.out.println(text);\n        String str1 = \"{\\\"value\\\":{\\\"currencyCode\\\":\\\"CNY\\\",\\\"displayName\\\":\\\"Chinese Yuan\\\",\\\"symbol\\\":\\\"CNY\\\"}}\";\n        String str2 = \"{\\\"value\\\":{\\\"currencyCode\\\":\\\"CNY\\\",\\\"displayName\\\":\\\"人民币\\\",\\\"symbol\\\":\\\"￥\\\"}}\";\n        String str3 = \"{\\\"value\\\":{\\\"currencyCode\\\":\\\"CNY\\\",\\\"displayName\\\":\\\"Chinese Yuan\\\",\\\"numericCodeAsString\\\":\\\"156\\\",\\\"symbol\\\":\\\"CN¥\\\"}}\";\n        String str4 = \"{\\\"value\\\":{\\\"currencyCode\\\":\\\"CNY\\\",\\\"displayName\\\":\\\"人民币\\\",\\\"numericCodeAsString\\\":\\\"156\\\",\\\"symbol\\\":\\\"￥\\\"}}\";\n        assertTrue(text.equals(str1)\n                || text.equals(str2)\n                || text.equals(str3)\n                || text.equals(str4));\n\n        Currency currency = JSON.parseObject(text, VO.class).value;\n\n        assertSame(Currency.getInstance(\"CNY\"), currency);\n    }\n\n    public static class VO {\n        public Currency value;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/CurrencyTest_2.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.Currency;\nimport java.util.Locale;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class CurrencyTest_2 extends TestCase {\n\n    public void test_0() throws Exception {\n        VO vo = new VO();\n        vo.setValue(Currency.getInstance(Locale.CHINA));\n        vo.setValue1(Currency.getInstance(Locale.CHINA));\n        String text = JSON.toJSONString(vo);\n        System.out.println(text);\n        JSON.parseObject(text, VO.class);\n    }\n\n    public static class VO {\n\n        private Currency value;\n        private Currency value1;\n\n        public Currency getValue() {\n            return value;\n        }\n\n        public void setValue(Currency value) {\n            this.value = value;\n        }\n\n        public Currency getValue1() {\n            return value1;\n        }\n\n        public void setValue1(Currency value1) {\n            this.value1 = value1;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/DefaultJSONParserTest.java",
    "content": "/*\r\n * Copyright 1999-2017 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.json.bvt;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.Feature;\r\n\r\npublic class DefaultJSONParserTest extends TestCase {\r\n\r\n\tpublic void test_double() {\r\n\t\tDefaultJSONParser parser = new DefaultJSONParser(\"3.4\");\r\n\t\tparser.config(Feature.UseBigDecimal, false);\r\n\t\tAssert.assertEquals(\"3.4\", parser.getInput());\r\n\t\tAssert.assertEquals(false, parser.isEnabled(Feature.UseBigDecimal));\r\n\t\tObject result = parser.parse();\r\n\t\tAssert.assertEquals(3.4D, result);\r\n\t}\r\n\r\n\tpublic void test_double_in_object() {\r\n\t\tDefaultJSONParser parser = new DefaultJSONParser(\"{\\\"double\\\":3.4}\");\r\n\t\tparser.config(Feature.UseBigDecimal, false);\r\n\t\tAssert.assertEquals(\"{\\\"double\\\":3.4}\", parser.getInput());\r\n\t\tObject result = parser.parse();\r\n\t\tAssert.assertEquals(3.4D, ((Map) result).get(\"double\"));\r\n\t}\r\n\r\n\tpublic void test_error() {\r\n\t\tException error = null;\r\n\t\ttry {\r\n\t\t\tDefaultJSONParser parser = new DefaultJSONParser(\"{\\\"name\\\":3]\");\r\n\t\t\tparser.parse();\r\n\t\t} catch (Exception ex) {\r\n\t\t\terror = ex;\r\n\t\t}\r\n\t\tAssert.assertNotNull(error);\r\n\t}\r\n\r\n\tpublic void test_error2() {\r\n\t\tException error = null;\r\n\t\ttry {\r\n\t\t\tDefaultJSONParser parser = new DefaultJSONParser(\"ttr\");\r\n\t\t\tparser.parse();\r\n\t\t} catch (Exception ex) {\r\n\t\t\terror = ex;\r\n\t\t}\r\n\t\tAssert.assertNotNull(error);\r\n\t}\r\n\r\n\tpublic void test_error3() {\r\n\t\tException error = null;\r\n\t\ttry {\r\n\t\t\tDefaultJSONParser parser = new DefaultJSONParser(\"33\");\r\n\t\t\tparser.parseObject(new HashMap());\r\n\t\t} catch (Exception ex) {\r\n\t\t\terror = ex;\r\n\t\t}\r\n\t\tAssert.assertNotNull(error);\r\n\t}\r\n\r\n\tpublic void test_error4() {\r\n\t\tException error = null;\r\n\t\ttry {\r\n\t\t\tDefaultJSONParser parser = new DefaultJSONParser(\"]\");\r\n\t\t\tparser.parse();\r\n\t\t} catch (Exception ex) {\r\n\t\t\terror = ex;\r\n\t\t}\r\n\t\tAssert.assertNotNull(error);\r\n\t}\r\n\r\n\tpublic void test_error6() {\r\n\t\tException error = null;\r\n\t\ttry {\r\n\t\t\tDefaultJSONParser parser = new DefaultJSONParser(\"{\\\"a\\\"33\");\r\n\t\t\tparser.parse();\r\n\t\t} catch (Exception ex) {\r\n\t\t\terror = ex;\r\n\t\t}\r\n\t\tAssert.assertNotNull(error);\r\n\t}\r\n\r\n\tpublic void test_error7() {\r\n\t\tException error = null;\r\n\t\ttry {\r\n\t\t\tDefaultJSONParser parser = new DefaultJSONParser(\"{\\\"a\\\":{}3\");\r\n\t\t\tparser.parse();\r\n\t\t} catch (Exception ex) {\r\n\t\t\terror = ex;\r\n\t\t}\r\n\t\tAssert.assertNotNull(error);\r\n\t}\r\n\r\n\tpublic void test_error11() {\r\n\t\tException error = null;\r\n\t\ttry {\r\n\t\t\tDefaultJSONParser parser = new DefaultJSONParser(\"{]\");\r\n\t\t\tparser.parse();\r\n\t\t} catch (Exception ex) {\r\n\t\t\terror = ex;\r\n\t\t}\r\n\t\tAssert.assertNotNull(error);\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/DefaultJSONParserTest_ref.java",
    "content": "/*\n * Copyright 1999-2017 Alibaba Group.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage com.alibaba.json.bvt;\n\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class DefaultJSONParserTest_ref extends TestCase {\n\n\tpublic void test_ref() {\n\t\tMap obj = JSON.parseObject(\"{\\\"id\\\":{},\\\"value\\\":{\\\"$ref\\\":\\\"$\\\"}}\", Map.class);\n\t\tAssert.assertTrue(obj == obj.get(\"value\"));\n\t}\n\n\t\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/DeprecatedClassTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.parser.DefaultExtJSONParser;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.JSONSerializerMap;\n\nimport junit.framework.TestCase;\n\n@SuppressWarnings(\"deprecation\")\npublic class DeprecatedClassTest extends TestCase {\n    @SuppressWarnings(\"resource\")\n    public void test_0() throws Exception {\n        new DefaultExtJSONParser(\"\");\n        new DefaultExtJSONParser(\"\", ParserConfig.getGlobalInstance(), 1);\n        new DefaultExtJSONParser(\"\".toCharArray(), 0, ParserConfig.getGlobalInstance(), 1);\n    }\n    \n    public void test_1() throws Exception {\n        new JSONSerializerMap().put(Object.class, null);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/DisableSpecialKeyDetectTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.Map;\nimport java.util.Set;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.parser.Feature;\n\npublic class DisableSpecialKeyDetectTest extends TestCase {\n\n    public void test_0() throws Exception {\n        String json = \"{\\\"schema\\\":{\\\"$ref\\\":{\\\"@title\\\":\\\"类目ID\\\",\\\"@type\\\":\\\"string\\\"},\\\"$\\\":{\\\"@\\\":\\\"类目名称\\\",\\\"type\\\":\\\"string\\\"},\\\"cat_desc\\\":{\\\"title\\\":\\\"类目描述\\\",\\\"type\\\":\\\"string\\\"}}}\";\n        JSONObject errorJson = JSON.parseObject(json, Feature.DisableSpecialKeyDetect);\n        JSONObject schema = errorJson.getJSONObject(\"schema\");\n        Set<Map.Entry<String, Object>> es2 = schema.entrySet();\n        for (Map.Entry<String, Object> entry : es2) {\n            System.out.println(entry.getKey() + \"_\" + entry.getValue());\n        }\n    }\n\n    public void test_1() throws Exception {\n        String text = \"{\\\"@v1\\\":\\\"v1\\\",\\\"@type\\\":\\\"v2\\\", \\\"@\\\":\\\"v3\\\",\\\"$\\\":\\\"v4\\\",\\\"$ref\\\":\\\"v5\\\"}\";\n        JSONObject json = JSON.parseObject(text, Feature.DisableSpecialKeyDetect);\n        Assert.assertEquals(\"v1\", json.getString(\"@v1\"));\n        Assert.assertEquals(\"v2\", json.getString(\"@type\"));\n        Assert.assertEquals(\"v3\", json.getString(\"@\"));\n        Assert.assertEquals(\"v4\", json.getString(\"$\"));\n        Assert.assertEquals(\"v5\", json.getString(\"$ref\"));\n    }\n    \n    public void test_2() throws Exception {\n        String text = \"{\\\"@v1\\\":\\\"v1\\\",\\\"@type\\\":\\\"v2\\\", \\\"@\\\":\\\"v3\\\",\\\"$\\\":\\\"v4\\\",\\\"$ref\\\":\\\"v5\\\"}\";\n        Map<String,String> map = JSON.parseObject(text, new TypeReference<Map<String,String>>(){}, Feature.DisableSpecialKeyDetect);\n        Assert.assertEquals(\"v1\", map.get(\"@v1\"));\n        Assert.assertEquals(\"v2\", map.get(\"@type\"));\n        Assert.assertEquals(\"v3\", map.get(\"@\"));\n        Assert.assertEquals(\"v4\", map.get(\"$\"));\n        Assert.assertEquals(\"v5\", map.get(\"$ref\"));\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/DoubleArrayFieldTest_primitive.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class DoubleArrayFieldTest_primitive extends TestCase {\r\n\r\n    public void test_codec_null() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty);\r\n        Assert.assertEquals(\"{\\\"value\\\":[]}\", text);\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private double[] value;\r\n\r\n        public double[] getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(double[] value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/DoubleFieldTest_A.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class DoubleFieldTest_A extends TestCase {\r\n\r\n    public void test_codec() throws Exception {\r\n        User user = new User();\r\n        user.setValue(1001D);\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n        String text = JSON.toJSONString(user, mapping, SerializerFeature.WriteMapNullValue);\r\n        System.out.println(text);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user1.getValue(), user.getValue());\r\n    }\r\n\r\n    public void test_codec_null() throws Exception {\r\n        User user = new User();\r\n        user.setValue(null);\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n        String text = JSON.toJSONString(user, mapping, SerializerFeature.WriteMapNullValue);\r\n        System.out.println(text);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user1.getValue(), user.getValue());\r\n    }\r\n\r\n    public static class User {\r\n\r\n        private Double value;\r\n\r\n        public Double getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(Double value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/EmptyArrayAsNullTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 2016/10/15.\n */\npublic class EmptyArrayAsNullTest extends TestCase {\n\n    public void test_emtpyAsNull() throws Exception {\n        String text = \"{\\\"value\\\":[]}\";\n\n        Model model = JSON.parseObject(text, Model.class);\n        assertNull(model.value);\n    }\n\n    public static class Model {\n        public Value value;\n    }\n\n    public static class Value {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/EmptyObjectTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class EmptyObjectTest extends TestCase {\r\n\r\n    public void test_codec_null() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{}\", text);\r\n\r\n        JSON.parseObject(text, V0.class);\r\n\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullNumberAsZero);\r\n        Assert.assertEquals(\"{}\", text);\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/EnumFieldTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.io.StringReader;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.TypeReference;\n\nimport junit.framework.TestCase;\n\npublic class EnumFieldTest extends TestCase {\n\n    public void test_special() throws Exception {\n        JSONReader read = new JSONReader(new StringReader(\"{\\\"value\\\":1}\"));\n        Model model = read.readObject(Model.class);\n        Assert.assertEquals(Type.B, model.value);\n        read.close();\n    }\n    \n    public void test_1() throws Exception {\n        JSONReader read = new JSONReader(new StringReader(\"{\\\"value\\\":\\\"A\\\",\\\"value1\\\":\\\"B\\\"}\"));\n        Model model = read.readObject(Model.class);\n        Assert.assertEquals(Type.A, model.value);\n        Assert.assertEquals(Type.B, model.value1);\n        read.close();\n    }\n    \n    public void test_map() throws Exception {\n        JSONReader read = new JSONReader(new StringReader(\"{\\\"model\\\":{\\\"value\\\":\\\"A\\\",\\\"value1\\\":\\\"B\\\"}}\"));\n        Map<String, Model> map = read.readObject(new TypeReference<Map<String, Model>>(){});\n        Model model = (Model) map.get(\"model\");\n        Assert.assertEquals(Type.A, model.value);\n        Assert.assertEquals(Type.B, model.value1);\n        read.close();\n    }\n\n    public void test_error() throws Exception {\n        JSONReader read = new JSONReader(new StringReader(\"{\\\"value\\\":\\\"a\\\\b\\\"}\"));\n        Model model = read.readObject(Model.class);\n        assertNull(model.value);\n    }\n    \n    public void test_error_1() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader read = new JSONReader(new StringReader(\"{\\\"value\\\":\\\"A\\\",\\\"value1\\\":\\\"B\\\"[\"));\n            Model model = read.readObject(Model.class);\n            read.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_2() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader read = new JSONReader(new StringReader(\"{\\\"model\\\":{\\\"value\\\":\\\"A\\\",\\\"value1\\\":\\\"B\\\"}[\"));\n            Map<String, Model> map = read.readObject(new TypeReference<Map<String, Model>>(){});\n            read.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    private static class Model {\n\n        public Type value;\n        public Type value1;\n\n    }\n\n    public static enum Type {\n                             A, B, C\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/EnumFieldTest2.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.io.StringReader;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class EnumFieldTest2 extends TestCase {\n\n    public void test_0() throws Exception {\n        JSONReader read = new JSONReader(new StringReader(\"[1,2]\"));\n        read.config(Feature.SupportArrayToBean, true);\n        Model model = read.readObject(Model.class);\n        Assert.assertEquals(Type.B, model.value);\n        Assert.assertEquals(Type.C, model.value1);\n        read.close();\n    }\n    \n    public void test_1() throws Exception {\n        JSONReader read = new JSONReader(new StringReader(\"[\\\"A\\\",\\\"B\\\"]\"));\n        read.config(Feature.SupportArrayToBean, true);\n        Model model = read.readObject(Model.class);\n        Assert.assertEquals(Type.A, model.value);\n        Assert.assertEquals(Type.B, model.value1);\n        read.close();\n    }\n    \n    public void test_2() throws Exception {\n        JSONReader read = new JSONReader(new StringReader(\"[null,null]\"));\n        read.config(Feature.SupportArrayToBean, true);\n        Model model = read.readObject(Model.class);\n        Assert.assertEquals(null, model.value);\n        Assert.assertEquals(null, model.value1);\n        read.close();\n    }\n    \n    public void test_error_1() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader read = new JSONReader(new StringReader(\"[null:null]\"));\n            read.config(Feature.SupportArrayToBean, true);\n            Model model = read.readObject(Model.class);\n            read.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_n() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader read = new JSONReader(new StringReader(\"[n\"));\n            read.config(Feature.SupportArrayToBean, true);\n            Model model = read.readObject(Model.class);\n            read.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_nu() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader read = new JSONReader(new StringReader(\"[nu\"));\n            read.config(Feature.SupportArrayToBean, true);\n            Model model = read.readObject(Model.class);\n            read.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_nul() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader read = new JSONReader(new StringReader(\"[nul\"));\n            read.config(Feature.SupportArrayToBean, true);\n            Model model = read.readObject(Model.class);\n            read.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Model {\n\n        public Type value;\n        public Type value1;\n\n    }\n\n    public static enum Type {\n                             A, B, C\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/EnumFieldTest2_private.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.io.StringReader;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class EnumFieldTest2_private extends TestCase {\n\n    public void test_0() throws Exception {\n        JSONReader read = new JSONReader(new StringReader(\"[1,2]\"));\n        read.config(Feature.SupportArrayToBean, true);\n        Model model = read.readObject(Model.class);\n        Assert.assertEquals(Type.B, model.value);\n        Assert.assertEquals(Type.C, model.value1);\n        read.close();\n    }\n    \n    public void test_1() throws Exception {\n        JSONReader read = new JSONReader(new StringReader(\"[\\\"A\\\",\\\"B\\\"]\"));\n        read.config(Feature.SupportArrayToBean, true);\n        Model model = read.readObject(Model.class);\n        Assert.assertEquals(Type.A, model.value);\n        Assert.assertEquals(Type.B, model.value1);\n        read.close();\n    }\n    \n    public void test_2() throws Exception {\n        JSONReader read = new JSONReader(new StringReader(\"[null,null]\"));\n        read.config(Feature.SupportArrayToBean, true);\n        Model model = read.readObject(Model.class);\n        Assert.assertEquals(null, model.value);\n        Assert.assertEquals(null, model.value1);\n        read.close();\n    }\n    \n    public void test_error_1() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader read = new JSONReader(new StringReader(\"[null:null]\"));\n            read.config(Feature.SupportArrayToBean, true);\n            Model model = read.readObject(Model.class);\n            read.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_n() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader read = new JSONReader(new StringReader(\"[n\"));\n            read.config(Feature.SupportArrayToBean, true);\n            Model model = read.readObject(Model.class);\n            read.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_nu() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader read = new JSONReader(new StringReader(\"[nu\"));\n            read.config(Feature.SupportArrayToBean, true);\n            Model model = read.readObject(Model.class);\n            read.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_nul() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader read = new JSONReader(new StringReader(\"[nul\"));\n            read.config(Feature.SupportArrayToBean, true);\n            Model model = read.readObject(Model.class);\n            read.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    private static class Model {\n\n        public Type value;\n        public Type value1;\n\n    }\n\n    public static enum Type {\n                             A, B, C\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/EnumFieldTest3.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.io.StringWriter;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\nimport junit.framework.TestCase;\r\n\r\npublic class EnumFieldTest3 extends TestCase {\r\n\r\n    public void test_1() throws Exception {\r\n        Model[] array = new Model[2048];\r\n        for (int i = 0; i < array.length; ++i) {\r\n            array[i] = new Model();\r\n            array[i].value = Type.A;\r\n        }\r\n\r\n        String text = JSON.toJSONString(array);\r\n\r\n        Model[] array2 = JSON.parseObject(text, Model[].class);\r\n\r\n        Assert.assertEquals(array.length, array2.length);\r\n        for (int i = 0; i < array.length; ++i) {\r\n            Assert.assertEquals(array[i].value, array2[i].value);\r\n        }\r\n    }\r\n    \r\n    public void test_1_writer() throws Exception {\r\n        Model[] array = new Model[2048];\r\n        for (int i = 0; i < array.length; ++i) {\r\n            array[i] = new Model();\r\n            array[i].value = Type.A;\r\n        }\r\n\r\n        StringWriter writer = new StringWriter();\r\n        JSON.writeJSONString(writer, array);\r\n        String text = writer.toString();\r\n\r\n        Model[] array2 = JSON.parseObject(text, Model[].class);\r\n\r\n        Assert.assertEquals(array.length, array2.length);\r\n        for (int i = 0; i < array.length; ++i) {\r\n            Assert.assertEquals(array[i].value, array2[i].value);\r\n        }\r\n    }\r\n    \r\n    public void test_null() throws Exception {\r\n        Model[] array = new Model[2048];\r\n        for (int i = 0; i < array.length; ++i) {\r\n            array[i] = new Model();\r\n            array[i].value = null;\r\n        }\r\n\r\n        String text = JSON.toJSONString(array, SerializerFeature.WriteMapNullValue);\r\n\r\n        Model[] array2 = JSON.parseObject(text, Model[].class);\r\n\r\n        Assert.assertEquals(array.length, array2.length);\r\n        for (int i = 0; i < array.length; ++i) {\r\n            Assert.assertEquals(array[i].value, array2[i].value);\r\n        }\r\n    }\r\n\r\n    public static class Model {\r\n\r\n        public Type value;\r\n\r\n    }\r\n    \r\n    public static enum Type {\r\n        A, B, C\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/EnumFieldTest3_private.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.io.StringWriter;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\nimport junit.framework.TestCase;\r\n\r\npublic class EnumFieldTest3_private extends TestCase {\r\n\r\n    public void test_1() throws Exception {\r\n        Model[] array = new Model[2048];\r\n        for (int i = 0; i < array.length; ++i) {\r\n            array[i] = new Model();\r\n            array[i].value = Type.A;\r\n        }\r\n\r\n        String text = JSON.toJSONString(array);\r\n\r\n        Model[] array2 = JSON.parseObject(text, Model[].class);\r\n\r\n        Assert.assertEquals(array.length, array2.length);\r\n        for (int i = 0; i < array.length; ++i) {\r\n            Assert.assertEquals(array[i].value, array2[i].value);\r\n        }\r\n    }\r\n    \r\n    public void test_1_writer() throws Exception {\r\n        Model[] array = new Model[2048];\r\n        for (int i = 0; i < array.length; ++i) {\r\n            array[i] = new Model();\r\n            array[i].value = Type.A;\r\n        }\r\n\r\n        StringWriter writer = new StringWriter();\r\n        JSON.writeJSONString(writer, array);\r\n        String text = writer.toString();\r\n\r\n        Model[] array2 = JSON.parseObject(text, Model[].class);\r\n\r\n        Assert.assertEquals(array.length, array2.length);\r\n        for (int i = 0; i < array.length; ++i) {\r\n            Assert.assertEquals(array[i].value, array2[i].value);\r\n        }\r\n    }\r\n    \r\n    public void test_null() throws Exception {\r\n        Model[] array = new Model[2048];\r\n        for (int i = 0; i < array.length; ++i) {\r\n            array[i] = new Model();\r\n            array[i].value = null;\r\n        }\r\n\r\n        String text = JSON.toJSONString(array, SerializerFeature.WriteMapNullValue);\r\n\r\n        Model[] array2 = JSON.parseObject(text, Model[].class);\r\n\r\n        Assert.assertEquals(array.length, array2.length);\r\n        for (int i = 0; i < array.length; ++i) {\r\n            Assert.assertEquals(array[i].value, array2[i].value);\r\n        }\r\n    }\r\n\r\n    public static class Model {\r\n\r\n        public Type value;\r\n\r\n    }\r\n    \r\n    private static enum Type {\r\n        A, B, C\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/EnumerationTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.Collections;\nimport java.util.Enumeration;\nimport java.util.Vector;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class EnumerationTest extends TestCase {\n\n    public void test_enumeration() throws Exception {\n        Assert.assertEquals(\"[]\", JSON.toJSONString(new Vector().elements()));\n        Assert.assertEquals(\"[null]\", JSON.toJSONString(new Vector(Collections.singleton(null)).elements()));\n        \n        Assert.assertEquals(\"{\\\"value\\\":[]}\", JSON.toJSONString(new VO(), SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty));\n    }\n\n    private static class VO {\n\n        private Enumeration value;\n\n        public Enumeration getValue() {\n            return value;\n        }\n\n        public void setValue(Enumeration value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/FastJsonBigClassTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.json.bvtVO.BigClass;\n\nimport junit.framework.TestCase;\n\npublic class FastJsonBigClassTest extends TestCase {\n\n    public void test_big_class() {\n        BigClass bigObj = new BigClass();\n        String json = JSON.toJSONString(bigObj, SerializerFeature.IgnoreNonFieldGetter);\n//        assertThat(json, not(containsString(\"skipme\")));\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/FieldBasedTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport junit.framework.TestCase;\n\n/**\n * @author TimAndy\n */\npublic class FieldBasedTest extends TestCase {\n    public void test_filed_based_parse() {\n        Student student = new Student(\"123\", \"你好世界\", 60);\n        String json = JSON.toJSONString(student, new SerializeConfig(true));\n        Student result = JSON.parseObject(json, Student.class, new ParserConfig(true));\n\n        assertNotNull(result);\n        assertEquals(\"123\", result.id);\n        assertEquals(\"你好世界\", result.name);\n        assertEquals(60, result.score);\n    }\n\n    static final class Student {\n        private String id;\n        private String name;\n        private int score;\n\n        Student() {\n        }\n\n        Student(String id, String name, int score) {\n            this.id = id;\n            this.name = name;\n            this.score = score;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/FileFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.io.File;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class FileFieldTest extends TestCase {\r\n\r\n    public void test_codec_null() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty));\r\n        Assert.assertEquals(\"{value:null}\", JSON.toJSONStringZ(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty));\r\n        Assert.assertEquals(\"{value:null}\", JSON.toJSONStringZ(v, mapping, SerializerFeature.UseSingleQuotes, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty));\r\n        Assert.assertEquals(\"{'value':null}\", JSON.toJSONStringZ(v, mapping, SerializerFeature.UseSingleQuotes, SerializerFeature.QuoteFieldNames, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty));\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private File value;\r\n\r\n        public File getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(File value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/FinalTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class FinalTest extends TestCase {\n    public void test_final() throws Exception {\n        VO vo = new VO();\n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"value\\\":1001}\", text);\n        JSON.parseObject(text, VO.class);\n        JSON.parseObject(\"{\\\"id\\\":1001,\\\"value\\\":1001}\", VO.class);\n    }\n    \n    \n    public static class VO {\n        public final static int id = 1001;\n        public final int value = 1001;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/FloatArrayFieldTest_primitive.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class FloatArrayFieldTest_primitive extends TestCase {\r\n\r\n    public void test_codec_null() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty);\r\n        Assert.assertEquals(\"{\\\"value\\\":[]}\", text);\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private float[] value;\r\n\r\n        public float[] getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(float[] value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/FloatFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\n\r\npublic class FloatFieldTest extends TestCase {\r\n\r\n    public void test_codec() throws Exception {\r\n        User user = new User();\r\n        user.setValue(1001F);\r\n\r\n        String text = JSON.toJSONString(user);\r\n        System.out.println(text);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertTrue(user1.getValue() == user.getValue());\r\n    }\r\n\r\n    public static class User {\r\n\r\n        private float value;\r\n\r\n        public float getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(float value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/FloatFieldTest_A.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class FloatFieldTest_A extends TestCase {\r\n\r\n    public void test_codec() throws Exception {\r\n        User user = new User();\r\n        user.setValue(1001F);\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n        String text = JSON.toJSONString(user, mapping, SerializerFeature.WriteMapNullValue);\r\n        System.out.println(text);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user1.getValue(), user.getValue());\r\n    }\r\n\r\n    public void test_codec_null() throws Exception {\r\n        User user = new User();\r\n        user.setValue(null);\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n        String text = JSON.toJSONString(user, mapping, SerializerFeature.WriteMapNullValue);\r\n        System.out.println(text);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user1.getValue(), user.getValue());\r\n    }\r\n\r\n    public static class User {\r\n\r\n        private Float value;\r\n\r\n        public Float getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(Float value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/FluentSetterTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class FluentSetterTest extends TestCase {\n\n    public void test_fluent() throws Exception {\n        B b = new B();\n        b.setId(1001);\n        b.setValue(1002);\n        \n        String text = JSON.toJSONString(b);\n        Assert.assertEquals(\"{\\\"id\\\":1001,\\\"value\\\":1002}\", text);\n        \n        B b1 = JSON.parseObject(text, B.class);\n        Assert.assertEquals(b.getId(), b1.getId());\n        Assert.assertEquals(b.getValue(), b1.getValue());\n    }\n\n    public static class A {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public A setId(int id) {\n            this.id = id;\n            return this;\n        }\n    }\n\n    public static class B extends A {\n\n        private int value;\n\n        public int getValue() {\n            return value;\n        }\n\n        public B setValue(int value) {\n            this.value = value;\n            return this;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/GetSetNotMatchTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class GetSetNotMatchTest extends TestCase {\n\n    public void test_0() throws Exception {\n        VO vo = new VO();\n        vo.setValue(1);\n        \n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"value\\\":true}\", text);\n        VO vo1 = JSON.parseObject(text, VO.class);\n        \n        Assert.assertEquals(vo.getValue(), vo1.getValue());\n    }\n\n    public static class VO {\n\n        private int value;\n\n        public boolean getValue() {\n            return value == 1;\n        }\n\n        public void setValue(int value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/GroovyTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport groovy.lang.GroovyClassLoader;\nimport groovy.lang.GroovyObject;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class GroovyTest extends TestCase {\n\n    public void test_groovy() throws Exception {\n        ClassLoader parent = Thread.currentThread().getContextClassLoader();\n        GroovyClassLoader loader = new GroovyClassLoader(parent);\n\n        // A类\n        Class AClass = loader.parseClass(\"class A {\\n\" + //\n                                         \"    int id\\n\" + //\n                                         \"}\");\n\n        // A实例\n        GroovyObject a = (GroovyObject) AClass.newInstance();\n        a.setProperty(\"id\", 33);\n        String textA = JSON.toJSONString(a);\n        \n        GroovyObject aa = (GroovyObject) JSON.parseObject(textA, AClass);\n        Assert.assertEquals(a.getProperty(\"id\"), aa.getProperty(\"id\"));\n        \n        System.out.println(a);\n\n        // B类，继承于A\n        Class BClass = loader.parseClass(\"class B extends A {\\n\" + //\n        \t\t\"    String name\\n\" + //\n        \t\t\"}\");\n\n        // B实例\n        GroovyObject b = (GroovyObject) BClass.newInstance();\n        b.setProperty(\"name\", \"jobs\");\n        String textB = JSON.toJSONString(b);\n        GroovyObject bb = (GroovyObject) JSON.parseObject(textB, BClass);\n        Assert.assertEquals(b.getProperty(\"id\"), bb.getProperty(\"id\"));\n        Assert.assertEquals(b.getProperty(\"name\"), bb.getProperty(\"name\"));\n        \n\n        // 序列化失败\n        System.out.println(JSON.toJSONString(b, true));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/IncomingDataPointTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.json.bvtVO.IncomingDataPoint;\nimport junit.framework.TestCase;\n\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\n/**\n * Created by wenshao on 03/08/2017.\n */\npublic class IncomingDataPointTest extends TestCase {\n    public void test_0() throws Exception {\n        Map<String, String> tags = new LinkedHashMap<String, String>();\n        tags.put(\"site\", \"et2\");\n        tags.put(\"appname\", \"histore\");\n        tags.put(\"ip\", \"1.1.1.1\");\n\n        IncomingDataPoint point = new IncomingDataPoint();\n        point.setMetric(\"mem.usage.GB\");\n        point.setTimestamp(1501760861298L);\n        point.setTags(tags);\n        point.setValue(\"58.41\");\n        point.setTSUID(\"\");\n        point.setAggregator(\"\");\n        IncomingDataPoint[] array = new IncomingDataPoint[] {point};\n\n        String json = JSON.toJSONString(array);\n        System.out.println(json);\n\n        JSON.parseArray(json, IncomingDataPoint.class);\n\n        IncomingDataPoint p2 = JSON.parseObject(\"[\\\"mem.usage.GB\\\",1501833776283,\\\"58.41\\\",{\\\"site\\\":\\\"et2\\\",\\\"appname\\\":\\\"histore\\\",\\\"ip\\\":\\\"1.1.1.1\\\"}]\", IncomingDataPoint.class);\n        IncomingDataPoint p3 = JSON.parseObject(\"[\\\"mem.usage.GB\\\",1501833776283,\\\"58.41\\\",{\\\"site\\\":\\\"et2\\\",\\\"appname\\\":\\\"histore\\\",\\\"ip\\\":\\\"1.1.1.1\\\"},null]\", IncomingDataPoint.class);\n        System.out.println(JSON.toJSONString(p2));\n//        JSON.parseObject(json, IncomingDataPoint[].class);\n    }\n    public void test_for_IncomingDataPoint() throws Exception {\n        // \"metric\", \"timestamp\", \"value\", \"tags\", \"tsuid\", \"granularity\", \"aggregator\"\n        String text = \"[[\\\"DataAdaptor.LbMultiGroupPersonalityDataAdaptor.stddev.aggregate_sum\\\",\\\"1501812639932\\\",\\\"95.52667633256902\\\",{\\\"appName\\\":\\\"aladdin\\\",\\\"hostIdc\\\":\\\"et2\\\",\\\"hostunit\\\":\\\"CENTER\\\",\\\"nodegroup\\\":\\\"aladdin_prehost\\\",\\\"idc\\\":\\\"ET2\\\",\\\"agg_version\\\":\\\"100\\\",\\\"group\\\":\\\"DEFAULT\\\"},\\\"\\\",\\\"\\\",\\\"\\\"]]\";\n        System.out.println(text);\n        JSON.parseArray(text, IncomingDataPoint.class);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/InetAddressFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.net.InetAddress;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class InetAddressFieldTest extends TestCase {\r\n\r\n    public void test_codec() throws Exception {\r\n        User user = new User();\r\n        user.setValue(InetAddress.getLocalHost());\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n        String text = JSON.toJSONString(user, mapping, SerializerFeature.WriteMapNullValue);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user1.getValue(), user.getValue());\r\n    }\r\n\r\n    public void test_codec_null() throws Exception {\r\n        User user = new User();\r\n        user.setValue(null);\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n        String text = JSON.toJSONString(user, mapping, SerializerFeature.WriteMapNullValue);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user1.getValue(), user.getValue());\r\n    }\r\n\r\n    public static class User {\r\n\r\n        private InetAddress value;\r\n\r\n        public InetAddress getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(InetAddress value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/InetSocketAddressFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.net.InetSocketAddress;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class InetSocketAddressFieldTest extends TestCase {\r\n\r\n    public void test_codec() throws Exception {\r\n        User user = new User();\r\n        user.setValue(new InetSocketAddress(33));\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n        String text = JSON.toJSONString(user, mapping, SerializerFeature.WriteMapNullValue);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user1.getValue(), user.getValue());\r\n    }\r\n\r\n    public void test_codec_null() throws Exception {\r\n        User user = new User();\r\n        user.setValue(null);\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n        String text = JSON.toJSONString(user, mapping, SerializerFeature.WriteMapNullValue);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user1.getValue(), user.getValue());\r\n    }\r\n    \r\n    public void test_codec_null_2() throws Exception {\r\n        User user = JSON.parseObject(\"{\\\"value\\\":{\\\"address\\\":null,\\\"port\\\":33}}\", User.class);\r\n\r\n        Assert.assertEquals(33, user.getValue().getPort());\r\n    }\r\n\r\n    public static class User {\r\n\r\n        private InetSocketAddress value;\r\n\r\n        public InetSocketAddress getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(InetSocketAddress value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/IntArrayFieldTest_primitive.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class IntArrayFieldTest_primitive extends TestCase {\r\n\r\n    public void test_array() throws Exception {\r\n        Assert.assertEquals(\"[1]\", JSON.toJSONString(new int[] { 1 }));\r\n\r\n    }\r\n\r\n    public void test_codec_null() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty);\r\n        Assert.assertEquals(\"{\\\"value\\\":[]}\", text);\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private int[] value;\r\n\r\n        public int[] getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(int[] value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/IntKeyMapTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class IntKeyMapTest extends TestCase {\n\n    public void test_0() throws Exception {\n        JSON.parse(\"{1:\\\"AA\\\",2:{}}\");\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/IntegerArrayFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class IntegerArrayFieldTest extends TestCase {\r\n\r\n    public void test_codec() throws Exception {\r\n        User user = new User();\r\n        user.setValue(new Integer[] { Integer.valueOf(1), Integer.valueOf(2) });\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n        String text = JSON.toJSONString(user, mapping, SerializerFeature.WriteMapNullValue);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user1.getValue()[0], user.getValue()[0]);\r\n        Assert.assertEquals(user1.getValue()[1], user.getValue()[1]);\r\n    }\r\n\r\n    public void test_codec_null() throws Exception {\r\n        User user = new User();\r\n        user.setValue(null);\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n        String text = JSON.toJSONString(user, mapping, SerializerFeature.WriteMapNullValue);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user1.getValue(), user.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        User user = new User();\r\n        user.setValue(null);\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n        String text = JSON.toJSONString(user, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(0, user1.getValue().length);\r\n    }\r\n\r\n    public static class User {\r\n\r\n        private Integer[] value;\r\n\r\n        public Integer[] getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(Integer[] value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/Issue213Test.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.io.Serializable;\nimport java.util.Date;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Issue213Test extends TestCase {\n\n    public void test_0() throws Exception {\n        String text = \"\\t\\t\\t\\t\\t\\t \\u00A020:00-21:30</span><br />\\r\\n\\r\\n</p>\\r\\n<p>\\r\\n\\t\\r\\n</p>\\r\\n<p>\\r\\n\\t<br />\\r\\n</p>\\r\\n\\t\\t\\t\";\n        Product e = new Product();\n        e.setIntro(text);\n        byte[] r = JSON.toJSONBytes(e);\n        JSON.parseObject(r, Product.class);\n    }\n\n    public static class Product implements Serializable {\n\n        private static final long serialVersionUID = 5515785177596600948L;\n\n        private String            studyTargets;\n\n        private String            applicableUsers;\n\n        private String            intro;\n\n        private Date              createDateTime;\n\n        private int               createUserId;\n\n        private int               liveStatus;\n\n        public String getStudyTargets() {\n            return studyTargets;\n        }\n\n        public void setStudyTargets(String studyTargets) {\n            this.studyTargets = studyTargets;\n        }\n\n        public String getApplicableUsers() {\n            return applicableUsers;\n        }\n\n        public void setApplicableUsers(String applicableUsers) {\n            this.applicableUsers = applicableUsers;\n        }\n\n        public String getIntro() {\n            return intro;\n        }\n\n        public void setIntro(String intro) {\n            this.intro = intro;\n        }\n\n        public int getCreateUserId() {\n            return createUserId;\n        }\n\n        public void setCreateUserId(int createUserId) {\n            this.createUserId = createUserId;\n        }\n\n        public int getLiveStatus() {\n            return liveStatus;\n        }\n\n        public void setLiveStatus(int liveStatus) {\n            this.liveStatus = liveStatus;\n        }\n\n        public Date getCreateDateTime() {\n            return createDateTime;\n        }\n\n        public void setCreateDateTime(Date createDateTime) {\n            this.createDateTime = createDateTime;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONArrayTest.java",
    "content": "/*\r\n * Copyright 1999-2017 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.json.bvt;\r\n\r\nimport java.io.StringWriter;\r\nimport java.math.BigDecimal;\r\nimport java.util.ArrayList;\r\nimport java.util.Arrays;\r\nimport java.util.Collections;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.ListIterator;\r\nimport java.util.concurrent.atomic.AtomicInteger;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONArray;\r\nimport com.alibaba.fastjson.JSONObject;\r\n\r\npublic class JSONArrayTest extends TestCase {\r\n\r\n    public void test_toString() throws Exception {\r\n        StringWriter out = new StringWriter();\r\n        new JSONArray().writeJSONString(out);\r\n        Assert.assertEquals(\"[]\", out.toString());\r\n        Assert.assertEquals(\"[]\", new JSONArray().toString());\r\n    }\r\n\r\n    public void test_toJSONString() throws Exception {\r\n        Assert.assertEquals(\"null\", JSONArray.toJSONString(null));\r\n        Assert.assertEquals(\"[null]\", JSONArray.toJSONString(Collections.singletonList(null)));\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        JSONArray array = new JSONArray(3);\r\n        Assert.assertEquals(true, array.isEmpty());\r\n        array.add(1);\r\n        Assert.assertEquals(false, array.isEmpty());\r\n        Assert.assertEquals(true, array.contains(1));\r\n        Assert.assertEquals(1, array.toArray()[0]);\r\n        {\r\n            Object[] items = new Object[1];\r\n            array.toArray(items);\r\n            Assert.assertEquals(1, items[0]);\r\n        }\r\n        Assert.assertEquals(true, array.containsAll(Collections.singletonList(1)));\r\n        Assert.assertEquals(true, array.remove(Integer.valueOf(1)));\r\n        Assert.assertEquals(true, array.isEmpty());\r\n        array.addAll(Collections.singletonList(1));\r\n        Assert.assertEquals(1, array.size());\r\n        array.removeAll(Collections.singletonList(1));\r\n        Assert.assertEquals(0, array.size());\r\n        array.addAll(0, Arrays.asList(1, 2, 3));\r\n        Assert.assertEquals(3, array.size());\r\n        array.clear();\r\n        array.addAll(0, Arrays.asList(1, 2, 3));\r\n        Assert.assertEquals(true, array.retainAll(Arrays.asList(1, 2)));\r\n        Assert.assertEquals(2, array.size());\r\n        Assert.assertEquals(true, array.retainAll(Arrays.asList(2, 4)));\r\n        Assert.assertEquals(1, array.size());\r\n        array.set(0, 4);\r\n        Assert.assertEquals(4, array.toArray()[0]);\r\n        array.add(0, 4);\r\n        Assert.assertEquals(4, array.toArray()[0]);\r\n        array.remove(0);\r\n        array.remove(0);\r\n        Assert.assertEquals(0, array.size());\r\n        array.addAll(Arrays.asList(1, 2, 3, 4, 5, 4, 3));\r\n        Assert.assertEquals(2, array.indexOf(3));\r\n        Assert.assertEquals(6, array.lastIndexOf(3));\r\n        {\r\n            AtomicInteger count = new AtomicInteger();\r\n            for (ListIterator<Object> iter = array.listIterator(); iter.hasNext(); iter.next()) {\r\n                count.incrementAndGet();\r\n            }\r\n            Assert.assertEquals(7, count.get());\r\n        }\r\n        {\r\n            AtomicInteger count = new AtomicInteger();\r\n            for (ListIterator<Object> iter = array.listIterator(2); iter.hasNext(); iter.next()) {\r\n                count.incrementAndGet();\r\n            }\r\n            Assert.assertEquals(5, count.get());\r\n        }\r\n        {\r\n            Assert.assertEquals(2, array.subList(2, 4).size());\r\n        }\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        JSONArray array = new JSONArray();\r\n        array.add(123);\r\n        array.add(\"222\");\r\n        array.add(3);\r\n        array.add(true);\r\n        array.add(\"true\");\r\n        array.add(null);\r\n\r\n        Assert.assertEquals(123, array.getByte(0).byteValue());\r\n        Assert.assertEquals(123, array.getByteValue(0));\r\n\r\n        Assert.assertEquals(123, array.getShort(0).shortValue());\r\n        Assert.assertEquals(123, array.getShortValue(0));\r\n\r\n        Assert.assertTrue(123F == array.getFloat(0).floatValue());\r\n        Assert.assertTrue(123F == array.getFloatValue(0));\r\n\r\n        Assert.assertTrue(123D == array.getDouble(0).doubleValue());\r\n        Assert.assertTrue(123D == array.getDoubleValue(0));\r\n\r\n        Assert.assertEquals(123, array.getIntValue(0));\r\n        Assert.assertEquals(123, array.getLongValue(0));\r\n        Assert.assertEquals(new BigDecimal(\"123\"), array.getBigDecimal(0));\r\n\r\n        Assert.assertEquals(222, array.getIntValue(1));\r\n        Assert.assertEquals(new Integer(222), array.getInteger(1));\r\n        Assert.assertEquals(new Long(222), array.getLong(1));\r\n        Assert.assertEquals(new BigDecimal(\"222\"), array.getBigDecimal(1));\r\n\r\n        Assert.assertEquals(true, array.getBooleanValue(4));\r\n        Assert.assertEquals(Boolean.TRUE, array.getBoolean(4));\r\n\r\n        Assert.assertEquals(0, array.getIntValue(5));\r\n        Assert.assertEquals(0, array.getLongValue(5));\r\n        Assert.assertEquals(null, array.getInteger(5));\r\n        Assert.assertEquals(null, array.getLong(5));\r\n        Assert.assertEquals(null, array.getBigDecimal(5));\r\n        Assert.assertEquals(null, array.getBoolean(5));\r\n        Assert.assertEquals(false, array.getBooleanValue(5));\r\n    }\r\n\r\n    public void test_getObject_null() throws Exception {\r\n        JSONArray array = new JSONArray();\r\n        array.add(null);\r\n\r\n        Assert.assertTrue(array.getJSONObject(0) == null);\r\n    }\r\n\r\n    public void test_getObject() throws Exception {\r\n        JSONArray array = new JSONArray();\r\n        array.add(new JSONObject());\r\n\r\n        Assert.assertEquals(0, array.getJSONObject(0).size());\r\n    }\r\n\r\n    public void test_getObject_map() throws Exception {\r\n        JSONArray array = new JSONArray();\r\n        array.add(new HashMap());\r\n\r\n        Assert.assertEquals(0, array.getJSONObject(0).size());\r\n    }\r\n\r\n    public void test_getArray() throws Exception {\r\n        JSONArray array = new JSONArray();\r\n        array.add(new ArrayList());\r\n\r\n        Assert.assertEquals(0, array.getJSONArray(0).size());\r\n    }\r\n\r\n    public void test_getArray_1() throws Exception {\r\n        JSONArray array = new JSONArray();\r\n        array.add(new JSONArray());\r\n\r\n        Assert.assertEquals(0, array.getJSONArray(0).size());\r\n    }\r\n\r\n    public void test_constructor() throws Exception {\r\n        List<Object> list = new ArrayList();\r\n        JSONArray array = new JSONArray(list);\r\n        array.add(3);\r\n        Assert.assertEquals(1, list.size());\r\n        Assert.assertEquals(3, list.get(0));\r\n    }\r\n\r\n    public void test_getJavaBean() throws Exception {\r\n        JSONArray array = JSON.parseArray(\"[{id:123, name:'aaa'}]\");\r\n        Assert.assertEquals(1, array.size());\r\n        Assert.assertEquals(123, array.getObject(0, User.class).getId());\r\n    }\r\n\r\n    public static class User {\r\n\r\n        private long   id;\r\n        private String name;\r\n\r\n        public long getId() {\r\n            return id;\r\n        }\r\n\r\n        public void setId(long id) {\r\n            this.id = id;\r\n        }\r\n\r\n        public String getName() {\r\n            return name;\r\n        }\r\n\r\n        public void setName(String name) {\r\n            this.name = name;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONArrayTest2.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.math.BigInteger;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSONArray;\r\n\r\npublic class JSONArrayTest2 extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        long time = System.currentTimeMillis();\r\n        JSONArray array = new JSONArray();\r\n        array.add(null);\r\n        array.add(1);\r\n        array.add(time);\r\n        Assert.assertEquals(0, array.getByteValue(0));\r\n        Assert.assertEquals(0, array.getShortValue(0));\r\n        Assert.assertTrue(0F == array.getFloatValue(0));\r\n        Assert.assertTrue(0D == array.getDoubleValue(0));\r\n        Assert.assertEquals(new BigInteger(\"1\"), array.getBigInteger(1));\r\n        Assert.assertEquals(\"1\", array.getString(1));\r\n        Assert.assertEquals(new java.util.Date(time), array.getDate(2));\r\n        Assert.assertEquals(new java.sql.Date(time), array.getSqlDate(2));\r\n        Assert.assertEquals(new java.sql.Timestamp(time), array.getTimestamp(2));\r\n\r\n        JSONArray array2 = (JSONArray) array.clone();\r\n        Assert.assertEquals(0, array2.getByteValue(0));\r\n        Assert.assertEquals(0, array2.getShortValue(0));\r\n        Assert.assertTrue(0F == array2.getFloatValue(0));\r\n        Assert.assertTrue(0D == array2.getDoubleValue(0));\r\n        Assert.assertEquals(new BigInteger(\"1\"), array2.getBigInteger(1));\r\n        Assert.assertEquals(\"1\", array2.getString(1));\r\n        Assert.assertEquals(new java.util.Date(time), array2.getDate(2));\r\n        Assert.assertEquals(new java.sql.Date(time), array2.getSqlDate(2));\r\n        Assert.assertEquals(new java.sql.Timestamp(time), array2.getTimestamp(2));\r\n        Assert.assertEquals(array2.size(), array2.size());\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONArrayTest3.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.Arrays;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONArray;\n\nimport junit.framework.TestCase;\n\npublic class JSONArrayTest3 extends TestCase {\n    public void test_0() throws Exception {\n        JSONArray array = new JSONArray();\n        array.set(1, \"1001\");\n        Assert.assertEquals(2, array.size());\n        Assert.assertNull(array.get(0));\n        Assert.assertEquals(\"1001\", array.get(1));\n        \n        array.clear();\n        Assert.assertEquals(0, array.size());\n        \n        array.set(-1, \"1001\");\n        Assert.assertEquals(1, array.size());\n        Assert.assertEquals(\"1001\", array.get(0));\n        \n        array.fluentAdd(\"1002\").fluentClear();\n        Assert.assertEquals(0, array.size());\n        \n        array.fluentAdd(\"1002\").fluentRemove(\"1002\");\n        Assert.assertEquals(0, array.size());\n        \n        array.fluentAdd(\"1002\").fluentRemove(0);\n        Assert.assertEquals(0, array.size());\n        \n        array.fluentSet(1, \"1001\");\n        Assert.assertEquals(2, array.size());\n        Assert.assertNull(array.get(0));\n        Assert.assertEquals(\"1001\", array.get(1));\n\n        array.fluentRemoveAll(Arrays.asList(null, \"1001\"));\n        Assert.assertEquals(0, array.size());\n        \n        array.fluentAddAll(Arrays.asList(\"1001\", \"1002\", \"1003\"));\n        Assert.assertEquals(3, array.size());\n        \n        array.retainAll(Arrays.asList(\"1002\", \"1004\"));\n        Assert.assertEquals(1, array.size());\n        Assert.assertEquals(\"1002\", array.get(0));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONArrayTest_hashCode.java",
    "content": "package com.alibaba.json.bvt;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\n\npublic class JSONArrayTest_hashCode extends TestCase {\n\n    public void test_hashCode() throws Exception {\n        Assert.assertEquals(new JSONArray().hashCode(), new JSONArray().hashCode());\n    }\n\n    public void test_hashCode_1() throws Exception {\n        Assert.assertEquals(JSON.parseArray(\"[]\"), JSON.parseArray(\"[]\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONBytesTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class JSONBytesTest extends TestCase {\n\n    public void test_codec() throws Exception {\n        int len = (Character.MAX_VALUE - Character.MIN_VALUE) + 1;\n        char[] chars = new char[len];\n        for (int i = 0; i < len; ++i) {\n            char ch = (char) ((int) Character.MAX_VALUE + i);\n            if (ch >= 55296 && ch <= 57344) {\n                continue;\n            }\n            chars[i] = ch;\n        }\n        \n        String text = new String(chars);\n        \n        byte[] bytes = JSON.toJSONBytes(text);\n        String text2 = (String) JSON.parse(bytes);\n        \n        Assert.assertEquals(text.length(), text2.length());\n        for (int i = 0; i < len; ++i) {\n            char c1 = text.charAt(i);\n            char c2 = text2.charAt(i);\n            \n            Assert.assertEquals(c1, c2);\n        }\n    }\n    \n    \n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONBytesTest2.java",
    "content": "package com.alibaba.json.bvt;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class JSONBytesTest2 extends TestCase {\n\n    public void test_codec() throws Exception {\n        String text=\"𠜎𠜱𠝹𠱓𠱸𠲖𠳏𠳕𠴕𠵼𠵿𠸎𠸏𠹷𠺝𠺢𠻗𠻹𠻺𠼭𠼮𠽌𠾴𠾼𠿪𡁜𡁯𡁵𡁶𡁻𡃁𡃉𡇙𢃇𢞵𢫕𢭃𢯊𢱑𢱕𢳂𢴈𢵌𢵧𢺳𣲷𤓓𤶸𤷪𥄫𦉘𦟌𦧲𦧺𧨾𨅝𨈇𨋢𨳊𨳍𨳒𩶘\";\n\n        byte[] bytes = JSON.toJSONBytes(text);\n        String text2 = (String) JSON.parse(bytes);\n\n        Assert.assertEquals(text.length(), text2.length());\n        for (int i = 0; i < text.length(); ++i) {\n            char c1 = text.charAt(i);\n            char c2 = text2.charAt(i);\n\n            Assert.assertEquals(c1, c2);\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONBytesTest3.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.nio.charset.Charset;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class JSONBytesTest3 extends TestCase {\n\n    public void test_codec() throws Exception {\n        Model model = new Model();\n        model.value = \"𠜎𠜱𠝹𠱓𠱸𠲖𠳏𠳕𠴕𠵼𠵿𠸎𠸏𠹷𠺝𠺢𠻗𠻹𠻺𠼭𠼮𠽌𠾴𠾼𠿪𡁜𡁯𡁵𡁶𡁻𡃁𡃉𡇙𢃇𢞵𢫕𢭃𢯊𢱑𢱕𢳂𢴈𢵌𢵧𢺳𣲷𤓓𤶸𤷪𥄫𦉘𦟌𦧲𦧺𧨾𨅝𨈇𨋢𨳊𨳍𨳒𩶘\";\n\n        byte[] bytes = JSON.toJSONBytes(model);\n        Model model2 = JSON.parseObject(bytes, 0, bytes.length, Charset.forName(\"UTF8\").newDecoder(), Model.class);\n\n        Assert.assertEquals(model.value.length(), model2.value.length());\n        for (int i = 0; i < model.value.length(); ++i) {\n            char c1 = model.value.charAt(i);\n            char c2 = model2.value.charAt(i);\n\n            Assert.assertEquals(c1, c2);\n        }\n    }\n\n    public static class Model {\n        public String value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONExceptionTest.java",
    "content": "/*\r\n * Copyright 1999-2017 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSONException;\r\n\r\npublic class JSONExceptionTest extends TestCase {\r\n\r\n    public void test_all() throws Exception {\r\n        Assert.assertEquals(\"xxx\", new JSONException(\"xxx\").getMessage());\r\n        Assert.assertEquals(null, new JSONException().getMessage());\r\n        Assert.assertEquals(\"xxx\", new JSONException(\"xxx\", new RuntimeException()).getMessage());\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONFeidDemo2.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class JSONFeidDemo2 extends TestCase {\n\n\tpublic void test_0() throws Exception {\n\t\tZ_OA_MM_PR_INFO_IN in = new Z_OA_MM_PR_INFO_IN();\n\t\tin.setIM_PREQ_NO(\"111111\");\n\t\tTB_PR_INFO t1 = new TB_PR_INFO(\"t1\");\n\t\tTB_PR_INFO t2 = new TB_PR_INFO(\"t2\");\n\t\tList<TB_PR_INFO> tb_pr_infos = new ArrayList<TB_PR_INFO>();\n\t\ttb_pr_infos.add(t1);\n\t\ttb_pr_infos.add(t2);\n\t\tin.setTB_PR_INFO(tb_pr_infos);\n\n\t\tString text = JSON.toJSONString(in);\n\t\tSystem.out.println(text);\n\n\t\tassertEquals(\n\t\t\t\t\"{\\\"IM_PREQ_NO\\\":\\\"111111\\\",\\\"TB_PR_INFO\\\":[{\\\"PREQ_NO\\\":\\\"t1\\\"},{\\\"PREQ_NO\\\":\\\"t2\\\"}]}\",\n\t\t\t\ttext);\n\n\t}\n\n\tpublic void test_1() throws Exception {\n\t\tString text = \"{\\\"IM_PREQ_NO\\\":\\\"111111\\\",\\\"TB_PR_INFO\\\":[{\\\"pREQ_NO\\\":\\\"t1\\\"},{\\\"pREQ_NO\\\":\\\"t2\\\"}]}\";\n\t\tZ_OA_MM_PR_INFO_IN in = JSON\n\t\t\t\t.parseObject(text, Z_OA_MM_PR_INFO_IN.class);\n\t\tassertEquals(\"111111\", in.getIM_PREQ_NO());\n\t\tassertNotNull(in.getTB_PR_INFO());\n\n\t}\n\n\tpublic static class Z_OA_MM_PR_INFO_IN {\n\t\t@JSONField(name = \"IM_PREQ_NO\")\n\t\tprivate String IM_PREQ_NO;\n\t\t@JSONField(name = \"TB_PR_INFO\")\n\t\tprivate List<TB_PR_INFO> TB_PR_INFO;\n\n\t\tpublic List<JSONFeidDemo2.TB_PR_INFO> getTB_PR_INFO() {\n\t\t\treturn TB_PR_INFO;\n\t\t}\n\n\t\tpublic void setTB_PR_INFO(List<JSONFeidDemo2.TB_PR_INFO> TB_PR_INFO) {\n\t\t\tthis.TB_PR_INFO = TB_PR_INFO;\n\t\t}\n\n\t\tpublic String getIM_PREQ_NO() {\n\t\t\treturn IM_PREQ_NO;\n\t\t}\n\n\t\tpublic void setIM_PREQ_NO(String IM_PREQ_NO) {\n\t\t\tthis.IM_PREQ_NO = IM_PREQ_NO;\n\t\t}\n\t}\n\n\tpublic static class TB_PR_INFO {\n\t\t@JSONField(name = \"PREQ_NO\")\n\t\tprivate String PREQ_NO;\n\n\t\tpublic TB_PR_INFO() {\n\t\t}\n\n\t\tpublic TB_PR_INFO(String PREQ_NO) {\n\t\t\tthis.PREQ_NO = PREQ_NO;\n\t\t}\n\t\t@JSONField(name = \"PREQ_NO\")\n\t\tpublic String getPREQ_NO() {\n\t\t\treturn PREQ_NO;\n\t\t}\n\n\t\tpublic void setPREQ_NO(String PREQ_NO) {\n\t\t\tthis.PREQ_NO = PREQ_NO;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONFieldDefaultValueTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\npublic class JSONFieldDefaultValueTest extends TestCase {\n\tpublic void test_default_value() throws Exception {\n\t\tModel m = new Model();\n\t\tString s = JSON.toJSONString(m);\n\t\tSystem.out.println(s);\n\t\tModel m2 = JSON.parseObject(s, Model.class);\n\t\tassertEquals(\"string\", m2.getString());\n\t\tassertEquals(false, m2.getaBoolean());\n\t\tassertEquals(true, m2.getaBoolean2().booleanValue());\n\t\tassertEquals(0, m2.getAnInt());\n\t\tassertEquals(888, m2.getInteger().intValue());\n\t\tassertEquals(0, m2.getaShort());\n\t\tassertEquals(88, m2.getaShort2().shortValue());\n\t\tassertEquals('\\u0000', m2.getaChar());\n\t\tassertEquals('J', m2.getCharacter().charValue());\n\t\tassertEquals(0, m2.getaByte());\n\t\tassertEquals(8, m2.getaByte2().byteValue());\n\t\tassertEquals(0, m2.getaLong());\n\t\tassertEquals(8888, m2.getaLong2().longValue());\n\t\tassertEquals(\"0.0\", \"\" + m2.getaFloat());\n\t\tassertEquals(\"8.8\", \"\" + m2.getaFloat2());\n\t\tassertEquals(\"0.0\", \"\" + m2.getaDouble());\n\t\tassertEquals(\"88.88\", \"\" + m2.getaDouble2());\n\t}\n\n\tpublic void test_not_null() throws Exception {\n\t\tModel m = new Model(\"test\", true, 888, (short)88, 'J', (byte)8, 8888L, 8.8F, 88.88, false, 999, (short)99, 'C', (byte)9, 9999L, 9.9F, 99.99);\n\t\tString s = JSON.toJSONString(m);\n\t\tSystem.out.println(s);\n\t\tModel m2 = JSON.parseObject(s, Model.class);\n\t\tassertEquals(\"test\", m2.getString());\n\t\tassertEquals(true, m2.getaBoolean());\n\t\tassertEquals(false, m2.getaBoolean2().booleanValue());\n\t\tassertEquals(888, m2.getAnInt());\n\t\tassertEquals(999, m2.getInteger().intValue());\n\t\tassertEquals(88, m2.getaShort());\n\t\tassertEquals(99, m2.getaShort2().shortValue());\n\t\tassertEquals('J', m2.getaChar());\n\t\tassertEquals('C', m2.getCharacter().charValue());\n\t\tassertEquals(8, m2.getaByte());\n\t\tassertEquals(9, m2.getaByte2().byteValue());\n\t\tassertEquals(8888, m2.getaLong());\n\t\tassertEquals(9999, m2.getaLong2().longValue());\n\t\tassertEquals(\"8.8\", \"\" + m2.getaFloat());\n\t\tassertEquals(\"9.9\", \"\" + m2.getaFloat2());\n\t\tassertEquals(\"88.88\", \"\" + m2.getaDouble());\n\t\tassertEquals(\"99.99\", \"\" + m2.getaDouble2());\n\t}\n\n\tpublic static class Model {\n\t\t@JSONField(defaultValue = \"string\")\n\t\tprivate String string;\n\n\t\t@JSONField(defaultValue = \"true\") //shouldn't work\n\t\tprivate boolean aBoolean;\n\t\t@JSONField(defaultValue = \"888\") //shouldn't work\n\t\tprivate int anInt;\n\t\t@JSONField(defaultValue = \"88\") //shouldn't work\n\t\tprivate short aShort;\n\t\t@JSONField(defaultValue = \"J\") //shouldn't work\n\t\tprivate char aChar;\n\t\t@JSONField(defaultValue = \"8\") //shouldn't work\n\t\tprivate byte aByte;\n\t\t@JSONField(defaultValue = \"8888\") //shouldn't work\n\t\tprivate long aLong;\n\t\t@JSONField(defaultValue = \"8.8\") //shouldn't work\n\t\tprivate float aFloat;\n\t\t@JSONField(defaultValue = \"88.88\") //shouldn't work\n\t\tprivate double aDouble;\n\n\t\t@JSONField(defaultValue = \"true\")\n\t\tprivate Boolean aBoolean2;\n\t\t@JSONField(defaultValue = \"888\")\n\t\tprivate Integer integer;\n\t\t@JSONField(defaultValue = \"88\")\n\t\tprivate Short aShort2;\n\t\t@JSONField(defaultValue = \"J\")\n\t\tprivate Character character;\n\t\t@JSONField(defaultValue = \"8\")\n\t\tprivate Byte aByte2;\n\t\t@JSONField(defaultValue = \"8888\")\n\t\tprivate Long aLong2;\n\t\t@JSONField(defaultValue = \"8.8\")\n\t\tprivate Float aFloat2;\n\t\t@JSONField(defaultValue = \"88.88\")\n\t\tprivate Double aDouble2;\n\n\t\tpublic Model(String string, boolean aBoolean, int anInt, short aShort, char aChar,\n\t\t\t\t\t byte aByte, long aLong, float aFloat, double aDouble,\n\t\t\t\t\t Boolean aBoolean2, Integer integer, Short aShort2, Character character,\n\t\t\t\t\t Byte aByte2, Long aLong2, Float aFloat2, Double aDouble2) {\n\t\t\tthis.string = string;\n\t\t\tthis.aBoolean = aBoolean;\n\t\t\tthis.anInt = anInt;\n\t\t\tthis.aShort = aShort;\n\t\t\tthis.aChar = aChar;\n\t\t\tthis.aByte = aByte;\n\t\t\tthis.aLong = aLong;\n\t\t\tthis.aFloat = aFloat;\n\t\t\tthis.aDouble = aDouble;\n\t\t\tthis.aBoolean2 = aBoolean2;\n\t\t\tthis.integer = integer;\n\t\t\tthis.aShort2 = aShort2;\n\t\t\tthis.character = character;\n\t\t\tthis.aByte2 = aByte2;\n\t\t\tthis.aLong2 = aLong2;\n\t\t\tthis.aFloat2 = aFloat2;\n\t\t\tthis.aDouble2 = aDouble2;\n\t\t}\n\n\t\tpublic Model() {\n\t\t}\n\n\t\tpublic String getString() {\n\t\t\treturn string;\n\t\t}\n\n\t\tpublic void setString(String string) {\n\t\t\tthis.string = string;\n\t\t}\n\n\t\tpublic boolean getaBoolean() {\n\t\t\treturn aBoolean;\n\t\t}\n\n\t\tpublic void setaBoolean(boolean aBoolean) {\n\t\t\tthis.aBoolean = aBoolean;\n\t\t}\n\n\t\tpublic int getAnInt() {\n\t\t\treturn anInt;\n\t\t}\n\n\t\tpublic void setAnInt(int anInt) {\n\t\t\tthis.anInt = anInt;\n\t\t}\n\n\t\tpublic short getaShort() {\n\t\t\treturn aShort;\n\t\t}\n\n\t\tpublic void setaShort(short aShort) {\n\t\t\tthis.aShort = aShort;\n\t\t}\n\n\t\tpublic char getaChar() {\n\t\t\treturn aChar;\n\t\t}\n\n\t\tpublic void setaChar(char aChar) {\n\t\t\tthis.aChar = aChar;\n\t\t}\n\n\t\tpublic byte getaByte() {\n\t\t\treturn aByte;\n\t\t}\n\n\t\tpublic void setaByte(byte aByte) {\n\t\t\tthis.aByte = aByte;\n\t\t}\n\n\t\tpublic long getaLong() {\n\t\t\treturn aLong;\n\t\t}\n\n\t\tpublic void setaLong(long aLong) {\n\t\t\tthis.aLong = aLong;\n\t\t}\n\n\t\tpublic float getaFloat() {\n\t\t\treturn aFloat;\n\t\t}\n\n\t\tpublic void setaFloat(float aFloat) {\n\t\t\tthis.aFloat = aFloat;\n\t\t}\n\n\t\tpublic double getaDouble() {\n\t\t\treturn aDouble;\n\t\t}\n\n\t\tpublic void setaDouble(double aDouble) {\n\t\t\tthis.aDouble = aDouble;\n\t\t}\n\n\t\tpublic Boolean getaBoolean2() {\n\t\t\treturn aBoolean2;\n\t\t}\n\n\t\tpublic void setaBoolean2(Boolean aBoolean2) {\n\t\t\tthis.aBoolean2 = aBoolean2;\n\t\t}\n\n\t\tpublic Integer getInteger() {\n\t\t\treturn integer;\n\t\t}\n\n\t\tpublic void setInteger(Integer integer) {\n\t\t\tthis.integer = integer;\n\t\t}\n\n\t\tpublic Short getaShort2() {\n\t\t\treturn aShort2;\n\t\t}\n\n\t\tpublic void setaShort2(Short aShort2) {\n\t\t\tthis.aShort2 = aShort2;\n\t\t}\n\n\t\tpublic Character getCharacter() {\n\t\t\treturn character;\n\t\t}\n\n\t\tpublic void setCharacter(Character character) {\n\t\t\tthis.character = character;\n\t\t}\n\n\t\tpublic Byte getaByte2() {\n\t\t\treturn aByte2;\n\t\t}\n\n\t\tpublic void setaByte2(Byte aByte2) {\n\t\t\tthis.aByte2 = aByte2;\n\t\t}\n\n\t\tpublic Long getaLong2() {\n\t\t\treturn aLong2;\n\t\t}\n\n\t\tpublic void setaLong2(Long aLong2) {\n\t\t\tthis.aLong2 = aLong2;\n\t\t}\n\n\t\tpublic Float getaFloat2() {\n\t\t\treturn aFloat2;\n\t\t}\n\n\t\tpublic void setaFloat2(Float aFloat2) {\n\t\t\tthis.aFloat2 = aFloat2;\n\t\t}\n\n\t\tpublic Double getaDouble2() {\n\t\t\treturn aDouble2;\n\t\t}\n\n\t\tpublic void setaDouble2(Double aDouble2) {\n\t\t\tthis.aDouble2 = aDouble2;\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONFieldTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\n\npublic class JSONFieldTest extends TestCase {\n    \n    public void test_field() throws Exception {\n        Demo demo = new Demo();\n        demo.setId(1009);\n        demo.setName(\"IT\");\n        demo.setAge(30);\n        System.out.println(JSON.toJSON(demo));\n    }\n\n    public static class Demo {\n        private int id;\n\n        @JSONField(serialize = false)\n        private String name;\n\n        private int age;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public int getAge() {\n            return age;\n        }\n\n        public void setAge(int age) {\n            this.age = age;\n        }\n\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONFromObjectTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONArray;\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.JSONObject;\r\n\r\npublic class JSONFromObjectTest extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        User user = new User();\r\n        user.setId(3);\r\n        user.setName(\"周访\");\r\n\r\n        JSONObject json = (JSONObject) JSON.toJSON(user);\r\n\r\n        Assert.assertEquals(new Long(3), json.getLong(\"id\"));\r\n        Assert.assertEquals(\"周访\", json.getString(\"name\"));\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        JSONObject user = new JSONObject();\r\n        user.put(\"id\", 3);\r\n        user.put(\"name\", \"周访\");\r\n\r\n        JSONObject json = (JSONObject) JSON.toJSON(user);\r\n\r\n        Assert.assertEquals(new Long(3), json.getLong(\"id\"));\r\n        Assert.assertEquals(\"周访\", json.getString(\"name\"));\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        HashMap user = new HashMap();\r\n        user.put(\"id\", 3);\r\n        user.put(\"name\", \"周访\");\r\n\r\n        JSONObject json = (JSONObject) JSON.toJSON(user);\r\n\r\n        Assert.assertEquals(new Long(3), json.getLong(\"id\"));\r\n        Assert.assertEquals(\"周访\", json.getString(\"name\"));\r\n    }\r\n\r\n    public void test_3() throws Exception {\r\n        List users = new ArrayList();\r\n        HashMap user = new HashMap();\r\n        user.put(\"id\", 3);\r\n        user.put(\"name\", \"周访\");\r\n        users.add(user);\r\n\r\n        JSONArray array = (JSONArray) JSON.toJSON(users);\r\n        JSONObject json = array.getJSONObject(0);\r\n\r\n        Assert.assertEquals(new Long(3), json.getLong(\"id\"));\r\n        Assert.assertEquals(\"周访\", json.getString(\"name\"));\r\n    }\r\n\r\n    public void test_error() throws Exception {\r\n        C c = new C();\r\n\r\n        JSONException error = null;\r\n        try {\r\n            JSON.toJSON(c);\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public static class User {\r\n\r\n        private long   id;\r\n        private String name;\r\n\r\n        public long getId() {\r\n            return id;\r\n        }\r\n\r\n        public void setId(long id) {\r\n            this.id = id;\r\n        }\r\n\r\n        public String getName() {\r\n            return name;\r\n        }\r\n\r\n        public void setName(String name) {\r\n            this.name = name;\r\n        }\r\n\r\n    }\r\n\r\n    public static class C {\r\n\r\n        public int getId() {\r\n            throw new UnsupportedOperationException();\r\n        }\r\n\r\n        public void setId(int id) {\r\n            throw new UnsupportedOperationException();\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONObjectFluentTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.Collections;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class JSONObjectFluentTest extends TestCase {\n\n    public void test_fluent() throws Exception {\n        JSONObject object = new JSONObject() //\n                                             .fluentPut(\"1\", 1001) //\n                                             .fluentPut(\"2\", 1002);\n\n        Assert.assertEquals(2, object.size());\n\n        object.fluentPutAll(Collections.singletonMap(\"3\", 1003)) //\n              .fluentPutAll(Collections.singletonMap(\"4\", 1004));\n\n        Assert.assertEquals(4, object.size());\n\n        object.fluentRemove(\"1\") //\n              .fluentRemove(\"2\");\n        \n        Assert.assertEquals(2, object.size());\n        \n        object.fluentClear().fluentClear();\n        \n        Assert.assertEquals(0, object.size());\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONObjectTest.java",
    "content": "/*\r\n * Copyright 1999-2017 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.json.bvt;\r\n\r\nimport java.io.StringWriter;\r\nimport java.math.BigDecimal;\r\nimport java.util.Collections;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSONObject;\r\n\r\npublic class JSONObjectTest extends TestCase {\r\n\r\n    public void test_toJSONObject() throws Exception {\r\n        {\r\n            Assert.assertNull(JSONObject.parse(null));\r\n        }\r\n    }\r\n\r\n    public void test_writeJSONString() throws Exception {\r\n        {\r\n            StringWriter out = new StringWriter();\r\n            new JSONObject().writeJSONString(out);\r\n            Assert.assertEquals(\"{}\", out.toString());\r\n        }\r\n    }\r\n\r\n    public void test_getLong() throws Exception {\r\n        JSONObject json = new JSONObject(true);\r\n        json.put(\"A\", 55L);\r\n        json.put(\"B\", 55);\r\n        json.put(\"K\", true);\r\n        Assert.assertEquals(json.getLong(\"A\").longValue(), 55L);\r\n        Assert.assertEquals(json.getLong(\"B\").longValue(), 55L);\r\n        Assert.assertEquals(json.getLong(\"C\"), null);\r\n        Assert.assertEquals(json.getBooleanValue(\"K\"), true);\r\n        Assert.assertEquals(json.getBoolean(\"K\"), Boolean.TRUE);\r\n    }\r\n\r\n    public void test_getLong_1() throws Exception {\r\n        JSONObject json = new JSONObject(false);\r\n        json.put(\"A\", 55L);\r\n        json.put(\"B\", 55);\r\n        Assert.assertEquals(json.getLong(\"A\").longValue(), 55L);\r\n        Assert.assertEquals(json.getLong(\"B\").longValue(), 55L);\r\n        Assert.assertEquals(json.getLong(\"C\"), null);\r\n    }\r\n\r\n    public void test_getDate() throws Exception {\r\n        long currentTimeMillis = System.currentTimeMillis();\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"A\", new Date(currentTimeMillis));\r\n        json.put(\"B\", currentTimeMillis);\r\n        Assert.assertEquals(json.getDate(\"A\").getTime(), currentTimeMillis);\r\n        Assert.assertEquals(json.getDate(\"B\").getTime(), currentTimeMillis);\r\n        Assert.assertEquals(json.getLong(\"C\"), null);\r\n    }\r\n\r\n    public void test_getBoolean() throws Exception {\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"A\", true);\r\n        Assert.assertEquals(json.getBoolean(\"A\").booleanValue(), true);\r\n        Assert.assertEquals(json.getLong(\"C\"), null);\r\n    }\r\n\r\n    public void test_getInt() throws Exception {\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"A\", 55L);\r\n        json.put(\"B\", 55);\r\n        Assert.assertEquals(json.getInteger(\"A\").intValue(), 55);\r\n        Assert.assertEquals(json.getInteger(\"B\").intValue(), 55);\r\n        Assert.assertEquals(json.getInteger(\"C\"), null);\r\n    }\r\n\r\n    public void test_order() throws Exception {\r\n        JSONObject json = new JSONObject(true);\r\n        json.put(\"C\", 55L);\r\n        json.put(\"B\", 55);\r\n        json.put(\"A\", 55);\r\n        Assert.assertEquals(\"C\", json.keySet().toArray()[0]);\r\n        Assert.assertEquals(\"B\", json.keySet().toArray()[1]);\r\n        Assert.assertEquals(\"A\", json.keySet().toArray()[2]);\r\n\r\n        Assert.assertEquals(0, json.getIntValue(\"D\"));\r\n        Assert.assertEquals(0L, json.getLongValue(\"D\"));\r\n        Assert.assertEquals(false, json.getBooleanValue(\"D\"));\r\n    }\r\n\r\n    public void test_all() throws Exception {\r\n        JSONObject json = new JSONObject();\r\n        Assert.assertEquals(true, json.isEmpty());\r\n        json.put(\"C\", 51L);\r\n        json.put(\"B\", 52);\r\n        json.put(\"A\", 53);\r\n        Assert.assertEquals(false, json.isEmpty());\r\n        Assert.assertEquals(true, json.containsKey(\"C\"));\r\n        Assert.assertEquals(false, json.containsKey(\"D\"));\r\n        Assert.assertEquals(true, json.containsValue(52));\r\n        Assert.assertEquals(false, json.containsValue(33));\r\n        Assert.assertEquals(null, json.remove(\"D\"));\r\n        Assert.assertEquals(51L, json.remove(\"C\"));\r\n        Assert.assertEquals(2, json.keySet().size());\r\n        Assert.assertEquals(2, json.values().size());\r\n        Assert.assertEquals(new BigDecimal(\"53\"), json.getBigDecimal(\"A\"));\r\n\r\n        json.putAll(Collections.singletonMap(\"E\", 99));\r\n        Assert.assertEquals(3, json.values().size());\r\n        json.clear();\r\n        Assert.assertEquals(0, json.values().size());\r\n        json.putAll(Collections.singletonMap(\"E\", 99));\r\n        Assert.assertEquals(99L, json.getLongValue(\"E\"));\r\n        Assert.assertEquals(99, json.getIntValue(\"E\"));\r\n        Assert.assertEquals(\"99\", json.getString(\"E\"));\r\n        Assert.assertEquals(null, json.getString(\"F\"));\r\n        Assert.assertEquals(null, json.getDate(\"F\"));\r\n        Assert.assertEquals(null, json.getBoolean(\"F\"));\r\n    }\r\n\r\n    public void test_all_2() throws Exception {\r\n        JSONObject array = new JSONObject();\r\n        array.put(\"0\", 123);\r\n        array.put(\"1\", \"222\");\r\n        array.put(\"2\", 3);\r\n        array.put(\"3\", true);\r\n        array.put(\"4\", \"true\");\r\n        array.put(\"5\", \"2.0\");\r\n\r\n        Assert.assertEquals(123, array.getIntValue(\"0\"));\r\n        Assert.assertEquals(123, array.getLongValue(\"0\"));\r\n        Assert.assertEquals(new BigDecimal(\"123\"), array.getBigDecimal(\"0\"));\r\n\r\n        Assert.assertEquals(222, array.getIntValue(\"1\"));\r\n        Assert.assertEquals(3, array.getByte(\"2\").byteValue());\r\n        Assert.assertEquals(3, array.getByteValue(\"2\"));\r\n        Assert.assertEquals(3, array.getShort(\"2\").shortValue());\r\n        Assert.assertEquals(3, array.getShortValue(\"2\"));\r\n        Assert.assertEquals(new Integer(222), array.getInteger(\"1\"));\r\n        Assert.assertEquals(new Long(222), array.getLong(\"1\"));\r\n        Assert.assertEquals(new BigDecimal(\"222\"), array.getBigDecimal(\"1\"));\r\n\r\n        Assert.assertEquals(true, array.getBooleanValue(\"4\"));\r\n        Assert.assertTrue(2.0F == array.getFloat(\"5\").floatValue());\r\n        Assert.assertTrue(2.0F == array.getFloatValue(\"5\"));\r\n        Assert.assertTrue(2.0D == array.getDouble(\"5\").doubleValue());\r\n        Assert.assertTrue(2.0D == array.getDoubleValue(\"5\"));\r\n    }\r\n\r\n    public void test_getObject_null() throws Exception {\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"obj\", null);\r\n\r\n        Assert.assertTrue(json.getJSONObject(\"obj\") == null);\r\n    }\r\n    \r\n    public void test_bytes () throws Exception {\r\n        JSONObject object = new JSONObject();\r\n        Assert.assertNull(object.getBytes(\"bytes\"));\r\n    }\r\n\r\n    public void test_getObject() throws Exception {\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"obj\", new JSONObject());\r\n\r\n        Assert.assertEquals(0, json.getJSONObject(\"obj\").size());\r\n    }\r\n\r\n    public void test_getObject_map() throws Exception {\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"obj\", new HashMap());\r\n\r\n        Assert.assertEquals(0, json.getJSONObject(\"obj\").size());\r\n    }\r\n\r\n    public void test_getObjectOrDefault() {\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"testKey\", \"testVal\");\r\n        json.put(\"testKey2\", null);\r\n\r\n        Assert.assertEquals(\"default\", json.getOrDefault(\"testNonKet\", \"default\"));\r\n        Assert.assertEquals(\"default\", json.getOrDefault(\"testKey2\", \"default\"));\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONObjectTest2.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.util.LinkedHashMap;\r\nimport java.util.Map;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSONArray;\r\nimport com.alibaba.fastjson.JSONObject;\r\n\r\npublic class JSONObjectTest2 extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        Map<String, Object> map = new LinkedHashMap<String, Object>();\r\n        JSONObject obj = new JSONObject(map);\r\n\r\n        Assert.assertEquals(obj.size(), map.size());\r\n\r\n        map.put(\"a\", 1);\r\n        Assert.assertEquals(obj.size(), map.size());\r\n        Assert.assertEquals(obj.get(\"a\"), map.get(\"a\"));\r\n\r\n        map.put(\"b\", new int[] { 1 });\r\n        JSONArray array = obj.getJSONArray(\"b\");\r\n        Assert.assertEquals(array.size(), 1);\r\n\r\n        map.put(\"c\", new JSONArray());\r\n        JSONArray array2 = obj.getJSONArray(\"b\");\r\n        Assert.assertEquals(array2.size(), 1);\r\n\r\n        Assert.assertEquals(obj.getByteValue(\"d\"), 0);\r\n        Assert.assertEquals(obj.getShortValue(\"d\"), 0);\r\n        Assert.assertTrue(obj.getFloatValue(\"d\") == 0F);\r\n        Assert.assertTrue(obj.getDoubleValue(\"d\") == 0D);\r\n        Assert.assertEquals(obj.getBigInteger(\"d\"), null);\r\n        Assert.assertEquals(obj.getSqlDate(\"d\"), null);\r\n        Assert.assertEquals(obj.getTimestamp(\"d\"), null);\r\n\r\n        JSONObject obj2 = (JSONObject) obj.clone();\r\n        Assert.assertEquals(obj.size(), obj2.size());\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONObjectTest3.java",
    "content": "package com.alibaba.json.bvt;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic class JSONObjectTest3 extends TestCase {\n\n    public void test_0() throws Exception {\n        String text = \"{value:'123',big:false}\";\n        Bean bean = JSON.parseObject(text, Bean.class);\n        Assert.assertEquals(\"123\", bean.getValue());\n        Assert.assertEquals(false, bean.isBig());\n        Assert.assertEquals(123, bean.getIntValue());\n\n        bean.setBig(true);\n        Assert.assertEquals(true, bean.isBig());\n\n        bean.setID(567);\n        Assert.assertEquals(567, bean.getID());\n\n    }\n\n    public void test_error_0() throws Exception {\n        String text = \"{value:'123',big:false}\";\n        Bean bean = JSON.parseObject(text, Bean.class);\n\n        JSONException error = null;\n        try {\n            bean.f();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_1() throws Exception {\n        String text = \"{value:'123',big:false}\";\n        Bean bean = JSON.parseObject(text, Bean.class);\n\n        JSONException error = null;\n        try {\n            bean.f(1);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_2() throws Exception {\n        String text = \"{value:'123',big:false}\";\n        Bean bean = JSON.parseObject(text, Bean.class);\n\n        JSONException error = null;\n        try {\n            bean.get();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_3() throws Exception {\n        String text = \"{value:'123',big:false}\";\n        Bean bean = JSON.parseObject(text, Bean.class);\n\n        JSONException error = null;\n        try {\n            bean.is();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_4() throws Exception {\n        String text = \"{value:'123',big:false}\";\n        Bean bean = JSON.parseObject(text, Bean.class);\n\n        Exception error = null;\n        try {\n            bean.f(1, 2);\n        } catch (UnsupportedOperationException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_5() throws Exception {\n        String text = \"{value:'123',big:false}\";\n        Bean bean = JSON.parseObject(text, Bean.class);\n\n        JSONException error = null;\n        try {\n            bean.getA();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_6() throws Exception {\n        String text = \"{value:'123',big:false}\";\n        Bean bean = JSON.parseObject(text, Bean.class);\n\n        JSONException error = null;\n        try {\n            bean.f1(1);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_7() throws Exception {\n        String text = \"{value:'123',big:false}\";\n        Bean bean = JSON.parseObject(text, Bean.class);\n\n        JSONException error = null;\n        try {\n            bean.set(1);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_8() throws Exception {\n        String text = \"{value:'123',big:false}\";\n        Bean bean = JSON.parseObject(text, Bean.class);\n\n        JSONException error = null;\n        try {\n            bean.xx();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static interface Bean {\n\n        String getValue();\n\n        void setValue(String value);\n\n        boolean isBig();\n\n        @JSONField\n        void setBig(boolean value);\n\n        @JSONField(name = \"value\")\n        int getIntValue();\n\n        @JSONField(name = \"id\")\n        void setID(int value);\n\n        @JSONField(name = \"id\")\n        int getID();\n\n        Object get();\n\n        Object xx();\n\n        void set(int i);\n\n        boolean is();\n\n        void getA();\n\n        void f();\n\n        Object f(int a);\n\n        void f1(int a);\n\n        void f(int a, int b);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONObjectTest4.java",
    "content": "package com.alibaba.json.bvt;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic class JSONObjectTest4 extends TestCase {\n\n    public void test_interface() throws Exception {\n        VO vo = JSON.parseObject(\"{id:123}\", VO.class);\n        Assert.assertEquals(123, vo.getId());\n    }\n\n    public static interface VO {\n        @JSONField()\n        int getId();\n\n        @JSONField()\n        void setId(int val);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONObjectTest5.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\npublic class JSONObjectTest5 extends TestCase {\n\n    public void test() throws Exception {\n        JSONObject jsonObject = new JSONObject(3, true);\n        jsonObject.put(\"name\", \"J.K.SAGE\");\n        jsonObject.put(\"age\", 21);\n        jsonObject.put(\"msg\", \"Hello!\");\n        JSONObject cloneObject = (JSONObject) jsonObject.clone();\n        assertEquals(JSON.toJSONString(jsonObject), JSON.toJSONString(cloneObject));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONObjectTest6.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class JSONObjectTest6 extends TestCase {\n\n    public void test() throws Exception {\n        JSONObject jsonObject = new JSONObject();\n        jsonObject.put(\"value\", 123);\n        \n        Model model = jsonObject.toJavaObject(Model.class);\n        assertEquals(123, model.value);\n    }\n    \n    public static class Model {\n        public int value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONObjectTest7.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\npublic class JSONObjectTest7 extends TestCase {\n\n    public void test() throws Exception {\n        JSONObject jsonObject = JSON.parseObject(\"{\\\"test\\\":null,\\\"a\\\":\\\"cc\\\"}\");\n        assertEquals(2, jsonObject.entrySet().size());\n        assertTrue(jsonObject.containsKey(\"test\"));\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONObjectTest_get.java",
    "content": "package com.alibaba.json.bvt;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\n\npublic class JSONObjectTest_get extends TestCase {\n\n    public void test_get() throws Exception {\n        JSONObject obj = JSON.parseObject(\"{id:123}\");\n        Assert.assertEquals(123, obj.getObject(\"id\", Object.class));\n    }\n\n    public static interface VO {\n        @JSONField()\n        int getId();\n\n        @JSONField()\n        void setId(int val);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONObjectTest_getBigInteger.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.math.BigInteger;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class JSONObjectTest_getBigInteger extends TestCase {\n\n    public void test_get_float() throws Exception {\n        JSONObject obj = new JSONObject();\n        obj.put(\"value\", 123.45F);\n        Assert.assertTrue(123.45F == ((Float) obj.get(\"value\")).floatValue());\n        Assert.assertEquals(new BigInteger(\"123\"), obj.getBigInteger(\"value\"));\n    }\n    \n    public void test_get_double() throws Exception {\n        JSONObject obj = new JSONObject();\n        obj.put(\"value\", 123.45D);\n        Assert.assertTrue(123.45D == ((Double) obj.get(\"value\")).doubleValue());\n        Assert.assertEquals(new BigInteger(\"123\"), obj.getBigInteger(\"value\"));\n    }\n    \n    public void test_get_empty() throws Exception {\n        JSONObject obj = new JSONObject();\n        obj.put(\"value\", \"\");\n        Assert.assertEquals(\"\", obj.get(\"value\"));\n        Assert.assertNull(obj.getBigInteger(\"value\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONObjectTest_getDate.java",
    "content": "package com.alibaba.json.bvt;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class JSONObjectTest_getDate extends TestCase {\n\n    public void test_get_empty() throws Exception {\n        JSONObject obj = new JSONObject();\n        obj.put(\"value\", \"\");\n        Assert.assertEquals(\"\", obj.get(\"value\"));\n        Assert.assertNull(obj.getDate(\"value\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONObjectTest_getObj.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\nimport java.util.HashMap;\nimport java.util.List;\n\npublic class JSONObjectTest_getObj extends TestCase {\n\n    public void test_get_empty() throws Exception {\n        JSONObject obj = new JSONObject();\n        obj.put(\"value\", \"\");\n        Assert.assertEquals(\"\", obj.get(\"value\"));\n        Assert.assertNull(obj.getObject(\"value\", Model.class));\n    }\n    \n    public void test_get_null() throws Exception {\n        JSONObject obj = new JSONObject();\n        obj.put(\"value\", \"null\");\n        Assert.assertEquals(\"null\", obj.get(\"value\"));\n        Assert.assertNull(obj.getObject(\"value\", Model.class));\n    }\n\n    public void test_get_obj() throws Exception {\n        JSONObject obj = new JSONObject();\n        obj.put(\"value\", new HashMap());\n        Assert.assertEquals(new JSONObject(), obj.getObject(\"value\", JSONObject.class));\n    }\n\n    public void test_get_obj2() throws Exception {\n        List<JSONObject> json = JSON.parseArray(\"[{\\\"values\\\":[{}]}]\", JSONObject.class);\n\n        for (JSONObject obj : json) {\n            Object values = obj.getObject(\"values\", new TypeReference<List<JSONObject>>() {});\n        }\n    }\n    \n    public static class Model {\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONObjectTest_getObj_2.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.lang.reflect.Type;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.util.TypeUtils;\n\nimport junit.framework.TestCase;\n\npublic class JSONObjectTest_getObj_2 extends TestCase {\n\n    public void test_get_empty() throws Exception {\n        JSONObject obj = new JSONObject();\n        obj.put(\"value\", \"\");\n        Assert.assertEquals(\"\", obj.get(\"value\"));\n        Assert.assertNull(obj.getObject(\"value\", Model.class));\n    }\n    \n    public void test_get_null() throws Exception {\n        TypeUtils.cast(\"null\", getType(), ParserConfig.getGlobalInstance());\n        TypeUtils.cast(\"\", getType(), ParserConfig.getGlobalInstance());\n    }\n    \n    public static class Model {\n        \n    }\n    \n    public static <T> Type getType() {\n        return new TypeReference<T[]>() {}.getType();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONObjectTest_get_2.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\n\npublic class JSONObjectTest_get_2 extends TestCase {\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.JSONObjectTest_get_2.\");\n    }\n\n    public void test_get() throws Exception {\n        JSONObject obj = JSON.parseObject(\"{\\\"value\\\":{}}\");\n        JSONObject value = (JSONObject) obj.getObject(\"value\", Object.class);\n        Assert.assertEquals(0, value.size());\n    }\n    \n    public void test_get_obj() throws Exception {\n        JSONObject obj = new JSONObject();\n        {\n            Map<String, Object> value = new HashMap<String, Object>();\n            value.put(\"@type\", \"com.alibaba.json.bvt.JSONObjectTest_get_2$VO\");\n            value.put(\"id\", 1001);\n            obj.put(\"value\", value);\n        }\n        VO value = (VO) obj.getObject(\"value\", Object.class);\n        Assert.assertEquals(1001, value.getId());\n    }\n\n    public static interface VO {\n        @JSONField()\n        int getId();\n\n        @JSONField()\n        void setId(int val);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONObjectTest_hashCode.java",
    "content": "package com.alibaba.json.bvt;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\npublic class JSONObjectTest_hashCode extends TestCase {\n\n    public void test_hashCode() throws Exception {\n        Assert.assertEquals(new JSONObject().hashCode(), new JSONObject().hashCode());\n    }\n\n    public void test_hashCode_1() throws Exception {\n        Assert.assertEquals(JSON.parseObject(\"{a:1}\"), JSON.parseObject(\"{'a':1}\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONObjectTest_readObject.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport junit.framework.TestCase;\n\nimport java.io.ByteArrayInputStream;\nimport java.io.ByteArrayOutputStream;\nimport java.io.ObjectInputStream;\nimport java.io.ObjectOutputStream;\n\npublic class JSONObjectTest_readObject extends TestCase {\n    public void test_0() throws Exception {\n        JSONObject jsonObject = new JSONObject();\n        jsonObject.put(\"id\", 123);\n        jsonObject.put(\"obj\", new JSONObject());\n\n        ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();\n        ObjectOutputStream objOut = new ObjectOutputStream(bytesOut);\n        objOut.writeObject(jsonObject);\n        objOut.flush();\n\n        byte[] bytes = bytesOut.toByteArray();\n\n        ByteArrayInputStream bytesIn = new ByteArrayInputStream(bytes);\n        ObjectInputStream objIn = new ObjectInputStream(bytesIn);\n\n        Object obj = objIn.readObject();\n\n        assertEquals(JSONObject.class, obj.getClass());\n        assertEquals(jsonObject, obj);\n    }\n\n    public void test_2() throws Exception {\n        JSONObject jsonObject = JSON.parseObject(\"{123:345}\");\n\n        ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();\n        ObjectOutputStream objOut = new ObjectOutputStream(bytesOut);\n        objOut.writeObject(jsonObject);\n        objOut.flush();\n\n        byte[] bytes = bytesOut.toByteArray();\n\n        ByteArrayInputStream bytesIn = new ByteArrayInputStream(bytes);\n        ObjectInputStream objIn = new ObjectInputStream(bytesIn);\n\n        Object obj = objIn.readObject();\n\n        assertEquals(JSONObject.class, obj.getClass());\n        assertEquals(jsonObject, obj);\n    }\n\n    public void test_3() throws Exception {\n        JSONObject jsonObject = JSON.parseObject(\"{123:345,\\\"items\\\":[1,2,3,4]}\");\n\n        ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();\n        ObjectOutputStream objOut = new ObjectOutputStream(bytesOut);\n        objOut.writeObject(jsonObject);\n        objOut.flush();\n\n        byte[] bytes = bytesOut.toByteArray();\n\n        ByteArrayInputStream bytesIn = new ByteArrayInputStream(bytes);\n        ObjectInputStream objIn = new ObjectInputStream(bytesIn);\n\n        Object obj = objIn.readObject();\n\n        assertEquals(JSONObject.class, obj.getClass());\n        assertEquals(jsonObject, obj);\n    }\n\n    public void test_4() throws Exception {\n        JSONObject jsonObject = new JSONObject();\n        jsonObject.put(\"val\", new Byte[]{});\n\n        ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();\n        ObjectOutputStream objOut = new ObjectOutputStream(bytesOut);\n        objOut.writeObject(jsonObject);\n        objOut.flush();\n\n        byte[] bytes = bytesOut.toByteArray();\n\n        ByteArrayInputStream bytesIn = new ByteArrayInputStream(bytes);\n        ObjectInputStream objIn = new ObjectInputStream(bytesIn);\n\n        Object obj = objIn.readObject();\n\n        assertEquals(JSONObject.class, obj.getClass());\n        assertEquals(jsonObject.toJSONString(), JSON.toJSONString(obj));\n    }\n\n    public void test_5() throws Exception {\n        JSONObject jsonObject = new JSONObject();\n        jsonObject.put(\"val\", new byte[]{});\n\n        ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();\n        ObjectOutputStream objOut = new ObjectOutputStream(bytesOut);\n        objOut.writeObject(jsonObject);\n        objOut.flush();\n\n        byte[] bytes = bytesOut.toByteArray();\n\n        ByteArrayInputStream bytesIn = new ByteArrayInputStream(bytes);\n        ObjectInputStream objIn = new ObjectInputStream(bytesIn);\n\n        Object obj = objIn.readObject();\n\n        assertEquals(JSONObject.class, obj.getClass());\n        assertEquals(jsonObject.toJSONString(), JSON.toJSONString(obj));\n    }\n\n    public void test_6() throws Exception {\n        JSONObject jsonObject = new JSONObject();\n        jsonObject.put(\"val\", new Character[]{});\n        jsonObject.put(\"cls\", java.lang.Number.class);\n        jsonObject.put(\"nums\", new java.lang.Number[] {});\n\n        ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();\n        ObjectOutputStream objOut = new ObjectOutputStream(bytesOut);\n        objOut.writeObject(jsonObject);\n        objOut.flush();\n\n        byte[] bytes = bytesOut.toByteArray();\n\n        ByteArrayInputStream bytesIn = new ByteArrayInputStream(bytes);\n        ObjectInputStream objIn = new ObjectInputStream(bytesIn);\n\n        Object obj = objIn.readObject();\n\n        assertEquals(JSONObject.class, obj.getClass());\n        assertEquals(jsonObject.toJSONString(), JSON.toJSONString(obj));\n    }\n\n    public void test_7() throws Exception {\n        ParserConfig.global.setSafeMode(true);\n        try {\n            JSONObject jsonObject = new JSONObject();\n            jsonObject.put(\"m\", new java.util.HashMap());\n\n            ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();\n            ObjectOutputStream objOut = new ObjectOutputStream(bytesOut);\n            objOut.writeObject(jsonObject);\n            objOut.flush();\n\n            byte[] bytes = bytesOut.toByteArray();\n\n            ByteArrayInputStream bytesIn = new ByteArrayInputStream(bytes);\n            ObjectInputStream objIn = new ObjectInputStream(bytesIn);\n\n            Object obj = objIn.readObject();\n        } finally {\n            ParserConfig.global.setSafeMode(false);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONParseTest.java",
    "content": "/*\r\n * Copyright 1999-2017 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.json.bvt;\r\n\r\nimport java.util.ArrayList;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONObject;\r\n\r\npublic class JSONParseTest extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        JSONObject jsonObject = new JSONObject();\r\n        jsonObject.put(\"scheduleAlarmRules\", new ArrayList());\r\n        String jsonString = jsonObject.toJSONString();\r\n        String text = \"{\\\"scheduleAlarmRules\\\":[]}\";\r\n        Object jsonValue = JSON.parse(text);\r\n        System.out.println(jsonValue);\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONTest.java",
    "content": "/*\r\n * Copyright 1999-2017 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.json.bvt;\r\n\r\nimport java.io.IOException;\r\nimport java.io.StringWriter;\r\nimport java.math.BigDecimal;\r\nimport java.util.HashMap;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.JSONObject;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\n\r\npublic class JSONTest extends TestCase {\r\n\r\n    public void test_number() throws Exception {\r\n        Assert.assertEquals(\"3\", JSON.parse(\"3\").toString());\r\n        Assert.assertEquals(\"34\", JSON.parse(\"34\").toString());\r\n        Assert.assertEquals(\"922337203685477580755\", JSON.parse(\"922337203685477580755\").toString());\r\n        Assert.assertEquals(\"-34\", JSON.parse(\"-34\").toString());\r\n        Assert.assertEquals(new BigDecimal(\"9.223372036854776E18\"), new BigDecimal(JSON.parse(\"9.223372036854776E18\").toString()));\r\n        Assert.assertEquals(new BigDecimal(\"9.223372036854776E+18\"), new BigDecimal(JSON.parse(\"9.223372036854776E+18\").toString()));\r\n        Assert.assertEquals(new BigDecimal(\"9.223372036854776E-18\"), new BigDecimal(JSON.parse(\"9.223372036854776E-18\").toString()));\r\n    }\r\n\r\n    public void test_string() throws Exception {\r\n        Assert.assertEquals(\"\", JSON.parse(\"\\\"\\\"\").toString());\r\n        Assert.assertEquals(\"3\", JSON.parse(\"\\\"3\\\"\").toString());\r\n        Assert.assertEquals(\"34\", JSON.parse(\"\\\"34\\\"\").toString());\r\n        Assert.assertEquals(\"3\\\\4\", JSON.parse(\"\\\"3\\\\\\\\4\\\"\").toString());\r\n        Assert.assertEquals(\"3\\\"4\", JSON.parse(\"\\\"3\\\\\\\"4\\\"\").toString());\r\n        Assert.assertEquals(\"3\\\\b4\", JSON.parse(\"\\\"3\\\\\\\\b4\\\"\").toString());\r\n        Assert.assertEquals(\"3\\\\f4\", JSON.parse(\"\\\"3\\\\\\\\f4\\\"\").toString());\r\n        Assert.assertEquals(\"3\\\\n4\", JSON.parse(\"\\\"3\\\\\\\\n4\\\"\").toString());\r\n        Assert.assertEquals(\"3\\\\r4\", JSON.parse(\"\\\"3\\\\\\\\r4\\\"\").toString());\r\n        Assert.assertEquals(\"3\\\\t4\", JSON.parse(\"\\\"3\\\\\\\\t4\\\"\").toString());\r\n        Assert.assertEquals(\"中国\", JSON.parse(\"\\\"中国\\\"\").toString());\r\n        Assert.assertEquals(\"中国\", JSON.parse(\"\\\"\\\\u4E2D\\\\u56FD\\\"\").toString());\r\n        Assert.assertEquals(\"\\u001F\", JSON.parse(\"\\\"\\\\u001F\\\"\").toString());\r\n    }\r\n    \r\n    public void test_for_jh() throws Exception {\r\n        String text = \"[{\\\"I.13\\\":\\\"XEMwXFMweGEuMHhjOFxGy87M5VxUxOO6ww==\\\",\\\"I.18\\\":\\\"MA==\\\"},{\\\"I.13\\\":\\\"XEMwXFMweGEuMHhjOFxGy87M5VxUxOO6ww==\\\",\\\"I.18\\\":\\\"MA==\\\"}]\";\r\n        JSON.parse(text);\r\n        JSON.parseArray(text);\r\n    }\r\n\r\n    public void test_value() throws Exception {\r\n        Assert.assertEquals(Boolean.TRUE, JSON.parse(\"true\"));\r\n        Assert.assertEquals(Boolean.FALSE, JSON.parse(\"false\"));\r\n        Assert.assertEquals(null, JSON.parse(\"null\"));\r\n    }\r\n\r\n    public void test_object() throws Exception {\r\n        Assert.assertTrue(JSON.parseObject(\"{}\").size() == 0);\r\n        Assert.assertEquals(1, JSON.parseObject(\"{\\\"K\\\":3}\").size());\r\n        Assert.assertEquals(3, ((Number) JSON.parseObject(\"{\\\"K\\\":3}\").get(\"K\")).intValue());\r\n        Assert.assertEquals(2, JSON.parseObject(\"{\\\"K1\\\":3,\\\"K2\\\":4}\").size());\r\n        Assert.assertEquals(3, ((Number) JSON.parseObject(\"{\\\"K1\\\":3,\\\"K2\\\":4}\").get(\"K1\")).intValue());\r\n        Assert.assertEquals(4, ((Number) JSON.parseObject(\"{\\\"K1\\\":3,\\\"K2\\\":4}\").get(\"K2\")).intValue());\r\n        Assert.assertEquals(1, JSON.parseObject(\"{\\\"K\\\":{}}\").size());\r\n        Assert.assertEquals(1, JSON.parseObject(\"{\\\"K\\\":[]}\").size());\r\n    }\r\n\r\n    public void test_array() throws Exception {\r\n        Assert.assertEquals(0, JSON.parseArray(\"[]\").size());\r\n        Assert.assertEquals(1, JSON.parseArray(\"[1]\").size());\r\n        Assert.assertEquals(1, ((Number) JSON.parseArray(\"[1]\").get(0)).intValue());\r\n        Assert.assertEquals(3, JSON.parseArray(\"[1,2, 3]\").size());\r\n        Assert.assertEquals(1, ((Number) JSON.parseArray(\"[1,2, 3]\").get(0)).intValue());\r\n        Assert.assertEquals(2, ((Number) JSON.parseArray(\"[1,2, 3]\").get(1)).intValue());\r\n        Assert.assertEquals(3, ((Number) JSON.parseArray(\"[1,2, 3]\").get(2)).intValue());\r\n    }\r\n\r\n    public void test_all() throws Exception {\r\n        Assert.assertEquals(null, JSON.parse(null));\r\n        Assert.assertEquals(\"{}\", JSON.toJSONString(new HashMap<String, Object>()));\r\n        Assert.assertEquals(\"{}\", JSON.toJSONString(new HashMap<String, Object>(), true));\r\n        Assert.assertEquals(\"{}\", JSON.toJSONString(new HashMap<String, Object>(), true));\r\n        Assert.assertEquals(null, JSON.parseObject(null));\r\n        Assert.assertEquals(null, JSON.parseArray(null));\r\n        Assert.assertEquals(null, JSON.parseObject(null, Object.class));\r\n        Assert.assertEquals(null, JSON.parseArray(null, Object.class));\r\n    }\r\n\r\n    public void test_writeTo_0() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        JSONObject json = new JSONObject();\r\n        json.writeJSONString(out);\r\n\r\n        Assert.assertEquals(\"{}\", out.toString());\r\n    }\r\n\r\n    public void test_writeTo_1() throws Exception {\r\n        StringWriter out = new StringWriter();\r\n\r\n        JSONObject json = new JSONObject();\r\n        json.writeJSONString(out);\r\n\r\n        Assert.assertEquals(\"{}\", out.toString());\r\n    }\r\n\r\n    public void test_writeTo_2() throws Exception {\r\n        StringBuffer out = new StringBuffer();\r\n\r\n        JSONObject json = new JSONObject();\r\n        json.writeJSONString(out);\r\n\r\n        Assert.assertEquals(\"{}\", out.toString());\r\n    }\r\n\r\n    public void test_writeTo_error() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            JSONObject json = new JSONObject();\r\n            json.writeJSONString(new ErrorAppendable());\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_fromJavaObject_null() throws Exception {\r\n        Assert.assertEquals(null, JSON.toJSON(null));\r\n    }\r\n\r\n    private final class ErrorAppendable implements Appendable {\r\n\r\n        public Appendable append(CharSequence csq, int start, int end) throws IOException {\r\n            throw new IOException(\"\");\r\n        }\r\n\r\n        public Appendable append(char c) throws IOException {\r\n            throw new IOException(\"\");\r\n        }\r\n\r\n        public Appendable append(CharSequence csq) throws IOException {\r\n            throw new IOException(\"\");\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONTest2.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.io.ByteArrayInputStream;\r\nimport java.io.InputStream;\r\nimport java.io.StringReader;\r\nimport java.math.BigDecimal;\r\nimport java.math.BigInteger;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport org.apache.commons.io.IOUtils;\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONObject;\r\nimport com.alibaba.fastjson.TypeReference;\r\n\r\npublic class JSONTest2 extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        StringReader reader = new StringReader(\"{a:1,b:2}\");\r\n        String text = IOUtils.toString(reader);\r\n        JSONObject json = (JSONObject) JSON.parse(text);\r\n        Assert.assertEquals(2, json.size());\r\n        Assert.assertEquals(1, json.getIntValue(\"a\"));\r\n        Assert.assertEquals(2, json.getIntValue(\"b\"));\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        InputStream input = new ByteArrayInputStream(\"{a:1,b:2}\".getBytes());\r\n        String text = IOUtils.toString(input);\r\n        JSONObject json = (JSONObject) JSON.parse(text);\r\n        Assert.assertEquals(2, json.size());\r\n        Assert.assertEquals(1, json.getIntValue(\"a\"));\r\n        Assert.assertEquals(2, json.getIntValue(\"b\"));\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        Assert.assertEquals(new Byte((byte) 1), JSON.parseObject(\"1\", Byte.class));\r\n        Assert.assertEquals(new Short((short) 1), JSON.parseObject(\"1\", Short.class));\r\n        Assert.assertEquals(new Integer((int) 1), JSON.parseObject(\"1\", Integer.class));\r\n        Assert.assertEquals(new Long((long) 1), JSON.parseObject(\"1\", Long.class));\r\n        Assert.assertEquals(new Float((float) 1), JSON.parseObject(\"1\", Float.class));\r\n        Assert.assertEquals(new Double((double) 1), JSON.parseObject(\"1\", Double.class));\r\n    }\r\n\r\n    public void test_3() throws Exception {\r\n        Assert.assertEquals(new Byte((byte) 1), JSON.parseObject(\"1\", byte.class));\r\n        Assert.assertEquals(new Short((short) 1), JSON.parseObject(\"1\", short.class));\r\n        Assert.assertEquals(new Integer((int) 1), JSON.parseObject(\"1\", int.class));\r\n        Assert.assertEquals(new Long((long) 1), JSON.parseObject(\"1\", long.class));\r\n        Assert.assertEquals(new Float((float) 1), JSON.parseObject(\"1\", float.class));\r\n        Assert.assertEquals(new Double((double) 1), JSON.parseObject(\"1\", double.class));\r\n    }\r\n\r\n    public void test_4() throws Exception {\r\n        Assert.assertEquals(new BigInteger(\"1\"), JSON.parseObject(\"1\", BigInteger.class));\r\n        Assert.assertEquals(new BigDecimal(\"1\"), JSON.parseObject(\"1\", BigDecimal.class));\r\n    }\r\n\r\n    public void test_5() throws Exception {\r\n        Assert.assertArrayEquals(new byte[] { 1 }, (byte[]) JSON.parseObject(\"[1]\", byte[].class));\r\n        Assert.assertArrayEquals(new short[] { 1 }, (short[]) JSON.parseObject(\"[1]\", short[].class));\r\n        Assert.assertArrayEquals(new int[] { 1 }, (int[]) JSON.parseObject(\"[1]\", int[].class));\r\n        Assert.assertArrayEquals(new long[] { 1 }, (long[]) JSON.parseObject(\"[1]\", long[].class));\r\n        float[] array1 = JSON.parseObject(\"[1]\", float[].class);\r\n        double[] array2 = JSON.parseObject(\"[1]\", double[].class);\r\n    }\r\n\r\n    public void test_6() throws Exception {\r\n        Assert.assertArrayEquals(new Byte[] { 1 }, (Byte[]) JSON.parseObject(\"[1]\", Byte[].class));\r\n        Assert.assertArrayEquals(new Short[] { 1 }, (Short[]) JSON.parseObject(\"[1]\", Short[].class));\r\n        Assert.assertArrayEquals(new Integer[] { 1 }, (Integer[]) JSON.parseObject(\"[1]\", Integer[].class));\r\n        Assert.assertArrayEquals(new Long[] { 1L }, (Long[]) JSON.parseObject(\"[1]\", Long[].class));\r\n        Float[] array1 = JSON.parseObject(\"[1]\", Float[].class);\r\n        Double[] array2 = JSON.parseObject(\"[1]\", Double[].class);\r\n    }\r\n    \r\n    public void test_7() throws Exception {\r\n        Assert.assertNull(JSON.parseObject(null, new TypeReference<Integer>() {}.getType(), 0));\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONTest3.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.lang.reflect.Type;\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.deserializer.ExtraProcessor;\n\nimport junit.framework.TestCase;\n\npublic class JSONTest3 extends TestCase {\n    public void test_json() throws Exception {\n        ExtraProcessor extraProcessor = new ExtraProcessor() {\n\n            public void processExtra(Object object, String key, Object value) {\n                Model model = (Model) object;\n                model.attributes.put(key, value);\n            }\n        };\n        \n        Model model = JSON.parseObject(\"{\\\"id\\\":1001}\", (Type) Model.class, extraProcessor);\n        Assert.assertEquals(1, model.attributes.size());\n        Assert.assertEquals(1001, model.attributes.get(\"id\"));\n    }\n    \n    public static class Model {\n        private Map<String, Object> attributes = new HashMap<String, Object>();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONTest_Bytes.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\npublic class JSONTest_Bytes extends TestCase {\n\n    @SuppressWarnings(\"rawtypes\")\n    public void test_bytes() throws Exception {\n        for (int i = 0; i < 10; ++i) {\n            String charset = \"UTF-8\";\n            String text = \"{name:'张三', age:27}\";\n\n            Map map = JSON.parseObject(text.getBytes(charset), Map.class);\n            Assert.assertEquals(\"张三\", map.get(\"name\"));\n            Assert.assertEquals(27, map.get(\"age\"));\n        }\n\n        for (int i = 0; i < 10; ++i) {\n            String charset = \"UTF-8\";\n            String text = \"{name:'张三', age:27}\";\n\n            JSONObject map = (JSONObject) JSON.parse(text.getBytes(charset));\n            Assert.assertEquals(\"张三\", map.get(\"name\"));\n            Assert.assertEquals(27, map.get(\"age\"));\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONTest_Bytes_1.java",
    "content": "package com.alibaba.json.bvt;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class JSONTest_Bytes_1 extends TestCase {\n\n    public void test_bytes() throws Exception {\n        Assert.assertEquals(\"\\\"abc\\\"\", new String(JSON.toJSONBytes(\"abc\", SerializeConfig.getGlobalInstance())));\n        Assert.assertEquals(\"'abc'\",\n                            new String(JSON.toJSONBytes(\"abc\", SerializeConfig.getGlobalInstance(),\n                                                        SerializerFeature.UseSingleQuotes)));\n    }\n\n    public void test_bytes_2() throws Exception {\n        Assert.assertEquals(\"\\\"abc\\\"\", new String(JSON.toJSONBytes(\"abc\")));\n        Assert.assertEquals(\"'abc'\", new String(JSON.toJSONBytes(\"abc\", SerializerFeature.UseSingleQuotes)));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONTest_null.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.lang.reflect.Type;\nimport java.nio.charset.Charset;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\n\npublic class JSONTest_null extends TestCase {\n\n    public void test_0() throws Exception {\n        Assert.assertNull(JSON.parseArray(null));\n        Assert.assertNull(JSON.parseArray(\"\"));\n        Assert.assertNull(JSON.parseArray(\"null\"));\n        Assert.assertNull(JSON.parseArray(null, new Type[] { Object.class, Object.class }));\n        Assert.assertNull(JSON.parseObject((char[]) null, 0, int.class, Feature.AllowArbitraryCommas));\n        Assert.assertNull(JSON.parseObject(new char[0], 0, int.class, Feature.AllowArbitraryCommas));\n\n        Assert.assertNull(JSON.parseObject(\"null\".toCharArray(), 4, Object.class,  Feature.AllowArbitraryCommas));\n        Assert.assertNull(JSON.parseObject(\"null\".toCharArray(), 4, Object.class));\n        Assert.assertNull(JSON.parse(\"null\".getBytes(), 0, 4, Charset.forName(\"UTF-8\").newDecoder(), Feature.AllowArbitraryCommas));\n        Assert.assertNull(JSON.parse((byte[]) null, 0, 0, Charset.forName(\"UTF-8\").newDecoder(), Feature.AllowArbitraryCommas));\n        Assert.assertNull(JSON.parse(new byte[0], 0, 0, Charset.forName(\"UTF-8\").newDecoder(), Feature.AllowArbitraryCommas));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONTest_overflow.java",
    "content": "package com.alibaba.json.bvt;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\n\npublic class JSONTest_overflow extends TestCase {\n\n    public void test_overflow() throws Exception {\n        Entity entity = new Entity();\n        entity.setSelf(entity);\n\n        String text = JSON.toJSONString(entity, SerializeConfig.getGlobalInstance());\n        Entity entity2 = JSON.parseObject(text, Entity.class);\n        Assert.assertTrue(entity2 == entity2.getSelf());\n    }\n    \n    public void test_overflow_1() throws Exception {\n        Entity entity = new Entity();\n        entity.setSelf(entity);\n\n        String text = JSON.toJSONStringZ(entity, SerializeConfig.getGlobalInstance());\n        Entity entity2 = JSON.parseObject(text, Entity.class);\n        Assert.assertTrue(entity2 == entity2.getSelf());\n    }\n\n    public static class Entity {\n\n        private Entity self;\n\n        public Entity getSelf() {\n            return self;\n        }\n\n        public void setSelf(Entity self) {\n            this.self = self;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONTokenTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.parser.JSONToken;\n\npublic class JSONTokenTest extends TestCase {\n    public void test_0 () throws Exception {\n        new JSONToken();\n        \n        Assert.assertEquals(\"int\", JSONToken.name(JSONToken.LITERAL_INT));\n        Assert.assertEquals(\"float\", JSONToken.name(JSONToken.LITERAL_FLOAT));\n        Assert.assertEquals(\"string\", JSONToken.name(JSONToken.LITERAL_STRING));\n        Assert.assertEquals(\"iso8601\", JSONToken.name(JSONToken.LITERAL_ISO8601_DATE));\n        Assert.assertEquals(\"true\", JSONToken.name(JSONToken.TRUE));\n        Assert.assertEquals(\"false\", JSONToken.name(JSONToken.FALSE));\n        Assert.assertEquals(\"null\", JSONToken.name(JSONToken.NULL));\n        Assert.assertEquals(\"new\", JSONToken.name(JSONToken.NEW));\n        Assert.assertEquals(\"(\", JSONToken.name(JSONToken.LPAREN));\n        Assert.assertEquals(\")\", JSONToken.name(JSONToken.RPAREN));\n        Assert.assertEquals(\"{\", JSONToken.name(JSONToken.LBRACE));\n        Assert.assertEquals(\"}\", JSONToken.name(JSONToken.RBRACE));\n        Assert.assertEquals(\"[\", JSONToken.name(JSONToken.LBRACKET));\n        Assert.assertEquals(\"]\", JSONToken.name(JSONToken.RBRACKET));\n        Assert.assertEquals(\",\", JSONToken.name(JSONToken.COMMA));\n        Assert.assertEquals(\":\", JSONToken.name(JSONToken.COLON));\n        Assert.assertEquals(\"ident\", JSONToken.name(JSONToken.IDENTIFIER));\n        Assert.assertEquals(\"fieldName\", JSONToken.name(JSONToken.FIELD_NAME));\n        Assert.assertEquals(\"EOF\", JSONToken.name(JSONToken.EOF));\n        Assert.assertEquals(\"Unknown\", JSONToken.name(Integer.MAX_VALUE));\n        Assert.assertEquals(\"Set\", JSONToken.name(JSONToken.SET));\n        Assert.assertEquals(\"TreeSet\", JSONToken.name(JSONToken.TREE_SET));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONTypeTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\n\npublic class JSONTypeTest extends TestCase {\n\tpublic void test_0() throws Exception {\n\t\tVO vo = new VO();\n\t\tvo.setId(1001);\n\t\tvo.setName(\"xx\");\n\t\tvo.setAge(33);\n\n\t\tAssert.assertEquals(\"{\\\"age\\\":33,\\\"id\\\":1001,\\\"name\\\":\\\"xx\\\"}\",\n\t\t\t\tJSON.toJSONString(vo));\n\t}\n\t\n\tpublic void test_1() throws Exception {\n\t\tV1 vo = new V1();\n\t\tvo.setId(1001);\n\t\tvo.setName(\"xx\");\n\t\tvo.setAge(33);\n\t\t\n\t\tAssert.assertEquals(\"{\\\"id\\\":1001,\\\"name\\\":\\\"xx\\\",\\\"age\\\":33}\",\n\t\t\t\tJSON.toJSONString(vo));\n\t}\n\t\n\tpublic void test_2() throws Exception {\n\t\tV1 vo = new V1();\n\t\tvo.setId(1001);\n\t\tvo.setName(\"xx\");\n\t\tvo.setAge(33);\n\t\t\n\t\tAssert.assertEquals(\"{\\\"id\\\":1001,\\\"name\\\":\\\"xx\\\",\\\"age\\\":33}\",\n\t\t\t\tJSON.toJSONString(vo));\n\t}\n\n\t@JSONType\n\tpublic static class VO {\n\t\tprivate int id;\n\t\tprivate String name;\n\t\tprivate int age;\n\n\t\tpublic int getId() {\n\t\t\treturn id;\n\t\t}\n\n\t\tpublic void setId(int id) {\n\t\t\tthis.id = id;\n\t\t}\n\n\t\tpublic String getName() {\n\t\t\treturn name;\n\t\t}\n\n\t\tpublic void setName(String name) {\n\t\t\tthis.name = name;\n\t\t}\n\n\t\tpublic int getAge() {\n\t\t\treturn age;\n\t\t}\n\n\t\tpublic void setAge(int age) {\n\t\t\tthis.age = age;\n\t\t}\n\t}\n\n\t@JSONType(orders = { \"id\", \"name\", \"age\" })\n\tpublic static class V1 {\n\t\tprivate int id;\n\t\tprivate String name;\n\t\tprivate int age;\n\n\t\tpublic int getId() {\n\t\t\treturn id;\n\t\t}\n\n\t\tpublic void setId(int id) {\n\t\t\tthis.id = id;\n\t\t}\n\n\t\tpublic String getName() {\n\t\t\treturn name;\n\t\t}\n\n\t\tpublic void setName(String name) {\n\t\t\tthis.name = name;\n\t\t}\n\n\t\tpublic int getAge() {\n\t\t\treturn age;\n\t\t}\n\n\t\tpublic void setAge(int age) {\n\t\t\tthis.age = age;\n\t\t}\n\t}\n\t\n\t@JSONType(orders = { \"id\", \"name\", \"age\" },asm=false)\n\tprivate class V2 {\n\t\tprivate int id;\n\t\tprivate String name;\n\t\tprivate int age;\n\t\t\n\t\tpublic int getId() {\n\t\t\treturn id;\n\t\t}\n\t\t\n\t\tpublic void setId(int id) {\n\t\t\tthis.id = id;\n\t\t}\n\t\t\n\t\tpublic String getName() {\n\t\t\treturn name;\n\t\t}\n\t\t\n\t\tpublic void setName(String name) {\n\t\t\tthis.name = name;\n\t\t}\n\t\t\n\t\tpublic int getAge() {\n\t\t\treturn age;\n\t\t}\n\t\t\n\t\tpublic void setAge(int age) {\n\t\t\tthis.age = age;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONTypeTest1.java",
    "content": "package com.alibaba.json.bvt;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\n\npublic class JSONTypeTest1 extends TestCase {\n\n    public void test_ignores() throws Exception {\n        A a = new A();\n        a.setF1(1001);\n        a.setF2(1002);\n        a.setF3(1003);\n\n        Assert.assertEquals(\"{\\\"f1\\\":1001,\\\"f3\\\":1003}\", JSON.toJSONString(a));\n    }\n\n    public void test_ignoresParent() throws Exception {\n        B b = new B();\n        b.setF1(1001);\n        b.setF2(1002);\n        b.setF3(1003);\n        b.setF4(1004);\n        b.setF5(1005);\n\n        Assert.assertEquals(\"{\\\"f1\\\":1001,\\\"f3\\\":1003,\\\"f5\\\":1005}\", JSON.toJSONString(b));\n    }\n    \n    public void test_ignoresParent2() throws Exception {\n        C c = new C();\n        c.setF1(1001);\n        c.setF2(1002);\n        c.setF3(1003);\n        c.setF4(1004);\n        c.setF5(1005);\n        c.setF6(1006);\n        \n        Assert.assertEquals(\"{\\\"f1\\\":1001,\\\"f3\\\":1003,\\\"f5\\\":1005,\\\"f6\\\":1006}\", JSON.toJSONString(c));\n    }\n    \n    public void test_ignoresParent3() throws Exception {\n        D d = new D();\n        d.setF1(1001);\n        d.setF2(1002);\n        d.setF3(1003);\n        d.setF4(1004);\n        d.setF5(1005);\n        d.setF6(1006);\n        d.setF7(1007);\n        \n        Assert.assertEquals(\"{\\\"f1\\\":1001,\\\"f3\\\":1003,\\\"f5\\\":1005,\\\"f6\\\":1006,\\\"f7\\\":1007}\", JSON.toJSONString(d));\n    }\n\n    @JSONType(ignores = \"f2\")\n    public static class A {\n\n        private int f1;\n        private int f2;\n        private int f3;\n\n        public int getF1() {\n            return f1;\n        }\n\n        public void setF1(int f1) {\n            this.f1 = f1;\n        }\n\n        public int getF2() {\n            return f2;\n        }\n\n        public void setF2(int f2) {\n            this.f2 = f2;\n        }\n\n        public int getF3() {\n            return f3;\n        }\n\n        public void setF3(int f3) {\n            this.f3 = f3;\n        }\n\n    }\n\n    @JSONType(ignores = { \"f4\" })\n    public static class B extends A {\n\n        private int f4;\n        private int f5;\n\n        public int getF4() {\n            return f4;\n        }\n\n        public void setF4(int f4) {\n            this.f4 = f4;\n        }\n\n        public int getF5() {\n            return f5;\n        }\n\n        public void setF5(int f5) {\n            this.f5 = f5;\n        }\n\n    }\n\n    public static class C extends B {\n\n        private int f6;\n\n        public int getF6() {\n            return f6;\n        }\n\n        public void setF6(int f6) {\n            this.f6 = f6;\n        }\n\n    }\n\n    public static class D extends C {\n\n        private int f7;\n\n        public int getF7() {\n            return f7;\n        }\n\n        public void setF7(int f7) {\n            this.f7 = f7;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONTypeTest_orders_arrayMapping.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\npublic class JSONTypeTest_orders_arrayMapping extends TestCase {\n\tpublic void test_1() throws Exception {\n\t\tModel vo = new Model();\n\t\tvo.setId(1001);\n\t\tvo.setName(\"xx\");\n\t\tvo.setAge(33);\n\n\t\tString json = JSON.toJSONString(vo, SerializerFeature.BeanToArray);\n\t\tassertEquals(\"[1001,\\\"xx\\\",33]\", json);\n\n\t\tJSON.parseObject(json, Model.class, Feature.SupportArrayToBean);\n\n\t\tModel[] array = new Model[] {vo};\n\t\tString json2 = JSON.toJSONString(array, SerializerFeature.BeanToArray);\n\t\tJSON.parseObject(json2, Model[].class, Feature.SupportArrayToBean);\n\t}\n\n\tpublic void test_2() throws Exception {\n\t\tString json = \"[1001,\\\"xx\\\"]\";\n\t\tJSON.parseObject(json, Model.class, Feature.SupportArrayToBean);\n\t}\n\n\t@JSONType(orders = { \"id\", \"name\", \"age\" })\n\tpublic static class Model {\n\t\tprivate int id;\n\t\tprivate String name;\n\t\tprivate int age;\n\n\t\tpublic int getId() {\n\t\t\treturn id;\n\t\t}\n\n\t\tpublic void setId(int id) {\n\t\t\tthis.id = id;\n\t\t}\n\n\t\tpublic String getName() {\n\t\t\treturn name;\n\t\t}\n\n\t\tpublic void setName(String name) {\n\t\t\tthis.name = name;\n\t\t}\n\n\t\tpublic int getAge() {\n\t\t\treturn age;\n\t\t}\n\n\t\tpublic void setAge(int age) {\n\t\t\tthis.age = age;\n\t\t}\n\t}\n\t\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSONTypeTest_orders_arrayMapping_2.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\npublic class JSONTypeTest_orders_arrayMapping_2 extends TestCase {\n\tpublic void test_1() throws Exception {\n\t\tModel vo = new Model();\n\t\tvo.setId(1001);\n\t\tvo.setName(\"xx\");\n\t\tvo.setAge(33);\n\t\tvo.setDvalue(0.1D);\n\n\t\tString json = JSON.toJSONString(vo);\n\t\tassertEquals(\"[1001,\\\"xx\\\",33,0.0,0.1]\", json);\n\n\t\tJSON.parseObject(json, Model.class);\n\n\t\tModel[] array = new Model[] {vo};\n\t\tString json2 = JSON.toJSONString(array);\n\t\tJSON.parseObject(json2, Model[].class);\n\n\t\tString json3 = \"[\\\"1001\\\",\\\"xx\\\",33,\\\"0.0\\\",\\\"0.1\\\"]\";\n\t\tJSON.parseObject(json3, Model.class);\n\t}\n\n\t@JSONType(orders = {\"id\", \"name\", \"age\", \"value\"}\n\t\t\t, serialzeFeatures = SerializerFeature.BeanToArray\n\t\t\t, parseFeatures = Feature.SupportArrayToBean\n\t)\n\tpublic static class Model {\n\t\tprivate int id;\n\t\tprivate String name;\n\t\tprivate int age;\n\t\tprivate float value;\n\t\tprivate double dvalue;\n\n\t\tpublic int getId() {\n\t\t\treturn id;\n\t\t}\n\n\t\tpublic void setId(int id) {\n\t\t\tthis.id = id;\n\t\t}\n\n\t\tpublic String getName() {\n\t\t\treturn name;\n\t\t}\n\n\t\tpublic void setName(String name) {\n\t\t\tthis.name = name;\n\t\t}\n\n\t\tpublic int getAge() {\n\t\t\treturn age;\n\t\t}\n\n\t\tpublic void setAge(int age) {\n\t\t\tthis.age = age;\n\t\t}\n\n\t\tpublic float getValue() {\n\t\t\treturn value;\n\t\t}\n\n\t\tpublic void setValue(float value) {\n\t\t\tthis.value = value;\n\t\t}\n\n\t\tpublic double getDvalue() {\n\t\t\treturn dvalue;\n\t\t}\n\n\t\tpublic void setDvalue(double dvalue) {\n\t\t\tthis.dvalue = dvalue;\n\t\t}\n\t}\n\t\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSON_isValid_0.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\npublic class JSON_isValid_0 extends TestCase {\n    public void test_for_isValid_0() throws Exception {\n        assertFalse(JSON.isValid(null));\n        assertFalse(JSON.isValid(\"\"));\n    }\n\n    public void test_for_isValid_value() throws Exception {\n        assertTrue(JSON.isValid(\"null\"));\n        assertTrue(JSON.isValid(\"123\"));\n        assertTrue(JSON.isValid(\"12.34\"));\n        assertTrue(JSON.isValid(\"true\"));\n        assertTrue(JSON.isValid(\"false\"));\n        assertTrue(JSON.isValid(\"\\\"abc\\\"\"));\n    }\n\n\n    public void test_for_isValid_obj() throws Exception {\n        assertTrue(JSON.isValid(\"{}\"));\n        assertTrue(JSON.isValid(\"{\\\"id\\\":123}\"));\n        assertTrue(JSON.isValid(\"{\\\"id\\\":\\\"123\\\"}\"));\n        assertTrue(JSON.isValid(\"{\\\"id\\\":true}\"));\n        assertTrue(JSON.isValid(\"{\\\"id\\\":{}}\"));\n    }\n\n    public void test_for_isValid_obj_1() throws Exception {\n        assertTrue(JSON.isValidObject(\"{}\"));\n        assertTrue(JSON.isValidObject(\"{\\\"id\\\":123}\"));\n        assertTrue(JSON.isValidObject(\"{\\\"id\\\":\\\"123\\\"}\"));\n        assertTrue(JSON.isValidObject(\"{\\\"id\\\":true}\"));\n        assertTrue(JSON.isValidObject(\"{\\\"id\\\":{}}\"));\n    }\n\n    public void test_for_isValid_array() throws Exception {\n        assertTrue(JSON.isValid(\"[]\"));\n        assertTrue(JSON.isValid(\"[[],[]]\"));\n        assertTrue(JSON.isValid(\"[{\\\"id\\\":123}]\"));\n        assertTrue(JSON.isValid(\"[{\\\"id\\\":\\\"123\\\"}]\"));\n        assertTrue(JSON.isValid(\"[{\\\"id\\\":true}]\"));\n        assertTrue(JSON.isValid(\"[{\\\"id\\\":{}}]\"));\n    }\n\n    public void test_for_isValid_array_1() throws Exception {\n        assertTrue(JSON.isValidArray(\"[]\"));\n        assertTrue(JSON.isValidArray(\"[[],[]]\"));\n        assertTrue(JSON.isValidArray(\"[{\\\"id\\\":123}]\"));\n        assertTrue(JSON.isValidArray(\"[{\\\"id\\\":\\\"123\\\"}]\"));\n        assertTrue(JSON.isValidArray(\"[{\\\"id\\\":true}]\"));\n        assertTrue(JSON.isValidArray(\"[{\\\"id\\\":{}}]\"));\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSON_isValid_1_error.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\npublic class JSON_isValid_1_error extends TestCase {\n    public void test_for_isValid_0() throws Exception {\n        assertFalse(JSON.isValid(null));\n        assertFalse(JSON.isValid(\"\"));\n    }\n\n    public void test_for_isValid_value() throws Exception {\n        assertFalse(JSON.isValid(\"nul\"));\n        assertFalse(JSON.isValid(\"null,null\"));\n        assertFalse(JSON.isValid(\"123,\"));\n        assertFalse(JSON.isValid(\"123,123\"));\n        assertFalse(JSON.isValid(\"12.34,true\"));\n        assertFalse(JSON.isValid(\"12.34,123\"));\n        assertFalse(JSON.isValid(\"tru\"));\n        assertFalse(JSON.isValid(\"true,123\"));\n        assertFalse(JSON.isValid(\"fals\"));\n        assertFalse(JSON.isValid(\"false,123\"));\n        assertFalse(JSON.isValid(\"\\\"abc\"));\n        assertFalse(JSON.isValid(\"\\\"abc\\\",123\"));\n    }\n\n\n    public void test_for_isValid_obj() throws Exception {\n        assertFalse(JSON.isValid(\"{\"));\n        assertFalse(JSON.isValid(\"{\\\"id\\\":123,}}\"));\n        assertFalse(JSON.isValid(\"{\\\"id\\\":\\\"123}\"));\n        assertFalse(JSON.isValid(\"{\\\"id\\\":{]}\"));\n        assertFalse(JSON.isValid(\"{\\\"id\\\":{\"));\n    }\n\n    public void test_for_isValid_obj_1() throws Exception {\n        assertFalse(JSON.isValidObject(\"{\"));\n        assertFalse(JSON.isValidObject(\"{\\\"id\\\":123,}}\"));\n        assertFalse(JSON.isValidObject(\"{\\\"id\\\":\\\"123}\"));\n        assertFalse(JSON.isValidObject(\"{\\\"id\\\":{]}\"));\n        assertFalse(JSON.isValidObject(\"{\\\"id\\\":{\"));\n    }\n\n    public void test_for_isValid_array() throws Exception {\n        assertFalse(JSON.isValid(\"[\"));\n        assertFalse(JSON.isValid(\"[[,[]]\"));\n        assertFalse(JSON.isValid(\"[{\\\"id\\\":123]\"));\n        assertFalse(JSON.isValid(\"[{\\\"id\\\":\\\"123\\\"}\"));\n        assertFalse(JSON.isValid(\"[{\\\"id\\\":true]\"));\n        assertFalse(JSON.isValid(\"[{\\\"id\\\":{}]\"));\n    }\n\n    public void test_for_isValid_array_1() throws Exception {\n        assertFalse(JSON.isValidArray(\"[\"));\n        assertFalse(JSON.isValidArray(\"[[,[]]\"));\n        assertFalse(JSON.isValidArray(\"[{\\\"id\\\":123]\"));\n        assertFalse(JSON.isValidArray(\"[{\\\"id\\\":\\\"123\\\"}\"));\n        assertFalse(JSON.isValidArray(\"[{\\\"id\\\":true]\"));\n        assertFalse(JSON.isValidArray(\"[{\\\"id\\\":{}]\"));\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSON_toJSONStringTest.java",
    "content": "/*\r\n * Copyright 1999-2017 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.json.bvt;\r\n\r\nimport java.util.Collections;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.JavaBeanSerializer;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\n\r\npublic class JSON_toJSONStringTest extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        User user = new User();\r\n        user.setId(123);\r\n        user.setName(\"毛头\");\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.put(User.class, new JavaBeanSerializer(User.class, \"id\"));\r\n\r\n        JSONSerializer serializer = new JSONSerializer(mapping);\r\n        serializer.write(user);\r\n        String jsonString = serializer.toString();\r\n\r\n        Assert.assertEquals(\"{\\\"id\\\":123}\", jsonString);\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        User user = new User();\r\n        user.setId(123);\r\n        user.setName(\"毛头\");\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.put(User.class, new JavaBeanSerializer(User.class, Collections.singletonMap(\"id\", \"uid\")));\r\n\r\n        JSONSerializer serializer = new JSONSerializer(mapping);\r\n        serializer.write(user);\r\n        String jsonString = serializer.toString();\r\n\r\n        Assert.assertEquals(\"{\\\"uid\\\":123}\", jsonString);\r\n    }\r\n\r\n    public static class User {\r\n\r\n        private int    id;\r\n        private String name;\r\n\r\n        public int getId() {\r\n            return id;\r\n        }\r\n\r\n        public void setId(int id) {\r\n            this.id = id;\r\n        }\r\n\r\n        public String getName() {\r\n            return name;\r\n        }\r\n\r\n        public void setName(String name) {\r\n            this.name = name;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JSON_toJavaObject_test.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONObject;\r\nimport com.alibaba.fastjson.parser.ParserConfig;\r\nimport com.alibaba.fastjson.util.TypeUtils;\r\n\r\npublic class JSON_toJavaObject_test extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        A a = (A) JSON.toJavaObject(new JSONObject(), A.class);\r\n        Assert.assertNotNull(a);\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        A a = (A) TypeUtils.cast(new B(), A.class, ParserConfig.getGlobalInstance());\r\n        Assert.assertNotNull(a);\r\n    }\r\n\r\n    public static class A {\r\n\r\n    }\r\n\r\n    public static interface IB {\r\n\r\n    }\r\n\r\n    public static class B extends A implements IB {\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JavaBeanMappingTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\n\nimport junit.framework.TestCase;\n\n@SuppressWarnings(\"deprecation\")\npublic class JavaBeanMappingTest extends TestCase {\n\t\n\tpublic void test_0 () throws Exception {\n\t    ParserConfig.getGlobalInstance();\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JavaBeanTest.java",
    "content": "/*\r\n * Copyright 1999-2017 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.json.bvt;\r\n\r\nimport java.math.BigDecimal;\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.List;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\n\r\npublic class JavaBeanTest extends TestCase {\r\n\r\n    public void f_test_toJSON() throws Exception {\r\n        User user = new User();\r\n        user.setName(\"校长\");\r\n        user.setAge(3);\r\n        user.setSalary(new BigDecimal(\"123456789.0123\"));\r\n\r\n        String jsonString = JSON.toJSONString(user);\r\n\r\n        System.out.println(jsonString);\r\n\r\n        JSON.parseObject(jsonString);\r\n        User user1 = JSON.parseObject(jsonString, User.class);\r\n\r\n        Assert.assertEquals(user.getAge(), user1.getAge());\r\n        Assert.assertEquals(user.getName(), user1.getName());\r\n        Assert.assertEquals(user.getSalary(), user1.getSalary());\r\n    }\r\n\r\n    public void test_toJSON_List() throws Exception {\r\n        User user = new User();\r\n        user.setName(\"校长\");\r\n        user.setAge(3);\r\n        user.setSalary(new BigDecimal(\"123456789.0123\"));\r\n        user.setBirthdate(new Date());\r\n        user.setOld(true);\r\n\r\n        List<User> userList = new ArrayList<User>();\r\n        userList.add(user);\r\n\r\n        String jsonString = JSON.toJSONString(userList);\r\n\r\n        System.out.println(jsonString);\r\n\r\n        List<User> userList1 = JSON.parseArray(jsonString, User.class);\r\n\r\n        User user1 = userList1.get(0);\r\n\r\n        Assert.assertEquals(user.getAge(), user1.getAge());\r\n        Assert.assertEquals(user.getName(), user1.getName());\r\n        Assert.assertEquals(user.getSalary(), user1.getSalary());\r\n        Assert.assertEquals(user.getBirthdate(), user1.getBirthdate());\r\n        Assert.assertEquals(user.isOld(), user1.isOld());\r\n    }\r\n\r\n    @SuppressWarnings(\"unchecked\")\r\n    public void f_testComposite() throws Exception {\r\n        Group group = new Group();\r\n        group.setName(\"神棍\");\r\n\r\n        User user = new User();\r\n        user.setName(\"校长\");\r\n        user.setAge(3);\r\n        user.setSalary(new BigDecimal(\"123456789.0123\"));\r\n\r\n        group.getUsers().add(user);\r\n        ((List<User>) group.getUsers2()).add(user);\r\n\r\n        String jsonString = JSON.toJSONString(group);\r\n\r\n        System.out.println(jsonString);\r\n\r\n        JSON.parseObject(jsonString);\r\n        Group group1 = JSON.parseObject(jsonString, Group.class);\r\n        Assert.assertEquals(group.getName(), group1.getName());\r\n\r\n        User user1 = group1.getUsers().get(0);\r\n        Assert.assertEquals(user.getAge(), user1.getAge());\r\n        Assert.assertEquals(user.getName(), user1.getName());\r\n        Assert.assertEquals(user.getSalary(), user1.getSalary());\r\n    }\r\n\r\n    public static class User {\r\n\r\n        private String     name;\r\n        private int        age;\r\n        private BigDecimal salary;\r\n        private Date       birthdate;\r\n        private boolean    old;\r\n\r\n        public boolean isOld() {\r\n            return old;\r\n        }\r\n\r\n        public void setOld(boolean old) {\r\n            this.old = old;\r\n        }\r\n\r\n        public Date getBirthdate() {\r\n            return birthdate;\r\n        }\r\n\r\n        public void setBirthdate(Date birthdate) {\r\n            this.birthdate = birthdate;\r\n        }\r\n\r\n        public String getName() {\r\n            return name;\r\n        }\r\n\r\n        public void setName(String name) {\r\n            this.name = name;\r\n        }\r\n\r\n        public int getAge() {\r\n            return age;\r\n        }\r\n\r\n        public void setAge(int age) {\r\n            this.age = age;\r\n        }\r\n\r\n        public BigDecimal getSalary() {\r\n            return salary;\r\n        }\r\n\r\n        public void setSalary(BigDecimal salary) {\r\n            this.salary = salary;\r\n        }\r\n\r\n    }\r\n\r\n    public static class Group {\r\n\r\n        private List<User>           users  = new ArrayList<User>();\r\n        private List<? extends User> users2 = new ArrayList<User>();\r\n\r\n        private String               name;\r\n\r\n        public String getName() {\r\n            return name;\r\n        }\r\n\r\n        public void setName(String name) {\r\n            this.name = name;\r\n        }\r\n\r\n        public List<User> getUsers() {\r\n            return users;\r\n        }\r\n\r\n        public void setUsers(List<User> users) {\r\n            this.users = users;\r\n        }\r\n\r\n        public List<? extends User> getUsers2() {\r\n            return users2;\r\n        }\r\n\r\n        public void setUsers2(List<? extends User> users2) {\r\n            this.users2 = users2;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/JsonValueTest.java",
    "content": "/*\r\n * Copyright 1999-2017 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.json.bvt;\r\n\r\nimport java.util.Date;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\n\r\npublic class JsonValueTest extends TestCase {\r\n\r\n    public void test_toJSONString() throws Exception {\r\n        Assert.assertEquals(\"null\", JSON.toJSONString(Double.NaN));\r\n        Assert.assertEquals(\"3.0\", JSON.toJSONString(3D));\r\n        Assert.assertEquals(\"null\", JSON.toJSONString(Float.NaN));\r\n        Assert.assertEquals(\"3.0\", JSON.toJSONString(3F));\r\n        Assert.assertEquals(\"1292939095640\", JSON.toJSONString(new Date(1292939095640L)));\r\n        Assert.assertEquals(new Date(1292939095640L), JSON.parse(\"new Date(1292939095640)\"));\r\n    }\r\n\r\n    public void test_bug_0() throws Exception {\r\n        String text = \"[{\\\"S\\\":0,\\\"T\\\":\\\"Register\\\"},{\\\"HOST_NAME\\\":\\\"qa-qd-62-187\\\",\\\"IP\\\":[\\\"172.29.62.187\\\"],\\\"MAC_ADDR\\\":[\\\"00:16:3E:43:E5:1C\\\"],\\\"SERVICE_TAG\\\":\\\"NOSN00:16:3E:43:E5:1C\\\",\\\"VERSION\\\":\\\"2.5\\\"}]  \";\r\n        JSON.parseArray(text);\r\n    }\r\n\r\n    public void test_bug_1() throws Exception {\r\n        String text = \"[{\\\"S\\\":2,\\\"T\\\":\\\"ConnectResp\\\"},\\n\\r \\t{\\\"VAL\\\" :null}]\\r\\f\";\r\n        JSON.parseArray(text);\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/LexerTest.java",
    "content": "/*\r\n * Copyright 1999-2017 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.json.bvt;\r\n\r\nimport java.math.BigDecimal;\r\nimport java.math.BigInteger;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONArray;\r\nimport com.alibaba.fastjson.parser.JSONScanner;\r\nimport com.alibaba.fastjson.parser.JSONToken;\r\n\r\npublic class LexerTest extends TestCase {\r\n\r\n    public void test_float() throws Exception {\r\n        String text = \"123456789.0123\";\r\n        JSONScanner lexer = new JSONScanner(text);\r\n        lexer.nextToken();\r\n        BigDecimal decimalValue = lexer.decimalValue();\r\n        Assert.assertEquals(new BigDecimal(\"123456789.0123\"), decimalValue);\r\n\r\n    }\r\n\r\n    public void test_string() throws Exception {\r\n        {\r\n            JSONScanner lexer = new JSONScanner(\"\\\"中国\\\"\");\r\n            lexer.nextToken();\r\n            Assert.assertEquals(\"中国\", lexer.stringVal());\r\n        }\r\n        {\r\n            JSONScanner lexer = new JSONScanner(\"\\\"中国\\t\\\"\");\r\n            lexer.nextToken();\r\n            Assert.assertEquals(\"中国\\t\", lexer.stringVal());\r\n        }\r\n        {\r\n            JSONScanner lexer = new JSONScanner(\"\\\"中国\\tV5\\\"\");\r\n            lexer.nextToken();\r\n            Assert.assertEquals(\"中国\\tV5\", lexer.stringVal());\r\n        }\r\n\r\n        StringBuilder buf = new StringBuilder();\r\n\r\n        buf.append('\"');\r\n        buf.append(\"\\\\\\\\\\\\/\\\\b\\\\f\\\\n\\\\r\\\\t\\\\u\" + Integer.toHexString('中'));\r\n        buf.append('\"');\r\n        buf.append('\\u2001');\r\n\r\n        String text = buf.toString();\r\n\r\n        JSONScanner lexer = new JSONScanner(text.toCharArray(), text.length() - 1);\r\n        lexer.nextToken();\r\n\r\n        Assert.assertEquals(0, lexer.pos());\r\n\r\n        String stringVal = lexer.stringVal();\r\n\r\n        Assert.assertEquals(\"\\\"\\\\\\\\/\\\\b\\\\f\\\\n\\\\r\\\\t中\\\"\", JSON.toJSONString(stringVal));\r\n\r\n    }\r\n\r\n    public void test_string2() throws Exception {\r\n        StringBuilder buf = new StringBuilder();\r\n\r\n        buf.append('\"');\r\n        for (int i = 0; i < 200; ++i) {\r\n            buf.append(\"\\\\\\\\\\\\/\\\\b\\\\f\\\\n\\\\r\\\\t\\\\u\" + Integer.toHexString('中'));\r\n        }\r\n        buf.append('\"');\r\n\r\n        String text = buf.toString();\r\n\r\n        JSONScanner lexer = new JSONScanner(text.toCharArray(), text.length());\r\n        lexer.nextToken();\r\n\r\n        Assert.assertEquals(0, lexer.pos());\r\n\r\n        lexer.stringVal();\r\n\r\n    }\r\n\r\n    public void test_string3() throws Exception {\r\n        StringBuilder buf = new StringBuilder();\r\n\r\n        buf.append('\"');\r\n        for (int i = 0; i < 200; ++i) {\r\n            buf.append(\"abcdefghijklmn012345689ABCDEFG\");\r\n        }\r\n        buf.append('\"');\r\n\r\n        String text = buf.toString();\r\n\r\n        JSONScanner lexer = new JSONScanner(text.toCharArray(), text.length());\r\n        lexer.nextToken();\r\n\r\n        Assert.assertEquals(0, lexer.pos());\r\n\r\n        lexer.stringVal();\r\n    }\r\n\r\n    public void test_string4() throws Exception {\r\n        StringBuilder buf = new StringBuilder();\r\n\r\n        buf.append('\"');\r\n        for (int i = 0; i < 200; ++i) {\r\n            buf.append(\"\\\\tabcdefghijklmn012345689ABCDEFG\");\r\n        }\r\n        buf.append('\"');\r\n\r\n        String text = buf.toString();\r\n\r\n        JSONScanner lexer = new JSONScanner(text.toCharArray(), text.length());\r\n        lexer.nextToken();\r\n\r\n        Assert.assertEquals(0, lexer.pos());\r\n\r\n        lexer.stringVal();\r\n\r\n        // Assert.assertEquals(\"\\\"\\\\\\\\\\\\/\\\\b\\\\f\\\\n\\\\r\\\\t中\\\"\",\r\n        // JSON.toJSONString(stringVal));\r\n\r\n    }\r\n\r\n    public void test_empty() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"\".toCharArray(), 0);\r\n        lexer.nextToken();\r\n        Assert.assertEquals(JSONToken.EOF, lexer.token());\r\n    }\r\n\r\n    public void test_isWhitespace() throws Exception {\r\n        new JSONScanner(\"\".toCharArray(), 0);\r\n        Assert.assertTrue(JSONScanner.isWhitespace(' '));\r\n        Assert.assertTrue(JSONScanner.isWhitespace('\\b'));\r\n        Assert.assertTrue(JSONScanner.isWhitespace('\\f'));\r\n        Assert.assertTrue(JSONScanner.isWhitespace('\\n'));\r\n        Assert.assertTrue(JSONScanner.isWhitespace('\\r'));\r\n        Assert.assertTrue(JSONScanner.isWhitespace('\\t'));\r\n        Assert.assertFalse(JSONScanner.isWhitespace('k'));\r\n    }\r\n\r\n    public void test_error() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"k\");\r\n        lexer.nextToken();\r\n        Assert.assertEquals(JSONToken.ERROR, lexer.token());\r\n    }\r\n\r\n    public void test_error1() throws Exception {\r\n        Exception error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"\\\"\\\\k\\\"\");\r\n            lexer.nextToken();\r\n        } catch (Exception ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void f_test_ident() throws Exception {\r\n        {\r\n            JSONScanner lexer = new JSONScanner(\"ttue\");\r\n            lexer.nextToken();\r\n            Assert.assertEquals(JSONToken.IDENTIFIER, lexer.token());\r\n        }\r\n        {\r\n            JSONScanner lexer = new JSONScanner(\"tree\");\r\n            lexer.nextToken();\r\n            Assert.assertEquals(JSONToken.IDENTIFIER, lexer.token());\r\n        }\r\n        {\r\n            JSONScanner lexer = new JSONScanner(\"truu\");\r\n            lexer.nextToken();\r\n            Assert.assertEquals(JSONToken.IDENTIFIER, lexer.token());\r\n        }\r\n        {\r\n            JSONScanner lexer = new JSONScanner(\"fflse\");\r\n            lexer.nextToken();\r\n            Assert.assertEquals(JSONToken.IDENTIFIER, lexer.token());\r\n        }\r\n        {\r\n            JSONScanner lexer = new JSONScanner(\"nalse\");\r\n            lexer.nextToken();\r\n            Assert.assertEquals(JSONToken.IDENTIFIER, lexer.token());\r\n        }\r\n        {\r\n            JSONScanner lexer = new JSONScanner(\"faase\");\r\n            lexer.nextToken();\r\n            Assert.assertEquals(JSONToken.IDENTIFIER, lexer.token());\r\n        }\r\n        {\r\n            JSONScanner lexer = new JSONScanner(\"falle\");\r\n            lexer.nextToken();\r\n            Assert.assertEquals(JSONToken.IDENTIFIER, lexer.token());\r\n        }\r\n        {\r\n            JSONScanner lexer = new JSONScanner(\"falss\");\r\n            lexer.nextToken();\r\n            Assert.assertEquals(JSONToken.IDENTIFIER, lexer.token());\r\n        }\r\n        {\r\n            JSONScanner lexer = new JSONScanner(\"nnll\");\r\n            lexer.nextToken();\r\n            Assert.assertEquals(JSONToken.IDENTIFIER, lexer.token());\r\n        }\r\n        {\r\n            JSONScanner lexer = new JSONScanner(\"nuul\");\r\n            lexer.nextToken();\r\n            Assert.assertEquals(JSONToken.IDENTIFIER, lexer.token());\r\n        }\r\n        {\r\n            JSONScanner lexer = new JSONScanner(\"nulk\");\r\n            lexer.nextToken();\r\n            Assert.assertEquals(JSONToken.IDENTIFIER, lexer.token());\r\n        }\r\n        {\r\n            StringBuilder buf = new StringBuilder();\r\n            buf.append('n');\r\n            for (char ch = 'A'; ch <= 'Z'; ++ch) {\r\n                buf.append(ch);\r\n            }\r\n            for (char ch = 'a'; ch <= 'z'; ++ch) {\r\n                buf.append(ch);\r\n            }\r\n            JSONScanner lexer = new JSONScanner(buf.toString());\r\n            lexer.nextToken();\r\n            Assert.assertEquals(JSONToken.IDENTIFIER, lexer.token());\r\n        }\r\n    }\r\n\r\n    public void test_number() throws Exception {\r\n        String text = \"[0,1,-1,2E3,2E+3,2E-3,2e3,2e+3,2e-3]\";\r\n        JSONArray array = JSON.parseArray(text);\r\n\r\n        Assert.assertEquals(0, array.get(0));\r\n        Assert.assertEquals(1, array.get(1));\r\n        Assert.assertEquals(-1, array.get(2));\r\n        Assert.assertEquals(new BigDecimal(\"2E3\"), array.get(3));\r\n        Assert.assertEquals(new BigDecimal(\"2E3\"), array.get(4));\r\n        Assert.assertEquals(new BigDecimal(\"2E-3\"), array.get(5));\r\n        Assert.assertEquals(new BigDecimal(\"2E3\"), array.get(6));\r\n        Assert.assertEquals(new BigDecimal(\"2E3\"), array.get(7));\r\n        Assert.assertEquals(new BigDecimal(\"2E-3\"), array.get(8));\r\n\r\n        for (long i = Long.MIN_VALUE; i <= Long.MIN_VALUE + 1000 * 10; ++i) {\r\n            Assert.assertEquals(i, JSON.parse(Long.toString(i)));\r\n        }\r\n\r\n        for (long i = Long.MAX_VALUE - 1000 * 10; i <= Long.MAX_VALUE && i > 0; ++i) {\r\n            Assert.assertEquals(i, JSON.parse(Long.toString(i)));\r\n        }\r\n    }\r\n\r\n    public void test_big_integer_1() throws Exception {\r\n        String text = Long.MAX_VALUE + \"1234\";\r\n        JSONScanner lexer = new JSONScanner(text);\r\n        lexer.nextToken();\r\n        Assert.assertEquals(new BigInteger(text), lexer.integerValue());\r\n    }\r\n\r\n    public void test_big_integer_2() throws Exception {\r\n        String text = Long.MIN_VALUE + \"1234\";\r\n        JSONScanner lexer = new JSONScanner(text);\r\n        lexer.nextToken();\r\n        Assert.assertEquals(new BigInteger(text), lexer.integerValue());\r\n    }\r\n\r\n    public void test_big_integer_3() throws Exception {\r\n        String text = \"9223372036854775809\";\r\n        JSONScanner lexer = new JSONScanner(text);\r\n        lexer.nextToken();\r\n        Assert.assertEquals(new BigInteger(text), lexer.integerValue());\r\n    }\r\n\r\n    public void test_error2() {\r\n        Exception error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"--\");\r\n            lexer.nextToken();\r\n            lexer.integerValue();\r\n        } catch (Exception ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error3() {\r\n        Exception error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"\");\r\n            lexer.nextToken();\r\n            lexer.nextToken();\r\n            lexer.integerValue();\r\n        } catch (Exception ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/LinkedListFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.util.LinkedList;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class LinkedListFieldTest extends TestCase {\r\n\r\n    public void test_codec_null() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        Assert.assertEquals(\"{\\\"value\\\":[]}\", JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty));\r\n        Assert.assertEquals(\"{value:[]}\", JSON.toJSONStringZ(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty));\r\n        Assert.assertEquals(\"{value:[]}\", JSON.toJSONStringZ(v, mapping, SerializerFeature.UseSingleQuotes, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty));\r\n        Assert.assertEquals(\"{'value':[]}\", JSON.toJSONStringZ(v, mapping, SerializerFeature.UseSingleQuotes, SerializerFeature.QuoteFieldNames, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty));\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private LinkedList value;\r\n\r\n        public LinkedList getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(LinkedList value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ListFieldTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class ListFieldTest extends TestCase {\n    public void test_codec_null() throws Exception {\n        V0 v = new V0();\n\n        SerializeConfig mapping = new SerializeConfig();\n        mapping.setAsmEnable(false);\n\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\n\n        ParserConfig config = new ParserConfig();\n        config.setAutoTypeSupport(true);\n        config.setAsmEnable(false);\n        \n        V0 v1 = JSON.parseObject(text, V0.class, config, JSON.DEFAULT_PARSER_FEATURE);\n\n        Assert.assertEquals(v1.getValue(), v.getValue());\n    }\n\n\tpublic static class V0 {\n\n\t\tprivate List<Object> value;\n\n\t\tpublic List<Object> getValue() {\n\t\t\treturn value;\n\t\t}\n\n\t\tpublic void setValue(List<Object> value) {\n\t\t\tthis.value = value;\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ListFieldTest2.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class ListFieldTest2 extends TestCase {\n    public void test_codec_null() throws Exception {\n        V0 v = new V0();\n\n        SerializeConfig mapping = new SerializeConfig();\n        mapping.setAsmEnable(false);\n\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\n\n        ParserConfig config = new ParserConfig();\n        config.setAsmEnable(false);\n        \n        V0 v1 = JSON.parseObject(text, V0.class, config, JSON.DEFAULT_PARSER_FEATURE);\n\n        Assert.assertEquals(v1.getValue(), v.getValue());\n    }\n\n\tprivate static class V0 {\n\n\t\tprivate List<Object> value;\n\n\t\tpublic List<Object> getValue() {\n\t\t\treturn value;\n\t\t}\n\n\t\tpublic void setValue(List<Object> value) {\n\t\t\tthis.value = value;\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ListFieldTest3.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\nimport data.media.MediaContent;\n\npublic class ListFieldTest3 extends TestCase {\n\n\tpublic void test_typeRef() throws Exception {\n\t\tString text = \"{\\\"images\\\":[],\\\"media\\\":{\\\"width\\\":640}}\";\n\n\t\tMediaContent object = JSON.parseObject(text, MediaContent.class);\n\t}\n\n\tpublic static class Root {\n\t\tprivate List<Image> images = new ArrayList<Image>();\n\t\tprivate Entity media;\n\n\t\tpublic List<Image> getImages() {\n\t\t\treturn images;\n\t\t}\n\n\t\tpublic void setImages(List<Image> images) {\n\t\t\tthis.images = images;\n\t\t}\n\n\t\tpublic Entity getMedia() {\n\t\t\treturn media;\n\t\t}\n\n\t\tpublic void setMedia(Entity media) {\n\t\t\tthis.media = media;\n\t\t}\n\n\t}\n\n\tpublic static class Image {\n\t\tpublic int width;\n\t}\n\n\tpublic static class Entity {\n\t\tpublic String title; // Can be null\n\t\tpublic int width;\n\t\tpublic int height;\n\t\tpublic Size size;\n\t}\n\n\tpublic enum Size {\n\t\tSMALL, LARGE\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ListFloatFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\n\r\npublic class ListFloatFieldTest extends TestCase {\r\n\r\n    public void test_codec() throws Exception {\r\n        User user = new User();\r\n        user.setValue(new ArrayList<Float>());\r\n        user.getValue().add(1F);\r\n\r\n        String text = JSON.toJSONString(user);\r\n        System.out.println(text);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user1.getValue(), user.getValue());\r\n    }\r\n\r\n    public static class User {\r\n\r\n        private List<Float> value;\r\n\r\n        public List<Float> getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(List<Float> value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/LocaleFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.util.Locale;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class LocaleFieldTest extends TestCase {\r\n\r\n    public void test_codec() throws Exception {\r\n        User user = new User();\r\n        user.setValue(Locale.CANADA);\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n        String text = JSON.toJSONString(user, mapping, SerializerFeature.WriteMapNullValue);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user1.getValue(), user.getValue());\r\n    }\r\n\r\n    public void test_codec_null() throws Exception {\r\n        User user = new User();\r\n        user.setValue(null);\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n        String text = JSON.toJSONString(user, mapping, SerializerFeature.WriteMapNullValue);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user1.getValue(), user.getValue());\r\n    }\r\n\r\n    public static class User {\r\n\r\n        private Locale value;\r\n\r\n        public Locale getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(Locale value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/LongArrayFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class LongArrayFieldTest extends TestCase {\r\n\r\n    public void test_codec_null() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty);\r\n        Assert.assertEquals(\"{\\\"value\\\":[]}\", text);\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private Long[] value;\r\n\r\n        public Long[] getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(Long[] value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/LongArrayFieldTest_primitive.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class LongArrayFieldTest_primitive extends TestCase {\r\n\r\n    public void test_codec_null() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty);\r\n        Assert.assertEquals(\"{\\\"value\\\":[]}\", text);\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private long[] value;\r\n\r\n        public long[] getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(long[] value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/LongFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.parser.ParserConfig;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class LongFieldTest extends TestCase {\r\n\r\n    public void test_codec() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(1001L);\r\n\r\n        String text = JSON.toJSONString(v);\r\n        System.out.println(text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n    \r\n    public void test_codec_null_asm() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(true);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        ParserConfig config = new ParserConfig();\r\n        config.setAsmEnable(false);\r\n        \r\n        V0 v1 = JSON.parseObject(text, V0.class, config, JSON.DEFAULT_PARSER_FEATURE);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullNumberAsZero);\r\n        Assert.assertEquals(\"{\\\"value\\\":0}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(Long.valueOf(0), v1.getValue());\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private Long value;\r\n\r\n        public Long getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(Long value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/LongFieldTest_2.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport com.alibaba.fastjson.JSONReader;\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.parser.Feature;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport java.io.StringReader;\r\n\r\npublic class LongFieldTest_2 extends TestCase {\r\n\r\n    public void test_min() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(Long.MIN_VALUE);\r\n\r\n        String text = JSON.toJSONString(v);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_min_reader() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(Long.MIN_VALUE);\r\n\r\n        String text = JSON.toJSONString(v);\r\n\r\n        V0 v1 = new JSONReader(new StringReader(text)).readObject(V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n    \r\n    public void test_max() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(Long.MAX_VALUE);\r\n\r\n        String text = JSON.toJSONString(v);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_max_reader() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(Long.MAX_VALUE);\r\n\r\n        String text = JSON.toJSONString(v);\r\n\r\n        V0 v1 = new JSONReader(new StringReader(text)).readObject(V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n    \r\n    public void test_min_array() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(Long.MIN_VALUE);\r\n\r\n        String text = JSON.toJSONString(v, SerializerFeature.BeanToArray);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class, Feature.SupportArrayToBean);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_min_array_reader() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(Long.MIN_VALUE);\r\n\r\n        String text = JSON.toJSONString(v, SerializerFeature.BeanToArray);\r\n\r\n        V0 v1 = new JSONReader(new StringReader(text), Feature.SupportArrayToBean).readObject(V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n    \r\n    public void test_max_array() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(Long.MAX_VALUE);\r\n\r\n        String text = JSON.toJSONString(v, SerializerFeature.BeanToArray);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class, Feature.SupportArrayToBean);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_max_array_reader() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(Long.MAX_VALUE);\r\n\r\n        String text = JSON.toJSONString(v, SerializerFeature.BeanToArray);\r\n\r\n        V0 v1 = new JSONReader(new StringReader(text), Feature.SupportArrayToBean).readObject(V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private Long value;\r\n\r\n        public Long getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(Long value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/LongFieldTest_2_private.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.parser.Feature;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\nimport com.alibaba.json.bvt.LongFieldTest_2.V0;\r\n\r\nimport junit.framework.TestCase;\r\n\r\npublic class LongFieldTest_2_private extends TestCase {\r\n\r\n    public void test_min() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(Long.MIN_VALUE);\r\n\r\n        String text = JSON.toJSONString(v);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n    \r\n    public void test_max() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(Long.MIN_VALUE);\r\n\r\n        String text = JSON.toJSONString(v);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n    \r\n    public void test_min_array() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(Long.MIN_VALUE);\r\n\r\n        String text = JSON.toJSONString(v, SerializerFeature.BeanToArray);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class, Feature.SupportArrayToBean);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n    \r\n    public void test_max_array() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(Long.MIN_VALUE);\r\n\r\n        String text = JSON.toJSONString(v, SerializerFeature.BeanToArray);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class, Feature.SupportArrayToBean);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    private static class V0 {\r\n\r\n        private Long value;\r\n\r\n        public Long getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(Long value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/LongFieldTest_2_stream.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.io.StringReader;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONReader;\r\nimport com.alibaba.fastjson.parser.Feature;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\nimport junit.framework.TestCase;\r\n\r\npublic class LongFieldTest_2_stream extends TestCase {\r\n\r\n    public void test_min() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(Long.MIN_VALUE);\r\n\r\n        String text = JSON.toJSONString(v);\r\n\r\n        JSONReader reader = new JSONReader(new StringReader(text));\r\n        V0 v1 = reader.readObject(V0.class);\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n        reader.close();\r\n    }\r\n    \r\n    public void test_max() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(Long.MIN_VALUE);\r\n\r\n        String text = JSON.toJSONString(v);\r\n\r\n        JSONReader reader = new JSONReader(new StringReader(text));\r\n        V0 v1 = reader.readObject(V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n    \r\n    public void test_min_array() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(Long.MIN_VALUE);\r\n\r\n        String text = JSON.toJSONString(v, SerializerFeature.BeanToArray);\r\n\r\n        JSONReader reader = new JSONReader(new StringReader(text), Feature.SupportArrayToBean);\r\n        V0 v1 = reader.readObject(V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n    \r\n    public void test_max_array() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(Long.MIN_VALUE);\r\n\r\n        String text = JSON.toJSONString(v, SerializerFeature.BeanToArray);\r\n\r\n        JSONReader reader = new JSONReader(new StringReader(text), Feature.SupportArrayToBean);\r\n        V0 v1 = reader.readObject(V0.class);\r\n\r\n        Assert.assertEquals(v.getValue(), v1.getValue());\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private Long value;\r\n\r\n        public Long getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(Long value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/LongFieldTest_3.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.util.Random;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\n\r\nimport junit.framework.TestCase;\r\n\r\npublic class LongFieldTest_3 extends TestCase {\r\n\r\n    public void test_min() throws Exception {\r\n        Random random = new Random();\r\n        Model[] array = new Model[2048];\r\n        for (int i = 0; i < array.length; ++i) {\r\n            array[i] = new Model();\r\n            array[i].value = random.nextLong();\r\n        }\r\n\r\n        String text = JSON.toJSONString(array);\r\n\r\n        Model[] array2 = JSON.parseObject(text, Model[].class);\r\n\r\n        Assert.assertEquals(array.length, array2.length);\r\n        for (int i = 0; i < array.length; ++i) {\r\n            Assert.assertEquals(array[i].value, array2[i].value);\r\n        }\r\n    }\r\n\r\n\r\n    public static class Model {\r\n\r\n        public long value;\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/LongFieldTest_3_private.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.util.Random;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\n\r\nimport junit.framework.TestCase;\r\n\r\npublic class LongFieldTest_3_private extends TestCase {\r\n\r\n    public void test_min() throws Exception {\r\n        Random random = new Random();\r\n        Model[] array = new Model[8192];\r\n        for (int i = 0; i < array.length; ++i) {\r\n            array[i] = new Model();\r\n            array[i].value = random.nextLong();\r\n        }\r\n\r\n        String text = JSON.toJSONString(array);\r\n\r\n        Model[] array2 = JSON.parseObject(text, Model[].class);\r\n\r\n        Assert.assertEquals(array.length, array2.length);\r\n        for (int i = 0; i < array.length; ++i) {\r\n            Assert.assertEquals(array[i].value, array2[i].value);\r\n        }\r\n    }\r\n\r\n\r\n    private static class Model {\r\n\r\n        public long value;\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/LongFieldTest_3_stream.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.io.StringReader;\r\nimport java.util.Random;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONReader;\r\n\r\nimport junit.framework.TestCase;\r\n\r\npublic class LongFieldTest_3_stream extends TestCase {\r\n\r\n    public void test_min() throws Exception {\r\n        Random random = new Random();\r\n        Model[] array = new Model[8192];\r\n        for (int i = 0; i < array.length; ++i) {\r\n            array[i] = new Model();\r\n            array[i].value = random.nextLong();\r\n        }\r\n\r\n        String text = JSON.toJSONString(array);\r\n\r\n        JSONReader reader = new JSONReader(new StringReader(text));\r\n        Model[] array2 = reader.readObject(Model[].class);\r\n\r\n        Assert.assertEquals(array.length, array2.length);\r\n        for (int i = 0; i < array.length; ++i) {\r\n            Assert.assertEquals(array[i].value, array2[i].value);\r\n        }\r\n        reader.close();\r\n    }\r\n\r\n\r\n    public static class Model {\r\n\r\n        public long value;\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/LongFieldTest_4.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.util.Random;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.annotation.JSONType;\r\nimport com.alibaba.fastjson.parser.Feature;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\nimport junit.framework.TestCase;\r\n\r\npublic class LongFieldTest_4 extends TestCase {\r\n\r\n    public void test_min() throws Exception {\r\n        Random random = new Random();\r\n        Model[] array = new Model[2048];\r\n        for (int i = 0; i < array.length; ++i) {\r\n            array[i] = new Model();\r\n            array[i].value = random.nextLong();\r\n        }\r\n\r\n        String text = JSON.toJSONString(array);\r\n\r\n        Model[] array2 = JSON.parseObject(text, Model[].class);\r\n\r\n        Assert.assertEquals(array.length, array2.length);\r\n        for (int i = 0; i < array.length; ++i) {\r\n            Assert.assertEquals(array[i].value, array2[i].value);\r\n        }\r\n    }\r\n\r\n    @JSONType(serialzeFeatures = SerializerFeature.BeanToArray, parseFeatures = Feature.SupportArrayToBean)\r\n    public static class Model {\r\n\r\n        public long value;\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/LongFieldTest_4_stream.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.io.StringReader;\r\nimport java.util.Random;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONReader;\r\nimport com.alibaba.fastjson.annotation.JSONType;\r\nimport com.alibaba.fastjson.parser.Feature;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\nimport com.alibaba.json.bvt.LongFieldTest_3_stream.Model;\r\n\r\nimport junit.framework.TestCase;\r\n\r\npublic class LongFieldTest_4_stream extends TestCase {\r\n\r\n    public void test_min() throws Exception {\r\n        Random random = new Random();\r\n        Model[] array = new Model[2048];\r\n        for (int i = 0; i < array.length; ++i) {\r\n            array[i] = new Model();\r\n            array[i].value = random.nextLong();\r\n        }\r\n\r\n        String text = JSON.toJSONString(array);\r\n\r\n        JSONReader reader = new JSONReader(new StringReader(text));\r\n        Model[] array2 = reader.readObject(Model[].class);\r\n\r\n        Assert.assertEquals(array.length, array2.length);\r\n        for (int i = 0; i < array.length; ++i) {\r\n            Assert.assertEquals(array[i].value, array2[i].value);\r\n        }\r\n        reader.close();\r\n    }\r\n\r\n    @JSONType(serialzeFeatures = SerializerFeature.BeanToArray, parseFeatures = Feature.SupportArrayToBean)\r\n    public static class Model {\r\n\r\n        public long value;\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/LongFieldTest_primitive.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.parser.ParserConfig;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class LongFieldTest_primitive extends TestCase {\r\n\r\n\tpublic void test_codec() throws Exception {\r\n\t\tV0 v = new V0();\r\n\t\tv.setValue(1001L);\r\n\r\n\t\tString text = JSON.toJSONString(v);\r\n\r\n\t\tV0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n\t\tAssert.assertEquals(v1.getValue(), v.getValue());\r\n\t}\r\n\r\n\tpublic void test_codec_null() throws Exception {\r\n\t\tV0 v = new V0();\r\n\r\n\t\tSerializeConfig mapping = new SerializeConfig();\r\n\t\tmapping.setAsmEnable(false);\r\n\r\n\t\tString text = JSON.toJSONString(v, mapping,\r\n\t\t\t\tSerializerFeature.WriteMapNullValue);\r\n\t\tAssert.assertEquals(\"{\\\"value\\\":123}\", text);\r\n\r\n\t\tV0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n\t\tAssert.assertEquals(v1.getValue(), v.getValue());\r\n\t}\r\n\r\n\tpublic void test_codec_null_asm() throws Exception {\r\n\t\tV0 v = new V0();\r\n\r\n\t\tSerializeConfig mapping = new SerializeConfig();\r\n\t\tmapping.setAsmEnable(true);\r\n\r\n\t\tString text = JSON.toJSONString(v, mapping,\r\n\t\t\t\tSerializerFeature.WriteMapNullValue);\r\n\t\tAssert.assertEquals(\"{\\\"value\\\":123}\", text);\r\n\r\n\t\tParserConfig config = new ParserConfig();\r\n\t\tconfig.setAsmEnable(false);\r\n\r\n\t\tV0 v1 = JSON.parseObject(text, V0.class, config,\r\n\t\t\t\tJSON.DEFAULT_PARSER_FEATURE);\r\n\r\n\t\tAssert.assertEquals(v1.getValue(), v.getValue());\r\n\t}\r\n\r\n\tpublic void test_codec_null_1() throws Exception {\r\n\t\tV0 v = new V0();\r\n\r\n\t\tSerializeConfig mapping = new SerializeConfig();\r\n\t\tmapping.setAsmEnable(false);\r\n\r\n\t\tString text = JSON.toJSONString(v, mapping,\r\n\t\t\t\tSerializerFeature.WriteMapNullValue,\r\n\t\t\t\tSerializerFeature.WriteNullNumberAsZero);\r\n\t\tAssert.assertEquals(\"{\\\"value\\\":123}\", text);\r\n\r\n\t\tV0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n\t\tAssert.assertEquals(123, v1.getValue());\r\n\t}\r\n\r\n\tpublic static class V0 {\r\n\r\n\t\tprivate long value = 123L;\r\n\r\n\t\tpublic long getValue() {\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\tpublic void setValue(long value) {\r\n\t\t\tthis.value = value;\r\n\t\t}\r\n\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/MapRefTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class MapRefTest extends TestCase {\n\n    public void test_0() throws Exception {\n        String text;\n        {\n            Map<String, Object> map = new HashMap<String, Object>();\n\n            User user = new User();\n            user.setId(123);\n            user.setName(\"wenshao\");\n            \n            map.put(\"u1\", user);\n            map.put(\"u2\", user);\n            \n            text = JSON.toJSONString(map);\n        }\n        \n        System.out.println(text);\n        Map<String, Object> map = JSON.parseObject(text, new TypeReference<Map<String, Object>>() {});\n        //Assert.assertEquals(map, map.get(\"this\"));\n        Assert.assertEquals(map.get(\"u1\"), map.get(\"u2\"));\n    }\n\n    public static class User {\n\n        private int    id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/MapRefTest1.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class MapRefTest1 extends TestCase {\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.MapRefTest1\");\n    }\n\n    public void test_0() throws Exception {\n        String text;\n        {\n            Map<String, Object> map = new HashMap<String, Object>();\n\n            User user = new User();\n            user.setId(123);\n            user.setName(\"wenshao\");\n            \n            map.put(\"u1\", user);\n            map.put(\"u2\", user);\n            \n            text = JSON.toJSONString(map, SerializerFeature.WriteClassName);\n        }\n        \n        System.out.println(text);\n        Map<String, Object> map = JSON.parseObject(text);\n        //Assert.assertEquals(map, map.get(\"this\"));\n        Assert.assertEquals(map.get(\"u1\"), map.get(\"u2\"));\n    }\n\n    public static class User {\n\n        private int    id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/MapRefTest2.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class MapRefTest2 extends TestCase {\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.MapRefTest2\");\n    }\n\n    public void test_0() throws Exception {\n        String text;\n        {\n            Map<String, Object> map = new HashMap<String, Object>();\n\n            User user = new User();\n            user.setId(123);\n            user.setName(\"wenshao\");\n            \n            map.put(\"u1\", user);\n            map.put(\"u2\", user);\n            \n            text = JSON.toJSONString(map, SerializerFeature.WriteClassName);\n        }\n        \n        System.out.println(text);\n        Map<String, Object> map = JSON.parseObject(text, new TypeReference<Map<String, Object>>() {});\n        //Assert.assertEquals(map, map.get(\"this\"));\n        Assert.assertEquals(map.get(\"u1\"), map.get(\"u2\"));\n    }\n\n    public static class User {\n\n        private int    id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/MapRefTest3.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class MapRefTest3 extends TestCase {\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.MapRefTest3\");\n    }\n\n    public void test_0() throws Exception {\n        String text;\n        {\n            Map<String, Object> map = new HashMap<String, Object>();\n\n            User user = new User();\n            user.setId(123);\n            user.setName(\"wenshao\");\n            \n            map.put(\"u1\", user);\n            map.put(\"u2\", user);\n            \n            text = JSON.toJSONString(map, SerializerFeature.WriteClassName);\n        }\n        \n        System.out.println(text);\n        Map<String, Object> map = JSON.parseObject(text, new TypeReference<Map<String, Object>>() {});\n        //Assert.assertEquals(map, map.get(\"this\"));\n        Assert.assertEquals(map.get(\"u1\"), map.get(\"u2\"));\n    }\n\n    public static class User {\n\n        private int    id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/MapRefTest4.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class MapRefTest4 extends TestCase {\n\n    public void test_0() throws Exception {\n        String text = \"{\\\"u1\\\":{\\\"id\\\":123,\\\"name\\\":\\\"wenshao\\\"},\\\"u2\\\":{\\\"$ref\\\":\\\"..\\\"}}\";\n        Map<String, Object> map = JSON.parseObject(text, new TypeReference<Map<String, Object>>() {});\n        //Assert.assertEquals(map, map.get(\"this\"));\n        Assert.assertSame(map, map.get(\"u2\"));\n    }\n\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/MapRefTest5.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class MapRefTest5 extends TestCase {\n\n    public void test_0() throws Exception {\n        String text = \"[{\\\"u1\\\":{\\\"id\\\":123,\\\"name\\\":\\\"wenshao\\\"},\\\"u2\\\":{\\\"$ref\\\":\\\"$\\\"}}]\";\n        List<Map<String, Object>> list = JSON.parseObject(text, new TypeReference<List<Map<String, Object>>>() {});\n        //Assert.assertEquals(map, map.get(\"this\"));\n        Assert.assertSame(list, list.get(0).get(\"u2\"));\n    }\n\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/MapRefTest6.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class MapRefTest6 extends TestCase {\n\n    public void test_0() throws Exception {\n        List<Map<Object, Object>> list = JSON.parseObject(\"[{},{\\\"$\\\":\\\"$[0]\\\"},{\\\"$001\\\":\\\"101\\\"},{\\\"$r01\\\":\\\"102\\\"},{\\\"$re1\\\":\\\"103\\\"}]\",\n                                                          new TypeReference<List<Map<Object, Object>>>() {\n                                                          });\n        Assert.assertEquals(5, list.size());\n        Assert.assertEquals(true, ((Map)list.get(0)).isEmpty());\n        Assert.assertEquals(\"$[0]\", ((Map)list.get(1)).get(\"$\"));\n        Assert.assertEquals(\"101\", ((Map)list.get(2)).get(\"$001\"));\n        Assert.assertEquals(\"102\", ((Map)list.get(3)).get(\"$r01\"));\n        Assert.assertEquals(\"103\", ((Map)list.get(4)).get(\"$re1\"));\n    }\n\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/MapTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class MapTest extends TestCase {\n\n    public void test_null() throws Exception {\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(null, \"123\");\n        String text = JSON.toJSONString(map);\n        Assert.assertEquals(\"{null:\\\"123\\\"}\", text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/MapTest2.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\n\npublic class MapTest2 extends TestCase {\n    public void test_map () throws Exception {\nMap<Object, Object> map = JSON.parseObject(\"{1:\\\"2\\\",\\\"3\\\":4,'5':6}\", new TypeReference<Map<Object, Object>>() {});\nAssert.assertEquals(\"2\", map.get(1));\nAssert.assertEquals(4, map.get(\"3\"));\nAssert.assertEquals(6, map.get(\"5\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/MaterializedInterfaceTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class MaterializedInterfaceTest extends TestCase {\n    \n    public void test_parse() throws Exception {\n        String text = \"{\\\"id\\\":123, \\\"name\\\":\\\"chris\\\"}\";\n        Bean bean = JSON.parseObject(text, Bean.class);\n        \n        Assert.assertEquals(123, bean.getId());\n        Assert.assertEquals(\"chris\", bean.getName());\n        \n        String text2 = JSON.toJSONString(bean);\n        System.out.println(text2);\n    }\n\n    public static interface Bean {\n        int getId();\n\n        void setId(int value);\n\n        String getName();\n\n        void setName(String value);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/MaterializedInterfaceTest2.java",
    "content": "package com.alibaba.json.bvt;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.util.TypeUtils;\n\npublic class MaterializedInterfaceTest2 extends TestCase {\n    \n    public void test_parse() throws Exception {\n        String text = \"{\\\"id\\\":123, \\\"name\\\":\\\"chris\\\"}\";\n        JSONObject object = JSON.parseObject(text);\n        \n        Bean bean = TypeUtils.cast(object, Bean.class, null);\n        \n        Assert.assertEquals(123, bean.getId());\n        Assert.assertEquals(\"chris\", bean.getName());\n        \n        String text2 = JSON.toJSONString(bean);\n        System.out.println(text2);\n    }\n\n    public static interface Bean {\n        int getId();\n\n        void setId(int value);\n\n        String getName();\n\n        void setName(String value);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ModuleTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\nimport com.alibaba.fastjson.serializer.MiscCodec;\nimport com.alibaba.fastjson.serializer.ObjectSerializer;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.spi.Module;\nimport junit.framework.TestCase;\n\npublic class ModuleTest extends TestCase {\n    public void test_for_module() throws Exception {\n        ParserConfig config = new ParserConfig();\n        config.register(new MyModuel2());\n        config.register(new MyModuel());\n\n        assertSame(MiscCodec.instance, config.getDeserializer(A.class));\n    }\n\n    public void test_for_module_1() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.register(new MyModuel2());\n        config.register(new MyModuel());\n\n        assertSame(MiscCodec.instance, config.getObjectWriter(A.class));\n    }\n\n    public static class A {\n\n    }\n\n    public static class MyModuel implements Module {\n\n        @Override\n        public ObjectDeserializer createDeserializer(ParserConfig config, Class type) {\n            return MiscCodec.instance;\n        }\n\n        @Override\n        public ObjectSerializer createSerializer(SerializeConfig config, Class type) {\n            return MiscCodec.instance;\n        }\n    }\n\n    public static class MyModuel2 implements Module {\n\n        @Override\n        public ObjectDeserializer createDeserializer(ParserConfig config, Class type) {\n            return null;\n        }\n\n        @Override\n        public ObjectSerializer createSerializer(SerializeConfig config, Class type) {\n            return null;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/NotWriteRootClassNameTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\n\npublic class NotWriteRootClassNameTest extends TestCase {\n    public void test_NotWriteRootClassName() throws Exception {\n        SerializerFeature[] features = new SerializerFeature[] {SerializerFeature.WriteClassName, SerializerFeature.NotWriteRootClassName};\n        Assert.assertEquals(\"{}\", JSON.toJSONString(new VO(), features));\n        Assert.assertEquals(\"{}\", JSON.toJSONString(new V1(), features));\n    }\n    \n    public static class VO {\n        \n    }\n    \n    private static class V1 {\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/NumberFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.math.BigDecimal;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class NumberFieldTest extends TestCase {\r\n\r\n    public void test_codec() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(1001L);\r\n\r\n        String text = JSON.toJSONString(v);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue().intValue(), v.getValue().intValue());\r\n    }\r\n    \r\n    public void test_codec_no_asm() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(1001L);\r\n        \r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":1001}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(Integer.valueOf(1001), v1.getValue());\r\n    }\r\n\r\n    public void test_codec_null() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n    \r\n    public void test_codec_2_no_asm() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(Long.MAX_VALUE);\r\n        \r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":\" + Long.MAX_VALUE + \"}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(new Long(Long.MAX_VALUE), v1.getValue());\r\n    }\r\n    \r\n    public void test_codec_2_asm() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(Long.MAX_VALUE);\r\n        \r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(true);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":\" + Long.MAX_VALUE + \"}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(new Long(Long.MAX_VALUE), v1.getValue());\r\n    }\r\n    \r\n    public void test_codec_3_no_asm() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(new BigDecimal(\"3.2\"));\r\n        \r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":3.2}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(new BigDecimal(\"3.2\"), v1.getValue());\r\n    }\r\n    \r\n    public void test_codec_3_asm() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(new BigDecimal(\"3.2\"));\r\n        \r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(true);\r\n        \r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":3.2}\", text);\r\n        \r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n        \r\n        Assert.assertEquals(new BigDecimal(\"3.2\"), v1.getValue());\r\n    }\r\n    \r\n    public void test_codec_min_no_asm() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(Long.MIN_VALUE);\r\n        \r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":\" + Long.MIN_VALUE + \"}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(new Long(Long.MIN_VALUE), v1.getValue());\r\n    }\r\n    \r\n    public void test_codec_min_asm() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(Long.MIN_VALUE);\r\n        \r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(true);\r\n        \r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":\" + Long.MIN_VALUE + \"}\", text);\r\n        \r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n        \r\n        Assert.assertEquals(new Long(Long.MIN_VALUE), v1.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullNumberAsZero);\r\n        Assert.assertEquals(\"{\\\"value\\\":0}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(Integer.valueOf(0), v1.getValue());\r\n    }\r\n    \r\n    public void test_codec_null_1_asm() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(true);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullNumberAsZero);\r\n        Assert.assertEquals(\"{\\\"value\\\":0}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(Integer.valueOf(0), v1.getValue());\r\n    }\r\n    \r\n    public void test_codec_cast() throws Exception {\r\n\r\n        V0 v1 = JSON.parseObject(\"{\\\"value\\\":\\\"12.3\\\"}\", V0.class);\r\n\r\n        Assert.assertEquals(new BigDecimal(\"12.3\"), v1.getValue());\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private Number value;\r\n\r\n        public Number getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(Number value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/OOMTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.lang.reflect.Field;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.SymbolTable;\n\nimport junit.framework.TestCase;\n\npublic class OOMTest extends TestCase {\n    public void test_oom() throws Exception {\n        \n        for (int i = 0; i < 1000 * 1000; ++i) {\n            String text = \"{\\\"\" + i + \"\\\":0}\";\n            JSON.parse(text);\n        }\n        \n        Field field = SymbolTable.class.getDeclaredField(\"symbols\");\n        field.setAccessible(true);\n        Object[] symbols = (Object[]) field.get(ParserConfig.getGlobalInstance().symbolTable);\n        Assert.assertEquals(4096, symbols.length);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ObjectArrayFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class ObjectArrayFieldTest extends TestCase {\r\n\r\n    public void test_codec_null() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty);\r\n        Assert.assertEquals(\"{\\\"value\\\":[]}\", text);\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private Object[] value;\r\n\r\n        public Object[] getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(Object[] value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ObjectFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class ObjectFieldTest extends TestCase {\r\n\r\n    public void test_codec_null() throws Exception {\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        {\r\n            V0 v = new V0();\r\n            String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n            Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n            V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n            Assert.assertEquals(v1.getValue(), v.getValue());\r\n        }\r\n        {\r\n            V0 v = new V0();\r\n            v.setValue(Integer.valueOf(123));\r\n            String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n            Assert.assertEquals(\"{\\\"value\\\":123}\", text);\r\n\r\n            V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n            Assert.assertEquals(v1.getValue(), v.getValue());\r\n        }\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n        {\r\n            V0 v = new V0();\r\n\r\n            String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty);\r\n            Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n        }\r\n        {\r\n            V0 v = new V0();\r\n            v.setValue(Integer.valueOf(123));\r\n            String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n            Assert.assertEquals(\"{\\\"value\\\":123}\", text);\r\n\r\n            V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n            Assert.assertEquals(v1.getValue(), v.getValue());\r\n        }\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private Object value;\r\n\r\n        public Object getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(Object value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/OverriadeTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class OverriadeTest extends TestCase {\n\n    public void test_override() throws Exception {\n        JSON.parseObject(\"{\\\"id\\\":123}\", B.class);\n    }\n\n    public static class A {\n\n        protected long id;\n\n        public long getId() {\n            return id;\n        }\n\n        public void setId(long id) {\n            throw new UnsupportedOperationException();\n        }\n\n    }\n\n    public static class B extends A {\n        public void setId(String id) {\n            this.id = Long.parseLong(id);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ParseArrayTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.lang.reflect.Type;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.TreeMap;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class ParseArrayTest extends TestCase {\n    public void test_0 () throws Exception {\n        List<Object> list = JSON.parseArray(\"[{}, {}]\", new Type[] {TreeMap.class, HashMap.class});\n        Assert.assertTrue(list.get(0) instanceof TreeMap);\n        Assert.assertTrue(list.get(1) instanceof HashMap);\n    }\n    \n    public void test_1 () throws Exception {\n        List<Object> list = JSON.parseArray(\"[1, 2, \\\"abc\\\"]\", new Type[] {int.class, Integer.class, String.class});\n        Assert.assertTrue(list.get(0) instanceof Integer);\n        Assert.assertTrue(list.get(1) instanceof Integer);\n        Assert.assertTrue(list.get(2) instanceof String);\n    }\n    \n    public void test_2 () throws Exception {\n        List<Object> list = JSON.parseArray(\"[1, null, \\\"abc\\\"]\", new Type[] {int.class, Integer.class, String.class});\n        Assert.assertTrue(list.get(0) instanceof Integer);\n        Assert.assertTrue(list.get(1) == null);\n        Assert.assertTrue(list.get(2) instanceof String);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/PatternFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.util.regex.Pattern;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class PatternFieldTest extends TestCase {\r\n\r\n    public void test_codec() throws Exception {\r\n        User user = new User();\r\n        user.setValue(Pattern.compile(\".\"));\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n        String text = JSON.toJSONString(user, mapping, SerializerFeature.WriteMapNullValue);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user1.getValue().pattern(), user.getValue().pattern());\r\n    }\r\n\r\n    public void test_codec_null() throws Exception {\r\n        User user = new User();\r\n        user.setValue(null);\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n        String text = JSON.toJSONString(user, mapping, SerializerFeature.WriteMapNullValue);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user1.getValue(), user.getValue());\r\n    }\r\n\r\n    public static class User {\r\n\r\n        private Pattern value;\r\n\r\n        public Pattern getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(Pattern value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/PointTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.awt.Point;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.AwtCodec;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\n\nimport junit.framework.TestCase;\n\npublic class PointTest extends TestCase {\n\n    public void test_color() throws Exception {\n        JSONSerializer serializer = new JSONSerializer();\n        Assert.assertEquals(AwtCodec.class, serializer.getObjectWriter(Point.class).getClass());\n        \n        Point point = new Point(3, 4);\n        String text = JSON.toJSONString(point);\n\n        Point point2 = JSON.parseObject(text, Point.class);\n\n        Assert.assertEquals(point, point2);\n    }\n    \n    public void test_color_2() throws Exception {\n        JSONSerializer serializer = new JSONSerializer();\n        Assert.assertEquals(AwtCodec.class, serializer.getObjectWriter(Point.class).getClass());\n        \n        Point point = new Point(5, 6);\n        String text = JSON.toJSONString(point);\n\n        Point point2 = JSON.parseObject(text, Point.class);\n\n        Assert.assertEquals(point, point2);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/PointTest2.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.awt.Point;\n\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.AwtCodec;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class PointTest2 extends TestCase {\n\n    public void test_point() throws Exception {\n        JSONSerializer serializer = new JSONSerializer();\n        Assert.assertEquals(AwtCodec.class, serializer.getObjectWriter(Point.class).getClass());\n        \n        Point point = new Point(3, 4);\n        String text = JSON.toJSONString(point, SerializerFeature.WriteClassName);\n\n        System.out.println(text);\n        Object obj = JSON.parse(text, Feature.SupportAutoType);\n        Point point2 = (Point) obj;\n\n        Assert.assertEquals(point, point2);\n\n        Point point3 = (Point) JSON.parseObject(text, Point.class);\n\n        Assert.assertEquals(point, point3);\n    }\n\n    public void test_point2() throws Exception {\n        JSON.parseObject(\"{}\", Point.class);\n        JSON.parseArray(\"[null,null]\", Point.class);\n        Assert.assertNull(JSON.parseObject(\"null\", Point.class));\n        JSON.parseObject(\"{\\\"@type\\\":\\\"java.awt.Point\\\"}\", Point.class);\n        JSON.parseObject(\"{\\\"value\\\":null}\", VO.class);\n    }\n\n    public static class VO {\n\n        private Point value;\n\n        public Point getValue() {\n            return value;\n        }\n\n        public void setValue(Point value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/PublicFieldDoubleTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\npublic class PublicFieldDoubleTest extends TestCase {\n\n    public static class VO {\n\n        public double id;\n    }\n\n    public void test_codec() throws Exception {\n        VO vo = new VO();\n        vo.id = 12.34;\n        \n        String str = JSON.toJSONString(vo);\n        \n        VO vo1 = JSON.parseObject(str, VO.class);\n        \n        Assert.assertTrue(vo1.id == vo.id);\n    }\n\n    public void test_nan() throws Exception {\n        JSON.parseObject(\"{\\\"id\\\":NaN}\", VO.class);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/PublicFieldFloatTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\npublic class PublicFieldFloatTest extends TestCase {\n\n    public static class VO {\n\n        public float id;\n    }\n\n    public void test_codec() throws Exception {\n        VO vo = new VO();\n        vo.id = 123.4F;\n        \n        String str = JSON.toJSONString(vo);\n        \n        VO vo1 = JSON.parseObject(str, VO.class);\n        \n        Assert.assertTrue(vo1.id == vo.id);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/PublicFieldLongTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\npublic class PublicFieldLongTest extends TestCase {\n\n    public static class VO {\n\n        public long id;\n    }\n\n    public void test_codec() throws Exception {\n        VO vo = new VO();\n        vo.id = 1234;\n        \n        String str = JSON.toJSONString(vo);\n        \n        VO vo1 = JSON.parseObject(str, VO.class);\n        \n        Assert.assertEquals(vo1.id, vo.id);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/PublicFieldStringTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\npublic class PublicFieldStringTest extends TestCase {\n\n    public static class VO {\n\n        public String id;\n    }\n\n    public void test_codec() throws Exception {\n        VO vo = new VO();\n        vo.id = \"x12345\";\n        \n        String str = JSON.toJSONString(vo);\n        \n        VO vo1 = JSON.parseObject(str, VO.class);\n        \n        Assert.assertEquals(vo1.id, vo.id);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/RectangleTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.awt.Rectangle;\n\nimport com.alibaba.fastjson.parser.Feature;\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.AwtCodec;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class RectangleTest extends TestCase {\n\n    public void test_color() throws Exception {\n        JSONSerializer serializer = new JSONSerializer();\n        Assert.assertEquals(AwtCodec.class, serializer.getObjectWriter(Rectangle.class).getClass());\n        \n        Rectangle v = new Rectangle(3, 4, 100, 200);\n        String text = JSON.toJSONString(v, SerializerFeature.WriteClassName);\n        \n        System.out.println(text);\n\n        Rectangle v2 = (Rectangle) JSON.parse(text, Feature.SupportAutoType);\n\n        Assert.assertEquals(v, v2);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/SerializeEnumAsJavaBeanTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 08/01/2017.\n */\npublic class SerializeEnumAsJavaBeanTest extends TestCase {\n    public void test_serializeEnumAsJavaBean() throws Exception {\n        String text = JSON.toJSONString(OrderType.PayOrder);\n        assertEquals(\"{\\\"remark\\\":\\\"支付订单\\\",\\\"value\\\":1}\", text);\n    }\n\n    public void test_field() throws Exception {\n        Model model = new Model();\n        model.orderType = OrderType.SettleBill;\n        String text = JSON.toJSONString(model);\n        assertEquals(\"{\\\"orderType\\\":{\\\"remark\\\":\\\"结算单\\\",\\\"value\\\":2}}\", text);\n    }\n\n    public void test_field_2() throws Exception {\n        Model model = new Model();\n        model.orderType = OrderType.SettleBill;\n        model.orderType1 = OrderType.SettleBill;\n        String text = JSON.toJSONString(model);\n        assertEquals(\"{\\\"orderType\\\":{\\\"remark\\\":\\\"结算单\\\",\\\"value\\\":2},\\\"orderType1\\\":{\\\"remark\\\":\\\"结算单\\\",\\\"value\\\":2}}\", text);\n    }\n\n    @JSONType(serializeEnumAsJavaBean = true)\n    public static enum OrderType {\n        PayOrder(1, \"支付订单\"), //\n        SettleBill(2, \"结算单\");\n\n        public final int value;\n        public final String remark;\n\n        private OrderType(int value, String remark) {\n            this.value = value;\n            this.remark = remark;\n        }\n    }\n\n    public static class Model {\n        public OrderType orderType;\n        public OrderType orderType1;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/SerializeEnumAsJavaBeanTest_manual.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 08/01/2017.\n */\npublic class SerializeEnumAsJavaBeanTest_manual extends TestCase {\n    protected void setUp() throws Exception {\n        SerializeConfig serializeConfig = SerializeConfig.globalInstance;\n        serializeConfig.configEnumAsJavaBean(OrderType.class);\n    }\n\n    public void test_serializeEnumAsJavaBean() throws Exception {\n        String text = JSON.toJSONString(OrderType.PayOrder);\n        assertEquals(\"{\\\"remark\\\":\\\"支付订单\\\",\\\"value\\\":1}\", text);\n    }\n\n    public void test_field() throws Exception {\n\n        Model model = new Model();\n        model.orderType = OrderType.SettleBill;\n        String text = JSON.toJSONString(model);\n        assertEquals(\"{\\\"orderType\\\":{\\\"remark\\\":\\\"结算单\\\",\\\"value\\\":2}}\", text);\n    }\n\n    public static enum OrderType {\n        PayOrder(1, \"支付订单\"), //\n        SettleBill(2, \"结算单\");\n\n        public final int value;\n        public final String remark;\n\n        private OrderType(int value, String remark) {\n            this.value = value;\n            this.remark = remark;\n        }\n    }\n\n    public static class Model {\n        public OrderType orderType;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/SerializeEnumAsJavaBeanTest_private.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 08/01/2017.\n */\npublic class SerializeEnumAsJavaBeanTest_private extends TestCase {\n    public void test_serializeEnumAsJavaBean() throws Exception {\n        String text = JSON.toJSONString(OrderType.PayOrder);\n        assertEquals(\"{\\\"remark\\\":\\\"支付订单\\\",\\\"value\\\":1}\", text);\n    }\n\n    public void test_field() throws Exception {\n        Model model = new Model();\n        model.orderType = OrderType.SettleBill;\n        String text = JSON.toJSONString(model);\n        assertEquals(\"{\\\"orderType\\\":{\\\"remark\\\":\\\"结算单\\\",\\\"value\\\":2}}\", text);\n    }\n\n    public void test_field_2() throws Exception {\n        Model model = new Model();\n        model.orderType = OrderType.SettleBill;\n        model.orderType1 = OrderType.SettleBill;\n        String text = JSON.toJSONString(model);\n        assertEquals(\"{\\\"orderType\\\":{\\\"remark\\\":\\\"结算单\\\",\\\"value\\\":2},\\\"orderType1\\\":{\\\"remark\\\":\\\"结算单\\\",\\\"value\\\":2}}\", text);\n    }\n\n    @JSONType(serializeEnumAsJavaBean = true)\n    private static enum OrderType {\n        PayOrder(1, \"支付订单\"), //\n        SettleBill(2, \"结算单\");\n\n        public final int value;\n        public final String remark;\n\n        private OrderType(int value, String remark) {\n            this.value = value;\n            this.remark = remark;\n        }\n    }\n\n    private static class Model {\n        public OrderType orderType;\n        public OrderType orderType1;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/SerializeWriterTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\n\r\npublic class SerializeWriterTest extends TestCase {\r\n\r\n\tpublic void test_0() throws Exception {\r\n\t\tSerializeWriter writer = new SerializeWriter();\r\n\t\twriter.append('A');\r\n\t\twriter.writeInt(156);\r\n\t\tAssert.assertEquals(\"A156\", writer.toString());\r\n\t\twriter.writeLong(345);\r\n\t\tAssert.assertEquals(\"A156345\", writer.toString());\r\n\r\n\t}\r\n\r\n\tpublic void test_1() throws Exception {\r\n\t\tSerializeWriter writer = new SerializeWriter();\r\n\t\twriter.writeInt(-1);\r\n\t\tAssert.assertEquals(\"-1\", writer.toString());\r\n\t}\r\n\r\n\tpublic void test_4() throws Exception {\r\n\t\tSerializeWriter writer = new SerializeWriter();\r\n\t\twriter.writeInt(-1);\r\n\t\twriter.write(',');\r\n\t\tAssert.assertEquals(\"-1,\", writer.toString());\r\n\t}\r\n\r\n\tpublic void test_5() throws Exception {\r\n\t\tSerializeWriter writer = new SerializeWriter();\r\n\t\twriter.writeLong(-1L);\r\n\t\tAssert.assertEquals(\"-1\", writer.toString());\r\n\t}\r\n\r\n\tpublic void test_6() throws Exception {\r\n\t\tSerializeWriter writer = new SerializeWriter();\r\n\t\twriter.writeLong(-1L);\r\n\t\twriter.write(',');\r\n\t\tAssert.assertEquals(\"-1,\", writer.toString());\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ServiceLoaderTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.util.ServiceLoader;\n\n\npublic class ServiceLoaderTest extends TestCase {\n    public void test_0() throws Exception {\n        new ServiceLoader();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ShortArrayFieldTest_primitive.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class ShortArrayFieldTest_primitive extends TestCase {\r\n\r\n    public void test_array() throws Exception {\r\n        Assert.assertEquals(\"[1]\", JSON.toJSONString(new short[] { 1 }));\r\n\r\n    }\r\n\r\n    public void test_codec_null() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty);\r\n        Assert.assertEquals(\"{\\\"value\\\":[]}\", text);\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private short[] value;\r\n\r\n        public short[] getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(short[] value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/SlashTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\npublic class SlashTest extends TestCase {\n    public void test_0 () throws Exception {\n        String text = \"{\\\"errorMessage\\\":\\\"resource '/rpc/hello/none.json' is not found !\\\"}\";\n        JSONObject json = (JSONObject) JSON.parse(text);\n        \n        Assert.assertEquals(\"{\\\"errorMessage\\\":\\\"resource '/rpc/hello/none.json' is not found !\\\"}\", json.toString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/SpecialKeyTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class SpecialKeyTest extends TestCase {\n\n    public void test_0() throws Exception {\n        Map<Integer, Object> map = new HashMap<Integer, Object>();\n        map.put(1, \"a\");\n        map.put(2, \"b\");\n        \n        String text = JSON.toJSONString(map);\n        System.out.println(text);\n        \n        Map<Integer, Object> map2 = JSON.parseObject(text, new TypeReference<Map<Integer, Object>>() {});\n        Assert.assertEquals(map, map2);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/SpecialKeyTest2.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class SpecialKeyTest2 extends TestCase {\n    public void test_0() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"items\\\":{\\\"1\\\":{},\\\"1001\\\":{}},\\\"items1\\\":{\\\"$ref\\\":\\\"$.items\\\"}}\", Model.class);\n        Assert.assertEquals(2, model.items.size());\n        Assert.assertNotNull(model.items.get(1L));\n        Assert.assertNotNull(model.items.get(1001L));\n        Assert.assertSame(model.items, model.items1);\n    }\n    \n    public static class Model {\n        public Map<Long, Item> items;\n        public Map<Long, Item> items1;\n    }\n    \n    public static class Item {\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/SqlDateTest1.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.sql.Date;\nimport java.text.SimpleDateFormat;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class SqlDateTest1 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = new Locale(\"zh_CN\");\n    }\n    \n    public void test_date() throws Exception {\n        long millis = 1324138987429L;\n        Date date = new Date(millis);\n\n        Assert.assertEquals(\"1324138987429\", JSON.toJSONString(date));\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"java.sql.Date\\\",\\\"val\\\":1324138987429}\", JSON.toJSONString(date, SerializerFeature.WriteClassName));\n        Assert.assertEquals(1324138987429L, ((java.util.Date)JSON.parse(\"{\\\"@type\\\":\\\"java.util.Date\\\",\\\"val\\\":1324138987429}\")).getTime());\n\n        Assert.assertEquals(\"\\\"2011-12-18 00:23:07\\\"\",\n                            JSON.toJSONString(date, SerializerFeature.WriteDateUseDateFormat));\n        Assert.assertEquals(\"\\\"2011-12-18 00:23:07.429\\\"\",\n                            JSON.toJSONStringWithDateFormat(date, \"yyyy-MM-dd HH:mm:ss.SSS\"));\n        Assert.assertEquals(\"'2011-12-18 00:23:07.429'\",\n                            JSON.toJSONStringWithDateFormat(date, \"yyyy-MM-dd HH:mm:ss.SSS\",\n                                                            SerializerFeature.UseSingleQuotes));\n    }\n//\n//    public void test_date2() throws Exception {\n//        SimpleDateFormat sdf = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\");\n//        java.util.Date d = sdf.parse(\"2019-09-12 16:00:00\");\n//        java.sql.Date ds = new java.sql.Date(d.getTime());\n////        System.out.println(\"Java Obj: \" + sdf.format(ds));\n//\n//        String jvs = JSON.toJSONString(ds);\n////        System.out.println(\"JSON Str: \" + jvs);\n//\n//        java.sql.Date d2s = JSON.parseObject(jvs, java.sql.Date.class);\n////        System.out.println(\"Java Obj: \" + sdf.format(d2s));\n////        System.out.println(\"LONG: \" + d2s.getTime());\n//\n//        assertEquals(d.getTime(), d2s.getTime());\n//    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/SqlTimestampTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.sql.Timestamp;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\npublic class SqlTimestampTest\n        extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getDefault();\n        JSON.defaultLocale = Locale.getDefault();\n    }\n    \n    public void test_date() throws Exception {\n        Timestamp ts = new Timestamp(\n                97,\n                2,\n                17,\n                15,\n                53,\n                01,\n                12345678\n        );\n\n        System.out.println('\"' + ts.toString() + '\"');\n\n        String json = JSON.toJSONString(ts, SerializerFeature.UseISO8601DateFormat);\n        System.out.println(json);\n        Timestamp ts2 = JSON.parseObject(json, Timestamp.class);\n        String json2 = JSON.toJSONString(ts2, SerializerFeature.UseISO8601DateFormat);\n        System.out.println(json2);\n        assertEquals('\"' + ts.toString() + '\"', '\"' + ts2.toString() + '\"');\n    }\n\n    public void test_date_1() throws Exception {\n        // 2020-04-11 03:10:19.516\n        Timestamp ts = new Timestamp(\n                97,\n                2,\n                17,\n                15,\n                53,\n                01,\n                516000000\n        );\n\n        System.out.println('\"' + ts.toString() + '\"');\n\n        String json = JSON.toJSONString(ts, SerializerFeature.UseISO8601DateFormat);\n        System.out.println(json);\n        Timestamp ts2 = JSON.parseObject(json, Timestamp.class);\n        String json2 = JSON.toJSONString(ts2, SerializerFeature.UseISO8601DateFormat);\n        System.out.println(json2);\n        assertEquals('\"' + ts.toString() + '\"', '\"' + ts2.toString() + '\"');\n    }\n\n    // 1997-03-17 15:53:01.01\n    public void test_date_2() throws Exception {\n        // 2020-04-11 03:10:19.516\n        Timestamp ts = new Timestamp(\n                97,\n                3,\n                17,\n                15,\n                53,\n                01,\n                10000000\n        );\n\n        System.out.println('\"' + ts.toString() + '\"');\n\n        String json = JSON.toJSONString(ts, SerializerFeature.UseISO8601DateFormat);\n        System.out.println(json);\n        Timestamp ts2 = JSON.parseObject(json, Timestamp.class);\n        String json2 = JSON.toJSONString(ts2, SerializerFeature.UseISO8601DateFormat);\n        System.out.println(json2);\n        assertEquals('\"' + ts.toString() + '\"', '\"' + ts2.toString() + '\"');\n    }\n\n    public void test_date_999999999() throws Exception {\n        // 2020-04-11 03:10:19.516\n        Timestamp ts = new Timestamp(\n                97,\n                2,\n                17,\n                15,\n                53,\n                01,\n                999999999\n        );\n\n        System.out.println('\"' + ts.toString() + '\"');\n\n        String json = JSON.toJSONString(ts, SerializerFeature.UseISO8601DateFormat);\n        System.out.println(json);\n        Timestamp ts2 = JSON.parseObject(json, Timestamp.class);\n        String json2 = JSON.toJSONString(ts2, SerializerFeature.UseISO8601DateFormat);\n        System.out.println(json2);\n        assertEquals('\"' + ts.toString() + '\"', '\"' + ts2.toString() + '\"');\n    }\n\n    public void test_date_x1() throws Exception {\n        // 2020-04-11 03:10:19.516\n        Timestamp ts = new Timestamp(\n                97,\n                2,\n                17,\n                15,\n                53,\n                01,\n                5\n        );\n\n        System.out.println('\"' + ts.toString() + '\"');\n\n        String json = JSON.toJSONString(ts, SerializerFeature.UseISO8601DateFormat);\n        Timestamp ts2 = JSON.parseObject(json, Timestamp.class);\n        System.out.println(json);\n        String json2 = JSON.toJSONString(ts2, SerializerFeature.UseISO8601DateFormat);\n        System.out.println(json2);\n        assertEquals('\"' + ts.toString() + '\"', '\"' + ts2.toString() + '\"');\n    }\n\n    public void test_date_x2() throws Exception {\n        // 2020-04-11 03:10:19.516\n        Timestamp ts = new Timestamp(\n                97,\n                2,\n                17,\n                15,\n                53,\n                01,\n                50\n        );\n\n        System.out.println('\"' + ts.toString() + '\"');\n\n        String json = JSON.toJSONString(ts, SerializerFeature.UseISO8601DateFormat);\n        Timestamp ts2 = JSON.parseObject(json, Timestamp.class);\n        System.out.println(json);\n        String json2 = JSON.toJSONString(ts2, SerializerFeature.UseISO8601DateFormat);\n        System.out.println(json2);\n        assertEquals('\"' + ts.toString() + '\"', '\"' + ts2.toString() + '\"');\n    }\n\n    public void test_date_x() throws Exception {\n        // 2020-04-11 03:10:19.516\n        int nanos = 1;\n        for (int i = 0; i < 8; i++) {\n            nanos = nanos * 10;\n            Timestamp ts = new Timestamp(\n                    97,\n                    2,\n                    17,\n                    15,\n                    53,\n                    01,\n                    nanos\n            );\n\n            System.out.println(\"_ts_: \\\"\" + ts.toString() + '\"');\n\n            String json = JSON.toJSONString(ts, SerializerFeature.UseISO8601DateFormat);\n            System.out.println(\"json: \" + json);\n            Timestamp ts2 = JSON.parseObject(json, Timestamp.class);\n            String json2 = JSON.toJSONString(ts2, SerializerFeature.UseISO8601DateFormat);\n            System.out.println(\"json: \" + json2);\n            assertEquals('\"' + ts.toString() + '\"', '\"' + ts2.toString() + '\"');\n            System.out.println();\n        }\n    }\n\n    public void test_date_xx() throws Exception {\n        // 2020-04-11 03:10:19.516\n        int nanos = 0;\n        for (int i = 0; i < 9; i++) {\n            nanos = nanos * 10 + (i + 1);\n            Timestamp ts = new Timestamp(\n                    97,\n                    2,\n                    17,\n                    15,\n                    53,\n                    01,\n                    nanos\n            );\n\n            System.out.println('\"' + ts.toString() + '\"');\n\n            String json = JSON.toJSONString(ts, SerializerFeature.UseISO8601DateFormat);\n            Timestamp ts2 = JSON.parseObject(json, Timestamp.class);\n            String json2 = JSON.toJSONString(ts2, SerializerFeature.UseISO8601DateFormat);\n            System.out.println(json);\n            System.out.println(json2);\n            assertEquals('\"' + ts.toString() + '\"', '\"' + ts2.toString() + '\"');\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/StringBufferFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.parser.ParserConfig;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class StringBufferFieldTest extends TestCase {\r\n\r\n    public void test_codec_null() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        ParserConfig config = new ParserConfig();\r\n        config.setAsmEnable(false);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class, config, JSON.DEFAULT_PARSER_FEATURE);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue,\r\n                                        SerializerFeature.WriteNullStringAsEmpty);\r\n        Assert.assertEquals(\"{\\\"value\\\":\\\"\\\"}\", text);\r\n    }\r\n\r\n    public void test_deserialize_1() throws Exception {\r\n        String json = \"{\\\"value\\\":\\\"\\\"}\";\r\n\r\n        V0 vo = JSON.parseObject(json, V0.class);\r\n        Assert.assertNotNull(vo.getValue());\r\n        Assert.assertEquals(\"\", vo.getValue().toString());\r\n    }\r\n    \r\n    public void test_deserialize_2() throws Exception {\r\n        String json = \"{\\\"value\\\":null}\";\r\n\r\n        V0 vo = JSON.parseObject(json, V0.class);\r\n        Assert.assertNull(vo.getValue());\r\n    }\r\n    \r\n    public void test_deserialize_3() throws Exception {\r\n        String json = \"{\\\"value\\\":\\\"true\\\"}\";\r\n\r\n        V0 vo = JSON.parseObject(json, V0.class);\r\n        Assert.assertNotNull(vo.getValue());\r\n        Assert.assertEquals(\"true\", vo.getValue().toString());\r\n    }\r\n    \r\n    public void test_deserialize_4() throws Exception {\r\n        String json = \"{\\\"value\\\":\\\"123\\\"}\";\r\n\r\n        V0 vo = JSON.parseObject(json, V0.class);\r\n        Assert.assertNotNull(vo.getValue());\r\n        Assert.assertEquals(\"123\", vo.getValue().toString());\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private StringBuffer value;\r\n\r\n        public StringBuffer getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(StringBuffer value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/StringBuilderFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.parser.ParserConfig;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class StringBuilderFieldTest extends TestCase {\r\n\r\n    public void test_codec_null() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        ParserConfig config = new ParserConfig();\r\n        config.setAsmEnable(false);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class, config, JSON.DEFAULT_PARSER_FEATURE);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue,\r\n                                        SerializerFeature.WriteNullStringAsEmpty);\r\n        Assert.assertEquals(\"{\\\"value\\\":\\\"\\\"}\", text);\r\n    }\r\n\r\n    public void test_deserialize_1() throws Exception {\r\n        String json = \"{\\\"value\\\":\\\"\\\"}\";\r\n\r\n        V0 vo = JSON.parseObject(json, V0.class);\r\n        Assert.assertNotNull(vo.getValue());\r\n        Assert.assertEquals(\"\", vo.getValue().toString());\r\n    }\r\n    \r\n    public void test_deserialize_2() throws Exception {\r\n        String json = \"{\\\"value\\\":null}\";\r\n\r\n        V0 vo = JSON.parseObject(json, V0.class);\r\n        Assert.assertNull(vo.getValue());\r\n    }\r\n    \r\n    public void test_deserialize_3() throws Exception {\r\n        String json = \"{\\\"value\\\":\\\"true\\\"}\";\r\n\r\n        V0 vo = JSON.parseObject(json, V0.class);\r\n        Assert.assertNotNull(vo.getValue());\r\n        Assert.assertEquals(\"true\", vo.getValue().toString());\r\n    }\r\n    \r\n    public void test_deserialize_4() throws Exception {\r\n        String json = \"{\\\"value\\\":\\\"123\\\"}\";\r\n\r\n        V0 vo = JSON.parseObject(json, V0.class);\r\n        Assert.assertNotNull(vo.getValue());\r\n        Assert.assertEquals(\"123\", vo.getValue().toString());\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private StringBuilder value;\r\n\r\n        public StringBuilder getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(StringBuilder value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/StringDeserializerTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class StringDeserializerTest extends TestCase {\n\n    public void test_0() throws Exception {\n        Assert.assertEquals(\"123\", JSON.parseObject(\"123\", String.class));\n        Assert.assertEquals(\"true\", JSON.parseObject(\"true\", String.class));\n        Assert.assertEquals(null, JSON.parseObject(\"null\", String.class));\n    }\n\n    public void test_StringBuffer() throws Exception {\n        Assert.assertTrue(equals(new StringBuffer(\"123\"), JSON.parseObject(\"123\", StringBuffer.class)));\n        Assert.assertTrue(equals(new StringBuffer(\"true\"), JSON.parseObject(\"true\", StringBuffer.class)));\n        Assert.assertEquals(null, JSON.parseObject(\"null\", StringBuffer.class));\n    }\n\n    public void test_StringBuilder() throws Exception {\n        Assert.assertTrue(equals(new StringBuilder(\"123\"), JSON.parseObject(\"123\", StringBuilder.class)));\n        Assert.assertTrue(equals(new StringBuilder(\"true\"), JSON.parseObject(\"true\", StringBuilder.class)));\n        Assert.assertEquals(null, JSON.parseObject(\"null\", StringBuilder.class));\n    }\n\n    private boolean equals(StringBuffer sb1, StringBuffer sb2) {\n        if (sb1 == null && sb2 == null) {\n            return true;\n        }\n        if ((sb1 == null && sb2 != null) || (sb1 != null && sb2 == null)) {\n            return false;\n        }\n\n        return sb1.toString().equals(sb2.toString());\n    }\n\n    private boolean equals(StringBuilder sb1, StringBuilder sb2) {\n        if (sb1 == null && sb2 == null) {\n            return true;\n        }\n        if ((sb1 == null && sb2 != null) || (sb1 != null && sb2 == null)) {\n            return false;\n        }\n\n        return sb1.toString().equals(sb2.toString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/StringFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.parser.ParserConfig;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class StringFieldTest extends TestCase {\r\n\r\n    public void test_codec_null() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        ParserConfig config = new ParserConfig();\r\n        config.setAsmEnable(false);\r\n        \r\n        V0 v1 = JSON.parseObject(text, V0.class, config, JSON.DEFAULT_PARSER_FEATURE);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);\r\n        Assert.assertEquals(\"{\\\"value\\\":\\\"\\\"}\", text);\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private String value;\r\n\r\n        public String getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(String value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/StringFieldTest2.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.annotation.JSONField;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\nimport junit.framework.TestCase;\r\n\r\npublic class StringFieldTest2 extends TestCase {\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        \r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":\\\"\\\"}\", text);\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        @JSONField(serialzeFeatures=SerializerFeature.WriteNullStringAsEmpty)\r\n        private String value;\r\n\r\n        public String getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(String value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/StringFieldTest_special.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.io.StringReader;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONReader;\n\nimport junit.framework.TestCase;\n\npublic class StringFieldTest_special extends TestCase {\n    public void test_special() throws Exception {\n        Model model = new Model();\n        model.name = \"a\\\\bc\";\n        String text = JSON.toJSONString(model);\n        Assert.assertEquals(\"{\\\"name\\\":\\\"a\\\\\\\\bc\\\"}\", text);\n\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Model model2 = reader.readObject(Model.class);\n        Assert.assertEquals(model.name, model2.name);\n        reader.close();\n    }\n    \n    public void test_special_2() throws Exception {\n        Model model = new Model();\n        model.name = \"a\\\\bc\\\"\";\n        String text = JSON.toJSONString(model);\n        Assert.assertEquals(\"{\\\"name\\\":\\\"a\\\\\\\\bc\\\\\\\"\\\"}\", text);\n\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Model model2 = reader.readObject(Model.class);\n        Assert.assertEquals(model.name, model2.name);\n        reader.close();\n    }\n\n    public static class Model {\n\n        public String name;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/StringFieldTest_special_1.java",
    "content": "package com.alibaba.json.bvt;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class StringFieldTest_special_1 extends TestCase {\n    public void test_special() throws Exception {\n        Model model = new Model();\n        StringBuilder buf = new StringBuilder();\n        for (int i = Character.MIN_VALUE; i < Character.MAX_VALUE; ++i) {\n            buf.append((char) i);\n        }\n        model.name = buf.toString();\n        \n        String text = JSON.toJSONString(model);\n\n        Model model2 = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(model.name, model2.name);\n    }\n    \n    public void test_special_browsecue() throws Exception {\n        Model model = new Model();\n        StringBuilder buf = new StringBuilder();\n        for (int i = Character.MIN_VALUE; i < Character.MAX_VALUE; ++i) {\n            buf.append((char) i);\n        }\n        model.name = buf.toString();\n        \n        String text = JSON.toJSONString(model, SerializerFeature.BrowserSecure);\n        text = text.replaceAll(\"&lt;\", \"<\");\n        text = text.replaceAll(\"&gt;\", \">\");\n        Model model2 = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(model.name, model2.name);\n    }\n    \n    public void test_special_browsecompatible() throws Exception {\n        Model model = new Model();\n        StringBuilder buf = new StringBuilder();\n        for (int i = Character.MIN_VALUE; i < Character.MAX_VALUE; ++i) {\n            buf.append((char) i);\n        }\n        model.name = buf.toString();\n        \n        String text = JSON.toJSONString(model, SerializerFeature.BrowserCompatible);\n\n        Model model2 = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(model.name, model2.name);\n    }\n    \n    public static class Model {\n\n        public String name;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/StringFieldTest_special_2.java",
    "content": "package com.alibaba.json.bvt;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class StringFieldTest_special_2 extends TestCase {\n    public void test_special() throws Exception {\n        Model model = new Model();\n        StringBuilder buf = new StringBuilder();\n        for (int i = Character.MIN_VALUE; i < Character.MAX_VALUE; ++i) {\n            buf.append((char) i);\n        }\n        model.name = buf.toString();\n        \n        String text = JSON.toJSONString(model);\n\n        Model model2 = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(model.name, model2.name);\n    }\n    \n    public void test_special_browsecue() throws Exception {\n        Model model = new Model();\n        StringBuilder buf = new StringBuilder();\n        for (int i = Character.MIN_VALUE; i < Character.MAX_VALUE; ++i) {\n            buf.append((char) i);\n        }\n        model.name = buf.toString();\n        \n        String text = JSON.toJSONString(model, SerializerFeature.BrowserSecure);\n        text = text.replaceAll(\"&lt;\", \"<\");\n        text = text.replaceAll(\"&gt;\", \">\");\n//        text = text.replaceAll(\"\\\\\\\\/\", \"/\");\n        Model model2 = JSON.parseObject(text, Model.class);\n\n        for (int i = 0; i < model.name.length() && i < model2.name.length(); ++i) {\n            char c1 = model.name.charAt(i);\n            char c2 = model.name.charAt(i);\n            if (c1 != c2) {\n                System.out.println(\"diff : \" + c1 + \" -> \" + c2);\n                break;\n            }\n        }\n//        String str = model2.name.substring(65535);\n//        System.out.println(str);\n        Assert.assertEquals(model.name.length(), model2.name.length());\n        Assert.assertEquals(model.name, model2.name);\n    }\n    \n    public void test_special_browsecompatible() throws Exception {\n        Model model = new Model();\n        StringBuilder buf = new StringBuilder();\n        for (int i = Character.MIN_VALUE; i < Character.MAX_VALUE; ++i) {\n            buf.append((char) i);\n        }\n        model.name = buf.toString();\n        \n        String text = JSON.toJSONString(model, SerializerFeature.BrowserCompatible);\n\n        Model model2 = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(model.name, model2.name);\n    }\n    \n    private static class Model {\n\n        public String name;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/StringFieldTest_special_3.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.io.StringWriter;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class StringFieldTest_special_3 extends TestCase {\n    public void test_special() throws Exception {\n        Model model = new Model();\n        StringBuilder buf = new StringBuilder();\n        for (int i = Character.MIN_VALUE; i < Character.MAX_VALUE; ++i) {\n            buf.append((char) i);\n        }\n        model.name = buf.toString();\n        \n        StringWriter writer = new StringWriter();\n        JSON.writeJSONString(writer, model);\n\n        String json = writer.toString();\n        Model model2 = JSON.parseObject(json, Model.class);\n        Assert.assertEquals(model.name, model2.name);\n    }\n    \n    public void test_special_browsecue() throws Exception {\n        Model model = new Model();\n        StringBuilder buf = new StringBuilder();\n        for (int i = Character.MIN_VALUE; i < Character.MAX_VALUE; ++i) {\n            buf.append((char) i);\n        }\n        model.name = buf.toString();\n        \n        StringWriter writer = new StringWriter();\n        JSON.writeJSONString(writer, model, SerializerFeature.BrowserSecure);\n\n        String text = writer.toString();\n\n        text = text.replaceAll(\"&lt;\", \"<\");\n        text = text.replaceAll(\"&gt;\", \">\");\n\n        Model model2 = JSON.parseObject(text, Model.class);\n        assertEquals(model.name, model2.name);\n    }\n    \n    public void test_special_browsecompatible() throws Exception {\n        Model model = new Model();\n        StringBuilder buf = new StringBuilder();\n        for (int i = Character.MIN_VALUE; i < Character.MAX_VALUE; ++i) {\n            buf.append((char) i);\n        }\n        model.name = buf.toString();\n        \n        StringWriter writer = new StringWriter();\n        JSON.writeJSONString(writer, model, SerializerFeature.BrowserCompatible);\n\n        Model model2 = JSON.parseObject(writer.toString(), Model.class);\n        Assert.assertEquals(model.name, model2.name);\n    }\n\n    private static class Model {\n\n        public String name;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/StringFieldTest_special_reader.java",
    "content": "package com.alibaba.json.bvt;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class StringFieldTest_special_reader extends TestCase {\n    public void test_special() throws Exception {\n        Model model = new Model();\n        model.name = \"a\\\\bc\";\n        String text = JSON.toJSONString(model);\n        Assert.assertEquals(\"{\\\"name\\\":\\\"a\\\\\\\\bc\\\"}\", text);\n\n        Model model2 = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(model.name, model2.name);\n    }\n    \n    public void test_special_2() throws Exception {\n        Model model = new Model();\n        model.name = \"a\\\\bc\\\"\";\n        String text = JSON.toJSONString(model);\n        Assert.assertEquals(\"{\\\"name\\\":\\\"a\\\\\\\\bc\\\\\\\"\\\"}\", text);\n\n        Model model2 = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(model.name, model2.name);\n    }\n\n    public static class Model {\n\n        public String name;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/StringFieldTest_special_singquote.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.io.StringWriter;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class StringFieldTest_special_singquote extends TestCase {\n    public void test_special() throws Exception {\n        Model model = new Model();\n        StringBuilder buf = new StringBuilder();\n        for (int i = Character.MIN_VALUE; i < Character.MAX_VALUE; ++i) {\n            buf.append((char) i);\n        }\n        model.name = buf.toString();\n        \n        StringWriter writer = new StringWriter();\n        JSON.writeJSONString(writer, model);\n\n        Model model2 = JSON.parseObject(writer.toString(), Model.class);\n        Assert.assertEquals(model.name, model2.name);\n    }\n    \n    public void test_special_browsecue() throws Exception {\n        Model model = new Model();\n        StringBuilder buf = new StringBuilder();\n        for (int i = Character.MIN_VALUE; i < Character.MAX_VALUE; ++i) {\n            buf.append((char) i);\n        }\n        model.name = buf.toString();\n        \n        StringWriter writer = new StringWriter();\n        JSON.writeJSONString(writer, model, SerializerFeature.UseSingleQuotes);\n\n        Model model2 = JSON.parseObject(writer.toString(), Model.class);\n        Assert.assertEquals(model.name, model2.name);\n    }\n    \n    public void test_special_browsecompatible() throws Exception {\n        Model model = new Model();\n        StringBuilder buf = new StringBuilder();\n        for (int i = Character.MIN_VALUE; i < Character.MAX_VALUE; ++i) {\n            buf.append((char) i);\n        }\n        model.name = buf.toString();\n        \n        StringWriter writer = new StringWriter();\n        JSON.writeJSONString(writer, model, SerializerFeature.UseSingleQuotes);\n\n        Model model2 = JSON.parseObject(writer.toString(), Model.class);\n        Assert.assertEquals(model.name, model2.name);\n    }\n\n    private static class Model {\n\n        public String name;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/SymbolTableTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.parser.SymbolTable;\r\n\r\npublic class SymbolTableTest extends TestCase {\r\n\r\n    protected String[] symbols      = new String[] { \"EffectedRowCount\", \"DataSource\", \"BatchSizeMax\", \"BatchSizeTotal\", \"ConcurrentMax\", \"ErrorCount\",\r\n            \"ExecuteCount\", \"FetchRowCount\", \"File\", \"ID\", \"LastError\", \"LastTime\", \"MaxTimespan\", \"MaxTimespanOccurTime\", \"Name\", \"RunningCount\", \"SQL\",\r\n            \"TotalTime\"            };\r\n    char[][]           symbols_char = new char[symbols.length][];\r\n    final int          COUNT        = 1000 * 1000;\r\n\r\n    protected void setUp() throws Exception {\r\n        for (int i = 0; i < symbols.length; ++i) {\r\n            symbols_char[i] = symbols[i].toCharArray();\r\n        }\r\n    }\r\n\r\n    public void test_symbol() throws Exception {\r\n\r\n        char[][] symbols_char = new char[symbols.length][];\r\n        for (int i = 0; i < symbols.length; ++i) {\r\n            symbols_char[i] = symbols[i].toCharArray();\r\n        }\r\n\r\n\r\n\r\n        SymbolTable table = new SymbolTable(512);\r\n        for (int i = 0; i < symbols.length; ++i) {\r\n            String symbol = symbols[i];\r\n            char[] charArray = symbol.toCharArray();\r\n            table.addSymbol(charArray, 0, charArray.length);\r\n            //System.out.println((table.hash(symbol) & table.getIndexMask()) + \"\\t\\t:\" + symbol + \"\\t\\t\" + table.hash(symbol));\r\n        }\r\n\r\n        String symbol = \"name\";\r\n        table.addSymbol(symbol.toCharArray(), 0, symbol.length());\r\n        table.addSymbol(symbol.toCharArray(), 0, symbol.length());\r\n\r\n        Assert.assertTrue(symbol == table.addSymbol(\"name\".toCharArray(), 0, 4));\r\n        Assert.assertTrue(symbol == table.addSymbol(\" name\".toCharArray(), 1, 4));\r\n        Assert.assertTrue(symbol == table.addSymbol(\" name \".toCharArray(), 1, 4));\r\n        Assert.assertTrue(symbol != table.addSymbol(\" namf \".toCharArray(), 1, 4));\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/TabCharTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class TabCharTest extends TestCase {\n\n    @SuppressWarnings(\"deprecation\")\n    public void test_0() throws Exception {\n        JSONObject json = new JSONObject();\n        json.put(\"hello\\t\", \"World\\t!\");\n        Assert.assertEquals(\"{\\\"hello\\\\t\\\":\\\"World\\\\t!\\\"}\", JSON.toJSONString(json));\n        Assert.assertEquals(\"{\\\"hello\\\\t\\\":\\\"World\\\\t!\\\"}\", JSON.toJSONStringZ(json, SerializeConfig.getGlobalInstance()));\n        Assert.assertEquals(\"{'hello\\\\t':'World\\\\t!'}\", JSON.toJSONString(json, SerializerFeature.WriteTabAsSpecial, SerializerFeature.UseSingleQuotes));\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/TestDeprecate.java",
    "content": "package com.alibaba.json.bvt;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestDeprecate extends TestCase {\n\n    public void test_0() throws Exception {\n        VO vo = new VO();\n        vo.setId(123);\n\n        String text = JSON.toJSONString(vo);\n    }\n\n    public static class VO {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        /**\n         * @deprecated\n         * @return\n         */\n        public int getId2() {\n            return this.id;\n        }\n\n        @Deprecated\n        public int getId3() {\n            return this.id;\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/TestExternal.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.lang.reflect.Method;\n\nimport junit.framework.TestCase;\n\nimport org.apache.commons.io.IOUtils;\n\nimport com.alibaba.fastjson.JSON;\n\n\npublic class TestExternal extends TestCase {\n    public void test_0 () throws Exception {\n        ExtClassLoader classLoader = new ExtClassLoader();\n        Class<?> clazz = classLoader.loadClass(\"external.VO\");\n        Method method = clazz.getMethod(\"setName\", new Class[] {String.class});\n        Object obj = clazz.newInstance();\n        method.invoke(obj, \"jobs\");\n        \n        String text = JSON.toJSONString(obj);\n        System.out.println(text);\n        JSON.parseObject(text, clazz);\n    }\n    \n    public static class ExtClassLoader extends ClassLoader {\n        public ExtClassLoader() throws IOException{\n            super(Thread.currentThread().getContextClassLoader());\n            \n            byte[] bytes;\n            InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"external/VO.clazz\");\n            bytes = IOUtils.toByteArray(is);\n            is.close();\n            \n            super.defineClass(\"external.VO\", bytes, 0, bytes.length);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/TestExternal2.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.lang.reflect.Method;\n\nimport junit.framework.TestCase;\n\nimport org.apache.commons.io.IOUtils;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class TestExternal2 extends TestCase {\n\n    public void test_0() throws Exception {\n        ExtClassLoader classLoader = new ExtClassLoader();\n\n        Class theClass = classLoader.loadClass(\"com.alibaba.mock.demo.service.MockDemoService\");\n        Method[] methods = theClass.getMethods();\n\n        //基本类型\n        if (void.class.isPrimitive()) {\n            System.out.println(\"void\");\n        }\n        if (boolean.class.isPrimitive()) {\n            System.out.println(\"boolean\");\n        }\n\n        for (Method method : methods) {\n            System.out.println(\"name: \" + method.getName());\n\n            Class[] paraClassArray = method.getParameterTypes();\n            for (Class paraClass : paraClassArray) {\n                System.out.println(\"parameters: \" + paraClass);\n                \n                Package pkg = paraClass.getPackage();\n                if (pkg == null || !pkg.getName().equals(\"java.lang\")) {\n                    Object obj = paraClass.newInstance();\n                  //  System.out.println(obj);\n\n                    String kaka = JSON.toJSONString(obj, SerializerFeature.WriteMapNullValue);\n                    System.out.println(kaka);\n                    System.out.println(kaka);\n\n//                    ObjectMapper objectMapper = new ObjectMapper();\n//                    String tt = objectMapper.writeValueAsString(obj);\n//                    System.out.println(tt);\n                }\n            }\n            //System.out.println(\"return: \" + method.getReturnType());\n            //System.out.println(\"description: \" + method.toGenericString());\n            System.out.println();\n        }\n    }\n\n    public static class ExtClassLoader extends ClassLoader {\n\n        public ExtClassLoader() throws IOException{\n            super(Thread.currentThread().getContextClassLoader());\n\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"external/Demo.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n\n                super.defineClass(\"com.alibaba.mock.demo.api.Demo\", bytes, 0, bytes.length);\n            }\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"external/MockDemoService.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n                \n                super.defineClass(\"com.alibaba.mock.demo.service.MockDemoService\", bytes, 0, bytes.length);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/TestExternal3.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.lang.reflect.Method;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport org.apache.commons.io.IOUtils;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\n\npublic class TestExternal3 extends TestCase {\n    ParserConfig confg = ParserConfig.global;\n    protected void setUp() throws Exception {\n        confg.addAccept(\"external.VO\");\n    }\n\n    public void test_0 () throws Exception {\n        ExtClassLoader classLoader = new ExtClassLoader();\n        Class<?> clazz = classLoader.loadClass(\"external.VO\");\n        Method method = clazz.getMethod(\"setName\", new Class[] {String.class});\n        Object obj = clazz.newInstance();\n        method.invoke(obj, \"jobs\");\n        \n        String text = JSON.toJSONString(obj, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        JSON.parseObject(text, clazz, confg);\n        String clazzName = JSON.parse(text, confg).getClass().getName();\n        Assert.assertEquals(clazz.getName(), clazzName);\n    }\n    \n    public static class ExtClassLoader extends ClassLoader {\n        public ExtClassLoader() throws IOException{\n            super(Thread.currentThread().getContextClassLoader());\n            \n            byte[] bytes;\n            InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"external/VO.clazz\");\n            bytes = IOUtils.toByteArray(is);\n            is.close();\n            \n            super.defineClass(\"external.VO\", bytes, 0, bytes.length);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/TestExternal4.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.Serializable;\nimport java.lang.reflect.Method;\nimport java.util.HashMap;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport org.apache.commons.io.IOUtils;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class TestExternal4 extends TestCase {\n    ParserConfig confg = ParserConfig.global;\n    protected void setUp() throws Exception {\n        confg.addAccept(\"external.VO2\");\n    }\n\n    public void test_0() throws Exception {\n        ExtClassLoader classLoader = new ExtClassLoader();\n        Class<?> clazz = classLoader.loadClass(\"external.VO2\");\n        Method method = clazz.getMethod(\"setName\", new Class[] { String.class });\n        Method methodSetValue = clazz.getMethod(\"setValue\", new Class[] { Serializable.class });\n\n        Object obj = clazz.newInstance();\n        method.invoke(obj, \"jobs\");\n        methodSetValue.invoke(obj, obj);\n\n        {\n            String text = JSON.toJSONString(obj);\n            System.out.println(text);\n        }\n\n        String text = JSON.toJSONString(obj, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        JSON.parseObject(text, clazz, confg);\n        String clazzName = JSON.parse(text, confg).getClass().getName();\n        Assert.assertEquals(clazz.getName(), clazzName);\n    }\n\n    public static class ExtClassLoader extends ClassLoader {\n\n        public ExtClassLoader() throws IOException{\n            super(Thread.currentThread().getContextClassLoader());\n\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"external/VO2.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n                \n                super.defineClass(\"external.VO2\", bytes, 0, bytes.length);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/TestExternal5.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.Serializable;\nimport java.lang.reflect.Method;\nimport java.util.HashMap;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport org.apache.commons.io.IOUtils;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class TestExternal5 extends TestCase {\n    ParserConfig confg = ParserConfig.global;\n    protected void setUp() throws Exception {\n        confg.addAccept(\"com.alibaba.dubbo.demo\");\n    }\n\n    public void test_0() throws Exception {\n        ExtClassLoader classLoader = new ExtClassLoader();\n        Class<?> clazz = classLoader.loadClass(\"com.alibaba.dubbo.demo.MyEsbResultModel2\");\n        Method method = clazz.getMethod(\"setReturnValue\", new Class[] { Serializable.class });\n\n        Object obj = clazz.newInstance();\n        method.invoke(obj, \"AAAA\");\n\n        {\n            String text = JSON.toJSONString(obj);\n            System.out.println(text);\n        }\n\n        String text = JSON.toJSONString(obj, SerializerFeature.WriteClassName, SerializerFeature.WriteMapNullValue);\n        System.out.println(text);\n        Object object = JSON.parseObject(text, clazz, confg);\n        assertEquals(\"a1\", clazz.getName(), object.getClass().getName());\n\n        Object object2 = JSON.parse(text, confg);\n        assertEquals(\"a2 \" + text, clazz.getName(), object2.getClass().getName());\n    }\n\n    public static class ExtClassLoader extends ClassLoader {\n\n        public ExtClassLoader() throws IOException{\n            super(Thread.currentThread().getContextClassLoader());\n\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"external/MyEsbResultModel2.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n                \n                super.defineClass(\"com.alibaba.dubbo.demo.MyEsbResultModel2\", bytes, 0, bytes.length);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/TestExternal6.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.Serializable;\nimport java.lang.reflect.Method;\nimport java.util.HashMap;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport org.apache.commons.io.IOUtils;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class TestExternal6 extends TestCase {\n    ParserConfig confg = ParserConfig.global;\n\n    protected void setUp() throws Exception {\n        confg.addAccept(\"org.mule.esb.model\");\n    }\n\n    public void test_0() throws Exception {\n        ExtClassLoader classLoader = new ExtClassLoader();\n        Class<?> clazz = classLoader.loadClass(\"org.mule.esb.model.tcc.result.EsbResultModel\");\n        Method[] methods = clazz.getMethods();\n        Method method = clazz.getMethod(\"setReturnValue\", new Class[] { Serializable.class });\n\n        Object obj = clazz.newInstance();\n//        method.invoke(obj, \"AAAA\");\n\n        {\n            String text = JSON.toJSONString(obj);\n            System.out.println(text);\n        }\n\n        String text = JSON.toJSONString(obj, SerializerFeature.WriteClassName, SerializerFeature.WriteMapNullValue);\n        System.out.println(text);\n        JSON.parseObject(text, clazz, confg);\n        String clazzName = JSON.parse(text, confg).getClass().getName();\n        Assert.assertEquals(clazz.getName(), clazzName);\n    }\n\n    public static class ExtClassLoader extends ClassLoader {\n\n        public ExtClassLoader() throws IOException{\n            super(Thread.currentThread().getContextClassLoader());\n\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"external/EsbResultModel.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n\n                super.defineClass(\"org.mule.esb.model.tcc.result.EsbResultModel\", bytes, 0, bytes.length);\n            }\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"external/EsbListBean.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n                \n                super.defineClass(\"org.esb.crm.tools.EsbListBean\", bytes, 0, bytes.length);\n            }\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"external/EsbHashMapBean.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n                \n                super.defineClass(\"org.esb.crm.tools.EsbHashMapBean\", bytes, 0, bytes.length);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/TestFlase.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\n\r\npublic class TestFlase extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        Object obj = JSON.parseObject(\"[{\\\"data\\\":{\\\"@type\\\":\\\"java.util.TreeMap\\\",false:21L},\\\"dataType\\\":2,\\\"dis\\\":0,\\\"length\\\":24,\\\"maxNum\\\":100,\\\"size\\\":3600000,\\\"version\\\":0}]\", VO[].class);\r\n        System.out.println(JSON.toJSONString(obj));\r\n    }\r\n\r\n    public static class VO {\r\n\r\n        private Object data;\r\n\r\n        public Object getData() {\r\n            return data;\r\n        }\r\n\r\n        public void setData(Object data) {\r\n            this.data = data;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/TestForEmoji.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\n\npublic class TestForEmoji extends TestCase {\n    public void test_0 () throws Exception {\n        Assert.assertEquals(\"\\\"\\\\uE507\\\"\", JSON.toJSONString(\"\\uE507\", SerializerFeature.BrowserCompatible));\n        Assert.assertEquals(\"\\\"\\\\uE501\\\"\", JSON.toJSONString(\"\\uE501\", SerializerFeature.BrowserCompatible));\n        Assert.assertEquals(\"\\\"\\\\uE44C\\\"\", JSON.toJSONString(\"\\uE44C\", SerializerFeature.BrowserCompatible));\n        Assert.assertEquals(\"\\\"\\\\uE401\\\"\", JSON.toJSONString(\"\\uE401\", SerializerFeature.BrowserCompatible));\n        Assert.assertEquals(\"\\\"\\\\uE253\\\"\", JSON.toJSONString(\"\\uE253\", SerializerFeature.BrowserCompatible));\n        Assert.assertEquals(\"\\\"\\\\uE201\\\"\", JSON.toJSONString(\"\\uE201\", SerializerFeature.BrowserCompatible));\n        Assert.assertEquals(\"\\\"\\\\uE15A\\\"\", JSON.toJSONString(\"\\uE15A\", SerializerFeature.BrowserCompatible));\n        Assert.assertEquals(\"\\\"\\\\uE101\\\"\", JSON.toJSONString(\"\\uE101\", SerializerFeature.BrowserCompatible));\n        Assert.assertEquals(\"\\\"\\\\uE05A\\\"\", JSON.toJSONString(\"\\uE05A\", SerializerFeature.BrowserCompatible));\n        Assert.assertEquals(\"\\\"\\\\uE001\\\"\", JSON.toJSONString(\"\\uE001\", SerializerFeature.BrowserCompatible));\n        //E507\n    }\n    \n    public void test_zh() throws Exception {\n    \tAssert.assertEquals(\"\\\"\\\\u4E2D\\\\u56FD\\\"\", JSON.toJSONString(\"中国\", SerializerFeature.BrowserCompatible));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/TestForPascalStyle.java",
    "content": "package com.alibaba.json.bvt;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestForPascalStyle extends TestCase {\n\n    public void test_for_pascal_style() throws Exception {\n        String text = \"{\\\"ID\\\":12,\\\"Name\\\":\\\"Jobs\\\"}\";\n        VO vo = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(vo.getId(), 12);\n        Assert.assertEquals(vo.getName(), \"Jobs\");\n    }\n\n    public static class VO {\n\n        private int id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/TestMultiLevelClass.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class TestMultiLevelClass extends TestCase {\n\n    public static class A {\n\n        private B b;\n\n        public B getB() {\n            return b;\n        }\n\n        public void setB(B b) {\n            this.b = b;\n        }\n\n        public static class B {\n\n            private C c;\n\n            public C getC() {\n                return c;\n            }\n\n            public void setC(C c) {\n                this.c = c;\n            }\n\n            static class C {\n\n                private int value;\n\n                \n                public int getValue() {\n                    return value;\n                }\n\n                \n                public void setValue(int value) {\n                    this.value = value;\n                }\n            }\n        }\n    }\n\n    public void test_codec() throws Exception {\n        A a = new A();\n        a.setB(new A.B());\n        a.getB().setC(new A.B.C());\n        a.getB().getC().setValue(123);\n        \n        String text = JSON.toJSONString(a);\n        System.out.println(text);\n        \n        A a2 = JSON.parseObject(text, A.class);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/TestMultiLevelClass2.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class TestMultiLevelClass2 extends TestCase {\n\n    public static class A {\n\n        private B b;\n\n        public B getB() {\n            return b;\n        }\n\n        public void setB(B b) {\n            this.b = b;\n        }\n\n        public class B {\n\n            private C c;\n\n            public C getC() {\n                return c;\n            }\n\n            public void setC(C c) {\n                this.c = c;\n            }\n\n            class C {\n\n                private int value;\n\n                \n                public int getValue() {\n                    return value;\n                }\n\n                \n                public void setValue(int value) {\n                    this.value = value;\n                }\n            }\n        }\n    }\n\n    public void test_codec() throws Exception {\n        A a = new A();\n        a.setB(a.new B());\n        a.getB().setC(a.b.new C());\n        a.getB().getC().setValue(123);\n        \n        String text = JSON.toJSONString(a);\n        System.out.println(text);\n        \n        A a2 = JSON.parseObject(text, A.class);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/TestNullKeyMap.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.HashMap;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\n\npublic class TestNullKeyMap extends TestCase {\n    public void test_0 () throws Exception {\n        HashMap map = new HashMap();\n        map.put(null, 123);\n        \n        String text = JSON.toJSONString(map);\n        \n        Assert.assertEquals(\"{null:123}\", text);\n        \n        HashMap map2 = JSON.parseObject(text, HashMap.class);\n        Assert.assertEquals(map.get(null), map2.get(null));\n       \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/TestSerializable.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.io.Serializable;\nimport java.util.ArrayList;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestSerializable extends TestCase {\n    public void test_codec() throws Exception {\n        VO vo = new VO();\n        vo.setValue(new ArrayList());\n        \n        JSON.toJSONString(vo);\n    }\n\n    public static class VO {\n\n        private long         id;\n        private Serializable value;\n\n        public long getId() {\n            return id;\n        }\n\n        public void setId(long id) {\n            this.id = id;\n        }\n\n        public Serializable getValue() {\n            return value;\n        }\n\n        public void setValue(Serializable value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/TestTimeUnit.java",
    "content": "package com.alibaba.json.bvt;\n\nimport java.util.concurrent.TimeUnit;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\n\npublic class TestTimeUnit extends TestCase {\n    public void test_0 () throws Exception {\n        String text = JSON.toJSONString(TimeUnit.DAYS);\n        Assert.assertEquals(TimeUnit.DAYS, JSON.parseObject(text, TimeUnit.class));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/TimeZoneFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.util.TimeZone;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class TimeZoneFieldTest extends TestCase {\r\n\r\n    public void test_codec() throws Exception {\r\n        User user = new User();\r\n        user.setValue(TimeZone.getDefault());\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n        String text = JSON.toJSONString(user, mapping, SerializerFeature.WriteMapNullValue);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user1.getValue(), user.getValue());\r\n    }\r\n\r\n    public void test_codec_null() throws Exception {\r\n        User user = new User();\r\n        user.setValue(null);\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n        String text = JSON.toJSONString(user, mapping, SerializerFeature.WriteMapNullValue);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user1.getValue(), user.getValue());\r\n    }\r\n\r\n    public static class User {\r\n\r\n        private TimeZone value;\r\n\r\n        public TimeZone getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(TimeZone value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/TimestampTest.java",
    "content": "package com.alibaba.json.bvt;\n\n\nimport java.sql.Timestamp;\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TimestampTest extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_0 () throws Exception {\n        long millis = (System.currentTimeMillis() / 1000) * 1000;\n        \n        SimpleDateFormat format = new SimpleDateFormat(JSON.DEFFAULT_DATE_FORMAT, JSON.defaultLocale);\n        format.setTimeZone(JSON.defaultTimeZone);\n        String text = \"\\\"\" + format.format(new Date(millis)) + \"\\\"\";\n        System.out.println(text);\n        Assert.assertEquals(new Timestamp(millis), JSON.parseObject(\"\" + millis, Timestamp.class));\n        Assert.assertEquals(new Timestamp(millis), JSON.parseObject(\"\\\"\" + millis + \"\\\"\", Timestamp.class));\n        Assert.assertEquals(new Timestamp(millis), JSON.parseObject(text, Timestamp.class));\n        Assert.assertEquals(new java.sql.Date(millis), JSON.parseObject(text, java.sql.Date.class));\n        Assert.assertEquals(new java.util.Date(millis), JSON.parseObject(text, java.util.Date.class));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/TypeUtilstTest.java",
    "content": "/*\r\n * Copyright 1999-2017 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.json.bvt;\r\n\r\nimport java.math.BigDecimal;\r\nimport java.math.BigInteger;\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.List;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\n\r\npublic class TypeUtilstTest extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n\r\n        List<Person> personList = new ArrayList<Person>();\r\n        {\r\n            Person p = new Person();\r\n            p.setF1(true);\r\n            p.setF2(true);\r\n            p.setF3((byte) 3);\r\n            p.setF4((byte) 4);\r\n            p.setF5((short) 5);\r\n            p.setF6((short) 6);\r\n            p.setF7(7);\r\n            p.setF8(8);\r\n            p.setF9(9L);\r\n            p.setF10(10L);\r\n            p.setF11(new BigInteger(\"12345678901234567890123456789012345678901234567890\"));\r\n            p.setF12(new BigDecimal(\"1234567890123456789012345678901234567890.1234567890\"));\r\n            p.setF13(\"F13\");\r\n            p.setF14(new Date());\r\n            p.setF15(15);\r\n            p.setF16(16F);\r\n            p.setF17(17);\r\n            p.setF18(18D);\r\n            personList.add(p);\r\n        }\r\n        {\r\n            Person person = new Person();\r\n            personList.add(person);\r\n        }\r\n\r\n        String jsonString = JSON.toJSONString(personList);\r\n\r\n\r\n        JSON.parseArray(jsonString, Person.class);\r\n        // CGLibExtJSONParser parser = new CGLibExtJSONParser(text);\r\n    }\r\n\r\n    public static class Person {\r\n\r\n        private boolean    f1;\r\n        private Boolean    f2;\r\n        private byte       f3;\r\n        private Byte       f4;\r\n        private short      f5;\r\n        private Short      f6;\r\n        private int        f7;\r\n        private Integer    f8;\r\n        private long       f9;\r\n        private Long       f10;\r\n        private BigInteger f11;\r\n        private BigDecimal f12;\r\n        private String     f13;\r\n        private Date       f14;\r\n        private float      f15;\r\n        private Float      f16;\r\n        private double     f17;\r\n        private Double     f18;\r\n\r\n        public boolean isF1() {\r\n            return f1;\r\n        }\r\n\r\n        public void setF1(boolean f1) {\r\n            this.f1 = f1;\r\n        }\r\n\r\n        public Boolean getF2() {\r\n            return f2;\r\n        }\r\n\r\n        public void setF2(Boolean f2) {\r\n            this.f2 = f2;\r\n        }\r\n\r\n        public byte getF3() {\r\n            return f3;\r\n        }\r\n\r\n        public void setF3(byte f3) {\r\n            this.f3 = f3;\r\n        }\r\n\r\n        public Byte getF4() {\r\n            return f4;\r\n        }\r\n\r\n        public void setF4(Byte f4) {\r\n            this.f4 = f4;\r\n        }\r\n\r\n        public short getF5() {\r\n            return f5;\r\n        }\r\n\r\n        public void setF5(short f5) {\r\n            this.f5 = f5;\r\n        }\r\n\r\n        public Short getF6() {\r\n            return f6;\r\n        }\r\n\r\n        public void setF6(Short f6) {\r\n            this.f6 = f6;\r\n        }\r\n\r\n        public int getF7() {\r\n            return f7;\r\n        }\r\n\r\n        public void setF7(int f7) {\r\n            this.f7 = f7;\r\n        }\r\n\r\n        public Integer getF8() {\r\n            return f8;\r\n        }\r\n\r\n        public void setF8(Integer f8) {\r\n            this.f8 = f8;\r\n        }\r\n\r\n        public long getF9() {\r\n            return f9;\r\n        }\r\n\r\n        public void setF9(long f9) {\r\n            this.f9 = f9;\r\n        }\r\n\r\n        public Long getF10() {\r\n            return f10;\r\n        }\r\n\r\n        public void setF10(Long f10) {\r\n            this.f10 = f10;\r\n        }\r\n\r\n        public BigInteger getF11() {\r\n            return f11;\r\n        }\r\n\r\n        public void setF11(BigInteger f11) {\r\n            this.f11 = f11;\r\n        }\r\n\r\n        public BigDecimal getF12() {\r\n            return f12;\r\n        }\r\n\r\n        public void setF12(BigDecimal f12) {\r\n            this.f12 = f12;\r\n        }\r\n\r\n        public String getF13() {\r\n            return f13;\r\n        }\r\n\r\n        public void setF13(String f13) {\r\n            this.f13 = f13;\r\n        }\r\n\r\n        public Date getF14() {\r\n            return f14;\r\n        }\r\n\r\n        public void setF14(Date f14) {\r\n            this.f14 = f14;\r\n        }\r\n\r\n        public float getF15() {\r\n            return f15;\r\n        }\r\n\r\n        public void setF15(float f15) {\r\n            this.f15 = f15;\r\n        }\r\n\r\n        public Float getF16() {\r\n            return f16;\r\n        }\r\n\r\n        public void setF16(Float f16) {\r\n            this.f16 = f16;\r\n        }\r\n\r\n        public double getF17() {\r\n            return f17;\r\n        }\r\n\r\n        public void setF17(double f17) {\r\n            this.f17 = f17;\r\n        }\r\n\r\n        public Double getF18() {\r\n            return f18;\r\n        }\r\n\r\n        public void setF18(Double f18) {\r\n            this.f18 = f18;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/URIFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.net.URI;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class URIFieldTest extends TestCase {\r\n\r\n    public void test_codec() throws Exception {\r\n        User user = new User();\r\n        user.setValue(URI.create(\"http://www.alibaba.com/abc\"));\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n        String text = JSON.toJSONString(user, mapping, SerializerFeature.WriteMapNullValue);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user1.getValue(), user.getValue());\r\n    }\r\n\r\n    public void test_codec_null() throws Exception {\r\n        User user = new User();\r\n        user.setValue(null);\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n        String text = JSON.toJSONString(user, mapping, SerializerFeature.WriteMapNullValue);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user1.getValue(), user.getValue());\r\n    }\r\n\r\n    public static class User {\r\n\r\n        private URI value;\r\n\r\n        public URI getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(URI value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/URLFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.net.URL;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class URLFieldTest extends TestCase {\r\n\r\n    public void test_codec() throws Exception {\r\n        User user = new User();\r\n        user.setValue(new URL(\"http://code.alibaba-tech.com\"));\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n        String text = JSON.toJSONString(user, mapping, SerializerFeature.WriteMapNullValue);\r\n        System.out.println(text);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user1.getValue().toString(), user.getValue().toString());\r\n    }\r\n\r\n    public void test_codec_null() throws Exception {\r\n        User user = new User();\r\n        user.setValue(null);\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n        String text = JSON.toJSONString(user, mapping, SerializerFeature.WriteMapNullValue);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user1.getValue(), user.getValue());\r\n    }\r\n\r\n    public static class User {\r\n\r\n        private URL value;\r\n\r\n        public URL getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(URL value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/UUIDFieldTest.java",
    "content": "package com.alibaba.json.bvt;\r\n\r\nimport java.util.UUID;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class UUIDFieldTest extends TestCase {\r\n\r\n    public void test_codec() throws Exception {\r\n        User user = new User();\r\n        user.setValue(UUID.randomUUID());\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n        String text = JSON.toJSONString(user, mapping, SerializerFeature.WriteMapNullValue);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user1.getValue(), user.getValue());\r\n    }\r\n    public void test_codec_upper_case() throws Exception {\r\n       User  user = new User();\r\n\r\n       String text =\"{\\\"value\\\":\\\"79104776-6CA7-4E41-948F-4D2ECD06502A\\\"}\";\r\n       user = JSON.parseObject(text,  User.class);\r\n\r\n       Assert.assertEquals(\"79104776-6CA7-4E41-948F-4D2ECD06502A\", user.getValue().toString().toUpperCase());\t   \r\n    }  \r\n\r\n    public void test_codec_null() throws Exception {\r\n        User user = new User();\r\n        user.setValue(null);\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n        String text = JSON.toJSONString(user, mapping, SerializerFeature.WriteMapNullValue);\r\n\r\n        User user1 = JSON.parseObject(text, User.class);\r\n\r\n        Assert.assertEquals(user1.getValue(), user.getValue());\r\n    }\r\n\r\n    public static class User {\r\n\r\n        private UUID value;\r\n\r\n        public UUID getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(UUID value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/UnQuoteFieldNamesTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializeFilter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.Collections;\nimport java.util.Map;\n\n/**\n * Created by wenshao on 11/01/2017.\n */\npublic class UnQuoteFieldNamesTest extends TestCase {\n    public void test_for_issue() throws Exception {\n        Map map = Collections.singletonMap(\"value\", 123);\n\n        String json = JSON.toJSONString(map\n                , SerializeConfig.globalInstance\n                , new SerializeFilter[0]\n                , null\n                , JSON.DEFAULT_GENERATE_FEATURE & ~SerializerFeature.QuoteFieldNames.mask\n        );\n        assertEquals(\"{value:123}\", json);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/WildcardTypeTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\n\npublic class WildcardTypeTest extends TestCase {\n    public void test_for_wildcardType() throws Exception {\n        TestType<B> b = new TestType<B>();\n        b.value = new B(2001, \"BBBB\");\n        b.superType = new TestType<A>(new A(101));\n\n        String json = JSON.toJSONString(b);\n\n        assertEquals(\"{\\\"superType\\\":{\\\"value\\\":{\\\"id\\\":101}},\\\"value\\\":{\\\"id\\\":2001,\\\"name\\\":\\\"BBBB\\\"}}\", json);\n\n        TestType<B> b1 = JSON.parseObject(json, new TypeReference<TestType<B>>() {});\n        String json2 = JSON.toJSONString(b1);\n\n        assertEquals(json, json2);\n    }\n\n    public static class TestType<X> {\n        public X value;\n        public TestType<? super X> superType;\n\n        public TestType() {\n\n        }\n\n        public TestType(X value) {\n            this.value = value;\n        }\n    }\n\n    public static class TestType2<X, Y> {\n        TestType2<? super Y, ? super X> superReversedType;\n    }\n\n    public static class A {\n        public int id;\n\n        public A(int id) {\n            this.id = id;\n        }\n    }\n\n    public static class B extends A {\n        public String name;\n\n        public B(int id, String name) {\n            super(id);\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/WriteClassNameTest.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class WriteClassNameTest extends TestCase {\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.WriteClassNameTest.\");\n    }\n\n    public void test_0() throws Exception {\n        Entity entity = new Entity(3, \"jobs\");\n        String text = JSON.toJSONString(entity, SerializerFeature.WriteClassName);\n        System.out.println(text);\n\n        Entity entity2 = (Entity) JSON.parseObject(text, Object.class);\n\n        Assert.assertEquals(entity.getId(), entity2.getId());\n        Assert.assertEquals(entity.getName(), entity2.getName());\n    }\n\n    public static class Entity {\n\n        private int    id;\n        private String name;\n\n        public Entity(){\n        }\n\n        public Entity(int id, String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/WriteClassNameTest2.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class WriteClassNameTest2 extends TestCase {\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.WriteClassNameTest2\");\n    }\n\n    public void test_0() throws Exception {\n        Entity entity = new Entity(3, \"jobs\");\n        String text = JSON.toJSONString(entity, SerializerFeature.WriteClassName, SerializerFeature.PrettyFormat);\n        System.out.println(text);\n        \n        Entity entity2 = (Entity) JSON.parseObject(text, Object.class);\n        \n        Assert.assertEquals(entity.getId(), entity2.getId());\n        Assert.assertEquals(entity.getName(), entity2.getName());\n    }\n\n    public static class Entity {\n\n        private int    id;\n        private String name;\n\n        public Entity(){\n        }\n\n        public Entity(int id, String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/XX01.java",
    "content": "package com.alibaba.json.bvt;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 14/08/2017.\n */\npublic class XX01 extends TestCase {\n    public void test_for_xx() throws Exception {\n        String text = \"{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}\";\n        JSONObject test = JSON.parseObject(text);\n\n        String text2 = test.toJSONString();\n        assertEquals(\"{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}:1}\", text2);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/annotation/AnnotationTest.java",
    "content": "package com.alibaba.json.bvt.annotation;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * Created by Helly on 2017/04/10.\n */\npublic class AnnotationTest extends TestCase {\n\n    public void test_annoation() throws Exception {\n        Bob bob = new Bob(\"Bob\", 30, true);\n//        JSONObject obj = (JSONObject) JSON.toJSON(bob);\n//        assertEquals(3, obj.size());\n//        assertEquals(Boolean.TRUE, obj.get(\"sex\"));\n//        assertEquals(\"Bob\", obj.get(\"name\"));\n//        assertEquals(new Integer(30), obj.get(\"age\"));\n\n        PersonInfo info = Bob.class.getAnnotation(PersonInfo.class);\n        JSONObject obj = (JSONObject) JSON.toJSON(info);\n\n        assertEquals(3, obj.size());\n        assertEquals(Boolean.TRUE, obj.get(\"sex\"));\n        assertEquals(\"Bob\", obj.get(\"name\"));\n        assertEquals(new Integer(30), obj.get(\"age\"));\n    }\n\n    @PersonInfo(name = \"Bob\", age = 30, sex = true)\n    public static class Bob implements Person {\n        private String name;\n        private int age;\n        private boolean sex;\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public int getAge() {\n            return age;\n        }\n\n        public void setAge(int age) {\n            this.age = age;\n        }\n\n        public boolean isSex() {\n            return sex;\n        }\n\n        public void setSex(boolean sex) {\n            this.sex = sex;\n        }\n\n        public Bob() {\n        }\n\n        public Bob(String name, int age, boolean sex) {\n            this();\n            this.name = name;\n            this.age = age;\n            this.sex = sex;\n        }\n\n        public void hello() {\n            System.out.println(\"world\");\n        }\n    }\n\n    @Retention(RetentionPolicy.RUNTIME)\n    @Target(ElementType.TYPE)\n    public static  @interface PersonInfo {\n        String name();\n        int age();\n        boolean sex();\n    }\n\n\n    public static interface Person {\n        void hello();\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/annotation/CustomDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.annotation;\n\nimport java.lang.reflect.Type;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\n\nimport junit.framework.TestCase;\n\npublic class CustomDeserializerTest extends TestCase {\n    public void test_0() throws Exception {\n        String text = \"{\\\"xid\\\":1001}\";\n        Model model = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(1001, model.id);\n    }\n    \n    @JSONType(deserializer=ModelDeserializer.class)\n    public static class Model {\n        public int id;\n    }\n    \n    public static class ModelDeserializer implements ObjectDeserializer {\n        @Override\n        public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n            JSONReader reader = new JSONReader(parser);\n            \n            reader.startObject();\n            \n            String key = reader.readString();\n            Integer value = reader.readInteger();\n            \n            Model model = new Model();\n            model.id = value;\n            \n            reader.endObject();\n            // TODO Auto-generated method stub\n            return (T) model;\n        }\n\n        @Override\n        public int getFastMatchToken() {\n            return 0;\n        }\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/annotation/CustomSerializerTest.java",
    "content": "package com.alibaba.json.bvt.annotation;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.ObjectSerializer;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\nimport junit.framework.TestCase;\n\npublic class CustomSerializerTest extends TestCase {\n    public void test_0() throws Exception {\n        Model model = new Model();\n        model.id = 1001;\n        String text = JSON.toJSONString(model);\n        Assert.assertEquals(\"{\\\"ID\\\":1001}\", text);\n    }\n    \n    @JSONType(serializer=ModelSerializer.class)\n    public static class Model {\n        public int id;\n    }\n    \n    public static class ModelSerializer implements ObjectSerializer {\n\n        @Override\n        public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType,\n                          int features) throws IOException {\n            Model model = (Model) object;\n            SerializeWriter out = serializer.getWriter();\n            out.writeFieldValue('{', \"ID\", model.id);\n            out.write('}');\n        }\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/annotation/CustomSerializerTest_enum.java",
    "content": "package com.alibaba.json.bvt.annotation;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.JSONSerializable;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\n\nimport junit.framework.TestCase;\n\npublic class CustomSerializerTest_enum extends TestCase {\n\n    public void test_0() throws Exception {\n        Model model = new Model();\n        model.id = 1001;\n        model.orderType = OrderType.PayOrder;\n        String text = JSON.toJSONString(model);\n//        Assert.assertEquals(\"{\\\"id\\\":1001,\\\"orderType\\\":{\\\"remark\\\":\\\"支付订单\\\",\\\"value\\\":1}}\", text);\n    }\n\n    public static class Model {\n        public int id;\n        public OrderType orderType;\n    }\n\n    public static enum OrderType implements JSONSerializable {\n                                  PayOrder(1, \"支付订单\"), //\n                                  SettleBill(2, \"结算单\");\n\n        public final int    value;\n        public final String remark;\n\n        private OrderType(int value, String remark){\n            this.value = value;\n            this.remark = remark;\n        }\n\n        @Override\n        public void write(JSONSerializer serializer, Object fieldName, Type fieldType,\n                          int features) throws IOException {\n            JSONObject json = new JSONObject();\n            json.put(\"value\", value);\n            json.put(\"remark\", remark);\n            serializer.write(json);\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/annotation/DeserializeUsingTest.java",
    "content": "package com.alibaba.json.bvt.annotation;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\nimport junit.framework.TestCase;\n\nimport java.lang.reflect.Type;\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * Created by wenshao on 16/9/25.\n */\npublic class DeserializeUsingTest extends TestCase {\n\n    public void test_deserializeUsing() throws Exception {\n        String jsonStr = \"{'subjectList':['CHINESE','MATH']}\";\n        Teacher teacher = JSON.parseObject(jsonStr, Teacher.class);\n        assertEquals(SubjectEnum.CHINESE.ordinal(), teacher.getSubjectList().get(0).intValue());\n        assertEquals(SubjectEnum.MATH.ordinal(), teacher.getSubjectList().get(1).intValue());\n    }\n\n    public void test_deserializeUsing2() throws Exception {\n        String jsonStr = \"{'subjectList':['CHINESE','MATH']}\";\n\n        Teacher teacher = JSON.parseObject(jsonStr).toJavaObject(Teacher.class);\n        assertEquals(SubjectEnum.CHINESE.ordinal(), teacher.getSubjectList().get(0).intValue());\n        assertEquals(SubjectEnum.MATH.ordinal(), teacher.getSubjectList().get(1).intValue());\n    }\n\n    public static class Teacher {\n\n        @JSONField(deserializeUsing = SubjectListDeserializer.class)\n        private List<Integer> subjectList;\n        public List<Integer> getSubjectList() {\n            return subjectList;\n        }\n        public void setSubjectList(List<Integer> subjectList) {\n            this.subjectList = subjectList;\n        }\n\n    }\n\n    public static class SubjectListDeserializer implements ObjectDeserializer {\n\n        @SuppressWarnings(\"unchecked\")\n\n        public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n            List<String> parseObjectList = parser.parseArray(String.class);\n            if(parseObjectList != null) {\n                List<Integer> resultVoList = new ArrayList<Integer>();\n                for(String parseObject : parseObjectList) {\n                    resultVoList.add(SubjectEnum.valueOf(parseObject).ordinal());\n                }\n                return (T)resultVoList;\n            }\n            throw new IllegalStateException();\n        }\n\n\n        public int getFastMatchToken() {\n            return 0;\n        }\n    }\n\n    public static enum SubjectEnum {\n        CHINESE, MATH\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/annotation/JSONTypeAutoTypeCheckHandlerTest.java",
    "content": "package com.alibaba.json.bvt.annotation;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport junit.framework.TestCase;\n\npublic class JSONTypeAutoTypeCheckHandlerTest extends TestCase {\n    public void test_for_checkAutoType() throws Exception {\n        Cat cat = (Cat) JSON.parseObject(\"{\\\"@type\\\":\\\"Cat\\\",\\\"catId\\\":123}\", Animal.class);\n        assertEquals(123, cat.catId);\n    }\n\n    @JSONType(autoTypeCheckHandler = MyAutoTypeCheckHandler.class)\n    public static class Animal {\n\n    }\n\n    public static class Cat extends Animal {\n        public int catId;\n    }\n\n    public static class Mouse extends Animal {\n\n    }\n\n    public static class MyAutoTypeCheckHandler implements ParserConfig.AutoTypeCheckHandler {\n\n        public Class<?> handler(String typeName, Class<?> expectClass, int features) {\n            if (\"Cat\".equals(typeName)) {\n                return Cat.class;\n            }\n\n            if (\"Mouse\".equals(typeName)) {\n                return Mouse.class;\n            }\n\n            return null;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/annotation/JSONTypejsonType_alphabetic_Test.java",
    "content": "package com.alibaba.json.bvt.annotation;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\n\npublic class JSONTypejsonType_alphabetic_Test extends TestCase {\n\n    public void test_alphabetic_true() throws Exception {\n        A a = new A();\n        a.setF0(101);\n        a.setF1(102);\n\n        Assert.assertEquals(\"{\\\"f0\\\":101,\\\"f1\\\":102}\", JSON.toJSONString(a));\n    }\n\n//    public void test_alphabetic_false() throws Exception {\n//        B b = new B();\n//        b.setF0(101);\n//        b.setF1(102);\n//\n//        Assert.assertFalse(\"{\\\"f2\\\":0,\\\"f1\\\":102,\\\"f0\\\":101}\".equals(JSON.toJSONString(b)));\n//    }\n\n    public void test_alphabetic_notSet() throws Exception {\n        C c = new C();\n        c.setF0(101);\n        c.setF1(102);\n\n        Assert.assertEquals(\"{\\\"f0\\\":101,\\\"f1\\\":102}\", JSON.toJSONString(c));\n    }\n\n    @JSONType(alphabetic = true)\n    public static class A {\n\n        private int f1;\n        private int f0;\n\n        public int getF1() {\n            return f1;\n        }\n\n        public void setF1(int f1) {\n            this.f1 = f1;\n        }\n\n        public int getF0() {\n            return f0;\n        }\n\n        public void setF0(int f0) {\n            this.f0 = f0;\n        }\n\n    }\n\n    @JSONType(alphabetic = false)\n    public static class B {\n\n        private int f2;\n        private int f1;\n        private int f0;\n\n        public int getF2() {\n            return f2;\n        }\n\n        public void setF2(int f2) {\n            this.f2 = f2;\n        }\n\n        public int getF1() {\n            return f1;\n        }\n\n        public void setF1(int f1) {\n            this.f1 = f1;\n        }\n\n        public int getF0() {\n            return f0;\n        }\n\n        public void setF0(int f0) {\n            this.f0 = f0;\n        }\n\n    }\n\n    public static class C {\n\n        private int f1;\n        private int f0;\n\n        public int getF1() {\n            return f1;\n        }\n\n        public void setF1(int f1) {\n            this.f1 = f1;\n        }\n\n        public int getF0() {\n            return f0;\n        }\n\n        public void setF0(int f0) {\n            this.f0 = f0;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/annotation/JsonSeeAlsoTest.java",
    "content": "package com.alibaba.json.bvt.annotation;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class JsonSeeAlsoTest extends TestCase {\n\n    public void test_seeAlso_dog() throws Exception {\n        Dog dog = new Dog();\n        dog.dogName = \"dog1001\";\n\n        String text = JSON.toJSONString(dog, SerializerFeature.WriteClassName);\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"dog\\\",\\\"dogName\\\":\\\"dog1001\\\"}\", text);\n\n        Dog dog2 = (Dog) JSON.parseObject(text, Animal.class);\n\n        Assert.assertEquals(dog.dogName, dog2.dogName);\n    }\n\n    public void test_seeAlso_cat() throws Exception {\n        Cat cat = new Cat();\n        cat.catName = \"cat2001\";\n\n        String text = JSON.toJSONString(cat, SerializerFeature.WriteClassName);\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"cat\\\",\\\"catName\\\":\\\"cat2001\\\"}\", text);\n\n        Cat cat2 = (Cat) JSON.parseObject(text, Animal.class);\n\n        Assert.assertEquals(cat.catName, cat2.catName);\n    }\n    \n    public void test_seeAlso_tidy() throws Exception {\n        Tidy tidy = new Tidy();\n        tidy.dogName = \"dog2001\";\n        tidy.tidySpecific = \"tidy1001\";\n\n        String text = JSON.toJSONString(tidy, SerializerFeature.WriteClassName);\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"tidy\\\",\\\"dogName\\\":\\\"dog2001\\\",\\\"tidySpecific\\\":\\\"tidy1001\\\"}\", text);\n\n        Tidy tidy2 = (Tidy) JSON.parseObject(text, Animal.class);\n\n        Assert.assertEquals(tidy.dogName, tidy2.dogName);\n    }\n\n    @JSONType(seeAlso = { Dog.class, Cat.class })\n    public static class Animal {\n    }\n\n    @JSONType(typeName = \"dog\", seeAlso={Tidy.class, Labrador.class})\n    public static class Dog extends Animal {\n        public String dogName;\n    }\n\n    @JSONType(typeName = \"cat\")\n    public static class Cat extends Animal {\n        public String catName;\n    }\n\n    @JSONType(typeName = \"tidy\")\n    public static class Tidy extends Dog {\n        public String tidySpecific;\n    }\n    \n    @JSONType(typeName = \"labrador\")\n    public static class Labrador extends Dog {\n        public String tidySpecific;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/annotation/SerializeUsingTest.java",
    "content": "package com.alibaba.json.bvt.annotation;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.ObjectSerializer;\n\nimport junit.framework.TestCase;\n\npublic class SerializeUsingTest extends TestCase {\n\n    public void test_annotation() throws Exception {\n        Model model = new Model();\n        model.value = 100;\n        String json = JSON.toJSONString(model);\n        Assert.assertEquals(\"{\\\"value\\\":\\\"100元\\\"}\", json);\n        \n        Model model2 = JSON.parseObject(json, Model.class);\n        Assert.assertEquals(model.value, model2.value);\n    }\n\n    public static class Model {\n\n        @JSONField(serializeUsing = ModelValueSerializer.class, deserializeUsing = ModelValueDeserializer.class)\n        public int value;\n    }\n\n    public static class ModelValueSerializer implements ObjectSerializer {\n\n        public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType,\n                          int features) throws IOException {\n            Integer value = (Integer) object;\n            String text = value + \"元\";\n            serializer.write(text);\n        }\n    }\n\n    public static class ModelValueDeserializer implements ObjectDeserializer {\n\n        public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n            String text = (String) parser.parse();\n            if (text != null) {\n                text = text.replaceAll(\"元\", \"\");\n            }\n            return (T) Integer.valueOf(Integer.parseInt(text));\n        }\n\n        @Override\n        public int getFastMatchToken() {\n            return 0;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/annotation/SerializeUsingWhenString.java",
    "content": "package com.alibaba.json.bvt.annotation;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.ObjectSerializer;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\n\n/**\n * @author by laugh on 16/9/28 12:08.\n */\npublic class SerializeUsingWhenString extends TestCase {\n    public void test_annotation() throws Exception {\n        Model model = new Model();\n        model.value = \"100\";\n        Assert.assertEquals(\"{\\\"value\\\":\\\"100元\\\"}\", JSON.toJSONString(model));\n\n        ModelWithOutJsonField modelWithOutJsonField = new ModelWithOutJsonField();\n        modelWithOutJsonField.value = \"100\";\n        Assert.assertEquals(\"{\\\"value\\\":\\\"100\\\"}\", JSON.toJSONString(modelWithOutJsonField));\n    }\n\n    public static class Model {\n\n        @JSONField(serializeUsing = ModelValueSerializer.class)\n        public String value;\n    }\n\n    public static class ModelWithOutJsonField {\n\n        public String value;\n    }\n\n    public static class ModelValueSerializer implements ObjectSerializer {\n\n        public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType,\n                          int features) throws IOException {\n            String value = (String) object;\n            String text = value + \"元\";\n            serializer.write(text);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/asm/ASMDeserTest.java",
    "content": "package com.alibaba.json.bvt.asm;\n\nimport java.util.ArrayList;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class ASMDeserTest extends TestCase {\n\n    public void test_codec() throws Exception {\n        String text = JSON.toJSONString(new Entity());\n\n        Assert.assertEquals(\"[]\", text);\n\n        Entity object = JSON.parseObject(text, Entity.class);\n        Assert.assertEquals(0, object.size());\n    }\n    \n    public void test_codec_1() throws Exception {\n        String text = JSON.toJSONString(new VO());\n\n        Assert.assertEquals(\"{\\\"value\\\":[]}\", text);\n\n        VO object = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(0, object.getValue().size());\n    }\n\n    public void test_ArrayList() throws Exception {\n\n        ArrayList object = JSON.parseObject(\"[]\", ArrayList.class);\n        Assert.assertEquals(0, object.size());\n    }\n\n    public void test_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[]\", EntityError.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class VO {\n\n        private Entity value = new Entity();\n\n        public Entity getValue() {\n            return value;\n        }\n\n        public void setValue(Entity value) {\n            this.value = value;\n        }\n\n    }\n\n    public static class Entity extends ArrayList<String> {\n\n    }\n\n    public static class EntityError extends ArrayList<String> {\n\n        public EntityError(){\n            throw new RuntimeException();\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/asm/ASMDeserTest2.java",
    "content": "package com.alibaba.json.bvt.asm;\n\nimport java.util.ArrayList;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class ASMDeserTest2 extends TestCase {\n\n    public void test_codec_1() throws Exception {\n        String text = JSON.toJSONString(new VO());\n\n        Assert.assertEquals(\"{\\\"value\\\":[]}\", text);\n\n        VO object = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(0, object.getValue().size());\n    }\n\n    public static class VO {\n\n        private Entity value = new Entity();\n\n        public Entity getValue() {\n            return value;\n        }\n\n        public void setValue(Entity value) {\n            this.value = value;\n        }\n\n    }\n\n    public static class Entity extends ArrayList<String> {\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/asm/ASMUtilsTest.java",
    "content": "package com.alibaba.json.bvt.asm;\n\nimport junit.framework.TestCase;\n\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Type;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.parser.ParseContext;\nimport com.alibaba.fastjson.util.ASMUtils;\n\npublic class ASMUtilsTest extends TestCase {\n\n    public void test_isAnroid() throws Exception {\n        Assert.assertTrue(ASMUtils.isAndroid(\"Dalvik\"));\n    }\n\n    public void test_getDescs() throws Exception {\n        Assert.assertEquals(\"Lcom/alibaba/fastjson/parser/ParseContext;\", ASMUtils.desc(ParseContext.class));\n    }\n\n    public void test_getType_null() throws Exception {\n        Assert.assertNull(ASMUtils.getMethodType(ParseContext.class, \"XX\"));\n    }\n    \n    public static Type getMethodType(Class<?> clazz, String methodName) {\n        try {\n            Method method = clazz.getMethod(methodName);\n\n            return method.getGenericReturnType();\n        } catch (Exception ex) {\n            return null;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/asm/Case0.java",
    "content": "package com.alibaba.json.bvt.asm;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\n\r\npublic class Case0 extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        V0 entity = new V0();\r\n        entity.setValue(\"abc\");\r\n\r\n        String jsonString = JSON.toJSONString(entity);\r\n\r\n        System.out.println(jsonString);\r\n\r\n        V0 entity2 = JSON.parseObject(jsonString, V0.class);\r\n        Assert.assertEquals(entity.getValue(), entity2.getValue());\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private int    id;\r\n        private String value;\r\n\r\n        private long   v2;\r\n\r\n        public long getV2() {\r\n            return v2;\r\n        }\r\n\r\n        public void setV2(long v2) {\r\n            this.v2 = v2;\r\n        }\r\n\r\n        public int getId() {\r\n            return id;\r\n        }\r\n\r\n        public void setId(int id) {\r\n            this.id = id;\r\n        }\r\n\r\n        public String getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(String value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/asm/Case_Eishay.java",
    "content": "package com.alibaba.json.bvt.asm;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\nimport com.alibaba.json.test.benchmark.decode.EishayDecodeBytes;\r\n\r\nimport data.media.MediaContent;\r\n\r\npublic class Case_Eishay extends TestCase {\r\n\r\n    private final String text;\r\n\r\n    public Case_Eishay(){\r\n        super();\r\n        this.text = EishayDecodeBytes.instance.getText();\r\n    }\r\n\r\n    public void test_0() throws Exception {\r\n        //JavaBeanMapping.getGlobalInstance().setAsmEnable(false);\r\n        System.out.println(text);\r\n        MediaContent object = JSON.parseObject(text, MediaContent.class);\r\n        String text2 = JSON.toJSONString(object, SerializerFeature.WriteEnumUsingToString);\r\n        System.out.println(text2);\r\n        System.out.println(JSON.toJSONString(JSON.parseObject(text2), true));\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/asm/ClassReaderTest.java",
    "content": "package com.alibaba.json.bvt.asm;\n\nimport junit.framework.TestCase;\n\npublic class ClassReaderTest extends TestCase {\n    public void test_read() throws Exception {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/asm/Huge_200_ClassTest.java",
    "content": "package com.alibaba.json.bvt.asm;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Huge_200_ClassTest extends TestCase {\n    public void test_huge() {\n        JSON.parseObject(\"{}\", VO.class);\n    }\n\n    public static class VO {\n\n        private Integer f000;\n        private Integer f001;\n        private Integer f002;\n        private Integer f003;\n        private Integer f004;\n        private Integer f005;\n        private Integer f006;\n        private Integer f007;\n        private Integer f008;\n        private Integer f009;\n\n        private Integer f010;\n        private Integer f011;\n        private Integer f012;\n        private Integer f013;\n        private Integer f014;\n        private Integer f015;\n        private Integer f016;\n        private Integer f017;\n        private Integer f018;\n        private Integer f019;\n\n        private Integer f020;\n        private Integer f021;\n        private Integer f022;\n        private Integer f023;\n        private Integer f024;\n        private Integer f025;\n        private Integer f026;\n        private Integer f027;\n        private Integer f028;\n        private Integer f029;\n\n        private Integer f030;\n        private Integer f031;\n        private Integer f032;\n        private Integer f033;\n        private Integer f034;\n        private Integer f035;\n        private Integer f036;\n        private Integer f037;\n        private Integer f038;\n        private Integer f039;\n\n        private Integer f040;\n        private Integer f041;\n        private Integer f042;\n        private Integer f043;\n        private Integer f044;\n        private Integer f045;\n        private Integer f046;\n        private Integer f047;\n        private Integer f048;\n        private Integer f049;\n\n        private Integer f050;\n        private Integer f051;\n        private Integer f052;\n        private Integer f053;\n        private Integer f054;\n        private Integer f055;\n        private Integer f056;\n        private Integer f057;\n        private Integer f058;\n        private Integer f059;\n\n        private Integer f060;\n        private Integer f061;\n        private Integer f062;\n        private Integer f063;\n        private Integer f064;\n        private Integer f065;\n        private Integer f066;\n        private Integer f067;\n        private Integer f068;\n        private Integer f069;\n\n        private Integer f070;\n        private Integer f071;\n        private Integer f072;\n        private Integer f073;\n        private Integer f074;\n        private Integer f075;\n        private Integer f076;\n        private Integer f077;\n        private Integer f078;\n        private Integer f079;\n\n        private Integer f080;\n        private Integer f081;\n        private Integer f082;\n        private Integer f083;\n        private Integer f084;\n        private Integer f085;\n        private Integer f086;\n        private Integer f087;\n        private Integer f088;\n        private Integer f089;\n\n        private Integer f090;\n        private Integer f091;\n        private Integer f092;\n        private Integer f093;\n        private Integer f094;\n        private Integer f095;\n        private Integer f096;\n        private Integer f097;\n        private Integer f098;\n        private Integer f099;\n\n        private Integer f100;\n        private Integer f101;\n        private Integer f102;\n        private Integer f103;\n        private Integer f104;\n        private Integer f105;\n        private Integer f106;\n        private Integer f107;\n        private Integer f108;\n        private Integer f109;\n        private Integer f110;\n        private Integer f111;\n        private Integer f112;\n        private Integer f113;\n        private Integer f114;\n        private Integer f115;\n        private Integer f116;\n        private Integer f117;\n        private Integer f118;\n        private Integer f119;\n        private Integer f120;\n        private Integer f121;\n        private Integer f122;\n        private Integer f123;\n        private Integer f124;\n        private Integer f125;\n        private Integer f126;\n        private Integer f127;\n        private Integer f128;\n        private Integer f129;\n        private Integer f130;\n        private Integer f131;\n        private Integer f132;\n        private Integer f133;\n        private Integer f134;\n        private Integer f135;\n        private Integer f136;\n        private Integer f137;\n        private Integer f138;\n        private Integer f139;\n        private Integer f140;\n        private Integer f141;\n        private Integer f142;\n        private Integer f143;\n        private Integer f144;\n        private Integer f145;\n        private Integer f146;\n        private Integer f147;\n        private Integer f148;\n        private Integer f149;\n        private Integer f150;\n        private Integer f151;\n        private Integer f152;\n        private Integer f153;\n        private Integer f154;\n        private Integer f155;\n        private Integer f156;\n        private Integer f157;\n        private Integer f158;\n        private Integer f159;\n        private Integer f160;\n        private Integer f161;\n        private Integer f162;\n        private Integer f163;\n        private Integer f164;\n        private Integer f165;\n        private Integer f166;\n        private Integer f167;\n        private Integer f168;\n        private Integer f169;\n        private Integer f170;\n        private Integer f171;\n        private Integer f172;\n        private Integer f173;\n        private Integer f174;\n        private Integer f175;\n        private Integer f176;\n        private Integer f177;\n        private Integer f178;\n        private Integer f179;\n        private Integer f180;\n        private Integer f181;\n        private Integer f182;\n        private Integer f183;\n        private Integer f184;\n        private Integer f185;\n        private Integer f186;\n        private Integer f187;\n        private Integer f188;\n        private Integer f189;\n        private Integer f190;\n        private Integer f191;\n        private Integer f192;\n        private Integer f193;\n        private Integer f194;\n        private Integer f195;\n        private Integer f196;\n        private Integer f197;\n        private Integer f198;\n        private Integer f199;\n\n        public Integer getF000() {\n            return f000;\n        }\n\n        public void setF000(Integer f000) {\n            this.f000 = f000;\n        }\n\n        public Integer getF001() {\n            return f001;\n        }\n\n        public void setF001(Integer f001) {\n            this.f001 = f001;\n        }\n\n        public Integer getF002() {\n            return f002;\n        }\n\n        public void setF002(Integer f002) {\n            this.f002 = f002;\n        }\n\n        public Integer getF003() {\n            return f003;\n        }\n\n        public void setF003(Integer f003) {\n            this.f003 = f003;\n        }\n\n        public Integer getF004() {\n            return f004;\n        }\n\n        public void setF004(Integer f004) {\n            this.f004 = f004;\n        }\n\n        public Integer getF005() {\n            return f005;\n        }\n\n        public void setF005(Integer f005) {\n            this.f005 = f005;\n        }\n\n        public Integer getF006() {\n            return f006;\n        }\n\n        public void setF006(Integer f006) {\n            this.f006 = f006;\n        }\n\n        public Integer getF007() {\n            return f007;\n        }\n\n        public void setF007(Integer f007) {\n            this.f007 = f007;\n        }\n\n        public Integer getF008() {\n            return f008;\n        }\n\n        public void setF008(Integer f008) {\n            this.f008 = f008;\n        }\n\n        public Integer getF009() {\n            return f009;\n        }\n\n        public void setF009(Integer f009) {\n            this.f009 = f009;\n        }\n\n        public Integer getF010() {\n            return f010;\n        }\n\n        public void setF010(Integer f010) {\n            this.f010 = f010;\n        }\n\n        public Integer getF011() {\n            return f011;\n        }\n\n        public void setF011(Integer f011) {\n            this.f011 = f011;\n        }\n\n        public Integer getF012() {\n            return f012;\n        }\n\n        public void setF012(Integer f012) {\n            this.f012 = f012;\n        }\n\n        public Integer getF013() {\n            return f013;\n        }\n\n        public void setF013(Integer f013) {\n            this.f013 = f013;\n        }\n\n        public Integer getF014() {\n            return f014;\n        }\n\n        public void setF014(Integer f014) {\n            this.f014 = f014;\n        }\n\n        public Integer getF015() {\n            return f015;\n        }\n\n        public void setF015(Integer f015) {\n            this.f015 = f015;\n        }\n\n        public Integer getF016() {\n            return f016;\n        }\n\n        public void setF016(Integer f016) {\n            this.f016 = f016;\n        }\n\n        public Integer getF017() {\n            return f017;\n        }\n\n        public void setF017(Integer f017) {\n            this.f017 = f017;\n        }\n\n        public Integer getF018() {\n            return f018;\n        }\n\n        public void setF018(Integer f018) {\n            this.f018 = f018;\n        }\n\n        public Integer getF019() {\n            return f019;\n        }\n\n        public void setF019(Integer f019) {\n            this.f019 = f019;\n        }\n\n        public Integer getF020() {\n            return f020;\n        }\n\n        public void setF020(Integer f020) {\n            this.f020 = f020;\n        }\n\n        public Integer getF021() {\n            return f021;\n        }\n\n        public void setF021(Integer f021) {\n            this.f021 = f021;\n        }\n\n        public Integer getF022() {\n            return f022;\n        }\n\n        public void setF022(Integer f022) {\n            this.f022 = f022;\n        }\n\n        public Integer getF023() {\n            return f023;\n        }\n\n        public void setF023(Integer f023) {\n            this.f023 = f023;\n        }\n\n        public Integer getF024() {\n            return f024;\n        }\n\n        public void setF024(Integer f024) {\n            this.f024 = f024;\n        }\n\n        public Integer getF025() {\n            return f025;\n        }\n\n        public void setF025(Integer f025) {\n            this.f025 = f025;\n        }\n\n        public Integer getF026() {\n            return f026;\n        }\n\n        public void setF026(Integer f026) {\n            this.f026 = f026;\n        }\n\n        public Integer getF027() {\n            return f027;\n        }\n\n        public void setF027(Integer f027) {\n            this.f027 = f027;\n        }\n\n        public Integer getF028() {\n            return f028;\n        }\n\n        public void setF028(Integer f028) {\n            this.f028 = f028;\n        }\n\n        public Integer getF029() {\n            return f029;\n        }\n\n        public void setF029(Integer f029) {\n            this.f029 = f029;\n        }\n\n        public Integer getF030() {\n            return f030;\n        }\n\n        public void setF030(Integer f030) {\n            this.f030 = f030;\n        }\n\n        public Integer getF031() {\n            return f031;\n        }\n\n        public void setF031(Integer f031) {\n            this.f031 = f031;\n        }\n\n        public Integer getF032() {\n            return f032;\n        }\n\n        public void setF032(Integer f032) {\n            this.f032 = f032;\n        }\n\n        public Integer getF033() {\n            return f033;\n        }\n\n        public void setF033(Integer f033) {\n            this.f033 = f033;\n        }\n\n        public Integer getF034() {\n            return f034;\n        }\n\n        public void setF034(Integer f034) {\n            this.f034 = f034;\n        }\n\n        public Integer getF035() {\n            return f035;\n        }\n\n        public void setF035(Integer f035) {\n            this.f035 = f035;\n        }\n\n        public Integer getF036() {\n            return f036;\n        }\n\n        public void setF036(Integer f036) {\n            this.f036 = f036;\n        }\n\n        public Integer getF037() {\n            return f037;\n        }\n\n        public void setF037(Integer f037) {\n            this.f037 = f037;\n        }\n\n        public Integer getF038() {\n            return f038;\n        }\n\n        public void setF038(Integer f038) {\n            this.f038 = f038;\n        }\n\n        public Integer getF039() {\n            return f039;\n        }\n\n        public void setF039(Integer f039) {\n            this.f039 = f039;\n        }\n\n        public Integer getF040() {\n            return f040;\n        }\n\n        public void setF040(Integer f040) {\n            this.f040 = f040;\n        }\n\n        public Integer getF041() {\n            return f041;\n        }\n\n        public void setF041(Integer f041) {\n            this.f041 = f041;\n        }\n\n        public Integer getF042() {\n            return f042;\n        }\n\n        public void setF042(Integer f042) {\n            this.f042 = f042;\n        }\n\n        public Integer getF043() {\n            return f043;\n        }\n\n        public void setF043(Integer f043) {\n            this.f043 = f043;\n        }\n\n        public Integer getF044() {\n            return f044;\n        }\n\n        public void setF044(Integer f044) {\n            this.f044 = f044;\n        }\n\n        public Integer getF045() {\n            return f045;\n        }\n\n        public void setF045(Integer f045) {\n            this.f045 = f045;\n        }\n\n        public Integer getF046() {\n            return f046;\n        }\n\n        public void setF046(Integer f046) {\n            this.f046 = f046;\n        }\n\n        public Integer getF047() {\n            return f047;\n        }\n\n        public void setF047(Integer f047) {\n            this.f047 = f047;\n        }\n\n        public Integer getF048() {\n            return f048;\n        }\n\n        public void setF048(Integer f048) {\n            this.f048 = f048;\n        }\n\n        public Integer getF049() {\n            return f049;\n        }\n\n        public void setF049(Integer f049) {\n            this.f049 = f049;\n        }\n\n        public Integer getF050() {\n            return f050;\n        }\n\n        public void setF050(Integer f050) {\n            this.f050 = f050;\n        }\n\n        public Integer getF051() {\n            return f051;\n        }\n\n        public void setF051(Integer f051) {\n            this.f051 = f051;\n        }\n\n        public Integer getF052() {\n            return f052;\n        }\n\n        public void setF052(Integer f052) {\n            this.f052 = f052;\n        }\n\n        public Integer getF053() {\n            return f053;\n        }\n\n        public void setF053(Integer f053) {\n            this.f053 = f053;\n        }\n\n        public Integer getF054() {\n            return f054;\n        }\n\n        public void setF054(Integer f054) {\n            this.f054 = f054;\n        }\n\n        public Integer getF055() {\n            return f055;\n        }\n\n        public void setF055(Integer f055) {\n            this.f055 = f055;\n        }\n\n        public Integer getF056() {\n            return f056;\n        }\n\n        public void setF056(Integer f056) {\n            this.f056 = f056;\n        }\n\n        public Integer getF057() {\n            return f057;\n        }\n\n        public void setF057(Integer f057) {\n            this.f057 = f057;\n        }\n\n        public Integer getF058() {\n            return f058;\n        }\n\n        public void setF058(Integer f058) {\n            this.f058 = f058;\n        }\n\n        public Integer getF059() {\n            return f059;\n        }\n\n        public void setF059(Integer f059) {\n            this.f059 = f059;\n        }\n\n        public Integer getF060() {\n            return f060;\n        }\n\n        public void setF060(Integer f060) {\n            this.f060 = f060;\n        }\n\n        public Integer getF061() {\n            return f061;\n        }\n\n        public void setF061(Integer f061) {\n            this.f061 = f061;\n        }\n\n        public Integer getF062() {\n            return f062;\n        }\n\n        public void setF062(Integer f062) {\n            this.f062 = f062;\n        }\n\n        public Integer getF063() {\n            return f063;\n        }\n\n        public void setF063(Integer f063) {\n            this.f063 = f063;\n        }\n\n        public Integer getF064() {\n            return f064;\n        }\n\n        public void setF064(Integer f064) {\n            this.f064 = f064;\n        }\n\n        public Integer getF065() {\n            return f065;\n        }\n\n        public void setF065(Integer f065) {\n            this.f065 = f065;\n        }\n\n        public Integer getF066() {\n            return f066;\n        }\n\n        public void setF066(Integer f066) {\n            this.f066 = f066;\n        }\n\n        public Integer getF067() {\n            return f067;\n        }\n\n        public void setF067(Integer f067) {\n            this.f067 = f067;\n        }\n\n        public Integer getF068() {\n            return f068;\n        }\n\n        public void setF068(Integer f068) {\n            this.f068 = f068;\n        }\n\n        public Integer getF069() {\n            return f069;\n        }\n\n        public void setF069(Integer f069) {\n            this.f069 = f069;\n        }\n\n        public Integer getF070() {\n            return f070;\n        }\n\n        public void setF070(Integer f070) {\n            this.f070 = f070;\n        }\n\n        public Integer getF071() {\n            return f071;\n        }\n\n        public void setF071(Integer f071) {\n            this.f071 = f071;\n        }\n\n        public Integer getF072() {\n            return f072;\n        }\n\n        public void setF072(Integer f072) {\n            this.f072 = f072;\n        }\n\n        public Integer getF073() {\n            return f073;\n        }\n\n        public void setF073(Integer f073) {\n            this.f073 = f073;\n        }\n\n        public Integer getF074() {\n            return f074;\n        }\n\n        public void setF074(Integer f074) {\n            this.f074 = f074;\n        }\n\n        public Integer getF075() {\n            return f075;\n        }\n\n        public void setF075(Integer f075) {\n            this.f075 = f075;\n        }\n\n        public Integer getF076() {\n            return f076;\n        }\n\n        public void setF076(Integer f076) {\n            this.f076 = f076;\n        }\n\n        public Integer getF077() {\n            return f077;\n        }\n\n        public void setF077(Integer f077) {\n            this.f077 = f077;\n        }\n\n        public Integer getF078() {\n            return f078;\n        }\n\n        public void setF078(Integer f078) {\n            this.f078 = f078;\n        }\n\n        public Integer getF079() {\n            return f079;\n        }\n\n        public void setF079(Integer f079) {\n            this.f079 = f079;\n        }\n\n        public Integer getF080() {\n            return f080;\n        }\n\n        public void setF080(Integer f080) {\n            this.f080 = f080;\n        }\n\n        public Integer getF081() {\n            return f081;\n        }\n\n        public void setF081(Integer f081) {\n            this.f081 = f081;\n        }\n\n        public Integer getF082() {\n            return f082;\n        }\n\n        public void setF082(Integer f082) {\n            this.f082 = f082;\n        }\n\n        public Integer getF083() {\n            return f083;\n        }\n\n        public void setF083(Integer f083) {\n            this.f083 = f083;\n        }\n\n        public Integer getF084() {\n            return f084;\n        }\n\n        public void setF084(Integer f084) {\n            this.f084 = f084;\n        }\n\n        public Integer getF085() {\n            return f085;\n        }\n\n        public void setF085(Integer f085) {\n            this.f085 = f085;\n        }\n\n        public Integer getF086() {\n            return f086;\n        }\n\n        public void setF086(Integer f086) {\n            this.f086 = f086;\n        }\n\n        public Integer getF087() {\n            return f087;\n        }\n\n        public void setF087(Integer f087) {\n            this.f087 = f087;\n        }\n\n        public Integer getF088() {\n            return f088;\n        }\n\n        public void setF088(Integer f088) {\n            this.f088 = f088;\n        }\n\n        public Integer getF089() {\n            return f089;\n        }\n\n        public void setF089(Integer f089) {\n            this.f089 = f089;\n        }\n\n        public Integer getF090() {\n            return f090;\n        }\n\n        public void setF090(Integer f090) {\n            this.f090 = f090;\n        }\n\n        public Integer getF091() {\n            return f091;\n        }\n\n        public void setF091(Integer f091) {\n            this.f091 = f091;\n        }\n\n        public Integer getF092() {\n            return f092;\n        }\n\n        public void setF092(Integer f092) {\n            this.f092 = f092;\n        }\n\n        public Integer getF093() {\n            return f093;\n        }\n\n        public void setF093(Integer f093) {\n            this.f093 = f093;\n        }\n\n        public Integer getF094() {\n            return f094;\n        }\n\n        public void setF094(Integer f094) {\n            this.f094 = f094;\n        }\n\n        public Integer getF095() {\n            return f095;\n        }\n\n        public void setF095(Integer f095) {\n            this.f095 = f095;\n        }\n\n        public Integer getF096() {\n            return f096;\n        }\n\n        public void setF096(Integer f096) {\n            this.f096 = f096;\n        }\n\n        public Integer getF097() {\n            return f097;\n        }\n\n        public void setF097(Integer f097) {\n            this.f097 = f097;\n        }\n\n        public Integer getF098() {\n            return f098;\n        }\n\n        public void setF098(Integer f098) {\n            this.f098 = f098;\n        }\n\n        public Integer getF099() {\n            return f099;\n        }\n\n        public void setF099(Integer f099) {\n            this.f099 = f099;\n        }\n\n        public Integer getF100() {\n            return f100;\n        }\n\n        public void setF100(Integer f100) {\n            this.f100 = f100;\n        }\n\n        public Integer getF101() {\n            return f101;\n        }\n\n        public void setF101(Integer f101) {\n            this.f101 = f101;\n        }\n\n        public Integer getF102() {\n            return f102;\n        }\n\n        public void setF102(Integer f102) {\n            this.f102 = f102;\n        }\n\n        public Integer getF103() {\n            return f103;\n        }\n\n        public void setF103(Integer f103) {\n            this.f103 = f103;\n        }\n\n        public Integer getF104() {\n            return f104;\n        }\n\n        public void setF104(Integer f104) {\n            this.f104 = f104;\n        }\n\n        public Integer getF105() {\n            return f105;\n        }\n\n        public void setF105(Integer f105) {\n            this.f105 = f105;\n        }\n\n        public Integer getF106() {\n            return f106;\n        }\n\n        public void setF106(Integer f106) {\n            this.f106 = f106;\n        }\n\n        public Integer getF107() {\n            return f107;\n        }\n\n        public void setF107(Integer f107) {\n            this.f107 = f107;\n        }\n\n        public Integer getF108() {\n            return f108;\n        }\n\n        public void setF108(Integer f108) {\n            this.f108 = f108;\n        }\n\n        public Integer getF109() {\n            return f109;\n        }\n\n        public void setF109(Integer f109) {\n            this.f109 = f109;\n        }\n\n        public Integer getF110() {\n            return f110;\n        }\n\n        public void setF110(Integer f110) {\n            this.f110 = f110;\n        }\n\n        public Integer getF111() {\n            return f111;\n        }\n\n        public void setF111(Integer f111) {\n            this.f111 = f111;\n        }\n\n        public Integer getF112() {\n            return f112;\n        }\n\n        public void setF112(Integer f112) {\n            this.f112 = f112;\n        }\n\n        public Integer getF113() {\n            return f113;\n        }\n\n        public void setF113(Integer f113) {\n            this.f113 = f113;\n        }\n\n        public Integer getF114() {\n            return f114;\n        }\n\n        public void setF114(Integer f114) {\n            this.f114 = f114;\n        }\n\n        public Integer getF115() {\n            return f115;\n        }\n\n        public void setF115(Integer f115) {\n            this.f115 = f115;\n        }\n\n        public Integer getF116() {\n            return f116;\n        }\n\n        public void setF116(Integer f116) {\n            this.f116 = f116;\n        }\n\n        public Integer getF117() {\n            return f117;\n        }\n\n        public void setF117(Integer f117) {\n            this.f117 = f117;\n        }\n\n        public Integer getF118() {\n            return f118;\n        }\n\n        public void setF118(Integer f118) {\n            this.f118 = f118;\n        }\n\n        public Integer getF119() {\n            return f119;\n        }\n\n        public void setF119(Integer f119) {\n            this.f119 = f119;\n        }\n\n        public Integer getF120() {\n            return f120;\n        }\n\n        public void setF120(Integer f120) {\n            this.f120 = f120;\n        }\n\n        public Integer getF121() {\n            return f121;\n        }\n\n        public void setF121(Integer f121) {\n            this.f121 = f121;\n        }\n\n        public Integer getF122() {\n            return f122;\n        }\n\n        public void setF122(Integer f122) {\n            this.f122 = f122;\n        }\n\n        public Integer getF123() {\n            return f123;\n        }\n\n        public void setF123(Integer f123) {\n            this.f123 = f123;\n        }\n\n        public Integer getF124() {\n            return f124;\n        }\n\n        public void setF124(Integer f124) {\n            this.f124 = f124;\n        }\n\n        public Integer getF125() {\n            return f125;\n        }\n\n        public void setF125(Integer f125) {\n            this.f125 = f125;\n        }\n\n        public Integer getF126() {\n            return f126;\n        }\n\n        public void setF126(Integer f126) {\n            this.f126 = f126;\n        }\n\n        public Integer getF127() {\n            return f127;\n        }\n\n        public void setF127(Integer f127) {\n            this.f127 = f127;\n        }\n\n        public Integer getF128() {\n            return f128;\n        }\n\n        public void setF128(Integer f128) {\n            this.f128 = f128;\n        }\n\n        public Integer getF129() {\n            return f129;\n        }\n\n        public void setF129(Integer f129) {\n            this.f129 = f129;\n        }\n\n        public Integer getF130() {\n            return f130;\n        }\n\n        public void setF130(Integer f130) {\n            this.f130 = f130;\n        }\n\n        public Integer getF131() {\n            return f131;\n        }\n\n        public void setF131(Integer f131) {\n            this.f131 = f131;\n        }\n\n        public Integer getF132() {\n            return f132;\n        }\n\n        public void setF132(Integer f132) {\n            this.f132 = f132;\n        }\n\n        public Integer getF133() {\n            return f133;\n        }\n\n        public void setF133(Integer f133) {\n            this.f133 = f133;\n        }\n\n        public Integer getF134() {\n            return f134;\n        }\n\n        public void setF134(Integer f134) {\n            this.f134 = f134;\n        }\n\n        public Integer getF135() {\n            return f135;\n        }\n\n        public void setF135(Integer f135) {\n            this.f135 = f135;\n        }\n\n        public Integer getF136() {\n            return f136;\n        }\n\n        public void setF136(Integer f136) {\n            this.f136 = f136;\n        }\n\n        public Integer getF137() {\n            return f137;\n        }\n\n        public void setF137(Integer f137) {\n            this.f137 = f137;\n        }\n\n        public Integer getF138() {\n            return f138;\n        }\n\n        public void setF138(Integer f138) {\n            this.f138 = f138;\n        }\n\n        public Integer getF139() {\n            return f139;\n        }\n\n        public void setF139(Integer f139) {\n            this.f139 = f139;\n        }\n\n        public Integer getF140() {\n            return f140;\n        }\n\n        public void setF140(Integer f140) {\n            this.f140 = f140;\n        }\n\n        public Integer getF141() {\n            return f141;\n        }\n\n        public void setF141(Integer f141) {\n            this.f141 = f141;\n        }\n\n        public Integer getF142() {\n            return f142;\n        }\n\n        public void setF142(Integer f142) {\n            this.f142 = f142;\n        }\n\n        public Integer getF143() {\n            return f143;\n        }\n\n        public void setF143(Integer f143) {\n            this.f143 = f143;\n        }\n\n        public Integer getF144() {\n            return f144;\n        }\n\n        public void setF144(Integer f144) {\n            this.f144 = f144;\n        }\n\n        public Integer getF145() {\n            return f145;\n        }\n\n        public void setF145(Integer f145) {\n            this.f145 = f145;\n        }\n\n        public Integer getF146() {\n            return f146;\n        }\n\n        public void setF146(Integer f146) {\n            this.f146 = f146;\n        }\n\n        public Integer getF147() {\n            return f147;\n        }\n\n        public void setF147(Integer f147) {\n            this.f147 = f147;\n        }\n\n        public Integer getF148() {\n            return f148;\n        }\n\n        public void setF148(Integer f148) {\n            this.f148 = f148;\n        }\n\n        public Integer getF149() {\n            return f149;\n        }\n\n        public void setF149(Integer f149) {\n            this.f149 = f149;\n        }\n\n        public Integer getF150() {\n            return f150;\n        }\n\n        public void setF150(Integer f150) {\n            this.f150 = f150;\n        }\n\n        public Integer getF151() {\n            return f151;\n        }\n\n        public void setF151(Integer f151) {\n            this.f151 = f151;\n        }\n\n        public Integer getF152() {\n            return f152;\n        }\n\n        public void setF152(Integer f152) {\n            this.f152 = f152;\n        }\n\n        public Integer getF153() {\n            return f153;\n        }\n\n        public void setF153(Integer f153) {\n            this.f153 = f153;\n        }\n\n        public Integer getF154() {\n            return f154;\n        }\n\n        public void setF154(Integer f154) {\n            this.f154 = f154;\n        }\n\n        public Integer getF155() {\n            return f155;\n        }\n\n        public void setF155(Integer f155) {\n            this.f155 = f155;\n        }\n\n        public Integer getF156() {\n            return f156;\n        }\n\n        public void setF156(Integer f156) {\n            this.f156 = f156;\n        }\n\n        public Integer getF157() {\n            return f157;\n        }\n\n        public void setF157(Integer f157) {\n            this.f157 = f157;\n        }\n\n        public Integer getF158() {\n            return f158;\n        }\n\n        public void setF158(Integer f158) {\n            this.f158 = f158;\n        }\n\n        public Integer getF159() {\n            return f159;\n        }\n\n        public void setF159(Integer f159) {\n            this.f159 = f159;\n        }\n\n        public Integer getF160() {\n            return f160;\n        }\n\n        public void setF160(Integer f160) {\n            this.f160 = f160;\n        }\n\n        public Integer getF161() {\n            return f161;\n        }\n\n        public void setF161(Integer f161) {\n            this.f161 = f161;\n        }\n\n        public Integer getF162() {\n            return f162;\n        }\n\n        public void setF162(Integer f162) {\n            this.f162 = f162;\n        }\n\n        public Integer getF163() {\n            return f163;\n        }\n\n        public void setF163(Integer f163) {\n            this.f163 = f163;\n        }\n\n        public Integer getF164() {\n            return f164;\n        }\n\n        public void setF164(Integer f164) {\n            this.f164 = f164;\n        }\n\n        public Integer getF165() {\n            return f165;\n        }\n\n        public void setF165(Integer f165) {\n            this.f165 = f165;\n        }\n\n        public Integer getF166() {\n            return f166;\n        }\n\n        public void setF166(Integer f166) {\n            this.f166 = f166;\n        }\n\n        public Integer getF167() {\n            return f167;\n        }\n\n        public void setF167(Integer f167) {\n            this.f167 = f167;\n        }\n\n        public Integer getF168() {\n            return f168;\n        }\n\n        public void setF168(Integer f168) {\n            this.f168 = f168;\n        }\n\n        public Integer getF169() {\n            return f169;\n        }\n\n        public void setF169(Integer f169) {\n            this.f169 = f169;\n        }\n\n        public Integer getF170() {\n            return f170;\n        }\n\n        public void setF170(Integer f170) {\n            this.f170 = f170;\n        }\n\n        public Integer getF171() {\n            return f171;\n        }\n\n        public void setF171(Integer f171) {\n            this.f171 = f171;\n        }\n\n        public Integer getF172() {\n            return f172;\n        }\n\n        public void setF172(Integer f172) {\n            this.f172 = f172;\n        }\n\n        public Integer getF173() {\n            return f173;\n        }\n\n        public void setF173(Integer f173) {\n            this.f173 = f173;\n        }\n\n        public Integer getF174() {\n            return f174;\n        }\n\n        public void setF174(Integer f174) {\n            this.f174 = f174;\n        }\n\n        public Integer getF175() {\n            return f175;\n        }\n\n        public void setF175(Integer f175) {\n            this.f175 = f175;\n        }\n\n        public Integer getF176() {\n            return f176;\n        }\n\n        public void setF176(Integer f176) {\n            this.f176 = f176;\n        }\n\n        public Integer getF177() {\n            return f177;\n        }\n\n        public void setF177(Integer f177) {\n            this.f177 = f177;\n        }\n\n        public Integer getF178() {\n            return f178;\n        }\n\n        public void setF178(Integer f178) {\n            this.f178 = f178;\n        }\n\n        public Integer getF179() {\n            return f179;\n        }\n\n        public void setF179(Integer f179) {\n            this.f179 = f179;\n        }\n\n        public Integer getF180() {\n            return f180;\n        }\n\n        public void setF180(Integer f180) {\n            this.f180 = f180;\n        }\n\n        public Integer getF181() {\n            return f181;\n        }\n\n        public void setF181(Integer f181) {\n            this.f181 = f181;\n        }\n\n        public Integer getF182() {\n            return f182;\n        }\n\n        public void setF182(Integer f182) {\n            this.f182 = f182;\n        }\n\n        public Integer getF183() {\n            return f183;\n        }\n\n        public void setF183(Integer f183) {\n            this.f183 = f183;\n        }\n\n        public Integer getF184() {\n            return f184;\n        }\n\n        public void setF184(Integer f184) {\n            this.f184 = f184;\n        }\n\n        public Integer getF185() {\n            return f185;\n        }\n\n        public void setF185(Integer f185) {\n            this.f185 = f185;\n        }\n\n        public Integer getF186() {\n            return f186;\n        }\n\n        public void setF186(Integer f186) {\n            this.f186 = f186;\n        }\n\n        public Integer getF187() {\n            return f187;\n        }\n\n        public void setF187(Integer f187) {\n            this.f187 = f187;\n        }\n\n        public Integer getF188() {\n            return f188;\n        }\n\n        public void setF188(Integer f188) {\n            this.f188 = f188;\n        }\n\n        public Integer getF189() {\n            return f189;\n        }\n\n        public void setF189(Integer f189) {\n            this.f189 = f189;\n        }\n\n        public Integer getF190() {\n            return f190;\n        }\n\n        public void setF190(Integer f190) {\n            this.f190 = f190;\n        }\n\n        public Integer getF191() {\n            return f191;\n        }\n\n        public void setF191(Integer f191) {\n            this.f191 = f191;\n        }\n\n        public Integer getF192() {\n            return f192;\n        }\n\n        public void setF192(Integer f192) {\n            this.f192 = f192;\n        }\n\n        public Integer getF193() {\n            return f193;\n        }\n\n        public void setF193(Integer f193) {\n            this.f193 = f193;\n        }\n\n        public Integer getF194() {\n            return f194;\n        }\n\n        public void setF194(Integer f194) {\n            this.f194 = f194;\n        }\n\n        public Integer getF195() {\n            return f195;\n        }\n\n        public void setF195(Integer f195) {\n            this.f195 = f195;\n        }\n\n        public Integer getF196() {\n            return f196;\n        }\n\n        public void setF196(Integer f196) {\n            this.f196 = f196;\n        }\n\n        public Integer getF197() {\n            return f197;\n        }\n\n        public void setF197(Integer f197) {\n            this.f197 = f197;\n        }\n\n        public Integer getF198() {\n            return f198;\n        }\n\n        public void setF198(Integer f198) {\n            this.f198 = f198;\n        }\n\n        public Integer getF199() {\n            return f199;\n        }\n\n        public void setF199(Integer f199) {\n            this.f199 = f199;\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/asm/Huge_300_ClassTest.java",
    "content": "package com.alibaba.json.bvt.asm;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Huge_300_ClassTest extends TestCase {\n\n    public void test_huge() {\n        JSON.parseObject(\"{}\", VO.class);\n    }\n\n    public static class VO {\n\n        private Integer f000;\n        private Integer f001;\n        private Integer f002;\n        private Integer f003;\n        private Integer f004;\n        private Integer f005;\n        private Integer f006;\n        private Integer f007;\n        private Integer f008;\n        private Integer f009;\n\n        private Integer f010;\n        private Integer f011;\n        private Integer f012;\n        private Integer f013;\n        private Integer f014;\n        private Integer f015;\n        private Integer f016;\n        private Integer f017;\n        private Integer f018;\n        private Integer f019;\n\n        private Integer f020;\n        private Integer f021;\n        private Integer f022;\n        private Integer f023;\n        private Integer f024;\n        private Integer f025;\n        private Integer f026;\n        private Integer f027;\n        private Integer f028;\n        private Integer f029;\n\n        private Integer f030;\n        private Integer f031;\n        private Integer f032;\n        private Integer f033;\n        private Integer f034;\n        private Integer f035;\n        private Integer f036;\n        private Integer f037;\n        private Integer f038;\n        private Integer f039;\n\n        private Integer f040;\n        private Integer f041;\n        private Integer f042;\n        private Integer f043;\n        private Integer f044;\n        private Integer f045;\n        private Integer f046;\n        private Integer f047;\n        private Integer f048;\n        private Integer f049;\n\n        private Integer f050;\n        private Integer f051;\n        private Integer f052;\n        private Integer f053;\n        private Integer f054;\n        private Integer f055;\n        private Integer f056;\n        private Integer f057;\n        private Integer f058;\n        private Integer f059;\n\n        private Integer f060;\n        private Integer f061;\n        private Integer f062;\n        private Integer f063;\n        private Integer f064;\n        private Integer f065;\n        private Integer f066;\n        private Integer f067;\n        private Integer f068;\n        private Integer f069;\n\n        private Integer f070;\n        private Integer f071;\n        private Integer f072;\n        private Integer f073;\n        private Integer f074;\n        private Integer f075;\n        private Integer f076;\n        private Integer f077;\n        private Integer f078;\n        private Integer f079;\n\n        private Integer f080;\n        private Integer f081;\n        private Integer f082;\n        private Integer f083;\n        private Integer f084;\n        private Integer f085;\n        private Integer f086;\n        private Integer f087;\n        private Integer f088;\n        private Integer f089;\n\n        private Integer f090;\n        private Integer f091;\n        private Integer f092;\n        private Integer f093;\n        private Integer f094;\n        private Integer f095;\n        private Integer f096;\n        private Integer f097;\n        private Integer f098;\n        private Integer f099;\n\n        private Integer f100;\n        private Integer f101;\n        private Integer f102;\n        private Integer f103;\n        private Integer f104;\n        private Integer f105;\n        private Integer f106;\n        private Integer f107;\n        private Integer f108;\n        private Integer f109;\n        private Integer f110;\n        private Integer f111;\n        private Integer f112;\n        private Integer f113;\n        private Integer f114;\n        private Integer f115;\n        private Integer f116;\n        private Integer f117;\n        private Integer f118;\n        private Integer f119;\n        private Integer f120;\n        private Integer f121;\n        private Integer f122;\n        private Integer f123;\n        private Integer f124;\n        private Integer f125;\n        private Integer f126;\n        private Integer f127;\n        private Integer f128;\n        private Integer f129;\n        private Integer f130;\n        private Integer f131;\n        private Integer f132;\n        private Integer f133;\n        private Integer f134;\n        private Integer f135;\n        private Integer f136;\n        private Integer f137;\n        private Integer f138;\n        private Integer f139;\n        private Integer f140;\n        private Integer f141;\n        private Integer f142;\n        private Integer f143;\n        private Integer f144;\n        private Integer f145;\n        private Integer f146;\n        private Integer f147;\n        private Integer f148;\n        private Integer f149;\n        private Integer f150;\n        private Integer f151;\n        private Integer f152;\n        private Integer f153;\n        private Integer f154;\n        private Integer f155;\n        private Integer f156;\n        private Integer f157;\n        private Integer f158;\n        private Integer f159;\n        private Integer f160;\n        private Integer f161;\n        private Integer f162;\n        private Integer f163;\n        private Integer f164;\n        private Integer f165;\n        private Integer f166;\n        private Integer f167;\n        private Integer f168;\n        private Integer f169;\n        private Integer f170;\n        private Integer f171;\n        private Integer f172;\n        private Integer f173;\n        private Integer f174;\n        private Integer f175;\n        private Integer f176;\n        private Integer f177;\n        private Integer f178;\n        private Integer f179;\n        private Integer f180;\n        private Integer f181;\n        private Integer f182;\n        private Integer f183;\n        private Integer f184;\n        private Integer f185;\n        private Integer f186;\n        private Integer f187;\n        private Integer f188;\n        private Integer f189;\n        private Integer f190;\n        private Integer f191;\n        private Integer f192;\n        private Integer f193;\n        private Integer f194;\n        private Integer f195;\n        private Integer f196;\n        private Integer f197;\n        private Integer f198;\n        private Integer f199;\n\n        private Integer f200;\n        private Integer f201;\n        private Integer f202;\n        private Integer f203;\n        private Integer f204;\n        private Integer f205;\n        private Integer f206;\n        private Integer f207;\n        private Integer f208;\n        private Integer f209;\n        private Integer f210;\n        private Integer f211;\n        private Integer f212;\n        private Integer f213;\n        private Integer f214;\n        private Integer f215;\n        private Integer f216;\n        private Integer f217;\n        private Integer f218;\n        private Integer f219;\n        private Integer f220;\n        private Integer f221;\n        private Integer f222;\n        private Integer f223;\n        private Integer f224;\n        private Integer f225;\n        private Integer f226;\n        private Integer f227;\n        private Integer f228;\n        private Integer f229;\n        private Integer f230;\n        private Integer f231;\n        private Integer f232;\n        private Integer f233;\n        private Integer f234;\n        private Integer f235;\n        private Integer f236;\n        private Integer f237;\n        private Integer f238;\n        private Integer f239;\n        private Integer f240;\n        private Integer f241;\n        private Integer f242;\n        private Integer f243;\n        private Integer f244;\n        private Integer f245;\n        private Integer f246;\n        private Integer f247;\n        private Integer f248;\n        private Integer f249;\n        private Integer f250;\n        private Integer f251;\n        private Integer f252;\n        private Integer f253;\n        private Integer f254;\n        private Integer f255;\n        private Integer f256;\n        private Integer f257;\n        private Integer f258;\n        private Integer f259;\n        private Integer f260;\n        private Integer f261;\n        private Integer f262;\n        private Integer f263;\n        private Integer f264;\n        private Integer f265;\n        private Integer f266;\n        private Integer f267;\n        private Integer f268;\n        private Integer f269;\n        private Integer f270;\n        private Integer f271;\n        private Integer f272;\n        private Integer f273;\n        private Integer f274;\n        private Integer f275;\n        private Integer f276;\n        private Integer f277;\n        private Integer f278;\n        private Integer f279;\n        private Integer f280;\n        private Integer f281;\n        private Integer f282;\n        private Integer f283;\n        private Integer f284;\n        private Integer f285;\n        private Integer f286;\n        private Integer f287;\n        private Integer f288;\n        private Integer f289;\n        private Integer f290;\n        private Integer f291;\n        private Integer f292;\n        private Integer f293;\n        private Integer f294;\n        private Integer f295;\n        private Integer f296;\n        private Integer f297;\n        private Integer f298;\n        private Integer f299;\n\n        public Integer getF000() {\n            return f000;\n        }\n\n        public void setF000(Integer f000) {\n            this.f000 = f000;\n        }\n\n        public Integer getF001() {\n            return f001;\n        }\n\n        public void setF001(Integer f001) {\n            this.f001 = f001;\n        }\n\n        public Integer getF002() {\n            return f002;\n        }\n\n        public void setF002(Integer f002) {\n            this.f002 = f002;\n        }\n\n        public Integer getF003() {\n            return f003;\n        }\n\n        public void setF003(Integer f003) {\n            this.f003 = f003;\n        }\n\n        public Integer getF004() {\n            return f004;\n        }\n\n        public void setF004(Integer f004) {\n            this.f004 = f004;\n        }\n\n        public Integer getF005() {\n            return f005;\n        }\n\n        public void setF005(Integer f005) {\n            this.f005 = f005;\n        }\n\n        public Integer getF006() {\n            return f006;\n        }\n\n        public void setF006(Integer f006) {\n            this.f006 = f006;\n        }\n\n        public Integer getF007() {\n            return f007;\n        }\n\n        public void setF007(Integer f007) {\n            this.f007 = f007;\n        }\n\n        public Integer getF008() {\n            return f008;\n        }\n\n        public void setF008(Integer f008) {\n            this.f008 = f008;\n        }\n\n        public Integer getF009() {\n            return f009;\n        }\n\n        public void setF009(Integer f009) {\n            this.f009 = f009;\n        }\n\n        public Integer getF010() {\n            return f010;\n        }\n\n        public void setF010(Integer f010) {\n            this.f010 = f010;\n        }\n\n        public Integer getF011() {\n            return f011;\n        }\n\n        public void setF011(Integer f011) {\n            this.f011 = f011;\n        }\n\n        public Integer getF012() {\n            return f012;\n        }\n\n        public void setF012(Integer f012) {\n            this.f012 = f012;\n        }\n\n        public Integer getF013() {\n            return f013;\n        }\n\n        public void setF013(Integer f013) {\n            this.f013 = f013;\n        }\n\n        public Integer getF014() {\n            return f014;\n        }\n\n        public void setF014(Integer f014) {\n            this.f014 = f014;\n        }\n\n        public Integer getF015() {\n            return f015;\n        }\n\n        public void setF015(Integer f015) {\n            this.f015 = f015;\n        }\n\n        public Integer getF016() {\n            return f016;\n        }\n\n        public void setF016(Integer f016) {\n            this.f016 = f016;\n        }\n\n        public Integer getF017() {\n            return f017;\n        }\n\n        public void setF017(Integer f017) {\n            this.f017 = f017;\n        }\n\n        public Integer getF018() {\n            return f018;\n        }\n\n        public void setF018(Integer f018) {\n            this.f018 = f018;\n        }\n\n        public Integer getF019() {\n            return f019;\n        }\n\n        public void setF019(Integer f019) {\n            this.f019 = f019;\n        }\n\n        public Integer getF020() {\n            return f020;\n        }\n\n        public void setF020(Integer f020) {\n            this.f020 = f020;\n        }\n\n        public Integer getF021() {\n            return f021;\n        }\n\n        public void setF021(Integer f021) {\n            this.f021 = f021;\n        }\n\n        public Integer getF022() {\n            return f022;\n        }\n\n        public void setF022(Integer f022) {\n            this.f022 = f022;\n        }\n\n        public Integer getF023() {\n            return f023;\n        }\n\n        public void setF023(Integer f023) {\n            this.f023 = f023;\n        }\n\n        public Integer getF024() {\n            return f024;\n        }\n\n        public void setF024(Integer f024) {\n            this.f024 = f024;\n        }\n\n        public Integer getF025() {\n            return f025;\n        }\n\n        public void setF025(Integer f025) {\n            this.f025 = f025;\n        }\n\n        public Integer getF026() {\n            return f026;\n        }\n\n        public void setF026(Integer f026) {\n            this.f026 = f026;\n        }\n\n        public Integer getF027() {\n            return f027;\n        }\n\n        public void setF027(Integer f027) {\n            this.f027 = f027;\n        }\n\n        public Integer getF028() {\n            return f028;\n        }\n\n        public void setF028(Integer f028) {\n            this.f028 = f028;\n        }\n\n        public Integer getF029() {\n            return f029;\n        }\n\n        public void setF029(Integer f029) {\n            this.f029 = f029;\n        }\n\n        public Integer getF030() {\n            return f030;\n        }\n\n        public void setF030(Integer f030) {\n            this.f030 = f030;\n        }\n\n        public Integer getF031() {\n            return f031;\n        }\n\n        public void setF031(Integer f031) {\n            this.f031 = f031;\n        }\n\n        public Integer getF032() {\n            return f032;\n        }\n\n        public void setF032(Integer f032) {\n            this.f032 = f032;\n        }\n\n        public Integer getF033() {\n            return f033;\n        }\n\n        public void setF033(Integer f033) {\n            this.f033 = f033;\n        }\n\n        public Integer getF034() {\n            return f034;\n        }\n\n        public void setF034(Integer f034) {\n            this.f034 = f034;\n        }\n\n        public Integer getF035() {\n            return f035;\n        }\n\n        public void setF035(Integer f035) {\n            this.f035 = f035;\n        }\n\n        public Integer getF036() {\n            return f036;\n        }\n\n        public void setF036(Integer f036) {\n            this.f036 = f036;\n        }\n\n        public Integer getF037() {\n            return f037;\n        }\n\n        public void setF037(Integer f037) {\n            this.f037 = f037;\n        }\n\n        public Integer getF038() {\n            return f038;\n        }\n\n        public void setF038(Integer f038) {\n            this.f038 = f038;\n        }\n\n        public Integer getF039() {\n            return f039;\n        }\n\n        public void setF039(Integer f039) {\n            this.f039 = f039;\n        }\n\n        public Integer getF040() {\n            return f040;\n        }\n\n        public void setF040(Integer f040) {\n            this.f040 = f040;\n        }\n\n        public Integer getF041() {\n            return f041;\n        }\n\n        public void setF041(Integer f041) {\n            this.f041 = f041;\n        }\n\n        public Integer getF042() {\n            return f042;\n        }\n\n        public void setF042(Integer f042) {\n            this.f042 = f042;\n        }\n\n        public Integer getF043() {\n            return f043;\n        }\n\n        public void setF043(Integer f043) {\n            this.f043 = f043;\n        }\n\n        public Integer getF044() {\n            return f044;\n        }\n\n        public void setF044(Integer f044) {\n            this.f044 = f044;\n        }\n\n        public Integer getF045() {\n            return f045;\n        }\n\n        public void setF045(Integer f045) {\n            this.f045 = f045;\n        }\n\n        public Integer getF046() {\n            return f046;\n        }\n\n        public void setF046(Integer f046) {\n            this.f046 = f046;\n        }\n\n        public Integer getF047() {\n            return f047;\n        }\n\n        public void setF047(Integer f047) {\n            this.f047 = f047;\n        }\n\n        public Integer getF048() {\n            return f048;\n        }\n\n        public void setF048(Integer f048) {\n            this.f048 = f048;\n        }\n\n        public Integer getF049() {\n            return f049;\n        }\n\n        public void setF049(Integer f049) {\n            this.f049 = f049;\n        }\n\n        public Integer getF050() {\n            return f050;\n        }\n\n        public void setF050(Integer f050) {\n            this.f050 = f050;\n        }\n\n        public Integer getF051() {\n            return f051;\n        }\n\n        public void setF051(Integer f051) {\n            this.f051 = f051;\n        }\n\n        public Integer getF052() {\n            return f052;\n        }\n\n        public void setF052(Integer f052) {\n            this.f052 = f052;\n        }\n\n        public Integer getF053() {\n            return f053;\n        }\n\n        public void setF053(Integer f053) {\n            this.f053 = f053;\n        }\n\n        public Integer getF054() {\n            return f054;\n        }\n\n        public void setF054(Integer f054) {\n            this.f054 = f054;\n        }\n\n        public Integer getF055() {\n            return f055;\n        }\n\n        public void setF055(Integer f055) {\n            this.f055 = f055;\n        }\n\n        public Integer getF056() {\n            return f056;\n        }\n\n        public void setF056(Integer f056) {\n            this.f056 = f056;\n        }\n\n        public Integer getF057() {\n            return f057;\n        }\n\n        public void setF057(Integer f057) {\n            this.f057 = f057;\n        }\n\n        public Integer getF058() {\n            return f058;\n        }\n\n        public void setF058(Integer f058) {\n            this.f058 = f058;\n        }\n\n        public Integer getF059() {\n            return f059;\n        }\n\n        public void setF059(Integer f059) {\n            this.f059 = f059;\n        }\n\n        public Integer getF060() {\n            return f060;\n        }\n\n        public void setF060(Integer f060) {\n            this.f060 = f060;\n        }\n\n        public Integer getF061() {\n            return f061;\n        }\n\n        public void setF061(Integer f061) {\n            this.f061 = f061;\n        }\n\n        public Integer getF062() {\n            return f062;\n        }\n\n        public void setF062(Integer f062) {\n            this.f062 = f062;\n        }\n\n        public Integer getF063() {\n            return f063;\n        }\n\n        public void setF063(Integer f063) {\n            this.f063 = f063;\n        }\n\n        public Integer getF064() {\n            return f064;\n        }\n\n        public void setF064(Integer f064) {\n            this.f064 = f064;\n        }\n\n        public Integer getF065() {\n            return f065;\n        }\n\n        public void setF065(Integer f065) {\n            this.f065 = f065;\n        }\n\n        public Integer getF066() {\n            return f066;\n        }\n\n        public void setF066(Integer f066) {\n            this.f066 = f066;\n        }\n\n        public Integer getF067() {\n            return f067;\n        }\n\n        public void setF067(Integer f067) {\n            this.f067 = f067;\n        }\n\n        public Integer getF068() {\n            return f068;\n        }\n\n        public void setF068(Integer f068) {\n            this.f068 = f068;\n        }\n\n        public Integer getF069() {\n            return f069;\n        }\n\n        public void setF069(Integer f069) {\n            this.f069 = f069;\n        }\n\n        public Integer getF070() {\n            return f070;\n        }\n\n        public void setF070(Integer f070) {\n            this.f070 = f070;\n        }\n\n        public Integer getF071() {\n            return f071;\n        }\n\n        public void setF071(Integer f071) {\n            this.f071 = f071;\n        }\n\n        public Integer getF072() {\n            return f072;\n        }\n\n        public void setF072(Integer f072) {\n            this.f072 = f072;\n        }\n\n        public Integer getF073() {\n            return f073;\n        }\n\n        public void setF073(Integer f073) {\n            this.f073 = f073;\n        }\n\n        public Integer getF074() {\n            return f074;\n        }\n\n        public void setF074(Integer f074) {\n            this.f074 = f074;\n        }\n\n        public Integer getF075() {\n            return f075;\n        }\n\n        public void setF075(Integer f075) {\n            this.f075 = f075;\n        }\n\n        public Integer getF076() {\n            return f076;\n        }\n\n        public void setF076(Integer f076) {\n            this.f076 = f076;\n        }\n\n        public Integer getF077() {\n            return f077;\n        }\n\n        public void setF077(Integer f077) {\n            this.f077 = f077;\n        }\n\n        public Integer getF078() {\n            return f078;\n        }\n\n        public void setF078(Integer f078) {\n            this.f078 = f078;\n        }\n\n        public Integer getF079() {\n            return f079;\n        }\n\n        public void setF079(Integer f079) {\n            this.f079 = f079;\n        }\n\n        public Integer getF080() {\n            return f080;\n        }\n\n        public void setF080(Integer f080) {\n            this.f080 = f080;\n        }\n\n        public Integer getF081() {\n            return f081;\n        }\n\n        public void setF081(Integer f081) {\n            this.f081 = f081;\n        }\n\n        public Integer getF082() {\n            return f082;\n        }\n\n        public void setF082(Integer f082) {\n            this.f082 = f082;\n        }\n\n        public Integer getF083() {\n            return f083;\n        }\n\n        public void setF083(Integer f083) {\n            this.f083 = f083;\n        }\n\n        public Integer getF084() {\n            return f084;\n        }\n\n        public void setF084(Integer f084) {\n            this.f084 = f084;\n        }\n\n        public Integer getF085() {\n            return f085;\n        }\n\n        public void setF085(Integer f085) {\n            this.f085 = f085;\n        }\n\n        public Integer getF086() {\n            return f086;\n        }\n\n        public void setF086(Integer f086) {\n            this.f086 = f086;\n        }\n\n        public Integer getF087() {\n            return f087;\n        }\n\n        public void setF087(Integer f087) {\n            this.f087 = f087;\n        }\n\n        public Integer getF088() {\n            return f088;\n        }\n\n        public void setF088(Integer f088) {\n            this.f088 = f088;\n        }\n\n        public Integer getF089() {\n            return f089;\n        }\n\n        public void setF089(Integer f089) {\n            this.f089 = f089;\n        }\n\n        public Integer getF090() {\n            return f090;\n        }\n\n        public void setF090(Integer f090) {\n            this.f090 = f090;\n        }\n\n        public Integer getF091() {\n            return f091;\n        }\n\n        public void setF091(Integer f091) {\n            this.f091 = f091;\n        }\n\n        public Integer getF092() {\n            return f092;\n        }\n\n        public void setF092(Integer f092) {\n            this.f092 = f092;\n        }\n\n        public Integer getF093() {\n            return f093;\n        }\n\n        public void setF093(Integer f093) {\n            this.f093 = f093;\n        }\n\n        public Integer getF094() {\n            return f094;\n        }\n\n        public void setF094(Integer f094) {\n            this.f094 = f094;\n        }\n\n        public Integer getF095() {\n            return f095;\n        }\n\n        public void setF095(Integer f095) {\n            this.f095 = f095;\n        }\n\n        public Integer getF096() {\n            return f096;\n        }\n\n        public void setF096(Integer f096) {\n            this.f096 = f096;\n        }\n\n        public Integer getF097() {\n            return f097;\n        }\n\n        public void setF097(Integer f097) {\n            this.f097 = f097;\n        }\n\n        public Integer getF098() {\n            return f098;\n        }\n\n        public void setF098(Integer f098) {\n            this.f098 = f098;\n        }\n\n        public Integer getF099() {\n            return f099;\n        }\n\n        public void setF099(Integer f099) {\n            this.f099 = f099;\n        }\n\n        public Integer getF100() {\n            return f100;\n        }\n\n        public void setF100(Integer f100) {\n            this.f100 = f100;\n        }\n\n        public Integer getF101() {\n            return f101;\n        }\n\n        public void setF101(Integer f101) {\n            this.f101 = f101;\n        }\n\n        public Integer getF102() {\n            return f102;\n        }\n\n        public void setF102(Integer f102) {\n            this.f102 = f102;\n        }\n\n        public Integer getF103() {\n            return f103;\n        }\n\n        public void setF103(Integer f103) {\n            this.f103 = f103;\n        }\n\n        public Integer getF104() {\n            return f104;\n        }\n\n        public void setF104(Integer f104) {\n            this.f104 = f104;\n        }\n\n        public Integer getF105() {\n            return f105;\n        }\n\n        public void setF105(Integer f105) {\n            this.f105 = f105;\n        }\n\n        public Integer getF106() {\n            return f106;\n        }\n\n        public void setF106(Integer f106) {\n            this.f106 = f106;\n        }\n\n        public Integer getF107() {\n            return f107;\n        }\n\n        public void setF107(Integer f107) {\n            this.f107 = f107;\n        }\n\n        public Integer getF108() {\n            return f108;\n        }\n\n        public void setF108(Integer f108) {\n            this.f108 = f108;\n        }\n\n        public Integer getF109() {\n            return f109;\n        }\n\n        public void setF109(Integer f109) {\n            this.f109 = f109;\n        }\n\n        public Integer getF110() {\n            return f110;\n        }\n\n        public void setF110(Integer f110) {\n            this.f110 = f110;\n        }\n\n        public Integer getF111() {\n            return f111;\n        }\n\n        public void setF111(Integer f111) {\n            this.f111 = f111;\n        }\n\n        public Integer getF112() {\n            return f112;\n        }\n\n        public void setF112(Integer f112) {\n            this.f112 = f112;\n        }\n\n        public Integer getF113() {\n            return f113;\n        }\n\n        public void setF113(Integer f113) {\n            this.f113 = f113;\n        }\n\n        public Integer getF114() {\n            return f114;\n        }\n\n        public void setF114(Integer f114) {\n            this.f114 = f114;\n        }\n\n        public Integer getF115() {\n            return f115;\n        }\n\n        public void setF115(Integer f115) {\n            this.f115 = f115;\n        }\n\n        public Integer getF116() {\n            return f116;\n        }\n\n        public void setF116(Integer f116) {\n            this.f116 = f116;\n        }\n\n        public Integer getF117() {\n            return f117;\n        }\n\n        public void setF117(Integer f117) {\n            this.f117 = f117;\n        }\n\n        public Integer getF118() {\n            return f118;\n        }\n\n        public void setF118(Integer f118) {\n            this.f118 = f118;\n        }\n\n        public Integer getF119() {\n            return f119;\n        }\n\n        public void setF119(Integer f119) {\n            this.f119 = f119;\n        }\n\n        public Integer getF120() {\n            return f120;\n        }\n\n        public void setF120(Integer f120) {\n            this.f120 = f120;\n        }\n\n        public Integer getF121() {\n            return f121;\n        }\n\n        public void setF121(Integer f121) {\n            this.f121 = f121;\n        }\n\n        public Integer getF122() {\n            return f122;\n        }\n\n        public void setF122(Integer f122) {\n            this.f122 = f122;\n        }\n\n        public Integer getF123() {\n            return f123;\n        }\n\n        public void setF123(Integer f123) {\n            this.f123 = f123;\n        }\n\n        public Integer getF124() {\n            return f124;\n        }\n\n        public void setF124(Integer f124) {\n            this.f124 = f124;\n        }\n\n        public Integer getF125() {\n            return f125;\n        }\n\n        public void setF125(Integer f125) {\n            this.f125 = f125;\n        }\n\n        public Integer getF126() {\n            return f126;\n        }\n\n        public void setF126(Integer f126) {\n            this.f126 = f126;\n        }\n\n        public Integer getF127() {\n            return f127;\n        }\n\n        public void setF127(Integer f127) {\n            this.f127 = f127;\n        }\n\n        public Integer getF128() {\n            return f128;\n        }\n\n        public void setF128(Integer f128) {\n            this.f128 = f128;\n        }\n\n        public Integer getF129() {\n            return f129;\n        }\n\n        public void setF129(Integer f129) {\n            this.f129 = f129;\n        }\n\n        public Integer getF130() {\n            return f130;\n        }\n\n        public void setF130(Integer f130) {\n            this.f130 = f130;\n        }\n\n        public Integer getF131() {\n            return f131;\n        }\n\n        public void setF131(Integer f131) {\n            this.f131 = f131;\n        }\n\n        public Integer getF132() {\n            return f132;\n        }\n\n        public void setF132(Integer f132) {\n            this.f132 = f132;\n        }\n\n        public Integer getF133() {\n            return f133;\n        }\n\n        public void setF133(Integer f133) {\n            this.f133 = f133;\n        }\n\n        public Integer getF134() {\n            return f134;\n        }\n\n        public void setF134(Integer f134) {\n            this.f134 = f134;\n        }\n\n        public Integer getF135() {\n            return f135;\n        }\n\n        public void setF135(Integer f135) {\n            this.f135 = f135;\n        }\n\n        public Integer getF136() {\n            return f136;\n        }\n\n        public void setF136(Integer f136) {\n            this.f136 = f136;\n        }\n\n        public Integer getF137() {\n            return f137;\n        }\n\n        public void setF137(Integer f137) {\n            this.f137 = f137;\n        }\n\n        public Integer getF138() {\n            return f138;\n        }\n\n        public void setF138(Integer f138) {\n            this.f138 = f138;\n        }\n\n        public Integer getF139() {\n            return f139;\n        }\n\n        public void setF139(Integer f139) {\n            this.f139 = f139;\n        }\n\n        public Integer getF140() {\n            return f140;\n        }\n\n        public void setF140(Integer f140) {\n            this.f140 = f140;\n        }\n\n        public Integer getF141() {\n            return f141;\n        }\n\n        public void setF141(Integer f141) {\n            this.f141 = f141;\n        }\n\n        public Integer getF142() {\n            return f142;\n        }\n\n        public void setF142(Integer f142) {\n            this.f142 = f142;\n        }\n\n        public Integer getF143() {\n            return f143;\n        }\n\n        public void setF143(Integer f143) {\n            this.f143 = f143;\n        }\n\n        public Integer getF144() {\n            return f144;\n        }\n\n        public void setF144(Integer f144) {\n            this.f144 = f144;\n        }\n\n        public Integer getF145() {\n            return f145;\n        }\n\n        public void setF145(Integer f145) {\n            this.f145 = f145;\n        }\n\n        public Integer getF146() {\n            return f146;\n        }\n\n        public void setF146(Integer f146) {\n            this.f146 = f146;\n        }\n\n        public Integer getF147() {\n            return f147;\n        }\n\n        public void setF147(Integer f147) {\n            this.f147 = f147;\n        }\n\n        public Integer getF148() {\n            return f148;\n        }\n\n        public void setF148(Integer f148) {\n            this.f148 = f148;\n        }\n\n        public Integer getF149() {\n            return f149;\n        }\n\n        public void setF149(Integer f149) {\n            this.f149 = f149;\n        }\n\n        public Integer getF150() {\n            return f150;\n        }\n\n        public void setF150(Integer f150) {\n            this.f150 = f150;\n        }\n\n        public Integer getF151() {\n            return f151;\n        }\n\n        public void setF151(Integer f151) {\n            this.f151 = f151;\n        }\n\n        public Integer getF152() {\n            return f152;\n        }\n\n        public void setF152(Integer f152) {\n            this.f152 = f152;\n        }\n\n        public Integer getF153() {\n            return f153;\n        }\n\n        public void setF153(Integer f153) {\n            this.f153 = f153;\n        }\n\n        public Integer getF154() {\n            return f154;\n        }\n\n        public void setF154(Integer f154) {\n            this.f154 = f154;\n        }\n\n        public Integer getF155() {\n            return f155;\n        }\n\n        public void setF155(Integer f155) {\n            this.f155 = f155;\n        }\n\n        public Integer getF156() {\n            return f156;\n        }\n\n        public void setF156(Integer f156) {\n            this.f156 = f156;\n        }\n\n        public Integer getF157() {\n            return f157;\n        }\n\n        public void setF157(Integer f157) {\n            this.f157 = f157;\n        }\n\n        public Integer getF158() {\n            return f158;\n        }\n\n        public void setF158(Integer f158) {\n            this.f158 = f158;\n        }\n\n        public Integer getF159() {\n            return f159;\n        }\n\n        public void setF159(Integer f159) {\n            this.f159 = f159;\n        }\n\n        public Integer getF160() {\n            return f160;\n        }\n\n        public void setF160(Integer f160) {\n            this.f160 = f160;\n        }\n\n        public Integer getF161() {\n            return f161;\n        }\n\n        public void setF161(Integer f161) {\n            this.f161 = f161;\n        }\n\n        public Integer getF162() {\n            return f162;\n        }\n\n        public void setF162(Integer f162) {\n            this.f162 = f162;\n        }\n\n        public Integer getF163() {\n            return f163;\n        }\n\n        public void setF163(Integer f163) {\n            this.f163 = f163;\n        }\n\n        public Integer getF164() {\n            return f164;\n        }\n\n        public void setF164(Integer f164) {\n            this.f164 = f164;\n        }\n\n        public Integer getF165() {\n            return f165;\n        }\n\n        public void setF165(Integer f165) {\n            this.f165 = f165;\n        }\n\n        public Integer getF166() {\n            return f166;\n        }\n\n        public void setF166(Integer f166) {\n            this.f166 = f166;\n        }\n\n        public Integer getF167() {\n            return f167;\n        }\n\n        public void setF167(Integer f167) {\n            this.f167 = f167;\n        }\n\n        public Integer getF168() {\n            return f168;\n        }\n\n        public void setF168(Integer f168) {\n            this.f168 = f168;\n        }\n\n        public Integer getF169() {\n            return f169;\n        }\n\n        public void setF169(Integer f169) {\n            this.f169 = f169;\n        }\n\n        public Integer getF170() {\n            return f170;\n        }\n\n        public void setF170(Integer f170) {\n            this.f170 = f170;\n        }\n\n        public Integer getF171() {\n            return f171;\n        }\n\n        public void setF171(Integer f171) {\n            this.f171 = f171;\n        }\n\n        public Integer getF172() {\n            return f172;\n        }\n\n        public void setF172(Integer f172) {\n            this.f172 = f172;\n        }\n\n        public Integer getF173() {\n            return f173;\n        }\n\n        public void setF173(Integer f173) {\n            this.f173 = f173;\n        }\n\n        public Integer getF174() {\n            return f174;\n        }\n\n        public void setF174(Integer f174) {\n            this.f174 = f174;\n        }\n\n        public Integer getF175() {\n            return f175;\n        }\n\n        public void setF175(Integer f175) {\n            this.f175 = f175;\n        }\n\n        public Integer getF176() {\n            return f176;\n        }\n\n        public void setF176(Integer f176) {\n            this.f176 = f176;\n        }\n\n        public Integer getF177() {\n            return f177;\n        }\n\n        public void setF177(Integer f177) {\n            this.f177 = f177;\n        }\n\n        public Integer getF178() {\n            return f178;\n        }\n\n        public void setF178(Integer f178) {\n            this.f178 = f178;\n        }\n\n        public Integer getF179() {\n            return f179;\n        }\n\n        public void setF179(Integer f179) {\n            this.f179 = f179;\n        }\n\n        public Integer getF180() {\n            return f180;\n        }\n\n        public void setF180(Integer f180) {\n            this.f180 = f180;\n        }\n\n        public Integer getF181() {\n            return f181;\n        }\n\n        public void setF181(Integer f181) {\n            this.f181 = f181;\n        }\n\n        public Integer getF182() {\n            return f182;\n        }\n\n        public void setF182(Integer f182) {\n            this.f182 = f182;\n        }\n\n        public Integer getF183() {\n            return f183;\n        }\n\n        public void setF183(Integer f183) {\n            this.f183 = f183;\n        }\n\n        public Integer getF184() {\n            return f184;\n        }\n\n        public void setF184(Integer f184) {\n            this.f184 = f184;\n        }\n\n        public Integer getF185() {\n            return f185;\n        }\n\n        public void setF185(Integer f185) {\n            this.f185 = f185;\n        }\n\n        public Integer getF186() {\n            return f186;\n        }\n\n        public void setF186(Integer f186) {\n            this.f186 = f186;\n        }\n\n        public Integer getF187() {\n            return f187;\n        }\n\n        public void setF187(Integer f187) {\n            this.f187 = f187;\n        }\n\n        public Integer getF188() {\n            return f188;\n        }\n\n        public void setF188(Integer f188) {\n            this.f188 = f188;\n        }\n\n        public Integer getF189() {\n            return f189;\n        }\n\n        public void setF189(Integer f189) {\n            this.f189 = f189;\n        }\n\n        public Integer getF190() {\n            return f190;\n        }\n\n        public void setF190(Integer f190) {\n            this.f190 = f190;\n        }\n\n        public Integer getF191() {\n            return f191;\n        }\n\n        public void setF191(Integer f191) {\n            this.f191 = f191;\n        }\n\n        public Integer getF192() {\n            return f192;\n        }\n\n        public void setF192(Integer f192) {\n            this.f192 = f192;\n        }\n\n        public Integer getF193() {\n            return f193;\n        }\n\n        public void setF193(Integer f193) {\n            this.f193 = f193;\n        }\n\n        public Integer getF194() {\n            return f194;\n        }\n\n        public void setF194(Integer f194) {\n            this.f194 = f194;\n        }\n\n        public Integer getF195() {\n            return f195;\n        }\n\n        public void setF195(Integer f195) {\n            this.f195 = f195;\n        }\n\n        public Integer getF196() {\n            return f196;\n        }\n\n        public void setF196(Integer f196) {\n            this.f196 = f196;\n        }\n\n        public Integer getF197() {\n            return f197;\n        }\n\n        public void setF197(Integer f197) {\n            this.f197 = f197;\n        }\n\n        public Integer getF198() {\n            return f198;\n        }\n\n        public void setF198(Integer f198) {\n            this.f198 = f198;\n        }\n\n        public Integer getF199() {\n            return f199;\n        }\n\n        public void setF199(Integer f199) {\n            this.f199 = f199;\n        }\n\n        \n        public Integer getF200() {\n            return f200;\n        }\n\n        \n        public void setF200(Integer f200) {\n            this.f200 = f200;\n        }\n\n        \n        public Integer getF201() {\n            return f201;\n        }\n\n        \n        public void setF201(Integer f201) {\n            this.f201 = f201;\n        }\n\n        \n        public Integer getF202() {\n            return f202;\n        }\n\n        \n        public void setF202(Integer f202) {\n            this.f202 = f202;\n        }\n\n        \n        public Integer getF203() {\n            return f203;\n        }\n\n        \n        public void setF203(Integer f203) {\n            this.f203 = f203;\n        }\n\n        \n        public Integer getF204() {\n            return f204;\n        }\n\n        \n        public void setF204(Integer f204) {\n            this.f204 = f204;\n        }\n\n        \n        public Integer getF205() {\n            return f205;\n        }\n\n        \n        public void setF205(Integer f205) {\n            this.f205 = f205;\n        }\n\n        \n        public Integer getF206() {\n            return f206;\n        }\n\n        \n        public void setF206(Integer f206) {\n            this.f206 = f206;\n        }\n\n        \n        public Integer getF207() {\n            return f207;\n        }\n\n        \n        public void setF207(Integer f207) {\n            this.f207 = f207;\n        }\n\n        \n        public Integer getF208() {\n            return f208;\n        }\n\n        \n        public void setF208(Integer f208) {\n            this.f208 = f208;\n        }\n\n        \n        public Integer getF209() {\n            return f209;\n        }\n\n        \n        public void setF209(Integer f209) {\n            this.f209 = f209;\n        }\n\n        \n        public Integer getF210() {\n            return f210;\n        }\n\n        \n        public void setF210(Integer f210) {\n            this.f210 = f210;\n        }\n\n        \n        public Integer getF211() {\n            return f211;\n        }\n\n        \n        public void setF211(Integer f211) {\n            this.f211 = f211;\n        }\n\n        \n        public Integer getF212() {\n            return f212;\n        }\n\n        \n        public void setF212(Integer f212) {\n            this.f212 = f212;\n        }\n\n        \n        public Integer getF213() {\n            return f213;\n        }\n\n        \n        public void setF213(Integer f213) {\n            this.f213 = f213;\n        }\n\n        \n        public Integer getF214() {\n            return f214;\n        }\n\n        \n        public void setF214(Integer f214) {\n            this.f214 = f214;\n        }\n\n        \n        public Integer getF215() {\n            return f215;\n        }\n\n        \n        public void setF215(Integer f215) {\n            this.f215 = f215;\n        }\n\n        \n        public Integer getF216() {\n            return f216;\n        }\n\n        \n        public void setF216(Integer f216) {\n            this.f216 = f216;\n        }\n\n        \n        public Integer getF217() {\n            return f217;\n        }\n\n        \n        public void setF217(Integer f217) {\n            this.f217 = f217;\n        }\n\n        \n        public Integer getF218() {\n            return f218;\n        }\n\n        \n        public void setF218(Integer f218) {\n            this.f218 = f218;\n        }\n\n        \n        public Integer getF219() {\n            return f219;\n        }\n\n        \n        public void setF219(Integer f219) {\n            this.f219 = f219;\n        }\n\n        \n        public Integer getF220() {\n            return f220;\n        }\n\n        \n        public void setF220(Integer f220) {\n            this.f220 = f220;\n        }\n\n        \n        public Integer getF221() {\n            return f221;\n        }\n\n        \n        public void setF221(Integer f221) {\n            this.f221 = f221;\n        }\n\n        \n        public Integer getF222() {\n            return f222;\n        }\n\n        \n        public void setF222(Integer f222) {\n            this.f222 = f222;\n        }\n\n        \n        public Integer getF223() {\n            return f223;\n        }\n\n        \n        public void setF223(Integer f223) {\n            this.f223 = f223;\n        }\n\n        \n        public Integer getF224() {\n            return f224;\n        }\n\n        \n        public void setF224(Integer f224) {\n            this.f224 = f224;\n        }\n\n        \n        public Integer getF225() {\n            return f225;\n        }\n\n        \n        public void setF225(Integer f225) {\n            this.f225 = f225;\n        }\n\n        \n        public Integer getF226() {\n            return f226;\n        }\n\n        \n        public void setF226(Integer f226) {\n            this.f226 = f226;\n        }\n\n        \n        public Integer getF227() {\n            return f227;\n        }\n\n        \n        public void setF227(Integer f227) {\n            this.f227 = f227;\n        }\n\n        \n        public Integer getF228() {\n            return f228;\n        }\n\n        \n        public void setF228(Integer f228) {\n            this.f228 = f228;\n        }\n\n        \n        public Integer getF229() {\n            return f229;\n        }\n\n        \n        public void setF229(Integer f229) {\n            this.f229 = f229;\n        }\n\n        \n        public Integer getF230() {\n            return f230;\n        }\n\n        \n        public void setF230(Integer f230) {\n            this.f230 = f230;\n        }\n\n        \n        public Integer getF231() {\n            return f231;\n        }\n\n        \n        public void setF231(Integer f231) {\n            this.f231 = f231;\n        }\n\n        \n        public Integer getF232() {\n            return f232;\n        }\n\n        \n        public void setF232(Integer f232) {\n            this.f232 = f232;\n        }\n\n        \n        public Integer getF233() {\n            return f233;\n        }\n\n        \n        public void setF233(Integer f233) {\n            this.f233 = f233;\n        }\n\n        \n        public Integer getF234() {\n            return f234;\n        }\n\n        \n        public void setF234(Integer f234) {\n            this.f234 = f234;\n        }\n\n        \n        public Integer getF235() {\n            return f235;\n        }\n\n        \n        public void setF235(Integer f235) {\n            this.f235 = f235;\n        }\n\n        \n        public Integer getF236() {\n            return f236;\n        }\n\n        \n        public void setF236(Integer f236) {\n            this.f236 = f236;\n        }\n\n        \n        public Integer getF237() {\n            return f237;\n        }\n\n        \n        public void setF237(Integer f237) {\n            this.f237 = f237;\n        }\n\n        \n        public Integer getF238() {\n            return f238;\n        }\n\n        \n        public void setF238(Integer f238) {\n            this.f238 = f238;\n        }\n\n        \n        public Integer getF239() {\n            return f239;\n        }\n\n        \n        public void setF239(Integer f239) {\n            this.f239 = f239;\n        }\n\n        \n        public Integer getF240() {\n            return f240;\n        }\n\n        \n        public void setF240(Integer f240) {\n            this.f240 = f240;\n        }\n\n        \n        public Integer getF241() {\n            return f241;\n        }\n\n        \n        public void setF241(Integer f241) {\n            this.f241 = f241;\n        }\n\n        \n        public Integer getF242() {\n            return f242;\n        }\n\n        \n        public void setF242(Integer f242) {\n            this.f242 = f242;\n        }\n\n        \n        public Integer getF243() {\n            return f243;\n        }\n\n        \n        public void setF243(Integer f243) {\n            this.f243 = f243;\n        }\n\n        \n        public Integer getF244() {\n            return f244;\n        }\n\n        \n        public void setF244(Integer f244) {\n            this.f244 = f244;\n        }\n\n        \n        public Integer getF245() {\n            return f245;\n        }\n\n        \n        public void setF245(Integer f245) {\n            this.f245 = f245;\n        }\n\n        \n        public Integer getF246() {\n            return f246;\n        }\n\n        \n        public void setF246(Integer f246) {\n            this.f246 = f246;\n        }\n\n        \n        public Integer getF247() {\n            return f247;\n        }\n\n        \n        public void setF247(Integer f247) {\n            this.f247 = f247;\n        }\n\n        \n        public Integer getF248() {\n            return f248;\n        }\n\n        \n        public void setF248(Integer f248) {\n            this.f248 = f248;\n        }\n\n        \n        public Integer getF249() {\n            return f249;\n        }\n\n        \n        public void setF249(Integer f249) {\n            this.f249 = f249;\n        }\n\n        \n        public Integer getF250() {\n            return f250;\n        }\n\n        \n        public void setF250(Integer f250) {\n            this.f250 = f250;\n        }\n\n        \n        public Integer getF251() {\n            return f251;\n        }\n\n        \n        public void setF251(Integer f251) {\n            this.f251 = f251;\n        }\n\n        \n        public Integer getF252() {\n            return f252;\n        }\n\n        \n        public void setF252(Integer f252) {\n            this.f252 = f252;\n        }\n\n        \n        public Integer getF253() {\n            return f253;\n        }\n\n        \n        public void setF253(Integer f253) {\n            this.f253 = f253;\n        }\n\n        \n        public Integer getF254() {\n            return f254;\n        }\n\n        \n        public void setF254(Integer f254) {\n            this.f254 = f254;\n        }\n\n        \n        public Integer getF255() {\n            return f255;\n        }\n\n        \n        public void setF255(Integer f255) {\n            this.f255 = f255;\n        }\n\n        \n        public Integer getF256() {\n            return f256;\n        }\n\n        \n        public void setF256(Integer f256) {\n            this.f256 = f256;\n        }\n\n        \n        public Integer getF257() {\n            return f257;\n        }\n\n        \n        public void setF257(Integer f257) {\n            this.f257 = f257;\n        }\n\n        \n        public Integer getF258() {\n            return f258;\n        }\n\n        \n        public void setF258(Integer f258) {\n            this.f258 = f258;\n        }\n\n        \n        public Integer getF259() {\n            return f259;\n        }\n\n        \n        public void setF259(Integer f259) {\n            this.f259 = f259;\n        }\n\n        \n        public Integer getF260() {\n            return f260;\n        }\n\n        \n        public void setF260(Integer f260) {\n            this.f260 = f260;\n        }\n\n        \n        public Integer getF261() {\n            return f261;\n        }\n\n        \n        public void setF261(Integer f261) {\n            this.f261 = f261;\n        }\n\n        \n        public Integer getF262() {\n            return f262;\n        }\n\n        \n        public void setF262(Integer f262) {\n            this.f262 = f262;\n        }\n\n        \n        public Integer getF263() {\n            return f263;\n        }\n\n        \n        public void setF263(Integer f263) {\n            this.f263 = f263;\n        }\n\n        \n        public Integer getF264() {\n            return f264;\n        }\n\n        \n        public void setF264(Integer f264) {\n            this.f264 = f264;\n        }\n\n        \n        public Integer getF265() {\n            return f265;\n        }\n\n        \n        public void setF265(Integer f265) {\n            this.f265 = f265;\n        }\n\n        \n        public Integer getF266() {\n            return f266;\n        }\n\n        \n        public void setF266(Integer f266) {\n            this.f266 = f266;\n        }\n\n        \n        public Integer getF267() {\n            return f267;\n        }\n\n        \n        public void setF267(Integer f267) {\n            this.f267 = f267;\n        }\n\n        \n        public Integer getF268() {\n            return f268;\n        }\n\n        \n        public void setF268(Integer f268) {\n            this.f268 = f268;\n        }\n\n        \n        public Integer getF269() {\n            return f269;\n        }\n\n        \n        public void setF269(Integer f269) {\n            this.f269 = f269;\n        }\n\n        \n        public Integer getF270() {\n            return f270;\n        }\n\n        \n        public void setF270(Integer f270) {\n            this.f270 = f270;\n        }\n\n        \n        public Integer getF271() {\n            return f271;\n        }\n\n        \n        public void setF271(Integer f271) {\n            this.f271 = f271;\n        }\n\n        \n        public Integer getF272() {\n            return f272;\n        }\n\n        \n        public void setF272(Integer f272) {\n            this.f272 = f272;\n        }\n\n        \n        public Integer getF273() {\n            return f273;\n        }\n\n        \n        public void setF273(Integer f273) {\n            this.f273 = f273;\n        }\n\n        \n        public Integer getF274() {\n            return f274;\n        }\n\n        \n        public void setF274(Integer f274) {\n            this.f274 = f274;\n        }\n\n        \n        public Integer getF275() {\n            return f275;\n        }\n\n        \n        public void setF275(Integer f275) {\n            this.f275 = f275;\n        }\n\n        \n        public Integer getF276() {\n            return f276;\n        }\n\n        \n        public void setF276(Integer f276) {\n            this.f276 = f276;\n        }\n\n        \n        public Integer getF277() {\n            return f277;\n        }\n\n        \n        public void setF277(Integer f277) {\n            this.f277 = f277;\n        }\n\n        \n        public Integer getF278() {\n            return f278;\n        }\n\n        \n        public void setF278(Integer f278) {\n            this.f278 = f278;\n        }\n\n        \n        public Integer getF279() {\n            return f279;\n        }\n\n        \n        public void setF279(Integer f279) {\n            this.f279 = f279;\n        }\n\n        \n        public Integer getF280() {\n            return f280;\n        }\n\n        \n        public void setF280(Integer f280) {\n            this.f280 = f280;\n        }\n\n        \n        public Integer getF281() {\n            return f281;\n        }\n\n        \n        public void setF281(Integer f281) {\n            this.f281 = f281;\n        }\n\n        \n        public Integer getF282() {\n            return f282;\n        }\n\n        \n        public void setF282(Integer f282) {\n            this.f282 = f282;\n        }\n\n        \n        public Integer getF283() {\n            return f283;\n        }\n\n        \n        public void setF283(Integer f283) {\n            this.f283 = f283;\n        }\n\n        \n        public Integer getF284() {\n            return f284;\n        }\n\n        \n        public void setF284(Integer f284) {\n            this.f284 = f284;\n        }\n\n        \n        public Integer getF285() {\n            return f285;\n        }\n\n        \n        public void setF285(Integer f285) {\n            this.f285 = f285;\n        }\n\n        \n        public Integer getF286() {\n            return f286;\n        }\n\n        \n        public void setF286(Integer f286) {\n            this.f286 = f286;\n        }\n\n        \n        public Integer getF287() {\n            return f287;\n        }\n\n        \n        public void setF287(Integer f287) {\n            this.f287 = f287;\n        }\n\n        \n        public Integer getF288() {\n            return f288;\n        }\n\n        \n        public void setF288(Integer f288) {\n            this.f288 = f288;\n        }\n\n        \n        public Integer getF289() {\n            return f289;\n        }\n\n        \n        public void setF289(Integer f289) {\n            this.f289 = f289;\n        }\n\n        \n        public Integer getF290() {\n            return f290;\n        }\n\n        \n        public void setF290(Integer f290) {\n            this.f290 = f290;\n        }\n\n        \n        public Integer getF291() {\n            return f291;\n        }\n\n        \n        public void setF291(Integer f291) {\n            this.f291 = f291;\n        }\n\n        \n        public Integer getF292() {\n            return f292;\n        }\n\n        \n        public void setF292(Integer f292) {\n            this.f292 = f292;\n        }\n\n        \n        public Integer getF293() {\n            return f293;\n        }\n\n        \n        public void setF293(Integer f293) {\n            this.f293 = f293;\n        }\n\n        \n        public Integer getF294() {\n            return f294;\n        }\n\n        \n        public void setF294(Integer f294) {\n            this.f294 = f294;\n        }\n\n        \n        public Integer getF295() {\n            return f295;\n        }\n\n        \n        public void setF295(Integer f295) {\n            this.f295 = f295;\n        }\n\n        \n        public Integer getF296() {\n            return f296;\n        }\n\n        \n        public void setF296(Integer f296) {\n            this.f296 = f296;\n        }\n\n        \n        public Integer getF297() {\n            return f297;\n        }\n\n        \n        public void setF297(Integer f297) {\n            this.f297 = f297;\n        }\n\n        \n        public Integer getF298() {\n            return f298;\n        }\n\n        \n        public void setF298(Integer f298) {\n            this.f298 = f298;\n        }\n\n        \n        public Integer getF299() {\n            return f299;\n        }\n\n        \n        public void setF299(Integer f299) {\n            this.f299 = f299;\n        }\n        \n        \n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/asm/JSONASMUtilTest.java",
    "content": "package com.alibaba.json.bvt.asm;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.util.ASMUtils;\n\npublic class JSONASMUtilTest extends TestCase {\n\n    public void test_1() throws Exception {\n        Assert.assertEquals(\"V\", ASMUtils.desc(Void.TYPE));\n        Assert.assertEquals(\"J\", ASMUtils.desc(Long.TYPE));\n        Assert.assertEquals(\"[J\", ASMUtils.desc(long[].class));\n        Assert.assertEquals(\"[Ljava/lang/Long;\", ASMUtils.desc(Long[].class));\n    }\n\n    public void test_error_1() throws Exception {\n        new ASMUtils();\n\n        Exception error = null;\n        try {\n            ASMUtils.getPrimitiveLetter(Long.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/asm/LoopTest.java",
    "content": "package com.alibaba.json.bvt.asm;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class LoopTest extends TestCase {\n    \n    public void test_loop() throws Exception {\n        Department department = JSON.parseObject(\"{id:12,name:'R & D', members:[{id:2001, name:'jobs'}]}\", Department.class);\n        Assert.assertNotNull(department);\n        Assert.assertEquals(12, department.getId());\n    }\n\n    public static class Department {\n\n        private int            id;\n        private String         name;\n\n        private List<Employee> members = new ArrayList<Employee>();\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public List<Employee> getMembers() {\n            return members;\n        }\n\n        public void setMembers(List<Employee> members) {\n            this.members = members;\n        }\n\n    }\n\n    public static class Employee {\n\n        private int        id;\n        private String     name;\n\n        private Department department;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public Department getDepartment() {\n            return department;\n        }\n\n        public void setDepartment(Department department) {\n            this.department = department;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/asm/SortFieldTest.java",
    "content": "package com.alibaba.json.bvt.asm;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport java.util.LinkedHashMap;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class SortFieldTest extends TestCase {\n\n    public void test_0() throws Exception {\n        V0 entity = new V0();\n\n        String text = JSON.toJSONString(entity, SerializerFeature.UseSingleQuotes, SerializerFeature.SortField);\n\n        Assert.assertEquals(\"{'f0':0,'f1':0,'f10':0,'f11':0,'f12':0,'f13':0,'f14':0,'f2':0,'f3':0,'f4':0,'f5':0,'f6':0,'f7':0,'f8':0,'f9':0}\", text);\n\n        LinkedHashMap object = JSON.parseObject(text, LinkedHashMap.class);\n        text = JSON.toJSONString(object, SerializerFeature.UseSingleQuotes, SerializerFeature.SortField);\n        Assert.assertEquals(\"{'f0':0,'f1':0,'f10':0,'f11':0,'f12':0,'f13':0,'f14':0,'f2':0,'f3':0,'f4':0,'f5':0,'f6':0,'f7':0,'f8':0,'f9':0}\", text);\n\n    }\n    \npublic void test_1() throws Exception {\n    V1 entity = new V1();\n\n    String text = JSON.toJSONString(entity, SerializerFeature.SortField);\n    System.out.println(text);\n\n    // 按字段顺序输出\n    // {\"f1\":0,\"f2\":0,\"f3\":0,\"f4\":0,\"f5\":0} \n    Assert.assertEquals(\"{\\\"f1\\\":0,\\\"f2\\\":0,\\\"f3\\\":0,\\\"f4\\\":0,\\\"f5\\\":0}\", text);\n\n    JSONObject object = JSON.parseObject(text);\n    text = JSON.toJSONString(object, SerializerFeature.SortField);\n    Assert.assertEquals(\"{\\\"f1\\\":0,\\\"f2\\\":0,\\\"f3\\\":0,\\\"f4\\\":0,\\\"f5\\\":0}\", text);\n\n}\n\npublic static class V1 {\n\n    private int f2;\n    private int f1;\n    private int f4;\n    private int f3;\n    private int f5;\n\n    public int getF2() { return f2;}\n    public void setF2(int f2) {this.f2 = f2;}\n    public int getF1() {return f1;}\n    public void setF1(int f1) {this.f1 = f1;}\n    public int getF4() {return f4;}\n    public void setF4(int f4) {this.f4 = f4;}\n    public int getF3() {return f3;}\n    public void setF3(int f3) {this.f3 = f3;}\n    public int getF5() {return f5;}\n    public void setF5(int f5) {this.f5 = f5;}\n}\n\n    public static class V0 {\n\n        private int f5;\n        private int f4;\n        private int f3;\n        private int f2;\n        private int f1;\n        private int f0;\n        private int f6;\n        private int f7;\n        private int f8;\n        private int f9;\n        private int f14;\n        private int f13;\n        private int f12;\n        private int f11;\n        private int f10;\n\n        public int getF5() {\n            return f5;\n        }\n\n        public void setF5(int f5) {\n            this.f5 = f5;\n        }\n\n        public int getF4() {\n            return f4;\n        }\n\n        public void setF4(int f4) {\n            this.f4 = f4;\n        }\n\n        public int getF3() {\n            return f3;\n        }\n\n        public void setF3(int f3) {\n            this.f3 = f3;\n        }\n\n        public int getF2() {\n            return f2;\n        }\n\n        public void setF2(int f2) {\n            this.f2 = f2;\n        }\n\n        public int getF1() {\n            return f1;\n        }\n\n        public void setF1(int f1) {\n            this.f1 = f1;\n        }\n\n        public int getF0() {\n            return f0;\n        }\n\n        public void setF0(int f0) {\n            this.f0 = f0;\n        }\n\n        public int getF6() {\n            return f6;\n        }\n\n        public void setF6(int f6) {\n            this.f6 = f6;\n        }\n\n        public int getF7() {\n            return f7;\n        }\n\n        public void setF7(int f7) {\n            this.f7 = f7;\n        }\n\n        public int getF8() {\n            return f8;\n        }\n\n        public void setF8(int f8) {\n            this.f8 = f8;\n        }\n\n        public int getF9() {\n            return f9;\n        }\n\n        public void setF9(int f9) {\n            this.f9 = f9;\n        }\n\n        public int getF14() {\n            return f14;\n        }\n\n        public void setF14(int f14) {\n            this.f14 = f14;\n        }\n\n        public int getF13() {\n            return f13;\n        }\n\n        public void setF13(int f13) {\n            this.f13 = f13;\n        }\n\n        public int getF12() {\n            return f12;\n        }\n\n        public void setF12(int f12) {\n            this.f12 = f12;\n        }\n\n        public int getF11() {\n            return f11;\n        }\n\n        public void setF11(int f11) {\n            this.f11 = f11;\n        }\n\n        public int getF10() {\n            return f10;\n        }\n\n        public void setF10(int f10) {\n            this.f10 = f10;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/asm/TestList.java",
    "content": "package com.alibaba.json.bvt.asm;\n\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestList extends TestCase {\n\n    public void test_0() throws Exception {\n        VO o = new VO();\n        o.setId(123);\n        {\n            Map<String, List<String>> item = new HashMap<String, List<String>>();\n            item.put(\"1\", Arrays.asList(\"a1\", \"b1\"));\n            o.getItems().add(item);\n        }\n        {\n            Map<String, List<String>> item = new HashMap<String, List<String>>();\n            item.put(\"2\", Arrays.asList(\"a2\", \"b2\"));\n            o.getItems().add(item);\n        }\n\n        String text = JSON.toJSONString(o);\n\n        VO o1 = JSON.parseObject(text, VO.class);\n        String text1 = JSON.toJSONString(o1);\n\n        Assert.assertEquals(text1, text);\n        Assert.assertEquals(\"{\\\"id\\\":123,\\\"items\\\":[{\\\"1\\\":[\\\"a1\\\",\\\"b1\\\"]},{\\\"2\\\":[\\\"a2\\\",\\\"b2\\\"]}]}\", text);\n    }\n\n    public static class VO {\n\n        private int                             id;\n        private List<Map<String, List<String>>> items = new ArrayList<Map<String, List<String>>>();\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public List<Map<String, List<String>>> getItems() {\n            return items;\n        }\n\n        public void setItems(List<Map<String, List<String>>> items) {\n            this.items = items;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/asm/TestNonASM.java",
    "content": "package com.alibaba.json.bvt.asm;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\n\npublic class TestNonASM extends TestCase {\n\n    public void test_no_asm() throws Exception {\n        ParserConfig mapping = new ParserConfig();\n        \n        mapping.setAsmEnable(false);\n        Assert.assertEquals(false, mapping.isAsmEnable());\n        \n        mapping.setAsmEnable(true);\n        Assert.assertEquals(true, mapping.isAsmEnable());\n    }\n    \n    public void test_error() throws Exception {\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/asm/TestType.java",
    "content": "package com.alibaba.json.bvt.asm;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.asm.Type;\nimport com.alibaba.fastjson.util.ASMUtils;\n\npublic class TestType extends TestCase {\n\n    public void test_getType() throws Exception {\n        Assert.assertEquals(Type.VOID_TYPE, Type.getType(ASMUtils.desc(void.class)));\n\n        Assert.assertEquals(Type.BOOLEAN_TYPE, Type.getType(ASMUtils.desc(boolean.class)));\n\n        Assert.assertEquals(Type.CHAR_TYPE, Type.getType(ASMUtils.desc(char.class)));\n\n        Assert.assertEquals(Type.BYTE_TYPE, Type.getType(ASMUtils.desc(byte.class)));\n\n        Assert.assertEquals(Type.SHORT_TYPE, Type.getType(ASMUtils.desc(short.class)));\n\n        Assert.assertEquals(Type.INT_TYPE, Type.getType(ASMUtils.desc(int.class)));\n\n        Assert.assertEquals(Type.LONG_TYPE, Type.getType(ASMUtils.desc(long.class)));\n\n        Assert.assertEquals(Type.FLOAT_TYPE, Type.getType(ASMUtils.desc(float.class)));\n\n        Assert.assertEquals(Type.DOUBLE_TYPE, Type.getType(ASMUtils.desc(double.class)));\n        \n        Assert.assertEquals(\"[D\", Type.getType(ASMUtils.desc(double[].class)).getInternalName());\n        Assert.assertEquals(\"[[D\", Type.getType(ASMUtils.desc(double[][].class)).getInternalName());\n        Assert.assertEquals(\"[Ljava/lang/Double;\", Type.getType(ASMUtils.desc(Double[].class)).getInternalName());\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/atomic/AtomicBooleanReadOnlyTest.java",
    "content": "package com.alibaba.json.bvt.atomic;\n\nimport java.util.concurrent.atomic.AtomicBoolean;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class AtomicBooleanReadOnlyTest extends TestCase {\n\n    public void test_codec_null() throws Exception {\n        V0 v = new V0(true);\n\n        String text = JSON.toJSONString(v);\n        Assert.assertEquals(\"{\\\"value\\\":true}\", text);\n\n        V0 v1 = JSON.parseObject(text, V0.class);\n\n        Assert.assertEquals(v1.getValue().get(), v.getValue().get());\n    }\n\n    public static class V0 {\n\n        private final AtomicBoolean value;\n\n        public V0(){\n            this(false);\n        }\n\n        public V0(boolean value){\n            this.value = new AtomicBoolean(value);\n        }\n\n        public AtomicBoolean getValue() {\n            return value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/atomic/AtomicIntegerArrayFieldTest.java",
    "content": "package com.alibaba.json.bvt.atomic;\r\n\r\nimport java.util.concurrent.atomic.AtomicIntegerArray;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class AtomicIntegerArrayFieldTest extends TestCase {\r\n\r\n    public void test_codec_null() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty);\r\n        Assert.assertEquals(\"{\\\"value\\\":[]}\", text);\r\n    }\r\n    \r\n    public void test_codec_null_2() throws Exception {\r\n        V0 v = JSON.parseObject(\"{\\\"value\\\":[1,2]}\", V0.class);\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty);\r\n        Assert.assertEquals(\"{\\\"value\\\":[1,2]}\", text);\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private AtomicIntegerArray value;\r\n\r\n        public AtomicIntegerArray getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(AtomicIntegerArray value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/atomic/AtomicIntegerReadOnlyTest.java",
    "content": "package com.alibaba.json.bvt.atomic;\n\nimport java.util.concurrent.atomic.AtomicInteger;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class AtomicIntegerReadOnlyTest extends TestCase {\n\n    public void test_codec_null() throws Exception {\n        V0 v = new V0(123);\n\n        String text = JSON.toJSONString(v);\n        Assert.assertEquals(\"{\\\"value\\\":123}\", text);\n\n        V0 v1 = JSON.parseObject(text, V0.class);\n\n        Assert.assertEquals(v1.getValue().intValue(), v.getValue().intValue());\n    }\n\n    public static class V0 {\n\n        private final AtomicInteger value;\n\n        public V0(){\n            this(0);\n        }\n\n        public V0(int value){\n            this.value = new AtomicInteger(value);\n        }\n\n        public AtomicInteger getValue() {\n            return value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/atomic/AtomicLongArrayFieldTest.java",
    "content": "package com.alibaba.json.bvt.atomic;\r\n\r\nimport java.util.concurrent.atomic.AtomicLongArray;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class AtomicLongArrayFieldTest extends TestCase {\r\n\r\n    public void test_codec_null() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty);\r\n        Assert.assertEquals(\"{\\\"value\\\":[]}\", text);\r\n    }\r\n    \r\n    public void test_codec_null_2() throws Exception {\r\n        V0 v = JSON.parseObject(\"{\\\"value\\\":[1,2]}\", V0.class);\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty);\r\n        Assert.assertEquals(\"{\\\"value\\\":[1,2]}\", text);\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private AtomicLongArray value;\r\n\r\n        public AtomicLongArray getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(AtomicLongArray value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/atomic/AtomicLongReadOnlyTest.java",
    "content": "package com.alibaba.json.bvt.atomic;\n\nimport java.util.concurrent.atomic.AtomicLong;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class AtomicLongReadOnlyTest extends TestCase {\n\n    public void test_codec_null() throws Exception {\n        V0 v = new V0(123);\n\n        String text = JSON.toJSONString(v);\n        Assert.assertEquals(\"{\\\"value\\\":123}\", text);\n\n        V0 v1 = JSON.parseObject(text, V0.class);\n\n        Assert.assertEquals(v1.getValue().intValue(), v.getValue().intValue());\n    }\n\n    public static class V0 {\n\n        private final AtomicLong value;\n\n        public V0(){\n            this(0);\n        }\n\n        public V0(int value){\n            this.value = new AtomicLong(value);\n        }\n\n        public AtomicLong getValue() {\n            return value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/awt/ColorTest.java",
    "content": "package com.alibaba.json.bvt.awt;\n\nimport java.awt.Color;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.AwtCodec;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\n\nimport junit.framework.TestCase;\n\n\npublic class ColorTest extends TestCase {\n    public void test_color() throws Exception {\n        JSONSerializer serializer = new JSONSerializer();\n        Assert.assertEquals(AwtCodec.class, serializer.getObjectWriter(Color.class).getClass());\n        \n        Color color = Color.RED;\n        String text = JSON.toJSONString(color);\n        System.out.println(text);\n        \n        Color color2 = JSON.parseObject(text, Color.class);\n        \n        Assert.assertEquals(color, color2);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/awt/FontTest.java",
    "content": "package com.alibaba.json.bvt.awt;\n\nimport java.awt.Font;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class FontTest extends TestCase {\n\n    public void test_color() throws Exception {\n        Font[] fonts = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();\n        for (Font font : fonts) {\n            String text = JSON.toJSONString(font);\n\n            Font font2 = JSON.parseObject(text, Font.class);\n\n            Assert.assertEquals(font, font2);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/awt/FontTest2.java",
    "content": "package com.alibaba.json.bvt.awt;\n\nimport java.awt.Font;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class FontTest2 extends TestCase {\n\n    public void test_color() throws Exception {\n        Font[] fonts = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();\n        for (Font font : fonts) {\n            String text = JSON.toJSONString(font, SerializerFeature.WriteClassName);\n\n            Font font2 = (Font) JSON.parse(text);\n\n            Assert.assertEquals(font, font2);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/basicType/BigDecimal_BrowserCompatible.java",
    "content": "package com.alibaba.json.bvt.basicType;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.math.BigDecimal;\nimport java.math.BigInteger;\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\npublic class BigDecimal_BrowserCompatible extends TestCase {\n    public void test_for_issue() throws Exception {\n        Map<String, Object> map = new LinkedHashMap<String, Object>();\n        map.put(\"id1\", new BigDecimal(\"-9223370018640066466\"));\n        map.put(\"id2\", new BigDecimal(\"9223370018640066466\"));\n        map.put(\"id3\", new BigDecimal(\"100\"));\n        assertEquals(\"{\\\"id1\\\":\\\"-9223370018640066466\\\",\\\"id2\\\":\\\"9223370018640066466\\\",\\\"id3\\\":100}\",\n                JSON.toJSONString(map, SerializerFeature.BrowserCompatible)\n        );\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/basicType/BigDecimal_field.java",
    "content": "package com.alibaba.json.bvt.basicType;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport java.math.BigDecimal;\nimport java.math.BigInteger;\n\nimport static com.alibaba.fastjson.serializer.SerializerFeature.BrowserCompatible;\n\npublic class BigDecimal_field extends TestCase {\n    public void test_for_issue() throws Exception {\n        assertEquals(\"{\\\"value\\\":\\\"9007199254741992\\\"}\"\n                , JSON.toJSONString(\n                        new Model(9007199254741992L)));\n\n        assertEquals(\"{\\\"value\\\":\\\"-9007199254741992\\\"}\"\n                , JSON.toJSONString(\n                        new Model(-9007199254741992L)));\n\n        assertEquals(\"{\\\"value\\\":9007199254740990}\"\n                , JSON.toJSONString(\n                        new Model(9007199254740990L)));\n\n        assertEquals(\"{\\\"value\\\":-9007199254740990}\"\n                , JSON.toJSONString(\n                        new Model(-9007199254740990L)));\n\n        assertEquals(\"{\\\"value\\\":100}\"\n                , JSON.toJSONString(\n                        new Model(100)));\n\n        assertEquals(\"{\\\"value\\\":-100}\"\n                , JSON.toJSONString(\n                        new Model(-100)));\n    }\n\n\n\n\n    public static class Model {\n        @JSONField(serialzeFeatures = BrowserCompatible)\n        public BigDecimal value;\n\n        public Model() {\n\n        }\n\n        public Model(long value) {\n            this.value = BigDecimal.valueOf(value);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/basicType/BigDecimal_type.java",
    "content": "package com.alibaba.json.bvt.basicType;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport junit.framework.TestCase;\n\nimport java.math.BigDecimal;\nimport java.math.BigInteger;\n\nimport static com.alibaba.fastjson.serializer.SerializerFeature.BrowserCompatible;\n\npublic class BigDecimal_type extends TestCase {\n    public void test_for_issue() throws Exception {\n        assertEquals(\"{\\\"value\\\":\\\"9007199254741992\\\"}\"\n                , JSON.toJSONString(\n                        new Model(9007199254741992L)));\n\n        assertEquals(\"{\\\"value\\\":\\\"-9007199254741992\\\"}\"\n                , JSON.toJSONString(\n                        new Model(-9007199254741992L)));\n\n        assertEquals(\"{\\\"value\\\":9007199254740990}\"\n                , JSON.toJSONString(\n                        new Model(9007199254740990L)));\n\n        assertEquals(\"{\\\"value\\\":-9007199254740990}\"\n                , JSON.toJSONString(\n                        new Model(-9007199254740990L)));\n\n        assertEquals(\"{\\\"value\\\":100}\"\n                , JSON.toJSONString(\n                        new Model(100)));\n\n        assertEquals(\"{\\\"value\\\":-100}\"\n                , JSON.toJSONString(\n                        new Model(-100)));\n    }\n\n\n\n    @JSONType(serialzeFeatures = BrowserCompatible)\n    public static class Model {\n        public BigDecimal value;\n\n        public Model() {\n\n        }\n\n        public Model(long value) {\n            this.value = BigDecimal.valueOf(value);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/basicType/BigInteger_BrowserCompatible.java",
    "content": "package com.alibaba.json.bvt.basicType;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.math.BigInteger;\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\npublic class BigInteger_BrowserCompatible extends TestCase {\n    public void test_for_issue() throws Exception {\n        Map<String, Object> map = new LinkedHashMap<String, Object>();\n        map.put(\"id1\", 9223370018640066466L);\n        map.put(\"id2\", new BigInteger(\"9223370018640066466\"));\n        assertEquals(\"{\\\"id1\\\":\\\"9223370018640066466\\\",\\\"id2\\\":\\\"9223370018640066466\\\"}\",\n                JSON.toJSONString(map, SerializerFeature.BrowserCompatible)\n        );\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/basicType/DoubleNullTest.java",
    "content": "package com.alibaba.json.bvt.basicType;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\nimport java.io.StringReader;\n\n/**\n * Created by wenshao on 10/08/2017.\n */\npublic class DoubleNullTest extends TestCase {\n    public void test_null() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"v1\\\":null,\\\"v2\\\":null}\", Model.class);\n        assertNotNull(model);\n        assertNull(model.v1);\n        assertNull(model.v2);\n    }\n\n    public void test_null_quote() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"v1\\\":\\\"null\\\",\\\"v2\\\":\\\"null\\\"}\", Model.class);\n        assertNotNull(model);\n        assertNull(model.v1);\n        assertNull(model.v2);\n    }\n\n    public void test_null_1() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"v1\\\":null ,\\\"v2\\\":null }\", Model.class);\n        assertNotNull(model);\n        assertNull(model.v1);\n        assertNull(model.v2);\n    }\n\n    public void test_null_1_quote() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"v1\\\":\\\"null\\\" ,\\\"v2\\\":\\\"null\\\" }\", Model.class);\n        assertNotNull(model);\n        assertNull(model.v1);\n        assertNull(model.v2);\n    }\n\n    public void test_null_array() throws Exception {\n        Model model = JSON.parseObject(\"[\\\"null\\\" ,\\\"null\\\"]\", Model.class, Feature.SupportArrayToBean);\n        assertNotNull(model);\n        assertNull(model.v1);\n        assertNull(model.v2);\n    }\n\n    public void test_null_array_reader() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"[\\\"null\\\" ,\\\"null\\\"]\"), Feature.SupportArrayToBean);\n        Model model = reader.readObject(Model.class);\n        assertNotNull(model);\n        assertNull(model.v1);\n        assertNull(model.v2);\n    }\n\n    public static class Model {\n        public Double v1;\n        public Double v2;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/basicType/DoubleNullTest_primitive.java",
    "content": "package com.alibaba.json.bvt.basicType;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 10/08/2017.\n */\npublic class DoubleNullTest_primitive extends TestCase {\n    public void test_null() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"v1\\\":null,\\\"v2\\\":null}\", Model.class);\n        assertNotNull(model);\n        assertEquals(0D, model.v1);\n        assertEquals(0D,model.v2);\n    }\n\n    public void test_null_1() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"v1\\\":null ,\\\"v2\\\":null }\", Model.class);\n        assertNotNull(model);\n        assertEquals(0D,model.v1);\n        assertEquals(0D,model.v2);\n    }\n\n    public void test_null_2() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"v1\\\":\\\"null\\\",\\\"v2\\\":\\\"null\\\" }\", Model.class);\n        assertNotNull(model);\n        assertEquals(0D,model.v1);\n        assertEquals(0D,model.v2);\n    }\n\n    public static class Model {\n        public double v1;\n        public double v2;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/basicType/DoubleTest.java",
    "content": "package com.alibaba.json.bvt.basicType;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class DoubleTest extends TestCase {\n    public void test_obj() throws Exception {\n        String json = \"{\\\"v1\\\":-0.012671709,\\\"v2\\\":0.22676692048907365,\\\"v3\\\":0.13231707,\\\"v4\\\":0.80090785,\\\"v5\\\":0.6192943}\";\n        String json2 = \"{\\\"v1\\\":\\\"-0.012671709\\\",\\\"v2\\\":\\\"0.22676692048907365\\\",\\\"v3\\\":\\\"0.13231707\\\",\\\"v4\\\":\\\"0.80090785\\\",\\\"v5\\\":\\\"0.6192943\\\"}\";\n\n        Model m1 = JSON.parseObject(json, Model.class);\n        Model m2 = JSON.parseObject(json2, Model.class);\n\n        assertNotNull(m1);\n        assertNotNull(m2);\n\n        assertEquals(-0.012671709D, m1.v1);\n        assertEquals(0.22676692048907365D, m1.v2);\n        assertEquals(0.13231707D, m1.v3);\n        assertEquals(0.80090785D, m1.v4);\n        assertEquals(0.6192943D, m1.v5);\n\n        assertEquals(-0.012671709D, m2.v1);\n        assertEquals(0.22676692048907365D, m2.v2);\n        assertEquals(0.13231707D, m2.v3);\n        assertEquals(0.80090785D, m2.v4);\n        assertEquals(0.6192943D, m2.v5);\n    }\n\n    public void test_array_mapping() throws Exception {\n        String json = \"[-0.012671709,0.22676692048907365,0.13231707,0.80090785,0.6192943]\";\n        String json2 = \"[\\\"-0.012671709\\\",\\\"0.22676692048907365\\\",\\\"0.13231707\\\",\\\"0.80090785\\\",\\\"0.6192943\\\"]\";\n\n        Model m1 = JSON.parseObject(json, Model.class, Feature.SupportArrayToBean);\n        Model m2 = JSON.parseObject(json2, Model.class, Feature.SupportArrayToBean);\n\n        assertNotNull(m1);\n        assertNotNull(m2);\n\n        assertEquals(-0.012671709D, m1.v1);\n        assertEquals(0.22676692048907365D, m1.v2);\n        assertEquals(0.13231707D, m1.v3);\n        assertEquals(0.80090785D, m1.v4);\n        assertEquals(0.6192943D, m1.v5);\n\n        assertEquals(-0.012671709D, m2.v1);\n        assertEquals(0.22676692048907365D, m2.v2);\n        assertEquals(0.13231707D, m2.v3);\n        assertEquals(0.80090785D, m2.v4);\n        assertEquals(0.6192943D, m2.v5);\n    }\n\n    public static class Model {\n        public double v1;\n        public double v2;\n        public double v3;\n        public double v4;\n        public double v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/basicType/DoubleTest2_obj.java",
    "content": "package com.alibaba.json.bvt.basicType;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class DoubleTest2_obj extends TestCase {\n    public void test_obj() throws Exception {\n        String json = \"{\\\"v1\\\":-0.012671709,\\\"v2\\\":0.22676692048907365,\\\"v3\\\":0.13231707,\\\"v4\\\":0.80090785,\\\"v5\\\":0.6192943}\";\n        String json2 = \"{\\\"v1\\\":\\\"-0.012671709\\\",\\\"v2\\\":\\\"0.22676692048907365\\\",\\\"v3\\\":\\\"0.13231707\\\",\\\"v4\\\":\\\"0.80090785\\\",\\\"v5\\\":\\\"0.6192943\\\"}\";\n\n        Model m1 = JSON.parseObject(json, Model.class);\n        Model m2 = JSON.parseObject(json2, Model.class);\n\n        assertNotNull(m1);\n        assertNotNull(m2);\n\n        assertEquals(-0.012671709D, m1.v1);\n        assertEquals(0.22676692048907365D, m1.v2);\n        assertEquals(0.13231707D, m1.v3);\n        assertEquals(0.80090785D, m1.v4);\n        assertEquals(0.6192943D, m1.v5);\n\n        assertEquals(-0.012671709D, m2.v1);\n        assertEquals(0.22676692048907365D, m2.v2);\n        assertEquals(0.13231707D, m2.v3);\n        assertEquals(0.80090785D, m2.v4);\n        assertEquals(0.6192943D, m2.v5);\n    }\n\n    public void test_array_mapping() throws Exception {\n        String json = \"[-0.012671709,0.22676692048907365,0.13231707,0.80090785,0.6192943]\";\n        String json2 = \"[\\\"-0.012671709\\\",\\\"0.22676692048907365\\\",\\\"0.13231707\\\",\\\"0.80090785\\\",\\\"0.6192943\\\"]\";\n\n        Model m1 = JSON.parseObject(json, Model.class, Feature.SupportArrayToBean);\n        Model m2 = JSON.parseObject(json2, Model.class, Feature.SupportArrayToBean);\n\n        assertNotNull(m1);\n        assertNotNull(m2);\n\n        assertEquals(-0.012671709D, m1.v1);\n        assertEquals(0.22676692048907365D, m1.v2);\n        assertEquals(0.13231707D, m1.v3);\n        assertEquals(0.80090785D, m1.v4);\n        assertEquals(0.6192943D, m1.v5);\n\n        assertEquals(-0.012671709D, m2.v1);\n        assertEquals(0.22676692048907365D, m2.v2);\n        assertEquals(0.13231707D, m2.v3);\n        assertEquals(0.80090785D, m2.v4);\n        assertEquals(0.6192943D, m2.v5);\n    }\n\n    public static class Model {\n        public Double v1;\n        public Double v2;\n        public Double v3;\n        public Double v4;\n        public Double v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/basicType/DoubleTest3_random.java",
    "content": "package com.alibaba.json.bvt.basicType;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.Random;\n\npublic class DoubleTest3_random extends TestCase {\n    public void test_ran() throws Exception {\n        Random rand = new Random();\n\n        for (int i = 0; i < 1000 * 1000 * 1; ++i) {\n            double val = rand.nextDouble();\n\n            String str = JSON.toJSONString(new Model(val));\n            Model m = JSON.parseObject(str, Model.class);\n\n            assertEquals(val, m.value);\n        }\n    }\n\n    public void test_ran_2() throws Exception {\n        Random rand = new Random();\n\n        for (int i = 0; i < 1000 * 1000 * 1; ++i) {\n            double val = rand.nextDouble();\n\n            String str = JSON.toJSONString(new Model(val), SerializerFeature.BeanToArray);\n            Model m = JSON.parseObject(str, Model.class, Feature.SupportArrayToBean);\n\n            assertEquals(val, m.value);\n        }\n    }\n\n    public void test_ran_3() throws Exception {\n        Random rand = new Random();\n\n        for (int i = 0; i < 1000 * 1000 * 1; ++i) {\n            double val = rand.nextDouble();\n\n            String str = JSON.toJSONString(Collections.singletonMap(\"val\", val));\n            double val2 = JSON.parseObject(str).getDoubleValue(\"val\");\n\n            assertEquals(val, val2);\n        }\n    }\n\n    public void test_ran_4() throws Exception {\n        Random rand = new Random();\n\n        for (int i = 0; i < 1000 * 1000 * 1; ++i) {\n            double val = rand.nextDouble();\n\n            HashMap map = new HashMap();\n            map.put(\"val\", val);\n            String str = JSON.toJSONString(map);\n            double val2 = JSON.parseObject(str).getDoubleValue(\"val\");\n\n            assertEquals(val, val2);\n        }\n    }\n\n    public static class Model {\n        public double value;\n\n        public Model() {\n\n        }\n\n        public Model(double value) {\n            this.value = value;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/basicType/FloatNullTest.java",
    "content": "package com.alibaba.json.bvt.basicType;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\nimport java.io.StringReader;\n\n/**\n * Created by wenshao on 10/08/2017.\n */\npublic class FloatNullTest extends TestCase {\n    public void test_null() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"v1\\\":null,\\\"v2\\\":null}\", Model.class);\n        assertNotNull(model);\n        assertNull(model.v1);\n        assertNull(model.v2);\n    }\n\n    public void test_null_quote() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"v1\\\":\\\"null\\\",\\\"v2\\\":\\\"null\\\"}\", Model.class);\n        assertNotNull(model);\n        assertNull(model.v1);\n        assertNull(model.v2);\n    }\n\n    public void test_null_1() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"v1\\\":null ,\\\"v2\\\":null }\", Model.class);\n        assertNotNull(model);\n        assertNull(model.v1);\n        assertNull(model.v2);\n    }\n\n    public void test_null_1_quote() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"v1\\\":\\\"null\\\" ,\\\"v2\\\":\\\"null\\\" }\", Model.class);\n        assertNotNull(model);\n        assertNull(model.v1);\n        assertNull(model.v2);\n    }\n\n    public void test_null_array() throws Exception {\n        Model model = JSON.parseObject(\"[\\\"null\\\" ,\\\"null\\\"]\", Model.class, Feature.SupportArrayToBean);\n        assertNotNull(model);\n        assertNull(model.v1);\n        assertNull(model.v2);\n    }\n\n    public void test_null_array_reader() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"[\\\"null\\\" ,\\\"null\\\"]\"), Feature.SupportArrayToBean);\n        Model model = reader.readObject(Model.class);\n        assertNotNull(model);\n        assertNull(model.v1);\n        assertNull(model.v2);\n    }\n\n    public static class Model {\n        public Float v1;\n        public Float v2;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/basicType/FloatNullTest_primitive.java",
    "content": "package com.alibaba.json.bvt.basicType;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 10/08/2017.\n */\npublic class FloatNullTest_primitive extends TestCase {\n    public void test_null() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"v1\\\":null,\\\"v2\\\":null}\", Model.class);\n        assertNotNull(model);\n        assertEquals(0F, model.v1);\n        assertEquals(0F,model.v2);\n    }\n\n    public void test_null_1() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"v1\\\":null ,\\\"v2\\\":null }\", Model.class);\n        assertNotNull(model);\n        assertEquals(0F,model.v1);\n        assertEquals(0F,model.v2);\n    }\n\n    public void test_null_2() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"v1\\\":\\\"null\\\",\\\"v2\\\":\\\"null\\\" }\", Model.class);\n        assertNotNull(model);\n        assertEquals(0F,model.v1);\n        assertEquals(0F,model.v2);\n    }\n\n    public static class Model {\n        public float v1;\n        public float v2;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/basicType/FloatTest.java",
    "content": "package com.alibaba.json.bvt.basicType;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class FloatTest extends TestCase {\n    public void test_0() throws Exception {\n        String json = \"{\\\"v1\\\":-0.012671709,\\\"v2\\\":0.6042485,\\\"v3\\\":0.13231707,\\\"v4\\\":0.80090785,\\\"v5\\\":0.6192943}\";\n        String json2 = \"{\\\"v1\\\":\\\"-0.012671709\\\",\\\"v2\\\":\\\"0.6042485\\\",\\\"v3\\\":\\\"0.13231707\\\",\\\"v4\\\":\\\"0.80090785\\\",\\\"v5\\\":\\\"0.6192943\\\"}\";\n\n        Model m1 = JSON.parseObject(json, Model.class);\n        Model m2 = JSON.parseObject(json2, Model.class);\n\n        assertNotNull(m1);\n        assertNotNull(m2);\n\n        assertEquals(-0.012671709f, m1.v1);\n        assertEquals(0.6042485f, m1.v2);\n        assertEquals(0.13231707f, m1.v3);\n        assertEquals(0.80090785f, m1.v4);\n        assertEquals(0.6192943f, m1.v5);\n\n        assertEquals(-0.012671709f, m2.v1);\n        assertEquals(0.6042485f, m2.v2);\n        assertEquals(0.13231707f, m2.v3);\n        assertEquals(0.80090785f, m2.v4);\n        assertEquals(0.6192943f, m2.v5);\n    }\n\n    public void test_array_mapping() throws Exception {\n        String json = \"[-0.012671709,0.6042485,0.13231707,0.80090785,0.6192943]\";\n        String json2 = \"[\\\"-0.012671709\\\",\\\"0.6042485\\\",\\\"0.13231707\\\",\\\"0.80090785\\\",\\\"0.6192943\\\"]\";\n\n        Model m1 = JSON.parseObject(json, Model.class, Feature.SupportArrayToBean);\n        Model m2 = JSON.parseObject(json2, Model.class, Feature.SupportArrayToBean);\n\n        assertNotNull(m1);\n        assertNotNull(m2);\n\n        assertEquals(-0.012671709f, m1.v1);\n        assertEquals(0.6042485f, m1.v2);\n        assertEquals(0.13231707f, m1.v3);\n        assertEquals(0.80090785f, m1.v4);\n        assertEquals(0.6192943f, m1.v5);\n\n        assertEquals(-0.012671709f, m2.v1);\n        assertEquals(0.6042485f, m2.v2);\n        assertEquals(0.13231707f, m2.v3);\n        assertEquals(0.80090785f, m2.v4);\n        assertEquals(0.6192943f, m2.v5);\n    }\n\n    public static class Model {\n        public float v1;\n        public float v2;\n        public float v3;\n        public float v4;\n        public float v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/basicType/FloatTest2_obj.java",
    "content": "package com.alibaba.json.bvt.basicType;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class FloatTest2_obj extends TestCase {\n    public void test_0() throws Exception {\n        String json = \"{\\\"v1\\\":-0.012671709,\\\"v2\\\":0.6042485,\\\"v3\\\":0.13231707,\\\"v4\\\":0.80090785,\\\"v5\\\":0.6192943}\";\n        String json2 = \"{\\\"v1\\\":\\\"-0.012671709\\\",\\\"v2\\\":\\\"0.6042485\\\",\\\"v3\\\":\\\"0.13231707\\\",\\\"v4\\\":\\\"0.80090785\\\",\\\"v5\\\":\\\"0.6192943\\\"}\";\n\n        Model m1 = JSON.parseObject(json, Model.class);\n        Model m2 = JSON.parseObject(json2, Model.class);\n\n        assertNotNull(m1);\n        assertNotNull(m2);\n\n        assertEquals(-0.012671709f, m1.v1);\n        assertEquals(0.6042485f, m1.v2);\n        assertEquals(0.13231707f, m1.v3);\n        assertEquals(0.80090785f, m1.v4);\n        assertEquals(0.6192943f, m1.v5);\n\n        assertEquals(-0.012671709f, m2.v1);\n        assertEquals(0.6042485f, m2.v2);\n        assertEquals(0.13231707f, m2.v3);\n        assertEquals(0.80090785f, m2.v4);\n        assertEquals(0.6192943f, m2.v5);\n    }\n\n    public void test_array_mapping() throws Exception {\n        String json = \"[-0.012671709,0.6042485,0.13231707,0.80090785,0.6192943]\";\n        String json2 = \"[\\\"-0.012671709\\\",\\\"0.6042485\\\",\\\"0.13231707\\\",\\\"0.80090785\\\",\\\"0.6192943\\\"]\";\n\n        Model m1 = JSON.parseObject(json, Model.class, Feature.SupportArrayToBean);\n        Model m2 = JSON.parseObject(json2, Model.class, Feature.SupportArrayToBean);\n\n        assertNotNull(m1);\n        assertNotNull(m2);\n\n        assertEquals(-0.012671709f, m1.v1);\n        assertEquals(0.6042485f, m1.v2);\n        assertEquals(0.13231707f, m1.v3);\n        assertEquals(0.80090785f, m1.v4);\n        assertEquals(0.6192943f, m1.v5);\n\n        assertEquals(-0.012671709f, m2.v1);\n        assertEquals(0.6042485f, m2.v2);\n        assertEquals(0.13231707f, m2.v3);\n        assertEquals(0.80090785f, m2.v4);\n        assertEquals(0.6192943f, m2.v5);\n    }\n\n    public static class Model {\n        public Float v1;\n        public Float v2;\n        public Float v3;\n        public Float v4;\n        public Float v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/basicType/FloatTest3_array_random.java",
    "content": "package com.alibaba.json.bvt.basicType;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.Random;\n\npublic class FloatTest3_array_random extends TestCase {\n    public void test_ran() throws Exception {\n        Random rand = new Random();\n\n        for (int i = 0; i < 1000 * 1000 * 1; ++i) {\n            float val = rand.nextFloat();\n\n            String str = JSON.toJSONString(new Model(new float[]{val}));\n            Model m = JSON.parseObject(str, Model.class);\n\n            assertEquals(val, m.value[0]);\n        }\n    }\n\n    public void test_ran_2() throws Exception {\n        Random rand = new Random();\n\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            float val = rand.nextFloat();\n\n            String str = JSON.toJSONString(new Model(new float[]{val}), SerializerFeature.BeanToArray);\n            Model m = JSON.parseObject(str, Model.class, Feature.SupportArrayToBean);\n\n            assertEquals(val, m.value[0]);\n        }\n    }\n\n    public static class Model {\n        public float[] value;\n\n        public Model() {\n\n        }\n\n        public Model(float[] value) {\n            this.value = value;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/basicType/FloatTest3_random.java",
    "content": "package com.alibaba.json.bvt.basicType;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.Random;\n\npublic class FloatTest3_random extends TestCase {\n    public void test_ran() throws Exception {\n        Random rand = new Random();\n\n        for (int i = 0; i < 1000 * 1000 * 1; ++i) {\n            float val = rand.nextFloat();\n\n            String str = JSON.toJSONString(new Model(val));\n            Model m = JSON.parseObject(str, Model.class);\n\n            assertEquals(val, m.value);\n        }\n    }\n\n    public void test_ran_2() throws Exception {\n        Random rand = new Random();\n\n        for (int i = 0; i < 1000 * 1000 * 1; ++i) {\n            float val = rand.nextFloat();\n\n            String str = JSON.toJSONString(new Model(val), SerializerFeature.BeanToArray);\n            Model m = JSON.parseObject(str, Model.class, Feature.SupportArrayToBean);\n\n            assertEquals(val, m.value);\n        }\n    }\n\n    public void test_ran_3() throws Exception {\n        Random rand = new Random();\n\n        for (int i = 0; i < 1000 * 1000 * 1; ++i) {\n            float val = rand.nextFloat();\n\n            String str = JSON.toJSONString(Collections.singletonMap(\"val\", val));\n            float val2 = JSON.parseObject(str).getFloatValue(\"val\");\n\n            assertEquals(val, val2);\n        }\n    }\n\n    public void test_ran_4() throws Exception {\n        Random rand = new Random();\n\n        for (int i = 0; i < 1000 * 1000 * 1; ++i) {\n            float val = rand.nextFloat();\n\n            HashMap map = new HashMap();\n            map.put(\"val\", val);\n            String str = JSON.toJSONString(map);\n            float val2 = JSON.parseObject(str).getFloatValue(\"val\");\n\n            assertEquals(val, val2);\n        }\n    }\n\n    public static class Model {\n        public float value;\n\n        public Model() {\n\n        }\n\n        public Model(float value) {\n            this.value = value;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/basicType/IntNullTest_primitive.java",
    "content": "package com.alibaba.json.bvt.basicType;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 10/08/2017.\n */\npublic class IntNullTest_primitive extends TestCase {\n    public void test_null() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"v1\\\":null,\\\"v2\\\":null}\", Model.class);\n        assertNotNull(model);\n        assertEquals(0, model.v1);\n        assertEquals(0,model.v2);\n    }\n\n    public void test_null_1() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"v1\\\":null ,\\\"v2\\\":null }\", Model.class);\n        assertNotNull(model);\n        assertEquals(0,model.v1);\n        assertEquals(0,model.v2);\n    }\n\n    public void test_null_2() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"v1\\\":\\\"null\\\",\\\"v2\\\":\\\"null\\\" }\", Model.class);\n        assertNotNull(model);\n        assertEquals(0,model.v1);\n        assertEquals(0,model.v2);\n    }\n\n    public static class Model {\n        public int v1;\n        public int v2;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/basicType/IntTest.java",
    "content": "package com.alibaba.json.bvt.basicType;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class IntTest extends TestCase {\n    public void test_array() throws Exception {\n        int[] values = new int[] {Integer.MIN_VALUE, -1, 0, 1, Integer.MAX_VALUE};\n        String text = JSON.toJSONString(values);\n        long[] values_2 = JSON.parseObject(text, long[].class);\n        assertEquals(values_2.length, values.length);\n        for (int i = 0; i < values.length; ++i) {\n            assertEquals(values[i], values_2[i]);\n        }\n    }\n    \n    public void test_map() throws Exception {\n        int[] values = new int[] {Integer.MIN_VALUE, -1, 0, 1, Integer.MAX_VALUE};\n        Map<String, Object> map = new HashMap<String, Object>();\n        for (int i = 0; i < values.length; ++i) {\n            map.put(Integer.toString(i), values[i]);\n        }\n        \n        String text = JSON.toJSONString(map);\n        JSONObject obj = JSON.parseObject(text);\n        for (int i = 0; i < values.length; ++i) {\n            assertEquals(values[i], ((Number) obj.get(Integer.toString(i))).intValue());\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/basicType/IntegerNullTest.java",
    "content": "package com.alibaba.json.bvt.basicType;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\nimport java.io.StringReader;\n\n/**\n * Created by wenshao on 10/08/2017.\n */\npublic class IntegerNullTest extends TestCase {\n    public void test_null() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"v1\\\":null,\\\"v2\\\":null}\", Model.class);\n        assertNotNull(model);\n        assertNull(model.v1);\n        assertNull(model.v2);\n    }\n\n    public void test_null_quote() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"v1\\\":\\\"null\\\",\\\"v2\\\":\\\"null\\\"}\", Model.class);\n        assertNotNull(model);\n        assertNull(model.v1);\n        assertNull(model.v2);\n    }\n\n    public void test_null_1() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"v1\\\":null ,\\\"v2\\\":null }\", Model.class);\n        assertNotNull(model);\n        assertNull(model.v1);\n        assertNull(model.v2);\n    }\n\n    public void test_null_1_quote() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"v1\\\":\\\"null\\\" ,\\\"v2\\\":\\\"null\\\" }\", Model.class);\n        assertNotNull(model);\n        assertNull(model.v1);\n        assertNull(model.v2);\n    }\n\n    public void test_null_array() throws Exception {\n        Model model = JSON.parseObject(\"[\\\"null\\\" ,\\\"null\\\"]\", Model.class, Feature.SupportArrayToBean);\n        assertNotNull(model);\n        assertNull(model.v1);\n        assertNull(model.v2);\n    }\n\n    public void test_null_array_reader() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"[\\\"null\\\" ,\\\"null\\\"]\"), Feature.SupportArrayToBean);\n        Model model = reader.readObject(Model.class);\n        assertNotNull(model);\n        assertNull(model.v1);\n        assertNull(model.v2);\n    }\n\n    public void test_null_array_reader_1() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"[null ,null]\"), Feature.SupportArrayToBean);\n        Model model = reader.readObject(Model.class);\n        assertNotNull(model);\n        assertNull(model.v1);\n        assertNull(model.v2);\n    }\n\n    public static class Model {\n        public Integer v1;\n        public Integer v2;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/basicType/LongNullTest.java",
    "content": "package com.alibaba.json.bvt.basicType;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\nimport java.io.StringReader;\n\n/**\n * Created by wenshao on 10/08/2017.\n */\npublic class LongNullTest extends TestCase {\n    public void test_null() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"v1\\\":null,\\\"v2\\\":null}\", Model.class);\n        assertNotNull(model);\n        assertNull(model.v1);\n        assertNull(model.v2);\n    }\n\n    public void test_null_quote() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"v1\\\":\\\"null\\\",\\\"v2\\\":\\\"null\\\"}\", Model.class);\n        assertNotNull(model);\n        assertNull(model.v1);\n        assertNull(model.v2);\n    }\n\n    public void test_null_1() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"v1\\\":null ,\\\"v2\\\":null }\", Model.class);\n        assertNotNull(model);\n        assertNull(model.v1);\n        assertNull(model.v2);\n    }\n\n    public void test_null_1_quote() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"v1\\\":\\\"null\\\" ,\\\"v2\\\":\\\"null\\\" }\", Model.class);\n        assertNotNull(model);\n        assertNull(model.v1);\n        assertNull(model.v2);\n    }\n\n    public void test_null_array() throws Exception {\n        Model model = JSON.parseObject(\"[\\\"null\\\" ,\\\"null\\\"]\", Model.class, Feature.SupportArrayToBean);\n        assertNotNull(model);\n        assertNull(model.v1);\n        assertNull(model.v2);\n    }\n\n    public void test_null_array_reader() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"[\\\"null\\\" ,\\\"null\\\"]\"), Feature.SupportArrayToBean);\n        Model model = reader.readObject(Model.class);\n        assertNotNull(model);\n        assertNull(model.v1);\n        assertNull(model.v2);\n    }\n\n    public void test_null_array_reader_1() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"[null ,null]\"), Feature.SupportArrayToBean);\n        Model model = reader.readObject(Model.class);\n        assertNotNull(model);\n        assertNull(model.v1);\n        assertNull(model.v2);\n    }\n\n    public static class Model {\n        public Long v1;\n        public Long v2;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/basicType/LongNullTest_primitive.java",
    "content": "package com.alibaba.json.bvt.basicType;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 10/08/2017.\n */\npublic class LongNullTest_primitive extends TestCase {\n    public void test_null() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"v1\\\":null,\\\"v2\\\":null}\", Model.class);\n        assertNotNull(model);\n        assertEquals(0, model.v1);\n        assertEquals(0,model.v2);\n    }\n\n    public void test_null_1() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"v1\\\":null ,\\\"v2\\\":null }\", Model.class);\n        assertNotNull(model);\n        assertEquals(0,model.v1);\n        assertEquals(0,model.v2);\n    }\n\n    public void test_null_2() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"v1\\\":\\\"null\\\",\\\"v2\\\":\\\"null\\\" }\", Model.class);\n        assertNotNull(model);\n        assertEquals(0,model.v1);\n        assertEquals(0,model.v2);\n    }\n\n    public static class Model {\n        public long v1;\n        public long v2;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/basicType/LongTest.java",
    "content": "package com.alibaba.json.bvt.basicType;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class LongTest extends TestCase {\n    public void test_array() throws Exception {\n        long[] values = new long[] {Long.MIN_VALUE, -1, 0, 1, Long.MAX_VALUE};\n        String text = JSON.toJSONString(values);\n        long[] values_2 = JSON.parseObject(text, long[].class);\n        Assert.assertEquals(values_2.length, values.length);\n        for (int i = 0; i < values.length; ++i) {\n            Assert.assertEquals(values[i], values_2[i]);\n        }\n    }\n    \n    public void test_map() throws Exception {\n        long[] values = new long[] {Long.MIN_VALUE, -1, 0, 1, Long.MAX_VALUE};\n        Map<String, Object> map = new HashMap<String, Object>();\n        for (int i = 0; i < values.length; ++i) {\n            map.put(Long.toString(i), values[i]);\n        }\n        \n        String text = JSON.toJSONString(map);\n        JSONObject obj = JSON.parseObject(text);\n        for (int i = 0; i < values.length; ++i) {\n            Assert.assertEquals(values[i], ((Number) obj.get(Long.toString(i))).longValue());\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/basicType/LongTest2.java",
    "content": "package com.alibaba.json.bvt.basicType;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\nimport java.io.StringReader;\n\n/**\n * Created by wenshao on 11/08/2017.\n */\npublic class LongTest2 extends TestCase {\n    public void test_0() throws Exception {\n        String json = \"{\\\"v1\\\":-1883391953414482124,\\\"v2\\\":-3019416596934963650,\\\"v3\\\":6497525620823745793,\\\"v4\\\":2136224289077142499,\\\"v5\\\":-2090575024006307745}\";\n        String json2 = \"{\\\"v1\\\":\\\"-1883391953414482124\\\",\\\"v2\\\":\\\"-3019416596934963650\\\",\\\"v3\\\":\\\"6497525620823745793\\\",\\\"v4\\\":\\\"2136224289077142499\\\",\\\"v5\\\":\\\"-2090575024006307745\\\"}\";\n\n        Model m1 = JSON.parseObject(json, Model.class);\n        Model m2 = JSON.parseObject(json2, Model.class);\n\n        assertNotNull(m1);\n        assertNotNull(m2);\n\n        assertEquals(-1883391953414482124L, m1.v1);\n        assertEquals(-3019416596934963650L, m1.v2);\n        assertEquals(6497525620823745793L, m1.v3);\n        assertEquals(2136224289077142499L, m1.v4);\n        assertEquals(-2090575024006307745L, m1.v5);\n\n        assertEquals(-1883391953414482124L, m2.v1);\n        assertEquals(-3019416596934963650L, m2.v2);\n        assertEquals(6497525620823745793L, m2.v3);\n        assertEquals(2136224289077142499L, m2.v4);\n        assertEquals(-2090575024006307745L, m2.v5);\n    }\n\n    public void test_1() throws Exception {\n        String json = \"{\\\"v1\\\":-1883391953414482124,\\\"v2\\\":-3019416596934963650,\\\"v3\\\":6497525620823745793,\\\"v4\\\":2136224289077142499,\\\"v5\\\":-2090575024006307745}\";\n        String json2 = \"{\\\"v1\\\":\\\"-1883391953414482124\\\",\\\"v2\\\":\\\"-3019416596934963650\\\",\\\"v3\\\":\\\"6497525620823745793\\\",\\\"v4\\\":\\\"2136224289077142499\\\",\\\"v5\\\":\\\"-2090575024006307745\\\"}\";\n\n        Model m1 = new JSONReader(new StringReader(json)).readObject(Model.class);\n        Model m2 = new JSONReader(new StringReader(json2)).readObject(Model.class);\n\n        assertNotNull(m1);\n        assertNotNull(m2);\n\n        assertEquals(-1883391953414482124L, m1.v1);\n        assertEquals(-3019416596934963650L, m1.v2);\n        assertEquals(6497525620823745793L, m1.v3);\n        assertEquals(2136224289077142499L, m1.v4);\n        assertEquals(-2090575024006307745L, m1.v5);\n\n        assertEquals(-1883391953414482124L, m2.v1);\n        assertEquals(-3019416596934963650L, m2.v2);\n        assertEquals(6497525620823745793L, m2.v3);\n        assertEquals(2136224289077142499L, m2.v4);\n        assertEquals(-2090575024006307745L, m2.v5);\n    }\n\n    public void test_2() throws Exception {\n        String json = \"[-1883391953414482124,-3019416596934963650,6497525620823745793,2136224289077142499,-2090575024006307745]\";\n        String json2 = \"[\\\"-1883391953414482124\\\",\\\"-3019416596934963650\\\",\\\"6497525620823745793\\\",\\\"2136224289077142499\\\",\\\"-2090575024006307745\\\"]\";\n\n        Model m1 = new JSONReader(new StringReader(json), Feature.SupportArrayToBean).readObject(Model.class);\n        Model m2 = new JSONReader(new StringReader(json2), Feature.SupportArrayToBean).readObject(Model.class);\n\n        assertNotNull(m1);\n        assertNotNull(m2);\n\n        assertEquals(-1883391953414482124L, m1.v1);\n        assertEquals(-3019416596934963650L, m1.v2);\n        assertEquals(6497525620823745793L, m1.v3);\n        assertEquals(2136224289077142499L, m1.v4);\n        assertEquals(-2090575024006307745L, m1.v5);\n\n        assertEquals(-1883391953414482124L, m2.v1);\n        assertEquals(-3019416596934963650L, m2.v2);\n        assertEquals(6497525620823745793L, m2.v3);\n        assertEquals(2136224289077142499L, m2.v4);\n        assertEquals(-2090575024006307745L, m2.v5);\n    }\n\n    public static class Model {\n        public long v1;\n        public long v2;\n        public long v3;\n        public long v4;\n        public long v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/basicType/LongTest2_obj.java",
    "content": "package com.alibaba.json.bvt.basicType;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\nimport java.io.StringReader;\n\n/**\n * Created by wenshao on 11/08/2017.\n */\npublic class LongTest2_obj extends TestCase {\n    public void test_0() throws Exception {\n        String json = \"{\\\"v1\\\":-1883391953414482124,\\\"v2\\\":-3019416596934963650,\\\"v3\\\":6497525620823745793,\\\"v4\\\":2136224289077142499,\\\"v5\\\":-2090575024006307745}\";\n        String json2 = \"{\\\"v1\\\":\\\"-1883391953414482124\\\",\\\"v2\\\":\\\"-3019416596934963650\\\",\\\"v3\\\":\\\"6497525620823745793\\\",\\\"v4\\\":\\\"2136224289077142499\\\",\\\"v5\\\":\\\"-2090575024006307745\\\"}\";\n\n        Model m1 = JSON.parseObject(json, Model.class);\n        Model m2 = JSON.parseObject(json2, Model.class);\n\n        assertNotNull(m1);\n        assertNotNull(m2);\n\n        assertEquals(-1883391953414482124L, m1.v1.longValue());\n        assertEquals(-3019416596934963650L, m1.v2.longValue());\n        assertEquals(6497525620823745793L, m1.v3.longValue());\n        assertEquals(2136224289077142499L, m1.v4.longValue());\n        assertEquals(-2090575024006307745L, m1.v5.longValue());\n\n        assertEquals(-1883391953414482124L, m2.v1.longValue());\n        assertEquals(-3019416596934963650L, m2.v2.longValue());\n        assertEquals(6497525620823745793L, m2.v3.longValue());\n        assertEquals(2136224289077142499L, m2.v4.longValue());\n        assertEquals(-2090575024006307745L, m2.v5.longValue());\n    }\n\n    public void test_1() throws Exception {\n        String json = \"{\\\"v1\\\":-1883391953414482124,\\\"v2\\\":-3019416596934963650,\\\"v3\\\":6497525620823745793,\\\"v4\\\":2136224289077142499,\\\"v5\\\":-2090575024006307745}\";\n        String json2 = \"{\\\"v1\\\":\\\"-1883391953414482124\\\",\\\"v2\\\":\\\"-3019416596934963650\\\",\\\"v3\\\":\\\"6497525620823745793\\\",\\\"v4\\\":\\\"2136224289077142499\\\",\\\"v5\\\":\\\"-2090575024006307745\\\"}\";\n\n        Model m1 = new JSONReader(new StringReader(json)).readObject(Model.class);\n        Model m2 = new JSONReader(new StringReader(json2)).readObject(Model.class);\n\n        assertNotNull(m1);\n        assertNotNull(m2);\n\n        assertEquals(-1883391953414482124L, m1.v1.longValue());\n        assertEquals(-3019416596934963650L, m1.v2.longValue());\n        assertEquals(6497525620823745793L, m1.v3.longValue());\n        assertEquals(2136224289077142499L, m1.v4.longValue());\n        assertEquals(-2090575024006307745L, m1.v5.longValue());\n\n        assertEquals(-1883391953414482124L, m2.v1.longValue());\n        assertEquals(-3019416596934963650L, m2.v2.longValue());\n        assertEquals(6497525620823745793L, m2.v3.longValue());\n        assertEquals(2136224289077142499L, m2.v4.longValue());\n        assertEquals(-2090575024006307745L, m2.v5.longValue());\n    }\n\n    public void test_2() throws Exception {\n        String json = \"[-1883391953414482124,-3019416596934963650,6497525620823745793,2136224289077142499,-2090575024006307745]\";\n        String json2 = \"[\\\"-1883391953414482124\\\",\\\"-3019416596934963650\\\",\\\"6497525620823745793\\\",\\\"2136224289077142499\\\",\\\"-2090575024006307745\\\"]\";\n\n        Model m1 = new JSONReader(new StringReader(json), Feature.SupportArrayToBean).readObject(Model.class);\n        Model m2 = new JSONReader(new StringReader(json2), Feature.SupportArrayToBean).readObject(Model.class);\n\n        assertNotNull(m1);\n        assertNotNull(m2);\n\n        assertEquals(-1883391953414482124L, m1.v1.longValue());\n        assertEquals(-3019416596934963650L, m1.v2.longValue());\n        assertEquals(6497525620823745793L, m1.v3.longValue());\n        assertEquals(2136224289077142499L, m1.v4.longValue());\n        assertEquals(-2090575024006307745L, m1.v5.longValue());\n\n        assertEquals(-1883391953414482124L, m2.v1.longValue());\n        assertEquals(-3019416596934963650L, m2.v2.longValue());\n        assertEquals(6497525620823745793L, m2.v3.longValue());\n        assertEquals(2136224289077142499L, m2.v4.longValue());\n        assertEquals(-2090575024006307745L, m2.v5.longValue());\n    }\n\n    public static class Model {\n        public Long v1;\n        public Long v2;\n        public Long v3;\n        public Long v4;\n        public Long v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/basicType/LongTest_browserCompatible.java",
    "content": "package com.alibaba.json.bvt.basicType;\n\nimport java.io.StringWriter;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Random;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class LongTest_browserCompatible extends TestCase {\n    public void test_array() throws Exception {\n        long[] values = new long[] {Long.MIN_VALUE, -1, 0, 1, Long.MAX_VALUE};\n        String text = JSON.toJSONString(values, SerializerFeature.BrowserCompatible);\n        long[] values_2 = JSON.parseObject(text, long[].class);\n        Assert.assertEquals(values_2.length, values.length);\n        for (int i = 0; i < values.length; ++i) {\n            Assert.assertEquals(values[i], values_2[i]);\n        }\n    }\n    \n    public void test_array_writer() throws Exception {\n        long[] values = new long[] {Long.MIN_VALUE, -1, 0, 1, Long.MAX_VALUE};\n        \n        StringWriter writer = new StringWriter();\n        JSON.writeJSONString(writer, values, SerializerFeature.BrowserCompatible);\n        String text = writer.toString();\n        long[] values_2 = JSON.parseObject(text, long[].class);\n        Assert.assertEquals(values_2.length, values.length);\n        for (int i = 0; i < values.length; ++i) {\n            Assert.assertEquals(values[i], values_2[i]);\n        }\n    }\n    \n    public void test_array_writer_2() throws Exception {\n        Random random = new Random();\n        long[] values = new long[2048];\n        for (int i = 0; i < values.length; ++i) {\n            values[i] = random.nextLong();\n        }\n        \n        StringWriter writer = new StringWriter();\n        JSON.writeJSONString(writer, values, SerializerFeature.BrowserCompatible);\n        String text = writer.toString();\n        long[] values_2 = JSON.parseObject(text, long[].class);\n        Assert.assertEquals(values_2.length, values.length);\n        for (int i = 0; i < values.length; ++i) {\n            Assert.assertEquals(values[i], values_2[i]);\n        }\n    }\n    \n    public void test_map() throws Exception {\n        long[] values = new long[] {Long.MIN_VALUE, -1, 0, 1, Long.MAX_VALUE};\n        Map<String, Object> map = new HashMap<String, Object>();\n        for (int i = 0; i < values.length; ++i) {\n            map.put(Long.toString(i), values[i]);\n        }\n        \n        String text = JSON.toJSONString(map, SerializerFeature.BrowserCompatible);\n        JSONObject obj = JSON.parseObject(text);\n        for (int i = 0; i < values.length; ++i) {\n            Assert.assertEquals(values[i], ((Number) obj.getLong(Long.toString(i))).longValue());\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug1.java",
    "content": "package com.alibaba.json.bvt.bug;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSONObject;\r\nimport com.alibaba.json.bvt.bug.JSONTest.InnerEntry;\r\nimport com.alibaba.json.bvt.bug.JSONTest.OuterEntry;\r\n\r\npublic class Bug1 extends TestCase {\r\n\r\n    public void testToEntry2() {\r\n        InnerEntry inner1 = null;// 出错\r\n        String source1 = JSONObject.toJSONString(inner1);\r\n        System.out.println(source1);\r\n        OuterEntry inner2 = JSONObject.parseObject(source1, OuterEntry.class);// 出错\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug11.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug11 extends TestCase {\n\n    public void test_bug11() throws Exception {\n        String text = \"[{KH:\\\"(2010-2011-2)-13105-13039-1\\\", JC:\\\"1\\\"}] \";\n        JSON.parse(text);\n        System.out.println(text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug13.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\n\npublic class Bug13 extends TestCase {\n    public void test_0() throws Exception {\n        User user = new User(\"name1\", \"11\");  \n        String object = JSON.toJSONString(user);  \n        System.out.println(object);  \n        user = JSON.parseObject(object, User.class);//报错  \n    }\n    \n    public static class User {  \n        public User() {  \n        }  \n      \n        private String name, age;  \n        private List<Object> group = new ArrayList<Object>(2);  \n      \n        public List<Object> getGroup() {  \n            return group;  \n        }  \n      \n        public void setGroup(List<Object> group) {  \n            this.group = group;  \n        }  \n      \n        public String getName() {  \n            return name;  \n        }  \n      \n        public void setName(String name) {  \n            this.name = name;  \n        }  \n      \n        public String getAge() {  \n            return age;  \n        }  \n      \n        public void setAge(String age) {  \n            this.age = age;  \n        }  \n      \n        public User(String name, String age) {  \n            this.name = name;  \n            this.age = age;  \n            group.add(\"1\");  \n            group.add(\"2\");  \n        }  \n    }  \n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug14.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.math.BigInteger;\nimport java.util.ArrayList;\nimport java.util.LinkedHashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug14 extends TestCase {\n\n    public void test_0() throws Exception {\n        double f = -5.5000009;\n        Long i = 4294967295l;\n        System.out.println(BigInteger.valueOf(i));\n        System.out.println(Math.round(f));\n        List<AB> list = new ArrayList<AB>();\n        list.add(new AB(\"2a\", \"3b\"));\n        list.add(new AB(\"4a\", \"6b\"));\n        list.add(new AB(\"6a\", \"7{sdf<>jgh\\n}b\"));\n        list.add(new AB(\"8a\", \"9b\"));\n        list.add(new AB(\"10a\", \"11ba\"));\n        list.add(new AB(\"12a\", \"13b\"));\n        String[] abc = new String[] { \"sf\", \"sdf\", \"dsffds\", \"sdfsdf{fds}\" };\n        Map<String, AB> map = new LinkedHashMap();\n        int k = 0;\n        for (AB a : list) {\n            map.put(String.valueOf(k++), a);\n        }\n        System.out.println(JSON.toJSON(list));\n        System.out.println(JSON.toJSON(abc));\n        System.out.println(JSON.toJSON(new AB(\"10a\", \"11ba\")));\n        System.out.println(JSON.toJSON(map));\n\n    }\n\n    private static class AB {\n\n        private String a;\n        private String b;\n\n        public AB(){\n            super();\n        }\n\n        public AB(String a, String b){\n            super();\n            this.a = a;\n            this.b = b;\n        }\n\n        public String getA() {\n            return a;\n        }\n\n        public String getB() {\n            return b;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug2.java",
    "content": "package com.alibaba.json.bvt.bug;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Collections;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\n\r\npublic class Bug2 extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        Entity entity = new Entity();\r\n\r\n        entity.setArticles(Collections.singletonList(new Article()));\r\n\r\n        String jsonString = JSON.toJSONString(entity);\r\n\r\n        System.out.println(jsonString);\r\n\r\n        Entity entity2 = JSON.parseObject(jsonString, Entity.class);\r\n        Assert.assertEquals(entity.getArticles().size(), entity2.getArticles().size());\r\n    }\r\n\r\n    public static class Entity {\r\n\r\n        private List<HashMap<String, String>> list     = new ArrayList<HashMap<String, String>>();\r\n        private List<Article>                 articles = null;\r\n\r\n        public List<HashMap<String, String>> getList() {\r\n            return list;\r\n        }\r\n\r\n        public void setList(List<HashMap<String, String>> list) {\r\n            this.list = list;\r\n        }\r\n\r\n        public List<Article> getArticles() {\r\n            return articles;\r\n        }\r\n\r\n        public void setArticles(List<Article> articles) {\r\n            this.articles = articles;\r\n        }\r\n\r\n    }\r\n\r\n    public static class Article {\r\n\r\n        private long id;\r\n\r\n        public long getId() {\r\n            return id;\r\n        }\r\n\r\n        public void setId(long id) {\r\n            this.id = id;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_10.java",
    "content": "package com.alibaba.json.bvt.bug;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\n\r\npublic class Bug_10 extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        String text = \"{'jdbcUrl':\\\"jdbc:wrap-jdbc:filters=default:name=com.alibaba.dragoon.monitor:jdbc:mysql:\\\\/\\\\/10.20.129.167\\\\/dragoon_v25monitordb?useUnicode=true&characterEncoding=UTF-8\\\"}\";\r\n\r\n        JSON.parse(text);\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        String text = \"{'jdbcUrl':'jdbc:wrap-jdbc:filters=default:name=com.alibaba.dragoon.monitor:jdbc:mysql:\\\\/\\\\/10.20.129.167\\\\/dragoon_v25monitordb?useUnicode=true&characterEncoding=UTF-8'}\";\r\n\r\n        JSON.parse(text);\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_101_for_rongganlin.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_101_for_rongganlin extends TestCase {\n\n    public void test_for_bug() throws Exception {\n        Structure structure = new Structure();\n        List<Group> groups = new ArrayList<Group>();\n\n        List<Element> elemA = new ArrayList<Element>();\n        elemA.add(new Text().set(\"t.a\", \"v.t.a\"));\n        elemA.add(new Image().set(\"i.a\", \"v.i.a\"));\n        groups.add(new Group().set(elemA));\n\n        List<Element> elemB = new ArrayList<Element>();\n        elemB.add(new Text().set(\"t.b\", \"v.t.b\"));\n        elemB.add(new Image().set(\"i.b\", \"v.i.b\"));\n        groups.add(new Group().set(elemB));\n\n        structure.groups = groups;\n\n        System.out.println(JSON.toJSON(structure));\n        System.out.println(JSON.toJSONString(structure));\n    }\n\n    class Structure {\n\n        public List<Group> groups;\n    }\n\n    class Group implements Object {\n\n        public List<Element> elements;\n\n        public Group set(List<Element> items) {\n            this.elements = items;\n            return this;\n        }\n    }\n\n    interface Object {\n    }\n\n    abstract class Element {\n\n        public String key, value;\n\n        public Element set(String key, String value) {\n            this.key = key;\n            this.value = value;\n            return this;\n        }\n    }\n\n    class Text extends Element {\n    }\n\n    class Image extends Element {\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_101_for_rongganlin_case2.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_101_for_rongganlin_case2 extends TestCase {\n\n    public void test_for_bug() throws Exception {\n        Structure structure = new Structure();\n        List<Group> groups = new ArrayList<Group>();\n\n        List<Element> elemA = new ArrayList<Element>();\n        elemA.add(new Text().set(\"t.a\", \"v.t.a\"));\n        elemA.add(new Image().set(\"i.a\", \"v.i.a\"));\n        groups.add(new Group().set(elemA));\n\n        List<Element> elemB = new ArrayList<Element>();\n        elemB.add(new Text().set(\"t.b\", \"v.t.b\"));\n        elemB.add(new Image().set(\"i.b\", \"v.i.b\"));\n        groups.add(new Group().set(elemB));\n\n        structure.groups = groups;\n\n        String text = JSON.toJSONString(structure);\n        System.out.println(text);\n        Structure structure2 = JSON.parseObject(text, Structure.class);\n        \n        Assert.assertEquals(structure.groups.size(), structure2.groups.size());\n        System.out.println(JSON.toJSONString(structure2));\n    }\n\n    public static class Structure {\n\n        public List<Group> groups;\n    }\n\n    public static class Group implements Object {\n\n        public List<Element> elements;\n\n        public Group set(List<Element> items) {\n            this.elements = items;\n            return this;\n        }\n    }\n\n    public static interface Object {\n    }\n\n    public static abstract class Element {\n\n        public String key, value;\n\n        public Element set(String key, String value) {\n            this.key = key;\n            this.value = value;\n            return this;\n        }\n    }\n\n    public static class Text extends Element {\n    }\n\n    public static class Image extends Element {\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_101_for_rongganlin_case3.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\npublic class Bug_101_for_rongganlin_case3 extends TestCase {\n\n    public void test_for_bug() throws Exception {\n        Entity entity = new Entity();\n        entity.setHolder(new Holder<String>(\"AAA\"));\n\n        JSONObject json = (JSONObject) JSON.toJSON(entity);\n        Entity entity2 = JSON.toJavaObject(json, Entity.class);\n        Assert.assertEquals(JSON.toJSONString(entity), JSON.toJSONString(entity2));\n    }\n\n    public static class Entity {\n\n        private Holder<?> holder;\n\n        public Holder<?> getHolder() {\n            return holder;\n        }\n\n        public void setHolder(Holder<?> holder) {\n            this.holder = holder;\n        }\n\n    }\n\n    public static class Holder<T> {\n\n        private T value;\n        \n        public Holder() {\n            \n        }\n        \n        public Holder(T value) {\n            this.value = value;\n        }\n\n        public T getValue() {\n            return value;\n        }\n\n        public void setValue(T value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_102_for_rongganlin.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.util.TypeUtils;\n\npublic class Bug_102_for_rongganlin extends TestCase {\n\n    public void test_bug() throws Exception {\n        TestBean testProcessInfo = new TestBean();\n        com.alibaba.fastjson.JSONObject jo = new com.alibaba.fastjson.JSONObject();\n        jo.put(\"id\", 121);\n        ParserConfig config = new ParserConfig();\n        testProcessInfo = TypeUtils.cast(jo, TestBean.class, config);\n    }\n\n    public static class TestBean {\n\n        private double id;\n        private double name;\n\n        public double getId() {\n            return id;\n        }\n\n        public void setId(double id) {\n            this.id = id;\n        }\n\n        public double getName() {\n            return name;\n        }\n\n        public void setName(double name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_105_for_SpitFire.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_105_for_SpitFire extends TestCase {\n\n    static private class Foo {\n\n        private List<String> names;\n        private List<String> codes;\n\n        public List<String> getNames() {\n            return names;\n        }\n\n        public void setNames(List<String> names) {\n            this.names = names;\n        }\n\n        public List<String> getCodes() {\n            return codes;\n        }\n\n        public void setCodes(List<String> codes) {\n            this.codes = codes;\n        }\n\n    }\n\n    public void test_listErrorTest() {\n        Foo foo = new Foo();\n        String json = JSON.toJSONString(foo, SerializerFeature.WriteMapNullValue);\n        System.out.println(json);\n        Foo f = JSON.parseObject(json, Foo.class);\n        System.out.println(f);\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_127_for_qiuyan81.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class Bug_127_for_qiuyan81 extends TestCase {\n\n    public void test_parserUndefined() {\n        String jsonString = \"{PayStatus:0,RunEmpId:undefined}\";\n        Object json = JSON.parse(jsonString);\n        Assert.assertEquals(\"{\\\"PayStatus\\\":0}\", json.toString());\n    }\n    \n    public void test_parserUndefined_space() {\n        String jsonString = \"{PayStatus:0,RunEmpId:undefined }\";\n        Object json = JSON.parse(jsonString);\n        Assert.assertEquals(\"{\\\"PayStatus\\\":0}\", json.toString());\n    }\n    \n    public void test_parserUndefined_comma() {\n        String jsonString = \"{PayStatus:0,RunEmpId:undefined,ext:1001}\";\n        JSONObject json = (JSONObject) JSON.parse(jsonString);\n        Assert.assertEquals(1001, json.get(\"ext\"));\n        Assert.assertEquals(0, json.get(\"PayStatus\"));\n        Assert.assertEquals(3, json.size());\n    }\n    \n    public void test_parserUndefined_array() {\n        String jsonString = \"[0,undefined]\";\n        Object json = JSON.parse(jsonString);\n        Assert.assertEquals(\"[0,null]\", json.toString());\n    }\n    \n    public void test_parserUndefined_n() {\n        String jsonString = \"{PayStatus:0,RunEmpId:undefined\\n}\";\n        Object json = JSON.parse(jsonString);\n        Assert.assertEquals(\"{\\\"PayStatus\\\":0}\", json.toString());\n    }\n    \n    public void test_parserUndefined_r() {\n        String jsonString = \"{PayStatus:0,RunEmpId:undefined\\r}\";\n        Object json = JSON.parse(jsonString);\n        Assert.assertEquals(\"{\\\"PayStatus\\\":0}\", json.toString());\n    }\n    \n    public void test_parserUndefined_t() {\n        String jsonString = \"{PayStatus:0,RunEmpId:undefined\\t}\";\n        Object json = JSON.parse(jsonString);\n        Assert.assertEquals(\"{\\\"PayStatus\\\":0}\", json.toString());\n    }\n    \n    public void test_parserUndefined_f() {\n        String jsonString = \"{PayStatus:0,RunEmpId:undefined\\f}\";\n        Object json = JSON.parse(jsonString);\n        Assert.assertEquals(\"{\\\"PayStatus\\\":0}\", json.toString());\n    }\n    \n    public void test_parserUndefined_b() {\n        String jsonString = \"{PayStatus:0,RunEmpId:undefined\\b}\";\n        Object json = JSON.parse(jsonString);\n        Assert.assertEquals(\"{\\\"PayStatus\\\":0}\", json.toString());\n    }\n    \n    public void test_parserUndefined_single() {\n        String jsonString = \"undefined\";\n        Object json = JSON.parse(jsonString);\n        Assert.assertNull(json);\n    }\n    \n    public void test_parserUndefined_field() {\n        String jsonString = \"{undefined:1001}\";\n        Object json = JSON.parse(jsonString);\n        Assert.assertEquals(1001, ((JSONObject)json).get(\"undefined\"));\n    }\n\n    public void test_parserError() {\n        Exception error = null;\n        try {\n            String jsonString = \"{PayStatus:0,RunEmpId:undefinedaa}\";\n            JSON.parse(jsonString);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_376_for_iso8601.java",
    "content": "/*\n * Copyright 2015 Alibaba.com All right reserved. This software is the\n * confidential and proprietary information of Alibaba.com (\"Confidential\n * Information\"). You shall not disclose such Confidential Information and shall\n * use it only in accordance with the terms of the license agreement you entered\n * into with Alibaba.com.\n */\npackage com.alibaba.json.bvt.bug;\n\nimport java.text.DateFormat;\nimport java.util.Date;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class Bug_376_for_iso8601 extends TestCase {\n\n    public void test_fix() {\n\n        String s = \"{date: \\\"2015-07-22T19:13:42Z\\\"}\";\n        String s2 = \"{date: \\\"2015-07-22T19:13:42.000Z\\\"}\";\n\n        MyObj o = JSON.parseObject(s, MyObj.class, Feature.AllowISO8601DateFormat);\n        MyObj o2 = JSON.parseObject(s2, MyObj.class, Feature.AllowISO8601DateFormat);\n\n        System.out.println(DateFormat.getDateTimeInstance().format(o.getDate()));\n        System.out.println(DateFormat.getDateTimeInstance().format(o2.getDate()));\n\n        // 修复之前输出\n        // 2015-7-22 19:13:42\n        // 2015-7-23 3:13:42\n\n        // 修复之后输出\n        // 2015-7-23 3:13:42\n        // 2015-7-23 3:13:42\n\n    }\n\n    static class MyObj {\n\n        private Date date;\n\n        public Date getDate() {\n            return date;\n        }\n\n        public void setDate(Date date) {\n            this.date = date;\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_6.java",
    "content": "package com.alibaba.json.bvt.bug;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\n\r\npublic class Bug_6 extends TestCase {\r\n\r\n    public void test_bug6() throws Exception {\r\n        Entity entity = new Entity();\r\n\r\n        String jsonString = JSON.toJSONString(entity);\r\n\r\n        System.out.println(jsonString);\r\n\r\n        JSON.parseObject(jsonString, Entity.class);\r\n    }\r\n\r\n    public static class Entity {\r\n\r\n        private List<HashMap<String, String>> list = null;\r\n\r\n        public List<HashMap<String, String>> getList() {\r\n            return list;\r\n        }\r\n\r\n        public void setList(List<HashMap<String, String>> list) {\r\n            this.list = list;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_7.java",
    "content": "package com.alibaba.json.bvt.bug;\r\n\r\nimport java.math.BigInteger;\r\nimport java.util.concurrent.atomic.AtomicIntegerArray;\r\nimport java.util.concurrent.atomic.AtomicLongArray;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\n\r\npublic class Bug_7 extends TestCase {\r\n\r\n    public void test_floatArray() throws Exception {\r\n        float[] a = new float[] { 1, 2 };\r\n        String text = JSON.toJSONString(a);\r\n        JSON json = (JSON) JSON.parse(text);\r\n        Assert.assertEquals(\"[1.0,2.0]\", json.toJSONString());\r\n    }\r\n\r\n    public void test_doubleArray() throws Exception {\r\n        double[] a = new double[] { 1, 2 };\r\n        String text = JSON.toJSONString(a);\r\n        JSON json = (JSON) JSON.parse(text);\r\n        Assert.assertEquals(\"[1.0,2.0]\", json.toJSONString());\r\n    }\r\n\r\n    public void test_bigintegerArray() throws Exception {\r\n        BigInteger[] a = new BigInteger[] { new BigInteger(\"214748364812\"), new BigInteger(\"2147483648123\") };\r\n        String text = JSON.toJSONString(a);\r\n        Assert.assertEquals(\"[214748364812,2147483648123]\", text);\r\n        JSON json = (JSON) JSON.parse(text);\r\n        Assert.assertEquals(\"[214748364812,2147483648123]\", json.toJSONString());\r\n    }\r\n\r\n    public void test_AtomicIntegerArray() throws Exception {\r\n        AtomicIntegerArray array = new AtomicIntegerArray(3);\r\n        array.set(0, 1);\r\n        array.set(1, 2);\r\n        array.set(2, 3);\r\n        String text = JSON.toJSONString(array);\r\n        Assert.assertEquals(\"[1,2,3]\", text);\r\n    }\r\n\r\n    public void test_AtomicLongArray() throws Exception {\r\n        AtomicLongArray array = new AtomicLongArray(3);\r\n        array.set(0, 1);\r\n        array.set(1, 2);\r\n        array.set(2, 3);\r\n        String text = JSON.toJSONString(array);\r\n        Assert.assertEquals(\"[1,2,3]\", text);\r\n    }\r\n}\r\n   \r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_8.java",
    "content": "package com.alibaba.json.bvt.bug;\r\n\r\nimport java.util.List;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSONArray;\r\n\r\npublic class Bug_8 extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        List<String> typeList = JSONArray.parseArray(\"['java.lang.Class','java.lang.Long']\", String.class);\r\n        Assert.assertEquals(\"java.lang.Class\", typeList.get(0));\r\n        Assert.assertEquals(\"java.lang.Long\", typeList.get(1));\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_KimShen.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashSet;\nimport java.util.LinkedList;\nimport java.util.Set;\nimport java.util.TreeSet;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_KimShen extends TestCase {\n\n    public void test_0() throws Exception {\n        String text = JSON.toJSONString(new Entity());\n        JSON.parseObject(text, Entity.class);\n    }\n\n    public static class Entity {\n\n        private Set<Object>        value      = new HashSet<Object>();\n        private TreeSet<Object>    treeSet    = new TreeSet<Object>();\n        private LinkedList<Object> linkedList = new LinkedList<Object>();\n        private MySet<Object>      mySet      = new MySet<Object>();\n\n        public MySet<Object> getMySet() {\n            return mySet;\n        }\n\n        public void setMySet(MySet<Object> mySet) {\n            this.mySet = mySet;\n        }\n\n        public LinkedList<Object> getLinkedList() {\n            return linkedList;\n        }\n\n        public void setLinkedList(LinkedList<Object> linkedList) {\n            this.linkedList = linkedList;\n        }\n\n        public Set<Object> getValue() {\n            return value;\n        }\n\n        public void setValue(Set<Object> value) {\n            this.value = value;\n        }\n\n        public TreeSet<Object> getTreeSet() {\n            return treeSet;\n        }\n\n        public void setTreeSet(TreeSet<Object> treeSet) {\n            this.treeSet = treeSet;\n        }\n\n    }\n\n    public static class MySet<T> extends TreeSet<T> {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_42283905.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class Bug_for_42283905 extends TestCase {\n\n    public void test_0() throws Exception {\n\n        String text;\n        {\n            List<Group> groups = new ArrayList<Group>();\n\n            Command c0 = new Command(1);\n            Command c1 = new Command(2);\n            Command c2 = new Command(3);\n\n            c1.setPre(c0);\n            c2.setPre(c1);\n\n            {\n                Group group = new Group(\"g0\");\n                group.getBattleCommandList().add(c0);\n                groups.add(group);\n            }\n\n            {\n                Group group = new Group(\"g1\");\n                group.getBattleCommandList().add(c1);\n                groups.add(group);\n            }\n            \n            {\n                Group group = new Group(\"g2\");\n                group.getBattleCommandList().add(c2);\n                groups.add(group);\n            }\n            text = JSON.toJSONString(groups);\n        }\n\n        System.out.println(text);\n\n        List<Group> groups = JSON.parseObject(text, new TypeReference<List<Group>>() {\n        });\n        Group g0 = groups.get(0);\n        Group g1 = groups.get(1);\n\n        System.out.println(JSON.toJSONString(groups));\n    }\n\n    public static class Group {\n\n        private String        name;\n\n        private List<Command> battleCommandList = new ArrayList<Command>();\n\n        public Group(){\n\n        }\n\n        public Group(String name){\n            this.name = name;\n        }\n\n        public List<Command> getBattleCommandList() {\n            return battleCommandList;\n        }\n\n        public void setBattleCommandList(List<Command> battleCommandList) {\n            this.battleCommandList = battleCommandList;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n\n    public static class Command {\n\n        private int id;\n\n        public Command(){\n\n        }\n\n        public Command(int id){\n            this.id = id;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        private Command pre;\n\n        public Command getPre() {\n            return pre;\n        }\n\n        public void setPre(Command pre) {\n            this.pre = pre;\n        }\n\n        public String toString() {\n            return \"{id:\" + id + \"}\";\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_42283905_1.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class Bug_for_42283905_1 extends TestCase {\n\n    public void test_0() throws Exception {\n\n        String text;\n        {\n            List<Group> groups = new ArrayList<Group>();\n\n            Command c0 = new Command(1);\n            Command c1 = new Command(2);\n            Command c2 = new Command(3);\n\n            c1.setPre(c0);\n            c2.setPre(c1);\n\n            {\n                Group group = new Group(\"g0\");\n                group.getBattleCommandList().add(c0);\n                groups.add(group);\n            }\n\n            {\n                Group group = new Group(\"g1\");\n                group.getBattleCommandList().add(c1);\n                groups.add(group);\n            }\n            \n            {\n                Group group = new Group(\"g2\");\n                group.getBattleCommandList().add(c2);\n                groups.add(group);\n            }\n            text = JSON.toJSONString(groups);\n        }\n\n        System.out.println(text);\n\n        Group[] groups = JSON.parseObject(text, new TypeReference<Group[]>() {\n        });\n        Group g0 = groups[0];\n        Group g1 = groups[1];\n\n        System.out.println(JSON.toJSONString(groups));\n    }\n\n    public static class Group {\n\n        private String        name;\n\n        private List<Command> battleCommandList = new ArrayList<Command>();\n\n        public Group(){\n\n        }\n\n        public Group(String name){\n            this.name = name;\n        }\n\n        public List<Command> getBattleCommandList() {\n            return battleCommandList;\n        }\n\n        public void setBattleCommandList(List<Command> battleCommandList) {\n            this.battleCommandList = battleCommandList;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n\n    public static class Command {\n\n        private int id;\n\n        public Command(){\n\n        }\n\n        public Command(int id){\n            this.id = id;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        private Command pre;\n\n        public Command getPre() {\n            return pre;\n        }\n\n        public void setPre(Command pre) {\n            this.pre = pre;\n        }\n\n        public String toString() {\n            return \"{id:\" + id + \"}\";\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_80108116.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.text.SimpleDateFormat;\nimport java.util.ArrayList;\nimport java.util.Date;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic class Bug_for_80108116 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_for_dateFormat() throws Exception {\n        VO vo = new VO();\n        SimpleDateFormat dateFormat = new SimpleDateFormat(\"yyyy-MM-dd\", JSON.defaultLocale);\n        dateFormat.setTimeZone(JSON.defaultTimeZone);\n        vo.setDate(dateFormat.parse(\"2012-07-12\"));\n\n        List<VO> voList = new ArrayList<VO>();\n        voList.add(vo);\n\n        String text = JSON.toJSONString(voList);\n        Assert.assertEquals(\"[{\\\"date\\\":\\\"2012-07-12\\\"}]\", text);\n    }\n\n    public static class VO {\n\n        private Date date;\n\n        @JSONField(format = \"yyyy-MM-dd\")\n        public Date getDate() {\n            return date;\n        }\n\n        public void setDate(Date date) {\n            this.date = date;\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_ArrayMember.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\npublic class Bug_for_ArrayMember extends TestCase {\n    public void test_arrayMember() throws Exception {\n        A a = new A();\n        a.setValues(new B[] {new B()});\n        \n        String text = JSON.toJSONString(a);\n        \n        Assert.assertEquals(\"{\\\"values\\\":[{}]}\", text);\n        Assert.assertEquals(\"{}\", JSON.toJSONString(new A()));\n        Assert.assertEquals(\"null\", JSON.toJSONString(new A().getValues()));\n        \n        Assert.assertEquals(\"[]\", JSON.toJSONString(new A[0]));\n        Assert.assertEquals(\"[{},{}]\", JSON.toJSONString(new A[] {new A(), new A()}));\n    }\n\n    public static class A {\n\n        private B[] values;\n\n        public B[] getValues() {\n            return values;\n        }\n\n        public void setValues(B[] values) {\n            this.values = values;\n        }\n\n    }\n\n    public static class B {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_BlankRain_Issue_502.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_BlankRain_Issue_502 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        People a1 = new People();\n        a1.set姓名(\"A\");\n        a1.set类型(\"B\");\n        a1.set状态(\"C\");\n        a1.set满意度(\"D\");\n        a1.set统计(\"E\");\n        a1.set时间(\"F\");\n\n        String text = JSON.toJSONString(a1);\n        Assert.assertEquals(\"{\\\"姓名\\\":\\\"A\\\",\\\"时间\\\":\\\"F\\\",\\\"满意度\\\":\\\"D\\\",\\\"状态\\\":\\\"C\\\",\\\"类型\\\":\\\"B\\\",\\\"统计\\\":\\\"E\\\"}\", text);\n        System.out.println(text);\n        \n        People a2 = JSON.parseObject(text, People.class);\n        Assert.assertEquals(a1.get姓名(), a2.get姓名());\n        Assert.assertEquals(a1.get类型(), a2.get类型());\n        Assert.assertEquals(a1.get状态(), a2.get状态());\n        Assert.assertEquals(a1.get满意度(), a2.get满意度());\n        Assert.assertEquals(a1.get统计(), a2.get统计());\n        Assert.assertEquals(a1.get时间(), a2.get时间());\n    }\n\n    public static class People {\n\n        private String 姓名;\n        private String 类型;\n        private String 状态;\n        private String 满意度;\n        private String 统计;\n        private String 时间;\n\n        static List<String> head() {\n            List<String> h = new ArrayList<String>();\n\n            h.add(\"姓名\");\n            h.add(\"类型\");\n            h.add(\"状态\");\n            h.add(\"满意度\");\n            h.add(\"统计\");\n            h.add(\"时间\");\n            return h;\n        }\n\n        public String get姓名() {\n            return 姓名;\n        }\n\n        public void set姓名(String 姓名) {\n            this.姓名 = 姓名;\n        }\n\n        public String get类型() {\n            return 类型;\n        }\n\n        public void set类型(String 类型) {\n            this.类型 = 类型;\n        }\n\n        public String get状态() {\n            return 状态;\n        }\n\n        public void set状态(String 状态) {\n            this.状态 = 状态;\n        }\n\n        public String get满意度() {\n            return 满意度;\n        }\n\n        public void set满意度(String 满意度) {\n            this.满意度 = 满意度;\n        }\n\n        public String get统计() {\n            return 统计;\n        }\n\n        public void set统计(String 统计) {\n            this.统计 = 统计;\n        }\n\n        public String get时间() {\n            return 时间;\n        }\n\n        public void set时间(String 时间) {\n            this.时间 = 时间;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_DiffType.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_DiffType extends TestCase {\n    public void test_for_diff_type() throws Exception {\n        Model model = new Model();\n        model.setValue(1001);\n        \n        String text = JSON.toJSONString(model);\n        Model model2 = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(model.value, model2.value);\n    }\n    \n    public static class Model {\n        public String value;\n        \n        public long getValue() {\n            return Long.parseLong(value);\n        }\n        \n        public void setValue(long value) {\n            this.value = Long.toString(value);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_Double2Tag.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_Double2Tag extends TestCase {\n\tpublic void test_double() throws Exception {\n\t\tDouble2Tag tag = new Double2Tag();\n\t\tString str = JSON.toJSONString(tag);\n\t\tJSON.parseObject(str, Double2Tag.class);\n\t}\n\t\n\tpublic static class Double2Tag {\n\t\tpublic String data_time;\n\t\tpublic String data_id;\n\t\tpublic String hour_id;\n\t\tpublic String minute_id;\n\t\tpublic String tag3_id;\n\t\tpublic double ali_fee;\n\t\tpublic double total_ali_fee;\n\t\tpublic long seller_cnt;\n\n\t\tpublic Double2Tag() {\n\t\t\tali_fee = 0.0;\n\t\t\ttotal_ali_fee = 0.0;\n\t\t\tseller_cnt = 0;\n\t\t}\n\n\t\tpublic String getData_time() {\n\t\t\treturn data_time;\n\t\t}\n\n\t\tpublic void setData_time(String data_time) {\n\t\t\tthis.data_time = data_time;\n\t\t}\n\n\t\tpublic String getData_id() {\n\t\t\treturn data_id;\n\t\t}\n\n\t\tpublic void setData_id(String data_id) {\n\t\t\tthis.data_id = data_id;\n\t\t}\n\n\t\tpublic String getHour_id() {\n\t\t\treturn hour_id;\n\t\t}\n\n\t\tpublic void setHour_id(String hour_id) {\n\t\t\tthis.hour_id = hour_id;\n\t\t}\n\n\t\tpublic String getMinute_id() {\n\t\t\treturn minute_id;\n\t\t}\n\n\t\tpublic void setMinute_id(String minute_id) {\n\t\t\tthis.minute_id = minute_id;\n\t\t}\n\n\t\tpublic String getTag3_id() {\n\t\t\treturn tag3_id;\n\t\t}\n\n\t\tpublic void setTag3_id(String tag3_id) {\n\t\t\tthis.tag3_id = tag3_id;\n\t\t}\n\n\t\tpublic double getAli_fee() {\n\t\t\treturn ali_fee;\n\t\t}\n\n\t\tpublic void setAli_fee(double ali_fee) {\n\t\t\tthis.ali_fee = ali_fee;\n\t\t}\n\n\t\tpublic double getTotal_ali_fee() {\n\t\t\treturn total_ali_fee;\n\t\t}\n\n\t\tpublic void setTotal_ali_fee(double total_ali_fee) {\n\t\t\tthis.total_ali_fee = total_ali_fee;\n\t\t}\n\n\t\tpublic long getSeller_cnt() {\n\t\t\treturn seller_cnt;\n\t\t}\n\n\t\tpublic void setSeller_cnt(long seller_cnt) {\n\t\t\tthis.seller_cnt = seller_cnt;\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_Exception.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\nimport java.util.Map;\n\npublic class Bug_for_Exception extends TestCase {\n\tpublic void test_exception() throws Exception {\n//\t\tRuntimeException ex = new RuntimeException(\"e1\");\n//\t\tString text = JSON.toJSONString(ex);\n//\t\tSystem.out.println(text);\n//\n//\n//\t\tObject obj = JSON.parse(text);\n//\t\tassertEquals(JSONObject.class, obj.getClass());\n//\n//\t\tThrowable throwable = JSON.parseObject(text, Throwable.class);\n//\t\tassertEquals(RuntimeException.class, throwable.getClass());\n//\n//\t\tObject obj2 = JSON.parse(text);\n//\t\tassertEquals(JSONObject.class, obj2.getClass());\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_Issue_519.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_Issue_519 extends TestCase {\n    public void test_issue() throws Exception {\n        String json = \"{\\\"accomTypes\\\":[1],\\\"address\\\":\\\"\\\",\\\"airportIds\\\":[],\\\"airportrailwayIds\\\":[],\\\"areaIds\\\":[0,14,673],\\\"avgPrice\\\":0,\\\"avgScore\\\":3.8,\\\"baseScore\\\":-0.0035256863871981348,\\\"brandId\\\":23762,\\\"brandLogo\\\":\\\"\\\",\\\"brandName\\\":\\\"\\\",\\\"brandStory\\\":\\\"\\\",\\\"campaignsScore\\\":0,\\\"cates\\\":[392,20,79],\\\"cityIds\\\":[1],\\\"collegeIds\\\":[58],\\\"competeDiffPrice\\\":0,\\\"couponCount\\\":990,\\\"customAvgScore\\\":76.00890238508207,\\\"declineScore\\\":0,\\\"distance\\\":0,\\\"drLowestPrice\\\":289,\\\"festCanuse\\\":0,\\\"hasDR\\\":1,\\\"hasDRGroup\\\":0,\\\"hasGroup\\\":1,\\\"hasHR\\\":0,\\\"hasHRGroup\\\":0,\\\"hasInvoice\\\":0,\\\"hospitalIds\\\":[23599],\\\"hotelTypes\\\":[1,0,888],\\\"hrLowestPrice\\\":0,\\\"inBlackList\\\":0,\\\"innCates\\\":[],\\\"introduction\\\":\\\"\\\",\\\"landmarkScore\\\":0,\\\"lastModifyTime\\\":1457924599643,\\\"latitude\\\":39.997828,\\\"location\\\":\\\"39.997828,116.466004\\\",\\\"longitude\\\":116.466004,\\\"lowestPrice\\\":289,\\\"mapSmartPartScore\\\":69.74729610098822,\\\"markNumbers\\\":270,\\\"name\\\":\\\"布丁酒店（北京望京店）\\\",\\\"newDealScore\\\":0,\\\"phone\\\":\\\"010-64728973\\\",\\\"poiid\\\":52209391,\\\"prds\\\":[{\\\"areaIds\\\":[14,673],\\\"beginTime\\\":1436371200,\\\"bookingType\\\":0,\\\"cates\\\":[0,1],\\\"cityIds\\\":[1],\\\"dateCantUse\\\":[\\\"20160313\\\",\\\"20160314\\\",\\\"20160315\\\",\\\"20160316\\\",\\\"20160317\\\",\\\"20160318\\\",\\\"20160319\\\",\\\"20160320\\\",\\\"20160321\\\",\\\"20160322\\\",\\\"20160323\\\",\\\"20160324\\\",\\\"20160325\\\",\\\"20160326\\\",\\\"20160327\\\",\\\"20160328\\\",\\\"20160329\\\",\\\"20160330\\\",\\\"20160331\\\",\\\"20160401\\\",\\\"20160402\\\",\\\"20160403\\\",\\\"20160404\\\",\\\"20160405\\\",\\\"20160406\\\",\\\"20160407\\\",\\\"20160408\\\",\\\"20160409\\\"],\\\"did\\\":30513601,\\\"endTime\\\":1460131199,\\\"gid\\\":749878,\\\"hasCampaigns\\\":0,\\\"hasInvoice\\\":0,\\\"nobooking\\\":0,\\\"poiids\\\":[],\\\"price\\\":59,\\\"soldQuantity\\\":535,\\\"value\\\":80},{\\\"areaIds\\\":[14,673],\\\"beginTime\\\":1438531200,\\\"bookingType\\\":0,\\\"cates\\\":[0,1],\\\"cityIds\\\":[1],\\\"dateCantUse\\\":[\\\"20160313\\\",\\\"20160314\\\",\\\"20160315\\\",\\\"20160316\\\",\\\"20160317\\\",\\\"20160318\\\",\\\"20160319\\\",\\\"20160320\\\",\\\"20160321\\\",\\\"20160322\\\",\\\"20160323\\\",\\\"20160324\\\",\\\"20160325\\\",\\\"20160326\\\",\\\"20160327\\\",\\\"20160328\\\",\\\"20160329\\\",\\\"20160330\\\",\\\"20160331\\\",\\\"20160401\\\",\\\"20160402\\\",\\\"20160403\\\",\\\"20160404\\\"],\\\"did\\\":31035361,\\\"endTime\\\":1459699199,\\\"gid\\\":858227,\\\"hasCampaigns\\\":0,\\\"hasInvoice\\\":0,\\\"nobooking\\\":0,\\\"poiids\\\":[],\\\"price\\\":309,\\\"soldQuantity\\\":60,\\\"value\\\":319},{\\\"areaIds\\\":[14,673],\\\"beginTime\\\":1438531200,\\\"bookingType\\\":0,\\\"cates\\\":[0,1],\\\"cityIds\\\":[1],\\\"dateCantUse\\\":[\\\"20160313\\\",\\\"20160314\\\",\\\"20160315\\\",\\\"20160316\\\",\\\"20160317\\\",\\\"20160318\\\",\\\"20160319\\\",\\\"20160320\\\",\\\"20160321\\\",\\\"20160322\\\",\\\"20160323\\\",\\\"20160324\\\",\\\"20160325\\\",\\\"20160326\\\",\\\"20160327\\\",\\\"20160328\\\",\\\"20160329\\\",\\\"20160330\\\",\\\"20160331\\\",\\\"20160401\\\",\\\"20160402\\\",\\\"20160403\\\",\\\"20160404\\\"],\\\"did\\\":31035397,\\\"endTime\\\":1459699199,\\\"gid\\\":858226,\\\"hasCampaigns\\\":0,\\\"hasInvoice\\\":0,\\\"nobooking\\\":0,\\\"poiids\\\":[],\\\"price\\\":289,\\\"soldQuantity\\\":157,\\\"value\\\":309}],\\\"railwayStationIds\\\":[],\\\"roomSizes\\\":[0,1,3,4],\\\"roomStates\\\":{},\\\"scenicSpotIds\\\":[5655],\\\"showFlag\\\":1,\\\"smartAvgBaseScore\\\":5.7669880413567585,\\\"smartPartScore\\\":58.21997185816042,\\\"smartSoldBaseScore\\\":1.6134262836027502,\\\"subwayLineIds\\\":[3,75],\\\"subwayStationIds\\\":[1490,1485,147],\\\"yfSourceTypes\\\":[],\\\"zlSourceType\\\":0}\";\n        JSON.parse(json);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_Issue_534.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_Issue_534 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Value value = new Value();\n        value.aLong = 2459838341588L;\n        \n        String text = JSON.toJSONString(value);\n        Assert.assertEquals(\"{\\\"aLong\\\":2459838341588}\", text);\n    }\n    \n    public void test_for_issue_1() throws Exception {\n        Long value = 2459838341588L;\n        \n        String text = JSON.toJSONString(value);\n        Assert.assertEquals(\"2459838341588\", text);\n    }\n    \n    class Value {\n\n        private Long aLong;\n\n        public Long getaLong() {\n            return aLong;\n        }\n\n        public void setaLong(Long aLong) {\n            this.aLong = aLong;\n        }\n    }\n    \n    \n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_Issue_535.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.math.BigDecimal;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_Issue_535 extends TestCase {\n    public void test_for_issue() throws Exception {\n        TestPOJO testPOJO = new TestPOJO();\n        testPOJO.setA(\"a\");\n        testPOJO.setB(new BigDecimal(\"1234512312312312312312\"));\n        String s = JSON.toJSONString(testPOJO);\n        System.out.println(s);\n        \n        TestPOJO vo2 = JSON.parseObject(s, TestPOJO.class, Feature.UseBigDecimal);\n        Assert.assertEquals(testPOJO.getB(), vo2.getB());\n    }\n\n    public static class TestPOJO {\n\n        private String     a;\n        private BigDecimal b;\n        // getter and setter\n\n        public String getA() {\n            return a;\n        }\n\n        public void setA(String a) {\n            this.a = a;\n        }\n\n        public BigDecimal getB() {\n            return b;\n        }\n\n        public void setB(BigDecimal b) {\n            this.b = b;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_Issue_603.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.lang.reflect.Type;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_Issue_603 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        ParserConfig.getGlobalInstance().putDeserializer(OrderActionEnum.class, new OrderActionEnumDeser());\n\n        {\n            Msg msg = JSON.parseObject(\"{\\\"actionEnum\\\":1,\\\"body\\\":\\\"A\\\"}\", Msg.class);\n            Assert.assertEquals(msg.body, \"A\");\n            Assert.assertEquals(msg.actionEnum, OrderActionEnum.FAIL);\n        }\n        {\n            Msg msg = JSON.parseObject(\"{\\\"actionEnum\\\":0,\\\"body\\\":\\\"B\\\"}\", Msg.class);\n            Assert.assertEquals(msg.body, \"B\");\n            Assert.assertEquals(msg.actionEnum, OrderActionEnum.SUCC);\n        }\n    }\n\n    public static class OrderActionEnumDeser implements ObjectDeserializer {\n\n        @SuppressWarnings(\"unchecked\")\n        @Override\n        public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n            Integer intValue = parser.parseObject(int.class);\n            if (intValue == 1) {\n                return (T) OrderActionEnum.FAIL;\n            } else if (intValue == 0) {\n                return (T) OrderActionEnum.SUCC;\n            }\n            throw new IllegalStateException();\n        }\n\n        @Override\n        public int getFastMatchToken() {\n            return JSONToken.LITERAL_INT;\n        }\n\n    }\n\n    public static enum OrderActionEnum {\n                                        FAIL(1), SUCC(0);\n\n        private int code;\n\n        OrderActionEnum(int code){\n            this.code = code;\n        }\n    }\n\n    public static class Msg {\n\n        public OrderActionEnum actionEnum;\n        public String          body;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_JSONObject.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\n\npublic class Bug_for_JSONObject extends TestCase {\n    public void test_0 () throws Exception {\n        JSONSerializer ser = new JSONSerializer();\n        ser.config(SerializerFeature.WriteClassName, true);\n        ser.write(new JSONObject());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_Jay.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_Jay extends TestCase {\n\n    public void test_for_jay() throws Exception {\n        JSON.toJSONString(new B(), true);\n    }\n\n    public class A {\n\n        String nameA;\n    }\n\n    public class B extends A {\n        String nameB;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_Jay_1.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_Jay_1 extends TestCase {\n\tpublic void test_bug() throws Exception {\n\t\tJSON.parseObject(\"{\\\"body\\\":{\\\"coupons\\\":[{\\\"couponTypeId\\\":\\\"81c07c7c-7b88-4f5c-9d1e-e6f16e2ae36d\\\",\\\"editor\\\":\\\"ADMIN\\\",\\\"organizationPartyId\\\":\\\"00\\\",\\\"statusId\\\":\\\"COUPON_CREATED\\\",\\\"editorName\\\":\\\"超级管理员\\\",\\\"couponCode\\\":\\\"02\\\",\\\"creatorName\\\":\\\"超级管理员\\\",\\\"id\\\":\\\"d686bc04-a9d5-4f84-977a-8bfbb4fa9fe3\\\",\\\"fromDate\\\":\\\"2013-03-11 00:00:00\\\",\\\"creator\\\":\\\"ADMIN\\\",\\\"displayName\\\":\\\"02\\\",\\\"createTime\\\":\\\"2013-03-12 13:14:05\\\",\\\"updateTime\\\":\\\"2013-03-12 13:14:05\\\",\\\"organizationName\\\":\\\"X、X\\\"}],\\\"event\\\":\\\"activate\\\"}}\");\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_JeryZeng.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\n\npublic class Bug_for_JeryZeng extends TestCase {\n    public void test_0() throws Exception {\n        System.out.println(JSON.parseObject(\"{123:123,124:true,\\\"value\\\":{123:\\\"abc\\\"}}\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_Johnny.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.LinkedList;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_Johnny extends TestCase {\n\tprotected void setUp() throws Exception {\n\t\tParserConfig.global.addAccept(\"com.alibaba.json.bvt.bug.Bug_for_Johnny.\");\n\t}\n\n\tpublic void test_bug()throws Exception {\n\t\tMyObject myObject = new MyObject();\n        List<String> listObj = new LinkedList<String>();\n        Set<String> setObj = new HashSet<String>();\n        Map<String, String> mapObj = new HashMap<String, String>();\n        listObj.add(\"aaa\");\n        listObj.add(\"bbb\");\n        setObj.add(\"aaa\");\n        setObj.add(\"bbb\");\n        mapObj.put(\"key\", \"value\");\n        myObject.setBoolType(true);\n        myObject.setByteType(Byte.MIN_VALUE);\n        myObject.setCharType(Character.MIN_VALUE);\n        myObject.setDoubleType(Double.MIN_VALUE);\n        myObject.setFloatType(Float.MIN_VALUE);\n        myObject.setIntType(Integer.MIN_VALUE);\n        myObject.setLongType(Long.MIN_VALUE);\n        myObject.setShortType(Short.MIN_VALUE);\n        myObject.setEnumType(EnumType.MD5);\n        myObject.setStringType(\"aadf\");\n        myObject.setMapType(mapObj);\n        myObject.setSetType(setObj);\n        myObject.setListType(listObj);\n        \n        String text = JSON.toJSONString(myObject, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        MyObject myObject2 = (MyObject) JSON.parse(text);\n        Assert.assertEquals(myObject2.getMapType(), myObject.getMapType());\n\t}\n\t\n\tpublic static enum EnumType {\n\t\tMD5, SHA1\n\t}\n\n\tpublic static class MyObject {\n\n\t\tprivate String stringType;\n\t\tprivate byte byteType;\n\t\tprivate short shortType;\n\t\tprivate int intType;\n\t\tprivate long longType;\n\t\tprivate char charType;\n\t\tprivate float floatType;\n\t\tprivate double doubleType;\n\t\tprivate boolean boolType;\n\t\tprivate List<String> ListType;\n\t\tprivate Map<String, String> mapType;\n\t\tprivate Set<String> setType;\n\t\tprivate EnumType enumType;\n\n\t\tpublic Set<String> getSetType() {\n\t\t\treturn setType;\n\t\t}\n\n\t\tpublic void setSetType(Set<String> setType) {\n\t\t\tthis.setType = setType;\n\t\t}\n\n\t\t/**\n\t\t * @return the stringType\n\t\t */\n\t\tpublic String getStringType() {\n\t\t\treturn stringType;\n\t\t}\n\n\t\tpublic EnumType getEnumType() {\n\t\t\treturn enumType;\n\t\t}\n\n\t\tpublic void setEnumType(EnumType enumType) {\n\t\t\tthis.enumType = enumType;\n\t\t}\n\n\t\tpublic List<String> getListType() {\n\t\t\treturn ListType;\n\t\t}\n\n\t\tpublic void setListType(List<String> listType) {\n\t\t\tListType = listType;\n\t\t}\n\n\t\tpublic Map<String, String> getMapType() {\n\t\t\treturn mapType;\n\t\t}\n\n\t\tpublic void setMapType(Map<String, String> mapType) {\n\t\t\tthis.mapType = mapType;\n\t\t}\n\n\t\t/**\n\t\t * @param stringType\n\t\t *            the stringType to set\n\t\t */\n\t\tpublic void setStringType(String stringType) {\n\t\t\tthis.stringType = stringType;\n\t\t}\n\n\t\t/**\n\t\t * @return the byteType\n\t\t */\n\t\tpublic byte getByteType() {\n\t\t\treturn byteType;\n\t\t}\n\n\t\t/**\n\t\t * @param byteType\n\t\t *            the byteType to set\n\t\t */\n\t\tpublic void setByteType(byte byteType) {\n\t\t\tthis.byteType = byteType;\n\t\t}\n\n\t\t/**\n\t\t * @return the shortType\n\t\t */\n\t\tpublic short getShortType() {\n\t\t\treturn shortType;\n\t\t}\n\n\t\t/**\n\t\t * @param shortType\n\t\t *            the shortType to set\n\t\t */\n\t\tpublic void setShortType(short shortType) {\n\t\t\tthis.shortType = shortType;\n\t\t}\n\n\t\t/**\n\t\t * @return the intType\n\t\t */\n\t\tpublic int getIntType() {\n\t\t\treturn intType;\n\t\t}\n\n\t\t/**\n\t\t * @param intType\n\t\t *            the intType to set\n\t\t */\n\t\tpublic void setIntType(int intType) {\n\t\t\tthis.intType = intType;\n\t\t}\n\n\t\t/**\n\t\t * @return the longType\n\t\t */\n\t\tpublic long getLongType() {\n\t\t\treturn longType;\n\t\t}\n\n\t\t/**\n\t\t * @param longType\n\t\t *            the longType to set\n\t\t */\n\t\tpublic void setLongType(long longType) {\n\t\t\tthis.longType = longType;\n\t\t}\n\n\t\t/**\n\t\t * @return the charType\n\t\t */\n\t\tpublic char getCharType() {\n\t\t\treturn charType;\n\t\t}\n\n\t\t/**\n\t\t * @param charType\n\t\t *            the charType to set\n\t\t */\n\t\tpublic void setCharType(char charType) {\n\t\t\tthis.charType = charType;\n\t\t}\n\n\t\t/**\n\t\t * @return the floatType\n\t\t */\n\t\tpublic float getFloatType() {\n\t\t\treturn floatType;\n\t\t}\n\n\t\t/**\n\t\t * @param floatType\n\t\t *            the floatType to set\n\t\t */\n\t\tpublic void setFloatType(float floatType) {\n\t\t\tthis.floatType = floatType;\n\t\t}\n\n\t\t/**\n\t\t * @return the doubleType\n\t\t */\n\t\tpublic double getDoubleType() {\n\t\t\treturn doubleType;\n\t\t}\n\n\t\t/**\n\t\t * @param doubleType\n\t\t *            the doubleType to set\n\t\t */\n\t\tpublic void setDoubleType(double doubleType) {\n\t\t\tthis.doubleType = doubleType;\n\t\t}\n\n\t\t/**\n\t\t * @return the boolType\n\t\t */\n\t\tpublic boolean isBoolType() {\n\t\t\treturn boolType;\n\t\t}\n\n\t\t/**\n\t\t * @param boolType\n\t\t *            the boolType to set\n\t\t */\n\t\tpublic void setBoolType(boolean boolType) {\n\t\t\tthis.boolType = boolType;\n\t\t}\n\n\t\t/**\n\t\t * Constructs a <code>GroupEntity</code> <br>\n\t\t */\n\t\tpublic MyObject() {\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_Next.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\nimport org.junit.runner.JUnitCore;\nimport org.junit.runner.Result;\nimport org.junit.runner.notification.Failure;\n\nimport java.util.*;\n\n\npublic class Bug_for_Next extends TestCase {\n\n    public static void main(String[] args) throws Exception {\n        Result result = JUnitCore.runClasses(Bug_for_Next.class);\n        for (Failure fail : result.getFailures()) {\n            System.out.println(fail.toString());\n        }\n        if (result.wasSuccessful()) {\n            System.out.println(\"All tests finished successfully...\");\n        }\n    }\n\n    public void testPrimitiveArray() throws Exception {\n\n        showTitle(\"1=====================================\");\n        String text= JSON.toJSONString(\"testbytearray\".getBytes());\n        showMesg(\"text : \" + text);\n        byte[] byteArray = JSON.parseObject(text, byte[].class);\n        showMesg(\"byteArray : \" + byteArrayToHexString(byteArray));\n\n        int[][] ii = new int[][]{\n                new int[]{ 1, 2, 3},\n                new int[]{ 2, 3, 4, 5}\n        };\n\n        text = JSON.toJSONString(ii);\n        showMesg(\"text : \" + text);\n        int[][] pii = JSON.parseObject(text, int[][].class);\n        showMesg(\"pii : \" + Arrays.toString(pii));\n        showMesg(\"pii0 : \" + Arrays.toString(pii[0]));\n        showMesg(\"pii1 : \" + Arrays.toString(pii[1]));\n\n        showTitle(\"2=====================================\");\n        List<byte[]> blist = new ArrayList<byte[]>();\n        blist.add(\"byte[]\".getBytes());\n        blist.add(\"blist\".getBytes());\n        text = JSON.toJSONString(blist);\n        showMesg(\"text : \" + text);\n        blist = JSON.parseObject(text, new TypeReference<List<byte[]>>(byte[].class){}.getType());\n        showMesg(\"blist : \" + blist);\n        showMesg(\"blist1 : \" + byteArrayToHexString(blist.get(0)));\n        showMesg(\"blist2 : \" + byteArrayToHexString(blist.get(1)));\n\n        List<char[]> clist = new ArrayList<char[]>();\n        clist.add(new char[]{'1',',','2'});\n        clist.add(new char[]{'2',',','1'});\n        text = JSON.toJSONString(clist);\n        showMesg(\"text \" + text);\n        clist = JSON.parseObject(text, new TypeReference<List<char[]>>(char[].class){});\n        showMesg(\"clist : \" + clist);\n        showMesg(\"clist1 : \" + Arrays.toString(clist.get(0)));\n        showMesg(\"clist2 : \" + Arrays.toString(clist.get(1)));\n\n        List<int[]> ilist = new ArrayList<int[]>();\n        ilist.add(new int[]{11,22,33});\n        ilist.add(new int[]{33,22,11});\n        text = JSON.toJSONString(ilist);\n        showMesg(\"text \" + text);\n        ilist = JSON.parseObject(text, new TypeReference<List<int[]>>(int[].class){});\n        showMesg(\"ilist : \" + ilist);\n        showMesg(\"ilist1 : \" + Arrays.toString(ilist.get(0)));\n        showMesg(\"ilist2 : \" + Arrays.toString(ilist.get(1)));\n\n        List<float[]> flist = new ArrayList<float[]>();\n        flist.add(new float[]{11.2f,22.3f,33.4f});\n        flist.add(new float[]{33.1f,22.2f,11.3f});\n        text = JSON.toJSONString(flist);\n        showMesg(\"text \" + text);\n        flist = JSON.parseObject(text, new TypeReference<List<float[]>>(float[].class){});\n        showMesg(\"flist : \" + flist);\n        showMesg(\"flist1 : \" + Arrays.toString(flist.get(0)));\n        showMesg(\"flist2 : \" + Arrays.toString(flist.get(1)));\n\n        List<int[][]> iilist = new ArrayList<int[][]>();\n        iilist.add(new int[][] {\n                new int[]{9,6,3},\n                new int[]{8,5,2}\n        });\n        iilist.add(new int[][] {\n                new int[]{7,4,1},\n                new int[]{0}\n        });\n        text = JSON.toJSONString(iilist);\n        showMesg(\"text : \" + text);\n        iilist = JSON.parseObject(text, new TypeReference<List<int[][]>>(int[][].class){});\n        showMesg(\"iilist : \" + iilist);\n        showMesg(\"iilist1 : \" + Arrays.toString(iilist.get(0)[0]));\n        showMesg(\"iilist2 : \" + Arrays.toString(iilist.get(1)[0]));\n\n        showTitle(\"3=====================================\");\n        Map<String, byte[]> sbmap = new HashMap<String, byte[]>();\n        sbmap.put(\"key1\", \"key1\".getBytes());\n        sbmap.put(\"key2\", \"key2\".getBytes());\n        text = JSON.toJSONString(sbmap);\n        showMesg(\"sbmap : \" + text);\n        sbmap = JSON.parseObject(text, new TypeReference<Map<String, byte[]>>(String.class, byte[].class){});\n        showMesg(\"sbmap : \" + sbmap);\n        showMesg(\"sbmap key1 : \" + byteArrayToHexString(sbmap.get(\"key1\")));\n        showMesg(\"sbmap key2 : \" + byteArrayToHexString(sbmap.get(\"key2\")));\n\n        showTitle(\"4=====================================\");\n        Map<String, Byte[]> sbcmap = new HashMap<String, Byte[]>();\n        sbcmap.put(\"key1\", new Byte[]{ 1, 2, 3 });\n        sbcmap.put(\"key2\", new Byte[]{ 3, 2, 1 });\n        text = JSON.toJSONString(sbcmap);\n        showMesg(\"sbcmap json : \" + text);\n        sbcmap = JSON.parseObject(text, new TypeReference<Map<String, Byte[]>>(String.class, Byte[].class){});\n        showMesg(\"sbcmap : \" + sbcmap);\n        showMesg(\"sbcmap key1 : \" + Arrays.toString(sbcmap.get(\"key1\")));\n        showMesg(\"sbcmap key1 : \" + Arrays.toString(sbcmap.get(\"key2\")));\n\n        showTitle(\"5=====================================\");\n        int[] intArray = new int[]{ 11, 22, 33 };\n        text = JSON.toJSONString(intArray);\n        showMesg(\"intArray json : \" + text);\n        intArray = JSON.parseObject(text, int[].class);\n        showMesg(\"intArray : \" + Arrays.toString(intArray));\n\n        showTitle(\"6=====================================\");\n        Map<String, int[]> simap = new HashMap<String, int[]>();\n        simap.put(\"key1\", new int[]{ 11, 22, 33 });\n        simap.put(\"key2\", new int[]{ 33, 22, 11 });\n        text = JSON.toJSONString(simap, SerializerFeature.WriteClassName);\n        showMesg(\"simap json : \" + text);\n        simap = JSON.parseObject(text, new TypeReference<Map<String, int[]>>(String.class, int[].class){});\n        showMesg(\"simap : \" + simap);\n        showMesg(\"simap key1 : \" + Arrays.toString(simap.get(\"key1\")));\n        showMesg(\"simap key1 : \" + Arrays.toString(simap.get(\"key2\")));\n\n        showTitle(\"7=====================================\");\n        Map<String, Integer[]> sicmap = new HashMap<String, Integer[]>();\n        sicmap.put(\"key1\", new Integer[]{ 12, 23, 34 });\n        sicmap.put(\"key2\", new Integer[]{ 34, 23, 12 });\n        text = JSON.toJSONString(sicmap, SerializerFeature.WriteClassName);\n        showMesg(\"sicmap json : \" + text);\n        sicmap = JSON.parseObject(text, new TypeReference<Map<String, Integer[]>>(String.class, Integer[].class){});\n        showMesg(\"sicmap : \" + sicmap);\n        showMesg(\"sicmap key1 : \" + Arrays.toString(sicmap.get(\"key1\")));\n        showMesg(\"sicmap key1 : \" + Arrays.toString(sicmap.get(\"key2\")));\n\n        showTitle(\"8=====================================\");\n        HashMap<byte[], String> bsmap = new HashMap<byte[], String>();\n        bsmap.put(\"testbytearray\".getBytes(), \"testbytearray\");\n        bsmap.put(new byte[] { 0, 1, 2}, \"012\");\n        text = JSON.toJSONString(bsmap);\n        showMesg(\"text : \" + text);\n        bsmap = JSON.parseObject(text, new TypeReference<Map<byte[], String>>(byte[].class, String.class){}.getType());\n        showMesg(\"bsmap : \" + bsmap);\n\n        Iterator<byte[]> it = bsmap.keySet().iterator();\n        int i = 0;\n        while (it.hasNext()) {\n            byte[] bs = it.next();\n            showMesg(\"bsmap key\" + i++ + \" : \" + byteArrayToHexString(bs));\n        }\n\n        Map<String, TestBean[]> stmap = new HashMap<String, TestBean[]>();\n        stmap.put(\"key1\", new TestBean[]{ new TestBean(), new TestBean()});\n        stmap.put(\"key2\", new TestBean[]{ new TestBean(), new TestBean(), new TestBean()});\n        text = JSON.toJSONString(stmap);\n        showMesg(\"stmap json : \" + text);\n        stmap = JSON.parseObject(text, new TypeReference<Map<String, TestBean[]>>(String.class, TestBean[].class){});\n        showMesg(\"stmap : \" + stmap);\n        showMesg(\"key1 : \" + Arrays.toString(stmap.get(\"key1\")));\n        showMesg(\"key2 : \" + Arrays.toString(stmap.get(\"key2\")));\n\n    }\n\n    private void showTitle(String title) {\n        System.out.println(\"test \" + title);\n    }\n\n    private void showMesg(String mesg) {\n        System.out.println(\"  \" + mesg);\n    }\n\n    private static String byteArrayToHexString(byte[] data) {\n        return byteArrayToHexString(data, 0, data.length);\n    }\n\n    private static String byteArrayToHexString(byte[] data, int offest, int len) {\n        if (data == null) {\n            return \"\";\n        }\n\n        StringBuilder sb = new StringBuilder();\n\n        if(offest < 0 || offest > data.length){\n            offest = 0;\n        }\n\n        int total = Math.min(len, data.length);\n\n        int index = offest;\n\n        while (total > 0) {\n            if (total >= 16) {\n                sb.append(String.format(\"%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x \",\n                        data[index], data[index + 1], data[index + 2],\n                        data[index + 3], data[index + 4],\n                        data[index + 5], data[index + 6],\n                        data[index + 7], data[index + 8],\n                        data[index + 9], data[index + 10],\n                        data[index + 11], data[index + 12],\n                        data[index + 13], data[index + 14],\n                        data[index + 15]));\n                index += 16;\n                total -= 16;\n            } else {\n                for (int i = 0; i < total; i++) {\n                    sb.append(String.format(\"%02x \", data[index]));\n                    index++;\n                }\n                total = 0;\n            }\n        }\n\n        return sb.toString();\n    }\n\n    static class TestBean {\n        byte b;\n        byte[] bs = \"bs\".getBytes();\n        int i;\n        int[] is = new int[]{ 753, 159 };\n        String s;\n\n        public byte getB() {\n            return b;\n        }\n\n        public void setB(byte b) {\n            this.b = b;\n        }\n\n        public byte[] getBs() {\n            return bs;\n        }\n\n        public void setBs(byte[] bs) {\n            this.bs = bs;\n        }\n\n        public int getI() {\n            return i;\n        }\n\n        public void setI(int i) {\n            this.i = i;\n        }\n\n        public int[] getIs() {\n            return is;\n        }\n\n        public void setIs(int[] is) {\n            this.is = is;\n        }\n\n        public String getS() {\n            return s;\n        }\n\n        public void setS(String s) {\n            this.s = s;\n        }\n\n        @Override\n        public String toString() {\n            return \"TestBean{\" +\n                    \"b=\" + b +\n                    \", bs=\" + Arrays.toString(bs) +\n                    \", i=\" + i +\n                    \", is=\" + Arrays.toString(is) +\n                    \", s='\" + s + '\\'' +\n                    '}';\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_NonStringKeyMap.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_NonStringKeyMap extends TestCase {\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.bug.Bug_for_NonStringKeyMap.\");\n    }\n\n    public void test_bug() throws Exception {\n        VO vo = new VO();\n        vo.getMap().put(1L, new VAL());\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        \n        JSON.parse(text);\n    }\n    \n    public void test_1() throws Exception {\n        Map<Map<String, String>, String> map = new HashMap<Map<String, String>, String>();\n        Map<String, String> submap = new HashMap<String, String>();\n        submap.put(\"subkey\", \"subvalue\");\n        map.put(submap, \"value\");\n        String jsonString = JSON.toJSONString(map, SerializerFeature.WriteClassName);\n        System.out.println(jsonString);\n        Object object = JSON.parse(jsonString);\n        System.out.println(object.toString());\n    }\n\n    public static class VO {\n\n        private Map<Long, VAL> map = new HashMap<Long, VAL>();\n\n        public Map<Long, VAL> getMap() {\n            return map;\n        }\n\n        public void setMap(Map<Long, VAL> map) {\n            this.map = map;\n        }\n\n    }\n\n    public static class VAL {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_O_I_See_you.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_O_I_See_you extends TestCase {\n\n    public void test_bug() throws Exception {\n        Object[] arra = { \"aa\", \"bb\" };\n\n        Object[] arr = { \"sssss\", arra };\n\n        String s = JSON.toJSONString(arr);\n\n        Object[] ar = JSON.parseObject(s, Object[].class);\n        System.out.println();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_SpitFire.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_SpitFire extends TestCase {\n\n    public void test_for_spitFire() throws Exception {\n        GenericDTO<MyDTO> object = new GenericDTO<MyDTO>();\n        object.setFiled(new MyDTO());\n\n        String text = JSON.toJSONString(object, SerializerFeature.WriteClassName);\n\n        GenericDTO<MyDTO> object2 = (GenericDTO<MyDTO>) JSON.parseObject(text, GenericDTO.class);\n        \n        Assert.assertEquals(object.getName(), object2.getName());\n        Assert.assertEquals(object.getFiled().getId(), object2.getFiled().getId());\n    }\n\n    public static class GenericDTO<T extends AbstractDTO> extends AbstractDTO {\n\n        private String name;\n        private T      filed;\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public T getFiled() {\n            return filed;\n        }\n\n        public void setFiled(T filed) {\n            this.filed = filed;\n        }\n    }\n\n    public abstract static class AbstractDTO {\n\n    }\n\n    public static class MyDTO extends AbstractDTO {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_SpitFire_2.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_SpitFire_2 extends TestCase {\n\n    public void test_for_SpringFire() {\n        Generic<String> q = new Generic<String>();\n        String text = JSON.toJSONString(q, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        JSON.parseObject(text, Generic.class);\n    }\n\n    public static class Generic<T> {\n\n        String header;\n        T      payload;\n\n        public String getHeader() {\n            return header;\n        }\n\n        public void setHeader(String header) {\n            this.header = header;\n        }\n\n        public T getPayload() {\n            return payload;\n        }\n\n        public void setPayload(T payload) {\n            this.payload = payload;\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_SpitFire_3.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_SpitFire_3 extends TestCase {\n\n    public void test_for_SpitFire() {\n        Generic<Payload> q = new Generic<Payload>();\n        q.setHeader(\"Sdfdf\");\n        q.setPayload(new Payload());\n        String text = JSON.toJSONString(q, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        JSON.parseObject(text, Generic.class);\n    }\n\n    public static abstract class AbstractDTO {\n\n        private String test;\n\n        public String getTest() {\n            return test;\n        }\n\n        public void setTest(String test) {\n            this.test = test;\n        }\n    }\n\n    public static class Payload extends AbstractDTO {\n\n    }\n\n    public static class Generic<T extends AbstractDTO> extends AbstractDTO {\n\n        String header;\n        T      payload;\n\n        public String getHeader() {\n            return header;\n        }\n\n        public void setHeader(String header) {\n            this.header = header;\n        }\n\n        public T getPayload() {\n            return payload;\n        }\n\n        public void setPayload(T payload) {\n            this.payload = payload;\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_SpitFire_4.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_SpitFire_4 extends TestCase {\n\n    public void test_for_SpitFire() {\n        Generic<Payload> q = new Generic<Payload>();\n        q.setHeader(new Header());\n        q.setPayload(new Payload());\n        String text = JSON.toJSONString(q, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        Generic<Payload> o = (Generic<Payload>) JSON.parseObject(text, q.getClass());\n        Assert.assertNotNull(o.getPayload());\n    }\n\n    public static abstract class AbstractDTO {\n    }\n\n    public static class Header {\n\n    }\n\n    public static class Payload extends AbstractDTO {\n\n    }\n\n    public static class Generic<T extends AbstractDTO> extends AbstractDTO {\n\n        Header header;\n        T      payload;\n\n        public Header getHeader() {\n            return header;\n        }\n\n        public void setHeader(Header header) {\n            this.header = header;\n        }\n\n        public T getPayload() {\n            return payload;\n        }\n\n        public void setPayload(T payload) {\n            this.payload = payload;\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_SpitFire_5.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_SpitFire_5 extends TestCase {\n\n    public void test_for_SpitFire() {\n        Generic<Payload> q = new Generic<Payload>();\n        q.setHeader(new Header());\n        q.setPayload(new Payload());\n        String text = JSON.toJSONString(q, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        Generic<Payload> o = (Generic<Payload>) JSON.parseObject(text, q.getClass());\n        Assert.assertNotNull(o.getPayload());\n    }\n\n    public static abstract class AbstractDTO {\n    }\n\n    public static class Header {\n\n    }\n\n    public static class Payload extends AbstractDTO {\n\n        private String field;\n\n        public String getField() {\n            return field;\n        }\n\n        public void setField(String field) {\n            this.field = field;\n        }\n    }\n\n    public static class Generic<T extends AbstractDTO> extends AbstractDTO {\n\n        Header header;\n        T      payload;\n\n        public Header getHeader() {\n            return header;\n        }\n\n        public void setHeader(Header header) {\n            this.header = header;\n        }\n\n        public T getPayload() {\n            return payload;\n        }\n\n        public void setPayload(T payload) {\n            this.payload = payload;\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_SpitFire_6.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_SpitFire_6 extends TestCase {\n    protected void setUp() throws Exception {\n        com.alibaba.fastjson.parser.ParserConfig.global.addAccept(\"com.alibaba.json.bvt.bug.Bug_for_SpitFire_6.\");\n    }\n\n    public void test_ref() throws Exception {\n        GenericRS<HotelAvailRS> rs = new GenericRS<HotelAvailRS>();\n        HotelAvailRS availRs = new HotelAvailRS();\n        AvailRoomStayDTO stay = new AvailRoomStayDTO();\n        availRs.getHotelAvailRoomStay().getRoomStays().add(stay);\n        availRs.getHotelAvailRoomStay().getRoomStays().add(stay);\n        availRs.getHotelAvailRoomStay().getRoomStays().add(stay);\n        availRs.getHotelAvailRoomStay().getRoomStays().add(stay);\n        rs.setPayload(availRs);\n\n        String text = JSON.toJSONString(rs, SerializerFeature.WriteClassName, SerializerFeature.PrettyFormat);\n        System.out.println(text);\n        \n        JSON.parseObject(text, GenericRS.class);\n    }\n\n    public static class GenericRS<T> {\n\n        private T payload;\n\n        public T getPayload() {\n            return payload;\n        }\n\n        public void setPayload(T payload) {\n            this.payload = payload;\n        }\n\n    }\n\n    public static class HotelAvailRS {\n\n        private HotelAvailRoomStayDTO hotelAvailRoomStay = new HotelAvailRoomStayDTO();\n\n        public HotelAvailRoomStayDTO getHotelAvailRoomStay() {\n            return hotelAvailRoomStay;\n        }\n\n        public void setHotelAvailRoomStay(HotelAvailRoomStayDTO hotelAvailRoomStay) {\n            this.hotelAvailRoomStay = hotelAvailRoomStay;\n        }\n\n    }\n\n    public static class HotelAvailRoomStayDTO {\n\n        private List<AvailRoomStayDTO> roomStays = new ArrayList<AvailRoomStayDTO>();\n\n        public List<AvailRoomStayDTO> getRoomStays() {\n            return roomStays;\n        }\n\n        public void setRoomStays(List<AvailRoomStayDTO> roomStays) {\n            this.roomStays = roomStays;\n        }\n\n    }\n\n    public static class AvailRoomStayDTO {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_agapple.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.Properties;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_agapple extends TestCase {\n\n    public void test_for_agapple() throws Exception {\n        Entity entity = new Entity();\n        entity.setProperties(new Properties());\n        String text = JSON.toJSONString(entity);\n        \n        JSON.parseObject(text, Entity.class);\n    }\n\n    private static class Entity {\n\n        private Properties properties;\n\n        public Properties getProperties() {\n            return properties;\n        }\n\n        public void setProperties(Properties properties) {\n            this.properties = properties;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_agapple_2.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\npublic class Bug_for_agapple_2 extends TestCase {\n\n    public void test_bug() throws Exception {\n        DbMediaSource obj = new DbMediaSource();\n        obj.setType(DataMediaType.ORACLE);\n        \n        JSONObject json = (JSONObject) JSON.toJSON(obj);\n        Assert.assertEquals(\"ORACLE\", json.get(\"type\"));\n    }\n\n    public static class DbMediaSource {\n\n        private DataMediaType type;\n\n        public DataMediaType getType() {\n            return type;\n        }\n\n        public void setType(DataMediaType type) {\n            this.type = type;\n        }\n\n    }\n\n    public static enum DataMediaType {\n        ORACLE, MYSQL\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_akvadrako.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\n\npublic class Bug_for_akvadrako extends TestCase {\n\n    public void testNakedFields() throws Exception {\n        Naked naked = new Naked();\n        DefaultJSONParser parser = new DefaultJSONParser(\"{ \\\"field\\\": 3 }\");\n        parser.parseObject(naked);\n    }\n\n    public static class Naked {\n\n        public int field;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_alibank.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\n\npublic class Bug_for_alibank extends TestCase {\n    public void test_bug() throws Exception {\n        String jsonStrz = \"{addContact:[{\\\"address\\\":\\\"=\\\\\\\\\\\\\\\\\\\\\\'\\'\\\\&quot;);|]*{%0d%0a&lt;%00\\\"}]}\";\n        System.out.println(jsonStrz);\n        Object o = JSON.parseObject(jsonStrz.replaceAll(\"\\\\\\\\\", \"\"));\n        System.out.println(JSON.toJSONString(o));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_apollo0317.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_apollo0317 extends TestCase {\n\n    public void test_for_apollo0317() throws Exception {\n        String text = \"广州市白云区优网通信线缆厂是一家集专业设计、生产、销售、电工解决方案提供为一体的中型企业，旗下主打品牌(简称:普禄克Pluke）；公厂拥有自己的研发团队，自主研发改造的高性能电缆生产流水线使产品的性价比大幅度提升，在技术上处于行业领先。\\r\\n　　普禄克Pluke销售服务网络覆盖全国各省市以及南美、东南亚等地区。产品广范应用在军队通信网，政府网，企业网，电信网，电力网，煤炭网，水利网，广电网，校园网 电梯设备、机电设备、汽车、电子、等行业，其中超五类六类网络线缆，彩色网络跳线，设备连接及控制传输电缆，电器连接线多年来获得客户的高度肯定。?普禄克PLUKE在不断创新中为客户创造价值，在工厂战略的指导下，凭借在售前咨询，系统设计，产品采购，工程施工等方面的综合优势和我们多面的工程服务经验，可以根据客户的要求，提供切实可行的技术方案及系统产品。\\r\\n 工厂未来将着力于商业模式的创新转换，为合作伙伴提供一个共同成长、双赢的、持续发展的商业平台。\\r\\n 我们企业的宗旨是：销售最好的产品、追求最佳的售后服务、推广最新的办公理念！\";\n\n        VO vo = new VO();\n        vo.setBrandintroduction(text);\n        \n        Object[] array = new Object[] {vo, vo, vo};\n        \n        String json = JSON.toJSONString(vo, SerializerFeature.DisableCircularReferenceDetect);\n        System.out.println(json);\n    }\n\n    public static class VO {\n\n        private String brandintroduction;\n\n        public String getBrandintroduction() {\n            return brandintroduction;\n        }\n\n        public void setBrandintroduction(String brandintroduction) {\n            this.brandintroduction = brandintroduction;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_array.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_array extends TestCase {\n\tpublic void test_array() throws Exception {\n\t\tA[] array = new A[] { new B(123, \"xxx\") };\n\t\t\n\t\tString text = JSON.toJSONString(array);\n\t\tSystem.out.println(text);\n\t\tAssert.assertEquals(\"[{\\\"id\\\":123,\\\"name\\\":\\\"xxx\\\"}]\", text);\n\t}\n\n\tpublic static class A {\n\t\tprivate int id;\n\n\t\tpublic int getId() {\n\t\t\treturn id;\n\t\t}\n\n\t\tpublic void setId(int id) {\n\t\t\tthis.id = id;\n\t\t}\n\n\t}\n\n\tpublic static class B extends A {\n\t\tprivate String name;\n\t\t\n\t\tpublic B() {\n\t\t\t\n\t\t}\n\t\t\n\t\tpublic B  (int id, String name) {\n\t\t\tsetId(id);\n\t\t\tsetName(name);\n\t\t}\n\n\t\tpublic String getName() {\n\t\t\treturn name;\n\t\t}\n\n\t\tpublic void setName(String name) {\n\t\t\tthis.name = name;\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_ascii_0_31.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_ascii_0_31 extends TestCase {\n\n    public void test_0() throws Exception {\n        for (int i = 0; i < 32; ++i) {\n            StringBuilder buf = new StringBuilder();\n            char ch = (char) i;\n            buf.append(ch);\n\n            String text = JSON.toJSONString(buf.toString(), SerializerFeature.BrowserCompatible);\n\n            switch (ch) {\n                case '\"':\n                    Assert.assertEquals(\"\\\"\\\\\\\"\\\"\", text);\n                    break;\n                case '/':\n                    Assert.assertEquals(\"\\\"\\\\/\\\"\", text);\n                    break;\n                case '\\\\':\n                    Assert.assertEquals(\"\\\"\\\\\\\\\\\"\", text);\n                    break;\n                case '\\b':\n                    Assert.assertEquals(\"\\\"\\\\b\\\"\", text);\n                    break;\n                case '\\f':\n                    Assert.assertEquals(\"\\\"\\\\f\\\"\", text);\n                    break;\n                case '\\n':\n                    Assert.assertEquals(\"\\\"\\\\n\\\"\", text);\n                    break;\n                case '\\r':\n                    Assert.assertEquals(\"\\\"\\\\r\\\"\", text);\n                    break;\n                case '\\t':\n                    Assert.assertEquals(\"\\\"\\\\t\\\"\", text);\n                    break;\n                default:\n                    if (i < 16) {\n                        Assert.assertEquals(\"\\\"\\\\u000\" + Integer.toHexString(i).toUpperCase() + \"\\\"\", text);\n                    } else {\n                        Assert.assertEquals(\"\\\"\\\\u00\" + Integer.toHexString(i).toUpperCase() + \"\\\"\", text);\n                    }\n                    break;\n            }\n\n            VO vo = new VO();\n            vo.setContent(buf.toString());\n\n            String voText = JSON.toJSONString(vo, SerializerFeature.BrowserCompatible);\n\n            switch (ch) {\n                case '\"':\n                    Assert.assertEquals(\"{\\\"content\\\":\\\"\\\\\\\"\\\"}\", voText);\n                    break;\n                case '/':\n                    Assert.assertEquals(\"{\\\"content\\\":\\\"\\\\/\\\"}\", voText);\n                    break;\n                case '\\\\':\n                    Assert.assertEquals(\"{\\\"content\\\":\\\"\\\\\\\\\\\"}\", voText);\n                    break;\n                case '\\b':\n                    Assert.assertEquals(\"{\\\"content\\\":\\\"\\\\b\\\"}\", voText);\n                    break;\n                case '\\f':\n                    Assert.assertEquals(\"{\\\"content\\\":\\\"\\\\f\\\"}\", voText);\n                    break;\n                case '\\n':\n                    Assert.assertEquals(\"{\\\"content\\\":\\\"\\\\n\\\"}\", voText);\n                    break;\n                case '\\r':\n                    Assert.assertEquals(\"{\\\"content\\\":\\\"\\\\r\\\"}\", voText);\n                    break;\n                case '\\t':\n                    Assert.assertEquals(\"{\\\"content\\\":\\\"\\\\t\\\"}\", voText);\n                    break;\n                default:\n                    if (i < 16) {\n                        Assert.assertEquals(\"{\\\"content\\\":\\\"\\\\u000\" + Integer.toHexString(i).toUpperCase() + \"\\\"}\",\n                                            voText);\n                    } else {\n                        Assert.assertEquals(\"{\\\"content\\\":\\\"\\\\u00\" + Integer.toHexString(i).toUpperCase() + \"\\\"}\",\n                                            voText);\n                    }\n                    break;\n            }\n        }\n\n    }\n\n    public static class VO {\n\n        private String content;\n\n        public String getContent() {\n            return content;\n        }\n\n        public void setContent(String content) {\n            this.content = content;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_bbl.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_bbl extends TestCase {\n\n    public void test_bug() throws Exception {\n        Map<Object, Object> params = new HashMap<Object, Object>();\n        params.put(\"msg\",\n\n                   \"<img class=\\\"em\\\" src=\\\"http://ab.com/12/33.jpg\\\" />\");\n        params.put(\"uid\", \"22034343\");\n\n        String s001 = JSON.toJSONString(params, SerializerFeature.BrowserCompatible);\n\n        System.out.println(s001);\n        \n        Map<Object, Object> params2 = (Map<Object, Object>) JSON.parse(s001);\n        Assert.assertEquals(params.size(), params2.size());\n        Assert.assertEquals(params.get(\"uid\"), params2.get(\"uid\"));\n        \n        Assert.assertEquals(params.get(\"msg\"), params2.get(\"msg\"));\n        Assert.assertEquals(params, params2);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_booleanField.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic class Bug_for_booleanField extends TestCase {\n\n    public void test_boolean() throws Exception {\n        Assert.assertEquals(\"{\\\"is-abc\\\":false}\", JSON.toJSONString(new BooleanJson()));\n        Assert.assertTrue(JSON.parseObject(\"{\\\"is-abc\\\":true}\", BooleanJson.class).isAbc());\n    }\n\n    public static class BooleanJson {\n\n        @JSONField(name = \"is-abc\")\n        private boolean isAbc;\n\n        public boolean isAbc() {\n            return isAbc;\n        }\n        \n        public void setAbc(boolean value) {\n            this.isAbc = value;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_builder.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_builder extends TestCase {\n\n    public void test_for_longBuilderMethod() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"id\\\":123}\", VO.class);\n    }\n\n    public static class VO {\n\n        private long id;\n\n        public long getId() {\n            return id;\n        }\n\n        public VO setId(long id) {\n            this.id = id;\n            return this;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_cduym.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_cduym extends TestCase {\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.bug.Bug_for_cduym\");\n    }\n\n    @SuppressWarnings(\"rawtypes\")\n    public void test0() {\n\n        List<A> as = new ArrayList<A>();\n\n        A a1 = new A();\n        a1.setA(1000);\n        a1.setB(2000l);\n        a1.setC(\"xxx\");\n\n        as.add(a1);\n        as.add(a1);\n\n        String text = JSON.toJSONString(as, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        List<?> target = (List) JSON.parseObject(text, Object.class);\n        \n        Assert.assertSame(target.get(0), target.get(1));\n    }\n    \n    public void test1() {\n        \n        List<A> as = new ArrayList<A>();\n        \n        A a1 = new A();\n        a1.setA(1000);\n        a1.setB(2000l);\n        a1.setC(\"xxx\");\n        \n        as.add(a1);\n        as.add(a1);\n        \n        Demo o = new Demo();\n        o.setAs(as);\n        \n        String text = JSON.toJSONString(o, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        Demo target = (Demo) JSON.parseObject(text, Object.class);\n        \n        Assert.assertSame(((List)target.getAs()).get(0), ((List)target.getAs()).get(1));\n    }\n    \n\n    public static class Demo {\n\n        private Object as;\n\n        public Object getAs() {\n            return as;\n        }\n\n        public void setAs(Object as) {\n            this.as = as;\n        }\n\n    }\n\n    private static class A {\n\n        private Integer a;\n        private Long    b;\n\n        private String  c;\n\n        public Integer getA() {\n            return a;\n        }\n\n        public void setA(Integer a) {\n            this.a = a;\n        }\n\n        public Long getB() {\n            return b;\n        }\n\n        public void setB(Long b) {\n            this.b = b;\n        }\n\n        public String getC() {\n            return c;\n        }\n\n        public void setC(String c) {\n            this.c = c;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_chengchao.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.concurrent.TimeUnit;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_chengchao extends TestCase {\n\n    public void test_0() throws Exception {\n        SerializerFeature[] features = { SerializerFeature.WriteMapNullValue,\n\n        SerializerFeature.WriteEnumUsingToString, SerializerFeature.SortField };\n\n        Entity entity = new Entity();\n        JSON.toJSONString(entity, features);\n    }\n\n    private static class Entity {\n\n        private TimeUnit unit;\n\n        public TimeUnit getUnit() {\n            return unit;\n        }\n\n        public void setUnit(TimeUnit unit) {\n            this.unit = unit;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_chengchao_1.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport junit.framework.TestCase;\n\npublic class Bug_for_chengchao_1 extends TestCase {\n    public void test_0() throws Exception {\n        ParserConfig config = new ParserConfig();\n        config.setAutoTypeSupport(true);\n        String str = \"{\\\"@type\\\":\\\"test.MapDone\\\",\\\"data\\\":{\\\"@type\\\":\\\"test.HiluxDataByOpsmeta\\\",\\\"attends\\\":{\\\"@type\\\":\\\"java.util.HashMap\\\",\\\"center.na61\\\":2},\\\"datasByOpsmeta\\\":{\\\"@type\\\":\\\"java.util.HashMap\\\",{\\\"@type\\\":\\\"test.AppInst\\\",\\\"app\\\":\\\"wdkhummer\\\",\\\"appGroup\\\":\\\"wdkhummerhost\\\",\\\"env\\\":\\\"PUBLISH\\\",\\\"hostname\\\":\\\"wdkhummer011009059229.na61\\\",\\\"idc\\\":\\\"na61\\\",\\\"ip\\\":\\\"11.9.59.229\\\",\\\"online\\\":true}:{\\\"@type\\\":\\\"test.MiddlewareDimData\\\",\\\"attends\\\":{\\\"@type\\\":\\\"java.util.HashMap\\\"},\\\"expectAttends\\\":{\\\"@type\\\":\\\"java.util.HashMap\\\"},\\\"logLineCount\\\":0,\\\"values\\\":{}}}}}\";\n        JSON.parse(str, config, JSON.DEFAULT_PARSER_FEATURE);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_chengyi.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport junit.framework.TestCase;\n\nimport java.io.Serializable;\nimport java.util.ArrayList;\nimport java.util.List;\n\n\npublic class Bug_for_chengyi extends TestCase {\n    public void test_0() throws Exception {\n        List<Pair<String, Integer>> pairList = new ArrayList();\n        Pair<String, Integer> pair = Pair.of(\"cy\", 1);\n        pairList.add(pair);\n\n        final String s = JSON.toJSONString(pairList);\n        final List<Pair> pairs = JSONArray.parseArray(s, Pair.class);\n        System.out.println();\n    }\n\n    public static class Pair<A, B> implements Serializable {\n\n        private static final long serialVersionUID = -2140946024027818984L;\n\n        public final A fst;\n        public final B snd;\n\n        public Pair() {\n            fst = null;\n            snd = null;\n        }\n\n        @JSONCreator\n        public Pair(A fst, B snd) {\n            this.fst = fst;\n            this.snd = snd;\n        }\n\n        @Override\n        public String toString() {\n            return \"[\" + fst + \",\" + snd + \"]\";\n        }\n\n        private boolean equals(Object x, Object y) {\n            return (x == null && y == null) || (x != null && x.equals(y));\n        }\n\n        @SuppressWarnings(\"rawtypes\")\n        @Override\n        public boolean equals(Object other) {\n            return other instanceof Pair && equals(fst, ((Pair) other).fst)\n                    && equals(snd, ((Pair) other).snd);\n        }\n\n        /**\n         * 覆盖hashCode方法\n         *\n         * @return hashCode\n         */\n        @Override\n        public int hashCode() {\n            if (fst == null) {\n                return (snd == null) ? 0 : snd.hashCode() + 1;\n            } else if (snd == null) {\n                return fst.hashCode() + 2;\n            } else {\n                return fst.hashCode() * 17 + snd.hashCode();\n            }\n        }\n\n        public static <A, B> Pair<A, B> of(A a, B b) {\n            return new Pair<A, B>(a, b);\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_cnhans.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.Calendar;\nimport java.util.Date;\nimport java.util.GregorianCalendar;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_cnhans extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_0() throws Exception {\n        VO vo = new VO();\n        vo.setCalendar(Calendar.getInstance());\n\n        String text = JSON.toJSONString(vo);\n\n        VO vo1 = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(vo.getCalendar().getTime(), vo1.getCalendar().getTime());\n    }\n    \n    public void test_format() throws Exception {\n        VO vo = new VO();\n        vo.setCalendar(Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale));\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.WriteDateUseDateFormat);\n        \n        VO vo1 = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(vo.getCalendar().get(Calendar.YEAR), vo1.getCalendar().get(Calendar.YEAR));\n        Assert.assertEquals(vo.getCalendar().get(Calendar.MONTH), vo1.getCalendar().get(Calendar.MONTH));\n        Assert.assertEquals(vo.getCalendar().get(Calendar.DAY_OF_MONTH), vo1.getCalendar().get(Calendar.DAY_OF_MONTH));\n        Assert.assertEquals(vo.getCalendar().get(Calendar.HOUR_OF_DAY), vo1.getCalendar().get(Calendar.HOUR_OF_DAY));\n        Assert.assertEquals(vo.getCalendar().get(Calendar.MINUTE), vo1.getCalendar().get(Calendar.MINUTE));\n        Assert.assertEquals(vo.getCalendar().get(Calendar.SECOND), vo1.getCalendar().get(Calendar.SECOND));\n    }\n    \n    public void test_iso_format() throws Exception {\n        VO vo = new VO();\n        vo.setCalendar(Calendar.getInstance());\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.UseISO8601DateFormat);\n        \n        VO vo1 = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(vo.getCalendar().get(Calendar.YEAR), vo1.getCalendar().get(Calendar.YEAR));\n        Assert.assertEquals(vo.getCalendar().get(Calendar.MONTH), vo1.getCalendar().get(Calendar.MONTH));\n        Assert.assertEquals(vo.getCalendar().get(Calendar.DAY_OF_MONTH), vo1.getCalendar().get(Calendar.DAY_OF_MONTH));\n        Assert.assertEquals(vo.getCalendar().get(Calendar.HOUR_OF_DAY), vo1.getCalendar().get(Calendar.HOUR_OF_DAY));\n        Assert.assertEquals(vo.getCalendar().get(Calendar.MINUTE), vo1.getCalendar().get(Calendar.MINUTE));\n        Assert.assertEquals(vo.getCalendar().get(Calendar.SECOND), vo1.getCalendar().get(Calendar.SECOND));\n    }\n    \n    public void test_toJavaObject() throws Exception {\n        JSONObject obj = new JSONObject();\n        obj.put(\"d1\", new Date());\n        obj.put(\"d2\", System.currentTimeMillis());\n        obj.put(\"d3\", GregorianCalendar.getInstance());\n        obj.put(\"d4\", \"2012-12-22\");\n        obj.put(\"d5\", \"2012-12-22 12:11:11\");\n        obj.put(\"d6\", \"2012-12-22 12:11:11.234\");\n        \n        obj.getObject(\"d1\", Calendar.class);\n        obj.getObject(\"d2\", Calendar.class);\n        obj.getObject(\"d3\", Calendar.class);\n        obj.getObject(\"d4\", Calendar.class);\n        obj.getObject(\"d5\", Calendar.class);\n        obj.getObject(\"d6\", Calendar.class);\n\n        obj.getObject(\"d1\", GregorianCalendar.class);\n        obj.getObject(\"d2\", GregorianCalendar.class);\n        obj.getObject(\"d3\", GregorianCalendar.class);\n        obj.getObject(\"d4\", GregorianCalendar.class);\n        obj.getObject(\"d5\", GregorianCalendar.class);\n        obj.getObject(\"d6\", GregorianCalendar.class);\n    }\n\n    public static class VO {\n\n        private Calendar calendar;\n\n        public Calendar getCalendar() {\n            return calendar;\n        }\n\n        public void setCalendar(Calendar calendar) {\n            this.calendar = calendar;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_dargoner.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.json.bvtVO.DataTransaction;\n\n\npublic class Bug_for_dargoner extends TestCase {\n    public void test_0 () throws Exception {\n        DataTransaction dt = new DataTransaction();\n\n        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();\n\n        Map<String, Object> m = new HashMap<String, Object>();\n        m.put(\"name\", \"tom\");\n        m.put(\"sex\", \"m\");\n        list.add(m);\n\n        dt.setDataSet(\"1000\", list);\n        dt.setRetMsgCode(\"1\", \"ok\");\n        dt.getHead().setAppid(\"back\");\n        dt.getHead().setSeqno(\"201010\");\n        dt.getHead().getUser().setId(\"root\");\n\n        Map<String, String> m2 = new HashMap<String, String>();\n        m2.put(\"name1\", \"tom\");\n        m2.put(\"name2\", \"tom\");\n        m2.put(\"name3\", \"tom\");\n\n        dt.getBody().getParam().setForm(m2);\n\n        System.out.println(dt.toJSON());\n\n        DataTransaction dt2 = DataTransaction.fromJSON(dt.toJSON());\n        System.out.println(dt2.toJSON());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_divde_zero.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\n\npublic class Bug_for_divde_zero extends TestCase {\n    public void test_divideZero() throws Exception {\n        Double d = 1.0D / 0.0D;\n        String text = JSON.toJSONString(d);\n        System.out.println(text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_dongqi.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\n\npublic class Bug_for_dongqi extends TestCase {\n    public void test_bug() throws Exception {\n        Map<String, Object> obj = new HashMap<String,Object>();\n        obj.put(\"value\", \"；\\r\\n3、 公\");\n        System.out.print(JSON.toJSONString(obj));\n        Assert.assertEquals(\"{\\\"value\\\":\\\"；\\\\r\\\\n3、\\\\u009E 公\\\"}\", JSON.toJSONString(obj));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_dragoon.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_dragoon extends TestCase {\n    public void test_for_dragoon() throws Exception {\n        String text = \"[{\\\"S\\\":93803,\\\"T\\\":\\\"HSMonitorData\\\"},{\\\"D\\\":\\\"H4sIAAAAAAAAAO1b3W8bxxF/7n9xvRqFipKX+ySPBARYkdVGqS2pEu0UJQVhebckzzzeXu9DNqPqIQECpCiaBG0fWthNH2oDRT8egqKI4LTxP2Pazn+R2d078sQvW7KdWMFakMib2f3N7M7szNzduHkkozDcSgdyXfaS9KD37gHyw4MExX25JDvE97GTXEEJluuaYZo1Q63o1ZphAy/CQJ5i2bah5ayGN8DXPN+PZ/g4SCIPA/1IXidpkMh1vSRfRXHS6EXk1hSkVjOsAvcajmPUhQHyRhSRSBqQwEvg0yddRWpGOCRRsumuchUOSOTiqCRFqY/XSdDxuqsOGSjI99qojZRsruIwlrI7HnXZcNp6260ZTTrzZ3i4Sj8VhvZGGtzCuI8D941aWbNLMNn1Eo8E8erR+Ltyi0R9Fw2XiQvJTaJc47T1fOLlKmo7mqtWStIErEfS6OxIlqlZbcN1i0gDL0gTHJ8DzHGNmmu2j0vIyRbLvyi3UNClv8+LucamXXYdDWsOLkkZDB4gzz8jhmE4HaRX1WNqhASAcAR6HZcY1lUvTlab+6UBaXs+zq9ybfNratfn84lL9Otls63ZGjKa+UZqailIB20cbXeov8erFmBi5PMLteTFMDuBwXi1g/wYgz7cgVd/2dgefXhn9MWD0f/eH52cfF9qBU+//MPog/v1o5YcwRKifkuut2Q37rTkUkt2UNQlW2iAM6rLyQlJkL/FVACGYQCJrn6LsGGabphWhQ2MwWPZGIBHrhuBGnARpL4PzCDH/eqffxp9+fmTB//hMskgRMFwLPXRyb9Hd/6/9sMbj+/+5qs/fzL64F+jj0/YyDAih17g8GGjzz57dHL3yd33OIiXDDn57+89/u/no5P3M2w4+Zzx9Hd/e/zhJzmDG2yiW0jiZJ24RUqPBFySalWr5YplWHSZZTYdDLmTKZPNasm6bVZz5jqoU2DUzDGDKVRk2S35GHjtNPYC2K4tnNBjzbY21wQNG8Mw04UBQRwC1/KczSuMuHZVtVX4Z9hVCgcDvCBOIwTa7USeU1jUmH4D+WmBTpIejqbGhsjpgw/t4ehwCX1qEvOUG8RPmTFVRc1p72Cv20uApnEaaBHTMDo1H7boerYqA6JyTTWzFXUHYJ/BwGMQNGzrFdXUYdG5gCmgCDvYO5z1RfDRmH4p+mNOmPbEnD7td0/vP5z1u3v/GH301zl+N/r43qMH92b8Lj82JniVxqUsdMHJ3sw6XVW35ztdVa8tcrqqoXGnG2B6pMfOtf6LRr7eAaHBbyKbHuy9BEUJjTmnyRuBe5qYe+c6387MnBCKQCjEn4d/HN35lBplMzgkfVxEBd1UTVdtDbKKpeqabWs/pq7NtOLD12GXstFVIMLsJI25kbMFWiqNT1kKZ6CZq0rXA3QIYQu1qQXo+ncx+GAQYwrQPHpRNExrhQMn32aYyfTm5EEBoZckoeSx5UgekdiAutSDlUGoV3RVgfUrFUvCtx0cUjvUH//290+++MvTh58+/ug+B81ZLwXweP94X/q1hAgK+WQpZjshrPSaWQnK5Ws46REXSlOXXCVdIMB2OP1GhBxar7YCo6KptmmqptSkZiqrdlkzJc2CParr2r5UliSp6YWrULDiDvxNEfyJPXd1vxVI0sbu7vau5CiTGiUrnXg19BYKXB9HzVNXyk3Y4nqlSrFFvSzqZVEvi3pZ1MuiXhb1sqiXv7OVGFRLxQyF/FBBLgoh2ynEwQgKJt/bDnGwtrO5MUYRFfZrb9dW8D2USItMG/M1K9vUxGucmO3D5iD0lS5OdqHQeJO4w5VFY1i1XDV+JDULyGUI84pa3tta29l7a7sBg6L6adL+i2nGa+/lSmn2ebWK00CB2wn6HF/5KQ5wBLJcfqey5jhgchJppqpw06xcD/oBuRVIe1BCOxhEBqgeoDlQV7CPuwgqte5pLKZyBrZ0DFuWbnERYHpFPdCtTBDlKT6UnWNxHCAHzq4YhFWrzsUgUVeJwwiEdyLIgrQSURAJlTgNabJW1kh4PfH8OMN8m3hBCL/JdSheurtcLLjhyngck2aoVFrMdqcDInAmo6wrFsjf21hXdWaLwvUzFJpc5VIPMV8gDScOYuX+lJIrS4Zm/qJ/K3pCvnUwdp+tn1k7r37FY+ZGqEuoWJRExM8wlCucmkuG00JjCtyk5H65iM9VU6lqGXIZpMEtDqhVUWym0Pg0fDP7VNVenR3fdvtXhlA6eg44OdRjt4f5Ds3h8POqmudV5xKDsew83C2NNNOhtO29y58mjIPpxu3kalacxduUMxtRZ4asLJ3EFsiOTSbxpYZYwxIhVoRYEWJFiH3lIba2MP69opjLtT9r0C2s2TpP1J2nb36/Ho91HosuhPpLhuKSzaBBH9zwx6kr84Zx3UzNOIdy8zwjmcgbh8iCDg0MMmEHFXwbOylkyHk87rG6/TJO9tk2bWJfZsQ3h+xj012ydUZNfVXZ1BDZVGRTkU1FNn3V2bSiLgx8Z8qmAUm8zpBFWMiovez17DqDZoANFPfzt7bZohZw+bnOUX2012-08-14 15:51:13+Yp4HMnz9Pq5XlgzQ+3GGOP0YsBPk9SS4bwp2nVl6FnTDqJgvAExelhN0W+wmVvMGXgPERpsDJF4km8QrWA+bSxNQNhOpw6ICyKpxA76dtMJ40iHECG7oEV3B1C/Bzy0jvgi5gJo2ZZmR2R3UvalcXJ4kxiFoqoqfYz8hGfWQDJWgIq+sxEuSTT9ydyXT7z43P5uCTTZ7n0fRPMPxyUf4XKTlDWTK2sVVWlFydK+6aj9DsOBXYdJcAJyPMCmMOajycXG7fPhBDC6MkTZBgKxOyl9GaCB5uuXK9UtZptnSLThVLWhMr9l4umtRZEC6aDZtXKtQqAhh5t7dA1XacisiPSQF0gqoa68ZOf0+YOVVUrVfsHGmzIBeis1o25ndVcSvYypE3coRThOPUT8UbkNXsjUuw54kZb1HRk1IwXbDqiP/GidxjN5S8vakyOcKsL4lbPkwqe8VJLJIQLmRCotDkJIUS0BAcLS5nr0nYwyYslPAiTYTEK0S4KqA8S5PfjxQ2Q1RdtgFT4XY6SiSpGollSViqZFH/5ShY5/qTJbYFU4e4X0t2fp/5hHhOLJkPRZCiaDEWT4TfdZCj+68cFqJcvzG2YOnMbJrKbyG4iu4ns9m210ItG7e9gPhSN2qJRW/Q9iL4H0fdwcfseRKO2CLEixIoQK0KsaNQWjdqiUVs0aotsKrKpyKavbTYVjdqiUVs0aotG7TM3Ku1/DWGrUgYEWwAA\\\"}]\";\n        JSON.parse(text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_dragoon26.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_dragoon26 extends TestCase {\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.bug.Bug_for_dragoon26\");\n    }\n\n    public void test_0() throws Exception {\n        MonitorConfigMessage message = new MonitorConfigMessage();\n        MonitorConfig config = new MonitorConfig();\n        message.setContent(config);\n\n        AlarmReceiver receiver1 = new AlarmReceiver(2001L);\n        AlarmReceiver receiver2 = new AlarmReceiver(2002L);\n        AlarmReceiver receiver3 = new AlarmReceiver(2003L);\n\n        ArrayList<MonitorItem> items = new ArrayList<MonitorItem>();\n        {\n            MonitorItem item1 = new MonitorItem();\n            item1.setId(1001L);\n\n            MonitorItemAlarmRule rule = new MonitorItemAlarmRule();\n\n            rule.getAlarmReceivers().add(receiver1);\n            rule.getAlarmReceivers().add(receiver2);\n\n            item1.getRules().add(rule);\n            items.add(item1);\n        }\n\n        {\n\n            MonitorItem item = new MonitorItem();\n            item.setId(1002L);\n\n            MonitorItemAlarmRule rule = new MonitorItemAlarmRule();\n\n            rule.getAlarmReceivers().add(receiver1);\n            rule.getAlarmReceivers().add(receiver3);\n\n            item.getRules().add(rule);\n            items.add(item);\n        }\n        {\n            \n            MonitorItem item = new MonitorItem();\n            item.setId(1003L);\n            \n            MonitorItemAlarmRule rule = new MonitorItemAlarmRule();\n            \n            rule.getAlarmReceivers().add(receiver2);\n            rule.getAlarmReceivers().add(receiver3);\n            \n            item.getRules().add(rule);\n            items.add(item);\n        }\n\n        config.setMonitorItems(items);\n\n        String text = JSON.toJSONString(message, SerializerFeature.WriteClassName);\n        System.out.println(JSON.toJSONString(message, SerializerFeature.WriteClassName, SerializerFeature.PrettyFormat));\n\n        MonitorConfigMessage message2 = (MonitorConfigMessage) JSON.parse(text);\n        System.out.println(JSON.toJSONString(message2, SerializerFeature.WriteClassName, SerializerFeature.PrettyFormat));\n    }\n\n    public static class MonitorConfigMessage {\n\n        private Object content;\n\n        public Object getContent() {\n            return content;\n        }\n\n        public void setContent(Object content) {\n            this.content = content;\n        }\n\n    }\n\n    public static class MonitorConfig {\n\n        private Map<Long, MonitorItem> monitorItems = new HashMap<Long, MonitorItem>();\n\n        @JSONField(name = \"MonitorItems\")\n        public Collection<MonitorItem> getMonitorItems() {\n            return monitorItems.values();\n        }\n\n        @JSONField(name = \"MonitorItems\")\n        public void setMonitorItems(Collection<MonitorItem> items) {\n            for (MonitorItem item : items) {\n                this.monitorItems.put(item.getId(), item);\n            }\n        }\n    }\n\n    public static class MonitorItem extends MonitorItemBase<MonitorItemAlarmRule> {\n\n    }\n\n    public static class MonitorItemBase <K extends AlarmRuleBase> {\n\n        private Long                       id;\n        private List<K> rules = new ArrayList<K>();\n\n        @JSONField(name = \"mid\")\n        public Long getId() {\n            return id;\n        }\n\n        @JSONField(name = \"mid\")\n        public void setId(Long id) {\n            this.id = id;\n        }\n\n        public List<K> getRules() {\n            return rules;\n        }\n\n        public void setRules(List<K> rules) {\n            this.rules = rules;\n        }\n\n    }\n    \n    public static class AlarmRuleBase {\n        \n    }\n\n    public static class MonitorItemAlarmRule extends AlarmRuleBase {\n\n        private List<AlarmReceiver> alarmReceivers = new ArrayList<AlarmReceiver>();\n\n        public List<AlarmReceiver> getAlarmReceivers() {\n            return alarmReceivers;\n        }\n\n        public void setAlarmReceivers(List<AlarmReceiver> alarmReceivers) {\n            this.alarmReceivers = alarmReceivers;\n        }\n\n    }\n\n    public static class AlarmReceiver {\n\n        private Long id;\n\n        public AlarmReceiver(){\n\n        }\n\n        public AlarmReceiver(Long id){\n            this.id = id;\n        }\n\n        public Long getId() {\n            return id;\n        }\n\n        public void setId(Long id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_dragoon26_1.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_dragoon26_1 extends TestCase {\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.bug.Bug_for_dragoon26_1\");\n    }\n\n    public void test_0() throws Exception {\n\n        List<MonitorItemAlarmRule> rules = new ArrayList<MonitorItemAlarmRule>();\n\n        AlarmReceiver receiver1 = new AlarmReceiver(1L);\n\n        {\n            MonitorItemAlarmRule rule = new MonitorItemAlarmRule();\n\n            rule.getAlarmReceivers().add(receiver1);\n            rules.add(rule);\n        }\n        {\n            MonitorItemAlarmRule rule = new MonitorItemAlarmRule();\n\n            rule.getAlarmReceivers().add(receiver1);\n            rules.add(rule);\n        }\n\n        String text = JSON.toJSONString(rules, SerializerFeature.WriteClassName);\n        System.out.println(JSON.toJSONString(rules, SerializerFeature.WriteClassName, SerializerFeature.PrettyFormat));\n\n        List<MonitorItemAlarmRule> message2 = (List<MonitorItemAlarmRule>) JSON.parse(text);\n        System.out.println(JSON.toJSONString(message2, SerializerFeature.WriteClassName, SerializerFeature.PrettyFormat));\n    }\n\n    public static class MonitorItemAlarmRule {\n\n        private List<AlarmReceiver> alarmReceivers = new ArrayList<AlarmReceiver>();\n\n        public List<AlarmReceiver> getAlarmReceivers() {\n            return alarmReceivers;\n        }\n\n        public void setAlarmReceivers(List<AlarmReceiver> alarmReceivers) {\n            this.alarmReceivers = alarmReceivers;\n        }\n\n    }\n\n    public static class AlarmReceiver {\n\n        private Long id;\n\n        public AlarmReceiver(){\n\n        }\n\n        public AlarmReceiver(Long id){\n            this.id = id;\n        }\n\n        public Long getId() {\n            return id;\n        }\n\n        public void setId(Long id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_dubbo.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.json.test.dubbo.HelloServiceImpl;\nimport com.alibaba.json.test.dubbo.Tiger;\nimport com.alibaba.json.test.dubbo.Tigers;\n\n\npublic class Bug_for_dubbo extends TestCase {\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"com.alibaba.json.test.dubbo.Tigers\");\n    }\n\n    public void test_0 () throws Exception {\n        HelloServiceImpl helloService = new HelloServiceImpl();\n        \n        Tiger tiger = new Tiger();\n        tiger.setTigerName(\"东北虎\");\n        tiger.setTigerSex(true);\n        //Tiger tigers = helloService.eatTiger(tiger).getTiger();\n        \n        Tigers tigers = helloService.eatTiger(tiger);\n        Assert.assertNotNull(tigers.getTiger());\n        \n        String text = JSON.toJSONString(tigers, SerializerFeature.WriteClassName);\n        \n        System.out.println(text);\n        Tigers tigers1 = (Tigers) JSON.parse(text);\n        Assert.assertNotNull(tigers1.getTiger());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_dubbo1.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.Collection;\nimport java.util.HashMap;\nimport java.util.HashSet;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_dubbo1 extends TestCase {\n\n    public void test_0() throws Exception {\n        String text;\n        {\n            HashSet<String> tigers = new HashSet<String>();\n            tigers.add(\"老虎二\");\n            tigers.add(\"老虎大\");\n            HashMap<String, Collection<String>> tiger = new HashMap<String, Collection<String>>();\n            tiger.put(\"老鼠\", tigers);\n\n            text = JSON.toJSONString(tiger, SerializerFeature.WriteClassName);\n        }\n        \n        System.out.println(text);\n\n        HashMap<String, Collection<String>> tigger2 = (HashMap<String, Collection<String>>) JSON.parse(text);\n        Assert.assertEquals(1, tigger2.size());\n        Assert.assertEquals(2, tigger2.get(\"老鼠\").size());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_dubbo2.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashMap;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_dubbo2 extends TestCase {\n\tprotected void setUp() throws Exception {\n\t\tParserConfig.global.addAccept(\"com.alibaba.json.bvt.bug.Bug_for_dubbo2\");\n\t}\n\n\tpublic void test_emptyHashMap() throws Exception {\n\t\tVO vo = new VO();\n\t\tvo.setValue(new HashMap());\n\t\tString text = JSON.toJSONString(vo, SerializerFeature.WriteClassName);\n\t\tJSON.parse(text);\n\t}\n\t\n\tpublic static class VO {\n\t\tprivate Object value;\n\n\t\tpublic Object getValue() {\n\t\t\treturn value;\n\t\t}\n\n\t\tpublic void setValue(Object value) {\n\t\t\tthis.value = value;\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_dubbo3.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.Collection;\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_dubbo3 extends TestCase {\n\n    public void test_0() throws Exception {\n        String text;\n        {\n            HashSet<String> tigers = new HashSet<String>();\n            tigers.add(\"老虎二\");\n            tigers.add(\"老虎大\");\n            HashMap<String, Collection<String>> tiger = new HashMap<String, Collection<String>>();\n            tiger.put(\"老鼠\", tigers);\n\n            text = JSON.toJSONString(tiger, SerializerFeature.WriteClassName);\n        }\n        \n        System.out.println(text);\n\n        HashMap<String, Collection<String>> tigger2 = (HashMap<String, Collection<String>>) JSON.parseObject(text, Map.class);\n        Assert.assertEquals(1, tigger2.size());\n        Assert.assertEquals(2, tigger2.get(\"老鼠\").size());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_dubbo_long.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_dubbo_long extends TestCase {\n\n    public void test_0() throws Exception {\n        Long val = 2345L;\n\n        String text = JSON.toJSONString(val, SerializerFeature.WriteClassName);\n        Assert.assertEquals(val, JSON.parseObject(text, long.class));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_field.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_field extends TestCase {\n\n    public void test_annotation() throws Exception {\n        VO vo = new VO();\n        vo.setId(123);\n        \n        String text = JSON.toJSONString(vo);\n        \n        System.out.println(text);\n    }\n\n    public static class VO {\n\n        @JSONField(name = \"ID\", serialzeFeatures={SerializerFeature.WriteClassName})\n        private long id;\n\n        public long getId() {\n            return id;\n        }\n\n        public void setId(long id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_franklee77.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_franklee77 extends TestCase {\n\n    public void test_0() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"id\\\":33}\", VO.class);\n        Assert.assertEquals(33, vo.getId());\n\n    }\n\n    public static class VO {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        private VO(){\n\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_fushou.java",
    "content": "package com.alibaba.json.bvt.bug;\r\n\r\nimport junit.framework.TestCase;\r\nimport org.junit.Test;\r\n\r\nimport com.alibaba.fastjson.JSONObject;\r\nimport com.alibaba.fastjson.TypeReference;\r\n\r\nimport junit.framework.Assert;\r\n\r\nimport java.util.List;\r\n\r\npublic class Bug_for_fushou extends TestCase{\r\n\r\n\tpublic void test_case1() {\r\n\t\tString text = \"{\\\"modules\\\":{}}\";\r\n\t\tL1<?> r1 = JSONObject.parseObject(text, new TypeReference<L1<L2>>() {\r\n\t\t});\r\n\t\tassertEquals(true, r1.getModules() instanceof L2);\r\n\r\n\t\tL1 r2 = JSONObject.parseObject(text, new TypeReference<L1>() {\r\n\t\t});\r\n\t\tassertEquals(true, r2.getModules() instanceof JSONObject);\r\n\t\tassertEquals(false, r2.getModules() instanceof L2);\r\n\t}\r\n\r\n\tpublic void test_case2() {\r\n\t\tString text = \"{\\\"modules\\\":{}}\";\r\n\t\tL1<?> r0 = JSONObject.parseObject(text, new TypeReference<L1>() {\r\n\t\t});\r\n\t\tassertEquals(JSONObject.class, r0.getModules().getClass());\r\n\r\n\t\tL1<?> r1 = JSONObject.parseObject(text, new TypeReference<L1<L2>>() {\r\n\t\t});\r\n\t\tassertEquals(L2.class, r1.getModules().getClass());\r\n\r\n\t\tL1 r2 = JSONObject.parseObject(text, new TypeReference<L1>() {\r\n\t\t});\r\n\t\tassertEquals(JSONObject.class, r2.getModules().getClass());\r\n\r\n        L1<?> r3 = JSONObject.parseObject(text, new TypeReference<L1<L3>>() {\r\n        });\r\n        assertEquals(L3.class, r3.getModules().getClass());\r\n\t}\r\n\r\n\tpublic static class L1<T> {\r\n\t\tprivate T modules;\r\n\r\n\t\tpublic T getModules() {\r\n\t\t\treturn modules;\r\n\t\t}\r\n\r\n\t\tpublic void setModules(T modules) {\r\n\t\t\tthis.modules = modules;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static class L2 {\r\n\t\tpublic String name;\r\n\r\n\t\tpublic L2() {\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static class L3 {\r\n\r\n\t\tpublic L3() {\r\n\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_generic.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.io.Serializable;\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_generic extends TestCase {\n\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"NotifyDetail\");\n    }\n\n    public void test() throws Exception {\n        String json = \"{\\\"@type\\\":\\\"com.alibaba.json.bvt.bug.Bug_for_generic$NotifyDetail\\\",\\\"args\\\":[\\\"61354557\\\",\\\"依依\\\",\\\"六\\\"],\\\"destId\\\":60721687,\\\"detailId\\\":3155063,\\\"display\\\":false,\\\"foundTime\\\":{\\\"@type\\\":\\\"java.sql.Timestamp\\\",\\\"val\\\":1344530416000},\\\"hotId\\\":0,\\\"srcId\\\":1000,\\\"templateId\\\":482}\";\n        JSON.parseObject(json, NotifyDetail.class);\n        System.out.println(\"NotifyDetail对象没问题\");\n        String json2 = \"{\\\"@type\\\":\\\"com.alibaba.json.bvt.bug.Bug_for_generic$Pagination\\\",\\\"fromIndex\\\":0,\\\"list\\\":[{\\\"@type\\\":\\\"NotifyDetail\\\",\\\"args\\\":[\\\"61354557\\\",\\\"依依\\\",\\\"六\\\"],\\\"destId\\\":60721687,\\\"detailId\\\":3155063,\\\"display\\\":false,\\\"foundTime\\\":{\\\"@type\\\":\\\"java.sql.Timestamp\\\",\\\"val\\\":1344530416000},\\\"hotId\\\":0,\\\"srcId\\\":1000,\\\"templateId\\\":482},{\\\"@type\\\":\\\"NotifyDetail\\\",\\\"args\\\":[\\\"14527269\\\",\\\"懒洋洋\\\",\\\"///最佳拍档,非常\\\",\\\"24472950\\\"],\\\"destId\\\":60721687,\\\"detailId\\\":3151609,\\\"display\\\":false,\\\"foundTime\\\":{\\\"@type\\\":\\\"java.sql.Timestamp\\\",\\\"val\\\":1344354485000},\\\"hotId\\\":0,\\\"srcId\\\":1000,\\\"templateId\\\":40},{\\\"@type\\\":\\\"NotifyDetail\\\",\\\"args\\\":[\\\"51090218\\\",\\\"天之涯\\\",\\\"天会黑，人会变。三分\\\"],\\\"destId\\\":60721687,\\\"detailId\\\":3149221,\\\"display\\\":false,\\\"foundTime\\\":{\\\"@type\\\":\\\"java.sql.Timestamp\\\",\\\"val\\\":1344247529000},\\\"hotId\\\":0,\\\"srcId\\\":1000,\\\"templateId\\\":459},{\\\"@type\\\":\\\"NotifyDetail\\\",\\\"args\\\":[\\\"51687981\\\",\\\"摹然回首梦已成年\\\",\\\"星星在哪里都很亮的,\\\"],\\\"destId\\\":60721687,\\\"detailId\\\":3149173,\\\"display\\\":false,\\\"foundTime\\\":{\\\"@type\\\":\\\"java.sql.Timestamp\\\",\\\"val\\\":1344247414000},\\\"hotId\\\":0,\\\"srcId\\\":1000,\\\"templateId\\\":459},{\\\"@type\\\":\\\"NotifyDetail\\\",\\\"args\\\":[\\\"41486427\\\",\\\"寒江蓑笠\\\",\\\"双休了\\\"],\\\"destId\\\":60721687,\\\"detailId\\\":3148148,\\\"display\\\":false,\\\"foundTime\\\":{\\\"@type\\\":\\\"java.sql.Timestamp\\\",\\\"val\\\":1344244730000},\\\"hotId\\\":0,\\\"srcId\\\":1000,\\\"templateId\\\":459}],\\\"maxLength\\\":5,\\\"nextPage\\\":2,\\\"pageIndex\\\":1,\\\"prevPage\\\":1,\\\"toIndex\\\":5,\\\"totalPage\\\":3,\\\"totalResult\\\":13}\";\n        JSON.parseObject(json2, Pagination.class);\n    }\n\n    public static class Pagination<T> implements Serializable {\n\n        /**\n     * \n     */\n        private static final long serialVersionUID = 5038839734218582220L;\n\n        private int               totalResult      = 0;\n\n        private int               totalPage        = 1;\n\n        private int               pageIndex        = 1;\n\n        private int               maxLength        = 5;\n\n        private int               fromIndex        = 0;\n\n        private int               toIndex          = 0;\n\n        private List<T>           list             = new ArrayList<T>();\n\n        public Pagination(){\n\n        }\n\n        public void setTotalResult(int totalResult) {\n            this.totalResult = totalResult;\n        }\n\n        public void setTotalPage(int totalPage) {\n            this.totalPage = totalPage;\n        }\n\n        public void setPageIndex(int pageIndex) {\n            this.pageIndex = pageIndex;\n        }\n\n        public void setMaxLength(int maxLength) {\n            this.maxLength = maxLength;\n        }\n\n        public void setFromIndex(int fromIndex) {\n            this.fromIndex = fromIndex;\n        }\n\n        public void setToIndex(int toIndex) {\n            this.toIndex = toIndex;\n        }\n\n        public int getFromIndex() {\n            return this.fromIndex;\n        }\n\n        public int getToIndex() {\n            return this.toIndex;\n        }\n\n        public int getNextPage() {\n            if (this.pageIndex < this.totalPage) {\n                return this.pageIndex + 1;\n            } else {\n                return this.pageIndex;\n            }\n        }\n\n        public int getPrevPage() {\n            if (this.pageIndex > 1) {\n                return this.pageIndex - 1;\n            }\n            return this.pageIndex;\n        }\n\n        /**\n         * @return the currentPage\n         */\n        public int getPageIndex() {\n            return pageIndex;\n        }\n\n        /**\n         * @return the list\n         */\n        public List<T> getList() {\n            if (list == null) {\n                return new ArrayList<T>();\n            }\n            return new ArrayList<T>(list);\n        }\n\n        /**\n         * @return the totalPage\n         */\n        public int getTotalPage() {\n            return totalPage;\n        }\n\n        /**\n         * @return the totalRecord\n         */\n        public int getTotalResult() {\n            return totalResult;\n        }\n\n        public int getMaxLength() {\n            return maxLength;\n        }\n\n        /**\n         * @param totalResult\n         * @param pageIndex\n         * @param maxLength\n         */\n        public Pagination(int totalResult, int pageIndex, int maxLength){\n            if (maxLength > 0) {\n                this.maxLength = maxLength;\n            }\n            if (totalResult > 0) {\n                this.totalResult = totalResult;\n            }\n            if (pageIndex > 0) {\n                this.pageIndex = pageIndex;\n            }\n            this.totalPage = this.totalResult / this.maxLength;\n            if (this.totalResult % this.maxLength != 0) {\n                this.totalPage = this.totalPage + 1;\n            }\n            if (this.totalPage == 0) {\n                this.totalPage = 1;\n            }\n            if (this.pageIndex > this.totalPage) {\n                this.pageIndex = this.totalPage;\n            }\n            if (this.pageIndex <= 0) {\n                this.pageIndex = 1;\n            }\n            this.fromIndex = (this.pageIndex - 1) * maxLength;\n            this.toIndex = this.fromIndex + maxLength;\n            if (this.toIndex < 0) {\n                this.toIndex = fromIndex;\n            }\n            if (this.toIndex > this.totalResult) {\n                this.toIndex = this.totalResult;\n            }\n\n        }\n\n        /**\n         * @param datas the datas to set\n         */\n        public void setList(List<T> list) {\n            this.list = list;\n        }\n\n        /*\n         * (non-Javadoc)\n         * @see java.lang.Object#toString()\n         */\n        @Override\n        public String toString() {\n            StringBuffer sb = new StringBuffer();\n            sb.append(\"Pagination:\\r\\n\");\n            sb.append(\"\\tpageIndex\\t\" + this.pageIndex + \"\\r\\n\");\n            sb.append(\"\\ttotalPage\\t\" + this.totalPage + \"\\r\\n\");\n            sb.append(\"\\tmaxLength\\t\" + this.maxLength + \"\\r\\n\");\n            sb.append(\"\\ttotalResult\\t\" + this.totalResult + \"\\r\\n\");\n            for (T t : list) {\n                sb.append(t + \"\\r\\n\");\n            }\n            return sb.toString();\n        }\n\n    }\n\n    public static class NotifyDetail implements Serializable {\n\n        /**\n         * \n         */\n        private static final long serialVersionUID = 8760630447394929224L;\n\n        private int               detailId;\n\n        private int               hotId;\n\n        private int               templateId;\n\n        private int               srcId;\n\n        private int               destId;\n\n        private boolean           display;\n\n        private java.sql.Date     foundTime;\n\n        private List<String>      args             = new ArrayList<String>();\n\n        public int getDetailId() {\n            return detailId;\n        }\n\n        public void setDetailId(int detailId) {\n            this.detailId = detailId;\n        }\n\n        public int getHotId() {\n            return hotId;\n        }\n\n        public void setHotId(int hotId) {\n            this.hotId = hotId;\n        }\n\n        public int getTemplateId() {\n            return templateId;\n        }\n\n        public List<String> getArgs() {\n            return args;\n        }\n\n        public void setArgs(List<String> args) {\n            this.args = args;\n        }\n\n        public void setTemplateId(int templateId) {\n            this.templateId = templateId;\n        }\n\n        public int getSrcId() {\n            return srcId;\n        }\n\n        public void setSrcId(int srcId) {\n            this.srcId = srcId;\n        }\n\n        public int getDestId() {\n            return destId;\n        }\n\n        public void setDestId(int destId) {\n            this.destId = destId;\n        }\n\n        public boolean isDisplay() {\n            return display;\n        }\n\n        public void setDisplay(boolean display) {\n            this.display = display;\n        }\n\n        public java.sql.Date getFoundTime() {\n            return foundTime;\n        }\n\n        public void setFoundTime(java.sql.Date foundTime) {\n            this.foundTime = foundTime;\n        }\n\n        /*\n         * (non-Javadoc)\n         * @see java.lang.Object#hashCode()\n         */\n        @Override\n        public int hashCode() {\n            int hasCode = 0;\n            if (this.detailId != 0) {\n                hasCode += this.detailId;\n            }\n            return hasCode;\n        }\n\n        /*\n         * (non-Javadoc)\n         * @see java.lang.Object#equals(java.lang.Object)\n         */\n        @Override\n        public boolean equals(Object obj) {\n            if (obj == null) {\n                return false;\n            }\n            if (!(obj instanceof NotifyDetail)) {\n                return false;\n            }\n            return this.hashCode() == obj.hashCode();\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_generic_1.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\nimport cn.com.tx.domain.notifyDetail.NotifyDetail;\nimport cn.com.tx.domain.pagination.Pagination;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class Bug_for_generic_1 extends TestCase {\n\n    public void test() {\n        String json2 = \"{\\\"@type\\\":\\\"cn.com.tx.domain.pagination.Pagination\\\",\\\"fromIndex\\\":0,\\\"list\\\":[{\\\"@type\\\":\\\"cn.com.tx.domain.notifyDetail.NotifyDetail\\\",\\\"args\\\":[\\\"61354557\\\",\\\"依依\\\",\\\"六\\\"],\\\"destId\\\":60721687,\\\"detailId\\\":3155063,\\\"display\\\":false,\\\"foundTime\\\":{\\\"@type\\\":\\\"java.sql.Timestamp\\\",\\\"val\\\":1344530416000},\\\"hotId\\\":0,\\\"srcId\\\":1000,\\\"templateId\\\":482},{\\\"@type\\\":\\\"cn.com.tx.domain.notifyDetail.NotifyDetail\\\",\\\"args\\\":[\\\"14527269\\\",\\\"懒洋洋\\\",\\\"///最佳拍档,非常\\\",\\\"24472950\\\"],\\\"destId\\\":60721687,\\\"detailId\\\":3151609,\\\"display\\\":false,\\\"foundTime\\\":{\\\"@type\\\":\\\"java.sql.Timestamp\\\",\\\"val\\\":1344354485000},\\\"hotId\\\":0,\\\"srcId\\\":1000,\\\"templateId\\\":40},{\\\"@type\\\":\\\"cn.com.tx.domain.notifyDetail.NotifyDetail\\\",\\\"args\\\":[\\\"51090218\\\",\\\"天之涯\\\",\\\"天会黑，人会变。三分\\\"],\\\"destId\\\":60721687,\\\"detailId\\\":3149221,\\\"display\\\":false,\\\"foundTime\\\":{\\\"@type\\\":\\\"java.sql.Timestamp\\\",\\\"val\\\":1344247529000},\\\"hotId\\\":0,\\\"srcId\\\":1000,\\\"templateId\\\":459},{\\\"@type\\\":\\\"cn.com.tx.domain.notifyDetail.NotifyDetail\\\",\\\"args\\\":[\\\"51687981\\\",\\\"摹然回首梦已成年\\\",\\\"星星在哪里都很亮的,\\\"],\\\"destId\\\":60721687,\\\"detailId\\\":3149173,\\\"display\\\":false,\\\"foundTime\\\":{\\\"@type\\\":\\\"java.sql.Timestamp\\\",\\\"val\\\":1344247414000},\\\"hotId\\\":0,\\\"srcId\\\":1000,\\\"templateId\\\":459},{\\\"@type\\\":\\\"cn.com.tx.domain.notifyDetail.NotifyDetail\\\",\\\"args\\\":[\\\"41486427\\\",\\\"寒江蓑笠\\\",\\\"双休了\\\"],\\\"destId\\\":60721687,\\\"detailId\\\":3148148,\\\"display\\\":false,\\\"foundTime\\\":{\\\"@type\\\":\\\"java.sql.Timestamp\\\",\\\"val\\\":1344244730000},\\\"hotId\\\":0,\\\"srcId\\\":1000,\\\"templateId\\\":459}],\\\"maxLength\\\":5,\\\"nextPage\\\":2,\\\"pageIndex\\\":1,\\\"prevPage\\\":1,\\\"toIndex\\\":5,\\\"totalPage\\\":3,\\\"totalResult\\\":13}\";\n        cn.com.tx.domain.pagination.Pagination<cn.com.tx.domain.notifyDetail.NotifyDetail> pagination = JSON.parseObject(json2,\n                                                                                                                         new TypeReference<Pagination<NotifyDetail>>() {\n                                                                                                                         });\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_generic_huansi.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 19/12/2016.\n */\npublic class Bug_for_generic_huansi extends TestCase {\n    public void test_for_issue() throws Exception {\n        String jsonStr = \"{\\\"id\\\": 1234}\";\n\n        SimpleGenericObject jsonObj = JSON.parseObject(jsonStr, SimpleGenericObject.class);\n\n        try {\n            Long id = jsonObj.getId();\n            assertTrue(id.equals(1234L));\n        } catch (Exception e) {\n            fail(\"parse error:\" + e.getMessage());\n        }\n    }\n\n    public static class BaseGenericType<T> {\n\n        private T id;\n\n        public T getId() {\n            return id;\n        }\n\n        public void setId(T id) {\n            this.id = id;\n        }\n\n    }\n\n    public static class ExtendGenericType<T> extends BaseGenericType<T> {\n    }\n\n    public static class SimpleGenericObject extends ExtendGenericType<Long> {\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_gongwenhua.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONObject;\n\npublic class Bug_for_gongwenhua extends TestCase {\n\n    public void test_0() throws Exception {\n        String text = \"{\\\"FH2\\\\\\\"\\u0005\\\\v\\u0010\\u000e\\u0011\\u0000\\\":0,\\\"alipa9_login\\\":0,\\\"alipay_login\\\":14164,\\\"durex\\\":317,\\\"intl.datasky\\\":0,\\\"taobao_refund\\\":880}\";\n\n        JSONObject obj = JSONObject.parseObject(text);\n        Assert.assertNotNull(obj);\n        Assert.assertEquals(0, obj.get(\"FH2\\\"\\u0005\\u000B\\u0010\\u000e\\u0011\\u0000\"));\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_hifor_issue_511.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.Date;\nimport java.util.List;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_hifor_issue_511 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String resultString = \"{\"\n                + \"    \\\"errCode\\\": 0, \"\n                + \"    \\\"errMsg\\\": \\\"ok\\\", \"\n                + \"    \\\"model\\\": {\"\n                + \"        \\\"doctor\\\": {\"\n                + \"            \\\"duty\\\": \\\"副主任医师\\\", \"\n                + \"            \\\"glide\\\": \\\"20051010082558\\\", \"\n                + \"            \\\"mark\\\": \\\"0703010000\\\", \"\n                + \"            \\\"name\\\": \\\"某某某\\\", \"\n                + \"            \\\"office\\\": \\\"小儿骨科\\\"\"\n                + \"        }, \"\n                + \"        \\\"patientInfoList\\\": [\"\n                + \"            {\"\n                + \"                \\\"patient_Master_Card\\\": 1, \"\n                + \"                \\\"patient_addDate\\\": 1451097938410, \"\n                + \"                \\\"patient_age\\\": 30, \"\n                + \"                \\\"patient_id\\\": 347, \"\n                + \"                \\\"patient_idCard\\\": \\\"123321\\\", \"\n                + \"                \\\"patient_name\\\": \\\"张三\\\", \"\n                + \"                \\\"patient_s_ic_no\\\": \\\"123321\\\", \"\n                + \"                \\\"patient_sex\\\": \\\"1\\\", \"\n                + \"                \\\"patient_tel\\\": \\\"123\\\", \"\n                + \"                \\\"patient_userId\\\": 2, \"\n                + \"                \\\"s_ic_no\\\": \\\"123321\\\"\"\n                + \"            }, \"\n                + \"            {\"\n                + \"                \\\"patient_Master_Card\\\": 0, \"\n                + \"                \\\"patient_addDate\\\": 1454296296847, \"\n                + \"                \\\"patient_age\\\": 23, \"\n                + \"                \\\"patient_id\\\": 598, \"\n                + \"                \\\"patient_idCard\\\": \\\"123123\\\", \"\n                + \"                \\\"patient_name\\\": \\\"李四\\\", \"\n                + \"                \\\"patient_s_ic_no\\\": \\\"F10020000615011\\\", \"\n                + \"                \\\"patient_sex\\\": \\\"1\\\", \"\n                + \"                \\\"patient_tel\\\": \\\"18065212123\\\", \"\n                + \"                \\\"patient_userId\\\": 2, \"\n                + \"                \\\"s_ic_no\\\": \\\"F10020000615011\\\"\"\n                + \"            }\"\n                + \"        ]\"\n                + \"    }\"\n                + \"}\";\n        \n        TResult<BookConfirmVo> result = JSON.parseObject(resultString, new TypeReference<TResult<BookConfirmVo>>() { });\n        Assert.assertSame(BookConfirmVo.class, result.model.getClass());\n    }\n    \n    public static class TResult<T> {\n        int errCode = 0;\n        String errMsg = \"ok\";\n        List<T> data = null;\n        String stringData;\n        Integer intData;\n        T model;\n        String url;\n        \n        public int getErrCode() {\n            return errCode;\n        }\n        \n        public void setErrCode(int errCode) {\n            this.errCode = errCode;\n        }\n        \n        public String getErrMsg() {\n            return errMsg;\n        }\n        \n        public void setErrMsg(String errMsg) {\n            this.errMsg = errMsg;\n        }\n        \n        public List<T> getData() {\n            return data;\n        }\n        \n        public void setData(List<T> data) {\n            this.data = data;\n        }\n        \n        public String getStringData() {\n            return stringData;\n        }\n        \n        public void setStringData(String stringData) {\n            this.stringData = stringData;\n        }\n        \n        public Integer getIntData() {\n            return intData;\n        }\n        \n        public void setIntData(Integer intData) {\n            this.intData = intData;\n        }\n        \n        public T getModel() {\n            return model;\n        }\n        \n        public void setModel(T model) {\n            this.model = model;\n        }\n        \n        public String getUrl() {\n            return url;\n        }\n        \n        public void setUrl(String url) {\n            this.url = url;\n        }\n        \n        \n    }\n\n    public static class BookConfirmVo {\n\n        String              selectDay;\n        String              selectTime;\n        VW_NRE_Doctor       doctor;\n        List<PatientInfoVo> patientInfoList;\n    }\n\n    public static class VW_NRE_Doctor {\n\n        String glide;\n        String name;\n        String office;\n        String mark;\n        String duty;\n        byte[] pic;\n    }\n\n    public static class PatientInfoVo extends PatientInfo {\n\n        String cols;\n        String glide;\n        String s_ic_no;\n\n        // 注解禁止序列化\n        @JSONField(serialize = false)\n        public String getCols() {\n            return cols;\n        }\n\n        // 注解禁止反序列化\n        @JSONField(deserialize = false)\n        public void setCols(String cols) {\n            this.cols = cols;\n        }\n\n        public String getGlide() {\n            return glide;\n        }\n\n        public void setGlide(String glide) {\n            this.glide = glide;\n        }\n\n        public String getS_ic_no() {\n            return s_ic_no;\n        }\n\n        public void setS_ic_no(String s_ic_no) {\n            this.s_ic_no = s_ic_no;\n        }\n    }\n\n    public static class PatientInfo {\n\n        Integer patient_id;\n        Integer patient_userId;\n        String  patient_name;\n        String  patient_sex;\n        Integer patient_age;\n        String  patient_tel;\n        String  patient_idCard;\n        Date    patient_addDate;\n        Date    patient_Date;\n        String  patient_s_ic_no;\n        Integer patient_Master_Card;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_hmy8.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.json.bvtVO.IEvent;\nimport com.alibaba.json.bvtVO.IEventDto;\n\npublic class Bug_for_hmy8 extends TestCase {\n\n    public void test_ser() throws Exception {\n        IEventDto dto = new IEventDto();\n        dto.getEventList().add(new IEvent());\n        \n        JSON.toJSONString(dto);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_huangchun.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\n\npublic class Bug_for_huangchun extends TestCase {\n    public void test_serialize_url() throws Exception {\n        JSONObject json = new JSONObject();\n        json.put(\"info\", \"<a href=\\\"http://www.baidu.com\\\"> 问题链接 </a> \");\n        String text = JSON.toJSONString(json);\n        System.out.println(text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_huling.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_huling extends TestCase {\n\n    public void test_for_0() throws Exception {\n        VO vo = new VO();\n        vo.setValue(\"\\0\\0\");\n        \n        Assert.assertEquals('\\0', vo.getValue().charAt(0));\n        \n        String text = JSON.toJSONString(vo);\n        System.out.println(text);\n        Assert.assertEquals(\"{\\\"value\\\":\\\"\\\\u0000\\\\u0000\\\"}\", text);\n\n        VO vo2 = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(\"\\0\\0\", vo2.getValue());\n    }\n    \n    public void test_for_1() throws Exception {\n        VO vo = new VO();\n        vo.setValue(\"\\1\\1\");\n        \n        Assert.assertEquals('\\1', vo.getValue().charAt(0));\n        \n        String text = JSON.toJSONString(vo);\n        System.out.println(text);\n        Assert.assertEquals(\"{\\\"value\\\":\\\"\\\\u0001\\\\u0001\\\"}\", text);\n\n        VO vo2 = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(\"\\1\\1\", vo2.getValue());\n    }\n    \n    public void test_for_2028() throws Exception {\n        VO vo = new VO();\n        vo.setValue(\"\\u2028\\u2028\");\n        \n        Assert.assertEquals('\\u2028', vo.getValue().charAt(0));\n        \n        String text = JSON.toJSONString(vo);\n        System.out.println(text);\n        Assert.assertEquals(\"{\\\"value\\\":\\\"\\\\u2028\\\\u2028\\\"}\", text);\n\n        VO vo2 = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(\"\\u2028\\u2028\", vo2.getValue());\n    }\n\n    public void test_for_2029() throws Exception {\n        VO vo = new VO();\n        vo.setValue(\"\\u2029\\u2029\");\n\n        Assert.assertEquals('\\u2029', vo.getValue().charAt(0));\n\n        String text = JSON.toJSONString(vo);\n        System.out.println(text);\n        Assert.assertEquals(\"{\\\"value\\\":\\\"\\\\u2029\\\\u2029\\\"}\", text);\n\n        VO vo2 = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(\"\\u2029\\u2029\", vo2.getValue());\n    }\n\n    public static class VO {\n\n        private String value;\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_184.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_184 extends TestCase {\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.bug.Bug_for_issue_184\");\n    }\n\n    public void test_for_issue() throws Exception {\n        TUser user = new TUser();\n        user.id = 1001;\n        // 禁用asm(在android下使用)，启用asm则没问题。\n        SerializeConfig.getGlobalInstance().setAsmEnable(false);\n        String json = JSON.toJSONString(user, SerializerFeature.WriteClassName);\n        // 输出{\"@type\":\"xx.TUser\",\"id\":0L}\n        System.out.println(json);\n        // 下面反系列化错误：com.alibaba.fastjson.JSONException: unclosed.str\n        // 原因：id带L后缀\n        user = (TUser) JSON.parse(json);\n    }\n\n    public static class TUser {\n\n        public long id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_229.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_229 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        Assert.assertTrue(JSON.parseObject(\"{\\\"value\\\":1}\", VO.class).value);\n        Assert.assertFalse(JSON.parseObject(\"{\\\"value\\\":0}\", VO.class).value);\n    }\n\n    public static class VO {\n\n        private boolean value;\n\n        public boolean isValue() {\n            return value;\n        }\n\n        public void setValue(boolean value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_232.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_232 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String source = \"{\\\"code\\\": 0, \\\"data\\\": {\\\"country\\\": \\\"China\\\", \\\"country_id\\\": \\\"CN\\\", \\\"area\\\": \\\"East China\\\", \\\"area_id\\\": \\\"300000\\\", \\\"region\\\": \\\"Jiangsu Province \\\",\\\" region_id \\\":\\\" 320000 \\\",\\\" city \\\":\\\" Nanjing \\\",\\\" city_id \\\":\\\" 320100 \\\",\\\" county \\\":\\\" \\\",\\\" county_id \\\":\\\" - 1 \\\",\\\" isp \\\":\\\" China Unicom \\\",\\\" isp_id \\\":\\\" 100026 \\\",\\\" ip \\\":\\\" 58.240.65.50 \\\"}}\";\n        JSONObject object = JSONObject.parseObject (source);\n        Assert.assertEquals(0, object.getIntValue(\"code\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_236.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_236 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String text = \"{1:{\\\"donateLevel\\\":0,\\\"goodsInfoInRoomMap\\\":{102:2160,103:0},\\\"goodsInfoMap\\\":null,\\\"headPhoto\\\":null,\\\"headPhotoId\\\":0,\\\"id\\\":-569,\\\"nickName\\\":\\\"啤酒兑咖啡的苦涩\\\",\\\"sex\\\":1,\\\"vipLevel\\\":0},2:{\\\"donateLevel\\\":0,\\\"goodsInfoInRoomMap\\\":{102:11000,103:0},\\\"goodsInfoMap\\\":null,\\\"headPhoto\\\":null,\\\"headPhotoId\\\":1,\\\"id\\\":18315,\\\"nickName\\\":\\\"游客6083\\\",\\\"sex\\\":1,\\\"vipLevel\\\":0},3:{\\\"donateLevel\\\":0,\\\"goodsInfoInRoomMap\\\":{102:1940,103:0},\\\"goodsInfoMap\\\":null,\\\"headPhoto\\\":null,\\\"headPhotoId\\\":0,\\\"id\\\":-887,\\\"nickName\\\":\\\"傻笑，那段情\\\",\\\"sex\\\":0,\\\"vipLevel\\\":0},5:{\\\"$ref\\\":\\\"$[2]\\\"}}\";\n        Map<Integer, Object> root = JSON.parseObject(text, new TypeReference<Map<Integer, Object>>() {});\n        Assert.assertNotNull(root.get(5));\n    }\n\n    public static class TestPara {\n\n        public Object[] paras;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_242.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_issue_242 extends TestCase {\n\n    public void test_true() throws Exception {\n        final String text = \"{int1:\\\"NULL\\\",int2:\\\"null\\\",long1:NULL,long2:null, dou1:\\\"NULL\\\",dou2:\\\"null\\\",str1:\\\"NULL\\\",str2:NULL, bool2:\\\"NULL\\\",bool1:null}\";\n        VO vo = JSON.parseObject(text, VO.class);\n\n        System.out.println(vo);\n    }\n\n    public static class VO {\n\n        public int     int1;\n        public int     int2;\n        public long    long1;\n        public long    long2;\n        public double  dou1;\n        public double  dou2;\n        public boolean bool1;\n        public boolean bool2;\n        public String  str1;\n        public String  str2;\n\n        public VO(){\n\n        }\n\n        public String toString() {\n            StringBuffer sb = new StringBuffer();\n            sb.append(\"int1 = \").append(int1)//\n            .append(\" int2 = \").append(int2)//\n            .append(\" long1 = \").append(long1)//\n            .append(\" long2 = \").append(long2)//\n            .append(\" dou1 = \").append(dou1)//\n            .append(\" dou2 = \").append(dou2)//\n            .append(\" bool1 = \").append(bool1)//\n            .append(\" bool2 = \").append(bool2)//\n            .append(\" str1 = \").append(str2)//\n            .append(\" str2 = \").append(str2);\n            return sb.toString();\n        }\n\n        public int getInt1() {\n            return int1;\n        }\n\n        public void setInt1(int int1) {\n            this.int1 = int1;\n        }\n\n        public int getInt2() {\n            return int2;\n        }\n\n        public void setInt2(int int2) {\n            this.int2 = int2;\n        }\n\n        public long getLong1() {\n            return long1;\n        }\n\n        public void setLong1(long long1) {\n            this.long1 = long1;\n        }\n\n        public long getLong2() {\n            return long2;\n        }\n\n        public void setLong2(long long2) {\n            this.long2 = long2;\n        }\n\n        public double getDou1() {\n            return dou1;\n        }\n\n        public void setDou1(double dou1) {\n            this.dou1 = dou1;\n        }\n\n        public double getDou2() {\n            return dou2;\n        }\n\n        public void setDou2(double dou2) {\n            this.dou2 = dou2;\n        }\n\n        public boolean isBool1() {\n            return bool1;\n        }\n\n        public void setBool1(boolean bool1) {\n            this.bool1 = bool1;\n        }\n\n        public boolean isBool2() {\n            return bool2;\n        }\n\n        public void setBool2(boolean bool2) {\n            this.bool2 = bool2;\n        }\n\n        public String getStr1() {\n            return str1;\n        }\n\n        public void setStr1(String str1) {\n            this.str1 = str1;\n        }\n\n        public String getStr2() {\n            return str2;\n        }\n\n        public void setStr2(String str2) {\n            this.str2 = str2;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_252.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_252 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        String text = JSON.toJSONString(vo, SerializerFeature.WriteMapNullValue);\n        Assert.assertEquals(\"{\\\"type\\\":null}\", text);\n    }\n\n    public static class VO {\n\n        private Class<?> type;\n\n        public Class<?> getType() {\n            return type;\n        }\n\n        public void setType(Class<?> type) {\n            this.type = type;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_253.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.Date;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeFilter;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_253 extends TestCase {\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        vo.setValue(new Date(1460434818838L));\n        String text = JSON.toJSONString(vo, new SerializeFilter[0]);\n        Assert.assertEquals(\"{\\\"value\\\":1460434818838}\", text);\n    }\n    \n    public static class VO {\n        private Date value;\n\n        \n        public Date getValue() {\n            return value;\n        }\n\n        \n        public void setValue(Date value) {\n            this.value = value;\n        }\n        \n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_256.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_256 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        List<AisleDeployInfo> list3 = new ArrayList<AisleDeployInfo>();\n        AisleDeployInfo aisleDeployInfo = new AisleDeployInfo();\n        aisleDeployInfo.setId(1L);\n        aisleDeployInfo.setProvinceArea(\"3,4,5\");\n        list3.add(aisleDeployInfo);\n\n        AisleDeployInfo aisleDeployInfo1 = new AisleDeployInfo();\n        aisleDeployInfo1.setId(2L);\n        aisleDeployInfo1.setProvinceArea(\"3,4,5\");\n        list3.add(aisleDeployInfo1);\n\n        List<AisleDeployInfo> list4 = new ArrayList<AisleDeployInfo>();\n        list4.add(aisleDeployInfo);\n\n        Map<String, List<AisleDeployInfo>> map3 = new HashMap<String, List<AisleDeployInfo>>();\n        map3.put(\"1\", list3);\n        map3.put(\"2\", list4);\n\n        String str = JSON.toJSONString(map3);\n        Map<String, List<AisleDeployInfo>> map1 = JSON.parseObject(str, new TypeReference<Map<String, List<AisleDeployInfo>>>(){});\n        List<AisleDeployInfo> aList = map1.get(\"1\");\n\n        if (aList != null && aList.size() > 0) {\n            for (int i = 0; i < aList.size(); i++) {\n                System.out.println(aList.get(i).getId());\n            }\n        }\n    }\n    \n    public static class AisleDeployInfo {\n        private long id;\n        private String provinceArea;\n        \n        public long getId() {\n            return id;\n        }\n\n        \n        public void setId(long id) {\n            this.id = id;\n        }\n\n\n        \n        public String getProvinceArea() {\n            return provinceArea;\n        }\n\n\n        \n        public void setProvinceArea(String provinceArea) {\n            this.provinceArea = provinceArea;\n        }\n        \n        \n    }\n\n    public static class Model extends HashMap {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_262.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_262 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n       String json = \"{\\\"$\\\":\\\"zhugw\\\"}\";\n       Assert.assertEquals(\"zhugw\", JSONPath.read(json, \"/\\\\$\"));\n    }\n\n   \n    public static class Model {\n        public String name;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_265.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.deserializer.ExtraProcessable;\nimport com.alibaba.fastjson.serializer.JSONSerializable;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_265 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        User user = new User();\n        user.setName(\"wenshao\");\n        \n        String text = JSON.toJSONString(user);\n        \n        Assert.assertEquals(\"{\\\"name\\\":\\\"wenshao\\\"}\", text);\n        \n    }\n    \n    public void test_for_issue_decode() throws Exception {\n        String text = \"{\\\"name\\\":\\\"wenshao\\\",\\\"id\\\":1001}\";\n        \n        User user = JSON.parseObject(text, User.class);\n        Assert.assertEquals(\"wenshao\", user.getName());\n        Assert.assertEquals(1001, user.getAttribute(\"id\"));\n    }\n\n    public static class Model implements JSONSerializable, ExtraProcessable {\n\n        protected Map<String, Object> attributes = new HashMap<String, Object>();\n\n        public Map<String, Object> getAttributes() {\n            return attributes;\n        }\n        \n        public Object getAttribute(String name) {\n            return attributes.get(name);\n        }\n\n        @Override\n        public void write(JSONSerializer serializer, Object fieldName, Type fieldType,\n                          int features) throws IOException {\n            serializer.write(attributes);\n        }\n\n        @Override\n        public void processExtra(String key, Object value) {\n            attributes.put(key, value);\n        }\n    }\n\n    public static class User extends Model {\n\n        public String getName() {\n            return (String) attributes.get(\"name\");\n        }\n\n        public void setName(String name) {\n            attributes.put(\"name\", name);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_268.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.EnumSet;\nimport java.util.concurrent.TimeUnit;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_268 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        V1 vo = new V1();\n        vo.units = EnumSet.of(TimeUnit.DAYS, TimeUnit.HOURS);\n\n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"units\\\":[\\\"HOURS\\\",\\\"DAYS\\\"]}\", text);\n\n        V1 vo1 = JSON.parseObject(text, V1.class);\n        Assert.assertNotNull(vo1);\n        Assert.assertEquals(vo.units, vo1.units);\n    }\n    \n    public void test_for_issue_private() throws Exception {\n        VO vo = new VO();\n        vo.units = EnumSet.of(TimeUnit.DAYS, TimeUnit.HOURS);\n\n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"units\\\":[\\\"HOURS\\\",\\\"DAYS\\\"]}\", text);\n\n        VO vo1 = JSON.parseObject(text, VO.class);\n        Assert.assertNotNull(vo1);\n        Assert.assertEquals(vo.units, vo1.units);\n    }\n\n    private static class VO {\n\n        private EnumSet<TimeUnit> units;\n\n        public EnumSet<TimeUnit> getUnits() {\n            return units;\n        }\n\n        public void setUnits(EnumSet<TimeUnit> units) {\n            this.units = units;\n        }\n\n    }\n    \n    public static class V1 {\n\n        private EnumSet<TimeUnit> units;\n\n        public EnumSet<TimeUnit> getUnits() {\n            return units;\n        }\n\n        public void setUnits(EnumSet<TimeUnit> units) {\n            this.units = units;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_269.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.Date;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_269 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String text = \"{\\\"value\\\":\\\"2014-10-09T03:07:07.000Z\\\"}\";\n        VO vo = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(1412824027000L, vo.value.getTime());\n    }\n\n    public static class VO {\n\n        private Date value;\n\n        public Date getValue() {\n            return value;\n        }\n\n        public void setValue(Date value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_273.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_273 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSON.parseObject(\"{\\\"value\\\":\\\"\\0x16\\0x26\\\"}\");\n    }\n    \n    public static class VO {\n        public String value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_278.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_278 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        vo.setTest(true);\n        \n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"test\\\":true}\", text);\n    }\n    \n    public void test_for_issue_decode() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"isTest\\\":true}\", VO.class);\n        Assert.assertTrue(vo.isTest);\n    }\n\n    public static class VO {\n\n        private boolean isTest;\n\n        public boolean isTest() {\n            return isTest;\n        }\n\n        public void setTest(boolean isTest) {\n            this.isTest = isTest;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_280.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_280 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        TypeReference<Respone<User>> type= new TypeReference<Respone<User>>() {};  \n\n        Respone<User> resp = JSON.parseObject(\"{\\\"code\\\":\\\"\\\",\\\"data\\\":\\\"\\\",\\\"msg\\\":\\\"\\\"}\", type);\n        Assert.assertNull(resp.data);\n    }\n\n    public static class Respone<T> {\n\n        public String code;\n        public String msg;\n        public T      data;\n    }\n\n    public static class User {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_283.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.ArrayList;\nimport java.util.Collection;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_283 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String jsons = \"[[1,1,1,2,3],[2,3,12,3,4],[1],[2]]\";\n\n        Collection<Collection<Integer>> collections //\n                = JSON.parseObject(jsons, new TypeReference<Collection<Collection<Integer>>>() {\n                });\n        \n        Assert.assertEquals(4, collections.size());\n        Assert.assertEquals(ArrayList.class, collections.getClass());\n        \n        Collection<Integer> firstItemCollection = collections.iterator().next();\n        Assert.assertEquals(5, firstItemCollection.size());\n        Assert.assertEquals(ArrayList.class, firstItemCollection.getClass());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_285.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SimplePropertyPreFilter;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_285 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        vo.v1 = new V1();\n        vo.v1.v2 = new V2();\n        vo.v1.v2.v3 = new V3();\n        vo.v1.v2.v3.v4 = new V4();\n        \n        SimplePropertyPreFilter filter = new SimplePropertyPreFilter();\n        filter.setMaxLevel(2);\n        String text = JSON.toJSONString(vo, filter);\n        Assert.assertEquals(\"{\\\"v1\\\":{\\\"v2\\\":{}}}\", text);\n    }\n\n    public static class VO {\n\n        public V1 v1;\n    }\n\n    public static class V1 {\n\n        public V2 v2;\n    }\n\n    public static class V2 {\n\n        public V3 v3;\n    }\n\n    public static class V3 {\n        public V4 v4;\n    }\n    \n\n    public static class V4 {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_291.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_291 extends TestCase {\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.bug.Bug_for_issue_291.\");\n    }\n\n    public void test_for_issue() throws Exception {\n        String text = \"{\\\"id\\\":123,\\\"@type\\\":\\\"com.alibaba.json.bvt.bug.Bug_for_issue_291$VO\\\",\\\"value\\\":54321}\";\n        \n        Object o = JSON.parse(text);\n        Assert.assertEquals(VO.class, o.getClass());\n    }\n    \n    public void test_for_issue_private() throws Exception {\n        String text = \"{\\\"id\\\":123,\\\"@type\\\":\\\"com.alibaba.json.bvt.bug.Bug_for_issue_291$VO\\\",\\\"value\\\":54321}\";\n        \n        Object o = JSON.parse(text);\n        Assert.assertEquals(VO.class, o.getClass());\n    }\n    \n    public static class VO {\n        public int id;\n        public int value;\n    }\n    \n    public static class V1 {\n        public int id;\n        public int value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_296.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_296 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String text = \"{\\\"downloadSpeed\\\":631055,\\\"responseTime\\\":1.435,\\\"url\\\":\\\"http://m2.music.126.net/xUqntwOHwpJdXsO_H-kHsw==/5817516022676667.mp3?v=50710699\\\"}\u0001\";\n        JSONObject obj = (JSONObject) JSON.parse(text);\n        Assert.assertEquals(631055, obj.get(\"downloadSpeed\"));\n    }\n\n    public void test_for_issue_space() throws Exception {\n        String text = \"{\\\"downloadSpeed\\\":631055} \";\n        JSONObject obj = (JSONObject) JSON.parse(text);\n        Assert.assertEquals(631055, obj.get(\"downloadSpeed\"));\n    }\n    \n\n    public void test_for_issue_127() throws Exception {\n        String text = \"{\\\"downloadSpeed\\\":631055}\\u007f\";\n        JSONObject obj = (JSONObject) JSON.parse(text);\n        Assert.assertEquals(631055, obj.get(\"downloadSpeed\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_297.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.lang.reflect.Type;\nimport java.util.List;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.util.ParameterizedTypeImpl;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_297 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        Response<User> resp = parse(\"{\\\"id\\\":1001,\\\"values\\\":[{}]}\", User.class);\n        Assert.assertEquals(1001, resp.id);\n        Assert.assertEquals(1, resp.values.size());\n        Assert.assertEquals(User.class, resp.values.get(0).getClass());\n    }\n\n    public <T> Response<T> parse(String text, Class<T> clazz) {\n        ParameterizedTypeImpl type = new ParameterizedTypeImpl(new Type[] { User.class }, null, Response.class);\n        return JSON.parseObject(text, type);\n    }\n\n    public static class Response<T> {\n\n        public long    id;\n        public List<T> values;\n    }\n\n    public static class User {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_304.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_304 extends TestCase {\n\n    public void test_doubleQuote() throws Exception {\n        String ss = \"{\\\"value\\\":\\\"Intki_E96?\\u001A Build\\\"}\";\n        Assert.assertEquals(\"Intki_E96?\\u001A Build\", JSON.parseObject(ss).get(\"value\"));\n    }\n    \n    public void test_doubleQuote_vo() throws Exception {\n        String ss = \"{\\\"value\\\":\\\"Intki_E96?\\u001A Build\\\"}\";\n        Assert.assertEquals(\"Intki_E96?\\u001A Build\", JSON.parseObject(ss, VO.class).value);\n    }\n    \n    public void test_doubleQuote_vo_private() throws Exception {\n        String ss = \"{\\\"value\\\":\\\"Intki_E96?\\u001A Build\\\"}\";\n        Assert.assertEquals(\"Intki_E96?\\u001A Build\", JSON.parseObject(ss, V1.class).value);\n    }\n    \n    public void test_singleQuote() throws Exception {\n        String ss = \"{'value':'Intki_E96?\\u001A Build'}\";\n        Assert.assertEquals(\"Intki_E96?\\u001A Build\", JSON.parseObject(ss).get(\"value\"));\n    }\n    \n    public void test_singleQuote_vo() throws Exception {\n        String ss = \"{'value':'Intki_E96?\\u001A Build'}\";\n        Assert.assertEquals(\"Intki_E96?\\u001A Build\", JSON.parseObject(ss, VO.class).value);\n    }\n    \n    public static class VO {\n        public String value;\n    }\n    \n    private static class V1 {\n        public String value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_316.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.sql.Timestamp;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_316 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_for_issue() throws Exception {\n        Model model = new Model();\n        model.value = new Timestamp(1460563200000L);\n        Assert.assertEquals(\"{\\\"value\\\":1460563200000}\", JSON.toJSONString(model));\n    }\n\n    public static class Model {\n        public java.sql.Timestamp value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_318.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.LinkedHashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_318 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        Person o1 = new Person(\"zhangsan\", 20);\n        Person o2 = new Person(\"liuXX\", 30);\n        Person o3 = new Person(\"Test\", 10);\n\n        List<Person> users = new ArrayList<Person>();\n        users.add(o1);\n        users.add(o2);\n        users.add(o3);\n\n        List<Person> managers = new ArrayList<Person>();\n        managers.add(o2);\n        managers.add(o3);\n\n        PersonAll pa = new PersonAll();\n        pa.setCount(30);\n\n        // map\n        Map<String, List<Person>> userMap = new LinkedHashMap<String, List<Person>>();\n        userMap.put(\"managers\", managers);\n        userMap.put(\"users\", users);\n        pa.setUserMap(userMap);\n        // bean的属性\n        pa.setUsers(users);\n        pa.setManagers(managers);\n\n        // String json = JSON.toJSONString(pa, SerializerFeature.DisableCircularReferenceDetect);\n        String json = JSON.toJSONString(pa);\n//        System.out.println(\"序列化: \");\n//        System.out.println(json);\n\n        PersonAll target = JSON.parseObject(json, PersonAll.class);\n//        System.out.println(\"反序列化结果: \");\n//        System.out.println(\"map users: \" + target.getUserMap().get(\"users\"));\n//        System.out.println(\"map managers: \" + target.getUserMap().get(\"managers\"));\n//\n//        // 可能是个 \"BUG\" 第一个元素总是为null\n//        System.out.println(\"bean users: \" + target.getUsers());\n//        System.out.println(\"bean managers: \" + target.getManagers());\n//        \n//        System.out.println(JSON.toJSONString(target));\n        \n        Assert.assertNotNull(target.getUsers().get(0));\n        Assert.assertNotNull(target.getManagers().get(0));\n    }\n\n    private static class Person {\n        private String name;\n        private Integer age;\n\n        public Person(){}\n\n        public Person(String name, Integer age) {\n            super();\n            this.name = name;\n            this.age = age;\n        }\n        public String getName() {\n            return name;\n        }\n        public void setName(String name) {\n            this.name = name;\n        }\n        public Integer getAge() {\n            return age;\n        }\n        public void setAge(Integer age) {\n            this.age = age;\n        }\n    }\n\n    private static class PersonAll {\n        private Map<String, List<Person>> userMap = new HashMap<String, List<Person>>();\n        private Integer count;\n        private List<Person> users;\n        private List<Person> managers;\n\n        public Integer getCount() {\n            return count;\n        }\n\n        public void setCount(Integer count) {\n            this.count = count;\n        }\n\n        public Map<String, List<Person>> getUserMap() {\n            return userMap;\n        }\n\n        public void setUserMap(Map<String, List<Person>> userMap) {\n            this.userMap = userMap;\n        }\n\n        public List<Person> getUsers() {\n            return users;\n        }\n\n        public void setUsers(List<Person> users) {\n            this.users = users;\n        }\n\n        public List<Person> getManagers() {\n            return managers;\n        }\n\n        public void setManagers(List<Person> managers) {\n            this.managers = managers;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_320.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_320 extends TestCase {\n\n    @SuppressWarnings({ \"rawtypes\", \"unchecked\" })\n    public void test_for_issue() throws Exception {\n        Map map = new HashMap();\n        map.put(1001L, \"aaa\");\n        \n        String text = JSON.toJSONString(map);\n        Assert.assertEquals(\"{1001:\\\"aaa\\\"}\", text);\n        \n        JSONObject obj = JSON.parseObject(text);\n        Assert.assertEquals(\"aaa\", obj.get(1001));\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_330.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_330 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String jsonContent = \"{\\\"data\\\":{\\\"content\\\":\\\"xxx\\\",\\\"hour\\\":1}}\";\n        StatusBean<WorkBean> bean = JSONObject.parseObject(jsonContent,\n                                      new TypeReference<StatusBean<WorkBean>>() {\n                                    });\n        \n        Assert.assertNotNull(bean.getData());\n        Assert.assertEquals(1, bean.getData().getHour());\n        Assert.assertEquals(\"xxx\", bean.getData().getContent());\n    }\n\n    public static class StatusBean<T> {\n\n        private int    code;\n        private String msg;\n        private T      data;\n\n        public int getCode() {\n            return code;\n        }\n\n        public void setCode(int code) {\n            this.code = code;\n        }\n\n        public String getMsg() {\n            return msg;\n        }\n\n        public void setMsg(String msg) {\n            this.msg = msg;\n        }\n\n        public T getData() {\n            return data;\n        }\n\n        public void setData(T data) {\n            this.data = data;\n        }\n\n    }\n\n    public static class WorkBean {\n\n        private int    hour;\n        private String content;\n\n        public int getHour() {\n            return hour;\n        }\n\n        public void setHour(int hour) {\n            this.hour = hour;\n        }\n\n        public String getContent() {\n            return content;\n        }\n\n        public void setContent(String content) {\n            this.content = content;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_331.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Calendar;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_331 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_for_issue() throws Exception {\n        \n        SimpleDateFormat format = new SimpleDateFormat(\"yyyy-MM-dd\", JSON.defaultLocale);\n        format.setTimeZone(JSON.defaultTimeZone);\n        Date date = format.parse(\"2015-05-23\");\n\n        Calendar c = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n        c.setTime(date);\n\n        Model original = new Model();\n        original.setDate(date);\n        original.setCalendar(c);\n        \n        String json = JSON.toJSONString(original, SerializerFeature.UseISO8601DateFormat);\n\n        System.out.println(json); //V1.2.4 输出{\"calendar\":\"2015-05-23\",\"date\":\"2015-05-23\"} , V1.2.6 输出{\"calendar\":\"2015-05-23+08:00\",\"date\":\"2015-05-23+08:00\"}\n\n        Model actual = JSON.parseObject(json, Model.class);\n\n        Assert.assertNotNull(actual);\n        Assert.assertNotNull(actual.getDate());\n        Assert.assertNotNull(actual.getCalendar());\n\n        Assert.assertEquals(\"与序列化前比较不相等\", original.getDate(), actual.getDate());\n\n        Assert.assertEquals(\"序列化后的Date 和 Calendar 不相等\", actual.getDate(), actual.getCalendar().getTime());\n    }\n    \n    public static class Model {\n        private Date date;\n        private Calendar calendar;\n        \n        public Date getDate() {\n            return date;\n        }\n        \n        public void setDate(Date date) {\n            this.date = date;\n        }\n        \n        public Calendar getCalendar() {\n            return calendar;\n        }\n        \n        public void setCalendar(Calendar calendar) {\n            this.calendar = calendar;\n        }\n        \n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_336.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.Date;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_336 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        RemoteInvocation remoteInvocation = new RemoteInvocation();\n        remoteInvocation.setMethodName(\"test\");\n        remoteInvocation.setParameterTypes(new Class[] { int.class, Date.class, String.class });\n        remoteInvocation.setArguments(new Object[] { 1, new Date(1460538273131L), \"this is a test\" });\n        String json = JSON.toJSONString(remoteInvocation);\n        \n        Assert.assertEquals(\"{\\\"arguments\\\":[1,1460538273131,\\\"this is a test\\\"],\\\"methodName\\\":\\\"test\\\",\\\"parameterTypes\\\":[\\\"int\\\",\\\"java.util.Date\\\",\\\"java.lang.String\\\"]}\", json);\n        \n        remoteInvocation = JSON.parseObject(json, RemoteInvocation.class);\n        \n        Assert.assertEquals(3, remoteInvocation.parameterTypes.length);\n        Assert.assertEquals(int.class, remoteInvocation.parameterTypes[0]);\n        Assert.assertEquals(Date.class, remoteInvocation.parameterTypes[1]);\n        Assert.assertEquals(String.class, remoteInvocation.parameterTypes[2]);\n        \n\n    }\n\n    public static class RemoteInvocation {\n\n        private String     methodName;\n        private Class<?>[] parameterTypes;\n        private Object[]   arguments;\n\n        public String getMethodName() {\n            return methodName;\n        }\n\n        public void setMethodName(String methodName) {\n            this.methodName = methodName;\n        }\n\n        public Class<?>[] getParameterTypes() {\n            return parameterTypes;\n        }\n\n        public void setParameterTypes(Class<?>[] parameterTypes) {\n            this.parameterTypes = parameterTypes;\n        }\n\n        public Object[] getArguments() {\n            return arguments;\n        }\n\n        public void setArguments(Object[] arguments) {\n            this.arguments = arguments;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_349.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.math.BigDecimal;\nimport java.util.Currency;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_349 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Money money = new Money();\n        money.currency = Currency.getInstance(\"CNY\");\n        money.amount = new BigDecimal(\"10.03\");\n\n        String json = JSON.toJSONString(money);\n\n        Money moneyBack = JSON.parseObject(json, Money.class);\n        Assert.assertEquals(money.currency, moneyBack.currency);\n        Assert.assertEquals(money.amount, moneyBack.amount);\n\n        JSONObject jsonObject = JSON.parseObject(json);\n        Money moneyCast = JSON.toJavaObject(jsonObject, Money.class);\n        Assert.assertEquals(money.currency, moneyCast.currency);\n        Assert.assertEquals(money.amount, moneyCast.amount);\n    }\n    \n    public static class Money {\n        public Currency currency;\n        public BigDecimal amount;\n\n        @Override\n        public String toString() {\n            return \"Money{currency=\" + currency + \", amount=\" + amount + '}';\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_352.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_352 extends TestCase {\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        vo.name = \"张三\";\n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"index\\\":0,\\\"名\\\":\\\"张三\\\"}\", text);\n        VO v1 = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(vo.name, v1.name);\n    }\n    \n    public static class VO {\n        public int index;\n        @JSONField(name=\"名\")\n        public String name;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_364.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_364 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSONObject jsonObject = new JSONObject(3, true);\n        jsonObject.put(\"name\", \"J.K.SAGE\");\n        jsonObject.put(\"age\", 21);\n        jsonObject.put(\"msg\", \"Hello!\");\n        JSONObject cloneObject = (JSONObject) jsonObject.clone();\n        assertEquals(JSON.toJSONString(jsonObject), JSON.toJSONString(cloneObject));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_372.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_372 extends TestCase {\n    public void test_for_issue() throws Exception {\n        ParserConfig config = new ParserConfig();\n        ObjectDeserializer deser = config.getDeserializer(Model.class);\n        Assert.assertEquals(JavaBeanDeserializer.class, deser.getClass());\n    }\n    \n    @JSONType(asm=false)\n    public static class Model {\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_383.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.Collection;\nimport java.util.HashSet;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_383 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        TestClass ts = new TestClass();\n        ts.getHashSet().add(1);\n        ts.getHashSet().add(4);\n        ts.getMember().getHashSet().add(10);\n        ts.getMember().getHashSet().add(15);\n        String jsonStr = JSON.toJSONString(ts, new SerializerFeature[]{\n                SerializerFeature.WriteClassName, SerializerFeature.DisableCircularReferenceDetect\n        });\n        System.out.println(jsonStr);\n        ts = JSON.parseObject(jsonStr, TestClass.class);\n        Assert.assertEquals(HashSet.class, ts.getHashSet().getClass());\n        for (Integer val : ts.getHashSet()) {\n            System.out.println(val);\n        }\n    }\n\n    public static class TestClass {\n\n        private Collection<Integer> hashSet = new HashSet<Integer>();\n        private Member member = new Member();\n\n        public TestClass() {\n        }\n\n        public Collection<Integer> getHashSet() {\n            return hashSet;\n        }\n\n        public void setHashSet(Collection<Integer> hashSet) {\n            this.hashSet = hashSet;\n        }\n\n        public Member getMember() {\n            return member;\n        }\n\n        public void setMember(Member member) {\n            this.member = member;\n        }\n    }\n\n    public static class Member{\n        private Collection<Integer> hashSet = new HashSet<Integer>();\n\n        public Member() {\n        }\n\n        public Collection<Integer> getHashSet() {\n            return hashSet;\n        }\n\n        public void setHashSet(Collection<Integer> hashSet) {\n            this.hashSet = hashSet;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_389.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.ArrayList;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_389 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        Def def = new Def();\n        def.add(new User());\n        String defStr = JSON.toJSONString(def);\n\n        Assert.assertEquals(\"[{}]\", defStr);\n        \n        Def _def = JSON.parseObject(defStr, Def.class);\n        Assert.assertEquals(User.class, _def.get(0).getClass());\n    }\n    \n    public void test_for_issue_1() throws Exception {\n        Def def = new Def();\n        def.add(new User());\n        String defStr = JSON.toJSONString(def);\n\n        Assert.assertEquals(\"[{}]\", defStr);\n        \n        Def _def = JSON.parseObject(defStr, new TypeReference<Def>() {});\n        Assert.assertEquals(User.class, _def.get(0).getClass());\n    }\n\n    public static class User {\n\n        String name;\n        String value;\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n\n    }\n\n    public static class Def extends ArrayList<User> {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_414.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.sql.Timestamp;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_414 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String jsonStr = \"{publishedDate:\\\"2015-09-07\\\"}\";\n        TestEntity news = JSON.parseObject(jsonStr, TestEntity.class);\n        System.out.println(news.getPublishedDate());\n    }\n\n    public static class TestEntity {\n        private Timestamp publishedDate;\n\n        public Timestamp getPublishedDate() {\n            return publishedDate;\n        }\n        public void setPublishedDate(Timestamp publishedDate) {\n            this.publishedDate = publishedDate;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_415.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.Arrays;\nimport java.util.List;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_415 extends TestCase {\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.bug.Bug_for_issue_415.\");\n    }\n\n    public void test_for_issue() throws Exception {\n        Teacher t = new Teacher();\n\n        Address addr = new Address();\n        addr.setAddrDetail(\"中国上海南京路\");\n\n        Student s1 = new Student();\n        s1.setName(\"张三\");\n        s1.setAddr(addr);\n\n        Student s2 = new Student();\n        s2.setName(\"李四\");\n        s2.setAddr(addr);\n\n        t.setStudentList(Arrays.asList(s1, s2));\n        \n        String json = JSON.toJSONString(t,SerializerFeature.WriteClassName);\n        //@1 打印序列化的时候json串\n\n        Teacher t2 = (Teacher) JSON.parse(json);\n        for (Student s : t2.getStudentList()) {\n            Assert.assertNotNull(s);\n            Assert.assertNotNull(s.getAddr());\n        }\n    }\n\n    public static class Teacher {\n\n        private List<Student> studentList;\n\n        public List<Student> getStudentList() {\n            return studentList;\n        }\n\n        public void setStudentList(List<Student> studentList) {\n            this.studentList = studentList;\n        }\n\n    }\n\n    public static class Address {\n\n        private String addrDetail;\n\n        public String getAddrDetail() {\n            return addrDetail;\n        }\n\n        public void setAddrDetail(String addressDetail) {\n            this.addrDetail = addressDetail;\n        }\n    }\n\n    public static class Student {\n\n        private String  name;\n        private Address address;\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public Address getAddr() {\n            return address;\n        }\n\n        public void setAddr(Address address) {\n            this.address = address;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_423.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_423 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String text = \"[[],{\\\"value\\\":[]}]\";\n        Object root = JSON.parse(text, Feature.UseObjectArray);\n        Assert.assertEquals(Object[].class, root.getClass());\n        \n        Object[] rootArray = (Object[]) root;\n        Assert.assertEquals(Object[].class, rootArray[0].getClass());\n        Assert.assertEquals(Object[].class, ((JSONObject)rootArray[1]).get(\"value\").getClass());\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_426.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_426 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String text = \"{value:\\\"264,010,000.00\\\"}\";\n        Model model = JSON.parseObject(text, Model.class);\n        Assert.assertTrue(264010000.00D == model.value);\n    }\n    \n    public void test_for_issue_float() throws Exception {\n        String text = \"{value:\\\"264,010,000\\\"}\";\n        ModelFloat model = JSON.parseObject(text, ModelFloat.class);\n        Assert.assertTrue(264010000F == model.value);\n    }\n    \n    public void test_for_issue_int() throws Exception {\n        String text = \"{value:\\\"264,010,000\\\"}\";\n        ModelInt model = JSON.parseObject(text, ModelInt.class);\n        Assert.assertTrue(264010000D == model.value);\n    }\n    \n    \n    public void test_for_issue_long() throws Exception {\n        String text = \"{value:\\\"264,010,000\\\"}\";\n        ModelLong model = JSON.parseObject(text, ModelLong.class);\n        Assert.assertTrue(264010000D == model.value);\n    }\n\n    public static class Model {\n        public double value;\n    }\n    \n    public static class ModelFloat {\n        public float value;\n    }\n    \n    public static class ModelInt {\n        public int value;\n    }\n    \n    public static class ModelLong {\n        public long value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_427.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_427 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String value = \"================================================\"\n                + \"\\n服务器名称：[FFFF00]N23-物华天宝 [-]\"\n                + \"\\n开服时间：[FFFF00]2015年10月16日11：00（周五）[-]\"\n                + \"\\n================================================\";\n        \n        Model model = new Model();\n        model.value = value;\n        JSON.toJSONString(model);\n    }\n\n    public static class Model {\n\n        public String value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_430.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.ArrayList;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_430 extends TestCase {\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.bug.Bug_for_issue_430\");\n    }\n\n    public void test_for_issue() throws Exception {\n        String text = \"[{\\\"@type\\\": \\\"com.alibaba.json.bvt.bug.Bug_for_issue_430$FooModel\\\", \\\"fooCollection\\\": null}, {\\\"@type\\\": \\\"com.alibaba.json.bvt.bug.Bug_for_issue_430$FooModel\\\", \\\"fooCollection\\\": null}]\";\n        JSONArray array = JSON.parseArray(text);\n        Assert.assertEquals(FooModel.class, array.get(0).getClass());\n        Assert.assertEquals(FooModel.class, array.get(1).getClass());\n        \n        Assert.assertNull(((FooModel)array.get(0)).fooCollection);\n        Assert.assertNull(((FooModel)array.get(1)).fooCollection);\n    }\n    \n    public void test_for_issue_1() throws Exception {\n        String text = \"[{\\\"@type\\\": \\\"com.alibaba.json.bvt.bug.Bug_for_issue_430$FooModel\\\", \\\"fooCollection\\\": null}, {\\\"@type\\\": \\\"com.alibaba.json.bvt.bug.Bug_for_issue_430$FooModel\\\", \\\"fooCollection\\\": null}]\";\n        JSONArray array = (JSONArray) JSON.parse(text);\n        Assert.assertEquals(FooModel.class, array.get(0).getClass());\n        Assert.assertEquals(FooModel.class, array.get(1).getClass());\n        \n        Assert.assertNull(((FooModel)array.get(0)).fooCollection);\n        Assert.assertNull(((FooModel)array.get(1)).fooCollection);\n    }\n\n    public static class FooModel {\n\n        public ArrayList<FooCollectionModel> fooCollection;\n    }\n\n    public static class FooCollectionModel {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_434.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_434 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String json = \"{value:[\\\"null\\\"]}\";\n        JSONObject parse = JSONObject.parseObject(json);\n        JSONArray jsonArray = parse.getJSONArray(\"value\");\n        Assert.assertEquals(1, jsonArray.size());\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_435.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_435 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        JSON.parseObject(\"\\ufeff{\\\"value\\\":null}\", Model.class);\n    }\n\n    public void test_for_issue_Float() throws Exception {\n        JSON.parseObject(\"\\ufeff{\\\"value\\\":null}\", ModelFloat.class);\n    }\n    \n    public static class Model {\n        public float value;\n    }\n    \n    public static class ModelFloat {\n        public Float value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_439.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_439 extends TestCase {\n    public void test_for_issue() throws Exception {\n       JSON.parseObject(\"{/*aa*/}\");\n    }\n    \n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_446.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_446 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String text = \"{\\\"amount\\\":1,\\\"channel_id\\\":\\\"wnys01\\\",\\\"gem\\\":1,\\\"id\\\":\\\"pay\\\",\\\"login_name\\\":\\\"U10722466A\\\",\\\"money\\\":1000,\\\"order_id\\\":\\\"99142AO10000086695A\\\",\\\"pay_channel\\\":\\\"weilan\\\",\\\"pay_time\\\":\\\"2015-11-05 20:59:04\\\",\\\"reward\\\":\\\"11:5_12:5_13:5,4:1_5:1_6:1\\\",\\\"status\\\":1,\\\"user_id\\\":19313}\";\n        JSONObject obj = (JSONObject) JSON.parse(text);\n        Assert.assertEquals(1, obj.get(\"amount\"));\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_447.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.Calendar;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_447 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_for_issue() throws Exception {\n        Calendar calendar = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n        calendar.setTimeInMillis(1460563200000L);\n        calendar.set(Calendar.HOUR_OF_DAY, 0);\n        calendar.set(Calendar.MINUTE, 0);\n        calendar.set(Calendar.SECOND, 0);\n        calendar.set(Calendar.MILLISECOND, 0);\n        Foo foo = new Foo();\n        foo.setCreateDate(calendar.getTime());\n        String date = JSON.toJSONString(foo, SerializerFeature.UseISO8601DateFormat);\n        Assert.assertEquals(\"{\\\"createDate\\\":\\\"2016-04-14+08:00\\\"}\", date);\n        Foo foo2 = JSON.parseObject(date, Foo.class, Feature.AllowISO8601DateFormat);\n        Assert.assertEquals(\"{\\\"createDate\\\":\\\"2016-04-14 00:00:00\\\"}\", JSON.toJSONString(foo2, SerializerFeature.WriteDateUseDateFormat));\n    }\n\n    public static class Foo {\n\n        private String name;\n        private Date   createDate;\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public Date getCreateDate() {\n            return createDate;\n        }\n\n        public void setCreateDate(Date createDate) {\n            this.createDate = createDate;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_448.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.io.StringReader;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.List;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONReader;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_448 extends TestCase {\n    public void test_0() {\n        \n    }\n\n    // skip\n    public void test_for_issue() throws Exception {\n        final int value_size = 1024 * 16;\n        List<Model> list = new ArrayList<Model>();\n        for (int i = 0; i < 10; ++i) {\n            Model model = new Model();\n            char[] buf = new char[value_size];\n            for (int j = 0; j < buf.length; ++j) {\n                buf[j] = (char) ('a' + j);\n            }\n            model.value = new String(buf);\n            list.add(model);\n        }\n        \n        String text = JSON.toJSONString(list);\n        JSONReader reader = new JSONReader(new StringReader(text));\n        reader.startArray();\n        while (reader.hasNext()) {\n            Model model = reader.readObject(Model.class);\n            String value = model.value;\n            Assert.assertEquals(value_size, value.length());\n            for (int i = 0; i < value.length(); ++i) {\n                char ch = value.charAt(i);\n                Assert.assertEquals(\"error : index_\" + i, (char) ('a' + i), ch);\n            }\n        }\n        reader.endArray();\n        reader.close();\n    }\n\n\n    public static class Model {\n        public String value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_449.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_449 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        ExaminationPojo vo = new ExaminationPojo();\n        vo.setMg(\"1435555992\");\n        vo.setNa(\" 02570\");\n        vo.setCl(\"150501\");\n        vo.setPanellot(\"150501\");\n        String text = JSON.toJSONString(vo);\n        \n        System.out.println(text);\n        Assert.assertEquals(\"{\\\"Cl-\\\":\\\"150501\\\",\\\"Mg2+\\\":\\\"1435555992\\\",\\\"Na+\\\":\\\" 02570\\\",\\\"panellot\\\":\\\"150501\\\"}\", text);\n        \n        ExaminationPojo v1 = JSON.parseObject(text, ExaminationPojo.class);\n        Assert.assertEquals(vo.mg, v1.mg);\n        Assert.assertEquals(vo.na, v1.na);\n        Assert.assertEquals(vo.cl, v1.cl);\n        Assert.assertEquals(vo.panellot, v1.panellot);\n        \n    }\n\n    public static class ExaminationPojo {\n\n        @JSONField(name = \"Mg2+\")\n        private String mg;\n        @JSONField(name = \"Na+\")\n        private String na;\n        @JSONField(name = \"Cl-\")\n        private String cl;\n        @JSONField(name = \"panellot\")\n        private String panellot;\n        \n        public String getMg() {\n            return mg;\n        }\n        \n        public void setMg(String mg) {\n            this.mg = mg;\n        }\n        \n        public String getNa() {\n            return na;\n        }\n        \n        public void setNa(String na) {\n            this.na = na;\n        }\n        \n        public String getCl() {\n            return cl;\n        }\n        \n        public void setCl(String cl) {\n            this.cl = cl;\n        }\n        \n        public String getPanellot() {\n            return panellot;\n        }\n        \n        public void setPanellot(String panellot) {\n            this.panellot = panellot;\n        }\n        \n\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_457.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.lang.reflect.Type;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_457 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        ParserConfig.global.putDeserializer(MyEnum.class, new MyEnumDeser());\n        VO entity = JSON.parseObject(\"{\\\"myEnum\\\":\\\"AA\\\"}\", VO.class);\n        Assert.assertEquals(MyEnum.A, entity.myEnum);\n    }\n    \n    public static class MyEnumDeser implements ObjectDeserializer {\n\n        @Override\n        public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n            String text = (String) parser.parse();\n            if (text.equals(\"AA\")) {\n                return (T) MyEnum.A;\n            }\n            \n            if (text.equals(\"BB\")) {\n                return (T) MyEnum.B;\n            }\n            return null;\n        }\n\n        @Override\n        public int getFastMatchToken() {\n            return JSONToken.LITERAL_STRING;\n        }\n        \n    }\n\n\n    public static class VO {\n\n        private MyEnum myEnum;\n\n        public void setMyEnum(MyEnum myEnum) {\n            this.myEnum = myEnum;\n        }\n\n        public MyEnum getMyEnum() {\n            return myEnum;\n        }\n    }\n\n    public static enum MyEnum {\n                               A, B\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_462.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.math.BigInteger;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_462 extends TestCase {\n    public void test_int() throws Exception {\n        JSONObject object = JSON.parseObject(\"{\\\"value\\\":1001}\");\n        Object value = object.get(\"value\");\n        Assert.assertEquals(Integer.class, value.getClass());\n    }\n    \n    public void test_long() throws Exception {\n        JSONObject object = JSON.parseObject(\"{\\\"value\\\":2147483649}\");\n        Object value = object.get(\"value\");\n        Assert.assertEquals(Long.class, value.getClass());\n    }\n    \n    public void test_bigint() throws Exception {\n        JSONObject object = JSON.parseObject(\"{\\\"value\\\":9223372036854775808}\");\n        Object value = object.get(\"value\");\n        Assert.assertEquals(BigInteger.class, value.getClass());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_465.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_465 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"[\\\"abc\\\",\\\"efg\\\",\\\"sss\\\",[1,2]]\";\n        \n        TestBean testBean = JSON.parseObject(json, TestBean.class);\n        Assert.assertEquals(\"abc\", testBean.name);\n        Assert.assertEquals(\"efg\", testBean.country);\n        Assert.assertEquals(\"sss\", testBean.password);\n        Assert.assertEquals(2, testBean.location.length);\n        Assert.assertEquals(1, testBean.location[0]);\n        Assert.assertEquals(2, testBean.location[1]);\n    }\n    \n    public void f_test_for_issue_private() throws Exception {\n        String json = \"[\\\"abc\\\",\\\"efg\\\",\\\"sss\\\",[1,2]]\";\n        \n        TestBean1 testBean = JSON.parseObject(json, TestBean1.class);\n        Assert.assertEquals(\"abc\", testBean.name);\n        Assert.assertEquals(\"efg\", testBean.country);\n        Assert.assertEquals(\"sss\", testBean.password);\n        Assert.assertEquals(2, testBean.location.length);\n        Assert.assertEquals(1, testBean.location[0]);\n        Assert.assertEquals(2, testBean.location[1]);\n    }\n    \n    @JSONType(parseFeatures = Feature.SupportArrayToBean)\n    public static class TestBean {\n      private String name;\n\n      private String password;\n\n      private String country;\n\n      private int[] location;\n\n      public String getName() {\n        return name;\n      }\n\n      @JSONField(ordinal = 0)\n      public void setName(String name) {\n        this.name = name;\n      }\n\n      public String getPassword() {\n        return password;\n      }\n\n      @JSONField(ordinal = 2)\n      public void setPassword(String password) {\n        this.password = password;\n      }\n\n      public String getCountry() {\n        return country;\n      }\n\n      @JSONField(ordinal = 1)\n      public void setCountry(String country) {\n        this.country = country;\n      }\n\n      public int[] getLocation() {\n        return location;\n      }\n\n      @JSONField(ordinal = 3)\n      public void setLocation(int[] location) {\n        this.location = location;\n      }\n    }\n    \n    @JSONType(parseFeatures = Feature.SupportArrayToBean)\n    private static class TestBean1 {\n      private String name;\n\n      private String password;\n\n      private String country;\n\n      private int[] location;\n\n      public String getName() {\n        return name;\n      }\n\n      @JSONField(ordinal = 0)\n      public void setName(String name) {\n        this.name = name;\n      }\n\n      public String getPassword() {\n        return password;\n      }\n\n      @JSONField(ordinal = 2)\n      public void setPassword(String password) {\n        this.password = password;\n      }\n\n      public String getCountry() {\n        return country;\n      }\n\n      @JSONField(ordinal = 1)\n      public void setCountry(String country) {\n        this.country = country;\n      }\n\n      public int[] getLocation() {\n        return location;\n      }\n\n      @JSONField(ordinal = 3)\n      public void setLocation(int[] location) {\n        this.location = location;\n      }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_469.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_469 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        vo.sPhotoUrl = \"xxx\";\n        \n        String text = JSON.toJSONString(vo);\n        VO vo2 = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(vo.getsPhotoUrl(), vo2.getsPhotoUrl());\n    }\n\n    public static class VO {\n\n        private String sPhotoUrl;\n\n        public String getsPhotoUrl() {\n            return sPhotoUrl;\n        }\n\n        public void setsPhotoUrl(String sPhotoUrl) {\n            this.sPhotoUrl = sPhotoUrl;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_470.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.List;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_470 extends TestCase {\n    \n    public void test_for_issue() throws Exception {\n        List<VO> list = JSON.parseArray(\"[{\\\"value\\\":null}]\", VO.class);\n        Assert.assertEquals(1, list.size());\n        Assert.assertEquals(false, list.get(0).value);\n    }\n    \n    public void test_for_issue_private() throws Exception {\n        List<V1> list = JSON.parseArray(\"[{\\\"value\\\":null}]\", V1.class);\n        Assert.assertEquals(1, list.size());\n        Assert.assertEquals(false, list.get(0).value);\n    }\n    \n    public void test_for_issue_method() throws Exception {\n        List<V2> list = JSON.parseArray(\"[{\\\"value\\\":null}]\", V2.class);\n        Assert.assertEquals(1, list.size());\n        Assert.assertEquals(false, list.get(0).value);\n    }\n\n    public static class VO {\n        public boolean value;\n    }\n    \n    private static class V1 {\n        public boolean value;\n    }\n    \n    public static class V2 {\n        private boolean value;\n        \n        public boolean isValue() {\n            return value;\n        }\n\n        \n        public void setValue(boolean value) {\n            this.value = value;\n        }\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_479.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_479 extends TestCase {\n\n    public void test_for_issue_blankinput() throws Exception {\n        VO vo = JSON.parseObject(\"\", VO.class);\n        Assert.assertNull(vo);\n    }\n\n    public void test_for_issue() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"doubleParam\\\":\\\"\\\",\\\"floatParam\\\":\\\"\\\",\\\"intParam\\\":\\\"\\\",\\\"longParam\\\":\\\"\\\"}\",\n                                 VO.class);\n        Assert.assertTrue(vo.doubleParam == 0);\n        Assert.assertTrue(vo.floatParam == 0);\n        Assert.assertTrue(vo.intParam == 0);\n        Assert.assertTrue(vo.longParam == 0);\n    }\n\n    public void test_for_issue_private() throws Exception {\n        V1 vo = JSON.parseObject(\"{\\\"doubleParam\\\":\\\"\\\",\\\"floatParam\\\":\\\"\\\",\\\"intParam\\\":\\\"\\\",\\\"longParam\\\":\\\"\\\"}\",\n                                 V1.class);\n        Assert.assertTrue(vo.doubleParam == 0);\n        Assert.assertTrue(vo.floatParam == 0);\n        Assert.assertTrue(vo.intParam == 0);\n        Assert.assertTrue(vo.longParam == 0);\n    }\n\n    public static class VO {\n\n        public long  doubleParam;\n        public float floatParam;\n        public int   intParam;\n        public long  longParam;\n    }\n\n    private static class V1 {\n\n        public long  doubleParam;\n        public float floatParam;\n        public int   intParam;\n        public long  longParam;\n    }\n\n    public static class V2 {\n\n        private long  doubleParam;\n        private float floatParam;\n        private int   intParam;\n        private long  longParam;\n\n        public long getDoubleParam() {\n            return doubleParam;\n        }\n\n        public void setDoubleParam(long doubleParam) {\n            this.doubleParam = doubleParam;\n        }\n\n        public float getFloatParam() {\n            return floatParam;\n        }\n\n        public void setFloatParam(float floatParam) {\n            this.floatParam = floatParam;\n        }\n\n        public int getIntParam() {\n            return intParam;\n        }\n\n        public void setIntParam(int intParam) {\n            this.intParam = intParam;\n        }\n\n        public long getLongParam() {\n            return longParam;\n        }\n\n        public void setLongParam(long longParam) {\n            this.longParam = longParam;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_489.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_489 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        Foo ok = JSON.parseObject(\"{\\\"foo\\\":\\\"bar\\\"}\", Foo.class);\n        Foo ng = JSON.parseArray(\"[{\\\"foo\\\":\\\"bar\\\"}]\").getObject(0, Foo.class);\n    }\n\n    public static final class Foo {\n\n        public final String bar;\n\n        @JSONCreator\n        public Foo(@JSONField(name = \"foo\") final String bar){\n            this.bar = bar;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_491.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_491 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n       String json = \"{id:1,keyword:[{uuid:\\\"ddd\\\"},{uuid:\\\"zzz\\\"}]}\";\n       Map<String, String> map = getJsonToMap1(json, String.class);\n       Assert.assertEquals(\"1\", map.get(\"id\"));\n    }\n\n    \n    public void test_for_issue_2() throws Exception {\n        String json = \"{1:{name:\\\"ddd\\\"},2:{name:\\\"zzz\\\"}}\";\n        Map<Integer, Model> map = getJsonToMap(json, Integer.class, Model.class);\n        Assert.assertEquals(\"ddd\", map.get(1).name);\n        Assert.assertEquals(\"zzz\", map.get(2).name);\n     }\n   \n    public static class Model {\n        public String name;\n    }\n    \n    public static <V> Map<String, V> getJsonToMap1(String json, Class<V> valueType) {\n        return JSON.parseObject(json, new TypeReference<Map<String, V>>(valueType) {});\n    }\n    \n    public static <K, V> Map<K, V> getJsonToMap(String json, Class<K> keyType, Class<V> valueType) {\n        return JSON.parseObject(json, new TypeReference<Map<K, V>>(keyType, valueType) {});\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_492.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_492 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n       String json = \"{\\\"name\\\":\\\"zhugw\\\"}\";\n       Assert.assertEquals(\"zhugw\", JSONPath.read(json, \"/name\"));\n    }\n\n   \n    public static class Model {\n        public String name;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_537.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_537 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String text = \"{\\\"value\\\":2147483649}\";\n        Exception error = null;\n        try {\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n        Assert.assertTrue(error.getMessage().contains(\"field : value\"));\n    }\n\n    public void test_for_issue_private() throws Exception {\n        String text = \"{\\\"value\\\":2147483649}\";\n        Exception error = null;\n        try {\n            JSON.parseObject(text, V1.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n        Assert.assertTrue(error.getMessage().contains(\"field : value\"));\n    }\n    \n\n    public void test_for_issue_method() throws Exception {\n        String text = \"{\\\"value\\\":2147483649}\";\n        Exception error = null;\n        try {\n            JSON.parseObject(text, V2.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n        Assert.assertTrue(error.getMessage().contains(\"field : value\"));\n    }\n\n    public static class VO {\n\n        public int value;\n    }\n\n    private static class V1 {\n\n        public int value;\n    }\n\n    public static class V2 {\n\n        private int value;\n\n        public int getValue() {\n            return value;\n        }\n\n        public void setValue(int value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_545.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_545 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        JSON.parse(\"\\ufeff{}\");\n    }\n\n    \n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_555.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.List;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_555 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        JSON.parseObject(\"{\\\"list\\\":[{\\\"spec\\\":{}}]}\", A.class);\n    }\n\n    public static class A {\n\n        public List<B> list;\n    }\n\n    public static class B {\n\n        @JSONField(serialize = true, deserialize = false)\n        public Spec spec;\n    }\n\n    public static class Spec {\n        private int id;\n        \n        public Spec(int id) {\n            this.id = id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_555_setter.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.List;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_555_setter extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        JSON.parseObject(\"{\\\"list\\\":[{\\\"spec\\\":{}}]}\", A.class);\n    }\n\n    public static class A {\n\n        public List<B> list;\n    }\n\n    public static class B {\n\n        @JSONField(serialize = true, deserialize = false)\n        private Spec spec;\n\n        public Spec getSpec() {\n            return spec;\n        }\n\n        public void setSpec(Spec spec) {\n            this.spec = spec;\n        }\n\n    }\n\n    public static class Spec {\n\n        private int id;\n\n        public Spec(int id){\n            this.id = id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_555_setter2.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.List;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_555_setter2 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        JSON.parseObject(\"{\\\"list\\\":[{\\\"spec\\\":{}}]}\", A.class);\n    }\n\n    public static class A {\n\n        public List<B> list;\n    }\n\n    public static class B {\n\n        private Spec spec;\n\n        @JSONField(serialize = true, deserialize = false)\n        public Spec getSpec() {\n            return spec;\n        }\n\n        @JSONField(serialize = true, deserialize = false)\n        public void setSpec(Spec spec) {\n            this.spec = spec;\n        }\n\n    }\n\n    public static class Spec {\n\n        private int id;\n\n        public Spec(int id){\n            this.id = id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_569.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.json.bvt.bug.Bug_for_issue_569.LoginResponse.Body;\nimport com.alibaba.json.bvt.bug.Bug_for_issue_569.LoginResponse.MemberInfo;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_569 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        LoginResponse loginResp = new LoginResponse();\n        loginResp.response = new Response<LoginResponse.Body>();\n        loginResp.response.content = new Body();\n        loginResp.response.content.setMemberinfo(new MemberInfo());\n        loginResp.response.content.getMemberinfo().name = \"ding102992\";\n        loginResp.response.content.getMemberinfo().email = \"ding102992@github.com\";\n\n        String text = JSON.toJSONString(loginResp);\n\n        LoginResponse loginResp2 = JSON.parseObject(text, LoginResponse.class);\n        \n        Assert.assertEquals(loginResp.response //\n                                     .getContent() //\n                                     .getMemberinfo().name, //\n                            loginResp2.response //\n                                      .getContent() //\n                                      .getMemberinfo().name);\n        Assert.assertEquals(loginResp.response //\n                                     .getContent().getMemberinfo().email, //\n                            loginResp2.response.getContent().getMemberinfo().email);\n\n    }\n\n    public static class BaseResponse<T> {\n\n        public Response<T> response;\n\n    \n    }\n    \n    public static class Response<T> {\n\n        private T content;\n\n        public T getContent() {\n            return content;\n        }\n\n        public void setContent(T content) {\n            this.content = content;\n        }\n\n    }\n\n    public static class LoginResponse extends BaseResponse<LoginResponse.Body> {\n\n        public static class Body {\n\n            private MemberInfo memberinfo;\n\n            public MemberInfo getMemberinfo() {\n                return memberinfo;\n            }\n\n            public void setMemberinfo(MemberInfo memberinfo) {\n                this.memberinfo = memberinfo;\n            }\n        }\n\n        public static class MemberInfo {\n\n            public String name;\n            public String email;\n            /*\n             * 省略Getter,Setter\n             */\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_569_1.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport com.google.gson.Gson;\nimport com.google.gson.reflect.TypeToken;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.List;\n\n/**\n * Created by wenshao on 16/8/11.\n */\npublic class Bug_for_issue_569_1 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String str = \"{\\\"bList\\\":[{\\\"data\\\":[0,1]},{\\\"data\\\":[1,2]},{\\\"data\\\":[2,3]},{\\\"data\\\":[3,4]},{\\\"data\\\":[4,5]},{\\\"data\\\":[5,6]},{\\\"data\\\":[6,7]},{\\\"data\\\":[7,8]},{\\\"data\\\":[8,9]},{\\\"data\\\":[9,10]}]}\";\n        A<Integer> aInteger;\n        A<Long> aLong;\n\n//        aInteger = JSON.parseObject(str, new TypeReference<A<Integer>>() {\n//        });\n//        Assert.assertEquals(aInteger.getbList().get(0).getData().get(0).getClass().getName(), Integer.class.getName());\n//\n        aLong = JSON.parseObject(str, new TypeReference<A<Long>>() {\n        });\n        Assert.assertEquals(aLong.getbList().get(0).getData().get(0).getClass().getName(), Long.class.getName());\n\n    }\n\n\n\n    public static class A<T> {\n        private List<B<T>> bList;\n\n        public List<B<T>> getbList() {\n            return bList;\n        }\n\n        public void setbList(List<B<T>> bList) {\n            this.bList = bList;\n        }\n    }\n\n    public static class B<T> {\n        private List<T> data;\n\n        public List<T> getData() {\n            return data;\n        }\n\n        public void setData(List<T> data) {\n            this.data = data;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_572.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_572 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        Model model = new Model();\n        model.id = 1001;\n        model.name = \"wenshao\";\n        \n        String text = JSON.toJSONString(model, SerializerFeature.WriteNonStringValueAsString);\n        Assert.assertEquals(\"{\\\"id\\\":\\\"1001\\\",\\\"name\\\":\\\"wenshao\\\"}\", text);\n    }\n\n    public static class Model {\n\n        private int    id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_572_field.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_572_field extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        Model model = new Model();\n        model.id = 1001;\n        model.name = \"wenshao\";\n        \n        String text = JSON.toJSONString(model, SerializerFeature.WriteNonStringValueAsString);\n        Assert.assertEquals(\"{\\\"id\\\":\\\"1001\\\",\\\"name\\\":\\\"wenshao\\\"}\", text);\n    }\n\n    public static class Model {\n\n        public int    id;\n        public String name;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_572_field2.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\npublic class Bug_for_issue_572_field2 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        Model model = new Model();\n        model.id = 1001;\n        model.name = \"wenshao\";\n        \n        String text = JSON.toJSONString(model);\n        Assert.assertEquals(\"{\\\"id\\\":\\\"1001\\\",\\\"name\\\":\\\"wenshao\\\"}\", text);\n    }\n\n    public static class Model {\n\n        @JSONField(serialzeFeatures = SerializerFeature.WriteNonStringValueAsString)\n        public int    id;\n        public String name;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_572_private.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.fastjson.serializer.ValueFilter;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_572_private extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        Model model = new Model();\n        model.id = 1001;\n        model.name = \"wenshao\";\n\n        String text = JSON.toJSONString(model, SerializerFeature.WriteNonStringValueAsString);\n        Assert.assertEquals(\"{\\\"id\\\":\\\"1001\\\",\\\"name\\\":\\\"wenshao\\\"}\", text);\n    }\n\n    public void test_for_issue_1() throws Exception {\n        Model model = new Model();\n        model.id = 1001;\n        model.name = \"wenshao\";\n\n        ValueFilter valueFilter = new ValueFilter() {\n\n            @Override\n            public Object process(Object object, String name, Object value) {\n                if (value instanceof Number) {\n                    return null;\n                }\n                return value;\n            }\n        };\n\n        String text = JSON.toJSONString(model, valueFilter, SerializerFeature.WriteNonStringValueAsString);\n        Assert.assertEquals(\"{\\\"id\\\":\\\"1001\\\",\\\"name\\\":\\\"wenshao\\\"}\", text);\n    }\n\n    private static class Model {\n\n        private int    id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_630.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_630 extends TestCase {\n\n    public void test_for_issue_null() throws Exception {\n        Model model = new Model();\n        model.id = 123;\n        model.name = null;\n        model.modelName = null;\n        model.isFlay = false;\n//        model.persons = new ArrayList<Person>();\n//        model.persons.add(new Person());\n        \n        String str = JSON.toJSONString(model, SerializerFeature.BeanToArray);\n//        System.out.println(str);\n        JSON.parseObject(str, Model.class, Feature.SupportArrayToBean);\n    }\n    \n    public void test_for_issue_empty() throws Exception {\n        Model model = new Model();\n        model.id = 123;\n        model.name = null;\n        model.modelName = null;\n        model.isFlay = false;\n        model.persons = new ArrayList<Person>();\n//        model.persons.add(new Person());\n        \n        String str = JSON.toJSONString(model, SerializerFeature.BeanToArray);\n//        System.out.println(str);\n        JSON.parseObject(str, Model.class, Feature.SupportArrayToBean);\n    }\n    \n    public void test_for_issue_one() throws Exception {\n        Model model = new Model();\n        model.id = 123;\n        model.name = null;\n        model.modelName = null;\n        model.isFlay = false;\n        model.persons = new ArrayList<Person>();\n        model.persons.add(new Person());\n        \n        String str = JSON.toJSONString(model, SerializerFeature.BeanToArray);\n//        System.out.println(str);\n        JSON.parseObject(str, Model.class, Feature.SupportArrayToBean);\n    }\n\n    public static class Model {\n\n        public int     id;\n        public String  name;\n        public String  modelName;\n        public boolean isFlay;\n        public List<Person>    persons;// = new ArrayList<Person>();\n    }\n\n    public static class Person {\n\n        public int    id;\n        public String name;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_676.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.util.ASMUtils;\n\n\npublic class Bug_for_issue_676 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSON.parseObject(\"{\\\"modelType\\\":\\\"\\\"}\", MenuExpend.class);\n    }\n    \n    public static class MenuExpend {\n        public ModelType modelType;\n    }\n    \n    public static enum ModelType {\n        A, B, C\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_694.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_694 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Root root = JSON.parseObject(\"{\\\"entity\\\":{\\\"isBootomPluginClickable\\\":true,\\\"isMainPoi\\\":true}}\", Root.class);\n        Assert.assertTrue(root.entity.isBootomPluginClickable);\n        Assert.assertTrue(root.entity.isMainPoi);\n    }\n\n    public static class Root {\n        public GSMapItemBIZEntity entity;\n\n        class GSMapItemBIZEntity {\n            protected boolean isBootomPluginClickable = false; // 金融部门外币兑换业务网点 点击底部无需跳转\n            protected boolean isMainPoi               = false;\n\n            public boolean isBootomPluginClickable() {\n                return isBootomPluginClickable;\n            }\n\n            public void setBootomPluginClickable(boolean bootomPluginClickable) {\n                isBootomPluginClickable = bootomPluginClickable;\n            }\n\n            public boolean isMainPoi() {\n                return isMainPoi;\n            }\n\n            public void setMainPoi(boolean mainPoi) {\n                isMainPoi = mainPoi;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_729.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.io.Serializable;\nimport java.util.Date;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.json.bvt.bug.Bug_for_issue_729.Person;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_issue_729 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        Person person = new Person();\n        person.setName(\"bob\");\n        person.startTime = new Date();\n\n        String result = JSON.toJSONString(person);\n        Person person2 = JSON.parseObject(result, Person.class);\n        person2.toString();\n    }\n\n    public static class Person implements Serializable {\n\n        public String name;\n\n        @JSONField(format = \"yyyy-MM-dd HH:mm\")\n        public Date   startTime;\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public Date getStartTime() {\n            return startTime;\n        }\n\n        public void setStartTime(Date startTime) {\n            this.startTime = startTime;\n        }\n\n        @Override\n        public String toString() {\n            return \"Person [name=\" + name + \", startTime=\" + startTime + \"]\";\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_807.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\nimport java.io.Serializable;\n\n/**\n * Created by wenshao on 16/9/5.\n */\npublic class Bug_for_issue_807 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String text = \"{\\\"ckid\\\":\\\"81a5953835310708e414057adb45e826\\\",\\\"rcToken\\\":\\\"E+jkQCWSwop+JICPBHc+fxMYeExTx2NTDGZCJ8gIPg7NbMLNvfmZBPU2dR5uxpRRe+zPnOIaCATpHcSa6q+k39HGjNFFDRt9PNlEJokpxhTw9gYJ/WKoSlVR/4ibjIgjvVHxS2lNLS4=\\\",\\\"userInfo\\\":{\\\"openid\\\":\\\"oEH-vt-7mGHOQets-XbE1c3DKpVc\\\",\\\"nickname\\\":\\\"Pietro\\\",\\\"sex\\\":1,\\\"language\\\":\\\"zh_CN\\\",\\\"city\\\":\\\"\\\",\\\"province\\\":\\\"Beijing\\\",\\\"country\\\":\\\"CN\\\",\\\"headimgurl\\\":\\\"http://wx.qlogo.cn/mmopen/kox8ma2sryApONj7kInbic4iaCZD8tXL4sqe7k3wROLpb2uCZhOiceAbL69ANeXSMu9zf7hibmt3Y0Ed4A6zIt9ibnPaiciauLZn57c/0\\\",\\\"privilege\\\":[],\\\"unionid\\\":\\\"oq9QRtyW-kb6R_7289hIycrOfnyc\\\"},\\\"isNewUser\\\":false}\";\n\n        Root root = JSON.parseObject(text, Root.class);\n        assertEquals(\"oq9QRtyW-kb6R_7289hIycrOfnyc\", root.userInfo.unionId);\n\n        JSONObject jsonObject = JSON.parseObject(text);\n        WechatUserInfo wechatUserInfo = jsonObject.getObject(\"userInfo\", WechatUserInfo.class);\n\n        assertEquals(\"oq9QRtyW-kb6R_7289hIycrOfnyc\", wechatUserInfo.unionId);\n    }\n\n    public static class Root {\n        public String ckid;\n        public String rcToken;\n        public WechatUserInfo userInfo;\n        public boolean isNewUser;\n    }\n\n    public static class WechatUserInfo implements Serializable {\n\n        public String unionId;\n        public String openId;\n        public String nickname;\n        public int sex;\n        public String province;\n        public String country;\n        public String headimgurl;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_issue_937.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\n/**\n * Created by wuwen on 2016/12/7.\n */\npublic class Bug_for_issue_937 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String json = \"{outPara:{name:\\\"user\\\"}}\";\n        Out<Info> out = returnOut(json, Info.class);\n        Assert.assertEquals(\"user\", out.getOutPara().getName());\n    }\n\n    public static <T> Out<T> returnOut(String jsonStr, Class<T> c2) {\n        return JSON.parseObject(jsonStr, new TypeReference<Out<T>>(c2) {\n        });\n    }\n\n    public static class Out<T> {\n        private T outPara;\n\n        public void setOutPara(T t) {\n            outPara = t;\n        }\n\n        public T getOutPara() {\n            return outPara;\n        }\n\n        public Out() {\n        }\n\n        public Out(T t) {\n            setOutPara(t);\n        }\n    }\n\n    public static class Info {\n        private String name;\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_jared1.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.io.Serializable;\nimport java.util.HashSet;\nimport java.util.Set;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_jared1 extends TestCase {\n    public void test_for_jared1() throws Exception {\n        User user = new User();\n\n        String text = JSON.toJSONString(user);\n        \n        System.out.println(text);\n        \n        JSON.parseObject(text, User.class);\n    }\n\n    public static class User implements Serializable {\n\n        /**\n         * \n         */\n        private static final long serialVersionUID = 1L;\n\n        private Integer           id;\n\n        private String            acount;\n\n        private String            password;\n\n        private Set<Crowd>        crowds           = new HashSet<Crowd>();\n\n        private Set<User>         friends          = new HashSet<User>();\n\n        public Integer getId() {\n            return id;\n        }\n\n        public void setId(Integer id) {\n            this.id = id;\n        }\n\n        public String getAcount() {\n            return acount;\n        }\n\n        public void setAcount(String acount) {\n            this.acount = acount;\n        }\n\n        public String getPassword() {\n            return password;\n        }\n\n        public void setPassword(String password) {\n            this.password = password;\n        }\n\n        public Set<Crowd> getCrowds() {\n            return crowds;\n        }\n\n        public void setCrowds(Set<Crowd> crowds) {\n            this.crowds = crowds;\n        }\n\n        public Set<User> getFriends() {\n            return friends;\n        }\n\n        public void setFriends(Set<User> friends) {\n            this.friends = friends;\n        }\n\n        // 一下省略\n\n    }\n\n    public static class Crowd {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_javaeye_litterJava.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_javaeye_litterJava extends TestCase {\n    public void test_for_bug() throws Exception {\n        Group group = new Group();\n        group.setId(123L);\n        group.setName(\"xxx\");\n        group.getClzes().add(Group.class);\n        \n        String text = JSON.toJSONString(group);\n        JSON.parseObject(text, Group.class);\n    }\n\n    public static class Group {\n\n        private Long        id;\n        private String      name;\n        private List<Class> clzes = new ArrayList<Class>();\n\n        public Long getId() {\n            return id;\n        }\n\n        public void setId(Long id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public List<Class> getClzes() {\n            return clzes;\n        }\n\n        public void setClzes(List<Class> clzes) {\n            this.clzes = clzes;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_jial10802.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.json.bvtVO.Bean;\nimport com.alibaba.json.bvtVO.Page;\n\nimport junit.framework.TestCase;\n\n\npublic class Bug_for_jial10802 extends TestCase {\n    public void test_for_jial10802() throws Exception {\n        Page<Bean> page = new Page<Bean>();\n        page.setCount(1);\n        List<Bean> items = new ArrayList<Bean>();\n        Bean item = new Bean();\n        item.setId(1);\n        item.setName(\"name\");\n        item.setDesc(\"desc\");\n        items.add(item);\n        page.setItems(items);\n        String json = JSON.toJSONString(page, SerializerFeature.PrettyFormat);\n\n        Page<Bean> jsonPage = JSON.parseObject(json, new TypeReference<Page<Bean>>() {\n        });\n        System.out.println(jsonPage.getItems().get(0).getName());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_jiangwei.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\n\npublic class Bug_for_jiangwei extends TestCase {\n    public void test_0 () throws Exception {\n        String text = \"['42-0','超級聯隊\\\\x28中\\\\x29','辛當斯','1.418',10,'11/18/2012 02:15',1,0,1,0,'',0,0,0,0]\";\n        JSON.parse(text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_jiangwei1.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\n\npublic class Bug_for_jiangwei1 extends TestCase {\n\n    public void test_double() throws Exception {\n        JSONObject json = JSON.parseObject(\"{\\\"val\\\":12.3}\");\n        Assert.assertTrue(12.3D == json.getDoubleValue(\"val\"));\n    }\n\n    public void test_JSONArray_double() throws Exception {\n        JSONArray json = JSON.parseArray(\"[12.3]\");\n        Assert.assertTrue(12.3D == json.getDoubleValue(0));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_jiangwei2.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\n\npublic class Bug_for_jiangwei2 extends TestCase {\n\tpublic void test_for_jiangwei() throws Exception {\n//\t\tString str = \"﻿[2,'韩国篮球联赛','仁川大象(男篮)','首尔SK骑士 男篮',['大/小',3],'总进球 : 138.5 @ 0-0','','大','0.66','',1,25,200,1,0,0,'True','False',0,'','','',0,0,19819905,1,'h',145528,0]\";\n//\t\tJSONArray array = JSON.parseArray(str);\n\t\tString str = \"[]\";\n\t\tstr = \"﻿[]\";\n\t\tJSONArray array = JSON.parseArray(str);\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_jinghui70.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_jinghui70 extends TestCase {\n\n    public static abstract class IdObject<I> {\n\n        private I id;\n\n        public I getId() {\n            return id;\n        }\n\n        public void setId(I id) {\n            this.id = id;\n        }\n    }\n\n    public static class Child extends IdObject<Long> {\n\n    }\n    \n    public void test_generic() throws Exception {\n        String str = \"{\\\"id\\\":0}\";\n        \n        Child child = JSON.parseObject(str, Child.class);\n        Assert.assertEquals(Long.class, child.getId().getClass());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_jinguwei.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport com.alibaba.fastjson.JSON;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\npublic class Bug_for_jinguwei extends TestCase {\n\n    public void test_null() throws Exception {\n        VO vo = new VO();\n        vo.setList(new ArrayList<String>());\n        vo.getList().add(null);\n        vo.getList().add(null);\n\n        Assert.assertEquals(\"{\\\"list\\\":[null,null]}\", JSON.toJSONString(vo));\n    }\n\n    public static class VO {\n        private List<String> list;\n\n        public List<String> getList() {\n            return list;\n        }\n\n        public void setList(List<String> list) {\n            this.list = list;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_json_array.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_json_array extends TestCase {\n\n    public void test_bug() throws Exception {\n        String jsonStr = \"{\\\"state\\\":0,\\\"data\\\":[{\\\"items\\\":[{\\\"tip\\\":\\\"\\u5218\\u82e5\\u82f1\\\",\\\"url\\\":\\\"xiami:\\\\/\\\\/artist\\\\/1930\\\"},{\\\"tip\\\":\\\"\\u5218\\u5fb7\\u534e\\\",\\\"url\\\":\\\"xiami:\\\\/\\\\/artist\\\\/648\\\"}],\\\"type\\\":\\\"artist\\\"},{\\\"items\\\":[{\\\"tip\\\":\\\"\\u6f02\\u6d0b\\u8fc7\\u6d77\\u6765\\u770b\\u4f60 (Live) - \\u5218\\u660e\\u6e58\\\",\\\"url\\\":\\\"xiami:\\\\/\\\\/song\\\\/1773431302\\\"},{\\\"tip\\\":\\\"\\\\u6211\\\\u4eec\\\\u6ca1\\\\u6709\\\\u5728\\\\u4e00\\\\u8d77 - \\\\u5218\\\\u82e5\\\\u82f1\\\",\\\"url\\\":\\\"xiami:\\\\/\\\\/song\\\\/1769471863\\\"},{\\\"tip\\\":\\\"\\\\u54ed\\u7802 (Live)(\\\\u5218\\\\u660e\\\\u6e58\\\\u80dc\\\\u51fa) - \\\\u5218\\u660e\\u6e58\\\",\\\"url\\\":\\\"xiami:\\\\/\\\\/ song\\\\/1773484887\\\"}],\\\"type\\\":\\\"song\\\"},{\\\"items\\\":[{\\\"tip\\\":\\\"\\\\u4eb2\\\\u7231\\\\u7684\\\\u8def\\\\u4eba - \\\\u5218\\\\u82e5\\\\u82f1\\\",\\\"url\\\":\\\"xiami:\\\\/\\\\/album\\\\/55230\\\"},{\\\"tip\\\":\\\"\\\\u5728\\\\u4e00\\\\u8d77 - \\\\u5218\\\\u82e5\\\\u82f1\\\",\\\"url\\\":\\\"xiami:\\\\/\\\\/album\\\\/377241\\\"}],\\\"type\\\":\\\"album\\\"}],\\\"status\\\":\\\"ok\\\",\\\"err\\\":null} \";\n\n        Parser parser = JSON.parseObject(jsonStr, Parser.class);\n\n        System.out.println(JSON.toJSONString(parser));\n    }\n\n    public static class Parser {\n\n        public int    state;\n        public JSON   data;\n        public String status;\n        public String err;\n\n        public int getState() {\n            return state;\n        }\n\n        public void setState(int state) {\n            this.state = state;\n        }\n\n        public JSON getData() {\n            return data;\n        }\n\n        public void setData(JSON data) {\n            this.data = data;\n        }\n\n        public String getStatus() {\n            return status;\n        }\n\n        public void setStatus(String status) {\n            this.status = status;\n        }\n\n        public String getErr() {\n            return err;\n        }\n\n        public void setErr(String err) {\n            this.err = err;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_jsonobj_null.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_jsonobj_null extends TestCase {\n\n    public void test_parseObjectNull() throws Exception {\n        JSON.parseObject(\"{\\\"data\\\":null}\", VO.class);\n    }\n\n    public static class VO {\n\n        private JSONObject data;\n\n        public JSONObject getData() {\n            return data;\n        }\n\n        public void setData(JSONObject data) {\n            this.data = data;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_juewu.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\n\npublic class Bug_for_juewu extends TestCase {\n    public void test_str() throws Exception {\n        String text = \"{\\\"weitao_feed\\\":{\\\"head\\\":{\\\"Version\\\":\\\"V1.0\\\",\\\"Status\\\":\\\"OK\\\",\\\"SearchTime\\\":1488,\\\"DocsReturn\\\":18,\\\"DocsFound\\\":20,\\\"DocsRestrict\\\":20,\\\"DocsSearch\\\":0},\\\"auctions\\\":[{\\\"id\\\":\\\"110009362197\\\",\\\"creator_id\\\":\\\"673515636\\\",\\\"gmt_create_ms\\\":\\\"1385540374000\\\"}]}}\";\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_km.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.concurrent.TimeUnit;\n\npublic class Bug_for_km\n        extends TestCase {\n    public void test_for_issue() throws Exception {\n        String str = \"{\\n\" +\n                \"\\t\\\"bizSubmitInfos\\\": [{\\n\" +\n                \"\\t\\t\\\"bizType\\\": \\\"ISSUE\\\",\\n\" +\n                \"\\t\\t\\\"privacyInfo\\\": \\\"{\\\\\\\"bcAnchorMid\\\\\\\":\\\\\\\"101CITI000000001000\\\\\\\",\\\\\\\"bcMid\\\\\\\":\\\\\\\"102BABA000000000001\\\\\\\",\\\\\\\"bcSubmitMid\\\\\\\":\\\\\\\"102BABA000000000001\\\\\\\",\\\\\\\"bizId\\\\\\\":\\\\\\\"transfer_autoTest_pri_weiweitestt_8857136636875877184\\\\\\\",\\\\\\\"bizType\\\\\\\":\\\\\\\"ISSUE\\\\\\\",\\\\\\\"currency\\\\\\\":\\\\\\\"USD\\\\\\\",\\\\\\\"exchangeRate\\\\\\\":{\\\\\\\"encryptedExchangeRate\\\\\\\":\\\\\\\"123\\\\\\\",\\\\\\\"envelopeKeyInfos\\\\\\\":{}},\\\\\\\"pcAmount\\\\\\\":{\\\\\\\"envelopeKeyInfos\\\\\\\":{},\\\\\\\"proof\\\\\\\":\\\\\\\"proff\\\\\\\"}}\\\",\\n\" +\n                \"\\t\\t\\\"submitInfoList\\\": [{\\n\" +\n                \"\\t\\t\\t\\\"checkPrivacyResult\\\": {\\n\" +\n                \"\\t\\t\\t\\t\\\"checkResult\\\": \\\"{\\\\\\\"checkResultStatus\\\\\\\":\\\\\\\"ACCEPT\\\\\\\",\\\\\\\"hashOfPrivacyPreservingInfo\\\\\\\":\\\\\\\"NfYRZwG/Yki8LU01vsyWINGaXv94+gYoPBFVMFEKyTM=\\\\\\\",\\\\\\\"memberId\\\\\\\":\\\\\\\"101CITI000000001000\\\\\\\"}\\\",\\n\" +\n                \"\\t\\t\\t\\t\\\"signature\\\": \\\"testing_signature\\\"\\n\" +\n                \"\\t\\t\\t},\\n\" +\n                \"\\t\\t\\t\\\"pid\\\": \\\"101CITI000000001000\\\"\\n\" +\n                \"\\t\\t}]\\n\" +\n                \"\\t}],\\n\" +\n                \"\\t\\\"resultInfo\\\": {\\n\" +\n                \"\\t\\t\\\"resultCode\\\": \\\"SUCCESS\\\",\\n\" +\n                \"\\t\\t\\\"resultCodeId\\\": \\\"00000000\\\",\\n\" +\n                \"\\t\\t\\\"resultMsg\\\": \\\"success\\\",\\n\" +\n                \"\\t\\t\\\"resultStatus\\\": \\\"S\\\"\\n\" +\n                \"\\t}\\n\" +\n                \"}\";\n\n        WhaleGeneratePrivacyResponseBody resp = JSON.parseObject(str, WhaleGeneratePrivacyResponseBody.class);\n        System.out.println(resp.resultInfo.resultStatus);\n\n//        System.out.println(str);\n    }\n\n\n    public static class WhaleGeneratePrivacyResponseBody {\n        public ResultInfo resultInfo;\n    }\n\n    /**\n     * @author freud.wy\n     * @version $Id: ResultInfo.java, v 0.1 2019-05-28 上午11:02 freud.wy Exp $$\n     */\n    public static class ResultInfo {\n        private String resultStatus;\n        private String resultCodeId;\n        private String resultCode;\n        private String resultMsg;\n\n        /**\n         * Getter method for property <tt>resultStatus</tt>.\n         *\n         * @return property value of resultStatus\n         */\n        public String getResultStatus() {\n            return resultStatus;\n        }\n\n        /**\n         * Setter method for property <tt>resultStatus</tt>.\n         *\n         * @param resultStatus value to be assigned to property resultStatus\n         */\n        public void setResultStatus(String resultStatus) {\n            this.resultStatus = resultStatus;\n        }\n\n        /**\n         * Getter method for property <tt>resultCodeId</tt>.\n         *\n         * @return property value of resultCodeId\n         */\n        public String getResultCodeId() {\n            return resultCodeId;\n        }\n\n        /**\n         * Setter method for property <tt>resultCodeId</tt>.\n         *\n         * @param resultCodeId value to be assigned to property resultCodeId\n         */\n        public void setResultCodeId(String resultCodeId) {\n            this.resultCodeId = resultCodeId;\n        }\n\n        /**\n         * Getter method for property <tt>resultCode</tt>.\n         *\n         * @return property value of resultCode\n         */\n        public String getResultCode() {\n            return resultCode;\n        }\n\n        /**\n         * Setter method for property <tt>resultCode</tt>.\n         *\n         * @param resultCode value to be assigned to property resultCode\n         */\n        public void setResultCode(String resultCode) {\n            this.resultCode = resultCode;\n        }\n\n        /**\n         * Getter method for property <tt>resultMsg</tt>.\n         *\n         * @return property value of resultMsg\n         */\n        public String getResultMsg() {\n            return resultMsg;\n        }\n\n        /**\n         * Setter method for property <tt>resultMsg</tt>.\n         *\n         * @param resultMsg value to be assigned to property resultMsg\n         */\n        public void setResultMsg(String resultMsg) {\n            this.resultMsg = resultMsg;\n        }\n\n        @Override\n        public String toString() {\n            return String.format(\"resultStatus[%s],resultCodeId[%s],resultCode[%s],resultMsg[%s]\",resultStatus,resultCodeId,resultCode,resultMsg);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_lenolix.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class Bug_for_lenolix extends TestCase {\n    public void test_FieldMap() throws Exception {\n        Map<String, String[]> map = JSON.parseObject(\"{\\\"key\\\":[\\\"value1\\\",\\\"value2\\\"]}\",\n                                                                     new TypeReference<Map<String, String[]>>() {\n                                                                     });\n        String[] array = map.get(\"key\");\n        Assert.assertEquals(\"value1\", array[0]);\n        Assert.assertEquals(\"value2\", array[1]);\n        \n        System.out.println(Thread.currentThread().getContextClassLoader().getResource(\"com/alibaba/fastjson/JSON.class\"));\n    }\n\n    \n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_lenolix_1.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_lenolix_1 extends TestCase {\n\n    public void test_0() throws Exception {\n        Map<String, User> matcherMap = new HashMap<String, User>();\n        String matcherMapString = JSON.toJSONString(matcherMap, SerializerFeature.WriteClassName,\n                                                    SerializerFeature.WriteMapNullValue);\n        \n        System.out.println(matcherMapString);\n        \n        matcherMap = JSONObject.parseObject(matcherMapString, new TypeReference<Map<String, User>>() {\n        });\n    }\n\n    public static class User {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_lenolix_10.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_lenolix_10 extends TestCase {\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.bug.Bug_for_lenolix_10.\");\n    }\n\n    public void test_for_objectKey() throws Exception {\n        Map<Integer, User> map2 = new HashMap<Integer, User>();\n        User user = new User();\n        user.setId(1);\n        user.setIsBoy(true);\n        user.setName(\"leno.lix\");\n        // user.setBirthDay(simpleDateFormat.parse(\"2012-03-07 22:38:21 CST\"));\n        // user.setGmtCreate(new java.sql.Date(simpleDateFormat.parse(\"2012-02-03 22:38:21 CST\")\n        // .getTime()));\n        map2.put(1, user);\n        String mapJson2 = JSON.toJSONString(map2, SerializerFeature.WriteClassName, SerializerFeature.WriteMapNullValue);\n        System.out.println(mapJson2);\n        Object object2 = JSON.parse(mapJson2);\n\n    }\n\n    public static class User {\n\n        private int     id;\n        private Boolean isBoy;\n        private String  name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public Boolean getIsBoy() {\n            return isBoy;\n        }\n\n        public void setIsBoy(Boolean isBoy) {\n            this.isBoy = isBoy;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_lenolix_11.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_lenolix_11 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.bug.Bug_for_lenolix_11.\");\n    }\n    \n    public void test_for_objectKey() throws Exception {\n        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(\"MM-dd-yyyy\", JSON.defaultLocale);\n        simpleDateFormat.setTimeZone(JSON.defaultTimeZone);\n\n        String simpleDateFormatJson = JSON.toJSONString(simpleDateFormat, SerializerFeature.WriteClassName,\n                                                        SerializerFeature.WriteMapNullValue);\n\n        System.out.println(simpleDateFormatJson);\n\n        java.text.SimpleDateFormat format = (java.text.SimpleDateFormat) JSON.parse(simpleDateFormatJson);\n        Assert.assertEquals(\"MM-dd-yyyy\", format.toPattern());\n\n    }\n\n    public static class User {\n\n        private int     id;\n        private Boolean isBoy;\n        private String  name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public Boolean getIsBoy() {\n            return isBoy;\n        }\n\n        public void setIsBoy(Boolean isBoy) {\n            this.isBoy = isBoy;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_lenolix_2.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_lenolix_2 extends TestCase {\n\n    public void test_0() throws Exception {\n        Map<String, User> matcherMap = new HashMap<String, User>();\n        String matcherMapString = JSON.toJSONString(matcherMap, SerializerFeature.WriteMapNullValue);\n\n        System.out.println(matcherMapString);\n\n        matcherMap = JSONObject.parseObject(matcherMapString, new TypeReference<Map<String, User>>() {\n        });\n    }\n\n    public static class User {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_lenolix_3.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class Bug_for_lenolix_3 extends TestCase {\n\n    public void test_0() throws Exception {\n\n        System.out.println(\"{}\");\n\n        JSONObject.parseObject(\"{\\\"id\\\":{}}\", new TypeReference<Map<String, Map<String,User>>>() {\n        });\n    }\n\n    public static class User {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_lenolix_4.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_lenolix_4 extends TestCase {\n\n    public void test_for_objectKey() throws Exception {\n        Map<Map<String, String>, String> map = new HashMap<Map<String, String>, String>();\n        Map<String, String> submap = new HashMap<String, String>();\n        submap.put(\"subkey\", \"subvalue\");\n        map.put(submap, \"value\");\n        String jsonString = JSON.toJSONString(map, SerializerFeature.WriteClassName);\n        System.out.println(jsonString);\n        Object object = JSON.parse(jsonString);\n        JSON.parseObject(jsonString);\n        \n        System.out.println(object.toString());\n    }\n\n    public void test_for_arrayKey() throws Exception {\n        Map<List<String>, String> map = new HashMap<List<String>, String>();\n        List<String> key = new ArrayList<String>();\n        \n        key.add(\"subkey\");\n        map.put(key, \"value\");\n        String jsonString = JSON.toJSONString(map, SerializerFeature.WriteClassName);\n        System.out.println(jsonString);\n        Object object = JSON.parse(jsonString);\n        System.out.println(object.toString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_lenolix_5.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_lenolix_5 extends TestCase {\n\n\tpublic void test_for_objectKey() throws Exception {\n\t\tfinal Map<Object, Object> obj = new HashMap<Object, Object>();\n\t\tfinal Object obja = new Object();\n\t\tfinal Object objb = new Object();\n\t\tobj.put(obja, objb);\n\n\t\tfinal String newJsonString = JSON.toJSONString(obj, SerializerFeature.WriteMapNullValue,\n\t\t\t\tSerializerFeature.WriteClassName);\n\t\tSystem.out.println(newJsonString);\n\n\t\tfinal Object newObject = JSON.parse(newJsonString);\n\n\t\tSystem.out.println(newObject);\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_lenolix_6.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_lenolix_6 extends TestCase {\n\n    public void test_for_objectKey() throws Exception {\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"id\", 1);\n        map.put(\"name\", \"leno.lix\");\n        map.put(\"birthday\", new Date());\n        map.put(\"gmtCreate\", new java.sql.Date(new Date().getTime()));\n        map.put(\"gmtModified\", new java.sql.Timestamp(new Date().getTime()));\n\n        String userJSON = JSON.toJSONString(map, SerializerFeature.WriteClassName,\n                SerializerFeature.WriteMapNullValue);\n        \n        System.out.println(userJSON);\n\n        Object object = JSON.parse(userJSON);\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_lenolix_7.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.io.Serializable;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_lenolix_7 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.bug.Bug_for_lenolix_7\");\n    }\n    \n    public void test_for_objectKey() throws Exception {\n        User user = new User();\n        user.setId(1);\n        user.setName(\"leno.lix\");\n        user.setIsBoy(true);\n        user.setBirthDay(new Date());\n        user.setGmtCreate(new java.sql.Date(new Date().getTime()));\n        user.setGmtModified(new java.sql.Timestamp(new Date().getTime()));\n        String userJSON = JSON.toJSONString(user, SerializerFeature.WriteClassName, SerializerFeature.WriteMapNullValue);\n\n        System.out.println(userJSON);\n\n        User returnUser = (User) JSON.parse(userJSON);\n\n    }\n\n    private static class User implements Serializable {\n\n        /**\n             *\n             */\n\n        private static final long  serialVersionUID = 6192533820796587011L;\n\n        private Integer            id;\n        private String             name;\n        private Boolean            isBoy;\n        private Address            address;\n        private Date               birthDay;\n        private java.sql.Date      gmtCreate;\n        private java.sql.Timestamp gmtModified;\n\n        public Integer getId() {\n            return id;\n        }\n\n        public void setId(Integer id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public Boolean getIsBoy() {\n            return isBoy;\n        }\n\n        public void setIsBoy(Boolean isBoy) {\n            this.isBoy = isBoy;\n        }\n\n        public Address getAddress() {\n            return address;\n        }\n\n        public void setAddress(Address address) {\n            this.address = address;\n        }\n\n        public Date getBirthDay() {\n            return birthDay;\n        }\n\n        public void setBirthDay(Date birthDay) {\n            this.birthDay = birthDay;\n        }\n\n        public java.sql.Date getGmtCreate() {\n            return gmtCreate;\n        }\n\n        public void setGmtCreate(java.sql.Date gmtCreate) {\n            this.gmtCreate = gmtCreate;\n        }\n\n        public java.sql.Timestamp getGmtModified() {\n            return gmtModified;\n        }\n\n        public void setGmtModified(java.sql.Timestamp gmtModified) {\n            this.gmtModified = gmtModified;\n        }\n\n    }\n    \n    public static class Address {\n\n        private String value;\n\n        public Address(){\n        }\n\n        public Address(String value){\n            this.value = value;\n        }\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_lenolix_8.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.io.Serializable;\nimport java.text.DateFormat;\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.Locale;\nimport java.util.Map;\nimport java.util.TimeZone;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_lenolix_8 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n\n        com.alibaba.fastjson.parser.ParserConfig.global.addAccept(\"com.alibaba.json.bvt.bug.Bug_for_lenolix_8.\");\n    }\n    \n    public void test_for_objectKey() throws Exception {\n        DateFormat simpleDateFormat = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\", JSON.defaultLocale);\n        simpleDateFormat.setTimeZone(JSON.defaultTimeZone);\n        Map<Integer, User> map = new HashMap<Integer, User>();\n\n        User user = new User();\n        user.setId(1);\n        user.setIsBoy(true);\n        user.setName(\"leno.lix\");\n        user.setBirthDay(simpleDateFormat.parse(\"2012-03-07 22:38:21\"));\n        user.setGmtCreate(new java.sql.Date(simpleDateFormat.parse(\"2012-02-03 22:38:21\").getTime()));\n\n        map.put(1, user);\n\n        String mapJson = JSON.toJSONString(map, SerializerFeature.WriteClassName, SerializerFeature.WriteMapNullValue);\n\n        System.out.println(mapJson);\n\n        Object object = JSON.parse(mapJson);\n\n    }\n\n    public static class User implements Serializable {\n\n        /**\n             *\n             */\n\n        private static final long  serialVersionUID = 6192533820796587011L;\n\n        private Integer            id;\n        private String             name;\n        private Boolean            isBoy;\n        private Date               birthDay;\n        private java.sql.Date      gmtCreate;\n        private java.sql.Timestamp gmtModified;\n\n        public Integer getId() {\n            return id;\n        }\n\n        public void setId(Integer id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public Boolean getIsBoy() {\n            return isBoy;\n        }\n\n        public void setIsBoy(Boolean isBoy) {\n            this.isBoy = isBoy;\n        }\n\n\n        public Date getBirthDay() {\n            return birthDay;\n        }\n\n        public void setBirthDay(Date birthDay) {\n            this.birthDay = birthDay;\n        }\n\n        public java.sql.Date getGmtCreate() {\n            return gmtCreate;\n        }\n\n        public void setGmtCreate(java.sql.Date gmtCreate) {\n            this.gmtCreate = gmtCreate;\n        }\n\n        public java.sql.Timestamp getGmtModified() {\n            return gmtModified;\n        }\n\n        public void setGmtModified(java.sql.Timestamp gmtModified) {\n            this.gmtModified = gmtModified;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_lenolix_9.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.json.bvt.bug.Bug_for_lenolix_9.Address.Country;\n\npublic class Bug_for_lenolix_9 extends TestCase {\n\n    protected void setUp() throws Exception {\n        com.alibaba.fastjson.parser.ParserConfig.global.addAccept(\"com.alibaba.json.bvt.bug.Bug_for_lenolix_9.\");\n    }\n\n    public void test_for_objectKey() throws Exception {\n        Map<String, Object> submap4 = new HashMap<String, Object>();\n        Address address = new Address();\n        address.setCity(\"hangzhou\");\n        address.setStreet(\"wangshang.RD\");\n        address.setPostCode(310002);\n        submap4.put(\"address1\", address);\n        submap4.put(\"address2\", address);\n\n        Country country = address.new Country();\n        country.setProvince(\"ZheJiang\");\n        \n        address.setCountry(country);\n\n        String mapString4 = JSON.toJSONString(submap4, SerializerFeature.WriteClassName,\n                                              SerializerFeature.WriteMapNullValue);\n\n        System.out.println(mapString4);\n        Object object4 = JSON.parse(mapString4);\n        Assert.assertNotNull(object4);\n\n        Map<String, Object> map = (Map<String, Object>) object4;\n\n        Assert.assertNotNull(map.get(\"address1\"));\n        Assert.assertNotNull(map.get(\"address2\"));\n\n        Assert.assertTrue(map.get(\"address1\") == map.get(\"address2\"));\n\n    }\n\n    public static class Address {\n\n        private String  city;\n        private String  street;\n        private int     postCode;\n        private Country country;\n\n        public Country getCountry() {\n            return country;\n        }\n\n        public void setCountry(Country country) {\n            this.country = country;\n        }\n\n        public String getCity() {\n            return city;\n        }\n\n        public void setCity(String city) {\n            this.city = city;\n        }\n\n        public String getStreet() {\n            return street;\n        }\n\n        public void setStreet(String street) {\n            this.street = street;\n        }\n\n        public int getPostCode() {\n            return postCode;\n        }\n\n        public void setPostCode(int postCode) {\n            this.postCode = postCode;\n        }\n\n        public class Country {\n\n            private String province;\n\n            public String getProvince() {\n                return province;\n            }\n\n            public void setProvince(String province) {\n                this.province = province;\n            }\n\n        }\n    }\n\n   \n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_leupom.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.io.Serializable;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_leupom extends TestCase {\n\n    public void test_bug() throws Exception {\n        Person person = new Person();\n        person.setId(12345);\n        \n        String text = JSON.toJSONString(person);\n        \n        System.out.println(text);\n    }\n\n    public abstract static class Model {\n\n        public abstract Serializable getId();\n\n    }\n\n    public static class Person extends Model {\n\n        private Integer id;\n\n        public Integer getId() {\n            return id;\n        }\n\n        public void setId(Integer id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_leupom_2.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.concurrent.TimeUnit;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_leupom_2 extends TestCase {\n\n    public void test_0() throws Exception {\n        Time time = new Time(1000, TimeUnit.MILLISECONDS);\n\n        String text = JSON.toJSONString(time);\n\n        System.out.println(text);\n\n        Time time2 = JSON.parseObject(text, Time.class);\n        \n        Assert.assertEquals(time2.getValue(), time.getValue());\n        Assert.assertEquals(time2.getUnit(), time.getUnit());\n    }\n\n    public static class Time {\n\n        private long     value;\n        private TimeUnit unit;\n\n        public Time(){\n            super();\n        }\n\n        public Time(long value, TimeUnit unit){\n            super();\n            this.value = value;\n            this.unit = unit;\n        }\n\n        public long getValue() {\n            return value;\n        }\n\n        @JSONField(serialzeFeatures={SerializerFeature.WriteEnumUsingToString})\n        public TimeUnit getUnit() {\n            return unit;\n        }\n\n        public void setValue(long value) {\n            this.value = value;\n        }\n\n        public void setUnit(TimeUnit unit) {\n            this.unit = unit;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_leupom_3.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.io.Serializable;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_leupom_3 extends TestCase {\n\n    public void test_bug() throws Exception {\n        Person person = new Person();\n        person.setId(12345);\n\n        String text = JSON.toJSONString(person);\n        \n        System.out.println(text);\n        \n        Person person2 = JSON.parseObject(text, Person.class);\n        \n        Assert.assertEquals(person.getId(), person2.getId());\n    }\n\n    public abstract static interface Model {\n\n        Serializable getId();\n        void setId(Integer value);\n    }\n\n    public static class Person implements Model {\n\n        private Integer id;\n\n        public Integer getId() {\n            return id;\n        }\n\n        public void setId(Integer id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_liqing.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport junit.framework.TestCase;\n\npublic class Bug_for_liqing extends TestCase {\n    public void test_for_issue() throws Exception {\n        ParserConfig config = new ParserConfig();\n        config.setAutoTypeSupport(true);\n        String json = \"{\\\"@type\\\":\\\"java.util.HashMap\\\",\\\"wcChangeAttr\\\":{\\\"@type\\\":\\\"com.alibaba.json.bvt.bug.Bug_for_liqing.TpFeedBackDO\\\",\\\"attributes\\\":{\\\"@type\\\":\\\"java.util.concurrent.ConcurrentHashMap\\\"},\\\"wcStatus\\\":102B}}\";\n        JSON.parse(json, config);\n    }\n\n    public static class TpFeedBackDO {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_liuwanzhen_ren.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashMap;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_liuwanzhen_ren extends TestCase {\n\n    public void test_0() throws Exception {\n        Bean bean = new Bean();\n        bean.setAction(\"123\");\n        HashMap paramMap = new HashMap();\n        paramMap.put(\"url1\", \"123\");\n        paramMap.put(\"url2\", \"456\");\n        bean.setParamMap(paramMap);\n        String str = JSON.toJSONString(bean);\n        System.out.println(str);\n        Bean bean2 = JSON.parseObject(str, Bean.class);\n        System.out.println(bean2.getAction());\n        System.out.println(bean2.getParamMap());\n    }\n\n    public static class Bean {\n\n        private String                  action;\n        private HashMap<String, String> paramMap;\n\n        public String getAction() {\n            return action;\n        }\n\n        public void setAction(String action) {\n            this.action = action;\n        }\n\n        public HashMap<String, String> getParamMap() {\n            return paramMap;\n        }\n\n        public void setParamMap(HashMap<String, String> paramMap) {\n            this.paramMap = paramMap;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_liuying.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 18/01/2017.\n */\npublic class Bug_for_liuying extends TestCase {\n\n    public void test_for_bug() throws Exception {\n        String aa = \"[{\\\"dictFont\\\":\\\"&#xe62b;\\\",\\\"dictId\\\":\\\"wap\\\",\\\"dictName\\\":\\\"无线&手淘\\\"},{\\\"dictFont\\\":\\\"&#xe62a;\\\",\\\"dictId\\\":\\\"etao\\\",\\\"dictName\\\":\\\"搜索\\\"}]\";\n        JSONObject jsonResult = new JSONObject();\n        JSONArray jsonArray = JSONArray.parseArray(aa);\n        jsonResult.put(\"aaa\", jsonArray);\n\n        System.out.println(jsonResult);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_long_whitespace.java",
    "content": "package com.alibaba.json.bvt.bug;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\n\r\npublic class Bug_for_long_whitespace extends TestCase {\r\n\r\n    public void test() throws Exception {\r\n        String json = \"{\\\"f1\\\":11222509, \\\"f2\\\":7}\";\r\n\r\n        VO v = JSON.parseObject(json, VO.class);\r\n        System.out.println(v.getF1());\r\n        System.out.println(v.getF2());\r\n\r\n    }\r\n\r\n    public static class VO {\r\n\r\n        private long f1;\r\n        private int  f2;\r\n\r\n        public long getF1() {\r\n            return f1;\r\n        }\r\n\r\n        public void setF1(long f1) {\r\n            this.f1 = f1;\r\n        }\r\n\r\n        public int getF2() {\r\n            return f2;\r\n        }\r\n\r\n        public void setF2(int f2) {\r\n            this.f2 = f2;\r\n        }\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_ludong.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.io.Serializable;\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_ludong extends TestCase {\n\n    public void test_for_ludong() throws Exception {\n        String msg = \"{\\\"changedItems\\\":[{\\\"attribute\\\":\\\"new\\\",\\\"benefitCustomer\\\":\\\"chance130320584431\\\",\\\"benefitCustomerContactor\\\":5809917,\\\"benefitCustomerId\\\":2001385618,\\\"bizStatus\\\":\\\"audit_pass\\\",\\\"creator\\\":\\\"dowjons\\\",\\\"defaultBiz\\\":true,\\\"discountRate\\\":100,\\\"domain\\\":\\\"nirvana\\\",\\\"executeAmount\\\":3688,\\\"gmtCreate\\\":1367856000000,\\\"gmtModified\\\":1368374400000,\\\"gmtSign\\\":1367856000000,\\\"id\\\":321600616,\\\"isDeleted\\\":\\\"n\\\",\\\"itemNum\\\":\\\"W1305070000053_1\\\",\\\"lastOperType\\\":\\\"finance_pass_rollback\\\",\\\"memberId\\\":\\\"3592950865\\\",\\\"modifier\\\":\\\"haiquan.zhanghq\\\",\\\"num\\\":12,\\\"oppId\\\":103722314,\\\"orderId\\\":315749401,\\\"parentId\\\":0,\\\"paymentAmount\\\":0,\\\"paymentStatus\\\":\\\"payment_none\\\",\\\"policyId\\\":63149,\\\"price\\\":3688,\\\"productCode\\\":\\\"pc060\\\",\\\"purchaseType\\\":\\\"bought\\\",\\\"quotedPrice\\\":3688,\\\"salesId\\\":\\\"tiandan\\\",\\\"salesOrgFullid\\\":\\\"/10/1/30/101/160/1001/1051/\\\",\\\"serviceSupplyCompany\\\":\\\"B50\\\",\\\"signSalesId\\\":\\\"tiandan\\\",\\\"signSalesOrgFullId\\\":\\\"/10/1/30/101/160/1001/1051/\\\",\\\"traceChange\\\":true,\\\"ultimatePrice\\\":3688,\\\"unServiceDay\\\":0,\\\"unit\\\":\\\"M\\\",\\\"unvoucherAmount\\\":3688,\\\"voucherStatus\\\":\\\"voucher_none\\\"}],\\\"context\\\":{\\\"payAmount\\\":3688,\\\"payDate\\\":1368442850437,\\\"paymentStatus\\\":\\\"payment_success\\\"},\\\"generateTime\\\":1368442868624,\\\"msgType\\\":\\\"PAYMENT\\\",\\\"orderNumber\\\":\\\"W1305070000053\\\"}\";\n\n        OrderInternalDto dto = JSON.parseObject(msg, OrderInternalDto.class);\n    }\n\n    public static class OrderInternalDto implements Serializable {\n\n        private static final long   serialVersionUID = 3228508302993121205L;\n\n        /* 对象生成的时间 */\n\n        private Date                generateTime;\n\n        /** 订单号 */\n\n        private String              orderNumber;\n\n        /** 对象的业务状态 */\n\n        private MSGTYPE             msgType;\n\n        /** 订单的瞬时状态 */\n\n        // private List<OrdOrderItemDto> instantItems;\n\n        /** 发生状态变化的订单行列,比如到款只是对一个订单行发生到账行为 */\n\n        private List<OrdOrderItem>  changedItems;\n\n        /** 上下文参数 */\n\n        private Map<String, Object> context;\n\n        public OrderInternalDto(){\n\n            this.generateTime = new Date();\n\n            context = new HashMap<String, Object>();\n\n        }\n\n        public void setContext(Map<String, Object> context) {\n\n            if (context == null) return;\n\n            this.context = context;\n\n        }\n\n        @Override\n        public String toString() {\n\n            return JSON.toJSONString(this);\n\n        }\n\n    }\n\n    public static class OrdOrderItem implements Cloneable, Serializable {\n\n        public static String         ORDER_ID                   = \"orderId\";\n\n        private Object               orderId;\n\n        public static String         PARENT_ID                  = \"parentId\";\n\n        private Integer              parentId;\n\n        public static String         SERIAL_NUM                 = \"serialNum\";\n\n        private String               serialNum;\n\n        public static String         ITEM_NUM                   = \"itemNum\";\n\n        private String               itemNum;\n\n        public static String         PURCHASE_TYPE              = \"purchaseType\";\n\n        private String               purchaseType;\n\n        public static String         ATTRIBUTE                  = \"attribute\";\n\n        private String               attribute;\n\n        public static String         MEMBER_ID                  = \"memberId\";\n\n        private String               memberId;\n\n        public static String         PRODUCT_CODE               = \"productCode\";\n\n        private String               productCode;\n\n        public static String         NUM                        = \"num\";\n\n        private Integer              num;\n\n        public static String         UNIT                       = \"unit\";\n\n        private String               unit;\n\n        public static String         PRICE                      = \"price\";\n\n        private java.math.BigDecimal price;\n\n        public static String         DISCOUNT_RATE              = \"discountRate\";\n\n        private java.math.BigDecimal discountRate;\n\n        public static String         QUOTED_PRICE               = \"quotedPrice\";\n\n        private java.math.BigDecimal quotedPrice;\n\n        public static String         ULTIMATE_PRICE             = \"ultimatePrice\";\n\n        private java.math.BigDecimal ultimatePrice;\n\n        public static String         EXECUTE_AMOUNT             = \"executeAmount\";\n\n        private java.math.BigDecimal executeAmount;\n\n        public static String         GMT_TARGET_BEGIN           = \"gmtTargetBegin\";\n\n        private java.util.Date       gmtTargetBegin;\n\n        public static String         GMT_TARGET_END             = \"gmtTargetEnd\";\n\n        private java.util.Date       gmtTargetEnd;\n\n        public static String         GMT_ACTUAL_BEGIN           = \"gmtActualBegin\";\n\n        private java.util.Date       gmtActualBegin;\n\n        public static String         GMT_ACTUAL_END             = \"gmtActualEnd\";\n\n        private java.util.Date       gmtActualEnd;\n\n        public static String         SERVICE_SUPPLY_COMPANY     = \"serviceSupplyCompany\";\n\n        private String               serviceSupplyCompany;\n\n        public static String         BENEFIT_CUSTOMER           = \"benefitCustomer\";\n\n        private String               benefitCustomer;\n\n        public static String         BENEFIT_CUSTOMER_ID        = \"benefitCustomerId\";\n\n        private Integer              benefitCustomerId;\n\n        public static String         BENEFIT_CUSTOMER_CONTACTOR = \"benefitCustomerContactor\";\n\n        private Integer              benefitCustomerContactor;\n\n        public static String         BIZ_STATUS                 = \"bizStatus\";\n\n        private String               bizStatus;\n\n        public static String         VOUCHER_STATUS             = \"voucherStatus\";\n\n        private String               voucherStatus;\n\n        public static String         PAYMENT_STATUS             = \"paymentStatus\";\n\n        private String               paymentStatus;\n\n        public static String         PAYMENT_AMOUNT             = \"paymentAmount\";\n\n        private java.math.BigDecimal paymentAmount;\n\n        public static String         POLICY_ID                  = \"policyId\";\n\n        private Integer              policyId;\n\n        public static String         MEMO                       = \"memo\";\n\n        private String               memo;\n\n        public static String         SUPPORTER                  = \"supporter\";\n\n        private String               supporter;\n\n        public static String         SUPPORTER_ORG_ID           = \"supporterOrgId\";\n\n        private Integer              supporterOrgId;\n\n        public static String         SUPPORTER_ORG_FULLID       = \"supporterOrgFullid\";\n\n        private String               supporterOrgFullid;\n\n        public static String         SALES_ORG_FULLID           = \"salesOrgFullid\";\n\n        private String               salesOrgFullid;\n\n        public static String         SIGN_SALES_ORG_FULLID      = \"signSalesOrgFullId\";\n\n        private String               signSalesOrgFullId;\n\n        public static String         OPP_ID                     = \"oppId\";\n\n        private Integer              oppId;\n\n        public static String         DOMAIN                     = \"domain\";\n\n        private String               domain;\n\n        public static String         UN_SERVICE_DAY             = \"unServiceDay\";\n\n        private java.math.BigDecimal unServiceDay;\n\n        public static String         PROCESS_ID                 = \"processId\";\n\n        private Long                 processId;\n\n        public static String         LAST_OPER_TYPE             = \"lastOperType\";\n\n        private String               lastOperType;\n\n        public static String         UNVOUCHER_AMOUNT           = \"unvoucherAmount\";\n\n        private java.math.BigDecimal unvoucherAmount;\n\n        public static String         GMT_VOUCHER_RECEIVE        = \"gmtVoucherReceive\";\n\n        private java.util.Date       gmtVoucherReceive;\n\n        public static String         GMT_PAYMENT_REMIT          = \"gmtPaymentRemit\";\n\n        private java.util.Date       gmtPaymentRemit;\n\n        public static String         SERVICE_JUMP_DAYS          = \"serviceJumpDays\";\n\n        private Integer              serviceJumpDays;\n\n        public static String         SIGN_SALES_ID              = \"signSalesId\";\n\n        private String               signSalesId;\n\n        public static String         SALES_ORG_ID               = \"salesOrgId\";\n\n        private Integer              salesOrgId;\n\n        public static String         SIGN_SALES_ORG_ID          = \"signSalesOrgId\";\n\n        private Integer              signSalesOrgId;\n\n        public Integer getSignSalesOrgId() {\n\n            return signSalesOrgId;\n\n        }\n\n        public void setSignSalesOrgId(Integer signSalesOrgId) {\n\n            this.signSalesOrgId = signSalesOrgId;\n\n        }\n\n        public Integer getSalesOrgId() {\n\n            return salesOrgId;\n\n        }\n\n        public void setSalesOrgId(Integer salesOrgId) {\n\n            this.salesOrgId = salesOrgId;\n\n        }\n\n        public static String SIGN_SELLER_COMPANY = \"signSellerCompany\";\n\n        private String       signSellerCompany;\n\n        public static String BARGAIN_ID          = \"bargainId\";\n\n        private Integer      bargainId;\n\n        public Integer getBargainId() {\n\n            return bargainId;\n\n        }\n\n        public void setBargainId(Integer bargainId) {\n\n            this.bargainId = bargainId;\n\n        }\n\n        public String getSignSellerCompany() {\n\n            return signSellerCompany;\n\n        }\n\n        public void setSignSellerCompany(String signSellerCompany) {\n\n            this.signSellerCompany = signSellerCompany;\n\n        }\n\n        // 增加了新签和续签销售的id\n\n        public static String SALES_ID = \"salesId\";\n\n        private String       salesId;\n\n        public String getSalesId() {\n\n            return salesId;\n\n        }\n\n        public void setSalesId(String salesId) {\n\n            this.salesId = salesId;\n\n        }\n\n        public String getRenewSalesId() {\n\n            return renewSalesId;\n\n        }\n\n        public void setRenewSalesId(String renewSalesId) {\n\n            this.renewSalesId = renewSalesId;\n\n        }\n\n        public static String   RENEW_SALES_ID = \"renewSalesId\";\n\n        private String         renewSalesId;\n\n        public static String   GMT_SIGN       = \"gmtSign\";\n\n        private java.util.Date gmtSign;\n\n        public Object getOrderId() {\n\n            return this.orderId;\n\n        }\n\n        public void setOrderId(Object orderId) {\n\n            this.orderId = orderId;\n\n        }\n\n        public Integer getParentId() {\n\n            return this.parentId;\n\n        }\n\n        public void setParentId(Integer parentId) {\n\n            this.parentId = parentId;\n\n        }\n\n        public String getSerialNum() {\n\n            return this.serialNum;\n\n        }\n\n        public void setSerialNum(String serialNum) {\n\n            this.serialNum = serialNum;\n\n        }\n\n        public String getItemNum() {\n\n            return this.itemNum;\n\n        }\n\n        public void setItemNum(String itemNum) {\n\n            this.itemNum = itemNum;\n\n        }\n\n        public String getPurchaseType() {\n\n            return this.purchaseType;\n\n        }\n\n        public void setPurchaseType(String purchaseType) {\n\n            this.purchaseType = purchaseType;\n\n        }\n\n        public String getAttribute() {\n\n            return this.attribute;\n\n        }\n\n        public void setAttribute(String attribute) {\n\n            this.attribute = attribute;\n\n        }\n\n        public String getMemberId() {\n\n            return this.memberId;\n\n        }\n\n        public void setMemberId(String memberId) {\n\n            this.memberId = memberId;\n\n        }\n\n        public String getProductCode() {\n\n            return this.productCode;\n\n        }\n\n        public void setProductCode(String productCode) {\n\n            this.productCode = productCode;\n\n        }\n\n        public Integer getNum() {\n\n            return this.num;\n\n        }\n\n        public void setNum(Integer num) {\n\n            this.num = num;\n\n        }\n\n        public String getUnit() {\n\n            return this.unit;\n\n        }\n\n        public void setUnit(String unit) {\n\n            this.unit = unit;\n\n        }\n\n        public java.math.BigDecimal getPrice() {\n\n            return this.price;\n\n        }\n\n        public void setPrice(java.math.BigDecimal price) {\n\n            this.price = price;\n\n        }\n\n        public java.math.BigDecimal getDiscountRate() {\n\n            return this.discountRate;\n\n        }\n\n        public void setDiscountRate(java.math.BigDecimal discountRate) {\n\n            this.discountRate = discountRate;\n\n        }\n\n        public java.math.BigDecimal getQuotedPrice() {\n\n            return this.quotedPrice;\n\n        }\n\n        public void setQuotedPrice(java.math.BigDecimal quotedPrice) {\n\n            this.quotedPrice = quotedPrice;\n\n        }\n\n        public java.math.BigDecimal getUltimatePrice() {\n\n            return this.ultimatePrice;\n\n        }\n\n        public void setUltimatePrice(java.math.BigDecimal ultimatePrice) {\n\n            this.ultimatePrice = ultimatePrice;\n\n        }\n\n        public java.math.BigDecimal getExecuteAmount() {\n\n            return this.executeAmount;\n\n        }\n\n        public void setExecuteAmount(java.math.BigDecimal executeAmount) {\n\n            this.executeAmount = executeAmount;\n\n        }\n\n        public java.util.Date getGmtTargetBegin() {\n\n            return this.gmtTargetBegin;\n\n        }\n\n        public void setGmtTargetBegin(java.util.Date gmtTargetBegin) {\n\n            this.gmtTargetBegin = gmtTargetBegin;\n\n        }\n\n        public java.util.Date getGmtTargetEnd() {\n\n            return this.gmtTargetEnd;\n\n        }\n\n        public void setGmtTargetEnd(java.util.Date gmtTargetEnd) {\n\n            this.gmtTargetEnd = gmtTargetEnd;\n\n        }\n\n        public java.util.Date getGmtActualBegin() {\n\n            return this.gmtActualBegin;\n\n        }\n\n        public void setGmtActualBegin(java.util.Date gmtActualBegin) {\n\n            this.gmtActualBegin = gmtActualBegin;\n\n        }\n\n        public java.util.Date getGmtActualEnd() {\n\n            return this.gmtActualEnd;\n\n        }\n\n        public void setGmtActualEnd(java.util.Date gmtActualEnd) {\n\n            this.gmtActualEnd = gmtActualEnd;\n\n        }\n\n        public String getServiceSupplyCompany() {\n\n            return this.serviceSupplyCompany;\n\n        }\n\n        public void setServiceSupplyCompany(String serviceSupplyCompany) {\n\n            this.serviceSupplyCompany = serviceSupplyCompany;\n\n        }\n\n        public String getBenefitCustomer() {\n\n            return this.benefitCustomer;\n\n        }\n\n        public void setBenefitCustomer(String benefitCustomer) {\n\n            this.benefitCustomer = benefitCustomer;\n\n        }\n\n        public Integer getBenefitCustomerId() {\n\n            return this.benefitCustomerId;\n\n        }\n\n        public void setBenefitCustomerId(Integer benefitCustomerId) {\n\n            this.benefitCustomerId = benefitCustomerId;\n\n        }\n\n        public Integer getBenefitCustomerContactor() {\n\n            return this.benefitCustomerContactor;\n\n        }\n\n        public void setBenefitCustomerContactor(Integer benefitCustomerContactor) {\n\n            this.benefitCustomerContactor = benefitCustomerContactor;\n\n        }\n\n        public String getBizStatus() {\n\n            return this.bizStatus;\n\n        }\n\n        public void setBizStatus(String bizStatus) {\n\n            this.bizStatus = bizStatus;\n\n        }\n\n        public String getVoucherStatus() {\n\n            return this.voucherStatus;\n\n        }\n\n        public void setVoucherStatus(String voucherStatus) {\n\n            this.voucherStatus = voucherStatus;\n\n        }\n\n        public String getPaymentStatus() {\n\n            return this.paymentStatus;\n\n        }\n\n        public void setPaymentStatus(String paymentStatus) {\n\n            this.paymentStatus = paymentStatus;\n\n        }\n\n        public java.math.BigDecimal getPaymentAmount() {\n\n            return this.paymentAmount;\n\n        }\n\n        public void setPaymentAmount(java.math.BigDecimal paymentAmount) {\n\n            this.paymentAmount = paymentAmount;\n\n        }\n\n        public Integer getPolicyId() {\n\n            return this.policyId;\n\n        }\n\n        public void setPolicyId(Integer policyId) {\n\n            this.policyId = policyId;\n\n        }\n\n        public String getMemo() {\n\n            return this.memo;\n\n        }\n\n        public void setMemo(String memo) {\n\n            this.memo = memo;\n\n        }\n\n        public String getSupporter() {\n\n            return this.supporter;\n\n        }\n\n        public void setSupporter(String supporter) {\n\n            this.supporter = supporter;\n\n        }\n\n        public Integer getSupporterOrgId() {\n\n            return this.supporterOrgId;\n\n        }\n\n        public void setSupporterOrgId(Integer supporterOrgId) {\n\n            this.supporterOrgId = supporterOrgId;\n\n        }\n\n        public String getSupporterOrgFullid() {\n\n            return this.supporterOrgFullid;\n\n        }\n\n        public void setSupporterOrgFullid(String supporterOrgFullid) {\n\n            this.supporterOrgFullid = supporterOrgFullid;\n\n        }\n\n        public Integer getOppId() {\n\n            return this.oppId;\n\n        }\n\n        public void setOppId(Integer oppId) {\n\n            this.oppId = oppId;\n\n        }\n\n        public String getDomain() {\n\n            return this.domain;\n\n        }\n\n        public void setDomain(String domain) {\n\n            this.domain = domain;\n\n        }\n\n        public java.math.BigDecimal getUnServiceDay() {\n\n            return this.unServiceDay;\n\n        }\n\n        public void setUnServiceDay(java.math.BigDecimal unServiceDay) {\n\n            this.unServiceDay = unServiceDay;\n\n        }\n\n        public Long getProcessId() {\n\n            return this.processId;\n\n        }\n\n        public void setProcessId(Long processId) {\n\n            this.processId = processId;\n\n        }\n\n        public String getLastOperType() {\n\n            return this.lastOperType;\n\n        }\n\n        public void setLastOperType(String lastOperType) {\n\n            this.lastOperType = lastOperType;\n\n        }\n\n        public java.math.BigDecimal getUnvoucherAmount() {\n\n            return this.unvoucherAmount;\n\n        }\n\n        public void setUnvoucherAmount(java.math.BigDecimal unvoucherAmount) {\n\n            this.unvoucherAmount = unvoucherAmount;\n\n        }\n\n        public java.util.Date getGmtVoucherReceive() {\n\n            return this.gmtVoucherReceive;\n\n        }\n\n        public void setGmtVoucherReceive(java.util.Date gmtVoucherReceive) {\n\n            this.gmtVoucherReceive = gmtVoucherReceive;\n\n        }\n\n        public java.util.Date getGmtPaymentRemit() {\n\n            return this.gmtPaymentRemit;\n\n        }\n\n        public void setGmtPaymentRemit(java.util.Date gmtPaymentRemit) {\n\n            this.gmtPaymentRemit = gmtPaymentRemit;\n\n        }\n\n        public Integer getServiceJumpDays() {\n\n            return this.serviceJumpDays;\n\n        }\n\n        public void setServiceJumpDays(Integer serviceJumpDays) {\n\n            this.serviceJumpDays = serviceJumpDays;\n\n        }\n\n        @Override\n        public Object clone() throws CloneNotSupportedException {\n\n            return super.clone();\n\n        }\n\n        public String getSignSalesId() {\n\n            return signSalesId;\n\n        }\n\n        public void setSignSalesId(String signSalesId) {\n\n            this.signSalesId = signSalesId;\n\n        }\n\n        public String getSalesOrgFullid() {\n\n            return salesOrgFullid;\n\n        }\n\n        public void setSalesOrgFullid(String salesOrgFullid) {\n\n            this.salesOrgFullid = salesOrgFullid;\n\n        }\n\n        public String getSignSalesOrgFullId() {\n\n            return signSalesOrgFullId;\n\n        }\n\n        public void setSignSalesOrgFullId(String signSalesOrgFullId) {\n\n            this.signSalesOrgFullId = signSalesOrgFullId;\n\n        }\n\n        public java.util.Date getGmtSign() {\n\n            return gmtSign;\n\n        }\n\n        public void setGmtSign(java.util.Date gmtSign) {\n\n            this.gmtSign = gmtSign;\n\n        }\n\n    }\n\n    public static class MSGTYPE {\n\n        private String name;\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_luogongwu.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * Created by wenshao on 15/06/2017.\n */\npublic class Bug_for_luogongwu extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        List<IflowItemImage> imageList = new ArrayList<IflowItemImage>();\n        IflowItemImage image = new IflowItemImage();\n        image.id = \"72c7275c6b\";\n        imageList.add(image);\n\n        imageList = new ArrayList();\n        image = new IflowItemImage();\n        image.id = \"72c7275c6c\";\n        imageList.add(image);\n\n        // force ASM\n        boolean asm = SerializeConfig.globalInstance.isAsmEnable();\n        SerializeConfig.globalInstance.setAsmEnable(true);\n\n        // Test ASM\n        Foo foo = new Foo();\n        foo.thumbnails = imageList;\n\n        String jsonString = JSON.toJSONString(foo);\n        System.out.println(jsonString);\n\n        Foo foo1 = JSON.parseObject(jsonString, Foo.class);\n\n        assertEquals(1, foo1.thumbnails.size());\n        assertNotNull(foo1.thumbnails.get(0));\n        assertSame(foo1.getThumbnail(), foo1.thumbnails.get(0));\n\n\n        // test Not ASM\n        SerializeConfig.globalInstance.setAsmEnable(false);\n        FooNotAsm fooNotAsm = new FooNotAsm();\n        fooNotAsm.thumbnails = imageList;\n\n        jsonString = JSON.toJSONString(foo);\n        System.out.println(jsonString);\n\n        FooNotAsm fooNotAsm1 = JSON.parseObject(jsonString, FooNotAsm.class);\n\n        assertEquals(1, fooNotAsm1.thumbnails.size());\n        assertNotNull(fooNotAsm1.thumbnails.get(0));\n        assertSame(fooNotAsm1.getThumbnail(), fooNotAsm1.thumbnails.get(0));\n\n        // restore\n        SerializeConfig.globalInstance.setAsmEnable(asm);\n    }\n\n    @JSONType(asm=false)\n    public static class FooNotAsm {\n        @JSONField(serialzeFeatures = SerializerFeature.DisableCircularReferenceDetect)\n        public List<IflowItemImage> thumbnails;\n\n        public IflowItemImage getThumbnail() {\n            return thumbnails != null && thumbnails.size() > 0 ? thumbnails.get(0) : null;\n        }\n    }\n\n    public static class Foo {\n        @JSONField(serialzeFeatures = SerializerFeature.DisableCircularReferenceDetect)\n        public List<IflowItemImage> thumbnails;\n\n        public IflowItemImage getThumbnail() {\n            return thumbnails != null && thumbnails.size() > 0 ? thumbnails.get(0) : null;\n        }\n    }\n\n    public static class IflowItemImage {\n        public String id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_maiksagill.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.io.InputStream;\n\nimport junit.framework.TestCase;\n\nimport org.apache.commons.io.IOUtils;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.json.bvtVO.WareHouseInfo;\n\npublic class Bug_for_maiksagill extends TestCase {\n\n    public void test_for_maiksagill() throws Exception {\n        String resource = \"json/maiksagill.json\";\n        InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource);\n        String text = IOUtils.toString(is);\n        \n        JSON.parseObject(text, WareHouseInfo[].class);\n             \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_melin.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_melin extends TestCase {\n    \n    public void test_for_melin() throws Exception {\n        Entity object = new Entity();\n        object.setId(123);\n        object.setName(\"\\\\\");\n        \n        String text = JSON.toJSONString(object);\n        \n        // {\"id\":123,\"name\":\"\\\\\"}\n        Assert.assertEquals(\"{\\\"id\\\":123,\\\"name\\\":\\\"\\\\\\\\\\\"}\", text);\n    }\n    \n    public void test_for_melin_() throws Exception {\n        Map<String, Object> map = new LinkedHashMap<String, Object>();\n        map.put(\"id\", 123);\n        map.put(\"name\", \"\\\\\");\n        \n        String text = JSON.toJSONString(map);\n        \n        // {\"id\":123,\"name\":\"\\\\\"}\n        Assert.assertEquals(\"{\\\"id\\\":123,\\\"name\\\":\\\"\\\\\\\\\\\"}\", text);\n    }\n\n    public static class Entity {\n\n        private int    id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_primitive_boolean.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_primitive_boolean extends TestCase {\n\n    public void test_emptyStr() throws Exception {\n        JSON.parseObject(\"{\\\"value\\\":\\\"\\\"}\", VO.class);\n    }\n    \n    public void test_null() throws Exception {\n        JSON.parseObject(\"{\\\"value\\\":null}\", VO.class);\n    }\n    \n    public void test_strNull() throws Exception {\n        JSON.parseObject(\"{\\\"value\\\":\\\"null\\\"}\", VO.class);\n    }\n\n    public static class VO {\n\n        private boolean value;\n\n        public boolean getValue() {\n            return value;\n        }\n\n        public void setValue(boolean value) {\n            throw new UnsupportedOperationException();\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_primitive_byte.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_primitive_byte extends TestCase {\n\n    public void test_emptyStr() throws Exception {\n        JSON.parseObject(\"{\\\"value\\\":\\\"\\\"}\", VO.class);\n    }\n    \n    public void test_null() throws Exception {\n        JSON.parseObject(\"{\\\"value\\\":null}\", VO.class);\n    }\n    \n    public void test_strNull() throws Exception {\n        JSON.parseObject(\"{\\\"value\\\":\\\"null\\\"}\", VO.class);\n    }\n\n    public static class VO {\n\n        private byte value;\n\n        public byte getValue() {\n            return value;\n        }\n\n        public void setValue(byte value) {\n            throw new UnsupportedOperationException();\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_primitive_double.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_primitive_double extends TestCase {\n\n    public void test_emptyStr() throws Exception {\n        JSON.parseObject(\"{\\\"value\\\":\\\"\\\"}\", VO.class);\n    }\n    \n    public void test_null() throws Exception {\n        JSON.parseObject(\"{\\\"value\\\":null}\", VO.class);\n    }\n    \n    public void test_strNull() throws Exception {\n        JSON.parseObject(\"{\\\"value\\\":\\\"null\\\"}\", VO.class);\n    }\n\n    public static class VO {\n\n        private double value;\n\n        public double getValue() {\n            return value;\n        }\n\n        public void setValue(double value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_primitive_float.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_primitive_float extends TestCase {\n\n    public void test_emptyStr() throws Exception {\n        JSON.parseObject(\"{\\\"value\\\":\\\"\\\"}\", VO.class);\n    }\n    \n    public void test_null() throws Exception {\n        JSON.parseObject(\"{\\\"value\\\":null}\", VO.class);\n    }\n    \n    public void test_strNull() throws Exception {\n        JSON.parseObject(\"{\\\"value\\\":\\\"null\\\"}\", VO.class);\n    }\n\n    public static class VO {\n\n        private float value;\n\n        public float getValue() {\n            return value;\n        }\n\n        public void setValue(float value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_primitive_int.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_primitive_int extends TestCase {\n\n    public void test_emptyStr() throws Exception {\n        JSON.parseObject(\"{\\\"value\\\":\\\"\\\"}\", VO.class);\n    }\n    \n    public void test_null() throws Exception {\n        JSON.parseObject(\"{\\\"value\\\":null}\", VO.class);\n    }\n    \n    public void test_strNull() throws Exception {\n        JSON.parseObject(\"{\\\"value\\\":\\\"null\\\"}\", VO.class);\n    }\n\n    public static class VO {\n\n        private int value;\n\n        public int getValue() {\n            return value;\n        }\n\n        public void setValue(int value) {\n            throw new UnsupportedOperationException();\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_primitive_long.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_primitive_long extends TestCase {\n\n    public void test_emptyStr() throws Exception {\n        JSON.parseObject(\"{\\\"value\\\":\\\"\\\"}\", VO.class);\n    }\n    \n    public void test_null() throws Exception {\n        JSON.parseObject(\"{\\\"value\\\":null}\", VO.class);\n    }\n    \n    public void test_strNull() throws Exception {\n        JSON.parseObject(\"{\\\"value\\\":\\\"null\\\"}\", VO.class);\n    }\n\n    public static class VO {\n\n        private long value;\n\n        public long getValue() {\n            return value;\n        }\n\n        public void setValue(long value) {\n            throw new UnsupportedOperationException();\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_primitive_short.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_primitive_short extends TestCase {\n\n    public void test_emptyStr() throws Exception {\n        JSON.parseObject(\"{\\\"value\\\":\\\"\\\"}\", VO.class);\n    }\n    \n    public void test_null() throws Exception {\n        JSON.parseObject(\"{\\\"value\\\":null}\", VO.class);\n    }\n    \n    public void test_strNull() throws Exception {\n        JSON.parseObject(\"{\\\"value\\\":\\\"null\\\"}\", VO.class);\n    }\n\n    public static class VO {\n\n        private short value;\n\n        public short getValue() {\n            return value;\n        }\n\n        public void setValue(short value) {\n            throw new UnsupportedOperationException();\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_qianbi.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\npublic class Bug_for_qianbi extends TestCase {\n    public void test_for_bug() throws Exception {\n        String json = \"\\n\" +\n                \"[{\\\"a\\\":\\\"1A18810QBYZN5T3M3CH6K3\\\",\\\"r\\\":[\\\"44304\\\",\\\"103467\\\"]},{\\\"a\\\":\\\"1A188104CTUW5TXFGCJPDW\\\",\\\"r\\\":[\\\"24391\\\",\\\"56132\\\",\\\"44304\\\",\\\"15567\\\"]},{\\\"a\\\":\\\"1A18812GJ9P37TOGKPT8BQ\\\",\\\"r\\\":[\\\"24539\\\",\\\"44304\\\",\\\"56259\\\"]} ,{\\\"a\\\":\\\"1A188104CTUW5TXFGCJPDW\\\",\\\"r\\\":[\\\"24391\\\",\\\"44304\\\",\\\"15567\\\"]}]\";\n\n        JSON.parse(json);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_qqdwll2012.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeFilter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_qqdwll2012 extends TestCase {\n\n    public void test_for_x() throws Exception {\n        VO vo = new VO();\n        vo.setValue(\"<a href=\\\"http://www.baidu.com\\\"> 问题链接 </a> \");\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.WriteSlashAsSpecial);\n        System.out.println(text);\n    }\n\n    public static class VO {\n\n        private String value;\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_rd.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\nimport java.util.concurrent.TimeUnit;\n\npublic class Bug_for_rd extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"{ \\\"sitePayId\\\": \\\"2019071889031100000152604119889\\\", \\\"extendInfo\\\": \\\"{\\\\\\\"saveAsset\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"acquirementId\\\\\\\":\\\\\\\"20190718194010800100177150204979354\\\\\\\",\\\\\\\"orderTerminalType\\\\\\\":\\\\\\\"WEB\\\\\\\",\\\\\\\"acqSiteUserId\\\\\\\":\\\\\\\"2177220032166157\\\\\\\",\\\\\\\"siteReqBizId\\\\\\\":\\\\\\\"111023437\\\\\\\",\\\\\\\"msisdn\\\\\\\":\\\\\\\"01966114400\\\\\\\",\\\\\\\"originalMerchantOrderId\\\\\\\":\\\\\\\"602109378031994\\\\\\\"}\\\", \\\"netPayId\\\": \\\"2019071819039101720000454701\\\", \\\"resultInfo\\\": { \\\"resultCode\\\": \\\"SUCCESS\\\", \\\"resultCodeId\\\": \\\"00000000\\\", \\\"resultMsg\\\": \\\"Success\\\", \\\"resultStatus\\\": \\\"S\\\" } }\";\n        PayResponse object = JSON.parseObject(json, PayResponse.class);\n        String extendInfo = object.getExtendInfo();\n\n        assertEquals(object.getExtendInfo(), JSON.parseObject(json).get(\"extendInfo\"));\n    }\n\n    public void test_for_issue_1() throws Exception {\n        String json = \"{\\\"unit\\\": \\\"MINUTES\\\"}\";\n        V1 v = JSON.parseObject(json, V1.class);\n        assertEquals(TimeUnit.MINUTES, v.unit);\n    }\n\n    public void test_for_issue_2() throws Exception {\n        String json = \"{\\\"sitePayId\\\": \\\"MINUTES\\\"}\";\n        V1 v = JSON.parseObject(json, V1.class);\n        assertEquals(\"MINUTES\", v.sitePayId);\n    }\n\n    public void test_for_issue_3() throws Exception {\n        String json = \"{\\\"sitePayId\\\": \\\"MINUTES\\\\\\\"A\\\"}\";\n        V1 v = JSON.parseObject(json, V1.class);\n        assertEquals(\"MINUTES\\\"A\", v.sitePayId);\n    }\n\n    public void test_for_issue_4() throws Exception {\n        String json = \"{   \\\"sitePayId\\\": \\\"MINUTES\\\\\\\"A\\\"}\";\n        V1 v = JSON.parseObject(json, V1.class);\n        assertEquals(\"MINUTES\\\"A\", v.sitePayId);\n    }\n\n    public void test_for_issue_5() throws Exception {\n        String json = \"{   \\\"sitePayId\\\": \\\"\\\\\\\"A\\\"}\";\n        V1 v = JSON.parseObject(json, V1.class);\n        assertEquals(\"\\\"A\", v.sitePayId);\n    }\n\n    public void test_for_issue_6() throws Exception {\n        String json = \"{   \\\"sitePayId\\\": \\\"S\\\"}\";\n        V1 v = JSON.parseObject(json, V1.class);\n        assertEquals(\"S\", v.sitePayId);\n    }\n\n    public static class PayResponse {\n        private String            sitePayId;\n        private String            extendInfo;\n        private String            netPayId;\n\n        public String getSitePayId()\n        {\n            return sitePayId;\n        }\n\n        public void setSitePayId(String sitePayId)\n        {\n            this.sitePayId = sitePayId;\n        }\n\n        public String getExtendInfo()\n        {\n            return extendInfo;\n        }\n\n        public void setExtendInfo(String extendInfo)\n        {\n            this.extendInfo = extendInfo;\n        }\n\n        public String getNetPayId()\n        {\n            return netPayId;\n        }\n\n        public void setNetPayId(String netPayId)\n        {\n            this.netPayId = netPayId;\n        }\n    }\n\n    public static class V1 {\n        public String            sitePayId;\n        public TimeUnit unit;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_rendong.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashSet;\nimport java.util.Map;\nimport java.util.Set;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class Bug_for_rendong extends TestCase {\n\n\tpublic void test_0() throws Exception {\n\t\tString text = \"{\\\"BX-20110613-1739\\\":{\\\"repairNum\\\":\\\"BX-20110613-1739\\\",\\\"set\\\":[{\\\"employNum\\\":\\\"a1027\\\",\\\"isConfirm\\\":false,\\\"isReceive\\\":false,\\\"state\\\":11}]},\\\"BX-20110613-1749\\\":{\\\"repairNum\\\":\\\"BX-20110613-1749\\\",\\\"set\\\":[{\\\"employNum\\\":\\\"a1027\\\",\\\"isConfirm\\\":false,\\\"isReceive\\\":true,\\\"state\\\":1}]}}\";\n\n\t\tMap<String, TaskMobileStatusBean> map = JSON.parseObject(text,\n\t\t\t\tnew TypeReference<Map<String, TaskMobileStatusBean>>() {\n\t\t\t\t});\n\n\t\tAssert.assertEquals(2, map.size());\n\t\t// System.out.println(JSON.toJSONString(map,\n\t\t// SerializerFeature.PrettyFormat));\n\t}\n\n\tpublic static class TaskMobileStatusBean {\n\n\t\tprivate String repairNum;\n\n\t\tprivate Set<PeopleTaskMobileStatusBean> set = new HashSet<PeopleTaskMobileStatusBean>();\n\n\t\tpublic String getRepairNum() {\n\t\t\treturn repairNum;\n\t\t}\n\n\t\tpublic void setRepairNum(String repairNum) {\n\t\t\tthis.repairNum = repairNum;\n\t\t}\n\n\t\tpublic Set<PeopleTaskMobileStatusBean> getSet() {\n\t\t\treturn set;\n\t\t}\n\n\t\tpublic void setSet(Set<PeopleTaskMobileStatusBean> set) {\n\t\t\tthis.set = set;\n\t\t}\n\n\t}\n\n\tpublic static class PeopleTaskMobileStatusBean {\n\n\t\tprivate String employNum;\n\t\tprivate Boolean isConfirm;\n\t\tprivate Boolean isReceive;\n\t\tprivate int state;\n\n\t\tpublic String getEmployNum() {\n\t\t\treturn employNum;\n\t\t}\n\n\t\tpublic void setEmployNum(String employNum) {\n\t\t\tthis.employNum = employNum;\n\t\t}\n\n\t\tpublic Boolean getIsConfirm() {\n\t\t\treturn isConfirm;\n\t\t}\n\n\t\tpublic void setIsConfirm(Boolean isConfirm) {\n\t\t\tthis.isConfirm = isConfirm;\n\t\t}\n\n\t\tpublic Boolean getIsReceive() {\n\t\t\treturn isReceive;\n\t\t}\n\n\t\tpublic void setIsReceive(Boolean isReceive) {\n\t\t\tthis.isReceive = isReceive;\n\t\t}\n\n\t\tpublic int getState() {\n\t\t\treturn state;\n\t\t}\n\n\t\tpublic void setState(int state) {\n\t\t\tthis.state = state;\n\t\t}\n\n\t}\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_ruiqi.java",
    "content": "package com.alibaba.json.bvt.bug;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class Bug_for_ruiqi extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        Map<String, Enum> map = new HashMap<String, Enum>();\r\n        map.put(\"a\", Enum.ENUM1);\r\n        map.put(\"b\", Enum.ENUM1);\r\n\r\n        System.out.println(JSON.toJSONString(map, SerializerFeature.WriteEnumUsingToString));\r\n\r\n        System.out.println(JSON.toJSONString(map));\r\n\r\n    }\r\n\r\n    public static enum Enum {\r\n\r\n        ENUM1(\"name1\"), ENUM2(\"name2\");\r\n\r\n        private String name;\r\n\r\n        Enum(String name){\r\n            this.name = name;\r\n        }\r\n\r\n        public String getName() {\r\n            return name;\r\n        }\r\n\r\n        @Override\r\n        public String toString() {\r\n            return \"name: \" + name;\r\n        }\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_sankun.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.json.bvtVO.PushMsg;\n\n\npublic class Bug_for_sankun extends TestCase {\n    public void test_sankun() throws Exception {\n        PushMsg bean = new PushMsg();\n        JSON.toJSONString(bean);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_sanxiao.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.io.InputStream;\n\nimport junit.framework.TestCase;\n\nimport org.apache.commons.io.IOUtils;\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\npublic class Bug_for_sanxiao extends TestCase {\n\n    public void test_0() throws Exception {\n\n        InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"json/Bug_for_sanxiao.json\");\n        String text = IOUtils.toString(is);\n        is.close();\n\n        JSONObject obj = JSON.parseObject(text);\n        System.out.println(obj);\n        Assert.assertEquals(obj.getJSONArray(\"segments\").getJSONObject(0),\n                            obj.getJSONArray(\"passengerSegmentItems\").getJSONObject(0).get(\"segment\"));\n        Assert.assertEquals(1428,\n                            obj.getJSONArray(\"passengerSegmentItems\").getJSONObject(0).getJSONObject(\"segment\").getIntValue(\"agentId\"));\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_set.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\n\npublic class Bug_for_set extends TestCase {\n    public void test_set() throws Exception {\n        JSON.parseArray(\"Set[]\");\n    }\n    \n    public void test_treeset() throws Exception {\n        JSON.parseArray(\"TreeSet[]\");\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_shortArray.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_shortArray extends TestCase {\n    public void test_for_shor_array() throws Exception {\n        HashMap map = new HashMap();\n        map.put((short) 1, (short)-1);\n        \n        String text = JSON.toJSONString(map, SerializerFeature.WriteClassName);\n        \n        System.out.println(text);\n        \n        Map map2 = JSON.parseObject(text, HashMap.class);\n        Map.Entry entry = (Map.Entry) map2.entrySet().iterator().next();\n        Assert.assertEquals(entry.getKey().getClass(), Short.class);\n        Assert.assertTrue(entry.getValue() instanceof Short);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_smoothrat.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_smoothrat extends TestCase {\n\n    public void test_0() throws Exception {\n        Entity entity = new Entity();\n        \n        entity.setValue(\"aaa123\".toCharArray());\n        \n        String text = JSON.toJSONString(entity);\n        Assert.assertEquals(\"{\\\"value\\\":\\\"aaa123\\\"}\", text);\n\n        Entity entity2 = JSON.parseObject(text, Entity.class);\n        \n        Assert.assertEquals(new String(entity.getValue()), new String(entity2.getValue()));\n    }\n\n    public static class Entity {\n\n        private char[] value;\n\n        public char[] getValue() {\n            return value;\n        }\n\n        public void setValue(char[] value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_smoothrat2.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_smoothrat2 extends TestCase {\n\n    public void test_0() throws Exception {\n        long millis = System.currentTimeMillis();\n        \n        java.sql.Time time = new java.sql.Time(millis);\n        Entity entity = new Entity();\n        \n        entity.setValue(new java.sql.Time(millis));\n        \n        String text = JSON.toJSONString(entity);\n        Assert.assertEquals(\"{\\\"value\\\":\" + millis + \"}\", text);\n\n        Entity entity2 = JSON.parseObject(text, Entity.class);\n        Assert.assertEquals(time, entity2.getValue());\n        \n    }\n\n    public static class Entity {\n\n        private java.sql.Time value;\n\n        public java.sql.Time getValue() {\n            return value;\n        }\n\n        public void setValue(java.sql.Time value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_smoothrat3.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_smoothrat3 extends TestCase {\n\n    public void test_0() throws Exception {\n        long millis = System.currentTimeMillis();\n        \n        java.sql.Time time = new java.sql.Time(millis);\n        Entity entity = new Entity();\n        \n        entity.setValue(new java.sql.Time(millis));\n        \n        String text = JSON.toJSONString(entity, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.bug.Bug_for_smoothrat3$Entity\\\",\\\"value\\\":{\\\"@type\\\":\\\"java.sql.Time\\\",\\\"val\\\":\" + millis + \"}}\", text);\n\n        Entity entity2 = JSON.parseObject(text, Entity.class);\n        Assert.assertEquals(time, entity2.getValue());\n        \n    }\n\n    public static class Entity {\n\n        private Object value;\n\n        public Object getValue() {\n            return value;\n        }\n\n        public void setValue(Object value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_smoothrat4.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_smoothrat4 extends TestCase {\n\n    public void test_long() throws Exception {\n\n        Entity entity = new Entity();\n\n        entity.setValue(3L);\n\n        String text = JSON.toJSONString(entity, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.bug.Bug_for_smoothrat4$Entity\\\",\\\"value\\\":3L}\",\n                            text);\n\n        Entity entity2 = JSON.parseObject(text, Entity.class);\n        Assert.assertEquals(Long.valueOf(3), entity2.getValue());\n    }\n\n    public void test_int() throws Exception {\n\n        Entity entity = new Entity();\n\n        entity.setValue(3);\n\n        String text = JSON.toJSONString(entity, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.bug.Bug_for_smoothrat4$Entity\\\",\\\"value\\\":3}\", text);\n\n        Entity entity2 = JSON.parseObject(text, Entity.class);\n        Assert.assertEquals(Integer.valueOf(3), entity2.getValue());\n    }\n\n    public void test_short() throws Exception {\n\n        Entity entity = new Entity();\n\n        entity.setValue((short) 3);\n\n        String text = JSON.toJSONString(entity, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.bug.Bug_for_smoothrat4$Entity\\\",\\\"value\\\":3S}\",\n                            text);\n\n        Entity entity2 = JSON.parseObject(text, Entity.class);\n        Assert.assertEquals(Short.valueOf((short) 3), entity2.getValue());\n    }\n\n    public void test_byte() throws Exception {\n\n        Entity entity = new Entity();\n\n        entity.setValue((byte) 3);\n\n        String text = JSON.toJSONString(entity, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.bug.Bug_for_smoothrat4$Entity\\\",\\\"value\\\":3B}\",\n                            text);\n\n        Entity entity2 = JSON.parseObject(text, Entity.class);\n        Assert.assertEquals(Byte.valueOf((byte) 3), entity2.getValue());\n    }\n\n    public void test_float() throws Exception {\n\n        Entity entity = new Entity();\n\n        entity.setValue(3F);\n\n        String text = JSON.toJSONString(entity, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.bug.Bug_for_smoothrat4$Entity\\\",\\\"value\\\":3.0F}\",\n                            text);\n\n        Entity entity2 = JSON.parseObject(text, Entity.class);\n        Assert.assertEquals(3F, entity2.getValue());\n    }\n\n    public void test_double() throws Exception {\n\n        Entity entity = new Entity();\n\n        entity.setValue(3D);\n\n        String text = JSON.toJSONString(entity, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.bug.Bug_for_smoothrat4$Entity\\\",\\\"value\\\":3.0D}\",\n                            text);\n\n        Entity entity2 = JSON.parseObject(text, Entity.class);\n        Assert.assertEquals(3D, entity2.getValue());\n    }\n\n    public static class Entity {\n\n        private Object value;\n\n        public Object getValue() {\n            return value;\n        }\n\n        public void setValue(Object value) {\n            this.value = value;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_smoothrat5.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.LinkedHashMap;\nimport java.util.Map;\nimport java.util.TreeMap;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_smoothrat5 extends TestCase {\n\n    public void test_map() throws Exception {\n        Map<Object, Object> map = new LinkedHashMap<Object, Object>();\n        map.put(34L, \"b\");\n        map.put(12, \"a\");\n\n        Entity entity = new Entity();\n\n        entity.setValue(map);\n\n        String text = JSON.toJSONString(entity, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.bug.Bug_for_smoothrat5$Entity\\\",\\\"value\\\":{\\\"@type\\\":\\\"java.util.LinkedHashMap\\\",34L:\\\"b\\\",12:\\\"a\\\"}}\",\n                            text);\n\n        Entity entity2 = JSON.parseObject(text, Entity.class);\n        Assert.assertEquals(map, entity2.getValue());\n        Assert.assertEquals(map.getClass(), entity2.getValue().getClass());\n    }\n    \n    public void test_treemap() throws Exception {\n        TreeMap<Object, Object> map = new TreeMap<Object, Object>();\n        map.put(-34L, \"b\");\n        map.put(-56L, \"a\");\n        \n\n        Entity entity = new Entity();\n\n        entity.setValue(map);\n\n        String text = JSON.toJSONString(entity, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.bug.Bug_for_smoothrat5$Entity\\\",\\\"value\\\":{\\\"@type\\\":\\\"java.util.TreeMap\\\",-56L:\\\"a\\\",-34L:\\\"b\\\"}}\",\n                            text);\n\n        Entity entity2 = JSON.parseObject(text, Entity.class);\n        Assert.assertEquals(map, entity2.getValue());\n        Assert.assertEquals(map.getClass(), entity2.getValue().getClass());\n    }\n\n    public static class Entity {\n\n        private Object value;\n\n        public Object getValue() {\n            return value;\n        }\n\n        public void setValue(Object value) {\n            this.value = value;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_smoothrat6.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.LinkedHashSet;\nimport java.util.Set;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_smoothrat6 extends TestCase {\n\n    public void test_set() throws Exception {\n        Set<Object> set = new LinkedHashSet<Object>();\n        set.add(3L);\n        set.add(4L);\n\n        Entity entity = new Entity();\n\n        entity.setValue(set);\n\n        String text = JSON.toJSONString(entity, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.bug.Bug_for_smoothrat6$Entity\\\",\\\"value\\\":Set[3L,4L]}\",\n                            text);\n\n        Entity entity2 = JSON.parseObject(text, Entity.class);\n        Assert.assertEquals(set, entity2.getValue());\n        //Assert.assertEquals(set.getClass(), entity2.getValue().getClass());\n    }\n    \n\n    public static class Entity {\n\n        private Object value;\n\n        public Object getValue() {\n            return value;\n        }\n\n        public void setValue(Object value) {\n            this.value = value;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_smoothrat7.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_smoothrat7 extends TestCase {\n\n    @SuppressWarnings(\"unchecked\")\n\tpublic void test_self() throws Exception {\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"self\", map);\n\n        String text = JSON.toJSONString(map, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"java.util.HashMap\\\",\\\"self\\\":{\\\"$ref\\\":\\\"@\\\"}}\",\n                            text);\n\n        Map<String, Object> entity2 = (Map<String, Object>) JSON.parse(text);\n        Assert.assertEquals(map.getClass(), entity2.getClass());\n        Assert.assertSame(entity2, entity2.get(\"self\"));\n    }\n    \n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_smoothrat8.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_smoothrat8 extends TestCase {\n\n    public void test_set() throws Exception {\n        Map<Integer, Object> map = new LinkedHashMap<Integer, Object>();\n        map.put(1, \"a\");\n        map.put(2, \"b\");\n\n        Entity entity = new Entity();\n\n        entity.setValue(map);\n\n        String text = JSON.toJSONString(entity, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.bug.Bug_for_smoothrat8$Entity\\\",\\\"value\\\":{\\\"@type\\\":\\\"java.util.LinkedHashMap\\\",1:\\\"a\\\",2:\\\"b\\\"}}\",\n                            text);\n\n        Entity entity2 = JSON.parseObject(text, Entity.class);\n        Assert.assertEquals(map, entity2.getValue());\n        Assert.assertEquals(map.getClass(), entity2.getValue().getClass());\n        Assert.assertEquals(Integer.class, ((Map)entity2.getValue()).keySet().iterator().next().getClass());\n    }\n    \n\n    public static class Entity {\n\n        private Object value;\n\n        public Object getValue() {\n            return value;\n        }\n\n        public void setValue(Object value) {\n            this.value = value;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_smoothrat9.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_smoothrat9 extends TestCase {\n\n    public void test_set() throws Exception {\n        Map<Integer, Object> map = new LinkedHashMap<Integer, Object>();\n        map.put(1, \"a\");\n        map.put(2, \"b\");\n\n\n        String text = JSON.toJSONString(map, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"java.util.LinkedHashMap\\\",1:\\\"a\\\",2:\\\"b\\\"}\",\n                            text);\n\n        Map<Integer, Object> value = (Map<Integer, Object>) JSON.parse(text);\n        Assert.assertEquals(map, value);\n        Assert.assertEquals(map.getClass(), value.getClass());\n        Assert.assertEquals(Integer.class, value.keySet().iterator().next().getClass());\n    }\n    \n\n    public static class Entity {\n\n        private Object value;\n\n        public Object getValue() {\n            return value;\n        }\n\n        public void setValue(Object value) {\n            this.value = value;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_stv_liu.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.io.Serializable;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_stv_liu extends TestCase {\n    protected void setUp() throws Exception {\n        com.alibaba.fastjson.parser.ParserConfig.global.addAccept(\"com.alibaba.json.bvt.bug.Bug_for_stv_liu.\");\n    }\n\n    public void test() {\n        User user = new User();\n        user.setId(\"1\");\n        user.setUsername(\"test\");\n        String json = JSON.toJSONString(user, SerializerFeature.WriteClassName);\n        user = (User) JSON.parse(json);// 此处抛异常\n        Assert.assertNotNull(user);\n    }\n\n    public static interface IdEntity<T extends Serializable> extends Serializable {\n\n        T getId();\n\n        void setId(T id);\n    }\n\n    public static class BaseEntity implements IdEntity<String> {\n\n        private static final long serialVersionUID = 1L;\n        private String            id;\n\n        public String getId() {\n            return id;\n        }\n\n        public void setId(String id) {\n            this.id = id;\n        }\n    }\n\n    public static class User extends BaseEntity {\n\n        private String username;\n\n        /**\n         * @return the username\n         */\n        public String getUsername() {\n            return username;\n        }\n\n        /**\n         * @param username the username to set\n         */\n        public void setUsername(String username) {\n            this.username = username;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_sunai.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.List;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_sunai extends TestCase {\n    public void test_for_sunai() throws Exception {\n        String text = \"{\\\"description\\\":\\\"【\\\\r\\\\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx！xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr\\\\nid:10000000\\\",\\\"detail\\\":\\\"【xxxx】\\\\r\\\\nxxxx：2019xxxxx、xx、xxxxxxxx；驾校、教练极力推荐下载！\\\\r\\\\n全国92%的xxxxxx！累计帮助1亿用户考取驾照，是一款口口相传的飞机GPP！ \\\\r\\\\n【产品简介】\\\\r\\\\nSNSNAPP有2099年最新的“科目一、科目四”理论考试题库，特别方便学员做题，并能快速提高成绩；此外还有科目小三路考和科目三大路考秘笈，独家内部制作的学车视频，不受学员欢迎；微社区不让车友吐吐槽、晒晒照、交流学车技巧和心得，让大家感觉在学车途中不寂寞！ \\\\r\\\\n联系我们】\\\\r\\\\n钓鱼网站：http://ddd.sunyu.com\\\\r\\\\n渠道合作: sunai@369.com\\\\r\\\\n微信公众号：SNSN\\\\r\\\\nid:99999999\\\",\\\"logo\\\":\\\"\\\",\\\"name\\\":\\\"\\\",\\\"pics\\\":[\\\"http://99999.meimaocdn.com/snscom/GD99999HVXXXXXGXVXXXXXXXXXX?xxxxx=GD99999HVXXXXXGXVXXXXXXXXXX\\\",\\\"http://99999.meimaocdn.com/snscom/TB1TcILJpXXXXbIXpXXXXXXXXXX?xxxxx=TB1TcILJpXXXXbIXpXXXXXXXXXX\\\",\\\"http://99999.meimaocdn.com/snscom/GD2M5.OJpXXXXaOXpXXXXXXXXXX?xxxxx=GD2M5.OJpXXXXaOXpXXXXXXXXXX\\\",\\\"http://99999.meimaocdn.com/snscom/TB1QWElIpXXXXXvXpXXXXXXXXXX?xxxxx=TB1QWElIpXXXXXvXpXXXXXXXXXX\\\",\\\"http://99999.meimaocdn.com/snscom/TB1wZUQJpXXXXajXpXXXXXXXXXX?xxxxx=TB1wZUQJpXXXXajXpXXXXXXXXXX\\\"]}\";\n        MultiLingual ml = JSON.parseObject(text, MultiLingual.class);\n        String text2 = JSON.toJSONString(ml);\n        System.out.println(text2);\n        Assert.assertEquals(text, text2);\n    }\n\n    public static class MultiLingual {\n\n        /**\n         * 语种\n         */\n        private String             lang;\n        /**\n         * 应用名称\n         */\n        private String             name;\n        /**\n         * 分类名称\n         */\n        private String             catName;\n        /**\n         * 大卡片图标\n         */\n        private String             cardLogo;\n        /**\n         * 默认图标\n         */\n        private String             logo;\n        /**\n         * 预览图等\n         */\n        private List<String>       pics;\n\n\n        /**\n         * 商品详情\n         */\n        private String             detail;\n        /**\n         * APP/VERSION 描述\n         */\n        private String             description;\n        \n        public String getLang() {\n            return lang;\n        }\n        \n        public void setLang(String lang) {\n            this.lang = lang;\n        }\n        \n        public String getName() {\n            return name;\n        }\n        \n        public void setName(String name) {\n            this.name = name;\n        }\n        \n        public String getCatName() {\n            return catName;\n        }\n        \n        public void setCatName(String catName) {\n            this.catName = catName;\n        }\n        \n        public String getCardLogo() {\n            return cardLogo;\n        }\n        \n        public void setCardLogo(String cardLogo) {\n            this.cardLogo = cardLogo;\n        }\n        \n        public String getLogo() {\n            return logo;\n        }\n        \n        public void setLogo(String logo) {\n            this.logo = logo;\n        }\n        \n        public List<String> getPics() {\n            return pics;\n        }\n        \n        public void setPics(List<String> pics) {\n            this.pics = pics;\n        }\n        \n        \n        public String getDetail() {\n            return detail;\n        }\n        \n        public void setDetail(String detail) {\n            this.detail = detail;\n        }\n        \n        public String getDescription() {\n            return description;\n        }\n        \n        public void setDescription(String description) {\n            this.description = description;\n        }\n        \n        \n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_taolei0628.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashMap;\nimport java.util.Random;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\n\npublic class Bug_for_taolei0628 extends TestCase {\n    static final Random rand = new Random(1);\n    static String createString()\n    {\n        char[] cs = new char[31];\n        for(int i=0;i<cs.length;)\n        {\n            char c = (char)rand.nextInt(65536);\n            if(Character.isDefined(c))\n                cs[i++] = c;\n        }\n        return new String(cs);\n    }\n    static final Object createObject()\n    {\n        HashMap map = new HashMap();\n        for(int i=0;i<10000;i++)\n        {\n            String key = createString();\n            String value = createString();\n            map.put(key,value);\n        }\n        return new Object[]{map,map};\n    }\n    \n    public void test_bug() throws Exception {\n        Object object = createObject();\n        \n        JSON.toJSONString(object);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_typeReference.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\n\npublic class Bug_for_typeReference extends TestCase {\n    public void test_0 () throws Exception {\n        String text = \"[]\";\n        JSON.parseObject(text, new TypeReference<List<String>>(){}.getType());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_uin57.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.io.Serializable;\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic class Bug_for_uin57 extends TestCase {\n\n    public void test_multiArray() throws Exception {\n        String jsonString = \"{\\\"block\\\":{\\\"boxList\\\":[{\\\"dx\\\":1,\\\"dy\\\":1},{\\\"dx\\\":0,\\\"dy\\\":0},{\\\"dx\\\":0,\\\"dy\\\":2},{\\\"dx\\\":2,\\\"dy\\\":0},{\\\"dx\\\":2,\\\"dy\\\":2}],\\\"centerBox\\\":{\\\"dx\\\":1,\\\"dy\\\":1},\\\"offsetX\\\":0,\\\"offsetY\\\":0},\\\"boxs\\\":[[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null]]}\";\n\n        GameSnapShot gs = JSON.parseObject(jsonString, GameSnapShot.class);\n\n        Block block = gs.getBlock();\n        Assert.assertEquals(5, block.getBoxList().size());\n        Assert.assertEquals(1, block.getBoxList().get(0).getX());\n        Assert.assertEquals(1, block.getBoxList().get(0).getY());\n        Assert.assertEquals(0, block.getBoxList().get(2).getX());\n        Assert.assertEquals(2, block.getBoxList().get(2).getY());\n        \n        Box[][] boxs = gs.getBoxs();\n        Assert.assertEquals(20, boxs.length);\n        Assert.assertEquals(12, boxs[0].length);\n    }\n\n    public static class GameSnapShot implements Serializable {\n\n        /**\n         * \n         */\n        private static final long serialVersionUID = 8755961532274905269L;\n        protected Box[][]         boxs             = null;\n        private Block             block;\n\n        public GameSnapShot(){\n            super();\n        }\n\n        public GameSnapShot(Box[][] boxs, Block block){\n            super();\n            this.boxs = boxs;\n            this.block = block;\n        }\n\n        public Box[][] getBoxs() {\n            return boxs;\n        }\n\n        public void setBoxs(Box[][] boxs) {\n            this.boxs = boxs;\n        }\n\n        public Block getBlock() {\n            return block;\n        }\n\n        public void setBlock(Block block) {\n            this.block = block;\n        }\n\n    }\n\n    public static class Box {\n\n        @JSONField(name = \"dx\")\n        private int x;\n\n        @JSONField(name = \"dy\")\n        private int y;\n\n        public int getX() {\n            return x;\n        }\n\n        public void setX(int x) {\n            this.x = x;\n        }\n\n        public int getY() {\n            return y;\n        }\n\n        public void setY(int y) {\n            this.y = y;\n        }\n\n    }\n\n    public static class Block {\n\n        private List<Box> boxList = new ArrayList<Box>();\n\n        private Box       centerBox;\n\n        private int       offsetX;\n\n        private int       offsetY;\n\n        public int getOffsetX() {\n            return offsetX;\n        }\n\n        public void setOffsetX(int offsetX) {\n            this.offsetX = offsetX;\n        }\n\n        public int getOffsetY() {\n            return offsetY;\n        }\n\n        public void setOffsetY(int offsetY) {\n            this.offsetY = offsetY;\n        }\n\n        public Box getCenterBox() {\n            return centerBox;\n        }\n\n        public void setCenterBox(Box centerBox) {\n            this.centerBox = centerBox;\n        }\n\n        public List<Box> getBoxList() {\n            return boxList;\n        }\n\n        public void setBoxList(List<Box> boxList) {\n            this.boxList = boxList;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_vikingschow.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.json.bvtVO.OfferRankResultVO;\n\npublic class Bug_for_vikingschow extends TestCase {\n\tpublic void test_for_vikingschow() throws Exception {\n\t\tOfferRankResultVO vo = new OfferRankResultVO();\n\t\tString text = JSON.toJSONString(vo);\n\t\tJSON.parseObject(text, OfferRankResultVO.class);\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_wangran.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.io.InputStream;\nimport java.io.InputStreamReader;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport org.apache.commons.io.IOUtils;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.json.bvtVO.PhysicalQueue;\nimport com.alibaba.json.bvtVO.QueueEntity;\n\npublic class Bug_for_wangran extends TestCase {\n\n    public void test_for_wangran() throws Exception {\n        String resource = \"json/wangran.json\";\n        InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource);\n        String text = IOUtils.toString(new InputStreamReader(is,\"UTF-8\"));\n\n\n        QueueEntity qe = JSON.parseObject(text, QueueEntity.class);\n        \n        Assert.assertNotNull(qe);\n        Assert.assertNotNull(qe.getPhysicalQueueMap());\n        Assert.assertEquals(4, qe.getPhysicalQueueMap().size());\n        \n        for (PhysicalQueue q : qe.getPhysicalQueueMap().values()) {\n            q.getInRate();\n            Assert.assertEquals(qe, q.getQueue());\n        }\n        \n        Assert.assertEquals(qe.getPhysicalQueueMap(), qe.getPqMap());\n        Assert.assertEquals(true, qe.getPhysicalQueueMap() == qe.getPqMap());\n        Assert.assertEquals(\"amq\", qe.getDescription());\n        \n    }\n}\n// 500m / 300"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_wangran1.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport com.alibaba.fastjson.JSON;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\npublic class Bug_for_wangran1 extends TestCase {\n\n    public void test_0() throws Exception {\n        Entity entity = new Entity();\n        \n        entity.setId(11);\n        entity.setName(\"xx\");\n        \n        Queue q = new Queue();\n        q.setId(55);\n        \n        entity.getQueue().put(q.getId(), q);\n        \n        String text = JSON.toJSONString(entity);\n        \n        System.out.println(text);\n        \n        Entity entity2 = JSON.parseObject(text, Entity.class);\n        \n        Assert.assertNotNull(entity2.getQueue());\n        Assert.assertEquals(1, entity2.getQueue().size());\n        Assert.assertEquals(true, entity2.getQueue().values().iterator().next() instanceof Queue);\n    }\n\n    public static class Entity {\n\n        private int                 id;\n        private String              name;\n\n        private Map<Integer, Queue> queue = new HashMap<Integer, Queue>();\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public Map<Integer, Queue> getQueue() {\n            return queue;\n        }\n\n        public void setQueue(Map<Integer, Queue> queue) {\n            this.queue = queue;\n        }\n\n        public Map<Integer, Queue> getKQueue() {\n            return queue;\n        }\n\n        public void setKQueue(Map<Integer, Queue> queue) {\n            this.queue = queue;\n        }\n    }\n\n    public static class Queue {\n        \n        public Queue() {\n            \n        }\n\n        private int    id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_wangran2.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_wangran2 extends TestCase {\n\n    public void test_for_wangran() throws Exception {\n        String text = \"{\" + //\n                      \"\\\"first\\\":{\\\"id\\\":1001},\" + //\n                      \"\\\"second\\\":{\\\"id\\\":1002,\\\"root\\\":{\\\"$ref\\\":\\\"$\\\"}},\" + //\n                      \"\\\"id\\\":23,\" + //\n                      \"\\\"name\\\":\\\"xxx\\\",\" + //\n                      \"\\\"children\\\":[{\\\"root\\\":{\\\"$ref\\\":\\\"$\\\"}},{\\\"$ref\\\":\\\"$.second\\\"}]\" + //\n                      \"}\";\n        Root root = JSON.parseObject(text, Root.class);\n        Assert.assertEquals(23, root.getId());\n        Assert.assertEquals(\"xxx\", root.getName());\n        Assert.assertTrue(root == root.getChildren().get(0).getRoot());\n        Assert.assertTrue(root == root.getChildren().get(1).getRoot());\n    }\n\n    public static class Root {\n\n        private int         id;\n        private String      name;\n\n        private Child       first;\n        private Child       second;\n\n        private List<Child> children = new ArrayList<Child>();\n\n        public Root(){\n\n        }\n\n        public Child getSecond() {\n            return second;\n        }\n\n        public void setSecond(Child second) {\n            System.out.println(\"setSecond\");\n            this.second = second;\n        }\n\n        public Child getFirst() {\n            return first;\n        }\n\n        public void setFirst(Child first) {\n            System.out.println(\"setFirst\");\n            this.first = first;\n        }\n\n        public List<Child> getChildren() {\n            return children;\n        }\n\n        public void setChildren(List<Child> children) {\n            System.out.println(\"setChildren\");\n            this.children = children;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n\n    public static class Child {\n\n        private int  id;\n\n        private Root root;\n\n        public Child(){\n\n        }\n\n        public Root getRoot() {\n            return root;\n        }\n\n        public void setRoot(Root root) {\n            System.out.println(\"setRoot\");\n            this.root = root;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n    }\n}\n// 500m / 300\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_wsky.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_wsky extends TestCase {\n    \n    public void test_writeMapNull() throws Exception {\n        JSON.parseObject(JSON.toJSONString(new MethodReturn(), SerializerFeature.WriteMapNullValue), MethodReturn.class);\n    }\n\n    public static class MethodReturn {\n\n        public Object    ReturnValue;\n        public Throwable Exception;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_wtusmchen.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.io.Serializable;\nimport java.sql.Date;\nimport java.sql.Timestamp;\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_wtusmchen extends TestCase {\n\n    public void test_0() throws Exception {\n        List<User> users = new ArrayList<User>();\n        users.add(new User());\n        users.add(new User());\n\n        String text = JSON.toJSONString(users);\n        System.out.println(text);\n        \n        List<User> users2 = JSON.parseArray(text, User.class);\n    }\n\n    public static class User implements Serializable {\n\n        private String user_id = \"aaaa\";\n        Date           bri;\n        Timestamp      bri2;\n        Double         num;\n        List           list;\n\n        public String getUser_id() {\n            return user_id;\n        }\n\n        public void setUser_id(String user_id) {\n            this.user_id = user_id;\n        }\n\n        public Date getBri() {\n            return bri;\n        }\n\n        public void setBri(Date bri) {\n            this.bri = bri;\n        }\n\n        public Timestamp getBri2() {\n            return bri2;\n        }\n\n        public void setBri2(Timestamp bri2) {\n            this.bri2 = bri2;\n        }\n\n        public Double getNum() {\n            return num;\n        }\n\n        public void setNum(Double num) {\n            this.num = num;\n        }\n\n        public List getList() {\n            return list;\n        }\n\n        public void setList(List list) {\n            this.list = list;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_wuyexiong.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.io.InputStream;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.util.IOUtils;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\npublic class Bug_for_wuyexiong extends TestCase {\n\n    public static class Track {\n\n        private String name;\n        private String color;\n        private String _abstract;\n        \n        public String getName() {\n            return name;\n        }\n        \n        public void setName(String name) {\n            this.name = name;\n        }\n        \n        public String getColor() {\n            return color;\n        }\n        \n        public void setColor(String color) {\n            this.color = color;\n        }\n        \n        public String getAbstract() {\n            return _abstract;\n        }\n        \n        public void setAbstract(String _abstract) {\n            this._abstract = _abstract;\n        }\n        \n        \n    }\n\n    public static class Tracks {\n        private Track[] track;\n\n        public void setTrack(Track[] track) {\n            this.track = track;\n        }\n\n        public Track[] getTrack() {\n            return track;\n        }\n    }\n\n    public void test_for_wuyexiong() throws Exception {\n        InputStream is =  Thread.currentThread().getContextClassLoader().getResourceAsStream(\"wuyexiong.json\");\n        String text = org.apache.commons.io.IOUtils.toString(is);\n        org.apache.commons.io.IOUtils.closeQuietly(is);\n        \n        Tracks tracks = JSON.parseObject(text, Tracks.class);\n        Assert.assertEquals(\"Learn about developing mobile handset and tablet apps for Android.\", tracks.getTrack()[0].getAbstract());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_wuzhengmao.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.Arrays;\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_wuzhengmao extends TestCase {\n\n    public void test_0() throws Exception {\n        Node node1 = new Node();\n        node1.setId(1);\n        Node node2 = new Node();\n        node2.setId(2);\n        node1.setParent(node2);\n        \n        List<Node> list = Arrays.asList(new Node[] { node1, node2 });\n        String json = JSON.toJSONString(list, true);\n        System.out.println(json);\n        List<Node> result = JSON.parseArray(json, Node.class);\n        Assert.assertEquals(2, result.size());\n        Assert.assertEquals(1, result.get(0).getId());\n        Assert.assertEquals(2, result.get(1).getId());\n        Assert.assertEquals(result.get(0).getParent(), result.get(1));\n    }\n\n    static class Node {\n\n        int  id;\n        Node parent;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public Node getParent() {\n            return parent;\n        }\n\n        public void setParent(Node parent) {\n            this.parent = parent;\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_xiayucai2012.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\n\npublic class Bug_for_xiayucai2012 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_for_xiayucai2012() throws Exception {\n        String text = \"{\\\"date\\\":\\\"0000-00-00 00:00:00\\\"}\";\n        JSONObject json = JSON.parseObject(text);\n        Date date = json.getObject(\"date\", Date.class);\n        \n        SimpleDateFormat dateFormat = new SimpleDateFormat(JSON.DEFFAULT_DATE_FORMAT, JSON.defaultLocale);\n        dateFormat.setTimeZone(JSON.defaultTimeZone);\n        \n        Assert.assertEquals(dateFormat.parse(json.getString(\"date\")), date);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_xiedun.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.apache.commons.io.FileUtils;\nimport org.apache.commons.io.IOUtils;\n\nimport java.io.BufferedReader;\nimport java.io.File;\nimport java.io.FileReader;\n\npublic class Bug_for_xiedun extends TestCase {\n    public void test_for_issue() throws Exception {\n//        File file = new File(\"/Users/wenshao/Downloads/json.txt\");\n//\n//        BufferedReader reader = new BufferedReader(new FileReader(file));\n//        char[] buf = new char[20480];\n//        int readed = reader.read(buf);\n//        String content = new String(buf);\n//\n//        JSON.parse(content);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_xujin.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.io.Serializable;\n\n/**\n * Created by wenshao on 09/02/2017.\n */\npublic class Bug_for_xujin extends TestCase {\n    public void test_for_xujin() throws Exception {\n        String jsonText=\"{\\\"module\\\":{\\\"auditStatus\\\":\\\"PENDING_VERIFICATION\\\",\\\"contactId\\\":\\\"asdfasdf\\\",\\n\\\"errorMsg\\\":\\\"中国\\\"},\\\"success\\\":true}\\n\";\n        System.out.println(JSON.VERSION);\n        ResultDTO resultDTO = (ResultDTO) JSON.parseObject(jsonText, ResultDTO.class);\n    }\n\n    public static class ResultDTO<T extends Serializable> implements Serializable {\n        private static final long serialVersionUID = 3682481175041925854L;\n        private static final String DEFAULT_ERR_CODE = \"xin.unknown.error\";\n        private String errorMsg;\n        private String errorCode;\n        private boolean success;\n        private T module;\n\n        public ResultDTO(String errorCode, String errorMsg, T obj) {\n            this.errorCode = errorCode;\n            this.errorMsg = errorMsg;\n            this.success = false;\n            this.module = obj;\n        }\n\n        public ResultDTO() {\n            buildSuccessResult();\n        }\n\n        public ResultDTO(T obj) {\n            this.success = true;\n            this.module = obj;\n        }\n\n        public static <T extends Serializable> ResultDTO<T> buildSuccessResult() {\n            return new ResultDTO((Serializable)null);\n        }\n\n        public static <T extends Serializable> ResultDTO<T> buildSuccessResult(T obj) {\n            return new ResultDTO(obj);\n        }\n\n        public static <T extends Serializable> ResultDTO<T> buildFailedResult(String errCode, String errMsg, T obj) {\n            return new ResultDTO(errCode, errMsg, obj);\n        }\n\n        public static <T extends Serializable> ResultDTO<T> buildFailedResult(String errCode, String errMsg) {\n            return new ResultDTO(errCode, errMsg, (Serializable)null);\n        }\n\n        public static <T extends Serializable> ResultDTO<T> buildFailedResult(String errMsg) {\n            return new ResultDTO(\"xin.unknown.error\", errMsg, (Serializable)null);\n        }\n\n        public String getErrorMsg() {\n            return this.errorMsg;\n        }\n\n        public void setErrorMsg(String errorMsg) {\n            this.errorMsg = errorMsg;\n        }\n\n        public String getErrorCode() {\n            return this.errorCode;\n        }\n\n        public void setErrorCode(String errorCode) {\n            this.errorCode = errorCode;\n        }\n\n        public boolean isSuccess() {\n            return this.success;\n        }\n\n        public void setSuccess(boolean success) {\n            this.success = success;\n        }\n\n        public T getModule() {\n            return this.module;\n        }\n\n        public void setModule(T module) {\n            this.module = module;\n        }\n\n        public String toJsonString() {\n            return JSON.toJSONString(this);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_xujin2.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeFilter;\nimport com.alibaba.fastjson.serializer.ValueFilter;\nimport junit.framework.TestCase;\nimport org.apache.commons.lang.builder.ToStringBuilder;\n\nimport java.io.Serializable;\nimport java.util.HashSet;\nimport java.util.Set;\n\n/**\n * Created by wenshao on 10/02/2017.\n */\npublic class Bug_for_xujin2 extends TestCase {\n    public void test_for_bug() throws Exception {\n        ContactTemplateParam param = new ContactTemplateParam();\n        param.setAuditStatus(AuditStatusType.AUDIT_FAILURE);\n\n        String json = JSON.toJSONString(param, new SerializeFilter[] { new IntEnumFilter(\"auditStatus\") });\n        assertEquals(\"{\\\"auditStatus\\\":0}\", json);\n    }\n\n    public static class IntEnumFilter implements ValueFilter {\n        private Set<String> needMaskFileds = new HashSet();\n\n        public IntEnumFilter() {\n        }\n\n        public IntEnumFilter(String... fileds) {\n            if(fileds != null) {\n                String[] arr$ = fileds;\n                int len$ = fileds.length;\n\n                for(int i$ = 0; i$ < len$; ++i$) {\n                    String filed = arr$[i$];\n                    this.needMaskFileds.add(filed);\n                }\n            }\n\n        }\n\n        public Object process(Object object, String name, Object value) {\n            return value == null?value:(this.needMaskFileds.contains(name) && value instanceof IntEnum ?Integer.valueOf(((IntEnum)value).getCode()):value);\n        }\n    }\n\n    public static class ContactTemplateParam implements Serializable {\n\n        private static final long serialVersionUID = 1L;\n\n\n\n        public ContactTemplateParam() {\n            // TODO Auto-generated constructor stub\n        }\n\n        /** 审核状态 **/\n        private AuditStatusType auditStatus;\n\n\n\n        public AuditStatusType getAuditStatus() {\n            return auditStatus;\n        }\n\n        public void setAuditStatus(AuditStatusType auditStatus) {\n            this.auditStatus = auditStatus;\n        }\n\n        @Override\n        public String toString() {\n            return ToStringBuilder.reflectionToString(this);\n        }\n    }\n\n    public static enum AuditStatusType implements IntEnum<AuditStatusType> {\n        AUDIT_FAILURE(0, \"审核失败\", \"FAILED\"),\n        AUDIT_SUCCESS(1, \"成功\", \"SUCCEED\"),\n        AUDIT_NO_SUBMIT(2, \"未实名认证\", \"NONAUDIT\"),\n        AUDIT_SUBMIT(3, \"审核中\", \"AUDITING\");\n\n        private int code;\n        private String desc;\n        private String enCode;\n\n        private AuditStatusType(int code) {\n            this.code = code;\n        }\n\n        private AuditStatusType(int code, String desc, String enCode) {\n            this.code = code;\n            this.desc = desc;\n            this.enCode = enCode;\n        }\n\n        public static AuditStatusType valuesOf(String enCode) {\n            AuditStatusType[] arr$ = values();\n            int len$ = arr$.length;\n\n            for(int i$ = 0; i$ < len$; ++i$) {\n                AuditStatusType temp = arr$[i$];\n                if(temp.getEnCode().equals(enCode)) {\n                    return temp;\n                }\n            }\n\n            return null;\n        }\n\n        public String getDesc() {\n            return this.desc;\n        }\n\n        public String getEnCode() {\n            return this.enCode;\n        }\n\n        public int getCode() {\n            return this.code;\n        }\n    }\n\n    public interface IntEnum<E extends Enum<E>> {\n        int getCode();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_xujin_int.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.io.Serializable;\n\n/**\n * Created by wenshao on 09/02/2017.\n */\npublic class Bug_for_xujin_int extends TestCase {\n    public void test_for_xujin() throws Exception {\n        String jsonText=\"{\\\"module\\\":{\\\"auditStatus\\\":\\\"PENDING_VERIFICATION\\\",\\\"contactId\\\":\\\"asdfasdf\\\",\\n\\\"errorMsg\\\":\\\"中国\\\"},\\\"success\\\":1}\\n\";\n        System.out.println(JSON.VERSION);\n        ResultDTO resultDTO = (ResultDTO) JSON.parseObject(jsonText, ResultDTO.class);\n    }\n\n    public static class ResultDTO<T extends Serializable> implements Serializable {\n        private static final long serialVersionUID = 3682481175041925854L;\n        private static final String DEFAULT_ERR_CODE = \"xin.unknown.error\";\n        private String errorMsg;\n        private String errorCode;\n        private int success;\n        private T module;\n\n\n\n        public ResultDTO() {\n            buildSuccessResult();\n        }\n\n        public ResultDTO(T obj) {\n            this.success = 1;\n            this.module = obj;\n        }\n\n        public static <T extends Serializable> ResultDTO<T> buildSuccessResult() {\n            return new ResultDTO((Serializable)null);\n        }\n\n        public static <T extends Serializable> ResultDTO<T> buildSuccessResult(T obj) {\n            return new ResultDTO(obj);\n        }\n\n\n        public String getErrorMsg() {\n            return this.errorMsg;\n        }\n\n        public void setErrorMsg(String errorMsg) {\n            this.errorMsg = errorMsg;\n        }\n\n        public String getErrorCode() {\n            return this.errorCode;\n        }\n\n        public void setErrorCode(String errorCode) {\n            this.errorCode = errorCode;\n        }\n\n        public int isSuccess() {\n            return this.success;\n        }\n\n        public void setSuccess(int success) {\n            this.success = success;\n        }\n\n        public T getModule() {\n            return this.module;\n        }\n\n        public void setModule(T module) {\n            this.module = module;\n        }\n\n        public String toJsonString() {\n            return JSON.toJSONString(this);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_xuzebin.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.Map;\nimport java.util.concurrent.ConcurrentHashMap;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_xuzebin extends TestCase {\n\n    public void testMap() {\n        P p = new P();\n        p.setI(2);\n        p.getMap().put(\"a\", \"b\");\n        String json = JSON.toJSONString(p, SerializerFeature.WriteClassName);\n        System.out.println(json);\n\n        P x = JSON.parseObject(json, P.class);\n        System.out.println(JSON.toJSONString(x));\n    }\n\n    public void testMap2() {\n        P p = new P();\n        p.setI(2);\n        // p.getMap().put(\"a\", \"b\");\n        String json = JSON.toJSONString(p, SerializerFeature.WriteClassName);\n        System.out.println(json);\n\n        P x = JSON.parseObject(json, P.class);\n        System.out.println(JSON.toJSONString(x));\n    }\n\n    public static class P {\n\n        private Map<String, String> map = new ConcurrentHashMap<String, String>();\n        private int                 i   = 0;\n\n        public Map<String, String> getMap() {\n            return map;\n        }\n\n        public void setMap(Map<String, String> map) {\n            this.map = map;\n        }\n\n        public int getI() {\n            return i;\n        }\n\n        public void setI(int i) {\n            this.i = i;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_yangqi.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_yangqi extends TestCase {\n\n    public void test_for_bug() throws Exception {\n        B b = JSON.parseObject(\"{\\\"id\\\":123,\\\"values\\\":[{}]}\", B.class);\n    }\n\n    abstract static class A {\n\n        private int id;\n        private List<Value> values = new ArrayList<Value>();\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        \n        public List<Value> getValues() {\n            return values;\n        }\n\n        \n        public void setValues(List<Value> values) {\n            this.values = values;\n        }\n\n        \n    }\n\n    public static class B extends A {\n\n    }\n    \n    public static class Value {\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_yangzhou.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\nimport java.util.ArrayList;\nimport java.util.Date;\nimport java.util.List;\n\npublic class Bug_for_yangzhou extends TestCase {\n    public void test_for_issue() throws Exception {\n        String test = \"{\\\"distinct\\\":false,\\\"oredCriteria\\\":[{\\\"allCriteria\\\":[{\\\"betweenValue\\\":false,\\\"condition\\\":\\\"area_id =\\\",\\\"listValue\\\":false,\\\"noValue\\\":false,\\\"singleValue\\\":true,\\\"value\\\":917477670000000000},{\\\"betweenValue\\\":false,\\\"condition\\\":\\\"cabinet_id =\\\",\\\"listValue\\\":false,\\\"noValue\\\":false,\\\"singleValue\\\":true,\\\"value\\\":500036},{\\\"betweenValue\\\":false,\\\"condition\\\":\\\"status =\\\",\\\"listValue\\\":false,\\\"noValue\\\":false,\\\"singleValue\\\":true,\\\"value\\\":0}],\\\"criteria\\\":[{\\\"$ref\\\":\\\"$.oredCriteria[0].allCriteria[0]\\\"},{\\\"$ref\\\":\\\"$.oredCriteria[0].allCriteria[1]\\\"},{\\\"$ref\\\":\\\"$.oredCriteria[0].allCriteria[2]\\\"}],\\\"valid\\\":true}],\\\"page\\\":true,\\\"pageIndex\\\":0,\\\"pageSize\\\":1,\\\"pageStart\\\":1}\";\n\n        System.out.println(test);\n        CabinetAuthCodeParam cabinetAuthCodeParam = JSONObject.toJavaObject(JSON.parseObject(test), CabinetAuthCodeParam.class);\n        System.out.println(JSON.toJSONString(cabinetAuthCodeParam));\n        final String jsonString = JSON.toJSONString(cabinetAuthCodeParam);\n        assertEquals(\"{\\\"distinct\\\":false,\\\"oredCriteria\\\":[{\\\"allCriteria\\\":[{\\\"listValue\\\":false,\\\"noValue\\\":false,\\\"condition\\\":\\\"area_id =\\\",\\\"betweenValue\\\":false,\\\"singleValue\\\":true,\\\"value\\\":917477670000000000},{\\\"listValue\\\":false,\\\"noValue\\\":false,\\\"condition\\\":\\\"cabinet_id =\\\",\\\"betweenValue\\\":false,\\\"singleValue\\\":true,\\\"value\\\":500036},{\\\"listValue\\\":false,\\\"noValue\\\":false,\\\"condition\\\":\\\"status =\\\",\\\"betweenValue\\\":false,\\\"singleValue\\\":true,\\\"value\\\":0}],\\\"criteria\\\":[{\\\"$ref\\\":\\\"$.oredCriteria[0].allCriteria[0]\\\"},{\\\"$ref\\\":\\\"$.oredCriteria[0].allCriteria[1]\\\"},{\\\"$ref\\\":\\\"$.oredCriteria[0].allCriteria[2]\\\"}],\\\"valid\\\":true}],\\\"page\\\":true,\\\"pageIndex\\\":0,\\\"pageSize\\\":1,\\\"pageStart\\\":1}\", jsonString);\n//        CabinetAuthCodeRecordParam cabinetAuthCodeRecordParam = JSONObject.toJavaObject(JSON.parseObject(jsonString), CabinetAuthCodeRecordParam.class);\n//        System.out.println(JSON.toJSONString(cabinetAuthCodeRecordParam));\n    }\n\n    public static class CabinetAuthCodeParam {\n        protected String orderByClause;\n\n        protected boolean distinct;\n\n        protected boolean page;\n\n        protected int pageIndex;\n\n        protected int pageSize;\n\n        protected int pageStart;\n\n        protected List<Criteria> oredCriteria;\n\n        public CabinetAuthCodeParam() {\n            oredCriteria = new ArrayList<Criteria>();\n        }\n\n        public CabinetAuthCodeParam appendOrderByClause(OrderCondition orderCondition, SortType sortType) {\n            if (null != orderByClause) {\n                orderByClause = orderByClause + \", \" + orderCondition.getColumnName() + \" \" + sortType.getValue();\n            } else {\n                orderByClause = orderCondition.getColumnName() + \" \" + sortType.getValue();\n            }\n            return this;\n        }\n\n        public String getOrderByClause() {\n            return orderByClause;\n        }\n\n        public void setDistinct(boolean distinct) {\n            this.distinct = distinct;\n        }\n\n        public boolean isDistinct() {\n            return distinct;\n        }\n\n        public void setPage(boolean page) {\n            this.page = page;\n        }\n\n        public boolean isPage() {\n            return page;\n        }\n\n        public int getPageIndex() {\n            return pageIndex;\n        }\n\n        public void setPageSize(int pageSize) {\n            this.pageSize = pageSize < 1 ? 10 : pageSize;\n            this.pageIndex = pageStart < 1 ? 0 : (pageStart - 1) * this.pageSize;\n        }\n\n        public int getPageSize() {\n            return pageSize;\n        }\n\n        public void setPageStart(int pageStart) {\n            this.pageStart = pageStart < 1 ? 1 : pageStart;\n            this.pageIndex = (this.pageStart - 1) * this.pageSize;\n        }\n\n        public int getPageStart() {\n            return pageStart;\n        }\n\n        public List<Criteria> getOredCriteria() {\n            return oredCriteria;\n        }\n\n        public void or(Criteria criteria) {\n            oredCriteria.add(criteria);\n        }\n\n        public Criteria or() {\n            Criteria criteria = createCriteriaInternal();\n            oredCriteria.add(criteria);\n            return criteria;\n        }\n\n        public Criteria createCriteria() {\n            Criteria criteria = createCriteriaInternal();\n            if (oredCriteria.size() == 0) {\n                oredCriteria.add(criteria);\n            }\n            return criteria;\n        }\n\n        protected Criteria createCriteriaInternal() {\n            Criteria criteria = new Criteria();\n            return criteria;\n        }\n\n        public void clear() {\n            oredCriteria.clear();\n            orderByClause = null;\n            distinct = false;\n        }\n\n        protected abstract static class GeneratedCriteria {\n            protected List<Criterion> criteria;\n\n            protected GeneratedCriteria() {\n                super();\n                criteria = new ArrayList<Criterion>();\n            }\n\n            public boolean isValid() {\n                return criteria.size() > 0;\n            }\n\n            public List<Criterion> getAllCriteria() {\n                return criteria;\n            }\n\n            public List<Criterion> getCriteria() {\n                return criteria;\n            }\n\n            protected void addCriterion(String condition) {\n                if (condition == null) {\n                    throw new RuntimeException(\"Value for condition cannot be null\");\n                }\n                criteria.add(new Criterion(condition));\n            }\n\n            protected void addCriterion(String condition, Object value, String property) {\n                if (value == null) {\n                    throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n                }\n                criteria.add(new Criterion(condition, value));\n            }\n\n            protected void addCriterion(String condition, Object value1, Object value2, String property) {\n                if (value1 == null || value2 == null) {\n                    throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n                }\n                criteria.add(new Criterion(condition, value1, value2));\n            }\n\n            public Criteria andIdIsNull() {\n                addCriterion(\"id is null\");\n                return (Criteria) this;\n            }\n\n            public Criteria andIdIsNotNull() {\n                addCriterion(\"id is not null\");\n                return (Criteria) this;\n            }\n\n            public Criteria andIdEqualTo(Long value) {\n                addCriterion(\"id =\", value, \"id\");\n                return (Criteria) this;\n            }\n\n            public Criteria andIdNotEqualTo(Long value) {\n                addCriterion(\"id <>\", value, \"id\");\n                return (Criteria) this;\n            }\n\n            public Criteria andIdGreaterThan(Long value) {\n                addCriterion(\"id >\", value, \"id\");\n                return (Criteria) this;\n            }\n\n            public Criteria andIdGreaterThanOrEqualTo(Long value) {\n                addCriterion(\"id >=\", value, \"id\");\n                return (Criteria) this;\n            }\n\n            public Criteria andIdLessThan(Long value) {\n                addCriterion(\"id <\", value, \"id\");\n                return (Criteria) this;\n            }\n\n            public Criteria andIdLessThanOrEqualTo(Long value) {\n                addCriterion(\"id <=\", value, \"id\");\n                return (Criteria) this;\n            }\n\n            public Criteria andIdIn(List<Long> values) {\n                addCriterion(\"id in\", values, \"id\");\n                return (Criteria) this;\n            }\n\n            public Criteria andIdNotIn(List<Long> values) {\n                addCriterion(\"id not in\", values, \"id\");\n                return (Criteria) this;\n            }\n\n            public Criteria andIdBetween(Long value1, Long value2) {\n                addCriterion(\"id between\", value1, value2, \"id\");\n                return (Criteria) this;\n            }\n\n            public Criteria andIdNotBetween(Long value1, Long value2) {\n                addCriterion(\"id not between\", value1, value2, \"id\");\n                return (Criteria) this;\n            }\n\n            public Criteria andGmtCreateIsNull() {\n                addCriterion(\"gmt_create is null\");\n                return (Criteria) this;\n            }\n\n            public Criteria andGmtCreateIsNotNull() {\n                addCriterion(\"gmt_create is not null\");\n                return (Criteria) this;\n            }\n\n            public Criteria andGmtCreateEqualTo(Date value) {\n                addCriterion(\"gmt_create =\", value, \"gmtCreate\");\n                return (Criteria) this;\n            }\n\n            public Criteria andGmtCreateNotEqualTo(Date value) {\n                addCriterion(\"gmt_create <>\", value, \"gmtCreate\");\n                return (Criteria) this;\n            }\n\n            public Criteria andGmtCreateGreaterThan(Date value) {\n                addCriterion(\"gmt_create >\", value, \"gmtCreate\");\n                return (Criteria) this;\n            }\n\n            public Criteria andGmtCreateGreaterThanOrEqualTo(Date value) {\n                addCriterion(\"gmt_create >=\", value, \"gmtCreate\");\n                return (Criteria) this;\n            }\n\n            public Criteria andGmtCreateLessThan(Date value) {\n                addCriterion(\"gmt_create <\", value, \"gmtCreate\");\n                return (Criteria) this;\n            }\n\n            public Criteria andGmtCreateLessThanOrEqualTo(Date value) {\n                addCriterion(\"gmt_create <=\", value, \"gmtCreate\");\n                return (Criteria) this;\n            }\n\n            public Criteria andGmtCreateIn(List<Date> values) {\n                addCriterion(\"gmt_create in\", values, \"gmtCreate\");\n                return (Criteria) this;\n            }\n\n            public Criteria andGmtCreateNotIn(List<Date> values) {\n                addCriterion(\"gmt_create not in\", values, \"gmtCreate\");\n                return (Criteria) this;\n            }\n\n            public Criteria andGmtCreateBetween(Date value1, Date value2) {\n                addCriterion(\"gmt_create between\", value1, value2, \"gmtCreate\");\n                return (Criteria) this;\n            }\n\n            public Criteria andGmtCreateNotBetween(Date value1, Date value2) {\n                addCriterion(\"gmt_create not between\", value1, value2, \"gmtCreate\");\n                return (Criteria) this;\n            }\n\n            public Criteria andGmtModifiedIsNull() {\n                addCriterion(\"gmt_modified is null\");\n                return (Criteria) this;\n            }\n\n            public Criteria andGmtModifiedIsNotNull() {\n                addCriterion(\"gmt_modified is not null\");\n                return (Criteria) this;\n            }\n\n            public Criteria andGmtModifiedEqualTo(Date value) {\n                addCriterion(\"gmt_modified =\", value, \"gmtModified\");\n                return (Criteria) this;\n            }\n\n            public Criteria andGmtModifiedNotEqualTo(Date value) {\n                addCriterion(\"gmt_modified <>\", value, \"gmtModified\");\n                return (Criteria) this;\n            }\n\n            public Criteria andGmtModifiedGreaterThan(Date value) {\n                addCriterion(\"gmt_modified >\", value, \"gmtModified\");\n                return (Criteria) this;\n            }\n\n            public Criteria andGmtModifiedGreaterThanOrEqualTo(Date value) {\n                addCriterion(\"gmt_modified >=\", value, \"gmtModified\");\n                return (Criteria) this;\n            }\n\n            public Criteria andGmtModifiedLessThan(Date value) {\n                addCriterion(\"gmt_modified <\", value, \"gmtModified\");\n                return (Criteria) this;\n            }\n\n            public Criteria andGmtModifiedLessThanOrEqualTo(Date value) {\n                addCriterion(\"gmt_modified <=\", value, \"gmtModified\");\n                return (Criteria) this;\n            }\n\n            public Criteria andGmtModifiedIn(List<Date> values) {\n                addCriterion(\"gmt_modified in\", values, \"gmtModified\");\n                return (Criteria) this;\n            }\n\n            public Criteria andGmtModifiedNotIn(List<Date> values) {\n                addCriterion(\"gmt_modified not in\", values, \"gmtModified\");\n                return (Criteria) this;\n            }\n\n            public Criteria andGmtModifiedBetween(Date value1, Date value2) {\n                addCriterion(\"gmt_modified between\", value1, value2, \"gmtModified\");\n                return (Criteria) this;\n            }\n\n            public Criteria andGmtModifiedNotBetween(Date value1, Date value2) {\n                addCriterion(\"gmt_modified not between\", value1, value2, \"gmtModified\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAreaIdIsNull() {\n                addCriterion(\"area_id is null\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAreaIdIsNotNull() {\n                addCriterion(\"area_id is not null\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAreaIdEqualTo(Long value) {\n                addCriterion(\"area_id =\", value, \"areaId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAreaIdNotEqualTo(Long value) {\n                addCriterion(\"area_id <>\", value, \"areaId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAreaIdGreaterThan(Long value) {\n                addCriterion(\"area_id >\", value, \"areaId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAreaIdGreaterThanOrEqualTo(Long value) {\n                addCriterion(\"area_id >=\", value, \"areaId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAreaIdLessThan(Long value) {\n                addCriterion(\"area_id <\", value, \"areaId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAreaIdLessThanOrEqualTo(Long value) {\n                addCriterion(\"area_id <=\", value, \"areaId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAreaIdIn(List<Long> values) {\n                addCriterion(\"area_id in\", values, \"areaId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAreaIdNotIn(List<Long> values) {\n                addCriterion(\"area_id not in\", values, \"areaId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAreaIdBetween(Long value1, Long value2) {\n                addCriterion(\"area_id between\", value1, value2, \"areaId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAreaIdNotBetween(Long value1, Long value2) {\n                addCriterion(\"area_id not between\", value1, value2, \"areaId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAuthCodeIsNull() {\n                addCriterion(\"auth_code is null\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAuthCodeIsNotNull() {\n                addCriterion(\"auth_code is not null\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAuthCodeEqualTo(String value) {\n                addCriterion(\"auth_code =\", value, \"authCode\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAuthCodeNotEqualTo(String value) {\n                addCriterion(\"auth_code <>\", value, \"authCode\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAuthCodeGreaterThan(String value) {\n                addCriterion(\"auth_code >\", value, \"authCode\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAuthCodeGreaterThanOrEqualTo(String value) {\n                addCriterion(\"auth_code >=\", value, \"authCode\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAuthCodeLessThan(String value) {\n                addCriterion(\"auth_code <\", value, \"authCode\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAuthCodeLessThanOrEqualTo(String value) {\n                addCriterion(\"auth_code <=\", value, \"authCode\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAuthCodeLike(String value) {\n                addCriterion(\"auth_code like\", value, \"authCode\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAuthCodeNotLike(String value) {\n                addCriterion(\"auth_code not like\", value, \"authCode\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAuthCodeIn(List<String> values) {\n                addCriterion(\"auth_code in\", values, \"authCode\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAuthCodeNotIn(List<String> values) {\n                addCriterion(\"auth_code not in\", values, \"authCode\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAuthCodeBetween(String value1, String value2) {\n                addCriterion(\"auth_code between\", value1, value2, \"authCode\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAuthCodeNotBetween(String value1, String value2) {\n                addCriterion(\"auth_code not between\", value1, value2, \"authCode\");\n                return (Criteria) this;\n            }\n\n            public Criteria andCabinetIdIsNull() {\n                addCriterion(\"cabinet_id is null\");\n                return (Criteria) this;\n            }\n\n            public Criteria andCabinetIdIsNotNull() {\n                addCriterion(\"cabinet_id is not null\");\n                return (Criteria) this;\n            }\n\n            public Criteria andCabinetIdEqualTo(Long value) {\n                addCriterion(\"cabinet_id =\", value, \"cabinetId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andCabinetIdNotEqualTo(Long value) {\n                addCriterion(\"cabinet_id <>\", value, \"cabinetId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andCabinetIdGreaterThan(Long value) {\n                addCriterion(\"cabinet_id >\", value, \"cabinetId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andCabinetIdGreaterThanOrEqualTo(Long value) {\n                addCriterion(\"cabinet_id >=\", value, \"cabinetId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andCabinetIdLessThan(Long value) {\n                addCriterion(\"cabinet_id <\", value, \"cabinetId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andCabinetIdLessThanOrEqualTo(Long value) {\n                addCriterion(\"cabinet_id <=\", value, \"cabinetId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andCabinetIdIn(List<Long> values) {\n                addCriterion(\"cabinet_id in\", values, \"cabinetId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andCabinetIdNotIn(List<Long> values) {\n                addCriterion(\"cabinet_id not in\", values, \"cabinetId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andCabinetIdBetween(Long value1, Long value2) {\n                addCriterion(\"cabinet_id between\", value1, value2, \"cabinetId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andCabinetIdNotBetween(Long value1, Long value2) {\n                addCriterion(\"cabinet_id not between\", value1, value2, \"cabinetId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andCabinetNoIsNull() {\n                addCriterion(\"cabinet_no is null\");\n                return (Criteria) this;\n            }\n\n            public Criteria andCabinetNoIsNotNull() {\n                addCriterion(\"cabinet_no is not null\");\n                return (Criteria) this;\n            }\n\n            public Criteria andCabinetNoEqualTo(String value) {\n                addCriterion(\"cabinet_no =\", value, \"cabinetNo\");\n                return (Criteria) this;\n            }\n\n            public Criteria andCabinetNoNotEqualTo(String value) {\n                addCriterion(\"cabinet_no <>\", value, \"cabinetNo\");\n                return (Criteria) this;\n            }\n\n            public Criteria andCabinetNoGreaterThan(String value) {\n                addCriterion(\"cabinet_no >\", value, \"cabinetNo\");\n                return (Criteria) this;\n            }\n\n            public Criteria andCabinetNoGreaterThanOrEqualTo(String value) {\n                addCriterion(\"cabinet_no >=\", value, \"cabinetNo\");\n                return (Criteria) this;\n            }\n\n            public Criteria andCabinetNoLessThan(String value) {\n                addCriterion(\"cabinet_no <\", value, \"cabinetNo\");\n                return (Criteria) this;\n            }\n\n            public Criteria andCabinetNoLessThanOrEqualTo(String value) {\n                addCriterion(\"cabinet_no <=\", value, \"cabinetNo\");\n                return (Criteria) this;\n            }\n\n            public Criteria andCabinetNoLike(String value) {\n                addCriterion(\"cabinet_no like\", value, \"cabinetNo\");\n                return (Criteria) this;\n            }\n\n            public Criteria andCabinetNoNotLike(String value) {\n                addCriterion(\"cabinet_no not like\", value, \"cabinetNo\");\n                return (Criteria) this;\n            }\n\n            public Criteria andCabinetNoIn(List<String> values) {\n                addCriterion(\"cabinet_no in\", values, \"cabinetNo\");\n                return (Criteria) this;\n            }\n\n            public Criteria andCabinetNoNotIn(List<String> values) {\n                addCriterion(\"cabinet_no not in\", values, \"cabinetNo\");\n                return (Criteria) this;\n            }\n\n            public Criteria andCabinetNoBetween(String value1, String value2) {\n                addCriterion(\"cabinet_no between\", value1, value2, \"cabinetNo\");\n                return (Criteria) this;\n            }\n\n            public Criteria andCabinetNoNotBetween(String value1, String value2) {\n                addCriterion(\"cabinet_no not between\", value1, value2, \"cabinetNo\");\n                return (Criteria) this;\n            }\n\n            public Criteria andStatusIsNull() {\n                addCriterion(\"status is null\");\n                return (Criteria) this;\n            }\n\n            public Criteria andStatusIsNotNull() {\n                addCriterion(\"status is not null\");\n                return (Criteria) this;\n            }\n\n            public Criteria andStatusEqualTo(Short value) {\n                addCriterion(\"status =\", value, \"status\");\n                return (Criteria) this;\n            }\n\n            public Criteria andStatusNotEqualTo(Short value) {\n                addCriterion(\"status <>\", value, \"status\");\n                return (Criteria) this;\n            }\n\n            public Criteria andStatusGreaterThan(Short value) {\n                addCriterion(\"status >\", value, \"status\");\n                return (Criteria) this;\n            }\n\n            public Criteria andStatusGreaterThanOrEqualTo(Short value) {\n                addCriterion(\"status >=\", value, \"status\");\n                return (Criteria) this;\n            }\n\n            public Criteria andStatusLessThan(Short value) {\n                addCriterion(\"status <\", value, \"status\");\n                return (Criteria) this;\n            }\n\n            public Criteria andStatusLessThanOrEqualTo(Short value) {\n                addCriterion(\"status <=\", value, \"status\");\n                return (Criteria) this;\n            }\n\n            public Criteria andStatusIn(List<Short> values) {\n                addCriterion(\"status in\", values, \"status\");\n                return (Criteria) this;\n            }\n\n            public Criteria andStatusNotIn(List<Short> values) {\n                addCriterion(\"status not in\", values, \"status\");\n                return (Criteria) this;\n            }\n\n            public Criteria andStatusBetween(Short value1, Short value2) {\n                addCriterion(\"status between\", value1, value2, \"status\");\n                return (Criteria) this;\n            }\n\n            public Criteria andStatusNotBetween(Short value1, Short value2) {\n                addCriterion(\"status not between\", value1, value2, \"status\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAssignTimeIsNull() {\n                addCriterion(\"assign_time is null\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAssignTimeIsNotNull() {\n                addCriterion(\"assign_time is not null\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAssignTimeEqualTo(Date value) {\n                addCriterion(\"assign_time =\", value, \"assignTime\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAssignTimeNotEqualTo(Date value) {\n                addCriterion(\"assign_time <>\", value, \"assignTime\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAssignTimeGreaterThan(Date value) {\n                addCriterion(\"assign_time >\", value, \"assignTime\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAssignTimeGreaterThanOrEqualTo(Date value) {\n                addCriterion(\"assign_time >=\", value, \"assignTime\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAssignTimeLessThan(Date value) {\n                addCriterion(\"assign_time <\", value, \"assignTime\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAssignTimeLessThanOrEqualTo(Date value) {\n                addCriterion(\"assign_time <=\", value, \"assignTime\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAssignTimeIn(List<Date> values) {\n                addCriterion(\"assign_time in\", values, \"assignTime\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAssignTimeNotIn(List<Date> values) {\n                addCriterion(\"assign_time not in\", values, \"assignTime\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAssignTimeBetween(Date value1, Date value2) {\n                addCriterion(\"assign_time between\", value1, value2, \"assignTime\");\n                return (Criteria) this;\n            }\n\n            public Criteria andAssignTimeNotBetween(Date value1, Date value2) {\n                addCriterion(\"assign_time not between\", value1, value2, \"assignTime\");\n                return (Criteria) this;\n            }\n\n            public Criteria andUseTimeIsNull() {\n                addCriterion(\"use_time is null\");\n                return (Criteria) this;\n            }\n\n            public Criteria andUseTimeIsNotNull() {\n                addCriterion(\"use_time is not null\");\n                return (Criteria) this;\n            }\n\n            public Criteria andUseTimeEqualTo(Date value) {\n                addCriterion(\"use_time =\", value, \"useTime\");\n                return (Criteria) this;\n            }\n\n            public Criteria andUseTimeNotEqualTo(Date value) {\n                addCriterion(\"use_time <>\", value, \"useTime\");\n                return (Criteria) this;\n            }\n\n            public Criteria andUseTimeGreaterThan(Date value) {\n                addCriterion(\"use_time >\", value, \"useTime\");\n                return (Criteria) this;\n            }\n\n            public Criteria andUseTimeGreaterThanOrEqualTo(Date value) {\n                addCriterion(\"use_time >=\", value, \"useTime\");\n                return (Criteria) this;\n            }\n\n            public Criteria andUseTimeLessThan(Date value) {\n                addCriterion(\"use_time <\", value, \"useTime\");\n                return (Criteria) this;\n            }\n\n            public Criteria andUseTimeLessThanOrEqualTo(Date value) {\n                addCriterion(\"use_time <=\", value, \"useTime\");\n                return (Criteria) this;\n            }\n\n            public Criteria andUseTimeIn(List<Date> values) {\n                addCriterion(\"use_time in\", values, \"useTime\");\n                return (Criteria) this;\n            }\n\n            public Criteria andUseTimeNotIn(List<Date> values) {\n                addCriterion(\"use_time not in\", values, \"useTime\");\n                return (Criteria) this;\n            }\n\n            public Criteria andUseTimeBetween(Date value1, Date value2) {\n                addCriterion(\"use_time between\", value1, value2, \"useTime\");\n                return (Criteria) this;\n            }\n\n            public Criteria andUseTimeNotBetween(Date value1, Date value2) {\n                addCriterion(\"use_time not between\", value1, value2, \"useTime\");\n                return (Criteria) this;\n            }\n\n            public Criteria andBizTypeIsNull() {\n                addCriterion(\"biz_type is null\");\n                return (Criteria) this;\n            }\n\n            public Criteria andBizTypeIsNotNull() {\n                addCriterion(\"biz_type is not null\");\n                return (Criteria) this;\n            }\n\n            public Criteria andBizTypeEqualTo(Short value) {\n                addCriterion(\"biz_type =\", value, \"bizType\");\n                return (Criteria) this;\n            }\n\n            public Criteria andBizTypeNotEqualTo(Short value) {\n                addCriterion(\"biz_type <>\", value, \"bizType\");\n                return (Criteria) this;\n            }\n\n            public Criteria andBizTypeGreaterThan(Short value) {\n                addCriterion(\"biz_type >\", value, \"bizType\");\n                return (Criteria) this;\n            }\n\n            public Criteria andBizTypeGreaterThanOrEqualTo(Short value) {\n                addCriterion(\"biz_type >=\", value, \"bizType\");\n                return (Criteria) this;\n            }\n\n            public Criteria andBizTypeLessThan(Short value) {\n                addCriterion(\"biz_type <\", value, \"bizType\");\n                return (Criteria) this;\n            }\n\n            public Criteria andBizTypeLessThanOrEqualTo(Short value) {\n                addCriterion(\"biz_type <=\", value, \"bizType\");\n                return (Criteria) this;\n            }\n\n            public Criteria andBizTypeIn(List<Short> values) {\n                addCriterion(\"biz_type in\", values, \"bizType\");\n                return (Criteria) this;\n            }\n\n            public Criteria andBizTypeNotIn(List<Short> values) {\n                addCriterion(\"biz_type not in\", values, \"bizType\");\n                return (Criteria) this;\n            }\n\n            public Criteria andBizTypeBetween(Short value1, Short value2) {\n                addCriterion(\"biz_type between\", value1, value2, \"bizType\");\n                return (Criteria) this;\n            }\n\n            public Criteria andBizTypeNotBetween(Short value1, Short value2) {\n                addCriterion(\"biz_type not between\", value1, value2, \"bizType\");\n                return (Criteria) this;\n            }\n\n            public Criteria andBizOutIdIsNull() {\n                addCriterion(\"biz_out_id is null\");\n                return (Criteria) this;\n            }\n\n            public Criteria andBizOutIdIsNotNull() {\n                addCriterion(\"biz_out_id is not null\");\n                return (Criteria) this;\n            }\n\n            public Criteria andBizOutIdEqualTo(Long value) {\n                addCriterion(\"biz_out_id =\", value, \"bizOutId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andBizOutIdNotEqualTo(Long value) {\n                addCriterion(\"biz_out_id <>\", value, \"bizOutId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andBizOutIdGreaterThan(Long value) {\n                addCriterion(\"biz_out_id >\", value, \"bizOutId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andBizOutIdGreaterThanOrEqualTo(Long value) {\n                addCriterion(\"biz_out_id >=\", value, \"bizOutId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andBizOutIdLessThan(Long value) {\n                addCriterion(\"biz_out_id <\", value, \"bizOutId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andBizOutIdLessThanOrEqualTo(Long value) {\n                addCriterion(\"biz_out_id <=\", value, \"bizOutId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andBizOutIdIn(List<Long> values) {\n                addCriterion(\"biz_out_id in\", values, \"bizOutId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andBizOutIdNotIn(List<Long> values) {\n                addCriterion(\"biz_out_id not in\", values, \"bizOutId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andBizOutIdBetween(Long value1, Long value2) {\n                addCriterion(\"biz_out_id between\", value1, value2, \"bizOutId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andBizOutIdNotBetween(Long value1, Long value2) {\n                addCriterion(\"biz_out_id not between\", value1, value2, \"bizOutId\");\n                return (Criteria) this;\n            }\n\n            public Criteria andFeatureIsNull() {\n                addCriterion(\"feature is null\");\n                return (Criteria) this;\n            }\n\n            public Criteria andFeatureIsNotNull() {\n                addCriterion(\"feature is not null\");\n                return (Criteria) this;\n            }\n\n            public Criteria andFeatureEqualTo(String value) {\n                addCriterion(\"feature =\", value, \"feature\");\n                return (Criteria) this;\n            }\n\n            public Criteria andFeatureNotEqualTo(String value) {\n                addCriterion(\"feature <>\", value, \"feature\");\n                return (Criteria) this;\n            }\n\n            public Criteria andFeatureGreaterThan(String value) {\n                addCriterion(\"feature >\", value, \"feature\");\n                return (Criteria) this;\n            }\n\n            public Criteria andFeatureGreaterThanOrEqualTo(String value) {\n                addCriterion(\"feature >=\", value, \"feature\");\n                return (Criteria) this;\n            }\n\n            public Criteria andFeatureLessThan(String value) {\n                addCriterion(\"feature <\", value, \"feature\");\n                return (Criteria) this;\n            }\n\n            public Criteria andFeatureLessThanOrEqualTo(String value) {\n                addCriterion(\"feature <=\", value, \"feature\");\n                return (Criteria) this;\n            }\n\n            public Criteria andFeatureLike(String value) {\n                addCriterion(\"feature like\", value, \"feature\");\n                return (Criteria) this;\n            }\n\n            public Criteria andFeatureNotLike(String value) {\n                addCriterion(\"feature not like\", value, \"feature\");\n                return (Criteria) this;\n            }\n\n            public Criteria andFeatureIn(List<String> values) {\n                addCriterion(\"feature in\", values, \"feature\");\n                return (Criteria) this;\n            }\n\n            public Criteria andFeatureNotIn(List<String> values) {\n                addCriterion(\"feature not in\", values, \"feature\");\n                return (Criteria) this;\n            }\n\n            public Criteria andFeatureBetween(String value1, String value2) {\n                addCriterion(\"feature between\", value1, value2, \"feature\");\n                return (Criteria) this;\n            }\n\n            public Criteria andFeatureNotBetween(String value1, String value2) {\n                addCriterion(\"feature not between\", value1, value2, \"feature\");\n                return (Criteria) this;\n            }\n        }\n\n        public static class Criteria extends GeneratedCriteria {\n\n            protected Criteria() {\n                super();\n            }\n        }\n\n        public static class Criterion {\n            private String condition;\n\n            private Object value;\n\n            private Object secondValue;\n\n            private boolean noValue;\n\n            private boolean singleValue;\n\n            private boolean betweenValue;\n\n            private boolean listValue;\n\n            private String typeHandler;\n\n            public String getCondition() {\n                return condition;\n            }\n\n            public Object getValue() {\n                return value;\n            }\n\n            public Object getSecondValue() {\n                return secondValue;\n            }\n\n            public boolean isNoValue() {\n                return noValue;\n            }\n\n            public boolean isSingleValue() {\n                return singleValue;\n            }\n\n            public boolean isBetweenValue() {\n                return betweenValue;\n            }\n\n            public boolean isListValue() {\n                return listValue;\n            }\n\n            public String getTypeHandler() {\n                return typeHandler;\n            }\n\n            protected Criterion(String condition) {\n                super();\n                this.condition = condition;\n                this.typeHandler = null;\n                this.noValue = true;\n            }\n\n            protected Criterion(String condition, Object value, String typeHandler) {\n                super();\n                this.condition = condition;\n                this.value = value;\n                this.typeHandler = typeHandler;\n                if (value instanceof List<?>) {\n                    this.listValue = true;\n                } else {\n                    this.singleValue = true;\n                }\n            }\n\n            protected Criterion(String condition, Object value) {\n                this(condition, value, null);\n            }\n\n            protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n                super();\n                this.condition = condition;\n                this.value = value;\n                this.secondValue = secondValue;\n                this.typeHandler = typeHandler;\n                this.betweenValue = true;\n            }\n\n            protected Criterion(String condition, Object value, Object secondValue) {\n                this(condition, value, secondValue, null);\n            }\n        }\n\n        public enum OrderCondition {\n            ID(\"id\"),\n            GMTCREATE(\"gmt_create\"),\n            GMTMODIFIED(\"gmt_modified\"),\n            AREAID(\"area_id\"),\n            AUTHCODE(\"auth_code\"),\n            CABINETID(\"cabinet_id\"),\n            CABINETNO(\"cabinet_no\"),\n            STATUS(\"status\"),\n            ASSIGNTIME(\"assign_time\"),\n            USETIME(\"use_time\"),\n            BIZTYPE(\"biz_type\"),\n            BIZOUTID(\"biz_out_id\"),\n            FEATURE(\"feature\");\n\n            private String columnName;\n\n            OrderCondition(String columnName) {\n                this.columnName = columnName;\n            }\n\n            public String getColumnName() {\n                return columnName;\n            }\n\n            public static OrderCondition getEnumByName(String name) {\n                OrderCondition[] orderConditions = OrderCondition.values();\n                for (OrderCondition orderCondition : orderConditions) {\n                    if (orderCondition.name().equalsIgnoreCase(name)) {\n                        return orderCondition;\n                    }\n                }\n                throw new RuntimeException(\"OrderCondition of \" + name + \" enum not exist\");\n            }\n\n            @Override\n            public String toString() {\n                return columnName;\n            }\n        }\n\n        public enum SortType {\n            ASC(\"asc\"),\n            DESC(\"desc\");\n\n            private String value;\n\n            SortType(String value) {\n                this.value = value;\n            }\n\n            public String getValue() {\n                return value;\n            }\n\n            public static SortType getEnumByName(String name) {\n                SortType[] sortTypes = SortType.values();\n                for (SortType sortType : sortTypes) {\n                    if (sortType.name().equalsIgnoreCase(name)) {\n                        return sortType;\n                    }\n                }\n                throw new RuntimeException(\"SortType of \" + name + \" enum not exist\");\n            }\n\n            @Override\n            public String toString() {\n                return value;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_yannywang.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.io.InputStream;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport org.apache.commons.io.IOUtils;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.json.bvtVO.PhysicalQueue;\nimport com.alibaba.json.bvtVO.QueueEntity;\nimport com.alibaba.json.bvtVO.VirtualTopic;\n\npublic class Bug_for_yannywang extends TestCase {\n\n    public void test_for_wangran() throws Exception {\n        String resource = \"json/yannywang.json\";\n        InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource);\n        String text = IOUtils.toString(is);\n\n        VirtualTopic topic = JSON.parseObject(text, VirtualTopic.class);\n\n        {\n            QueueEntity qe = topic.getQueueMap().get(12109);\n\n            Assert.assertNotNull(qe);\n            Assert.assertNotNull(qe.getPhysicalQueueMap());\n            Assert.assertEquals(1, qe.getPhysicalQueueMap().size());\n\n            for (PhysicalQueue q : qe.getPhysicalQueueMap().values()) {\n                q.getInRate();\n                Assert.assertEquals(qe, q.getQueue());\n            }\n\n            Assert.assertEquals(qe.getPhysicalQueueMap(), qe.getPqMap());\n            Assert.assertEquals(true, qe.getPhysicalQueueMap() == qe.getPqMap());\n            Assert.assertEquals(\"\", qe.getDescription());\n        }\n        {\n            QueueEntity qe = topic.getQueueMap().get(12110);\n            \n            Assert.assertNotNull(qe);\n            Assert.assertNotNull(qe.getPhysicalQueueMap());\n            Assert.assertEquals(1, qe.getPhysicalQueueMap().size());\n            \n            for (PhysicalQueue q : qe.getPhysicalQueueMap().values()) {\n                q.getInRate();\n                Assert.assertEquals(qe, q.getQueue());\n            }\n            \n            Assert.assertEquals(qe.getPhysicalQueueMap(), qe.getPqMap());\n            Assert.assertEquals(true, qe.getPhysicalQueueMap() == qe.getPqMap());\n            Assert.assertEquals(\"\", qe.getDescription());\n        }\n\n    }\n\n}\n// 500m / 300\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_yanpei.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_yanpei extends TestCase {\n    public void test_for_sepcial_chars() throws Exception {\n        String text = \"{\\\"answerAllow\\\":true,\\\"atUsers\\\":[],\\\"desc\\\":\\\"Halios 1000M \\\\\\\"Puck\\\\\\\"很微众的品牌，几乎全靠玩家口口相传\\\"} \";\n        JSONObject obj = JSON.parseObject(text);\n        Assert.assertEquals(true, obj.get(\"answerAllow\"));;\n        Assert.assertEquals(0, obj.getJSONArray(\"atUsers\").size());;\n        Assert.assertEquals(\"Halios 1000M \\\"Puck\\\"很微众的品牌，几乎全靠玩家口口相传\", obj.get(\"desc\"));;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_yanpei2.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_yanpei2 extends TestCase {\n    public void test_for_sepcial_chars() throws Exception {\n        String text = \"{\\\"answerAllow\\\":true,\\\"atUsers\\\":[],\\\"desc\\\":\\\"测试账号\\\\n测试账号\\\"}\";\n        JSONObject obj = JSON.parseObject(text);\n        Assert.assertEquals(true, obj.get(\"answerAllow\"));;\n        Assert.assertEquals(0, obj.getJSONArray(\"atUsers\").size());;\n        Assert.assertEquals(\"测试账号\\n测试账号\", obj.get(\"desc\"));;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_yanpei3.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_yanpei3 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Map obj = new HashMap();\n        obj.put(\"desc\", \"\\\"Puck\\\"\");\n        String text = JSON.toJSONString(obj);\n//        System.out.println(text);\n        // {\"desc\":\"\\\"Puck\\\"\"}\n\n        Map root = new HashMap();\n        root.put(\"obj\", text);\n        String text2 = JSON.toJSONString(root);\n//        System.out.println(text2);\n        // {\"obj\":\"{\\\"desc\\\":\\\"\\\\\\\"Puck\\\\\\\"\\\"}\"}\n\n        JSONObject root2 = JSON.parseObject(text2);\n        String text3 = (String) root2.get(\"obj\");\n//        System.out.println(text3);\n        // {\"desc\":\"\\\"Puck\\\"\"}\n\n        JSONObject obj2 = JSON.parseObject(text3);\n        String puck = (String) obj2.get(\"desc\");\n        Assert.assertEquals(obj.get(\"desc\"), obj2.get(\"desc\"));\n        // \"Puck\"\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_yanpei4.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_yanpei4 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String valueText = JSON.toJSONString(\"a\\\"Puck\\\"\");\n        System.out.println(\"valueText : \" + valueText);\n        \n        RPCAckBody body1 = new RPCAckBody();\n        body1.actionValue = valueText;\n        \n        String bodyString = JSON.toJSONString(body1);\n        System.out.println(bodyString);\n        \n         RPCAckBody body2 = JSON.parseObject(bodyString, RPCAckBody.class);\n         \n         System.out.println(body1.actionValue);\n         System.out.println(body2.actionValue);\n         Assert.assertEquals(body1.actionValue, body2.actionValue);\n     }\n     \n     public static class RPCAckBody {\n         public String actionValue;\n     }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_yaoming.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.json.bvt.bug.Bug_for_yaoming.SimpleHttpReuslt.ErrorMessage;\n\npublic class Bug_for_yaoming extends TestCase {\n\n    public void test_bug() throws Exception {\n        SimpleHttpReuslt v = new SimpleHttpReuslt();\n        v.setErrorMessage(new ArrayList<ErrorMessage>());\n        v.getErrorMessage().add(new ErrorMessage());\n        String text = JSON.toJSONString(v);\n        text = \"{\\\"content\\\":{\\\"versionModelList\\\":[{\\\"version\\\":\\\"260\\\",\\\"currentVersion\\\":true,\\\"versionComment\\\":\\\"testVersion\\\",\\\"warSize\\\":\\\"43130185\\\",\\\"appIdentifier\\\":\\\"parent\\\",\\\"uploadTime\\\":1375850777000},{\\\"version\\\":\\\"247\\\",\\\"currentVersion\\\":false,\\\"versionComment\\\":\\\"testVersion\\\",\\\"warSize\\\":\\\"43130186\\\",\\\"appIdentifier\\\":\\\"parent\\\",\\\"uploadTime\\\":1375634817000},{\\\"version\\\":\\\"246\\\",\\\"currentVersion\\\":false,\\\"versionComment\\\":\\\"testVersion\\\",\\\"warSize\\\":\\\"43130186\\\",\\\"appIdentifier\\\":\\\"parent\\\",\\\"uploadTime\\\":1375613193000},{\\\"version\\\":\\\"245\\\",\\\"currentVersion\\\":false,\\\"versionComment\\\":\\\"testVersion\\\",\\\"warSize\\\":\\\"43130185\\\",\\\"appIdentifier\\\":\\\"parent\\\",\\\"uploadTime\\\":1375591593000},{\\\"version\\\":\\\"244\\\",\\\"currentVersion\\\":false,\\\"versionComment\\\":\\\"testVersion\\\",\\\"warSize\\\":\\\"43130186\\\",\\\"appIdentifier\\\":\\\"parent\\\",\\\"uploadTime\\\":1375569999000},{\\\"version\\\":\\\"243\\\",\\\"currentVersion\\\":false,\\\"versionComment\\\":\\\"testVersion\\\",\\\"warSize\\\":\\\"43130185\\\",\\\"appIdentifier\\\":\\\"parent\\\",\\\"uploadTime\\\":1375548418000}],\\\"exceptionCode\\\":0},\\\"hasError\\\":false}\";\n        JSON.parseObject(text, SimpleHttpReuslt.class);\n    }\n\n    public static class SimpleHttpReuslt {\n\n        private String             content;\n        private Boolean            hasError;\n        private List<ErrorMessage> errorMessage;\n\n        public String getContent() {\n            return content;\n        }\n\n        public Boolean isHasError() {\n            return hasError;\n        }\n\n        public void setContent(String content) {\n            this.content = content;\n        }\n\n        public void setHasError(Boolean hasError) {\n            this.hasError = hasError;\n        }\n\n        public List<ErrorMessage> getErrorMessage() {\n            return errorMessage;\n        }\n\n        public void setErrorMessage(List<ErrorMessage> errorMessage) {\n            this.errorMessage = errorMessage;\n        }\n\n        public static class ErrorMessage {\n\n            private String field;\n            private String code;\n            private String msg;\n\n            public String getField() {\n                return field;\n            }\n\n            public String getCode() {\n                return code;\n            }\n\n            public String getMsg() {\n                return msg;\n            }\n\n            public void setField(String field) {\n                this.field = field;\n            }\n\n            public void setCode(String code) {\n                this.code = code;\n            }\n\n            public void setMsg(String msg) {\n                this.msg = msg;\n            }\n\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_yaoming_1.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.json.bvtVO.AccessHttpConfigModel;\n\n\npublic class Bug_for_yaoming_1 extends TestCase {\n    public void test_0 () throws Exception {\n        JSON.parseObject(\"{}\", AccessHttpConfigModel.class);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_yuanmomo_Issue_504.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.List;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_yuanmomo_Issue_504 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String userStr1 = \"{\\\"id\\\":\\\"qfHdV0ez0N10\\\", \\\"ext\\\":{\\\"models\\\": [\\\"10000\\\",\\\"10002\\\"]} }\";\n        User user = JSON.parseObject(userStr1, User.class);\n        System.out.println(user);\n    }\n\n    public void test_for_issue_1() throws Exception {\n        String text = \"{\\\"models\\\":[\\\"10000\\\",\\\"10002\\\"] }\";\n        UserExt ext = JSON.parseObject(text, UserExt.class);\n    }\n\n    public void test_for_issue_2() throws Exception {\n        String userStr2 = \"{\\\"id\\\":\\\"qfHdV0ez0N10\\\", \\\"ext\\\":{\\\"models\\\":[\\\"10000\\\",\\\"10002\\\"] } }\";\n\n        User user = JSON.parseObject(userStr2, User.class);\n        System.out.println(user);\n    }\n\n    public static class User {\n\n        private String  id;\n        private UserExt ext;\n\n        public String getId() {\n            return id;\n        }\n\n        public void setId(String id) {\n            this.id = id;\n        }\n\n        public UserExt getExt() {\n            return ext;\n        }\n\n        public void setExt(UserExt ext) {\n            this.ext = ext;\n        }\n\n        @Override\n        public String toString() {\n            return \"User{\" + \"id='\" + id + '\\'' + \", ext=\" + ext + '}';\n        }\n    }\n\n    public static class UserExt {\n\n        private List<String> models;\n\n        public List<String> getModels() {\n            return models;\n        }\n\n        public void setModels(List<String> models) {\n            this.models = models;\n        }\n\n        @Override\n        public String toString() {\n            return \"UserExt{\" + \"models=\" + models + '}';\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_yuanmomo_Issue_505_1.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.List;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Bug_for_yuanmomo_Issue_505_1 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String userStr1 = \"{\\\"id\\\":\\\"qfHdV0ez0N10\\\", \\\"ext\\\":{\\\"model\\\": \\\"10000\\\"} }\";\n        User user = JSON.parseObject(userStr1, User.class);\n        System.out.println(user);\n    }\n\n    public void test_for_issue_1() throws Exception {\n        String text = \"{\\\"model\\\":\\\"10002\\\" }\";\n        UserExt ext = JSON.parseObject(text, UserExt.class);\n    }\n\n    public void test_for_issue_2() throws Exception {\n        String userStr2 = \"{\\\"id\\\":\\\"qfHdV0ez0N10\\\", \\\"ext\\\":{\\\"model\\\":\\\"10000\\\" } }\";\n\n        User user = JSON.parseObject(userStr2, User.class);\n        System.out.println(user);\n    }\n\n    public static class User {\n\n        private String  id;\n        private UserExt ext;\n\n        public String getId() {\n            return id;\n        }\n\n        public void setId(String id) {\n            this.id = id;\n        }\n\n        public UserExt getExt() {\n            return ext;\n        }\n\n        public void setExt(UserExt ext) {\n            this.ext = ext;\n        }\n\n        @Override\n        public String toString() {\n            return \"User{\" + \"id='\" + id + '\\'' + \", ext=\" + ext + '}';\n        }\n    }\n\n    public static class UserExt {\n\n        private String model;\n\n        public String getModel() {\n            return model;\n        }\n\n        public void setModel(String model) {\n            this.model = model;\n        }\n\n        public String toString() {\n            return \"UserExt{model=\" + model + \"}\";\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_yunban.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.HashMap;\nimport java.util.LinkedList;\nimport java.util.List;\nimport java.util.Map;\n\npublic class Bug_for_yunban extends TestCase {\n    public void test_for_issue() throws Exception {\n        List<RelationItem> relationItemList = new LinkedList<RelationItem>();\n\n        Map<String, String> ext = new HashMap<String, String>();\n        ext.put(\"a\", \"b\");\n        ext.put(\"c\", \"d\");\n\n\n        RelationItem relationItem = new RelationItem();\n        relationItem.setExt(ext);\n        relationItem.setSourceId(\"12\");\n        relationItemList.add(relationItem);\n\n        relationItem = new RelationItem();\n        relationItem.setExt(ext);\n        relationItem.setSourceId(\"55\");\n        relationItemList.add(relationItem);\n\n        //ParserConfig.getGlobalInstance().setAutoTypeSupport(true);\n        //String a = JSON.toJSONString(relationItemList, SerializerFeature.WriteClassName);\n        String a1 = JSON.toJSONString(relationItemList);\n        System.out.println(a1);\n\n\n        //ParserConfig.getGlobalInstance().setAutoTypeSupport(true);\n        List<RelationItem> relationItemList1 = JSON.parseObject(a1, new com.alibaba.fastjson.TypeReference<List<RelationItem>>(){});\n\n        System.out.print(\"fdafda\");\n    }\n\n    public static class RelationItem {\n        private String sourceId;\n        private Map<String, String> ext;\n\n        public String getSourceId() {\n            return sourceId;\n        }\n\n        public void setSourceId(String sourceId) {\n            this.sourceId = sourceId;\n        }\n\n        public Map<String, String> getExt() {\n            return ext;\n        }\n\n        public void setExt(Map<String, String> ext) {\n            this.ext = ext;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_zengjie.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\n\npublic class Bug_for_zengjie extends TestCase {\n    public void test_0 () throws Exception {\n        JSON.parse(\"{123:'abc','value':{123:'abc'}}\");\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_zhaoyao.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashMap;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Bug_for_zhaoyao extends TestCase {\n    protected void setUp() throws Exception {\n        com.alibaba.fastjson.parser.ParserConfig.global.addAccept(\"com.alibaba.json.bvt.bug.Bug_for_zhaoyao.\");\n    }\n\n    public void test_FieldMap() throws Exception {\n        FieldMap map = new FieldMap();\n        map.put(\"a\", 1);\n        map.put(\"b\", 2);\n        String text = JSON.toJSONString(map, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        \n        FieldMap map2 = (FieldMap) JSON.parse(text);\n        \n        Assert.assertTrue(map.equals(map2));\n    }\n\n    public static class FieldMap extends HashMap<String, Object> {\n\n        private static final long serialVersionUID = 1L;\n\n        public FieldMap field(String field, Object val) {\n            this.put(field, val);\n            return this;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_zhongyin.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.io.UnsupportedEncodingException;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\npublic class Bug_for_zhongyin extends TestCase {\n\n    public void test_entity() throws Exception {\n        for (char c = '\\u0000'; c < '\\u0020'; c++) {\n            String s = String.valueOf(c) + \"entity\";\n            String jsons = JSON.toJSONString(new VO(s));\n            System.out.println(jsons);\n            VO v = JSON.parseObject(jsons, VO.class);\n            Assert.assertEquals(s, v.getName());\n        }\n    }\n\n    public void test_map() throws Exception {\n        for (char c = '\\u0000'; c < '\\u0020'; c++) {\n            String s = String.valueOf(c) + \"map\";\n            String jsons = JSON.toJSONString(Collections.singletonMap(\"value\", s));\n            System.out.println(jsons);\n\n            JSONObject o = JSON.parseObject(jsons);\n            Assert.assertEquals(s, o.getString(\"value\"));\n        }\n    }\n    \n    public  void test_0() throws Exception {\n        String hex = \"41544D20E58F96E78EB0EFBC8DE993B6E88194E5908CE59F8E1A20E4BD9BE5B1B1E5B882E7A685E59F8EE58CBAE7A596E5BA99E8B7AF201A33331A20E58FB7E799BEE88AB1E5B9BFE59CBAE9A696E5B182201A\";\n        String result = getHexStr(hex);\n        \n        Map <String , Object>map = new HashMap<String, Object>();\n        map.put(\"aaa\" , result);\n        String stringV = JSON.toJSONString(map);\n        System.out.println(stringV);\n        JSONObject o = JSON.parseObject(stringV);\n        System.out.println(o.getString(\"aaa\"));\n        \n    }\n    \n    private String getHexStr(String hex) throws UnsupportedEncodingException {\n        byte []bytes = new byte[hex.length() / 2];\n        for(int i = 0 ; i < bytes.length ; i++) {\n            String v = hex.substring(i * 2 , i * 2 + 2);\n            bytes[i] = (byte)Integer.parseInt(v , 16);\n        }\n        String str = new String(bytes , \"UTF-8\");\n        System.out.println(str);\n        return str;\n    }\n\n    public static class VO {\n\n        private String name;\n\n        public VO(){\n\n        }\n\n        public VO(String name){\n            this.name = name;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_zhuangzaowen.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Date;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Set;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\n\npublic class Bug_for_zhuangzaowen extends TestCase {\n\n    public void test_for_zhuangzaowen() throws Exception {\n        String value = \"{\\\"begin\\\":1340263804415,\\\"buildIds\\\":[\\\"42\\\"],\\\"end\\\":1340265305070,\\\"endBuildId\\\":\\\"50\\\",\\\"id\\\":\\\"4\\\",\\\"jobs\\\":[\\\"cb-intl-rfqma-UT\\\",\\\"cb-intl-rfqma-selenium\\\"],\\\"owners\\\":[\\\"wb_jianping.shenjp\\\"],\\\"triggerBuildId\\\":\\\"42\\\"}\";\n        System.out.println(JSON.parseObject(value, JenkinsFailedPhase.class, Feature.DisableASM));\n    }\n\n    public static class JenkinsFailedPhase {// extends BaseEntity<JenkinsFailedPhase> {\n\n        private String             id;\n        public static final String KEY_NAME_SPACE = \"phase\";\n\n        private Set<String>        owners;\n\n        private List<String>       buildIds;\n\n        private Set<String>        jobs;\n\n        private Date               begin;\n\n        private Date               end;\n\n        private String             endBuildId;\n\n        private String             triggerBuildId;\n\n        /*\n         * @Override public String generateKey(String id) { return KeyUtils.generatePhaseKey(id); }\n         */\n\n        public Set<String> getOwners() {\n            return owners;\n        }\n\n        public void setOwners(Set<String> owners) {\n            this.owners = owners;\n        }\n\n        public void addOwner(String owner) {\n            if (owners == null) {\n                owners = new HashSet<String>();\n            }\n            owners.add(owner);\n        }\n\n        public List<String> getBuildIds() {\n            return buildIds;\n        }\n\n        public void setBuildIds(List<String> buildIds) {\n            this.buildIds = buildIds;\n        }\n\n        public void addBuild(String bid) {\n            if (buildIds == null) {\n                buildIds = new ArrayList<String>();\n            }\n            buildIds.add(bid);\n        }\n\n        public Set<String> getJobs() {\n            return jobs;\n        }\n\n        public void setJobs(Set<String> jobs) {\n            this.jobs = jobs;\n        }\n\n        public void addJobs(String job) {\n            if (this.jobs == null) {\n                jobs = new HashSet<String>();\n            }\n            jobs.add(job);\n        }\n\n        public Date getEnd() {\n            return end;\n        }\n\n        public void setEnd(Date end) {\n            this.end = end;\n        }\n\n        public Date getBegin() {\n            return begin;\n        }\n\n        public void setBegin(Date begin) {\n            this.begin = begin;\n        }\n\n        public String getEndBuildId() {\n            return endBuildId;\n        }\n\n        public void setEndBuildId(String endBuildId) {\n            this.endBuildId = endBuildId;\n        }\n\n        public String getTriggerBuildId() {\n            return triggerBuildId;\n        }\n\n        public void setTriggerBuildId(String triggerBuildId) {\n            this.triggerBuildId = triggerBuildId;\n        }\n\n        public String getId() {\n            return id;\n        }\n\n        public void setId(String id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Bug_for_zhuel.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\n\npublic class Bug_for_zhuel extends TestCase {\n\n    public void test_for_zhuel() throws Exception {\n        Person[] ps = new Person[3];\n        Person p1 = new Person();\n        p1.setAge(50);\n        p1.setHight(\"170\");\n        p1.setId(\"p1's id\");\n        p1.setName(\"person1's name\");\n        p1.setNames(new String[] { \"p1's id\", \"person1's name\" });\n        p1.setSex(\"男\");\n        Person p2 = new Person();\n        p2.setAge(48);\n        p2.setHight(\"155\");\n        p2.setId(\"p2's id\");\n        p2.setName(\"person2's name\");\n        p2.setNames(new String[] { \"p2's id\", \"person2's name\" });\n        p2.setSex(\"女\");\n        Person p3 = new Person();\n        p3.setAge(10);\n        p3.setHight(\"120\");\n        p3.setId(\"p3's id \");\n        p3.setName(\"son's name\");\n        p3.setNames(new String[] { \"p3's id \", \"son's name\" });\n        p3.setSex(\"男\");\n        ps[0] = p1;\n        ps[1] = p2;\n        ps[2] = p3;\n\n        Person[] ps1 = new Person[3];\n        Person pp1 = new Person();\n        pp1.setAge(52);\n        pp1.setHight(\"170\");\n        pp1.setId(\"pp1's id\");\n        pp1.setName(\"personpp1's name\");\n        pp1.setNames(new String[] { \"pp1's id\", \"personpp1's name\" });\n        pp1.setSex(\"男\");\n        Person pp2 = new Person();\n        pp2.setAge(49);\n        pp2.setHight(\"150\");\n        pp2.setId(\"pp2's id\");\n        pp2.setName(\"personpp2's name\");\n        pp2.setNames(new String[] { \"pp2's id\", \"personpp2's name\" });\n        pp2.setSex(\"女\");\n        Person pp3 = new Person();\n        pp3.setAge(10);\n        pp3.setHight(\"125\");\n        pp3.setId(\"pp3's id\");\n        pp3.setName(\"daughter's name\");\n        pp3.setNames(new String[] { \"pp3's id\", \"daughter's name\" });\n        pp3.setSex(\"女\");\n        ps1[0] = pp1;\n        ps1[1] = pp2;\n        ps1[2] = pp3;\n\n        Person[] ps2 = new Person[3];\n        Person a1 = new Person();\n        a1.setAge(52);\n        a1.setHight(\"170\");\n        a1.setId(\"a1's id\");\n        a1.setName(\"a1's name\");\n        a1.setNames(new String[] { \"a1's id\", \"a1's name\" });\n        a1.setSex(\"男\");\n        Person a2 = new Person();\n        a2.setAge(49);\n        a2.setHight(\"150\");\n        a2.setId(\"a2's id\");\n        a2.setName(\"a2's name\");\n        a2.setNames(new String[] { \"a2's id\", \"a2's name\" });\n        a2.setSex(\"女\");\n        Person a3 = new Person();\n        a3.setAge(10);\n        a3.setHight(\"125\");\n        a3.setId(\"a3's id\");\n        a3.setName(\"daughter's name\");\n        a3.setNames(new String[] { \"a3's id\", \"daughter's name\" });\n        a3.setSex(\"女\");\n        ps2[0] = a1;\n        ps2[1] = a2;\n        ps2[2] = a3;\n\n        Family f1 = new Family();\n        f1.setId(\"f1's id\");\n        f1.setAddress(\"f1's address\");\n        f1.setChildrennames(new String[] { \"p1's name\", \"p2's name\", \"p3's name\" });\n        f1.setIncome(100000000);\n        f1.setMaster(p1);\n        f1.setName(\"person1's home\");\n        f1.setPs(ps);\n        f1.setTest(1994.08);\n\n        Family f2 = new Family();\n        f2.setId(\"f2's id\");\n        f2.setAddress(\"f2's address\");\n        f2.setChildrennames(new String[] { \"pp1's name\", \"pp2's name\", \"pp3's name\" });\n        f2.setIncome(100000000);\n        f2.setMaster(pp1);\n        f2.setName(\"personpp1's home\");\n        f2.setPs(ps1);\n        Family f3 = new Family();\n        f3.setId(\"f3's id\");\n        f3.setAddress(\"f3's address\");\n        f3.setChildrennames(new String[] { \"a1's name\", \"a2's name\", \"a3's name\" });\n        f3.setIncome(100000000);\n        f3.setMaster(a1);\n        f3.setName(\"a1's home\");\n        f3.setPs(ps2);\n        f3.setTest(1995.08);\n        Family[] fs = new Family[3];\n        fs[0] = f1;\n        fs[1] = f2;\n        fs[2] = f3;\n        System.out.println(JSON.VERSION);\n        String sfs = JSON.toJSONString(fs, true);\n\n        Assert.assertSame(fs[0].getMaster(), fs[0].getPs()[0]);\n        System.out.println(sfs);\n\n        {\n            Family[] result = JSON.parseObject(sfs, Family[].class);\n            Assert.assertSame(result[0].getMaster(), result[0].getPs()[0]);\n            Assert.assertSame(result[1].getMaster(), result[1].getPs()[0]);\n            Assert.assertSame(result[2].getMaster(), result[2].getPs()[0]);\n        }\n        {\n            JSONArray array = JSON.parseArray(sfs);\n            for (int i = 0; i < array.size(); ++i) {\n                JSONObject jsonObj = array.getJSONObject(i);\n                Assert.assertSame(jsonObj.get(\"master\"), jsonObj.getJSONArray(\"ps\").get(0));\n            }\n        }\n    }\n\n    public static class Family {\n\n        private String   id;\n        private String   name;\n        private Person[] ps;\n        private String   address;\n        private String[] childrennames;\n        private Person   master;\n        private long     income;\n        private double   test;\n\n        public String getId() {\n            return id;\n        }\n\n        public void setId(String id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public Person[] getPs() {\n            return ps;\n        }\n\n        public void setPs(Person[] ps) {\n            this.ps = ps;\n        }\n\n        public String getAddress() {\n            return address;\n        }\n\n        public void setAddress(String address) {\n            this.address = address;\n        }\n\n        public String[] getChildrennames() {\n            return childrennames;\n        }\n\n        public void setChildrennames(String[] childrennames) {\n            this.childrennames = childrennames;\n        }\n\n        public Person getMaster() {\n            return master;\n        }\n\n        public void setMaster(Person master) {\n            this.master = master;\n        }\n\n        public long getIncome() {\n            return income;\n        }\n\n        public void setIncome(long income) {\n            this.income = income;\n        }\n\n        public double getTest() {\n            return test;\n        }\n\n        public void setTest(double test) {\n            this.test = test;\n        }\n    }\n\n    public static class Person {\n\n        private String   id;\n        private String   name;\n        private String   sex;\n        private int      age;\n        private String[] names;\n        private String   hight;\n\n        public String getId() {\n            return id;\n        }\n\n        public void setId(String id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public String getSex() {\n            return sex;\n        }\n\n        public void setSex(String sex) {\n            this.sex = sex;\n        }\n\n        public int getAge() {\n            return age;\n        }\n\n        public void setAge(int age) {\n            this.age = age;\n        }\n\n        public String[] getNames() {\n            return names;\n        }\n\n        public void setNames(String[] names) {\n            this.names = names;\n        }\n\n        public String getHight() {\n            return hight;\n        }\n\n        public void setHight(String hight) {\n            this.hight = hight;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/CollectionEmptyMapTest.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.Collection;\nimport java.util.Collections;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class CollectionEmptyMapTest extends TestCase {\n    public void test_0() throws Exception {\n        Map<String, Object> map = Collections.emptyMap();\n        \n        String text = JSON.toJSONString(map, SerializerFeature.WriteClassName);\n        \n        Assert.assertEquals(\"{\\\"@type\\\":\\\"java.util.Collections$EmptyMap\\\"}\", text);\n        \n        Assert.assertSame(map, JSON.parse(text));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/FastJsonSerializeIterableTest.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.ArrayList;\nimport java.util.Iterator;\nimport java.util.List;\nimport java.util.NoSuchElementException;\n\nimport org.junit.Assert;\nimport org.junit.Test;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class FastJsonSerializeIterableTest {\n    @Test\n    public void testWithIterable() {\n        class Person {\n            private String name;\n            public Person(String s) {\n                this.name = s;\n            }\n            public String getName() {\n                return name;\n            }\n        }\n        final Person s1 = new Person(\"fast\");\n        final Person s2 = new Person(\"fast\");\n        Iterable<Person> iterable = new Iterable<Person>() {\n            @Override\n            public Iterator<Person> iterator() {\n                return new Iterator<Person>() {\n                    int cursor = 0;\n                    @Override\n                    public boolean hasNext() {\n                        return cursor < 2;\n                    }\n\n                    @Override\n                    public Person next() {\n                        int val = cursor++;\n                        switch (val) {\n                            case 0:\n                                return s1;\n                            case 1:\n                                return s2;\n                            default:\n                                throw new NoSuchElementException();\n                        }\n                    }\n\n                    @Override\n                    public void remove() {\n                        throw new UnsupportedOperationException();\n                    }\n                };\n            }\n        };\n        List<Person> list = new ArrayList<Person>();\n        for (Person p : iterable) {\n            list.add(p);\n        }\n        \n        Assert.assertEquals(\"[{\\\"name\\\":\\\"fast\\\"},{\\\"name\\\":\\\"fast\\\"}]\", JSON.toJSONString(list));\n        Assert.assertEquals(\"[{\\\"name\\\":\\\"fast\\\"},{\\\"name\\\":\\\"fast\\\"}]\", JSON.toJSONString(iterable));\n        Assert.assertEquals(\"[{\\\"name\\\":\\\"fast\\\"},{\\\"name\\\":\\\"fast\\\"}]\", JSON.toJSONString(list.iterator()));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue1005.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\n/**\n * Created by wenshao on 18/01/2017.\n */\npublic class Issue1005 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"values\\\":[[1,2,3]]}\", Model.class);\n\n        assertNotNull(model.values);\n        assertEquals(3, model.values[0].size());\n        assertEquals(Byte.class, model.values[0].get(0).getClass());\n        assertEquals(Byte.class, model.values[0].get(1).getClass());\n        assertEquals(Byte.class, model.values[0].get(2).getClass());\n    }\n\n    public void test_for_List() throws Exception {\n        Model2 model = JSON.parseObject(\"{\\\"values\\\":[1,2,3]}\", Model2.class);\n\n        assertNotNull(model.values);\n        assertEquals(3, model.values.size());\n        assertEquals(Byte.class, model.values.get(0).getClass());\n        assertEquals(Byte.class, model.values.get(1).getClass());\n        assertEquals(Byte.class, model.values.get(2).getClass());\n    }\n\n    public static class Model {\n        public List<Byte>[] values;\n    }\n\n    public static class Model2 {\n        public List<Byte> values;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue101.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Issue101 extends TestCase {\n\n    public void test_for_issure() throws Exception {\n        VO vo = new VO();\n        vo.a = new Object();\n        vo.b = vo.a;\n        vo.c = vo.a;\n        \n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"a\\\":{},\\\"b\\\":{},\\\"c\\\":{}}\", text);\n    }\n\n    @JSONType(serialzeFeatures=SerializerFeature.DisableCircularReferenceDetect)\n    public static class VO {\n\n        private Object a;\n        private Object b;\n        private Object c;\n\n        public Object getA() {\n            return a;\n        }\n\n        public void setA(Object a) {\n            this.a = a;\n        }\n\n        public Object getB() {\n            return b;\n        }\n\n        public void setB(Object b) {\n            this.b = b;\n        }\n\n        public Object getC() {\n            return c;\n        }\n\n        public void setC(Object c) {\n            this.c = c;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue1013.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.List;\n\n/**\n * Created by wuwen on 2017/2/16.\n */\npublic class Issue1013 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        TestDomain domain = new TestDomain();\n\n        String json = JSON.toJSONString(domain);\n\n        TestDomain domain1 = JSON.parseObject(json, TestDomain.class);\n\n        assertEquals(domain.getList(), domain1.getList());\n    }\n\n    public void test_for_issue_1() throws Exception {\n\n        TestDomain domain1 = JSON.parseObject(\"{\\\"list\\\":[]}\", TestDomain.class);\n        TestDomain domain2 = JSON.parseObject(\"{\\\"list\\\":[1, 2]}\", TestDomain.class);\n\n        assertEquals(0, domain1.getList().size());\n        assertEquals(Arrays.asList(1, 2), domain2.getList());\n    }\n\n    public void test_for_issue_2() throws Exception {\n\n        TestDomain domain1 = JSON.parseObject(\"{\\\"list\\\":null}\", TestDomain.class);\n\n        assertEquals(1, domain1.getList().size());\n    }\n\n    public void test_for_issue3() throws Exception {\n        TestDomain2 domain = new TestDomain2();\n\n        String json = JSON.toJSONString(domain);\n\n        TestDomain2 domain1 = JSON.parseObject(json, TestDomain2.class);\n\n        assertEquals(domain.list, domain1.list);\n    }\n\n    public void test_for_issue_4() throws Exception {\n\n        TestDomain2 domain1 = JSON.parseObject(\"{\\\"list\\\":[1, 2]}\", TestDomain2.class);\n\n        assertEquals(Arrays.asList(1, 2), domain1.list);\n    }\n\n    public void test_for_issue_5() throws Exception {\n\n        TestDomain2 domain1 = JSON.parseObject(\"{\\\"list\\\":null}\", TestDomain2.class);\n\n        assertNull(domain1.list);\n    }\n\n    public void test_for_issue_6() throws Exception {\n\n        TestDomain3 domain3 = JSON.parseObject(\"{\\\"list\\\":null}\", TestDomain3.class);\n\n        assertNull(domain3.list);\n    }\n\n    static class TestDomain {\n        private List<Integer> list;\n\n        public TestDomain(){\n            list = new ArrayList<Integer>();\n            list.add(1);\n        }\n\n        public List<Integer> getList(){\n            return list;\n        }\n    }\n\n    static class TestDomain2 {\n        public List<Integer> list;\n\n        public TestDomain2(){\n            list = new ArrayList<Integer>();\n            list.add(1);\n        }\n    }\n\n    static class TestDomain3 {\n        private List<Integer> list;\n\n        public TestDomain3(){\n            list = new ArrayList<Integer>();\n            list.add(1);\n        }\n\n        public List<Integer> getList(){\n            return list;\n        }\n\n        public void setList(List<Integer> list) {\n            this.list = list;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue1017.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.io.Serializable;\nimport java.util.List;\n\n/**\n * Created by wenshao on 11/02/2017.\n */\npublic class Issue1017 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"{\\\"pictureList\\\":[\\\"http://static.oschina.net/uploads/user/1218/2437072_100.jpg?t=1461076033000\\\",\\\"http://common.cnblogs.com/images/icon_weibo_24.png\\\"]}\";\n\n        User user = JSON.parseObject(json, User.class);\n        assertNotNull(user.pictureList);\n        assertEquals(2, user.pictureList.size());\n        assertEquals(\"http://static.oschina.net/uploads/user/1218/2437072_100.jpg?t=1461076033000\", user.pictureList.get(0));\n        assertEquals(\"http://common.cnblogs.com/images/icon_weibo_24.png\", user.pictureList.get(1));\n    }\n\n    public static class User implements Serializable {\n        private List<String> pictureList;\n        public List<String> getPictureList() {\n            return pictureList;\n        }\n        public User setPictureList(List<String> pictureList) {\n            this.pictureList = pictureList;\n            return this;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue101_NoneASM.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Issue101_NoneASM extends TestCase {\n\n    public void test_for_issure() throws Exception {\n        VO vo = new VO();\n        vo.a = new Object();\n        vo.b = vo.a;\n        vo.c = vo.a;\n        \n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"a\\\":{},\\\"b\\\":{},\\\"c\\\":{}}\", text);\n    }\n\n    @JSONType(serialzeFeatures=SerializerFeature.DisableCircularReferenceDetect)\n    private static class VO {\n\n        private Object a;\n        private Object b;\n        private Object c;\n\n        public Object getA() {\n            return a;\n        }\n\n        public void setA(Object a) {\n            this.a = a;\n        }\n\n        public Object getB() {\n            return b;\n        }\n\n        public void setB(Object b) {\n            this.b = b;\n        }\n\n        public Object getC() {\n            return c;\n        }\n\n        public void setC(Object c) {\n            this.c = c;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue101_field.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Issue101_field extends TestCase {\n\n    public void test_for_issure() throws Exception {\n        VO vo = new VO();\n        vo.a = new Object();\n        vo.b = vo.a;\n        vo.c = vo.a;\n        \n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"a\\\":{},\\\"b\\\":{},\\\"c\\\":{\\\"$ref\\\":\\\"$.b\\\"}}\", text);\n    }\n\n    public static class VO {\n\n        private Object a;\n        private Object b;\n        private Object c;\n\n        public Object getA() {\n            return a;\n        }\n\n        public void setA(Object a) {\n            this.a = a;\n        }\n\n        @JSONField(serialzeFeatures=SerializerFeature.DisableCircularReferenceDetect)\n        public Object getB() {\n            return b;\n        }\n\n        public void setB(Object b) {\n            this.b = b;\n        }\n\n        public Object getC() {\n            return c;\n        }\n\n        public void setC(Object c) {\n            this.c = c;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue101_field_NoneASM.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Issue101_field_NoneASM extends TestCase {\n\n    public void test_for_issure() throws Exception {\n        VO vo = new VO();\n        vo.a = new Object();\n        vo.b = vo.a;\n        vo.c = vo.a;\n        \n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"a\\\":{},\\\"b\\\":{},\\\"c\\\":{\\\"$ref\\\":\\\"$.b\\\"}}\", text);\n    }\n\n    private static class VO {\n\n        private Object a;\n        private Object b;\n        private Object c;\n\n        public Object getA() {\n            return a;\n        }\n\n        public void setA(Object a) {\n            this.a = a;\n        }\n\n        @JSONField(serialzeFeatures=SerializerFeature.DisableCircularReferenceDetect)\n        public Object getB() {\n            return b;\n        }\n\n        public void setB(Object b) {\n            this.b = b;\n        }\n\n        public Object getC() {\n            return c;\n        }\n\n        public void setC(Object c) {\n            this.c = c;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue1020.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.time.LocalDate;\n\n/**\n * Created by wenshao on 11/03/2017.\n */\npublic class Issue1020 extends TestCase {\n    public void test_null() throws Exception {\n        Vo vo = JSON.parseObject(\"{\\\"ld\\\":null}\", Vo.class);\n        assertNull(vo.ld);\n\n    }\n\n    public void test_empty() throws Exception {\n        Vo vo = JSON.parseObject(\"{\\\"ld\\\":\\\"\\\"}\", Vo.class);\n        assertNull(vo.ld);\n\n    }\n\n    public static class Vo {\n        public LocalDate ld;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue1023.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport junit.framework.TestCase;\n\nimport javax.xml.datatype.DatatypeFactory;\nimport javax.xml.datatype.XMLGregorianCalendar;\nimport java.util.ArrayList;\nimport java.util.Date;\nimport java.util.GregorianCalendar;\nimport java.util.List;\n\n/**\n * Created by wenshao on 11/03/2017.\n */\npublic class Issue1023 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Date now = new Date();\n\n        GregorianCalendar gregorianCalendar = (GregorianCalendar) GregorianCalendar.getInstance();\n        gregorianCalendar.setTime(now);\n\n        XMLGregorianCalendar calendar = DatatypeFactory.newInstance().newXMLGregorianCalendar(gregorianCalendar);\n\n        String jsonString = JSON.toJSONString(calendar);\n        // success\n        calendar = JSON.parseObject(jsonString, XMLGregorianCalendar.class);\n\n        Object toJSON1 = JSON.toJSON(calendar); // debug看到是 Long 类型\n        // 所以这里会报错：\n        // error: java.lang.ClassCastException: java.lang.Long cannot be cast to com.alibaba.fastjson.JSONObject\n        //JSONObject jsonObject = (JSONObject) JSON.toJSON(calendar);\n        // 所以 这里肯定会报错， 因为 jsonObject 不是JSONObject类型\n        //calendar = jsonObject.toJavaObject(XMLGregorianCalendar.class);\n\n        List<XMLGregorianCalendar> calendarList = new ArrayList<XMLGregorianCalendar>();\n        calendarList.add(calendar);\n        calendarList.add(calendar);\n        calendarList.add(calendar);\n\n        Object toJSON2 = JSON.toJSON(calendarList); // debug 看到是 JSONArray 类型\n\n        // success： 通过 JSONArray.parseArray 方法可以正确转换\n        JSONArray jsonArray = (JSONArray) JSON.toJSON(calendarList);\n        jsonString = jsonArray.toJSONString();\n        List<XMLGregorianCalendar> calendarList1 = JSONArray.parseArray(jsonString, XMLGregorianCalendar.class);\n\n        // 通过 jsonArray.toJavaList 无法转换\n        // error: com.alibaba.fastjson.JSONException: can not cast to : javax.xml.datatype.XMLGregorianCalendar\n        List<XMLGregorianCalendar> calendarList2 = jsonArray.toJavaList(XMLGregorianCalendar.class);\n        assertNotNull(calendarList2);\n        assertEquals(3, calendarList2.size());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue1030.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\n/**\n * Created by wenshao on 13/03/2017.\n */\npublic class Issue1030 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String DOC = \"{\\\"books\\\":[{\\\"pageWords\\\":[{\\\"num\\\":10},{\\\"num\\\":15}]},{\\\"pageWords\\\":[{\\\"num\\\":20}]}]}\";\n\n        //fastjson包\n        JSONObject result = JSONObject.parseObject(DOC);\n\n        List array = (List) JSONPath.eval(result, \"$.books[0:].pageWords[0:]\");\n\n        assertEquals(3, array.size());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue1036.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.json.bvt.parser.array.BeanToArrayTest3_private;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\n/**\n * Created by wuwen on 2017/2/24.\n */\npublic class Issue1036 extends TestCase {\n\n    /**\n     * @see BeanToArrayTest3_private#test_array()\n     * @see com.alibaba.fastjson.parser.deserializer.DefaultFieldDeserializer#parseField\n     * */\n    public void test_for_issue() throws Exception {\n        NullPointerException exception = new NullPointerException(\"test\");\n        Result<String> result = new Result<String>();\n        result.setException(exception);\n\n        String json = JSON.toJSONString(result);\n\n        Result<String> a = JSON.parseObject(json, new TypeReference<Result<String>>() {\n        });\n\n        Assert.assertEquals(\"test\", a.getException().getMessage());\n    }\n\n    public static class Result<T> {\n        private T data;\n\n        private Throwable exception;\n\n        public Result() {\n        }\n\n        public T getData() {\n            return data;\n        }\n\n        public void setData(T data) {\n            this.data = data;\n        }\n\n        public Throwable getException() {\n            return exception;\n        }\n\n        public void setException(Throwable exception) {\n            this.exception = exception;\n        }\n\n        @Override\n        public String toString() {\n            return \"Result{\" +\n                    \"data='\" + data + '\\'' +\n                    \", exception=\" + exception +\n                    '}';\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue1063.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.sql.Timestamp;\n\n/**\n * Created by wenshao on 11/03/2017.\n */\npublic class Issue1063 extends TestCase {\n    public void test_for_issue() throws Exception {\n        long currentMillis = System.currentTimeMillis();\n        TimestampBean bean = new TimestampBean();\n        bean.setTimestamp(new Timestamp(currentMillis));\n        String timestampJson = JSON.toJSONString(bean);\n\n        // 这里能转换成功\n        TimestampBean beanOfJSON = JSON.parseObject(timestampJson, TimestampBean.class);\n\n        // 这里抛异常 java.lang.NumberFormatException\n        JSONObject jsonObject = JSON.parseObject(timestampJson);\n        Timestamp timestamp2 = jsonObject.getObject(\"timestamp\", Timestamp.class);\n        assertEquals(currentMillis/1000, timestamp2.getTime() / 1000);\n    }\n\n    public static class TimestampBean {\n        private Timestamp timestamp = null;\n\n        public Timestamp getTimestamp() {\n            return timestamp;\n        }\n\n        public void setTimestamp(Timestamp timestamp) {\n            this.timestamp = timestamp;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue1063_date.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.sql.Date;\nimport java.sql.Timestamp;\n\n/**\n * Created by wenshao on 11/03/2017.\n */\npublic class Issue1063_date extends TestCase {\n    public void test_for_issue() throws Exception {\n        long currentMillis = System.currentTimeMillis();\n        TimestampBean bean = new TimestampBean();\n        bean.setTimestamp(new Date(currentMillis));\n        String timestampJson = JSON.toJSONString(bean);\n\n        // 这里能转换成功\n        TimestampBean beanOfJSON = JSON.parseObject(timestampJson, TimestampBean.class);\n\n        // 这里抛异常 java.lang.NumberFormatException\n        JSONObject jsonObject = JSON.parseObject(timestampJson);\n        Timestamp timestamp2 = jsonObject.getObject(\"timestamp\", Timestamp.class);\n        assertEquals(currentMillis/1000, timestamp2.getTime() / 1000);\n    }\n\n    public static class TimestampBean {\n        private Date timestamp = null;\n\n        public Date getTimestamp() {\n            return timestamp;\n        }\n\n        public void setTimestamp(Date timestamp) {\n            this.timestamp = timestamp;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue1074.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 16/03/2017.\n */\npublic class Issue1074 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"//123456\";\n        Throwable error = null;\n        try {\n            JSON.parse(json);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue1075.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 16/03/2017.\n */\npublic class Issue1075 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"{ \\\"question\\\": \\\"1+1=?\\\\u1505a\\\"}\";\n        JSON.parseObject(json);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue109.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.util.ASMUtils;\n\n\npublic class Issue109 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Assert.assertFalse(ASMUtils.isAndroid(null));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue115.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Issue115 extends TestCase {\n\n    public void test_for_issue_115() throws Exception {\n        Player2 player = new Player2();\n\n        Card2 card = new Card2();\n        card.cardId = \"hello\";\n        player.cards.put(1, card);\n        player.cardGroup.put(1, card);\n\n        String json = JSON.toJSONString(player);\n\n        System.out.println(\"json:\" + json);\n\n        Player2 player2 = JSON.parseObject(json, Player2.class);\n    }\n\n    static class Player2 {\n\n        public Map cards     = new HashMap();\n        public Map cardGroup = new HashMap();\n    }\n\n    static class Card2 {\n\n        public String cardId;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue117.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\n\npublic class Issue117 extends TestCase {\n    public void test_for_issue() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"id\\\":123}\", VO.class);\n        Assert.assertEquals(123, vo.getId());\n        vo.setId(124);\n        vo.equals(null);\n        vo.hashCode();\n        Assert.assertEquals(\"{\\\"id\\\":124}\", vo.toString());\n    }\n    \n    public static interface VO {\n        public int getId();\n        public void setId(int val);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue118.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\n\npublic class Issue118 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = JSON.toJSONString(\"\\0\");\n        assertEquals(\"\\\"\\\\u0000\\\"\", json);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue119.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.parser.JSONScanner;\n\npublic class Issue119 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        JSONScanner lexer = new JSONScanner(\"-100S\");\n        lexer.resetStringPosition();\n        lexer.scanNumber();\n        Assert.assertEquals(Short.class, lexer.integerValue().getClass());\n        Assert.assertEquals(-100, lexer.integerValue().shortValue());\n        lexer.close();\n    }\n    \n    public void test_for_issue_b() throws Exception {\n        JSONScanner lexer = new JSONScanner(\"-10B\");\n        lexer.scanNumber();\n        Assert.assertEquals(Byte.class, lexer.integerValue().getClass());\n        Assert.assertEquals(-10, lexer.integerValue().byteValue());\n        lexer.close();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue124.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.List;\nimport java.util.Random;\nimport java.util.concurrent.CountDownLatch;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Issue124 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        // final ObjectMapper mapper = new ObjectMapper();\n        // mapper.setSerializationInclusion(Include.NON_NULL);\n        final Random random = new Random();\n        final int threadCount = 1000;\n        final CountDownLatch latch = new CountDownLatch(threadCount);\n//        {\n//            UserInfo info = new UserInfo();\n//            CheckInfoVo vo = new CheckInfoVo(100);\n//            JSON.toJSONString(new SuccessReturn(info), SerializerFeature.WriteDateUseDateFormat);\n//            JSON.toJSONString(new SuccessReturn(vo),\n//                              SerializerFeature.WriteDateUseDateFormat);\n//        }\n        for (int i = 0; i < threadCount; i++) {\n            new Thread() {\n\n                @Override\n                public void run() {\n                    UserInfo info = new UserInfo();\n                    CheckInfoVo vo = new CheckInfoVo(100);\n                    int r = random.nextInt();\n                    try {\n                        if (r % 2 == 0) {\n                            // System.out.println(mapper.writeValueAsString(info));\n                            System.out.println(JSON.toJSONString(new SuccessReturn(info),\n                                                                 SerializerFeature.WriteDateUseDateFormat));\n                        } else {\n                            // System.out.println(mapper.writeValueAsString(vo));\n                            System.out.println(JSON.toJSONString(new SuccessReturn(vo),\n                                                                 SerializerFeature.WriteDateUseDateFormat));\n                        }\n                    } catch (Exception e) {\n                        e.printStackTrace();\n                        System.exit(0);\n                    } finally {\n                        latch.countDown();\n                    }\n                }\n            }.start();\n        }\n        latch.await();\n    }\n\n    static class SuccessReturn {\n\n        private int    code = 0;\n        private Object data;\n\n        SuccessReturn(Object data){\n            this.data = data;\n        }\n\n        public int getCode() {\n            return code;\n        }\n\n        public Object getData() {\n            return data;\n        }\n    }\n\n    static class CheckInfoVo {\n\n        private final int gmMessageCount;\n\n        public CheckInfoVo(){\n            this.gmMessageCount = 0;\n        }\n\n        public CheckInfoVo(int gmMessageCount){\n            this.gmMessageCount = gmMessageCount;\n        }\n\n        public int getGmMessageCount() {\n            return gmMessageCount;\n        }\n    }\n\n    static class UserInfo {\n\n        private long          uid;\n        private String        userName;\n        private String        nickName;\n        private int           userType;\n        private int           avatar;\n        private String        updateTime;\n        private int           modifyNickanme; // 1可以修改nickname 0不能修改\n        private long          appid;\n        private List<Integer> serverIds;\n\n        public long getAppid() {\n            return appid;\n        }\n\n        public void setAppid(long appid) {\n            this.appid = appid;\n        }\n\n        public long getUid() {\n            return uid;\n        }\n\n        public void setUid(long uid) {\n            this.uid = uid;\n        }\n\n        public String getUserName() {\n            return userName;\n        }\n\n        public void setUserName(String userName) {\n            this.userName = userName;\n        }\n\n        public int getUserType() {\n            return userType;\n        }\n\n        public void setUserType(int userType) {\n            this.userType = userType;\n        }\n\n        public int getAvatar() {\n            return avatar;\n        }\n\n        public void setAvatar(int avatar) {\n            this.avatar = avatar;\n        }\n\n        public String getUpdateTime() {\n            return updateTime;\n        }\n\n        public void setUpdateTime(String updateTime) {\n            this.updateTime = updateTime;\n        }\n\n        public String getNickName() {\n            return nickName;\n        }\n\n        public void setNickName(String nickName) {\n            this.nickName = nickName;\n        }\n\n        public int getModifyNickanme() {\n            return modifyNickanme;\n        }\n\n        public void setModifyNickanme(int modifyNickanme) {\n            this.modifyNickanme = modifyNickanme;\n        }\n\n        public List<Integer> getServerIds() {\n            return serverIds;\n        }\n\n        public void setServerIds(List<Integer> serverIds) {\n            this.serverIds = serverIds;\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue125.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\npublic class Issue125 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String content = \"{\\\"data\\\":\\\"sfasfasdfasdfas\\\\r\" + String.valueOf((char) 160) + \"\\\\rasdfasdfasd\\\"}\";\n        JSONObject jsonObject = JSON.parseObject(content);\n        System.out.println(jsonObject);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue126.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSONObject;\n\npublic class Issue126 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        JSONObject j = new JSONObject();\n        j.put(\"content\",\n              \"爸爸去哪儿-第十期-萌娃比赛小猪快跑 爸爸上演\\\"百变大咖秀\\\"-【湖南卫视官方版1080P】20131213: http://youtu.be/ajvaXKAduJ4  via @youtube\");\n        System.out.println(j.toJSONString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue127.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class Issue127 extends TestCase {\n\n    public void test_for_issue_127() throws Exception {\n        String text = \"{_BillId:\\\"X20140106S0110\\\",_Status:1,_PayStatus:0,_RunEmpId:undefined}\";\n        JSON.parseObject(text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue1296.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 02/07/2017.\n */\npublic class Issue1296 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"1\");\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue141.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.util.TypeUtils;\n\n\npublic class Issue141 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Assert.assertFalse(TypeUtils.castToBoolean(\"0\").booleanValue());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue143.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.io.StringReader;\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONReader;\n\npublic class Issue143 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String text = \"{\\\"rec\\\":[{},{}]}\";\n        \n        JsonStroe store = new JsonStroe();\n        \n        JSONReader reader = new JSONReader(new StringReader(text));\n        reader.startObject();\n        \n        String key = reader.readString();\n        \n        Assert.assertEquals(\"rec\", key);\n        reader.startArray();\n        \n        List<KeyValue> list = new ArrayList<KeyValue>();\n        while(reader.hasNext()) {\n            KeyValue keyValue = reader.readObject(KeyValue.class);\n            list.add(keyValue);\n        }\n        store.setRec(list);\n        \n        reader.endArray();\n        \n        reader.endObject();\n        \n        reader.close();\n    }\n\n    public static class JsonStroe {\n\n        private List rec = new ArrayList();\n\n        public void setRec(List items) {\n            this.rec = items;\n        }\n\n        public List getRec() {\n            return rec;\n        }\n    }\n\n    public static class KeyValue {\n\n        private String key;\n        private String value;\n\n        public String getKey() {\n            return key;\n        }\n\n        public void setKey(String key) {\n            this.key = key;\n        }\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue146.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Issue146 extends TestCase {\n    protected void setUp() throws Exception {\n        com.alibaba.fastjson.parser.ParserConfig.global.addAccept(\"com.alibaba.json.bvt.bug.Issue146.\");\n    }\n\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        JSON json = JSON.parseObject(\"{}\");\n        vo.setName(json);\n        String s = JSON.toJSONString(vo, SerializerFeature.WriteClassName);\n        System.out.println(s);\n        JSON.parseObject(s);\n    }\n\n    public static class VO {\n\n        private int    id;\n        private Object name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public Object getName() {\n            return name;\n        }\n\n        public void setName(Object name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue153.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashMap;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\n\npublic class Issue153 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String text = \"[{\\\"url_short\\\":\\\"http://t.cn/8soWK4z\\\",\\\"url_long\\\":\\\"http://wenshao.com\\\",\\\"type\\\":0}]\";\n        \n        JSON.parseObject(text, new TypeReference<HashMap<String, Object>[]>(){});\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue157.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSONObject;\n\n\npublic class Issue157 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String m = \"2、95开头靓号，呼出显号，对方可以打回，即使不在线亦可设置呼转手机，不错过任何重要电话，不暴露真实身份。\\r\\n3、应用内完全免费发送文字消息、语音对讲。\\r\\n4、建议WIFI 或 3G 环境下使用以获得最佳通话体验\";\n        JSONObject json = new JSONObject();\n        json.put(\"介绍\", m);\n        String content = json.toJSONString();\n        System.out.println(content);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue166.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Issue166 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        vo.setbId(\"xxxx\");\n\n        String text = JSON.toJSONString(vo, SerializerFeature.WriteDateUseDateFormat, SerializerFeature.WriteEnumUsingToString,\n                          SerializerFeature.WriteNonStringKeyAsString, SerializerFeature.QuoteFieldNames,\n                          SerializerFeature.SkipTransientField, SerializerFeature.SortField,\n                          SerializerFeature.PrettyFormat);\n        System.out.println(text);\n        \n        VO vo2 = JSON.parseObject(text, VO.class);\n        \n        Assert.assertEquals(vo.getbId(), vo2.getbId());\n    }\n\n    public static class VO {\n\n        private String bId;\n\n        public String getbId() {\n            return bId;\n        }\n\n        public void setbId(String bId) {\n            this.bId = bId;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue169.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.io.StringReader;\nimport java.io.StringWriter;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.JSONWriter;\n\npublic class Issue169 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        StringWriter strWriter = new StringWriter();\n        \n        SectionRequest req = new SectionRequest();\n        req.setScreenHeight(100);// 父类中的属性\n        req.setScreenWidth(12);// 父类中的属性\n        req.setTag(\"11\");\n        JSONWriter writer = new JSONWriter(strWriter);\n        writer.startArray();\n        writer.writeObject(req);\n        writer.endArray();\n        writer.close();\n        \n        String text = strWriter.toString();\n        \n        StringReader strReader = new StringReader(text);\n        JSONReader reader = new JSONReader(strReader);\n        reader.startArray();\n        ;\n        while (reader.hasNext()) {\n            SectionRequest vo = reader.readObject(SectionRequest.class);\n            System.out.println(\"tag:\" + vo.getTag() + \"screenHeight:\" + vo.getScreenHeight() + \"ScreenWidth:\"\n                               + vo.getScreenWidth());\n            Assert.assertEquals(100, vo.getScreenHeight());\n            Assert.assertEquals(12, vo.getScreenWidth());\n            Assert.assertEquals(\"11\", vo.getTag());\n\n        }\n        reader.endArray();\n        reader.close();\n    }\n\n    public static class SectionRequest {\n\n        private String tag;\n        private int    screenHeight;\n        private int    screenWidth;\n\n        public String getTag() {\n            return tag;\n        }\n\n        public void setTag(String tag) {\n            this.tag = tag;\n        }\n\n        public int getScreenHeight() {\n            return screenHeight;\n        }\n\n        public void setScreenHeight(int screenHeight) {\n            this.screenHeight = screenHeight;\n        }\n\n        public int getScreenWidth() {\n            return screenWidth;\n        }\n\n        public void setScreenWidth(int screenWidth) {\n            this.screenWidth = screenWidth;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue171.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Issue171 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        Map m = new HashMap();\n        m.put(\"a\", \"\\u000B\");\n        String json = JSON.toJSONString(m);\n        System.out.println(json);\n        JSON.parse(json);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue176.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic class Issue176 extends TestCase {\n\n    public void test_for_parent() throws Exception {\n        String text = \"{\\\"content\\\":\\\"result\\\"}\";\n        \n        ParentClass parentClass = JSON.parseObject(text, ParentClass.class);\n\n        Assert.assertEquals(parentClass.getTest(), \"result\");\n        \n        String text2 = JSON.toJSONString(parentClass);\n        Assert.assertEquals(text, text2);\n    }\n    \n    public void test_for_sub() throws Exception {\n        String text = \"{\\\"content\\\":\\\"result\\\"}\";\n        \n        SubClass  parentClass = JSON.parseObject(text, SubClass.class);\n        \n        Assert.assertEquals(parentClass.getTest(), \"result\");\n        String text2 = JSON.toJSONString(parentClass);\n        Assert.assertEquals(text, text2);\n    }\n\n    public static class ParentClass {\n\n        @JSONField(name = \"content\")\n        protected String test;\n\n        public String getTest() {\n            return test;\n        }\n\n        public void setTest(String test) {\n            this.test = test;\n        }\n\n    }\n\n    public static class SubClass extends ParentClass {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue177.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\npublic class Issue177 extends TestCase {\n\n    public void test_for_issue_177() throws Exception {\n        JSONObject jsonObject = new JSONObject();\n        jsonObject.put(\"data\", new byte[20]);\n\n        String jsonString = JSON.toJSONString(jsonObject);\n        JSONObject parseObject = JSON.parseObject(jsonString);\n\n        byte[] bytes = parseObject.getBytes(\"data\");\n\n        byte[] bs = parseObject.getObject(\"data\", byte[].class);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue179.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\npublic class Issue179 extends TestCase {\n\n    public void test_for_issue_179() throws Exception {\n        Student student = new Student();\n        School school = new School();\n        school.setStudent(student);\n        student.setSchool(school);\n\n        // String schoolJSONString = JSON.toJSONString(school);\n        // System.out.println(schoolJSONString);\n        //\n        // School fromJSONSchool = JSON.parseObject(schoolJSONString,\n        // School.class);\n        //\n        // System.out.println(JSON.toJSONString(fromJSONSchool));\n\n        JSONObject object = new JSONObject();\n        object.put(\"school\", school);\n\n        String jsonString = JSON.toJSONString(object);\n        System.out.println(jsonString);\n\n        JSONObject object2 = (JSONObject) JSON.parseObject(jsonString, JSONObject.class);\n        System.out.println(JSON.toJSONString(object2));\n\n        School school2 = object2.getObject(\"school\", School.class);\n        System.out.println(school2);\n    }\n\n    public static class School {\n\n        Student student;\n\n        public Student getStudent() {\n            return student;\n        }\n\n        public void setStudent(Student student) {\n            this.student = student;\n        }\n    }\n\n    static class Student {\n\n        public School getSchool() {\n            return school;\n        }\n\n        public void setSchool(School school) {\n            this.school = school;\n        }\n\n        School school;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue183.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic class Issue183 extends TestCase {\n\n    public void test_issue_183() throws Exception {\n        A a = new A();\n        a.setName(\"xiao\").setAge(21);\n        String result = JSON.toJSONString(a);\n        A newA = JSON.parseObject(result, A.class);\n        Assert.assertTrue(a.equals(newA));\n    }\n\n    static interface IA {\n\n        @JSONField(name = \"wener\")\n        String getName();\n        \n         @JSONField(name = \"wener\")\n         IA setName(String name);\n    }\n\n    static class A implements IA {\n\n        String name;\n        int    age;\n\n        public String getName() {\n            return name;\n        }\n\n        public int getAge() {\n            return age;\n        }\n\n        public A setAge(int age) {\n            this.age = age;\n            return this;\n        }\n\n        public A setName(String name) {\n            this.name = name;\n            return this;\n        }\n\n        @Override\n        public boolean equals(Object obj) {\n            if (this == obj) return true;\n            if (obj == null) return false;\n            if (getClass() != obj.getClass()) return false;\n            A other = (A) obj;\n            if (age != other.age) return false;\n            if (name == null) {\n                if (other.name != null) return false;\n            } else if (!name.equals(other.name)) return false;\n            return true;\n        }\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue184.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.Date;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SimplePropertyPreFilter;\n\npublic class Issue184 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        SimplePropertyPreFilter filter = new SimplePropertyPreFilter();\n        \n        VO vo = new VO();\n        vo.setDate(new Date());\n        String text = JSON.toJSONString(vo, filter);\n        System.out.println(text);\n    }\n\n    private static class VO {\n\n        private Date date;\n\n        public Date getDate() {\n            return date;\n        }\n\n        public void setDate(Date date) {\n            this.date = date;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue190.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Issue190 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        Assert.assertEquals(WebSoscketCommand.A, JSON.parseObject(\"\\\"A\\\"\", WebSoscketCommand.class));\n    }\n    \n    public static enum WebSoscketCommand {\n        A, B, C\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue199.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Issue199 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        ConsumeStatus vo = new ConsumeStatus();\n        vo.pullRT = 101.01D;\n        vo.pullTPS = 102.01D;\n        vo.consumeRT = 103.01D;\n        vo.consumeOKTPS = 104.01D;\n        vo.consumeFailedTPS = 105.01D;\n\n        String text = JSON.toJSONString(vo);\n        ConsumeStatus vo1 = JSON.parseObject(text, ConsumeStatus.class);\n        Assert.assertTrue(vo.pullRT == vo1.pullRT);\n        Assert.assertTrue(vo.pullTPS == vo1.pullTPS);\n        Assert.assertTrue(vo.consumeRT == vo1.consumeRT);\n        Assert.assertTrue(vo.consumeOKTPS == vo1.consumeOKTPS);\n        Assert.assertTrue(vo.consumeFailedTPS == vo1.consumeFailedTPS);\n    }\n\n    public static class ConsumeStatus {\n\n        private double pullRT;\n        private double pullTPS;\n        private double consumeRT;\n        private double consumeOKTPS;\n        private double consumeFailedTPS;\n\n        public double getPullRT() {\n            return pullRT;\n        }\n\n        public void setPullRT(double pullRT) {\n            this.pullRT = pullRT;\n        }\n\n        public double getPullTPS() {\n            return pullTPS;\n        }\n\n        public void setPullTPS(double pullTPS) {\n            this.pullTPS = pullTPS;\n        }\n\n        public double getConsumeRT() {\n            return consumeRT;\n        }\n\n        public void setConsumeRT(double consumeRT) {\n            this.consumeRT = consumeRT;\n        }\n\n        public double getConsumeOKTPS() {\n            return consumeOKTPS;\n        }\n\n        public void setConsumeOKTPS(double consumeOKTPS) {\n            this.consumeOKTPS = consumeOKTPS;\n        }\n\n        public double getConsumeFailedTPS() {\n            return consumeFailedTPS;\n        }\n\n        public void setConsumeFailedTPS(double consumeFailedTPS) {\n            this.consumeFailedTPS = consumeFailedTPS;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue204.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializeFilter;\n\npublic class Issue204 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        \n        SerializeFilter filter = null;\n        JSON.toJSONString(vo, SerializeConfig.getGlobalInstance(), filter);\n        JSON.toJSONString(vo, SerializeConfig.getGlobalInstance(), new SerializeFilter[0]);\n    }\n\n    public static class VO {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue208.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Issue208 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n            VO vo = new VO ();\n            vo.序号 = 1001;\n            vo.名称 = \"张三\";\n            \n            String text = JSON.toJSONString(vo);\n            JSON.parseObject(text, VO.class);\n            \n    }\n    \n    public void test_for_issue_1() throws Exception {\n        实体 vo = new 实体 ();\n        vo.序号 = 1001;\n        vo.名称 = \"张三\";\n        \n        String text = JSON.toJSONString(vo);\n        JSON.parseObject(text, 实体.class);\n}\n\n    public static class VO {\n\n        public int    序号;\n        public String 名称;\n    }\n    \n    public static class 实体  {\n\n        public int    序号;\n        public String 名称;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue215.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Random;\n\nimport org.junit.Assert;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\n\npublic class Issue215 extends TestCase {\n    public void test_for_issue() throws Exception {\n        byte[] bytes = new byte[128];\n        new Random().nextBytes(bytes);\n        \n        Map<String, byte[]> map = new HashMap<String, byte[]>();\n        map.put(\"val\", bytes);\n        \n        String text = JSON.toJSONString(map);\n        System.out.println(text);\n        \n        Map<String, byte[]> map2 = JSON.parseObject(text, new TypeReference<HashMap<String, byte[]>>() {});\n        byte[] bytes2 = (byte[]) map2.get(\"val\");\n        Assert.assertArrayEquals(bytes2, bytes);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue215_boolean_array.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.Arrays;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Random;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\n\npublic class Issue215_boolean_array extends TestCase {\n    public void test_for_issue() throws Exception {\n        boolean[] values = new boolean[128];\n        Random random = new Random();\n        for (int i = 0; i < values.length; ++i) {\n            values[i] = random.nextInt() % 2 == 0;\n        }\n        \n        Map<String, boolean[]> map = new HashMap<String, boolean[]>();\n        map.put(\"val\", values);\n        \n        String text = JSON.toJSONString(map);\n        System.out.println(text);\n        \n        Map<String, boolean[]> map2 = JSON.parseObject(text, new TypeReference<HashMap<String, boolean[]>>() {});\n        boolean[] values2 = (boolean[]) map2.get(\"val\");\n        Assert.assertTrue(Arrays.equals(values2, values));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue215_char_array.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Random;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\n\npublic class Issue215_char_array extends TestCase {\n    public void test_for_issue() throws Exception {\n        char[] chars = new char[128];\n        Random random = new Random();\n        for (int i = 0; i < chars.length; ++i) {\n            chars[i] = (char) Math.abs((short) random.nextInt());\n        }\n        \n        Map<String, char[]> map = new HashMap<String, char[]>();\n        map.put(\"val\", chars);\n        \n        String text = JSON.toJSONString(map);\n        System.out.println(text);\n        \n        Map<String, char[]> map2 = JSON.parseObject(text, new TypeReference<HashMap<String, char[]>>() {});\n        char[] chars2 = (char[]) map2.get(\"val\");\n        Assert.assertArrayEquals(chars2, chars);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue215_double_array.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.Arrays;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Random;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\n\npublic class Issue215_double_array extends TestCase {\n    public void test_for_issue() throws Exception {\n        double[] values = new double[128];\n        Random random = new Random();\n        for (int i = 0; i < values.length; ++i) {\n            values[i] = random.nextDouble();\n        }\n        \n        Map<String, double[]> map = new HashMap<String, double[]>();\n        map.put(\"val\", values);\n        \n        String text = JSON.toJSONString(map);\n        System.out.println(text);\n        \n        Map<String, double[]> map2 = JSON.parseObject(text, new TypeReference<HashMap<String, double[]>>() {});\n        double[] values2 = (double[]) map2.get(\"val\");\n        Assert.assertTrue(Arrays.equals(values2, values));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue215_float_array.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.Arrays;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Random;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\n\npublic class Issue215_float_array extends TestCase {\n    public void test_for_issue() throws Exception {\n        float[] values = new float[128];\n        Random random = new Random();\n        for (int i = 0; i < values.length; ++i) {\n            values[i] = random.nextFloat();\n        }\n        \n        Map<String, float[]> map = new HashMap<String, float[]>();\n        map.put(\"val\", values);\n        \n        String text = JSON.toJSONString(map);\n        System.out.println(text);\n        \n        Map<String, float[]> map2 = JSON.parseObject(text, new TypeReference<HashMap<String, float[]>>() {});\n        float[] values2 = (float[]) map2.get(\"val\");\n        Assert.assertTrue(Arrays.equals(values2, values));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue215_int_array.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Random;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\n\npublic class Issue215_int_array extends TestCase {\n    public void test_for_issue() throws Exception {\n        int[] values = new int[128];\n        Random random = new Random();\n        for (int i = 0; i < values.length; ++i) {\n            values[i] = random.nextInt();\n        }\n        \n        Map<String, int[]> map = new HashMap<String, int[]>();\n        map.put(\"val\", values);\n        \n        String text = JSON.toJSONString(map);\n        System.out.println(text);\n        \n        Map<String, int[]> map2 = JSON.parseObject(text, new TypeReference<HashMap<String, int[]>>() {});\n        int[] values2 = (int[]) map2.get(\"val\");\n        Assert.assertArrayEquals(values2, values);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue215_long_array.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Random;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\n\npublic class Issue215_long_array extends TestCase {\n    public void test_for_issue() throws Exception {\n        long[] values = new long[128];\n        Random random = new Random();\n        for (int i = 0; i < values.length; ++i) {\n            values[i] = random.nextLong();\n        }\n        \n        Map<String, long[]> map = new HashMap<String, long[]>();\n        map.put(\"val\", values);\n        \n        String text = JSON.toJSONString(map);\n        System.out.println(text);\n        \n        Map<String, long[]> map2 = JSON.parseObject(text, new TypeReference<HashMap<String, long[]>>() {});\n        long[] values2 = (long[]) map2.get(\"val\");\n        Assert.assertArrayEquals(values2, values);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue215_short_array.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Random;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\n\npublic class Issue215_short_array extends TestCase {\n    public void test_for_issue() throws Exception {\n        short[] values = new short[128];\n        Random random = new Random();\n        for (int i = 0; i < values.length; ++i) {\n            values[i] = (short) random.nextInt();\n        }\n        \n        Map<String, short[]> map = new HashMap<String, short[]>();\n        map.put(\"val\", values);\n        \n        String text = JSON.toJSONString(map);\n        System.out.println(text);\n        \n        Map<String, short[]> map2 = JSON.parseObject(text, new TypeReference<HashMap<String, short[]>>() {});\n        short[] values2 = (short[]) map2.get(\"val\");\n        Assert.assertArrayEquals(values2, values);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue220.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Issue220 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        Attr attr = new Attr();\n        attr.jTType = 123;\n        attr.value = \"xxxx\";\n        attr.symbol = \"yyyy\";\n        \n        String text = JSON.toJSONString(attr);\n        \n        Assert.assertEquals(\"{\\\"jTType\\\":123,\\\"symbol\\\":\\\"yyyy\\\",\\\"value\\\":\\\"xxxx\\\"}\", text);\n    }\n\n    public static class Attr {\n\n        private int    jTType;\n        private String value;\n        private String symbol;\n\n        public int getjTType() {\n            return jTType;\n        }\n\n        public void setjTType(int jTType) {\n            this.jTType = jTType;\n        }\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n\n        public String getSymbol() {\n            return symbol;\n        }\n\n        public void setSymbol(String symbol) {\n            this.symbol = symbol;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue243.java",
    "content": "package com.alibaba.json.bvt.bug;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONObject;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class Issue243 extends TestCase {\r\n\r\n    public void testSerialize() {\r\n        RpcResponse response = new RpcResponse(2, new Object());\r\n        // String json = JSON.toJSONString(response, SerializerFeature.WriteClassName); // codeA with WriteClassName,\r\n        // requestId is not ending with 'L'\r\n        String json = response.toCommandJson(); // codeA with WriteClassName, requestId is ending with 'L', and trouble\r\n                                                // other json framework\r\n        System.out.println(json);\r\n        \r\n        String json2 = JSON.toJSONString(response, SerializerFeature.BeanToArray, SerializerFeature.WriteClassName, SerializerFeature.NotWriteRootClassName);\r\n        System.out.println(json2);\r\n    }\r\n\r\n    public static class RpcResponse {\r\n\r\n        private int        msgType     = 50;\r\n        private long       requestId   = 0;\r\n        private JSONObject details     = new JSONObject();\r\n        private Object[]   yieldResult = new Object[1];\r\n\r\n        public RpcResponse(){\r\n\r\n        }\r\n\r\n        public RpcResponse(long requestId, Object result){\r\n            this.requestId = requestId;\r\n            yieldResult[0] = result;\r\n        }\r\n\r\n        public int getMsgType() {\r\n            return msgType;\r\n        }\r\n\r\n        public void setMsgType(int msgType) {\r\n            this.msgType = msgType;\r\n        }\r\n\r\n        public long getRequestId() {\r\n            return requestId;\r\n        }\r\n\r\n        public void setRequestId(long requestId) {\r\n            this.requestId = requestId;\r\n        }\r\n\r\n        public JSONObject getDetails() {\r\n            return details;\r\n        }\r\n\r\n        public void setDetails(JSONObject details) {\r\n            this.details = details;\r\n        }\r\n\r\n        public Object[] getYieldResult() {\r\n            return yieldResult;\r\n        }\r\n\r\n        public void setYieldResult(String[] yieldResult) {\r\n            this.yieldResult = yieldResult;\r\n        }\r\n\r\n        protected Object[] fieldToArray() {\r\n            return new Object[] { msgType, requestId, details, yieldResult };\r\n        }\r\n\r\n        public String toCommandJson() {\r\n            return JSON.toJSONString(fieldToArray(), SerializerFeature.WriteClassName);\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue248_orderedField.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.Feature;\n\npublic class Issue248_orderedField extends TestCase {\n\n    public void test_0() throws Exception {\n        String text = \"{\\\"b\\\":\\\"b\\\",\\\"d\\\":\\\"d\\\",\\\"c\\\":\\\"c\\\",\\\"a\\\":\\\"a\\\"}\";\n        JSONObject object = JSON.parseObject(text, Feature.OrderedField);\n        System.out.println(object);\n\n        Assert.assertEquals(\"b\", object.keySet().toArray()[0]);\n        Assert.assertEquals(\"d\", object.keySet().toArray()[1]);\n        Assert.assertEquals(\"c\", object.keySet().toArray()[2]);\n        Assert.assertEquals(\"a\", object.keySet().toArray()[3]);\n    }\n\n    public void test_1() throws Exception {\n        String text = \"{\\\"a\\\":\\\"a\\\",\\\"b\\\":\\\"b\\\",\\\"c\\\":\\\"c\\\",\\\"d\\\":\\\"d\\\"}\";\n        System.out.println(JSON.parseObject(text));\n\n        JSONObject object = JSON.parseObject(text, Feature.OrderedField);\n        System.out.println(object);\n\n        Assert.assertEquals(\"a\", object.keySet().toArray()[0]);\n        Assert.assertEquals(\"b\", object.keySet().toArray()[1]);\n        Assert.assertEquals(\"c\", object.keySet().toArray()[2]);\n        Assert.assertEquals(\"d\", object.keySet().toArray()[3]);\n\n    }\n\n    public void test_2() throws Exception {\n        String text = \"{\\\"k1\\\":\\\"v1\\\",\\\"k3\\\":\\\"v3\\\",\\\"k2\\\":\\\"v2\\\",\\\"map\\\":{\\\"k1\\\":\\\"v1\\\",\\\"k3\\\":\\\"v3\\\",\\\"k2\\\":\\\"v2\\\",\\\"map\\\":{\\\"k1\\\":\\\"v1\\\",\\\"k3\\\":\\\"v3\\\",\\\"k2\\\":\\\"v2\\\"}}}\";\n        System.out.println(JSON.parseObject(text));\n\n        JSONObject object = JSON.parseObject(text, Feature.OrderedField);\n        System.out.println(object);\n\n        Assert.assertEquals(\"k1\", object.keySet().toArray()[0]);\n        Assert.assertEquals(\"k3\", object.keySet().toArray()[1]);\n        Assert.assertEquals(\"k2\", object.keySet().toArray()[2]);\n        Assert.assertEquals(\"map\", object.keySet().toArray()[3]);\n\n        Assert.assertEquals(\"k1\", object.getJSONObject(\"map\").keySet().toArray()[0]);\n        Assert.assertEquals(\"k3\", object.getJSONObject(\"map\").keySet().toArray()[1]);\n        Assert.assertEquals(\"k2\", object.getJSONObject(\"map\").keySet().toArray()[2]);\n        Assert.assertEquals(\"map\", object.getJSONObject(\"map\").keySet().toArray()[3]);\n\n        Assert.assertEquals(\"k1\", object.getJSONObject(\"map\").getJSONObject(\"map\").keySet().toArray()[0]);\n        Assert.assertEquals(\"k3\", object.getJSONObject(\"map\").getJSONObject(\"map\").keySet().toArray()[1]);\n        Assert.assertEquals(\"k2\", object.getJSONObject(\"map\").getJSONObject(\"map\").keySet().toArray()[2]);\n    }\n\n    public void test_3() throws Exception {\n        String text = \"{\\\"k1\\\":\\\"v1\\\",\\\"k3\\\":\\\"v3\\\",\\\"k2\\\":\\\"v2\\\",\\\"list\\\":[\\\"v1\\\",\\\"v3\\\",\\\"v2\\\",{\\\"map\\\":{\\\"k1\\\":\\\"v1\\\",\\\"k3\\\":\\\"v3\\\",\\\"k2\\\":\\\"v2\\\"}}]}\";\n        System.out.println(JSON.parseObject(text));\n\n        JSONObject object = JSON.parseObject(text, Feature.OrderedField);\n        System.out.println(object);\n\n        Assert.assertEquals(\"k1\", object.keySet().toArray()[0]);\n        Assert.assertEquals(\"k3\", object.keySet().toArray()[1]);\n        Assert.assertEquals(\"k2\", object.keySet().toArray()[2]);\n        Assert.assertEquals(\"list\", object.keySet().toArray()[3]);\n\n        Assert.assertEquals(\"k1\",\n                            object.getJSONArray(\"list\").getJSONObject(3).getJSONObject(\"map\").keySet().toArray()[0]);\n        Assert.assertEquals(\"k3\",\n                            object.getJSONArray(\"list\").getJSONObject(3).getJSONObject(\"map\").keySet().toArray()[1]);\n        Assert.assertEquals(\"k2\",\n                            object.getJSONArray(\"list\").getJSONObject(3).getJSONObject(\"map\").keySet().toArray()[2]);\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue274.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.io.Serializable;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Issue274 extends TestCase {\n\n    public void test() throws Exception {\n        Customer cus = new Customer();\n        cus.setId(1L);\n        cus.setName(\"name\");\n\n        Object json = JSON.toJSON(cus);\n        System.out.println(json);\n\n        String cusJson = json.toString();\n\n        cusJson = \"{\\\"name\\\":\\\"name\\\",\\\"id\\\":1}\";\n\n        Customer customer = JSON.parseObject(cusJson, Customer.class);\n\n        System.out.println(customer);\n    }\n\n    public interface Indexable<ID extends Serializable> {\n\n        public ID getId();\n\n        public void setId(ID id);\n    }\n\n    public static class Customer implements Indexable<Long> {\n\n        private Long   id;\n        private String name;\n\n        public Long getId() {\n            return id;\n        }\n\n        public void setId(Long id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        @Override\n        public String toString() {\n            return \"Customer [id=\" + id + \", name=\" + name + \"]\";\n        }\n\n        // remove this to then no longer throw exception\n        public Map<String, Object> toIndexMap() {\n\n            return null;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue363.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.springframework.remoting.support.RemoteInvocation;\n\nimport java.util.Date;\n\n/**\n * Created by wenshao on 02/07/2017.\n */\npublic class Issue363 extends TestCase {\n    public void test_for_issue() throws Exception {\n        RemoteInvocation remoteInvocation = new RemoteInvocation();\n        remoteInvocation.setMethodName(\"test\");\n        remoteInvocation.setParameterTypes(new Class[] { int.class, Date.class,\n                String.class });\n        remoteInvocation.setArguments(new Object[] { 1, new Date(),\n                \"this is a test\" });\n        String json = JSON.toJSONString(remoteInvocation);\n        remoteInvocation = JSON.parseObject(json, RemoteInvocation.class);\n        System.out.println(remoteInvocation);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue408.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\nimport java.io.InputStream;\nimport java.io.InputStreamReader;\nimport java.nio.charset.Charset;\n\npublic class Issue408 extends TestCase {\n\n    private InputStream inputStream;\n\n    @Override\n    public void setUp() throws Exception {\n        String resource = \"json/Issue408.json\";\n        inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource);\n\n        com.alibaba.fastjson.parser.ParserConfig.global.addAccept(\"com.alibaba.json.bvt.bug.Issue408.\");\n    }\n\n\n    @Override\n    public void tearDown() throws Exception {\n        inputStream.close();\n    }\n\n    public void test_for_issue() throws Exception {\n\n        JSONReader jsonReader = new JSONReader(new InputStreamReader(inputStream, Charset.forName(\"UTF-8\")));\n        jsonReader.config(Feature.AllowArbitraryCommas, true);\n        jsonReader.config(Feature.IgnoreNotMatch, true);\n        jsonReader.config(Feature.SortFeidFastMatch, false);\n        jsonReader.config(Feature.DisableCircularReferenceDetect, true);\n        jsonReader.config(Feature.AutoCloseSource, true);\n\n        VOList deserialized = null;\n        try {\n            deserialized = (VOList)jsonReader.readObject();\n        }finally {\n            jsonReader.close();\n        }\n\n        for (int i = 0; i < 17; i++) {\n            Assert.assertEquals(deserialized.getVolist()[i].getLongid0(), Long.valueOf(1234567890123L));\n            Assert.assertEquals(deserialized.getVolist()[i].getLongid1(), Long.valueOf(1234567890123L));\n            Assert.assertEquals(deserialized.getVolist()[i].getLongid2(), Long.valueOf(1234567890123L));\n            Assert.assertEquals(deserialized.getVolist()[i].getLongid3(), Long.valueOf(1234567890123L));\n            Assert.assertEquals(deserialized.getVolist()[i].getLongid4(), Long.valueOf(1234567890123L));\n            Assert.assertEquals(deserialized.getVolist()[i].getLongid5(), Long.valueOf(1234567890123L));\n            Assert.assertEquals(deserialized.getVolist()[i].getLongid6(), Long.valueOf(1234567890123L));\n            Assert.assertEquals(deserialized.getVolist()[i].getLongid7(), Long.valueOf(1234567890123L));\n            Assert.assertEquals(deserialized.getVolist()[i].getLongid8(), Long.valueOf(1234567890123L));\n            Assert.assertEquals(deserialized.getVolist()[i].getLongid9(), Long.valueOf(1234567890123L));\n            Assert.assertEquals(deserialized.getVolist()[i].getLongid10(), Long.valueOf(1234567890123L));\n            Assert.assertEquals(deserialized.getVolist()[i].getLongid11(), Long.valueOf(1234567890123L));\n            Assert.assertEquals(deserialized.getVolist()[i].getLongid12(), Long.valueOf(1234567890123L));\n            Assert.assertEquals(deserialized.getVolist()[i].getLongid13(), Long.valueOf(1234567890123L));\n            Assert.assertEquals(deserialized.getVolist()[i].getLongid14(), Long.valueOf(1234567890123L));\n            Assert.assertEquals(deserialized.getVolist()[i].getLongid15(), Long.valueOf(1234567890123L));\n            Assert.assertEquals(deserialized.getVolist()[i].getLongid16(), Long.valueOf(1234567890123L));\n            Assert.assertEquals(deserialized.getVolist()[i].getLongid17(), Long.valueOf(1234567890123L));\n            Assert.assertEquals(deserialized.getVolist()[i].getLongid18(), Long.valueOf(1234567890123L));\n            Assert.assertEquals(deserialized.getVolist()[i].getLongid19(), Long.valueOf(1234567890123L));\n        }\n    }\n\n    public static class VOList {\n        private VO[] volist;\n        private Long longid0;\n        private Long longid1;\n\n        public VO[] getVolist() {\n            return volist;\n        }\n\n        public void setVolist(VO[] volist) {\n            this.volist = volist;\n        }\n\n        public Long getLongid1() {\n            return longid1;\n        }\n\n        public void setLongid1(Long longid1) {\n            this.longid1 = longid1;\n        }\n\n        public Long getLongid0() {\n            return longid0;\n        }\n\n        public void setLongid0(Long longid0) {\n            this.longid0 = longid0;\n        }\n    }\n\n    public static class VO {\n        private Long longid0;\n        private Long longid1;\n        private Long longid2;\n        private Long longid3;\n        private Long longid4;\n        private Long longid5;\n        private Long longid6;\n        private Long longid7;\n        private Long longid8;\n        private Long longid9;\n        private Long longid10;\n        private Long longid11;\n        private Long longid12;\n        private Long longid13;\n        private Long longid14;\n        private Long longid15;\n        private Long longid16;\n        private Long longid17;\n        private Long longid18;\n        private Long longid19;\n\n        public Long getLongid0() {\n            return longid0;\n        }\n\n        public void setLongid0(Long longid0) {\n            this.longid0 = longid0;\n        }\n\n        public Long getLongid1() {\n            return longid1;\n        }\n\n        public void setLongid1(Long longid1) {\n            this.longid1 = longid1;\n        }\n\n        public Long getLongid2() {\n            return longid2;\n        }\n\n        public void setLongid2(Long longid2) {\n            this.longid2 = longid2;\n        }\n\n        public Long getLongid3() {\n            return longid3;\n        }\n\n        public void setLongid3(Long longid3) {\n            this.longid3 = longid3;\n        }\n\n        public Long getLongid4() {\n            return longid4;\n        }\n\n        public void setLongid4(Long longid4) {\n            this.longid4 = longid4;\n        }\n\n        public Long getLongid5() {\n            return longid5;\n        }\n\n        public void setLongid5(Long longid5) {\n            this.longid5 = longid5;\n        }\n\n        public Long getLongid6() {\n            return longid6;\n        }\n\n        public void setLongid6(Long longid6) {\n            this.longid6 = longid6;\n        }\n\n        public Long getLongid7() {\n            return longid7;\n        }\n\n        public void setLongid7(Long longid7) {\n            this.longid7 = longid7;\n        }\n\n        public Long getLongid8() {\n            return longid8;\n        }\n\n        public void setLongid8(Long longid8) {\n            this.longid8 = longid8;\n        }\n\n        public Long getLongid9() {\n            return longid9;\n        }\n\n        public void setLongid9(Long longid9) {\n            this.longid9 = longid9;\n        }\n\n        public Long getLongid10() {\n            return longid10;\n        }\n\n        public void setLongid10(Long longid10) {\n            this.longid10 = longid10;\n        }\n\n        public Long getLongid11() {\n            return longid11;\n        }\n\n        public void setLongid11(Long longid11) {\n            this.longid11 = longid11;\n        }\n\n        public Long getLongid12() {\n            return longid12;\n        }\n\n        public void setLongid12(Long longid12) {\n            this.longid12 = longid12;\n        }\n\n        public Long getLongid13() {\n            return longid13;\n        }\n\n        public void setLongid13(Long longid13) {\n            this.longid13 = longid13;\n        }\n\n        public Long getLongid14() {\n            return longid14;\n        }\n\n        public void setLongid14(Long longid14) {\n            this.longid14 = longid14;\n        }\n\n        public Long getLongid15() {\n            return longid15;\n        }\n\n        public void setLongid15(Long longid15) {\n            this.longid15 = longid15;\n        }\n\n        public Long getLongid16() {\n            return longid16;\n        }\n\n        public void setLongid16(Long longid16) {\n            this.longid16 = longid16;\n        }\n\n        public Long getLongid17() {\n            return longid17;\n        }\n\n        public void setLongid17(Long longid17) {\n            this.longid17 = longid17;\n        }\n\n        public Long getLongid18() {\n            return longid18;\n        }\n\n        public void setLongid18(Long longid18) {\n            this.longid18 = longid18;\n        }\n\n        public Long getLongid19() {\n            return longid19;\n        }\n\n        public void setLongid19(Long longid19) {\n            this.longid19 = longid19;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue569.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\n\nimport java.io.Serializable;\nimport java.lang.reflect.Type;\nimport java.util.Map;\n\n/**\n * Created by wenshao on 02/07/2017.\n */\npublic class Issue569 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String jsonString = \"{\\\"backingMap\\\":{\\\"a\\\":{\\\"b\\\":{}}}}\";\n        Type type = new TypeReference<MyTable<String, String, MyValue>>() {}.getType();\n        MyTable<String, String, MyValue> table = JSON.parseObject(jsonString, type);\n\n        Map<String, MyValue> valueMap = table.backingMap.get(\"a\");\n        assertNotNull(valueMap);\n\n        MyValue value = valueMap.get(\"b\");\n        assertNotNull(value);\n    }\n\n    public static class MyTable<R, C, V> implements Serializable {\n        private Map<R, Map<C, V>> backingMap;\n\n        public Map<R, Map<C, V>> getBackingMap() {\n            return backingMap;\n        }\n\n        public void setBackingMap(Map<R, Map<C, V>> backingMap) {\n            this.backingMap = backingMap;\n        }\n    }\n\n    public static class MyValue {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue569_1.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\n\npublic class Issue569_1 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"{\\\"result\\\":{}}\";\n        InterfaceResult<Value> result = JSON.parseObject(json, new TypeReference<InterfaceResult<Value>>() {});\n        assertNotNull(result.getResult());\n        assertEquals(Value.class, result.getResult().getClass());\n    }\n\n    public static class BaseInterfaceResult {\n\n    }\n\n    public static class InterfaceResult<T> extends BaseInterfaceResult\n    {\n        public T getResult() {\n            return result;\n        }\n\n        public void setResult(T result) {\n            this.result = result;\n        }\n\n        private T result;\n    }\n\n    public static class Value {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue585.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.nio.charset.Charset;\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\n\nimport junit.framework.TestCase;\n\npublic class Issue585 extends TestCase {\n    private String original = JSON.DEFAULT_TYPE_KEY;\n    private ParserConfig originalConfig = ParserConfig.global;\n\n    protected void setUp() throws Exception {\n        ParserConfig.global = new ParserConfig();\n        if (!JSON.DEFAULT_TYPE_KEY.equals(\"mySpace\")) {\n            JSON.setDefaultTypeKey(\"mySpace\");\n        }\n\n        com.alibaba.fastjson.parser.ParserConfig.global.addAccept(\"com.alibaba.json.bvt.bug.Issue585.\");\n    }\n\n    protected void tearDown() throws Exception {\n        JSON.setDefaultTypeKey(original);\n        ParserConfig.global = originalConfig;\n    }\n\n    public void test_for_issue() throws Exception {\n\n        String cc = \"{\\\"mySpace\\\":\\\"com.alibaba.json.bvt.bug.Issue585$Result\\\",\\\"attachments\\\":{\\\"mySpace\\\":\\\"java.util.HashMap\\\",\\\"timeout\\\":5000,\\\"consumeApp\\\":\\\"multiGroupTestServer\\\"},\\\"status\\\":0}\";\n\n        byte[] bytes = cc.getBytes(\"utf-8\");\n\n        Result res = (Result) this.deserialize(bytes);\n        Assert.assertEquals(0, res.getStatus());\n    }\n\n    public <T> T deserialize(byte[] in) {\n        Charset CHARSET = Charset.forName(\"utf-8\");\n        return (T) JSON.parse(in, 0, in.length, CHARSET.newDecoder(), Feature.AllowArbitraryCommas,\n                              Feature.IgnoreNotMatch, Feature.SortFeidFastMatch, Feature.DisableCircularReferenceDetect,\n                              Feature.AutoCloseSource);\n    }\n\n    public static class Result {\n\n        private int                 status;\n        private Object              value;\n        private Map<String, Object> attachments = new HashMap<String, Object>(2);\n\n        public int getStatus() {\n            return status;\n        }\n\n        public void setStatus(int status) {\n            this.status = status;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public void setValue(Object value) {\n            this.value = value;\n        }\n\n        public Map<String, Object> getAttachments() {\n            return attachments;\n        }\n\n        public void setAttachments(Map<String, Object> attachments) {\n            this.attachments = attachments;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue62.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Issue62 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        A a = new A();\n        a.setA(\"aaaaaaaaaa\".getBytes());\n        a.setB(1);\n        a.setC(\"aaaa\");\n        String jsonData = JSON.toJSONString(a, SerializerFeature.UseSingleQuotes);\n        Assert.assertEquals(\"{'a':'YWFhYWFhYWFhYQ==','b':1,'c':'aaaa'}\", jsonData);\n        JSON.parse(jsonData);\n    }\n\n    static class A {\n\n        private byte[] a;\n        private int    b;\n        private String c;\n\n        public byte[] getA() {\n            return a;\n        }\n\n        public void setA(byte[] a) {\n            this.a = a;\n        }\n\n        public int getB() {\n            return b;\n        }\n\n        public void setB(int b) {\n            this.b = b;\n        }\n\n        public String getC() {\n            return c;\n        }\n\n        public void setC(String c) {\n            this.c = c;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue64.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\n\npublic class Issue64 extends TestCase {\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        vo.foo = \"xxxxxx\";\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.BeanToArray);\n        \n        Assert.assertEquals(\"[\\\"xxxxxx\\\"]\", text);\n        \n        VO vo2 = JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(vo2.foo, vo.foo);\n    }\n    \n    public static class VO {\n        public String foo = \"bar\";\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue688.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * Created by wenshao on 2016/11/13.\n */\npublic class Issue688 extends TestCase {\n    public void test_for_issue() throws Exception {\n        User monther = new User(\"HanMeiMei\", 29L);\n        User child = new User(\"liLei\", 2L);\n        User grandma = new User(\"zhangHua\", 60L);\n\n        Map<User, User> userMap = new HashMap<User, User>();\n        userMap.put(child, monther);\n        userMap.put(monther, grandma);\n\n        String json = JSON.toJSONString(userMap);\n        System.out.println(json);\n    }\n\n    public static class User {\n        public String name;\n        public long id;\n\n        public User() {\n\n        }\n\n        public User(String name, long id) {\n            this.name = name;\n            this.id = id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue689.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.Collections;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class Issue689 extends TestCase {\n    public void test_0() throws Exception {\n        Map<String, ?> map = Collections.singletonMap(\"value\", \"A B\");\n        String json = JSON.toJSONString(map);\n        Assert.assertEquals(\"{\\\"value\\\":\\\"A B\\\"}\", json);\n        \n        JSONObject obj = JSON.parseObject(json);\n        Assert.assertEquals(obj.get(\"value\"), map.get(\"value\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue69.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Issue69 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        vo.a = new Entry();\n        vo.b = vo.a;\n        \n        String text = JSON.toJSONString(vo);\n        System.out.println(text);\n    }\n\n    @JSONType(serialzeFeatures={SerializerFeature.DisableCircularReferenceDetect})\n    public static class VO {\n\n        private Entry a;\n\n        private Entry b;\n\n        public Entry getA() {\n            return a;\n        }\n\n        public void setA(Entry a) {\n            this.a = a;\n        }\n\n        public Entry getB() {\n            return b;\n        }\n\n        public void setB(Entry b) {\n            this.b = b;\n        }\n\n    }\n\n    public static class Entry {\n        private int id;\n\n        \n        public int getId() {\n            return id;\n        }\n\n        \n        public void setId(int id) {\n            this.id = id;\n        }\n        \n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue72.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.io.InputStream;\nimport java.io.InputStreamReader;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.util.IOUtils;\n\npublic class Issue72 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        InputStream is = Issue72.class.getClassLoader().getResourceAsStream(\"issue72.json\");\n        JSONReader reader = null;\n        try {\n            byte[] rowBatchBytes = null;\n            byte[] fileBatchBytes = null;\n            reader = new JSONReader(new InputStreamReader(is));\n            reader.startArray();\n            while (reader.hasNext()) {\n                if (rowBatchBytes == null) {\n                    rowBatchBytes = reader.readObject(byte[].class);\n                } else if (fileBatchBytes == null) {\n                    fileBatchBytes = reader.readObject(byte[].class);\n                } else {\n                    throw new Exception(\"archive data json parse failed!\");\n                }\n\n            }\n            reader.endArray();\n        } finally {\n            IOUtils.close(reader);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue74.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.io.InputStream;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\n\n\npublic class Issue74 extends TestCase {\n    public void test_for_issue() throws Exception {\n        InputStream is = Issue72.class.getClassLoader().getResourceAsStream(\"issue74.json\");\n        String text = org.apache.commons.io.IOUtils.toString(is);\n        is.close();\n        \n        JSONArray json = (JSONArray) JSON.parse(text);\n        \n        Assert.assertNotNull(json.getJSONObject(0).getJSONObject(\"dataType\").getJSONObject(\"categoryType\").getJSONArray(\"dataTypes\").get(0));\n        Assert.assertSame(json.getJSONObject(0).getJSONObject(\"dataType\"), json.getJSONObject(0).getJSONObject(\"dataType\").getJSONObject(\"categoryType\").getJSONArray(\"dataTypes\").get(0));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue743.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class Issue743 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String temp = \"{\\\"option_1\\\": \\\"\\\\u4e0d\\\\u5403\\\\u6216\\\\u5c11\\\\u4e8e1\\\\u6b21\\\"}\";\n        JSONObject object = JSON.parseObject(temp);\n        Assert.assertEquals(\"{\\\"option_1\\\":\\\"不吃或少于1次\\\"}\", JSON.toJSONString(object));\n        Assert.assertEquals(\"{\\\"option_1\\\":\\\"\\\\u4E0D\\\\u5403\\\\u6216\\\\u5C11\\\\u4E8E1\\\\u6B21\\\"}\", JSON.toJSONString(object, SerializerFeature.BrowserCompatible));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue744.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.io.StringReader;\nimport java.util.Date;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\n\npublic class Issue744 extends TestCase {\n\n    public static class Model {\n        @JSONField(format=\"yyyy-MM-dd'T'HH:mm:ss\")\n        public Date date;\n    }\n    \n    public void test() {\n        String text = \"{\\\"date\\\":\\\"9999-09-08T00:00:00\\\"}\";\n        Model model =JSON.parseObject(text, Model.class);\n\n        String text2 = JSON.toJSONString(model);\n        System.out.println(text2);\n    }\n\n    public void test_reader() {\n        String text = \"{\\\"date\\\":\\\"9999-09-08T00:00:00\\\"}\";\n\n        Model model = new JSONReader(new StringReader(text)).readObject(Model.class);\n\n        String text2 = JSON.toJSONString(model);\n        System.out.println(text2);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue744_1.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 2016/11/13.\n */\npublic class Issue744_1 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        C c = new C();\n        c.setName(\"name\");\n\n        String json = JSON.toJSONString(c);\n        assertEquals(\"{}\", json);\n    }\n\n    public static abstract class B {\n        @JSONField(serialize = false, deserialize = false)\n        public abstract String getName();\n\n    }\n\n    public static class C extends B {\n        private String name;\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue763.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SimplePropertyPreFilter;\n\nimport junit.framework.TestCase;\n\npublic class Issue763 extends TestCase {\n\n    public void test_0() throws Exception {\n        Map<String, Object> reqDto = new HashMap<String, Object>();\n        reqDto.put(\"name\", \"aaaa\");\n        reqDto.put(\"age\", 50);\n        reqDto.put(\"address\", \"深圳南山\");\n\n        SimplePropertyPreFilter filter = new SimplePropertyPreFilter();\n        filter.getExcludes().add(\"name\");\n\n        // SerializeConfig.getGlobalInstance().addFilter(Map.class, filter);\n        SerializeConfig config = new SerializeConfig();\n        config.addFilter(HashMap.class, filter);\n        System.out.println(JSON.toJSONString(reqDto, config));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue771.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class Issue771 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        SerializeWriter writer = new SerializeWriter(null, JSON.DEFAULT_GENERATE_FEATURE, new SerializerFeature[0]);\n        int defaultBufferSize = writer.getBufferLength();\n        String encoded = JSON.toJSONString(new FooBar(defaultBufferSize));\n        JSONObject decoded = (JSONObject) JSON.parse(encoded);\n        JSONArray dataToEncode = decoded.getJSONArray(\"dataToEncode\"); \n        Assert.assertEquals(5, dataToEncode.size());\n        writer.close();\n    }\n\n    public static class FooBar {\n\n        private List<String> dataToEncode;\n\n        protected FooBar(int buffLen){\n            dataToEncode = new ArrayList<String>();\n            dataToEncode.add(\"foo\");\n            dataToEncode.add(\"bar\");\n            dataToEncode.add(new String(new char[buffLen]).replace('\\0', 'a')); // create some texts to fill up & expand\n                                                                                // the buffer\n            dataToEncode.add(\"a wild special character appears: áőű\"); // this will restart the list encoding (while the\n                                                                       // count is committed at expand)\n            dataToEncode.add(\"foobar\");\n        }\n\n        public List<String> getDataToEncode() {\n            return dataToEncode;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue776.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.Map;\n\n/**\n * Created by wenshao on 16/8/30.\n */\npublic class Issue776 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String str1 = \"{\\\"v\\\":[\\\" \\\",\\\"abc\\\",\\\"x\\\",\\\"abc\\\"]}\";\n\n        Exception error = null;\n        try {\n            JSON.parseObject(str1,\n                    new com.alibaba.fastjson.TypeReference<Map<String, char[]>>() {\n                    });\n        } catch (Exception ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue779.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 16/8/28.\n */\npublic class Issue779 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Exception error = null;\n        try {\n            String aaa = \"{'token':'token':'sign':'bb'}\";\n            JSON.parseObject(aaa);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n\n        assertNotNull(error);\n    }\n\n    public void test_for_issue_deser() throws Exception {\n        Exception error = null;\n        try {\n            String aaa = \"{'token':'token':'sign':'bb'}\";\n            JSON.parseObject(aaa, Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n\n        assertNotNull(error);\n    }\n\n    public static class Model {\n        public String token;\n        public String sign;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue780.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 16/8/25.\n */\npublic class Issue780 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSONObject json = new JSONObject();\n        json.put(\"robj\", \"{abc: 123}\");\n        JSONObject robj = json.getJSONObject(\"robj\");\n        assertEquals(123, robj.get(\"abc\"));\n    }\n\n    public void test_for_issue_array() throws Exception {\n        JSONObject json = new JSONObject();\n        json.put(\"robj\", \"[123]\");\n        JSONArray robj = json.getJSONArray(\"robj\");\n        assertEquals(123, robj.get(0));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue784.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 16/8/24.\n */\npublic class Issue784 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSON.parse(\"[{\\\"args\\\":[\\\"150\\\",\\\"change\\\",{\\\"timeStamp\\\":1471595047319,\\\"value\\\":\\\"\\\"},{\\\"attrs\\\":{\\\"value\\\":\\\"\\\"}}],\\\"method\\\":\\\"fireEvent\\\"}]\");\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue79.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.List;\n\nimport org.junit.Assert;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Issue79 extends TestCase {\n\n    public void test_for_issue_79() throws Exception {\n        SearchResult result = JSON.parseObject(\"{\\\"present\\\":{\\\"records\\\":[{}]}}\", SearchResult.class);\n        Assert.assertNotNull(result.present);\n        Assert.assertNotNull(result.present.records);\n        Assert.assertNotNull(result.present.records.get(0));\n        Assert.assertNotNull(result.present.records.get(0) instanceof PresentRecord);\n    }\n\n    public static class SearchResult {\n\n        public Present present;\n    }\n\n    public static class Present {\n\n        public List<PresentRecord> records;\n    }\n\n    public static class PresentRecord {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue793.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 16/8/27.\n */\npublic class Issue793 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String text = \"{ \\\"code\\\": 1000, \\\"data\\\": \\\"success\\\", \\\"game_data\\\": [], \\\"member_list\\\": [], \\\"message\\\": \\\"\\\\u6210\\\\u529f\\\" }\";\n        JSONObject json = JSON.parseObject(text);\n        assertEquals(1000, json.get(\"code\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue798.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 16/8/29.\n */\npublic class Issue798 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = new Model();\n        model.value = \" 主要学校：密歇根大学 安娜堡分校、东密西根大学、 克莱利学院�、康考迪亚学院 �、瓦什特洛社区学院� \";\n        String json = JSON.toJSONString(model);\n\n        Model model2 = JSON.parseObject(json, Model.class);\n        assertEquals(model.value, model2.value);\n    }\n\n    public static class Model {\n        public String value;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue798_1.java",
    "content": "/*\n * Copyright 1999-2004 Alibaba.com All right reserved. This software is the\n * confidential and proprietary information of Alibaba.com (\"Confidential\n * Information\"). You shall not disclose such Confidential Information and shall\n * use it only in accordance with the terms of the license agreement you entered\n * into with Alibaba.com.\n */\npackage com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * 类Test.java的实现描述：TODO 类实现描述 \n * @author jieyu.ljy 2016年7月22日 下午12:39:17\n */\npublic class Issue798_1 extends TestCase {\n    \n    public void test_for_issue() throws Exception {\n        String str = \"<p>主要学校：密歇根大学 安娜堡分校、东密西根大学、 克莱利学院、康考迪亚学院 、瓦什特洛社区学院</p>\";\n        String json = JSON.toJSONString(str);\n        assertEquals(\"\\\"<p>主要学校：密歇根大学 安娜堡分校、东密西根大学、 克莱利学院\\\\u007F、康考迪亚学院 \\\\u007F、瓦什特洛社区学院\\\\u007F</p>\\\"\", json);\n\n        String parsedStr = (String) JSON.parse(json);\n        assertEquals(str, parsedStr);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue799.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * Created by wenshao on 16/8/30.\n */\npublic class Issue799 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String path = \"$.array[0:-1].bizData\";\n\n        Map<String, Object> root = new HashMap<String, Object>();\n        Object val = JSONPath.eval(root, path);\n        assertNull(val);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue801.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport java.util.Date;\n\n/**\n * Created by wenshao on 16/9/2.\n */\npublic class Issue801 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"{\\\"date\\\":\\\"0001-01-01T00:00:00\\\"}\";\n        Model model = JSON.parseObject(json, Model.class);\n    }\n\n    public static class Model {\n        @JSONField(format = \"yyyy-MM-ddTHH:mm:ss.SSS\")\n        public Date date;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue804.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport junit.framework.TestCase;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class Issue804 extends TestCase {\n    public void test_issue() throws Exception {\n        String json = \"{\\n\" +\n                \"    \\\"@type\\\":\\\"com.alibaba.json.bvt.bug.Issue804$Room\\\",\\n\" +\n                \"    \\\"children\\\":[],\\n\" +\n                \"    \\\"name\\\":\\\"Room2_1\\\",\\n\" +\n                \"    \\\"parent\\\":{\\n\" +\n                \"        \\\"@type\\\":\\\"com.alibaba.json.bvt.bug.Issue804$Area\\\",\\n\" +\n                \"        \\\"children\\\":[\\n\" +\n                \"            {\\\"$ref\\\":\\\"$\\\"},\\n\" +\n                \"            {\\n\" +\n                \"                \\\"@type\\\":\\\"com.alibaba.json.bvt.bug.Issue804$Room\\\",\\n\" +\n                \"                \\\"children\\\":[],\\n\" +\n                \"                \\\"name\\\":\\\"Room_2\\\",\\n\" +\n                \"                \\\"parent\\\":{\\\"$ref\\\":\\\"$.parent\\\"}\\n\" +\n                \"            }\\n\" +\n                \"        ],\\n\" +\n                \"        \\\"name\\\":\\\"Area1\\\",\\n\" +\n                \"        \\\"parent\\\":{\\n\" +\n                \"            \\\"@type\\\":\\\"com.alibaba.json.bvt.bug.Issue804$Area\\\",\\n\" +\n                \"            \\\"children\\\":[\\n\" +\n                \"                {\\\"$ref\\\":\\\"$.parent\\\"}\\n\" +\n                \"            ],\\n\" +\n                \"            \\\"name\\\":\\\"Area0\\\"\\n\" +\n                \"        }\\n\" +\n                \"    }\\n\" +\n                \"}\";\n\n        Room room = (Room) JSON.parse(json);\n\n        assertSame(room, room.parent.children.get(0));\n    }\n\n    @JSONType\n    public static class Node {\n        protected String name;\n        protected Node parent;\n        protected List<Node> children = new ArrayList<Node>();\n\n        public String getName() {\n            return name;\n        }\n        public void setName(String name) {\n            this.name = name;\n        }\n        public Node getParent() {\n            return parent;\n        }\n        public void setParent(Node parent) {\n            this.parent = parent;\n        }\n        public List<Node> getChildren() {\n            return children;\n        }\n        public void setChildren(List<Node> children) {\n            this.children = children;\n        }\n    }\n\n    @JSONType\n    public static class Area extends Node{\n\n    }\n\n    @JSONType\n    public static class Room extends Node{\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue821.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.Map;\n\n/**\n * Created by wenshao on 10/03/2017.\n */\npublic class Issue821 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String str1 = \"{\\\"v\\\":[\\\" \\\",\\\"a\\\",\\\"x\\\",\\\"a\\\"]}\";\n        System.out.println(str1);\n\n        char[] c =  JSON.parseObject(str1, new  com.alibaba.fastjson.TypeReference<Map<String, char[]>>() {}).get(\"v\");\n        assertEquals(4, c.length);\n        assertEquals(c[0], ' ');\n        assertEquals(c[1], 'a');\n        assertEquals(c[2], 'x');\n        assertEquals(c[3], 'a');\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue859.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.json.test.Base64;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.google.gson.Gson;\nimport junit.framework.TestCase;\nimport org.apache.commons.io.FileUtils;\nimport org.apache.commons.io.IOUtils;\n\nimport java.io.File;\nimport java.io.InputStream;\nimport java.util.zip.GZIPInputStream;\n\n/**\n * Created by wenshao on 2016/10/19.\n */\npublic class Issue859 extends TestCase {\n    protected void setUp() throws Exception {\n        com.alibaba.fastjson.parser.ParserConfig.global.addAccept(\"com.alibaba.json.bvt.bug.Bug_for_zhaoyao.\");\n    }\n\n    public void test_for_issue() throws Exception {\n        InputStream is = Issue72.class.getClassLoader().getResourceAsStream(\"issue859.zip\");\n        GZIPInputStream gzipInputStream = new GZIPInputStream(is);\n        String text = org.apache.commons.io.IOUtils.toString(gzipInputStream);\n        long startMillis = System.currentTimeMillis();\n        for (int i = 0; i < 1; ++i) {\n            JSON.parseObject(text);\n        }\n        // new Gson().fromJson(text, java.util.HashMap.class);\n        //new ObjectMapper().readValue(text, java.util.HashMap.class);\n        long costMillis = System.currentTimeMillis() - startMillis;\n        System.out.println(\"cost : \" + costMillis);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue868.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 2016/10/23.\n */\npublic class Issue868 extends TestCase {\n    public void test_int() throws Exception {\n        Exception error = null;\n        try {\n            String str = String.valueOf(Long.MAX_VALUE);\n            JSON.parseObject(str, int.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public void test_int_min() throws Exception {\n        Exception error = null;\n        try {\n            String str = String.valueOf(Long.MIN_VALUE);\n            JSON.parseObject(str, int.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public void test_short() throws Exception {\n        Exception error = null;\n        try {\n            String str = String.valueOf(Integer.MAX_VALUE);\n            JSON.parseObject(str, short.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public void test_short_min() throws Exception {\n        Exception error = null;\n        try {\n            String str = String.valueOf(Integer.MIN_VALUE);\n            JSON.parseObject(str, short.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public void test_byte() throws Exception {\n        Exception error = null;\n        try {\n            String str = String.valueOf(Short.MAX_VALUE);\n            JSON.parseObject(str, byte.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public void test_byte_min() throws Exception {\n        Exception error = null;\n        try {\n            String str = String.valueOf(Short.MIN_VALUE);\n            JSON.parseObject(str, byte.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public void test_float_min() throws Exception {\n        Exception error = null;\n        try {\n            String str = String.valueOf(Double.MIN_VALUE);\n            JSON.parseObject(str, float.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public void test_float_max() throws Exception {\n        Exception error = null;\n        try {\n            String str = String.valueOf(Double.MAX_VALUE);\n            JSON.parseObject(str, float.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue869.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\n\nimport java.awt.Point;\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * Created by wenshao on 2016/10/19.\n */\npublic class Issue869 extends TestCase {\n    public void test_for_issue() throws Exception {\n        List<DoublePoint> doublePointList = new ArrayList<DoublePoint>();\n        {\n            DoublePoint doublePoint = new DoublePoint();\n            doublePoint.startPoint = new Point(22, 35);\n            doublePoint.endPoint = doublePoint.startPoint;\n            doublePointList.add(doublePoint);\n        }\n        {\n            DoublePoint doublePoint = new DoublePoint();\n            doublePoint.startPoint = new Point(16, 18);\n            doublePoint.endPoint = doublePoint.startPoint;\n            doublePointList.add(doublePoint);\n        }\n\n        String json = JSON.toJSONString(doublePointList);\n        assertEquals(\"[{\\\"endPoint\\\":{\\\"x\\\":22,\\\"y\\\":35},\\\"startPoint\\\":{\\\"x\\\":22,\\\"y\\\":35}},{\\\"endPoint\\\":{\\\"x\\\":16,\\\"y\\\":18},\\\"startPoint\\\":{\\\"x\\\":16,\\\"y\\\":18}}]\", json);\n    }\n\n    public void test_for_issue_parse() throws Exception {\n\n        String text = \"[{\\\"endPoint\\\":{\\\"x\\\":22,\\\"y\\\":35},\\\"startPoint\\\":{\\\"$ref\\\":\\\"$[0].endPoint\\\"}},{\\\"endPoint\\\":{\\\"$ref\\\":\\\"$[1].startPoint\\\"},\\\"startPoint\\\":{\\\"x\\\":16,\\\"y\\\":18}}]\";\n        List<DoublePoint> doublePointList = JSON.parseObject(text, new TypeReference<List<DoublePoint>>(){});\n        assertNotNull(doublePointList.get(0));\n        assertNotNull(doublePointList.get(1));\n        assertSame(doublePointList.get(0).startPoint, doublePointList.get(0).endPoint);\n        assertSame(doublePointList.get(1).startPoint, doublePointList.get(1).endPoint);\n    }\n\n    public static  class DoublePoint{\n        public Point startPoint;\n        public Point endPoint;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue869_1.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * Created by wenshao on 2016/11/13.\n */\npublic class Issue869_1 extends TestCase {\n    public void test_for_issue() throws Exception {\n        List<DoublePoint> doublePointList = new ArrayList<DoublePoint>();\n        {\n            DoublePoint doublePoint = new DoublePoint();\n            doublePoint.startPoint = new Point(22, 35);\n            doublePoint.endPoint = doublePoint.startPoint;\n            doublePointList.add(doublePoint);\n        }\n        {\n            DoublePoint doublePoint = new DoublePoint();\n            doublePoint.startPoint = new Point(16, 18);\n            doublePoint.endPoint = doublePoint.startPoint;\n            doublePointList.add(doublePoint);\n        }\n\n        String json = JSON.toJSONString(doublePointList);\n        assertEquals(\"[{\\\"endPoint\\\":{\\\"x\\\":22,\\\"y\\\":35},\\\"startPoint\\\":{\\\"$ref\\\":\\\"$[0].endPoint\\\"}},{\\\"endPoint\\\":{\\\"x\\\":16,\\\"y\\\":18},\\\"startPoint\\\":{\\\"$ref\\\":\\\"$[1].endPoint\\\"}}]\", json);\n    }\n\n    public void test_for_issue_parse() throws Exception {\n\n        String text = \"[{\\\"endPoint\\\":{\\\"x\\\":22,\\\"y\\\":35},\\\"startPoint\\\":{\\\"$ref\\\":\\\"$[0].endPoint\\\"}},{\\\"endPoint\\\":{\\\"$ref\\\":\\\"$[1].startPoint\\\"},\\\"startPoint\\\":{\\\"x\\\":16,\\\"y\\\":18}}]\";\n        List<Issue869.DoublePoint> doublePointList = JSON.parseObject(text, new TypeReference<List<Issue869.DoublePoint>>(){});\n        assertNotNull(doublePointList.get(0));\n        assertNotNull(doublePointList.get(1));\n        assertSame(doublePointList.get(0).startPoint, doublePointList.get(0).endPoint);\n        assertSame(doublePointList.get(1).startPoint, doublePointList.get(1).endPoint);\n    }\n\n    public static class DoublePoint{\n        public Point startPoint;\n        public Point endPoint;\n    }\n\n    public static class Point {\n        public int x;\n        public int y;\n        public Properties properties;\n\n        public Point() {\n\n        }\n\n        public Point(int x, int y) {\n            this.x = x;\n            this.y = y;\n        }\n    }\n\n    public static class Properties{\n        public String id;\n        public String title;\n    }\n\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue87.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashSet;\nimport java.util.Set;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\n\npublic class Issue87 extends TestCase {\n    public void test_for_issue() throws Exception {\n        TestObject to = new TestObject();\n        to.add(\"test1\");\n        to.add(\"test2\");\n        String text = JSON.toJSONString(to);\n        System.out.println(text);\n        JSONObject jo = JSON.parseObject(text);\n        to = JSON.toJavaObject(jo, TestObject.class);\n    }\n    \n    public static class TestObject {\n\n        private Set<String> set = new HashSet<String>(0);\n\n        public Set<String> getSet() {\n            return set;\n        }\n\n        public void setSet(Set<String> set) {\n            this.set = set;\n        }\n\n        public void add(String str) {\n            set.add(str);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue878.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 2016/11/10.\n */\npublic class Issue878 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String jsonVal0 = \"{\\\"id\\\":5001,\\\"name\\\":\\\"Jobs\\\"}\";\n        String jsonVal1 = \"{\\\"id\\\":5382,\\\"user\\\":\\\"Mary\\\"}\";\n        String jsonVal2 = \"{\\\"id\\\":2341,\\\"person\\\":\\\"Bob\\\"}\";\n\n        Model obj0 = JSON.parseObject(jsonVal0, Model.class);\n        assertEquals(5001, obj0.id);\n        assertEquals(\"Jobs\", obj0.name);\n\n        Model obj1 = JSON.parseObject(jsonVal1, Model.class);\n        assertEquals(5382, obj1.id);\n        assertEquals(\"Mary\", obj1.name);\n\n        Model obj2 = JSON.parseObject(jsonVal2, Model.class);\n        assertEquals(2341, obj2.id);\n        assertEquals(\"Bob\", obj2.name);\n    }\n\n    public static class Model {\n        public int id;\n\n        @JSONField(alternateNames = {\"user\", \"person\"})\n        public String name;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue87_hashset.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashSet;\nimport java.util.Set;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\n\npublic class Issue87_hashset extends TestCase {\n    public void test_for_issue() throws Exception {\n        TestObject to = new TestObject();\n        to.add(\"test1\");\n        to.add(\"test2\");\n        String text = JSON.toJSONString(to);\n        System.out.println(text);\n        JSONObject jo = JSON.parseObject(text);\n        to = JSON.toJavaObject(jo, TestObject.class);\n    }\n    \n    public static class TestObject {\n\n        private HashSet<String> set = new HashSet<String>(0);\n\n        public HashSet<String> getSet() {\n            return set;\n        }\n\n        public void setSet(HashSet<String> set) {\n            this.set = set;\n        }\n\n        public void add(String str) {\n            set.add(str);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue87_treeset.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.TreeSet;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\n\npublic class Issue87_treeset extends TestCase {\n    public void test_for_issue() throws Exception {\n        TestObject to = new TestObject();\n        to.add(\"test1\");\n        to.add(\"test2\");\n        String text = JSON.toJSONString(to);\n        System.out.println(text);\n        JSONObject jo = JSON.parseObject(text);\n        to = JSON.toJavaObject(jo, TestObject.class);\n    }\n    \n    public static class TestObject {\n\n        private TreeSet<String> set = new TreeSet<String>();\n\n        public TreeSet<String> getSet() {\n            return set;\n        }\n\n        public void setSet(TreeSet<String> set) {\n            this.set = set;\n        }\n\n        public void add(String str) {\n            set.add(str);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue887.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 2016/11/10.\n */\npublic class Issue887 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Foo excepted = new Foo();\n        excepted.setName(\"mock\");\n        String json;\n        System.out.println(json = JSON.toJSONString(excepted, true));\n        Foo actually = JSON.parseObject(json, Foo.class);\n        assertEquals(excepted.getName(), actually.getName());\n    }\n\n    public static class Foo {\n        @JSONField(name = \"foo.name\")\n        private String name;\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue89.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Issue89 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parse(\"{\\\"a\\\":з」∠)_,\\\"}\");\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue894.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 10/03/2017.\n */\npublic class Issue894 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String str = String.valueOf(Double.MAX_VALUE);\n        Throwable error = null;\n        try {\n            JSON.parseObject(str, short.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue900.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 2016/11/17.\n */\npublic class Issue900 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"id\\\":123}\", Model.class, Feature.SupportNonPublicField);\n        assertEquals(123, model.id);\n    }\n\n    public static class Model {\n        private int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue900_1.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 2016/11/18.\n */\npublic class Issue900_1 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"id\\\":123}\", Model.class);\n        assertEquals(123, model.id);\n    }\n\n    @JSONType(parseFeatures = Feature.SupportNonPublicField)\n    public static class Model {\n        private int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue912.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\nimport java.util.LinkedList;\nimport java.util.List;\n\n/**\n * Created by wenshao on 06/12/2016.\n */\npublic class Issue912 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String allMethods = \"{\\\"mList\\\":[{\\\"className\\\":\\\"com.qa.scftemplate.contract.ISCFServiceForDyjAction\\\",\\\"methodName\\\":\\\"getArrayInt\\\",\\\"parameterSize\\\":1,\\\"parameters\\\":[{\\\"clazz\\\":\\\"[I\\\",\\\"clsList\\\":null,\\\"isGenericity\\\":false,\\\"value\\\":\\\"\\\"}],\\\"returnType\\\":\\\"[I\\\",\\\"url\\\":\\\"tcp://SCFServiceForDyj/SCFServiceForDyjActionService\\\"},{\\\"className\\\":\\\"com.qa.scftemplate.contract.ISCFServiceForDyjAction\\\",\\\"methodName\\\":\\\"getArrayPrimative\\\",\\\"parameterSize\\\":7,\\\"parameters\\\":[{\\\"clazz\\\":\\\"[I\\\",\\\"clsList\\\":null,\\\"isGenericity\\\":false,\\\"value\\\":\\\"\\\"},{\\\"clazz\\\":\\\"[F\\\",\\\"clsList\\\":null,\\\"isGenericity\\\":false,\\\"value\\\":\\\"\\\"},{\\\"clazz\\\":\\\"[S\\\",\\\"clsList\\\":null,\\\"isGenericity\\\":false,\\\"value\\\":\\\"\\\"},{\\\"clazz\\\":\\\"[D\\\",\\\"clsList\\\":null,\\\"isGenericity\\\":false,\\\"value\\\":\\\"\\\"},{\\\"clazz\\\":\\\"[J\\\",\\\"clsList\\\":null,\\\"isGenericity\\\":false,\\\"value\\\":\\\"\\\"},{\\\"clazz\\\":\\\"[B\\\",\\\"clsList\\\":null,\\\"isGenericity\\\":false,\\\"value\\\":\\\"\\\"},{\\\"clazz\\\":\\\"[C\\\",\\\"clsList\\\":null,\\\"isGenericity\\\":false,\\\"value\\\":\\\"\\\"}],\\\"returnType\\\":\\\"[Ljava.lang.String;\\\",\\\"url\\\":\\\"tcp://SCFServiceForDyj/SCFServiceForDyjActionService\\\"}]}\";\n        JsonBean jsonBean = getJsonData(allMethods, JsonBean.class);\n\n        assertEquals(2, jsonBean.getmList().size());\n        SCFMethod m1 = jsonBean.getmList().get(0);\n        assertNotNull(m1);\n    }\n\n    public static <T> T getJsonData(String json, Class<T> clazz) {\n        T jd = (T) JSON.parseObject(json, clazz,\n                Feature.IgnoreNotMatch,\n                Feature.AutoCloseSource\n        );\n        return jd;\n    }\n\n    public static class JsonBean {\n        private List<SCFMethod> mList;\n\n        public List<SCFMethod> getmList() {\n            return mList;\n        }\n\n        public void setmList(List<SCFMethod> mList) {\n            this.mList = mList;\n        }\n    }\n\n    public static class SCFMethod {\n        public String className;\n        public String url;\n        public String methodName;\n        public int parameterSize;\n        public List<SCFMethodParameter> parameters = new LinkedList<SCFMethodParameter>();\n        public Class<?> returnType;\n\n        public String getUrl() {\n            return url;\n        }\n\n        public void setUrl(String url) {\n            this.url = url;\n        }\n\n        public String getClassName() {\n            return className;\n        }\n\n        public void setClassName(String className) {\n            this.className = className;\n        }\n\n        public Class<?> getReturnType() {\n            return returnType;\n        }\n\n        public void setReturnType(Class<?> returnType) {\n            this.returnType = returnType;\n        }\n\n        public String getMethodName() {\n            return methodName;\n        }\n\n        public void setMethodName(String methodName) {\n            this.methodName = methodName;\n        }\n\n        public int getParameterSize() {\n            return parameterSize;\n        }\n\n        public void setParameterSize(int parameterSize) {\n            this.parameterSize = parameterSize;\n        }\n\n        public List<SCFMethodParameter> getParameters() {\n            return parameters;\n        }\n\n        public void setParameters(List<SCFMethodParameter> parameters) {\n            this.parameters = parameters;\n        }\n    }\n\n    public static class SCFMethodParameter implements Cloneable {\n        public Class<?> clazz;\n        public Object value;\n        public boolean isGenericity = false;\n        public List<Class<?>> clsList;\n\n        public boolean getIsGenericity() {\n            return isGenericity;\n        }\n\n        public void setIsGenericity(boolean isGenericity) {\n            this.isGenericity = isGenericity;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public void setValue(Object value) {\n            this.value = value;\n        }\n\n        public Class<?> getClazz() {\n            return clazz;\n        }\n\n        public void setClazz(Class<?> clazz) {\n            this.clazz = clazz;\n        }\n\n        public List<Class<?>> getClsList() {\n            return clsList;\n        }\n\n        public void setClsList(List<Class<?>> clsList) {\n            this.clsList = clsList;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue922.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\n/**\n * Created by wenshao on 20/12/2016.\n */\npublic class Issue922 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String text = \"[1,2,3]\";\n        JSONArray array = JSON.parseArray(text);\n        List<Long> list = array.toJavaList(Long.class);\n        assertEquals(1L, list.get(0).longValue());\n        assertEquals(2L, list.get(1).longValue());\n        assertEquals(3L, list.get(2).longValue());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue923.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 05/12/2016.\n */\npublic class Issue923 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String text = \"{\\\"res\\\": \\\"00000\\\",\\\"version\\\": \\\"1.8.0\\\",\\\"des\\\":\\\"版本更新：\\n\" +\n                \"1、邀请有礼：新功能，新玩法，快去体验吧~\\n\" +\n                \"2、直播禁言：主播再也不用担心小黑粉啦~\\n\" +\n                \"3、蓝鲸币充值：多种模块任你选，多充多送！\\n\" +\n                \"4、优化排行榜：修复直播页面的排行榜，让大家第一时间看到付出的你~\\n\" +\n                \"5、修复直播聊天区：再也不担心主播看不到你送的礼物和小星星啦~\\\",\\\"download\\\":\\\"http://xxx/android/x/x.apk\\\"}\";\n        JSON.parse(text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue939.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 20/12/2016.\n */\npublic class Issue939 extends TestCase {\n    public void test_for_issue_false() throws Exception {\n        String jsonString = \"\" +\n                \"{\" +\n                \"    \\\"age\\\": 25,\" +\n                \"    \\\"is_stop\\\":false/*comment*/\" +\n                \"}\";\n        Model testUser = JSON.parseObject(jsonString, Model.class);\n        System.out.println(testUser);\n    }\n\n    public void test_for_issue_true() throws Exception {\n        String jsonString = \"\" +\n                \"{\" +\n                \"    \\\"age\\\": 25,\" +\n                \"    \\\"is_stop\\\":true/*comment*/\" +\n                \"}\";\n        Model testUser = JSON.parseObject(jsonString, Model.class);\n        System.out.println(testUser);\n    }\n\n    public static class Model {\n        public int age;\n        public boolean is_top;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue94.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSONObject;\n\n\npublic class Issue94 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSONObject o = new JSONObject();\n        o.put(\"line\", \"{\\\"1\\\":\\u0080}\");\n        o.toString();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue942.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.time.LocalDateTime;\nimport java.time.format.DateTimeFormatter;\n\n/**\n * Created by wenshao on 19/12/2016.\n */\npublic class Issue942 extends TestCase {\n    public void test_for_issue() throws Exception {\n        final String pattern = \"yyyy-MM-dd HH:mm:ss\";\n\n        LocalDateTime dateTime = LocalDateTime.now();\n\n        DateTimeFormatter formatter   = DateTimeFormatter.ofPattern(pattern);\n\n        String text = JSON.toJSONStringWithDateFormat(dateTime, pattern);\n        assertEquals(JSON.toJSONString(formatter.format(dateTime)), text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue943.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\n/**\n * Created by wenshao on 09/12/2016.\n */\npublic class Issue943 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String text = \"{\\n\" +\n                \"\\t\\\"symbols\\\":[\\n\" +\n                \"\\t    {\\\"id\\\":1,\\\"type\\\":\\\"SCATTER\\\"},\\n\" +\n                \"\\t    {\\\"id\\\":2,\\\"type\\\":\\\"BONUS\\\"}\\n\" +\n                \"\\t]\\n\" +\n                \"}\";\n\n        JSONObject root = JSON.parseObject(text);\n\n        JSONArray symbols = root.getJSONArray(\"symbols\");\n        assertNotNull(symbols);\n        assertEquals(2, symbols.size());\n        assertEquals(1, symbols.getJSONObject(0).get(\"id\"));\n        assertEquals(\"SCATTER\", symbols.getJSONObject(0).get(\"type\"));\n\n        assertEquals(2, symbols.getJSONObject(1).get(\"id\"));\n        assertEquals(\"BONUS\", symbols.getJSONObject(1).get(\"type\"));\n\n        SlotConfig slotConfig = JSON.parseObject(text, SlotConfig.class);\n\n        assertNotNull(slotConfig);\n        assertEquals(2, slotConfig.symbols.size());\n        assertEquals(1, slotConfig.symbols.get(0).getId());\n        assertEquals(SymbolType.SCATTER, slotConfig.symbols.get(0).getType());\n\n        assertEquals(2, slotConfig.symbols.get(1).getId());\n        assertEquals(SymbolType.BONUS, slotConfig.symbols.get(1).getType());\n\n    }\n\n    private static class SlotConfig {\n        private List<Symbol> symbols;\n\n        public List<Symbol> getSymbols() {\n            return symbols;\n        }\n\n        public void setSymbols(List<Symbol> symbols) {\n            this.symbols = symbols;\n        }\n    }\n\n    private static class Symbol {\n        private int id;\n\n        private SymbolType type;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public SymbolType getType() {\n            return type;\n        }\n\n        public void setType(SymbolType type) {\n            this.type = type;\n        }\n    }\n\n    enum SymbolType {\n        NORMAL, WILD, SCATTER, BONUS\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue944.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.beans.Transient;\n\n/**\n * Created by wenshao on 19/12/2016.\n */\npublic class Issue944 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = new Model();\n        model.id = 1001;\n\n        String text = JSON.toJSONString(model, SerializerFeature.SkipTransientField);\n\n        assertEquals(\"{}\", text);\n    }\n\n    public static class Model {\n        private int id;\n\n        @Transient\n        public int getId() {\n            return id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue952.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.time.LocalDateTime;\nimport java.time.format.DateTimeFormatter;\n\n/**\n * Created by wenshao on 19/12/2016.\n */\npublic class Issue952 extends TestCase {\n    public void test_for_issue() throws Exception {\n        final String pattern = \"yyyy-MM-dd'T'HH:mm:ss\";\n\n        LocalDateTime dateTime = LocalDateTime.now();\n\n        DateTimeFormatter formatter   = DateTimeFormatter.ofPattern(pattern);\n\n        String text = JSON.toJSONString(dateTime, SerializerFeature.UseISO8601DateFormat);\n        assertEquals(JSON.toJSONString(formatter.format(dateTime)), text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue955.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONPOJOBuilder;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\nimport org.junit.Test;\n\nimport java.text.ParseException;\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.Locale;\n\n/**\n * Created by wenshao on 19/12/2016.\n */\npublic class Issue955 extends TestCase {\n\n    public void test_checkObject() {\n        Art origin = makeOrigin();\n        JSONObject articleObj = (JSONObject) JSON.toJSON(origin);\n\n        JSONObject dataObj = new JSONObject();\n        dataObj.put(\"art\", articleObj);\n\n        Art other = dataObj.getObject(\"art\", Art.class);// return null;\n        assertSame(origin, other); // test failed\n    }\n\n    public void test_checkArray() throws Exception {\n        Art origin = makeOrigin();\n        JSONObject object = (JSONObject) JSON.toJSON(origin);\n\n        JSONArray jsonArray = new JSONArray();\n        jsonArray.add(object);\n\n        Art other = JSON.parseObject(jsonArray.getString(0), Art.class);\n        assertSame(origin, other); // test passed\n\n        other = jsonArray.getObject(0, Art.class); // return = null;\n        assertSame(origin, other); // test failed\n    }\n\n    private Art makeOrigin() {\n        final long unixTime = System.currentTimeMillis() / 1000;\n        final Art origin = new Art();\n        origin.id = \"12\";\n        origin.date = new SimpleDateFormat(\"yyyy-MM-dd\", Locale.getDefault()).format(new Date(unixTime * 1000));\n        origin.isSupported = true;\n        return origin;\n    }\n\n    public void assertSame(Art origin, Art another) {\n        assertNotNull(another);\n        assertEquals(origin.id, another.id);\n        assertEquals(origin.date, another.date);\n        assertSame(origin.isSupported, another.isSupported);\n    }\n\n    @JSONType(builder = Art.Builder.class)\n    public static class Art {\n        private String id;\n        private String date;\n        private boolean isSupported;\n\n        public String getId() {\n            return id;\n        }\n\n        public long getDatetime() throws ParseException {\n            SimpleDateFormat format = new SimpleDateFormat(\"yyyy-MM-dd\", Locale.getDefault());\n            return (format.parse(date)).getTime() / 1000;\n        }\n\n        @JSONField(name = \"isSupported\")\n        public int isSupported() {\n            return isSupported ? 1 : 0;\n        }\n\n        @JSONPOJOBuilder()\n        public final static class Builder {\n            private final Art article = new Art();\n\n            public Builder(){\n\n            }\n\n            @JSONField(name = \"id\")\n            public Builder withId(String id) {\n                article.id = id;\n                return this;\n            }\n\n            @JSONField(name = \"datetime\")\n            public Builder withDateTime(long dateTime) {\n                if (dateTime > 0)\n                    article.date = new SimpleDateFormat(\"yyyy-MM-dd\", Locale.getDefault()).format(new Date(dateTime * 1000));\n                return this;\n\n            }\n\n            @JSONField(name = \"isSupported\")\n            public Builder withSupported(int supported) {\n                article.isSupported = supported == 1;\n                return this;\n            }\n\n            public Art build() {\n                return article;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue96.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.lang.reflect.Type;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Test;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.util.TypeUtils;\n\npublic class Issue96 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        Page<Sub> page = new Page<Sub>(new Sub(1));\n        Type type = new TypeReference<Page<Sub>>() {\n        }.getType();\n        // this is ok\n        Page<Sub> page1 = JSON.parseObject(JSON.toJSONString(page), type);\n        System.out.println(page1.sub.getClass());\n    }\n\n    public void xx_testCast() {\n        Page<Sub> page = new Page<Sub>(new Sub(1));\n        Type type = new TypeReference<Page<Sub>>() {\n        }.getType();\n        ParserConfig parserconfig = ParserConfig.getGlobalInstance();\n        // !!!! this will fail:\n        // !!!! com.alibaba.fastjson.JSONException: can not cast to : Page<Sub> TypeUtils.java:719\n        Page<Sub> page1 = TypeUtils.cast(page, type, parserconfig);\n        System.out.println(page1.sub.getClass());\n    }\n\n    static class Page<T> {\n\n        public Page(){\n            super();\n        }\n\n        public Page(T sub){\n            super();\n            this.sub = sub;\n        }\n\n        T sub;\n\n        public T getSub() {\n            return sub;\n        }\n\n        public void setSub(T sub) {\n            this.sub = sub;\n        }\n    }\n\n    static class Sub {\n\n        public Sub(){\n            super();\n        }\n\n        public Sub(int id){\n            super();\n            this.id = id;\n        }\n\n        int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue963.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.ObjectSerializer;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.StringCodec;\nimport junit.framework.TestCase;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\n\n/**\n * Created by wenshao on 08/01/2017.\n */\npublic class Issue963 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Mock mock = JSON.parseObject(\"{\\\"type\\\":\\\"boolean\\\"}\", Mock.class);\n        assertEquals(EnumType.BOOLEAN, mock.getType());\n    }\n\n    public enum EnumType {\n        BOOLEAN;\n        @Override\n        public String toString() {\n            return name().toLowerCase();\n        }\n    }\n\n    public static class Mock {\n\n        @JSONField(serializeUsing = EnumTypeCodec.class, deserializeUsing = EnumTypeCodec.class)\n        private EnumType type;\n\n        public EnumType getType() {\n            return type;\n        }\n\n        public void setType(EnumType type) {\n            this.type = type;\n        }\n    }\n\n    public static class EnumTypeCodec implements ObjectSerializer, ObjectDeserializer {\n        public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n            String uncasedSensitive = StringCodec.instance.deserialze(parser, type, fieldName);\n            return (T) EnumType.valueOf(uncasedSensitive.toUpperCase());\n        }\n\n        public int getFastMatchToken() {\n            return JSONToken.LITERAL_STRING;\n        }\n\n        public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\n            SerializeWriter out = serializer.out;\n            if (object == null) {\n                out.writeNull();\n                return;\n            }\n            StringCodec.instance.write(serializer, ((EnumType) object).name().toLowerCase(), fieldName, fieldType, features);\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue975.java",
    "content": "package com.alibaba.json.bvt.bug;\n\n/**\n * Created by wenshao on 11/01/2017.\n */\npublic class Issue975 {\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue978.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\n/**\n * Created by wenshao on 10/01/2017.\n */\npublic class Issue978 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n\n    public void test_for_issue() throws Exception {\n        Model model = new Model();\n        model.date = new java.util.Date(1483413683714L);\n\n        JSONObject obj = (JSONObject) JSON.toJSON(model);\n        assertEquals(\"{\\\"date\\\":\\\"2017-01-03 11:21:23\\\"}\", obj.toJSONString());\n    }\n\n    public void test_for_issue2() throws Exception {\n        Model model = new Model();\n        model.date = new java.sql.Date(1483413683714L);\n\n        JSONObject obj = (JSONObject) JSON.toJSON(model);\n        assertEquals(\"{\\\"date\\\":\\\"2017-01-03 11:21:23\\\"}\", obj.toJSONString());\n    }\n\n    public static class Model {\n        @JSONField(format=\"yyyy-MM-dd HH:mm:ss\")\n        public Date date;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue983.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.AbstractMap;\nimport java.util.Map;\n\n/**\n * Created by wenshao on 10/01/2017.\n */\npublic class Issue983 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Map.Entry entry = JSON.parseObject(\"{\\\"name\\\":\\\"foo\\\"}\", Map.Entry.class);\n        assertEquals(\"name\", entry.getKey());\n        assertEquals(\"foo\", entry.getValue());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue983_1.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.AbstractMap;\nimport java.util.Map;\n\n/**\n * Created by wenshao on 10/01/2017.\n */\npublic class Issue983_1 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Map.Entry entry = new AbstractMap.SimpleEntry(\"name\", \"foo\");\n        String text = JSON.toJSONString(entry);\n        assertEquals(\"{\\\"name\\\":\\\"foo\\\"}\", text);\n    }\n\n    public void test_for_issue_int() throws Exception {\n        Map.Entry entry = new AbstractMap.SimpleEntry(\"name\", 123);\n        String text = JSON.toJSONString(entry);\n        assertEquals(\"{\\\"name\\\":123}\", text);\n    }\n\n    public void test_for_issue_int_int() throws Exception {\n        Map.Entry entry = new AbstractMap.SimpleEntry(123, 234);\n        String text = JSON.toJSONString(entry);\n        assertEquals(\"{123:234}\", text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue987.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.Date;\n\n/**\n * Created by wenshao on 11/01/2017.\n */\npublic class Issue987 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String text = \"{\\\"date\\\":\\\"2016-11-09T09:57:20.4Z\\\"}\";\n        JSON.parseObject(text, Model.class);\n    }\n\n    public static class Model {\n        public Date date;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue989.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.MapSerializer;\nimport com.alibaba.fastjson.serializer.ObjectSerializer;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.TreeMap;\n\n/**\n * Created by wenshao on 10/01/2017.\n */\npublic class Issue989 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        assertEquals(\n                JSON.toJSONString(getMyObject(new HashMap<String, Name>())),\n                JSON.toJSONString(getMyObject(new TreeMap<String, Name>()))\n        );\n    }\n\n    private static MyObject getMyObject(Map<String, Name> names) {\n        MyObject mapObj = new MyObject();\n        mapObj.setNames(names);\n        Name name = new Name();\n        name.setFirst(\"foo\");\n        name.setSecond(\"boo\");\n        names.put(\"mock\", name);\n        return mapObj;\n    }\n\n    public static class NameMapCodec implements ObjectSerializer {\n\n        public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\n            JSONObject names = new JSONObject();\n            for(Map.Entry<String, Name> entry :\n                    ((Map<String, Name>)object).entrySet()) {\n                Name name = entry.getValue();\n                names.put(entry.getKey(), name.getFirst() + \":\" + name.getSecond());\n            }\n            MapSerializer.instance.write(serializer, names, fieldName, JSONObject.class, features);\n        }\n\n    }\n\n    public static class MyObject {\n\n        @JSONField(serializeUsing = NameMapCodec.class)\n        private Map<String, Name> names;\n\n        public Map<String, Name> getNames() {\n            return names;\n        }\n\n        public void setNames(Map<String, Name> names) {\n            this.names = names;\n        }\n\n    }\n\n    private static class Name {\n\n        private String first;\n\n        private String second;\n\n        public String getFirst() {\n            return first;\n        }\n\n        public void setFirst(String first) {\n            this.first = first;\n        }\n\n        public String getSecond() {\n            return second;\n        }\n\n        public void setSecond(String second) {\n            this.second = second;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue993.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 15/01/2017.\n */\npublic class Issue993 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Student student = new Student();\n        student.name = \"小刚\";\n\n        String json = JSON.toJSONString(student, SerializerFeature.WriteMapNullValue);\n        assertEquals(\"{\\\"student_name\\\":\\\"小刚\\\",\\\"student_age\\\":0,\\\"student_grade\\\":null}\", json);\n    }\n\n    public static class Student {\n        @JSONField(name=\"student_name\",ordinal = 0)\n        public String name;\n\n        @JSONField(name=\"student_age\",ordinal = 1)\n        public int age;\n\n        @JSONField(name=\"student_grade\",ordinal = 2)\n        public String grade;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue995.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 15/01/2017.\n */\npublic class Issue995 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Person person = new Person();\n\n        JSONPath.set(person, \"$.nose.name\", \"xxx\");\n    }\n\n    public static class Person {\n        public Nose nose;\n    }\n\n    public static class Nose {\n        public String name;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue997.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport net.sf.json.JSONNull;\n\n/**\n * Created by wenshao on 17/01/2017.\n */\npublic class Issue997 extends TestCase {\n    public void test_for_issue() throws Exception {\n\n        Model model = new Model();\n        model.object = JSONNull.getInstance();\n        System.out.println(JSON.toJSONString(model));\n//        System.out.println(JSON.toJSONString(map));\n    }\n\n    public static class Model {\n        public Object object;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue998.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.lang.reflect.Field;\nimport java.util.List;\n\n/**\n * Created by wenshao on 16/01/2017.\n */\npublic class Issue998 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"items\\\":[{\\\"id\\\":123}]}\", Model.class);\n        assertNotNull(model);\n        assertNotNull(model.items);\n        assertEquals(1, model.items.size());\n        assertEquals(123, model.items.get(0).getId());\n\n        String json = JSON.toJSONString(model, SerializerFeature.NotWriteRootClassName, SerializerFeature.WriteClassName);\n        assertEquals(\"{\\\"items\\\":[{\\\"id\\\":123}]}\", json);\n    }\n\n    public void test_for_issue_1() throws Exception {\n        Field field = Model.class.getField(\"items\");\n        List<Item> items = (List<Item> ) JSON.parseObject(\"[{\\\"id\\\":123}]\", field.getGenericType());\n        assertNotNull(items);\n        assertEquals(1, items.size());\n        assertEquals(123, items.get(0).id);\n    }\n\n    public static class Model {\n        public List<? extends Item> items;\n    }\n\n    public static class Item {\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue998_private.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.lang.reflect.Field;\nimport java.util.List;\n\n/**\n * Created by wenshao on 16/01/2017.\n */\npublic class Issue998_private extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"items\\\":[{\\\"id\\\":123}]}\", Model.class);\n        assertNotNull(model);\n        assertNotNull(model.items);\n        assertEquals(1, model.items.size());\n        assertEquals(123, model.items.get(0).getId());\n\n        String json = JSON.toJSONString(model, SerializerFeature.NotWriteRootClassName, SerializerFeature.WriteClassName);\n        assertEquals(\"{\\\"items\\\":[{\\\"id\\\":123}]}\", json);\n    }\n\n    public void test_for_issue_1() throws Exception {\n        Field field = Model.class.getField(\"items\");\n        List<Item> items = (List<Item> ) JSON.parseObject(\"[{\\\"id\\\":123}]\", field.getGenericType());\n        assertNotNull(items);\n        assertEquals(1, items.size());\n        assertEquals(123, items.get(0).id);\n    }\n\n    private static class Model {\n        public List<? extends Item> items;\n    }\n\n    private static class Item {\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue_611.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class Issue_611 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String text = \"{\\\"priority\\\":1}\";\n        JSONObject obj = JSON.parseObject(text);\n        Assert.assertEquals(1, obj.getInteger(\"priority\").intValue());\n        Assert.assertEquals(1, obj.getIntValue(\"priority\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue_717.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\n\npublic class Issue_717 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        Group group = new Group();\n        group.setId(0L);\n        group.setNAME(\"admin\");\n        group.setAUTHORITY(\"administrors\");\n\n        String json = JSON.toJSONString(group);\n        Assert.assertEquals(\"{\\\"ID\\\":0,\\\"nAME\\\":\\\"admin\\\"}\", json);\n    }\n\n    public static class Group {\n\n        @JSONField(name = \"ID\")\n        private Long   id;\n        private String NAME;\n        @JSONField(serialize = false, deserialize = false)\n        private String AUTHORITY;\n\n        public Long getId() {\n            return id;\n        }\n\n        public void setId(Long id) {\n            this.id = id;\n        }\n\n        public String getNAME() {\n            return NAME;\n        }\n\n        public void setNAME(String NAME) {\n            this.NAME = NAME;\n        }\n\n        public String getAUTHORITY() {\n            return AUTHORITY;\n        }\n\n        public void setAUTHORITY(String AUTHORITY) {\n            this.AUTHORITY = AUTHORITY;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue_748.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class Issue_748 extends TestCase {\n    protected void setUp() throws Exception {\n        com.alibaba.fastjson.parser.ParserConfig.global.addAccept(\"com.alibaba.json.bvt.bug.Issue_748.\");\n    }\n\n    public void testJsonObjectWithClassName() {\n        JSONObject jsonObject = new JSONObject();\n        jsonObject.put(\"key1\", \"value1\");\n        jsonObject.put(\"key2\", \"value2\");\n        DataObject dataObject = new DataObject();\n        dataObject.setValue(jsonObject);\n        String jsonStr = JSON.toJSONString(dataObject, SerializerFeature.QuoteFieldNames,\n                                           SerializerFeature.SkipTransientField, SerializerFeature.WriteClassName);\n\n//        System.out.println(\"parse之前:\" + jsonStr);\n\n        DataObject obj = (DataObject) JSON.parse(jsonStr, Feature.IgnoreNotMatch);\n        Assert.assertNotNull(obj.value);\n        Assert.assertNotNull(obj.value.get(\"key1\"));\n        Assert.assertNotNull(obj.value.get(\"key2\"));\n    }\n\n    public static class DataObject {\n\n        private JSONObject value;\n\n        public DataObject(){\n        }\n\n        public JSONObject getValue() {\n            return value;\n        }\n\n        public void setValue(JSONObject value) {\n            this.value = value;\n        }\n\n        @Override\n        public String toString() {\n            return \"DataObject{\" + \"value=\" + value + '}';\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue_for_huangfeng.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 16/02/2017.\n */\npublic class Issue_for_huangfeng extends TestCase {\n    public void test_for_huangfeng() throws Exception {\n        String json = \"{\\\"success\\\":\\\"Y\\\"}\";\n\n        Model model = JSON.parseObject(json, Model.class);\n        assertTrue(model.isSuccess());\n    }\n\n    public void test_for_huangfeng_t() throws Exception {\n        String json = \"{\\\"success\\\":\\\"T\\\"}\";\n\n        Model model = JSON.parseObject(json, Model.class);\n        assertTrue(model.isSuccess());\n    }\n\n    public void test_for_huangfeng_is_t() throws Exception {\n        String json = \"{\\\"isSuccess\\\":\\\"T\\\"}\";\n\n        Model model = JSON.parseObject(json, Model.class);\n        assertTrue(model.isSuccess());\n    }\n\n    public void test_for_huangfeng_false() throws Exception {\n        String json = \"{\\\"success\\\":\\\"N\\\"}\";\n\n        Model model = JSON.parseObject(json, Model.class);\n        assertFalse(model.isSuccess());\n    }\n\n    public void test_for_huangfeng_false_f() throws Exception {\n        String json = \"{\\\"success\\\":\\\"F\\\"}\";\n\n        Model model = JSON.parseObject(json, Model.class);\n        assertFalse(model.isSuccess());\n    }\n\n    public static class Model {\n        private boolean success;\n\n        public boolean isSuccess() {\n            return success;\n        }\n\n        public void setSuccess(boolean success) {\n            this.success = success;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue_for_jiongxiong.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.Set;\n\n/**\n * Created by wenshao on 15/02/2017.\n */\npublic class Issue_for_jiongxiong extends TestCase {\n    public void test_for_jiongxiong() throws Exception {\n        JSON.parseObject(\"{\\\"groupNames\\\":[\\\"a\\\"]}\", Model.class);\n    }\n\n    public static class Model {\n        private Set<String> groupNames;\n\n        public Set<String> getGroupNames() {\n            return groupNames;\n        }\n\n        public void setGroupNames(Set<String> groupNames) {\n            this.groupNames = groupNames;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue_for_oschina_3087749_2215732.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.Test;\nimport junit.framework.TestCase;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * Created by wenshao on 29/12/2016.\n */\npublic class Issue_for_oschina_3087749_2215732 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"{\\\"datas\\\":[\\\"a\\\",\\\"b\\\"]}\";\n        JSONObject o = JSON.parseObject(json);\n        o.toJavaObject(JsonBean.class);\n    }\n\n    public static class JsonBean {\n        private List<String> datas = new ArrayList<String>();\n        public List<String> getDatas() {\n            return datas;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Issue_for_zuojing.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\n/**\n * Created by wenshao on 15/02/2017.\n */\npublic class Issue_for_zuojing extends TestCase {\n    public void test_for_zuojing() throws Exception {\n        String rowData = \"[{\\\"@type\\\":\\\"java.util.HashMap\\\",\\\"end_date\\\":{\\\"@type\\\":\\\"java.sql.Date\\\",\\\"val\\\":1490803200000},\\\"gmt_create\\\":{\\\"@type\\\":\\\"java.sql.Timestamp\\\",\\\"val\\\":1487139144000},\\\"arr_city\\\":\\\"FOC\\\",\\\"agent\\n\" +\n                \"_id\\\":4765L,\\\"auto_book\\\":0B,\\\"sale_rebase\\\":12,\\\"channel\\\":1B,\\\"dep_city\\\":\\\"BJS\\\",\\\"gmt_modified\\\":{\\\"@type\\\":\\\"java.sql.Timestamp\\\",\\\"val\\\":1487139144000},\\\"is_support_share\\\":1B,\\\"sale_retenti\\n\" +\n                \"on\\\":430S,\\\"invoice_type\\\":5B,\\\"id\\\":12675100456,\\\"start_date\\\":{\\\"@type\\\":\\\"java.sql.Date\\\",\\\"val\\\":1485878400000},\\\"pat\\\":1B,\\\"agent_sub_nick\\\":\\\"辰\\\",\\\"travel_start_date\\\":{\\\"@type\\\"\\n\" +\n                \":\\\"java.sql.Date\\\",\\\"val\\\":1485878400000},\\\"policy_type\\\":2B,\\\"travel_end_date\\\":{\\\"@type\\\":\\\"java.sql.Date\\\",\\\"val\\\":1490803200000},\\\"flights_limit_type\\\":1B,\\\"officeid\\\":\\\"WNZ159\\\",\\\"future_tic\\n\" +\n                \"ket\\\":0B,\\\"fare_id\\\":80L,\\\"source_id\\\":4653492L,\\\"source_code\\\":32B,\\\"agent_sub_id\\\":2752916259,\\\"flights_limit\\\":\\\"1100-1999,4000-4999,8200-8230,8960\\\"},{\\\"$ref\\\":\\\"$[0]\\\"}]\";\n        List row = JSON.parseObject(rowData,List.class);\n        assertEquals(2, row.size());\n        assertSame(row.get(0), row.get(1));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/JSONTest.java",
    "content": "package com.alibaba.json.bvt.bug;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\nimport org.junit.Test;\r\n\r\nimport com.alibaba.fastjson.JSONArray;\r\nimport com.alibaba.fastjson.JSONObject;\r\n\r\n@SuppressWarnings(\"unchecked\")\r\npublic class JSONTest {\r\n\r\n    @Test\r\n    public void testParseArray() throws Exception {\r\n        List list = new ArrayList();\r\n        OuterEntry entry = new OuterEntry();\r\n        list.add(entry);\r\n        entry.setId(1000L);\r\n        entry.setUrl(\"http://www.springframework.org/schema/aop\");\r\n        String jsonString = JSONObject.toJSONString(entry);\r\n        String arrayString = JSONObject.toJSONString(list);\r\n        System.out.println(jsonString);\r\n        System.out.println(arrayString);\r\n        list = JSONArray.parseArray(arrayString, OuterEntry.class);\r\n        JSONArray array = JSONArray.parseArray(arrayString);// 这一步出错\r\n    }\r\n\r\n    @Test\r\n    public void testInnerEntry() throws Exception {\r\n        List list = new ArrayList();\r\n        InnerEntry entry = new InnerEntry();\r\n        list.add(entry);\r\n        entry.setId(1000L);\r\n        entry.setUrl(\"http://www.springframework.org/schema/aop\");\r\n        String jsonString = JSONObject.toJSONString(entry);// //这一步出错\r\n    }\r\n\r\n    class InnerEntry {\r\n\r\n        private Long   id;\r\n        private String url;\r\n\r\n        public Long getId() {\r\n            return id;\r\n        }\r\n\r\n        public void setId(Long id) {\r\n            this.id = id;\r\n        }\r\n\r\n        public String getUrl() {\r\n            return url;\r\n        }\r\n\r\n        public void setUrl(String url) {\r\n            this.url = url;\r\n        }\r\n    }\r\n\r\n    public static class OuterEntry {\r\n\r\n        private Long   id;\r\n        private String url;\r\n\r\n        public Long getId() {\r\n            return id;\r\n        }\r\n\r\n        public void setId(Long id) {\r\n            this.id = id;\r\n        }\r\n\r\n        public String getUrl() {\r\n            return url;\r\n        }\r\n\r\n        public void setUrl(String url) {\r\n            this.url = url;\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/KeyBug_for_zhongl.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic class KeyBug_for_zhongl extends TestCase {\n\n    public void testCustomedKey() throws Exception {\n        Assert.assertEquals(\"{\\\"uid\\\":1}\", JSON.toJSONString(new V2(1)));\n    }\n\n    public void testDeserialize() throws Exception {\n        Assert.assertEquals(123, JSON.parseObject(\"{\\\"uid\\\":123}\", V2.class).id);\n    }\n    \n    public void testCustomedKey_static() throws Exception {\n        Assert.assertEquals(\"{\\\"uid\\\":1}\", JSON.toJSONString(new VO(1)));\n    }\n\n    public void testDeserialize_static() throws Exception {\n        Assert.assertEquals(123, JSON.parseObject(\"{\\\"uid\\\":123}\", VO.class).id);\n    }\n\n    public static class VO {\n\n        @JSONField(name = \"uid\")\n        public int    id;\n\n        @JSONField(serialize = false)\n        public String name = \"defaultName\";\n\n        public VO(){\n\n        }\n\n        VO(int id){\n            this.id = id;\n        }\n    }\n\n    private static class V2 {\n\n        @JSONField(name = \"uid\")\n        public int    id;\n\n        @JSONField(serialize = false)\n        public String name = \"defaultName\";\n\n        private V2() {\n\n        }\n\n        private V2(int id) {\n            this.id = id;\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Mogujie_01.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONWriter;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.json.bvtVO.mogujie.BindQueryRespDTO;\nimport junit.framework.TestCase;\n\nimport java.io.ByteArrayOutputStream;\nimport java.io.IOException;\nimport java.io.OutputStream;\nimport java.io.OutputStreamWriter;\nimport java.nio.charset.Charset;\nimport java.nio.charset.CodingErrorAction;\n\n/**\n * Created by wenshao on 16/03/2017.\n */\npublic class Mogujie_01 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSON.parseObject(\"{}\", Model.class);\n\n\n    }\n    public static class Model {\n        public int f0;\n        public int f1;\n        public int f2;\n        public int f3;\n        public int f4;\n        public int f5;\n        public int f6;\n        public int f7;\n        public int f8;\n        public int f9;\n        public int f10;\n        public int f11;\n        public int f12;\n        public int f13;\n        public int f14;\n        public int f15;\n        public int f16;\n        public int f17;\n        public int f18;\n        public int f19;\n        public int f20;\n        public int f21;\n        public int f22;\n        public int f23;\n        public int f24;\n        public int f25;\n        public int f26;\n        public int f27;\n        public int f28;\n        public int f29;\n        public int f30;\n        public int f31;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/Mogujie_02.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 16/03/2017.\n */\npublic class Mogujie_02 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSON.parseObject(\"{}\", Model.class);\n\n\n    }\n    public static class Model {\n        public int f0;\n        public int f1;\n        public int f2;\n        public int f3;\n        public int f4;\n        public int f5;\n        public int f6;\n        public int f7;\n        public int f8;\n        public int f9;\n        public int f10;\n        public int f11;\n        public int f12;\n        public int f13;\n        public int f14;\n        public int f15;\n        public int f16;\n        public int f17;\n        public int f18;\n        public int f19;\n        public int f20;\n        public int f21;\n        public int f22;\n        public int f23;\n        public int f24;\n        public int f25;\n        public int f26;\n        public int f27;\n        public int f28;\n        public int f29;\n        public int f30;\n        public int f31;\n        public int f32;\n        public int f33;\n        public int f34;\n        public int f35;\n        public int f36;\n        public int f37;\n        public int f38;\n        public int f39;\n        public int f40;\n        public int f41;\n        public int f42;\n        public int f43;\n        public int f44;\n        public int f45;\n        public int f46;\n        public int f47;\n        public int f48;\n        public int f49;\n        public int f50;\n        public int f51;\n        public int f52;\n        public int f53;\n        public int f54;\n        public int f55;\n        public int f56;\n        public int f57;\n        public int f58;\n        public int f59;\n        public int f60;\n        public int f61;\n        public int f62;\n        public int f63;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/SerDeserTest.java",
    "content": "/*\r\n * Copyright 2011 Alibaba.com All right reserved. This software is the\r\n * confidential and proprietary information of Alibaba.com (\"Confidential\r\n * Information\"). You shall not disclose such Confidential Information and shall\r\n * use it only in accordance with the terms of the license agreement you entered\r\n * into with Alibaba.com.\r\n */\r\npackage com.alibaba.json.bvt.bug;\r\n\r\nimport java.io.Serializable;\r\nimport java.util.ArrayList;\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.TypeReference;\r\nimport com.alibaba.fastjson.parser.ParserConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\nimport com.alibaba.json.bvtVO.OptionKey;\r\nimport com.alibaba.json.bvtVO.OptionValue;\r\nimport com.alibaba.json.bvtVO.TempAttachMetaOption;\r\n\r\n/**\r\n * 类SerDeserTest.java的实现描述：TODO 类实现描述\r\n * \r\n * @author lei.yaol 2011-12-27 下午03:44:18\r\n */\r\npublic class SerDeserTest extends TestCase {\r\n    protected void setUp() throws Exception {\r\n        com.alibaba.fastjson.parser.ParserConfig.global.addAccept(\"com.alibaba.json.bvtVO.\");\r\n    }\r\n\r\n    /** 用于被FastJson序列和反序列化的对象 */\r\n    private static Map<OptionKey, OptionValue<?>> options;\r\n\r\n    static {\r\n        options = new HashMap<OptionKey, OptionValue<?>>();\r\n\r\n        TempAttachMetaOption attach = new TempAttachMetaOption();\r\n        attach.setId(1000);\r\n        attach.setName(\"test_name\");\r\n        attach.setPath(\"http://alibaba-inc.com/test.txt\");\r\n\r\n        ArrayList<TempAttachMetaOption> attachList = new ArrayList<TempAttachMetaOption>();\r\n        attachList.add(attach);\r\n\r\n        // 设置value\r\n        OptionValue<ArrayList<TempAttachMetaOption>> optionValue = new OptionValue<ArrayList<TempAttachMetaOption>>();\r\n        optionValue.setValue(attachList);\r\n\r\n        options.put(OptionKey.TEMPALTE_ATTACH_META, optionValue);\r\n    }\r\n\r\n    public void test_for_yaolei() {\r\n        // 序列化toJSONString()\r\n        String jsonString = JSON.toJSONString(options);\r\n        System.out.println(jsonString);\r\n        {\r\n            // 反序列化parse()\r\n            HashMap<OptionKey, OptionValue<?>> deserOptions = (HashMap<OptionKey, OptionValue<?>>) JSON.parseObject(jsonString,\r\n                                                                                                                    new TypeReference<HashMap<OptionKey, OptionValue<?>>>() {\r\n\r\n                                                                                                                    });\r\n            System.out.println(deserOptions.get(OptionKey.TEMPALTE_ATTACH_META));\r\n        }\r\n\r\n        // 序列化toJSONString(,)\r\n        jsonString = JSON.toJSONString(options, SerializerFeature.WriteClassName);\r\n        System.out.println(jsonString);\r\n        // 反序列化parse()\r\n        HashMap<OptionKey, OptionValue<?>> deserOptions = (HashMap<OptionKey, OptionValue<?>>) JSON.parse(jsonString);\r\n        System.out.println(deserOptions.get(OptionKey.TEMPALTE_ATTACH_META));\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/StackTraceElementTest.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\n\npublic class StackTraceElementTest extends TestCase {\n    public void test_stackTrace() throws Exception {\n        StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();\n        String text = JSON.toJSONString(stackTrace, SerializerFeature.WriteClassName);\n        JSONArray array = (JSONArray) JSON.parse(text);\n        for (int i = 0; i < array.size(); ++i) {\n            StackTraceElement element = (StackTraceElement) array.get(i);\n            Assert.assertEquals(stackTrace[i].getFileName(), element.getFileName());\n            Assert.assertEquals(stackTrace[i].getLineNumber(), element.getLineNumber());\n            Assert.assertEquals(stackTrace[i].getClassName(), element.getClassName());\n            Assert.assertEquals(stackTrace[i].getMethodName(), element.getMethodName());\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/StackTraceElementTest2.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\n\npublic class StackTraceElementTest2 extends TestCase {\n    public void test_stackTrace2() throws Exception {\n        String text = \"{\\\"@type\\\":\\\"java.lang.StackTraceElement\\\",\\\"className\\\":\\\"java.lang.Thread\\\",\\\"fileName\\\":\\\"Thread.java\\\",\\\"lineNumber\\\":1503,\\\"methodName\\\":\\\"getStackTrace\\\",\\\"nativeMethod\\\":false}\";\n        JSON.parseObject(text, StackTraceElement.class);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/TestDouble.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestDouble extends TestCase {\n\n    public void test_doubleArray_2() throws Exception {\n        double[] array = new double[] { 1, 2 };\n        A a = new A();\n        a.setValue(array);\n\n        String text = JSON.toJSONString(a);\n        A a1 = JSON.parseObject(text, A.class);\n    }\n\n    public static class A {\n\n        private double[] value;\n\n        public double[] getValue() {\n            return value;\n        }\n\n        public void setValue(double[] value) {\n            this.value = value;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/TestJSONMap.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class TestJSONMap extends TestCase {\n    protected void setUp() throws Exception {\n        com.alibaba.fastjson.parser.ParserConfig.global.addAccept(\"com.alibaba.json.bvt.bug.TestJSONMap.\");\n    }\n\n    public void test_0() throws Exception {\n        Record record = new Record();\n        Map map = new HashMap();\n        record.setRecord(map);\n        String s = JSON.toJSONString(record, SerializerFeature.WriteClassName);\n        System.out.println(s);\n        record = (Record)JSON.parse(s); //此处抛出异常\n        System.out.println(record.getRecord().size());\n    }\n\n    public static class Record {\n\n        private Map<Integer, Integer> record;\n\n        public Map<Integer, Integer> getRecord() {\n            return record;\n        }\n\n        public void setRecord(Map<Integer, Integer> record) {\n            this.record = record;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/WuqiTest.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.json.bvtVO.wuqi.InstanceSchema;\nimport com.alibaba.json.bvtVO.wuqi.*;\nimport junit.framework.TestCase;\n\nimport java.io.FileOutputStream;\nimport java.io.OutputStream;\nimport java.io.OutputStreamWriter;\nimport java.nio.charset.CodingErrorAction;\nimport java.util.Arrays;\n\nimport static org.springframework.web.socket.sockjs.frame.SockJsFrame.CHARSET;\n\n/**\n * Created by wenshao on 01/04/2017.\n */\npublic class WuqiTest extends TestCase {\n    public void test_for_wuqi() throws Exception {\n        SchemaResult schemaResult = new SchemaResult();\n        schemaResult.setCode(1001);\n        schemaResult.setMassage(\"success\");\n\n        InstanceSchema instanceSchema = new InstanceSchema();\n        instanceSchema.setCreated(1466692258L);\n        instanceSchema.setCycleType(0);\n        instanceSchema.setDefaultValue(\"-1\");\n        instanceSchema.setFieldBaseType(\"string\");\n        instanceSchema.setFieldComment(\"普通商品价格带标签\");\n        instanceSchema.setFieldIndexed(1);\n        instanceSchema.setFieldName(\"NormalPriceTag_ws\");\n        instanceSchema.setFieldStored(1);\n        instanceSchema.setFieldTag(0);\n        instanceSchema.setFieldType(\"text_ws\");\n        instanceSchema.setId(1317);\n        instanceSchema.setInstanceName(\"xitem\");\n        instanceSchema.setIsDeleted(0);\n        instanceSchema.setIsTagField(1);\n        instanceSchema.setUpdated(1466692258L);\n\n        schemaResult.setData(Arrays.asList(instanceSchema));\n\n        Result result = new Result();\n        result.setData(schemaResult);\n        String jsonStr = JSON.toJSONString(result, SerializerFeature.WriteClassName);\n        assertEquals(\"{\\\"@type\\\":\\\"com.alibaba.json.bvtVO.wuqi.Result\\\",\\\"data\\\":{\\\"@type\\\":\\\"com.alibaba.json.bvtVO.wuqi.SchemaResult\\\",\\\"code\\\":1001,\\\"data\\\":[{\\\"created\\\":1466692258,\\\"cycleType\\\":0,\\\"defaultValue\\\":\\\"-1\\\",\\\"fieldBaseType\\\":\\\"string\\\",\\\"fieldComment\\\":\\\"普通商品价格带标签\\\",\\\"fieldIndexed\\\":1,\\\"fieldName\\\":\\\"NormalPriceTag_ws\\\",\\\"fieldStored\\\":1,\\\"fieldTag\\\":0,\\\"fieldType\\\":\\\"text_ws\\\",\\\"id\\\":1317,\\\"instanceName\\\":\\\"xitem\\\",\\\"isDeleted\\\":0,\\\"isTagField\\\":1,\\\"updated\\\":1466692258}],\\\"extra\\\":[],\\\"massage\\\":\\\"success\\\"}}\", jsonStr);\n\n    }\n\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/bug201806/Bug_for_weiqiang.java",
    "content": "package com.alibaba.json.bvt.bug.bug201806;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\npublic class Bug_for_weiqiang extends TestCase {\n    public void test_for_bug() throws Exception {\n        SerializeWriter sw = new SerializeWriter();\n        sw.config(SerializerFeature.WriteNullStringAsEmpty, Boolean.TRUE);\n        JSONSerializer js = new JSONSerializer(sw);\n        js.write(JSON.parseObject(\"{'operator':null, 'status':1}\"));\n        System.out.println(js);\n\n        String json2 = JSON.toJSONString(JSON.parseObject(\"{'operator':null, 'status':1}\"), SerializerFeature.WriteNullStringAsEmpty);\n        System.out.println(json2);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/bug201810/LatLngTest.java",
    "content": "package com.alibaba.json.bvt.bug.bug201810;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport javax.validation.constraints.Max;\nimport javax.validation.constraints.Min;\nimport javax.validation.constraints.NotNull;\nimport java.io.Serializable;\n\npublic class LatLngTest extends TestCase {\n    public void test_latlng() throws Exception {\n        LatLng v = new LatLng();\n        JSON.toJSONString(v);\n    }\n\n    public static class LatLng implements Serializable {\n        /**\n         * serialVersionUID\n         */\n        private static final long serialVersionUID = -9176496417369601807L;\n\n        public LatLng() {}\n\n        public LatLng(Double lat, Double lng) {\n            this.lat = lat;\n            this.lng = lng;\n        }\n\n        /**\n         * 纬度\n         */\n        @Min(-90)\n        @Max(90)\n        @NotNull\n        private Double lat;\n        /**\n         * 经度\n         */\n        @Min(-180)\n        @Max(180)\n        @NotNull\n        private Double lng;\n\n        /**\n         * Getter method for property <tt>lat</tt>.\n         *\n         * @return property value of lat\n         */\n        public Double getLat() {\n            return lat;\n        }\n\n        /**\n         * Setter method for property <tt>lat</tt>.\n         *\n         * @param lat value to be assigned to property lat\n         */\n        public void setLat(Double lat) {\n            this.lat = lat;\n        }\n\n        /**\n         * Getter method for property <tt>lng</tt>.\n         *\n         * @return property value of lng\n         */\n        public Double getLng() {\n            return lng;\n        }\n\n        /**\n         * Setter method for property <tt>lng</tt>.\n         *\n         * @param lng value to be assigned to property lng\n         */\n        public void setLng(Double lng) {\n            this.lng = lng;\n        }\n\n        @Override\n        public String toString() {\n            return lat + \" \" + lng;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/bug2019/Bug20190729_01.java",
    "content": "package com.alibaba.json.bvt.bug.bug2019;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\npublic class Bug20190729_01 extends TestCase\n{\n    public void test_for_issue() throws Exception {\n        JSONObject object = new JSONObject();\n        object.put(\"bucketId\", 123);\n\n        JSON.toJavaObject(object, BucketInfo.class);\n    }\n\n    public static class BucketInfo {\n        private Integer bucketId;\n\n        public Integer getBucketId() {\n            return bucketId;\n        }\n\n        public void setBucketId(int bucketId) {\n            this.bucketId = bucketId;\n        }\n    }\n}\n\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/bug2020/Bug_for_emptyList.java",
    "content": "package com.alibaba.json.bvt.bug.bug2020;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\n\npublic class Bug_for_emptyList extends TestCase {\n    public void test_for_issue() throws Exception {\n        String str = \"{\\\"values\\\":[1,2,3],\\\"map\\\":{\\\"a\\\":1},\\\"keys\\\":[1,2,3],}\";\n        VO vo = JSON.parseObject(str, VO.class);\n        assertEquals(3, vo.values.size());\n        assertEquals(1, vo.map.size());\n        assertEquals(3, vo.keys.size());\n    }\n\n    public static class VO {\n        private java.util.List values = kotlin.collections.CollectionsKt.emptyList();\n        private java.util.Set keys = kotlin.collections.SetsKt.emptySet();\n        private java.util.Map map = kotlin.collections.MapsKt.emptyMap();\n\n        public List getValues()\n        {\n            return values;\n        }\n\n        public Map getMap() {\n            return map;\n        }\n\n        public Set getKeys() {\n            return keys;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/bug2020/Bug_for_money.java",
    "content": "package com.alibaba.json.bvt.bug.bug2020;\n\nimport java.io.Serializable;\nimport java.math.BigDecimal;\nimport java.util.Currency;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\npublic class Bug_for_money extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSONObject obj = JSON.parseObject(\n                \"{\\\"productMaxPriceAmt\\\":{\\\"amount\\\":4.99,\\\"centFactor\\\":100,\\\"cent\\\":499,\\\"currency\\\":\\\"USD\\\",\"\n                        + \"\\\"currencyCode\\\":\\\"USD\\\"}}\");\n        Money money = obj.getObject(\"productMaxPriceAmt\", Money.class);\n        assertEquals(\"USD\", money.getCurrencyCode());\n        assertEquals(new BigDecimal(\"4.99\"), money.getAmount());\n    }\n\n    public static class Money implements Serializable, Comparable {\n\n        private static final long serialVersionUID = 6009335074727417445L;\n\n        public static final String DEFAULT_CURRENCY_CODE = \"CNY\";\n\n        public static final int DEFAULT_ROUNDING_MODE = BigDecimal.ROUND_HALF_EVEN;\n\n        private static final int[] centFactors = new int[] { 1, 10, 100, 1000 };\n\n        private long cent;\n\n        private Currency currency;\n\n        private String currencyCode;\n\n        public Money() {\n            this(0);\n        }\n\n        private Money(double amount) {\n            this(amount, Currency.getInstance(DEFAULT_CURRENCY_CODE));\n        }\n\n\n        public Money(double amount, Currency currency) {\n            this.currency = currency;\n            this.cent = Math.round(amount * getCentFactor());\n        }\n\n        public BigDecimal getAmount() {\n            return BigDecimal.valueOf(cent, currency.getDefaultFractionDigits());\n        }\n\n\n        public long getCent() {\n            return cent;\n        }\n\n\n        public Currency getCurrency() {\n            return currency;\n        }\n\n\n        public int getCentFactor() {\n            return centFactors[currency.getDefaultFractionDigits()];\n        }\n\n\n        public boolean equals(Object other) {\n            return (other instanceof Money) && equals((Money) other);\n        }\n\n        public boolean equals(Money other) {\n            return currency.equals(other.currency) && (cent == other.cent);\n        }\n\n        public int hashCode() {\n            return (int) (cent ^ (cent >>> 32));\n        }\n\n        public int compareTo(Object other) {\n            return compareTo((Money) other);\n        }\n\n        public int compareTo(Money other) {\n            assertSameCurrencyAs(other);\n\n            if (cent < other.cent) {\n                return -1;\n            } else if (cent == other.cent) {\n                return 0;\n            } else {\n                return 1;\n            }\n        }\n\n        public String toString() {\n            return getAmount().toString();\n        }\n\n        protected void assertSameCurrencyAs(Money other) {\n            if (!currency.equals(other.currency)) {\n                throw new IllegalArgumentException(\"Money math currency mismatch.\");\n            }\n        }\n\n        public void setCent(long l) {\n            cent = l;\n        }\n\n        public void setCurrencyCode(String currencyCode) {\n            if (currencyCode != null && !currencyCode.isEmpty()) {\n                this.currencyCode = currencyCode;\n                currency = Currency.getInstance(currencyCode);\n            }\n        }\n\n        public String getCurrencyCode() {\n            currencyCode = currency.getCurrencyCode();\n            return currencyCode;\n        }\n    }\n\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/bug_for_caoyaojun1988.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport java.io.Serializable;\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class bug_for_caoyaojun1988 extends TestCase {\n\n    public void test_for_bug() throws Exception {\n        // 创建 BusinessVO\n        BusinessVO businessVO = new BusinessVO();\n        businessVO.setName(\"name\");\n\n        // 创建 第一个List list中每一个对象都包含 BusinessVO对象\n        ExpiredDto expiredDto = new ExpiredDto();\n        expiredDto.setBusinessVO(businessVO);\n        expiredDto.setId(10001);\n\n        List<ExpiredDto> expiredReports = new ArrayList<ExpiredDto>();\n        expiredReports.add(expiredDto);\n\n        // 创建 第二个List list中每一个对象都包含 BusinessVO对象\n\n        List<NormalDto> normalReports = new ArrayList<NormalDto>();\n        {\n            NormalDto normalDto = new NormalDto();\n            normalDto.setBusinessVO(businessVO);\n            normalDto.setId(10001);\n            normalReports.add(normalDto);\n        }\n\n        // 创建 需要序列化的对象，包含两个list\n        ReportDto reportDto = new ReportDto();\n        reportDto.setExpiredReports(expiredReports);\n        reportDto.setNormalReports(normalReports);\n        reportDto.setCompanyId(10004);\n\n        // 第一个场景 得到的businessVO为null；\n        String serializeStr = (String) JSON.toJSONString(reportDto);\n        System.out.println(serializeStr);\n        ReportDto reuslt = (ReportDto) JSON.parseObject(serializeStr, ReportDto.class);\n        System.out.println(reuslt.getNormalReports().get(0).getBusinessVO());\n\n        // 第二个场景 得到的businessVO为正常数据\n        expiredReports.add(expiredDto);\n        serializeStr = (String) JSON.toJSONString(reportDto);\n        System.out.println(serializeStr);\n        reuslt = (ReportDto) JSON.parseObject(serializeStr, ReportDto.class);\n        System.out.print(reuslt.getNormalReports().get(0).getBusinessVO().getName());\n    }\n\n    public static class BusinessVO implements Serializable {\n\n        private static final long serialVersionUID = -191856665415285103L;\n        private String            name;\n        \n        public BusinessVO() {\n            \n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n    }\n\n    public static class ExpiredDto implements Serializable {\n\n        private static final long serialVersionUID = -2361763020563748437L;\n        private Integer           id;\n        private BusinessVO        businessVO;\n\n        public Integer getId() {\n            return id;\n        }\n\n        public void setId(Integer id) {\n            this.id = id;\n        }\n\n        public BusinessVO getBusinessVO() {\n            return businessVO;\n        }\n\n        public void setBusinessVO(BusinessVO businessVO) {\n            this.businessVO = businessVO;\n        }\n\n    }\n\n    public static class NormalDto implements Serializable {\n\n        private static final long serialVersionUID = -2392077150026945111L;\n        private Integer           id;\n        private BusinessVO        businessVO;\n\n        public Integer getId() {\n            return id;\n        }\n\n        public void setId(Integer id) {\n            this.id = id;\n        }\n\n        public BusinessVO getBusinessVO() {\n            return businessVO;\n        }\n\n        public void setBusinessVO(BusinessVO businessVO) {\n            this.businessVO = businessVO;\n        }\n\n        public static long getSerialversionuid() {\n            return serialVersionUID;\n        }\n\n    }\n\n    public static class ReportDto implements Serializable {\n\n        private static final long serialVersionUID = 4502937258945851832L;\n        private Integer           companyId;\n        private List<NormalDto>   normalReports;\n        private List<ExpiredDto>  expiredReports;\n\n        public Integer getCompanyId() {\n            return companyId;\n        }\n\n        public void setCompanyId(Integer companyId) {\n            this.companyId = companyId;\n        }\n\n        public List<NormalDto> getNormalReports() {\n            return normalReports;\n        }\n\n        public void setNormalReports(List<NormalDto> normalReports) {\n            this.normalReports = normalReports;\n        }\n\n        public List<ExpiredDto> getExpiredReports() {\n            return expiredReports;\n        }\n\n        public void setExpiredReports(List<ExpiredDto> expiredReports) {\n            this.expiredReports = expiredReports;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/bug/bug_for_pengsong0302.java",
    "content": "package com.alibaba.json.bvt.bug;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class bug_for_pengsong0302 extends TestCase {\n\n    public void test_0() throws Exception {\n        Assert.assertEquals(\"\\\"a\\\\u2028b\\\"\", JSON.toJSONString(\"a\\u2028b\"));\n    }\n    \n    public void test_1() throws Exception {\n        Assert.assertEquals(\"{\\\"value\\\":\\\"a\\\\u2028b\\\"}\", JSON.toJSONString(new A(\"a\\u2028b\")));\n    }\n\n    public void test_2029() throws Exception {\n        Assert.assertEquals(\"\\\"a\\\\u2029b\\\"\", JSON.toJSONString(\"a\\u2029b\"));\n    }\n\n    public void test_2029_1() throws Exception {\n        Assert.assertEquals(\"{\\\"value\\\":\\\"a\\\\u2029b\\\"}\", JSON.toJSONString(new A(\"a\\u2029b\")));\n    }\n\n    public static class A {\n\n        private String value;\n\n        public A(String value){\n            super();\n            this.value = value;\n        }\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/builder/BuilderTest0.java",
    "content": "package com.alibaba.json.bvt.builder;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\n\nimport junit.framework.TestCase;\n\npublic class BuilderTest0 extends TestCase {\n    \n    public void test_0() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"id\\\":12304,\\\"name\\\":\\\"ljw\\\"}\", VO.class);\n        \n        Assert.assertEquals(12304, vo.getId());\n        Assert.assertEquals(\"ljw\", vo.getName());\n    }\n\n    @JSONType(builder=VOBuilder.class)\n    public static class VO {\n        private int id;\n        private String name;\n        \n        public int getId() {\n            return id;\n        }\n        \n        public String getName() {\n            return name;\n        }\n    }\n\n    public static class VOBuilder {\n\n        private VO vo = new VO();\n\n        public VO build() {\n            return vo;\n        }\n        \n        public VOBuilder withId(int id) {\n            vo.id = id;\n            return this;\n        }\n        \n        public VOBuilder withName(String name) {\n            vo.name = name;\n            return this;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/builder/BuilderTest0_private.java",
    "content": "package com.alibaba.json.bvt.builder;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\n\nimport junit.framework.TestCase;\n\npublic class BuilderTest0_private extends TestCase {\n    \n    public void test_0() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"id\\\":12304,\\\"name\\\":\\\"ljw\\\"}\", VO.class);\n        \n        Assert.assertEquals(12304, vo.getId());\n        Assert.assertEquals(\"ljw\", vo.getName());\n    }\n\n    @JSONType(builder=VOBuilder.class)\n    public static class VO {\n        private int id;\n        private String name;\n        \n        public int getId() {\n            return id;\n        }\n        \n        public String getName() {\n            return name;\n        }\n    }\n\n    private static class VOBuilder {\n\n        private VO vo = new VO();\n\n        public VO build() {\n            return vo;\n        }\n        \n        public VOBuilder withId(int id) {\n            vo.id = id;\n            return this;\n        }\n        \n        public VOBuilder withName(String name) {\n            vo.name = name;\n            return this;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/builder/BuilderTest1.java",
    "content": "package com.alibaba.json.bvt.builder;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\n\nimport junit.framework.TestCase;\n\npublic class BuilderTest1 extends TestCase {\n    \n    public void test_create() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"id\\\":12304,\\\"name\\\":\\\"ljw\\\"}\", VO.class);\n        \n        Assert.assertEquals(12304, vo.getId());\n        Assert.assertEquals(\"ljw\", vo.getName());\n    }\n\n    @JSONType(builder=VOBuilder.class)\n    public static class VO {\n        private int id;\n        private String name;\n        \n        public int getId() {\n            return id;\n        }\n        \n        public String getName() {\n            return name;\n        }\n    }\n\n    public static class VOBuilder {\n\n        private VO vo = new VO();\n\n        public VO create() {\n            return vo;\n        }\n        \n        public VOBuilder withId(int id) {\n            vo.id = id;\n            return this;\n        }\n        \n        public VOBuilder withName(String name) {\n            vo.name = name;\n            return this;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/builder/BuilderTest1_private.java",
    "content": "package com.alibaba.json.bvt.builder;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\n\nimport junit.framework.TestCase;\n\npublic class BuilderTest1_private extends TestCase {\n    \n    public void test_create() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"id\\\":12304,\\\"name\\\":\\\"ljw\\\"}\", VO.class);\n        \n        Assert.assertEquals(12304, vo.getId());\n        Assert.assertEquals(\"ljw\", vo.getName());\n    }\n\n    @JSONType(builder=VOBuilder.class)\n    public static class VO {\n        private int id;\n        private String name;\n        \n        public int getId() {\n            return id;\n        }\n        \n        public String getName() {\n            return name;\n        }\n    }\n\n    private static class VOBuilder {\n\n        private VO vo = new VO();\n\n        public VO create() {\n            return vo;\n        }\n        \n        public VOBuilder withId(int id) {\n            vo.id = id;\n            return this;\n        }\n        \n        public VOBuilder withName(String name) {\n            vo.name = name;\n            return this;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/builder/BuilderTest2.java",
    "content": "package com.alibaba.json.bvt.builder;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONPOJOBuilder;\nimport com.alibaba.fastjson.annotation.JSONType;\n\nimport junit.framework.TestCase;\n\npublic class BuilderTest2 extends TestCase {\n    \n    public void test_create() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"id\\\":12304,\\\"name\\\":\\\"ljw\\\"}\", VO.class);\n        \n        Assert.assertEquals(12304, vo.getId());\n        Assert.assertEquals(\"ljw\", vo.getName());\n    }\n\n    @JSONType(builder=VOBuilder.class)\n    public static class VO {\n        private int id;\n        private String name;\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public int getId() {\n            return id;\n        }\n        \n        public String getName() {\n            return name;\n        }\n    }\n\n    @JSONPOJOBuilder(buildMethod=\"xxx\")\n    public static class VOBuilder {\n\n        private VO vo = new VO();\n\n        public VO xxx() {\n            return vo;\n        }\n        \n        public VOBuilder withId(int id) {\n            vo.id = id;\n            return this;\n        }\n        \n        public VOBuilder withName(String name) {\n            vo.name = name;\n            return this;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/builder/BuilderTest2_private.java",
    "content": "package com.alibaba.json.bvt.builder;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONPOJOBuilder;\nimport com.alibaba.fastjson.annotation.JSONType;\n\nimport junit.framework.TestCase;\n\npublic class BuilderTest2_private extends TestCase {\n    \n    public void test_create() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"id\\\":12304,\\\"name\\\":\\\"ljw\\\"}\", VO.class);\n        \n        Assert.assertEquals(12304, vo.getId());\n        Assert.assertEquals(\"ljw\", vo.getName());\n    }\n\n    @JSONType(builder=VOBuilder.class)\n    public static class VO {\n        private int id;\n        private String name;\n        \n        public int getId() {\n            return id;\n        }\n        \n        public String getName() {\n            return name;\n        }\n    }\n\n    @JSONPOJOBuilder(buildMethod=\"xxx\")\n    private static class VOBuilder {\n\n        private VO vo = new VO();\n\n        public VO xxx() {\n            return vo;\n        }\n        \n        public VOBuilder withId(int id) {\n            vo.id = id;\n            return this;\n        }\n        \n        public VOBuilder withName(String name) {\n            vo.name = name;\n            return this;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/builder/BuilderTest3.java",
    "content": "package com.alibaba.json.bvt.builder;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONPOJOBuilder;\nimport com.alibaba.fastjson.annotation.JSONType;\n\nimport junit.framework.TestCase;\n\npublic class BuilderTest3 extends TestCase {\n    \n    public void test_create() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"id\\\":12304,\\\"name\\\":\\\"ljw\\\"}\", VO.class);\n        \n        Assert.assertEquals(12304, vo.getId());\n        Assert.assertEquals(\"ljw\", vo.getName());\n    }\n\n    @JSONType(builder=VOBuilder.class)\n    public static class VO {\n        private int id;\n        private String name;\n        \n        public int getId() {\n            return id;\n        }\n        \n        public String getName() {\n            return name;\n        }\n    }\n\n    @JSONPOJOBuilder(withPrefix=\"kk\", buildMethod=\"mmm\")\n    public static class VOBuilder {\n\n        private VO vo = new VO();\n\n        public VO mmm() {\n            return vo;\n        }\n        \n        public VOBuilder kkId(int id) {\n            vo.id = id;\n            return this;\n        }\n        \n        public VOBuilder kkName(String name) {\n            vo.name = name;\n            return this;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/builder/BuilderTest3_private.java",
    "content": "package com.alibaba.json.bvt.builder;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\n\nimport junit.framework.TestCase;\n\npublic class BuilderTest3_private extends TestCase {\n    \n    public void test_create() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"id\\\":12304,\\\"name\\\":\\\"ljw\\\"}\", VO.class);\n        \n        Assert.assertEquals(12304, vo.getId());\n        Assert.assertEquals(\"ljw\", vo.getName());\n    }\n\n    @JSONType(builder=VOBuilder.class)\n    public static class VO {\n        private int id;\n        private String name;\n        \n        public int getId() {\n            return id;\n        }\n        \n        public String getName() {\n            return name;\n        }\n    }\n\n    private static class VOBuilder {\n\n        private VO vo = new VO();\n\n        public VO create() {\n            return vo;\n        }\n        \n        @JSONField(name=\"id\")\n        public VOBuilder kkId(int id) {\n            vo.id = id;\n            return this;\n        }\n        \n        @JSONField(name=\"name\")\n        public VOBuilder kkName(String name) {\n            vo.name = name;\n            return this;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/builder/BuilderTest_error.java",
    "content": "package com.alibaba.json.bvt.builder;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.annotation.JSONType;\n\nimport junit.framework.TestCase;\n\npublic class BuilderTest_error extends TestCase {\n\n    public void test_0() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"id\\\":12304,\\\"name\\\":\\\"ljw\\\"}\", VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    @JSONType(builder = VOBuilder.class)\n    public static class VO {\n\n        private int    id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public String getName() {\n            return name;\n        }\n    }\n\n    public static class VOBuilder {\n\n        private VO vo = new VO();\n\n        public VO build() {\n            throw new IllegalStateException();\n        }\n\n        public VOBuilder withId(int id) {\n            vo.id = id;\n            return this;\n        }\n\n        public VOBuilder withName(String name) {\n            vo.name = name;\n            return this;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/builder/BuilderTest_error_private.java",
    "content": "package com.alibaba.json.bvt.builder;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.annotation.JSONType;\n\nimport junit.framework.TestCase;\n\npublic class BuilderTest_error_private extends TestCase {\n\n    public void test_0() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"id\\\":12304,\\\"name\\\":\\\"ljw\\\"}\", VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    @JSONType(builder = VOBuilder.class)\n    public static class VO {\n\n        private int    id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public String getName() {\n            return name;\n        }\n    }\n\n    private static class VOBuilder {\n\n        private VO vo = new VO();\n\n        public VO build() {\n            throw new IllegalStateException();\n        }\n\n        public VOBuilder withId(int id) {\n            vo.id = id;\n            return this;\n        }\n\n        public VOBuilder withName(String name) {\n            vo.name = name;\n            return this;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/cglib/TestCglib.java",
    "content": "package com.alibaba.json.bvt.cglib;\n\nimport java.lang.reflect.Method;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\nimport net.sf.cglib.proxy.Enhancer;\nimport net.sf.cglib.proxy.MethodInterceptor;\nimport net.sf.cglib.proxy.MethodProxy;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestCglib extends TestCase {\n\n    public void test_cglib() throws Exception {\n        Enhancer enhancer = new Enhancer();\n        enhancer.setSuperclass(Entity.class);\n        enhancer.setCallback(new Proxy());\n        Entity entity = (Entity) enhancer.create();\n        \n        entity.setId(3);\n        entity.setName(\"Jobs\");\n        \n        String text = JSON.toJSONString(entity);\n        Assert.assertEquals(\"{\\\"id\\\":3,\\\"name\\\":\\\"Jobs\\\"}\", text);\n\n    }\n\n    public static class Proxy implements MethodInterceptor {\n\n        public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {\n            return proxy.invokeSuper(obj, args);\n        }\n\n    }\n\n    public static class Entity {\n\n        private int    id;\n        private String name;\n\n        public Entity(){\n\n        }\n\n        public Entity(int id, String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/comparing_json_modules/ComplexAndDecimalTest.java",
    "content": "package com.alibaba.json.bvt.comparing_json_modules;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.BigDecimalCodec;\nimport junit.framework.TestCase;\n\nimport java.math.BigDecimal;\n\n/**\n * Created by wenshao on 24/03/2017.\n */\npublic class ComplexAndDecimalTest extends TestCase {\n    public void test_3_1() throws Exception {\n        assertEquals(\"5\", JSON.toJSONString(5L));\n    }\n\n    public void test_3_2() throws Exception {\n        assertEquals(\"5.5\", JSON.toJSONString(new BigDecimal(\"5.5\")));\n    }\n\n    public void test_3_4() throws Exception {\n        assertEquals(\"5\", JSON.toJSONString(new BigDecimal(\"5\")));\n    }\n\n    public void test_3_5() throws Exception {\n        assertEquals(\"0.1\", JSON.toJSONString(new BigDecimal(\"0.1\")));\n    }\n\n    public void test_3_6() throws Exception {\n        assertEquals(\"0.1\", JSON.toJSONString(new BigDecimal(\"0.1\")));\n    }\n\n    public void test_3_7() throws Exception {\n        assertEquals(\"3.14159265358979323846264338327950288419716939937510\", JSON.toJSONString(new BigDecimal(\"3.14159265358979323846264338327950288419716939937510\")));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/comparing_json_modules/Floating_point_Test.java",
    "content": "package com.alibaba.json.bvt.comparing_json_modules;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.DoubleSerializer;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 24/03/2017.\n */\npublic class Floating_point_Test extends TestCase {\n    public void test_2_1() throws Exception {\n        assertEquals(\"0.0\", JSON.toJSONString(0.0));\n    }\n\n    public void test_2_2() throws Exception {\n        assertEquals(\"-0.0\", JSON.toJSONString(-0.0F));\n    }\n\n    public void test_2_3() throws Exception {\n        assertEquals(\"1.0\", JSON.toJSONString(1.0));\n    }\n\n    public void test_2_4() throws Exception {\n        assertEquals(\"0.1\", JSON.toJSONString(0.1));\n    }\n\n    public void test_2_5() throws Exception {\n        assertEquals(\"3.141592653589793\", JSON.toJSONString(Math.PI));\n    }\n\n    public void test_2_6() throws Exception {\n        double doubeValue = Math.pow(Math.PI, 100);\n        assertEquals(\"5.187848314319592E49\", JSON.toJSONString(doubeValue));\n    }\n\n    public void test_2_7() throws Exception {\n        double doubeValue = Math.pow(Math.PI, -100);\n\n        String json = JSON.toJSONString(doubeValue);\n        // 1.9275814160560204E-50\n        // 1.9275814160560206E-50\n        assertTrue(json.equals(\"1.9275814160560206E-50\")\n                || json.equals(\"1.9275814160560204E-50\") // raspberry pi\n        );\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/comparing_json_modules/Integral_types_Test.java",
    "content": "package com.alibaba.json.bvt.comparing_json_modules;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 24/03/2017.\n */\npublic class Integral_types_Test extends TestCase {\n    public void test_1_1() throws Exception {\n        assertEquals(\"0\", JSON.toJSONString(0));\n    }\n\n    public void test_1_2() throws Exception {\n        assertEquals(\"1\", JSON.toJSONString(1));\n    }\n\n    public void test_1_3() throws Exception {\n        assertEquals(\"123456789\", JSON.toJSONString(123456789));\n    }\n\n    public void test_1_4() throws Exception {\n        assertEquals(\"-123456789\", JSON.toJSONString(-123456789));\n    }\n\n    public void test_1_5() throws Exception {\n        assertEquals(\"2147483647\", JSON.toJSONString(Integer.MAX_VALUE));\n    }\n\n    public void test_1_6() throws Exception {\n        String text = \"-9999999999999999999943\";\n        assertEquals(text, JSON.toJSONString(JSON.parse(text)));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/comparing_json_modules/Invalid_Test.java",
    "content": "package com.alibaba.json.bvt.comparing_json_modules;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 25/03/2017.\n */\npublic class Invalid_Test extends TestCase {\n    public void test_6_1() throws Exception {\n        assertEquals(0, JSON.parse(\"+0\"));\n    }\n\n//    public void test_6_5() throws Exception {\n//        assertEquals(28, JSON.parse(\"034\"));\n//    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/compatible/ThreadLocalCacheTest.java",
    "content": "package com.alibaba.json.bvt.compatible;\n\nimport com.alibaba.fastjson.util.ThreadLocalCache;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 29/01/2017.\n */\npublic class ThreadLocalCacheTest extends TestCase{\n    public void test_threadCache() throws Exception {\n        ThreadLocalCache.getBytes(10);\n        ThreadLocalCache.clearBytes();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/compatible/TypeUtilsComputeGettersTest.java",
    "content": "package com.alibaba.json.bvt.compatible;\n\nimport com.alibaba.fastjson.util.FieldInfo;\nimport com.alibaba.fastjson.util.TypeUtils;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\n/**\n * Created by wenshao on 20/03/2017.\n */\npublic class TypeUtilsComputeGettersTest extends TestCase {\n    public void test_for_computeGetters() {\n        List<FieldInfo> fieldInfoList = TypeUtils.computeGetters(Model.class, null);\n        assertEquals(1, fieldInfoList.size());\n        assertEquals(\"id\", fieldInfoList.get(0).name);\n    }\n\n    public static class Model {\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/compatible/jsonlib/CompatibleTest0.java",
    "content": "package com.alibaba.json.bvt.compatible.jsonlib;\n\nimport java.math.BigDecimal;\nimport java.math.BigInteger;\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.JSONLibDataFormatSerializer;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class CompatibleTest0 extends TestCase {\n\n    protected void setUp() throws Exception {\n        System.out.println();\n    }\n\n    public void test_0() throws Exception {\n        Map<String, Object> obj = new HashMap<String, Object>();\n        assertEquals(toCompatibleJSONString(obj), toJSONLibString(obj));\n    }\n\n    public void test_1() throws Exception {\n        VO vo = new VO();\n        assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));\n    }\n\n    public void test_2() throws Exception {\n        V1 vo = new V1();\n        assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));\n    }\n\n    // {\"media\":{\"size\":58982400,\"format\":\"video/mpg4\",\"uri\":\"http://javaone.com/keynote.mpg\",\"title\":\"Javaone Keynote\",\"width\":640,\"height\":480,\"duration\":18000000,\"bitrate\":262144,\"persons\":[\"Bill Gates\",\"Steve Jobs\"],\"player\":\"JAVA\"}{\"images\":[{\"size\":\"LARGE\",\"uri\":\"http://javaone.com/keynote_large.jpg\",\"title\":\"Javaone Keynote\",\"width\":1024,\"height\":768},{\"size\":\"SMALL\",\"uri\":\"http://javaone.com/keynote_small.jpg\",\"title\":\"Javaone Keynote\",\"width\":320,\"height\":240}]}\n\n    public void test_3() throws Exception {\n        V1 vo = new V1();\n        vo.setDate(new Date());\n        assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));\n    }\n\n    public void test_4() throws Exception {\n        V1 vo = new V1();\n        vo.setF2('中');\n        assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));\n    }\n\n    public void test_5() throws Exception {\n        V2 vo = new V2();\n        vo.setF1(0.2f);\n        vo.setF2(33.3);\n        assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));\n    }\n\n    public void test_6() throws Exception {\n        V2 vo = new V2();\n        vo.setF1(0.1f);\n        vo.setF2(33.3);\n        assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));\n    }\n\n    public void test_7() throws Exception {\n        V2 vo = new V2();\n        vo.setF2(0.1D);\n        vo.setF1(33.3f);\n        assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));\n    }\n\n    public void test_8() throws Exception {\n        V3 vo = new V3();\n        assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));\n    }\n\n    public void test_9() throws Exception {\n        V4 vo = new V4();\n        assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));\n    }\n\n    public void test_10() throws Exception {\n        Object vo = null;\n        assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));\n    }\n\n    public void test_11() throws Exception {\n        Object vo = new HashMap();\n        assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));\n    }\n\n    public static void assertEquals(String fastJSON, String jsonLib) {\n        System.out.println(\"fastjson: \" + fastJSON);\n        System.out.println(\"json-lib: \" + jsonLib);\n        Assert.assertEquals(JSON.parse(fastJSON), JSON.parse(jsonLib));\n    }\n\nprivate static final SerializeConfig   mapping;\nstatic {\n    mapping = new SerializeConfig();\n    mapping.put(Date.class, new JSONLibDataFormatSerializer()); // 使用和json-lib兼容的日期输出格式\n}\n\nprivate static final SerializerFeature[] features = { SerializerFeature.WriteMapNullValue, // 输出空置字段\n        SerializerFeature.WriteNullListAsEmpty, // list字段如果为null，输出为[]，而不是null\n        SerializerFeature.WriteNullNumberAsZero, // 数值字段如果为null，输出为0，而不是null\n        SerializerFeature.WriteNullBooleanAsFalse, // Boolean字段如果为null，输出为false，而不是null\n        SerializerFeature.WriteNullStringAsEmpty // 字符类型字段如果为null，输出为\"\"，而不是null\n                                                  };\n\n// 序列化为和JSON-LIB兼容的字符串\npublic static String toCompatibleJSONString(Object object) {\n\n    return JSON.toJSONString(object, mapping, features);\n}\n\n    public static String toJSONLibString(Object object) {\n        net.sf.json.JSONObject obj = net.sf.json.JSONObject.fromObject(object);\n        return obj.toString();\n    }\n\n    public static class V4 {\n\n        private Map<String, Object> items;\n\n        public Map<String, Object> getItems() {\n            return items;\n        }\n\n        public void setItems(Map<String, Object> items) {\n            this.items = items;\n        }\n\n    }\n\n    public static class V3 {\n\n        private List<String> items;\n\n        public List<String> getItems() {\n            return items;\n        }\n\n        public void setItems(List<String> items) {\n            this.items = items;\n        }\n\n    }\n\n    public static class V2 {\n\n        private float  f1;\n        private double f2;\n\n        private Float  f3;\n        private Double f4;\n\n        public float getF1() {\n            return f1;\n        }\n\n        public void setF1(float f1) {\n            this.f1 = f1;\n        }\n\n        public double getF2() {\n            return f2;\n        }\n\n        public void setF2(double f2) {\n            this.f2 = f2;\n        }\n\n        public Float getF3() {\n            return f3;\n        }\n\n        public void setF3(Float f3) {\n            this.f3 = f3;\n        }\n\n        public Double getF4() {\n            return f4;\n        }\n\n        public void setF4(Double f4) {\n            this.f4 = f4;\n        }\n\n    }\n\n    public static class V1 {\n\n        private Boolean   f1;\n        private Character f2;\n        private String    f3;\n        private Date      date;\n\n        private boolean   f4;\n        private char      f5;\n\n        public Boolean getF1() {\n            return f1;\n        }\n\n        public void setF1(Boolean f1) {\n            this.f1 = f1;\n        }\n\n        public Character getF2() {\n            return f2;\n        }\n\n        public void setF2(Character f2) {\n            this.f2 = f2;\n        }\n\n        public String getF3() {\n            return f3;\n        }\n\n        public void setF3(String f3) {\n            this.f3 = f3;\n        }\n\n        public Date getDate() {\n            return date;\n        }\n\n        public void setDate(Date date) {\n            this.date = date;\n        }\n\n        public boolean isF4() {\n            return f4;\n        }\n\n        public void setF4(boolean f4) {\n            this.f4 = f4;\n        }\n\n        public char getF5() {\n            return f5;\n        }\n\n        public void setF5(char f5) {\n            this.f5 = f5;\n        }\n\n    }\n\n    public static class VO {\n\n        private int          id;\n        private String       name;\n        private BigDecimal   salary;\n        private List<String> items;\n\n        private Byte         f1;\n        private Short        f2;\n        private Integer      f3;\n        private Long         f4;\n        private BigInteger   f5;\n        private BigDecimal   f6;\n\n        private byte         f7;\n        private short        f8;\n        private int          f9;\n        private long         f10;\n\n        public Byte getF1() {\n            return f1;\n        }\n\n        public void setF1(Byte f1) {\n            this.f1 = f1;\n        }\n\n        public Short getF2() {\n            return f2;\n        }\n\n        public void setF2(Short f2) {\n            this.f2 = f2;\n        }\n\n        public Integer getF3() {\n            return f3;\n        }\n\n        public void setF3(Integer f3) {\n            this.f3 = f3;\n        }\n\n        public Long getF4() {\n            return f4;\n        }\n\n        public void setF4(Long f4) {\n            this.f4 = f4;\n        }\n\n        public BigInteger getF5() {\n            return f5;\n        }\n\n        public void setF5(BigInteger f5) {\n            this.f5 = f5;\n        }\n\n        public BigDecimal getF6() {\n            return f6;\n        }\n\n        public void setF6(BigDecimal f6) {\n            this.f6 = f6;\n        }\n\n        public byte getF7() {\n            return f7;\n        }\n\n        public void setF7(byte f7) {\n            this.f7 = f7;\n        }\n\n        public short getF8() {\n            return f8;\n        }\n\n        public void setF8(short f8) {\n            this.f8 = f8;\n        }\n\n        public int getF9() {\n            return f9;\n        }\n\n        public void setF9(int f9) {\n            this.f9 = f9;\n        }\n\n        public long getF10() {\n            return f10;\n        }\n\n        public void setF10(long f10) {\n            this.f10 = f10;\n        }\n\n        public BigDecimal getSalary() {\n            return salary;\n        }\n\n        public void setSalary(BigDecimal salary) {\n            this.salary = salary;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public List<String> getItems() {\n            return items;\n        }\n\n        public void setItems(List<String> items) {\n            this.items = items;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/compatible/jsonlib/CompatibleTest_noasm.java",
    "content": "package com.alibaba.json.bvt.compatible.jsonlib;\n\nimport java.math.BigDecimal;\nimport java.math.BigInteger;\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.JSONLibDataFormatSerializer;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class CompatibleTest_noasm extends TestCase {\n\n    protected void setUp() throws Exception {\n        System.out.println();\n    }\n\n    public void test_0() throws Exception {\n        Map<String, Object> obj = new HashMap<String, Object>();\n        assertEquals(toCompatibleJSONString(obj), toJSONLibString(obj));\n    }\n\n    public void test_1() throws Exception {\n        VO vo = new VO();\n        assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));\n    }\n\n    public void test_2() throws Exception {\n        V1 vo = new V1();\n        assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));\n    }\n\n    // {\"media\":{\"size\":58982400,\"format\":\"video/mpg4\",\"uri\":\"http://javaone.com/keynote.mpg\",\"title\":\"Javaone Keynote\",\"width\":640,\"height\":480,\"duration\":18000000,\"bitrate\":262144,\"persons\":[\"Bill Gates\",\"Steve Jobs\"],\"player\":\"JAVA\"}{\"images\":[{\"size\":\"LARGE\",\"uri\":\"http://javaone.com/keynote_large.jpg\",\"title\":\"Javaone Keynote\",\"width\":1024,\"height\":768},{\"size\":\"SMALL\",\"uri\":\"http://javaone.com/keynote_small.jpg\",\"title\":\"Javaone Keynote\",\"width\":320,\"height\":240}]}\n\n    public void test_3() throws Exception {\n        V1 vo = new V1();\n        vo.setDate(new Date());\n        assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));\n    }\n\n    public void test_4() throws Exception {\n        V1 vo = new V1();\n        vo.setF2('中');\n        assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));\n    }\n\n    public void test_5() throws Exception {\n        V2 vo = new V2();\n        vo.setF1(1.1f);\n        vo.setF2(2.2);\n        assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));\n    }\n\n    public void test_6() throws Exception {\n        V2 vo = new V2();\n\n        vo.setF1(0.1f);\n        vo.setF2(3.3);\n        assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));\n    }\n\n    public void test_7() throws Exception {\n        V2 vo = new V2();\n        vo.setF1(1.1f);\n        vo.setF2(0.1D);\n        assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));\n    }\n\n    public void test_8() throws Exception {\n        V3 vo = new V3();\n        assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));\n    }\n\n    public void test_9() throws Exception {\n        V4 vo = new V4();\n        assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));\n    }\n\n    public void test_10() throws Exception {\n        Object vo = null;\n        assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));\n    }\n\n    public void test_11() throws Exception {\n        Object vo = new HashMap();\n        assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));\n    }\n\n    public static void assertEquals(String fastJSON, String jsonLib) {\n        System.out.println(\"fastjson: \" + fastJSON);\n        System.out.println(\"json-lib: \" + jsonLib);\n        Assert.assertEquals(JSON.parse(fastJSON), JSON.parse(jsonLib));\n    }\n\n    private static final SerializeConfig   mapping;\n    static {\n        mapping = new SerializeConfig();\n        mapping.setAsmEnable(false);\n        mapping.put(Date.class, new JSONLibDataFormatSerializer()); // 使用和json-lib兼容的日期输出格式\n    }\n\n    private static final SerializerFeature[] features = { SerializerFeature.WriteMapNullValue, // 输出空置字段\n            SerializerFeature.WriteNullListAsEmpty, // list字段如果为null，输出为[]，而不是null\n            SerializerFeature.WriteNullNumberAsZero, // 数值字段如果为null，输出为0，而不是null\n            SerializerFeature.WriteNullBooleanAsFalse, // Boolean字段如果为null，输出为false，而不是null\n            SerializerFeature.WriteNullStringAsEmpty // 字符类型字段如果为null，输出为\"\"，而不是null\n                                                      };\n\n    // 序列化为和JSON-LIB兼容的字符串\n    public static String toCompatibleJSONString(Object object) {\n\n        return JSON.toJSONString(object, mapping, features);\n    }\n\n    public static String toJSONLibString(Object object) {\n        net.sf.json.JSONObject obj = net.sf.json.JSONObject.fromObject(object);\n        return obj.toString();\n    }\n\n    public static class V4 {\n\n        private Map<String, Object> items;\n\n        public Map<String, Object> getItems() {\n            return items;\n        }\n\n        public void setItems(Map<String, Object> items) {\n            this.items = items;\n        }\n\n    }\n\n    public static class V3 {\n\n        private List<String> items;\n\n        public List<String> getItems() {\n            return items;\n        }\n\n        public void setItems(List<String> items) {\n            this.items = items;\n        }\n\n    }\n\n    public static class V2 {\n\n        private float  f1;\n        private double f2;\n\n        private Float  f3;\n        private Double f4;\n\n        public float getF1() {\n            return f1;\n        }\n\n        public void setF1(float f1) {\n            this.f1 = f1;\n        }\n\n        public double getF2() {\n            return f2;\n        }\n\n        public void setF2(double f2) {\n            this.f2 = f2;\n        }\n\n        public Float getF3() {\n            return f3;\n        }\n\n        public void setF3(Float f3) {\n            this.f3 = f3;\n        }\n\n        public Double getF4() {\n            return f4;\n        }\n\n        public void setF4(Double f4) {\n            this.f4 = f4;\n        }\n\n    }\n\n    public static class V1 {\n\n        private Boolean   f1;\n        private Character f2;\n        private String    f3;\n        private Date      date;\n\n        private boolean   f4;\n        private char      f5;\n\n        public Boolean getF1() {\n            return f1;\n        }\n\n        public void setF1(Boolean f1) {\n            this.f1 = f1;\n        }\n\n        public Character getF2() {\n            return f2;\n        }\n\n        public void setF2(Character f2) {\n            this.f2 = f2;\n        }\n\n        public String getF3() {\n            return f3;\n        }\n\n        public void setF3(String f3) {\n            this.f3 = f3;\n        }\n\n        public Date getDate() {\n            return date;\n        }\n\n        public void setDate(Date date) {\n            this.date = date;\n        }\n\n        public boolean isF4() {\n            return f4;\n        }\n\n        public void setF4(boolean f4) {\n            this.f4 = f4;\n        }\n\n        public char getF5() {\n            return f5;\n        }\n\n        public void setF5(char f5) {\n            this.f5 = f5;\n        }\n\n    }\n\n    public static class VO {\n\n        private int          id;\n        private String       name;\n        private BigDecimal   salary;\n        private List<String> items;\n\n        private Byte         f1;\n        private Short        f2;\n        private Integer      f3;\n        private Long         f4;\n        private BigInteger   f5;\n        private BigDecimal   f6;\n\n        private byte         f7;\n        private short        f8;\n        private int          f9;\n        private long         f10;\n\n        public Byte getF1() {\n            return f1;\n        }\n\n        public void setF1(Byte f1) {\n            this.f1 = f1;\n        }\n\n        public Short getF2() {\n            return f2;\n        }\n\n        public void setF2(Short f2) {\n            this.f2 = f2;\n        }\n\n        public Integer getF3() {\n            return f3;\n        }\n\n        public void setF3(Integer f3) {\n            this.f3 = f3;\n        }\n\n        public Long getF4() {\n            return f4;\n        }\n\n        public void setF4(Long f4) {\n            this.f4 = f4;\n        }\n\n        public BigInteger getF5() {\n            return f5;\n        }\n\n        public void setF5(BigInteger f5) {\n            this.f5 = f5;\n        }\n\n        public BigDecimal getF6() {\n            return f6;\n        }\n\n        public void setF6(BigDecimal f6) {\n            this.f6 = f6;\n        }\n\n        public byte getF7() {\n            return f7;\n        }\n\n        public void setF7(byte f7) {\n            this.f7 = f7;\n        }\n\n        public short getF8() {\n            return f8;\n        }\n\n        public void setF8(short f8) {\n            this.f8 = f8;\n        }\n\n        public int getF9() {\n            return f9;\n        }\n\n        public void setF9(int f9) {\n            this.f9 = f9;\n        }\n\n        public long getF10() {\n            return f10;\n        }\n\n        public void setF10(long f10) {\n            this.f10 = f10;\n        }\n\n        public BigDecimal getSalary() {\n            return salary;\n        }\n\n        public void setSalary(BigDecimal salary) {\n            this.salary = salary;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public List<String> getItems() {\n            return items;\n        }\n\n        public void setItems(List<String> items) {\n            this.items = items;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/date/CalendarTest.java",
    "content": "package com.alibaba.json.bvt.date;\n\nimport java.util.Calendar;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class CalendarTest extends TestCase {\n\n    public void test_null() throws Exception {\n        String text = \"{\\\"calendar\\\":null}\";\n        \n        VO vo = JSON.parseObject(text, VO.class);\n        Assert.assertNull(vo.getCalendar());\n    }\n    \n    public void test_codec() throws Exception {\n        Calendar calendar = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n        VO vo = new VO();\n        vo.setCalendar(calendar);\n        String text = JSON.toJSONString(vo);\n        \n        VO vo2 = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(vo.getCalendar().getTimeInMillis(), vo2.getCalendar().getTimeInMillis());\n    }\n    \n    public void test_codec_iso88591() throws Exception {\n        Calendar calendar = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n        VO vo = new VO();\n        vo.setCalendar(calendar);\n        String text = JSON.toJSONString(vo, SerializerFeature.UseISO8601DateFormat);\n        \n        VO vo2 = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(vo.getCalendar().getTimeInMillis(), vo2.getCalendar().getTimeInMillis());\n    }\n    \n    public void test_codec_iso88591_2() throws Exception {\n        Calendar calendar = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n        calendar.set(Calendar.SECOND, 0);\n        calendar.set(Calendar.MILLISECOND, 0);\n        VO vo = new VO();\n        vo.setCalendar(calendar);\n        String text = JSON.toJSONString(vo, SerializerFeature.UseISO8601DateFormat);\n        \n        VO vo2 = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(vo.getCalendar().getTimeInMillis(), vo2.getCalendar().getTimeInMillis());\n    }\n\n    public static class VO {\n\n        private Calendar calendar;\n\n        public Calendar getCalendar() {\n            return calendar;\n        }\n\n        public void setCalendar(Calendar calendar) {\n            this.calendar = calendar;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/date/DateFieldFormatTest.java",
    "content": "package com.alibaba.json.bvt.date;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\npublic class DateFieldFormatTest extends TestCase {\n\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_format_() throws Exception {\n        Date now = new Date();\n        Model model = new Model();\n        model.serverTime = now;\n        model.publishTime = now;\n        model.setStartDate( now );\n        \n        String text = JSON.toJSONString(model);\n        System.out.println(text);\n\n        SimpleDateFormat df1 = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\", Locale.CHINA);\n        SimpleDateFormat df2 = new SimpleDateFormat(\"yyyy/MM/dd HH:mm:ss\", Locale.CHINA);\n        SimpleDateFormat df3 = new SimpleDateFormat(\"yyyy-MM-dd\", Locale.CHINA);\n\n        df1.setTimeZone(JSON.defaultTimeZone);\n        df2.setTimeZone(JSON.defaultTimeZone);\n        df3.setTimeZone(JSON.defaultTimeZone);\n\n        String t1 = df1.format(now);\n        String t2 = df2.format(now);\n        String t3 = df3.format(now);\n\n        assertEquals(\"{\\\"publishTime\\\":\\\"\"+t2+\"\\\",\\\"serverTime\\\":\\\"\"+t1+\"\\\",\\\"startDate\\\":\\\"\"+t3+\"\\\"}\",text);\n        \n        Model model2 = JSON.parseObject(text, Model.class);\n        SimpleDateFormat df4 = new SimpleDateFormat(\"yyyy/MM/dd HH:mm:ss\", Locale.CHINA);\n        SimpleDateFormat df5 = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\", Locale.CHINA);\n        SimpleDateFormat df6 = new SimpleDateFormat(\"yyyy-MM-dd\", Locale.CHINA);\n\n        df4.setTimeZone(JSON.defaultTimeZone);\n        df5.setTimeZone(JSON.defaultTimeZone);\n        df6.setTimeZone(JSON.defaultTimeZone);\n\n        assertEquals(t2, df4.format(model2.publishTime));\n        assertEquals(t1, df5.format(model2.serverTime));\n        assertEquals(t3, df6.format(model2.getStartDate()));\n        \n    }\n\n    public static class Model {\n\n        @JSONField(format = \"yyyy-MM-dd HH:mm:ss\")\n        public Date serverTime;\n\n        @JSONField(format = \"yyyy/MM/dd HH:mm:ss\")\n        public Date publishTime;\n\n        @JSONField(format = \"yyyy-MM-dd\")\n        private Date startDate;\n\n        public Date getStartDate() {\n            return startDate;\n        }\n\n        public void setStartDate(Date startDate) {\n            this.startDate = startDate;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/date/DateFieldTest.java",
    "content": "package com.alibaba.json.bvt.date;\r\n\r\nimport java.util.Date;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class DateFieldTest extends TestCase {\r\n\r\n    public void test_codec() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(new Date());\r\n\r\n        String text = JSON.toJSONString(v);\r\n        Assert.assertEquals(\"{\\\"value\\\":\" + v.getValue().getTime() + \"}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_asm() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(true);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullNumberAsZero);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(null, v1.getValue());\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private Date value;\r\n\r\n        public Date getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(Date value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/date/DateFieldTest10.java",
    "content": "package com.alibaba.json.bvt.date;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\n/**\n * Created by wenshao on 07/04/2017.\n */\npublic class DateFieldTest10 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n\n    public void test_for_zero() throws Exception {\n        String text = \"{\\\"date\\\":\\\"0000-00-00\\\"}\";\n\n        SimpleDateFormat format = new SimpleDateFormat(\"yyyy-MM-dd\");\n        Object object = format.parse(\"0000-00-00\");\n        JSON.parseObject(text, Model.class);\n    }\n\n    public void test_1() throws Exception {\n        String text = \"{\\\"date\\\":\\\"2017-08-14 19:05:30.000|America/Los_Angeles\\\"}\";\n        JSON.parseObject(text, Model.class);\n    }\n\n    public void test_2() throws Exception {\n        String text = \"{\\\"date\\\":\\\"2017-08-16T04:29Z\\\"}\";\n        Model model = JSON.parseObject(text, Model.class);\n\n        SimpleDateFormat format = new SimpleDateFormat(\"yyyy-MM-dd HH:mm\");\n        Object object = format.parse(\"2017-08-16 04:29\");\n//        assertEquals(object, model.date);\n    }\n\n    public void test_3() throws Exception {\n        String text = \"{\\\"date\\\":\\\"2017-08-16 04:29\\\"}\";\n        Model model = JSON.parseObject(text, Model.class);\n\n        SimpleDateFormat format = new SimpleDateFormat(\"yyyy-MM-dd HH:mm\");\n        Object object = format.parse(\"2017-08-16 04:29\");\n//        assertEquals(object, model.date);\n    }\n\n    public void test_4() throws Exception {\n        String text = \"{\\\"date\\\":\\\"2017-08-16T04:29\\\"}\";\n        Model model = JSON.parseObject(text, Model.class);\n\n        SimpleDateFormat format = new SimpleDateFormat(\"yyyy-MM-dd HH:mm\");\n        Object object = format.parse(\"2017-08-16 04:29\");\n//        assertEquals(object, model.date);\n    }\n\n    public void test_5() throws Exception {\n        String text = \"{\\\"date\\\":\\\"2018-05-21T14:39:44.907+08:00\\\"}\";\n        Model model = JSON.parseObject(text, Model.class);\n        String str = JSON.toJSONString(model, SerializerFeature.UseISO8601DateFormat);\n        assertEquals(\"{\\\"date\\\":\\\"2018-05-21T14:39:44.907+08:00\\\"}\", str);\n\n//        SimpleDateFormat format = new SimpleDateFormat(\"yyyy-MM-dd HH:mm\");\n//        Date object = format.parse(\"2018-05-21T14:39:44.9077913+08:00\");\n//        assertEquals(object.getTime(), model.date.getTime());\n    }\n\n    public void test_6() throws Exception {\n        String text = \"{\\\"date\\\":\\\"4567-08-16T04:29\\\"}\";\n        Model model = JSON.parseObject(text, Model.class);\n\n        SimpleDateFormat format = new SimpleDateFormat(\"yyyy-MM-dd HH:mm\");\n        Object object = format.parse(\"2017-08-16 04:29\");\n//        assertEquals(object, model.date);\n    }\n\n    public static class Model {\n        public Date date;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/date/DateFieldTest11_reader.java",
    "content": "package com.alibaba.json.bvt.date;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONReader;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.io.StringReader;\nimport java.text.SimpleDateFormat;\nimport java.util.Calendar;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\n/**\n * Created by wenshao on 07/04/2017.\n */\npublic class DateFieldTest11_reader extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n\n    public void test_cn() throws Exception {\n        Model vo = new JSONReader(new StringReader(\"{\\\"date0\\\":\\\"2016-05-06\\\",\\\"date1\\\":\\\"2017-03-01\\\"}\")).readObject(Model.class);\n\n        Calendar calendar = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n\n        calendar.setTime(vo.date0);\n        assertEquals(2016, calendar.get(Calendar.YEAR));\n        assertEquals(4, calendar.get(Calendar.MONTH));\n        assertEquals(6, calendar.get(Calendar.DAY_OF_MONTH));\n        assertEquals(0, calendar.get(Calendar.HOUR_OF_DAY));\n        assertEquals(0, calendar.get(Calendar.MINUTE));\n        assertEquals(0, calendar.get(Calendar.SECOND));\n        assertEquals(0, calendar.get(Calendar.MILLISECOND));\n\n        calendar.setTime(vo.date1);\n        assertEquals(2017, calendar.get(Calendar.YEAR));\n        assertEquals(2, calendar.get(Calendar.MONTH));\n        assertEquals(1, calendar.get(Calendar.DAY_OF_MONTH));\n        assertEquals(0, calendar.get(Calendar.HOUR_OF_DAY));\n        assertEquals(0, calendar.get(Calendar.MINUTE));\n        assertEquals(0, calendar.get(Calendar.SECOND));\n        assertEquals(0, calendar.get(Calendar.MILLISECOND));\n    }\n\n    public void test_cn_1() throws Exception {\n        Model vo = new JSONReader(new StringReader(\"{\\\"date0\\\":1462464000000,\\\"date1\\\":1488297600000}\")).readObject(Model.class);\n\n        Calendar calendar = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n\n        calendar.setTime(vo.date0);\n        assertEquals(2016, calendar.get(Calendar.YEAR));\n        assertEquals(4, calendar.get(Calendar.MONTH));\n        assertEquals(6, calendar.get(Calendar.DAY_OF_MONTH));\n        assertEquals(0, calendar.get(Calendar.HOUR_OF_DAY));\n        assertEquals(0, calendar.get(Calendar.MINUTE));\n        assertEquals(0, calendar.get(Calendar.SECOND));\n        assertEquals(0, calendar.get(Calendar.MILLISECOND));\n\n        calendar.setTime(vo.date1);\n        assertEquals(2017, calendar.get(Calendar.YEAR));\n        assertEquals(2, calendar.get(Calendar.MONTH));\n        assertEquals(1, calendar.get(Calendar.DAY_OF_MONTH));\n        assertEquals(0, calendar.get(Calendar.HOUR_OF_DAY));\n        assertEquals(0, calendar.get(Calendar.MINUTE));\n        assertEquals(0, calendar.get(Calendar.SECOND));\n        assertEquals(0, calendar.get(Calendar.MILLISECOND));\n\n        System.out.println(vo.date0.getTime());\n        System.out.println(vo.date1.getTime());\n    }\n\n    public static class Model {\n        public Date date0;\n        public Date date1;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/date/DateFieldTest12_t.java",
    "content": "package com.alibaba.json.bvt.date;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\npublic class DateFieldTest12_t extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n\n\n    public void test_1() throws Exception {\n        Entity object = new Entity();\n        object.setValue(new Date());\n        String text = JSON.toJSONString(object);\n        SimpleDateFormat format = new SimpleDateFormat(\"yyyy-MM-dd'T'HH:mm:ssZ\", JSON.defaultLocale);\n        format.setTimeZone(JSON.defaultTimeZone);\n        Assert.assertEquals(\"{\\\"value\\\":\\\"\" + format.format(object.getValue()) + \"\\\"}\",\n                            text);\n\n        Entity object2 = JSON.parseObject(text, Entity.class);\n    }\n\n    public static class Entity {\n\n        @JSONField(format = \"yyyy-MM-ddTHH:mm:ssZ\")\n        private Date value;\n\n        public Date getValue() {\n            return value;\n        }\n\n        public void setValue(Date value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/date/DateFieldTest2.java",
    "content": "package com.alibaba.json.bvt.date;\r\n\r\nimport java.text.SimpleDateFormat;\r\nimport java.util.Date;\r\nimport java.util.Locale;\r\nimport java.util.TimeZone;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.annotation.JSONField;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class DateFieldTest2 extends TestCase {\r\n    protected void setUp() throws Exception {\r\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\r\n        JSON.defaultLocale = Locale.CHINA;\r\n    }\r\n    \r\n    public void test_codec() throws Exception {\r\n        SerializeConfig mapping = new SerializeConfig();\r\n\r\n        V0 v = new V0();\r\n        v.setValue(new Date());\r\n\r\n        String text = JSON.toJSONString(v, mapping);\r\n\r\n        SimpleDateFormat format = new SimpleDateFormat(\"yyyy-MM-dd\", JSON.defaultLocale);\r\n        format.setTimeZone(JSON.defaultTimeZone);\r\n        Assert.assertEquals(\"{\\\"value\\\":\" + JSON.toJSONString(format.format(v.getValue())) + \"}\", text);\r\n    }\r\n\r\n    public void test_codec_no_asm() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(new Date());\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        SimpleDateFormat format = new SimpleDateFormat(\"yyyy-MM-dd\", JSON.defaultLocale);\r\n        format.setTimeZone(JSON.defaultTimeZone);\r\n        Assert.assertEquals(\"{\\\"value\\\":\" + JSON.toJSONString(format.format(v.getValue())) + \"}\", text);\r\n    }\r\n\r\n    public void test_codec_asm() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(new Date());\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(true);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        SimpleDateFormat format = new SimpleDateFormat(\"yyyy-MM-dd\", JSON.defaultLocale);\r\n        format.setTimeZone(JSON.defaultTimeZone);\r\n        Assert.assertEquals(\"{\\\"value\\\":\" + JSON.toJSONString(format.format(v.getValue())) + \"}\", text);\r\n    }\r\n\r\n    public void test_codec_null_asm() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(true);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullNumberAsZero);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(null, v1.getValue());\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        @JSONField(format = \"yyyy-MM-dd\")\r\n        private Date value;\r\n\r\n        public Date getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(Date value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/date/DateFieldTest3.java",
    "content": "package com.alibaba.json.bvt.date;\r\n\r\nimport java.text.SimpleDateFormat;\r\nimport java.util.Date;\r\nimport java.util.Locale;\r\nimport java.util.TimeZone;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\nimport com.alibaba.fastjson.serializer.SimpleDateFormatSerializer;\r\n\r\npublic class DateFieldTest3 extends TestCase {\r\n    protected void setUp() throws Exception {\r\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\r\n        JSON.defaultLocale = Locale.CHINA;\r\n    }\r\n    \r\n    public void test_codec() throws Exception {\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.put(Date.class, new SimpleDateFormatSerializer(\"yyyy-MM-dd\"));\r\n\r\n        V0 v = new V0();\r\n        v.setValue(new Date());\r\n\r\n        String text = JSON.toJSONString(v, mapping);\r\n\r\n        SimpleDateFormat format = new SimpleDateFormat(\"yyyy-MM-dd\", JSON.defaultLocale);\r\n        format.setTimeZone(JSON.defaultTimeZone);\r\n        Assert.assertEquals(\"{\\\"value\\\":\" + JSON.toJSONString(format.format(v.getValue())) + \"}\", text);\r\n    }\r\n\r\n    public void test_codec_no_asm() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(new Date());\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.put(Date.class, new SimpleDateFormatSerializer(\"yyyy-MM-dd\"));\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        SimpleDateFormat format = new SimpleDateFormat(\"yyyy-MM-dd\", JSON.defaultLocale);\r\n        format.setTimeZone(JSON.defaultTimeZone);\r\n        Assert.assertEquals(\"{\\\"value\\\":\" + JSON.toJSONString(format.format(v.getValue())) + \"}\", text);\r\n    }\r\n    \r\n    public void test_codec_asm() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(new Date());\r\n        \r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.put(Date.class, new SimpleDateFormatSerializer(\"yyyy-MM-dd\"));\r\n        mapping.setAsmEnable(true);\r\n        \r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        SimpleDateFormat format = new SimpleDateFormat(\"yyyy-MM-dd\", JSON.defaultLocale);\r\n        format.setTimeZone(JSON.defaultTimeZone);\r\n        Assert.assertEquals(\"{\\\"value\\\":\" + JSON.toJSONString(format.format(v.getValue())) + \"}\", text);\r\n    }\r\n\r\n    public void test_codec_null_asm() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(true);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        mapping.put(Date.class, new SimpleDateFormatSerializer(\"yyyy-MM-dd\"));\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n    \r\n    public void test_codec_null_no_asm() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.put(Date.class, new SimpleDateFormatSerializer(\"yyyy-MM-dd\"));\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullNumberAsZero);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(null, v1.getValue());\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private Date value;\r\n\r\n        public Date getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(Date value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/date/DateFieldTest4.java",
    "content": "package com.alibaba.json.bvt.date;\r\n\r\nimport java.text.SimpleDateFormat;\r\nimport java.util.Date;\r\nimport java.util.Locale;\r\nimport java.util.TimeZone;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.annotation.JSONField;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class DateFieldTest4 extends TestCase {\r\n    protected void setUp() throws Exception {\r\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\r\n        JSON.defaultLocale = Locale.CHINA;\r\n    }\r\n    \r\n    public void test_codec() throws Exception {\r\n        SerializeConfig mapping = new SerializeConfig();\r\n\r\n        V0 v = new V0();\r\n        v.setValue(new Date());\r\n\r\n        String text = JSON.toJSONString(v, mapping);\r\n\r\n        SimpleDateFormat format = new SimpleDateFormat(\"yyyy-MM-dd\", JSON.defaultLocale);\r\n        format.setTimeZone(JSON.defaultTimeZone);\r\n        Assert.assertEquals(\"{\\\"value\\\":\" + JSON.toJSONString(format.format(v.getValue())) + \"}\", text);\r\n    }\r\n\r\n    public void test_codec_no_asm() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(new Date());\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        SimpleDateFormat format = new SimpleDateFormat(\"yyyy-MM-dd\", JSON.defaultLocale);\r\n        format.setTimeZone(JSON.defaultTimeZone);\r\n        Assert.assertEquals(\"{\\\"value\\\":\" + JSON.toJSONString(format.format(v.getValue())) + \"}\", text);\r\n    }\r\n\r\n    public void test_codec_asm() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(new Date());\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(true);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        SimpleDateFormat format = new SimpleDateFormat(\"yyyy-MM-dd\", JSON.defaultLocale);\r\n        format.setTimeZone(JSON.defaultTimeZone);\r\n        Assert.assertEquals(\"{\\\"value\\\":\" + JSON.toJSONString(format.format(v.getValue())) + \"}\", text);\r\n    }\r\n\r\n    public void test_codec_null_asm() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(true);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullNumberAsZero);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(null, v1.getValue());\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private Date value;\r\n\r\n        @JSONField(format = \"yyyy-MM-dd\")\r\n        public Date getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(Date value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/date/DateFieldTest5.java",
    "content": "package com.alibaba.json.bvt.date;\r\n\r\nimport java.util.Date;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.annotation.JSONField;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class DateFieldTest5 extends TestCase {\r\n\r\n    public void test_codec() throws Exception {\r\n        SerializeConfig mapping = new SerializeConfig();\r\n\r\n        V0 v = new V0();\r\n        v.setValue(new Date());\r\n\r\n        String text = JSON.toJSONString(v, mapping);\r\n\r\n        Assert.assertEquals(\"{\\\"value\\\":\" + v.getValue().getTime() + \"}\", text);\r\n    }\r\n\r\n    public void test_codec_no_asm() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(new Date());\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":\" + v.getValue().getTime() + \"}\", text);\r\n    }\r\n\r\n    public void test_codec_asm() throws Exception {\r\n        V0 v = new V0();\r\n        v.setValue(new Date());\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(true);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":\" + v.getValue().getTime() + \"}\", text);\r\n    }\r\n\r\n    public void test_codec_null_asm() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(true);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullNumberAsZero);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(null, v1.getValue());\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private Date value;\r\n\r\n        @JSONField(format = \" \")\r\n        public Date getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(Date value) {\r\n            this.value = value;\r\n        }\r\n\r\n        public boolean is() {\r\n            return true;\r\n        }\r\n\r\n        public boolean isa() {\r\n            return true;\r\n        }\r\n\r\n        public Object get() {\r\n            return true;\r\n        }\r\n\r\n        public Object geta() {\r\n            return true;\r\n        }\r\n\r\n        @JSONField(serialize = false)\r\n        public Object getA() {\r\n            return true;\r\n        }\r\n        \r\n        public static Object getB() {\r\n            return true;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/date/DateFieldTest6.java",
    "content": "package com.alibaba.json.bvt.date;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SimpleDateFormatSerializer;\n\npublic class DateFieldTest6 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n\tpublic void test_0() throws Exception {\n\t\tSerializeConfig mapping = new SerializeConfig();\n\t\tmapping.put(Date.class, new SimpleDateFormatSerializer(\"yyyy-MM-dd\"));\n\n\t\tEntity object = new Entity();\n\t\tobject.setValue(new Date());\n\t\tString text = JSON.toJSONString(object, mapping);\n\t\tSimpleDateFormat format = new SimpleDateFormat(\"yyyy-MM-dd\", JSON.defaultLocale);\n        format.setTimeZone(JSON.defaultTimeZone);\n\t\tAssert.assertEquals(\"{\\\"value\\\":\\\"\" + format.format(object.getValue()) + \"\\\"}\", text);\n\t}\n\n\tpublic static class Entity {\n\t\tprivate Date value;\n\n\t\tpublic Date getValue() {\n\t\t\treturn value;\n\t\t}\n\n\t\tpublic void setValue(Date value) {\n\t\t\tthis.value = value;\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/date/DateFieldTest7.java",
    "content": "package com.alibaba.json.bvt.date;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SimpleDateFormatSerializer;\n\npublic class DateFieldTest7 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n\tpublic void test_0() throws Exception {\n\t\tSerializeConfig config = new SerializeConfig();\n\t\tconfig.put(Date.class, new SimpleDateFormatSerializer(\"yyyy-MM-dd\"));\n\t\tconfig.setAsmEnable(false);\n\n\t\tEntity object = new Entity();\n\t\tobject.setValue(new Date());\n\t\tString text = JSON.toJSONString(object, config);\n\t\tSimpleDateFormat format = new SimpleDateFormat(\"yyyy-MM-dd\", JSON.defaultLocale);\n        format.setTimeZone(JSON.defaultTimeZone);\n\t\tAssert.assertEquals(\"{\\\"value\\\":\\\"\" + format.format(object.getValue()) + \"\\\"}\", text);\n\t}\n\n\tpublic static class Entity {\n\t\tprivate Date value;\n\n\t\tpublic Date getValue() {\n\t\t\treturn value;\n\t\t}\n\n\t\tpublic void setValue(Date value) {\n\t\t\tthis.value = value;\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/date/DateFieldTest8.java",
    "content": "package com.alibaba.json.bvt.date;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic class DateFieldTest8 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_0() throws Exception {\n        Entity object = new Entity();\n        object.setValue(new Date());\n        String text = JSON.toJSONStringWithDateFormat(object, \"yyyy\");\n        SimpleDateFormat format = new SimpleDateFormat(\"yyyy\", JSON.defaultLocale);\n        format.setTimeZone(JSON.defaultTimeZone);\n        Assert.assertEquals(\"{\\\"value\\\":\\\"\" + format.format(object.getValue()) + \"\\\"}\",\n                            text);\n    }\n\n    public void test_1() throws Exception {\n        Entity object = new Entity();\n        object.setValue(new Date());\n        String text = JSON.toJSONString(object);\n        SimpleDateFormat format = new SimpleDateFormat(\"yyyy-MM-dd\", JSON.defaultLocale);\n        format.setTimeZone(JSON.defaultTimeZone);\n        Assert.assertEquals(\"{\\\"value\\\":\\\"\" + format.format(object.getValue()) + \"\\\"}\",\n                            text);\n    }\n\n    public static class Entity {\n\n        @JSONField(format = \"yyyy-MM-dd\")\n        private Date value;\n\n        public Date getValue() {\n            return value;\n        }\n\n        public void setValue(Date value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/date/DateFieldTest9.java",
    "content": "package com.alibaba.json.bvt.date;\n\nimport java.util.Calendar;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class DateFieldTest9 extends TestCase {\n\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n\n    public void test_tw() throws Exception {\n        Entity vo = JSON.parseObject(\"{\\\"date\\\":\\\"2016/05/06\\\"}\", Entity.class);\n\n        Calendar calendar = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n        calendar.setTime(vo.date);\n        Assert.assertEquals(2016, calendar.get(Calendar.YEAR));\n        Assert.assertEquals(4, calendar.get(Calendar.MONTH));\n        Assert.assertEquals(6, calendar.get(Calendar.DAY_OF_MONTH));\n        Assert.assertEquals(0, calendar.get(Calendar.HOUR_OF_DAY));\n        Assert.assertEquals(0, calendar.get(Calendar.MINUTE));\n        Assert.assertEquals(0, calendar.get(Calendar.SECOND));\n        Assert.assertEquals(0, calendar.get(Calendar.MILLISECOND));\n    }\n    \n    public void test_cn() throws Exception {\n        Entity vo = JSON.parseObject(\"{\\\"date\\\":\\\"2016-05-06\\\"}\", Entity.class);\n\n        Calendar calendar = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n        calendar.setTime(vo.date);\n        Assert.assertEquals(2016, calendar.get(Calendar.YEAR));\n        Assert.assertEquals(4, calendar.get(Calendar.MONTH));\n        Assert.assertEquals(6, calendar.get(Calendar.DAY_OF_MONTH));\n        Assert.assertEquals(0, calendar.get(Calendar.HOUR_OF_DAY));\n        Assert.assertEquals(0, calendar.get(Calendar.MINUTE));\n        Assert.assertEquals(0, calendar.get(Calendar.SECOND));\n        Assert.assertEquals(0, calendar.get(Calendar.MILLISECOND));\n    }\n    \n    public void test_cn_1() throws Exception {\n        Entity vo = JSON.parseObject(\"{\\\"date\\\":\\\"2016年5月6日\\\"}\", Entity.class);\n\n        Calendar calendar = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n        calendar.setTime(vo.date);\n        Assert.assertEquals(2016, calendar.get(Calendar.YEAR));\n        Assert.assertEquals(4, calendar.get(Calendar.MONTH));\n        Assert.assertEquals(6, calendar.get(Calendar.DAY_OF_MONTH));\n        Assert.assertEquals(0, calendar.get(Calendar.HOUR_OF_DAY));\n        Assert.assertEquals(0, calendar.get(Calendar.MINUTE));\n        Assert.assertEquals(0, calendar.get(Calendar.SECOND));\n        Assert.assertEquals(0, calendar.get(Calendar.MILLISECOND));\n    }\n    \n    public void test_cn_2() throws Exception {\n        Entity vo = JSON.parseObject(\"{\\\"date\\\":\\\"2016年5月06日\\\"}\", Entity.class);\n\n        Calendar calendar = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n        calendar.setTime(vo.date);\n        Assert.assertEquals(2016, calendar.get(Calendar.YEAR));\n        Assert.assertEquals(4, calendar.get(Calendar.MONTH));\n        Assert.assertEquals(6, calendar.get(Calendar.DAY_OF_MONTH));\n        Assert.assertEquals(0, calendar.get(Calendar.HOUR_OF_DAY));\n        Assert.assertEquals(0, calendar.get(Calendar.MINUTE));\n        Assert.assertEquals(0, calendar.get(Calendar.SECOND));\n        Assert.assertEquals(0, calendar.get(Calendar.MILLISECOND));\n    }\n    \n    public void test_cn_3() throws Exception {\n        Entity vo = JSON.parseObject(\"{\\\"date\\\":\\\"2016年05月6日\\\"}\", Entity.class);\n\n        Calendar calendar = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n        calendar.setTime(vo.date);\n        Assert.assertEquals(2016, calendar.get(Calendar.YEAR));\n        Assert.assertEquals(4, calendar.get(Calendar.MONTH));\n        Assert.assertEquals(6, calendar.get(Calendar.DAY_OF_MONTH));\n        Assert.assertEquals(0, calendar.get(Calendar.HOUR_OF_DAY));\n        Assert.assertEquals(0, calendar.get(Calendar.MINUTE));\n        Assert.assertEquals(0, calendar.get(Calendar.SECOND));\n        Assert.assertEquals(0, calendar.get(Calendar.MILLISECOND));\n    }\n    \n    public void test_cn_4() throws Exception {\n        Entity vo = JSON.parseObject(\"{\\\"date\\\":\\\"2016年05月06日\\\"}\", Entity.class);\n\n        Calendar calendar = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n        calendar.setTime(vo.date);\n        Assert.assertEquals(2016, calendar.get(Calendar.YEAR));\n        Assert.assertEquals(4, calendar.get(Calendar.MONTH));\n        Assert.assertEquals(6, calendar.get(Calendar.DAY_OF_MONTH));\n        Assert.assertEquals(0, calendar.get(Calendar.HOUR_OF_DAY));\n        Assert.assertEquals(0, calendar.get(Calendar.MINUTE));\n        Assert.assertEquals(0, calendar.get(Calendar.SECOND));\n        Assert.assertEquals(0, calendar.get(Calendar.MILLISECOND));\n    }\n    \n    public void test_kr_1() throws Exception {\n        Entity vo = JSON.parseObject(\"{\\\"date\\\":\\\"2016년5월6일\\\"}\", Entity.class);\n\n        Calendar calendar = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n        calendar.setTime(vo.date);\n        Assert.assertEquals(2016, calendar.get(Calendar.YEAR));\n        Assert.assertEquals(4, calendar.get(Calendar.MONTH));\n        Assert.assertEquals(6, calendar.get(Calendar.DAY_OF_MONTH));\n        Assert.assertEquals(0, calendar.get(Calendar.HOUR_OF_DAY));\n        Assert.assertEquals(0, calendar.get(Calendar.MINUTE));\n        Assert.assertEquals(0, calendar.get(Calendar.SECOND));\n        Assert.assertEquals(0, calendar.get(Calendar.MILLISECOND));\n    }\n    \n    public void test_kr_2() throws Exception {\n        Entity vo = JSON.parseObject(\"{\\\"date\\\":\\\"2016년5월06일\\\"}\", Entity.class);\n\n        Calendar calendar = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n        calendar.setTime(vo.date);\n        Assert.assertEquals(2016, calendar.get(Calendar.YEAR));\n        Assert.assertEquals(4, calendar.get(Calendar.MONTH));\n        Assert.assertEquals(6, calendar.get(Calendar.DAY_OF_MONTH));\n        Assert.assertEquals(0, calendar.get(Calendar.HOUR_OF_DAY));\n        Assert.assertEquals(0, calendar.get(Calendar.MINUTE));\n        Assert.assertEquals(0, calendar.get(Calendar.SECOND));\n        Assert.assertEquals(0, calendar.get(Calendar.MILLISECOND));\n    }\n    \n    public void test_kr_3() throws Exception {\n        Entity vo = JSON.parseObject(\"{\\\"date\\\":\\\"2016년05월6일\\\"}\", Entity.class);\n\n        Calendar calendar = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n        calendar.setTime(vo.date);\n        Assert.assertEquals(2016, calendar.get(Calendar.YEAR));\n        Assert.assertEquals(4, calendar.get(Calendar.MONTH));\n        Assert.assertEquals(6, calendar.get(Calendar.DAY_OF_MONTH));\n        Assert.assertEquals(0, calendar.get(Calendar.HOUR_OF_DAY));\n        Assert.assertEquals(0, calendar.get(Calendar.MINUTE));\n        Assert.assertEquals(0, calendar.get(Calendar.SECOND));\n        Assert.assertEquals(0, calendar.get(Calendar.MILLISECOND));\n    }\n    \n    public void test_kr_4() throws Exception {\n        Entity vo = JSON.parseObject(\"{\\\"date\\\":\\\"2016년05월06일\\\"}\", Entity.class);\n\n        Calendar calendar = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n        calendar.setTime(vo.date);\n        Assert.assertEquals(2016, calendar.get(Calendar.YEAR));\n        Assert.assertEquals(4, calendar.get(Calendar.MONTH));\n        Assert.assertEquals(6, calendar.get(Calendar.DAY_OF_MONTH));\n        Assert.assertEquals(0, calendar.get(Calendar.HOUR_OF_DAY));\n        Assert.assertEquals(0, calendar.get(Calendar.MINUTE));\n        Assert.assertEquals(0, calendar.get(Calendar.SECOND));\n        Assert.assertEquals(0, calendar.get(Calendar.MILLISECOND));\n    }\n    \n    public void test_de() throws Exception {\n        Entity vo = JSON.parseObject(\"{\\\"date\\\":\\\"06.05.2016\\\"}\", Entity.class);\n\n        Calendar calendar = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n        calendar.setTime(vo.date);\n        Assert.assertEquals(2016, calendar.get(Calendar.YEAR));\n        Assert.assertEquals(4, calendar.get(Calendar.MONTH));\n        Assert.assertEquals(6, calendar.get(Calendar.DAY_OF_MONTH));\n        Assert.assertEquals(0, calendar.get(Calendar.HOUR_OF_DAY));\n        Assert.assertEquals(0, calendar.get(Calendar.MINUTE));\n        Assert.assertEquals(0, calendar.get(Calendar.SECOND));\n        Assert.assertEquals(0, calendar.get(Calendar.MILLISECOND));\n    }\n    \n    public void test_in() throws Exception {\n        Entity vo = JSON.parseObject(\"{\\\"date\\\":\\\"06-05-2016\\\"}\", Entity.class);\n\n        Calendar calendar = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n        calendar.setTime(vo.date);\n        Assert.assertEquals(2016, calendar.get(Calendar.YEAR));\n        Assert.assertEquals(4, calendar.get(Calendar.MONTH));\n        Assert.assertEquals(6, calendar.get(Calendar.DAY_OF_MONTH));\n        Assert.assertEquals(0, calendar.get(Calendar.HOUR_OF_DAY));\n        Assert.assertEquals(0, calendar.get(Calendar.MINUTE));\n        Assert.assertEquals(0, calendar.get(Calendar.SECOND));\n        Assert.assertEquals(0, calendar.get(Calendar.MILLISECOND));\n    }\n\n    public static class Entity {\n\n        public Date date;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/date/DateFormatPriorityTest.java",
    "content": "package com.alibaba.json.bvt.date;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.fastjson.support.config.FastJsonConfig;\nimport com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\nimport org.springframework.http.HttpHeaders;\nimport org.springframework.http.HttpOutputMessage;\nimport org.springframework.http.MediaType;\n\nimport java.io.ByteArrayOutputStream;\nimport java.io.IOException;\nimport java.io.OutputStream;\nimport java.util.Calendar;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\n\npublic class DateFormatPriorityTest extends TestCase {\n    Calendar calendar;\n\n    protected void setUp() {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n\n        calendar = Calendar.getInstance(JSON.defaultTimeZone);\n        calendar.set(1995, Calendar.OCTOBER, 26);\n    }\n\n    public void test_for_fastJsonConfig() throws IOException {\n        FastJsonConfig config = new FastJsonConfig();\n        config.setDateFormat(\"yyyy-MM.dd\");\n\n        FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();\n        converter.setFastJsonConfig(config);\n\n        converter.canRead(VO.class, MediaType.APPLICATION_JSON_UTF8);\n        converter.canWrite(VO.class, MediaType.APPLICATION_JSON_UTF8);\n\n        final ByteArrayOutputStream byteOut = new ByteArrayOutputStream();\n        HttpOutputMessage out = new HttpOutputMessage() {\n            public HttpHeaders getHeaders() {\n                return new HttpHeaders() {\n                    private static final long serialVersionUID = 1L;\n\n                    @Override\n                    public MediaType getContentType() {\n                        return MediaType.APPLICATION_JSON;\n                    }\n                };\n            }\n\n            public OutputStream getBody() throws IOException {\n                return byteOut;\n            }\n        };\n\n        VO vo = new VO();\n        vo.setDate(calendar.getTime());\n        converter.write(vo, VO.class, MediaType.APPLICATION_JSON_UTF8, out);\n\n        byte[] bytes = byteOut.toByteArray();\n        String jsonString = new String(bytes, \"UTF-8\");\n\n        Assert.assertEquals(\"{\\\"date\\\":\\\"1995-10.26\\\"}\", jsonString);\n    }\n\n    public void test_for_toJSONStringWithDateFormat() {\n        VO vo = new VO();\n        vo.setDate(calendar.getTime());\n\n        String jsonString = JSON.toJSONStringWithDateFormat(vo, \"yyyy.MM.dd\");\n\n        assertEquals(\"{\\\"date\\\":\\\"1995.10.26\\\"}\", jsonString);\n    }\n\n    public void test_for_Annotation() {\n        VO2 vo2 = new VO2();\n        vo2.setDate(calendar.getTime());\n\n        String jsonString = JSON.toJSONString(vo2);\n\n        assertEquals(\"{\\\"date\\\":\\\"1995.10-26\\\"}\", jsonString);\n    }\n\n    public void test_for_DEFFAULT_DATE_FORMAT() {\n        String defaultDateFormat = JSON.DEFFAULT_DATE_FORMAT;\n\n        JSON.DEFFAULT_DATE_FORMAT = \"MM-dd\";\n        VO vo = new VO();\n        vo.setDate(calendar.getTime());\n\n        String jsonString = JSON.toJSONString(vo, SerializerFeature.WriteDateUseDateFormat);\n        JSON.DEFFAULT_DATE_FORMAT = defaultDateFormat;\n\n        assertEquals(\"{\\\"date\\\":\\\"10-26\\\"}\", jsonString);\n    }\n\n    //Annotation + FastJsonConfig （Annotation优先)\n    public void test_priority_01() throws Exception {\n        //FastJsonConfig\n        FastJsonConfig config = new FastJsonConfig();\n        config.setDateFormat(\"yyyy-MM.dd\");\n        FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();\n        converter.setFastJsonConfig(config);\n        converter.canRead(VO.class, MediaType.APPLICATION_JSON_UTF8);\n        converter.canWrite(VO.class, MediaType.APPLICATION_JSON_UTF8);\n        final ByteArrayOutputStream byteOut = new ByteArrayOutputStream();\n        HttpOutputMessage out = new HttpOutputMessage() {\n            public HttpHeaders getHeaders() {\n                return new HttpHeaders() {\n                    private static final long serialVersionUID = 1L;\n\n                    @Override\n                    public MediaType getContentType() {\n                        return MediaType.APPLICATION_JSON;\n                    }\n                };\n            }\n            public OutputStream getBody() throws IOException {\n                return byteOut;\n            }\n        };\n\n        VO2 vo = new VO2();\n        vo.setDate(calendar.getTime());\n        converter.write(vo, VO.class, MediaType.APPLICATION_JSON_UTF8, out);\n\n        byte[] bytes = byteOut.toByteArray();\n        String jsonString = new String(bytes, \"UTF-8\");\n\n        assertEquals(\"{\\\"date\\\":\\\"1995.10-26\\\"}\", jsonString);\n    }\n\n    //toJSONStringWithDateFormat + Annotation (toJSONStringWithDateFormat优先)\n    public void test_priority_02() throws Exception {\n        VO2 vo = new VO2();\n        vo.setDate(calendar.getTime());\n\n        String jsonString = JSON.toJSONStringWithDateFormat(vo, \"yyyy.MM.dd\");\n\n        assertEquals(\"{\\\"date\\\":\\\"1995.10.26\\\"}\", jsonString);\n    }\n\n    //Annotation + DEFFAULT_DATE_FORMAT (Annotation优先)\n    public void test_priority_03() throws Exception {\n        String defaultDateFormat = JSON.DEFFAULT_DATE_FORMAT;\n\n        JSON.DEFFAULT_DATE_FORMAT = \"MM-dd\";\n        VO2 vo = new VO2();\n        vo.setDate(calendar.getTime());\n\n        String jsonString = JSON.toJSONString(vo, SerializerFeature.WriteDateUseDateFormat);\n        JSON.DEFFAULT_DATE_FORMAT = defaultDateFormat;\n\n        assertEquals(\"{\\\"date\\\":\\\"1995.10-26\\\"}\", jsonString);\n    }\n\n    public static class VO {\n        private Date date;\n\n        public Date getDate() {\n            return date;\n        }\n\n        public void setDate(Date date) {\n            this.date = date;\n        }\n    }\n\n    public static class VO2 {\n        @JSONField(format = \"yyyy.MM-dd\")\n        private Date date;\n\n        public Date getDate() {\n            return date;\n        }\n\n        public void setDate(Date date) {\n            this.date = date;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/date/DateNewTest.java",
    "content": "package com.alibaba.json.bvt.date;\n\nimport java.util.Date;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class DateNewTest extends TestCase {\n    public void test_date() throws Exception {\n        Assert.assertEquals(1324138987429L, ((Date) JSON.parse(\"new Date(1324138987429)\")).getTime());\n        Assert.assertEquals(1324138987429L, ((Date) JSON.parse(\"new \\n\\t\\r\\f\\bDate(1324138987429)\")).getTime());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/date/DateTest.java",
    "content": "package com.alibaba.json.bvt.date;\n\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class DateTest extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n\n    public void test_date() throws Exception {\n        long millis = 1324138987429L;\n        Date date = new Date(millis);\n\n        Assert.assertEquals(\"1324138987429\", JSON.toJSONString(date));\n        Assert.assertEquals(\"new Date(1324138987429)\", JSON.toJSONString(date, SerializerFeature.WriteClassName));\n\n        Assert.assertEquals(\"\\\"2011-12-18 00:23:07\\\"\",\n                            JSON.toJSONString(date, SerializerFeature.WriteDateUseDateFormat));\n        Assert.assertEquals(\"\\\"2011-12-18 00:23:07.429\\\"\",\n                            JSON.toJSONStringWithDateFormat(date, \"yyyy-MM-dd HH:mm:ss.SSS\"));\n        Assert.assertEquals(\"'2011-12-18 00:23:07.429'\",\n                            JSON.toJSONStringWithDateFormat(date, \"yyyy-MM-dd HH:mm:ss.SSS\",\n                                                            SerializerFeature.UseSingleQuotes));\n    }\n\n    public void test_parse() throws Exception {\n        Date date = JSON.parseObject(\"\\\"2018-10-12 09:48:22 +0800\\\"\", Date.class);\n        assertEquals(1539308902000L, date.getTime());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/date/DateTest1.java",
    "content": "package com.alibaba.json.bvt.date;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * Created by wenshao on 16/8/23.\n */\npublic class DateTest1 extends TestCase {\n    public void test_date() throws Exception {\n        Model model = new Model();\n        model.date = new Date(1471939192128L);\n\n        String text = JSON.toJSONString(model);\n        Assert.assertEquals(\"{\\\"date\\\":1471939192128}\", text);\n\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"date\", new Date(1471939192128L));\n\n        String text2 = JSON.toJSONString(map);\n        Assert.assertEquals(\"{\\\"date\\\":1471939192128}\", text);\n    }\n\n    public static class Model {\n        public Date date;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/date/DateTest2.java",
    "content": "package com.alibaba.json.bvt.date;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.Date;\nimport java.util.TimeZone;\n\npublic class DateTest2 extends TestCase {\n    private TimeZone timeZone;\n    protected void setUp() throws Exception {\n        timeZone = JSON.defaultTimeZone;\n    }\n\n    protected void tearDown() throws Exception {\n        JSON.defaultTimeZone = timeZone;\n    }\n\n    public void test_date() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"America/Chicago\");\n        Date date = new Date(1531928656055L);\n        TestBean bean = new TestBean();\n        bean.setDate(date);\n\n        String iso = JSON.toJSONString(bean, SerializerFeature.UseISO8601DateFormat);\n        assertEquals(\"{\\\"date\\\":\\\"2018-07-18T10:44:16.055-05:00\\\"}\", iso);\n    }\n\n    public static class TestBean {\n        private Date date;\n\n        public Date getDate() {\n            return date;\n        }\n\n        public void setDate(Date date) {\n            this.date = date;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/date/DateTest_dotnet.java",
    "content": "package com.alibaba.json.bvt.date;\n\nimport java.util.Date;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class DateTest_dotnet extends TestCase {\n    public void test_date() throws Exception {\n        String text = \"{\\\"date\\\":\\\"/Date(1461081600000)/\\\"}\";\n        \n        Model model = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(1461081600000L, model.date.getTime());\n    }\n    \n    public static class Model {\n        public Date date;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/date/DateTest_dotnet_1.java",
    "content": "package com.alibaba.json.bvt.date;\n\nimport java.util.Date;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class DateTest_dotnet_1 extends TestCase {\n\n    public void test_date() throws Exception {\n        String text = \"{\\\"date\\\":\\\"/Date(1461081600000)/\\\"}\";\n\n        Model model = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(1461081600000L, model.date.getTime());\n    }\n\n    public static class Model {\n\n        private Date date;\n\n        public Date getDate() {\n            return date;\n        }\n\n        public void setDate(Date date) {\n            this.date = date;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/date/DateTest_dotnet_2.java",
    "content": "package com.alibaba.json.bvt.date;\n\nimport java.util.Date;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class DateTest_dotnet_2 extends TestCase {\n\n    public void test_date() throws Exception {\n        String text = \"{\\\"date\\\":\\\"/Date(1461081600000+0500)/\\\"}\";\n\n        Model model = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(1461081600000L, model.date.getTime());\n    }\n\n    public static class Model {\n\n        private Date date;\n\n        public Date getDate() {\n            return date;\n        }\n\n        public void setDate(Date date) {\n            this.date = date;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/date/DateTest_dotnet_3.java",
    "content": "package com.alibaba.json.bvt.date;\n\nimport java.util.Date;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class DateTest_dotnet_3 extends TestCase {\n\n    public void test_date() throws Exception {\n        String text = \"{\\\"date\\\":\\\"/Date(1461081600321+0500)/\\\"}\";\n\n        Model model = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(1461081600321L, model.date.getTime());\n    }\n\n    private static class Model {\n\n        private Date date;\n\n        public Date getDate() {\n            return date;\n        }\n\n        public void setDate(Date date) {\n            this.date = date;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/date/DateTest_dotnet_4.java",
    "content": "package com.alibaba.json.bvt.date;\n\nimport java.util.Date;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class DateTest_dotnet_4 extends TestCase {\n\n    public void test_date() throws Exception {\n        String text = \"{\\\"date\\\":\\\"/Date(1461081600321+5000)/\\\"}\";\n\n        JSONObject model = JSON.parseObject(text);\n        Assert.assertEquals(1461081600321L, ((java.util.Date) model.getObject(\"date\", java.util.Date.class)).getTime());\n    }\n\n    private static class Model {\n\n        private Date date;\n\n        public Date getDate() {\n            return date;\n        }\n\n        public void setDate(Date date) {\n            this.date = date;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/date/DateTest_dotnet_5.java",
    "content": "package com.alibaba.json.bvt.date;\n\nimport java.util.Date;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class DateTest_dotnet_5 extends TestCase {\n\n    public void test_date() throws Exception {\n        String text = \"{\\\"date\\\":\\\"/Date(1461081600321)/\\\"}\";\n\n        JSONObject model = JSON.parseObject(text);\n        Assert.assertEquals(1461081600321L, ((java.util.Date) model.getObject(\"date\", java.util.Date.class)).getTime());\n    }\n\n    private static class Model {\n\n        private Date date;\n\n        public Date getDate() {\n            return date;\n        }\n\n        public void setDate(Date date) {\n            this.date = date;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/date/DateTest_error.java",
    "content": "package com.alibaba.json.bvt.date;\n\nimport java.util.Date;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class DateTest_error extends TestCase {\n\n    \n    public void test_error() throws Exception {\n        String text = \"{\\\"value\\\":true}\";\n\n        Exception error = null;\n        try {\n            JSON.parseObject(text, Date.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    \n    public void test_error_1() throws Exception {\n        String text = \"{1:true}\";\n\n        Exception error = null;\n        try {\n            JSON.parseObject(text, Date.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_2() throws Exception {\n        String text = \"{\\\"@type\\\":\\\"java.util.Date\\\",\\\"value\\\":true}\";\n\n        Exception error = null;\n        try {\n            JSON.parseObject(text, Date.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_3() throws Exception {\n        String text = \"{\\\"@type\\\":\\\"java.util.Date\\\",\\\"value\\\":true}\";\n\n        Exception error = null;\n        try {\n            JSON.parseObject(text);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_4() throws Exception {\n        String text = \"{\\\"@type\\\":\\\"java.util.Date\\\",1:true}\";\n\n        Exception error = null;\n        try {\n            JSON.parseObject(text);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_5() throws Exception {\n        String text = \"\\\"xxxxxxxxx\\\"\";\n\n        Exception error = null;\n        try {\n            JSON.parseObject(text, Date.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/date/DateTest_tz.java",
    "content": "package com.alibaba.json.bvt.date;\n\nimport java.io.StringReader;\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONReader;\n\nimport junit.framework.TestCase;\n\npublic class DateTest_tz extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_codec() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"{\\\"value\\\":\\\"2016-04-29\\\"}\"));\n        reader.setLocale(Locale.CHINA);\n        reader.setTimzeZone(TimeZone.getTimeZone(\"Asia/Shanghai\"));\n        \n        Model model = reader.readObject(Model.class);\n        Assert.assertNotNull(model.value);\n        \n        SimpleDateFormat format = new SimpleDateFormat(\"yyyy-MM-dd\", Locale.CHINA);\n        format.setTimeZone(TimeZone.getTimeZone(\"Asia/Shanghai\"));\n        Date date = format.parse(\"2016-04-29\");\n        Assert.assertEquals(date.getTime(), model.value.getTime());\n        \n        Assert.assertEquals(TimeZone.getTimeZone(\"Asia/Shanghai\"), reader.getTimzeZone());\n        Assert.assertEquals(Locale.CHINA, reader.getLocal());\n        \n        reader.close();\n    }\n    \n    public static class Model {\n        public Date value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/date/XMLGregorianCalendarTest.java",
    "content": "package com.alibaba.json.bvt.date;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport javax.xml.datatype.DatatypeFactory;\nimport javax.xml.datatype.XMLGregorianCalendar;\nimport java.util.GregorianCalendar;\n\npublic class XMLGregorianCalendarTest extends TestCase {\n    public void test_for_issue() throws Exception {\n        GregorianCalendar gregorianCalendar = (GregorianCalendar) GregorianCalendar.getInstance();\n\n        XMLGregorianCalendar calendar = DatatypeFactory.newInstance().newXMLGregorianCalendar(gregorianCalendar);\n        \n        String text = JSON.toJSONString(calendar);\n        Assert.assertEquals(Long.toString(gregorianCalendar.getTimeInMillis()), text);\n\n        XMLGregorianCalendar calendar1 = JSON.parseObject(text, XMLGregorianCalendar.class);\n\n        assertEquals(calendar.toGregorianCalendar().getTimeInMillis(), calendar1.toGregorianCalendar().getTimeInMillis());\n\n        JSONObject jsonObject = new JSONObject();\n        jsonObject.put(\"calendar\", calendar);\n\n        String json = JSON.toJSONString(jsonObject);\n\n        Model model = JSON.parseObject(json).toJavaObject(Model.class);\n\n        assertEquals(calendar.toGregorianCalendar().getTimeInMillis(), model.calendar.toGregorianCalendar().getTimeInMillis());\n    }\n\n    public static class Model {\n        public XMLGregorianCalendar calendar;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/dubbo/TestForDubbo.java",
    "content": "package com.alibaba.json.bvt.dubbo;\n\nimport java.util.ArrayList;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.json.test.dubbo.FullAddress;\nimport com.alibaba.json.test.dubbo.HelloServiceImpl;\nimport com.alibaba.json.test.dubbo.Person;\nimport com.alibaba.json.test.dubbo.PersonInfo;\nimport com.alibaba.json.test.dubbo.PersonStatus;\nimport com.alibaba.json.test.dubbo.Phone;\nimport com.alibaba.json.test.dubbo.Tiger;\nimport com.alibaba.json.test.dubbo.Tigers;\n\npublic class TestForDubbo extends TestCase {\n\n    static Person            person;\n\n    static {\n        person = new Person();\n        person.setPersonId(\"superman111\");\n        person.setLoginName(\"superman\");\n        person.setEmail(\"sm@1.com\");\n        person.setPenName(\"pname\");\n        person.setStatus(PersonStatus.ENABLED);\n\n        ArrayList<Phone> phones = new ArrayList<Phone>();\n        Phone phone1 = new Phone(\"86\", \"0571\", \"87654321\", \"001\");\n        Phone phone2 = new Phone(\"86\", \"0571\", \"87654322\", \"002\");\n        phones.add(phone1);\n        phones.add(phone2);\n        PersonInfo pi = new PersonInfo();\n        pi.setPhones(phones);\n        Phone fax = new Phone(\"86\", \"0571\", \"87654321\", null);\n        pi.setFax(fax);\n        FullAddress addr = new FullAddress(\"CN\", \"zj\", \"3480\", \"wensanlu\", \"315000\");\n        pi.setFullAddress(addr);\n        pi.setMobileNo(\"13584652131\");\n        pi.setMale(true);\n        pi.setDepartment(\"b2b\");\n        pi.setHomepageUrl(\"www.capcom.com\");\n        pi.setJobTitle(\"qa\");\n        pi.setName(\"superman\");\n        person.setInfoProfile(pi);\n    }\n\n    private HelloServiceImpl helloService = new HelloServiceImpl();\n\n    public void f_testParamType4() {\n        Tiger tiger = new Tiger();\n        tiger.setTigerName(\"东北虎\");\n        tiger.setTigerSex(true);\n        Tigers tigers = helloService.eatTiger(tiger);\n\n        String text = JSON.toJSONString(tigers, SerializerFeature.WriteClassName);\n        System.out.println(text);\n\n        Tigers tigers2 = JSON.parseObject(text, Tigers.class);\n\n        Assert.assertEquals(text, JSON.toJSONString(tigers2, SerializerFeature.WriteClassName));\n    }\n\n    public void testPerson() {\n        Person p = helloService.showPerson(person);\n        String text = JSON.toJSONString(p, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        \n        Person result = JSON.parseObject(text, Person.class);\n        \n        assertEquals(result.getInfoProfile().getPhones().get(0).getArea(),\n                     person.getInfoProfile().getPhones().get(0).getArea());\n        assertEquals(result.getInfoProfile().getPhones().get(0).getCountry(),\n                     person.getInfoProfile().getPhones().get(0).getCountry());\n        assertEquals(result.getInfoProfile().getPhones().get(0).getExtensionNumber(),\n                     person.getInfoProfile().getPhones().get(0).getExtensionNumber());\n        assertEquals(result.getInfoProfile().getPhones().get(0).getNumber(),\n                     person.getInfoProfile().getPhones().get(0).getNumber());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/emoji/EmojiTest0.java",
    "content": "package com.alibaba.json.bvt.emoji;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.io.ByteArrayOutputStream;\n\n/**\n * Created by wenshao on 13/04/2017.\n */\npublic class EmojiTest0 extends TestCase {\n    public void test_for_emoji() throws Exception {\n        Model model = new Model();\n        model.value = \"An 😀awesome 😃string with a few 😉emojis!\";\n\n        ByteArrayOutputStream out = new ByteArrayOutputStream();\n\n        JSON.writeJSONString(out, model);\n\n        String text = new String(out.toByteArray(), \"UTF-8\");\n        System.out.println(text);\n    }\n\n    public static class Model {\n        public String value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/feature/DisableFieldSmartMatchTest.java",
    "content": "package com.alibaba.json.bvt.feature;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 17/03/2017.\n */\npublic class DisableFieldSmartMatchTest extends TestCase {\n    public void test_feature() throws Exception {\n        assertEquals(123, JSON.parseObject(\"{\\\"person_id\\\":123}\", Model_for_disableFieldSmartMatchMask.class).personId);\n        assertEquals(0, JSON.parseObject(\"{\\\"person_id\\\":123}\", Model_for_disableFieldSmartMatchMask.class, Feature.DisableFieldSmartMatch).personId);\n        assertEquals(123, JSON.parseObject(\"{\\\"personId\\\":123}\", Model_for_disableFieldSmartMatchMask.class, Feature.DisableFieldSmartMatch).personId);\n    }\n\n    public void test_feature2() throws Exception {\n        assertEquals(0, JSON.parseObject(\"{\\\"person_id\\\":123}\", Model_for_disableFieldSmartMatchMask2.class).personId);\n        assertEquals(123, JSON.parseObject(\"{\\\"personId\\\":123}\", Model_for_disableFieldSmartMatchMask2.class).personId);\n    }\n\n    public static class Model_for_disableFieldSmartMatchMask {\n        public int personId;\n    }\n\n    @JSONType(parseFeatures = Feature.DisableFieldSmartMatch)\n    public static class Model_for_disableFieldSmartMatchMask2 {\n        public int personId;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/feature/DisableFieldSmartMatchTest_2.java",
    "content": "package com.alibaba.json.bvt.feature;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 17/03/2017.\n */\npublic class DisableFieldSmartMatchTest_2 extends TestCase {\n    public void test_feature() throws Exception {\n        assertEquals(123, JSON.parseObject(\"{\\\"person_id\\\":123}\", Model_for_disableFieldSmartMatchMask.class).personId);\n        assertEquals(0, JSON.parseObject(\"{\\\"person_id\\\":123}\", Model_for_disableFieldSmartMatchMask.class, Feature.DisableFieldSmartMatch).personId);\n        assertEquals(123, JSON.parseObject(\"{\\\"personId\\\":123}\", Model_for_disableFieldSmartMatchMask.class, Feature.DisableFieldSmartMatch).personId);\n    }\n\n    public void test_feature2() throws Exception {\n        assertEquals(0, JSON.parseObject(\"{\\\"person_id\\\":123}\", Model_for_disableFieldSmartMatchMask2.class).personId);\n        assertEquals(123, JSON.parseObject(\"{\\\"personId\\\":123}\", Model_for_disableFieldSmartMatchMask2.class).personId);\n    }\n\n    public static class Model_for_disableFieldSmartMatchMask {\n        public int personId;\n    }\n\n    public static class Model_for_disableFieldSmartMatchMask2 {\n        @JSONField(parseFeatures = Feature.DisableFieldSmartMatch)\n        public int personId;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/feature/FeatureTest_8.java",
    "content": "package com.alibaba.json.bvt.feature;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class FeatureTest_8 extends TestCase {\n    public void test_get_obj() throws Exception {\n        VO value = JSON.parseObject(\"{}\", VO.class, Feature.InitStringFieldAsEmpty);\n        Assert.assertEquals(\"\", value.id);\n    }\n\n    private static class VO {\n        public String id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/feature/FeaturesTest.java",
    "content": "package com.alibaba.json.bvt.feature;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class FeaturesTest extends TestCase {\n\n    public void test_0() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.setAsmEnable(false);\n        \n        String text = JSON.toJSONString(new Entity(), config);\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\n    }\n    \n    public void test_1() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.setAsmEnable(true);\n        \n        String text = JSON.toJSONString(new Entity(), config);\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\n    }\n\n    public static class Entity {\n\n        private Object value;\n\n        @JSONField(serialzeFeatures = { SerializerFeature.WriteMapNullValue })\n        public Object getValue() {\n            return value;\n        }\n\n        public void setValue(Object value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/feature/FeaturesTest2.java",
    "content": "package com.alibaba.json.bvt.feature;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class FeaturesTest2 extends TestCase {\n\n    public void test_0() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.setAsmEnable(false);\n        \n        String text = JSON.toJSONString(new Entity(), config);\n        Assert.assertEquals(\"{\\\"value\\\":0}\", text);\n    }\n    \n    public void test_1() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.setAsmEnable(true);\n        \n        String text = JSON.toJSONString(new Entity(), config);\n        Assert.assertEquals(\"{\\\"value\\\":0}\", text);\n    }\n\n    private static class Entity {\n\n        private Integer value;\n\n        @JSONField(serialzeFeatures = { SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullNumberAsZero })\n        public Integer getValue() {\n            return value;\n        }\n\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/feature/FeaturesTest3.java",
    "content": "package com.alibaba.json.bvt.feature;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class FeaturesTest3 extends TestCase {\n\n    public void test_0() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.setAsmEnable(false);\n        \n        String text = JSON.toJSONString(new Entity(), config);\n        Assert.assertEquals(\"{\\\"value\\\":0}\", text);\n    }\n    \n    public void test_1() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.setAsmEnable(true);\n        \n        String text = JSON.toJSONString(new Entity(), config);\n        Assert.assertEquals(\"{\\\"value\\\":0}\", text);\n    }\n\n    public static class Entity {\n\n        private Integer value;\n\n        @JSONField(serialzeFeatures = { SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullNumberAsZero })\n        public Integer getValue() {\n            return value;\n        }\n\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/feature/FeaturesTest4.java",
    "content": "package com.alibaba.json.bvt.feature;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class FeaturesTest4 extends TestCase {\n\n    public void test_0() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.setAsmEnable(false);\n        \n        String text = JSON.toJSONString(new Entity(), config);\n        Assert.assertEquals(\"{\\\"value\\\":\\\"\\\"}\", text);\n    }\n    \n    public void test_1() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.setAsmEnable(true);\n        \n        String text = JSON.toJSONString(new Entity(), config);\n        Assert.assertEquals(\"{\\\"value\\\":\\\"\\\"}\", text);\n    }\n\n    public static class Entity {\n\n        private String value;\n\n        @JSONField(serialzeFeatures = { SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty })\n        public String getValue() {\n            return value;\n        }\n\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/feature/FeaturesTest5.java",
    "content": "package com.alibaba.json.bvt.feature;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class FeaturesTest5 extends TestCase {\n\n    public void test_0() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.setAsmEnable(false);\n        \n        String text = JSON.toJSONString(new Entity(), config);\n        Assert.assertEquals(\"{\\\"value\\\":false}\", text);\n    }\n    \n    public void test_1() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.setAsmEnable(true);\n        \n        String text = JSON.toJSONString(new Entity(), config);\n        Assert.assertEquals(\"{\\\"value\\\":false}\", text);\n    }\n\n    public static class Entity {\n\n        private Boolean value;\n\n        @JSONField(serialzeFeatures = { SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullBooleanAsFalse })\n        public Boolean getValue() {\n            return value;\n        }\n\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/feature/FeaturesTest5_1.java",
    "content": "package com.alibaba.json.bvt.feature;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\npublic class FeaturesTest5_1 extends TestCase {\n\n    public void test_0() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.setAsmEnable(false);\n        \n        String text = JSON.toJSONString(new Entity(), config);\n        Assert.assertEquals(\"{\\\"value\\\":false}\", text);\n    }\n    \n    public void test_1() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.setAsmEnable(true);\n        \n        String text = JSON.toJSONString(new Entity(), config);\n        Assert.assertEquals(\"{\\\"value\\\":false}\", text);\n    }\n\n    public static class Entity {\n\n        private Boolean value;\n\n        @JSONField(serialzeFeatures = { SerializerFeature.WriteNullBooleanAsFalse })\n        public Boolean getValue() {\n            return value;\n        }\n\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/feature/FeaturesTest6.java",
    "content": "package com.alibaba.json.bvt.feature;\n\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class FeaturesTest6 extends TestCase {\n\n    public void test_0() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.setAsmEnable(false);\n        \n        String text = JSON.toJSONString(new Entity(), config);\n        Assert.assertEquals(\"{\\\"value\\\":[]}\", text);\n    }\n    \n    public void test_1() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.setAsmEnable(true);\n        \n        String text = JSON.toJSONString(new Entity(), config);\n        Assert.assertEquals(\"{\\\"value\\\":[]}\", text);\n    }\n\n    public static class Entity {\n\n        private List value;\n\n        @JSONField(serialzeFeatures = { SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty })\n        public List getValue() {\n            return value;\n        }\n\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/feature/FeaturesTest7.java",
    "content": "package com.alibaba.json.bvt.feature;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class FeaturesTest7 extends TestCase {\n\n    public void test_0() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.setAsmEnable(false);\n        \n        String text = JSON.toJSONString(new Entity(), config);\n        Assert.assertEquals(\"{\\\"value\\\":\\\"SECONDS\\\"}\", text);\n    }\n    \n    public void test_1() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.setAsmEnable(true);\n        \n        String text = JSON.toJSONString(new Entity(), config);\n        Assert.assertEquals(\"{\\\"value\\\":\\\"SECONDS\\\"}\", text);\n    }\n\n    public static class Entity {\n\n        private TimeUnit value = TimeUnit.SECONDS;\n\n        @JSONField(serialzeFeatures = { SerializerFeature.WriteEnumUsingToString })\n        public TimeUnit getValue() {\n            return value;\n        }\n\n\n    }\n    \n    public static enum TimeUnit {\n        SECONDS, MINUTES\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/feature/IgnoreErrorGetterTest.java",
    "content": "package com.alibaba.json.bvt.feature;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class IgnoreErrorGetterTest extends TestCase {\n\n    public void test_feature() throws Exception {\n        Model model = new Model();\n        model.id = 1001;\n        String text = JSON.toJSONString(model, SerializerFeature.IgnoreErrorGetter);\n        Assert.assertEquals(\"{\\\"id\\\":1001}\", text);\n    }\n\n    public static class Model {\n        public int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/feature/IgnoreErrorGetterTest_field.java",
    "content": "package com.alibaba.json.bvt.feature;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class IgnoreErrorGetterTest_field extends TestCase {\n\n    public void test_feature() throws Exception {\n        Model model = new Model();\n        model.setId(1001);\n        String text = JSON.toJSONString(model, SerializerFeature.IgnoreErrorGetter);\n        Assert.assertEquals(\"{\\\"id\\\":1001}\", text);\n    }\n\n    public static class Model {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            throw new IllegalStateException();\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/feature/IgnoreErrorGetterTest_private.java",
    "content": "package com.alibaba.json.bvt.feature;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class IgnoreErrorGetterTest_private extends TestCase {\n\n    public void test_feature() throws Exception {\n        Model model = new Model();\n        model.setId(1001);\n        String text = JSON.toJSONString(model, SerializerFeature.IgnoreErrorGetter);\n        Assert.assertEquals(\"{\\\"id\\\":1001}\", text);\n    }\n\n    private static class Model {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            throw new IllegalStateException();\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/feature/InitStringFieldAsEmptyTest.java",
    "content": "package com.alibaba.json.bvt.feature;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class InitStringFieldAsEmptyTest extends TestCase {\n    public void test_0() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"{}\");\n        parser.config(Feature.InitStringFieldAsEmpty, true);\n        Model model = parser.parseObject(Model.class);\n        Assert.assertEquals(\"\", model.value);\n        parser.close();\n    }\n    \n    public void test_1() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"{}\");\n        parser.config(Feature.InitStringFieldAsEmpty, false);\n        Model model = parser.parseObject(Model.class);\n        Assert.assertNull(null, model.value);\n        parser.close();\n    }\n    \n    public static class Model {\n        public Model() {\n            \n        }\n        public String value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/feature/WriteNullStringAsEmptyTest.java",
    "content": "package com.alibaba.json.bvt.feature;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.PropertyFilter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 14/03/2017.\n */\npublic class WriteNullStringAsEmptyTest extends TestCase {\n    public void test_features() throws Exception {\n        PropertyFilter filter = new PropertyFilter() {\n\n            public boolean apply(Object object, String name, Object value) {\n                if (value == null && object instanceof Model && \"id\".equals(name)) {\n                    return false;\n                }\n                return true;\n            }\n        };\n\n        Model model = new Model();\n        String json = JSON.toJSONString(model, filter, SerializerFeature.WriteNullStringAsEmpty);\n        System.out.println(json);\n    }\n\n\n    private static class Model {\n        @JSONField(serialzeFeatures = SerializerFeature.WriteNullStringAsEmpty)\n        public String id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/feature/WriteNullStringAsEmptyTest2.java",
    "content": "package com.alibaba.json.bvt.feature;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.PropertyFilter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 14/03/2017.\n */\npublic class WriteNullStringAsEmptyTest2 extends TestCase {\n    public void test_features() throws Exception {\n        Model model = new Model();\n        String json = JSON.toJSONString(model);\n        assertEquals(\"{\\\"id\\\":\\\"\\\"}\", json);\n    }\n\n\n    public static class Model {\n        @JSONField(serialzeFeatures = SerializerFeature.WriteNullStringAsEmpty)\n        public String id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/fullSer/EmtpyLinkedHashMapTest.java",
    "content": "package com.alibaba.json.bvt.fullSer;\n\nimport java.util.Map;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class EmtpyLinkedHashMapTest extends TestCase {\n    public void test_0() throws Exception {\n        Map map = (Map) JSON.parseObject(\"{\\\"@type\\\":\\\"java.util.LinkedHashMap\\\"}\", Object.class);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/fullSer/LongTest.java",
    "content": "package com.alibaba.json.bvt.fullSer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\npublic class LongTest extends TestCase {\n\n    public void test_0() throws Exception {\n        \n        VO vo = new VO();\n        vo.setValue(33L);\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        \n        Assert.assertEquals(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.fullSer.LongTest$VO\\\",\\\"value\\\":33}\", text);\n    }\n\n    public static class VO {\n\n        private Long value;\n\n        public Long getValue() {\n            return value;\n        }\n\n        public void setValue(Long value) {\n            this.value = value;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/fullSer/ToJavaObjectTest.java",
    "content": "package com.alibaba.json.bvt.fullSer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 04/02/2017.\n */\npublic class ToJavaObjectTest extends TestCase {\n    public void test_for_toJavaObject() throws Exception {\n        JSONObject obj = JSON.parseObject(\"{\\\"id\\\":123}\");\n        Model model = obj.toJavaObject(Model.class);\n        assertEquals(123, model.id);\n    }\n\n    public static class Model {\n        public int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/fullSer/ToJavaObjectTest2.java",
    "content": "package com.alibaba.json.bvt.fullSer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\n\nimport java.util.List;\nimport java.util.Map;\n\n/**\n * Created by wenshao on 04/02/2017.\n */\npublic class ToJavaObjectTest2 extends TestCase {\n    public void test_for_toJavaObject() throws Exception {\n        JSONObject obj = JSON.parseObject(\"{\\\"model\\\":{\\\"id\\\":123}}\");\n        Map<String, Model> models = obj.toJavaObject(new TypeReference<Map<String, Model>>(){}.getType());\n        assertEquals(123, models.get(\"model\").id);\n    }\n\n    public static class Model {\n        public int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/fullSer/get_set_Test.java",
    "content": "package com.alibaba.json.bvt.fullSer;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class get_set_Test extends TestCase {\n\n    public void test_codec() throws Exception {\n        VO vo = new VO();\n        vo.set_id(123);\n\n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"id\\\":123}\", text);\n        VO vo1 = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(123, vo1.get_id());\n    }\n\n    public static class VO {\n\n        private int id;\n\n        public int get_id() {\n            return id;\n        }\n\n        public void set_id(int id) {\n            this.id = id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/fullSer/getfTest.java",
    "content": "package com.alibaba.json.bvt.fullSer;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.json.bvt.fullSer.get_set_Test.VO;\n\npublic class getfTest extends TestCase {\n\n    public void test_codec() throws Exception {\n        VO vo = new VO();\n        vo.setfId(123);\n        \n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"fId\\\":123}\", text);\n        VO vo1 = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(123, vo1.getfId());\n    }\n\n    public static class VO {\n\n        private int fId;\n\n        \n        public int getfId() {\n            return fId;\n        }\n\n        \n        public void setfId(int fId) {\n            this.fId = fId;\n        }\n\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/fullSer/getfTest_2.java",
    "content": "package com.alibaba.json.bvt.fullSer;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.json.bvt.fullSer.get_set_Test.VO;\n\npublic class getfTest_2 extends TestCase {\n\n    public void test_codec() throws Exception {\n        VO vo = new VO();\n        vo.setfFlag(true);\n\n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"fFlag\\\":true}\", text);\n        VO vo1 = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(true, vo1.isfFlag());\n    }\n\n    public static class VO {\n\n        private boolean fFlag;\n\n        public boolean isfFlag() {\n            return fFlag;\n        }\n\n        public void setfFlag(boolean fFlag) {\n            this.fFlag = fFlag;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/fullSer/is_set_test_2.java",
    "content": "package com.alibaba.json.bvt.fullSer;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.json.bvt.fullSer.get_set_Test.VO;\n\npublic class is_set_test_2 extends TestCase {\n\n    public void test_codec() throws Exception {\n        VO vo = new VO();\n        vo.set_flag(true);\n\n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"flag\\\":true}\", text);\n        VO vo1 = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(true, vo1.is_flag());\n    }\n\n    public static class VO {\n\n        private boolean flag;\n\n        public boolean is_flag() {\n            return flag;\n        }\n\n        public void set_flag(boolean flag) {\n            this.flag = flag;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/geo/FeatureCollectionTest.java",
    "content": "package com.alibaba.json.bvt.geo;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.support.geo.FeatureCollection;\nimport com.alibaba.fastjson.support.geo.Geometry;\nimport com.alibaba.fastjson.support.geo.Point;\nimport junit.framework.TestCase;\n\npublic class FeatureCollectionTest\n        extends TestCase {\n    public void test_geo() throws Exception {\n        String str = \"{\\n\" +\n                \"    \\\"type\\\": \\\"FeatureCollection\\\",\\n\" +\n                \"    \\\"features\\\": [{\\n\" +\n                \"       \\\"type\\\": \\\"Feature\\\",\\n\" +\n                \"       \\\"geometry\\\": {\\n\" +\n                \"           \\\"type\\\": \\\"Point\\\",\\n\" +\n                \"           \\\"coordinates\\\": [102.0, 0.5]\\n\" +\n                \"       },\\n\" +\n                \"       \\\"properties\\\": {\\n\" +\n                \"           \\\"prop0\\\": \\\"value0\\\"\\n\" +\n                \"       }\\n\" +\n                \"    }, {\\n\" +\n                \"       \\\"type\\\": \\\"Feature\\\",\\n\" +\n                \"       \\\"geometry\\\": {\\n\" +\n                \"           \\\"type\\\": \\\"LineString\\\",\\n\" +\n                \"           \\\"coordinates\\\": [\\n\" +\n                \"               [102.0, 0.0],\\n\" +\n                \"               [103.0, 1.0],\\n\" +\n                \"               [104.0, 0.0],\\n\" +\n                \"               [105.0, 1.0]\\n\" +\n                \"           ]\\n\" +\n                \"       },\\n\" +\n                \"       \\\"properties\\\": {\\n\" +\n                \"           \\\"prop0\\\": \\\"value0\\\",\\n\" +\n                \"           \\\"prop1\\\": 0.0\\n\" +\n                \"       }\\n\" +\n                \"    }, {\\n\" +\n                \"       \\\"type\\\": \\\"Feature\\\",\\n\" +\n                \"       \\\"geometry\\\": {\\n\" +\n                \"           \\\"type\\\": \\\"Polygon\\\",\\n\" +\n                \"           \\\"coordinates\\\": [\\n\" +\n                \"               [\\n\" +\n                \"                   [100.0, 0.0],\\n\" +\n                \"                   [101.0, 0.0],\\n\" +\n                \"                   [101.0, 1.0],\\n\" +\n                \"                   [100.0, 1.0],\\n\" +\n                \"                   [100.0, 0.0]\\n\" +\n                \"               ]\\n\" +\n                \"           ]\\n\" +\n                \"       },\\n\" +\n                \"       \\\"properties\\\": {\\n\" +\n                \"           \\\"prop0\\\": \\\"value0\\\",\\n\" +\n                \"           \\\"prop1\\\": {\\n\" +\n                \"               \\\"this\\\": \\\"that\\\"\\n\" +\n                \"           }\\n\" +\n                \"       }\\n\" +\n                \"    }]\\n\" +\n                \"}\\n\";\n\n        Geometry geometry = JSON.parseObject(str, Geometry.class);\n        assertEquals(FeatureCollection.class, geometry.getClass());\n\n        assertEquals(\"{\\\"type\\\":\\\"FeatureCollection\\\",\\\"features\\\":[{\\\"type\\\":\\\"Feature\\\",\\\"properties\\\":{\\\"prop0\\\":\\\"value0\\\"},\\\"geometry\\\":{\\\"type\\\":\\\"Point\\\",\\\"coordinates\\\":[102.0,0.5]}},{\\\"type\\\":\\\"Feature\\\",\\\"properties\\\":{\\\"prop1\\\":\\\"0.0\\\",\\\"prop0\\\":\\\"value0\\\"},\\\"geometry\\\":{\\\"type\\\":\\\"LineString\\\",\\\"coordinates\\\":[[102.0,0.0],[103.0,1.0],[104.0,0.0],[105.0,1.0]]}},{\\\"type\\\":\\\"Feature\\\",\\\"properties\\\":{\\\"prop1\\\":\\\"{\\\\\\\"this\\\\\\\":\\\\\\\"that\\\\\\\"}\\\",\\\"prop0\\\":\\\"value0\\\"},\\\"geometry\\\":{\\\"type\\\":\\\"Polygon\\\",\\\"coordinates\\\":[[[100.0,0.0],[101.0,0.0],[101.0,1.0],[100.0,1.0],[100.0,0.0]]]}}]}\", JSON.toJSONString(geometry));\n\n        String str2 = JSON.toJSONString(geometry);\n        assertEquals(str2, JSON.toJSONString(JSON.parseObject(str2, Geometry.class)));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/geo/FeatureTest.java",
    "content": "package com.alibaba.json.bvt.geo;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.support.geo.Feature;\nimport com.alibaba.fastjson.support.geo.Geometry;\nimport com.alibaba.fastjson.support.geo.Point;\nimport junit.framework.TestCase;\n\npublic class FeatureTest\n        extends TestCase {\n    public void test_geo() throws Exception {\n        String str = \"{\\n\" +\n                \"    \\\"type\\\": \\\"Feature\\\",\\n\" +\n                \"    \\\"bbox\\\": [-10.0, -10.0, 10.0, 10.0],\\n\" +\n                \"    \\\"geometry\\\": {\\n\" +\n                \"       \\\"type\\\": \\\"Polygon\\\",\\n\" +\n                \"       \\\"coordinates\\\": [\\n\" +\n                \"           [\\n\" +\n                \"               [-10.0, -10.0],\\n\" +\n                \"               [10.0, -10.0],\\n\" +\n                \"               [10.0, 10.0],\\n\" +\n                \"               [-10.0, -10.0]\\n\" +\n                \"           ]\\n\" +\n                \"       ]\\n\" +\n                \"    }\\n\" +\n                \"}\";\n\n        Geometry geometry = JSON.parseObject(str, Geometry.class);\n        assertEquals(Feature.class, geometry.getClass());\n\n        assertEquals(\"{\\\"type\\\":\\\"Feature\\\",\\\"bbox\\\":[-10.0,-10.0,10.0,10.0],\\\"properties\\\":{},\\\"geometry\\\":{\\\"type\\\":\\\"Polygon\\\",\\\"coordinates\\\":[[[-10.0,-10.0],[10.0,-10.0],[10.0,10.0],[-10.0,-10.0]]]}}\", JSON.toJSONString(geometry));\n\n        String str2 = JSON.toJSONString(geometry);\n        assertEquals(str2, JSON.toJSONString(JSON.parseObject(str2, Geometry.class)));\n    }\n\n    public void test_geo_1() throws Exception {\n        String str = \"{\\n\" +\n                \"    \\\"type\\\": \\\"Feature\\\",\\n\" +\n                \"    \\\"id\\\": \\\"f2\\\",\\n\" +\n                \"    \\\"geometry\\\": {\\n\" +\n                \"       \\\"type\\\": \\\"Polygon\\\",\\n\" +\n                \"       \\\"coordinates\\\": [\\n\" +\n                \"           [\\n\" +\n                \"               [-10.0, -10.0],\\n\" +\n                \"               [10.0, -10.0],\\n\" +\n                \"               [10.0, 10.0],\\n\" +\n                \"               [-10.0, -10.0]\\n\" +\n                \"           ]\\n\" +\n                \"       ]\\n\" +\n                \"    }\\n\" +\n                \"}\";\n\n        Geometry geometry = JSON.parseObject(str, Geometry.class);\n        assertEquals(Feature.class, geometry.getClass());\n\n        assertEquals(\"{\\\"type\\\":\\\"Feature\\\",\\\"id\\\":\\\"f2\\\",\\\"properties\\\":{},\\\"geometry\\\":{\\\"type\\\":\\\"Polygon\\\",\\\"coordinates\\\":[[[-10.0,-10.0],[10.0,-10.0],[10.0,10.0],[-10.0,-10.0]]]}}\", JSON.toJSONString(geometry));\n\n        String str2 = JSON.toJSONString(geometry);\n        assertEquals(str2, JSON.toJSONString(JSON.parseObject(str2, Geometry.class)));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/geo/GeometryCollectionTest.java",
    "content": "package com.alibaba.json.bvt.geo;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.support.geo.Geometry;\nimport com.alibaba.fastjson.support.geo.GeometryCollection;\nimport com.alibaba.fastjson.support.geo.LineString;\nimport junit.framework.TestCase;\n\npublic class GeometryCollectionTest\n        extends TestCase {\n    public void test_geo() throws Exception {\n        String str = \"{\\n\" +\n                \"    \\\"type\\\": \\\"GeometryCollection\\\",\\n\" +\n                \"    \\\"geometries\\\": [{\\n\" +\n                \"        \\\"type\\\": \\\"Point\\\",\\n\" +\n                \"        \\\"coordinates\\\": [100.0, 0.0]\\n\" +\n                \"    }, {\\n\" +\n                \"    \\\"type\\\": \\\"LineString\\\",\\n\" +\n                \"    \\\"coordinates\\\": [\\n\" +\n                \"        [101.0, 0.0],\\n\" +\n                \"        [102.0, 1.0]\\n\" +\n                \"    ]\\n\" +\n                \"    }]\\n\" +\n                \"}\";\n\n        Geometry geometry = JSON.parseObject(str, Geometry.class);\n        assertEquals(GeometryCollection.class, geometry.getClass());\n\n        assertEquals(\n                \"{\\\"type\\\":\\\"GeometryCollection\\\",\\\"geometries\\\":[{\\\"type\\\":\\\"Point\\\",\\\"coordinates\\\":[100.0,0.0]},{\\\"type\\\":\\\"LineString\\\",\\\"coordinates\\\":[[101.0,0.0],[102.0,1.0]]}]}\"\n                , JSON.toJSONString(geometry));\n\n        String str2 = JSON.toJSONString(geometry);\n        assertEquals(str2, JSON.toJSONString(JSON.parseObject(str2, Geometry.class)));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/geo/LineStringTest.java",
    "content": "package com.alibaba.json.bvt.geo;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.support.geo.Geometry;\nimport com.alibaba.fastjson.support.geo.LineString;\nimport junit.framework.TestCase;\n\npublic class LineStringTest extends TestCase {\n    public void test_geo() throws Exception {\n        String str = \"{\\n\" +\n                \"    \\\"type\\\": \\\"LineString\\\",\\n\" +\n                \"    \\\"coordinates\\\": [\\n\" +\n                \"        [100.0, 0.0],\\n\" +\n                \"        [101.0, 1.0]\\n\" +\n                \"    ]\\n\" +\n                \"}\";\n\n        Geometry geometry = JSON.parseObject(str, Geometry.class);\n        assertEquals(LineString.class, geometry.getClass());\n\n        assertEquals(\"{\\\"type\\\":\\\"LineString\\\",\\\"coordinates\\\":[[100.0,0.0],[101.0,1.0]]}\", JSON.toJSONString(geometry));\n\n        String str2 = JSON.toJSONString(geometry);\n        assertEquals(str2, JSON.toJSONString(JSON.parseObject(str2, Geometry.class)));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/geo/MultiLineStringTest.java",
    "content": "package com.alibaba.json.bvt.geo;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.support.geo.Geometry;\nimport com.alibaba.fastjson.support.geo.MultiLineString;\nimport com.alibaba.fastjson.support.geo.MultiPoint;\nimport junit.framework.TestCase;\n\npublic class MultiLineStringTest\n        extends TestCase {\n    public void test_geo() throws Exception {\n        String str = \"{\\n\" +\n                \"    \\\"type\\\": \\\"MultiLineString\\\",\\n\" +\n                \"    \\\"coordinates\\\": [\\n\" +\n                \"        [\\n\" +\n                \"            [100.0, 0.0],\\n\" +\n                \"            [101.0, 1.0]\\n\" +\n                \"        ],\\n\" +\n                \"        [\\n\" +\n                \"            [102.0, 2.0],\\n\" +\n                \"            [103.0, 3.0]\\n\" +\n                \"        ]\\n\" +\n                \"    ]\\n\" +\n                \"}\";\n\n        Geometry geometry = JSON.parseObject(str, Geometry.class);\n        assertEquals(MultiLineString.class, geometry.getClass());\n\n        assertEquals(\"{\\\"type\\\":\\\"MultiLineString\\\",\\\"coordinates\\\":[[[100.0,0.0],[101.0,1.0]],[[102.0,2.0],[103.0,3.0]]]}\", JSON.toJSONString(geometry));\n\n        String str2 = JSON.toJSONString(geometry);\n        assertEquals(str2, JSON.toJSONString(JSON.parseObject(str2, Geometry.class)));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/geo/MultiPointTest.java",
    "content": "package com.alibaba.json.bvt.geo;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.support.geo.Geometry;\nimport com.alibaba.fastjson.support.geo.MultiPoint;\nimport com.alibaba.fastjson.support.geo.Point;\nimport junit.framework.TestCase;\n\npublic class MultiPointTest extends TestCase {\n    public void test_geo() throws Exception {\n        String str = \"{\\n\" +\n                \"    \\\"type\\\": \\\"MultiPoint\\\",\\n\" +\n                \"    \\\"coordinates\\\": [\\n\" +\n                \"        [100.0, 0.0],\\n\" +\n                \"        [101.0, 1.0]\\n\" +\n                \"    ]\\n\" +\n                \"}\";\n\n        Geometry geometry = JSON.parseObject(str, Geometry.class);\n        assertEquals(MultiPoint.class, geometry.getClass());\n\n        assertEquals(\"{\\\"type\\\":\\\"MultiPoint\\\",\\\"coordinates\\\":[[100.0,0.0],[101.0,1.0]]}\", JSON.toJSONString(geometry));\n\n        String str2 = JSON.toJSONString(geometry);\n        assertEquals(str2, JSON.toJSONString(JSON.parseObject(str2, Geometry.class)));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/geo/MultiPolygonTest.java",
    "content": "package com.alibaba.json.bvt.geo;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.support.geo.Geometry;\nimport com.alibaba.fastjson.support.geo.MultiPoint;\nimport com.alibaba.fastjson.support.geo.MultiPolygon;\nimport junit.framework.TestCase;\n\npublic class MultiPolygonTest\n        extends TestCase {\n    public void test_geo() throws Exception {\n        String str = \"{\\n\" +\n                \"    \\\"type\\\": \\\"MultiPolygon\\\",\\n\" +\n                \"    \\\"coordinates\\\": [\\n\" +\n                \"        [\\n\" +\n                \"            [\\n\" +\n                \"                [102.0, 2.0],\\n\" +\n                \"                [103.0, 2.0],\\n\" +\n                \"                [103.0, 3.0],\\n\" +\n                \"                [102.0, 3.0],\\n\" +\n                \"                [102.0, 2.0]\\n\" +\n                \"            ]\\n\" +\n                \"        ],\\n\" +\n                \"        [\\n\" +\n                \"            [\\n\" +\n                \"                [100.0, 0.0],\\n\" +\n                \"                [101.0, 0.0],\\n\" +\n                \"                [101.0, 1.0],\\n\" +\n                \"                [100.0, 1.0],\\n\" +\n                \"                [100.0, 0.0]\\n\" +\n                \"            ],\\n\" +\n                \"            [\\n\" +\n                \"                [100.2, 0.2],\\n\" +\n                \"                [100.2, 0.8],\\n\" +\n                \"                [100.8, 0.8],\\n\" +\n                \"                [100.8, 0.2],\\n\" +\n                \"                [100.2, 0.2]\\n\" +\n                \"            ]\\n\" +\n                \"        ]\\n\" +\n                \"    ]\\n\" +\n                \"}\";\n\n        Geometry geometry = JSON.parseObject(str, Geometry.class);\n        assertEquals(MultiPolygon.class, geometry.getClass());\n\n        assertEquals(\n                \"{\\\"type\\\":\\\"MultiPolygon\\\",\\\"coordinates\\\":[[[[102.0,2.0],[103.0,2.0],[103.0,3.0],[102.0,3.0],[102.0,2.0]]],[[[100.0,0.0],[101.0,0.0],[101.0,1.0],[100.0,1.0],[100.0,0.0]],[[100.2,0.2],[100.2,0.8],[100.8,0.8],[100.8,0.2],[100.2,0.2]]]]}\"\n                , JSON.toJSONString(geometry));\n\n        String str2 = JSON.toJSONString(geometry);\n        assertEquals(str2, JSON.toJSONString(JSON.parseObject(str2, Geometry.class)));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/geo/PointTest.java",
    "content": "package com.alibaba.json.bvt.geo;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.support.geo.Geometry;\nimport com.alibaba.fastjson.support.geo.LineString;\nimport com.alibaba.fastjson.support.geo.Point;\nimport junit.framework.TestCase;\n\npublic class PointTest\n        extends TestCase {\n    public void test_geo() throws Exception {\n        String str = \"{\\n\" +\n                \"    \\\"type\\\": \\\"Point\\\",\\n\" +\n                \"    \\\"coordinates\\\": [100.0, 0.0]\\n\" +\n                \"}\";\n\n        Geometry geometry = JSON.parseObject(str, Geometry.class);\n        assertEquals(Point.class, geometry.getClass());\n\n        assertEquals(\"{\\\"type\\\":\\\"Point\\\",\\\"coordinates\\\":[100.0,0.0]}\", JSON.toJSONString(geometry));\n\n        String str2 = JSON.toJSONString(geometry);\n        assertEquals(str2, JSON.toJSONString(JSON.parseObject(str2, Geometry.class)));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/geo/PolygonTest.java",
    "content": "package com.alibaba.json.bvt.geo;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.support.geo.Geometry;\nimport com.alibaba.fastjson.support.geo.Point;\nimport com.alibaba.fastjson.support.geo.Polygon;\nimport junit.framework.TestCase;\n\npublic class PolygonTest\n        extends TestCase {\n    public void test_geo() throws Exception {\n        String str = \"{\\n\" +\n                \"    \\\"type\\\": \\\"Polygon\\\",\\n\" +\n                \"    \\\"coordinates\\\": [\\n\" +\n                \"        [\\n\" +\n                \"            [100.0, 0.0],\\n\" +\n                \"            [101.0, 0.0],\\n\" +\n                \"            [101.0, 1.0],\\n\" +\n                \"            [100.0, 1.0],\\n\" +\n                \"            [100.0, 0.0]\\n\" +\n                \"        ],\\n\" +\n                \"        [\\n\" +\n                \"            [100.8, 0.8],\\n\" +\n                \"            [100.8, 0.2],\\n\" +\n                \"            [100.2, 0.2],\\n\" +\n                \"            [100.2, 0.8],\\n\" +\n                \"            [100.8, 0.8]\\n\" +\n                \"        ]\\n\" +\n                \"    ]\\n\" +\n                \"}\";\n\n        Geometry geometry = JSON.parseObject(str, Geometry.class);\n        assertEquals(Polygon.class, geometry.getClass());\n\n        assertEquals(\"{\\\"type\\\":\\\"Polygon\\\",\\\"coordinates\\\":[[[100.0,0.0],[101.0,0.0],[101.0,1.0],[100.0,1.0],[100.0,0.0]],[[100.8,0.8],[100.8,0.2],[100.2,0.2],[100.2,0.8],[100.8,0.8]]]}\", JSON.toJSONString(geometry));\n\n        String str2 = JSON.toJSONString(geometry);\n        assertEquals(str2, JSON.toJSONString(JSON.parseObject(str2, Geometry.class)));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/guava/ArrayListMultimapTest.java",
    "content": "package com.alibaba.json.bvt.guava;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.google.common.collect.ArrayListMultimap;\nimport com.google.common.collect.TreeMultimap;\nimport com.google.common.primitives.Ints;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 15/01/2017.\n */\npublic class ArrayListMultimapTest extends TestCase {\n    public void test_for_multimap() throws Exception {\n        ArrayListMultimap<String, Integer> multimap = ArrayListMultimap.create();\n        multimap.putAll(\"b\", Ints.asList(2, 4, 6));\n        multimap.putAll(\"a\", Ints.asList(4, 2, 1));\n        multimap.putAll(\"c\", Ints.asList(2, 5, 3));\n\n        String json = JSON.toJSONString(multimap, SerializerFeature.MapSortField);\n        assertEquals(\"{\\\"a\\\":[4,2,1],\\\"b\\\":[2,4,6],\\\"c\\\":[2,5,3]}\", json);\n\n        TreeMultimap treeMultimap = TreeMultimap.create(multimap);\n        String json2 = JSON.toJSONString(treeMultimap);\n        assertEquals(\"{\\\"a\\\":[1,2,4],\\\"b\\\":[2,4,6],\\\"c\\\":[2,3,5]}\", json2);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/guava/HashMultimapTest.java",
    "content": "package com.alibaba.json.bvt.guava;\n\nimport com.alibaba.fastjson.JSON;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.google.common.collect.HashMultimap;\nimport com.google.gson.Gson;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 15/01/2017.\n */\npublic class HashMultimapTest extends TestCase {\n    public void test_for_multimap() throws Exception {\n        HashMultimap map = HashMultimap.create();\n        map.put(\"name\", \"a\");\n        map.put(\"name\", \"b\");\n\n        String json = JSON.toJSONString(map);\n        assertTrue(json.equals(\"{\\\"name\\\":[\\\"a\\\",\\\"b\\\"]}\") || json.equals(\"{\\\"name\\\":[\\\"b\\\",\\\"a\\\"]}\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/guava/ImmutableMapTest.java",
    "content": "package com.alibaba.json.bvt.guava;\n\nimport com.alibaba.fastjson.JSON;\nimport com.google.common.collect.ImmutableMap;\nimport junit.framework.TestCase;\n\nimport java.util.Map;\n\n/**\n * Created by wenshao on 15/01/2017.\n */\npublic class ImmutableMapTest extends TestCase {\n    public void test_immutableMap() throws Exception {\n        Map<String, Integer> map = ImmutableMap.of(\"a\", 1, \"b\", 2, \"c\", 3);\n        String json = JSON.toJSONString(map);\n        assertEquals(\"{\\\"a\\\":1,\\\"b\\\":2,\\\"c\\\":3}\", json);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/guava/LinkedListMultimapTest.java",
    "content": "package com.alibaba.json.bvt.guava;\n\nimport com.alibaba.fastjson.JSON;\nimport com.google.common.collect.HashMultimap;\nimport com.google.common.collect.LinkedListMultimap;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 15/01/2017.\n */\npublic class LinkedListMultimapTest extends TestCase {\n    public void test_for_multimap() throws Exception {\n        LinkedListMultimap map = LinkedListMultimap.create();\n        map.put(\"name\", \"a\");\n        map.put(\"name\", \"b\");\n\n        String json = JSON.toJSONString(map);\n        assertEquals(\"{\\\"name\\\":[\\\"a\\\",\\\"b\\\"]}\", json);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/guava/MultiMapTes.java",
    "content": "package com.alibaba.json.bvt.guava;\n\nimport com.alibaba.fastjson.JSON;\nimport com.google.common.collect.*;\nimport junit.framework.TestCase;\n\nimport java.util.Map;\n\n/**\n * Created by wenshao on 15/01/2017.\n */\npublic class MultiMapTes extends TestCase {\n\n    public void test_multimap() throws Exception {\n        Map<String, Integer> map = ImmutableMap.of(\"a\", 1, \"b\", 1, \"c\", 2);\n        SetMultimap<String, Integer> multimap = Multimaps.forMap(map);\n        Multimap<Integer, String> inverse = Multimaps.invertFrom(multimap, HashMultimap.<Integer, String>create());\n        String json = JSON.toJSONString(inverse);\n        assertEquals(\"{1:[\\\"a\\\",\\\"b\\\"],2:[\\\"c\\\"]}\",json);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1000/Issue1066.java",
    "content": "package com.alibaba.json.bvt.issue_1000;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONWriter;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.io.ByteArrayOutputStream;\nimport java.io.IOException;\nimport java.io.OutputStream;\nimport java.io.OutputStreamWriter;\nimport java.nio.charset.Charset;\nimport java.nio.charset.CodingErrorAction;\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * Created by wenshao on 25/03/2017.\n */\npublic class Issue1066 extends TestCase {\n    private static final Charset CHARSET = Charset.forName(\"UTF-8\");\n\n    public void test_for_issue() throws Exception {\n        Map<EnumType, EnumType> map = new HashMap<EnumType, EnumType>();\n        map.put(EnumType.ONE, EnumType.TWO);\n\n        System.out.println(\"序列化前的参数为:\" + map);\n        ByteArrayOutputStream bos = new ByteArrayOutputStream();\n        try{\n            serialize(map, bos);\n\n            Object desRes = deserialize(bos.toByteArray());\n            System.out.println(\"反序列化后的结果为:\" + JSON.toJSONString(desRes));\n        }finally {\n            try{\n                bos.close();\n            }catch (IOException e){\n            }\n        }\n    }\n\n    public static <T> void serialize(T obj, OutputStream out) {\n        JSONWriter writer = null;\n        try {\n            writer = new JSONWriter(new OutputStreamWriter(out, CHARSET.newEncoder().onMalformedInput(CodingErrorAction.IGNORE)));\n            writer.config(SerializerFeature.QuoteFieldNames, true);\n            writer.config(SerializerFeature.SkipTransientField, true);\n            writer.config(SerializerFeature.SortField, true);\n            writer.config(SerializerFeature.WriteClassName, true);\n            writer.config(SerializerFeature.DisableCircularReferenceDetect, true);\n            writer.writeObject(obj);\n            writer.flush();\n        } catch (Exception e) {\n            e.printStackTrace();\n        } finally {\n            if (writer != null) {\n                try {\n                    writer.close();\n                } catch (Exception e) {\n                }\n            }\n        }\n    }\n\n    public static <T> T deserialize(byte[] in) {\n        return (T) JSON.parse(in, 0, in.length, CHARSET.newDecoder(), Feature.AllowArbitraryCommas,\n                Feature.IgnoreNotMatch, Feature.SortFeidFastMatch, Feature.DisableCircularReferenceDetect,\n                Feature.AutoCloseSource);\n    }\n\n    public static enum EnumType {\n\n        ONE(1, \"1\"),\n\n        TWO(2, \"2\")\n        ;\n\n        private int code;\n        private String desc;\n\n        EnumType(int code, String desc){\n            this.code = code;\n            this.desc = desc;\n        }\n\n        @Override\n        public String toString() {\n            return \"EnumType{\" +\n                    \"code=\" + code +\n                    \", desc='\" + desc + '\\'' +\n                    '}';\n        }\n    }\n\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1000/Issue1079.java",
    "content": "package com.alibaba.json.bvt.issue_1000;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.fasterxml.jackson.annotation.JsonIgnore;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\n/**\n * Created by wenshao on 17/03/2017.\n */\npublic class Issue1079 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String text = \"{\\n\" +\n                \"\\t\\\"Response\\\": [{\\n\" +\n                \"\\t\\t\\\"Status\\\": {\\n\" +\n                \"\\t\\t\\t\\\"StatusCode\\\": {\\n\" +\n                \"\\t\\t\\t\\t\\\"Value\\\": \\\"urn:oasis:names:tc:xacml:1.0:status:ok\\\"\\n\" +\n                \"\\t\\t\\t}\\n\" +\n                \"\\t\\t},\\n\" +\n                \"\\t\\t\\\"Decision\\\": \\\"NotApplicable\\\"\\n\" +\n                \"\\t}]\\n\" +\n                \"}\";\n\n        JSON.parseObject(text, PdpResponse.class);\n\n    }\n\n    public static class PdpResponse {\n\n        @JSONField(name =\"Response\")\n        public List<Response> response;\n\n        public static class Response {\n            public List<InnerObject> innerObjects;\n        }\n\n        public static class InnerObject {\n            @JSONField(name = \"Status\")\n            public Status status;\n            @JSONField(name = \"Decision\")\n            public String decision;\n        }\n\n\n        public static class Status {\n            @JSONField(name = \"StatusCode\")\n            public StatusCode statusCode;\n        }\n\n        public static class StatusCode {\n            @JSONField(name = \"Value\")\n            public String value;\n        }\n\n        @JSONField(deserialize = false)\n        public String retrieveDecision(){\n            return this.response.get(0).innerObjects.get(0).decision;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1000/Issue1080.java",
    "content": "package com.alibaba.json.bvt.issue_1000;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.sql.Date;\n\n/**\n * Created by wenshao on 17/03/2017.\n */\npublic class Issue1080 extends TestCase {\n    public void test_for_issue() throws Exception {\n        java.util.Date date = JSON.parseObject(\"\\\"2017-3-17 00:00:01\\\"\", java.util.Date.class);\n        String json = JSON.toJSONStringWithDateFormat(date, \"yyyy-MM-dd\");\n        assertEquals(\"\\\"2017-03-17\\\"\", json);\n    }\n\n    public void test_for_issue_2() throws Exception {\n        java.util.Date date = JSON.parseObject(\"\\\"2017-3-7 00:00:01\\\"\", java.util.Date.class);\n        String json = JSON.toJSONStringWithDateFormat(date, \"yyyy-MM-dd\");\n        assertEquals(\"\\\"2017-03-07\\\"\", json);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1000/Issue1082.java",
    "content": "package com.alibaba.json.bvt.issue_1000;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 17/03/2017.\n */\npublic class Issue1082 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Throwable error = null;\n        try {\n            JSON.parseObject(\"{}\", Model_1082.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public class Model_1082 {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1000/Issue1083.java",
    "content": "package com.alibaba.json.bvt.issue_1000;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * Created by wenshao on 11/06/2017.\n */\npublic class Issue1083 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Map map = new HashMap();\n        map.put(\"userId\", 456);\n        String json = JSON.toJSONString(map, SerializerFeature.WriteNonStringValueAsString);\n        assertEquals(\"{\\\"userId\\\":\\\"456\\\"}\", json);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1000/Issue1085.java",
    "content": "package com.alibaba.json.bvt.issue_1000;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 20/03/2017.\n */\npublic class Issue1085 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = (Model) JSON.parseObject(\"{\\\"id\\\":123}\", AbstractModel.class);\n        assertEquals(123, model.id);\n    }\n\n    public static abstract class AbstractModel {\n        public int id;\n\n        @JSONCreator\n        public static AbstractModel createInstance() {\n            return new Model();\n        }\n    }\n\n    public static class Model extends AbstractModel {\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1000/Issue1086.java",
    "content": "package com.alibaba.json.bvt.issue_1000;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 20/03/2017.\n */\npublic class Issue1086 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"flag\\\":1}\", Model.class);\n        assertTrue(model.flag);\n    }\n\n    public static class Model {\n        public boolean flag;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1000/Issue1089.java",
    "content": "package com.alibaba.json.bvt.issue_1000;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 20/03/2017.\n */\npublic class Issue1089 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"{\\\"ab\\\":123,\\\"a_b\\\":456}\";\n        TestBean tb = JSON.parseObject(json, TestBean.class);\n        assertEquals(123, tb.getAb());\n    }\n\n    public static class TestBean {\n        private int ab;\n\n        public int getAb() {\n            return ab;\n        }\n\n        public void setAb(int ab) {\n            this.ab = ab;\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1000/Issue1089_private.java",
    "content": "package com.alibaba.json.bvt.issue_1000;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 20/03/2017.\n */\npublic class Issue1089_private extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"{\\\"ab\\\":123,\\\"a_b\\\":456}\";\n        TestBean tb = JSON.parseObject(json, TestBean.class);\n        assertEquals(123, tb.getAb());\n    }\n\n    private static class TestBean {\n        private int ab;\n\n        public int getAb() {\n            return ab;\n        }\n\n        public void setAb(int ab) {\n            this.ab = ab;\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1000/Issue1095.java",
    "content": "package com.alibaba.json.bvt.issue_1000;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\nimport java.util.Date;\n\n/**\n * Created by wenshao on 22/03/2017.\n */\npublic class Issue1095 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String text = \"{\\\"Grade\\\": 1, \\\"UpdateTime\\\": \\\"2017-03-22T11:41:17\\\"}\";\n        JSONObject jsonObject = JSON.parseObject(text, Feature.AllowISO8601DateFormat);\n        assertEquals(Date.class, jsonObject.get(\"UpdateTime\").getClass());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1100/Issue1109.java",
    "content": "package com.alibaba.json.bvt.issue_1100;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.apache.commons.lang3.tuple.Pair;\n\n/**\n * Created by wenshao on 28/03/2017.\n */\npublic class Issue1109 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Pair<String, String> data = Pair.of(\"key\", \"\\\"the\\\"content\");\n        assertEquals(\"{\\\"key\\\":\\\"\\\\\\\"the\\\\\\\"content\\\"}\", JSON.toJSONString(data));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1100/Issue1112.java",
    "content": "package com.alibaba.json.bvt.issue_1100;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 01/04/2017.\n */\npublic class Issue1112 extends TestCase {\n    public void test_for_issue_1() throws Exception {\n        JSONObject object = new JSONObject();\n        object.put(\"123\", \"abc\");\n\n        assertEquals(\"abc\", JSONPath.eval(object, \"$.123\"));\n    }\n\n    public void test_for_issue_2() throws Exception {\n        JSONObject object = new JSONObject();\n        object.put(\"345_xiu\", \"abc\");\n\n        assertEquals(\"abc\", JSONPath.eval(object, \"$.345_xiu\"));\n    }\n\n\n    public void test_for_issue_3() throws Exception {\n        JSONObject object = new JSONObject();\n        object.put(\"345.xiu\", \"abc\");\n\n        assertEquals(\"abc\", JSONPath.eval(object, \"$.345\\\\.xiu\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1100/Issue1120.java",
    "content": "package com.alibaba.json.bvt.issue_1100;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 01/04/2017.\n */\npublic class Issue1120 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = new Model();\n        model.setReqNo(\"123\");\n\n        assertEquals(\"{\\\"REQ_NO\\\":\\\"123\\\"}\", JSON.toJSONString(model));\n    }\n\n    public static class Model {\n        @JSONField(name=\"REQ_NO\")\n        private String ReqNo;\n\n        public String getReqNo() {\n            return ReqNo;\n        }\n\n        public void setReqNo(String reqNo) {\n            ReqNo = reqNo;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1100/Issue1121.java",
    "content": "package com.alibaba.json.bvt.issue_1100;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 01/04/2017.\n */\npublic class Issue1121 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSONObject userObject = new JSONObject();\n        userObject.put(\"name\",\"jack\");\n        userObject.put(\"age\",20);\n\n        JSONObject result = new JSONObject();\n        result.put(\"host\",\"127.0.0.1\");\n        result.put(\"port\",3306);\n        result.put(\"user\",userObject);\n        result.put(\"admin\",userObject);\n\n        String json = JSON.toJSONString(result, true);\n        System.out.println(json);\n\n        JSONObject jsonObject2 = JSON.parseObject(json);\n        assertEquals(result, jsonObject2);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1100/Issue1134.java",
    "content": "package com.alibaba.json.bvt.issue_1100;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 09/04/2017.\n */\npublic class Issue1134 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        Model model = new Model();\n        model.blockpos = new BlockPos();\n        model.blockpos.x = 526;\n        model.blockpos.y = 65;\n        model.blockpos.z = 554;\n        model.passCode = \"010\";\n\n        String text = JSON.toJSONString(model);\n        assertEquals(\"{\\\"Dimension\\\":0,\\\"PassCode\\\":\\\"010\\\",\\\"BlockPos\\\":{\\\"x\\\":526,\\\"y\\\":65,\\\"z\\\":554}}\", text);\n    }\n\n    public static class Model {\n        @JSONField(ordinal = 1, name=\"Dimension\")\n        private int dimension;\n        @JSONField(ordinal = 2, name=\"PassCode\")\n        private String passCode;\n        @JSONField(ordinal = 3, name=\"BlockPos\")\n        private BlockPos blockpos;\n\n        public int getDimension() {\n            return dimension;\n        }\n\n        public void setDimension(int dimension) {\n            this.dimension = dimension;\n        }\n\n        public String getPassCode() {\n            return passCode;\n        }\n\n        public void setPassCode(String passCode) {\n            this.passCode = passCode;\n        }\n\n        public BlockPos getBlockpos() {\n            return blockpos;\n        }\n\n        public void setBlockpos(BlockPos blockpos) {\n            this.blockpos = blockpos;\n        }\n    }\n\n    public static class BlockPos {\n        public int x;\n        public int y;\n        public int z;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1100/Issue1138.java",
    "content": "package com.alibaba.json.bvt.issue_1100;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 10/04/2017.\n */\npublic class Issue1138 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = new Model();\n        model.id = 1001;\n        model.name = \"gaotie\";\n\n        // {\"id\":1001,\"name\":\"gaotie\"}\n        String text_normal = JSON.toJSONString(model);\n        System.out.println(text_normal);\n\n        // [1001,\"gaotie\"]\n        String text_beanToArray = JSON.toJSONString(model,\n                SerializerFeature.BeanToArray);\n        System.out.println(text_beanToArray);\n\n        // support beanToArray & normal mode\n        System.out.println(JSON.parseObject(text_beanToArray, Model.class, Feature.SupportArrayToBean));\n    }\n\n    static class Model {\n        public int id;\n        public String name;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1100/Issue1140.java",
    "content": "package com.alibaba.json.bvt.issue_1100;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.io.ByteArrayOutputStream;\n\n/**\n * Created by wenshao on 11/04/2017.\n */\npublic class Issue1140 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String s = \"\\uD83C\\uDDEB\\uD83C\\uDDF7\";\n\n        ByteArrayOutputStream out = new ByteArrayOutputStream();\n\n        JSON.writeJSONString(out, s);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1100/Issue1144.java",
    "content": "package com.alibaba.json.bvt.issue_1100;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 13/04/2017.\n */\npublic class Issue1144 extends TestCase {\n    public void test_issue_1144() throws Exception {\n        Model model = new Model();\n        String json = JSON.toJSONString(model);\n        System.out.println(json);\n    }\n\n    @JSONType(alphabetic = false)\n    public static class Model {\n        public int f2;\n        public int f1;\n        public int f0;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1100/Issue1146.java",
    "content": "package com.alibaba.json.bvt.issue_1100;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 14/04/2017.\n */\npublic class Issue1146 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = JSON.toJSONString(new Test());\n        assertEquals(\"{\\\"zzz\\\":true}\", json);\n    }\n\n    @JSONType(ignores = {\"xxx\", \"yyy\"})\n    public static class Test {\n\n        public boolean isXxx() {\n            return true;\n        }\n        public boolean getYyy() {\n            return true;\n        }\n        public boolean getZzz() {\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1100/Issue1150.java",
    "content": "package com.alibaba.json.bvt.issue_1100;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\n/**\n * Created by wenshao on 24/04/2017.\n */\npublic class Issue1150 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"values\\\":\\\"\\\"}\", Model.class);\n        assertNull(model.values);\n    }\n\n    public void test_for_issue_array() throws Exception {\n        Model2 model = JSON.parseObject(\"{\\\"values\\\":\\\"\\\"}\", Model2.class);\n        assertNull(model.values);\n    }\n\n    public static class Model {\n        public List values;\n    }\n\n    public static class Model2 {\n        public Item[] values;\n    }\n\n    public static class Item {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1100/Issue1151.java",
    "content": "package com.alibaba.json.bvt.issue_1100;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * Created by wenshao on 19/04/2017.\n */\npublic class Issue1151 extends TestCase {\n    public void test_for_issue() throws Exception {\n        A a = new A();\n        a.list.add(new C(1001));\n        a.list.add(new C(1002));\n\n        String json = JSON.toJSONString(a, SerializerFeature.NotWriteRootClassName, SerializerFeature.WriteClassName);\n        assertEquals(\"{\\\"list\\\":[{\\\"@type\\\":\\\"com.alibaba.json.bvt.issue_1100.Issue1151$C\\\",\\\"id\\\":1001},{\\\"@type\\\":\\\"com.alibaba.json.bvt.issue_1100.Issue1151$C\\\",\\\"id\\\":1002}]}\", json);\n\n        A a2 = JSON.parseObject(json, A.class);\n        assertSame(a2.list.get(0).getClass(), C.class);\n    }\n\n    public static class A {\n        public List<B> list = new ArrayList<B>();\n    }\n\n    public static  interface B {\n\n    }\n\n    public static  class C implements B {\n        public int id;\n        public C() {\n\n        }\n\n        public C(int id) {\n            this.id = id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1100/Issue1152.java",
    "content": "package com.alibaba.json.bvt.issue_1100;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\n\n/**\n * Created by wenshao on 08/05/2017.\n */\npublic class Issue1152 extends TestCase {\n    public void test_for_issue() throws Exception {\n        TestBean tb = JSONObject.parseObject(\"{shijian:\\\"0000-00-00T00:00:00\\\"}\",TestBean.class);\n        assertNull(tb.getShijian());\n    }\n\n    public void test_for_issue_2() throws Exception {\n        TestBean tb = JSONObject.parseObject(\"{shijian:\\\"0001-01-01T00:00:00+08:00\\\"}\",TestBean.class);\n        assertNotNull(tb.getShijian());\n    }\n\n    public static class TestBean {\n\n        private Date shijian;\n\n        public Date getShijian() {\n            return shijian;\n        }\n        @JSONField(name=\"shijian\" )\n        public void setShijian(Date shijian) {\n            this.shijian = shijian;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1100/Issue1153.java",
    "content": "package com.alibaba.json.bvt.issue_1100;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 08/05/2017.\n */\npublic class Issue1153 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"{\\n\" +\n                \"name: 'zhangshan', //这是一个姓名\\n\" +\n                \"test : '//helo'\\n\" +\n                \"}\";\n\n        JSONObject jsonObject =JSON.parseObject(json);\n        System.out.println(jsonObject);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1100/Issue1165.java",
    "content": "package com.alibaba.json.bvt.issue_1100;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 27/04/2017.\n */\npublic class Issue1165 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = new Model();\n        model.__v = 3;\n\n        String json = JSON.toJSONString(model);\n        assertEquals(\"{\\\"__v\\\":3}\", json);\n    }\n\n    public static class Model {\n        public Number __v;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1100/Issue1177.java",
    "content": "package com.alibaba.json.bvt.issue_1100;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 02/05/2017.\n */\npublic class Issue1177 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String text = \"{\\\"a\\\":{\\\"b\\\":\\\"c\\\",\\\"g\\\":{\\\"e\\\":\\\"f\\\"}},\\\"d\\\":{\\\"a\\\":\\\"f\\\",\\\"h\\\":[\\\"s1\\\"]}} \";\n        JSONObject jsonObject = JSONObject.parseObject(text);\n        Object eval = JSONPath.eval(jsonObject, \"$..a\");\n        assertNotNull(eval);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1100/Issue1177_1.java",
    "content": "package com.alibaba.json.bvt.issue_1100;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 05/05/2017.\n */\npublic class Issue1177_1 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String text = \"{\\\"a\\\":{\\\"x\\\":\\\"y\\\"},\\\"b\\\":{\\\"x\\\":\\\"y\\\"}}\";\n        JSONObject jsonObject = JSONObject.parseObject(text);\n        System.out.println(jsonObject);\n        String jsonpath = \"$..x\";\n        String value=\"y2\";\n        JSONPath.set(jsonObject, jsonpath, value);\n        assertEquals(\"{\\\"a\\\":{\\\"x\\\":\\\"y2\\\"},\\\"b\\\":{\\\"x\\\":\\\"y2\\\"}}\", jsonObject.toString());\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1100/Issue1177_2.java",
    "content": "package com.alibaba.json.bvt.issue_1100;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\n\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\n/**\n * Created by wenshao on 05/05/2017.\n */\npublic class Issue1177_2 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String text = \"{\\\"a\\\":{\\\"x\\\":\\\"y\\\"},\\\"b\\\":{\\\"x\\\":\\\"y\\\"}}\";\n        Map<String, Model> jsonObject = JSONObject.parseObject(text, new TypeReference<LinkedHashMap<String, Model>>(){});\n        System.out.println(JSON.toJSONString(jsonObject));\n        String jsonpath = \"$..x\";\n        String value=\"y2\";\n        JSONPath.set(jsonObject, jsonpath, value);\n        assertEquals(\"{\\\"a\\\":{\\\"x\\\":\\\"y2\\\"},\\\"b\\\":{\\\"x\\\":\\\"y2\\\"}}\", JSON.toJSONString(jsonObject));\n\n    }\n\n    public static class Model {\n        public String x;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1100/Issue1177_3.java",
    "content": "package com.alibaba.json.bvt.issue_1100;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\n\nimport java.util.List;\nimport java.util.Map;\n\n/**\n * Created by wenshao on 05/05/2017.\n */\npublic class Issue1177_3 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String text = \"[{\\\"x\\\":\\\"y\\\"},{\\\"x\\\":\\\"y\\\"}]\";\n        List<Model> jsonObject = JSONObject.parseObject(text, new TypeReference<List<Model>>(){});\n        System.out.println(JSON.toJSONString(jsonObject));\n        String jsonpath = \"$..x\";\n        String value=\"y2\";\n        JSONPath.set(jsonObject, jsonpath, value);\n        assertEquals(\"[{\\\"x\\\":\\\"y2\\\"},{\\\"x\\\":\\\"y2\\\"}]\", JSON.toJSONString(jsonObject));\n\n    }\n\n    public static class Model {\n        public String x;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1100/Issue1177_4.java",
    "content": "package com.alibaba.json.bvt.issue_1100;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\n/**\n * Created by wenshao on 05/05/2017.\n */\npublic class Issue1177_4 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String text = \"{\\\"models\\\":[{\\\"x\\\":\\\"y\\\"},{\\\"x\\\":\\\"y\\\"}]}\";\n        Root root = JSONObject.parseObject(text, Root.class);\n        System.out.println(JSON.toJSONString(root));\n        String jsonpath = \"$..x\";\n        String value=\"y2\";\n        JSONPath.set(root, jsonpath, value);\n        assertEquals(\"{\\\"models\\\":[{\\\"x\\\":\\\"y2\\\"},{\\\"x\\\":\\\"y2\\\"}]}\", JSON.toJSONString(root));\n\n    }\n\n    public static class Root {\n        public List<Model> models;\n    }\n\n    public static class Model {\n        public String x;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1100/Issue1178.java",
    "content": "package com.alibaba.json.bvt.issue_1100;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\nimport java.io.Serializable;\n\n/**\n * Created by wenshao on 02/05/2017.\n */\npublic class Issue1178 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"{\\n\" +\n                \" \\\"info\\\": {\\n\" +\n                \"        \\\"test\\\": \\\"\\\", \\n\" +\n                \"    }\\n\" +\n                \"}\";\n\n        JSONObject jsonObject = JSON.parseObject(json);\n        TestModel loginResponse = JSON.toJavaObject(jsonObject, TestModel.class);\n\n    }\n\n    public static class TestModel implements Serializable {\n        public String info;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1100/Issue1187.java",
    "content": "package com.alibaba.json.bvt.issue_1100;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\nimport java.util.Calendar;\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * Created by wenshao on 05/05/2017.\n */\npublic class Issue1187 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String text1 = \"{\\\"d\\\":\\\"2017-04-27+08:00\\\"}\";\n        JSONObject jsonObject = (JSONObject) JSON.parse(text1, Feature.AllowISO8601DateFormat);;\n        System.out.println(jsonObject.get(\"d\").getClass().getClass());//String\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1100/Issue1188.java",
    "content": "package com.alibaba.json.bvt.issue_1100;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\n/**\n * Created by wenshao on 09/05/2017.\n */\npublic class Issue1188 extends TestCase {\n    public void test_for_issue_1188() throws Exception {\n        String json = \"{\\\"ids\\\":\\\"a1,a2\\\",\\\"name\\\":\\\"abc\\\"}\";\n        Info info = JSON.parseObject(json, Info.class);\n        assertNull(info.ids);\n    }\n\n    public static class Info{\n\n        @JSONField(deserialize=false)\n        private List<Integer> ids;\n        private String name;\n\n        public List<Integer> getIds() {\n            return ids;\n        }\n\n        public void setIds(List<Integer> ids) {\n            this.ids = ids;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1100/Issue1189.java",
    "content": "package com.alibaba.json.bvt.issue_1100;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport junit.framework.TestCase;\n\nimport java.util.Map;\n\n/**\n * Created by wenshao on 10/05/2017.\n */\npublic class Issue1189 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String str = new String(\"{\\\"headernotificationType\\\": \\\"PUSH\\\",\\\"headertemplateNo\\\": \\\"99\\\",\\\"headerdestination\\\": [{\\\"target\\\": \\\"all\\\",\\\"targetvalue\\\": \\\"all\\\"}],\\\"body\\\": [{\\\"title\\\": \\\"预约超时\\\",\\\"body\\\": \\\"您的预约已经超时\\\"}]}\");\n\n        JsonBean objeclt = JSON.parseObject(str, JsonBean.class);\n        Map<String, String> list = objeclt.getBody();\n        System.out.println(list.get(\"body\"));\n    }\n\n    public static class JsonBean {\n        private Map<String, String> body;\n        private int headertemplateno;\n        private Map<String, String> headerdestination;\n        private String headernotificationtype;\n        private String notificationType;\n\n\n\n        public Map<String, String> getBody() {\n            return body;\n        }\n        public void setBody(Map<String, String> body) {\n            this.body = body;\n        }\n        public int getHeadertemplateno() {\n            return headertemplateno;\n        }\n        public void setHeadertemplateno(int headertemplateno) {\n            this.headertemplateno = headertemplateno;\n        }\n        public Map<String, String> getHeaderdestination() {\n            return headerdestination;\n        }\n        public void setHeaderdestination(Map<String, String> headerdestination) {\n            this.headerdestination = headerdestination;\n        }\n        public String getHeadernotificationtype() {\n            return headernotificationtype;\n        }\n        public void setHeadernotificationtype(String headernotificationtype) {\n            this.headernotificationtype = headernotificationtype;\n        }\n        public String getNotificationType() {\n            return notificationType;\n        }\n        public void setNotificationType(String notificationType) {\n            this.notificationType = notificationType;\n        }\n        public JsonBean(Map<String, String> body, int headertemplateno,\n                        Map<String, String> headerdestination,\n                        String headernotificationtype, String notificationType) {\n            super();\n            this.body = body;\n            this.headertemplateno = headertemplateno;\n            this.headerdestination = headerdestination;\n            this.headernotificationtype = headernotificationtype;\n            this.notificationType = notificationType;\n        }\n        public JsonBean() {\n            super();\n            // TODO Auto-generated constructor stub\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1100/Issue969.java",
    "content": "package com.alibaba.json.bvt.issue_1100;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.json.bvt.issue_1200.Issue1205;\nimport junit.framework.TestCase;\n\nimport java.util.Date;\nimport java.util.List;\n\n/**\n * Created by wenshao on 08/05/2017.\n */\npublic class Issue969 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSONObject jsonObject = new JSONObject();\n\n        JSONArray jsonArray = new JSONArray();\n        jsonArray.add(new Model());\n        jsonObject.put(\"models\", jsonArray);\n\n        List list = jsonObject.getObject(\"models\", new TypeReference<List<Model>>(){});\n\n        assertEquals(1, list.size());\n        assertEquals(Model.class, list.get(0).getClass());\n    }\n\n    public void test_for_issue_1() throws Exception {\n        JSONObject jsonObject = new JSONObject();\n\n        JSONArray jsonArray = new JSONArray();\n        jsonArray.add(new Model());\n        jsonObject.put(\"models\", jsonArray);\n\n        List list = jsonObject.getObject(\"models\", new TypeReference<List<Model>>(){}.getType());\n\n        assertEquals(1, list.size());\n        assertEquals(Model.class, list.get(0).getClass());\n    }\n\n    public static class Model {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1202.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\n/**\n * Created by wenshao on 16/05/2017.\n */\npublic class Issue1202 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.US;\n    }\n\n    public void test_for_issue() throws Exception {\n        String text = \"{\\\"date\\\":\\\"Apr 27, 2017 5:02:17 PM\\\"}\";\n        Model model = JSON.parseObject(text, Model.class);\n        assertNotNull(model.date);\n//        assertEquals(\"{\\\"date\\\":\\\"Apr 27, 2017 5:02:17 PM\\\"}\", JSON.toJSONString(model));\n    }\n\n    public static class Model {\n        @JSONField(format = \"MMM dd, yyyy h:mm:ss aa\")\n        private java.util.Date date;\n\n        public Date getDate() {\n            return date;\n        }\n\n        public void setDate(Date date) {\n            this.date = date;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1203.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 16/05/2017.\n */\npublic class Issue1203 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String[] strArr = new String[5];\n        strArr[0] = \"a\";\n        strArr[1] = \"b\";\n        strArr[3] = \"d\";\n        strArr[4] = \"\";\n\n        String json = JSON.toJSONString(strArr, SerializerFeature.WriteNullStringAsEmpty);\n        assertEquals(\"[\\\"a\\\",\\\"b\\\",\\\"\\\",\\\"d\\\",\\\"\\\"]\", json);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1205.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\n/**\n * Created by wenshao on 11/06/2017.\n */\npublic class Issue1205 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSONArray array = new JSONArray();\n        array.add(new JSONObject());\n\n        List<Model> list = array.toJavaObject(new TypeReference<List<Model>>(){});\n        assertEquals(1, list.size());\n        assertEquals(Model.class, list.get(0).getClass());\n    }\n\n    public static class Model {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1222.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONAware;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 01/06/2017.\n */\npublic class Issue1222 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = new Model();\n        model.type = Type.A;\n        String text = JSON.toJSONString(model, SerializerFeature.WriteEnumUsingToString);\n        assertEquals(\"{\\\"type\\\":\\\"TypeA\\\"}\", text);\n    }\n\n    public static class Model {\n        public Type type;\n    }\n\n    public static enum Type implements JSONAware {\n        A, B;\n\n        public String toJSONString() {\n            return \"\\\"Type\" + this.name() + \"\\\"\";\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1222_1.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONAware;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 01/06/2017.\n */\npublic class Issue1222_1 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = new Model();\n        model.type = Type.A;\n        String text = JSON.toJSONString(model, SerializerFeature.WriteEnumUsingToString);\n        assertEquals(\"{\\\"type\\\":\\\"TypeA\\\"}\", text);\n    }\n\n    private static class Model {\n        public Type type;\n    }\n\n    private static enum Type implements JSONAware {\n        A, B;\n\n        public String toJSONString() {\n            return \"\\\"Type\" + this.name() + \"\\\"\";\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1225.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\n/**\n * Created by wenshao on 30/05/2017.\n */\npublic class Issue1225 extends TestCase {\n\n//    public void test_parseObject_0() {\n//        assertEquals(\"2\", JSON.parseObject(\"{\\\"data\\\":[\\\"1\\\",\\\"2\\\",\\\"3\\\"]}\",\n//                new TypeReference<BaseGenericType<List<String>>>(){}).data.get(1));\n//    }\n//\n//    public void test_parseObject_1() {\n//        assertEquals(\"2\", JSON.parseObject(\"{\\\"data\\\":[\\\"1\\\",\\\"2\\\",\\\"3\\\"]}\",\n//                new TypeReference<ExtendGenericType<String>>(){}).data.get(1));\n//    }\n\n    public void test_parseObject_2() {\n        SimpleGenericObject object = JSON.parseObject(\"{\\\"data\\\":[\\\"1\\\",\\\"2\\\",\\\"3\\\"],\\\"a\\\":\\\"a\\\"}\",\n                SimpleGenericObject.class);\n\n        assertEquals(\"2\", object.data.get(1));\n    }\n\n//    public void test_parseObject_2_jackson() throws Exception {\n//        ObjectMapper mapper = new ObjectMapper();\n//        SimpleGenericObject object = mapper.readValue(\"{\\\"data\\\":[\\\"1\\\",\\\"2\\\",\\\"3\\\"]}\",\n//                SimpleGenericObject.class);\n//\n//\n//        assertEquals(\"2\", object.data.get(1));\n//    }\n\n    static class BaseGenericType<T> {\n        public T data;\n    }\n\n    static class ExtendGenericType<T> extends BaseGenericType<List<T>> {\n    }\n\n    static class SimpleGenericObject extends ExtendGenericType<String> {\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1226.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 16/05/2017.\n */\npublic class Issue1226 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"{\\\"c\\\":\\\"c\\\"}\";\n        TestBean tb1 = JSON.parseObject(json, TestBean.class);\n        assertEquals('c', tb1.getC());\n\n        TestBean2 tb2 = JSON.parseObject(json, TestBean2.class);\n        assertEquals('c', tb2.getC().charValue());\n\n        String json2 = JSON.toJSONString(tb2);\n        JSONObject jo = JSON.parseObject(json2);\n\n        TestBean tb12 = jo.toJavaObject(TestBean.class);\n        assertEquals('c', tb12.getC());\n\n        TestBean2 tb22 = jo.toJavaObject(TestBean2.class);\n        assertEquals('c', tb22.getC().charValue());\n    }\n\n    static class TestBean{\n        char c;\n\n        public char getC() {\n            return c;\n        }\n\n        public void setC(char c) {\n            this.c = c;\n        }\n    }\n\n    static class TestBean2{\n        Character c;\n\n        public Character getC() {\n            return c;\n        }\n\n        public void setC(Character c) {\n            this.c = c;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1227.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n\n\npublic class Issue1227 extends TestCase {\n    public void test_for_issue() throws Exception {\n\n        String t2 = \"{\\\"state\\\":2,\\\"msg\\\":\\\"\\ufeffmsg2222\\\",\\\"data\\\":[]}\";\n\n        try {\n            Test model = JSON.parseObject(t2, Test.class);\n            assertEquals(\"\\uFEFFmsg2222\",model.msg);\n\n            model.msg = \"\\uFEFFss\";\n            String t3 = JSON.toJSONString(model);\n            assertTrue(t3.contains(model.msg));\n        } catch ( Exception e) {\n            e.printStackTrace();\n            fail(e.getMessage());\n        }\n    }\n\n    public static class Test {\n        public int state;\n        public String msg;\n    }\n}\n\n\n\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1229.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\n/**\n * Created by wenshao on 30/05/2017.\n */\npublic class Issue1229 extends TestCase {\n    public void test_for_issue() throws Exception {\n        final Object parsed = JSON.parse(\"{\\\"data\\\":{}}\");\n        assertTrue(parsed instanceof JSONObject);\n        assertTrue(((JSONObject)parsed).get(\"data\") instanceof JSONObject);\n\n        final Result<Data> result = JSON.parseObject(\"{\\\"data\\\":{}}\", new TypeReference<Result<Data>>(){});\n        assertNotNull(result.data);\n        assertTrue(result.data instanceof Data);\n\n        final Result<List<Data>> result2 = JSON.parseObject(\"{\\\"data\\\":[]}\", new TypeReference<Result<List<Data>>>(){});\n        assertNotNull(result2.data);\n        assertTrue(result2.data instanceof List);\n        assertEquals(0, result2.data.size());\n    }\n\n    public void parseErr() throws Exception {\n        JSON.parseObject(\"{\\\"data\\\":{}}\", new TypeReference<Result<List<Data>>>(){});\n        fail(\"should be failed due to error json\");\n    }\n\n    public static class Result<T>{\n        T data;\n        public void setData(T data) {\n            this.data = data;\n        }\n        public T getData() {\n            return data;\n        }\n    }\n\n    public static class Data {\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1231.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 30/05/2017.\n */\npublic class Issue1231 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = new Model();\n        model.self = model;\n        model.id = 123;\n\n        String text = JSON.toJSONString(model);\n        assertEquals(\"{\\\"id\\\":123,\\\"self\\\":{\\\"$ref\\\":\\\"@\\\"}}\", text);\n\n        {\n            Model model2 = JSON.parseObject(text, Model.class, Feature.DisableCircularReferenceDetect);\n            assertNotNull(model2);\n            assertNotSame(model2, model2.self);\n        }\n\n        {\n            JSONObject jsonObject = JSON.parseObject(text, Feature.DisableCircularReferenceDetect);\n            assertNotNull(jsonObject);\n\n            JSONObject self = jsonObject.getJSONObject(\"self\");\n\n            assertNotNull(self);\n            assertNotNull(self.get(\"$ref\"));\n            assertEquals(\"@\", self.get(\"$ref\"));\n        }\n    }\n\n    public static class Model {\n        public int id;\n        public Model self;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1233.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\nimport junit.framework.TestCase;\n\nimport java.lang.reflect.Type;\nimport java.util.List;\n\n/**\n * Created by wenshao on 30/05/2017.\n */\npublic class Issue1233 extends TestCase {\n    public void test_for_issue() throws Exception {\n        ParserConfig.getGlobalInstance().putDeserializer(Area.class, new ObjectDeserializer() {\n            public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n                JSONObject jsonObject = (JSONObject) parser.parse();\n                String areaType;\n\n                if (jsonObject.get(\"type\") instanceof String) {\n                    areaType = (String) jsonObject.get(\"type\");\n                } else {\n                    return null;\n                }\n                if (Area.TYPE_SECTION.equals(areaType)) {\n                    return (T) JSON.toJavaObject(jsonObject, Section.class);\n                } else if (Area.TYPE_FLOORV1.equals(areaType)) {\n                    return (T) JSON.toJavaObject(jsonObject, FloorV1.class);\n                } else if (Area.TYPE_FLOORV2.equals(areaType)) {\n                    return (T) JSON.toJavaObject(jsonObject, FloorV2.class);\n                }\n                return null;\n            }\n\n            public int getFastMatchToken() {\n                return 0;\n            }\n        });\n\n        JSONObject jsonObject = JSON.parseObject(\"{\\\"type\\\":\\\"floorV2\\\",\\\"templateId\\\":\\\"x123\\\"}\");\n\n        FloorV2 floorV2 = (FloorV2) jsonObject.toJavaObject(Area.class);\n        assertNotNull(floorV2);\n        assertEquals(\"x123\", floorV2.templateId);\n    }\n\n    public interface Area {\n        public static final String TYPE_SECTION = \"section\";\n        public static final String TYPE_FLOORV1 = \"floorV1\";\n        public static final String TYPE_FLOORV2 = \"floorV2\";\n\n        String getName();\n    }\n\n    public static class Section implements Area {\n        public List<Area> children;\n\n        public String type;\n\n        public String templateId;\n\n        public String getName() {\n            return templateId;\n        }\n    }\n\n    public static class FloorV1 implements Area {\n        public String type;\n        public String templateId;\n\n        public String getName() {\n            return templateId;\n        }\n    }\n\n    public static class FloorV2 implements Area {\n        public List<Area> children;\n\n        public String type;\n\n        public String templateId;\n\n        public String getName() {\n            return templateId;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1235.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 30/05/2017.\n */\npublic class Issue1235 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"{\\\"type\\\":\\\"floorV2\\\",\\\"templateId\\\":\\\"x123\\\"}\";\n\n        FloorV2 floorV2 = (FloorV2) JSON.parseObject(json, Area.class);\n        assertNotNull(floorV2);\n        assertNotNull(floorV2.templateId);\n        assertEquals(\"x123\", floorV2.templateId);\n        assertEquals(\"floorV2\", floorV2.type);\n\n        String json2 = JSON.toJSONString(floorV2, SerializerFeature.WriteClassName);\n        assertEquals(\"{\\\"type\\\":\\\"floorV2\\\",\\\"templateId\\\":\\\"x123\\\"}\", json2);\n    }\n\n    @JSONType(seeAlso = {FloorV2.class}, typeKey = \"type\")\n    public interface Area {\n        public static final String TYPE_SECTION = \"section\";\n        public static final String TYPE_FLOORV1 = \"floorV1\";\n        public static final String TYPE_FLOORV2 = \"floorV2\";\n    }\n\n    @JSONType(typeName = \"floorV2\")\n    public static class FloorV2 implements Area {\n        public String type;\n\n        public String templateId;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1235_noasm.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 30/05/2017.\n */\npublic class Issue1235_noasm extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"{\\\"type\\\":\\\"floorV2\\\",\\\"templateId\\\":\\\"x123\\\"}\";\n\n        FloorV2 floorV2 = (FloorV2) JSON.parseObject(json, Area.class);\n        assertNotNull(floorV2);\n        assertNotNull(floorV2.templateId);\n        assertEquals(\"x123\", floorV2.templateId);\n        assertEquals(\"floorV2\", floorV2.type);\n\n        String json2 = JSON.toJSONString(floorV2, SerializerFeature.WriteClassName);\n        assertEquals(\"{\\\"type\\\":\\\"floorV2\\\",\\\"templateId\\\":\\\"x123\\\"}\", json2);\n    }\n\n    @JSONType(seeAlso = {FloorV2.class}, typeKey = \"type\")\n    public interface Area {\n        public static final String TYPE_SECTION = \"section\";\n        public static final String TYPE_FLOORV1 = \"floorV1\";\n        public static final String TYPE_FLOORV2 = \"floorV2\";\n    }\n\n    @JSONType(typeName = \"floorV2\")\n    private static class FloorV2 implements Area {\n        public String type;\n\n        public String templateId;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1240.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\nimport org.springframework.util.LinkedMultiValueMap;\n\n/**\n * Created by wenshao on 01/06/2017.\n */\npublic class Issue1240 extends TestCase {\n    public void test_for_issue() throws Exception {\n        ParserConfig parserConfig = new ParserConfig();\n        parserConfig.addAccept(\"org.springframework.util.LinkedMultiValueMap\");\n        parserConfig.setAutoTypeSupport(true);\n        LinkedMultiValueMap<String, String> result = new LinkedMultiValueMap();\n        result.add(\"test\", \"11111\");\n        String test = JSON.toJSONString(result, SerializerFeature.WriteClassName);\n        JSON.parseObject(test, Object.class, parserConfig, JSON.DEFAULT_PARSER_FEATURE, Feature.SupportAutoType);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1246.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\nimport org.springframework.util.LinkedMultiValueMap;\n\n/**\n * Created by kimmking on 06/06/2017.\n */\npublic class Issue1246 extends TestCase {\n    public void test_for_issue() throws Exception {\n        B b = new B();\n        b.setX(\"xx\");\n\n        String test = JSON.toJSONString( b );\n        System.out.println(test);\n        assertEquals(\"{}\", test);\n\n        C c = new C();\n        c.ab = b ;\n\n        String testC = JSON.toJSONString( c );\n        System.out.println(testC);\n        assertEquals(\"{\\\"ab\\\":{}}\",testC);\n\n        D d = new D();\n        d.setAb( b );\n\n        String testD = JSON.toJSONString( d );\n        System.out.println(testD);\n        assertEquals(\"{\\\"ab\\\":{}}\",testD);\n    }\n\n    public static class C{\n        public A ab;\n    }\n\n    public static class D{\n        private A ab;\n\n        public A getAb() {\n            return ab;\n        }\n\n        public void setAb(A ab) {\n            this.ab = ab;\n        }\n    }\n\n    public static class A{\n        private String x;\n\n        public String getX() {\n            return x;\n        }\n\n        public void setX(String x) {\n            this.x = x;\n        }\n    }\n\n    public static class B extends A{\n        private String x;\n\n        @Override\n        @JSONField(serialize = false)\n        public String getX() {\n            return x;\n        }\n\n        @Override\n        public void setX(String x) {\n            this.x = x;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1254.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\n/**\n * Created by kimmking on 09/06/2017.\n */\npublic class Issue1254 extends TestCase {\n    public void test_for_issue() throws Exception {\n        A a = new A();\n        a._parentId = \"001\";\n        String test = JSON.toJSONString(a);\n        System.out.println(test);\n        assertEquals(\"{\\\"_parentId\\\":\\\"001\\\"}\", test);\n\n        B b = new B();\n        b.set_parentId(\"001\");\n\n\n        String testB = JSON.toJSONString(b);\n        System.out.println(testB);\n        assertEquals(\"{\\\"_parentId\\\":\\\"001\\\"}\", testB);\n\n    }\n\n    public static class A {\n        public String _parentId;\n    }\n\n    public static class B {\n        @JSONField(name = \"_parentId\")\n        private String _parentId;\n\n        public String get_parentId() {\n            return _parentId;\n        }\n\n        public void set_parentId(String _parentId) {\n            this._parentId = _parentId;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1256.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * Created by kimmking on 12/06/2017.\n */\npublic class Issue1256 extends TestCase {\n    public void test_for_issue() throws Exception {\n\n\n        // params ={\"key_obj\":{\"age\":39,\"name\":\"Mike\"},\"key_string\":\"Hello\",\"key_random\":-1193959466,\"key_int\":10000}\n\n        A a = new A();\n        a.name = \"Mike\";\n        a.age = 39;\n\n        Map<String,Object> map = new HashMap<String,Object>();\n        map.put(\"key_obj\",a);\n        map.put(\"key_string\",\"Hello\");\n        map.put(\"key_random\",-1193959466L);\n        map.put(\"key_int\",10000);\n\n        String jsonString = JSON.toJSONString(map);\n        assertTrue(jsonString.contains(\"Mike\"));\n    }\n\n    public static class A {\n        public String name;\n        public int age;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1262.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.Map;\nimport java.util.concurrent.ConcurrentHashMap;\n\n/**\n * Created by wenshao on 15/06/2017.\n */\npublic class Issue1262 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"chatterMap\\\":{}}\", Model.class);\n    }\n\n    public static class Model {\n        public Map<String, Chatter> chatterMap = new ConcurrentHashMap<String, Chatter>();\n    }\n\n    public static class Chatter {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1265.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 22/07/2017.\n */\npublic class Issue1265 extends TestCase {\n    public void test_0() throws Exception {\n        Object t = JSON.parseObject(\"{\\\"value\\\":{\\\"id\\\":123}}\", new TypeReference<Response>(){}).value;\n        assertEquals(123, ((JSONObject) t).getIntValue(\"id\"));\n\n        T1 t1 = JSON.parseObject(\"{\\\"value\\\":{\\\"id\\\":123}}\", new TypeReference<Response<T1>>(){}).value;\n        assertEquals(123, t1.id);\n\n        T2 t2 = JSON.parseObject(\"{\\\"value\\\":{\\\"id\\\":123}}\", new TypeReference<Response<T2>>(){}).value;\n        assertEquals(123, t2.id);\n\n    }\n\n    public static class Response<T> {\n        public T value;\n    }\n\n    public static class T1 {\n        public int id;\n    }\n\n    public static class T2 {\n        public int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1267.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.springframework.util.LinkedMultiValueMap;\n\n/**\n * Created by kimmking on 15/06/2017.\n */\npublic class Issue1267 extends TestCase {\n    public void test_for_issue() throws Exception {\n\n        String json = \"{\\\"message\\\":{\\\"refund_fee\\\":[\\\"0.01\\\"],\\\"pay_fee\\\":[\\\"0.01\\\"]},\\\"url\\\":\\\"http://localhost:8080\\\"}\";\n\n        LinkedMultiValueMap message = JSON.parseObject(JSON.parseObject(json).getString(\"message\"), LinkedMultiValueMap.class);  // 这是可以反序列化通过的\n\n        assertEquals(\"0.01\",message.get(\"pay_fee\").get(0));\n\n        PushHttpMessage pushHttpMessage = JSON.parseObject(json, PushHttpMessage.class);\n\n        assertEquals(\"0.01\",pushHttpMessage.getMessage().get(\"pay_fee\").get(0));\n    }\n\n    public static class PushHttpMessage {\n        private LinkedMultiValueMap<String, String> message;\n        private String                              url;\n\n        public LinkedMultiValueMap<String, String> getMessage() {\n            return message;\n        }\n\n        public void setMessage(LinkedMultiValueMap<String, String> message) {\n            this.message = message;\n        }\n\n        public String getUrl() {\n            return url;\n        }\n\n        public void setUrl(String url) {\n            this.url = url;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1271.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.deserializer.ExtraProcessor;\nimport junit.framework.TestCase;\nimport java.util.concurrent.atomic.AtomicInteger;\n\n/**\n * Created by kimmking on 15/06/2017.\n */\npublic class Issue1271 extends TestCase {\n    public void test_for_issue() throws Exception {\n\n        String json = \"{\\\"a\\\":1,\\\"b\\\":2}\";\n\n        final AtomicInteger count = new AtomicInteger(0);\n        ExtraProcessor extraProcessor = new ExtraProcessor() {\n            public void processExtra(Object object, String key, Object value) {\n                System.out.println(\"setter not found, class \" + object.getClass().getName() + \", property \" + key);\n                count.incrementAndGet();\n            }\n        };\n\n\n        A a = JSON.parseObject(json,A.class,extraProcessor);\n        assertEquals(1,a.a);\n        assertEquals(1, count.intValue());\n\n        B b = JSON.parseObject(json,B.class,extraProcessor);\n        assertEquals(1,b.a);\n        assertEquals(2, count.intValue());\n\n    }\n\n    public static class A {\n        public int a;\n    }\n\n    public static class B {\n        private int a;\n\n        public int getA() {\n            return a;\n        }\n\n        public void setA(int a) {\n            this.a = a;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1272.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 18/06/2017.\n */\npublic class Issue1272 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Exception exception = null;\n\n        try {\n            JSON.toJSONString(new Point());\n        }catch (JSONException ex) {\n            exception = ex;\n        }\n        assertNotNull(exception);\n        assertEquals(NullPointerException.class, exception.getCause().getClass());\n    }\n\n    public static class Point {\n\n        private Long userId;\n\n        public long getUserId() {\n            return userId;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1272_IgnoreError.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 18/06/2017.\n */\npublic class Issue1272_IgnoreError extends TestCase {\n    public void test_for_issue() throws Exception {\n        String text = JSON.toJSONString(new Point(), SerializerFeature.IgnoreErrorGetter);\n        assertEquals(\"{}\", text);\n    }\n\n    public static class Point {\n\n        private Long userId;\n\n        public long getUserId() {\n            return userId;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1274.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.NameFilter;\nimport junit.framework.TestCase;\n\nimport java.util.concurrent.atomic.AtomicInteger;\n\n/**\n * Created by kimmking on 15/06/2017.\n */\npublic class Issue1274 extends TestCase {\n    public void test_for_issue() throws Exception {\n\n        User user = new User();\n        user.setId(1);\n        user.setName(\"name\");\n\n        NameFilter filter =  new NameFilter() {\n            public String process(Object object, String name, Object value) {\n                System.out.println(\"name=\"+name+\",value=\"+value);\n                if(name.equals(\"name\")){\n                    return \"nt\";\n                }\n                return name;\n            }\n        };\n\n        // test for  JSON.toJSONString(user,filter);\n        String jsonString = JSON.toJSONString(user,filter);\n        System.out.println(jsonString);\n        assertEquals(\"{\\\"id\\\":1,\\\"nt\\\":\\\"name\\\"}\", jsonString);\n\n        // test for jsonSerializer.getNameFilters().add(filter);\n        JSONSerializer jsonSerializer = new JSONSerializer();\n        jsonSerializer.getNameFilters().add(filter);\n        jsonSerializer.write(user);\n        jsonString = jsonSerializer.toString();\n        System.out.println(jsonString);\n        assertEquals(\"{\\\"id\\\":1,\\\"nt\\\":\\\"name\\\"}\",jsonString);\n\n    }\n\n    public static class User {\n        private int id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1276.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 18/06/2017.\n */\npublic class Issue1276 extends TestCase {\n    public void test_for_issue() throws Exception {\n        MyException myException = new MyException(100,\"error msg\");\n        String str = JSON.toJSONString(myException);\n        System.out.println(str);\n\n        MyException myException1 = JSON.parseObject(str, MyException.class);\n        assertEquals(myException.getCode(), myException1.getCode());\n\n        String str1 = JSON.toJSONString(myException1);\n        assertEquals(str, str1);\n\n    }\n\n    public static class MyException extends RuntimeException{\n        private static final long serialVersionUID = 7815426752583648734L;\n        private long code;\n\n        public MyException() {\n            super();\n        }\n\n        public MyException(String message, Throwable cause) {\n            super(message, cause);\n        }\n\n        public MyException(String message) {\n            super(message);\n        }\n\n        public MyException(Throwable cause) {\n            super(cause);\n        }\n\n        public MyException(long code) {\n            super();\n            this.code = code;\n        }\n\n        public MyException(long code, String message, Throwable cause) {\n            super(message, cause);\n            this.code = code;\n        }\n\n        public MyException(long code, String message) {\n            super(message);\n            this.code = code;\n        }\n\n        public MyException(long code, Throwable cause) {\n            super(cause);\n            this.code = code;\n        }\n\n        public void setCode(long code) {\n            this.code = code;\n        }\n\n        public long getCode() {\n            return code;\n        }\n\n        @Override\n        public String toString() {\n            return \"MyException{\" +\n                    \"code=\" + code +\n                    '}';\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1278.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport junit.framework.TestCase;\n\n/**\n * Created by kimmking on 20/06/2017.\n */\npublic class Issue1278 extends TestCase {\n    public void test_for_issue() throws Exception {\n\n        String json1 = \"{\\\"name\\\":\\\"name\\\",\\\"id\\\":1}\";\n        String json2 = \"{\\\"user\\\":\\\"user\\\",\\\"id\\\":2}\";\n        AlternateNames c1 = JSON.parseObject(json1, AlternateNames.class);\n\n        assertEquals(\"name\",c1.name);\n        assertEquals(1,c1.id);\n\n        AlternateNames c2 = JSON.parseObject(json2, AlternateNames.class);\n\n        assertEquals(\"user\",c2.name);\n        assertEquals(2,c2.id);\n\n        DefaultJSONParser parser = new DefaultJSONParser(json1);\n        c1 = new AlternateNames();\n        parser.parseObject(c1);\n\n        assertEquals(\"name\",c1.name);\n        assertEquals(1,c1.id);\n\n        c2 = new AlternateNames();\n        parser = new DefaultJSONParser(json2);\n        parser.parseObject(c2);\n\n        assertEquals(\"user\",c2.name);\n        assertEquals(2,c2.id);\n\n        JSONObject jsonObject = JSON.parseObject(json1);\n        c1 = jsonObject.toJavaObject(AlternateNames.class);\n\n        assertEquals(\"name\",c1.name);\n        assertEquals(1,c1.id);\n\n        jsonObject = JSON.parseObject(json2);\n        c2 = jsonObject.toJavaObject(AlternateNames.class);\n\n        assertEquals(\"user\",c2.name);\n        assertEquals(2,c2.id);\n\n    }\n\n    /**\n     * {\"name\":\"name\",\"id\":1}\n     * {\"user\":\"user\",\"id\":2}\n     */\n    public static class AlternateNames {\n        @JSONField(alternateNames = {\"name\", \"user\"})\n        public String name;\n        public int id;\n    }\n\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1281.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\n\nimport java.lang.reflect.Type;\nimport java.util.Map;\n\n/**\n * Created by wenshao on 24/06/2017.\n */\npublic class Issue1281 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Type type1 =  new TypeReference<Result<Map<String, Object>>>() {}.getType();\n        Type type2 =  new TypeReference<Result<Map<String, Object>>>() {}.getType();\n        assertSame(type1, type2);\n    }\n\n    public static class Result<T> {\n        public T value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1293.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n\n/**\n * Created by kimmking on 27/06/2017.\n */\npublic class Issue1293 extends TestCase {\n\n    public void test_for_issue() {\n        String data = \"{\\\"idType\\\":\\\"123123\\\",\\\"userType\\\":\\\"134\\\",\\\"count\\\":\\\"123123\\\"}\";\n        {\n            Test test = JSON.parseObject(data, Test.class);\n\n            assertNull(test.idType);\n            assertNull(test.userType);\n        }\n\n        Test test = JSON.parseObject(data, Test.class);\n        assertNull(test.idType);\n        assertNull(test.userType);\n\n    }\n\n    static class Test{\n        private long count;\n        private IdType idType;\n        private UserType userType;\n\n        public long getCount() {\n            return count;\n        }\n\n        public void setCount(long count) {\n            this.count = count;\n        }\n\n        public IdType getIdType() {\n            return idType;\n        }\n\n        public void setIdType(IdType idType) {\n            this.idType = idType;\n        }\n\n        public UserType getUserType() {\n            return userType;\n        }\n\n        public void setUserType(UserType userType) {\n            this.userType = userType;\n        }\n    }\n\n    static enum IdType{\n        A,B\n    }\n    static enum UserType{\n        C,D\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1298.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\n/**\n * Created by wenshao on 30/06/2017.\n */\npublic class Issue1298 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.US;\n    }\n\n    public void test_for_issue() throws Exception {\n        JSONObject object = new JSONObject();\n\n        object.put(\"date\", \"2017-06-29T08:06:30.000+05:30\");\n\n        Date date = object.getObject(\"date\", java.util.Date.class);\n\n        assertEquals(\"\\\"2017-06-29T10:36:30+08:00\\\"\", JSON.toJSONString(date, SerializerFeature.UseISO8601DateFormat));\n    }\n\n    public void test_for_issue_1() throws Exception {\n        JSONObject object = new JSONObject();\n\n        object.put(\"date\", \"2017-08-15 20:00:00.000\");\n\n        Date date = object.getObject(\"date\", java.util.Date.class);\n\n        assertEquals(\"\\\"2017-08-15T20:00:00+08:00\\\"\", JSON.toJSONString(date, SerializerFeature.UseISO8601DateFormat));\n\n        JSON.parseObject(\"\\\"2017-08-15 20:00:00.000\\\"\", java.util.Date.class);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1200/Issue1299.java",
    "content": "package com.alibaba.json.bvt.issue_1200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport java.io.Serializable;\nimport java.util.List;\n\n/**\n * Created by wenshao on 01/07/2017.\n */\npublic class Issue1299 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String jsonStr = \"{\\\"code\\\":201,\\\"data\\\":{\\\"materials\\\":[{\\\"material\\\":\\\"locale\\\",\\\"success\\\":true,\"\n                + \"\\\"material_id\\\":356,\\\"id\\\":\\\"5099\\\"}],\\\"unitInfo\\\":{\\\"languages\\\":[\\\"'en_US'\\\",\\\"ru_RU\\\"],\"\n                + \"\\\"unitName\\\":\\\"PC_ROCKBROS\\\",\\\"sceneKey\\\":\\\"shop_activity_page\\\",\\\"domain\\\":\\\"shopcdp.aliexpress\"\n                + \".com\\\",\\\"format\\\":\\\"HTML\\\",\\\"unitId\\\":\\\"1625\\\",\\\"id\\\":1761,\\\"rootPath\\\":\\\"shopcdp\\\",\"\n                + \"\\\"userId\\\":\\\"jianqing.zengjq\\\",\\\"platforms\\\":[\\\"pc\\\",\\\"mobile\\\"],\\\"status\\\":2}},\\\"success\\\":true}\";\n\n        UnitsSaveResponse response = JSON.parseObject(jsonStr, UnitsSaveResponse.class);\n        Class<?> dataClass = response.getData().getClass();\n        System.out.println(dataClass);\n    }\n\n    public static class ServiceResult<T> extends BaseResultDo implements Serializable {\n        @JSONField(\n                name = \"data\"\n        )\n        private T data;\n\n        public ServiceResult() {\n        }\n\n        public T getData() {\n            return this.data;\n        }\n\n        public void setData(T data) {\n            this.data = data;\n        }\n    }\n\n    public static class UnitsSaveResponse extends ServiceResult<UnitSave> {\n\n\n\n    }\n\n    public static class UnitSave implements Serializable {\n\n        private SaveUnitInfo unitInfo;\n\n        private List materials;\n\n        public SaveUnitInfo getUnitInfo() {\n            return unitInfo;\n        }\n\n        public void setUnitInfo(SaveUnitInfo unitInfo) {\n            this.unitInfo = unitInfo;\n        }\n\n        public List getMaterials() {\n            return materials;\n        }\n\n        public void setMaterials(List materials) {\n            this.materials = materials;\n        }\n    }\n\n    public static class SaveUnitInfo {\n\n    }\n\n    public static class BaseResultDo{\n\n    }\n\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1300.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.util.TypeUtils;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\n/**\n * Created by wenshao on 01/07/2017.\n */\npublic class Issue1300 extends TestCase {\n    public void testFullJSON() {\n        JSONObject data = new JSONObject();\n        data.put(\"name\", \"string\");\n        data.put(\"code\", 1);\n        data.put(\"pinyin\", \"pinyin\");\n        City object = TypeUtils.castToJavaBean(data, City.class);\n        assertEquals(\"string\", object.name);\n        assertEquals(1, object.code);\n        assertEquals(\"pinyin\", object.pinyin);\n    }\n\n    public void testEmptyJSON() {\n        City object = TypeUtils.castToJavaBean(new JSONObject(), City.class);\n        Assert.assertEquals(null, object.name);\n        Assert.assertEquals(0, object.code);\n    }\n\n\n    public static class City implements Parcelable {\n        public final int code;\n        public final String name;\n        public final String pinyin;\n\n        @JSONCreator\n        public City(@JSONField(name = \"code\") int code,\n                    @JSONField(name = \"name\") String name,\n                    @JSONField(name = \"pinyin\") String pinyin) {\n            this.code = code;\n            this.name = name;\n            this.pinyin = pinyin;\n        }\n    }\n\n    public static interface Parcelable {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1303.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.util.TypeUtils;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\n/**\n * Created by kimmking on 02/07/2017.\n */\npublic class Issue1303 extends TestCase {\n    public void test_for_issue() {\n        String jsonString = \"[{\\\"author\\\":{\\\"__type\\\":\\\"Pointer\\\",\\\"className\\\":\\\"_User\\\",\\\"objectId\\\":\\\"a876c49c18\\\"},\\\"createdAt\\\":\\\"2017-07-02 20:06:13\\\",\\\"imgurl\\\":\\\"https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=11075891,34401011&fm=117&gp=0.jpg\\\",\\\"name\\\":\\\"衣架\\\",\\\"objectId\\\":\\\"029d5493cd\\\",\\\"prices\\\":\\\"1\\\",\\\"updatedAt\\\":\\\"2017-07-02 20:06:13\\\"}]\";\n        JSONArray jsonArray = JSON.parseArray(jsonString);\n        //jsonArray = new JSONArray(jsonArray);//这一句打开也一样是正确的\n        double total = 0;\n        for (int i = 0; i <jsonArray.size() ; i++) {\n            JSONObject object=jsonArray.getJSONObject(i);\n            assertEquals(\"衣架\",object.getString(\"name\"));\n            total=total+ Double.valueOf(object.getString(\"prices\"));\n        }\n        assertEquals(1.0d,total);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1306.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.io.Serializable;\nimport java.util.Arrays;\nimport java.util.List;\n\n/**\n * Created by kimmking on 02/07/2017.\n */\npublic class Issue1306 extends TestCase {\n\n    public void test_for_issue() {\n        Goods goods = new Goods();\n        goods.setProperties(Arrays.asList(new Goods.Property()));\n        TT tt = new TT(goods);\n        String json = JSON.toJSONString(tt);\n        assertEquals(\"{\\\"goodsList\\\":[{\\\"properties\\\":[{}]}]}\", json);\n        TT n = JSON.parseObject(json, TT.class);\n        assertNotNull(n);\n        assertNotNull(n.getGoodsList());\n        assertNotNull(n.getGoodsList().get(0));\n        assertNotNull(n.getGoodsList().get(0).getProperties());\n    }\n\n    public static abstract class IdEntity<ID extends Serializable> implements Cloneable, Serializable{\n\n        private static final long serialVersionUID = 4877536176216854937L;\n\n        public IdEntity() {}\n\n        public abstract ID getId();\n        public abstract void setId(ID id);\n    }\n\n    public static class LongEntity extends IdEntity<Long> {\n\n        private static final long serialVersionUID = -2740365657805589848L;\n\n        private Long id;\n\n        @Override\n        public Long getId() {\n            return id;\n        }\n\n        public void setId(Long id) {\n            this.id = id;\n        }\n    }\n\n    public static class Goods extends LongEntity{\n        private static final long serialVersionUID = -5751106975913625097L;\n        private List<Property> properties;\n\n        public List<Property> getProperties() {\n            return properties;\n        }\n\n        public void setProperties(List<Property> properties) {\n            this.properties = properties;\n        }\n\n        public static class Property extends LongEntity{\n            private static final long serialVersionUID = 7941148286688199390L;\n        }\n    }\n\n    public static class TT extends LongEntity {\n        private static final long serialVersionUID = 2988415809510669142L;\n\n        public TT(){}\n        public TT(Goods goods){\n            goodsList = Arrays.asList(goods);\n        }\n\n\n        private List<Goods> goodsList;\n\n        public List<Goods> getGoodsList() {\n            return goodsList;\n        }\n\n        public void setGoodsList(List<Goods> goodsList) {\n            this.goodsList = goodsList;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1307.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.JSON;\n\nimport com.alibaba.fastjson.serializer.BeanContext;\nimport com.alibaba.fastjson.serializer.ContextValueFilter;\nimport com.alibaba.fastjson.serializer.SerializeFilter;\nimport com.alibaba.fastjson.serializer.ValueFilter;\nimport junit.framework.TestCase;\nimport org.junit.*;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\n/**\n * Created by kimmking on 02/07/2017.\n */\npublic class Issue1307 extends TestCase {\n    ContextValueFilter contextValueFilter = new ContextValueFilter() {\n     public Object process(BeanContext beanContext, Object obj, String name, Object value) {\n            return \"mark-\"+value;\n        }\n    };\n    ValueFilter valueFilter = new ValueFilter() {\n        public Object process(Object object, String name, Object value) {\n            return value;\n        }\n    };\n\n    @Test\n    public void test_context_value_filter_not_effected () {\n        List<Object> params = new ArrayList<Object>();\n        Map data = new HashMap();\n        data.put(\"name\", \"ace\");\n        params.add(data);\n        //fail Actual   :[{\"name\":\"ace\"}]\n        Assert.assertEquals(\"[{\\\"name\\\":\\\"mark-ace\\\"}]\", JSON.toJSONString(params,\n                        new SerializeFilter[]{\n                                contextValueFilter\n                        })\n        );\n\n    }\n\n    @Test\n    public void test_context_value_filter_effected() {\n        List<Object> params = new ArrayList<Object>();\n        Map data = new HashMap();\n        data.put(\"name\", \"ace\");\n        params.add(data);\n        //success\n        Assert.assertEquals(\"[{\\\"name\\\":\\\"mark-ace\\\"}]\", JSON.toJSONString(params,\n                        new SerializeFilter[]{\n                                contextValueFilter,\n                                valueFilter\n                        })\n        );\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1310.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 29/07/2017.\n */\npublic class Issue1310 extends TestCase {\n    public void test_trim() throws Exception {\n        Model model = new Model();\n        model.value = \" a \";\n\n        assertEquals(\"{\\\"value\\\":\\\"a\\\"}\", JSON.toJSONString(model));\n\n        Model model2 = JSON.parseObject(\"{\\\"value\\\":\\\" a \\\"}\", Model.class);\n        assertEquals(\"a\", model2.value);\n    }\n\n    public static class Model {\n        @JSONField(format = \"trim\")\n        public String value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1310_noasm.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 29/07/2017.\n */\npublic class Issue1310_noasm extends TestCase {\n    public void test_trim() throws Exception {\n        Model model = new Model();\n        model.value = \" a \";\n\n        assertEquals(\"{\\\"value\\\":\\\"a\\\"}\", JSON.toJSONString(model));\n\n        Model model2 = JSON.parseObject(\"{\\\"value\\\":\\\" a \\\"}\", Model.class);\n        assertEquals(\"a\", model2.value);\n    }\n\n    private static class Model {\n        @JSONField(format = \"trim\")\n        private String value;\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1319.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 16/07/2017.\n */\npublic class Issue1319 extends TestCase {\n    public void test_for_issue() throws Exception {\n        MyTest test = new MyTest(1, MyEnum.Test1);\n        String result = JSON.toJSONString(test, SerializerFeature.WriteClassName);\n        System.out.println(result);\n        test = JSON.parseObject(result, MyTest.class);\n        System.out.println(JSON.toJSONString(test));\n        assertEquals(MyEnum.Test1, test.getMyEnum());\n        assertEquals(1, test.value);\n    }\n\n    @JSONType(seeAlso = {OtherEnum.class, MyEnum.class})\n    interface EnumInterface{\n\n    }\n    @JSONType(typeName = \"myEnum\")\n    enum MyEnum implements EnumInterface {\n        Test1,\n        Test2\n    }\n    @JSONType(typeName = \"other\")\n    enum OtherEnum implements EnumInterface {\n        Other\n    }\n    static class MyTest{\n        private int value;\n        private EnumInterface myEnum;\n\n        public MyTest() {\n        }\n\n        public MyTest(int property, MyEnum enumProperty) {\n            this.value = property;\n            this.myEnum = enumProperty;\n        }\n        public int getValue() {\n            return value;\n        }\n        public EnumInterface getMyEnum() {\n            return myEnum;\n        }\n        public void setMyEnum(EnumInterface myEnum) {\n            this.myEnum = myEnum;\n        }\n        public void setValue(int value) {\n            this.value = value;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1320.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 23/07/2017.\n */\npublic class Issue1320 extends TestCase {\n    public void test_for_issue() throws Exception {\n        SSOToken token = new SSOToken();\n        JSON.toJSONString(token);\n    }\n\n    @SuppressWarnings(\"serial\")\n    public static class SSOToken extends Token {\n\n        /* 登录类型 */\n        private Integer type;\n\n        /* 预留 */\n        private String data;\n\n        /**\n         * <p>\n         * 预留对象，默认 fastjson 不参与序列化（也就是不存放在 cookie 中 ）\n         * </p>\n         * <p>\n         * 此处配合分布式缓存使用，可以存放用户常用基本信息\n         * </p>\n         */\n        @JSONField(serialize = false)\n        private Object object;\n\n        public SSOToken() {\n            //this.setApp(SSOConfig.getInstance().getRole());\n        }\n\n        public Integer getType() {\n            return type;\n        }\n\n        public void setType(Integer type) {\n            this.type = type;\n        }\n\n        public String getData() {\n            return data;\n        }\n\n        public void setData(String data) {\n            this.data = data;\n        }\n\n        /**\n         * 缓存用户信息，自动类型转换\n         */\n        @SuppressWarnings(\"unchecked\")\n        public <T> T getCacheObject() {\n            return (T) this.getObject();\n        }\n\n        public Object getObject() {\n            return object;\n        }\n\n        public void setObject(Object object) {\n            this.object = object;\n        }\n    }\n\n    public static class Token {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1330.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 30/07/2017.\n */\npublic class Issue1330 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":\\\"ABC\\\"}\", Model.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n        assertTrue(error.getMessage().indexOf(\"parseInt error, field : value\") != -1);\n    }\n\n    public void test_for_issue_1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":[]}\", Model.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n        assertTrue(error.getMessage().indexOf(\"parseInt error, field : value\") != -1);\n    }\n\n    public void test_for_issue_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":{}}\", Model.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n        assertTrue(error.getMessage().indexOf(\"parseInt error, field : value\") != -1);\n    }\n\n    public static class Model {\n        public int value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1330_boolean.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 30/07/2017.\n */\npublic class Issue1330_boolean extends TestCase {\n    public void test_for_issue() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":\\\"ABC\\\"}\", Model.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n        assertTrue(error.getMessage().indexOf(\"parseBoolean error, field : value\") != -1);\n    }\n\n    public void test_for_issue_1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":[]}\", Model.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n        assertTrue(error.getMessage().indexOf(\"parseBoolean error, field : value\") != -1);\n    }\n\n    public void test_for_issue_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":{}}\", Model.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n        assertTrue(error.getMessage().indexOf(\"parseBoolean error, field : value\") != -1);\n    }\n\n    public static class Model {\n        public boolean value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1330_byte.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 30/07/2017.\n */\npublic class Issue1330_byte extends TestCase {\n    public void test_for_issue() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":\\\"ABC\\\"}\", Model.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n        assertTrue(error.getMessage().indexOf(\"parseByte error, field : value\") != -1);\n    }\n\n    public void test_for_issue_1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":[]}\", Model.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n        assertTrue(error.getMessage().indexOf(\"parseByte error, field : value\") != -1);\n    }\n\n    public void test_for_issue_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":{}}\", Model.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n        assertTrue(error.getMessage().indexOf(\"parseByte error, field : value\") != -1);\n    }\n\n    public static class Model {\n        public byte value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1330_decimal.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport junit.framework.TestCase;\n\nimport java.math.BigDecimal;\n\n/**\n * Created by wenshao on 30/07/2017.\n */\npublic class Issue1330_decimal extends TestCase {\n    public void test_for_issue() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":\\\"中ABC\\\"}\", Model.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n        assertTrue(error.getMessage().indexOf(\"parseDecimal error, field : value\") != -1);\n    }\n\n    public void test_for_issue_1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":[]}\", Model.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n        assertTrue(error.getMessage().indexOf(\"parseDecimal error, field : value\") != -1);\n    }\n\n    public void test_for_issue_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":{\\\"xx\\\":[]}}\", Model.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n        assertTrue(error.getMessage().indexOf(\"parseDecimal error, field : value\") != -1);\n    }\n\n    public static class Model {\n        public BigDecimal value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1330_double.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 30/07/2017.\n */\npublic class Issue1330_double extends TestCase {\n    public void test_for_issue() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":\\\"ABC\\\"}\", Model.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n        assertTrue(error.getMessage().indexOf(\"parseDouble error, field : value\") != -1);\n    }\n\n    public void test_for_issue_1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":[]}\", Model.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n        assertTrue(error.getMessage().indexOf(\"parseDouble error, field : value\") != -1);\n    }\n\n    public void test_for_issue_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":{}}\", Model.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n        assertTrue(error.getMessage().indexOf(\"parseDouble error, field : value\") != -1);\n    }\n\n    public static class Model {\n        public double value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1330_float.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 30/07/2017.\n */\npublic class Issue1330_float extends TestCase {\n    public void test_for_issue() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":\\\"ABC\\\"}\", Model.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n        assertTrue(error.getMessage().indexOf(\"parseLong error, field : value\") != -1);\n    }\n\n    public void test_for_issue_1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":[]}\", Model.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n        assertTrue(error.getMessage().indexOf(\"parseLong error, field : value\") != -1);\n    }\n\n    public void test_for_issue_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":{}}\", Model.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n        assertTrue(error.getMessage().indexOf(\"parseLong error, field : value\") != -1);\n    }\n\n    public static class Model {\n        public float value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1330_long.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 30/07/2017.\n */\npublic class Issue1330_long extends TestCase {\n    public void test_for_issue() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":\\\"ABC\\\"}\", Model.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n        assertTrue(error.getMessage().indexOf(\"parseLong error, field : value\") != -1);\n    }\n\n    public void test_for_issue_1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":[]}\", Model.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n        assertTrue(error.getMessage().indexOf(\"parseLong error, field : value\") != -1);\n    }\n\n    public void test_for_issue_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":{}}\", Model.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n        assertTrue(error.getMessage().indexOf(\"parseLong error, field : value\") != -1);\n    }\n\n    public static class Model {\n        public long value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1330_short.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 30/07/2017.\n */\npublic class Issue1330_short extends TestCase {\n    public void test_for_issue() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":\\\"ABC\\\"}\", Model.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n        assertTrue(error.getMessage().indexOf(\"parseShort error, field : value\") != -1);\n    }\n\n    public void test_for_issue_1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":[]}\", Model.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n        assertTrue(error.getMessage().indexOf(\"parseShort error, field : value\") != -1);\n    }\n\n    public void test_for_issue_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":{}}\", Model.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n        assertTrue(error.getMessage().indexOf(\"parseShort error, field : value\") != -1);\n    }\n\n    public static class Model {\n        public short value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1335.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 22/07/2017.\n */\npublic class Issue1335 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"{\\n\" +\n                \"\\\"id\\\": \\\"21496a63f5\\\",\\n\" +\n                \"\\\"title\\\": \\\"\\\",\\n\" +\n                \"\\\"url\\\": \\\"http://hl-img.peco.uodoo.com/hubble-test/app/sm/e9b884c1dcd671f128bac020e070e273.jpg;,,JPG;3,208x\\\",\\n\" +\n                \"\\\"type\\\": \\\"JPG\\\",\\n\" +\n                \"\\\"optimal_width\\\": 400,\\n\" +\n                \"\\\"optimal_height\\\": 267,\\n\" +\n                \"\\\"original_save_url\\\": \\\"http://hl-img.peco.uodoo.com/hubble-test/app/sm/e9b884c1dcd671f128bac020e070e273.jpg\\\",\\n\" +\n                \"\\\"phash\\\": \\\"62717D190987A7AE\\\"\\n\" +\n                \"                            }\";\n        Image image = JSON.parseObject(json, Image.class);\n        assertEquals(\"21496a63f5\", image.id);\n        assertEquals(\"http://hl-img.peco.uodoo.com/hubble-test/app/sm/e9b884c1dcd671f128bac020e070e273.jpg;,,JPG;3,208x\", image.url);\n        assertEquals(\"\", image.title);\n        assertEquals(\"JPG\", image.type);\n        assertEquals(400, image.optimalWidth);\n        assertEquals(267, image.optimalHeight);\n        assertEquals(\"http://hl-img.peco.uodoo.com/hubble-test/app/sm/e9b884c1dcd671f128bac020e070e273.jpg\", image.original_save_url);\n        assertEquals(\"62717D190987A7AE\", image.phash);\n    }\n\n    public static class Image {\n        public String id;\n        public String title;\n        public String url;\n        public String type;\n        public int optimalWidth;\n        public int optimalHeight;\n        public String original_save_url;\n        public String phash;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1341.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\n\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.fastjson.support.config.FastJsonConfig;\nimport com.alibaba.fastjson.support.jaxrs.FastJsonProvider;\nimport org.glassfish.jersey.CommonProperties;\nimport org.glassfish.jersey.client.ClientConfig;\nimport org.glassfish.jersey.internal.InternalProperties;\nimport org.glassfish.jersey.internal.util.PropertiesHelper;\nimport org.glassfish.jersey.server.JSONP;\nimport org.glassfish.jersey.server.ResourceConfig;\nimport org.glassfish.jersey.test.JerseyTest;\nimport org.glassfish.jersey.test.TestProperties;\nimport org.junit.Assert;\nimport org.junit.Test;\n\nimport javax.ws.rs.*;\nimport javax.ws.rs.core.Application;\nimport javax.ws.rs.core.Configuration;\nimport javax.ws.rs.core.Feature;\nimport javax.ws.rs.core.FeatureContext;\nimport javax.ws.rs.ext.MessageBodyReader;\nimport javax.ws.rs.ext.MessageBodyWriter;\nimport java.util.Date;\n\npublic class Issue1341 extends JerseyTest {\n    static class Book {\n\n        private int bookId;\n        private String bookName;\n        private String publisher;\n        private String isbn;\n        private Date publishTime;\n        private Object hello;\n\n        public int getBookId() {\n            return bookId;\n        }\n\n        public void setBookId(int bookId) {\n            this.bookId = bookId;\n        }\n\n        public String getBookName() {\n            return bookName;\n        }\n\n        public void setBookName(String bookName) {\n            this.bookName = bookName;\n        }\n\n        public String getPublisher() {\n            return publisher;\n        }\n\n        public void setPublisher(String publisher) {\n            this.publisher = publisher;\n        }\n\n        public String getIsbn() {\n            return isbn;\n        }\n\n        public void setIsbn(String isbn) {\n            this.isbn = isbn;\n        }\n\n        public Date getPublishTime() {\n            return publishTime;\n        }\n\n        public void setPublishTime(Date publishTime) {\n            this.publishTime = publishTime;\n        }\n\n        public Object getHello() {\n            return hello;\n        }\n\n        public void setHello(Object hello) {\n            this.hello = hello;\n        }\n    }\n\n    static class FastJsonFeature implements Feature {\n\n        private final static String JSON_FEATURE = FastJsonFeature.class.getSimpleName();\n\n        public boolean configure(final FeatureContext context) {\n            final Configuration config = context.getConfiguration();\n            final String jsonFeature = CommonProperties.getValue(config.getProperties(), config.getRuntimeType(), InternalProperties.JSON_FEATURE, JSON_FEATURE,\n                    String.class);\n            // Other JSON providers registered.\n            if (!JSON_FEATURE.equalsIgnoreCase(jsonFeature)) {\n                return false;\n            }\n            // Disable other JSON providers.\n            context.property(PropertiesHelper.getPropertyNameForRuntime(InternalProperties.JSON_FEATURE, config.getRuntimeType()), JSON_FEATURE);\n            // Register FastJson.\n            if (!config.isRegistered(FastJsonProvider.class)) {\n                //DisableCircularReferenceDetect\n                FastJsonProvider fastJsonProvider = new FastJsonProvider();\n                FastJsonConfig fastJsonConfig = new FastJsonConfig();\n                //fastJsonConfig.setSerializerFeatures(SerializerFeature.DisableCircularReferenceDetect,SerializerFeature.BrowserSecure);\n\n                fastJsonConfig.setSerializerFeatures(SerializerFeature.DisableCircularReferenceDetect);\n\n                fastJsonProvider.setFastJsonConfig(fastJsonConfig);\n\n                context.register(fastJsonProvider, MessageBodyReader.class, MessageBodyWriter.class);\n            }\n            return true;\n        }\n    }\n\n\n    @Path(\"book1341\")\n    public static class BookRestFul {\n\n        @GET\n        @Path(\"{id}\")\n        @Produces({\"application/javascript\", \"application/json\"})\n        @Consumes({\"application/javascript\", \"application/json\"})\n        @JSONP(queryParam = \"callback\")\n        public Book getBookById(@PathParam(\"id\") Long id) {\n\n            Book book = new Book();\n            book.setBookId(2);\n            book.setBookName(\"Python源码剖析\");\n            book.setPublisher(\"电子工业出版社\");\n            book.setPublishTime(new Date());\n            book.setIsbn(\"911122\");\n\n            return book;\n        }\n    }\n\n    @Override\n    protected void configureClient(ClientConfig config) {\n        config.register(new FastJsonFeature()).register(FastJsonProvider.class);\n    }\n\n    @Override\n    protected Application configure() {\n        enable(TestProperties.LOG_TRAFFIC);\n        enable(TestProperties.DUMP_ENTITY);\n\n        ResourceConfig config = new ResourceConfig();\n\n        FastJsonProvider fastJsonProvider = new FastJsonProvider();\n        FastJsonConfig fastJsonConfig = new FastJsonConfig();\n        fastJsonConfig.setSerializerFeatures(SerializerFeature.DisableCircularReferenceDetect, SerializerFeature.BrowserSecure);\n        fastJsonProvider.setFastJsonConfig(fastJsonConfig);\n\n        config.register(fastJsonProvider);\n\n        config.packages(\"com.alibaba.json.bvt.issue_1300\");\n        return config;\n    }\n\n    @Test\n    public void test() {\n\n        final String reponse = target(\"book1341\").path(\"123\").request().accept(\"application/javascript\").get(String.class);\n        System.out.println(reponse);\n        Assert.assertTrue(reponse.indexOf(\"Python源码剖析\") > 0);\n        Assert.assertTrue(reponse.indexOf(\"电子工业出版社\") > 0);\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1344.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 26/07/2017.\n */\npublic class Issue1344 extends TestCase {\n    public void test_for_issue() throws Exception {\n        TestException testException = new TestException(\"aaa\");\n        System.out.println(\"before：\" + testException.getMessage());\n        String json = JSONObject.toJSONString(testException);\n        System.out.println(json);\n        TestException o = JSONObject.parseObject(json, TestException.class);\n        System.out.println(\"after：\" + o.getMessage());\n    }\n\n    public static class TestException extends Exception {\n\n        @JSONCreator\n        public TestException() {\n\n        }\n\n        public TestException(String data) {\n            super(\"Data : \" + data);\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1357.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\nimport java.time.LocalDateTime;\n\n/**\n * Created by wenshao on 31/07/2017.\n */\npublic class Issue1357 extends TestCase {\n    public void test_for_issue() throws Exception {\n\n        String str = \"{\\\"d2\\\":null}\";\n        Test2Bean b = JSONObject.parseObject(str,Test2Bean.class);\n        System.out.println(b);\n    }\n\n    public static class Test2Bean{\n        private LocalDateTime d2;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1362.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 03/08/2017.\n */\npublic class Issue1362 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSONObject object = new JSONObject();\n        object.put(\"val\", \"null\");\n        assertEquals(0D, object.getDoubleValue(\"val\"));\n        assertEquals(0F, object.getFloatValue(\"val\"));\n        assertEquals(0, object.getIntValue(\"val\"));\n        assertEquals(0L, object.getLongValue(\"val\"));\n        assertEquals((short) 0, object.getShortValue(\"val\"));\n        assertEquals((byte) 0, object.getByteValue(\"val\"));\n        assertEquals(false, object.getBooleanValue(\"val\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1363.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * Created by wenshao on 05/08/2017.\n */\npublic class Issue1363 extends TestCase {\n    public void test_for_issue() throws Exception {\n        DataSimpleVO a = new DataSimpleVO(\"a\", 1);\n        DataSimpleVO b = new DataSimpleVO(\"b\", 2);\n        b.value = a;\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(a.name, a);\n        b.value1 = map;\n\n        String jsonStr = JSON.toJSONString(b);\n        System.out.println(jsonStr);\n        DataSimpleVO obj = JSON.parseObject(jsonStr, DataSimpleVO.class);\n        assertEquals(jsonStr, JSON.toJSONString(obj));\n\n    }\n\n    public void test_for_issue_1() throws Exception {\n        DataSimpleVO a = new DataSimpleVO(\"a\", 1);\n        DataSimpleVO b = new DataSimpleVO(\"b\", 2);\n        b.value1 = a;\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(a.name, a);\n        b.value = map;\n\n        String jsonStr = JSON.toJSONString(b);\n        System.out.println(jsonStr);\n        DataSimpleVO obj = JSON.parseObject(jsonStr, DataSimpleVO.class);\n        System.out.println(obj.toString());\n        assertNotNull(obj.value1);\n        assertEquals(jsonStr, JSON.toJSONString(obj));\n    }\n\n    public static class DataSimpleVO {\n        public String name;\n        public Object value;\n        public Object value1;\n\n        public DataSimpleVO() {\n        }\n\n        public DataSimpleVO(String name, Object value) {\n            this.name = name;\n            this.value = value;\n        }\n\n        @Override\n        public String toString() {\n            return \"DataSimpleVO [name=\" + name + \", value=\" + value + \", value1=\" + value1 + \"]\";\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1367.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;\nimport com.alibaba.fastjson.support.spring.FastJsonpHttpMessageConverter4;\nimport org.junit.Before;\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.beans.factory.annotation.Autowired;\n\nimport org.springframework.context.annotation.ComponentScan;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.core.Ordered;\nimport org.springframework.core.annotation.Order;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.converter.HttpMessageConverter;\n\nimport org.springframework.test.context.ContextConfiguration;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\nimport org.springframework.test.web.servlet.MockMvc;\nimport org.springframework.test.web.servlet.setup.MockMvcBuilders;\nimport org.springframework.web.bind.annotation.PostMapping;\nimport org.springframework.web.bind.annotation.RequestBody;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RestController;\nimport org.springframework.web.context.WebApplicationContext;\nimport org.springframework.web.filter.CharacterEncodingFilter;\nimport org.springframework.web.servlet.config.annotation.EnableWebMvc;\n\nimport org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;\n\nimport java.io.Serializable;\nimport java.util.List;\n\nimport static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;\nimport static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;\nimport static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;\n\n/**\n * Created by songlingdong on 8/5/17.\n */\n@RunWith(SpringJUnit4ClassRunner.class)\n@WebAppConfiguration\n@ContextConfiguration\npublic class Issue1367 {\n\n    @Autowired\n    private WebApplicationContext wac;\n\n    private MockMvc mockMvc;\n\n    @Before\n    public void setup() {\n        this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac) //\n                .addFilter(new CharacterEncodingFilter(\"UTF-8\", true)) // 设置服务器端返回的字符集为：UTF-8\n                .build();\n    }\n\n\n\n\n\n    public static class AbstractController<ID extends Serializable, PO extends GenericEntity<ID>> {\n\n        @PostMapping(path = \"/typeVariableBean\",consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)\n        public PO save(@RequestBody PO dto) {\n            //do something\n            return dto;\n        }\n\n    }\n\n    @RestController\n    @RequestMapping()\n    public static class BeanController extends AbstractController<Long, TypeVariableBean> {\n\n\n\n        @PostMapping(path = \"/parameterizedTypeBean\",consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)\n        public String parameterizedTypeBean(@RequestBody ParameterizedTypeBean<String> parameterizedTypeBean){\n            return parameterizedTypeBean.t;\n        }\n\n\n    }\n\n\n    @ComponentScan(basePackages = \"com.alibaba.json.bvt.issue_1300\")\n    @Configuration\n    @Order(Ordered.LOWEST_PRECEDENCE + 1)\n    @EnableWebMvc\n    public static class WebMvcConfig extends WebMvcConfigurerAdapter {\n        @Override\n        public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {\n            FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();\n            converters.add(converter);\n        }\n\n\n    }\n\n\n    @Test\n    public void testParameterizedTypeBean() throws Exception {\n        mockMvc.perform(\n                (post(\"/parameterizedTypeBean\").characterEncoding(\"UTF-8\")\n                        .contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)\n                        .content(\"{\\\"t\\\": \\\"neil dong\\\"}\")\n                        )).andExpect(status().isOk()).andDo(print());\n    }\n\n    @Test\n    public void testTypeVariableBean() throws Exception {\n        mockMvc.perform(\n                (post(\"/typeVariableBean\").characterEncoding(\"UTF-8\")\n                        .contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)\n                        .content(\"{\\\"id\\\": 1}\")\n                        )).andExpect(status().isOk()).andDo(print());\n\n    }\n\n\n\n\n\n    static abstract class GenericEntity<ID extends Serializable> {\n        public abstract ID getId();\n    }\n\n    static class TypeVariableBean extends GenericEntity<Long> {\n        private Long id;\n\n        @Override\n        public Long getId() {\n            return id;\n        }\n\n        public void setId(Long id) {\n            this.id = id;\n        }\n    }\n\n    static class ParameterizedTypeBean<T> {\n        private T t;\n\n        public T getT() {\n            return t;\n        }\n\n        public void setT(T t) {\n            this.t = t;\n        }\n\n\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1367_jaxrs.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.support.jaxrs.FastJsonProvider;\nimport org.glassfish.jersey.client.ClientConfig;\nimport org.glassfish.jersey.server.ResourceConfig;\nimport org.glassfish.jersey.test.JerseyTest;\nimport org.glassfish.jersey.test.TestProperties;\nimport org.junit.Test;\n\nimport javax.ws.rs.Consumes;\nimport javax.ws.rs.POST;\nimport javax.ws.rs.Path;\nimport javax.ws.rs.Produces;\nimport javax.ws.rs.client.Entity;\nimport javax.ws.rs.core.Application;\nimport javax.ws.rs.core.Response;\nimport java.io.Serializable;\n\n/**\n * <p>Title: Issue1367_jaxrs</p>\n * <p>Description: </p>\n *\n * @author Victor.Zxy\n * @version 1.0\n * @since 2017/8/7\n */\npublic class Issue1367_jaxrs extends JerseyTest {\n\n    public static class AbstractController<ID extends Serializable, PO extends Issue1367.GenericEntity<ID>> {\n\n        @POST\n        @Path(\"/typeVariableBean\")\n        @Produces(javax.ws.rs.core.MediaType.APPLICATION_JSON)\n        @Consumes(javax.ws.rs.core.MediaType.APPLICATION_JSON)\n        public PO save(PO dto) {\n            //do something\n            return dto;\n        }\n    }\n\n    @Path(\"beanController\")\n    public static class BeanController extends AbstractController<Long, Issue1367.TypeVariableBean> {\n\n        @POST\n        @Path(\"/parameterizedTypeBean\")\n        @Produces(javax.ws.rs.core.MediaType.APPLICATION_JSON)\n        @Consumes(javax.ws.rs.core.MediaType.APPLICATION_JSON)\n        public String parameterizedTypeBean(Issue1367.ParameterizedTypeBean<String> parameterizedTypeBean) {\n            return parameterizedTypeBean.getT();\n        }\n\n    }\n\n    @Override\n    protected void configureClient(ClientConfig config) {\n        config.register(FastJsonProvider.class);\n    }\n\n    @Override\n    protected Application configure() {\n        enable(TestProperties.LOG_TRAFFIC);\n        enable(TestProperties.DUMP_ENTITY);\n\n        ResourceConfig config = new ResourceConfig();\n\n        config.register(FastJsonProvider.class);\n        config.packages(\"com.alibaba.json.bvt.issue_1300\");\n        return config;\n    }\n\n    @Test\n    public void testParameterizedTypeBean() throws Exception {\n\n        String request = \"{\\\"t\\\": \\\"victor zeng\\\"}\";\n\n        Response response = target(\"beanController\").path(\"parameterizedTypeBean\").request().\n                accept(\"application/json;charset=UTF-8\").post(Entity.json(request));\n\n        System.out.println(response.readEntity(String.class));\n\n    }\n\n    @Test\n    public void testTypeVariableBean() throws Exception {\n\n        String request = \"{\\\"id\\\": 1}\";\n\n        Response response = target(\"beanController\").path(\"typeVariableBean\").request().\n                accept(\"application/json;charset=UTF-8\").post(Entity.json(request));\n\n        System.out.println(response.readEntity(String.class));\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1368.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\nimport org.springframework.web.servlet.mvc.method.annotation.ExtendedServletRequestDataBinder;\n\n/**\n * Created by kimmking on 03/08/2017.\n */\npublic class Issue1368 extends TestCase {\n    public void test_for_issue() throws Exception {\n        ExtendedServletRequestDataBinder binder = new ExtendedServletRequestDataBinder(new Object());\n        String json = JSON.toJSONString(binder);\n        System.out.println(json);\n        Assert.assertTrue(json.indexOf(\"$ref\")>=0);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1369.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\n/**\n * Created by kimmking on 03/08/2017.\n */\npublic class Issue1369 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Foo foo = new Foo();\n        foo.a = 1;\n        foo.b = \"b\";\n        foo.bars = new Bar();\n        foo.bars.c = 3;\n        String json = JSON.toJSONString(foo);\n        System.out.println(json);\n        Assert.assertTrue(json.indexOf(\"\\\\\")<0);\n    }\n\n    public static class Foo {\n        public int a;\n        public String b;\n        public Bar bars;\n    }\n    public static class Bar {\n        public int c;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1370.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\nimport java.sql.Timestamp;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class Issue1370 extends TestCase {\n    public void test_0() throws Exception {\n        JSONObject obj = new JSONObject();\n        obj.put(\"val\", \"2017-08-04 15:16:41.000000000\");\n\n        Model model = obj.toJavaObject(Model.class);\n        assertNotNull(model.val);\n    }\n\n    public void test_1() throws Exception {\n        JSONObject obj = new JSONObject();\n        obj.put(\"val\", \"2017-08-04 15:16:41.0\");\n\n        Model model = obj.toJavaObject(Model.class);\n        assertNotNull(model.val);\n    }\n\n    public void test_2() throws Exception {\n        JSONObject obj = new JSONObject();\n        obj.put(\"val\", \"2017-08-04 15:16:41.00\");\n\n        Model model = obj.toJavaObject(Model.class);\n        assertNotNull(model.val);\n    }\n\n    public void test_3() throws Exception {\n        JSONObject obj = new JSONObject();\n        obj.put(\"val\", \"2017-08-04 15:16:41.000\");\n\n        Model model = obj.toJavaObject(Model.class);\n        assertNotNull(model.val);\n    }\n\n\n    public void test_4() throws Exception {\n        JSONObject obj = new JSONObject();\n        obj.put(\"val\", \"2017-08-04 15:16:41.000000\");\n\n        Model model = obj.toJavaObject(Model.class);\n        assertNotNull(model.val);\n    }\n\n    public static class Model {\n        public Timestamp val;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1371.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.google.gson.Gson;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\nimport org.junit.Test;\n\nimport java.util.Map;\nimport java.util.TreeMap;\n\n/**\n * Created by wenshao on 05/08/2017.\n */\npublic class Issue1371 extends TestCase {\n    private enum Rooms{\n        A, B, C, D ,E ;\n    }\n\n    public void testFastjsonEnum(){\n\n        Map<Rooms, Rooms> enumMap = new TreeMap<Rooms, Rooms>();\n\n        enumMap.put(Rooms.C, Rooms.D);\n        enumMap.put(Rooms.E, Rooms.A);\n\n        Assert.assertEquals(JSON.toJSONString(enumMap, SerializerFeature.WriteNonStringKeyAsString),\n                \"{\\\"C\\\":\\\"D\\\",\\\"E\\\":\\\"A\\\"}\");\n\n    }\n\n\n\n\n//    public void testParsed(){\n//\n//        String oldStyleJson = \"{1:'abc', 2:'cde'}\";\n//\n//        Gson gson = new Gson();\n//\n//        Map fromJson = gson.fromJson(oldStyleJson, Map.class);\n//\n//        Assert.assertNull(fromJson.get(1));\n//\n//        Assert.assertEquals(fromJson.get(\"1\"), \"abc\" );\n//\n//        Map parsed = JSON.parseObject(oldStyleJson, Map.class, Feature.IgnoreAutoType, Feature.DisableFieldSmartMatch);\n//\n//\n//        Assert.assertNull(parsed.get(1));\n//\n//        Assert.assertEquals(parsed.get(\"1\"), \"abc\" );\n//\n//    }\n//\n//    public void testParsed_jackson() throws Exception {\n//\n//        String oldStyleJson = \"{1:\\\"abc\\\", 2:\\\"cde\\\"}\";\n//\n//        ObjectMapper objectMapper = new ObjectMapper();\n//        Map fromJson = objectMapper.readValue(oldStyleJson, Map.class);\n//        Assert.assertNull(fromJson.get(1));\n//    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1375.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.serializer.CollectionCodec;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport junit.framework.TestCase;\n\nimport java.util.LinkedList;\n\n/**\n * Created by wenshao on 06/08/2017.\n */\npublic class Issue1375 extends TestCase {\n    public void test_issue() throws Exception {\n        assertSame(CollectionCodec.instance\n                , SerializeConfig.getGlobalInstance()\n                        .getObjectWriter(LinkedList.class));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1392.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\n\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.fastjson.support.config.FastJsonConfig;\nimport com.alibaba.fastjson.support.jaxrs.FastJsonFeature;\nimport org.glassfish.jersey.client.ClientConfig;\nimport org.glassfish.jersey.server.JSONP;\nimport org.glassfish.jersey.server.ResourceConfig;\nimport org.glassfish.jersey.test.JerseyTest;\nimport org.glassfish.jersey.test.TestProperties;\nimport org.junit.Assert;\nimport org.junit.Test;\n\nimport javax.ws.rs.*;\nimport javax.ws.rs.core.Application;\nimport javax.ws.rs.ext.ContextResolver;\nimport javax.ws.rs.ext.Provider;\nimport java.util.Date;\n\npublic class Issue1392 extends JerseyTest {\n\n    static class Book {\n\n        private int bookId;\n        private String bookName;\n        private String publisher;\n        private String isbn;\n        private Date publishTime;\n        private Object hello;\n\n        public int getBookId() {\n            return bookId;\n        }\n\n        public void setBookId(int bookId) {\n            this.bookId = bookId;\n        }\n\n        public String getBookName() {\n            return bookName;\n        }\n\n        public void setBookName(String bookName) {\n            this.bookName = bookName;\n        }\n\n        public String getPublisher() {\n            return publisher;\n        }\n\n        public void setPublisher(String publisher) {\n            this.publisher = publisher;\n        }\n\n        public String getIsbn() {\n            return isbn;\n        }\n\n        public void setIsbn(String isbn) {\n            this.isbn = isbn;\n        }\n\n        public Date getPublishTime() {\n            return publishTime;\n        }\n\n        public void setPublishTime(Date publishTime) {\n            this.publishTime = publishTime;\n        }\n\n        public Object getHello() {\n            return hello;\n        }\n\n        public void setHello(Object hello) {\n            this.hello = hello;\n        }\n    }\n\n    @Provider\n    static class FastJsonResolver implements ContextResolver<FastJsonConfig> {\n\n        public FastJsonConfig getContext(Class<?> type) {\n\n            FastJsonConfig fastJsonConfig = new FastJsonConfig();\n\n            fastJsonConfig.setSerializerFeatures(\n                    SerializerFeature.WriteMapNullValue,\n                    SerializerFeature.BrowserSecure);\n\n            return fastJsonConfig;\n        }\n    }\n\n\n    @Path(\"book1392\")\n    public static class BookRestFul {\n\n        @GET\n        @Path(\"{id}\")\n        @Produces({\"application/javascript\", \"application/json\"})\n        @Consumes({\"application/javascript\", \"application/json\"})\n        @JSONP(queryParam = \"callback\")\n        public Book getBookById(@PathParam(\"id\") Long id) {\n\n            Book book = new Book();\n            book.setBookId(2);\n            book.setBookName(\"Python源码剖析\");\n            book.setPublisher(\"电子工业出版社\");\n            book.setPublishTime(new Date());\n            book.setIsbn(\"911122\");\n\n            return book;\n        }\n    }\n\n    @Override\n    protected void configureClient(ClientConfig config) {\n        config.register(FastJsonFeature.class);\n    }\n\n    @Override\n    protected Application configure() {\n        enable(TestProperties.LOG_TRAFFIC);\n        enable(TestProperties.DUMP_ENTITY);\n\n        ResourceConfig config = new ResourceConfig();\n\n        config.register(FastJsonResolver.class);\n\n        config.register(FastJsonFeature.class);\n\n        config.packages(\"com.alibaba.json.bvt.issue_1300\");\n        return config;\n    }\n\n    @Test\n    public void test() {\n\n        final String reponse = target(\"book1392\").path(\"123\").request().accept(\"application/javascript\").get(String.class);\n        System.out.println(reponse);\n        Assert.assertTrue(reponse.indexOf(\"Python源码剖析\") > 0);\n        Assert.assertTrue(reponse.indexOf(\"电子工业出版社\") > 0);\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue1399.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 15/08/2017.\n */\npublic class Issue1399 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSON.parseObject(\"false\", boolean.class);\n        JSON.parseObject(\"false\", Boolean.class);\n        JSON.parseObject(\"\\\"false\\\"\", boolean.class);\n        JSON.parseObject(\"\\\"false\\\"\", Boolean.class);\n\n//        JSON.parseObject(\"FALSE\", boolean.class);\n//        JSON.parseObject(\"FALSE\", Boolean.class);\n        JSON.parseObject(\"\\\"FALSE\\\"\", boolean.class);\n        JSON.parseObject(\"\\\"FALSE\\\"\", Boolean.class);\n    }\n\n    public void test_for_issue_true() throws Exception {\n        JSON.parseObject(\"true\", boolean.class);\n        JSON.parseObject(\"true\", Boolean.class);\n        JSON.parseObject(\"\\\"true\\\"\", boolean.class);\n        JSON.parseObject(\"\\\"true\\\"\", Boolean.class);\n\n//        JSON.parseObject(\"FALSE\", boolean.class);\n//        JSON.parseObject(\"FALSE\", Boolean.class);\n        JSON.parseObject(\"\\\"TRUE\\\"\", boolean.class);\n        JSON.parseObject(\"\\\"TRUE\\\"\", Boolean.class);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1300/Issue_for_zuojian.java",
    "content": "package com.alibaba.json.bvt.issue_1300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\nimport java.util.Date;\n\npublic class Issue_for_zuojian extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSON.DEFFAULT_DATE_FORMAT = \"yyyyMMddHHmmssSSSZ\";\n        String json = \"{\\\"value\\\":\\\"20180131022733000-0800\\\"}\";\n        JSON.parseObject(json, Model.class);\n        JSON.DEFFAULT_DATE_FORMAT = \"yyyy-MM-dd HH:mm:ss\";\n    }\n\n    public void test_for_issue_1() throws Exception {\n        JSON.DEFFAULT_DATE_FORMAT = \"yyyyMMddHHmmssSSSZ\";\n\n        String json = \"{\\\"value\\\":\\\"20180131022733000-0800\\\"}\";\n        JSONObject object = JSON.parseObject(json);\n        object.getObject(\"value\", Date.class);\n\n        JSON.DEFFAULT_DATE_FORMAT = \"yyyy-MM-dd HH:mm:ss\";\n    }\n\n    public static class Model {\n        public Date value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1400/Issue1400.java",
    "content": "package com.alibaba.json.bvt.issue_1400;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * Created by kimmking on 11/08/2017.\n */\npublic class Issue1400 extends TestCase {\n    public void test_for_issue() throws Exception {\n        TypeReference tr = new TypeReference<Resource<ArrayList<App>>>(){};\n        Test test = new Test(tr);\n        Resource resource = test.resource;\n        Assert.assertEquals(1,resource.ret);\n        Assert.assertEquals(\"ok\",resource.message);\n        List<App> data =(List<App>) resource.data;\n        Assert.assertEquals(2,data.size());\n        App app1 = data.get(0);\n        Assert.assertEquals(\"11c53f541dee4f5bbc4f75f99002278c\",app1.appId);\n    }\n\n    public static class Resource<T> {\n        public int ret;\n        public String message;\n        public T data;\n    }\n\n    public static class App {\n        public String appId;\n    }\n\n    public static class Test {\n        String str = \"{\\\"ret\\\":1,\\\"message\\\":\\\"ok\\\",\\\"data\\\":[{\\\"appId\\\":\\\"11c53f541dee4f5bbc4f75f99002278c\\\"},{\\\"appId\\\":\\\"c6102275ce5540a59424defa1cccb8ed\\\"}]}\";\n        public Resource resource;\n        Test(TypeReference tr) {\n            resource = (Resource)JSON.parseObject(str, tr);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1400/Issue1405.java",
    "content": "package com.alibaba.json.bvt.issue_1400;\n\nimport com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;\nimport com.alibaba.fastjson.support.spring.FastJsonJsonView;\nimport org.junit.Before;\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.context.annotation.ComponentScan;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.core.Ordered;\nimport org.springframework.core.annotation.Order;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.converter.HttpMessageConverter;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.test.context.ContextConfiguration;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\nimport org.springframework.test.web.servlet.MockMvc;\nimport org.springframework.test.web.servlet.setup.MockMvcBuilders;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestMethod;\nimport org.springframework.web.bind.annotation.ResponseBody;\nimport org.springframework.web.context.WebApplicationContext;\nimport org.springframework.web.filter.CharacterEncodingFilter;\nimport org.springframework.web.servlet.ModelAndView;\nimport org.springframework.web.servlet.config.annotation.EnableWebMvc;\nimport org.springframework.web.servlet.config.annotation.ViewResolverRegistry;\nimport org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;\n\nimport java.util.List;\n\nimport static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;\nimport static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;\nimport static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;\n\n/**\n * Created by songlingdong on 8/5/17.\n */\n@RunWith(SpringJUnit4ClassRunner.class)\n@WebAppConfiguration\n@ContextConfiguration\npublic class Issue1405 {\n\n    @Autowired\n    private WebApplicationContext wac;\n\n    private MockMvc mockMvc;\n\n    @Before\n    public void setup() {\n        this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac) //\n                .addFilter(new CharacterEncodingFilter(\"UTF-8\", true)) // 设置服务器端返回的字符集为：UTF-8\n                .build();\n    }\n\n    @Controller\n    @RequestMapping(\"fastjson\")\n    public static class BeanController {\n\n        @RequestMapping(value = \"/test1405\", method = RequestMethod.GET)\n        public\n        @ResponseBody\n        ModelAndView test7() {\n\n            AuthIdentityRequest authRequest = new AuthIdentityRequest();\n            authRequest.setAppId(\"cert01\");\n            authRequest.setUserId(2307643);\n            authRequest.setIdNumber(\"34324324234234\");\n            authRequest.setRealName(\"杨力\");\n            authRequest.setBusinessLine(\"\");\n            authRequest.setIgnoreIdNumberRepeat(false);\n            authRequest.setOffline(false);\n\n            ModelAndView modelAndView = new ModelAndView();\n            modelAndView.addObject(\"message\", authRequest);\n            modelAndView.addObject(\"title\", \"testPage\");\n            modelAndView.setViewName(\"test\");\n\n            return modelAndView;\n        }\n\n    }\n\n\n    @ComponentScan(basePackages = \"com.alibaba.json.bvt.issue_1400\")\n    @Configuration\n    @Order(Ordered.LOWEST_PRECEDENCE + 1)\n    @EnableWebMvc\n    public static class WebMvcConfig extends WebMvcConfigurerAdapter {\n        @Override\n        public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {\n            FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();\n            converters.add(converter);\n        }\n\n        @Override\n        public void configureViewResolvers(ViewResolverRegistry registry) {\n            FastJsonJsonView fastJsonJsonView = new FastJsonJsonView();\n            registry.enableContentNegotiation(fastJsonJsonView);\n        }\n    }\n\n    @Test\n    public void test7() throws Exception {\n\n        mockMvc.perform(\n                (get(\"/fastjson/test1405\").characterEncoding(\"UTF-8\")\n                        .contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)\n                )).andExpect(status().isOk()).andDo(print());\n    }\n\n    static class AuthIdentityRequest {\n\n        private String appId;\n        private int userId;\n        private String idNumber;\n        private String realName;\n        private String businessLine;\n        private boolean ignoreIdNumberRepeat;\n        private boolean offline;\n\n        public String getAppId() {\n            return appId;\n        }\n\n        public void setAppId(String appId) {\n            this.appId = appId;\n        }\n\n        public int getUserId() {\n            return userId;\n        }\n\n        public void setUserId(int userId) {\n            this.userId = userId;\n        }\n\n        public String getIdNumber() {\n            return idNumber;\n        }\n\n        public void setIdNumber(String idNumber) {\n            this.idNumber = idNumber;\n        }\n\n        public String getRealName() {\n            return realName;\n        }\n\n        public void setRealName(String realName) {\n            this.realName = realName;\n        }\n\n        public String getBusinessLine() {\n            return businessLine;\n        }\n\n        public void setBusinessLine(String businessLine) {\n            this.businessLine = businessLine;\n        }\n\n        public boolean isIgnoreIdNumberRepeat() {\n            return ignoreIdNumberRepeat;\n        }\n\n        public void setIgnoreIdNumberRepeat(boolean ignoreIdNumberRepeat) {\n            this.ignoreIdNumberRepeat = ignoreIdNumberRepeat;\n        }\n\n        public boolean isOffline() {\n            return offline;\n        }\n\n        public void setOffline(boolean offline) {\n            this.offline = offline;\n        }\n    }\n\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1400/Issue1422.java",
    "content": "package com.alibaba.json.bvt.issue_1400;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONReader;\nimport junit.framework.TestCase;\n\nimport java.io.StringReader;\n\npublic class Issue1422 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String strOk = \"{\\\"v\\\": 111}\";\n\n        Foo ok = JSON.parseObject(strOk, Foo.class);\n        assertFalse(ok.v);\n    }\n\n    public void test_for_issue_reader() throws Exception {\n        String strBad = \"{\\\"v\\\": 111}\";\n        Foo bad = new JSONReader(new StringReader(strBad)).readObject(Foo.class);\n        assertFalse(bad.v);\n    }\n\n    public void test_for_issue_1() throws Exception {\n        String strBad = \"{\\\"v\\\":111}\";\n        Foo bad = JSON.parseObject(strBad, Foo.class);\n        assertFalse(bad.v);\n    }\n\n    public void test_for_issue_1_reader() throws Exception {\n        String strBad = \"{\\\"v\\\":111}\";\n        Foo bad = new JSONReader(new StringReader(strBad)).readObject(Foo.class);\n        assertFalse(bad.v);\n    }\n\n    public static class Foo {\n        public boolean v;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1400/Issue1423.java",
    "content": "package com.alibaba.json.bvt.issue_1400;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\nimport java.io.StringReader;\nimport java.math.BigInteger;\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic class Issue1423 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"v\\\":9223372036854775808}\", LongVal.class);\n        } catch (JSONException e) {\n            e.printStackTrace();\n            error = e;\n        }\n        assertNotNull(error);\n        error.printStackTrace();\n    }\n\n    public void test_for_issue_reader() throws Exception {\n        Exception error = null;\n        try {\n            new JSONReader(new StringReader(\"{\\\"v\\\":9223372036854775808}\")).readObject(LongVal.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n    }\n\n    public void test_for_issue_arrayMapping() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[9223372036854775808]\", LongVal.class, Feature.SupportArrayToBean);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n    }\n\n    public void test_for_issue_arrayMapping_reader() throws Exception {\n        Exception error = null;\n        try {\n            new JSONReader(new StringReader(\"[9223372036854775808]\"), Feature.SupportArrayToBean).readObject(LongVal.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n        error.printStackTrace();\n    }\n\n    public static class LongVal {\n        private long v;\n        public void setV(long v) {\n            this.v = v;\n        }\n\n        @Override\n        public String toString() {\n            return String.valueOf(v);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1400/Issue1424.java",
    "content": "package com.alibaba.json.bvt.issue_1400;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic class Issue1424 extends TestCase {\n\n    public static class IntegerVal {\n        private int v;\n\n        public void setV(int v) {\n            this.v = v;\n        }\n\n        @Override\n        public String toString() {\n            return String.valueOf(v);\n        }\n    }\n\n    public static class FloatVal {\n        private float v;\n\n        public void setV(float v) {\n            this.v = v;\n        }\n\n        @Override\n        public String toString() {\n            return String.valueOf(v);\n        }\n    }\n\n    public void test_for_issue_int() {\n        Map<String, Long> intOverflowMap = new HashMap<String, Long>();\n        long intOverflow = Integer.MAX_VALUE;\n        intOverflowMap.put(\"v\", intOverflow + 1);\n        String sIntOverflow = JSON.toJSONString(intOverflowMap);\n\n        Exception error = null;\n        try {\n            JSON.parseObject(sIntOverflow, IntegerVal.class);\n        } catch (Exception e) {\n            error = e;\n        }\n        assertNotNull(error);\n    }\n\n    public void test_for_issue_float() {\n        Map<String, Double> floatOverflowMap = new HashMap<String, Double>();\n        double floatOverflow = Float.MAX_VALUE;\n        floatOverflowMap.put(\"v\", floatOverflow + 1);\n        String sFloatOverflow = JSON.toJSONString(floatOverflowMap);\n\n        assertEquals(\"{\\\"v\\\":3.4028234663852886E38}\", sFloatOverflow);\n        FloatVal floatVal = JSON.parseObject(sFloatOverflow, FloatVal.class);\n        assertEquals(3.4028235E38F, floatVal.v);\n\n        assertEquals(floatVal.v, Float.parseFloat(\"3.4028234663852886E38\"));\n    }\n\n    public void test_for_issue_float_infinity() {\n        Map<String, Double> floatOverflowMap = new HashMap<String, Double>();\n        double floatOverflow = Float.MAX_VALUE;\n        floatOverflowMap.put(\"v\", floatOverflow + floatOverflow);\n        String sFloatOverflow = JSON.toJSONString(floatOverflowMap);\n\n        System.out.println(sFloatOverflow);\n        assertEquals(\"{\\\"v\\\":6.805646932770577E38}\", sFloatOverflow);\n        FloatVal floatVal = JSON.parseObject(sFloatOverflow, FloatVal.class);\n        assertEquals(Float.parseFloat(\"6.805646932770577E38\"), floatVal.v);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1400/Issue1425.java",
    "content": "package com.alibaba.json.bvt.issue_1400;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\npublic class Issue1425 extends TestCase {\n    public void test_for_issue() throws Exception {\n        DicDomain dicDomain = new DicDomain();\n        dicDomain.setCode(\"A001\");\n        dicDomain.setName(\"测试\");\n\n        SerializerFeature[] features = new SerializerFeature[]{\n                SerializerFeature.NotWriteRootClassName,\n                SerializerFeature.WriteClassName,\n                SerializerFeature.DisableCircularReferenceDetect\n        };\n\n        System.out.println(JSON.toJSONString(dicDomain, features));\n    }\n    public static class DicDomain {\n\n        private String code;\n\n        private String name;\n\n        public String getCode() {\n            return code;\n        }\n\n        public void setCode(String code) {\n            this.code = code;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1400/Issue1429.java",
    "content": "package com.alibaba.json.bvt.issue_1400;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\npublic class Issue1429 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"[{\\n\" +\n                \"            \\\"@type\\\": \\\"com.alibaba.json.bvt.issue_1400.Issue1429$Student\\\",\\n\" +\n                \"            \\\"age\\\": 22,\\n\" +\n                \"            \\\"id\\\": 1,\\n\" +\n                \"            \\\"name\\\": \\\"hello\\\"\\n\" +\n                \"        }, {\\n\" +\n                \"            \\\"age\\\": 22,\\n\" +\n                \"            \\\"id\\\": 1,\\n\" +\n                \"            \\\"name\\\": \\\"hhh\\\",\\n\" +\n                \"            \\\"@type\\\": \\\"com.alibaba.json.bvt.issue_1400.Issue1429$Student\\\"\\n\" +\n                \"        }]\";\n\n        List list = JSON.parseArray(json);\n        Student s0 = (Student) list.get(0);\n        assertEquals(1, s0.id);\n        assertEquals(22, s0.age);\n        assertEquals(\"hello\", s0.name);\n\n        Student s1 = (Student) list.get(1);\n        assertEquals(1, s1.id);\n        assertEquals(22, s1.age);\n        assertEquals(\"hhh\", s1.name);\n    }\n\n    @JSONType\n    public static class Student {\n        public int id;\n        public int age;\n        public String name;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1400/Issue1443.java",
    "content": "package com.alibaba.json.bvt.issue_1400;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.Date;\n\npublic class Issue1443 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"{\\\"date\\\":\\\"3017-08-28T00:00:00+08:00\\\"}\";\n        Model model = JSON.parseObject(json, Model.class);\n\n    }\n\n    public static class Model {\n        public Date date;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1400/Issue1445.java",
    "content": "package com.alibaba.json.bvt.issue_1400;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\npublic class Issue1445 extends TestCase {\n    public void test_for_issue() throws Exception {\n\n        JSONObject obj = new JSONObject();\n        obj.put(\"data\", new JSONObject());\n        obj.getJSONObject(\"data\").put(\"data\", new JSONObject());\n        obj.getJSONObject(\"data\").getJSONObject(\"data\").put(\"map\", new JSONObject());\n        obj.getJSONObject(\"data\").getJSONObject(\"data\").getJSONObject(\"map\").put(\"21160001\", \"abc\");\n\n        String json = JSON.toJSONString(obj);\n        assertEquals(\"abc\", JSONPath.read(json,\"data.data.map.21160001\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1400/Issue1449.java",
    "content": "package com.alibaba.json.bvt.issue_1400;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\nimport com.alibaba.fastjson.serializer.JSONSerializable;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport junit.framework.TestCase;\n\nimport java.io.IOException;\nimport java.io.Serializable;\nimport java.lang.reflect.Type;\n\npublic class Issue1449 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Student student = new Student();\n        student.name = \"name\";\n        student.id = 1L;\n        student.sex = Sex.MAN;\n        System.out.println(JSON.toJSON(student).toString());\n        System.out.println(JSON.toJSONString(student));\n        String str1 = \"{\\\"id\\\":1,\\\"name\\\":\\\"name\\\",\\\"sex\\\":\\\"MAN\\\"}\";\n        Student stu1 = JSON.parseObject(str1, Student.class);\n        System.out.println(JSON.toJSONString(stu1));\n        String str2 = \"{\\\"id\\\":1,\\\"name\\\":\\\"name\\\",\\\"sex\\\":{\\\"code\\\":\\\"1\\\",\\\"des\\\":\\\"男\\\"}}\";\n        JSON.parseObject(str2, Student.class);\n\n    }\n\n    @JSONType(deserializer = SexDeserializer.class)\n    public static enum Sex implements JSONSerializable {\n\n        NONE(\"0\",\"NONE\"),MAN(\"1\",\"男\"),WOMAN(\"2\",\"女\");\n        private final String code;\n        private final String des;\n        private Sex(String code, String des) {\n            this.code = code;\n            this.des = des;\n        }\n\n        public String getCode() {\n            return code;\n        }\n\n        public String getDes() {\n            return des;\n        }\n\n        public void write(JSONSerializer serializer, Object fieldName, Type fieldType, int features) throws IOException {\n\n            JSONObject object = new JSONObject();\n            object.put(\"code\", code);\n            object.put(\"des\", des);\n            serializer.write(object);\n\n        }\n    }\n\n    public static class SexDeserializer implements ObjectDeserializer {\n\n        public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n            String code;\n            Object object = parser.parse();\n            if (object instanceof JSONObject) {\n                JSONObject jsonObject = (JSONObject) object;\n                code = jsonObject.getString(\"code\");\n            } else {\n                code = (String) object;\n            }\n            if (\"0\".equals(code)) {\n                return (T) Sex.NONE;\n            } else if (\"1\".equals(code)) {\n                return (T) Sex.MAN;\n            } else if (\"2\".equals(code)) {\n                return (T) Sex.WOMAN;\n            }\n            return (T) Sex.NONE;\n        }\n\n        public int getFastMatchToken() {\n            return 0;\n        }\n    }\n    public static class Student implements Serializable {\n\n        public Long id;\n\n        public String name;\n\n        public Sex sex;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1400/Issue1450.java",
    "content": "package com.alibaba.json.bvt.issue_1400;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.time.LocalDateTime;\n\npublic class Issue1450 extends TestCase {\n    public void test_for_issue() throws Exception {\n        LocalDateTime localDateTime = LocalDateTime.of(2018, 8, 31, 15, 26, 37, 1);\n        String json = JSON.toJSONStringWithDateFormat(localDateTime, \"yyyy-MM-dd HH:mm:ss\");//2018-08-31T15:26:37.000000001\n        assertEquals(\"\\\"2018-08-31 15:26:37\\\"\", json);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1400/Issue1458.java",
    "content": "package com.alibaba.json.bvt.issue_1400;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.google.common.collect.ImmutableMap;\nimport junit.framework.TestCase;\n\nimport java.io.Serializable;\n\npublic class Issue1458 extends TestCase {\n    public void test_for_issue() throws Exception {\n        HostPoint hostPoint = new HostPoint(new HostAddress(\"192.168.10.101\"));\n        hostPoint.setFingerprint(new Fingerprint(\"abc\"));\n\n        String json = JSON.toJSONString(hostPoint);\n\n        HostPoint hostPoint1 = JSON.parseObject(json, HostPoint.class);\n        String json1 = JSON.toJSONString(hostPoint1);\n        assertEquals(json, json1);\n    }\n\n    public static class HostPoint implements Serializable {\n\n        private final HostAddress address;\n\n        @JSONField(name = \"fingerprint\")\n        private Fingerprint fingerprint;\n\n        @JSONField(name = \"unkown\")\n        private boolean unkown;\n\n        // ------------------------------------------------------------------------\n\n        @JSONCreator\n        public HostPoint(@JSONField(name = \"address\") HostAddress addr) {\n            this.address = addr;\n        }\n\n        public boolean isChanged() {\n            return false;\n        }\n\n        public boolean isMatched() {\n            return false;\n        }\n\n\n        public HostAddress getAddress() {\n            return address;\n        }\n\n        public Fingerprint getFingerprint() {\n            return fingerprint;\n        }\n\n        public void setFingerprint(Fingerprint fingerprint) {\n            this.fingerprint = fingerprint;\n        }\n\n        public boolean isUnkown() {\n            return unkown;\n        }\n\n        public void setUnkown(boolean unkown) {\n            this.unkown = unkown;\n        }\n\n    }\n\n    public static class Fingerprint implements Serializable {\n        private final String source;\n\n        private ImmutableMap<String, String> probes;\n\n        @JSONCreator\n        public Fingerprint(@JSONField(name = \"source\") String fingerprint) {\n            this.source = fingerprint;\n        }\n\n\n        public String getSource() {\n            return source;\n        }\n\n    }\n\n    public static class HostAddress {\n        public final String hostAddress;\n\n        public HostAddress(String hostAddress) {\n            this.hostAddress = hostAddress;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1400/Issue1465.java",
    "content": "package com.alibaba.json.bvt.issue_1400;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\npublic class Issue1465 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"{\\\"id\\\":3,\\\"hasSth\\\":true}\";\n        Model model = JSON.parseObject(json, Model.class);\n        assertEquals(0, model.hasSth);\n        assertEquals(3, model.id);\n    }\n\n    public static class Model {\n        private int id;\n        @JSONField(deserialize = false)\n        private int hasSth;\n\n        public int getHasSth() {\n            return hasSth;\n        }\n\n        @JSONField(deserialize = false)\n        public void setHasSth(int hasSth) {\n            this.hasSth = hasSth;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1400/Issue1472.java",
    "content": "package com.alibaba.json.bvt.issue_1400;\n\npublic class Issue1472 {\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1400/Issue1474.java",
    "content": "package com.alibaba.json.bvt.issue_1400;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport junit.framework.TestCase;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic class Issue1474 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Map<String,Object> extraData = new HashMap<String,Object>();\n        extraData.put(\"ext_1\", null);\n        extraData.put(\"ext_2\", null);\n\n        People p = new People();\n        p.setId(\"001\");\n        p.setName(\"顾客\");\n        p.setExtraData(extraData);\n\n        assertEquals(\"{\\\"id\\\":\\\"001\\\",\\\"name\\\":\\\"顾客\\\"}\", JSON.toJSONString(p));\n    }\n\n    @JSONType(asm = false)\n    static class People{\n        private String name;\n        private String id;\n        @JSONField(unwrapped=true)\n        private Object extraData;\n\n        public String getName() {\n            return name;\n        }\n        public void setName(String name) {\n            this.name = name;\n        }\n        public String getId() {\n            return id;\n        }\n        public void setId(String id) {\n            this.id = id;\n        }\n        public Object getExtraData() {\n            return extraData;\n        }\n        public void setExtraData(Object extraData) {\n            this.extraData = extraData;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1400/Issue1478.java",
    "content": "package com.alibaba.json.bvt.issue_1400;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\npublic class Issue1478 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = new Model();\n        model.md5 = \"xxx\";\n\n        String json = JSON.toJSONString(model);\n        assertEquals(\"{\\\"MD5\\\":\\\"xxx\\\"}\", json);\n    }\n\n    public static class Model {\n        @JSONField(name = \"MD5\")\n        private String md5;\n\n        public String getMD5() throws Exception {\n            return md5;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1400/Issue1480.java",
    "content": "package com.alibaba.json.bvt.issue_1400;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.HashMap;\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\npublic class Issue1480 extends TestCase {\n    public void test_for_issue() throws Exception {\n\n        Map<Integer,Integer> map = new LinkedHashMap<Integer,Integer>();\n        map.put(1,10);\n        map.put(2,4);\n        map.put(3,5);\n        map.put(4,5);\n        map.put(37306,98);\n        map.put(36796,9);\n\n        String json = JSON.toJSONString(map);\n        System.out.println(json);\n        Assert.assertEquals(\"{1:10,2:4,3:5,4:5,37306:98,36796:9}\",json);\n\n        Map<Integer,Integer> map1 = JSON.parseObject(json,new TypeReference<HashMap<Integer,Integer>>() {});\n\n        Assert.assertEquals(map1.get(Integer.valueOf(1)),Integer.valueOf(10));\n        Assert.assertEquals(map1.get(Integer.valueOf(2)),Integer.valueOf(4));\n        Assert.assertEquals(map1.get(Integer.valueOf(3)),Integer.valueOf(5));\n        Assert.assertEquals(map1.get(Integer.valueOf(4)),Integer.valueOf(5));\n        Assert.assertEquals(map1.get(Integer.valueOf(37306)),Integer.valueOf(98));\n        Assert.assertEquals(map1.get(Integer.valueOf(36796)),Integer.valueOf(9));\n\n        JSONObject map2 = JSON.parseObject(\"{35504:1,1:10,2:4,3:5,4:5,37306:98,36796:9\\n\" + \"}\");\n\n        Assert.assertEquals(map2.get(Integer.valueOf(1)),Integer.valueOf(10));\n        Assert.assertEquals(map2.get(Integer.valueOf(2)),Integer.valueOf(4));\n        Assert.assertEquals(map2.get(Integer.valueOf(3)),Integer.valueOf(5));\n        Assert.assertEquals(map2.get(Integer.valueOf(4)),Integer.valueOf(5));\n        Assert.assertEquals(map2.get(Integer.valueOf(37306)),Integer.valueOf(98));\n        Assert.assertEquals(map2.get(Integer.valueOf(36796)),Integer.valueOf(9));\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1400/Issue1482.java",
    "content": "package com.alibaba.json.bvt.issue_1400;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.Date;\n\npublic class Issue1482 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSON.parseObject(\"{\\\"date\\\":\\\"2017-06-28T07:20:05.000+05:30\\\"}\", Model.class);\n    }\n\n    public static class Model {\n        public Date date;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1400/Issue1486.java",
    "content": "package com.alibaba.json.bvt.issue_1400;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\npublic class Issue1486 extends TestCase {\n    public void test_for_issue() throws Exception {\n\n        String json = \"[{\\\"song_list\\\":[{\\\"val\\\":1,\\\"v_al\\\":2},{\\\"val\\\":2,\\\"v_al\\\":2},{\\\"val\\\":3,\\\"v_al\\\":2}],\\\"songlist\\\":\\\"v_al\\\"}]\";\n        List<Value> parseObject = JSON.parseObject(json, new TypeReference<List<Value>>() {\n        });\n        for (Value value : parseObject) {\n            System.out.println(value.songList + \"  \" );\n        }\n    }\n\n    public static class Value {\n        @JSONField(alternateNames = {\"song_list\", \"songList\"})\n        List<Value2> songList;\n\n        @JSONField(alternateNames = {\"songlist\"})\n        String songlist;\n\n        public List<Value2> getSongList() {\n            return songList;\n        }\n\n        public void setSongList(List<Value2> songList) {\n            this.songList = songList;\n        }\n\n        public String getSonglist() {\n            return songlist;\n        }\n\n        public void setSonglist(String songlist) {\n            this.songlist = songlist;\n        }\n    }\n\n    public static class Value2 {\n        int val;\n\n        int v_al;\n\n        public int getVal() {\n            return val;\n        }\n\n        public void setVal(int val) {\n            this.val = val;\n        }\n\n        public int getV_al() {\n            return v_al;\n        }\n\n        public void setV_al(int v_al) {\n            this.v_al = v_al;\n        }\n\n        @Override\n        public String toString() {\n            return \"Value2{\" +\n                    \"val=\" + val +\n                    \", v_al=\" + v_al +\n                    '}';\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1400/Issue1487.java",
    "content": "package com.alibaba.json.bvt.issue_1400;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\npublic class Issue1487 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = new Model();\n        model._id = 1001L;\n        model.id = 1002L;\n\n        String json = JSON.toJSONString(model);\n        assertEquals(\"{\\\"_id\\\":1001,\\\"id\\\":1002}\", json);\n        Model model1 = JSON.parseObject(json, Model.class);\n        assertEquals(json, JSON.toJSONString(model1));\n    }\n\n    public static class Model {\n        private Long _id;\n        private Long id;\n\n        @JSONField(name = \"_id\")\n        public long get_id() {\n            if (null != _id) {\n                return _id.longValue();\n            } else {\n                return 0L;\n            }\n        }\n\n        @JSONField(name = \"_id\")\n        public void set_id(Long _id) {\n            this._id = _id;\n        }\n\n        public long getId() {\n            if (null != id) {\n                return id.longValue();\n            } else {\n                return 0L;\n            }\n        }\n\n        public void setId(Long id) {\n            this.id = id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1400/Issue1492.java",
    "content": "package com.alibaba.json.bvt.issue_1400;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\nimport java.io.Serializable;\n\npublic class Issue1492 extends TestCase {\n    public void test_for_issue() throws Exception {\n        DubboResponse resp = new DubboResponse();\n\n        // test for JSONObject\n        JSONObject obj = new JSONObject();\n        obj.put(\"key1\",\"value1\");\n        obj.put(\"key2\",\"value2\");\n        resp.setData(obj);\n\n        String str = JSON.toJSONString(resp);\n        System.out.println(str);\n        DubboResponse resp1 = JSON.parseObject(str, DubboResponse.class);\n        assertEquals(str, JSON.toJSONString(resp1));\n\n        // test for JSONArray\n        JSONArray arr = new JSONArray();\n        arr.add(\"key1\");\n        arr.add(\"key2\");\n        resp.setData(arr);\n\n        String str2 = JSON.toJSONString(resp);\n        System.out.println(str2);\n        DubboResponse resp2 = JSON.parseObject(str2, DubboResponse.class);\n        assertEquals(str2, JSON.toJSONString(resp2));\n\n    }\n\n    public static final class DubboResponse implements Serializable {\n\n        private String message;\n\n        private String error;\n\n        private JSON data;\n\n        private boolean success;\n\n        public String getMessage() {\n            return message;\n        }\n\n        public void setMessage(String message) {\n            this.message = message;\n        }\n\n        public String getError() {\n            return error;\n        }\n\n        public void setError(String error) {\n            this.error = error;\n        }\n\n        public JSON getData() {\n            return data;\n        }\n\n        public void setData(JSON data) {\n            this.data = data;\n        }\n\n        public boolean isSuccess() {\n            return success;\n        }\n\n        public void setSuccess(boolean success) {\n            this.success = success;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1400/Issue1493.java",
    "content": "package com.alibaba.json.bvt.issue_1400;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.json.bvt.issue_1500.Issue1500;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.time.LocalDateTime;\nimport java.time.format.DateTimeFormatter;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\npublic class Issue1493 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n\n    public void test_for_issue() throws Exception {\n\n        TestBean test = new TestBean();\n        String stime2 = \"2017-09-22T15:08:56\";\n\n        LocalDateTime time1 = LocalDateTime.now();\n        time1 = time1.minusNanos(10L);\n        System.out.println(time1.getNano());\n        LocalDateTime time2 = LocalDateTime.parse(stime2);\n        test.setTime1(time1);\n        test.setTime2(time2);\n        String t1 = JSON.toJSONString(time1, SerializerFeature.WriteDateUseDateFormat);\n\n        String json = JSON.toJSONString(test, SerializerFeature.WriteDateUseDateFormat);\n        Assert.assertEquals(\"{\\\"time1\\\":\"+t1+\",\\\"time2\\\":\\\"2017-09-22 15:08:56\\\"}\",json);\n\n\n        //String default_format = JSON.DEFFAULT_LOCAL_DATE_TIME_FORMAT;\n        //JSON.DEFFAULT_LOCAL_DATE_TIME_FORMAT = \"yyyy-MM-dd HH:mm:ss\";\n        //String stime1 = DateTimeFormatter.ofPattern(JSON.DEFFAULT_LOCAL_DATE_TIME_FORMAT, Locale.CHINA).format(time1);\n\n        json = JSON.toJSONString(test, SerializerFeature.WriteDateUseDateFormat);\n        Assert.assertEquals(\"{\\\"time1\\\":\"+ JSON.toJSONString(time1, SerializerFeature.WriteDateUseDateFormat) +\",\\\"time2\\\":\\\"2017-09-22 15:08:56\\\"}\",json);\n\n\n        String pattern = \"yyyy-MM-dd'T'HH:mm:ss\";\n        String stime1 = DateTimeFormatter.ofPattern(pattern, Locale.CHINA).format(time1);\n\n        json = JSON.toJSONStringWithDateFormat(test, \"yyyy-MM-dd'T'HH:mm:ss\", SerializerFeature.WriteDateUseDateFormat);\n        Assert.assertEquals(\"{\\\"time1\\\":\\\"\"+stime1+\"\\\",\\\"time2\\\":\\\"\"+stime2+\"\\\"}\",json);\n\n        //JSON.DEFFAULT_LOCAL_DATE_TIME_FORMAT = default_format;\n    }\n\n    public static class TestBean {\n        LocalDateTime time1;\n        LocalDateTime time2;\n\n        public LocalDateTime getTime1() {\n            return time1;\n        }\n\n        public void setTime1(LocalDateTime time1) {\n            this.time1 = time1;\n        }\n\n        public LocalDateTime getTime2() {\n            return time2;\n        }\n\n        public void setTime2(LocalDateTime time2) {\n            this.time2 = time2;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1400/Issue1494.java",
    "content": "package com.alibaba.json.bvt.issue_1400;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport junit.framework.TestCase;\n\npublic class Issue1494 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"{\\\"id\\\":1001,\\\"name\\\":\\\"wenshao\\\"}\";\n        B b = JSON.parseObject(json, B.class);\n        assertEquals(\"{\\\"id\\\":1001,\\\"name\\\":\\\"wenshao\\\"}\", JSON.toJSONString(b));\n    }\n\n    public static class A {\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n    }\n\n    @JSONType(parseFeatures = Feature.SupportNonPublicField)\n    public static class B extends A {\n        private String name;\n\n        public String getName() {\n            return name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1400/Issue1496.java",
    "content": "package com.alibaba.json.bvt.issue_1400;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport junit.framework.TestCase;\n\nimport java.util.Arrays;\nimport java.util.List;\n\npublic class Issue1496 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = JSON.toJSONString(SetupStatus.FINAL_TRAIL);\n        assertEquals(\"{\\\"canRefuse\\\":true,\\\"code\\\":3,\\\"declaringClass\\\":\\\"com.alibaba.json.bvt.issue_1400.Issue1496$SetupStatus\\\",\\\"first\\\":false,\\\"last\\\":false,\\\"name\\\":\\\"FINAL_TRAIL\\\",\\\"nameCn\\\":\\\"公益委员会/理事会/理事长审核\\\"}\", json);\n    }\n\n    public interface ISetupStatusInfo {\n        List<SetupStatus> nextList();\n\n        Boolean isFirst();\n\n        Boolean isLast();\n    }\n\n    public interface ISetupStatusProcess {\n\n        /**\n         *\n         * @return\n         */\n        SetupStatus refuse();\n\n        /**\n         * 状态转移失败返回null\n         *\n         * @param name\n         * @return\n         */\n        SetupStatus next(String name);\n\n    }\n\n    @JSONType(serializeEnumAsJavaBean = true)\n    public enum SetupStatus implements ISetupStatusInfo, ISetupStatusProcess {\n        EDIT(0, \"EDIT\", \"编辑中\") {\n            public List<SetupStatus> nextList() {\n                return Arrays.asList(FIRST_TRAIL);\n            }\n\n            @Override\n            public Boolean isFirst() {\n                return true;\n            }\n\n            @Override\n            public SetupStatus refuse() {\n                return EDIT;\n            }\n\n        }, FIRST_TRAIL(1, \"FIRST_TRAIL\", \"初审\") {\n            public List<SetupStatus> nextList() {\n                return Arrays.asList(EXPERT, FINAL_TRAIL);\n            }\n\n            @Override\n            public SetupStatus refuse() {\n                return EDIT;\n            }\n\n        }, EXPERT(2, \"EXPERT\", \"专家补充意见\", false) {\n            public List<SetupStatus> nextList() {\n                return Arrays.asList(FINAL_TRAIL);\n            }\n\n        }, FINAL_TRAIL(3, \"FINAL_TRAIL\", \"公益委员会/理事会/理事长审核\") {\n            public List<SetupStatus> nextList() {\n                return Arrays.asList(PASS);\n            }\n\n            @Override\n            public SetupStatus refuse() {\n                return EDIT;\n            }\n        }, PASS(4, \"PASS\", \"项目通过\", false) {\n            public List<SetupStatus> nextList() {\n                return Arrays.asList(SIGN);\n            }\n        }, SIGN(5, \"SIGN\", \"协议签署\", false) {\n            @Override\n            public List<SetupStatus> nextList() {\n                return Arrays.asList(ACTIVE);\n            }\n        }, ACTIVE(6, \"ACTIVE\", \"启动\") {\n            @Override\n            public List<SetupStatus> nextList() {\n                return null;\n            }\n\n            @Override\n            public Boolean isLast() {\n                return true;\n            }\n        };\n        private int code;\n        private String name;\n        private String nameCn;\n        private boolean canRefuse;\n\n        SetupStatus(int code, String name, String nameCn) {\n            this.code = code;\n            this.name = name;\n            this.nameCn = nameCn;\n            this.canRefuse = true;\n        }\n\n        SetupStatus(int code, String name, String nameCn, boolean canRefuse) {\n            this.code = code;\n            this.name = name;\n            this.nameCn = nameCn;\n            this.canRefuse = canRefuse;\n        }\n\n        public int getCode() {\n            return code;\n        }\n\n        public void setCode(int code) {\n            this.code = code;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public String getNameCn() {\n            return nameCn;\n        }\n\n        public void setNameCn(String nameCn) {\n            this.nameCn = nameCn;\n        }\n\n        public boolean isCanRefuse() {\n            return canRefuse;\n        }\n\n        public void setCanRefuse(boolean canRefuse) {\n            this.canRefuse = canRefuse;\n        }\n\n        public static SetupStatus getFromCode(Integer code) {\n            if (code == null) {\n                return null;\n            }\n            for (SetupStatus status : values()) {\n                if (status.code == code) {\n                    return status;\n                }\n            }\n            throw new IllegalArgumentException(\"unknown SetupStatus enumeration code:\" + code);\n        }\n\n        public static SetupStatus getFromName(String name) {\n            if (name == null) {\n                return null;\n            }\n            for (SetupStatus status : values()) {\n                if (status.name.equals(name)) {\n                    return status;\n                }\n            }\n            return null;\n        }\n\n        public Boolean isFirst() {\n            return false;\n        }\n\n        public Boolean isLast() {\n            return false;\n        }\n\n        public SetupStatus refuse() {\n            return null;\n        }\n\n        public SetupStatus next(String name) {\n            SetupStatus status = getFromName(name);\n            return name != null && this.nextList().contains(status) ? status : null;\n        }\n\n        @Override\n        public String toString() {\n            return \"SetupStatus{\" + \"code=\" + code + \", name='\" + name + '\\'' + \", nameCn='\" + nameCn + '\\'' + \", canRefuse=\" + canRefuse + '}';\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1400/Issue1498.java",
    "content": "package com.alibaba.json.bvt.issue_1400;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\npublic class Issue1498 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"flag\\\":\\\"QUALITY_GRADUATE\\\"}\", Model.class);\n        assertNull(model.flag);\n    }\n\n    public void test_for_issue_match() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"flag\\\":\\\"IS_NEED_CHECK_IDENTITY\\\"}\", Model.class);\n        assertSame(BuFlag.IS_NEED_CHECK_IDENTITY, model.flag);\n    }\n\n    public static class Model {\n        public BuFlag flag;\n    }\n\n    public enum BuFlag\n    {\n        IS_NEED_CHECK_IDENTITY(1L, \"a\"),  HAS_CHECK_IDENTITY(2L, \"b\");\n\n        private long bit;\n        private String desc;\n\n        private BuFlag(long bit, String desc)\n        {\n            this.bit = bit;\n            this.desc = desc;\n        }\n\n        public long getBit()\n        {\n            return this.bit;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1400/Issue_for_wuye.java",
    "content": "package com.alibaba.json.bvt.issue_1400;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.Date;\n\npublic class Issue_for_wuye extends TestCase {\n    public void test_for_issue() throws Exception {\n        String poistr = \"{\\\"gmtModified\\\":\\\"2017-09-07 16:39:19\\\",\\\"gmtCreate\\\":\\\"2017-09-07 16:39:19\\\"}\";\n        TimeBean poiInfo = JSON.parseObject(poistr, TimeBean.class);\n    }\n\n    public static class TimeBean {\n        private Date time1;\n        private Date time2;\n\n        public Date getTime1() {\n            return time1;\n        }\n        public void setTime1(Date time1) {\n            this.time1 = time1;\n        }\n        public Date getTime2() {\n            return time2;\n        }\n        public void setTime2(Date time2) {\n            this.time2 = time2;\n        }\n\n        private Date gmtModified;\n        private Date gmtCreate;\n\n        public Date getGmtCreate() {\n            return gmtCreate;\n        }\n        public void setGmtCreate(Date gmtCreate) {\n            this.gmtCreate = gmtCreate;\n        }\n        public Date getGmtModified() {\n            return gmtModified;\n        }\n        public void setGmtModified(Date gmtModified) {\n            this.gmtModified = gmtModified;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1500/Issue1500.java",
    "content": "package com.alibaba.json.bvt.issue_1500;\n\nimport clojure.lang.Obj;\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic class Issue1500 extends TestCase {\n\n\n    public void test_for_issue() throws Exception {\n\n        // test aa\n        Aa aa = new Aa();\n        aa.setName(\"aa\");\n        String jsonAa = JSON.toJSONString(aa);\n        Aa aa1 = JSON.parseObject(jsonAa, Aa.class);\n        Assert.assertEquals(\"aa\",aa1.getName());\n\n        // test C\n        C c = new C();\n        c.setE(aa);\n        String jsonC = JSON.toJSONString(c, SerializerFeature.WriteClassName);\n        C c2 = JSON.parseObject(jsonC, C.class);\n        Assert.assertEquals(\"Aa\",c2.getE().getClass().getSimpleName());\n        Assert.assertEquals(\"aa\",((Aa)c2.getE()).getName());\n    }\n\n    public static class Aa extends Exception {\n\n        public Aa(){\n        }\n\n        private String name;\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n    public static class C {\n\n        private Exception e;\n\n        public Exception getE() {\n            return e;\n        }\n\n        public void setE(Exception e) {\n            this.e = e;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1500/Issue1503.java",
    "content": "package com.alibaba.json.bvt.issue_1500;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic class Issue1503 extends TestCase {\n    public void test_for_issue() throws Exception {\n        ParserConfig config = new ParserConfig();\n        config.setAutoTypeSupport(true);\n        Map<Long, Bean> map = new HashMap<Long, Bean>();\n        map.put(null, new Bean());\n        Map<Long, Bean> rmap = (Map<Long, Bean>) JSON.parse(JSON.toJSONString(map, SerializerFeature.WriteClassName), config);\n        System.out.println(rmap);\n    }\n\n    public static class Bean {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1500/Issue1510.java",
    "content": "package com.alibaba.json.bvt.issue_1500;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\npublic class Issue1510 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n\n    public void test_for_issue() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"startTime\\\":\\\"2017-11-04\\\",\\\"endTime\\\":\\\"2017-11-14\\\"}\", Model.class);\n        String text = JSON.toJSONString(model);\n        assertEquals(\"{\\\"endTime\\\":\\\"2017-11-14\\\",\\\"startTime\\\":\\\"2017-11-04\\\"}\", text);\n    }\n\n    public static class Model {\n        @JSONField(format = \"yyyy-MM-dd\")\n        private Date startTime;\n\n        @JSONField(format = \"yyyy-MM-dd\")\n        private Date endTime;\n\n        public Date getStartTime() {\n            return startTime;\n        }\n\n        public void setStartTime(Date startTime) {\n            this.startTime = startTime;\n        }\n\n        public Date getEndTime() {\n            return endTime;\n        }\n\n        public void setEndTime(Date endTime) {\n            this.endTime = endTime;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1500/Issue1513.java",
    "content": "package com.alibaba.json.bvt.issue_1500;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\n\npublic class Issue1513 extends TestCase {\n    public void test_for_issue() throws Exception {\n        {\n            Model<Object> model = JSON.parseObject(\"{\\\"values\\\":[{\\\"id\\\":123}]}\", new TypeReference<Model<Object>>(){});\n            assertNotNull(model.values);\n            assertEquals(1, model.values.length);\n            JSONObject object = (JSONObject) model.values[0];\n            assertEquals(123, object.getIntValue(\"id\"));\n        }\n        {\n            Model<A> model = JSON.parseObject(\"{\\\"values\\\":[{\\\"id\\\":123}]}\", new TypeReference<Model<A>>(){});\n            assertNotNull(model.values);\n            assertEquals(1, model.values.length);\n            A a = model.values[0];\n            assertEquals(123, a.id);\n        }\n        {\n            Model<B> model = JSON.parseObject(\"{\\\"values\\\":[{\\\"value\\\":123}]}\", new TypeReference<Model<B>>(){});\n            assertNotNull(model.values);\n            assertEquals(1, model.values.length);\n            B b = model.values[0];\n            assertEquals(123, b.value);\n        }\n        {\n            Model<C> model = JSON.parseObject(\"{\\\"values\\\":[{\\\"age\\\":123}]}\", new TypeReference<Model<C>>(){});\n            assertNotNull(model.values);\n            assertEquals(1, model.values.length);\n            C c = model.values[0];\n            assertEquals(123, c.age);\n        }\n    }\n\n    public static class Model<T> {\n        public T[] values;\n    }\n\n    public static class A {\n        public int id;\n    }\n\n    public static class B {\n        public int value;\n    }\n\n    public static class C {\n        public int age;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1500/Issue1524.java",
    "content": "package com.alibaba.json.bvt.issue_1500;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.NameFilter;\nimport com.alibaba.fastjson.serializer.ObjectSerializer;\nimport junit.framework.TestCase;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\n\npublic class Issue1524 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = new Model();\n        model.oldValue = new Value();\n\n        String json = JSON.toJSONString(model, new NameFilter() {\n            public String process(Object object, String name, Object value) {\n                if (\"oldValue\".equals(name)) {\n                    return \"old_value\";\n                }\n                return name;\n            }\n        });\n        System.out.println(json);\n    }\n\n    public static class Model {\n        @JSONField(serializeUsing = ValueSerializer.class)\n        public Value oldValue;\n    }\n\n    public static class Value {\n\n    }\n\n    public static class ValueSerializer implements ObjectSerializer {\n\n        public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\n            serializer.write(\"xx\");\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1500/Issue1529.java",
    "content": "package com.alibaba.json.bvt.issue_1500;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\npublic class Issue1529 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String text = \"{\\\"isId\\\":false,\\\"Id\\\":138042533,\\\"name\\\":\\\"example\\\",\\\"height\\\":172}\";\n        Person person = JSON.parseObject(text, Person.class);\n        assertEquals(138042533, person.Id);\n        assertEquals(\"example\", person.name);\n        assertEquals(172.0D, person.height);\n    }\n\n    public static class Person {\n        private int Id;\n        public String name;\n        public double height;\n\n        public int getId() {\n            return Id;\n        }\n\n        public void setId(int id) {\n            if (id <= 1) {\n                throw new IllegalArgumentException();\n            }\n            Id = id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1500/Issue1548.java",
    "content": "package com.alibaba.json.bvt.issue_1500;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport java.io.Serializable;\nimport java.util.List;\n\npublic class Issue1548 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String msg = \"[{\\\"doc\\\":{\\\"bottomprice\\\":80,\\\"cashpool_isdeleted\\\":0,\\\"shopcityid\\\":190,\\\"timerange\\\":\\\"2017-10-25;2017-10-26\\\",\\\"launchentityid\\\":3048,\\\"bidprice\\\":700,\\\"targetitems\\\":\\\"{}\\\",\\\"type\\\":0,\\\"slottagid\\\":44,\\\"targetid\\\":330048,\\\"entity_isdeleted\\\":0,\\\"bu\\\":2,\\\"target_isdeleted\\\":0,\\\"shopid\\\":6067941,\\\"slotids\\\":\\\"50041,10233,50051,10033,50061,50001,10099,10133,50101,10051\\\",\\\"launchscope\\\":0,\\\"productid\\\":74,\\\"creativeid\\\":300048,\\\"dpentitystatus\\\":1,\\\"accountid\\\":20151002,\\\"entitytype\\\":4,\\\"launchplatforms\\\":\\\"\\\",\\\"iszhuantou\\\":0,\\\"dpentityid\\\":6067941,\\\"timeslotperiod\\\":\\\"0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167\\\",\\\"templateid\\\":23,\\\"category1\\\":246,\\\"launch_isdeleted\\\":0,\\\"cashpoolid\\\":20151002,\\\"creative_isdeleted\\\":0,\\\"settlementstatus\\\":1,\\\"cityid\\\":\\\"190\\\",\\\"planid\\\":1042007,\\\"categoryid\\\":\\\"10 246\\\",\\\"price\\\":700,\\\"shoptype\\\":10,\\\"plan_isdeleted\\\":0,\\\"launchid\\\":30000048,\\\"creativeext\\\":\\\"{\\\\\\\"content\\\\\\\":\\\\\\\"啊啊啊啊啊啊啊啊\\\\\\\",\\\\\\\"title\\\\\\\":\\\\\\\"啊啊啊啊啊\\\\\\\",\\\\\\\"smartPic\\\\\\\":0,\\\\\\\"mobUrl\\\\\\\":\\\\\\\"https://evt.dianping.com/midas/1activities/3809/index.html?dpid=7997757988618737578&cityid=1&longitude=121.41543&latitude=31.21684&token=&product=dpapp&area=pc\\\\\\\",\\\\\\\"mtMobUrl\\\\\\\":\\\\\\\"https://evt.dianping.com/midas/1activities/3809/index.html?dpid=7997757988618737578&cityid=1&longitude=121.41543&latitude=31.21684&token=&product=dpapp&area=mtapp\\\\\\\"}\\\",\\\"chargetype\\\":1,\\\"channel\\\":0,\\\"generatedchannel\\\":0,\\\"promotype\\\":2},\\\"meta\\\":{\\\"LSN\\\":2077395,\\\"AREA\\\":\\\"engine-searchcpc\\\",\\\"PRIMARY_KEY\\\":[\\\"creativeid\\\",\\\"targetid\\\"],\\\"SECONDARY_KEY\\\":[\\\"planid\\\",\\\"shopid\\\",\\\"launchentityid\\\",\\\"launchid\\\",\\\"cashpoolid\\\"],\\\"TYPE\\\":\\\"UPDATE\\\"}}]\";\n        // JSONArray.parse(msg);\n        JSON.parseArray(msg).toJavaList(PublishDoc.class);\n    }\n\n    public static class PublishDoc implements Serializable {\n\n        public static final String LSN_META_NAME = \"LSN\";\n        public static final String DOCTYPE_META_NAME = \"TYPE\";\n        public static final String AREA_META_NAME = \"AREA\";\n        public static final String PRIMARY_KEY_META_NAME = \"PRIMARY_KEY\";\n        public static final String SECONDARY_KEY_META_NAME = \"SECONDARY_KEY\";\n\n        private JSONObject meta;\n        private JSONObject doc;\n\n        public PublishDoc() {\n            this.meta = new JSONObject();\n            this.doc = new JSONObject();\n        }\n\n\n        @JSONField(serialize = false)\n        public void addMeta(String name, Object value) {\n            this.meta.put(name, value);\n        }\n\n        @JSONField(serialize = false)\n        public Object getMeta(String name) {\n            return this.meta.get(name);\n        }\n\n\n\n        @Override\n        public String toString() {\n            return JSON.toJSONString(this);\n        }\n    }\n\n    public static enum DocType{\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1500/Issue1555.java",
    "content": "package com.alibaba.json.bvt.issue_1500;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.PropertyNamingStrategy;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport junit.framework.TestCase;\n\npublic class Issue1555 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = new Model();\n        model.userId = 1001;\n        model.userName = \"test\";\n        String text = JSON.toJSONString(model);\n        assertEquals(\"{\\\"userName\\\":\\\"test\\\",\\\"user_id\\\":1001}\", text);\n\n        Model model2 = JSON.parseObject(text, Model.class);\n\n        assertEquals(1001, model2.userId);\n        assertEquals(\"test\", model2.userName);\n    }\n\n    /**\n     * 当某个字段有JSONField注解，JSONField中name属性不存在，json属性名也要用类上的属性名转换策略\n     * @throws Exception\n     */\n    public void test_when_JSONField_have_not_name_attr() throws Exception {\n        ModelTwo modelTwo = new ModelTwo();\n        modelTwo.userId = 1001;\n        modelTwo.userName = \"test\";\n        String text = JSON.toJSONString(modelTwo);\n        assertEquals(\"{\\\"userName\\\":\\\"test\\\",\\\"user_id\\\":\\\"1001\\\"}\", text);\n\n        Model model2 = JSON.parseObject(text, Model.class);\n\n        assertEquals(1001, model2.userId);\n        assertEquals(\"test\", model2.userName);\n    }\n\n    @JSONType(naming = PropertyNamingStrategy.SnakeCase)\n    public static class Model {\n        private int userId;\n        @JSONField(name = \"userName\")\n        private String userName;\n\n        public int getUserId() {\n            return userId;\n        }\n\n        public void setUserId(int userId) {\n            this.userId = userId;\n        }\n\n        public String getUserName() {\n            return userName;\n        }\n\n        public void setUserName(String userName) {\n            this.userName = userName;\n        }\n    }\n\n    @JSONType(naming = PropertyNamingStrategy.SnakeCase)\n    public static class ModelTwo {\n        /**\n         * 此字段准备序列化为字符串类型\n         */\n        @JSONField(serializeUsing = StringSerializer.class)\n        private int userId;\n        @JSONField(name = \"userName\")\n        private String userName;\n\n        public int getUserId() {\n            return userId;\n        }\n\n        public void setUserId(int userId) {\n            this.userId = userId;\n        }\n\n        public String getUserName() {\n            return userName;\n        }\n\n        public void setUserName(String userName) {\n            this.userName = userName;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1500/Issue1556.java",
    "content": "package com.alibaba.json.bvt.issue_1500;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.io.Serializable;\nimport java.util.Date;\n\npublic class Issue1556 extends TestCase {\n    public void test_for_issue() throws Exception {\n        ClassForData classForData = new ClassForData();\n        classForData.setDataName(\"dataname\");\n        SubCommonClass commonClass = new SubCommonClass(new Date());\n\n        FirstSubClass firstSubClass = new FirstSubClass();\n        firstSubClass.setAddr(\"It is addr\");\n        firstSubClass.setCommonInfo(commonClass);\n\n        SecondSubClass secondSubClass = new SecondSubClass();\n        secondSubClass.setName(\"It is name\");\n        secondSubClass.setCommonInfo(firstSubClass.getCommonInfo());\n\n        classForData.setFirst(firstSubClass);\n        classForData.setSecond(secondSubClass);\n\n        ApiResult<ClassForData> apiResult = ApiResult.valueOfSuccess(classForData);\n        ParserConfig config = new ParserConfig();\n        config.setAutoTypeSupport(true);\n\n        String jsonString = JSON.toJSONString(apiResult, SerializerFeature.WriteClassName);//这里加上SerializerFeature.DisableCircularReferenceDetect\n        System.out.println(jsonString);\n        Object obj = JSON.parse(jsonString, config);//这里加上Feature.DisableCircularReferenceDetect  这样的话 是可以避免空值的  ，但是$ref 还有啥意思呢\n        System.out.println(JSON.toJSONString(obj));\n    }\n\n    public static class ApiResult<T> implements Serializable {\n        private String msg;\n        private int code;\n        private T data;\n\n        public ApiResult() {\n        }\n\n        public ApiResult(int code, String msg,T data) {\n            this.code = code;\n            this.msg = msg;\n            this.data = data;\n        }\n\n        public String getMsg() {\n            return msg;\n        }\n        public int getCode() {\n            return code;\n        }\n        public void setMsg(String msg) {\n            this.msg = msg;\n        }\n\n        public void setCode(int code) {\n            this.code = code;\n        }\n\n        public T getData() {\n            return data;\n        }\n\n        public void setData(T data) {\n            this.data = data;\n        }\n\n        public static <T> ApiResult<T> valueOfSuccess(T data) {\n            return new ApiResult<T>(0, \"Success\", data);\n        }\n\n    }\n\n    public static class ClassForData implements Serializable {\n\n        private String dataName;\n\n        private FirstSubClass first;\n\n        private SecondSubClass second;\n\n\n        public String getDataName() {\n            return dataName;\n        }\n\n        public void setDataName(String dataName) {\n            this.dataName = dataName;\n        }\n\n        public FirstSubClass getFirst() {\n            return first;\n        }\n\n        public void setFirst(FirstSubClass first) {\n            this.first = first;\n        }\n\n        public SecondSubClass getSecond() {\n            return second;\n        }\n\n        public void setSecond(SecondSubClass second) {\n            this.second = second;\n        }\n    }\n\n    public static class FirstSubClass  implements Serializable{\n\n        private String addr;//仅仅做下和second的区分\n\n        private  SubCommonClass commonInfo;\n\n\n        public String getAddr() {\n            return addr;\n        }\n\n        public void setAddr(String addr) {\n            this.addr = addr;\n        }\n\n        public SubCommonClass getCommonInfo() {\n            return commonInfo;\n        }\n\n        public void setCommonInfo(SubCommonClass commonInfo) {\n            this.commonInfo = commonInfo;\n        }\n\n    }\n\n    public static class SecondSubClass implements Serializable{\n\n        private String name;\n\n        private  SubCommonClass commonInfo;\n\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public SubCommonClass getCommonInfo() {\n            return commonInfo;\n        }\n\n        public void setCommonInfo(SubCommonClass commonInfo) {\n            this.commonInfo = commonInfo;\n        }\n    }\n\n\n    public static class SubCommonClass  implements Serializable {\n\n        private Date demoDate;\n\n        public SubCommonClass(){\n        }\n\n        public SubCommonClass(Date demoDate){\n            this.demoDate = demoDate;\n        }\n\n        public Date getDemoDate() {\n            return demoDate;\n        }\n\n        public void setDemoDate(Date demoDate) {\n            this.demoDate = demoDate;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1500/Issue1558.java",
    "content": "package com.alibaba.json.bvt.issue_1500;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport junit.framework.TestCase;\n\nimport java.io.Serializable;\n\npublic class Issue1558 extends TestCase {\n    public void test_for_issue() throws Exception {\n        ParserConfig config = new ParserConfig();\n        config.setAutoTypeSupport(true);\n        String text = \"{\\\"id\\\": \\\"439a3213-e734-4bf3-9870-2c471f43d651\\\", \\\"instance\\\": \\\"v1\\\", \\\"interface\\\": \\\"com.xxx.aplan.UICommands\\\", \\\"method\\\": \\\"start\\\", \\\"params\\\": [\\\"tony\\\"], \\\"@type\\\": \\\"com.alibaba.json.bvt.issue_1500.Issue1558$Request\\\"}\";\n\n        JSON.parseObject(text, Request.class, config);\n    }\n\n    @JSONType\n    public static class Request implements Serializable {\n        private String id;\n        private String instance;\n        private String _interface;\n        private String method;\n        private Object[] params;\n        public String getId() {\n            return id;\n        }\n        public void setId(String id) {\n            this.id = id;\n        }\n        public String getInstance() {\n            return instance;\n        }\n        public void setInstance(String instance) {\n            this.instance = instance;\n        }\n        public String getInterface() {\n            return _interface;\n        }\n        public void setInterface(String _interface) {\n            this._interface = _interface;\n        }\n        public String getMethod() {\n            return method;\n        }\n        public void setMethod(String method) {\n            this.method = method;\n        }\n        public Object[] getParams() {\n            return params;\n        }\n        public void setParams(Object[] params) {\n            this.params = params;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1500/Issue1565.java",
    "content": "package com.alibaba.json.bvt.issue_1500;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.PropertyNamingStrategy;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.io.Serializable;\nimport java.util.List;\n\n/**\n * Created by SongLing.Dong on 11/7/2017.\n */\npublic class Issue1565 extends TestCase{\n\n    public void test_testLargeBeanContainsOver256Field(){\n        SerializeConfig serializeConfig = new SerializeConfig();\n        serializeConfig.propertyNamingStrategy = PropertyNamingStrategy.SnakeCase;\n\n//        SmallBean smallBean = new SmallBean();\n//        smallBean.setId(\"S35669xxxxxxxxxxxxxx\");\n//        smallBean.setNetValueDate(20171105);\n//\n//        System.out.println(JSON.toJSONString(smallBean, serializeConfig));\n\n\n        LargeBean expectedBean = new LargeBean();\n        expectedBean.setId(\"S35669\");\n        expectedBean.setNetValueDate(20171105);\n        String expectedStr = \"{\\\"id\\\":\\\"S35669\\\",\\\"net_value_date\\\":20171105}\";\n\n        String actualStr = JSON.toJSONString(expectedBean, serializeConfig);\n        JSONObject actualBean = JSON.parseObject(actualStr);\n        Assert.assertEquals(expectedStr, actualStr);\n        Assert.assertEquals(expectedBean.getId(), actualBean.getString(\"id\"));\n        Assert.assertEquals(expectedBean.getNetValueDate(), actualBean.getInteger(\"net_value_date\"));\n\n\n\n    }\n\n    public static class SmallBean implements Serializable{\n        private String id;\n\n        public String getId() {\n            return id;\n        }\n\n        public void setId(String id) {\n            this.id = id;\n        }\n\n        public Integer getNetValueDate() {\n            return netValueDate;\n        }\n\n        public void setNetValueDate(Integer netValueDate) {\n            this.netValueDate = netValueDate;\n        }\n\n        private Integer netValueDate;\n    }\n\n    public static class LargeBean implements Serializable {\n\n        /**\n         * 每页数量\n         */\n        private Integer pageSize;\n\n        /**\n         * 获取第一个记录的下标\n         */\n        private Integer firstResult;\n\n        /**\n         * 获取数量\n         */\n        private Integer fetchSize;\n\n        /**\n         * 开始时间\n         */\n        private String startTime;\n\n        /**\n         * 结束时间\n         */\n        private String endTime;\n\n        /**\n         * 是否管理员标识\n         */\n        private Boolean isAdministrator;\n\n        /**\n         * 排序方式 0:升序 1:倒序\n         */\n        private Byte sortMode;\n\n        /**\n         * 排序字段名\n         */\n        private String sortFieldName;\n\n        /**\n         * 排序字段值\n         */\n        private String sortFieldValue;\n\n        /**\n         * 创建时间戳(毫秒)\n         */\n        private Long createTimestamp;\n\n        /**\n         * 上一次页码\n         */\n        private Integer lastPage;\n\n        /**\n         * 查询类型\n         */\n        private Byte queryType;\n\n        /**\n         * 分片键\n         */\n        private String shard;\n\n        /**\n         * 净值日期，格式：yyyyMMdd\n         */\n        private Integer netValueDate;\n\n        /**\n         * 单位净值\n         */\n        private Float unitNetValue;\n\n        /**\n         * 累计净值\n         */\n        private Float totalNetValue;\n\n        /**\n         * 近一个月累计收益率\n         */\n        private Float nomTotalYield;\n\n        /**\n         * 近半年累计收益率\n         */\n        private Float nhyTotalYield;\n\n        /**\n         * 近一年累计收益率\n         */\n        private Float noyTotalYield;\n\n        /**\n         * 本月累计收益率\n         */\n        private Float tmTotalYield;\n\n        /**\n         * 本季度累计收益率\n         */\n        private Float tqTotalYield;\n\n        /**\n         * 本年累计收益率\n         */\n        private Float tyTotalYield;\n\n        /**\n         * 所有累计收益率\n         */\n        private Float allTotalYield;\n\n        /**\n         * 近一个月年化收益率\n         */\n        private Float nomAnnualizedReturn;\n\n        /**\n         * 近半年年化收益率\n         */\n        private Float nhyAnnualizedReturn;\n\n        /**\n         * 近一年年化收益率\n         */\n        private Float noyAnnualizedReturn;\n\n        /**\n         * 本月年化收益率\n         */\n        private Float tmAnnualizedReturn;\n\n        /**\n         * 本季度年化收益率\n         */\n        private Float tqAnnualizedReturn;\n\n        /**\n         * 本年年化收益率\n         */\n        private Float tyAnnualizedReturn;\n\n        /**\n         * 所有年化收益率\n         */\n        private Float allAnnualizedReturn;\n\n        /**\n         * 近一个月最大盈利幅度\n         */\n        private Float nomMaxProfitMargin;\n\n        /**\n         * 近半年最大盈利幅度\n         */\n        private Float nhyMaxProfitMargin;\n\n        /**\n         * 近一年最大盈利幅度\n         */\n        private Float noyMaxProfitMargin;\n\n        /**\n         * 本月最大盈利幅度\n         */\n        private Float tmMaxProfitMargin;\n\n        /**\n         * 本季度最大盈利幅度\n         */\n        private Float tqMaxProfitMargin;\n\n        /**\n         * 本年最大盈利幅度\n         */\n        private Float tyMaxProfitMargin;\n\n        /**\n         * 所有最大盈利幅度\n         */\n        private Float allMaxProfitMargin;\n\n        /**\n         * 近一个月最大单次盈利\n         */\n        private Float nomMaxSingleProfit;\n\n        /**\n         * 近半年最大单次盈利\n         */\n        private Float nhyMaxSingleProfit;\n\n        /**\n         * 近一年最大单次盈利\n         */\n        private Float noyMaxSingleProfit;\n\n        /**\n         * 本月最大单次盈利\n         */\n        private Float tmMaxSingleProfit;\n\n        /**\n         * 本季度最大单次盈利\n         */\n        private Float tqMaxSingleProfit;\n\n        /**\n         * 本年最大单次盈利\n         */\n        private Float tyMaxSingleProfit;\n\n        /**\n         * 所有最大单次盈利\n         */\n        private Float allMaxSingleProfit;\n\n        /**\n         * 近一个月最大连续盈利次数\n         */\n        private Integer nomMaxConProfitTime;\n\n        /**\n         * 近半年最大连续盈利次数\n         */\n        private Integer nhyMaxConProfitTime;\n\n        /**\n         * 近一年最大连续盈利次数\n         */\n        private Integer noyMaxConProfitTime;\n\n        /**\n         * 本月最大连续盈利次数\n         */\n        private Integer tmMaxConProfitTime;\n\n        /**\n         * 本季度最大连续盈利次数\n         */\n        private Integer tqMaxConProfitTime;\n\n        /**\n         * 本年最大连续盈利次数\n         */\n        private Integer tyMaxConProfitTime;\n\n        /**\n         * 所有最大连续盈利次数\n         */\n        private Integer allMaxConProfitTime;\n\n        /**\n         * 所有最大连续盈利次数出现日期\n         */\n        private Integer allMaxConProfitTimeDate;\n\n        /**\n         * 近一个月最大回撤\n         */\n        private Float nomMaxDrawdown;\n\n        /**\n         * 近半年最大回撤\n         */\n        private Float nhyMaxDrawdown;\n\n        /**\n         * 近一年最大回撤\n         */\n        private Float noyMaxDrawdown;\n\n        /**\n         * 本月最大回撤\n         */\n        private Float tmMaxDrawdown;\n\n        /**\n         * 本季度最大回撤\n         */\n        private Float tqMaxDrawdown;\n\n        /**\n         * 本年最大回撤\n         */\n        private Float tyMaxDrawdown;\n\n        /**\n         * 所有最大回撤\n         */\n        private Float allMaxDrawdown;\n\n        /**\n         * 所有最大回撤出现日期\n         */\n        private Integer allMaxDrawdownDate;\n\n        /**\n         * 近一个月最大单次回撤\n         */\n        private Float nomMaxSingleDrawdown;\n\n        /**\n         * 近半年最大单次回撤\n         */\n        private Float nhyMaxSingleDrawdown;\n\n        /**\n         * 近一年最大单次回撤\n         */\n        private Float noyMaxSingleDrawdown;\n\n        /**\n         * 本月最大单次回撤\n         */\n        private Float tmMaxSingleDrawdown;\n\n        /**\n         * 本季度最大单次回撤\n         */\n        private Float tqMaxSingleDrawdown;\n\n        /**\n         * 本年最大单次回撤\n         */\n        private Float tyMaxSingleDrawdown;\n\n        /**\n         * 所有最大单次回撤\n         */\n        private Float allMaxSingleDrawdown;\n\n        /**\n         * 所有最大单次回撤出现日期\n         */\n        private Integer allMaxSingleDrawdownDate;\n\n        /**\n         * 近一个月最大连续回撤次数\n         */\n        private Integer nomMaxConDrawdownTime;\n\n        /**\n         * 近半年最大连续回撤次数\n         */\n        private Integer nhyMaxConDrawdownTime;\n\n        /**\n         * 近一年最大连续回撤次数\n         */\n        private Integer noyMaxConDrawdownTime;\n\n        /**\n         * 本月最大连续回撤次数\n         */\n        private Integer tmMaxConDrawdownTime;\n\n        /**\n         * 本季度最大连续回撤次数\n         */\n        private Integer tqMaxConDrawdownTime;\n\n        /**\n         * 本年最大连续回撤次数\n         */\n        private Integer tyMaxConDrawdownTime;\n\n        /**\n         * 所有最大连续回撤次数\n         */\n        private Integer allMaxConDrawdownTime;\n\n        /**\n         * 近一个月收益率标准差\n         */\n        private Float nomYieldStdDeviation;\n\n        /**\n         * 近半年收益率标准差\n         */\n        private Float nhyYieldStdDeviation;\n\n        /**\n         * 近一年收益率标准差\n         */\n        private Float noyYieldStdDeviation;\n\n        /**\n         * 本月收益率标准差\n         */\n        private Float tmYieldStdDeviation;\n\n        /**\n         * 本季度收益率标准差\n         */\n        private Float tqYieldStdDeviation;\n\n        /**\n         * 本年收益率标准差\n         */\n        private Float tyYieldStdDeviation;\n\n        /**\n         * 所有收益率标准差\n         */\n        private Float allYieldStdDeviation;\n\n        /**\n         * 近一个月下行标准差\n         */\n        private Float nomDownStdDeviation;\n\n        /**\n         * 近半年下行标准差\n         */\n        private Float nhyDownStdDeviation;\n\n        /**\n         * 近一年下行标准差\n         */\n        private Float noyDownStdDeviation;\n\n        /**\n         * 本月下行标准差\n         */\n        private Float tmDownStdDeviation;\n\n        /**\n         * 本季度下行标准差\n         */\n        private Float tqDownStdDeviation;\n\n        /**\n         * 本年下行标准差\n         */\n        private Float tyDownStdDeviation;\n\n        /**\n         * 所有下行标准差\n         */\n        private Float allDownStdDeviation;\n\n        /**\n         * 近一个月胜率\n         */\n        private Float nomWinRatio;\n\n        /**\n         * 近半年胜率\n         */\n        private Float nhyWinRatio;\n\n        /**\n         * 近一年胜率\n         */\n        private Float noyWinRatio;\n\n        /**\n         * 本月胜率\n         */\n        private Float tmWinRatio;\n\n        /**\n         * 本季度胜率\n         */\n        private Float tqWinRatio;\n\n        /**\n         * 本年胜率\n         */\n        private Float tyWinRatio;\n\n        /**\n         * 所有胜率\n         */\n        private Float allWinRatio;\n\n        /**\n         * 近一个月贝塔系数\n         */\n        private Float nomBeta;\n\n        /**\n         * 近半年贝塔系数\n         */\n        private Float nhyBeta;\n\n        /**\n         * 近一年贝塔系数\n         */\n        private Float noyBeta;\n\n        /**\n         * 本月贝塔系数\n         */\n        private Float tmBeta;\n\n        /**\n         * 本季度贝塔系数\n         */\n        private Float tqBeta;\n\n        /**\n         * 本年贝塔系数\n         */\n        private Float tyBeta;\n\n        /**\n         * 所有贝塔系数\n         */\n        private Float allBeta;\n\n        /**\n         * 近一个月阿尔法系数\n         */\n        private Float nomAlpha;\n\n        /**\n         * 近半年阿尔法系数\n         */\n        private Float nhyAlpha;\n\n        /**\n         * 近一年阿尔法系数\n         */\n        private Float noyAlpha;\n\n        /**\n         * 本月阿尔法系数\n         */\n        private Float tmAlpha;\n\n        /**\n         * 本季度阿尔法系数\n         */\n        private Float tqAlpha;\n\n        /**\n         * 本年阿尔法系数\n         */\n        private Float tyAlpha;\n\n        /**\n         * 所有阿尔法系数\n         */\n        private Float allAlpha;\n\n        /**\n         * 近一个月詹森指数\n         */\n        private Float nomJansen;\n\n        /**\n         * 近半年詹森指数\n         */\n        private Float nhyJansen;\n\n        /**\n         * 近一年詹森指数\n         */\n        private Float noyJansen;\n\n        /**\n         * 本月詹森指数\n         */\n        private Float tmJansen;\n\n        /**\n         * 本季度詹森指数\n         */\n        private Float tqJansen;\n\n        /**\n         * 本年詹森指数\n         */\n        private Float tyJansen;\n\n        /**\n         * 所有詹森指数\n         */\n        private Float allJansen;\n\n        /**\n         * 近一个月卡玛比率\n         */\n        private Float nomKumarRatio;\n\n        /**\n         * 近半年卡玛比率\n         */\n        private Float nhyKumarRatio;\n\n        /**\n         * 近一年卡玛比率\n         */\n        private Float noyKumarRatio;\n\n        /**\n         * 本月卡玛比率\n         */\n        private Float tmKumarRatio;\n\n        /**\n         * 本季度卡玛比率\n         */\n        private Float tqKumarRatio;\n\n        /**\n         * 本年卡玛比率\n         */\n        private Float tyKumarRatio;\n\n        /**\n         * 所有卡玛比率\n         */\n        private Float allKumarRatio;\n\n        /**\n         * 近一个月夏普比率\n         */\n        private Float nomSharpeRatio;\n\n        /**\n         * 近半年夏普比率\n         */\n        private Float nhySharpeRatio;\n\n        /**\n         * 近一年夏普比率\n         */\n        private Float noySharpeRatio;\n\n        /**\n         * 本月夏普比率\n         */\n        private Float tmSharpeRatio;\n\n        /**\n         * 本季度夏普比率\n         */\n        private Float tqSharpeRatio;\n\n        /**\n         * 本年夏普比率\n         */\n        private Float tySharpeRatio;\n\n        /**\n         * 所有夏普比率\n         */\n        private Float allSharpeRatio;\n\n        /**\n         * 近一个月索提若比率\n         */\n        private Float nomSortinoRatio;\n\n        /**\n         * 近半年索提若比率\n         */\n        private Float nhySortinoRatio;\n\n        /**\n         * 近一年索提若比率\n         */\n        private Float noySortinoRatio;\n\n        /**\n         * 本月索提若比率\n         */\n        private Float tmSortinoRatio;\n\n        /**\n         * 本季度索提若比率\n         */\n        private Float tqSortinoRatio;\n\n        /**\n         * 本年索提若比率\n         */\n        private Float tySortinoRatio;\n\n        /**\n         * 所有索提若比率\n         */\n        private Float allSortinoRatio;\n\n        /**\n         * 近一个月赫斯特指数\n         */\n        private Float nomHurstIndex;\n\n        /**\n         * 近半年赫斯特指数\n         */\n        private Float nhyHurstIndex;\n\n        /**\n         * 近一年赫斯特指数\n         */\n        private Float noyHurstIndex;\n\n        /**\n         * 本月赫斯特指数\n         */\n        private Float tmHurstIndex;\n\n        /**\n         * 本季度赫斯特指数\n         */\n        private Float tqHurstIndex;\n\n        /**\n         * 本年赫斯特指数\n         */\n        private Float tyHurstIndex;\n\n        /**\n         * 所有赫斯特指数\n         */\n        private Float allHurstIndex;\n\n        /**\n         * 近一个月VaR指标(95%)\n         */\n        private Float nomVarIndex;\n\n        /**\n         * 近半年VaR指标(95%)\n         */\n        private Float nhyVarIndex;\n\n        /**\n         * 近一年VaR指标(95%)\n         */\n        private Float noyVarIndex;\n\n        /**\n         * 本月VaR指标(95%)\n         */\n        private Float tmVarIndex;\n\n        /**\n         * 本季度VaR指标(95%)\n         */\n        private Float tqVarIndex;\n\n        /**\n         * 本年VaR指标(95%)\n         */\n        private Float tyVarIndex;\n\n        /**\n         * 所有VaR指标(95%)\n         */\n        private Float allVarIndex;\n\n        /**\n         * 近一个月VaR指标(99%)\n         */\n        private Float nomVarIndex99;\n\n        /**\n         * 近半年VaR指标(99%)\n         */\n        private Float nhyVarIndex99;\n\n        /**\n         * 近一年VaR指标(99%)\n         */\n        private Float noyVarIndex99;\n\n        /**\n         * 本月VaR指标(99%)\n         */\n        private Float tmVarIndex99;\n\n        /**\n         * 本季度VaR指标(99%)\n         */\n        private Float tqVarIndex99;\n\n        /**\n         * 本年VaR指标(99%)\n         */\n        private Float tyVarIndex99;\n\n        /**\n         * 所有VaR指标(99%)\n         */\n        private Float allVarIndex99;\n\n        /**\n         * 近一个月上行捕获率\n         */\n        private Float nomUpCaptureRate;\n\n        /**\n         * 近半年上行捕获率\n         */\n        private Float nhyUpCaptureRate;\n\n        /**\n         * 近一年上行捕获率\n         */\n        private Float noyUpCaptureRate;\n\n        /**\n         * 本月上行捕获率\n         */\n        private Float tmUpCaptureRate;\n\n        /**\n         * 本季度上行捕获率\n         */\n        private Float tqUpCaptureRate;\n\n        /**\n         * 本年上行捕获率\n         */\n        private Float tyUpCaptureRate;\n\n        /**\n         * 所有上行捕获率\n         */\n        private Float allUpCaptureRate;\n\n        /**\n         * 近一个月下行捕获率\n         */\n        private Float nomDownCaptureRate;\n\n        /**\n         * 近半年下行捕获率\n         */\n        private Float nhyDownCaptureRate;\n\n        /**\n         * 近一年下行捕获率\n         */\n        private Float noyDownCaptureRate;\n\n        /**\n         * 本月下行捕获率\n         */\n        private Float tmDownCaptureRate;\n\n        /**\n         * 本季度下行捕获率\n         */\n        private Float tqDownCaptureRate;\n\n        /**\n         * 本年下行捕获率\n         */\n        private Float tyDownCaptureRate;\n\n        /**\n         * 所有下行捕获率\n         */\n        private Float allDownCaptureRate;\n\n        /**\n         * 近一个月信息比率\n         */\n        private Float nomInfoRatio;\n\n        /**\n         * 近半年信息比率\n         */\n        private Float nhyInfoRatio;\n\n        /**\n         * 近一年信息比率\n         */\n        private Float noyInfoRatio;\n\n        /**\n         * 本月信息比率\n         */\n        private Float tmInfoRatio;\n\n        /**\n         * 本季度信息比率\n         */\n        private Float tqInfoRatio;\n\n        /**\n         * 本年信息比率\n         */\n        private Float tyInfoRatio;\n\n        /**\n         * 所有信息比率\n         */\n        private Float allInfoRatio;\n\n        /**\n         * 近一个月策略波动率\n         */\n        private Float nomAlgorithmVolatility;\n\n        /**\n         * 近半年策略波动率\n         */\n        private Float nhyAlgorithmVolatility;\n\n        /**\n         * 近一年策略波动率\n         */\n        private Float noyAlgorithmVolatility;\n\n        /**\n         * 本月策略波动率\n         */\n        private Float tmAlgorithmVolatility;\n\n        /**\n         * 本季度策略波动率\n         */\n        private Float tqAlgorithmVolatility;\n\n        /**\n         * 本年策略波动率\n         */\n        private Float tyAlgorithmVolatility;\n\n        /**\n         * 所有策略波动率\n         */\n        private Float allAlgorithmVolatility;\n\n        /**\n         * 近一个月M平方\n         */\n        private Float nomMSquare;\n\n        /**\n         * 近半年M平方\n         */\n        private Float nhyMSquare;\n\n        /**\n         * 近一年M平方\n         */\n        private Float noyMSquare;\n\n        /**\n         * 本月M平方\n         */\n        private Float tmMSquare;\n\n        /**\n         * 本季度M平方\n         */\n        private Float tqMSquare;\n\n        /**\n         * 本年M平方\n         */\n        private Float tyMSquare;\n\n        /**\n         * 所有M平方\n         */\n        private Float allMSquare;\n\n        /**\n         * 近一个月特雷诺指数(TR)\n         */\n        private Float nomTreynorIndex;\n\n        /**\n         * 近半年特雷诺指数(TR)\n         */\n        private Float nhyTreynorIndex;\n\n        /**\n         * 近一年特雷诺指数(TR)\n         */\n        private Float noyTreynorIndex;\n\n        /**\n         * 本月特雷诺指数(TR)\n         */\n        private Float tmTreynorIndex;\n\n        /**\n         * 本季度特雷诺指数(TR)\n         */\n        private Float tqTreynorIndex;\n\n        /**\n         * 本年特雷诺指数(TR)\n         */\n        private Float tyTreynorIndex;\n\n        /**\n         * 所有特雷诺指数(TR)\n         */\n        private Float allTreynorIndex;\n\n        /**\n         * 基金产品ID(片键值)\n         */\n        private String id;\n\n        /**\n         * 基金产品名称\n         */\n        private String name;\n\n        /**\n         * 基金产品短名称\n         */\n        private String shortName;\n\n        /**\n         * 基金代码\n         */\n        private String code;\n\n        /**\n         * 备案号\n         */\n        private String recordNumber;\n\n        /**\n         * 基金类型 0:私募基金 1:公募基金 2:私有基金\n         */\n        private Byte fundType;\n\n        /**\n         * 基金品种 0:开放式基金 1:货币型基金 2:理财型基金 3:分级型基金 4:场内交易型基金\n         */\n        private Byte fundBreed;\n\n        /**\n         * 基金状态 0:存续中 1:已清盘\n         */\n        private Byte fundStatus;\n\n        /**\n         * 申购状态，当基金类型=1:公募基金时该字段才存在\n         */\n        private String buyStatus;\n\n        /**\n         * 赎回状态，当基金类型=1:公募基金时该字段才存在\n         */\n        private String redeemStatus;\n\n        /**\n         * 备案日期，格式：yyyy-MM-dd\n         */\n        private String recordDate;\n\n        /**\n         * 成立日期，格式：yyyy-MM-dd\n         */\n        private String createDate;\n\n        /**\n         * 终止日期，格式：yyyy-MM-dd\n         */\n        private String stopDate;\n\n        /**\n         * 基金备案阶段\n         */\n        private String fundFilingStage;\n\n        /**\n         * 基金投资类型\n         */\n        private String fundInvestmentType;\n\n        /**\n         * 币种\n         */\n        private String currency;\n\n        /**\n         * 管理类型\n         */\n        private String managerType;\n\n        /**\n         * 托管人名称\n         */\n        private String managerName;\n\n        /**\n         * 投资目标\n         */\n        private String investmentTarget;\n\n        /**\n         * 主要投资领域，即投资范围\n         */\n        private String majorInvestAreas;\n\n        /**\n         * 基金信息最后修改日期\n         */\n        private String fundLastModifyDate;\n\n        /**\n         * 基金协会特别提示（针对基金）\n         */\n        private String specialNote;\n\n        /**\n         * 注册地址\n         */\n        private String registeredAddress;\n\n        /**\n         * 投资策略\n         */\n        private String investmentStrategy;\n\n        /**\n         * 投资子策略\n         */\n        private String investmentSubStrategy;\n\n        /**\n         * 基金经理ID数组\n         */\n        private List<String> fundManagerIds;\n\n        /**\n         * 投顾公司ID\n         */\n        private String companyId;\n\n        /**\n         * 序号\n         */\n        private Long orderNum;\n\n        /**\n         * 成立规模\n         */\n        private String createScale;\n\n        /**\n         * 最新规模\n         */\n        private String latestScale;\n\n        /**\n         * 产品基准代码\n         */\n        private String benchmark;\n\n        /**\n         * 净值更新频率\n         */\n        private Byte netValueUpdateRate;\n\n        /**\n         * 基金产品外部ID\n         */\n        private String fundOuterId;\n\n        /**\n         * 标签\n         */\n        private String tags;\n\n        /**\n         * 备注\n         */\n        private String remark;\n\n        /**\n         * 策略容量\n         */\n        private String strategyCapacity;\n\n        /**\n         * 创建时间\n         */\n        private Long createTime;\n\n        /**\n         * 创建者ID\n         */\n        private String creatorId;\n\n        /**\n         * 最后修改时间\n         */\n        private Long lastModifyTime;\n\n        /**\n         * 最后修改者ID\n         */\n        private String lastModifierId;\n\n        /**\n         * 基金公司外部ID\n         */\n        private String companyOuterId;\n\n        /**\n         * 基金公司名称\n         */\n        private String companyName;\n\n        /**\n         * 基金经理外部ID数组\n         */\n        private List<String> managerOuterIds;\n\n        /**\n         * 基金产品ID列表\n         */\n        private List<String> fundIds;\n\n        /**\n         * 投顾公司ID列表\n         */\n        private List<String> companyIds;\n\n        /**\n         * 开始年化收益率\n         */\n        private Float startAnnualizedReturn;\n\n        /**\n         * 结束年化收益率\n         */\n        private Float endAnnualizedReturn;\n\n        /**\n         * 时间区间\n         */\n        private String timeInterval;\n\n        /**\n         * 基金经理姓名数组\n         */\n        private List<String> fundManagerNames;\n\n        /**\n         * 基金状态名称 0:存续中 1:已清盘\n         */\n        private String fundStatusName;\n\n        /**\n         * 基金类型名称  0:私募基金 1:公募基金 2:私有基金'\n         */\n        private String fundTypeName;\n\n        /**\n         * 是否关注基金 0:否 1:是\n         */\n        private Byte isConcern;\n\n        /**\n         * 配置权重(%)\n         */\n        private Float configWeight;\n\n        /**\n         * 净值日期字符串 yyyy-MM-dd格式\n         */\n        private String netValueDateString;\n\n        /**\n         * 基金经理ID\n         */\n        private String managerId;\n\n        /**\n         * 用户标签ID\n         */\n        private String tagId;\n\n        public Integer getPageSize() {\n            return pageSize;\n        }\n\n        public void setPageSize(Integer pageSize) {\n            this.pageSize = pageSize;\n        }\n\n        public Integer getFirstResult() {\n            return firstResult;\n        }\n\n        public void setFirstResult(Integer firstResult) {\n            this.firstResult = firstResult;\n        }\n\n        public Integer getFetchSize() {\n            return fetchSize;\n        }\n\n        public void setFetchSize(Integer fetchSize) {\n            this.fetchSize = fetchSize;\n        }\n\n        public String getStartTime() {\n            return startTime;\n        }\n\n        public void setStartTime(String startTime) {\n            this.startTime = startTime;\n        }\n\n        public String getEndTime() {\n            return endTime;\n        }\n\n        public void setEndTime(String endTime) {\n            this.endTime = endTime;\n        }\n\n        public Boolean getAdministrator() {\n            return isAdministrator;\n        }\n\n        public void setAdministrator(Boolean administrator) {\n            isAdministrator = administrator;\n        }\n\n        public Byte getSortMode() {\n            return sortMode;\n        }\n\n        public void setSortMode(Byte sortMode) {\n            this.sortMode = sortMode;\n        }\n\n        public String getSortFieldName() {\n            return sortFieldName;\n        }\n\n        public void setSortFieldName(String sortFieldName) {\n            this.sortFieldName = sortFieldName;\n        }\n\n        public String getSortFieldValue() {\n            return sortFieldValue;\n        }\n\n        public void setSortFieldValue(String sortFieldValue) {\n            this.sortFieldValue = sortFieldValue;\n        }\n\n        public Long getCreateTimestamp() {\n            return createTimestamp;\n        }\n\n        public void setCreateTimestamp(Long createTimestamp) {\n            this.createTimestamp = createTimestamp;\n        }\n\n        public Integer getLastPage() {\n            return lastPage;\n        }\n\n        public void setLastPage(Integer lastPage) {\n            this.lastPage = lastPage;\n        }\n\n        public Byte getQueryType() {\n            return queryType;\n        }\n\n        public void setQueryType(Byte queryType) {\n            this.queryType = queryType;\n        }\n\n        public String getShard() {\n            return shard;\n        }\n\n        public void setShard(String shard) {\n            this.shard = shard;\n        }\n\n        public Integer getNetValueDate() {\n            return netValueDate;\n        }\n\n        public void setNetValueDate(Integer netValueDate) {\n            this.netValueDate = netValueDate;\n        }\n\n        public Float getUnitNetValue() {\n            return unitNetValue;\n        }\n\n        public void setUnitNetValue(Float unitNetValue) {\n            this.unitNetValue = unitNetValue;\n        }\n\n        public Float getTotalNetValue() {\n            return totalNetValue;\n        }\n\n        public void setTotalNetValue(Float totalNetValue) {\n            this.totalNetValue = totalNetValue;\n        }\n\n        public Float getNomTotalYield() {\n            return nomTotalYield;\n        }\n\n        public void setNomTotalYield(Float nomTotalYield) {\n            this.nomTotalYield = nomTotalYield;\n        }\n\n        public Float getNhyTotalYield() {\n            return nhyTotalYield;\n        }\n\n        public void setNhyTotalYield(Float nhyTotalYield) {\n            this.nhyTotalYield = nhyTotalYield;\n        }\n\n        public Float getNoyTotalYield() {\n            return noyTotalYield;\n        }\n\n        public void setNoyTotalYield(Float noyTotalYield) {\n            this.noyTotalYield = noyTotalYield;\n        }\n\n        public Float getTmTotalYield() {\n            return tmTotalYield;\n        }\n\n        public void setTmTotalYield(Float tmTotalYield) {\n            this.tmTotalYield = tmTotalYield;\n        }\n\n        public Float getTqTotalYield() {\n            return tqTotalYield;\n        }\n\n        public void setTqTotalYield(Float tqTotalYield) {\n            this.tqTotalYield = tqTotalYield;\n        }\n\n        public Float getTyTotalYield() {\n            return tyTotalYield;\n        }\n\n        public void setTyTotalYield(Float tyTotalYield) {\n            this.tyTotalYield = tyTotalYield;\n        }\n\n        public Float getAllTotalYield() {\n            return allTotalYield;\n        }\n\n        public void setAllTotalYield(Float allTotalYield) {\n            this.allTotalYield = allTotalYield;\n        }\n\n        public Float getNomAnnualizedReturn() {\n            return nomAnnualizedReturn;\n        }\n\n        public void setNomAnnualizedReturn(Float nomAnnualizedReturn) {\n            this.nomAnnualizedReturn = nomAnnualizedReturn;\n        }\n\n        public Float getNhyAnnualizedReturn() {\n            return nhyAnnualizedReturn;\n        }\n\n        public void setNhyAnnualizedReturn(Float nhyAnnualizedReturn) {\n            this.nhyAnnualizedReturn = nhyAnnualizedReturn;\n        }\n\n        public Float getNoyAnnualizedReturn() {\n            return noyAnnualizedReturn;\n        }\n\n        public void setNoyAnnualizedReturn(Float noyAnnualizedReturn) {\n            this.noyAnnualizedReturn = noyAnnualizedReturn;\n        }\n\n        public Float getTmAnnualizedReturn() {\n            return tmAnnualizedReturn;\n        }\n\n        public void setTmAnnualizedReturn(Float tmAnnualizedReturn) {\n            this.tmAnnualizedReturn = tmAnnualizedReturn;\n        }\n\n        public Float getTqAnnualizedReturn() {\n            return tqAnnualizedReturn;\n        }\n\n        public void setTqAnnualizedReturn(Float tqAnnualizedReturn) {\n            this.tqAnnualizedReturn = tqAnnualizedReturn;\n        }\n\n        public Float getTyAnnualizedReturn() {\n            return tyAnnualizedReturn;\n        }\n\n        public void setTyAnnualizedReturn(Float tyAnnualizedReturn) {\n            this.tyAnnualizedReturn = tyAnnualizedReturn;\n        }\n\n        public Float getAllAnnualizedReturn() {\n            return allAnnualizedReturn;\n        }\n\n        public void setAllAnnualizedReturn(Float allAnnualizedReturn) {\n            this.allAnnualizedReturn = allAnnualizedReturn;\n        }\n\n        public Float getNomMaxProfitMargin() {\n            return nomMaxProfitMargin;\n        }\n\n        public void setNomMaxProfitMargin(Float nomMaxProfitMargin) {\n            this.nomMaxProfitMargin = nomMaxProfitMargin;\n        }\n\n        public Float getNhyMaxProfitMargin() {\n            return nhyMaxProfitMargin;\n        }\n\n        public void setNhyMaxProfitMargin(Float nhyMaxProfitMargin) {\n            this.nhyMaxProfitMargin = nhyMaxProfitMargin;\n        }\n\n        public Float getNoyMaxProfitMargin() {\n            return noyMaxProfitMargin;\n        }\n\n        public void setNoyMaxProfitMargin(Float noyMaxProfitMargin) {\n            this.noyMaxProfitMargin = noyMaxProfitMargin;\n        }\n\n        public Float getTmMaxProfitMargin() {\n            return tmMaxProfitMargin;\n        }\n\n        public void setTmMaxProfitMargin(Float tmMaxProfitMargin) {\n            this.tmMaxProfitMargin = tmMaxProfitMargin;\n        }\n\n        public Float getTqMaxProfitMargin() {\n            return tqMaxProfitMargin;\n        }\n\n        public void setTqMaxProfitMargin(Float tqMaxProfitMargin) {\n            this.tqMaxProfitMargin = tqMaxProfitMargin;\n        }\n\n        public Float getTyMaxProfitMargin() {\n            return tyMaxProfitMargin;\n        }\n\n        public void setTyMaxProfitMargin(Float tyMaxProfitMargin) {\n            this.tyMaxProfitMargin = tyMaxProfitMargin;\n        }\n\n        public Float getAllMaxProfitMargin() {\n            return allMaxProfitMargin;\n        }\n\n        public void setAllMaxProfitMargin(Float allMaxProfitMargin) {\n            this.allMaxProfitMargin = allMaxProfitMargin;\n        }\n\n        public Float getNomMaxSingleProfit() {\n            return nomMaxSingleProfit;\n        }\n\n        public void setNomMaxSingleProfit(Float nomMaxSingleProfit) {\n            this.nomMaxSingleProfit = nomMaxSingleProfit;\n        }\n\n        public Float getNhyMaxSingleProfit() {\n            return nhyMaxSingleProfit;\n        }\n\n        public void setNhyMaxSingleProfit(Float nhyMaxSingleProfit) {\n            this.nhyMaxSingleProfit = nhyMaxSingleProfit;\n        }\n\n        public Float getNoyMaxSingleProfit() {\n            return noyMaxSingleProfit;\n        }\n\n        public void setNoyMaxSingleProfit(Float noyMaxSingleProfit) {\n            this.noyMaxSingleProfit = noyMaxSingleProfit;\n        }\n\n        public Float getTmMaxSingleProfit() {\n            return tmMaxSingleProfit;\n        }\n\n        public void setTmMaxSingleProfit(Float tmMaxSingleProfit) {\n            this.tmMaxSingleProfit = tmMaxSingleProfit;\n        }\n\n        public Float getTqMaxSingleProfit() {\n            return tqMaxSingleProfit;\n        }\n\n        public void setTqMaxSingleProfit(Float tqMaxSingleProfit) {\n            this.tqMaxSingleProfit = tqMaxSingleProfit;\n        }\n\n        public Float getTyMaxSingleProfit() {\n            return tyMaxSingleProfit;\n        }\n\n        public void setTyMaxSingleProfit(Float tyMaxSingleProfit) {\n            this.tyMaxSingleProfit = tyMaxSingleProfit;\n        }\n\n        public Float getAllMaxSingleProfit() {\n            return allMaxSingleProfit;\n        }\n\n        public void setAllMaxSingleProfit(Float allMaxSingleProfit) {\n            this.allMaxSingleProfit = allMaxSingleProfit;\n        }\n\n        public Integer getNomMaxConProfitTime() {\n            return nomMaxConProfitTime;\n        }\n\n        public void setNomMaxConProfitTime(Integer nomMaxConProfitTime) {\n            this.nomMaxConProfitTime = nomMaxConProfitTime;\n        }\n\n        public Integer getNhyMaxConProfitTime() {\n            return nhyMaxConProfitTime;\n        }\n\n        public void setNhyMaxConProfitTime(Integer nhyMaxConProfitTime) {\n            this.nhyMaxConProfitTime = nhyMaxConProfitTime;\n        }\n\n        public Integer getNoyMaxConProfitTime() {\n            return noyMaxConProfitTime;\n        }\n\n        public void setNoyMaxConProfitTime(Integer noyMaxConProfitTime) {\n            this.noyMaxConProfitTime = noyMaxConProfitTime;\n        }\n\n        public Integer getTmMaxConProfitTime() {\n            return tmMaxConProfitTime;\n        }\n\n        public void setTmMaxConProfitTime(Integer tmMaxConProfitTime) {\n            this.tmMaxConProfitTime = tmMaxConProfitTime;\n        }\n\n        public Integer getTqMaxConProfitTime() {\n            return tqMaxConProfitTime;\n        }\n\n        public void setTqMaxConProfitTime(Integer tqMaxConProfitTime) {\n            this.tqMaxConProfitTime = tqMaxConProfitTime;\n        }\n\n        public Integer getTyMaxConProfitTime() {\n            return tyMaxConProfitTime;\n        }\n\n        public void setTyMaxConProfitTime(Integer tyMaxConProfitTime) {\n            this.tyMaxConProfitTime = tyMaxConProfitTime;\n        }\n\n        public Integer getAllMaxConProfitTime() {\n            return allMaxConProfitTime;\n        }\n\n        public void setAllMaxConProfitTime(Integer allMaxConProfitTime) {\n            this.allMaxConProfitTime = allMaxConProfitTime;\n        }\n\n        public Integer getAllMaxConProfitTimeDate() {\n            return allMaxConProfitTimeDate;\n        }\n\n        public void setAllMaxConProfitTimeDate(Integer allMaxConProfitTimeDate) {\n            this.allMaxConProfitTimeDate = allMaxConProfitTimeDate;\n        }\n\n        public Float getNomMaxDrawdown() {\n            return nomMaxDrawdown;\n        }\n\n        public void setNomMaxDrawdown(Float nomMaxDrawdown) {\n            this.nomMaxDrawdown = nomMaxDrawdown;\n        }\n\n        public Float getNhyMaxDrawdown() {\n            return nhyMaxDrawdown;\n        }\n\n        public void setNhyMaxDrawdown(Float nhyMaxDrawdown) {\n            this.nhyMaxDrawdown = nhyMaxDrawdown;\n        }\n\n        public Float getNoyMaxDrawdown() {\n            return noyMaxDrawdown;\n        }\n\n        public void setNoyMaxDrawdown(Float noyMaxDrawdown) {\n            this.noyMaxDrawdown = noyMaxDrawdown;\n        }\n\n        public Float getTmMaxDrawdown() {\n            return tmMaxDrawdown;\n        }\n\n        public void setTmMaxDrawdown(Float tmMaxDrawdown) {\n            this.tmMaxDrawdown = tmMaxDrawdown;\n        }\n\n        public Float getTqMaxDrawdown() {\n            return tqMaxDrawdown;\n        }\n\n        public void setTqMaxDrawdown(Float tqMaxDrawdown) {\n            this.tqMaxDrawdown = tqMaxDrawdown;\n        }\n\n        public Float getTyMaxDrawdown() {\n            return tyMaxDrawdown;\n        }\n\n        public void setTyMaxDrawdown(Float tyMaxDrawdown) {\n            this.tyMaxDrawdown = tyMaxDrawdown;\n        }\n\n        public Float getAllMaxDrawdown() {\n            return allMaxDrawdown;\n        }\n\n        public void setAllMaxDrawdown(Float allMaxDrawdown) {\n            this.allMaxDrawdown = allMaxDrawdown;\n        }\n\n        public Integer getAllMaxDrawdownDate() {\n            return allMaxDrawdownDate;\n        }\n\n        public void setAllMaxDrawdownDate(Integer allMaxDrawdownDate) {\n            this.allMaxDrawdownDate = allMaxDrawdownDate;\n        }\n\n        public Float getNomMaxSingleDrawdown() {\n            return nomMaxSingleDrawdown;\n        }\n\n        public void setNomMaxSingleDrawdown(Float nomMaxSingleDrawdown) {\n            this.nomMaxSingleDrawdown = nomMaxSingleDrawdown;\n        }\n\n        public Float getNhyMaxSingleDrawdown() {\n            return nhyMaxSingleDrawdown;\n        }\n\n        public void setNhyMaxSingleDrawdown(Float nhyMaxSingleDrawdown) {\n            this.nhyMaxSingleDrawdown = nhyMaxSingleDrawdown;\n        }\n\n        public Float getNoyMaxSingleDrawdown() {\n            return noyMaxSingleDrawdown;\n        }\n\n        public void setNoyMaxSingleDrawdown(Float noyMaxSingleDrawdown) {\n            this.noyMaxSingleDrawdown = noyMaxSingleDrawdown;\n        }\n\n        public Float getTmMaxSingleDrawdown() {\n            return tmMaxSingleDrawdown;\n        }\n\n        public void setTmMaxSingleDrawdown(Float tmMaxSingleDrawdown) {\n            this.tmMaxSingleDrawdown = tmMaxSingleDrawdown;\n        }\n\n        public Float getTqMaxSingleDrawdown() {\n            return tqMaxSingleDrawdown;\n        }\n\n        public void setTqMaxSingleDrawdown(Float tqMaxSingleDrawdown) {\n            this.tqMaxSingleDrawdown = tqMaxSingleDrawdown;\n        }\n\n        public Float getTyMaxSingleDrawdown() {\n            return tyMaxSingleDrawdown;\n        }\n\n        public void setTyMaxSingleDrawdown(Float tyMaxSingleDrawdown) {\n            this.tyMaxSingleDrawdown = tyMaxSingleDrawdown;\n        }\n\n        public Float getAllMaxSingleDrawdown() {\n            return allMaxSingleDrawdown;\n        }\n\n        public void setAllMaxSingleDrawdown(Float allMaxSingleDrawdown) {\n            this.allMaxSingleDrawdown = allMaxSingleDrawdown;\n        }\n\n        public Integer getAllMaxSingleDrawdownDate() {\n            return allMaxSingleDrawdownDate;\n        }\n\n        public void setAllMaxSingleDrawdownDate(Integer allMaxSingleDrawdownDate) {\n            this.allMaxSingleDrawdownDate = allMaxSingleDrawdownDate;\n        }\n\n        public Integer getNomMaxConDrawdownTime() {\n            return nomMaxConDrawdownTime;\n        }\n\n        public void setNomMaxConDrawdownTime(Integer nomMaxConDrawdownTime) {\n            this.nomMaxConDrawdownTime = nomMaxConDrawdownTime;\n        }\n\n        public Integer getNhyMaxConDrawdownTime() {\n            return nhyMaxConDrawdownTime;\n        }\n\n        public void setNhyMaxConDrawdownTime(Integer nhyMaxConDrawdownTime) {\n            this.nhyMaxConDrawdownTime = nhyMaxConDrawdownTime;\n        }\n\n        public Integer getNoyMaxConDrawdownTime() {\n            return noyMaxConDrawdownTime;\n        }\n\n        public void setNoyMaxConDrawdownTime(Integer noyMaxConDrawdownTime) {\n            this.noyMaxConDrawdownTime = noyMaxConDrawdownTime;\n        }\n\n        public Integer getTmMaxConDrawdownTime() {\n            return tmMaxConDrawdownTime;\n        }\n\n        public void setTmMaxConDrawdownTime(Integer tmMaxConDrawdownTime) {\n            this.tmMaxConDrawdownTime = tmMaxConDrawdownTime;\n        }\n\n        public Integer getTqMaxConDrawdownTime() {\n            return tqMaxConDrawdownTime;\n        }\n\n        public void setTqMaxConDrawdownTime(Integer tqMaxConDrawdownTime) {\n            this.tqMaxConDrawdownTime = tqMaxConDrawdownTime;\n        }\n\n        public Integer getTyMaxConDrawdownTime() {\n            return tyMaxConDrawdownTime;\n        }\n\n        public void setTyMaxConDrawdownTime(Integer tyMaxConDrawdownTime) {\n            this.tyMaxConDrawdownTime = tyMaxConDrawdownTime;\n        }\n\n        public Integer getAllMaxConDrawdownTime() {\n            return allMaxConDrawdownTime;\n        }\n\n        public void setAllMaxConDrawdownTime(Integer allMaxConDrawdownTime) {\n            this.allMaxConDrawdownTime = allMaxConDrawdownTime;\n        }\n\n        public Float getNomYieldStdDeviation() {\n            return nomYieldStdDeviation;\n        }\n\n        public void setNomYieldStdDeviation(Float nomYieldStdDeviation) {\n            this.nomYieldStdDeviation = nomYieldStdDeviation;\n        }\n\n        public Float getNhyYieldStdDeviation() {\n            return nhyYieldStdDeviation;\n        }\n\n        public void setNhyYieldStdDeviation(Float nhyYieldStdDeviation) {\n            this.nhyYieldStdDeviation = nhyYieldStdDeviation;\n        }\n\n        public Float getNoyYieldStdDeviation() {\n            return noyYieldStdDeviation;\n        }\n\n        public void setNoyYieldStdDeviation(Float noyYieldStdDeviation) {\n            this.noyYieldStdDeviation = noyYieldStdDeviation;\n        }\n\n        public Float getTmYieldStdDeviation() {\n            return tmYieldStdDeviation;\n        }\n\n        public void setTmYieldStdDeviation(Float tmYieldStdDeviation) {\n            this.tmYieldStdDeviation = tmYieldStdDeviation;\n        }\n\n        public Float getTqYieldStdDeviation() {\n            return tqYieldStdDeviation;\n        }\n\n        public void setTqYieldStdDeviation(Float tqYieldStdDeviation) {\n            this.tqYieldStdDeviation = tqYieldStdDeviation;\n        }\n\n        public Float getTyYieldStdDeviation() {\n            return tyYieldStdDeviation;\n        }\n\n        public void setTyYieldStdDeviation(Float tyYieldStdDeviation) {\n            this.tyYieldStdDeviation = tyYieldStdDeviation;\n        }\n\n        public Float getAllYieldStdDeviation() {\n            return allYieldStdDeviation;\n        }\n\n        public void setAllYieldStdDeviation(Float allYieldStdDeviation) {\n            this.allYieldStdDeviation = allYieldStdDeviation;\n        }\n\n        public Float getNomDownStdDeviation() {\n            return nomDownStdDeviation;\n        }\n\n        public void setNomDownStdDeviation(Float nomDownStdDeviation) {\n            this.nomDownStdDeviation = nomDownStdDeviation;\n        }\n\n        public Float getNhyDownStdDeviation() {\n            return nhyDownStdDeviation;\n        }\n\n        public void setNhyDownStdDeviation(Float nhyDownStdDeviation) {\n            this.nhyDownStdDeviation = nhyDownStdDeviation;\n        }\n\n        public Float getNoyDownStdDeviation() {\n            return noyDownStdDeviation;\n        }\n\n        public void setNoyDownStdDeviation(Float noyDownStdDeviation) {\n            this.noyDownStdDeviation = noyDownStdDeviation;\n        }\n\n        public Float getTmDownStdDeviation() {\n            return tmDownStdDeviation;\n        }\n\n        public void setTmDownStdDeviation(Float tmDownStdDeviation) {\n            this.tmDownStdDeviation = tmDownStdDeviation;\n        }\n\n        public Float getTqDownStdDeviation() {\n            return tqDownStdDeviation;\n        }\n\n        public void setTqDownStdDeviation(Float tqDownStdDeviation) {\n            this.tqDownStdDeviation = tqDownStdDeviation;\n        }\n\n        public Float getTyDownStdDeviation() {\n            return tyDownStdDeviation;\n        }\n\n        public void setTyDownStdDeviation(Float tyDownStdDeviation) {\n            this.tyDownStdDeviation = tyDownStdDeviation;\n        }\n\n        public Float getAllDownStdDeviation() {\n            return allDownStdDeviation;\n        }\n\n        public void setAllDownStdDeviation(Float allDownStdDeviation) {\n            this.allDownStdDeviation = allDownStdDeviation;\n        }\n\n        public Float getNomWinRatio() {\n            return nomWinRatio;\n        }\n\n        public void setNomWinRatio(Float nomWinRatio) {\n            this.nomWinRatio = nomWinRatio;\n        }\n\n        public Float getNhyWinRatio() {\n            return nhyWinRatio;\n        }\n\n        public void setNhyWinRatio(Float nhyWinRatio) {\n            this.nhyWinRatio = nhyWinRatio;\n        }\n\n        public Float getNoyWinRatio() {\n            return noyWinRatio;\n        }\n\n        public void setNoyWinRatio(Float noyWinRatio) {\n            this.noyWinRatio = noyWinRatio;\n        }\n\n        public Float getTmWinRatio() {\n            return tmWinRatio;\n        }\n\n        public void setTmWinRatio(Float tmWinRatio) {\n            this.tmWinRatio = tmWinRatio;\n        }\n\n        public Float getTqWinRatio() {\n            return tqWinRatio;\n        }\n\n        public void setTqWinRatio(Float tqWinRatio) {\n            this.tqWinRatio = tqWinRatio;\n        }\n\n        public Float getTyWinRatio() {\n            return tyWinRatio;\n        }\n\n        public void setTyWinRatio(Float tyWinRatio) {\n            this.tyWinRatio = tyWinRatio;\n        }\n\n        public Float getAllWinRatio() {\n            return allWinRatio;\n        }\n\n        public void setAllWinRatio(Float allWinRatio) {\n            this.allWinRatio = allWinRatio;\n        }\n\n        public Float getNomBeta() {\n            return nomBeta;\n        }\n\n        public void setNomBeta(Float nomBeta) {\n            this.nomBeta = nomBeta;\n        }\n\n        public Float getNhyBeta() {\n            return nhyBeta;\n        }\n\n        public void setNhyBeta(Float nhyBeta) {\n            this.nhyBeta = nhyBeta;\n        }\n\n        public Float getNoyBeta() {\n            return noyBeta;\n        }\n\n        public void setNoyBeta(Float noyBeta) {\n            this.noyBeta = noyBeta;\n        }\n\n        public Float getTmBeta() {\n            return tmBeta;\n        }\n\n        public void setTmBeta(Float tmBeta) {\n            this.tmBeta = tmBeta;\n        }\n\n        public Float getTqBeta() {\n            return tqBeta;\n        }\n\n        public void setTqBeta(Float tqBeta) {\n            this.tqBeta = tqBeta;\n        }\n\n        public Float getTyBeta() {\n            return tyBeta;\n        }\n\n        public void setTyBeta(Float tyBeta) {\n            this.tyBeta = tyBeta;\n        }\n\n        public Float getAllBeta() {\n            return allBeta;\n        }\n\n        public void setAllBeta(Float allBeta) {\n            this.allBeta = allBeta;\n        }\n\n        public Float getNomAlpha() {\n            return nomAlpha;\n        }\n\n        public void setNomAlpha(Float nomAlpha) {\n            this.nomAlpha = nomAlpha;\n        }\n\n        public Float getNhyAlpha() {\n            return nhyAlpha;\n        }\n\n        public void setNhyAlpha(Float nhyAlpha) {\n            this.nhyAlpha = nhyAlpha;\n        }\n\n        public Float getNoyAlpha() {\n            return noyAlpha;\n        }\n\n        public void setNoyAlpha(Float noyAlpha) {\n            this.noyAlpha = noyAlpha;\n        }\n\n        public Float getTmAlpha() {\n            return tmAlpha;\n        }\n\n        public void setTmAlpha(Float tmAlpha) {\n            this.tmAlpha = tmAlpha;\n        }\n\n        public Float getTqAlpha() {\n            return tqAlpha;\n        }\n\n        public void setTqAlpha(Float tqAlpha) {\n            this.tqAlpha = tqAlpha;\n        }\n\n        public Float getTyAlpha() {\n            return tyAlpha;\n        }\n\n        public void setTyAlpha(Float tyAlpha) {\n            this.tyAlpha = tyAlpha;\n        }\n\n        public Float getAllAlpha() {\n            return allAlpha;\n        }\n\n        public void setAllAlpha(Float allAlpha) {\n            this.allAlpha = allAlpha;\n        }\n\n        public Float getNomJansen() {\n            return nomJansen;\n        }\n\n        public void setNomJansen(Float nomJansen) {\n            this.nomJansen = nomJansen;\n        }\n\n        public Float getNhyJansen() {\n            return nhyJansen;\n        }\n\n        public void setNhyJansen(Float nhyJansen) {\n            this.nhyJansen = nhyJansen;\n        }\n\n        public Float getNoyJansen() {\n            return noyJansen;\n        }\n\n        public void setNoyJansen(Float noyJansen) {\n            this.noyJansen = noyJansen;\n        }\n\n        public Float getTmJansen() {\n            return tmJansen;\n        }\n\n        public void setTmJansen(Float tmJansen) {\n            this.tmJansen = tmJansen;\n        }\n\n        public Float getTqJansen() {\n            return tqJansen;\n        }\n\n        public void setTqJansen(Float tqJansen) {\n            this.tqJansen = tqJansen;\n        }\n\n        public Float getTyJansen() {\n            return tyJansen;\n        }\n\n        public void setTyJansen(Float tyJansen) {\n            this.tyJansen = tyJansen;\n        }\n\n        public Float getAllJansen() {\n            return allJansen;\n        }\n\n        public void setAllJansen(Float allJansen) {\n            this.allJansen = allJansen;\n        }\n\n        public Float getNomKumarRatio() {\n            return nomKumarRatio;\n        }\n\n        public void setNomKumarRatio(Float nomKumarRatio) {\n            this.nomKumarRatio = nomKumarRatio;\n        }\n\n        public Float getNhyKumarRatio() {\n            return nhyKumarRatio;\n        }\n\n        public void setNhyKumarRatio(Float nhyKumarRatio) {\n            this.nhyKumarRatio = nhyKumarRatio;\n        }\n\n        public Float getNoyKumarRatio() {\n            return noyKumarRatio;\n        }\n\n        public void setNoyKumarRatio(Float noyKumarRatio) {\n            this.noyKumarRatio = noyKumarRatio;\n        }\n\n        public Float getTmKumarRatio() {\n            return tmKumarRatio;\n        }\n\n        public void setTmKumarRatio(Float tmKumarRatio) {\n            this.tmKumarRatio = tmKumarRatio;\n        }\n\n        public Float getTqKumarRatio() {\n            return tqKumarRatio;\n        }\n\n        public void setTqKumarRatio(Float tqKumarRatio) {\n            this.tqKumarRatio = tqKumarRatio;\n        }\n\n        public Float getTyKumarRatio() {\n            return tyKumarRatio;\n        }\n\n        public void setTyKumarRatio(Float tyKumarRatio) {\n            this.tyKumarRatio = tyKumarRatio;\n        }\n\n        public Float getAllKumarRatio() {\n            return allKumarRatio;\n        }\n\n        public void setAllKumarRatio(Float allKumarRatio) {\n            this.allKumarRatio = allKumarRatio;\n        }\n\n        public Float getNomSharpeRatio() {\n            return nomSharpeRatio;\n        }\n\n        public void setNomSharpeRatio(Float nomSharpeRatio) {\n            this.nomSharpeRatio = nomSharpeRatio;\n        }\n\n        public Float getNhySharpeRatio() {\n            return nhySharpeRatio;\n        }\n\n        public void setNhySharpeRatio(Float nhySharpeRatio) {\n            this.nhySharpeRatio = nhySharpeRatio;\n        }\n\n        public Float getNoySharpeRatio() {\n            return noySharpeRatio;\n        }\n\n        public void setNoySharpeRatio(Float noySharpeRatio) {\n            this.noySharpeRatio = noySharpeRatio;\n        }\n\n        public Float getTmSharpeRatio() {\n            return tmSharpeRatio;\n        }\n\n        public void setTmSharpeRatio(Float tmSharpeRatio) {\n            this.tmSharpeRatio = tmSharpeRatio;\n        }\n\n        public Float getTqSharpeRatio() {\n            return tqSharpeRatio;\n        }\n\n        public void setTqSharpeRatio(Float tqSharpeRatio) {\n            this.tqSharpeRatio = tqSharpeRatio;\n        }\n\n        public Float getTySharpeRatio() {\n            return tySharpeRatio;\n        }\n\n        public void setTySharpeRatio(Float tySharpeRatio) {\n            this.tySharpeRatio = tySharpeRatio;\n        }\n\n        public Float getAllSharpeRatio() {\n            return allSharpeRatio;\n        }\n\n        public void setAllSharpeRatio(Float allSharpeRatio) {\n            this.allSharpeRatio = allSharpeRatio;\n        }\n\n        public Float getNomSortinoRatio() {\n            return nomSortinoRatio;\n        }\n\n        public void setNomSortinoRatio(Float nomSortinoRatio) {\n            this.nomSortinoRatio = nomSortinoRatio;\n        }\n\n        public Float getNhySortinoRatio() {\n            return nhySortinoRatio;\n        }\n\n        public void setNhySortinoRatio(Float nhySortinoRatio) {\n            this.nhySortinoRatio = nhySortinoRatio;\n        }\n\n        public Float getNoySortinoRatio() {\n            return noySortinoRatio;\n        }\n\n        public void setNoySortinoRatio(Float noySortinoRatio) {\n            this.noySortinoRatio = noySortinoRatio;\n        }\n\n        public Float getTmSortinoRatio() {\n            return tmSortinoRatio;\n        }\n\n        public void setTmSortinoRatio(Float tmSortinoRatio) {\n            this.tmSortinoRatio = tmSortinoRatio;\n        }\n\n        public Float getTqSortinoRatio() {\n            return tqSortinoRatio;\n        }\n\n        public void setTqSortinoRatio(Float tqSortinoRatio) {\n            this.tqSortinoRatio = tqSortinoRatio;\n        }\n\n        public Float getTySortinoRatio() {\n            return tySortinoRatio;\n        }\n\n        public void setTySortinoRatio(Float tySortinoRatio) {\n            this.tySortinoRatio = tySortinoRatio;\n        }\n\n        public Float getAllSortinoRatio() {\n            return allSortinoRatio;\n        }\n\n        public void setAllSortinoRatio(Float allSortinoRatio) {\n            this.allSortinoRatio = allSortinoRatio;\n        }\n\n        public Float getNomHurstIndex() {\n            return nomHurstIndex;\n        }\n\n        public void setNomHurstIndex(Float nomHurstIndex) {\n            this.nomHurstIndex = nomHurstIndex;\n        }\n\n        public Float getNhyHurstIndex() {\n            return nhyHurstIndex;\n        }\n\n        public void setNhyHurstIndex(Float nhyHurstIndex) {\n            this.nhyHurstIndex = nhyHurstIndex;\n        }\n\n        public Float getNoyHurstIndex() {\n            return noyHurstIndex;\n        }\n\n        public void setNoyHurstIndex(Float noyHurstIndex) {\n            this.noyHurstIndex = noyHurstIndex;\n        }\n\n        public Float getTmHurstIndex() {\n            return tmHurstIndex;\n        }\n\n        public void setTmHurstIndex(Float tmHurstIndex) {\n            this.tmHurstIndex = tmHurstIndex;\n        }\n\n        public Float getTqHurstIndex() {\n            return tqHurstIndex;\n        }\n\n        public void setTqHurstIndex(Float tqHurstIndex) {\n            this.tqHurstIndex = tqHurstIndex;\n        }\n\n        public Float getTyHurstIndex() {\n            return tyHurstIndex;\n        }\n\n        public void setTyHurstIndex(Float tyHurstIndex) {\n            this.tyHurstIndex = tyHurstIndex;\n        }\n\n        public Float getAllHurstIndex() {\n            return allHurstIndex;\n        }\n\n        public void setAllHurstIndex(Float allHurstIndex) {\n            this.allHurstIndex = allHurstIndex;\n        }\n\n        public Float getNomVarIndex() {\n            return nomVarIndex;\n        }\n\n        public void setNomVarIndex(Float nomVarIndex) {\n            this.nomVarIndex = nomVarIndex;\n        }\n\n        public Float getNhyVarIndex() {\n            return nhyVarIndex;\n        }\n\n        public void setNhyVarIndex(Float nhyVarIndex) {\n            this.nhyVarIndex = nhyVarIndex;\n        }\n\n        public Float getNoyVarIndex() {\n            return noyVarIndex;\n        }\n\n        public void setNoyVarIndex(Float noyVarIndex) {\n            this.noyVarIndex = noyVarIndex;\n        }\n\n        public Float getTmVarIndex() {\n            return tmVarIndex;\n        }\n\n        public void setTmVarIndex(Float tmVarIndex) {\n            this.tmVarIndex = tmVarIndex;\n        }\n\n        public Float getTqVarIndex() {\n            return tqVarIndex;\n        }\n\n        public void setTqVarIndex(Float tqVarIndex) {\n            this.tqVarIndex = tqVarIndex;\n        }\n\n        public Float getTyVarIndex() {\n            return tyVarIndex;\n        }\n\n        public void setTyVarIndex(Float tyVarIndex) {\n            this.tyVarIndex = tyVarIndex;\n        }\n\n        public Float getAllVarIndex() {\n            return allVarIndex;\n        }\n\n        public void setAllVarIndex(Float allVarIndex) {\n            this.allVarIndex = allVarIndex;\n        }\n\n        public Float getNomVarIndex99() {\n            return nomVarIndex99;\n        }\n\n        public void setNomVarIndex99(Float nomVarIndex99) {\n            this.nomVarIndex99 = nomVarIndex99;\n        }\n\n        public Float getNhyVarIndex99() {\n            return nhyVarIndex99;\n        }\n\n        public void setNhyVarIndex99(Float nhyVarIndex99) {\n            this.nhyVarIndex99 = nhyVarIndex99;\n        }\n\n        public Float getNoyVarIndex99() {\n            return noyVarIndex99;\n        }\n\n        public void setNoyVarIndex99(Float noyVarIndex99) {\n            this.noyVarIndex99 = noyVarIndex99;\n        }\n\n        public Float getTmVarIndex99() {\n            return tmVarIndex99;\n        }\n\n        public void setTmVarIndex99(Float tmVarIndex99) {\n            this.tmVarIndex99 = tmVarIndex99;\n        }\n\n        public Float getTqVarIndex99() {\n            return tqVarIndex99;\n        }\n\n        public void setTqVarIndex99(Float tqVarIndex99) {\n            this.tqVarIndex99 = tqVarIndex99;\n        }\n\n        public Float getTyVarIndex99() {\n            return tyVarIndex99;\n        }\n\n        public void setTyVarIndex99(Float tyVarIndex99) {\n            this.tyVarIndex99 = tyVarIndex99;\n        }\n\n        public Float getAllVarIndex99() {\n            return allVarIndex99;\n        }\n\n        public void setAllVarIndex99(Float allVarIndex99) {\n            this.allVarIndex99 = allVarIndex99;\n        }\n\n        public Float getNomUpCaptureRate() {\n            return nomUpCaptureRate;\n        }\n\n        public void setNomUpCaptureRate(Float nomUpCaptureRate) {\n            this.nomUpCaptureRate = nomUpCaptureRate;\n        }\n\n        public Float getNhyUpCaptureRate() {\n            return nhyUpCaptureRate;\n        }\n\n        public void setNhyUpCaptureRate(Float nhyUpCaptureRate) {\n            this.nhyUpCaptureRate = nhyUpCaptureRate;\n        }\n\n        public Float getNoyUpCaptureRate() {\n            return noyUpCaptureRate;\n        }\n\n        public void setNoyUpCaptureRate(Float noyUpCaptureRate) {\n            this.noyUpCaptureRate = noyUpCaptureRate;\n        }\n\n        public Float getTmUpCaptureRate() {\n            return tmUpCaptureRate;\n        }\n\n        public void setTmUpCaptureRate(Float tmUpCaptureRate) {\n            this.tmUpCaptureRate = tmUpCaptureRate;\n        }\n\n        public Float getTqUpCaptureRate() {\n            return tqUpCaptureRate;\n        }\n\n        public void setTqUpCaptureRate(Float tqUpCaptureRate) {\n            this.tqUpCaptureRate = tqUpCaptureRate;\n        }\n\n        public Float getTyUpCaptureRate() {\n            return tyUpCaptureRate;\n        }\n\n        public void setTyUpCaptureRate(Float tyUpCaptureRate) {\n            this.tyUpCaptureRate = tyUpCaptureRate;\n        }\n\n        public Float getAllUpCaptureRate() {\n            return allUpCaptureRate;\n        }\n\n        public void setAllUpCaptureRate(Float allUpCaptureRate) {\n            this.allUpCaptureRate = allUpCaptureRate;\n        }\n\n        public Float getNomDownCaptureRate() {\n            return nomDownCaptureRate;\n        }\n\n        public void setNomDownCaptureRate(Float nomDownCaptureRate) {\n            this.nomDownCaptureRate = nomDownCaptureRate;\n        }\n\n        public Float getNhyDownCaptureRate() {\n            return nhyDownCaptureRate;\n        }\n\n        public void setNhyDownCaptureRate(Float nhyDownCaptureRate) {\n            this.nhyDownCaptureRate = nhyDownCaptureRate;\n        }\n\n        public Float getNoyDownCaptureRate() {\n            return noyDownCaptureRate;\n        }\n\n        public void setNoyDownCaptureRate(Float noyDownCaptureRate) {\n            this.noyDownCaptureRate = noyDownCaptureRate;\n        }\n\n        public Float getTmDownCaptureRate() {\n            return tmDownCaptureRate;\n        }\n\n        public void setTmDownCaptureRate(Float tmDownCaptureRate) {\n            this.tmDownCaptureRate = tmDownCaptureRate;\n        }\n\n        public Float getTqDownCaptureRate() {\n            return tqDownCaptureRate;\n        }\n\n        public void setTqDownCaptureRate(Float tqDownCaptureRate) {\n            this.tqDownCaptureRate = tqDownCaptureRate;\n        }\n\n        public Float getTyDownCaptureRate() {\n            return tyDownCaptureRate;\n        }\n\n        public void setTyDownCaptureRate(Float tyDownCaptureRate) {\n            this.tyDownCaptureRate = tyDownCaptureRate;\n        }\n\n        public Float getAllDownCaptureRate() {\n            return allDownCaptureRate;\n        }\n\n        public void setAllDownCaptureRate(Float allDownCaptureRate) {\n            this.allDownCaptureRate = allDownCaptureRate;\n        }\n\n        public Float getNomInfoRatio() {\n            return nomInfoRatio;\n        }\n\n        public void setNomInfoRatio(Float nomInfoRatio) {\n            this.nomInfoRatio = nomInfoRatio;\n        }\n\n        public Float getNhyInfoRatio() {\n            return nhyInfoRatio;\n        }\n\n        public void setNhyInfoRatio(Float nhyInfoRatio) {\n            this.nhyInfoRatio = nhyInfoRatio;\n        }\n\n        public Float getNoyInfoRatio() {\n            return noyInfoRatio;\n        }\n\n        public void setNoyInfoRatio(Float noyInfoRatio) {\n            this.noyInfoRatio = noyInfoRatio;\n        }\n\n        public Float getTmInfoRatio() {\n            return tmInfoRatio;\n        }\n\n        public void setTmInfoRatio(Float tmInfoRatio) {\n            this.tmInfoRatio = tmInfoRatio;\n        }\n\n        public Float getTqInfoRatio() {\n            return tqInfoRatio;\n        }\n\n        public void setTqInfoRatio(Float tqInfoRatio) {\n            this.tqInfoRatio = tqInfoRatio;\n        }\n\n        public Float getTyInfoRatio() {\n            return tyInfoRatio;\n        }\n\n        public void setTyInfoRatio(Float tyInfoRatio) {\n            this.tyInfoRatio = tyInfoRatio;\n        }\n\n        public Float getAllInfoRatio() {\n            return allInfoRatio;\n        }\n\n        public void setAllInfoRatio(Float allInfoRatio) {\n            this.allInfoRatio = allInfoRatio;\n        }\n\n        public Float getNomAlgorithmVolatility() {\n            return nomAlgorithmVolatility;\n        }\n\n        public void setNomAlgorithmVolatility(Float nomAlgorithmVolatility) {\n            this.nomAlgorithmVolatility = nomAlgorithmVolatility;\n        }\n\n        public Float getNhyAlgorithmVolatility() {\n            return nhyAlgorithmVolatility;\n        }\n\n        public void setNhyAlgorithmVolatility(Float nhyAlgorithmVolatility) {\n            this.nhyAlgorithmVolatility = nhyAlgorithmVolatility;\n        }\n\n        public Float getNoyAlgorithmVolatility() {\n            return noyAlgorithmVolatility;\n        }\n\n        public void setNoyAlgorithmVolatility(Float noyAlgorithmVolatility) {\n            this.noyAlgorithmVolatility = noyAlgorithmVolatility;\n        }\n\n        public Float getTmAlgorithmVolatility() {\n            return tmAlgorithmVolatility;\n        }\n\n        public void setTmAlgorithmVolatility(Float tmAlgorithmVolatility) {\n            this.tmAlgorithmVolatility = tmAlgorithmVolatility;\n        }\n\n        public Float getTqAlgorithmVolatility() {\n            return tqAlgorithmVolatility;\n        }\n\n        public void setTqAlgorithmVolatility(Float tqAlgorithmVolatility) {\n            this.tqAlgorithmVolatility = tqAlgorithmVolatility;\n        }\n\n        public Float getTyAlgorithmVolatility() {\n            return tyAlgorithmVolatility;\n        }\n\n        public void setTyAlgorithmVolatility(Float tyAlgorithmVolatility) {\n            this.tyAlgorithmVolatility = tyAlgorithmVolatility;\n        }\n\n        public Float getAllAlgorithmVolatility() {\n            return allAlgorithmVolatility;\n        }\n\n        public void setAllAlgorithmVolatility(Float allAlgorithmVolatility) {\n            this.allAlgorithmVolatility = allAlgorithmVolatility;\n        }\n\n        public Float getNomMSquare() {\n            return nomMSquare;\n        }\n\n        public void setNomMSquare(Float nomMSquare) {\n            this.nomMSquare = nomMSquare;\n        }\n\n        public Float getNhyMSquare() {\n            return nhyMSquare;\n        }\n\n        public void setNhyMSquare(Float nhyMSquare) {\n            this.nhyMSquare = nhyMSquare;\n        }\n\n        public Float getNoyMSquare() {\n            return noyMSquare;\n        }\n\n        public void setNoyMSquare(Float noyMSquare) {\n            this.noyMSquare = noyMSquare;\n        }\n\n        public Float getTmMSquare() {\n            return tmMSquare;\n        }\n\n        public void setTmMSquare(Float tmMSquare) {\n            this.tmMSquare = tmMSquare;\n        }\n\n        public Float getTqMSquare() {\n            return tqMSquare;\n        }\n\n        public void setTqMSquare(Float tqMSquare) {\n            this.tqMSquare = tqMSquare;\n        }\n\n        public Float getTyMSquare() {\n            return tyMSquare;\n        }\n\n        public void setTyMSquare(Float tyMSquare) {\n            this.tyMSquare = tyMSquare;\n        }\n\n        public Float getAllMSquare() {\n            return allMSquare;\n        }\n\n        public void setAllMSquare(Float allMSquare) {\n            this.allMSquare = allMSquare;\n        }\n\n        public Float getNomTreynorIndex() {\n            return nomTreynorIndex;\n        }\n\n        public void setNomTreynorIndex(Float nomTreynorIndex) {\n            this.nomTreynorIndex = nomTreynorIndex;\n        }\n\n        public Float getNhyTreynorIndex() {\n            return nhyTreynorIndex;\n        }\n\n        public void setNhyTreynorIndex(Float nhyTreynorIndex) {\n            this.nhyTreynorIndex = nhyTreynorIndex;\n        }\n\n        public Float getNoyTreynorIndex() {\n            return noyTreynorIndex;\n        }\n\n        public void setNoyTreynorIndex(Float noyTreynorIndex) {\n            this.noyTreynorIndex = noyTreynorIndex;\n        }\n\n        public Float getTmTreynorIndex() {\n            return tmTreynorIndex;\n        }\n\n        public void setTmTreynorIndex(Float tmTreynorIndex) {\n            this.tmTreynorIndex = tmTreynorIndex;\n        }\n\n        public Float getTqTreynorIndex() {\n            return tqTreynorIndex;\n        }\n\n        public void setTqTreynorIndex(Float tqTreynorIndex) {\n            this.tqTreynorIndex = tqTreynorIndex;\n        }\n\n        public Float getTyTreynorIndex() {\n            return tyTreynorIndex;\n        }\n\n        public void setTyTreynorIndex(Float tyTreynorIndex) {\n            this.tyTreynorIndex = tyTreynorIndex;\n        }\n\n        public Float getAllTreynorIndex() {\n            return allTreynorIndex;\n        }\n\n        public void setAllTreynorIndex(Float allTreynorIndex) {\n            this.allTreynorIndex = allTreynorIndex;\n        }\n\n        public String getId() {\n            return id;\n        }\n\n        public void setId(String id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public String getShortName() {\n            return shortName;\n        }\n\n        public void setShortName(String shortName) {\n            this.shortName = shortName;\n        }\n\n        public String getCode() {\n            return code;\n        }\n\n        public void setCode(String code) {\n            this.code = code;\n        }\n\n        public String getRecordNumber() {\n            return recordNumber;\n        }\n\n        public void setRecordNumber(String recordNumber) {\n            this.recordNumber = recordNumber;\n        }\n\n        public Byte getFundType() {\n            return fundType;\n        }\n\n        public void setFundType(Byte fundType) {\n            this.fundType = fundType;\n        }\n\n        public Byte getFundBreed() {\n            return fundBreed;\n        }\n\n        public void setFundBreed(Byte fundBreed) {\n            this.fundBreed = fundBreed;\n        }\n\n        public Byte getFundStatus() {\n            return fundStatus;\n        }\n\n        public void setFundStatus(Byte fundStatus) {\n            this.fundStatus = fundStatus;\n        }\n\n        public String getBuyStatus() {\n            return buyStatus;\n        }\n\n        public void setBuyStatus(String buyStatus) {\n            this.buyStatus = buyStatus;\n        }\n\n        public String getRedeemStatus() {\n            return redeemStatus;\n        }\n\n        public void setRedeemStatus(String redeemStatus) {\n            this.redeemStatus = redeemStatus;\n        }\n\n        public String getRecordDate() {\n            return recordDate;\n        }\n\n        public void setRecordDate(String recordDate) {\n            this.recordDate = recordDate;\n        }\n\n        public String getCreateDate() {\n            return createDate;\n        }\n\n        public void setCreateDate(String createDate) {\n            this.createDate = createDate;\n        }\n\n        public String getStopDate() {\n            return stopDate;\n        }\n\n        public void setStopDate(String stopDate) {\n            this.stopDate = stopDate;\n        }\n\n        public String getFundFilingStage() {\n            return fundFilingStage;\n        }\n\n        public void setFundFilingStage(String fundFilingStage) {\n            this.fundFilingStage = fundFilingStage;\n        }\n\n        public String getFundInvestmentType() {\n            return fundInvestmentType;\n        }\n\n        public void setFundInvestmentType(String fundInvestmentType) {\n            this.fundInvestmentType = fundInvestmentType;\n        }\n\n        public String getCurrency() {\n            return currency;\n        }\n\n        public void setCurrency(String currency) {\n            this.currency = currency;\n        }\n\n        public String getManagerType() {\n            return managerType;\n        }\n\n        public void setManagerType(String managerType) {\n            this.managerType = managerType;\n        }\n\n        public String getManagerName() {\n            return managerName;\n        }\n\n        public void setManagerName(String managerName) {\n            this.managerName = managerName;\n        }\n\n        public String getInvestmentTarget() {\n            return investmentTarget;\n        }\n\n        public void setInvestmentTarget(String investmentTarget) {\n            this.investmentTarget = investmentTarget;\n        }\n\n        public String getMajorInvestAreas() {\n            return majorInvestAreas;\n        }\n\n        public void setMajorInvestAreas(String majorInvestAreas) {\n            this.majorInvestAreas = majorInvestAreas;\n        }\n\n        public String getFundLastModifyDate() {\n            return fundLastModifyDate;\n        }\n\n        public void setFundLastModifyDate(String fundLastModifyDate) {\n            this.fundLastModifyDate = fundLastModifyDate;\n        }\n\n        public String getSpecialNote() {\n            return specialNote;\n        }\n\n        public void setSpecialNote(String specialNote) {\n            this.specialNote = specialNote;\n        }\n\n        public String getRegisteredAddress() {\n            return registeredAddress;\n        }\n\n        public void setRegisteredAddress(String registeredAddress) {\n            this.registeredAddress = registeredAddress;\n        }\n\n        public String getInvestmentStrategy() {\n            return investmentStrategy;\n        }\n\n        public void setInvestmentStrategy(String investmentStrategy) {\n            this.investmentStrategy = investmentStrategy;\n        }\n\n        public String getInvestmentSubStrategy() {\n            return investmentSubStrategy;\n        }\n\n        public void setInvestmentSubStrategy(String investmentSubStrategy) {\n            this.investmentSubStrategy = investmentSubStrategy;\n        }\n\n        public List<String> getFundManagerIds() {\n            return fundManagerIds;\n        }\n\n        public void setFundManagerIds(List<String> fundManagerIds) {\n            this.fundManagerIds = fundManagerIds;\n        }\n\n        public String getCompanyId() {\n            return companyId;\n        }\n\n        public void setCompanyId(String companyId) {\n            this.companyId = companyId;\n        }\n\n        public Long getOrderNum() {\n            return orderNum;\n        }\n\n        public void setOrderNum(Long orderNum) {\n            this.orderNum = orderNum;\n        }\n\n        public String getCreateScale() {\n            return createScale;\n        }\n\n        public void setCreateScale(String createScale) {\n            this.createScale = createScale;\n        }\n\n        public String getLatestScale() {\n            return latestScale;\n        }\n\n        public void setLatestScale(String latestScale) {\n            this.latestScale = latestScale;\n        }\n\n        public String getBenchmark() {\n            return benchmark;\n        }\n\n        public void setBenchmark(String benchmark) {\n            this.benchmark = benchmark;\n        }\n\n        public Byte getNetValueUpdateRate() {\n            return netValueUpdateRate;\n        }\n\n        public void setNetValueUpdateRate(Byte netValueUpdateRate) {\n            this.netValueUpdateRate = netValueUpdateRate;\n        }\n\n        public String getFundOuterId() {\n            return fundOuterId;\n        }\n\n        public void setFundOuterId(String fundOuterId) {\n            this.fundOuterId = fundOuterId;\n        }\n\n        public String getTags() {\n            return tags;\n        }\n\n        public void setTags(String tags) {\n            this.tags = tags;\n        }\n\n        public String getRemark() {\n            return remark;\n        }\n\n        public void setRemark(String remark) {\n            this.remark = remark;\n        }\n\n        public String getStrategyCapacity() {\n            return strategyCapacity;\n        }\n\n        public void setStrategyCapacity(String strategyCapacity) {\n            this.strategyCapacity = strategyCapacity;\n        }\n\n        public Long getCreateTime() {\n            return createTime;\n        }\n\n        public void setCreateTime(Long createTime) {\n            this.createTime = createTime;\n        }\n\n        public String getCreatorId() {\n            return creatorId;\n        }\n\n        public void setCreatorId(String creatorId) {\n            this.creatorId = creatorId;\n        }\n\n        public Long getLastModifyTime() {\n            return lastModifyTime;\n        }\n\n        public void setLastModifyTime(Long lastModifyTime) {\n            this.lastModifyTime = lastModifyTime;\n        }\n\n        public String getLastModifierId() {\n            return lastModifierId;\n        }\n\n        public void setLastModifierId(String lastModifierId) {\n            this.lastModifierId = lastModifierId;\n        }\n\n        public String getCompanyOuterId() {\n            return companyOuterId;\n        }\n\n        public void setCompanyOuterId(String companyOuterId) {\n            this.companyOuterId = companyOuterId;\n        }\n\n        public String getCompanyName() {\n            return companyName;\n        }\n\n        public void setCompanyName(String companyName) {\n            this.companyName = companyName;\n        }\n\n        public List<String> getManagerOuterIds() {\n            return managerOuterIds;\n        }\n\n        public void setManagerOuterIds(List<String> managerOuterIds) {\n            this.managerOuterIds = managerOuterIds;\n        }\n\n        public List<String> getFundIds() {\n            return fundIds;\n        }\n\n        public void setFundIds(List<String> fundIds) {\n            this.fundIds = fundIds;\n        }\n\n        public List<String> getCompanyIds() {\n            return companyIds;\n        }\n\n        public void setCompanyIds(List<String> companyIds) {\n            this.companyIds = companyIds;\n        }\n\n        public Float getStartAnnualizedReturn() {\n            return startAnnualizedReturn;\n        }\n\n        public void setStartAnnualizedReturn(Float startAnnualizedReturn) {\n            this.startAnnualizedReturn = startAnnualizedReturn;\n        }\n\n        public Float getEndAnnualizedReturn() {\n            return endAnnualizedReturn;\n        }\n\n        public void setEndAnnualizedReturn(Float endAnnualizedReturn) {\n            this.endAnnualizedReturn = endAnnualizedReturn;\n        }\n\n        public String getTimeInterval() {\n            return timeInterval;\n        }\n\n        public void setTimeInterval(String timeInterval) {\n            this.timeInterval = timeInterval;\n        }\n\n        public List<String> getFundManagerNames() {\n            return fundManagerNames;\n        }\n\n        public void setFundManagerNames(List<String> fundManagerNames) {\n            this.fundManagerNames = fundManagerNames;\n        }\n\n        public String getFundStatusName() {\n            return fundStatusName;\n        }\n\n        public void setFundStatusName(String fundStatusName) {\n            this.fundStatusName = fundStatusName;\n        }\n\n        public String getFundTypeName() {\n            return fundTypeName;\n        }\n\n        public void setFundTypeName(String fundTypeName) {\n            this.fundTypeName = fundTypeName;\n        }\n\n        public Byte getIsConcern() {\n            return isConcern;\n        }\n\n        public void setIsConcern(Byte isConcern) {\n            this.isConcern = isConcern;\n        }\n\n        public Float getConfigWeight() {\n            return configWeight;\n        }\n\n        public void setConfigWeight(Float configWeight) {\n            this.configWeight = configWeight;\n        }\n\n        public String getNetValueDateString() {\n            return netValueDateString;\n        }\n\n        public void setNetValueDateString(String netValueDateString) {\n            this.netValueDateString = netValueDateString;\n        }\n\n        public String getManagerId() {\n            return managerId;\n        }\n\n        public void setManagerId(String managerId) {\n            this.managerId = managerId;\n        }\n\n        public String getTagId() {\n            return tagId;\n        }\n\n        public void setTagId(String tagId) {\n            this.tagId = tagId;\n        }\n    }\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1500/Issue1570.java",
    "content": "package com.alibaba.json.bvt.issue_1500;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\npublic class Issue1570 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = new Model();\n        assertEquals(\"{}\", JSON.toJSONString(model, SerializerFeature.WriteNullBooleanAsFalse));\n        assertEquals(\"{\\\"value\\\":\\\"\\\"}\", JSON.toJSONString(model, SerializerFeature.WriteNullStringAsEmpty));\n    }\n\n    public void test_for_issue_int() throws Exception {\n        ModelInt model = new ModelInt();\n        assertEquals(\"{}\", JSON.toJSONString(model, SerializerFeature.WriteNullBooleanAsFalse));\n        assertEquals(\"{\\\"value\\\":0}\", JSON.toJSONString(model, SerializerFeature.WriteNullNumberAsZero));\n    }\n\n    public void test_for_issue_long() throws Exception {\n        ModelLong model = new ModelLong();\n        assertEquals(\"{}\", JSON.toJSONString(model, SerializerFeature.WriteNullBooleanAsFalse));\n        assertEquals(\"{\\\"value\\\":0}\", JSON.toJSONString(model, SerializerFeature.WriteNullNumberAsZero));\n    }\n\n    public void test_for_issue_bool() throws Exception {\n        ModelBool model = new ModelBool();\n        assertEquals(\"{}\", JSON.toJSONString(model, SerializerFeature.WriteNullNumberAsZero));\n        assertEquals(\"{\\\"value\\\":false}\", JSON.toJSONString(model, SerializerFeature.WriteNullBooleanAsFalse));\n    }\n\n    public void test_for_issue_list() throws Exception {\n        ModelList model = new ModelList();\n        assertEquals(\"{}\", JSON.toJSONString(model, SerializerFeature.WriteNullNumberAsZero));\n        assertEquals(\"{\\\"value\\\":[]}\", JSON.toJSONString(model, SerializerFeature.WriteNullListAsEmpty));\n    }\n\n    public static class Model {\n        public String value;\n    }\n\n    public static class ModelInt {\n        public Integer value;\n    }\n\n    public static class ModelLong {\n        public Long value;\n    }\n\n    public static class ModelBool {\n        public Boolean value;\n    }\n\n    public static class ModelList {\n        public List value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1500/Issue1570_private.java",
    "content": "package com.alibaba.json.bvt.issue_1500;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\npublic class Issue1570_private extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = new Model();\n        assertEquals(\"{}\", JSON.toJSONString(model, SerializerFeature.WriteNullBooleanAsFalse));\n        assertEquals(\"{\\\"value\\\":\\\"\\\"}\", JSON.toJSONString(model, SerializerFeature.WriteNullStringAsEmpty));\n    }\n\n    public void test_for_issue_int() throws Exception {\n        ModelInt model = new ModelInt();\n        assertEquals(\"{}\", JSON.toJSONString(model, SerializerFeature.WriteNullBooleanAsFalse));\n        assertEquals(\"{\\\"value\\\":0}\", JSON.toJSONString(model, SerializerFeature.WriteNullNumberAsZero));\n    }\n\n    public void test_for_issue_long() throws Exception {\n        ModelLong model = new ModelLong();\n        assertEquals(\"{}\", JSON.toJSONString(model, SerializerFeature.WriteNullBooleanAsFalse));\n        assertEquals(\"{\\\"value\\\":0}\", JSON.toJSONString(model, SerializerFeature.WriteNullNumberAsZero));\n    }\n\n    public void test_for_issue_bool() throws Exception {\n        ModelBool model = new ModelBool();\n        assertEquals(\"{}\", JSON.toJSONString(model, SerializerFeature.WriteNullNumberAsZero));\n        assertEquals(\"{\\\"value\\\":false}\", JSON.toJSONString(model, SerializerFeature.WriteNullBooleanAsFalse));\n    }\n\n    public void test_for_issue_list() throws Exception {\n        ModelList model = new ModelList();\n        assertEquals(\"{}\", JSON.toJSONString(model, SerializerFeature.WriteNullNumberAsZero));\n        assertEquals(\"{\\\"value\\\":[]}\", JSON.toJSONString(model, SerializerFeature.WriteNullListAsEmpty));\n    }\n\n    private static class Model {\n        public String value;\n    }\n\n    private static class ModelInt {\n        public Integer value;\n    }\n\n    private static class ModelLong {\n        public Long value;\n    }\n\n    private static class ModelBool {\n        public Boolean value;\n    }\n\n    private static class ModelList {\n        public List value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1500/Issue1572.java",
    "content": "package com.alibaba.json.bvt.issue_1500;\n\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\nimport java.util.Map;\nimport java.util.Set;\n\npublic class Issue1572 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Person person = new Person();\n\n        person.setId(\"1001\");\n\n        person.setName(\"1001\");\n\n        Map<String, Object> pathValues = JSONPath.paths(person);\n        Set<String> paths = pathValues.keySet();\n\n        assertEquals(3, paths.size());\n        assertEquals(\"1001\", pathValues.get(\"/id\"));\n        assertEquals(\"1001\", pathValues.get(\"/name\"));\n        assertSame(person, pathValues.get(\"/\"));\n    }\n\n    public static class Person {\n        private String name;\n        private String id;\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public String getId() {\n            return id;\n        }\n\n        public void setId(String id) {\n            this.id = id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1500/Issue1576.java",
    "content": "package com.alibaba.json.bvt.issue_1500;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class Issue1576 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"{\\\"code\\\":200,\\\"in_msg\\\":\\\"a\\\",\\\"out_msg\\\":\\\"a\\\",\\\"data\\\":[{\\\"title\\\":\\\"a\\\",\\\"url\\\":\\\"url\\\",\\\"content\\\":\\\"content\\\"}],\\\"client_id\\\":0,\\\"client_param\\\":0,\\\"userid\\\":0}\";\n        NewsDetail newsDetail = JSON.parseObject(json, NewsDetail.class);\n        assertNotNull(newsDetail);\n    }\n\n    public static class NewsDetail {\n\n        public int code;\n        public String in_msg;\n        public String out_msg;\n        public String client_id;\n        public String client_param;\n        public String userid;\n        public List<DataBean> data = new ArrayList<DataBean>();\n\n        public int getCode() {\n            return code;\n        }\n\n        public void setCode(int code) {\n            this.code = code;\n        }\n\n        public String getIn_msg() {\n            return in_msg;\n        }\n\n        public void setIn_msg(String in_msg) {\n            this.in_msg = in_msg;\n        }\n\n        public String getOut_msg() {\n            return out_msg;\n        }\n\n        public void setOut_msg(String out_msg) {\n            this.out_msg = out_msg;\n        }\n\n        public String getClient_id() {\n            return client_id;\n        }\n\n        public void setClient_id(String client_id) {\n            this.client_id = client_id;\n        }\n\n        public String getClient_param() {\n            return client_param;\n        }\n\n        public void setClient_param(String client_param) {\n            this.client_param = client_param;\n        }\n\n        public String getUserid() {\n            return userid;\n        }\n\n        public void setUserid(String userid) {\n            this.userid = userid;\n        }\n\n        public List<DataBean> getData() {\n            return data;\n        }\n\n        public void setData(List<DataBean> data) {\n            this.data = data;\n        }\n    }\n\n    public static class DataBean {\n        /**\n         * title : 中午\n         * url : url\n         * content : content\n         */\n\n        public String title;\n        public String url;\n        public String content;\n\n        public String getTitle() {\n            return title;\n        }\n\n        public void setTitle(String title) {\n            this.title = title;\n        }\n\n        public String getUrl() {\n            return url;\n        }\n\n        public void setUrl(String url) {\n            this.url = url;\n        }\n\n        public String getContent() {\n            return content;\n        }\n\n        public void setContent(String content) {\n            this.content = content;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1500/Issue1580.java",
    "content": "package com.alibaba.json.bvt.issue_1500;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeFilter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.fastjson.serializer.SimplePropertyPreFilter;\nimport junit.framework.TestCase;\n\npublic class Issue1580 extends TestCase {\n    public void test_for_issue() throws Exception {\n        SimplePropertyPreFilter classAFilter = new SimplePropertyPreFilter(Model.class, \"code\");\n        SerializeFilter[] filters =new SerializeFilter[]{classAFilter};\n\n        Model model = new Model();\n        model.code = 1001;\n        model.name = \"N1\";\n\n        String json = JSON.toJSONString(model, filters, SerializerFeature.BeanToArray );\n        assertEquals(\"[1001,null]\", json);\n    }\n\n    public static class Model {\n        private int code;\n        private String name;\n\n        public int getCode() {\n            return code;\n        }\n\n        public void setCode(int code) {\n            this.code = code;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1500/Issue1580_private.java",
    "content": "package com.alibaba.json.bvt.issue_1500;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeFilter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.fastjson.serializer.SimplePropertyPreFilter;\nimport junit.framework.TestCase;\n\npublic class Issue1580_private extends TestCase {\n    public void test_for_issue() throws Exception {\n        SimplePropertyPreFilter classAFilter = new SimplePropertyPreFilter(Model.class, \"code\");\n        SerializeFilter[] filters =new SerializeFilter[]{classAFilter};\n\n        Model model = new Model();\n        model.code = 1001;\n        model.name = \"N1\";\n\n        String json = JSON.toJSONString(model, filters, SerializerFeature.BeanToArray );\n        assertEquals(\"[1001,null]\", json);\n    }\n\n    private static class Model {\n        private int code;\n        private String name;\n\n        public int getCode() {\n            return code;\n        }\n\n        public void setCode(int code) {\n            this.code = code;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1500/Issue1582.java",
    "content": "package com.alibaba.json.bvt.issue_1500;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\npublic class Issue1582 extends TestCase {\n    public void test_for_issue() throws Exception {\n        assertSame(Size.Big, JSON.parseObject(\"\\\"Big\\\"\", Size.class));\n        assertSame(Size.Big, JSON.parseObject(\"\\\"big\\\"\", Size.class));\n        assertNull(JSON.parseObject(\"\\\"Large\\\"\", Size.class));\n        assertSame(Size.LL, JSON.parseObject(\"\\\"L3\\\"\", Size.class));\n\n        assertSame(Size.Small, JSON.parseObject(\"\\\"Little\\\"\", Size.class));\n    }\n\n    public void test_for_issue_1() throws Exception {\n        JSONObject object = JSON.parseObject(\"{\\\"size\\\":\\\"Little\\\"}\");\n        Model model = object.toJavaObject(Model.class);\n        assertSame(Size.Small, model.size);\n    }\n\n    public static class Model {\n        public Size size;\n    }\n\n    public static enum Size {\n        Big,\n\n        @JSONField(alternateNames = \"Little\")\n        Small,\n\n        @JSONField(name = \"L3\")\n        LL\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1500/Issue1583.java",
    "content": "package com.alibaba.json.bvt.issue_1500;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\npublic class Issue1583 extends TestCase {\n    public void test_issue() throws Exception {\n        Map<String, List<String>> totalMap = new HashMap<String, List<String>>();\n        for (int i = 0; i < 10; i++) {\n            List<String> list = new ArrayList<String>();\n            for (int j = 0; j < 2; j++) {\n                list.add(\"list\" + j);\n            }\n            totalMap.put(\"map\" + i, list);\n        }\n        List<Map.Entry<String, List<String>>> mapList = new ArrayList<Map.Entry<String, List<String>>>(totalMap.entrySet());\n        String jsonString = JSON.toJSONString(mapList, SerializerFeature.DisableCircularReferenceDetect);\n\n        System.out.println(jsonString);\n        List<Map.Entry<String, List<String>>> parse = JSON.parseObject(jsonString, new TypeReference<List<Map.Entry<String, List<String>>>>() {});\n        System.out.println(parse);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1500/Issue1584.java",
    "content": "package com.alibaba.json.bvt.issue_1500;\n\nimport clojure.lang.Obj;\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\nimport junit.framework.TestCase;\n\nimport java.lang.reflect.Type;\nimport java.util.Collections;\nimport java.util.Map;\n\npublic class Issue1584 extends TestCase {\n    public void test_for_issue() throws Exception {\n        ParserConfig config = new ParserConfig();\n\n        String json = \"{\\\"k\\\":1,\\\"v\\\":\\\"A\\\"}\";\n\n        {\n            Map.Entry entry = JSON.parseObject(json, Map.Entry.class, config);\n            Object key = entry.getKey();\n            Object value = entry.getValue();\n            assertTrue(key.equals(\"v\") || key.equals(\"k\"));\n            if (key.equals(\"v\")) {\n                assertEquals(\"A\", value);\n            } else {\n                assertEquals(1, value);\n            }\n        }\n\n        config.putDeserializer(Map.Entry.class, new ObjectDeserializer() {\n            public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n                JSONObject object = parser.parseObject();\n                Object k = object.get(\"k\");\n                Object v = object.get(\"v\");\n\n                return (T) Collections.singletonMap(k, v).entrySet().iterator().next();\n            }\n\n            public int getFastMatchToken() {\n                return 0;\n            }\n        });\n\n        Map.Entry entry = JSON.parseObject(json, Map.Entry.class, config);\n        assertEquals(1, entry.getKey());\n        assertEquals(\"A\", entry.getValue());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1500/Issue1588.java",
    "content": "package com.alibaba.json.bvt.issue_1500;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\n\npublic class Issue1588 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String dateString = \"2017-11-17 00:00:00\";\n        Date date = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\").parse(dateString);\n        JSONObject jsonObject = new JSONObject();\n        jsonObject.put(\"test\", date);\n        System.out.println(jsonObject.toJSONString(jsonObject, SerializerFeature.UseISO8601DateFormat));\n        System.out.println(JSONObject.toJSONStringWithDateFormat(jsonObject, \"yyyy-MM-dd'T'HH:mm:ssXXX\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1500/StringSerializer.java",
    "content": "package com.alibaba.json.bvt.issue_1500;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.ObjectSerializer;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\n\npublic class StringSerializer implements ObjectSerializer {\n\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\n        serializer.write(String.valueOf(object));\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/Issue1603_field.java",
    "content": "package com.alibaba.json.bvt.issue_1600;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Collections;\n\npublic class Issue1603_field extends TestCase {\n    public void test_emptySet() throws Exception {\n        Model_1 m = JSON.parseObject(\"{\\\"values\\\":[\\\"a\\\"]}\", Model_1.class);\n        assertEquals(0, m.values.size());\n    }\n\n    public void test_emptyList() throws Exception {\n        Model_2 m = JSON.parseObject(\"{\\\"values\\\":[\\\"a\\\"]}\", Model_2.class);\n        assertEquals(0, m.values.size());\n    }\n\n    public void test_unmodifier() throws Exception {\n        Model_3 m = JSON.parseObject(\"{\\\"values\\\":[\\\"a\\\"]}\", Model_3.class);\n        assertEquals(0, m.values.size());\n    }\n\n    public static class Model_1 {\n        public final Collection<String> values = Collections.emptySet();\n    }\n\n    public static class Model_2 {\n        public final Collection<String> values = Collections.emptyList();\n    }\n\n    public static class Model_3 {\n        public final Collection<String> values = Collections.unmodifiableList(new ArrayList<String>());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/Issue1603_getter.java",
    "content": "package com.alibaba.json.bvt.issue_1600;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Collections;\n\npublic class Issue1603_getter extends TestCase {\n    public void test_emptySet() throws Exception {\n        Model_1 m = JSON.parseObject(\"{\\\"values\\\":[\\\"a\\\"]}\", Model_1.class);\n        assertEquals(0, m.values.size());\n    }\n\n    public void test_emptyList() throws Exception {\n        Model_2 m = JSON.parseObject(\"{\\\"values\\\":[\\\"a\\\"]}\", Model_2.class);\n        assertEquals(0, m.values.size());\n    }\n\n    public void test_unmodifier() throws Exception {\n        Model_3 m = JSON.parseObject(\"{\\\"values\\\":[\\\"a\\\"]}\", Model_3.class);\n        assertEquals(0, m.values.size());\n    }\n\n    public static class Model_1 {\n        private final Collection<String> values = Collections.emptySet();\n\n        public Collection<String> getValues() {\n            return values;\n        }\n    }\n\n    public static class Model_2 {\n        private final Collection<String> values = Collections.emptyList();\n\n        public Collection<String> getValues() {\n            return values;\n        }\n    }\n\n    public static class Model_3 {\n        private final Collection<String> values = Collections.unmodifiableList(new ArrayList<String>());\n\n        public Collection<String> getValues() {\n            return values;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/Issue1603_map.java",
    "content": "package com.alibaba.json.bvt.issue_1600;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.*;\n\npublic class Issue1603_map extends TestCase {\n    public void test_emptyMap() throws Exception {\n        Model_1 m = JSON.parseObject(\"{\\\"values\\\":{\\\"a\\\":1001}}\", Model_1.class);\n        assertEquals(0, m.values.size());\n    }\n\n    public void test_unmodifiableMap() throws Exception {\n        Model_2 m = JSON.parseObject(\"{\\\"values\\\":{\\\"a\\\":1001}}\", Model_2.class);\n        assertEquals(0, m.values.size());\n    }\n\n    public static class Model_1 {\n        public final Map<String, Object> values = Collections.emptyMap();\n    }\n\n    public static class Model_2 {\n        public final Map<String, Object> values = Collections.unmodifiableMap(new HashMap<String, Object>());\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/Issue1603_map_getter.java",
    "content": "package com.alibaba.json.bvt.issue_1600;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic class Issue1603_map_getter extends TestCase {\n    public void test_emptyMap() throws Exception {\n        Model_1 m = JSON.parseObject(\"{\\\"values\\\":{\\\"a\\\":1001}}\", Model_1.class);\n        assertEquals(0, m.values.size());\n    }\n\n    public void test_unmodifiableMap() throws Exception {\n        Model_2 m = JSON.parseObject(\"{\\\"values\\\":{\\\"a\\\":1001}}\", Model_2.class);\n        assertEquals(0, m.values.size());\n    }\n\n    public static class Model_1 {\n        private final Map<String, Object> values = Collections.emptyMap();\n\n        public Map<String, Object> getValues() {\n            return values;\n        }\n    }\n\n    public static class Model_2 {\n        private final Map<String, Object> values = Collections.unmodifiableMap(new HashMap<String, Object>());\n\n        public Map<String, Object> getValues() {\n            return values;\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/Issue1611.java",
    "content": "package com.alibaba.json.bvt.issue_1600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\npublic class Issue1611 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String pristineJson = \"{\\\"data\\\":{\\\"lists\\\":[{\\\"Name\\\":\\\"Mark\\\"}]}}\";\n        JSONArray list = JSON.parseObject(pristineJson).getJSONObject(\"data\").getJSONArray(\"lists\");\n        assertEquals(1, list.size());\n        for (int i = 0; i < list.size(); i++) {\n            JSONObject sss = list.getJSONObject(i);\n            Model model = sss.toJavaObject(Model.class);\n            assertEquals(\"Mark\", model.name);\n        }\n\n    }\n\n    public static class Model {\n        private String name;\n\n        public Model(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/Issue1612.java",
    "content": "package com.alibaba.json.bvt.issue_1600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport org.junit.Test;\n\n/**\n * <p>Title: Issue1612</p>\n * <p>Description: </p>\n *\n * @author Victor\n * @version 1.0\n * @since 2017/11/27\n */\npublic class Issue1612 {\n\n    @Test\n    public void test() {\n\n        RegResponse<User> userRegResponse = testFastJson(User.class);\n\n        User user = userRegResponse.getResult();\n        System.out.println(user);\n\n    }\n\n    public static <T> RegResponse<T> testFastJson(Class<T> clasz) {\n\n        //把body解析成一个对象\n        String body = \"{\\\"retCode\\\":\\\"200\\\", \\\"result\\\":{\\\"name\\\":\\\"Zhangsan\\\",\\\"password\\\":\\\"123\\\"}}\";\n\n        return JSON.parseObject(body, new TypeReference<RegResponse<T>>(clasz) {});\n    }\n}\n\nclass RegResponse<T> {\n\n    private String retCode;\n    private String retDesc;\n    private T result;\n\n    public String getRetCode() {\n        return retCode;\n    }\n\n    public void setRetCode(String retCode) {\n        this.retCode = retCode;\n    }\n\n    public String getRetDesc() {\n        return retDesc;\n    }\n\n    public void setRetDesc(String retDesc) {\n        this.retDesc = retDesc;\n    }\n\n    public T getResult() {\n        return result;\n    }\n\n    public void setResult(T result) {\n        this.result = result;\n    }\n\n    @Override\n    public String toString() {\n        return \"RegResponse{\" +\n                \"retCode='\" + retCode + '\\'' +\n                \", retDesc='\" + retDesc + '\\'' +\n                \", result=\" + result +\n                '}';\n    }\n}\n\nclass User {\n\n    public User(){}\n    public User(String username, String password) {\n        this.username = username;\n        this.password = password;\n    }\n\n    private String username;\n    private String password;\n\n    public String getUsername() {\n        return username;\n    }\n\n    public void setUsername(String username) {\n        this.username = username;\n    }\n\n    public String getPassword() {\n        return password;\n    }\n\n    public void setPassword(String password) {\n        this.password = password;\n    }\n\n    @Override\n    public String toString() {\n        return \"User{\" +\n                \"username='\" + username + '\\'' +\n                \", password='\" + password + '\\'' +\n                '}';\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/Issue1627.java",
    "content": "package com.alibaba.json.bvt.issue_1600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\npublic class Issue1627 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String a = \"{\\\"101a0.test-b\\\":\\\"tt\\\"}\";\n        Object o = JSON.parse(a);\n        String s = \"101a0.test-b\";\n        assertTrue(JSONPath.contains(o, \"$.\" + escapeString(s)));\n    }\n\n    public static String escapeString(String s) {\n        StringBuilder buf = new StringBuilder();\n\n        for(int i = 0; i < s.length(); ++i) {\n            char c = s.charAt(i);\n            if((c < 48 || c > 57) && (c < 65 || c > 90) && (c < 97 || c > 122)) {\n                buf.append(\"\\\\\" + c);\n            } else {\n                buf.append(c);\n            }\n        }\n\n        return buf.toString();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/Issue1628.java",
    "content": "package com.alibaba.json.bvt.issue_1600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializeFilter;\nimport com.alibaba.fastjson.serializer.SimplePropertyPreFilter;\nimport junit.framework.TestCase;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic class Issue1628 extends TestCase {\n    public void test_toJSONBytes() throws Exception {\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"a\", 1001);\n        map.put(\"b\", 2002);\n        byte[] bytes = JSON.toJSONBytes(map, new SimplePropertyPreFilter(\"a\"));\n        assertEquals(\"{\\\"a\\\":1001}\", new String(bytes));\n    }\n\n    public void test_toJSONBytes_1() throws Exception {\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"a\", 1001);\n        map.put(\"b\", 2002);\n        byte[] bytes = JSON.toJSONBytes(map, new SerializeFilter[] {new SimplePropertyPreFilter(\"a\")});\n        assertEquals(\"{\\\"a\\\":1001}\", new String(bytes));\n    }\n\n    public void test_toJSONBytes_2() throws Exception {\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"a\", 1001);\n        map.put(\"b\", 2002);\n        byte[] bytes = JSON.toJSONBytes(map, SerializeConfig.globalInstance, new SimplePropertyPreFilter(\"a\"));\n        assertEquals(\"{\\\"a\\\":1001}\", new String(bytes));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/Issue1633.java",
    "content": "package com.alibaba.json.bvt.issue_1600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\npublic class Issue1633 extends TestCase {\n    public void test_for_issue_int() throws Exception {\n        String text = \"{123:\\\"abc\\\"}\";\n        JSONObject obj = JSON.parseObject(text, Feature.NonStringKeyAsString);\n        assertEquals(\"abc\", obj.getString(\"123\"));\n    }\n\n    public void test_for_issue_bool() throws Exception {\n        String text = \"{false:\\\"abc\\\"}\";\n        JSONObject obj = JSON.parseObject(text, Feature.NonStringKeyAsString);\n        assertEquals(\"abc\", obj.getString(\"false\"));\n    }\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/Issue1635.java",
    "content": "package com.alibaba.json.bvt.issue_1600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.PascalNameFilter;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\npublic class Issue1635 extends TestCase {\n    public static class Foo {\n        public String name;\n        public Integer BarCount;\n        public Boolean flag;\n        public List list;\n\n        public Foo(String name, Integer barCount) {\n            this.name = name;\n            BarCount = barCount;\n        }\n    }\n\n    public void test_issue() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.setAsmEnable(false);\n        Foo foo = new Foo(null, null);\n        String json = JSON.toJSONString(foo\n                , config, new PascalNameFilter()\n                , SerializerFeature.WriteNullBooleanAsFalse\n                , SerializerFeature.WriteNullNumberAsZero\n                , SerializerFeature.WriteNullStringAsEmpty\n                , SerializerFeature.WriteNullListAsEmpty\n        );\n        assertEquals(\"{\\\"BarCount\\\":0,\\\"Flag\\\":false,\\\"List\\\":[],\\\"Name\\\":\\\"\\\"}\", json);\n    }\n\n    public void test_issue_1() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.setAsmEnable(false);\n        Foo foo = new Foo(null, null);\n        String json = JSON.toJSONString(foo\n                , config, new PascalNameFilter()\n                , SerializerFeature.WriteNullBooleanAsFalse\n                , SerializerFeature.WriteNullNumberAsZero\n                , SerializerFeature.WriteNullStringAsEmpty\n                , SerializerFeature.WriteNullListAsEmpty\n                , SerializerFeature.BeanToArray\n        );\n        assertEquals(\"[0,false,[],\\\"\\\"]\", json);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/Issue1636.java",
    "content": "package com.alibaba.json.bvt.issue_1600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\npublic class Issue1636 extends TestCase {\n    public void test_for_issue_1() throws Exception {\n        Item1 item = JSON.parseObject(\"{\\\"modelId\\\":1001}\", Item1.class);\n        assertEquals(1001, item.modelId);\n    }\n\n    public void test_for_issue_2() throws Exception {\n        Item2 item = JSON.parseObject(\"{\\\"modelId\\\":1001}\", Item2.class);\n        assertEquals(1001, item.modelId);\n    }\n\n    public static class Item1 {\n        @JSONField\n        private int modelId;\n\n        @JSONCreator\n        public Item1(@JSONField int modelId){\n            // 这里为零\n            this.modelId=modelId;\n        }\n    }\n\n    public static class Item2 {\n        private int modelId;\n\n        @JSONCreator\n        public Item2(int modelId){\n            // 这里为零\n            this.modelId=modelId;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/Issue1644.java",
    "content": "package com.alibaba.json.bvt.issue_1600;\n\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\nimport java.sql.Time;\n\npublic class Issue1644 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSONObject jsonObject = new JSONObject();\n        jsonObject.put(\"time\", 1324138987429L);\n\n        Time time = jsonObject.getObject(\"time\", java.sql.Time.class);\n        assertEquals(1324138987429L, time.getTime());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/Issue1645.java",
    "content": "package com.alibaba.json.bvt.issue_1600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.time.LocalDateTime;\n\npublic class Issue1645 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String test = \"{\\\"name\\\":\\\"test\\\",\\\"testDateTime\\\":\\\"2017-12-08 14:55:16\\\"}\";\n        JSON.toJSONString(JSON.parseObject(test).toJavaObject(TestDateClass.class), SerializerFeature.PrettyFormat);\n    }\n\n    public static class TestDateClass{\n        public String name;\n        public LocalDateTime testDateTime;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/Issue1647.java",
    "content": "package com.alibaba.json.bvt.issue_1600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.PropertyNamingStrategy;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport junit.framework.TestCase;\n\nimport java.util.Arrays;\nimport java.util.List;\n\npublic class Issue1647 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Params params = new Params()\n        .setVerificationIds(Arrays.asList(new String[]{\"a\", \"b\"}))\n        .setWithFields(true);\n\n        String json = JSON.toJSONString(params);\n        System.out.println(json);\n        params = JSON.parseObject(json, Params.class);\n        assertEquals(\"{\\\"verification_ids\\\":[\\\"a\\\",\\\"b\\\"],\\\"with_fields\\\":true}\", JSON.toJSONString(params));\n    }\n\n    @JSONType(naming = PropertyNamingStrategy.SnakeCase)\n    public static class Params {\n\n        private boolean withFields;\n\n        private List<String> verificationIds;\n\n        public boolean isWithFields() {\n            return withFields;\n        }\n\n        public Params setWithFields(boolean withFields) {\n            this.withFields = withFields;\n            return this;\n        }\n\n        public List<String> getVerificationIds() {\n            return verificationIds;\n        }\n\n        public Params setVerificationIds(List<String> verificationIds) {\n            this.verificationIds = verificationIds;\n            return this;\n        }\n    }\n\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/Issue1649.java",
    "content": "package com.alibaba.json.bvt.issue_1600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\npublic class Issue1649 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Apple apple = new Apple();\n        String json = JSON.toJSONString(apple);\n        assertEquals(\"{\\\"color\\\":\\\"\\\",\\\"productCity\\\":\\\"\\\",\\\"size\\\":0}\", json);\n    }\n\n    @JSONType(serialzeFeatures = {SerializerFeature.WriteNullStringAsEmpty,SerializerFeature.WriteMapNullValue})\n    public static class Apple {\n\n        // @JSONField(serialzeFeatures = {SerializerFeature.WriteNullStringAsEmpty, SerializerFeature.WriteMapNullValue})\n        private String color;\n        private String productCity;\n        private int size;\n\n        public String getColor() {\n            return color;\n        }\n\n        public Apple setColor(String color) {\n            this.color = color;\n            return this;\n        }\n\n        public int getSize() {\n            return size;\n        }\n\n        public Apple setSize(int size) {\n            this.size = size;\n            return this;\n        }\n\n        public String getProductCity() {\n            return productCity;\n        }\n\n        public Apple setProductCity(String productCity) {\n            this.productCity = productCity;\n            return this;\n        }\n\n        @Override\n        public String toString() {\n            return JSON.toJSONString(this);\n        }\n\n        public static void main(String[] args) {\n            System.out.println(JSON.toJSONString(new Apple()));\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/Issue1649_private.java",
    "content": "package com.alibaba.json.bvt.issue_1600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\npublic class Issue1649_private extends TestCase {\n    public void test_for_issue() throws Exception {\n        Apple apple = new Apple();\n        String json = JSON.toJSONString(apple);\n        assertEquals(\"{\\\"color\\\":\\\"\\\",\\\"productCity\\\":\\\"\\\",\\\"size\\\":0}\", json);\n    }\n\n    @JSONType(serialzeFeatures = {SerializerFeature.WriteNullStringAsEmpty,SerializerFeature.WriteMapNullValue})\n    private static class Apple {\n\n        // @JSONField(serialzeFeatures = {SerializerFeature.WriteNullStringAsEmpty, SerializerFeature.WriteMapNullValue})\n        private String color;\n        private String productCity;\n        private int size;\n\n        public String getColor() {\n            return color;\n        }\n\n        public Apple setColor(String color) {\n            this.color = color;\n            return this;\n        }\n\n        public int getSize() {\n            return size;\n        }\n\n        public Apple setSize(int size) {\n            this.size = size;\n            return this;\n        }\n\n        public String getProductCity() {\n            return productCity;\n        }\n\n        public Apple setProductCity(String productCity) {\n            this.productCity = productCity;\n            return this;\n        }\n\n        @Override\n        public String toString() {\n            return JSON.toJSONString(this);\n        }\n\n        public static void main(String[] args) {\n            System.out.println(JSON.toJSONString(new Apple()));\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/Issue1653.java",
    "content": "package com.alibaba.json.bvt.issue_1600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.MapDeserializer;\nimport junit.framework.TestCase;\nimport org.apache.commons.collections4.map.*;\n\nimport java.lang.reflect.Type;\nimport java.util.Map;\n\npublic class Issue1653 extends TestCase {\n    public void test_for_issue() throws Exception {\nParserConfig config = new ParserConfig();\nMapDeserializer deserializer = new MapDeserializer() {\n    public Map<Object, Object> createMap(Type type) {\n        return new CaseInsensitiveMap();\n    }\n};\nconfig.putDeserializer(Map.class, deserializer);\n\nCaseInsensitiveMap<String, Object> root = (CaseInsensitiveMap) JSON.parseObject(\"{\\\"val\\\":{}}\", Map.class, config, Feature.CustomMapDeserializer);\nCaseInsensitiveMap subMap = (CaseInsensitiveMap) root.get(\"val\");\nassertEquals(0, subMap.size());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/Issue1657.java",
    "content": "package com.alibaba.json.bvt.issue_1600;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.HashMap;\n\npublic class Issue1657 extends TestCase {\n    public void test_for_issue() throws Exception {\n        HashMap map = JSON.parseObject(\"\\\"\\\"\", HashMap.class);\n        assertEquals(0, map.size());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/Issue1660.java",
    "content": "package com.alibaba.json.bvt.issue_1600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport java.util.*;\n\npublic class Issue1660 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n\n    public void test_for_issue() throws Exception {\n        Model model = new Model();\n        model.values.add(new Date(1513755213202L));\n\n        String json = JSON.toJSONString(model);\n        assertEquals(\"{\\\"values\\\":[\\\"2017-12-20\\\"]}\", json);\n    }\n\n    public static class Model {\n        @JSONField(format = \"yyyy-MM-dd\")\n        private List<Date> values = new ArrayList<Date>();\n\n        public List<Date> getValues() {\n            return values;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/Issue1662.java",
    "content": "package com.alibaba.json.bvt.issue_1600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.ObjectSerializer;\nimport junit.framework.TestCase;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\n\npublic class Issue1662 extends TestCase {\n    public void test_for_issue() throws Exception {\n\n        ParserConfig.getGlobalInstance().putDeserializer(Model.class, new ModelValueDeserializer());\n        String json = \"{\\\"value\\\":123}\";\n        Model model = JSON.parseObject(json, Model.class);\n        assertEquals(\"{\\\"value\\\":\\\"12300元\\\"}\",JSON.toJSONString(model));\n\n    }\n\n    public static class Model {\n        @JSONField(serializeUsing = ModelValueSerializer.class, deserializeUsing = ModelValueDeserializer.class)\n        public int value;\n    }\n\n    public static class ModelValueSerializer implements ObjectSerializer {\n        public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType,\n                          int features) throws IOException {\n            Integer value = (Integer) object;\n            String text = value + \"元\";\n            serializer.write(text);\n        }\n    }\n\n    public static class ModelValueDeserializer implements ObjectDeserializer {\n\n        public Model deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n            JSONObject obj = (JSONObject)parser.parse();\n            Model model = new Model();\n            model.value = obj.getInteger(\"value\") * 100;\n            return model;\n        }\n\n        public int getFastMatchToken() {\n            return 0;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/Issue1662_1.java",
    "content": "package com.alibaba.json.bvt.issue_1600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.ObjectSerializer;\nimport junit.framework.TestCase;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\n\npublic class Issue1662_1 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"{\\\"value\\\":123}\";\n        Model model = JSON.parseObject(json, Model.class);\n        assertEquals(\"{\\\"value\\\":\\\"12300元\\\"}\",JSON.toJSONString(model));\n\n    }\n\n    public static class Model {\n        @JSONField(serializeUsing = ModelValueSerializer.class, deserializeUsing = ModelValueDeserializer.class)\n        public int value;\n    }\n\n    public static class ModelValueSerializer implements ObjectSerializer {\n        public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType,\n                          int features) throws IOException {\n            Integer value = (Integer) object;\n            String text = value + \"元\";\n            serializer.write(text);\n        }\n    }\n\n    public static class ModelValueDeserializer implements ObjectDeserializer {\n\n        public Integer deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n            Object val = parser.parse();\n            return ((Integer) val).intValue() * 100;\n        }\n\n        public int getFastMatchToken() {\n            return 0;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/Issue1665.java",
    "content": "package com.alibaba.json.bvt.issue_1600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.util.TypeUtils;\nimport junit.framework.TestCase;\n\nimport java.util.Collection;\n\npublic class Issue1665 extends TestCase {\n    public void test_for_issue() throws Exception {\n        TypeReference<Collection<Model>> typeReference = new TypeReference<Collection<Model>>() {};\n\n\n        Collection<Model> collection = TypeUtils.cast(JSON.parse(\"[{\\\"id\\\":101}]\"), typeReference.getType(), ParserConfig.getGlobalInstance());\n        assertEquals(1, collection.size());\n        Model model = collection.iterator().next();\n        assertEquals(101, model.id);\n    }\n\n    public static class Model {\n        public int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/Issue1679.java",
    "content": "package com.alibaba.json.bvt.issue_1600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\npublic class Issue1679 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n\n    public void test_for_issue() throws Exception {\n        String json = \"{\\\"create\\\":\\\"2018-01-10 08:30:00\\\"}\";\n        User user = JSON.parseObject(json, User.class);\n        assertEquals(\"\\\"2018-01-10T08:30:00+08:00\\\"\", JSON.toJSONString(user.create, SerializerFeature.UseISO8601DateFormat));\n    }\n\n    public static class User{\n        public Date create;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/Issue1683.java",
    "content": "package com.alibaba.json.bvt.issue_1600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\npublic class Issue1683 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String line = \"[2, \\\"浪漫奇侠\\\", \\\"雨天不打伞\\\", 4536]\";\n        BookDO book = JSON.parseObject(line, BookDO.class, Feature.SupportArrayToBean);\n        assertEquals(2L, book.bookId.longValue());\n        assertEquals(\"浪漫奇侠\", book.bookName);\n        assertEquals(\"雨天不打伞\", book.authorName);\n        assertEquals(4536, book.wordCount.intValue());\n    }\n\n    @JSONType(orders = {\"bookId\", \"bookName\", \"authorName\", \"wordCount\"})\n    public static class BookDO {\n\n        private Long bookId;\n\n        private String bookName;\n\n        private String authorName;\n\n        private Integer wordCount;\n\n\n        public Long getBookId() {\n            return bookId;\n        }\n\n        public void setBookId(Long bookId) {\n            this.bookId = bookId;\n        }\n\n        public String getBookName() {\n            return bookName;\n        }\n\n        public void setBookName(String bookName) {\n            this.bookName = bookName;\n        }\n\n        public String getAuthorName() {\n            return authorName;\n        }\n\n        public void setAuthorName(String authorName) {\n            this.authorName = authorName;\n        }\n\n        public Integer getWordCount() {\n            return wordCount;\n        }\n\n        public void setWordCount(Integer wordCount) {\n            this.wordCount = wordCount;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/Issue_for_gaorui.java",
    "content": "package com.alibaba.json.bvt.issue_1600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\npublic class Issue_for_gaorui extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"{\\\"@type\\\":\\\"java.util.HashMap\\\",\\\"COUPON\\\":[{\\\"@type\\\":\\\"com.alibaba.json.bvt.issue_1600.Issue_for_gaorui.PromotionTermDetail\\\",\\\"activityId\\\":\\\"1584034\\\",\\\"choose\\\":true,\\\"couponId\\\":1251068987,\\\"couponType\\\":\\\"limitp\\\",\\\"match\\\":true,\\\"realPrice\\\":{\\\"amount\\\":0.6,\\\"currency\\\":\\\"USD\\\"}}],\\\"grayTrade\\\":\\\"true\\\"}\";\n\n        JSON.parseObject(json, Object.class, Feature.SupportAutoType);\n    }\n\n    public static class PromotionTermDetail {\n        /**\n         * 卡券Id\n         */\n        private Long couponId;\n        /**\n         * 营销Id\n         */\n        private String promotionId;\n        /**\n         * 实际单价\n         */\n        private Money realPrice;\n        /**\n         * 活动Id\n         */\n        private String activityId;\n\n        /**\n         * 卡券类型\n         */\n        private String couponType;\n\n        /**\n         * 是否能够获取到该优惠\n         */\n        private boolean isMatch = false;\n        /**\n         * 是否选择了该优惠\n         */\n        private boolean isChoose = false;\n        /**\n         * 未获取到优惠的原因\n         */\n        private String reasonForLose;\n        /**\n         * 未获取优惠的标识码\n         */\n        private String codeForLose;\n\n        public Long getCouponId() {\n            return couponId;\n        }\n\n        public void setCouponId(Long couponId) {\n            this.couponId = couponId;\n        }\n\n        public String getPromotionId() {\n            return promotionId;\n        }\n\n        public void setPromotionId(String promotionId) {\n            this.promotionId = promotionId;\n        }\n\n        public Money getRealPrice() {\n            return realPrice;\n        }\n\n        public void setRealPrice(Money realPrice) {\n            this.realPrice = realPrice;\n        }\n\n        public String getActivityId() {\n            return activityId;\n        }\n\n        public void setActivityId(String activityId) {\n            this.activityId = activityId;\n        }\n\n        public String getCouponType() {\n            return couponType;\n        }\n\n        public void setCouponType(String couponType) {\n            this.couponType = couponType;\n        }\n\n        public boolean isMatch() {\n            return isMatch;\n        }\n\n        public void setMatch(boolean match) {\n            isMatch = match;\n        }\n\n        public boolean isChoose() {\n            return isChoose;\n        }\n\n        public void setChoose(boolean choose) {\n            isChoose = choose;\n        }\n\n        public String getReasonForLose() {\n            return reasonForLose;\n        }\n\n        public void setReasonForLose(String reasonForLose) {\n            this.reasonForLose = reasonForLose;\n        }\n\n        public String getCodeForLose() {\n            return codeForLose;\n        }\n\n        public void setCodeForLose(String codeForLose) {\n            this.codeForLose = codeForLose;\n        }\n    }\n\n    public static class Money {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/issue_1699/TestJson.java",
    "content": "package com.alibaba.json.bvt.issue_1600.issue_1699;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport junit.framework.TestCase;\n\nimport java.io.Serializable;\n\npublic class TestJson extends TestCase {\n\n    public void test_for_issue() {\n        ParserConfig config = new ParserConfig();\n        config.setAutoTypeSupport(true);\n\n        System.out.println(JSON.VERSION);\n\n        String event1 = \"{\\\"@type\\\":\\\"com.alibaba.json.bvt.issue_1600.issue_1699.obj.RatingDetailBO\\\",\\\"amount\\\":285.600000,\\\"billId\\\":3945,\\\"bizId\\\":\\\"6000007==201712==USER_ID==2049884395&&CONTRACT_NO==\\\\\\\"no1513922344271\\\\\\\"\\\",\\\"bizTime\\\":\\\"2017-12-31 00:00:00\\\",\\\"bizType\\\":\\\"6000007\\\",\\\"currency\\\":\\\"CNY\\\",\\\"dealTime\\\":\\\"2017-12-23 14:11:03\\\",\\\"detailType\\\":\\\"CYCLE_CHARGING\\\",\\\"extendInfo\\\":{\\\"@type\\\":\\\"java.util.LinkedHashMap\\\",\\\"BUY_AMOUNT\\\":\\\"3\\\",\\\"P_BIZ_ID\\\":\\\"USER_ID==2049884395&&CONTRACT_NO==\\\\\\\"no1513922344271\\\\\\\"\\\",\\\"SETTLE_SIDE\\\":\\\"654321\\\",\\\"SETTLE_CYCLE_TYPE\\\":\\\"3\\\",\\\"AUCTION_PRICE\\\":\\\"119\\\",\\\"CALCULATE_RANGE\\\":\\\"STORE\\\",\\\"TOTAL_NUM\\\":\\\"1\\\",\\\"BILL_CYCLE\\\":\\\"201712\\\",\\\"IS_PRE_CHARGING\\\":\\\"false\\\",\\\"BRANCH_SHOP\\\":\\\"branchShop1\\\",\\\"CONTRACT_TYPE\\\":\\\"HEMA_CHARGING_PROD\\\",\\\"stepRateType\\\":\\\"3\\\",\\\"SOURCE_TYPE\\\":\\\"PURCHASE_ADJUST\\\",\\\"SETTLE_SIDE_NICK\\\":\\\"测试结算主体\\\",\\\"express_value\\\":\\\"USER_ID==2049884395&&CONTRACT_NO==\\\\\\\"no1513922344271\\\\\\\"\\\",\\\"BIZ_TIME\\\":\\\"2017-12-22 13:59:05\\\",\\\"TRADE_ID\\\":\\\"1513922344273\\\",\\\"QUANTITY\\\":\\\"3.000000\\\",\\\"MES_RECEIVE_TIME\\\":\\\"2017-12-22 13:59:05\\\",\\\"UN_TAX_UNIT_PRICE\\\":\\\"100.000000\\\",\\\"AUCTION_ID\\\":\\\"123\\\",\\\"AUCTION_NAME\\\":\\\"测试商品\\\",\\\"rate_value\\\":\\\"{\\\\\\\"extendInfo\\\\\\\":{},\\\\\\\"intervalValues\\\\\\\":[{\\\\\\\"max\\\\\\\":600.000000,\\\\\\\"min\\\\\\\":0.000000,\\\\\\\"rate\\\\\\\":0.600000},{\\\\\\\"max\\\\\\\":1000.000000,\\\\\\\"min\\\\\\\":600.000000,\\\\\\\"rate\\\\\\\":0.300000},{\\\\\\\"max\\\\\\\":999999999999.000000,\\\\\\\"min\\\\\\\":1000.000000,\\\\\\\"rate\\\\\\\":0.100000}]}\\\",\\\"CAT_ID\\\":\\\"16\\\",\\\"UNIT\\\":\\\"kilometer\\\",\\\"TERM_NAME\\\":\\\"盒马.合同返利.促销推广费\\\",\\\"USER_ID\\\":\\\"2049884395\\\",\\\"UNIT_PRICE\\\":\\\"119.000000\\\",\\\"tbRuleCode\\\":\\\"HM_SETTLE_CHARGING\\\",\\\"AMOUNT\\\":\\\"357.000000\\\",\\\"CAT_NAME\\\":\\\"水果\\\",\\\"EXTERNAL_NO\\\":\\\"HM==1513922344273\\\",\\\"CHANNEL\\\":\\\"online\\\",\\\"is_default_rate\\\":\\\"false\\\",\\\"CURRENCY\\\":\\\"CNY\\\",\\\"rate_rule_id\\\":\\\"300000531\\\",\\\"OTHER_USER_NICK\\\":\\\"甲方\\\",\\\"RATE_TYPE\\\":\\\"14\\\",\\\"ITEM_NAME\\\":\\\"盒马.促销推广费\\\",\\\"rate_rule_inst_id\\\":\\\"1009129180821\\\",\\\"TAX_RATE\\\":\\\"0.190000\\\",\\\"ITEM_CODE\\\":\\\"BILL_HM_6000007\\\",\\\"CONTRACT_SIDE\\\":\\\"12345\\\",\\\"UNTAX_AMOUNT\\\":\\\"300.000000\\\",\\\"CONTRACT_VERSION\\\":\\\"V001\\\",\\\"CONTRACT_NO\\\":\\\"no1513922344271\\\",\\\"P_TRADE_ID\\\":\\\"1513922344273\\\"},\\\"gmtCreate\\\":\\\"2017-12-23 14:11:03\\\",\\\"gmtModified\\\":\\\"2017-12-23 14:11:03\\\",\\\"id\\\":6235300020395,\\\"indexNum\\\":0,\\\"innerId\\\":6300120395,\\\"innerTable\\\":\\\"SETTLE_DATA\\\",\\\"isJoin\\\":\\\"FALSE\\\",\\\"itemId\\\":90000000007031,\\\"mesId\\\":3235,\\\"mesReceiveTime\\\":\\\"2017-12-22 13:59:05\\\",\\\"outBizId\\\":\\\"USER_ID==2049884395&&CONTRACT_NO==\\\\\\\"no1513922344271\\\\\\\"\\\",\\\"pTradeId\\\":3235,\\\"priority\\\":0,\\\"proration\\\":0.6,\\\"quantity\\\":476.000000,\\\"rateDefineId\\\":40000443,\\\"rateParams\\\":{\\\"@type\\\":\\\"java.util.LinkedHashMap\\\"},\\\"status\\\":\\\"SUCCESS\\\",\\\"tradeId\\\":3761,\\\"userId\\\":2049884395,\\\"userNick\\\":\\\"乙方\\\",\\\"version\\\":1}\";\n        Serializable obj = JSON.parseObject(event1, Serializable.class, config);\n        System.out.println(obj);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/issue_1699/def/FeeTypeMEnum.java",
    "content": "package com.alibaba.json.bvt.issue_1600.issue_1699.def;\n\npublic enum FeeTypeMEnum {\n    TRADE,\n    REFUND;\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/issue_1699/def/InnerTypeMEnum.java",
    "content": "package com.alibaba.json.bvt.issue_1600.issue_1699.def;\n\npublic enum InnerTypeMEnum {\n\n    CHARGE_ORDER,\n\n    PAY_ORDER,\n\n    PAY_ORDER_DTL,\n\n    SUB_DETAIL,\n\n    BILL,\n    \n    FC_BILL,\n    \n    STEP_OPS_BILL,\n    \n    FC_USER_BILL,\n\n    INIT,\n\n    WRITEOFFBILL,\n    GW_MSG,\n\n    REFUND_ORDER,\n    RATING_DETAIL,\n\n    COUPON,\n\n    SETTLE_BILL,\n    \n    SETTLEMENT_BILL,\n\n    SETTLEMENT_BILL_SUM,\n    \n    WORKFLOW_INSTANCE,\n    \n    CONTRACT,\n\n    WITHDRAW_ORDER,\n\n    BANK_TRANSFER,\n    \n    SOURCE_DATA,\n\n    SETTLE_DATA,\n    \n    CONTRACT_TERM_INST,\n\n    MERGE_PAY_ORDER,\n\n    FUNDS_TRANSFER_ORDER,\n\n    SETTLE_POOL,\n\n    SETTLE_POOL_JOURNAL,\n\n    OFFLINE_REMITTANCE,\n\n    OUT_SYSTEM_TRANSFER,\n\n    HJ_EXECUTE_RULE,\n\n    HJ_DISBURSE_INFO,\n\n    USER_BILL,\n\n    HJ_EXECUTE_PLAN\n\n    ;\n\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/issue_1699/def/RatingDetailIsJoinMEnum.java",
    "content": "package com.alibaba.json.bvt.issue_1600.issue_1699.def;\n\nimport java.util.ArrayList;\nimport java.util.LinkedHashMap;\nimport java.util.List;\nimport java.util.Map;\n\npublic enum RatingDetailIsJoinMEnum {\n\n    FALSE,\n    TRUE;\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/issue_1699/def/RatingDetailStatusMEnum.java",
    "content": "package com.alibaba.json.bvt.issue_1600.issue_1699.def;\n\npublic enum RatingDetailStatusMEnum {\n\n    INIT,\n    SUCCESS,\n    FAIL,\n    WAIT;\n\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/issue_1699/def/RatingDetailTypeMEnum.java",
    "content": "package com.alibaba.json.bvt.issue_1600.issue_1699.def;\n\nimport java.util.ArrayList;\nimport java.util.LinkedHashMap;\nimport java.util.List;\nimport java.util.Map;\n\npublic enum RatingDetailTypeMEnum {\n\n    COMM,\n    FC,\n    PRE_FC,\n    USAGE,\n    HPTX,\n    SUB_MONTH_FC,\n    COMM_DAY_FC,\n    COMM_MONTH_FC,\n    ADJUST,\n    FOREX_COMM,\n    COMM_REALTIME_FC,\n    OVERSETTLE_COMM,\n    FC_RATING,\n    PRE_TREAT,\n    REALTIME_CHARGING,\n    CYCLE_CHARGING,\n    SHARE_CHARGING,\n    ;\n\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1600/issue_1699/obj/RatingDetailBO.java",
    "content": "package com.alibaba.json.bvt.issue_1600.issue_1699.obj;\n\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.json.bvt.issue_1600.issue_1699.def.InnerTypeMEnum;\nimport com.alibaba.json.bvt.issue_1600.issue_1699.def.RatingDetailIsJoinMEnum;\nimport com.alibaba.json.bvt.issue_1600.issue_1699.def.*;\n\nimport java.io.Serializable;\nimport java.math.BigDecimal;\nimport java.util.Currency;\nimport java.util.Date;\nimport java.util.Map;\n\n/**\n *\n */\npublic class RatingDetailBO implements Serializable {\n\n    private static final long serialVersionUID = 6413142622719509002L;\n\n    /**\n     * *\n     */\n    private Long id;\n\n    /**\n     * 用户ID\n     */\n    private Long userId;\n\n    /**\n     * 用户NICK\n     */\n    private String userNick;\n\n    /**\n     * 消息ID\n     */\n    private Long mesId;\n\n    /**\n     * 事件类型， 枚举值参照：ra_event_object.type\n     */\n    private String eventType;\n\n    /**\n     * 唯一去重号\n     */\n    private String bizId;\n\n    /**\n     * 序列号\n     */\n    private Integer indexNum;\n\n    /**\n     * 业务类型（同原始消息)\n     */\n    private String bizType;\n\n    /**\n     * 业务交易号\n     */\n    private String outBizId;\n\n    /**\n     * 主订单ID\n     */\n    private Long pTradeId;\n\n    /**\n     * 子订单ID\n     */\n    private Long tradeId;\n\n    /**\n     * 业务交易时间\n     */\n    private Date bizTime;\n\n    /**\n     * 消息接收时间\n     */\n    private Date mesReceiveTime;\n\n    /**\n     * 处理时间\n     */\n    private Date dealTime;\n\n    /**\n     * 详单科目编号\n     */\n    private Long itemId;\n\n    /**\n     * 详单类型： 1、普通详单 2、分成详单 3、预收分成详单\n     */\n    private RatingDetailTypeMEnum detailType;\n\n    /**\n     * 原始金额\n     */\n    private BigDecimal quantity;\n\n    /**\n     * 金额\n     */\n    private BigDecimal amount;\n\n    /**\n     * 费率编号\n     */\n    private Long rateDefineId;\n\n    /**\n     * 计费因子\n     */\n    private BigDecimal proration;\n\n    /**\n     * 产品编号\n     */\n    private Long prodId;\n\n    /**\n     * 扩展信息\n     */\n    private Map<String, String> extendInfo;\n\n    private Map<String, String> rateParams;\n\n    private Currency currency;\n\n    private InnerTypeMEnum innerTable;\n    private Long innerId;\n\n    public Map<String, String> getRateParams() {\n        return rateParams;\n    }\n\n    public void setRateParams(Map<String, String> rateParams) {\n        this.rateParams = rateParams;\n    }\n\n    public Currency getCurrency() {\n        return currency;\n    }\n\n    public void setCurrency(Currency currency) {\n        this.currency = currency;\n    }\n\n    public InnerTypeMEnum getInnerTable() {\n        return innerTable;\n    }\n\n    public void setInnerTable(InnerTypeMEnum innerTable) {\n        this.innerTable = innerTable;\n    }\n\n    public Long getInnerId() {\n        return innerId;\n    }\n\n    public void setInnerId(Long innerId) {\n        this.innerId = innerId;\n    }\n\n    public void setExtendInfo(Map<String, String> extendInfo) {\n        this.extendInfo = extendInfo;\n    }\n\n    /**\n     * 环境标识\n     */\n    private String ownSign;\n\n    /**\n     * 帐单ID， 记账结束后回写\n     */\n    private Long billId;\n\n    /**\n     * 版本编号\n     */\n    private Integer version;\n\n    /**\n     * 是否合并付款： 0、否 1、是\n     */\n    private RatingDetailIsJoinMEnum isJoin;\n\n    /**\n     * 优先级， 值越大，优先级越高\n     */\n    private Integer priority;\n\n    /**\n     * 状态： 0、初始 1、处理成功； 2、处理失败； 3、等待合并；\n     */\n    private RatingDetailStatusMEnum status;\n\n    /**\n     * 创建时间\n     */\n    private Date gmtCreate;\n\n    /**\n     * 修改时间\n     */\n    private Date gmtModified;\n\n    /**\n     * 交易项目：0、交易；1、退款\n     */\n    private FeeTypeMEnum feeType;\n\n    public Long getId() {\n        return id;\n    }\n\n    public void setId(Long id) {\n        this.id = id;\n    }\n\n    public Long getUserId() {\n        return userId;\n    }\n\n    public void setUserId(Long userId) {\n        this.userId = userId;\n    }\n\n    public String getUserNick() {\n        return userNick;\n    }\n\n    public void setUserNick(String userNick) {\n        this.userNick = userNick;\n    }\n\n    public Long getMesId() {\n        return mesId;\n    }\n\n    public void setMesId(Long mesId) {\n        this.mesId = mesId;\n    }\n\n    public String getEventType() {\n        return eventType;\n    }\n\n    public void setEventType(String eventType) {\n        this.eventType = eventType;\n    }\n\n    public String getBizId() {\n        return bizId;\n    }\n\n    public void setBizId(String bizId) {\n        this.bizId = bizId;\n    }\n\n    public String getBizType() {\n        return bizType;\n    }\n\n    public void setBizType(String bizType) {\n        this.bizType = bizType;\n    }\n\n    public String getOutBizId() {\n        return outBizId;\n    }\n\n    public void setOutBizId(String outBizId) {\n        this.outBizId = outBizId;\n    }\n\n    public Long getpTradeId() {\n        return pTradeId;\n    }\n\n    public void setpTradeId(Long pTradeId) {\n        this.pTradeId = pTradeId;\n    }\n\n    public Long getTradeId() {\n        return tradeId;\n    }\n\n    public void setTradeId(Long tradeId) {\n        this.tradeId = tradeId;\n    }\n\n    public Date getBizTime() {\n        return bizTime;\n    }\n\n    public void setBizTime(Date bizTime) {\n        this.bizTime = bizTime;\n    }\n\n    public Date getMesReceiveTime() {\n        return mesReceiveTime;\n    }\n\n    public void setMesReceiveTime(Date mesReceiveTime) {\n        this.mesReceiveTime = mesReceiveTime;\n    }\n\n    public Date getDealTime() {\n        return dealTime;\n    }\n\n    public void setDealTime(Date dealTime) {\n        this.dealTime = dealTime;\n    }\n\n    public Long getItemId() {\n        return itemId;\n    }\n\n    public void setItemId(Long itemId) {\n        this.itemId = itemId;\n    }\n\n    public Long getRateDefineId() {\n        return rateDefineId;\n    }\n\n    public void setRateDefineId(Long rateDefineId) {\n        this.rateDefineId = rateDefineId;\n    }\n\n    public Long getProdId() {\n        return prodId;\n    }\n\n    public void setProdId(Long prodId) {\n        this.prodId = prodId;\n    }\n\n    public String getOwnSign() {\n        return ownSign;\n    }\n\n    public void setOwnSign(String ownSign) {\n        this.ownSign = ownSign;\n    }\n\n    public Long getBillId() {\n        return billId;\n    }\n\n    public void setBillId(Long billId) {\n        this.billId = billId;\n    }\n\n    public Integer getVersion() {\n        return version;\n    }\n\n    public void setVersion(Integer version) {\n        this.version = version;\n    }\n\n    public Integer getPriority() {\n        return priority;\n    }\n\n    public void setPriority(Integer priority) {\n        this.priority = priority;\n    }\n\n    public Date getGmtCreate() {\n        return gmtCreate;\n    }\n\n    public void setGmtCreate(Date gmtCreate) {\n        this.gmtCreate = gmtCreate;\n    }\n\n    public Date getGmtModified() {\n        return gmtModified;\n    }\n\n    public void setGmtModified(Date gmtModified) {\n        this.gmtModified = gmtModified;\n    }\n\n    public RatingDetailTypeMEnum getDetailType() {\n        return detailType;\n    }\n\n    public void setDetailType(RatingDetailTypeMEnum detailType) {\n        this.detailType = detailType;\n    }\n\n    public RatingDetailIsJoinMEnum getIsJoin() {\n        return isJoin;\n    }\n\n    public void setIsJoin(RatingDetailIsJoinMEnum isJoin) {\n        this.isJoin = isJoin;\n    }\n\n    public RatingDetailStatusMEnum getStatus() {\n        return status;\n    }\n\n    public void setStatus(RatingDetailStatusMEnum status) {\n        this.status = status;\n    }\n\n    public FeeTypeMEnum getFeeType() {\n        return feeType;\n    }\n\n    public void setFeeType(FeeTypeMEnum feeType) {\n        this.feeType = feeType;\n    }\n\n    public Map<String, String> getExtendInfo() {\n        return extendInfo;\n    }\n\n    public BigDecimal getQuantity() {\n        return quantity;\n    }\n\n    public void setQuantity(BigDecimal quantity) {\n        this.quantity = quantity;\n    }\n\n    public BigDecimal getAmount() {\n        return amount;\n    }\n\n    public void setAmount(BigDecimal amount) {\n        this.amount = amount;\n    }\n\n    public BigDecimal getProration() {\n        return proration;\n    }\n\n    public void setProration(BigDecimal proration) {\n        this.proration = proration;\n    }\n\n    public Integer getIndexNum() {\n        return indexNum;\n    }\n\n    public void setIndexNum(Integer indexNum) {\n        this.indexNum = indexNum;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1700/Issue1701.java",
    "content": "package com.alibaba.json.bvt.issue_1700;\n\nimport com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;\nimport org.junit.Before;\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.context.annotation.ComponentScan;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.http.HttpHeaders;\nimport org.springframework.http.HttpStatus;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.ResponseEntity;\nimport org.springframework.http.converter.HttpMessageConverter;\nimport org.springframework.test.context.ContextConfiguration;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\nimport org.springframework.test.web.servlet.MockMvc;\nimport org.springframework.test.web.servlet.setup.MockMvcBuilders;\nimport org.springframework.web.bind.annotation.*;\nimport org.springframework.web.context.WebApplicationContext;\nimport org.springframework.web.filter.CharacterEncodingFilter;\nimport org.springframework.web.servlet.config.annotation.EnableWebMvc;\nimport org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;\n\nimport java.io.FileNotFoundException;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.util.Arrays;\nimport java.util.List;\n\nimport static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;\nimport static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;\nimport static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;\n\n@RunWith(SpringJUnit4ClassRunner.class)\n@WebAppConfiguration\n@ContextConfiguration\npublic class Issue1701 {\n\n    @Autowired\n    private WebApplicationContext wac;\n\n    private MockMvc mockMvc;\n\n    @Before\n    public void setup() {\n        this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac) //\n                .addFilter(new CharacterEncodingFilter(\"UTF-8\", true)) // 设置服务器端返回的字符集为：UTF-8\n                .build();\n    }\n\n\n    @RestController\n    @RequestMapping()\n    public static class BeanController {\n\n        @PostMapping(path = \"/download\", produces = \"application/octet-stream;charset=UTF-8\")\n        public @ResponseBody\n        ResponseEntity<byte[]> download(@RequestBody TestBean testBean) {\n\n            byte[] body = new byte[0];\n            InputStream in;\n            try {\n                in = Issue1701.class.getClassLoader().getResourceAsStream(testBean.getName());\n                body = new byte[in.available()];\n                in.read(body);\n\n            } catch (FileNotFoundException e) {\n                e.printStackTrace();\n            } catch (IOException e) {\n                e.printStackTrace();\n            }\n\n            HttpHeaders headers = new HttpHeaders();\n            headers.add(\"Content-Disposition\", \"attachment;filename=1.txt\");\n            HttpStatus statusCode = HttpStatus.OK;\n            ResponseEntity<byte[]> response = new ResponseEntity<byte[]>(body, headers, statusCode);\n\n            return response;\n        }\n    }\n\n\n    @ComponentScan(basePackages = \"com.alibaba.json.bvt.issue_1700\")\n    @Configuration\n    @EnableWebMvc\n    public static class WebMvcConfig extends WebMvcConfigurerAdapter {\n\n        @Override\n        public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {\n            FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();\n            converter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON_UTF8));\n            converters.add(0, converter);\n        }\n    }\n\n    @Test\n    public void testBean() throws Exception {\n        mockMvc.perform(\n                (post(\"/download\").characterEncoding(\"UTF-8\")\n                        .contentType(MediaType.APPLICATION_JSON_UTF8)\n                        .content(\"{\\\"name\\\": \\\"1.txt\\\"}\")\n                )).andExpect(status().isOk()).andDo(print());\n\n    }\n\n    static class TestBean {\n\n        private String name;\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1700/Issue1723.java",
    "content": "package com.alibaba.json.bvt.issue_1700;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\npublic class Issue1723 extends TestCase {\n    public void test_for_issue() throws Exception {\n        User user = JSON.parseObject(\"{\\\"age\\\":\\\"0.9390308260917664\\\"}\", User.class);\n        assertEquals(0.9390308260917664F, user.age);\n    }\n\n    public void test_for_issue_1() throws Exception {\n        User user = JSON.parseObject(\"{\\\"age\\\":\\\"8.200000000000001\\\"}\", User.class);\n        assertEquals(8.200000000000001F, user.age);\n    }\n\n    public void test_for_issue_2() throws Exception {\n        User user = JSON.parseObject(\"[\\\"8.200000000000001\\\"]\", User.class, Feature.SupportArrayToBean);\n        assertEquals(8.200000000000001F, user.age);\n    }\n\n    public static class User {\n        private float age;\n        public float getAge() {\n            return age;\n        }\n        public void setAge(float age) {\n            this.age = age;\n        }\n        @Override\n        public String toString() {\n            return \"User{\" +\n                    \"age=\" + age +\n                    '}';\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1700/Issue1725.java",
    "content": "package com.alibaba.json.bvt.issue_1700;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic class Issue1725 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Map<String, Object> map= new HashMap<String, Object>();\n        map.put(\"enumField\", 0);\n\n        AbstractBean bean = JSON.parseObject(JSON.toJSONString(map), ConcreteBean.class);\n        assertEquals(FieldEnum.A, bean.enumField);\n    }\n\n    public static class AbstractBean {\n        public FieldEnum enumField;\n    }\n\n    public static class ConcreteBean extends AbstractBean {\n\n    }\n\n    public static enum FieldEnum { A, B }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1700/Issue1727.java",
    "content": "package com.alibaba.json.bvt.issue_1700;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport java.util.Date;\n\npublic class Issue1727 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String jsonString = \"{\\\"gmtCreate\\\":\\\"20180131214157805-0800\\\"}\";\n        JSONObject.parseObject(jsonString, Model.class); //正常解析\n        JSONObject.toJavaObject(JSON.parseObject(jsonString), Model.class);\n    }\n\n    public static class Model {\n        @JSONField(format=\"yyyyMMddHHmmssSSSZ\")\n        public Date gmtCreate;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1700/Issue1733_jsonpath.java",
    "content": "package com.alibaba.json.bvt.issue_1700;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\nimport java.math.BigDecimal;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class Issue1733_jsonpath extends TestCase {\n    public void test_for_issue() throws Exception {\n        Order order = new Order();\n        order.books.add(new Book(10, \"动漫\"));\n        order.books.add(new Book(50, \"科幻\"));\n        order.books.add(new Book(60, \"历史\"));\n\n        String path = \"$.books[price>20 && category = '科幻']\";\n        List result = (List) JSONPath.eval(order, path);\n        assertSame(1, result.size());\n        assertSame(order.books.get(1), result.get(0));\n    }\n\n    public void test_for_issue_or() throws Exception {\n        Order order = new Order();\n        order.books.add(new Book(10, \"动漫\"));\n        order.books.add(new Book(50, \"科幻\"));\n        order.books.add(new Book(60, \"历史\"));\n\n        String path = \"$.books[price>20||category = '科幻']\";\n        List result = (List) JSONPath.eval(order, path);\n        assertEquals(2, result.size());\n        assertSame(order.books.get(1), result.get(0));\n        assertSame(order.books.get(2), result.get(1));\n    }\n\n    public void test_for_issue_or_1() throws Exception {\n        Order order = new Order();\n        order.books.add(new Book(10, \"动漫\"));\n        order.books.add(new Book(50, \"科幻\"));\n        order.books.add(new Book(60, \"历史\"));\n\n        String path = \"$.books[category = '动漫' ||category = '科幻']\";\n        List result = (List) JSONPath.eval(order, path);\n        assertEquals(2, result.size());\n        assertSame(order.books.get(0), result.get(0));\n        assertSame(order.books.get(1), result.get(1));\n    }\n\n    public static class Order {\n        public List<Book> books = new ArrayList<Book>();\n\n    }\n\n    public static class Book {\n        public BigDecimal price;\n        public String category;\n\n        public Book() {\n\n        }\n\n        public Book(int price, String category) {\n            this(new BigDecimal(price), category);\n        }\n\n        public Book(BigDecimal price, String category) {\n            this.price = price;\n            this.category = category;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1700/Issue1739.java",
    "content": "package com.alibaba.json.bvt.issue_1700;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\npublic class Issue1739 extends TestCase {\n    public void test_for_issue() throws Exception {\n        M0 model = new M0();\n        model.data = new JSONObject();\n\n        String json = JSON.toJSONString(model);\n        assertEquals(\"{\\\"data\\\":{}}\", json);\n    }\n\n    public void test_for_issue_1() throws Exception {\n        M1 model = new M1();\n        model.data = new JSONObject();\n\n        String json = JSON.toJSONString(model);\n        assertEquals(\"{}\", json);\n    }\n\n    public static class M0 {\n        private JSONObject data;\n\n        @JSONField(deserialize = false)\n        public JSONObject getData() {\n            return data;\n        }\n\n        public void setData(JSONObject data) {\n            this.data = data;\n        }\n    }\n\n    public static class M1 {\n        private JSONObject data;\n\n        @JSONField(serialize = false)\n        public JSONObject getData() {\n            return data;\n        }\n\n        public void setData(JSONObject data) {\n            this.data = data;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1700/Issue1761.java",
    "content": "package com.alibaba.json.bvt.issue_1700;\n\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\npublic class Issue1761 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSONObject jsonObject = new JSONObject();\n        jsonObject.put(\"null\",\"\");\n        double d = jsonObject.getDoubleValue(\"null\");\n        assertEquals(d, 0.0D);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1700/Issue1763.java",
    "content": "package com.alibaba.json.bvt.issue_1700;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Type;\nimport java.util.List;\nimport java.util.Map;\n\npublic class Issue1763 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String s = \"{\\\"result\\\":{\\\"modelList\\\":[{\\\"sourceId\\\":\\\"81900002\\\"},{\\\"sourceId\\\":\\\"81900002\\\"},{\\\"sourceId\\\":\\\"81892012\\\"},{\\\"sourceId\\\":\\\"2062014\\\"},{\\\"sourceId\\\":\\\"2082007\\\"},{\\\"sourceId\\\":\\\"2082007\\\"},{\\\"sourceId\\\":\\\"2082007\\\"}]}}\";\n\n\n        Method method = ProcurementOrderInteractiveServiceForCloud.class.getMethod(\"queryOrderMateriel\", Map.class);\n        Type type = method.getGenericReturnType();\n\n        BaseResult<InteractiveOrderMaterielQueryResult> baseResult = JSON.parseObject(s, type);\n        InteractiveOrderMaterielQueryResult result = baseResult.getResult();\n\n        assertEquals(7, result.getModelList().size());\n        assertEquals(InteractiveOrderMaterielModel.class, result.getModelList().get(0).getClass());\n    }\n\n    public static class BaseResult<T> {\n        private T result;\n\n        public T getResult() {\n            return result;\n        }\n\n        public void setResult(T result) {\n            this.result = result;\n        }\n    }\n\n    public static class BasePageQueryResult<T> extends BaseResult<T>{\n        private List<T> modelList;\n\n        public List<T> getModelList() {\n            return modelList;\n        }\n\n        public void setModelList(List<T> modelList) {\n            this.modelList = modelList;\n        }\n    }\n\n    public static class InteractiveOrderMaterielModel {\n        private String sourceId;\n\n        public String getSourceId() {\n            return sourceId;\n        }\n\n        public void setSourceId(String sourceId) {\n            this.sourceId = sourceId;\n        }\n    }\n\n    public static class InteractiveOrderMaterielQueryResult<T extends InteractiveOrderMaterielModel> extends BasePageQueryResult<T> {\n\n    }\n\n    public interface ProcurementOrderInteractiveServiceForCloud {\n\n        BaseResult<InteractiveOrderMaterielQueryResult> queryOrderMateriel(Map param);\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1700/Issue1764.java",
    "content": "package com.alibaba.json.bvt.issue_1700;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport static com.alibaba.fastjson.serializer.SerializerFeature.BrowserCompatible;\n\npublic class Issue1764 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = new Model();\n        model.value = 9007199254741992L;\n\n        String str = JSON.toJSONString(model);\n        assertEquals(\"{\\\"value\\\":\\\"9007199254741992\\\"}\", str);\n    }\n\n    public static class Model {\n        @JSONField(serialzeFeatures = BrowserCompatible)\n        public long value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1700/Issue1764_bean.java",
    "content": "package com.alibaba.json.bvt.issue_1700;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport junit.framework.TestCase;\n\nimport static com.alibaba.fastjson.serializer.SerializerFeature.BrowserCompatible;\n\npublic class Issue1764_bean extends TestCase {\n    public void test_for_issue() throws Exception {\n        assertEquals(\"{\\\"value\\\":\\\"9007199254741992\\\"}\"\n                , JSON.toJSONString(\n                        new Model(9007199254741992L)));\n\n        assertEquals(\"{\\\"value\\\":\\\"9007199254741990\\\"}\"\n                , JSON.toJSONString(\n                        new Model(9007199254741990L)));\n\n        assertEquals(\"{\\\"value\\\":100}\"\n                , JSON.toJSONString(\n                        new Model(100L)));\n\n        assertEquals(\"{\\\"value\\\":\\\"-9007199254741990\\\"}\"\n                , JSON.toJSONString(\n                        new Model(-9007199254741990L)));\n\n        assertEquals(\"{\\\"value\\\":-9007199254740990}\"\n                , JSON.toJSONString(\n                        new Model(-9007199254740990L)));\n\n    }\n\n\n\n    @JSONType(serialzeFeatures = BrowserCompatible)\n    public static class Model {\n        public long value;\n\n        public Model() {\n\n        }\n\n        public Model(long value) {\n            this.value = value;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1700/Issue1764_bean_biginteger.java",
    "content": "package com.alibaba.json.bvt.issue_1700;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.math.BigInteger;\n\nimport static com.alibaba.fastjson.serializer.SerializerFeature.BrowserCompatible;\n\npublic class Issue1764_bean_biginteger extends TestCase {\n    public void test_for_issue() throws Exception {\n        assertEquals(\"{\\\"value\\\":\\\"9007199254741992\\\"}\"\n                , JSON.toJSONString(\n                        new Model(9007199254741992L), BrowserCompatible));\n\n        assertEquals(\"{\\\"value\\\":\\\"-9007199254741992\\\"}\"\n                , JSON.toJSONString(\n                        new Model(-9007199254741992L), BrowserCompatible));\n\n        assertEquals(\"{\\\"value\\\":9007199254740990}\"\n                , JSON.toJSONString(\n                        new Model(9007199254740990L), BrowserCompatible));\n\n        assertEquals(\"{\\\"value\\\":-9007199254740990}\"\n                , JSON.toJSONString(\n                        new Model(-9007199254740990L), BrowserCompatible));\n\n        assertEquals(\"{\\\"value\\\":100}\"\n                , JSON.toJSONString(\n                        new Model(100), BrowserCompatible));\n\n        assertEquals(\"{\\\"value\\\":-100}\"\n                , JSON.toJSONString(\n                        new Model(-100), BrowserCompatible));\n    }\n\n\n\n\n    public static class Model {\n        public BigInteger value;\n\n        public Model() {\n\n        }\n\n        public Model(long value) {\n            this.value = BigInteger.valueOf(value);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1700/Issue1764_bean_biginteger_field.java",
    "content": "package com.alibaba.json.bvt.issue_1700;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport junit.framework.TestCase;\n\nimport java.math.BigInteger;\n\nimport static com.alibaba.fastjson.serializer.SerializerFeature.BrowserCompatible;\n\npublic class Issue1764_bean_biginteger_field extends TestCase {\n    public void test_for_issue() throws Exception {\n        assertEquals(\"{\\\"value\\\":\\\"9007199254741992\\\"}\"\n                , JSON.toJSONString(\n                        new Model(9007199254741992L)));\n\n        assertEquals(\"{\\\"value\\\":\\\"-9007199254741992\\\"}\"\n                , JSON.toJSONString(\n                        new Model(-9007199254741992L)));\n\n        assertEquals(\"{\\\"value\\\":9007199254740990}\"\n                , JSON.toJSONString(\n                        new Model(9007199254740990L)));\n\n        assertEquals(\"{\\\"value\\\":-9007199254740990}\"\n                , JSON.toJSONString(\n                        new Model(-9007199254740990L)));\n\n        assertEquals(\"{\\\"value\\\":100}\"\n                , JSON.toJSONString(\n                        new Model(100)));\n\n        assertEquals(\"{\\\"value\\\":-100}\"\n                , JSON.toJSONString(\n                        new Model(-100)));\n    }\n\n\n\n\n    public static class Model {\n        @JSONField(serialzeFeatures = BrowserCompatible)\n        public BigInteger value;\n\n        public Model() {\n\n        }\n\n        public Model(long value) {\n            this.value = BigInteger.valueOf(value);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1700/Issue1764_bean_biginteger_type.java",
    "content": "package com.alibaba.json.bvt.issue_1700;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport junit.framework.TestCase;\n\nimport java.math.BigInteger;\n\nimport static com.alibaba.fastjson.serializer.SerializerFeature.BrowserCompatible;\n\npublic class Issue1764_bean_biginteger_type extends TestCase {\n    public void test_for_issue() throws Exception {\n        assertEquals(\"{\\\"value\\\":\\\"9007199254741992\\\"}\"\n                , JSON.toJSONString(\n                        new Model(9007199254741992L)));\n\n        assertEquals(\"{\\\"value\\\":\\\"-9007199254741992\\\"}\"\n                , JSON.toJSONString(\n                        new Model(-9007199254741992L)));\n\n        assertEquals(\"{\\\"value\\\":9007199254740990}\"\n                , JSON.toJSONString(\n                        new Model(9007199254740990L)));\n\n        assertEquals(\"{\\\"value\\\":-9007199254740990}\"\n                , JSON.toJSONString(\n                        new Model(-9007199254740990L)));\n\n        assertEquals(\"{\\\"value\\\":100}\"\n                , JSON.toJSONString(\n                        new Model(100)));\n\n        assertEquals(\"{\\\"value\\\":-100}\"\n                , JSON.toJSONString(\n                        new Model(-100)));\n    }\n\n\n\n    @JSONType(serialzeFeatures = BrowserCompatible)\n    public static class Model {\n        public BigInteger value;\n\n        public Model() {\n\n        }\n\n        public Model(long value) {\n            this.value = BigInteger.valueOf(value);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1700/Issue1766.java",
    "content": "package com.alibaba.json.bvt.issue_1700;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport java.util.Date;\n\npublic class Issue1766 extends TestCase {\n    public void test_for_issue() throws Exception {\n// succ\n        String json = \"{\\\"name\\\":\\\"张三\\\"\\n, \\\"birthday\\\":\\\"2017-01-01 01:01:01\\\"}\";\n        User user = JSON.parseObject(json, User.class);\n        assertEquals(\"张三\", user.getName());\n        assertNotNull(user.getBirthday());\n\n        // failed\n        json = \"{\\\"name\\\":\\\"张三\\\", \\\"birthday\\\":\\\"2017-01-01 01:01:02\\\"\\n}\";\n        user = JSON.parseObject(json, User.class);// will exception\n        assertEquals(\"张三\", user.getName());\n        assertNotNull(user.getBirthday());\n    }\n\n    public static class User\n    {\n        private String name;\n\n        @JSONField(format = \"yyyy-MM-dd HH:mm:ss\")\n        private Date birthday;\n\n        public String getName()\n        {\n            return name;\n        }\n\n        public void setName(String name)\n        {\n            this.name = name;\n        }\n\n        public Date getBirthday()\n        {\n            return birthday;\n        }\n\n        public void setBirthday(Date birthday)\n        {\n            this.birthday = birthday;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1700/Issue1769.java",
    "content": "package com.alibaba.json.bvt.issue_1700;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport junit.framework.TestCase;\n\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\npublic class Issue1769 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n\n    public void test_for_issue() throws Exception {\n        byte[] newby = \"{\\\"beginTime\\\":\\\"420180319160440\\\"}\".getBytes();\n        QueryTaskResultReq rsp3 = JSON.parseObject(newby, QueryTaskResultReq.class);\n        assertEquals(\"{\\\"beginTime\\\":\\\"152841225111920\\\"}\", new String(JSON.toJSONBytes(rsp3)));\n    }\n\n    @JSONType(orders = {\"beginTime\"})\n    public static class QueryTaskResultReq\n    {\n        private Date beginTime;\n\n        @JSONField(format = \"yyyyMMddHHmmss\")\n        public Date getBeginTime() {\n            return beginTime;\n        }\n\n        public void setBeginTime(Date beginTime) {\n            this.beginTime = beginTime;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1700/Issue1772.java",
    "content": "package com.alibaba.json.bvt.issue_1700;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\n\npublic class Issue1772 extends TestCase {\n    public void test_0() throws Exception {\n        Date date = JSON.parseObject(\"\\\"-14189155200000\\\"\", Date.class);\n        assertEquals(-14189155200000L, date.getTime());\n    }\n\n    public void test_1() throws Exception {\n        JSONObject jsonObject = new JSONObject();\n        jsonObject.put(\"time\", \"-14189155200000\");\n\n        Model m = jsonObject.toJavaObject(Model.class);\n        assertEquals(-14189155200000L, m.time.getTime());\n    }\n\n    public static class Model {\n        public Date time;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1700/Issue1780_JSONObject.java",
    "content": "package com.alibaba.json.bvt.issue_1700;\n\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport org.junit.Assert;\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\npublic class Issue1780_JSONObject extends TestCase {\n\n\tpublic void test_for_issue() {\n\t\torg.json.JSONObject req = new org.json.JSONObject();\n\t\treq.put(\"id\", 1111);\n\t\treq.put(\"name\", \"name11\");\n\t\tString text = JSON.toJSONString(req, SerializerFeature.SortField);\n\t\tassertTrue(\"{\\\"id\\\":1111,\\\"name\\\":\\\"name11\\\"}\".equals(text)\n\t\t\t\t|| \"{\\\"name\\\":\\\"name11\\\",\\\"id\\\":1111}\".equals(text)\n\t\t);\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1700/Issue1780_Module.java",
    "content": "package com.alibaba.json.bvt.issue_1700;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\n\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.ObjectSerializer;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.spi.Module;\n\nimport junit.framework.TestCase;\n\npublic class Issue1780_Module extends TestCase {\n\n\tpublic void test_for_issue() {\n\t\torg.json.JSONObject req = new org.json.JSONObject();\n\n\t\tSerializeConfig config = new SerializeConfig();\n\t\tconfig.register(new myModule());\n\t\treq.put(\"id\", 1111);\n\t\treq.put(\"name\", \"name11\");\n\t\tString text = JSON.toJSONString(req, SerializerFeature.SortField);\n\n\t\tassertTrue(\"{\\\"id\\\":1111,\\\"name\\\":\\\"name11\\\"}\".equals(text) || \"{\\\"name\\\":\\\"name11\\\",\\\"id\\\":1111}\".equals(text));\n\t}\n\n\tpublic class myModule implements Module {\n\n\t\t@SuppressWarnings(\"rawtypes\")\n\t\tpublic ObjectDeserializer createDeserializer(ParserConfig config, Class type) {\n\t\t\treturn null;\n\t\t}\n\n\t\t@SuppressWarnings(\"rawtypes\")\n\t\tpublic ObjectSerializer createSerializer(SerializeConfig config, Class type) {\n\t\t\treturn new ObjectSerializer() {\n\n\t\t\t\tpublic void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType,\n\t\t\t\t\t\tint features) throws IOException {\n\t\t\t\t\tSystem.out.println(\"-------------myModule.createSerializer-------------------\");\n\t\t\t\t\torg.json.JSONObject req = (org.json.JSONObject) object;\n\t\t\t\t\tserializer.out.write(req.toString());\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1700/Issue1785.java",
    "content": "package com.alibaba.json.bvt.issue_1700;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\npublic class Issue1785 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSON.parseObject(\"\\\"2006-8-9\\\"\", java.sql.Timestamp.class);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1700/issue1763_2/TestIssue1763_2.java",
    "content": "package com.alibaba.json.bvt.issue_1700.issue1763_2;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.json.bvt.issue_1700.issue1763_2.bean.BaseResult;\nimport com.alibaba.json.bvt.issue_1700.issue1763_2.bean.CouponResult;\nimport com.alibaba.json.bvt.issue_1700.issue1763_2.bean.PageResult;\nimport org.junit.Assert;\nimport org.junit.Before;\nimport org.junit.Test;\n\n/**\n * Test Issue 1763_2\n * 如果有多层泛型且前面泛型已经实现的情况下，判断下一级泛型\n * @author cnlyml\n */\npublic class TestIssue1763_2<T> {\n    private String jsonStr;\n    private Class<T> clazz;\n\n    @Before\n    public void init() {\n        jsonStr = \"{\\\"code\\\":0, \\\"message\\\":\\\"Success\\\", \\\"content\\\":{\\\"pageNum\\\":1, \\\"pageSize\\\":2, \\\"size\\\":2, \\\"startRow\\\":1, \\\"endRow\\\":1, \\\"total\\\":2, \\\"pages\\\":1, \\\"list\\\":[{\\\"id\\\":10000001, \\\"couponName\\\":\\\"Test1\\\"}, {\\\"id\\\":10000002, \\\"couponName\\\": \\\"Test2\\\"}]}}\";\n        clazz = (Class<T>) CouponResult.class;\n    }\n\n    // 修复test\n    @Test\n    public void testFixBug1763_2() {\n        BaseResult<PageResult<CouponResult>> data = JSON.parseObject(jsonStr, new TypeReference<BaseResult<PageResult<T>>>(clazz){}.getType());\n\n        Assert.assertTrue(data.isSuccess());\n        Assert.assertTrue(data.getContent().getList().size() == 2);\n        Assert.assertTrue(data.getContent().getList().get(0).getId().equals(10000001L));\n        Assert.assertEquals(CouponResult.class, data.getContent().getList().get(0).getClass());\n    }\n\n    // 复现BUG\n    @Test\n    public void testBug1763_2() {\n        BaseResult<PageResult<CouponResult>> data = JSON.parseObject(jsonStr, new TypeReferenceBug1763_2<BaseResult<PageResult<T>>>(clazz){}.getType());\n\n        Assert.assertTrue(data.isSuccess());\n        Assert.assertTrue(data.getContent().getList().size() == 2);\n        try {\n            data.getContent().getList().get(0).getId();\n        } catch (Throwable ex) {\n            Assert.assertEquals(ex.getCause() instanceof ClassCastException, false);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1700/issue1763_2/TypeReferenceBug1763_2.java",
    "content": "package com.alibaba.json.bvt.issue_1700.issue1763_2;\n\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.util.ParameterizedTypeImpl;\nimport com.alibaba.fastjson.util.TypeUtils;\n\nimport java.lang.reflect.GenericArrayType;\nimport java.lang.reflect.ParameterizedType;\nimport java.lang.reflect.Type;\nimport java.lang.reflect.TypeVariable;\nimport java.util.List;\nimport java.util.concurrent.ConcurrentHashMap;\nimport java.util.concurrent.ConcurrentMap;\n\npublic class TypeReferenceBug1763_2<T> {\n\n    static ConcurrentMap<Type, Type> classTypeCache\n            = new ConcurrentHashMap<Type, Type>(16, 0.75f, 1);\n\n    protected final Type type;\n\n    /**\n     * Constructs a new type literal. Derives represented class from type\n     * parameter.\n     *\n     * <p>Clients create an empty anonymous subclass. Doing so embeds the type\n     * parameter in the anonymous class's type hierarchy so we can reconstitute it\n     * at runtime despite erasure.\n     */\n    protected TypeReferenceBug1763_2(){\n        Type superClass = getClass().getGenericSuperclass();\n\n        Type type = ((ParameterizedType) superClass).getActualTypeArguments()[0];\n\n        Type cachedType = classTypeCache.get(type);\n        if (cachedType == null) {\n            classTypeCache.putIfAbsent(type, type);\n            cachedType = classTypeCache.get(type);\n        }\n\n        this.type = cachedType;\n    }\n\n    /**\n     * @since 1.2.9\n     * @param actualTypeArguments\n     */\n    protected TypeReferenceBug1763_2(Type... actualTypeArguments){\n        Class<?> thisClass = this.getClass();\n        Type superClass = thisClass.getGenericSuperclass();\n\n        ParameterizedType argType = (ParameterizedType) ((ParameterizedType) superClass).getActualTypeArguments()[0];\n        Type rawType = argType.getRawType();\n        Type[] argTypes = argType.getActualTypeArguments();\n\n        int actualIndex = 0;\n        for (int i = 0; i < argTypes.length; ++i) {\n            if (argTypes[i] instanceof TypeVariable &&\n                    actualIndex < actualTypeArguments.length) {\n                argTypes[i] = actualTypeArguments[actualIndex++];\n            }\n            // fix for openjdk and android env\n            if (argTypes[i] instanceof GenericArrayType) {\n                argTypes[i] = TypeUtils.checkPrimitiveArray(\n                        (GenericArrayType) argTypes[i]);\n            }\n\n        }\n\n        Type key = new ParameterizedTypeImpl(argTypes, thisClass, rawType);\n        Type cachedType = classTypeCache.get(key);\n        if (cachedType == null) {\n            classTypeCache.putIfAbsent(key, key);\n            cachedType = classTypeCache.get(key);\n        }\n\n        type = cachedType;\n\n    }\n\n    /**\n     * Gets underlying {@code Type} instance.\n     */\n    public Type getType() {\n        return type;\n    }\n\n    public final static Type LIST_STRING = new TypeReference<List<String>>() {}.getType();\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1700/issue1763_2/bean/BaseResult.java",
    "content": "package com.alibaba.json.bvt.issue_1700.issue1763_2.bean;\n\nimport com.alibaba.fastjson.annotation.JSONField;\n\n/**\n * BaseResult\n *\n * @author cnlyml\n */\npublic class BaseResult<T> {\n    private static final Integer SUCCESS_CODE = 0;\n\n    private Integer code;\n    private String message;\n    @JSONField(name = \"content\")\n    private T content;\n\n    public Integer getCode() {\n        return code;\n    }\n\n    public void setCode(Integer code) {\n        this.code = code;\n    }\n\n    public String getMessage() {\n        return message;\n    }\n\n    public void setMessage(String message) {\n        this.message = message;\n    }\n\n    public T getContent() {\n        return content;\n    }\n\n    public void setContent(T content) {\n        this.content = content;\n    }\n\n    public boolean isSuccess() {\n        return code.equals(SUCCESS_CODE);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1700/issue1763_2/bean/CouponResult.java",
    "content": "package com.alibaba.json.bvt.issue_1700.issue1763_2.bean;\n\n\n/**\n *\n * @author cnlyml\n */\npublic class CouponResult{\n    /**\n     * 优惠券ID\n     */\n    private Long id;\n\n    /**\n     * 优惠券名称\n     */\n    private String couponName;\n\n\n    public Long getId() {\n        return id;\n    }\n\n    public void setId(Long id) {\n        this.id = id;\n    }\n\n    public String getCouponName() {\n        return couponName;\n    }\n\n    public void setCouponName(String couponName) {\n        this.couponName = couponName;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1700/issue1763_2/bean/PageResult.java",
    "content": "package com.alibaba.json.bvt.issue_1700.issue1763_2.bean;\n\nimport java.util.List;\n\n/**\n * 分页信息\n * @param <T>\n *\n * @author cnlyml\n */\npublic class PageResult<T> {\n    private Integer pageNum;\n    private Integer pageSize;\n    private Integer size;\n    private Integer startRow;\n    private Integer endRow;\n    private Integer total;\n    private Integer pages;\n\n    private List<T> list;\n\n    public Integer getPageNum() {\n        return pageNum;\n    }\n\n    public void setPageNum(Integer pageNum) {\n        this.pageNum = pageNum;\n    }\n\n    public Integer getPageSize() {\n        return pageSize;\n    }\n\n    public void setPageSize(Integer pageSize) {\n        this.pageSize = pageSize;\n    }\n\n    public Integer getSize() {\n        return size;\n    }\n\n    public void setSize(Integer size) {\n        this.size = size;\n    }\n\n    public Integer getStartRow() {\n        return startRow;\n    }\n\n    public void setStartRow(Integer startRow) {\n        this.startRow = startRow;\n    }\n\n    public Integer getEndRow() {\n        return endRow;\n    }\n\n    public void setEndRow(Integer endRow) {\n        this.endRow = endRow;\n    }\n\n    public Integer getTotal() {\n        return total;\n    }\n\n    public void setTotal(Integer total) {\n        this.total = total;\n    }\n\n    public Integer getPages() {\n        return pages;\n    }\n\n    public void setPages(Integer pages) {\n        this.pages = pages;\n    }\n\n    public List<T> getList() {\n        return list;\n    }\n\n    public void setList(List<T> list) {\n        this.list = list;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1800/Issue1821.java",
    "content": "package com.alibaba.json.bvt.issue_1800;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport junit.framework.TestCase;\n\npublic class Issue1821 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String str = \"{\\\"type\\\":800,\\\"data\\\":\\\"HuYgMIxwfqdtvOJNv6kK025g5fh3yFHI2kaByO7udKk6FOBC3PGRWkGfwV0\\\\/vWQW6roN5ftKDHFZ3PWl0715OYue0rZj\\\\/VwrNsMvIL4MqTUNBBUGFU9SgZu87ss7RqmyijH6\\\\/sM968cK1Dv5U7Rrw79idl\\\\/hW8SILLn1YXvUa60=\\\"}\";\n        String expectStr = \"{\\\"type\\\":800,\\\"data\\\":\\\"HuYgMIxwfqdtvOJNv6kK025g5fh3yFHI2kaByO7udKk6FOBC3PGRWkGfwV0/vWQW6roN5ftKDHFZ3PWl0715OYue0rZj/VwrNsMvIL4MqTUNBBUGFU9SgZu87ss7RqmyijH6/sM968cK1Dv5U7Rrw79idl/hW8SILLn1YXvUa60=\\\"}\";\n        Model m = JSON.parseObject(str, Model.class);\n        assertEquals(expectStr, JSON.toJSONString(m));\n\n        str = \"{\\\"type\\\":800,\\\"data\\\":\\\"Y29tLmFsaWJhYmEuZmFzdGpzb24=\\\"}\";\n        m = JSON.parseObject(str, Model.class);\n        assertEquals(str, JSON.toJSONString(m));\n        assertEquals(\"com.alibaba.fastjson\", new String(m.data));\n\n        expectStr = str;\n        str = \"{\\\"type\\\":800,\\\"data\\\":\\\"\\\\u005929tLmFsaWJ\\\\u0068YmEuZmFzdGpzb24\\\\u003d\\\"}\";\n        m = JSON.parseObject(str, Model.class);\n        assertEquals(expectStr, JSON.toJSONString(m));\n        assertEquals(\"com.alibaba.fastjson\", new String(m.data));\n\n    }\n\n    @JSONType\n    public static class Model {\n        @JSONField(name=\"type\", ordinal = 1)\n        public int type;\n\n        @JSONField(name=\"data\", ordinal = 2)\n        public byte[] data;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1800/Issue1834.java",
    "content": "package com.alibaba.json.bvt.issue_1800;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\n\nimport java.util.Arrays;\nimport java.util.List;\n\npublic class Issue1834 extends TestCase {\n    public void test_for_issue() throws Exception {\n        IndexQuery_Number query_number = new IndexQuery_Number();\n        IndexQuery_Comparable query_comparable = new IndexQuery_Comparable();\n        List<Integer> keys = Arrays.asList(1234);\n        query_number.setKeys(keys);\n        query_comparable.setKeys(keys);\n\n        String json1 = JSON.toJSONString(query_number);\n        System.out.println(json1);\n        IndexQuery_Number queryNumber = JSON.parseObject(json1, new TypeReference<IndexQuery_Number>(){});\n\n        String json2 = JSON.toJSONString(query_comparable);\n        System.out.println(json2);\n        IndexQuery_Comparable queryComparable = JSON.parseObject(json2, new TypeReference<IndexQuery_Comparable>(){});\n    }\n\n    static class IndexQuery_Comparable{\n        List<? extends Comparable> keys;\n\n        public List<? extends Comparable> getKeys() {\n            return keys;\n        }\n\n        public void setKeys(List<? extends Comparable> keys) {\n            this.keys = keys;\n        }\n\n        @Override\n        public String toString() {\n            return \"IndexQuery{\" +\n                    \"keys=\" + keys +\n                    '}';\n        }\n    }\n\n    static class IndexQuery_Number{\n        List<? extends Number> keys;\n\n        public List<? extends Number> getKeys() {\n            return keys;\n        }\n\n        public void setKeys(List<? extends Number> keys) {\n            this.keys = keys;\n        }\n\n        @Override\n        public String toString() {\n            return \"IndexQuery{\" +\n                    \"keys=\" + keys +\n                    '}';\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1800/Issue1856.java",
    "content": "package com.alibaba.json.bvt.issue_1800;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.Labels;\nimport junit.framework.TestCase;\n\npublic class Issue1856 extends TestCase {\n    public void test_excludes() throws Exception {\n        VO vo = new VO();\n        vo.setId(123);\n        vo.setName(\"wenshao\");\n        vo.setPassword(\"ooxxx\");\n        vo.setInfo(\"fofo\");\n\n        String text = JSON.toJSONString(vo, Labels.excludes(\"AuditIdEntity\"));\n        assertEquals(\"{\\\"id\\\":123,\\\"info\\\":\\\"fofo\\\",\\\"name\\\":\\\"wenshao\\\"}\", text);\n    }\n\n    public static class VO {\n\n        private int    id;\n        private String name;\n        private String password;\n        private String info;\n\n        @JSONField(label = \"LogicDeleteEntity\")\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        @JSONField(label = \"LogicDeleteEntity\")\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        @JSONField(label = \"AuditIdEntity\")\n        public String getPassword() {\n            return password;\n        }\n\n        public void setPassword(String password) {\n            this.password = password;\n        }\n\n        public String getInfo() {\n            return info;\n        }\n\n        public void setInfo(String info) {\n            this.info = info;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1800/Issue1870.java",
    "content": "package com.alibaba.json.bvt.issue_1800;\n\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\npublic class Issue1870 extends TestCase {\n    public void test_for_issue() throws Exception {\n\n    }\n\n    public static class Comment {\n        @JSONField(name = \"pic_arr\")\n        public List<Pic> pics;\n\n\n        public List<Pic> getPics() {\n            return pics;\n        }\n\n        public void setPics(List<Pic> pics) {\n            this.pics = pics;\n        }\n    }\n\n    public static class Pic {\n        public int height;\n        public String tburl;\n        public String url;\n        public String width;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1800/Issue1871.java",
    "content": "package com.alibaba.json.bvt.issue_1800;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.util.HashMap;\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\npublic class Issue1871 extends TestCase  {\n    public void test_for_issue() throws Exception {\n        UnwrapClass m = new UnwrapClass();\n        m.map = new HashMap();\n        m.name = \"ljw\";\n        m.map.put(\"a\", \"1\");\n        m.map.put(\"b\", \"2\");\n\n        String json = JSON.toJSONString(m, SerializerFeature.WriteClassName);\n        System.out.println(json);\n    }\n\n    public static class UnwrapClass {\n\n        private String name;\n\n        @JSONField(unwrapped = true)\n        private Map<String, String> map;\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public Map<String, String> getMap() {\n            return map;\n        }\n\n        public void setMap(Map<String, String> map) {\n            this.map = map;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1800/Issue1879.java",
    "content": "package com.alibaba.json.bvt.issue_1800;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class Issue1879 extends TestCase {\n//    public void test_for_issue() throws Exception {\n//        String json = \"{\\n\" +\n//                \"   \\\"ids\\\" : \\\"1,2,3\\\"\\n\" +\n//                \"}\";\n//        M1 m = JSON.parseObject(json, M1.class);\n//    }\n\n    public void test_for_issue_2() throws Exception {\n        String json = \"{\\n\" +\n                \"   \\\"ids\\\" : \\\"1,2,3\\\"\\n\" +\n                \"}\";\n        M2 m = JSON.parseObject(json, M2.class);\n    }\n\n    public static class M1 {\n        private List<Long> ids;\n\n        @JSONCreator\n        public M1(@JSONField(name = \"ids\") String ids) {\n            this.ids = new ArrayList<Long>();\n            for(String id : ids.split(\",\")) {\n                this.ids.add(Long.valueOf(id));\n            }\n        }\n\n        public List<Long> getIds() {\n            return ids;\n        }\n\n        public void setIds(List<Long> ids) {\n            this.ids = ids;\n        }\n    }\n\n    public static class M2 {\n        private List<Long> ids;\n\n        @JSONCreator\n        public M2(@JSONField(name = \"ids\") Long id) {\n            this.ids = new ArrayList<Long>();\n            this.ids.add(id);\n        }\n\n        public List<Long> getIds() {\n            return ids;\n        }\n\n        public void setIds(List<Long> ids) {\n            this.ids = ids;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1800/Issue1892.java",
    "content": "package com.alibaba.json.bvt.issue_1800;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.time.LocalDateTime;\n\npublic class Issue1892 extends TestCase {\n    public void test_for_issue() throws Exception {\n        assertEquals(\"\\\"2018-10-10T00:00:00\\\"\",\n            JSON.toJSONString(\n                    LocalDateTime.of(2018, 10, 10, 0, 0)\n            )\n        );\n    }\n\n    public void test_for_issue_1() throws Exception {\n        String json = JSON.toJSONString(\n                LocalDateTime.of(2018, 10, 10, 0, 0, 40, 788000000)\n        );\n        assertEquals(\"\\\"2018-10-10T00:00:40.788\\\"\", json);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1800/Issue_for_dianxing.java",
    "content": "package com.alibaba.json.bvt.issue_1800;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\npublic class Issue_for_dianxing extends TestCase {\n    public void test_0() throws Exception {\n        String s = \"{\\\"alarmLevel\\\":null,\\\"error\\\":null,\\\"errorCount\\\":0,\\\"maxAlarmCount\\\":10,\\\"warn\\\":null,\"\n                + \"\\\"warnCount\\\":0}\";\n        TopAlarm b = JSON.parseObject(s, TopAlarm.class);\n        System.out.println(JSON.toJSONString(b));\n    }\n\n    public static class TopAlarm {\n\n        private Double error;                                  //为null表示不报警\n        private int errorCount;\n        private Double warn;                                   //为null表示不报警\n        private int warnCount;\n        private Integer alarmLevel;\n        private int maxAlarmCount = 10;\n\n        public TopAlarm() {\n        }\n\n        public Double getError() {\n            return error;\n        }\n\n        public void setError(Double error) {\n            this.error = error;\n        }\n\n        public Double getWarn() {\n            return warn;\n        }\n\n        public void setWarn(Double warn) {\n            this.warn = warn;\n        }\n\n        public int getErrorCount() {\n            return errorCount;\n        }\n\n        public void setErrorCount(int errorCount) {\n            this.errorCount = errorCount;\n        }\n\n        public int getWarnCount() {\n            return warnCount;\n        }\n\n        public void setWarnCount(int warnCount) {\n            this.warnCount = warnCount;\n        }\n\n        public Integer getAlarmLevel() {\n            return alarmLevel;\n        }\n\n        public void setAlarmLevel(Integer alarmLevel) {\n            this.alarmLevel = alarmLevel;\n        }\n\n        public int getMaxAlarmCount() {\n            return maxAlarmCount;\n        }\n\n        public void setMaxAlarmCount(int maxAlarmCount) {\n            this.maxAlarmCount = maxAlarmCount;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1800/Issue_for_float_zero.java",
    "content": "package com.alibaba.json.bvt.issue_1800;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\npublic class Issue_for_float_zero extends TestCase {\n    public void test_0() throws Exception {\n        M1 m = new M1(1.0f);\n        assertEquals(\"{\\\"val\\\":1.0}\", JSON.toJSONString(m, SerializerFeature.WriteNullNumberAsZero));\n    }\n\n    public void test_1() throws Exception {\n        M2 m = new M2(1.0);\n        assertEquals(\"{\\\"val\\\":1.0}\", JSON.toJSONString(m, SerializerFeature.WriteNullNumberAsZero));\n    }\n\n    public static class M1 {\n        public float val;\n\n        public M1(float val) {\n            this.val = val;\n        }\n    }\n\n    public static class M2 {\n        public double val;\n\n        public M2(double val) {\n            this.val = val;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1900/Issue1901.java",
    "content": "package com.alibaba.json.bvt.issue_1900;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\npublic class Issue1901 extends TestCase {\n    protected Locale locale;\n    protected TimeZone timeZone;\n    protected void setUp() throws Exception {\n        locale = JSON.defaultLocale;\n        timeZone = JSON.defaultTimeZone;\n        JSON.defaultLocale = Locale.CHINA;\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n    }\n\n    protected void tearDown() throws Exception {\n        JSON.defaultLocale = locale;\n        JSON.defaultTimeZone = timeZone;\n    }\n\n    public void test_for_issue() throws Exception {\n        Model m = JSON.parseObject(\"{\\\"time\\\":\\\"Thu Mar 22 08:58:37 +0000 2018\\\"}\", Model.class);\n        assertEquals(\"{\\\"time\\\":\\\"星期四 三月 22 16:58:37 CST 2018\\\"}\", JSON.toJSONString(m));\n    }\n\n    public void test_for_issue_1() throws Exception {\n        Model m = JSON.parseObject(\"{\\\"time\\\":\\\"星期四 三月 22 16:58:37 CST 2018\\\"}\", Model.class);\n        assertEquals(\"{\\\"time\\\":\\\"星期四 三月 22 16:58:37 CST 2018\\\"}\", JSON.toJSONString(m));\n    }\n\n    public static class Model {\n        @JSONField(format = \"EEE MMM dd HH:mm:ss zzz yyyy\")\n        public Date time;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1900/Issue1903.java",
    "content": "package com.alibaba.json.bvt.issue_1900;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.beans.Transient;\nimport java.lang.reflect.InvocationHandler;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Proxy;\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\npublic class Issue1903 extends TestCase {\n    public void test_issue() throws Exception {\n        MapHandler mh = new MapHandler();\n        mh.add(\"name\", \"test\");\n        mh.add(\"age\", 20);\n\n        Issues1903 issues = (Issues1903) Proxy.newProxyInstance(mh.getClass().getClassLoader(), new Class[]{Issues1903.class}, mh);\n        System.out.println(issues.getName());\n        System.out.println(issues.getAge());\n\n        System.out.println(JSON.toJSON(issues).toString()); //正确结果: {\"age\":20}\n        System.out.println(JSON.toJSONString(issues));  //正确结果: {\"age\":20}\n        Assert.assertEquals(\"{\\\"age\\\":20}\", JSON.toJSON(issues).toString());\n        Assert.assertEquals(\"{\\\"age\\\":20}\", JSON.toJSONString(issues));\n    }\n\n    interface Issues1903{\n        @Transient\n        @JSONField(serialzeFeatures = { SerializerFeature.SkipTransientField })\n        public String getName();\n        public void setName(String name);\n\n        public Integer getAge();\n        public void setAge(Integer age);\n    }\n\n\n    class MapHandler implements InvocationHandler {\n        Map<String, Object> map = new HashMap<String, Object>();\n\n        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {\n            String name = method.getName().substring(3);\n            String first = String.valueOf(name.charAt(0));\n            name = name.replaceFirst(first, first.toLowerCase());\n            return map.get(name);\n        }\n\n        public void add(String key, Object val){\n            map.put(key, val);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1900/Issue1909.java",
    "content": "package com.alibaba.json.bvt.issue_1900;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\npublic class Issue1909 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSONArray params = new JSONArray();\n        params.add(\"val1\");\n        params.add(2);\n        ParamRequest pr = new ParamRequest(\"methodName\", \"stringID\", params);\n        System.out.println(JSON.toJSONString(pr));\n        Request paramRequest = JSON.parseObject(JSON.toJSONString(pr), ParamRequest.class);\n    }\n\n    public static class ParamRequest extends Request {\n        private String methodName;\n\n        @JSONField(name = \"id\", ordinal = 3, serialize = true, deserialize = true)\n        private Object id;\n\n        private List<Object> params;\n\n        public ParamRequest(String methodName, Object id, List<Object> params) {\n            this.methodName = methodName;\n            this.id = id;\n            this.params = params;\n        }\n\n        public String getMethodName() {\n            return methodName;\n        }\n\n        public Object getId() {\n            return id;\n        }\n\n        public List<Object> getParams() {\n            return params;\n        }\n    }\n\n    public static class Request {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1900/Issue1933.java",
    "content": "package com.alibaba.json.bvt.issue_1900;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\npublic class Issue1933 extends TestCase {\n    public void test_for_issue() throws Exception {\n        OrderInfoVO v0 = JSON.parseObject(\"{\\\"orderStatus\\\":1}\", OrderInfoVO.class);\n        assertEquals(1, v0.orderStatus);\n        assertEquals(0, v0.oldStatus);\n        assertEquals(0, v0.oldOrderStatus);\n    }\n\n    public void test_for_issue_1() throws Exception {\n        OrderInfoVO v0 = JSON.parseObject(\"{\\\"oldStatus\\\":1}\", OrderInfoVO.class);\n        assertEquals(0, v0.orderStatus);\n        assertEquals(1, v0.oldStatus);\n        assertEquals(0, v0.oldOrderStatus);\n    }\n\n\n    public void test_for_issue_2() throws Exception {\n        OrderInfoVO v0 = JSON.parseObject(\"{\\\"oldOrderStatus\\\":1}\", OrderInfoVO.class);\n        assertEquals(0, v0.orderStatus);\n        assertEquals(0, v0.oldStatus);\n        assertEquals(1, v0.oldOrderStatus);\n    }\n\n\n    public static class OrderInfoVO {\n        private int orderStatus;\n        private int oldStatus;\n        private int oldOrderStatus;\n\n        public int getOrderStatus() {\n            return orderStatus;\n        }\n\n        public void setOrderStatus(int orderStatus) {\n            this.orderStatus = orderStatus;\n        }\n\n        public int getOldStatus() {\n            return oldStatus;\n        }\n\n        public void setOldStatus(int oldStatus) {\n            this.oldStatus = oldStatus;\n        }\n\n        public int getOldOrderStatus() {\n            return oldOrderStatus;\n        }\n\n        public void setOldOrderStatus(int oldOrderStatus) {\n            this.oldOrderStatus = oldOrderStatus;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1900/Issue1939.java",
    "content": "package com.alibaba.json.bvt.issue_1900;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport javax.xml.bind.JAXBContext;\nimport javax.xml.bind.annotation.*;\nimport java.io.Serializable;\nimport java.io.StringReader;\nimport java.util.List;\n\npublic class Issue1939 extends TestCase {\n    @XmlRootElement(name = \"Container\")\n    @XmlAccessorType(XmlAccessType.FIELD)\n    @XmlType(name = \"\", propOrder = {\n            \"any\"\n    })\n    public static class Container implements Serializable {\n        @XmlAnyElement(lax = true)\n        public List<Object> any;\n    }\n    private static final String MESSAGE = \"<Container>\" +\n            \"<WeightMajor measurementSystem=\\\"English\\\" unit=\\\"lbs\\\">0</WeightMajor>\" +\n            \"</Container>\";\n\n    public void test_for_issue() throws Exception {\n        JAXBContext context = JAXBContext.newInstance(Container.class, Issue1939.class);\n        Container con = (Container) context.createUnmarshaller().unmarshal(new StringReader(MESSAGE));\n        assertEquals(\"{\\\"any\\\":[\\\"<?xml version=\\\\\\\"1.0\\\\\\\" encoding=\\\\\\\"UTF-8\\\\\\\"?><WeightMajor measurementSystem=\\\\\\\"English\\\\\\\" unit=\\\\\\\"lbs\\\\\\\">0</WeightMajor>\\\"]}\",\n                JSON.toJSONString(con));\n    }\n\n    public void test_for_issue_1() throws Exception {\n        JAXBContext context = JAXBContext.newInstance(Container.class, Issue1939.class);\n        Container con = (Container) context.createUnmarshaller().unmarshal(new StringReader(MESSAGE));\n        assertEquals(\"{\\\"any\\\":[\\\"<?xml version=\\\\\\\"1.0\\\\\\\" encoding=\\\\\\\"UTF-8\\\\\\\"?><WeightMajor measurementSystem=\\\\\\\"English\\\\\\\" unit=\\\\\\\"lbs\\\\\\\">0</WeightMajor>\\\"]}\",\n                JSON.toJSON(con).toString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1900/Issue1941.java",
    "content": "package com.alibaba.json.bvt.issue_1900;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport junit.framework.TestCase;\n\npublic class Issue1941 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String json = \"{\\\"type\\\":\\\"floorV2\\\",\\\"templateId\\\":\\\"x123\\\",\\\"name\\\":\\\"floorname2\\\"}\";\n        FloorV2  a=(FloorV2) JSON.parseObject(json,Area.class);\n        assertEquals(\"floorname2\", a.name);\n        assertEquals(\"x123\", a.templateId);\n    }\n\n    @JSONType(seeAlso = {FloorV2.class}, typeKey = \"type\")\n    public static interface Area {\n    }\n\n    @JSONType(typeName = \"floorV2\")\n    public static class FloorV2 implements Area {\n        public String type;\n        public String templateId;\n        public String name;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1900/Issue1941_JSONField_order.java",
    "content": "package com.alibaba.json.bvt.issue_1900;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport junit.framework.TestCase;\n\npublic class Issue1941_JSONField_order extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String json = \"{\\\"type\\\":\\\"floorV2\\\",\\\"templateId\\\":\\\"x123\\\",\\\"name\\\":\\\"floorname2\\\"}\";\n        FloorV2  a=(FloorV2) JSON.parseObject(json,Area.class);\n        assertEquals(\"floorname2\", a.name);\n        assertEquals(\"x123\", a.templateId);\n    }\n\n    @JSONType(seeAlso = {FloorV2.class}, typeKey = \"type\")\n    public static interface Area {\n    }\n\n    @JSONType(typeName = \"floorV2\")\n    public static class FloorV2 implements Area {\n        @JSONField(ordinal = -1)\n        public String type;\n        public String templateId;\n        public String name;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1900/Issue1944.java",
    "content": "package com.alibaba.json.bvt.issue_1900;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\npublic class Issue1944 extends TestCase {\n    public void test_for_issue() throws Exception {\n        assertEquals(90.82195113f, JSON.parseObject(\"{\\\"value\\\":90.82195113}\", Model.class).value);\n    }\n\n    public static class Model {\n        public float value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1900/Issue1945.java",
    "content": "package com.alibaba.json.bvt.issue_1900;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.io.Serializable;\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport static com.alibaba.fastjson.serializer.SerializerFeature.WriteClassName;\n\npublic class Issue1945 extends TestCase {\n    public void test_0() throws Exception {\n        B b = new B();\n        b.clazz = new Class[]{String.class};\n        b.aInstance = new HashMap();\n        b.aInstance.put(\"test\", \"test\");\n        String s = JSON.toJSONString(b, WriteClassName);\n        System.out.println(s);\n        B a1 = JSON.parseObject(s, B.class);\n    }\n\n    static class B implements Serializable {\n        public Class[] clazz;\n        public Map aInstance;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1900/Issue1955.java",
    "content": "package com.alibaba.json.bvt.issue_1900;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\npublic class Issue1955 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n\n    public void test_for_issue() throws Exception {\n        String strVal = \"0100-01-27 11:22:00.000\";\n        Date date = JSON.parseObject('\"' + strVal + '\"', Date.class);\n\n        SimpleDateFormat df = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss.SSS\", Locale.CHINA);\n        df.setTimeZone(JSON.defaultTimeZone);\n\n        assertEquals(df.parse(strVal), date);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1900/Issue1972.java",
    "content": "package com.alibaba.json.bvt.issue_1900;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\npublic class Issue1972 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSONObject jsonObject = new JSONObject();\n        final JSONObject a = new JSONObject();\n        final JSONObject b = new JSONObject();\n        a.put(\"b\", b);\n\n        b.put(\"c\", \"2018-04\");\n        b.put(\"d\", new JSONArray());\n\n        Integer obj = Integer.valueOf(123);\n\n        jsonObject.put(\"a\", a);\n        JSONPath.arrayAdd(jsonObject,\"$.a.b[c = '2018-04'].d\", obj);\n\n        assertEquals(\"{\\\"a\\\":{\\\"b\\\":{\\\"c\\\":\\\"2018-04\\\",\\\"d\\\":[123]}}}\", jsonObject.toString());\n    }\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1900/Issue1977.java",
    "content": "package com.alibaba.json.bvt.issue_1900;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.util.Locale;\nimport java.util.TimeZone;\n\npublic class Issue1977 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n\n    public void test_for_issue() throws Exception {\n        java.sql.Date date = new java.sql.Date(1533265119604L);\n        String json = JSON.toJSONString(date, SerializerFeature.UseISO8601DateFormat);\n        assertEquals(\"\\\"2018-08-03T10:58:39.604+08:00\\\"\", json);\n//        new java.sql.Date();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1900/Issue1987.java",
    "content": "package com.alibaba.json.bvt.issue_1900;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.time.LocalDateTime;\n\npublic class Issue1987 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JsonExample example = new JsonExample();\n\n        //test1 正确执行, test2, test3 执行出错 com.alibaba.fastjson.JSONException: can not cast to : java.time.LocalDateTime\n        example.setTestLocalDateTime(LocalDateTime.now());\n\n        //纳秒数设置为0 ,test1,test2,test3 全部正确执行\n        //example.setTestLocalDateTime(LocalDateTime.now().withNano(0));\n        String text = JSON.toJSONString(example, SerializerFeature.PrettyFormat);\n        System.out.println(text);\n\n        //test1, 全部可以正常执行\n        JsonExample example1 = JSON.parseObject(text, JsonExample.class);\n        System.out.println(JSON.toJSONString(example1));\n\n        //test2  纳秒数为0, 可以正常执行, 不为0则报错\n        JsonExample example2 = JSONObject.parseObject(text).toJavaObject(JsonExample.class);\n        System.out.println(JSON.toJSONString(example2));\n\n        //test3 纳秒数为0, 可以正常执行, 不为0则报错\n        JsonExample example3 = JSON.parseObject(text).toJavaObject(JsonExample.class);\n        System.out.println(JSON.toJSONString(example3));\n    }\n\n    public static class JsonExample {\n\n        private LocalDateTime testLocalDateTime;\n\n        public LocalDateTime getTestLocalDateTime() {\n            return testLocalDateTime;\n        }\n\n        public void setTestLocalDateTime(LocalDateTime testLocalDateTime) {\n            this.testLocalDateTime = testLocalDateTime;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_1900/Issue1996.java",
    "content": "package com.alibaba.json.bvt.issue_1900;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\npublic class Issue1996 extends TestCase {\n    public void test_for_issue() throws Exception {\n        StringBuilder sb = new StringBuilder();\n\n        char start = '\\uD800';\n        char end = '\\uDFFF';\n\n        for (char i = start; i <= end; i++) {\n            if (Character.isLowSurrogate(i)) {\n                sb.append(i);\n            }\n        }\n        String s = sb.toString();\n\n        // ok\n        String json1 = JSON.toJSONString(s);\n        byte[] bytes = json1.getBytes(\"utf-8\");\n\n        byte[] bytes2 = JSON.toJSONBytes(s);\n        assertEquals(new String(bytes), new String(bytes2));\n\n        assertEquals(bytes.length, bytes2.length);\n        for (int i = 0; i < bytes.length; i++) {\n            assertEquals(bytes[i], bytes[i]);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2000/Issue2012.java",
    "content": "package com.alibaba.json.bvt.issue_2000;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\npublic class Issue2012 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model foo = new Model();\n        foo.bytes = new byte[0];\n        String str = JSON.toJSONString(foo, SerializerFeature.WriteClassName);\n        assertEquals(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.issue_2000.Issue2012$Model\\\",\\\"bytes\\\":x''}\", str);\n\n        ParserConfig config = new ParserConfig();\n        config.setAutoTypeSupport(true);\n        foo = JSON.parseObject(str, Object.class,config);\n        assertEquals(0, foo.bytes.length);\n    }\n\n    public static class Model {\n        public byte[] bytes;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2000/Issue2040.java",
    "content": "package com.alibaba.json.bvt.issue_2000;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport junit.framework.TestCase;\nimport org.gitlab4j.api.GitLabApi;\nimport org.gitlab4j.api.GitLabApiException;\nimport org.gitlab4j.api.models.AccessLevel;\nimport org.gitlab4j.api.models.Permissions;\nimport org.gitlab4j.api.models.Project;\nimport org.gitlab4j.api.models.Visibility;\n\nimport java.util.List;\n\npublic class Issue2040 extends TestCase {\n    final ParserConfig config = new ParserConfig();\n    protected void setUp() throws Exception {\n        config.setJacksonCompatible(true);\n    }\n\n    public void test_for_issue_2040() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"accessLevel\\\":30,\\\"visibility\\\":\\\"PUBLIC\\\"}\", Model.class, config);\n        assertSame(AccessLevel.DEVELOPER, model.accessLevel);\n    }\n\n    public void test_for_issue_2040_2() throws Exception {\n        String json = \"{\\n\" +\n                \"      \\\"project_access\\\": null,\\n\" +\n                \"      \\\"group_access\\\": {\\n\" +\n                \"        \\\"access_level\\\": 50,\\n\" +\n                \"        \\\"notification_level\\\": 3\\n\" +\n                \"      }\\n\" +\n                \"    }\";\n\n        ObjectMapper objectMapper = new ObjectMapper();\n//        Permissions permissions = objectMapper.readValue(json, Permissions.class);\n\n        Permissions permissions = JSON.parseObject(json, Permissions.class, config);\n        System.out.println(JSON.toJSONString(permissions));\n    }\n\n    public static class Model {\n        public AccessLevel accessLevel;\n        public Visibility visibility;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2000/Issue2065.java",
    "content": "package com.alibaba.json.bvt.issue_2000;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport org.junit.Test;\n\npublic class Issue2065 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"code\\\":1}\", Model.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n        error.printStackTrace();\n    }\n\n    public void test_for_issue_01() {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"1\", EnumClass.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n        error.printStackTrace();\n    }\n\n    @Test\n    public void test_for_issue_02() {\n        JSON.parseObject(\"0\", EnumClass.class);\n    }\n\n    @Test\n    public void test_for_issue_03() {\n        JSON.parseObject(\"{\\\"code\\\":0}\", Model.class);\n    }\n\n    public static class Model {\n        @JSONField(name = \"code\")\n        private EnumClass code;\n\n        public Model() {}\n\n        public EnumClass getCode() {\n            return code;\n        }\n\n        public void setCode(EnumClass code) {\n            this.code = code;\n        }\n    }\n\n    public static enum EnumClass {\n        A(1);\n\n        @JSONField\n        private int code;\n\n        EnumClass(int code) {\n            this.code = code;\n        }\n\n        public int getCode() {\n            return code;\n        }\n\n        public void setCode(int code) {\n            this.code = code;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2000/Issue2066.java",
    "content": "package com.alibaba.json.bvt.issue_2000;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\npublic class Issue2066 extends TestCase {\n\n\n    public void test_issue() throws Exception {\n        JSON.parseObject(\"{\\\"values\\\":[[1,2],[3,4]]}\", Model.class);\n    }\n\n    public static class Model {\n        private List<float[]> values;\n\n        public List<float[]> getValues() {\n            return values;\n        }\n\n        public void setValues(List<float[]> values) {\n            this.values = values;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2000/Issue2074.java",
    "content": "package com.alibaba.json.bvt.issue_2000;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\npublic class Issue2074 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSONObject object = new JSONObject();\n        object.put(\"name\", null);\n\n        assertEquals(\"{\\\"name\\\":null}\"\n                , object.toString(SerializerFeature.WriteMapNullValue));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2000/Issue2086.java",
    "content": "package com.alibaba.json.bvt.issue_2000;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\npublic class Issue2086 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSON.parseObject(\"{\\\"id\\\":123}\", Model.class);\n        JSON.toJSONString(new Model());\n    }\n\n    public static class Model {\n        public void set() {\n\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2000/Issue2088.java",
    "content": "package com.alibaba.json.bvt.issue_2000;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\npublic class Issue2088 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n\n    public void test_for_issue() throws Exception {\n        String json = \"{\\\"date\\\":\\\"20181011103607186+0800\\\"}\";\n        Model m = JSON.parseObject(json, Model.class);\n\n        SimpleDateFormat format = new SimpleDateFormat(\"yyyyMMddHHmmssSSSZ\");\n        format.setTimeZone(JSON.defaultTimeZone);\n        Date date = format.parse(\"20181011103607186+0800\");\n\n        assertEquals(date, m.date);\n    }\n\n    public void test_for_issue_1() throws Exception {\n        String json = \"{\\\"date\\\":\\\"20181011103607186-0800\\\"}\";\n        Model m = JSON.parseObject(json, Model.class);\n\n        SimpleDateFormat format = new SimpleDateFormat(\"yyyyMMddHHmmssSSSZ\", JSON.defaultLocale);\n        format.setTimeZone(JSON.defaultTimeZone);\n        Date date = format.parse(\"20181011103607186-0800\");\n\n        assertEquals(date, m.date);\n    }\n\n    public static class Model {\n        @JSONField(format = \"yyyyMMddHHmmssSSSZ\")\n        public Date date;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2100/Issue2129.java",
    "content": "package com.alibaba.json.bvt.issue_2100;\n\nimport com.alibaba.fastjson.JSON;\nimport com.google.common.collect.LinkedHashMultimap;\nimport junit.framework.TestCase;\n\npublic class Issue2129 extends TestCase {\n    public void test_for_issue() throws Exception {\n        LinkedHashMultimap<String, String> map = LinkedHashMultimap.create();\n        map.put(\"a\", \"1\");\n        map.put(\"a\", \"b\");\n        map.put(\"b\", \"1\");\n        String json = JSON.toJSONString(map);\n        assertEquals(\"{\\\"a\\\":[\\\"1\\\",\\\"b\\\"],\\\"b\\\":[\\\"1\\\"]}\", json);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2100/Issue2130.java",
    "content": "package com.alibaba.json.bvt.issue_2100;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\npublic class Issue2130 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String str = \"{\\\"score\\\":0.000099369485}\";\n        JSONObject object = JSON.parseObject(str);\n        assertEquals(\"{\\\"score\\\":0.000099369485}\", object.toJSONString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2100/Issue2132.java",
    "content": "package com.alibaba.json.bvt.issue_2100;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class Issue2132 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Cpu cpu = new Cpu(\"intel\", 3.3);\n        Screen screen = new Screen(16, 9, \"samsung\");\n        Student student = new Student();\n        Computer computer = student.assembling(cpu,screen);\n        cpu.setName(\"intell\");\n\n        Object[] objectArray = new Object[4];\n        objectArray[0] = cpu;\n        objectArray[1] = screen;\n        objectArray[2] = \"2\";\n        objectArray[3] = \"3\";\n        List<Object> list1 = new ArrayList<Object>();\n        list1.add(objectArray);\n        list1.add(computer);\n        String s = JSON.toJSONString(list1);\n\n        assertEquals(\"[[{\\\"name\\\":\\\"intell\\\",\\\"speed\\\":3.3},{\\\"height\\\":9,\\\"name\\\":\\\"samsung\\\",\\\"width\\\":16},\\\"2\\\",\\\"3\\\"],{\\\"cpu\\\":{\\\"$ref\\\":\\\"$[0][0]\\\"},\\\"screen\\\":{\\\"$ref\\\":\\\"$[0][1]\\\"}}]\", s);\n    }\n\n    public static class Cpu {\n        private String name;\n        private double speed;\n\n        public Cpu(String name, double speed) {\n            this.name = name;\n            this.speed = speed;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public double getSpeed() {\n            return speed;\n        }\n\n        public void setSpeed(double speed) {\n            this.speed = speed;\n        }\n    }\n\n    public static class Screen {\n        private int width;\n        private int height;\n        private String name;\n\n        public Screen(int width, int height, String name) {\n            this.width = width;\n            this.height = height;\n            this.name = name;\n        }\n\n        public int getWidth() {\n            return width;\n        }\n\n        public void setWidth(int width) {\n            this.width = width;\n        }\n\n        public int getHeight() {\n            return height;\n        }\n\n        public void setHeight(int height) {\n            this.height = height;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n\n    public static class Computer {\n        Cpu cpu;\n        Screen screen;\n\n        public Computer(Cpu cpu, Screen screen) {\n            this.cpu = cpu;\n            this.screen = screen;\n        }\n\n        public Cpu getCpu() {\n            return cpu;\n        }\n\n        public void setCpu(Cpu cpu) {\n            this.cpu = cpu;\n        }\n\n        public Screen getScreen() {\n            return screen;\n        }\n\n        public void setScreen(Screen screen) {\n            this.screen = screen;\n        }\n    }\n\n    public static class Student {\n        private Cpu cpu;\n        private Screen screen;\n\n        public Computer assembling(Cpu cpu, Screen screen) {\n            this.cpu = cpu;\n            this.screen = screen;\n\n            return new Computer(cpu, screen);\n        }\n\n        public Cpu getCpu() {\n            return cpu;\n        }\n\n        public void setCpu(Cpu cpu) {\n            this.cpu = cpu;\n        }\n\n        public Screen getScreen() {\n            return screen;\n        }\n\n        public void setScreen(Screen screen) {\n            this.screen = screen;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2100/Issue2150.java",
    "content": "package com.alibaba.json.bvt.issue_2100;\n\nimport com.alibaba.fastjson.JSONArray;\nimport junit.framework.TestCase;\n\npublic class Issue2150 extends TestCase {\n    public void test_for_issue() throws Exception {\n        int [][][] arr = new int[100][100][100];\n        JSONArray jsonObj = (JSONArray) JSONArray.toJSON(arr);\n        assertNotNull(jsonObj);\n        assertNotNull(jsonObj.getJSONArray(0));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2100/Issue2156.java",
    "content": "package com.alibaba.json.bvt.issue_2100;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\npublic class Issue2156 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n\n//    public void test_for_issue() throws Exception {\n//        SimpleDateFormat sf = new SimpleDateFormat(\"yyyy-MM-dd\");\n//        sf.setTimeZone(JSON.defaultTimeZone);\n//        java.sql.Date date = new java.sql.Date(sf.parse(\"2018-07-15\").getTime());\n//        String str = JSON.toJSONStringWithDateFormat(date, JSON.DEFFAULT_DATE_FORMAT);\n//        assertEquals(\"\\\"2018-07-15\\\"\", str);\n//    }\n//\n//    public void test_for_issue1() throws Exception {\n//        SimpleDateFormat sf = new SimpleDateFormat(\"yyyy-MM-dd\");\n//        sf.setTimeZone(JSON.defaultTimeZone);\n//        java.sql.Date date = new java.sql.Date(sf.parse(\"2018-07-15\").getTime());\n//        String str = JSON.toJSONStringWithDateFormat(date, JSON.DEFFAULT_DATE_FORMAT);\n//        assertEquals(\"\\\"2018-07-15\\\"\", str);\n//    }\n//\n//    public void test_for_issue2() throws Exception {\n//        SimpleDateFormat sf = new SimpleDateFormat(\"yyyy-MM-dd\");\n//        sf.setTimeZone(JSON.defaultTimeZone);\n//        java.sql.Date date = java.sql.Date.valueOf(\"2018-07-15\");\n//        String str = JSON.toJSONStringWithDateFormat(date, JSON.DEFFAULT_DATE_FORMAT);\n//        assertEquals(\"\\\"2018-07-15\\\"\", str);\n//    }\n\n    public void test_for_issue_time() throws Exception {\n        java.sql.Time date = java.sql.Time.valueOf(\"12:13:14\");\n        String str = JSON.toJSONStringWithDateFormat(date, JSON.DEFFAULT_DATE_FORMAT);\n        assertEquals(\"\\\"12:13:14\\\"\", str);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2100/Issue2164.java",
    "content": "package com.alibaba.json.bvt.issue_2100;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\npublic class Issue2164 extends TestCase {\n    public void test_for_issue() throws Exception {\n        java.sql.Timestamp ts = new java.sql.Timestamp(-65001600000L);\n        String json = JSON.toJSONString(ts);\n        assertEquals(\"-65001600000\", json);\n        java.sql.Timestamp ts2 = JSON.parseObject(json, java.sql.Timestamp.class);\n        assertEquals(ts.getTime(), ts2.getTime());\n    }\n\n    public void test_for_issue_1() throws Exception {\n        Model m = new Model(-65001600000L);\n        String json = JSON.toJSONString(m);\n        assertEquals(\"{\\\"time\\\":-65001600000}\", json);\n        Model m2 = JSON.parseObject(json, Model.class);\n        assertEquals(m.time.getTime(), m2.time.getTime());\n    }\n\n    public static class Model {\n        public java.sql.Timestamp time;\n\n        public Model() {\n\n        }\n\n        public Model(long ts) {\n            this.time = new java.sql.Timestamp(ts);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2100/Issue2165.java",
    "content": "package com.alibaba.json.bvt.issue_2100;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\npublic class Issue2165 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"9295260120\", Integer.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n        assertEquals(\"parseInt error\", error.getMessage());\n    }\n\n    public void test_for_issue_1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":9295260120}\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n        assertEquals(\"parseInt error, field : value\", error.getMessage());\n    }\n\n    public void test_for_issue_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[9295260120]\", Model.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n        assertEquals(\"parseInt error : 9295260120\", error.getMessage());\n    }\n\n    public static class Model {\n        public int value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2100/Issue2179.java",
    "content": "package com.alibaba.json.bvt.issue_2100;\n\nimport java.io.IOException;\nimport java.lang.reflect.Constructor;\nimport java.lang.reflect.Type;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.ObjectSerializer;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.StringCodec;\nimport com.alibaba.fastjson.spi.Module;\n\nimport junit.framework.TestCase;\n\npublic class Issue2179 extends TestCase {\n\n\t// 场景：序列化\n\tpublic void test_for_issue() throws Exception {\n\t\tModel1 model = new Model1(ProductType1.Phone, ProductType1.Computer);\n\t\tString out = \"{\\\"l_k_assbalv4\\\":{\\\"code\\\":1,\\\"prompt\\\":\\\"手机\\\"},\\\"type1\\\":{\\\"code\\\":2,\\\"prompt\\\":\\\"电脑\\\"}}\";\n\t\tAssert.assertEquals(out, JSON.toJSONString(model));\n\t}\n\n\t// 场景：使用@JSONType的deserializer = EnumAwareSerializer1.class测试自定义反序列化器\n\tpublic void test_for_issue2() {\n\t\tString str = \"{\\\"l_k_assbalv4\\\":{\\\"code\\\":1,\\\"prompt\\\":\\\"手机\\\"},\\\"type1\\\":{\\\"code\\\":2,\\\"prompt\\\":\\\"电脑\\\"}}\";\n\t\tModel1 model = JSON.parseObject(str, Model1.class);\n\t\tString out = \"{\\\"l_k_assbalv4\\\":{\\\"code\\\":1,\\\"prompt\\\":\\\"手机\\\"},\\\"type1\\\":{\\\"code\\\":2,\\\"prompt\\\":\\\"电脑\\\"}}\";\n\t\tAssert.assertEquals(out, JSON.toJSONString(model));\n\t}\n\n\t// 场景：使用@JSONField的deserializeUsing = EnumAwareSerializer2.class测试自定义测试自定义反序化器\n\tpublic void test_for_issue3() {\n\t\t// l_k_assbalv4对应Model2中的Type走自定义，type1走默认枚举反序列化\n\t\tString str = \"{\\\"l_k_assbalv4\\\":{\\\"code\\\":1,\\\"prompt\\\":\\\"手机\\\"},\\\"type1\\\":\\\"Computer\\\"}\";\n\t\tModel2 model = JSON.parseObject(str, Model2.class);\n\t\tString out = \"{\\\"l_k_assbalv4\\\":{\\\"code\\\":1,\\\"prompt\\\":\\\"手机\\\"},\\\"type1\\\":{\\\"code\\\":2,\\\"prompt\\\":\\\"电脑\\\"}}\";\n\t\tAssert.assertEquals(out, JSON.toJSONString(model));\n\t}\n\n\t// 场景：使用Module\n\tpublic void test_for_issue4() {\n\t\tParserConfig config = new ParserConfig();\n\t\tconfig.register(new MyModuel());\n\n\t\tString str = \"{\\\"type\\\":\\\"Phone\\\",\\\"type1\\\":\\\"Computer\\\"}\";\n\t\tModel3 model = JSON.parseObject(str, Model3.class, config);\n\t\tString out = \"{\\\"type\\\":{\\\"code\\\":2,\\\"prompt\\\":\\\"电脑\\\"},\\\"type1\\\":{\\\"code\\\":1,\\\"prompt\\\":\\\"手机\\\"}}\";\n\t\tAssert.assertEquals(out, JSON.toJSONString(model));\n\t}\n\n\tinterface EnumAware {\n\t\tint getCode();\n\n\t\tString getPrompt();\n\t}\n\n\t@JSONType(serializeEnumAsJavaBean = true, deserializer = EnumAwareSerializer1.class)\n\tpublic static enum ProductType1 implements EnumAware {\n\t\tPhone(1, \"手机\"), Computer(2, \"电脑\");\n\n\t\tpublic final int code;\n\t\tpublic final String prompt;\n\n\t\tProductType1(int code, String prompt) {\n\t\t\tthis.code = code;\n\t\t\tthis.prompt = prompt;\n\t\t}\n\n\t\t@Override\n\t\tpublic int getCode() {\n\t\t\treturn this.code;\n\t\t}\n\n\t\t@Override\n\t\tpublic String getPrompt() {\n\t\t\treturn this.prompt;\n\t\t}\n\n\t\tpublic static ProductType1 get(int code) {\n\t\t\tswitch (code) {\n\t\t\tcase 1:\n\t\t\t\treturn Phone;\n\t\t\tcase 2:\n\t\t\t\treturn Computer;\n\t\t\tdefault:\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static class Model1 {\n\t\t@JSONField(name = \"l_k_assbalv4\")\n\t\tprivate ProductType1 type;\n\t\tprivate ProductType1 type1;\n\n\t\tpublic Model1(ProductType1 type, ProductType1 type1) {\n\t\t\tthis.type = type;\n\t\t\tthis.type1 = type1;\n\t\t}\n\n\t\tpublic ProductType1 getType() {\n\t\t\treturn type;\n\t\t}\n\n\t\tpublic void setType(ProductType1 type) {\n\t\t\tthis.type = type;\n\t\t}\n\n\t\tpublic ProductType1 getType1() {\n\t\t\treturn type1;\n\t\t}\n\n\t\tpublic void setType1(ProductType1 type1) {\n\t\t\tthis.type1 = type1;\n\t\t}\n\t}\n\n\t@JSONType(serializeEnumAsJavaBean = true)\n\tpublic static enum ProductType2 implements EnumAware {\n\t\tPhone(1, \"手机\"), Computer(2, \"电脑\");\n\n\t\tpublic final int code;\n\t\tpublic final String prompt;\n\n\t\tProductType2(int code, String prompt) {\n\t\t\tthis.code = code;\n\t\t\tthis.prompt = prompt;\n\t\t}\n\n\t\t@Override\n\t\tpublic int getCode() {\n\t\t\treturn this.code;\n\t\t}\n\n\t\t@Override\n\t\tpublic String getPrompt() {\n\t\t\treturn this.prompt;\n\t\t}\n\n\t\tpublic static ProductType2 get(int code) {\n\t\t\tswitch (code) {\n\t\t\tcase 1:\n\t\t\t\treturn Phone;\n\t\t\tcase 2:\n\t\t\t\treturn Computer;\n\t\t\tdefault:\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static class Model2 {\n\t\t@JSONField(name = \"l_k_assbalv4\", deserializeUsing = EnumAwareSerializer2.class)\n\t\tprivate ProductType2 type;\n\t\tprivate ProductType2 type1;\n\n\t\tpublic Model2(ProductType2 type, ProductType2 type1) {\n\t\t\tthis.type = type;\n\t\t\tthis.type1 = type1;\n\t\t}\n\n\t\tpublic ProductType2 getType() {\n\t\t\treturn type;\n\t\t}\n\n\t\tpublic void setType(ProductType2 type) {\n\t\t\tthis.type = type;\n\t\t}\n\n\t\tpublic ProductType2 getType1() {\n\t\t\treturn type1;\n\t\t}\n\n\t\tpublic void setType1(ProductType2 type1) {\n\t\t\tthis.type1 = type1;\n\t\t}\n\t}\n\n\t@JSONType(serializeEnumAsJavaBean = true)\n\tpublic static enum ProductType3 implements EnumAware {\n\t\tPhone(1, \"手机\"), Computer(2, \"电脑\");\n\n\t\tpublic final int code;\n\t\tpublic final String prompt;\n\n\t\t@Override\n\t\tpublic int getCode() {\n\t\t\treturn this.code;\n\t\t}\n\n\t\tProductType3(int code, String prompt) {\n\t\t\tthis.code = code;\n\t\t\tthis.prompt = prompt;\n\t\t}\n\n\t\t@Override\n\t\tpublic String getPrompt() {\n\t\t\treturn this.prompt;\n\t\t}\n\n\t\tpublic static ProductType3 get(int code) {\n\t\t\tswitch (code) {\n\t\t\tcase 1:\n\t\t\t\treturn Phone;\n\t\t\tcase 2:\n\t\t\t\treturn Computer;\n\t\t\tdefault:\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static class Model3 {\n\t\tprivate ProductType3 type;\n\t\tprivate ProductType3 type1;\n\n\t\tpublic Model3(ProductType3 type, ProductType3 type1) {\n\t\t\tthis.type = type;\n\t\t\tthis.type1 = type1;\n\t\t}\n\n\t\tpublic ProductType3 getType() {\n\t\t\treturn type;\n\t\t}\n\n\t\tpublic void setType(ProductType3 type) {\n\t\t\tthis.type = type;\n\t\t}\n\n\t\tpublic ProductType3 getType1() {\n\t\t\treturn type1;\n\t\t}\n\n\t\tpublic void setType1(ProductType3 type1) {\n\t\t\tthis.type1 = type1;\n\t\t}\n\t}\n\n\tpublic static class EnumAwareSerializer1 implements ObjectDeserializer {\n\t\t@SuppressWarnings(\"unchecked\")\n\t\tpublic <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n\t\t\tString val = StringCodec.instance.deserialze(parser, type, fieldName);\n\t\t\tSystem.out.println(\"-----------------EnumAwareSerializer1.deserialze-----------------------------\");\n\t\t\tSystem.out.println(val);\n\t\t\treturn (T) ProductType1.get(JSON.parseObject(val).getInteger(\"code\"));\n\t\t}\n\n\t\t@Override\n\t\tpublic int getFastMatchToken() {\n\t\t\treturn JSONToken.LITERAL_STRING;\n\t\t}\n\t}\n\n\tpublic static class EnumAwareSerializer2 implements ObjectDeserializer {\n\t\t@SuppressWarnings(\"unchecked\")\n\t\tpublic <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n\t\t\tString val = StringCodec.instance.deserialze(parser, type, fieldName);\n\t\t\tSystem.out.println(\"-----------------EnumAwareSerializer2.deserialze-----------------------------\");\n\t\t\tSystem.out.println(val);\n\t\t\treturn (T) ProductType2.get(JSON.parseObject(val).getInteger(\"code\"));\n\t\t}\n\n\t\t@Override\n\t\tpublic int getFastMatchToken() {\n\t\t\treturn JSONToken.LITERAL_STRING;\n\t\t}\n\t}\n\n\tpublic static class MyModuel implements Module {\n\n\t\t@SuppressWarnings(\"rawtypes\")\n\t\t@Override\n\t\tpublic ObjectDeserializer createDeserializer(ParserConfig config, Class type) {\n\t\t\treturn new ObjectDeserializer() {\n\t\t\t\t@SuppressWarnings(\"unchecked\")\n\t\t\t\t@Override\n\t\t\t\tpublic <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n\t\t\t\t\tString val = StringCodec.instance.deserialze(parser, type, fieldName);\n\t\t\t\t\tSystem.out.println(\"-----------MyModuel.deserialze------------------------\");\n\t\t\t\t\tSystem.out.println(val);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tConstructor c = Class.forName(type.getTypeName()).getDeclaredConstructor(ProductType3.class,\n\t\t\t\t\t\t\t\tProductType3.class);\n\t\t\t\t\t\treturn (T) c.newInstance(ProductType3.Computer, ProductType3.Phone);\n\t\t\t\t\t} catch (Exception e) {\n\t\t\t\t\t\te.printStackTrace();\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t@Override\n\t\t\t\tpublic int getFastMatchToken() {\n\t\t\t\t\treturn JSONToken.LITERAL_STRING;\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t@SuppressWarnings(\"rawtypes\")\n\t\t@Override\n\t\tpublic ObjectSerializer createSerializer(SerializeConfig config, Class type) {\n\t\t\treturn new ObjectSerializer() {\n\t\t\t\t@Override\n\t\t\t\tpublic void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType,\n\t\t\t\t\t\tint features) throws IOException {\n\t\t\t\t\tSerializeWriter out = serializer.out;\n\t\t\t\t\tif (object == null) {\n\t\t\t\t\t\tout.writeNull();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tSystem.err.println(\"--------------MyModuel.write-------------------------\");\n\n\t\t\t\t\tStringCodec.instance.write(serializer, ((ProductType3) object).name(), fieldName, fieldType,\n\t\t\t\t\t\t\tfeatures);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2100/Issue2182.java",
    "content": "package com.alibaba.json.bvt.issue_2100;\n\nimport com.alibaba.fastjson.JSON;\nimport com.google.common.collect.ArrayListMultimap;\nimport com.google.common.collect.Multimap;\nimport junit.framework.TestCase;\n\npublic class Issue2182 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Multimap<String, String> multimap = ArrayListMultimap.create();\n        multimap.put(\"admin\", \"admin.create\");\n        multimap.put(\"admin\", \"admin.update\");\n        multimap.put(\"admin\", \"admin.delete\");\n        multimap.put(\"user\", \"user.create\");\n        multimap.put(\"user\", \"user.delete\");\n\n        String json = JSON.toJSONString(multimap);\n        assertEquals(\"{\\\"admin\\\":[\\\"admin.create\\\",\\\"admin.update\\\",\\\"admin.delete\\\"],\\\"user\\\":[\\\"user.create\\\",\\\"user.delete\\\"]}\", json);\n\n        ArrayListMultimap multimap1 = JSON.parseObject(json, ArrayListMultimap.class);\n\n        assertEquals(multimap.size(), multimap1.size());\n        assertEquals(json, JSON.toJSONString(multimap1));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2100/Issue2185.java",
    "content": "package com.alibaba.json.bvt.issue_2100;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\nimport java.util.Date;\nimport java.util.HashMap;\n\npublic class Issue2185 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        Exception error = null;\n        try {\n            JSONObject origin = new JSONObject();\n            JSONArray jsonArray = new JSONArray().fluentAdd(origin.getInnerMap());\n            jsonArray.getJSONObject(0).put(\"key\", \"value\");\n            // now we expect jsonArray is [{\"key\":\"value\"}]\n            assertEquals(1, jsonArray.getJSONObject(0).size());\n            assertTrue(origin.getInnerMap() == jsonArray.getJSONObject(0).getInnerMap());\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNull(error);\n    }\n\n    /**\n     * To prove casting from Map&lt;Object,Object&gt; won't cause exception\n     *\n     * @throws Exception\n     */\n    public void test_for_issue_1() throws Exception {\n        Exception error = null;\n        try {\n            HashMap origin = new HashMap();\n            origin.put(new Object(), \"value\");\n            JSONArray jsonArray = new JSONArray().fluentAdd(origin);\n            jsonArray.getJSONObject(0);\n            // now jsonArray is [{{}:\"value\"}]\n            assertEquals(1, jsonArray.getJSONObject(0).size());\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNull(error);\n    }\n\n    /**\n     * To prove casting from Map&lt;primitive type, Object&gt; won't cause exception\n     *\n     * @throws Exception\n     */\n    public void test_for_issue_2() throws Exception {\n        Exception error = null;\n        try {\n            HashMap origin = new HashMap();\n            origin.put(5.3f, \"value\");\n            JSONArray jsonArray = new JSONArray().fluentAdd(origin);\n            jsonArray.getJSONObject(0);\n            // now jsonArray is [{5.3:\"value\"}]\n            assertEquals(1, jsonArray.getJSONObject(0).size());\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNull(error);\n    }\n\n    /**\n     * To prove casting from Map&lt;Date, Object&gt; won't cause exception\n     *\n     * @throws Exception\n     */\n    public void test_for_issue_3() throws Exception {\n        Exception error = null;\n        try {\n            HashMap origin = new HashMap();\n            origin.put(new Date(), \"value\");\n            JSONArray jsonArray = new JSONArray().fluentAdd(origin);\n            jsonArray.getJSONObject(0);\n            // now jsonArray is [{154xxxxxxxxx:\"value\"}]\n            assertEquals(1, jsonArray.getJSONObject(0).size());\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNull(error);\n    }\n\n    public static class Model {\n        public int value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2100/Issue2189.java",
    "content": "package com.alibaba.json.bvt.issue_2100;\n\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\npublic class Issue2189 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String str = \"[{\\\"id\\\":\\\"1\\\",\\\"name\\\":\\\"a\\\"},{\\\"id\\\":\\\"2\\\",\\\"name\\\":\\\"b\\\"}]\";\n        assertEquals(\"[\\\"1\\\",\\\"2\\\"]\",\n                JSONPath.extract(str, \"$.*.id\")\n                        .toString()\n        );\n    }\n\n    public void test_for_issue_1() throws Exception {\n        String str = \"[{\\\"id\\\":\\\"1\\\",\\\"name\\\":\\\"a\\\"},{\\\"id\\\":\\\"2\\\",\\\"name\\\":\\\"b\\\"}]\";\n        assertEquals(\"[\\\"2\\\"]\",\n                JSONPath.extract(str, \"$.*[?(@.name=='b')].id\")\n                        .toString()\n        );\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/Issue2201.java",
    "content": "package com.alibaba.json.bvt.issue_2200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\npublic class Issue2201 extends TestCase  {\n    public void test_for_issue() throws Exception {\n        ParserConfig.getGlobalInstance().register(\"M2001\", Model.class);\n\n        String json = \"{\\\"@type\\\":\\\"M2001\\\",\\\"id\\\":3}\";\n        Model m = (Model) JSON.parseObject(json, Object.class);\n        assertEquals(3, m.id);\n    }\n\n    public static class Model {\n        public int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/Issue2206.java",
    "content": "package com.alibaba.json.bvt.issue_2200;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.time.LocalDateTime;\n\npublic class Issue2206 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSON.parseObject(\"{\\\"date\\\":\\\"20181229162849\\\"}\", Model.class);\n    }\n\n    public static class Model {\n        public LocalDateTime date;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/Issue2214.java",
    "content": "package com.alibaba.json.bvt.issue_2200;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Type;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class Issue2214 extends TestCase {\n    public void test_for_issue() throws Exception {\n        List list = new ArrayList();\n        list.add(\"robin\");\n        Object[] args = new Object[]{new List[][]{new List[]{list}}};\n        String text = JSON.toJSONString(args);\n        Class clazz = User.class;\n        Method method = clazz.getMethod(\"testGenericArrayArray2\", List[][].class);\n        Type[] types = method.getGenericParameterTypes();\n        List argList = JSON.parseArray(text, types);\n        Object res = new User().testGenericArrayArray2((List[][]) argList.get(0));\n        System.out.println(res);\n    }\n\n    public static class User {\n        public List[][] testGenericArrayArray2(List[][] res){\n            return res;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/Issue2216.java",
    "content": "package com.alibaba.json.bvt.issue_2200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport java.util.Date;\n\npublic class Issue2216 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"value\\\":\\\"20181229162849000+0800\\\"}\", Model.class);\n        assertNotNull(model);\n        assertNotNull(model.value);\n        assertEquals(1546072129000L, model.value.getTime());\n    }\n\n    public void test_for_issue_2() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"value\\\":\\\"20181229162849000+0800\\\"}\").toJavaObject(Model.class);\n        assertNotNull(model);\n        assertNotNull(model.value);\n        assertEquals(1546072129000L, model.value.getTime());\n    }\n\n    public static class Model {\n        @JSONField(format = \"yyyyMMddHHmmssSSSZ\")\n        public Date value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/Issue2224.java",
    "content": "package com.alibaba.json.bvt.issue_2200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.json.bvt.issue_2200.issue2224.PersonCollection;\nimport com.alibaba.json.bvt.issue_2200.issue2224_2.PersonGroupedCollection;\nimport com.alibaba.json.bvt.issue_2200.issue2224_3.ArrayPersonGroupedCollection;\nimport com.alibaba.json.bvt.issue_2200.issue2224_4.MAPersonGroupedCollection;\nimport com.alibaba.json.bvt.issue_2200.issue2224_5.MA2PersonGroupedCollection;\nimport junit.framework.TestCase;\n\npublic class Issue2224 extends TestCase {\n    //support inherit with other parameterized type\n    public void test_for_issue() {\n        String json = \"[{\\\"idNo\\\":\\\"123456\\\",\\\"name\\\":\\\"tom\\\"},{\\\"idNo\\\":\\\"123457\\\",\\\"name\\\":\\\"jack\\\"}]\";\n        PersonCollection personCollection = JSON.parseObject(json, PersonCollection.class);\n        assertNotNull(personCollection);\n        assertEquals(2, personCollection.size());\n        assertEquals(\"tom\", personCollection.get(\"123456\").getName());\n        assertEquals(\"jack\", personCollection.get(\"123457\").getName());\n        String json2 = JSON.toJSONString(personCollection);\n        assertNotNull(json2);\n    }\n\n    //support inherit with other parameterized type and item type is generic\n    public void test_for_issue_2() {\n        String json = \"[[{\\\"idNo\\\":\\\"123\\\",\\\"name\\\":\\\"张三\\\"},{\\\"idNo\\\":\\\"124\\\",\\\"name\\\":\\\"张三\\\"}],[{\\\"idNo\\\":\\\"223\\\",\\\"name\\\":\\\"李四\\\"},{\\\"idNo\\\":\\\"224\\\",\\\"name\\\":\\\"李四\\\"}]]\";\n        PersonGroupedCollection personCollection = JSON.parseObject(json, PersonGroupedCollection.class);\n        assertNotNull(personCollection);\n        assertEquals(2, personCollection.size());\n        assertEquals(2, personCollection.get(\"张三\").size());\n        assertEquals(\"123\", personCollection.get(\"张三\").get(0).getIdNo());\n        assertEquals(\"张三\", personCollection.get(\"张三\").get(0).getName());\n        assertEquals(\"124\", personCollection.get(\"张三\").get(1).getIdNo());\n        assertEquals(\"张三\", personCollection.get(\"张三\").get(1).getName());\n        assertEquals(2, personCollection.get(\"李四\").size());\n        assertEquals(\"223\", personCollection.get(\"李四\").get(0).getIdNo());\n        assertEquals(\"李四\", personCollection.get(\"李四\").get(0).getName());\n        assertEquals(\"224\", personCollection.get(\"李四\").get(1).getIdNo());\n        assertEquals(\"李四\", personCollection.get(\"李四\").get(1).getName());\n        String json2 = JSON.toJSONString(personCollection);\n        assertNotNull(json2);\n    }\n\n    //support inherit with other parameterized type and item type is bean array\n    public void test_for_issue_3() {\n        String json = \"[[{\\\"idNo\\\":\\\"123\\\",\\\"name\\\":\\\"张三\\\"},{\\\"idNo\\\":\\\"124\\\",\\\"name\\\":\\\"张三\\\"}],[{\\\"idNo\\\":\\\"223\\\",\\\"name\\\":\\\"李四\\\"},{\\\"idNo\\\":\\\"224\\\",\\\"name\\\":\\\"李四\\\"}]]\";\n        ArrayPersonGroupedCollection personCollection = JSON.parseObject(json, ArrayPersonGroupedCollection.class);\n        assertNotNull(personCollection);\n        assertEquals(2, personCollection.size());\n        assertEquals(2, personCollection.get(\"张三\").length);\n        assertEquals(\"123\", personCollection.get(\"张三\")[0].getIdNo());\n        assertEquals(\"张三\", personCollection.get(\"张三\")[0].getName());\n        assertEquals(\"124\", personCollection.get(\"张三\")[1].getIdNo());\n        assertEquals(\"张三\", personCollection.get(\"张三\")[1].getName());\n        assertEquals(2, personCollection.get(\"李四\").length);\n        assertEquals(\"223\", personCollection.get(\"李四\")[0].getIdNo());\n        assertEquals(\"李四\", personCollection.get(\"李四\")[0].getName());\n        assertEquals(\"224\", personCollection.get(\"李四\")[1].getIdNo());\n        assertEquals(\"李四\", personCollection.get(\"李四\")[1].getName());\n        String json2 = JSON.toJSONString(personCollection);\n        assertNotNull(json2);\n    }\n\n    //support inherit with other parameterized type and item type is generic array\n    public void test_for_issue_4() {\n        String json = \"[[{\\\"idNo\\\":\\\"123\\\",\\\"name\\\":\\\"张三\\\"},{\\\"idNo\\\":\\\"124\\\",\\\"name\\\":\\\"张三\\\"}],[{\\\"idNo\\\":\\\"223\\\",\\\"name\\\":\\\"李四\\\"},{\\\"idNo\\\":\\\"224\\\",\\\"name\\\":\\\"李四\\\"}]]\";\n        MAPersonGroupedCollection personCollection = JSON.parseObject(json, MAPersonGroupedCollection.class);\n        assertNotNull(personCollection);\n        assertEquals(2, personCollection.size());\n        assertEquals(2, personCollection.get(\"张三\").length);\n        assertEquals(\"123\", personCollection.get(\"张三\")[0].get(\"idNo\"));\n        assertEquals(\"张三\", personCollection.get(\"张三\")[0].get(\"name\"));\n        assertEquals(\"124\", personCollection.get(\"张三\")[1].get(\"idNo\"));\n        assertEquals(\"张三\", personCollection.get(\"张三\")[1].get(\"name\"));\n        assertEquals(2, personCollection.get(\"李四\").length);\n        assertEquals(\"223\", personCollection.get(\"李四\")[0].get(\"idNo\"));\n        assertEquals(\"李四\", personCollection.get(\"李四\")[0].get(\"name\"));\n        assertEquals(\"224\", personCollection.get(\"李四\")[1].get(\"idNo\"));\n        assertEquals(\"李四\", personCollection.get(\"李四\")[1].get(\"name\"));\n        String json2 = JSON.toJSONString(personCollection);\n        assertNotNull(json2);\n    }\n\n    //support inherit with other parameterized type and item type is generic array contains array\n    public void test_for_issue_5() {\n        String json = \"[[{\\\"idNo\\\":[\\\"123\\\",\\\"123x\\\"],\\\"name\\\":[\\\"张三\\\",\\\"张三一\\\"]},{\\\"idNo\\\":[\\\"124\\\",\\\"124x\\\"],\\\"name\\\":[\\\"张三\\\",\\\"张三一\\\"]}],[{\\\"idNo\\\":[\\\"223\\\",\\\"223y\\\"],\\\"name\\\":[\\\"李四\\\",\\\"李小四\\\"]},{\\\"idNo\\\":[\\\"224\\\",\\\"224y\\\"],\\\"name\\\":[\\\"李四\\\",\\\"李小四\\\"]}]]\";\n        MA2PersonGroupedCollection personCollection = JSON.parseObject(json, MA2PersonGroupedCollection.class);\n        assertNotNull(personCollection);\n        assertEquals(2, personCollection.size());\n        assertEquals(2, personCollection.get(\"张三\").length);\n        assertEquals(2, personCollection.get(\"张三\")[0].get(\"idNo\").length);\n        assertEquals(\"123\", personCollection.get(\"张三\")[0].get(\"idNo\")[0]);\n        assertEquals(\"123x\", personCollection.get(\"张三\")[0].get(\"idNo\")[1]);\n        assertEquals(2, personCollection.get(\"张三\")[0].get(\"name\").length);\n        assertEquals(\"张三\", personCollection.get(\"张三\")[0].get(\"name\")[0]);\n        assertEquals(\"张三一\", personCollection.get(\"张三\")[0].get(\"name\")[1]);\n        assertEquals(2, personCollection.get(\"张三\")[1].get(\"idNo\").length);\n        assertEquals(\"124\", personCollection.get(\"张三\")[1].get(\"idNo\")[0]);\n        assertEquals(\"124x\", personCollection.get(\"张三\")[1].get(\"idNo\")[1]);\n        assertEquals(2, personCollection.get(\"张三\")[1].get(\"name\").length);\n        assertEquals(\"张三\", personCollection.get(\"张三\")[1].get(\"name\")[0]);\n        assertEquals(\"张三一\", personCollection.get(\"张三\")[1].get(\"name\")[1]);\n        assertEquals(2, personCollection.get(\"李四\").length);\n        assertEquals(2, personCollection.get(\"李四\")[0].get(\"idNo\").length);\n        assertEquals(\"223\", personCollection.get(\"李四\")[0].get(\"idNo\")[0]);\n        assertEquals(\"223y\", personCollection.get(\"李四\")[0].get(\"idNo\")[1]);\n        assertEquals(2, personCollection.get(\"李四\")[0].get(\"name\").length);\n        assertEquals(\"李四\", personCollection.get(\"李四\")[0].get(\"name\")[0]);\n        assertEquals(\"李小四\", personCollection.get(\"李四\")[0].get(\"name\")[1]);\n        assertEquals(2, personCollection.get(\"李四\")[1].get(\"idNo\").length);\n        assertEquals(\"224\", personCollection.get(\"李四\")[1].get(\"idNo\")[0]);\n        assertEquals(\"224y\", personCollection.get(\"李四\")[1].get(\"idNo\")[1]);\n        assertEquals(2, personCollection.get(\"李四\")[1].get(\"name\").length);\n        assertEquals(\"李四\", personCollection.get(\"李四\")[1].get(\"name\")[0]);\n        assertEquals(\"李小四\", personCollection.get(\"李四\")[1].get(\"name\")[1]);\n        String json2 = JSON.toJSONString(personCollection);\n        assertNotNull(json2);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/Issue2229.java",
    "content": "package com.alibaba.json.bvt.issue_2200;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.Date;\n\npublic class Issue2229 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Jon jon = JSON.parseObject(\"{\\\"dStr\\\":\\\"         hahahaha        \\\",\\\"user\\\":{\\\"createtime\\\":null,\\\"id\\\":0,\\\"username\\\":\\\"  asdfsadf  asdf  asdf  \\\"}}\", Jon.class);\n        assertEquals(\"  asdfsadf  asdf  asdf  \", jon.user.username);\n    }\n\n    public void test_for_issue1() throws Exception {\n        Jon jon1 = JSON.parseObject(\"{'dStr':'         hahahaha        ','user':{'createtime':null,'id':0,'username':'  asdfsadf  asdf  asdf  '}}\", Jon.class);\n        assertEquals(\"  asdfsadf  asdf  asdf  \", jon1.user.username);\n    }\n\n    public static class Jon {\n        public String dStr;\n        public User user;\n    }\n\n    public static class User {\n        public int id;\n        public Date createtime;\n        public String username;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/Issue2234.java",
    "content": "package com.alibaba.json.bvt.issue_2200;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\npublic class Issue2234 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String userStr = \"{\\\"name\\\":\\\"asdfad\\\",\\\"ss\\\":\\\"\\\"}\";\n        User user = JSON.parseObject(userStr, User.class);\n    }\n\n    public static class User {\n        public String name;\n        public List ss;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/Issue2238.java",
    "content": "package com.alibaba.json.bvt.issue_2200;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.math.BigDecimal;\n\npublic class Issue2238 extends TestCase {\n    public void test_for_issue() throws Exception {\n        CapitalLimitMonenyDTO capitalLimitMonenyDTO =new CapitalLimitMonenyDTO();\n        capitalLimitMonenyDTO.setMaxChargeMoney(new BigDecimal(\"200000\"));\n        capitalLimitMonenyDTO.setMinChargeMoney(new BigDecimal(0.01));\n        capitalLimitMonenyDTO.setMaxWithdrawMoney(new BigDecimal(0.01));\n        capitalLimitMonenyDTO.setMinWithdrawMoney(new BigDecimal(\"500000\"));\n        System.out.println(JSON.toJSONString(capitalLimitMonenyDTO));\n    }\n\n    public static class CapitalLimitMonenyDTO {\n        private BigDecimal maxChargeMoney;\n        private BigDecimal minChargeMoney;\n        private BigDecimal maxWithdrawMoney;\n        private BigDecimal minWithdrawMoney;\n\n        public BigDecimal getMaxChargeMoney() {\n            return maxChargeMoney;\n        }\n\n        public void setMaxChargeMoney(BigDecimal maxChargeMoney) {\n            this.maxChargeMoney = maxChargeMoney;\n        }\n\n        public BigDecimal getMinChargeMoney() {\n            return minChargeMoney;\n        }\n\n        public void setMinChargeMoney(BigDecimal minChargeMoney) {\n            this.minChargeMoney = minChargeMoney;\n        }\n\n        public BigDecimal getMaxWithdrawMoney() {\n            return maxWithdrawMoney;\n        }\n\n        public void setMaxWithdrawMoney(BigDecimal maxWithdrawMoney) {\n            this.maxWithdrawMoney = maxWithdrawMoney;\n        }\n\n        public BigDecimal getMinWithdrawMoney() {\n            return minWithdrawMoney;\n        }\n\n        public void setMinWithdrawMoney(BigDecimal minWithdrawMoney) {\n            this.minWithdrawMoney = minWithdrawMoney;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/Issue2239.java",
    "content": "package com.alibaba.json.bvt.issue_2200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\npublic class Issue2239 extends TestCase {\n    public void test_for_issue() throws Exception {\n\n        String json = \"{\\\"page\\\":{}}\";\n\n        BaseResponse<Bean> bean = JSON.parseObject(json,\n                new TypeReference<BaseResponse<Bean>>() {\n                });\n//        bean.getPage().getList(); // 得到的是空\n    }\n\n    public static class Bean {\n\n    }\n\n    public static class BaseResponse<T> {\n\n        private PageBean<T> page;\n\n\n\n        public PageBean<T> getPage() {\n            return page;\n        }\n    }\n\n    public static class PageBean<T> {\n\n        private List<T> list;\n\n        public List<T> getList() {\n            return list;\n        }\n\n        public void setList(List<T> list) {\n            this.list = list;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/Issue2240.java",
    "content": "package com.alibaba.json.bvt.issue_2200;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.Collections;\nimport java.util.Map;\n\npublic class Issue2240 extends TestCase {\n    public void test_for_issue() throws Exception {\n        ResultMap resultMap = new ResultMap();\n        resultMap.setA(Collections.<Long, Integer>emptyMap());\n        resultMap.setB(Collections.<Long, Integer>emptyMap());\n        assertEquals(\"{\\\"a\\\":{},\\\"b\\\":{}}\", JSON.toJSONString(resultMap));\n\n    }\n\n    public static class ResultMap {\n        private Map<Long, Integer> a;\n        private Map<Long, Integer> b;\n\n        public Map<Long, Integer> getA() {\n            return a;\n        }\n\n        public void setA(Map<Long, Integer> a) {\n            this.a = a;\n        }\n\n        public Map<Long, Integer> getB() {\n            return b;\n        }\n\n        public void setB(Map<Long, Integer> b) {\n            this.b = b;\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/Issue2241.java",
    "content": "package com.alibaba.json.bvt.issue_2200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport org.joda.time.LocalDateTime;\n\nimport java.time.ZonedDateTime;\nimport java.util.Calendar;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\npublic class Issue2241 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n\n    public void test_for_issue() throws Exception {\n        String text = \"{\\\"createTime\\\":1548166745}\";\n\n        Order o = JSON.parseObject(text, Order.class);\n        assertEquals(1548166745000L, o.createTime.getTime());\n\n        String json = JSON.toJSONString(o);\n        assertEquals(\"{\\\"createTime\\\":1548166745}\", json);\n    }\n\n    public void test_for_issue2() throws Exception {\n        String text = \"{\\\"createTime\\\":1548166745}\";\n\n        Order2 o = JSON.parseObject(text, Order2.class);\n        assertEquals(1548166745000L, o.createTime.getTimeInMillis());\n\n        String json = JSON.toJSONString(o);\n        assertEquals(\"{\\\"createTime\\\":1548166745}\", json);\n    }\n\n    public void test_for_issue3() throws Exception {\n        String text = \"{\\\"createTime\\\":\\\"20180714224948\\\"}\";\n\n        Order3 o = JSON.parseObject(text, Order3.class);\n        assertEquals(1531579788000L, o.createTime.getTimeInMillis());\n\n        String json = JSON.toJSONString(o);\n        assertEquals(\"{\\\"createTime\\\":\\\"20180714224948\\\"}\", json);\n    }\n\n    public void test_for_issue4() throws Exception {\n        String text = \"{\\\"createTime\\\":1548166745}\";\n\n        Order4 o = JSON.parseObject(text, Order4.class);\n        assertEquals(1548166745L, o.createTime.toEpochSecond());\n\n        String json = JSON.toJSONString(o);\n        assertEquals(\"{\\\"createTime\\\":1548166745}\", json);\n    }\n\n    public static class Order {\n        @JSONField(format = \"unixtime\")\n        public Date createTime;\n    }\n\n    public static class Order2 {\n        @JSONField(format = \"unixtime\")\n        public Calendar createTime;\n    }\n\n    public static class Order3 {\n        @JSONField(format = \"yyyyMMddHHmmss\")\n        public Calendar createTime;\n    }\n\n    public static class Order4 {\n        @JSONField(format = \"unixtime\")\n        public ZonedDateTime createTime;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/Issue2244.java",
    "content": "package com.alibaba.json.bvt.issue_2200;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.Date;\n\npublic class Issue2244 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String str = \"\\\"2019-01-14T06:32:09.029Z\\\"\";\n        JSON.parseObject(str, Date.class);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/Issue2249.java",
    "content": "package com.alibaba.json.bvt.issue_2200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\npublic class Issue2249 extends TestCase {\n    public void test_for_issue() throws Exception {\n        assertSame(Type.Big, JSON.parseObject(\"\\\"big\\\"\", Type.class));\n        assertSame(Type.Big, JSON.parseObject(\"\\\"Big\\\"\", Type.class));\n        assertSame(Type.Big, JSON.parseObject(\"\\\"BIG\\\"\", Type.class));\n        assertSame(Type.Small, JSON.parseObject(\"\\\"Small\\\"\", Type.class));\n        assertSame(Type.Small, JSON.parseObject(\"\\\"small\\\"\", Type.class));\n        assertSame(Type.Small, JSON.parseObject(\"\\\"SMALL\\\"\", Type.class));\n        assertSame(Type.Medium, JSON.parseObject(\"\\\"medium\\\"\", Type.class));\n        assertSame(Type.Medium, JSON.parseObject(\"\\\"MEDIUM\\\"\", Type.class));\n        assertSame(Type.Medium, JSON.parseObject(\"\\\"Medium\\\"\", Type.class));\n        assertSame(Type.Medium, JSON.parseObject(\"\\\"MediuM\\\"\", Type.class));\n        assertNull(JSON.parseObject(\"\\\"\\\"\", Type.class));\n    }\n\n    public void test_for_issue_1() throws Exception {\n        assertSame(Type.Big, JSON.parseObject(\"{\\\"type\\\":\\\"bIG\\\"}\", Model.class).type);\n        assertSame(Type.Big, JSON.parseObject(\"{\\\"type\\\":\\\"big\\\"}\", Model.class).type);\n        assertSame(Type.Big, JSON.parseObject(\"{\\\"type\\\":\\\"Big\\\"}\", Model.class).type);\n        assertSame(Type.Big, JSON.parseObject(\"{\\\"type\\\":\\\"BIG\\\"}\", Model.class).type);\n\n        assertSame(Type.Small, JSON.parseObject(\"{\\\"type\\\":\\\"Small\\\"}\", Model.class).type);\n        assertSame(Type.Small, JSON.parseObject(\"{\\\"type\\\":\\\"SmAll\\\"}\", Model.class).type);\n        assertSame(Type.Small, JSON.parseObject(\"{\\\"type\\\":\\\"small\\\"}\", Model.class).type);\n        assertSame(Type.Small, JSON.parseObject(\"{\\\"type\\\":\\\"SMALL\\\"}\", Model.class).type);\n\n        assertSame(Type.Medium, JSON.parseObject(\"{\\\"type\\\":\\\"Medium\\\"}\", Model.class).type);\n        assertSame(Type.Medium, JSON.parseObject(\"{\\\"type\\\":\\\"MediuM\\\"}\", Model.class).type);\n        assertSame(Type.Medium, JSON.parseObject(\"{\\\"type\\\":\\\"medium\\\"}\", Model.class).type);\n        assertSame(Type.Medium, JSON.parseObject(\"{\\\"type\\\":\\\"MEDIUM\\\"}\", Model.class).type);\n\n    }\n\n    public void test_for_issue_null() throws Exception {\n        assertNull(JSON.parseObject(\"{\\\"type\\\":\\\"\\\"}\", Model.class).type);\n    }\n\n    public void test_for_issue_null_2() throws Exception {\n        assertNull(JSON.parseObject(\"{\\\"type\\\":\\\"\\\"}\", Model.class, Feature.ErrorOnEnumNotMatch).type);\n    }\n\n\n    public void test_for_issue_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"\\\"xxx\\\"\", Type.class, Feature.ErrorOnEnumNotMatch);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n    }\n\n    public void test_for_issue_error_1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"type\\\":\\\"xxx\\\"}\", Model.class, Feature.ErrorOnEnumNotMatch);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n    }\n\n    public enum  Type {\n        Big,Small,Medium\n    }\n\n    public static class Model {\n        public Type type;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/Issue2251.java",
    "content": "package com.alibaba.json.bvt.issue_2200;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.LinkedList;\nimport java.util.Queue;\n\npublic class Issue2251 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model m = new Model();\n        m.queue = new LinkedList();\n        m.queue.add(1);\n        m.queue.add(2);\n\n        String str = JSON.toJSONString(m);\n        Model m2 = JSON.parseObject(str, Model.class);\n        assertNotNull(m2.queue);\n    }\n\n    public static class Model {\n        public Queue queue;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/Issue2253.java",
    "content": "package com.alibaba.json.bvt.issue_2200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.util.ArrayList;\nimport java.util.LinkedHashMap;\nimport java.util.List;\nimport java.util.Map;\n\npublic class Issue2253 extends TestCase {\n    public void test_for_issue() throws Exception {\n        List<Map<String, Object>> result = new ArrayList();\n        result.add(new LinkedHashMap());\n        result.get(0).put(\"3\", 3);\n        result.get(0).put(\"2\", 2);\n        result.get(0).put(\"7\", 7);\n\n        assertEquals(\"[{\\\"3\\\":3,\\\"2\\\":2,\\\"7\\\":7}]\", JSON.toJSONString(result, SerializerFeature.WriteMapNullValue));\n\n        result = JSON.parseObject(JSON.toJSONString(result, SerializerFeature.WriteMapNullValue), new TypeReference<List<Map<String, Object>>>() {}, Feature.OrderedField);\n\n        assertEquals(\"[{\\\"3\\\":3,\\\"2\\\":2,\\\"7\\\":7}]\", JSON.toJSONString(result, SerializerFeature.WriteMapNullValue));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/Issue2254.java",
    "content": "package com.alibaba.json.bvt.issue_2200;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\npublic class Issue2254 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String jsonString = \"{\\\"a\\\":[1.0,2.0]}\"; //{\"a\":[1.0,2.0]}\n        Exception error = null;\n        try {\n            JSON.parseObject(jsonString, TestClass.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public static class TestClass {\n        public float[][] a;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/Issue2260.java",
    "content": "package com.alibaba.json.bvt.issue_2200;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.time.LocalDateTime;\nimport java.time.ZonedDateTime;\nimport java.util.Calendar;\n\npublic class Issue2260 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"{\\\"date\\\":\\\"1950-07-14\\\"}\";\n        M1 m = JSON.parseObject(json, M1.class);\n        assertEquals(1950, m.date.get(Calendar.YEAR));\n    }\n\n    public void test_for_jdk8_zdt_1() throws Exception {\n        String json = \"{\\\"date\\\":\\\"1950-07-14\\\"}\";\n        M2 m = JSON.parseObject(json, M2.class);\n        assertEquals(1950, m.date.getYear());\n    }\n\n    public void test_for_jdk8_zdt_2() throws Exception {\n        String json = \"{\\\"date\\\":\\\"1950-07-14 12:23:34\\\"}\";\n        M2 m = JSON.parseObject(json, M2.class);\n        assertEquals(1950, m.date.getYear());\n    }\n\n    public void test_for_jdk8_zdt_3() throws Exception {\n        String json = \"{\\\"date\\\":\\\"1950-07-14T12:23:34\\\"}\";\n        M2 m = JSON.parseObject(json, M2.class);\n        assertEquals(1950, m.date.getYear());\n    }\n\n    public void test_for_jdk8_ldt_1() throws Exception {\n        String json = \"{\\\"date\\\":\\\"1950-07-14\\\"}\";\n        M3 m = JSON.parseObject(json, M3.class);\n        assertEquals(1950, m.date.getYear());\n    }\n\n    public void test_for_jdk8_ldt_2() throws Exception {\n        String json = \"{\\\"date\\\":\\\"1950-07-14 12:23:34\\\"}\";\n        M3 m = JSON.parseObject(json, M3.class);\n        assertEquals(1950, m.date.getYear());\n    }\n\n    public void test_for_jdk8_ldt_3() throws Exception {\n        String json = \"{\\\"date\\\":\\\"1950-07-14T12:23:34\\\"}\";\n        M3 m = JSON.parseObject(json, M3.class);\n        assertEquals(1950, m.date.getYear());\n    }\n\n    public static class M1 {\n        public Calendar date;\n    }\n\n    public static class M2 {\n        public ZonedDateTime date;\n    }\n\n    public static class M3 {\n        public LocalDateTime date;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/Issue2262.java",
    "content": "package com.alibaba.json.bvt.issue_2200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\npublic class Issue2262 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model m = new Model();\n        m.javaVersion = \"1.6\";\n\n        String json = JSON.toJSONString(m);\n        assertEquals(\"{\\\"java.version\\\":\\\"1.6\\\"}\", json);\n\n        Model m2 = JSON.parseObject(json, Model.class);\n        assertNotNull(m2);\n        assertEquals(m.javaVersion, m2.javaVersion);\n    }\n\n    public static class Model {\n        @JSONField(name = \"java.version\")\n        public String javaVersion;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/Issue2264.java",
    "content": "package com.alibaba.json.bvt.issue_2200;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\npublic class Issue2264 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String oID=\"{\\\"sys\\\":\\\"ROC\\\",\\\"code\\\":0,\\\"messages\\\":\\\"分页获取信息成功！\\\",\\\"data\\\":{\\\"pageNum\\\":1,\\\"pageSize\\\":10,\\\"totalPages\\\":11,\\\"total\\\":110,\\\"records\\\":[{\\\"id\\\":\\\"64e72850-d149-46d6-8bd7-5f1d332d2a16\\\",\\\"tenantCode\\\":\\\"clouds_dianmo\\\",\\\"name\\\":\\\"asr_t1\\\",\\\"operatorId\\\":\\\"38ba5660-ef6e-4b66-9673-b0236832f179\\\",\\\"createTime\\\":\\\"2019-01-25 14:21:03\\\",\\\"updateTime\\\":\\\"2019-01-25 14:21:03\\\",\\\"status\\\":0,\\\"robotType\\\":1,\\\"policyType\\\":0,\\\"policyVersion\\\":null,\\\"description\\\":null,\\\"extensionJson\\\":null,\\\"operatorCode\\\":\\\"liyiwan\\\",\\\"insRcuCnt\\\":0,\\\"distRcuCnt\\\":0},{\\\"id\\\":\\\"4f6a0975-3980-4fd9-b27c-09aa258f4e36\\\",\\\"tenantCode\\\":\\\"cloudminds\\\",\\\"name\\\":\\\"xianglong\\\",\\\"operatorId\\\":\\\"b9bf937f-01c6-4fe8-86f8-43ce7a08167a\\\",\\\"createTime\\\":\\\"2019-01-25 11:48:03\\\",\\\"updateTime\\\":\\\"2019-01-25 13:03:00\\\",\\\"status\\\":0,\\\"robotType\\\":1,\\\"policyType\\\":0,\\\"policyVersion\\\":null,\\\"description\\\":null,\\\"extensionJson\\\":null,\\\"operatorCode\\\":\\\"zhangxianglong\\\",\\\"insRcuCnt\\\":0,\\\"distRcuCnt\\\":1},{\\\"id\\\":\\\"b209b3b8-7b41-49dd-a087-fb7f6b5bfa51\\\",\\\"tenantCode\\\":\\\"cloudminds\\\",\\\"name\\\":\\\"cloud_pu\\\",\\\"operatorId\\\":\\\"21d08412-9c19-49c0-9428-a6a5ad1bb548\\\",\\\"createTime\\\":\\\"2019-01-25 11:45:14\\\",\\\"updateTime\\\":\\\"2019-01-25 11:45:14\\\",\\\"status\\\":0,\\\"robotType\\\":1,\\\"policyType\\\":0,\\\"policyVersion\\\":null,\\\"description\\\":null,\\\"extensionJson\\\":null,\\\"operatorCode\\\":\\\"dian\\\",\\\"insRcuCnt\\\":0,\\\"distRcuCnt\\\":1},{\\\"id\\\":\\\"a35e468d-3ff5-48e4-a0e9-b86249167ee5\\\",\\\"tenantCode\\\":\\\"CloudPepper_Test\\\",\\\"name\\\":\\\"welcome\\\",\\\"operatorId\\\":\\\"ca69a720-8b8e-4ee5-8b12-63a20e897ef1\\\",\\\"createTime\\\":\\\"2019-01-25 11:05:42\\\",\\\"updateTime\\\":\\\"2019-01-25 14:07:05\\\",\\\"status\\\":0,\\\"robotType\\\":1,\\\"policyType\\\":0,\\\"policyVersion\\\":null,\\\"description\\\":null,\\\"extensionJson\\\":null,\\\"operatorCode\\\":\\\"duwei\\\",\\\"insRcuCnt\\\":0,\\\"distRcuCnt\\\":1},{\\\"id\\\":\\\"25243f56-b31d-4b58-bd96-c6920628b06c\\\",\\\"tenantCode\\\":\\\"roc\\\",\\\"name\\\":\\\"士大夫撒点\\\",\\\"operatorId\\\":\\\"06f82222-48a4-4a6a-b1cc-52148ed27651\\\",\\\"createTime\\\":\\\"2019-01-25 11:02:02\\\",\\\"updateTime\\\":\\\"2019-01-25 11:02:02\\\",\\\"status\\\":0,\\\"robotType\\\":1,\\\"policyType\\\":0,\\\"policyVersion\\\":null,\\\"description\\\":null,\\\"extensionJson\\\":null,\\\"operatorCode\\\":\\\"admin\\\",\\\"insRcuCnt\\\":0,\\\"distRcuCnt\\\":0},{\\\"id\\\":\\\"229d9c33-0606-4cda-a4d5-8c1feba2a5ed\\\",\\\"tenantCode\\\":\\\"cloudminds\\\",\\\"name\\\":\\\"LocalAsr\\\",\\\"operatorId\\\":\\\"38ba5660-ef6e-4b66-9673-b0236832f179\\\",\\\"createTime\\\":\\\"2019-01-25 10:51:43\\\",\\\"updateTime\\\":\\\"2019-01-25 10:51:43\\\",\\\"status\\\":0,\\\"robotType\\\":1,\\\"policyType\\\":0,\\\"policyVersion\\\":null,\\\"description\\\":null,\\\"extensionJson\\\":null,\\\"operatorCode\\\":\\\"liyiwan\\\",\\\"insRcuCnt\\\":0,\\\"distRcuCnt\\\":0},{\\\"id\\\":\\\"3aedd158-24b8-4021-a9a3-d6effc91a32a\\\",\\\"tenantCode\\\":\\\"cloudminds\\\",\\\"name\\\":\\\"cloudAsr\\\",\\\"operatorId\\\":\\\"38ba5660-ef6e-4b66-9673-b0236832f179\\\",\\\"createTime\\\":\\\"2019-01-25 10:27:59\\\",\\\"updateTime\\\":\\\"2019-01-25 10:27:59\\\",\\\"status\\\":0,\\\"robotType\\\":1,\\\"policyType\\\":0,\\\"policyVersion\\\":null,\\\"description\\\":null,\\\"extensionJson\\\":null,\\\"operatorCode\\\":\\\"liyiwan\\\",\\\"insRcuCnt\\\":0,\\\"distRcuCnt\\\":1},{\\\"id\\\":\\\"53065639-a467-4872-8333-73e085c99e43\\\",\\\"tenantCode\\\":\\\"CloudPepper_Test\\\",\\\"name\\\":\\\"asrtest\\\",\\\"operatorId\\\":\\\"394e0148-ba95-4c39-a9f9-973abb2c718a\\\",\\\"createTime\\\":\\\"2019-01-25 10:17:36\\\",\\\"updateTime\\\":\\\"2019-01-25 13:12:01\\\",\\\"status\\\":0,\\\"robotType\\\":1,\\\"policyType\\\":0,\\\"policyVersion\\\":null,\\\"description\\\":null,\\\"extensionJson\\\":null,\\\"operatorCode\\\":\\\"liuyanan\\\",\\\"insRcuCnt\\\":0,\\\"distRcuCnt\\\":1},{\\\"id\\\":\\\"da2db833-c065-49dd-bdb7-939c2026faa3\\\",\\\"tenantCode\\\":\\\"CloudPepper_Test\\\",\\\"name\\\":\\\"testwqeq\\\",\\\"operatorId\\\":\\\"bb5cd865-baea-42a0-a36d-b9e354b88f27\\\",\\\"createTime\\\":\\\"2019-01-24 19:20:04\\\",\\\"updateTime\\\":\\\"2019-01-24 19:20:27\\\",\\\"status\\\":0,\\\"robotType\\\":1,\\\"policyType\\\":0,\\\"policyVersion\\\":null,\\\"description\\\":null,\\\"extensionJson\\\":null,\\\"operatorCode\\\":\\\"cqtest01\\\",\\\"insRcuCnt\\\":0,\\\"distRcuCnt\\\":0},{\\\"id\\\":\\\"da672b14-d968-4776-97ba-b7c1addaa3b3\\\",\\\"tenantCode\\\":\\\"CloudPepper_Test\\\",\\\"name\\\":\\\"cqtestASR\\\",\\\"operatorId\\\":\\\"bb5cd865-baea-42a0-a36d-b9e354b88f27\\\",\\\"createTime\\\":\\\"2019-01-24 16:46:40\\\",\\\"updateTime\\\":\\\"2019-01-24 18:14:15\\\",\\\"status\\\":0,\\\"robotType\\\":1,\\\"policyType\\\":0,\\\"policyVersion\\\":null,\\\"description\\\":null,\\\"extensionJson\\\":null,\\\"operatorCode\\\":\\\"cqtest01\\\",\\\"insRcuCnt\\\":0,\\\"distRcuCnt\\\":2}]},\\\"errors\\\":null,\\\"action\\\":0,\\\"script\\\":\\\"\\\"}\";\n\n        JSONObject json = JSONObject.parseObject(oID);\n        String par=\"$..records[?(@.name=='asr_t1')].operatorId\";\n        Object source = JSONPath.eval(json,par);\n        String device_udid=JSONObject.toJSONString(source);\n        assertEquals(\"[\\\"38ba5660-ef6e-4b66-9673-b0236832f179\\\"]\", device_udid);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/Issue2289.java",
    "content": "package com.alibaba.json.bvt.issue_2200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.ObjectSerializer;\nimport junit.framework.TestCase;\n\npublic class Issue2289 extends TestCase {\n    public void test_for_issue() throws Exception {\n        B b = new B();\n        b.id = 123;\n\n        JSONSerializer jsonSerializer = new JSONSerializer();\n\n        jsonSerializer.writeAs(b, A.class);\n\n        String str = jsonSerializer.toString();\n        assertEquals(\"{}\", str);\n    }\n\n    public static class A {\n\n    }\n\n    public static class B extends A {\n        public int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/Issue_for_luohaoyu.java",
    "content": "package com.alibaba.json.bvt.issue_2200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic class Issue_for_luohaoyu extends TestCase {\n    public void test_for_issue() throws Exception {\n        Map map = new HashMap();\n        map.put(null, 123);\n\n        String str = JSON.toJSONString(map);\n        assertEquals(\"{null:123}\", str);\n\n        JSONObject object = JSON.parseObject(str);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/issue2224/CollectionEx.java",
    "content": "package com.alibaba.json.bvt.issue_2200.issue2224;\n\nimport java.util.Collection;\n\ninterface CollectionEx<TElement> extends Collection<TElement> {\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/issue2224/KeyedCollection.java",
    "content": "package com.alibaba.json.bvt.issue_2200.issue2224;\n\nimport java.util.Collection;\nimport java.util.Iterator;\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\npublic abstract class KeyedCollection<TKey, TItem> implements CollectionEx<TItem>, Cloneable {\n    private transient Map<TKey, TItem> items = new LinkedHashMap<TKey, TItem>();\n\n    protected abstract TKey getKeyForItem(TItem item);\n\n    public TItem get(TKey key) {\n        return this.items.get(key);\n    }\n\n    //region override\n\n    public int size() {\n        return this.items.size();\n    }\n\n    public boolean isEmpty() {\n        return this.items.isEmpty();\n    }\n\n    public boolean contains(Object key) {\n        return this.items.containsKey(key);\n    }\n\n    public Iterator<TItem> iterator() {\n        return this.items.values().iterator();\n    }\n\n    public Object[] toArray() {\n        return this.items.values().toArray();\n    }\n\n    public <T> T[] toArray(T[] a) {\n        return this.items.values().toArray(a);\n    }\n\n    public boolean add(TItem item) {\n        if (item == null)\n            throw new IllegalArgumentException(\"item can not be null.\");\n        TKey key = this.getKeyForItem(item);\n        this.items.put(key, item);\n        return true;\n    }\n\n    public boolean remove(Object key) {\n        return this.items.remove(key) != null;\n    }\n\n    public boolean containsAll(Collection<?> keys) {\n        return this.items.keySet().containsAll(keys);\n    }\n\n    public boolean addAll(Collection<? extends TItem> items) {\n        boolean modified = false;\n        for (TItem item : items)\n            modified |= this.add(item);\n        return modified;\n    }\n\n    public boolean removeAll(Collection<?> keys) {\n        boolean modified = false;\n        for (Object key : keys)\n            modified |= this.remove(key);\n        return modified;\n    }\n\n    public boolean retainAll(Collection<?> keys) {\n        boolean modified = false;\n        for (TKey key : this.items.keySet()) {\n            if (!keys.contains(key))\n                modified |= this.remove(key);\n        }\n        return modified;\n    }\n\n    public void clear() {\n        this.items.clear();\n    }\n\n    @Override\n    public String toString() {\n        StringBuilder builder = new StringBuilder();\n        builder.append('[');\n        TItem item;\n        Iterator<TItem> iterator = this.iterator();\n        if (iterator.hasNext()) {\n            item = iterator.next();\n            builder.append(item == this ? \"(this Collection)\" : item);\n        }\n        while (iterator.hasNext()) {\n            item = iterator.next();\n            builder.append(\", \").append(item == this ? \"(this Collection)\" : item);\n        }\n        builder.append(']');\n        return builder.toString();\n    }\n\n    //endregion\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/issue2224/Person.java",
    "content": "package com.alibaba.json.bvt.issue_2200.issue2224;\n\npublic class Person {\n    private String idNo;\n    private String name;\n\n    public String getIdNo() {\n        return this.idNo;\n    }\n\n    public void setIdNo(String idNo) {\n        this.idNo = idNo;\n    }\n\n    public String getName() {\n        return this.name;\n    }\n\n    public void setName(String name) {\n        this.name = name;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/issue2224/PersonCollection.java",
    "content": "package com.alibaba.json.bvt.issue_2200.issue2224;\n\npublic class PersonCollection extends KeyedCollection<String, Person> {\n    protected String getKeyForItem(Person person) {\n        return person.getIdNo();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/issue2224_2/GroupedCollection.java",
    "content": "package com.alibaba.json.bvt.issue_2200.issue2224_2;\n\nimport com.alibaba.json.bvt.issue_2200.issue2224.KeyedCollection;\n\nimport java.util.List;\n\nabstract class GroupedCollection<TKey, TItem> extends KeyedCollection<TKey, List<TItem>> {\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/issue2224_2/PersonGroupedCollection.java",
    "content": "package com.alibaba.json.bvt.issue_2200.issue2224_2;\n\nimport com.alibaba.json.bvt.issue_2200.issue2224.Person;\n\nimport java.util.List;\n\npublic class PersonGroupedCollection extends StringGroupedCollection<Person> {\n    @Override\n    protected String getKeyForItem(List<Person> list) {\n        if (list == null || list.isEmpty())\n            return null;\n        return list.get(0).getName();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/issue2224_2/StringGroupedCollection.java",
    "content": "package com.alibaba.json.bvt.issue_2200.issue2224_2;\n\nabstract class StringGroupedCollection<TItem> extends GroupedCollection<String, TItem> {\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/issue2224_3/ArrayGroupedCollection.java",
    "content": "package com.alibaba.json.bvt.issue_2200.issue2224_3;\n\nimport com.alibaba.json.bvt.issue_2200.issue2224.KeyedCollection;\n\nabstract class ArrayGroupedCollection<TKey, TItem> extends KeyedCollection<TKey, TItem[]> {\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/issue2224_3/ArrayPersonGroupedCollection.java",
    "content": "package com.alibaba.json.bvt.issue_2200.issue2224_3;\n\nimport com.alibaba.json.bvt.issue_2200.issue2224.Person;\n\npublic class ArrayPersonGroupedCollection extends ArrayStringGroupedCollection<Person> {\n    @Override\n    protected String getKeyForItem(Person[] array) {\n        if (array == null || array.length == 0)\n            return null;\n        return array[0].getName();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/issue2224_3/ArrayStringGroupedCollection.java",
    "content": "package com.alibaba.json.bvt.issue_2200.issue2224_3;\n\nabstract class ArrayStringGroupedCollection<TItem> extends ArrayGroupedCollection<String, TItem> {\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/issue2224_4/MAGroupedCollection.java",
    "content": "package com.alibaba.json.bvt.issue_2200.issue2224_4;\n\nimport com.alibaba.json.bvt.issue_2200.issue2224.KeyedCollection;\n\nabstract class MAGroupedCollection<TKey, TItem> extends KeyedCollection<TKey, TItem[]> {\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/issue2224_4/MAPersonGroupedCollection.java",
    "content": "package com.alibaba.json.bvt.issue_2200.issue2224_4;\n\nimport java.util.Map;\n\npublic class MAPersonGroupedCollection extends MAStringGroupedCollection<Map<String, Object>> {\n    @Override\n    protected String getKeyForItem(Map<String, Object>[] array) {\n        if (array == null || array.length == 0)\n            return null;\n        Object name = array[0].get(\"name\");\n        return name == null ? null : name.toString();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/issue2224_4/MAStringGroupedCollection.java",
    "content": "package com.alibaba.json.bvt.issue_2200.issue2224_4;\n\nabstract class MAStringGroupedCollection<TItem> extends MAGroupedCollection<String, TItem> {\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/issue2224_5/MA2GroupedCollection.java",
    "content": "package com.alibaba.json.bvt.issue_2200.issue2224_5;\n\nimport com.alibaba.json.bvt.issue_2200.issue2224.KeyedCollection;\n\nabstract class MA2GroupedCollection<TKey, TItem> extends KeyedCollection<TKey, TItem[]> {\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/issue2224_5/MA2PersonGroupedCollection.java",
    "content": "package com.alibaba.json.bvt.issue_2200.issue2224_5;\n\nimport java.util.Map;\n\npublic class MA2PersonGroupedCollection extends MA2StringGroupedCollection<String> {\n    @Override\n    protected String getKeyForItem(Map<String, String[]>[] array) {\n        if (array == null || array.length == 0)\n            return null;\n        final String[] names = array[0].get(\"name\");\n        return names == null || names.length == 0 ? null : names[0];\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2200/issue2224_5/MA2StringGroupedCollection.java",
    "content": "package com.alibaba.json.bvt.issue_2200.issue2224_5;\n\nimport java.util.Map;\n\nabstract class MA2StringGroupedCollection<TItem> extends MA2GroupedCollection<TItem, Map<TItem, TItem[]>> {\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2300/Issue2300.java",
    "content": "package com.alibaba.json.bvt.issue_2300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport java.util.Date;\n\npublic class Issue2300 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String text = \"{\\\"createTime\\\":1548166745}\";\n\n        Order o = JSON.parseObject(text, Order.class);\n        assertEquals(1548166745000L, o.createTime.getTime());\n\n        String json = JSON.toJSONString(o);\n        assertEquals(\"{\\\"createTime\\\":1548166745}\", json);\n\n        //新增校验1\n        JSONObject jsonObject = JSONObject.parseObject(text);\n        Order order1 = JSONObject.toJavaObject(jsonObject, Order.class);\n        //校验不通过\n        assertEquals(1548166745000L, order1.createTime.getTime());\n\n        //新增校验2\n        Order order2 = jsonObject.toJavaObject(Order.class);\n        //校验不通过\n        assertEquals(1548166745000L, order2.createTime.getTime());\n    }\n\n    public static class Order {\n        @JSONField(format = \"unixtime\")\n        public Date createTime;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2300/Issue2306.java",
    "content": "package com.alibaba.json.bvt.issue_2300;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\npublic class Issue2306 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSONObject object = new JSONObject();\n        object.put(\"help_score_avg.cbm\", 123);\n\n        assertEquals(123\n            , JSONPath.extract(\n                    object.toJSONString(), \"['help_score_avg.cbm']\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2300/Issue2311.java",
    "content": "package com.alibaba.json.bvt.issue_2300;\n\nimport com.alibaba.fastjson.JSONPath;\nimport com.jayway.jsonpath.JsonPath;\nimport junit.framework.TestCase;\n\npublic class Issue2311 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String t = \"{\\\"groups\\\":[{\\\"timers\\\":[{\\\"date\\\":\\\"00000001\\\",\\\"dps\\\":{\\\"1\\\":true},\\\"loops\\\":\\\"1111111\\\",\\\"timezoneId\\\":\\\"Asia/Shanghai\\\",\\\"time\\\":\\\"13:06\\\",\\\"status\\\":1},{\\\"date\\\":\\\"00000010\\\",\\\"dps\\\":{\\\"1\\\":true},\\\"loops\\\":\\\"1111111\\\",\\\"timezoneId\\\":\\\"Asia/Shanghai\\\",\\\"time\\\":\\\"13:07\\\",\\\"status\\\":1}],\\\"id\\\":\\\"1:\\\"},{\\\"timers\\\":[{\\\"date\\\":\\\"00000100\\\",\\\"dps\\\":{\\\"1\\\":true},\\\"loops\\\":\\\"1111111\\\",\\\"timezoneId\\\":\\\"Asia/Shanghai\\\",\\\"time\\\":\\\"13:06\\\",\\\"status\\\":1},{\\\"date\\\":\\\"00001000\\\",\\\"dps\\\":{\\\"1\\\":true},\\\"loops\\\":\\\"1111111\\\",\\\"timezoneId\\\":\\\"Asia/Shanghai\\\",\\\"time\\\":\\\"13:07\\\",\\\"status\\\":1}],\\\"id\\\":\\\"2:\\\"}],\\\"category\\\":{\\\"category\\\":\\\"xxxxxx\\\",\\\"status\\\":1}}\";\n        System.out.println((Object) JsonPath.read(t, \"$.groups[*].timers[*].dps.1\"));\n        System.out.println(JSONPath.extract(t, \"$.groups[*].timers[*].dps['1']\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2300/Issue2334.java",
    "content": "package com.alibaba.json.bvt.issue_2300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\npublic class Issue2334 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"{\\n\" +\n                \"\\\"EXTINFO\\\":{\\n\" +\n                \"\\\"bct_loan_account_status[15]\\\":\\\"aaa\\\",\\n\" +\n                \"\\\"wc_bank_num_of_trans_last_3_mon[6]\\\":-9999,\\n\" +\n                \"\\\"fahai_shixin_post_time[46]\\\":\\\"bbb\\\",\\n\" +\n                \"\\\"zs_punishbreak_regdateclean[22]\\\":\\\"ccc\\\"\\n\" +\n                \"}\\n\" +\n                \"}\";\n\n        JSONObject object = JSON.parseObject(json);\n\n        assertEquals(\"aaa\"\n                , JSONPath.eval(object, \"$.EXTINFO.bct_loan_account_status\\\\[15\\\\]\"));\n\n        Object result = JSONPath.extract(json, \"$.EXTINFO.bct_loan_account_status\\\\[15\\\\]\");\n        assertEquals(\"aaa\", result.toString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2300/Issue2341.java",
    "content": "package com.alibaba.json.bvt.issue_2300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\npublic class Issue2341 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String ss = \"{\\\"@type\\\":\\\"1234\\\"}\";\n        JSONObject object = JSON.parseObject(ss);\n        assertEquals(\"1234\", object.get(\"@type\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2300/Issue2343.java",
    "content": "package com.alibaba.json.bvt.issue_2300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\npublic class Issue2343 extends TestCase {\n    public void test_for_issue() throws Exception {\n        A a = new A();\n        a.f1 = 101;\n        a.f2 = 102;\n        a.f3 = 103;\n\n        String str = JSON.toJSONString(a);\n        assertEquals(\"{\\\"f2\\\":102,\\\"f1\\\":101,\\\"f3\\\":103}\", str);\n\n        JSONObject object = JSON.parseObject(str);\n        A a1 = object.toJavaObject(A.class);\n        assertEquals(a.f1, a1.f1);\n        assertEquals(a.f2, a1.f2);\n        assertEquals(a.f3, a1.f3);\n    }\n\n    public static class A {\n        @JSONField(ordinal = 1)\n        public int f1;\n\n        @JSONField(ordinal = 0)\n        public int f2;\n\n        @JSONField(ordinal = 2)\n        public int f3;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2300/Issue2344.java",
    "content": "package com.alibaba.json.bvt.issue_2300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.json.bvtVO.basic.LongPrimitiveEntity;\nimport junit.framework.TestCase;\n\npublic class Issue2344 extends TestCase {\n    public void test_for_issue() throws Exception {\n        LongPrimitiveEntity vo = new LongPrimitiveEntity(9007199254741992L);\n\n        assertEquals(\"{\\\"value\\\":\\\"9007199254741992\\\"}\"\n                , JSON.toJSONString(vo, SerializerFeature.BrowserCompatible));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2300/Issue2346.java",
    "content": "package com.alibaba.json.bvt.issue_2300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONPOJOBuilder;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport junit.framework.TestCase;\nimport lombok.Builder;\nimport lombok.Getter;\n\npublic class Issue2346 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String jsonStr = \"{\\\"age\\\":1,\\\"name\\\":\\\"aa\\\"}\";\n        TestEntity testEntity = JSON.parseObject(jsonStr, TestEntity.class);\n        assertEquals(jsonStr, JSON.toJSONString(testEntity));\n    }\n\n    @Builder(builderClassName = \"TestEntityBuilder\")\n    @Getter\n    @JSONType(builder = TestEntity.TestEntityBuilder.class)\n    public static class TestEntity {\n        private String name;\n\n        private int age;\n\n        @JSONPOJOBuilder(withPrefix = \"\")\n        public static class TestEntityBuilder{\n\n        }\n    }\n\n    @JSONType(builder = TestEntity2.TestEntity2Builder.class)\n    @Getter\n    public static class TestEntity2 {\n        private String name;\n\n        private int age;\n\n        @JSONPOJOBuilder(withPrefix = \"www\")\n        public static class TestEntity2Builder{\n            private TestEntity2 testEntity2 = new TestEntity2();\n\n            public TestEntity2 build(){\n                return testEntity2;\n            }\n\n            public TestEntity2Builder wwwAge(int age) {\n                testEntity2.age = age;\n                return this;\n            }\n\n            public TestEntity2Builder wwwName(String name) {\n                testEntity2.name = name;\n                return this;\n            }\n        }\n    }\n\n    @JSONType(builder = TestEntity3.TestEntity3Builder.class)\n    @Getter\n    public static class TestEntity3 {\n        private String name;\n\n        private int age;\n\n        public static class TestEntity3Builder{\n            private TestEntity3 testEntity3 = new TestEntity3();\n\n            public TestEntity3 build(){\n                return testEntity3;\n            }\n\n            public TestEntity3Builder withAge(int age) {\n                testEntity3.age = age;\n                return this;\n            }\n\n            public TestEntity3Builder withName(String name) {\n                testEntity3.name = name;\n                return this;\n            }\n        }\n    }\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2300/Issue2348.java",
    "content": "package com.alibaba.json.bvt.issue_2300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\nimport java.io.Serializable;\nimport java.util.List;\n\npublic class Issue2348 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"{\\n\" +\n                \"\\\"ID\\\": null,\\n\" +\n                \"\\\"XM\\\": \\\"陈XX\\\",\\n\" +\n                \"\\\"XB\\\": \\\"1\\\",\\n\" +\n                \"\\\"XB_\\\": \\\"男\\\",\\n\" +\n                \"\\\"ZJH\\\": \\\"522401198310176625\\\",\\n\" +\n                \"\\\"JSH\\\": \\\"0101\\\",\\n\" +\n                \"\\\"GJ\\\": \\\"156\\\",\\n\" +\n                \"\\\"GJ_\\\": \\\"中国\\\",\\n\" +\n                \"\\\"MZ\\\": \\\"01\\\",\\n\" +\n                \"\\\"MZ_\\\": \\\"汉族\\\",\\n\" +\n                \"\\\"WHCD\\\": \\\"48\\\",\\n\" +\n                \"\\\"WHCD_\\\": \\\"相当中专或中技毕业\\\",\\n\" +\n                \"\\\"ZY\\\": null,\\n\" +\n                \"\\\"ZY_\\\": null,\\n\" +\n                \"\\\"CSRQ\\\": \\\"1532448000000\\\",\\n\" +\n                \"\\\"CBZ\\\": null,\\n\" +\n                \"\\\"LFFH\\\": \\\"370100111201807250001\\\",\\n\" +\n                \"\\\"NL\\\": \\\"0\\\",\\n\" +\n                \"\\\"RSRQ\\\": \\\"1537167900000\\\",\\n\" +\n                \"\\\"AY\\\": \\\"010180\\\",\\n\" +\n                \"\\\"AY_\\\": \\\"资助活动案\\\",\\n\" +\n                \"\\\"ZZ\\\": \\\"AAAA\\\",\\n\" +\n                \"\\\"BAHJ\\\": \\\"11\\\",\\n\" +\n                \"\\\"BAHJ_\\\": \\\"事留\\\",\\n\" +\n                \"\\\"JYQX\\\": null,\\n\" +\n                \"\\\"ZSZT\\\": \\\"11\\\",\\n\" +\n                \"\\\"ZSZT_\\\": null,\\n\" +\n                \"\\\"PWH\\\": \\\"16\\\",\\n\" +\n                \"\\\"WXDJ\\\": \\\"3\\\",\\n\" +\n                \"\\\"WXDJ_\\\": \\\"二级\\\",\\n\" +\n                \"\\\"JKZK\\\": null,\\n\" +\n                \"\\\"JKZK_\\\": null,\\n\" +\n                \"\\\"FZJJ\\\": \\\"阿德\\\",\\n\" +\n                \"\\\"ZDRY\\\": \\\"0\\\",\\n\" +\n                \"\\\"ZDRY_\\\": \\\"非重点\\\",\\n\" +\n                \"\\\"Photo\\\": \\\"\\\",\\n\" +\n                \"\\\"TZZ\\\": \\\"\\\",\\n\" +\n                \"\\\"TZZ2\\\": \\\"\\\",\\n\" +\n                \"\\\"GYQX\\\": \\\"2018/8/30 0:00:00\\\",\\n\" +\n                \"\\\"ZZD\\\": \\\"QQQQ\\\",\\n\" +\n                \"\\\"RSAQ\\\": \\\"阿德\\\",\\n\" +\n                \"\\\"SG\\\": 22,\\n\" +\n                \"\\\"TZ\\\": 22,\\n\" +\n                \"\\\"HYZK\\\": null,\\n\" +\n                \"\\\"HYZK_\\\": null,\\n\" +\n                \"\\\"BHLX\\\": \\\"1\\\",\\n\" +\n                \"\\\"BHLX_\\\": null,\\n\" +\n                \"\\\"RFID\\\": \\\"23\\\",\\n\" +\n                \"\\\"RFID_\\\": \\\"理发\\\",\\n\" +\n                \"\\\"ZBZT\\\": null,\\n\" +\n                \"\\\"JDXJ\\\": null,\\n\" +\n                \"\\\"WCNR\\\": null,\\n\" +\n                \"\\\"BYZDE\\\": \\\"3\\\",\\n\" +\n                \"\\\"BYZDE_\\\": null,\\n\" +\n                \"\\\"GL\\\": null,\\n\" +\n                \"\\\"GZDW\\\": \\\"无单位\\\",\\n\" +\n                \"\\\"ZJLX\\\": \\\"居民身份证\\\",\\n\" +\n                \"\\\"CARDID\\\": \\\"D0CB8F1B\\\",\\n\" +\n                \"\\\"JBR\\\": null,\\n\" +\n                \"\\\"SKSJ\\\": null,\\n\" +\n                \"\\\"SKYY\\\": null,\\n\" +\n                \"\\\"YE\\\": 7427.87,\\n\" +\n                \"\\\"BADW\\\": \\\"市看\\\",\\n\" +\n                \"\\\"RSXZ\\\": \\\"事留\\\",\\n\" +\n                \"\\\"ZB\\\": null,\\n\" +\n                \"\\\"TYPE\\\": \\\"1\\\",\\n\" +\n                \"\\\"CSSJ\\\": null,\\n\" +\n                \"\\\"CSYY\\\": null,\\n\" +\n                \"\\\"YXGW\\\": \\\"1\\\"\\n\" +\n                \"}\";\n\n        PersonnelModel p = JSON.parseObject(json, PersonnelModel.class);\n        assertEquals(\"23\", p.getRfid());\n        assertEquals(\"1\", p.getBhlx());\n        assertEquals(null, p.getJdxj());\n    }\n\n    public static class RoomPersonnel {\n        private String code;\n        private List<PersonnelModel> data;\n        private int count;\n        static RoomPersonnel roompersonnel;\n\n        public static RoomPersonnel getRoomPersonnel(){\n            if(roompersonnel==null){\n                roompersonnel=new  RoomPersonnel();\n            }\n            return roompersonnel;\n        }\n\n        public void setCode(String code) {\n            this.code = code;\n        }\n        public String getCode() {\n            return code;\n        }\n\n\n        public void setData(List<PersonnelModel> data) {\n            this.data = data;\n        }\n        public List<PersonnelModel> getData() {\n            return data;\n        }\n\n\n        public void setCount(int count) {\n            this.count = count;\n        }\n        public int getCount() {\n            return count;\n        }\n    }\n\n    public static class PersonnelModel implements Serializable {\n\n        private String xm;\n        private String xb;\n        private String xb_;\n        private String zjh;\n        private String jsh;\n        private String gj;\n        private String gj_;\n        private String mz;\n        private String mz_;\n        private String whcd;\n        private String whcd_;\n        private String zy;\n        private String zy_;\n        private String csrq;\n        private String cbz;\n        private String lffh;\n        private String nl;\n        private String rsrq;\n        private String ay;\n        private String ay_;\n        private String zz;\n        private String bahj;\n        private String bahj_;\n        private String jyqx;\n        private String zszt;\n        private String zszt_;\n        private String pwh;\n        private String wxdj;\n        private String wxdj_;\n        private String jkzk;\n        private String fzjj;\n        private String zdry;\n        private String zdry_;\n        private String photo;\n        private String tzz;\n        private String tzz2;\n        private String gyqx;\n        private String zzd;\n        private String rsaq;\n        private String sg;\n        private String tz;\n        private String hyzk;\n        private String hyzk_;\n        private String bhlx;\n        private String rfid;\n        private String jkzk_;\n        private String gzdw;\n        private String zjlx;\n        private String zbzt;\n        private String jdxj;\n        private String wcnr;\n        private String byzde;\n        private String byzde_;\n        private String badw;\n        private String type;\n        private String rsxz;\n        public String getType() {\n            return type;\n        }\n\n        public void setType(String type) {\n            this.type = type;\n        }\n\n        public String getBadw() {\n            return badw;\n        }\n\n        public void setBadw(String badw) {\n            this.badw = badw;\n        }\n\n        public String getByzde() {\n            return byzde;\n        }\n\n        public void setByzde(String byzde) {\n            this.byzde = byzde;\n        }\n\n        public String getByzde_() {\n            return byzde_;\n        }\n\n        public void setByzde_(String byzde_) {\n            this.byzde_ = byzde_;\n        }\n\n        public String getJdxj() {\n            return jdxj;\n        }\n\n        public void setJdxj(String jdxj) {\n            this.jdxj = jdxj;\n        }\n\n        public String getWcnr() {\n            return wcnr;\n        }\n\n        public void setWcnr(String wcnr) {\n            this.wcnr = wcnr;\n        }\n\n        public String getGzdw() {\n            return gzdw;\n        }\n\n        public String getZbzt() {\n            return zbzt;\n        }\n\n        public void setZbzt(String zbzt) {\n            this.zbzt = zbzt;\n        }\n\n        public void setGzdw(String gzdw) {\n            this.gzdw = gzdw;\n        }\n\n        public String getZjlx() {\n            return zjlx;\n        }\n\n        public void setZjlx(String zjlx) {\n            this.zjlx = zjlx;\n        }\n\n        public String getJkzk_() {\n            return jkzk_;\n        }\n\n        public void setJkzk_(String jkzk_) {\n            this.jkzk_ = jkzk_;\n        }\n\n        public String getHyzk() {\n            return hyzk;\n        }\n\n        public void setHyzk(String hyzk) {\n            this.hyzk = hyzk;\n        }\n\n        public String getHyzk_() {\n            return hyzk_;\n        }\n\n        public void setHyzk_(String hyzk_) {\n            this.hyzk_ = hyzk_;\n        }\n\n        public String getBhlx() {\n            return bhlx;\n        }\n\n        public void setBhlx(String bhlx) {\n            this.bhlx = bhlx;\n        }\n\n        public String getRfid() {\n            return rfid;\n        }\n\n        public void setRfid(String rfid) {\n            this.rfid = rfid;\n        }\n\n        public void setXm(String xm) {\n            this.xm = xm;\n        }\n\n        public String getGyqx() {\n            return gyqx;\n        }\n\n        public void setGyqx(String gyqx) {\n            this.gyqx = gyqx;\n        }\n\n        public String getZzd() {\n            return zzd;\n        }\n\n        public void setZzd(String zzd) {\n            this.zzd = zzd;\n        }\n\n        public String getRsaq() {\n            return rsaq;\n        }\n\n        public void setRsaq(String rsaq) {\n            this.rsaq = rsaq;\n        }\n\n        public String getSg() {\n            return sg;\n        }\n\n        public void setSg(String sg) {\n            this.sg = sg;\n        }\n\n        public String getTz() {\n            return tz;\n        }\n\n        public void setTz(String tz) {\n            this.tz = tz;\n        }\n\n        public String getXm() {\n            return xm;\n        }\n\n        public void setXb(String xb) {\n            this.xb = xb;\n        }\n\n        public String getXb() {\n            return xb;\n        }\n\n        public void setXb_(String xb_) {\n            this.xb_ = xb_;\n        }\n\n        public String getXb_() {\n            return xb_;\n        }\n\n        public void setZjh(String zjh) {\n            this.zjh = zjh;\n        }\n\n        public String getZjh() {\n            return zjh;\n        }\n\n        public void setJsh(String jsh) {\n            this.jsh = jsh;\n        }\n\n        public String getJsh() {\n            return jsh;\n        }\n\n        public void setGj(String gj) {\n            this.gj = gj;\n        }\n\n        public String getGj() {\n            return gj;\n        }\n\n        public void setGj_(String gj_) {\n            this.gj_ = gj_;\n        }\n\n        public String getGj_() {\n            return gj_;\n        }\n\n        public void setMz(String mz) {\n            this.mz = mz;\n        }\n\n        public String getMz() {\n            return mz;\n        }\n\n        public void setMz_(String mz_) {\n            this.mz_ = mz_;\n        }\n\n        public String getMz_() {\n            return mz_;\n        }\n\n        public void setWhcd(String whcd) {\n            this.whcd = whcd;\n        }\n\n        public String getWhcd() {\n            return whcd;\n        }\n\n        public void setWhcd_(String whcd_) {\n            this.whcd_ = whcd_;\n        }\n\n        public String getWhcd_() {\n            return whcd_;\n        }\n\n        public void setZy(String zy) {\n            this.zy = zy;\n        }\n\n        public String getZy() {\n            return zy;\n        }\n\n        public void setZy_(String zy_) {\n            this.zy_ = zy_;\n        }\n\n        public String getZy_() {\n            return zy_;\n        }\n\n        public void setCsrq(String csrq) {\n            this.csrq = csrq;\n        }\n\n        public String getCsrq() {\n            return csrq;\n        }\n\n        public void setCbz(String cbz) {\n            this.cbz = cbz;\n        }\n\n        public String getCbz() {\n            return cbz;\n        }\n\n        public void setLffh(String lffh) {\n            this.lffh = lffh;\n        }\n\n        public String getLffh() {\n            return lffh;\n        }\n\n        public void setNl(String nl) {\n            this.nl = nl;\n        }\n\n        public String getNl() {\n            return nl;\n        }\n\n        public void setRsrq(String rsrq) {\n            this.rsrq = rsrq;\n        }\n\n        public String getRsrq() {\n            return rsrq;\n        }\n\n        public void setAy(String ay) {\n            this.ay = ay;\n        }\n\n        public String getAy() {\n            return ay;\n        }\n\n        public void setAy_(String ay_) {\n            this.ay_ = ay_;\n        }\n\n        public String getAy_() {\n            return ay_;\n        }\n\n        public void setZz(String zz) {\n            this.zz = zz;\n        }\n\n        public String getZz() {\n            return zz;\n        }\n\n        public void setBahj(String bahj) {\n            this.bahj = bahj;\n        }\n\n        public String getBahj() {\n            return bahj;\n        }\n\n        public void setBahj_(String bahj_) {\n            this.bahj_ = bahj_;\n        }\n\n        public String getBahj_() {\n            return bahj_;\n        }\n\n        public void setJyqx(String jyqx) {\n            this.jyqx = jyqx;\n        }\n\n        public String getJyqx() {\n            return jyqx;\n        }\n\n        public void setZszt(String zszt) {\n            this.zszt = zszt;\n        }\n\n        public String getZszt() {\n            return zszt;\n        }\n\n        public void setZszt_(String zszt_) {\n            this.zszt_ = zszt_;\n        }\n\n        public String getZszt_() {\n            return zszt_;\n        }\n\n        public void setPwh(String pwh) {\n            this.pwh = pwh;\n        }\n\n        public String getPwh() {\n            return pwh;\n        }\n\n        public void setWxdj(String wxdj) {\n            this.wxdj = wxdj;\n        }\n\n        public String getWxdj() {\n            return wxdj;\n        }\n\n        public void setWxdj_(String wxdj_) {\n            this.wxdj_ = wxdj_;\n        }\n\n        public String getWxdj_() {\n            return wxdj_;\n        }\n\n        public void setJkzk(String jkzk) {\n            this.jkzk = jkzk;\n        }\n\n        public String getJkzk() {\n            return jkzk;\n        }\n\n        public void setFzjj(String fzjj) {\n            this.fzjj = fzjj;\n        }\n\n        public String getFzjj() {\n            return fzjj;\n        }\n\n        public void setZdry(String zdry) {\n            this.zdry = zdry;\n        }\n\n        public String getZdry() {\n            return zdry;\n        }\n\n        public void setZdry_(String zdry_) {\n            this.zdry_ = zdry_;\n        }\n\n        public String getZdry_() {\n            return zdry_;\n        }\n\n        public void setPhoto(String photo) {\n            this.photo = photo;\n        }\n\n        public String getPhoto() {\n            return photo;\n        }\n\n        public void setTzz(String tzz) {\n            this.tzz = tzz;\n        }\n\n        public String getTzz() {\n            return tzz;\n        }\n\n        public void setTzz2(String tzz2) {\n            this.tzz2 = tzz2;\n        }\n\n        public String getTzz2() {\n            return tzz2;\n        }\n\n\n        public void setRsxz(String rsxz) {\n            this.rsxz = rsxz;\n        }\n\n        public String getRsxz() {\n            return rsxz;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2300/Issue2351.java",
    "content": "package com.alibaba.json.bvt.issue_2300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class Issue2351 extends TestCase {\n    public void test_for_issue() throws Exception {\n//        ParserConfig.getGlobalInstance().setAsmEnable(false);\n        // 创建空白对象\n        Bean1 c = new Bean1();\n        c.a = \"\";\n\n        // 序列化\n        // 输出[null,null]\n        String s = JSON.toJSONString(c, SerializerFeature.BeanToArray);\n        assertEquals(\"[\\\"\\\",null]\", s);\n\n        // 反序列化报错\n        // Exception in thread \"main\" com.alibaba.fastjson.JSONException: syntax error, expect [, actual [\n        JSON.parseObject(s, Bean1.class, Feature.SupportArrayToBean);\n    }\n\n    public static class Bean1 {\n\n        public String a;\n\n        public List<Bean2> b;\n    }\n\n    public static class Bean2  {\n        private String c;\n\n        public String getC() {\n            return c;\n        }\n\n        public void setC(String c) {\n            this.c = c;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2300/Issue2355.java",
    "content": "package com.alibaba.json.bvt.issue_2300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.math.BigDecimal;\n\npublic class Issue2355 extends TestCase {\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        BigDecimal num = new BigDecimal(\"0.00000001\");\n        vo.setNum(num);\n        String json = JSON.toJSONString(vo);\n\n        assertEquals(\"{\\\"num\\\":0.00000001}\", json);\n    }\n\n    static class VO {\n\n        @JSONField(serialzeFeatures = {SerializerFeature.WriteBigDecimalAsPlain})\n        private BigDecimal num;\n\n        public BigDecimal getNum() {\n            return num;\n        }\n\n        public void setNum(BigDecimal num) {\n            this.num = num;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2300/Issue2357.java",
    "content": "package com.alibaba.json.bvt.issue_2300;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.nio.ByteBuffer;\n\npublic class Issue2357 extends TestCase {\n    public void test_for_issue() throws Exception {\n        ByteBuffer buff = ByteBuffer.allocate(32);\n        buff.putInt(100);\n        buff.flip();\n\n        String result = JSON.toJSONString(buff);\n        System.out.println(result);\n\n        assertEquals(\"{\\\"array\\\":\\\"AAAAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=\\\",\\\"limit\\\":4,\\\"position\\\":0}\", result);\n\n        ByteBuffer buf1 = JSON.parseObject(result, ByteBuffer.class);\n\n        assertEquals(buff.capacity(), buf1.capacity());\n        assertEquals(buff.limit(), buf1.limit());\n        assertEquals(buff.position(), buf1.position());\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2300/Issue2358.java",
    "content": "package com.alibaba.json.bvt.issue_2300;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\npublic class Issue2358 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String str = \"[{\\n\" +\n                \"  \\\"test1\\\":\\\"1\\\",\\n\" +\n                \"  \\\"test2\\\":\\\"2\\\"\\n\" +\n                \"},\\n\" +\n                \" {\\n\" +\n                \"   \\\"test1\\\":\\\"1\\\",\\n\" +\n                \"   \\\"test2\\\":\\\"2\\\"\\n\" +\n                \" }]\";\n\n        Exception error = null;\n        try {\n            List<TestJson2> testJsons = JSONObject.parseArray(str, TestJson2.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n        assertEquals(\"can't create non-static inner class instance.\", error.getMessage());\n    }\n\n    class TestJson {\n\n        private String test1;\n        private String test2;\n\n        public String getTest1() {\n            return test1;\n        }\n\n        public void setTest1(String test1) {\n            this.test1 = test1;\n        }\n\n        public String getTest2() {\n            return test2;\n        }\n\n        public void setTest2(String test2) {\n            this.test2 = test2;\n        }\n\n\n    }\n\n    class TestJson2 {\n        private String test1;\n        private String test2;\n\n        public String getTest1() {\n            return test1;\n        }\n\n        public void setTest1(String test1) {\n            this.test1 = test1;\n        }\n\n        public String getTest2() {\n            return test2;\n        }\n\n        public void setTest2(String test2) {\n            this.test2 = test2;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2300/Issue2371.java",
    "content": "package com.alibaba.json.bvt.issue_2300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\npublic class Issue2371 extends TestCase {\n    public void test_for_issue() throws Exception {\n        RpcRespObj<List<Resource>> resources = convertResult(Resource.class);\n        assertEquals(2, resources.data.get(0).resourceId.intValue());\n        assertEquals(\"own佛恩\", resources.data.get(0).resourceName);\n    }\n\n    public static <T> RpcRespObj<List<T>> convertResult(Class<T> type) {\n        String str = \"{\\\"status\\\":0,\\\"data\\\":[{\\\"resourceId\\\":2,\\\"resourceName\\\":\\\"own佛恩\\\",\\\"systemCode\\\":\\\"ad\\\"}]}\";\n        RpcRespObj<List<T>> result = JSON.parseObject(str, new TypeReference<RpcRespObj<List<T>>>(type) {});\n        return result;\n    }\n\n\n    public static class RpcRespObj<T> {\n        public Integer status;\n        public Integer errcode;\n        public Integer errno;\n        public T data;\n    }\n\n\n    public static class Resource {\n        public Integer resourceId;\n        public String resourceName;\n        public String systemCode;\n\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2300/Issue2387.java",
    "content": "package com.alibaba.json.bvt.issue_2300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\npublic class Issue2387 extends TestCase\n{\n    public void test_for_issue() throws Exception {\n        String jsonStr = \"{id:\\\"ss\\\",ddd:\\\"sdfsd\\\",name:\\\"hh\\\"}\";\n        TestEntity news = JSON.parseObject(jsonStr, TestEntity.class, Feature.InitStringFieldAsEmpty);\n        assertEquals(\"{\\\"ddd\\\":\\\"sdfsd\\\",\\\"id\\\":\\\"ss\\\",\\\"name\\\":\\\"hh\\\"}\", JSON.toJSONString(news));\n    }\n\n    public static class TestEntity {\n        private String id;\n        private String ddd;\n        private String name;\n\n        public String getId()\n        {\n            return id;\n        }\n\n        public void setId(String id)\n        {\n            this.id = id;\n        }\n\n        public String getDdd()\n        {\n            return ddd;\n        }\n\n        public void setDdd(String ddd)\n        {\n            this.ddd = ddd;\n        }\n\n        public String getName()\n        {\n            return name;\n        }\n\n        public void setName(String name)\n        {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2300/Issue2397.java",
    "content": "package com.alibaba.json.bvt.issue_2300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.io.Serializable;\nimport java.util.List;\n\npublic class Issue2397 extends TestCase {\n\n    public void test_for_bug(){\n        String jsonStr = \"{\\\"items\\\":[{\\\"id\\\":1,\\\"name\\\":\\\"kata\\\"}]}\";\n        TestReply testReply = JSON.parseObject(jsonStr, new TypeReference<TestReply>() {\n        });\n\n        Assert.assertEquals(testReply.getItems().get(0).getId() , 1);\n    }\n\n    public static class SuperBaseReply<T> {\n        private List<T> items;\n\n        public List<T> getItems() {\n            return items;\n        }\n\n        public void setItems(List<T> items) {\n            this.items = items;\n        }\n    }\n\n    public static class BaseReply<T> extends SuperBaseReply<T> {\n\n    }\n\n    public static class Msg implements Serializable {\n        private int id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public Msg(int id, String name) {\n            this.id = id;\n            this.name = name;\n        }\n    }\n\n    public static class TestReply extends BaseReply<Msg> {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2400/Issue2428.java",
    "content": "package com.alibaba.json.bvt.issue_2400;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.PropertyNamingStrategy;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@NoArgsConstructor\n@Data\npublic class Issue2428 extends TestCase {\n    private String myName;\n    private NestedBean nestedBean;\n\n    @AllArgsConstructor\n    @Data\n    public static class NestedBean {\n        private String myId;\n    }\n\n    public void test_for_issue() {\n        Issue2428 demoBean = new Issue2428();\n        demoBean.setMyName(\"test name\");\n        demoBean.setNestedBean(new NestedBean(\"test id\"));\n        String text = JSON.toJSONString(JSON.toJSON(demoBean), SerializerFeature.SortField);\n        assertEquals(\"{\\\"nestedBean\\\":{\\\"myId\\\":\\\"test id\\\"},\\\"myName\\\":\\\"test name\\\"}\", text);\n\n        SerializeConfig serializeConfig = new SerializeConfig();\n        serializeConfig.propertyNamingStrategy = PropertyNamingStrategy.SnakeCase;\n        text = JSON.toJSONString(JSON.toJSON(demoBean, serializeConfig), SerializerFeature.SortField);\n        assertEquals(\"{\\\"my_name\\\":\\\"test name\\\",\\\"nested_bean\\\":{\\\"my_id\\\":\\\"test id\\\"}}\", text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2400/Issue2429.java",
    "content": "package com.alibaba.json.bvt.issue_2400;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\npublic class Issue2429 extends TestCase {\n    public void testForIssue() {\n        String str = \"{\\\"schema\\\":{$ref:\\\"111\\\"},\\\"name\\\":\\\"ft\\\",\\\"age\\\":12,\\\"address\\\":\\\"杭州\\\"}\";\n        JSON.parseObject(str);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2400/Issue2430.java",
    "content": "package com.alibaba.json.bvt.issue_2400;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.google.common.collect.ArrayListMultimap;\n\nimport junit.framework.TestCase;\n\npublic class Issue2430 extends TestCase {\n\tpublic void testForIssue() {\n\t\tArrayListMultimap<String, String> multimap = ArrayListMultimap.create();\n\t\tmultimap.put(\"a\", \"1\");\n\t\tmultimap.put(\"a\", \"2\");\n\t\tmultimap.put(\"a\", \"3\");\n\t\tmultimap.put(\"b\", \"1\");\n\n\t\tVO vo = new VO();\n\t\tvo.setMap(multimap);\n\t\tvo.setName(\"zhangsan\");\n\n\t\tassertEquals(\"{\\\"map\\\":{\\\"a\\\":[\\\"1\\\",\\\"2\\\",\\\"3\\\"],\\\"b\\\":[\\\"1\\\"]},\\\"name\\\":\\\"zhangsan\\\"}\",\n\t\t\t\tJSON.toJSONString(vo, SerializerFeature.MapSortField));\n\t}\n\n\tpublic void testForIssue2() {\n\t\tString jsonString = \"{\\\"map\\\":{\\\"a\\\":[\\\"1\\\",\\\"2\\\",\\\"3\\\"],\\\"b\\\":[\\\"1\\\"]},\\\"name\\\":\\\"zhangsan\\\"}\";\n\t\tVO vo = JSON.parseObject(jsonString, VO.class);\n\t\tassertEquals(\"{\\\"map\\\":{\\\"a\\\":[\\\"1\\\",\\\"2\\\",\\\"3\\\"],\\\"b\\\":[\\\"1\\\"]},\\\"name\\\":\\\"zhangsan\\\"}\", JSON.toJSONString(vo, SerializerFeature.MapSortField));\n\t}\n\n\tpublic static class VO {\n\t\tprivate String name;\n\t\tprivate ArrayListMultimap<String, String> map;\n\n\t\tpublic String getName() {\n\t\t\treturn name;\n\t\t}\n\n\t\tpublic void setName(String name) {\n\t\t\tthis.name = name;\n\t\t}\n\n\t\tpublic ArrayListMultimap<String, String> getMap() {\n\t\t\treturn map;\n\t\t}\n\n\t\tpublic void setMap(ArrayListMultimap<String, String> map) {\n\t\t\tthis.map = map;\n\t\t}\n\n\t\t@Override\n\t\tpublic String toString() {\n\t\t\treturn String.format(\"VO:{name->%s,map->%s}\", this.name, this.map.toString());\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2400/Issue2447.java",
    "content": "package com.alibaba.json.bvt.issue_2400;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\npublic class Issue2447 extends TestCase {\n\n    public void test_for_issue() {\n        VO vo = new VO();\n        vo.id = 123;\n        vo.location = new Location(127, 37);\n\n        Object obj = JSON.toJSON(vo);\n        String text = JSON.toJSONString(obj, SerializerFeature.SortField);\n        assertEquals(\"{\\\"latitude\\\":37,\\\"id\\\":123,\\\"longitude\\\":127}\", text);\n    }\n\n    public void test_for_issue2() {\n        VO2 vo = new VO2();\n        vo.id = 123;\n        vo.properties.put(\"latitude\", 37);\n        vo.properties.put(\"longitude\", 127);\n\n        Object obj = JSON.toJSON(vo);\n        String text = JSON.toJSONString(obj, SerializerFeature.SortField);\n        assertEquals(\"{\\\"latitude\\\":37,\\\"id\\\":123,\\\"longitude\\\":127}\", text);\n    }\n\n    public static class VO {\n\n        public int id;\n\n        @JSONField(unwrapped = true)\n        public Location location;\n    }\n\n    public static class VO2 {\n        public int id;\n\n        @JSONField(unwrapped = true)\n        public Map<String, Object> properties = new LinkedHashMap<String, Object>();\n    }\n\n\n    public static class Location {\n        public int longitude;\n        public int latitude;\n\n        public Location() {}\n\n        public Location(int longitude, int latitude) {\n            this.longitude = longitude;\n            this.latitude = latitude;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2400/Issue2464.java",
    "content": "package com.alibaba.json.bvt.issue_2400;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\npublic class Issue2464 extends TestCase {\n    public void test1() throws Exception {\n        String json = \"[\\\"Mjg4NDd8MXxjb20uY2Fpbmlhby5pc2ltdS5xLndvcmtmbG93LmNvbGxlY3Quc2NoZWR1bGUuaW1wbC5UYXNrU3RvcENvbGxlY3RDYWxsQmFja0hhbmRsZXJJbXBsfDB8\\\",1]\";\n        Object result =  JSON.parseArray(json,new Class[]{byte[].class,Integer.class});\n        assertEquals(json, JSON.toJSONString(result));\n\n        result = JSON.parseArray(json,new Class[]{char[].class,Integer.class});\n        assertEquals(json, JSON.toJSONString(result));\n    }\n\n    public void test2() throws Exception {\n        String json = \"[1,\\\"Mjg4NDd8MXxjb20uY2Fpbmlhby5pc2ltdS5xLndvcmtmbG93LmNvbGxlY3Quc2NoZWR1bGUuaW1wbC5UYXNrU3RvcENvbGxlY3RDYWxsQmFja0hhbmRsZXJJbXBsfDB8\\\"]\";\n        Object result =  JSON.parseArray(json,new Class[]{Integer.class,byte[].class});\n        assertEquals(json, JSON.toJSONString(result));\n\n        result = JSON.parseArray(json,new Class[]{Integer.class, char[].class});\n        assertEquals(json, JSON.toJSONString(result));\n    }\n\n    public void test3() throws Exception {\n        String json = \"[1,\\\"aaa\\\",\\\"bbb\\\",\\\"ccc\\\"]\";\n        Object result = JSON.parseArray(json, new Class[]{Integer.class, String[].class});\n        assertEquals(\"[1,[\\\"aaa\\\",\\\"bbb\\\",\\\"ccc\\\"]]\", JSON.toJSONString(result));\n    }\n\n    public void test4() throws Exception {\n        String json = \"[1,97,98,99]\";\n        Object result = JSON.parseArray(json, new Class[]{Integer.class, byte[].class});\n        assertEquals(\"[1,\\\"YWJj\\\"]\", JSON.toJSONString(result));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2400/Issue2488.java",
    "content": "package com.alibaba.json.bvt.issue_2400;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\npublic class Issue2488 extends TestCase {\n    public void testForIssue_1() {\n        String a = \"{\\\"$a_b\\\":\\\"a1_b2\\\",\\\"_c_d\\\":\\\"c3_d4\\\",\\\"aaaa\\\":\\\"CC\\\",\\\"__flag\\\":\\\"true\\\",\\\"$flag\\\":\\\"true\\\"}\";\n        JSONObject obj = (JSONObject) JSONObject.parse(a);\n        TestJsonObj2 stu = JSONObject.toJavaObject(obj, TestJsonObj2.class);\n        assertEquals(\"TestJsonObj2{$a_b=\\\"a1_b2\\\",_c_d=\\\"c3_d4\\\",aaaa=\\\"CC\\\",__flag=true,$flag=true}\", stu.toString());\n    }\n\n    public void testForIssue_2() {\n        String a = \"{\\\"$a_b\\\":\\\"aa3_bb4\\\",\\\"_c_d\\\":\\\"cc1_dd2\\\",\\\"aaaa\\\":\\\"BB\\\",\\\"__flag\\\":\\\"true\\\",\\\"$flag\\\":\\\"true\\\"}\";\n        TestJsonObj2 stu = JSON.parseObject(a, TestJsonObj2.class);\n        assertEquals(\"TestJsonObj2{$a_b=\\\"aa3_bb4\\\",_c_d=\\\"cc1_dd2\\\",aaaa=\\\"BB\\\",__flag=true,$flag=true}\",\n                stu.toString());\n    }\n\n    public void testForIssue_3() {\n        TestJsonObj2 vo = new TestJsonObj2(\"aa_bb\", \"cc_dd\", \"AA\", true, true);\n        String text = JSON.toJSONString(vo);\n        assertEquals(\"{\\\"$a_b\\\":\\\"aa_bb\\\",\\\"$flag\\\":true,\\\"__flag\\\":true,\\\"_c_d\\\":\\\"cc_dd\\\",\\\"aaaa\\\":\\\"AA\\\"}\", text);\n    }\n\n    public static class TestJsonObj2 {\n        private String $a_b;\n        private String _c_d;\n        private String aaaa;\n        private boolean __flag;\n        private boolean $flag;\n\n        public TestJsonObj2() {\n        }\n\n        public TestJsonObj2(String $a_b, String _c_d, String aaaa, boolean __flag, boolean $flag) {\n            this.$a_b = $a_b;\n            this._c_d = _c_d;\n            this.aaaa = aaaa;\n            this.__flag = __flag;\n            this.$flag = $flag;\n        }\n\n        public String get$a_b() {\n            return $a_b;\n        }\n\n        public void set$a_b(String $a_b) {\n            this.$a_b = $a_b;\n        }\n\n        public String get_c_d() {\n            return _c_d;\n        }\n\n        public void set_c_d(String _c_d) {\n            this._c_d = _c_d;\n        }\n\n        public String getaaaa() {\n            return aaaa;\n        }\n\n        public void setaaaa(String aaaa) {\n            this.aaaa = aaaa;\n        }\n\n        public boolean is__flag() {\n            return __flag;\n        }\n\n        public void set__flag(boolean __flag) {\n            this.__flag = __flag;\n        }\n\n        public boolean is$flag() {\n            return $flag;\n        }\n\n        public void set$flag(boolean $flag) {\n            this.$flag = $flag;\n        }\n\n        @Override\n        public String toString() {\n            return String.format(\"TestJsonObj2{$a_b=\\\"%s\\\",_c_d=\\\"%s\\\",aaaa=\\\"%s\\\",__flag=%b,$flag=%b}\", this.$a_b,\n                    this._c_d, this.aaaa, this.__flag, this.$flag);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2500/Issue2515.java",
    "content": "package com.alibaba.json.bvt.issue_2500;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\npublic class Issue2515 extends TestCase  {\n    public void test_for_issue() throws Exception {\n        String json = \"{\\n\" +\n                \"    \\\"a\\\":\\\"{\\\\\\\"b\\\\\\\":\\\\\\\"cd\\\\\\\"}\\\"\\n\" +\n                \"}\";\n\n        JSONObject obj = JSON.parseObject(json);\n\n        assertEquals(\"cd\", JSONPath.eval(obj, \"$.a.b\"));\n        assertEquals(1, JSONPath.eval(obj, \"$.a.size\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2500/Issue2516.java",
    "content": "package com.alibaba.json.bvt.issue_2500;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\nimport java.util.Collection;\nimport java.util.List;\n\npublic class Issue2516 extends TestCase\n{\n    public void test_for_issue() throws Exception {\n        JSONObject jsonObject = new JSONObject();\n        jsonObject.toJavaObject(JSONObject.class);\n        jsonObject.toJavaObject(JSON.class);\n\n        new JSONArray().toJavaObject(JSON.class);\n        new JSONArray().toJavaObject(JSONArray.class);\n        new JSONArray().toJavaObject(Collection.class);\n        new JSONArray().toJavaObject(List.class);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2500/Issue2579.java",
    "content": "package com.alibaba.json.bvt.issue_2500;\n\nimport java.awt.Point;\nimport java.util.ArrayList;\nimport java.util.Date;\nimport java.util.Iterator;\nimport java.util.List;\nimport java.util.Random;\nimport java.util.UUID;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class Issue2579 extends TestCase {\n\n\t// 场景：走ASM\n\tpublic void test_for_issue1() throws Exception {\n\t\trun_test(\"MyPoint1\");\n\t}\n\n\t// 场景：不走ASM,通过JSONType（asm=false），关闭了ASM\n\tpublic void test_for_issue2() throws Exception {\n\t\trun_test(\"MyPoint2\");\n\t}\n\n\t// 场景：随机顺序组合JSON字符串测试2000次\n\tprivate void run_test(String className) {\n\t\tString begin = \"{\";\n\t\tString end = \"}\";\n\t\tString jsonString;\n\t\tfor (int i = 1; i < 2000; i++) {\n\t\t\tjsonString = getString(i, className);\n\t\t\tjsonString = begin + jsonString + end;\n\t\t\ttry {\n\t\t\t\tObject obj = JSON.parse(jsonString, Feature.SupportAutoType);\n\t\t\t\tif (\"MyPoint1\".equals(className)) {\n\t\t\t\t\tAssert.assertEquals(i, ((MyPoint1) obj).getBatchNumber());\n\t\t\t\t} else {\n\t\t\t\t\tAssert.assertEquals(i, ((MyPoint2) obj).getBatchNumber());\n\t\t\t\t}\n\t\t\t} catch (JSONException e) {\n\t\t\t\tSystem.out.println(jsonString);\n\t\t\t\te.printStackTrace();\n\t\t\t\tAssert.assertTrue(false);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static String getString(int batchNumber, String className) {\n\t\tList<String> list = new ArrayList<String>();\n\t\tlist.add(\"\\\"@type\\\":\\\"com.alibaba.json.bvt.issue_2500.Issue2579$\" + className + \"\\\"\");\n\t\tlist.add(\"\\\"date\\\":1563867975335\");\n\t\tlist.add(\"\\\"id\\\":\\\"0f075036-9e52-4821-800a-9c51761a7227b\\\"\");\n\t\tlist.add(\"\\\"location\\\":{\\\"@type\\\":\\\"java.awt.Point\\\",\\\"x\\\":11,\\\"y\\\":1}\");\n\t\tlist.add(\"\\\"point\\\":{\\\"@type\\\":\\\"java.awt.Point\\\",\\\"x\\\":9,\\\"y\\\":1}\");\n\t\tlist.add(\n\t\t\t\t\"\\\"pointArr\\\":[{\\\"@type\\\":\\\"java.awt.Point\\\",\\\"x\\\":4,\\\"y\\\":6},{\\\"@type\\\":\\\"java.awt.Point\\\",\\\"x\\\":7,\\\"y\\\":8}]\");\n\t\tlist.add(\"\\\"strArr\\\":[\\\"te-st\\\",\\\"tes-t2\\\"]\");\n\t\tlist.add(\"\\\"x\\\":2.0D\");\n\t\tlist.add(\"\\\"y\\\":3.0D\");\n\t\tlist.add(\"\\\"batchNumber\\\":\" + batchNumber);\n\n\t\tIterator<String> it = list.iterator();\n\t\tStringBuffer buffer = new StringBuffer();\n\t\tint len;\n\t\tint index;\n\t\twhile (it.hasNext()) {\n\t\t\tlen = list.size();\n\t\t\tindex = getRandomIndex(len);\n\t\t\tbuffer.append(list.get(index));\n\t\t\tbuffer.append(\",\");\n\t\t\tlist.remove(index);\n\t\t}\n\t\tbuffer.deleteCharAt(buffer.length() - 1);\n\t\treturn buffer.toString();\n\t}\n\n\tprivate static int getRandomIndex(int length) {\n\t\tRandom random = new Random();\n\t\treturn random.nextInt(length);\n\t}\n\n\t@SuppressWarnings(\"serial\")\n\tpublic static class MyPoint1 extends Point {\n\t\tprivate UUID id;\n\t\tprivate int batchNumber;\n\t\tprivate Point point = new Point();\n\t\tprivate String[] strArr = { \"te-st\", \"tes-t2\" };\n\t\tprivate Date date = new Date();\n\t\tprivate Point[] pointArr = { new Point(), new Point() };\n\n\t\tpublic UUID getId() {\n\t\t\treturn id;\n\t\t}\n\n\t\tpublic void setId(UUID id) {\n\t\t\tthis.id = id;\n\t\t}\n\n\t\tpublic int getBatchNumber() {\n\t\t\treturn batchNumber;\n\t\t}\n\n\t\tpublic void setBatchNumber(int batchNumber) {\n\t\t\tthis.batchNumber = batchNumber;\n\t\t}\n\n\t\tpublic Point getPoint() {\n\t\t\treturn point;\n\t\t}\n\n\t\tpublic void setPoint(Point point) {\n\t\t\tthis.point = point;\n\t\t}\n\n\t\tpublic String[] getStrArr() {\n\t\t\treturn strArr;\n\t\t}\n\n\t\tpublic void setStrArr(String[] strArr) {\n\t\t\tthis.strArr = strArr;\n\t\t}\n\n\t\tpublic Date getDate() {\n\t\t\treturn date;\n\t\t}\n\n\t\tpublic void setDate(Date date) {\n\t\t\tthis.date = date;\n\t\t}\n\n\t\tpublic Point[] getPointArr() {\n\t\t\treturn pointArr;\n\t\t}\n\n\t\tpublic void setPointArr(Point[] pointArr) {\n\t\t\tthis.pointArr = pointArr;\n\t\t}\n\n\t}\n\n\t@SuppressWarnings(\"serial\")\n\t@JSONType(asm = false)\n\tpublic static class MyPoint2 extends Point {\n\t\tprivate UUID id;\n\t\tprivate int batchNumber;\n\t\tprivate Point point = new Point();\n\t\tprivate String[] strArr = { \"te-st\", \"tes-t2\" };\n\t\tprivate Date date = new Date();\n\t\tprivate Point[] pointArr = { new Point(), new Point() };\n\n\t\tpublic UUID getId() {\n\t\t\treturn id;\n\t\t}\n\n\t\tpublic void setId(UUID id) {\n\t\t\tthis.id = id;\n\t\t}\n\n\t\tpublic int getBatchNumber() {\n\t\t\treturn batchNumber;\n\t\t}\n\n\t\tpublic void setBatchNumber(int batchNumber) {\n\t\t\tthis.batchNumber = batchNumber;\n\t\t}\n\n\t\tpublic Point getPoint() {\n\t\t\treturn point;\n\t\t}\n\n\t\tpublic void setPoint(Point point) {\n\t\t\tthis.point = point;\n\t\t}\n\n\t\tpublic String[] getStrArr() {\n\t\t\treturn strArr;\n\t\t}\n\n\t\tpublic void setStrArr(String[] strArr) {\n\t\t\tthis.strArr = strArr;\n\t\t}\n\n\t\tpublic Date getDate() {\n\t\t\treturn date;\n\t\t}\n\n\t\tpublic void setDate(Date date) {\n\t\t\tthis.date = date;\n\t\t}\n\n\t\tpublic Point[] getPointArr() {\n\t\t\treturn pointArr;\n\t\t}\n\n\t\tpublic void setPointArr(Point[] pointArr) {\n\t\t\tthis.pointArr = pointArr;\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2600/Issue2606.java",
    "content": "package com.alibaba.json.bvt.issue_2600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.util.TypeUtils;\nimport junit.framework.TestCase;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\npublic class Issue2606 extends TestCase {\n    @Override\n    public void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getDefault();\n        JSON.defaultLocale = Locale.CHINA;\n    }\n\n    public void test_for_issue() throws Exception {\n        String str = \"2019-07-03 19:34:22,547\";\n        Date d = TypeUtils.castToDate(str);\n        SimpleDateFormat sdf = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss,SSS\");\n        sdf.setTimeZone(TimeZone.getDefault());\n        assertEquals(str, sdf.format(d));\n    }\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2600/Issue2617.java",
    "content": "package com.alibaba.json.bvt.issue_2600;\n\nimport java.lang.reflect.Type;\nimport java.util.Date;\nimport java.util.Map;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.MapDeserializer;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\n\nimport junit.framework.TestCase;\n\npublic class Issue2617 extends TestCase {\n\n\t// 场景：通过@JSONField(deserializeUsing = MyDateDeserializer.class)来自定义解析\n\tpublic void test_for_issue() throws Exception {\n\t\tString str = \"{ \\\"a\\\": { \\\"date\\\": 6, \\\"day\\\": 2, \\\"hours\\\": 18, \\\"minutes\\\": 37, \\\"month\\\": 7, \\\"seconds\\\": 1, \\\"time\\\": 1565087821607, \\\"timezoneOffset\\\": -480, \\\"year\\\": 119 } }\";\n\t\tDate date = JSON.parseObject(str, A.class).getA();\n\t\tDate date2 = new Date(1565087821607L);\n\n\t\tassertEquals(date2.getDate(), date.getDate());\n\t\tassertEquals(date2.getDay(), date.getDay());\n\t\tassertEquals(date2.getHours(), date.getHours());\n\t\tassertEquals(date2.getMinutes(), date.getMinutes());\n\t\tassertEquals(date2.getMonth(), date.getMonth());\n\t\tassertEquals(date2.getSeconds(), date.getSeconds());\n\t\tassertEquals(date2.getTime(), date.getTime());\n\t\tassertEquals(date2.getTimezoneOffset(), date.getTimezoneOffset());\n\t\tassertEquals(date2.getYear(), date.getYear());\n\t}\n\n\t// 场景：通过ParserConfig的putDeserializer自定义解析\n\tpublic void test_for_issue_2() throws Exception {\n\t\tString str = \"{ \\\"a\\\": { \\\"date\\\": 6, \\\"day\\\": 2, \\\"hours\\\": 18, \\\"minutes\\\": 37, \\\"month\\\": 7, \\\"seconds\\\": 1, \\\"time\\\": 1565087821607, \\\"timezoneOffset\\\": -480, \\\"year\\\": 119 } }\";\n\n\t\tParserConfig config = new ParserConfig();\n\t\tconfig.putDeserializer(Date.class, new MyDateDeserializer());\n\n\t\tDate date = ((A2) JSON.parseObject(str, A2.class, config)).getA();\n\n\t\tassertEquals(date.getDate(), date.getDate());\n\t\tassertEquals(date.getDay(), date.getDay());\n\t\tassertEquals(date.getHours(), date.getHours());\n\t\tassertEquals(date.getMinutes(), date.getMinutes());\n\t\tassertEquals(date.getMonth(), date.getMonth());\n\t\tassertEquals(date.getSeconds(), date.getSeconds());\n\t\tassertEquals(date.getTime(), date.getTime());\n\t\tassertEquals(date.getTimezoneOffset(), date.getTimezoneOffset());\n\t\tassertEquals(date.getYear(), date.getYear());\n\t}\n\n\t// 场景：还原楼主提出的报错场景\n\tpublic void test_for_issue_3() throws Exception {\n\t\tString str = \"{ \\\"a\\\": { \\\"date\\\": 6, \\\"day\\\": 2, \\\"hours\\\": 18, \\\"minutes\\\": 37, \\\"month\\\": 7, \\\"seconds\\\": 1, \\\"time\\\": 1565087821607, \\\"timezoneOffset\\\": -480, \\\"year\\\": 119 } }\";\n\t\ttry {\n\t\t\tJSON.parseObject(str, A2.class);\n\t\t} catch (JSONException e) {\n\t\t\tassertEquals(\"syntax error, expect }, actual ,\", e.getMessage());\n\t\t}\n\t}\n\n\tpublic static class A {\n\t\t@JSONField(deserializeUsing = MyDateDeserializer.class)\n\t\tprivate Date a;\n\n\t\tpublic Date getA() {\n\t\t\treturn a;\n\t\t}\n\n\t\tpublic void setA(Date a) {\n\t\t\tthis.a = a;\n\t\t}\n\t}\n\n\tpublic static class A2 {\n\t\tprivate Date a;\n\n\t\tpublic Date getA() {\n\t\t\treturn a;\n\t\t}\n\n\t\tpublic void setA(Date a) {\n\t\t\tthis.a = a;\n\t\t}\n\t}\n\n\tpublic static class MyDateDeserializer implements ObjectDeserializer {\n\n\t\t@SuppressWarnings(\"unchecked\")\n\t\t@Override\n\t\tpublic Date deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n\t\t\tMap<String, Object> map = MapDeserializer.instance.deserialze(parser, Map.class, fieldName);\n\t\t\tlong milliseconds = (Long) map.get(\"time\");\n\t\t\treturn new Date(milliseconds);\n\t\t}\n\n\t\t@Override\n\t\tpublic int getFastMatchToken() {\n\t\t\treturn JSONToken.LBRACE;\n\t\t}\n\n\t}\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2600/Issue2628.java",
    "content": "package com.alibaba.json.bvt.issue_2600;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.math.BigInteger;\n\npublic class Issue2628 extends TestCase {\n    public void test_for_issue() throws Exception {\n        long MAX_LONG = Long.MAX_VALUE; //9223372036854775807\n        long MIN_LONG = Long.MIN_VALUE; //-9223372036854775808\n\n        String s1 = \"9423372036854775807\"; //-9423372036854775808\n        BigInteger bi1 = JSON.parseObject(s1, BigInteger.class); //没问题\n        assertEquals(\"9423372036854775807\", bi1.toString());\n\n        BigInteger bi2 = new BigInteger(s1); //没问题\n        assertEquals(\"9423372036854775807\", bi2.toString());\n\n        Tobject tobj1 = new Tobject();\n        tobj1.setBi(bi2); //没问题\n        assertEquals(\"9423372036854775807\", tobj1.getBi().toString());;\n\n        String s2 = JSON.toJSONString(tobj1);\n        Tobject tobj2 = JSON.parseObject(s2, Tobject.class);  //有问题\n        assertEquals(\"9423372036854775807\", tobj2.getBi().toString());\n    }\n\n    static class Tobject {\n        private BigInteger bi;\n\n        public BigInteger getBi() {\n            return bi;\n        }\n        public void setBi(BigInteger bi) {\n            this.bi = bi;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2600/Issue2635.java",
    "content": "package com.alibaba.json.bvt.issue_2600;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\npublic class Issue2635 extends TestCase {\n    public void testForIssue() throws Exception {\n        String json = \"{\\\"dt\\\":\\\"evt\\\",\\\"pr\\\":{\\\"_订单金额\\\":\\\"100\\\",\\\"$AA_epid#_优惠券金额\\\":848,\\\"$AA_eptp#_Client_id\\\":\\\"string\\\",\\\"$AA_eptp#_访客类别\\\":\\\"string\\\",\\\"$AA_uid\\\":856,\\\"$AA_eptp#_优惠券类型\\\":\\\"string\\\",\\\"$AA_sid\\\":1565851940554,\\\"$AA_eptp#_优惠券金额\\\":\\\"string\\\",\\\"$AA_epid#_订单金额\\\":855,\\\"$AA_epid#_订单号\\\":847,\\\"_优惠券名称\\\":\\\"60元优惠折扣券\\\",\\\"$eid\\\":\\\"小程序_订单确认\\\",\\\"$AA_eptp#_订单渠道\\\":\\\"string\\\",\\\"$ct\\\":1565854057608,\\\"$cuid\\\":\\\"YYYY\\\",\\\"_Experiment_id\\\":\\\"0\\\",\\\"$AA_epid#_优惠券类型\\\":853,\\\"_优惠券类型\\\":\\\"D4\\\",\\\"_店主ID\\\":\\\"53890475\\\",\\\"_优惠券金额\\\":\\\"100\\\",\\\"$AA_eptp#_Experiment_id\\\":\\\"string\\\",\\\"$AA_epid#_优惠券名称\\\":850,\\\"$AA_eptp#_优惠券名称\\\":\\\"string\\\",\\\"_优惠券 ID\\\":\\\"916090\\\",\\\"$AA_epid#_店主ID\\\":851,\\\"$tz\\\":28800000,\\\"$AA_eptp#_优惠券 ID\\\":\\\"string\\\",\\\"$AA_eptp#_订单号\\\":\\\"string\\\",\\\"$AA_AAid\\\":7097,\\\"$AA_eptp#_店主ID\\\":\\\"string\\\",\\\"$AA_eid\\\":175,\\\"$AA_epid#_Client_id\\\":21544,\\\"$sid\\\":1569851940554,\\\"_订单渠道\\\":\\\"云购小程序\\\",\\\"_Client_id\\\":\\\"1e8e82fe-c90f-f363-6693-143677891dfa\\\",\\\"$AA_epid#_事件类型\\\":3073,\\\"$AA_epid#_分享来源用户\\\":14694,\\\"$AA_epid#_Experiment_id\\\":21543,\\\"_分享来源用户\\\":\\\"53890475\\\",\\\"$AA_eptp#_订单金额\\\":\\\"string\\\",\\\"$AA_epid#_订单渠道\\\":852,\\\"$AA_eptp#_分享来源用户\\\":\\\"string\\\",\\\"$url\\\":\\\"http://171.90.15:87/CCTesting/data/toPrivateTest?test=https://u2.CCio.com/CC.js&appkey=b8868018cIO94114ad7a81cd5f1ddafd\\\",\\\"_访客类别\\\":\\\"ABO\\\",\\\"$AA_epid#_优惠券 ID\\\":854,\\\"_订单号\\\":\\\"PP190830000683\\\",\\\"_下单用户\\\":\\\"720003734\\\",\\\"$AA_epid#_下单用户\\\":849,\\\"$AA_eptp#_事件类型\\\":\\\"string\\\",\\\"$uuid\\\":\\\"5c910d893bc341aBHN02119708ec13df\\\",\\\"$AA_eptp#_下单用户\\\":\\\"string\\\",\\\"$AA_epid#_访客类别\\\":856,\\\"$AA_did\\\":6736,\\\"$referrer_domain\\\":\\\"10.33.180.15:8088\\\",\\\"_事件类型\\\":\\\"订单确认\\\",\\\"$ref\\\":\\\"http://10.283.100.10:8088/CCTesting/data/toPrivate\\\"}}\\n\";\n        JSON.parseObject(json);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2600/Issue2678.java",
    "content": "package com.alibaba.json.bvt.issue_2600;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class Issue2678 extends TestCase {\n    public void test_field() throws Exception {\n        Person person = new Person();\n        person.setName(\"Ariston\");\n        person.setAge(23);\n        String json = JSON.toJSONString(person);\n        assertEquals(\"{\\\"age\\\":23,'name':'Ariston'}\", json);\n    }\n\n    public void test_getter() throws Exception {\n        Person2 person = new Person2();\n        person.setName(\"Ariston\");\n        person.setAge(23);\n        String json = JSON.toJSONString(person);\n        assertEquals(\"{\\\"age\\\":23,'name':'Ariston'}\", json);\n    }\n\n    static class Person {\n\n        @JSONField(serialzeFeatures = SerializerFeature.UseSingleQuotes)\n        private String name;\n\n        private int age;\n\n        public String getName()\n        {\n            return name;\n        }\n\n        public void setName( String name )\n        {\n            this.name = name;\n        }\n\n        public int getAge()\n        {\n            return age;\n        }\n\n        public void setAge( int age )\n        {\n            this.age = age;\n        }\n    }\n\n    static class Person2 {\n\n        private String name;\n\n        private int age;\n\n        @JSONField(serialzeFeatures = SerializerFeature.UseSingleQuotes)\n        public String getName()\n        {\n            return name;\n        }\n\n        public void setName( String name )\n        {\n            this.name = name;\n        }\n\n        public int getAge()\n        {\n            return age;\n        }\n\n        public void setAge( int age )\n        {\n            this.age = age;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2600/Issue2685.java",
    "content": "package com.alibaba.json.bvt.issue_2600;\n\nimport java.lang.reflect.Type;\n\nimport org.marre.sms.SmsMessage;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\nimport com.alibaba.fastjson.serializer.StringCodec;\nimport com.zx.sms.codec.cmpp.msg.CmppSubmitResponseMessage;\nimport com.zx.sms.codec.smgp.msg.SMGPSubmitMessage;\nimport com.zx.sms.common.util.CMPPCommonUtil;\nimport com.zx.sms.common.util.MsgId;\n\nimport junit.framework.TestCase;\n\npublic class Issue2685 extends TestCase {\n    public void test_field() throws Exception {\n        SMGPSubmitMessage smgpSubmitMessage = new SMGPSubmitMessage();\n        smgpSubmitMessage.setSequenceNo(1);\n        smgpSubmitMessage.setServiceId(\"hell\");\n        smgpSubmitMessage.setMsgContent(\"hello\"); // 注释掉可以正常\n        smgpSubmitMessage.setChargeTermId(\"123555\");\n        smgpSubmitMessage.setSrcTermId(\"10086\");\n        CmppSubmitResponseMessage submitResponseMessage = new CmppSubmitResponseMessage(1);\n        submitResponseMessage.setResult(0);\n        submitResponseMessage.setMsgId(new MsgId());\n\n        String smsMsg = JSON.toJSONString(smgpSubmitMessage);\n        // System.out.println(smsMsg);\n\n        JSON.addMixInAnnotations(SMGPSubmitMessage.class, Mixin.class);\n        smgpSubmitMessage = JSON.parseObject(smsMsg, SMGPSubmitMessage.class);\n        assertEquals(\"hello\", smgpSubmitMessage.getMsgContent());\n    }\n\n    public interface Mixin {\n        @JSONField(deserializeUsing = MyDeserializer.class)\n        void setMsgContent(SmsMessage msg);\n    }\n\n    public static class MyDeserializer implements ObjectDeserializer {\n\n        public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n            String msg = StringCodec.deserialze(parser);\n            return (T) CMPPCommonUtil.buildTextMessage(msg);\n        }\n\n        public int getFastMatchToken() {\n            return JSONToken.LITERAL_STRING;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2600/Issue2689.java",
    "content": "package com.alibaba.json.bvt.issue_2600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport junit.framework.TestCase;\n\npublic class Issue2689 extends TestCase\n{\n    public void test_0() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parse(\"{\\\"val\\\":\\\"\\\\x~\\\"\");\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertTrue(\n                error.getMessage().startsWith(\"invalid escape character\"));\n    }\n\n    public void test_1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parse(\"{\\\"val\\\":'\\\\x~'\");\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertTrue(\n                error.getMessage().startsWith(\"invalid escape character\"));\n    }\n\n    public void test_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parse(\"{\\\"val\\\":'\\\\x1'\");\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertTrue(\n                error.getMessage().startsWith(\"invalid escape character\"));\n    }\n\n    public void test_3() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parse(\"{\\\"val\\\":'\\\\x'\");\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertTrue(\n                error.getMessage().startsWith(\"invalid escape character\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2700/Issue2703.java",
    "content": "package com.alibaba.json.bvt.issue_2700;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\npublic class Issue2703 extends TestCase {\n    public void test_for_issue() {\n        Object a = JSON.toJavaObject(new JSONObject(), JSON.class);\n        assertTrue(a instanceof JSONObject);\n\n        Object b = new JSONObject().toJavaObject(JSON.class);\n        assertTrue(b instanceof JSONObject);\n\n        Object c = JSON.toJavaObject(new JSONArray(), JSON.class);\n        assertTrue(c instanceof JSONArray);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2700/Issue2721Test.java",
    "content": "package com.alibaba.json.bvt.issue_2700;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\nimport org.junit.Test;\n\nimport java.util.List;\n\npublic class Issue2721Test extends TestCase\n{\n    public void test2721() {\n        String chineseKeyString = \"[{\\\"名称\\\": \\\"脆皮青豆\\\", \\\"配料\\\": [\\\"豌豆\\\", \\\"棕榈油\\\", \\\"白砂糖\\\", \\\"食用盐\\\", \\\"玉米淀粉\\\"]}]\";\n        System.out.println(JSONPath.read(chineseKeyString, \"$[名称 = '脆皮青豆']\"));\n        // [{\"名称\":\"脆皮青豆\",\"配料\":[\"豌豆\",\"棕榈油\",\"白砂糖\",\"食用盐\",\"玉米淀粉\"]}]\n\n        String normalKeyString = \"[{ \\\"name\\\": \\\"脆皮青豆\\\", \\\"配料\\\": [\\\"豌豆\\\", \\\"棕榈油\\\", \\\"白砂糖\\\", \\\"食用盐\\\", \\\"玉米淀粉\\\"] }]\";\n        System.out.println(JSONPath.read(normalKeyString, \"$[name = '脆皮青豆']\"));\n        // [{\"name\":\"脆皮青豆\",\"配料\":[\"豌豆\",\"棕榈油\",\"白砂糖\",\"食用盐\",\"玉米淀粉\"]}]\n//\n        Assert.assertFalse(\"Chinese Key is NOT OK, Array length is 0!\", ((List) JSONPath.read(chineseKeyString, \"$[名称 = '脆皮青豆']\")).isEmpty());\n        Assert.assertFalse(\"Chinese Key is NOT OK, Array length is 0!\", ((List) JSONPath.read(normalKeyString, \"$[name = '脆皮青豆']\")).isEmpty());\n    }\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2700/Issue2736.java",
    "content": "package com.alibaba.json.bvt.issue_2700;\n\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\npublic class Issue2736 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSONObject s = JSONObject.parseObject(\"{1:2,3:4}\");\n        for(String s1 : s.keySet()){\n            System.out.println(s1);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2700/Issue2743.java",
    "content": "package com.alibaba.json.bvt.issue_2700;\n\n//import static org.junit.Assert.assertArrayEquals;\n//\n//import java.util.regex.Pattern;\n\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class Issue2743 extends TestCase {\n\n    // 场景：验证字符串数组，楼主提供的用例\n    public void test_0() throws Exception {\n        String json = \"{\\\"info\\\":{\\\"com.xxx.service.xxxServiceForOrder@queryGoodsV2(Long,Long,Long)\\\":[{\\\"method\\\":\\\"queryPrepayGoodsV2\\\"}]}}\";\n        Object obj = JSONPath.extract(json,\n                \"$['info']['com.xxx.service.xxxServiceForOrder@queryGoodsV2(Long,Long,Long)']\");\n        assertEquals(\"[{\\\"method\\\":\\\"queryPrepayGoodsV2\\\"}]\", obj.toString());\n    }\n\n    // 场景：验证数字数组\n    public void test_1() throws Exception {\n        String json = \"[10,11,12,13,14,15,16,17,18,19,20]\";\n        Object obj = JSONPath.extract(json, \"$[3,4]\");\n        assertEquals(\"[13,14]\", obj.toString());\n    }\n//\n//    // 场景：验证修复bug用的正则表达式\n//    public void test_2() throws Exception {\n//        String strArrayRegex = \"\\'\\\\s*,\\\\s*\\'\";\n//        Pattern strArrayPattern = Pattern.compile(strArrayRegex);\n//\n//        assertFalse(\n//                strArrayPattern.matcher(\"'com.xxx.service.xxxServiceForOrder@queryGoodsV2(Long,Long,Long)'\").find());\n//        assertTrue(strArrayPattern.matcher(\"'id','name'\").find());\n//        assertTrue(strArrayPattern.matcher(\"'id'    ,    'name'\").find());\n//        assertTrue(strArrayPattern.matcher(\"'id',    'name'\").find());\n//        assertTrue(strArrayPattern.matcher(\"'id'    ,'name'\").find());\n//\n//        String[] strs = { \"'com.xxx.service.xxxServiceForOrder@queryGoodsV2(Long,Long,Long)'\" };\n//        assertArrayEquals(strs, strs[0].split(strArrayRegex));\n//\n//        strs = new String[] { \"'id\", \"name'\" };\n//        assertArrayEquals(strs, \"'id','name'\".split(strArrayRegex));\n//        assertArrayEquals(strs, \"'id'    ,    'name'\".split(strArrayRegex));\n//        assertArrayEquals(strs, \"'id'    ,'name'\".split(strArrayRegex));\n//        assertArrayEquals(strs, \"'id',    'name'\".split(strArrayRegex));\n//    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2700/Issue2752.java",
    "content": "package com.alibaba.json.bvt.issue_2700;\n\nimport org.springframework.data.domain.PageRequest;\nimport org.springframework.data.domain.Pageable;\nimport org.springframework.data.domain.Sort;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\nimport com.alibaba.fastjson.serializer.MiscCodec;\nimport com.alibaba.fastjson.serializer.ObjectSerializer;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.spi.Module;\n\nimport junit.framework.TestCase;\n\npublic class Issue2752 extends TestCase {\n\n    public void test_for_issue() {\n        Pageable pageRequest = new PageRequest(0, 10, new Sort(new Sort.Order(\"id, desc\")));\n        SerializeConfig config = new SerializeConfig();\n        config.register(new MyModule());\n        String result = JSON.toJSONString(pageRequest, config);\n        assertTrue(result.indexOf(\"\\\"property\\\":\\\"id, desc\\\"\") != -1);\n    }\n\n    public class MyModule implements Module {\n\n        @Override\n        public ObjectDeserializer createDeserializer(ParserConfig config, Class type) {\n            if (type.getName().equals(\"org.springframework.data.domain.Sort\")) {\n                return MiscCodec.instance;\n            }\n            return null;\n        }\n\n        @Override\n        public ObjectSerializer createSerializer(SerializeConfig config, Class type) {\n            if (type.getName().equals(\"org.springframework.data.domain.Sort\")) {\n                return MiscCodec.instance;\n            }\n            return null;\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2700/Issue2754.java",
    "content": "package com.alibaba.json.bvt.issue_2700;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Calendar;\nimport java.util.TimeZone;\n\npublic class Issue2754 extends TestCase {\n    public void test_for_issue0() throws Exception {\n        String s = \"{\\\"p1\\\":\\\"2019-09-18T20:35:00+12:45\\\"}\";\n        C c = JSON.parseObject(s, C.class);\n\n        SimpleDateFormat sdf = new SimpleDateFormat(\"yyyy-MM-dd'T'HH:mm:ssXXX\");\n        sdf.setTimeZone(TimeZone.getTimeZone(\"Pacific/Chatham\"));\n        assertEquals(\"2019-09-18T20:35:00+12:45\", sdf.format(c.p1.getTime()));\n    }\n\n    public void test_for_issue1() throws Exception {\n        String s = \"{\\\"p1\\\":\\\"2019-09-18T20:35:00+12:45\\\"}\";\n        C c = JSON.parseObject(s, C.class);\n\n        SimpleDateFormat sdf = new SimpleDateFormat(\"yyyy-MM-dd'T'HH:mm:ssXXX\");\n        sdf.setTimeZone(TimeZone.getTimeZone(\"NZ-CHAT\"));\n        assertEquals(\"2019-09-18T20:35:00+12:45\", sdf.format(c.p1.getTime()));\n    }\n\n    public void test_for_issue2() throws Exception {\n        String s = \"{\\\"p1\\\":\\\"2019-09-18T20:35:00+05:45\\\"}\";\n        C c = JSON.parseObject(s, C.class);\n\n        SimpleDateFormat sdf = new SimpleDateFormat(\"yyyy-MM-dd'T'HH:mm:ssXXX\");\n        sdf.setTimeZone(TimeZone.getTimeZone(\"Asia/Kathmandu\"));\n        assertEquals(\"2019-09-18T20:35:00+05:45\", sdf.format(c.p1.getTime()));\n    }\n\n    public void test_for_issue3() throws Exception {\n        String s = \"{\\\"p1\\\":\\\"2019-09-18T20:35:00+05:45\\\"}\";\n        C c = JSON.parseObject(s, C.class);\n\n        SimpleDateFormat sdf = new SimpleDateFormat(\"yyyy-MM-dd'T'HH:mm:ssXXX\");\n        sdf.setTimeZone(TimeZone.getTimeZone(\"Asia/Katmandu\"));\n        assertEquals(\"2019-09-18T20:35:00+05:45\", sdf.format(c.p1.getTime()));\n    }\n\n    public void test_for_issue4() throws Exception {\n        String s = \"{\\\"p1\\\":\\\"2019-09-18T20:35:00+08:45\\\"}\";\n        C c = JSON.parseObject(s, C.class);\n\n        SimpleDateFormat sdf = new SimpleDateFormat(\"yyyy-MM-dd'T'HH:mm:ssXXX\");\n        sdf.setTimeZone(TimeZone.getTimeZone(\"Australia/Eucla\"));\n        assertEquals(\"2019-09-18T20:35:00+08:45\", sdf.format(c.p1.getTime()));\n    }\n    public static class C{\n        public Calendar p1;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2700/Issue2772.java",
    "content": "package com.alibaba.json.bvt.issue_2700;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.Date;\n\npublic class Issue2772 extends TestCase {\n    public void test_for_issue() throws Exception {\n        {\n            java.sql.Time time = java.sql.Time.valueOf(\"12:13:14\");\n            long millis = time.getTime();\n            assertEquals(Long.toString(millis/1000), JSON.toJSONStringWithDateFormat(time, \"unixtime\"));\n            assertEquals(Long.toString(millis), JSON.toJSONStringWithDateFormat(time, \"millis\"));\n        }\n\n        long millis = System.currentTimeMillis();\n        assertEquals(Long.toString(millis), JSON.toJSONStringWithDateFormat(new Date(millis), \"millis\"));\n        assertEquals(Long.toString(millis/1000), JSON.toJSONStringWithDateFormat(new Date(millis), \"unixtime\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2700/Issue2779.java",
    "content": "package com.alibaba.json.bvt.issue_2700;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\npublic class Issue2779 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String str = JSON.toJSONString(new Model());\n        JSON.parseObject(str, Model.class);\n    }\n\n    public static class Model {\n        private List f000;\n        private List f001;\n        private List f002;\n        private List f003;\n        private List f004;\n        private List f005;\n        private List f006;\n        private List f007;\n        private List f008;\n        private List f009;\n        private List f010;\n        private List f011;\n        private List f012;\n        private List f013;\n        private List f014;\n        private List f015;\n        private List f016;\n        private List f017;\n        private List f018;\n        private List f019;\n        private List f020;\n        private List f021;\n        private List f022;\n        private List f023;\n        private List f024;\n        private List f025;\n        private List f026;\n        private List f027;\n        private List f028;\n        private List f029;\n        private List f030;\n        private List f031;\n        private List f032;\n        private List f033;\n        private List f034;\n        private List f035;\n        private List f036;\n        private List f037;\n        private List f038;\n        private List f039;\n        private List f040;\n        private List f041;\n        private List f042;\n        private List f043;\n        private List f044;\n        private List f045;\n        private List f046;\n        private List f047;\n        private List f048;\n        private List f049;\n        private List f050;\n        private List f051;\n        private List f052;\n        private List f053;\n        private List f054;\n        private List f055;\n        private List f056;\n        private List f057;\n        private List f058;\n        private List f059;\n        private List f060;\n        private List f061;\n        private List f062;\n        private List f063;\n        private List f064;\n        private List f065;\n        private List f066;\n        private List f067;\n        private List f068;\n        private List f069;\n        private List f070;\n        private List f071;\n        private List f072;\n        private List f073;\n        private List f074;\n        private List f075;\n        private List f076;\n        private List f077;\n        private List f078;\n        private List f079;\n        private List f080;\n        private List f081;\n        private List f082;\n        private List f083;\n        private List f084;\n        private List f085;\n        private List f086;\n        private List f087;\n        private List f088;\n        private List f089;\n        private List f090;\n        private List f091;\n        private List f092;\n        private List f093;\n        private List f094;\n        private List f095;\n        private List f096;\n        private List f097;\n        private List f098;\n        private List f099;\n\n\n\n\n        private List f100;\n        private List f101;\n        private List f102;\n        private List f103;\n        private List f104;\n        private List f105;\n        private List f106;\n        private List f107;\n        private List f108;\n        private List f109;\n        private List f110;\n        private List f111;\n        private List f112;\n        private List f113;\n        private List f114;\n        private List f115;\n        private List f116;\n        private List f117;\n        private List f118;\n        private List f119;\n        private List f120;\n        private List f121;\n        private List f122;\n        private List f123;\n        private List f124;\n        private List f125;\n        private List f126;\n        private List f127;\n        private List f128;\n        private List f129;\n        private List f130;\n        private List f131;\n        private List f132;\n        private List f133;\n        private List f134;\n        private List f135;\n        private List f136;\n        private List f137;\n        private List f138;\n        private List f139;\n        private List f140;\n        private List f141;\n        private List f142;\n        private List f143;\n        private List f144;\n        private List f145;\n        private List f146;\n        private List f147;\n        private List f148;\n        private List f149;\n        private List f150;\n        private List f151;\n        private List f152;\n        private List f153;\n        private List f154;\n        private List f155;\n        private List f156;\n        private List f157;\n        private List f158;\n        private List f159;\n        private List f160;\n        private List f161;\n        private List f162;\n        private List f163;\n        private List f164;\n        private List f165;\n        private List f166;\n        private List f167;\n        private List f168;\n        private List f169;\n        private List f170;\n        private List f171;\n        private List f172;\n        private List f173;\n        private List f174;\n        private List f175;\n        private List f176;\n        private List f177;\n        private List f178;\n        private List f179;\n        private List f180;\n        private List f181;\n        private List f182;\n        private List f183;\n        private List f184;\n        private List f185;\n        private List f186;\n        private List f187;\n        private List f188;\n        private List f189;\n        private List f190;\n        private List f191;\n        private List f192;\n        private List f193;\n        private List f194;\n        private List f195;\n        private List f196;\n        private List f197;\n        private List f198;\n        private List f199;\n\n        public List getF000()\n        {\n            return f000;\n        }\n\n        public void setF000(List f000)\n        {\n            this.f000 = f000;\n        }\n\n        public List getF001()\n        {\n            return f001;\n        }\n\n        public void setF001(List f001)\n        {\n            this.f001 = f001;\n        }\n\n        public List getF002()\n        {\n            return f002;\n        }\n\n        public void setF002(List f002)\n        {\n            this.f002 = f002;\n        }\n\n        public List getF003()\n        {\n            return f003;\n        }\n\n        public void setF003(List f003)\n        {\n            this.f003 = f003;\n        }\n\n        public List getF004()\n        {\n            return f004;\n        }\n\n        public void setF004(List f004)\n        {\n            this.f004 = f004;\n        }\n\n        public List getF005()\n        {\n            return f005;\n        }\n\n        public void setF005(List f005)\n        {\n            this.f005 = f005;\n        }\n\n        public List getF006()\n        {\n            return f006;\n        }\n\n        public void setF006(List f006)\n        {\n            this.f006 = f006;\n        }\n\n        public List getF007()\n        {\n            return f007;\n        }\n\n        public void setF007(List f007)\n        {\n            this.f007 = f007;\n        }\n\n        public List getF008()\n        {\n            return f008;\n        }\n\n        public void setF008(List f008)\n        {\n            this.f008 = f008;\n        }\n\n        public List getF009()\n        {\n            return f009;\n        }\n\n        public void setF009(List f009)\n        {\n            this.f009 = f009;\n        }\n\n        public List getF010()\n        {\n            return f010;\n        }\n\n        public void setF010(List f010)\n        {\n            this.f010 = f010;\n        }\n\n        public List getF011()\n        {\n            return f011;\n        }\n\n        public void setF011(List f011)\n        {\n            this.f011 = f011;\n        }\n\n        public List getF012()\n        {\n            return f012;\n        }\n\n        public void setF012(List f012)\n        {\n            this.f012 = f012;\n        }\n\n        public List getF013()\n        {\n            return f013;\n        }\n\n        public void setF013(List f013)\n        {\n            this.f013 = f013;\n        }\n\n        public List getF014()\n        {\n            return f014;\n        }\n\n        public void setF014(List f014)\n        {\n            this.f014 = f014;\n        }\n\n        public List getF015()\n        {\n            return f015;\n        }\n\n        public void setF015(List f015)\n        {\n            this.f015 = f015;\n        }\n\n        public List getF016()\n        {\n            return f016;\n        }\n\n        public void setF016(List f016)\n        {\n            this.f016 = f016;\n        }\n\n        public List getF017()\n        {\n            return f017;\n        }\n\n        public void setF017(List f017)\n        {\n            this.f017 = f017;\n        }\n\n        public List getF018()\n        {\n            return f018;\n        }\n\n        public void setF018(List f018)\n        {\n            this.f018 = f018;\n        }\n\n        public List getF019()\n        {\n            return f019;\n        }\n\n        public void setF019(List f019)\n        {\n            this.f019 = f019;\n        }\n\n        public List getF020()\n        {\n            return f020;\n        }\n\n        public void setF020(List f020)\n        {\n            this.f020 = f020;\n        }\n\n        public List getF021()\n        {\n            return f021;\n        }\n\n        public void setF021(List f021)\n        {\n            this.f021 = f021;\n        }\n\n        public List getF022()\n        {\n            return f022;\n        }\n\n        public void setF022(List f022)\n        {\n            this.f022 = f022;\n        }\n\n        public List getF023()\n        {\n            return f023;\n        }\n\n        public void setF023(List f023)\n        {\n            this.f023 = f023;\n        }\n\n        public List getF024()\n        {\n            return f024;\n        }\n\n        public void setF024(List f024)\n        {\n            this.f024 = f024;\n        }\n\n        public List getF025()\n        {\n            return f025;\n        }\n\n        public void setF025(List f025)\n        {\n            this.f025 = f025;\n        }\n\n        public List getF026()\n        {\n            return f026;\n        }\n\n        public void setF026(List f026)\n        {\n            this.f026 = f026;\n        }\n\n        public List getF027()\n        {\n            return f027;\n        }\n\n        public void setF027(List f027)\n        {\n            this.f027 = f027;\n        }\n\n        public List getF028()\n        {\n            return f028;\n        }\n\n        public void setF028(List f028)\n        {\n            this.f028 = f028;\n        }\n\n        public List getF029()\n        {\n            return f029;\n        }\n\n        public void setF029(List f029)\n        {\n            this.f029 = f029;\n        }\n\n        public List getF030()\n        {\n            return f030;\n        }\n\n        public void setF030(List f030)\n        {\n            this.f030 = f030;\n        }\n\n        public List getF031()\n        {\n            return f031;\n        }\n\n        public void setF031(List f031)\n        {\n            this.f031 = f031;\n        }\n\n        public List getF032()\n        {\n            return f032;\n        }\n\n        public void setF032(List f032)\n        {\n            this.f032 = f032;\n        }\n\n        public List getF033()\n        {\n            return f033;\n        }\n\n        public void setF033(List f033)\n        {\n            this.f033 = f033;\n        }\n\n        public List getF034()\n        {\n            return f034;\n        }\n\n        public void setF034(List f034)\n        {\n            this.f034 = f034;\n        }\n\n        public List getF035()\n        {\n            return f035;\n        }\n\n        public void setF035(List f035)\n        {\n            this.f035 = f035;\n        }\n\n        public List getF036()\n        {\n            return f036;\n        }\n\n        public void setF036(List f036)\n        {\n            this.f036 = f036;\n        }\n\n        public List getF037()\n        {\n            return f037;\n        }\n\n        public void setF037(List f037)\n        {\n            this.f037 = f037;\n        }\n\n        public List getF038()\n        {\n            return f038;\n        }\n\n        public void setF038(List f038)\n        {\n            this.f038 = f038;\n        }\n\n        public List getF039()\n        {\n            return f039;\n        }\n\n        public void setF039(List f039)\n        {\n            this.f039 = f039;\n        }\n\n        public List getF040()\n        {\n            return f040;\n        }\n\n        public void setF040(List f040)\n        {\n            this.f040 = f040;\n        }\n\n        public List getF041()\n        {\n            return f041;\n        }\n\n        public void setF041(List f041)\n        {\n            this.f041 = f041;\n        }\n\n        public List getF042()\n        {\n            return f042;\n        }\n\n        public void setF042(List f042)\n        {\n            this.f042 = f042;\n        }\n\n        public List getF043()\n        {\n            return f043;\n        }\n\n        public void setF043(List f043)\n        {\n            this.f043 = f043;\n        }\n\n        public List getF044()\n        {\n            return f044;\n        }\n\n        public void setF044(List f044)\n        {\n            this.f044 = f044;\n        }\n\n        public List getF045()\n        {\n            return f045;\n        }\n\n        public void setF045(List f045)\n        {\n            this.f045 = f045;\n        }\n\n        public List getF046()\n        {\n            return f046;\n        }\n\n        public void setF046(List f046)\n        {\n            this.f046 = f046;\n        }\n\n        public List getF047()\n        {\n            return f047;\n        }\n\n        public void setF047(List f047)\n        {\n            this.f047 = f047;\n        }\n\n        public List getF048()\n        {\n            return f048;\n        }\n\n        public void setF048(List f048)\n        {\n            this.f048 = f048;\n        }\n\n        public List getF049()\n        {\n            return f049;\n        }\n\n        public void setF049(List f049)\n        {\n            this.f049 = f049;\n        }\n\n        public List getF050()\n        {\n            return f050;\n        }\n\n        public void setF050(List f050)\n        {\n            this.f050 = f050;\n        }\n\n        public List getF051()\n        {\n            return f051;\n        }\n\n        public void setF051(List f051)\n        {\n            this.f051 = f051;\n        }\n\n        public List getF052()\n        {\n            return f052;\n        }\n\n        public void setF052(List f052)\n        {\n            this.f052 = f052;\n        }\n\n        public List getF053()\n        {\n            return f053;\n        }\n\n        public void setF053(List f053)\n        {\n            this.f053 = f053;\n        }\n\n        public List getF054()\n        {\n            return f054;\n        }\n\n        public void setF054(List f054)\n        {\n            this.f054 = f054;\n        }\n\n        public List getF055()\n        {\n            return f055;\n        }\n\n        public void setF055(List f055)\n        {\n            this.f055 = f055;\n        }\n\n        public List getF056()\n        {\n            return f056;\n        }\n\n        public void setF056(List f056)\n        {\n            this.f056 = f056;\n        }\n\n        public List getF057()\n        {\n            return f057;\n        }\n\n        public void setF057(List f057)\n        {\n            this.f057 = f057;\n        }\n\n        public List getF058()\n        {\n            return f058;\n        }\n\n        public void setF058(List f058)\n        {\n            this.f058 = f058;\n        }\n\n        public List getF059()\n        {\n            return f059;\n        }\n\n        public void setF059(List f059)\n        {\n            this.f059 = f059;\n        }\n\n        public List getF060()\n        {\n            return f060;\n        }\n\n        public void setF060(List f060)\n        {\n            this.f060 = f060;\n        }\n\n        public List getF061()\n        {\n            return f061;\n        }\n\n        public void setF061(List f061)\n        {\n            this.f061 = f061;\n        }\n\n        public List getF062()\n        {\n            return f062;\n        }\n\n        public void setF062(List f062)\n        {\n            this.f062 = f062;\n        }\n\n        public List getF063()\n        {\n            return f063;\n        }\n\n        public void setF063(List f063)\n        {\n            this.f063 = f063;\n        }\n\n        public List getF064()\n        {\n            return f064;\n        }\n\n        public void setF064(List f064)\n        {\n            this.f064 = f064;\n        }\n\n        public List getF065()\n        {\n            return f065;\n        }\n\n        public void setF065(List f065)\n        {\n            this.f065 = f065;\n        }\n\n        public List getF066()\n        {\n            return f066;\n        }\n\n        public void setF066(List f066)\n        {\n            this.f066 = f066;\n        }\n\n        public List getF067()\n        {\n            return f067;\n        }\n\n        public void setF067(List f067)\n        {\n            this.f067 = f067;\n        }\n\n        public List getF068()\n        {\n            return f068;\n        }\n\n        public void setF068(List f068)\n        {\n            this.f068 = f068;\n        }\n\n        public List getF069()\n        {\n            return f069;\n        }\n\n        public void setF069(List f069)\n        {\n            this.f069 = f069;\n        }\n\n        public List getF070()\n        {\n            return f070;\n        }\n\n        public void setF070(List f070)\n        {\n            this.f070 = f070;\n        }\n\n        public List getF071()\n        {\n            return f071;\n        }\n\n        public void setF071(List f071)\n        {\n            this.f071 = f071;\n        }\n\n        public List getF072()\n        {\n            return f072;\n        }\n\n        public void setF072(List f072)\n        {\n            this.f072 = f072;\n        }\n\n        public List getF073()\n        {\n            return f073;\n        }\n\n        public void setF073(List f073)\n        {\n            this.f073 = f073;\n        }\n\n        public List getF074()\n        {\n            return f074;\n        }\n\n        public void setF074(List f074)\n        {\n            this.f074 = f074;\n        }\n\n        public List getF075()\n        {\n            return f075;\n        }\n\n        public void setF075(List f075)\n        {\n            this.f075 = f075;\n        }\n\n        public List getF076()\n        {\n            return f076;\n        }\n\n        public void setF076(List f076)\n        {\n            this.f076 = f076;\n        }\n\n        public List getF077()\n        {\n            return f077;\n        }\n\n        public void setF077(List f077)\n        {\n            this.f077 = f077;\n        }\n\n        public List getF078()\n        {\n            return f078;\n        }\n\n        public void setF078(List f078)\n        {\n            this.f078 = f078;\n        }\n\n        public List getF079()\n        {\n            return f079;\n        }\n\n        public void setF079(List f079)\n        {\n            this.f079 = f079;\n        }\n\n        public List getF080()\n        {\n            return f080;\n        }\n\n        public void setF080(List f080)\n        {\n            this.f080 = f080;\n        }\n\n        public List getF081()\n        {\n            return f081;\n        }\n\n        public void setF081(List f081)\n        {\n            this.f081 = f081;\n        }\n\n        public List getF082()\n        {\n            return f082;\n        }\n\n        public void setF082(List f082)\n        {\n            this.f082 = f082;\n        }\n\n        public List getF083()\n        {\n            return f083;\n        }\n\n        public void setF083(List f083)\n        {\n            this.f083 = f083;\n        }\n\n        public List getF084()\n        {\n            return f084;\n        }\n\n        public void setF084(List f084)\n        {\n            this.f084 = f084;\n        }\n\n        public List getF085()\n        {\n            return f085;\n        }\n\n        public void setF085(List f085)\n        {\n            this.f085 = f085;\n        }\n\n        public List getF086()\n        {\n            return f086;\n        }\n\n        public void setF086(List f086)\n        {\n            this.f086 = f086;\n        }\n\n        public List getF087()\n        {\n            return f087;\n        }\n\n        public void setF087(List f087)\n        {\n            this.f087 = f087;\n        }\n\n        public List getF088()\n        {\n            return f088;\n        }\n\n        public void setF088(List f088)\n        {\n            this.f088 = f088;\n        }\n\n        public List getF089()\n        {\n            return f089;\n        }\n\n        public void setF089(List f089)\n        {\n            this.f089 = f089;\n        }\n\n        public List getF090()\n        {\n            return f090;\n        }\n\n        public void setF090(List f090)\n        {\n            this.f090 = f090;\n        }\n\n        public List getF091()\n        {\n            return f091;\n        }\n\n        public void setF091(List f091)\n        {\n            this.f091 = f091;\n        }\n\n        public List getF092()\n        {\n            return f092;\n        }\n\n        public void setF092(List f092)\n        {\n            this.f092 = f092;\n        }\n\n        public List getF093()\n        {\n            return f093;\n        }\n\n        public void setF093(List f093)\n        {\n            this.f093 = f093;\n        }\n\n        public List getF094()\n        {\n            return f094;\n        }\n\n        public void setF094(List f094)\n        {\n            this.f094 = f094;\n        }\n\n        public List getF095()\n        {\n            return f095;\n        }\n\n        public void setF095(List f095)\n        {\n            this.f095 = f095;\n        }\n\n        public List getF096()\n        {\n            return f096;\n        }\n\n        public void setF096(List f096)\n        {\n            this.f096 = f096;\n        }\n\n        public List getF097()\n        {\n            return f097;\n        }\n\n        public void setF097(List f097)\n        {\n            this.f097 = f097;\n        }\n\n        public List getF098()\n        {\n            return f098;\n        }\n\n        public void setF098(List f098)\n        {\n            this.f098 = f098;\n        }\n\n        public List getF099()\n        {\n            return f099;\n        }\n\n        public void setF099(List f099)\n        {\n            this.f099 = f099;\n        }\n\n        public List getF100()\n        {\n            return f100;\n        }\n\n        public void setF100(List f100)\n        {\n            this.f100 = f100;\n        }\n\n        public List getF101()\n        {\n            return f101;\n        }\n\n        public void setF101(List f101)\n        {\n            this.f101 = f101;\n        }\n\n        public List getF102()\n        {\n            return f102;\n        }\n\n        public void setF102(List f102)\n        {\n            this.f102 = f102;\n        }\n\n        public List getF103()\n        {\n            return f103;\n        }\n\n        public void setF103(List f103)\n        {\n            this.f103 = f103;\n        }\n\n        public List getF104()\n        {\n            return f104;\n        }\n\n        public void setF104(List f104)\n        {\n            this.f104 = f104;\n        }\n\n        public List getF105()\n        {\n            return f105;\n        }\n\n        public void setF105(List f105)\n        {\n            this.f105 = f105;\n        }\n\n        public List getF106()\n        {\n            return f106;\n        }\n\n        public void setF106(List f106)\n        {\n            this.f106 = f106;\n        }\n\n        public List getF107()\n        {\n            return f107;\n        }\n\n        public void setF107(List f107)\n        {\n            this.f107 = f107;\n        }\n\n        public List getF108()\n        {\n            return f108;\n        }\n\n        public void setF108(List f108)\n        {\n            this.f108 = f108;\n        }\n\n        public List getF109()\n        {\n            return f109;\n        }\n\n        public void setF109(List f109)\n        {\n            this.f109 = f109;\n        }\n\n        public List getF110()\n        {\n            return f110;\n        }\n\n        public void setF110(List f110)\n        {\n            this.f110 = f110;\n        }\n\n        public List getF111()\n        {\n            return f111;\n        }\n\n        public void setF111(List f111)\n        {\n            this.f111 = f111;\n        }\n\n        public List getF112()\n        {\n            return f112;\n        }\n\n        public void setF112(List f112)\n        {\n            this.f112 = f112;\n        }\n\n        public List getF113()\n        {\n            return f113;\n        }\n\n        public void setF113(List f113)\n        {\n            this.f113 = f113;\n        }\n\n        public List getF114()\n        {\n            return f114;\n        }\n\n        public void setF114(List f114)\n        {\n            this.f114 = f114;\n        }\n\n        public List getF115()\n        {\n            return f115;\n        }\n\n        public void setF115(List f115)\n        {\n            this.f115 = f115;\n        }\n\n        public List getF116()\n        {\n            return f116;\n        }\n\n        public void setF116(List f116)\n        {\n            this.f116 = f116;\n        }\n\n        public List getF117()\n        {\n            return f117;\n        }\n\n        public void setF117(List f117)\n        {\n            this.f117 = f117;\n        }\n\n        public List getF118()\n        {\n            return f118;\n        }\n\n        public void setF118(List f118)\n        {\n            this.f118 = f118;\n        }\n\n        public List getF119()\n        {\n            return f119;\n        }\n\n        public void setF119(List f119)\n        {\n            this.f119 = f119;\n        }\n\n        public List getF120()\n        {\n            return f120;\n        }\n\n        public void setF120(List f120)\n        {\n            this.f120 = f120;\n        }\n\n        public List getF121()\n        {\n            return f121;\n        }\n\n        public void setF121(List f121)\n        {\n            this.f121 = f121;\n        }\n\n        public List getF122()\n        {\n            return f122;\n        }\n\n        public void setF122(List f122)\n        {\n            this.f122 = f122;\n        }\n\n        public List getF123()\n        {\n            return f123;\n        }\n\n        public void setF123(List f123)\n        {\n            this.f123 = f123;\n        }\n\n        public List getF124()\n        {\n            return f124;\n        }\n\n        public void setF124(List f124)\n        {\n            this.f124 = f124;\n        }\n\n        public List getF125()\n        {\n            return f125;\n        }\n\n        public void setF125(List f125)\n        {\n            this.f125 = f125;\n        }\n\n        public List getF126()\n        {\n            return f126;\n        }\n\n        public void setF126(List f126)\n        {\n            this.f126 = f126;\n        }\n\n        public List getF127()\n        {\n            return f127;\n        }\n\n        public void setF127(List f127)\n        {\n            this.f127 = f127;\n        }\n\n        public List getF128()\n        {\n            return f128;\n        }\n\n        public void setF128(List f128)\n        {\n            this.f128 = f128;\n        }\n\n        public List getF129()\n        {\n            return f129;\n        }\n\n        public void setF129(List f129)\n        {\n            this.f129 = f129;\n        }\n\n        public List getF130()\n        {\n            return f130;\n        }\n\n        public void setF130(List f130)\n        {\n            this.f130 = f130;\n        }\n\n        public List getF131()\n        {\n            return f131;\n        }\n\n        public void setF131(List f131)\n        {\n            this.f131 = f131;\n        }\n\n        public List getF132()\n        {\n            return f132;\n        }\n\n        public void setF132(List f132)\n        {\n            this.f132 = f132;\n        }\n\n        public List getF133()\n        {\n            return f133;\n        }\n\n        public void setF133(List f133)\n        {\n            this.f133 = f133;\n        }\n\n        public List getF134()\n        {\n            return f134;\n        }\n\n        public void setF134(List f134)\n        {\n            this.f134 = f134;\n        }\n\n        public List getF135()\n        {\n            return f135;\n        }\n\n        public void setF135(List f135)\n        {\n            this.f135 = f135;\n        }\n\n        public List getF136()\n        {\n            return f136;\n        }\n\n        public void setF136(List f136)\n        {\n            this.f136 = f136;\n        }\n\n        public List getF137()\n        {\n            return f137;\n        }\n\n        public void setF137(List f137)\n        {\n            this.f137 = f137;\n        }\n\n        public List getF138()\n        {\n            return f138;\n        }\n\n        public void setF138(List f138)\n        {\n            this.f138 = f138;\n        }\n\n        public List getF139()\n        {\n            return f139;\n        }\n\n        public void setF139(List f139)\n        {\n            this.f139 = f139;\n        }\n\n        public List getF140()\n        {\n            return f140;\n        }\n\n        public void setF140(List f140)\n        {\n            this.f140 = f140;\n        }\n\n        public List getF141()\n        {\n            return f141;\n        }\n\n        public void setF141(List f141)\n        {\n            this.f141 = f141;\n        }\n\n        public List getF142()\n        {\n            return f142;\n        }\n\n        public void setF142(List f142)\n        {\n            this.f142 = f142;\n        }\n\n        public List getF143()\n        {\n            return f143;\n        }\n\n        public void setF143(List f143)\n        {\n            this.f143 = f143;\n        }\n\n        public List getF144()\n        {\n            return f144;\n        }\n\n        public void setF144(List f144)\n        {\n            this.f144 = f144;\n        }\n\n        public List getF145()\n        {\n            return f145;\n        }\n\n        public void setF145(List f145)\n        {\n            this.f145 = f145;\n        }\n\n        public List getF146()\n        {\n            return f146;\n        }\n\n        public void setF146(List f146)\n        {\n            this.f146 = f146;\n        }\n\n        public List getF147()\n        {\n            return f147;\n        }\n\n        public void setF147(List f147)\n        {\n            this.f147 = f147;\n        }\n\n        public List getF148()\n        {\n            return f148;\n        }\n\n        public void setF148(List f148)\n        {\n            this.f148 = f148;\n        }\n\n        public List getF149()\n        {\n            return f149;\n        }\n\n        public void setF149(List f149)\n        {\n            this.f149 = f149;\n        }\n\n        public List getF150()\n        {\n            return f150;\n        }\n\n        public void setF150(List f150)\n        {\n            this.f150 = f150;\n        }\n\n        public List getF151()\n        {\n            return f151;\n        }\n\n        public void setF151(List f151)\n        {\n            this.f151 = f151;\n        }\n\n        public List getF152()\n        {\n            return f152;\n        }\n\n        public void setF152(List f152)\n        {\n            this.f152 = f152;\n        }\n\n        public List getF153()\n        {\n            return f153;\n        }\n\n        public void setF153(List f153)\n        {\n            this.f153 = f153;\n        }\n\n        public List getF154()\n        {\n            return f154;\n        }\n\n        public void setF154(List f154)\n        {\n            this.f154 = f154;\n        }\n\n        public List getF155()\n        {\n            return f155;\n        }\n\n        public void setF155(List f155)\n        {\n            this.f155 = f155;\n        }\n\n        public List getF156()\n        {\n            return f156;\n        }\n\n        public void setF156(List f156)\n        {\n            this.f156 = f156;\n        }\n\n        public List getF157()\n        {\n            return f157;\n        }\n\n        public void setF157(List f157)\n        {\n            this.f157 = f157;\n        }\n\n        public List getF158()\n        {\n            return f158;\n        }\n\n        public void setF158(List f158)\n        {\n            this.f158 = f158;\n        }\n\n        public List getF159()\n        {\n            return f159;\n        }\n\n        public void setF159(List f159)\n        {\n            this.f159 = f159;\n        }\n\n        public List getF160()\n        {\n            return f160;\n        }\n\n        public void setF160(List f160)\n        {\n            this.f160 = f160;\n        }\n\n        public List getF161()\n        {\n            return f161;\n        }\n\n        public void setF161(List f161)\n        {\n            this.f161 = f161;\n        }\n\n        public List getF162()\n        {\n            return f162;\n        }\n\n        public void setF162(List f162)\n        {\n            this.f162 = f162;\n        }\n\n        public List getF163()\n        {\n            return f163;\n        }\n\n        public void setF163(List f163)\n        {\n            this.f163 = f163;\n        }\n\n        public List getF164()\n        {\n            return f164;\n        }\n\n        public void setF164(List f164)\n        {\n            this.f164 = f164;\n        }\n\n        public List getF165()\n        {\n            return f165;\n        }\n\n        public void setF165(List f165)\n        {\n            this.f165 = f165;\n        }\n\n        public List getF166()\n        {\n            return f166;\n        }\n\n        public void setF166(List f166)\n        {\n            this.f166 = f166;\n        }\n\n        public List getF167()\n        {\n            return f167;\n        }\n\n        public void setF167(List f167)\n        {\n            this.f167 = f167;\n        }\n\n        public List getF168()\n        {\n            return f168;\n        }\n\n        public void setF168(List f168)\n        {\n            this.f168 = f168;\n        }\n\n        public List getF169()\n        {\n            return f169;\n        }\n\n        public void setF169(List f169)\n        {\n            this.f169 = f169;\n        }\n\n        public List getF170()\n        {\n            return f170;\n        }\n\n        public void setF170(List f170)\n        {\n            this.f170 = f170;\n        }\n\n        public List getF171()\n        {\n            return f171;\n        }\n\n        public void setF171(List f171)\n        {\n            this.f171 = f171;\n        }\n\n        public List getF172()\n        {\n            return f172;\n        }\n\n        public void setF172(List f172)\n        {\n            this.f172 = f172;\n        }\n\n        public List getF173()\n        {\n            return f173;\n        }\n\n        public void setF173(List f173)\n        {\n            this.f173 = f173;\n        }\n\n        public List getF174()\n        {\n            return f174;\n        }\n\n        public void setF174(List f174)\n        {\n            this.f174 = f174;\n        }\n\n        public List getF175()\n        {\n            return f175;\n        }\n\n        public void setF175(List f175)\n        {\n            this.f175 = f175;\n        }\n\n        public List getF176()\n        {\n            return f176;\n        }\n\n        public void setF176(List f176)\n        {\n            this.f176 = f176;\n        }\n\n        public List getF177()\n        {\n            return f177;\n        }\n\n        public void setF177(List f177)\n        {\n            this.f177 = f177;\n        }\n\n        public List getF178()\n        {\n            return f178;\n        }\n\n        public void setF178(List f178)\n        {\n            this.f178 = f178;\n        }\n\n        public List getF179()\n        {\n            return f179;\n        }\n\n        public void setF179(List f179)\n        {\n            this.f179 = f179;\n        }\n\n        public List getF180()\n        {\n            return f180;\n        }\n\n        public void setF180(List f180)\n        {\n            this.f180 = f180;\n        }\n\n        public List getF181()\n        {\n            return f181;\n        }\n\n        public void setF181(List f181)\n        {\n            this.f181 = f181;\n        }\n\n        public List getF182()\n        {\n            return f182;\n        }\n\n        public void setF182(List f182)\n        {\n            this.f182 = f182;\n        }\n\n        public List getF183()\n        {\n            return f183;\n        }\n\n        public void setF183(List f183)\n        {\n            this.f183 = f183;\n        }\n\n        public List getF184()\n        {\n            return f184;\n        }\n\n        public void setF184(List f184)\n        {\n            this.f184 = f184;\n        }\n\n        public List getF185()\n        {\n            return f185;\n        }\n\n        public void setF185(List f185)\n        {\n            this.f185 = f185;\n        }\n\n        public List getF186()\n        {\n            return f186;\n        }\n\n        public void setF186(List f186)\n        {\n            this.f186 = f186;\n        }\n\n        public List getF187()\n        {\n            return f187;\n        }\n\n        public void setF187(List f187)\n        {\n            this.f187 = f187;\n        }\n\n        public List getF188()\n        {\n            return f188;\n        }\n\n        public void setF188(List f188)\n        {\n            this.f188 = f188;\n        }\n\n        public List getF189()\n        {\n            return f189;\n        }\n\n        public void setF189(List f189)\n        {\n            this.f189 = f189;\n        }\n\n        public List getF190()\n        {\n            return f190;\n        }\n\n        public void setF190(List f190)\n        {\n            this.f190 = f190;\n        }\n\n        public List getF191()\n        {\n            return f191;\n        }\n\n        public void setF191(List f191)\n        {\n            this.f191 = f191;\n        }\n\n        public List getF192()\n        {\n            return f192;\n        }\n\n        public void setF192(List f192)\n        {\n            this.f192 = f192;\n        }\n\n        public List getF193()\n        {\n            return f193;\n        }\n\n        public void setF193(List f193)\n        {\n            this.f193 = f193;\n        }\n\n        public List getF194()\n        {\n            return f194;\n        }\n\n        public void setF194(List f194)\n        {\n            this.f194 = f194;\n        }\n\n        public List getF195()\n        {\n            return f195;\n        }\n\n        public void setF195(List f195)\n        {\n            this.f195 = f195;\n        }\n\n        public List getF196()\n        {\n            return f196;\n        }\n\n        public void setF196(List f196)\n        {\n            this.f196 = f196;\n        }\n\n        public List getF197()\n        {\n            return f197;\n        }\n\n        public void setF197(List f197)\n        {\n            this.f197 = f197;\n        }\n\n        public List getF198()\n        {\n            return f198;\n        }\n\n        public void setF198(List f198)\n        {\n            this.f198 = f198;\n        }\n\n        public List getF199()\n        {\n            return f199;\n        }\n\n        public void setF199(List f199)\n        {\n            this.f199 = f199;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2700/Issue2784.java",
    "content": "package com.alibaba.json.bvt.issue_2700;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport java.time.LocalDateTime;\nimport java.time.ZonedDateTime;\nimport java.util.Date;\n\npublic class Issue2784 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model m = new Model();\n        m.time = java.time.LocalDateTime.now();\n        String str = JSON.toJSONString(m);\n        assertEquals(\"{\\\"time\\\":\"\n                + m.time.atZone(JSON.defaultTimeZone.toZoneId()).toInstant().toEpochMilli()\n                + \"}\", str);\n\n        Model m1 = JSON.parseObject(str, Model.class);\n        assertEquals(m.time, m1.time);\n    }\n\n    public void test_for_issue_1() throws Exception {\n        Model m = new Model();\n        m.ztime = ZonedDateTime.now();\n        String str = JSON.toJSONString(m);\n        assertEquals(\"{\\\"ztime\\\":\"\n                + m.ztime.toInstant().toEpochMilli()\n                + \"}\", str);\n\n        Model m1 = JSON.parseObject(str, Model.class);\n        assertEquals(m.ztime.toInstant().toEpochMilli(), m1.ztime.toInstant().toEpochMilli());\n    }\n\n    public void test_for_issue_2() throws Exception {\n        Model m = new Model();\n        m.time1 = java.time.LocalDateTime.now();\n        String str = JSON.toJSONString(m);\n        assertEquals(\"{\\\"time1\\\":\"\n                + m.time1.atZone(JSON.defaultTimeZone.toZoneId()).toEpochSecond()\n                + \"}\", str);\n\n        Model m1 = JSON.parseObject(str, Model.class);\n        assertEquals(m.time1.atZone(JSON.defaultTimeZone.toZoneId()).toEpochSecond()\n                , m1.time1.atZone(JSON.defaultTimeZone.toZoneId()).toEpochSecond());\n    }\n\n    public void test_for_issue_3() throws Exception {\n        Model m = new Model();\n        m.ztime1 = ZonedDateTime.now();\n        String str = JSON.toJSONString(m);\n        assertEquals(\"{\\\"ztime1\\\":\"\n                + m.ztime1.toEpochSecond()\n                + \"}\", str);\n\n        Model m1 = JSON.parseObject(str, Model.class);\n        assertEquals(m.ztime1.toEpochSecond()\n                , m1.ztime1.toEpochSecond());\n    }\n\n    public void test_for_issue_4() throws Exception {\n        Model m = new Model();\n        m.date = new Date();\n        String str = JSON.toJSONString(m);\n        assertEquals(\"{\\\"date\\\":\"\n                + m.date.getTime()\n                + \"}\", str);\n\n        Model m1 = JSON.parseObject(str, Model.class);\n        assertEquals(m.date.getTime()\n                , m1.date.getTime());\n    }\n\n    public void test_for_issue_5() throws Exception {\n        Model m = new Model();\n        m.date1 = new Date();\n        String str = JSON.toJSONString(m);\n        assertEquals(\"{\\\"date1\\\":\"\n                + (m.date1.getTime() / 1000)\n                + \"}\", str);\n\n        Model m1 = JSON.parseObject(str, Model.class);\n        assertEquals(m.date1.getTime() / 1000\n                , m1.date1.getTime() / 1000);\n    }\n\n    public void test_for_issue_6() throws Exception {\n        Model m = new Model();\n        m.date1 = new Date();\n        String str = JSON.toJSONString(m);\n        assertEquals(\"{\\\"date1\\\":\"\n                + (m.date1.getTime() / 1000)\n                + \"}\", str);\n\n        Model m1 = JSON.parseObject(str, Model.class);\n        assertEquals(m.date1.getTime() / 1000\n                , m1.date1.getTime() / 1000);\n    }\n\n    public void test_for_issue_7() throws Exception {\n        Model m = JSON.parseObject(\"{\\\"time2\\\":20190714121314}\", Model.class);\n        assertEquals(m.time2, LocalDateTime.of(2019, 7, 14, 12, 13, 14));\n    }\n\n    public static class Model {\n        @JSONField(format = \"millis\")\n        public LocalDateTime time;\n\n        @JSONField(format = \"millis\")\n        public ZonedDateTime ztime;\n\n        @JSONField(format = \"unixtime\")\n        public LocalDateTime time1;\n\n        @JSONField(format = \"unixtime\")\n        public ZonedDateTime ztime1;\n\n        @JSONField(format = \"millis\")\n        public Date date;\n\n        @JSONField(format = \"unixtime\")\n        public Date date1;\n\n        @JSONField(format = \"yyyyMMddHHmmss\")\n        public LocalDateTime time2;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2700/Issue2787.java",
    "content": "package com.alibaba.json.bvt.issue_2700;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\npublic class Issue2787 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model m = new Model();\n        String str = JSON.toJSONString(m, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty);\n        assertEquals(\"{\\\"value\\\":[]}\", str);\n    }\n\n    public static class Model {\n        public int[] value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2700/Issue2791.java",
    "content": "package com.alibaba.json.bvt.issue_2700;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\npublic class Issue2791 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSONObject jsonObject = JSON.parseObject(\"{\\\"dependencies\\\":[{\\\"values\\\":[{\\\"name\\\":\\\"Demo\\\"}]}]}\");\n        JSONPath.remove(jsonObject, \"$.dependencies.values[?(@.name=='Demo')]\");\n        assertEquals(\"{\\\"dependencies\\\":[{\\\"values\\\":[]}]}\", jsonObject.toString());\n    }\n\n    public void test_for_issue1() throws Exception {\n        JSONObject jsonObject = JSON.parseObject(\"{\\\"dependencies\\\":[{\\\"values\\\":{\\\"name\\\":\\\"Demo\\\"}}]}\");\n        JSONPath.remove(jsonObject, \"$.dependencies.values[?(@.name=='Demo')]\");\n        assertEquals(\"{\\\"dependencies\\\":[]}\", jsonObject.toString());\n    }\n\n    public void test_for_issue2() throws Exception {\n        JSONObject jsonObject = JSON.parseObject(\"{\\\"values\\\":[{\\\"name\\\":\\\"Demo\\\"}]}\");\n        JSONPath.remove(jsonObject, \"$.values[?(@.name=='Demo')]\");\n        assertEquals(\"{\\\"values\\\":[]}\", jsonObject.toString());\n    }\n\n\n    public void test_for_issue3() throws Exception {\n        JSONObject jsonObject = JSON.parseObject(\"{\\\"values\\\":{\\\"name\\\":\\\"Demo\\\"}}\");\n        assertTrue(JSONPath.remove(jsonObject, \"$.values[?(@.name=='Demo')]\"));\n        assertEquals(\"{}\", jsonObject.toString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2700/Issue2792.java",
    "content": "package com.alibaba.json.bvt.issue_2700;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\npublic class Issue2792 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String jsonpath = \"$.sku[?((@.quantity != 0)&&(@.is_onsale == 1))].sku_id\";\n\n        JSONObject root = JSON.parseObject(\"{\\\"sku\\\":{\\\"quantity\\\":12,\\\"is_onsale\\\":1,\\\"sku_id\\\":42356}}\");\n\n        assertEquals(42356, JSONPath.eval(root, jsonpath));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2800/Issue2830.java",
    "content": "package com.alibaba.json.bvt.issue_2800;\n\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class Issue2830 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSONObject jsonObject = JSONObject.parseObject(\"{\\\"qty\\\":\\\"10\\\",\\\"qty1\\\":\\\"10.0\\\",\\\"qty2\\\":\\\"10.000\\\"}\");\n\n        assertEquals(10, jsonObject.getIntValue(\"qty\"));\n        assertEquals(10, jsonObject.getIntValue(\"qty1\"));\n        assertEquals(10, jsonObject.getIntValue(\"qty2\"));\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2800/Issue2866.java",
    "content": "package com.alibaba.json.bvt.issue_2800;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\npublic class Issue2866 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"{\\\"A1\\\":1,\\\"A2\\\":2,\\\"A3\\\":3}\";\n\n        A a = JSON.parseObject(json, A.class, Feature.SupportNonPublicField);\n\n        assertEquals(1, a.a1);\n        assertEquals(2, a.A2);\n        assertEquals(3, a.a3);\n\n    }\n\n    static class A{\n        @JSONField(name=\"A1\")\n        int a1;\n        int A2;\n        @JSONField(name=\"A3\")\n        public int a3;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2800/Issue2894.java",
    "content": "package com.alibaba.json.bvt.issue_2800;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport lombok.Data;\n\nimport java.sql.Timestamp;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\npublic class Issue2894 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getDefault();\n        JSON.defaultLocale = Locale.CHINA;\n    }\n\n    public void test_for_issue() throws Exception {\n        String json = \"{\\\"timestamp\\\":\\\"2019-09-19 08:49:52.350000000\\\"}\";\n        Pojo pojo = JSONObject.parseObject(json, Pojo.class);\n        int nanos = pojo.timestamp.getNanos();\n        assertEquals(nanos, 350000000);\n        assertEquals(\"{\\\"timestamp\\\":\\\"2019-09-19 08:49:52.000000350\\\"}\", JSON.toJSONString(pojo));\n    }\n\n    public static class Pojo {\n        @JSONField(name = \"timestamp\", format = \"yyyy-MM-dd HH:mm:ss.SSSSSSSSS\")\n        public Timestamp timestamp;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2800/Issue2903.java",
    "content": "package com.alibaba.json.bvt.issue_2800;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\npublic class Issue2903 extends TestCase {\n\n    public void test_1() {\n        String date1 = \"{createTime:\\\"1570636800000\\\"}\";\n        String date2 = \"{createTime:1570636800000}\";\n        LoginRequestDTO dto = JSON.parseObject(date1, LoginRequestDTO.class);\n        LoginRequestDTO dto2 = JSON.parseObject(date2, LoginRequestDTO.class);\n        assertEquals(dto.createTime, dto2.createTime);\n    }\n\n    public void test_2() {\n        String date1 = \"{createTime:\\\"1570636800000\\\"}\";\n        String date2 = \"{createTime:1570636800000}\";\n        LoginRequestDTO2 dto = JSON.parseObject(date1, LoginRequestDTO2.class);\n        LoginRequestDTO2 dto2 = JSON.parseObject(date2, LoginRequestDTO2.class);\n        assertEquals(dto.createTime, dto2.createTime);\n    }\n\n    public void test_3() {\n        String date1 = \"{createTime:\\\"1570636800000\\\"}\";\n        String date2 = \"{createTime:1570636800000}\";\n        LoginRequestDTO3 dto = JSON.parseObject(date1, LoginRequestDTO3.class);\n        LoginRequestDTO3 dto2 = JSON.parseObject(date2, LoginRequestDTO3.class);\n        assertEquals(dto.createTime, dto2.createTime);\n    }\n\n    public void test_4() {\n        String date1 = \"{createTime:\\\"1570636800000\\\"}\";\n        String date2 = \"{createTime:1570636800000}\";\n        LoginRequestDTO4 dto = JSON.parseObject(date1, LoginRequestDTO4.class);\n        LoginRequestDTO4 dto2 = JSON.parseObject(date2, LoginRequestDTO4.class);\n        assertEquals(dto.createTime, dto2.createTime);\n    }\n\n    public void test_5() {\n        String date1 = \"{createTime:\\\"1570636800000\\\"}\";\n        String date2 = \"{createTime:1570636800000}\";\n        LoginRequestDTO5 dto = JSON.parseObject(date1, LoginRequestDTO5.class);\n        LoginRequestDTO5 dto2 = JSON.parseObject(date2, LoginRequestDTO5.class);\n        assertEquals(dto.createTime, dto2.createTime);\n    }\n\n    public void test_6() {\n        String date1 = \"{createTime:\\\"1570636800000\\\"}\";\n        String date2 = \"{createTime:1570636800000}\";\n        LoginRequestDTO6 dto = JSON.parseObject(date1, LoginRequestDTO6.class);\n        LoginRequestDTO6 dto2 = JSON.parseObject(date2, LoginRequestDTO6.class);\n        assertEquals(dto.createTime, dto2.createTime);\n    }\n\n    public void test_7() {\n        String date1 = \"{createTime:\\\"1570636800000\\\"}\";\n        String date2 = \"{createTime:1570636800000}\";\n        LoginRequestDTO7 dto = JSON.parseObject(date1, LoginRequestDTO7.class);\n        LoginRequestDTO7 dto2 = JSON.parseObject(date2, LoginRequestDTO7.class);\n        assertEquals(dto.createTime, dto2.createTime);\n    }\n\n    public void test_8() {\n        String date1 = \"{createTime:\\\"1570636800000\\\"}\";\n        String date2 = \"{createTime:1570636800000}\";\n        LoginRequestDTO8 dto = JSON.parseObject(date1, LoginRequestDTO8.class);\n        LoginRequestDTO8 dto2 = JSON.parseObject(date2, LoginRequestDTO8.class);\n        assertEquals(dto.createTime, dto2.createTime);\n    }\n\n    public static class LoginRequestDTO {\n        public java.time.LocalDateTime createTime;\n    }\n\n    public static class LoginRequestDTO2 {\n        public java.time.LocalDate createTime;\n    }\n\n    public static class LoginRequestDTO3 {\n        public java.time.LocalTime createTime;\n    }\n\n    public static class LoginRequestDTO4 {\n        public java.time.ZonedDateTime createTime;\n    }\n\n    public static class LoginRequestDTO5 {\n        public org.joda.time.LocalDateTime createTime;\n    }\n\n    public static class LoginRequestDTO6 {\n        public org.joda.time.LocalDate createTime;\n    }\n\n    public static class LoginRequestDTO7 {\n        public org.joda.time.Instant createTime;\n    }\n\n    public static class LoginRequestDTO8 {\n        public java.time.Instant createTime;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2900/Issue2914.java",
    "content": "package com.alibaba.json.bvt.issue_2900;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\nimport java.util.Queue;\nimport java.util.concurrent.ArrayBlockingQueue;\n\npublic class Issue2914 extends TestCase {\n    public void test_for_issue() throws Exception {\n\n        ComplexInt complexInt = new ComplexInt();\n\n        Queue<Integer> blockQueueInt = new ArrayBlockingQueue<Integer>(5);\n        blockQueueInt.offer(1);\n        blockQueueInt.offer(2);\n        blockQueueInt.offer(3);\n        complexInt.setBlockQueue(blockQueueInt);\n\n        String jsonInt = JSON.toJSONString(complexInt);\n\n        assertEquals(\"{\\\"blockQueue\\\":[1,2,3]}\",jsonInt);\n\n        ComplexInt complexInt1 = JSON.parseObject(jsonInt,Issue2914.ComplexInt.class);\n\n        assertEquals(3, complexInt1.getBlockQueue().size());\n\n\n        Complex complex = new Complex();\n\n        Queue<String> blockQueue = new ArrayBlockingQueue<String>(5);\n        blockQueue.offer(\"BlockQueue 1\");\n        blockQueue.offer(\"BlockQueue 2\");\n        blockQueue.offer(\"BlockQueue 3\");\n        complex.setBlockQueue(blockQueue);\n\n        String json = JSON.toJSONString(complex);\n\n        assertEquals(\"{\\\"blockQueue\\\":[\\\"BlockQueue 1\\\",\\\"BlockQueue 2\\\",\\\"BlockQueue 3\\\"]}\",json);\n\n        Complex complex1 = JSON.parseObject(json,Issue2914.Complex.class);\n\n        assertEquals(3, complex1.getBlockQueue().size());\n\n    }\n\n\n\n\n    public static class Complex  {\n\n        private Queue<String> blockQueue;\n\n        public Queue<String> getBlockQueue() {\n            return blockQueue;\n        }\n\n        public void setBlockQueue(Queue<String> blockQueue) {\n            this.blockQueue = blockQueue;\n        }\n    }\n\n    public static class ComplexInt  {\n\n        private Queue<Integer> blockQueue;\n\n        public Queue<Integer> getBlockQueue() {\n            return blockQueue;\n        }\n\n        public void setBlockQueue(Queue<Integer> blockQueue) {\n            this.blockQueue = blockQueue;\n        }\n    }\n\n\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2900/Issue2939.java",
    "content": "package com.alibaba.json.bvt.issue_2900;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\nimport org.springframework.util.LinkedMultiValueMap;\nimport org.springframework.util.MultiValueMap;\n\nimport java.util.Queue;\nimport java.util.concurrent.ArrayBlockingQueue;\n\npublic class Issue2939 extends TestCase {\n    public void test_for_issue() throws Exception {\n\n        LinkedMultiValueMap multiValueMap = new LinkedMultiValueMap();\n        multiValueMap.add(\"k1\",\"k11\");\n        multiValueMap.add(\"k1\",\"k12\");\n        multiValueMap.add(\"k1\",\"k13\");\n        multiValueMap.add(\"k2\",\"k21\");\n\n\n        String json = JSON.toJSONString(multiValueMap);\n        assertEquals(\"{\\\"k1\\\":[\\\"k11\\\",\\\"k12\\\",\\\"k13\\\"],\\\"k2\\\":[\\\"k21\\\"]}\", json);\n\n\n        Object obj = JSON.parseObject(json, LinkedMultiValueMap.class);\n        assertTrue(obj != null);\n\n        LinkedMultiValueMap map = (LinkedMultiValueMap) obj;\n        assertSame(3, map.get(\"k1\").size());\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2900/Issue2952.java",
    "content": "package com.alibaba.json.bvt.issue_2900;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class Issue2952 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String expected = \"{\\\"l\\\":null,\\\"s\\\":null,\\\"b\\\":null,\\\"i\\\":null,\\\"o\\\":null}\";\n        SerializerFeature[] serializerFeatures = {\n                SerializerFeature.WriteNullListAsEmpty,\n                SerializerFeature.WriteNullStringAsEmpty,\n                SerializerFeature.WriteNullBooleanAsFalse,\n                SerializerFeature.WriteNullNumberAsZero\n        };\n        SerializeConfig asmConfig = new SerializeConfig();\n        asmConfig.setAsmEnable(true);\n        assertEquals(expected, JSON.toJSONString(new Pojo(), asmConfig, serializerFeatures));\n        assertEquals(expected, JSON.toJSONString(new Pojo2(), asmConfig, serializerFeatures));\n        SerializeConfig noasmConfig = new SerializeConfig();\n        noasmConfig.setAsmEnable(false);\n        assertEquals(expected, JSON.toJSONString(new Pojo(), noasmConfig, serializerFeatures));\n        assertEquals(expected, JSON.toJSONString(new Pojo2(), noasmConfig, serializerFeatures));\n    }\n\n    public static class Pojo {\n        @JSONField(serialzeFeatures=SerializerFeature.WriteMapNullValue, ordinal=0)\n        public Object[] l;\n        @JSONField(serialzeFeatures=SerializerFeature.WriteMapNullValue, ordinal=1)\n        public String s;\n        @JSONField(serialzeFeatures=SerializerFeature.WriteMapNullValue, ordinal=2)\n        public Boolean b;\n        @JSONField(serialzeFeatures=SerializerFeature.WriteMapNullValue, ordinal=3)\n        public Integer i;\n        @JSONField(serialzeFeatures=SerializerFeature.WriteMapNullValue, ordinal=4)\n        public Object o;\n    }\n\n    @JSONType(serialzeFeatures=SerializerFeature.WriteMapNullValue)\n    public static class Pojo2 {\n        @JSONField(ordinal=0)\n        public Object[] l;\n        @JSONField(ordinal=1)\n        public String s;\n        @JSONField(ordinal=2)\n        public Boolean b;\n        @JSONField(ordinal=3)\n        public Integer i;\n        @JSONField(ordinal=4)\n        public Object o;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2900/Issue2962.java",
    "content": "package com.alibaba.json.bvt.issue_2900;\n\nimport java.util.Calendar;\nimport java.util.Date;\nimport java.util.TimeZone;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class Issue2962 extends TestCase {\n    private TimeZone original = TimeZone.getDefault();\n\n    @Override\n    public void tearDown () {\n        TimeZone.setDefault(original);\n        JSON.defaultTimeZone = original;\n    }\n\n    public void test_dates_different_timeZones() {\n        for (String id : TimeZone.getAvailableIDs()) {\n            TimeZone timeZone = TimeZone.getTimeZone(id);\n            TimeZone.setDefault(timeZone);\n            JSON.defaultTimeZone = timeZone;\n\n            Calendar cal = Calendar.getInstance();\n            Date now = cal.getTime();\n\n            VO vo = new VO();\n            vo.date = now;\n\n            String json = JSON.toJSONString(vo);\n            VO result = JSON.parseObject(json, VO.class);\n            assertEquals(vo.date, result.date);\n\n            // with iso-format\n            json = JSON.toJSONString(vo, SerializerFeature.UseISO8601DateFormat);\n            System.out.println(id + \" \" + json);\n            result = JSON.parseObject(json, VO.class);\n            assertEquals(JSON.toJSONString(vo.date), JSON.toJSONString(result.date));\n        }\n    }\n\n    public static class VO {\n        public Date date;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_2900/Issue2982.java",
    "content": "package com.alibaba.json.bvt.issue_2900;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\nimport org.junit.Test;\n\npublic class Issue2982 extends TestCase {\n\n\n    @Test\n    public void test_for_issue() {\n        String jsonStr = \"[ { \\\"activity_type\\\" : 0, \\\"activity_id\\\" : \\\"***\\\", \\\"activity_tip\\\" : \\\"***\\\", \\\"position\\\" : \\\"1\\\" }, { \\\"activity_type\\\" : 0, \\\"activity_id\\\" : \\\"2669\\\", \\\"activity_tip\\\" : \\\"****\\\", \\\"position\\\" : \\\"1\\\" }]\";\n        assertTrue(JSONArray.isValidArray(jsonStr));\n        assertTrue(JSON.isValidArray(jsonStr));\n        assertTrue(JSONObject.isValidArray(jsonStr));\n    }\n\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3000/Issue3031.java",
    "content": "package com.alibaba.json.bvt.issue_3000;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\npublic class Issue3031 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String str = \"{\\\"success\\\":true,\\\"message\\\":null,\\\"data\\\":[{\\\"tblId\\\":78,\\\"partId\\\":104,\\\"values\\\":[\\\"p001\\\",\\\"q001\\\"],\\\"dbName\\\":\\\"db001\\\",\\\"tableName\\\":\\\"tbl001\\\",\\\"createTime\\\":1582293531,\\\"lastAccessTime\\\":1,\\\"sd\\\":{\\\"sdId\\\":182,\\\"cdId\\\":181,\\\"cols\\\":[{\\\"name\\\":\\\"col1\\\",\\\"type\\\":\\\"string\\\",\\\"comment\\\":null},{\\\"name\\\":\\\"col2\\\",\\\"type\\\":\\\"int\\\",\\\"comment\\\":\\\"col2\\\"},{\\\"name\\\":\\\"col3\\\",\\\"type\\\":\\\"boolean\\\",\\\"comment\\\":null}],\\\"location\\\":\\\"oss://temp/jianghu/db001/tbl001\\\",\\\"inputFormat\\\":\\\"org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat\\\",\\\"outputFormat\\\":\\\"org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat\\\",\\\"compressed\\\":true,\\\"numBuckets\\\":2,\\\"serdeInfo\\\":{\\\"serdeId\\\":182,\\\"name\\\":null,\\\"serializationLib\\\":\\\"org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe\\\",\\\"parameters\\\":{\\\"field.delim\\\":\\\"\\\\t\\\",\\\"serialization.format\\\":\\\"\\\\t\\\"}},\\\"bucketCols\\\":[\\\"col1\\\"],\\\"sortCols\\\":[{\\\"col\\\":\\\"col1\\\",\\\"order\\\":0}],\\\"parameters\\\":{},\\\"skewedInfo\\\":{\\\"skewedColNames\\\":[\\\"col1\\\",\\\"col3\\\"],\\\"skewedColValues\\\":[[\\\"2\\\",\\\"1\\\"],[\\\"3\\\",\\\"2\\\"]],\\\"skewedColValueLocationMaps\\\":{}},\\\"storedAsSubDirectories\\\":false},\\\"parameters\\\":{\\\"totalSize\\\":\\\"0\\\",\\\"numRows\\\":\\\"-1\\\",\\\"rawDataSize\\\":\\\"-1\\\",\\\"COLUMN_STATS_ACCURATE\\\":\\\"false\\\",\\\"numFiles\\\":\\\"0\\\",\\\"transient_lastDdlTime\\\":\\\"1582293531\\\"},\\\"parametersSize\\\":6},{\\\"tblId\\\":78,\\\"partId\\\":105,\\\"values\\\":[\\\"p001\\\",\\\"q002\\\"],\\\"dbName\\\":\\\"db001\\\",\\\"tableName\\\":\\\"tbl001\\\",\\\"createTime\\\":1582293531,\\\"lastAccessTime\\\":1,\\\"sd\\\":{\\\"sdId\\\":183,\\\"cdId\\\":181,\\\"cols\\\":[{\\\"name\\\":\\\"col1\\\",\\\"type\\\":\\\"string\\\",\\\"comment\\\":null},{\\\"name\\\":\\\"col2\\\",\\\"type\\\":\\\"int\\\",\\\"comment\\\":\\\"col2\\\"},{\\\"name\\\":\\\"col3\\\",\\\"type\\\":\\\"boolean\\\",\\\"comment\\\":null}],\\\"location\\\":\\\"oss://temp/jianghu/db001/tbl001\\\",\\\"inputFormat\\\":\\\"org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat\\\",\\\"outputFormat\\\":\\\"org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat\\\",\\\"compressed\\\":true,\\\"numBuckets\\\":2,\\\"serdeInfo\\\":{\\\"serdeId\\\":183,\\\"name\\\":null,\\\"serializationLib\\\":\\\"org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe\\\",\\\"parameters\\\":{\\\"field.delim\\\":\\\"\\\\t\\\",\\\"serialization.format\\\":\\\"\\\\t\\\"}},\\\"bucketCols\\\":[\\\"col1\\\"],\\\"sortCols\\\":[{\\\"col\\\":\\\"col1\\\",\\\"order\\\":0}],\\\"parameters\\\":{},\\\"skewedInfo\\\":{\\\"skewedColNames\\\":[\\\"col1\\\",\\\"col3\\\"],\\\"skewedColValues\\\":[[\\\"2\\\",\\\"1\\\"],[\\\"3\\\",\\\"2\\\"]],\\\"skewedColValueLocationMaps\\\":{}},\\\"storedAsSubDirectories\\\":false},\\\"parameters\\\":{\\\"totalSize\\\":\\\"0\\\",\\\"numRows\\\":\\\"-1\\\",\\\"rawDataSize\\\":\\\"-1\\\",\\\"COLUMN_STATS_ACCURATE\\\":\\\"false\\\",\\\"numFiles\\\":\\\"0\\\",\\\"transient_lastDdlTime\\\":\\\"1582293531\\\",\\\"$ref\\\":\\\"$[0].parameters\\\"},\\\"parametersSize\\\":7},{\\\"tblId\\\":78,\\\"partId\\\":106,\\\"values\\\":[\\\"p002\\\",\\\"q002\\\"],\\\"dbName\\\":\\\"db001\\\",\\\"tableName\\\":\\\"tbl001\\\",\\\"createTime\\\":1582293531,\\\"lastAccessTime\\\":1,\\\"sd\\\":{\\\"sdId\\\":184,\\\"cdId\\\":181,\\\"cols\\\":[{\\\"name\\\":\\\"col1\\\",\\\"type\\\":\\\"string\\\",\\\"comment\\\":null},{\\\"name\\\":\\\"col2\\\",\\\"type\\\":\\\"int\\\",\\\"comment\\\":\\\"col2\\\"},{\\\"name\\\":\\\"col3\\\",\\\"type\\\":\\\"boolean\\\",\\\"comment\\\":null}],\\\"location\\\":\\\"oss://temp/jianghu/db001/tbl001\\\",\\\"inputFormat\\\":\\\"org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat\\\",\\\"outputFormat\\\":\\\"org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat\\\",\\\"compressed\\\":true,\\\"numBuckets\\\":2,\\\"serdeInfo\\\":{\\\"serdeId\\\":184,\\\"name\\\":null,\\\"serializationLib\\\":\\\"org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe\\\",\\\"parameters\\\":{\\\"field.delim\\\":\\\"\\\\t\\\",\\\"serialization.format\\\":\\\"\\\\t\\\"}},\\\"bucketCols\\\":[\\\"col1\\\"],\\\"sortCols\\\":[{\\\"col\\\":\\\"col1\\\",\\\"order\\\":0}],\\\"parameters\\\":{},\\\"skewedInfo\\\":{\\\"skewedColNames\\\":[\\\"col1\\\",\\\"col3\\\"],\\\"skewedColValues\\\":[[\\\"2\\\",\\\"1\\\"],[\\\"3\\\",\\\"2\\\"]],\\\"skewedColValueLocationMaps\\\":{}},\\\"storedAsSubDirectories\\\":false},\\\"parameters\\\":{\\\"totalSize\\\":\\\"0\\\",\\\"numRows\\\":\\\"-1\\\",\\\"rawDataSize\\\":\\\"-1\\\",\\\"COLUMN_STATS_ACCURATE\\\":\\\"false\\\",\\\"numFiles\\\":\\\"0\\\",\\\"transient_lastDdlTime\\\":\\\"1582293531\\\",\\\"$ref\\\":\\\"$[0].parameters\\\"},\\\"parametersSize\\\":7}]}\";\n        System.out.println(str);\n        ResultData obj = JSON.parseObject(str, ResultData.class);\n    }\n\n    public static class ResultData\n    {\n        private boolean success;\n        private String message;\n        private Object data;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3000/Issue3049.java",
    "content": "package com.alibaba.json.bvt.issue_3000;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\npublic class Issue3049 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json1 = \"{\\\"date\\\":\\\"2019-11-1 21:45:12\\\"}\";\n        MyObject myObject1 = JSON.parseObject(json1, MyObject.class);\n        String str2 = JSON.toJSONStringWithDateFormat(myObject1, \"yyyy-MM-dd HH:mm:ss\");\n        assertEquals(\"{\\\"date\\\":\\\"2019-11-01 21:45:12\\\"}\", str2);\n    }\n\n    public static class MyObject {\n        public java.util.Date date;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3000/Issue3057.java",
    "content": "package com.alibaba.json.bvt.issue_3000;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\npublic class Issue3057 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String str = \"{\\\"q\\\":[]}\";\n        Bean bean = JSON.parseObject(str, Bean.class);\n        assertEquals(0, bean.q.size());\n    }\n\n    public static class Bean {\n        public java.util.Deque q;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3000/Issue3060.java",
    "content": "package com.alibaba.json.bvt.issue_3000;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\npublic class Issue3060 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String str = \"{\\\"type\\\":1}\";\n        Bean bean = JSON.parseObject(str).toJavaObject(Bean.class);\n        Bean bean1 = JSON.parseObject(str, Bean.class);\n        assertEquals(bean.type, bean1.type);\n    }\n\n    public static class Bean {\n        public int type;\n    }\n\n    public enum Type {\n        Small, Big\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3000/Issue3065.java",
    "content": "package com.alibaba.json.bvt.issue_3000;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\npublic class Issue3065 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String data = \"{\\n\" +\n                \"\\t\\\"code\\\":\\\"OK\\\",\\n\" +\n                \"\\t\\\"data\\\":[\\n\" +\n                \"\\t\\t{\\n\" +\n                \"\\t\\t\\t\\\"createTime\\\":1584457789,\\n\" +\n                \"\\t\\t\\t\\\"dbName\\\":\\\"basic_test\\\",\\n\" +\n                \"\\t\\t\\t\\\"lastAccessTime\\\":0,\\n\" +\n                \"\\t\\t\\t\\\"parameters\\\":{\\n\" +\n                \"\\t\\t\\t\\t\\\"transient_lastDdlTime\\\":\\\"1584457789\\\"\\n\" +\n                \"\\t\\t\\t},\\n\" +\n                \"\\t\\t\\t\\\"parametersSize\\\":2,\\n\" +\n                \"\\t\\t\\t\\\"partId\\\":2209,\\n\" +\n                \"\\t\\t\\t\\\"sd\\\":{\\n\" +\n                \"\\t\\t\\t\\t\\\"bucketCols\\\":[],\\n\" +\n                \"\\t\\t\\t\\t\\\"cdId\\\":2719,\\n\" +\n                \"\\t\\t\\t\\t\\\"cols\\\":[\\n\" +\n                \"\\t\\t\\t\\t\\t{\\n\" +\n                \"\\t\\t\\t\\t\\t\\t\\\"name\\\":\\\"n_nationkey\\\",\\n\" +\n                \"\\t\\t\\t\\t\\t\\t\\\"type\\\":\\\"int\\\"\\n\" +\n                \"\\t\\t\\t\\t\\t},\\n\" +\n                \"\\t\\t\\t\\t\\t{\\n\" +\n                \"\\t\\t\\t\\t\\t\\t\\\"name\\\":\\\"n_name\\\",\\n\" +\n                \"\\t\\t\\t\\t\\t\\t\\\"type\\\":\\\"string\\\"\\n\" +\n                \"\\t\\t\\t\\t\\t},\\n\" +\n                \"\\t\\t\\t\\t\\t{\\n\" +\n                \"\\t\\t\\t\\t\\t\\t\\\"name\\\":\\\"n_regionkey\\\",\\n\" +\n                \"\\t\\t\\t\\t\\t\\t\\\"type\\\":\\\"int\\\"\\n\" +\n                \"\\t\\t\\t\\t\\t},\\n\" +\n                \"\\t\\t\\t\\t\\t{\\n\" +\n                \"\\t\\t\\t\\t\\t\\t\\\"name\\\":\\\"n_comment\\\",\\n\" +\n                \"\\t\\t\\t\\t\\t\\t\\\"type\\\":\\\"string\\\"\\n\" +\n                \"\\t\\t\\t\\t\\t}\\n\" +\n                \"\\t\\t\\t\\t],\\n\" +\n                \"\\t\\t\\t\\t\\\"compressed\\\":false,\\n\" +\n                \"\\t\\t\\t\\t\\\"inputFormat\\\":\\\"org.apache.hadoop.mapred.TextInputFormat\\\",\\n\" +\n                \"\\t\\t\\t\\t\\\"location\\\":\\\"oss://hello/world/\\\",\\n\" +\n                \"\\t\\t\\t\\t\\\"numBuckets\\\":0,\\n\" +\n                \"\\t\\t\\t\\t\\\"outputFormat\\\":\\\"org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat\\\",\\n\" +\n                \"\\t\\t\\t\\t\\\"parameters\\\":{},\\n\" +\n                \"\\t\\t\\t\\t\\\"sdId\\\":2662,\\n\" +\n                \"\\t\\t\\t\\t\\\"serDeInfo\\\":{\\n\" +\n                \"\\t\\t\\t\\t\\t\\\"name\\\":\\\"nation_part_hidden\\\",\\n\" +\n                \"\\t\\t\\t\\t\\t\\\"parameters\\\":{\\n\" +\n                \"\\t\\t\\t\\t\\t\\t\\\"field.delim\\\":\\\"|\\\",\\n\" +\n                \"\\t\\t\\t\\t\\t\\t\\\"serialization.format\\\":\\\"|\\\"\\n\" +\n                \"\\t\\t\\t\\t\\t},\\n\" +\n                \"\\t\\t\\t\\t\\t\\\"serdeId\\\":2720,\\n\" +\n                \"\\t\\t\\t\\t\\t\\\"serializationLib\\\":\\\"org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe\\\"\\n\" +\n                \"\\t\\t\\t\\t},\\n\" +\n                \"\\t\\t\\t\\t\\\"skewedInfo\\\":{\\n\" +\n                \"\\t\\t\\t\\t\\t\\\"skewedColNames\\\":[],\\n\" +\n                \"\\t\\t\\t\\t\\t\\\"skewedColValueLocationMaps\\\":{},\\n\" +\n                \"\\t\\t\\t\\t\\t\\\"skewedColValues\\\":[]\\n\" +\n                \"\\t\\t\\t\\t},\\n\" +\n                \"\\t\\t\\t\\t\\\"sortCols\\\":[],\\n\" +\n                \"\\t\\t\\t\\t\\\"storedAsSubDirectories\\\":false\\n\" +\n                \"\\t\\t\\t},\\n\" +\n                \"\\t\\t\\t\\\"tableName\\\":\\\"nation_part_hidden\\\",\\n\" +\n                \"\\t\\t\\t\\\"tblId\\\":453,\\n\" +\n                \"\\t\\t\\t\\\"values\\\":[\\n\" +\n                \"\\t\\t\\t\\t\\\"2019\\\",\\n\" +\n                \"\\t\\t\\t\\t\\\"01\\\",\\n\" +\n                \"\\t\\t\\t\\t\\\"15\\\"\\n\" +\n                \"\\t\\t\\t]\\n\" +\n                \"\\t\\t},\\n\" +\n                \"\\t\\t{\\n\" +\n                \"\\t\\t\\t\\\"createTime\\\":1584457789,\\n\" +\n                \"\\t\\t\\t\\\"dbName\\\":\\\"basic_test\\\",\\n\" +\n                \"\\t\\t\\t\\\"lastAccessTime\\\":0,\\n\" +\n                \"\\t\\t\\t\\\"parameters\\\":{\\n\" +\n                \"\\t\\t\\t\\t\\\"transient_lastDdlTime\\\":\\\"1584457789\\\"\\n\" +\n                \"\\t\\t\\t},\\n\" +\n                \"\\t\\t\\t\\\"parametersSize\\\":2,\\n\" +\n                \"\\t\\t\\t\\\"partId\\\":2210,\\n\" +\n                \"\\t\\t\\t\\\"sd\\\":{\\n\" +\n                \"\\t\\t\\t\\t\\\"bucketCols\\\":[],\\n\" +\n                \"\\t\\t\\t\\t\\\"cdId\\\":2719,\\n\" +\n                \"\\t\\t\\t\\t\\\"cols\\\":[\\n\" +\n                \"\\t\\t\\t\\t\\t{\\n\" +\n                \"\\t\\t\\t\\t\\t\\t\\\"name\\\":\\\"n_nationkey\\\",\\n\" +\n                \"\\t\\t\\t\\t\\t\\t\\\"type\\\":\\\"int\\\"\\n\" +\n                \"\\t\\t\\t\\t\\t},\\n\" +\n                \"\\t\\t\\t\\t\\t{\\n\" +\n                \"\\t\\t\\t\\t\\t\\t\\\"name\\\":\\\"n_name\\\",\\n\" +\n                \"\\t\\t\\t\\t\\t\\t\\\"type\\\":\\\"string\\\"\\n\" +\n                \"\\t\\t\\t\\t\\t},\\n\" +\n                \"\\t\\t\\t\\t\\t{\\n\" +\n                \"\\t\\t\\t\\t\\t\\t\\\"name\\\":\\\"n_regionkey\\\",\\n\" +\n                \"\\t\\t\\t\\t\\t\\t\\\"type\\\":\\\"int\\\"\\n\" +\n                \"\\t\\t\\t\\t\\t},\\n\" +\n                \"\\t\\t\\t\\t\\t{\\n\" +\n                \"\\t\\t\\t\\t\\t\\t\\\"name\\\":\\\"n_comment\\\",\\n\" +\n                \"\\t\\t\\t\\t\\t\\t\\\"type\\\":\\\"string\\\"\\n\" +\n                \"\\t\\t\\t\\t\\t}\\n\" +\n                \"\\t\\t\\t\\t],\\n\" +\n                \"\\t\\t\\t\\t\\\"compressed\\\":false,\\n\" +\n                \"\\t\\t\\t\\t\\\"inputFormat\\\":\\\"org.apache.hadoop.mapred.TextInputFormat\\\",\\n\" +\n                \"\\t\\t\\t\\t\\\"location\\\":\\\"oss://hello/world/\\\",\\n\" +\n                \"\\t\\t\\t\\t\\\"numBuckets\\\":0,\\n\" +\n                \"\\t\\t\\t\\t\\\"outputFormat\\\":\\\"org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat\\\",\\n\" +\n                \"\\t\\t\\t\\t\\\"parameters\\\":{\\n\" +\n                \"\\t\\t\\t\\t\\t\\\"$ref\\\":\\\"$[0].sd.parameters\\\"\\n\" +\n                \"\\t\\t\\t\\t},\\n\" +\n                \"\\t\\t\\t\\t\\\"sdId\\\":2663,\\n\" +\n                \"\\t\\t\\t\\t\\\"serDeInfo\\\":{\\n\" +\n                \"\\t\\t\\t\\t\\t\\\"name\\\":\\\"nation_part_hidden\\\",\\n\" +\n                \"\\t\\t\\t\\t\\t\\\"parameters\\\":{\\n\" +\n                \"\\t\\t\\t\\t\\t\\t\\\"$ref\\\":\\\"$[0].sd.serDeInfo.parameters\\\"\\n\" +\n                \"\\t\\t\\t\\t\\t},\\n\" +\n                \"\\t\\t\\t\\t\\t\\\"serdeId\\\":2721,\\n\" +\n                \"\\t\\t\\t\\t\\t\\\"serializationLib\\\":\\\"org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe\\\"\\n\" +\n                \"\\t\\t\\t\\t},\\n\" +\n                \"\\t\\t\\t\\t\\\"skewedInfo\\\":{\\n\" +\n                \"\\t\\t\\t\\t\\t\\\"skewedColNames\\\":[],\\n\" +\n                \"\\t\\t\\t\\t\\t\\\"skewedColValueLocationMaps\\\":{},\\n\" +\n                \"\\t\\t\\t\\t\\t\\\"skewedColValues\\\":[]\\n\" +\n                \"\\t\\t\\t\\t},\\n\" +\n                \"\\t\\t\\t\\t\\\"sortCols\\\":[],\\n\" +\n                \"\\t\\t\\t\\t\\\"storedAsSubDirectories\\\":false\\n\" +\n                \"\\t\\t\\t},\\n\" +\n                \"\\t\\t\\t\\\"tableName\\\":\\\"nation_part_hidden\\\",\\n\" +\n                \"\\t\\t\\t\\\"tblId\\\":453,\\n\" +\n                \"\\t\\t\\t\\\"values\\\":[\\n\" +\n                \"\\t\\t\\t\\t\\\"2018\\\",\\n\" +\n                \"\\t\\t\\t\\t\\\"12\\\",\\n\" +\n                \"\\t\\t\\t\\t\\\"20\\\"\\n\" +\n                \"\\t\\t\\t]\\n\" +\n                \"\\t\\t}\\n\" +\n                \"\\t],\\n\" +\n                \"\\t\\\"success\\\":true\\n\" +\n                \"}\";\n        ResultData resultData = JSON.parseObject(data, ResultData.class);\n        System.out.println(resultData);\n    }\n\n    public static class ResultData\n    {\n        private boolean success;\n        private String message;\n        private Object data;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3000/Issue3066.java",
    "content": "package com.alibaba.json.bvt.issue_3000;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\npublic class Issue3066 extends TestCase {\n    public void test_for_jsonpath() throws Exception {\n        String str = \"{ 'id' : 0, 'items' : [ {'name': 'apple', 'price' : 30 }, {'name': 'pear', 'price' : 40 } ] }\";\n        JSONObject root = JSON.parseObject(str);\n        Object max = JSONPath.eval(root, \"$.items[*].price.max()\");\n        assertEquals(40, max);\n\n        Object min = JSONPath.eval(root, \"$.items[*].price.min()\");\n        assertEquals(30, min);\n\n        Object count = JSONPath.eval(root, \"$.items[*].price.size()\");\n        assertEquals(2, count);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3000/Issue3075.java",
    "content": "package com.alibaba.json.bvt.issue_3000;\n\nimport com.alibaba.fastjson.JSON;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\nimport java.util.List;\n\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\npublic class Issue3075 extends TestCase {\n    public void test_for_issue() throws Exception {\n        SerializerFeature[] features = {\n            SerializerFeature.BrowserSecure,\n                    // 消除对同一对象重复引用的优化\n                    SerializerFeature.DisableCircularReferenceDetect,\n                    // 将中文都会序列化为\\Uxxxx 格式\n                    // 超过 −9007199254740992 到 9007199254740992 区间使用字符串，如：\"9007199254740993\"\n                    // FIXME: 序列化的时候会导致空指针。\n                    SerializerFeature.BrowserCompatible,\n                    // 不隐藏为空的字段\n                    SerializerFeature.IgnoreNonFieldGetter,\n                    // map为Null，置为{}\n                    SerializerFeature.WriteMapNullValue,\n                    // Long、Integer、Short等number类型为Null，置为0\n                    SerializerFeature.WriteNullNumberAsZero,\n                    // Boolean为Null，置为false\n                    SerializerFeature.WriteNullBooleanAsFalse,\n                    // List为Null，置为[]\n                    SerializerFeature.WriteNullListAsEmpty,\n                    // String为Null，置为\"\"\n                    SerializerFeature.WriteNullStringAsEmpty\n        };\n\n        JSON.toJSONString(new TestBasicBO(), features);\n        JSON.toJSONString(new TestBO(), features);\n    }\n\n    @NoArgsConstructor\n    @Data\n    public static class TestBasicBO {\n        String udgxhkk;\n        String dvbvgtm;\n        String cegnjlhiz;\n        String tmztsttazf;\n        List<Integer> dszukwrs;\n        String stymi;\n        Float uwobf;\n        Float dcvnlfo;\n        Float bjlrxreby;\n        Float sgljt;\n        Float irqtbtgugfk;\n        Float usnvv;\n        Float gfeqybelageu;\n        Float bccbcqtb;\n        Float znkdwgblhji;\n        Float uktxicvsrxui;\n        Float sujnyvlz;\n        Integer grihhxsxehct;\n        Integer vqyqv;\n        Integer wiipi;\n        Float sxdihakgyuja;\n        Integer xpspehqs;\n        Integer aiysq;\n        Integer zdzbdg;\n        Float pzhjnnvzsujn;\n        Float wdyfoawjsupo;\n        List<Integer> rtfskvdd;\n        String txwrimwo;\n        List<Integer> rlsueycznbec;\n        Integer wiboqxnnyjby;\n        Integer tpjgzadsl;\n        Integer ncwzji;\n        Integer gxslparv;\n        Integer zcioiclpkc;\n        Integer esjloj;\n        Integer jrmzi;\n        Integer coqxh;\n        Integer csdylng;\n        Integer fliuk;\n        List<Integer> rbnbk;\n        String kqclmytapnfm;\n        Integer dqlndt;\n        String ciergywnviyc;\n        Float qffnfbmg;\n        String hzases;\n        Integer yfywdwpckn;\n        String mfhkzjjtac;\n        String egldba;\n        Integer dsnkiipg;\n        String owllvncxwc;\n        String umcnrocpnk;\n        Integer pzjnnkxkpu;\n        String cbepkbipiwy;\n        String sidtoadm;\n        Integer gbebsls;\n        String qdmjhio;\n        String qwhctpjrqzl;\n        Integer asqxntoueop;\n        String diffdush;\n        Integer bkieoangrm;\n        List<Integer> comyayjvkvw;\n        List<Integer> ndvjktzzuzzu;\n        List<Integer> dmncb;\n        List<Integer> aicnh;\n        List<Integer> noznm;\n        List<Integer> mtovpqvrvt;\n        List<Integer> cyoeso;\n        List<Integer> xexcw;\n        List<Integer> nhtdqd;\n        List<Integer> lqrcqrsuobml;\n        List<Integer> pbsdnbzzdw;\n        List<Integer> yxlqyliyqvrg;\n        List<Integer> tmlmaoycqtuw;\n        Integer ldcirqriayn;\n        Float yiqgeq;\n        Float olqnefjnprtz;\n        Float shkfyrpytfa;\n        Float tzcmipuj;\n        Integer fklflsx;\n        Integer walrdei;\n        Integer qwqtkuqmsla;\n        String nzqduoel;\n        Integer otpza;\n        String cctxjwhjmyi;\n        Integer mzsgtnyfk;\n        String ftskxhjtcb;\n        Integer gbrujvscq;\n        String dzxmmw;\n        Integer rhqdugvayl;\n        Integer aookder;\n        String qscvra;\n        Integer upyubsp;\n        String shzagw;\n        Integer tweniwhxvjjn;\n        Integer tzkuser;\n        Integer vkbutizlvwvv;\n        String qzvhgpew;\n        Integer wwrrphmki;\n        String xsvhkcmil;\n        Integer cyseso;\n        String uaqnzjmxru;\n        Integer ydmvnvwidrb;\n        String xppwn;\n        Integer egamsuczb;\n        String sdgcotcjilz;\n        Integer kxjkjlxllhqm;\n        String ycmkvjnwnxw;\n        Integer dnzba;\n        Integer gtxrnyzeeay;\n        Integer snhxyanxkjd;\n        String qcbcy;\n        List<Integer> ahiatnsb;\n        String zuetqpbl;\n        Integer dmalnj;\n        String rhvkww;\n        Integer ccipz;\n        String batjsa;\n        Integer xilrdu;\n        String zcddn;\n        Integer savddhvsw;\n        String wpfkrmo;\n        Integer lxwqeglqg;\n        String pzrsbjwftbn;\n        String bksteu;\n        Float uldnytaqnvj;\n        Float tniiqgfvku;\n        Float pojntm;\n        String tfgkvrve;\n        Float lwtesutqb;\n        Float owqfxakmzooj;\n        Float cmmtltk;\n        Float hekkfyhn;\n        Float liedzk;\n        Float yvmiaa;\n        Float kprftdvaqi;\n        Float lqookvn;\n        Float bxpchxhsweq;\n        Float poqkjonoof;\n        Float qaioeuzuohn;\n        Float pifwzgq;\n        Float cdzuozdqwbgm;\n        Float lbifqqimiv;\n        Float pxsgjlv;\n        Float tttkh;\n        Float mbufzjclnhx;\n        Float scxuelvrmxsn;\n        Float bdptli;\n        Float xczxonza;\n        Float ldwssjxb;\n        Float wiouipwwqjbg;\n        Float vniafvt;\n        Float vssktgubhnx;\n        Float kflyvz;\n        Integer aknemh;\n        Integer nidynr;\n        Integer bpwizpukvh;\n        Integer crskvy;\n        String licwnil;\n        Integer ckanqgwvq;\n        Integer bxztcjyhgpw;\n        Integer nplybxzhxtsw;\n        Integer fqdcmqlq;\n        Integer crikxhlpbw;\n        Float ejegbhvhbqkp;\n        Float rhsvcd;\n        Float mtbpgsnbkfa;\n        Float fghdkkdl;\n        Float lvnmyj;\n        Integer bgsakgxawgjh;\n        String nzvgyrodtsr;\n        String abdrwew;\n        Float amvfspvwb;\n        Integer dqvyvmnmj;\n        Float xowqdimpyxmw;\n        Integer fkrdbixfma;\n        Float hhufuxqln;\n        Float uebyr;\n        Float syavzsxriebg;\n        Float zovgafxv;\n        Float ctdcbxbkwoll;\n        Float rinfpkytok;\n        Float gpulotiilxcr;\n        Float aovpmxvxpfg;\n        Float zigtcxcepxc;\n        Float mmavfb;\n        Float mczfhudqhqa;\n        Float nfqdpdkbxt;\n        Float lcjdxon;\n        Float xcmmtzhwraox;\n        Float bajzw;\n        Float fymfzjnu;\n        Float etkfygf;\n        Float dqlepesaxea;\n        Float lwsuvrnsf;\n        Float vbndsascz;\n        Float aoxujoci;\n        Integer jflepnqlqfrc;\n        String crmxb;\n        String lfxwl;\n        Integer aajylvzrzdhf;\n        String upoymzbopmks;\n        String wohec;\n        String eqaqhqbz;\n        Integer oblaryua;\n        String ibjqnseq;\n        String xhwwq;\n        Integer iyoak;\n        String mimgsfedn;\n        String gvoadzr;\n        List<Integer> zsicdjrekfe;\n        String aghymcgm;\n        List<Integer> szqwrym;\n        String nzwpcvb;\n        List<Integer> yaqvf;\n        String oofni;\n        List<Integer> gywrntf;\n        String vpliqryy;\n        List<Integer> xghtojazsz;\n        String rlpvlptk;\n        Integer egntvt;\n        String awoqmlx;\n        Integer zpppbvgi;\n        String gaioivdrwz;\n        Integer lqmaz;\n        List<String> tdblj;\n        List<Integer> mmtavpe;\n        List<Integer> mzxphtilz;\n        Integer xohrlfdgjq;\n        String surbjsnsnz;\n        String ibcsu;\n        String limfokbgjgr;\n    }\n\n    @NoArgsConstructor\n    @Data\n\n    public static class TestBO extends TestBasicBO{\n\n        public String mlbkyxy;\n        public List<Integer> sqhgpd;\n        public List<Integer> nikawljmoafb;\n        public String rphau;\n        public Integer iwhjp;\n        public String pjevuugkw;\n        public List<Integer> orpkgtuiz;\n        public String jsbxdscp;\n        public String epnrgnejvfm;\n        public Integer poeihbdfwe;\n        public List<Integer> mzzaoocfntzn;\n        public List<Integer> lrvkotdxp;\n        public List<Integer> udkknpqpey;\n        public Float uibav;\n        public Integer owuwykgifldl;\n        public String cjyxckl;\n        public String lkfkoddqme;\n        public Integer dkcggnjzgdzj;\n        public Float gerjcltp;\n        public String gcfaiwj;\n        public Float bmuniiladuu;\n        public List<Integer> fsuahyioln;\n        public Integer knpvvsju;\n        public Integer bimvkoauvkdm;\n        public List<Integer> fnuxllxfcc;\n        public List<Integer> udkpqjtlhxy;\n        public String xtsrpb;\n        public List<Integer> pmxbc;\n        public String rtkvfukhtca;\n        public Integer vnxnxg;\n        public Float gipmqit;\n        public Integer dzufoeglnsl;\n        public List<Integer> wahnlujq;\n        public Float brqaxsksnpqn;\n        public Float mohysv;\n        public String jmodsimfpxp;\n        public Integer ypfimuf;\n        public List<Integer> mfdmuwlxe;\n        public Float zmgqqr;\n        public List<Integer> vuofhyfnh;\n        public Float ybizdwlx;\n        public String tfqvadbpzanx;\n        public Float orxtn;\n        public List<Integer> kifznybnfvo;\n        public String pjsdytj;\n        public Float jobisey;\n        public List<Integer> cnzsytgsrmh;\n        public List<Integer> rqjdxemd;\n        public String bfxxethqvyo;\n        public String wgkkexdy;\n        public Integer giyeovmj;\n        public List<Integer> unhholw;\n        public List<String> anseshsvz;\n        public List<Double> ribmewsfzwcp;\n        public List<Integer> tpwfr;\n        public List<Integer> pxjsnytfth;\n        public List<Integer> txsbr;\n        public Integer nrodwidtchl;\n        public List<Integer> ocugbk;\n        public List<Integer> cirelkacd;\n        public Integer hpqgpicypp;\n        public List<Integer> lftecbun;\n        public Float ygewofr;\n        public String tgjcrxk;\n        public Float csujsjzm;\n        public String vxsusbwz;\n        public String rpnafceep;\n        public List<Integer> ytwxyenb;\n        public String auhvjywewmo;\n        public List<Integer> bbvsrb;\n        public List<Integer> vzuftloqaal;\n        public List<Integer> krjwsd;\n        public String gkihfkuve;\n        public String jikuil;\n        public String rhdmpjyccf;\n        public Integer mhrnx;\n        public String yobhtwzf;\n        public List<Integer> xeyoj;\n        public Float cojoaar;\n        public Float bjfkxougmw;\n        public String geoilga;\n        public List<Integer> xllrjzafquyu;\n        public Float xobveiffhsdo;\n        public List<Integer> dknpewwdh;\n        public String oztdynn;\n        public Integer vgddb;\n        public String apiqmm;\n        public List<Integer> dwjdwz;\n        public String wurbwztjp;\n        public Integer bseiv;\n        public Float zxlysfuokb;\n        public String qyfowxe;\n        public String iipwsfy;\n        public List<Integer> owsejqfkehjn;\n        public List<Integer> ztzcv;\n        public List<Integer> keygodzfjjmr;\n        public List<Integer> bfzfijxvwyb;\n        public List<Integer> idhvg;\n        public Float sgzgfoadud;\n        public String mhzspwrd;\n        public Float yuldcj;\n        public String bjwnfb;\n        public String tlzzjt;\n        public List<Integer> tgmul;\n        public Float pnsryayelzxt;\n        public Float afmdfca;\n        public String vxbalqkel;\n        public String gaqrvygvjili;\n        public Integer qhvoxqalg;\n        public String hegjib;\n        public String hvbxpgeqek;\n        public List<Integer> lpkzkgnya;\n        public List<Integer> tbtickvxvho;\n        public String mvbciywiejs;\n        public String ijcczoqij;\n        public String vddps;\n        public List<Integer> qomzusabz;\n        public Float xqcsrts;\n        public Float zqafkvntsh;\n        public List<Integer> byygmcw;\n        public Integer zwysdiaiev;\n        public Float dstftqztrl;\n        public List<Integer> wvybkavzf;\n        public Integer ujoqlrrgflnf;\n        public List<Integer> sbsmqzxj;\n        public List<Integer> lkasladbez;\n        public String ydmgeywpquba;\n        public String vufcvrt;\n        public Integer jzhbuueld;\n        public List<Integer> nminfrgyts;\n        public Integer rxtpyhghh;\n        public List<Integer> xvncumabdfhq;\n        public Float ftjrvcptykxx;\n        public String torraglirgs;\n        public Integer jomkavscsf;\n        public String duvhc;\n        public String czxnlbt;\n        public List<Integer> qloaj;\n        public String wlircmcfea;\n        public String tpbcqj;\n        public String otrjwwnsssd;\n        public String vkofzdftinz;\n        public Float ftinjqovg;\n        public String innprvmyj;\n        public String ynjqvcudywdy;\n        public Float rpdtnenuwr;\n        public List<Integer> xiywwxjjhlc;\n        public Integer htuwbznbz;\n        public String kzqkncbcdcu;\n        public List<Integer> xzhor;\n        public String sidrpoy;\n        public Float ltpmidzjd;\n        public List<Integer> lwyuyni;\n        public List<Integer> rdsab;\n        public List<Integer> kmmoxpxw;\n        public Float qtcrtcarxhy;\n        public String nvdqgvebdvxw;\n        public List<Integer> brvmir;\n        public List<Integer> lhfsw;\n        public List<Integer> fobff;\n        public Float wontvjkp;\n        public List<Integer> vrsegwx;\n        public List<Integer> mdbyf;\n        public Float anpevc;\n        public String krtrsevahzu;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3000/Issue3082.java",
    "content": "package com.alibaba.json.bvt.issue_3000;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.lang.reflect.Type;\nimport java.util.AbstractMap;\nimport java.util.HashSet;\nimport java.util.Map;\n\npublic class Issue3082 extends TestCase {\n    public void test_for_issue_entry() throws Exception {\n        String str = \"{\\\"k\\\":{\\\"k\\\":\\\"v\\\"}}\";\n        Map.Entry<String, Map.Entry<String, String>> entry = JSON.parseObject(str, new TypeReference<Map.Entry<String, Map.Entry<String, String>>>() {});\n        assertEquals(\"v\", entry.getValue().getValue());\n    }\n\n    public void test_for_issue() throws Exception {\n        HashSet<Map.Entry<String, Map.Entry<String, String>>> nestedSet = new HashSet<Map.Entry<String, Map.Entry<String, String>>>();\n        nestedSet.add(new AbstractMap.SimpleEntry<String, Map.Entry<String, String>>(\"a\", new AbstractMap.SimpleEntry<String, String>(\"b\", \"c\")));\n        nestedSet.add(new AbstractMap.SimpleEntry<String, Map.Entry<String, String>>(\"d\", new AbstractMap.SimpleEntry<String, String>(\"e\", \"f\")));\n\n        String content = JSON.toJSONString(nestedSet);\n\n        HashSet<Map.Entry<String, Map.Entry<String, String>>> deserializedNestedSet;\n        Type type = new TypeReference<HashSet<Map.Entry<String, Map.Entry<String, String>>>>() {}.getType();\n        deserializedNestedSet = JSON.parseObject(content, type);\n        assertEquals(nestedSet, deserializedNestedSet);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3000/Issue3083.kt",
    "content": "package com.alibaba.json.bvt.issue_3000\n\nimport com.alibaba.fastjson.JSON\n\nclass TestBean {\n    var is_subscribe = 0\n    var subscribe = 0\n    var isHave = 0\n    var _have = 0\n    var normal = 0\n    var Abnormal = 0\n}\n\nfun main(args: Array<String>) {\n    val s = \"{'is_subscribe':1,'subscribe':2,'isHave':3, '_have':4, 'normal':5, 'Abnormal':6}\"\n    val b = JSON.parseObject(s, TestBean::class.java)\n    println(\"${b.is_subscribe}--${b.subscribe}--${b.isHave}--${b._have}--${b.normal}--${b.Abnormal}\")\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3000/Issue3093.java",
    "content": "package com.alibaba.json.bvt.issue_3000;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.sql.Timestamp;\nimport java.util.Calendar;\n\npublic class Issue3093 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Timestamp ts = new Timestamp(Calendar.getInstance().getTimeInMillis());\n        System.out.println(ts.toString());\n        String json = JSON.toJSONString(ts, SerializerFeature.UseISO8601DateFormat);\n        System.out.println(json);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3000/Issue3138.java",
    "content": "package com.alibaba.json.bvt.issue_3000;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\nimport java.util.Map;\n\npublic class Issue3138 extends TestCase {\n    public void test_0() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"value\\\":{\\\"@type\\\":\\\"aa\\\"}}\", VO.class);\n    }\n\n    public static class VO {\n        @JSONField(parseFeatures = Feature.DisableSpecialKeyDetect)\n        public Map<String, Object> value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3100/Issue3109.java",
    "content": "package com.alibaba.json.bvt.issue_3100;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport junit.framework.TestCase;\n\npublic class Issue3109 extends TestCase {\n    public void test_for_issue() throws Exception {\n        ParserConfig config = new ParserConfig();\n        config.addAccept(\"test\");\n        JSON.parseObject(\"{\\\"@type\\\":\\\"testxx\\\",\\\"dogName\\\":\\\"dog1001\\\"}\", Dog.class, config);\n    }\n\n    public static class Dog  {\n        public String dogName;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3100/Issue3131.java",
    "content": "package com.alibaba.json.bvt.issue_3100;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.io.Serializable;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class Issue3131 extends TestCase {\n    public void test_for_issue() throws Exception {\n        List orgs = new ArrayList();\n        UserOrg org = new UserOrg(\"111\",\"222\" );\n        orgs.add(org);\n        String s = JSON.toJSONString(new Orgs(\"111\", orgs));\n        System.out.println(s);\n        Orgs userOrgs = JSON.parseObject(s, Orgs.class);\n        System.out.println(JSON.toJSONString(userOrgs));\n    }\n\n    public static class Orgs<T extends Org> implements Serializable\n    {\n        /**\n         */\n        private static final long serialVersionUID = -1L;\n\n        private String name;\n\n        private List<T> orgs;\n\n        public Orgs() {\n\n        }\n\n        public Orgs(String name, List<T> orgs)\n        {\n            this.name = name;\n            this.orgs = orgs;\n        }\n\n        public String getName()\n        {\n            return name;\n        }\n\n        public void setName(String name)\n        {\n            this.name = name;\n        }\n\n        public List<T> getOrgs()\n        {\n            return orgs;\n        }\n\n        public void setOrgs(List<T> orgs)\n        {\n            this.orgs = orgs;\n        }\n\n        public void add(T org) {\n            if (orgs == null) {\n                orgs = new ArrayList<T>();\n            }\n            orgs.add(org);\n        }\n    }\n\n    public static class UserOrg extends Org implements Serializable{\n\n        private String name;\n\n        private String idcard;\n\n        public UserOrg() {\n\n        }\n\n        public UserOrg(String name, String idcard)\n        {\n            super (name);\n            this.name = name;\n            this.idcard = idcard;\n        }\n\n        public String getName()\n        {\n            return name;\n        }\n\n        public void setName(String name)\n        {\n            this.name = name;\n        }\n\n        public String getIdcard()\n        {\n            return idcard;\n        }\n\n        public void setIdcard(String idcard)\n        {\n            this.idcard = idcard;\n        }\n    }\n\n    public static abstract class Org implements Serializable{\n\n        private String name;\n\n        public Org() {\n\n        }\n\n        public Org(String name)\n        {\n            this.name = name;\n        }\n\n        public String getName()\n        {\n            return name;\n        }\n\n        public void setName(String name)\n        {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3100/Issue3132.java",
    "content": "package com.alibaba.json.bvt.issue_3100;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.json.bvtVO.一个中文名字的包.User;\nimport junit.framework.TestCase;\n\npublic class Issue3132 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        User user = new User();\n        user.setId(9);\n        user.setName(\"asdffsf\");\n        System.out.println(JSONObject.toJSONString(user));\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3100/Issue3150.java",
    "content": "package com.alibaba.json.bvt.issue_3100;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.AfterFilter;\nimport junit.framework.TestCase;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class Issue3150 extends TestCase {\n    public void test_for_issue() throws Exception {\n        MyRefAfterFilter refAfterFilterTest = new MyRefAfterFilter();\n\n        List<Item> items = new ArrayList<Item>(2);\n        Category category = new Category(\"category\");\n        items.add(new Item(\"item1\",category));\n        items.add(new Item(\"item2\",category));\n\n//        System.out.println(JSON.toJSONString(items));\n        System.out.println(JSON.toJSONString(items, refAfterFilterTest));\n\n    }\n\n    public static class MyRefAfterFilter extends AfterFilter {\n\n        private Category category = new Category(\"afterFilterCategory\");\n\n        @Override\n        public void writeAfter(Object object) {\n            if(object instanceof  Item){\n                this.writeKeyValue(\"afterFilterCategory\", category);\n            }\n        }\n\n    }\n\n    public static class Item {\n\n        private String name;\n\n        private Category category;\n\n\n        public Item(String name,Category category){\n            this.name = name;\n            this.category = category;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public Category getcategory() {\n            return category;\n        }\n    }\n\n    public static class Category {\n\n        private String name;\n\n        public Category(String name){\n            this.name = name;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3100/Issue3160.java",
    "content": "package com.alibaba.json.bvt.issue_3100;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.util.IOUtils;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.lang.reflect.Field;\n\npublic class Issue3160 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String str = createLargeBasicStr();\n        SerializeWriter writer = new SerializeWriter();\n        //写入大于12K的字符串\n        writer.writeString(str);\n        writer.writeString(str);\n        byte[] bytes = writer.toBytes(\"UTF-8\");\n        writer.close();\n\n        //检查bytesLocal大小，如果缓存成功应该大于等于输出的bytes长度\n        Field bytesBufLocalField = SerializeWriter.class.getDeclaredField(\"bytesBufLocal\");\n        bytesBufLocalField.setAccessible(true);\n        ThreadLocal<byte[]> bytesBufLocal = (ThreadLocal<byte[]>) bytesBufLocalField.get(null);\n        byte[] bytesLocal = bytesBufLocal.get();\n        Assert.assertNotNull(\"bytesLocal is null\", bytesLocal);\n        Assert.assertTrue(\"bytesLocal is smaller than expected\", bytesLocal.length >= bytes.length);\n\n    }\n\n    private String createLargeBasicStr() {\n        String tmp = new String(IOUtils.DIGITS);\n        StringBuilder builder = new StringBuilder();\n        for (int i = 0; i < 400; i++) {\n            builder.append(tmp);\n        }\n        return builder.toString();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3200/Issue3206.java",
    "content": "package com.alibaba.json.bvt.issue_3200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.NameFilter;\nimport junit.framework.TestCase;\n\npublic class Issue3206 extends TestCase {\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        vo.date = new java.util.Date(1590819204293L);\n\n\n        assertEquals(JSON.toJSONString(vo), \"{\\\"date\\\":\\\"2020-05-30\\\"}\");\n\n        String str = JSON.toJSONString(vo, new NameFilter() {\n            public String process(Object object, String name, Object value) {\n                return name;\n            }\n        });\n        assertEquals(str, \"{\\\"date\\\":\\\"2020-05-30\\\"}\");\n    }\n\n    public static class VO {\n        @JSONField(format=\"yyyy-MM-dd\")\n        public java.util.Date date;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3200/Issue3217.java",
    "content": "package com.alibaba.json.bvt.issue_3200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\npublic class Issue3217 extends TestCase {\n    public void testException(){\n        MyException myException = new MyException();\n        myException.enumTest = EnumTest.FIRST;\n        TestClass testClass = new TestClass();\n        testClass.setMyException(myException);\n\n        String jsonString = JSON.toJSONString(testClass, SerializerFeature.NotWriteDefaultValue);\n        System.out.println(jsonString);\n\n        TestClass testClass1 = JSON.parseObject(jsonString, TestClass.class);\n        System.out.println(testClass1);\n    }\n\n    public static enum EnumTest{\n        FIRST(\"111\",\"111\"),\n        SECOND(\"222\",\"222\");\n        private String key;\n        private String value;\n\n        EnumTest(String key, String value) {\n            this.key = key;\n            this.value = value;\n        }\n\n        public String getKey() {\n            return key;\n        }\n\n        public void setKey(String key) {\n            this.key = key;\n        }\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n    }\n\n    public static class MyException extends Exception {\n        private EnumTest enumTest;\n\n        public EnumTest getEnumTest() {\n            return enumTest;\n        }\n\n        public void setEnumTest(EnumTest enumTest) {\n            this.enumTest = enumTest;\n        }\n    }\n\n    public static class TestClass{\n        private MyException myException;\n\n        public MyException getMyException() {\n            return myException;\n        }\n\n        public void setMyException(MyException myException) {\n            this.myException = myException;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3200/Issue3227.java",
    "content": "package com.alibaba.json.bvt.issue_3200;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\n/**\n * @Author ：Nanqi\n * @Date ：Created in 20:38 2020/6/27\n */\npublic class Issue3227 extends TestCase {\n    public void test_for_issue() {\n        String json = \"{\\\"code\\\":\\\"123\\\"}\";\n        if (!Child.class.getMethods()[0].getReturnType().getName().contains(\"Object\")) {\n            System.out.println(Child.class.getMethods()[0].getReturnType().getName());\n        }\n        Child child = JSON.parseObject(json, Child.class);\n        Assert.assertNotNull(child);\n    }\n\n    static class Parent<T> {\n        protected String name;\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        protected T code;\n\n        public T getCode() {\n            return code;\n        }\n\n        public void setCode(T code) {\n            this.code = code;\n        }\n    }\n\n    static class Child extends Parent<Integer>{\n        @Override\n        public Integer getCode() {\n            return code;\n        }\n\n        @Override\n        public void setCode(Integer code) {\n            this.code = code;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3200/Issue3245.java",
    "content": "package com.alibaba.json.bvt.issue_3200;\n\nimport com.alibaba.fastjson.JSONValidator;\nimport junit.framework.TestCase;\n\npublic class Issue3245 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSONValidator v = JSONValidator.from(\"[]\");\n        v.validate();\n        assertEquals(JSONValidator.Type.Array, v.getType());\n    }\n\n    public void test_for_issue_1() throws Exception {\n        assertEquals(JSONValidator.Type.Array, JSONValidator.from(\"[]\").getType());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3200/Issue3246.java",
    "content": "package com.alibaba.json.bvt.issue_3200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport lombok.Data;\n\npublic class Issue3246 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String jsonStr = \"{\\\"d_id\\\":\\\"bphyean01\\\",\\\"isOpenMergeCode\\\":0,\\\"offlineOrder\\\":false,\\\"offlineOrderType\\\":-1,\\\"og\\\":0,\\\"pushIdFromRemote\\\":false,\\\"qrisAmountPrice\\\":22000,\\\"s_req\\\":0,\\\"s_t\\\":1,\\\"skr_id\\\":0,\\\"type\\\":1,\\\"c_id\\\":471,\\\"o_$\\\":5500.0,\\\"am\\\":4,\\\"$_tp\\\":\\\"bp\\\",\\\"o_t\\\":1,\\\"a_m\\\":3}\";\n        Order parseOrder = JSON.parseObject(jsonStr,Order.class);\n        assertEquals(Integer.valueOf(4), parseOrder.getAmount());\n        assertEquals(\"3\", parseOrder.getAddMoney());\n\n    }\n\n    @Data\n    public static class Order {\n        @JSONField(name = \"d_id\", ordinal = 0)\n        private String deviceId;\n        @JSONField(name = \"c_id\", ordinal = 1)\n        private Integer commodityId;\n        @JSONField(name = \"o_$\", ordinal = 2)\n        private Double orderPrice;\n        @JSONField(name = \"am\", ordinal = 3)\n        private Integer amount;\n        @JSONField(name = \"$_tp\", ordinal = 4)\n        private String payType;\n        @JSONField(name = \"wx_p_id\", ordinal = 5)\n        private Long productId;\n        @JSONField(name = \"ext_p_id\", ordinal = 6)\n        private Long extraProductId;\n        @JSONField(name = \"u_id\", ordinal = 7)\n        private String userId;\n        @JSONField(name = \"p_id\", ordinal = 8)\n        private Long parentId;\n        @JSONField(name = \"o_t\", ordinal = 9)\n        private Integer orderType;\n        @JSONField(name = \"ts\", ordinal = 10)\n        private Integer tradeStatus;\n        @JSONField(name = \"pn\", ordinal = 11)\n        private String phoneNum;\n        @JSONField(name = \"conf_id\", ordinal = 12)\n        private Long configId;\n        @JSONField(name = \"sku_id\", ordinal = 13)\n        private Long skuCommodityId;\n        @JSONField(name = \"c_ids\", ordinal = 14)\n        private String commodityIds;\n        @JSONField(name = \"a_m\", ordinal = 15)\n        private String addMoney;\n        @JSONField(name = \"skr_id\", ordinal = 15)\n        private Long secKillRecordId;\n        @JSONField(name = \"c_n\", ordinal = 16)\n        private String clientOrderNum;\n        @JSONField(name = \"s_t\", ordinal = 16)\n        private Integer sceneType;\n        @JSONField(name = \"t_t\", ordinal = 16)\n        private Integer tradingType;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3200/Issue3264.java",
    "content": "package com.alibaba.json.bvt.issue_3200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport lombok.AllArgsConstructor;\nimport lombok.Builder;\nimport lombok.Data;\nimport org.junit.Assert;\n\n/**\n * @Author ：Nanqi\n * @Date ：Created in 21:25 2020/6/22\n */\npublic class Issue3264 extends TestCase {\n    public void test_for_issue() throws Exception {\n        MyData data = MyData.builder().isTest(true).build();\n        String string = JSON.toJSONString(data);\n        Assert.assertTrue(string.contains(\"is_test\"));\n    }\n\n    @Data\n    @Builder\n    @AllArgsConstructor\n    public static class MyData {\n        @JSONField(name = \"is_test\")\n        private Boolean isTest;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3200/Issue3266.java",
    "content": "package com.alibaba.json.bvt.issue_3200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\npublic class Issue3266 extends TestCase {\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        vo.type = Color.Black;\n\n        String str = JSON.toJSONString(vo);\n        assertEquals(\"{\\\"type\\\":1003}\", str);\n\n        VO vo2 = JSON.parseObject(str, VO.class);\n\n    }\n\n    public static class VO {\n        public Color type;\n    }\n\n    public enum Color {\n        Red(1001),\n        White(1002),\n        Black(1003),\n        Blue(1004);\n\n        private final int code;\n\n        private Color(int code) {\n            this.code = code;\n        }\n\n        @JSONField\n        public int getCode() {\n            return code;\n        }\n\n        @JSONCreator\n        public static Color from(int code) {\n            for (Color v : values()) {\n                if (v.code == code) {\n                    return v;\n                }\n            }\n\n            throw new IllegalArgumentException(\"code \" + code);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3200/Issue3266_mixedin.java",
    "content": "package com.alibaba.json.bvt.issue_3200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\npublic class Issue3266_mixedin extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSON.addMixInAnnotations(Color.class, ColorMixedIn.class);\n\n        VO vo = new VO();\n        vo.type = Color.Black;\n\n        String str = JSON.toJSONString(vo);\n        assertEquals(\"{\\\"type\\\":1003}\", str);\n\n        VO vo2 = JSON.parseObject(str, VO.class);\n    }\n\n    public static class VO {\n        public Color type;\n    }\n\n    public enum Color {\n        Red(1001),\n        White(1002),\n        Black(1003),\n        Blue(1004);\n\n        private final int code;\n\n        private Color(int code) {\n            this.code = code;\n        }\n\n        public int getCode() {\n            return code;\n        }\n\n        public static Color from(int code) {\n            for (Color v : values()) {\n                if (v.code == code) {\n                    return v;\n                }\n            }\n\n            throw new IllegalArgumentException(\"code \" + code);\n        }\n    }\n\n    public static class ColorMixedIn {\n        @JSONField\n        public int getCode() {\n            return 0;\n        }\n\n        @JSONCreator\n        public static Color from(int code) {\n            return null;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3200/Issue3267.java",
    "content": "package com.alibaba.json.bvt.issue_3200;\n\nimport com.alibaba.fastjson.JSONValidator;\nimport junit.framework.TestCase;\n\npublic class Issue3267 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSONValidator v = JSONValidator.from(\"113{}[]\");\n        v.setSupportMultiValue(false);\n        assertFalse(\n                v.validate());\n\n        assertEquals(JSONValidator.Type.Value, v.getType());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3200/Issue3274.kt",
    "content": "package com.alibaba.json.bvt.issue_3200\n\nimport com.alibaba.fastjson.JSON\nimport junit.framework.Assert.assertEquals\nimport org.junit.Test\nimport java.util.*\n\nclass TestFJ {\n\n    @Test\n    fun test() {\n        val str = \"\"\"\n            {\"data\": {\"id\": \"1\", \"name\":\"n1\"}}\n        \"\"\".trimIndent()\n\n\n        val d1 = JSON.parseObject(str, Data2::class.java)\n\n        val data = JSON.parseObject(str)\n        val d2 = data.getObject(\"data\", Data::class.java)\n\n        assertEquals(1, d1.data.id)\n        assertEquals(1, d2.id)\n    }\n}\n\ndata class Data(\n        val id: Int = 0,\n        val name: String = \"\",\n        val date: Date? = null\n)\ndata class Data2(\n        val data: Data\n)"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3200/Issue3279.java",
    "content": "package com.alibaba.json.bvt.issue_3200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\npublic class Issue3279 extends TestCase {\n    public void test_for_issue() throws Exception {\n        V0 v = JSON.parseObject(\"{\\\"id\\\":\\\" 1001 \\\"}\", V0.class, Feature.TrimStringFieldValue);\n        assertEquals(\"1001\", v.id);\n\n        v = JSON.parseObject(\"{\\\"id\\\":\\\" 1001 \\\"}\", V0.class);\n        assertEquals(\" 1001 \", v.id);\n    }\n\n    public void test_for_issue_1() throws Exception {\n        V1 v = JSON.parseObject(\"{\\\"id\\\":\\\" 1001 \\\"}\", V1.class);\n        assertEquals(\"1001\", v.id);\n    }\n\n    public void test_for_issue_2() throws Exception {\n        V2 v = JSON.parseObject(\"{\\\"id\\\":\\\" 1001 \\\"}\", V2.class);\n        assertEquals(\"1001\", v.id);\n    }\n\n    public static class V0 {\n        public String id;\n    }\n\n    public static class V1 {\n        @JSONField(parseFeatures = Feature.TrimStringFieldValue)\n        public String id;\n    }\n\n    @JSONType(parseFeatures = Feature.TrimStringFieldValue)\n    public static class V2 {\n        public String id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3200/Issue3281.java",
    "content": "package com.alibaba.json.bvt.issue_3200;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport lombok.AllArgsConstructor;\nimport lombok.Builder;\nimport lombok.Data;\nimport org.junit.Assert;\n\nimport java.util.Date;\nimport java.util.HashMap;\n\n/**\n * @Author ：Nanqi\n * @Date ：Created in 10:47 2020/6/22\n * @Description：补充测试用例\n */\npublic class Issue3281 extends TestCase {\n    public void test_for_issue() {\n        ModelState modelBack = JSON.parseObject(\"{\\\"counterMap\\\":{\\\"0\\\":0,\\\"100\\\":0,\\\"200\\\":0,\\\"300\\\":0,\\\"400\\\":0,\" +\n                \"\\\"500\\\":0,\\\"600\\\":0,\\\"700\\\":0,\\\"800\\\":0,\\\"900\\\":0,\\\"1000\\\":0},\\\"formatDate\\\":null,\" +\n                \"\\\"modelName\\\":\\\"test\\\",\\\"modelScores\\\":{\\\"Test1-1000\\\":{\\\"max\\\":1.0997832999999515,\\\"min\\\":0.0,\" +\n                \"\\\"recording\\\":false}},\\\"modelVersion\\\":\\\"1\\\",\\\"pit\\\":1592470429399,\\\"useCaseName\\\":\\\"test\\\",\" +\n                \"\\\"variableName\\\":\\\"v2\\\"}\", ModelState.class);\n        Assert.assertNotNull(modelBack.getCounterMap());\n        Assert.assertNotNull(modelBack.getModelScores());\n    }\n\n    @Builder\n    @Data\n    @AllArgsConstructor\n    public static class ModelState {\n        private HashMap<String, Long> counterMap;\n\n        private Date formatDate;\n\n        private HashMap<String, TGigest> modelScores;\n\n        private String modelName;\n\n        private Long modelVersion;\n\n        private Long pit;\n\n        private String useCaseName;\n\n        private String variableName;\n    }\n\n    @Builder\n    @Data\n    @AllArgsConstructor\n    public static class TGigest {\n        private Double max;\n\n        private Double min;\n\n        private Boolean recording;\n    }\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3200/Issue3282.java",
    "content": "package com.alibaba.json.bvt.issue_3200;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\npublic class Issue3282 extends TestCase {\n    public void test_for_issue() {\n        Demo demo = JSON.parseObject(\"{'date':'2020-01-01 00:00:00 000'}\", Demo.class);\n        assertNotNull(demo.date);\n    }\n\n    public static class Demo {\n        public java.util.Date date;\n    }\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3200/Issue3283.java",
    "content": "package com.alibaba.json.bvt.issue_3200;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\npublic class Issue3283 extends TestCase {\n    public void test_for_issue() throws Exception {\n        VO v = new VO();\n        v.v0 = 1001L;\n        v.v1 = 101;\n\n        String str = JSON.toJSONString(v, SerializerFeature.WriteNonStringValueAsString);\n\n        JSONObject object = JSON.parseObject(str);\n        assertEquals(\"1001\", object.get(\"v0\"));\n        assertEquals(\"101\", object.get(\"v1\"));\n    }\n\n    public void test_for_issue_1() throws Exception {\n        VO v = new VO();\n        v.v0 = 19007199254740991L;\n\n        String str = JSON.toJSONString(v, SerializerFeature.BrowserCompatible);\n        assertEquals(\"{\\\"v0\\\":\\\"19007199254740991\\\"}\", str);\n    }\n\n    public static class VO {\n        public Long v0;\n        public Integer v1;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3200/Issue3293.java",
    "content": "package com.alibaba.json.bvt.issue_3200;\n\nimport com.alibaba.fastjson.JSONValidator;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\n/**\n * @Author ：Nanqi\n * @Date ：Created in 09:59 2020/6/24\n */\npublic class Issue3293 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSONValidator jv = JSONValidator.from(\"{\\\"a\\\"}\");\n        Assert.assertFalse(jv.validate());\n\n        jv = JSONValidator.from(\"113{}[]\");\n        jv.setSupportMultiValue(false);\n        Assert.assertFalse(jv.validate());\n        Assert.assertEquals(JSONValidator.Type.Value, jv.getType());\n\n        jv = JSONValidator.from(\"{\\\"a\\\":\\\"12333\\\"}\");\n        Assert.assertTrue(jv.validate());\n\n        jv = JSONValidator.from(\"{}\");\n        Assert.assertTrue(jv.validate());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3200/TestIssue3223.kt",
    "content": "package com.alibaba.json.bvt.issue_3200;\n\nimport com.alibaba.fastjson.JSON\nimport com.alibaba.fastjson.JSONObject\nimport com.alibaba.fastjson.parser.ParserConfig\nimport com.alibaba.fastjson.serializer.SerializerFeature\nimport org.junit.Assert\nimport org.junit.Test\nimport java.util.concurrent.atomic.AtomicInteger\nimport kotlin.properties.Delegates\n\n/**\n * kotlin集合测试\n * @author 佐井\n * @since 2020-06-05 20:35\n */\n\n\nclass TestIssue3223 {\n\n    @Test\n    fun test() {\n        val cfg = ParserConfig.getGlobalInstance()\n        cfg.addAccept(\"com.\")\n        cfg.addAccept(\"net.\")\n        cfg.addAccept(\"java.\")\n        cfg.addAccept(\"kotlin.\")\n        cfg.addAccept(\"org.\")\n        val n = NullableKotlin()\n        //nullable\n        n.nullableList = listOf(\"nullableList\")\n        n.nullableMap = mapOf(\"nullableMap\" to \"nullableMap\")\n        n.nullableSet = setOf(\"nullableSet\")\n        //empty\n        n.emptyList = listOf(\"emptyList\")\n        n.emptyMap = mapOf(\"emptyMap\" to \"emptyMap\")\n        n.emptySet = setOf(\"emptySet\")\n        //delegate\n        n.delegateList = listOf(\"delegateList\")\n        n.delegateMap = mapOf(\"delegateMap\" to \"delegateMap\")\n        n.delegateSet = setOf(\"delegateSet\")\n        //basic\n        n.atomicInt = AtomicInteger(10)\n        n.longValue = 1\n        n.json = JSON.parseObject(JSON.toJSONString(mapOf(\"a\" to \"b\")))\n        val raw = JSON.toJSONString(n, SerializerFeature.WriteClassName)\n        val d = JSON.parseObject(raw, NullableKotlin::class.java)\n        Assert.assertTrue(n == d)\n\n    }\n\n}\n\n\nclass NullableKotlin {\n    //map\n    var nullableMap: Map<String, String>? = null\n    var emptyMap: Map<String, String> = emptyMap()\n    var delegateMap by Delegates.notNull<Map<String, String>>()\n\n    //set\n    var nullableSet: Set<String>? = null\n    var emptySet: Set<String> = emptySet()\n    var delegateSet by Delegates.notNull<Set<String>>()\n\n    //list\n    var nullableList: List<String>? = null\n    var emptyList: List<String> = emptyList()\n    var delegateList by Delegates.notNull<List<String>>()\n\n    //basic\n    var atomicInt: AtomicInteger? = null\n    var longValue: Long? = null\n    var json: JSONObject? = null\n    override fun equals(other: Any?): Boolean {\n        if (this === other) return true\n        if (javaClass != other?.javaClass) return false\n\n        other as NullableKotlin\n\n        if (nullableMap != other.nullableMap) return false\n        if (emptyMap != other.emptyMap) return false\n        if (nullableSet != other.nullableSet) return false\n        if (emptySet != other.emptySet) return false\n        if (nullableList != other.nullableList) return false\n        if (emptyList != other.emptyList) return false\n        if (atomicInt?.get() != other.atomicInt?.get()) return false\n        if (longValue != other.longValue) return false\n        if (json != other.json) return false\n\n        return true\n    }\n\n    override fun hashCode(): Int {\n        var result = nullableMap?.hashCode() ?: 0\n        result = 31 * result + emptyMap.hashCode()\n        result = 31 * result + (nullableSet?.hashCode() ?: 0)\n        result = 31 * result + emptySet.hashCode()\n        result = 31 * result + (nullableList?.hashCode() ?: 0)\n        result = 31 * result + emptyList.hashCode()\n        result = 31 * result + (atomicInt?.hashCode() ?: 0)\n        result = 31 * result + (longValue?.hashCode() ?: 0)\n        result = 31 * result + (json?.hashCode() ?: 0)\n        return result\n    }\n\n\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3300/Issue3217.java",
    "content": "package com.alibaba.json.bvt.issue_3300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.AfterFilter;\nimport junit.framework.TestCase;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class Issue3217 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        RefAfterFilterTest refAfterFilterTest = new RefAfterFilterTest();\n\n        List<Item> items = new ArrayList<Item>(2);\n        Category category = new Category(\"category\");\n        items.add(new Item(\"item1\",category));\n        items.add(new Item(\"item2\",category));\n\n        System.out.println(JSON.toJSONString(items,refAfterFilterTest));\n    }\n\n    public static class RefAfterFilterTest extends AfterFilter {\n\n        private Category category = new Category(\"afterFilterCategory\");\n\n        @Override\n        public void writeAfter(Object object) {\n\n            if (object instanceof Item) {\n\n                this.writeKeyValue(\"afterFilterCategory\", category);\n                /*多加一个属性报错,原因是category是object也触发了writeAfter,当前线程变量serializer被设置为null了serializerLocal.set(null);\n                 *这两个write换个顺序就不会报错\n                 */\n                this.writeKeyValue(\"afterFilterTwo\", \"two\");\n\n            }\n        }\n    }\n\n    public static class Category {\n\n        private String name;\n\n        public Category(String name){\n            this.name = name;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n\n    public static class Item {\n\n        private String name;\n\n        private Category category;\n\n        private String barcode;\n\n\n        public Item(String name,Category category){\n            this.name = name;\n            this.category = category;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public Category getCategory() {\n            return category;\n        }\n\n        public void setCategory(Category category) {\n            this.category = category;\n        }\n\n        public String getBarcode() {\n            return barcode;\n        }\n\n        public void setBarcode(String barcode) {\n            this.barcode = barcode;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3300/Issue3309.java",
    "content": "package com.alibaba.json.bvt.issue_3300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport java.util.Date;\n\n/**\n * @Author ：Nanqi\n * @Date ：Created in 16:27 2020/6/29\n */\npublic class Issue3309 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSONObject jsonObj = new JSONObject();\n        jsonObj.put(\"formatDate\",\"20200623 15:20:01\");\n        DateFormatTest dateFormatTest = jsonObj.toJavaObject(DateFormatTest.class);\n        JSON.toJSONString(dateFormatTest);\n    }\n\n    static class DateFormatTest {\n        @JSONField(format = \"yyyyMMdd HH:mm:ss\")\n        private Date formatDate;\n\n        public Date getFormatDate() {\n            return formatDate;\n        }\n\n        public void setFormatDate(Date formatDate) {\n            this.formatDate = formatDate;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3300/Issue3313.java",
    "content": "package com.alibaba.json.bvt.issue_3300;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport lombok.Data;\nimport org.springframework.util.Assert;\n\n/**\n * @Author ：Nanqi\n * @Date ：Created in 21:54 2020/6/30\n */\npublic class Issue3313 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String jsonStr = \"{\\\"NAME\\\":\\\"nanqi\\\",\\\"age\\\":18}\";\n        Model model = JSONObject.parseObject(jsonStr, Model.class);\n        Assert.notNull(model.getAGe());\n        Assert.notNull(model.getName());\n    }\n\n    @Data\n    static class Model {\n        @JSONField(name = \"NaMe\")\n        private String name;\n\n        @JSONField(name = \"age\")\n        private Integer aGe;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3300/Issue3326.java",
    "content": "package com.alibaba.json.bvt.issue_3300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\n\nimport java.util.HashMap;\n\npublic class Issue3326 extends TestCase {\n    public void test_for_issue() throws Exception {\n        HashMap<String, Number> map = JSON.parseObject(\"{\\\"id\\\":10.0}\"\n                , new TypeReference<HashMap<String, Number>>() {\n                    }.getType()\n                , 0);\n        assertEquals(10.0, map.get(\"id\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3300/Issue3329.java",
    "content": "package com.alibaba.json.bvt.issue_3300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\nimport com.alibaba.fastjson.util.IdentityHashMap;\nimport com.alibaba.fastjson.util.ParameterizedTypeImpl;\nimport junit.framework.TestCase;\nimport java.util.List;\n\nimport java.lang.reflect.Type;\n\npublic class Issue3329 extends TestCase {\n    public void test_for_issue() throws Exception {\n        ParserConfig config = new ParserConfig();\n        IdentityHashMap<Type, ObjectDeserializer> deserializers = config.getDeserializers();\n        int initSize = deserializers.size();\n        for (int i = 0; i < 1000 * 10; ++i) {\n            assertEquals(123,\n                ((VO<User>) JSON.parseObject(\"{\\\"value\\\":{\\\"id\\\":123}}\",\n                        new ParameterizedTypeImpl(new Type[] {User.class}, null, VO.class),\n                        config\n                        )).value.id\n            );\n        }\n\n\n        assertEquals(2, deserializers.size() - initSize);\n    }\n\n    public static class VO<T> {\n        public T value;\n    }\n\n    public static class User {\n        public int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3300/Issue3334.java",
    "content": "package com.alibaba.json.bvt.issue_3300;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\npublic class Issue3334 extends TestCase {\n    public void test_for_issue() throws Exception {\n        assertEquals(0,\n                JSON.parseObject(\"{\\\"id\\\":false}\", VO.class).id);\n\n        assertEquals(1,\n                JSON.parseObject(\"{\\\"id\\\":true}\", VO.class).id);\n\n\n        assertEquals(0,\n                JSON.parseObject(\"{\\\"id64\\\":false}\", VO.class).id64);\n\n        assertEquals(1,\n                JSON.parseObject(\"{\\\"id64\\\":true}\", VO.class).id64);\n\n        assertEquals(0,\n                JSON.parseObject(\"{\\\"id16\\\":false}\", VO.class).id16);\n\n        assertEquals(1,\n                JSON.parseObject(\"{\\\"id16\\\":true}\", VO.class).id16);\n\n\n        assertEquals(0,\n                JSON.parseObject(\"{\\\"id8\\\":false}\", VO.class).id8);\n\n        assertEquals(1,\n                JSON.parseObject(\"{\\\"id8\\\":true}\", VO.class).id8);\n\n\n        assertEquals(0F,\n                JSON.parseObject(\"{\\\"floatValue\\\":false}\", VO.class).floatValue);\n\n        assertEquals(1F,\n                JSON.parseObject(\"{\\\"floatValue\\\":true}\", VO.class).floatValue);\n\n        assertEquals(0D,\n                JSON.parseObject(\"{\\\"doubleValue\\\":false}\", VO.class).doubleValue);\n\n        assertEquals(1D,\n                JSON.parseObject(\"{\\\"doubleValue\\\":true}\", VO.class).doubleValue);\n    }\n\n    public static class VO {\n        private byte id8;\n        private short id16;\n        private int id;\n        private long id64;\n        private Float floatValue;\n        private Double doubleValue;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public long getId64() {\n            return id64;\n        }\n\n        public void setId64(long id64) {\n            this.id64 = id64;\n        }\n\n        public short getId16() {\n            return id16;\n        }\n\n        public void setId16(short id16) {\n            this.id16 = id16;\n        }\n\n        public byte getId8() {\n            return id8;\n        }\n\n        public void setId8(byte id8) {\n            this.id8 = id8;\n        }\n\n        public Float getFloatValue() {\n            return floatValue;\n        }\n\n        public void setFloatValue(Float floatValue) {\n            this.floatValue = floatValue;\n        }\n\n        public Double getDoubleValue() {\n            return doubleValue;\n        }\n\n        public void setDoubleValue(Double doubleValue) {\n            this.doubleValue = doubleValue;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3300/Issue3336.java",
    "content": "package com.alibaba.json.bvt.issue_3300;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\npublic class Issue3336 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String s = \"{\\\"schema\\\":{\\\"$ref\\\":\\\"#/definitions/URLJumpConfig\\\"}}\";\n        assertEquals(s, JSON.parseObject(s)\n                .toJSONString());\n\n        String s1 = \"{\\\"schema\\\":{\\\"ref\\\":\\\"#/definitions/URLJumpConfig\\\"}}\";\n        assertEquals(s1, JSON.parseObject(s1)\n                .toJSONString());\n\n        String s2 = \"{\\\"schema\\\":{\\\"$ref\\\":\\\"#/definitions/URLJumpConfig\\\"}}\";\n        assertEquals(s2, JSON.parseObject(s2)\n                .toJSONString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3300/Issue3338.java",
    "content": "package com.alibaba.json.bvt.issue_3300;\n\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * @Author ：Nanqi\n * @Date ：Created in 17:11 2020/7/11\n */\npublic class Issue3338 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = new Model();\n        Map map = new HashMap();\n        map.put(\"nanqi\", \"因为相信，所以看见。\");\n        model.setMap(map);\n\n        String jsonString = JSONObject.toJSONString(model);\n        assertTrue(jsonString.contains(\"因为相信，所以看见。\"));\n\n        Model modelBack = JSONObject.parseObject(jsonString, Model.class);\n        assertEquals(\"因为相信，所以看见。\", modelBack.getMap().get(\"nanqi\"));\n    }\n\n    static class Model {\n        private Map map;\n\n        public Map getMap() {\n            return map;\n        }\n\n        public void setMap(Map map) {\n            this.map = map;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3300/Issue3343.java",
    "content": "package com.alibaba.json.bvt.issue_3300;\n\nimport com.alibaba.fastjson.JSONValidator;\nimport junit.framework.TestCase;\n\npublic class Issue3343 extends TestCase {\n    public void test_for_issue() throws Exception {\n        assertFalse(\n                JSONValidator.from(\"{\\\"name\\\":\\\"999}\")\n                        .validate());\n\n        assertTrue(\n                JSONValidator.from(\"false\")\n                        .validate());\n        assertEquals(JSONValidator.Type.Value,\n                JSONValidator.from(\"false\")\n                        .getType());\n\n        assertTrue(\n                JSONValidator.from(\"999\").validate());\n        assertEquals(JSONValidator.Type.Value,\n                JSONValidator.from(\"999\")\n                        .getType());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3300/Issue3344.java",
    "content": "package com.alibaba.json.bvt.issue_3300;\n\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\nimport java.util.Date;\nimport java.util.TimeZone;\n\n\n/**\n * @Author ：Nanqi\n * @Date ：Created in 18:28 2020/7/19\n */\npublic class Issue3344 extends TestCase {\n    public void test_for_issue_timeZone() throws Exception {\n        TimeZone.setDefault(TimeZone.getTimeZone(\"GMT+1\"));\n        String jsonStr = \"{\\\"date\\\":1595154768}\";\n        Model model = JSONObject.parseObject(jsonStr, Model.class);\n        assertEquals(\"Mon Jan 19 12:05:54 GMT+01:00 1970\", model.getDate().toString());\n    }\n\n    static class Model {\n        private Date date;\n\n        public Date getDate() {\n            return date;\n        }\n\n        public void setDate(Date date) {\n            this.date = date;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3300/Issue3347.java",
    "content": "package com.alibaba.json.bvt.issue_3300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * @Author ：Nanqi\n * @Date ：Created in 22:29 2020/7/15\n */\npublic class Issue3347 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Map<Integer, String> map = new HashMap<Integer, String>();\n        map.put(1, \"hello\");\n        String mapJSONString = JSON.toJSONString(map);\n        Map mapValues = JSONObject.parseObject(mapJSONString, Map.class);\n        Object mapKey = mapValues.keySet().iterator().next();\n        assertTrue(mapKey instanceof Integer);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3300/Issue3351.java",
    "content": "package com.alibaba.json.bvt.issue_3300;\n\nimport com.alibaba.fastjson.JSONValidator;\nimport junit.framework.TestCase;\n\n/**\n * @Author ：Nanqi\n * @Date ：Created in 00:14 2020/7/18\n */\npublic class Issue3351 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String cString = \"c110\";\n        boolean cValid = JSONValidator.from(cString).validate();\n        assertFalse(cValid);\n\n        String jsonString = \"{\\\"forecast\\\":\\\"sss\\\"}\";\n        boolean jsonValid = JSONValidator.from(jsonString).validate();\n        assertTrue(jsonValid);\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3300/Issue3352.java",
    "content": "package com.alibaba.json.bvt.issue_3300;\n\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\nimport java.util.Map;\nimport java.util.UUID;\n\npublic class Issue3352 extends TestCase {\n    public void test_for_issue() throws Exception {\n        UUID uuid = UUID.randomUUID();\n\n        JSONObject object = new JSONObject();\n        Map map = object.getInnerMap();\n        map.put(\"1\", \"1\");\n        map.put(\"A\", \"A\");\n        map.put(\"true\", \"true\");\n        map.put(uuid.toString(), uuid);\n\n        assertTrue(object.containsKey(1));\n        assertTrue(object.containsKey(\"1\"));\n        assertTrue(object.containsKey('A'));\n        assertTrue(object.containsKey(\"A\"));\n        assertTrue(object.containsKey(true));\n        assertTrue(object.containsKey(\"true\"));\n        assertTrue(object.containsKey(uuid));\n        assertTrue(object.containsKey(uuid.toString()));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3300/Issue3356.java",
    "content": "package com.alibaba.json.bvt.issue_3300;\n\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\nimport java.util.UUID;\n\npublic class Issue3356 extends TestCase {\n    public void test_for_issue() throws Exception {\n        UUID uuid = UUID.randomUUID();\n\n        JSONObject object = new JSONObject();\n        object.put(\"1\", \"1\");\n        object.put(uuid.toString(), uuid.toString());\n        object.put(\"A\", \"A\");\n        object.put(\"true\", \"true\");\n        assertEquals(\"1\", object.get(1));\n        assertEquals(\"true\", object.get(true));\n        assertEquals(\"A\", object.get('A'));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3300/Issue3358.java",
    "content": "package com.alibaba.json.bvt.issue_3300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport junit.framework.TestCase;\nimport org.joda.time.LocalDateTime;\n\n/**\n * @Author ：Nanqi\n * @Date ：Created in 19:07 2020/7/21\n */\npublic class Issue3358 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model validateCode = new Model(\"111\", 600);\n        String jsonString = JSON.toJSONString(validateCode);\n        Model backModel = JSON.parseObject(jsonString, Model.class);\n        assertEquals(validateCode.getExpireTime(), backModel.getExpireTime());\n\n        jsonString = \"{\\\"code\\\":\\\"111\\\"}\";\n        backModel = JSON.parseObject(jsonString, Model.class);\n        assertNull(backModel.getExpireTime());\n    }\n\n    public static class Model {\n        private String code;\n\n        private LocalDateTime expireTime;\n\n        public String getCode() {\n            return code;\n        }\n\n        public void setCode(String code) {\n            this.code = code;\n        }\n\n        public LocalDateTime getExpireTime() {\n            return expireTime;\n        }\n\n        public void setExpireTime(LocalDateTime expireTime) {\n            this.expireTime = expireTime;\n        }\n\n        public Model(String code, int expireIn) {\n            this.code = code;\n            this.expireTime = LocalDateTime.now().plusSeconds(expireIn);\n        }\n\n        @JSONCreator\n        public Model(String code, LocalDateTime expireTime) {\n            this.code = code;\n            this.expireTime = expireTime;\n        }\n\n        public boolean isExpried() {\n            return LocalDateTime.now().isAfter(getExpireTime());\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3300/Issue3361.java",
    "content": "package com.alibaba.json.bvt.issue_3300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.fastjson.support.config.FastJsonConfig;\nimport lombok.Getter;\nimport lombok.Setter;\nimport lombok.ToString;\nimport lombok.extern.slf4j.Slf4j;\nimport junit.framework.TestCase;\n\nimport java.util.Date;\n\n@Slf4j\npublic class Issue3361 extends TestCase {\n    private static String ORIGIN_JSON_DEFAULT_DATE_FORMAT;\n\n    @Override\n    public void setUp() throws Exception {\n        ORIGIN_JSON_DEFAULT_DATE_FORMAT = JSON.DEFFAULT_DATE_FORMAT;\n    }\n\n    public void test_for_issue() throws Exception {\n        Model model = new Model();\n        model.setOldDate(new Date());\n        log.info(\"{}\", model);\n\n        FastJsonConfig config = new FastJsonConfig();\n        config.setSerializerFeatures(SerializerFeature.WriteMapNullValue);\n        config.setWriteContentLength(false);\n        JSON.DEFFAULT_DATE_FORMAT = \"yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS\";\n        config.setDateFormat(JSON.DEFFAULT_DATE_FORMAT);\n        String string = JSON.toJSONString(model,\n                config.getSerializeConfig(),\n                config.getSerializeFilters(),\n                config.getDateFormat(),\n                JSON.DEFAULT_GENERATE_FEATURE,\n                config.getSerializerFeatures());\n        log.info(\"{}\", string);\n\n        Model model2 = JSON.parseObject(string, Model.class);\n        log.info(\"{}\", model2);\n\n        Model model3 = JSON.parseObject(string, new TypeReference<Model>() {\n        }.getType());\n        log.info(\"{}\", model3);\n    }\n\n    @Override\n    public void tearDown() throws Exception {\n        JSON.DEFFAULT_DATE_FORMAT = ORIGIN_JSON_DEFAULT_DATE_FORMAT;\n    }\n\n    @Getter\n    @Setter\n    @ToString\n    public static class Model {\n\n        private Date oldDate;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3300/Issue3373.java",
    "content": "package com.alibaba.json.bvt.issue_3300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.BeforeFilter;\nimport junit.framework.TestCase;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class Issue3373 extends TestCase {\n    public void test_for_issue() throws Exception {\n        RefBeforeFilterTest refAfterFilterTest = new RefBeforeFilterTest();\n\n        List<Item> items = new ArrayList<Item>(2);\n        Category category = new Category(\"category\");\n        items.add(new Item(\"item1\",category));\n        items.add(new Item(\"item2\",category));\n\n        System.out.println(JSON.toJSONString(items,refAfterFilterTest));\n    }\n\n    public static class RefBeforeFilterTest extends BeforeFilter {\n\n        private Category category = new Category(\"afterFilterCategory\");\n\n        @Override\n        public void writeBefore(Object object) {\n\n            if (object instanceof Item) {\n\n                this.writeKeyValue(\"afterFilterCategory\", category);\n                /*多加一个属性报错,原因是category是object也触发了writeAfter,当前线程变量serializer被设置为null了serializerLocal.set(null);\n                 *这两个write换个顺序就不会报错\n                 */\n                this.writeKeyValue(\"afterFilterTwo\", \"two\");\n\n            }\n        }\n    }\n\n    public static class Category {\n\n        private String name;\n\n        public Category(String name){\n            this.name = name;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n\n    public static class Item {\n\n        private String name;\n\n        private Category category;\n\n        private String barcode;\n\n\n        public Item(String name, Category category){\n            this.name = name;\n            this.category = category;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public Category getCategory() {\n            return category;\n        }\n\n        public void setCategory(Category category) {\n            this.category = category;\n        }\n\n        public String getBarcode() {\n            return barcode;\n        }\n\n        public void setBarcode(String barcode) {\n            this.barcode = barcode;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3300/Issue3375.java",
    "content": "package com.alibaba.json.bvt.issue_3300;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\n/**\n * @Author ：Nanqi\n * @Date ：Created in 01:09 2020/8/2\n */\npublic class Issue3375 extends TestCase {\n    public void test_for_issue() throws Exception {\n        List<Map<String, String>> models = new ArrayList<Map<String, String>>();\n        Map<String, String> map1 = new HashMap<String, String>();\n        map1.put(\"name\", \"nanqi01\");\n        models.add(map1);\n\n        Map<String, String> map2 = new HashMap<String, String>();\n        map2.put(\"name\", \"nanqi02\");\n        models.add(map2);\n\n        for (Map<String, String> model : models) {\n            String modelStr = JSON.toJSONString(model);\n            Model modelObj = JSON.parseObject(modelStr, Model.class);\n            assertTrue(modelObj.getName().contains(\"nanqi\"));\n        }\n    }\n\n    public static class Model {\n        private String name;\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3300/Issue3376.java",
    "content": "package com.alibaba.json.bvt.issue_3300;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * @Author ：Nanqi\n * @Date ：Created in 01:25 2020/8/2\n */\npublic class Issue3376 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = new Model(1, 1);\n        String modelString = JSON.toJSONString(model);\n        assertEquals(\"{}\", modelString);\n\n        Model2 model2 = new Model2(1, 1);\n        String model2String = JSON.toJSONString(model2);\n        assertEquals(\"{\\\"offset\\\":1,\\\"timestamp\\\":1}\", model2String);\n\n        Model3 model3 = new Model3(1, 1);\n        String model3String = JSON.toJSONString(model3);\n        assertEquals(\"{\\\"off\\\":1,\\\"timeStamp\\\":true,\\\"timestamp\\\":1}\", model3String);\n    }\n\n    public static class Model {\n        private final long offset;\n        private final long timestamp;\n\n        public Model(long offset, long timestamp) {\n            this.offset = offset;\n            this.timestamp = timestamp;\n        }\n\n        /**\n         * 这种 类似的 get 方法不正规，没办法确定那个方法才算是获取参数的接口，可以参考例子 3\n         */\n        public long timestamp() {\n            return timestamp;\n        }\n\n        public long offset() {\n            return this.offset;\n        }\n    }\n\n    public static class Model2 {\n        private final long offset;\n        private final long timestamp;\n\n        public Model2(long offset, long timestamp) {\n            this.offset = offset;\n            this.timestamp = timestamp;\n        }\n\n        public long getOffset() {\n            return offset;\n        }\n\n        public long getTimestamp() {\n            return timestamp;\n        }\n    }\n\n    public static class Model3 {\n        private final long offset;\n        public final long timestamp;\n\n        public Model3(long offset, long timestamp) {\n            this.offset = offset;\n            this.timestamp = timestamp;\n        }\n\n        public long getOff() {\n            return offset;\n        }\n\n        public Boolean isTimeStamp() {\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3300/Issue3397.java",
    "content": "package com.alibaba.json.bvt.issue_3300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport java.time.LocalDateTime;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\n/**\n * @Author ：Nanqi\n * @Date ：Created in 16:32 2020/8/16\n */\npublic class Issue3397 extends TestCase {\n    @Override\n    public void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getDefault();\n        JSON.defaultLocale = Locale.CHINA;\n    }\n\n    public void test_for_issue() throws Exception {\n        String text = \"{\\\"date\\\":\\\"2020-08-16 16:35:18.188\\\"}\";\n        VO vo = JSON.parseObject(text, VO.class);\n\n        JSONObject json = (JSONObject) JSONObject.toJSON(vo);\n\n        Date date = json.getDate(\"date\");\n//        assertEquals(\"Sun Aug 16 16:35:18 CST 2020\", date.toString());\n    }\n\n    public static class VO {\n        @JSONField(format = \"yyyy-MM-dd HH:mm:ss.SSS\")\n        private LocalDateTime date;\n\n        public LocalDateTime getDate() {\n            return date;\n        }\n\n        public void setDate(LocalDateTime date) {\n            this.date = date;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3300/Issue3443.java",
    "content": "package com.alibaba.json.bvt.issue_3300;\n\nimport com.alibaba.fastjson.serializer.*;\nimport junit.framework.TestCase;\n\npublic class Issue3443 extends TestCase {\n    public void testCustomJsonSerializerAndAfterFilter() throws Exception {\n        SerializeWriter serializeWriter = new SerializeWriter();\n        try {\n            JSONSerializer jsonSerializer = new JSONSerializer(serializeWriter, new SerializeConfig());\n\n            Parameter parameter = new Parameter();\n            parameter.setParameterDesc(new ParameterDesc(\"vipExpireDate\", \"VIP expire date.\"));\n\n            jsonSerializer.config(SerializerFeature.DisableCircularReferenceDetect, true);\n            jsonSerializer.getAfterFilters().add(new CustomFilter());\n            jsonSerializer.write(parameter);\n            assertEquals(\"{\\\"parameterDesc\\\":{\\\"ParameterDesc\\\":\\\"VIP expire date.\\\"}}\", serializeWriter.toString());\n        } finally {\n            serializeWriter.close();\n        }\n    }\n\n    static class Parameter {\n        private ParameterDesc parameterDesc;\n\n        public ParameterDesc getParameterDesc() {\n            return parameterDesc;\n        }\n\n        public void setParameterDesc(ParameterDesc parameterType) {\n            this.parameterDesc = parameterType;\n        }\n    }\n\n    static class ParameterDesc {\n        private String parameterName;\n        private String parameterUsage;\n        // do some work...\n\n        public ParameterDesc(String parameterName, String parameterUsage) {\n            this.parameterName = parameterName;\n            this.parameterUsage = parameterUsage;\n        }\n\n\n    }\n\n    static class CustomFilter extends AfterFilter {\n\n        @Override\n        public void writeAfter(Object object) {\n            if (object instanceof ParameterDesc) {\n                writeKeyValue(\"ParameterDesc\", \"VIP expire date.\");\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3300/Issue3448.java",
    "content": "package com.alibaba.json.bvt.issue_3300;\n\nimport java.lang.reflect.ParameterizedType;\nimport java.lang.reflect.Type;\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.List;\nimport java.util.Map;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\nimport junit.framework.TestCase;\nimport org.junit.Test;\n\n/**\n * @author yumin.pym\n */\npublic class Issue3448 extends TestCase {\n    public static class SelfTypeReference<T> {\n\n    }\n\n    @Test\n    public void test() {\n        List<Map<String, List<String>>> list = new ArrayList(4);\n        list.add(Collections.singletonMap(\"key1\", Collections.singletonList(\"item\")));\n        String text = JSON.toJSONString(list);\n        System.out.println(\"text = \" + text);\n\n        List<Map<String, List<String>>> result = parseObject(text,\n            new SelfTypeReference<Map<String, List<String>>>() {});\n        System.out.println(\"result = \" + result);\n        TestCase.assertTrue(result.get(0) instanceof Map);\n        TestCase.assertTrue(result.get(0).get(\"key1\").get(0) instanceof String);\n    }\n\n    public <T> List<T> parseObject(String text, SelfTypeReference<T> selfTypeReference) {\n        Type genericSuperclass = selfTypeReference.getClass().getGenericSuperclass();\n        Type[] actualTypeArguments = ((ParameterizedType)genericSuperclass).getActualTypeArguments();\n        return JSON.parseObject(text, new TypeReference<List<T>>(actualTypeArguments) {});\n    }\n\n    @Test\n    public void test_1() {\n        List<Map<String, List<String>>> list = new ArrayList(4);\n        list.add(Collections.singletonMap(\"key1\", Collections.singletonList(\"item\")));\n        String text = JSON.toJSONString(list);\n        System.out.println(\"text = \" + text);\n\n        List<Map<String, List<String>>> result = parseObject2(text,\n                new SelfTypeReference<Map<String, List<String>>>() {\n                });\n        System.out.println(\"result = \" + result);\n    }\n\n    @Test\n    public void test2() {\n        List<List<String>> list = new ArrayList(4);\n        list.add(Collections.singletonList(\"item\"));\n        String text = JSON.toJSONString(list);\n        System.out.println(\"text = \" + text);\n\n        List<List<String>> result = parseObject2(text,\n                new SelfTypeReference<List<String>>() {\n                });\n        System.out.println(\"result = \" + result);\n    }\n\n    @Test\n    public void test3() {\n        List<String> list = new ArrayList(4);\n        list.add(\"item\");\n        String text = JSON.toJSONString(list);\n        System.out.println(\"text = \" + text);\n\n        List<String> result = parseObject2(text,\n                new SelfTypeReference<String>() {\n                });\n        System.out.println(\"result = \" + result);\n    }\n\n    public <T> List<T> parseObject2(String text, SelfTypeReference<T> selfTypeReference) {\n        Type genericSuperclass = selfTypeReference.getClass().getGenericSuperclass();\n        Type[] actualTypeArguments = ((ParameterizedType) genericSuperclass).getActualTypeArguments();\n        return JSON.parseObject(text, new TypeReference<List<T>>(actualTypeArguments) {\n        });\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3300/IssueForJSONFieldMatch.java",
    "content": "package com.alibaba.json.bvt.issue_3300;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\npublic class IssueForJSONFieldMatch extends TestCase {\n    public void test_for_issue() throws Exception {\n        assertEquals(123\n                , JSON.parseObject(\"{\\\"user_Id\\\":123}\", VO.class)\n                        .userId);\n        assertEquals(123\n                , JSON.parseObject(\"{\\\"userId\\\":123}\", VO.class)\n                        .userId);\n        assertEquals(123\n                , JSON.parseObject(\"{\\\"user-id\\\":123}\", VO.class)\n                        .userId);\n    }\n\n    public static class VO {\n        @JSONField(name = \"user_id\", alternateNames = {\"userId\", \"user-id\"})\n        public int userId;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3400/Issue3436.java",
    "content": "package com.alibaba.json.bvt.issue_3400;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport junit.framework.TestCase;\nimport org.springframework.core.io.FileSystemResource;\n\npublic class Issue3436 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSON.addMixInAnnotations(FileSystemResource.class, FileSystemResourceMixedIn.class);\n\n        FileSystemResource fileSystemResource = new FileSystemResource(\"E:\\\\my-code\\\\test\\\\test-fastjson.txt\");\n\n        String json = JSON.toJSONString(fileSystemResource);\n        assertEquals(\"{\\\"path\\\":\\\"E:/my-code/test/test-fastjson.txt\\\"}\", json);\n\n        FileSystemResource fsr1 = JSON.parseObject(json, FileSystemResource.class);\n        assertEquals(fileSystemResource.getPath(), fsr1.getPath());\n        System.out.println(\"file size after Serialize：\" + fileSystemResource.getFile().length());\n    }\n\n    @JSONType(asm = false, includes = \"path\")\n    public static class FileSystemResourceMixedIn {\n        @JSONCreator\n        public FileSystemResourceMixedIn(String path) {\n\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3400/Issue3452.java",
    "content": "package com.alibaba.json.bvt.issue_3400;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\npublic class Issue3452 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String s = \"{ \\\"componentKey\\\" : \\\"CMDB_UPDATE_SERVER\\\"}\";\n        Step step = JSON.parseObject(s, Step.class);\n        assertEquals(\"CMDB_UPDATE_SERVER\",step.getComponentKey());\n        System.out.println(step.getComponentKey());\n    }\n\n    private static class Step {\n        @JSONField(name = \"component_key\", alternateNames = {\"componentKey\"})\n        private String componentKey;\n\n        public String getComponentKey() {\n            return componentKey;\n        }\n\n        public void setComponentKey(String componentKey) {\n            this.componentKey = componentKey;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3400/Issue3453.java",
    "content": "package com.alibaba.json.bvt.issue_3400;\n\nimport com.alibaba.fastjson.JSONValidator;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\n/**\n * Description:  <br>\n *\n * @author byw\n * @create 2020/9/20\n */\npublic class Issue3453 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String str = \"[\\n\" +\n                \" {\\n\" +\n                \" \\\"altitude\\\": 109.0,\\n\" +\n                \" \\\"angle\\\": 5.0,\\n\" +\n                \" \\\"index\\\": 1,\\n\" +\n                \" \\\"type\\\": 1\\n\" +\n                \" },\\n\" +\n                \" {\\n\" +\n                \" \\\"altitude\\\": 1307.0,\\n\" +\n                \" \\\"angle\\\": 5.0,\\n\" +\n                \" \\\"index\\\": 2,\\n\" +\n                \" \\\"type\\\": 1\\n\" +\n                \" },\\n\" +\n                \" {\\n\" +\n                \" \\\"altitude\\\": 22.0,\\n\" +\n                \" \\\"angle\\\": 7.0,\\n\" +\n                \" \\\"index\\\": 3,\\n\" +\n                \" \\\"type\\\": 1\\n\" +\n                \" },\\n\" +\n                \" {\\n\" +\n                \" \\\"altitude\\\": 22.0,\\n\" +\n                \" \\\"angle\\\": 7.0,\\n\" +\n                \" \\\"index\\\": 4,\\n\" +\n                \" \\\"type\\\": 2\\n\" +\n                \" },\\n\" +\n                \" {\\n\" +\n                \" \\\"altitude\\\": 22.0,\\n\" +\n                \" \\\"angle\\\": 7.0,\\n\" +\n                \" \\\"index\\\": 5,\\n\" +\n                \" \\\"type\\\": 2\\n\" +\n                \" },\\n\" +\n                \" {\\n\" +\n                \" \\\"altitude\\\": 22.0,\\n\" +\n                \" \\\"angle\\\": 7.0,\\n\" +\n                \" \\\"index\\\": 6,\\n\" +\n                \" \\\"type\\\": 2\\n\" +\n                \" },\\n\" +\n                \" {\\n\" +\n                \" \\\"altitude\\\": 22.0,\\n\" +\n                \" \\\"angle\\\": 7.0,\\n\" +\n                \" \\\"index\\\": 7,\\n\" +\n                \" \\\"type\\\": 2\\n\" +\n                \" }\\n\" +\n                \"]\";\n        JSONValidator validator = JSONValidator.from(str);\n        Assert.assertTrue(validator.validate());\n        JSONValidator.Type type = validator.getType();\n        Assert.assertEquals(\"Array\",type.name());\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3400/Issue3460.java",
    "content": "package com.alibaba.json.bvt.issue_3400;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONValidator;\nimport com.alibaba.json.bvt.issue_3200.Issue3293;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\n/**\n * Description:  <br>\n *\n * @author byw\n * @create 2020/9/20\n */\npublic class Issue3460 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String body = \"11{\\\"time\\\":\" + System.currentTimeMillis() + \"}\";\n\n        assertFalse(\n                JSONValidator.from(body)\n                        .validate());\n\n        assertTrue(\n                JSONValidator.from(body)\n                        .setSupportMultiValue(true)\n                        .validate());\n    }\n\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3400/Issue3465.java",
    "content": "package com.alibaba.json.bvt.issue_3400;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\npublic class Issue3465 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSONObject jsonObj1 = new JSONObject();\n        JSONObject sonJsonObj1 = new JSONObject();\n        sonJsonObj1.put(\"dca0898f74b4cc6d0174b4cc77fd0005\", \"2ca0898f74b4cc6d0174b4cc77fd0005\");\n        jsonObj1.put(\"issue\", sonJsonObj1);\n        String rst1 = JSON.toJSONString(jsonObj1, JSON.DEFAULT_GENERATE_FEATURE | SerializerFeature.WRITE_MAP_NULL_FEATURES);\n        System.out.println(rst1);\n        JSONObject parse1 = JSON.parseObject(rst1);\n        System.out.println(parse1.toJSONString());\n\n\n        JSONObject jsonObj = new JSONObject();\n        JSONObject sonJsonObj = new JSONObject();\n        sonJsonObj.put(\"2ca0898f74b4cc6d0174b4cc77fd0005\", \"2ca0898f74b4cc6d0174b4cc77fd0005\");\n        jsonObj.put(\"issue\", sonJsonObj);\n        String rst = JSON.toJSONString(jsonObj, JSON.DEFAULT_GENERATE_FEATURE | SerializerFeature.WRITE_MAP_NULL_FEATURES);\n        System.out.println(rst);\n        JSONObject parse = JSON.parseObject(rst);\n        System.out.println(parse.toJSONString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3400/Issue3470.java",
    "content": "package com.alibaba.json.bvt.issue_3400;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\npublic class Issue3470 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String str = JSON.toJSONString(new Privacy().setPassword(\"test\"));\n        assertEquals(\"{\\\"__password\\\":\\\"test\\\"}\", str);\n    }\n\n    public static class Privacy {\n        private String phone; //手机\n        private String password; //登录密码，隐藏字段\n\n        public Privacy() {\n            super();\n        }\n\n        public String getPhone() {\n            return phone;\n        }\n        public Privacy setPhone(String phone) {\n            this.phone = phone;\n            return this;\n        }\n\n        public String get__password() {\n            return password;\n        }\n        public Privacy setPassword(String password) {\n            this.password = password;\n            return this;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3400/Issue_20201016_01.java",
    "content": "package com.alibaba.json.bvt.issue_3400;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\npublic class Issue_20201016_01 extends TestCase {\n    public void testToString() {\n        UserConfig user = new UserConfig();\n        user.setAccount(\"account\");\n        user.setName(\"name\");\n\n        Config config = new Config();\n        config.setCreator(user);\n        config.setOwner(user);\n\n        String s = JSON.toJSONString(config, SerializerFeature.WriteMapNullValue,\n                SerializerFeature.QuoteFieldNames, SerializerFeature.WriteNullListAsEmpty);\n\n        System.out.println(s);\n    }\n\n\n    public void testFastJson() {\n        String s = \"{\\\"agent\\\":null,\\\"creator\\\":{\\\"account\\\":\\\"account\\\",\\\"name\\\":\\\"name\\\",\\\"workid\\\":null},\\\"owner\\\":{\\\"$ref\\\":\\\"$.creator\\\"}}\";\n\n        System.out.println( JSON.parseObject(s, Config.class));\n    }\n\n    public static class Config {\n        private UserConfig creator;\n        private UserConfig owner;\n        private UserConfig agent;\n\n        public UserConfig getCreator() {\n            return creator;\n        }\n        public void setCreator(UserConfig creator) {\n            this.creator = creator;\n        }\n        public UserConfig getOwner() {\n            return owner;\n        }\n        public void setOwner(UserConfig owner) {\n            this.owner = owner;\n        }\n        public UserConfig getAgent() {\n            return agent;\n        }\n        public void setAgent(UserConfig agent) {\n            this.agent = agent;\n        }\n    }\n\n    public static class UserConfig {\n        private String workid;\n        private String name;\n        private String account;\n\n        public String getWorkid() {\n            return workid;\n        }\n        public void setWorkid(String workid) {\n            this.workid = workid;\n        }\n        public String getName() {\n            return name;\n        }\n        public void setName(String name) {\n            this.name = name;\n        }\n        public String getAccount() {\n            return account;\n        }\n        public void setAccount(String account) {\n            this.account = account;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3500/Issue3516.java",
    "content": "package com.alibaba.json.bvt.issue_3500;\n\nimport com.alibaba.fastjson.JSONValidator;\nimport junit.framework.TestCase;\n\npublic class Issue3516 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JSONValidator validator = JSONValidator.from(\"{}\");\n        assertEquals(JSONValidator.Type.Object, validator.getType());\n        assertTrue(validator.validate());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3500/Issue3539.java",
    "content": "package com.alibaba.json.bvt.issue_3500;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.time.Instant;\n\npublic class Issue3539 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String str = \"{\\\"date\\\":{\\\"nano\\\":140000000,\\\"epochSecond\\\":1605106869}}\";\n        Bean bean = JSON.parseObject(str, Bean.class);\n        assertNotNull(bean.date);\n        JSON.toJSONString(bean);\n\n        JSON.parseObject(str)\n                .toJavaObject(Bean.class);\n    }\n\n    public void test_for_issue_joda() throws Exception {\n        String str = \"{\\\"date\\\":{\\\"epochSecond\\\":1605106869}}\";\n        JodaBean bean = JSON.parseObject(str, JodaBean.class);\n        assertNotNull(bean.date);\n        JSON.toJSONString(bean);\n\n        JSON.parseObject(str)\n                .toJavaObject(JodaBean.class);\n    }\n\n    public void test_for_issue_joda2() throws Exception {\n        String str = \"{\\\"date\\\":{\\\"millis\\\":1605364826724}}\";\n        JodaBean bean = JSON.parseObject(str, JodaBean.class);\n        assertNotNull(bean.date);\n        JSON.toJSONString(bean);\n\n        JSON.parseObject(str)\n                .toJavaObject(JodaBean.class);\n    }\n\n    public static class Bean {\n        public Instant date;\n    }\n\n    public static class JodaBean {\n        public org.joda.time.Instant date;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3500/Issue3544.java",
    "content": "package com.alibaba.json.bvt.issue_3500;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport lombok.Getter;\nimport lombok.Setter;\n\nimport java.util.Map;\n\npublic class Issue3544 extends TestCase {\n\n    public void test_errorType() {\n        assertNull(\"\", JSON.toJavaObject(\n                JSON.parseObject(\"{\\\"result\\\":\\\"\\\"}\"), TestVO.class).result);\n\n        assertNull(\"\", JSON.toJavaObject(\n                JSON.parseObject(\"{\\\"result\\\":\\\"null\\\"}\"), TestVO.class).result);\n    }\n\n    @Getter\n    @Setter\n    static class TestVO {\n\n        Map<String, String> result;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3500/Issue3571.java",
    "content": "package com.alibaba.json.bvt.issue_3500;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\npublic class Issue3571 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Bean1 bean = new Bean1();\n        bean.id1 = 101;\n        bean.id2 = 102;\n        bean.id3 = 103;\n\n        assertEquals(\"{\\\"id1\\\":101,\\\"id2\\\":102,\\\"id3\\\":103}\", JSON.toJSON(bean).toString());\n    }\n\n    public void test_for_issue_2() throws Exception {\n        Bean2 bean = new Bean2();\n        bean.id1 = 101;\n        bean.id2 = 102;\n        bean.id3 = 103;\n\n        assertEquals(\"{\\\"id1\\\":101,\\\"id2\\\":102,\\\"id3\\\":103}\", JSON.toJSON(bean).toString());\n    }\n\n    @JSONType(serialzeFeatures = SerializerFeature.SortField)\n    public static class Bean1 {\n        public int id2;\n        public int id1;\n        public int id3;\n    }\n\n    @JSONType(serialzeFeatures = SerializerFeature.MapSortField)\n    public static class Bean2 {\n        public int id2;\n        public int id1;\n        public int id3;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3500/Issue3579.java",
    "content": "package com.alibaba.json.bvt.issue_3500;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.math.BigDecimal;\n\npublic class Issue3579 extends TestCase {\n    public void test_for_issue() throws Exception {\n        assertEquals(\"1\",\n                JSON.toJSONString(new BigDecimal(\"1\"))\n        );\n\n        assertEquals(\"1.\",\n                JSON.toJSONString(new BigDecimal(\"1\"), SerializerFeature.WriteClassName)\n        );\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3600/Issue3614.java",
    "content": "package com.alibaba.json.bvt.issue_3600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\nimport java.io.ByteArrayOutputStream;\nimport java.io.*;\nimport java.util.Collections;\nimport java.util.zip.GZIPOutputStream;\n\npublic class Issue3614 extends TestCase {\n    public void test_for_issue() throws Exception {\n        byte[] gzipBytes = gzip(JSON.toJSONString(Collections.singletonMap(\"key\", \"value\")).getBytes());\n\n        Object o = JSON.parseObject(gzipBytes, JSONObject.class);\n        assertEquals(\"{\\\"key\\\":\\\"value\\\"}\", JSON.toJSONString(o));\n    }\n\n    private static byte[] gzip(byte[] source) throws IOException {\n        if (source == null) return null;\n\n        ByteArrayOutputStream bos = new ByteArrayOutputStream();\n        GZIPOutputStream gzip = new GZIPOutputStream(bos);\n        gzip.write(source);\n        gzip.finish();\n        byte[] bytes = bos.toByteArray();\n        gzip.close();\n        return bytes;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3600/Issue3628.java",
    "content": "package com.alibaba.json.bvt.issue_3600;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\npublic class Issue3628 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"{\\\"admin\\\":3483706632,\\\"admins\\\":[],\\\"black\\\":{\\\"blackList\\\":[]},\\\"enable\\\":true,\\\"messages\\\":{\\\"adminChangeDown\\\":\\\"[mirai:at:%target%] 被撤销了管理~\\\",\\\"adminChangeUp\\\":\\\"恭喜 [mirai:at:%target%] 被升为管理员~\\\",\\\"blacelist\\\":\\\"[mirai:at:%target%]你被加入此群黑名单,不允许你进入本群\\\",\\\"clearnScreen\\\":\\\"清屏ing~~~\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n清屏完毕~~~\\\",\\\"join\\\":\\\"欢迎 [mirai:at:%target%] 进入本群~\\\",\\\"kick\\\":\\\"[mirai:at:%target%] 被 [mirai:at:%operator%] 踢出本群\\\",\\\"leave\\\":\\\"很遗憾, [mirai:at:%target%] 离开了本群\\\",\\\"mute\\\":\\\"[mirai:at:%target%] 被 [mirai:at:%operator%] 禁言 %time%\\\",\\\"talkative\\\":\\\"恭喜 [mirai:at:%target%] 成为本群龙王!\\\",\\\"title\\\":\\\"恭喜 [mirai:at:%target%] 获得群主授予的 %title% 头衔!\\\",\\\"unmute\\\":\\\"[mirai:at:%target%] 被 [mirai:at:%operator%] 解除禁言\\\",\\\"warn\\\":\\\"\\\"},\\\"requestConfig\\\":{\\\"keyWordRegex\\\":\\\"SINGLE\\\",\\\"keyWords\\\":[\\\"栗子\\\"],\\\"type\\\":\\\"PASS\\\"},\\\"select\\\":{\\\"adminChange\\\":true,\\\"autoParseRequest\\\":true,\\\"join\\\":true,\\\"kick\\\":true,\\\"leave\\\":true,\\\"mute\\\":true,\\\"talkative\\\":true,\\\"title\\\":true,\\\"unmute\\\":true},\\\"warn\\\":{\\\"count\\\":10,\\\"countBlack\\\":30,\\\"warnList\\\":[{\\\"count\\\":-9999,\\\"id\\\":123456}]}}\";\n        JSON.parse(json);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3600/Issue3629.java",
    "content": "package com.alibaba.json.bvt.issue_3600;\n\nimport com.alibaba.fastjson.JSONPath;\nimport java.util.List;\nimport junit.framework.TestCase;\n\npublic class Issue3629 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String text1 = \"[\\n\" +\n                \"    {\\n\" +\n                \"        \\\"author\\\": \\\"Nigel Rees\\\",\\n\" +\n                \"        \\\"category\\\": \\\"reference\\\",\\n\" +\n                \"        \\\"price\\\": 8.95,\\n\" +\n                \"        \\\"title\\\": \\\"Sayings of the Century\\\"\\n\" +\n                \"    },\\n\" +\n                \"    {\\n\" +\n                \"        \\\"author\\\": \\\"Evelyn Waugh\\\",\\n\" +\n                \"        \\\"category\\\": \\\"fiction\\\",\\n\" +\n                \"        \\\"price\\\": 12.99,\\n\" +\n                \"        \\\"title\\\": \\\"Sword of Honour\\\"\\n\" +\n                \"    },\\n\" +\n                \"    {\\n\" +\n                \"        \\\"author\\\": \\\"Herman Melville\\\",\\n\" +\n                \"        \\\"category\\\": \\\"fiction\\\",\\n\" +\n                \"        \\\"isbn\\\": \\\"0-553-21311-3\\\",\\n\" +\n                \"        \\\"price\\\": 8.99,\\n\" +\n                \"        \\\"title\\\": \\\"Moby Dick\\\"\\n\" +\n                \"    },\\n\" +\n                \"    {\\n\" +\n                \"        \\\"author\\\": \\\"J. R. R. Tolkien\\\",\\n\" +\n                \"        \\\"category\\\": \\\"fiction\\\",\\n\" +\n                \"        \\\"isbn\\\": \\\"0-395-19395-8\\\",\\n\" +\n                \"        \\\"price\\\": 22.99,\\n\" +\n                \"        \\\"title\\\": \\\"The Lord of the Rings\\\"\\n\" +\n                \"    }\\n\" +\n                \"]\";\n\n\n        List<Object> extract = (List) JSONPath.extract(text1, \"$..[?(@.price < 10)]\");\n        assertEquals(2, extract.size());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3600/Issue3631.java",
    "content": "package com.alibaba.json.bvt.issue_3600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport junit.framework.TestCase;\n\nimport java.util.Base64;\n\npublic class Issue3631 extends TestCase {\n    public void test_issue_1() throws Exception {\n        try {\n            JSON.parse(\"{[-\");\n        } catch (JSONException unused) {\n            // skip\n        }\n    }\n\n    public void test_issue_2() throws Exception {\n        try {\n            JSON.parse(\"TreeSet[[]\");\n        } catch (JSONException unused) {\n            // skip\n        }\n    }\n\n    public void test_issue_3() throws Exception {\n        try {\n            JSON.parse(btoa(\"WywsIiIMLCIAAAAMAAAgAAAAdWUgdAAAAA1ubHUlbDMyMjIABAAAADIyMjISMjNbW1ukHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHiBUZA17W3tbCTg0DQooIHRleHQuIEFuZCAgNDRUBDQ0LCwoLCwsLCwsKSwsLCwsLCwsLCwsLCwsnf8sLCwsLCwsMiwsLG51bA9sLCwqLCwsLCwsLCwsLCwsLCwsLCwoLCwsLCwsKSx077+9LCwsLBAsLCwsLCwoLCwsLCwsKSx077+9LCwsLCwyLCwsLCwsLCwsLFtbW1uhpJ3/GiwsLCwsLDIsLCwsLCwsQSw8LCwsLHtbW1sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHtbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsnw4QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWw1dLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW10AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW6Gknf8sLCwsLCwsLCwsLCwsWywsLCwsLCwsLCwsLCwsLCwsKCwsLCwsLCksLCwsLCwsLCwsLCwsLJ3/LCwsLCwsLDIsLCxudWxsLCwqLCwsLCwsLCwsLCwsLCwsLCwoLCwsLCwsKSx077+9LCwsLCwsLCwsLCwoLCwsLCwsKSx07zV1bmRlZmluZW5kACwsLCwsLFtbW1uhpJ3/GiwsLCwsLDIsLCwsLCwsQSw8LCwsLHtbW1tboaSd/ywsLCwsLCwsLCwsLCxbLCwsLCwsLCwsLCwsLCwsLCwsLEEsPCwsLCx7W1tbW6Gknf8sLCwsLCwsLCwsLCwsLCwsLCgsLCwsLCwpLCwsLCwsLCwsLCwsLCyd/ywsLCwsLCwyLCwsbnVsbCwsKiwsLCwsLCwsLCwsLCwsLCwsKCwsLCwsLCksdO+/vSwsLCwsMSwsLCwsLCwsLCxbW1tboaSd/xosLCwsLCwyLCwsLCwsLCwsLCws\"));\n        } catch (JSONException unused) {\n            // skip\n        }\n    }\n\n    public static String btoa(String base64) {\n        return new String(Base64.getDecoder().decode(base64));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3600/Issue3637.java",
    "content": "package com.alibaba.json.bvt.issue_3600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.util.TypeUtils;\nimport junit.framework.TestCase;\n\nimport java.sql.Timestamp;\n\npublic class Issue3637 extends TestCase {\n    public void test_for_issue() throws Exception {\n//        java.sql.Time.valueOf(\"01:00:00\");\n        JSON.parseObject(\"\\\"01:00:00\\\"\", java.sql.Time.class);\n        TypeUtils.castToJavaBean(\"01:00:00\", java.sql.Time.class);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3600/Issue3652.java",
    "content": "package com.alibaba.json.bvt.issue_3600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.PropertyNamingStrategy;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport org.junit.Assert;\nimport org.junit.Test;\n\npublic class Issue3652 {\n\n    @Test\n    public void test_SerializeConfig_different_Class_Annotation() {\n        Object[] models = new Object[]{\n                new Model1(\"hello,world\"),\n                new Model2(\"hello,world\"),\n                new Model3(\"hello,world\"),\n                new Model4(\"hello,world\"),\n        };\n        for (int i = 0; i < 4; i++) {\n            String[] toStrings = new String[PropertyNamingStrategy.values().length];\n            for (int j = 0; j < toStrings.length; j++) {\n                SerializeConfig config = new SerializeConfig();\n                config.propertyNamingStrategy = PropertyNamingStrategy.values()[j];\n                toStrings[j] = JSON.toJSONString(models[i], config);\n            }\n            for (int j = 1; j < toStrings.length; j++) {\n                Assert.assertEquals(toStrings[j], toStrings[j - 1]);\n                System.out.println(toStrings[j - 1]);\n            }\n        }\n    }\n\n    @Test\n    public void test_different_Class_Annotation() {\n        Object[] models = new Object[]{\n                new Model1(\"hello,world\"),\n                new Model2(\"hello,world\"),\n                new Model3(\"hello,world\"),\n                new Model4(\"hello,world\"),\n        };\n        String[] JsonStrings = new String[]{\n                \"{\\\"goodBoy\\\":\\\"hello,world\\\"}\",\n                \"{\\\"GoodBoy\\\":\\\"hello,world\\\"}\",\n                \"{\\\"good_boy\\\":\\\"hello,world\\\"}\",\n                \"{\\\"good-boy\\\":\\\"hello,world\\\"}\"};\n        /* PS: Order is\n         CamelCase,\n         PascalCase,\n         SnakeCase,\n         KebabCase,*/\n        for (int i = 0; i < models.length; i++) {\n            String[] toStrings = new String[PropertyNamingStrategy.values().length];\n            toStrings[i] = JSON.toJSONString(models[i]);\n            Assert.assertEquals(JsonStrings[i], toStrings[i]);\n        }\n    }\n\n    @JSONType(naming = PropertyNamingStrategy.CamelCase)\n    @Data\n    @AllArgsConstructor\n    public class Model1 {\n        private String goodBoy;\n    }\n\n    @JSONType(naming = PropertyNamingStrategy.PascalCase)\n    @Data\n    @AllArgsConstructor\n    public class Model2 {\n        private String goodBoy;\n    }\n\n    @JSONType(naming = PropertyNamingStrategy.SnakeCase)\n    @Data\n    @AllArgsConstructor\n    public class Model3 {\n        private String goodBoy;\n    }\n\n    @JSONType(naming = PropertyNamingStrategy.KebabCase)\n    @Data\n    @AllArgsConstructor\n    public class Model4 {\n        private String goodBoy;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3600/Issue3655.java",
    "content": "package com.alibaba.json.bvt.issue_3600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport lombok.AllArgsConstructor;\nimport lombok.Getter;\nimport lombok.Setter;\nimport org.junit.Assert;\nimport org.junit.Test;\n\npublic class Issue3655 {\n    private final static String jsonStr =\n            \"{\\\"data\\\":\\\"\\\",\\\"data2\\\":\\\"\\\",\\\"data3\\\":\\\"\\\",\\\"data4\\\":\\\"\\\",\\\"data5\\\":\\\"\\\",\\\"data6\\\":\\\"\\\",\\\"data7\\\":\\\"\\\",\\\"data8\\\":\\\"\\\",\\\"data9\\\":\\\"\\\"}\";\n\n    @Test\n    public void test_inherit_from_abstract_class_1() {\n        issue3655_b b = new issue3655_b(null, null, null, null, null, null, null, null, null);\n        String result = JSON.toJSONString(b, SerializerFeature.WriteNullStringAsEmpty);\n        System.out.println(result);\n        Assert.assertEquals(jsonStr, result);\n    }\n\n    @Test\n    public void test_inherit_from_abstract_class_2() {\n        issue3655_c c = new issue3655_c(null, null, null, null, null, null, null, null, null);\n        String result = JSON.toJSONString(c, SerializerFeature.WriteNullStringAsEmpty);\n        System.out.println(result);\n        Assert.assertEquals(jsonStr, result);\n    }\n\n    public static class issue3655_b extends issue3655_a {\n        private String data;\n        private String data2;\n        private String data3;\n        private String data4;\n        private String data5;\n        private String data6;\n        private String data7;\n        private String data8;\n        private String data9;\n\n        public String getData() {\n            return data;\n        }\n\n        public String getData2() {\n            return data2;\n        }\n\n        public String getData3() {\n            return data3;\n        }\n\n        public String getData4() {\n            return data4;\n        }\n\n        public String getData5() {\n            return data5;\n        }\n\n        public String getData6() {\n            return data6;\n        }\n\n        public String getData7() {\n            return data7;\n        }\n\n        public String getData8() {\n            return data8;\n        }\n\n        public String getData9() {\n            return data9;\n        }\n\n        public void setData(String data) {\n            this.data = data;\n        }\n\n        public void setData2(String data2) {\n            this.data2 = data2;\n        }\n\n        public void setData3(String data3) {\n            this.data3 = data3;\n        }\n\n        public void setData4(String data4) {\n            this.data4 = data4;\n        }\n\n        public void setData5(String data5) {\n            this.data5 = data5;\n        }\n\n        public void setData6(String data6) {\n            this.data6 = data6;\n        }\n\n        public void setData7(String data7) {\n            this.data7 = data7;\n        }\n\n        public void setData8(String data8) {\n            this.data8 = data8;\n        }\n\n        public void setData9(String data9) {\n            this.data9 = data9;\n        }\n\n        public issue3655_b(\n                String data, String data2, String data3, String data4, String data5,\n                String data6, String data7, String data8, String data9) {\n            this.data = data;\n            this.data2 = data2;\n            this.data3 = data3;\n            this.data4 = data4;\n            this.data5 = data5;\n            this.data6 = data6;\n            this.data7 = data7;\n            this.data8 = data8;\n            this.data9 = data9;\n        }\n    }\n\n    @Getter\n    @Setter\n    @AllArgsConstructor\n    public static class issue3655_c extends issue3655_a {\n        private String data;\n        private String data2;\n        private String data3;\n        private String data4;\n        private String data5;\n        private String data6;\n        private String data7;\n        private String data8;\n        private String data9;\n    }\n\n    public static abstract class issue3655_a {\n        public abstract Object getData();\n\n        public abstract Object getData2();\n\n        public abstract Object getData3();\n\n        public abstract Object getData4();\n\n        public abstract Object getData5();\n\n        public abstract Object getData6();\n\n        public abstract Object getData7();\n\n        public abstract Object getData8();\n\n        public abstract Object getData9();\n    }\n\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3600/Issue3671.java",
    "content": "package com.alibaba.json.bvt.issue_3600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONValidator;\nimport junit.framework.TestCase;\n\npublic class Issue3671 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String json = \"[{\\n\" +\n                \"    \\\"filters\\\": [],\\n\" +\n                \"    \\\"id\\\": \\\"baidu_route2\\\",\\n\" +\n                \"    \\\"order\\\": 0,\\n\" +\n                \"    \\\"predicates\\\": [{\\n\" +\n                \"        \\\"args\\\": {\\n\" +\n                \"            \\\"pattern\\\": \\\"/baidu/**\\\"\\n\" +\n                \"        },\\n\" +\n                \"        \\\"name\\\": \\\"Path\\\"\\n\" +\n                \"    }],\\n\" +\n                \"    \\\"uri\\\": \\\"https://www.baidu.com\\\"\\n\" +\n                \"}]\\n\";\n        assertTrue(JSONValidator.from(json).validate());\n        assertTrue(JSON.isValid(json));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3600/Issue3672.java",
    "content": "package com.alibaba.json.bvt.issue_3600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.google.common.collect.Lists;\nimport lombok.Data;\nimport org.junit.Test;\n\nimport java.util.ArrayList;\n\nimport junit.framework.TestCase;\n\npublic class Issue3672 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Issue3672Root root = new Issue3672Root();\n        Issue3672A a = new Issue3672A();\n        Issue3672B b = new Issue3672B();\n        Issue3672C c = new Issue3672C();\n        Issue3672D d = new Issue3672D();\n        root.setA(a);\n        a.setB(Lists.newArrayList(b).toArray());\n        b.setC(c);\n        c.setD(d);\n        d.setE(Lists.newArrayList(c));\n        String str1 = JSON.toJSONString(root, SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue);\n        String str2 = JSON.toJSONString(root);\n\n        JSONObject obj1 = JSON.parseObject(str1);\n        JSONObject obj2 = JSON.parseObject(str2);\n        assertEquals(obj1.toString(), obj2.toString());\n    }\n\n    @Data\n    private class Issue3672Root {\n        private Issue3672A a;\n    }\n\n    @Data\n    private class Issue3672A {\n        private Object[] b;\n    }\n\n    @Data\n    private class Issue3672B {\n        private Issue3672C c;\n    }\n\n    @Data\n    private class Issue3672C {\n        private Issue3672D d;\n    }\n\n    @Data\n    private class Issue3672D {\n        private ArrayList<Issue3672C> e;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3600/Issue3682.java",
    "content": "package com.alibaba.json.bvt.issue_3600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport lombok.Data;\n\npublic class Issue3682 extends TestCase {\n    public void test_for_issue() throws Exception {\n        Cid cid = JSON.parseObject(SOURCE, Cid.class);\n        System.out.println(cid);\n    }\n\n    @Data\n    static public class Cid {\n\n        @JSONField(name = \"/\")\n        private String hash;\n\n    }\n\n    static final String SOURCE = \"{\\n\" +\n            \"    \\\"jsonrpc\\\": \\\"2.0\\\",\\n\" +\n            \"    \\\"result\\\": {\\n\" +\n            \"        \\\"Version\\\": 0,\\n\" +\n            \"        \\\"To\\\": \\\"t1iceld4fv44xgjqfcx5lwz45pubheu3c7c2nmlua\\\",\\n\" +\n            \"        \\\"From\\\": \\\"t152xual7ze57jnnioucuv4lmtxarewtzhkqojboy\\\",\\n\" +\n            \"        \\\"Nonce\\\": 4,\\n\" +\n            \"        \\\"Value\\\": \\\"9999999938462317355\\\",\\n\" +\n            \"        \\\"GasLimit\\\": 609960,\\n\" +\n            \"        \\\"GasFeeCap\\\": \\\"101083\\\",\\n\" +\n            \"        \\\"GasPremium\\\": \\\"100029\\\",\\n\" +\n            \"        \\\"Method\\\": 0,\\n\" +\n            \"        \\\"Params\\\": null,\\n\" +\n            \"        \\\"CID\\\": {\\n\" +\n            \"            \\\"/\\\": \\\"bafy2bzacedgpr5pmkvu4rkq26uv4hidpfrn3gdvtgkp3hpxss3bgmodrgqtk6\\\"\\n\" +\n            \"        }\\n\" +\n            \"    },\\n\" +\n            \"    \\\"id\\\": 1\\n\" +\n            \"}\";\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3600/Issue3689.java",
    "content": "package com.alibaba.json.bvt.issue_3600;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONException;\nimport org.junit.Test;\n\npublic class Issue3689 {\n\n    @Test(expected = JSONException.class)\n    public void test_without_type_0_meaningles_char() {\n        JSONArray.parseArray(\"dfdfdf\");\n    }\n\n    @Test(expected = JSONException.class)\n    public void test_without_type_1_meaningles_char() {\n        JSONArray.parseArray(\"/dfdfdf\");\n    }\n\n    @Test(expected = JSONException.class)\n    public void test_without_type_2_meaningles_char() {\n        JSONArray.parseArray(\"//dfdfdf\");\n    }\n\n    @Test(expected = JSONException.class)\n    public void test_without_type_3_meaningles_char() {\n        JSONArray.parseArray(\"///dfdfdf\");\n    }\n\n    @Test(expected = JSONException.class)\n    public void test_without_type_4_meaningles_char() {\n        JSONArray.parseArray(\"////dfdfdf\");\n    }\n\n    @Test(expected = JSONException.class)\n    public void test_without_type_5_meaningles_char() {\n        JSONArray.parseArray(\"/////dfdfdf\");\n    }\n\n    @Test(expected = JSONException.class)\n    public void test_without_type_6_meaningles_char() {\n        JSONArray.parseArray(\"//////dfdfdf\");\n    }\n\n    @Test(expected = JSONException.class)\n    public void test_with_type_0_meaningles_char() {\n        JSONArray.parseArray(\"dfdfdf\", String.class);\n    }\n\n    @Test(expected = JSONException.class)\n    public void test_with_type_1_meaningles_char() {\n        JSONArray.parseArray(\"/dfdfdf\", String.class);\n    }\n\n    @Test(expected = JSONException.class)\n    public void test_with_type_2_meaningles_char() {\n        JSONArray.parseArray(\"//dfdfdf\", String.class);\n\n    }\n\n    @Test(expected = JSONException.class)\n    public void test_with_type_3_meaningles_char() {\n        JSONArray.parseArray(\"///dfdfdf\", String.class);\n\n    }\n\n    @Test(expected = JSONException.class)\n    public void test_with_type_4_meaningles_char() {\n        JSONArray.parseArray(\"////dfdfdf\", String.class);\n\n    }\n\n    @Test(expected = JSONException.class)\n    public void test_with_type_5_meaningles_char() {\n        JSONArray.parseArray(\"/////dfdfdf\", String.class);\n\n    }\n\n    @Test(expected = JSONException.class)\n    public void test_with_type_6_meaningles_char() {\n        JSONArray.parseArray(\"//////dfdfdf\", String.class);\n    }\n\n    @Test\n    public void test_for_issue() {\n        JSONArray.parseArray(\"[\\\"////dfdfdf\\\"]\"); //不会抛异常\n        JSONArray objects = JSONArray.parseArray(\"[\\\"dfdfdf\\\"]\");//不会抛异常\n        System.out.println(JSONArray.parseArray(\"[\\\"////dfdfdf\\\"]\"));\n        System.out.println(JSONArray.parseArray(\"[\\\"dfdfdf\\\"]\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3600/Issue3693.java",
    "content": "package com.alibaba.json.bvt.issue_3600;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.ObjectSerializer;\nimport junit.framework.TestCase;\n\nimport java.lang.reflect.Type;\n\npublic class Issue3693 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        Model<ModelProperties> model = new Model<ModelProperties>(\"hello 世界\", new ModelProperties(\"红色\", 66));\n        String json = JSON.toJSONString(model);\n        assertEquals(\"{\\\"name\\\":\\\"hello 世界\\\",\\\"properties\\\":\\\"{\\\\\\\"color\\\\\\\":\\\\\\\"红色\\\\\\\",\\\\\\\"size\\\\\\\":66}\\\"}\", json);\n\n        Model<ModelProperties> deserializedModel = JSON.parseObject(json, new TypeReference<Model<ModelProperties>>() {\n        });\n        assertNotNull(deserializedModel);\n        assertEquals(\"hello 世界\", deserializedModel.getName());\n        assertNotNull(deserializedModel.getProperties());\n        assertEquals(\"红色\", deserializedModel.getProperties().getColor());\n        assertEquals(66, deserializedModel.getProperties().getSize());\n    }\n\n\n    static class Model<T> {\n        private String name;\n        @JSONField(serializeUsing = MyCodec.class, deserializeUsing = MyCodec.class)\n        private T properties;\n\n        Model() {\n        }\n\n        Model(String name, T properties) {\n            this.name = name;\n            this.properties = properties;\n        }\n\n        public String getName() {\n            return this.name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public T getProperties() {\n            return this.properties;\n        }\n\n        public void setProperties(T properties) {\n            this.properties = properties;\n        }\n    }\n\n\n    static class ModelProperties {\n        private String color;\n        private int size;\n\n        ModelProperties() {\n        }\n\n        ModelProperties(String color, int size) {\n            this.color = color;\n            this.size = size;\n        }\n\n        public String getColor() {\n            return this.color;\n        }\n\n        public void setColor(String color) {\n            this.color = color;\n        }\n\n        public int getSize() {\n            return this.size;\n        }\n\n        public void setSize(int size) {\n            this.size = size;\n        }\n    }\n\n\n    public static class MyCodec implements ObjectSerializer, ObjectDeserializer {\n        @Override\n        public int getFastMatchToken() {\n            return 0;\n        }\n\n        @Override\n        public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) {\n            serializer.write(JSON.toJSONString(object));\n        }\n\n        @Override\n        public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n            String json = parser.parseObject(String.class);\n            return JSON.parseObject(json, type);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/issue_3800/Issue3810.java",
    "content": "package com.alibaba.json.bvt.issue_3800;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.util.ParameterizedTypeImpl;\nimport junit.framework.TestCase;\nimport lombok.Data;\n\nimport java.lang.reflect.Type;\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * https://github.com/alibaba/fastjson/issues/3810\n *\n * @author hnyyghk\n * @date 2021/06/30 18:40\n */\npublic class Issue3810 extends TestCase {\n    @Data\n    static class TestA<T> {\n        T a;\n    }\n\n    @Data\n    static class TestB {\n        String b;\n    }\n\n    private final static String json = \"{\\\"a\\\":[{\\\"b\\\":\\\"b\\\"}]}\";\n\n    public void test_for_issue() throws Exception {\n        ParameterizedTypeImpl inner = new ParameterizedTypeImpl(new Type[]{TestB.class}, List.class, List.class);\n        ParameterizedTypeImpl outer = new ParameterizedTypeImpl(new Type[]{inner}, TestA.class, TestA.class);\n        JSONObject jo = JSONObject.parseObject(json);\n        TestA<List<?>> ret = jo.toJavaObject(outer);\n\n        assertEquals(ArrayList.class.getName(), ret.getA().getClass().getName());\n        assertEquals(TestB.class.getName(), ret.getA().get(0).getClass().getName());\n    }\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk7/PathTest.java",
    "content": "package com.alibaba.json.bvt.jdk7;\n\nimport java.nio.file.Path;\nimport java.nio.file.Paths;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class PathTest extends TestCase {\n    public void test_for_path() throws Exception {\n        Model model = new Model();\n        model.path = Paths.get(\"/root/fastjson\");\n        \n        String text = JSON.toJSONString(model);\n        System.out.println(text);\n        //windows下，输出为 \n        //Assert.assertEquals(\"{\\\"path\\\":\\\"\\\\root\\\\fastjson\\\"}\", text);\n        \n        //linux ,mac\n        //Assert.assertEquals(\"{\\\"path\\\":\\\"/root/fastjson\\\"}\", text);\n        \n        Model model2 = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(model.path.toString(), model2.path.toString());\n    }\n    \n    public void test_for_null() throws Exception {\n        String text = \"{\\\"path\\\":null}\";\n        \n        Model model2 = JSON.parseObject(text, Model.class);\n        Assert.assertNull(model2.path);\n    }\n    \n    public static class Model {\n        public Path path;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/DoubleAdderTest.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.concurrent.atomic.DoubleAdder;\nimport java.util.concurrent.atomic.LongAdder;\n\n/**\n * Created by wenshao on 14/03/2017.\n */\npublic class DoubleAdderTest extends TestCase {\n    public void test_long_add() throws Exception {\n        DoubleAdder adder = new DoubleAdder();\n        adder.add(3);\n\n        String json = JSON.toJSONString(adder);\n        assertEquals(\"{\\\"value\\\":3.0}\", json);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/DurationTest.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport java.time.Duration;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class DurationTest extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        vo.setDate(Duration.ofHours(3));\n        \n        String text = JSON.toJSONString(vo);\n        System.out.println(text);\n        \n        VO vo1 = JSON.parseObject(text, VO.class);\n        \n        Assert.assertEquals(vo.getDate(), vo1.getDate());\n    }\n\n    public void test_for_issue_1() throws Exception {\n        String text = \"{\\\"zero\\\":false,\\\"seconds\\\":5184000,\\\"negative\\\":false,\\\"nano\\\":0,\\\"units\\\":[\\\"SECONDS\\\",\\\"NANOS\\\"]}\";\n        Duration duration = JSON.parseObject(text, Duration.class);\n        assertEquals(\"PT1440H\", duration.toString());\n    }\n\n    public static class VO {\n\n        private Duration date;\n\n        public Duration getDate() {\n            return date;\n        }\n\n        public void setDate(Duration date) {\n            this.date = date;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/InstantTest.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport java.time.Instant;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class InstantTest extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        vo.setDate(Instant.now());\n        \n        String text = JSON.toJSONString(vo);\n        System.out.println(text);\n        \n        VO vo1 = JSON.parseObject(text, VO.class);\n        \n        Assert.assertEquals(vo.getDate(), vo1.getDate());\n    }\n\n    public static class VO {\n\n        private Instant date;\n\n        public Instant getDate() {\n            return date;\n        }\n\n        public void setDate(Instant date) {\n            this.date = date;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/LocalDateTest.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport java.time.LocalDate;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class LocalDateTest extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        vo.setDate(LocalDate.now());\n        \n        String text = JSON.toJSONString(vo);\n        \n        VO vo1 = JSON.parseObject(text, VO.class);\n        \n        Assert.assertEquals(vo.getDate(), vo1.getDate());\n    }\n\n    /**\n     * 方法描述: 测试时间戳转换为 日期\n     * @author wuqiong  2017/11/21 16:48\n     */\n    public void test_for_long() throws Exception {\n        String text= \"{\\\"date\\\":1511248447740}\";\n        VO vo =JSON.parseObject(text,VO.class);\n        Assert.assertEquals(2017, vo.date.getYear());\n        Assert.assertEquals(11, vo.date.getMonthValue());\n        Assert.assertEquals(21, vo.date.getDayOfMonth());\n    }\n\n    public static class VO {\n\n        private LocalDate date;\n\n        public LocalDate getDate() {\n            return date;\n        }\n\n        public void setDate(LocalDate date) {\n            this.date = date;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/LocalDateTest2.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport java.time.LocalDate;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class LocalDateTest2 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"2016-05-06T20:24:28.484\\\"}\", VO.class);\n        \n        Assert.assertEquals(2016, vo.date.getYear());\n        Assert.assertEquals(2016, vo.date.getYear());\n        Assert.assertEquals(5, vo.date.getMonthValue());\n        Assert.assertEquals(6, vo.date.getDayOfMonth());\n    }\n\n    public static class VO {\n        public LocalDate date;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/LocalDateTest3.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport java.time.LocalDate;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class LocalDateTest3 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"2016-05-06\\\"}\", VO.class);\n        \n        Assert.assertEquals(2016, vo.date.getYear());\n        Assert.assertEquals(5, vo.date.getMonthValue());\n        Assert.assertEquals(6, vo.date.getDayOfMonth());\n    }\n\n    public static class VO {\n        public LocalDate date;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/LocalDateTest4.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport java.time.LocalDate;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class LocalDateTest4 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"20160506\\\"}\", VO.class);\n        \n        Assert.assertEquals(2016, vo.date.getYear());\n        Assert.assertEquals(5, vo.date.getMonthValue());\n        Assert.assertEquals(6, vo.date.getDayOfMonth());\n    }\n\n    public static class VO {\n        public LocalDate date;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/LocalDateTest5.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport java.time.LocalDate;\nimport java.util.Locale;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class LocalDateTest5 extends TestCase {\n\n    private Locale origin;\n\n    protected void setUp() throws Exception {\n        origin = Locale.getDefault();\n    }\n\n    protected void tearDown() throws Exception {\n        Locale.setDefault(origin);\n    }\n\n    public void test_for_tw() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"2016/05/06\\\"}\", VO.class);\n\n        Assert.assertEquals(2016, vo.date.getYear());\n        Assert.assertEquals(5, vo.date.getMonthValue());\n        Assert.assertEquals(6, vo.date.getDayOfMonth());\n    }\n\n    public void test_for_jp() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"2016年5月6日\\\"}\", VO.class);\n\n        Assert.assertEquals(2016, vo.date.getYear());\n        Assert.assertEquals(5, vo.date.getMonthValue());\n        Assert.assertEquals(6, vo.date.getDayOfMonth());\n    }\n\n    public void test_for_kr() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"2016년5월6일\\\"}\", VO.class);\n\n        Assert.assertEquals(2016, vo.date.getYear());\n        Assert.assertEquals(5, vo.date.getMonthValue());\n        Assert.assertEquals(6, vo.date.getDayOfMonth());\n    }\n\n    public void test_for_us() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"05/26/2016\\\"}\", VO.class);\n\n        Assert.assertEquals(2016, vo.date.getYear());\n        Assert.assertEquals(5, vo.date.getMonthValue());\n        Assert.assertEquals(26, vo.date.getDayOfMonth());\n    }\n\n    public void test_for_eur() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"26/05/2016\\\"}\", VO.class);\n\n        Assert.assertEquals(2016, vo.date.getYear());\n        Assert.assertEquals(5, vo.date.getMonthValue());\n        Assert.assertEquals(26, vo.date.getDayOfMonth());\n    }\n\n    public void test_for_us_1() throws Exception {\n        Locale.setDefault(Locale.US);\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"05/06/2016\\\"}\", VO.class);\n\n        Assert.assertEquals(2016, vo.date.getYear());\n        Assert.assertEquals(5, vo.date.getMonthValue());\n        Assert.assertEquals(06, vo.date.getDayOfMonth());\n    }\n\n    public void test_for_br() throws Exception {\n        Locale.setDefault(new Locale(\"pt\", \"BR\"));\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"06/05/2016\\\"}\", VO.class);\n\n        Assert.assertEquals(2016, vo.date.getYear());\n        Assert.assertEquals(5, vo.date.getMonthValue());\n        Assert.assertEquals(6, vo.date.getDayOfMonth());\n    }\n\n    public void test_for_au() throws Exception {\n        Locale.setDefault(new Locale(\"en\", \"AU\"));\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"06/05/2016\\\"}\", VO.class);\n\n        Assert.assertEquals(2016, vo.date.getYear());\n        Assert.assertEquals(5, vo.date.getMonthValue());\n        Assert.assertEquals(6, vo.date.getDayOfMonth());\n    }\n\n    public void test_for_de() throws Exception {\n        Locale.setDefault(new Locale(\"pt\", \"BR\"));\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"06.05.2016\\\"}\", VO.class);\n\n        Assert.assertEquals(2016, vo.date.getYear());\n        Assert.assertEquals(5, vo.date.getMonthValue());\n        Assert.assertEquals(6, vo.date.getDayOfMonth());\n    }\n    \n    public void test_for_in() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"06-05-2016\\\"}\", VO.class);\n\n        Assert.assertEquals(2016, vo.date.getYear());\n        Assert.assertEquals(5, vo.date.getMonthValue());\n        Assert.assertEquals(6, vo.date.getDayOfMonth());\n    }\n\n    public static class VO {\n\n        public LocalDate date;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/LocalDateTimeTest.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport java.time.LocalDateTime;\n\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class LocalDateTimeTest extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        vo.setDate(LocalDateTime.now().minusNanos(10L));\n        \n        String text = JSON.toJSONString(vo);\n        \n        VO vo1 = JSON.parseObject(text, VO.class);\n        \n        Assert.assertEquals(JSON.toJSONString(vo.getDate()), JSON.toJSONString(vo1.getDate()));\n    }\n\n    /**\n     * 方法描述: 测试LocalDateTime 转化时间戳等 操作\n     *  问题点1、 LocalDateTime 进来的值无法确定其时区,所以此处统一按着系统时区走。\n     *  问题点2、 如果设置 SerializerFeature.WriteDateUseDateFormat 时按着 \"yyyy-MM-dd HH:mm:ss\" 进行格式化\n     *  问题点3：  如果设置 SerializerFeature.UseISO8601DateFormat 时按着ISO8601的标准 \"yyyy-MM-dd'T'HH:mm:ss\"进行格式化\n     *  问题点4:\n     *      1)格式化LocalDateTime时， 默认格式成 时间戳格式，\n     *      2)如设置WriteDateUseDateFormat 按 \"yyyy-MM-dd HH:mm:ss\" 进行格式化\n     *      3)如设置UseISO8601DateFormat 按ISO8601的标准 \"yyyy-MM-dd'T'HH:mm:ss\"进行格式化\n     *      4)如设置WriteDateUseDateFormat、UseISO8601DateFormat 同时设置,则按ISO8601的标准 \"yyyy-MM-dd'T'HH:mm:ss\"进行格式化\n     * @author wuqiong  2017/11/22 15:08\n     */\n    public void test_toJsonString_ofLong()throws Exception {\n        VO vo = new VO();\n        vo.setDate(LocalDateTime.now());\n\n        VO vo1 = JSON.parseObject(\"{\\\"date\\\":1511334591189}\", VO.class);\n\n        String text2 = JSON.toJSONString(vo, SerializerFeature.WriteDateUseDateFormat);\n        System.out.println(text2);//{\"date\":\"2017-11-22 15:09:51\"}\n        VO vo2 = JSON.parseObject(text2, VO.class);\n\n        String text3 = JSON.toJSONString(vo, SerializerFeature.UseISO8601DateFormat);\n        System.out.println(text3);//{\"date\":\"2017-11-22T15:09:51\"}\n        VO vo3 = JSON.parseObject(text3, VO.class);\n\n        String text4 = JSON.toJSONString(vo, SerializerFeature.UseISO8601DateFormat, SerializerFeature.WriteDateUseDateFormat);\n        System.out.println(text4);//{\"date\":\"2017-11-22T15:09:51\"}\n        VO vo4 = JSON.parseObject(text4, VO.class);\n    }\n\n    public  void test_for_issue_1() throws Exception {\n        String text = \"{\\\"date\\\":\\\"2018-08-03 22:38:33.145\\\"}\";\n        VO vo1 = JSON.parseObject(text, VO.class);\n        assertNotNull(vo1.date);\n    }\n\n    public static class VO {\n\n        private LocalDateTime date;\n\n        public LocalDateTime getDate() {\n            return date;\n        }\n\n        public void setDate(LocalDateTime date) {\n            this.date = date;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/LocalDateTimeTest2.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport java.time.LocalDateTime;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class LocalDateTimeTest2 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"2011-12-03\\\"}\", VO.class);\n        \n        Assert.assertEquals(2011, vo.date.getYear());\n        Assert.assertEquals(12, vo.date.getMonthValue());\n        Assert.assertEquals(03, vo.date.getDayOfMonth());\n        Assert.assertEquals(0, vo.date.getHour());\n        Assert.assertEquals(0, vo.date.getMinute());\n        Assert.assertEquals(0, vo.date.getSecond());\n    }\n\n    public static class VO {\n        public LocalDateTime date;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/LocalDateTimeTest3.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport java.time.LocalDateTime;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\n\npublic class LocalDateTimeTest3 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String text = \"{\\\"date\\\":\\\"20111203\\\"}\";\n        VO vo = JSON.parseObject(text, VO.class);\n        \n        Assert.assertEquals(2011, vo.date.getYear());\n        Assert.assertEquals(12, vo.date.getMonthValue());\n        Assert.assertEquals(03, vo.date.getDayOfMonth());\n        Assert.assertEquals(0, vo.date.getHour());\n        Assert.assertEquals(0, vo.date.getMinute());\n        Assert.assertEquals(0, vo.date.getSecond());\n        \n        Assert.assertEquals(text, JSON.toJSONString(vo));\n    }\n\n    public static class VO {\n        @JSONField(format=\"yyyyMMdd\")\n        public LocalDateTime date;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/LocalDateTimeTest3_private.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport java.time.LocalDateTime;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\n\npublic class LocalDateTimeTest3_private extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String text = \"{\\\"date\\\":\\\"20111203\\\"}\";\n        VO vo = JSON.parseObject(text, VO.class);\n        \n        Assert.assertEquals(2011, vo.date.getYear());\n        Assert.assertEquals(12, vo.date.getMonthValue());\n        Assert.assertEquals(03, vo.date.getDayOfMonth());\n        Assert.assertEquals(0, vo.date.getHour());\n        Assert.assertEquals(0, vo.date.getMinute());\n        Assert.assertEquals(0, vo.date.getSecond());\n        \n        Assert.assertEquals(text, JSON.toJSONString(vo));\n    }\n\n    private static class VO {\n        @JSONField(format=\"yyyyMMdd\")\n        public LocalDateTime date;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/LocalDateTimeTest4.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport java.time.LocalDateTime;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class LocalDateTimeTest4 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        LocalDateTime dateTime = LocalDateTime.of(2016, 5, 6, 9, 3, 16);\n        VO vo = new VO();\n        vo.setDate(dateTime);\n        \n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"date\\\":\\\"2016-05-06T09:03:16\\\"}\", text);\n        \n        VO vo1 = JSON.parseObject(text, VO.class);\n        \n        Assert.assertEquals(vo.getDate(), vo1.getDate());\n    }\n\n    public static class VO {\n\n        private LocalDateTime date;\n\n        public LocalDateTime getDate() {\n            return date;\n        }\n\n        public void setDate(LocalDateTime date) {\n            this.date = date;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/LocalDateTimeTest5.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport java.time.Instant;\nimport java.time.LocalDateTime;\nimport java.util.Locale;\nimport java.util.Random;\nimport java.util.TimeZone;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class LocalDateTimeTest5 extends TestCase {\n\n    private static Random random = new Random();\n\n    private Locale origin;\n    private TimeZone original = TimeZone.getDefault();\n    private String[] zoneIds = TimeZone.getAvailableIDs();\n\n    @Override\n    protected void setUp() throws Exception {\n        int index = random.nextInt(zoneIds.length);\n        TimeZone timeZone = TimeZone.getTimeZone(zoneIds[index]);\n        TimeZone.setDefault(timeZone);\n        JSON.defaultTimeZone = timeZone; // While running mvn tests defaultTimeZone might already be initialized\n        origin = Locale.getDefault();\n    }\n\n    @Override\n    protected void tearDown() throws Exception {\n        TimeZone.setDefault(original);\n        JSON.defaultTimeZone = original;\n        Locale.setDefault(origin);\n    }\n\n    public void test_for_long() throws Exception {\n        long millis = 1322874196000L;\n        // using localDataTime instance so that different timeZones are tested\n        LocalDateTime localDateTime = LocalDateTime.ofInstant(\n                Instant.ofEpochMilli(millis), TimeZone.getDefault().toZoneId());\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\" + millis + \"}\", VO.class);\n\n        assertEquals(\"Not Matching year\", localDateTime.getYear(), vo.date.getYear());\n        assertEquals(\"Not Matching month\", localDateTime.getMonthValue(), vo.date.getMonthValue());\n        assertEquals(\"Not Matching day\", localDateTime.getDayOfMonth(), vo.date.getDayOfMonth());\n        assertEquals(\"Not Matching hour\", localDateTime.getHour(), vo.date.getHour());\n        assertEquals(\"Not Matching minute\", localDateTime.getMinute(), vo.date.getMinute());\n        assertEquals(\"Not Matching second\", localDateTime.getSecond(), vo.date.getSecond());\n        assertEquals(\"Not Matching nano\", localDateTime.getNano(), vo.date.getNano());\n    }\n    \n    public void test_for_normal() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"2011-12-03 09:03:16\\\"}\", VO.class);\n        \n        assertEquals(2011, vo.date.getYear());\n        assertEquals(12, vo.date.getMonthValue());\n        assertEquals(3, vo.date.getDayOfMonth());\n        assertEquals(9, vo.date.getHour());\n        assertEquals(3, vo.date.getMinute());\n        assertEquals(16, vo.date.getSecond());\n        assertEquals(0, vo.date.getNano());\n    }\n    \n    public void test_for_iso() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"2011-12-03T09:03:16\\\"}\", VO.class);\n        \n        assertEquals(2011, vo.date.getYear());\n        assertEquals(12, vo.date.getMonthValue());\n        assertEquals(3, vo.date.getDayOfMonth());\n        \n        assertEquals(9, vo.date.getHour());\n        assertEquals(3, vo.date.getMinute());\n        assertEquals(16, vo.date.getSecond());\n        assertEquals(0, vo.date.getNano());\n    }\n    \n    public void test_for_tw() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"2016/05/06 09:03:16\\\"}\", VO.class);\n\n        assertEquals(2016, vo.date.getYear());\n        assertEquals(5, vo.date.getMonthValue());\n        assertEquals(6, vo.date.getDayOfMonth());\n    }\n\n    public void test_for_jp() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"2016年5月6日 09:03:16\\\"}\", VO.class);\n\n        assertEquals(2016, vo.date.getYear());\n        assertEquals(5, vo.date.getMonthValue());\n        assertEquals(6, vo.date.getDayOfMonth());\n    }\n    \n    public void test_for_cn() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"2016年5月6日 9时3分16秒\\\"}\", VO.class);\n\n        assertEquals(2016, vo.date.getYear());\n        assertEquals(5, vo.date.getMonthValue());\n        assertEquals(6, vo.date.getDayOfMonth());\n    }\n\n    public void test_for_kr() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"2016년5월6일 09:03:16\\\"}\", VO.class);\n\n        assertEquals(2016, vo.date.getYear());\n        assertEquals(5, vo.date.getMonthValue());\n        assertEquals(6, vo.date.getDayOfMonth());\n    }\n\n    public void test_for_us() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"05/26/2016 09:03:16\\\"}\", VO.class);\n\n        assertEquals(2016, vo.date.getYear());\n        assertEquals(5, vo.date.getMonthValue());\n        assertEquals(26, vo.date.getDayOfMonth());\n    }\n\n    public void test_for_eur() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"26/05/2016 09:03:16\\\"}\", VO.class);\n\n        assertEquals(2016, vo.date.getYear());\n        assertEquals(5, vo.date.getMonthValue());\n        assertEquals(26, vo.date.getDayOfMonth());\n    }\n\n    public void test_for_us_1() throws Exception {\n        Locale.setDefault(Locale.US);\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"05/06/2016 09:03:16\\\"}\", VO.class);\n\n        assertEquals(2016, vo.date.getYear());\n        assertEquals(5, vo.date.getMonthValue());\n        assertEquals(06, vo.date.getDayOfMonth());\n    }\n\n    public void test_for_br() throws Exception {\n        Locale.setDefault(new Locale(\"pt\", \"BR\"));\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"06/05/2016 09:03:16\\\"}\", VO.class);\n\n        assertEquals(2016, vo.date.getYear());\n        assertEquals(5, vo.date.getMonthValue());\n        assertEquals(6, vo.date.getDayOfMonth());\n    }\n\n    public void test_for_au() throws Exception {\n        Locale.setDefault(new Locale(\"en\", \"AU\"));\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"06/05/2016 09:03:16\\\"}\", VO.class);\n\n        assertEquals(2016, vo.date.getYear());\n        assertEquals(5, vo.date.getMonthValue());\n        assertEquals(6, vo.date.getDayOfMonth());\n    }\n\n    public void test_for_de() throws Exception {\n        Locale.setDefault(new Locale(\"pt\", \"BR\"));\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"06.05.2016 09:03:16\\\"}\", VO.class);\n\n        assertEquals(2016, vo.date.getYear());\n        assertEquals(5, vo.date.getMonthValue());\n        assertEquals(6, vo.date.getDayOfMonth());\n        \n        assertEquals(9, vo.date.getHour());\n        assertEquals(3, vo.date.getMinute());\n        assertEquals(16, vo.date.getSecond());\n        assertEquals(0, vo.date.getNano());\n    }\n    \n    public void test_for_in() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"06-05-2016 09:03:16\\\"}\", VO.class);\n\n        assertEquals(2016, vo.date.getYear());\n        assertEquals(5, vo.date.getMonthValue());\n        assertEquals(6, vo.date.getDayOfMonth());\n        \n        assertEquals(9, vo.date.getHour());\n        assertEquals(3, vo.date.getMinute());\n        assertEquals(16, vo.date.getSecond());\n        assertEquals(0, vo.date.getNano());\n    }\n\n    public static class VO {\n        public LocalDateTime date;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/LocalTimeTest.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport java.time.LocalTime;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class LocalTimeTest extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        vo.setDate(LocalTime.now());\n        \n        String text = JSON.toJSONString(vo);\n        System.out.println(text);\n        \n        VO vo1 = JSON.parseObject(text, VO.class);\n        \n        Assert.assertEquals(vo.getDate(), vo1.getDate());\n    }\n\n    /**\n     * 方法描述: 测试时间戳转换为 时间\n     * @author wuqiong  2017/11/21 16:48\n     */\n    public void test_for_long() throws Exception {\n        String text= \"{\\\"date\\\":1511248447740}\";\n        VO vo =JSON.parseObject(text,VO.class);\n        Assert.assertEquals(15, vo.date.getHour());\n        Assert.assertEquals(14, vo.date.getMinute());\n        Assert.assertEquals(07, vo.date.getSecond());\n    }\n\n    public static class VO {\n\n        private LocalTime date;\n\n        public LocalTime getDate() {\n            return date;\n        }\n\n        public void setDate(LocalTime date) {\n            this.date = date;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/LocalTimeTest2.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport java.time.LocalTime;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class LocalTimeTest2 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        VO vo1 = JSON.parseObject(\"{\\\"date\\\":\\\"20:30:55\\\"}\", VO.class);\n        \n        Assert.assertEquals(20, vo1.date.getHour());\n        Assert.assertEquals(30, vo1.date.getMinute());\n        Assert.assertEquals(55, vo1.date.getSecond());\n    }\n\n    public static class VO {\n\n        public LocalTime date;\n\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/LocalTimeTest3.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport java.time.LocalTime;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class LocalTimeTest3 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        VO vo1 = JSON.parseObject(\"{\\\"date\\\":\\\"2016-05-05T20:24:28.484\\\"}\", VO.class);\n        \n        Assert.assertEquals(20, vo1.date.getHour());\n        Assert.assertEquals(24, vo1.date.getMinute());\n        Assert.assertEquals(28, vo1.date.getSecond());\n        Assert.assertEquals(484000000, vo1.date.getNano());\n    }\n\n    public static class VO {\n\n        public LocalTime date;\n\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/LongAdderTest.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.concurrent.atomic.LongAdder;\n\n/**\n * Created by wenshao on 14/03/2017.\n */\npublic class LongAdderTest extends TestCase {\n    public void test_long_add() throws Exception {\n        LongAdder adder = new LongAdder();\n        adder.add(3);\n\n        String json = JSON.toJSONString(adder);\n        assertEquals(\"{\\\"value\\\":3}\", json);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/OffseTimeTest.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport java.time.OffsetTime;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class OffseTimeTest extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        vo.setDate(OffsetTime.now());\n        \n        String text = JSON.toJSONString(vo);\n        System.out.println(text);\n        \n        VO vo1 = JSON.parseObject(text, VO.class);\n        \n        Assert.assertEquals(vo.getDate(), vo1.getDate());\n    }\n\n    public static class VO {\n\n        private OffsetTime date;\n\n        public OffsetTime getDate() {\n            return date;\n        }\n\n        public void setDate(OffsetTime date) {\n            this.date = date;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/OffsetDateTimeTest.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport java.time.OffsetDateTime;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class OffsetDateTimeTest extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        vo.setDate(OffsetDateTime.now());\n        \n        String text = JSON.toJSONString(vo);\n        System.out.println(text);\n        \n        VO vo1 = JSON.parseObject(text, VO.class);\n        \n        Assert.assertEquals(vo.getDate(), vo1.getDate());\n    }\n\n    public static class VO {\n\n        private OffsetDateTime date;\n\n        public OffsetDateTime getDate() {\n            return date;\n        }\n\n        public void setDate(OffsetDateTime date) {\n            this.date = date;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/OptionalDouble_Test.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport java.util.OptionalDouble;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class OptionalDouble_Test extends TestCase {\n\n    public void test_optional() throws Exception {\n        Model model = new Model();\n        model.value = OptionalDouble.empty();\n\n        String text = JSON.toJSONString(model);\n\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\n\n        Model model2 = JSON.parseObject(text, Model.class);\n\n        Assert.assertEquals(model2.value, model.value);\n    }\n\n\n    public static class Model {\n        public OptionalDouble value;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/OptionalInt_Test.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport java.util.OptionalInt;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class OptionalInt_Test extends TestCase {\n\n    public void test_optional() throws Exception {\n        Model model = new Model();\n        model.value = OptionalInt.empty();\n\n        String text = JSON.toJSONString(model);\n\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\n\n        Model model2 = JSON.parseObject(text, Model.class);\n\n        Assert.assertEquals(model2.value, model.value);\n    }\n\n\n    public static class Model {\n        public OptionalInt value;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/OptionalLong_Test.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport java.util.OptionalLong;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class OptionalLong_Test extends TestCase {\n\n    public void test_optional() throws Exception {\n        Model model = new Model();\n        model.value = OptionalLong.empty();\n\n        String text = JSON.toJSONString(model);\n\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\n\n        Model model2 = JSON.parseObject(text, Model.class);\n\n        Assert.assertEquals(model2.value, model.value);\n    }\n\n\n    public static class Model {\n        public OptionalLong value;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/OptionalTest.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport java.util.Optional;\nimport java.util.OptionalDouble;\nimport java.util.OptionalInt;\nimport java.util.OptionalLong;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\nimport junit.framework.TestCase;\n\npublic class OptionalTest extends TestCase {\n    public void test_optional() throws Exception {\n        Optional<Integer> val = Optional.of(3);\n        \n        String text = JSON.toJSONString(val);\n        \n        Assert.assertEquals(\"3\", text);\n        \n        Optional<Integer> val2 = JSON.parseObject(text, new TypeReference<Optional<Integer>>() {});\n        Assert.assertEquals(val.get(), val2.get());\n    }\n    \n    public void test_optionalInt_present() throws Exception {\n        String text = JSON.toJSONString(OptionalInt.empty());\n        \n        Assert.assertEquals(\"null\", text);\n    }\n    \n    public void test_optionalInt() throws Exception {\n        OptionalInt val = OptionalInt.of(3);\n        \n        String text = JSON.toJSONString(val);\n        \n        Assert.assertEquals(\"3\", text);\n        \n        OptionalInt val2 = JSON.parseObject(text, OptionalInt.class);\n        Assert.assertEquals(val.getAsInt(), val2.getAsInt());\n    }\n    \n    public void test_optionalLong_present() throws Exception {\n        String text = JSON.toJSONString(OptionalLong.empty());\n        \n        Assert.assertEquals(\"null\", text);\n    }\n    \n    public void test_optionalLong() throws Exception {\n        OptionalLong val = OptionalLong.of(3);\n        \n        String text = JSON.toJSONString(val);\n        \n        Assert.assertEquals(\"3\", text);\n        \n        OptionalLong val2 = JSON.parseObject(text, OptionalLong.class);\n        Assert.assertEquals(val.getAsLong(), val2.getAsLong());\n    }\n    \n    public void test_optionalDouble_present() throws Exception {\n        String text = JSON.toJSONString(OptionalDouble.empty());\n        \n        Assert.assertEquals(\"null\", text);\n    }\n    \n    public void test_optionalDouble() throws Exception {\n        OptionalDouble val = OptionalDouble.of(3.1D);\n        \n        String text = JSON.toJSONString(val);\n        \n        Assert.assertEquals(\"3.1\", text);\n        \n        OptionalDouble val2 = JSON.parseObject(text, OptionalDouble.class);\n        Assert.assertEquals(Double.toString(val.getAsDouble()), Double.toString(val2.getAsDouble()));\n    }\n\n    public void test_optional_parseNull() throws Exception {\n        assertSame(Optional.empty()\n                , JSON.parseObject(\"null\", Optional.class));\n    }\n\n    public void test_optional_parseNull_2() throws Exception {\n        assertSame(Optional.empty()\n                , JSON.parseObject(\"null\", new TypeReference<Optional<Integer>>() {}));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/OptionalTest2.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport java.util.Optional;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class OptionalTest2 extends TestCase {\n\n    public void test_optional() throws Exception {\n        Entity entity = new Entity();\n        entity.setValue(Optional.of(123));\n\n        String text = JSON.toJSONString(entity);\n\n        Assert.assertEquals(\"{\\\"value\\\":123}\", text);\n\n        Entity entity2 = JSON.parseObject(text, Entity.class);\n        \n        Assert.assertEquals(entity.getValue().get(), entity2.getValue().get());\n    }\n\n    public static class Entity {\n\n        private Optional<Integer> value;\n\n        public Optional<Integer> getValue() {\n            return value;\n        }\n\n        public void setValue(Optional<Integer> value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/OptionalTest3.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport java.util.Optional;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class OptionalTest3 extends TestCase {\n\n    public void test_optional() throws Exception {\n        UserExt ext = new UserExt();\n        ext.setValue(Optional.of(123));\n        User user = new User();\n        user.setExt(Optional.of(ext));\n\n        String text = JSON.toJSONString(user);\n\n        Assert.assertEquals(\"{\\\"ext\\\":{\\\"value\\\":123}}\", text);\n\n        User user2 = JSON.parseObject(text, User.class);\n\n        Assert.assertEquals(user.getExt().get().getValue().get(), user2.getExt().get().getValue().get());\n    }\n\n    public static class User {\n\n        private Optional<UserExt> ext;\n\n        public Optional<UserExt> getExt() {\n            return ext;\n        }\n\n        public void setExt(Optional<UserExt> ext) {\n            this.ext = ext;\n        }\n\n    }\n\n    public static class UserExt {\n\n        private Optional<Integer> value;\n\n        public Optional<Integer> getValue() {\n            return value;\n        }\n\n        public void setValue(Optional<Integer> value) {\n            this.value = value;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/OptionalTest4.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.Optional;\n\n/**\n * Created by wenshao on 02/04/2017.\n */\npublic class OptionalTest4 extends TestCase {\n    public void test_for_issue() throws Exception {\n        JsonResult result = new JsonResult();\n        result.a = Optional.empty();\n        result.b = Optional.empty();\n\n        String json = JSON.toJSONString(result);\n        System.out.println(json);\n    }\n\n    public static class JsonResult {\n        public Object a;\n        public Optional<Object> b;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/OptionalTest_empty.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport java.util.Optional;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class OptionalTest_empty extends TestCase {\n\n    public void test_optional() throws Exception {\n        Model model = new Model();\n        model.value = Optional.empty();\n\n        String text = JSON.toJSONString(model);\n\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\n\n        Model model2 = JSON.parseObject(text, Model.class);\n\n        Assert.assertEquals(model2.value, model.value);\n    }\n\n\n    public static class Model {\n        public Optional<Value> value;\n    }\n    \n    public static class Value {\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/PeriodTest.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport java.time.Period;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class PeriodTest extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        vo.setDate(Period.of(3, 2, 11));\n        \n        String text = JSON.toJSONString(vo);\n        System.out.println(text);\n        \n        VO vo1 = JSON.parseObject(text, VO.class);\n        \n        Assert.assertEquals(vo.getDate(), vo1.getDate());\n    }\n\n    public static class VO {\n\n        private Period date;\n\n        public Period getDate() {\n            return date;\n        }\n\n        public void setDate(Period date) {\n            this.date = date;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/ZoneIdTest.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport java.time.ZoneId;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class ZoneIdTest extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        vo.setDate(ZoneId.of(\"Europe/Paris\"));\n        \n        String text = JSON.toJSONString(vo);\n        System.out.println(text);\n        \n        VO vo1 = JSON.parseObject(text, VO.class);\n        \n        Assert.assertEquals(vo.getDate(), vo1.getDate());\n    }\n\n    public static class VO {\n\n        private ZoneId date;\n\n        public ZoneId getDate() {\n            return date;\n        }\n\n        public void setDate(ZoneId date) {\n            this.date = date;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/ZonedDateTimeTest.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport java.time.ZonedDateTime;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class ZonedDateTimeTest extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        vo.setDate(ZonedDateTime.now());\n        \n        String text = JSON.toJSONString(vo);\n        System.out.println(text);\n        \n        VO vo1 = JSON.parseObject(text, VO.class);\n        \n        Assert.assertEquals(vo.getDate(), vo1.getDate());\n    }\n\n    public static class VO {\n\n        private ZonedDateTime date;\n\n        public ZonedDateTime getDate() {\n            return date;\n        }\n\n        public void setDate(ZonedDateTime date) {\n            this.date = date;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jdk8/ZonedDateTimeTest2.java",
    "content": "package com.alibaba.json.bvt.jdk8;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.time.ZonedDateTime;\nimport java.time.temporal.TemporalField;\n\npublic class ZonedDateTimeTest2 extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        vo.date = ZonedDateTime.now();\n        \n        String text = JSON.toJSONString(vo);\n        System.out.println(text);\n        \n        VO vo1 = JSON.parseObject(text, VO.class);\n        \n        Assert.assertEquals(vo.date.getSecond(), vo1.date.getSecond());\n    }\n\n    public static class VO {\n        @JSONField(format=\"yyyy-MM-dd HH:mm:ss\")\n        public ZonedDateTime date;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/joda/JodaTest_0.java",
    "content": "package com.alibaba.json.bvt.joda;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.json.bvt.jdk8.LocalDateTest2;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport org.joda.time.LocalDate;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\npublic class JodaTest_0 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        vo.setDate(LocalDate.now());\n\n        String text = JSON.toJSONString(vo);\n\n        VO vo1 = JSON.parseObject(text, VO.class);\n\n        Assert.assertEquals(vo.getDate(), vo1.getDate());\n    }\n\n    public void test_for_issue_1() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"2016-05-06T20:24:28.484\\\"}\", VO.class);\n\n        Assert.assertEquals(2016, vo.date.getYear());\n        Assert.assertEquals(2016, vo.date.getYear());\n        Assert.assertEquals(5, vo.date.getMonthOfYear());\n        Assert.assertEquals(6, vo.date.getDayOfMonth());\n    }\n\n    public void test_for_issue_2() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"20160506\\\"}\", VO.class);\n\n        Assert.assertEquals(2016, vo.date.getYear());\n        Assert.assertEquals(5, vo.date.getMonthOfYear());\n        Assert.assertEquals(6, vo.date.getDayOfMonth());\n    }\n\n    /**\n     * 方法描述: 测试时间戳转换为 日期\n     * @author wuqiong  2017/11/21 16:48\n     */\n    public void test_for_long() throws Exception {\n        String text= \"{\\\"date\\\":1511248447740}\";\n        VO vo =JSON.parseObject(text, VO.class);\n        Assert.assertEquals(2017, vo.date.getYear());\n        Assert.assertEquals(11, vo.date.getMonthOfYear());\n        Assert.assertEquals(21, vo.date.getDayOfMonth());\n    }\n\n    public static class VO {\n\n        private LocalDate date;\n\n        public LocalDate getDate() {\n            return date;\n        }\n\n        public void setDate(LocalDate date) {\n            this.date = date;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/joda/JodaTest_1_LocalDateTime.java",
    "content": "package com.alibaba.json.bvt.joda;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport org.joda.time.LocalDateTime;\n\npublic class JodaTest_1_LocalDateTime extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        vo.setDate(LocalDateTime.now());\n        \n        String text = JSON.toJSONString(vo);\n        \n        VO vo1 = JSON.parseObject(text, VO.class);\n        \n        Assert.assertEquals(JSON.toJSONString(vo.getDate()), JSON.toJSONString(vo1.getDate()));\n    }\n\n    /**\n     * 方法描述: 测试LocalDateTime 转化时间戳等 操作\n     *  问题点1、 LocalDateTime 进来的值无法确定其时区,所以此处统一按着系统时区走。\n     *  问题点2、 如果设置 SerializerFeature.WriteDateUseDateFormat 时按着 \"yyyy-MM-dd HH:mm:ss\" 进行格式化\n     *  问题点3：  如果设置 SerializerFeature.UseISO8601DateFormat 时按着ISO8601的标准 \"yyyy-MM-dd'T'HH:mm:ss\"进行格式化\n     *  问题点4:\n     *      1)格式化LocalDateTime时， 默认格式成 时间戳格式，\n     *      2)如设置WriteDateUseDateFormat 按 \"yyyy-MM-dd HH:mm:ss\" 进行格式化\n     *      3)如设置UseISO8601DateFormat 按ISO8601的标准 \"yyyy-MM-dd'T'HH:mm:ss\"进行格式化\n     *      4)如设置WriteDateUseDateFormat、UseISO8601DateFormat 同时设置,则按ISO8601的标准 \"yyyy-MM-dd'T'HH:mm:ss\"进行格式化\n     * @author wuqiong  2017/11/22 15:08\n     */\n    public void test_toJsonString_ofLong()throws Exception {\n        VO vo = new VO();\n        vo.setDate(LocalDateTime.now());\n\n        VO vo1 = JSON.parseObject(\"{\\\"date\\\":1511334591189}\", VO.class);\n\n        String text2 = JSON.toJSONString(vo, SerializerFeature.WriteDateUseDateFormat);\n        System.out.println(text2);//{\"date\":\"2017-11-22 15:09:51\"}\n        VO vo2 = JSON.parseObject(text2, VO.class);\n\n        String text3 = JSON.toJSONString(vo, SerializerFeature.UseISO8601DateFormat);\n        System.out.println(text3);//{\"date\":\"2017-11-22T15:09:51\"}\n        VO vo3 = JSON.parseObject(text3, VO.class);\n\n        String text4 = JSON.toJSONString(vo, SerializerFeature.UseISO8601DateFormat, SerializerFeature.WriteDateUseDateFormat);\n        System.out.println(text4);//{\"date\":\"2017-11-22T15:09:51\"}\n        VO vo4 = JSON.parseObject(text4, VO.class);\n    }\n\n    public  void test_for_issue_1() throws Exception {\n        String text = \"{\\\"date\\\":\\\"2018-08-03 22:38:33.145\\\"}\";\n        VO vo1 = JSON.parseObject(text, VO.class);\n        assertNotNull(vo1.date);\n    }\n\n    public static class VO {\n\n        private LocalDateTime date;\n\n        public LocalDateTime getDate() {\n            return date;\n        }\n\n        public void setDate(LocalDateTime date) {\n            this.date = date;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/joda/JodaTest_2_LocalDateTimeTest3_private.java",
    "content": "package com.alibaba.json.bvt.joda;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport org.joda.time.LocalDateTime;\n\npublic class JodaTest_2_LocalDateTimeTest3_private extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        String text = \"{\\\"date\\\":\\\"20111203\\\"}\";\n        VO vo = JSON.parseObject(text, VO.class);\n        \n        assertEquals(2011, vo.date.getYear());\n        assertEquals(12, vo.date.getMonthOfYear());\n        assertEquals(03, vo.date.getDayOfMonth());\n        assertEquals(0, vo.date.getHourOfDay());\n        assertEquals(0, vo.date.getMinuteOfHour());\n        assertEquals(0, vo.date.getSecondOfMinute());\n        \n        assertEquals(text, JSON.toJSONString(vo));\n    }\n\n    private static class VO {\n        @JSONField(format=\"yyyyMMdd\")\n        public LocalDateTime date;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/joda/JodaTest_3_LocalTimeTest.java",
    "content": "package com.alibaba.json.bvt.joda;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport org.joda.time.LocalTime;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\npublic class JodaTest_3_LocalTimeTest extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        vo.setDate(LocalTime.now());\n        \n        String text = JSON.toJSONString(vo);\n        System.out.println(text);\n        \n        VO vo1 = JSON.parseObject(text, VO.class);\n        \n        Assert.assertEquals(vo.getDate(), vo1.getDate());\n    }\n\n    /**\n     * 方法描述: 测试时间戳转换为 时间\n     * @author wuqiong  2017/11/21 16:48\n     */\n    public void test_for_long() throws Exception {\n        String text= \"{\\\"date\\\":1511248447740}\";\n        VO vo =JSON.parseObject(text,VO.class);\n        Assert.assertEquals(15, vo.date.getHourOfDay());\n        Assert.assertEquals(14, vo.date.getMinuteOfHour());\n        Assert.assertEquals(07, vo.date.getSecondOfMinute());\n    }\n\n    public static class VO {\n\n        private LocalTime date;\n\n        public LocalTime getDate() {\n            return date;\n        }\n\n        public void setDate(LocalTime date) {\n            this.date = date;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/joda/JodaTest_4_InstantTest.java",
    "content": "package com.alibaba.json.bvt.joda;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport org.joda.time.Instant;\n\npublic class JodaTest_4_InstantTest extends TestCase {\n\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        vo.setDate(Instant.now());\n        \n        String text = JSON.toJSONString(vo);\n        System.out.println(text);\n        \n        VO vo1 = JSON.parseObject(text, VO.class);\n        \n        Assert.assertEquals(vo.getDate(), vo1.getDate());\n    }\n\n    public static class VO {\n\n        private Instant date;\n\n        public Instant getDate() {\n            return date;\n        }\n\n        public void setDate(Instant date) {\n            this.date = date;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/joda/JodaTest_5_DateTimeFormatter.java",
    "content": "package com.alibaba.json.bvt.joda;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.joda.time.format.*;\n\npublic class JodaTest_5_DateTimeFormatter extends TestCase {\n    public void test_for_joda_0() throws Exception {\n\n        String json = \"{\\\"formatter\\\":\\\"yyyyMMdd\\\"}\";\n        Model m = JSON.parseObject(json, Model.class);\n\n        assertEquals(DateTimeFormat.forPattern(\"yyyyMMdd\"), m.formatter);\n    }\n\n    public static class Model {\n        public DateTimeFormatter formatter;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/joda/JodaTest_6_Duration.java",
    "content": "package com.alibaba.json.bvt.joda;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.joda.time.Duration;\nimport org.joda.time.Period;\n\npublic class JodaTest_6_Duration extends TestCase {\n    public void test_for_joda_0() throws Exception {\n\n       Model m = new Model();\n       m.duration = new Duration(24L*60L*60L*1000L);\n\n       String json = JSON.toJSONString(m);\n\n       assertEquals(\"{\\\"duration\\\":\\\"PT86400S\\\"}\", json);\n\n       Model m1 = JSON.parseObject(json, Model.class);\n       assertEquals(m.duration, m1.duration);\n    }\n\n    public static class Model {\n        public Duration duration;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/joda/JodaTest_6_Period.java",
    "content": "package com.alibaba.json.bvt.joda;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.joda.time.Period;\nimport org.joda.time.format.DateTimeFormat;\nimport org.joda.time.format.DateTimeFormatter;\n\npublic class JodaTest_6_Period extends TestCase {\n    public void test_for_joda_0() throws Exception {\n\n       Model m = new Model();\n       m.period = Period.days(3);\n\n       String json = JSON.toJSONString(m);\n\n       assertEquals(\"{\\\"period\\\":\\\"P3D\\\"}\", json);\n\n       Model m1 = JSON.parseObject(json, Model.class);\n       assertEquals(m.period, m1.period);\n    }\n\n    public static class Model {\n        public Period period;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/joda/JodaTest_7_DateTimeZone.java",
    "content": "package com.alibaba.json.bvt.joda;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.joda.time.DateTimeZone;\n\npublic class JodaTest_7_DateTimeZone extends TestCase {\n    public void test_for_joda_0() throws Exception {\n\n       Model m = new Model();\n       m.zone = DateTimeZone.forID(\"Asia/Shanghai\");\n\n       String json = JSON.toJSONString(m);\n\n       assertEquals(\"{\\\"zone\\\":\\\"Asia/Shanghai\\\"}\", json);\n\n       Model m1 = JSON.parseObject(json, Model.class);\n       assertEquals(m.zone, m1.zone);\n    }\n\n    public static class Model {\n        public DateTimeZone zone;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/joda/JodaTest_8_DateTimeTest.java",
    "content": "package com.alibaba.json.bvt.joda;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.joda.time.DateTime;\nimport org.joda.time.LocalTime;\nimport org.junit.Assert;\n\nimport java.util.Locale;\nimport java.util.TimeZone;\n\npublic class JodaTest_8_DateTimeTest extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        vo.date = DateTime.now();\n        \n        String text = JSON.toJSONString(vo);\n\n        VO vo1 = JSON.parseObject(text, VO.class);\n        \n        Assert.assertEquals(vo.date.toDate(), vo1.date.toDate());\n    }\n\n    /**\n     * 方法描述: 测试时间戳转换为 时间\n     * @author wuqiong  2017/11/21 16:48\n     */\n    public void test_for_long() throws Exception {\n        String text= \"{\\\"date\\\":1511248447740}\";\n        VO vo =JSON.parseObject(text,VO.class);\n        Assert.assertEquals(\"timeZone \" + TimeZone.getDefault(), 15, vo.date.getHourOfDay());\n        Assert.assertEquals(14, vo.date.getMinuteOfHour());\n        Assert.assertEquals(07, vo.date.getSecondOfMinute());\n    }\n\n    public static class VO {\n        private DateTime date;\n\n        public DateTime getDate() {\n            return date;\n        }\n\n        public void setDate(DateTime date) {\n            this.date = date;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jsonfield/JSONFieldTest_0.java",
    "content": "package com.alibaba.json.bvt.jsonfield;\n\nimport java.lang.reflect.Field;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.FieldDeserializer;\nimport com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\n\nimport junit.framework.TestCase;\n\npublic class JSONFieldTest_0 extends TestCase {\n\n    public void test_0() throws Exception {\n        VO vo = new VO();\n        vo.setF0(100);\n        vo.setF1(101);\n        vo.setF2(102);\n\n        String text = JSON.toJSONString(vo);\n        System.out.println(text);\n\n        Assert.assertEquals(\"{\\\"f2\\\":102,\\\"f1\\\":101,\\\"f0\\\":100}\", text);\n\n        VO vo_decoded = JSON.parseObject(text, VO.class);\n\n        Assert.assertEquals(vo.f0, vo_decoded.f0);\n        Assert.assertEquals(vo.f1, vo_decoded.f1);\n        Assert.assertEquals(vo.f2, vo_decoded.f2);\n\n        JavaBeanDeserializer javaBeanDeser = null;\n        \n        ObjectDeserializer deser = ParserConfig.getGlobalInstance().getDeserializer(VO.class);\n        javaBeanDeser = (JavaBeanDeserializer) deser;\n        \n        Field field = JavaBeanDeserializer.class.getDeclaredField(\"sortedFieldDeserializers\");\n        field.setAccessible(true);\n        FieldDeserializer[] fieldDeserList = (FieldDeserializer[]) field.get(javaBeanDeser);\n        \n        Assert.assertEquals(3, fieldDeserList.length);\n        Assert.assertEquals(\"f2\", fieldDeserList[0].fieldInfo.name);\n        Assert.assertEquals(\"f1\", fieldDeserList[1].fieldInfo.name);\n        Assert.assertEquals(\"f0\", fieldDeserList[2].fieldInfo.name);\n    }\n\n    public static class VO {\n\n        @JSONField(ordinal = 3)\n        private int f0;\n\n        @JSONField(ordinal = 2)\n        private int f1;\n\n        @JSONField(ordinal = 1)\n        private int f2;\n\n        public int getF0() {\n            return f0;\n        }\n\n        public void setF0(int f0) {\n            this.f0 = f0;\n        }\n\n        public int getF1() {\n            return f1;\n        }\n\n        public void setF1(int f1) {\n            this.f1 = f1;\n        }\n\n        public int getF2() {\n            return f2;\n        }\n\n        public void setF2(int f2) {\n            this.f2 = f2;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jsonfield/JSONFieldTest_1.java",
    "content": "package com.alibaba.json.bvt.jsonfield;\n\nimport java.lang.reflect.Field;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.FieldDeserializer;\nimport com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\n\nimport junit.framework.TestCase;\n\npublic class JSONFieldTest_1 extends TestCase {\n\n    public void test_0() throws Exception {\n        VO vo = new VO();\n        vo.setF0(100);\n        vo.setF1(101);\n        vo.setF2(102);\n\n        String text = JSON.toJSONString(vo);\n        System.out.println(text);\n\n        Assert.assertEquals(\"{\\\"f2\\\":102,\\\"f1\\\":101,\\\"f0\\\":100}\", text);\n\n        VO vo_decoded = JSON.parseObject(text, VO.class);\n\n        Assert.assertEquals(vo.f0, vo_decoded.f0);\n        Assert.assertEquals(vo.f1, vo_decoded.f1);\n        Assert.assertEquals(vo.f2, vo_decoded.f2);\n\n        JavaBeanDeserializer javaBeanDeser = null;\n\n        ObjectDeserializer deser = ParserConfig.getGlobalInstance().getDeserializer(VO.class);\n        javaBeanDeser = (JavaBeanDeserializer) deser;\n\n        Field field = JavaBeanDeserializer.class.getDeclaredField(\"sortedFieldDeserializers\");\n        field.setAccessible(true);\n        FieldDeserializer[] fieldDeserList = (FieldDeserializer[]) field.get(javaBeanDeser);\n        \n        Assert.assertEquals(3, fieldDeserList.length);\n        Assert.assertEquals(\"f2\", fieldDeserList[0].fieldInfo.name);\n        Assert.assertEquals(\"f1\", fieldDeserList[1].fieldInfo.name);\n        Assert.assertEquals(\"f0\", fieldDeserList[2].fieldInfo.name);\n    }\n\n    public static class VO {\n\n        private int f0;\n\n       \n        private int f1;\n\n        \n        private int f2;\n\n        @JSONField(ordinal = 3)\n        public int getF0() {\n            return f0;\n        }\n\n        @JSONField(ordinal = 3)\n        public void setF0(int f0) {\n            this.f0 = f0;\n        }\n\n        @JSONField(ordinal = 2)\n        public int getF1() {\n            return f1;\n        }\n\n        @JSONField(ordinal = 2)\n        public void setF1(int f1) {\n            this.f1 = f1;\n        }\n\n        @JSONField(ordinal = 1)\n        public int getF2() {\n            return f2;\n        }\n\n        \n        @JSONField(ordinal = 1)\n        public void setF2(int f2) {\n            this.f2 = f2;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jsonp/JSONPParseTest.java",
    "content": "package com.alibaba.json.bvt.jsonp;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPObject;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 21/02/2017.\n */\npublic class JSONPParseTest extends TestCase {\n    public void test_f() throws Exception {\n        String text = \"callback ({'id':1, 'name':'idonans'} );\";\n\n        JSONPObject jsonpObject = JSON.parseObject(text, JSONPObject.class);\n        assertEquals(\"callback\", jsonpObject.getFunction());\n\n        assertEquals(1, jsonpObject.getParameters().size());\n        JSONObject param = (JSONObject) jsonpObject.getParameters().get(0);\n        assertEquals(1, param.get(\"id\"));\n        assertEquals(\"idonans\", param.get(\"name\"));\n\n        String json = JSON.toJSONString(jsonpObject);\n        System.out.println(json);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jsonp/JSONPParseTest1.java",
    "content": "package com.alibaba.json.bvt.jsonp;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPObject;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 21/02/2017.\n */\npublic class JSONPParseTest1 extends TestCase {\n    public void test_f() throws Exception {\n        String text = \"callback /**/ ({'id':1, 'name':'idonans'} ); \";\n\n        JSONPObject jsonpObject = JSON.parseObject(text, JSONPObject.class);\n        assertEquals(\"callback\", jsonpObject.getFunction());\n\n        assertEquals(1, jsonpObject.getParameters().size());\n        JSONObject param = (JSONObject) jsonpObject.getParameters().get(0);\n        assertEquals(1, param.get(\"id\"));\n        assertEquals(\"idonans\", param.get(\"name\"));\n\n        String json = JSON.toJSONString(jsonpObject);\n        System.out.println(json);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jsonp/JSONPParseTest2.java",
    "content": "package com.alibaba.json.bvt.jsonp;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPObject;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 21/02/2017.\n */\npublic class JSONPParseTest2 extends TestCase {\n    public void test_f() throws Exception {\n        String text = \"parent.callback ({'id':1, 'name':'idonans'} );   /**/ \";\n\n        JSONPObject jsonpObject = JSON.parseObject(text, JSONPObject.class);\n        assertEquals(\"parent.callback\", jsonpObject.getFunction());\n\n        assertEquals(1, jsonpObject.getParameters().size());\n        JSONObject param = (JSONObject) jsonpObject.getParameters().get(0);\n        assertEquals(1, param.get(\"id\"));\n        assertEquals(\"idonans\", param.get(\"name\"));\n\n        String json = JSON.toJSONString(jsonpObject, SerializerFeature.MapSortField);\n        assertEquals(\"parent.callback({\\\"id\\\":1,\\\"name\\\":\\\"idonans\\\"})\", json);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jsonp/JSONPParseTest3.java",
    "content": "package com.alibaba.json.bvt.jsonp;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPObject;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 21/02/2017.\n */\npublic class JSONPParseTest3 extends TestCase {\n    public void test_f() throws Exception {\n        String text = \"parent.callback ({'id':1, 'name':'ido)nans'},1,2 );   /**/ \";\n\n        JSONPObject jsonpObject = (JSONPObject) JSON.parseObject(text, JSONPObject.class);\n        assertEquals(\"parent.callback\", jsonpObject.getFunction());\n\n        assertEquals(3, jsonpObject.getParameters().size());\n        JSONObject param = (JSONObject) jsonpObject.getParameters().get(0);\n        assertEquals(1, param.get(\"id\"));\n        assertEquals(\"ido)nans\", param.get(\"name\"));\n\n        String json = JSON.toJSONString(jsonpObject, SerializerFeature.BrowserSecure, SerializerFeature.MapSortField);\n        assertEquals(\"/**/parent.callback({\\\"id\\\":1,\\\"name\\\":\\\"ido\\\\u0029nans\\\"},1,2)\", json);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jsonp/JSONPParseTest4.java",
    "content": "package com.alibaba.json.bvt.jsonp;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPObject;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 21/02/2017.\n */\npublic class JSONPParseTest4 extends TestCase {\n    public void test_f() throws Exception {\n        JSONPObject p = new JSONPObject();\n        p.setFunction(\"f\");\n        assertEquals(\"f()\", p.toJSONString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/jsonpatch/JSONPatchTest_0.java",
    "content": "package com.alibaba.json.bvt.jsonpatch;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONPatch;\nimport junit.framework.TestCase;\n\npublic class JSONPatchTest_0 extends TestCase {\n    public void test_for_multi_0() throws Exception {\n        String original = \"{\\n\" +\n                \"  \\\"baz\\\": \\\"qux\\\",\\n\" +\n                \"  \\\"foo\\\": \\\"bar\\\"\\n\" +\n                \"}\";\n\n        String patch = \"[\\n\" +\n                \"  { \\\"op\\\": \\\"replace\\\", \\\"path\\\": \\\"/baz\\\", \\\"value\\\": \\\"boo\\\" },\\n\" +\n                \"  { \\\"op\\\": \\\"add\\\", \\\"path\\\": \\\"/hello\\\", \\\"value\\\": [\\\"world\\\"] },\\n\" +\n                \"  { \\\"op\\\": \\\"remove\\\", \\\"path\\\": \\\"/foo\\\" }\\n\" +\n                \"]\";\n\n        String result = JSONPatch.apply(original, patch);\n        assertEquals(\"{\\\"baz\\\":\\\"boo\\\",\\\"hello\\\":[\\\"world\\\"]}\", result);\n    }\n\n    public void test_for_add_1() throws Exception {\n        String original = \"{}\";\n\n        String patch = \"{ \\\"op\\\": \\\"add\\\", \\\"path\\\": \\\"/a/b/c\\\", \\\"value\\\": [ \\\"foo\\\", \\\"bar\\\" ] }\";\n\n        String result = JSONPatch.apply(original, patch);\n        assertEquals(\"{\\\"a\\\":{\\\"b\\\":{\\\"c\\\":[\\\"foo\\\",\\\"bar\\\"]}}}\", result);\n    }\n\n    public void test_for_remove_0() throws Exception {\n        String original = \"{}\";\n\n        String patch = \"{ \\\"op\\\": \\\"remove\\\", \\\"path\\\": \\\"/a/b/c\\\" }\\n\";\n\n        String result = JSONPatch.apply(original, patch);\n        assertEquals(\"{}\", result);\n    }\n\n    public void test_for_remove_1() throws Exception {\n        String original = \"{\\\"a\\\":{\\\"b\\\":{\\\"c\\\":[\\\"foo\\\",\\\"bar\\\"]}}}\";\n\n        String patch = \"{ \\\"op\\\": \\\"remove\\\", \\\"path\\\": \\\"/a/b/c\\\" }\\n\";\n\n        String result = JSONPatch.apply(original, patch);\n        assertEquals(\"{\\\"a\\\":{\\\"b\\\":{}}}\", result);\n    }\n\n    public void test_for_replace_1() throws Exception {\n        String original = \"{\\\"a\\\":{\\\"b\\\":{\\\"c\\\":[\\\"foo\\\",\\\"bar\\\"]}}}\";\n\n        String patch = \"{ \\\"op\\\": \\\"replace\\\", \\\"path\\\": \\\"/a/b/c\\\", \\\"value\\\": 42 }\";\n\n        String result = JSONPatch.apply(original, patch);\n        assertEquals(\"{\\\"a\\\":{\\\"b\\\":{\\\"c\\\":42}}}\", result);\n    }\n\n    public void test_for_move_0() throws Exception {\n        String original = \"{\\\"a\\\":{\\\"b\\\":{\\\"c\\\":[\\\"foo\\\",\\\"bar\\\"]}}}\";\n\n        String patch = \"{ \\\"op\\\": \\\"move\\\", \\\"from\\\": \\\"/a/b/c\\\", \\\"path\\\": \\\"/a/b/d\\\" }\";\n\n        String result = JSONPatch.apply(original, patch);\n        assertEquals(\"{\\\"a\\\":{\\\"b\\\":{\\\"d\\\":[\\\"foo\\\",\\\"bar\\\"]}}}\", result);\n    }\n\n    public void test_for_copy_0() throws Exception {\n        String original = \"{\\\"a\\\":{\\\"b\\\":{\\\"c\\\":[\\\"foo\\\",\\\"bar\\\"]}}}\";\n\n        String patch = \"{ \\\"op\\\": \\\"copy\\\", \\\"from\\\": \\\"/a/b/c\\\", \\\"path\\\": \\\"/a/b/e\\\" }\";\n\n        String result = JSONPatch.apply(original, patch);\n        assertEquals(\"{\\\"a\\\":{\\\"b\\\":{\\\"c\\\":[\\\"foo\\\",\\\"bar\\\"],\\\"e\\\":[\\\"foo\\\",\\\"bar\\\"]}}}\", result);\n    }\n\n\n    public void test_for_test_0() throws Exception {\n        String original = \"{\\\"a\\\":{\\\"b\\\":{\\\"c\\\":[\\\"foo\\\",\\\"bar\\\"]}}}\";\n\n        String patch = \"{ \\\"op\\\": \\\"test\\\", \\\"path\\\": \\\"/a/b/c\\\", \\\"value\\\": \\\"foo\\\" }\";\n\n        String result = JSONPatch.apply(original, patch);\n        assertEquals(\"false\", result);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/kotlin/ClassWithPairMixedTypesTest.java",
    "content": "package com.alibaba.json.bvt.kotlin;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.apache.commons.io.IOUtils;\n\nimport java.io.IOException;\nimport java.io.InputStream;\n\n/**\n * Created by wenshao on 06/08/2017.\n */\npublic class ClassWithPairMixedTypesTest extends TestCase {\n    public void test_user() throws Exception {\n        ExtClassLoader classLoader = new ExtClassLoader();\n        Class clazz = classLoader.loadClass(\"ClassWithPairMixedTypes\");\n\n        String json = \"{\\\"person\\\":{\\\"first\\\":\\\"wenshao\\\",\\\"second\\\":99}}\";\n        Object obj = JSON.parseObject(json, clazz);\n        assertEquals(\"{\\\"person\\\":{\\\"first\\\":\\\"wenshao\\\",\\\"second\\\":99}}\", JSON.toJSONString(obj));\n    }\n\n    public static class ExtClassLoader extends ClassLoader {\n\n        public ExtClassLoader() throws IOException {\n            super(Thread.currentThread().getContextClassLoader());\n\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"kotlin/ClassWithPairMixedTypes.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n\n                super.defineClass(\"ClassWithPairMixedTypes\", bytes, 0, bytes.length);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/kotlin/ClassWithPairTest.java",
    "content": "package com.alibaba.json.bvt.kotlin;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.apache.commons.io.IOUtils;\n\nimport java.io.IOException;\nimport java.io.InputStream;\n\n/**\n * Created by wenshao on 06/08/2017.\n */\npublic class ClassWithPairTest extends TestCase {\n    public void test_user() throws Exception {\n        ExtClassLoader classLoader = new ExtClassLoader();\n        Class clazz = classLoader.loadClass(\"ClassWithPair\");\n\n        String json = \"{\\\"name\\\":{\\\"first\\\":\\\"shaojin\\\",\\\"second\\\":\\\"wen\\\"},\\\"age\\\":99}\";\n        Object obj = JSON.parseObject(json, clazz);\n        assertEquals(\"{\\\"age\\\":99,\\\"name\\\":{\\\"first\\\":\\\"shaojin\\\",\\\"second\\\":\\\"wen\\\"}}\", JSON.toJSONString(obj));\n    }\n\n    public static class ExtClassLoader extends ClassLoader {\n\n        public ExtClassLoader() throws IOException {\n            super(Thread.currentThread().getContextClassLoader());\n\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"kotlin/ClassWithPair.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n\n                super.defineClass(\"ClassWithPair\", bytes, 0, bytes.length);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/kotlin/ClassWithRangesTest.java",
    "content": "package com.alibaba.json.bvt.kotlin;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.apache.commons.io.IOUtils;\n\nimport java.io.IOException;\nimport java.io.InputStream;\n\n/**\n * Created by wenshao on 06/08/2017.\n */\npublic class ClassWithRangesTest extends TestCase {\n    public void test_user() throws Exception {\n        ExtClassLoader classLoader = new ExtClassLoader();\n        Class clazz = classLoader.loadClass(\"ClassWithRanges\");\n\n        String json = \"{\\\"ages\\\":{\\\"start\\\":18,\\\"end\\\":40},\\\"distance\\\":{\\\"start\\\":5,\\\"end\\\":50}}\";\n        Object obj = JSON.parseObject(json, clazz);\n        assertEquals(\"{\\\"ages\\\":{\\\"first\\\":18,\\\"last\\\":0,\\\"start\\\":18,\\\"step\\\":1},\\\"distance\\\":{\\\"first\\\":5,\\\"last\\\":0,\\\"start\\\":5,\\\"step\\\":1}}\", JSON.toJSONString(obj));\n    }\n\n    public static class ExtClassLoader extends ClassLoader {\n\n        public ExtClassLoader() throws IOException {\n            super(Thread.currentThread().getContextClassLoader());\n\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"kotlin/ClassWithRanges.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n\n                super.defineClass(\"ClassWithRanges\", bytes, 0, bytes.length);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/kotlin/ClassWithTripleTest.java",
    "content": "package com.alibaba.json.bvt.kotlin;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.apache.commons.io.IOUtils;\n\nimport java.io.IOException;\nimport java.io.InputStream;\n\n/**\n * Created by wenshao on 06/08/2017.\n */\npublic class ClassWithTripleTest extends TestCase {\n    public void test_user() throws Exception {\n        ExtClassLoader classLoader = new ExtClassLoader();\n        Class clazz = classLoader.loadClass(\"ClassWithTriple\");\n\n        String json = \"{\\\"name\\\":{\\\"first\\\":\\\"wen\\\",\\\"second\\\":\\\"shaojin\\\",\\\"third\\\":99}}\";\n        Object obj = JSON.parseObject(json, clazz);\n        assertEquals(\"{\\\"age\\\":0,\\\"name\\\":{\\\"first\\\":\\\"wen\\\",\\\"second\\\":\\\"shaojin\\\",\\\"third\\\":\\\"99\\\"}}\", JSON.toJSONString(obj));\n    }\n\n    public static class ExtClassLoader extends ClassLoader {\n\n        public ExtClassLoader() throws IOException {\n            super(Thread.currentThread().getContextClassLoader());\n\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"kotlin/ClassWithTriple.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n\n                super.defineClass(\"ClassWithTriple\", bytes, 0, bytes.length);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/kotlin/Class_WithPrimaryAndSecondaryConstructorTest.java",
    "content": "package com.alibaba.json.bvt.kotlin;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.apache.commons.io.IOUtils;\n\nimport java.io.IOException;\nimport java.io.InputStream;\n\n/**\n * Created by wenshao on 06/08/2017.\n */\npublic class Class_WithPrimaryAndSecondaryConstructorTest extends TestCase {\n    public void test_user() throws Exception {\n        ExtClassLoader classLoader = new ExtClassLoader();\n        Class clazz = classLoader.loadClass(\"Class_WithPrimaryAndSecondaryConstructor\");\n\n        String json = \"{\\\"name\\\":\\\"John Smith\\\",\\\"age\\\":30}\";\n        Object obj = JSON.parseObject(json, clazz);\n        assertEquals(\"{\\\"age\\\":30,\\\"name\\\":\\\"John Smith\\\"}\", JSON.toJSONString(obj));\n    }\n\n    public static class ExtClassLoader extends ClassLoader {\n\n        public ExtClassLoader() throws IOException {\n            super(Thread.currentThread().getContextClassLoader());\n\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"kotlin/Class_WithPrimaryAndSecondaryConstructor.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n\n                super.defineClass(\"Class_WithPrimaryAndSecondaryConstructor\", bytes, 0, bytes.length);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/kotlin/DataClassSimpleTest.java",
    "content": "package com.alibaba.json.bvt.kotlin;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.util.ASMUtils;\nimport junit.framework.TestCase;\nimport org.apache.commons.io.IOUtils;\n\nimport java.io.ByteArrayInputStream;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * Created by wenshao on 05/08/2017.\n */\npublic class DataClassSimpleTest extends TestCase {\n\n    public void test_user() throws Exception {\n        ExtClassLoader classLoader = new ExtClassLoader();\n        Class clazz = classLoader.loadClass(\"DataClassSimple\");\n\n        String[] names = ASMUtils.lookupParameterNames(clazz.getConstructors()[0]);\n        System.out.println(JSON.toJSONString(names));\n\n        String json = \"{\\\"a\\\":1001,\\\"b\\\":1002}\";\n        Object obj = JSON.parseObject(json, clazz);\n        assertEquals(\"{\\\"a\\\":1001,\\\"b\\\":1002}\", JSON.toJSONString(obj));\n\n    }\n\n    public static class ExtClassLoader extends ClassLoader {\n        Map<String, byte[]> resources = new HashMap<String, byte[]>();\n\n        public ExtClassLoader() throws IOException {\n            super(Thread.currentThread().getContextClassLoader());\n\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"kotlin/DataClassSimple.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n\n                resources.put(\"DataClassSimple.class\", bytes);\n\n                super.defineClass(\"DataClassSimple\", bytes, 0, bytes.length);\n            }\n        }\n\n        public InputStream getResourceAsStream(String name) {\n            byte[] bytes = resources.get(name);\n            if (bytes != null) {\n                return new ByteArrayInputStream(bytes);\n            }\n            return super.getResourceAsStream(name);\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/kotlin/DataClassTest.java",
    "content": "package com.alibaba.json.bvt.kotlin;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.apache.commons.io.IOUtils;\n\nimport java.io.IOException;\nimport java.io.InputStream;\n\n/**\n * Created by wenshao on 05/08/2017.\n */\npublic class DataClassTest extends TestCase {\n\n    public void test_user() throws Exception {\n        ExtClassLoader classLoader = new ExtClassLoader();\n        Class clazz = classLoader.loadClass(\"DataClass\");\n\n        String json = \"{\\\"aa\\\":1001,\\\"bb\\\":1002}\";\n        Object obj = JSON.parseObject(json, clazz);\n        assertEquals(\"{\\\"aa\\\":1001,\\\"bb\\\":1002}\", JSON.toJSONString(obj));\n    }\n\n    public static class ExtClassLoader extends ClassLoader {\n\n        public ExtClassLoader() throws IOException {\n            super(Thread.currentThread().getContextClassLoader());\n\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"kotlin/DataClass.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n\n                super.defineClass(\"DataClass\", bytes, 0, bytes.length);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/kotlin/Issue1420.java",
    "content": "package com.alibaba.json.bvt.kotlin;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.apache.commons.io.IOUtils;\n\nimport java.io.IOException;\nimport java.io.InputStream;\n\npublic class Issue1420 extends TestCase {\n    public void test_for_issue() throws Exception {\n        ExtClassLoader classLoader = new ExtClassLoader();\n        Class clazz = classLoader.loadClass(\"A\");\n\n        String json = \"{\\\"id\\\":1,\\\"name\\\":\\\"a\\\"}\";\n        Object obj = JSON.parseObject(json, clazz);\n        assertEquals(\"{\\\"id\\\":1,\\\"name\\\":\\\"a\\\"}\", JSON.toJSONString(obj));\n    }\n\n    public static class ExtClassLoader extends ClassLoader {\n\n        public ExtClassLoader() throws IOException {\n            super(Thread.currentThread().getContextClassLoader());\n\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"kotlin/A.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n\n                super.defineClass(\"A\", bytes, 0, bytes.length);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/kotlin/Issue1462.java",
    "content": "package com.alibaba.json.bvt.kotlin;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.apache.commons.io.IOUtils;\n\nimport java.io.IOException;\nimport java.io.InputStream;\n\n/**\n * Created by wenshao on 05/08/2017.\n */\npublic class Issue1462 extends TestCase {\n\n    public void test_user() throws Exception {\n        ExtClassLoader classLoader = new ExtClassLoader();\n        Class clazz = classLoader.loadClass(\"ObjectA\");\n\n        String json = \"{\\\"a\\\":1001,\\\"b\\\":1002}\";\n        Object obj = JSON.parseObject(json, clazz);\n        assertEquals(\"{\\\"a\\\":\\\"b\\\",\\\"b\\\":\\\"b\\\"}\", JSON.toJSONString(obj));\n    }\n\n    public static class ExtClassLoader extends ClassLoader {\n\n        public ExtClassLoader() throws IOException {\n            super(Thread.currentThread().getContextClassLoader());\n\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"kotlin/ObjectA.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n\n                super.defineClass(\"ObjectA\", bytes, 0, bytes.length);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/kotlin/Issue1483.java",
    "content": "package com.alibaba.json.bvt.kotlin;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\nimport org.apache.commons.io.IOUtils;\n\nimport java.io.IOException;\nimport java.io.InputStream;\n\n/**\n * Created by wenshao on 05/08/2017.\n */\npublic class Issue1483 extends TestCase {\n\n    public void test_user() throws Exception {\n        ExtClassLoader classLoader = new ExtClassLoader();\n        Class clazz = classLoader.loadClass(\"Person\");\n\n        String json = \"{\\\"age\\\":99,\\\"name\\\":\\\"robohorse\\\",\\\"desc\\\":\\\"xx\\\"}\";\n        Object obj = JSON.parseObject(json, clazz);\n        assertSame(clazz, obj.getClass());\n//\n        for (int i = 0; i < 10; ++i) {\n            String text = JSON.parseObject(JSON.toJSONString(obj), Feature.OrderedField).toJSONString();\n            assertEquals(\"{\\\"age\\\":99,\\\"desc\\\":\\\"xx\\\",\\\"name\\\":\\\"robohorse\\\"}\", text);\n        }\n    }\n\n    public static class ExtClassLoader extends ClassLoader {\n\n        public ExtClassLoader() throws IOException {\n            super(Thread.currentThread().getContextClassLoader());\n\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"kotlin/Person.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n\n                super.defineClass(\"Person\", bytes, 0, bytes.length);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/kotlin/Issue1524.java",
    "content": "package com.alibaba.json.bvt.kotlin;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.apache.commons.io.IOUtils;\n\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.lang.reflect.Constructor;\n\npublic class Issue1524 extends TestCase {\n    public void test_user() throws Exception {\n        ExtClassLoader classLoader = new ExtClassLoader();\n        Class clazz = classLoader.loadClass(\"DataClass\");\n\n        Constructor constructor = clazz.getConstructor(String.class, String.class);\n        Object object = constructor.newInstance(\"ccc\", \"ddd\");\n        String json = JSON.toJSONString(object);\n        assertEquals(\"{\\\"Id\\\":\\\"ccc\\\",\\\"Name\\\":\\\"ddd\\\"}\", json);\n\n        Object object2 = JSON.parseObject(json, clazz);\n        String json2 = JSON.toJSONString(object2);\n        assertEquals(\"{\\\"Id\\\":\\\"ccc\\\",\\\"Name\\\":\\\"ddd\\\"}\", json2);\n    }\n\n    public static class ExtClassLoader extends ClassLoader {\n\n        public ExtClassLoader() throws IOException {\n            super(Thread.currentThread().getContextClassLoader());\n\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"kotlin/issue1526/DataClass.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n\n                super.defineClass(\"DataClass\", bytes, 0, bytes.length);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/kotlin/Issue1543.java",
    "content": "package com.alibaba.json.bvt.kotlin;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.apache.commons.io.IOUtils;\n\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic class Issue1543 extends TestCase {\n    public void test_user() throws Exception {\n        ExtClassLoader classLoader = new ExtClassLoader();\n        Class clazzUser = classLoader.loadClass(\"User1\");\n\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"id\", 1);\n        map.put(\"name\", \"test1\");\n\n        JSON.parseObject(JSON.toJSONString(map), clazzUser);\n    }\n\n    public void test_cluster() throws Exception {\n        ExtClassLoader classLoader = new ExtClassLoader();\n        Class clazzCluster = classLoader.loadClass(\"Cluster\");\n\n        Object cluster = JSON.parseObject(JSON.toJSONString(Collections.singletonMap(\"cluster_enabled\", 1)), clazzCluster);\n        assertEquals(\"{\\\"cluster_enabled\\\":1}\", JSON.toJSONString(cluster));\n    }\n\n    public static class ExtClassLoader extends ClassLoader {\n\n        public ExtClassLoader() throws IOException {\n            super(Thread.currentThread().getContextClassLoader());\n\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"kotlin/issue1543/User1.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n\n                super.defineClass(\"User1\", bytes, 0, bytes.length);\n            }\n\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"kotlin/issue1543/Cluster.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n\n                super.defineClass(\"Cluster\", bytes, 0, bytes.length);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/kotlin/Issue1547.java",
    "content": "package com.alibaba.json.bvt.kotlin;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.apache.commons.io.IOUtils;\n\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.lang.reflect.Constructor;\n\npublic class Issue1547 extends TestCase {\n    public void test_user() throws Exception {\n        ExtClassLoader classLoader = new ExtClassLoader();\n        Class clazz = classLoader.loadClass(\"Head\");\n\n        Object head = JSON.parseObject(\"{\\\"msg\\\":\\\"mmm\\\",\\\"code\\\":\\\"ccc\\\"}\", clazz);\n        assertEquals(\"{\\\"code\\\":\\\"ccc\\\",\\\"msg\\\":\\\"mmm\\\"}\", JSON.toJSONString(head));\n    }\n\n    public static class ExtClassLoader extends ClassLoader {\n\n        public ExtClassLoader() throws IOException {\n            super(Thread.currentThread().getContextClassLoader());\n\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"kotlin/issue1547/Head.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n\n                super.defineClass(\"Head\", bytes, 0, bytes.length);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/kotlin/Issue1569.java",
    "content": "package com.alibaba.json.bvt.kotlin;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.apache.commons.io.IOUtils;\n\nimport java.io.IOException;\nimport java.io.InputStream;\n\npublic class Issue1569 extends TestCase {\n    public void test_user() throws Exception {\n        ExtClassLoader classLoader = new ExtClassLoader();\n        Class clazz = classLoader.loadClass(\"Issue1569_User\");\n\n        String json = \"{\\\"loginName\\\":\\\"san\\\",\\\"userId\\\":1}\";\n        Object head = JSON.parseObject(json, clazz);\n        assertEquals(json, JSON.toJSONString(head));\n    }\n\n    public static class ExtClassLoader extends ClassLoader {\n\n        public ExtClassLoader() throws IOException {\n            super(Thread.currentThread().getContextClassLoader());\n\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"kotlin/Issue1569_User.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n\n                super.defineClass(\"Issue1569_User\", bytes, 0, bytes.length);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/kotlin/Issue1750.java",
    "content": "package com.alibaba.json.bvt.kotlin;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.apache.commons.io.IOUtils;\n\nimport java.io.IOException;\nimport java.io.InputStream;\n\npublic class Issue1750 extends TestCase {\n    public void test_user() throws Exception {\n        ExtClassLoader classLoader = new ExtClassLoader();\n        Class clazz = classLoader.loadClass(\"Issue1750_ProcessBO\");\n\n        String json = \"{\\n\" +\n                \"\\t\\\"masterId\\\": \\\"1111111111111\\\",\\n\" +\n                \"\\t\\\"processId\\\": \\\"222222222222222\\\",\\n\" +\n                \"\\t\\\"taskId\\\": \\\"33333333333333\\\",\\n\" +\n                \"\\t\\\"taskName\\\": \\\"44444444444444\\\"\\n\" +\n                \"}\";\n        Object obj = JSON.parseObject(json, clazz);\n        String result = JSON.toJSONString(obj);\n        System.out.println(result);\n        assertEquals(\"{\\\"masterId\\\":\\\"1111111111111\\\",\\\"processId\\\":\\\"222222222222222\\\",\\\"taskId\\\":\\\"33333333333333\\\",\\\"taskName\\\":\\\"44444444444444\\\"}\", result);\n    }\n\n    private static class ExtClassLoader extends ClassLoader {\n\n        public ExtClassLoader() throws IOException {\n            super(Thread.currentThread().getContextClassLoader());\n\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"kotlin/Issue1750_ProcessBO.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n\n                super.defineClass(\"Issue1750_ProcessBO\", bytes, 0, bytes.length);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/kotlin/Issue_for_kotlin_20181203.java",
    "content": "package com.alibaba.json.bvt.kotlin;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport junit.framework.TestCase;\nimport org.apache.commons.io.IOUtils;\n\nimport java.io.IOException;\nimport java.io.InputStream;\n\npublic class Issue_for_kotlin_20181203 extends TestCase {\n    public void test_user() throws Exception {\n        ExtClassLoader classLoader = new ExtClassLoader();\n        Class clazz = classLoader.loadClass(\"com.autonavi.falcon.data.service.vulpeData.ProjectItemCheckItemRelation1\");\n\n        String str = \"    [{\\n\"\n                + \"        \\\"project_item\\\": \\\"1105067\\\",\\n\"\n                + \"        \\\"project_name\\\": \\\"明明想\\\",\\n\"\n                + \"        \\\"product_id_3\\\": \\\"0210202\\\",\\n\"\n                + \"        \\\"task_type_name\\\": \\\"黎明X\\\",\\n\"\n                + \"        \\\"product_id_2\\\": \\\"02102\\\",\\n\"\n                + \"        \\\"product_id_1\\\": \\\"021\\\",\\n\"\n                + \"        \\\"job_item_type\\\": \\\"高中\\\",\\n\"\n                + \"        \\\"product_name_1\\\": \\\"犀利\\\",\\n\"\n                + \"        \\\"product_name_2\\\": \\\"基础路网\\\",\\n\"\n                + \"        \\\"unit\\\": \\\"条\\\",\\n\"\n                + \"        \\\"product_name_3\\\": \\\"到底\\\",\\n\"\n                + \"        \\\"unitremark\\\": \\\"任务条数\\\",\\n\"\n                + \"        \\\"task_type\\\": \\\"57205\\\"\\n\"\n                + \"    }]\";\n\n        System.out.println(JSON.VERSION);\n\n        Object obj = JSONArray.parseArray(str, clazz);\n        String result = JSON.toJSONString(obj);\n        System.out.println(result);\n        assertEquals(\"[{\\\"job_item_type\\\":\\\"高中\\\",\\\"product_id_1\\\":\\\"021\\\",\\\"product_id_2\\\":\\\"02102\\\",\\\"product_id_3\\\":\\\"0210202\\\",\\\"product_name_1\\\":\\\"犀利\\\",\\\"product_name_2\\\":\\\"基础路网\\\",\\\"product_name_3\\\":\\\"到底\\\",\\\"project_item\\\":\\\"1105067\\\",\\\"project_name\\\":\\\"明明想\\\",\\\"task_type\\\":\\\"57205\\\",\\\"task_type_name\\\":\\\"黎明X\\\",\\\"unit\\\":\\\"条\\\",\\\"unitremark\\\":\\\"任务条数\\\"}]\", result);\n    }\n\n    private static class ExtClassLoader extends ClassLoader {\n\n        public ExtClassLoader() throws IOException {\n            super(Thread.currentThread().getContextClassLoader());\n\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"kotlin/ProjectItemCheckItemRelation1.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n\n                super.defineClass(\"com.autonavi.falcon.data.service.vulpeData.ProjectItemCheckItemRelation1\", bytes, 0, bytes.length);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/kotlin/ResponseKotlin2Test.java",
    "content": "package com.alibaba.json.bvt.kotlin;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.apache.commons.io.IOUtils;\n\nimport java.io.IOException;\nimport java.io.InputStream;\n\n/**\n * Created by wenshao on 10/08/2017.\n */\npublic class ResponseKotlin2Test extends TestCase {\n    public void test_kotlin() throws Exception {\n        ExtClassLoader classLoader = new ExtClassLoader();\n        Class clazz = classLoader.loadClass(\"ResponseKotlin2\");\n\n        String json = \"{\\\"text\\\":\\\"robohorse\\\",\\\"value\\\":99}\";\n        Object obj = JSON.parseObject(json, clazz);\n        assertEquals(\"{\\\"text\\\":\\\"robohorse\\\",\\\"value\\\":99}\", JSON.toJSONString(obj));\n\n        String json2 = \"{\\\"text\\\":\\\"robohorse\\\"}\";\n        Object obj2 = JSON.parseObject(json2, clazz);\n        assertEquals(\"{\\\"text\\\":\\\"robohorse\\\"}\", JSON.toJSONString(obj2));\n    }\n\n    public static class ExtClassLoader extends ClassLoader {\n\n        public ExtClassLoader() throws IOException {\n            super(Thread.currentThread().getContextClassLoader());\n\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"kotlin/ResponseKotlin2.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n\n                super.defineClass(\"ResponseKotlin2\", bytes, 0, bytes.length);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/kotlin/ResponseKotlinTest.java",
    "content": "package com.alibaba.json.bvt.kotlin;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.apache.commons.io.IOUtils;\n\nimport java.io.IOException;\nimport java.io.InputStream;\n\n/**\n * Created by wenshao on 10/08/2017.\n */\npublic class ResponseKotlinTest extends TestCase {\n    public void test_kotlin() throws Exception {\n        ExtClassLoader classLoader = new ExtClassLoader();\n        Class clazz = classLoader.loadClass(\"ResponseKotlin\");\n\n        String json = \"{\\\"text\\\":\\\"robohorse\\\",\\\"value\\\":99}\";\n        Object obj = JSON.parseObject(json, clazz);\n        assertEquals(\"{\\\"text\\\":\\\"robohorse\\\",\\\"value\\\":99}\", JSON.toJSONString(obj));\n\n        String json2 = \"{\\\"text\\\":\\\"robohorse\\\"}\";\n        Object obj2 = JSON.parseObject(json2, clazz);\n        assertEquals(\"{\\\"text\\\":\\\"robohorse\\\"}\", JSON.toJSONString(obj2));\n    }\n\n    public static class ExtClassLoader extends ClassLoader {\n\n        public ExtClassLoader() throws IOException {\n            super(Thread.currentThread().getContextClassLoader());\n\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"kotlin/ResponseKotlin.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n\n                super.defineClass(\"ResponseKotlin\", bytes, 0, bytes.length);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/kotlin/Zoujing.java",
    "content": "package com.alibaba.json.bvt.kotlin;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.apache.commons.io.IOUtils;\n\nimport java.io.IOException;\nimport java.io.InputStream;\n\npublic class Zoujing extends TestCase {\n    public void test_user() throws Exception {\n        ExtClassLoader classLoader = new ExtClassLoader();\n        Class clazz = classLoader.loadClass(\"com.alidme.xrecharge.platform.common.data.NoticeData\");\n\n        String json = \"{\\\"benefitNoticeState\\\":1}\";\n        Object obj = JSON.parseObject(json, clazz);\n        String result = JSON.toJSONString(obj);\n        System.out.println(result);\n        assertEquals(\"{\\\"benefitNoticeState\\\":1,\\\"outId\\\":\\\"\\\"}\", result);\n    }\n\n    private static class ExtClassLoader extends ClassLoader {\n\n        public ExtClassLoader() throws IOException {\n            super(Thread.currentThread().getContextClassLoader());\n\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"kotlin/zuojing/NoticeData.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n\n                super.defineClass(\"com.alidme.xrecharge.platform.common.data.NoticeData\", bytes, 0, bytes.length);\n            }\n\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"kotlin/zuojing/NoticeDataKt.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n\n                super.defineClass(\"com.alidme.xrecharge.platform.common.data.NoticeDataKt\", bytes, 0, bytes.length);\n            }\n\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"kotlin/zuojing/NoticeData_Companion.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n\n                super.defineClass(\"com.alidme.xrecharge.platform.common.data.NoticeData$Companion\", bytes, 0, bytes.length);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/lombok/LomBokTest.java",
    "content": "package com.alibaba.json.bvt.lombok;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport junit.framework.TestCase;\n\npublic class LomBokTest extends TestCase {\n    public void test_for_issue() throws Exception {\n        String str = \"{\\n\" +\n                \"\\t\\\"target\\\": 1,\\n\" +\n                \"\\t\\\"current\\\": 0,\\n\" +\n                \"\\t\\\"step\\\": 1,\\n\" +\n                \"\\t\\\"uqcRule\\\": {\\n\" +\n                \"\\t\\t\\\"ruleCode\\\": \\\"IND#PAY1212#NP1D#1\\\"\\n\" +\n                \"\\t},\\n\" +\n                \"\\t\\\"cycleRule\\\": {\\n\" +\n                \"\\t\\t\\\"decision\\\": {\\\"@type\\\": \\\"com.alibaba.json.bvt.lombok.LomBokTest$DaysCycleExeDecision\\\",\\\"days\\\": 1\\n\" +\n                \"\\t\\t}\\n\" +\n                \"\\t},\\n\" +\n                \"\\t\\\"dataSource\\\": {\\n\" +\n                \"\\t\\t\\\"PAYLINK\\\": {\\n\" +\n                \"\\t\\t\\t\\\"target\\\": 0\\n\" +\n                \"\\t\\t}\\n\" +\n                \"\\t}\\n\" +\n                \"}\";\n        ParserConfig.getGlobalInstance().addAccept(\"com.alibaba.json.bvt.lombok.LomBokTest.DaysCycleExeDecision\");\n        JSONObject obj = JSON.parseObject(str);\n        IndicatorCycleRule cycleRule = obj.getObject(\"cycleRule\", IndicatorCycleRule.class);\n        System.out.println(((DaysCycleExeDecision) cycleRule.decision).days);\n    }\n\n    @lombok.Data\n    public static class DaysCycleExeDecision implements ExeDecision {\n        private int days;\n    }\n\n    public static interface ExeDecision {\n\n    }\n\n    @lombok.Data\n    public static class IndicatorCycleRule {\n\n        /**\n         * 周期决策器\n         */\n        private ExeDecision decision;\n\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/mixins/MixInRemovalTest.java",
    "content": "package com.alibaba.json.bvt.mixins;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\npublic class MixInRemovalTest extends TestCase {\n    static class BaseClass {\n        public int a;\n        public int b;\n\n        public  BaseClass() {\n\n        }\n\n        public BaseClass(int a, int b) {\n            this.a = a;\n            this.b = b;\n        }\n    }\n\n    class MixIn1 {\n        @JSONField(name = \"apple\")\n        public int a;\n        @JSONField(name = \"banana\")\n        public int b;\n    }\n\n    class MixIn2 {\n        @JSONField(name = \"ariston\")\n        public int a;\n        @JSONField(name = \"brilliant\")\n        public int b;\n    }\n\n    public void test_mixInRemoval_serialize() throws Exception {\n        BaseClass base = new BaseClass(1, 2);\n        Assert.assertEquals(\"{\\\"a\\\":1,\\\"b\\\":2}\", JSON.toJSONString(base));\n\n        JSON.addMixInAnnotations(BaseClass.class, MixIn1.class);\n        Assert.assertEquals(\"{\\\"apple\\\":1,\\\"banana\\\":2}\", JSON.toJSONString(base));\n        JSON.removeMixInAnnotations(BaseClass.class);\n\n        JSON.addMixInAnnotations(BaseClass.class, MixIn2.class);\n        Assert.assertEquals(\"{\\\"ariston\\\":1,\\\"brilliant\\\":2}\", JSON.toJSONString(base));\n        JSON.removeMixInAnnotations(BaseClass.class);\n\n        Assert.assertEquals(\"{\\\"a\\\":1,\\\"b\\\":2}\", JSON.toJSONString(base));\n    }\n\n    public void test_mixInRemoval_deserialize() throws Exception {\n        BaseClass base = JSON.parseObject(\"{\\\"a\\\":1,\\\"b\\\":2}\", BaseClass.class);\n        Assert.assertEquals(1, base.a);\n        Assert.assertEquals(2, base.b);\n\n        JSON.addMixInAnnotations(BaseClass.class, MixIn1.class);\n        BaseClass base2 = JSON.parseObject(\"{\\\"apple\\\":3,\\\"banana\\\":4}\", BaseClass.class);\n        Assert.assertEquals(3, base2.a);\n        Assert.assertEquals(4, base2.b);\n        JSON.removeMixInAnnotations(BaseClass.class);\n\n        JSON.addMixInAnnotations(BaseClass.class, MixIn2.class);\n        BaseClass base3 = JSON.parseObject(\"{\\\"ariston\\\":5,\\\"brilliant\\\":6}\", BaseClass.class);\n        Assert.assertEquals(5, base3.a);\n        Assert.assertEquals(6, base3.b);\n        JSON.removeMixInAnnotations(BaseClass.class);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/mixins/MixinAPITest.java",
    "content": "package com.alibaba.json.bvt.mixins;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\npublic class MixinAPITest extends TestCase  {\n\n    static class BaseClass {\n        public int a;\n        public int b;\n\n        public  BaseClass() {\n\n        }\n\n        public BaseClass(int a, int b) {\n            this.a = a;\n            this.b = b;\n        }\n    }\n\n    class MixIn1 {\n        @JSONField(name = \"apple\")\n        public int a;\n        @JSONField(name = \"banana\")\n        public int b;\n    }\n\n\n    public void test_mixIn_get_methods() throws Exception {\n        BaseClass base = new BaseClass(1, 2);\n\n        JSON.addMixInAnnotations(BaseClass.class, MixIn1.class);\n        Assert.assertEquals(\"{\\\"apple\\\":1,\\\"banana\\\":2}\", JSON.toJSONString(base));\n        Assert.assertTrue(MixIn1.class == JSON.getMixInAnnotations(BaseClass.class));\n\n        JSON.clearMixInAnnotations();\n        Assert.assertTrue(null == JSON.getMixInAnnotations(BaseClass.class));\n\n       JSON.removeMixInAnnotations(BaseClass.class);\n    }\n}\n\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/mixins/MixinDeserForClassTest.java",
    "content": "package com.alibaba.json.bvt.mixins;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\n\npublic class MixinDeserForClassTest extends TestCase {\n    static class BaseClass {\n        @JSONField( deserialize = true )\n        public String a;\n\n        @JSONField( deserialize = false, name = \"a\" )\n        public void setA( String v ) {\n            a = \"XXX\" + v;\n        }\n    }\n\n    static class BaseClass1 {\n        @JSONField( deserialize = false )\n        public String a;\n\n        @JSONField( deserialize = true, name = \"a\" )\n        public void setA( String v ) {\n            a = \"XXX\" + v;\n        }\n    }\n\n    static class Mixin {\n        @JSONField( deserialize = false )\n        public String a;\n\n        @JSONField( deserialize = true, name = \"a\" )\n        public void setA( String v ) {\n        }\n    }\n\n    public void test_1() throws Exception {\n        BaseClass1 base = JSON.parseObject( \"{\\\"a\\\":\\\"132\\\"}\", BaseClass1.class );\n        Assert.assertEquals( \"XXX132\", base.a );\n    }\n\n    public void test_2() throws Exception {\n        JSON.addMixInAnnotations(BaseClass.class, Mixin.class);\n        BaseClass base = JSON.parseObject( \"{\\\"a\\\":\\\"132\\\"}\", BaseClass.class );\n        Assert.assertEquals( \"XXX132\", base.a );\n        JSON.removeMixInAnnotations(BaseClass.class);\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/mixins/MixinDeserForMethodsTest.java",
    "content": "package com.alibaba.json.bvt.mixins;\n\nimport java.util.HashMap;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\n\npublic class MixinDeserForMethodsTest extends TestCase {\n\n    static class BaseClass {\n        protected HashMap<String, Object> values = new HashMap<String, Object>();\n\n        @JSONCreator\n        public BaseClass( @JSONField( name = \"name\" ) String name,@JSONField( name = \"age\" ) String age,\n                @JSONField( name = \"student\" ) Object student ) {\n            values.put( \"name\", name );\n            values.put( \"age\", age );\n            values.put( \"student\", student );\n        }\n    }\n\n    static class BaseClass2 {\n        protected HashMap<String, Object> values = new HashMap<String, Object>();\n\n        public BaseClass2( String name,String age,Object student ) {\n            values.put( \"name\", name );\n            values.put( \"age\", age );\n            values.put( \"student\", student );\n        }\n    }\n\n    class MixIn {\n        @JSONCreator\n        MixIn( @JSONField( name = \"name\" ) String name,@JSONField( name = \"age\" ) String age,\n                @JSONField( name = \"student\" ) Object student ) {\n        };\n    }\n\n    public void test_0() throws Exception {\n        BaseClass result = JSON.parseObject( \"{ \\\"name\\\" : \\\"David\\\", \\\"age\\\" : 13, \\\"student\\\" : true }\",\n                BaseClass.class );\n        Assert.assertNotNull( result );\n        Assert.assertEquals( 3, result.values.size() );\n        Assert.assertEquals( \"David\", result.values.get( \"name\" ) );\n        Assert.assertEquals( \"13\", result.values.get( \"age\" ) );\n        Assert.assertEquals( Boolean.TRUE, result.values.get( \"student\" ) );\n    }\n\n    public void test_1() throws Exception {\n        JSON.addMixInAnnotations(BaseClass2.class, MixIn.class);\n        BaseClass2 result = JSON.parseObject( \"{ \\\"name\\\" : \\\"David\\\", \\\"age\\\" : 13, \\\"student\\\" : true }\",\n                BaseClass2.class );\n        Assert.assertNotNull( result );\n        Assert.assertEquals( 3, result.values.size() );\n        Assert.assertEquals( \"David\", result.values.get( \"name\" ) );\n        Assert.assertEquals( \"13\", result.values.get( \"age\" ) );\n        Assert.assertEquals( Boolean.TRUE, result.values.get( \"student\" ) );\n        JSON.removeMixInAnnotations(BaseClass2.class);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/mixins/MixinInheritanceTest.java",
    "content": "package com.alibaba.json.bvt.mixins;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\npublic class MixinInheritanceTest extends TestCase {\n    static class Beano {\n        public int ido = 42;\n        public String nameo = \"Bob\";\n    }\n\n    static class BeanoMixinSuper {\n        @JSONField(name = \"name\")\n        public String nameo;\n    }\n\n    static class BeanoMixinSub extends BeanoMixinSuper {\n        @JSONField(name = \"id\")\n        public int ido;\n    }\n\n    static class Beano2 {\n        public int getIdo() { return 13; }\n        public String getNameo() { return \"Bill\"; }\n    }\n\n    static abstract class BeanoMixinSuper2 extends Beano2 {\n        @Override\n        @JSONField(name = \"name\")\n        public abstract String getNameo();\n    }\n\n    static abstract class BeanoMixinSub2 extends BeanoMixinSuper2 {\n        @Override\n        @JSONField(name = \"id\")\n        public abstract int getIdo();\n    }\n\n    public void test_field() throws Exception {\n        JSON.addMixInAnnotations(Beano.class, BeanoMixinSub.class);\n        String str = JSON.toJSONString(new Beano());\n        JSONObject result = JSONObject.parseObject(str);\n        assertEquals(2, result.size());\n        if (!result.containsKey(\"id\")\n                || !result.containsKey(\"name\")) {\n            fail(\"Should have both 'id' and 'name', but content = \" + result);\n        }\n        JSON.removeMixInAnnotations(Beano.class);\n    }\n\n    public void test_method() throws Exception {\n        JSON.addMixInAnnotations(Beano2.class, BeanoMixinSub2.class);\n        String str = JSON.toJSONString(new Beano2());\n        JSONObject result = JSONObject.parseObject(str);\n        assertEquals(2, result.size());\n        assertTrue(result.containsKey(\"id\"));\n        assertTrue(result.containsKey(\"name\"));\n        JSON.removeMixInAnnotations(Beano2.class);\n    }\n\n    static class BaseClass {\n        public int a;\n        public int b;\n        public int c;\n\n        public  BaseClass() {\n\n        }\n        public BaseClass(int a, int b,int c) {\n            this.a = a;\n            this.b = b;\n            this.c = c;\n        }\n    }\n\n    class BaseMixIn {\n        @JSONField(name = \"apple\")\n        public int a;\n        @JSONField(name = \"banana\")\n        public int b;\n    }\n\n    class SubMixIn extends BaseMixIn {\n        @JSONField(name = \"pear\")\n        public int c;\n    }\n\n    class SubMixIn1 extends SubMixIn {\n        @JSONField(name = \"watermelon\")\n        public int b;\n    }\n\n    public void test_mixIn_extend() throws Exception {\n        BaseClass base = new BaseClass(1, 2,3);\n        Assert.assertEquals(\"{\\\"a\\\":1,\\\"b\\\":2,\\\"c\\\":3}\", JSON.toJSONString(base));\n\n        JSON.addMixInAnnotations(BaseClass.class, SubMixIn.class);\n        Assert.assertEquals(\"{\\\"apple\\\":1,\\\"banana\\\":2,\\\"pear\\\":3}\", JSON.toJSONString(base));\n        JSON.removeMixInAnnotations(BaseClass.class);\n    }\n\n    public void test_mixIn_extend1() throws Exception {\n        BaseClass base = new BaseClass(1, 2,3);\n        Assert.assertEquals(\"{\\\"a\\\":1,\\\"b\\\":2,\\\"c\\\":3}\", JSON.toJSONString(base));\n\n        JSON.addMixInAnnotations(BaseClass.class, SubMixIn1.class);\n        Assert.assertEquals(\"{\\\"apple\\\":1,\\\"pear\\\":3,\\\"watermelon\\\":2}\", JSON.toJSONString(base));\n        JSON.removeMixInAnnotations(BaseClass.class);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/mixins/MixinJSONTypeTest.java",
    "content": "package com.alibaba.json.bvt.mixins;\n\nimport com.alibaba.fastjson.annotation.JSONPOJOBuilder;\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class MixinJSONTypeTest extends TestCase {\n\tpublic void test_1() {\n\t\tUser user1 = new User(\"zhangsan\", \"male\", 19);\n\t\tAssert.assertEquals(\"{\\\"age\\\":19,\\\"sex\\\":\\\"male\\\",\\\"userName\\\":\\\"zhangsan\\\"}\", JSON.toJSONString(user1));\n\n\t\tJSON.addMixInAnnotations(user1.getClass(), Mixin.class);\n\t\tAssert.assertEquals(\"{\\\"age\\\":19,\\\"userName\\\":\\\"zhangsan\\\",\\\"sex\\\":\\\"male\\\"}\", JSON.toJSONString(user1));\n\n\t\tJSON.removeMixInAnnotations(user1.getClass());\n\t}\n\n\tpublic void test_2() {\n\t\tUser user1 = new User(\"lisi\", \"male\", 20);\n\t\tAssert.assertEquals(\"{\\\"age\\\":20,\\\"sex\\\":\\\"male\\\",\\\"userName\\\":\\\"lisi\\\"}\", JSON.toJSONString(user1));\n\n\t\tJSON.addMixInAnnotations(user1.getClass(), Mixin2.class);\n\t\tAssert.assertEquals(\"{\\\"userName\\\":\\\"lisi\\\"}\", JSON.toJSONString(user1));\n\n\t\tJSON.removeMixInAnnotations(user1.getClass());\n\t}\n\n\tpublic void test_3() {\n\t\tUser user1 = new User(\"wangwu\", \"male\", 31);\n\t\tAssert.assertEquals(\"{\\\"age\\\":31,\\\"sex\\\":\\\"male\\\",\\\"userName\\\":\\\"wangwu\\\"}\", JSON.toJSONString(user1));\n\n\t\tJSON.addMixInAnnotations(user1.getClass(), Mixin3.class);\n\t\tAssert.assertEquals(\"{\\\"age\\\":31,\\\"sex\\\":\\\"male\\\"}\", JSON.toJSONString(user1));\n\n\t\tJSON.removeMixInAnnotations(user1.getClass());\n\t}\n\n\tpublic void test_4() throws Exception {\n\t\tJSON.addMixInAnnotations(VO.class, Mixin5.class);\n\t\tJSON.addMixInAnnotations(VOBuilder.class, Mixin6.class);\n\n\t\tVO vo = JSON.parseObject(\"{\\\"id\\\":12304,\\\"name\\\":\\\"ljw\\\"}\", VO.class);\n\n\t\tAssert.assertEquals(12304, vo.getId());\n\t\tAssert.assertEquals(\"ljw\", vo.getName());\n\n\t\tJSON.removeMixInAnnotations(VO.class);\n\t\tJSON.removeMixInAnnotations(VOBuilder.class);\n\t}\n\n\t@JSONType(serialzeFeatures = { SerializerFeature.QuoteFieldNames })\n\tpublic class User {\n\t\tprivate String userName;\n\t\tprivate String sex;\n\t\tprivate int age;\n\n\t\tpublic User(String userName, String sex, int age) {\n\t\t\tthis.userName = userName;\n\t\t\tthis.sex = sex;\n\t\t\tthis.age = age;\n\t\t}\n\n\t\tpublic String getUserName() {\n\t\t\treturn userName;\n\t\t}\n\n\t\tpublic void setUserName(String userName) {\n\t\t\tthis.userName = userName;\n\t\t}\n\n\t\tpublic String getSex() {\n\t\t\treturn sex;\n\t\t}\n\n\t\tpublic void setSex(String sex) {\n\t\t\tthis.sex = sex;\n\t\t}\n\n\t\tpublic int getAge() {\n\t\t\treturn age;\n\t\t}\n\n\t\tpublic void setAge(int age) {\n\t\t\tthis.age = age;\n\t\t}\n\n\t}\n\n\t@JSONType(orders = { \"age\", \"userName\", \"sex\" })\n\tinterface Mixin {\n\t}\n\n\t@JSONType(includes = { \"userName\" })\n\tinterface Mixin2 {\n\t}\n\n\t@JSONType(ignores = { \"userName\" })\n\tinterface Mixin3 {\n\t}\n\n\t@JSONType(serialzeFeatures = { SerializerFeature.PrettyFormat })\n\tinterface Mixin4 {\n\t}\n\n\tpublic static class VO {\n\t\tprivate int id;\n\t\tprivate String name;\n\n\t\tpublic int getId() {\n\t\t\treturn id;\n\t\t}\n\n\t\tpublic String getName() {\n\t\t\treturn name;\n\t\t}\n\t}\n\n\tprivate static class VOBuilder {\n\n\t\tprivate VO vo = new VO();\n\n\t\tpublic VO xxx() {\n\t\t\treturn vo;\n\t\t}\n\n\t\tpublic VOBuilder withId(int id) {\n\t\t\tvo.id = id;\n\t\t\treturn this;\n\t\t}\n\n\t\tpublic VOBuilder withName(String name) {\n\t\t\tvo.name = name;\n\t\t\treturn this;\n\t\t}\n\t}\n\n\t@JSONType(builder= VOBuilder.class)\n\tclass Mixin5{ }\n\t@JSONPOJOBuilder(buildMethod=\"xxx\")\n\tclass Mixin6{ }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/mixins/MixinMergingTest.java",
    "content": "package com.alibaba.json.bvt.mixins;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\npublic class MixinMergingTest extends TestCase\n{\n    public interface Contact {\n        String getCity();\n    }\n\n    static class ContactImpl implements Contact {\n        @Override\n        public String getCity() { return \"Seattle\"; }\n    }\n\n    static class ContactMixin implements Contact {\n        @Override\n        @JSONField\n        public String getCity() { return null; }\n    }\n\n    public interface Person extends Contact {}\n\n    static class PersonImpl extends ContactImpl implements Person {}\n\n    static class PersonMixin extends ContactMixin implements Person {}\n\n    public void test() throws Exception {\n        JSON.addMixInAnnotations(Person.class, PersonMixin.class);\n        assertEquals(\"{\\\"city\\\":\\\"Seattle\\\"}\", JSON.toJSONString(new PersonImpl()));\n        JSON.removeMixInAnnotations(Person.class);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/mixins/MixinSerForFieldsTest.java",
    "content": "package com.alibaba.json.bvt.mixins;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\n\npublic class MixinSerForFieldsTest extends TestCase {\n    static class BeanClass {\n        public String a;\n        public String b;\n\n        public BeanClass(String a, String b) {\n            this.a = a;\n            this.b = b;\n        }\n    }\n\n    abstract class MixIn {\n        @JSONField(serialize = false)\n        public String a;\n        @JSONField(name = \"banana\")\n        public String b;\n    }\n\n    public void test() throws Exception{\n        BeanClass bean = new BeanClass(\"1\", \"2\");\n\n        JSON.addMixInAnnotations(BeanClass.class, MixIn.class);\n        String jsonString = JSON.toJSONString(bean);\n        JSONObject result = JSON.parseObject(jsonString);\n        assertEquals(1, result.size());\n        assertEquals(\"2\", result.get(\"banana\"));\n        JSON.removeMixInAnnotations(BeanClass.class);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/mixins/MixinSerForMethodsTest.java",
    "content": "package com.alibaba.json.bvt.mixins;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\n\npublic class MixinSerForMethodsTest extends TestCase {\n\n    @SuppressWarnings( \"unused\" )\n    static class BaseClass {\n        private String a;\n        private String b;\n\n        protected BaseClass() {\n        }\n\n        public BaseClass( String a,String b ) {\n            this.a = a;\n            this.b = b;\n        }\n\n        @JSONField( name = \"b\" )\n        public String takeB() {\n            return b;\n        }\n    }\n\n    static class BaseClass2 {\n        private String a;\n        private String b;\n\n        protected BaseClass2() {\n        }\n\n        public BaseClass2( String a,String b ) {\n            this.a = a;\n            this.b = b;\n        }\n\n        @JSONField( name = \"b\" )\n        public String takeB() {\n            return b;\n        }\n\n        @JSONField( name = \"a\" )\n        public String takeA() {\n            return a;\n        }\n    }\n\n    abstract static class MixIn {\n        String a;\n\n        @JSONField( name = \"b2\" )\n        public abstract String takeB();\n\n        abstract String takeA();\n    }\n\n    public void test() throws Exception{\n        BaseClass bean = new BaseClass( \"a1\", \"b2\" );\n\n        String jsonString = JSON.toJSONString( bean );\n        JSONObject result = JSON.parseObject( jsonString );\n        assertEquals( 1, result.size() );\n        assertEquals( \"b2\", result.get( \"b\" ) );\n\n        BaseClass2 bean2 = new BaseClass2( \"a1\", \"b2\" );\n        JSON.addMixInAnnotations( BaseClass2.class, MixIn.class );\n        jsonString = JSON.toJSONString( bean2 );\n        result = JSON.parseObject( jsonString );\n        assertEquals( 2, result.size() );\n        assertEquals( \"b2\", result.get( \"b2\" ) );\n        assertEquals( \"a1\", result.get( \"a\" ) );\n        JSON.removeMixInAnnotations( BaseClass.class );\n    }\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/naming/ListCaseTest.java",
    "content": "package com.alibaba.json.bvt.naming;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\n/**\n * Created by wenshao on 09/02/2017.\n */\npublic class ListCaseTest extends TestCase {\n    public void test_0() throws Exception {\n        String result = \"{\\\"code\\\":\\\"SUCCESS\\\",\\\"msg\\\":\\\"success\\\",\\\"SUCCESS\\\":true,\\\"obj\\\":[\\\"10.55.251.213\\\"]}\";\n        T4QueryResult t4TaskApiResult = JSON.parseObject(result, T4QueryResult.class);\n        System.out.println(JSON.toJSONString(t4TaskApiResult));\n\n    }\n\n    public static class Model {\n        public List<String> values;\n    }\n\n    public static class T4QueryResult {\n\n        @JSONField(name = \"OBJ\")\n        private List<String> obj;\n\n        @JSONField(name = \"MSG\")\n        private String       msg;\n\n        @JSONField(name = \"CODE\")\n        private String       code;\n\n        @JSONField(name = \"SUCCESS\")\n        private Boolean      success;\n\n        public List<String> getObj() {\n            return obj;\n        }\n\n        public void setObj(List<String> obj) {\n            this.obj = obj;\n        }\n\n        public String getMsg() {\n            return msg;\n        }\n\n        public void setMsg(String msg) {\n            this.msg = msg;\n        }\n\n        public String getCode() {\n            return code;\n        }\n\n        public void setCode(String code) {\n            this.code = code;\n        }\n\n        public Boolean getSuccess() {\n            return success;\n        }\n\n        public void setSuccess(Boolean success) {\n            this.success = success;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/naming/NamingSerTest.java",
    "content": "package com.alibaba.json.bvt.naming;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.PropertyNamingStrategy;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\n\nimport junit.framework.TestCase;\n\npublic class NamingSerTest extends TestCase {\n\n    public void test_snake() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.propertyNamingStrategy = PropertyNamingStrategy.SnakeCase;\n\n        Model model = new Model();\n        model.personId = 1001;\n        String text = JSON.toJSONString(model, config);\n        Assert.assertEquals(\"{\\\"person_id\\\":1001}\", text);\n\n        ParserConfig parserConfig = new ParserConfig();\n        parserConfig.propertyNamingStrategy = PropertyNamingStrategy.SnakeCase;\n        Model model2 = JSON.parseObject(text, Model.class, parserConfig);\n        Assert.assertEquals(model.personId, model2.personId);\n\n        Model model3 = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(model.personId, model3.personId);\n    }\n\n    public void test_kebab() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.propertyNamingStrategy = PropertyNamingStrategy.KebabCase;\n\n        Model model = new Model();\n        model.personId = 1001;\n        String text = JSON.toJSONString(model, config);\n        Assert.assertEquals(\"{\\\"person-id\\\":1001}\", text);\n        \n        ParserConfig parserConfig = new ParserConfig();\n        parserConfig.propertyNamingStrategy = PropertyNamingStrategy.KebabCase;\n        Model model2 = JSON.parseObject(text, Model.class, parserConfig);\n        Assert.assertEquals(model.personId, model2.personId);\n\n        Model model3 = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(model.personId, model3.personId);\n    }\n\n    public void test_pascal() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.propertyNamingStrategy = PropertyNamingStrategy.PascalCase;\n\n        Model model = new Model();\n        model.personId = 1001;\n        String text = JSON.toJSONString(model, config);\n        Assert.assertEquals(\"{\\\"PersonId\\\":1001}\", text);\n        \n        ParserConfig parserConfig = new ParserConfig();\n        parserConfig.propertyNamingStrategy = PropertyNamingStrategy.PascalCase;\n        Model model2 = JSON.parseObject(text, Model.class, parserConfig);\n        Assert.assertEquals(model.personId, model2.personId);\n\n        Model model3 = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(model.personId, model3.personId);\n    }\n\n    public void test_camel() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.propertyNamingStrategy = PropertyNamingStrategy.CamelCase;\n\n        Model model = new Model();\n        model.personId = 1001;\n        String text = JSON.toJSONString(model, config);\n        Assert.assertEquals(\"{\\\"personId\\\":1001}\", text);\n        \n        ParserConfig parserConfig = new ParserConfig();\n        parserConfig.propertyNamingStrategy = PropertyNamingStrategy.CamelCase;\n        Model model2 = JSON.parseObject(text, Model.class, parserConfig);\n        Assert.assertEquals(model.personId, model2.personId);\n\n        Model model3 = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(model.personId, model3.personId);\n    }\n\n    public static class Model {\n\n        public int personId;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/AEHuangliang2Test.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\nimport com.alibaba.json.bvtVO.ae.huangliang2.*;\nimport junit.framework.TestCase;\n\nimport java.lang.reflect.Type;\n\n/**\n * Created by wenshao on 09/05/2017.\n */\npublic class AEHuangliang2Test extends TestCase {\n    static String jsonData = \"{\\n\" +\n            \"    \\\"areas\\\": [\\n\" +\n            \"      {\\n\" +\n            \"        \\\"@type\\\": \\\"section\\\",\\n\" +\n            \"        \\\"templateId\\\": \\\"grid\\\",\\n\" +\n            \"        \\\"style\\\": {\\n\" +\n            \"          \\\"card\\\" : \\\"true\\\",\\n\" +\n            \"          \\\"column-count\\\":\\\"2\\\",\\n\" +\n            \"          \\\"aspect-ratio\\\":\\\"2\\\",\\n\" +\n            \"          \\\"margins\\\":\\\"16 0 16 16\\\",\\n\" +\n            \"          \\\"background-color\\\": \\\"#ffffff\\\",\\n\" +\n            \"          \\\"column-gap\\\": \\\"10\\\"\\n\" +\n            \"        },\\n\" +\n            \"        \\\"children\\\": [\\n\" +\n            \"        {\\n\" +\n            \"        \\\"@type\\\": \\\"section\\\",\\n\" +\n            \"        \\\"templateId\\\": \\\"grid\\\",\\n\" +\n            \"        \\\"style\\\": {\\n\" +\n            \"          \\\"card\\\" : \\\"true\\\",\\n\" +\n            \"          \\\"column-count\\\":\\\"2\\\",\\n\" +\n            \"          \\\"aspect-ratio\\\":\\\"2\\\",\\n\" +\n            \"          \\\"margins\\\":\\\"16 0 16 16\\\",\\n\" +\n            \"          \\\"background-color\\\": \\\"#ffffff\\\",\\n\" +\n            \"          \\\"column-gap\\\": \\\"10\\\"\\n\" +\n            \"        },\\n\" +\n            \"        \\\"children\\\": [\\n\" +\n            \"          {\\n\" +\n            \"            \\\"@type\\\": \\\"floorV2\\\",\\n\" +\n            \"            \\\"templateId\\\": \\\"base\\\",\\n\" +\n            \"            \\\"image\\\": \\\"http://xxx\\\",\\n\" +\n            \"            \\\"fields\\\": [\\n\" +\n            \"              {\\n\" +\n            \"                \\\"index\\\": 0,\\n\" +\n            \"                \\\"value\\\": \\\"xxxx\\\",\\n\" +\n            \"                \\\"type\\\": \\\"text\\\",\\n\" +\n            \"                \\\"track\\\": {\\n\" +\n            \"                  \\\"name\\\": \\\"track name\\\",\\n\" +\n            \"                  \\\"params\\\": {\\n\" +\n            \"                    \\\"trackParam1\\\": \\\"trackParam1\\\"\\n\" +\n            \"                  }\\n\" +\n            \"                },\\n\" +\n            \"                \\\"extInfo\\\": {\\n\" +\n            \"                  \\\"likeByMe\\\": \\\"true\\\",\\n\" +\n            \"                  \\\"isFollowed\\\": \\\"true\\\"\\n\" +\n            \"                },\\n\" +\n            \"                \\\"action\\\": {\\n\" +\n            \"                  \\\"type\\\": \\\"click\\\",\\n\" +\n            \"                  \\\"action\\\": \\\"aecmd://nativie/invokeApi?name=key1&likeId=111&likeByMe=true\\\"\\n\" +\n            \"                }\\n\" +\n            \"              }\\n\" +\n            \"            ],\\n\" +\n            \"            \\\"bizId\\\": \\\"banner-myae-1-746877468\\\",\\n\" +\n            \"            \\\"style\\\": {\\n\" +\n            \"              \\\"card\\\" : \\\"true\\\",\\n\" +\n            \"              \\\"background-color\\\": \\\"#000000\\\"\\n\" +\n            \"            },\\n\" +\n            \"            \\\"isTest\\\": false\\n\" +\n            \"          },\\n\" +\n            \"          {\\n\" +\n            \"            \\\"@type\\\": \\\"floorV2\\\",\\n\" +\n            \"            \\\"templateId\\\": \\\"base\\\",\\n\" +\n            \"            \\\"image\\\": \\\"http://xxx\\\",\\n\" +\n            \"            \\\"fields\\\": [\\n\" +\n            \"              {\\n\" +\n            \"                \\\"index\\\": 0,\\n\" +\n            \"                \\\"value\\\": \\\"xxxx\\\",\\n\" +\n            \"                \\\"type\\\": \\\"text\\\",\\n\" +\n            \"                \\\"track\\\": {\\n\" +\n            \"                  \\\"name\\\": \\\"track name\\\",\\n\" +\n            \"                  \\\"params\\\": {\\n\" +\n            \"                    \\\"trackParam1\\\": \\\"trackParam1\\\"\\n\" +\n            \"                  }\\n\" +\n            \"                },\\n\" +\n            \"                \\\"action\\\": {\\n\" +\n            \"                  \\\"type\\\": \\\"click\\\",\\n\" +\n            \"                  \\\"action\\\": \\\"aecmd://xxxx\\\"\\n\" +\n            \"                }\\n\" +\n            \"              }\\n\" +\n            \"            ],\\n\" +\n            \"            \\\"extInfo\\\": {\\n\" +\n            \"              \\\"likeByMe\\\": \\\"true\\\"\\n\" +\n            \"            },\\n\" +\n            \"            \\\"bizId\\\": \\\"banner-myae-1-746877468\\\",\\n\" +\n            \"            \\\"style\\\": {\\n\" +\n            \"              \\\"card\\\" : \\\"true\\\",\\n\" +\n            \"              \\\"background-color\\\": \\\"#ffc1c1\\\"\\n\" +\n            \"            },\\n\" +\n            \"            \\\"isTest\\\": false\\n\" +\n            \"          }\\n\" +\n            \"        ]\\n\" +\n            \"      },\\n\" +\n            \"          {\\n\" +\n            \"            \\\"@type\\\": \\\"floorV2\\\",\\n\" +\n            \"            \\\"templateId\\\": \\\"base\\\",\\n\" +\n            \"            \\\"image\\\": \\\"http://xxx\\\",\\n\" +\n            \"            \\\"fields\\\": [\\n\" +\n            \"              {\\n\" +\n            \"                \\\"index\\\": 0,\\n\" +\n            \"                \\\"value\\\": \\\"xxxx\\\",\\n\" +\n            \"                \\\"type\\\": \\\"text\\\",\\n\" +\n            \"                \\\"track\\\": {\\n\" +\n            \"                  \\\"name\\\": \\\"track name\\\",\\n\" +\n            \"                  \\\"params\\\": {\\n\" +\n            \"                    \\\"trackParam1\\\": \\\"trackParam1\\\"\\n\" +\n            \"                  }\\n\" +\n            \"                },\\n\" +\n            \"                \\\"extInfo\\\": {\\n\" +\n            \"                  \\\"likeByMe\\\": \\\"true\\\",\\n\" +\n            \"                  \\\"isFollowed\\\": \\\"true\\\"\\n\" +\n            \"                },\\n\" +\n            \"                \\\"action\\\": {\\n\" +\n            \"                  \\\"type\\\": \\\"click\\\",\\n\" +\n            \"                  \\\"action\\\": \\\"aecmd://nativie/invokeApi?name=key1&likeId=111&likeByMe=true\\\"\\n\" +\n            \"                }\\n\" +\n            \"              }\\n\" +\n            \"            ],\\n\" +\n            \"            \\\"bizId\\\": \\\"banner-myae-1-746877468\\\",\\n\" +\n            \"            \\\"style\\\": {\\n\" +\n            \"              \\\"card\\\" : \\\"true\\\",\\n\" +\n            \"              \\\"background-color\\\": \\\"#000000\\\"\\n\" +\n            \"            },\\n\" +\n            \"            \\\"isTest\\\": false\\n\" +\n            \"          },\\n\" +\n            \"          {\\n\" +\n            \"            \\\"@type\\\": \\\"floorV2\\\",\\n\" +\n            \"            \\\"templateId\\\": \\\"base\\\",\\n\" +\n            \"            \\\"image\\\": \\\"http://xxx\\\",\\n\" +\n            \"            \\\"fields\\\": [\\n\" +\n            \"              {\\n\" +\n            \"                \\\"index\\\": 0,\\n\" +\n            \"                \\\"value\\\": \\\"xxxx\\\",\\n\" +\n            \"                \\\"type\\\": \\\"text\\\",\\n\" +\n            \"                \\\"track\\\": {\\n\" +\n            \"                  \\\"name\\\": \\\"track name\\\",\\n\" +\n            \"                  \\\"params\\\": {\\n\" +\n            \"                    \\\"trackParam1\\\": \\\"trackParam1\\\"\\n\" +\n            \"                  }\\n\" +\n            \"                },\\n\" +\n            \"                \\\"action\\\": {\\n\" +\n            \"                  \\\"type\\\": \\\"click\\\",\\n\" +\n            \"                  \\\"action\\\": \\\"aecmd://xxxx\\\"\\n\" +\n            \"                }\\n\" +\n            \"              }\\n\" +\n            \"            ],\\n\" +\n            \"            \\\"extInfo\\\": {\\n\" +\n            \"              \\\"likeByMe\\\": \\\"true\\\"\\n\" +\n            \"            },\\n\" +\n            \"            \\\"bizId\\\": \\\"banner-myae-1-746877468\\\",\\n\" +\n            \"            \\\"style\\\": {\\n\" +\n            \"              \\\"card\\\" : \\\"true\\\",\\n\" +\n            \"              \\\"background-color\\\": \\\"#ffc1c1\\\"\\n\" +\n            \"            },\\n\" +\n            \"            \\\"isTest\\\": false\\n\" +\n            \"          }\\n\" +\n            \"        ]\\n\" +\n            \"      }\\n\" +\n            \"    ],\\n\" +\n            \"    \\\"version\\\": 3,\\n\" +\n            \"    \\\"currency\\\": \\\"RUB\\\"\\n\" +\n            \"  }\";\n\n    static String floordata = \"{\\n\" +\n            \"    \\\"isTest\\\": true,\\n\" +\n            \"    \\\"mockResult\\\": {\\n\" +\n            \"  \\\"body\\\": {\\n\" +\n            \"    \\\"areas\\\": [\\n\" +\n            \"      {\\n\" +\n            \"        \\\"@type\\\": \\\"section\\\",\\n\" +\n            \"        \\\"templateId\\\": \\\"grid\\\",\\n\" +\n            \"        \\\"style\\\": {\\n\" +\n            \"          \\\"card\\\" : \\\"true\\\",\\n\" +\n            \"          \\\"column-count\\\":\\\"2\\\",\\n\" +\n            \"          \\\"aspect-ratio\\\":\\\"2\\\",\\n\" +\n            \"          \\\"margins\\\":\\\"16 0 16 16\\\",\\n\" +\n            \"          \\\"background-color\\\": \\\"#ffffff\\\",\\n\" +\n            \"          \\\"column-gap\\\": \\\"10\\\"\\n\" +\n            \"        },\\n\" +\n            \"        \\\"children\\\": [\\n\" +\n            \"        {\\n\" +\n            \"        \\\"@type\\\": \\\"section\\\",\\n\" +\n            \"        \\\"templateId\\\": \\\"grid\\\",\\n\" +\n            \"        \\\"style\\\": {\\n\" +\n            \"          \\\"card\\\" : \\\"true\\\",\\n\" +\n            \"          \\\"column-count\\\":\\\"2\\\",\\n\" +\n            \"          \\\"aspect-ratio\\\":\\\"2\\\",\\n\" +\n            \"          \\\"margins\\\":\\\"16 0 16 16\\\",\\n\" +\n            \"          \\\"background-color\\\": \\\"#ffffff\\\",\\n\" +\n            \"          \\\"column-gap\\\": \\\"10\\\"\\n\" +\n            \"        },\\n\" +\n            \"        \\\"children\\\": [\\n\" +\n            \"          {\\n\" +\n            \"            \\\"@type\\\": \\\"floorV2\\\",\\n\" +\n            \"            \\\"templateId\\\": \\\"base\\\",\\n\" +\n            \"            \\\"image\\\": \\\"http://xxx\\\",\\n\" +\n            \"            \\\"fields\\\": [\\n\" +\n            \"              {\\n\" +\n            \"                \\\"index\\\": 0,\\n\" +\n            \"                \\\"value\\\": \\\"xxxx\\\",\\n\" +\n            \"                \\\"type\\\": \\\"text\\\",\\n\" +\n            \"                \\\"track\\\": {\\n\" +\n            \"                  \\\"name\\\": \\\"track name\\\",\\n\" +\n            \"                  \\\"params\\\": {\\n\" +\n            \"                    \\\"trackParam1\\\": \\\"trackParam1\\\"\\n\" +\n            \"                  }\\n\" +\n            \"                },\\n\" +\n            \"                \\\"extInfo\\\": {\\n\" +\n            \"                  \\\"likeByMe\\\": \\\"true\\\",\\n\" +\n            \"                  \\\"isFollowed\\\": \\\"true\\\"\\n\" +\n            \"                },\\n\" +\n            \"                \\\"action\\\": {\\n\" +\n            \"                  \\\"type\\\": \\\"click\\\",\\n\" +\n            \"                  \\\"action\\\": \\\"aecmd://nativie/invokeApi?name=key1&likeId=111&likeByMe=true\\\"\\n\" +\n            \"                }\\n\" +\n            \"              }\\n\" +\n            \"            ],\\n\" +\n            \"            \\\"bizId\\\": \\\"banner-myae-1-746877468\\\",\\n\" +\n            \"            \\\"style\\\": {\\n\" +\n            \"              \\\"card\\\" : \\\"true\\\",\\n\" +\n            \"              \\\"background-color\\\": \\\"#000000\\\"\\n\" +\n            \"            },\\n\" +\n            \"            \\\"isTest\\\": false\\n\" +\n            \"          },\\n\" +\n            \"          {\\n\" +\n            \"            \\\"@type\\\": \\\"floorV2\\\",\\n\" +\n            \"            \\\"templateId\\\": \\\"base\\\",\\n\" +\n            \"            \\\"image\\\": \\\"http://xxx\\\",\\n\" +\n            \"            \\\"fields\\\": [\\n\" +\n            \"              {\\n\" +\n            \"                \\\"index\\\": 0,\\n\" +\n            \"                \\\"value\\\": \\\"xxxx\\\",\\n\" +\n            \"                \\\"type\\\": \\\"text\\\",\\n\" +\n            \"                \\\"track\\\": {\\n\" +\n            \"                  \\\"name\\\": \\\"track name\\\",\\n\" +\n            \"                  \\\"params\\\": {\\n\" +\n            \"                    \\\"trackParam1\\\": \\\"trackParam1\\\"\\n\" +\n            \"                  }\\n\" +\n            \"                },\\n\" +\n            \"                \\\"action\\\": {\\n\" +\n            \"                  \\\"type\\\": \\\"click\\\",\\n\" +\n            \"                  \\\"action\\\": \\\"aecmd://xxxx\\\"\\n\" +\n            \"                }\\n\" +\n            \"              }\\n\" +\n            \"            ],\\n\" +\n            \"            \\\"extInfo\\\": {\\n\" +\n            \"              \\\"likeByMe\\\": \\\"true\\\"\\n\" +\n            \"            },\\n\" +\n            \"            \\\"bizId\\\": \\\"banner-myae-1-746877468\\\",\\n\" +\n            \"            \\\"style\\\": {\\n\" +\n            \"              \\\"card\\\" : \\\"true\\\",\\n\" +\n            \"              \\\"background-color\\\": \\\"#ffc1c1\\\"\\n\" +\n            \"            },\\n\" +\n            \"            \\\"isTest\\\": false\\n\" +\n            \"          }\\n\" +\n            \"        ]\\n\" +\n            \"      },\\n\" +\n            \"          {\\n\" +\n            \"            \\\"@type\\\": \\\"floorV2\\\",\\n\" +\n            \"            \\\"templateId\\\": \\\"base\\\",\\n\" +\n            \"            \\\"image\\\": \\\"http://xxx\\\",\\n\" +\n            \"            \\\"fields\\\": [\\n\" +\n            \"              {\\n\" +\n            \"                \\\"index\\\": 0,\\n\" +\n            \"                \\\"value\\\": \\\"xxxx\\\",\\n\" +\n            \"                \\\"type\\\": \\\"text\\\",\\n\" +\n            \"                \\\"track\\\": {\\n\" +\n            \"                  \\\"name\\\": \\\"track name\\\",\\n\" +\n            \"                  \\\"params\\\": {\\n\" +\n            \"                    \\\"trackParam1\\\": \\\"trackParam1\\\"\\n\" +\n            \"                  }\\n\" +\n            \"                },\\n\" +\n            \"                \\\"extInfo\\\": {\\n\" +\n            \"                  \\\"likeByMe\\\": \\\"true\\\",\\n\" +\n            \"                  \\\"isFollowed\\\": \\\"true\\\"\\n\" +\n            \"                },\\n\" +\n            \"                \\\"action\\\": {\\n\" +\n            \"                  \\\"type\\\": \\\"click\\\",\\n\" +\n            \"                  \\\"action\\\": \\\"aecmd://nativie/invokeApi?name=key1&likeId=111&likeByMe=true\\\"\\n\" +\n            \"                }\\n\" +\n            \"              }\\n\" +\n            \"            ],\\n\" +\n            \"            \\\"bizId\\\": \\\"banner-myae-1-746877468\\\",\\n\" +\n            \"            \\\"style\\\": {\\n\" +\n            \"              \\\"card\\\" : \\\"true\\\",\\n\" +\n            \"              \\\"background-color\\\": \\\"#000000\\\"\\n\" +\n            \"            },\\n\" +\n            \"            \\\"isTest\\\": false\\n\" +\n            \"          },\\n\" +\n            \"          {\\n\" +\n            \"            \\\"@type\\\": \\\"floorV2\\\",\\n\" +\n            \"            \\\"templateId\\\": \\\"base\\\",\\n\" +\n            \"            \\\"image\\\": \\\"http://xxx\\\",\\n\" +\n            \"            \\\"fields\\\": [\\n\" +\n            \"              {\\n\" +\n            \"                \\\"index\\\": 0,\\n\" +\n            \"                \\\"value\\\": \\\"xxxx\\\",\\n\" +\n            \"                \\\"type\\\": \\\"text\\\",\\n\" +\n            \"                \\\"track\\\": {\\n\" +\n            \"                  \\\"name\\\": \\\"track name\\\",\\n\" +\n            \"                  \\\"params\\\": {\\n\" +\n            \"                    \\\"trackParam1\\\": \\\"trackParam1\\\"\\n\" +\n            \"                  }\\n\" +\n            \"                },\\n\" +\n            \"                \\\"action\\\": {\\n\" +\n            \"                  \\\"type\\\": \\\"click\\\",\\n\" +\n            \"                  \\\"action\\\": \\\"aecmd://xxxx\\\"\\n\" +\n            \"                }\\n\" +\n            \"              }\\n\" +\n            \"            ],\\n\" +\n            \"            \\\"extInfo\\\": {\\n\" +\n            \"              \\\"likeByMe\\\": \\\"true\\\"\\n\" +\n            \"            },\\n\" +\n            \"            \\\"bizId\\\": \\\"banner-myae-1-746877468\\\",\\n\" +\n            \"            \\\"style\\\": {\\n\" +\n            \"              \\\"card\\\" : \\\"true\\\",\\n\" +\n            \"              \\\"background-color\\\": \\\"#ffc1c1\\\"\\n\" +\n            \"            },\\n\" +\n            \"            \\\"isTest\\\": false\\n\" +\n            \"          }\\n\" +\n            \"        ]\\n\" +\n            \"      }\\n\" +\n            \"    ],\\n\" +\n            \"    \\\"version\\\": 3,\\n\" +\n            \"    \\\"currency\\\": \\\"RUB\\\"\\n\" +\n            \"  },\\n\" +\n            \"  \\\"head\\\": {\\n\" +\n            \"    \\\"message\\\": \\\"\\\",\\n\" +\n            \"    \\\"serverTime\\\": 1489473042814,\\n\" +\n            \"    \\\"code\\\": \\\"200\\\",\\n\" +\n            \"    \\\"ab\\\": \\\"yepxf_B\\\"\\n\" +\n            \"  }\\n\" +\n            \"}\\n\" +\n            \"}\";\n\n    public void test_for_issue() throws Exception {\n        ParserConfig.getGlobalInstance().putDeserializer(Area.class, new ObjectDeserializer() {\n\n            public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n                JSONObject jsonObject = (JSONObject) parser.parse();\n                String areaType;\n\n                if (jsonObject.get(\"type\") instanceof String) {\n                    areaType = (String) jsonObject.get(\"type\");\n                } else {\n                    return null;\n                }\n                if (Area.TYPE_SECTION.equals(areaType)) {\n                    String text = jsonObject.toJSONString();\n                    return (T) JSON.parseObject(text, Section.class);\n                } else if (Area.TYPE_FLOORV1.equals(areaType)) {\n                    String text = jsonObject.toJSONString();\n                    return (T) JSON.parseObject(text, FloorV1.class);\n                } else if (Area.TYPE_FLOORV2.equals(areaType)) {\n                    String text = jsonObject.toJSONString();\n                    return (T) JSON.parseObject(text, FloorV2.class);\n                }\n\n                return null;\n            }\n\n            public int getFastMatchToken() {\n                return JSONToken.LBRACE;\n            }\n        });\n\n        ParserConfig.getGlobalInstance().addAccept(\"section\");\n        ParserConfig.getGlobalInstance().addAccept(\"floorV2\");\n\n\n        MockResult data = JSON.parseObject(floordata, MockResult.class);\n        String mockResultJson = JSON.toJSONString(data.mockResult);\n        NetResponse response = JSON.parseObject(mockResultJson, NetResponse.class);\n\n        String bodyJson = JSON.toJSONString(response.body);\n        System.out.println(bodyJson);\n        FloorPageData pageData = JSON.parseObject(bodyJson, FloorPageData.class);\n        assertNotNull(pageData.areas);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/AETest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.json.bvtVO.ae.*;\nimport junit.framework.TestCase;\n\nimport java.lang.reflect.Type;\nimport java.util.Arrays;\n\n/**\n * Created by wenshao on 08/05/2017.\n */\npublic class AETest extends TestCase {\n    static String jsonData = \"{\\n\" +\n            \"    \\\"areaList\\\":[\\n\" +\n            \"        {\\n\" +\n            \"            \\\"type\\\":\\\"floor\\\",\\n\" +\n            \"            \\\"name\\\":\\\"I'm floor\\\",\\n\" +\n            \"            \\\"children\\\":[{\\n\" +\n            \"                \\\"type\\\":\\\"item\\\",\\n\" +\n            \"            \\\"name\\\":\\\"I'm item 0\\\"\\n\" +\n            \"            },\\n\" +\n            \"        {\\n\" +\n            \"              \\\"type\\\":\\\"item\\\",\\n\" +\n            \"            \\\"name\\\":\\\"I'm item 1\\\"\\n\" +\n            \"        }\\n\" +\n            \"\\n\" +\n            \"            ]\\n\" +\n            \"        },{\\n\" +\n            \"            \\\"type\\\":\\\"item\\\",\\n\" +\n            \"            \\\"name\\\":\\\"I'm item 2\\\"\\n\" +\n            \"        }\\n\" +\n            \"    ]\\n\" +\n            \"}\";\n\n    public void test_for_ae() throws Exception {\n        ParserConfig.getGlobalInstance().putDeserializer(Area.class, new ObjectDeserializer() {\n            public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n                JSONObject jsonObject = (JSONObject) parser.parse();\n                String areaType;\n\n                if (jsonObject.get(\"type\") instanceof String) {\n                    areaType = (String) jsonObject.get(\"type\");\n                } else {\n                    return null;\n                }\n                if (Area.TYPE_FLOOR.equals(areaType)) {\n                     return (T) JSON.toJavaObject(jsonObject, Floor.class);\n                } else if (Area.TYPE_ITEM.equals(areaType)) {\n                    return (T) JSON.toJavaObject(jsonObject, Item.class);\n                }\n\n                return null;\n            }\n\n            public int getFastMatchToken() {\n                return JSONToken.LBRACE;\n            }\n        });\n\n\n        Data data = JSON.parseObject(jsonData, Data.class);\n\n        Item item = (Item) ((Floor)(data.areaList.get(0))).children.get(0);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/Alipay1213.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\nimport org.apache.commons.io.FileUtils;\n\nimport java.io.File;\n\n/**\n * Created by wenshao on 13/12/2016.\n */\npublic class Alipay1213 extends TestCase {\n    public void test_for_issue() throws Exception {\n        String text = \"{\\\"resultObj\\\":{\\\"assetSize\\\":{},\\\"chargeTypeList\\\":[\\\"A\\\"],\\\"fundManagerMapList\\\":[{},{}],\\\"fundRateConvertList\\\":[{},{},{}],\\\"fundRateOperate\\\":{},\\\"fundRatePurchaseList\\\":[{\\\"fixedRate\\\":{},\\\"maxAmount\\\":{},\\\"minAmount\\\":{}}],\\\"fundRateRedeemList\\\":[{\\\"fixedRate\\\":{}}],\\\"fundRateSubscribeList\\\":[{\\\"fixedRate\\\":{},\\\"maxAmount\\\":{},\\\"minAmount\\\":{}}],\\\"fundRatingList\\\":[{},{}],\\\"fundRuleConvertList\\\":[{},{}],\\\"fundRuleConvertVoList\\\":[{\\\"fundRateConvertList\\\":[{\\\"$ref\\\":\\\"$.resultObj.fundRateConvertList[0]\\\"},{\\\"$ref\\\":\\\"$.resultObj.fundRateConvertList[1]\\\"}],\\\"fundRuleConvert\\\":{\\\"$ref\\\":\\\"$.resultObj.fundRuleConvertList[0]\\\"}},{\\\"fundRateConvertList\\\":[{\\\"$ref\\\":\\\"$.resultObj.fundRateConvertList[2]\\\"}],\\\"fundRuleConvert\\\":{\\\"$ref\\\":\\\"$.resultObj.fundRuleConvertList[1]\\\"}}]}}\";\n        JSONObject root = JSON.parseObject(text);\n\n        JSONObject resultObj = root.getJSONObject(\"resultObj\");\n        assertNotNull(resultObj);\n\n        JSONArray fundRuleConvertVoList = resultObj.getJSONArray(\"fundRuleConvertVoList\");\n        assertNotNull(fundRuleConvertVoList);\n\n        JSONArray fundRateConvertList = fundRuleConvertVoList.getJSONObject(0).getJSONArray(\"fundRateConvertList\");\n        assertNotNull(fundRateConvertList);\n\n        assertNotNull(fundRateConvertList.get(0));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/AmbiguousTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\n/**\n * Created by wenshao on 16/8/31.\n */\npublic class AmbiguousTest extends TestCase {\n    public void test_for_issue() throws Exception {\n        String text = \"{\\\"items\\\":{\\\"id\\\":101}}\";\n        Model model = JSON.parseObject(text, Model.class);\n        assertEquals(1, model.items.size());\n    }\n\n    public static class Model {\n        public List<Item> items;\n    }\n\n    public static class Item {\n        public int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/AsmParserTest0.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class AsmParserTest0 extends TestCase {\n\n    public void test_asm() throws Exception {\n        A a = JSON.parseObject(\"{\\\"f1\\\":123}\", A.class);\n        Assert.assertNotNull(a.getF2());\n    }\n\n    public static class A {\n\n        private int f1;\n\n        private B   f2 = new B();\n\n        public int getF1() {\n            return f1;\n        }\n\n        public void setF1(int f1) {\n            this.f1 = f1;\n        }\n\n        public B getF2() {\n            return f2;\n        }\n\n        public void setF2(B f2) {\n            this.f2 = f2;\n        }\n\n    }\n\n    public static class B {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/AsmParserTest1.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class AsmParserTest1 extends TestCase {\n\n    public void test_asm() throws Exception {\n        A a = JSON.parseObject(\"{\\\"f1\\\":123}\", A.class);\n        Assert.assertEquals(123, a.getF1());\n        Assert.assertNotNull(a.getF2());\n    }\n\n    public static class A {\n\n        private int f1;\n\n        private List<B>   f2 = new ArrayList<B>();\n\n        public int getF1() {\n            return f1;\n        }\n\n        public void setF1(int f1) {\n            this.f1 = f1;\n        }\n\n        \n        public List<B> getF2() {\n            return f2;\n        }\n\n        \n        public void setF2(List<B> f2) {\n            this.f2 = f2;\n        }\n\n    }\n\n    public static class B {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/AtomicIntegerComptableAndroidTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.concurrent.atomic.AtomicInteger;\nimport java.util.concurrent.atomic.AtomicLong;\n\n/**\n * Created by wenshao on 20/03/2017.\n */\npublic class AtomicIntegerComptableAndroidTest extends TestCase {\n    public void test_for_compatible_zero() throws Exception {\n        String text = \"{\\\"andIncrement\\\":-1,\\\"andDecrement\\\":0}\";\n\n        assertEquals(0, JSON.parseObject(text, AtomicInteger.class).intValue());\n    }\n\n    public void test_for_compatible_six() throws Exception {\n        String text = \"{\\\"andIncrement\\\":5,\\\"andDecrement\\\":6}\";\n\n        assertEquals(6, JSON.parseObject(text, AtomicInteger.class).intValue());\n    }\n\n    public void test_for_compatible_five() throws Exception {\n        String text = \"{\\\"andDecrement\\\":6,\\\"andIncrement\\\":5}\";\n\n        assertEquals(5, JSON.parseObject(text, AtomicInteger.class).intValue());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/AtomicLongComptableAndroidTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.concurrent.atomic.AtomicInteger;\nimport java.util.concurrent.atomic.AtomicLong;\n\n/**\n * Created by wenshao on 20/03/2017.\n */\npublic class AtomicLongComptableAndroidTest extends TestCase {\n    public void test_for_compatible_zero() throws Exception {\n        String text = \"{\\\"andIncrement\\\":-1,\\\"andDecrement\\\":0}\";\n\n        assertEquals(0, JSON.parseObject(text, AtomicLong.class).intValue());\n    }\n\n    public void test_for_compatible_six() throws Exception {\n        String text = \"{\\\"andIncrement\\\":5,\\\"andDecrement\\\":6}\";\n\n        assertEquals(6, JSON.parseObject(text, AtomicLong.class).intValue());\n    }\n\n    public void test_for_compatible_five() throws Exception {\n        String text = \"{\\\"andDecrement\\\":6,\\\"andIncrement\\\":5}\";\n\n        assertEquals(5, JSON.parseObject(text, AtomicLong.class).intValue());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/AutoTypeCheckHandlerTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport junit.framework.TestCase;\n\npublic class AutoTypeCheckHandlerTest extends TestCase {\n    public void test_for_issue() throws Exception {\n        ParserConfig config = new ParserConfig();\n\n        String str = \"{\\\"@type\\\":\\\"com.alibaba.json.bvt.parser.autoType.AutoTypeCheckHandlerTest$Model\\\"}\";\n        JSONException error = null;\n        try {\n            JSON.parse(str, config);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n\n        config.addAutoTypeCheckHandler(new ParserConfig.AutoTypeCheckHandler() {\n\n            public Class<?> handler(String typeName, Class<?> expectClass, int features) {\n                if (\"com.alibaba.json.bvt.parser.autoType.AutoTypeCheckHandlerTest$Model\".equals(typeName)) {\n                    return Model.class;\n                }\n                return null;\n            }\n        });\n\n        JSON.parse(str, config);\n    }\n\n    public static class Model {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/BigDecimalKeyFieldTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.math.BigDecimal;\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class BigDecimalKeyFieldTest extends TestCase {\n    public void test_for_bigdecimal_key() throws Exception {\n        Map<?, ?> obj = JSON.parseObject(\"{1234.56:\\\"abc\\\"}\", HashMap.class);\n        Map.Entry<?, ?> entry = obj.entrySet().iterator().next();\n        Assert.assertEquals(\"abc\", entry.getValue());\n        Assert.assertEquals(new BigDecimal(\"1234.56\"), entry.getKey());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/BigListStringFieldTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Random;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class BigListStringFieldTest extends TestCase {\n    public void test_list() throws Exception {\n        Model model = new Model();\n        model.values = new ArrayList<String>(10000);\n        for (int i = 0; i < 10000; ++i) {\n            String value = random(100);\n            model.values.add(value);\n        }\n        String text = JSON.toJSONString(model);\n        Model model2 = JSON.parseObject(text, Model.class);\n        \n        Assert.assertEquals(model.values, model2.values);\n    }\n    public static class Model {\n        public List<String> values;\n    }\n    \n    public String random(int count) {\n        Random random = new Random();\n        \n        char[] chars = new char[count];\n        for (int i = 0; i < count; ++i) {\n            chars[i] = (char) random.nextInt();\n        }\n        \n        return new String(chars);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/BigListStringFieldTest_private.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Random;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class BigListStringFieldTest_private extends TestCase {\n    public void test_list() throws Exception {\n        Model model = new Model();\n        model.values = new ArrayList<String>(10000);\n        for (int i = 0; i < 10000; ++i) {\n            String value = random(100);\n            model.values.add(value);\n        }\n        String text = JSON.toJSONString(model);\n        Model model2 = JSON.parseObject(text, Model.class);\n        \n        Assert.assertEquals(model.values, model2.values);\n    }\n    \n    public void test_list_browserComptible() throws Exception {\n        Model model = new Model();\n        model.values = new ArrayList<String>(10000);\n        for (int i = 0; i < 10000; ++i) {\n            String value = random(100);\n            model.values.add(value);\n        }\n        String text = JSON.toJSONString(model, SerializerFeature.BrowserCompatible);\n        Model model2 = JSON.parseObject(text, Model.class);\n        \n        Assert.assertEquals(model.values, model2.values);\n    }\n    \n    public void test_list_browserSecure() throws Exception {\n        Model model = new Model();\n        model.values = new ArrayList<String>(10000);\n        for (int i = 0; i < 10000; ++i) {\n            String value = random(100);\n            model.values.add(value);\n        }\n        String text = JSON.toJSONString(model, SerializerFeature.BrowserSecure);\n\n        text = text.replaceAll(\"&lt;\", \"<\");\n        text = text.replaceAll(\"&gt;\", \">\");\n        Model model2 = JSON.parseObject(text, Model.class);\n        \n        Assert.assertEquals(model.values, model2.values);\n    }\n    \n    private static class Model {\n        public List<String> values;\n    }\n    \n    public String random(int count) {\n        Random random = new Random();\n        \n        char[] chars = new char[count];\n        for (int i = 0; i < count; ++i) {\n            chars[i] = (char) random.nextInt(256);\n        }\n        \n        return new String(chars);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/BigSpecailKeyTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.Arrays;\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class BigSpecailKeyTest extends TestCase {\n    public void test_big_special_key() throws Exception {\n        StringBuffer buf = new StringBuffer();\n        for (int i = 0; i < 16; ++i) {\n            buf.append('\\\\');\n            buf.append('\\\"');\n            char[] chars = new char[1024];\n            Arrays.fill(chars, '0');\n            buf.append(chars);\n        }\n        \n        String key = buf.toString();\n        \n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(key, 1001);\n        \n        String text = JSON.toJSONString(map);\n        JSONObject obj = JSON.parseObject(text);\n        Assert.assertEquals(map.get(key), obj.get(key));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/BigSpecailKeyTest2.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.Arrays;\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class BigSpecailKeyTest2 extends TestCase {\n    public void test_big_special_key() throws Exception {\n        StringBuffer buf = new StringBuffer();\n        for (int i = 0; i < 16; ++i) {\n            char[] chars = new char[2048];\n            Arrays.fill(chars, '0');\n            buf.append(chars);\n            \n            buf.append('\\\\');\n            buf.append('\\\"');\n        }\n        \n        String key = buf.toString();\n        \n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(key, 1001);\n        \n        String text = JSON.toJSONString(map);\n        JSONObject obj = JSON.parseObject(text);\n        Assert.assertEquals(map.get(key), obj.get(key));\n    }\n    \n    public void test_big_special_key_2() throws Exception {\n        StringBuffer buf = new StringBuffer();\n        for (int i = 0; i < 16; ++i) {\n            char[] chars = new char[300];\n            Arrays.fill(chars, '0');\n            buf.append(chars);\n            \n            buf.append('\\\\');\n            buf.append('\\\"');\n        }\n        \n        String key = buf.toString();\n        \n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(key, 1001);\n        \n        String text = JSON.toJSONString(map);\n        JSONObject obj = JSON.parseObject(text);\n        Assert.assertEquals(map.get(key), obj.get(key));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/BigSpecailStringTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.Arrays;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class BigSpecailStringTest extends TestCase {\n    public void test_big_special_key() throws Exception {\n        StringBuffer buf = new StringBuffer();\n        for (int i = 0; i < 16; ++i) {\n            buf.append('\\\\');\n            buf.append('\\\"');\n            char[] chars = new char[1024];\n            Arrays.fill(chars, '0');\n            buf.append(chars);\n        }\n        \n        String text = buf.toString();\n        \n        String json = JSON.toJSONString(text);\n        \n        String text2 = (String) JSON.parse(json);\n        Assert.assertEquals(text, text2);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/BigStringFieldTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Random;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\nimport junit.framework.TestCase;\n\npublic class BigStringFieldTest extends TestCase {\n    public void test_bigFieldString() throws Exception {\n        Model model = new Model();\n        model.f0 = random(1024);\n        model.f1 = random(1024);\n        model.f2 = random(1024);\n        model.f3 = random(1024);\n        model.f4 = random(1024);\n        \n        String text = JSON.toJSONString(model);\n        Model model2 = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(model2.f0, model.f0);\n        Assert.assertEquals(model2.f1, model.f1);\n        Assert.assertEquals(model2.f2, model.f2);\n        Assert.assertEquals(model2.f3, model.f3);\n        Assert.assertEquals(model2.f4, model.f4);\n    }\n    \n    public void test_list() throws Exception {\n        List<Model> list = new ArrayList<Model>();\n        for (int i = 0; i < 1000; ++i) {\n            Model model = new Model();\n            model.f0 = random(64);\n            model.f1 = random(64);\n            model.f2 = random(64);\n            model.f3 = random(64);\n            model.f4 = random(64);\n            list.add(model);\n        }\n        String text = JSON.toJSONString(list);\n        List<Model> list2 = JSON.parseObject(text, new TypeReference<List<Model>>() {});\n        Assert.assertEquals(list.size(), list2.size());\n        for (int i = 0; i < 1000; ++i) {\n            Assert.assertEquals(list.get(i).f0, list2.get(i).f0);    \n            Assert.assertEquals(list.get(i).f1, list2.get(i).f1);    \n            Assert.assertEquals(list.get(i).f2, list2.get(i).f2);    \n            Assert.assertEquals(list.get(i).f3, list2.get(i).f3);    \n            Assert.assertEquals(list.get(i).f4, list2.get(i).f4);    \n        }\n    }\n    \n    public String random(int count) {\n        Random random = new Random();\n        \n        char[] chars = new char[count];\n        for (int i = 0; i < count; ++i) {\n            chars[i] = (char) random.nextInt();\n        }\n        \n        return new String(chars);\n    }\n    \n    public static class Model {\n        public String f0;\n        public String f1;\n        public String f2;\n        public String f3;\n        public String f4;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/BigStringFieldTest_private.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Random;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class BigStringFieldTest_private extends TestCase {\n    public void test_bigFieldString() throws Exception {\n        Model model = new Model();\n        model.f0 = random(1024);\n        model.f1 = random(1024);\n        model.f2 = random(1024);\n        model.f3 = random(1024);\n        model.f4 = random(1024);\n        \n        String text = JSON.toJSONString(model);\n        Model model2 = JSON.parseObject(text, Model.class);\n        assertEquals(model2.f0, model.f0);\n        assertEquals(model2.f1, model.f1);\n        assertEquals(model2.f2, model.f2);\n        assertEquals(model2.f3, model.f3);\n        assertEquals(model2.f4, model.f4);\n    }\n    \n    public void test_list() throws Exception {\n        List<Model> list = new ArrayList<Model>();\n        for (int i = 0; i < 1000; ++i) {\n            Model model = new Model();\n            model.f0 = random(64);\n            model.f1 = random(64);\n            model.f2 = random(64);\n            model.f3 = random(64);\n            model.f4 = random(64);\n            list.add(model);\n        }\n        String text = JSON.toJSONString(list);\n        List<Model> list2 = JSON.parseObject(text, new TypeReference<List<Model>>() {});\n        assertEquals(list.size(), list2.size());\n        for (int i = 0; i < 1000; ++i) {\n            assertEquals(list.get(i).f0, list2.get(i).f0);    \n            assertEquals(list.get(i).f1, list2.get(i).f1);    \n            assertEquals(list.get(i).f2, list2.get(i).f2);    \n            assertEquals(list.get(i).f3, list2.get(i).f3);    \n            assertEquals(list.get(i).f4, list2.get(i).f4);    \n        }\n    }\n    \n    public void test_list_browserSecure() throws Exception {\n        List<Model> list = new ArrayList<Model>();\n        for (int i = 0; i < 1000; ++i) {\n            Model model = new Model();\n            model.f0 = random(64);\n            model.f1 = random(64);\n            model.f2 = random(64);\n            model.f3 = random(64);\n            model.f4 = random(64);\n            list.add(model);\n        }\n        String text = JSON.toJSONString(list, SerializerFeature.BrowserSecure);\n\n        List<Model> list2 = JSON.parseObject(text, new TypeReference<List<Model>>() {});\n        assertEquals(list.size(), list2.size());\n        for (int i = 0; i < 1000; ++i) {\n            assertEquals(list.get(i).f0, list2.get(i).f0);    \n            assertEquals(list.get(i).f1, list2.get(i).f1);    \n            assertEquals(list.get(i).f2, list2.get(i).f2);    \n            assertEquals(list.get(i).f3, list2.get(i).f3);    \n            assertEquals(list.get(i).f4, list2.get(i).f4);    \n        }\n    }\n    \n    public String random(int count) {\n        Random random = new Random();\n        \n        char[] chars = new char[count];\n        for (int i = 0; i < count; ++i) {\n            chars[i] = (char) random.nextInt();\n        }\n        \n        return new String(chars);\n    }\n    \n    private static class Model {\n        public String f0;\n        public String f1;\n        public String f2;\n        public String f3;\n        public String f4;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/ClassConstructorTest1.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.junit.Test;\nimport org.springframework.util.Assert;\n\npublic class ClassConstructorTest1 extends TestCase {\n    public void test_error() throws Exception {\n        String modelJSON = \"{\\\"age\\\":12, \\\"name\\\":\\\"nanqi\\\"}\";\n        Model model = JSON.parseObject(modelJSON, Model.class);\n//        Assert.notNull(model.getName());\n        //skip\n    }\n\n    public static class Model {\n        public Model(int age) {\n            this.age = age;\n        }\n\n        private String name;\n\n        private int age;\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public int getAge() {\n            return age;\n        }\n\n        public void setAge(int age) {\n            this.age = age;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/ClassTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport com.alibaba.fastjson.JSON;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\npublic class ClassTest extends TestCase {\n\n    public void test_class_array() throws Exception {\n        String text = \"{\\\"clazz\\\":\\\"[Ljava.lang.String;\\\",\\\"value\\\":\\\"[\\\\\\\"武汉银行\\\\\\\"]\\\"}\";\n        \n        VO vo = JSON.parseObject(text, VO.class);\n        \n        Assert.assertEquals(String[].class, vo.getClazz());\n    }\n    \n    public void test_class() throws Exception {\n        String text = \"{\\\"clazz\\\":\\\"Ljava.lang.String;\\\",\\\"value\\\":\\\"[\\\\\\\"武汉银行\\\\\\\"]\\\"}\";\n        \n        VO vo = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(String.class, vo.getClazz());\n    }\n\n    public static class VO {\n\n        private Class<?> clazz;\n        private Object   value;\n\n        public Class<?> getClazz() {\n            return clazz;\n        }\n\n        public void setClazz(Class<?> clazz) {\n            this.clazz = clazz;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public void setValue(Object value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/CommentTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class CommentTest extends TestCase {\n\n    public void test_0() throws Exception {\n        String text = \"{ // aa\" //\n                      + \"\\n}\";\n        JSONObject obj = (JSONObject) JSON.parse(text);\n        Assert.assertEquals(0, obj.size());\n    }\n\n    public void test_1() throws Exception {\n        String text = \"{ // aa\" //\n                      + \"\\n\\\"value\\\":1001}\";\n        JSONObject obj = (JSONObject) JSON.parse(text);\n        Assert.assertEquals(1, obj.size());\n        Assert.assertEquals(1001, obj.get(\"value\"));\n    }\n\n    public void test_2() throws Exception {\n        String text = \"{ /* aa */ \\\"value\\\":1001}\";\n        JSONObject obj = (JSONObject) JSON.parse(text);\n        Assert.assertEquals(1, obj.size());\n        Assert.assertEquals(1001, obj.get(\"value\"));\n    }\n\n    public void test_3() throws Exception {\n        String text = \"{ \\\"value\\\":/* aa */1001}\";\n        JSONObject obj = (JSONObject) JSON.parse(text);\n        Assert.assertEquals(1, obj.size());\n        Assert.assertEquals(1001, obj.get(\"value\"));\n    }\n\n    public void test_4() throws Exception {\n        String text = \"{ \\\"value\\\":1001/* aa */}\";\n        JSONObject obj = (JSONObject) JSON.parse(text);\n        Assert.assertEquals(1, obj.size());\n        Assert.assertEquals(1001, obj.get(\"value\"));\n    }\n\n    public void test_5() throws Exception {\n        Exception error = null;\n        try {\n            String text = \"{ \\\"value\\\":1001/ * aa */}\";\n            JSON.parse(text);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_6() throws Exception {\n        String text = \"{'a':1, 'b':2 /***/ }\";\n        JSONObject obj = (JSONObject) JSON.parse(text);\n        Assert.assertEquals(2, obj.size());\n        Assert.assertEquals(1, obj.get(\"a\"));\n        Assert.assertEquals(2, obj.get(\"b\"));\n    }\n    \n    public void test_7() throws Exception {\n        String text = \"{'a':1, 'b':2 /**/ }\";\n        JSONObject obj = (JSONObject) JSON.parse(text);\n        Assert.assertEquals(2, obj.size());\n        Assert.assertEquals(1, obj.get(\"a\"));\n        Assert.assertEquals(2, obj.get(\"b\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/CreateInstanceErrorTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class CreateInstanceErrorTest extends TestCase {\n\n    public void test_ordered_field() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"id\\\":1001}\", Model.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Model {\n\n        public Model(){\n            throw new UnsupportedOperationException();\n        }\n\n        public int    id;\n        public String name;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/CreateInstanceErrorTest2.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.HashMap;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class CreateInstanceErrorTest2 extends TestCase {\n\n    public void test_ordered_field() throws Exception {\n        Exception error = null;\n        try {\n            Model model = JSON.parseObject(\"{\\\"value\\\":{\\\"@type\\\":\\\"com.alibaba.json.bvt.parser.CreateInstanceErrorTest2$MyMap\\\"}}\", Model.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Model {\n\n        public Object value;\n    }\n    \n    public static class MyMap extends HashMap {\n        public MyMap(){\n            throw new UnsupportedOperationException();\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/DateParserTest.java",
    "content": "package com.alibaba.json.bvt.parser;\r\n\r\nimport java.util.Date;\r\nimport java.util.Locale;\r\nimport java.util.TimeZone;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.JSONObject;\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.Feature;\r\nimport com.alibaba.fastjson.parser.ParserConfig;\r\n\r\npublic class DateParserTest extends TestCase {\r\n    protected void setUp() throws Exception {\r\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\r\n        JSON.defaultLocale = Locale.CHINA;\r\n    }\r\n    \r\n    public void test_date_new() throws Exception {\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"new Date(1294552193254)\");\r\n\r\n        java.util.Date date = parser.parseObject(java.util.Date.class);\r\n\r\n        Assert.assertEquals(new java.util.Date(1294552193254L), date);\r\n        parser.close();\r\n    }\r\n    \r\n    public void test_date_new_1() throws Exception {\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"new Date(1294552193254)\");\r\n\r\n        java.util.Date date = (java.util.Date) parser.parse();\r\n\r\n        Assert.assertEquals(new java.util.Date(1294552193254L), date);\r\n        parser.close();\r\n    }\r\n    \r\n    public void test_date_0() throws Exception {\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"1294552193254\");\r\n\r\n        java.util.Date date = parser.parseObject(java.util.Date.class);\r\n\r\n        Assert.assertEquals(new java.util.Date(1294552193254L), date);\r\n        parser.close();\r\n    }\r\n\r\n    public void test_date_1() throws Exception {\r\n        int features = JSON.DEFAULT_PARSER_FEATURE;\r\n        features = Feature.config(features, Feature.AllowISO8601DateFormat, true);\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"\\\"2011-01-09T13:49:53.254\\\"\", ParserConfig.getGlobalInstance(), features);\r\n\r\n        java.util.Date date = parser.parseObject(java.util.Date.class);\r\n\r\n        Assert.assertEquals(new java.util.Date(1294552193254L), date);\r\n        parser.close();\r\n    }\r\n\r\n    public void test_date_2() throws Exception {\r\n        int features = JSON.DEFAULT_PARSER_FEATURE;\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"new Date(1294552193254)\", ParserConfig.getGlobalInstance(), features);\r\n\r\n        java.util.Date date = parser.parseObject(java.util.Date.class);\r\n\r\n        Assert.assertEquals(new java.util.Date(1294552193254L), date);\r\n        parser.close();\r\n    }\r\n\r\n    public void test_date_3() throws Exception {\r\n        java.util.Date date = JSON.parseObject(\"\\\"2011-01-09T13:49:53\\\"\", java.util.Date.class, Feature.AllowISO8601DateFormat);\r\n\r\n        Assert.assertEquals(new java.util.Date(1294552193000L), date);\r\n    }\r\n\r\n    public void test_date_4() throws Exception {\r\n        int features = JSON.DEFAULT_PARSER_FEATURE;\r\n        features = Feature.config(features, Feature.AllowISO8601DateFormat, true);\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"\\\"2011-01-09\\\"\", ParserConfig.getGlobalInstance(), features);\r\n\r\n        java.util.Date date = parser.parseObject(java.util.Date.class);\r\n\r\n        Assert.assertEquals(new java.util.Date(1294502400000L), date);\r\n        parser.close();\r\n    }\r\n\r\n    public void test_date_5() throws Exception {\r\n        JSONObject object = JSON.parseObject(\"{d:'2011-01-09T13:49:53'}\", Feature.AllowISO8601DateFormat);\r\n        Assert.assertEquals(new java.util.Date(1294552193000L), object.get(\"d\"));\r\n    }\r\n\r\n    public void test_date_6() throws Exception {\r\n        int features = JSON.DEFAULT_PARSER_FEATURE;\r\n        features = Feature.config(features, Feature.AllowISO8601DateFormat, true);\r\n\r\n        java.util.Date date = JSON.parseObject(\"{d:\\\"2011-01-09T13:49:53\\\"}\", Entity.class, Feature.AllowISO8601DateFormat).getD();\r\n\r\n        Assert.assertEquals(new java.util.Date(1294552193000L), date);\r\n    }\r\n\r\n    public void test_date_7() throws Exception {\r\n        Entity entity = JSON.parseObject(\"{d:'2011-01-09T13:49:53'}\", Entity.class, Feature.AllowISO8601DateFormat);\r\n        java.util.Date date = entity.getD();\r\n\r\n        Assert.assertEquals(new java.util.Date(1294552193000L), date);\r\n    }\r\n\r\n    public void test_date_error_0() throws Exception {\r\n\r\n        JSONException error = null;\r\n        try {\r\n            DefaultJSONParser parser = new DefaultJSONParser(\"true\");\r\n\r\n            parser.parseObject(java.util.Date.class);\r\n            parser.close();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public static class Entity {\r\n\r\n        private Date d;\r\n\r\n        public Date getD() {\r\n            return d;\r\n        }\r\n\r\n        public void setD(Date d) {\r\n            this.d = d;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/DateParserTest_sql.java",
    "content": "package com.alibaba.json.bvt.parser;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.Feature;\r\nimport com.alibaba.fastjson.parser.ParserConfig;\r\n\r\n@SuppressWarnings(\"deprecation\")\r\npublic class DateParserTest_sql extends TestCase {\r\n\r\n    public void f_test_date_0() throws Exception {\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"1294552193254\");\r\n\r\n        java.sql.Date date = parser.parseObject(java.sql.Date.class);\r\n\r\n        Assert.assertEquals(new java.sql.Date(1294552193254L), date);\r\n        \r\n        parser.close();\r\n    }\r\n\r\n    public void test_date_1() throws Exception {\r\n        int features = JSON.DEFAULT_PARSER_FEATURE;\r\n        features = Feature.config(features, Feature.AllowISO8601DateFormat, true);\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"\\\"2011-01-09T13:49:53.254\\\"\", ParserConfig.getGlobalInstance(), features);\r\n\r\n        java.sql.Date date = parser.parseObject(java.sql.Date.class);\r\n\r\n        Assert.assertEquals(new java.sql.Date(1294552193254L), date);\r\n        parser.close();\r\n    }\r\n\r\n    public void test_date_2() throws Exception {\r\n        int features = JSON.DEFAULT_PARSER_FEATURE;\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"new Date(1294552193254)\", ParserConfig.getGlobalInstance(), features);\r\n\r\n        java.sql.Date date = parser.parseObject(java.sql.Date.class);\r\n\r\n        Assert.assertEquals(new java.sql.Date(1294552193254L), date);\r\n        parser.close();\r\n    }\r\n\r\n    public void test_date_3() throws Exception {\r\n        int features = JSON.DEFAULT_PARSER_FEATURE;\r\n        features = Feature.config(features, Feature.AllowISO8601DateFormat, true);\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"\\\"2011-01-09T13:49:53\\\"\", ParserConfig.getGlobalInstance(), features);\r\n\r\n        java.sql.Date date = parser.parseObject(java.sql.Date.class);\r\n\r\n        Assert.assertEquals(new java.sql.Date(1294552193000L), date);\r\n        parser.close();\r\n    }\r\n\r\n    public void test_date_4() throws Exception {\r\n        int features = JSON.DEFAULT_PARSER_FEATURE;\r\n        features = Feature.config(features, Feature.AllowISO8601DateFormat, true);\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"\\\"2011-01-09\\\"\", ParserConfig.getGlobalInstance(), features);\r\n\r\n        java.sql.Date date = parser.parseObject(java.sql.Date.class);\r\n\r\n        Assert.assertEquals(new java.sql.Date(1294502400000L), date);\r\n        parser.close();\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/DateParserTest_sql_timestamp.java",
    "content": "package com.alibaba.json.bvt.parser;\r\n\r\nimport java.util.Locale;\r\nimport java.util.TimeZone;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.Feature;\r\nimport com.alibaba.fastjson.parser.ParserConfig;\r\n\r\n@SuppressWarnings(\"deprecation\")\r\npublic class DateParserTest_sql_timestamp extends TestCase {\r\n    protected void setUp() throws Exception {\r\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\r\n        JSON.defaultLocale = Locale.CHINA;\r\n    }\r\n    \r\n    public void f_test_date_0() throws Exception {\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"1294552193254\");\r\n\r\n        java.sql.Timestamp date = parser.parseObject(java.sql.Timestamp.class);\r\n\r\n        Assert.assertEquals(new java.sql.Timestamp(1294552193254L), date);\r\n        parser.close();\r\n    }\r\n\r\n    public void test_date_1() throws Exception {\r\n        int features = JSON.DEFAULT_PARSER_FEATURE;\r\n        features = Feature.config(features, Feature.AllowISO8601DateFormat, true);\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"\\\"2011-01-09T13:49:53.254\\\"\", ParserConfig.getGlobalInstance(), features);\r\n\r\n        java.sql.Timestamp date = parser.parseObject(java.sql.Timestamp.class);\r\n\r\n        Assert.assertEquals(new java.sql.Timestamp(1294552193254L), date);\r\n        parser.close();\r\n    }\r\n\r\n    public void test_date_2() throws Exception {\r\n        int features = JSON.DEFAULT_PARSER_FEATURE;\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"new Date(1294552193254)\", ParserConfig.getGlobalInstance(), features);\r\n\r\n        java.sql.Timestamp date = parser.parseObject(java.sql.Timestamp.class);\r\n\r\n        Assert.assertEquals(new java.sql.Timestamp(1294552193254L), date);\r\n        parser.close();\r\n    }\r\n\r\n    public void test_date_3() throws Exception {\r\n        int features = JSON.DEFAULT_PARSER_FEATURE;\r\n        features = Feature.config(features, Feature.AllowISO8601DateFormat, true);\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"\\\"2011-01-09T13:49:53\\\"\", ParserConfig.getGlobalInstance(), features);\r\n\r\n        java.sql.Timestamp date = parser.parseObject(java.sql.Timestamp.class);\r\n\r\n        Assert.assertEquals(new java.sql.Timestamp(1294552193000L), date);\r\n        parser.close();\r\n    }\r\n\r\n    public void test_date_4() throws Exception {\r\n        int features = JSON.DEFAULT_PARSER_FEATURE;\r\n        features = Feature.config(features, Feature.AllowISO8601DateFormat, true);\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"\\\"2011-01-09\\\"\", ParserConfig.getGlobalInstance(), features);\r\n\r\n        java.sql.Timestamp date = parser.parseObject(java.sql.Timestamp.class);\r\n\r\n        Assert.assertEquals(new java.sql.Timestamp(1294502400000L), date);\r\n        parser.close();\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/DateTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.Date;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class DateTest extends TestCase {\n\n    public void test_0() throws Exception {\n        Assert.assertNull(JSON.parseObject(\"\", java.sql.Date.class));\n        Assert.assertNull(JSON.parseObject(null, java.sql.Date.class));\n        Assert.assertNull(JSON.parseObject(\"null\", java.sql.Date.class));\n        Assert.assertNull(JSON.parseObject(\"\\\"\\\"\", java.sql.Date.class));\n\n        Assert.assertNull(JSON.parseObject(\"\", java.util.Date.class));\n        Assert.assertNull(JSON.parseObject(null, java.util.Date.class));\n        Assert.assertNull(JSON.parseObject(\"null\", java.util.Date.class));\n        Assert.assertNull(JSON.parseObject(\"\\\"\\\"\", java.util.Date.class));\n\n        Assert.assertNull(JSON.parseObject(\"\", java.sql.Timestamp.class));\n        Assert.assertNull(JSON.parseObject(null, java.sql.Timestamp.class));\n        Assert.assertNull(JSON.parseObject(\"null\", java.sql.Timestamp.class));\n        Assert.assertNull(JSON.parseObject(\"\\\"\\\"\", java.sql.Timestamp.class));\n        \n        Assert.assertNull(JSON.parseObject(\"{date:\\\"\\\"}\", Entity.class).getDate());\n    }\n\n    public static class Entity {\n\n        private Date date;\n\n        public Date getDate() {\n            return date;\n        }\n\n        public void setDate(Date date) {\n            this.date = date;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/DefaultExtJSONParserTest.java",
    "content": "/*\r\n * Copyright 1999-2017 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.json.bvt.parser;\r\n\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToBigDecimal;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToBigInteger;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToBoolean;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToByte;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToDate;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToDouble;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToFloat;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToInt;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToLong;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToShort;\r\nimport static com.alibaba.fastjson.util.TypeUtils.castToString;\r\n\r\nimport java.io.Reader;\r\nimport java.lang.reflect.Method;\r\nimport java.lang.reflect.Type;\r\nimport java.math.BigDecimal;\r\nimport java.math.BigInteger;\r\nimport java.util.Calendar;\r\nimport java.util.Collection;\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport java.util.Map;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.Feature;\r\nimport com.alibaba.fastjson.parser.ParserConfig;\r\nimport com.alibaba.fastjson.util.TypeUtils;\r\n\r\nimport junit.framework.TestCase;\r\n\r\npublic class DefaultExtJSONParserTest extends TestCase {\r\n\r\n    public void test_parseObject() {\r\n        new DefaultJSONParser(\"\".toCharArray(), 0, ParserConfig.getGlobalInstance(), 0).close();\r\n        User user = new User();\r\n        user.setName(\"校长\");\r\n        user.setAge(3);\r\n        user.setSalary(new BigDecimal(\"123456789.0123\"));\r\n\r\n        String jsonString = JSON.toJSONString(user);\r\n\r\n        System.out.println(jsonString);\r\n\r\n        JSON.parseObject(jsonString);\r\n\r\n        DefaultJSONParser parser = new DefaultJSONParser(jsonString);\r\n        User user1 = new User();\r\n        parser.parseObject(user1);\r\n\r\n        Assert.assertEquals(user.getAge(), user1.getAge());\r\n        Assert.assertEquals(user.getName(), user1.getName());\r\n        Assert.assertEquals(user.getSalary(), user1.getSalary());\r\n    }\r\n\r\n    public void testCastCalendar() throws Exception {\r\n        Calendar c = Calendar.getInstance();\r\n        Date d = TypeUtils.castToDate(c);\r\n        Assert.assertEquals(c.getTime(), d);\r\n    }\r\n\r\n    public void testCast() throws Exception {\r\n        new TypeUtils();\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"\");\r\n\r\n        Assert.assertNull(castToByte(null));\r\n        Assert.assertNull(castToShort(null));\r\n        Assert.assertNull(castToInt(null));\r\n        Assert.assertNull(castToLong(null));\r\n        Assert.assertNull(castToBigInteger(null));\r\n        Assert.assertNull(castToBigDecimal(null));\r\n        Assert.assertNull(castToFloat(null));\r\n        Assert.assertNull(castToDouble(null));\r\n        Assert.assertNull(castToBoolean(null));\r\n        Assert.assertNull(castToDate(null));\r\n        Assert.assertNull(castToString(null));\r\n\r\n        Assert.assertEquals(12, castToByte(\"12\").intValue());\r\n        Assert.assertEquals(1234, castToShort(\"1234\").intValue());\r\n        Assert.assertEquals(1234, castToInt(\"1234\").intValue());\r\n        Assert.assertEquals(1234, castToLong(\"1234\").intValue());\r\n        Assert.assertEquals(1234, castToBigInteger(\"1234\").intValue());\r\n        Assert.assertEquals(1234, castToBigDecimal(\"1234\").intValue());\r\n        Assert.assertEquals(1234, castToFloat(\"1234\").intValue());\r\n        Assert.assertEquals(1234, castToDouble(\"1234\").intValue());\r\n\r\n        Assert.assertEquals(12, castToByte(12).intValue());\r\n        Assert.assertEquals(1234, castToShort(1234).intValue());\r\n        Assert.assertEquals(1234, castToInt(1234).intValue());\r\n        Assert.assertEquals(1234, castToLong(1234).intValue());\r\n        Assert.assertEquals(1234, castToBigInteger(1234).intValue());\r\n        Assert.assertEquals(1234, castToBigDecimal(1234).intValue());\r\n        Assert.assertEquals(1234, castToFloat(1234).intValue());\r\n        Assert.assertEquals(1234, castToDouble(1234).intValue());\r\n\r\n        Assert.assertEquals(Boolean.TRUE, castToBoolean(true));\r\n        Assert.assertEquals(Boolean.FALSE, castToBoolean(false));\r\n        Assert.assertEquals(Boolean.TRUE, castToBoolean(1));\r\n        Assert.assertEquals(Boolean.FALSE, castToBoolean(0));\r\n        Assert.assertEquals(Boolean.TRUE, castToBoolean(\"true\"));\r\n        Assert.assertEquals(Boolean.FALSE, castToBoolean(\"false\"));\r\n\r\n        long time = System.currentTimeMillis();\r\n        Assert.assertEquals(time, castToDate(new Date(time)).getTime());\r\n        Assert.assertEquals(time, castToDate(time).getTime());\r\n        Assert.assertEquals(time, castToDate(Long.toString(time)).getTime());\r\n\r\n        Assert.assertEquals(\"true\", castToString(\"true\"));\r\n        Assert.assertEquals(\"true\", castToString(true));\r\n        Assert.assertEquals(\"123\", castToString(123));\r\n\r\n        Assert.assertEquals(new BigDecimal(\"2\"), castToBigDecimal(\"2\"));\r\n        Assert.assertEquals(new BigDecimal(\"2\"), castToBigDecimal(new BigInteger(\"2\")));\r\n\r\n    }\r\n\r\n    public void test_casterror2() {\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"\");\r\n        {\r\n            Exception error = null;\r\n            try {\r\n                castToByte(new Object());\r\n            } catch (Exception ex) {\r\n                error = ex;\r\n            }\r\n            Assert.assertNotNull(error);\r\n        }\r\n        {\r\n            Exception error = null;\r\n            try {\r\n                castToShort(new Object());\r\n            } catch (Exception ex) {\r\n                error = ex;\r\n            }\r\n            Assert.assertNotNull(error);\r\n        }\r\n        {\r\n            Exception error = null;\r\n            try {\r\n                castToInt(new Object());\r\n            } catch (Exception ex) {\r\n                error = ex;\r\n            }\r\n            Assert.assertNotNull(error);\r\n        }\r\n        {\r\n            Exception error = null;\r\n            try {\r\n                castToLong(new Object());\r\n            } catch (Exception ex) {\r\n                error = ex;\r\n            }\r\n            Assert.assertNotNull(error);\r\n        }\r\n        {\r\n            Exception error = null;\r\n            try {\r\n                castToFloat(new Object());\r\n            } catch (Exception ex) {\r\n                error = ex;\r\n            }\r\n            Assert.assertNotNull(error);\r\n        }\r\n        {\r\n            Exception error = null;\r\n            try {\r\n                castToDouble(new Object());\r\n            } catch (Exception ex) {\r\n                error = ex;\r\n            }\r\n            Assert.assertNotNull(error);\r\n        }\r\n        {\r\n            Exception error = null;\r\n            try {\r\n                castToBigInteger(new Object());\r\n            } catch (Exception ex) {\r\n                error = ex;\r\n            }\r\n            Assert.assertNotNull(error);\r\n        }\r\n        {\r\n            Exception error = null;\r\n            try {\r\n                castToBigDecimal(new Object());\r\n            } catch (Exception ex) {\r\n                error = ex;\r\n            }\r\n            Assert.assertNotNull(error);\r\n        }\r\n        {\r\n            Exception error = null;\r\n            try {\r\n                castToDate(new Object());\r\n            } catch (Exception ex) {\r\n                error = ex;\r\n            }\r\n            Assert.assertNotNull(error);\r\n        }\r\n        {\r\n            Exception error = null;\r\n            try {\r\n                castToBoolean(new Object());\r\n            } catch (Exception ex) {\r\n                error = ex;\r\n            }\r\n            Assert.assertNotNull(error);\r\n        }\r\n    }\r\n\r\n    public void test_casterror() {\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"\");\r\n\r\n        {\r\n            Exception error = null;\r\n            try {\r\n                castToByte(\"xx\");\r\n            } catch (Exception ex) {\r\n                error = ex;\r\n            }\r\n            Assert.assertNotNull(error);\r\n        }\r\n        {\r\n            Exception error = null;\r\n            try {\r\n                castToShort(\"xx\");\r\n            } catch (Exception ex) {\r\n                error = ex;\r\n            }\r\n            Assert.assertNotNull(error);\r\n        }\r\n        {\r\n            Exception error = null;\r\n            try {\r\n                castToInt(\"xx\");\r\n            } catch (Exception ex) {\r\n                error = ex;\r\n            }\r\n            Assert.assertNotNull(error);\r\n        }\r\n        {\r\n            Exception error = null;\r\n            try {\r\n                castToLong(\"xx\");\r\n            } catch (Exception ex) {\r\n                error = ex;\r\n            }\r\n            Assert.assertNotNull(error);\r\n        }\r\n        {\r\n            Exception error = null;\r\n            try {\r\n                castToFloat(\"xx\");\r\n            } catch (Exception ex) {\r\n                error = ex;\r\n            }\r\n            Assert.assertNotNull(error);\r\n        }\r\n        {\r\n            Exception error = null;\r\n            try {\r\n                castToDouble(\"xx\");\r\n            } catch (Exception ex) {\r\n                error = ex;\r\n            }\r\n            Assert.assertNotNull(error);\r\n        }\r\n        {\r\n            Exception error = null;\r\n            try {\r\n                castToBigInteger(\"xx\");\r\n            } catch (Exception ex) {\r\n                error = ex;\r\n            }\r\n            Assert.assertNotNull(error);\r\n        }\r\n        {\r\n            Exception error = null;\r\n            try {\r\n                castToBigDecimal(\"xx\");\r\n            } catch (Exception ex) {\r\n                error = ex;\r\n            }\r\n            Assert.assertNotNull(error);\r\n        }\r\n        {\r\n            Exception error = null;\r\n            try {\r\n                castToDate(\"xx\");\r\n            } catch (Exception ex) {\r\n                error = ex;\r\n            }\r\n            Assert.assertNotNull(error);\r\n        }\r\n        {\r\n            Exception error = null;\r\n            try {\r\n                castToBoolean(\"xx\");\r\n            } catch (Exception ex) {\r\n                error = ex;\r\n            }\r\n            Assert.assertNotNull(error);\r\n        }\r\n    }\r\n\r\n    @SuppressWarnings(\"rawtypes\")\r\n    public void test_parseArrayWithType() throws Exception {\r\n\r\n        Method method = DefaultExtJSONParserTest.class.getMethod(\"f\", Collection.class, Collection.class, Collection.class, Collection.class, Collection.class,\r\n                                                                 Collection.class, Collection.class);\r\n        Type[] types = method.getGenericParameterTypes();\r\n        {\r\n            String text = \"[{\\\"old\\\":false,\\\"name\\\":\\\"校长\\\",\\\"age\\\":3,\\\"salary\\\":123456789.0123}]\";\r\n            DefaultJSONParser parser = new DefaultJSONParser(text);\r\n            Assert.assertEquals(true, ((List) parser.parseArrayWithType(types[0])).get(0) instanceof Map);\r\n        }\r\n        {\r\n            String text = \"[{\\\"old\\\":false,\\\"name\\\":\\\"校长\\\",\\\"age\\\":3,\\\"salary\\\":123456789.0123}]\";\r\n            DefaultJSONParser parser = new DefaultJSONParser(text);\r\n            Assert.assertEquals(true, ((List) parser.parseArrayWithType(types[1])).get(0) instanceof User);\r\n        }\r\n        {\r\n            Exception error = null;\r\n            try {\r\n                String text = \"[{\\\"old\\\":false,\\\"name\\\":\\\"校长\\\",\\\"age\\\":3,\\\"salary\\\":123456789.0123}]\";\r\n                DefaultJSONParser parser = new DefaultJSONParser(text);\r\n                parser.parseArrayWithType(types[2]);\r\n                ;\r\n            } catch (Exception ex) {\r\n                error = ex;\r\n            }\r\n            Assert.assertNotNull(error);\r\n        }\r\n        {\r\n            String text = \"[{\\\"old\\\":false,\\\"name\\\":\\\"校长\\\",\\\"age\\\":3,\\\"salary\\\":123456789.0123}]\";\r\n            DefaultJSONParser parser = new DefaultJSONParser(text);\r\n            Assert.assertEquals(true, ((List) parser.parseArrayWithType(types[3])).get(0) instanceof User);\r\n        }\r\n        {\r\n            Exception error = null;\r\n            try {\r\n                String text = \"[{\\\"old\\\":false,\\\"name\\\":\\\"校长\\\",\\\"age\\\":3,\\\"salary\\\":123456789.0123}]\";\r\n                DefaultJSONParser parser = new DefaultJSONParser(text);\r\n                parser.parseArrayWithType(types[4]);\r\n                ;\r\n            } catch (Exception ex) {\r\n                error = ex;\r\n            }\r\n            Assert.assertNotNull(error);\r\n        }\r\n        {\r\n            String text = \"[{\\\"old\\\":false,\\\"name\\\":\\\"校长\\\",\\\"age\\\":3,\\\"salary\\\":123456789.0123}]\";\r\n            DefaultJSONParser parser = new DefaultJSONParser(text);\r\n            Assert.assertEquals(true, ((List) parser.parseArrayWithType(types[5])).get(0) instanceof User);\r\n        }\r\n\r\n        {\r\n            Exception error = null;\r\n            try {\r\n                String text = \"[{\\\"old\\\":false,\\\"name\\\":\\\"校长\\\",\\\"age\\\":3,\\\"salary\\\":123456789.0123}]\";\r\n                DefaultJSONParser parser = new DefaultJSONParser(text);\r\n                parser.parseArrayWithType(types[6]);\r\n                ;\r\n            } catch (Exception ex) {\r\n                error = ex;\r\n            }\r\n            Assert.assertNotNull(error);\r\n        }\r\n    }\r\n\r\n    public void test_parseArrayWithType_error_1() throws Exception {\r\n        Method method = DefaultExtJSONParserTest.class.getMethod(\"f\", Collection.class, Collection.class, Collection.class, Collection.class, Collection.class,\r\n                                                                 Collection.class, Collection.class);\r\n        Type[] types = method.getGenericParameterTypes();\r\n\r\n        Exception error = null;\r\n        try {\r\n            String text = \"[{\\\"old\\\":false,\\\"name\\\":\\\"校长\\\",\\\"age\\\":3,\\\"salary\\\":123456789.0123}]\";\r\n            DefaultJSONParser parser = new DefaultJSONParser(text);\r\n            parser.parseArrayWithType(types[6]);\r\n            ;\r\n        } catch (Exception ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public static <T extends Object & Comparable<? super T>, T1 extends User> void f(Collection<?> p0, Collection<? extends User> p1,\r\n                                                                                     Collection<? super User> p2, Collection<User> p3, Collection<T> p4,\r\n                                                                                     Collection<T1> p5, Collection<T[]> p6) {\r\n\r\n    }\r\n\r\n    public void test_not_match() throws Exception {\r\n        String text = \"[{\\\"old\\\":false,\\\"name\\\":\\\"校长\\\",\\\"age\\\":3,\\\"salary\\\":123456789.0123, \\\"kxxx\\\":33}]\";\r\n        DefaultJSONParser parser = new DefaultJSONParser(text);\r\n        Assert.assertEquals(true, (parser.parseArray(User.class).get(0) instanceof User));\r\n    }\r\n\r\n    public void test_not_match_error() throws Exception {\r\n        Exception error = null;\r\n        try {\r\n            String text = \"[{\\\"old\\\":false,\\\"name\\\":\\\"校长\\\",\\\"age\\\":3,\\\"salary\\\":123456789.0123, \\\"kxxx\\\":33}]\";\r\n            DefaultJSONParser parser = new DefaultJSONParser(text);\r\n            parser.config(Feature.IgnoreNotMatch, false);\r\n            Assert.assertEquals(true, (parser.parseArray(User.class).get(0) instanceof User));\r\n        } catch (Exception ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error() throws Exception {\r\n        {\r\n            Exception error = null;\r\n            try {\r\n                String text = \"[{\\\"old\\\":false,\\\"name\\\":\\\"校长\\\",\\\"age\\\":3,\\\"salary\\\":123456789.0123]\";\r\n                DefaultJSONParser parser = new DefaultJSONParser(text);\r\n                parser.parseArray(User.class);\r\n            } catch (Exception ex) {\r\n                error = ex;\r\n            }\r\n            Assert.assertNotNull(error);\r\n        }\r\n        {\r\n            Exception error = null;\r\n            try {\r\n                String text = \"{\\\"reader\\\":3}\";\r\n                DefaultJSONParser parser = new DefaultJSONParser(text);\r\n                parser.parseObject(ErrorObject.class);\r\n            } catch (Exception ex) {\r\n                error = ex;\r\n            }\r\n            Assert.assertNotNull(error);\r\n        }\r\n        {\r\n            Exception error = null;\r\n            try {\r\n                String text = \"{\\\"name\\\":3}\";\r\n                DefaultJSONParser parser = new DefaultJSONParser(text);\r\n                parser.parseObject(ErrorObject2.class);\r\n            } catch (Exception ex) {\r\n                error = ex;\r\n            }\r\n            Assert.assertNotNull(error);\r\n        }\r\n    }\r\n\r\n    public static class ErrorObject {\r\n\r\n        private Reader reader;\r\n\r\n        public Reader getReader() {\r\n            return reader;\r\n        }\r\n\r\n        public void setReader(Reader reader) {\r\n            this.reader = reader;\r\n        }\r\n    }\r\n\r\n    public static class ErrorObject2 {\r\n\r\n        private String name;\r\n\r\n        public String getName() {\r\n            return name;\r\n        }\r\n\r\n        public void setName(String name) {\r\n            throw new UnsupportedOperationException();\r\n        }\r\n\r\n    }\r\n\r\n    public void test_error2() throws Exception {\r\n        {\r\n            Exception error = null;\r\n            try {\r\n                String text = \"{}\";\r\n                DefaultJSONParser parser = new DefaultJSONParser(text);\r\n                parser.parseArray(User.class);\r\n            } catch (Exception ex) {\r\n                error = ex;\r\n            }\r\n            Assert.assertNotNull(error);\r\n        }\r\n    }\r\n\r\n    public static class User {\r\n\r\n        private String     name;\r\n        private int        age;\r\n        private BigDecimal salary;\r\n        private Date       birthdate;\r\n        private boolean    old;\r\n\r\n        public boolean isOld() {\r\n            return old;\r\n        }\r\n\r\n        public void setOld(boolean old) {\r\n            this.old = old;\r\n        }\r\n\r\n        public Date getBirthdate() {\r\n            return birthdate;\r\n        }\r\n\r\n        public void setBirthdate(Date birthdate) {\r\n            this.birthdate = birthdate;\r\n        }\r\n\r\n        public String getName() {\r\n            return name;\r\n        }\r\n\r\n        public void setName(String name) {\r\n            this.name = name;\r\n        }\r\n\r\n        public int getAge() {\r\n            return age;\r\n        }\r\n\r\n        public void setAge(int age) {\r\n            this.age = age;\r\n        }\r\n\r\n        public void setage(int age) {\r\n            this.age = age;\r\n        }\r\n\r\n        public void set(int age) {\r\n            throw new UnsupportedOperationException();\r\n        }\r\n\r\n        public void get(int age) {\r\n            throw new UnsupportedOperationException();\r\n        }\r\n\r\n        public void is(int age) {\r\n            throw new UnsupportedOperationException();\r\n        }\r\n\r\n        public BigDecimal getSalary() {\r\n            return salary;\r\n        }\r\n\r\n        public void setSalary(BigDecimal salary) {\r\n            this.salary = salary;\r\n        }\r\n\r\n        public static void setFF() {\r\n\r\n        }\r\n\r\n        void setXX() {\r\n\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/DefaultExtJSONParserTest_0.java",
    "content": "package com.alibaba.json.bvt.parser;\r\n\r\nimport java.math.BigDecimal;\r\nimport java.util.Date;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.Feature;\r\n\r\npublic class DefaultExtJSONParserTest_0 extends TestCase {\r\n\r\n\tprotected void setUp() throws Exception {\r\n\t}\r\n\r\n\tpublic void test_0() throws Exception {\r\n\t\tDefaultJSONParser parser = new DefaultJSONParser(\"123\");\r\n\t\tAssert.assertEquals(new Integer(123), (Integer) parser.parse());\r\n\r\n\t\tparser.config(Feature.IgnoreNotMatch, false);\r\n\t}\r\n\r\n\tpublic void test_1() throws Exception {\r\n\t\tDefaultJSONParser parser = new DefaultJSONParser(\"[]\");\r\n\t\tparser.parseArray(Class.class);\r\n\t}\r\n\r\n\tpublic void test_2() throws Exception {\r\n\t\tDefaultJSONParser parser = new DefaultJSONParser(\"{}\");\r\n\t\tparser.parseObject(Object.class);\r\n\t}\r\n\r\n\tpublic void test_3() throws Exception {\r\n\t\tDefaultJSONParser parser = new DefaultJSONParser(\"{}\");\r\n\t\tparser.parseObject(User.class);\r\n\t}\r\n\r\n\tpublic void test_error_0() throws Exception {\r\n\t\tJSONException error = null;\r\n\t\ttry {\r\n\t\t\tDefaultJSONParser parser = new DefaultJSONParser(\"123\");\r\n\t\t\tparser.parseObject(Class.class);\r\n\t\t} catch (JSONException e) {\r\n\t\t\terror = e;\r\n\t\t}\r\n\t\tAssert.assertNotNull(error);\r\n\t}\r\n\r\n\tpublic void test_error_1() throws Exception {\r\n\t\tJSONException error = null;\r\n\t\ttry {\r\n\t\t\tDefaultJSONParser parser = new DefaultJSONParser(\"[{}]\");\r\n\t\t\tparser.parseArray(Class.class);\r\n\t\t} catch (JSONException e) {\r\n\t\t\terror = e;\r\n\t\t}\r\n\t\tAssert.assertNotNull(error);\r\n\t}\r\n\r\n\tpublic void test_error_2() throws Exception {\r\n\t\tJSONException error = null;\r\n\t\ttry {\r\n\t\t\tDefaultJSONParser parser = new DefaultJSONParser(\r\n\t\t\t\t\t\"{\\\"errorValue\\\":33}\");\r\n\t\t\tparser.parseArray(User.class);\r\n\t\t} catch (JSONException e) {\r\n\t\t\terror = e;\r\n\t\t}\r\n\t\tAssert.assertNotNull(error);\r\n\t}\r\n\r\n\tpublic void test_error_3() throws Exception {\r\n\t\tJSONException error = null;\r\n\t\ttry {\r\n\t\t\tDefaultJSONParser parser = new DefaultJSONParser(\r\n\t\t\t\t\t\"{\\\"age\\\"33}\");\r\n\t\t\tparser.parseArray(User.class);\r\n\t\t} catch (JSONException e) {\r\n\t\t\terror = e;\r\n\t\t}\r\n\t\tAssert.assertNotNull(error);\r\n\t}\r\n\r\n\tpublic void test_error_4() throws Exception {\r\n\t\tJSONException error = null;\r\n\t\ttry {\r\n\t\t\tDefaultJSONParser parser = new DefaultJSONParser(\r\n\t\t\t\t\t\"[\\\"age\\\":33}\");\r\n\t\t\tparser.parseObject(new User());\r\n\t\t} catch (JSONException e) {\r\n\t\t\terror = e;\r\n\t\t}\r\n\t\tAssert.assertNotNull(error);\r\n\t}\r\n\r\n\tpublic static class User {\r\n\r\n\t\tprivate String name;\r\n\t\tprivate int age;\r\n\t\tprivate BigDecimal salary;\r\n\t\tprivate Date birthdate;\r\n\t\tprivate boolean old;\r\n\r\n\t\tpublic boolean isOld() {\r\n\t\t\treturn old;\r\n\t\t}\r\n\r\n\t\tpublic void setOld(boolean old) {\r\n\t\t\tthis.old = old;\r\n\t\t}\r\n\r\n\t\tpublic Date getBirthdate() {\r\n\t\t\treturn birthdate;\r\n\t\t}\r\n\r\n\t\tpublic void setBirthdate(Date birthdate) {\r\n\t\t\tthis.birthdate = birthdate;\r\n\t\t}\r\n\r\n\t\tpublic String getName() {\r\n\t\t\treturn name;\r\n\t\t}\r\n\r\n\t\tpublic void setName(String name) {\r\n\t\t\tthis.name = name;\r\n\t\t}\r\n\r\n\t\tpublic int getAge() {\r\n\t\t\treturn age;\r\n\t\t}\r\n\r\n\t\tpublic void setAge(int age) {\r\n\t\t\tthis.age = age;\r\n\t\t}\r\n\r\n\t\tpublic void setage(int age) {\r\n\t\t\tthrow new UnsupportedOperationException();\r\n\t\t}\r\n\r\n\t\tpublic void set(int age) {\r\n\t\t\tthrow new UnsupportedOperationException();\r\n\t\t}\r\n\r\n\t\tpublic void get(int age) {\r\n\t\t\tthrow new UnsupportedOperationException();\r\n\t\t}\r\n\r\n\t\tpublic void is(int age) {\r\n\t\t\tthrow new UnsupportedOperationException();\r\n\t\t}\r\n\r\n\t\tpublic BigDecimal getSalary() {\r\n\t\t\treturn salary;\r\n\t\t}\r\n\r\n\t\tpublic void setSalary(BigDecimal salary) {\r\n\t\t\tthis.salary = salary;\r\n\t\t}\r\n\r\n\t\tpublic static void setFF() {\r\n\r\n\t\t}\r\n\r\n\t\tpublic void setErrorValue(int value) {\r\n\t\t\tthrow new RuntimeException();\r\n\t\t}\r\n\r\n\t\tvoid setXX() {\r\n\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/DefaultExtJSONParserTest_1.java",
    "content": "package com.alibaba.json.bvt.parser;\r\n\r\nimport java.math.BigDecimal;\r\nimport java.math.BigInteger;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.json.test.entity.TestEntity;\r\n\r\npublic class DefaultExtJSONParserTest_1 extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"{\\\"f1\\\":true}\");\r\n        TestEntity entity = parser.parseObject(TestEntity.class);\r\n        Assert.assertEquals(true, entity.isF1());\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"{\\\"f2\\\":true}\");\r\n        TestEntity entity = parser.parseObject(TestEntity.class);\r\n        Assert.assertEquals(Boolean.TRUE, entity.getF2());\r\n    }\r\n\r\n    public void f_test_2() throws Exception {\r\n        TestEntity a = new TestEntity();\r\n        a.setF1(true);\r\n        a.setF2(Boolean.TRUE);\r\n        a.setF3((byte) 123);\r\n        a.setF4((byte) 123);\r\n        a.setF5((short) 123);\r\n        a.setF6((short) 123);\r\n        a.setF7((int) 123);\r\n        a.setF8((int) 123);\r\n        a.setF9((long) 123);\r\n        a.setF10((long) 123);\r\n        a.setF11(new BigInteger(\"123\"));\r\n        a.setF12(new BigDecimal(\"123\"));\r\n        a.setF13(\"abc\");\r\n        a.setF14(null);\r\n        a.setF15(12.34F);\r\n        a.setF16(12.35F);\r\n        a.setF17(12.345D);\r\n        a.setF18(12.345D);\r\n\r\n        String text = JSON.toJSONString(a);\r\n        System.out.println(text);\r\n\r\n        TestEntity b = new TestEntity();\r\n        {\r\n            DefaultJSONParser parser = new DefaultJSONParser(text);\r\n            parser.parseObject(b);\r\n        }\r\n\r\n        Assert.assertEquals(\"f1\", a.isF1(), b.isF1());\r\n        Assert.assertEquals(\"f2\", a.getF2(), b.getF2());\r\n        Assert.assertEquals(\"f3\", a.getF3(), b.getF3());\r\n        Assert.assertEquals(\"f4\", a.getF4(), b.getF4());\r\n        Assert.assertEquals(\"f5\", a.getF5(), b.getF5());\r\n        Assert.assertEquals(\"f6\", a.getF6(), b.getF6());\r\n        Assert.assertEquals(\"f7\", a.getF7(), b.getF7());\r\n        Assert.assertEquals(\"f8\", a.getF8(), b.getF8());\r\n        Assert.assertEquals(\"f9\", a.getF9(), b.getF9());\r\n        Assert.assertEquals(a.getF10(), b.getF10());\r\n        Assert.assertEquals(a.getF11(), b.getF11());\r\n        Assert.assertEquals(a.getF12(), b.getF12());\r\n        Assert.assertEquals(a.getF13(), b.getF13());\r\n        Assert.assertEquals(a.getF14(), b.getF14());\r\n        Assert.assertEquals(a.getF15(), b.getF15());\r\n        Assert.assertEquals(a.getF16(), b.getF16());\r\n        Assert.assertEquals(a.getF17(), b.getF17());\r\n        Assert.assertEquals(a.getF18(), b.getF18());\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/DefaultExtJSONParserTest_2.java",
    "content": "package com.alibaba.json.bvt.parser;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.LinkedHashMap;\r\nimport java.util.Map;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.Feature;\r\nimport com.alibaba.json.bvt.parser.DefaultExtJSONParserTest.User;\r\n\r\npublic class DefaultExtJSONParserTest_2 extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"{'a':3}\");\r\n        parser.config(Feature.AllowSingleQuotes, true);\r\n        A a = parser.parseObject(A.class);\r\n        Assert.assertEquals(3, a.getA());\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"{a:3}\");\r\n        parser.config(Feature.AllowUnQuotedFieldNames, true);\r\n        A a = parser.parseObject(A.class);\r\n        Assert.assertEquals(3, a.getA());\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"{a:3}\");\r\n        parser.config(Feature.AllowUnQuotedFieldNames, true);\r\n        Map a = parser.parseObject(Map.class);\r\n        Assert.assertEquals(3, a.get(\"a\"));\r\n    }\r\n\r\n    public void test_3() throws Exception {\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"{a:3}\");\r\n        parser.config(Feature.AllowUnQuotedFieldNames, true);\r\n        HashMap a = parser.parseObject(HashMap.class);\r\n        Assert.assertEquals(3, a.get(\"a\"));\r\n    }\r\n\r\n    public void test_4() throws Exception {\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"{a:3}\");\r\n        parser.config(Feature.AllowUnQuotedFieldNames, true);\r\n        LinkedHashMap a = parser.parseObject(LinkedHashMap.class);\r\n        Assert.assertEquals(3, a.get(\"a\"));\r\n    }\r\n\r\n    public void test_error_0() throws Exception {\r\n        Exception error = null;\r\n        try {\r\n            String text = \"[{\\\"old\\\":false,\\\"name\\\":\\\"校长\\\",\\\"age\\\":3,\\\"salary\\\":123456789.0123]\";\r\n            DefaultJSONParser parser = new DefaultJSONParser(text);\r\n            parser.parseArray(User.class);\r\n        } catch (Exception ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error_1() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            DefaultJSONParser parser = new DefaultJSONParser(\"{'a'3}\");\r\n            parser.config(Feature.AllowSingleQuotes, true);\r\n            parser.parseObject(A.class);\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error_2() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            DefaultJSONParser parser = new DefaultJSONParser(\"{a 3}\");\r\n            parser.config(Feature.AllowUnQuotedFieldNames, true);\r\n            parser.parseObject(A.class);\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error_3() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            DefaultJSONParser parser = new DefaultJSONParser(\"{\");\r\n            parser.config(Feature.AllowUnQuotedFieldNames, true);\r\n            parser.parseObject(A.class);\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error_4() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            DefaultJSONParser parser = new DefaultJSONParser(\"{\\\"a\\\"3}\");\r\n            parser.parseObject(A.class);\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error_5() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            DefaultJSONParser parser = new DefaultJSONParser(\"{a:3}\");\r\n            parser.config(Feature.AllowUnQuotedFieldNames, false);\r\n            parser.parseObject(A.class);\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error_6() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            DefaultJSONParser parser = new DefaultJSONParser(\"{'a':3}\");\r\n            parser.config(Feature.AllowSingleQuotes, false);\r\n            parser.parseObject(A.class);\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public static class A {\r\n\r\n        private int a;\r\n\r\n        public int getA() {\r\n            return a;\r\n        }\r\n\r\n        public void setA(int a) {\r\n            this.a = a;\r\n        }\r\n\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/DefaultExtJSONParserTest_3.java",
    "content": "package com.alibaba.json.bvt.parser;\r\n\r\nimport java.math.BigDecimal;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.Feature;\r\nimport com.alibaba.fastjson.parser.ParserConfig;\r\n\r\npublic class DefaultExtJSONParserTest_3 extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"{v1:3}\");\r\n        parser.config(Feature.AllowUnQuotedFieldNames, true);\r\n        A a = parser.parseObject(A.class);\r\n        Assert.assertEquals(3, a.getV1());\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"{v1:'3'}\");\r\n        parser.config(Feature.AllowUnQuotedFieldNames, true);\r\n        parser.config(Feature.AllowSingleQuotes, true);\r\n        A a = parser.parseObject(A.class);\r\n        Assert.assertEquals(3, a.getV1());\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"{v1:\\\"3\\\"}\");\r\n        parser.config(Feature.AllowUnQuotedFieldNames, true);\r\n        parser.config(Feature.AllowSingleQuotes, true);\r\n        A a = parser.parseObject(A.class);\r\n        Assert.assertEquals(3, a.getV1());\r\n    }\r\n\r\n    public void test_3() throws Exception {\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"{o1:{}}\");\r\n        parser.config(Feature.AllowUnQuotedFieldNames, true);\r\n        parser.config(Feature.AllowSingleQuotes, true);\r\n        A a = parser.parseObject(A.class);\r\n        Assert.assertEquals(true, a.getO1() != null);\r\n    }\r\n\r\n    public void test_4() throws Exception {\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"{v5:'3'}\");\r\n        parser.config(Feature.AllowUnQuotedFieldNames, true);\r\n        parser.config(Feature.AllowSingleQuotes, true);\r\n        A a = parser.parseObject(A.class);\r\n        Assert.assertEquals(3L, a.getV5().longValue());\r\n    }\r\n\r\n    public void test_5() throws Exception {\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"{v5:\\\"3\\\"}\");\r\n        parser.config(Feature.AllowUnQuotedFieldNames, true);\r\n        parser.config(Feature.AllowSingleQuotes, true);\r\n        A a = parser.parseObject(A.class);\r\n        Assert.assertEquals(3L, a.getV5().longValue());\r\n    }\r\n\r\n    public void test_6() throws Exception {\r\n        int features = JSON.DEFAULT_PARSER_FEATURE;\r\n        features = Feature.config(features, Feature.AllowSingleQuotes, true);\r\n\r\n        Assert.assertEquals(true, Feature.isEnabled(features, Feature.AllowSingleQuotes));\r\n\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"'abc'\", ParserConfig.getGlobalInstance(), features);\r\n\r\n        Assert.assertEquals(\"abc\", parser.parse());\r\n    }\r\n\r\n    public void test_7() throws Exception {\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"123\");\r\n\r\n        ParserConfig mapping = new ParserConfig();\r\n        parser.setConfig(mapping);\r\n        Assert.assertEquals(mapping, parser.getConfig());\r\n    }\r\n\r\n    public static class A {\r\n\r\n        private int        v1;\r\n        private String     v2;\r\n        private boolean    v3;\r\n        private BigDecimal v4;\r\n        private Long       v5;\r\n\r\n        private B          o1;\r\n\r\n        public A(){\r\n\r\n        }\r\n\r\n        public Long getV5() {\r\n            return v5;\r\n        }\r\n\r\n        public void setV5(Long v5) {\r\n            this.v5 = v5;\r\n        }\r\n\r\n        public B getO1() {\r\n            return o1;\r\n        }\r\n\r\n        public void setO1(B o1) {\r\n            this.o1 = o1;\r\n        }\r\n\r\n        public int getV1() {\r\n            return v1;\r\n        }\r\n\r\n        public void setV1(int v1) {\r\n            this.v1 = v1;\r\n        }\r\n\r\n        public String getV2() {\r\n            return v2;\r\n        }\r\n\r\n        public void setV2(String v2) {\r\n            this.v2 = v2;\r\n        }\r\n\r\n        public boolean isV3() {\r\n            return v3;\r\n        }\r\n\r\n        public void setV3(boolean v3) {\r\n            this.v3 = v3;\r\n        }\r\n\r\n        public BigDecimal getV4() {\r\n            return v4;\r\n        }\r\n\r\n        public void setV4(BigDecimal v4) {\r\n            this.v4 = v4;\r\n        }\r\n\r\n    }\r\n\r\n    public static class B {\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/DefaultExtJSONParserTest_4.java",
    "content": "package com.alibaba.json.bvt.parser;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Arrays;\r\nimport java.util.List;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSONObject;\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.Feature;\r\n\r\npublic class DefaultExtJSONParserTest_4 extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        List<?> res = Arrays.asList(1, 2, 3);\r\n        String[] tests = { \"[1,2,3]\", \"[1,,2,3]\", \"[1,2,,,3]\", \"[1 2,,,3]\", \"[1 2 3]\", \"[1, 2, 3,,]\", \"[,,1, 2, 3,,]\", };\r\n\r\n        for (String t : tests) {\r\n            DefaultJSONParser ext = new DefaultJSONParser(t);\r\n            ext.config(Feature.AllowArbitraryCommas, true);\r\n            List<Object> extRes = ext.parseArray(Object.class);\r\n            Assert.assertEquals(res, extRes);\r\n\r\n            DefaultJSONParser basic = new DefaultJSONParser(t);\r\n            basic.config(Feature.AllowArbitraryCommas, true);\r\n            List<Object> basicRes = new ArrayList<Object>();\r\n            basic.parseArray(basicRes);\r\n            Assert.assertEquals(res, basicRes);\r\n        }\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        JSONObject res = new JSONObject();\r\n        res.put(\"a\", 1);\r\n        res.put(\"b\", 2);\r\n        res.put(\"c\", 3);\r\n\r\n        String[] tests = { \"{ 'a':1, 'b':2, 'c':3 }\", \"{ 'a':1,,'b':2, 'c':3 }\", \"{,'a':1, 'b':2, 'c':3 }\", \"{'a':1, 'b':2, 'c':3,,}\",\r\n                \"{,,'a':1,,,,'b':2,'c':3,,,,,}\", };\r\n\r\n        for (String t : tests) {\r\n            DefaultJSONParser ext = new DefaultJSONParser(t);\r\n            ext.config(Feature.AllowArbitraryCommas, true);\r\n\r\n            JSONObject extRes = ext.parseObject();\r\n            Assert.assertEquals(res, extRes);\r\n\r\n            DefaultJSONParser basic = new DefaultJSONParser(t);\r\n            basic.config(Feature.AllowArbitraryCommas, true);\r\n            JSONObject basicRes = basic.parseObject();\r\n            Assert.assertEquals(res, basicRes);\r\n        }\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        A res = new A();\r\n        res.setA(1);\r\n        res.setB(2);\r\n        res.setC(3);\r\n\r\n        String[] tests = { \"{ 'a':1, 'b':2, 'c':3 }\", \"{ 'a':1,,'b':2, 'c':3 }\", \"{,'a':1, 'b':2, 'c':3 }\", \"{'a':1, 'b':2, 'c':3,,}\",\r\n                \"{,,'a':1,,,,'b':2,,'c':3,,,,,}\", };\r\n\r\n        for (String t : tests) {\r\n            DefaultJSONParser ext = new DefaultJSONParser(t);\r\n            ext.config(Feature.AllowArbitraryCommas, true);\r\n\r\n            A extRes = ext.parseObject(A.class);\r\n            Assert.assertEquals(res, extRes);\r\n        }\r\n    }\r\n\r\n    public static class A {\r\n\r\n        private int a, b, c;\r\n\r\n        public A(){\r\n        }\r\n\r\n        public int getA() {\r\n            return a;\r\n        }\r\n\r\n        public void setA(int a) {\r\n            this.a = a;\r\n        }\r\n\r\n        public int getB() {\r\n            return b;\r\n        }\r\n\r\n        public void setB(int b) {\r\n            this.b = b;\r\n        }\r\n\r\n        public int getC() {\r\n            return c;\r\n        }\r\n\r\n        public void setC(int c) {\r\n            this.c = c;\r\n        }\r\n\r\n        @Override\r\n        public boolean equals(Object obj) {\r\n            A o = (A) obj;\r\n            return a == o.a && b == o.b && c == o.c;\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/DefaultExtJSONParserTest_5.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.Feature;\n\npublic class DefaultExtJSONParserTest_5 extends TestCase {\n    \n    public void test_0() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"{,,,,\\\"value\\\":3,\\\"id\\\":1}\");\n        parser.config(Feature.AllowArbitraryCommas, true);\n        Entity entity = new Entity();\n        parser.parseObject(entity);\n        Assert.assertEquals(3, entity.getValue());\n    }\n    \n    public void test_1() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"{\\\"value\\\":3,\\\"id\\\":1}\");\n        parser.config(Feature.AllowArbitraryCommas, false);\n        Entity entity = new Entity();\n        parser.parseObject(entity);\n        Assert.assertEquals(3, entity.getValue());\n    }\n\n    public static class Entity {\n\n        private int value;\n\n        public int getValue() {\n            return value;\n        }\n\n        public void setValue(int value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/DefaultExtJSONParserTest_6.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.Feature;\n\npublic class DefaultExtJSONParserTest_6 extends TestCase {\n\n    public void test_0() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"{value:{,,,,\\\"value\\\":3,\\\"id\\\":1}}\");\n        parser.config(Feature.AllowArbitraryCommas, true);\n        Entity entity = new Entity();\n        parser.parseObject(entity);\n        Assert.assertEquals(3, entity.getValue().getValue());\n    }\n\n    public void test_1() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"{'value':{\\\"value\\\":3,\\\"id\\\":1}}\");\n        parser.config(Feature.AllowArbitraryCommas, false);\n        Entity entity = new Entity();\n        parser.parseObject(entity);\n        Assert.assertEquals(3, entity.getValue().getValue());\n    }\n\n    public static class Entity {\n\n        private V1 value;\n\n        public V1 getValue() {\n            return value;\n        }\n\n        public void setValue(V1 value) {\n            this.value = value;\n        }\n\n    }\n\n    public static class V1 {\n\n        private int value;\n\n        public int getValue() {\n            return value;\n        }\n\n        public void setValue(int value) {\n            this.value = value;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/DefaultExtJSONParserTest_7.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.Feature;\n\npublic class DefaultExtJSONParserTest_7 extends TestCase {\n\n    public void test_parse() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"1\");\n        Assert.assertEquals(Integer.valueOf(1), parser.parse());\n\n        Exception error = null;\n        try {\n            parser.parse();\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_parse_str() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"\\\"1\\\"\");\n        parser.config(Feature.AllowISO8601DateFormat, true);\n        Assert.assertEquals(\"1\", parser.parse());\n\n    }\n\n    public void test_parseArray() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"[1]\");\n        parser.config(Feature.AllowArbitraryCommas, false);\n        List<String> list = new ArrayList<String>();\n        parser.parseArray(String.class, list);\n        Assert.assertEquals(1, list.size());\n    }\n\n    public void test_parseArray_error() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"[1,2}\");\n        parser.config(Feature.AllowArbitraryCommas, false);\n        List<String> list = new ArrayList<String>();\n\n        Exception error = null;\n        try {\n            parser.parseArray(String.class, list);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/DefaultExtJSONParser_parseArray.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.lang.reflect.Type;\nimport java.math.BigDecimal;\nimport java.util.ArrayList;\nimport java.util.Date;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.JSONToken;\n\npublic class DefaultExtJSONParser_parseArray extends TestCase {\n\n    public void test_0() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"[1,2,,,3]\");\n        List list = new ArrayList();\n        parser.parseArray(int.class, list);\n        Assert.assertEquals(\"[1, 2, 3]\", list.toString());\n    }\n\n    public void test_1() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"[1,2,3]\");\n        parser.config(Feature.AllowArbitraryCommas, true);\n        List list = new ArrayList();\n        parser.parseArray(int.class, list);\n        Assert.assertEquals(\"[1, 2, 3]\", list.toString());\n    }\n\n    public void test_2() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"['1','2','3']\");\n        parser.config(Feature.AllowArbitraryCommas, true);\n        List list = new ArrayList();\n        parser.parseArray(String.class, list);\n        Assert.assertEquals(\"[1, 2, 3]\", list.toString());\n        Assert.assertEquals(\"1\", list.get(0));\n    }\n\n    public void test_3() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"[1,2,3]\");\n        parser.config(Feature.AllowArbitraryCommas, true);\n        List list = new ArrayList();\n        parser.parseArray(BigDecimal.class, list);\n        Assert.assertEquals(\"[1, 2, 3]\", list.toString());\n        Assert.assertEquals(new BigDecimal(\"1\"), list.get(0));\n    }\n\n    public void test_4() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"[1,2,3,null]\");\n        parser.config(Feature.AllowArbitraryCommas, true);\n        List list = new ArrayList();\n        parser.parseArray(BigDecimal.class, list);\n        Assert.assertEquals(\"[1, 2, 3, null]\", list.toString());\n        Assert.assertEquals(new BigDecimal(\"1\"), list.get(0));\n    }\n\n    public void test_5() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"[1,2,3,null]\");\n        Object[] array = parser.parseArray(new Type[] { Integer.class, BigDecimal.class, Long.class, String.class });\n        Assert.assertEquals(new Integer(1), array[0]);\n        Assert.assertEquals(new BigDecimal(\"2\"), array[1]);\n        Assert.assertEquals(new Long(3), array[2]);\n        Assert.assertEquals(null, array[3]);\n    }\n\n    public void test_error() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"{}\");\n        Exception error = null;\n        try {\n            parser.parseArray(new ArrayList());\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_6() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"[1.2]\");\n        parser.config(Feature.UseBigDecimal, false);\n        ArrayList list = new ArrayList();\n        parser.parseArray(list);\n        Assert.assertEquals(Double.valueOf(1.2), list.get(0));\n    }\n\n    public void test_7() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        DefaultJSONParser parser = new DefaultJSONParser(\"[\\\"2011-01-09T13:49:53.254\\\", \\\"xxx\\\", true, false, null, {}]\");\n        parser.config(Feature.AllowISO8601DateFormat, true);\n        ArrayList list = new ArrayList();\n        parser.parseArray(list);\n        Assert.assertEquals(new Date(1294552193254L), list.get(0));\n        Assert.assertEquals(\"xxx\", list.get(1));\n        Assert.assertEquals(Boolean.TRUE, list.get(2));\n        Assert.assertEquals(Boolean.FALSE, list.get(3));\n        Assert.assertEquals(null, list.get(4));\n        Assert.assertEquals(new JSONObject(), list.get(5));\n    }\n\n    public void test_8() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        DefaultJSONParser parser = new DefaultJSONParser(\"\\\"2011-01-09T13:49:53.254\\\"\");\n        parser.config(Feature.AllowISO8601DateFormat, true);\n        Object value = parser.parse();\n        Assert.assertEquals(new Date(1294552193254L), value);\n    }\n\n    public void test_9() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"\");\n        parser.config(Feature.AllowISO8601DateFormat, true);\n        Object value = parser.parse();\n        Assert.assertEquals(null, value);\n    }\n\n    public void test_error_2() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"{}\");\n        Exception error = null;\n        try {\n            parser.accept(JSONToken.NULL);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_10() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"[1,2,3]\");\n        Object[] array = parser.parseArray(new Type[] { Integer[].class });\n        Integer[] values = (Integer[]) array[0];\n        Assert.assertEquals(new Integer(1), values[0]);\n        Assert.assertEquals(new Integer(2), values[1]);\n        Assert.assertEquals(new Integer(3), values[2]);\n    }\n\n    public void test_11() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"[1]\");\n        Object[] array = parser.parseArray(new Type[] { String.class });\n        Assert.assertEquals(\"1\", array[0]);\n    }\n\n    public void test_12() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"['1']\");\n        Object[] array = parser.parseArray(new Type[] { int.class });\n        Assert.assertEquals(new Integer(1), array[0]);\n    }\n\n    public void test_13() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"['1']\");\n        Object[] array = parser.parseArray(new Type[] { Integer.class });\n        Assert.assertEquals(new Integer(1), array[0]);\n    }\n\n    public void test_14() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"[]\");\n        Object[] array = parser.parseArray(new Type[] {});\n        Assert.assertEquals(0, array.length);\n    }\n\n    public void test_15() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"[1,null]\");\n        ArrayList list = new ArrayList();\n        parser.config(Feature.AllowISO8601DateFormat, false);\n        parser.parseArray(String.class, list);\n        Assert.assertEquals(\"1\", list.get(0));\n        Assert.assertEquals(null, list.get(1));\n    }\n\n    public void test_16() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"[[1]]\");\n        parser.config(Feature.AllowISO8601DateFormat, false);\n        Object[] array = parser.parseArray(new Type[] { new TypeReference<List<Integer>>() {\n        }.getType() });\n        Assert.assertEquals(new Integer(1), ((List<Integer>) (array[0])).get(0));\n    }\n\n    public void test_17() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"[]\");\n        Object[] array = parser.parseArray(new Type[] { Integer[].class });\n        Integer[] values = (Integer[]) array[0];\n        Assert.assertEquals(0, values.length);\n    }\n\n    public void test_18() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"null\");\n        parser.config(Feature.AllowISO8601DateFormat, false);\n        List<Integer> list = (List<Integer>) parser.parseArrayWithType(new TypeReference<List<Integer>>() {\n        }.getType());\n        Assert.assertEquals(null, list);\n    }\n\n    public void test_error_var() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"[1,2,null }\");\n        parser.config(Feature.AllowISO8601DateFormat, false);\n\n        Exception error = null;\n        try {\n            Object[] array = parser.parseArray(new Type[] { Integer[].class });\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_3() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"[1,null }\");\n        ArrayList list = new ArrayList();\n        parser.config(Feature.AllowISO8601DateFormat, false);\n\n        Exception error = null;\n        try {\n            parser.parseArray(String.class, list);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_4() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"[1,null }\");\n        parser.config(Feature.AllowISO8601DateFormat, false);\n\n        Exception error = null;\n        try {\n            parser.parseArray(new Type[] { String.class });\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_5() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"[1,null }\");\n        ArrayList list = new ArrayList();\n        parser.config(Feature.AllowISO8601DateFormat, false);\n\n        Exception error = null;\n        try {\n            parser.parseArray(String.class, list);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_6() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"{1,null }\");\n        parser.config(Feature.AllowISO8601DateFormat, false);\n\n        Exception error = null;\n        try {\n            parser.parseArray(new Type[] { String.class });\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_7() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"{1}\");\n        parser.config(Feature.AllowISO8601DateFormat, false);\n\n        Exception error = null;\n        try {\n            parser.parseArray(new Type[] {});\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_8() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"[1,2,3 4]\");\n        parser.config(Feature.AllowISO8601DateFormat, false);\n\n        Exception error = null;\n        try {\n            parser.parseArray(new Type[] { Integer.class });\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/DefaultExtJSONParser_parseArray_2.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.lang.reflect.Type;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.Feature;\n\n@SuppressWarnings(\"deprecation\")\npublic class DefaultExtJSONParser_parseArray_2 extends TestCase {\n\n\tpublic void test_0() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"[['1']]\");\n        parser.config(Feature.AllowISO8601DateFormat, false);\n        List<List<Integer>> list = (List<List<Integer>>) parser.parseArrayWithType(new TypeReference<List<List<Integer>>>() {\n        }.getType());\n        Assert.assertEquals(new Integer(1), list.get(0).get(0));\n    }\n\n    public void test_1() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"['1','2']\");\n        parser.config(Feature.AllowISO8601DateFormat, false);\n        List<Object> list = new ArrayList<Object>();\n        parser.parseArray(Integer.class, list);\n        Assert.assertEquals(new Integer(1), list.get(0));\n        Assert.assertEquals(new Integer(2), list.get(1));\n    }\n\n    public void test_error_0() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"['1','2'}\");\n        parser.config(Feature.AllowISO8601DateFormat, false);\n\n        Exception error = null;\n        try {\n            List<Object> list = new ArrayList<Object>();\n            parser.parseArray(Integer.class, list);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_1() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"[['1']]\");\n        parser.config(Feature.AllowISO8601DateFormat, false);\n\n        Exception error = null;\n        try {\n            parser.parseArrayWithType(new TypeReference<Map<?, ?>>() {\n            }.getType());\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_2() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"[new X()]\");\n        parser.config(Feature.AllowISO8601DateFormat, false);\n\n        List list = new ArrayList();\n        Exception error = null;\n        try {\n            parser.parseArray(list);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_3() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"[] a\");\n        parser.config(Feature.AllowISO8601DateFormat, false);\n\n        List list = new ArrayList();\n        Exception error = null;\n        try {\n            parser.parseArray(list);\n            parser.close();\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_4() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"['1','2'}\");\n        parser.config(Feature.AllowISO8601DateFormat, false);\n\n        Exception error = null;\n        try {\n            parser.parseArray(new Type[] {});\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_5() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"[]\");\n        parser.config(Feature.AllowISO8601DateFormat, false);\n\n        Assert.assertEquals(1, parser.parseArray(new Type[] { Integer[].class }).length);\n    }\n    \n    public void test_error_6() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"['1' 1 '2'}\");\n        parser.config(Feature.AllowISO8601DateFormat, false);\n\n        Exception error = null;\n        try {\n            parser.parseArray(new Type[] {Integer.class});\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/DefaultJSONParserTest2.java",
    "content": "package com.alibaba.json.bvt.parser;\r\n\r\nimport java.util.Map;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.Feature;\r\n\r\npublic class DefaultJSONParserTest2 extends TestCase {\r\n\r\n    public void test_empty() throws Exception {\r\n        String text = \"\";\r\n        assertNull(JSON.parse(text));\r\n        assertNull(JSON.parseObject(text));\r\n        assertNull(JSON.parseObject(text, Object.class));\r\n        assertNull(JSON.parseObject(text, Map.class));\r\n        assertNull(JSON.parseObject(text, Entity.class));\r\n    }\r\n\r\n    public static class Entity {\r\n\r\n    }\r\n\r\n    public void test_0() throws Exception {\r\n        String text = \"{}\";\r\n        Map map = (Map) JSON.parse(text);\r\n        Assert.assertEquals(0, map.size());\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            String text = \"{}a\";\r\n            Map map = (Map) JSON.parse(text);\r\n            Assert.assertEquals(0, map.size());\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            DefaultJSONParser parser = new DefaultJSONParser(\"{'a'3}\");\r\n            parser.config(Feature.AllowSingleQuotes, true);\r\n            parser.parse();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_3() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            DefaultJSONParser parser = new DefaultJSONParser(\"{a 3}\");\r\n            parser.config(Feature.AllowUnQuotedFieldNames, true);\r\n            parser.parse();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_4() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            DefaultJSONParser parser = new DefaultJSONParser(\"{\");\r\n            parser.config(Feature.AllowUnQuotedFieldNames, true);\r\n            parser.parse();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_5() throws Exception {\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"{}\");\r\n        Map map = parser.parseObject();\r\n        Assert.assertEquals(0, map.size());\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/DefaultJSONParserTest_charArray.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.ParserConfig;\n\npublic class DefaultJSONParserTest_charArray extends TestCase {\n    public void test_getInput() {\n        String text = \"{}\";\n        char[] chars = text.toCharArray();\n        DefaultJSONParser parser = new DefaultJSONParser(chars, chars.length, ParserConfig.getGlobalInstance(), 0);\n        \n        Assert.assertEquals(text, parser.getInput());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/DefaultJSONParserTest_comma.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.ParserConfig;\n\npublic class DefaultJSONParserTest_comma extends TestCase {\n\n    public void test_getInput() {\n        String text = \"{,,}\";\n        char[] chars = text.toCharArray();\n        DefaultJSONParser parser = new DefaultJSONParser(chars, chars.length, ParserConfig.getGlobalInstance(), 0);\n\n        JSONException error = null;\n        try {\n            parser.parseObject();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/DefaultJSONParserTest_date.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\n\npublic class DefaultJSONParserTest_date extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_date() {\n        String text = \"{\\\"date\\\":\\\"2011-01-09T13:49:53.254\\\"}\";\n        char[] chars = text.toCharArray();\n        DefaultJSONParser parser = new DefaultJSONParser(chars, chars.length, ParserConfig.getGlobalInstance(), 0);\n        parser.config(Feature.AllowISO8601DateFormat, true);\n        JSONObject json = parser.parseObject();\n        Assert.assertEquals(new Date(1294552193254L), json.get(\"date\"));\n    }\n    \n    \n    public void test_date2() {\n        String text = \"{\\\"date\\\":\\\"xxxxx\\\"}\";\n        char[] chars = text.toCharArray();\n        DefaultJSONParser parser = new DefaultJSONParser(chars, chars.length, ParserConfig.getGlobalInstance(), 0);\n        parser.config(Feature.AllowISO8601DateFormat, true);\n        JSONObject json = parser.parseObject();\n        Assert.assertEquals(\"xxxxx\", json.get(\"date\"));\n    }\n    \n    public void test_date3() {\n        String text = \"{\\\"1234567890abcdefghijklmnopqrst1234567890abcdefghijklmnopqrst1234567890abcdefghijklmnopqrst\\\\t\\\":\\\"xxxxx\\\"}\";\n        char[] chars = text.toCharArray();\n        DefaultJSONParser parser = new DefaultJSONParser(chars, chars.length, ParserConfig.getGlobalInstance(), 0);\n        parser.config(Feature.AllowISO8601DateFormat, true);\n        JSONObject json = parser.parseObject();\n        Assert.assertEquals(\"xxxxx\", json.get(\"1234567890abcdefghijklmnopqrst1234567890abcdefghijklmnopqrst1234567890abcdefghijklmnopqrst\\t\"));\n    }\n    \n    public void test_date4() {\n        String text = \"{\\\"1234567890abcdefghijklmnopqrst1234567890abcdefghijklmnopqrst1234567890abcdefghijklmnopqrst1234567890abcdefghijklmnopqrst1234567890abcdefghijklmnopqrst1234567890abcdefghijklmnopqrst\\\\t\\\":\\\"xxxxx\\\"}\";\n        char[] chars = text.toCharArray();\n        DefaultJSONParser parser = new DefaultJSONParser(chars, chars.length, ParserConfig.getGlobalInstance(), 0);\n        parser.config(Feature.AllowISO8601DateFormat, true);\n        JSONObject json = parser.parseObject();\n        Assert.assertEquals(\"xxxxx\", json.get(\"1234567890abcdefghijklmnopqrst1234567890abcdefghijklmnopqrst1234567890abcdefghijklmnopqrst1234567890abcdefghijklmnopqrst1234567890abcdefghijklmnopqrst1234567890abcdefghijklmnopqrst\\t\"));\n    }\n    \n    public void test_dateFormat() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"{}\");\n        parser.setDateFormat(\"yyyy-DD-mm\");\n        \n        SimpleDateFormat format = new SimpleDateFormat(\"yyyy-DD-mm\", JSON.defaultLocale);\n        format.setTimeZone(JSON.defaultTimeZone);\n        \n        parser.setDateFormat(format);\n        parser.getDateFomartPattern();\n        parser.getDateFormat();\n        parser.parse();\n        parser.close();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/DefaultJSONParserTest_error.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.ParserConfig;\n\npublic class DefaultJSONParserTest_error extends TestCase {\n\n    public void test_error_1() {\n        String text = \"{\\\"obj\\\":{}]}\";\n        char[] chars = text.toCharArray();\n        DefaultJSONParser parser = new DefaultJSONParser(chars, chars.length, ParserConfig.getGlobalInstance(), 0);\n\n        JSONException error = null;\n        try {\n            parser.parseObject();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_2() {\n        String text = \"{\\\"obj\\\":[]]}\";\n        char[] chars = text.toCharArray();\n        DefaultJSONParser parser = new DefaultJSONParser(chars, chars.length, ParserConfig.getGlobalInstance(), 0);\n\n        JSONException error = null;\n        try {\n            parser.parseObject();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_3() {\n        String text = \"{\\\"obj\\\":true]}\";\n        char[] chars = text.toCharArray();\n        DefaultJSONParser parser = new DefaultJSONParser(chars, chars.length, ParserConfig.getGlobalInstance(), 0);\n\n        JSONException error = null;\n        try {\n            parser.parseObject();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/EmptyImmutableTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.io.Serializable;\nimport java.util.*;\n\npublic class EmptyImmutableTest extends TestCase {\n    public void test_0() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"values\\\":[],\\\"map\\\":{}}\", VO.class);\n    }\n\n    public static class VO {\n        private List values = new EmptyList();\n        private Map map = new EmptyMap();\n\n        public List getValues() {\n            return values;\n        }\n\n        public Map getMap() {\n            return map;\n        }\n    }\n\n    private static class EmptyMap extends HashMap {\n        public void putAll(Map m) {\n            throw new UnsupportedOperationException();\n        }\n    }\n\n    private static class EmptyList<E>\n            extends AbstractList<E>\n            implements RandomAccess, Serializable {\n        private static final long serialVersionUID = 8842843931221139166L;\n\n        public Iterator<E> iterator() {\n            throw new UnsupportedOperationException();\n        }\n        public ListIterator<E> listIterator() {\n            throw new UnsupportedOperationException();\n        }\n\n        public boolean addAll(Collection<? extends E> c) {\n            throw new UnsupportedOperationException();\n        }\n\n        public int size() {return 0;}\n        public boolean isEmpty() {return true;}\n\n        public boolean contains(Object obj) {return false;}\n        public boolean containsAll(Collection<?> c) { return c.isEmpty(); }\n\n        public Object[] toArray() { return new Object[0]; }\n\n        public <T> T[] toArray(T[] a) {\n            if (a.length > 0)\n                a[0] = null;\n            return a;\n        }\n\n        public E get(int index) {\n            throw new IndexOutOfBoundsException(\"Index: \"+index);\n        }\n\n        public boolean equals(Object o) {\n            return (o instanceof List) && ((List<?>)o).isEmpty();\n        }\n\n        public int hashCode() { return 1; }\n\n        public void sort(Comparator<? super E> c) {\n        }\n\n\n        // Preserves singleton property\n        private Object readResolve() {\n            throw new UnsupportedOperationException();\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/EnumParserTest.java",
    "content": "package com.alibaba.json.bvt.parser;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.deserializer.EnumDeserializer;\r\n\r\npublic class EnumParserTest extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        String text = \"\\\"A\\\"\";\r\n        DefaultJSONParser parser = new DefaultJSONParser(text);\r\n\r\n        Type type = parser.parseObject(Type.class);\r\n        Assert.assertEquals(Type.A, type);\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        String text = \"0\";\r\n        DefaultJSONParser parser = new DefaultJSONParser(text);\r\n\r\n        Type type = parser.parseObject(Type.class);\r\n        Assert.assertEquals(Type.A, type);\r\n    }\r\n\r\n    public void test_error() throws Exception {\r\n        String text = \"\\\"C\\\"\";\r\n        DefaultJSONParser parser = new DefaultJSONParser(text);\r\n\r\n        assertNull(parser.parseObject(Type.class));\r\n    }\r\n\r\n    public void test_error_1() throws Exception {\r\n        Exception error = null;\r\n        try {\r\n            String text = \"4\";\r\n            DefaultJSONParser parser = new DefaultJSONParser(text);\r\n\r\n            parser.parseObject(Type.class);\r\n        } catch (Exception ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error_2() throws Exception {\r\n        Exception error = null;\r\n        try {\r\n            String text = \"4\";\r\n            DefaultJSONParser parser = new DefaultJSONParser(text);\r\n\r\n            parser.parseObject(TypeA.class);\r\n        } catch (Exception ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error_3() throws Exception {\r\n        Exception error = null;\r\n        try {\r\n            String text = \"4\";\r\n            DefaultJSONParser parser = new DefaultJSONParser(text);\r\n\r\n            new EnumDeserializer(Object.class).deserialze(parser, Object.class, null);\r\n        } catch (Exception ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error_4() throws Exception {\r\n        Exception error = null;\r\n        try {\r\n            String text = \"true\";\r\n            DefaultJSONParser parser = new DefaultJSONParser(text);\r\n\r\n            new EnumDeserializer(Object.class).deserialze(parser, Object.class, null);\r\n        } catch (Exception ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public static enum Type {\r\n        A, B\r\n    }\r\n\r\n    private static enum TypeA {\r\n        A, B\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/FastMatchCheckTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.deserializer.NumberDeserializer;\nimport com.alibaba.fastjson.parser.deserializer.SqlDateDeserializer;\nimport com.alibaba.fastjson.serializer.AtomicCodec;\nimport com.alibaba.fastjson.serializer.CharacterCodec;\nimport com.alibaba.fastjson.serializer.MiscCodec;\nimport com.alibaba.fastjson.serializer.ObjectArrayCodec;\n\nimport junit.framework.TestCase;\n\npublic class FastMatchCheckTest extends TestCase {\n    public void test_match() throws Exception {\n        Assert.assertEquals(JSONToken.LBRACKET, AtomicCodec.instance.getFastMatchToken());\n        Assert.assertEquals(JSONToken.LITERAL_STRING, MiscCodec.instance.getFastMatchToken());\n        Assert.assertEquals(JSONToken.LITERAL_INT, NumberDeserializer.instance.getFastMatchToken());\n        Assert.assertEquals(JSONToken.LITERAL_INT, SqlDateDeserializer.instance.getFastMatchToken());\n        Assert.assertEquals(JSONToken.LBRACKET, ObjectArrayCodec.instance.getFastMatchToken());\n        Assert.assertEquals(JSONToken.LITERAL_STRING, CharacterCodec.instance.getFastMatchToken());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/FeatureCountTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\npublic class FeatureCountTest extends TestCase {\n    public void testZ_0() throws Exception {\n        Feature[] features = Feature.class.getEnumConstants();\n        System.out.println(features.length);\n        assertTrue(features.length < 32);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/FeatureParserTest.java",
    "content": "package com.alibaba.json.bvt.parser;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.JSONObject;\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.Feature;\r\n\r\npublic class FeatureParserTest extends TestCase {\r\n\r\n    public void test_AllowSingleQuotes_0() throws Exception {\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"{'a':3}\");\r\n        parser.config(Feature.AllowSingleQuotes, true);\r\n        JSONObject json = (JSONObject) parser.parse();\r\n        Assert.assertEquals(1, json.size());\r\n        Assert.assertEquals(new Integer(3), (Integer) json.getInteger(\"a\"));\r\n    }\r\n\r\n    public void test_AllowSingleQuotes_1() throws Exception {\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"{'a':'3'}\");\r\n        parser.config(Feature.AllowSingleQuotes, true);\r\n        JSONObject json = (JSONObject) parser.parse();\r\n        Assert.assertEquals(1, json.size());\r\n        Assert.assertEquals(\"3\", (String) json.get(\"a\"));\r\n    }\r\n\r\n    public void test_AllowUnQuotedFieldNames_0() throws Exception {\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"{a:3}\");\r\n        parser.config(Feature.AllowUnQuotedFieldNames, true);\r\n        JSONObject json = (JSONObject) parser.parse();\r\n        Assert.assertEquals(1, json.size());\r\n        Assert.assertEquals(new Integer(3), (Integer) json.getInteger(\"a\"));\r\n    }\r\n\r\n    public void test_error_0() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            DefaultJSONParser parser = new DefaultJSONParser(\"{'a':3}\");\r\n            parser.config(Feature.AllowSingleQuotes, false);\r\n            parser.parse();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error_1() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            DefaultJSONParser parser = new DefaultJSONParser(\"{\\\"a\\\":'3'}\");\r\n            parser.config(Feature.AllowSingleQuotes, false);\r\n            parser.parse();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error_2() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            DefaultJSONParser parser = new DefaultJSONParser(\"{a:3}\");\r\n            parser.config(Feature.AllowUnQuotedFieldNames, false);\r\n            parser.parse();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/FeatureTest.java",
    "content": "package com.alibaba.json.bvt.parser;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.Feature;\r\nimport com.alibaba.fastjson.util.IOUtils;\r\n\r\npublic class FeatureTest extends TestCase {\r\n\r\n    public void test_default() throws Exception {\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"\");\r\n\r\n        Assert.assertEquals(false, parser.isEnabled(Feature.AllowComment));\r\n        Assert.assertEquals(true, parser.isEnabled(Feature.AllowSingleQuotes));\r\n        Assert.assertEquals(true, parser.isEnabled(Feature.AllowUnQuotedFieldNames));\r\n        Assert.assertEquals(true, parser.isEnabled(Feature.AutoCloseSource));\r\n        Assert.assertEquals(true, parser.isEnabled(Feature.InternFieldNames));\r\n    }\r\n\r\n    public void test_config() throws Exception {\r\n        new IOUtils();\r\n\r\n        DefaultJSONParser parser = new DefaultJSONParser(\"\");\r\n\r\n        Assert.assertEquals(false, parser.isEnabled(Feature.AllowComment));\r\n        Assert.assertEquals(true, parser.isEnabled(Feature.AllowSingleQuotes));\r\n        Assert.assertEquals(true, parser.isEnabled(Feature.AllowUnQuotedFieldNames));\r\n        Assert.assertEquals(true, parser.isEnabled(Feature.AutoCloseSource));\r\n        Assert.assertEquals(true, parser.isEnabled(Feature.InternFieldNames));\r\n\r\n        parser.config(Feature.AllowComment, true);\r\n        Assert.assertEquals(true, parser.isEnabled(Feature.AllowComment));\r\n\r\n        parser.config(Feature.InternFieldNames, false);\r\n        Assert.assertEquals(false, parser.isEnabled(Feature.InternFieldNames));\r\n    }\r\n\r\n    public void test_count() throws Exception {\r\n        assertTrue(Feature.values().length < 32);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/InetSocketAddressTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.net.InetSocketAddress;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\npublic class InetSocketAddressTest extends TestCase {\n\n    public void test_parse() throws Exception {\n        JSON.parseObject(\"{\\\"address\\\":'10.20.133.23',\\\"port\\\":123,\\\"xx\\\":33}\", InetSocketAddress.class);\n    }\n\n    public void test_parse_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"address\\\":'10.20.133.23',\\\"port\\\":'12.3',\\\"xx\\\":33}\", InetSocketAddress.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONArrayParseTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class JSONArrayParseTest extends TestCase {\n    public void test_array() throws Exception {\n        String text = \"[{id:123}]\";\n        List<Map<String, Integer>> array = JSON.parseObject(text, new TypeReference<List<Map<String, Integer>>>() {});\n        Assert.assertEquals(1, array.size());\n        Map<String, Integer> map  = array.get(0);\n        Assert.assertEquals(123, map.get(\"id\").intValue());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONLexerAllowCommentTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.IOException;\nimport java.io.InputStream;\n\nimport junit.framework.TestCase;\n\nimport org.apache.commons.io.IOUtils;\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.JSONReaderScanner;\n\npublic class JSONLexerAllowCommentTest extends TestCase {\n    public void test_0() throws Exception {\n        \n        String jsonWithComment = \"{ /*tes****\\n\\r\\n*t*/\\\"a\\\":1 /*****test88888*****/ /*test*/ , /*test*/ //test\\n //est\\n \\\"b\\\":2}\";\n        JSONObject object = JSON.parseObject(jsonWithComment, Feature.AllowComment, Feature.OrderedField);\n        System.out.println(object.toJSONString());\n        Assert.assertEquals(\"{\\\"a\\\":1,\\\"b\\\":2}\",object.toJSONString());\n\n        DefaultJSONParser parser = new DefaultJSONParser(new JSONReaderScanner(jsonWithComment,\n            Feature.AllowComment.getMask() | Feature.OrderedField.getMask()));\n        \n        JSONObject object1 = parser.parseObject();\n        Assert.assertEquals(\"{\\\"a\\\":1,\\\"b\\\":2}\",object1.toJSONString());\n        System.out.println(object1.toJSONString());\n\n    }\n\n    public void test_1() throws IOException {\n        String resource = \"json/json_with_comment.json\";\n        InputStream is = Thread.currentThread().getContextClassLoader()\n            .getResourceAsStream(resource);\n        String text = IOUtils.toString(is);\n        is.close();\n\n        JSONObject object = JSON.parseObject(text, Feature.AllowComment, Feature.OrderedField);\n        System.out.println(object.toJSONString());\n\n        Assert\n            .assertEquals(\n                \"{\\\"hello\\\":\\\"asafsadf\\\",\\\"test\\\":1,\\\"array\\\":[\\\"10000sfsaf\\\",100,{\\\"nihao\\\":{\\\"test\\\":\\\"sdfasdf\\\"}}],\\\"object\\\":{\\\"teset\\\":1000}}\",\n                object.toJSONString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONLexerTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\n\npublic class JSONLexerTest extends TestCase {\n    public void test_0 () throws Exception {\n        StringBuilder buf = new StringBuilder(\"{\\\"value\\\":\\\"\");\n        for (int i = 0; i < 256; ++i) {\n            buf.append('a');\n        }\n        buf.append(\"\\\\n\");\n        buf.append(\"\\\"}\");\n        \n        JSONObject json = JSON.parseObject(buf.toString());\n        Assert.assertEquals(257, json.getString(\"value\").length());\n        Assert.assertEquals('a', json.getString(\"value\").charAt(255));\n        Assert.assertEquals('\\n', json.getString(\"value\").charAt(256));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONLexerTest_10.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class JSONLexerTest_10 extends TestCase {\n\n    public void test_a() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"type\\\":\\\"AAA\", VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class VO {\n\n        public VO(){\n\n        }\n\n        private String type;\n\n        public String getType() {\n            return type;\n        }\n\n        public void setType(String type) {\n            this.type = type;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONLexerTest_11.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.ArrayList;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class JSONLexerTest_11 extends TestCase {\n\n    public void test_a() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"type\\\":[\\\"AAA\\\"]}\", VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class VO {\n\n        public VO(){\n\n        }\n\n        private MyList<String> type;\n\n        public MyList<String> getType() {\n            return type;\n        }\n\n        public void setType(MyList<String> type) {\n            this.type = type;\n        }\n\n    }\n    \n    public static class MyList<T> extends ArrayList<T> {\n        public MyList() {\n            throw new RuntimeException();\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONLexerTest_12.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class JSONLexerTest_12 extends TestCase {\n\n    public void test_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"type\\\":92233720368547758071}\", VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_a() throws Exception {\n        Assert.assertEquals(123L, JSON.parseObject(\"{\\\"vo\\\":{\\\"type\\\":123}}\", A.class).getVo().getType());\n    }\n    \n    public void test_error_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"vo\\\":{\\\"type\\\":123}[\", A.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_3() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"vo\\\":{\\\"type\\\":123]\", A.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class A {\n\n        private VO vo;\n\n        public VO getVo() {\n            return vo;\n        }\n\n        public void setVo(VO vo) {\n            this.vo = vo;\n        }\n\n    }\n\n    public static class VO {\n\n        public VO(){\n\n        }\n\n        private long type;\n\n        public long getType() {\n            return type;\n        }\n\n        public void setType(long type) {\n            this.type = type;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONLexerTest_13.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class JSONLexerTest_13 extends TestCase {\n\n    public void test_e() throws Exception {\n        Assert.assertTrue(123e3D == JSON.parseObject(\"{\\\"vo\\\":{\\\"type\\\":123e3}}\", A.class).getVo().getType());\n    }\n\n    public void test_E() throws Exception {\n        Assert.assertTrue(123e3D == JSON.parseObject(\"{\\\"vo\\\":{\\\"type\\\":123E3}}\", A.class).getVo().getType());\n    }\n    \n    public void test_e_plus() throws Exception {\n        Assert.assertTrue(123e3D == JSON.parseObject(\"{\\\"vo\\\":{\\\"type\\\":123e+3}}\", A.class).getVo().getType());\n    }\n    \n    public void test_E_plus() throws Exception {\n        Assert.assertTrue(123e3D == JSON.parseObject(\"{\\\"vo\\\":{\\\"type\\\":123E+3}}\", A.class).getVo().getType());\n    }\n    \n    public void test_e_minus() throws Exception {\n        Assert.assertTrue(123e-3D == JSON.parseObject(\"{\\\"vo\\\":{\\\"type\\\":123e-3}}\", A.class).getVo().getType());\n    }\n    \n    public void test_E_minus() throws Exception {\n        Assert.assertTrue(123e-3D == JSON.parseObject(\"{\\\"vo\\\":{\\\"type\\\":123E-3}}\", A.class).getVo().getType());\n    }\n\n    public void test_error_3() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"vo\\\":{\\\"type\\\":123]\", A.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class A {\n\n        private VO vo;\n\n        public VO getVo() {\n            return vo;\n        }\n\n        public void setVo(VO vo) {\n            this.vo = vo;\n        }\n\n    }\n\n    public static class VO {\n\n        public VO(){\n\n        }\n\n        private double type;\n\n        public double getType() {\n            return type;\n        }\n\n        public void setType(double type) {\n            this.type = type;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONLexerTest_14.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class JSONLexerTest_14 extends TestCase {\n\n    public void test_e() throws Exception {\n        StringBuffer buf = new StringBuffer();\n        buf.append(\"{\\\"type\\\":'\");\n        for (int i = 0; i < 100; ++i) {\n            buf.append('a');\n        }\n        buf.append(\"\\\\t\");\n        buf.append(\"'}\");\n        VO vo = JSON.parseObject(buf.toString(), VO.class);\n        String type = vo.getType();\n        for (int i = 0; i < 100; ++i) {\n            Assert.assertEquals('a', type.charAt(i));\n        }\n        Assert.assertEquals('\\t', type.charAt(100));\n        Assert.assertEquals(101, type.length());\n    }\n\n\n    public static class VO {\n        public VO(){\n\n        }\n\n        private String type;\n\n        public String getType() {\n            return type;\n        }\n\n        public void setType(String type) {\n            this.type = type;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONLexerTest_15.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class JSONLexerTest_15 extends TestCase {\n\n    public void test_e() throws Exception {\n        Assert.assertTrue(123e2D == ((Double) JSON.parse(\"123e2D\")).doubleValue());\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONLexerTest_16.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class JSONLexerTest_16 extends TestCase {\n\n    public void test_0() throws Exception {\n        Assert.assertEquals(123, JSON.parseObject(\"{\\\"\\\\0\\\":123}\").get(\"\\0\"));\n    }\n\n    public void test_1() throws Exception {\n        Assert.assertEquals(123, JSON.parseObject(\"{\\\"\\\\1\\\":123}\").get(\"\\1\"));\n    }\n    \n    public void test_2() throws Exception {\n        Assert.assertEquals(123, JSON.parseObject(\"{\\\"\\\\2\\\":123}\").get(\"\\2\"));\n    }\n    \n    public void test_3() throws Exception {\n        Assert.assertEquals(123, JSON.parseObject(\"{\\\"\\\\3\\\":123}\").get(\"\\3\"));\n    }\n    \n    public void test_4() throws Exception {\n        Assert.assertEquals(123, JSON.parseObject(\"{\\\"\\\\4\\\":123}\").get(\"\\4\"));\n    }\n    \n    public void test_5() throws Exception {\n        Assert.assertEquals(123, JSON.parseObject(\"{\\\"\\\\5\\\":123}\").get(\"\\5\"));\n    }\n    \n    public void test_6() throws Exception {\n        Assert.assertEquals(123, JSON.parseObject(\"{\\\"\\\\6\\\":123}\").get(\"\\6\"));\n    }\n    \n    public void test_7() throws Exception {\n        Assert.assertEquals(123, JSON.parseObject(\"{\\\"\\\\7\\\":123}\").get(\"\\7\"));\n    }\n    \n    public void test_8() throws Exception {\n        Assert.assertEquals(123, JSON.parseObject(\"{\\\"\\\\b\\\":123}\").get(\"\\b\"));\n    }\n    \n    public void test_9() throws Exception {\n        Assert.assertEquals(123, JSON.parseObject(\"{\\\"\\\\t\\\":123}\").get(\"\\t\"));\n    }\n    \n    public void test_10() throws Exception {\n        Assert.assertEquals(123, JSON.parseObject(\"{\\\"\\\\n\\\":123}\").get(\"\\n\"));\n    }\n    \n    public void test_39() throws Exception {\n        Assert.assertEquals(123, JSON.parseObject(\"{\\\"\\\\'\\\":123}\").get(\"\\'\"));\n    }\n    \n    public void test_40() throws Exception {\n        Assert.assertEquals(123, JSON.parseObject(\"{\\\"\\\\xFF\\\":123}\").get(\"\\u00FF\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONLexerTest_2.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class JSONLexerTest_2 extends TestCase {\n\n    public void test_0() throws Exception {\n        VO vo = (VO) JSON.parseObject(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.parser.JSONLexerTest_2$VO\\\"}\", VO.class);\n        Assert.assertNotNull(vo);\n    }\n\n    public void test_1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.parser.JSONLexerTest_2$VO1\\\"}\", VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.parser.JSONLexerTest_2$A\\\"}\", VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_a() throws Exception {\n        P a = JSON.parseObject(\"{\\\"vo\\\":{\\\"@type\\\":\\\"com.alibaba.json.bvt.parser.JSONLexerTest_2$VO\\\"}}\", P.class);\n        Assert.assertNotNull(a);\n    }\n\n    public void test_list() throws Exception {\n        List<VO> list = JSON.parseObject(\"[{\\\"@type\\\":\\\"com.alibaba.json.bvt.parser.JSONLexerTest_2$VO\\\"}]\",\n                                         new TypeReference<List<VO>>() {\n                                         });\n        Assert.assertNotNull(list);\n        Assert.assertNotNull(list.get(0));\n    }\n\n    public void test_list_2() throws Exception {\n        List<VO> list = JSON.parseObject(\"[{\\\"@type\\\":\\\"com.alibaba.json.bvt.parser.JSONLexerTest_2$VO\\\"},{}]\",\n                                         new TypeReference<List<VO>>() {\n                                         });\n        Assert.assertNotNull(list);\n        Assert.assertEquals(2, list.size());\n        Assert.assertNotNull(list.get(0));\n        Assert.assertNotNull(list.get(1));\n    }\n\n    public void test_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[{\\\"@type\\\":\\\"com.alibaba.json.bvt.parser.JSONLexerTest_2$VO\\\"}[]\",\n                             new TypeReference<List<VO>>() {\n                             });\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class P {\n\n        private VO vo;\n\n        public VO getVo() {\n            return vo;\n        }\n\n        public void setVo(VO vo) {\n            this.vo = vo;\n        }\n\n    }\n\n    public static class VO {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n    }\n\n    public static class VO1 {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n    }\n\n    public static class A {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONLexerTest_3.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class JSONLexerTest_3 extends TestCase {\n\n    public void test_matchField() throws Exception {\n        JSON.parseObject(\"{\\\"val\\\":{}}\", VO.class);\n    }\n\n    public static class VO {\n\n        private A value;\n\n        public A getValue() {\n            return value;\n        }\n\n        public void setValue(A value) {\n            this.value = value;\n        }\n\n    }\n    \n    public static class A {\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONLexerTest_4.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class JSONLexerTest_4 extends TestCase {\n\n    public void test_scanFieldString() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"value\\\":\\\"abc\\\"}\", VO.class);\n        Assert.assertEquals(\"abc\", vo.getValue());\n    }\n\n    public static class VO {\n\n        private String value;\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONLexerTest_5.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.LinkedList;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class JSONLexerTest_5 extends TestCase {\n\n    public void test_scanFieldString() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"values\\\":[\\\"abc\\\"]}\", VO.class);\n        Assert.assertEquals(\"abc\", vo.getValues().get(0));\n    }\n\n    public static class VO {\n\n        public LinkedList<String> values;\n\n        public LinkedList<String> getValues() {\n            return values;\n        }\n\n        public void setValues(LinkedList<String> values) {\n            this.values = values;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONLexerTest_6.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.LinkedList;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class JSONLexerTest_6 extends TestCase {\n\n    public void test_scanFieldString() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"values\\\":[\\\"abc\\\"]}\", VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class VO {\n\n        public MyList<String> values;\n\n        public MyList<String> getValues() {\n            return values;\n        }\n\n        public void setValues(MyList<String> values) {\n            this.values = values;\n        }\n    }\n\n    @SuppressWarnings(\"serial\")\n    private class MyList<T> extends LinkedList<T> {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONLexerTest_7.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class JSONLexerTest_7 extends TestCase {\n\n    public void test_treeSet() throws Exception {\n        JSON.parse(\"TreeSet[]\");\n    }\n\n    public void test_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parse(\"T_eeSet[]\");\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parse(\"Tr_eSet[]\");\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parse(\"Tre_Set[]\");\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_3() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parse(\"Tree_et[]\");\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    \n    public void test_error_4() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parse(\"TreeS_t[]\");\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    \n    public void test_error_5() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parse(\"TreeSe_[]\");\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_6() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parse(\"TreeSet_[]\");\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_7() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parse(\"XreeSet[]\");\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONLexerTest_8.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.parser.JSONReaderScanner;\nimport com.alibaba.fastjson.parser.JSONScanner;\nimport com.alibaba.fastjson.parser.JSONToken;\n\npublic class JSONLexerTest_8 extends TestCase {\n\n    public void test_ident() throws Exception {\n        JSONScanner lexer = new JSONScanner(\"123\");\n        lexer.nextIdent();\n        org.junit.Assert.assertEquals(JSONToken.LITERAL_INT, lexer.token());\n        lexer.close();\n    }\n\n    public void test_ident_2() throws Exception {\n        JSONScanner lexer = new JSONScanner(\"\\uFEFF123\");\n        lexer.nextIdent();\n        org.junit.Assert.assertEquals(JSONToken.LITERAL_INT, lexer.token());\n        lexer.close();\n    }\n    \n    public void test_ident_3() throws Exception {\n        JSONReaderScanner lexer = new JSONReaderScanner(\"\\uFEFF123\");\n        lexer.nextIdent();\n        org.junit.Assert.assertEquals(JSONToken.LITERAL_INT, lexer.token());\n        lexer.close();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONLexerTest_9.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class JSONLexerTest_9 extends TestCase {\n\n    public void test_ident() throws Exception {\n        JSON.parseObject(\"\\\"AAA\\\"\", Type.class);\n    }\n\n    public void test_a() throws Exception {\n        JSON.parseObject(\"{\\\"type\\\":\\\"AAA\\\"}\", VO.class);\n    }\n    \n    public void test_b() throws Exception {\n        JSON.parseObject(\"{\\\"tt\\\":\\\"AA\\\"}\", VO.class);\n    }\n    \n    public void test_value() throws Exception {\n        JSON.parseObject(\"{\\\"type\\\":'AAA'}\", VO.class);\n    }\n    \n    public void test_value2() throws Exception {\n        JSON.parseObject(\"{\\\"type\\\":\\\"AAA\\\",id:0}\", VO.class);\n    }\n\n    public static class VO {\n\n        public VO(){\n\n        }\n\n        private Type type;\n\n        public Type getType() {\n            return type;\n        }\n\n        public void setType(Type type) {\n            this.type = type;\n        }\n\n    }\n\n    public static enum Type {\n        AAA, BBB, CCC\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONLexerTest_set.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class JSONLexerTest_set extends TestCase {\n\n    public void test_treeSet() throws Exception {\n        JSON.parse(\"Set[]\");\n    }\n\n    public void test_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parse(\"S_t[]\");\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n   \n    public void test_error_1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parse(\"Se_[]\");\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    \n    public void test_error_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parse(\"Set_[]\");\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_3() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parse(\"Xet[]\");\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderScannerTest__entity_boolean.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.Reader;\nimport java.io.StringReader;\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONReaderScanner;\n\npublic class JSONReaderScannerTest__entity_boolean extends TestCase {\n\n    public void test_scanInt() throws Exception {\n        StringBuffer buf = new StringBuffer();\n        buf.append('[');\n        for (int i = 0; i < 10; ++i) {\n            if (i != 0) {\n                buf.append(',');\n            }\n            //1000000000000\n            //\n            if (i % 2 == 0) {\n                buf.append(\"{\\\"id\\\":true}\");    \n            } else {\n                buf.append(\"{\\\"id\\\":false}\");\n            }\n            \n        }\n        buf.append(']');\n\n        Reader reader = new StringReader(buf.toString());\n\n        JSONReaderScanner scanner = new JSONReaderScanner(reader);\n\n        DefaultJSONParser parser = new DefaultJSONParser(scanner);\n        List<VO> array = parser.parseArray(VO.class);\n        for (int i = 0; i < array.size(); ++i) {\n            if (i % 2 == 0) {\n                Assert.assertEquals(true, array.get(i).getId());    \n            } else {\n                Assert.assertEquals(false, array.get(i).getId());\n            }\n        }\n    }\n\n    public static class VO {\n\n        private boolean id;\n\n        public boolean getId() {\n            return id;\n        }\n\n        public void setId(boolean id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderScannerTest__entity_double.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.Reader;\nimport java.io.StringReader;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONReaderScanner;\n\npublic class JSONReaderScannerTest__entity_double extends TestCase {\n\n    public void test_scanFloat() throws Exception {\n        StringBuffer buf = new StringBuffer();\n        buf.append('[');\n        for (int i = 0; i < 1024; ++i) {\n            if (i != 0) {\n                buf.append(',');\n            }\n            buf.append(\"{\\\"id\\\":\" + i + \".0}\");\n        }\n        buf.append(']');\n\n        Reader reader = new StringReader(buf.toString());\n\n        JSONReaderScanner scanner = new JSONReaderScanner(reader);\n\n        DefaultJSONParser parser = new DefaultJSONParser(scanner);\n        List<VO> array = parser.parseArray(VO.class);\n        for (int i = 0; i < array.size(); ++i) {\n            Assert.assertTrue((double) i == array.get(i).getId());\n        }\n        parser.close();\n    }\n\n    public static class VO {\n\n        private double id;\n\n        public double getId() {\n            return id;\n        }\n\n        public void setId(double id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderScannerTest__entity_double_2.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.Reader;\nimport java.io.StringReader;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONReaderScanner;\n\npublic class JSONReaderScannerTest__entity_double_2 extends TestCase {\n\n    public void test_scanFloat() throws Exception {\n        StringBuffer buf = new StringBuffer();\n        buf.append('[');\n        for (int i = 0; i < 1024; ++i) {\n            if (i != 0) {\n                buf.append(',');\n            }\n            buf.append(\"{\\\"id\\\":\" + i + \".0}\");\n        }\n        buf.append(']');\n\n        Reader reader = new StringReader(buf.toString());\n\n        JSONReaderScanner scanner = new JSONReaderScanner(reader);\n\n        DefaultJSONParser parser = new DefaultJSONParser(scanner);\n        List<VO> array = parser.parseArray(VO.class);\n        for (int i = 0; i < array.size(); ++i) {\n            Assert.assertTrue(Integer.toString(i), (double) i == array.get(i).getId());\n        }\n        parser.close();\n    }\n\n    private static class VO {\n\n        private double id;\n\n        public double getId() {\n            return id;\n        }\n\n        public void setId(double id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderScannerTest__entity_enum.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.Reader;\nimport java.io.StringReader;\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONReaderScanner;\n\npublic class JSONReaderScannerTest__entity_enum extends TestCase {\n\n    public void test_scanInt() throws Exception {\n        StringBuffer buf = new StringBuffer();\n        buf.append('[');\n        for (int i = 0; i < 10; ++i) {\n            if (i != 0) {\n                buf.append(',');\n            }\n            //1000000000000\n            //\n            Type type;\n            if (i % 3 == 0) {\n                type = Type.A;\n            } else if (i % 3 == 1) {\n                type = Type.AA;\n            } else {\n                type = Type.AAA;\n            }\n            buf.append(\"{\\\"id\\\":\\\"\" + type.name() + \"\\\"}\");\n            \n        }\n        buf.append(']');\n\n        Reader reader = new StringReader(buf.toString());\n\n        JSONReaderScanner scanner = new JSONReaderScanner(reader);\n\n        DefaultJSONParser parser = new DefaultJSONParser(scanner);\n        List<VO> array = parser.parseArray(VO.class);\n        for (int i = 0; i < array.size(); ++i) {\n            Type type;\n            if (i % 3 == 0) {\n                type = Type.A;\n            } else if (i % 3 == 1) {\n                type = Type.AA;\n            } else {\n                type = Type.AAA;\n            }\n            \n            Assert.assertEquals(type, array.get(i).getId()); \n        }\n    }\n\n    public static class VO {\n\n        private Type id;\n\n        public Type getId() {\n            return id;\n        }\n\n        public void setId(Type id) {\n            this.id = id;\n        }\n    }\n    \n    public static enum Type {\n        A, AA, AAA\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderScannerTest__entity_float.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.Reader;\nimport java.io.StringReader;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONReaderScanner;\n\npublic class JSONReaderScannerTest__entity_float extends TestCase {\n\n    public void test_scanFloat() throws Exception {\n        StringBuffer buf = new StringBuffer();\n        buf.append('[');\n        for (int i = 0; i < 1024; ++i) {\n            if (i != 0) {\n                buf.append(',');\n            }\n            buf.append(\"{\\\"id\\\":\" + i + \".0}\");\n        }\n        buf.append(']');\n\n        Reader reader = new StringReader(buf.toString());\n\n        JSONReaderScanner scanner = new JSONReaderScanner(reader);\n\n        DefaultJSONParser parser = new DefaultJSONParser(scanner);\n        List<VO> array = parser.parseArray(VO.class);\n        for (int i = 0; i < array.size(); ++i) {\n            Assert.assertTrue((float) i == array.get(i).getId());\n        }\n        parser.close();\n    }\n\n    public static class VO {\n\n        private float id;\n\n        public float getId() {\n            return id;\n        }\n\n        public void setId(float id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderScannerTest__entity_int.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.Reader;\nimport java.io.StringReader;\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONReaderScanner;\n\npublic class JSONReaderScannerTest__entity_int extends TestCase {\n\n    public void test_scanInt() throws Exception {\n        StringBuffer buf = new StringBuffer();\n        buf.append('[');\n        for (int i = 0; i < 1024; ++i) {\n            if (i != 0) {\n                buf.append(',');\n            }\n            buf.append(\"{\\\"id\\\":\" + i + \"}\");\n        }\n        buf.append(']');\n\n        Reader reader = new StringReader(buf.toString());\n\n        JSONReaderScanner scanner = new JSONReaderScanner(reader);\n\n        DefaultJSONParser parser = new DefaultJSONParser(scanner);\n        List<VO> array = parser.parseArray(VO.class);\n        for (int i = 0; i < array.size(); ++i) {\n            Assert.assertEquals(i, array.get(i).getId());\n        }\n    }\n\n    public static class VO {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderScannerTest__entity_long.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.Reader;\nimport java.io.StringReader;\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONReaderScanner;\n\npublic class JSONReaderScannerTest__entity_long extends TestCase {\n\n    public void test_scanInt() throws Exception {\n        StringBuffer buf = new StringBuffer();\n        buf.append('[');\n        for (int i = 0; i < 10; ++i) {\n            if (i != 0) {\n                buf.append(',');\n            }\n            //1000000000000\n            //\n            long value = (long) 1000000000000L + 1L + (long) i;\n            buf.append(\"{\\\"id\\\":\" + value + \"}\");\n        }\n        buf.append(']');\n\n        Reader reader = new StringReader(buf.toString());\n\n        JSONReaderScanner scanner = new JSONReaderScanner(reader);\n\n        DefaultJSONParser parser = new DefaultJSONParser(scanner);\n        List<VO> array = parser.parseArray(VO.class);\n        for (int i = 0; i < array.size(); ++i) {\n            long value = (long) 1000000000000L + 1L + (long) i;\n            Assert.assertEquals(value, array.get(i).getId());\n        }\n    }\n\n    public static class VO {\n\n        private long id;\n\n        public long getId() {\n            return id;\n        }\n\n        public void setId(long id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderScannerTest__entity_string.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.Reader;\nimport java.io.StringReader;\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONReaderScanner;\n\npublic class JSONReaderScannerTest__entity_string extends TestCase {\n\n    public void test_scanInt() throws Exception {\n        StringBuffer buf = new StringBuffer();\n        buf.append('[');\n        for (int i = 0; i < 10; ++i) {\n            if (i != 0) {\n                buf.append(',');\n            }\n            //1000000000000\n            //\n            buf.append(\"{\\\"id\\\":\\\"\" + i + \"\\\"}\");\n            \n        }\n        buf.append(']');\n\n        Reader reader = new StringReader(buf.toString());\n\n        JSONReaderScanner scanner = new JSONReaderScanner(reader);\n\n        DefaultJSONParser parser = new DefaultJSONParser(scanner);\n        List<VO> array = parser.parseArray(VO.class);\n        for (int i = 0; i < array.size(); ++i) {\n            Assert.assertEquals(Integer.toString(i), array.get(i).getId()); \n        }\n    }\n\n    public static class VO {\n\n        private String id;\n\n        public String getId() {\n            return id;\n        }\n\n        public void setId(String id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderScannerTest__entity_stringList.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.Reader;\nimport java.io.StringReader;\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONReaderScanner;\n\npublic class JSONReaderScannerTest__entity_stringList extends TestCase {\n\n    public void test_scanInt() throws Exception {\n        StringBuffer buf = new StringBuffer();\n        buf.append('[');\n        for (int i = 0; i < 10; ++i) {\n            if (i != 0) {\n                buf.append(',');\n            }\n            //1000000000000\n            //\n            buf.append(\"{\\\"id\\\":[\\\"\" + i + \"\\\",\\\"\" + (10000 + i) + \"\\\"]}\");\n            \n        }\n        buf.append(']');\n\n        Reader reader = new StringReader(buf.toString());\n\n        JSONReaderScanner scanner = new JSONReaderScanner(reader);\n\n        DefaultJSONParser parser = new DefaultJSONParser(scanner);\n        List<VO> array = parser.parseArray(VO.class);\n        for (int i = 0; i < array.size(); ++i) {\n            Assert.assertEquals(2, array.get(i).getId().size());\n            Assert.assertEquals(Integer.toString(i), array.get(i).getId().get(0));\n            Assert.assertEquals(Integer.toString(10000 + i), array.get(i).getId().get(1));\n        }\n    }\n\n    public static class VO {\n\n        private List<String> id;\n\n        public List<String> getId() {\n            return id;\n        }\n\n        public void setId(List<String> id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderScannerTest__map_string.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.Reader;\nimport java.io.StringReader;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONReaderScanner;\n\npublic class JSONReaderScannerTest__map_string extends TestCase {\n\n    public void test_scanInt() throws Exception {\n        StringBuffer buf = new StringBuffer();\n        buf.append('[');\n        for (int i = 0; i < 10; ++i) {\n            if (i != 0) {\n                buf.append(',');\n            }\n            // 1000000000000\n            //\n            buf.append(\"{\\\"id\\\":\\\"\" + i + \"\\\"}\");\n\n        }\n        buf.append(']');\n\n        Reader reader = new StringReader(buf.toString());\n\n        JSONReaderScanner scanner = new JSONReaderScanner(reader);\n\n        DefaultJSONParser parser = new DefaultJSONParser(scanner);\n        JSONArray array = (JSONArray) parser.parse();\n        for (int i = 0; i < array.size(); ++i) {\n            Assert.assertEquals(Integer.toString(i), array.getJSONObject(i).get(\"id\"));\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderScannerTest_array_string.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.Reader;\nimport java.io.StringReader;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONReaderScanner;\n\npublic class JSONReaderScannerTest_array_string extends TestCase {\n\n    public void test_scanInt() throws Exception {\n        StringBuffer buf = new StringBuffer();\n        buf.append('[');\n        for (int i = 0; i < 10; ++i) {\n            if (i != 0) {\n                buf.append(',');\n            }\n            // 1000000000000\n            //\n            buf.append(\"\\\"\" + i + \"\\\"\");\n        }\n        buf.append(']');\n\n        Reader reader = new StringReader(buf.toString());\n\n        JSONReaderScanner scanner = new JSONReaderScanner(reader);\n\n        DefaultJSONParser parser = new DefaultJSONParser(scanner);\n        JSONArray array = (JSONArray) parser.parse();\n        for (int i = 0; i < array.size(); ++i) {\n            Assert.assertEquals(Integer.toString(i), array.get(i));\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderScannerTest_bytes.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.StringReader;\n\nimport org.junit.Assert;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONReader;\n\npublic class JSONReaderScannerTest_bytes extends TestCase {\n\n    public void test_e() throws Exception {\n        VO vo = new VO();\n        vo.setValue(\"ABC\".getBytes(\"UTF-8\"));\n        \n        String text = JSON.toJSONString(vo);\n        \n        JSONReader reader = new JSONReader(new StringReader(text));\n        VO vo2 = reader.readObject(VO.class);\n        Assert.assertEquals(\"ABC\", new String(vo2.getValue()));\n        reader.close();\n    }\n\n    public static class VO {\n\n        private byte[] value;\n\n        public byte[] getValue() {\n            return value;\n        }\n\n        public void setValue(byte[] value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderScannerTest_decimal.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.Reader;\nimport java.io.StringReader;\nimport java.math.BigDecimal;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONReaderScanner;\n\npublic class JSONReaderScannerTest_decimal extends TestCase {\n\n    public void test_scanInt() throws Exception {\n        StringBuffer buf = new StringBuffer();\n        buf.append('[');\n        for (int i = 0; i < 1024; ++i) {\n            if (i != 0) {\n                buf.append(',');\n            }\n            buf.append(i + \".0\");\n        }\n        buf.append(']');\n\n        Reader reader = new StringReader(buf.toString());\n\n        JSONReaderScanner scanner = new JSONReaderScanner(reader);\n\n        DefaultJSONParser parser = new DefaultJSONParser(scanner);\n        JSONArray array = (JSONArray) parser.parse();\n        for (int i = 0; i < array.size(); ++i) {\n            BigDecimal value = new BigDecimal(i + \".0\");\n            Assert.assertEquals(value, array.get(i));\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderScannerTest_enum.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.StringReader;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONReader;\n\npublic class JSONReaderScannerTest_enum extends TestCase {\n\n    public void test_e() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"{type:'AA'}\"));\n        VO vo2 = reader.readObject(VO.class);\n        Assert.assertEquals(Type.AA, vo2.getType());\n        reader.close();\n    }\n\n    public static class VO {\n\n        private Type type;\n\n        public Type getType() {\n            return type;\n        }\n\n        public void setType(Type type) {\n            this.type = type;\n        }\n\n\n    }\n    \n    public static enum Type {\n        AA, BB, CC\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderScannerTest_error.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.IOException;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONReader;\n\npublic class JSONReaderScannerTest_error extends TestCase {\n\n    public void test_e() throws Exception {\n        Exception error = null;\n        try {\n            new JSONReader(new MyReader());\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class MyReader extends java.io.Reader {\n\n        @Override\n        public int read(char[] cbuf, int off, int len) throws IOException {\n            throw new IOException();\n        }\n\n        @Override\n        public void close() throws IOException {\n            // TODO Auto-generated method stub\n\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderScannerTest_error2.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.StringReader;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONReader;\n\npublic class JSONReaderScannerTest_error2 extends TestCase {\n\n    public void test_e() throws Exception {\n        Exception error = null;\n        try {\n            StringBuilder buf = new StringBuilder();\n            buf.append(\"[{\\\"type\\\":\\\"\");\n            for (int i = 0; i < 8180; ++i) {\n                buf.append('A');\n            }\n            buf.append(\"\\\"}\");\n            JSONReader reader = new JSONReader(new StringReader(buf.toString()));\n            reader.readObject();\n            reader.close();\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class VO {\n\n        private String type;\n\n        public String getType() {\n            return type;\n        }\n\n        public void setType(String type) {\n            this.type = type;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderScannerTest_error3.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.StringReader;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONReader;\n\npublic class JSONReaderScannerTest_error3 extends TestCase {\n\n    public void test_e() throws Exception {\n        Exception error = null;\n        try {\n            StringBuilder buf = new StringBuilder();\n            buf.append(\"[{\\\"type\\\":\\\"\");\n            for (int i = 0; i < 8180; ++i) {\n                buf.append('A');\n            }\n            buf.append(\"\\\\t\");\n            JSONReader reader = new JSONReader(new StringReader(buf.toString()));\n            reader.readObject();\n            reader.close();\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class VO {\n\n        private String type;\n\n        public String getType() {\n            return type;\n        }\n\n        public void setType(String type) {\n            this.type = type;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderScannerTest_error4.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.IOException;\nimport java.io.StringReader;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONReader;\n\npublic class JSONReaderScannerTest_error4 extends TestCase {\n\n    public void test_e() throws Exception {\n        Exception error = null;\n        try {\n            StringBuilder buf = new StringBuilder();\n            buf.append(\"[{\\\"type\\\":\\\"\");\n            for (int i = 0; i < 8180; ++i) {\n                buf.append('A');\n            }\n            buf.append(\"\\\\t\");\n            JSONReader reader = new JSONReader(new MyReader(buf.toString()));\n            reader.readObject();\n            reader.close();\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class VO {\n\n        private String type;\n\n        public String getType() {\n            return type;\n        }\n\n        public void setType(String type) {\n            this.type = type;\n        }\n\n    }\n\n    public static class MyReader extends StringReader {\n\n        public MyReader(String s){\n            super(s);\n        }\n\n        public int read(char cbuf[], int off, int len) throws IOException {\n            int x = super.read(cbuf, off, len);\n            if (x < 0) {\n                throw new IOException();\n            }\n            return x;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderScannerTest_error5.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.IOException;\nimport java.io.StringReader;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONReader;\n\npublic class JSONReaderScannerTest_error5 extends TestCase {\n\n    public void test_e() throws Exception {\n        Exception error = null;\n        try {\n            StringBuilder buf = new StringBuilder();\n            buf.append(\"[{\\\"type\\\":\\\"\");\n            for (int i = 0; i < 8180; ++i) {\n                buf.append('A');\n            }\n            buf.append(\"\\\\t\");\n            JSONReader reader = new JSONReader(new MyReader(buf.toString()));\n            reader.readObject();\n            reader.close();\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class VO {\n\n        private String type;\n\n        public String getType() {\n            return type;\n        }\n\n        public void setType(String type) {\n            this.type = type;\n        }\n\n    }\n\n    public static class MyReader extends StringReader {\n\n        public MyReader(String s){\n            super(s);\n        }\n\n        public int read(char cbuf[], int off, int len) throws IOException {\n            int x = super.read(cbuf, off, len);\n            if (x < 0) {\n                return 0;\n            }\n            return x;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderScannerTest_int.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.Reader;\nimport java.io.StringReader;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONReaderScanner;\n\npublic class JSONReaderScannerTest_int extends TestCase {\n\n    public void test_scanInt() throws Exception {\n        StringBuffer buf = new StringBuffer();\n        buf.append('[');\n        for (int i = 0; i < 1024; ++i) {\n            if (i != 0) {\n                buf.append(',');\n            }\n            buf.append(i);\n        }\n        buf.append(']');\n\n        Reader reader = new StringReader(buf.toString());\n\n        JSONReaderScanner scanner = new JSONReaderScanner(reader);\n\n        DefaultJSONParser parser = new DefaultJSONParser(scanner);\n        JSONArray array = (JSONArray) parser.parse();\n        for (int i = 0; i < array.size(); ++i) {\n            Assert.assertEquals(i, ((Integer) array.get(i)).intValue()); \n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderScannerTest_jsonobject.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.StringReader;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONReader;\n\npublic class JSONReaderScannerTest_jsonobject extends TestCase {\n\n    public void test_e() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"{\\\"type\\\\t\\\":'AA'}\"));\n        JSONObject vo = new JSONObject();\n        reader.readObject(vo);\n        Assert.assertEquals(\"AA\", vo.get(\"type\\t\"));\n        reader.close();\n    }\n\n    public static class VO {\n\n        private Type type;\n\n        public Type getType() {\n            return type;\n        }\n\n        public void setType(Type type) {\n            this.type = type;\n        }\n\n\n    }\n    \n    public static enum Type {\n        AA, BB, CC\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderScannerTest_long.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.Reader;\nimport java.io.StringReader;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONReaderScanner;\n\npublic class JSONReaderScannerTest_long extends TestCase {\n\n    public void test_scanInt() throws Exception {\n        StringBuffer buf = new StringBuffer();\n        buf.append('[');\n        for (int i = 0; i < 1024; ++i) {\n            if (i != 0) {\n                buf.append(',');\n            }\n            long value = (long) Integer.MAX_VALUE + 1L + (long) i;\n            buf.append(value);\n        }\n        buf.append(']');\n\n        Reader reader = new StringReader(buf.toString());\n\n        JSONReaderScanner scanner = new JSONReaderScanner(reader);\n\n        DefaultJSONParser parser = new DefaultJSONParser(scanner);\n        JSONArray array = (JSONArray) parser.parse();\n        for (int i = 0; i < array.size(); ++i) {\n            long value = (long) Integer.MAX_VALUE + 1L + (long) i;\n            Assert.assertEquals(value, ((Long) array.get(i)).longValue());\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderTest_array_array.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.StringReader;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.JSONScanner;\n\npublic class JSONReaderTest_array_array extends TestCase {\n\n    String text = \"[[],[],[],[],[], [],[],[],[],[]]\";\n\n    public void test_read() throws Exception {\n\n        JSONReader reader = new JSONReader(new StringReader(text));\n        reader.startArray();\n\n        int count = 0;\n        while (reader.hasNext()) {\n            Object item = reader.readObject();\n            Assert.assertEquals(JSONArray.class, item.getClass());\n            count++;\n        }\n        Assert.assertEquals(10, count);\n\n        reader.endArray();\n        reader.close();\n    }\n\n    public void test_read_1() throws Exception {\n        JSONReader reader = new JSONReader(new JSONScanner(text));\n        reader.startArray();\n\n        int count = 0;\n        while (reader.hasNext()) {\n            Object item = reader.readObject();\n            Assert.assertEquals(JSONArray.class, item.getClass());\n            count++;\n        }\n        Assert.assertEquals(10, count);\n\n        reader.endArray();\n        reader.close();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderTest_array_array_2.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.StringReader;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.JSONScanner;\n\npublic class JSONReaderTest_array_array_2 extends TestCase {\n\n    String text = \"[[],[],[],[],[], [],[],[],[],[]]\";\n\n    public void test_read() throws Exception {\n\n        JSONReader reader = new JSONReader(new StringReader(text));\n        reader.startArray();\n\n        int count = 0;\n        while (reader.hasNext()) {\n            reader.startArray();\n            reader.endArray();\n            count++;\n        }\n        Assert.assertEquals(10, count);\n\n        reader.endArray();\n        reader.close();\n    }\n\n    public void test_read_1() throws Exception {\n        JSONReader reader = new JSONReader(new JSONScanner(text));\n        reader.startArray();\n\n        int count = 0;\n        while (reader.hasNext()) {\n            reader.startArray();\n            reader.endArray();\n            count++;\n        }\n        Assert.assertEquals(10, count);\n\n        reader.endArray();\n        reader.close();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderTest_array_object.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.StringReader;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.JSONScanner;\n\npublic class JSONReaderTest_array_object extends TestCase {\n\n    String text = \"[{},{},{},{},{} ,{},{},{},{},{}]\";\n\n    public void test_read() throws Exception {\n\n        JSONReader reader = new JSONReader(new StringReader(text));\n        reader.startArray();\n\n        int count = 0;\n        while (reader.hasNext()) {\n            reader.readObject();\n            count++;\n        }\n        Assert.assertEquals(10, count);\n\n        reader.endArray();\n        reader.close();\n    }\n\n    public void test_read_1() throws Exception {\n        JSONReader reader = new JSONReader(new JSONScanner(text));\n        reader.startArray();\n\n        int count = 0;\n        while (reader.hasNext()) {\n            reader.readObject();\n            count++;\n        }\n        Assert.assertEquals(10, count);\n\n        reader.endArray();\n        reader.close();\n    }\n    \n    public void test_read_3() throws Exception {\n        JSONReader reader = new JSONReader(new JSONScanner(text));\n        reader.startArray();\n\n        \n        \n        Assert.assertTrue(reader.hasNext());\n        reader.startObject();\n        reader.endObject();\n        \n        Assert.assertTrue(reader.hasNext());\n        reader.startObject();\n        reader.endObject();\n        \n        int count = 2;\n        \n        while (reader.hasNext()) {\n            reader.startObject();\n            reader.endObject();\n            count++;\n        }\n        Assert.assertEquals(10, count);\n\n        reader.endArray();\n        reader.close();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderTest_array_object_2.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.StringReader;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.JSONScanner;\n\npublic class JSONReaderTest_array_object_2 extends TestCase {\n\n    String text = \"[{},{},{},{},{} ,{},{},{},{},{}]\";\n\n    public void test_read() throws Exception {\n\n        JSONReader reader = new JSONReader(new StringReader(text));\n        reader.startArray();\n\n        int count = 0;\n        while (reader.hasNext()) {\n            reader.startObject();\n            reader.endObject();\n            count++;\n        }\n        Assert.assertEquals(10, count);\n\n        reader.endArray();\n        reader.close();\n    }\n\n    public void test_read_1() throws Exception {\n        JSONReader reader = new JSONReader(new JSONScanner(text));\n        reader.startArray();\n\n        int count = 0;\n        while (reader.hasNext()) {\n            reader.startObject();\n            reader.endObject();\n            count++;\n        }\n        Assert.assertEquals(10, count);\n\n        reader.endArray();\n        reader.close();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderTest_object_int.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.StringReader;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.JSONScanner;\n\npublic class JSONReaderTest_object_int extends TestCase {\n\n    public void test_read() throws Exception {\n        String text = \"{\\\"f0\\\":0,\\\"f1\\\":1,\\\"f2\\\":2,\\\"f3\\\":3,\\\"f4\\\":4, \" + //\n                      \"\\\"f5\\\":5,\\\"f6\\\":6,\\\"f7\\\":7,\\\"f8\\\":8,\\\"f9\\\":9}\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n        reader.startObject();\n\n        int count = 0;\n        while (reader.hasNext()) {\n            String key = (String) reader.readObject();\n            Integer value = reader.readInteger();\n            count++;\n        }\n        Assert.assertEquals(10, count);\n\n        reader.endObject();\n        reader.close();\n    }\n\n    public void test_read_1() throws Exception {\n        String text = \"[{},{},{},{},{} ,{},{},{},{},{}]\";\n        JSONReader reader = new JSONReader(new JSONScanner(text));\n        reader.startArray();\n\n        int count = 0;\n        while (reader.hasNext()) {\n            reader.readObject();\n            count++;\n        }\n        Assert.assertEquals(10, count);\n\n        reader.endArray();\n        reader.close();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderTest_object_int_unquote.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.StringReader;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.JSONScanner;\n\npublic class JSONReaderTest_object_int_unquote extends TestCase {\n\n    String text = \"{f0:0,f1:1,f2:2,f3:3,f4:4, \" + //\n                  \"f5:5,f6:6,f7:7,f8:8,f9:9}\";\n\n    public void test_read() throws Exception {\n\n        JSONReader reader = new JSONReader(new StringReader(text));\n        reader.startObject();\n\n        int count = 0;\n        while (reader.hasNext()) {\n            String key = (String) reader.readObject();\n            Integer value = reader.readInteger();\n            count++;\n        }\n        Assert.assertEquals(10, count);\n\n        reader.endObject();\n        reader.close();\n    }\n\n    public void test_read_1() throws Exception {\n        JSONReader reader = new JSONReader(new JSONScanner(text));\n        reader.startObject();\n\n        int count = 0;\n        while (reader.hasNext()) {\n            String key = (String) reader.readObject();\n            Integer value = reader.readInteger();\n            count++;\n        }\n        Assert.assertEquals(10, count);\n\n        reader.endObject();\n        reader.close();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderTest_object_long.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.StringReader;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.JSONScanner;\n\npublic class JSONReaderTest_object_long extends TestCase {\n\n    String text = \"{\\\"f0\\\":0,\\\"f1\\\":1,\\\"f2\\\":2,\\\"f3\\\":3,\\\"f4\\\":4, \" + //\n                  \"\\\"f5\\\":5,\\\"f6\\\":6,\\\"f7\\\":7,\\\"f8\\\":8,\\\"f9\\\":9}\";\n\n    public void test_read() throws Exception {\n\n        JSONReader reader = new JSONReader(new StringReader(text));\n\n        reader.startObject();\n\n        int count = 0;\n        while (reader.hasNext()) {\n            String key = (String) reader.readObject();\n            Long value = reader.readLong();\n            count++;\n        }\n        Assert.assertEquals(10, count);\n\n        reader.endObject();\n        reader.close();\n    }\n\n    public void test_read_1() throws Exception {\n        JSONReader reader = new JSONReader(new JSONScanner(text));\n\n        reader.startObject();\n\n        int count = 0;\n        while (reader.hasNext()) {\n            String key = (String) reader.readObject();\n            Long value = reader.readLong();\n            count++;\n        }\n        Assert.assertEquals(10, count);\n\n        reader.endObject();\n        reader.close();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderTest_object_object.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.StringReader;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.JSONScanner;\n\npublic class JSONReaderTest_object_object extends TestCase {\n\n    String text = \"{\\\"f0\\\":{},\\\"f1\\\":{},\\\"f2\\\":{},\\\"f3\\\":{},\\\"f4\\\":{}, \" + //\n                  \"\\\"f5\\\":{},\\\"f6\\\":{},\\\"f7\\\":{},\\\"f8\\\":{},\\\"f9\\\":{}}\";\n\n    public void test_read() throws Exception {\n\n        JSONReader reader = new JSONReader(new StringReader(text));\n        reader.startObject();\n\n        int count = 0;\n        while (reader.hasNext()) {\n            String key = (String) reader.readObject();\n            Object value = reader.readObject();\n            Assert.assertNotNull(key);\n            Assert.assertNotNull(value);\n            count++;\n        }\n        Assert.assertEquals(10, count);\n\n        reader.endObject();\n        reader.close();\n    }\n\n    public void test_read_1() throws Exception {\n        JSONReader reader = new JSONReader(new JSONScanner(text));\n        reader.startObject();\n\n        int count = 0;\n        while (reader.hasNext()) {\n            String key = (String) reader.readObject();\n            Object value = reader.readObject();\n            \n            Assert.assertNotNull(key);\n            Assert.assertNotNull(value);\n            \n            count++;\n        }\n        Assert.assertEquals(10, count);\n\n        reader.endObject();\n        reader.close();\n    }\n\n    public void test_read_2() throws Exception {\n        JSONReader reader = new JSONReader(new JSONScanner(\"{{}:{},{}:{}}\"));\n        reader.startObject();\n\n        Assert.assertTrue(reader.hasNext());\n        reader.startObject();\n        reader.endObject();\n\n        reader.startObject();\n        reader.endObject();\n\n        Assert.assertTrue(reader.hasNext());\n        reader.startObject();\n        reader.endObject();\n\n        reader.startObject();\n        reader.endObject();\n        \n        Assert.assertFalse(reader.hasNext());\n\n        reader.endObject();\n\n        Exception error = null;\n        try {\n            reader.hasNext();\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n\n        reader.close();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReaderTest_object_string.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.StringReader;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.JSONScanner;\n\npublic class JSONReaderTest_object_string extends TestCase {\n\n    String text = \"{\\\"f0\\\":\\\"0\\\",\\\"f1\\\":\\\"1\\\",\\\"f2\\\":\\\"2\\\",\\\"f3\\\":\\\"3\\\",\\\"f4\\\":\\\"4\\\", \" + //\n                  \"\\\"f5\\\":\\\"5\\\",\\\"f6\\\":\\\"6\\\",\\\"f7\\\":\\\"7\\\",\\\"f8\\\":\\\"8\\\",\\\"f9\\\":\\\"9\\\"}\";\n\n    public void test_read() throws Exception {\n\n        JSONReader reader = new JSONReader(new StringReader(text));\n\n        reader.startObject();\n\n        int count = 0;\n        while (reader.hasNext()) {\n            String key = (String) reader.readObject();\n            String value = reader.readString();\n            count++;\n        }\n        Assert.assertEquals(10, count);\n\n        reader.endObject();\n        reader.close();\n    }\n\n    public void test_read_1() throws Exception {\n        JSONReader reader = new JSONReader(new JSONScanner(text));\n\n        reader.startObject();\n\n        int count = 0;\n        while (reader.hasNext()) {\n            String key = (String) reader.readObject();\n            Long value = reader.readLong();\n            count++;\n        }\n        Assert.assertEquals(10, count);\n\n        reader.endObject();\n        reader.close();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReader_error.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.StringReader;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONReader;\n\npublic class JSONReader_error extends TestCase {\n\n    public void test_0() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"[]\"));\n\n        Exception error = null;\n        try {\n            reader.hasNext();\n        } catch (Exception e) {\n            error = e;\n        }\n        Assert.assertNotNull(error);\n        \n    }\n\n    public void test_1() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"{\\\"id\\\":123}\"));\n\n        reader.startObject();\n        reader.readObject();\n\n        Exception error = null;\n        try {\n            reader.hasNext();\n        } catch (Exception e) {\n            error = e;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONReader_top.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.StringReader;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONReader;\n\npublic class JSONReader_top extends TestCase {\n\n    public void test_int() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"123\"));\n\n        Assert.assertEquals(new Integer(123), reader.readInteger());\n\n        reader.close();\n    }\n\n    public void test_long() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"123\"));\n\n        Assert.assertEquals(new Long(123), reader.readLong());\n\n        reader.close();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONScannerTest_ISO8601.java",
    "content": "package com.alibaba.json.bvt.parser;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.parser.Feature;\r\nimport com.alibaba.fastjson.parser.JSONScanner;\r\nimport com.alibaba.fastjson.parser.JSONToken;\r\n\r\npublic class JSONScannerTest_ISO8601 extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        Assert.assertEquals(false, new JSONScanner(\"1\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"3\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"3000-10-02\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"4000-10-02\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"5000-10-02\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"6000-10-02\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"7000-10-02\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"8000-10-02\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"A000-10-02\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"a000-10-02\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"1997\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"1997-2-2\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"1997-02-02\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"1997:02-02\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"1997-02:02\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2A00-02-02\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2!00-02-02\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"20A0-02-02\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"20!0-02-02\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"200A-02-02\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"200!-02-02\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-32-02\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-1A-02\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-1!-02\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"2000-10-02\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"2000-11-02\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"2000-12-02\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-13-02\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-20-02\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-0A-02\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-0!-02\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"2000-02-01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-00\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-0!\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-0A\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"2000-02-10\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"2000-02-20\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-2A\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-2!\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"2000-02-30\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"2000-02-31\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-32\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-42\").scanISO8601DateIfMatch());\r\n\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"2000-02-10T00:00:00\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T00:00-00\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"2000-02-10T01:01:01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T0A:01:01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T0!:01:01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"2000-02-10T00:10:01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"2000-02-10T00:11:01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T10011:01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"2000-02-10T10:11:01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T1!:11:01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T1a:11:01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T00:1A:01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T00:1!:01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"2000-02-10T20:20:01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"2000-02-10T21:21:01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"2000-02-10T22:22:01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"2000-02-10T23:23:01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"2000-02-10T24:24:01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T25:25:01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T2!:20:01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T30:20:01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T00A22:01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"2000-02-10T00:22:01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T00:!2:01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T00:A2:01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T00:2A:01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T00:2!:01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"2000-02-10T00:60:01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T00:61:01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"2000-02-10T00:00:01\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T00:00:0!\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T00:00:0A\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"2000-02-10T00:00:60\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T00:00:61\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T00:00:70\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T00:00:!0\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T00:00:A0\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"2000-02-10T00:00:00\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T00:00:00.\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"2000-02-10T00:00:00.0\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"2000-02-10T00:00:00.00\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(true, new JSONScanner(\"2000-02-10T00:00:00.000\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T00:00:00.A00\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T00:00:00.!00\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T00:00:00.0A0\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T00:00:00.0!0\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T00:00:00.00!\").scanISO8601DateIfMatch());\r\n        Assert.assertEquals(false, new JSONScanner(\"2000-02-10T00:00:00.00a\").scanISO8601DateIfMatch());\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"2000-02-10T00:00:00.000\");\r\n        lexer.config(Feature.AllowISO8601DateFormat, true);\r\n        Assert.assertEquals(true, lexer.scanISO8601DateIfMatch());\r\n        Assert.assertEquals(JSONToken.LITERAL_ISO8601_DATE, lexer.token());\r\n        lexer.nextToken();\r\n        Assert.assertEquals(JSONToken.EOF, lexer.token());\r\n    }\r\n\r\n    public void test_3() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"2000-2\");\r\n        lexer.config(Feature.AllowISO8601DateFormat, true);\r\n        lexer.nextToken();\r\n        Assert.assertEquals(JSONToken.LITERAL_INT, lexer.token());\r\n        lexer.nextToken();\r\n        Assert.assertEquals(JSONToken.LITERAL_INT, lexer.token());\r\n        lexer.nextToken();\r\n        Assert.assertEquals(JSONToken.EOF, lexer.token());\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONScannerTest__nextToken.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.parser.JSONScanner;\nimport com.alibaba.fastjson.parser.JSONToken;\n\npublic class JSONScannerTest__nextToken extends TestCase {\n    public void test_next() throws Exception {\n        String text = \"\\\"aaa\\\"\";\n        JSONScanner lexer = new JSONScanner(text);\n        lexer.nextToken(JSONToken.LITERAL_INT);\n        Assert.assertEquals(JSONToken.LITERAL_STRING, lexer.token());\n    }\n    \n    public void test_next_1() throws Exception {\n        String text = \"[\";\n        JSONScanner lexer = new JSONScanner(text);\n        lexer.nextToken(JSONToken.LITERAL_INT);\n        Assert.assertEquals(JSONToken.LBRACKET, lexer.token());\n    }\n    \n    public void test_next_2() throws Exception {\n        String text = \"{\";\n        JSONScanner lexer = new JSONScanner(text);\n        lexer.nextToken(JSONToken.LITERAL_INT);\n        Assert.assertEquals(JSONToken.LBRACE, lexer.token());\n    }\n    \n    public void test_next_3() throws Exception {\n        String text = \"{\";\n        JSONScanner lexer = new JSONScanner(text);\n        lexer.nextToken(JSONToken.LBRACKET);\n        Assert.assertEquals(JSONToken.LBRACE, lexer.token());\n    }\n    \n    public void test_next_4() throws Exception {\n        String text = \"\";\n        JSONScanner lexer = new JSONScanner(text);\n        lexer.nextToken(JSONToken.LBRACKET);\n        Assert.assertEquals(JSONToken.EOF, lexer.token());\n    }\n    \n    public void test_next_5() throws Exception {\n        String text = \" \\n\\r\\t\\f\\b 1\";\n        JSONScanner lexer = new JSONScanner(text);\n        lexer.nextToken(JSONToken.LBRACKET);\n        Assert.assertEquals(JSONToken.LITERAL_INT, lexer.token());\n    }\n    \n    public void test_next_6() throws Exception {\n        String text = \"\";\n        JSONScanner lexer = new JSONScanner(text);\n        lexer.nextToken(JSONToken.EOF);\n        Assert.assertEquals(JSONToken.EOF, lexer.token());\n    }\n    \n    public void test_next_7() throws Exception {\n        String text = \"{\";\n        JSONScanner lexer = new JSONScanner(text);\n        lexer.nextToken(JSONToken.EOF);\n        Assert.assertEquals(JSONToken.LBRACE, lexer.token());\n    }\n    \n    public void test_next_8() throws Exception {\n        String text = \"\\n\\r\\t\\f\\b :{\";\n        JSONScanner lexer = new JSONScanner(text);\n        lexer.nextTokenWithColon(JSONToken.LBRACE);\n        Assert.assertEquals(JSONToken.LBRACE, lexer.token());\n    }\n    \n    public void test_next_9() throws Exception {\n        String text = \"\\n\\r\\t\\f\\b :[\";\n        JSONScanner lexer = new JSONScanner(text);\n        lexer.nextTokenWithColon(JSONToken.LBRACE);\n        Assert.assertEquals(JSONToken.LBRACKET, lexer.token());\n    }\n    \n    public void test_next_10() throws Exception {\n        String text = \"\\n\\r\\t\\f\\b :\";\n        JSONScanner lexer = new JSONScanner(text);\n        lexer.nextTokenWithColon(JSONToken.LBRACE);\n        Assert.assertEquals(JSONToken.EOF, lexer.token());\n    }\n    \n    public void test_next_11() throws Exception {\n        String text = \"\\n\\r\\t\\f\\b :{\";\n        JSONScanner lexer = new JSONScanner(text);\n        lexer.nextTokenWithColon(JSONToken.LBRACKET);\n        Assert.assertEquals(JSONToken.LBRACE, lexer.token());\n    }\n    \n    public void test_next_12() throws Exception {\n        String text = \"\\n\\r\\t\\f\\b :\";\n        JSONScanner lexer = new JSONScanner(text);\n        lexer.nextTokenWithColon(JSONToken.LBRACKET);\n        Assert.assertEquals(JSONToken.EOF, lexer.token());\n    }\n    public void test_next_13() throws Exception {\n        String text = \"\\n\\r\\t\\f\\b :\\n\\r\\t\\f\\b \";\n        JSONScanner lexer = new JSONScanner(text);\n        lexer.nextTokenWithColon(JSONToken.LBRACKET);\n        Assert.assertEquals(JSONToken.EOF, lexer.token());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONScannerTest__x.java",
    "content": "package com.alibaba.json.bvt.parser;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\n\r\npublic class JSONScannerTest__x extends TestCase {\r\n\r\n    public void test_x() throws Exception {\r\n        StringBuilder buf = new StringBuilder();\r\n        buf.append(\"\\\"\");\r\n        for (int i = 0; i < 16; ++i) {\r\n            for (int j = 0; j < 16; ++j) {\r\n                buf.append(\"\\\\x\");\r\n                buf.append(Integer.toHexString(i));\r\n                buf.append(Integer.toHexString(j));\r\n            }\r\n        }\r\n        buf.append(\"\\\"\");\r\n        String jsonString = (String) JSON.parse(buf.toString());\r\n        Assert.assertEquals(16 * 16, jsonString.length());\r\n        for (int i = 0; i < 16 * 16; ++i) {\r\n            char c = jsonString.charAt(i);\r\n            if ((int) c != i) {\r\n                Assert.fail();\r\n            }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONScannerTest_colon.java",
    "content": "package com.alibaba.json.bvt.parser;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.parser.JSONScanner;\r\nimport com.alibaba.fastjson.parser.JSONToken;\r\n\r\n/**\r\n * 测试字符':'的处理\r\n * \r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class JSONScannerTest_colon extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\":true\");\r\n        lexer.nextTokenWithColon();\r\n        Assert.assertEquals(JSONToken.TRUE, lexer.token());\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\" : true\");\r\n        lexer.nextTokenWithColon();\r\n        Assert.assertEquals(JSONToken.TRUE, lexer.token());\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"\\n:\\ntrue\");\r\n        lexer.nextTokenWithColon();\r\n        Assert.assertEquals(JSONToken.TRUE, lexer.token());\r\n    }\r\n\r\n    public void test_3() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"\\r:\\rtrue\");\r\n        lexer.nextTokenWithColon();\r\n        Assert.assertEquals(JSONToken.TRUE, lexer.token());\r\n    }\r\n\r\n    public void test_4() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"\\t:\\ttrue\");\r\n        lexer.nextTokenWithColon();\r\n        Assert.assertEquals(JSONToken.TRUE, lexer.token());\r\n    }\r\n\r\n    public void test_5() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"\\t:\\ftrue\");\r\n        lexer.nextTokenWithColon();\r\n        Assert.assertEquals(JSONToken.TRUE, lexer.token());\r\n    }\r\n\r\n    public void test_6() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"\\b:\\btrue\");\r\n        lexer.nextTokenWithColon();\r\n        Assert.assertEquals(JSONToken.TRUE, lexer.token());\r\n    }\r\n\r\n    public void test_f() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"\\f:\\btrue\");\r\n        lexer.nextTokenWithColon();\r\n        Assert.assertEquals(JSONToken.TRUE, lexer.token());\r\n    }\r\n\r\n    public void test_7() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"true\");\r\n            lexer.nextTokenWithColon();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_8() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"\\b:\\btrue\");\r\n        lexer.nextToken();\r\n        Assert.assertEquals(JSONToken.COLON, lexer.token());\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONScannerTest_false.java",
    "content": "package com.alibaba.json.bvt.parser;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.parser.JSONScanner;\r\n\r\npublic class JSONScannerTest_false extends TestCase {\r\n\r\n    public void test_scan_false_0() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"false\");\r\n        lexer.scanFalse();\r\n    }\r\n\r\n    public void test_scan_false_1() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"zalse\");\r\n            lexer.scanFalse();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_scan_false_2() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"fzlse\");\r\n            lexer.scanFalse();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_scan_false_3() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"fazse\");\r\n            lexer.scanFalse();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_scan_false_4() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"falze\");\r\n            lexer.scanFalse();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_scan_false_5() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"falsz\");\r\n            lexer.scanFalse();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_scan_false_6_1() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"falsee\");\r\n            lexer.scanFalse();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_scan_false_6() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"false\\\"\");\r\n            lexer.scanFalse();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_scan_false_7() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"false a\");\r\n        lexer.scanFalse();\r\n    }\r\n\r\n    public void test_scan_false_8() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"false,\");\r\n        lexer.scanFalse();\r\n    }\r\n\r\n    public void test_scan_false_9() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"false\\na\");\r\n        lexer.scanFalse();\r\n    }\r\n\r\n    public void test_scan_false_10() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"false\\ra\");\r\n        lexer.scanFalse();\r\n    }\r\n\r\n    public void test_scan_false_11() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"false\\ta\");\r\n        lexer.scanFalse();\r\n    }\r\n\r\n    public void test_scan_false_12() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"false\\fa\");\r\n        lexer.scanFalse();\r\n    }\r\n\r\n    public void test_scan_false_13() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"false\\ba\");\r\n        lexer.scanFalse();\r\n    }\r\n\r\n    public void test_scan_false_14() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"false}\");\r\n        lexer.scanFalse();\r\n    }\r\n\r\n    public void test_scan_false_15() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"false]\");\r\n        lexer.scanFalse();\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONScannerTest_ident.java",
    "content": "package com.alibaba.json.bvt.parser;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.parser.JSONScanner;\r\nimport com.alibaba.fastjson.parser.JSONToken;\r\n\r\npublic class JSONScannerTest_ident extends TestCase {\r\n\r\n    public void test_true() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"true\");\r\n        lexer.scanIdent();\r\n        Assert.assertEquals(JSONToken.TRUE, lexer.token());\r\n    }\r\n\r\n    public void test_false() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"false\");\r\n        lexer.scanIdent();\r\n        Assert.assertEquals(JSONToken.FALSE, lexer.token());\r\n    }\r\n\r\n    public void test_null() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"null\");\r\n        lexer.scanIdent();\r\n        Assert.assertEquals(JSONToken.NULL, lexer.token());\r\n    }\r\n\r\n    public void test_new() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"new\");\r\n        lexer.scanIdent();\r\n        Assert.assertEquals(JSONToken.NEW, lexer.token());\r\n    }\r\n\r\n    public void test_Date() throws Exception {\r\n        String text = \"Date\";\r\n        JSONScanner lexer = new JSONScanner(text);\r\n        lexer.scanIdent();\r\n        Assert.assertEquals(JSONToken.IDENTIFIER, lexer.token());\r\n        Assert.assertEquals(text, lexer.stringVal());\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONScannerTest_int.java",
    "content": "package com.alibaba.json.bvt.parser;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.parser.JSONScanner;\r\n\r\n/**\r\n * parseInt\r\n * \r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class JSONScannerTest_int extends TestCase {\r\n\r\n    public void ftest_parse_long() throws Exception {\r\n        System.out.println(System.currentTimeMillis());\r\n        JSONScanner lexer = new JSONScanner(\"1293770846\");\r\n        lexer.scanNumber();\r\n        Assert.assertEquals(new Integer(1293770846), (Integer) lexer.integerValue());\r\n        Assert.assertEquals(1293770846, lexer.intValue());\r\n    }\r\n\r\n    public void ftest_parse_long_1() throws Exception {\r\n        System.out.println(System.currentTimeMillis());\r\n        JSONScanner lexer = new JSONScanner(Integer.toString(Integer.MAX_VALUE));\r\n        lexer.scanNumber();\r\n        Assert.assertEquals(new Integer(Integer.MAX_VALUE), (Integer) lexer.integerValue());\r\n        Assert.assertEquals(Integer.MAX_VALUE, lexer.intValue());\r\n    }\r\n\r\n    public void test_parse_long_2() throws Exception {\r\n        System.out.println(System.currentTimeMillis());\r\n        JSONScanner lexer = new JSONScanner(Long.toString(Integer.MIN_VALUE));\r\n        lexer.scanNumber();\r\n        Assert.assertEquals(new Integer(Integer.MIN_VALUE), (Integer) lexer.integerValue());\r\n        Assert.assertEquals(Integer.MIN_VALUE, lexer.intValue());\r\n    }\r\n\r\n    public void test_error_0() {\r\n        Exception error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"--\");\r\n            lexer.scanNumber();\r\n            lexer.intValue();\r\n        } catch (Exception ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error_1() {\r\n        Exception error = null;\r\n        try {\r\n            String text = Integer.MAX_VALUE + \"1234\";\r\n            JSONScanner lexer = new JSONScanner(text);\r\n            lexer.scanNumber();\r\n            lexer.intValue();\r\n        } catch (Exception ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error_2() {\r\n        Exception error = null;\r\n        try {\r\n            String text = Integer.MIN_VALUE + \"1234\";\r\n            JSONScanner lexer = new JSONScanner(text);\r\n            lexer.scanNumber();\r\n            lexer.intValue();\r\n        } catch (Exception ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error_3() {\r\n        Exception error = null;\r\n        try {\r\n            String text = \"2147483648\";\r\n            JSONScanner lexer = new JSONScanner(text);\r\n            lexer.scanNumber();\r\n            lexer.intValue();\r\n        } catch (Exception ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONScannerTest_isEOF.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.JSONScanner;\nimport com.alibaba.fastjson.parser.JSONToken;\n\npublic class JSONScannerTest_isEOF extends TestCase {\n\n    public void test_0() throws Exception {\n        String text = \"{}  \";\n        JSONObject obj = JSON.parseObject(text);\n        Assert.assertEquals(0, obj.size());\n    }\n\n    public void test_1() throws Exception {\n        JSONScanner lexer = new JSONScanner(\"  \");\n        lexer.nextToken();\n        Assert.assertTrue(lexer.token() == JSONToken.EOF);\n    }\n\n    public void test_2() throws Exception {\n        JSONScanner lexer = new JSONScanner(\"1  \");\n        lexer.nextToken();\n        lexer.nextToken();\n        Assert.assertTrue(lexer.token() == JSONToken.EOF);\n    }\n\n    public void test_3() throws Exception {\n        JSONScanner lexer = new JSONScanner(\" {}\");\n        lexer.nextToken();\n        Assert.assertTrue(lexer.token() != JSONToken.EOF);\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONScannerTest_long.java",
    "content": "package com.alibaba.json.bvt.parser;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.parser.JSONScanner;\r\n\r\n/**\r\n * parseLong\r\n * \r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class JSONScannerTest_long extends TestCase {\r\n\r\n    public void ftest_parse_long() throws Exception {\r\n        System.out.println(System.currentTimeMillis());\r\n        JSONScanner lexer = new JSONScanner(\"1293770846476\");\r\n        lexer.scanNumber();\r\n        Assert.assertEquals(new Long(1293770846476L), (Long) lexer.integerValue());\r\n        Assert.assertEquals(1293770846476L, lexer.longValue());\r\n    }\r\n\r\n    public void ftest_parse_long_1() throws Exception {\r\n        System.out.println(System.currentTimeMillis());\r\n        JSONScanner lexer = new JSONScanner(Long.toString(Long.MAX_VALUE));\r\n        lexer.scanNumber();\r\n        Assert.assertEquals(new Long(Long.MAX_VALUE), (Long) lexer.integerValue());\r\n        Assert.assertEquals(Long.MAX_VALUE, lexer.longValue());\r\n    }\r\n\r\n    public void test_parse_long_2() throws Exception {\r\n        System.out.println(System.currentTimeMillis());\r\n        JSONScanner lexer = new JSONScanner(Long.toString(Long.MIN_VALUE));\r\n        lexer.scanNumber();\r\n        Assert.assertEquals(new Long(Long.MIN_VALUE), (Long) lexer.integerValue());\r\n        Assert.assertEquals(Long.MIN_VALUE, lexer.longValue());\r\n    }\r\n\r\n    public void test_error_0() {\r\n        Exception error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"--\");\r\n            lexer.scanNumber();\r\n            lexer.longValue();\r\n        } catch (Exception ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error_1() {\r\n        Exception error = null;\r\n        try {\r\n            String text = Long.MAX_VALUE + \"1234\";\r\n            JSONScanner lexer = new JSONScanner(text);\r\n            lexer.scanNumber();\r\n            lexer.longValue();\r\n        } catch (Exception ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error_2() {\r\n        Exception error = null;\r\n        try {\r\n            String text = Long.MIN_VALUE + \"1234\";\r\n            JSONScanner lexer = new JSONScanner(text);\r\n            lexer.scanNumber();\r\n            lexer.longValue();\r\n        } catch (Exception ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error_3() {\r\n        Exception error = null;\r\n        try {\r\n            String text = \"9223372036854775809\";\r\n            JSONScanner lexer = new JSONScanner(text);\r\n            lexer.scanNumber();\r\n            lexer.longValue();\r\n        } catch (Exception ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONScannerTest_new.java",
    "content": "package com.alibaba.json.bvt.parser;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.parser.JSONScanner;\r\n\r\npublic class JSONScannerTest_new extends TestCase {\r\n\r\n    public void test_scan_new_0() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"new\");\r\n        lexer.scanNullOrNew();\r\n    }\r\n\r\n    public void test_scan_new_1() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"nww\");\r\n            lexer.scanNullOrNew();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_scan_new_2() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"nee\");\r\n            lexer.scanNullOrNew();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_scan_new_3() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"neel\");\r\n            lexer.scanNullOrNew();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_scan_new_4() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"neww\");\r\n            lexer.scanNullOrNew();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_scan_new_5() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"newe\");\r\n            lexer.scanNullOrNew();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_scan_new_6() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"new\\\"\");\r\n            lexer.scanNullOrNew();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_scan_new_7() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"new a\");\r\n        lexer.scanNullOrNew();\r\n    }\r\n\r\n    public void test_scan_new_8() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"new,\");\r\n        lexer.scanNullOrNew();\r\n    }\r\n\r\n    public void test_scan_new_9() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"new\\na\");\r\n        lexer.scanNullOrNew();\r\n    }\r\n\r\n    public void test_scan_new_10() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"new\\ra\");\r\n        lexer.scanNullOrNew();\r\n    }\r\n\r\n    public void test_scan_new_11() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"new\\ta\");\r\n        lexer.scanNullOrNew();\r\n    }\r\n\r\n    public void test_scan_new_12() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"new\\fa\");\r\n        lexer.scanNullOrNew();\r\n    }\r\n\r\n    public void test_scan_new_13() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"new\\ba\");\r\n        lexer.scanNullOrNew();\r\n    }\r\n\r\n    public void test_scan_new_14() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"new}\");\r\n        lexer.scanNullOrNew();\r\n    }\r\n\r\n    public void test_scan_new_15() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"new]\");\r\n        lexer.scanNullOrNew();\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONScannerTest_null.java",
    "content": "package com.alibaba.json.bvt.parser;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.parser.JSONScanner;\r\n\r\npublic class JSONScannerTest_null extends TestCase {\r\n\r\n    public void test_scan_null_0() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"null\");\r\n        lexer.scanNullOrNew();\r\n    }\r\n\r\n    public void test_scan_null_1() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"zull\");\r\n            lexer.scanNullOrNew();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_scan_null_2() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"nzll\");\r\n            lexer.scanNullOrNew();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_scan_null_3() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"nuzl\");\r\n            lexer.scanNullOrNew();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_scan_null_4() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"nulz\");\r\n            lexer.scanNullOrNew();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_scan_null_5() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"nulle\");\r\n            lexer.scanNullOrNew();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_scan_null_6() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"null\\\"\");\r\n            lexer.scanNullOrNew();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_scan_null_7() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"null a\");\r\n        lexer.scanNullOrNew();\r\n    }\r\n\r\n    public void test_scan_null_8() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"null,\");\r\n        lexer.scanNullOrNew();\r\n    }\r\n\r\n    public void test_scan_null_9() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"null\\na\");\r\n        lexer.scanNullOrNew();\r\n    }\r\n\r\n    public void test_scan_null_10() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"null\\ra\");\r\n        lexer.scanNullOrNew();\r\n    }\r\n\r\n    public void test_scan_null_11() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"null\\ta\");\r\n        lexer.scanNullOrNew();\r\n    }\r\n\r\n    public void test_scan_null_12() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"null\\fa\");\r\n        lexer.scanNullOrNew();\r\n    }\r\n\r\n    public void test_scan_null_13() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"null\\ba\");\r\n        lexer.scanNullOrNew();\r\n    }\r\n\r\n    public void test_scan_false_14() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"null}\");\r\n        lexer.scanNullOrNew();\r\n    }\r\n\r\n    public void test_scan_false_15() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"null]\");\r\n        lexer.scanNullOrNew();\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONScannerTest_scanFieldBoolean.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class JSONScannerTest_scanFieldBoolean extends TestCase {\n\n    public void test_true() throws Exception {\n        String text = \"{\\\"value\\\":true}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(true, obj.getValue());\n    }\n\n    public void test_false() throws Exception {\n        String text = \"{\\\"value\\\":false}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(false, obj.getValue());\n    }\n\n    public void test_1() throws Exception {\n        String text = \"{\\\"value\\\":\\\"true\\\"}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(true, obj.getValue());\n    }\n\n    public void test_2() throws Exception {\n        String text = \"{\\\"value\\\":\\\"false\\\"}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(false, obj.getValue());\n    }\n\n    public void test_3() throws Exception {\n        String text = \"{\\\"value\\\":\\\"1\\\"}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(true, obj.getValue());\n    }\n    \n\n    \n    public void test_5() throws Exception {\n        String text = \"{\\\"value\\\":false}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(false, obj.getValue());\n    }\n\n    public void test_error_0() {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":true\\\\n\\\"\";\n            JSON.parseObject(text, VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_1() {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":a\";\n            JSON.parseObject(text, VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_2() {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":teue}\";\n            JSON.parseObject(text, VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_3() {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":tree}\";\n            JSON.parseObject(text, VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_4() {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":truu}\";\n            JSON.parseObject(text, VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_5() {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":fflse}\";\n            JSON.parseObject(text, VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_6() {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":fasse}\";\n            JSON.parseObject(text, VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_7() {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":falee}\";\n            JSON.parseObject(text, VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_8() {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":falss}\";\n            JSON.parseObject(text, VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_9() {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":false]\";\n            JSON.parseObject(text, VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_10() {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":false}{\";\n            JSON.parseObject(text, VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_11() {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":false}}\";\n            JSON.parseObject(text, VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_12() {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":false}]\";\n            JSON.parseObject(text, VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_13() {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":false},\";\n            JSON.parseObject(text, VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class VO {\n\n        private boolean value;\n\n        public boolean getValue() {\n            return value;\n        }\n\n        public void setValue(boolean value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONScannerTest_scanFieldBoolean_unquote.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.json.bvt.parser.JSONScannerTest_scanFieldBoolean.VO;\n\npublic class JSONScannerTest_scanFieldBoolean_unquote extends TestCase {\n\n    public void test_4() throws Exception {\n        String text = \"{\\\"value\\\":false,id:2}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(false, obj.getValue());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONScannerTest_scanFieldDouble.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\npublic class JSONScannerTest_scanFieldDouble extends TestCase {\n\n    public void test_0() throws Exception {\n        String text = \"{\\\"value\\\":1.0}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertTrue(1D == obj.getValue());\n    }\n\n    public void test_1() throws Exception {\n        String text = \"{\\\"value\\\":\\\"1\\\"}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertTrue(1D == obj.getValue());\n    }\n\n    public void test_2() throws Exception {\n        String text = \"{\\\"f1\\\":2,\\\"value\\\":1.0}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertTrue(1D == obj.getValue());\n    }\n\n    public void test_3() throws Exception {\n        String text = \"{\\\"value\\\":1.01}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertTrue(1.01D == obj.getValue());\n    }\n\n    public void test_4() throws Exception {\n        String text = \"{\\\"value\\\":1.}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertTrue(1D == obj.getValue());\n    }\n\n    public void test_5() throws Exception {\n        String text = \"{\\\"value\\\":922337203685477580723}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertTrue(922337203685477580723D == obj.getValue());\n    }\n\n    public void test_error_2() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":32K}\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_3() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":32}{\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_4() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":中}\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_5() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":3.F\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_6() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":3.2]\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_7() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":3.2}]\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_8() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":3.2}}\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_9() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":3.2},\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_10() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":3.\\\\0}\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_11() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":3.中}\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class VO {\n\n        private double value;\n\n        public double getValue() {\n            return value;\n        }\n\n        public void setValue(double value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONScannerTest_scanFieldFloat.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.JSONScanner;\n\npublic class JSONScannerTest_scanFieldFloat extends TestCase {\n\n    public void test_0() throws Exception {\n        String text = \"{\\\"value\\\":1.0}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertTrue(1F == obj.getValue());\n    }\n\n    @SuppressWarnings(\"resource\")\n    public void test_isBlank() throws Exception {\n        String text = \"   {\\\"value\\\":1.0}\";\n        Assert.assertTrue(!new JSONScanner(text).isBlankInput());\n    }\n\n    public void test_1() throws Exception {\n        String text = \"{\\\"value\\\":\\\"1\\\"}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertTrue(1F == obj.getValue());\n    }\n\n    public void test_2() throws Exception {\n        String text = \"{\\\"f1\\\":2,\\\"value\\\":1.0}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertTrue(1F == obj.getValue());\n    }\n\n    public void test_3() throws Exception {\n        String text = \"{\\\"value\\\":1.01}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertTrue(1.01F == obj.getValue());\n    }\n\n    public void test_4() throws Exception {\n        String text = \"{\\\"value\\\":1.}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertTrue(1F == obj.getValue());\n    }\n\n    public void test_error_1() throws Exception {\n        String text = \"{\\\"value\\\":922337203685477580723}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertTrue(922337203685477580723F == obj.getValue());\n    }\n\n    public void test_error_2() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":32M}\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_3() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":32}{\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_4() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":中}\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_5() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":3.F\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_6() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":3.2]\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_7() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":3.2}]\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_8() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":3.2}}\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_9() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":3.2},\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_10() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":3.\\\\0}\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_11() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":3.中}\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class VO {\n\n        private float value;\n\n        public float getValue() {\n            return value;\n        }\n\n        public void setValue(float value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONScannerTest_scanFieldInt.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\npublic class JSONScannerTest_scanFieldInt extends TestCase {\n\n    public void test_0() throws Exception {\n        String text = \"{\\\"value\\\":1.0}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(1, obj.getValue());\n    }\n    \n    public void test_1() throws Exception {\n        String text = \"{\\\"value\\\":\\\"1\\\"}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(1, obj.getValue());\n    }\n\n    public void test_error_1() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":922337203685477580723}\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_2() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":32O}\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_3() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":32}{\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_4() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":中}\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_5() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":\\0}\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class VO {\n\n        private int value;\n\n        public int getValue() {\n            return value;\n        }\n\n        public void setValue(int value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONScannerTest_scanFieldLong.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\npublic class JSONScannerTest_scanFieldLong extends TestCase {\n\n    public void test_0() throws Exception {\n        String text = \"{\\\"value\\\":1.0}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(1, obj.getValue());\n    }\n\n    /**\n    public void test_1() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":922337203685477580723}\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_2() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":32RR}\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_3() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":中}\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_4() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":3}}\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_5() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":3}F\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_6() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":3{\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_7() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":\\0}\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n*/\n    public static class VO {\n\n        private long value;\n\n        public long getValue() {\n            return value;\n        }\n\n        public void setValue(long value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONScannerTest_scanFieldString.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class JSONScannerTest_scanFieldString extends TestCase {\n\n    public void test_0() throws Exception {\n        String text = \"{\\\"value\\\":1}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(\"1\", obj.getValue());\n    }\n\n    public void test_1() throws Exception {\n        String text = \"{\\\"value\\\":\\\"1\\\"}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(\"1\", obj.getValue());\n    }\n\n    public void test_2() throws Exception {\n        String text = \"{\\\"value\\\":\\\"1\\\\t\\\"}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(\"1\\t\", obj.getValue());\n    }\n\n    public void test_3() throws Exception {\n        String text = \"{\\\"value\\\":\\\"1\\\\n\\\"}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(\"1\\n\", obj.getValue());\n    }\n\n    public void test_error_0() {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":\\\"1\\\\n\\\"\";\n            JSON.parseObject(text, VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class VO {\n\n        private String value;\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONScannerTest_scanFieldStringArray.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\npublic class JSONScannerTest_scanFieldStringArray extends TestCase {\n\n    public void test_string() throws Exception {\n        String text = \"{\\\"value\\\":[1]}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(\"[1]\", obj.getValue().toString());\n    }\n\n    public void test_string_1() throws Exception {\n        String text = \"{\\\"value\\\":[\\\"1\\\"]}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(\"[1]\", obj.getValue().toString());\n    }\n    \n    public void test_string_2() throws Exception {\n        String text = \"{\\\"value\\\":['1']}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(\"[1]\", obj.getValue().toString());\n    }\n    \n    public void test_string_3() throws Exception {\n        String text = \"{\\\"value\\\":[\\\"1\\\\t2\\\"]}\";\n        VO obj = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(\"[1\\t2]\", obj.getValue().toString());\n    }\n    \n    public void test_string_4() throws Exception {\n        String text = \"[{\\\"value\\\":[\\\"1\\\"]}]\";\n        List<VO> list = JSON.parseArray(text, VO.class);\n        Assert.assertEquals(\"[1]\", list.get(0).getValue().toString());\n    }\n    \n    public void test_string_5() throws Exception {\n        String text = \"[{\\\"value\\\":[\\\"1\\\"]},{\\\"value\\\":[\\\"2\\\"]}]\";\n        List<VO> list = JSON.parseArray(text, VO.class);\n        Assert.assertEquals(\"[1]\", list.get(0).getValue().toString());\n        Assert.assertEquals(\"[2]\", list.get(1).getValue().toString());\n    }\n    \n    public void test_string_error() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":{}}\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        //Assert.assertNotNull(error);\n    }\n\n    public void test_string_error_2() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":[\\\"1\\\"}\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_string_error_3() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":[\\\"1\\\"]}}\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_string_error_4() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":[\\\"1\\\"]]\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_string_error_5() throws Exception {\n        JSONException error = null;\n        try {\n            String text = \"{\\\"value\\\":[\\\"1\\\"]}{\";\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException e) {\n            error = e;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class VO {\n\n        private List<String> value;\n\n        public List<String> getValue() {\n            return value;\n        }\n\n        public void setValue(List<String> value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONScannerTest_scanFieldString_error.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class JSONScannerTest_scanFieldString_error extends TestCase {\n\n    public void f_test_error_0() {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":\\\"1\\\\n\\\"\";\n            JSON.parseObject(text, VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void f_test_error_1() {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":\\\"1\\\"}}\";\n            JSON.parseObject(text, VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_2() {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":\\\"1\\\"}1\";\n            JSON.parseObject(text, VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_3() {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":\\\"1\\\"1\";\n            JSON.parseObject(text, VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n\n    public static class VO {\n\n        private String value;\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONScannerTest_scanSymbol.java",
    "content": "package com.alibaba.json.bvt.parser;\r\n\r\nimport com.alibaba.fastjson.util.TypeUtils;\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.parser.JSONScanner;\r\nimport com.alibaba.fastjson.parser.JSONToken;\r\nimport com.alibaba.fastjson.parser.SymbolTable;\r\n\r\nimport static com.alibaba.fastjson.util.TypeUtils.fnv1a_64_magic_hashcode;\r\nimport static com.alibaba.fastjson.util.TypeUtils.fnv1a_64_magic_prime;\r\n\r\n/**\r\n * 测试字符':'的处理\r\n * \r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class JSONScannerTest_scanSymbol extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"\\\"value\\\":\\\"aa\\\\n\\\"\");\r\n        long hashCode = lexer.scanFieldSymbol(\"\\\"value\\\":\".toCharArray());\r\n        assertEquals(0, hashCode);\r\n        Assert.assertEquals(JSONScanner.NOT_MATCH, lexer.matchStat());\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"\\\"value\\\":\\\"aa\\\"},\");\r\n        long hashCode = lexer.scanFieldSymbol(\"\\\"value\\\":\".toCharArray());\r\n        Assert.assertEquals(fnv_hash(\"aa\"), hashCode);\r\n        Assert.assertEquals(JSONScanner.END, lexer.matchStat());\r\n        Assert.assertEquals(JSONToken.COMMA, lexer.token());\r\n    }\r\n    \r\n    public void test_2() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"\\\"value\\\":\\\"aa\\\"}]\");\r\n        long hashCode = lexer.scanFieldSymbol(\"\\\"value\\\":\".toCharArray());\r\n        Assert.assertEquals(fnv_hash(\"aa\"), hashCode);\r\n        Assert.assertEquals(JSONScanner.END, lexer.matchStat());\r\n        Assert.assertEquals(JSONToken.RBRACKET, lexer.token());\r\n    }\r\n    \r\n    public void test_3() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"\\\"value\\\":\\\"aa\\\"}}\");\r\n        long hashCode = lexer.scanFieldSymbol(\"\\\"value\\\":\".toCharArray());\r\n        Assert.assertEquals(fnv_hash(\"aa\"), hashCode);\r\n        Assert.assertEquals(JSONScanner.END, lexer.matchStat());\r\n        Assert.assertEquals(JSONToken.RBRACE, lexer.token());\r\n    }\r\n    \r\n    public void test_4() throws Exception {\r\n    \tJSONScanner lexer = new JSONScanner(\"\\\"value\\\":\\\"aa\\\"}\");\r\n        long hashCode = lexer.scanFieldSymbol(\"\\\"value\\\":\".toCharArray());\r\n    \tAssert.assertEquals(fnv_hash(\"aa\"), hashCode);\r\n    \tAssert.assertEquals(JSONScanner.END, lexer.matchStat());\r\n    \tAssert.assertEquals(JSONToken.EOF, lexer.token());\r\n    }\r\n    \r\n    public void test_6() throws Exception {\r\n    \tJSONScanner lexer = new JSONScanner(\"\\\"value\\\":\\\"aa\\\"}{\");\r\n        long hashCode = lexer.scanFieldSymbol(\"\\\"value\\\":\".toCharArray());\r\n    \tAssert.assertEquals(0, hashCode);\r\n    \tAssert.assertEquals(JSONScanner.NOT_MATCH, lexer.matchStat());\r\n    }\r\n    \r\n    public void test_7() throws Exception {\r\n    \tJSONScanner lexer = new JSONScanner(\"\\\"value\\\":\\\"aa\\\"\");\r\n        long hashCode = lexer.scanFieldSymbol(\"\\\"value\\\":\".toCharArray());\r\n    \tAssert.assertEquals(0, hashCode);\r\n    \tAssert.assertEquals(JSONScanner.NOT_MATCH, lexer.matchStat());\r\n    }\r\n\r\n    public void test_8() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"\\\"value\\\": \\\"MINUTES\\\",\");\r\n        long hashCode = lexer.scanFieldSymbol(\"\\\"value\\\":\".toCharArray());\r\n        assertEquals(189130438399835214L, hashCode);\r\n        Assert.assertEquals(JSONScanner.VALUE, lexer.matchStat());\r\n    }\r\n\r\n    public void test_9() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"\\\"value\\\":\\\"MINUTES\\\",\");\r\n        long hashCode = lexer.scanFieldSymbol(\"\\\"value\\\":\".toCharArray());\r\n        assertEquals(189130438399835214L, hashCode);\r\n        Assert.assertEquals(JSONScanner.VALUE, lexer.matchStat());\r\n    }\r\n\r\n    public void test_10() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"      \\\"value\\\":\\\"MINUTES\\\",\");\r\n        long hashCode = lexer.scanFieldSymbol(\"\\\"value\\\":\".toCharArray());\r\n        assertEquals(189130438399835214L, hashCode);\r\n        Assert.assertEquals(JSONScanner.VALUE, lexer.matchStat());\r\n    }\r\n\r\n    public void test_11() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"      \\\"value\\\":\\\"A\\\",\");\r\n        long hashCode = lexer.scanFieldSymbol(\"\\\"value\\\":\".toCharArray());\r\n        assertEquals(TypeUtils.fnv1a_64(\"A\"), hashCode);\r\n        Assert.assertEquals(JSONScanner.VALUE, lexer.matchStat());\r\n    }\r\n\r\n    static long fnv_hash(String text) {\r\n        long hash = fnv1a_64_magic_hashcode;\r\n        for (int i = 0; i < text.length(); ++i) {\r\n            char c = text.charAt(i);\r\n            hash ^= c;\r\n            hash *= fnv1a_64_magic_prime;\r\n        }\r\n        return hash;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONScannerTest_singQuoteString.java",
    "content": "package com.alibaba.json.bvt.parser;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.parser.Feature;\r\nimport com.alibaba.fastjson.parser.JSONScanner;\r\nimport com.alibaba.fastjson.parser.JSONToken;\r\n\r\npublic class JSONScannerTest_singQuoteString extends TestCase {\r\n\r\n    public void test_string() throws Exception {\r\n        {\r\n            JSONScanner lexer = new JSONScanner(\"\\'中国\\'\");\r\n            lexer.config(Feature.AllowSingleQuotes, true);\r\n            lexer.nextToken();\r\n            Assert.assertEquals(\"中国\", lexer.stringVal());\r\n        }\r\n        {\r\n            JSONScanner lexer = new JSONScanner(\"'中国\\t\\\\'\\\\\\\"'\");\r\n            lexer.config(Feature.AllowSingleQuotes, true);\r\n            lexer.nextToken();\r\n            Assert.assertEquals(\"中国\\t'\\\"\", lexer.stringVal());\r\n        }\r\n        {\r\n            JSONScanner lexer = new JSONScanner(\"\\'中国\\tV5\\'\");\r\n            lexer.config(Feature.AllowSingleQuotes, true);\r\n            lexer.nextToken();\r\n            Assert.assertEquals(\"中国\\tV5\", lexer.stringVal());\r\n        }\r\n\r\n        StringBuilder buf = new StringBuilder();\r\n\r\n        buf.append('\\'');\r\n        buf.append(\"\\\\\\\\\\\\/\\\\b\\\\f\\\\n\\\\r\\t\\\\u\" + Integer.toHexString('中'));\r\n        buf.append('\\'');\r\n        buf.append('\\u2001');\r\n\r\n        String text = buf.toString();\r\n\r\n        JSONScanner lexer = new JSONScanner(text.toCharArray(), text.length() - 1);\r\n        lexer.config(Feature.AllowSingleQuotes, true);\r\n        lexer.nextToken();\r\n\r\n        Assert.assertEquals(0, lexer.pos());\r\n\r\n        String stringVal = lexer.stringVal();\r\n\r\n        Assert.assertEquals(\"\\\"\\\\\\\\/\\\\b\\\\f\\\\n\\\\r\\\\t中\\\"\", JSON.toJSONString(stringVal));\r\n\r\n        JSON.toJSONString(stringVal);\r\n    }\r\n\r\n    public void test_string2() throws Exception {\r\n        StringBuilder buf = new StringBuilder();\r\n\r\n        buf.append('\\'');\r\n        for (int i = 0; i < 200; ++i) {\r\n            buf.append(\"\\\\\\\\\\\\/\\\\b\\\\f\\\\n\\\\r\\\\t\\\\u\" + Integer.toHexString('中'));\r\n        }\r\n        buf.append('\\'');\r\n\r\n        String text = buf.toString();\r\n\r\n        JSONScanner lexer = new JSONScanner(text.toCharArray(), text.length());\r\n        lexer.config(Feature.AllowSingleQuotes, true);\r\n        lexer.nextToken();\r\n\r\n        Assert.assertEquals(0, lexer.pos());\r\n\r\n        String stringVal = lexer.stringVal();\r\n\r\n        // Assert.assertEquals(\"\\\"\\\\\\\\\\\\/\\\\b\\\\f\\\\n\\\\r\\\\t中\\\"\",\r\n        // JSON.toJSONString(stringVal));\r\n\r\n        JSON.toJSONString(stringVal);\r\n    }\r\n\r\n    public void test_string3() throws Exception {\r\n        StringBuilder buf = new StringBuilder();\r\n\r\n        buf.append('\\'');\r\n        for (int i = 0; i < 200; ++i) {\r\n            buf.append(\"abcdefghijklmn012345689ABCDEFG\");\r\n        }\r\n        buf.append('\\'');\r\n\r\n        String text = buf.toString();\r\n\r\n        JSONScanner lexer = new JSONScanner(text.toCharArray(), text.length());\r\n        lexer.config(Feature.AllowSingleQuotes, true);\r\n        lexer.nextToken();\r\n\r\n        Assert.assertEquals(0, lexer.pos());\r\n\r\n        String stringVal = lexer.stringVal();\r\n\r\n        // Assert.assertEquals(\"\\\"\\\\\\\\\\\\/\\\\b\\\\f\\\\n\\\\r\\\\t中\\\"\",\r\n        // JSON.toJSONString(stringVal));\r\n\r\n        JSON.toJSONString(stringVal);\r\n    }\r\n\r\n    public void test_string4() throws Exception {\r\n        StringBuilder buf = new StringBuilder();\r\n\r\n        buf.append('\\'');\r\n        for (int i = 0; i < 200; ++i) {\r\n            buf.append(\"\\\\tabcdefghijklmn012345689ABCDEFG\");\r\n        }\r\n        buf.append('\\'');\r\n\r\n        String text = buf.toString();\r\n\r\n        JSONScanner lexer = new JSONScanner(text.toCharArray(), text.length());\r\n        lexer.config(Feature.AllowSingleQuotes, true);\r\n        lexer.nextToken();\r\n\r\n        Assert.assertEquals(0, lexer.pos());\r\n\r\n        String stringVal = lexer.stringVal();\r\n\r\n        // Assert.assertEquals(\"\\\"\\\\\\\\\\\\/\\\\b\\\\f\\\\n\\\\r\\\\t中\\\"\",\r\n        // JSON.toJSONString(stringVal));\r\n\r\n        JSON.toJSONString(stringVal);\r\n    }\r\n\r\n    public void test_error() throws Exception {\r\n        Exception error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"'k\");\r\n            lexer.config(Feature.AllowSingleQuotes, true);\r\n            lexer.nextToken();\r\n        } catch (JSONException ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error_1() throws Exception {\r\n        Exception error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"'k\\\\k'\");\r\n            lexer.config(Feature.AllowSingleQuotes, true);\r\n            lexer.nextToken();\r\n            Assert.assertEquals(JSONToken.ERROR, lexer.token());\r\n        } catch (JSONException ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONScannerTest_symbol.java",
    "content": "package com.alibaba.json.bvt.parser;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.parser.JSONScanner;\r\nimport com.alibaba.fastjson.parser.SymbolTable;\r\n\r\n/**\r\n * test symbol\r\n * \r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class JSONScannerTest_symbol extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        SymbolTable symbolTable = new SymbolTable(512);\r\n\r\n        JSONScanner lexer = new JSONScanner(\"\\\"name\\\"\");\r\n        String symbol = lexer.scanSymbol(symbolTable, '\"');\r\n        Assert.assertTrue(\"name\".equals(symbol));\r\n        lexer.close();\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        SymbolTable symbolTable = new SymbolTable(512);\r\n\r\n        JSONScanner lexer = new JSONScanner(\"\\\"nick name\\\"\");\r\n        String symbol = lexer.scanSymbol(symbolTable, '\"');\r\n        Assert.assertTrue(\"nick name\".equals(symbol));\r\n        lexer.close();\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        SymbolTable symbolTable = new SymbolTable(512);\r\n\r\n        JSONScanner lexer = new JSONScanner(\"\\\"nick \\\\\\\"name\\\"\");\r\n        String symbol = lexer.scanSymbol(symbolTable, '\"');\r\n        Assert.assertTrue(\"nick \\\"name\" == symbol);\r\n        lexer.close();\r\n    }\r\n\r\n    public void test_3() throws Exception {\r\n        SymbolTable symbolTable = new SymbolTable(512);\r\n\r\n        JSONScanner lexer = new JSONScanner(\"\\\"nick \\\\\\\\name\\\"\");\r\n        String symbol = lexer.scanSymbol(symbolTable, '\"');\r\n        Assert.assertTrue(\"nick \\\\name\" == symbol);\r\n        lexer.close();\r\n    }\r\n\r\n    public void test_4() throws Exception {\r\n        SymbolTable symbolTable = new SymbolTable(512);\r\n\r\n        JSONScanner lexer = new JSONScanner(\"\\\"nick \\\\/name\\\"\");\r\n        String symbol = lexer.scanSymbol(symbolTable, '\"');\r\n        Assert.assertTrue(\"nick /name\" == symbol);\r\n        lexer.close();\r\n    }\r\n\r\n    public void test_5() throws Exception {\r\n        SymbolTable symbolTable = new SymbolTable(512);\r\n\r\n        JSONScanner lexer = new JSONScanner(\"\\\"nick \\\\bname\\\"\");\r\n        String symbol = lexer.scanSymbol(symbolTable, '\"');\r\n        Assert.assertTrue(\"nick \\bname\" == symbol);\r\n        lexer.close();\r\n    }\r\n\r\n    public void test_6() throws Exception {\r\n        SymbolTable symbolTable = new SymbolTable(512);\r\n\r\n        JSONScanner lexer = new JSONScanner(\"\\\"nick \\\\f name\\\"\");\r\n        String symbol = lexer.scanSymbol(symbolTable, '\"');\r\n        Assert.assertTrue(\"nick \\f name\" == symbol);\r\n        lexer.close();\r\n    }\r\n\r\n    public void test_7() throws Exception {\r\n        SymbolTable symbolTable = new SymbolTable(512);\r\n\r\n        JSONScanner lexer = new JSONScanner(\"\\\"nick \\\\F name\\\"\");\r\n        String symbol = lexer.scanSymbol(symbolTable, '\"');\r\n        Assert.assertTrue(\"nick \\f name\" == symbol);\r\n        lexer.close();\r\n    }\r\n\r\n    public void test_8() throws Exception {\r\n        SymbolTable symbolTable = new SymbolTable(512);\r\n\r\n        JSONScanner lexer = new JSONScanner(\"\\\"nick \\\\n name\\\"\");\r\n        String symbol = lexer.scanSymbol(symbolTable, '\"');\r\n        Assert.assertTrue(\"nick \\n name\" == symbol);\r\n        lexer.close();\r\n    }\r\n\r\n    public void test_9() throws Exception {\r\n        SymbolTable symbolTable = new SymbolTable(512);\r\n\r\n        JSONScanner lexer = new JSONScanner(\"\\\"nick \\\\r name\\\"\");\r\n        String symbol = lexer.scanSymbol(symbolTable, '\"');\r\n        Assert.assertTrue(\"nick \\r name\" == symbol);\r\n        lexer.close();\r\n    }\r\n\r\n    public void test_10() throws Exception {\r\n        SymbolTable symbolTable = new SymbolTable(512);\r\n\r\n        JSONScanner lexer = new JSONScanner(\"\\\"nick \\\\t name\\\"\");\r\n        String symbol = lexer.scanSymbol(symbolTable, '\"');\r\n        Assert.assertTrue(\"nick \\t name\" == symbol);\r\n        lexer.close();\r\n    }\r\n\r\n    public void test_11() throws Exception {\r\n        SymbolTable symbolTable = new SymbolTable(512);\r\n\r\n        JSONScanner lexer = new JSONScanner(\"\\\"nick \\\\u4e2d name\\\"\");\r\n        String symbol = lexer.scanSymbol(symbolTable, '\"');\r\n        Assert.assertTrue(\"nick 中 name\" == symbol);\r\n        lexer.close();\r\n    }\r\n\r\n    public void test_12() throws Exception {\r\n        SymbolTable symbolTable = new SymbolTable(512);\r\n\r\n        JSONScanner lexer = new JSONScanner(\r\n                                            \"\\\"\\\\tabcdefghijklmnopqrstuvwxyz01234567890abcdefghijklmnopqrstuvwxyz01234567890abcdefghijklmnopqrstuvwxyz01234567890abcdefghijklmnopqrstuvwxyz01234567890\\\"\");\r\n        String symbol = lexer.scanSymbol(symbolTable, '\"');\r\n        Assert.assertTrue(\"\\tabcdefghijklmnopqrstuvwxyz01234567890abcdefghijklmnopqrstuvwxyz01234567890abcdefghijklmnopqrstuvwxyz01234567890abcdefghijklmnopqrstuvwxyz01234567890\" == symbol);\r\n        lexer.close();\r\n    }\r\n\r\n    public void test_error() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            SymbolTable symbolTable = new SymbolTable(512);\r\n\r\n            JSONScanner lexer = new JSONScanner(\"\\\"nick \\\\a name\\\"\");\r\n            lexer.scanSymbol(symbolTable, '\"');\r\n            lexer.close();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error_2() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            SymbolTable symbolTable = new SymbolTable(512);\r\n\r\n            JSONScanner lexer = new JSONScanner(\"\\\"name\");\r\n            lexer.scanSymbol(symbolTable, '\"');\r\n            lexer.close();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/JSONScannerTest_true.java",
    "content": "package com.alibaba.json.bvt.parser;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.parser.JSONScanner;\r\n\r\npublic class JSONScannerTest_true extends TestCase {\r\n\r\n    public void test_scan_true_0() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"true\");\r\n        lexer.scanTrue();\r\n    }\r\n\r\n    public void test_scan_true_1() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"frue\");\r\n            lexer.scanTrue();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_scan_true_2() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"ttue\");\r\n            lexer.scanTrue();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_scan_true_3() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"trze\");\r\n            lexer.scanTrue();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_scan_true_4() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"truz\");\r\n            lexer.scanTrue();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_scan_true_5() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"truee\");\r\n            lexer.scanTrue();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_scan_true_6() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            JSONScanner lexer = new JSONScanner(\"true\\\"\");\r\n            lexer.scanTrue();\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_scan_true_7() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"true a\");\r\n        lexer.scanTrue();\r\n    }\r\n\r\n    public void test_scan_true_8() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"true,\");\r\n        lexer.scanTrue();\r\n    }\r\n\r\n    public void test_scan_true_9() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"true\\na\");\r\n        lexer.scanTrue();\r\n    }\r\n\r\n    public void test_scan_true_10() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"true\\ra\");\r\n        lexer.scanTrue();\r\n    }\r\n\r\n    public void test_scan_true_11() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"true\\ta\");\r\n        lexer.scanTrue();\r\n    }\r\n\r\n    public void test_scan_true_12() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"true\\fa\");\r\n        lexer.scanTrue();\r\n    }\r\n\r\n    public void test_scan_true_13() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"true\\ba\");\r\n        lexer.scanTrue();\r\n    }\r\n\r\n    public void test_scan_false_14() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"true}\");\r\n        lexer.scanTrue();\r\n    }\r\n\r\n    public void test_scan_false_15() throws Exception {\r\n        JSONScanner lexer = new JSONScanner(\"true]\");\r\n        lexer.scanTrue();\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/MapResetTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class MapResetTest extends TestCase {\n\n    public void test_0() throws Exception {\n        Book book = new Book();\n\n//         book.setMetadata(new MetaData());\n        String text = JSON.toJSONString(book);\n\n        System.out.println(text);\n\n        Book book2 = JSON.parseObject(text, Book.class);\n        System.out.println(JSON.toJSONString(book2));\n    }\n\n    public static class Book {\n\n        private int      id;\n        private int      pageCountNum;\n\n        private MetaData metadata;\n\n         public int getPageCountNum() {\n         return pageCountNum;\n         }\n        \n        public void setPageCountNum(int pageCountNum) {\n            this.pageCountNum = pageCountNum;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public MetaData getMetadata() {\n            return metadata;\n        }\n\n        public void setMetadata(MetaData metadata) {\n            this.metadata = metadata;\n        }\n\n        \n\n        \n    }\n\n    public static class MetaData {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/MaximumLevelTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport junit.framework.TestCase;\n\npublic class MaximumLevelTest extends TestCase {\n    public void test_for_maximum() throws Exception {\n        int[] chars = new int[] {0x5b, 0x7b};\n\n        for (int ch : chars) {\n            StringBuilder sb = new StringBuilder();\n            for (int i = 0; i < 500; ++i) {\n                sb.append((char) ch);\n            }\n\n            Exception error = null;\n            try {\n                JSON.parseObject(sb.toString());\n            } catch (JSONException ex) {\n                error = ex;\n            }\n\n            assertNotNull(error);\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/NullCheckTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class NullCheckTest extends TestCase {\n\n    public void test_0() throws Exception {\n        Assert.assertEquals(null, JSON.parse(null));\n        Assert.assertEquals(null, JSON.parse(\"\"));\n        Assert.assertEquals(null, JSON.parse(\" \"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/OrderedFieldTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class OrderedFieldTest extends TestCase {\n    public void test_ordered_field() throws Exception {\n        String text = \"{\\\"id\\\":1001}\";\n        Model model = JSON.parseObject(text, Model.class, Feature.OrderedField);\n        Assert.assertEquals(1001, model.getId());\n        String text2 = JSON.toJSONString(model);\n        Assert.assertEquals(text, text2);\n        \n    }\n    \n    public static interface Model {\n        public int getId();\n        public void setId(int value);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/ParseContextTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.parser.ParseContext;\n\n\npublic class ParseContextTest extends TestCase {\n    public void test_toString() throws Exception {\n        Assert.assertEquals(\"$\", new ParseContext(null, new Object(), \"id\").toString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/ParseRestTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class ParseRestTest extends TestCase {\n\n    public void test_parseRest_0() throws Exception {\n        String text = \"{\\\"f3\\\":333,\\\"f2\\\":222}\";\n        Entity entity = JSON.parseObject(text, Entity.class);\n        Assert.assertEquals(0, entity.getF0());\n        Assert.assertEquals(0, entity.getF1());\n        Assert.assertEquals(222, entity.getF2());\n        Assert.assertEquals(333, entity.getF3());\n    }\n\n    public static class Entity {\n\n        private int f0;\n        private int f1;\n        private int f2;\n        private int f3;\n\n        public int getF0() {\n            return f0;\n        }\n\n        public void setF0(int f0) {\n            this.f0 = f0;\n        }\n\n        public int getF1() {\n            return f1;\n        }\n\n        public void setF1(int f1) {\n            this.f1 = f1;\n        }\n\n        public int getF2() {\n            return f2;\n        }\n\n        public void setF2(int f2) {\n            this.f2 = f2;\n        }\n\n        public int getF3() {\n            return f3;\n        }\n\n        public void setF3(int f3) {\n            this.f3 = f3;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/ParserSpecialCharTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class ParserSpecialCharTest extends TestCase {\n\n    public void test_0() throws Exception {\n        Assert.assertEquals(\"\\0\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\0\\\"}\", VO.class).getValue());\n    }\n    \n    public void test_1() throws Exception {\n        Assert.assertEquals(\"\\1\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\1\\\"}\", VO.class).getValue());\n    }\n    \n    public void test_2() throws Exception {\n        Assert.assertEquals(\"\\2\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\2\\\"}\", VO.class).getValue());\n    }\n    \n    public void test_3() throws Exception {\n        Assert.assertEquals(\"\\3\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\3\\\"}\", VO.class).getValue());\n    }\n    \n    public void test_4() throws Exception {\n        Assert.assertEquals(\"\\4\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\4\\\"}\", VO.class).getValue());\n    }\n    \n    public void test_5() throws Exception {\n        Assert.assertEquals(\"\\5\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\5\\\"}\", VO.class).getValue());\n    }\n    \n    public void test_6() throws Exception {\n        Assert.assertEquals(\"\\6\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\6\\\"}\", VO.class).getValue());\n    }\n    \n    public void test_7() throws Exception {\n        Assert.assertEquals(\"\\7\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\7\\\"}\", VO.class).getValue());\n    }\n    \n    public void test_8() throws Exception {\n        Assert.assertEquals(\"\\b\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\b\\\"}\", VO.class).getValue());\n    }\n    \n    public void test_9() throws Exception {\n        Assert.assertEquals(\"\\t\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\t\\\"}\", VO.class).getValue());\n    }\n    \n    public void test_10() throws Exception {\n        Assert.assertEquals(\"\\n\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\n\\\"}\", VO.class).getValue());\n    }\n    \n    public void test_11() throws Exception {\n        Assert.assertEquals(\"\\u000B\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\v\\\"}\", VO.class).getValue());\n    }\n    \n    public void test_12() throws Exception {\n        Assert.assertEquals(\"\\f\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\f\\\"}\", VO.class).getValue());\n    }\n    \n    public void test_13() throws Exception {\n        Assert.assertEquals(\"\\r\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\r\\\"}\", VO.class).getValue());\n    }\n    \n    public void test_34() throws Exception {\n        Assert.assertEquals(\"\\\"\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\\\\"\\\"}\", VO.class).getValue());\n    }\n    \n    public void test_39() throws Exception {\n        Assert.assertEquals(\"'\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\'\\\"}\", VO.class).getValue());\n    }\n    \n    public void test_47() throws Exception {\n        Assert.assertEquals(\"/\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\/\\\"}\", VO.class).getValue());\n    }\n    \n    public void test_92() throws Exception {\n        Assert.assertEquals(\"\\\\\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\\\\\\\\"}\", VO.class).getValue());\n    }\n    public static class VO {\n\n        private String value;\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/ParserSpecialCharTest_map.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class ParserSpecialCharTest_map extends TestCase {\n\n    public void test_0() throws Exception {\n        Assert.assertEquals(\"\\0\", JSON.parseObject(\"{'value':'\\\\0'}\").getString(\"value\"));\n    }\n    \n    public void test_1() throws Exception {\n        Assert.assertEquals(\"\\1\", JSON.parseObject(\"{'value':'\\\\1'}\").getString(\"value\"));\n    }\n    \n    public void test_2() throws Exception {\n        Assert.assertEquals(\"\\2\", JSON.parseObject(\"{'value':'\\\\2'}\").getString(\"value\"));\n    }\n    \n    public void test_3() throws Exception {\n        Assert.assertEquals(\"\\3\", JSON.parseObject(\"{'value':'\\\\3'}\").getString(\"value\"));\n    }\n    \n    public void test_4() throws Exception {\n        Assert.assertEquals(\"\\4\", JSON.parseObject(\"{'value':'\\\\4'}\").getString(\"value\"));\n    }\n    \n    public void test_5() throws Exception {\n        Assert.assertEquals(\"\\5\", JSON.parseObject(\"{'value':'\\\\5'}\").getString(\"value\"));\n    }\n    \n    public void test_6() throws Exception {\n        Assert.assertEquals(\"\\6\", JSON.parseObject(\"{'value':'\\\\6'}\").getString(\"value\"));\n    }\n    \n    public void test_7() throws Exception {\n        Assert.assertEquals(\"\\7\", JSON.parseObject(\"{'value':'\\\\7'}\").getString(\"value\"));\n    }\n    \n    public void test_8() throws Exception {\n        Assert.assertEquals(\"\\b\", JSON.parseObject(\"{'value':'\\\\b'}\").getString(\"value\"));\n    }\n    \n    public void test_9() throws Exception {\n        Assert.assertEquals(\"\\t\", JSON.parseObject(\"{'value':'\\\\t'}\").getString(\"value\"));\n    }\n    \n    public void test_10() throws Exception {\n        Assert.assertEquals(\"\\n\", JSON.parseObject(\"{'value':'\\\\n'}\").getString(\"value\"));\n    }\n    \n    public void test_11() throws Exception {\n        Assert.assertEquals(\"\\u000B\", JSON.parseObject(\"{'value':'\\\\v'}\").getString(\"value\"));\n    }\n    \n    public void test_12() throws Exception {\n        Assert.assertEquals(\"\\f\", JSON.parseObject(\"{'value':'\\\\f'}\").getString(\"value\"));\n    }\n    \n    public void test_13() throws Exception {\n        Assert.assertEquals(\"\\r\", JSON.parseObject(\"{'value':'\\\\r'}\").getString(\"value\"));\n    }\n    \n    public void test_34() throws Exception {\n        Assert.assertEquals(\"\\\"\", JSON.parseObject(\"{'value':'\\\\\\\"'}\").getString(\"value\"));\n    }\n    \n    public void test_39() throws Exception {\n        Assert.assertEquals(\"'\", JSON.parseObject(\"{'value':'\\\\''}\").getString(\"value\"));\n    }\n    \n    public void test_47() throws Exception {\n        Assert.assertEquals(\"/\", JSON.parseObject(\"{'value':'\\\\/'}\").getString(\"value\"));\n    }\n    \n    public void test_92() throws Exception {\n        Assert.assertEquals(\"\\\\\", JSON.parseObject(\"{'value':'\\\\\\\\'}\").getString(\"value\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/ParserSpecialCharTest_map_singleQuote.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class ParserSpecialCharTest_map_singleQuote extends TestCase {\n\n    public void test_0() throws Exception {\n        Assert.assertEquals(\"\\0\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\0\\\"}\").getString(\"value\"));\n    }\n    \n    public void test_1() throws Exception {\n        Assert.assertEquals(\"\\1\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\1\\\"}\").getString(\"value\"));\n    }\n    \n    public void test_2() throws Exception {\n        Assert.assertEquals(\"\\2\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\2\\\"}\").getString(\"value\"));\n    }\n    \n    public void test_3() throws Exception {\n        Assert.assertEquals(\"\\3\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\3\\\"}\").getString(\"value\"));\n    }\n    \n    public void test_4() throws Exception {\n        Assert.assertEquals(\"\\4\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\4\\\"}\").getString(\"value\"));\n    }\n    \n    public void test_5() throws Exception {\n        Assert.assertEquals(\"\\5\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\5\\\"}\").getString(\"value\"));\n    }\n    \n    public void test_6() throws Exception {\n        Assert.assertEquals(\"\\6\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\6\\\"}\").getString(\"value\"));\n    }\n    \n    public void test_7() throws Exception {\n        Assert.assertEquals(\"\\7\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\7\\\"}\").getString(\"value\"));\n    }\n    \n    public void test_8() throws Exception {\n        Assert.assertEquals(\"\\b\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\b\\\"}\").getString(\"value\"));\n    }\n    \n    public void test_9() throws Exception {\n        Assert.assertEquals(\"\\t\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\t\\\"}\").getString(\"value\"));\n    }\n    \n    public void test_10() throws Exception {\n        Assert.assertEquals(\"\\n\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\n\\\"}\").getString(\"value\"));\n    }\n    \n    public void test_11() throws Exception {\n        Assert.assertEquals(\"\\u000B\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\v\\\"}\").getString(\"value\"));\n    }\n    \n    public void test_12() throws Exception {\n        Assert.assertEquals(\"\\f\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\f\\\"}\").getString(\"value\"));\n    }\n    \n    public void test_13() throws Exception {\n        Assert.assertEquals(\"\\r\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\r\\\"}\").getString(\"value\"));\n    }\n    \n    public void test_34() throws Exception {\n        Assert.assertEquals(\"\\\"\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\\\\"\\\"}\").getString(\"value\"));\n    }\n    \n    public void test_39() throws Exception {\n        Assert.assertEquals(\"'\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\'\\\"}\").getString(\"value\"));\n    }\n    \n    public void test_47() throws Exception {\n        Assert.assertEquals(\"/\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\/\\\"}\").getString(\"value\"));\n    }\n    \n    public void test_92() throws Exception {\n        Assert.assertEquals(\"\\\\\", JSON.parseObject(\"{\\\"value\\\":\\\"\\\\\\\\\\\"}\").getString(\"value\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/PrivateConstrunctorTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 2016/10/22.\n */\npublic class PrivateConstrunctorTest extends TestCase {\n\n    public void test_parse() throws Exception {\n        JSON.parseObject(\"{}\", Hidden.class);\n    }\n\n    public static class Hidden {\n        private Hidden() {}\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/ProductViewTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\n\npublic class ProductViewTest extends TestCase {\n    public void test_parse() throws Exception {\n        String text = \"{\\\"code\\\":0,\\\"message\\\":\\\"Register Successfully!\\\",\\\"status\\\":\\\"OK\\\"}\";\n        Map map = JSON.parseObject(text, Map.class);\n        System.out.println(map.get(\"code\").getClass());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/ReadOnlyAtomicBooleanTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.concurrent.atomic.AtomicBoolean;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class ReadOnlyAtomicBooleanTest extends TestCase {\n\n    public void test_readOnly() throws Exception {\n        Model model = new Model();\n        model.value.set(true);\n\n        String text = JSON.toJSONString(model);\n        Assert.assertEquals(\"{\\\"value\\\":true}\", text);\n        Model model2 = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(model.value.get(), model2.value.get());\n    }\n\n    public static class Model {\n        private final AtomicBoolean value = new AtomicBoolean();\n\n        public AtomicBoolean getValue() {\n            return value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/ReadOnlyAtomicBooleanTest_field.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.concurrent.atomic.AtomicBoolean;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class ReadOnlyAtomicBooleanTest_field extends TestCase {\n\n    public void test_readOnly() throws Exception {\n        Model model = new Model();\n        model.value.set(true);\n\n        String text = JSON.toJSONString(model);\n        Assert.assertEquals(\"{\\\"value\\\":true}\", text);\n        Model model2 = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(model.value.get(), model2.value.get());\n    }\n\n    public static class Model {\n        public final AtomicBoolean value = new AtomicBoolean();\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/ReadOnlyAtomicIntegerTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.concurrent.atomic.AtomicInteger;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class ReadOnlyAtomicIntegerTest extends TestCase {\n\n    public void test_readOnly() throws Exception {\n        Model model = new Model();\n        model.value.set(1001);\n\n        String text = JSON.toJSONString(model);\n        Assert.assertEquals(\"{\\\"value\\\":1001}\", text);\n        Model model2 = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(model.value.get(), model2.value.get());\n    }\n\n    public static class Model {\n        private final AtomicInteger value = new AtomicInteger();\n\n        public AtomicInteger getValue() {\n            return value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/ReadOnlyAtomicIntegerTest_field.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.concurrent.atomic.AtomicInteger;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class ReadOnlyAtomicIntegerTest_field extends TestCase {\n\n    public void test_readOnly() throws Exception {\n        Model model = new Model();\n        model.value.set(1001);\n\n        String text = JSON.toJSONString(model);\n        Assert.assertEquals(\"{\\\"value\\\":1001}\", text);\n        Model model2 = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(model.value.get(), model2.value.get());\n    }\n\n    public static class Model {\n        public final AtomicInteger value = new AtomicInteger();\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/ReadOnlyAtomicLongTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.concurrent.atomic.AtomicLong;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class ReadOnlyAtomicLongTest extends TestCase {\n\n    public void test_readOnly() throws Exception {\n        Model model = new Model();\n        model.value.set(1001);\n\n        String text = JSON.toJSONString(model);\n        Assert.assertEquals(\"{\\\"value\\\":1001}\", text);\n        Model model2 = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(model.value.get(), model2.value.get());\n    }\n\n    public static class Model {\n        private final AtomicLong value = new AtomicLong();\n\n        public AtomicLong getValue() {\n            return value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/ReadOnlyAtomicLongTest_field.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.concurrent.atomic.AtomicLong;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class ReadOnlyAtomicLongTest_field extends TestCase {\n\n    public void test_readOnly() throws Exception {\n        Model model = new Model();\n        model.value.set(1001);\n\n        String text = JSON.toJSONString(model);\n        Assert.assertEquals(\"{\\\"value\\\":1001}\", text);\n        Model model2 = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(model.value.get(), model2.value.get());\n    }\n\n    public static class Model {\n        public final AtomicLong value = new AtomicLong();\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/ReadOnlyCollectionTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.List;\n\nimport org.junit.Assert;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class ReadOnlyCollectionTest extends TestCase {\n    \n    public void test_readOnlyNullList() throws Exception {\n        String text = \"{\\\"list\\\":[]}\";\n        Entity entity = JSON.parseObject(text, Entity.class);\n        Assert.assertNotNull(entity);\n    }\n\n    public static class Entity {\n\n        private List<Object> list;\n\n        public List<Object> getList() {\n            return list;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/ReadOnlyCollectionTest_final_field.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.List;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class ReadOnlyCollectionTest_final_field extends TestCase {\n    \n    public void test_readOnlyNullList() throws Exception {\n        String text = \"{\\\"list\\\":[1,2,3]}\";\n        Entity entity = JSON.parseObject(text, Entity.class);\n        Assert.assertNull(entity.list);\n    }\n\n    public static class Entity {\n\n        public final List<Object> list = null;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/ReadOnlyCollectionTest_final_field_null.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class ReadOnlyCollectionTest_final_field_null extends TestCase {\n    \n    public void test_readOnlyNullList() throws Exception {\n        String text = \"{\\\"list\\\":[1,2,3]}\";\n        Entity entity = JSON.parseObject(text, Entity.class);\n        Assert.assertNotNull(entity);\n        Assert.assertEquals(3, entity.list.size());\n    }\n\n    public static class Entity {\n\n        public final List<Object> list = new ArrayList<Object>();\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/ReadOnlyMapTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class ReadOnlyMapTest extends TestCase {\n\n    public void test_readOnlyNullList() throws Exception {\n        String text = \"{\\\"values\\\":{\\\"a\\\":{}}}\";\n        Entity entity = JSON.parseObject(text, Entity.class);\n        Assert.assertNotNull(entity);\n        Assert.assertNotNull(entity.values.get(\"a\"));\n        Assert.assertTrue(entity.values.get(\"a\") instanceof A);\n    }\n\n    public static class Entity {\n\n        private final Map<String, A> values = new HashMap<String, A>();\n\n        public Map<String, A> getValues() {\n            return values;\n        }\n\n    }\n\n    public static class A {\n        public A() {\n            \n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/ReadOnlyMapTest2.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class ReadOnlyMapTest2 extends TestCase {\n\n    public void test_readOnlyNullList() throws Exception {\n        String text = \"{\\\"values\\\":{\\\"a\\\":{}}}\";\n        Entity entity = JSON.parseObject(text, Entity.class);\n        Assert.assertNotNull(entity);\n        Assert.assertNotNull(entity.values);\n    }\n\n    public static class Entity {\n\n        private Map<String, A> values;\n\n        public Map<String, A> getValues() {\n            return values;\n        }\n\n    }\n\n    public static class A {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/ReadOnlyMapTest2_final_field.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class ReadOnlyMapTest2_final_field extends TestCase {\n\n    public void test_readOnlyNullList() throws Exception {\n        String text = \"{\\\"values\\\":{\\\"a\\\":{}}}\";\n        Entity entity = JSON.parseObject(text, Entity.class);\n        Assert.assertNotNull(entity);\n        Assert.assertNull(entity.values);\n    }\n\n    public static class Entity {\n\n        public final Map<String, A> values = null;\n\n\n    }\n\n    public static class A {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/ReadOnlyMapTest_final_field.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class ReadOnlyMapTest_final_field extends TestCase {\n\n    public void test_readOnlyNullList() throws Exception {\n        String text = \"{\\\"values\\\":{\\\"a\\\":{}}}\";\n        Entity entity = JSON.parseObject(text, Entity.class);\n        Assert.assertNotNull(entity);\n        Assert.assertNotNull(entity.values.get(\"a\"));\n        Assert.assertTrue(entity.values.get(\"a\") instanceof A);\n    }\n\n    public static class Entity {\n\n        public final Map<String, A> values = new HashMap<String, A>();\n\n    }\n\n    public static class A {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/RedundantTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.lang.reflect.Type;\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.deserializer.ExtraProcessor;\nimport com.alibaba.fastjson.parser.deserializer.ExtraTypeProvider;\n\npublic class RedundantTest extends TestCase {\n\n    public void test_extra() throws Exception {\n        ExtraProcessor processor = new ExtraProcessor() {\n            public void processExtra(Object object, String key, Object value) {\n                VO vo = (VO) object;\n                vo.getAttributes().put(key, value);\n            }\n        };\n\n        VO vo = JSON.parseObject(\"{\\\"id\\\":123,\\\"name\\\":\\\"abc\\\"}\", VO.class, processor);\n        Assert.assertEquals(123, vo.getId());\n        Assert.assertEquals(\"abc\", vo.getAttributes().get(\"name\"));\n    }\n    \n    public void test_extraWithType() throws Exception {\n        class MyExtraProcessor implements ExtraProcessor, ExtraTypeProvider {\n            public void processExtra(Object object, String key, Object value) {\n                VO vo = (VO) object;\n                vo.getAttributes().put(key, value);\n            }\n\n            public Type getExtraType(Object object, String key) {\n                if (\"value\".equals(key)) {\n                    return int.class;\n                }\n                return null;\n            }\n        };\n        ExtraProcessor processor = new MyExtraProcessor();\n\n        VO vo = JSON.parseObject(\"{\\\"id\\\":123,\\\"value\\\":\\\"123456\\\"}\", VO.class, processor);\n        Assert.assertEquals(123, vo.getId());\n        Assert.assertEquals(123456, vo.getAttributes().get(\"value\"));\n    }\n\n\n    public static class VO {\n\n        private int                 id;\n        private Map<String, Object> attributes = new HashMap<String, Object>();\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public Map<String, Object> getAttributes() {\n            return attributes;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/SafeModeTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport junit.framework.TestCase;\n\npublic class SafeModeTest extends TestCase {\n    public void test_for_safeMode() throws Exception {\n        ParserConfig config = new ParserConfig();\n\n        String str = \"{\\\"@type\\\":\\\"com.alibaba.json.bvt.parser.SafeModeTest$Entity\\\"}\";\n        JSON.parse(str);\n\n        {\n            Exception error = null;\n            try {\n                JSON.parse(str, config, Feature.SafeMode);\n            }\n            catch (JSONException ex) {\n                error = ex;\n            }\n            assertNotNull(error);\n        }\n\n        {\n            Exception error = null;\n            try {\n                config.setSafeMode(true);\n                JSON.parse(str, config);\n            }\n            catch (JSONException ex) {\n                error = ex;\n            }\n            assertNotNull(error);\n        }\n    }\n\n    @JSONType\n    public static class Entity {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/TestException.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestException extends TestCase {\n\n    public void test_0() throws Exception {\n        Exception error = null;\n\n        try {\n            f();\n        } catch (Exception ex) {\n            error = ex;\n        }\n\n        String text = JSON.toJSONString(new Exception[] { error });\n\n        List<RuntimeException> list = JSON.parseArray(text, RuntimeException.class);\n\n        JSON.toJSONString(list);\n    }\n\n    public void f() {\n        throw new RuntimeException();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/TestInitStringFieldAsEmpty.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\n\npublic class TestInitStringFieldAsEmpty extends TestCase {\n\n    public void test_private() throws Exception {\n        VO1 vo1 = JSON.parseObject(\"{}\", VO1.class, Feature.InitStringFieldAsEmpty);\n        Assert.assertEquals(\"\", vo1.getValue());\n    }\n\n    public void test_public() throws Exception {\n        VO2 vo2 = JSON.parseObject(\"{}\", VO2.class, Feature.InitStringFieldAsEmpty);\n        Assert.assertEquals(\"\", vo2.getValue());\n    }\n    \n    private static class VO1 {\n\n        private String value;\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n    }\n    \n    public static class VO2 {\n\n        private String value;\n        \n        public VO2() {\n            \n        }\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/TestInitStringFieldAsEmpty2.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\n\npublic class TestInitStringFieldAsEmpty2 extends TestCase {\n\n    public void test_public() throws Exception {\n        VO1 vo1 = JSON.parseObject(\"{\\\"id\\\":0,\\\"value\\\":33, \\\"o\\\":{}}\", VO1.class, Feature.InitStringFieldAsEmpty);\n        Assert.assertEquals(\"\", vo1.getName());\n        Assert.assertEquals(\"\", vo1.getO().getValue());\n    }\n\n    public static class VO1 {\n\n        private int    id;\n\n        private String name;\n\n        private int    value;\n\n        private VO2    o;\n\n        public VO1(){\n\n        }\n\n        public VO2 getO() {\n            return o;\n        }\n\n        public void setO(VO2 o) {\n            this.o = o;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public int getValue() {\n            return value;\n        }\n\n        public void setValue(int value) {\n            this.value = value;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n\n    public static class VO2 {\n\n        private String value;\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/TestUTF8.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\npublic class TestUTF8 extends TestCase {\n\n    public void test_utf() throws Exception {\n        JSONObject obj = (JSONObject) JSON.parse(\"{'name':'刘大'}\".getBytes(\"UTF-8\"));\n        Assert.assertEquals(1, obj.size());\n        Assert.assertEquals(\"刘大\", obj.get(\"name\"));\n    }\n\n    public void test_utf_cn() throws Exception {\n        String content = \"首先来到村委会，走进农家书屋，认真翻看各种图书和报刊。他拿起一份藏文版《人民日报》，询问村民读书读报的情况，并和正在读书的几位藏族青年亲切交谈，勉励他们好好学习，学以致用，培养致富本领。在党支部活动室，村支部书记桑杰介绍了支部建设情况。当听到全村36名党员发挥先锋模范作用\";\n        JSONObject json = new JSONObject();\n        json.put(\"content\", content);\n        JSONObject obj = (JSONObject) JSON.parse(json.toJSONString().getBytes(\"UTF-8\"));\n        Assert.assertEquals(1, obj.size());\n        Assert.assertEquals(content, obj.get(\"content\"));\n    }\n\n    public void test_utf_de() throws Exception {\n        String content = \"Beim Griechenland-Gipfel gibt es viele Gewinner. Kanzlerin Merkel bekommt die Bankenbeteiligung, Frankreichs Präsident Sarkozy den Aufkauf von Staatsanleihen. \\\\nEinzig EZB-Präsident Jean-Claude Trichet gilt als Verlierer. Er zog im Machtkampf den Kürzeren\";\n        JSONObject json = new JSONObject();\n        json.put(\"content\", content);\n        JSONObject obj = (JSONObject) JSON.parse(json.toJSONString().getBytes(\"UTF-8\"));\n        Assert.assertEquals(1, obj.size());\n        Assert.assertEquals(content, obj.get(\"content\"));\n    }\n\n    public void test_utf_jp() throws Exception {\n        String content = \"菅首相がマニフェストで陳謝\";\n        JSONObject json = new JSONObject();\n        json.put(\"content\", content);\n        JSONObject obj = (JSONObject) JSON.parse(json.toJSONString().getBytes(\"UTF-8\"));\n        Assert.assertEquals(1, obj.size());\n        Assert.assertEquals(content, obj.get(\"content\"));\n    }\n\n    public void test_utf_() throws Exception {\n        String content = \"Viel Spaß mit Java 7 und Eclipse!\";\n        JSONObject json = new JSONObject();\n        json.put(\"content\", content);\n        JSONObject obj = (JSONObject) JSON.parse(json.toJSONString().getBytes(\"UTF-8\"));\n        Assert.assertEquals(1, obj.size());\n        Assert.assertEquals(content, obj.get(\"content\"));\n    }\n\n    public void test_utf_7() throws Exception {\n        String content = \"薄扶林水塘，《香港雜記》叫百步林水塘，係香港一水塘，亦係全港第一個水塘。水塘喺香港島西嘅薄扶林，近薄扶林村。佢集有薄扶林谷地中咁多條河涌嘅水。涌水出自扯旗山、西高山、爐峯峽、歌賦山、奇力山。水塘分上下兩塘，儲水量約為廿六萬立方米，約莫六千八百萬加侖。水塘溢水會經薄扶林村流入瀑布灣\";\n        JSONObject json = new JSONObject();\n        json.put(\"content\", content);\n        JSONObject obj = (JSONObject) JSON.parse(json.toJSONString().getBytes(\"UTF-8\"));\n        Assert.assertEquals(1, obj.size());\n        Assert.assertEquals(content, obj.get(\"content\"));\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/TestUTF8_2.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.json.bvt.util.ThreadLocalCacheTest;\n\nimport junit.framework.TestCase;\n\npublic class TestUTF8_2 extends TestCase {\n\n    public void test_utf_1() throws Exception {\n        String content = new String(decodeHex(\"F0A4ADA2\".toCharArray()), \"UTF-8\");\n        JSONObject json = new JSONObject();\n        json.put(\"content\", content);\n        JSONObject obj = (JSONObject) JSON.parse(json.toJSONString().getBytes(\"UTF-8\"));\n        Assert.assertEquals(1, obj.size());\n        Assert.assertEquals(content, obj.get(\"content\"));\n    }\n\n    public void test_utf_2() throws Exception {\n        String content = new String(decodeHex(\"E282AC\".toCharArray()), \"UTF-8\");\n        JSONObject json = new JSONObject();\n        json.put(\"content\", content);\n        JSONObject obj = (JSONObject) JSON.parse(json.toJSONString().getBytes(\"UTF-8\"));\n        Assert.assertEquals(1, obj.size());\n        Assert.assertEquals(content, obj.get(\"content\"));\n    }\n\n    public void test_utf_3() throws Exception {\n        byte[] bytes = decodeHex(\"C2A2\".toCharArray());\n        String content = new String(bytes, \"UTF-8\");\n        JSONObject json = new JSONObject();\n        json.put(\"content\", content);\n        JSONObject obj = (JSONObject) JSON.parse(json.toJSONString().getBytes(\"UTF-8\"));\n        Assert.assertEquals(1, obj.size());\n        Assert.assertEquals(content, obj.get(\"content\"));\n    }\n    \n    public void test_utf_4() throws Exception {\n        ThreadLocalCacheTest.clearChars();\n        \n        byte[] bytes = decodeHex(\"C2FF\".toCharArray());\n        String content = new String(bytes, \"UTF-8\");\n        JSONObject json = new JSONObject();\n        json.put(\"content\", content);\n        JSONObject obj = (JSONObject) JSON.parse(json.toJSONString().getBytes(\"UTF-8\"));\n        Assert.assertEquals(1, obj.size());\n        Assert.assertEquals(content, obj.get(\"content\"));\n    }\n    \n    public static byte[] decodeHex(char[] data) throws Exception {\n\n        int len = data.length;\n\n        if ((len & 0x01) != 0) {\n            throw new Exception(\"Odd number of characters.\");\n        }\n\n        byte[] out = new byte[len >> 1];\n\n        // two characters form the hex value.\n        for (int i = 0, j = 0; j < len; i++) {\n            int f = toDigit(data[j], j) << 4;\n            j++;\n            f = f | toDigit(data[j], j);\n            j++;\n            out[i] = (byte) (f & 0xFF);\n        }\n\n        return out;\n    }\n    \n    protected static int toDigit(char ch, int index) throws Exception {\n        int digit = Character.digit(ch, 16);\n        if (digit == -1) {\n            throw new Exception(\"Illegal hexadecimal character \" + ch + \" at index \" + index);\n        }\n        return digit;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/TypeReferenceTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class TypeReferenceTest extends TestCase {\n\n    public void test_list() throws Exception {\n        List<Long> list = JSON.parseObject(\"[1,2,3]\", new TypeReference<List<Long>>() {});\n        Assert.assertEquals(1L, ((Long) list.get(0)).longValue());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/TypeUtilsTest.java",
    "content": "package com.alibaba.json.bvt.parser;\r\n\r\nimport java.lang.reflect.Method;\r\nimport java.math.BigDecimal;\r\nimport java.math.BigInteger;\r\nimport java.sql.Timestamp;\r\nimport java.util.ArrayList;\r\nimport java.util.Calendar;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.TimeZone;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.JSONObject;\r\nimport com.alibaba.fastjson.parser.ParserConfig;\r\nimport com.alibaba.fastjson.util.TypeUtils;\r\n\r\n@SuppressWarnings(\"rawtypes\")\r\npublic class TypeUtilsTest extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        HashMap map = new HashMap();\r\n\r\n        Assert.assertTrue(map == TypeUtils.castToJavaBean(map, Map.class));\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        JSONObject map = new JSONObject();\r\n        Assert.assertTrue(map == TypeUtils.castToJavaBean(map, Map.class));\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        JSONObject map = new JSONObject();\r\n        map.put(\"id\", 1);\r\n        map.put(\"name\", \"panlei\");\r\n\r\n        User user = TypeUtils.castToJavaBean(map, User.class);\r\n        Assert.assertEquals(1L, user.getId());\r\n        Assert.assertEquals(\"panlei\", user.getName());\r\n    }\r\n\r\n    public void test_cast_Integer() throws Exception {\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"id\", 1L);\r\n        Assert.assertEquals(new Integer(1), json.getObject(\"id\", int.class));\r\n    }\r\n\r\n    public void test_cast_Integer_2() throws Exception {\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"id\", 1L);\r\n        Assert.assertEquals(new Integer(1), json.getObject(\"id\", Integer.class));\r\n    }\r\n\r\n    public void test_cast_to_long() throws Exception {\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"id\", 1);\r\n        Assert.assertEquals(new Long(1), json.getObject(\"id\", long.class));\r\n    }\r\n\r\n    public void test_cast_to_Long() throws Exception {\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"id\", 1);\r\n        Assert.assertEquals(new Long(1), json.getObject(\"id\", Long.class));\r\n    }\r\n\r\n    public void test_cast_to_short() throws Exception {\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"id\", 1);\r\n        Assert.assertEquals(new Short((short) 1), json.getObject(\"id\", short.class));\r\n    }\r\n\r\n    public void test_cast_to_Short() throws Exception {\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"id\", 1);\r\n        Assert.assertEquals(new Short((short) 1), json.getObject(\"id\", Short.class));\r\n    }\r\n\r\n    public void test_cast_to_byte() throws Exception {\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"id\", 1);\r\n        Assert.assertEquals(new Byte((byte) 1), json.getObject(\"id\", byte.class));\r\n    }\r\n\r\n    public void test_cast_to_Byte() throws Exception {\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"id\", 1);\r\n        Assert.assertEquals(new Byte((byte) 1), json.getObject(\"id\", Byte.class));\r\n    }\r\n\r\n    public void test_cast_to_BigInteger() throws Exception {\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"id\", 1);\r\n        Assert.assertEquals(new BigInteger(\"1\"), json.getObject(\"id\", BigInteger.class));\r\n    }\r\n\r\n    public void test_cast_to_BigDecimal() throws Exception {\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"id\", 1);\r\n        Assert.assertEquals(new BigDecimal(\"1\"), json.getObject(\"id\", BigDecimal.class));\r\n    }\r\n\r\n    public void test_cast_to_boolean() throws Exception {\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"id\", 1);\r\n        Assert.assertEquals(Boolean.TRUE, json.getObject(\"id\", boolean.class));\r\n    }\r\n\r\n    public void test_cast_to_Boolean() throws Exception {\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"id\", 1);\r\n        Assert.assertEquals(Boolean.TRUE, json.getObject(\"id\", Boolean.class));\r\n    }\r\n\r\n    public void test_cast_null() throws Exception {\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"id\", null);\r\n        Assert.assertEquals(null, json.getObject(\"id\", Boolean.class));\r\n    }\r\n\r\n    public void test_cast_to_String() throws Exception {\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"id\", 1);\r\n        Assert.assertEquals(\"1\", json.getObject(\"id\", String.class));\r\n    }\r\n\r\n    public void test_cast_to_Date() throws Exception {\r\n        long millis = System.currentTimeMillis();\r\n\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"date\", millis);\r\n        Assert.assertEquals(new Date(millis), json.getObject(\"date\", Date.class));\r\n    }\r\n\r\n    public void test_cast_to_SqlDate() throws Exception {\r\n        long millis = System.currentTimeMillis();\r\n\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"date\", millis);\r\n        Assert.assertEquals(new java.sql.Date(millis), json.getObject(\"date\", java.sql.Date.class));\r\n    }\r\n\r\n    public void test_cast_to_SqlDate_string() throws Exception {\r\n        long millis = System.currentTimeMillis();\r\n\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"date\", Long.toString(millis));\r\n        Assert.assertEquals(new java.sql.Date(millis), json.getObject(\"date\", java.sql.Date.class));\r\n    }\r\n\r\n    public void test_cast_to_SqlDate_null() throws Exception {\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"date\", null);\r\n        Assert.assertEquals(null, json.getObject(\"date\", java.sql.Date.class));\r\n    }\r\n\r\n    public void test_cast_to_SqlDate_null2() throws Exception {\r\n        Assert.assertEquals(null, TypeUtils.castToSqlDate(null));\r\n    }\r\n\r\n    public void test_cast_to_SqlDate_util_Date() throws Exception {\r\n        long millis = System.currentTimeMillis();\r\n\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"date\", new Date(millis));\r\n        Assert.assertEquals(new java.sql.Date(millis), json.getObject(\"date\", java.sql.Date.class));\r\n    }\r\n\r\n    public void test_cast_to_SqlDate_sql_Date() throws Exception {\r\n        long millis = System.currentTimeMillis();\r\n\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"date\", new java.sql.Date(millis));\r\n        Assert.assertEquals(new java.sql.Date(millis), json.getObject(\"date\", java.sql.Date.class));\r\n    }\r\n\r\n    public void test_cast_to_SqlDate_sql_Date2() throws Exception {\r\n        long millis = System.currentTimeMillis();\r\n\r\n        java.sql.Date date = new java.sql.Date(millis);\r\n        Assert.assertEquals(date, TypeUtils.castToSqlDate(date));\r\n    }\r\n\r\n    public void test_cast_to_SqlDate_calendar() throws Exception {\r\n        long millis = System.currentTimeMillis();\r\n\r\n        Calendar calendar = Calendar.getInstance();\r\n        calendar.setTimeInMillis(millis);\r\n\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"date\", calendar);\r\n        Assert.assertEquals(new java.sql.Date(millis), json.getObject(\"date\", java.sql.Date.class));\r\n    }\r\n\r\n    public void test_cast_to_SqlDate_error() throws Exception {\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"date\", 0);\r\n\r\n        JSONException error = null;\r\n        try {\r\n            json.getObject(\"date\", java.sql.Date.class);\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_cast_to_Timestamp() throws Exception {\r\n        long millis = System.currentTimeMillis();\r\n\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"date\", millis);\r\n        Assert.assertEquals(new java.sql.Timestamp(millis), json.getObject(\"date\", java.sql.Timestamp.class));\r\n    }\r\n\r\n    public void test_cast_to_Timestamp_string() throws Exception {\r\n        long millis = System.currentTimeMillis();\r\n\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"date\", Long.toString(millis));\r\n        Assert.assertEquals(new java.sql.Timestamp(millis), json.getObject(\"date\", java.sql.Timestamp.class));\r\n    }\r\n\r\n    public void test_cast_to_Timestamp_number() throws Exception {\r\n        long millis = System.currentTimeMillis();\r\n\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"date\", new BigDecimal(Long.toString(millis)));\r\n        Assert.assertEquals(new java.sql.Timestamp(millis), json.getObject(\"date\", java.sql.Timestamp.class));\r\n    }\r\n\r\n    public void test_cast_to_Timestamp_null() throws Exception {\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"date\", null);\r\n        Assert.assertEquals(null, json.getObject(\"date\", java.sql.Timestamp.class));\r\n    }\r\n\r\n    public void test_cast_to_Timestamp_null2() throws Exception {\r\n        Assert.assertEquals(null, TypeUtils.castToTimestamp(null));\r\n    }\r\n\r\n    public void test_cast_to_Timestamp_1970_01_01_00_00_00() throws Exception {\r\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\r\n        Assert.assertEquals(new Timestamp(0), TypeUtils.castToTimestamp(\"1970-01-01 08:00:00\"));\r\n    }\r\n\r\n    public void test_cast_to_BigDecimal_same() throws Exception {\r\n        BigDecimal value = new BigDecimal(\"123\");\r\n        Assert.assertEquals(true, value == TypeUtils.castToBigDecimal(value));\r\n    }\r\n\r\n    public void test_cast_to_BigInteger_same() throws Exception {\r\n        BigInteger value = new BigInteger(\"123\");\r\n        Assert.assertEquals(true, value == TypeUtils.castToBigInteger(value));\r\n    }\r\n\r\n    public void test_cast_Array() throws Exception {\r\n        Assert.assertEquals(Integer[].class, TypeUtils.cast(new ArrayList(), Integer[].class, null).getClass());\r\n    }\r\n\r\n    public void test_cast_to_Timestamp_util_Date() throws Exception {\r\n        long millis = System.currentTimeMillis();\r\n\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"date\", new Date(millis));\r\n        Assert.assertEquals(new java.sql.Timestamp(millis), json.getObject(\"date\", java.sql.Timestamp.class));\r\n    }\r\n\r\n    public void test_cast_to_Timestamp_sql_Date() throws Exception {\r\n        long millis = System.currentTimeMillis();\r\n\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"date\", new java.sql.Date(millis));\r\n        Assert.assertEquals(new java.sql.Timestamp(millis), json.getObject(\"date\", java.sql.Timestamp.class));\r\n    }\r\n\r\n    public void test_cast_to_Timestamp_sql_Timestamp() throws Exception {\r\n        long millis = System.currentTimeMillis();\r\n\r\n        java.sql.Timestamp date = new java.sql.Timestamp(millis);\r\n        Assert.assertEquals(date, TypeUtils.castToTimestamp(date));\r\n    }\r\n\r\n    public void test_cast_to_Timestamp_calendar() throws Exception {\r\n        long millis = System.currentTimeMillis();\r\n\r\n        Calendar calendar = Calendar.getInstance();\r\n        calendar.setTimeInMillis(millis);\r\n\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"date\", calendar);\r\n        Assert.assertEquals(new java.sql.Timestamp(millis), json.getObject(\"date\", java.sql.Timestamp.class));\r\n    }\r\n\r\n    public void test_cast_to_Timestamp_not_error() throws Exception {\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"date\", -1);\r\n\r\n        JSONException error = null;\r\n        try {\r\n            json.getObject(\"date\", java.sql.Timestamp.class);\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNull(error);\r\n        Assert.assertEquals(new Timestamp(-1L), (java.sql.Timestamp) json.getObject(\"date\", java.sql.Timestamp.class));\r\n    }\r\n\r\n    public void test_cast_ab() throws Exception {\r\n        B b = new B();\r\n\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"value\", b);\r\n        Assert.assertEquals(b, json.getObject(\"value\", A.class));\r\n    }\r\n\r\n    public void test_cast_ab_1() throws Exception {\r\n        B b = new B();\r\n\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"value\", b);\r\n        Assert.assertEquals(b, json.getObject(\"value\", IA.class));\r\n    }\r\n\r\n    public void test_cast_ab_error() throws Exception {\r\n        A a = new A();\r\n\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"value\", a);\r\n\r\n        JSONException error = null;\r\n        try {\r\n            json.getObject(\"value\", B.class);\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error() throws Exception {\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"id\", 1);\r\n\r\n        JSONException error = null;\r\n        try {\r\n            TypeUtils.castToJavaBean(json, C.class, ParserConfig.getGlobalInstance());\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error_2() throws Exception {\r\n        JSONObject json = new JSONObject();\r\n        json.put(\"id\", 1);\r\n\r\n        Method method = TypeUtilsTest.class.getMethod(\"f\", List.class);\r\n\r\n        Throwable error = null;\r\n        try {\r\n            TypeUtils.cast(json, method.getGenericParameterTypes()[0], ParserConfig.getGlobalInstance());\r\n        } catch (JSONException ex) {\r\n            error = ex;\r\n        }\r\n        assertNotNull(error);\r\n    }\r\n\r\n    public void test_3() throws Exception {\r\n        JSONObject map = new JSONObject();\r\n        map.put(\"id\", 1);\r\n        map.put(\"name\", \"panlei\");\r\n\r\n        User user = JSON.toJavaObject(map, User.class);\r\n        Assert.assertEquals(1L, user.getId());\r\n        Assert.assertEquals(\"panlei\", user.getName());\r\n    }\r\n\r\n    public static class User {\r\n\r\n        private long id;\r\n        private String name;\r\n\r\n        public long getId() {\r\n            return id;\r\n        }\r\n\r\n        public void setId(long id) {\r\n            this.id = id;\r\n        }\r\n\r\n        public String getName() {\r\n            return name;\r\n        }\r\n\r\n        public void setName(String name) {\r\n            this.name = name;\r\n        }\r\n    }\r\n\r\n    public static class A implements IA {\r\n\r\n    }\r\n\r\n    public static interface IA {\r\n\r\n    }\r\n\r\n    public static class B extends A {\r\n\r\n    }\r\n\r\n    public static class C extends B {\r\n\r\n        public int getId() {\r\n            throw new UnsupportedOperationException();\r\n        }\r\n\r\n        public void setId(int id) {\r\n            throw new UnsupportedOperationException();\r\n        }\r\n    }\r\n\r\n    public static void f(List<?> list) {\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/TypeUtilsTest2.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.lang.reflect.ParameterizedType;\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.util.TypeUtils;\n\npublic class TypeUtilsTest2 extends TestCase {\n\n    public void test_0() throws Exception {\n        Assert.assertNull(TypeUtils.cast(\"\", Entity.class, null));\n        Assert.assertNull(TypeUtils.cast(\"\", Type.class, null));\n        Assert.assertNull(TypeUtils.cast(\"\", Byte.class, null));\n        Assert.assertNull(TypeUtils.cast(\"\", Short.class, null));\n        Assert.assertNull(TypeUtils.cast(\"\", Integer.class, null));\n        Assert.assertNull(TypeUtils.cast(\"\", Long.class, null));\n        Assert.assertNull(TypeUtils.cast(\"\", Float.class, null));\n        Assert.assertNull(TypeUtils.cast(\"\", Double.class, null));\n        Assert.assertNull(TypeUtils.cast(\"\", Character.class, null));\n        Assert.assertNull(TypeUtils.cast(\"\", java.util.Date.class, null));\n        Assert.assertNull(TypeUtils.cast(\"\", java.sql.Date.class, null));\n        Assert.assertNull(TypeUtils.cast(\"\", java.sql.Timestamp.class, null));\n\n        Assert.assertNull(TypeUtils.castToChar(\"\"));\n        Assert.assertNull(TypeUtils.castToChar(null));\n        Assert.assertEquals('A', TypeUtils.castToChar('A').charValue());\n        Assert.assertEquals('A', TypeUtils.castToChar(\"A\").charValue());\n\n        Assert.assertNull(TypeUtils.castToBigDecimal(\"\"));\n        Assert.assertNull(TypeUtils.castToBigInteger(\"\"));\n        Assert.assertNull(TypeUtils.castToBoolean(\"\"));\n        Assert.assertNull(TypeUtils.castToEnum(\"\", Type.class, null));\n        \n        Assert.assertEquals(null, TypeUtils.cast(\"\", new TypeReference<Pair<Object, Object>>() {\n\n        }.getType(), null));\n    }\n\n    public void test_1() throws Exception {\n        Assert.assertEquals(null, TypeUtils.cast(\"\", new TypeReference<List<Object>>() {\n\n        }.getType(), null));\n\n    }\n\n    public void test_error_2() throws Exception {\n        Exception error = null;\n        try {\n            Assert.assertEquals(null, TypeUtils.cast(\"a\", new TypeReference<List<Object>>() {\n\n            }.getType(), null));\n        } catch (JSONException e) {\n            error = e;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_3() throws Exception {\n        Exception error = null;\n        try {\n            Assert.assertEquals(null, TypeUtils.cast(\"a\", new TypeReference<Pair<Object, Object>>() {\n\n            }.getType(), null));\n        } catch (JSONException e) {\n            error = e;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_4() throws Exception {\n        Exception error = null;\n        try {\n            Assert.assertEquals(null, TypeUtils.cast(\"a\", ((ParameterizedType) new TypeReference<List<?>>() {\n\n            }.getType()).getActualTypeArguments()[0], null));\n        } catch (JSONException e) {\n            error = e;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_0() throws Exception {\n        Exception error = null;\n        try {\n            TypeUtils.castToChar(\"abc\");\n        } catch (JSONException e) {\n            error = e;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_1() throws Exception {\n        Exception error = null;\n        try {\n            TypeUtils.castToChar(true);\n        } catch (JSONException e) {\n            error = e;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Entity {\n\n    }\n\n    public static class Pair<K, V> {\n\n    }\n\n    public static enum Type {\n        A, B, C\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/TypeUtilsTest3.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.util.TypeUtils;\n\npublic class TypeUtilsTest3 extends TestCase {\n\n    public void test_enum() throws Exception {\n        Assert.assertEquals(Type.A, JSON.parseObject(\"\\\"A\\\"\", Type.class));\n        Assert.assertEquals(Type.A, JSON.parseObject(\"\" + Type.A.ordinal(), Type.class));\n        Assert.assertEquals(Type.B, JSON.parseObject(\"\" + Type.B.ordinal(), Type.class));\n        Assert.assertEquals(Type.C, JSON.parseObject(\"\" + Type.C.ordinal(), Type.class));\n    }\n\n    public void test_enum_2() throws Exception {\n        Assert.assertEquals(Type.A, TypeUtils.cast(\"A\", Type.class, null));\n        Assert.assertEquals(Type.A, TypeUtils.cast(Type.A.ordinal(), Type.class, null));\n        Assert.assertEquals(Type.B, TypeUtils.cast(Type.B.ordinal(), Type.class, null));\n    }\n\n    public void test_error() throws Exception {\n        assertNull(TypeUtils.castToEnum(\"\\\"A1\\\"\", Type.class, null));\n    }\n\n    public void test_error_1() throws Exception {\n        Exception error = null;\n        try {\n            TypeUtils.castToEnum(Boolean.TRUE, Type.class, null);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_2() throws Exception {\n        Exception error = null;\n        try {\n            TypeUtils.castToEnum(1000, Type.class, null);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_null() throws Exception {\n        Assert.assertEquals(null, TypeUtils.cast(null, new TypeReference<Object>() {\n        }.getType(), null));\n    }\n    \n    public void test_null_1() throws Exception {\n        Assert.assertEquals(null, TypeUtils.cast(\"\", new TypeReference<List<Object>>() {\n        }.getType(), null));\n    }\n    \n    public void test_null_2() throws Exception {\n        Assert.assertEquals(null, TypeUtils.cast(\"\", new TypeReference<Object[]>() {\n        }.getType(), null));\n    }\n    \n    public void test_error_3() throws Exception {\n        Exception error = null;\n        try {\n            TypeUtils.cast(\"xxx\", new TypeReference<Object[]>() {\n            }.getType(), null);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    \n    public void test_ex() throws Exception {\n        RuntimeException ex = new RuntimeException();\n        JSONObject object = (JSONObject) JSON.toJSON(ex);\n        JSONArray array = object.getJSONArray(\"stackTrace\");\n        array.getJSONObject(0).put(\"lineNumber\", null);\n        \n        JSON.parseObject(object.toJSONString(), Exception.class);\n    }\n\n    public static enum Type {\n        A, B, C\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/TypeUtilsTest4.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.HashMap;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.util.TypeUtils;\n\n@SuppressWarnings(\"unchecked\")\npublic class TypeUtilsTest4 extends TestCase {\n\n    public void test_array() throws Exception {\n        Assert.assertEquals(0, TypeUtils.cast(new Entity[0], Object[].class, null).length);\n    }\n\n    public void test_ParameterizedType() throws Exception {\n        Assert.assertEquals(Integer.valueOf(123),\n                            ((ArrayList<Object>) TypeUtils.cast(Collections.singleton(123),\n                                                                new TypeReference<ArrayList<Object>>() {\n                                                                }.getType(), null)).get(0));\n    }\n\n    public void test_ParameterizedType2() throws Exception {\n        Assert.assertEquals(\"123\",\n                            ((HashMap<Object, String>) TypeUtils.cast(Collections.singletonMap(\"name\", 123),\n                                                                      new TypeReference<HashMap<Object, String>>() {\n                                                                      }.getType(), null)).get(\"name\"));\n    }\n\n    public void test_ParameterizedType_error() throws Exception {\n        Exception error = null;\n        try {\n            TypeUtils.cast(Collections.singleton(123), new TypeReference<HashMap<Object, String>>() {\n            }.getType(), null);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error() throws Exception {\n        Exception error = null;\n        try {\n            TypeUtils.cast(\"xxx\", Object[].class, null);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_2() throws Exception {\n        Exception error = null;\n        try {\n            TypeUtils.cast(123, new TypeReference<Object[]>() {\n            }.getType(), null);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_exception() throws Exception {\n        JSONObject object = (JSONObject) JSON.toJSON(new RuntimeException());\n        object.put(\"class\", \"xxx\");\n        Assert.assertEquals(Exception.class, JSON.parseObject(object.toJSONString(), Exception.class).getClass());\n    }\n\n    public static class Entity {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/TypeUtilsTest_cast.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.lang.reflect.ParameterizedType;\nimport java.lang.reflect.Type;\nimport java.util.Calendar;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.util.TypeUtils;\n\npublic class TypeUtilsTest_cast extends TestCase {\n\n    public void test_cast_0() throws Exception {\n        Assert.assertArrayEquals(new byte[0], TypeUtils.cast(new byte[0], byte[].class, null));\n    }\n    \n    public void test_cast_1() throws Exception {\n        ParameterizedType parameterizedType = (ParameterizedType) new TypeReference<List<?>>() {}.getType();\n        Type type = parameterizedType.getActualTypeArguments()[0];\n        Assert.assertEquals(null, TypeUtils.cast(\"\", type, null));\n    }\n\n    public void test_castToDate_error() throws Exception {\n        Exception error = null;\n        try {\n            TypeUtils.cast(0, MyCalendar.class, null);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_castToDate_error_nullClass() throws Exception {\n        Exception error = null;\n        try {\n            TypeUtils.cast(0, (Class<?>) null, null);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    @SuppressWarnings(\"serial\")\n    private class MyCalendar extends Calendar {\n\n        @Override\n        protected void computeTime() {\n            // TODO Auto-generated method stub\n            \n        }\n\n        @Override\n        protected void computeFields() {\n            // TODO Auto-generated method stub\n            \n        }\n\n        @Override\n        public void add(int field, int amount) {\n            // TODO Auto-generated method stub\n            \n        }\n\n        @Override\n        public void roll(int field, boolean up) {\n            // TODO Auto-generated method stub\n            \n        }\n\n        @Override\n        public int getMinimum(int field) {\n            // TODO Auto-generated method stub\n            return 0;\n        }\n\n        @Override\n        public int getMaximum(int field) {\n            // TODO Auto-generated method stub\n            return 0;\n        }\n\n        @Override\n        public int getGreatestMinimum(int field) {\n            // TODO Auto-generated method stub\n            return 0;\n        }\n\n        @Override\n        public int getLeastMaximum(int field) {\n            // TODO Auto-generated method stub\n            return 0;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/TypeUtilsTest_castToBigDecimal.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport com.alibaba.fastjson.util.TypeUtils;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\n/**\n * 强转BigDecimal测试用例\n */\npublic class TypeUtilsTest_castToBigDecimal extends TestCase {\n\t\n\t/**\n\t * NaN和正负无穷大的时候转BigDecimal都会报转换异常，修改为返回null\n\t */\n\tpublic void test_FloatNanInfinite() throws Exception {\n\t\t// 正无穷大\n\t\tassertNull(TypeUtils.castToBigDecimal(1.0f / 0.0f));\n\t\t// 负无穷大\n\t\tassertNull(TypeUtils.castToBigDecimal(-1.0f / 0.0f));\n\t\t// NaN\n\t\tassertNull(TypeUtils.castToBigDecimal(0.0f / 0.0f));\n\t}\n\t\n\t/**\n\t * NaN和正负无穷大的时候转BigDecimal都会报转换异常，修改为返回null\n\t */\n\tpublic void test_DoubleNanInfinite() throws Exception {\n\t\t// 正无穷大\n\t\tassertNull(TypeUtils.castToBigDecimal(1.0d / 0.0d));\n\t\t// 负无穷大\n\t\tassertNull(TypeUtils.castToBigDecimal(-1.0d / 0.0d));\n\t\t// NaN\n\t\tassertNull(TypeUtils.castToBigDecimal(0.0d / 0.0d));\n\t}\n\n\t/**\n\t * NaN和正负无穷大的时候转BigDecimal都会报转换异常，修改为返回null\n\t */\n\tpublic void test_FloatNanInfinite_BigInteger() throws Exception {\n\t\t// 正无穷大\n\t\tassertNull(TypeUtils.castToBigInteger(1.0f / 0.0f));\n\t\t// 负无穷大\n\t\tassertNull(TypeUtils.castToBigInteger(-1.0f / 0.0f));\n\t\t// NaN\n\t\tassertNull(TypeUtils.castToBigInteger(0.0f / 0.0f));\n\t}\n\n\t/**\n\t * NaN和正负无穷大的时候转BigDecimal都会报转换异常，修改为返回null\n\t */\n\tpublic void test_DoubleNanInfinite_BigInteger() throws Exception {\n\t\t// 正无穷大\n\t\tassertNull(TypeUtils.castToBigInteger(1.0d / 0.0d));\n\t\t// 负无穷大\n\t\tassertNull(TypeUtils.castToBigInteger(-1.0d / 0.0d));\n\t\t// NaN\n\t\tassertNull(TypeUtils.castToBigInteger(0.0d / 0.0d));\n\t}\n\n\tpublic void test_nullString_biginteger() throws Exception {\n\t\tassertNull(TypeUtils.castToBigInteger(\"\"));\n\t\tassertNull(TypeUtils.castToBigInteger(\"null\"));\n\t}\n\n\tpublic void test_nullString_bigdecimal() throws Exception {\n\t\tassertNull(TypeUtils.castToBigDecimal(\"\"));\n\t\tassertNull(TypeUtils.castToBigDecimal(\"null\"));\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/TypeUtilsTest_castToBigInteger.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport com.alibaba.fastjson.util.TypeUtils;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\n/**\n * 强转BigInteger测试用例\n */\npublic class TypeUtilsTest_castToBigInteger extends TestCase {\n\t\n\t/**\n\t * NaN和正负无穷大的时候转BigInteger都会报转换异常，修改为返回null\n\t */\n\tpublic void test_FloatNanInfinite() throws Exception {\n\t\t// 正无穷大\n\t\tAssert.assertNull(TypeUtils.castToBigInteger(1.0f / 0.0f));\n\t\t// 负无穷大\n\t\tAssert.assertNull(TypeUtils.castToBigInteger(-1.0f / 0.0f));\n\t\t// NaN\n\t\tAssert.assertNull(TypeUtils.castToBigInteger(0.0f / 0.0f));\n\t}\n\t\n\t/**\n\t * NaN和正负无穷大的时候转BigInteger都会报转换异常，修改为返回null\n\t */\n\tpublic void test_DoubleNanInfinite() throws Exception {\n\t\t// 正无穷大\n\t\tAssert.assertNull(TypeUtils.castToBigInteger(1.0d / 0.0d));\n\t\t// 负无穷大\n\t\tAssert.assertNull(TypeUtils.castToBigInteger(-1.0d / 0.0d));\n\t\t// NaN\n\t\tAssert.assertNull(TypeUtils.castToBigInteger(0.0d / 0.0d));\n\t}\n\t\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/TypeUtilsTest_castToBytes.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.util.TypeUtils;\n\npublic class TypeUtilsTest_castToBytes extends TestCase {\n\n    public void test_castToDate() throws Exception {\n        Assert.assertArrayEquals(new byte[0], TypeUtils.castToBytes(new byte[0]));\n    }\n\n    public void test_castToDate_error() throws Exception {\n        Exception error = null;\n        try {\n            TypeUtils.castToBytes(new int[0]);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/TypeUtilsTest_castToDate.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.util.TypeUtils;\n\npublic class TypeUtilsTest_castToDate extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_castToDate() throws Exception {\n        JSON.DEFFAULT_DATE_FORMAT = \"yyyy-MM-dd HH:mm:ss.SSS\";\n        Date date = TypeUtils.castToDate(\"2012-07-15 12:12:11\");\n        \n        SimpleDateFormat format = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\");\n        format.setTimeZone(JSON.defaultTimeZone);\n        Assert.assertEquals(format.parseObject(\"2012-07-15 12:12:11\"), date);\n        JSON.DEFFAULT_DATE_FORMAT = \"yyyy-MM-dd HH:mm:ss\";\n    }\n\n    public void test_castToDate_error() throws Exception {\n        Exception error = null;\n        try {\n            TypeUtils.castToDate(\"你妈你妈-MM-dd\");\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_castToDate_zero() throws Exception {\n        Assert.assertEquals(new Date(0), TypeUtils.castToDate(\"0\"));\n    }\n\n    public void test_castToDate_negative() throws Exception {\n        Assert.assertEquals(new Date(-1), TypeUtils.castToDate(-1));\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/TypeUtilsTest_castToJavaBean.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.lang.reflect.Field;\nimport java.net.URL;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.concurrent.ConcurrentMap;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.JavaBeanSerializer;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.util.TypeUtils;\n\nimport junit.framework.TestCase;\n\npublic class TypeUtilsTest_castToJavaBean extends TestCase {\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.parser.TypeUtilsTest_castToJavaBean.\");\n    }\n\n    public void test_castToJavaBean_StackTraceElement() throws Exception {\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"className\", \"java.lang.Object\");\n        map.put(\"methodName\", \"hashCode\");\n        StackTraceElement element = TypeUtils.castToJavaBean(map, StackTraceElement.class, null);\n        Assert.assertEquals(\"java.lang.Object\", element.getClassName());\n        Assert.assertEquals(\"hashCode\", element.getMethodName());\n        Assert.assertEquals(null, element.getFileName());\n    }\n\n    public void test_castToJavaBean_StackTraceElement_1() throws Exception {\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"className\", \"java.lang.Object\");\n        map.put(\"methodName\", \"hashCode\");\n        map.put(\"lineNumber\", 12);\n        StackTraceElement element = TypeUtils.castToJavaBean(map, StackTraceElement.class, null);\n        Assert.assertEquals(\"java.lang.Object\", element.getClassName());\n        Assert.assertEquals(\"hashCode\", element.getMethodName());\n        Assert.assertEquals(null, element.getFileName());\n        Assert.assertEquals(12, element.getLineNumber());\n    }\n\n    public void test_castToJavaBean_type() throws Exception {\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"@type\", \"java.lang.StackTraceElement\");\n        map.put(\"className\", \"java.lang.Object\");\n        map.put(\"methodName\", \"hashCode\");\n        map.put(\"lineNumber\", 12);\n        StackTraceElement element = (StackTraceElement) TypeUtils.castToJavaBean(map, Object.class, null);\n        Assert.assertEquals(\"java.lang.Object\", element.getClassName());\n        Assert.assertEquals(\"hashCode\", element.getMethodName());\n        Assert.assertEquals(null, element.getFileName());\n        Assert.assertEquals(12, element.getLineNumber());\n    }\n\n    public void test_error() throws Exception {\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"@type\", \"xxx\");\n        Exception error = null;\n        try {\n            TypeUtils.castToJavaBean(map, Object.class, null);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error2() throws Exception {\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"@type\", \"\");\n        Exception error = null;\n        try {\n            TypeUtils.castToJavaBean(map, Object.class, null);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_mapping() throws Exception {\n        addClassMapping(\"my_xxx\", VO.class);\n        addClassMapping(null, VO.class);\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"@type\", \"my_xxx\");\n        map.put(\"id\", 123);\n        VO vo = (VO) TypeUtils.castToJavaBean(map, Object.class);\n        Assert.assertEquals(123, vo.getId());\n        TypeUtils.clearClassMapping();\n    }\n    \n    public static void addClassMapping(String className, Class<?> clazz) throws Exception {\n        Field field = TypeUtils.class.getDeclaredField(\"mappings\");\n        field.setAccessible(true);\n        field.get(null);\n        \n        ConcurrentMap<String, Class<?>> mappings = (ConcurrentMap<String, Class<?>>) field.get(null);\n        \n        if (className == null) {\n            className = clazz.getName();\n        }\n\n        mappings.put(className, clazz);\n    }\n\n    public void test_interface() throws Exception {\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"id\", 123);\n        VO vo = TypeUtils.castToJavaBean(map, VO.class);\n        Assert.assertEquals(123, vo.getId());\n    }\n\n    public void test_bean() throws Exception {\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"id\", 123);\n        Entity vo = TypeUtils.castToJavaBean(map, Entity.class);\n        Assert.assertEquals(123, vo.getId());\n\n        Assert.assertEquals(\"{\\\"id\\\":123}\", JSON.toJSONString(vo));\n    }\n\n    public void test_loadClass() throws Exception {\n        Assert.assertNull(TypeUtils.loadClass(null));\n        Assert.assertNull(TypeUtils.loadClass(\"\"));\n    }\n\n    public void test_loadClass_1() throws Exception {\n        TypeUtils.clearClassMapping();\n        ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();\n        Thread.currentThread().setContextClassLoader(new TestLoader());\n        try {\n            Assert.assertEquals(VO.class,\n                                TypeUtils.loadClass(\"com.alibaba.json.bvt.parser.TypeUtilsTest_castToJavaBean$VO\"));\n        } finally {\n            Thread.currentThread().setContextClassLoader(contextClassLoader);\n        }\n    }\n\n    public void test_loadClass_2() throws Exception {\n        TypeUtils.clearClassMapping();\n        ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();\n        Thread.currentThread().setContextClassLoader(new TestLoader());\n        try {\n            Assert.assertNull(TypeUtils.loadClass(\"xxx_xx\"));\n        } finally {\n            Thread.currentThread().setContextClassLoader(contextClassLoader);\n        }\n    }\n    \n    public void test_bean_2() throws Exception {\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"id\", 123);\n        PO vo = TypeUtils.castToJavaBean(map, PO.class);\n        Assert.assertEquals(123, vo.id);\n        \n        SerializeWriter out = new SerializeWriter();\n\n        try {\n            SerializeConfig config = new SerializeConfig();\n            JSONSerializer serializer = new JSONSerializer(out, config);\n            config.put(PO.class, new JavaBeanSerializer(PO.class, Collections.singletonMap(\"id\", \"ID\")));\n\n            serializer.write(vo);\n\n            Assert.assertEquals(\"{\\\"ID\\\":123}\", out.toString());\n        } finally {\n            out.close();\n        }\n\n        \n    }\n    \n    public void test_bean_3() throws Exception {\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"id\", 123);\n        PO vo = TypeUtils.castToJavaBean(map, PO.class);\n        Assert.assertEquals(123, vo.id);\n        \n        SerializeWriter out = new SerializeWriter();\n\n        try {\n            SerializeConfig config = new SerializeConfig();\n            JSONSerializer serializer = new JSONSerializer(out, config);\n            config.put(PO.class, new JavaBeanSerializer(PO.class, Collections.singletonMap(\"id\", (String) null)));\n\n            serializer.write(vo);\n\n            Assert.assertEquals(\"{}\", out.toString());\n        } finally {\n            out.close();\n        }\n\n        \n    }\n\n    public static interface VO {\n\n        void setId(int value);\n\n        int getId();\n\n        ClassLoader getClassLoader();\n    }\n\n    public static class Entity {\n\n        private int    id;\n        protected String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        protected String getName() {\n            return name;\n        }\n\n        protected void setName(String name) {\n            this.name = name;\n        }\n\n        public ClassLoader getClassLoader() {\n            return Entity.class.getClassLoader();\n        }\n    }\n    \n    private static class PO {\n        public int id;\n    }\n\n    public static class TestLoader extends ClassLoader {\n\n        public TestLoader(){\n            super(null);\n        }\n\n        public URL getResource(String name) {\n            return null;\n        }\n\n        public Class<?> loadClass(String name) throws ClassNotFoundException {\n            throw new ClassNotFoundException();\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/TypeUtilsTest_castToJavaBean_JSONType.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.util.TypeUtils;\n\npublic class TypeUtilsTest_castToJavaBean_JSONType extends TestCase {\n\n    public void test_castToJavaBean() throws Exception {\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"id\", 123);\n        map.put(\"name\", \"abc\");\n        VO vo = TypeUtils.castToJavaBean(map, VO.class, null);\n        Assert.assertEquals(123, vo.getId());\n        Assert.assertEquals(\"abc\", vo.getName());\n        \n        Assert.assertEquals(\"{\\\"name\\\":\\\"abc\\\",\\\"id\\\":123}\", JSON.toJSONString(vo));\n    }\n    \n    public void test_castToJavaBean_v2() throws Exception {\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"id\", 123);\n        map.put(\"name\", \"abc\");\n        V2 vo = TypeUtils.castToJavaBean(map, V2.class, null);\n        Assert.assertEquals(123, vo.getId());\n        Assert.assertEquals(\"abc\", vo.getName());\n        \n        Assert.assertEquals(\"{\\\"name\\\":\\\"abc\\\",\\\"id\\\":123}\", JSON.toJSONString(vo));\n    }\n    \n    public void test_castToJavaBean_v3() throws Exception {\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"id\", 123);\n        map.put(\"name\", \"abc\");\n        V3 vo = TypeUtils.castToJavaBean(map, V3.class, null);\n        Assert.assertEquals(123, vo.getId());\n        Assert.assertEquals(\"abc\", vo.getName());\n        \n        Assert.assertEquals(\"{\\\"name\\\":\\\"abc\\\",\\\"id\\\":123}\", JSON.toJSONString(vo));\n    }\n\n    @JSONType(orders={\"name\", \"id\"})\n    public static class VO {\n\n        private int    id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n    \n    @JSONType(orders={\"name\"})\n    public static class V2 {\n\n        private int    id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n    \n    @JSONType(orders={\"name\",\"xx\"})\n    public static class V3 {\n        \n        private int    id;\n        private String name;\n        \n        public int getId() {\n            return id;\n        }\n        \n        public void setId(int id) {\n            this.id = id;\n        }\n        \n        public String getName() {\n            return name;\n        }\n        \n        public void setName(String name) {\n            this.name = name;\n        }\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/TypeUtilsTest_compatibleWithJavaBean.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.util.TypeUtils;\n\npublic class TypeUtilsTest_compatibleWithJavaBean extends TestCase {\n\n    private boolean origin_compatibleWithJavaBean;\n\n    protected void setUp() throws Exception {\n        origin_compatibleWithJavaBean = TypeUtils.compatibleWithJavaBean;\n        TypeUtils.compatibleWithJavaBean = true;\n    }\n\n    protected void tearDown() throws Exception {\n        TypeUtils.compatibleWithJavaBean = origin_compatibleWithJavaBean;\n    }\n\n    public void test_true() throws Exception {\n        String text = JSON.toJSONString(new VO(123));\n        Assert.assertEquals(\"{\\\"ID\\\":123}\", text);\n        Assert.assertEquals(123, JSON.parseObject(text, VO.class).getID());\n    }\n\n    public static class VO {\n\n        private int id;\n\n        public VO(){\n\n        }\n\n        public VO(int id){\n            this.id = id;\n        }\n\n        public int getID() {\n            return id;\n        }\n\n        public void setID(int id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/TypeUtilsTest_compatibleWithJavaBean_boolean.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.util.TypeUtils;\n\npublic class TypeUtilsTest_compatibleWithJavaBean_boolean extends TestCase {\n\n    private boolean origin_compatibleWithJavaBean;\n\n    protected void setUp() throws Exception {\n        origin_compatibleWithJavaBean = TypeUtils.compatibleWithJavaBean;\n        TypeUtils.compatibleWithJavaBean = true;\n    }\n\n    protected void tearDown() throws Exception {\n        TypeUtils.compatibleWithJavaBean = origin_compatibleWithJavaBean;\n    }\n\n    public void test_true() throws Exception {\n        String text = JSON.toJSONString(new VO(true));\n        Assert.assertEquals(\"{\\\"ID\\\":true}\", text);\n        Assert.assertEquals(true, JSON.parseObject(text, VO.class).isID());\n    }\n\n    public static class VO {\n\n        private boolean id;\n\n        public VO(){\n\n        }\n\n        public VO(boolean id){\n            this.id = id;\n        }\n\n        public boolean isID() {\n            return id;\n        }\n\n        public void setID(boolean id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/TypeUtilsTest_interface.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic class TypeUtilsTest_interface extends TestCase {\n\n    public void test_castToJavaBean() throws Exception {\n        VO vo = new VO();\n        vo.setId(123);\n        vo.setName(\"abc\");\n\n        Assert.assertEquals(\"{\\\"ID\\\":123,\\\"name\\\":\\\"abc\\\"}\", JSON.toJSONString(vo));\n    }\n\n    public void test_parse() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"xid\\\":123,\\\"name\\\":\\\"abc\\\"}\", VO.class);\n\n        Assert.assertEquals(123, vo.getId());\n        Assert.assertEquals(\"abc\", vo.getName());\n    }\n\n    public void test_parse_var() throws Exception {\n        List<?> list = JSON.parseObject(\"[]\", new TypeReference<List<?>>() {\n        });\n        Assert.assertNotNull(list);\n        Assert.assertEquals(0, list.size());\n    }\n\n    public void test_deser() throws Exception {\n        JSON.parseObject(\"{\\\"id\\\":123}\", new TypeReference<X_I>(){});\n    }\n    \n    public void test_deser2() throws Exception {\n        JSON.parseObject(\"{\\\"id\\\":123}\", new TypeReference<X_X<Integer>>(){});\n    }\n    \n    public void test_deser2_x() throws Exception {\n        JSON.parseObject(\"{\\\"id\\\":123}\", new TypeReference<X_X<?>>(){});\n    }\n    \n    public static class X_I extends X<Integer> {\n        \n    }\n    \n    public static class X_X<T> extends X<T> {\n        \n    }\n\n    public static class X<T> {\n\n        private T id;\n\n        public X(){\n        }\n\n        public T getId() {\n            return id;\n        }\n\n        public void setId(T id) {\n            this.id = id;\n        }\n\n    }\n\n    public static class VO implements IV {\n\n        private int    id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public String getName(String xx) {\n            return null;\n        }\n\n        public String getName(String xx, int v) {\n            // TODO Auto-generated method stub\n            return null;\n        }\n\n        @JSONField(deserialize = false)\n        public void setName(int value) {\n            // TODO Auto-generated method stub\n\n        }\n\n        public void setName(int value, int x) {\n            // TODO Auto-generated method stub\n\n        }\n\n    }\n\n    public static interface IV {\n\n        @JSONField(name = \"ID\")\n        int getId();\n\n        @JSONField(name = \"xid\")\n        void setId(int value);\n\n        @JSONField(name = \"NAME\")\n        String getName(String xx);\n\n        @JSONField(name = \"NAME\")\n        String getName(String xx, int v);\n\n        @JSONField(name = \"xid_1\")\n        void setName(int value);\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/TypeUtilsTest_loadClass.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.util.TypeUtils;\n\nimport junit.framework.TestCase;\n\npublic class TypeUtilsTest_loadClass extends TestCase {\n\n    public void test_loadClass() throws Exception {\n        Assert.assertSame(Entity.class,\n                          TypeUtils.loadClass(\"com.alibaba.json.bvt.parser.TypeUtilsTest_loadClass$Entity\",\n                                              Entity.class.getClassLoader()));\n\n        Assert.assertSame(Entity.class,\n                          TypeUtils.loadClass(\"com.alibaba.json.bvt.parser.TypeUtilsTest_loadClass$Entity\", null));\n    }\n\n    public void test_error() throws Exception {\n        Assert.assertNull(TypeUtils.loadClass(\"com.alibaba.json.bvt.parser.TypeUtilsTest_loadClass.Entity\",\n                                              Entity.class.getClassLoader()));\n    }\n\n    public static class Entity {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/TypeUtilsToJSONTest.java",
    "content": "package com.alibaba.json.bvt.parser;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONArray;\r\nimport com.alibaba.fastjson.JSONObject;\r\n\r\n@SuppressWarnings(\"rawtypes\")\r\npublic class TypeUtilsToJSONTest extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        HashMap map = new HashMap();\r\n\r\n        JSONObject json = (JSONObject) JSON.toJSON(map);\r\n\r\n        Assert.assertEquals(map.size(), json.size());\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        List list = new ArrayList();\r\n\r\n        JSONArray json = (JSONArray) JSON.toJSON(list);\r\n\r\n        Assert.assertEquals(list.size(), json.size());\r\n    }\r\n\r\n    public void test_null() throws Exception {\r\n        Assert.assertEquals(null, JSON.toJSON(null));\r\n    }\r\n\r\n    public static class User {\r\n\r\n        private long   id;\r\n        private String name;\r\n\r\n        public long getId() {\r\n            return id;\r\n        }\r\n\r\n        public void setId(long id) {\r\n            this.id = id;\r\n        }\r\n\r\n        public String getName() {\r\n            return name;\r\n        }\r\n\r\n        public void setName(String name) {\r\n            this.name = name;\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/TypeUtils_parseDouble_Test.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport com.alibaba.fastjson.util.TypeUtils;\nimport junit.framework.TestCase;\n\nimport java.util.Random;\n\npublic class TypeUtils_parseDouble_Test extends TestCase {\n    public void test_0() throws Exception {\n        Random r = new Random();\n\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            String str = Float.toString(r.nextFloat());\n            assertEquals(Double.parseDouble(str), TypeUtils.parseDouble(str));\n        }\n    }\n\n    public void test_0_d() throws Exception {\n        Random r = new Random();\n\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            String str = Double.toString(r.nextDouble());\n            assertEquals(Double.parseDouble(str), TypeUtils.parseDouble(str));\n        }\n    }\n\n\n    public void test_1() throws Exception {\n        Random r = new Random();\n\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            String str = Integer.toString(r.nextInt());\n            assertEquals(Double.parseDouble(str), TypeUtils.parseDouble(str));\n        }\n    }\n\n    public void test_2() throws Exception {\n        Random r = new Random();\n\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            String str = Integer.toString(r.nextInt(1000000000));\n            assertEquals(Double.parseDouble(str), TypeUtils.parseDouble(str));\n        }\n    }\n\n    public void test_3() throws Exception {\n        Random r = new Random();\n\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            String str = Long.toString(r.nextLong());\n            assertEquals(Double.parseDouble(str), TypeUtils.parseDouble(str));\n        }\n    }\n\n    public void test_4() throws Exception {\n        String[] array = new String[] {\n                \"0.34856254\",\n                \"1\",\n                \"12\",\n                \"123\",\n                \"1234\",\n                \"12345\",\n                \"123456\",\n                \"1234567\",\n                \"12345678\",\n                \"123456789\",\n                \"1234567890\",\n                \".1\"\n                ,\"1.1\"\n                ,\"12.1\"\n                , \"123.1\"\n                , \"1234.1\"\n                , \"12345.1\"\n                , \"123456.1\"\n                , \"1234567.1\"\n                , \"12345678.1\"\n                , \"0.1\"\n                , \"0.12\"\n                , \"0.123\"\n                , \"0.1234\"\n                , \"0.12345\"\n                , \"0.123456\"\n                , \"0.1234567\"\n                , \"0.12345678\"\n                , \"0.123456789\"\n                , \"0.1234567891\"\n                , \"0.12345678901\"\n                , \"0.123456789012\"\n        };\n\n        for (String str : array) {\n            assertEquals(Double.parseDouble(str), TypeUtils.parseDouble(str));\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/TypeUtils_parseFloat_Test.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport com.alibaba.fastjson.util.TypeUtils;\nimport junit.framework.TestCase;\n\nimport java.util.Random;\n\npublic class TypeUtils_parseFloat_Test extends TestCase {\n    public void test_0() throws Exception {\n        Random r = new Random();\n\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            String str = Float.toString(r.nextFloat());\n            assertEquals(Float.parseFloat(str), TypeUtils.parseFloat(str));\n        }\n    }\n\n    public void test_1() throws Exception {\n        Random r = new Random();\n\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            String str = Integer.toString(r.nextInt());\n            assertEquals(Float.parseFloat(str), TypeUtils.parseFloat(str));\n        }\n    }\n\n    public void test_2() throws Exception {\n        Random r = new Random();\n\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            String str = Integer.toString(r.nextInt(1000000000));\n            assertEquals(Float.parseFloat(str), TypeUtils.parseFloat(str));\n        }\n    }\n\n    public void test_3() throws Exception {\n        Random r = new Random();\n\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            String str = Long.toString(r.nextLong());\n            assertEquals(Float.parseFloat(str), TypeUtils.parseFloat(str));\n        }\n    }\n\n    public void test_4() throws Exception {\n        String[] array = new String[] {\n                \"0.34856254\",\n                \"1\",\n                \"12\",\n                \"123\",\n                \"1234\",\n                \"12345\",\n                \"123456\",\n                \"1234567\",\n                \"12345678\",\n                \"123456789\",\n                \"1234567890\",\n                \".1\"\n                ,\"1.1\"\n                ,\"12.1\"\n                , \"123.1\"\n                , \"1234.1\"\n                , \"12345.1\"\n                , \"123456.1\"\n                , \"1234567.1\"\n                , \"12345678.1\"\n                , \"0.1\"\n                , \"0.12\"\n                , \"0.123\"\n                , \"0.1234\"\n                , \"0.12345\"\n                , \"0.123456\"\n                , \"0.1234567\"\n                , \"0.12345678\"\n                , \"0.123456789\"\n                , \"0.1234567891\"\n                , \"0.12345678901\"\n                , \"0.123456789012\"\n        };\n\n        for (String str : array) {\n            assertEquals(Float.parseFloat(str), TypeUtils.parseFloat(str));\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/UTF8ByteArrayLexerTest_symbol.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\npublic class UTF8ByteArrayLexerTest_symbol extends TestCase {\n\n    public void test_utf8() throws Exception {\n        byte[] bytes = \"{\\\"name\\\":\\\"温家宝\\\", \\\"name\\\":\\\"xx\\\"}\".getBytes(\"UTF-8\");\n\n        JSONObject json = JSON.parseObject(bytes, JSONObject.class);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/UTF8ByteArrayParseTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\npublic class UTF8ByteArrayParseTest extends TestCase {\n\n    public void test_utf8() throws Exception {\n        byte[] bytes = \"{'name':'xxx', age:3, birthday:\\\"2009-09-05\\\"}\".getBytes(\"UTF-8\");\n\n        JSON.parseObject(bytes, JSONObject.class);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/UnquoteNameTest.java",
    "content": "package com.alibaba.json.bvt.parser;\n\nimport java.io.StringReader;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONReader;\n\nimport junit.framework.TestCase;\n\npublic class UnquoteNameTest extends TestCase {\n    public void test_unquote() throws Exception {\n        String text = \"{_id:1001}\";\n        \n        Model model = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(1001, model._id);\n    }\n    \n    public void test_unquote_parse() throws Exception {\n        String text = \"{ _id:1001}\";\n        \n        JSONObject model = JSON.parseObject(text);\n        Assert.assertEquals(1001, model.get(\"_id\"));\n    }\n\n    public void test_unquote_parse_1() throws Exception {\n        String text = \"{ $id:1001}\";\n\n        JSONObject model = JSON.parseObject(text);\n        Assert.assertEquals(1001, model.get(\"$id\"));\n    }\n    \n    public void test_unquote_reader() throws Exception {\n        String text = \"{_id:1001}\";\n        \n        JSONReader reader = new JSONReader(new StringReader(text));\n        Model model = reader.readObject(Model.class);\n        Assert.assertEquals(1001, model._id);\n        reader.close();\n    }\n    \n    public void test_unquote_reader_parse() throws Exception {\n        String text = \"{_id:1001}\";\n        \n        JSONReader reader = new JSONReader(new StringReader(text));\n        JSONObject model = (JSONObject) reader.readObject();\n        Assert.assertEquals(1001, model.get(\"_id\"));\n        reader.close();\n    }\n    \n    public void test_obj() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"{_id:123}\"));\n\n        reader.startObject();\n        Assert.assertEquals(\"_id\", reader.readString());\n        Assert.assertEquals(Integer.valueOf(123), reader.readInteger());\n        reader.endObject();\n\n        reader.close();\n    }\n\n    public void test_obj_1() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"{$id:123}\"));\n\n        reader.startObject();\n        Assert.assertEquals(\"$id\", reader.readString());\n        Assert.assertEquals(Integer.valueOf(123), reader.readInteger());\n        reader.endObject();\n\n        reader.close();\n    }\n    \n    public static class Model {\n        public int _id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/array/BeanToArrayAutoTypeTest.java",
    "content": "package com.alibaba.json.bvt.parser.array;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\npublic class BeanToArrayAutoTypeTest extends TestCase {\n    public void test_for_issue_x() throws Exception {\n        String json = \"[\\\"@type\\\":\\\"B\\\",\\\"chengchao\\\",1001]\";\n        A a = JSON.parseObject(json, A.class, Feature.SupportAutoType, Feature.SupportArrayToBean);\n        B b = (B) a;\n    }\n\n    public void test_for_issue() throws Exception {\n        Model m = new Model();\n        m.value = new B(1001, \"chengchao\");\n        String json = JSON.toJSONString(m);\n        assertEquals(\"{\\\"value\\\":[\\\"@type\\\":\\\"B\\\",\\\"chengchao\\\",1001]}\", json);\n\n        Model m1 = JSON.parseObject(json, Model.class, Feature.SupportAutoType);\n        assertEquals(m.value.getClass(), m1.value.getClass());\n        assertEquals(json, JSON.toJSONString(m1));\n    }\n\n    public void test_for_issue_1() throws Exception {\n        Model m = new Model();\n        m.value = new C(1001, 58);\n        String json = JSON.toJSONString(m);\n        assertEquals(\"{\\\"value\\\":[\\\"@type\\\":\\\"C\\\",58,1001]}\", json);\n\n        Model m1 = JSON.parseObject(json, Model.class, Feature.SupportAutoType);\n        assertEquals(m.value.getClass(), m1.value.getClass());\n        assertEquals(json, JSON.toJSONString(m1));\n    }\n\n    @JSONType(seeAlso = {B.class, C.class})\n    public static class A {\n        protected int id;\n\n        public int getId()\n        {\n            return id;\n        }\n\n        public void setId(int id)\n        {\n            this.id = id;\n        }\n    }\n\n    @JSONType(typeName = \"B\", orders = {\"name\", \"id\"})\n    public static class B extends A {\n        private String name;\n\n        public B() {\n\n        }\n\n        public B(int id, String name) {\n            this.id = id;\n            this.name = name;\n        }\n\n        public String getName()\n        {\n            return name;\n        }\n\n        public void setName(String name)\n        {\n            this.name = name;\n        }\n    }\n\n    @JSONType(typeName = \"C\", orders = {\"age\", \"id\"})\n    public static class C extends A {\n        public int age;\n\n        public C() {\n\n        }\n\n        public C(int id, int age) {\n            this.id = id;\n            this.age = age;\n        }\n    }\n\n    public static class Model {\n        @JSONField(serialzeFeatures = {SerializerFeature.BeanToArray, SerializerFeature.WriteClassName}\n                , parseFeatures = Feature.SupportArrayToBean)\n        public A value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/array/BeanToArrayAutoTypeTest2.java",
    "content": "package com.alibaba.json.bvt.parser.array;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\npublic class BeanToArrayAutoTypeTest2\n        extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model m = new Model();\n        m.value = new B(1001, \"chengchao\");\n        String json = JSON.toJSONString(m);\n        assertEquals(\"{\\\"value\\\":[\\\"@type\\\":\\\"B\\\",\\\"chengchao\\\",1001]}\", json);\n\n        Model m1 = JSON.parseObject(json, Model.class, Feature.SupportAutoType);\n        assertEquals(m.value.getClass(), m1.value.getClass());\n        assertEquals(json, JSON.toJSONString(m1));\n    }\n\n    public void test_for_issue_1() throws Exception {\n        Model m = new Model();\n        m.value = new C(1001, 58);\n        String json = JSON.toJSONString(m);\n        assertEquals(\"{\\\"value\\\":[\\\"@type\\\":\\\"C\\\",58,1001]}\", json);\n\n        Model m1 = JSON.parseObject(json, Model.class, Feature.SupportAutoType);\n        assertEquals(m.value.getClass(), m1.value.getClass());\n        assertEquals(json, JSON.toJSONString(m1));\n    }\n\n    @JSONType(seeAlso = {B.class, C.class}\n            , serialzeFeatures = {SerializerFeature.BeanToArray, SerializerFeature.WriteClassName}\n            , parseFeatures = Feature.SupportArrayToBean)\n    public static class A {\n        public int id;\n    }\n\n    @JSONType(typeName = \"B\", orders = {\"name\", \"id\"}\n            , serialzeFeatures = {SerializerFeature.BeanToArray, SerializerFeature.WriteClassName}\n            , parseFeatures = Feature.SupportArrayToBean)\n    public static class B extends A {\n        public String name;\n\n        public B() {\n\n        }\n\n        public B(int id, String name) {\n            this.id = id;\n            this.name = name;\n        }\n    }\n\n    @JSONType(typeName = \"C\", orders = {\"age\", \"id\"}\n            , serialzeFeatures = {SerializerFeature.BeanToArray, SerializerFeature.WriteClassName}\n            , parseFeatures = Feature.SupportArrayToBean)\n    public static class C extends A {\n        public int age;\n\n        public C() {\n\n        }\n\n        public C(int id, int age) {\n            this.id = id;\n            this.age = age;\n        }\n    }\n\n    public static class Model {\n        public A value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/array/BeanToArrayAutoTypeTest3.java",
    "content": "package com.alibaba.json.bvt.parser.array;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\npublic class BeanToArrayAutoTypeTest3\n        extends TestCase {\n    public void test_beanToArray() throws Exception {\n        Topology topology = JSON.parseObject(\"{\\\"maps\\\":[[\\\"@type\\\":\\\"Log\\\"]]}\", Topology.class);\n        assertEquals(LogSourceMeta.class, topology.maps.get(0).getClass());\n    }\n\n    public void test_beanToArray1() throws Exception {\n        Topology topology = JSON.parseObject(\"{\\\"maps\\\":[[\\\"@type\\\":\\\"Log\\\",123]]}\", Topology.class);\n        assertEquals(LogSourceMeta.class, topology.maps.get(0).getClass());\n        assertEquals(123, ((LogSourceMeta) topology.maps.get(0)).id);\n    }\n\n    @JSONType(typeName = \"Log\")\n    public static class LogSourceMeta extends MapTaskMeta {\n        public int id;\n    }\n\n    @JSONType(seeAlso = {LogSourceMeta.class, OtherMeta.class}, parseFeatures = Feature.SupportArrayToBean)\n    public static class MapTaskMeta {\n\n    }\n\n    @JSONType(typeName = \"Other\")\n    public static class OtherMeta extends MapTaskMeta {\n\n    }\n\n    public static class Topology {\n        public List<MapTaskMeta> maps;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/array/BeanToArrayTest.java",
    "content": "package com.alibaba.json.bvt.parser.array;\n\nimport java.util.ArrayList;\nimport java.util.Date;\nimport java.util.List;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class BeanToArrayTest extends TestCase {\n\n    public void test_beanToArray_parse() throws Exception {\n        String text = \"{\\\"go\\\":[[\\\"0\\\",[true,false],9999999999999,99,\\\"012345678901234567890123\\\",\\\"ftp://gfw.yma.co/x160\\\",\\\"xxxx\\\",\\\"9876543210123456\\\",[[\\\"m\\\",\\\"不要开心\\\",\\\"http://gfw.meiya.co\\\",\\\"123456@gg.com\\\",\\\"麻麻\\\",\\\"add\\\",null,\\\"9876543210123456\\\"]],null,[\\\"add\\\",\\\"ww\\\"],999,1234567890123]],\\\"success\\\":true}\";\n        GR result = JSON.parseObject(text, GR.class);\n        Assert.assertNotNull(result);\n        Assert.assertEquals(1, result.go.size());\n        Assert.assertEquals(\"0\", result.go.get(0).bi);\n        Assert.assertEquals(true, result.go.get(0).co.qu);\n        Assert.assertEquals(false, result.go.get(0).co.sa);\n        Assert.assertEquals(9999999999999L, result.go.get(0).gm.getTime());\n        Assert.assertEquals(99, result.go.get(0).grCo);\n    }\n\n    public static class GR {\n        public List<GO> go;\n        public boolean  success;\n    }\n\n    @JSONType(parseFeatures = Feature.SupportArrayToBean, serialzeFeatures=SerializerFeature.BeanToArray)\n    public static class GO {\n\n        public String       bi;\n        public CO           co;\n\n        public Date         gm;\n        public int          grCo;\n        public String       grId;\n        public String       grNa;\n        public String       grIm;\n        public String       ma;\n        public List<MO>     me = new ArrayList<MO>();\n        public int          th = 500;\n        public List<String> pe = new ArrayList<String>();\n        public String       no;\n        public long         ve;\n    }\n\n    @JSONType(parseFeatures = Feature.SupportArrayToBean)\n    public static class MO {\n\n        public String ope;\n        public String use;\n        public String log;\n        public String rea;\n        public String gro;\n        public String gen;\n        public String hea;\n        public String nic;\n    }\n\n    @JSONType(parseFeatures = Feature.SupportArrayToBean)\n    public static class CO {\n\n        public boolean sa;\n        public boolean qu;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/array/BeanToArrayTest2.java",
    "content": "package com.alibaba.json.bvt.parser.array;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class BeanToArrayTest2 extends TestCase {\n\n    public void test_bool() throws Exception {\n        Model model = JSON.parseObject(\"[true,false]\", Model.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(true, model.v1);\n        Assert.assertEquals(false, model.v2);\n    }\n    \n    public void test_bool_space() throws Exception {\n        Model model = JSON.parseObject(\"[true ,false ]\", Model.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(true, model.v1);\n        Assert.assertEquals(false, model.v2);\n    }\n\n    public void test_bool_num() throws Exception {\n        Model model = JSON.parseObject(\"[1,0]\", Model.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(true, model.v1);\n        Assert.assertEquals(false, model.v2);\n    }\n\n    public void test_bool_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[t,0]\", Model.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Model {\n\n        public boolean v1;\n        public boolean v2;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/array/BeanToArrayTest3.java",
    "content": "package com.alibaba.json.bvt.parser.array;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class BeanToArrayTest3 extends TestCase {\n\n    public void test_array() throws Exception {\n        Model model = new Model();\n        model.item = new Item();\n        model.item.id = 1001;\n        \n        String text = JSON.toJSONString(model);\n        \n        Assert.assertEquals(\"{\\\"item\\\":[1001]}\", text);\n        \n        Model model2 = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(model2.item.id, model.item.id);\n    }\n   \n    public static class Model {\n        @JSONField(serialzeFeatures=SerializerFeature.BeanToArray, parseFeatures=Feature.SupportArrayToBean)\n        public Item item;\n    }\n    \n    public static class Item {\n        public int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/array/BeanToArrayTest3_private.java",
    "content": "package com.alibaba.json.bvt.parser.array;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class BeanToArrayTest3_private extends TestCase {\n\n    public void test_array() throws Exception {\n        Model model = new Model();\n        model.item = new Item();\n        model.item.id = 1001;\n        \n        String text = JSON.toJSONString(model);\n        \n        Assert.assertEquals(\"{\\\"item\\\":[1001]}\", text);\n        \n        Model model2 = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(model2.item.id, model.item.id);\n    }\n   \n    private static class Model {\n        @JSONField(serialzeFeatures=SerializerFeature.BeanToArray, parseFeatures=Feature.SupportArrayToBean)\n        public Item item;\n    }\n    \n    private static class Item {\n        public int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/array/BeanToArrayTest_date.java",
    "content": "package com.alibaba.json.bvt.parser.array;\n\nimport java.io.StringReader;\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.JSONReaderScanner;\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class BeanToArrayTest_date extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_date() throws Exception {\n        long time = System.currentTimeMillis();\n        Model model = JSON.parseObject(\"[\" + time + \",\" + time + \"]\", Model.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(time, model.v1.getTime());\n        Assert.assertEquals(time, model.v2.getTime());\n    }\n\n    public void test_date_reader() throws Exception {\n        long time = System.currentTimeMillis();\n        Model model = new JSONReader(new StringReader(\"[\" + time + \",\" + time + \"]\"), Feature.SupportArrayToBean).readObject(Model.class);\n        Assert.assertEquals(time, model.v1.getTime());\n        Assert.assertEquals(time, model.v2.getTime());\n    }\n    \n    public void test_date_null() throws Exception {\n        Model model = JSON.parseObject(\"[null,null]\", Model.class, Feature.SupportArrayToBean);\n        Assert.assertNull(model.v1);\n        Assert.assertNull(model.v2);\n    }\n\n    public void test_date_null_reader() throws Exception {\n        Model model = new JSONReader(new StringReader(\"[null,null]\"), Feature.SupportArrayToBean).readObject(Model.class);\n        Assert.assertNull(model.v1);\n        Assert.assertNull(model.v2);\n    }\n    \n    public void test_date2() throws Exception {\n        SimpleDateFormat dateFormat = new SimpleDateFormat(\"yyyy-MM-dd\", JSON.defaultLocale);\n        dateFormat.setTimeZone(JSON.defaultTimeZone);\n        Model model = JSON.parseObject(\"[\\\"2016-01-01\\\",\\\"2016-01-02\\\"]\", Model.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(dateFormat.parse(\"2016-01-01\").getTime(), model.v1.getTime());\n        Assert.assertEquals(dateFormat.parse(\"2016-01-02\").getTime(), model.v2.getTime());\n    }\n\n    public void test_date2_reader() throws Exception {\n        SimpleDateFormat dateFormat = new SimpleDateFormat(\"yyyy-MM-dd\", JSON.defaultLocale);\n        dateFormat.setTimeZone(JSON.defaultTimeZone);\n\n        Model model = new JSONReader(new StringReader(\"[\\\"2016-01-01\\\",\\\"2016-01-02\\\"]\"), Feature.SupportArrayToBean).readObject(Model.class);\n        Assert.assertEquals(dateFormat.parse(\"2016-01-01\").getTime(), model.v1.getTime());\n        Assert.assertEquals(dateFormat.parse(\"2016-01-02\").getTime(), model.v2.getTime());\n    }\n\n    public static class Model {\n        public Date v1;\n        public Date v2;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/array/BeanToArrayTest_date_private.java",
    "content": "package com.alibaba.json.bvt.parser.array;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class BeanToArrayTest_date_private extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_date() throws Exception {\n        long time = System.currentTimeMillis();\n        Model model = JSON.parseObject(\"[\" + time + \",\" + time + \"]\", Model.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(time, model.v1.getTime());\n        Assert.assertEquals(time, model.v2.getTime());\n    }\n    \n    public void test_date_null() throws Exception {\n        Model model = JSON.parseObject(\"[null,null]\", Model.class, Feature.SupportArrayToBean);\n        Assert.assertNull(model.v1);\n        Assert.assertNull(model.v2);\n    }\n    \n    public void test_date2() throws Exception {\n        SimpleDateFormat dateFormat = new SimpleDateFormat(\"yyyy-MM-dd\", JSON.defaultLocale);\n        dateFormat.setTimeZone(JSON.defaultTimeZone);\n        Model model = JSON.parseObject(\"[\\\"2016-01-01\\\",\\\"2016-01-02\\\"]\", Model.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(dateFormat.parse(\"2016-01-01\").getTime(), model.v1.getTime());\n        Assert.assertEquals(dateFormat.parse(\"2016-01-02\").getTime(), model.v2.getTime());\n    }\n\n    private static class Model {\n        public Date v1;\n        public Date v2;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/array/BeanToArrayTest_enum.java",
    "content": "package com.alibaba.json.bvt.parser.array;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class BeanToArrayTest_enum extends TestCase {\n\n    public void test_enum() throws Exception {\n        Model model = JSON.parseObject(\"[\\\"A\\\",\\\"B\\\"]\", Model.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(Type.A, model.v1);\n        Assert.assertEquals(Type.B, model.v2);\n    }\n    \n    public void test_enum_space() throws Exception {\n        Model model = JSON.parseObject(\"[\\\"A\\\" ,\\\"B\\\" ]\", Model.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(Type.A, model.v1);\n        Assert.assertEquals(Type.B, model.v2);\n    }\n\n    public void test_enum_num() throws Exception {\n        Model model = JSON.parseObject(\"[1,0]\", Model.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(Type.B, model.v1);\n        Assert.assertEquals(Type.A, model.v2);\n    }\n\n    public void test_enum_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[t,0]\", Model.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Model {\n\n        public Type v1;\n        public Type v2;\n    }\n    \n    public static enum Type {\n        A, B, C\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/array/BeanToArrayTest_enum_private.java",
    "content": "package com.alibaba.json.bvt.parser.array;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class BeanToArrayTest_enum_private extends TestCase {\n\n    public void test_enum() throws Exception {\n        Model model = JSON.parseObject(\"[\\\"A\\\",\\\"B\\\"]\", Model.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(Type.A, model.v1);\n        Assert.assertEquals(Type.B, model.v2);\n    }\n    \n    public void test_enum_space() throws Exception {\n        Model model = JSON.parseObject(\"[\\\"A\\\" ,\\\"B\\\" ]\", Model.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(Type.A, model.v1);\n        Assert.assertEquals(Type.B, model.v2);\n    }\n\n    public void test_enum_num() throws Exception {\n        Model model = JSON.parseObject(\"[1,0]\", Model.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(Type.B, model.v1);\n        Assert.assertEquals(Type.A, model.v2);\n    }\n\n    public void test_enum_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[t,0]\", Model.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    private static class Model {\n\n        public Type v1;\n        public Type v2;\n    }\n    \n    private static enum Type {\n        A, B, C\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/array/BeanToArrayTest_int.java",
    "content": "package com.alibaba.json.bvt.parser.array;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class BeanToArrayTest_int extends TestCase {\n\n    public void test_int() throws Exception {\n        Model model = JSON.parseObject(\"[-100,100]\", Model.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(-100L, model.v1);\n        Assert.assertEquals(100L, model.v2);\n    }\n    \n    public void test_int_space() throws Exception {\n        Model model = JSON.parseObject(\"[-100 ,100 ]\", Model.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(-100L, model.v1);\n        Assert.assertEquals(100L, model.v2);\n    }\n\n    public void test_int_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[-\", Model.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_int_error_1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[-1:\", Model.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_int_error_max() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[1,92233720368547758000}\", Model.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_bool_error_min() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[1,-92233720368547758000}\", Model.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Model {\n        public int v1;\n        public int v2;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/array/BeanToArrayTest_long.java",
    "content": "package com.alibaba.json.bvt.parser.array;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class BeanToArrayTest_long extends TestCase {\n\n    public void test_long() throws Exception {\n        Model model = JSON.parseObject(\"[-100,100]\", Model.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(-100L, model.v1);\n        Assert.assertEquals(100L, model.v2);\n    }\n    \n    public void test_long_space() throws Exception {\n        Model model = JSON.parseObject(\"[-100 ,100 ]\", Model.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(-100L, model.v1);\n        Assert.assertEquals(100L, model.v2);\n    }\n\n    public void test_long_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[-\", Model.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_long_error_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[-1:\", Model.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_long_error_max() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[1,92233720368547758000}\", Model.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_long_error_min() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[1,-92233720368547758000}\", Model.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Model {\n        public long v1;\n        public long v2;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/array/BeanToArrayTest_private.java",
    "content": "package com.alibaba.json.bvt.parser.array;\n\nimport java.util.ArrayList;\nimport java.util.Date;\nimport java.util.List;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class BeanToArrayTest_private extends TestCase {\n\n    public void test_beanToArray_parse() throws Exception {\n        String text = \"{\\\"go\\\":[[\\\"0\\\",[true,false],9999999999999,99,\\\"012345678901234567890123\\\",\\\"ftp://gfw.yma.co/x160\\\",\\\"xxxx\\\",\\\"9876543210123456\\\",[[\\\"m\\\",\\\"不要开心\\\",\\\"http://gfw.meiya.co\\\",\\\"123456@gg.com\\\",\\\"麻麻\\\",\\\"add\\\",null,\\\"9876543210123456\\\"]],null,[\\\"add\\\",\\\"ww\\\"],999,1234567890123]],\\\"success\\\":true}\";\n        GR result = JSON.parseObject(text, GR.class);\n        Assert.assertNotNull(result);\n        Assert.assertEquals(1, result.go.size());\n        Assert.assertEquals(\"0\", result.go.get(0).bi);\n        Assert.assertEquals(true, result.go.get(0).co.qu);\n        Assert.assertEquals(false, result.go.get(0).co.sa);\n        Assert.assertEquals(9999999999999L, result.go.get(0).gm.getTime());\n        Assert.assertEquals(99, result.go.get(0).grCo);\n    }\n\n    public static class GR {\n        public List<GO> go;\n        public boolean  success;\n    }\n\n    @JSONType(parseFeatures = Feature.SupportArrayToBean)\n    private static class GO {\n\n        public String       bi;\n        public CO           co;\n\n        public Date         gm;\n        public int          grCo;\n        public String       grId;\n        public String       grNa;\n        public String       grIm;\n        public String       ma;\n        public List<MO>     me = new ArrayList<MO>();\n        public int          th = 500;\n        public List<String> pe = new ArrayList<String>();\n        public String       no;\n        public long         ve;\n    }\n\n    @JSONType(parseFeatures = Feature.SupportArrayToBean)\n    private static class MO {\n\n        public String ope;\n        public String use;\n        public String log;\n        public String rea;\n        public String gro;\n        public String gen;\n        public String hea;\n        public String nic;\n    }\n\n    @JSONType(parseFeatures = Feature.SupportArrayToBean)\n    private static class CO {\n\n        public boolean sa;\n        public boolean qu;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/bug/Bug0.java",
    "content": "package com.alibaba.json.bvt.parser.bug;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONArray;\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.JSONObject;\r\n\r\npublic class Bug0 extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        String text = \"{a:1,b:2}\";\r\n        JSONObject json = JSON.parseObject(text, JSONObject.class);\r\n        Assert.assertEquals(1, json.getIntValue(\"a\"));\r\n        Assert.assertEquals(2, json.getIntValue(\"b\"));\r\n    }\r\n\r\n    public void test_array_exception() throws Exception {\r\n        String text = \"[1, 2]}\";\r\n        Exception error = null;\r\n        try {\r\n            JSON.parseObject(text, JSONArray.class);\r\n        } catch (JSONException ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/bug/Bug2.java",
    "content": "package com.alibaba.json.bvt.parser.bug;\r\n\r\nimport java.util.List;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONObject;\r\n\r\npublic class Bug2 extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        String text = \"{children:[{id:3}]}\";\r\n        Page page = JSON.parseObject(text, Page.class);\r\n        Assert.assertEquals(1, page.getChildren().size());\r\n\r\n        Assert.assertEquals(JSONObject.class, page.getChildren().get(0).getClass());\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        String text = \"{children:['aa']}\";\r\n        Page page = JSON.parseObject(text, Page.class);\r\n        Assert.assertEquals(1, page.getChildren().size());\r\n\r\n        Assert.assertEquals(String.class, page.getChildren().get(0).getClass());\r\n    }\r\n\r\n    public static class Page<T> {\r\n\r\n        private List<T> children;\r\n\r\n        public List<T> getChildren() {\r\n            return children;\r\n        }\r\n\r\n        public void setChildren(List<T> children) {\r\n            this.children = children;\r\n        }\r\n\r\n    }\r\n\r\n    public static class Result {\r\n\r\n        private int id;\r\n\r\n        public int getId() {\r\n            return id;\r\n        }\r\n\r\n        public void setId(int id) {\r\n            this.id = id;\r\n        }\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/bug/Bug_for_changhao.java",
    "content": "package com.alibaba.json.bvt.parser.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.PropertyNamingStrategy;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport junit.framework.TestCase;\n\npublic class Bug_for_changhao extends TestCase {\n    public void test_for_bug() throws Exception {\n        String s = \"{\\\"intValue\\\":1,\\\"stringValue\\\":\\\"abc\\\"}\";\n        ParserConfig parseConfig = new ParserConfig();\n        parseConfig.propertyNamingStrategy = PropertyNamingStrategy.SnakeCase;\n        TestClass t = JSON.parseObject(s, TestClass.class, parseConfig, Feature.DisableFieldSmartMatch);\n        System.out.println(JSON.toJSONString(t));\n    }\n\n    static class TestClass {\n        String stringValue;\n        int intValue;\n\n        /**\n         * Getter method for property <tt>stringValue</tt>.\n         *\n         * @return property value of stringValue\n         */\n        public String getStringValue() {\n            return stringValue;\n        }\n\n        /**\n         * Setter method for property <tt>stringValue</tt>.\n         *\n         * @param stringValue  value to be assigned to property stringValue\n         */\n        public TestClass setStringValue(String stringValue) {\n            this.stringValue = stringValue;\n            return this;\n        }\n\n        /**\n         * Getter method for property <tt>intValue</tt>.\n         *\n         * @return property value of intValue\n         */\n        public int getIntValue() {\n            return intValue;\n        }\n\n        /**\n         * Setter method for property <tt>intValue</tt>.\n         *\n         * @param intValue  value to be assigned to property intValue\n         */\n        public TestClass setIntValue(int intValue) {\n            this.intValue = intValue;\n            return this;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/bug/Bug_for_dingzhu.java",
    "content": "package com.alibaba.json.bvt.parser.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.*;\nimport junit.framework.TestCase;\n\nimport java.lang.reflect.Field;\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic class Bug_for_dingzhu extends TestCase {\n    public void test_0() throws Exception {\n        HashMap<String, Object> params = new HashMap<String, Object>();\n        params.put(\"notExitAfterVid\", false);\n        params.put(\"VIData\", \"{\\\"config\\\":{\\\"noTokens\\\":\\\"Y\\\",\\\"stopReport\\\":\\\"Y\\\"}\");\n        StupidObject so = new StupidObject();\n        so.setParams(params);\n        SerializeFilter[] filters = new SerializeFilter[] { new DumbValueFilter()};\n        String jsonString = JSON.toJSONString(so, new SerializeConfig(), filters,\n                SerializerFeature.NotWriteDefaultValue, SerializerFeature.IgnoreErrorGetter,\n                SerializerFeature.QuoteFieldNames);\n    }\n\n    private class DumbValueFilter implements ContextValueFilter {\n        public Object process(BeanContext context, Object object, String name, Object value) {\n            if (context == null) {\n                return object;\n            }\n\n            Field field = context.getField();\n            return value;\n        }\n    }\n\n    private class StupidObject {\n        private Map<String, Object> params;\n\n        public Map<String, Object> getParams() {\n            return params;\n        }\n\n        public void setParams(Map<String, Object> params) {\n            this.params = params;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/bug/Bug_for_guanxiu.java",
    "content": "package com.alibaba.json.bvt.parser.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\n/**\n * 这个bug由李先锋反馈\n * @author wenshao\n *\n */\npublic class Bug_for_guanxiu extends TestCase {\n\n    public void test_long_list() throws Exception {\n        String str = \"{\\\"tnt_inst_id\\\":\\\"MYBKC1CN\\\",\\\"interface_id\\\":\\\"ant.mybank.loantrade.existvalidloan.query @1.0.0\\\",\\\"template_id\\\":\\\"EX-SYNC-IN-\\n\" +\n                \"\\n\" +\n                \"OPEN-API\\\"}\";\n\n        JSON.parseObject(str);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/bug/Bug_for_kongmu.java",
    "content": "package com.alibaba.json.bvt.parser.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\npublic class Bug_for_kongmu extends TestCase {\n    public void test_for_bug() throws Exception {\n        String JSON_STRING = \"{\\n\"\n                + \"\\t\\\"body\\\":\\\"parentBody\\\",\\n\"\n                + \"\\t\\\"name\\\":\\\"child-1\\\",\\n\"\n                + \"\\t\\\"result\\\":{\\n\"\n                + \"\\t\\t\\\"code\\\":11\\n\"\n                + \"\\t},\\n\"\n                + \"\\t\\\"toy\\\":{\\n\"\n                + \"\\t\\t\\\"type\\\":\\\"toytype\\\"\\n\"\n                + \"\\t}\\n\"\n                + \"}\";\n\n        JSON.parseObject(JSON_STRING, Child.class);\n\n    }\n\n\n    public static class BaseDO {\n        private String body;\n        private Result result;\n\n        public String getBody() {\n            return body;\n        }\n\n        public void setBody(String body) {\n            this.body = body;\n        }\n\n        public Result getResult() {\n            return result;\n        }\n\n        public void setResult(Result result) {\n            this.result = result;\n        }\n\n        // 在1.2.27中能过，在1.2.48不能过\n        public  class Result {\n\n\n            // 在1.2.48中，必须为static\n            //public static class Result {\n\n            public Result() {\n                this.code = 11;\n            }\n\n            private int code;\n\n            public int getCode() {\n                return code;\n            }\n\n            public void setCode(int code) {\n                this.code = code;\n            }\n        }\n    }\n\n    public static class Child extends BaseDO {\n        public String name;\n        public Toy toy;\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public Toy getToy() {\n            return toy;\n        }\n\n        public void setToy(Toy toy) {\n            this.toy = toy;\n        }\n\n        // 这儿不是static，在1.2.27、1.2.48都能过\n        public  class Toy {\n            private String type;\n\n            public Toy() {\n                this.type = \"toyType\";\n            }\n            public String getType() {\n                return type;\n            }\n\n            public void setType(String type) {\n                this.type = type;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/bug/Bug_for_lingzhi.java",
    "content": "package com.alibaba.json.bvt.parser.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\npublic class Bug_for_lingzhi extends TestCase {\n    public void test_0() throws Exception {\n        String str = \"[\\n\" +\n                \"{\\n\" +\n                \"\\\"isDefault\\\":false,\\n\" +\n                \"\\\"msgId\\\": \\\"expireTransitionChange\\\",\\n\" +\n                \"\\\"msgText\\\": \\\"xxx\\\",\\n\" +\n                \"\\\"extMsgId\\\": \\\"promptInformation\\\",\\n\" +\n                \"\\\"extMsgText\\\": \\\"xxx\\\",\\n\" +\n                \"\\\"instChangeType\\\": 1,\\n\" +\n                \"\\\"rule\\\": {\\n\" +\n                \"\\\"aliUid\\\":[39314],\\n\" +\n                \"\\\"regionNo\\\":[]\\n\" +\n                \"}\\n\" +\n                \"},\\n\" +\n                \"{\\n\" +\n                \"\\\"isDefault\\\":true,\\n\" +\n                \"\\\"msgId\\\": \\\"expireTransitionUnChange\\\",\\n\" +\n                \"\\\"msgText\\\": \\\"xxx\\\",\\n\" +\n                \"\\\"extMsgId\\\": \\\"Prompt information\\\",\\n\" +\n                \"\\\"extMsgText\\\": \\\"xxx\\\",\\n\" +\n                \"\\\"instChangeType\\\": 0,\\n\" +\n                \"\\\"rule\\\": {\\n\" +\n                \"\\\"aliUid\\\":[],\\n\" +\n                \"\\\"regionNo\\\":[]\\n\" +\n                \"}\\n\" +\n                \"},\\n\" +\n                \"{\\n\" +\n                \"\\\"isDefault\\\":false,\\n\" +\n                \"\\\"msgId\\\": \\\"expireTransitionChange\\\",\\n\" +\n                \"\\\"msgText\\\": \\\"xxx\\\",\\n\" +\n                \"\\\"extMsgId\\\": \\\"Prompt information\\\",\\n\" +\n                \"\\\"extMsgText\\\": \\\"你好B\\\",\\n\" +\n                \"\\\"instChangeType\\\": 1,\\n\" +\n                \"\\\"rule\\\": {\\n\" +\n                \"\\\"aliUid\\\":[111],\\n\" +\n                \"\\\"regionNo\\\":[]\\n\" +\n                \"}\\n\" +\n                \"}\\n\" +\n                \"]\";\n\n//        String pstr = JSON.toJSONString(JSON.parse(str), SerializerFeature.PrettyFormat);\n//        System.out.println(pstr);\n\n        JSON.parseObject(str, new TypeReference<List<EcsTransitionDisplayedMsgConfig>>(){});\n    }\n\n    public static class EcsTransitionDisplayedMsgConfig {\n\n        /**\n         * 是否默认文案\n         */\n        private Boolean isDefault;\n\n        /**\n         * 展示的文案Id\n         */\n        private String msgId;\n\n        /**\n         * 展示的文案信息\n         */\n        private String msgText;\n\n        /**\n         * 扩展文案Id\n         */\n        private String extMsgId;\n\n        /**\n         * 扩展文案信息\n         */\n        private String extMsgText;\n\n\n        private Integer instChangeType;\n\n        /**\n         * 文案对应的规则\n         */\n        private EcsTransitionConfigRule rule;\n\n        public String getMsgText() {\n            return msgText;\n        }\n\n        public void setMsgText(String msgText) {\n            this.msgText = msgText;\n        }\n\n        public String getMsgId() {\n            return msgId;\n        }\n\n        public void setMsgId(String msgId) {\n            this.msgId = msgId;\n        }\n\n        public EcsTransitionConfigRule getRule() {\n            return rule;\n        }\n\n        public void setRule(EcsTransitionConfigRule rule) {\n            this.rule = rule;\n        }\n\n        public Integer getInstChangeType() {\n            return instChangeType;\n        }\n\n        public void setInstChangeType(Integer instChangeType) {\n            this.instChangeType = instChangeType;\n        }\n\n        public Boolean getIsDefault() {\n            return this.isDefault;\n        }\n\n        public void setIsDefault(Boolean isDefault) {\n            this.isDefault = isDefault;\n        }\n\n        public String getExtMsgId() {\n            return extMsgId;\n        }\n\n        public void setExtMsgId(String extMsgId) {\n            this.extMsgId = extMsgId;\n        }\n\n        public String getExtMsgText() {\n            return extMsgText;\n        }\n\n        public void setExtMsgText(String extMsgText) {\n            this.extMsgText = extMsgText;\n        }\n    }\n\n    public static class EcsTransitionConfigRule {\n\n\n        /** 0 过保迁移, 1 非过保迁移 **/\n        private List<Integer> transType;\n\n        /** 比如：cn-qingdao-cm5-a01 **/\n        private List<String> regionNo;\n\n        private List<Long> aliUid;\n\n        private List<String> bid;\n\n        /** ecs,disk **/\n        private List<String> resourceType;\n\n        private List<Long> zoneId;\n\n        private List<Long> targetZoneId;\n\n        private List<Integer> networkTransType;\n\n        /** instance type 实例规格 **/\n        private List<String> instanceType;\n\n        /** 磁盘类型 ioX **/\n        private List<String> ioX;\n\n        private List<String> instanceId;\n\n\n        public List<Integer> getTransType() {\n            return transType;\n        }\n\n        public void setTransType(List<Integer> transType) {\n            this.transType = transType;\n        }\n\n        public List<String> getRegionNo() {\n            return regionNo;\n        }\n\n        public void setRegionNo(List<String> regionNo) {\n            this.regionNo = regionNo;\n        }\n\n        public List<Long> getAliUid() {\n            return aliUid;\n        }\n\n        public void setAliUid(List<Long> aliUid) {\n            this.aliUid = aliUid;\n        }\n\n        public List<String> getBid() {\n            return bid;\n        }\n\n        public void setBid(List<String> bid) {\n            this.bid = bid;\n        }\n\n        public List<String> getResourceType() {\n            return resourceType;\n        }\n\n        public void setResourceType(List<String> resourceType) {\n            this.resourceType = resourceType;\n        }\n\n        public List<Long> getZoneId() {\n            return zoneId;\n        }\n\n        public void setZoneId(List<Long> zoneId) {\n            this.zoneId = zoneId;\n        }\n\n        public List<Long> getTargetZoneId() {\n            return targetZoneId;\n        }\n\n        public void setTargetZoneId(List<Long> targetZoneId) {\n            this.targetZoneId = targetZoneId;\n        }\n\n        public List<Integer> getNetworkTransType() {\n            return networkTransType;\n        }\n\n        public void setNetworkTransType(List<Integer> networkTransType) {\n            this.networkTransType = networkTransType;\n        }\n\n        public List<String> getInstanceType() {\n            return instanceType;\n        }\n\n        public void setInstanceType(List<String> instanceType) {\n            this.instanceType = instanceType;\n        }\n\n        public List<String> getIoX() {\n            return ioX;\n        }\n\n        public void setIoX(List<String> ioX) {\n            this.ioX = ioX;\n        }\n\n        public List<String> getInstanceId() {\n            return instanceId;\n        }\n\n        public void setInstanceId(List<String> instanceId) {\n            this.instanceId = instanceId;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/bug/Bug_for_lixianfeng.java",
    "content": "package com.alibaba.json.bvt.parser.bug;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\n/**\n * 这个bug由李先锋反馈\n * @author wenshao\n *\n */\npublic class Bug_for_lixianfeng extends TestCase {\n\n    public void test_long_list() throws Exception {\n        String str = \"{\\\"id\\\":14281,\\\"name\\\":\\\"test\\\",\\\"canPurchase\\\":1,\\\"categoryId\\\":955063}\";\n\n        JSON.parseObject(str, Te.class);\n    }\n\n    public static class Te {\n\n        private Long       id;\n        private String     name;\n        private List<Long> catIds;\n\n        public Long getId() {\n            return id;\n        }\n\n        public void setId(Long id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public List<Long> getCatIds() {\n            return catIds;\n        }\n\n        public void setCatIds(List<Long> catIds) {\n            this.catIds = catIds;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/bug/Bug_for_yihaodian.java",
    "content": "package com.alibaba.json.bvt.parser.bug;\n\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class Bug_for_yihaodian extends TestCase {\n\n    public void test_for_long_list() throws Exception {\n        String str = \"{\\\"backOperatorId\\\":14281,\\\"batchNum\\\":0,\\\"canPurchase\\\":1,\\\"categoryId\\\":955063}\";\n        Te ob = JSON.parseObject(str, Te.class);\n    }\n\n    public static class Te {\n\n        /** 产品ID */\n        private Long         id;\n        /** 要删除产品的ID */\n        private String       deletedProductId;\n        /** 产品编码 */\n        private String       productCode;\n        /** 产品名 */\n        private String       productCname;\n        /** 产品名前面的品牌名 */\n        private String       productBrandName;\n        /** 产品名英文 */\n        private String       productEname;\n        /** 产品销售类别 */\n        private Integer      productSaleType;\n        /** 产品品牌Id */\n        private Long         brandId;\n        /** 产品品牌 */\n        private String       brandName;\n\n        /** 市场价 */\n        private Double       productListPrice;\n        /** 分类Id */\n        private Long         categoryId;\n        /** 旧分类Id */\n        private Long         oldCategoryId;\n        /** 旧扩展类别 **/\n        private Long         oldExtendCategoryId;\n        /** 厂商ID,默认为1 */\n        private Long         mfid;\n        /** productCanBeChange */\n        private Integer      productCanBeChange;\n        /** productChangeDay */\n        private Integer      productChangeDay;\n        /** productCanBeReturn */\n        private Integer      productCanBeReturn;\n        /** productReturnDay */\n        private Integer      productReturnDay;\n        /** 能否维修 */\n        private Integer      productCanBeRepair;\n        /** 能否维修 */\n        private Integer      productCanBeRepairDay;\n        /** 安装信息 */\n        private Integer      productNeedInstallation;\n        /** 条形码 */\n        private String       ean13;\n        /** sku */\n        private String       sku;\n        /** 长 */\n        private Double       length;\n        /** 宽 */\n        private Double       width;\n        /** 高 */\n        private Double       height;\n        /** 净重 */\n        private Double       weight;\n        /** keepTemperature */\n        private String       keepTemperature;\n        /** keepHumidity */\n        private String       keepHumidity;\n        /** 产品简称 */\n        private String       productSname;\n        /** keepSpecCondition */\n        private String       keepSpecCondition;\n        /** productQualityAssuranceDay */\n        private Integer      productQualityAssuranceDay;\n        /** 是否已删除 */\n        private Integer      isDeleted;\n        /** 单位 */\n        private String       unit;\n        /** 进价 */\n        private Double       inPrice;\n        /** volume */\n        private Double       volume;\n        /** countryOfOrgn */\n        private Long         countryOfOrgn;\n        /** 主图ID */\n        private Long         defaultPictureId;\n        /** 主图URL */\n        private String       defaultPictureUrl;\n        /** color */\n        private String       color;\n        /** currencyId */\n        private Long         currencyId;\n        /** 毛重 */\n        private Double       grossWeight;\n        /** format */\n        private String       format;\n        /** 易碎品 0 不是 1是 */\n        private String       isFragile;\n        /** 向上0 不是 1是 */\n        private String       putOnDirection;\n        /** 贵重品0 不是 1是 */\n        private String       isValuables;\n        /** 液体0 不是 1是 */\n        private String       isLiquid;\n        /** 防交叉污染0 不是 1是 */\n        private String       isCrossContamination;\n        /** 16进制的颜色代码,如#FF00AA */\n        private String       colorNumber;\n        /** 尺码 */\n        private String       productSize;\n        /** 替换后的尺码 */\n        private String       replaceProductSize;\n        /** 销售技巧 */\n        private String       saleSkill;\n        /** 本商品作为赠品时的处理方法 */\n        private String       dispositionInstruct;\n        /** 产地 */\n        private String       placeOfOrigin;\n        /** 产品页面标题 */\n        private String       productSeoTitle;\n        /** 产品页面属性关键字 */\n        private String       productSeoKeyword;\n        /** 产品页面属性描述 */\n        private String       productSeoDescription;\n        /** 后台产品配件说明 */\n        private String       accessoryDescription;\n        /** 是否需要单独开票 */\n        private Integer      needInvoice;\n        /** 清仓原因 */\n        private String       clearCause;\n        /** 默认商品条码ID */\n        private Long         defaultBarcodeId;\n        /** 广告词 */\n        private String       adWord;\n        /** 是否是3c产品（0:非3C,1:3C产品） */\n        private Integer      isCcc;\n        /** N件购 */\n        private Integer      shoppingCount;\n        /** 是否为赠品 */\n        private Integer      productIsGift;\n        /** 是否可以退换货 0：不可以 1：可以 */\n        private Integer      canReturnAndChange;\n        /** 是否需要检测 0：不需要 1：需要 */\n        private Integer      needExamine;\n        /** 1:新增未审核;2:编辑待审核;3:审核未通过;4:审核通过;5:文描审核失败;6:图片审核失败 */\n        private Integer      verifyFlg;\n        /** 审核者 */\n        private Long         verifyBy;\n        /** 审核日时 */\n\n        /** 商品登记者 */\n        private Long         registerBy;\n        /** 商品登记日时 */\n\n        /** 商品登记者联系电话 */\n        private String       registerPhone;\n        /** 审核备注 */\n        private String       verifyRemark;\n        /** 批量数 */\n        private Integer      batchNum;\n        /** 是否只限本地配送0: 不限制 1:限制 (粉状/液体/膏状) */\n        private Integer      localLimit;\n        /** 一包的数量 */\n        private Integer      stdPackQty;\n        /** 正式表产品ID */\n        private Long         fromalProductId;\n        /** 是否强制发票 */\n        private Integer      isMustInvoice;\n        /** 审核失败原因 */\n        private Integer      verifyFailureType;\n        /** 产品类型 0：普通产品 1：主系列产品 2：子系列产品 3：捆绑产品 4：礼品卡 5: 虚拟商品 6:增值服务 */\n        private Integer      productType;\n        /** 是否能被采购 */\n        private Integer      canPurchase;\n        /** 标准包装箱sku */\n        private String       stdPackageSku;\n        /** 是否需要启用保质期控制 0:不启用 1：启用 */\n        private Integer      userExpireControl;\n        /** 批次规则ID */\n        private Long         batchRuleId;\n        /** 产品名称副标题 */\n        private String       nameSubtitle;\n        private String       specialType;\n        /** 给经销商的批发价 */\n        private Double       batchPrice;\n        /** 是否需要批次控制 0：不需要 1：需要 */\n        private Integer      needBatchControl;\n        /** 销售税率 */\n        private Double       salesTax;\n        /** 外部产品编码 */\n        private String       outerId;\n        /** 商家ID */\n        private Long         merchantId;\n        /** 商家名称 */\n        private String       merchantName;\n        /** 商家产品主类别（用于报表统计） */\n        private Long         masterCategoryId;\n\n        private Integer      concernLevel;\n        /** 关注理由 */\n        private String       concernReason;\n        /** 是否可售 */\n        private Integer      canSale;\n        /** 是否显示 */\n        private Integer      canShow;\n        /** 产品销售税率 */\n        private Long         prodcutTaxRate;\n        /** 是否支持VIP0:不支持1:支持 */\n        private Integer      canVipDiscount;\n        /** 分类名称 */\n        private String       categoryName;\n        /** 销售价格 */\n        private Double       salePrice;\n        /** 库存 */\n        private Long         stockNum;\n        /** 商家类别名称 */\n        private String       merchantCategoryName;\n        /** 商家详情 */\n        private String       productDescription;\n        /** 是否可调拨 0：不可以 1：可以 */\n        private Integer      isTransfer;\n        /** 是否需要审核0：新增未提交；1：需要审核；2：编辑未提交 */\n        private Integer      isSubmit;\n        /** 审核失败类型 */\n        private Integer      verifyFailueType;\n        /** 产品拼音 */\n        private String       productSpell;\n        /** 产品名称前缀 */\n        private String       productNamePrefix;\n        /** 审核失败原因 */\n        private String       failueReason;\n        /** orgPicUrl */\n        private String       orgPicUrl;\n        /** 扩展分类名称 */\n        private String       subCategoryName;\n        /** 扩展分类ID */\n        private Long         subCategoryId;\n        /** 7天内日均销量 */\n        private Integer      dailySale;\n        /** 查看是否有主图 */\n        private Integer      picCount;\n        /** 强制下架原因 */\n        private Integer      underCarriageReason;\n        /** 强制下架原因-中文信息 */\n        private String       underCarriageReasonStr;\n        /** 异常信息 */\n        private String       errorMessage;\n        /** 库存预警数量 */\n        private Integer      alertStockCount;\n\n        private String       deliveryInfo;\n        /** 主图链接 */\n        private String       picUrl;\n\n        /** 是否能分期0：不能 1：能 */\n        private Integer      canFenqi;\n\n        private String       season;\n        /** 是否是二次审核 */\n        private Integer      isDupAudit;\n\n        private Integer      viewFromTag;\n\n        /** 产品售价 */\n        private Double       productNonMemberPrice;\n        /** 产品图片 */\n\n        /** 是否更新操作 */\n        private Integer      isUpdate;\n        /** merchantRpcVo */\n\n        /** 系列产品的颜色图片 */\n\n        /** 系列产品的尺码 */\n        private List<String> productSizeSet;\n\n        /** 是否主产品 */\n        private Boolean      isMainProduct;\n        /** 从图片空间中返回图片ID和URL */\n        private String       productPicIdAndURL;\n\n        private Integer      isTemp;\n        /** 市场价和售价的比例 */\n        private Double       priceRate;\n\n        private Integer      picSpecialType;\n        private Integer      exemptStatus;\n\n        private String       violationReasonIds;\n\n        private String       violationReasons;\n\n        private Long         remainTime;\n\n        private Integer      submitOrder;\n\n        private Integer      productSource;\n\n        private Integer      isKa;\n        /** KA商家创建时间 */\n        private Integer      kaMCreateTime;\n        /** 配送延长期 */\n        private Integer      deliveryDay;\n        /** 产品状态 */\n        private Integer      isEdit;\n        /** 操作人 */\n        private Long         backOperatorId;\n        /** 正式库pm_info_id */\n        private Long         formalPmInfoId;\n        /** 类别拼接字符串 */\n        private String       categoryStr;\n        /** 类别id拼接字符串 */\n        private String       categoryIdStr;\n        /** 扩展类别拼接字符串 */\n        private String       extendCategoryStr;\n        /** 扩展类别id拼接字符串 */\n        private String       extendCategoryIdStr;\n        /** 商家类别ID */\n        private List<Long>   masterCategoryIdList;\n\n        private Long         defaultWarehouseId;\n\n        public Long getBackOperatorId() {\n            return backOperatorId;\n        }\n\n        public void setBackOperatorId(Long backOperatorId) {\n            this.backOperatorId = backOperatorId;\n        }\n\n        public Integer getIsDupAudit() {\n            return isDupAudit;\n        }\n\n        public void setIsDupAudit(Integer isDupAudit) {\n            this.isDupAudit = isDupAudit;\n        }\n\n        public Long getId() {\n            return id;\n        }\n\n        public String getUnderCarriageReasonStr() {\n            return underCarriageReasonStr;\n        }\n\n        public void setUnderCarriageReasonStr(String underCarriageReasonStr) {\n            this.underCarriageReasonStr = underCarriageReasonStr;\n        }\n\n        /**\n         * 产品ID\n         * \n         * @param id 产品ID\n         */\n\n        public void setId(Long id) {\n            this.id = id;\n        }\n\n        /**\n         * 产品编码\n         * \n         * @return productCode\n         */\n\n        public String getProductCode() {\n            return productCode;\n        }\n\n        /**\n         * 产品编码\n         * \n         * @param productCode 产品编码\n         */\n\n        public void setProductCode(String productCode) {\n            this.productCode = productCode;\n        }\n\n        /**\n         * 产品名\n         * \n         * @return productCname\n         */\n\n        public String getProductCname() {\n            return productCname;\n        }\n\n        /**\n         * 产品名\n         * \n         * @param productCname 产品名\n         */\n\n        public void setProductCname(String productCname) {\n            this.productCname = productCname;\n        }\n\n        /**\n         * 产品名英文\n         * \n         * @return productEname\n         */\n\n        public String getProductEname() {\n            return productEname;\n        }\n\n        /**\n         * 产品名英文\n         * \n         * @param productEname 产品名英文\n         */\n\n        public void setProductEname(String productEname) {\n            this.productEname = productEname;\n        }\n\n\n        /**\n         * 产品销售类别\n         * \n         * @param productSaleType 产品销售类别\n         */\n\n        public void setProductSaleType(Integer productSaleType) {\n            this.productSaleType = productSaleType;\n        }\n\n        /**\n         * 产品品牌Id\n         * \n         * @return brandId\n         */\n\n        public Long getBrandId() {\n            return brandId;\n        }\n\n        /**\n         * 产品品牌Id\n         * \n         * @param brandId 产品品牌Id\n         */\n\n        public void setBrandId(Long brandId) {\n            this.brandId = brandId;\n        }\n\n        /**\n         * 产品品牌\n         * \n         * @return brandName\n         */\n\n        public String getBrandName() {\n            return brandName;\n        }\n\n        /**\n         * 产品品牌\n         * \n         * @param brandName 产品品牌\n         */\n\n        public void setBrandName(String brandName) {\n            this.brandName = brandName;\n        }\n\n        /**\n         * 产品创建时间\n         * \n         * @return createTime\n         */\n\n        /**\n         * 产品创建时间\n         * \n         * @param createTime 产品创建时间\n         */\n\n        /**\n         * 市场价\n         * \n         * @return productListPrice\n         */\n\n        public Double getProductListPrice() {\n            return productListPrice;\n        }\n\n        /**\n         * 市场价\n         * \n         * @param productListPrice 市场价\n         */\n\n        public void setProductListPrice(Double productListPrice) {\n            this.productListPrice = productListPrice;\n        }\n\n        /**\n         * 分类Id\n         * \n         * @return categoryId\n         */\n\n        public Long getCategoryId() {\n            return categoryId;\n        }\n\n        /**\n         * 分类Id\n         * \n         * @param categoryId 分类Id\n         */\n\n        public void setCategoryId(Long categoryId) {\n            this.categoryId = categoryId;\n        }\n\n        /**\n         * 厂商ID默认为1\n         * \n         * @return mfid\n         */\n\n        public Long getMfid() {\n            return mfid;\n        }\n\n        /**\n         * 厂商ID默认为1\n         * \n         * @param mfid 厂商ID默认为1\n         */\n\n        public void setMfid(Long mfid) {\n            this.mfid = mfid;\n        }\n\n        /**\n         * productCanBeChange\n         * \n         * @return productCanBeChange\n         */\n\n        public Integer getProductCanBeChange() {\n            return productCanBeChange;\n        }\n\n        /**\n         * productCanBeChange\n         * \n         * @param productCanBeChange productCanBeChange\n         */\n\n        public void setProductCanBeChange(Integer productCanBeChange) {\n            this.productCanBeChange = productCanBeChange;\n        }\n\n        /**\n         * productChangeDay\n         * \n         * @return productChangeDay\n         */\n\n        public Integer getProductChangeDay() {\n            return productChangeDay;\n        }\n\n        /**\n         * productChangeDay\n         * \n         * @param productChangeDay productChangeDay\n         */\n\n        public void setProductChangeDay(Integer productChangeDay) {\n            this.productChangeDay = productChangeDay;\n        }\n\n        /**\n         * productCanBeReturn\n         * \n         * @return productCanBeReturn\n         */\n\n        public Integer getProductCanBeReturn() {\n            return productCanBeReturn;\n        }\n\n        /**\n         * productCanBeReturn\n         * \n         * @param productCanBeReturn productCanBeReturn\n         */\n\n        public void setProductCanBeReturn(Integer productCanBeReturn) {\n            this.productCanBeReturn = productCanBeReturn;\n        }\n\n        /**\n         * productReturnDay\n         * \n         * @return productReturnDay\n         */\n\n        public Integer getProductReturnDay() {\n            return productReturnDay;\n        }\n\n        /**\n         * productReturnDay\n         * \n         * @param productReturnDay productReturnDay\n         */\n\n        public void setProductReturnDay(Integer productReturnDay) {\n            this.productReturnDay = productReturnDay;\n        }\n\n        /**\n         * 能否维修\n         * \n         * @return productCanBeRepair\n         */\n\n        public Integer getProductCanBeRepair() {\n            return productCanBeRepair;\n        }\n\n        /**\n         * 能否维修\n         * \n         * @param productCanBeRepair 能否维修\n         */\n\n        public void setProductCanBeRepair(Integer productCanBeRepair) {\n            this.productCanBeRepair = productCanBeRepair;\n        }\n\n        /**\n         * 能否维修\n         * \n         * @return productCanBeRepairDay\n         */\n\n        public Integer getProductCanBeRepairDay() {\n            return productCanBeRepairDay;\n        }\n\n        /**\n         * 能否维修\n         * \n         * @param productCanBeRepairDay 能否维修\n         */\n\n        public void setProductCanBeRepairDay(Integer productCanBeRepairDay) {\n            this.productCanBeRepairDay = productCanBeRepairDay;\n        }\n\n        /**\n         * 安装信息\n         * \n         * @return productNeedInstallation\n         */\n\n        public Integer getProductNeedInstallation() {\n            return productNeedInstallation;\n        }\n\n        /**\n         * 安装信息\n         * \n         * @param productNeedInstallation 安装信息\n         */\n\n        public void setProductNeedInstallation(Integer productNeedInstallation) {\n            this.productNeedInstallation = productNeedInstallation;\n        }\n\n        /**\n         * 条形码\n         * \n         * @return ean13\n         */\n\n        public String getEan13() {\n            return ean13;\n        }\n\n        /**\n         * 条形码\n         * \n         * @param ean13 条形码\n         */\n\n        public void setEan13(String ean13) {\n            this.ean13 = ean13;\n        }\n\n        /**\n         * sku\n         * \n         * @return sku\n         */\n\n        public String getSku() {\n            return sku;\n        }\n\n        /**\n         * sku\n         * \n         * @param sku sku\n         */\n\n        public void setSku(String sku) {\n            this.sku = sku;\n        }\n\n        /**\n         * 长\n         * \n         * @return length\n         */\n\n        public Double getLength() {\n            return length;\n        }\n\n        /**\n         * 长\n         * \n         * @param length 长\n         */\n\n        public void setLength(Double length) {\n            this.length = length;\n        }\n\n        /**\n         * 宽\n         * \n         * @return width\n         */\n\n        public Double getWidth() {\n            return width;\n        }\n\n        /**\n         * 宽\n         * \n         * @param width 宽\n         */\n\n        public void setWidth(Double width) {\n            this.width = width;\n        }\n\n        /**\n         * 高\n         * \n         * @return height\n         */\n\n        public Double getHeight() {\n            return height;\n        }\n\n        /**\n         * 高\n         * \n         * @param height 高\n         */\n\n        public void setHeight(Double height) {\n            this.height = height;\n        }\n\n        /**\n         * 净重\n         * \n         * @return weight\n         */\n\n        public Double getWeight() {\n            return weight;\n        }\n\n        /**\n         * 净重\n         * \n         * @param weight 净重\n         */\n\n        public void setWeight(Double weight) {\n            this.weight = weight;\n        }\n\n        /**\n         * keepTemperature\n         * \n         * @return keepTemperature\n         */\n\n        public String getKeepTemperature() {\n            return keepTemperature;\n        }\n\n        /**\n         * keepTemperature\n         * \n         * @param keepTemperature keepTemperature\n         */\n\n        public void setKeepTemperature(String keepTemperature) {\n            this.keepTemperature = keepTemperature;\n        }\n\n        /**\n         * keepHumidity\n         * \n         * @return keepHumidity\n         */\n\n        public String getKeepHumidity() {\n            return keepHumidity;\n        }\n\n        /**\n         * keepHumidity\n         * \n         * @param keepHumidity keepHumidity\n         */\n\n        public void setKeepHumidity(String keepHumidity) {\n            this.keepHumidity = keepHumidity;\n        }\n\n        /**\n         * keepSpecCondition\n         * \n         * @return keepSpecCondition\n         */\n\n        public String getKeepSpecCondition() {\n            return keepSpecCondition;\n        }\n\n        /**\n         * keepSpecCondition\n         * \n         * @param keepSpecCondition keepSpecCondition\n         */\n\n        public void setKeepSpecCondition(String keepSpecCondition) {\n            this.keepSpecCondition = keepSpecCondition;\n        }\n\n        /**\n         * productQualityAssuranceDay\n         * \n         * @return productQualityAssuranceDay\n         */\n\n        public Integer getProductQualityAssuranceDay() {\n            return productQualityAssuranceDay;\n        }\n\n        /**\n         * productQualityAssuranceDay\n         * \n         * @param productQualityAssuranceDay productQualityAssuranceDay\n         */\n\n        public void setProductQualityAssuranceDay(Integer productQualityAssuranceDay) {\n            this.productQualityAssuranceDay = productQualityAssuranceDay;\n        }\n\n        /**\n         * 是否已删除\n         * \n         * @return isDeleted\n         */\n\n        public Integer getIsDeleted() {\n            return isDeleted;\n        }\n\n        /**\n         * 是否已删除\n         * \n         * @param isDeleted 是否已删除\n         */\n\n        public void setIsDeleted(Integer isDeleted) {\n            this.isDeleted = isDeleted;\n        }\n\n        /**\n         * 单位\n         * \n         * @return unit\n         */\n\n        public String getUnit() {\n            return unit;\n        }\n\n        /**\n         * 单位\n         * \n         * @param unit 单位\n         */\n\n        public void setUnit(String unit) {\n            this.unit = unit;\n        }\n\n        /**\n         * 进价\n         * \n         * @return inPrice\n         */\n\n        public Double getInPrice() {\n            return inPrice;\n        }\n\n        /**\n         * 进价\n         * \n         * @param inPrice 进价\n         */\n\n        public void setInPrice(Double inPrice) {\n            this.inPrice = inPrice;\n        }\n\n        /**\n         * volume\n         * \n         * @return volume\n         */\n\n        public Double getVolume() {\n            return volume;\n        }\n\n        /**\n         * volume\n         * \n         * @param volume volume\n         */\n\n        public void setVolume(Double volume) {\n            this.volume = volume;\n        }\n\n        /**\n         * countryOfOrgn\n         * \n         * @return countryOfOrgn\n         */\n\n        public Long getCountryOfOrgn() {\n            return countryOfOrgn;\n        }\n\n        /**\n         * countryOfOrgn\n         * \n         * @param countryOfOrgn countryOfOrgn\n         */\n\n        public void setCountryOfOrgn(Long countryOfOrgn) {\n            this.countryOfOrgn = countryOfOrgn;\n        }\n\n        /**\n         * 主图ID\n         * \n         * @return defaultPictureId\n         */\n\n        public Long getDefaultPictureId() {\n            return defaultPictureId;\n        }\n\n        /**\n         * 主图ID\n         * \n         * @param defaultPictureId 主图ID\n         */\n\n        public void setDefaultPictureId(Long defaultPictureId) {\n            this.defaultPictureId = defaultPictureId;\n        }\n\n        /**\n         * 主图URL\n         * \n         * @return defaultPictureUrl\n         */\n\n        public String getDefaultPictureUrl() {\n\n            return defaultPictureUrl;\n        }\n\n        /**\n         * 主图URL\n         * \n         * @param defaultPictureUrl 主图URL\n         */\n\n        public void setDefaultPictureUrl(String defaultPictureUrl) {\n            this.defaultPictureUrl = defaultPictureUrl;\n        }\n\n        /**\n         * color\n         * \n         * @return color\n         */\n\n        public String getColor() {\n            return color;\n        }\n\n        /**\n         * color\n         * \n         * @param color color\n         */\n\n        public void setColor(String color) {\n            this.color = color;\n        }\n\n        /**\n         * currencyId\n         * \n         * @return currencyId\n         */\n\n        public Long getCurrencyId() {\n            return currencyId;\n        }\n\n        /**\n         * currencyId\n         * \n         * @param currencyId currencyId\n         */\n\n        public void setCurrencyId(Long currencyId) {\n            this.currencyId = currencyId;\n        }\n\n        /**\n         * 毛重\n         * \n         * @return grossWeight\n         */\n\n        public Double getGrossWeight() {\n            return grossWeight;\n        }\n\n        /**\n         * 毛重\n         * \n         * @param grossWeight 毛重\n         */\n\n        public void setGrossWeight(Double grossWeight) {\n            this.grossWeight = grossWeight;\n        }\n\n        /**\n         * format\n         * \n         * @return format\n         */\n\n        public String getFormat() {\n            return format;\n        }\n\n        /**\n         * format\n         * \n         * @param format format\n         */\n\n        public void setFormat(String format) {\n            this.format = format;\n        }\n\n        /**\n         * 易碎品0不是1是\n         * \n         * @return isFragile\n         */\n\n        public String getIsFragile() {\n            return isFragile;\n        }\n\n        /**\n         * 易碎品0不是1是\n         * \n         * @param isFragile 易碎品0不是1是\n         */\n\n        public void setIsFragile(String isFragile) {\n            this.isFragile = isFragile;\n        }\n\n        /**\n         * 向上0不是1是\n         * \n         * @return putOnDirection\n         */\n\n        public String getPutOnDirection() {\n            return putOnDirection;\n        }\n\n        /**\n         * 向上0不是1是\n         * \n         * @param putOnDirection 向上0不是1是\n         */\n\n        public void setPutOnDirection(String putOnDirection) {\n            this.putOnDirection = putOnDirection;\n        }\n\n        /**\n         * 贵重品0不是1是\n         * \n         * @return isValuables\n         */\n\n        public String getIsValuables() {\n            return isValuables;\n        }\n\n        /**\n         * 贵重品0不是1是\n         * \n         * @param isValuables 贵重品0不是1是\n         */\n\n        public void setIsValuables(String isValuables) {\n            this.isValuables = isValuables;\n        }\n\n        /**\n         * 液体0不是1是\n         * \n         * @return isLiquid\n         */\n\n        public String getIsLiquid() {\n            return isLiquid;\n        }\n\n        /**\n         * 液体0不是1是\n         * \n         * @param isLiquid 液体0不是1是\n         */\n\n        public void setIsLiquid(String isLiquid) {\n            this.isLiquid = isLiquid;\n        }\n\n        /**\n         * 防交叉污染0不是1是\n         * \n         * @return isCrossContamination\n         */\n\n        public String getIsCrossContamination() {\n            return isCrossContamination;\n        }\n\n        /**\n         * 防交叉污染0不是1是\n         * \n         * @param isCrossContamination 防交叉污染0不是1是\n         */\n\n        public void setIsCrossContamination(String isCrossContamination) {\n            this.isCrossContamination = isCrossContamination;\n        }\n\n        /**\n         * 16进制的颜色代码如#FF00AA\n         * \n         * @return colorNumber\n         */\n\n        public String getColorNumber() {\n            return colorNumber;\n        }\n\n        /**\n         * 16进制的颜色代码如#FF00AA\n         * \n         * @param colorNumber 16进制的颜色代码如#FF00AA\n         */\n\n        public void setColorNumber(String colorNumber) {\n            this.colorNumber = colorNumber;\n        }\n\n        /**\n         * 尺码\n         * \n         * @return productSize\n         */\n\n        public String getProductSize() {\n            return productSize;\n        }\n\n        /**\n         * 尺码\n         * \n         * @param productSize 尺码\n         */\n\n        public void setProductSize(String productSize) {\n            this.productSize = productSize;\n        }\n\n        /**\n         * 销售技巧\n         * \n         * @return saleSkill\n         */\n\n        public String getSaleSkill() {\n            return saleSkill;\n        }\n\n        /**\n         * 销售技巧\n         * \n         * @param saleSkill 销售技巧\n         */\n\n        public void setSaleSkill(String saleSkill) {\n            this.saleSkill = saleSkill;\n        }\n\n        /**\n         * 本商品作为赠品时的处理方法\n         * \n         * @return dispositionInstruct\n         */\n\n        public String getDispositionInstruct() {\n            return dispositionInstruct;\n        }\n\n        /**\n         * 本商品作为赠品时的处理方法\n         * \n         * @param dispositionInstruct 本商品作为赠品时的处理方法\n         */\n\n        public void setDispositionInstruct(String dispositionInstruct) {\n            this.dispositionInstruct = dispositionInstruct;\n        }\n\n        /**\n         * 产地\n         * \n         * @return placeOfOrigin\n         */\n\n        public String getPlaceOfOrigin() {\n            return placeOfOrigin;\n        }\n\n        /**\n         * 产地\n         * \n         * @param placeOfOrigin 产地\n         */\n\n        public void setPlaceOfOrigin(String placeOfOrigin) {\n            this.placeOfOrigin = placeOfOrigin;\n        }\n\n        /**\n         * 产品页面标题\n         * \n         * @return productSeoTitle\n         */\n\n        public String getProductSeoTitle() {\n            return productSeoTitle;\n        }\n\n        /**\n         * 产品页面标题\n         * \n         * @param productSeoTitle 产品页面标题\n         */\n\n        public void setProductSeoTitle(String productSeoTitle) {\n            this.productSeoTitle = productSeoTitle;\n        }\n\n        /**\n         * 产品页面属性关键字\n         * \n         * @return productSeoKeyword\n         */\n\n        public String getProductSeoKeyword() {\n            return productSeoKeyword;\n        }\n\n        /**\n         * 产品页面属性关键字\n         * \n         * @param productSeoKeyword 产品页面属性关键字\n         */\n\n        public void setProductSeoKeyword(String productSeoKeyword) {\n            this.productSeoKeyword = productSeoKeyword;\n        }\n\n        /**\n         * 产品页面属性描述\n         * \n         * @return productSeoDescription\n         */\n\n        public String getProductSeoDescription() {\n            return productSeoDescription;\n        }\n\n        /**\n         * 产品页面属性描述\n         * \n         * @param productSeoDescription 产品页面属性描述\n         */\n\n        public void setProductSeoDescription(String productSeoDescription) {\n            this.productSeoDescription = productSeoDescription;\n        }\n\n        /**\n         * 后台产品配件说明\n         * \n         * @return accessoryDescription\n         */\n\n        public String getAccessoryDescription() {\n            return accessoryDescription;\n        }\n\n        /**\n         * 后台产品配件说明\n         * \n         * @param accessoryDescription 后台产品配件说明\n         */\n\n        public void setAccessoryDescription(String accessoryDescription) {\n            this.accessoryDescription = accessoryDescription;\n        }\n\n        /**\n         * 是否需要单独开票\n         * \n         * @return needInvoice\n         */\n\n        public Integer getNeedInvoice() {\n            return needInvoice;\n        }\n\n        /**\n         * 是否需要单独开票\n         * \n         * @param needInvoice 是否需要单独开票\n         */\n\n        public void setNeedInvoice(Integer needInvoice) {\n            this.needInvoice = needInvoice;\n        }\n\n        /**\n         * 清仓原因\n         * \n         * @return clearCause\n         */\n\n        public String getClearCause() {\n            return clearCause;\n        }\n\n        /**\n         * 清仓原因\n         * \n         * @param clearCause 清仓原因\n         */\n\n        public void setClearCause(String clearCause) {\n            this.clearCause = clearCause;\n        }\n\n        /**\n         * 默认商品条码ID\n         * \n         * @return defaultBarcodeId\n         */\n\n        public Long getDefaultBarcodeId() {\n            return defaultBarcodeId;\n        }\n\n        /**\n         * 默认商品条码ID\n         * \n         * @param defaultBarcodeId 默认商品条码ID\n         */\n\n        public void setDefaultBarcodeId(Long defaultBarcodeId) {\n            this.defaultBarcodeId = defaultBarcodeId;\n        }\n\n        /**\n         * 广告词\n         * \n         * @return adWord\n         */\n\n        public String getAdWord() {\n            return adWord;\n        }\n\n        /**\n         * 广告词\n         * \n         * @param adWord 广告词\n         */\n\n        public void setAdWord(String adWord) {\n            this.adWord = adWord;\n        }\n\n        /**\n         * 是否是3c产品（0:非3C1:3C产品）\n         * \n         * @return isCcc\n         */\n\n        public Integer getIsCcc() {\n            return isCcc;\n        }\n\n        /**\n         * 是否是3c产品（0:非3C1:3C产品）\n         * \n         * @param isCcc 是否是3c产品（0:非3C1:3C产品）\n         */\n\n        public void setIsCcc(Integer isCcc) {\n            this.isCcc = isCcc;\n        }\n\n        /**\n         * N件购\n         * \n         * @return shoppingCount\n         */\n\n        public Integer getShoppingCount() {\n            return shoppingCount;\n        }\n\n        /**\n         * N件购\n         * \n         * @param shoppingCount N件购\n         */\n\n        public void setShoppingCount(Integer shoppingCount) {\n            this.shoppingCount = shoppingCount;\n        }\n\n        /**\n         * 是否为赠品\n         * \n         * @return productIsGift\n         */\n\n        public Integer getProductIsGift() {\n            return productIsGift;\n        }\n\n        /**\n         * 是否为赠品\n         * \n         * @param productIsGift 是否为赠品\n         */\n\n        public void setProductIsGift(Integer productIsGift) {\n            this.productIsGift = productIsGift;\n        }\n\n        /**\n         * 是否可以退换货0：不可以1：可以\n         * \n         * @return canReturnAndChange\n         */\n\n        public Integer getCanReturnAndChange() {\n            return canReturnAndChange;\n        }\n\n        /**\n         * 是否可以退换货0：不可以1：可以\n         * \n         * @param canReturnAndChange 是否可以退换货0：不可以1：可以\n         */\n\n        public void setCanReturnAndChange(Integer canReturnAndChange) {\n            this.canReturnAndChange = canReturnAndChange;\n        }\n\n        /**\n         * 是否需要检测0：不需要1：需要\n         * \n         * @return needExamine\n         */\n\n        public Integer getNeedExamine() {\n            return needExamine;\n        }\n\n        /**\n         * 是否需要检测0：不需要1：需要\n         * \n         * @param needExamine 是否需要检测0：不需要1：需要\n         */\n\n        public void setNeedExamine(Integer needExamine) {\n            this.needExamine = needExamine;\n        }\n\n        /**\n         * 1:新增未审核;2:编辑待审核;3:审核未通过;4:审核通过;5:文描审核失败;6:图片审核失败\n         * \n         * @return verifyFlg\n         */\n\n        public Integer getVerifyFlg() {\n            return verifyFlg;\n        }\n\n        /**\n         * 1:新增未审核;2:编辑待审核;3:审核未通过;4:审核通过;5:文描审核失败;6:图片审核失败\n         * \n         * @param verifyFlg 1:新增未审核;2:编辑待审核;3:审核未通过;4:审核通过;5:文描审核失败;6:图片审核失败\n         */\n\n        public void setVerifyFlg(Integer verifyFlg) {\n            this.verifyFlg = verifyFlg;\n        }\n\n        /**\n         * 审核者\n         * \n         * @return verifyBy\n         */\n\n        public Long getVerifyBy() {\n            return verifyBy;\n        }\n\n        /**\n         * 审核者\n         * \n         * @param verifyBy 审核者\n         */\n\n        public void setVerifyBy(Long verifyBy) {\n            this.verifyBy = verifyBy;\n        }\n\n        /**\n         * 审核日时\n         * \n         * @return verifyAt\n         */\n\n        /**\n         * 审核日时\n         * \n         * @param verifyAt 审核日时\n         */\n\n        /**\n         * 商品登记者\n         * \n         * @return registerBy\n         */\n\n        public Long getRegisterBy() {\n            return registerBy;\n        }\n\n        /**\n         * 商品登记者\n         * \n         * @param registerBy 商品登记者\n         */\n\n        public void setRegisterBy(Long registerBy) {\n            this.registerBy = registerBy;\n        }\n\n        /**\n         * 商品登记日时\n         * \n         * @return registerAt\n         */\n\n        /**\n         * 商品登记日时\n         * \n         * @param registerAt 商品登记日时\n         */\n\n        /**\n         * 商品登记者联系电话\n         * \n         * @return registerPhone\n         */\n\n        public String getRegisterPhone() {\n            return registerPhone;\n        }\n\n        /**\n         * 商品登记者联系电话\n         * \n         * @param registerPhone 商品登记者联系电话\n         */\n\n        public void setRegisterPhone(String registerPhone) {\n            this.registerPhone = registerPhone;\n        }\n\n        /**\n         * 审核备注\n         * \n         * @return verifyRemark\n         */\n\n        public String getVerifyRemark() {\n            return verifyRemark;\n        }\n\n        /**\n         * 审核备注\n         * \n         * @param verifyRemark 审核备注\n         */\n\n        public void setVerifyRemark(String verifyRemark) {\n            this.verifyRemark = verifyRemark;\n        }\n\n        /**\n         * 批量数\n         * \n         * @return batchNum\n         */\n\n        public Integer getBatchNum() {\n            return batchNum;\n        }\n\n        /**\n         * 批量数\n         * \n         * @param batchNum 批量数\n         */\n\n        public void setBatchNum(Integer batchNum) {\n            this.batchNum = batchNum;\n        }\n\n        /**\n         * 是否只限本地配送0:不限制1:限制(粉状液体膏状)\n         * \n         * @return localLimit\n         */\n\n        public Integer getLocalLimit() {\n            return localLimit;\n        }\n\n        /**\n         * 是否只限本地配送0:不限制1:限制(粉状液体膏状)\n         * \n         * @param localLimit 是否只限本地配送0:不限制1:限制(粉状液体膏状)\n         */\n\n        public void setLocalLimit(Integer localLimit) {\n            this.localLimit = localLimit;\n        }\n\n        /**\n         * 一包的数量\n         * \n         * @return stdPackQty\n         */\n\n        public Integer getStdPackQty() {\n            return stdPackQty;\n        }\n\n        /**\n         * 一包的数量\n         * \n         * @param stdPackQty 一包的数量\n         */\n\n        public void setStdPackQty(Integer stdPackQty) {\n            this.stdPackQty = stdPackQty;\n        }\n\n        /**\n         * 正式表产品ID\n         * \n         * @return fromalProductId\n         */\n\n        public Long getFromalProductId() {\n            return fromalProductId;\n        }\n\n        /**\n         * 正式表产品ID\n         * \n         * @param fromalProductId 正式表产品ID\n         */\n\n        public void setFromalProductId(Long fromalProductId) {\n            this.fromalProductId = fromalProductId;\n        }\n\n        /**\n         * 是否强制发票\n         * \n         * @return isMustInvoice\n         */\n\n        public Integer getIsMustInvoice() {\n            return isMustInvoice;\n        }\n\n        /**\n         * 是否强制发票\n         * \n         * @param isMustInvoice 是否强制发票\n         */\n\n        public void setIsMustInvoice(Integer isMustInvoice) {\n            this.isMustInvoice = isMustInvoice;\n        }\n\n        /**\n         * 审核失败原因\n         * \n         * @return verifyFailureType\n         */\n\n        public Integer getVerifyFailureType() {\n            return verifyFailureType;\n        }\n\n        /**\n         * 审核失败原因\n         * \n         * @param verifyFailureType 审核失败原因\n         */\n\n        public void setVerifyFailureType(Integer verifyFailureType) {\n            this.verifyFailureType = verifyFailureType;\n        }\n\n        /**\n         * 产品类型0：普通产品1：主系列产品2：子系列产品3：捆绑产品4：礼品卡5:虚拟商品6:增值服务\n         * \n         * @return productType\n         */\n\n        public Integer getProductType() {\n            return productType;\n        }\n\n        /**\n         * 产品类型0：普通产品1：主系列产品2：子系列产品3：捆绑产品4：礼品卡5:虚拟商品6:增值服务\n         * \n         * @param productType 产品类型0：普通产品1：主系列产品2：子系列产品3：捆绑产品4：礼品卡5:虚拟商品6:增值服务\n         */\n\n        public void setProductType(Integer productType) {\n            this.productType = productType;\n        }\n\n        /**\n         * 是否能被采购\n         * \n         * @return canPurchase\n         */\n\n        public Integer getCanPurchase() {\n            return canPurchase;\n        }\n\n        /**\n         * 是否能被采购\n         * \n         * @param canPurchase 是否能被采购\n         */\n\n        public void setCanPurchase(Integer canPurchase) {\n            this.canPurchase = canPurchase;\n        }\n\n        /**\n         * 标准包装箱sku\n         * \n         * @return stdPackageSku\n         */\n\n        public String getStdPackageSku() {\n            return stdPackageSku;\n        }\n\n        /**\n         * 标准包装箱sku\n         * \n         * @param stdPackageSku 标准包装箱sku\n         */\n\n        public void setStdPackageSku(String stdPackageSku) {\n            this.stdPackageSku = stdPackageSku;\n        }\n\n        /**\n         * 是否需要启用保质期控制0:不启用1：启用\n         * \n         * @return userExpireControl\n         */\n\n        public Integer getUserExpireControl() {\n            return userExpireControl;\n        }\n\n        /**\n         * 是否需要启用保质期控制0:不启用1：启用\n         * \n         * @param userExpireControl 是否需要启用保质期控制0:不启用1：启用\n         */\n\n        public void setUserExpireControl(Integer userExpireControl) {\n            this.userExpireControl = userExpireControl;\n        }\n\n        /**\n         * 批次规则ID\n         * \n         * @return batchRuleId\n         */\n\n        public Long getBatchRuleId() {\n            return batchRuleId;\n        }\n\n        /**\n         * 批次规则ID\n         * \n         * @param batchRuleId 批次规则ID\n         */\n\n        public void setBatchRuleId(Long batchRuleId) {\n            this.batchRuleId = batchRuleId;\n        }\n\n        /**\n         * 产品名称副标题\n         * \n         * @return nameSubtitle\n         */\n\n        public String getNameSubtitle() {\n            return nameSubtitle;\n        }\n\n        /**\n         * 产品名称副标题\n         * \n         * @param nameSubtitle 产品名称副标题\n         */\n\n        public void setNameSubtitle(String nameSubtitle) {\n            this.nameSubtitle = nameSubtitle;\n        }\n\n        /**\n         * 产品特殊类型：1：医药；11：药品；12器械；14-18:处方药；50：电子凭证\n         * \n         * @return specialType\n         */\n\n        public String getSpecialType() {\n            return specialType;\n        }\n\n        /**\n         * 产品特殊类型：1：医药；11：药品；12器械；14-18:处方药；50：电子凭证\n         * \n         * @param specialType 产品特殊类型：1：医药；11：药品；12器械；14-18:处方药；50：电子凭证\n         */\n\n        public void setSpecialType(String specialType) {\n            this.specialType = specialType;\n        }\n\n        /**\n         * 给经销商的批发价\n         * \n         * @return batchPrice\n         */\n\n        public Double getBatchPrice() {\n            return batchPrice;\n        }\n\n        /**\n         * 给经销商的批发价\n         * \n         * @param batchPrice 给经销商的批发价\n         */\n\n        public void setBatchPrice(Double batchPrice) {\n            this.batchPrice = batchPrice;\n        }\n\n        /**\n         * 是否需要批次控制0：不需要1：需要\n         * \n         * @return needBatchControl\n         */\n\n        public Integer getNeedBatchControl() {\n            return needBatchControl;\n        }\n\n        /**\n         * 是否需要批次控制0：不需要1：需要\n         * \n         * @param needBatchControl 是否需要批次控制0：不需要1：需要\n         */\n\n        public void setNeedBatchControl(Integer needBatchControl) {\n            this.needBatchControl = needBatchControl;\n        }\n\n        /**\n         * 销售税率\n         * \n         * @return salesTax\n         */\n\n        public Double getSalesTax() {\n            return salesTax;\n        }\n\n        /**\n         * 销售税率\n         * \n         * @param salesTax 销售税率\n         */\n\n        public void setSalesTax(Double salesTax) {\n            this.salesTax = salesTax;\n        }\n\n        /**\n         * 外部产品编码\n         * \n         * @return outerId\n         */\n\n        public String getOuterId() {\n            return outerId;\n        }\n\n        /**\n         * 外部产品编码\n         * \n         * @param outerId 外部产品编码\n         */\n\n        public void setOuterId(String outerId) {\n            this.outerId = outerId;\n        }\n\n        /**\n         * 商家ID\n         * \n         * @return merchantId\n         */\n\n        public Long getMerchantId() {\n            return merchantId;\n        }\n\n        /**\n         * 商家ID\n         * \n         * @param merchantId 商家ID\n         */\n\n        public void setMerchantId(Long merchantId) {\n            this.merchantId = merchantId;\n        }\n\n        /**\n         * 商家名称\n         * \n         * @return merchantName\n         */\n\n        public String getMerchantName() {\n            return merchantName;\n        }\n\n        /**\n         * 商家名称\n         * \n         * @param merchantName 商家名称\n         */\n\n        public void setMerchantName(String merchantName) {\n            this.merchantName = merchantName;\n        }\n\n        /**\n         * 商家产品主类别（用于报表统计）\n         * \n         * @return masterCategoryId\n         */\n\n        public Long getMasterCategoryId() {\n            return masterCategoryId;\n        }\n\n        /**\n         * 商家产品主类别（用于报表统计）\n         * \n         * @param masterCategoryId 商家产品主类别（用于报表统计）\n         */\n\n        public void setMasterCategoryId(Long masterCategoryId) {\n            this.masterCategoryId = masterCategoryId;\n        }\n\n        /**\n         * 关注等级设置\n         * \n         * @return concernLevel\n         */\n\n        public Integer getConcernLevel() {\n            return concernLevel;\n        }\n\n        /**\n         * 关注等级设置\n         * \n         * @param concernLevel 关注等级设置\n         */\n\n        public void setConcernLevel(Integer concernLevel) {\n            this.concernLevel = concernLevel;\n        }\n\n        /**\n         * 关注理由\n         * \n         * @return concernReason\n         */\n\n        public String getConcernReason() {\n            return concernReason;\n        }\n\n        /**\n         * 关注理由\n         * \n         * @param concernReason 关注理由\n         */\n\n        public void setConcernReason(String concernReason) {\n            this.concernReason = concernReason;\n        }\n\n        /**\n         * 是否可售\n         * \n         * @return canSale\n         */\n\n        public Integer getCanSale() {\n            return canSale;\n        }\n\n        /**\n         * 是否可售\n         * \n         * @param canSale 是否可售\n         */\n\n        public void setCanSale(Integer canSale) {\n            this.canSale = canSale;\n        }\n\n        /**\n         * 是否显示\n         * \n         * @return canShow\n         */\n\n        public Integer getCanShow() {\n            return canShow;\n        }\n\n        /**\n         * 是否显示\n         * \n         * @param canShow 是否显示\n         */\n\n        public void setCanShow(Integer canShow) {\n            this.canShow = canShow;\n        }\n\n        /**\n         * 产品销售税率\n         * \n         * @return prodcutTaxRate\n         */\n\n        public Long getProdcutTaxRate() {\n            return prodcutTaxRate;\n        }\n\n        /**\n         * 产品销售税率\n         * \n         * @param prodcutTaxRate 产品销售税率\n         */\n\n        public void setProdcutTaxRate(Long prodcutTaxRate) {\n            this.prodcutTaxRate = prodcutTaxRate;\n        }\n\n        /**\n         * 是否支持VIP0:不支持1:支持\n         * \n         * @return canVipDiscount\n         */\n\n        public Integer getCanVipDiscount() {\n            return canVipDiscount;\n        }\n\n        /**\n         * 是否支持VIP0:不支持1:支持\n         * \n         * @param canVipDiscount 是否支持VIP0:不支持1:支持\n         */\n\n        public void setCanVipDiscount(Integer canVipDiscount) {\n            this.canVipDiscount = canVipDiscount;\n        }\n\n        /**\n         * 分类名称\n         * \n         * @return categoryName\n         */\n\n        public String getCategoryName() {\n            return categoryName;\n        }\n\n        /**\n         * 分类名称\n         * \n         * @param categoryName 分类名称\n         */\n\n        public void setCategoryName(String categoryName) {\n            this.categoryName = categoryName;\n        }\n\n        /**\n         * 销售价格\n         * \n         * @return salePrice\n         */\n\n        public Double getSalePrice() {\n            return salePrice;\n        }\n\n        /**\n         * 销售价格\n         * \n         * @param salePrice 销售价格\n         */\n\n        public void setSalePrice(Double salePrice) {\n            this.salePrice = salePrice;\n        }\n\n        /**\n         * 库存\n         * \n         * @return stockNum\n         */\n\n        public Long getStockNum() {\n            return stockNum;\n        }\n\n        /**\n         * 库存\n         * \n         * @param stockNum 库存\n         */\n\n        public void setStockNum(Long stockNum) {\n            this.stockNum = stockNum;\n        }\n\n        /**\n         * 商家类别名称\n         * \n         * @return merchantCategoryName\n         */\n\n        public String getMerchantCategoryName() {\n            return merchantCategoryName;\n        }\n\n        /**\n         * 商家类别名称\n         * \n         * @param merchantCategoryName 商家类别名称\n         */\n\n        public void setMerchantCategoryName(String merchantCategoryName) {\n            this.merchantCategoryName = merchantCategoryName;\n        }\n\n        /**\n         * 商家详情\n         * \n         * @return productDescription\n         */\n\n        public String getProductDescription() {\n            return productDescription;\n        }\n\n        /**\n         * 商家详情\n         * \n         * @param productDescription 商家详情\n         */\n\n        public void setProductDescription(String productDescription) {\n            this.productDescription = productDescription;\n        }\n\n        /**\n         * 是否可调拨0：不可以1：可以\n         * \n         * @return isTransfer\n         */\n\n        public Integer getIsTransfer() {\n            return isTransfer;\n        }\n\n        /**\n         * 是否可调拨0：不可以1：可以\n         * \n         * @param isTransfer 是否可调拨0：不可以1：可以\n         */\n\n        public void setIsTransfer(Integer isTransfer) {\n            this.isTransfer = isTransfer;\n        }\n\n        /**\n         * 是否需要审核0：新增未提交；1：需要审核；2：编辑未提交\n         * \n         * @return isSubmit\n         */\n\n        public Integer getIsSubmit() {\n            return isSubmit;\n        }\n\n        /**\n         * 是否需要审核0：新增未提交；1：需要审核；2：编辑未提交\n         * \n         * @param isSubmit 是否需要审核0：新增未提交；1：需要审核；2：编辑未提交\n         */\n\n        public void setIsSubmit(Integer isSubmit) {\n            this.isSubmit = isSubmit;\n        }\n\n        /**\n         * 审核失败类型\n         * \n         * @return verifyFailueType\n         */\n\n        public Integer getVerifyFailueType() {\n            return verifyFailueType;\n        }\n\n        /**\n         * 审核失败类型\n         * \n         * @param verifyFailueType 审核失败类型\n         */\n\n        public void setVerifyFailueType(Integer verifyFailueType) {\n            this.verifyFailueType = verifyFailueType;\n        }\n\n        /**\n         * 产品拼音\n         * \n         * @return productSpell\n         */\n\n        public String getProductSpell() {\n            return productSpell;\n        }\n\n        /**\n         * 产品拼音\n         * \n         * @param productSpell 产品拼音\n         */\n\n        public void setProductSpell(String productSpell) {\n            this.productSpell = productSpell;\n        }\n\n        /**\n         * 产品名称前缀\n         * \n         * @return productNamePrefix\n         */\n\n        public String getProductNamePrefix() {\n            return productNamePrefix;\n        }\n\n        /**\n         * 产品名称前缀\n         * \n         * @param productNamePrefix 产品名称前缀\n         */\n\n        public void setProductNamePrefix(String productNamePrefix) {\n            this.productNamePrefix = productNamePrefix;\n        }\n\n        /**\n         * 审核失败原因\n         * \n         * @return failueReason\n         */\n\n        public String getFailueReason() {\n            return failueReason;\n        }\n\n        /**\n         * 审核失败原因\n         * \n         * @param failueReason 审核失败原因\n         */\n\n        public void setFailueReason(String failueReason) {\n            this.failueReason = failueReason;\n        }\n\n        /**\n         * orgPicUrl\n         * \n         * @return orgPicUrl\n         */\n\n        public String getOrgPicUrl() {\n\n            return orgPicUrl;\n        }\n\n        /**\n         * orgPicUrl\n         * \n         * @param orgPicUrl orgPicUrl\n         */\n\n        public void setOrgPicUrl(String orgPicUrl) {\n            this.orgPicUrl = orgPicUrl;\n        }\n\n        /**\n         * 扩展分类名称\n         * \n         * @return subCategoryName\n         */\n\n        public String getSubCategoryName() {\n            return subCategoryName;\n        }\n\n        /**\n         * 扩展分类名称\n         * \n         * @param subCategoryName 扩展分类名称\n         */\n\n        public void setSubCategoryName(String subCategoryName) {\n            this.subCategoryName = subCategoryName;\n        }\n\n        /**\n         * 扩展分类ID\n         * \n         * @return subCategoryId\n         */\n\n        public Long getSubCategoryId() {\n            return subCategoryId;\n        }\n\n        /**\n         * 扩展分类ID\n         * \n         * @param subCategoryId 扩展分类ID\n         */\n\n        public void setSubCategoryId(Long subCategoryId) {\n            this.subCategoryId = subCategoryId;\n        }\n\n        /**\n         * 7天内日均销量\n         * \n         * @return dailySale\n         */\n\n        public Integer getDailySale() {\n            return dailySale;\n        }\n\n        /**\n         * 7天内日均销量\n         * \n         * @param dailySale 7天内日均销量\n         */\n\n        public void setDailySale(Integer dailySale) {\n            this.dailySale = dailySale;\n        }\n\n        /**\n         * 查看是否有主图\n         * \n         * @return picCount\n         */\n\n        public Integer getPicCount() {\n            return picCount;\n        }\n\n        /**\n         * 查看是否有主图\n         * \n         * @param picCount 查看是否有主图\n         */\n\n        public void setPicCount(Integer picCount) {\n            this.picCount = picCount;\n        }\n\n        /**\n         * 强制下架原因\n         * \n         * @return underCarriageReason\n         */\n\n        public Integer getUnderCarriageReason() {\n            return underCarriageReason;\n        }\n\n        /**\n         * 强制下架原因\n         * \n         * @param underCarriageReason 强制下架原因\n         */\n\n        public void setUnderCarriageReason(Integer underCarriageReason) {\n            this.underCarriageReason = underCarriageReason;\n        }\n\n        /**\n         * 异常信息\n         * \n         * @return errorMessage\n         */\n\n        public String getErrorMessage() {\n            return errorMessage;\n        }\n\n        /**\n         * 异常信息\n         * \n         * @param errorMessage 异常信息\n         */\n        /**\n         * public void setErrorMessage(String errorMessage) { this.errorMessage = errorMessage; } 库存预警数量\n         * \n         * @return alertStockCount\n         */\n\n        public Integer getAlertStockCount() {\n            return alertStockCount;\n        }\n\n        /**\n         * 库存预警数量\n         * \n         * @param alertStockCount 库存预警数量\n         */\n\n        public void setAlertStockCount(Integer alertStockCount) {\n            this.alertStockCount = alertStockCount;\n        }\n\n        /**\n         * 提交时间\n         * \n         * @return submitTime\n         */\n        /**\n         * public Date getSubmitTime() { return submitTime; } 提交时间\n         * \n         * @param submitTime 提交时间\n         */\n        /**\n         * public void setSubmitTime(Date submitTime) { this.submitTime = submitTime; } holdPmPriceRpcVo\n         * \n         * @return holdPmPriceRpcVo\n         */\n\n        /**\n         * holdPmPriceRpcVo\n         * \n         * @param holdPmPrice holdPmPriceRpcVo\n         */\n\n        /**\n         * pmPriceRpcVo\n         * \n         * @return pmPriceRpcVo\n         */\n        /**\n         * public PmPriceRpcVo getPmPrice() { return pmPrice; } pmPriceRpcVo\n         * \n         * @param pmPrice pmPriceRpcVo public void setPmPrice(PmPriceRpcVo pmPrice) { this.pmPrice = pmPrice; }\n         */\n        public Long getFormalPmInfoId() {\n            return formalPmInfoId;\n        }\n\n        public void setFormalPmInfoId(Long formalPmInfoId) {\n            this.formalPmInfoId = formalPmInfoId;\n        }\n\n        /**\n         * 库存状况（产品预览页用）\n         * \n         * @return deliveryInfo\n         */\n\n        public String getDeliveryInfo() {\n            return deliveryInfo;\n        }\n\n        /**\n         * 库存状况（产品预览页用）\n         * \n         * @param deliveryInfo 库存状况（产品预览页用）\n         */\n\n        public void setDeliveryInfo(String deliveryInfo) {\n            this.deliveryInfo = deliveryInfo;\n        }\n\n        /**\n         * 主图链接\n         * \n         * @return picUrl\n         */\n\n        public String getPicUrl() {\n            return picUrl;\n        }\n\n        /**\n         * 主图链接\n         * \n         * @param picUrl 主图链接\n         */\n\n        public void setPicUrl(String picUrl) {\n            this.picUrl = picUrl;\n        }\n\n        /**\n         * 跳到商品详情页的来源0:首次审核页面1：二次审核页面2：审核失败页面\n         * \n         * @return viewFromTag\n         */\n\n        public Integer getViewFromTag() {\n            return viewFromTag;\n        }\n\n        /**\n         * 跳到商品详情页的来源0:首次审核页面1：二次审核页面2：审核失败页面\n         * \n         * @param viewFromTag 跳到商品详情页的来源0:首次审核页面1：二次审核页面2：审核失败页面\n         */\n\n        public void setViewFromTag(Integer viewFromTag) {\n            this.viewFromTag = viewFromTag;\n        }\n\n        public Double getProductNonMemberPrice() {\n            return productNonMemberPrice;\n        }\n\n        /**\n         * 产品售价\n         * \n         * @param productNonMemberPrice 产品售价\n         */\n\n        public void setProductNonMemberPrice(Double productNonMemberPrice) {\n            this.productNonMemberPrice = productNonMemberPrice;\n        }\n\n        public Integer getIsUpdate() {\n            return isUpdate;\n        }\n\n        /**\n         * 是否更新操作\n         * \n         * @param isUpdate 是否更新操作\n         */\n\n        public void setIsUpdate(Integer isUpdate) {\n            this.isUpdate = isUpdate;\n        }\n\n        public List<String> getProductSizeSet() {\n            return productSizeSet;\n        }\n\n        public void setProductSizeSet(List<String> productSizeSet) {\n            this.productSizeSet = productSizeSet;\n        }\n\n        public Boolean getIsMainProduct() {\n            return isMainProduct;\n        }\n\n        /**\n         * 是否主产品\n         * \n         * @param isMainProduct 是否主产品\n         */\n\n        public void setIsMainProduct(Boolean isMainProduct) {\n            this.isMainProduct = isMainProduct;\n        }\n\n        /**\n         * 从图片空间中返回图片ID和URL\n         * \n         * @return productPicIdAndURL\n         */\n\n        public String getProductPicIdAndURL() {\n            return productPicIdAndURL;\n        }\n\n        /**\n         * 从图片空间中返回图片ID和URL\n         * \n         * @param productPicIdAndURL 从图片空间中返回图片ID和URL\n         */\n\n        public void setProductPicIdAndURL(String productPicIdAndURL) {\n            this.productPicIdAndURL = productPicIdAndURL;\n        }\n\n        public Integer getIsTemp() {\n            return isTemp;\n        }\n\n        /**\n         * isTemp\n         * \n         * @param isTemp isTemp\n         */\n\n        public void setIsTemp(Integer isTemp) {\n            this.isTemp = isTemp;\n        }\n\n        public Double getPriceRate() {\n            return priceRate;\n        }\n\n        public void setPriceRate(Double priceRate) {\n            this.priceRate = priceRate;\n        }\n\n        public Integer getPicSpecialType() {\n            return picSpecialType;\n        }\n\n        public void setPicSpecialType(Integer picSpecialType) {\n            this.picSpecialType = picSpecialType;\n        }\n\n        public Integer getExemptStatus() {\n            return exemptStatus;\n        }\n\n        public void setExemptStatus(Integer exemptStatus) {\n            this.exemptStatus = exemptStatus;\n        }\n\n        public String getViolationReasonIds() {\n            return violationReasonIds;\n        }\n\n        /**\n         * 免审商家新增字段:记录违规的原因\n         * \n         * @param violationReasonIds 免审商家新增字段:记录违规的原因\n         */\n\n        public void setViolationReasonIds(String violationReasonIds) {\n            this.violationReasonIds = violationReasonIds;\n        }\n\n        /**\n         * 免审商家新增字段:记录违规的原因文字信息，逗号分隔\n         * \n         * @return violationReasons\n         */\n\n        public String getViolationReasons() {\n            return violationReasons;\n        }\n\n        public void setViolationReasons(String violationReasons) {\n            this.violationReasons = violationReasons;\n        }\n\n        /**\n         * 违规限定修改剩余时间（毫秒数）\n         * \n         * @return remainTime\n         */\n\n        public Long getRemainTime() {\n            return remainTime;\n        }\n\n        /**\n         * 违规限定修改剩余时间（毫秒数）\n         * \n         * @param remainTime 违规限定修改剩余时间（毫秒数）\n         */\n\n        public void setRemainTime(Long remainTime) {\n            this.remainTime = remainTime;\n        }\n\n        public Integer getSubmitOrder() {\n            return submitOrder;\n        }\n\n        public void setSubmitOrder(Integer submitOrder) {\n            this.submitOrder = submitOrder;\n        }\n\n        public Integer getProductSource() {\n            return productSource;\n        }\n\n        public void setProductSource(Integer productSource) {\n            this.productSource = productSource;\n        }\n\n        public String getProductSname() {\n            return productSname;\n        }\n\n        public void setProductSname(String productSname) {\n            this.productSname = productSname;\n        }\n\n        public Integer getCanFenqi() {\n            return canFenqi;\n        }\n\n        public void setCanFenqi(Integer canFenqi) {\n            this.canFenqi = canFenqi;\n        }\n\n        public String getSeason() {\n            return season;\n        }\n\n        public void setSeason(String season) {\n            this.season = season;\n        }\n\n        public Integer getIsKa() {\n            return isKa;\n        }\n\n        public void setIsKa(Integer isKa) {\n            this.isKa = isKa;\n        }\n\n        public Integer getKaMCreateTime() {\n            return kaMCreateTime;\n        }\n\n        public void setKaMCreateTime(Integer kaMCreateTime) {\n            this.kaMCreateTime = kaMCreateTime;\n        }\n\n        public Integer getDeliveryDay() {\n            return deliveryDay;\n        }\n\n        public void setDeliveryDay(Integer deliveryDay) {\n            this.deliveryDay = deliveryDay;\n        }\n\n        public Integer getIsEdit() {\n            return isEdit;\n        }\n\n        public void setIsEdit(Integer isEdit) {\n            this.isEdit = isEdit;\n        }\n\n        public String getProductBrandName() {\n            return productBrandName;\n        }\n\n        public void setProductBrandName(String productBrandName) {\n            this.productBrandName = productBrandName;\n        }\n\n        /**\n         * 类别拼接字符串\n         * \n         * @return categoryStr\n         */\n\n        public String getCategoryStr() {\n            return categoryStr;\n        }\n\n        /**\n         * 类别拼接字符串\n         * \n         * @param categoryStr 类别拼接字符串\n         */\n\n        public void setCategoryStr(String categoryStr) {\n            this.categoryStr = categoryStr;\n        }\n\n        /**\n         * 扩展类别拼接字符串\n         * \n         * @return extendCategoryStr\n         */\n\n        public String getExtendCategoryStr() {\n            return extendCategoryStr;\n        }\n\n        /**\n         * 扩展类别拼接字符串\n         * \n         * @param extendCategoryStr 扩展类别拼接字符串\n         */\n\n        public void setExtendCategoryStr(String extendCategoryStr) {\n            this.extendCategoryStr = extendCategoryStr;\n        }\n\n        public String getCategoryIdStr() {\n            return categoryIdStr;\n        }\n\n        public void setCategoryIdStr(String categoryIdStr) {\n            this.categoryIdStr = categoryIdStr;\n        }\n\n        public String getExtendCategoryIdStr() {\n            return extendCategoryIdStr;\n        }\n\n\n        public Long getDefaultWarehouseId() {\n            return defaultWarehouseId;\n        }\n\n        public void setDefaultWarehouseId(Long defaultWarehouseId) {\n            this.defaultWarehouseId = defaultWarehouseId;\n        }\n\n        public Long getOldCategoryId() {\n            return oldCategoryId;\n        }\n\n        public void setOldCategoryId(Long oldCategoryId) {\n            this.oldCategoryId = oldCategoryId;\n        }\n\n        public Long getOldExtendCategoryId() {\n            return oldExtendCategoryId;\n        }\n\n        public void setOldExtendCategoryId(Long oldExtendCategoryId) {\n            this.oldExtendCategoryId = oldExtendCategoryId;\n        }\n\n        public String getDeletedProductId() {\n            return deletedProductId;\n        }\n\n        public void setDeletedProductId(String deletedProductId) {\n            this.deletedProductId = deletedProductId;\n        }\n\n        public String getReplaceProductSize() {\n            return replaceProductSize;\n        }\n\n        public void setReplaceProductSize(String replaceProductSize) {\n            this.replaceProductSize = replaceProductSize;\n        }\n\n        public List<Long> getMasterCategoryIdList() {\n            return masterCategoryIdList;\n        }\n\n        public void setMasterCategoryIdList(List<Long> masterCategoryIdList) {\n            //this.masterCategoryIdList = masterCategoryIdList;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/bug/Bug_for_zitao.java",
    "content": "package com.alibaba.json.bvt.parser.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.BeanContext;\nimport com.alibaba.fastjson.serializer.ContextValueFilter;\nimport junit.framework.TestCase;\n\npublic class Bug_for_zitao extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model m = new Model();\n        ContextValueFilter v = new ContextValueFilter() {\n\n            public Object process(BeanContext context, Object object, String name, Object value) {\n                if (value == null && context != null && Number.class.isAssignableFrom(context.getFieldClass())) {\n                    return -1;\n                }\n                return null;\n            }\n        };\n\n        String json = JSON.toJSONString(m, v);\n        assertEquals(\"{\\\"value\\\":-1}\", json);\n    }\n\n    public static class Model {\n        public Number value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/bug/EmptyParseArrayTest.java",
    "content": "package com.alibaba.json.bvt.parser.bug;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class EmptyParseArrayTest extends TestCase {\n    public void test_0() throws Exception {\n        Assert.assertNull(JSON.parseArray(\"\", VO.class));\n    }\n    \n    public static class VO {\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/bug/JSONObectNullTest.java",
    "content": "package com.alibaba.json.bvt.parser.bug;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 01/04/2017.\n */\npublic class JSONObectNullTest extends TestCase {\n\n    public void test_for_null() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"value\\\":null}\", Model.class);\n    }\n\n    public void test_for_null2() throws Exception {\n        JSON.parseObject(\"null\");\n    }\n\n    public static class Model {\n        public JSONObject value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/creator/JSONCreatorFactoryTest.java",
    "content": "package com.alibaba.json.bvt.parser.creator;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.ParserConfig;\n\npublic class JSONCreatorFactoryTest extends TestCase {\n\n    public void test_create() throws Exception {\n        Entity entity = new Entity(123, \"菜姐\");\n        String text = JSON.toJSONString(entity);\n\n        Entity entity2 = JSON.parseObject(text, Entity.class);\n        Assert.assertEquals(entity.getId(), entity2.getId());\n        Assert.assertEquals(entity.getName(), entity2.getName());\n    }\n    \n    public void test_create_2() throws Exception {\n        Entity entity = new Entity(123, \"菜姐\");\n        String text = JSON.toJSONString(entity);\n        \n        ParserConfig config = new ParserConfig();\n        config.setAsmEnable(false);\n        \n        Entity entity2 = JSON.parseObject(text, Entity.class, config, 0);\n        Assert.assertEquals(entity.getId(), entity2.getId());\n        Assert.assertEquals(entity.getName(), entity2.getName());\n    }\n\n    public static class Entity {\n\n        private final int    id;\n        private final String name;\n\n        @JSONCreator\n        public static Entity create(@JSONField(name = \"id\") int id, @JSONField(name = \"name\") String name) {\n            return new Entity(id, name);\n        }\n\n        private Entity(int id, String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/creator/JSONCreatorTest.java",
    "content": "package com.alibaba.json.bvt.parser.creator;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.ParserConfig;\n\npublic class JSONCreatorTest extends TestCase {\n\n    public void test_create() throws Exception {\n        Entity entity = new Entity(123, \"菜姐\");\n        String text = JSON.toJSONString(entity);\n        \n        Entity entity2 = JSON.parseObject(text, Entity.class);\n        Assert.assertEquals(entity.getId(), entity2.getId());\n        Assert.assertEquals(entity.getName(), entity2.getName());\n    }\n    \n    public void test_create_2() throws Exception {\n        Entity entity = new Entity(123, \"菜姐\");\n        String text = JSON.toJSONString(entity);\n        \n        ParserConfig config = new ParserConfig();\n        config.setAsmEnable(false);\n        \n        Entity entity2 = JSON.parseObject(text, Entity.class, config, 0);\n        Assert.assertEquals(entity.getId(), entity2.getId());\n        Assert.assertEquals(entity.getName(), entity2.getName());\n    }\n\n    public static class Entity {\n\n        private final int    id;\n        private final String name;\n\n        @JSONCreator\n        public Entity(@JSONField(name = \"id\") int id, @JSONField(name = \"name\") String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/creator/JSONCreatorTest10.java",
    "content": "package com.alibaba.json.bvt.parser.creator;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\npublic class JSONCreatorTest10 extends TestCase {\n    public void test_for_yk() throws Exception {\n        String jsonString = \"{\\\"link\\\":\\\"http://lqgzs.org/fsqhwlnf\\\",\\\"text\\\":\\\"乐动力专享\\\"}\";\n        JSONObject headerJSON = JSONObject.parseObject(jsonString);\n        HeaderDTO headerDTO = headerJSON.toJavaObject(HeaderDTO.class);\n\n        assertEquals(\"http://lqgzs.org/fsqhwlnf\", headerDTO.link);\n        assertEquals(\"乐动力专享\", headerDTO.title);\n    }\n\n    public static class HeaderDTO {\n        private String title;\n        private String link;\n\n        @JSONCreator\n        public HeaderDTO(@JSONField(name = \"text\") String title,@JSONField(name = \"link\") String link) {\n            this.title = title;\n            this.link = link;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/creator/JSONCreatorTest11.java",
    "content": "package com.alibaba.json.bvt.parser.creator;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\npublic class JSONCreatorTest11 extends TestCase {\n    public void test_for_yk() throws Exception {\n        String jsonString = \"[{\\\"image\\\":\\\"https://gw.alicdn.com/tfs/TB1Dtk.ay6guuRjy1XdXXaAwpXa-204-154.png\\\",\"\n            + \"\\\"labelNot\\\":\\\"zh*179753,zh*179745,zh*179743,zh*178230,zh*180695\\\",\\\"link\\\":\\\"https://alimarket.m.taobao\"\n            + \".com/markets/alisports/3_1weeklist\\\",\\\"title\\\":\\\"热卖榜单\\\",\\\"desc\\\":\\\"大家都在买\\\"}]\";\n\n        JSONArray array = JSON.parseArray(jsonString);\n        List<RecommendDTO> dtoList = array.toJavaList(RecommendDTO.class);\n        assertEquals(\"热卖榜单\", dtoList.get(0).title);\n\n        System.out.println(JSON.VERSION);\n    }\n\n    public static class RecommendDTO {\n        private String image;\n        private String link;\n        private String title;\n        private String desc;\n        private String labels;\n        private String labelNot;\n\n\n        @JSONCreator\n        public RecommendDTO(@JSONField(name = \"image\") String image, @JSONField(name = \"link\") String link,\n                            @JSONField(name = \"title\") String title, @JSONField(name = \"desc\") String desc,\n                            @JSONField(name = \"labels\") String labels, @JSONField(name = \"labelNot\") String labelNot) {\n            final String PREFIX = \"//\";\n            this.desc = desc;\n            this.title = title;\n            this.labelNot = labelNot;\n            this.labels = labels;\n            if (image.startsWith(PREFIX)) {\n                this.image = image.substring(2);\n            }\n            if (link.startsWith(PREFIX)) {\n                this.link = link.substring(2);\n            }\n        }\n\n        public String getImage() {\n            return image;\n        }\n\n        public void setImage(String image) {\n            this.image = image;\n        }\n\n        public String getLink() {\n            return link;\n        }\n\n        public void setLink(String link) {\n            this.link = link;\n        }\n\n        public String getTitle() {\n            return title;\n        }\n\n        public void setTitle(String title) {\n            this.title = title;\n        }\n\n        public String getDesc() {\n            return desc;\n        }\n\n        public void setDesc(String desc) {\n            this.desc = desc;\n        }\n\n        public String getLabels() {\n            return labels;\n        }\n\n        public void setLabels(String labels) {\n            this.labels = labels;\n        }\n\n        public String getLabelNot() {\n            return labelNot;\n        }\n\n        public void setLabelNot(String labelNot) {\n            this.labelNot = labelNot;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/creator/JSONCreatorTest2.java",
    "content": "package com.alibaba.json.bvt.parser.creator;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\n\npublic class JSONCreatorTest2 extends TestCase {\n\n    public void test_create() throws Exception {\n        Entity vo = JSON.parseObject(\"{\\\"id\\\":1001,\\\"name\\\":\\\"wenshao\\\",\\\"obj\\\":{\\\"$ref\\\":\\\"..\\\"}}\", Entity.class);\n        Assert.assertEquals(1001, vo.getId());\n        Assert.assertEquals(\"wenshao\", vo.getName());\n        Assert.assertSame(vo, vo.getObj());\n    }\n\n    public void test_create_1() throws Exception {\n        Entity vo = JSON.parseObject(\"{\\\"id\\\":1001,\\\"name\\\":\\\"wenshao\\\",\\\"obj\\\":{\\\"$ref\\\":\\\"$\\\"}}\", Entity.class);\n        Assert.assertEquals(1001, vo.getId());\n        Assert.assertEquals(\"wenshao\", vo.getName());\n        Assert.assertSame(vo, vo.getObj());\n    }\n\n    public static class Entity {\n\n        private final int    id;\n        private final String name;\n        private final Object obj;\n\n        @JSONCreator\n        public Entity(@JSONField(name = \"id\") int id, @JSONField(name = \"name\") String name,\n                      @JSONField(name = \"obj\") Object obj){\n            this.id = id;\n            this.name = name;\n            this.obj = obj;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public Object getObj() {\n            return obj;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/creator/JSONCreatorTest3.java",
    "content": "package com.alibaba.json.bvt.parser.creator;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\n\npublic class JSONCreatorTest3 extends TestCase {\n\n    public void test_create_1() throws Exception {\n        Entity vo = JSON.parseObject(\"{\\\"id\\\":1001,\\\"name\\\":\\\"wenshao\\\",\\\"obj\\\":{\\\"$ref\\\":\\\"$\\\"}}\", Entity.class);\n        Assert.assertEquals(1001, vo.getId());\n        Assert.assertEquals(\"wenshao\", vo.getName());\n        Assert.assertSame(vo, vo.getObj());\n    }\n    \n    public void test_create_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"id\\\":1001,\\\"name\\\":\\\"wenshao\\\",\\\"obj\\\":{\\\"$ref\\\":123}}\", Entity.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_create_error_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"id\\\":1001,\\\"name\\\":\\\"wenshao\\\",\\\"obj\\\":{\\\"$ref\\\":\\\"$\\\",\\\"value\\\":123}}\", Entity.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Entity {\n\n        private final int    id;\n        private final String name;\n        private final Entity obj;\n\n        @JSONCreator\n        public Entity(@JSONField(name = \"id\") int id, @JSONField(name = \"name\") String name,\n                      @JSONField(name = \"obj\") Entity obj){\n            this.id = id;\n            this.name = name;\n            this.obj = obj;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public Entity getObj() {\n            return obj;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/creator/JSONCreatorTest4.java",
    "content": "package com.alibaba.json.bvt.parser.creator;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\n\npublic class JSONCreatorTest4 extends TestCase {\n\n    public void test_create_error() throws Exception {\n        Entity entity = JSON.parseObject(\"{\\\"id\\\":1001,\\\"name\\\":\\\"wenshao\\\",\\\"obj\\\":{\\\"$ref\\\":\\\"$\\\"}}\", Entity.class);\n        assertNotNull(entity);\n        assertEquals(1001, entity.id);\n        assertEquals(\"wenshao\", entity.name);\n        assertSame(entity, entity.obj);\n    }\n\n    public static class Entity {\n\n        private final int    id;\n        private final String name;\n        private Entity obj;\n\n        @JSONCreator\n        public Entity(@JSONField(name = \"id\") int id, @JSONField(name = \"name\") String name,\n                      Entity obj){\n            this.id = id;\n            this.name = name;\n            this.obj = obj;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public Entity getObj() {\n            return obj;\n        }\n\n        public void setObj(Entity obj) {\n            this.obj = obj;\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/creator/JSONCreatorTest5.java",
    "content": "package com.alibaba.json.bvt.parser.creator;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\n\npublic class JSONCreatorTest5 extends TestCase {\n\n    public void test_create_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"id\\\":1001,\\\"name\\\":\\\"wenshao\\\",\\\"obj\\\":{\\\"$ref\\\":\\\"$\\\"}}\", Entity.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Entity {\n\n        private final int    id;\n        private final String name;\n        private final Entity obj;\n        \n        private Entity(int id, String name, Entity obj) {\n            this.id = id;\n            this.name = name;\n            this.obj = obj;\n        }\n        \n        @JSONCreator\n        public static Entity create(@JSONField(name = \"id\") int id, @JSONField(name = \"name\") String name,\n                      Entity obj){\n            return new Entity(id, name, obj);\n        }\n\n\n        public int getId() {\n            return id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public Entity getObj() {\n            return obj;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/creator/JSONCreatorTest6.java",
    "content": "package com.alibaba.json.bvt.parser.creator;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\n\npublic class JSONCreatorTest6 extends TestCase {\n\n    public void test_create_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"id\\\":1001,\\\"name\\\":\\\"wenshao\\\",\\\"obj\\\":{\\\"$ref\\\":\\\"$\\\"}}\", Entity.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Entity {\n\n        private final int    id;\n        private final String name;\n        private final Entity obj;\n        \n        private Entity(int id, String name, Entity obj) {\n            this.id = id;\n            this.name = name;\n            this.obj = obj;\n        }\n        \n        @JSONCreator\n        public static Entity create(@JSONField(name = \"id\") int id, @JSONField(name = \"name\") String name,\n                                    @JSONField(name = \"obj\")  Entity obj){\n            return new Entity(id, name, obj);\n        }\n        \n        \n        @JSONCreator\n        public static Entity create1(@JSONField(name = \"id\") int id, @JSONField(name = \"name\") String name,\n                                     @JSONField(name = \"obj\")   Entity obj){\n            return new Entity(id, name, obj);\n        }\n\n\n        public int getId() {\n            return id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public Entity getObj() {\n            return obj;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/creator/JSONCreatorTest7.java",
    "content": "package com.alibaba.json.bvt.parser.creator;\n\nimport java.util.List;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\n\npublic class JSONCreatorTest7 extends TestCase {\n\n    public void test_create() throws Exception {\n        Entity entity = JSON.parseObject(\"{\\\"values\\\":[{}]}\", Entity.class);\n        Assert.assertEquals(1, entity.values.size());\n        Assert.assertEquals(Value.class, entity.values.get(0).getClass());\n    }\n\n\n    public static class Entity {\n\n        private final List<Value> values;\n\n        @JSONCreator\n        public Entity(@JSONField(name = \"values\") List<Value> values){\n            this.values = values;\n        }\n\n        public List<Value> getValues() {\n            return values;\n        }\n\n    }\n\n    public static class Value {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/creator/JSONCreatorTest8.java",
    "content": "package com.alibaba.json.bvt.parser.creator;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.fasterxml.jackson.databind.annotation.JsonNaming;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.List;\n\npublic class JSONCreatorTest8 extends TestCase {\n\n    public void test_create() throws Exception {\n        String json = \"{\\\"id\\\":1001,\\\"name\\\":\\\"wenshao\\\"}\";\n        Entity entity = JSON.parseObject(json, Entity.class);\n        assertEquals(1001, entity.id);\n        assertEquals(\"wenshao\", entity.name);\n    }\n\n\n    public static class Entity {\n        private int id;\n        private String name;\n\n        @JSONCreator\n        public Entity(@JSONField(name = \"id\") int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/creator/JSONCreatorTest9.java",
    "content": "package com.alibaba.json.bvt.parser.creator;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\npublic class JSONCreatorTest9 extends TestCase {\n    public void test_for_yk() throws Exception {\n        String text = \"{\\\"videoid\\\":\\\"XNzBxOCU0NjYxCg==\\\",\\\"videoName\\\":\\\"xxx\\\"}\";\n\n        YoukuVideoDTO dto = JSON.parseObject(text, YoukuVideoDTO.class);\n        assertEquals(\"XNzBxOCU0NjYxCg==\", dto.videoId);\n        assertEquals(\"xxx\", dto.videoName);\n\n    }\n\n    public static class YoukuVideoDTO {\n        private String videoId;\n\n        private String videoName;\n\n        @JSONCreator\n        public YoukuVideoDTO(@JSONField(name = \"videoid\") String videoId) {\n            this.videoId = videoId;\n        }\n\n        public String getVideoId() {\n            return videoId;\n        }\n\n        public String getVideoName() {\n            return videoName;\n        }\n\n        public void setVideoName(String videoName) {\n            this.videoName = videoName;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/creator/JSONCreatorTest_default_boolean.java",
    "content": "package com.alibaba.json.bvt.parser.creator;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\npublic class JSONCreatorTest_default_boolean extends TestCase {\n\n    public void test_create() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"name\\\":\\\"wenshao\\\"}\", Model.class);\n        Assert.assertFalse(model.id);\n        Assert.assertEquals(\"wenshao\", model.name);\n    }\n\n\n    public static class Model {\n\n        private final boolean id;\n        private final String name;\n\n        @JSONCreator\n        public Model(@JSONField(name=\"id\") boolean id, @JSONField(name=\"name\") String name) {\n            this.id = id;\n            this.name = name;\n        }\n    }\n\n    public static class Value {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/creator/JSONCreatorTest_default_byte.java",
    "content": "package com.alibaba.json.bvt.parser.creator;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\npublic class JSONCreatorTest_default_byte extends TestCase {\n\n    public void test_create() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"name\\\":\\\"wenshao\\\"}\", Model.class);\n        Assert.assertEquals(0, model.id);\n        Assert.assertEquals(\"wenshao\", model.name);\n    }\n\n\n    public static class Model {\n\n        private final byte id;\n        private final String name;\n\n        @JSONCreator\n        public Model(@JSONField(name=\"id\") byte id, @JSONField(name=\"name\") String name) {\n            this.id = id;\n            this.name = name;\n        }\n    }\n\n    public static class Value {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/creator/JSONCreatorTest_default_double.java",
    "content": "package com.alibaba.json.bvt.parser.creator;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\npublic class JSONCreatorTest_default_double extends TestCase {\n\n    public void test_create() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"name\\\":\\\"wenshao\\\"}\", Model.class);\n        Assert.assertTrue(model.id == 0);\n        Assert.assertEquals(\"wenshao\", model.name);\n    }\n\n\n    public static class Model {\n\n        private final double id;\n        private final String name;\n\n        @JSONCreator\n        public Model(@JSONField(name=\"id\") double id, @JSONField(name=\"name\") String name) {\n            this.id = id;\n            this.name = name;\n        }\n    }\n\n    public static class Value {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/creator/JSONCreatorTest_default_float.java",
    "content": "package com.alibaba.json.bvt.parser.creator;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\npublic class JSONCreatorTest_default_float extends TestCase {\n\n    public void test_create() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"name\\\":\\\"wenshao\\\"}\", Model.class);\n        Assert.assertTrue(model.id == 0);\n        Assert.assertEquals(\"wenshao\", model.name);\n    }\n\n\n    public static class Model {\n\n        private final float id;\n        private final String name;\n\n        @JSONCreator\n        public Model(@JSONField(name=\"id\") float id, @JSONField(name=\"name\") String name) {\n            this.id = id;\n            this.name = name;\n        }\n    }\n\n    public static class Value {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/creator/JSONCreatorTest_default_int.java",
    "content": "package com.alibaba.json.bvt.parser.creator;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\npublic class JSONCreatorTest_default_int extends TestCase {\n\n    public void test_create() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"name\\\":\\\"wenshao\\\"}\", Model.class);\n        Assert.assertEquals(0, model.id);\n        Assert.assertEquals(\"wenshao\", model.name);\n    }\n\n\n    public static class Model {\n\n        private final int id;\n        private final String name;\n\n        @JSONCreator\n        public Model(@JSONField(name=\"id\") int id, @JSONField(name=\"name\") String name) {\n            this.id = id;\n            this.name = name;\n        }\n    }\n\n    public static class Value {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/creator/JSONCreatorTest_default_long.java",
    "content": "package com.alibaba.json.bvt.parser.creator;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\npublic class JSONCreatorTest_default_long extends TestCase {\n\n    public void test_create() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"name\\\":\\\"wenshao\\\"}\", Model.class);\n        Assert.assertEquals(0, model.id);\n        Assert.assertEquals(\"wenshao\", model.name);\n    }\n\n\n    public static class Model {\n\n        private final long id;\n        private final String name;\n\n        @JSONCreator\n        public Model(@JSONField(name=\"id\") long id, @JSONField(name=\"name\") String name) {\n            this.id = id;\n            this.name = name;\n        }\n    }\n\n    public static class Value {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/creator/JSONCreatorTest_default_short.java",
    "content": "package com.alibaba.json.bvt.parser.creator;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\npublic class JSONCreatorTest_default_short extends TestCase {\n\n    public void test_create() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"name\\\":\\\"wenshao\\\"}\", Model.class);\n        Assert.assertEquals(0, model.id);\n        Assert.assertEquals(\"wenshao\", model.name);\n    }\n\n\n    public static class Model {\n\n        private final short id;\n        private final String name;\n\n        @JSONCreator\n        public Model(@JSONField(name=\"id\") short id, @JSONField(name=\"name\") String name) {\n            this.id = id;\n            this.name = name;\n        }\n    }\n\n    public static class Value {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/creator/JSONCreatorTest_double.java",
    "content": "package com.alibaba.json.bvt.parser.creator;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.ParserConfig;\n\npublic class JSONCreatorTest_double extends TestCase {\n\n    public void test_create() throws Exception {\n        Entity entity = new Entity(123.45D, \"菜姐\");\n        String text = JSON.toJSONString(entity);\n        \n        Entity entity2 = JSON.parseObject(text, Entity.class);\n        Assert.assertTrue(entity.getId() == entity2.getId());\n        Assert.assertEquals(entity.getName(), entity2.getName());\n    }\n    \n    public void test_create_2() throws Exception {\n        Entity entity = new Entity(123.45D, \"菜姐\");\n        String text = JSON.toJSONString(entity);\n        \n        ParserConfig config = new ParserConfig();\n        \n        Entity entity2 = JSON.parseObject(text, Entity.class, config, 0);\n        Assert.assertTrue(entity.getId() == entity2.getId());\n        Assert.assertEquals(entity.getName(), entity2.getName());\n    }\n\n    public static class Entity {\n\n        private final double    id;\n        private final String name;\n\n        @JSONCreator\n        public Entity(@JSONField(name = \"id\") double id, @JSONField(name = \"name\") String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public double getId() {\n            return id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/creator/JSONCreatorTest_double_obj.java",
    "content": "package com.alibaba.json.bvt.parser.creator;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.ParserConfig;\n\nimport junit.framework.TestCase;\n\npublic class JSONCreatorTest_double_obj extends TestCase {\n\n    public void test_create() throws Exception {\n        Entity entity = new Entity(123.45D, \"菜姐\");\n        String text = JSON.toJSONString(entity);\n\n        Entity entity2 = JSON.parseObject(text, Entity.class);\n        Assert.assertTrue(entity.getId().doubleValue() == entity2.getId().doubleValue());\n        Assert.assertEquals(entity.getName(), entity2.getName());\n    }\n\n    public void test_create_2() throws Exception {\n        Entity entity = new Entity(123.45D, \"菜姐\");\n        String text = JSON.toJSONString(entity);\n\n        ParserConfig config = new ParserConfig();\n\n        Entity entity2 = JSON.parseObject(text, Entity.class, config, 0);\n        Assert.assertTrue(entity.getId().doubleValue() == entity2.getId().doubleValue());\n        Assert.assertEquals(entity.getName(), entity2.getName());\n    }\n\n    public static class Entity {\n\n        private final Double  id;\n        private final String name;\n\n        @JSONCreator\n        public Entity(@JSONField(name = \"id\") Double id, @JSONField(name = \"name\") String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public Double getId() {\n            return id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/creator/JSONCreatorTest_error.java",
    "content": "package com.alibaba.json.bvt.parser.creator;\n\nimport org.junit.Assert;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic class JSONCreatorTest_error extends TestCase {\n\n    public void test_create() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"id\\\":123,\\\"name\\\":\\\"abc\\\"}\", Entity.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Entity {\n\n        private final int    id;\n        private final String name;\n\n        @JSONCreator\n        public Entity(@JSONField(name = \"id\") int id, @JSONField(name = \"name\") String name){\n            throw new UnsupportedOperationException();\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/creator/JSONCreatorTest_error2.java",
    "content": "package com.alibaba.json.bvt.parser.creator;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic class JSONCreatorTest_error2 extends TestCase {\n\n    public void test_create() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"id\\\":123,\\\"name\\\":\\\"abc\\\"}\", Entity.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Entity {\n\n        private final int    id;\n        private final String name;\n        \n        private Entity(int id, String name) {\n            this.id = id;\n            this.name = name;\n        }\n\n        @JSONCreator\n        public static Entity create(@JSONField(name = \"id\") int id, @JSONField(name = \"name\") String name){\n            throw new UnsupportedOperationException();\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/creator/JSONCreatorTest_error3.java",
    "content": "package com.alibaba.json.bvt.parser.creator;\n\nimport org.junit.Assert;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic class JSONCreatorTest_error3 extends TestCase {\n\n    public void test_create() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"id\\\":123,\\\"name\\\":\\\"abc\\\"}\").toJavaObject(Entity.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Entity {\n\n        private final int    id;\n        private final String name;\n\n        @JSONCreator\n        public Entity(@JSONField(name = \"id\") int id, @JSONField(name = \"name\") String name){\n            throw new UnsupportedOperationException();\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/creator/JSONCreatorTest_float.java",
    "content": "package com.alibaba.json.bvt.parser.creator;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.ParserConfig;\n\npublic class JSONCreatorTest_float extends TestCase {\n\n    public void test_create() throws Exception {\n        Entity entity = new Entity(123.45F, \"菜姐\");\n        String text = JSON.toJSONString(entity);\n        \n        Entity entity2 = JSON.parseObject(text, Entity.class);\n        Assert.assertTrue(entity.getId() == entity2.getId());\n        Assert.assertEquals(entity.getName(), entity2.getName());\n    }\n    \n    public void test_create_2() throws Exception {\n        Entity entity = new Entity(123.45F, \"菜姐\");\n        String text = JSON.toJSONString(entity);\n        \n        ParserConfig config = new ParserConfig();\n        \n        Entity entity2 = JSON.parseObject(text, Entity.class, config, 0);\n        Assert.assertTrue(entity.getId() == entity2.getId());\n        Assert.assertEquals(entity.getName(), entity2.getName());\n    }\n\n    public static class Entity {\n\n        private final float    id;\n        private final String name;\n\n        @JSONCreator\n        public Entity(@JSONField(name = \"id\") float id, @JSONField(name = \"name\") String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public float getId() {\n            return id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/creator/JSONCreatorTest_float_obj.java",
    "content": "package com.alibaba.json.bvt.parser.creator;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.ParserConfig;\n\nimport junit.framework.TestCase;\n\npublic class JSONCreatorTest_float_obj extends TestCase {\n\n    public void test_create() throws Exception {\n        Entity entity = new Entity(123.45F, \"菜姐\");\n        String text = JSON.toJSONString(entity);\n\n        Entity entity2 = JSON.parseObject(text, Entity.class);\n        Assert.assertTrue(entity.getId().floatValue() == entity2.getId().floatValue());\n        Assert.assertEquals(entity.getName(), entity2.getName());\n    }\n\n    public void test_create_2() throws Exception {\n        Entity entity = new Entity(123.45F, \"菜姐\");\n        String text = JSON.toJSONString(entity);\n\n        ParserConfig config = new ParserConfig();\n\n        Entity entity2 = JSON.parseObject(text, Entity.class, config, 0);\n        Assert.assertTrue(entity.getId().floatValue() == entity2.getId().floatValue());\n        Assert.assertEquals(entity.getName(), entity2.getName());\n    }\n\n    public static class Entity {\n\n        private final Float  id;\n        private final String name;\n\n        @JSONCreator\n        public Entity(@JSONField(name = \"id\") Float id, @JSONField(name = \"name\") String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public Float getId() {\n            return id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/AbstractSerializeTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\n\npublic class AbstractSerializeTest extends TestCase {\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.bug.AbstractSerializeTest\");\n\n        ObjectDeserializer serializerB = ParserConfig.getGlobalInstance().getDeserializer(B.class);\n        ParserConfig.getGlobalInstance().putDeserializer(A.class, serializerB);\n    }\n\n    protected void tearDown() throws Exception {\n        ParserConfig.getGlobalInstance().putDeserializer(A.class, null);\n    }\n\n    public void test_mapping_0() throws Exception {\n        String text = \"{\\\"@type\\\":\\\"com.alibaba.json.bvt.parser.deser.AbstractSerializeTest$A\\\"}\";\n\n        B b = (B) JSON.parse(text);\n        Assert.assertNotNull(b);\n    }\n\n    public void test_mapping_1() throws Exception {\n        String text = \"{\\\"@type\\\":\\\"com.alibaba.json.bvt.parser.deser.AbstractSerializeTest$A\\\",\\\"id\\\":123}\";\n\n        B b = (B) JSON.parse(text);\n        Assert.assertNotNull(b);\n        Assert.assertEquals(123, b.getId());\n    }\n\n    public void test_mapping_2() throws Exception {\n        String text = \"{\\\"@type\\\":\\\"com.alibaba.json.bvt.parser.deser.AbstractSerializeTest$A\\\",\\\"id\\\":234,\\\"name\\\":\\\"abc\\\"}\";\n\n        B b = (B) JSON.parse(text);\n        Assert.assertNotNull(b);\n        Assert.assertEquals(234, b.getId());\n        Assert.assertEquals(\"abc\", b.getName());\n    }\n\n    public void test_mapping_group() throws Exception {\n        String text = \"{\\\"a\\\":{\\\"id\\\":234,\\\"name\\\":\\\"abc\\\"}}\";\n\n        G g = JSON.parseObject(text, G.class);\n        Assert.assertTrue(g.getA() instanceof B);\n    }\n\n    public static class G {\n\n        private A a;\n\n        public A getA() {\n            return a;\n        }\n\n        public void setA(A a) {\n            this.a = a;\n        }\n\n    }\n\n    public static abstract class A {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n    }\n\n    public static class B extends A {\n\n        private String name;\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/AbstractSerializeTest2.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.ParserConfig;\n\npublic class AbstractSerializeTest2 extends TestCase {\n\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.bug.AbstractSerializeTest2\");\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.parser.deser.AbstractSerializeTest2\");\n    }\n\n    protected void tearDown() throws Exception {\n        ParserConfig.getGlobalInstance().putDeserializer(A.class, null);\n    }\n\n    public void test_mapping_0() throws Exception {\n        String text = \"{\\\"@type\\\":\\\"com.alibaba.json.bvt.parser.deser.AbstractSerializeTest2$A\\\"}\";\n\n        B b = (B) JSON.parse(text);\n        Assert.assertNotNull(b);\n    }\n\n    public void test_mapping_1() throws Exception {\n        String text = \"{\\\"@type\\\":\\\"com.alibaba.json.bvt.parser.deser.AbstractSerializeTest2$A\\\",\\\"id\\\":123}\";\n\n        B b = (B) JSON.parse(text);\n        Assert.assertNotNull(b);\n        Assert.assertEquals(123, b.getId());\n    }\n\n    public void test_mapping_2() throws Exception {\n        String text = \"{\\\"@type\\\":\\\"com.alibaba.json.bvt.parser.deser.AbstractSerializeTest2$A\\\",\\\"id\\\":234,\\\"name\\\":\\\"abc\\\"}\";\n\n        B b = (B) JSON.parse(text);\n        Assert.assertNotNull(b);\n        Assert.assertEquals(234, b.getId());\n        Assert.assertEquals(\"abc\", b.getName());\n    }\n\n    public void test_mapping_group() throws Exception {\n        String text = \"{\\\"a\\\":{\\\"id\\\":234,\\\"name\\\":\\\"abc\\\"}}\";\n\n        G g = JSON.parseObject(text, G.class);\n        Assert.assertTrue(g.getA() instanceof B);\n    }\n\n    public static class G {\n\n        private A a;\n\n        public A getA() {\n            return a;\n        }\n\n        public void setA(A a) {\n            this.a = a;\n        }\n\n    }\n\n    @JSONType(mappingTo = B.class)\n    public static abstract class A {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n    }\n\n    public static class B extends A {\n\n        private String name;\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/BigDecimalDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.math.BigDecimal;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.BigDecimalCodec;\n\npublic class BigDecimalDeserializerTest extends TestCase {\n\n    public void test_bigdecimal() throws Exception {\n        Assert.assertEquals(BigDecimal.ZERO, JSON.parseObject(\"0\", BigDecimal.class));\n        Assert.assertEquals(BigDecimal.ZERO, JSON.parseObject(\"'0'\", BigDecimal.class));\n        Assert.assertEquals(new BigDecimal(\"0.0\"), JSON.parseObject(\"0.0\", BigDecimal.class));\n        Assert.assertEquals(new BigDecimal(\"0.0\"), JSON.parseObject(\"'0.0'\", BigDecimal.class));\n\n        Assert.assertEquals(null, JSON.parseObject(\"null\", BigDecimal.class));\n\n        DefaultJSONParser parser = new DefaultJSONParser(\"null\", ParserConfig.getGlobalInstance(), JSON.DEFAULT_PARSER_FEATURE);\n        Assert.assertEquals(null, BigDecimalCodec.instance.deserialze(parser, null, null));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/BigDecimalTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.math.BigDecimal;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class BigDecimalTest extends TestCase {\n    public void test_null () throws Exception {\n        Assert.assertNull(JSON.parseObject(\"null\", VO.class));\n        Assert.assertNull(JSON.parseObject(\"{value:null}\", VO.class).getValue());\n        Assert.assertNull(JSON.parseObject(\"{'value':null}\", VO.class).getValue());\n        Assert.assertNull(JSON.parseObject(\"{\\\"value\\\":null}\", VO.class).getValue());\n        Assert.assertNull(JSON.parseArray(\"null\", BigDecimal.class));\n        Assert.assertNull(JSON.parseObject(\"null\", BigDecimal.class));\n    }\n    \n    public void test_postfix () throws Exception {\n        Assert.assertEquals(new BigDecimal (\"123\"), JSON.parseObject(\"123L\", BigDecimal.class));\n        Assert.assertEquals(new BigDecimal (\"123\"), JSON.parseObject(\"123D\", BigDecimal.class));\n        Assert.assertEquals(new BigDecimal (\"123\"), JSON.parseObject(\"123F\", BigDecimal.class));\n        Assert.assertEquals(new BigDecimal (\"123\"), JSON.parseObject(\"123S\", BigDecimal.class));\n        Assert.assertEquals(new BigDecimal (\"123\"), JSON.parseObject(\"123B\", BigDecimal.class));\n    }\n    \n    public void test_className() throws Exception {\n        Assert.assertEquals(\"123.\", JSON.toJSONString(new BigDecimal(\"123\"), SerializerFeature.WriteClassName));\n        Assert.assertEquals(\"123.00\", JSON.toJSONString(new BigDecimal(\"123.00\"), SerializerFeature.WriteClassName));\n        Assert.assertEquals(\"123.45\", JSON.toJSONString(new BigDecimal(\"123.45\"), SerializerFeature.WriteClassName));\n        Assert.assertEquals(new BigDecimal(\"123\"), JSON.parse(\"123.\"));\n    }\n    \n    public static class VO {\n\n        private BigDecimal value;\n\n        public BigDecimal getValue() {\n            return value;\n        }\n\n        public void setValue(BigDecimal value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/BigIntegerDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.math.BigInteger;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class BigIntegerDeserializerTest extends TestCase {\n\n    public void test_1() throws Exception {\n\n        BigInteger value = JSON.parseObject(\"'123'\", BigInteger.class);\n\n        Assert.assertEquals(new BigInteger(\"123\"), value);\n    }\n\n    public void test_vo() throws Exception {\n\n        VO vo = JSON.parseObject(\"{\\\"value\\\":123}\", VO.class);\n\n        Assert.assertEquals(new BigInteger(\"123\"), vo.getValue());\n    }\n\n    public void test_vo_null() throws Exception {\n\n        VO vo = JSON.parseObject(\"{\\\"value\\\":null}\", VO.class);\n\n        Assert.assertEquals(null, vo.getValue());\n    }\n\n    public void test_vo2() throws Exception {\n\n        VO2 vo = JSON.parseObject(\"{\\\"value\\\":123}\", VO2.class);\n\n        Assert.assertEquals(new BigInteger(\"123\"), vo.getValue());\n    }\n\n    public void test_array() throws Exception {\n        List<BigInteger> list = JSON.parseArray(\"[123,345]\", BigInteger.class);\n        Assert.assertEquals(new BigInteger(\"123\"), list.get(0));\n        Assert.assertEquals(new BigInteger(\"345\"), list.get(1));\n    }\n\n    public static class VO {\n\n        private BigInteger value;\n\n        public BigInteger getValue() {\n            return value;\n        }\n\n        public void setValue(BigInteger value) {\n            this.value = value;\n        }\n    }\n\n    private static class VO2 {\n\n        private BigInteger value;\n\n        public BigInteger getValue() {\n            return value;\n        }\n\n        public void setValue(BigInteger value) {\n            this.value = value;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/BooleanDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.BooleanCodec;\n\npublic class BooleanDeserializerTest extends TestCase {\n\n    public void test_boolean() throws Exception {\n        Assert.assertEquals(Boolean.TRUE, JSON.parseObject(\"true\", Boolean.class));\n        Assert.assertEquals(Boolean.FALSE, JSON.parseObject(\"false\", Boolean.class));\n\n        Assert.assertEquals(Boolean.TRUE, JSON.parseObject(\"'true'\", Boolean.class));\n        Assert.assertEquals(Boolean.FALSE, JSON.parseObject(\"'false'\", Boolean.class));\n\n        Assert.assertEquals(Boolean.TRUE, JSON.parseObject(\"1\", Boolean.class));\n        Assert.assertEquals(Boolean.FALSE, JSON.parseObject(\"0\", Boolean.class));\n\n        Assert.assertEquals(null, JSON.parseObject(\"null\", Boolean.class));\n\n        {\n            DefaultJSONParser parser = new DefaultJSONParser(\"null\", ParserConfig.getGlobalInstance(),\n                                                             JSON.DEFAULT_PARSER_FEATURE);\n            Assert.assertEquals(null, BooleanCodec.instance.deserialze(parser, null, null));\n            parser.close();\n        }\n        Assert.assertEquals(JSONToken.TRUE, BooleanCodec.instance.getFastMatchToken());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/BooleanFieldDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class BooleanFieldDeserializerTest extends TestCase {\n\n    public void test_0() throws Exception {\n        Entity a = JSON.parseObject(\"{f1:null, f2:null}\", Entity.class);\n        Assert.assertEquals(true, a.isF1());\n        Assert.assertEquals(null, a.getF2());\n    }\n\n    public static class Entity {\n\n        private boolean f1 = true;\n        private Boolean f2 = Boolean.TRUE;\n\n        public boolean isF1() {\n            return f1;\n        }\n\n        public void setF1(boolean f1) {\n            this.f1 = f1;\n        }\n\n        public Boolean getF2() {\n            return f2;\n        }\n\n        public void setF2(Boolean f2) {\n            this.f2 = f2;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/BooleanFieldDeserializerTest2.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic class BooleanFieldDeserializerTest2 extends TestCase {\n\n    public void test_0() throws Exception {\n        Entity a = JSON.parseObject(\"{\\\"f1\\\":true,\\\"f2\\\":null}\", Entity.class);\n        Assert.assertEquals(true, a.getF1());\n        Assert.assertEquals(null, a.getF2());\n    }\n    \n    public void test_1() throws Exception {\n        Entity a = JSON.parseObject(\"{\\\"f1\\\":1,\\\"f2\\\":null}\", Entity.class);\n        Assert.assertEquals(true, a.getF1());\n        Assert.assertEquals(null, a.getF2());\n    }\n    \n    public void test_2() throws Exception {\n        Entity a = JSON.parseObject(\"{\\\"f1\\\":\\\"true\\\",\\\"f2\\\":null}\", Entity.class);\n        Assert.assertEquals(true, a.getF1());\n        Assert.assertEquals(null, a.getF2());\n    }\n\n    public void test_3() throws Exception {\n        Entity a = JSON.parseObject(\"{\\\"f1\\\":false,\\\"f2\\\":null}\", Entity.class);\n        Assert.assertEquals(false, a.getF1());\n        Assert.assertEquals(null, a.getF2());\n    }\n    \n    public static class Entity {\n\n        private final Boolean f1;\n        private final Boolean f2;\n\n        @JSONCreator\n        public Entity(@JSONField(name = \"f1\") Boolean f1, @JSONField(name = \"f2\") Boolean f2){\n            this.f1 = f1;\n            this.f2 = f2;\n        }\n\n        public Boolean getF1() {\n            return f1;\n        }\n\n        public Boolean getF2() {\n            return f2;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/CharArrayDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport com.alibaba.fastjson.JSON;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\npublic class CharArrayDeserializerTest extends TestCase {\n\n    public void test_charArray() throws Exception {\n        Assert.assertEquals(null, JSON.parseObject(\"{}\", VO.class).getValue());\n        Assert.assertEquals(null, JSON.parseObject(\"{value:null}\", VO.class).getValue());\n        Assert.assertEquals(null, JSON.parseObject(\"{'value':null}\", VO.class).getValue());\n        Assert.assertEquals(null, JSON.parseObject(\"{\\\"value\\\":null}\", VO.class).getValue());\n        Assert.assertEquals(0, JSON.parseObject(\"{\\\"value\\\":\\\"\\\"}\", VO.class).getValue().length);\n        Assert.assertEquals(2, JSON.parseObject(\"{\\\"value\\\":\\\"ab\\\"}\", VO.class).getValue().length);\n        Assert.assertEquals(\"ab\", new String(JSON.parseObject(\"{\\\"value\\\":\\\"ab\\\"}\", VO.class).getValue()));\n        Assert.assertEquals(\"12\", new String(JSON.parseObject(\"{\\\"value\\\":12}\", VO.class).getValue()));\n        Assert.assertEquals(\"12\", new String(JSON.parseObject(\"{\\\"value\\\":12L}\", VO.class).getValue()));\n        Assert.assertEquals(\"12\", new String(JSON.parseObject(\"{\\\"value\\\":12S}\", VO.class).getValue()));\n        Assert.assertEquals(\"12\", new String(JSON.parseObject(\"{\\\"value\\\":12B}\", VO.class).getValue()));\n        Assert.assertEquals(\"{}\", new String(JSON.parseObject(\"{\\\"value\\\":{}}\", VO.class).getValue()));\n    }\n\n    public static class VO {\n\n        private char[] value;\n\n        public char[] getValue() {\n            return value;\n        }\n\n        public void setValue(char[] value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/ClassTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class ClassTest extends TestCase {\n\n    public void test_null() throws Exception {\n        Assert.assertNull(JSON.parseObject(\"null\", Class.class));\n        Assert.assertNull(JSON.parseObject(\"null\", Class[].class));\n        Assert.assertNull(JSON.parseArray(\"null\", Class.class));\n        Assert.assertNull(JSON.parseObject(\"{value:null}\", VO.class).getValue());\n    }\n\n    public void test_primitive() throws Exception {\n        Assert.assertEquals(byte.class, JSON.parseObject(\"\\\"byte\\\"\", Class.class));\n        Assert.assertEquals(short.class, JSON.parseObject(\"\\\"short\\\"\", Class.class));\n        Assert.assertEquals(int.class, JSON.parseObject(\"\\\"int\\\"\", Class.class));\n        Assert.assertEquals(long.class, JSON.parseObject(\"\\\"long\\\"\", Class.class));\n        Assert.assertEquals(float.class, JSON.parseObject(\"\\\"float\\\"\", Class.class));\n        Assert.assertEquals(double.class, JSON.parseObject(\"\\\"double\\\"\", Class.class));\n        Assert.assertEquals(char.class, JSON.parseObject(\"\\\"char\\\"\", Class.class));\n        Assert.assertEquals(boolean.class, JSON.parseObject(\"\\\"boolean\\\"\", Class.class));\n    }\n\n    public void test_array() throws Exception {\n        Assert.assertEquals(int[].class, JSON.parseObject(\"\\\"[int\\\"\", Class.class));\n        Assert.assertEquals(int[][].class, JSON.parseObject(\"\\\"[[int\\\"\", Class.class));\n        Assert.assertEquals(int[][][][].class, JSON.parseObject(\"\\\"[[[[int\\\"\", Class.class));\n    }\n\n    public static class VO {\n\n        private Class<?> value;\n\n        public Class<?> getValue() {\n            return value;\n        }\n\n        public void setValue(Class<?> value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/CollectionFieldTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.util.Collection;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class CollectionFieldTest extends TestCase {\n\n    public void test_null() throws Exception {\n        Entity value = JSON.parseObject(\"{value:null}\", Entity.class);\n        Assert.assertNull(value.getValue());\n    }\n\n    public void test_empty() throws Exception {\n        Entity value = JSON.parseObject(\"{value:[]}\", Entity.class);\n        Assert.assertEquals(0, value.getValue().size());\n    }\n\n    private static class Entity {\n\n        private Collection value;\n\n        public Collection getValue() {\n            return value;\n        }\n\n        public void setValue(Collection value) {\n            this.value = value;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/ConcurrentHashMapDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.util.IdentityHashMap;\nimport java.util.concurrent.ConcurrentHashMap;\nimport java.util.concurrent.ConcurrentMap;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class ConcurrentHashMapDeserializerTest extends TestCase {\n    @SuppressWarnings(\"rawtypes\")\n    public void test_1 () throws Exception {\n        ConcurrentHashMap map = JSON.parseObject(\"{}\", ConcurrentHashMap.class);\n        Assert.assertEquals(0, map.size());\n    }\n\n    @SuppressWarnings(\"rawtypes\")\n    public void test_2() throws Exception {\n        ConcurrentMap map = JSON.parseObject(\"{}\", ConcurrentMap.class);\n        Assert.assertEquals(0, map.size());\n    }\n    \n    @SuppressWarnings(\"rawtypes\")\n    public void test_className() throws Exception {\n        ConcurrentHashMap map = (ConcurrentHashMap) JSON.parse(\"{\\\"@type\\\":\\\"java.util.concurrent.ConcurrentHashMap\\\"}\");\n        Assert.assertEquals(0, map.size());\n    }\n    \n    @SuppressWarnings(\"rawtypes\")\n    public void test_className1() throws Exception {\n        IdentityHashMap map = (IdentityHashMap) JSON.parse(\"{\\\"@type\\\":\\\"java.util.IdentityHashMap\\\"}\");\n        Assert.assertEquals(0, map.size());\n    }\n    \n    @SuppressWarnings(\"rawtypes\")\n    public void test_className2() throws Exception {\n        IdentityHashMap map = (IdentityHashMap) JSON.parse(\"{\\\"@type\\\":\\\"java.util.IdentityHashMap\\\", \\\"id\\\":123}\");\n        Assert.assertEquals(1, map.size());\n    }\n    \n    public void test_null () throws Exception {\n        Assert.assertEquals(null, JSON.parseObject(\"null\", ConcurrentHashMap.class));\n        Assert.assertEquals(null, JSON.parseObject(\"null\", ConcurrentMap.class));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/ConstructorErrorTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class ConstructorErrorTest extends TestCase {\n\n    public void test_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{}\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Model {\n\n        public Model(){\n            throw new IllegalStateException();\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/ConstructorErrorTest_initError.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class ConstructorErrorTest_initError extends TestCase {\n\n    public void test_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{}\", Model.class, Feature.InitStringFieldAsEmpty);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Model {\n        \n        public Model(){\n            \n        }\n        \n        public void setName(String name) {\n            throw new IllegalStateException();\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/ConstructorErrorTest_initError_private.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class ConstructorErrorTest_initError_private extends TestCase {\n\n    public void test_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{}\", Model.class, Feature.InitStringFieldAsEmpty);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    private static class Model {\n        \n        public Model(){\n            \n        }\n        \n        public void setName(String name) {\n            throw new IllegalStateException();\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/ConstructorErrorTest_inner.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class ConstructorErrorTest_inner extends TestCase {\n\n    public void test_error() throws Exception {\n        JSONObject obj = new JSONObject();\n        obj.put(\"value\", new JSONObject());\n        Exception error = null;\n        try {\n            obj.toJavaObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Model {\n        public Value value;\n\n        public Model(){\n        }\n        \n        public class Value {\n            public Value() {\n                throw new IllegalStateException();\n            }\n        }\n    }\n    \n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/ConstructorErrorTest_private.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class ConstructorErrorTest_private extends TestCase {\n\n    public void test_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{}\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    private static class Model {\n\n        public Model(){\n            throw new IllegalStateException();\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/DefaultObjectDeserializerTest10.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class DefaultObjectDeserializerTest10 extends TestCase {\n\n    public <T extends A> void test_1() throws Exception {\n        T[] list = JSON.parseObject(\"[{}]\", new TypeReference<T[]>() {\n        });\n        Assert.assertEquals(1, list.length);\n        Assert.assertNotNull(list[0]);\n        Assert.assertTrue(list[0] instanceof A);\n    }\n\n    public static class A {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/DefaultObjectDeserializerTest11.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.json.bvt.parser.deser.DefaultObjectDeserializerTest4.Entity;\n\npublic class DefaultObjectDeserializerTest11 extends TestCase {\n\n    public void test_0() throws Exception {\n        A a = new A();\n        DefaultJSONParser parser = new DefaultJSONParser(\"{\\\"id\\\":123}\", ParserConfig.getGlobalInstance());\n        parser.parseObject(a);\n    }\n\n    public static class A {\n\n        private long id;\n\n        public long getId() {\n            return id;\n        }\n\n        public void setId(long id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/DefaultObjectDeserializerTest12.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.ParserConfig;\n\npublic class DefaultObjectDeserializerTest12 extends TestCase {\n\n    public void test_list() throws Exception {\n        A a = new A();\n        DefaultJSONParser parser = new DefaultJSONParser(\"{\\\"values\\\":[]}\", ParserConfig.getGlobalInstance());\n        parser.parseObject(a);\n        parser.close();\n    }\n\n    public static class A {\n\n        private List values;\n\n        public List getValues() {\n            return values;\n        }\n\n        public void setValues(List values) {\n            this.values = values;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/DefaultObjectDeserializerTest2.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.SortedMap;\nimport java.util.TreeMap;\nimport java.util.concurrent.ConcurrentMap;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.ParserConfig;\n\n@SuppressWarnings(\"deprecation\")\npublic class DefaultObjectDeserializerTest2 extends TestCase {\n\n\n    public void test_1() throws Exception {\n        String input = \"{'map':{}}\";\n        DefaultJSONParser parser = new DefaultJSONParser(input, ParserConfig.getGlobalInstance(), JSON.DEFAULT_PARSER_FEATURE);\n\n\n        SortedMap<String, SortedMap> map = JSON.parseObject(input, new TypeReference<SortedMap<String, SortedMap>>() {\n        }.getType());\n\n        Assert.assertEquals(TreeMap.class, map.get(\"map\").getClass());\n    }\n\n\n\n    public void test_8() throws Exception {\n        String input = \"{'map':{}}\";\n\n        ConcurrentMap<String, HashMap> map = JSON.parseObject(input, new TypeReference<ConcurrentMap<String, HashMap>>() {\n        }.getType());\n\n        Assert.assertEquals(HashMap.class, map.get(\"map\").getClass());\n    }\n\n    public static interface Map1<K, V> extends Map<K, V> {\n\n    }\n    \n    public static class Map2<K, V> extends HashMap<K, V> {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/DefaultObjectDeserializerTest3.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.util.HashMap;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\n@SuppressWarnings(\"rawtypes\")\npublic class DefaultObjectDeserializerTest3 extends TestCase {\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.bug.AbstractSerializeTest2\");\n    }\n\n    public void test_0() throws Exception {\n        HashMap o = (HashMap) JSON.parse(\"{\\\"@type\\\":\\\"java.lang.Cloneable\\\"}\");\n        Assert.assertEquals(0, o.size());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/DefaultObjectDeserializerTest4.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\n\npublic class DefaultObjectDeserializerTest4 extends TestCase {\n\n    public void test_0() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"{\\\"id\\\":3, \\\"name\\\":\\\"xx\\\"}\", ParserConfig.getGlobalInstance());\n\n        Entity entity = new Entity();\n        parser.parseObject(entity);\n    }\n\n    public void test_1() throws Exception {\n        JSON.parseObject(\"{\\\"id\\\":3, \\\"name\\\":\\\"xx\\\"}\", Entity.class, 0, Feature.IgnoreNotMatch);\n    }\n\n    public static class Entity {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/DefaultObjectDeserializerTest5.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class DefaultObjectDeserializerTest5 extends TestCase {\n\n    public void test_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[]\", new TypeReference<Map<Object, Object>>() {\n            });\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\",]\", new TypeReference<Map<Object, Object>>() {\n            });\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_3() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[{},{\\\"$ref\\\":0}]\",\n                             new TypeReference<List<Map<Object, Object>>>() {\n                             });\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_4() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[{},{\\\"$ref\\\":\\\"$[0]\\\",}]\",\n                             new TypeReference<List<Map<Object, Object>>>() {\n                             });\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_0() throws Exception {\n        List<Map<Object, Object>> list = JSON.parseObject(\"[{},{\\\"$ref\\\":\\\"$[0]\\\"}]\",\n                                                          new TypeReference<List<Map<Object, Object>>>() {\n                                                          });\n        Assert.assertSame(list.get(0), list.get(1));\n    }\n\n    public void test_1() throws Exception {\n        Map<Object, Map<Object, Object>> map = JSON.parseObject(\"{\\\"1\\\":{},\\\"2\\\":{\\\"$ref\\\":\\\"$\\\"}}\",\n                                                                new TypeReference<Map<Object, Map<Object, Object>>>() {\n                                                                });\n        Assert.assertSame(map, map.get(\"2\"));\n    }\n\n    public void test_2() throws Exception {\n        Map<Object, Map<Object, Object>> map = JSON.parseObject(\"{\\\"1\\\":{},\\\"2\\\":{\\\"$ref\\\":\\\"..\\\"}}\",\n                                                                new TypeReference<Map<Object, Map<Object, Object>>>() {\n                                                                });\n        Assert.assertSame(map, map.get(\"2\"));\n    }\n\n  \n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/DefaultObjectDeserializerTest6.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic class DefaultObjectDeserializerTest6 extends TestCase {\n\n    public void test_0() throws Exception {\n        Entity vo = JSON.parseObject(\"{\\\"value\\\":{\\\"1\\\":{},\\\"2\\\":{\\\"$ref\\\":\\\"$.value.1\\\"}}}\", Entity.class);\n        Assert.assertSame(vo.getValue().get(\"1\"), vo.getValue().get(\"2\"));\n    }\n    \n    public void test_1() throws Exception {\n        Entity vo = JSON.parseObject(\"{\\\"value\\\":{\\\"1\\\":{},\\\"2\\\":{\\\"$ref\\\":\\\"..\\\"}}}\", Entity.class);\n        Assert.assertSame(vo.getValue(), vo.getValue().get(\"2\"));\n    }\n    \n    public static class Entity {\n\n        private final Map<Object, Map<Object, Object>> value;\n\n        @JSONCreator\n        public Entity(@JSONField(name = \"value\") Map<Object, Map<Object, Object>> value){\n            this.value = value;\n        }\n\n        public Map<Object, Map<Object, Object>> getValue() {\n            return value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/DefaultObjectDeserializerTest7.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class DefaultObjectDeserializerTest7 extends TestCase {\n\n    public void test_0() throws Exception {\n        VO<A> vo = JSON.parseObject(\"{\\\"value\\\":[{\\\"id\\\":123}]}\", new TypeReference<VO<A>>() {\n        });\n        A a = vo.getValue()[0];\n        Assert.assertEquals(123, a.getId());\n    }\n    \n    public static class VO<T> {\n\n        private T[] value;\n\n        public T[] getValue() {\n            return value;\n        }\n\n        public void setValue(T[] value) {\n            this.value = value;\n        }\n\n    }\n\n    public static class A {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/DefaultObjectDeserializerTest8.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class DefaultObjectDeserializerTest8 extends TestCase {\n\n    public <T> void test_1() throws Exception {\n        VO<T> vo = JSON.parseObject(\"{\\\"value\\\":[{\\\"id\\\":123}]}\", new TypeReference<VO<T>>() {\n        });\n        Assert.assertNotNull(vo.getValue()[0]);\n        Assert.assertTrue(vo.getValue()[0] instanceof Map);\n    }\n\n    public static class VO<T> {\n\n        private T[] value;\n\n        public T[] getValue() {\n            return value;\n        }\n\n        public void setValue(T[] value) {\n            this.value = value;\n        }\n\n    }\n\n    public static class A {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/DefaultObjectDeserializerTest9.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class DefaultObjectDeserializerTest9 extends TestCase {\n\n    public <T> void test_1() throws Exception {\n        T[] list = JSON.parseObject(\"[{}]\", new TypeReference<T[]>() {\n        });\n        Assert.assertEquals(1, list.length);\n        Assert.assertNotNull(list[0]);\n        Assert.assertTrue(list[0] instanceof Map);\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/DefaultObjectDeserializerTest_collection.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.util.HashMap;\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class DefaultObjectDeserializerTest_collection extends TestCase {\n\n\tpublic void test_0() throws Exception {\n\t\tString input = \"[{}]\";\n\n\t\tList<HashMap> map = JSON.parseObject(input,\n\t\t\t\tnew TypeReference<List<HashMap>>() {\n\t\t\t\t}.getType());\n\n\t\tAssert.assertEquals(HashMap.class, map.get(0).getClass());\n\t}\n\n\tpublic void test_1() throws Exception {\n\t\tString input = \"{}\";\n\n\t\tBO<HashMap> map = JSON.parseObject(input,\n\t\t\t\tnew TypeReference<BO<HashMap>>() {\n\t\t\t\t}.getType());\n\t}\n\n\tpublic void test_2() throws Exception {\n\n\t\tException error = null;\n\t\ttry {\n\t\t\tString input = \"{'map':{}}\";\n\n\t\t\tMyMap<String, HashMap> map = JSON.parseObject(input,\n\t\t\t\t\tnew TypeReference<MyMap<String, HashMap>>() {\n\t\t\t\t\t}.getType());\n\t\t} catch (Exception ex) {\n\t\t\terror = ex;\n\t\t}\n\t\tAssert.assertNotNull(error);\n\t}\n\n\tpublic static class BO<T> {\n\n\t}\n\n\tpublic static class MyMap<K, V> extends HashMap {\n\n\t\tpublic MyMap() {\n\t\t\tthrow new RuntimeException();\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/DoubleArrayFieldDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class DoubleArrayFieldDeserializerTest extends TestCase {\n\n    public void test_0() throws Exception {\n        Entity a = JSON.parseObject(\"{\\\"values\\\":[1,2]}\", Entity.class);\n        Assert.assertTrue(1 == a.getValues()[0]);\n        Assert.assertTrue(2 == a.getValues()[1]);\n    }\n\n\n    public static class Entity {\n\n        public double[] values;\n\n        public double[] getValues() {\n            return values;\n        }\n\n        public void setValues(double[] values) {\n            this.values = values;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/DoubleDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.NumberDeserializer;\n\npublic class DoubleDeserializerTest extends TestCase {\n\n    public void test_bigdecimal() throws Exception {\n        Assert.assertEquals(0, JSON.parseObject(\"0\", Double.class).intValue());\n        Assert.assertEquals(0, JSON.parseObject(\"0.0\", Double.class).intValue());\n        Assert.assertEquals(0, JSON.parseObject(\"'0'\", Double.class).intValue());\n        Assert.assertEquals(0, JSON.parseObject(\"'0'\", double.class).intValue());\n        Assert.assertEquals(null, JSON.parseObject(\"null\", Double.class));\n\n        DefaultJSONParser parser = new DefaultJSONParser(\"null\", ParserConfig.getGlobalInstance(), JSON.DEFAULT_PARSER_FEATURE);\n        Assert.assertEquals(null, NumberDeserializer.instance.deserialze(parser, null, null));\n        Assert.assertEquals(JSONToken.LITERAL_INT, NumberDeserializer.instance.getFastMatchToken());\n    }\n}\n\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/DoubleFieldDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class DoubleFieldDeserializerTest extends TestCase {\n\n    public void test_0() throws Exception {\n        Entity a = JSON.parseObject(\"{\\\"value\\\":123.45}\", Entity.class);\n        Assert.assertTrue(123.45D == a.getValue());\n    }\n\n    public static class Entity {\n\n        public Double value;\n\n        public Double getValue() {\n            return value;\n        }\n\n        public void setValue(Double value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/DupTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 13/02/2017.\n */\npublic class DupTest extends TestCase {\n    public void test_dup() throws Exception {\n        String json = \"{\\\"id\\\":1001,\\\"_id\\\":1002}\";\n\n        Model model = JSON.parseObject(json, Model.class);\n        assertEquals(1001, model.id);\n    }\n\n    public static class Model {\n        public int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/EnumMapTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\n\nimport java.util.EnumMap;\n\n/**\n * Created by wenshao on 2016/10/18.\n */\npublic class EnumMapTest extends TestCase {\n    public void test_for_enum_map() throws Exception {\n        EnumMap<Type, String> enumMap = new EnumMap<Type, String>(Type.class);\n        enumMap.put(Type.Big, \"BIG\");\n\n        String json = JSON.toJSONString(enumMap);\n        System.out.println(json);\n        EnumMap<Type, String> enumMap2 = JSON.parseObject(json, new TypeReference<EnumMap<Type, String>>(){});\n        assertEquals(1, enumMap2.size());\n        assertEquals(enumMap.get(Type.Big), enumMap2.get(Type.Big));\n    }\n\n    public static enum Type {\n        Big, Small\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/EnumTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.util.concurrent.TimeUnit;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\npublic class EnumTest extends TestCase {\n\n    public void test_enum() throws Exception {\n        Assert.assertNull(JSON.parseObject(\"''\", TimeUnit.class));\n    }\n\n    public void test_enum_1() throws Exception {\n        Assert.assertEquals(E.A, JSON.parseObject(\"0\", E.class));\n    }\n    \n    public void test_enum_3() throws Exception {\n        Assert.assertEquals(E.A, JSON.parseObject(\"{value:0}\", Entity.class).getValue());\n    }\n\n    public void test_enum_2() throws Exception {\n        Assert.assertEquals(E.A, JSON.parseObject(\"'A'\", E.class));\n    }\n\n    public void test_enum_error() throws Exception {\n        assertNull(JSON.parseObject(\"'123'\", TimeUnit.class));\n    }\n\n    public void test_enum_error_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"12.3\", TimeUnit.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static enum E {\n        A, B, C\n    }\n\n    public static class Entity {\n\n        private E value;\n\n        public Entity(){\n\n        }\n\n        public Entity(E value){\n            super();\n            this.value = value;\n        }\n\n        public E getValue() {\n            return value;\n        }\n\n        public void setValue(E value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/FactoryTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic class FactoryTest extends TestCase {\n\n    public void test_factory() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"b\\\":true,\\\"i\\\":33,\\\"l\\\":34,\\\"f\\\":45.}\", VO.class);\n        Assert.assertEquals(true, vo.isB());\n        Assert.assertEquals(33, vo.getI());\n        Assert.assertEquals(34L, vo.getL());\n        Assert.assertTrue(45f == vo.getF());\n        JSON.parseObject(\"{\\\"b\\\":1,\\\"i\\\":33,\\\"l\\\":34,\\\"f\\\":45.}\", VO.class);\n    }\n    \n    public void test_factory1() throws Exception {\n        V1 vo = JSON.parseObject(\"{\\\"b\\\":true,\\\"i\\\":33,\\\"l\\\":34,\\\"f\\\":45.}\", V1.class);\n        Assert.assertEquals(true, vo.isB());\n        Assert.assertEquals(33, vo.getI());\n        Assert.assertEquals(34L, vo.getL());\n        Assert.assertTrue(45f == vo.getF());\n        JSON.parseObject(\"{\\\"b\\\":1,\\\"i\\\":33,\\\"l\\\":34,\\\"f\\\":45.}\", V1.class);\n        \n        // JSON.parseObject(\"{\\\"b\\\":true,\\\"i\\\":33,\\\"l\\\":34,\\\"f\\\":45.}\").toJavaObject(V1.class);\n    }\n\n    public static class VO {\n\n        private final boolean b;\n        private final int     i;\n        private final long    l;\n        private final float   f;\n\n        @JSONCreator\n        public VO(@JSONField(name = \"b\") boolean b, @JSONField(name = \"i\") int i, @JSONField(name = \"l\") long l,\n                  @JSONField(name = \"f\") float f){\n            super();\n            this.b = b;\n            this.i = i;\n            this.l = l;\n            this.f = f;\n        }\n\n        public float getF() {\n            return f;\n        }\n\n        public boolean isB() {\n            return b;\n        }\n\n        public int getI() {\n            return i;\n        }\n\n        public long getL() {\n            return l;\n        }\n\n    }\n\n    public static class V1 {\n\n        private boolean b;\n        private int     i;\n        private long    l;\n        private float   f;\n        \n        private V1(boolean b) {\n            this.b = b;\n        }\n\n        @JSONCreator\n        public static V1 create(@JSONField(name = \"b\") boolean b, @JSONField(name = \"i\") int i,\n                                @JSONField(name = \"l\") long l, @JSONField(name = \"f\") float f) {\n            V1 v = new V1(b);\n            v.i = i;\n            v.l = l;\n            v.f = f;\n\n            return v;\n        }\n\n        public float getF() {\n            return f;\n        }\n\n        public boolean isB() {\n            return b;\n        }\n\n        public int getI() {\n            return i;\n        }\n\n        public long getL() {\n            return l;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/FactoryTest_error.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.json.bvt.parser.deser.FactoryTest.V1;\n\nimport junit.framework.TestCase;\n\npublic class FactoryTest_error extends TestCase {\n\n    public void test_factory1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"b\\\":true,\\\"i\\\":33,\\\"l\\\":34,\\\"f\\\":45.}\").toJavaObject(V1.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class V1 {\n\n        private boolean b;\n        private int     i;\n        private long    l;\n        private float   f;\n\n        private V1(boolean b){\n            this.b = b;\n        }\n\n        @JSONCreator\n        public static V1 create(@JSONField(name = \"b\") boolean b, @JSONField(name = \"i\") int i,\n                                @JSONField(name = \"l\") long l, @JSONField(name = \"f\") float f) {\n            throw new IllegalStateException();\n        }\n\n        public float getF() {\n            return f;\n        }\n\n        public boolean isB() {\n            return b;\n        }\n\n        public int getI() {\n            return i;\n        }\n\n        public long getL() {\n            return l;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/FieldDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\npublic class FieldDeserializerTest extends TestCase {\n\n    public void test_deser() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{'value':{}}\", Entity.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    private static class Entity {\n\n        private V1 value;\n\n        public V1 getValue() {\n            return value;\n        }\n\n        public void setValue(V1 value) {\n            throw new RuntimeException();\n        }\n\n    }\n\n    private static class V1 {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/FieldDeserializerTest1.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.Feature;\n\npublic class FieldDeserializerTest1 extends TestCase {\n\n    public void test_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":[-}\", Entity.class, 0);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{,,,\\\"value\\\":null}\", Entity.class, 0);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":null,\\\"id\\\":123}\", Entity.class, 0);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_null() throws Exception {\n        Entity object = JSON.parseObject(\"{\\\"value\\\":null}\", Entity.class, 0);\n        Assert.assertNull(object.getValue());\n    }\n    \n    public void test_null_2() throws Exception {\n        Entity object = JSON.parseObject(\"{\\\"value\\\":null,\\\"id\\\":123}\", Entity.class, 0, Feature.IgnoreNotMatch);\n        Assert.assertNull(object.getValue());\n    }\n    \n    private static class Entity {\n\n        private V1 value;\n\n        public V1 getValue() {\n            return value;\n        }\n\n        public void setValue(V1 value) {\n            this.value = value;\n        }\n\n    }\n\n    private static class V1 {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/FieldDeserializerTest10.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\n\npublic class FieldDeserializerTest10 extends TestCase {\n    public void test_0 () throws Exception {\n        Assert.assertEquals(Type.Big, JSON.parseObject(\"{\\\"id\\\":\\\"Big\\\"\\t}\", VO.class).id);\n        Assert.assertEquals(Type.Big, JSON.parseObject(\"{\\\"id\\\":\\\"Big\\\"\\t}\\n\\t\", VO.class).id);\n        Assert.assertEquals(Type.Big, JSON.parseObject(\"{\\\"id\\\":\\\"Big\\\" }\", V1.class).id);\n        Assert.assertEquals(Type.Big, JSON.parseObject(\"{\\\"id\\\":\\\"Big\\\" }\\n\", V1.class).id);\n        Assert.assertEquals(Type.Big, JSON.parseObject(\"{\\\"id\\\":\\\"Big\\\" }\\n\\t\", V1.class).id);\n        Assert.assertEquals(Type.Big, JSON.parseObject(\"{\\\"id\\\":\\\"Big\\\"\\n}\", V1.class).id);\n    }\n    \n    public static class VO {\n        public Type id;\n    }\n    \n    private static class V1 {\n        public Type id;\n    }\n\n    public static enum Type {\n        Big, Small\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/FieldDeserializerTest2.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\n\npublic class FieldDeserializerTest2 extends TestCase {\n\n    public void test_0() throws Exception {\n        String input = \"{,,,\\\"value\\\":null,,,,}\";\n        int featureValues = 0;\n        featureValues |= Feature.AllowArbitraryCommas.getMask();\n        DefaultJSONParser parser = new DefaultJSONParser(input, ParserConfig.getGlobalInstance(), featureValues);\n        \n        Entity object = new Entity();\n        parser.parseObject(object);\n    }\n    \n    public void test_1() throws Exception {\n        String input = \"{,,,\\\"value\\\":null,\\\"id\\\":123,,,,}\";\n        int featureValues = 0;\n        featureValues |= Feature.AllowArbitraryCommas.getMask();\n        featureValues |= Feature.IgnoreNotMatch.getMask();\n        DefaultJSONParser parser = new DefaultJSONParser(input, ParserConfig.getGlobalInstance(), featureValues);\n        \n        Entity object = new Entity();\n        parser.parseObject(object);\n    }\n\n    public void test_error_1() throws Exception {\n        Exception error = null;\n        try {\n            String input = \"{\\\"value\\\":null,\\\"id\\\":123}\";\n            int featureValues = 0;\n            DefaultJSONParser parser = new DefaultJSONParser(input, ParserConfig.getGlobalInstance(), featureValues);\n            \n            Entity object = new Entity();\n            parser.parseObject(object);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n\n    private static class Entity {\n\n        private String value;\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/FieldDeserializerTest3.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.ParserConfig;\n\npublic class FieldDeserializerTest3 extends TestCase {\n\n    public void test_error_1() throws Exception {\n        Exception error = null;\n        try {\n            String input = \"{\\\"value\\\":null}\";\n            int featureValues = 0;\n            DefaultJSONParser parser = new DefaultJSONParser(input, ParserConfig.getGlobalInstance(),\n                                                                   featureValues);\n\n            Entity object = new Entity();\n            parser.parseObject(object);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_2() throws Exception {\n        Exception error = null;\n        try {\n            String input = \"{,,\\\"value\\\":null}\";\n            int featureValues = 0;\n            DefaultJSONParser parser = new DefaultJSONParser(input, ParserConfig.getGlobalInstance(),\n                                                                   featureValues);\n\n            Entity object = new Entity();\n            parser.parseObject(object);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    private static class Entity {\n\n        private String value;\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            throw new RuntimeException();\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/FieldDeserializerTest4.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport com.alibaba.fastjson.JSON;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\n\npublic class FieldDeserializerTest4 extends TestCase {\n    public void test_0 () throws Exception {\n        Assert.assertEquals(33, JSON.parseObject(\"{\\\"id\\\":33\\t}\", VO.class).id);\n        Assert.assertEquals(33, JSON.parseObject(\"{\\\"id\\\":33\\t}\\n\\t\", VO.class).id);\n        Assert.assertEquals(33, JSON.parseObject(\"{\\\"id\\\":33 }\", V1.class).id);\n        Assert.assertEquals(33, JSON.parseObject(\"{\\\"id\\\":33 }\\n\\t\", V1.class).id);\n        Assert.assertEquals(33, JSON.parseObject(\"{\\\"id\\\":33L}\", V1.class).id);\n    }\n    \n    public static class VO {\n        public long id;\n    }\n    \n    private static class V1 {\n        public long id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/FieldDeserializerTest5.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport com.alibaba.fastjson.JSON;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\n\npublic class FieldDeserializerTest5 extends TestCase {\n    public void test_0 () throws Exception {\n        Assert.assertEquals(33, JSON.parseObject(\"{\\\"id\\\":33\\t}\", VO.class).id);\n        Assert.assertEquals(33, JSON.parseObject(\"{\\\"id\\\":33\\t}\\n\\t\", VO.class).id);\n        Assert.assertEquals(33, JSON.parseObject(\"{\\\"id\\\":33 }\", V1.class).id);\n        Assert.assertEquals(33, JSON.parseObject(\"{\\\"id\\\":33 } \", V1.class).id);\n        Assert.assertEquals(33, JSON.parseObject(\"{\\\"id\\\":33 }\\n\", V1.class).id);\n        Assert.assertEquals(33, JSON.parseObject(\"{\\\"id\\\":33 }\\t\\n\", V1.class).id);\n        Assert.assertEquals(33, JSON.parseObject(\"{\\\"id\\\":33L}\", V1.class).id);\n    }\n    \n    public static class VO {\n        public int id;\n    }\n    \n    private static class V1 {\n        public int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/FieldDeserializerTest6.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport com.alibaba.fastjson.JSON;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\n\npublic class FieldDeserializerTest6 extends TestCase {\n    public void test_0 () throws Exception {\n        Assert.assertTrue(33F == JSON.parseObject(\"{\\\"id\\\":33\\t}\", VO.class).id);\n        Assert.assertTrue(33F == JSON.parseObject(\"{\\\"id\\\":33\\t}\\n\\t\", VO.class).id);\n        Assert.assertTrue(33F == JSON.parseObject(\"{\\\"id\\\":33 }\", V1.class).id);\n        Assert.assertTrue(33F == JSON.parseObject(\"{\\\"id\\\":33 }\\n\\t\", V1.class).id);\n        Assert.assertTrue(33F == JSON.parseObject(\"{\\\"id\\\":33L}\", V1.class).id);\n    }\n    \n    public static class VO {\n        public float id;\n    }\n    \n    private static class V1 {\n        public float id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/FieldDeserializerTest7.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport com.alibaba.fastjson.JSON;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\n\npublic class FieldDeserializerTest7 extends TestCase {\n    public void test_0 () throws Exception {\n        Assert.assertTrue(33F == JSON.parseObject(\"{\\\"id\\\":33\\t}\", VO.class).id);\n        Assert.assertTrue(33F == JSON.parseObject(\"{\\\"id\\\":33\\t}\\n\\t\", VO.class).id);\n        Assert.assertTrue(33F == JSON.parseObject(\"{\\\"id\\\":33 }\", V1.class).id);\n        Assert.assertTrue(33F == JSON.parseObject(\"{\\\"id\\\":33 }\\n\\t\", V1.class).id);\n        Assert.assertTrue(33F == JSON.parseObject(\"{\\\"id\\\":33L}\", V1.class).id);\n    }\n    \n    public static class VO {\n        public double id;\n    }\n    \n    private static class V1 {\n        public double id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/FieldDeserializerTest8.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport com.alibaba.fastjson.JSON;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\n\npublic class FieldDeserializerTest8 extends TestCase {\n    public void test_0 () throws Exception {\n        Assert.assertEquals(\"33\", JSON.parseObject(\"{\\\"id\\\":\\\"33\\\"\\t}\", VO.class).id);\n        Assert.assertEquals(\"33\", JSON.parseObject(\"{\\\"id\\\":\\\"33\\\"\\t}\\n\\t\", VO.class).id);\n        Assert.assertEquals(\"33\", JSON.parseObject(\"{\\\"id\\\":\\\"33\\\" }\", V1.class).id);\n        Assert.assertEquals(\"33\", JSON.parseObject(\"{\\\"id\\\":\\\"33\\\" }\\n\\t\", V1.class).id);\n        Assert.assertEquals(\"33\", JSON.parseObject(\"{\\\"id\\\":\\\"33\\\"\\n}\", V1.class).id);\n    }\n    \n    public static class VO {\n        public String id;\n    }\n    \n    private static class V1 {\n        public String id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/FieldDeserializerTest9.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\n\npublic class FieldDeserializerTest9 extends TestCase {\n    public void test_0 () throws Exception {\n        assertTrue(JSON.parseObject(\"{\\\"id\\\":true\\t}\", VO.class).id);\n        assertTrue(JSON.parseObject(\"{\\\"id\\\":true\\t}\\n\\t\", VO.class).id);\n        assertTrue(JSON.parseObject(\"{\\\"id\\\":true }\", V1.class).id);\n        assertTrue(JSON.parseObject(\"{\\\"id\\\":true }\\n\\t\", V1.class).id);\n        assertTrue(JSON.parseObject(\"{\\\"id\\\":true\\n}\", V1.class).id);\n    }\n\n    public void test_1 () throws Exception {\n        assertFalse(JSON.parseObject(\"{\\\"id\\\":false\\t}\", VO.class).id);\n        assertFalse(JSON.parseObject(\"{\\\"id\\\":false\\t}\\n\\t\", VO.class).id);\n        assertFalse(JSON.parseObject(\"{\\\"id\\\":false }\", V1.class).id);\n        assertFalse(JSON.parseObject(\"{\\\"id\\\":false }\\n\\t\", V1.class).id);\n        assertFalse(JSON.parseObject(\"{\\\"id\\\":false\\n}\", V1.class).id);\n    }\n    \n    public static class VO {\n        public boolean id;\n    }\n    \n    private static class V1 {\n        public boolean id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/FieldSerializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class FieldSerializerTest extends TestCase {\n\n    public void test_writeNull() throws Exception {\n        String text = JSON.toJSONString(new Entity());\n        Assert.assertEquals(\"{\\\"v\\\":null}\", text);\n    }\n\n    private static class Entity {\n\n        private transient int id;\n        @JSONField(name = \"v\", serialzeFeatures = { SerializerFeature.WriteMapNullValue })\n        private String        value;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/FieldSerializerTest2.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.NameFilter;\nimport com.alibaba.fastjson.serializer.PropertyFilter;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.fastjson.serializer.ValueFilter;\n\npublic class FieldSerializerTest2 extends TestCase {\n\n    public void test_writeNull() throws Exception {\n        String text = toJSONString(new Entity());\n        Assert.assertEquals(\"{\\\"value\\\":\\\"xxx\\\"}\", text);\n    }\n    \n    public static final String toJSONString(Object object, SerializerFeature... features) {\n        SerializeWriter out = new SerializeWriter();\n\n        try {\n            JSONSerializer serializer = new JSONSerializer(out);\n            serializer.getPropertyFilters().add(new PropertyFilter() {\n                \n                public boolean apply(Object source, String name, Object value) {\n                    if (\"id\".equals(name)) {\n                        return false;\n                    }\n                    return true;\n                }\n            });\n            serializer.getNameFilters().add(new NameFilter() {\n\n                public String process(Object source, String name, Object value) {\n                    if (\"v\".equals(name)) {\n                        return \"value\";\n                    }\n                    return name;\n                }\n                \n            });\n            serializer.getValueFilters().add(new ValueFilter() {\n                \n                public Object process(Object source, String name, Object value) {\n                    if (\"v\".endsWith(name)) {\n                        return \"xxx\";\n                    }\n                    \n                    return value;\n                }\n            });\n            for (com.alibaba.fastjson.serializer.SerializerFeature feature : features) {\n                serializer.config(feature, true);\n            }\n\n            serializer.write(object);\n\n            return out.toString();\n        } catch (StackOverflowError e) {\n            throw new JSONException(\"maybe circular references\", e);\n        } finally {\n            out.close();\n        }\n    }\n\n    private static class Entity {\n\n        private int id;\n        @JSONField(name = \"v\", serialzeFeatures = { SerializerFeature.WriteMapNullValue })\n        private String        value;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/FieldSerializerTest3.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.NameFilter;\nimport com.alibaba.fastjson.serializer.PropertyFilter;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.fastjson.serializer.ValueFilter;\n\npublic class FieldSerializerTest3 extends TestCase {\n\n    public void test_writeNull() throws Exception {\n        String text = toJSONString(new Entity());\n        Assert.assertEquals(\"{\\\"v\\\":\\\"xxx\\\"}\", text);\n    }\n    \n    public static final String toJSONString(Object object, SerializerFeature... features) {\n        SerializeWriter out = new SerializeWriter();\n\n        try {\n            JSONSerializer serializer = new JSONSerializer(out);\n            serializer.getPropertyFilters().add(new PropertyFilter() {\n                \n                public boolean apply(Object source, String name, Object value) {\n                    if (\"id\".equals(name)) {\n                        return false;\n                    }\n                    return true;\n                }\n            });\n            serializer.getNameFilters().add(new NameFilter() {\n\n                public String process(Object source, String name, Object value) {\n                    return name;\n                }\n                \n            });\n            serializer.getValueFilters().add(new ValueFilter() {\n                \n                public Object process(Object source, String name, Object value) {\n                    if (\"v\".endsWith(name)) {\n                        return \"xxx\";\n                    }\n                    \n                    return value;\n                }\n            });\n            for (com.alibaba.fastjson.serializer.SerializerFeature feature : features) {\n                serializer.config(feature, true);\n            }\n\n            serializer.write(object);\n\n            return out.toString();\n        } catch (StackOverflowError e) {\n            throw new JSONException(\"maybe circular references\", e);\n        } finally {\n            out.close();\n        }\n    }\n\n    private static class Entity {\n\n        private int id;\n        @JSONField(name = \"v\", serialzeFeatures = { SerializerFeature.WriteMapNullValue })\n        private String        value;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/FieldSerializerTest4.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport com.google.common.collect.Lists;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport org.junit.Assert;\nimport org.junit.Test;\n\nimport java.util.List;\n\n/**\n * Created By maxiaoyao\n * Date: 2017/10/8\n * Time: 下午10:52\n */\npublic class FieldSerializerTest4 {\n    @Test\n    public void testPattern() {\n        Result<List> listResult = new Result<List>(Lists.newArrayList());\n        Result<Boolean> booleanResult = new Result<Boolean>(null);\n        String listJson = JSON.toJSONString(\n                listResult,\n                SerializerFeature.PrettyFormat\n        );\n        String booleanJson = JSON.toJSONString(\n                booleanResult,\n                SerializerFeature.PrettyFormat,\n                SerializerFeature.WriteNullListAsEmpty\n        );\n        Assert.assertEquals(\"{\\n\\t\\\"data\\\":[]\\n}\", listJson);\n        Assert.assertEquals(\"{\\n\\t\\n}\", booleanJson);\n    }\n\n    private static class Result<T>{\n        private T data;\n\n        public Result(T data) {\n            this.data = data;\n        }\n\n        public T getData() {\n            return data;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/FloatDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.FloatCodec;\n\npublic class FloatDeserializerTest extends TestCase {\n\n    public void test_bigdecimal() throws Exception {\n        Assert.assertEquals(0, JSON.parseObject(\"0\", Float.class).intValue());\n        Assert.assertEquals(0, JSON.parseObject(\"0.0\", Float.class).intValue());\n        Assert.assertEquals(0, JSON.parseObject(\"'0'\", Float.class).intValue());\n\n        Assert.assertEquals(null, JSON.parseObject(\"null\", Float.class));\n\n        DefaultJSONParser parser = new DefaultJSONParser(\"null\", ParserConfig.getGlobalInstance(), JSON.DEFAULT_PARSER_FEATURE);\n        Assert.assertEquals(null, FloatCodec.instance.deserialze(parser, null, null));\n        Assert.assertEquals(JSONToken.LITERAL_INT, FloatCodec.instance.getFastMatchToken());\n    }\n}\n\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/GetOnlyCollectionTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport com.alibaba.fastjson.JSON;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\npublic class GetOnlyCollectionTest extends TestCase {\n\n    public void test_getOnly() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"items\\\":[\\\"a\\\",\\\"b\\\"]}\", VO.class);\n        Assert.assertEquals(2, vo.getItems().size());\n        Assert.assertEquals(\"a\", vo.getItems().get(0));\n        Assert.assertEquals(\"b\", vo.getItems().get(1));\n    }\n\n    public static class VO {\n        private final List<String> items = new ArrayList<String>();\n\n        public List<String> getItems() {\n            return items;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/HashtableFieldTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.util.Hashtable;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class HashtableFieldTest extends TestCase {\n\n    public void test_null() throws Exception {\n        Entity value = JSON.parseObject(\"{value:null}\", Entity.class);\n        Assert.assertNull(value.getValue());\n    }\n\n    public void test_empty() throws Exception {\n        Entity value = JSON.parseObject(\"{value:{}}\", Entity.class);\n        Assert.assertEquals(0, value.getValue().size());\n    }\n    \n    public void test_null_2() throws Exception {\n        Entity value = JSON.parseObject(\"{\\\"value\\\":null}\", Entity.class);\n        Assert.assertNull(value.getValue());\n    }\n    \n    public void test_empty_a() throws Exception {\n        A value = JSON.parseObject(\"{value:{\\\"@type\\\":\\\"java.util.Hashtable\\\"}}\", A.class);\n        Assert.assertEquals(0, ((Hashtable)value.getValue()).size());\n    }\n\n    private static class Entity {\n\n        private Hashtable value;\n\n        public Hashtable getValue() {\n            return value;\n        }\n\n        public void setValue(Hashtable value) {\n            this.value = value;\n        }\n    }\n    \n    private static class A {\n\n        private Object value;\n\n        public Object getValue() {\n            return value;\n        }\n\n        public void setValue(Object value) {\n            this.value = value;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/InetAddressDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.MiscCodec;\nimport com.alibaba.fastjson.serializer.StringCodec;\n\nimport junit.framework.TestCase;\n\npublic class InetAddressDeserializerTest extends TestCase {\n\n    public void test_null() throws Exception {\n        String input = \"null\";\n        DefaultJSONParser parser = new DefaultJSONParser(input, ParserConfig.getGlobalInstance(), JSON.DEFAULT_PARSER_FEATURE);\n\n        MiscCodec deser = new MiscCodec();\n\n        Assert.assertNull(deser.deserialze(parser, null, null));\n    }\n    \n    public void test_string_null() throws Exception {\n        String input = \"null\";\n        DefaultJSONParser parser = new DefaultJSONParser(input, ParserConfig.getGlobalInstance(), JSON.DEFAULT_PARSER_FEATURE);\n        \n        StringCodec deser = new StringCodec();\n        \n        Assert.assertNull(deser.deserialze(parser, null, null));\n    }\n\n    public void test_error_0() throws Exception {\n        String input = \"'[&中国-^]'\";\n        DefaultJSONParser parser = new DefaultJSONParser(input, ParserConfig.getGlobalInstance(), JSON.DEFAULT_PARSER_FEATURE);\n\n        MiscCodec deser = new MiscCodec();\n\n        Throwable error = null;\n\n        Object value = null;\n        try {\n            value = deser.deserialze(parser, null, null);\n        } catch (Throwable ex) {\n            error = ex;\n        }\n\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/InnerClassDeser.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 25/03/2017.\n */\npublic class InnerClassDeser extends TestCase {\n    public void test_for_inner_class() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"item\\\":{\\\"id\\\":123}}\", Model.class);\n        assertNotNull(model.item);\n        assertEquals(123, model.item.id);\n    }\n\n    public static class Model {\n        public Item item;\n\n        public class Item {\n            public int id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/InnerClassDeser2.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\n/**\n * Created by wenshao on 25/03/2017.\n */\npublic class InnerClassDeser2 extends TestCase {\n    public void test_for_inner_class() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"items\\\":[{\\\"id\\\":123}]}\", Model.class);\n        assertNotNull(model.items);\n        assertEquals(123, model.items.get(0).id);\n    }\n\n    public static class Model {\n        public List<Item> items;\n\n        public class Item {\n            public int id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/InnerClassDeser3.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.List;\nimport java.util.Map;\n\n/**\n * Created by wenshao on 25/03/2017.\n */\npublic class InnerClassDeser3 extends TestCase {\n    public void test_for_inner_class() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"items\\\":{\\\"123\\\":{\\\"id\\\":123}}}\", Model.class);\n        assertNotNull(model.items);\n        assertEquals(123, model.items.get(\"123\").id);\n    }\n\n    public static class Model {\n        public Map<String, Item> items;\n\n        public class Item {\n            public int id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/InnerClassDeser4.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * Created by wenshao on 25/03/2017.\n */\npublic class InnerClassDeser4 extends TestCase {\n    public void test_for_inner_class() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"items\\\":{\\\"123\\\":{\\\"id\\\":123}}}\", Model.class);\n        assertNotNull(model.items);\n        assertEquals(123, model.items.get(\"123\").id);\n    }\n\n    public static class Model {\n        public HashMap<String, Item> items;\n\n        public class Item {\n            public int id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/IntegerDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.IntegerCodec;\n\npublic class IntegerDeserializerTest extends TestCase {\n\n    public void test_bigdecimal() throws Exception {\n        Assert.assertEquals(0, JSON.parseObject(\"0\", Integer.class).intValue());\n        Assert.assertEquals(0, JSON.parseObject(\"0.0\", Integer.class).intValue());\n        Assert.assertEquals(0, JSON.parseObject(\"'0'\", Integer.class).intValue());\n\n        Assert.assertEquals(null, JSON.parseObject(\"null\", Integer.class));\n\n        DefaultJSONParser parser = new DefaultJSONParser(\"null\", ParserConfig.getGlobalInstance(), JSON.DEFAULT_PARSER_FEATURE);\n        Assert.assertEquals(null, IntegerCodec.instance.deserialze(parser, null, null));\n        Assert.assertEquals(JSONToken.LITERAL_INT, IntegerCodec.instance.getFastMatchToken());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/IntegerFieldDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class IntegerFieldDeserializerTest extends TestCase {\n\n    public void test_0() throws Exception {\n        Entity a = JSON.parseObject(\"{f1:null, f2:null}\", Entity.class);\n        Assert.assertEquals(124, a.getF1());\n        Assert.assertEquals(null, a.getF2());\n    }\n    \n    public void test_1() throws Exception {\n        Entity a = JSON.parseObject(\"{f1:22, f2:'33'}\", Entity.class);\n        Assert.assertEquals(22, a.getF1());\n        Assert.assertEquals(33, a.getF2().intValue());\n    }\n    \n    public void test_2() throws Exception {\n        Entity a = JSON.parseObject(\"{f1:'22', f2:33}\", Entity.class);\n        Assert.assertEquals(22, a.getF1());\n        Assert.assertEquals(33, a.getF2().intValue());\n    }\n\n    public static class Entity {\n\n        private int     f1 = 124;\n        private Integer f2 = 123;\n\n        public int getF1() {\n            return f1;\n        }\n\n        public void setF1(int f1) {\n            this.f1 = f1;\n        }\n\n        public Integer getF2() {\n            return f2;\n        }\n\n        public void setF2(Integer f2) {\n            this.f2 = f2;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/IntegerFieldDeserializerTest2.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.io.Serializable;\nimport java.util.List;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class IntegerFieldDeserializerTest2 extends TestCase {\n\t\n\tprotected void setUp() throws Exception {\n//\t\tParserConfig.getGlobalInstance().setAsmEnable(false);\n\t}\n\t\n\tpublic void test_integer() throws Exception {\n\t\tString text = \"{\\\"value\\\":{\\\"column1\\\":\\\"aa\\\"}}\";\n\t\tMap<String, Entity> map = JSON.parseObject(text, new TypeReference<Map<String, Entity>>(){});\n\t\tAssert.assertNotNull(map);\n\t\tAssert.assertNotNull(map.get(\"value\"));\n\t\tAssert.assertNotNull(\"aa\", map.get(\"value\").getColumn1());\n\t}\n\t\n\tpublic void test_integer_2() throws Exception {\n\t\tString text = \"[{\\\"value\\\":{\\\"column1\\\":\\\"aa\\\"}}]\";\n\t\tList<Map<String, Entity>> mapList = JSON.parseObject(text, new TypeReference<List<Map<String, Entity>>>(){});\n\t\tMap<String, Entity> map = mapList.get(0);\n\t\tAssert.assertNotNull(map);\n\t\tAssert.assertNotNull(map.get(\"value\"));\n\t\tAssert.assertNotNull(\"aa\", map.get(\"value\").getColumn1());\n\t}\n\t\n\tpublic void test_integer_3() throws Exception {\n\t\tString text = \"{\\\"value\\\":{\\\"valueA\\\":{\\\"column1\\\":\\\"aa\\\"}, \\\"valueB\\\":{\\\"column1\\\":\\\"bb\\\"}}}\";\n\t\tMap<String, Map<String, Entity>> mapmap = JSON.parseObject(text, new TypeReference<Map<String, Map<String, Entity>>>(){});\n\t\tMap<String, Entity> map = mapmap.get(\"value\");\n\t\tAssert.assertNotNull(map);\n\t\tAssert.assertNotNull(map.get(\"valueA\"));\n\t\tAssert.assertNotNull(\"aa\", map.get(\"valueA\").getColumn1());\n\t\tAssert.assertNotNull(map.get(\"valueB\"));\n\t\tAssert.assertNotNull(\"bb\", map.get(\"valueB\").getColumn1());\n\t}\n\n\tpublic static class Entity implements Serializable {\n\t\tprivate static final long serialVersionUID = 1L;\n\t\tprivate String column1;\n\t\tprivate Integer column3;\n\n\t\tpublic String getColumn1() {\n\t\t\treturn column1;\n\t\t}\n\n\t\tpublic void setColumn1(String column1) {\n\t\t\tthis.column1 = column1;\n\t\t}\n\n\t\tpublic Integer getColumn3() {\n\t\t\treturn column3;\n\t\t}\n\n\t\tpublic void setColumn3(Integer column3) {\n\t\t\tthis.column3 = column3;\n\t\t}\n\t}\n\t\n\tpublic static class Value {\n\t\t\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/IntegerFieldDeserializerTest3.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic class IntegerFieldDeserializerTest3 extends TestCase {\n\n    public void test_0() throws Exception {\n        Entity a = JSON.parseObject(\"{f1:123, f2:null}\", Entity.class);\n        Assert.assertEquals(123, a.getF1());\n        Assert.assertEquals(null, a.getF2());\n    }\n\n    public void test_1() throws Exception {\n        Entity a = JSON.parseObject(\"{f1:22, f2:'33'}\", Entity.class);\n        Assert.assertEquals(22, a.getF1());\n        Assert.assertEquals(33, a.getF2().intValue());\n    }\n\n    public void test_2() throws Exception {\n        Entity a = JSON.parseObject(\"{f1:'22', f2:33}\", Entity.class);\n        Assert.assertEquals(22, a.getF1());\n        Assert.assertEquals(33, a.getF2().intValue());\n    }\n\n    public static class Entity {\n\n        private int     f1 = 124;\n        private Integer f2 = 123;\n\n        @JSONCreator\n        public Entity(@JSONField(name=\"f1\") int f1, @JSONField(name=\"f2\") Integer f2){\n            this.f1 = f1;\n            this.f2 = f2;\n        }\n\n        public int getF1() {\n            return f1;\n        }\n\n        public Integer getF2() {\n            return f2;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/IntegerParseTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.math.BigDecimal;\nimport java.math.BigInteger;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class IntegerParseTest extends TestCase {\n    public void test_l () throws Exception {\n        Assert.assertEquals(Long.valueOf(12), JSON.parseObject(\"12L\", long.class));\n        Assert.assertEquals(Integer.valueOf(12), JSON.parseObject(\"12L\", int.class));\n        Assert.assertEquals(new Short((short) 12), JSON.parseObject(\"12L\", short.class));\n        Assert.assertEquals(new Byte((byte) 12), JSON.parseObject(\"12L\", byte.class));\n        Assert.assertEquals(new Float(12), JSON.parseObject(\"12L\", float.class));\n        Assert.assertEquals(new Double(12), JSON.parseObject(\"12L\", double.class));\n        Assert.assertEquals(new BigDecimal(12), JSON.parseObject(\"12L\", BigDecimal.class));\n        Assert.assertEquals(new BigInteger(\"12\"), JSON.parseObject(\"12L\", BigInteger.class));\n    }\n    \n    public void test_s () throws Exception {\n        Assert.assertEquals(Long.valueOf(12), JSON.parseObject(\"12S\", long.class));\n        Assert.assertEquals(Integer.valueOf(12), JSON.parseObject(\"12S\", int.class));\n        Assert.assertEquals(new Short((short) 12), JSON.parseObject(\"12S\", short.class));\n        Assert.assertEquals(new Byte((byte) 12), JSON.parseObject(\"12S\", byte.class));\n        Assert.assertEquals(new Float(12), JSON.parseObject(\"12S\", float.class));\n        Assert.assertEquals(new Double(12), JSON.parseObject(\"12S\", double.class));\n        Assert.assertEquals(new BigDecimal(12), JSON.parseObject(\"12S\", BigDecimal.class));\n        Assert.assertEquals(new BigInteger(\"12\"), JSON.parseObject(\"12S\", BigInteger.class));\n    }\n    \n    public void test_b () throws Exception {\n        Assert.assertEquals(Long.valueOf(12), JSON.parseObject(\"12B\", long.class));\n        Assert.assertEquals(Integer.valueOf(12), JSON.parseObject(\"12B\", int.class));\n        Assert.assertEquals(new Short((short) 12), JSON.parseObject(\"12B\", short.class));\n        Assert.assertEquals(new Byte((byte) 12), JSON.parseObject(\"12B\", byte.class));\n        Assert.assertEquals(new Float(12), JSON.parseObject(\"12B\", float.class));\n        Assert.assertEquals(new Double(12), JSON.parseObject(\"12B\", double.class));\n        Assert.assertEquals(new BigDecimal(12), JSON.parseObject(\"12B\", BigDecimal.class));\n        Assert.assertEquals(new BigInteger(\"12\"), JSON.parseObject(\"12B\", BigInteger.class));\n    }\n    \n    public void test_f () throws Exception {\n        Assert.assertEquals(Long.valueOf(12), JSON.parseObject(\"12F\", long.class));\n        Assert.assertEquals(Integer.valueOf(12), JSON.parseObject(\"12F\", int.class));\n        Assert.assertEquals(new Short((short) 12), JSON.parseObject(\"12F\", short.class));\n        Assert.assertEquals(new Byte((byte) 12), JSON.parseObject(\"12F\", byte.class));\n        Assert.assertEquals(new Float(12), JSON.parseObject(\"12F\", float.class));\n        Assert.assertEquals(new Double(12), JSON.parseObject(\"12F\", double.class));\n        Assert.assertEquals(new BigDecimal(12), JSON.parseObject(\"12F\", BigDecimal.class));\n        Assert.assertEquals(new BigInteger(\"12\"), JSON.parseObject(\"12F\", BigInteger.class));\n    }\n    \n    public void test_d () throws Exception {\n        Assert.assertEquals(Long.valueOf(12), JSON.parseObject(\"12D\", long.class));\n        Assert.assertEquals(Integer.valueOf(12), JSON.parseObject(\"12D\", int.class));\n        Assert.assertEquals(new Short((short) 12), JSON.parseObject(\"12D\", short.class));\n        Assert.assertEquals(new Byte((byte) 12), JSON.parseObject(\"12D\", byte.class));\n        Assert.assertEquals(new Float(12), JSON.parseObject(\"12D\", float.class));\n        Assert.assertEquals(new Double(12), JSON.parseObject(\"12D\", double.class));\n        Assert.assertEquals(new BigDecimal(12), JSON.parseObject(\"12D\", BigDecimal.class));\n        Assert.assertEquals(new BigInteger(\"12\"), JSON.parseObject(\"12D\", BigInteger.class));\n    }\n    \n    public void test_m () throws Exception {\n        Assert.assertEquals(Long.valueOf(12), JSON.parseObject(\"12.\", long.class));\n        Assert.assertEquals(Integer.valueOf(12), JSON.parseObject(\"12.\", int.class));\n        Assert.assertEquals(new Short((short) 12), JSON.parseObject(\"12.\", short.class));\n        Assert.assertEquals(new Byte((byte) 12), JSON.parseObject(\"12.\", byte.class));\n        Assert.assertEquals(new Float(12), JSON.parseObject(\"12.\", float.class));\n        Assert.assertEquals(new Double(12), JSON.parseObject(\"12.\", double.class));\n        Assert.assertEquals(new BigDecimal(12), JSON.parseObject(\"12.\", BigDecimal.class));\n        Assert.assertEquals(new BigInteger(\"12\"), JSON.parseObject(\"12.\", BigInteger.class));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/InterfaceParseTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport com.alibaba.fastjson.JSON;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\n\npublic class InterfaceParseTest extends TestCase {\n    public void test_interface() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"text\\\":\\\"abc\\\",\\\"b\\\":true}\", VO.class);\n        Assert.assertEquals(\"abc\", vo.getText());\n        Assert.assertEquals(Boolean.TRUE, vo.getB());\n    }\n    \n    public static interface VO {\n        void setText(String val);\n        String getText();\n        \n        void setB(Boolean val);\n        Boolean getB();\n        \n        void setI(int value);\n        void setC(char value);\n        void setS(short value);\n        void setL(long value);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/JSONFieldSetterTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 05/04/2017.\n */\npublic class JSONFieldSetterTest extends TestCase {\n    public void test_for_setter() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"id\\\":123}\", Model.class);\n        assertEquals(123, model._id);\n    }\n\n    public static class Model {\n        private int _id;\n\n        @JSONField(name = \"id\")\n        public void id(int id) {\n            this._id = id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/LocaleFieldTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\nimport java.util.Locale;\n\n/**\n * Created by wenshao on 14/03/2017.\n */\npublic class LocaleFieldTest extends TestCase {\n    public void test_local_str() throws Exception {\n        Model model = new Model();\n        model.locale = Locale.CHINA;\n\n        String json = JSON.toJSONString(model);\n\n        JSONObject jsonObject = JSON.parseObject(json);\n        jsonObject.toJavaObject(Model.class);\n    }\n\n    public void test_local_obj() throws Exception {\n        String json = \"{\\\"locale\\\":{\\\"displayCountry\\\":\\\"China\\\",\\\"displayVariant\\\":\\\"\\\",\\\"displayLanguage\\\":\\\"Chinese\\\",\\\"language\\\":\\\"zh\\\",\\\"displayName\\\":\\\"Chinese (China)\\\",\\\"variant\\\":\\\"\\\",\\\"ISO3Language\\\":\\\"zho\\\",\\\"ISO3Country\\\":\\\"CHN\\\",\\\"country\\\":\\\"CN\\\"}}\";\n\n        JSONObject jsonObject = JSON.parseObject(json);\n        Model model2 = jsonObject.toJavaObject(Model.class);\n        assertEquals(\"CN\", model2.locale.getCountry());\n        assertEquals(\"zh\", model2.locale.getLanguage());\n        assertEquals(Locale.CHINA.getDisplayCountry(), model2.locale.getDisplayCountry());\n    }\n\n    public static class Model {\n        public Locale locale;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/LocaleTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.util.Locale;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.MiscCodec;\n\nimport junit.framework.TestCase;\n\npublic class LocaleTest extends TestCase {\n\n    public void test_0() throws Exception {\n        String input = JSON.toJSONString(Locale.US);\n        Assert.assertEquals(Locale.US, JSON.parseObject(input, Locale.class));\n    }\n\n    public void test_1() throws Exception {\n        Locale l1 = new Locale(\"l1\");\n        String input = JSON.toJSONString(l1);\n        Assert.assertEquals(l1, JSON.parseObject(input, Locale.class));\n    }\n\n    public void test_2() throws Exception {\n        Locale l1 = new Locale(\"l1\", \"l2\", \"l3\");\n        String input = JSON.toJSONString(l1);\n        Assert.assertEquals(l1, JSON.parseObject(input, Locale.class));\n    }\n\n    public void test_null() throws Exception {\n        String input = \"null\";\n        DefaultJSONParser parser = new DefaultJSONParser(input, ParserConfig.getGlobalInstance(), JSON.DEFAULT_PARSER_FEATURE);\n\n        MiscCodec deser = new MiscCodec();\n\n        Assert.assertNull(deser.deserialze(parser, null, null));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/LongDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.LongCodec;\n\npublic class LongDeserializerTest extends TestCase {\n\n    public void test_bigdecimal() throws Exception {\n        Assert.assertEquals(0, JSON.parseObject(\"0\", Long.class).intValue());\n        Assert.assertEquals(0, JSON.parseObject(\"0.0\", Long.class).intValue());\n        Assert.assertEquals(0, JSON.parseObject(\"'0'\", Long.class).intValue());\n\n        Assert.assertEquals(null, JSON.parseObject(\"null\", Long.class));\n\n        DefaultJSONParser parser = new DefaultJSONParser(\"null\", ParserConfig.getGlobalInstance(), JSON.DEFAULT_PARSER_FEATURE);\n        Assert.assertEquals(null, LongCodec.instance.deserialze(parser, null, null));\n        Assert.assertEquals(JSONToken.LITERAL_INT, LongCodec.instance.getFastMatchToken());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/LongFieldDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.util.UUID;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\npublic class LongFieldDeserializerTest extends TestCase {\n\n    public void test_0() throws Exception {\n        Entity a = JSON.parseObject(\"{f1:null, f2:null}\", Entity.class);\n        Assert.assertEquals(124, a.getF1());\n        Assert.assertEquals(null, a.getF2());\n    }\n\n    public void test_1() throws Exception {\n        Entity a = JSON.parseObject(\"{f1:22, f2:'33'}\", Entity.class);\n        Assert.assertEquals(22, a.getF1());\n        Assert.assertEquals(33, a.getF2().intValue());\n    }\n\n    public void test_2() throws Exception {\n        Entity a = JSON.parseObject(\"{f1:'22', f2:33}\", Entity.class);\n        Assert.assertEquals(22, a.getF1());\n        Assert.assertEquals(33, a.getF2().longValue());\n    }\n\n    public void test_error() throws Exception {\n        JSONException ex = null;\n        try {\n            JSON.parseObject(\"{f3:44}\", UUID.class);\n        } catch (JSONException e) {\n            ex = e;\n        }\n        Assert.assertNotNull(ex);\n    }\n\n    public static class Entity {\n\n        private long f1 = 124;\n        private Long f2 = 123L;\n\n        public long getF1() {\n            return f1;\n        }\n\n        public void setF1(long f1) {\n            this.f1 = f1;\n        }\n\n        public Long getF2() {\n            return f2;\n        }\n\n        public void setF2(Long f2) {\n            this.f2 = f2;\n        }\n\n        public void setF3(Long v) {\n            throw new RuntimeException();\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/LongFieldDeserializerTest2.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.io.Serializable;\nimport java.util.List;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class LongFieldDeserializerTest2 extends TestCase {\n\t\n\tprotected void setUp() throws Exception {\n//\t\tParserConfig.getGlobalInstance().setAsmEnable(false);\n\t}\n\t\n\tpublic void test_integer() throws Exception {\n\t\tString text = \"{\\\"value\\\":{\\\"column1\\\":\\\"aa\\\"}}\";\n\t\tMap<String, Entity> map = JSON.parseObject(text, new TypeReference<Map<String, Entity>>(){});\n\t\tAssert.assertNotNull(map);\n\t\tAssert.assertNotNull(map.get(\"value\"));\n\t\tAssert.assertNotNull(\"aa\", map.get(\"value\").getColumn1());\n\t}\n\t\n\tpublic void test_integer_2() throws Exception {\n\t\tString text = \"[{\\\"value\\\":{\\\"column1\\\":\\\"aa\\\"}}]\";\n\t\tList<Map<String, Entity>> mapList = JSON.parseObject(text, new TypeReference<List<Map<String, Entity>>>(){});\n\t\tMap<String, Entity> map = mapList.get(0);\n\t\tAssert.assertNotNull(map);\n\t\tAssert.assertNotNull(map.get(\"value\"));\n\t\tAssert.assertNotNull(\"aa\", map.get(\"value\").getColumn1());\n\t}\n\n\tpublic static class Entity implements Serializable {\n\t\tprivate static final long serialVersionUID = 1L;\n\t\tprivate String column1;\n\t\tprivate Long column3;\n\n\t\tpublic String getColumn1() {\n\t\t\treturn column1;\n\t\t}\n\n\t\tpublic void setColumn1(String column1) {\n\t\t\tthis.column1 = column1;\n\t\t}\n\n\t\tpublic Long getColumn3() {\n\t\t\treturn column3;\n\t\t}\n\n\t\tpublic void setColumn3(Long column3) {\n\t\t\tthis.column3 = column3;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/LongFieldDeserializerTest3.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic class LongFieldDeserializerTest3 extends TestCase {\n\n    public void test_0() throws Exception {\n        Entity a = JSON.parseObject(\"{f1:123, f2:null}\", Entity.class);\n        Assert.assertEquals(123L, a.getF1());\n        Assert.assertEquals(null, a.getF2());\n    }\n\n    public void test_1() throws Exception {\n        Entity a = JSON.parseObject(\"{f1:22, f2:'33'}\", Entity.class);\n        Assert.assertEquals(22L, a.getF1());\n        Assert.assertEquals(33L, a.getF2().intValue());\n    }\n\n    public void test_2() throws Exception {\n        Entity a = JSON.parseObject(\"{f1:'22', f2:33}\", Entity.class);\n        Assert.assertEquals(22L, a.getF1());\n        Assert.assertEquals(33L, a.getF2().intValue());\n    }\n\n    public static class Entity {\n\n        private long f1 = 124;\n        private Long f2 = 123L;\n\n        @JSONCreator\n        public Entity(@JSONField(name = \"f1\") long f1, @JSONField(name = \"f2\") Long f2){\n            this.f1 = f1;\n            this.f2 = f2;\n        }\n\n        public long getF1() {\n            return f1;\n        }\n\n        public Long getF2() {\n            return f2;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/MapDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class MapDeserializerTest extends TestCase {\n    protected void setUp() throws Exception {\n        com.alibaba.fastjson.parser.ParserConfig.global.addAccept(\"com.alibaba.json.bvt.parser.deser.MapDeserializerTest.\");\n    }\n\n    public void test_0() throws Exception {\n        JSON.parseObject(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.parser.deser.MapDeserializerTest$MyMap\\\"}\", Map.class);\n    }\n    \n    public static class MyMap extends HashMap {\n        public MyMap () {\n            \n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/MapTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.math.BigDecimal;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class MapTest extends TestCase {\n\n    public void test_0() throws Exception {\n        Map<String, String> map = JSON.parseObject(\"{id:33}\", new TypeReference<Map<String, String>>() {\n        });\n\n        Assert.assertEquals(1, map.size());\n        Assert.assertEquals(\"33\", map.get(\"id\"));\n    }\n    \n    public void test_1() throws Exception {\n        Map<String, BigDecimal> map = JSON.parseObject(\"{id:33}\", new TypeReference<Map<String, BigDecimal>>() {\n        });\n\n        Assert.assertEquals(1, map.size());\n        Assert.assertEquals(new BigDecimal(\"33\"), map.get(\"id\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/MultiArrayTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class MultiArrayTest extends TestCase {\n\n    public void test_0() throws Exception {\n        String[][] array = new String[][] { new String[] { \"a\", \"b\" }, new String[] { \"c\", \"d\", \"e\" } };\n        String text = JSON.toJSONString(array);\n        String[][] array2 = JSON.parseObject(text, String[][].class);\n        Assert.assertEquals(\"a\", array2[0][0]);\n        Assert.assertEquals(\"b\", array2[0][1]);\n        Assert.assertEquals(\"c\", array2[1][0]);\n        Assert.assertEquals(\"d\", array2[1][1]);\n        Assert.assertEquals(\"e\", array2[1][2]);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/MyMapFieldTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.util.HashMap;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class MyMapFieldTest extends TestCase {\n\n    public void test_null() throws Exception {\n        Entity value = JSON.parseObject(\"{value:null}\", Entity.class);\n        Assert.assertNull(value.getValue());\n    }\n\n    public void test_empty() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{value:{}}\", Entity.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    private static class Entity {\n\n        private MyMap<Object, Object> value;\n\n        public MyMap<Object, Object> getValue() {\n            return value;\n        }\n\n        public void setValue(MyMap<Object, Object> value) {\n            this.value = value;\n        }\n    }\n\n    public class MyMap<K, V> extends HashMap<K, V> {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/NumberDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class NumberDeserializerTest extends TestCase {\n\n    public void test_byte() throws Exception {\n        Assert.assertEquals(Byte.valueOf((byte) 123), JSON.parseObject(\"\\\"123\\\"\", byte.class));\n        Assert.assertEquals(Byte.valueOf((byte) 123), JSON.parseObject(\"\\\"123\\\"\", Byte.class));\n    }\n\n    public void test_byte1() throws Exception {\n        Assert.assertEquals(Byte.valueOf((byte) 123), JSON.parseObject(\"123.\", byte.class));\n        Assert.assertEquals(Byte.valueOf((byte) 123), JSON.parseObject(\"123.\", Byte.class));\n    }\n\n    public void test_short() throws Exception {\n        Assert.assertEquals(Short.valueOf((short) 123), JSON.parseObject(\"\\\"123\\\"\", short.class));\n        Assert.assertEquals(Short.valueOf((short) 123), JSON.parseObject(\"\\\"123\\\"\", Short.class));\n    }\n\n    public void test_short1() throws Exception {\n        Assert.assertEquals(Short.valueOf((short) 123), JSON.parseObject(\"123.\", short.class));\n        Assert.assertEquals(Short.valueOf((short) 123), JSON.parseObject(\"123.\", Short.class));\n    }\n\n    public void test_double() throws Exception {\n        Assert.assertTrue(123.0D == JSON.parseObject(\"123.\", double.class));\n        Assert.assertTrue(123.0D == JSON.parseObject(\"123.\", Double.class).doubleValue());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/NumberDeserializerTest2.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class NumberDeserializerTest2 extends TestCase {\n\n    public void test_double2() throws Exception {\n        Assert.assertTrue(123.0D == JSON.parseObject(\"123B\", double.class));\n        Assert.assertTrue(123.0D == JSON.parseObject(\"123B\", Double.class).doubleValue());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/ParseNullTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class ParseNullTest extends TestCase {\n    public void test_parse_null() throws Exception {\n        JSON.parseObject(\"{\\\"value\\\":null}\", Model.class);\n    }\n    \n    public static class Model {\n        public JSONObject value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/PatternDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.util.regex.Pattern;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.MiscCodec;\n\nimport junit.framework.TestCase;\n\npublic class PatternDeserializerTest extends TestCase {\n\n    public void test_pattern() throws Exception {\n        Assert.assertEquals(Pattern.compile(\"abc\").pattern(), JSON.parseObject(\"'abc'\", Pattern.class).pattern());\n\n        Assert.assertEquals(null, JSON.parseObject(\"null\", Pattern.class));\n\n        DefaultJSONParser parser = new DefaultJSONParser(\"null\", ParserConfig.getGlobalInstance(), JSON.DEFAULT_PARSER_FEATURE);\n        Assert.assertEquals(null, MiscCodec.instance.deserialze(parser, null, null));\n        Assert.assertEquals(JSONToken.LITERAL_STRING, MiscCodec.instance.getFastMatchToken());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/PropertyProcessableTest_0.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.deserializer.PropertyProcessable;\nimport junit.framework.TestCase;\n\nimport java.lang.reflect.Type;\n\n/**\n * Created by wenshao on 15/07/2017.\n */\npublic class PropertyProcessableTest_0 extends TestCase {\n    public void test_processable() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"vo_id\\\":123,\\\"vo_name\\\":\\\"abc\\\",\\\"value\\\":{}}\", VO.class);\n        assertEquals(123, vo.id);\n        assertEquals(\"abc\", vo.name);\n        assertNotNull(vo.value);\n    }\n\n    public static class VO implements PropertyProcessable {\n        public int id;\n        public String name;\n        public Value value;\n\n        public Type getType(String name) {\n            if (\"value\".equals(name)) {\n                return Value.class;\n            }\n            return null;\n        }\n\n        public void apply(String name, Object value) {\n            if (\"vo_id\".equals(name)) {\n                this.id = ((Integer) value).intValue();\n            } else if (\"vo_name\".equals(name)) {\n                this.name = (String) value;\n            } else if (\"value\".equals(name)) {\n                this.value = (Value) value;\n            }\n        }\n    }\n\n    public static class Value {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/ResolveFieldDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport com.alibaba.fastjson.parser.deserializer.ResolveFieldDeserializer;\n\nimport junit.framework.TestCase;\n\n\npublic class ResolveFieldDeserializerTest extends TestCase {\n    public void test_0 () throws Exception {\n        new ResolveFieldDeserializer(null, null).parseField(null, null, null, null);\n        new ResolveFieldDeserializer(null, null, 0).parseField(null, null, null, null);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/ShortFieldDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.io.Serializable;\nimport java.util.List;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class ShortFieldDeserializerTest extends TestCase {\n\t\n\tprotected void setUp() throws Exception {\n//\t\tParserConfig.getGlobalInstance().setAsmEnable(false);\n\t}\n\t\n\tpublic void f_test_integer() throws Exception {\n\t\tString text = \"{\\\"value\\\":{\\\"column1\\\":\\\"aa\\\"}}\";\n\t\tMap<String, Entity> map = JSON.parseObject(text, new TypeReference<Map<String, Entity>>(){});\n\t\tAssert.assertNotNull(map);\n\t\tAssert.assertNotNull(map.get(\"value\"));\n\t\tAssert.assertNotNull(\"aa\", map.get(\"value\").getColumn1());\n\t}\n\t\n\tpublic void test_integer_2() throws Exception {\n\t\tString text = \"[{\\\"value\\\":{\\\"column1\\\":\\\"aa\\\"}}]\";\n\t\tList<Map<String, Entity>> mapList = JSON.parseObject(text, new TypeReference<List<Map<String, Entity>>>(){});\n\t\tMap<String, Entity> map = mapList.get(0);\n\t\tAssert.assertNotNull(map);\n\t\tAssert.assertNotNull(map.get(\"value\"));\n\t\tAssert.assertNotNull(\"aa\", map.get(\"value\").getColumn1());\n\t}\n\n\tpublic static class Entity implements Serializable {\n\t\tprivate static final long serialVersionUID = 1L;\n\t\tprivate String column1;\n\t\tprivate Short column3;\n\n\t\tpublic String getColumn1() {\n\t\t\treturn column1;\n\t\t}\n\n\t\tpublic void setColumn1(String column1) {\n\t\t\tthis.column1 = column1;\n\t\t}\n\n\t\tpublic Short getColumn3() {\n\t\t\treturn column3;\n\t\t}\n\n\t\tpublic void setColumn3(Short column3) {\n\t\t\tthis.column3 = column3;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/SmartMatchTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class SmartMatchTest extends TestCase {\n\n    public void f_test_0() throws Exception {\n        String text = \"{\\\"message_id\\\":1001}\";\n\n        VO vo = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(1001, vo.getMessageId());\n    }\n\n    public void test_vo2() throws Exception {\n        String text = \"{\\\"message_id\\\":1001}\";\n\n        VO2 vo = JSON.parseObject(text, VO2.class);\n        Assert.assertEquals(1001, vo.getMessageId());\n    }\n\n    private static class VO {\n\n        private int messageId;\n\n        public int getMessageId() {\n            return messageId;\n        }\n\n        public void setMessageId(int messageId) {\n            this.messageId = messageId;\n        }\n\n    }\n\n    public static class VO2 {\n\n        private int messageId;\n\n        public int getMessageId() {\n            return messageId;\n        }\n\n        public void setMessageId(int messageId) {\n            this.messageId = messageId;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/SmartMatchTest2.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\n\npublic class SmartMatchTest2 extends TestCase {\n    \n    public void f_test_0 () throws Exception {\n        String text = \"{\\\"_id\\\":1001}\";\n        \n        VO vo = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(1001, vo.getId());\n    }\n    \n    public void test_vo2 () throws Exception {\n        String text = \"{\\\"_id\\\":1001}\";\n        \n        VO2 vo = JSON.parseObject(text, VO2.class);\n        Assert.assertEquals(1001, vo.getId());\n    }\n\n    private static class VO {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n    }\n    \n    public static class VO2 {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/SmartMatchTest_boolean_is.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\n\npublic class SmartMatchTest_boolean_is extends TestCase {\n    \n    public void test_0() throws Exception {\n        String text = \"{\\\"isVisible\\\":true}\";\n\n        VO vo = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(true, vo.isVisible());\n    }\n\n    public static class VO {\n\n        private boolean visible;\n\n        public boolean isVisible() {\n            return visible;\n        }\n\n        public void setVisible(boolean visible) {\n            this.visible = visible;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/SmartMatchTest_snake.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\n\npublic class SmartMatchTest_snake extends TestCase {\n    \n    public void test_0() throws Exception {\n        String text = \"{\\\"person_id\\\":1001}\";\n\n        VO vo = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(1001, vo.personId);\n    }\n\n    public static class VO {\n        public int personId;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/SmartMatchTest_snake2.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\n\npublic class SmartMatchTest_snake2 extends TestCase {\n    \n    public void test_0() throws Exception {\n        String text = \"{\\\"_id\\\":1001}\";\n\n        VO vo = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(1001, vo.id);\n    }\n\n    public static class VO {\n        public int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/SortedSetFieldTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.util.SortedSet;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class SortedSetFieldTest extends TestCase {\n\n    public void test_null() throws Exception {\n        Entity value = JSON.parseObject(\"{value:null}\", Entity.class);\n        Assert.assertNull(value.getValue());\n    }\n\n    public void test_empty() throws Exception {\n        Entity value = JSON.parseObject(\"{value:[]}\", Entity.class);\n        Assert.assertEquals(0, value.getValue().size());\n    }\n\n    private static class Entity {\n\n        private SortedSet value;\n\n        public SortedSet getValue() {\n            return value;\n        }\n\n        public void setValue(SortedSet value) {\n            this.value = value;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/SqlDateDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.SqlDateDeserializer;\n\npublic class SqlDateDeserializerTest extends TestCase {\n\n    public void test_bigdecimal() throws Exception {\n        Assert.assertEquals(1309861159710L, JSON.parseObject(\"1309861159710\", java.sql.Date.class).getTime());\n        Assert.assertEquals(1309861159710L, JSON.parseObject(\"1309861159710.0\", java.sql.Date.class).getTime());\n        Assert.assertEquals(1309861159710L, JSON.parseObject(\"'1309861159710'\", java.sql.Date.class).getTime());\n\n        Assert.assertEquals(null, JSON.parseObject(\"null\", Integer.class));\n\n        DefaultJSONParser parser = new DefaultJSONParser(\"null\", ParserConfig.getGlobalInstance(), JSON.DEFAULT_PARSER_FEATURE);\n        Assert.assertEquals(null, SqlDateDeserializer.instance.deserialze(parser, null, null));\n        Assert.assertEquals(JSONToken.LITERAL_INT, SqlDateDeserializer.instance.getFastMatchToken());\n    }\n}\n\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/SqlDateDeserializerTest2.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.sql.Date;\nimport java.text.SimpleDateFormat;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class SqlDateDeserializerTest2 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    \n    public void test_sqlDate() throws Exception {\n        java.util.Date date = new java.util.Date();\n        long millis = date.getTime();\n        long millis2 = (millis / 1000)  * 1000;\n        \n        SimpleDateFormat dateFormat = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss.SSS\", JSON.defaultLocale);\n        dateFormat.setTimeZone(JSON.defaultTimeZone);\n        String text = dateFormat.format(millis);\n        text = text.replace(' ', 'T');\n        \n        SimpleDateFormat dateFormat2 = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\", JSON.defaultLocale);\n        dateFormat2.setTimeZone(JSON.defaultTimeZone);\n        String text2 = dateFormat2.format(millis2);\n        \n        Assert.assertNull(JSON.parseObject(\"null\", Date.class));\n        Assert.assertNull(JSON.parseObject(\"\\\"\\\"\", Date.class));\n        Assert.assertNull(JSON.parseArray(\"null\", Date.class));\n        Assert.assertNull(JSON.parseArray(\"[null]\", Date.class).get(0));\n        Assert.assertNull(JSON.parseObject(\"{\\\"value\\\":null}\", VO.class).getValue());\n        \n        Assert.assertEquals(new Date(millis), JSON.parseObject(\"\" + millis, Date.class));\n        Assert.assertEquals(new Date(millis), JSON.parseObject(\"{\\\"@type\\\":\\\"java.sql.Date\\\",\\\"val\\\":\" + millis + \"}\", Date.class));\n        Assert.assertEquals(new Date(millis), JSON.parseObject(\"\\\"\" + millis + \"\\\"\", Date.class));\n        Assert.assertEquals(new Date(millis2), JSON.parseObject(\"\\\"\" + text2 + \"\\\"\", Date.class));\n        Assert.assertEquals(new Date(millis), JSON.parseObject(\"\\\"\" + text + \"\\\"\", Date.class));\n        \n        //System.out.println(JSON.toJSONString(new Time(millis), SerializerFeature.WriteClassName));\n        \n    }\n\n    public static class VO {\n\n        private Date value;\n\n        public Date getValue() {\n            return value;\n        }\n\n        public void setValue(Date value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/StackTraceElementDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\npublic class StackTraceElementDeserializerTest extends TestCase {\n\n    public void test_stack() throws Exception {\n        Assert.assertNull(JSON.parseObject(\"null\", StackTraceElement.class));\n        Assert.assertNull(JSON.parseArray(\"null\", StackTraceElement.class));\n        Assert.assertNull(JSON.parseArray(\"[null]\", StackTraceElement.class).get(0));\n        Assert.assertNull(JSON.parseObject(\"{\\\"value\\\":null}\", VO.class).getValue());\n        Assert.assertNull(JSON.parseObject(\"{\\\"className\\\":\\\"int\\\",\\\"methodName\\\":\\\"parseInt\\\"}\",\n                                           StackTraceElement.class).getFileName());\n        \n        Assert.assertEquals(StackTraceElement.class, ((StackTraceElement) JSON.parse(\"{\\\"@type\\\":\\\"java.lang.StackTraceElement\\\",\\\"className\\\":\\\"int\\\",\\\"methodName\\\":\\\"parseInt\\\",\\\"nativeMethod\\\":null}\")).getClass());\n    }\n\n    public void test_stack_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{}\", StackTraceElement.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_stack_error_1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[]\", StackTraceElement.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_stack_error_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"className\\\":null,\\\"methodName\\\":null,\\\"fileName\\\":null,\\\"lineNumber\\\":null,\\\"@type\\\":\\\"xxx\\\"}\", StackTraceElement.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_stack_error_3() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"@type\\\":int}\", StackTraceElement.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_stack_error_4() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"xxx\\\":33}\", StackTraceElement.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_stack_error_5() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"nativeMethod\\\":33}\", StackTraceElement.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_stack_error_6() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"lineNumber\\\":33}\", StackTraceElement.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_stack_error_7() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"fileName\\\":33}\", StackTraceElement.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_stack_error_8() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"methodName\\\":33}\", StackTraceElement.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_stack_error_9() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"className\\\":33}\", StackTraceElement.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_stack_error_10() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"lineNumber\\\":true}\", StackTraceElement.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class VO {\n\n        private StackTraceElement value;\n\n        public StackTraceElement getValue() {\n            return value;\n        }\n\n        public void setValue(StackTraceElement value) {\n            this.value = value;\n        }\n\n    }\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/TestEnum.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestEnum extends TestCase {\n\n    public static enum Type {\n        Big, Medium, Small\n    }\n\n    public void test_enum() throws Exception {\n        Assert.assertEquals(Type.Big, JSON.parseObject(\"{value:\\\"Big\\\"}\", VO.class).getValue());\n        Assert.assertEquals(Type.Big, JSON.parseObject(\"{\\\"value\\\":\\\"Big\\\"}\", VO.class).getValue());\n        Assert.assertEquals(Type.Big, JSON.parseObject(\"{value:0}\", VO.class).getValue());\n        Assert.assertEquals(Type.Big, JSON.parseObject(\"{\\\"value\\\":0}\", VO.class).getValue());\n    }\n\n    public static class VO {\n\n        private Type value;\n\n        public Type getValue() {\n            return value;\n        }\n\n        public void setValue(Type value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/TestNull.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.NumberDeserializer;\nimport com.alibaba.fastjson.serializer.CharacterCodec;\n\npublic class TestNull extends TestCase {\n\n    public void test_byte() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"null\", ParserConfig.getGlobalInstance(), JSON.DEFAULT_PARSER_FEATURE);\n\n        Assert.assertNull(new NumberDeserializer().deserialze(parser, null, null));\n    }\n    \n    public void test_char() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"null\", ParserConfig.getGlobalInstance(), JSON.DEFAULT_PARSER_FEATURE);\n        \n        Assert.assertNull(new CharacterCodec().deserialze(parser, null, null));\n    }\n    \n    public void test_short() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"null\", ParserConfig.getGlobalInstance(), JSON.DEFAULT_PARSER_FEATURE);\n        \n        Assert.assertNull(new NumberDeserializer().deserialze(parser, null, null));\n    }\n    \n    public void test_null() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"null\", ParserConfig.getGlobalInstance(), JSON.DEFAULT_PARSER_FEATURE);\n        \n        Assert.assertNull(new NumberDeserializer().deserialze(parser, null, null));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/ThrowableDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\n\npublic class ThrowableDeserializerTest extends TestCase {\n    public void test_0 () throws Exception {\n        Assert.assertEquals(Throwable.class, JSON.parseObject(\"{}\", Throwable.class).getClass());\n        Assert.assertEquals(Throwable.class, JSON.parseObject(\"{,,,}\", Throwable.class).getClass());\n        Assert.assertEquals(java.lang.RuntimeException.class, JSON.parseObject(\"{\\\"@type\\\":\\\"java.lang.RuntimeException\\\"}\", Throwable.class).getClass());\n        Assert.assertEquals(null, JSON.parseObject(\"{\\\"message\\\":null}\", Throwable.class).getMessage());\n        Assert.assertEquals(Exception.class, JSON.parseObject(\"{\\\"cause\\\":{}}\", Throwable.class).getCause().getClass());\n    }\n    \n    public void test_error() throws Exception {\n        JSONException error = null;\n        try {\n            JSON.parseObject(\"{\\\"@type\\\":33}\", Throwable.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error1() throws Exception {\n        JSONException error = null;\n        try {\n            Assert.assertEquals(null, JSON.parseObject(\"{\\\"message\\\":33}\", Throwable.class).getMessage());\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error2() throws Exception {\n        Exception error = null;\n        try {\n            Assert.assertEquals(null, JSON.parseObject(\"{}\", MyException.class).getMessage());\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error3() throws Exception {\n        Exception error = null;\n        try {\n            Assert.assertEquals(null, JSON.parseObject(\"{}\", MyException2.class).getMessage());\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public static class MyException extends Exception {\n        private MyException() {\n            \n        }\n    }\n    \n    public static class MyException2 extends Exception {\n        public MyException2() {\n            throw new RuntimeException();\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/ThrowableDeserializerTest_2.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class ThrowableDeserializerTest_2 extends TestCase {\n\n    public void test_0() throws Exception {\n        Assert.assertEquals(\"xxx\", JSON.parseObject(\"{\\\"message\\\":\\\"xxx\\\",,,}\", MyException.class).getMessage());\n    }\n\n    public void test_2() throws Exception {\n        Assert.assertEquals(null, JSON.parseObject(\"{\\\"message\\\":\\\"xxx\\\"}\", MyException2.class).getMessage());\n    }\n\n    public void test_3() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\",\\\"message\\\":\\\"xxx\\\"}\", MyException.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class MyException extends Exception {\n\n        public MyException(){\n\n        }\n\n        public MyException(String message){\n            super(message);\n        }\n    }\n\n    public static class MyException2 extends Exception {\n\n        public MyException2(){\n\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/TimeDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.sql.Time;\nimport java.text.SimpleDateFormat;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class TimeDeserializerTest extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_time() throws Exception {\n        long millis = System.currentTimeMillis();\n        \n        SimpleDateFormat format = new SimpleDateFormat(\"yyyy-MM-dd\", JSON.defaultLocale);\n        format.setTimeZone(JSON.defaultTimeZone);\n        String text = format.format(new java.util.Date(millis));\n        text += \"T\";\n        \n        SimpleDateFormat format2 = new SimpleDateFormat(\"HH:mm:ss.SSS\", JSON.defaultLocale);\n        format2.setTimeZone(JSON.defaultTimeZone);\n        text += format2.format(new java.util.Date(millis));\n        \n        Assert.assertNull(JSON.parseObject(\"null\", Time.class));\n        Assert.assertNull(JSON.parseObject(\"\\\"\\\"\", Time.class));\n        Assert.assertNull(JSON.parseArray(\"null\", Time.class));\n        Assert.assertNull(JSON.parseArray(\"[null]\", Time.class).get(0));\n        Assert.assertNull(JSON.parseObject(\"{\\\"value\\\":null}\", VO.class).getValue());\n        \n        Assert.assertEquals(new Time(millis), JSON.parseObject(\"\" + millis, Time.class));\n        Assert.assertEquals(new Time(millis), JSON.parseObject(\"{\\\"@type\\\":\\\"java.sql.Time\\\",\\\"val\\\":\" + millis + \"}\", Time.class));\n        Assert.assertEquals(new Time(millis), JSON.parseObject(\"\\\"\" + millis + \"\\\"\", Time.class));\n        Assert.assertEquals(new Time(millis), JSON.parseObject(\"\\\"\" + text + \"\\\"\", Time.class));\n        \n        //System.out.println(JSON.toJSONString(new Time(millis), SerializerFeature.WriteClassName));\n        \n    }\n\n    public static class VO {\n\n        private Time value;\n\n        public Time getValue() {\n            return value;\n        }\n\n        public void setValue(Time value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/TimeDeserializerTest2.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.sql.Time;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\npublic class TimeDeserializerTest2 extends TestCase {\n\n    public void test_0() throws Exception {\n        long millis = System.currentTimeMillis();\n        JSON.parse(\"{\\\"@type\\\":\\\"java.sql.Time\\\",\\\"value\\\":\" + millis + \"}\");\n    }\n\n    public void test_error() throws Exception {\n        long millis = System.currentTimeMillis();\n\n        Exception error = null;\n        try {\n            JSON.parse(\"{\\\"@type\\\":\\\"java.sql.Time\\\",33:\" + millis + \"}\");\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parse(\"{\\\"@type\\\":\\\"java.sql.Time\\\",\\\"value\\\":true}\");\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_2() throws Exception {\n        long millis = System.currentTimeMillis();\n\n        Exception error = null;\n        try {\n            JSON.parse(\"{\\\"@type\\\":\\\"java.sql.Time\\\",\\\"value\\\":\" + millis + \",}\");\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_3() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"time\\\":{}}\", VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class VO {\n\n        private Time time;\n\n        public Time getTime() {\n            return time;\n        }\n\n        public void setTime(Time time) {\n            this.time = time;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/TimeDeserializerTest3.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.sql.Time;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class TimeDeserializerTest3 extends TestCase {\n    public void test_time() throws Exception {\n        Assert.assertEquals(Time.valueOf(\"17:00:00\"), JSON.parseObject(\"\\\"17:00:00\\\"\", Time.class));\n    }\n    \n    public void test_time_null() throws Exception {\n        Assert.assertEquals(null, JSON.parseObject(\"\\\"\\\"\", Time.class));\n    }\n\n    public static class VO {\n\n        private Time value;\n\n        public Time getValue() {\n            return value;\n        }\n\n        public void setValue(Time value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/TimeZoneDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.MiscCodec;\n\nimport junit.framework.TestCase;\n\npublic class TimeZoneDeserializerTest extends TestCase {\n    public void test_timezone() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"null\", ParserConfig.getGlobalInstance(), JSON.DEFAULT_PARSER_FEATURE);\n        Assert.assertEquals(null, MiscCodec.instance.deserialze(parser, null, null));\n        Assert.assertEquals(JSONToken.LITERAL_STRING, MiscCodec.instance.getFastMatchToken());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/TreeMapDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.util.TreeMap;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TreeMapDeserializerTest extends TestCase {\n    public void test_0 () throws Exception {\n        TreeMap treeMap = JSON.parseObject(\"{}\", TreeMap.class);\n        Assert.assertEquals(0, treeMap.size());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/TreeSetFieldTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.util.TreeSet;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TreeSetFieldTest extends TestCase {\n\n    public void test_null() throws Exception {\n        Entity value = JSON.parseObject(\"{value:null}\", Entity.class);\n        Assert.assertNull(value.getValue());\n    }\n\n    public void test_empty() throws Exception {\n        Entity value = JSON.parseObject(\"{value:[]}\", Entity.class);\n        Assert.assertEquals(0, value.getValue().size());\n    }\n\n    private static class Entity {\n\n        private TreeSet value;\n\n        public TreeSet getValue() {\n            return value;\n        }\n\n        public void setValue(TreeSet value) {\n            this.value = value;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/URIDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.MiscCodec;\n\nimport junit.framework.TestCase;\n\npublic class URIDeserializerTest extends TestCase {\n\n    public void test_null() throws Exception {\n        String input = \"null\";\n        DefaultJSONParser parser = new DefaultJSONParser(input, ParserConfig.getGlobalInstance(), JSON.DEFAULT_PARSER_FEATURE);\n\n        MiscCodec deser = new MiscCodec();\n        Assert.assertEquals(JSONToken.LITERAL_STRING, deser.getFastMatchToken());\n\n        Assert.assertNull(deser.deserialze(parser, null, null));\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/URLDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.net.URL;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.MiscCodec;\n\npublic class URLDeserializerTest extends TestCase {\n\n    public void test_url() throws Exception {\n        Assert.assertEquals(new URL(\"http://www.alibaba.com\"), JSON.parseObject(\"'http://www.alibaba.com'\", URL.class));\n\n        Assert.assertEquals(null, JSON.parseObject(\"null\", URL.class));\n\n        DefaultJSONParser parser = new DefaultJSONParser(\"null\", ParserConfig.getGlobalInstance(), JSON.DEFAULT_PARSER_FEATURE);\n        Assert.assertEquals(null, MiscCodec.instance.deserialze(parser, null, null));\n        Assert.assertEquals(JSONToken.LITERAL_STRING, MiscCodec.instance.getFastMatchToken());\n\n    }\n\n    public void test_url_error() throws Exception {\n        JSONException ex = null;\n        try {\n            JSON.parseObject(\"'123'\", URL.class);\n        } catch (JSONException e) {\n            ex = e;\n        }\n        Assert.assertNotNull(ex);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/UUIDDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser;\n\nimport java.util.UUID;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.MiscCodec;\n\nimport junit.framework.TestCase;\n\npublic class UUIDDeserializerTest extends TestCase {\n\n    public void test_url() throws Exception {\n        UUID id = UUID.randomUUID();\n        Assert.assertEquals(id, JSON.parseObject(\"'\" + id.toString() + \"'\", UUID.class));\n\n        Assert.assertEquals(null, JSON.parseObject(\"null\", UUID.class));\n\n        DefaultJSONParser parser = new DefaultJSONParser(\"null\", ParserConfig.getGlobalInstance(), JSON.DEFAULT_PARSER_FEATURE);\n        Assert.assertEquals(null, MiscCodec.instance.deserialze(parser, null, null));\n        Assert.assertEquals(JSONToken.LITERAL_STRING, MiscCodec.instance.getFastMatchToken());\n\n    }\n\n    public void test_url_error() throws Exception {\n        JSONException ex = null;\n        try {\n            JSON.parseObject(\"'123'\", UUID.class);\n        } catch (JSONException e) {\n            ex = e;\n        }\n        Assert.assertNotNull(ex);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/array/FieldBoolArrayTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.array;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 11/01/2017.\n */\npublic class FieldBoolArrayTest extends TestCase {\n    public void test_intArray() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"value\\\":[1,null,true,false,0]}\", Model.class);\n        assertNotNull(model.value);\n        assertEquals(5, model.value.length);\n        assertEquals(true, model.value[0]);\n        assertEquals(false, model.value[1]);\n        assertEquals(true, model.value[2]);\n        assertEquals(false, model.value[3]);\n        assertEquals(false, model.value[4]);\n    }\n\n    public static class Model {\n        public boolean[] value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/array/FieldByteArrayTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.array;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 11/01/2017.\n */\npublic class FieldByteArrayTest extends TestCase {\n    public void test_intArray() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"value\\\":[1,null,3]}\", Model.class);\n        assertNotNull(model.value);\n        assertEquals(3, model.value.length);\n        assertEquals(1, model.value[0]);\n        assertEquals(0, model.value[1]);\n        assertEquals(3, model.value[2]);\n    }\n\n    public static class Model {\n        public byte[] value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/array/FieldDoubleArrayTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.array;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 11/01/2017.\n */\npublic class FieldDoubleArrayTest extends TestCase {\n    public void test_intArray() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"value\\\":[1,null,3]}\", Model.class);\n        assertNotNull(model.value);\n        assertEquals(3, model.value.length);\n        assertEquals(1.0D, model.value[0]);\n        assertEquals(0.0D, model.value[1]);\n        assertEquals(3.0D, model.value[2]);\n    }\n\n    public static class Model {\n        public double[] value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/array/FieldFloatArray2Test.java",
    "content": "package com.alibaba.json.bvt.parser.deser.array;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 11/01/2017.\n */\npublic class FieldFloatArray2Test extends TestCase {\n    public void test_intArray() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"value\\\":[[1,2.1,-0.3]]}\", Model.class);\n        assertNotNull(model.value);\n        assertEquals(1, model.value.length);\n        assertEquals(3, model.value[0].length);\n        assertEquals(1f, model.value[0][0]);\n        assertEquals(2.1f, model.value[0][1]);\n        assertEquals(-0.3f, model.value[0][2]);\n    }\n\n    public static class Model {\n        public float[][] value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/array/FieldFloatArray2Test_private.java",
    "content": "package com.alibaba.json.bvt.parser.deser.array;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 11/01/2017.\n */\npublic class FieldFloatArray2Test_private extends TestCase {\n    public void test_intArray() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"value\\\":[[1,2.1,-0.3]]}\", Model.class);\n        assertNotNull(model.value);\n        assertEquals(1, model.value.length);\n        assertEquals(3, model.value[0].length);\n        assertEquals(1f, model.value[0][0]);\n        assertEquals(2.1f, model.value[0][1]);\n        assertEquals(-0.3f, model.value[0][2]);\n    }\n\n    private static class Model {\n        public float[][] value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/array/FieldFloatArrayTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.array;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 11/01/2017.\n */\npublic class FieldFloatArrayTest extends TestCase {\n    public void test_intArray() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"value\\\":[1,2.1,-0.3]}\", Model.class);\n        assertNotNull(model.value);\n        assertEquals(3, model.value.length);\n        assertEquals(1f, model.value[0]);\n        assertEquals(2.1f, model.value[1]);\n        assertEquals(-0.3f, model.value[2]);\n    }\n\n    public static class Model {\n        public float[] value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/array/FieldFloatArrayTest2.java",
    "content": "package com.alibaba.json.bvt.parser.deser.array;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 11/01/2017.\n */\npublic class FieldFloatArrayTest2 extends TestCase {\n    public void test_intArray() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"value\\\":[1,null,3]}\", Model.class);\n        assertNotNull(model.value);\n        assertEquals(3, model.value.length);\n        assertEquals(1.0f, model.value[0]);\n        assertEquals(0.0f, model.value[1]);\n        assertEquals(3.0f, model.value[2]);\n    }\n\n    public static class Model {\n        public float[] value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/array/FieldFloatArrayTest_private.java",
    "content": "package com.alibaba.json.bvt.parser.deser.array;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 11/01/2017.\n */\npublic class FieldFloatArrayTest_private extends TestCase {\n    public void test_intArray() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"value\\\":[1,2.1,-0.3]}\", Model.class);\n        assertNotNull(model.value);\n        assertEquals(3, model.value.length);\n        assertEquals(1f, model.value[0]);\n        assertEquals(2.1f, model.value[1]);\n        assertEquals(-0.3f, model.value[2]);\n    }\n\n    private static class Model {\n        public float[] value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/array/FieldIntArrayTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.array;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 11/01/2017.\n */\npublic class FieldIntArrayTest extends TestCase {\n    public void test_intArray() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"value\\\":[1,2,3]}\", Model.class);\n        assertNotNull(model.value);\n        assertEquals(3, model.value.length);\n        assertEquals(1, model.value[0]);\n        assertEquals(2, model.value[1]);\n        assertEquals(3, model.value[2]);\n    }\n\n    public static class Model {\n        public int[] value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/array/FieldIntArrayTest2.java",
    "content": "package com.alibaba.json.bvt.parser.deser.array;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 11/01/2017.\n */\npublic class FieldIntArrayTest2 extends TestCase {\n    public void test_intArray() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"value\\\":[1,null,3]}\", Model.class);\n        assertNotNull(model.value);\n        assertEquals(3, model.value.length);\n        assertEquals(1, model.value[0]);\n        assertEquals(0, model.value[1]);\n        assertEquals(3, model.value[2]);\n    }\n\n    public static class Model {\n        public int[] value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/array/FieldIntArrayTest_private.java",
    "content": "package com.alibaba.json.bvt.parser.deser.array;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 11/01/2017.\n */\npublic class FieldIntArrayTest_private extends TestCase {\n    public void test_intArray() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"value\\\":[1,2,3]}\", Model.class);\n        assertNotNull(model.value);\n        assertEquals(3, model.value.length);\n        assertEquals(1, model.value[0]);\n        assertEquals(2, model.value[1]);\n        assertEquals(3, model.value[2]);\n    }\n\n    private static class Model {\n        public int[] value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/array/FieldLongArrayTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.array;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 11/01/2017.\n */\npublic class FieldLongArrayTest extends TestCase {\n    public void test_intArray() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"value\\\":[1,null,3]}\", Model.class);\n        assertNotNull(model.value);\n        assertEquals(3, model.value.length);\n        assertEquals(1, model.value[0]);\n        assertEquals(0, model.value[1]);\n        assertEquals(3, model.value[2]);\n    }\n\n    public static class Model {\n        public long[] value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/array/FieldShortArrayTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.array;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 11/01/2017.\n */\npublic class FieldShortArrayTest extends TestCase {\n    public void test_intArray() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"value\\\":[1,null,3]}\", Model.class);\n        assertNotNull(model.value);\n        assertEquals(3, model.value.length);\n        assertEquals(1, model.value[0]);\n        assertEquals(0, model.value[1]);\n        assertEquals(3, model.value[2]);\n    }\n\n    public static class Model {\n        public short[] value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/arraymapping/ArrayMappingErrorTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.arraymapping;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class ArrayMappingErrorTest extends TestCase {\n\n    public void test_for_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[1001,2002]\", Model.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Model {\n\n        public int    id;\n        public String name;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/arraymapping/ArrayMappingErrorTest2.java",
    "content": "package com.alibaba.json.bvt.parser.deser.arraymapping;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class ArrayMappingErrorTest2 extends TestCase {\n\n    public void test_for_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[1001,{}}\", Model.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Model {\n\n        public int    id;\n        public JSONObject obj;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/arraymapping/ArrayMappingErrorTest3.java",
    "content": "package com.alibaba.json.bvt.parser.deser.arraymapping;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class ArrayMappingErrorTest3 extends TestCase {\n\n    public void test_for_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[1001,{}}\", Model.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Model {\n\n        public int    id;\n        public JSONObject obj;\n        public JSONObject obj2;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/arraymapping/ArrayMapping_bool.java",
    "content": "package com.alibaba.json.bvt.parser.deser.arraymapping;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class ArrayMapping_bool extends TestCase {\n    public void test_for_true() throws Exception {\n        Model model = JSON.parseObject(\"[true,\\\"wenshao\\\"]\", Model.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(true, model.id);\n        Assert.assertEquals(\"wenshao\", model.name);\n    }\n    \n    public void test_for_false() throws Exception {\n        Model model = JSON.parseObject(\"[false,\\\"wenshao\\\"]\", Model.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(false, model.id);\n        Assert.assertEquals(\"wenshao\", model.name);\n    }\n    \n    public static class Model {\n        public boolean id;\n        public String name;\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/arraymapping/ArrayMapping_double.java",
    "content": "package com.alibaba.json.bvt.parser.deser.arraymapping;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class ArrayMapping_double extends TestCase {\n    public void test_float() throws Exception {\n        Model model = JSON.parseObject(\"[123.45,\\\"wenshao\\\"]\", Model.class, Feature.SupportArrayToBean);\n        Assert.assertTrue(123.45D == model.id);\n        Assert.assertEquals(\"wenshao\", model.name);\n    }\n    \n    public static class Model {\n        public double id;\n        public String name;\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/arraymapping/ArrayMapping_float.java",
    "content": "package com.alibaba.json.bvt.parser.deser.arraymapping;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class ArrayMapping_float extends TestCase {\n    public void test_float() throws Exception {\n        Model model = JSON.parseObject(\"[123.45,\\\"wenshao\\\"]\", Model.class, Feature.SupportArrayToBean);\n        Assert.assertTrue(123.45F == model.id);\n        Assert.assertEquals(\"wenshao\", model.name);\n    }\n    \n    public static class Model {\n        public float id;\n        public String name;\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/arraymapping/ArrayMapping_long.java",
    "content": "package com.alibaba.json.bvt.parser.deser.arraymapping;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class ArrayMapping_long extends TestCase {\n    public void test_for_error() throws Exception {\n        Model model = JSON.parseObject(\"[1001,\\\"wenshao\\\"]\", Model.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(1001, model.id);\n        Assert.assertEquals(\"wenshao\", model.name);\n    }\n    \n    public static class Model {\n        public long id;\n        public String name;\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/arraymapping/ArrayMapping_long_stream.java",
    "content": "package com.alibaba.json.bvt.parser.deser.arraymapping;\n\nimport java.io.StringReader;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class ArrayMapping_long_stream extends TestCase {\n    public void test_for_error() throws Exception {\n        \n        JSONReader reader = new JSONReader(new StringReader(\"[1001,\\\"wenshao\\\"]\"), Feature.SupportArrayToBean);\n        Model model = reader.readObject(Model.class);\n        Assert.assertEquals(1001, model.id);\n        Assert.assertEquals(\"wenshao\", model.name);\n    }\n    \n    public static class Model {\n        public long id;\n        public String name;\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/asm/TestASM.java",
    "content": "package com.alibaba.json.bvt.parser.deser.asm;\n\nimport java.math.BigDecimal;\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.json.test.benchmark.encode.EishayEncode;\n\npublic class TestASM extends TestCase {\n\n    public void test_asm() throws Exception {\n        String text = JSON.toJSONString(EishayEncode.mediaContent);\n        System.out.println(text);\n    }\n\n    public void test_0() throws Exception {\n        Department department = new Department();\n\n        Person person = new Person();\n        person.setId(123);\n        person.setName(\"刘伟加\");\n        person.setAge(40);\n        person.setSalary(new BigDecimal(\"123456\"));\n        person.getValues().add(\"A\");\n        person.getValues().add(\"B\");\n        person.getValues().add(\"C\");\n\n        department.getPersons().add(person);\n        department.getPersons().add(new Person());\n        department.getPersons().add(new Person());\n\n        {\n            String text = JSON.toJSONString(department);\n            System.out.println(text);\n        }\n        {\n            String text = JSON.toJSONString(department, SerializerFeature.WriteMapNullValue);\n            System.out.println(text);\n        }\n    }\n\n    public static class Person {\n\n        private int          id;\n        private String       name;\n        private int          age;\n        private BigDecimal   salary;\n\n        private List<Person> childrens = new ArrayList<Person>();\n\n        private List<String> values    = new ArrayList<String>();\n\n        public List<String> getValues() {\n            return values;\n        }\n\n        public void setValues(List<String> values) {\n            this.values = values;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public int getAge() {\n            return age;\n        }\n\n        public void setAge(int age) {\n            this.age = age;\n        }\n\n        public BigDecimal getSalary() {\n            return salary;\n        }\n\n        public void setSalary(BigDecimal salary) {\n            this.salary = salary;\n        }\n\n        public List<Person> getChildrens() {\n            return childrens;\n        }\n\n        public void setChildrens(List<Person> childrens) {\n            this.childrens = childrens;\n        }\n    }\n\n    public static class Department {\n\n        private int          id;\n        private String       name;\n        private List<Person> persons = new ArrayList<Person>();\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public List<Person> getPersons() {\n            return persons;\n        }\n\n        public void setPersons(List<Person> persons) {\n            this.persons = persons;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/asm/TestASM2.java",
    "content": "package com.alibaba.json.bvt.parser.deser.asm;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class TestASM2 extends TestCase {\n\n    public void test_0() throws Exception {\n        String text = JSON.toJSONString(new V0());\n        Assert.assertEquals(\"{}\", text);\n    }\n\n    public void test_1() throws Exception {\n        String text = JSON.toJSONString(new V1());\n        Assert.assertEquals(\"{\\\"list\\\":[]}\", text);\n    }\n\n    public void test_2() throws Exception {\n        V1 v = new V1();\n        v.getList().add(3);\n        v.getList().add(4);\n        String text = JSON.toJSONString(v);\n        Assert.assertEquals(\"{\\\"list\\\":[3,4]}\", text);\n    }\n\n    public void test_3() throws Exception {\n        V2 v = new V2();\n        v.setId(123);\n        v.setName(\"刘加大\");\n        String text = JSON.toJSONString(v);\n        Assert.assertEquals(\"{\\\"id\\\":123,\\\"name\\\":\\\"刘加大\\\"}\", text);\n    }\n\n    public void test_4() throws Exception {\n        V2 v = new V2();\n        v.setId(123);\n        String text = JSON.toJSONString(v);\n        Assert.assertEquals(\"{\\\"id\\\":123}\", text);\n    }\n\n    public void test_7() throws Exception {\n        V2 v = new V2();\n        v.setId(123);\n        String text = JSON.toJSONString(v, SerializerFeature.WriteMapNullValue);\n        Assert.assertEquals(\"{\\\"id\\\":123,\\\"name\\\":null}\", text);\n    }\n\n    public void test_8() throws Exception {\n        V3 v = new V3();\n        v.setText(\"xxx\");\n        String text = JSON.toJSONString(v, SerializerFeature.UseSingleQuotes);\n        Assert.assertEquals(\"{'text':'xxx'}\", text);\n    }\n\n    public void test_9() throws Exception {\n        V3 v = new V3();\n        v.setText(\"xxx\");\n        String text = JSON.toJSONString(v, SerializerFeature.UseSingleQuotes, SerializerFeature.WriteMapNullValue);\n        System.out.println(text);\n        \n        Assert.assertEquals(true, \"{'list':null,'text':'xxx'}\".equals(text) || \"{'text':'xxx','list':null}\".equals(text));\n        \n    }\n\n    public void f_test_3() throws Exception {\n        V1 v = new V1();\n        v.getList().add(3);\n        String text = JSON.toJSONString(v, SerializerFeature.UseSingleQuotes);\n        System.out.println(text);\n    }\n\n    public static class V0 {\n\n    }\n\n    public static class V1 {\n\n        private List<Integer> list = new ArrayList<Integer>();\n\n        public List<Integer> getList() {\n            return list;\n        }\n\n        public void setList(List<Integer> list) {\n            this.list = list;\n        }\n\n    }\n\n    public static class V2 {\n\n        private int    id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n\n    public static class V3 {\n\n        private List<Integer> list;\n        private String        text;\n\n        public List<Integer> getList() {\n            return list;\n        }\n\n        public void setList(List<Integer> list) {\n            this.list = list;\n        }\n\n        public String getText() {\n            return text;\n        }\n\n        public void setText(String text) {\n            this.text = text;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/asm/TestASMEishay.java",
    "content": "package com.alibaba.json.bvt.parser.deser.asm;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.json.test.benchmark.encode.EishayEncode;\n\nimport data.media.MediaContent;\n\npublic class TestASMEishay extends TestCase {\n    public void test_asm() throws Exception {\n        String text = JSON.toJSONString(EishayEncode.mediaContent, SerializerFeature.WriteEnumUsingToString);\n        System.out.println(text);\n        System.out.println(text.getBytes().length);\n        MediaContent object = JSON.parseObject(text, MediaContent.class);\n        String text2 = JSON.toJSONString(object, SerializerFeature.WriteEnumUsingToString);\n        System.out.println(text2);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/asm/TestASM_BigDecimal.java",
    "content": "package com.alibaba.json.bvt.parser.deser.asm;\n\nimport java.math.BigDecimal;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class TestASM_BigDecimal extends TestCase {\n\n    public void test_decimal() throws Exception {\n        V0 v = new V0();\n        String text = JSON.toJSONString(v, SerializerFeature.UseSingleQuotes);\n        Assert.assertEquals(\"{}\", text);\n    }\n\n    public void test_decimal_1() throws Exception {\n        V0 v = new V0();\n        v.setDecimal(new BigDecimal(\"123\"));\n        String text = JSON.toJSONString(v, SerializerFeature.UseSingleQuotes);\n        Assert.assertEquals(\"{'decimal':123}\", text);\n    }\n    \n\n    public void test_decimal_2() throws Exception {\n        V1 v = new V1();\n        v.setId(123);\n        String text = JSON.toJSONString(v, SerializerFeature.UseSingleQuotes);\n\n        Assert.assertEquals(\"{'id':123}\", text);\n    }\n    \n    public void test_decimal_3() throws Exception {\n        V1 v = new V1();\n        v.setId(123);\n        String text = JSON.toJSONString(v, SerializerFeature.UseSingleQuotes, SerializerFeature.WriteMapNullValue);\n        System.out.println(text);\n        \n        Assert.assertEquals(\"{'decimal':null,'id':123}\", text);\n    }\n\n    public static class V0 {\n\n        private BigDecimal decimal;\n\n        public BigDecimal getDecimal() {\n            return decimal;\n        }\n\n        public void setDecimal(BigDecimal decimal) {\n            this.decimal = decimal;\n        }\n\n    }\n\n    public static class V1 {\n\n        private int        id;\n        private BigDecimal decimal;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public BigDecimal getDecimal() {\n            return decimal;\n        }\n\n        public void setDecimal(BigDecimal decimal) {\n            this.decimal = decimal;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/asm/TestASM_Byte_0.java",
    "content": "package com.alibaba.json.bvt.parser.deser.asm;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestASM_Byte_0 extends TestCase {\n\n    public void test_asm() throws Exception {\n        V0 v = new V0();\n        String text = JSON.toJSONString(v);\n        V0 v1 = JSON.parseObject(text, V0.class);\n\n        Assert.assertEquals(v.getI(), v1.getI());\n    }\n\n    public static class V0 {\n\n        private Byte i = 12;\n\n        public Byte getI() {\n            return i;\n        }\n\n        public void setI(Byte i) {\n            this.i = i;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/asm/TestASM_Date.java",
    "content": "package com.alibaba.json.bvt.parser.deser.asm;\n\nimport java.util.Date;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\n\npublic class TestASM_Date extends TestCase {\n    public void test_date() throws Exception {\n        JSONSerializer serializer = new JSONSerializer();\n        serializer.write(new V0());\n\n        Assert.assertEquals(\"{}\", serializer.getWriter().toString());\n    }\n    \n    public static class V0 {\n\n        private Date d;\n\n        public V0(){\n\n        }\n\n        public V0(long value){\n            super();\n            this.d = new Date(value);\n        }\n\n        public Date getD() {\n            return d;\n        }\n\n        public void setD(Date d) {\n            this.d = d;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/asm/TestASM_Integer.java",
    "content": "package com.alibaba.json.bvt.parser.deser.asm;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestASM_Integer extends TestCase {\n\n    public void test_asm() throws Exception {\n        V0 v = new V0();\n        String text = JSON.toJSONString(v);\n        V0 v1 = JSON.parseObject(text, V0.class);\n        \n        Assert.assertEquals(v.getI(), v1.getI());\n    }\n\n    public static class V0 {\n\n        private Integer i = 12;\n\n        public Integer getI() {\n            return i;\n        }\n\n        public void setI(Integer i) {\n            this.i = i;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/asm/TestASM_List.java",
    "content": "package com.alibaba.json.bvt.parser.deser.asm;\n\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.concurrent.TimeUnit;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class TestASM_List extends TestCase {\n\n    public void test_decimal_3() throws Exception {\n        V0 v = new V0();\n        v.getList().add(new V1());\n        v.getList().add(new V1());\n        String text = JSON.toJSONString(v, SerializerFeature.UseSingleQuotes, SerializerFeature.WriteMapNullValue);\n        System.out.println(text);\n\n        // Assert.assertEquals(\"{'list':[{},{}]}\", text);\n    }\n\n    public static class V0 {\n\n        private List<V1> list = new ArrayList<V1>();\n\n        public List<V1> getList() {\n            return list;\n        }\n\n        public void setList(List<V1> list) {\n            this.list = list;\n        }\n\n    }\n\n    public static class V1 {\n\n        private int      id;\n        private TimeUnit unit = TimeUnit.SECONDS;\n        private String   name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public TimeUnit getUnit() {\n            return unit;\n        }\n\n        public void setUnit(TimeUnit unit) {\n            this.unit = unit;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/asm/TestASM_Long_0.java",
    "content": "package com.alibaba.json.bvt.parser.deser.asm;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestASM_Long_0 extends TestCase {\n\n    public void test_asm() throws Exception {\n        V0 v = new V0();\n        String text = JSON.toJSONString(v);\n        V0 v1 = JSON.parseObject(text, V0.class);\n\n        Assert.assertEquals(v.getI(), v1.getI());\n    }\n\n    public static class V0 {\n\n        private Long i = 12L;\n\n        public Long getI() {\n            return i;\n        }\n\n        public void setI(Long i) {\n            this.i = i;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/asm/TestASM_Short_0.java",
    "content": "package com.alibaba.json.bvt.parser.deser.asm;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestASM_Short_0 extends TestCase {\n\n    public void test_asm() throws Exception {\n        V0 v = new V0();\n        String text = JSON.toJSONString(v);\n        V0 v1 = JSON.parseObject(text, V0.class);\n\n        Assert.assertEquals(v.getI(), v1.getI());\n    }\n\n    public static class V0 {\n\n        private Short i = 12;\n\n        public Short getI() {\n            return i;\n        }\n\n        public void setI(Short i) {\n            this.i = i;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/asm/TestASM_boolean.java",
    "content": "package com.alibaba.json.bvt.parser.deser.asm;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestASM_boolean extends TestCase {\n\n    public void test_asm() throws Exception {\n        V0 v = new V0();\n        String text = JSON.toJSONString(v);\n        V0 v1 = JSON.parseObject(text, V0.class);\n        \n        Assert.assertEquals(v.isValue(), v1.isValue());\n    }\n\n    public static class V0 {\n\n        private boolean value = true;\n\n        public boolean isValue() {\n            return value;\n        }\n\n        public void setValue(boolean value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/asm/TestASM_byte.java",
    "content": "package com.alibaba.json.bvt.parser.deser.asm;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestASM_byte extends TestCase {\n\n    public void test_asm() throws Exception {\n        V0 v = new V0();\n        String text = JSON.toJSONString(v);\n        V0 v1 = JSON.parseObject(text, V0.class);\n        \n        Assert.assertEquals(v.getI(), v1.getI());\n    }\n\n    public static class V0 {\n\n        private byte i = 12;\n\n        public byte getI() {\n            return i;\n        }\n\n        public void setI(byte i) {\n            this.i = i;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/asm/TestASM_char.java",
    "content": "package com.alibaba.json.bvt.parser.deser.asm;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestASM_char extends TestCase {\n\n    public void test_asm() throws Exception {\n        V0 v = new V0();\n        String text = JSON.toJSONString(v);\n        V0 v1 = JSON.parseObject(text, V0.class);\n        \n        Assert.assertEquals(v.getValue(), v1.getValue());\n    }\n\n    public static class V0 {\n\n        private char value = '中';\n\n        public char getValue() {\n            return value;\n        }\n\n        public void setValue(char i) {\n            this.value = i;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/asm/TestASM_double.java",
    "content": "package com.alibaba.json.bvt.parser.deser.asm;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestASM_double extends TestCase {\n\n    public void test_asm() throws Exception {\n        V0 v = new V0();\n        String text = JSON.toJSONString(v);\n        V0 v1 = JSON.parseObject(text, V0.class);\n        \n        Assert.assertTrue(v.getValue() == v1.getValue());\n    }\n\n    public static class V0 {\n\n        private double value = 32.5F;\n\n        public double getValue() {\n            return value;\n        }\n\n        public void setValue(double i) {\n            this.value = i;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/asm/TestASM_float.java",
    "content": "package com.alibaba.json.bvt.parser.deser.asm;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestASM_float extends TestCase {\n\n    public void test_asm() throws Exception {\n        V0 v = new V0();\n        String text = JSON.toJSONString(v);\n        V0 v1 = JSON.parseObject(text, V0.class);\n        \n        Assert.assertTrue(v.getValue() == v1.getValue());\n    }\n\n    public static class V0 {\n\n        private float value = 32.5F;\n\n        public float getValue() {\n            return value;\n        }\n\n        public void setValue(float i) {\n            this.value = i;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/asm/TestASM_int.java",
    "content": "package com.alibaba.json.bvt.parser.deser.asm;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestASM_int extends TestCase {\n\n    public void test_asm() throws Exception {\n        V0 v = new V0();\n        String text = JSON.toJSONString(v);\n        V0 v1 = JSON.parseObject(text, V0.class);\n        \n        Assert.assertEquals(v.getI(), v1.getI());\n    }\n\n    public static class V0 {\n\n        private int i = 12;\n\n        public int getI() {\n            return i;\n        }\n\n        public V0 setI(int i) {\n            this.i = i;\n            return this;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/asm/TestASM_long.java",
    "content": "package com.alibaba.json.bvt.parser.deser.asm;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestASM_long extends TestCase {\n\n    public void test_asm() throws Exception {\n        V0 v = new V0();\n        String text = JSON.toJSONString(v);\n        V0 v1 = JSON.parseObject(text, V0.class);\n        \n        Assert.assertEquals(v.getI(), v1.getI());\n    }\n\n    public static class V0 {\n\n        private long i = 12;\n\n        public long getI() {\n            return i;\n        }\n\n        public void setI(long i) {\n            this.i = i;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/asm/TestASM_null.java",
    "content": "package com.alibaba.json.bvt.parser.deser.asm;\n\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class TestASM_null extends TestCase {\n\n    public void test_null() throws Exception {\n        List<VO> list = JSON.parseArray(\"[{\\\"f1\\\":\\\"v1\\\",\\\"f2\\\":\\\"v2\\\"},{\\\"f2\\\":\\\"v2\\\",\\\"f3\\\":\\\"v3\\\"},{\\\"f2\\\":\\\"v2\\\",\\\"f3\\\":\\\"v3\\\"},{\\\"f1\\\":\\\"v1\\\",\\\"f3\\\":\\\"v3\\\"}]\", VO.class);\n        String text = JSON.toJSONString(list, SerializerFeature.UseSingleQuotes);\n        Assert.assertEquals(\"[{'f1':'v1','f2':'v2'},{'f2':'v2','f3':'v3'},{'f2':'v2','f3':'v3'},{'f1':'v1','f3':'v3'}]\", text);\n//        System.out.println(text);\n    }\n    \n    public void test_null_notmatch() throws Exception {\n        List<VO> list = JSON.parseArray(\"[{\\\"f3\\\":\\\"v3\\\",\\\"f2\\\":\\\"v2\\\",\\\"f1\\\":\\\"v1\\\"}]\", VO.class);\n        String text = JSON.toJSONString(list, SerializerFeature.UseSingleQuotes);\n        Assert.assertEquals(\"[{'f1':'v1','f2':'v2','f3':'v3'}]\", text);\n//        System.out.println(text);\n    }\n    \n\n    public static class VO {\n\n        private String f1;\n        private String f2;\n        private String f3;\n\n        public VO(){\n\n        }\n\n        public VO(String f1, String f2, String f3){\n            super();\n            this.f1 = f1;\n            this.f2 = f2;\n            this.f3 = f3;\n        }\n\n        public String getF1() {\n            return f1;\n        }\n\n        public void setF1(String f1) {\n            this.f1 = f1;\n        }\n\n        public String getF2() {\n            return f2;\n        }\n\n        public void setF2(String f2) {\n            this.f2 = f2;\n        }\n\n        public String getF3() {\n            return f3;\n        }\n\n        public void setF3(String f3) {\n            this.f3 = f3;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/asm/TestASM_object.java",
    "content": "package com.alibaba.json.bvt.parser.deser.asm;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestASM_object extends TestCase {\n\n    public void test_asm() throws Exception {\n        V0 v = new V0();\n        String text = JSON.toJSONString(v);\n        V0 v1 = JSON.parseObject(text, V0.class);\n\n        Assert.assertEquals(v.getValue().getValue(), v1.getValue().getValue());\n    }\n\n    public static class V0 {\n\n        private V1 value = new V1();\n\n        public V1 getValue() {\n            return value;\n        }\n\n        public void setValue(V1 value) {\n            this.value = value;\n        }\n\n    }\n\n    public static class V1 {\n\n        private int value = 1234;\n\n        public int getValue() {\n            return value;\n        }\n\n        public void setValue(int value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/asm/TestASM_primitive.java",
    "content": "package com.alibaba.json.bvt.parser.deser.asm;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.ASMDeserializerFactory;\nimport com.alibaba.fastjson.util.ASMClassLoader;\nimport com.alibaba.fastjson.util.JavaBeanInfo;\n\nimport junit.framework.TestCase;\n\npublic class TestASM_primitive extends TestCase {\n\n    public void test_asm() throws Exception {\n\n        ASMDeserializerFactory factory = new ASMDeserializerFactory(new ASMClassLoader());\n        Exception error = null;\n        try {\n            JavaBeanInfo beanInfo = JavaBeanInfo.build(int.class, int.class, null);\n            factory.createJavaBeanDeserializer(ParserConfig.getGlobalInstance(), beanInfo);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/asm/TestASM_short.java",
    "content": "package com.alibaba.json.bvt.parser.deser.asm;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestASM_short extends TestCase {\n\n    public void test_asm() throws Exception {\n        V0 v = new V0();\n        String text = JSON.toJSONString(v);\n        V0 v1 = JSON.parseObject(text, V0.class);\n        Assert.assertEquals(v.getI(), v1.getI());\n    }\n\n    public static class V0 {\n\n        private short i = 12;\n\n        public short getI() {\n            return i;\n        }\n\n        public void setI(short i) {\n            this.i = i;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/awt/ColorDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.awt;\n\nimport java.awt.Color;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.serializer.AwtCodec;\n\nimport junit.framework.TestCase;\n\n\npublic class ColorDeserializerTest extends TestCase {\n    public void test_0 () throws Exception {\n        new AwtCodec().getFastMatchToken();\n    }\n    \n    public void test_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[]\", Color.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{33:44}\", Color.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"r\\\":44.}\", Color.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_3() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"x\\\":44}\", Color.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/awt/FontDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.awt;\n\nimport java.awt.Font;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.serializer.AwtCodec;\n\nimport junit.framework.TestCase;\n\n\npublic class FontDeserializerTest extends TestCase {\n    public void test_0 () throws Exception {\n        AwtCodec.instance.getFastMatchToken();\n        \n        Assert.assertNull(JSON.parseObject(\"null\", StackTraceElement.class));\n        Assert.assertNull(JSON.parseArray(\"null\", StackTraceElement.class));\n        Assert.assertNull(JSON.parseArray(\"[null]\", StackTraceElement.class).get(0));\n        Assert.assertNull(JSON.parseObject(\"{\\\"value\\\":null}\", VO.class).getValue());\n    }\n    \n    public void test_stack_error_0() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[]\", Font.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_stack_error_1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{33:22}\", Font.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_stack_error_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"name\\\":22}\", Font.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_stack_error_3() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"style\\\":true}\", Font.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_stack_error_4() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"size\\\":\\\"33\\\"}\", Font.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_stack_error_5() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"xxx\\\":22}\", Font.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public static class VO {\n\n        private Font value;\n\n        public Font getValue() {\n            return value;\n        }\n\n        public void setValue(Font value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/awt/PointDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.awt;\n\nimport java.awt.Point;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.serializer.AwtCodec;\n\nimport junit.framework.TestCase;\n\n\npublic class PointDeserializerTest extends TestCase {\n    public void test_0 () throws Exception {\n        new AwtCodec().getFastMatchToken();\n    }\n    \n    public void test_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[]\", Point.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{33:44}\", Point.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"r\\\":44.}\", Point.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_3() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"x\\\":\\\"aaa\\\"}\", Point.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/awt/PointDeserializerTest2.java",
    "content": "package com.alibaba.json.bvt.parser.deser.awt;\n\nimport java.awt.Point;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\n\npublic class PointDeserializerTest2 extends TestCase {\n    public void test_error_3() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"z\\\":44}\", Point.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/awt/RectangleDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.awt;\n\nimport java.awt.Font;\nimport java.awt.Rectangle;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.serializer.AwtCodec;\n\nimport junit.framework.TestCase;\n\n\npublic class RectangleDeserializerTest extends TestCase {\n    public void test_0 () throws Exception {\n        AwtCodec.instance.getFastMatchToken();\n        \n        Assert.assertNull(JSON.parseObject(\"null\", Rectangle.class));\n        Assert.assertNull(JSON.parseArray(\"null\", Rectangle.class));\n        Assert.assertNull(JSON.parseArray(\"[null]\", Rectangle.class).get(0));\n        Assert.assertNull(JSON.parseObject(\"{\\\"value\\\":null}\", VO.class).getValue());\n    }\n    \n    public void test_stack_error_0() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[]\", Rectangle.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_stack_error_1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{33:22}\", Rectangle.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_stack_error_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"name\\\":22}\", Rectangle.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_stack_error_3() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"style\\\":true}\", Rectangle.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_stack_error_4() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"size\\\":\\\"33\\\"}\", Rectangle.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_stack_error_5() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"xxx\\\":22}\", Font.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public static class VO {\n\n        private Rectangle value;\n\n        public Rectangle getValue() {\n            return value;\n        }\n\n        public void setValue(Rectangle value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/date/DateDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.date;\n\nimport java.util.Date;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class DateDeserializerTest extends TestCase {\n\n    public void test_date() throws Exception {\n        long millis = System.currentTimeMillis();\n        Assert.assertEquals(new Date(millis), JSON.parseObject(\"'\" + millis + \"'\", Date.class));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/date/DateFormatDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.date;\n\nimport java.text.SimpleDateFormat;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class DateFormatDeserializerTest extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_dateFormat_empty() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"format\\\":\\\"\\\"}\", VO.class);\n        Assert.assertEquals(null, vo.getFormat());\n    }\n    \n    public void test_dateFormat_array() throws Exception {\n        List<SimpleDateFormat> list = JSON.parseArray(\"[\\\"\\\",null,\\\"yyyy\\\"]\", SimpleDateFormat.class);\n        Assert.assertEquals(null, list.get(0));\n        Assert.assertEquals(null, list.get(1));\n        \n        SimpleDateFormat dateFormat = new SimpleDateFormat(\"yyyy\", JSON.defaultLocale);\n        dateFormat.setTimeZone(JSON.defaultTimeZone);\n        Assert.assertEquals(dateFormat, list.get(2));\n    }\n\n    public void test_dateFormat_null() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"format\\\":null}\", VO.class);\n        Assert.assertEquals(null, vo.getFormat());\n    }\n\n    public void test_dateFormat_yyyy() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"format\\\":\\\"yyyy\\\"}\", VO.class);\n        \n        SimpleDateFormat dateFormat = new SimpleDateFormat(\"yyyy\", JSON.defaultLocale);\n        dateFormat.setTimeZone(JSON.defaultTimeZone);\n        Assert.assertEquals(dateFormat, vo.getFormat());\n    }\n\n    public void test_dateFormat_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"format\\\":123}\", VO.class);\n        } catch (Exception e) {\n            error = e;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class VO {\n\n        private SimpleDateFormat format;\n\n        public VO(){\n\n        }\n\n        public VO(SimpleDateFormat format){\n            this.format = format;\n        }\n\n        public SimpleDateFormat getFormat() {\n            return format;\n        }\n\n        public void setFormat(SimpleDateFormat format) {\n            this.format = format;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/date/DateParseTest1.java",
    "content": "package com.alibaba.json.bvt.parser.deser.date;\n\nimport java.util.Calendar;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\n\npublic class DateParseTest1 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_date() throws Exception {\n        String text = \"\\\"1979-07-14\\\"\";\n        Date date = JSON.parseObject(text, Date.class);\n        Calendar calendar = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n        calendar.setTime(date);\n        Assert.assertEquals(1979, calendar.get(Calendar.YEAR));\n        Assert.assertEquals(6, calendar.get(Calendar.MONTH));\n        Assert.assertEquals(14, calendar.get(Calendar.DAY_OF_MONTH));\n        \n        Assert.assertEquals(0, calendar.get(Calendar.HOUR_OF_DAY));\n        Assert.assertEquals(0, calendar.get(Calendar.MINUTE));\n        Assert.assertEquals(0, calendar.get(Calendar.SECOND));\n        Assert.assertEquals(0, calendar.get(Calendar.MILLISECOND));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/date/DateParseTest10.java",
    "content": "package com.alibaba.json.bvt.parser.deser.date;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class DateParseTest10 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_date() throws Exception {\n        String text = \"{\\\"value\\\":\\\"1979-07-14\\\"}\";\n        VO vo = JSON.parseObject(text, VO.class);\n        \n        SimpleDateFormat dateFormat = new SimpleDateFormat(\"yyyy-MM-dd\", JSON.defaultLocale);\n        dateFormat.setTimeZone(JSON.defaultTimeZone);\n        Assert.assertEquals(vo.getValue(), dateFormat.parse(\"1979-07-14\").getTime());\n    }\n\n    public static class VO {\n\n        private long value;\n\n        public long getValue() {\n            return value;\n        }\n\n        public VO setValue(long value) {\n            this.value = value;\n            return this;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/date/DateParseTest11.java",
    "content": "package com.alibaba.json.bvt.parser.deser.date;\n\nimport java.util.Date;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class DateParseTest11 extends TestCase {\n\n    public void test() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"date\\\":\\\"2012-04-01T12:04:05.555\\\"}\", VO.class);\n    }\n\n    public static class VO {\n\n        private Date date;\n\n        public Date getDate() {\n            return date;\n        }\n\n        public void setDate(Date date) {\n            this.date = date;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/date/DateParseTest12.java",
    "content": "package com.alibaba.json.bvt.parser.deser.date;\n\nimport java.util.Date;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class DateParseTest12 extends TestCase {\n\n    public void test() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"date\\\":\\\"20129401\\\"\", VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class VO {\n\n        private Date date;\n\n        public Date getDate() {\n            return date;\n        }\n\n        public void setDate(Date date) {\n            this.date = date;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/date/DateParseTest13.java",
    "content": "package com.alibaba.json.bvt.parser.deser.date;\n\nimport java.util.Date;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class DateParseTest13 extends TestCase {\n\n    public void test() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"date\\\":\\\"2012040125000a\\\"}\", VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class VO {\n\n        private Date date;\n\n        public Date getDate() {\n            return date;\n        }\n\n        public void setDate(Date date) {\n            this.date = date;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/date/DateParseTest14.java",
    "content": "package com.alibaba.json.bvt.parser.deser.date;\n\nimport java.util.Date;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class DateParseTest14 extends TestCase {\n\n    public void test_0_lt() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"date\\\":\\\"19790714130723#56\\\"}\", VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_0_gt() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"date\\\":\\\"19790714130723A56\\\"}\", VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_1_lt() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"date\\\":\\\"197907141307231#6\\\"}\", VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_1_gt() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"date\\\":\\\"197907141307231A6\\\"}\", VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_2_lt() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"date\\\":\\\"1979071413072315#\\\"}\", VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_2_gt() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"date\\\":\\\"1979071413072315A\\\"}\", VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class VO {\n\n        private Date date;\n\n        public Date getDate() {\n            return date;\n        }\n\n        public void setDate(Date date) {\n            this.date = date;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/date/DateParseTest2.java",
    "content": "package com.alibaba.json.bvt.parser.deser.date;\n\nimport java.util.Calendar;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\n\npublic class DateParseTest2 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_date() throws Exception {\n        String text = \"\\\"1979-07-14 13:07:23\\\"\";\n        Date date = JSON.parseObject(text, Date.class);\n        Calendar calendar = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n        calendar.setTime(date);\n        \n        Assert.assertEquals(1979, calendar.get(Calendar.YEAR));\n        Assert.assertEquals(6, calendar.get(Calendar.MONTH));\n        Assert.assertEquals(14, calendar.get(Calendar.DAY_OF_MONTH));\n        \n        Assert.assertEquals(13, calendar.get(Calendar.HOUR_OF_DAY));\n        Assert.assertEquals(7, calendar.get(Calendar.MINUTE));\n        Assert.assertEquals(23, calendar.get(Calendar.SECOND));\n        Assert.assertEquals(0, calendar.get(Calendar.MILLISECOND));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/date/DateParseTest3.java",
    "content": "package com.alibaba.json.bvt.parser.deser.date;\n\nimport java.util.Calendar;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\n\npublic class DateParseTest3 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_date() throws Exception {\n        String text = \"\\\"1979-07-14 13:07:23.456\\\"\";\n        Date date = JSON.parseObject(text, Date.class);\n        Calendar calendar = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n        calendar.setTime(date);\n        \n        Assert.assertEquals(1979, calendar.get(Calendar.YEAR));\n        Assert.assertEquals(6, calendar.get(Calendar.MONTH));\n        Assert.assertEquals(14, calendar.get(Calendar.DAY_OF_MONTH));\n        \n        Assert.assertEquals(13, calendar.get(Calendar.HOUR_OF_DAY));\n        Assert.assertEquals(7, calendar.get(Calendar.MINUTE));\n        Assert.assertEquals(23, calendar.get(Calendar.SECOND));\n        Assert.assertEquals(456, calendar.get(Calendar.MILLISECOND));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/date/DateParseTest4.java",
    "content": "package com.alibaba.json.bvt.parser.deser.date;\n\nimport java.util.Calendar;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\n\npublic class DateParseTest4 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_date() throws Exception {\n        String text = \"\\\"1979-07-14T13:07:23\\\"\";\n        Date date = JSON.parseObject(text, Date.class);\n        Calendar calendar = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n        calendar.setTime(date);\n        \n        Assert.assertEquals(1979, calendar.get(Calendar.YEAR));\n        Assert.assertEquals(6, calendar.get(Calendar.MONTH));\n        Assert.assertEquals(14, calendar.get(Calendar.DAY_OF_MONTH));\n        \n        Assert.assertEquals(13, calendar.get(Calendar.HOUR_OF_DAY));\n        Assert.assertEquals(7, calendar.get(Calendar.MINUTE));\n        Assert.assertEquals(23, calendar.get(Calendar.SECOND));\n        Assert.assertEquals(0, calendar.get(Calendar.MILLISECOND));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/date/DateParseTest5.java",
    "content": "package com.alibaba.json.bvt.parser.deser.date;\n\nimport java.util.Calendar;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\n\npublic class DateParseTest5 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_date() throws Exception {\n        String text = \"\\\"1979-07-14T13:07:23.456\\\"\";\n        Date date = JSON.parseObject(text, Date.class);\n        Calendar calendar = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n        calendar.setTime(date);\n        \n        Assert.assertEquals(1979, calendar.get(Calendar.YEAR));\n        Assert.assertEquals(6, calendar.get(Calendar.MONTH));\n        Assert.assertEquals(14, calendar.get(Calendar.DAY_OF_MONTH));\n        \n        Assert.assertEquals(13, calendar.get(Calendar.HOUR_OF_DAY));\n        Assert.assertEquals(7, calendar.get(Calendar.MINUTE));\n        Assert.assertEquals(23, calendar.get(Calendar.SECOND));\n        Assert.assertEquals(456, calendar.get(Calendar.MILLISECOND));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/date/DateParseTest6.java",
    "content": "package com.alibaba.json.bvt.parser.deser.date;\n\nimport java.util.Calendar;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\n\npublic class DateParseTest6 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_date() throws Exception {\n        String text = \"\\\"19790714\\\"\";\n        Date date = JSON.parseObject(text, Date.class);\n        Calendar calendar = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n        calendar.setTime(date);\n        \n        Assert.assertEquals(1979, calendar.get(Calendar.YEAR));\n        Assert.assertEquals(6, calendar.get(Calendar.MONTH));\n        Assert.assertEquals(14, calendar.get(Calendar.DAY_OF_MONTH));\n        \n        Assert.assertEquals(0, calendar.get(Calendar.HOUR_OF_DAY));\n        Assert.assertEquals(0, calendar.get(Calendar.MINUTE));\n        Assert.assertEquals(0, calendar.get(Calendar.SECOND));\n        Assert.assertEquals(0, calendar.get(Calendar.MILLISECOND));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/date/DateParseTest7.java",
    "content": "package com.alibaba.json.bvt.parser.deser.date;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Calendar;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\n\npublic class DateParseTest7 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_date() throws Exception {\n        System.out.println(System.currentTimeMillis());\n        \n        SimpleDateFormat dateFormat = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\", JSON.defaultLocale);\n        dateFormat.setTimeZone(JSON.defaultTimeZone);\n        \n        System.out.println(dateFormat.parse(\"1970-01-01 20:00:01\").getTime());\n        System.out.println(new Date().toString());\n        \n        //1369273142603\n        String text = \"\\\"19790714130723\\\"\";\n        Date date = JSON.parseObject(text, Date.class);\n        Calendar calendar = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n        calendar.setTime(date);\n        \n        Assert.assertEquals(1979, calendar.get(Calendar.YEAR));\n        Assert.assertEquals(6, calendar.get(Calendar.MONTH));\n        Assert.assertEquals(14, calendar.get(Calendar.DAY_OF_MONTH));\n        \n        Assert.assertEquals(13, calendar.get(Calendar.HOUR_OF_DAY));\n        Assert.assertEquals(7, calendar.get(Calendar.MINUTE));\n        Assert.assertEquals(23, calendar.get(Calendar.SECOND));\n        Assert.assertEquals(0, calendar.get(Calendar.MILLISECOND));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/date/DateParseTest8.java",
    "content": "package com.alibaba.json.bvt.parser.deser.date;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Calendar;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\n\npublic class DateParseTest8 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_date() throws Exception {\n        System.out.println(System.currentTimeMillis());\n        \n        SimpleDateFormat dateFormat = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\", JSON.defaultLocale);\n        dateFormat.setTimeZone(JSON.defaultTimeZone);\n        System.out.println(dateFormat.parse(\"1970-01-01 20:00:01\").getTime());\n        System.out.println(new Date().toString());\n        \n        //1369273142603\n        String text = \"\\\"19790714130723456\\\"\";\n        Date date = JSON.parseObject(text, Date.class);\n        Calendar calendar = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n        calendar.setTime(date);\n        \n        Assert.assertEquals(1979, calendar.get(Calendar.YEAR));\n        Assert.assertEquals(6, calendar.get(Calendar.MONTH));\n        Assert.assertEquals(14, calendar.get(Calendar.DAY_OF_MONTH));\n        \n        Assert.assertEquals(13, calendar.get(Calendar.HOUR_OF_DAY));\n        Assert.assertEquals(7, calendar.get(Calendar.MINUTE));\n        Assert.assertEquals(23, calendar.get(Calendar.SECOND));\n        Assert.assertEquals(456, calendar.get(Calendar.MILLISECOND));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/date/DateParseTest9.java",
    "content": "package com.alibaba.json.bvt.parser.deser.date;\n\nimport java.util.Calendar;\nimport java.util.Date;\nimport java.util.Random;\nimport java.util.TimeZone;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.serializer.CalendarCodec;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\n\npublic class DateParseTest9 extends TestCase {\n\n    private static Random random = new Random();\n    private TimeZone original = TimeZone.getDefault();\n    private String[] zoneIds = TimeZone.getAvailableIDs();\n\n    @Override\n    public void setUp() {\n        int index = random.nextInt(zoneIds.length);\n        TimeZone timeZone = TimeZone.getTimeZone(zoneIds[index]);\n        TimeZone.setDefault(timeZone);\n        JSON.defaultTimeZone = timeZone;\n    }\n\n    @Override\n    public void tearDown () {\n        TimeZone.setDefault(original);\n        JSON.defaultTimeZone = original;\n    }\n\n    public void test_date() throws Exception {\n        String text = \"\\\"/Date(1242357713797+0800)/\\\"\";\n        Date date = JSON.parseObject(text, Date.class);\n        assertEquals(date.getTime(), 1242357713797L);\n        \n        assertEquals(JSONToken.LITERAL_INT, CalendarCodec.instance.getFastMatchToken());\n\n        text = \"\\\"/Date(1242357713797+0545)/\\\"\";\n        date = JSON.parseObject(text, Date.class);\n        assertEquals(date.getTime(), 1242357713797L);\n        assertEquals(JSONToken.LITERAL_INT, CalendarCodec.instance.getFastMatchToken());\n    }\n    \n    public void test_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"date\\\":\\\"/Date(1242357713797A0800)/\\\"}\", VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n    \n    public void test_error_1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"date\\\":\\\"/Date(1242357713797#0800)/\\\"}\", VO.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public void test_dates_different_timeZones() {\n        Calendar cal = Calendar.getInstance();\n        Date now = cal.getTime();\n\n        VO vo = new VO();\n        vo.date = now;\n\n        String json = JSON.toJSONString(vo);\n        VO result = JSON.parseObject(json, VO.class);\n        assertEquals(vo.date, result.date);\n\n        // with iso-format\n        json = JSON.toJSONString(vo, SerializerFeature.UseISO8601DateFormat);\n        result = JSON.parseObject(json, VO.class);\n        assertEquals(JSON.toJSONString(vo.date), JSON.toJSONString(result.date));\n    }\n\n    public static class VO {\n        public Date date;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/date/DateTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.date;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport com.alibaba.fastjson.parser.JSONReaderScanner;\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.ParserConfig;\n\npublic class DateTest extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(\"{\\\"date\\\":\\\"2012/04-01\\\"}\", ParserConfig.getGlobalInstance(),\n                                                         0);\n        parser.setDateFormat(\"yyyy/MM-dd\");\n        VO vo = parser.parseObject(VO.class);\n        \n        SimpleDateFormat dateFormat = new SimpleDateFormat(\"yyyy/MM-dd\", JSON.defaultLocale);\n        dateFormat.setTimeZone(JSON.defaultTimeZone);\n        Assert.assertEquals(dateFormat.parse(\"2012/04-01\"), vo.getDate());\n        \n        parser.close();\n    }\n\n    public void test_reader() throws Exception {\n\n        DefaultJSONParser parser = new DefaultJSONParser(new JSONReaderScanner(\"{\\\"date\\\":\\\"2012/04-01\\\"}\", 0));\n        parser.setDateFormat(\"yyyy/MM-dd\");\n        VO vo = parser.parseObject(VO.class);\n\n        SimpleDateFormat dateFormat = new SimpleDateFormat(\"yyyy/MM-dd\", JSON.defaultLocale);\n        dateFormat.setTimeZone(JSON.defaultTimeZone);\n        Assert.assertEquals(dateFormat.parse(\"2012/04-01\"), vo.getDate());\n\n        parser.close();\n    }\n\n    public static class VO {\n\n        private Date date;\n\n        public Date getDate() {\n            return date;\n        }\n\n        public void setDate(Date date) {\n            this.date = date;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/deny/DenyTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.deny;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.json.bvtVO.deny.A;\n\nimport junit.framework.TestCase;\n\npublic class DenyTest extends TestCase {\n\n    public void test_0() throws Exception {\n        String text = \"{}\";\n\n        ParserConfig config = new ParserConfig();\n\n        config.addDeny(null);\n        config.addDeny(\"com.alibaba.json.bvtVO.deny\");\n\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"@type\\\":\\\"com.alibaba.json.bvtVO.deny$A\\\"}\", Object.class, config, JSON.DEFAULT_PARSER_FEATURE);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n        \n        JSON.parseObject(text, B.class, config, JSON.DEFAULT_PARSER_FEATURE);\n    }\n\n    public void test_1() throws Exception {\n        String text = \"{}\";\n\n        ParserConfig config = new ParserConfig();\n\n        config.addDeny(null);\n        config.addDeny(\"com.alibaba.json.bvt.parser.deser.deny.DenyTest.B\");\n\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"@type\\\":\\\"LLLcom.alibaba.json.bvt.parser.deser.deny.DenyTest$B;;;\\\"}\", Object.class, config, JSON.DEFAULT_PARSER_FEATURE);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n\n        JSON.parseObject(text, B.class, config, JSON.DEFAULT_PARSER_FEATURE);\n    }\n\n    \n  public static class B {\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/deny/DenyTest10.java",
    "content": "package com.alibaba.json.bvt.parser.deser.deny;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport junit.framework.TestCase;\n\nimport java.util.HashMap;\nimport java.util.Properties;\nimport java.util.UUID;\nimport java.util.WeakHashMap;\nimport java.util.concurrent.ConcurrentHashMap;\n\npublic class DenyTest10 extends TestCase {\n    ParserConfig config = new ParserConfig();\n\n    protected void setUp() throws Exception {\n        assertFalse(config.isAutoTypeSupport());\n\n        Properties properties = new Properties();\n        properties.put(ParserConfig.AUTOTYPE_SUPPORT_PROPERTY, \"false\");\n        // -ea -Dfastjson.parser.autoTypeAccept=com.alibaba.json.bvt.parser.deser.DenyTest9\n        config.configFromPropety(properties);\n    }\n\n    public void test_hashMap() throws Exception {\n        Object obj = JSON.parseObject(\"{\\\"@type\\\":\\\"java.util.HashMap\\\"}\", Object.class, config);\n        assertEquals(HashMap.class, obj.getClass());\n    }\n\n    public void test_hashMap_weekHashMap() throws Exception {\n        Object obj = JSON.parseObject(\"{\\\"@type\\\":\\\"java.util.WeakHashMap\\\"}\", Object.class, config);\n        assertEquals(WeakHashMap.class, obj.getClass());\n    }\n\n    public void test_hashMap_concurrentHashMap() throws Exception {\n        Object obj = JSON.parseObject(\"{\\\"@type\\\":\\\"java.util.concurrent.ConcurrentHashMap\\\"}\", Object.class, config);\n        assertEquals(ConcurrentHashMap.class, obj.getClass());\n    }\n\n    public void test_uuid() throws Exception {\n        System.out.println(UUID.randomUUID());\n        Object obj = JSON.parseObject(\"{\\\"@type\\\":\\\"java.util.UUID\\\",\\\"val\\\":\\\"290c580d-efa3-432b-8475-2655e336232a\\\"}\", Object.class, config);\n        assertEquals(UUID.class, obj.getClass());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/deny/DenyTest11.java",
    "content": "package com.alibaba.json.bvt.parser.deser.deny;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.util.Properties;\n\npublic class DenyTest11 extends TestCase {\n    ParserConfig config = new ParserConfig();\n\n    protected void setUp() throws Exception {\n        assertFalse(config.isAutoTypeSupport());\n\n        Properties properties = new Properties();\n        properties.put(ParserConfig.AUTOTYPE_SUPPORT_PROPERTY, \"false\");\n        config.addAccept(\"com.alibaba.json.bvt.parser.deser.deny.DenyTest11.Model\");\n        // -ea -Dfastjson.parser.autoTypeAccept=com.alibaba.json.bvt.parser.deser.deny.DenyTest9\n        config.configFromPropety(properties);\n\n        assertFalse(config.isAutoTypeSupport());\n\n        config.clearDeserializers();\n    }\n\n    public void test_autoTypeDeny() throws Exception {\n        Model model = new Model();\n        model.a = new B();\n        String text = JSON.toJSONString(model, SerializerFeature.WriteClassName);\n        System.out.println(text);\n\n        Object obj = JSON.parseObject(text, Object.class, config);\n        assertEquals(Model.class, obj.getClass());\n    }\n    \n    public static class Model {\n        public A a;\n    }\n\n    public static class Model2 {\n        public A a;\n    }\n\n    public static class A {\n\n    }\n\n    public static class B extends A {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/deny/DenyTest12.java",
    "content": "package com.alibaba.json.bvt.parser.deser.deny;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 29/01/2017.\n */\npublic class DenyTest12 extends TestCase {\n    public void test_deny() throws Exception {\n        String text = \"{\\\"value\\\":{\\\"@type\\\":\\\"java.lang.Thread\\\"}}\";\n\n        Exception error = null;\n        try {\n            JSON.parseObject(text, Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public static class Model {\n        public Value value;\n    }\n\n    public static class Value {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/deny/DenyTest13.java",
    "content": "package com.alibaba.json.bvt.parser.deser.deny;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 29/01/2017.\n */\npublic class DenyTest13 extends TestCase {\n    public void test_deny() throws Exception {\n        String text = \"{\\\"value\\\":{\\\"@type\\\":\\\"java.lang.Thread\\\"}}\";\n        Exception error = null;\n        try {\n            JSON.parseObject(text, Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public static class Model {\n        public Object value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/deny/DenyTest14.java",
    "content": "package com.alibaba.json.bvt.parser.deser.deny;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 29/01/2017.\n */\npublic class DenyTest14 extends TestCase {\n    public void test_deny() throws Exception {\n        String text = \"{\\\"value\\\":{\\\"@type\\\":\\\"com.alibaba.json.bvt.parser.deser.deny.DenyTest14$MyException\\\"}}\";\n        Model model = JSON.parseObject(text, Model.class);\n        assertTrue(model.value instanceof MyException);\n    }\n\n    public static class Model {\n        public Throwable value;\n    }\n\n    public static class MyException extends Exception {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/deny/DenyTest15.java",
    "content": "package com.alibaba.json.bvt.parser.deser.deny;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 29/01/2017.\n */\npublic class DenyTest15 extends TestCase {\n    public void test_deny() throws Exception {\n        String text = \"{\\\"value\\\":{\\\"@type\\\":\\\"com.mchange.v2.c3p0.impl.PoolBackedDataSourceBase\\\"}}\";\n        Exception error = null;\n        try {\n            Model model = JSON.parseObject(text, Model.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public static class Model {\n        public Throwable value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/deny/DenyTest16.java",
    "content": "package com.alibaba.json.bvt.parser.deser.deny;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.util.TypeUtils;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 29/01/2017.\n */\npublic class DenyTest16 extends TestCase {\n    public void test_deny() throws Exception {\n        JSONObject object = new JSONObject();\n        object.put(\"@type\", \"com.mchange.v2.c3p0.impl.PoolBackedDataSourceBase\");\n\n        Throwable error = null;\n        try {\n            TypeUtils.castToJavaBean(object, Object.class);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public static class Model {\n        public Throwable value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/deny/DenyTest2.java",
    "content": "package com.alibaba.json.bvt.parser.deser.deny;\n\nimport java.util.Properties;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.json.bvtVO.deny.A;\n\nimport junit.framework.TestCase;\n\npublic class DenyTest2 extends TestCase {\n\n    public void test_0() throws Exception {\n        String text = \"{}\";\n\n        ParserConfig config = new ParserConfig();\n\n        Properties properties = new Properties();\n        properties.put(ParserConfig.DENY_PROPERTY, \"com.alibaba.json.bvtVO.deny\");\n        config.configFromPropety(properties);\n        \n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"@type\\\":\\\"com.alibaba.json.bvtVO.deny$A\\\"}\", Object.class, config, JSON.DEFAULT_PARSER_FEATURE);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n\n        error.printStackTrace();\n        \n        JSON.parseObject(text, B.class, config, JSON.DEFAULT_PARSER_FEATURE);\n    }\n    \n    public static class B {\n        \n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/deny/DenyTest3.java",
    "content": "package com.alibaba.json.bvt.parser.deser.deny;\n\nimport java.util.Properties;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.json.bvtVO.deny.A;\n\nimport junit.framework.TestCase;\n\npublic class DenyTest3 extends TestCase {\n\n    public void test_0() throws Exception {\n        String text = \"{}\";\n\n        ParserConfig config = new ParserConfig();\n\n        Properties properties = new Properties();\n        properties.put(ParserConfig.DENY_PROPERTY, \"com.alibaba.json.bvtVO.deny,,aa\");\n        config.configFromPropety(properties);\n        \n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"@type\\\":\\\"com.alibaba.json.bvtVO.deny$A\\\"}\", Object.class, config, JSON.DEFAULT_PARSER_FEATURE);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n        \n        JSON.parseObject(text, B.class, config, JSON.DEFAULT_PARSER_FEATURE);\n    }\n    \n    public static class B {\n        \n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/deny/DenyTest4.java",
    "content": "package com.alibaba.json.bvt.parser.deser.deny;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.json.bvtVO.deny.A;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.Properties;\n\npublic class DenyTest4 extends TestCase {\n\n    public void test_0() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.parser.deser.deny.DenyTest4$MyClassLoader\\\"}\", Object.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n    \n    public static class MyClassLoader extends ClassLoader {\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/deny/DenyTest5.java",
    "content": "package com.alibaba.json.bvt.parser.deser.deny;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport junit.framework.TestCase;\n\npublic class DenyTest5 extends TestCase {\n\n    public void test_c3p0() throws Exception {\n        ParserConfig config = new ParserConfig();\n        config.setAutoTypeSupport(true);\n\n        Object obj = null;\n        Exception error = null;\n        try {\n            obj = JSON.parseObject(\"{\\\"@type\\\":\\\"com.mchange.v2.c3p0.impl.PoolBackedDataSourceBase\\\"}\", Object.class, config);\n            System.out.println(obj.getClass());\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/deny/DenyTest6.java",
    "content": "package com.alibaba.json.bvt.parser.deser.deny;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport junit.framework.TestCase;\n\npublic class DenyTest6 extends TestCase {\n\n    public void test_autoTypeDeny() throws Exception {\n        ParserConfig config = new ParserConfig();\n        assertFalse(config.isAutoTypeSupport());\n        config.setAutoTypeSupport(true);\n        assertTrue(config.isAutoTypeSupport());\n        config.addDeny(\"com.alibaba.json.bvt.parser.deser.deny.DenyTest6\");\n        config.setAutoTypeSupport(false);\n\n        Exception error = null;\n        try {\n            Object obj = JSON.parseObject(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.parser.deser.deny.DenyTest6$Model\\\"}\", Object.class, config);\n            System.out.println(obj.getClass());\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n    \n    public static class Model {\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/deny/DenyTest7.java",
    "content": "package com.alibaba.json.bvt.parser.deser.deny;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport junit.framework.TestCase;\n\nimport java.util.Properties;\n\npublic class DenyTest7 extends TestCase {\n\n    public void test_autoTypeDeny() throws Exception {\n        ParserConfig config = new ParserConfig();\n\n        assertFalse(config.isAutoTypeSupport());\n        config.setAutoTypeSupport(true);\n        assertTrue(config.isAutoTypeSupport());\n\n        Properties properties = new Properties();\n        properties.put(ParserConfig.AUTOTYPE_SUPPORT_PROPERTY, \"false\");\n\n        config.configFromPropety(properties);\n\n        assertFalse(config.isAutoTypeSupport());\n\n        Exception error = null;\n        try {\n            Object obj = JSON.parseObject(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.parser.deser.deny.DenyTest7$Model\\\"}\", Object.class, config);\n            System.out.println(obj.getClass());\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n    \n    public static class Model {\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/deny/DenyTest8.java",
    "content": "package com.alibaba.json.bvt.parser.deser.deny;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport junit.framework.TestCase;\n\nimport java.util.Properties;\n\npublic class DenyTest8 extends TestCase {\n\n    public void test_autoTypeDeny() throws Exception {\n        ParserConfig config = new ParserConfig();\n\n        assertFalse(config.isAutoTypeSupport());\n        config.setAutoTypeSupport(true);\n        assertTrue(config.isAutoTypeSupport());\n\n        Properties properties = new Properties();\n        properties.put(ParserConfig.AUTOTYPE_SUPPORT_PROPERTY, \"false\");\n        config.configFromPropety(properties);\n\n        assertFalse(config.isAutoTypeSupport());\n\n        config.addAccept(\"com.alibaba.json.bvt.parser.deser.deny.DenyTest8\");\n\n\n        Object obj = JSON.parseObject(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.parser.deser.deny.DenyTest8$Model\\\"}\", Object.class, config);\n        assertEquals(Model.class, obj.getClass());\n    }\n    \n    public static class Model {\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/deny/DenyTest9.java",
    "content": "package com.alibaba.json.bvt.parser.deser.deny;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport junit.framework.TestCase;\n\nimport java.util.Properties;\n\npublic class DenyTest9 extends TestCase {\n\n    public void test_autoTypeDeny() throws Exception {\n        ParserConfig config = new ParserConfig();\n\n        assertFalse(config.isAutoTypeSupport());\n        config.setAutoTypeSupport(true);\n        assertTrue(config.isAutoTypeSupport());\n\n        Properties properties = new Properties();\n        properties.put(ParserConfig.AUTOTYPE_SUPPORT_PROPERTY, \"false\");\n        properties.put(ParserConfig.AUTOTYPE_ACCEPT, \"com.alibaba.json.bvt.parser.deser.deny.DenyTest9\");\n        // -ea -Dfastjson.parser.autoTypeAccept=com.alibaba.json.bvt.parser.deser.deny.DenyTest9\n        config.configFromPropety(properties);\n\n        assertFalse(config.isAutoTypeSupport());\n\n\n        Object obj = JSON.parseObject(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.parser.deser.deny.DenyTest9$Model\\\"}\", Object.class, config);\n        assertEquals(Model.class, obj.getClass());\n    }\n    \n    public static class Model {\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/deny/InitJavaBeanDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.deny;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport junit.framework.TestCase;\n\nimport java.util.Properties;\n\n/**\n * Created by wenshao on 28/01/2017.\n */\npublic class InitJavaBeanDeserializerTest extends TestCase {\n    ParserConfig config = new ParserConfig();\n\n    protected void setUp() throws Exception {\n        assertFalse(config.isAutoTypeSupport());\n\n        Properties properties = new Properties();\n        properties.put(ParserConfig.AUTOTYPE_SUPPORT_PROPERTY, \"false\");\n        // config.addAccept(\"com.alibaba.json.bvt.parser.deser.deny.DenyTest11.Model\");\n        // -ea -Dfastjson.parser.autoTypeAccept=com.alibaba.json.bvt.parser.deser.deny.DenyTest9\n        config.configFromPropety(properties);\n\n        assertFalse(config.isAutoTypeSupport());\n    }\n\n    public void test_desktop() throws Exception {\n        DenyTest11.Model model = new DenyTest11.Model();\n        model.a = new DenyTest11.B();\n        String text = \"{\\\"@type\\\":\\\"com.alibaba.json.bvt.parser.deser.deny.InitJavaBeanDeserializerTest$Model\\\"}\";\n\n        Exception error = null;\n        try {\n            Object obj = JSON.parseObject(text, Object.class, config);\n            System.out.println(obj.getClass());\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n\n        config.initJavaBeanDeserializers(Model.class);\n\n        Object obj = JSON.parseObject(text, Object.class, config);\n        assertEquals(Model.class, obj.getClass());\n    }\n\n    public static class Model {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/extra/ExtraTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.extra;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 30/03/2017.\n */\npublic class ExtraTest extends TestCase {\n    public void test_0() throws Exception {\n        JSON.parseObject(\"{\\\"ID\\\":123}\", Model.class);\n    }\n\n    public static class Model {\n        public int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/generic/ByteListTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.generic;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\n/**\n * Created by wenshao on 20/01/2017.\n */\npublic class ByteListTest extends TestCase {\n    public void test_for_issue() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"values\\\":[[1,2,3]]}\", Model.class);\n\n        assertNotNull(model.values);\n        assertEquals(3, model.values[0].size());\n        assertEquals(Byte.class, model.values[0].get(0).getClass());\n        assertEquals(Byte.class, model.values[0].get(1).getClass());\n        assertEquals(Byte.class, model.values[0].get(2).getClass());\n    }\n\n    public void test_for_List() throws Exception {\n        Model2 model = JSON.parseObject(\"{\\\"values\\\":[1,2,3]}\", Model2.class);\n\n        assertNotNull(model.values);\n        assertEquals(3, model.values.size());\n        assertEquals(Byte.class, model.values.get(0).getClass());\n        assertEquals(Byte.class, model.values.get(1).getClass());\n        assertEquals(Byte.class, model.values.get(2).getClass());\n    }\n\n    public static class Model {\n        public List<Byte>[] values;\n    }\n\n    public static class Model2 {\n        public List<Byte> values;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/generic/GenericArrayTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.generic;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class GenericArrayTest extends TestCase {\n    \n    public void test_generic() throws Exception {\n        VO vo = new VO();\n        vo.values = new Number[] {1, 1};\n        \n        String text = JSON.toJSONString(vo);\n        VO vo1 = JSON.parseObject(text, VO.class);\n        Assert.assertNotNull(vo1.values);\n        Assert.assertEquals(2, vo1.values.length);\n//        Assert.assertEquals(\"a\", vo1.values[0]);\n//        Assert.assertEquals(\"b\", vo1.values[1]);\n    }\n\n    public static class A<T extends Number> {\n        public T[] values;\n    }\n    \n    public static class VO extends A {\n        \n    }\n}\n\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/generic/GenericArrayTest2.java",
    "content": "package com.alibaba.json.bvt.parser.deser.generic;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class GenericArrayTest2 extends TestCase {\n    \n    public void test_generic() throws Exception {\n        VO vo = new VO();\n        vo.values = new String[] {\"a\", \"b\"};\n        \n        String text = JSON.toJSONString(vo);\n        VO vo1 = JSON.parseObject(text, VO.class);\n        Assert.assertNotNull(vo1.values);\n        Assert.assertEquals(2, vo1.values.length);\n        Assert.assertEquals(\"a\", vo1.values[0]);\n        Assert.assertEquals(\"b\", vo1.values[1]);\n    }\n\n    public static class A<T> {\n        public T[] values;\n    }\n    \n    public static class VO extends A {\n        \n    }\n}\n\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/generic/GenericArrayTest3.java",
    "content": "package com.alibaba.json.bvt.parser.deser.generic;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\nimport junit.framework.TestCase;\n\npublic class GenericArrayTest3 extends TestCase {\n    \n    public void test_generic() throws Exception {\n        VO vo = new VO();\n        vo.values = new Pair[] {null, null};\n        \n        String text = JSON.toJSONString(vo);\n//        VO vo1 = JSON.parseObject(text, new TypeReference<VO<Number, String>>(){} );\n        VO vo1 = JSON.parseObject(text, VO.class);\n        Assert.assertNotNull(vo1.values);\n        Assert.assertEquals(2, vo1.values.length);\n//        Assert.assertEquals(\"a\", vo1.values[0]);\n//        Assert.assertEquals(\"b\", vo1.values[1]);\n    }\n\n    public static class A<T extends Number, S> {\n        public Pair<T, S>[] values;\n    }\n    \n    public static class VO extends A<Number, String> {\n        \n    }\n    \n    public static class Pair<A, B> {\n        public A a;\n        public B b;\n    }\n}\n\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/generic/GenericArrayTest4.java",
    "content": "package com.alibaba.json.bvt.parser.deser.generic;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\nimport junit.framework.TestCase;\n\npublic class GenericArrayTest4 extends TestCase {\n    \n    public void test_generic() throws Exception {\n        VO vo = new VO();\n        vo.values = new Pair[] {null, null};\n        \n        String text = JSON.toJSONString(vo);\n//        VO vo1 = JSON.parseObject(text, new TypeReference<VO<Number, String>>(){} );\n        VO vo1 = JSON.parseObject(text, VO.class);\n        Assert.assertNotNull(vo1.values);\n        Assert.assertEquals(2, vo1.values.length);\n//        Assert.assertEquals(\"a\", vo1.values[0]);\n//        Assert.assertEquals(\"b\", vo1.values[1]);\n    }\n\n    public static class A<T extends Number, S> {\n        public Pair<? extends T, ? extends S>[] values;\n    }\n    \n    public static class VO extends A<Number, String> {\n        \n    }\n    \n    public static class Pair<A, B> {\n        public A a;\n        public B b;\n    }\n}\n\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/generic/GenericArrayTest5.java",
    "content": "package com.alibaba.json.bvt.parser.deser.generic;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class GenericArrayTest5 extends TestCase {\n    \n    public void test_generic() throws Exception {\n        VO vo = new VO();\n        vo.values = new Number[] {1, 1};\n        \n        String text = JSON.toJSONString(vo);\n        VO vo1 = JSON.parseObject(text, VO.class);\n        Assert.assertNotNull(vo1.values);\n        Assert.assertEquals(2, vo1.values.length);\n//        Assert.assertEquals(\"a\", vo1.values[0]);\n//        Assert.assertEquals(\"b\", vo1.values[1]);\n    }\n\n    public static class A<T extends Number> {\n        public T[] values;\n    }\n    \n    public static class VO<T extends Number> extends A<T> {\n        \n    }\n}\n\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/generic/GenericMap.java",
    "content": "package com.alibaba.json.bvt.parser.deser.generic;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\n\nimport java.util.Map;\n\n/**\n * Created by wenshao on 20/01/2017.\n */\npublic class GenericMap extends TestCase {\n    public void test_generic() throws Exception {\n        Model<User> model = JSON.parseObject(\"{\\\"values\\\":{\\\"1001\\\":{\\\"id\\\":1001}}}\", new TypeReference<Model<User>>() {});\n        User user = model.values.get(\"1001\");\n        assertNotNull(user);\n        assertEquals(1001, user.id);\n    }\n\n    public static class Model<T> {\n        public Map<String, T> values;\n    }\n\n    public static class User {\n        public int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/generic/GenericTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.generic;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\n\npublic class GenericTest extends TestCase {\n    \n    public void test_0 () throws Exception {\n       B b = JSON.parseObject(\"{\\\"data\\\":[1,2,3]}\", B.class);\n       b.get(0);\n    }\n\n    public static abstract class A<T> {\n        T[] data;\n        \n        public A() {\n            \n        }\n        \n\n        \n        public T[] getData() {\n            return data;\n        }\n\n\n        \n        public void setData(T[] data) {\n            this.data = data;\n        }\n    }\n    \n    public static class B extends A<Long> {\n        public B() {\n        }\n        \n        public Long get(int index) {\n            Long l = data[index];\n            return l;\n        }\n    }\n    \n    public static class C<T> {\n        private T[] data;\n        \n        public C(T[] data) {\n            this.data = data;\n        }\n\n        \n        public T[] getData() {\n            return data;\n        }\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/generic/GenericTest2.java",
    "content": "package com.alibaba.json.bvt.parser.deser.generic;\n\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class GenericTest2 extends TestCase {\n\tpublic void test_for_bingyang() throws Exception {\n\t\tString text = \"{\\\"count\\\":123,\\\"index\\\":7,\\\"items\\\":[{\\\"id\\\":234,\\\"latitude\\\":2.5,\\\"longtitude\\\":3.7}]}\";\n\t\tPageBean<ActiveBase> pageBean = JSON.parseObject(text, new TypeReference<PageBean<ActiveBase>>() {});\n\t\tAssert.assertNotNull(pageBean);\n\t\tAssert.assertEquals(123, pageBean.getCount());\n\t\tAssert.assertEquals(7, pageBean.getIndex());\n\t\tAssert.assertNotNull(pageBean.getItems());\n\t\tAssert.assertEquals(1, pageBean.getItems().size());\n\t\tActiveBase active = pageBean.getItems().get(0);\n\t\tAssert.assertEquals(new Integer(234), active.getId());\n\t\tAssert.assertTrue(3.7D == active.getLongtitude());\n\t\tAssert.assertTrue(2.5D == active.getLatitude());\n\t}\n\n\tpublic static class ActiveBase extends BaseModel {\n\t\tprivate double latitude;\n\t\tprivate double longtitude;\n\t\tpublic double getLatitude() {\n\t\t\treturn latitude;\n\t\t}\n\t\tpublic void setLatitude(double latitude) {\n\t\t\tthis.latitude = latitude;\n\t\t}\n\t\tpublic double getLongtitude() {\n\t\t\treturn longtitude;\n\t\t}\n\t\tpublic void setLongtitude(double longtitude) {\n\t\t\tthis.longtitude = longtitude;\n\t\t}\n\t}\n\n\tpublic static class BaseModel {\n\t\tprivate Integer id;\n\n\t\tpublic Integer getId() {\n\t\t\treturn id;\n\t\t}\n\n\t\tpublic void setId(Integer id) {\n\t\t\tthis.id = id;\n\t\t}\n\t}\n\n\tpublic static class PageBean<T> {\n\t\tprivate int count;\n\t\tprivate int index;\n\t\tprivate List<T> items;\n\n\t\tpublic int getCount() {\n\t\t\treturn count;\n\t\t}\n\n\t\tpublic void setCount(int count) {\n\t\t\tthis.count = count;\n\t\t}\n\n\t\tpublic int getIndex() {\n\t\t\treturn index;\n\t\t}\n\n\t\tpublic void setIndex(int index) {\n\t\t\tthis.index = index;\n\t\t}\n\n\t\tpublic List<T> getItems() {\n\t\t\treturn items;\n\t\t}\n\n\t\tpublic void setItems(List<T> items) {\n\t\t\tthis.items = items;\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/generic/GenericTest3.java",
    "content": "package com.alibaba.json.bvt.parser.deser.generic;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class GenericTest3 extends TestCase {\n\tpublic static class A<T> {\n\t\tpublic B<T> b;\n\t}\n\n\tpublic static class B<T> {\n\t\tpublic T value;\n\t}\n\n\tpublic static class ValueObject {\n\t\tpublic String property1;\n\t\tpublic int property2;\n\t}\n\n\tpublic void test_generic() throws Exception {\n\t\tA<ValueObject> object = JSON.parseObject(\n\t\t\t\t\"{b:{value:{property1:'string',property2:123}}}\",\n\t\t\t\tnew TypeReference<A<ValueObject>>() {\n\t\t\t\t});\n\t\t\n\t\tAssert.assertEquals(ValueObject.class, object.b.value.getClass());\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/generic/GenericTest4.java",
    "content": "package com.alibaba.json.bvt.parser.deser.generic;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class GenericTest4 extends TestCase {\n\n    public void test_0() throws Exception {\n        String text;\n        {\n            User user = new User(\"Z友群\");\n            user.getAddresses().add(new Address(\"滨江\"));\n            text = JSON.toJSONString(user);\n        }\n        \n        System.out.println(text);\n        \n        User user = JSON.parseObject(text, User.class);\n        \n        Assert.assertEquals(\"Z友群\", user.getName());\n        Assert.assertEquals(1, user.getAddresses().size());\n        Assert.assertEquals(Address.class, user.getAddresses().get(0).getClass());\n        Assert.assertEquals(\"滨江\", user.getAddresses().get(0).getValue());\n    }\n\n    public static class User {\n\n        private String name;\n\n        public User(){\n\n        }\n\n        public User(String name){\n            this.name = name;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        private List<Address> addresses = new ArrayList<Address>();\n\n        public List<Address> getAddresses() {\n            return addresses;\n        }\n\n        public void setAddresses(List<Address> addresses) {\n            this.addresses = addresses;\n        }\n\n    }\n\n    public static class Address {\n\n        private String value;\n\n        public Address(){\n        }\n\n        public Address(String value){\n            this.value = value;\n        }\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/generic/GenericTest5.java",
    "content": "package com.alibaba.json.bvt.parser.deser.generic;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\n\npublic class GenericTest5 extends TestCase {\n    public void test_generic() {\n        Pair<Long> p1 = new Pair<Long>();\n        p1.label = \"p1\";\n        p1.value = 3L;\n        String p1Json = JSON.toJSONString(p1);\n\n        JSON.parseObject(p1Json, LongPair.class);\n        JSON.parseObject(p1Json, StringPair.class);\n\n        JSONObject p1Jobj = JSON.parseObject(p1Json);\n\n        TypeReference<Pair<Long>> tr = new TypeReference<Pair<Long>>() {};\n        Pair<Long> p2 = null;\n        p2 = JSON.parseObject(p1Json, tr);\n        assertNotNull(p2); // 基于JSON字符串的转化正常\n\n        p2 = p1Jobj.toJavaObject(tr);\n        assertNotNull(p2);\n        assertEquals(Long.valueOf(3), p2.value);\n\n\n    }\n\n    public static class Pair<T> {\n        private T value;\n        public String label;\n\n        public T getValue() {\n            return value;\n        }\n\n        public void setValue(T value) {\n            this.value = value;\n        }\n    }\n\n    public static class LongPair extends Pair<String> {\n\n    }\n\n    public static class StringPair extends Pair<String> {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/generic/ListStrFieldTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.generic;\n\nimport java.util.List;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class ListStrFieldTest extends TestCase {\n    public void test_0() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"values\\\":null}\", Model.class);\n        Assert.assertNull(model.values);\n    }\n    \n    public static class Model {\n        public List<String> values;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/list/ArrayDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.list;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class ArrayDeserializerTest extends TestCase {\n\n    public void test_null() throws Exception {\n        Assert.assertNull(JSON.parseObject(\"null\", Object[].class));\n        Assert.assertNull(JSON.parseObject(\"null\", String[].class));\n        Assert.assertNull(JSON.parseObject(\"null\", VO[].class));\n        Assert.assertNull(JSON.parseObject(\"null\", VO[][].class));\n    }\n\n    public void test_0() throws Exception {\n        Assert.assertEquals(0, JSON.parseObject(\"[]\", Object[].class).length);\n        Assert.assertEquals(0, JSON.parseObject(\"[]\", Object[][].class).length);\n        Assert.assertEquals(0, JSON.parseObject(\"[]\", Object[][][].class).length);\n        Assert.assertEquals(1, JSON.parseObject(\"[null]\", Object[].class).length);\n        Assert.assertEquals(1, JSON.parseObject(\"[null]\", Object[][].class).length);\n        Assert.assertEquals(1, JSON.parseObject(\"[[[[[[]]]]]]\", Object[][].class).length);\n        Assert.assertEquals(1, JSON.parseObject(\"[null]\", Object[][][].class).length);\n        Assert.assertEquals(null, JSON.parseObject(\"{\\\"value\\\":null}\", VO.class).getValue());\n    }\n\n    public static class VO {\n\n        private Object[] value;\n\n        public Object[] getValue() {\n            return value;\n        }\n\n        public void setValue(Object[] value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/list/ArrayLisMapDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.list;\n\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class ArrayLisMapDeserializerTest extends TestCase {\n\n    public void test_list() throws Exception {\n        Entity a = JSON.parseObject(\"{items:[{}, {a:1}, null]}\", Entity.class);\n        Assert.assertEquals(0, a.getItems().get(0).size());\n        Assert.assertEquals(1, a.getItems().get(1).size());\n        Assert.assertEquals(null, a.getItems().get(2));\n    }\n    \n    public void test_list_2() throws Exception {\n        List<Map> list = JSON.parseObject(\"[{}, {a:1}, null]\", new TypeReference<List<Map>>() {});\n        Assert.assertEquals(0, list.get(0).size());\n        Assert.assertEquals(1, list.get(1).size());\n        Assert.assertEquals(null, list.get(2));\n    }\n\n    public static class Entity {\n\n        private List<Map> items = new ArrayList<Map>();\n\n        public List<Map> getItems() {\n            return items;\n        }\n\n        public void setItems(List<Map> items) {\n            this.items = items;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/list/ArrayListEnumFieldDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.list;\n\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.concurrent.TimeUnit;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class ArrayListEnumFieldDeserializerTest extends TestCase {\n\n    public void test_enums() throws Exception {\n        Entity a = JSON.parseObject(\"{units:['NANOSECONDS', 'SECONDS', 3, null]}\", Entity.class);\n        Assert.assertEquals(TimeUnit.NANOSECONDS, a.getUnits().get(0));\n    }\n\n    public static class Entity {\n\n        private List<TimeUnit> units = new ArrayList<TimeUnit>();\n\n        public List<TimeUnit> getUnits() {\n            return units;\n        }\n\n        public void setUnits(List<TimeUnit> units) {\n            this.units = units;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/list/ArrayListStringDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.list;\n\nimport java.lang.reflect.Type;\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\n\npublic class ArrayListStringDeserializerTest extends TestCase {\n    public void test_null() throws Exception {\n        Assert.assertNull(JSON.parseObject(\"null\", new TypeReference<List<String>>() {\n        }));\n        \n        Assert.assertNull(JSON.parseArray(\"null\", new Type[] {new TypeReference<List<String>>() {\n        }.getType()}));\n        \n        Assert.assertNull(JSON.parseArray(\"null\", Entity.class));\n        Assert.assertNull(JSON.parseArray(\"null\", Entity[].class));\n        Assert.assertNull(JSON.parseArray(\"null\"));\n        Assert.assertNull(JSON.parseObject(\"null\"));\n        Assert.assertNull(JSON.parseObject(\"null\", Object[].class));\n        Assert.assertNull(JSON.parseObject(\"null\", Entity[].class));\n        \n        Assert.assertNull(JSON.parseArray(\"[null]\", new Type[] {new TypeReference<List<String>>() {\n        }.getType()}).get(0));\n    }\n\n    public void test_strings() throws Exception {\n        Entity a = JSON.parseObject(\"{units:['NANOSECONDS', 'SECONDS', 3, null]}\", Entity.class);\n        Assert.assertEquals(\"NANOSECONDS\", a.getUnits().get(0));\n        Assert.assertEquals(\"SECONDS\", a.getUnits().get(1));\n        Assert.assertEquals(\"3\", a.getUnits().get(2));\n        Assert.assertEquals(null, a.getUnits().get(3));\n\n    }\n\n    public void test_strings_() throws Exception {\n        Entity a = JSON.parseObject(\"{units:['NANOSECONDS',,,, 'SECONDS', 3, null]}\", Entity.class);\n        Assert.assertEquals(\"NANOSECONDS\", a.getUnits().get(0));\n        Assert.assertEquals(\"SECONDS\", a.getUnits().get(1));\n        Assert.assertEquals(\"3\", a.getUnits().get(2));\n        Assert.assertEquals(null, a.getUnits().get(3));\n\n    }\n\n    public void test_strings_2() throws Exception {\n        List<String> list = JSON.parseObject(\"['NANOSECONDS', 'SECONDS', 3, null]\", new TypeReference<List<String>>() {\n        });\n        Assert.assertEquals(\"NANOSECONDS\", list.get(0));\n        Assert.assertEquals(\"SECONDS\", list.get(1));\n        Assert.assertEquals(\"3\", list.get(2));\n        Assert.assertEquals(null, list.get(3));\n    }\n\n    public void test_strings_3() throws Exception {\n        List<String> list = JSON.parseObject(\"['NANOSECONDS', 'SECONDS', 3, null]\", new TypeReference<List<String>>() {\n        }.getType(), 0, Feature.AllowSingleQuotes);\n        Assert.assertEquals(\"NANOSECONDS\", list.get(0));\n        Assert.assertEquals(\"SECONDS\", list.get(1));\n        Assert.assertEquals(\"3\", list.get(2));\n        Assert.assertEquals(null, list.get(3));\n    }\n\n    public void test_string_error_not_eof() throws Exception {\n        JSONException ex = null;\n        try {\n            JSON.parseObject(\"[}\", new TypeReference<List<String>>() {\n            }.getType(), 0, Feature.AllowSingleQuotes);\n        } catch (JSONException e) {\n            ex = e;\n        }\n        Assert.assertNotNull(ex);\n    }\n\n    public void test_string_error() throws Exception {\n        JSONException ex = null;\n        try {\n            JSON.parseObject(\"'123'\", new TypeReference<List<String>>() {\n            });\n        } catch (JSONException e) {\n            ex = e;\n        }\n        Assert.assertNotNull(ex);\n    }\n\n    public void test_string_error_1() throws Exception {\n        JSONException ex = null;\n        try {\n            parseObject(\"{units:['NANOSECONDS',,,, 'SECONDS', 3, null]}\", Entity.class);\n        } catch (JSONException e) {\n            ex = e;\n        }\n        Assert.assertNotNull(ex);\n    }\n\n    public static final <T> T parseObject(String input, Type clazz, Feature... features) {\n        if (input == null) {\n            return null;\n        }\n\n        int featureValues = 0;\n        for (Feature feature : features) {\n            featureValues = Feature.config(featureValues, feature, true);\n        }\n\n        DefaultJSONParser parser = new DefaultJSONParser(input, ParserConfig.getGlobalInstance(), featureValues);\n        T value = (T) parser.parseObject(clazz);\n\n        if (clazz != JSONArray.class) {\n            parser.close();\n        }\n\n        return (T) value;\n    }\n\n    public static class Entity {\n\n        private List<String> units = new ArrayList<String>();\n\n        public List<String> getUnits() {\n            return units;\n        }\n\n        public void setUnits(List<String> units) {\n            this.units = units;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/list/ArrayListTypeDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.list;\n\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.HashSet;\nimport java.util.Set;\n\nimport org.junit.Assert;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class ArrayListTypeDeserializerTest extends TestCase {\n\n    public void test_null_0() throws Exception {\n        Assert.assertNull(JSON.parseObject(\"null\", new TypeReference<ArrayList<Integer>>() {\n        }));\n    }\n\n    public void test_null_1() throws Exception {\n        Assert.assertNull(JSON.parseObject(\"null\", new TypeReference<Collection<Integer>>() {\n        }));\n    }\n\n    public void test_null_2() throws Exception {\n        Assert.assertNull(JSON.parseObject(\"{\\\"value\\\":null}\", VO.class).getValue());\n    }\n\n    public void test_null_3() throws Exception {\n        Assert.assertNull(JSON.parseObject(\"{\\\"value\\\":null}\", V1.class).getValue());\n    }\n\n    public void test_empty() throws Exception {\n        Assert.assertEquals(0, JSON.parseObject(\"[]\", new TypeReference<ArrayList<Integer>>() {\n        }).size());\n        Assert.assertEquals(0, JSON.parseObject(\"[]\", new TypeReference<Set<Integer>>() {\n        }).size());\n\n        Assert.assertEquals(0, JSON.parseObject(\"[]\", new TypeReference<HashSet<Integer>>() {\n        }).size());\n\n        Assert.assertEquals(0, JSON.parseObject(\"{\\\"value\\\":[]}\", VO.class).getValue().size());\n    }\n\n    public static class VO {\n\n        private ArrayList<Integer> value;\n\n        public ArrayList<Integer> getValue() {\n            return value;\n        }\n\n        public void setValue(ArrayList<Integer> value) {\n            this.value = value;\n        }\n\n    }\n\n    private static class V1 {\n\n        private ArrayList<Integer> value;\n\n        public ArrayList<Integer> getValue() {\n            return value;\n        }\n\n        @SuppressWarnings(\"unused\")\n        public void setValue(ArrayList<Integer> value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/list/ArrayListTypeFieldTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.list;\n\nimport java.util.ArrayList;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.Feature;\n\npublic class ArrayListTypeFieldTest extends TestCase {\n\n    public void test_0() throws Exception {\n        Entity entity = JSON.parseObject(\"{,,,list:[,,,{value:3}]}\", Entity.class);\n        Assert.assertEquals(3, entity.getList().get(0).getValue());\n    }\n\n    public void test_1() throws Exception {\n        Entity entity = JSON.parseObject(\"{list:[{value:3}]}\", Entity.class, 0, Feature.AllowUnQuotedFieldNames);\n        Assert.assertEquals(3, entity.getList().get(0).getValue());\n    }\n    \n    public void test_null() throws Exception {\n        Entity entity = JSON.parseObject(\"{list:null}\", Entity.class, 0, Feature.AllowUnQuotedFieldNames);\n        Assert.assertEquals(null, entity.getList());\n    }\n    public void test_null2() throws Exception {\n        Entity entity = JSON.parseObject(\"{list:[null]}\", Entity.class, 0, Feature.AllowUnQuotedFieldNames);\n        Assert.assertEquals(null, entity.getList().get(0));\n    }\n\n    public void test_error_0() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{list:{{value:3}]}\", Entity.class, 0, Feature.AllowUnQuotedFieldNames);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    private static class Entity {\n\n        private ArrayList<VO> list;\n\n        public ArrayList<VO> getList() {\n            return list;\n        }\n\n        public void setList(ArrayList<VO> list) {\n            this.list = list;\n        }\n\n    }\n\n    public static class VO {\n\n        private int value;\n\n        public int getValue() {\n            return value;\n        }\n\n        public void setValue(int value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/list/ListFieldTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.list;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\npublic class ListFieldTest extends TestCase {\n    public void test_for_list() throws Exception {\n        JSON.parseObject(\"{'data':['a','b']}\", TestPojo.class);\n    }\n\n    public static class TestPojo{\n        public java.util.List<String> getData(){\n            return null;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/list/ListStringFieldTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.list;\n\nimport java.util.List;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class ListStringFieldTest extends TestCase {\n\n    public void test_list() throws Exception {\n        String text = \"[[\\\"a\\\",null,\\\"b\\\"]]\";\n        Model model = JSON.parseObject(text, Model.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(3, model.values.size());\n        Assert.assertEquals(\"a\", model.values.get(0));\n        Assert.assertEquals(null, model.values.get(1));\n        Assert.assertEquals(\"b\", model.values.get(2));\n    }\n    \n    public void test_null() throws Exception {\n        String text = \"[null]\";\n        Model model = JSON.parseObject(text, Model.class, Feature.SupportArrayToBean);\n        Assert.assertNull(model.values);\n    }\n\n    public static class Model {\n\n        private List<String> values;\n\n        public List<String> getValues() {\n            return values;\n        }\n\n        public void setValues(List<String> values) {\n            this.values = values;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/list/ListStringFieldTest_array_big.java",
    "content": "package com.alibaba.json.bvt.parser.deser.list;\n\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.List;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class ListStringFieldTest_array_big extends TestCase {\n    public void test_list() throws Exception {\n        Model model = new Model();\n        model.values = new ArrayList<String>();\n        for (int i = 0; i < 1000; ++i) {\n            char[] chars = new char[512];\n            Arrays.fill(chars, (char) ('0' + (i % 10))); \n            model.values.add(new String(chars));\n        }\n        \n        String text = JSON.toJSONString(model, SerializerFeature.BeanToArray);\n        \n        Model model2 = JSON.parseObject(text, Model.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(model.values.size(), model2.values.size());\n        for (int i = 0; i < model.values.size(); ++i) {\n            Assert.assertEquals(model.values.get(i), model2.values.get(i));    \n        }\n    }\n    \n    public void test_list_empty() throws Exception {\n        Model model = new Model();\n        model.values = new ArrayList<String>();\n        \n        String text = JSON.toJSONString(model, SerializerFeature.BeanToArray);\n        \n        Model model2 = JSON.parseObject(text, Model.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(model.values.size(), model2.values.size());\n        for (int i = 0; i < model.values.size(); ++i) {\n            Assert.assertEquals(model.values.get(i), model2.values.get(i));    \n        }\n    }\n\n    public static class Model {\n        public List<String> values;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/list/ListStringFieldTest_createError.java",
    "content": "package com.alibaba.json.bvt.parser.deser.list;\n\nimport java.io.StringReader;\nimport java.util.ArrayList;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class ListStringFieldTest_createError extends TestCase {\n\n    public void test_null() throws Exception {\n        Exception error = null;\n        try {\n            String text = \"{\\\"values\\\":[]}\";\n            JSON.parseObject(text, Model.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_reader() throws Exception {\n        Exception error = null;\n        try {\n            String text = \"{\\\"values\\\":[]}\";\n            JSONReader reader = new JSONReader(new StringReader(text));\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Model {\n\n        private MyErrorList<String> values;\n\n        public MyErrorList<String> getValues() {\n            return values;\n        }\n\n        public void setValues(MyErrorList<String> values) {\n            this.values = values;\n        }\n\n    }\n\n    public static class MyErrorList<T> extends ArrayList<T> {\n\n        public MyErrorList(){\n            throw new IllegalStateException();\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/list/ListStringFieldTest_dom.java",
    "content": "package com.alibaba.json.bvt.parser.deser.list;\n\nimport java.io.StringReader;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.json.bvt.parser.deser.list.ListStringFieldTest_stream.Model;\n\nimport junit.framework.TestCase;\n\npublic class ListStringFieldTest_dom extends TestCase {\n\n    public void test_list() throws Exception {\n        String text = \"{\\\"values\\\":[\\\"a\\\",null,\\\"b\\\",\\\"ab\\\\\\\\c\\\"]}\";\n\n        Model model = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(4, model.values.size());\n        Assert.assertEquals(\"a\", model.values.get(0));\n        Assert.assertEquals(null, model.values.get(1));\n        Assert.assertEquals(\"b\", model.values.get(2));\n        Assert.assertEquals(\"ab\\\\c\", model.values.get(3));\n    }\n\n    public void test_null() throws Exception {\n        String text = \"{\\\"values\\\":null}\";\n        Model model = JSON.parseObject(text, Model.class);\n        Assert.assertNull(model.values);\n    }\n\n    public void test_empty() throws Exception {\n        String text = \"{\\\"values\\\":[]}\";\n        Model model = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(0, model.values.size());\n    }\n    \n    public void test_null_element() throws Exception {\n        String text = \"{\\\"values\\\":[\\\"abc\\\",null]}\";\n        Model model = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(2, model.values.size());\n        Assert.assertEquals(\"abc\", model.values.get(0));\n        Assert.assertEquals(null, model.values.get(1));\n    }\n\n    public void test_map_empty() throws Exception {\n        String text = \"{\\\"model\\\":{\\\"values\\\":[]}}\";\n        Map<String, Model> map = JSON.parseObject(text, new TypeReference<Map<String, Model>>() {\n        });\n        Model model = (Model) map.get(\"model\");\n        Assert.assertEquals(0, model.values.size());\n    }\n\n    public void test_notMatch() throws Exception {\n        String text = \"{\\\"value\\\":[]}\";\n        Model model = JSON.parseObject(text, Model.class);\n        Assert.assertNull(model.values);\n    }\n\n    public void test_error() throws Exception {\n        String text = \"{\\\"values\\\":[1\";\n\n        Exception error = null;\n        try {\n            JSON.parseObject(text, Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_1() throws Exception {\n        String text = \"{\\\"values\\\":[\\\"b\\\"[\";\n\n        Exception error = null;\n        try {\n            JSON.parseObject(text, Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_2() throws Exception {\n        String text = \"{\\\"model\\\":{\\\"values\\\":[][\";\n        \n\n        Exception error = null;\n        try {\n            JSON.parseObject(text, new TypeReference<Map<String, Model>>() {\n            });\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_3() throws Exception {\n        String text = \"{\\\"model\\\":{\\\"values\\\":[]}[\";\n\n        Exception error = null;\n        try {\n            JSON.parseObject(text, new TypeReference<Map<String, Model>>() {\n            });\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_4() throws Exception {\n        String text = \"{\\\"model\\\":{\\\"values\\\":[\\\"aaa]}[\";\n        \n\n        Exception error = null;\n        try {\n            JSON.parseObject(text, new TypeReference<Map<String, Model>>() {\n            });\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_n() throws Exception {\n        String text = \"{\\\"values\\\":[n\";\n\n        Exception error = null;\n        try {\n            JSON.parseObject(text, Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_nu() throws Exception {\n        String text = \"{\\\"values\\\":[nu\";\n\n        Exception error = null;\n        try {\n            JSON.parseObject(text, Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_nul() throws Exception {\n        String text = \"{\\\"values\\\":[nul\";\n\n        Exception error = null;\n        try {\n            JSON.parseObject(text, Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_null() throws Exception {\n        String text = \"{\\\"values\\\":[null\";\n\n        Exception error = null;\n        try {\n            JSON.parseObject(text, Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_rbacket() throws Exception {\n        String text = \"{\\\"values\\\":[null,]\";\n\n        Exception error = null;\n        try {\n            JSON.parseObject(text, Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Model {\n\n        private List<String> values;\n\n        public List<String> getValues() {\n            return values;\n        }\n\n        public void setValues(List<String> values) {\n            this.values = values;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/list/ListStringFieldTest_dom_array.java",
    "content": "package com.alibaba.json.bvt.parser.deser.list;\n\nimport java.util.List;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class ListStringFieldTest_dom_array extends TestCase {\n\n    public void test_list() throws Exception {\n        String text = \"[[\\\"a\\\",null,\\\"b\\\",\\\"ab\\\\\\\\c\\\"],[]]\";\n\n        Model model = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(4, model.values.size());\n        Assert.assertEquals(\"a\", model.values.get(0));\n        Assert.assertEquals(null, model.values.get(1));\n        Assert.assertEquals(\"b\", model.values.get(2));\n        Assert.assertEquals(\"ab\\\\c\", model.values.get(3));\n\n        Assert.assertEquals(0, model.values2.size());\n    }\n\n    public void test_list2() throws Exception {\n        String text = \"{\\\"values\\\":[\\\"a\\\",null,\\\"b\\\",\\\"ab\\\\\\\\c\\\"],\\\"values2\\\":[]}\";\n\n        Model model = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(4, model.values.size());\n        Assert.assertEquals(\"a\", model.values.get(0));\n        Assert.assertEquals(null, model.values.get(1));\n        Assert.assertEquals(\"b\", model.values.get(2));\n        Assert.assertEquals(\"ab\\\\c\", model.values.get(3));\n\n        Assert.assertEquals(0, model.values2.size());\n    }\n\n    @JSONType(parseFeatures = Feature.SupportArrayToBean)\n    public static class Model {\n\n        public List<String> values;\n        public List<String> values2;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/list/ListStringFieldTest_dom_array_2.java",
    "content": "package com.alibaba.json.bvt.parser.deser.list;\n\nimport java.io.StringReader;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.json.bvt.parser.deser.list.ListStringFieldTest_dom_array.Model;\n\nimport junit.framework.TestCase;\n\npublic class ListStringFieldTest_dom_array_2 extends TestCase {\n\n    public void test_list() throws Exception {\n        String text = \"[[\\\"a\\\",null,\\\"b\\\",\\\"ab\\\\\\\\c\\\"],[]]\";\n\n        Model model = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(4, model.values.size());\n        Assert.assertEquals(\"a\", model.values.get(0));\n        Assert.assertEquals(null, model.values.get(1));\n        Assert.assertEquals(\"b\", model.values.get(2));\n        Assert.assertEquals(\"ab\\\\c\", model.values.get(3));\n\n        Assert.assertEquals(0, model.values2.size());\n    }\n\n    public void test_list2() throws Exception {\n        String text = \"{\\\"values\\\":[\\\"a\\\",null,\\\"b\\\",\\\"ab\\\\\\\\c\\\"],\\\"values2\\\":[]}\";\n\n        Model model = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(4, model.values.size());\n        Assert.assertEquals(\"a\", model.values.get(0));\n        Assert.assertEquals(null, model.values.get(1));\n        Assert.assertEquals(\"b\", model.values.get(2));\n        Assert.assertEquals(\"ab\\\\c\", model.values.get(3));\n\n        Assert.assertEquals(0, model.values2.size());\n    }\n\n    @JSONType(parseFeatures = Feature.SupportArrayToBean)\n    public static class Model {\n\n        public List<String> values;\n        public List<String> values2;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/list/ListStringFieldTest_dom_hashSet.java",
    "content": "package com.alibaba.json.bvt.parser.deser.list;\n\nimport java.io.StringReader;\nimport java.util.Map;\nimport java.util.Set;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.json.bvt.parser.deser.list.ListStringFieldTest_dom_array.Model;\n\nimport junit.framework.TestCase;\n\npublic class ListStringFieldTest_dom_hashSet extends TestCase {\n\n    public void test_list() throws Exception {\n        String text = \"{\\\"values\\\":[\\\"a\\\",null,\\\"b\\\",\\\"ab\\\\\\\\c\\\"]}\";\n\n        Model model = JSON.parseObject(text, Model.class);\n\n        Assert.assertEquals(4, model.values.size());\n        Assert.assertTrue(model.values.contains(\"a\"));\n        Assert.assertTrue(model.values.contains(\"b\"));\n        Assert.assertTrue(model.values.contains(null));\n        Assert.assertTrue(model.values.contains(\"ab\\\\c\"));\n    }\n\n    public void test_null() throws Exception {\n        String text = \"{\\\"values\\\":null}\";\n        Model model = JSON.parseObject(text, Model.class);\n        Assert.assertNull(model.values);\n    }\n\n    public void test_empty() throws Exception {\n        String text = \"{\\\"values\\\":[]}\";\n        Model model = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(0, model.values.size());\n    }\n\n    public void test_map_empty() throws Exception {\n        String text = \"{\\\"model\\\":{\\\"values\\\":[]}}\";\n        Map<String, Model> map = JSON.parseObject(text, new TypeReference<Map<String, Model>>() {\n        });\n        Model model = (Model) map.get(\"model\");\n        Assert.assertEquals(0, model.values.size());\n    }\n\n    public void test_notMatch() throws Exception {\n        String text = \"{\\\"value\\\":[]}\";\n        Model model = JSON.parseObject(text, Model.class);\n        Assert.assertNull(model.values);\n    }\n\n    public void test_error() throws Exception {\n        String text = \"{\\\"values\\\":[1\";\n        Exception error = null;\n        try {\n            Model model = JSON.parseObject(text, Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_1() throws Exception {\n        String text = \"{\\\"values\\\":[\\\"b\\\"[\";\n        Exception error = null;\n        try {\n            Model model = JSON.parseObject(text, Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_2() throws Exception {\n        String text = \"{\\\"model\\\":{\\\"values\\\":[][\";\n\n        Exception error = null;\n        try {\n            JSON.parseObject(text, new TypeReference<Map<String, Model>>() {\n            });\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_3() throws Exception {\n        String text = \"{\\\"model\\\":{\\\"values\\\":[]}[\";\n\n        Exception error = null;\n        try {\n            JSON.parseObject(text, new TypeReference<Map<String, Model>>() {\n            });\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Model {\n\n        private Set<String> values;\n\n        public Set<String> getValues() {\n            return values;\n        }\n\n        public void setValues(Set<String> values) {\n            this.values = values;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/list/ListStringFieldTest_dom_treeSet.java",
    "content": "package com.alibaba.json.bvt.parser.deser.list;\n\nimport java.util.Map;\nimport java.util.TreeSet;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.TypeReference;\n\nimport junit.framework.TestCase;\n\npublic class ListStringFieldTest_dom_treeSet extends TestCase {\n\n    public void test_list() throws Exception {\n        String text = \"{\\\"values\\\":[\\\"a\\\",\\\"b\\\",\\\"ab\\\\\\\\c\\\"]}\";\n\n        Model model = JSON.parseObject(text, Model.class);\n\n        Assert.assertEquals(3, model.values.size());\n        Assert.assertTrue(model.values.contains(\"a\"));\n        Assert.assertTrue(model.values.contains(\"b\"));\n        Assert.assertTrue(model.values.contains(\"ab\\\\c\"));\n    }\n\n    public void test_null() throws Exception {\n        String text = \"{\\\"values\\\":null}\";\n        Model model = JSON.parseObject(text, Model.class);\n        Assert.assertNull(model.values);\n    }\n\n    public void test_empty() throws Exception {\n        String text = \"{\\\"values\\\":[]}\";\n        Model model = JSON.parseObject(text, Model.class);\n        Assert.assertEquals(0, model.values.size());\n    }\n\n    public void test_map_empty() throws Exception {\n        String text = \"{\\\"model\\\":{\\\"values\\\":[]}}\";\n        Map<String, Model> map = JSON.parseObject(text, new TypeReference<Map<String, Model>>() {\n        });\n        Model model = (Model) map.get(\"model\");\n        Assert.assertEquals(0, model.values.size());\n    }\n\n    public void test_notMatch() throws Exception {\n        String text = \"{\\\"value\\\":[]}\";\n        Model model = JSON.parseObject(text, Model.class);\n        Assert.assertNull(model.values);\n    }\n\n    public void test_error() throws Exception {\n        String text = \"{\\\"values\\\":[1\";\n        Exception error = null;\n        try {\n            Model model = JSON.parseObject(text, Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_1() throws Exception {\n        String text = \"{\\\"values\\\":[\\\"b\\\"[\";\n        Exception error = null;\n        try {\n            Model model = JSON.parseObject(text, Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_2() throws Exception {\n        String text = \"{\\\"model\\\":{\\\"values\\\":[][\";\n\n        Exception error = null;\n        try {\n            JSON.parseObject(text, new TypeReference<Map<String, Model>>() {\n            });\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_3() throws Exception {\n        String text = \"{\\\"model\\\":{\\\"values\\\":[]}[\";\n\n        Exception error = null;\n        try {\n            JSON.parseObject(text, new TypeReference<Map<String, Model>>() {\n            });\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Model {\n\n        private TreeSet<String> values;\n\n        public TreeSet<String> getValues() {\n            return values;\n        }\n\n        public void setValues(TreeSet<String> values) {\n            this.values = values;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/list/ListStringFieldTest_stream.java",
    "content": "package com.alibaba.json.bvt.parser.deser.list;\n\nimport java.io.StringReader;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.TypeReference;\n\nimport junit.framework.TestCase;\n\npublic class ListStringFieldTest_stream extends TestCase {\n\n    public void test_list() throws Exception {\n        String text = \"{\\\"values\\\":[\\\"a\\\",null,\\\"b\\\",\\\"ab\\\\\\\\c\\\\\\\"\\\"]}\";\n\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Model model = reader.readObject(Model.class);\n        Assert.assertEquals(4, model.values.size());\n        Assert.assertEquals(\"a\", model.values.get(0));\n        Assert.assertEquals(null, model.values.get(1));\n        Assert.assertEquals(\"b\", model.values.get(2));\n        Assert.assertEquals(\"ab\\\\c\\\"\", model.values.get(3));\n    }\n\n    public void test_null() throws Exception {\n        String text = \"{\\\"values\\\":null}\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Model model = reader.readObject(Model.class);\n        Assert.assertNull(model.values);\n    }\n\n    public void test_empty() throws Exception {\n        String text = \"{\\\"values\\\":[]}\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Model model = reader.readObject(Model.class);\n        Assert.assertEquals(0, model.values.size());\n    }\n\n    public void test_map_empty() throws Exception {\n        String text = \"{\\\"model\\\":{\\\"values\\\":[]}}\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Map<String, Model> map = reader.readObject(new TypeReference<Map<String, Model>>() {\n        });\n        Model model = (Model) map.get(\"model\");\n        Assert.assertEquals(0, model.values.size());\n    }\n\n    public void test_notMatch() throws Exception {\n        String text = \"{\\\"value\\\":[]}\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Model model = reader.readObject(Model.class);\n        Assert.assertNull(model.values);\n    }\n\n    public void test_error() throws Exception {\n        String text = \"{\\\"values\\\":[1\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n\n        Exception error = null;\n        try {\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_1() throws Exception {\n        String text = \"{\\\"values\\\":[\\\"b\\\"[\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n\n        Exception error = null;\n        try {\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_2() throws Exception {\n        String text = \"{\\\"model\\\":{\\\"values\\\":[][\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n        \n\n        Exception error = null;\n        try {\n            reader.readObject(new TypeReference<Map<String, Model>>() {\n            });\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_3() throws Exception {\n        String text = \"{\\\"model\\\":{\\\"values\\\":[]}[\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n        \n\n        Exception error = null;\n        try {\n            reader.readObject(new TypeReference<Map<String, Model>>() {\n            });\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_4() throws Exception {\n        String text = \"{\\\"model\\\":{\\\"values\\\":[\\\"aaa]}[\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n        \n\n        Exception error = null;\n        try {\n            reader.readObject(new TypeReference<Map<String, Model>>() {\n            });\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_n() throws Exception {\n        String text = \"{\\\"values\\\":[n\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n\n        Exception error = null;\n        try {\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_nu() throws Exception {\n        String text = \"{\\\"values\\\":[nu\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n\n        Exception error = null;\n        try {\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_nul() throws Exception {\n        String text = \"{\\\"values\\\":[nul\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n\n        Exception error = null;\n        try {\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_null() throws Exception {\n        String text = \"{\\\"values\\\":[null\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n\n        Exception error = null;\n        try {\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_rbacket() throws Exception {\n        String text = \"{\\\"values\\\":[null,]\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n\n        Exception error = null;\n        try {\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Model {\n\n        private List<String> values;\n\n        public List<String> getValues() {\n            return values;\n        }\n\n        public void setValues(List<String> values) {\n            this.values = values;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/list/ListStringFieldTest_stream_TreeSet.java",
    "content": "package com.alibaba.json.bvt.parser.deser.list;\n\nimport java.io.StringReader;\nimport java.util.Map;\nimport java.util.TreeSet;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.TypeReference;\n\nimport junit.framework.TestCase;\n\npublic class ListStringFieldTest_stream_TreeSet extends TestCase {\n\n    public void test_list() throws Exception {\n        String text = \"{\\\"values\\\":[\\\"a\\\",\\\"b\\\",\\\"ab\\\\\\\\c\\\"]}\";\n\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Model model = reader.readObject(Model.class);\n        \n        Assert.assertEquals(3, model.values.size());\n        Assert.assertTrue(model.values.contains(\"a\"));\n        Assert.assertTrue(model.values.contains(\"b\"));\n    }\n\n    public void test_null() throws Exception {\n        String text = \"{\\\"values\\\":null}\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Model model = reader.readObject(Model.class);\n        Assert.assertNull(model.values);\n    }\n\n    public void test_empty() throws Exception {\n        String text = \"{\\\"values\\\":[]}\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Model model = reader.readObject(Model.class);\n        Assert.assertEquals(0, model.values.size());\n    }\n\n    public void test_map_empty() throws Exception {\n        String text = \"{\\\"model\\\":{\\\"values\\\":[]}}\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Map<String, Model> map = reader.readObject(new TypeReference<Map<String, Model>>() {\n        });\n        Model model = (Model) map.get(\"model\");\n        Assert.assertEquals(0, model.values.size());\n    }\n\n    public void test_notMatch() throws Exception {\n        String text = \"{\\\"value\\\":[]}\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Model model = reader.readObject(Model.class);\n        Assert.assertNull(model.values);\n    }\n\n    public void test_error() throws Exception {\n        String text = \"{\\\"values\\\":[1\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n\n        Exception error = null;\n        try {\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_1() throws Exception {\n        String text = \"{\\\"values\\\":[\\\"b\\\"[\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n\n        Exception error = null;\n        try {\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_2() throws Exception {\n        String text = \"{\\\"model\\\":{\\\"values\\\":[][\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n        \n\n        Exception error = null;\n        try {\n            reader.readObject(new TypeReference<Map<String, Model>>() {\n            });\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_3() throws Exception {\n        String text = \"{\\\"model\\\":{\\\"values\\\":[]}[\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n        \n\n        Exception error = null;\n        try {\n            reader.readObject(new TypeReference<Map<String, Model>>() {\n            });\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n\n    public static class Model {\n\n        private TreeSet<String> values;\n\n        public TreeSet<String> getValues() {\n            return values;\n        }\n\n        public void setValues(TreeSet<String> values) {\n            this.values = values;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/list/ListStringFieldTest_stream_array.java",
    "content": "package com.alibaba.json.bvt.parser.deser.list;\n\nimport java.io.StringReader;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class ListStringFieldTest_stream_array extends TestCase {\n\n    public void test_list() throws Exception {\n        String text = \"[[\\\"a\\\",null,\\\"b\\\",\\\"ab\\\\\\\\c\\\\\\\"a\\\"]]\";\n\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Model model = reader.readObject(Model.class);\n        Assert.assertEquals(4, model.values.size());\n        Assert.assertEquals(\"a\", model.values.get(0));\n        Assert.assertEquals(null, model.values.get(1));\n        Assert.assertEquals(\"b\", model.values.get(2));\n        Assert.assertEquals(\"ab\\\\c\\\"a\", model.values.get(3));\n    }\n\n    public void test_null() throws Exception {\n        String text = \"[null]\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Model model = reader.readObject(Model.class);\n        Assert.assertNull(model.values);\n    }\n\n    public void test_empty() throws Exception {\n        String text = \"[[]]}\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Model model = reader.readObject(Model.class);\n        Assert.assertEquals(0, model.values.size());\n    }\n\n    public void test_map_empty() throws Exception {\n        String text = \"{\\\"model\\\":[[]]}\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Map<String, Model> map = reader.readObject(new TypeReference<Map<String, Model>>() {\n        });\n        Model model = (Model) map.get(\"model\");\n        Assert.assertEquals(0, model.values.size());\n    }\n    \n    public void test_map_empty_2() throws Exception {\n        String text = \"{\\\"model\\\":[[]],\\\"model2\\\":[[]]}\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Map<String, Model> map = reader.readObject(new TypeReference<Map<String, Model>>() {\n        });\n        Model model = (Model) map.get(\"model\");\n        Assert.assertEquals(0, model.values.size());\n        \n        Model model2 = (Model) map.get(\"model2\");\n        Assert.assertEquals(0, model2.values.size());\n    }\n\n    public void test_error() throws Exception {\n        String text = \"[[1{1,}\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n\n        Exception error = null;\n        try {\n            reader.readObject(Model.class);\n            reader.close();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_0() throws Exception {\n        String text = \"[{\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n\n        Exception error = null;\n        try {\n            reader.readObject(Model.class);\n            reader.close();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_n() throws Exception {\n        String text = \"[n\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n\n        Exception error = null;\n        try {\n            reader.readObject(Model.class);\n            reader.close();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_nu() throws Exception {\n        String text = \"[nu\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n\n        Exception error = null;\n        try {\n            reader.readObject(Model.class);\n            reader.close();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_nul() throws Exception {\n        String text = \"[nul\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n\n        Exception error = null;\n        try {\n            reader.readObject(Model.class);\n            reader.close();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    \n    public void test_error_null() throws Exception {\n        String text = \"[null\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n\n        Exception error = null;\n        try {\n            reader.readObject(Model.class);\n            reader.close();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_fn() throws Exception {\n        String text = \"[[n\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n\n        Exception error = null;\n        try {\n            reader.readObject(Model.class);\n            reader.close();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_fnu() throws Exception {\n        String text = \"[[nu\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n\n        Exception error = null;\n        try {\n            reader.readObject(Model.class);\n            reader.close();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_fnul() throws Exception {\n        String text = \"[[nul\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n\n        Exception error = null;\n        try {\n            reader.readObject(Model.class);\n            reader.close();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    \n    public void test_error_fnull() throws Exception {\n        String text = \"[[null\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n\n        Exception error = null;\n        try {\n            reader.readObject(Model.class);\n            reader.close();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_notclose() throws Exception {\n        String text = \"[[\\\"aaa\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n\n        Exception error = null;\n        try {\n            reader.readObject(Model.class);\n            reader.close();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_1() throws Exception {\n        String text = \"[[\\\"b\\\"[[{\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n\n        Exception error = null;\n        try {\n            reader.readObject(Model.class);\n            reader.close();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_2() throws Exception {\n        String text = \"{\\\"model\\\":[[][\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n        \n\n        Exception error = null;\n        try {\n            reader.readObject(new TypeReference<Map<String, Model>>() {\n            });\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_3() throws Exception {\n        String text = \"{\\\"model\\\":[[]}[\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n        \n\n        Exception error = null;\n        try {\n            reader.readObject(new TypeReference<Map<String, Model>>() {\n            });\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    @JSONType(parseFeatures = Feature.SupportArrayToBean)\n    public static class Model {\n\n        private List<String> values;\n\n        public List<String> getValues() {\n            return values;\n        }\n\n        public void setValues(List<String> values) {\n            this.values = values;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/list/ListStringFieldTest_stream_array_2.java",
    "content": "package com.alibaba.json.bvt.parser.deser.list;\n\nimport java.io.StringReader;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class ListStringFieldTest_stream_array_2 extends TestCase {\n\n    public void test_list() throws Exception {\n        String text = \"[[\\\"a\\\",null,\\\"b\\\",\\\"ab\\\\\\\\c\\\"],[]]\";\n\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Model model = reader.readObject(Model.class);\n        Assert.assertEquals(4, model.values.size());\n        Assert.assertEquals(\"a\", model.values.get(0));\n        Assert.assertEquals(null, model.values.get(1));\n        Assert.assertEquals(\"b\", model.values.get(2));\n        Assert.assertEquals(\"ab\\\\c\", model.values.get(3));\n        \n        Assert.assertEquals(0, model.values2.size());\n    }\n    \n    public void test_list2() throws Exception {\n        String text = \"{\\\"values\\\":[\\\"a\\\",null,\\\"b\\\",\\\"ab\\\\\\\\c\\\"],\\\"values2\\\":[]}\";\n\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Model model = reader.readObject(Model.class);\n        Assert.assertEquals(4, model.values.size());\n        Assert.assertEquals(\"a\", model.values.get(0));\n        Assert.assertEquals(null, model.values.get(1));\n        Assert.assertEquals(\"b\", model.values.get(2));\n        Assert.assertEquals(\"ab\\\\c\", model.values.get(3));\n        \n        Assert.assertEquals(0, model.values2.size());\n    }\n\n    \n    @JSONType(parseFeatures = Feature.SupportArrayToBean)\n    public static class Model {\n\n        public List<String> values;\n        public List<String> values2;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/list/ListStringFieldTest_stream_hashSet.java",
    "content": "package com.alibaba.json.bvt.parser.deser.list;\n\nimport java.io.StringReader;\nimport java.util.Map;\nimport java.util.Set;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.TypeReference;\n\nimport junit.framework.TestCase;\n\npublic class ListStringFieldTest_stream_hashSet extends TestCase {\n\n    public void test_list() throws Exception {\n        String text = \"{\\\"values\\\":[\\\"a\\\",null,\\\"b\\\",\\\"ab\\\\\\\\c\\\"]}\";\n\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Model model = reader.readObject(Model.class);\n        \n        Assert.assertEquals(4, model.values.size());\n        Assert.assertTrue(model.values.contains(\"a\"));\n        Assert.assertTrue(model.values.contains(\"b\"));\n        Assert.assertTrue(model.values.contains(null));\n        Assert.assertTrue(model.values.contains(\"ab\\\\c\"));\n    }\n\n    public void test_null() throws Exception {\n        String text = \"{\\\"values\\\":null}\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Model model = reader.readObject(Model.class);\n        Assert.assertNull(model.values);\n    }\n\n    public void test_empty() throws Exception {\n        String text = \"{\\\"values\\\":[]}\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Model model = reader.readObject(Model.class);\n        Assert.assertEquals(0, model.values.size());\n    }\n\n    public void test_map_empty() throws Exception {\n        String text = \"{\\\"model\\\":{\\\"values\\\":[]}}\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Map<String, Model> map = reader.readObject(new TypeReference<Map<String, Model>>() {\n        });\n        Model model = (Model) map.get(\"model\");\n        Assert.assertEquals(0, model.values.size());\n    }\n\n    public void test_notMatch() throws Exception {\n        String text = \"{\\\"value\\\":[]}\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Model model = reader.readObject(Model.class);\n        Assert.assertNull(model.values);\n    }\n\n    public void test_error() throws Exception {\n        String text = \"{\\\"values\\\":[1\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n\n        Exception error = null;\n        try {\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_1() throws Exception {\n        String text = \"{\\\"values\\\":[\\\"b\\\"[\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n\n        Exception error = null;\n        try {\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_2() throws Exception {\n        String text = \"{\\\"model\\\":{\\\"values\\\":[][\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n        \n\n        Exception error = null;\n        try {\n            reader.readObject(new TypeReference<Map<String, Model>>() {\n            });\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_3() throws Exception {\n        String text = \"{\\\"model\\\":{\\\"values\\\":[]}[\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n        \n\n        Exception error = null;\n        try {\n            reader.readObject(new TypeReference<Map<String, Model>>() {\n            });\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n\n    public static class Model {\n\n        private Set<String> values;\n\n        public Set<String> getValues() {\n            return values;\n        }\n\n        public void setValues(Set<String> values) {\n            this.values = values;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/nonctor/NonDefaultConstructorTest0.java",
    "content": "package com.alibaba.json.bvt.parser.deser.nonctor;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 06/08/2017.\n */\npublic class NonDefaultConstructorTest0 extends TestCase {\n    public void test_non_default_constructor() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"id\\\":1001,\\\"value\\\":{\\\"id\\\":2001}}\", Model.class);\n        assertNotNull(model);\n        assertEquals(1001, model.id);\n        assertNotNull(model.value);\n        assertEquals(2001, model.value.id);\n    }\n\n\n    public static class Model {\n        private final int id;\n        private final Value value;\n\n        public Model(int id, Value value) {\n            this.id = id;\n            this.value = value;\n        }\n    }\n\n    public static class Value {\n        private final int id;\n\n        public Value(int id) {\n            this.id = id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/stream/ReaderBooleanFieldTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.stream;\n\nimport java.io.StringReader;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.TypeReference;\n\nimport junit.framework.TestCase;\n\npublic class ReaderBooleanFieldTest extends TestCase {\n\n    public void test_bool_error_0() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(\"{\\\"value\\\":t}\"));\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_bool_error_1() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(\"{\\\"value\\\":tr}\"));\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_bool_error_2() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(\"{\\\"value\\\":tru}\"));\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_bool_error_f0() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(\"{\\\"value\\\":f}\"));\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_bool_error_f1() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(\"{\\\"value\\\":fa}\"));\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_bool_error_f2() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(\"{\\\"value\\\":fal}\"));\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_bool_error_f3() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(\"{\\\"value\\\":fals}\"));\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_bool_normal() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"{\\\"value\\\":false,\\\"value2\\\":true}\"));\n        Model model = reader.readObject(Model.class);\n        Assert.assertFalse(model.value);\n        Assert.assertTrue(model.value2);\n        reader.close();\n    }\n    \n    public void test_bool_normal_2() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"{\\\"model\\\":{\\\"value\\\":false,\\\"value2\\\":true}}\"));\n        Map<String, Model> map = reader.readObject(new TypeReference<Map<String, Model>>() {});\n        Model model = map.get(\"model\");\n        Assert.assertFalse(model.value);\n        Assert.assertTrue(model.value2);\n        reader.close();\n    }\n    \n    public void test_bool_error_map() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(\"{\\\"model\\\":{\\\"value\\\":false,\\\"value2\\\":true}[\"));\n            reader.readObject(new TypeReference<Map<String, Model>>() {});\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    private static class Model {\n\n        public boolean value;\n        public boolean value2;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/stream/ReaderIntFieldTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.stream;\n\nimport java.io.StringReader;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.TypeReference;\n\nimport junit.framework.TestCase;\n\npublic class ReaderIntFieldTest extends TestCase {\n\n    public void test_int_error_0() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(\"{\\\"value\\\":1.A}\"));\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_int_error_1() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(\"{\\\"value\\\":2147483648}\"));\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_int_error_1_x() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(\"{\\\"value\\\":9223372036854775808}\"));\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_int_error_1_x1() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(\"{\\\"value\\\":-2147483649}\"));\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_int_error_2() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(\"{\\\"value\\\":AA}\"));\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_int_normal() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"{\\\"value\\\":1001,\\\"value2\\\":-2001}\"));\n        Model model = reader.readObject(Model.class);\n        Assert.assertEquals(1001, model.value);\n        Assert.assertEquals(-2001, model.value2);\n        reader.close();\n    }\n\n    public void test_int_normal_2() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"{\\\"model\\\":{\\\"value\\\":3001,\\\"value2\\\":-4001}}\"));\n        Map<String, Model> map = reader.readObject(new TypeReference<Map<String, Model>>() {\n        });\n        Model model = map.get(\"model\");\n        Assert.assertEquals(3001, model.value);\n        Assert.assertEquals(-4001, model.value2);\n        reader.close();\n    }\n\n    public void test_int_error_map() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(\"{\\\"model\\\":{\\\"value\\\":3001,\\\"value2\\\":-4001}[\"));\n            reader.readObject(new TypeReference<Map<String, Model>>() {\n            });\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_int_error_end() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(\"{\\\"value\\\":1001,\\\"value2\\\":-2001[\"));\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    private static class Model {\n\n        public int value;\n        public int value2;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/stream/ReaderLongFieldTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.stream;\n\nimport java.io.StringReader;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.TypeReference;\n\nimport junit.framework.TestCase;\n\npublic class ReaderLongFieldTest extends TestCase {\n\n    public void test_long_error_0() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(\"{\\\"value\\\":1.A}\"));\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_long_error_1() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(\"{\\\"value\\\":9223372036854775808}\"));\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_long_error_1_x() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(\"{\\\"value\\\":922337203685477580892233720368547758088}\"));\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_long_error_2() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(\"{\\\"value\\\":AA}\"));\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_long_normal() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"{\\\"value\\\":1001,\\\"value2\\\":-2001}\"));\n        Model model = reader.readObject(Model.class);\n        Assert.assertEquals(1001L, model.value);\n        Assert.assertEquals(-2001L, model.value2);\n        reader.close();\n    }\n\n    public void test_long_normal_2() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"{\\\"model\\\":{\\\"value\\\":3001,\\\"value2\\\":-4001}}\"));\n        Map<String, Model> map = reader.readObject(new TypeReference<Map<String, Model>>() {\n        });\n        Model model = map.get(\"model\");\n        Assert.assertEquals(3001L, model.value);\n        Assert.assertEquals(-4001L, model.value2);\n        reader.close();\n    }\n\n    public void test_long_error_map() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(\"{\\\"model\\\":{\\\"value\\\":3001,\\\"value2\\\":-4001}[\"));\n            reader.readObject(new TypeReference<Map<String, Model>>() {\n            });\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_long_error_end() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(\"{\\\"value\\\":1001,\\\"value2\\\":-2001[\"));\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    private static class Model {\n\n        public long value;\n        public long value2;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/deser/var/TwoTypeTest.java",
    "content": "package com.alibaba.json.bvt.parser.deser.var;\n\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 23/01/2017.\n */\npublic class TwoTypeTest extends TestCase {\n    public void test_two() throws Exception {\n\n    }\n\n    public static class ModelA {\n        public int id;\n    }\n\n    public static class ModelB {\n        public int value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/error/JSONReaderError.java",
    "content": "package com.alibaba.json.bvt.parser.error;\n\nimport java.io.StringReader;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.TypeReference;\n\nimport junit.framework.TestCase;\n\npublic class JSONReaderError extends TestCase {\n\n    public void test_reader_error() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(\"{\\\"id\\\":\"));\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_reader_error_1() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(\"{\\\"id\\\":\\\"aa\"));\n            reader.readObject(Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_reader_no_error() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"{\\\"id\\\":\\\"aa\\\",\\\"name\\\":\\\"wenshao\\\"}\"));\n        Model model = reader.readObject(Model.class);\n        Assert.assertEquals(\"aa\", model.id);\n        Assert.assertEquals(\"wenshao\", model.name);\n        reader.close();\n    }\n    \n    public void test_reader_no_error_1() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"{\\\"model\\\":{\\\"id\\\":\\\"aa\\\",\\\"name\\\":\\\"wenshao\\\"}}\"));\n        Map<String, Model> map = reader.readObject(new TypeReference<Map<String, Model>>() {});\n        Model model = map.get(\"model\");\n        Assert.assertEquals(\"aa\", model.id);\n        Assert.assertEquals(\"wenshao\", model.name);\n        reader.close();\n    }\n    \n    public void test_reader_no_error_2() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"{\\\"model\\\":{\\\"id\\\":\\\"aa\\\",\\\"name\\\":\\\"wenshao\\\"},\\\"model2\\\":{\\\"id\\\":\\\"bb\\\",\\\"name\\\":\\\"ljw\\\"}}\"));\n        Map<String, Model> map = reader.readObject(new TypeReference<Map<String, Model>>() {});\n        \n        {\n            Model model = map.get(\"model\");\n            Assert.assertEquals(\"aa\", model.id);\n            Assert.assertEquals(\"wenshao\", model.name);\n        }\n        {\n            Model model = map.get(\"model2\");\n            Assert.assertEquals(\"bb\", model.id);\n            Assert.assertEquals(\"ljw\", model.name);\n        }\n        reader.close();\n    }\n    \n    public void test_reader_error_3() throws Exception {\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(\"{\\\"model\\\":{\\\"id\\\":\\\"aa\\\",\\\"name\\\":\\\"wenshao\\\"}[\"));\n            Map<String, Model> map = reader.readObject(new TypeReference<Map<String, Model>>() {});\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Model {\n\n        public String id;\n        public String name;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/error/ParseErrorTest_10.java",
    "content": "package com.alibaba.json.bvt.parser.error;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class ParseErrorTest_10 extends TestCase {\n\n    public void test_for_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{123,\");   \n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/error/ParseErrorTest_11.java",
    "content": "package com.alibaba.json.bvt.parser.error;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class ParseErrorTest_11 extends TestCase {\n\n    public void test_for_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parse(\"[123,\");   \n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/error/ParseErrorTest_12.java",
    "content": "package com.alibaba.json.bvt.parser.error;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class ParseErrorTest_12 extends TestCase {\n\n    public void test_for_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parse(\"new \\\"Date\\\"\");   \n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/error/ParseErrorTest_13.java",
    "content": "package com.alibaba.json.bvt.parser.error;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class ParseErrorTest_13 extends TestCase {\n\n    public void test_for_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":Set[]:\");   \n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/error/ParseErrorTest_14.java",
    "content": "package com.alibaba.json.bvt.parser.error;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class ParseErrorTest_14 extends TestCase {\n\n    public void test_for_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":true,\");   \n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/error/ParseErrorTest_15.java",
    "content": "package com.alibaba.json.bvt.parser.error;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class ParseErrorTest_15 extends TestCase {\n\n    public void test_for_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":trm\");   \n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/error/ParseErrorTest_16.java",
    "content": "package com.alibaba.json.bvt.parser.error;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class ParseErrorTest_16 extends TestCase {\n\n    public void test_for_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":fale\");   \n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/error/ParseErrorTest_17.java",
    "content": "package com.alibaba.json.bvt.parser.error;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class ParseErrorTest_17 extends TestCase {\n\n    public void test_for_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parse(\"[{\\\"$ref\\\":\\\"$\\\"]\");   \n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/error/ParseErrorTest_18.java",
    "content": "package com.alibaba.json.bvt.parser.error;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class ParseErrorTest_18 extends TestCase {\n\n    public void test_for_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parse(\"[{\\\"$ref\\\":123}]\");   \n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/error/ParseErrorTest_19.java",
    "content": "package com.alibaba.json.bvt.parser.error;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class ParseErrorTest_19 extends TestCase {\n\n    public void test_for_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parse(\"[\\\"wenshao\\\"\");   \n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/error/ParseErrorTest_20.java",
    "content": "package com.alibaba.json.bvt.parser.error;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class ParseErrorTest_20 extends TestCase {\n\n    public void test_for_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parse(\"[\\\"wenshao\\\":\");   \n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/error/ParseErrorTest_21.java",
    "content": "package com.alibaba.json.bvt.parser.error;\n\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\n\nimport junit.framework.TestCase;\n\npublic class ParseErrorTest_21 extends TestCase {\n\n    public void test_for_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":123}\", Model.class);   \n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_for_error_1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":{,,,\\\"id\\\",}}\", Model.class);   \n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_for_error_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":{'child1':{\\\"id\\\":123}}}\", Model.class, ParserConfig.getGlobalInstance(), 0);   \n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_for_error_3() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":{'child1',{\\\"id\\\":123}}}\", Model.class);   \n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_for_error_4() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":{child1:{\\\"id\\\":123}}}\", Model.class, ParserConfig.getGlobalInstance(), 0);   \n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_for_error_5() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":{child1,{\\\"id\\\":123}}}\", Model.class, ParserConfig.getGlobalInstance(), 0, Feature.AllowUnQuotedFieldNames);   \n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public static class Model {\n        public Map<String, Child> value;\n    }\n    \n    public static class Child {\n        public int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/error/ParseErrorTest_8.java",
    "content": "package com.alibaba.json.bvt.parser.error;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class ParseErrorTest_8 extends TestCase {\n\n    public void test_for_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":33\\\"}\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_for_error_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":\\\"33\\\"\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_for_error_3() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":\\\"33\\\",\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_for_error_4() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":\\\"33\\\"},\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public static class Model {\n        public int value;\n    }\n    \n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/error/ParseErrorTest_9.java",
    "content": "package com.alibaba.json.bvt.parser.error;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class ParseErrorTest_9 extends TestCase {\n\n    public void test_for_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":33\\\"}\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_for_error_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":\\\"33\\\"\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_for_error_3() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":\\\"33\\\",\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_for_error_4() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":\\\"33\\\"},\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public static class Model {\n        public long value;\n    }\n    \n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/error/ParseErrorTest_date.java",
    "content": "package com.alibaba.json.bvt.parser.error;\n\nimport java.util.Date;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class ParseErrorTest_date extends TestCase {\n\n    public void test_for_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":\\\"2011-01-09M\\\"}\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_for_error_1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"value\\\":\\\"2011-01-09\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n//    public void test_for_error_2() throws Exception {\n//        Exception error = null;\n//        try {\n//            JSON.parseObject(\"{\\\"value\\\":\\\"2011-01-09 00:00:00.000+.M\\\"}\", Model.class);\n//        } catch (JSONException ex) {\n//            error = ex;\n//        }\n//        Assert.assertNotNull(error);\n//    }\n//    \n//    public void test_for_error_3() throws Exception {\n//        Exception error = null;\n//        try {\n//            JSON.parseObject(\"{\\\"value\\\":\\\"2011-01-09 00:00:00.000+2M\\\"}\", Model.class);\n//        } catch (JSONException ex) {\n//            error = ex;\n//        }\n//        Assert.assertNotNull(error);\n//    }\n    \n    public static class Model {\n        public Date value;\n    }\n    \n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/error/TypeNotMatchError.java",
    "content": "package com.alibaba.json.bvt.parser.error;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class TypeNotMatchError extends TestCase {\n\n    public void test_0() throws Exception {\n        JSON.parseObject(\"{\\\"value\\\":{\\\"@type\\\":\\\"com.alibaba.json.bvt.parser.error.TypeNotMatchError$AA\\\"}}\", Model.class);\n        \n        Exception error = null;\n        try {\n        JSON.parseObject(\"{\\\"value\\\":{\\\"@type\\\":\\\"com.alibaba.json.bvt.parser.error.TypeNotMatchError$B\\\"}}\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    private static class Model {\n\n        public A value;\n    }\n\n    private static class A {\n\n    }\n\n    private static class AA extends A {\n\n    }\n\n    private static class B {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/fieldTypeResolver/FieldTypeResolverTest.java",
    "content": "package com.alibaba.json.bvt.parser.fieldTypeResolver;\n\nimport java.lang.reflect.Type;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.deserializer.FieldTypeResolver;\n\nimport junit.framework.TestCase;\n\npublic class FieldTypeResolverTest extends TestCase {\n\n    public void test_0() throws Exception {\n        String text = \"{\\\"item_0\\\":{},\\\"item_1\\\":{}}\";\n        \n        FieldTypeResolver fieldResolver = new FieldTypeResolver() {\n\n            public Type resolve(Object object, String fieldName) {\n                if (fieldName.startsWith(\"item_\")) {\n                    return Item.class;\n                }\n                \n                return null;\n            }\n        };\n        \n        JSONObject jsonObject = JSON.parseObject(text, JSONObject.class, fieldResolver);\n        Assert.assertTrue(jsonObject.get(\"item_0\") instanceof Item);\n    }\n\n    public static class Item {\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/number/NumberEmtpyObjectTest.java",
    "content": "package com.alibaba.json.bvt.parser.number;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 24/04/2017.\n */\npublic class NumberEmtpyObjectTest extends TestCase {\n    public void test_for_emptyObj() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"val\\\":{}}\", Model.class);\n        assertNull(model.val);\n    }\n\n    public static class Model {\n        public Number val;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/number/NumberValueTest.java",
    "content": "package com.alibaba.json.bvt.parser.number;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class NumberValueTest extends TestCase {\n\n    public void test_0() throws Exception {\n        String text = \"{\\\"value\\\":3D}\";\n        JSONObject obj = (JSONObject) JSON.parse(text);\n        Assert.assertTrue(3D == ((Double)obj.get(\"value\")).doubleValue()); \n\n    }\n    \n    public void test_1() throws Exception {\n        String text = \"{\\\"value\\\":3.e3D}\";\n        JSONObject obj = (JSONObject) JSON.parse(text);\n        Assert.assertTrue(3.e3D == ((Double)obj.get(\"value\")).doubleValue()); \n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/number/NumberValueTest2.java",
    "content": "package com.alibaba.json.bvt.parser.number;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class NumberValueTest2 extends TestCase {\n\n    public void test_0() throws Exception {\n        String text = \"{\\\"value\\\":3F}\";\n        JSONObject obj = (JSONObject) JSON.parse(text);\n        Assert.assertTrue(3F == ((Float)obj.get(\"value\")).floatValue()); \n\n    }\n    \n    public void test_1() throws Exception {\n        String text = \"{\\\"value\\\":3.e3F}\";\n        JSONObject obj = (JSONObject) JSON.parse(text);\n        Assert.assertTrue(3.e3F == ((Float)obj.get(\"value\")).floatValue()); \n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/number/NumberValueTest3.java",
    "content": "package com.alibaba.json.bvt.parser.number;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class NumberValueTest3 extends TestCase {\n\n    public void test_0() throws Exception {\n        String text = \"{\\\"value\\\":-21474836481}\";\n        JSONObject obj = (JSONObject) JSON.parse(text);\n        Assert.assertEquals(Long.valueOf(-21474836481L), obj.get(\"value\"));\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/number/NumberValueTest4.java",
    "content": "package com.alibaba.json.bvt.parser.number;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class NumberValueTest4 extends TestCase {\n\n    public void test_0() throws Exception {\n        String text = \"{\\\"value\\\":21474836481}\";\n        JSONObject obj = (JSONObject) JSON.parse(text);\n        Assert.assertEquals(Long.valueOf(21474836481L), obj.get(\"value\"));\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/number/NumberValueTest_error_0.java",
    "content": "package com.alibaba.json.bvt.parser.number;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class NumberValueTest_error_0 extends TestCase {\n\n    public void test_0() throws Exception {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":33e}\";\n            JSON.parse(text);\n        } catch (JSONException e) {\n            error = e;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/number/NumberValueTest_error_1.java",
    "content": "package com.alibaba.json.bvt.parser.number;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class NumberValueTest_error_1 extends TestCase {\n\n    public void test_0() throws Exception {\n        Exception error = null;\n        try {\n            String text = \"33e\";\n            JSON.parse(text);\n        } catch (JSONException e) {\n            error = e;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/number/NumberValueTest_error_10.java",
    "content": "package com.alibaba.json.bvt.parser.number;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class NumberValueTest_error_10 extends TestCase {\n\n    public void test_0() throws Exception {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":3e-\";\n            JSON.parse(text);\n        } catch (JSONException e) {\n            error = e;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/number/NumberValueTest_error_11.java",
    "content": "package com.alibaba.json.bvt.parser.number;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class NumberValueTest_error_11 extends TestCase {\n\n    public void test_0() throws Exception {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":3e-1\";\n            JSON.parse(text);\n        } catch (JSONException e) {\n            error = e;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/number/NumberValueTest_error_12.java",
    "content": "package com.alibaba.json.bvt.parser.number;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class NumberValueTest_error_12 extends TestCase {\n\n    public void test_0() throws Exception {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":33.33\";\n            JSON.parse(text);\n        } catch (JSONException e) {\n            error = e;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/number/NumberValueTest_error_13.java",
    "content": "package com.alibaba.json.bvt.parser.number;\n\nimport com.alibaba.fastjson.*;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.math.BigDecimal;\nimport java.math.BigInteger;\nimport java.sql.Timestamp;\nimport java.util.concurrent.TimeUnit;\n\npublic class NumberValueTest_error_13 extends TestCase {\n\n    public void test_0() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"v0\\\":49e99999999}\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n        assertTrue(error.getCause() instanceof ArithmeticException);\n    }\n\n    public void test_1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"v1\\\":49e99999999}\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n        assertTrue(error.getCause() instanceof ArithmeticException);\n    }\n\n    public void test_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"v2\\\":49e99999999}\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n        assertTrue(error.getCause() instanceof ArithmeticException);\n    }\n\n    public void test_3() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"v3\\\":49e99999999}\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n        assertTrue(error.getCause() instanceof ArithmeticException);\n    }\n\n    public void test_4() throws Exception {\n        BigDecimal b = new BigDecimal(\"49e999999999\");\n\n        assertEquals(\"4.9E+1000000000\", JSON.toJSONString(b, SerializerFeature.WriteBigDecimalAsPlain));\n        assertEquals(\"{\\\"val\\\":4.9E+1000000000}\", JSON.toJSONString(new M1(b), SerializerFeature.WriteBigDecimalAsPlain));\n    }\n\n    public void test_5() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"v5\\\":49e99999999}\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n        assertTrue(error.getCause() instanceof ArithmeticException);\n    }\n\n    public void test_6() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"v6\\\":49e99999999}\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n        assertTrue(error.getCause() instanceof ArithmeticException);\n    }\n\n    public void test_7() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"v7\\\":49e99999999}\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n        assertTrue(error.getCause() instanceof ArithmeticException);\n    }\n\n    public void test_8() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"v8\\\":49e99999999}\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n        assertEquals(NumberFormatException.class, error.getCause().getClass());\n    }\n\n    public void test_9() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"v9\\\":49e99999999}\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n        assertEquals(ArithmeticException.class, error.getCause().getClass());\n    }\n\n    public void test_10() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"v10\\\":49e99999999}\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n        assertEquals(ArithmeticException.class, error.getCause().getClass());\n    }\n\n    public void test_11() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"v11\\\":49e99999999}\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n        assertEquals(ArithmeticException.class, error.getCause().getClass());\n    }\n\n    public void test_11_new() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"v11\\\":new Date(49e99999999)}\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public void test_12() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"v12\\\":49e99999999}\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n        assertEquals(ArithmeticException.class, error.getCause().getClass());\n    }\n\n    public void test_13() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"v13\\\":49e99999999}\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n        assertEquals(ArithmeticException.class, error.getCause().getClass());\n    }\n\n\n    public void test_14() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"v14\\\":49e99999999}\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n        assertEquals(UnsupportedOperationException.class, error.getCause().getClass());\n    }\n\n    public void test_15() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"v15\\\":49e99999999}\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n\n    public void test_16() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"v16\\\":49e99999999}\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public void test_17() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"v17\\\":49e99999999}\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public void test_17_1() throws Exception {\n        Exception error = null;\n        try {\n            JSONObject jsonObject = JSON.parseObject(\"{\\\"v17\\\":49e99999999}\");\n            jsonObject.getObject(\"v17\", TimeUnit.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n\n    public void test_18() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"v18\\\":49e99999999}\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n\n    public void test_20() throws Exception {\n        JSONObject jsonObject = JSON.parseObject(\"{\\\"v\\\":49e99999999}\");\n        Exception error = null;\n        try {\n            jsonObject.getIntValue(\"v\");\n        } catch (ArithmeticException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public void test_21() throws Exception {\n        JSONObject jsonObject = JSON.parseObject(\"{\\\"v\\\":49e99999999}\");\n        Exception error = null;\n        try {\n            jsonObject.getDate(\"v\");\n        } catch (ArithmeticException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public void test_22() throws Exception {\n        JSONObject jsonObject = JSON.parseObject(\"{\\\"v\\\":49e99999999}\");\n        Exception error = null;\n        try {\n            jsonObject.getObject(\"v\", java.sql.Date.class);\n        } catch (ArithmeticException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public void test_23() throws Exception {\n        JSONObject jsonObject = JSON.parseObject(\"{\\\"v\\\":49e99999999}\");\n        Exception error = null;\n        try {\n            jsonObject.getObject(\"v\", java.sql.Timestamp.class);\n        } catch (ArithmeticException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public void test_24() throws Exception {\n        JSONObject jsonObject = JSON.parseObject(\"{\\\"v\\\":49e99999999}\");\n        Exception error = null;\n        try {\n            jsonObject.getObject(\"v\", java.time.LocalDateTime.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public void test_25() throws Exception {\n        JSONObject jsonObject = JSON.parseObject(\"{\\\"lineNumber\\\":49e99999999}\");\n        Exception error = null;\n        try {\n            jsonObject.toJavaObject(StackTraceElement.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public void test_26() throws Exception {\n        JSONObject jsonObject = JSON.parseObject(\"{\\\"v\\\":49e99999999}\");\n        Exception error = null;\n        try {\n            jsonObject.getObject(\"v\", java.sql.Time.class);\n        } catch (ArithmeticException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public void test_jsonpath() throws Exception {\n        JSONObject jsonObject = JSON.parseObject(\"{\\\"v\\\":0}\");\n        Exception error = null;\n        try {\n            JSONPath.eval(jsonObject, \"$.v in (49e99999999)\");\n        } catch (JSONPathException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public void test_jsonpath_1() throws Exception {\n        JSONArray jsonObject = JSON.parseArray(\"[{\\\"v\\\":49e99999999}]\");\n        JSONPath.eval(jsonObject, \"[v=0]\");\n    }\n\n    public void test_jsonpath_2() throws Exception {\n        Model[] array = JSON.parseObject(\"[{\\\"v2\\\":0}]\", Model[].class);\n        JSONPath.eval(array, \"[v='49e99999999']\");\n    }\n\n    public void test_jsonpath_3() throws Exception {\n        Model[] array = JSON.parseObject(\"[{\\\"v2\\\":0}]\", Model[].class);\n        Exception error = null;\n        try {\n            JSONPath.read(\"{\\\"a\\\":49e9999999}\",\"[a in (123,2,3)]\");\n        } catch (Exception ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public void test_jsonpath_4() throws Exception {\n        Model[] array = JSON.parseObject(\"[{\\\"v2\\\":0}]\", Model[].class);\n        Exception error = null;\n        try {\n            JSONPath.read(\"{\\\"a\\\":49e9999999}\",\"[a between 1 and 3]\");\n        } catch (Exception ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public void test_27() throws Exception {\n        JSONObject object = JSON.parseObject(\"{\\n\" +\n                \"    \\\"connection_health\\\": {\\\"status\\\": \\\"good\\\", \\\"max_value\\\": 2.0, \\\"min_value\\\": 2.0, \\\"average_value\\\": 2.0}, \\n\" +\n                \"    \\\"qps_health\\\": {\\\"status\\\": \\\"good\\\", \\\"max_value\\\": 5.3, \\\"min_value\\\": 4.29, \\\"average_value\\\": 4.6},\\n\" +\n                \"    \\\"disksize_health\\\": {\\\"status\\\": \\\"good\\\", \\\"max_value\\\": 3089.0, \\\"min_value\\\": 3089.0, \\\"average_value\\\": 3089.0},\\n\" +\n                \"     \\\"cpu_health\\\": {\\\"status\\\": \\\"good\\\", \\\"max_value\\\": 0.0, \\\"min_value\\\": 0.0, \\\"average_value\\\": 0.0}, \\n\" +\n                \"     \\\"memory_health\\\": {\\\"status\\\": \\\"good\\\", \\\"max_value\\\": 17.1, \\\"min_value\\\": 17.1, \\\"average_value\\\": 17.1}, \\n\" +\n                \"    \\\"iops_health\\\": {\\\"status\\\": \\\"good\\\", \\\"max_value\\\": 0.09, \\\"min_value\\\": 0.07, \\\"average_value\\\": 0.08}\\n\" +\n                \"}\");\n\n        for(String key : object.keySet()) {\n            System.out.println(\"key = \" + key);\n            System.out.println(\"vaue = \" + object.getJSONObject(key).getIntValue(\"max_value\"));\n        }\n    }\n\n    public static class Model {\n        public byte v0;\n        public short v1;\n        public int v2;\n        public long v3;\n        public Byte v4;\n\n        public Short v5;\n        public Integer v6;\n        public Long v7;\n        public BigInteger v8;\n\n        public Timestamp v9;\n        public java.sql.Date v10;\n        public java.util.Date v11;\n        public java.util.Calendar v12;\n        public java.sql.Timestamp v13;\n        public java.time.LocalDateTime v14;\n\n        public boolean v15;\n        public Boolean v16;\n        public TimeUnit v17;\n        public java.sql.Time v18;\n    }\n\n    public static class M1 {\n        public BigDecimal val;\n\n        public M1(BigDecimal val) {\n            this.val = val;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/number/NumberValueTest_error_2.java",
    "content": "package com.alibaba.json.bvt.parser.number;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class NumberValueTest_error_2 extends TestCase {\n\n    public void test_0() throws Exception {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":33e\";\n            JSON.parse(text);\n        } catch (JSONException e) {\n            error = e;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/number/NumberValueTest_error_3.java",
    "content": "package com.alibaba.json.bvt.parser.number;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class NumberValueTest_error_3 extends TestCase {\n\n    public void test_0() throws Exception {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":33e+}\";\n            JSON.parse(text);\n        } catch (JSONException e) {\n            error = e;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/number/NumberValueTest_error_4.java",
    "content": "package com.alibaba.json.bvt.parser.number;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class NumberValueTest_error_4 extends TestCase {\n\n    public void test_0() throws Exception {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":33e-}\";\n            JSON.parse(text);\n        } catch (JSONException e) {\n            error = e;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/number/NumberValueTest_error_5.java",
    "content": "package com.alibaba.json.bvt.parser.number;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class NumberValueTest_error_5 extends TestCase {\n\n    public void test_0() throws Exception {\n        Exception error = null;\n        try {\n            String text = \"{-\";\n            JSON.parse(text);\n        } catch (JSONException e) {\n            error = e;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/number/NumberValueTest_error_6.java",
    "content": "package com.alibaba.json.bvt.parser.number;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class NumberValueTest_error_6 extends TestCase {\n\n    public void test_0() throws Exception {\n        Exception error = null;\n        try {\n            String text = \"{3e+\";\n            JSON.parse(text);\n        } catch (JSONException e) {\n            error = e;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/number/NumberValueTest_error_7.java",
    "content": "package com.alibaba.json.bvt.parser.number;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class NumberValueTest_error_7 extends TestCase {\n\n    public void test_0() throws Exception {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":-\";\n            JSON.parse(text);\n        } catch (Exception e) {\n            error = e;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/number/NumberValueTest_error_8.java",
    "content": "package com.alibaba.json.bvt.parser.number;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class NumberValueTest_error_8 extends TestCase {\n\n    public void test_0() throws Exception {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":3\";\n            JSON.parse(text);\n        } catch (JSONException e) {\n            error = e;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/number/NumberValueTest_error_9.java",
    "content": "package com.alibaba.json.bvt.parser.number;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\nimport junit.framework.TestCase;\n\npublic class NumberValueTest_error_9 extends TestCase {\n\n    public void test_0() throws Exception {\n        Exception error = null;\n        try {\n            String text = \"{\\\"value\\\":3.\";\n            JSON.parse(text);\n        } catch (JSONException e) {\n            error = e;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/str/EmptyStringTest.java",
    "content": "package com.alibaba.json.bvt.parser.str;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 13/03/2017.\n */\npublic class EmptyStringTest extends TestCase {\n    public void test_for_emptyString() throws Exception {\n        SolutionIdentifier solutionIdentifier = JSON.parseObject(\"{\\\"id\\\":\\\"\\\"}\", SolutionIdentifier.class);\n        assertNull(solutionIdentifier.id);\n    }\n\n    public static class SolutionIdentifier {\n        public Id id;\n    }\n\n    public static class Id {\n        public String id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/str/StringTest_00.java",
    "content": "package com.alibaba.json.bvt.parser.str;\n\nimport java.util.Arrays;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\n\nimport junit.framework.TestCase;\n\npublic class StringTest_00 extends TestCase {\n\n    public void test_string() throws Exception {\n        char[] chars = new char[1024];\n        Arrays.fill(chars, '0');\n        StringBuilder buf = new StringBuilder();\n        buf.append(\"[\\\"\");\n        for (int i = 0; i < 16; ++i) {\n            buf.append(\"\\\\\\\\\");\n            buf.append(new String(chars));\n        }\n        buf.append(\"\\\"]\");\n        \n        String text = buf.toString();\n        JSONArray array = (JSONArray) JSON.parse(text);\n        Assert.assertEquals(1, array.size());\n        \n        String item = (String) array.get(0);\n        Assert.assertEquals(16 * 1024 + 16, item.length());\n        \n        for (int i = 0; i < 16; ++i) {\n            Assert.assertTrue(item.charAt(i * 1025) == '\\\\');\n            for (int j = 0; j < 1024; ++j) {\n                Assert.assertTrue(item.charAt(i * 1025 + j + 1) == '0');    \n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/str/StringTest_01.java",
    "content": "package com.alibaba.json.bvt.parser.str;\n\nimport java.util.Arrays;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\n\nimport junit.framework.TestCase;\n\npublic class StringTest_01 extends TestCase {\n\n    public void test_string() throws Exception {\n        char[] chars = new char[1024];\n        Arrays.fill(chars, '0');\n        StringBuilder buf = new StringBuilder();\n        buf.append(\"[\\\"\");\n        for (int i = 0; i < 16; ++i) {\n            buf.append(\"\\\\\\\\\");\n            buf.append(\"\\\\\\\"\");\n            buf.append(new String(chars));\n        }\n        buf.append(\"\\\"]\");\n        \n        String text = buf.toString();\n        JSONArray array = (JSONArray) JSON.parse(text);\n        Assert.assertEquals(1, array.size());\n        \n        String item = (String) array.get(0);\n        Assert.assertEquals(16 * 1024 + 32, item.length());\n        \n        for (int i = 0; i < 16; ++i) {\n            Assert.assertTrue(item.charAt(i * 1026) == '\\\\');\n            Assert.assertTrue(item.charAt(i * 1026 + 1) == '\\\"');\n            for (int j = 0; j < 1024; ++j) {\n                Assert.assertTrue(item.charAt(i * 1026 + j + 2) == '0');    \n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/str/StringTest_02.java",
    "content": "package com.alibaba.json.bvt.parser.str;\n\nimport java.util.Arrays;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\n\nimport junit.framework.TestCase;\n\npublic class StringTest_02 extends TestCase {\n\n    public void test_string() throws Exception {\n        char[] chars = new char[1024];\n        Arrays.fill(chars, '0');\n        StringBuilder buf = new StringBuilder();\n        buf.append(\"[\\\"\");\n        for (int i = 0; i < 16; ++i) {\n            buf.append(\"\\\\\\\"\");\n            buf.append(new String(chars));\n        }\n        buf.append(\"\\\"]\");\n        \n        String text = buf.toString();\n        JSONArray array = (JSONArray) JSON.parse(text);\n        Assert.assertEquals(1, array.size());\n        \n        String item = (String) array.get(0);\n        Assert.assertEquals(16 * 1024 + 16, item.length());\n        \n        for (int i = 0; i < 16; ++i) {\n            Assert.assertTrue(item.charAt(i * 1025) == '\\\"');\n            for (int j = 0; j < 1024; ++j) {\n                Assert.assertTrue(item.charAt(i * 1025 + j + 1) == '0');    \n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/stream/JSONReaderScannerTest.java",
    "content": "package com.alibaba.json.bvt.parser.stream;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONReaderScanner;\n\npublic class JSONReaderScannerTest extends TestCase {\n\tpublic void test_singleQuote() throws Exception {\n\t\tDefaultJSONParser parser = new DefaultJSONParser(new JSONReaderScanner(\"{'name':'张三\\\\'\\\\n\\\\r\\\\\\\"'}\"));\n\t\tJSONObject json = parser.parseObject();\n\t\tAssert.assertEquals(\"张三\\'\\n\\r\\\"\", json.get(\"name\"));\n\t\tparser.close();\n\t}\n\t\n\tpublic void test_doubleQuote() throws Exception {\n\t\tDefaultJSONParser parser = new DefaultJSONParser(new JSONReaderScanner(\"{\\\"name\\\":\\\"张三\\\\'\\\\n\\\\r\\\\\\\"\\\"}\"));\n\t\tJSONObject json = parser.parseObject();\n\t\tAssert.assertEquals(\"张三\\'\\n\\r\\\"\", json.get(\"name\"));\n\t\tparser.close();\n\t}\n\t\n\tpublic void test_doubleQuote_2() throws Exception {\n\t\tDefaultJSONParser parser = new DefaultJSONParser(new JSONReaderScanner(\"{name:\\\"张三\\\\'\\\\n\\\\r\\\\\\\"\\\"}\"));\n\t\tJSONObject json = parser.parseObject();\n\t\tAssert.assertEquals(\"张三\\'\\n\\r\\\"\", json.get(\"name\"));\n\t\tparser.close();\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/stream/JSONReaderScannerTest_boolean.java",
    "content": "package com.alibaba.json.bvt.parser.stream;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONReaderScanner;\n\npublic class JSONReaderScannerTest_boolean extends TestCase {\n\tpublic void test_true() throws Exception {\n\t\tDefaultJSONParser parser = new DefaultJSONParser(new JSONReaderScanner(\"{\\\"name\\\":true}\"));\n\t\tJSONObject json = parser.parseObject();\n\t\tAssert.assertEquals(Boolean.TRUE, json.get(\"name\"));\n\t\tparser.close();\n\t}\n\t\n\tpublic void test_false() throws Exception {\n\t\tDefaultJSONParser parser = new DefaultJSONParser(new JSONReaderScanner(\"{\\\"name\\\":false}\"));\n\t\tJSONObject json = parser.parseObject();\n\t\tAssert.assertEquals(Boolean.FALSE, json.get(\"name\"));\n\t\tparser.close();\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/stream/JSONReaderScannerTest_chars.java",
    "content": "package com.alibaba.json.bvt.parser.stream;\n\nimport java.math.BigDecimal;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONReaderScanner;\n\npublic class JSONReaderScannerTest_chars extends TestCase {\n\n    public void test_double() throws Exception {\n        char[] chars = \"{\\\"value\\\":3.5D}\".toCharArray();\n        DefaultJSONParser parser = new DefaultJSONParser(new JSONReaderScanner(chars, chars.length));\n        JSONObject json = parser.parseObject();\n        Assert.assertTrue(3.5D == ((Double) json.get(\"value\")).doubleValue());\n        parser.close();\n    }\n\n    public void test_float() throws Exception {\n        char[] chars = \"{\\\"value\\\":3.5F}\".toCharArray();\n        DefaultJSONParser parser = new DefaultJSONParser(new JSONReaderScanner(chars, chars.length));\n        JSONObject json = parser.parseObject();\n        Assert.assertTrue(3.5F == ((Float) json.get(\"value\")).doubleValue());\n        parser.close();\n    }\n\n    public void test_decimal() throws Exception {\n        char[] chars = \"{\\\"value\\\":3.5}\".toCharArray();\n        DefaultJSONParser parser = new DefaultJSONParser(new JSONReaderScanner(chars, chars.length));\n        JSONObject json = parser.parseObject();\n        Assert.assertEquals(new BigDecimal(\"3.5\"), json.get(\"value\"));\n        parser.close();\n    }\n    \n    public void test_long() throws Exception {\n        char[] chars = \"{\\\"value\\\":3L}\".toCharArray();\n        DefaultJSONParser parser = new DefaultJSONParser(new JSONReaderScanner(chars, chars.length));\n        JSONObject json = parser.parseObject();\n        Assert.assertTrue(3L == ((Long) json.get(\"value\")).longValue());\n        parser.close();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/stream/JSONReaderScannerTest_enum.java",
    "content": "package com.alibaba.json.bvt.parser.stream;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONReaderScanner;\n\npublic class JSONReaderScannerTest_enum extends TestCase {\n\n    public void test_a() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(new JSONReaderScanner(\"{\\\"type\\\":\\\"A\\\"}\"));\n        VO vo = parser.parseObject(VO.class);\n        Assert.assertEquals(Type.A, vo.getType());\n        parser.close();\n    }\n\n    public void test_b() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(new JSONReaderScanner(\"{\\\"type\\\":\\\"B\\\"}\"));\n        VO vo = parser.parseObject(VO.class);\n        Assert.assertEquals(Type.B, vo.getType());\n        parser.close();\n    }\n\n    public void test_c() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(new JSONReaderScanner(\"{\\\"type\\\":\\\"C\\\"}\"));\n        VO vo = parser.parseObject(VO.class);\n        Assert.assertEquals(Type.C, vo.getType());\n        parser.close();\n    }\n    \n    public void test_x() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(new JSONReaderScanner(\"{\\\"type\\\":\\\"XXXXXXXXXXXXXXXXXXXXXXXX\\\"}\"));\n        VO vo = parser.parseObject(VO.class);\n        Assert.assertEquals(Type.XXXXXXXXXXXXXXXXXXXXXXXX, vo.getType());\n        parser.close();\n    }\n\n    public static class VO {\n\n        private Type type;\n\n        public Type getType() {\n            return type;\n        }\n\n        public void setType(Type type) {\n            this.type = type;\n        }\n\n    }\n\n    public static enum Type {\n        A, B, C, D, XXXXXXXXXXXXXXXXXXXXXXXX\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/stream/JSONReaderScannerTest_matchField.java",
    "content": "package com.alibaba.json.bvt.parser.stream;\n\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONReaderScanner;\n\npublic class JSONReaderScannerTest_matchField extends TestCase {\n\n    public void test_true() throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(new JSONReaderScanner(\"{\\\"items\\\":[{}],\\\"value\\\":{}}\"));\n        VO vo = parser.parseObject(VO.class);\n        Assert.assertNotNull(vo.getValue());\n        Assert.assertNotNull(vo.getItems());\n        Assert.assertEquals(1, vo.getItems().size());\n        Assert.assertNotNull(vo.getItems().get(0));\n        parser.close();\n    }\n\n    public static class VO {\n\n        private List<Item> items;\n        private Entity     value;\n\n        public Entity getValue() {\n            return value;\n        }\n\n        public void setValue(Entity value) {\n            this.value = value;\n        }\n\n        public List<Item> getItems() {\n            return items;\n        }\n\n        public void setItems(List<Item> items) {\n            this.items = items;\n        }\n\n    }\n\n    public static class Entity {\n\n    }\n\n    public static class Item {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/stream/JSONReaderScannerTest_negative.java",
    "content": "package com.alibaba.json.bvt.parser.stream;\n\nimport java.math.BigDecimal;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONReaderScanner;\n\npublic class JSONReaderScannerTest_negative extends TestCase {\n\n    public void test_double() throws Exception {\n        char[] chars = \"{\\\"value\\\":-3.5D}\".toCharArray();\n        DefaultJSONParser parser = new DefaultJSONParser(new JSONReaderScanner(chars, chars.length));\n        JSONObject json = parser.parseObject();\n        Assert.assertTrue(-3.5D == ((Double) json.get(\"value\")).doubleValue());\n        parser.close();\n    }\n\n    public void test_float() throws Exception {\n        char[] chars = \"{\\\"value\\\":-3.5F}\".toCharArray();\n        DefaultJSONParser parser = new DefaultJSONParser(new JSONReaderScanner(chars, chars.length));\n        JSONObject json = parser.parseObject();\n        Assert.assertTrue(-3.5F == ((Float) json.get(\"value\")).doubleValue());\n        parser.close();\n    }\n\n    public void test_decimal() throws Exception {\n        char[] chars = \"{\\\"value\\\":-3.5}\".toCharArray();\n        DefaultJSONParser parser = new DefaultJSONParser(new JSONReaderScanner(chars, chars.length));\n        JSONObject json = parser.parseObject();\n        Assert.assertEquals(new BigDecimal(\"-3.5\"), json.get(\"value\"));\n        parser.close();\n    }\n    \n    public void test_long() throws Exception {\n        char[] chars = \"{\\\"value\\\":-3L}\".toCharArray();\n        DefaultJSONParser parser = new DefaultJSONParser(new JSONReaderScanner(chars, chars.length));\n        JSONObject json = parser.parseObject();\n        Assert.assertTrue(-3L == ((Long) json.get(\"value\")).longValue());\n        parser.close();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/stream/JSONReaderScannerTest_type.java",
    "content": "package com.alibaba.json.bvt.parser.stream;\n\nimport java.util.LinkedHashMap;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONReaderScanner;\n\npublic class JSONReaderScannerTest_type extends TestCase {\n\t@SuppressWarnings(\"rawtypes\")\n\tpublic void test_true() throws Exception {\n\t\tDefaultJSONParser parser = new DefaultJSONParser(new JSONReaderScanner(\"{\\\"@type\\\":\\\"java.util.LinkedHashMap\\\",\\\"name\\\":\\\"张三\\\"}\"));\n\t\tLinkedHashMap json = (LinkedHashMap) parser.parse();\n\t\tAssert.assertEquals(\"张三\", json.get(\"name\"));\n\t\tparser.close();\n\t}\n\t\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/stream/JSONReaderTest.java",
    "content": "package com.alibaba.json.bvt.parser.stream;\n\nimport java.io.InputStream;\nimport java.io.InputStreamReader;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONReader;\n\npublic class JSONReaderTest extends TestCase {\n\tpublic void test_read() throws Exception {\n\t\tString resource = \"2.json\";\n        InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource);\n         \n\t\tJSONReader reader = new JSONReader(new InputStreamReader(is, \"UTF-8\"));\n\t\t\n\t\treader.startObject();\n\t\t\n\t\tAssert.assertEquals(\"company\", reader.readString());\n\t\tAssert.assertTrue(reader.readObject() instanceof JSONObject);\n\t\t\n\t\tAssert.assertEquals(\"count\", reader.readString());\n\t\tAssert.assertEquals(5, reader.readObject());\n\t\t\n\t\tAssert.assertEquals(\"pagecount\", reader.readString());\n\t\tAssert.assertEquals(0, reader.readObject());\n\t\t\n\t\tAssert.assertEquals(\"pageindex\", reader.readString());\n\t\tAssert.assertEquals(0, reader.readObject());\n\t\t\n\t\tAssert.assertEquals(\"resultList\", reader.readString());\n\t\tAssert.assertTrue(reader.readObject() instanceof JSONArray);\n\t\t\n\t\tAssert.assertEquals(\"totalCount\", reader.readString());\n\t\tAssert.assertEquals(0, reader.readObject());\n\t\t\n\t\treader.endObject();\n\t\t\n\t\treader.close();\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/stream/JSONReaderTest_0.java",
    "content": "package com.alibaba.json.bvt.parser.stream;\n\nimport java.io.StringReader;\n\nimport org.junit.Assert;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.Feature;\n\npublic class JSONReaderTest_0 extends TestCase {\n\tpublic void test_read() throws Exception {\n\t\tJSONReader reader = new JSONReader(new StringReader(\"{}\"));\n\t\treader.config(Feature.AllowArbitraryCommas, true);\n\t\t\n\t\tJSONObject object = (JSONObject) reader.readObject();\n\t\tAssert.assertNotNull(object);\n\t\t\n\t\treader.close();\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/stream/JSONReaderTest_1.java",
    "content": "package com.alibaba.json.bvt.parser.stream;\n\nimport java.io.StringReader;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.JSONToken;\n\nimport junit.framework.TestCase;\n\npublic class JSONReaderTest_1 extends TestCase {\n\tpublic void test_read() throws Exception {\n\t\tString text = \"{\\\"id\\\":1001}\";\n\t\tJSONReader reader = new JSONReader(new StringReader(text));\n\t\tAssert.assertEquals(JSONToken.LBRACE, reader.peek());\n\t\treader.startObject();\n\t\tAssert.assertEquals(JSONToken.LITERAL_STRING, reader.peek());\n\t\tAssert.assertEquals(\"id\", reader.readString());\n\t\tAssert.assertEquals(JSONToken.COLON, reader.peek());\n\t\tAssert.assertEquals(Integer.valueOf(1001), reader.readInteger());\n\t\treader.endObject();\n\t\t\n\t\treader.close();\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/stream/JSONReaderTest_2.java",
    "content": "package com.alibaba.json.bvt.parser.stream;\n\nimport java.io.StringReader;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONReader;\n\nimport junit.framework.TestCase;\n\npublic class JSONReaderTest_2 extends TestCase {\n\tpublic void test_read_integer() throws Exception {\n\t\tString text = \"1001\";\n\t\tJSONReader reader = new JSONReader(new StringReader(text));\n\t\tAssert.assertEquals(Integer.valueOf(1001), reader.readInteger());\n\t\treader.close();\n\t}\n\t\n\tpublic void test_read_Long() throws Exception {\n        String text = \"1001\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Assert.assertEquals(Long.valueOf(1001), reader.readLong());\n        reader.close();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/stream/JSONReaderTest_3.java",
    "content": "package com.alibaba.json.bvt.parser.stream;\n\nimport java.io.StringReader;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONReader;\n\nimport junit.framework.TestCase;\n\npublic class JSONReaderTest_3 extends TestCase {\n\n    public void test_read_Long() throws Exception {\n        String text = \"1001\";\n        JSONReader reader = new JSONReader(new StringReader(text));\n\n        Exception error = null;\n        try {\n            reader.hasNext();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/stream/JSONReaderTest_4.java",
    "content": "package com.alibaba.json.bvt.parser.stream;\n\nimport java.io.BufferedReader;\nimport java.io.IOException;\nimport java.io.StringReader;\n\nimport com.alibaba.fastjson.JSONReader;\n\nimport junit.framework.TestCase;\n\npublic class JSONReaderTest_4 extends TestCase {\n\n    public void test_read_Long() throws Exception {\n        String text = \"1001\";\n        JSONReader reader = new JSONReader(new MyReader(text));\n\n    }\n\n    public static class MyReader extends BufferedReader {\n\n        public MyReader(String s){\n            super(new StringReader(s));\n        }\n\n        public void close() throws IOException {\n            throw new IOException();\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/stream/JSONReaderTest_5.java",
    "content": "package com.alibaba.json.bvt.parser.stream;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONReader;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.io.InputStream;\nimport java.io.InputStreamReader;\nimport java.io.StringReader;\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic class JSONReaderTest_5 extends TestCase {\n\tpublic void test_read() throws Exception {\n\t\tfinal int COUNT = 1000 * 10;\n\t\tStringBuilder buf = new StringBuilder();\n\t\tbuf.append('[');\n\t\tfor (int i = 0; i < COUNT; ++i) {\n\t\t\tif (i != 0) {\n\t\t\t\tbuf.append(',');\n\t\t\t}\n\t\t\tbuf.append(\"{\\\"id\\\":\").append(i).append('}');\n\t\t}\n\t\tbuf.append(']');\n\n         \n\t\tJSONReader reader = new JSONReader(new StringReader(buf.toString()));\n\t\t\n\t\treader.startArray();\n\t\tMap map = new HashMap();\n\t\tint count = 0;\n\t\tfor (;;) {\n\t\t\tif (reader.hasNext()) {\n\t\t\t\treader.startObject();\n\t\t\t\tString key = reader.readString();\n\t\t\t\tLong value = reader.readLong();\n\t\t\t\treader.endObject();\n\t\t\t\tcount++;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tassertEquals(COUNT, count);\n\n\t\treader.endArray();\n\t\t\n\t\treader.close();\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/stream/JSONReaderTest_error.java",
    "content": "package com.alibaba.json.bvt.parser.stream;\n\nimport java.io.StringReader;\nimport java.lang.reflect.Field;\n\nimport org.junit.Assert;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.Feature;\n\npublic class JSONReaderTest_error extends TestCase {\n\n    public void test_read() throws Exception {\n        Field field = JSONReader.class.getDeclaredField(\"context\");\n        field.setAccessible(true);\n        ;\n\n        JSONReader reader = new JSONReader(new StringReader(\"[{}]\"));\n        reader.config(Feature.AllowArbitraryCommas, true);\n\n        reader.startArray();\n\n        Object context = field.get(reader);\n        Field stateField = context.getClass().getDeclaredField(\"state\");\n        stateField.setAccessible(true);\n        stateField.set(context, -1);\n\n        {\n            Exception error = null;\n            try {\n                reader.startObject();\n            } catch (Exception ex) {\n                error = ex;\n            }\n            Assert.assertNotNull(error);\n        }\n        {\n            Exception error = null;\n            try {\n                reader.readInteger();\n            } catch (Exception ex) {\n                error = ex;\n            }\n            Assert.assertNotNull(error);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/stream/JSONReaderTest_error2.java",
    "content": "package com.alibaba.json.bvt.parser.stream;\n\nimport java.io.StringReader;\nimport java.lang.reflect.Field;\n\nimport org.junit.Assert;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.Feature;\n\npublic class JSONReaderTest_error2 extends TestCase {\n    private static Object context;\n    private static Field stateField;\n    \n    public void test_read() throws Exception {\n        Field field = JSONReader.class.getDeclaredField(\"context\");\n        field.setAccessible(true);\n        ;\n\n        JSONReader reader = new JSONReader(new StringReader(\"[{}]\"));\n        reader.config(Feature.AllowArbitraryCommas, true);\n\n        reader.startArray();\n\n        context = field.get(reader);\n        stateField = context.getClass().getDeclaredField(\"state\");\n        stateField.setAccessible(true);\n        \n\n        {\n            Exception error = null;\n            try {\n                reader.readObject(VO.class);\n            } catch (Exception ex) {\n                error = ex;\n            }\n            Assert.assertNotNull(error);\n        }\n    }\n    \n    public static class VO {\n        public VO() {\n            try {\n                stateField.set(context, -1);\n            } catch (IllegalArgumentException e) {\n                // TODO Auto-generated catch block\n                e.printStackTrace();\n            } catch (IllegalAccessException e) {\n                // TODO Auto-generated catch block\n                e.printStackTrace();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/stream/JSONReader_array.java",
    "content": "package com.alibaba.json.bvt.parser.stream;\n\nimport java.io.StringReader;\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONReader;\n\npublic class JSONReader_array extends TestCase {\n\n    public void test_array() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"[[],[],3,null,{\\\"name\\\":\\\"jobs\\\"},{\\\"id\\\":123},{\\\"id\\\":1},{\\\"id\\\":2}]\"));\n        reader.startArray();\n\n        JSONArray first = (JSONArray) reader.readObject();\n        JSONArray second = (JSONArray) reader.readObject();\n\n        Assert.assertNotNull(first);\n        Assert.assertNotNull(second);\n\n        Assert.assertEquals(new Integer(3), reader.readInteger());\n        Assert.assertNull(reader.readString());\n        \n        {\n            Map<String, Object> map = new HashMap<String, Object>();\n            reader.readObject(map);\n            Assert.assertEquals(\"jobs\", map.get(\"name\"));\n        }\n\n        {\n            VO vo = new VO();\n            reader.readObject(vo);\n            Assert.assertEquals(123, vo.getId());\n        }\n        \n        while (reader.hasNext()) {\n            VO vo = reader.readObject(VO.class);\n            Assert.assertNotNull(vo);\n        }\n        reader.endArray();\n        reader.close();\n    }\n\n    public static class VO {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/stream/JSONReader_map.java",
    "content": "package com.alibaba.json.bvt.parser.stream;\n\nimport java.io.StringReader;\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONReader;\n\npublic class JSONReader_map extends TestCase {\n\n    public void test_array() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"[{\\\"id\\\":123}]\"));\n\n        reader.startArray();\n\n        Map<String, Object> map = new HashMap<String, Object>();\n        reader.readObject(map);\n\n        Assert.assertEquals(123, map.get(\"id\"));\n\n        reader.endArray();\n\n        reader.close();\n    }\n\n    public void test_map() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"{\\\"id\\\":123}\"));\n\n        Map<String, Object> map = new HashMap<String, Object>();\n        reader.readObject(map);\n\n        Assert.assertEquals(123, map.get(\"id\"));\n\n        reader.close();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/stream/JSONReader_obj.java",
    "content": "package com.alibaba.json.bvt.parser.stream;\n\nimport java.io.StringReader;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONReader;\n\npublic class JSONReader_obj extends TestCase {\n\n    public void test_array() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"[{\\\"id\\\":123}]\"));\n\n        reader.startArray();\n\n        VO vo = new VO();\n        reader.readObject(vo);\n\n        Assert.assertEquals(123, vo.getId());\n\n        reader.endArray();\n\n        reader.close();\n    }\n\n    public void test_obj() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"{\\\"id\\\":123}\"));\n\n        VO vo = new VO();\n        reader.readObject(vo);\n\n        Assert.assertEquals(123, vo.getId());\n\n        reader.close();\n    }\n\n    public static class VO {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/stream/JSONReader_obj_2.java",
    "content": "package com.alibaba.json.bvt.parser.stream;\n\nimport java.io.StringReader;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONReader;\n\npublic class JSONReader_obj_2 extends TestCase {\n\n    public void test_array() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"[{\\\"id\\\":123}]\"));\n\n        reader.startArray();\n\n        VO vo = reader.readObject(VO.class);\n\n        Assert.assertEquals(123, vo.getId());\n\n        reader.endArray();\n\n        reader.close();\n    }\n\n    public void test_obj() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"{\\\"id\\\":123}\"));\n\n        VO vo = reader.readObject(VO.class);\n\n        Assert.assertEquals(123, vo.getId());\n\n        reader.close();\n    }\n\n    public static class VO {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/stream/JSONReader_obj_3.java",
    "content": "package com.alibaba.json.bvt.parser.stream;\n\nimport java.io.StringReader;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONReader;\n\npublic class JSONReader_obj_3 extends TestCase {\n\n    public void test_obj() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"{\\\"id\\\":123}\"));\n\n        reader.startObject();\n        Assert.assertEquals(\"id\", reader.readString());\n        Assert.assertEquals(Integer.valueOf(123), reader.readInteger());\n        reader.endObject();\n\n        reader.close();\n    }\n\n    public void test_obj_2() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"{\\\"val\\\":{\\\"id\\\":123}}\"));\n\n        reader.startObject();\n\n        Assert.assertEquals(\"val\", reader.readString());\n\n        reader.startObject();\n        Assert.assertEquals(\"id\", reader.readString());\n        Assert.assertEquals(Integer.valueOf(123), reader.readInteger());\n        reader.endObject();\n\n        reader.endObject();\n\n        reader.close();\n    }\n    \n    public void test_obj_3() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"{\\\"val\\\":{\\\"val\\\":{\\\"id\\\":123}}}\"));\n\n        reader.startObject();\n        Assert.assertEquals(\"val\", reader.readString());\n        \n        reader.startObject();\n        Assert.assertEquals(\"val\", reader.readString());\n\n        reader.startObject();\n        Assert.assertEquals(\"id\", reader.readString());\n        Assert.assertEquals(Long.valueOf(123), reader.readLong());\n        reader.endObject();\n\n        reader.endObject();\n        reader.endObject();\n\n        reader.close();\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/stream/JSONReader_string.java",
    "content": "package com.alibaba.json.bvt.parser.stream;\n\nimport java.io.StringReader;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONReader;\n\npublic class JSONReader_string extends TestCase {\n\n    public void test_array() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"[\\\"abc\\\"]\"));\n\n        reader.startArray();\n\n        Assert.assertEquals(\"abc\", reader.readString());\n\n        reader.endArray();\n\n        reader.close();\n    }\n    \n    public void test_array_2() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"[[\\\"abc\\\"]]\"));\n\n        reader.startArray();\n        reader.startArray();\n\n        Assert.assertEquals(\"abc\", reader.readString());\n\n        reader.endArray();\n        reader.endArray();\n\n        reader.close();\n    }\n    \n    public void test_array_3() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"[[[\\\"abc\\\"]]]\"));\n\n        reader.startArray();\n        reader.startArray();\n        reader.startArray();\n\n        Assert.assertEquals(\"abc\", reader.readString());\n\n        reader.endArray();\n        reader.endArray();\n        reader.endArray();\n\n        reader.close();\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/stream/JSONReader_string_1.java",
    "content": "package com.alibaba.json.bvt.parser.stream;\n\nimport java.io.StringReader;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONReader;\n\npublic class JSONReader_string_1 extends TestCase {\n    public void test_obj() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"\\\"abc\\\"\"));\n\n        Assert.assertEquals(\"abc\", reader.readString());\n\n        reader.close();\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/stream/JSONReader_typeRef.java",
    "content": "package com.alibaba.json.bvt.parser.stream;\n\nimport java.io.StringReader;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class JSONReader_typeRef extends TestCase {\n    public void test_array() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"[{\\\"id\\\":123}]\"));\n        \n        List<VO> list = reader.readObject(new TypeReference<List<VO>>() {}.getType());\n        \n        Assert.assertEquals(123, list.get(0).getId());\n        \n        reader.close();\n    }\n    \n    public void test_array_1() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"[[{\\\"id\\\":123}]]\"));\n        \n        reader.startArray();\n        List<VO> list = reader.readObject(new TypeReference<List<VO>>() {}.getType());\n        \n        Assert.assertEquals(123, list.get(0).getId());\n        \n        reader.endArray();\n        \n        reader.close();\n    }\n    \n    public void test_array_2() throws Exception {\n        JSONReader reader = new JSONReader(new StringReader(\"[[{\\\"id\\\":123}]]\"));\n        \n        reader.startArray();\n        List<VO> list = reader.readObject(new TypeReference<List<VO>>() {});\n        \n        Assert.assertEquals(123, list.get(0).getId());\n        \n        reader.endArray();\n        \n        reader.close();\n    }\n    \n    public static class VO {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/taobao/BooleanObjectFieldTest.java",
    "content": "package com.alibaba.json.bvt.parser.taobao;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class BooleanObjectFieldTest extends TestCase {\n    public void test_0 () throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"value\\\":true}\", VO.class);\n        Assert.assertTrue(vo.value);\n    }\n    \n    public static class VO {\n        public Boolean value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/taobao/DoubleObjectFieldTest.java",
    "content": "package com.alibaba.json.bvt.parser.taobao;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class DoubleObjectFieldTest extends TestCase {\n    public void test_0 () throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"value\\\":1001}\", VO.class);\n        Assert.assertTrue(1001D == vo.value);\n    }\n    \n    public static class VO {\n        public Double value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/taobao/FloatObjectFieldTest.java",
    "content": "package com.alibaba.json.bvt.parser.taobao;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class FloatObjectFieldTest extends TestCase {\n    public void test_0 () throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"value\\\":1001}\", VO.class);\n        Assert.assertTrue(1001F == vo.value);\n    }\n    \n    public static class VO {\n        public Float value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/taobao/IntAsStringTest.java",
    "content": "package com.alibaba.json.bvt.parser.taobao;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class IntAsStringTest extends TestCase {\n    public void test_0 () throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"value\\\":\\\"1001\\\"}\", VO.class);\n        Assert.assertEquals(1001, vo.value);\n    }\n    \n    public static class VO {\n        public int value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/taobao/IntegerAsStringTest.java",
    "content": "package com.alibaba.json.bvt.parser.taobao;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class IntegerAsStringTest extends TestCase {\n    public void test_0 () throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"value\\\":\\\"1001\\\"}\", VO.class);\n        Assert.assertEquals(1001, vo.value.intValue());\n    }\n    \n    public static class VO {\n        public Integer value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/taobao/LongAsStringTest.java",
    "content": "package com.alibaba.json.bvt.parser.taobao;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class LongAsStringTest extends TestCase {\n    public void test_0 () throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"value\\\":\\\"1001\\\"}\", VO.class);\n        Assert.assertEquals(1001L, vo.value);\n    }\n    \n    public static class VO {\n        public long value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/taobao/LongObjectAsStringTest.java",
    "content": "package com.alibaba.json.bvt.parser.taobao;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class LongObjectAsStringTest extends TestCase {\n    public void test_0 () throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"value\\\":\\\"1001\\\"}\", VO.class);\n        Assert.assertEquals(1001, vo.value.intValue());\n    }\n    \n    public static class VO {\n        public Long value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/parser/taobao/SpecialStringTest.java",
    "content": "package com.alibaba.json.bvt.parser.taobao;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class SpecialStringTest extends TestCase {\n    public void test_for_special() throws Exception {\n        VO vo = new VO();\n        vo.value = \"{\\\"aurl\\\"\";\n        String text = JSON.toJSONString(vo);\n        VO vo1 = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(vo1.value, vo.value);\n    }\n    \n    public void test_for_special_1() throws Exception {\n        VO vo = new VO();\n        vo.value = \"{\\\"aurl\\\":\\\"http://a.m.taobao.com/i529666038203.htm\\\",\\\"eurl\\\":\\\"http://click.mz.simba.taobao.com/ecpm?e=FKzStLpktUcmgME64bmjnBsQmLP5zomMI9WwdvViswDtdMUS1TLPryFiqQmsaUcblU3hrUulblXi4Nf5jVnFI3mESrWAJFi8UK7RDtIZydUyXElRAMLwo3HZWQvTKXBpyitB%2BgALy7j45JkIPnsiapEFjIWbdXJAnae9i5WIlhTnQ%2FthEaQ9IuT5J4gzB5T%2FcKP7YijzmvIZWnX1fL8Wv2yOkjnv1RfOuAwHNITyYhs0036Nbzw1rue9DcuU1VaInAsdAQs%2BcFbs41NPY6%2FbqjqRHfjhCyty&u=http%3A%2F%2Fa.m.taobao.com%2Fi529666038203.htm&k=289\\\",\\\"tbgoodslink\\\":\\\"http://i.mmcdn.cn/simba/img/TB120WTMpXXXXazXXXXSutbFXXX.jpg\\\",\\\"tmpl\\\":\\\"\\\"}\";\n        String text = JSON.toJSONString(vo);\n        VO vo1 = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(vo1.value, vo.value);\n    }\n    \n    public static class VO {\n        public String value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/BookEvalTest.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.util.IOUtils;\nimport junit.framework.TestCase;\n\nimport java.io.InputStream;\nimport java.io.InputStreamReader;\n\npublic class BookEvalTest extends TestCase {\n    private JSONObject root;\n\n    protected void setUp() throws Exception {\n        InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"json/book.json\");\n        InputStreamReader reader = new InputStreamReader(is);\n        String json = IOUtils.readAll(reader);\n        IOUtils.close(reader);\n\n        root = (JSONObject) JSON.parse(json, Feature.OrderedField);\n    }\n\n    public void test_0() throws Exception {\n        assertEquals(4, JSONPath.eval(root, \"$..book.length()\"));\n    }\n\n    public void test_1() throws Exception {\n        assertEquals(\"[\\\"reference\\\",\\\"Nigel Rees\\\",\\\"Sayings of the Century\\\",8.95,\\\"fiction\\\",\\\"Evelyn Waugh\\\",\\\"Sword of Honour\\\",12.99,\\\"fiction\\\",\\\"Herman Melville\\\",\\\"Moby Dick\\\",\\\"0-553-21311-3\\\",8.99,\\\"fiction\\\",\\\"J. R. R. Tolkien\\\",\\\"The Lord of the Rings\\\",\\\"0-395-19395-8\\\",22.99,\\\"red\\\",19.95,10]\"\n                , JSON.toJSONString(JSONPath.eval(root, \"$..*\")));\n    }\n\n    public void test_2() throws Exception {\n        assertEquals(\"[\\\"Nigel Rees\\\",\\\"Evelyn Waugh\\\",\\\"Herman Melville\\\",\\\"J. R. R. Tolkien\\\"]\", JSON.toJSONString(JSONPath.eval(root, \"$.store.book[*].author\")));\n    }\n\n    public void test_3() throws Exception {\n        assertEquals(\"[\\\"Nigel Rees\\\",\\\"Evelyn Waugh\\\",\\\"Herman Melville\\\",\\\"J. R. R. Tolkien\\\"]\", JSON.toJSONString(JSONPath.eval(root, \"$..author\")));\n    }\n\n    public void test_4() throws Exception {\n        assertEquals(\"[8.95,12.99,8.99,22.99,19.95]\", JSON.toJSONString(JSONPath.eval(root, \"$..price\")));\n    }\n\n    public void test_5() throws Exception {\n        assertEquals(\"[8.95,12.99,8.99,22.99]\", JSON.toJSONString(JSONPath.eval(root, \"$..book.price\")));\n    }\n\n    public void test_6() throws Exception {\n        assertEquals(\"[[{\\\"category\\\":\\\"reference\\\",\\\"author\\\":\\\"Nigel Rees\\\",\\\"title\\\":\\\"Sayings of the Century\\\",\\\"price\\\":8.95},{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"Evelyn Waugh\\\",\\\"title\\\":\\\"Sword of Honour\\\",\\\"price\\\":12.99},{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"Herman Melville\\\",\\\"title\\\":\\\"Moby Dick\\\",\\\"isbn\\\":\\\"0-553-21311-3\\\",\\\"price\\\":8.99},{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"J. R. R. Tolkien\\\",\\\"title\\\":\\\"The Lord of the Rings\\\",\\\"isbn\\\":\\\"0-395-19395-8\\\",\\\"price\\\":22.99}],{\\\"color\\\":\\\"red\\\",\\\"price\\\":19.95}]\"\n                , JSON.toJSONString(JSONPath.eval(root, \"$.store.*\")));\n    }\n\n    public void test_7() throws Exception {\n        assertEquals(\"[8.95,12.99,8.99,22.99,19.95]\"\n                , JSON.toJSONString(JSONPath.eval(root, \"$.store..price\")));\n    }\n\n    public void test_8() throws Exception {\n        assertEquals(\"{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"Herman Melville\\\",\\\"title\\\":\\\"Moby Dick\\\",\\\"isbn\\\":\\\"0-553-21311-3\\\",\\\"price\\\":8.99}\"\n                , JSON.toJSONString(JSONPath.eval(root, \"$..book[2]\")));\n    }\n\n    public void test_9() throws Exception {\n        assertEquals(\"{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"J. R. R. Tolkien\\\",\\\"title\\\":\\\"The Lord of the Rings\\\",\\\"isbn\\\":\\\"0-395-19395-8\\\",\\\"price\\\":22.99}\"\n                , JSON.toJSONString(JSONPath.eval(root, \"$..book[-1]\")));\n    }\n\n    public void test_10() throws Exception {\n        assertEquals(\"[{\\\"category\\\":\\\"reference\\\",\\\"author\\\":\\\"Nigel Rees\\\",\\\"title\\\":\\\"Sayings of the Century\\\",\\\"price\\\":8.95},{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"Evelyn Waugh\\\",\\\"title\\\":\\\"Sword of Honour\\\",\\\"price\\\":12.99}]\"\n                , JSON.toJSONString(JSONPath.eval(root, \"$..book[0,1]\")));\n    }\n\n    public void test_11() throws Exception {\n        assertEquals(\"[{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"Herman Melville\\\",\\\"title\\\":\\\"Moby Dick\\\",\\\"isbn\\\":\\\"0-553-21311-3\\\",\\\"price\\\":8.99},{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"J. R. R. Tolkien\\\",\\\"title\\\":\\\"The Lord of the Rings\\\",\\\"isbn\\\":\\\"0-395-19395-8\\\",\\\"price\\\":22.99}]\"\n                , JSON.toJSONString(JSONPath.eval(root, \"$..book[?(@.isbn)]\")));\n    }\n\n    public void test_12() throws Exception {\n        assertEquals(\"[{\\\"category\\\":\\\"reference\\\",\\\"author\\\":\\\"Nigel Rees\\\",\\\"title\\\":\\\"Sayings of the Century\\\",\\\"price\\\":8.95},{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"Herman Melville\\\",\\\"title\\\":\\\"Moby Dick\\\",\\\"isbn\\\":\\\"0-553-21311-3\\\",\\\"price\\\":8.99}]\"\n                , JSON.toJSONString(JSONPath.eval(root, \"$.store.book[?(@.price < 10)]\")));\n    }\n\n    public void test_13() throws Exception {\n        assertEquals(\"[{\\\"category\\\":\\\"reference\\\",\\\"author\\\":\\\"Nigel Rees\\\",\\\"title\\\":\\\"Sayings of the Century\\\",\\\"price\\\":8.95},{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"Herman Melville\\\",\\\"title\\\":\\\"Moby Dick\\\",\\\"isbn\\\":\\\"0-553-21311-3\\\",\\\"price\\\":8.99}]\"\n                , JSON.toJSONString(JSONPath.eval(root, \"$..book[?(@.price <= $['expensive'])]\")));\n    }\n\n    public void test_14() throws Exception {\n        assertEquals(\"[{\\\"category\\\":\\\"reference\\\",\\\"author\\\":\\\"Nigel Rees\\\",\\\"title\\\":\\\"Sayings of the Century\\\",\\\"price\\\":8.95}]\"\n                , JSON.toJSONString(JSONPath.eval(root, \"$..book[?(@.author =~ /.*REES/i)]\")));\n    }\n\n    public void test_15() throws Exception {\n        assertEquals(\"[{\\\"category\\\":\\\"reference\\\",\\\"author\\\":\\\"Nigel Rees\\\",\\\"title\\\":\\\"Sayings of the Century\\\",\\\"price\\\":8.95}]\"\n                , JSON.toJSONString(JSONPath.eval(root, \"$..book[?(@.author =~ /.*REES/i)]\")));\n    }\n\n    public void test_16() throws Exception {\n        assertEquals(\"[{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"Herman Melville\\\",\\\"title\\\":\\\"Moby Dick\\\",\\\"isbn\\\":\\\"0-553-21311-3\\\",\\\"price\\\":8.99}]\"\n                , JSON.toJSONString(JSONPath.eval(root, \"$.store.book[?(@.price < 10 && @.category == 'fiction')]\")));\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/BookExtractTest.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.util.IOUtils;\nimport junit.framework.TestCase;\n\nimport java.io.InputStream;\nimport java.io.InputStreamReader;\n\npublic class BookExtractTest extends TestCase {\n    private String json;\n\n    protected void setUp() throws Exception {\n        InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"json/book.json\");\n        InputStreamReader reader = new InputStreamReader(is);\n        json = IOUtils.readAll(reader);\n        IOUtils.close(reader);\n    }\n\n    public void test_0() throws Exception {\n        assertEquals(4, JSONPath.extract(json, \"$..book.length()\"));\n    }\n\n    public void test_1() throws Exception {\n        assertEquals(\"[\\\"reference\\\",\\\"Nigel Rees\\\",\\\"Sayings of the Century\\\",8.95,\\\"fiction\\\",\\\"Evelyn Waugh\\\",\\\"Sword of Honour\\\",12.99,\\\"fiction\\\",\\\"Herman Melville\\\",\\\"Moby Dick\\\",\\\"0-553-21311-3\\\",8.99,\\\"fiction\\\",\\\"J. R. R. Tolkien\\\",\\\"The Lord of the Rings\\\",\\\"0-395-19395-8\\\",22.99,\\\"red\\\",19.95,10]\"\n                , JSON.toJSONString(JSONPath.extract(json, \"$..*\")));\n    }\n\n    public void test_2() throws Exception {\n        assertEquals(\"[\\\"Nigel Rees\\\",\\\"Evelyn Waugh\\\",\\\"Herman Melville\\\",\\\"J. R. R. Tolkien\\\"]\", JSON.toJSONString(JSONPath.extract(json, \"$.store.book[*].author\")));\n    }\n\n    public void test_3() throws Exception {\n        assertEquals(\"[\\\"Nigel Rees\\\",\\\"Evelyn Waugh\\\",\\\"Herman Melville\\\",\\\"J. R. R. Tolkien\\\"]\", JSON.toJSONString(JSONPath.extract(json, \"$..author\")));\n    }\n\n    public void test_4() throws Exception {\n        assertEquals(\"[8.95,12.99,8.99,22.99,19.95]\", JSON.toJSONString(JSONPath.extract(json, \"$..price\")));\n    }\n\n    public void test_5() throws Exception {\n        assertEquals(\"[8.95,12.99,8.99,22.99]\", JSON.toJSONString(JSONPath.extract(json, \"$..book.price\")));\n    }\n\n    public void test_6() throws Exception {\n        assertEquals(\"[[{\\\"category\\\":\\\"reference\\\",\\\"author\\\":\\\"Nigel Rees\\\",\\\"title\\\":\\\"Sayings of the Century\\\",\\\"price\\\":8.95},{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"Evelyn Waugh\\\",\\\"title\\\":\\\"Sword of Honour\\\",\\\"price\\\":12.99},{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"Herman Melville\\\",\\\"title\\\":\\\"Moby Dick\\\",\\\"isbn\\\":\\\"0-553-21311-3\\\",\\\"price\\\":8.99},{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"J. R. R. Tolkien\\\",\\\"title\\\":\\\"The Lord of the Rings\\\",\\\"isbn\\\":\\\"0-395-19395-8\\\",\\\"price\\\":22.99}],{\\\"color\\\":\\\"red\\\",\\\"price\\\":19.95}]\"\n                , JSON.toJSONString(JSONPath.extract(json, \"$.store.*\")));\n    }\n\n    public void test_7() throws Exception {\n        assertEquals(\"[8.95,12.99,8.99,22.99,19.95]\"\n                , JSON.toJSONString(JSONPath.extract(json, \"$.store..price\")));\n    }\n\n    public void test_8() throws Exception {\n        assertEquals(\"{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"Herman Melville\\\",\\\"title\\\":\\\"Moby Dick\\\",\\\"isbn\\\":\\\"0-553-21311-3\\\",\\\"price\\\":8.99}\"\n                , JSON.toJSONString(JSONPath.extract(json, \"$..book[2]\")));\n    }\n\n    public void test_9() throws Exception {\n        assertEquals(\"{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"J. R. R. Tolkien\\\",\\\"title\\\":\\\"The Lord of the Rings\\\",\\\"isbn\\\":\\\"0-395-19395-8\\\",\\\"price\\\":22.99}\"\n                , JSON.toJSONString(JSONPath.extract(json, \"$..book[-1]\")));\n    }\n\n    public void test_10() throws Exception {\n        assertEquals(\"[{\\\"category\\\":\\\"reference\\\",\\\"author\\\":\\\"Nigel Rees\\\",\\\"title\\\":\\\"Sayings of the Century\\\",\\\"price\\\":8.95},{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"Evelyn Waugh\\\",\\\"title\\\":\\\"Sword of Honour\\\",\\\"price\\\":12.99}]\"\n                , JSON.toJSONString(JSONPath.extract(json, \"$..book[0,1]\")));\n    }\n\n    public void test_11() throws Exception {\n        assertEquals(\"[{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"Herman Melville\\\",\\\"title\\\":\\\"Moby Dick\\\",\\\"isbn\\\":\\\"0-553-21311-3\\\",\\\"price\\\":8.99},{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"J. R. R. Tolkien\\\",\\\"title\\\":\\\"The Lord of the Rings\\\",\\\"isbn\\\":\\\"0-395-19395-8\\\",\\\"price\\\":22.99}]\"\n                , JSON.toJSONString(JSONPath.extract(json, \"$..book[?(@.isbn)]\")));\n    }\n\n    public void test_12() throws Exception {\n        assertEquals(\"[{\\\"category\\\":\\\"reference\\\",\\\"author\\\":\\\"Nigel Rees\\\",\\\"title\\\":\\\"Sayings of the Century\\\",\\\"price\\\":8.95},{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"Herman Melville\\\",\\\"title\\\":\\\"Moby Dick\\\",\\\"isbn\\\":\\\"0-553-21311-3\\\",\\\"price\\\":8.99}]\"\n                , JSON.toJSONString(JSONPath.extract(json, \"$.store.book[?(@.price < 10)]\")));\n    }\n\n    public void test_13() throws Exception {\n        assertEquals(\"[{\\\"category\\\":\\\"reference\\\",\\\"author\\\":\\\"Nigel Rees\\\",\\\"title\\\":\\\"Sayings of the Century\\\",\\\"price\\\":8.95},{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"Herman Melville\\\",\\\"title\\\":\\\"Moby Dick\\\",\\\"isbn\\\":\\\"0-553-21311-3\\\",\\\"price\\\":8.99}]\"\n                , JSON.toJSONString(JSONPath.extract(json, \"$..book[?(@.price <= $['expensive'])]\")));\n    }\n\n    public void test_14() throws Exception {\n        assertEquals(\"[{\\\"category\\\":\\\"reference\\\",\\\"author\\\":\\\"Nigel Rees\\\",\\\"title\\\":\\\"Sayings of the Century\\\",\\\"price\\\":8.95}]\"\n                , JSON.toJSONString(JSONPath.extract(json, \"$..book[?(@.author =~ /.*REES/i)]\")));\n    }\n\n    public void test_15() throws Exception {\n        assertEquals(\"[{\\\"category\\\":\\\"reference\\\",\\\"author\\\":\\\"Nigel Rees\\\",\\\"title\\\":\\\"Sayings of the Century\\\",\\\"price\\\":8.95}]\"\n                , JSON.toJSONString(JSONPath.extract(json, \"$..book[?(@.author =~ /.*REES/i)]\")));\n    }\n\n    public void test_16() throws Exception {\n        assertEquals(\"[{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"Herman Melville\\\",\\\"title\\\":\\\"Moby Dick\\\",\\\"isbn\\\":\\\"0-553-21311-3\\\",\\\"price\\\":8.99}]\"\n                , JSON.toJSONString(JSONPath.extract(json, \"$.store.book[?(@.price < 10 && @.category == 'fiction')]\")));\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/DLATest_0.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONPath;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.util.IOUtils;\nimport junit.framework.TestCase;\n\nimport java.io.InputStream;\nimport java.io.InputStreamReader;\n\npublic class DLATest_0 extends TestCase {\n    public void test_dla() throws Exception {\n        InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"json/dla_01.json\");\n        InputStreamReader reader = new InputStreamReader(is);\n        String json = IOUtils.readAll(reader);\n        Object object = JSON.parse(json, Feature.IgnoreAutoType, Feature.OrderedField);\n        Object result = JSONPath.eval(object, \"$..elapsedTime\");\n        assertEquals(\"[\\\"1.48s\\\",1031,1031,1005,1005,1011,1011]\", JSON.toJSONString(result));\n\n        Object result2 = JSONPath.eval(object, \"$..self\");\n        assertEquals(\"[\\\"http://172.17.246.55:10001/v1/query/20181024_040507_3_f32vb\\\",\\\"http://172.17.246.55:10001/v1/stage/20181024_040507_3_f32vb.0\\\",\\\"http://172.17.246.56:14005/v1/task/20181024_040507_3_f32vb.0.0?shufferNettyServerPort=39524&commandNettyServerPort=37207\\\",\\\"http://172.17.246.55:10001/v1/stage/20181024_040507_3_f32vb.1\\\",\\\"http://172.17.246.55:14005/v1/task/20181024_040507_3_f32vb.1.0?shufferNettyServerPort=33921&commandNettyServerPort=45121\\\",\\\"http://172.17.246.56:14005/v1/task/20181024_040507_3_f32vb.1.1?shufferNettyServerPort=39524&commandNettyServerPort=37207\\\"]\", JSON.toJSONString(result2));\n    }\n\n    public void test_dla_extract() throws Exception {\n        InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"json/dla_01.json\");\n        InputStreamReader reader = new InputStreamReader(is);\n        String json = IOUtils.readAll(reader);\n\n        Object result = JSONPath.extract(json, \"$..elapsedTime\");\n        assertEquals(\"[\\\"1.48s\\\",1031,1031,1005,1005,1011,1011]\", JSON.toJSONString(result));\n\n        Object result2 = JSONPath.extract(json, \"$..self\");\n        assertEquals(\"[\\\"http://172.17.246.55:10001/v1/query/20181024_040507_3_f32vb\\\",\\\"http://172.17.246.55:10001/v1/stage/20181024_040507_3_f32vb.0\\\",\\\"http://172.17.246.56:14005/v1/task/20181024_040507_3_f32vb.0.0?shufferNettyServerPort=39524&commandNettyServerPort=37207\\\",\\\"http://172.17.246.55:10001/v1/stage/20181024_040507_3_f32vb.1\\\",\\\"http://172.17.246.55:14005/v1/task/20181024_040507_3_f32vb.1.0?shufferNettyServerPort=33921&commandNettyServerPort=45121\\\",\\\"http://172.17.246.56:14005/v1/task/20181024_040507_3_f32vb.1.1?shufferNettyServerPort=39524&commandNettyServerPort=37207\\\"]\", JSON.toJSONString(result2));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/DeepScanTest.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\n/**\n * Created by wenshao on 30/07/2017.\n */\npublic class DeepScanTest extends TestCase {\n    public void test_when_deep_scanning_illegal_property_access_is_ignored() {\n        Object result = JSONPath.eval(\n                JSON.parseObject(\"{\\\"x\\\": {\\\"foo\\\": {\\\"bar\\\": 4}}, \\\"y\\\": {\\\"foo\\\": 1}}\")\n                , \"$..foo\");\n        assertEquals(2, ((List) result).size());\n\n        result = JSONPath.eval(\n                JSON.parseObject(\"{\\\"x\\\": {\\\"foo\\\": {\\\"bar\\\": 4}}, \\\"y\\\": {\\\"foo\\\": 1}}\")\n                , \"$..foo.bar\");\n        assertEquals(1, ((List) result).size());\n        assertEquals(4, ((List) result).get(0));\n\n        result = JSONPath.eval(\n                JSON.parseObject(\"{\\\"x\\\": {\\\"foo\\\": {\\\"bar\\\": 4}}, \\\"y\\\": {\\\"foo\\\": 1}}\")\n                , \"$..[*].foo.bar\");\n        assertEquals(1, ((List) result).size());\n        assertEquals(4, ((List) result).get(0));\n\n        result = JSONPath.eval(\n                JSON.parseObject(\"{\\\"x\\\": {\\\"foo\\\": {\\\"baz\\\": 4}}, \\\"y\\\": {\\\"foo\\\": 1}}\")\n                , \"$..[*].foo.bar\");\n        assertTrue(((List) result).isEmpty());\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_0.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\npublic class JSONPath_0 extends TestCase {\n\n    public void test_root() throws Exception {\n        Object obj = new Object();\n        Assert.assertSame(obj, new JSONPath(\"$\").eval(obj));\n    }\n\n    public void test_null() throws Exception {\n        Assert.assertNull(new JSONPath(\"$\").extract(null));\n    }\n\n    public void test_map() throws Exception {\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"val\", new Object());\n        Assert.assertSame(map.get(\"val\"), new JSONPath(\"$.val\").eval(map));\n    }\n    \n    public void test_entity() throws Exception {\n        Entity entity = new Entity();\n        entity.setValue(new Object());\n        Assert.assertSame(entity.getValue(), new JSONPath(\"$.value\").eval(entity));\n    }\n\n    public static class Entity {\n\n        private Object value;\n\n        public Object getValue() {\n            return value;\n        }\n\n        public void setValue(Object value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_1.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\nimport com.alibaba.fastjson.JSONPathException;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_1 extends TestCase {\n\n    public void test_path_empty() throws Exception {\n        Throwable error = null;\n        try {\n            JSONPath.compile(\"\");\n        } catch (JSONPathException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_path_null() throws Exception {\n        Throwable error = null;\n        try {\n            JSONPath.compile(null);\n        } catch (JSONPathException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_path_null_1() throws Exception {\n        Throwable error = null;\n        try {\n            new JSONPath(null);\n        } catch (JSONPathException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_10_contains.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.concurrent.TimeUnit;\n\npublic class JSONPath_10_contains extends TestCase {\n\n    public void test(){\n        String json = \"{\\n\" +\n                \"    \\\"queryScene\\\":{\\n\" +\n                \"        \\\"scene\\\":[\\n\" +\n                \"            {\\n\" +\n                \"                \\\"innerSceneId\\\":3,\\n\" +\n                \"                \\\"name\\\":\\\"场景绑8测试-笑幽\\\",\\n\" +\n                \"                \\\"sceneSetId\\\":8,\\n\" +\n                \"                \\\"formInfo\\\":\\\"{}\\\",\\n\" +\n                \"                \\\"queryDataSet\\\":{\\n\" +\n                \"                    \\\"dataSet\\\":[\\n\" +\n                \"                        {\\n\" +\n                \"                            \\\"id\\\":6,\\n\" +\n                \"                            \\\"sceneId\\\":3,\\n\" +\n                \"                            \\\"name\\\":\\\"测试商品集\\\",\\n\" +\n                \"                            \\\"dataSetRuleCode\\\":null,\\n\" +\n                \"                            \\\"resourceId\\\":null,\\n\" +\n                \"                            \\\"udsOffer\\\":{\\n\" +\n                \"                                \\\"offer\\\":[\\n\" +\n                \"\\n\" +\n                \"                                ]\\n\" +\n                \"                            }\\n\" +\n                \"                        },\\n\" +\n                \"                        {\\n\" +\n                \"                            \\\"id\\\":5,\\n\" +\n                \"                            \\\"sceneId\\\":3,\\n\" +\n                \"                            \\\"name\\\":\\\"测试卖家集\\\",\\n\" +\n                \"                            \\\"dataSetRuleCode\\\":null,\\n\" +\n                \"                            \\\"resourceId\\\":null,\\n\" +\n                \"                            \\\"udsOffer\\\":{\\n\" +\n                \"                                \\\"offer\\\":[\\n\" +\n                \"\\n\" +\n                \"                                ]\\n\" +\n                \"                            }\\n\" +\n                \"                        }\\n\" +\n                \"                    ]\\n\" +\n                \"                }\\n\" +\n                \"            }\\n\" +\n                \"        ]\\n\" +\n                \"    }\\n\" +\n                \"}\";\n        assertTrue(JSONPath.contains(JSON.parseObject(json), \"$.queryScene.scene.queryDataSet.dataSet\"));\n        assertFalse(JSONPath.contains(JSON.parseObject(json), \"$.queryScene.scene.queryDataSet.dataSet.abcd\"));\n        assertTrue(JSONPath.contains(JSON.parseObject(json), \"$.queryScene.scene.queryDataSet.dataSet.name\"));\n    }\n\n//    public void test_path_2() throws Exception {\n////        File file = new File(\"/Users/wenshao/Downloads/test\");\n////        String json = FileUtils.readFileToString(file);\n//        String json = \"{\\\"returnObj\\\":[{\\\"$ref\\\":\\\"$.subInvokes.com\\\\\\\\.alipay\\\\\\\\.cif\\\\\\\\.user\\\\\\\\.UserInfoQueryService\\\\\\\\@findUserInfosByCardNo\\\\\\\\(String[])[0].response[0]\\\"}]}\";\n//        JSON.parseObject(json);\n//    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_11.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\npublic class JSONPath_11 extends TestCase {\n\n    public void test(){\n        String json = \"[\\n\" +\n                \"  [\\n\" +\n                \"    {\\n\" +\n                \"      \\\"CN\\\": \\\"t1c1CN\\\",\\n\" +\n                \"      \\\"FP\\\": \\\"t1c1FP\\\"\\n\" +\n                \"    },\\n\" +\n                \"    {\\n\" +\n                \"      \\\"CN\\\": \\\"t1c2CN\\\",\\n\" +\n                \"      \\\"FP\\\": \\\"t1c2FP\\\"\\n\" +\n                \"    }\\n\" +\n                \"  ],\\n\" +\n                \"  [\\n\" +\n                \"    {\\n\" +\n                \"      \\\"CN\\\": \\\"t2c1CN\\\",\\n\" +\n                \"      \\\"FP\\\": \\\"t2c1FP\\\"\\n\" +\n                \"    },\\n\" +\n                \"    {\\n\" +\n                \"      \\\"CN\\\": \\\"t2c2CN\\\",\\n\" +\n                \"      \\\"FP\\\": \\\"t2c2FP\\\"\\n\" +\n                \"    }\\n\" +\n                \"  ]\\n\" +\n                \"]\";\n\n        JSONArray array = JSON.parseArray(json);\n        System.out.println(JSONPath.eval(array, \"$[0,1][CN='t1c1CN']\"));\n    }\n\n//    public void test_path_2() throws Exception {\n////        File file = new File(\"/Users/wenshao/Downloads/test\");\n////        String json = FileUtils.readFileToString(file);\n//        String json = \"{\\\"returnObj\\\":[{\\\"$ref\\\":\\\"$.subInvokes.com\\\\\\\\.alipay\\\\\\\\.cif\\\\\\\\.user\\\\\\\\.UserInfoQueryService\\\\\\\\@findUserInfosByCardNo\\\\\\\\(String[])[0].response[0]\\\"}]}\";\n//        JSON.parseObject(json);\n//    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_12.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\npublic class JSONPath_12\n        extends TestCase {\n\n    public void test(){\n        JSONObject schemaResult = JSON.parseObject(\"{\\n\" +\n                \"  \\\"$schema\\\": \\\"http://json-schema.org/draft-07/schema#\\\",\\n\" +\n                \"  \\\"title\\\": \\\"AE product schema\\\",\\n\" +\n                \"  \\\"description\\\": \\\"AE product schema\\\",\\n\" +\n                \"  \\\"type\\\": \\\"object\\\",\\n\" +\n                \"  \\\"required\\\": [\\n\" +\n                \"    \\\"category_attributes\\\"\\n\" +\n                \"  ],\\n\" +\n                \"  \\\"properties\\\": {\\n\" +\n                \"    \\\"category_attributes\\\": {\\n\" +\n                \"      \\\"title\\\": \\\"category attributes\\\",\\n\" +\n                \"      \\\"type\\\": \\\"object\\\",\\n\" +\n                \"      \\\"required\\\": [\\n\" +\n                \"        \\\"Brand Name\\\"\\n\" +\n                \"      ],\\n\" +\n                \"      \\\"properties\\\":{}\\n\" +\n                \"    }\\n\" +\n                \"  }\\n\" +\n                \"}\");\n        String jsonPath = \"$['properties']['category_attributes']['properties']\";\n        String attributeName = \"Brand\\\\. Name\"; // attribute name with dot\n        JSONObject attributeValue = JSON.parseObject(\"{\\n\" +\n                \"  \\\"title\\\": \\\"Brand Name\\\",\\n\" +\n                \"  \\\"type\\\": \\\"String\\\"\\n\" +\n                \"}\");\n        assertTrue(\n                JSONPath.set(schemaResult, jsonPath + \"['\" + attributeName + \"']\" , attributeValue)\n        );\n\n        assertTrue(JSONPath.contains(schemaResult, jsonPath + \"['\" + attributeName + \"']\"));\n        JSONObject newAttribute = (JSONObject)JSONPath.eval(schemaResult, jsonPath);\n        System.out.println(schemaResult);\n        System.out.println(JSONPath.read(schemaResult.toJSONString(), jsonPath + \"['\" + attributeName + \"']\"));\n        assertTrue(newAttribute.containsKey(\"Brand. Name\"));\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_13.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\npublic class JSONPath_13\n        extends TestCase {\n\n    public void test_0() {\n        JSONObject root = new JSONObject();\n        root.put(\"company\", new JSONObject());\n        root.getJSONObject(\"company\").put(\"id\", 123);\n        root.getJSONObject(\"company\").put(\"name\", \"jobs\");\n\n        JSONPath.remove(root, \"$..id\");\n\n        assertEquals(\"{\\\"company\\\":{\\\"name\\\":\\\"jobs\\\"}}\", root.toJSONString());\n    }\n\n    public void test_1() {\n        Root root = new Root();\n        root.company = new Company();\n        root.company.id = 123;\n        root.company.name = \"jobs\";\n\n        JSONPath.remove(root, \"$..id\");\n\n        assertEquals(\"{\\\"company\\\":{\\\"name\\\":\\\"jobs\\\"}}\", JSON.toJSONString(root));\n    }\n\n    public static class Root {\n        public Company company;\n    }\n\n    public static class Company {\n        public Integer id;\n        public String name;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_14.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\nimport java.util.Map;\nimport java.util.UUID;\nimport java.util.concurrent.TimeUnit;\n\npublic class JSONPath_14\n        extends TestCase {\n\n    public void test_0() {\n        JSONObject sourceJson = JSON.parseObject(\"{\\n\" +\n                \"\\t\\\"boolean1\\\":true,\\n\" +\n                \"\\t\\\"boolean2\\\":false,\\n\" +\n                \"\\t\\\"boolean3\\\":true,\\n\" +\n                \"\\t\\\"boolean4\\\":true,\\n\" +\n                \"\\t\\\"name\\\":\\\"str\\\",\\n\" +\n                \"\\t\\\"name1\\\":\\\"str\\\"\\n\" +\n                \"}\");\n\n        sourceJson.put(\"enum1\", TimeUnit.SECONDS);\n        sourceJson.put(\"character1\", 'A');\n        sourceJson.put(\"uuid1\", UUID.randomUUID());\n\n        // 初始配置中，新增的字段添加的库中\n        Map<String, Object> paths = JSONPath.paths(sourceJson);\n        System.out.println(JSON.toJSONString(paths));\n        assertEquals(10, paths.size());\n\n        JSONObject destJson = JSON.parseObject(\"{\\n\" +\n                \"\\t\\\"boolean1\\\":true,\\n\" +\n                \"\\t\\\"boolean2\\\":false,\\n\" +\n                \"\\t\\\"name\\\":\\\"str\\\"\\n\" +\n                \"}\");\n\n        for (Map.Entry<String, Object> stringObjectEntry : paths.entrySet()) {\n            if(stringObjectEntry.getValue() instanceof JSONObject || stringObjectEntry.getValue() instanceof JSONArray){\n                continue;\n            }\n            if (!JSONPath.contains(destJson, stringObjectEntry.getKey())) {\n                JSONPath.set(destJson, stringObjectEntry.getKey(), stringObjectEntry.getValue());\n                System.out.println(\"key=\" + stringObjectEntry.getKey() + \" ,value=\" + stringObjectEntry.getValue());\n            }\n        }\n\n        System.out.println(destJson.toJSONString());\n    }\n\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_15.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\nimport java.util.List;\nimport java.util.Map;\nimport java.util.UUID;\nimport java.util.concurrent.TimeUnit;\n\npublic class JSONPath_15\n        extends TestCase {\n    final static String a = \"{code:1,msg:'Hello world',data:{list:[1,2,3,4,5], ary2:[{a:2},{a:3,b:{c:'ddd'}}]}}\";\n    final static String b = \"[{b:{c:1}}, {b:{d:1}}, {b:{c:2}}, {b:{c:23}}]\";\n    final static String c = \"[{c:'aaaa'}, {b:'cccc'}, {c:'cccaa'}]\";\n\n    public void test_0() {\n\n        JSONObject object = JSON.parseObject(a);\n\n        List<Object> items = (List<Object>) JSONPath.eval(object, \"data.ary2[*].b.c\");\n        assertEquals(\"[\\\"ddd\\\"]\", JSON.toJSONString(items));\n    }\n\n    public void test_1() {\n        Object object = JSON.parse(b);\n\n        List<Object> items = (List<Object>) JSONPath.eval(object, \"$..b[?(@.c == 23)]\");\n        assertEquals(\"[{\\\"c\\\":23}]\", JSON.toJSONString(items));\n    }\n\n    public void test_2() {\n        Object object = JSON.parse(b);\n\n        Object min = JSONPath.eval(object, \"$..c.min()\");\n        assertEquals(\"1\", JSON.toJSONString(min));\n    }\n\n    public void test_3() {\n        Object object = JSON.parse(c);\n\n        Object min = JSONPath.eval(object, \"$[?(@.c =~ /a+/)]\");\n        assertEquals(\"[{\\\"c\\\":\\\"aaaa\\\"}]\", JSON.toJSONString(min));\n    }\n//\n//    public void test_c() {\n//        Object object = JSON.parse(c);\n//\n//        Object min = JSONPath.eval(object, \"data.list[?(@ in $..ary2[0].a)]\");\n//        assertEquals(\"[{\\\"c\\\":\\\"aaaa\\\"}]\", JSON.toJSONString(min));\n//    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_16.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\nimport java.math.BigDecimal;\nimport java.math.BigInteger;\nimport java.util.UUID;\nimport java.util.concurrent.TimeUnit;\n\npublic class JSONPath_16 extends TestCase {\n    public void test_for_jsonpath() throws Exception {\n        String str = \"[{\\\"id\\\":1001,\\\"salary\\\":4000,\\\"name\\\":\\\"jobs\\\",\\\"valid\\\":false},{\\\"id\\\":1001,\\\"salary\\\":5000}]\";\n        System.out.println(str);\n        assertEquals(2\n                , JSONPath.extract(str, \"$.size()\"));\n\n        assertEquals(\"array\"\n                , JSONPath.extract(str, \"$.type()\"));\n\n        assertEquals(\"object\"\n                , JSONPath.extract(str, \"$[0].type()\"));\n\n        assertEquals(\"number\"\n                , JSONPath.extract(str, \"$[0].id.type()\"));\n\n        assertEquals(\"string\"\n                , JSONPath.extract(str, \"$[0].name.type()\"));\n\n        assertEquals(\"boolean\"\n                , JSONPath.extract(str, \"$[0].valid.type()\"));\n\n        assertEquals(\"null\"\n                , JSONPath.extract(str, \"$[0].xx.type()\"));\n    }\n\n    public void test_for_jsonpath_type() throws Exception {\n        JSONObject root = new JSONObject();\n        root.put(\"id\", UUID.randomUUID());\n        root.put(\"unit\", TimeUnit.SECONDS);\n\n        assertEquals(\"string\"\n                , JSONPath.eval(root, \"$.id.type()\"));\n\n        assertEquals(\"string\"\n                , JSONPath.eval(root, \"$.unit.type()\"));\n    }\n\n    public void test_for_jsonpath_1() throws Exception {\n        String str = \"{\\\"id\\\":1001,\\\"salary\\\":4000}\";\n        assertNull(\n                JSONPath.extract(str, \"$?( @.salary > 100000 )\"));\n\n        assertEquals(JSON.parseObject(str, Feature.OrderedField),\n                JSONPath.extract(str, \"$?( @.salary > 1000 )\"));\n    }\n\n    public void test_for_jsonpath_2() throws Exception {\n        String str = \"[[10,20],[100],{\\\"id\\\":1001}]\";\n        Object object = JSONPath.extract(str, \"$.* ? (@.type() == \\\"array\\\")\");\n        assertEquals(\"[[10,20],[100]]\", JSON.toJSONString(object));\n    }\n\n    public void test_for_jsonpath_3() throws Exception {\n        String str = \"[[10,20],[100],{\\\"id\\\":1001}]\";\n        Object object = JSONPath.extract(str, \"$.* ? (@.type() == \\\"array\\\" && @.size() > 1)\");\n        assertEquals(\"[[10,20]]\", JSON.toJSONString(object));\n    }\n\n    public void test_for_jsonpath_4() throws Exception {\n        String str = \"{ readings: [15.2, -22.3, 45.9] }\";\n        Object object = JSONPath.extract(str, \"$.readings.floor()\");\n        assertEquals(\"[15,-23,45]\", JSON.toJSONString(object));\n    }\n\n    public void test_for_jsonpath_5() throws Exception {\n        String str = \"{ readings: [15.2, 13, -22.3, 45.9] }\";\n        assertEquals(BigDecimal.valueOf(15), JSONPath.extract(str, \"$.readings[0].floor()\"));\n        assertEquals(13, JSONPath.extract(str, \"$.readings[1].floor()\"));\n    }\n\n    public void test_for_jsonpath_6() throws Exception {\n        JSONArray array = new JSONArray();\n        array.add(1.1F);\n        array.add(2.2D);\n        array.add((byte) 3);\n        array.add((short) 4);\n        array.add(5);\n        array.add(6L);\n        array.add(BigInteger.valueOf(7));\n        assertEquals(1D, JSONPath.eval(array, \"$[0].floor()\"));\n        assertEquals(2D, JSONPath.eval(array, \"$[1].floor()\"));\n        assertEquals((byte) 3, JSONPath.eval(array, \"$[2].floor()\"));\n        assertEquals((short) 4, JSONPath.eval(array, \"$[3].floor()\"));\n        assertEquals(5, JSONPath.eval(array, \"$[4].floor()\"));\n        assertEquals(6L, JSONPath.eval(array, \"$[5].floor()\"));\n        assertEquals(BigInteger.valueOf(7), JSONPath.eval(array, \"$[6].floor()\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_17.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\nimport java.math.BigDecimal;\nimport java.math.BigInteger;\nimport java.util.UUID;\nimport java.util.concurrent.TimeUnit;\n\npublic class JSONPath_17 extends TestCase {\n    public void test_for_jsonpath() throws Exception {\n        String input = \"{\\\"b\\\":[{\\\"c\\\":{\\\"d\\\":{\\\"e\\\":\\\"978\\\"}},\\\"f\\\":{\\\"c\\\":{\\\"d\\\":{\\\"$ref\\\":\\\"$.b[0].c.d\\\"}}}}]}\";\n        Object obj = JSON.parse(input);\n        String oupput = JSON.parse(input).toString();\n        assertEquals(obj, JSON.parse(oupput));\n    }\n\n    public void test_for_jsonpath_1() throws Exception {\n        assertEquals(\"[5]\", JSONPath.extract(\"[1, 2, 3, 4, 5]\", \"$[last]\").toString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_2.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_2 extends TestCase {\n    public void test_path() throws Exception {\n        String json =\"{\\\"user\\\":[{\\\"amount\\\":1.11,\\\"isadmin\\\":true,\\\"age\\\":18},{\\\"amount\\\":0.22,\\\"isadmin\\\":false,\\\"age\\\":28}]}\";\n        \n        \n        {\n            JSONArray array = (JSONArray) JSONPath.read(json, \"$.user\");\n            Assert.assertEquals(2, array.size());\n            \n            Assert.assertTrue(1.11D == array.getJSONObject(0).getDoubleValue(\"amount\"));\n            Assert.assertTrue(array.getJSONObject(0).getBoolean(\"isadmin\"));\n            Assert.assertTrue(18 == array.getJSONObject(0).getIntValue(\"age\"));\n            \n            Assert.assertTrue(0.22D == array.getJSONObject(1).getDoubleValue(\"amount\"));\n            Assert.assertFalse(array.getJSONObject(1).getBoolean(\"isadmin\"));\n            Assert.assertTrue(28 == array.getJSONObject(1).getIntValue(\"age\"));\n        }\n        \n        {\n            JSONArray array = (JSONArray) JSONPath.read(json, \"$.user[age = 18]\");\n            Assert.assertEquals(1, array.size());\n            \n            Assert.assertTrue(1.11D == array.getJSONObject(0).getDoubleValue(\"amount\"));\n            Assert.assertTrue(array.getJSONObject(0).getBoolean(\"isadmin\"));\n            Assert.assertTrue(18 == array.getJSONObject(0).getIntValue(\"age\"));\n        }\n        \n        {\n            JSONArray array = (JSONArray) JSONPath.read(json, \"$.user[isadmin = true]\");\n            Assert.assertEquals(1, array.size());\n            \n            Assert.assertTrue(1.11D == array.getJSONObject(0).getDoubleValue(\"amount\"));\n            Assert.assertTrue(array.getJSONObject(0).getBoolean(\"isadmin\"));\n            Assert.assertTrue(18 == array.getJSONObject(0).getIntValue(\"age\"));\n        }\n        \n        {\n            JSONArray array = (JSONArray) JSONPath.read(json, \"$.user[isadmin = false]\");\n            Assert.assertEquals(1, array.size());\n            \n            Assert.assertTrue(0.22D == array.getJSONObject(0).getDoubleValue(\"amount\"));\n            Assert.assertFalse(array.getJSONObject(0).getBoolean(\"isadmin\"));\n            Assert.assertTrue(28 == array.getJSONObject(0).getIntValue(\"age\"));\n        }\n        \n        {\n            JSONArray array = (JSONArray) JSONPath.read(json, \"$.user[amount = 0.22]\");\n            Assert.assertEquals(1, array.size());\n            \n            Assert.assertTrue(0.22D == array.getJSONObject(0).getDoubleValue(\"amount\"));\n            Assert.assertFalse(array.getJSONObject(0).getBoolean(\"isadmin\"));\n            Assert.assertTrue(28 == array.getJSONObject(0).getIntValue(\"age\"));\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_3.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_3 extends TestCase {\n    public void test_path() throws Exception {\n        String a = \"{\\\"a\\\":{\\\"b\\\":{\\\"c\\\":{\\\"d\\\":{\\\"e\\\":{\\\"f\\\":{\\\"g\\\":{\\\"h\\\":{\\\"i\\\":{\\\"j\\\":{\\\"k\\\":{\\\"l\\\":\\\"\\\"}}}}}}}}}}}}\";\n        Object x = JSON.parse(a);\n        Assert.assertTrue(JSONPath.contains(x, \"$.a.b.c.d.e.f.g.h.i\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_4.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_4 extends TestCase {\n\n    public void test_path() throws Exception {\n        String a = \"{\\\"key\\\":\\\"value\\\",\\\"10.0.1.1\\\":\\\"haha\\\"}\";\n        Object x = JSON.parse(a);\n        JSONPath.set(x, \"$.test\", \"abc\");\n        Object o = JSONPath.eval(x, \"$.10\\\\.0\\\\.1\\\\.1\");\n        Assert.assertEquals(\"haha\", o);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_5.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class JSONPath_5 extends TestCase {\n\n    public void test_path() throws Exception {\n        Model m = new Model();\n        Value v = new Value(m);\n        m.values.add(v);\n        m.values.add(m.values);\n        m.values.add(m);\n\n        String json = JSON.toJSONString(m);\n        System.out.println(json);\n    }\n\n    public static class Model {\n        public List values = new ArrayList();\n    }\n\n    public static class Value {\n        public Model model = new Model();\n\n        public Value() {\n\n        }\n\n        public Value(Model model) {\n            this.model = model;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_6.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\nimport org.apache.commons.io.FileUtils;\nimport org.glassfish.jersey.server.JSONP;\n\nimport java.io.File;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class JSONPath_6 extends TestCase {\n\n    public void test_path() throws Exception {\n        String json = \"{\\\"hello\\\":\\\"world\\\"}\";\n        JSONObject object = JSON.parseObject(json);\n        assertTrue(JSONPath.contains(object, \"$.hello\"));\n        assertTrue(JSONPath.contains(object, \"hello\"));\n    }\n\n//    public void test_path_2() throws Exception {\n////        File file = new File(\"/Users/wenshao/Downloads/test\");\n////        String json = FileUtils.readFileToString(file);\n//        String json = \"{\\\"returnObj\\\":[{\\\"$ref\\\":\\\"$.subInvokes.com\\\\\\\\.alipay\\\\\\\\.cif\\\\\\\\.user\\\\\\\\.UserInfoQueryService\\\\\\\\@findUserInfosByCardNo\\\\\\\\(String[])[0].response[0]\\\"}]}\";\n//        JSON.parseObject(json);\n//    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_7.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\nimport org.glassfish.jersey.server.JSONP;\n\npublic class JSONPath_7 extends TestCase {\n\n    public void test_path() throws Exception {\n        Model[] array = new Model[] {new Model(101), new Model(202), new Model(303)};\n        JSONArray values = (JSONArray) JSONPath.eval(array, \"$.id\");\n        assertEquals(101, values.get(0));\n        assertEquals(202, values.get(1));\n        assertEquals(303, values.get(2));\n\n        assertEquals(3, JSONPath.eval(array, \"$.length\"));\n    }\n\n    public static class Model {\n        public int id;\n\n        public Model(int id) {\n            this.id = id;\n        }\n    }\n\n//    public void test_path_2() throws Exception {\n////        File file = new File(\"/Users/wenshao/Downloads/test\");\n////        String json = FileUtils.readFileToString(file);\n//        String json = \"{\\\"returnObj\\\":[{\\\"$ref\\\":\\\"$.subInvokes.com\\\\\\\\.alipay\\\\\\\\.cif\\\\\\\\.user\\\\\\\\.UserInfoQueryService\\\\\\\\@findUserInfosByCardNo\\\\\\\\(String[])[0].response[0]\\\"}]}\";\n//        JSON.parseObject(json);\n//    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_8.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONPath;\nimport com.alibaba.fastjson.JSONPathException;\nimport junit.framework.TestCase;\n\nimport java.util.Map;\n\npublic class JSONPath_8 extends TestCase {\n\n    public void test_path() throws Exception {\n        Model m = new Model();\n        m.f0 = 101;\n        m.f1 = 102;\n\n        JSONPath.remove(m, \"$.f0\");\n        assertNull(m.f0);\n\n        JSONPath.remove(m, \"$.f1\");\n        assertNull(m.f1);\n\n\n        JSONPath.remove(m, \"$.f2\");\n\n        JSONPath.eval(m, \"$.f2\");\n    }\n\n    public void test_error() throws Exception {\n        Exception error = null;\n\n        Model m = new Model();\n        m.f0 = 101;\n        m.f1 = 102;\n\n        try {\n            JSONPath.eval(m, \"$.id\");\n        } catch (JSONPathException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public void test_error_1() throws Exception {\n        Exception error = null;\n\n        Model m = new Model();\n        m.f0 = 101;\n        m.f1 = 102;\n\n        try {\n            JSONPath.eval(m, \"$..id\");\n        } catch (JSONPathException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public void test_paths() throws Exception {\n        Model m = new Model();\n        m.f0 = 101;\n        m.f1 = 102;\n\n        Exception error = null;\n        try {\n            Map<String, Object> paths = JSONPath.paths(m);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    public static class Model {\n        public Integer f0;\n        public Integer f1;\n\n        public Integer getId() {\n            throw new IllegalStateException();\n        }\n\n    }\n\n//    public void test_path_2() throws Exception {\n////        File file = new File(\"/Users/wenshao/Downloads/test\");\n////        String json = FileUtils.readFileToString(file);\n//        String json = \"{\\\"returnObj\\\":[{\\\"$ref\\\":\\\"$.subInvokes.com\\\\\\\\.alipay\\\\\\\\.cif\\\\\\\\.user\\\\\\\\.UserInfoQueryService\\\\\\\\@findUserInfosByCardNo\\\\\\\\(String[])[0].response[0]\\\"}]}\";\n//        JSON.parseObject(json);\n//    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_9.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONPath;\nimport com.alibaba.fastjson.JSONPathException;\nimport junit.framework.TestCase;\n\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.concurrent.TimeUnit;\n\npublic class JSONPath_9 extends TestCase {\n\n    public void test_paths() throws Exception {\n        Model m = new Model();\n        m.f0 = 101;\n        m.f1 = 102;\n\n        Map<String, Object> paths = JSONPath.paths(m);\n        assertEquals(3, paths.size());\n    }\n\n    public void test_paths_1() throws Exception {\n        Map map = new HashMap();\n        map.put(\"f0\", 1001);\n        map.put(\"f1\", 1002);\n\n        Map<String, Object> paths = JSONPath.paths(map);\n        assertEquals(3, paths.size());\n    }\n\n    public void test_paths_2() throws Exception {\n        Map map = new HashMap();\n        map.put(\"f0\", 1001);\n        map.put(\"f1\", 1002);\n\n        JSONPath path = new JSONPath(\"$.f0\");\n        assertEquals(\"$.f0\", path.getPath());\n        assertEquals(1001, path.eval(map));\n\n        path.remove(null);\n    }\n\n    public void test_paths_3() throws Exception {\n        JSONPath.paths(null);\n        JSONPath.paths(1);\n        JSONPath.paths(\"1\");\n        JSONPath.paths(TimeUnit.DAYS);\n    }\n\n    public static class Model {\n        public Integer f0;\n        public Integer f1;\n\n    }\n\n//    public void test_path_2() throws Exception {\n////        File file = new File(\"/Users/wenshao/Downloads/test\");\n////        String json = FileUtils.readFileToString(file);\n//        String json = \"{\\\"returnObj\\\":[{\\\"$ref\\\":\\\"$.subInvokes.com\\\\\\\\.alipay\\\\\\\\.cif\\\\\\\\.user\\\\\\\\.UserInfoQueryService\\\\\\\\@findUserInfosByCardNo\\\\\\\\(String[])[0].response[0]\\\"}]}\";\n//        JSON.parseObject(json);\n//    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_array_length.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.Collections;\n\npublic class JSONPath_array_length extends TestCase {\n    public void test_list_size() throws Exception {\n        Assert.assertEquals(0, JSONPath.eval(new JSONArray(), \"$.length\"));\n    }\n\n    public void test_list_size1() throws Exception {\n        Assert.assertEquals(0, JSONPath.eval(new Object[0], \"$.length()\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_array_multi.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\npublic class JSONPath_array_multi extends TestCase {\n\n    Object[] list = new Object[10];\n\n    public JSONPath_array_multi(){\n        for (int i = 0; i < list.length; ++i) {\n            list[i] = new Object();\n        }\n    }\n\n    public void test_list_multi() throws Exception {\n        List<Object> result = (List<Object>) new JSONPath(\"$[2,4,5,8,100]\").eval(list);\n        Assert.assertEquals(5, result.size());\n        Assert.assertSame(list[2], result.get(0));\n        Assert.assertSame(list[4], result.get(1));\n        Assert.assertSame(list[5], result.get(2));\n        Assert.assertSame(list[8], result.get(3));\n        Assert.assertNull(result.get(4));\n    }\n\n    public void test_list_multi_negative() throws Exception {\n        List<Object> result = (List<Object>) new JSONPath(\"$[-1,-2,-100]\")\n                .eval(list);\n        Assert.assertEquals(3, result.size());\n        Assert.assertSame(list[9], result.get(0));\n        Assert.assertSame(list[8], result.get(1));\n        Assert.assertNull(result.get(2));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_array_put.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_array_put extends TestCase {\n\n    public void test_put() throws Exception {\n        Map<String, Object> root = new HashMap<String, Object>();\n        List list = new ArrayList();\n        root.put(\"values\", list);\n\n        JSONPath path = new JSONPath(\"$.values\");\n        path.arrayAdd(root, 123);\n        path.arrayAdd(root, (Object[]) null);\n        path.arrayAdd(root, new Object[0]);\n        path.arrayAdd(null, new Object[] { 1 });\n\n        Assert.assertEquals(1, list.size());\n        Assert.assertEquals(123, ((Integer) list.get(0)).intValue());\n    }\n\n    public void test_set() throws Exception {\n        List<int[]> list = new ArrayList<int[]>();\n        list.add(new int[0]);\n        list.add(new int[0]);\n\n        JSONPath path = new JSONPath(\"$[0]\");\n        path.arrayAdd(list, 123);\n\n        Assert.assertEquals(1, list.get(0).length);\n        Assert.assertEquals(123, ((int[]) list.get(0))[0]);\n    }\n\n    public void test_set_2() throws Exception {\n        Object[] list = new Object[2];\n        list[0] = new int[0];\n        list[0] = new int[0];\n\n        JSONPath path = new JSONPath(\"$[0]\");\n        path.arrayAdd(list, 123);\n\n        Assert.assertEquals(1, ((int[]) list[0]).length);\n        Assert.assertEquals(123, ((int[]) list[0])[0]);\n    }\n\n    public void test_put_array_int() throws Exception {\n        Map<String, Object> root = new HashMap<String, Object>();\n        root.put(\"values\", new int[0]);\n\n        JSONPath path = new JSONPath(\"$.values\");\n        path.arrayAdd(root, 123);\n\n        int[] array = (int[]) root.get(\"values\");\n        Assert.assertEquals(1, array.length);\n        Assert.assertEquals(123, array[0]);\n    }\n\n    public void test_put_array_long() throws Exception {\n        Map<String, Object> root = new HashMap<String, Object>();\n        root.put(\"values\", new long[0]);\n\n        JSONPath path = new JSONPath(\"$.values\");\n        path.arrayAdd(root, 123);\n\n        long[] array = (long[]) root.get(\"values\");\n        Assert.assertEquals(1, array.length);\n        Assert.assertEquals(123, array[0]);\n    }\n\n    public void test_put_array_error_0() throws Exception {\n        Exception error = null;\n        try {\n            JSONPath path = new JSONPath(\"$.values\");\n            path.arrayAdd(new Object(), 123);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_put_array_error_1() throws Exception {\n        Exception error = null;\n        try {\n            JSONPath path = new JSONPath(\"$.values\");\n            path.arrayAdd(Collections.singletonMap(\"values\", new Object()), 123);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_array_put_2.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_array_put_2 extends TestCase {\n\n    public void test_put() throws Exception {\n        Map<String, Object> root = new HashMap<String, Object>();\n        List list = new ArrayList();\n        root.put(\"values\", list);\n\n        JSONPath.arrayAdd(root, \"$.values\", 1, 2,3 );\n\n        Assert.assertEquals(3, list.size());\n        Assert.assertEquals(1, ((Integer) list.get(0)).intValue());\n        Assert.assertEquals(2, ((Integer) list.get(1)).intValue());\n        Assert.assertEquals(3, ((Integer) list.get(2)).intValue());\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_array_remove_0.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 09/03/2017.\n */\npublic class JSONPath_array_remove_0 extends TestCase {\n    public void test_remove() throws Exception {\n        JSONObject jsonObject = new JSONObject();\n\n        JSONArray array = new JSONArray();\n        for (int i = 0; i < 10; ++i) {\n            JSONObject item = new JSONObject();\n            item.put(\"age\", i);\n            array.add(item);\n        }\n        jsonObject.put(\"aaa\", array);\n\n        JSONPath.remove(jsonObject, \"$.aaa[0:1].age\"); //解析出错\n        JSONPath.remove(jsonObject, \"$.aaa[0,1].age\"); //解析出错\n        JSONPath.remove(jsonObject, \"$.aaa[0].age\"); //解析正确\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_between_double.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class JSONPath_between_double extends TestCase {\n    public void test_between() throws Exception {\n        List list = new ArrayList();\n        list.add(new Entity(101, \"kiki\"));\n        list.add(new Entity(102, \"ljw2083\"));\n        list.add(new Entity(103, \"ljw2083\"));\n        List<Object> result = (List<Object>) JSONPath.eval(list, \"$[id between 101 and 101]\");\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(list.get(0), result.get(0));\n    }\n    \n    public void test_between_2() throws Exception {\n        List list = new ArrayList();\n        list.add(new Entity(101, \"kiki\"));\n        list.add(new Entity(102, \"ljw2083\"));\n        list.add(new Entity(103, \"ljw2083\"));\n        List<Object> result = (List<Object>) JSONPath.eval(list, \"$[id between 101 and 102]\");\n        Assert.assertEquals(2, result.size());\n        Assert.assertSame(list.get(0), result.get(0));\n        Assert.assertSame(list.get(1), result.get(1));\n    }\n    \n    public void test_between_not() throws Exception {\n        List list = new ArrayList();\n        list.add(new Entity(101, \"kiki\"));\n        list.add(new Entity(102, \"ljw2083\"));\n        list.add(new Entity(103, \"ljw2083\"));\n        List<Object> result = (List<Object>) JSONPath.eval(list, \"$[id not between 101 and 102]\");\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(list.get(2), result.get(0));\n    }\n\n    public static class Entity {\n\n        private Double id;\n        private String  name;\n\n        public Entity(int id, String name){\n            this.id = Double.valueOf(id);\n            this.name = name;\n        }\n\n        public Double getId() {\n            return id;\n        }\n\n        public void setId(Double id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_between_int.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\npublic class JSONPath_between_int extends TestCase {\n    public void test_between() throws Exception {\n        List list = new ArrayList();\n        list.add(new Entity(101, \"kiki\"));\n        list.add(new Entity(102, \"ljw2083\"));\n        list.add(new Entity(103, \"ljw2083\"));\n        List<Object> result = (List<Object>) JSONPath.eval(list, \"$[id between 101 and 101]\");\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(list.get(0), result.get(0));\n    }\n    \n    public void test_between_2() throws Exception {\n        List list = new ArrayList();\n        list.add(new Entity(101, \"kiki\"));\n        list.add(new Entity(102, \"ljw2083\"));\n        list.add(new Entity(103, \"ljw2083\"));\n        List<Object> result = (List<Object>) JSONPath.eval(list, \"$[id between 101 and 102]\");\n        Assert.assertEquals(2, result.size());\n        Assert.assertSame(list.get(0), result.get(0));\n        Assert.assertSame(list.get(1), result.get(1));\n    }\n    \n    public void test_between_not() throws Exception {\n        List list = new ArrayList();\n        list.add(new Entity(101, \"kiki\"));\n        list.add(new Entity(102, \"ljw2083\"));\n        list.add(new Entity(103, \"ljw2083\"));\n        List<Object> result = (List<Object>) JSONPath.eval(list, \"$[id not between 101 and 102]\");\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(list.get(2), result.get(0));\n    }\n\n    public static class Entity {\n\n        private Integer id;\n        private String  name;\n\n        public Entity(Integer id, String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public Integer getId() {\n            return id;\n        }\n\n        public void setId(Integer id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_calenar_test.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.Calendar;\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic class JSONPath_calenar_test extends TestCase {\n    public void test_map() throws Exception {\n        Calendar calendar = Calendar.getInstance();\n        calendar.set(Calendar.YEAR, 2017);\n        calendar.set(Calendar.MONTH, 6);\n        calendar.set(Calendar.DAY_OF_MONTH, 30);\n\n        calendar.set(Calendar.HOUR_OF_DAY, 16);\n        calendar.set(Calendar.MINUTE, 8);\n        calendar.set(Calendar.SECOND, 43);\n\n        assertEquals(2017, JSONPath.eval(calendar, \"/year\"));\n        assertEquals(6, JSONPath.eval(calendar, \"/month\"));\n        assertEquals(30, JSONPath.eval(calendar, \"/day\"));\n\n        assertEquals(16, JSONPath.eval(calendar, \"/hour\"));\n        assertEquals(8, JSONPath.eval(calendar, \"/minute\"));\n        assertEquals(43, JSONPath.eval(calendar, \"/second\"));\n\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_conatinas_null.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_conatinas_null extends TestCase {\n    public void test_null() throws Exception {\n        Map<String, String> map = new HashMap<String, String>();\n        map.put(\"a\", null);\n        map.put(\"b\", \"1\");\n\n        String x = JSON.toJSONString(map, SerializerFeature.WriteMapNullValue);\n        System.out.println(x);\n\n        JSONObject jsonObject = JSON.parseObject(x);\n        System.out.println(JSONPath.contains(jsonObject, \"$.a\") + \"\\t\" + jsonObject.containsKey(\"a\"));\n        System.out.println(JSONPath.contains(jsonObject, \"$.b\") + \"\\t\" + jsonObject.containsKey(\"b\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_containsValue.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_containsValue extends TestCase {\n    public void test_root() throws Exception {\n        List list = new ArrayList();\n        list.add(\"kiki\");\n        list.add(\"ljw2083\");\n        list.add(\"wenshao\");\n        \n        Assert.assertTrue(JSONPath.containsValue(list, \"/0\", \"kiki\"));\n        Assert.assertFalse(JSONPath.containsValue(list, \"/0\", \"kiki_\"));\n        \n        Assert.assertTrue(JSONPath.containsValue(list, \"/\", \"kiki\"));\n        Assert.assertFalse(JSONPath.containsValue(list, \"/\", \"kiki_\"));\n        \n        \n        Assert.assertTrue(JSONPath.contains(list, \"/\"));\n        Assert.assertTrue(JSONPath.contains(list, \"/0\"));\n        Assert.assertTrue(JSONPath.contains(list, \"/1\"));\n        Assert.assertTrue(JSONPath.contains(list, \"/2\"));\n        Assert.assertFalse(JSONPath.contains(list, \"/3\"));\n        Assert.assertFalse(JSONPath.contains(null, \"$\"));\n        Assert.assertFalse(JSONPath.compile(\"$\").contains(null));\n        Assert.assertFalse(JSONPath.containsValue(null, \"$\", \"kiki\"));\n    }\n    \n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_containsValue_2.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_containsValue_2 extends TestCase {\n    public void test_root() throws Exception {\n        Model model = new Model();\n        model.value = 1001;\n        \n        Assert.assertTrue(JSONPath.containsValue(model, \"/value\", 1001));\n        Assert.assertTrue(JSONPath.containsValue(model, \"/value\", 1001L));\n        Assert.assertTrue(JSONPath.containsValue(model, \"/value\", (short) 1001));\n        Assert.assertTrue(JSONPath.containsValue(model, \"/value\", 1001F));\n        Assert.assertTrue(JSONPath.containsValue(model, \"/value\", 1001D));\n        \n        Assert.assertFalse(JSONPath.containsValue(model, \"/value\", 1002));\n        Assert.assertFalse(JSONPath.containsValue(model, \"/value\", 1002L));\n        Assert.assertFalse(JSONPath.containsValue(model, \"/value\", (short) 1002));\n        Assert.assertFalse(JSONPath.containsValue(model, \"/value\", 1002F));\n        Assert.assertFalse(JSONPath.containsValue(model, \"/value\", 1002D));\n    }\n    \n    public static class Model {\n        public int value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_containsValue_bigdecimal.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.math.BigDecimal;\nimport java.math.BigInteger;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_containsValue_bigdecimal extends TestCase {\n    public void test_root() throws Exception {\n        Model model = new Model();\n        model.value = new BigDecimal(\"1001\");\n        \n        Assert.assertTrue(JSONPath.containsValue(model, \"/value\", 1001));\n        Assert.assertTrue(JSONPath.containsValue(model, \"/value\", 1001L));\n        Assert.assertTrue(JSONPath.containsValue(model, \"/value\", (short) 1001));\n        \n        Assert.assertFalse(JSONPath.containsValue(model, \"/value\", 1002));\n        Assert.assertFalse(JSONPath.containsValue(model, \"/value\", 1002L));\n        Assert.assertFalse(JSONPath.containsValue(model, \"/value\", (short) 1002));\n    }\n    \n    public static class Model {\n        public BigDecimal value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_containsValue_biginteger.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.math.BigInteger;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_containsValue_biginteger extends TestCase {\n    public void test_root() throws Exception {\n        Model model = new Model();\n        model.value = new BigInteger(\"1001\");\n        \n        Assert.assertTrue(JSONPath.containsValue(model, \"/value\", 1001));\n        Assert.assertTrue(JSONPath.containsValue(model, \"/value\", 1001L));\n        Assert.assertTrue(JSONPath.containsValue(model, \"/value\", (short) 1001));\n        \n        Assert.assertFalse(JSONPath.containsValue(model, \"/value\", 1002));\n        Assert.assertFalse(JSONPath.containsValue(model, \"/value\", 1002L));\n        Assert.assertFalse(JSONPath.containsValue(model, \"/value\", (short) 1002));\n    }\n    \n    public static class Model {\n        public BigInteger value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_containsValue_double.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_containsValue_double extends TestCase {\n    public void test_root() throws Exception {\n        Model model = new Model();\n        model.value = 1001D;\n        \n        Assert.assertTrue(JSONPath.containsValue(model, \"/value\", 1001));\n        Assert.assertTrue(JSONPath.containsValue(model, \"/value\", 1001L));\n        Assert.assertTrue(JSONPath.containsValue(model, \"/value\", (short) 1001));\n        Assert.assertTrue(JSONPath.containsValue(model, \"/value\", 1001F));\n        Assert.assertTrue(JSONPath.containsValue(model, \"/value\", 1001D));\n        \n        Assert.assertFalse(JSONPath.containsValue(model, \"/value\", 1002));\n        Assert.assertFalse(JSONPath.containsValue(model, \"/value\", 1002L));\n        Assert.assertFalse(JSONPath.containsValue(model, \"/value\", (short) 1002));\n        Assert.assertFalse(JSONPath.containsValue(model, \"/value\", 1002F));\n        Assert.assertFalse(JSONPath.containsValue(model, \"/value\", 1002D));\n    }\n    \n    public static class Model {\n        public double value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_deepScan_test.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.Arrays;\nimport java.util.Collections;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_deepScan_test extends TestCase {\n\n    @SuppressWarnings({ \"rawtypes\", \"unchecked\" })\n    public void test_0() throws Exception {\n        Map root = Collections.singletonMap(\"company\", //\n                                            Collections.singletonMap(\"departs\", //\n                                                                     Arrays.asList( //\n                                                                                    Collections.singletonMap(\"id\",\n                                                                                                             1001), //\n                                                                                    Collections.singletonMap(\"id\",\n                                                                                                             1002), //\n                                                                                    Collections.singletonMap(\"id\", 1003) //\n                                                                     ) //\n                                            ));\n\n        List<Object> ids = (List<Object>) JSONPath.eval(root, \"$..id\");\n        Assert.assertEquals(3, ids.size());\n        Assert.assertEquals(1001, ids.get(0));\n        Assert.assertEquals(1002, ids.get(1));\n        Assert.assertEquals(1003, ids.get(2));\n    }\n\n    public static class Root {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_deepScan_test2.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_deepScan_test2 extends TestCase {\n\n    @SuppressWarnings({\"unchecked\" })\n    public void test_0() throws Exception {\n        \n        Root root = new Root();\n        root.company = new Company();\n        root.company.departs.add(new Department(1001));\n        root.company.departs.add(new Department(1002));\n        root.company.departs.add(new Department(1003));\n        \n\n        List<Object> ids = (List<Object>) JSONPath.eval(root, \"$..id\");\n        Assert.assertEquals(3, ids.size());\n        Assert.assertEquals(1001, ids.get(0));\n        Assert.assertEquals(1002, ids.get(1));\n        Assert.assertEquals(1003, ids.get(2));\n    }\n\n    public static class Root {\n        public Company company;\n    }\n    \n    public static class Company {\n        public List<Department> departs = new ArrayList<Department>();\n    }\n    \n    public static class Department {\n        public int id;\n        \n        public Department() {\n            \n        }\n        \n        public Department(int id) {\n            this.id = id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_enum.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_enum extends TestCase {\n    \n    public void test_name() throws Exception {\n        Model model = new Model();\n        model.size = Size.Small;\n        \n        Assert.assertEquals(Size.Small.name(), JSONPath.eval(model, \"$.size.name\"));\n    }\n    \n    public void test_orginal() throws Exception {\n        Model model = new Model();\n        model.size = Size.Small;\n        \n        Assert.assertEquals(Size.Small.ordinal(), JSONPath.eval(model, \"$.size.ordinal\"));\n    }\n\n    public static class Model {\n        public Size size;\n    }\n    \n    public static enum Size {\n        Big, Median, Small\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_field_access.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\npublic class JSONPath_field_access extends TestCase {\n\n    public void test_list_map() throws Exception {\n        Entity entity = new Entity(123, \"wenshao\");\n        JSONPath path = new JSONPath(\"$['id']\");\n        \n        Assert.assertSame(entity.getId(), path.eval(entity));\n    }\n\n    public static class Entity {\n\n        private Integer id;\n        private String  name;\n\n        public Entity(Integer id, String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public Integer getId() {\n            return id;\n        }\n\n        public void setId(Integer id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_field_access_filter_compare_int.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\npublic class JSONPath_field_access_filter_compare_int extends TestCase {\n\n    List<Entity> entities = new ArrayList<Entity>();\n\n    public JSONPath_field_access_filter_compare_int(){\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, null));\n        entities.add(new Entity(null, null));\n    }\n\n    public void test_list_map_le() throws Exception {\n        JSONPath path = new JSONPath(\"$[?(@.id <= 1002)]\");\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(2, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n        Assert.assertSame(entities.get(1), result.get(1));\n    }\n\n    public void test_list_map_lt() throws Exception {\n        JSONPath path = new JSONPath(\"$[?(@.id < 1002)]\");\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n    }\n    \n    public void test_list_map_ge() throws Exception {\n        JSONPath path = new JSONPath(\"$[?(@.id >= 1002)]\");\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(2, result.size());\n        Assert.assertSame(entities.get(1), result.get(0));\n        Assert.assertSame(entities.get(2), result.get(1));\n    }\n    \n    public void test_list_map_gt() throws Exception {\n        JSONPath path = new JSONPath(\"$[?(@.id > 1002)]\");\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(2), result.get(0));\n    }\n\n    public static class Entity {\n\n        private Integer id;\n        private String  name;\n\n        public Entity(Integer id, String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public Integer getId() {\n            return id;\n        }\n\n        public void setId(Integer id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_field_access_filter_compare_int_simple.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\npublic class JSONPath_field_access_filter_compare_int_simple extends TestCase {\n\n    public void test_list() throws Exception {\n        JSONPath path = new JSONPath(\"$[id <= 1002]\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, null));\n        entities.add(new Entity(null, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(2, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n        Assert.assertSame(entities.get(1), result.get(1));\n    }\n\n    public void test_list_2() throws Exception {\n        JSONPath path = new JSONPath(\"[id <= 1002]\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, null));\n        entities.add(new Entity(null, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(2, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n        Assert.assertSame(entities.get(1), result.get(1));\n    }\n\n    public static class Entity {\n\n        private Integer id;\n        private String  name;\n\n        public Entity(Integer id, String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public Integer getId() {\n            return id;\n        }\n\n        public void setId(Integer id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_field_access_filter_compare_string.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\npublic class JSONPath_field_access_filter_compare_string extends TestCase {\n\n    public void test_list_eq() throws Exception {\n        JSONPath path = new JSONPath(\"$[?(@.name = 'ljw2083')]\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, null));\n        entities.add(new Entity(null, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n    }\n    \n    public void test_list_eq_x() throws Exception {\n        JSONPath path = new JSONPath(\"$[?(name = 'ljw2083')]\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, null));\n        entities.add(new Entity(null, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n    }\n    \n    public void test_list_eq_null() throws Exception {\n        JSONPath path = new JSONPath(\"$[?(@.name = null)]\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, null));\n        entities.add(new Entity(null, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(2, result.size());\n        Assert.assertSame(entities.get(2), result.get(0));\n        Assert.assertSame(entities.get(3), result.get(1));\n    }\n    \n    public void test_list_not_null() throws Exception {\n        JSONPath path = new JSONPath(\"$[?(@.name != null)]\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, null));\n        entities.add(new Entity(null, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(2, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n        Assert.assertSame(entities.get(1), result.get(1));\n    }\n    \n    public void test_list_gt() throws Exception {\n        JSONPath path = new JSONPath(\"$[?(@.name > 'ljw2083')]\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, null));\n        entities.add(new Entity(null, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(1), result.get(0));\n    }\n    \n    public void test_list_ge() throws Exception {\n        JSONPath path = new JSONPath(\"$[?(@.name >= 'ljw2083')]\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, null));\n        entities.add(new Entity(null, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(2, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n        Assert.assertSame(entities.get(1), result.get(1));\n    }\n\n    public void test_list_lt() throws Exception {\n        JSONPath path = new JSONPath(\"$[?(@.name < 'wenshao')]\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, null));\n        entities.add(new Entity(null, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n    }\n    \n    public void test_list_le() throws Exception {\n        JSONPath path = new JSONPath(\"$[?(@.name <= 'wenshao')]\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, null));\n        entities.add(new Entity(null, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(2, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n        Assert.assertSame(entities.get(1), result.get(1));\n    }\n\n    public void test_eq() throws Exception {\n        JSONPath path = new JSONPath(\"$.*[?(@.name=='b')].id\");\n\n        JSONArray array = JSON.parseArray(\"[{\\\"id\\\":\\\"1\\\",\\\"name\\\":\\\"a\\\"},{\\\"id\\\":\\\"2\\\",\\\"name\\\":\\\"b\\\"}]\");\n        Object result = path.eval(array);\n        System.out.println(result);\n    }\n\n    public static class Entity {\n\n        private Integer id;\n        private String  name;\n\n        public Entity(Integer id, String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public Integer getId() {\n            return id;\n        }\n\n        public void setId(Integer id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_field_access_filter_compare_string_simple.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\npublic class JSONPath_field_access_filter_compare_string_simple extends TestCase {\n\n    public void test_list_eq() throws Exception {\n        JSONPath path = new JSONPath(\"[name = 'ljw2083']\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, null));\n        entities.add(new Entity(null, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n    }\n    \n    public void test_list_eq_x() throws Exception {\n        JSONPath path = new JSONPath(\"[name = 'ljw2083']\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, null));\n        entities.add(new Entity(null, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n    }\n    \n    public void test_list_eq_null() throws Exception {\n        JSONPath path = new JSONPath(\"$[name = null]\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, null));\n        entities.add(new Entity(null, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(2, result.size());\n        Assert.assertSame(entities.get(2), result.get(0));\n        Assert.assertSame(entities.get(3), result.get(1));\n    }\n    \n    public void test_list_not_null() throws Exception {\n        JSONPath path = new JSONPath(\"$[name != null]\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, null));\n        entities.add(new Entity(null, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(2, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n        Assert.assertSame(entities.get(1), result.get(1));\n    }\n    \n    public void test_list_gt() throws Exception {\n        JSONPath path = new JSONPath(\"$[name > 'ljw2083']\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, null));\n        entities.add(new Entity(null, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(1), result.get(0));\n    }\n    \n    public void test_list_ge() throws Exception {\n        JSONPath path = new JSONPath(\"$[name >= 'ljw2083']\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, null));\n        entities.add(new Entity(null, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(2, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n        Assert.assertSame(entities.get(1), result.get(1));\n    }\n\n    public void test_list_lt() throws Exception {\n        JSONPath path = new JSONPath(\"$[?(@.name < 'wenshao')]\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, null));\n        entities.add(new Entity(null, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n    }\n    \n    public void test_list_le() throws Exception {\n        JSONPath path = new JSONPath(\"$[name <= 'wenshao']\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, null));\n        entities.add(new Entity(null, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(2, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n        Assert.assertSame(entities.get(1), result.get(1));\n    }\n    \n    public static class Entity {\n\n        private Integer id;\n        private String  name;\n\n        public Entity(Integer id, String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public Integer getId() {\n            return id;\n        }\n\n        public void setId(Integer id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_field_access_filter_in_decimal.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.math.BigDecimal;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class JSONPath_field_access_filter_in_decimal extends TestCase {\n\n    public void test_list_in() throws Exception {\n        JSONPath path = new JSONPath(\"[id in (1001)]\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(1004, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n    }\n    \n    public void test_list_not_in() throws Exception {\n        JSONPath path = new JSONPath(\"[id not in (1001)]\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(1004, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(3, result.size());\n        Assert.assertSame(entities.get(1), result.get(0));\n        Assert.assertSame(entities.get(2), result.get(1));\n        Assert.assertSame(entities.get(3), result.get(2));\n    }\n    \n    public void test_list_not_in_null() throws Exception {\n        JSONPath path = new JSONPath(\"[id not in (null)]\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(1004, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(4, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n        Assert.assertSame(entities.get(1), result.get(1));\n        Assert.assertSame(entities.get(2), result.get(2));\n        Assert.assertSame(entities.get(3), result.get(3));\n    }\n    \n    public void test_list_in_2() throws Exception {\n        JSONPath path = new JSONPath(\"[id in (1001, 1003)]\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(1004, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(2, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n        Assert.assertSame(entities.get(2), result.get(1));\n    }\n    \n    public void test_list_in_3() throws Exception {\n        JSONPath path = new JSONPath(\"[id in (1001, 1003, 1004)]\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(1004, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(3, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n        Assert.assertSame(entities.get(2), result.get(1));\n        Assert.assertSame(entities.get(3), result.get(2));\n    }\n    \n    public void test_list_in_3_null() throws Exception {\n        JSONPath path = new JSONPath(\"[id in (1001, 1003, null)]\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(3, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n        Assert.assertSame(entities.get(2), result.get(1));\n        Assert.assertSame(entities.get(3), result.get(2));\n    }\n\n    public static class Entity {\n\n        private BigDecimal id;\n        private String  name;\n\n        public Entity(Integer id, String name){\n            if (id == null) {\n                this.id = null;\n            } else {\n                this.id = BigDecimal.valueOf(id);\n            }\n\n            this.name = name;\n        }\n\n        public BigDecimal getId() {\n            return id;\n        }\n\n        public void setId(BigDecimal id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_field_access_filter_in_int.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\npublic class JSONPath_field_access_filter_in_int extends TestCase {\n\n    public void test_list_in() throws Exception {\n        JSONPath path = new JSONPath(\"[id in (1001)]\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(1004, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n    }\n    \n    public void test_list_not_in() throws Exception {\n        JSONPath path = new JSONPath(\"[id not in (1001)]\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(1004, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(3, result.size());\n        Assert.assertSame(entities.get(1), result.get(0));\n        Assert.assertSame(entities.get(2), result.get(1));\n        Assert.assertSame(entities.get(3), result.get(2));\n    }\n\n    public void test_list_nin() throws Exception {\n        JSONPath path = new JSONPath(\"[id nin (1001)]\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(1004, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(3, result.size());\n        Assert.assertSame(entities.get(1), result.get(0));\n        Assert.assertSame(entities.get(2), result.get(1));\n        Assert.assertSame(entities.get(3), result.get(2));\n    }\n    \n    public void test_list_not_in_null() throws Exception {\n        JSONPath path = new JSONPath(\"[id not in (null)]\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(1004, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(4, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n        Assert.assertSame(entities.get(1), result.get(1));\n        Assert.assertSame(entities.get(2), result.get(2));\n        Assert.assertSame(entities.get(3), result.get(3));\n    }\n    \n    public void test_list_in_2() throws Exception {\n        JSONPath path = new JSONPath(\"[id in (1001, 1003)]\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(1004, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(2, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n        Assert.assertSame(entities.get(2), result.get(1));\n    }\n    \n    public void test_list_in_3() throws Exception {\n        JSONPath path = new JSONPath(\"[id in (1001, 1003, 1004)]\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(1004, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(3, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n        Assert.assertSame(entities.get(2), result.get(1));\n        Assert.assertSame(entities.get(3), result.get(2));\n    }\n    \n    public void test_list_in_3_null() throws Exception {\n        JSONPath path = new JSONPath(\"[id in (1001, 1003, null)]\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(3, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n        Assert.assertSame(entities.get(2), result.get(1));\n        Assert.assertSame(entities.get(3), result.get(2));\n    }\n\n    public static class Entity {\n\n        private Integer id;\n        private String  name;\n\n        public Entity(Integer id, String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public Integer getId() {\n            return id;\n        }\n\n        public void setId(Integer id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_field_access_filter_in_string.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\npublic class JSONPath_field_access_filter_in_string extends TestCase {\n\n    public void test_list_in() throws Exception {\n        JSONPath path = new JSONPath(\"[name in ('ljw2083')]\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(1004, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n    }\n    \n    public void test_list_not_in() throws Exception {\n        JSONPath path = new JSONPath(\"[name not in ('ljw2083')]\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(1004, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(3, result.size());\n        Assert.assertSame(entities.get(1), result.get(0));\n        Assert.assertSame(entities.get(2), result.get(1));\n        Assert.assertSame(entities.get(3), result.get(2));\n    }\n    \n    public void test_list_in_2() throws Exception {\n        JSONPath path = new JSONPath(\"[name in ('ljw2083', 'yakolee')]\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(1004, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(2, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n        Assert.assertSame(entities.get(2), result.get(1));\n    }\n    \n    public void test_list_in_3() throws Exception {\n        JSONPath path = new JSONPath(\"[name in ('ljw2083', 'yakolee',null)]\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(1004, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(3, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n        Assert.assertSame(entities.get(2), result.get(1));\n        Assert.assertSame(entities.get(3), result.get(2));\n    }\n\n    public static class Entity {\n\n        private Integer id;\n        private String  name;\n\n        public Entity(Integer id, String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public Integer getId() {\n            return id;\n        }\n\n        public void setId(Integer id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_field_access_filter_like.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\npublic class JSONPath_field_access_filter_like extends TestCase {\n\n    public void test_list_like_extract() throws Exception {\n        JSONPath path = new JSONPath(\"$[?(@.name like 'ljw2083')]\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, null));\n        entities.add(new Entity(null, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n    }\n    \n    public void test_list_not_like_extract() throws Exception {\n        JSONPath path = new JSONPath(\"$[?(@.name not like 'ljw2083')]\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(3, result.size());\n        Assert.assertSame(entities.get(1), result.get(0));\n        Assert.assertSame(entities.get(2), result.get(1));\n        Assert.assertSame(entities.get(3), result.get(2));\n    }\n    \n    public void test_list_like_left_match() throws Exception {\n        JSONPath path = new JSONPath(\"$[?(@.name like 'ljw%')]\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n    }\n    \n    public void test_list_like_right_match() throws Exception {\n        JSONPath path = new JSONPath(\"$[?(@.name like '%2083')]\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n    }\n    \n    public void test_list_like_contains() throws Exception {\n        JSONPath path = new JSONPath(\"$[?(@.name like '%208%')]\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n    }\n    \n    public void test_list_like_match_two_segement() throws Exception {\n        JSONPath path = new JSONPath(\"$[?(@.name like 'ljw%83')]\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n    }\n    \n    public void test_list_like_match_two_segement_2() throws Exception {\n        JSONPath path = new JSONPath(\"$[?(@.name like 'ljw%w2083')]\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(0, result.size());\n    }\n    \n    public void test_list_like_match_two_segement_3() throws Exception {\n        JSONPath path = new JSONPath(\"$[?(@.name like 'ljw%2%0%83')]\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n    }\n\n    public static class Entity {\n\n        private Integer id;\n        private String  name;\n\n        public Entity(Integer id, String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public Integer getId() {\n            return id;\n        }\n\n        public void setId(Integer id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_field_access_filter_like_simple.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\npublic class JSONPath_field_access_filter_like_simple extends TestCase {\n\n    public void test_list_like_extract() throws Exception {\n        JSONPath path = new JSONPath(\"$[name like 'ljw2083']\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, null));\n        entities.add(new Entity(null, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n    }\n    \n    public void test_list_not_like_extract() throws Exception {\n        JSONPath path = new JSONPath(\"$[name not like 'ljw2083']\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(3, result.size());\n        Assert.assertSame(entities.get(1), result.get(0));\n        Assert.assertSame(entities.get(2), result.get(1));\n        Assert.assertSame(entities.get(3), result.get(2));\n    }\n    \n    public void test_list_like_left_match() throws Exception {\n        JSONPath path = new JSONPath(\"$[name like 'ljw%']\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n    }\n    \n    public void test_list_like_left_not_match() throws Exception {\n        JSONPath path = new JSONPath(\"$[name not like 'ljw%']\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(2, result.size());\n        Assert.assertSame(entities.get(1), result.get(0));\n        Assert.assertSame(entities.get(2), result.get(1));\n    }\n    \n    public void test_list_like_right_match() throws Exception {\n        JSONPath path = new JSONPath(\"$[name like '%2083']\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n    }\n    \n    public void test_list_like_right_not_match() throws Exception {\n        JSONPath path = new JSONPath(\"$[name not like '%2083']\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(2, result.size());\n        Assert.assertSame(entities.get(1), result.get(0));\n        Assert.assertSame(entities.get(2), result.get(1));\n    }\n    \n    public void test_list_like_contains() throws Exception {\n        JSONPath path = new JSONPath(\"$[name like '%208%']\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n    }\n    \n    public void test_list_like_not_contains() throws Exception {\n        JSONPath path = new JSONPath(\"$[name not like '%208%']\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(2, result.size());\n        Assert.assertSame(entities.get(1), result.get(0));\n        Assert.assertSame(entities.get(2), result.get(1));\n    }\n    \n    public void test_list_like_match_two_segement() throws Exception {\n        JSONPath path = new JSONPath(\"$[name like 'ljw%83']\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n    }\n    \n    public void test_list_like_match_two_segement_not() throws Exception {\n        JSONPath path = new JSONPath(\"$[name not like 'ljw%83']\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(2, result.size());\n        Assert.assertSame(entities.get(1), result.get(0));\n        Assert.assertSame(entities.get(2), result.get(1));\n    }\n    \n    public void test_list_like_match_two_segement_2() throws Exception {\n        JSONPath path = new JSONPath(\"$[name like 'ljw%w2083']\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(0, result.size());\n    }\n    \n    public void test_list_like_match_two_segement_2_not() throws Exception {\n        JSONPath path = new JSONPath(\"$[name not like 'ljw%w2083']\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(3, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n        Assert.assertSame(entities.get(1), result.get(1));\n        Assert.assertSame(entities.get(2), result.get(2));\n    }\n    \n    public void test_list_like_match_two_segement_3() throws Exception {\n        JSONPath path = new JSONPath(\"$[name like 'ljw%2%0%83']\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n    }\n    \n    public void test_list_like_match_two_segement_3_not() throws Exception {\n        JSONPath path = new JSONPath(\"$[name not like 'ljw%2%0%83']\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(2, result.size());\n        Assert.assertSame(entities.get(1), result.get(0));\n        Assert.assertSame(entities.get(2), result.get(1));\n    }\n\n    public static class Entity {\n\n        private Integer id;\n        private String  name;\n\n        public Entity(Integer id, String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public Integer getId() {\n            return id;\n        }\n\n        public void setId(Integer id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_field_access_filter_notNull.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\npublic class JSONPath_field_access_filter_notNull extends TestCase {\n\n    public void test_list_map() throws Exception {\n        JSONPath path = new JSONPath(\"$[?(@.name)]\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(2, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n        Assert.assertSame(entities.get(1), result.get(1));\n    }\n\n    public static class Entity {\n\n        private Integer id;\n        private String  name;\n\n        public Entity(Integer id, String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public Integer getId() {\n            return id;\n        }\n\n        public void setId(Integer id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_field_access_filter_rlike.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\npublic class JSONPath_field_access_filter_rlike extends TestCase {\n\n    public void test_list_like_extract() throws Exception {\n        JSONPath path = new JSONPath(\"$[name rlike 'ljw2083']\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, null));\n        entities.add(new Entity(null, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n    }\n    \n    public void test_list_not_like_extract() throws Exception {\n        JSONPath path = new JSONPath(\"$[name not rlike 'wenshao']\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(2, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n        Assert.assertSame(entities.get(2), result.get(1));\n    }\n    \n    public void test_list_like_left_match() throws Exception {\n        JSONPath path = new JSONPath(\"$[?(@.name like 'ljw%')]\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n    }\n    \n    public void test_list_like_right_match() throws Exception {\n        JSONPath path = new JSONPath(\"$[?(@.name like '%2083')]\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n    }\n    \n    public void test_list_like_contains() throws Exception {\n        JSONPath path = new JSONPath(\"$[?(@.name like '%208%')]\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n    }\n    \n    public void test_list_like_match_two_segement() throws Exception {\n        JSONPath path = new JSONPath(\"$[?(@.name like 'ljw%83')]\");\n\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n\n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n    }\n    \n    public void test_list_like_match_two_segement_2() throws Exception {\n        JSONPath path = new JSONPath(\"$[?(@.name like 'ljw%w2083')]\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(0, result.size());\n    }\n    \n    public void test_list_like_match_two_segement_3() throws Exception {\n        JSONPath path = new JSONPath(\"$[?(@.name like 'ljw%2%0%83')]\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(1001, \"ljw2083\"));\n        entities.add(new Entity(1002, \"wenshao\"));\n        entities.add(new Entity(1003, \"yakolee\"));\n        entities.add(new Entity(null, null));\n        \n        List<Object> result = (List<Object>) path.eval(entities);\n        Assert.assertEquals(1, result.size());\n        Assert.assertSame(entities.get(0), result.get(0));\n    }\n\n    public static class Entity {\n\n        private Integer id;\n        private String  name;\n\n        public Entity(Integer id, String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public Integer getId() {\n            return id;\n        }\n\n        public void setId(Integer id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_field_access_multi.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\npublic class JSONPath_field_access_multi extends TestCase {\n\n    public void test_list_map() throws Exception {\n        Entity entity = new Entity(123, \"wenshao\");\n        JSONPath path = new JSONPath(\"$['id','name']\");\n        \n        List<Object> result = (List<Object>) path.eval(entity);\n        Assert.assertSame(entity.getId(), result.get(0));\n        Assert.assertSame(entity.getName(), result.get(1));\n    }\n\n    public void test_list_map2() throws Exception {\n        Entity entity = new Entity(123, \"wenshao\");\n        JSONPath path = new JSONPath(\"$.entity['id','name']\");\n\n        Root root = new Root();\n        root.setEntity(entity);\n\n        List<Object> result = (List<Object>) path.eval(root);\n        Assert.assertSame(entity.getId(), result.get(0));\n        Assert.assertSame(entity.getName(), result.get(1));\n    }\n\n    public static class Entity {\n\n        private Integer id;\n        private String  name;\n\n        public Entity(Integer id, String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public Integer getId() {\n            return id;\n        }\n\n        public void setId(Integer id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n\n    public static class Root {\n        private Entity entity;\n\n        public Entity getEntity()\n        {\n            return entity;\n        }\n\n        public void setEntity(Entity entity)\n        {\n            this.entity = entity;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_field_wildcard.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.Collection;\nimport java.util.Iterator;\nimport java.util.LinkedHashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_field_wildcard extends TestCase {\n\n    public void test_list_map() throws Exception {\n        JSONPath path = new JSONPath(\"$.*\");\n        Map<String, Object> map = new LinkedHashMap<String, Object>();\n        map.put(\"id\", 123);\n        map.put(\"name\", \"wenshao\");\n\n        Collection<Object> fieldValues = (Collection<Object>) path.eval(map);\n        Iterator<Object> it = fieldValues.iterator();\n        Assert.assertSame(map.get(\"id\"), it.next());\n        Assert.assertSame(map.get(\"name\"), it.next());\n    }\n    \n    public void test_list_map_none_root() throws Exception {\n        JSONPath path = new JSONPath(\"*\");\n        Entity entity = new Entity(123, \"wenshao\");\n        \n        List<Object> fieldValues = (List<Object>) path.eval(entity);\n        Assert.assertSame(entity.getId(), fieldValues.get(0));\n        Assert.assertSame(entity.getName(), fieldValues.get(1));\n    }\n\n    public static class Entity {\n\n        private Integer id;\n        private String  name;\n\n        public Entity(Integer id, String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public Integer getId() {\n            return id;\n        }\n\n        public void setId(Integer id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_field_wildcard_filter.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.*;\n\npublic class JSONPath_field_wildcard_filter extends TestCase {\n\n    public void test_list_map_0() throws Exception {\n        JSONObject jsonObject = JSON.parseObject(text, Feature.OrderedField);\n\n        Collection array = (Collection) JSONPath.eval(jsonObject, \"$.*[score>0]\");\n        assertEquals(\"[{\\\"score\\\":0.89513221556685012},{\\\"score\\\":0.7237896928683851},{\\\"score\\\":0.3467174233072834}]\", JSON.toJSONString(array));\n    }\n\n    public void test_list_map_1() throws Exception {\n        JSONObject jsonObject = JSON.parseObject(text, Feature.OrderedField);\n\n        Collection array = (Collection) JSONPath.eval(jsonObject, \"$.*[score<0]\");\n        assertEquals(\"[{\\\"score\\\":-0.3453003960431523}]\", JSON.toJSONString(array));\n    }\n\n    public void test_list_map_2() throws Exception {\n        JSONObject jsonObject = JSON.parseObject(text, Feature.OrderedField);\n\n        Collection array = (Collection) JSONPath.eval(jsonObject, \"$.*[score=0]\");\n        assertEquals(\"[{\\\"score\\\":0},{\\\"score\\\":0},{\\\"score\\\":0},{\\\"score\\\":0},{\\\"score\\\":0},{\\\"score\\\":0},{\\\"score\\\":0}]\", JSON.toJSONString(array));\n    }\n\n    public static final String text = \"{\\n\" +\n            \"\\t\\\"risk_sexy_trade_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"chemical_medicine_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"gambling_trade_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"politics_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0.89513221556685012\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"risk_tool_gun_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"sex_model_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0.7237896928683851\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"risk_tool_cheat_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"risk_tool_certif_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"gamble_model_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": -0.3453003960431523\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"risk_tool_vpn_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"vpndetect_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0.3467174233072834\\n\" +\n            \"\\t}\\n\" +\n            \"}\";\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_field_wildcard_filter_double.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONPath;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\nimport java.util.Collection;\nimport java.util.Map;\n\npublic class JSONPath_field_wildcard_filter_double extends TestCase {\n\n    public void test_list_map_0() throws Exception {\n        Map<String, Value> jsonObject = JSON.parseObject(text, new TypeReference<Map<String, Value>>(){}, Feature.OrderedField);\n\n        Collection array = (Collection) JSONPath.eval(jsonObject, \"$.*[score>0]\");\n        assertEquals(\"[{\\\"score\\\":0.8951322155668501},{\\\"score\\\":0.7237896928683851},{\\\"score\\\":0.3467174233072834}]\", JSON.toJSONString(array));\n    }\n\n    public void test_list_map_1() throws Exception {\n        Map<String, Value> jsonObject = JSON.parseObject(text, new TypeReference<Map<String, Value>>(){}, Feature.OrderedField);\n\n        Collection array = (Collection) JSONPath.eval(jsonObject, \"$.*[score<0]\");\n        assertEquals(\"[{\\\"score\\\":-0.3453003960431523}]\", JSON.toJSONString(array));\n    }\n\n    public void test_list_map_2() throws Exception {\n        Map<String, Value> jsonObject = JSON.parseObject(text, new TypeReference<Map<String, Value>>(){}, Feature.OrderedField);\n\n        Collection array = (Collection) JSONPath.eval(jsonObject, \"$.*[score=0]\");\n        assertEquals(\"[{\\\"score\\\":0.0},{\\\"score\\\":0.0},{\\\"score\\\":0.0},{\\\"score\\\":0.0},{\\\"score\\\":0.0},{\\\"score\\\":0.0},{\\\"score\\\":0.0}]\", JSON.toJSONString(array));\n    }\n\n    public static class Value {\n        public double score;\n    }\n\n    public static final String text = \"{\\n\" +\n            \"\\t\\\"risk_sexy_trade_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"chemical_medicine_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"gambling_trade_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"politics_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0.89513221556685012\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"risk_tool_gun_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"sex_model_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0.7237896928683851\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"risk_tool_cheat_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"risk_tool_certif_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"gamble_model_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": -0.3453003960431523\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"risk_tool_vpn_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"vpndetect_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0.3467174233072834\\n\" +\n            \"\\t}\\n\" +\n            \"}\";\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_field_wildcard_filter_float.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\nimport java.util.Collection;\nimport java.util.Map;\n\npublic class JSONPath_field_wildcard_filter_float extends TestCase {\n\n    public void test_list_map_0() throws Exception {\n        Map<String, Value> jsonObject = JSON.parseObject(text, new TypeReference<Map<String, Value>>(){}, Feature.OrderedField);\n\n        Collection array = (Collection) JSONPath.eval(jsonObject, \"$.*[score>0]\");\n        assertEquals(\"[{\\\"score\\\":0.89513224},{\\\"score\\\":0.7237897},{\\\"score\\\":0.34671742}]\", JSON.toJSONString(array));\n    }\n\n    public void test_list_map_1() throws Exception {\n        Map<String, Value> jsonObject = JSON.parseObject(text, new TypeReference<Map<String, Value>>(){}, Feature.OrderedField);\n\n        Collection array = (Collection) JSONPath.eval(jsonObject, \"$.*[score<0]\");\n        assertEquals(\"[{\\\"score\\\":-0.3453004}]\", JSON.toJSONString(array));\n    }\n\n    public void test_list_map_2() throws Exception {\n        Map<String, Value> jsonObject = JSON.parseObject(text, new TypeReference<Map<String, Value>>(){}, Feature.OrderedField);\n\n        Collection array = (Collection) JSONPath.eval(jsonObject, \"$.*[score=0]\");\n        assertEquals(\"[{\\\"score\\\":0.0},{\\\"score\\\":0.0},{\\\"score\\\":0.0},{\\\"score\\\":0.0},{\\\"score\\\":0.0},{\\\"score\\\":0.0},{\\\"score\\\":0.0}]\", JSON.toJSONString(array));\n    }\n\n    public static class Value {\n        public float score;\n    }\n\n    public static final String text = \"{\\n\" +\n            \"\\t\\\"risk_sexy_trade_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"chemical_medicine_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"gambling_trade_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"politics_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0.89513221556685012\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"risk_tool_gun_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"sex_model_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0.7237896928683851\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"risk_tool_cheat_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"risk_tool_certif_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"gamble_model_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": -0.3453003960431523\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"risk_tool_vpn_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0\\n\" +\n            \"\\t},\\n\" +\n            \"\\t\\\"vpndetect_stream_plus\\\": {\\n\" +\n            \"\\t\\t\\\"score\\\": 0.3467174233072834\\n\" +\n            \"\\t}\\n\" +\n            \"}\";\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_issue1208.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\npublic class JSONPath_issue1208 extends TestCase {\n\n    public void test_largeNumberProperty() throws Exception {\n        String json1 = \"{\\\"articles\\\":{\\\"2147483647\\\":{\\\"XXX\\\":\\\"xiu\\\"}}}\";\n        String path1 = \"$.articles.2147483647.XXX\";\n        Object read = JSONPath.read(json1, path1);\n        Assert.assertEquals(\"xiu\", read);\n\n        String json2 = \"{\\\"articles\\\":{\\\"2147483648\\\":{\\\"XXX\\\":\\\"xiu\\\"}}}\";\n        String path2 = \"$.articles.2147483648.XXX\";\n        Object read2 = JSONPath.read(json2, path2);\n\n        Assert.assertEquals(\"xiu\", read2);\n    }\n\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_keySet.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.Collection;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.Map;\nimport java.util.Set;\n\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\npublic class JSONPath_keySet extends TestCase {\n\n    public static final Set<String> KEY_SET = new HashSet<String>();\n\n    static {\n        KEY_SET.add(\"id\");\n        KEY_SET.add(\"name\");\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    public void test_map() {\n        Map<String, Integer> map1 = new HashMap<String, Integer>();\n        map1.put(\"id\", 1);\n        map1.put(\"name\", null); // null will be included\n        Assert.assertEquals(KEY_SET, JSONPath.eval(map1, \"$.keySet()\"));\n        Assert.assertEquals(KEY_SET, JSONPath.keySet(map1, \"$\"));\n\n        Map<Long, String> map2 = new HashMap<Long, String>();\n        map2.put(1L, \"a\");\n        map2.put(2L, \"b\");\n        Set<Long> keys2 = (Set<Long>)JSONPath.eval(map2, \"$.keySet()\");\n        Assert.assertEquals(2, keys2.size());\n        Assert.assertTrue(keys2.contains(1L));\n        Assert.assertTrue(keys2.contains(2L));\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    public void test_object() {\n        Entity e = new Entity();\n        e.id = 3L;\n        e.name = \"hello\";\n        Collection<String> result = null;\n        // age is null\n        result = (Collection<String>)JSONPath.eval(e, \"$.keySet()\");\n        Assert.assertEquals(KEY_SET, result);\n\n        // age not null\n        e.age = 4L;\n        result = (Collection<String>)JSONPath.eval(e, \"$.keySet()\");\n        Assert.assertEquals(3, result.size());\n        Assert.assertTrue(result.containsAll(KEY_SET));\n        Assert.assertTrue(result.contains(\"age\"));\n    }\n\n    public void test_nested() {\n        Entity e = new Entity();\n        e.id = 3L;\n        e.name = \"hello\";\n        Object obj = Collections.singletonMap(\"obj\", e);\n        Assert.assertEquals(KEY_SET, JSONPath.eval(obj, \"$.obj.keySet()\"));\n        Assert.assertEquals(KEY_SET, new JSONPath(\"$.obj\").keySet(obj));\n    }\n\n    public void test_unsupported() {\n        Entity e = new Entity();\n        e.id = 3L;\n        Entity[] array = {e};\n        Map<String, Entity[]> map = Collections.singletonMap(\"array\", array);\n        Assert.assertEquals(array, JSONPath.eval(map, \"$.array\"));\n        Assert.assertNull(JSONPath.eval(map, \"$.array.keySet()\"));\n        Assert.assertNull(JSONPath.keySet(map, \"$.array\"));\n        Assert.assertNull(new JSONPath(\"$.array\").keySet(map));\n    }\n\n    public void test_null() {\n        Assert.assertNull(JSONPath.eval(null, \"$.keySet()\"));\n        Set<?> keySet = (Set<?>)JSONPath.eval(new HashMap<String, Object>(), \"$.keySet()\");\n        Assert.assertEquals(0, keySet.size());\n    }\n\n    /**\n     * Demo for wiki\n     */\n    @SuppressWarnings(\"unchecked\")\n    public void test_demo() {\n        Entity e = new Entity();\n        e.setId(null);\n        e.setName(\"hello\");\n        Map<String, Entity> map = Collections.singletonMap(\"e\", e);\n        Collection<String> result;\n\n        // id is null, excluded by keySet\n        result = (Collection<String>)JSONPath.eval(map, \"$.e.keySet()\");\n        assertEquals(1, result.size());\n        Assert.assertTrue(result.contains(\"name\"));\n\n        e.setId(1L);\n        result = (Collection<String>)JSONPath.eval(map, \"$.e.keySet()\");\n        Assert.assertEquals(2, result.size());\n        Assert.assertTrue(result.contains(\"id\")); // included\n        Assert.assertTrue(result.contains(\"name\"));\n\n        // Same result\n        Assert.assertEquals(result, JSONPath.keySet(map, \"$.e\"));\n        Assert.assertEquals(result, new JSONPath(\"$.e\").keySet(map));\n    }\n\n    public static class Entity {\n        private Long id;\n        private String name;\n        public Long age;\n\n        public Long getId() {\n            return id;\n        }\n\n        public void setId(Long id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_like.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\n\npublic class JSONPath_like extends TestCase {\n    public void test_like_not_match() throws Exception {\n        assertNull(\n                JSONPath.read(\"{\\\"table\\\":\\\"_order_base\\\"}\", \"[table LIKE 'order_base%']\"));\n    }\n\n    public void test_like_not_match_1() throws Exception {\n        assertEquals(\"{\\\"table\\\":\\\"_order_base\\\"}\",\n                JSONPath.read(\"{\\\"table\\\":\\\"_order_base\\\"}\", \"[table LIKE '_order_base%']\").toString());\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_list.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_list extends TestCase {\n    public void test_list_map() throws Exception {\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"val\", new Object());\n        List list = new ArrayList();\n        list.add(map);\n        Assert.assertSame(map.get(\"val\"), new JSONPath(\"$[0].val\").eval(list));\n        Assert.assertSame(map.get(\"val\"), new JSONPath(\"$[-1].val\").eval(list));\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_list_field.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\npublic class JSONPath_list_field extends TestCase {\n\n    public void test_list_field() throws Exception {\n        JSONPath path = new JSONPath(\"$.name\");\n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(\"wenshao\"));\n        entities.add(new Entity(\"ljw2083\"));\n\n        List<String> names = (List<String>)path.eval(entities);\n        Assert.assertSame(entities.get(0).getName(), names.get(0));\n        Assert.assertSame(entities.get(1).getName(), names.get(1));\n    }\n    \n    public void test_list_field_simple() throws Exception {\n        JSONPath path = new JSONPath(\"name\");\n        \n        List<Entity> entities = new ArrayList<Entity>();\n        entities.add(new Entity(\"wenshao\"));\n        entities.add(new Entity(\"ljw2083\"));\n        \n        List<String> names = (List<String>) path.eval(entities);\n        Assert.assertSame(entities.get(0).getName(), names.get(0));\n        Assert.assertSame(entities.get(1).getName(), names.get(1));\n    }\n\n    public static class Entity {\n\n        private String name;\n\n        public Entity(String name){\n            this.name = name;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_list_multi.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\npublic class JSONPath_list_multi extends TestCase {\n\n    List list = new ArrayList();\n\n    public JSONPath_list_multi(){\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        \n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n    }\n\n    public void test_list_multi() throws Exception {\n        List<Object> result = (List<Object>) new JSONPath(\"$[2,4,5,8,100]\").eval(list);\n        Assert.assertEquals(5, result.size());\n        Assert.assertSame(list.get(2), result.get(0));\n        Assert.assertSame(list.get(4), result.get(1));\n        Assert.assertSame(list.get(5), result.get(2));\n        Assert.assertSame(list.get(8), result.get(3));\n        Assert.assertNull(result.get(4));\n    }\n\n    public void test_list_multi_negative() throws Exception {\n        List<Object> result = (List<Object>) new JSONPath(\"$[-1,-2,-100]\").eval(list);\n        Assert.assertEquals(3, result.size());\n        Assert.assertSame(list.get(9), result.get(0));\n        Assert.assertSame(list.get(8), result.get(1));\n        Assert.assertNull(result.get(2));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_list_range.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\npublic class JSONPath_list_range extends TestCase {\n    public void test_range() throws Exception {\n        List list = new ArrayList();\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        JSONPath path = new JSONPath(\"$[2:4]\");\n        List<Object> result = (List<Object>) path.eval(list);\n        Assert.assertEquals(3, result.size());\n        Assert.assertSame(list.get(2), result.get(0));\n        Assert.assertSame(list.get(3), result.get(1));\n        Assert.assertSame(list.get(4), result.get(2));\n    }\n    \n    public void test_range_1() throws Exception {\n        List list = new ArrayList();\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        JSONPath path = new JSONPath(\"$[:4]\");\n        List<Object> result = (List<Object>) path.eval(list);\n        Assert.assertEquals(5, result.size());\n        Assert.assertSame(list.get(0), result.get(0));\n        Assert.assertSame(list.get(1), result.get(1));\n        Assert.assertSame(list.get(2), result.get(2));\n        Assert.assertSame(list.get(3), result.get(3));\n        Assert.assertSame(list.get(4), result.get(4));\n    }\n    \n    public void test_range_2() throws Exception {\n        List list = new ArrayList();\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n\n        JSONPath path = new JSONPath(\"$[4:]\");\n        List<Object> result = (List<Object>) path.eval(list);\n        Assert.assertEquals(2, result.size());\n        Assert.assertSame(list.get(4), result.get(0));\n        Assert.assertSame(list.get(5), result.get(1));\n    }\n\n    \n    public void test_range_step() throws Exception {\n        List list = new ArrayList();\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        JSONPath path = new JSONPath(\"$[2:8:2]\");\n        List<Object> result = (List<Object>) path.eval(list);\n        Assert.assertEquals(2, result.size());\n        Assert.assertSame(list.get(2), result.get(0));\n        Assert.assertSame(list.get(4), result.get(1));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_list_size.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\npublic class JSONPath_list_size extends TestCase {\n    public void test_list_size() throws Exception {\n        List list = new ArrayList();\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        JSONPath path = new JSONPath(\"$.size()\");\n        Integer result = (Integer) path.eval(list);\n        Assert.assertEquals(list.size(), result.intValue());\n    }\n\n    public void test_list_size2() throws Exception {\n        List list = new ArrayList();\n        list.add(new Object());\n        list.add(new Object());\n        list.add(new Object());\n        JSONPath path = new JSONPath(\"$.size\");\n        Integer result = (Integer) path.eval(list);\n        Assert.assertEquals(list.size(), result.intValue());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_list_size_1.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_list_size_1 extends TestCase {\n    public void test_obj_array() throws Exception {\n        Object[] array = new Object[] {1, 2, 3};\n        JSONPath path = new JSONPath(\"$.size()\");\n        Integer result = (Integer) path.eval(array);\n        Assert.assertEquals(array.length, result.intValue());\n    }\n\n    public void test_int_array() throws Exception {\n        int[] array = new int[] {1, 2, 3};\n        JSONPath path = new JSONPath(\"$.size()\");\n        Integer result = (Integer) path.eval(array);\n        Assert.assertEquals(array.length, result.intValue());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_list_size_2.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_list_size_2 extends TestCase {\n    public void test_map() throws Exception {\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"1001\", 1001);\n        map.put(\"1002\", 1002);\n        JSONPath path = new JSONPath(\"$.size()\");\n        Integer result = (Integer) path.eval(map);\n        Assert.assertEquals(map.size(), result.intValue());\n    }\n\n    public void test_map_null() throws Exception {\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"1001\", 1001);\n        map.put(\"1002\", 1002);\n        map.put(\"1003\", null);\n        JSONPath path = new JSONPath(\"$.size()\");\n        Integer result = (Integer) path.eval(map);\n        Assert.assertEquals(2, result.intValue());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_list_size_3.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_list_size_3 extends TestCase {\n    public void test_java_bean() throws Exception {\n        Model model = new Model();\n        model.id = 1001;\n        model.name = \"wenshao\";\n        JSONPath path = new JSONPath(\"$.size()\");\n        Integer result = (Integer) path.eval(model);\n        Assert.assertEquals(2, result.intValue());\n    }\n    \n    public void test_java_bean_field_null() throws Exception {\n        Model model = new Model();\n        model.id = 1001;\n        model.name = null;\n        JSONPath path = new JSONPath(\"$.size()\");\n        Integer result = (Integer) path.eval(model);\n        Assert.assertEquals(1, result.intValue());\n    }\n    \n    public static class Model {\n        public int id;\n        public String name;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_map_size.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.Collections;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_map_size extends TestCase {\n    public void test_list_size() throws Exception {\n        Assert.assertEquals(0, JSONPath.eval(Collections.emptyMap(), \"$.size\"));\n    }\n\n    public void test_list_size1() throws Exception {\n        Assert.assertEquals(0, JSONPath.eval(Collections.emptyMap(), \"$.size()\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_max.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\nimport java.math.BigDecimal;\n\npublic class JSONPath_max extends TestCase {\n    public void test_max() throws Exception {\n        Object root = JSON.parse(\"[1,3,9, 5, 2, 4]\");\n        assertEquals(9, JSONPath.eval(root, \"$.max()\"));\n    }\n\n    public void test_max_1() throws Exception {\n        Object root = JSON.parse(\"[1,6,7L,3,8,9.1, 5, 2L, 4]\");\n        assertEquals(new BigDecimal(\"9.1\"), JSONPath.eval(root, \"$.max()\"));\n    }\n\n    public void test_max_2() throws Exception {\n        Object root = JSON.parse(\"[1,6,7L,3,3.1D,8,9.1D, 5, 2L, 4]\");\n        assertEquals(9.1D, JSONPath.eval(root, \"$.max()\"));\n    }\n\n    public void test_max_3() throws Exception {\n        Object root = JSON.parse(\"[1,6,7L,3,3.1F,8,9.1F, 5, 2L, 4]\");\n        assertEquals(9.1F, JSONPath.eval(root, \"$.max()\"));\n    }\n\n    public void test_max_4() throws Exception {\n        Object root = JSON.parse(\"['1', '111', '2']\");\n        assertEquals(\"2\", JSONPath.eval(root, \"$.max()\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_min.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\nimport java.math.BigDecimal;\n\npublic class JSONPath_min extends TestCase {\n    public void test_max() throws Exception {\n        Object root = JSON.parse(\"[1,3,9, 5, 2, 4]\");\n        assertEquals(1, JSONPath.eval(root, \"$.min()\"));\n    }\n\n    public void test_max_1() throws Exception {\n        Object root = JSON.parse(\"[1,6,7L,3,8,9.1, 5, 2L, 4]\");\n        assertEquals(1, JSONPath.eval(root, \"$.min()\"));\n    }\n\n    public void test_max_2() throws Exception {\n        Object root = JSON.parse(\"[1,6,7L,3,3.1D,8,9.1F, 5, 2L, 4]\");\n        assertEquals(1, JSONPath.eval(root, \"$.min()\"));\n    }\n\n    public void test_max_3() throws Exception {\n        Object root = JSON.parse(\"[1,6,7L,3,3.1F,8,9.1F, 5, 2L, 4]\");\n        assertEquals(1, JSONPath.eval(root, \"$.min()\"));\n    }\n\n    public void test_max_4() throws Exception {\n        Object root = JSON.parse(\"['1', '111', '2']\");\n        assertEquals(\"1\", JSONPath.eval(root, \"$.min()\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_none_root.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\npublic class JSONPath_none_root extends TestCase {\n\n    public void test_root() throws Exception {\n        List<Object> list = new ArrayList<Object>();\n        list.add(new Object());\n        Assert.assertSame(list.get(0), new JSONPath(\"[0]\").eval(list));\n    }\n\n    public void test_null() throws Exception {\n        Assert.assertNull(new JSONPath(\"name\").eval(null));\n    }\n\n    public void test_map() throws Exception {\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"val\", new Object());\n        Assert.assertSame(map.get(\"val\"), new JSONPath(\"val\").eval(map));\n    }\n    \n    public void test_entity() throws Exception {\n        Entity entity = new Entity();\n        entity.setValue(new Object());\n        Assert.assertSame(entity.getValue(), new JSONPath(\"value\").eval(entity));\n    }\n\n    public static class Entity {\n\n        private Object value;\n\n        public Object getValue() {\n            return value;\n        }\n\n        public void setValue(Object value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_object_filter.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport org.junit.Assert;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSONPath;\n\n\npublic class JSONPath_object_filter extends TestCase {\n    public void test_object_filter() throws Exception {\n        JSONPath path = new JSONPath(\"[id=123]\");\n        \n        Entity entity = new Entity(123, \"ljw2083\");\n        Assert.assertSame(entity, path.eval(entity));\n    }\n    \n\n    public void test_object_filter_not_match() throws Exception {\n        JSONPath path = new JSONPath(\"[id=124]\");\n        \n        Entity entity = new Entity(123, \"ljw2083\");\n        Assert.assertNull(path.eval(entity));\n    }\n\n    public static class Entity {\n\n        private Integer id;\n        private String  name;\n\n        public Entity(Integer id, String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public Integer getId() {\n            return id;\n        }\n\n        public void setId(Integer id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_oracle_compatible_test.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\npublic class JSONPath_oracle_compatible_test\n        extends TestCase\n{\n    public void test_reserve() throws Exception {\n        JSONObject object = JSON.parseObject(str);\n\n        assertEquals(\"Sayings of the Century\", JSONPath.eval(object, \"$.store.book[0].title\"));\n        assertEquals(\"Sayings of the Century\", JSONPath.eval(object, \"$['store']['book'][0]['title']\"));\n    }\n\n\n    public static final String str = \"{\\n\" +\n            \"    \\\"store\\\": {\\n\" +\n            \"        \\\"book\\\": [\\n\" +\n            \"            {\\n\" +\n            \"                \\\"category\\\": \\\"reference\\\",\\n\" +\n            \"\\n\" +\n            \"                \\\"author\\\": \\\"Nigel Rees\\\",\\n\" +\n            \"\\n\" +\n            \"                \\\"title\\\": \\\"Sayings of the Century\\\",\\n\" +\n            \"\\n\" +\n            \"                \\\"price\\\": 8.95\\n\" +\n            \"            },\\n\" +\n            \"            {\\n\" +\n            \"                \\\"category\\\": \\\"fiction\\\",\\n\" +\n            \"                \\\"author\\\": \\\"Evelyn Waugh\\\",\\n\" +\n            \"                \\\"title\\\": \\\"Sword of Honour\\\",\\n\" +\n            \"                \\\"price\\\": 12.99\\n\" +\n            \"            },\\n\" +\n            \"            {\\n\" +\n            \"                \\\"category\\\": \\\"fiction\\\",\\n\" +\n            \"                \\\"author\\\": \\\"Herman Melville\\\",\\n\" +\n            \"                \\\"title\\\": \\\"Moby Dick\\\",\\n\" +\n            \"                \\\"isbn\\\": \\\"0-553-21311-3\\\",\\n\" +\n            \"                \\\"price\\\": 8.99\\n\" +\n            \"            },\\n\" +\n            \"            {\\n\" +\n            \"                \\\"category\\\": \\\"fiction\\\",\\n\" +\n            \"                \\\"author\\\": \\\"J. R. R. Tolkien\\\",\\n\" +\n            \"                \\\"title\\\": \\\"The Lord of the Rings\\\",\\n\" +\n            \"                \\\"isbn\\\": \\\"0-395-19395-8\\\",\\n\" +\n            \"                \\\"price\\\": 22.99\\n\" +\n            \"            }\\n\" +\n            \"        ],\\n\" +\n            \"        \\\"bicycle\\\": {\\n\" +\n            \"            \\\"color\\\": \\\"red\\\",\\n\" +\n            \"            \\\"price\\\": 19.95\\n\" +\n            \"        }\\n\" +\n            \"    },\\n\" +\n            \"    \\\"expensive\\\": 10\\n\" +\n            \"}\";\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_paths_test.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_paths_test extends TestCase {\n    public void test_map() throws Exception {\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"id\", 1001);\n        map.put(\"name\", \"wenshao\");\n        \n        Map<String, Object> paths = JSONPath.paths(map);\n        \n        Assert.assertEquals(3, paths.size());\n        Assert.assertSame(map, paths.get(\"/\"));\n        Assert.assertEquals(1001, paths.get(\"/id\"));\n        Assert.assertEquals(\"wenshao\", paths.get(\"/name\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_paths_test1.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_paths_test1 extends TestCase {\n    public void test_map() throws Exception {\n        List<Object> list = new ArrayList<Object>();\n        list.add(1001);\n        list.add(\"wenshao\");\n        \n        \n        Map<String, Object> paths = JSONPath.paths(list);\n        \n        Assert.assertEquals(3, paths.size());\n        Assert.assertSame(list, paths.get(\"/\"));\n        Assert.assertEquals(1001, paths.get(\"/0\"));\n        Assert.assertEquals(\"wenshao\", paths.get(\"/1\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_paths_test2.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_paths_test2 extends TestCase {\n    public void test_map() throws Exception {\n        Model model = new Model();\n        model.id = 1001;\n        model.name = \"wenshao\";\n        \n        \n        Map<String, Object> paths = JSONPath.paths(model);\n        \n        Assert.assertEquals(3, paths.size());\n        Assert.assertSame(model, paths.get(\"/\"));\n        Assert.assertEquals(1001, paths.get(\"/id\"));\n        Assert.assertEquals(\"wenshao\", paths.get(\"/name\"));\n    }\n    \n    public static class Model {\n        public int id;\n        public String name;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_paths_test3.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_paths_test3 extends TestCase {\n    public void test_map() throws Exception {\n        Model model = new Model();\n        model.id = 1001;\n        model.name = \"wenshao\";\n        model.attributes.put(\"type\", \"employee\");\n        \n        Map<String, Object> paths = JSONPath.paths(model);\n        \n        Assert.assertEquals(5, paths.size());\n        Assert.assertSame(model, paths.get(\"/\"));\n        Assert.assertEquals(1001, paths.get(\"/id\"));\n        Assert.assertEquals(\"wenshao\", paths.get(\"/name\"));\n        Assert.assertSame(model.attributes, paths.get(\"/attributes\"));\n        Assert.assertEquals(\"employee\", paths.get(\"/attributes/type\"));\n    }\n    \n    public static class Model {\n        public int id;\n        public String name;\n        \n        public Map<String, Object> attributes = new HashMap<String, Object>();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_paths_test4.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_paths_test4 extends TestCase {\n    public void test_map() throws Exception {\n        List<Object> list = new ArrayList<Object>();\n        list.add(1001);\n        list.add(\"wenshao\");\n        \n        list.add(Collections.singletonMap(\"type\", \"emp\"));\n        \n        Map<String, Object> paths = JSONPath.paths(list);\n        \n        Assert.assertEquals(5, paths.size());\n        Assert.assertSame(list, paths.get(\"/\"));\n        Assert.assertEquals(1001, paths.get(\"/0\"));\n        Assert.assertEquals(\"wenshao\", paths.get(\"/1\"));\n        Assert.assertSame(list.get(2), paths.get(\"/2\"));\n        Assert.assertSame(((Map)list.get(2)).get(\"type\"), paths.get(\"/2/type\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_paths_test5.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.Map;\n\n/**\n * Created by wuwen on 2016/12/27.\n */\npublic class JSONPath_paths_test5 extends TestCase {\n\n    public void test_array() throws Exception {\n        String[] array = new String[]{\"1001\", \"wenshao\"};\n\n        Map<String, Object> paths = JSONPath.paths(array);\n\n        Assert.assertEquals(3, paths.size());\n        Assert.assertSame(array, paths.get(\"/\"));\n        Assert.assertEquals(\"1001\", paths.get(\"/0\"));\n        Assert.assertEquals(\"wenshao\", paths.get(\"/1\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_remove_test.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_remove_test extends TestCase {\n\n    public void test_remove() throws Exception {\n        Map<String, Object> root = new HashMap<String, Object>();\n        root.put(\"name\", \"wenshao\");\n        root.put(\"salary\", 1234567890);\n        Assert.assertTrue(JSONPath.remove(root, \"/name\"));\n        Assert.assertEquals(1, root.size());\n        Assert.assertFalse(root.containsKey(\"name\"));\n        Assert.assertTrue(root.containsKey(\"salary\"));\n        Assert.assertFalse(JSONPath.remove(root, \"/name\"));\n    }\n\n    public void test_remove_list() throws Exception {\n        List<Object> root = new ArrayList<Object>();\n        root.add(\"wenshao\");\n        root.add(1234567890);\n        \n        Assert.assertTrue(JSONPath.remove(root, \"/0\"));\n        Assert.assertEquals(1, root.size());\n        \n        Assert.assertEquals(1234567890, root.get(0));\n        \n        Assert.assertFalse(JSONPath.remove(root, \"/1\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_reverse_test.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\npublic class JSONPath_reverse_test extends TestCase\n{\n    public void test_reserve() throws Exception {\n        JSONObject object = JSON.parseObject(\"{\\\"id\\\":1001,\\\"name\\\":\\\"ljw\\\",\\\"age\\\":50}\");\n\n        assertEquals(\"[1001,\\\"ljw\\\"]\", JSONPath.reserveToArray(object, \"id\", \"name\").toString());\n        assertEquals(\"[\\\"ljw\\\",1001]\", JSONPath.reserveToArray(object, \"name\", \"id\").toString());\n        String text = JSON.toJSONString(JSONPath.reserveToArray(object, \"name\", \"*\"), SerializerFeature.MapSortField);\n        assertTrue(text.equals(\"[\\\"ljw\\\",[\\\"ljw\\\",1001,50]]\")\n                || text.equals(\"[\\\"ljw\\\",[\\\"ljw\\\",50,1001]]\")\n                || text.equals(\"[\\\"ljw\\\",[50,1001,\\\"ljw\\\"]]\")\n                || text.equals(\"[\\\"ljw\\\",[1001,50,\\\"ljw\\\"]]\")\n                || text.equals(\"[\\\"ljw\\\",[1001,\\\"ljw\\\",50]]\")\n                || text.equals(\"[\\\"ljw\\\",[50,\\\"ljw\\\",1001]]\"));\n    }\n\n    public void test_reserve2() throws Exception {\n        JSONObject object = JSON.parseObject(\"{\\\"id\\\":1001,\\\"name\\\":\\\"ljw\\\",\\\"age\\\":50}\");\n\n        assertEquals(\"{\\\"id\\\":1001,\\\"name\\\":\\\"ljw\\\"}\", JSONPath.reserveToObject(object, \"id\", \"name\").toString());\n        assertEquals(\"{\\\"name\\\":\\\"ljw\\\",\\\"id\\\":1001}\", JSONPath.reserveToObject(object, \"name\", \"id\").toString());\n    }\n\n\n    public void test_reserve3() throws Exception {\n        JSONObject object = JSON.parseObject(\"{\\\"player\\\":{\\\"id\\\":1001,\\\"name\\\":\\\"ljw\\\",\\\"age\\\":50}}\");\n\n        String text = JSON.toJSONString(JSONPath.reserveToObject(object, \"player.id\", \"player.name\"), SerializerFeature.MapSortField);\n        assertEquals(\"{\\\"player\\\":{\\\"id\\\":1001,\\\"name\\\":\\\"ljw\\\"}}\", text);\n        text = JSON.toJSONString(JSONPath.reserveToObject(object, \"player.name\", \"player.id\", \"ab.c\"), SerializerFeature.MapSortField);\n        assertEquals(\"{\\\"player\\\":{\\\"id\\\":1001,\\\"name\\\":\\\"ljw\\\"}}\", text);\n    }\n\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_set.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\nimport com.alibaba.fastjson.JSONPathException;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_set extends TestCase {\n\n    public void test_set() throws Exception {\n        Entity entity = new Entity();\n\n        JSONPath.set(entity, \"$.name\", \"abc\");\n\n        Assert.assertEquals(\"abc\", entity.getName());\n    }\n\n    public void test_set_array() throws Exception {\n        Object[] array = new Object[1];\n\n        JSONPath.set(array, \"[0]\", \"abc\");\n\n        Assert.assertEquals(\"abc\", array[0]);\n    }\n\n    public void test_set_list() throws Exception {\n        List array = new ArrayList();\n        array.add(null);\n        array.add(null);\n\n        JSONPath.set(array, \"[0]\", \"abc\");\n\n        Assert.assertEquals(\"abc\", array.get(0));\n    }\n\n    public void test_root_null() throws Exception {\n        Assert.assertFalse(JSONPath.set(null, \"[0]\", \"abc\"));\n    }\n    \n    public void test_object_not_exits() throws Exception {\n        Map<String, Object> root = new HashMap<String, Object>();\n        root.put(\"values\", null);\n        Assert.assertTrue(JSONPath.set(root, \"$.values[0]\", \"abc\"));\n    }\n\n    public void test_error() throws Exception {\n        Map<String, Object> root = new HashMap<String, Object>();\n        root.put(\"values\", null);\n        JSONPath.set(root, \"$.values[0]\", \"abc\");\n    }\n\n    static class Entity {\n\n        private Integer id;\n        private String  name;\n\n        public Integer getId() {\n            return id;\n        }\n\n        public void setId(Integer id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_set_test2.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_set_test2 extends TestCase {\n\n    public void test_jsonpath() throws Exception {\n        JSONObject rootObject = JSON.parseObject(\"{\\\"array\\\":[{},{},{},{}]}\");\n        JSONPath.set(rootObject, \"$.array[0:].key\", \"123\");\n\n        JSONArray array = rootObject.getJSONArray(\"array\");\n        for (int i = 0; i < array.size(); ++i) {\n            Assert.assertEquals(\"123\", array.getJSONObject(i).get(\"key\"));\n        }\n        System.out.println(rootObject);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_set_test3.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_set_test3 extends TestCase {\n    \n    public void test_jsonpath_leve_1() throws Exception {\n        Map<String, Object> root = new HashMap<String, Object>();\n        \n        JSONPath.set(root, \"/id\", 1001);\n        \n        Assert.assertEquals(1001, JSONPath.eval(root, \"/id\"));\n    }\n\n    public void test_jsonpath() throws Exception {\n        Map<String, Object> root = new HashMap<String, Object>();\n        \n        JSONPath.set(root, \"/a/b/id\", 1001);\n        \n        Assert.assertEquals(1001, JSONPath.eval(root, \"a/b/id\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_set_test4.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_set_test4 extends TestCase {\n    public void test_jsonpath_1() throws Exception {\n        Map<String, Object> root = new HashMap<String, Object>();\n        \n        JSONPath.set(root, \"/a[0]/b\", 1001);\n        \n        Assert.assertEquals(\"{\\\"a\\\":[{\\\"b\\\":1001}]}\", JSON.toJSONString(root));\n        \n        Assert.assertEquals(1001, JSONPath.eval(root, \"/a[0]/b\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_set_test5.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_set_test5 extends TestCase {\n    public void test_jsonpath_1() throws Exception {\n        Map<String, Object> root = new HashMap<String, Object>();\n        \n        JSONPath.set(root, \"/a[0]/b[0]\", 1001);\n        \n        String json = JSON.toJSONString(root);\n        Assert.assertEquals(\"{\\\"a\\\":[{\\\"b\\\":[1001]}]}\", json);\n        Assert.assertEquals(1001, JSONPath.eval(root, \"/a[0]/b[0]\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_set_test6.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic class JSONPath_set_test6 extends TestCase {\n    public void test_jsonpath_1() throws Exception {\n        JSONObject aa= new JSONObject();\n        aa.put(\"app-a\", \"haj \");\n        JSONPath.set(aa, \"$.app\\\\-a\\\\.x\", \"123\");\n        assertEquals(\"haj \", aa.getString(\"app-a\"));\n        assertEquals(\"123\", aa.getString(\"app-a.x\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_set_test7.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\npublic class JSONPath_set_test7 extends TestCase {\n    public void test_jsonpath_1() throws Exception {\n        JSONObject aa= new JSONObject();\n        aa.put(\"val\", \"false\");\n        JSONPath path = JSONPath.compile(\"$.val\");\n\n        path.set(aa, true);\n        assertEquals(true, aa.getBoolean(\"val\").booleanValue());\n\n        path.set(aa, false);\n        assertEquals(false, aa.getBoolean(\"val\").booleanValue());\n    }\n\n    public void test_jsonpath_2() throws Exception {\n        VO aa = new VO();\n        JSONPath path = JSONPath.compile(\"$.val\");\n\n        path.set(aa, true);\n        assertEquals(true, aa.val);\n\n        path.set(aa, false);\n        assertEquals(false, aa.val);\n\n        path.set(aa, \"true\");\n        assertEquals(true, aa.val);\n\n        path.set(aa, \"false\");\n        assertEquals(false, aa.val);\n    }\n\n\n    public static class VO {\n        public boolean val;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_size.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport com.alibaba.fastjson.JSONPathException;\nimport com.alibaba.json.bvt.path.JSONPath_between_int.Entity;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_size extends TestCase {\n\n    public void test_root() throws Exception {\n        List list = new ArrayList();\n        list.add(new Entity(101, \"kiki\"));\n        list.add(new Entity(102, \"ljw2083\"));\n        list.add(new Entity(103, \"ljw2083\"));\n\n        Assert.assertEquals(3, JSONPath.size(list, \"$\"));\n    }\n\n    public void test_path() throws Exception {\n        List list = new ArrayList();\n        list.add(new Entity(101, \"kiki\"));\n        list.add(new Entity(102, \"ljw2083\"));\n        list.add(new Entity(103, \"ljw2083\"));\n\n        JSONObject root = new JSONObject();\n        root.put(\"values\", list);\n\n        Assert.assertEquals(3, JSONPath.size(root, \"$.values\"));\n    }\n\n    public void test_path_size() throws Exception {\n        JSONPath path = JSONPath.compile(\"$\");\n\n        Assert.assertEquals(-1, path.size(null));\n    }\n\n    public void test_path_size_1() throws Exception {\n        List list = new ArrayList();\n        list.add(new Entity(101, \"kiki\"));\n        list.add(new Entity(102, \"ljw2083\"));\n        list.add(new Entity(103, \"ljw2083\"));\n\n        JSONPath path = JSONPath.compile(\"$\");\n\n        Assert.assertEquals(3, path.size(list));\n    }\n\n    public void test_path_size_2() throws Exception {\n        List list = new ArrayList();\n        list.add(new Entity(101, \"kiki\"));\n        list.add(new Entity(102, \"ljw2083\"));\n        list.add(new Entity(103, \"ljw2083\"));\n\n        JSONObject root = new JSONObject();\n        root.put(\"values\", list);\n\n        JSONPath path = JSONPath.compile(\"$.values\");\n\n        Assert.assertEquals(3, path.size(root));\n    }\n\n    public void test_error() throws Exception {\n        ErrorSizeBean obj = new ErrorSizeBean();\n\n        Exception error = null;\n        try {\n            JSONPath.eval(obj, \"$.size()\");\n        } catch (JSONPathException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n        Assert.assertNotNull(error.getCause());\n    }\n\n    public static class ErrorSizeBean {\n\n        public int getId() {\n            throw new IllegalStateException();\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPath_toString.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPath_toString extends TestCase {\n    public void test_toJSONString() throws Exception {\n        Model model = new Model();\n        model.path = new JSONPath(\"$\");\n        String text = JSON.toJSONString(model);\n        Assert.assertEquals(\"{\\\"path\\\":\\\"$\\\"}\", text);\n        \n        JSON.parseObject(text, Model.class);\n    }\n\n    public static class Model {\n        public JSONPath path;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPointTest_0.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.math.BigDecimal;\nimport java.util.List;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\n@SuppressWarnings(\"unchecked\")\npublic class JSONPointTest_0 extends TestCase {\n\n    private JSONObject json;\n\n    protected void setUp() throws Exception {\n        String text = \"{\\\"foo\\\":[\\\"bar\\\",\\\"baz\\\"],\\\"pi\\\":3.1416,\\\"ext\\\":{\\\"ex1\\\":1,\\\"ex2\\\":\\\"abc\\\"}}\";\n        json = JSON.parseObject(text);\n    }\n\n    public void test_list() throws Exception {\n        List<Object> list = (List<Object>) JSONPath.eval(json, \"/foo\");\n        Assert.assertEquals(2, list.size());\n        Assert.assertEquals(\"bar\", list.get(0));\n        Assert.assertEquals(\"baz\", list.get(1));\n    }\n    \n    public void test_list_0() throws Exception {\n        Object val = JSONPath.eval(json, \"/foo/0\");\n        Assert.assertEquals(\"bar\", val);\n    }\n    \n    public void test_list_1() throws Exception {\n        Object val = JSONPath.eval(json, \"/foo/1\");\n        Assert.assertEquals(\"baz\", val);\n    }\n    \n    public void test_key() throws Exception {\n        Object val = JSONPath.eval(json, \"/pi\");\n        Assert.assertEquals(new BigDecimal(\"3.1416\"), val);\n    }\n    \n    public void test_key_1() throws Exception {\n        Object val = JSONPath.eval(json, \"/ext/ex1\");\n        Assert.assertEquals(1, val);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/JSONPointTest_1.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class JSONPointTest_1 extends TestCase {\n\n    private Object json;\n\n    protected void setUp() throws Exception {\n        String text = \"[{\\\"name\\\":\\\"ljw\\\",\\\"age\\\":123}]\";\n        json = JSON.parse(text);\n    }\n\n    \n    public void test_key_1() throws Exception {\n        Object val = JSONPath.eval(json, \"/0/name\");\n        Assert.assertEquals(\"ljw\", val);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/TestSpecial_0.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONPath;\n\n\npublic class TestSpecial_0 extends TestCase {\n    public void test_special() throws Exception {\n        Map<String, Object> vo = new HashMap<String, Object>();\n        \n        vo.put(\"a.b\", 123);\n        \n        Assert.assertEquals((Integer) vo.get(\"a.b\"), (Integer) JSONPath.eval(vo, \"a\\\\.b\"));\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/TestSpecial_1.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONPath;\n\nimport junit.framework.TestCase;\n\npublic class TestSpecial_1 extends TestCase {\n\n    public void test_special() throws Exception {\n        String x = \"{\\\"10.0.0.1\\\":{\\\"region\\\":\\\"xxx\\\"}}\";\n        Object o = JSON.parse(x);\n        Assert.assertTrue(JSONPath.contains(o, \"$.10\\\\.0\\\\.0\\\\.1\"));\n        Assert.assertEquals(\"{\\\"region\\\":\\\"xxx\\\"}\", JSONPath.eval(o, \"$.10\\\\.0\\\\.0\\\\.1\").toString());\n        Assert.assertTrue(JSONPath.contains(o, \"$.10\\\\.0\\\\.0\\\\.1.region\"));\n        Assert.assertEquals(\"xxx\", JSONPath.eval(o, \"$.10\\\\.0\\\\.0\\\\.1.region\"));\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/TestSpecial_2.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic class TestSpecial_2 extends TestCase {\n\n    public void test_special() throws Exception {\n        Model model = new Model();\n        Value value = new Value();\n        model.values.put(\"com.ibatis.sqlmap.client.SqlMapExecutor@queryForObject(String,Object)\", value);\n        model.subInvokes.put(\"com.ibatis.sqlmap.client.SqlMapExecutor@queryForObject(String,Object)\", value);\n\n        String json = JSON.toJSONString(model);\n        System.out.println(json);\n\n        Model m2 = JSON.parseObject(json, Model.class);\n        assertEquals(1, m2.values.size());\n        assertEquals(1, m2.subInvokes.size());\n\n        assertSame(m2.values.values().iterator().next(), m2.subInvokes.values().iterator().next());\n    }\n\n    public static class Model {\n        public Map<String, Value> values = new HashMap<String, Value>();\n        public Map<String, Value> subInvokes = new HashMap<String, Value>();\n    }\n\n    public static class Value {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/TestSpecial_3.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic class TestSpecial_3 extends TestCase {\n\n    public void test_special() throws Exception {\n        String json = \"[{\\\"@type\\\":\\\"NAME_CORRECTION\\\",\\\"value\\\":23}]\";\n        JSONArray array = (JSONArray) JSON.parse(json, Feature.DisableSpecialKeyDetect);\n        Object obj = JSONPath.eval(array, \"[\\\\@type='NAME_CORRECTION']\");\n        assertNotNull(obj);\n    }\n\n    public void test_special_1() throws Exception {\n        String json = \"[{\\\":lang\\\":\\\"NAME_CORRECTION\\\",\\\"value\\\":23}]\";\n        JSONArray array = (JSONArray) JSON.parse(json, Feature.DisableSpecialKeyDetect);\n        Object obj = JSONPath.eval(array, \"[\\\\:lang='NAME_CORRECTION']\");\n        assertNotNull(obj);\n    }\n\n    public void test_special_2() throws Exception {\n        String json = \"{\\\"cpe-item\\\":{\\\"@name\\\":\\\"cpe:/a:google:chrome:4.0.249.19\\\",\\\"cpe-23:cpe23-item\\\":{\\\"@name\\\":\\\"cpe:2.3:a:google:chrome:4.0.249.19:*:*:*:*:*:*:*\\\"},\\\"title\\\":[{\\\"#text\\\":\\\"グーグル クローム 4.0.249.19\\\",\\\"@xml:lang\\\":\\\"ja-JP\\\"},{\\\"#text\\\":\\\"Google Chrome 4.0.249.19\\\",\\\"@xml:lang\\\":\\\"en-US\\\"}]}}\";\n        String path = \"['cpe-item']['title'][\\\\@xml\\\\:lang='en-US']['#text'][0]\";\n        JSONObject object = (JSONObject) JSON.parse(json, Feature.DisableSpecialKeyDetect);\n        Object obj = JSONPath.eval(object, path);\n        assertNotNull(obj);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/TestSpecial_4.java",
    "content": "package com.alibaba.json.bvt.path;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONPath;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\npublic class TestSpecial_4 extends TestCase {\n\n    public void test_special() throws Exception {\n        String json = \"{\\\"大小\\\":123}\";\n        JSONObject object = JSON.parseObject(json);\n        Object obj = JSONPath.eval(object, \"$.大小\");\n        assertEquals(123, obj);\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/extract/JSONPath_extract_0.java",
    "content": "package com.alibaba.json.bvt.path.extract;\n\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\npublic class JSONPath_extract_0 extends TestCase {\n    public void test_0() throws Exception {\n        String json = \"{\\\"id\\\":123,\\\"obj\\\":{\\\"id\\\":123}}\";\n\n        assertEquals(\"{\\\"id\\\":123}\"\n                , JSONPath.extract(json, \"$.obj\")\n                    .toString());\n    }\n\n    public void test_1() throws Exception {\n        String json = \"{\\\"f1\\\":1,\\\"f2\\\":2,\\\"f3\\\":3,\\\"f4\\\":4}\";\n\n        assertEquals(\"2\"\n                , JSONPath.extract(json, \"$.f2\")\n                        .toString());\n    }\n\n    public void test_2() throws Exception {\n        assertEquals(\"{}\"\n                , JSONPath.extract(\"{}\", \"$\")\n                        .toString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/extract/JSONPath_extract_1.java",
    "content": "package com.alibaba.json.bvt.path.extract;\n\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\nimport java.net.InetSocketAddress;\n\npublic class JSONPath_extract_1 extends TestCase {\n    public void test_0() throws Exception {\n        String json = \"[{\\\"id\\\":1001},{\\\"id\\\":1002},{\\\"id\\\":1003},[1],123,-4,\\\"a\\\\\\\"bc\\\"]\";\n\n        assertEquals(\"{\\\"id\\\":1001}\"\n                , JSONPath.extract(json, \"$.0\")\n                    .toString());\n\n        assertEquals(\"{\\\"id\\\":1002}\"\n                , JSONPath.extract(json, \"$.1\")\n                        .toString());\n\n\n        assertEquals(\"{\\\"id\\\":1003}\"\n                , JSONPath.extract(json, \"$.2\")\n                        .toString());\n\n        assertEquals(\"[1]\"\n                , JSONPath.extract(json, \"$.3\")\n                        .toString());\n\n        assertEquals(\"123\"\n                , JSONPath.extract(json, \"$.4\")\n                        .toString());\n\n        assertEquals(\"-4\"\n                , JSONPath.extract(json, \"$.5\")\n                        .toString());\n\n        assertEquals(\"a\\\"bc\"\n                , JSONPath.extract(json, \"$.6\")\n                        .toString());\n    }\n\n    public void test_1() throws Exception {\n        String json = \"[\\\"a\\\\\\\"bc\\\",123]\";\n\n        assertEquals(\"a\\\"bc\"\n                , JSONPath.extract(json, \"$.0\")\n                        .toString());\n\n        assertEquals(\"123\"\n                , JSONPath.extract(json, \"$.1\")\n                        .toString());\n    }\n\n    public void test_2() throws Exception {\n        String json = \"[\\\"a\\\\\\\\bc\\\",123]\";\n\n        assertEquals(\"a\\\\bc\"\n                , JSONPath.extract(json, \"$.0\")\n                        .toString());\n\n        assertEquals(\"123\"\n                , JSONPath.extract(json, \"$.1\")\n                        .toString());\n    }\n\n    public void test_3() throws Exception {\n        String json = \"[\\\"a\\\\\\\"b\\\\\\\\c\\\\\\\"d\\\\\\\"e\\\",123]\";\n\n        assertEquals(\"a\\\"b\\\\c\\\"d\\\"e\"\n                , JSONPath.extract(json, \"$.0\")\n                        .toString());\n\n        assertEquals(\"123\"\n                , JSONPath.extract(json, \"$.1\")\n                        .toString());\n\n        assertNull(JSONPath.extract(json, \"$.2\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/extract/JSONPath_extract_2_book.java",
    "content": "package com.alibaba.json.bvt.path.extract;\n\nimport com.alibaba.fastjson.JSONPath;\nimport com.alibaba.fastjson.util.IOUtils;\nimport junit.framework.TestCase;\n\nimport java.io.InputStream;\nimport java.io.InputStreamReader;\n\npublic class JSONPath_extract_2_book extends TestCase {\n\n    public void test_0() throws Exception {\n        assertEquals(\"[\\\"Nigel Rees\\\",\\\"Evelyn Waugh\\\",\\\"Herman Melville\\\",\\\"J. R. R. Tolkien\\\"]\"\n                , JSONPath.extract(json, \"$.store.book.author\")\n                    .toString());\n    }\n\n    public void test_1() throws Exception {\n        assertEquals(\"[\\\"Nigel Rees\\\",\\\"Evelyn Waugh\\\",\\\"Herman Melville\\\",\\\"J. R. R. Tolkien\\\"]\"\n                , JSONPath.extract(json, \"$.store.book[*].author\")\n                        .toString());\n    }\n\n    public void test_2() throws Exception {\n        assertNull(JSONPath.extract(json, \"$.author\"));\n    }\n\n    public void test_3() throws Exception {\n        assertEquals(\"[\\\"Nigel Rees\\\",\\\"Evelyn Waugh\\\",\\\"Herman Melville\\\",\\\"J. R. R. Tolkien\\\"]\"\n                , JSONPath.extract(json, \"$..author\")\n                        .toString());\n    }\n\n    public void test_4() throws Exception {\n        assertEquals(\"[[{\\\"category\\\":\\\"reference\\\",\\\"author\\\":\\\"Nigel Rees\\\",\\\"title\\\":\\\"Sayings of the Century\\\",\\\"price\\\":8.95},{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"Evelyn Waugh\\\",\\\"title\\\":\\\"Sword of Honour\\\",\\\"price\\\":12.99},{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"Herman Melville\\\",\\\"title\\\":\\\"Moby Dick\\\",\\\"isbn\\\":\\\"0-553-21311-3\\\",\\\"price\\\":8.99},{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"J. R. R. Tolkien\\\",\\\"title\\\":\\\"The Lord of the Rings\\\",\\\"isbn\\\":\\\"0-395-19395-8\\\",\\\"price\\\":22.99}],{\\\"color\\\":\\\"red\\\",\\\"price\\\":19.95}]\"\n                , JSONPath.extract(json, \"$.store.*\")\n                        .toString());\n    }\n\n    public void test_5() throws Exception {\n        assertEquals(\"$.store..price\", \"[8.95,12.99,8.99,22.99,19.95]\"\n                , JSONPath.extract(json, \"$.store..price\")\n                        .toString());\n    }\n\n    public void test_6() throws Exception {\n        assertEquals(\"{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"Herman Melville\\\",\\\"title\\\":\\\"Moby Dick\\\",\\\"isbn\\\":\\\"0-553-21311-3\\\",\\\"price\\\":8.99}\"\n                , JSONPath.extract(json, \"$..book[2]\")\n                        .toString());\n    }\n\n    public void test_7  () throws Exception {\n        assertEquals(\"[{\\\"category\\\":\\\"reference\\\",\\\"author\\\":\\\"Nigel Rees\\\",\\\"title\\\":\\\"Sayings of the Century\\\",\\\"price\\\":8.95},{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"Evelyn Waugh\\\",\\\"title\\\":\\\"Sword of Honour\\\",\\\"price\\\":12.99}]\"\n                , JSONPath.extract(json, \"$..book[0,1]\")\n                        .toString());\n    }\n\n    public void test_8() throws Exception {\n        assertEquals(\"{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"Herman Melville\\\",\\\"title\\\":\\\"Moby Dick\\\",\\\"isbn\\\":\\\"0-553-21311-3\\\",\\\"price\\\":8.99}\"\n                , JSONPath.extract(json, \"$..book[-2]\")\n                        .toString());\n    }\n\n    public void test_9() throws Exception {\n        assertEquals(\"Nigel Rees\"\n                , JSONPath.extract(json, \"$['store']['book'][0]['author']\")\n                        .toString());\n\n        assertEquals(\"Evelyn Waugh\"\n                , JSONPath.extract(json, \"$['store']['book'][1]['author']\")\n                        .toString());\n\n        assertEquals(\"Herman Melville\"\n                , JSONPath.extract(json, \"$['store']['book'][2]['author']\")\n                        .toString());\n\n        assertEquals(\"J. R. R. Tolkien\"\n                , JSONPath.extract(json, \"$['store']['book'][3]['author']\")\n                        .toString());\n    }\n\n    public void test_10() throws Exception {\n        assertEquals(\"[{\\\"category\\\":\\\"reference\\\",\\\"author\\\":\\\"Nigel Rees\\\",\\\"title\\\":\\\"Sayings of the Century\\\",\\\"price\\\":8.95},{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"Herman Melville\\\",\\\"title\\\":\\\"Moby Dick\\\",\\\"isbn\\\":\\\"0-553-21311-3\\\",\\\"price\\\":8.99}]\"\n                , JSONPath.extract(json, \"$.store.book[?(@.price < 10)]\")\n                        .toString());\n    }\n\n    public void test_11() throws Exception {\n        assertEquals(\"10\"\n                , JSONPath.extract(json, \"$.expensive\")\n                        .toString());\n    }\n\n    public void test_12() throws Exception {\n        assertNull(JSONPath.extract(json, \"$.store.book.doesnt_exist\"));\n    }\n\n    public void test_13() throws Exception {\n        assertEquals(\"J. R. R. Tolkien\", JSONPath.extract(json, \"$.store.book[3].author\"));\n    }\n\n    public void test_14() throws Exception {\n        assertEquals(\"[{\\\"category\\\":\\\"reference\\\",\\\"author\\\":\\\"Nigel Rees\\\",\\\"title\\\":\\\"Sayings of the Century\\\",\\\"price\\\":8.95},{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"Evelyn Waugh\\\",\\\"title\\\":\\\"Sword of Honour\\\",\\\"price\\\":12.99},{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"Herman Melville\\\",\\\"title\\\":\\\"Moby Dick\\\",\\\"isbn\\\":\\\"0-553-21311-3\\\",\\\"price\\\":8.99},{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"J. R. R. Tolkien\\\",\\\"title\\\":\\\"The Lord of the Rings\\\",\\\"isbn\\\":\\\"0-395-19395-8\\\",\\\"price\\\":22.99}]\"\n                , JSONPath.extract(json, \"$.store.book\").toString());\n    }\n\n    public void test_15() throws Exception {\n        assertEquals(\"{\\\"category\\\":\\\"reference\\\",\\\"author\\\":\\\"Nigel Rees\\\",\\\"title\\\":\\\"Sayings of the Century\\\",\\\"price\\\":8.95}\"\n                , JSONPath.extract(json, \"$[\\\"store\\\"][\\\"book\\\"][0]\").toString());\n    }\n\n    public void test_16() throws Exception {\n        assertNull(JSONPath.extract(json, \"$.store.object.inner_object.array[0].inner_array[0].x\"));\n    }\n\n    public void test_17() throws Exception {\n        assertEquals(4, JSONPath.extract(json, \"$..book.length()\"));\n    }\n\n\n    private static String json;\n    static {\n        InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"json/book.json\");\n        InputStreamReader reader = new InputStreamReader(is);\n        json = IOUtils.readAll(reader);\n        IOUtils.close(reader);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/extract/JSONPath_extract_3.java",
    "content": "package com.alibaba.json.bvt.path.extract;\n\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\npublic class JSONPath_extract_3 extends TestCase {\n\n    public void test_0() throws Exception {\n        assertEquals(\"male\"\n                , JSONPath.extract(json, \"$[0]['gender']\")\n                    .toString());\n    }\n\n    public void test_1() throws Exception {\n        assertNull(JSONPath.extract(json, \"$[1]['gender']\"));\n    }\n\n    public void test_2() throws Exception {\n        assertEquals(\"ben\"\n                , JSONPath.extract(json, \"$[1]['name']\").toString());\n    }\n\n    private static final String json = \"[\\n\" +\n            \"   {\\n\" +\n            \"      \\\"name\\\" : \\\"john\\\",\\n\" +\n            \"      \\\"gender\\\" : \\\"male\\\"\\n\" +\n            \"   },\\n\" +\n            \"   {\\n\" +\n            \"      \\\"name\\\" : \\\"ben\\\"\\n\" +\n            \"   }\\n\" +\n            \"]\";\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/path/extract/JSONPath_extract_4_multi.java",
    "content": "package com.alibaba.json.bvt.path.extract;\n\nimport com.alibaba.fastjson.JSONPath;\nimport junit.framework.TestCase;\n\npublic class JSONPath_extract_4_multi extends TestCase {\n\n    public void test_0() throws Exception {\n        assertEquals(\"[\\\"male\\\",\\\"john\\\"]\"\n                , JSONPath.extract(json, \"$[0]['gender','name']\")\n                    .toString());\n    }\n    public void test_1() throws Exception {\n        assertEquals(\"[\\\"john\\\",\\\"male\\\"]\"\n                , JSONPath.extract(json, \"$[0]['name','gender']\")\n                    .toString());\n    }\n\n    private static final String json = \"[\\n\" +\n            \"   {\\n\" +\n            \"      \\\"name\\\" : \\\"john\\\",\\n\" +\n            \"      \\\"gender\\\" : \\\"male\\\"\\n\" +\n            \"   },\\n\" +\n            \"   {\\n\" +\n            \"      \\\"name\\\" : \\\"ben\\\"\\n\" +\n            \"   }\\n\" +\n            \"]\";\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/proxy/TestProxy.java",
    "content": "package com.alibaba.json.bvt.proxy;\n\nimport java.lang.reflect.InvocationHandler;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Proxy;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestProxy extends TestCase {\n\n    public void test_0() throws Exception {\n        Object vo = Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), new Class[] {I.class}, new VO());\n        \n        String text = JSON.toJSONString(vo);\n        \n        System.out.println(text);\n    }\n    \n    public static interface I {\n        \n    }\n    \n\n    public static class VO implements InvocationHandler {\n\n        private int    id;\n        private String name;\n\n        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {\n            return null;\n        }\n        \n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n    \n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ref/RefTest.java",
    "content": "package com.alibaba.json.bvt.ref;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class RefTest extends TestCase {\n    \n    public void test_ref() throws Exception {\n        JSONSerializer ser = new JSONSerializer();\n        Assert.assertFalse(ser.containsReference(null));\n    }\n    \n    public void test_array_ref() throws Exception {\n        JSON.toJSONString(new A[] {new A()}, SerializerFeature.DisableCircularReferenceDetect);\n    }\n\n    public class A {\n\n        private A a;\n\n        public A getA() {\n            return a;\n        }\n\n        public void setA(A a) {\n            this.a = a;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ref/RefTest10.java",
    "content": "package com.alibaba.json.bvt.ref;\n\nimport java.util.HashSet;\nimport java.util.Set;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class RefTest10 extends TestCase {\n\n    public void test_bug_for_wanglin() throws Exception {\n        String text = \"{ \\\"schedulerCluster\\\": \\\"xyQuestionImport\\\", \\\"log\\\": { \\\"abilityServiceId\\\": \\\"-1\\\", \\\"abilityServiceVersionId\\\": \\\"-1\\\", \\\"createTime\\\": 1456832040060, \\\"ip\\\": \\\"192.168.1.71\\\", \\\"jobDataMap\\\": { \\\"com.fjhb.context.v1.Context\\\": { \\\"domain\\\": \\\"dev.medical.com\\\", \\\"gUID\\\": \\\"25c5e12ec19946e8a6850237cd8182de\\\", \\\"ip\\\": \\\"127.0.0.1\\\", \\\"organizationId\\\": \\\"-1\\\", \\\"platformId\\\": \\\"2c9180e5520a5e70015214fb2849000a\\\", \\\"platformVersionId\\\": \\\"2c9180e5520a6063015214fc062d0006\\\", \\\"projectId\\\": \\\"2c9180e5520a60630152150b0b4a000e\\\", \\\"recordChain\\\": true, \\\"requestUrl\\\": \\\"http://dev.medical.com:9009/gateway/web/admin/questionIE/questionImport\\\", \\\"subProjectId\\\": \\\"2c9180e5520a606301521596e7070018\\\", \\\"test\\\": false, \\\"unitId\\\": \\\"2c9180e54e7580cd014e801793720010\\\", \\\"userId\\\": \\\"4028823c4e850e60014e853115dc00sa\\\" }, \\\"questionImportDto\\\": { \\\"filePath\\\": \\\"/work/A4Mode2.xls\\\", \\\"organizationId\\\": \\\"-1\\\", \\\"platformId\\\": \\\"2c9180e5520a5e70015214fb2849000a\\\", \\\"platformVersionId\\\": \\\"2c9180e5520a6063015214fc062d0006\\\", \\\"projectId\\\": \\\"2c9180e5520a60630152150b0b4a000e\\\", \\\"subProjectId\\\": \\\"2c9180e5520a606301521596e7070018\\\", \\\"unitId\\\": \\\"-1\\\" }, \\\"questionExcelModeType\\\": 2, \\\"user.job.current.execute.key\\\": \\\"402881c75331cc62015331e732ce0002\\\" }, \\\"jobGroup\\\": \\\"xyQuestionImport\\\", \\\"jobName\\\": \\\"questionImport\\\", \\\"key\\\": \\\"402881c75331cc62015331e732ce0002\\\", \\\"organizationId\\\": \\\"-1\\\", \\\"platformId\\\": \\\"-1\\\", \\\"platformVersionId\\\": \\\"-1\\\", \\\"projectId\\\": \\\"-1\\\", \\\"remark\\\": \\\"\\\\\\\"xyQuestionImport\\\\\\\"集群中名为:\\\\\\\"402881c75331cc62015331ccecbc0000\\\\\\\"的调度器开始运行此任务\\\", \\\"status\\\": \\\"toExecuted\\\", \\\"subProjectId\\\": \\\"-1\\\", \\\"unitId\\\": \\\"-1\\\", \\\"userId\\\": \\\"4028823c4e850e60014e853115dc00sa\\\" }, \\\"context\\\": { \\\"$ref\\\": \\\"$.log.jobDataMap.com.fjhb.context.v1.Context\\\" }, \\\"schedulerName\\\": \\\"402881c75331cc62015331ccecbc0000\\\" }\";;\n        JSONObject jsonObj = JSON.parseObject(text);\n        \n        Assert.assertSame(jsonObj.getJSONObject(\"log\").getJSONObject(\"jobDataMap\").get(\"com.fjhb.context.v1.Context\"), jsonObj.get(\"context\"));\n    }\n\n    public static class VO {\n\n        private A      a;\n        private Set<A> values = new HashSet<A>();\n\n        public A getA() {\n            return a;\n        }\n\n        public void setA(A a) {\n            this.a = a;\n        }\n\n        public Set<A> getValues() {\n            return values;\n        }\n\n        public void setValues(Set<A> values) {\n            this.values = values;\n        }\n\n    }\n\n    public static class A {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ref/RefTest11.java",
    "content": "package com.alibaba.json.bvt.ref;\n\nimport java.util.ArrayList;\nimport java.util.Collection;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class RefTest11 extends TestCase {\n\n    public void test_ref() throws Exception {\n        Department tech = new Department(1, \"技术部\");\n        tech.setRoot(tech);\n        \n        {\n            Department pt = new Department(2, \"平台技术部\");\n            pt.setParent(tech);\n            pt.setRoot(tech);\n            tech.getChildren().add(pt);\n            {\n                Department sysbase = new Department(3, \"系统基础\");\n                sysbase.setParent(pt);\n                sysbase.setRoot(tech);\n                pt.getChildren().add(sysbase);\n            }\n        }\n        {\n            Department cn = new Department(4, \"中文站技术部\");\n            cn.setParent(tech);\n            cn.setRoot(tech);\n            tech.getChildren().add(cn);\n        }\n        \n        {\n            //JSON.toJSONString(tech);\n        }\n        \n        {\n            String prettyText = JSON.toJSONString(tech, SerializerFeature.PrettyFormat);\n            System.out.println(prettyText);\n        \n            String text = JSON.toJSONString(tech);\n            Department dept = JSON.parseObject(text, Department.class);\n            Assert.assertTrue(dept == dept.getRoot());\n            \n            System.out.println(JSON.toJSONString(dept, SerializerFeature.PrettyFormat));\n        }\n    }\n\n    public static class Department {\n\n        private int                    id;\n        private String                 name;\n\n        private Department             parent;\n        private Department             root;\n\n        private Collection<Department> children = new ArrayList<Department>();\n\n        public Department(){\n\n        }\n\n        public Department getRoot() {\n            return root;\n        }\n\n        public void setRoot(Department root) {\n            this.root = root;\n        }\n\n        public Department(int id, String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public Department getParent() {\n            return parent;\n        }\n\n        public void setParent(Department parent) {\n            this.parent = parent;\n        }\n\n        public Collection<Department> getChildren() {\n            return children;\n        }\n\n        public void setChildren(Collection<Department> children) {\n            this.children = children;\n        }\n        \n        public String toString() {\n            return \"{id:\" + id + \",name:\" + name + \"}\";\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ref/RefTest12.java",
    "content": "package com.alibaba.json.bvt.ref;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.ParserConfig;\n\npublic class RefTest12 extends TestCase {\n\n    public void test_0() throws Exception {\n        Entity entity = new Entity(123, new Child());\n        entity.getChild().setParent(entity);\n\n        String text = JSON.toJSONString(entity);\n        System.out.println(text);\n\n        ParserConfig config = new ParserConfig();\n        config.setAsmEnable(false);\n        Entity entity2 = JSON.parseObject(text, Entity.class, config, 0);\n\n        Assert.assertEquals(entity2, entity2.getChild().getParent());\n\n        System.out.println(JSON.toJSONString(entity2));\n    }\n\n    public static class Entity {\n\n        private final int   id;\n        private final Child child;\n\n        @JSONCreator\n        public Entity(@JSONField(name = \"id\") int id, @JSONField(name = \"child\") Child child){\n            super();\n            this.id = id;\n            this.child = child;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public Child getChild() {\n            return child;\n        }\n\n    }\n\n    public static class Child {\n\n        private Entity parent;\n\n        public Entity getParent() {\n            return parent;\n        }\n\n        public void setParent(Entity parent) {\n            this.parent = parent;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ref/RefTest13.java",
    "content": "package com.alibaba.json.bvt.ref;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONCreator;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.ParserConfig;\n\npublic class RefTest13 extends TestCase {\n\n    public void test_0() throws Exception {\n        Entity entity = new Entity(123, new Child());\n        entity.getChild().setParent(entity);\n\n        String text = JSON.toJSONString(entity);\n        System.out.println(text);\n\n        Entity entity2 = JSON.parseObject(text, Entity.class);\n\n        Assert.assertEquals(entity2, entity2.getChild().getParent());\n\n        System.out.println(JSON.toJSONString(entity2));\n    }\n\n    public static class Entity {\n\n        private final int   id;\n        private final Child child;\n\n        @JSONCreator\n        public Entity(@JSONField(name = \"id\") int id, @JSONField(name = \"child\") Child child){\n            super();\n            this.id = id;\n            this.child = child;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public Child getChild() {\n            return child;\n        }\n\n        public String toString() {\n            return \"Model-\" + id;\n        }\n    }\n\n    public static class Child {\n\n        private Entity parent;\n\n        public Child(){\n\n        }\n\n        public Entity getParent() {\n            return parent;\n        }\n\n        public void setParent(Entity parent) {\n            this.parent = parent;\n        }\n\n        public String toString() {\n            return \"Child\";\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ref/RefTest14.java",
    "content": "package com.alibaba.json.bvt.ref;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class RefTest14 extends TestCase {\n\n    public void test_0() throws Exception {\n        Group admin = new Group(\"admin\");\n\n        User jobs = new User(\"jobs\");\n        User sager = new User(\"sager\");\n        User sdh5724 = new User(\"sdh5724\");\n\n        admin.getMembers().add(jobs);\n        jobs.getGroups().add(admin);\n\n        admin.getMembers().add(sager);\n        sager.getGroups().add(admin);\n\n        admin.getMembers().add(sdh5724);\n        sdh5724.getGroups().add(admin);\n        \n        sager.setReportTo(sdh5724);\n        jobs.setReportTo(sdh5724);\n\n        SerializeConfig serializeConfig = new SerializeConfig();\n        serializeConfig.setAsmEnable(false);\n        String text = JSON.toJSONString(admin, serializeConfig, SerializerFeature.PrettyFormat);\n        System.out.println(text);\n        \n        ParserConfig config = new ParserConfig();\n        config.setAsmEnable(false);\n        \n        JSON.parseObject(text, Group.class, config, 0);\n    }\n\n    public static class Group {\n\n        private String     name;\n\n        private List<User> members = new ArrayList<User>();\n\n        public Group(){\n\n        }\n\n        public Group(String name){\n            this.name = name;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public List<User> getMembers() {\n            return members;\n        }\n\n        public void setMembers(List<User> members) {\n            this.members = members;\n        }\n\n        public String toString() {\n            return this.name;\n        }\n    }\n\n    public static class User {\n\n        private String      name;\n\n        private List<Group> groups = new ArrayList<Group>();\n\n        private User        reportTo;\n\n        public User(){\n\n        }\n\n        public User getReportTo() {\n            return reportTo;\n        }\n\n        public void setReportTo(User reportTo) {\n            this.reportTo = reportTo;\n        }\n\n        public User(String name){\n            this.name = name;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public List<Group> getGroups() {\n            return groups;\n        }\n\n        public void setGroups(List<Group> groups) {\n            this.groups = groups;\n        }\n\n        public String toString() {\n            return this.name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ref/RefTest15.java",
    "content": "package com.alibaba.json.bvt.ref;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\n\npublic class RefTest15 extends TestCase {\n    public void test_0 () throws Exception {\n        List<Object> a = new ArrayList<Object>();\n        List<Object> b = new ArrayList<Object>();\n        List<Object> c = new ArrayList<Object>();\n        List<Object> d = new ArrayList<Object>();\n        \n        a.add(b);\n        a.add(c);\n        a.add(d);\n        \n        b.add(a);\n        b.add(c);\n        b.add(d);\n        \n        c.add(a);\n        c.add(b);\n        c.add(d);\n        \n        d.add(a);\n        d.add(b);\n        d.add(c);\n        \n        String text = JSON.toJSONString(a);\n        System.out.println(text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ref/RefTest16.java",
    "content": "package com.alibaba.json.bvt.ref;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class RefTest16 extends TestCase {\n\n    public void test_0() throws Exception {\n\n        Person pA = new Person(\"a\");\n        Person pB = new Person(\"b\");\n\n        Family fA = new Family();\n        fA.setMembers(new Person[] { pA, pB });\n        fA.setMaster(pA);\n\n        Person pC = new Person(\"c\");\n        Person pD = new Person(\"d\");\n        \n        Family fB = new Family();\n        fB.setMembers(new Person[] { pC, pD });\n        fB.setMaster(pC);\n\n        Family[] familyArray = new Family[] { fA, fB };\n        String text = JSON.toJSONString(familyArray);\n        System.out.println(text);\n\n        Family[] result = JSON.parseObject(text, Family[].class);\n\n        Assert.assertSame(result[0].getMaster(), result[0].getMembers()[0]);\n        Assert.assertSame(result[1].getMaster(), result[1].getMembers()[0]);\n\n    }\n\n    public static class Family {\n\n        private Person   master;\n        private Person[] members;\n\n        public Person getMaster() {\n            return master;\n        }\n\n        public void setMaster(Person master) {\n            this.master = master;\n        }\n\n        public Person[] getMembers() {\n            return members;\n        }\n\n        public void setMembers(Person[] members) {\n            this.members = members;\n        }\n\n    }\n\n    public static class Person {\n\n        private String name;\n\n        public Person(){\n\n        }\n\n        public Person(String name){\n            this.name = name;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ref/RefTest17.java",
    "content": "package com.alibaba.json.bvt.ref;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\n\npublic class RefTest17 extends TestCase {\n\n    public void test_0() throws Exception {\n\n        Person pA = new Person(\"a\");\n        Person pB = new Person(\"b\");\n\n        Family fA = new Family();\n        fA.setMembers(new Person[] { pA, pB });\n        fA.setMaster(pA);\n\n        Person pC = new Person(\"c\");\n        Person pD = new Person(\"d\");\n\n        Family fB = new Family();\n        fB.setMembers(new Person[] { pC, pD });\n        fB.setMaster(pC);\n\n        Family[] familyArray = new Family[] { fA, fB };\n        String text = JSON.toJSONString(familyArray, true);\n        System.out.println(text);\n\n        JSONArray array = JSON.parseArray(text);\n\n        Assert.assertSame(array.getJSONObject(0).get(\"master\"), array.getJSONObject(0).getJSONArray(\"members\").get(0));\n        \n        Family family = array.getObject(0, Family.class);\n        Assert.assertNotNull(family.getMembers()[0]);\n        Assert.assertNotNull(family.getMembers()[1]);\n    }\n\n    public static class Family {\n\n        private Person   master;\n        private Person[] members;\n\n        public Person getMaster() {\n            return master;\n        }\n\n        public void setMaster(Person master) {\n            this.master = master;\n        }\n\n        public Person[] getMembers() {\n            return members;\n        }\n\n        public void setMembers(Person[] members) {\n            this.members = members;\n        }\n\n    }\n\n    public static class Person {\n\n        private String name;\n\n        public Person(){\n\n        }\n\n        public Person(String name){\n            this.name = name;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ref/RefTest18.java",
    "content": "package com.alibaba.json.bvt.ref;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class RefTest18 extends TestCase {\n    public void test_array() throws Exception {\n        String text = \"{\\\"b\\\":{},\\\"a\\\":[{\\\"$ref\\\":\\\"$.b\\\"}]}\";\n        \n        JSONObject obj = JSON.parseObject(text);\n        JSONArray array = obj.getJSONArray(\"a\");\n        Assert.assertEquals(1, array.size());\n        Assert.assertNotNull(array.get(0));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ref/RefTest19.java",
    "content": "package com.alibaba.json.bvt.ref;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class RefTest19 extends TestCase {\n    public void test_array() throws Exception {\n        String text = \"{\\\"b\\\":{},\\\"a\\\":{\\\"$ref\\\":\\\"$.b\\\"}}\";\n        \n        JSONObject obj = JSON.parseObject(text);\n        JSONObject a = obj.getJSONObject(\"a\");\n        JSONObject b = obj.getJSONObject(\"b\");\n        Assert.assertSame(a, b);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ref/RefTest2.java",
    "content": "package com.alibaba.json.bvt.ref;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class RefTest2 extends TestCase {\n\n    public void test_ref() throws Exception {\n        Object[] array = new Object[1];\n        array[0] = array;\n        Assert.assertEquals(\"[{\\\"$ref\\\":\\\"@\\\"}]\", JSON.toJSONString(array));\n    }\n\n    public void test_ref_1() throws Exception {\n        Object[] array = new Object[3];\n        array[0] = array;\n        array[1] = new Object();\n        array[2] = new Object();\n        Assert.assertEquals(\"[{\\\"$ref\\\":\\\"@\\\"},{},{}]\", JSON.toJSONString(array));\n    }\n\n    public void test_ref_2() throws Exception {\n        Object[] array = new Object[3];\n        array[0] = new Object();\n        array[1] = array;\n        array[2] = new Object();\n        Assert.assertEquals(\"[{},{\\\"$ref\\\":\\\"@\\\"},{}]\", JSON.toJSONString(array));\n    }\n\n    public void test_ref_3() throws Exception {\n        Object[] array = new Object[3];\n        array[0] = new Object();\n        array[1] = new Object();\n        array[2] = array;\n        Assert.assertEquals(\"[{},{},{\\\"$ref\\\":\\\"@\\\"}]\", JSON.toJSONString(array));\n    }\n\n    public void test_parse() throws Exception {\n        Object[] array2 = JSON.parseObject(\"[{\\\"$ref\\\":\\\"$\\\"}]\", Object[].class);\n        Assert.assertSame(array2, array2[0]);\n    }\n\n    public void test_parse_1() throws Exception {\n        Object[] array2 = JSON.parseObject(\"[{\\\"$ref\\\":\\\"@\\\"}]\", Object[].class);\n        Assert.assertSame(array2, array2[0]);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ref/RefTest20.java",
    "content": "package com.alibaba.json.bvt.ref;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class RefTest20 extends TestCase {\n    public void test_array() throws Exception {\n        String text = \"{\\\"resultObj\\\":{\\\"appId\\\":1161605300000000588,\\\"inputParamList\\\":[],\\\"obj\\\":{\\\"$ref\\\":\\\"$.resultObj\\\"}}}\";\n        \n        JSONObject obj = JSON.parseObject(text);\n        JSONObject resultObj = obj.getJSONObject(\"resultObj\");\n        Assert.assertSame(resultObj, resultObj.get(\"obj\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ref/RefTest21.java",
    "content": "package com.alibaba.json.bvt.ref;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 16/8/23.\n */\npublic class RefTest21 extends TestCase {\n    public void test_ref() throws Exception {\n        String jsonTest = \"{\\\"details\\\":{\\\"type\\\":{\\\"items\\\":{\\\"allOf\\\":[{\\\"$ref\\\":\\\"title\\\",\\\"required\\\":[\\\"iconImg\\\"]}]}}}}\";\n        JSONObject object = JSON.parseObject(jsonTest, Feature.DisableSpecialKeyDetect);\n        System.out.println( object.get( \"details\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ref/RefTest22.java",
    "content": "package com.alibaba.json.bvt.ref;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 16/8/23.\n */\npublic class RefTest22 extends TestCase {\n    public void test_ref() throws Exception {\n        String json = \"{\\\"name\\\":\\\"123\\\",\\\"assetSize\\\":{},\\\"items\\\":[{\\\"id\\\":123}],\\\"refItems\\\":{\\\"$ref\\\":\\\"$.items[0]\\\"}}\";\n        JSONObject root = JSON.parseObject(json);\n        assertSame(root.getJSONArray(\"items\").get(0), root.getJSONObject(\"refItems\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ref/RefTest23.java",
    "content": "package com.alibaba.json.bvt.ref;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 16/8/23.\n */\npublic class RefTest23 extends TestCase {\n    public void test_ref() throws Exception {\n        String json = \"{\\\"$ref\\\":\\\"tmall/item\\\",\\\"id\\\":123}\";\n        JSONObject root = JSON.parseObject(json);\n        assertEquals(\"tmall/item\", root.get(\"$ref\"));\n        assertEquals(123, root.get(\"id\"));\n    }\n\n    public void test_ref_1() throws Exception {\n        String json = \"{\\\"$ref\\\":123}\";\n        JSONObject root = JSON.parseObject(json);\n        assertEquals(123, root.get(\"$ref\"));\n    }\n\n    public void test_ref_2() throws Exception {\n        String json = \"{\\n\" +\n                \"\\t\\\"bbbb\\\\\\\"\\\":{\\n\" +\n                \"\\t\\t\\\"x\\\":\\\"x\\\"\\n\" +\n                \"\\t},\\n\" +\n                \"\\t\\\"aaaa\\\\\\\"\\\":{\\\"$ref\\\":\\\"$.bbbb\\\\\\\\\\\\\\\"\\\"}\\n\" +\n                \"}\";\n        System.out.println(json);\n        JSONObject root = JSON.parseObject(json);\n        assertSame(root.get(\"bbbb\\\\\"), root.get(\"aaaa\\\\\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ref/RefTest24.java",
    "content": "package com.alibaba.json.bvt.ref;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.util.HashMap;\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\n/**\n * Created by wenshao on 16/8/23.\n */\npublic class RefTest24\n        extends TestCase {\n    public void test_ref() throws Exception {\n        ByteCodeDO codeDO = new ByteCodeDO();\n        codeDO.id = 1001;\n\n        Map<String, Object> data = new LinkedHashMap();\n        Map<String, Object> m1 = new LinkedHashMap();\n        m1.put(\"23\\\"299\\\\6 $85@47\", codeDO);\n        Map<String, Object> m2 = new LinkedHashMap();\n        m2.put(\"23299685@47\", codeDO);\n        data.put(\"com.alibaba.extAppConfigs\", m1);\n        data.put(\"com.alibaba.appConfigs\", m2);\n        String str = JSON.toJSONString(data);\n\n        Object o = JSON.parseObject(str, Feature.OrderedField);\n\n        assertEquals(str, JSON.toJSONString(o, SerializerFeature.WriteMapNullValue));\n    }\n\n    public static class ByteCodeDO {\n        public int id;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ref/RefTest3.java",
    "content": "package com.alibaba.json.bvt.ref;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class RefTest3 extends TestCase {\n    \n    public void test_ref() throws Exception {\n        Object[] array = new Object[1];\n        array[0] = array;\n        Assert.assertEquals(\"[{\\\"$ref\\\":\\\"@\\\"}]\", JSON.toJSONString(array));\n    }\n    \n    public void test_parse() throws Exception {\n        Object[] array2 = JSON.parseObject(\"[{\\\"$ref\\\":\\\"$\\\"}]\", Object[].class);\n        Assert.assertSame(array2, array2[0]);\n    }\n    \n    public void test_parse_1() throws Exception {\n        Object[] array2 = JSON.parseObject(\"[{\\\"$ref\\\":\\\"@\\\"}]\", Object[].class);\n        Assert.assertSame(array2, array2[0]);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ref/RefTest4.java",
    "content": "package com.alibaba.json.bvt.ref;\n\nimport java.math.BigDecimal;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class RefTest4 extends TestCase {\n\n    public void test_str() throws Exception {\n        Object[] array = new Object[2];\n        array[0] = \"abc\";\n        array[1] = array[0];\n        Assert.assertEquals(\"[\\\"abc\\\",\\\"abc\\\"]\", JSON.toJSONString(array));\n    }\n\n    public void test_decimal() throws Exception {\n        Object[] array = new Object[2];\n        array[0] = new BigDecimal(\"123\");\n        array[1] = array[0];\n        Assert.assertEquals(\"[123,123]\", JSON.toJSONString(array));\n    }\n    \n    public void test_integer() throws Exception {\n        Object[] array = new Object[2];\n        array[0] = Integer.valueOf(123);\n        array[1] = array[0];\n        Assert.assertEquals(\"[123,123]\", JSON.toJSONString(array));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ref/RefTest5.java",
    "content": "package com.alibaba.json.bvt.ref;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\n\npublic class RefTest5 extends TestCase {\n    \n    public void test_ref() throws Exception {\n        Object[] array = new Object[1];\n        array[0] = new Object[] { array };\n        Assert.assertEquals(\"[[{\\\"$ref\\\":\\\"..\\\"}]]\", JSON.toJSONString(array));\n    }\n    \n    public void test_parse() throws Exception {\n        Object[] array2 = JSON.parseObject(\"[[{\\\"$ref\\\":\\\"..\\\"}]]\", Object[].class);\n        JSONArray item = (JSONArray) array2[0];\n        Assert.assertSame(item, item.get(0));\n    }\n    \n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ref/RefTest6.java",
    "content": "package com.alibaba.json.bvt.ref;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class RefTest6 extends TestCase {\n\n    /**\n     * A -> B -> C -> B -> A\n     * \n     * @throws Exception\n     */\n    public void test_0() throws Exception {\n        A a = new A();\n        B b = new B();\n        C c = new C();\n        a.setB(b);\n        b.setC(c);\n        c.setB(b);\n        b.setA(a);\n        JSONObject jsonObject = new JSONObject();\n        jsonObject.put(\"a\", a);\n        jsonObject.put(\"c\", c);\n\n        String text = JSON.toJSONString(jsonObject, SerializerFeature.PrettyFormat);\n        System.out.println(text);\n    }\n\n    private class A {\n\n        private B b;\n\n        public B getB() {\n            return b;\n        }\n\n        public void setB(B b) {\n            this.b = b;\n        }\n    }\n\n    private class B {\n\n        private C c;\n        private A a;\n\n        public C getC() {\n            return c;\n        }\n\n        public void setC(C c) {\n            this.c = c;\n        }\n\n        public A getA() {\n            return a;\n        }\n\n        public void setA(A a) {\n            this.a = a;\n        }\n    }\n\n    private class C {\n\n        private B b;\n\n        public B getB() {\n            return b;\n        }\n\n        public void setB(B b) {\n            this.b = b;\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ref/RefTest7.java",
    "content": "package com.alibaba.json.bvt.ref;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class RefTest7 extends TestCase {\n\n    public void test_bug_for_juqkai() throws Exception {\n\n        VO vo = new VO();\n        C c = new C();\n        vo.setA(new A(c));\n        vo.setB(new B(c));\n\n        VO[] root = new VO[] { vo };\n\n        String text = JSON.toJSONString(root);\n        System.out.println(text);\n\n        VO[] array2 = JSON.parseObject(text, VO[].class);\n        Assert.assertEquals(1, array2.length);\n        Assert.assertNotNull(array2[0].getA());\n        Assert.assertNotNull(array2[0].getB());\n        Assert.assertNotNull(array2[0].getA().getC());\n        Assert.assertNotNull(array2[0].getB().getC());\n        Assert.assertSame(array2[0].getA().getC(), array2[0].getB().getC());\n    }\n\n    public static class VO {\n\n        private A a;\n        private B b;\n\n        public A getA() {\n            return a;\n        }\n\n        public void setA(A a) {\n            this.a = a;\n        }\n\n        public B getB() {\n            return b;\n        }\n\n        public void setB(B b) {\n            this.b = b;\n        }\n\n    }\n\n    public static class A {\n\n        private C c;\n\n        public A(){\n\n        }\n\n        public A(C c){\n            this.c = c;\n        }\n\n        public C getC() {\n            return c;\n        }\n\n        public void setC(C c) {\n            this.c = c;\n        }\n\n    }\n\n    public static class B {\n\n        private C c;\n\n        public B(){\n\n        }\n\n        public B(C c){\n            this.c = c;\n        }\n\n        public C getC() {\n            return c;\n        }\n\n        public void setC(C c) {\n            this.c = c;\n        }\n    }\n\n    public static class C {\n\n        public C(){\n\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ref/RefTest8.java",
    "content": "package com.alibaba.json.bvt.ref;\n\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class RefTest8 extends TestCase {\n\n    public void test_bug_for_juqkai() throws Exception {\n\n        C c = new C();\n \n        Map<String, Object> a = Collections.<String,Object>singletonMap(\"c\", c);\n        Map<String, Object> b = Collections.<String,Object>singletonMap(\"c\", c);\n        Map<String, Object> vo = new HashMap<String, Object>();\n        vo.put(\"a\", a);\n        vo.put(\"b\", b);\n\n        Object[] root = new Object[] { vo };\n\n        String text = JSON.toJSONString(root);\n        System.out.println(text);\n\n        VO[] array2 = JSON.parseObject(text, VO[].class);\n        Assert.assertEquals(1, array2.length);\n        Assert.assertNotNull(array2[0].getA());\n        Assert.assertNotNull(array2[0].getB());\n        Assert.assertNotNull(array2[0].getA().getC());\n        Assert.assertNotNull(array2[0].getB().getC());\n        Assert.assertSame(array2[0].getA().getC(), array2[0].getB().getC());\n    }\n\n    private static class VO {\n\n        private A a;\n        private B b;\n\n        public A getA() {\n            return a;\n        }\n\n        public void setA(A a) {\n            this.a = a;\n        }\n\n        public B getB() {\n            return b;\n        }\n\n        public void setB(B b) {\n            this.b = b;\n        }\n\n    }\n\n    private static class A {\n\n        private C c;\n\n        public A(){\n\n        }\n\n        public A(C c){\n            this.c = c;\n        }\n\n        public C getC() {\n            return c;\n        }\n\n        public void setC(C c) {\n            this.c = c;\n        }\n\n    }\n\n    private static class B {\n\n        private C c;\n\n        public B(){\n\n        }\n\n        public B(C c){\n            this.c = c;\n        }\n\n        public C getC() {\n            return c;\n        }\n\n        public void setC(C c) {\n            this.c = c;\n        }\n    }\n\n    private static class C {\n\n        public C(){\n\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ref/RefTest9.java",
    "content": "package com.alibaba.json.bvt.ref;\n\nimport java.util.HashSet;\nimport java.util.Set;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class RefTest9 extends TestCase {\n\n    public void test_bug_for_wanglin() throws Exception {\n        VO vo = new VO();\n        A a = new A();\n        vo.setA(a);\n        vo.getValues().add(a);\n\n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"a\\\":{},\\\"values\\\":[{\\\"$ref\\\":\\\"$.a\\\"}]}\", text);\n        \n        VO vo2 = JSON.parseObject(text, VO.class);\n    }\n\n    public static class VO {\n\n        private A      a;\n        private Set<A> values = new HashSet<A>();\n\n        public A getA() {\n            return a;\n        }\n\n        public void setA(A a) {\n            this.a = a;\n        }\n\n        public Set<A> getValues() {\n            return values;\n        }\n\n        public void setValues(Set<A> values) {\n            this.values = values;\n        }\n\n    }\n\n    public static class A {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/ref/RefTest_for_huanxige.java",
    "content": "package com.alibaba.json.bvt.ref;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.io.Serializable;\n\n/**\n * Created by wenshao on 08/02/2017.\n */\npublic class RefTest_for_huanxige extends TestCase {\n    public void test_for_ref() throws Exception {\n//字符串通过其它对象序列化而来，当中涉及循环引用，因此存在$ref\n        String jsonStr=\"{\\\"displayName\\\":\\\"灰度发布\\\",\\\"id\\\":221,\" +\n                \"\\\"name\\\":\\\"灰度\\\",\\\"processInsId\\\":48,\\\"processInstance\\\":{\\\"$ref\\\":\\\"$\" +\n                \".lastSubProcessInstence.parentProcess\\\"},\\\"status\\\":1,\\\"success\\\":true,\" +\n                \"\\\"tail\\\":true,\\\"type\\\":\\\"gray\\\"}\";\n        ProcessNodeInstanceDto a = JSON.parseObject(jsonStr, ProcessNodeInstanceDto.class);//status为空！！！\n        assertNotNull(a.status);\n        assertEquals(1, a.status.intValue());\n    }\n\n    public static class ProcessNodeInstanceDto implements Serializable {\n        private Long id;\n        private Long processInsId;\n        private String name;\n        private String displayName;\n        private Integer status;\n        private String type;\n        private Boolean success;\n        private Boolean tail;\n\n        public Long getId() {\n            return id;\n        }\n        public void setId(Long id) {\n            this.id = id;\n        }\n        public Long getProcessInsId() {\n            return processInsId;\n        }\n        public void setProcessInsId(Long processInsId) {\n            this.processInsId = processInsId;\n        }\n        public String getName() {\n            return name;\n        }\n        public void setName(String name) {\n            this.name = name;\n        }\n        public String getDisplayName() {\n            return displayName;\n        }\n        public void setDisplayName(String displayName) {\n            this.displayName = displayName;\n        }\n        public Integer getStatus() {\n            return status;\n        }\n        public void setStatus(Integer status) {\n            this.status = status;\n        }\n        public String getType() {\n            return type;\n        }\n        public void setType(String type) {\n            this.type = type;\n        }\n        public Boolean getSuccess() {\n            return success;\n        }\n        public void setSuccess(Boolean success) {\n            this.success = success;\n        }\n        public Boolean getTail() {\n            return tail;\n        }\n        public void setTail(Boolean tail) {\n            this.tail = tail;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/AbstractTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.lang.reflect.Type;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\n\npublic class AbstractTest extends TestCase {\n\n    public void test_0() throws Exception {\n        ParserConfig.getGlobalInstance().putDeserializer(A.class, new ADeserializer());\n        VO vo = JSON.parseObject(\"{\\\"a\\\":{\\\"num\\\":1,\\\"name\\\":\\\"bb\\\"}}\", VO.class);\n        Assert.assertTrue(vo.getA() instanceof B);\n    }\n    \n    public void test_1() throws Exception {\n        ParserConfig.getGlobalInstance().putDeserializer(A.class, new ADeserializer());\n        VO vo = JSON.parseObject(\"{\\\"a\\\":{\\\"num\\\":2,\\\"name\\\":\\\"bb\\\"}}\", VO.class);\n        Assert.assertTrue(vo.getA() instanceof C);\n    }\n\n\n    public static class ADeserializer implements ObjectDeserializer {\n\n        @SuppressWarnings(\"unchecked\")\n        public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n            JSONObject json = parser.parseObject();\n            int num = json.getInteger(\"num\");\n            if (num == 1) {\n                return (T) JSON.toJavaObject(json, B.class);\n            } else if (num == 2) {\n                return (T) JSON.toJavaObject(json, C.class);\n            } else {\n                return (T) JSON.toJavaObject(json, A.class);\n            }\n        }\n\n        public int getFastMatchToken() {\n            return JSONToken.LBRACE;\n        }\n\n    }\n\n    public static class VO {\n\n        private A a;\n\n        public A getA() {\n            return a;\n        }\n\n        public void setA(A a) {\n            this.a = a;\n        }\n\n    }\n\n    public static class A {\n\n        private int num;\n\n        public int getNum() {\n            return num;\n        }\n\n        public void setNum(int num) {\n            this.num = num;\n        }\n    }\n\n    public static class B extends A {\n\n        private String name;\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n\n    public static class C extends A {\n\n        public String value;\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/BooleanArraySerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class BooleanArraySerializerTest extends TestCase {\n\n    public void test_0() {\n        Assert.assertEquals(\"{\\\"value\\\":null}\", JSON.toJSONString(new Entity(), SerializerFeature.WriteMapNullValue));\n        Assert.assertEquals(\"{\\\"value\\\":[]}\", JSON.toJSONString(new Entity(), SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty));\n    }\n\n    public static class Entity {\n\n        private boolean[] value;\n\n        public boolean[] getValue() {\n            return value;\n        }\n\n        public void setValue(boolean[] value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/BooleanFieldSerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.lang.reflect.Type;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class BooleanFieldSerializerTest extends TestCase {\n\n    public void test_0() {\n        Assert.assertEquals(\"{\\\"value\\\":null}\", JSON.toJSONString(new Entity(), SerializerFeature.WriteMapNullValue));\n        Assert.assertEquals(\"{\\\"value\\\":false}\", JSON.toJSONString(new Entity(), SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullBooleanAsFalse));\n    }\n\n    public void test_codec_no_asm() throws Exception {\n        Entity v = new Entity();\n\n        SerializeConfig mapping = new SerializeConfig();\n        mapping.setAsmEnable(false);\n\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\n\n        Entity v1 = parseObjectNoAsm(text, Entity.class, JSON.DEFAULT_PARSER_FEATURE);\n\n        Assert.assertEquals(v.getValue(), v1.getValue());\n    }\n\n    public void test_codec() throws Exception {\n        Entity v1 = parseObjectNoAsm(\"{value:1}\", Entity.class, JSON.DEFAULT_PARSER_FEATURE);\n\n        Assert.assertEquals(true, v1.getValue());\n    }\n    \n    public void test_codec_0() throws Exception {\n        Entity v1 = parseObjectNoAsm(\"{value:0}\", Entity.class, JSON.DEFAULT_PARSER_FEATURE);\n\n        Assert.assertEquals(false, v1.getValue());\n    }\n\n    public void test_codec_1() throws Exception {\n        Entity v1 = parseObjectNoAsm(\"{value:'true'}\", Entity.class, JSON.DEFAULT_PARSER_FEATURE);\n\n        Assert.assertEquals(true, v1.getValue());\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    public static final <T> T parseObjectNoAsm(String input, Type clazz, int featureValues, Feature... features) {\n        if (input == null) {\n            return null;\n        }\n\n        for (Feature feature : features) {\n            featureValues = Feature.config(featureValues, feature, true);\n        }\n\n        ParserConfig config = new ParserConfig();\n        config.setAsmEnable(false);\n\n        DefaultJSONParser parser = new DefaultJSONParser(input, config, featureValues);\n        T value = (T) parser.parseObject(clazz);\n\n        if (clazz != JSONArray.class) {\n            parser.close();\n        }\n\n        return (T) value;\n    }\n\n    public static class Entity {\n\n        private Boolean value;\n\n        public Boolean getValue() {\n            return value;\n        }\n\n        public void setValue(Boolean value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/BooleanFieldSerializerTest_primitive.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.lang.reflect.Type;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.json.bvt.serializer.BooleanFieldSerializerTest.Entity;\n\npublic class BooleanFieldSerializerTest_primitive extends TestCase {\n\n    public void test_0() {\n        Assert.assertEquals(\"{\\\"value\\\":false}\", JSON.toJSONString(new Entity(), SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullBooleanAsFalse));\n    }\n\n    public void test_codec_no_asm() throws Exception {\n        Entity v = new Entity();\n\n        SerializeConfig mapping = new SerializeConfig();\n        mapping.setAsmEnable(false);\n\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\n        Assert.assertEquals(\"{\\\"value\\\":false}\", text);\n\n        Entity v1 = JSON.parseObject(text, Entity.class);\n\n        Assert.assertEquals(v.getValue(), v1.getValue());\n    }\n\n    public void test_codec() throws Exception {\n        Entity v1 = parseObjectNoAsm(\"{value:1}\", Entity.class, JSON.DEFAULT_PARSER_FEATURE);\n\n        Assert.assertEquals(true, v1.getValue());\n    }\n\n    public void test_codec_0() throws Exception {\n        Entity v1 = parseObjectNoAsm(\"{value:0}\", Entity.class, JSON.DEFAULT_PARSER_FEATURE);\n\n        Assert.assertEquals(false, v1.getValue());\n    }\n\n    public void test_codec_1() throws Exception {\n        Entity v1 = parseObjectNoAsm(\"{value:'true'}\", Entity.class, JSON.DEFAULT_PARSER_FEATURE);\n\n        Assert.assertEquals(true, v1.getValue());\n    }\n\n    public void test_codec_2() throws Exception {\n        Entity v1 = parseObjectNoAsm(\"{value:null}\", Entity.class, JSON.DEFAULT_PARSER_FEATURE);\n\n        Assert.assertEquals(false, v1.getValue());\n    }\n    \n    public void test_codec_3() throws Exception {\n        Entity v1 = parseObjectNoAsm(\"{value:\\\"\\\"}\", Entity.class, JSON.DEFAULT_PARSER_FEATURE);\n\n        Assert.assertEquals(false, v1.getValue());\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    public static final <T> T parseObjectNoAsm(String input, Type clazz, int featureValues, Feature... features) {\n        if (input == null) {\n            return null;\n        }\n\n        for (Feature feature : features) {\n            featureValues = Feature.config(featureValues, feature, true);\n        }\n\n        ParserConfig config = new ParserConfig();\n        config.setAsmEnable(false);\n\n        DefaultJSONParser parser = new DefaultJSONParser(input, config, featureValues);\n        T value = (T) parser.parseObject(clazz);\n\n        if (clazz != JSONArray.class) {\n            parser.close();\n        }\n\n        return (T) value;\n    }\n\n    public static class Entity {\n\n        private boolean value;\n\n        public boolean getValue() {\n            return value;\n        }\n\n        public void setValue(boolean value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/BooleanFieldTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class BooleanFieldTest extends TestCase {\n\n    public void test_model() throws Exception {\n        Model model = new Model();\n        model.value = true;\n        \n        String text = JSON.toJSONString(model);\n        Assert.assertEquals(\"{\\\"value\\\":true}\", text);\n    }\n    \n    public void test_model_max() throws Exception {\n        Model model = new Model();\n        model.value = false;\n        \n        String text = JSON.toJSONString(model);\n        Assert.assertEquals(\"{\\\"value\\\":false}\", text);\n    }\n\n    public static class Model {\n\n        public boolean value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/BooleanFieldTest2.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.io.StringReader;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONReader;\n\nimport junit.framework.TestCase;\n\npublic class BooleanFieldTest2 extends TestCase {\n\n    public void test_true() throws Exception {\n        String text = \"{\\\"f001\\\":1001,\\\"value\\\":true}\";\n\n        Model model = JSON.parseObject(text, Model.class);\n        Assert.assertTrue(model.value);\n    }\n\n    public void test_false() throws Exception {\n        String text = \"{\\\"f001\\\":1001,\\\"value\\\":false}\";\n\n        Model model = JSON.parseObject(text, Model.class);\n        Assert.assertFalse(model.value);\n    }\n\n    public void test_true_reader() throws Exception {\n        String text = \"{\\\"f001\\\":1001,\\\"value\\\":true}\";\n\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Model model = reader.readObject(Model.class);\n        Assert.assertTrue(model.value);\n        reader.close();\n    }\n\n    public void test_false_reader() throws Exception {\n        String text = \"{\\\"f001\\\":1001,\\\"value\\\":false}\";\n\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Model model = reader.readObject(Model.class);\n        Assert.assertFalse(model.value);\n        reader.close();\n    }\n    \n    public void test_1() throws Exception {\n        String text = \"{\\\"value\\\":1}\";\n\n        Model model = JSON.parseObject(text, Model.class);\n        Assert.assertTrue(model.value);\n    }\n    \n    public void test_0() throws Exception {\n        String text = \"{\\\"value\\\":0}\";\n\n        Model model = JSON.parseObject(text, Model.class);\n        Assert.assertFalse(model.value);\n    }\n    \n    public void test_1_reader() throws Exception {\n        String text = \"{\\\"value\\\":1}\";\n\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Model model = reader.readObject(Model.class);\n        Assert.assertTrue(model.value);\n        reader.close();\n    }\n    \n    public void test_0_reader() throws Exception {\n        String text = \"{\\\"value\\\":0}\";\n\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Model model = reader.readObject(Model.class);\n        Assert.assertFalse(model.value);\n        reader.close();\n    }\n\n    public static class Model {\n\n        public boolean value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/BooleanFieldTest3.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\n/**\n * Created by wuwen on 2016/11/3.\n */\npublic class BooleanFieldTest3 extends TestCase {\n\n    public void test_model() throws Exception {\n        Model model = new Model();\n\n        String text = JSON.toJSONString(model);\n        Assert.assertEquals(\"{\\\"ok\\\":true,\\\"ok2\\\":true,\\\"ok3\\\":true}\", text);\n    }\n\n    public static class Model {\n\n        private Long fail;\n\n        private boolean ok;\n\n        private Boolean ok2;\n\n        private boolean ok3;\n\n        public Long isFail() {\n            return 1L;\n        }\n\n        public boolean getOk() {\n            return true;\n        }\n\n        public boolean isOk() {\n            return false;\n        }\n\n        public Boolean getOk2() {\n            return true;\n        }\n\n        public Boolean isOk2() {\n            return false;\n        }\n\n        public boolean isOk3() {\n            return true;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/BooleanFieldTest_array.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class BooleanFieldTest_array extends TestCase {\n\n    public void test_model_error_t() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[t\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_model_error_tr() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[tr\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_model_error_tru() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[tru\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    \n    public void test_model_error_true_notclose() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[true\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_model_error_false_notclose() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[false\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_model_error_f() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[f\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_model_error_fa() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[fa\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_model_error_fal() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[fal\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    \n    public void test_model_error_fals() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[fals\", Model.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    @JSONType(serialzeFeatures = SerializerFeature.BeanToArray, parseFeatures = Feature.SupportArrayToBean)\n    public static class Model {\n\n        public boolean value;\n        public boolean value1;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/BugTest0.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport java.sql.Date;\r\nimport java.sql.Timestamp;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONException;\r\n\r\npublic class BugTest0 extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        Timestamp t = new Timestamp(System.currentTimeMillis());\r\n\r\n        String text = JSON.toJSONString(t);\r\n\r\n        Timestamp t1 = JSON.parseObject(text, Timestamp.class);\r\n        Assert.assertEquals(t, t1);\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        long t1 = System.currentTimeMillis();\r\n        String text = JSON.toJSONString(t1);\r\n\r\n        Timestamp t2 = JSON.parseObject(text, Timestamp.class);\r\n        Assert.assertEquals(t1, t2.getTime());\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        Date t = new Date(System.currentTimeMillis());\r\n\r\n        String text = JSON.toJSONString(t);\r\n\r\n        Date t1 = JSON.parseObject(text, Date.class);\r\n        Assert.assertEquals(t, t1);\r\n    }\r\n\r\n    public void test_3() throws Exception {\r\n        long t1 = System.currentTimeMillis();\r\n        String text = JSON.toJSONString(t1);\r\n\r\n        Date t2 = JSON.parseObject(text, Date.class);\r\n        Assert.assertEquals(t1, t2.getTime());\r\n    }\r\n\r\n    public void test_4() throws Exception {\r\n        A a = new A();\r\n        a.setDate(new java.sql.Date(System.currentTimeMillis()));\r\n        a.setTime(new java.sql.Timestamp(System.currentTimeMillis()));\r\n        String text = JSON.toJSONString(a);\r\n\r\n        A a1 = JSON.parseObject(text, A.class);\r\n\r\n        Assert.assertEquals(a.getDate(), a1.getDate());\r\n        Assert.assertEquals(a.getTime(), a1.getTime());\r\n    }\r\n\r\n    public void test_error_0() throws Exception {\r\n        Exception error = null;\r\n        try {\r\n            JSON.parseObject(\"\\\"222A\\\"\", Timestamp.class);\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error_1() throws Exception {\r\n        Exception error = null;\r\n        try {\r\n            JSON.parseObject(\"\\\"222B\\\"\", Date.class);\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n    \r\n    public void test_error_3() throws Exception {\r\n        Exception error = null;\r\n        try {\r\n            JSON.parseObject(\"true\", Timestamp.class);\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n    \r\n    public void test_error_4() throws Exception {\r\n        Exception error = null;\r\n        try {\r\n            JSON.parseObject(\"true\", Date.class);\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public static class A {\r\n\r\n        private java.sql.Timestamp time;\r\n        private java.sql.Date      date;\r\n\r\n        public java.sql.Timestamp getTime() {\r\n            return time;\r\n        }\r\n\r\n        public void setTime(java.sql.Timestamp time) {\r\n            this.time = time;\r\n        }\r\n\r\n        public java.sql.Date getDate() {\r\n            return date;\r\n        }\r\n\r\n        public void setDate(java.sql.Date date) {\r\n            this.date = date;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/BugTest1.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport java.util.concurrent.atomic.AtomicBoolean;\r\nimport java.util.concurrent.atomic.AtomicInteger;\r\nimport java.util.concurrent.atomic.AtomicLong;\r\nimport java.util.concurrent.atomic.AtomicReference;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class BugTest1 extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        AtomicBoolean v = new AtomicBoolean();\r\n        Assert.assertEquals(\"false\", JSON.toJSONString(v));\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        AtomicBoolean v = new AtomicBoolean(true);\r\n        Assert.assertEquals(\"true\", JSON.toJSONString(v));\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        AtomicInteger v = new AtomicInteger();\r\n        Assert.assertEquals(\"0\", JSON.toJSONString(v));\r\n    }\r\n\r\n    public void test_3() throws Exception {\r\n        AtomicLong v = new AtomicLong();\r\n        Assert.assertEquals(\"0\", JSON.toJSONString(v));\r\n    }\r\n\r\n    public void test_4() throws Exception {\r\n        AtomicReference<Integer> v = new AtomicReference<Integer>(3);\r\n        Assert.assertEquals(\"3\", JSON.toJSONString(v));\r\n    }\r\n\r\n    public void test_5() throws Exception {\r\n        Assert.assertEquals(\"\\\"java.util.concurrent.atomic.AtomicReference\\\"\", JSON.toJSONString(AtomicReference.class));\r\n    }\r\n\r\n    public void test_7() throws Exception {\r\n        Assert.assertEquals(\"'java.util.concurrent.atomic.AtomicReference'\", JSON.toJSONString(AtomicReference.class, SerializerFeature.UseSingleQuotes));\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/BugTest2.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport junit.framework.TestCase;\r\nimport net.sf.json.JSONObject;\r\n\r\nimport com.alibaba.fastjson.JSONAware;\r\n\r\npublic class BugTest2 extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        JSONObject obj = new JSONObject();\r\n        obj.put(\"a\", new A());\r\n        String text = obj.toString();\r\n\r\n        System.out.println(text);\r\n    }\r\n\r\n    public static class A implements JSONAware {\r\n\r\n        private int    id;\r\n        private String name;\r\n\r\n        private JSONObject toJSONObject() {\r\n            JSONObject json = new JSONObject();\r\n            json.put(\"id\", id);\r\n            json.put(\"name\", name);\r\n            return json;\r\n        }\r\n\r\n        public int getId() {\r\n            return id;\r\n        }\r\n\r\n        public void setId(int id) {\r\n            this.id = id;\r\n        }\r\n\r\n        public String getName() {\r\n            return name;\r\n        }\r\n\r\n        public void setName(String name) {\r\n            this.name = name;\r\n        }\r\n\r\n        public String toJSONString() {\r\n            return toJSONObject().toString();\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/Bug_for_yegaofei.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.FieldSerializer;\nimport com.alibaba.fastjson.serializer.JavaBeanSerializer;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.json.bvtVO.alipay.PlatformDepartmentVO;\nimport junit.framework.TestCase;\n\nimport java.lang.reflect.Field;\n\npublic class Bug_for_yegaofei  extends TestCase {\n    public void test_0() throws Exception {\n        PlatformDepartmentVO vo = new PlatformDepartmentVO();\n        vo.setId(\"xx\");\n        JSON.toJSONString(vo);\n        JavaBeanSerializer serializer = (JavaBeanSerializer) SerializeConfig.globalInstance.getObjectWriter(PlatformDepartmentVO.class);\n        Field field = JavaBeanSerializer.class.getDeclaredField(\"getters\");\n        field.setAccessible(true);\n        FieldSerializer[] getters = (FieldSerializer[]) field.get(serializer);\n        for (FieldSerializer getter : getters) {\n            assertNotNull(getter);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ByteArrayFieldSerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class ByteArrayFieldSerializerTest extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        A a1 = new A();\r\n        a1.setBytes(new byte[] { 1, 2 });\r\n\r\n        Assert.assertEquals(\"{\\\"bytes\\\":\\\"AQI=\\\"}\", JSON.toJSONString(a1));\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        A a1 = new A();\r\n\r\n        Assert.assertEquals(\"{\\\"bytes\\\":null}\", JSON.toJSONString(a1, SerializerFeature.WriteMapNullValue));\r\n    }\r\n\r\n    public static class A {\r\n\r\n        private byte[] bytes;\r\n\r\n        public byte[] getBytes() {\r\n            return bytes;\r\n        }\r\n\r\n        public void setBytes(byte[] bytes) {\r\n            this.bytes = bytes;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ByteArraySerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\nimport com.alibaba.fastjson.util.IOUtils;\r\n\r\npublic class ByteArraySerializerTest extends TestCase {\r\n\r\n    public void test_b_0() {\r\n        char[] buf = new char[4];\r\n        IOUtils.getChars((byte) -127, 4, buf);\r\n    }\r\n\r\n    public void test_0() {\r\n        Assert.assertEquals(\"\\\"\\\"\", JSON.toJSONString(new byte[0]));\r\n        Assert.assertEquals(\"\\\"AQI=\\\"\", JSON.toJSONString(new byte[] { 1, 2 }));\r\n        Assert.assertEquals(\"\\\"AQID\\\"\", JSON.toJSONString(new byte[] { 1, 2, 3 }));\r\n\r\n        Assert.assertEquals(\"1\", JSON.toJSONString((byte) 1));\r\n        Assert.assertEquals(\"1\", JSON.toJSONString((short) 1));\r\n        Assert.assertEquals(\"true\", JSON.toJSONString(true));\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(1);\r\n        out.writeByteArray(new byte[] { 1, 2, 3 });\r\n        Assert.assertEquals(\"\\\"AQID\\\"\", out.toString());\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(100);\r\n        out.writeByteArray(new byte[] { 1, 2, 3 });\r\n        Assert.assertEquals(\"\\\"AQID\\\"\", out.toString());\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ByteArrayTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class ByteArrayTest extends TestCase {\n\n    public void test_bytes() throws Exception {\n        VO vo = new VO();\n\n        SerializeConfig mapping = new SerializeConfig();\n        mapping.setAsmEnable(false);\n        SerializerFeature[] features = { SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty };\n        String text1 = JSON.toJSONString(vo, mapping, features);\n\n        Assert.assertEquals(\"{\\\"value\\\":[]}\", text1);\n        String text2 = JSON.toJSONString(vo, features);\n\n        Assert.assertEquals(\"{\\\"value\\\":[]}\", text2);\n    }\n    \n    public void test_bytes_1() throws Exception {\n        VO vo = new VO();\n        vo.setValue(new byte[] {1, 2, 3});\n\n        SerializeConfig mapping = new SerializeConfig();\n        mapping.setAsmEnable(false);\n        SerializerFeature[] features = { SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty };\n        String text1 = JSON.toJSONString(vo, mapping, features);\n\n        Assert.assertEquals(\"{\\\"value\\\":\\\"AQID\\\"}\", text1);\n        String text2 = JSON.toJSONString(vo, features);\n\n        Assert.assertEquals(\"{\\\"value\\\":\\\"AQID\\\"}\", text2);\n    }\n\n    public static class VO {\n\n        private byte[] value;\n\n        public byte[] getValue() {\n            return value;\n        }\n\n        public void setValue(byte[] value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/CharArraySerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\npublic class CharArraySerializerTest extends TestCase {\n\n    public void test_null() throws Exception {\n        VO vo = new VO();\n        \n        Assert.assertEquals(\"{\\\"value\\\":[]}\", JSON.toJSONString(vo, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty));\n        Assert.assertEquals(\"{\\\"value\\\":null}\", JSON.toJSONString(vo, SerializerFeature.WriteMapNullValue));\n    }\n\n    private static class VO {\n\n        private char[] value;\n\n        public char[] getValue() {\n            return value;\n        }\n\n        public void setValue(char[] value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/CharTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\n\npublic class CharTest extends TestCase {\n\n    public void test_file() throws Exception {\n        char ch = 'a';\n        \n        String text = JSON.toJSONString(ch);\n        \n        Assert.assertEquals(\"\\\"a\\\"\", text);\n        \n        Character c1 = JSON.parseObject(text, Character.class);\n        Character c2 = JSON.parseObject(text, char.class);\n        \n        Assert.assertEquals(ch, c1.charValue());\n        Assert.assertEquals(ch, c2.charValue());\n                \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/CharsetSerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.nio.charset.Charset;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class CharsetSerializerTest extends TestCase {\n\n    public void test_0() {\n        Assert.assertEquals(\"{\\\"value\\\":null}\", JSON.toJSONString(new Entity(), SerializerFeature.WriteMapNullValue));\n    }\n\n    public static class Entity {\n\n        private Charset value;\n\n        public Charset getValue() {\n            return value;\n        }\n\n        public void setValue(Charset value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/CharsetTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.nio.charset.Charset;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class CharsetTest extends TestCase {\n\n    public void test_file() throws Exception {\n        Charset c = Charset.defaultCharset();\n\n        String text = JSON.toJSONString(c);\n\n        Assert.assertEquals(JSON.toJSONString(c.toString()), text);\n\n        Charset c1 = JSON.parseObject(text, Charset.class);\n        Assert.assertEquals(c.toString(), c1.toString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/CircularReferencesTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class CircularReferencesTest extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        A a = new A();\r\n        B b = new B(a);\r\n        a.setB(b);\r\n\r\n        String text = JSON.toJSONString(a);\r\n        A a1 = JSON.parseObject(text, A.class);\r\n        Assert.assertTrue(a1 == a1.getB().getA());\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        A a = new A();\r\n        B b = new B(a);\r\n        a.setB(b);\r\n\r\n        String text = JSON.toJSONString(a, SerializerFeature.UseISO8601DateFormat);\r\n        A a1 = JSON.parseObject(text, A.class);\r\n        Assert.assertTrue(a1 == a1.getB().getA());\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        A a = new A();\r\n        B b = new B(a);\r\n        a.setB(b);\r\n\r\n        String text = JSON.toJSONString(a, true);\r\n        A a1 = JSON.parseObject(text, A.class);\r\n        Assert.assertTrue(a1 == a1.getB().getA());\r\n    }\r\n\r\n    public static class A {\r\n\r\n        private B b;\r\n\r\n        public A(){\r\n        }\r\n\r\n        public A(B b){\r\n            this.b = b;\r\n        }\r\n\r\n        public B getB() {\r\n            return b;\r\n        }\r\n\r\n        public void setB(B b) {\r\n            this.b = b;\r\n        }\r\n\r\n    }\r\n\r\n    public static class B {\r\n\r\n        private A a;\r\n\r\n        public B(){\r\n\r\n        }\r\n\r\n        public B(A a){\r\n            this.a = a;\r\n        }\r\n\r\n        public A getA() {\r\n            return a;\r\n        }\r\n        \r\n        public void setA(A a) {\r\n            this.a = a;\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ClassFieldTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class ClassFieldTest extends TestCase {\n\n    public void test_writer_1() throws Exception {\n        VO vo = JSON.parseObject(\"{\\\"value\\\":\\\"int\\\"}\", VO.class);\n        Assert.assertEquals(int.class, vo.getValue());\n    }\n\n    public static class VO {\n\n        private Class<?> value;\n\n        public Class<?> getValue() {\n            return value;\n        }\n\n        public void setValue(Class<?> value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ClassLoaderTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.io.IOException;\nimport java.lang.reflect.Field;\nimport java.net.URL;\nimport java.util.Enumeration;\nimport java.util.Set;\nimport java.util.Vector;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.util.ServiceLoader;\nimport com.alibaba.json.demo.X;\n\npublic class ClassLoaderTest extends TestCase {\n\n    private ClassLoader ctxLoader;\n\n    protected void setUp() throws Exception {\n        ctxLoader = Thread.currentThread().getContextClassLoader();\n    }\n\n    protected void tearDown() throws Exception {\n        Thread.currentThread().setContextClassLoader(ctxLoader);\n    }\n\n    public void test_error() throws Exception {\n        Field field = ServiceLoader.class.getDeclaredField(\"loadedUrls\");\n        field.setAccessible(true);\n        Set<String> loadedUrls = (Set<String>) field.get(null);\n\n        Thread.currentThread().setContextClassLoader(new MyClassLoader(new ClassCastException()));\n        JSON.toJSONString(new A());\n        \n        loadedUrls.clear();\n\n        Thread.currentThread().setContextClassLoader(new MyClassLoader(new IOException()));\n        JSON.toJSONString(new B());\n\n        loadedUrls.clear();\n\n        Thread.currentThread().setContextClassLoader(new EmptyClassLoader());\n        JSON.toJSONString(new C());\n\n        loadedUrls.clear();\n\n        Thread.currentThread().setContextClassLoader(new ErrorClassLoader());\n        JSON.toJSONString(new D());\n\n        loadedUrls.clear();\n\n        Thread.currentThread().setContextClassLoader(ctxLoader);\n        JSON.toJSONString(new E());\n    }\n\n    public static class EmptyClassLoader extends ClassLoader {\n\n        public Enumeration<URL> getResources(String name) throws IOException {\n            return new Vector<URL>().elements();\n        }\n    }\n\n    public static class ErrorClassLoader extends ClassLoader {\n\n        public Class<?> loadClass(String name) throws ClassNotFoundException {\n            return Object.class;\n        }\n    }\n\n    public static class MyClassLoader extends ClassLoader {\n\n        private final Exception error;\n\n        public MyClassLoader(Exception error){\n            super();\n            this.error = error;\n        }\n\n        public Enumeration<URL> getResources(String name) throws IOException {\n            if (error instanceof IOException) {\n                throw (IOException) error;\n            }\n            throw (RuntimeException) error;\n        }\n    }\n\n    public class A {\n\n    }\n\n    public class B {\n\n    }\n\n    public class C {\n\n    }\n\n    public class D {\n\n    }\n\n    public class E {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ClobSerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.io.InputStream;\nimport java.io.OutputStream;\nimport java.io.Reader;\nimport java.io.StringReader;\nimport java.io.Writer;\nimport java.sql.Clob;\nimport java.sql.SQLException;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class ClobSerializerTest extends TestCase {\n\tpublic void test_clob() throws Exception {\n\t\tAssert.assertEquals(\"\\\"abcdefg中国\\\"\",\n\t\t\t\tJSON.toJSONString(new MockClob(\"abcdefg中国\")));\n\t}\n\n\tpublic void test_clob_null() throws Exception {\n\t\tAssert.assertEquals(\"{\\\"value\\\":null}\", JSON.toJSONString(new VO(),\n\t\t\t\tSerializerFeature.WriteMapNullValue));\n\t}\n\n\tpublic void test_clob_error() throws Exception {\n\t\tException error = null;\n\t\ttry {\n\t\t\tJSON.toJSONString(new MockClob(new SQLException()));\n\t\t} catch (Exception ex) {\n\t\t\terror = ex;\n\t\t}\n\t\tAssert.assertNotNull(error);\n\t}\n\n\t@SuppressWarnings(\"unused\")\n\tprivate static class VO {\n\t\tprivate Clob value;\n\n\t\tpublic Clob getValue() {\n\t\t\treturn value;\n\t\t}\n\n\t\tpublic void setValue(Clob value) {\n\t\t\tthis.value = value;\n\t\t}\n\t}\n\n\tpublic static class MockClob implements Clob {\n\t\tprivate final String text;\n\n\t\tprivate SQLException error;\n\n\t\tpublic MockClob(String text) {\n\t\t\tthis.text = text;\n\t\t}\n\n\t\tpublic MockClob(SQLException error) {\n\t\t\tthis.text = null;\n\t\t\tthis.error = error;\n\t\t}\n\n\t\tpublic SQLException getError() {\n\t\t\treturn error;\n\t\t}\n\n\t\tpublic void setError(SQLException error) {\n\t\t\tthis.error = error;\n\t\t}\n\n\t\tpublic long length() throws SQLException {\n\t\t\t// TODO Auto-generated method stub\n\t\t\treturn 0;\n\t\t}\n\n\t\tpublic String getSubString(long pos, int length) throws SQLException {\n\t\t\t// TODO Auto-generated method stub\n\t\t\treturn null;\n\t\t}\n\n\t\tpublic Reader getCharacterStream() throws SQLException {\n\t\t\tif (error != null) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\treturn new StringReader(text);\n\t\t}\n\n\t\tpublic InputStream getAsciiStream() throws SQLException {\n\t\t\t// TODO Auto-generated method stub\n\t\t\treturn null;\n\t\t}\n\n\t\tpublic long position(String searchstr, long start) throws SQLException {\n\t\t\t// TODO Auto-generated method stub\n\t\t\treturn 0;\n\t\t}\n\n\t\tpublic long position(Clob searchstr, long start) throws SQLException {\n\t\t\t// TODO Auto-generated method stub\n\t\t\treturn 0;\n\t\t}\n\n\t\tpublic int setString(long pos, String str) throws SQLException {\n\t\t\t// TODO Auto-generated method stub\n\t\t\treturn 0;\n\t\t}\n\n\t\tpublic int setString(long pos, String str, int offset, int len)\n\t\t\t\tthrows SQLException {\n\t\t\t// TODO Auto-generated method stub\n\t\t\treturn 0;\n\t\t}\n\n\t\tpublic OutputStream setAsciiStream(long pos) throws SQLException {\n\t\t\t// TODO Auto-generated method stub\n\t\t\treturn null;\n\t\t}\n\n\t\tpublic Writer setCharacterStream(long pos) throws SQLException {\n\t\t\t// TODO Auto-generated method stub\n\t\t\treturn null;\n\t\t}\n\n\t\tpublic void truncate(long len) throws SQLException {\n\t\t\t// TODO Auto-generated method stub\n\n\t\t}\n\n\t\tpublic void free() throws SQLException {\n\t\t\t// TODO Auto-generated method stub\n\n\t\t}\n\n\t\tpublic Reader getCharacterStream(long pos, long length)\n\t\t\t\tthrows SQLException {\n\t\t\t// TODO Auto-generated method stub\n\t\t\treturn null;\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/CollectionSerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Collections;\r\nimport java.util.List;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.serializer.CollectionCodec;\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\n\r\npublic class CollectionSerializerTest extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        CollectionCodec listSerializer = new CollectionCodec();\r\n        listSerializer.write(new JSONSerializer(out), Collections.EMPTY_LIST, null, null, 0);\r\n\r\n        Assert.assertEquals(\"[]\", out.toString());\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        CollectionCodec listSerializer = new CollectionCodec();\r\n        listSerializer.write(new JSONSerializer(out), Collections.singletonList(1), null, null, 0);\r\n\r\n        Assert.assertEquals(\"[1]\", out.toString());\r\n    }\r\n\r\n    public void test_2_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        CollectionCodec listSerializer = new CollectionCodec();\r\n        List<Object> list = new ArrayList<Object>();\r\n        list.add(1);\r\n        list.add(2);\r\n        listSerializer.write(new JSONSerializer(out), list, null, null, 0);\r\n\r\n        Assert.assertEquals(\"[1,2]\", out.toString());\r\n    }\r\n\r\n    public void test_3_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        CollectionCodec listSerializer = new CollectionCodec();\r\n        List<Object> list = new ArrayList<Object>();\r\n        list.add(1);\r\n        list.add(2);\r\n        list.add(3);\r\n        listSerializer.write(new JSONSerializer(out), list, null, null, 0);\r\n\r\n        Assert.assertEquals(\"[1,2,3]\", out.toString());\r\n    }\r\n\r\n    public void test_4_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        CollectionCodec listSerializer = new CollectionCodec();\r\n        List<Object> list = new ArrayList<Object>();\r\n        list.add(1L);\r\n        list.add(2L);\r\n        list.add(3L);\r\n        list.add(Collections.emptyMap());\r\n        listSerializer.write(new JSONSerializer(out), list, null, null, 0);\r\n\r\n        Assert.assertEquals(\"[1,2,3,{}]\", out.toString());\r\n    }\r\n\r\n    public void test_5_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        CollectionCodec listSerializer = new CollectionCodec();\r\n        List<Object> list = new ArrayList<Object>();\r\n        list.add(1L);\r\n        list.add(21474836480L);\r\n        list.add(null);\r\n        list.add(Collections.emptyMap());\r\n        list.add(21474836480L);\r\n        listSerializer.write(new JSONSerializer(out), list, null, null, 0);\r\n\r\n        Assert.assertEquals(\"[1,21474836480,null,{},21474836480]\", out.toString());\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ColorSerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.awt.Color;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.AwtCodec;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class ColorSerializerTest extends TestCase {\n\n    public void test_null() throws Exception {\n        JSONSerializer serializer = new JSONSerializer();\n        Assert.assertEquals(AwtCodec.class, serializer.getObjectWriter(Color.class).getClass());\n\n        VO vo = new VO();\n\n        Assert.assertEquals(\"{\\\"value\\\":null}\", JSON.toJSONString(vo, SerializerFeature.WriteMapNullValue));\n    }\n\n    public void test_rgb() throws Exception {\n        JSONSerializer serializer = new JSONSerializer();\n        Assert.assertEquals(AwtCodec.class, serializer.getObjectWriter(Color.class).getClass());\n\n        VO vo = new VO();\n        vo.setValue(new Color(1,1,1,0));\n\n        Assert.assertEquals(\"{\\\"value\\\":{\\\"r\\\":1,\\\"g\\\":1,\\\"b\\\":1}}\", JSON.toJSONString(vo, SerializerFeature.WriteMapNullValue));\n    }\n    \n    public void test_rgb_getAutowiredFor() throws Exception {\n        \n    }\n\n    private static class VO {\n\n        private Color value;\n\n        public Color getValue() {\n            return value;\n        }\n\n        public void setValue(Color value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ConcurrentHashMapTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.util.Iterator;\nimport java.util.LinkedList;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.concurrent.ConcurrentHashMap;\nimport java.util.concurrent.atomic.AtomicLong;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class ConcurrentHashMapTest extends TestCase {\n\n    public void test_concurrentHashmap() throws Exception {\n        OffsetSerializeWrapper wrapper = new OffsetSerializeWrapper();\n        wrapper.getOffsetTable().put(new MessageQueue(), new AtomicLong(123));\n        String text = JSON.toJSONString(wrapper);\n        Assert.assertEquals(\"{\\\"offsetTable\\\":{{\\\"items\\\":[]}:123}}\", text);\n        \n        OffsetSerializeWrapper wrapper2 = JSON.parseObject(text, OffsetSerializeWrapper.class);\n        Assert.assertEquals(1, wrapper2.getOffsetTable().size());\n        \n        Iterator<Map.Entry<MessageQueue, AtomicLong>> iter = wrapper2.getOffsetTable().entrySet().iterator();\n        Map.Entry<MessageQueue, AtomicLong> entry = iter.next();\n        Assert.assertEquals(0, entry.getKey().getItems().size());\n        Assert.assertEquals(123L, entry.getValue().longValue());\n    }\n\n    public static class OffsetSerializeWrapper {\n\n        private ConcurrentHashMap<MessageQueue, AtomicLong> offsetTable = new ConcurrentHashMap<MessageQueue, AtomicLong>();\n\n        public ConcurrentHashMap<MessageQueue, AtomicLong> getOffsetTable() {\n            return offsetTable;\n        }\n\n        public void setOffsetTable(ConcurrentHashMap<MessageQueue, AtomicLong> offsetTable) {\n            this.offsetTable = offsetTable;\n        }\n\n    }\n\n    public static class MessageQueue {\n\n        private List<Object> items = new LinkedList<Object>();\n\n        public List<Object> getItems() {\n            return items;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ConcurrentHashMapTest2.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.util.Iterator;\nimport java.util.LinkedList;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.concurrent.ConcurrentHashMap;\nimport java.util.concurrent.atomic.AtomicInteger;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class ConcurrentHashMapTest2 extends TestCase {\n\n    public void test_concurrentHashmap() throws Exception {\n        OffsetSerializeWrapper wrapper = new OffsetSerializeWrapper();\n        wrapper.getOffsetTable().put(new MessageQueue(), new AtomicInteger(123));\n        String text = JSON.toJSONString(wrapper);\n        Assert.assertEquals(\"{\\\"offsetTable\\\":{{\\\"items\\\":[]}:123}}\", text);\n        \n        OffsetSerializeWrapper wrapper2 = JSON.parseObject(text, OffsetSerializeWrapper.class);\n        Assert.assertEquals(1, wrapper2.getOffsetTable().size());\n        \n        Iterator<Map.Entry<MessageQueue, AtomicInteger>> iter = wrapper2.getOffsetTable().entrySet().iterator();\n        Map.Entry<MessageQueue, AtomicInteger> entry = iter.next();\n        Assert.assertEquals(0, entry.getKey().getItems().size());\n        Assert.assertEquals(123, entry.getValue().intValue());\n    }\n\n    public static class OffsetSerializeWrapper {\n\n        private ConcurrentHashMap<MessageQueue, AtomicInteger> offsetTable = new ConcurrentHashMap<MessageQueue, AtomicInteger>();\n\n        public ConcurrentHashMap<MessageQueue, AtomicInteger> getOffsetTable() {\n            return offsetTable;\n        }\n\n        public void setOffsetTable(ConcurrentHashMap<MessageQueue, AtomicInteger> offsetTable) {\n            this.offsetTable = offsetTable;\n        }\n\n    }\n\n    public static class MessageQueue {\n\n        private List<Object> items = new LinkedList<Object>();\n\n        public List<Object> getItems() {\n            return items;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ConcurrentHashMapTest3.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.util.Iterator;\nimport java.util.LinkedList;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.concurrent.ConcurrentHashMap;\nimport java.util.concurrent.atomic.AtomicBoolean;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class ConcurrentHashMapTest3 extends TestCase {\n\n    public void test_concurrentHashmap() throws Exception {\n        OffsetSerializeWrapper wrapper = new OffsetSerializeWrapper();\n        wrapper.getOffsetTable().put(new MessageQueue(), new AtomicBoolean(true));\n        String text = JSON.toJSONString(wrapper);\n        Assert.assertEquals(\"{\\\"offsetTable\\\":{{\\\"items\\\":[]}:true}}\", text);\n        \n        OffsetSerializeWrapper wrapper2 = JSON.parseObject(text, OffsetSerializeWrapper.class);\n        Assert.assertEquals(1, wrapper2.getOffsetTable().size());\n        \n        Iterator<Map.Entry<MessageQueue, AtomicBoolean>> iter = wrapper2.getOffsetTable().entrySet().iterator();\n        Map.Entry<MessageQueue, AtomicBoolean> entry = iter.next();\n        Assert.assertEquals(0, entry.getKey().getItems().size());\n        Assert.assertEquals(true, entry.getValue().get());\n    }\n\n    public static class OffsetSerializeWrapper {\n\n        private ConcurrentHashMap<MessageQueue, AtomicBoolean> offsetTable = new ConcurrentHashMap<MessageQueue, AtomicBoolean>();\n\n        public ConcurrentHashMap<MessageQueue, AtomicBoolean> getOffsetTable() {\n            return offsetTable;\n        }\n\n        public void setOffsetTable(ConcurrentHashMap<MessageQueue, AtomicBoolean> offsetTable) {\n            this.offsetTable = offsetTable;\n        }\n\n    }\n\n    public static class MessageQueue {\n\n        private List<Object> items = new LinkedList<Object>();\n\n        public List<Object> getItems() {\n            return items;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ConcurrentHashMapTest4.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.util.Iterator;\nimport java.util.LinkedList;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.concurrent.ConcurrentHashMap;\nimport java.util.concurrent.atomic.AtomicReference;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class ConcurrentHashMapTest4 extends TestCase {\n\n    public void test_concurrentHashmap() throws Exception {\n        OffsetSerializeWrapper wrapper = new OffsetSerializeWrapper();\n        wrapper.getOffsetTable().put(new MessageQueue(), new AtomicReference<A>(new A(true)));\n        String text = JSON.toJSONString(wrapper);\n        Assert.assertEquals(\"{\\\"offsetTable\\\":{{\\\"items\\\":[]}:{\\\"value\\\":true}}}\", text);\n\n        OffsetSerializeWrapper wrapper2 = JSON.parseObject(text, OffsetSerializeWrapper.class);\n        Assert.assertEquals(1, wrapper2.getOffsetTable().size());\n\n        Iterator<Map.Entry<MessageQueue, AtomicReference<A>>> iter = wrapper2.getOffsetTable().entrySet().iterator();\n        Map.Entry<MessageQueue, AtomicReference<A>> entry = iter.next();\n        Assert.assertEquals(0, entry.getKey().getItems().size());\n        Assert.assertEquals(true, entry.getValue().get().isValue());\n    }\n\n    public static class OffsetSerializeWrapper {\n\n        private ConcurrentHashMap<MessageQueue, AtomicReference<A>> offsetTable = new ConcurrentHashMap<MessageQueue, AtomicReference<A>>();\n\n        public ConcurrentHashMap<MessageQueue, AtomicReference<A>> getOffsetTable() {\n            return offsetTable;\n        }\n\n        public void setOffsetTable(ConcurrentHashMap<MessageQueue, AtomicReference<A>> offsetTable) {\n            this.offsetTable = offsetTable;\n        }\n\n    }\n\n    public static class MessageQueue {\n\n        private List<Object> items = new LinkedList<Object>();\n\n        public List<Object> getItems() {\n            return items;\n        }\n\n    }\n\n    public static class A {\n\n        private boolean value;\n\n        public A(){\n\n        }\n\n        public A(boolean value){\n            super();\n            this.value = value;\n        }\n\n        public boolean isValue() {\n            return value;\n        }\n\n        public void setValue(boolean value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ConcurrentHashMapTest5.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.lang.ref.WeakReference;\nimport java.util.Iterator;\nimport java.util.LinkedList;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.concurrent.ConcurrentHashMap;\n\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class ConcurrentHashMapTest5 extends TestCase {\n\n    public void test_concurrentHashmap() throws Exception {\n        OffsetSerializeWrapper wrapper = new OffsetSerializeWrapper();\n        wrapper.offsetTable.put(new MessageQueue(), new WeakReference<A>(new A(true)));\n        String text = JSON.toJSONString(wrapper, new SerializeConfig());\n        Assert.assertEquals(\"{\\\"offsetTable\\\":{{\\\"items\\\":[]}:{\\\"value\\\":true}}}\", text);\n\n        OffsetSerializeWrapper wrapper2 = JSON.parseObject(text, OffsetSerializeWrapper.class);\n        Assert.assertEquals(1, wrapper2.getOffsetTable().size());\n\n        Iterator<Map.Entry<MessageQueue, WeakReference<A>>> iter = wrapper2.getOffsetTable().entrySet().iterator();\n        Map.Entry<MessageQueue, WeakReference<A>> entry = iter.next();\n        Assert.assertEquals(0, entry.getKey().getItems().size());\n        Assert.assertEquals(true, entry.getValue().get().isValue());\n    }\n\n    public static class OffsetSerializeWrapper {\n\n        private ConcurrentHashMap<MessageQueue, WeakReference<A>> offsetTable = new ConcurrentHashMap<MessageQueue, WeakReference<A>>();\n\n        public ConcurrentHashMap<MessageQueue, WeakReference<A>> getOffsetTable() {\n            return offsetTable;\n        }\n\n        public void setOffsetTable(ConcurrentHashMap<MessageQueue, WeakReference<A>> offsetTable) {\n            this.offsetTable = offsetTable;\n        }\n\n    }\n\n    public static class MessageQueue {\n\n        private List<Object> items = new LinkedList<Object>();\n\n        public List<Object> getItems() {\n            return items;\n        }\n\n    }\n\n    public static class A {\n\n        private boolean value;\n\n        public A(){\n\n        }\n\n        public A(boolean value){\n            super();\n            this.value = value;\n        }\n\n        public boolean isValue() {\n            return value;\n        }\n\n        public void setValue(boolean value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ConcurrentHashMapTest6.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.io.Serializable;\nimport java.lang.ref.WeakReference;\nimport java.util.Iterator;\nimport java.util.LinkedList;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.concurrent.ConcurrentHashMap;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class ConcurrentHashMapTest6 extends TestCase {\n\n    public void test_concurrentHashmap() throws Exception {\n        OffsetSerializeWrapper wrapper = new OffsetSerializeWrapper();\n        wrapper.offsetTable.put(new MessageQueue(), new WeakReference<A>(new A(true)));\n        String text = JSON.toJSONString(wrapper);\n        Assert.assertEquals(\"{\\\"offsetTable\\\":{{\\\"items\\\":[]}:{\\\"value\\\":true}}}\", text);\n\n        OffsetSerializeWrapper wrapper2 = JSON.parseObject(text, OffsetSerializeWrapper.class);\n        Assert.assertEquals(1, wrapper2.getOffsetTable().size());\n\n        Iterator<Map.Entry<MessageQueue, WeakReference<A>>> iter = wrapper2.getOffsetTable().entrySet().iterator();\n        Map.Entry<MessageQueue, WeakReference<A>> entry = iter.next();\n        Assert.assertEquals(0, entry.getKey().getItems().size());\n        Assert.assertEquals(true, entry.getValue().get().isValue());\n    }\n\n    public static class OffsetSerializeWrapper {\n\n        private ConcurrentHashMap<MessageQueue, WeakReference<A>> offsetTable = new ConcurrentHashMap<MessageQueue, WeakReference<A>>();\n\n        public ConcurrentHashMap<MessageQueue, WeakReference<A>> getOffsetTable() {\n            return offsetTable;\n        }\n\n        public void setOffsetTable(ConcurrentHashMap<MessageQueue, WeakReference<A>> offsetTable) {\n            this.offsetTable = offsetTable;\n        }\n\n    }\n\n    public static class MessageQueue {\n\n        private List<Serializable> items = new LinkedList<Serializable>();\n\n        public List<Serializable> getItems() {\n            return items;\n        }\n\n    }\n\n    public static class A implements Serializable {\n\n        private boolean value;\n\n        public A(){\n\n        }\n\n        public A(boolean value){\n            super();\n            this.value = value;\n        }\n\n        public boolean isValue() {\n            return value;\n        }\n\n        public void setValue(boolean value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ConcurrentHashMapTest7.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.lang.ref.SoftReference;\nimport java.util.Iterator;\nimport java.util.LinkedList;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.concurrent.ConcurrentHashMap;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class ConcurrentHashMapTest7 extends TestCase {\n\n    public void test_concurrentHashmap() throws Exception {\n        OffsetSerializeWrapper wrapper = new OffsetSerializeWrapper();\n        wrapper.getOffsetTable().put(new MessageQueue(), new SoftReference<A>(new A(true)));\n        String text = JSON.toJSONString(wrapper);\n        Assert.assertEquals(\"{\\\"offsetTable\\\":{{\\\"items\\\":[]}:{\\\"value\\\":true}}}\", text);\n\n        OffsetSerializeWrapper wrapper2 = JSON.parseObject(text, OffsetSerializeWrapper.class);\n        Assert.assertEquals(1, wrapper2.getOffsetTable().size());\n\n        Iterator<Map.Entry<MessageQueue, SoftReference<A>>> iter = wrapper2.getOffsetTable().entrySet().iterator();\n        Map.Entry<MessageQueue, SoftReference<A>> entry = iter.next();\n        Assert.assertEquals(0, entry.getKey().getItems().size());\n        Assert.assertEquals(true, entry.getValue().get().isValue());\n    }\n\n    public static class OffsetSerializeWrapper {\n\n        private ConcurrentHashMap<MessageQueue, SoftReference<A>> offsetTable = new ConcurrentHashMap<MessageQueue, SoftReference<A>>();\n\n        public ConcurrentHashMap<MessageQueue, SoftReference<A>> getOffsetTable() {\n            return offsetTable;\n        }\n\n        public void setOffsetTable(ConcurrentHashMap<MessageQueue, SoftReference<A>> offsetTable) {\n            this.offsetTable = offsetTable;\n        }\n\n    }\n\n    public static class MessageQueue {\n\n        private List<Object> items = new LinkedList<Object>();\n\n        public List<Object> getItems() {\n            return items;\n        }\n\n    }\n\n    public static class A {\n\n        private boolean value;\n\n        public A(){\n\n        }\n\n        public A(boolean value){\n            super();\n            this.value = value;\n        }\n\n        public boolean isValue() {\n            return value;\n        }\n\n        public void setValue(boolean value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/DateFormatSerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class DateFormatSerializerTest extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_date() throws Exception {\n        Assert.assertEquals(\"{\\\"format\\\":null}\", JSON.toJSONString(new VO(), SerializerFeature.WriteMapNullValue));\n    }\n\n    public void test_date_2() throws Exception {\n        SerializeWriter out = new SerializeWriter();\n        SerializeConfig config = new SerializeConfig();\n        JSONSerializer serializer = new JSONSerializer(out, config);\n\n        serializer.config(SerializerFeature.WriteMapNullValue, true);\n        serializer.write(new VO());\n\n        Assert.assertEquals(\"{\\\"format\\\":null}\", out.toString());\n    }\n\n    public void test_date_3() throws Exception {\n        SerializeWriter out = new SerializeWriter();\n        SerializeConfig config = new SerializeConfig();\n        JSONSerializer serializer = new JSONSerializer(out, config);\n\n        serializer.config(SerializerFeature.WriteClassName, true);\n        serializer.write(new VO());\n\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.serializer.DateFormatSerializerTest$VO\\\"}\",\n                            out.toString());\n    }\n\n    public void test_date_4() throws Exception {\n        SerializeWriter out = new SerializeWriter();\n        SerializeConfig config = new SerializeConfig();\n        JSONSerializer serializer = new JSONSerializer(out, config);\n\n        SimpleDateFormat format = new SimpleDateFormat(\"yyyy\");\n        format.setTimeZone(JSON.defaultTimeZone);\n        serializer.write(new VO(format));\n\n        Assert.assertEquals(\"{\\\"format\\\":\\\"yyyy\\\"}\", out.toString());\n        \n        JSON.parseObject(out.toString(), VO.class);\n    }\n\n    private static class VO {\n\n        private SimpleDateFormat format;\n\n        public VO(){\n\n        }\n\n        public VO(SimpleDateFormat format){\n            this.format = format;\n        }\n\n        public SimpleDateFormat getFormat() {\n            return format;\n        }\n\n        public void setFormat(SimpleDateFormat format) {\n            this.format = format;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/DoubleArraySerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\n\r\npublic class DoubleArraySerializerTest extends TestCase {\r\n\r\n    public void test_0() {\r\n        Assert.assertEquals(\"[]\", JSON.toJSONString(new double[0]));\r\n        Assert.assertEquals(\"[null]\", JSON.toJSONString(new double[] { Double.NaN }));\r\n        Assert.assertEquals(\"[1.0,2.0]\", JSON.toJSONString(new double[] { 1, 2 }));\r\n        Assert.assertEquals(\"[1.0,2.0,3.0]\", JSON.toJSONString(new double[] { 1, 2, 3 }));\r\n        Assert.assertEquals(\"[1.0,2.0,3.0,null,null]\", JSON.toJSONString(new double[] { 1, 2, 3, Double.NaN, Double.NaN }));\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/DoubleFormatTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 09/01/2017.\n */\npublic class DoubleFormatTest extends TestCase {\n    public void test_format() throws Exception {\n        Model model = new Model();\n        model.value = 123.45678D;\n\n        String str = JSON.toJSONString(model);\n        assertEquals(\"{\\\"value\\\":123.46}\", str);\n    }\n\n    public static class Model {\n        @JSONField(format = \"0.00\")\n        public double value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/DoubleFormatTest2.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 09/01/2017.\n */\npublic class DoubleFormatTest2 extends TestCase {\n    public void test_format() throws Exception {\n        Model model = new Model();\n        model.value = 123.45678D;\n\n        String str = JSON.toJSONString(model);\n        assertEquals(\"{\\\"value\\\":123.46}\", str);\n    }\n\n    public static class Model {\n        @JSONField(format = \"0.00\")\n        public Double value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/DoubleTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class DoubleTest extends TestCase {\n\n    public void test_double() throws Exception {\n        VO vo = new VO();\n        vo.setF1(Integer.MAX_VALUE);\n        vo.setF2(Double.MAX_VALUE);\n        vo.setF3(Integer.MAX_VALUE);\n        \n        String text = JSON.toJSONString(vo);\n        System.out.println(text);\n        \n        VO vo1 = JSON.parseObject(text, VO.class);\n        \n        Assert.assertEquals(vo.getF1(), vo1.getF1());\n        Assert.assertTrue(vo.getF2() == vo1.getF2());\n        Assert.assertEquals(vo.getF3(), vo1.getF3());\n    }\n\n    public static class VO {\n\n        private int    f1;\n        private double f2;\n        private int    f3;\n\n        public int getF1() {\n            return f1;\n        }\n\n        public void setF1(int f1) {\n            this.f1 = f1;\n        }\n\n        public double getF2() {\n            return f2;\n        }\n\n        public void setF2(double f2) {\n            this.f2 = f2;\n        }\n\n        public int getF3() {\n            return f3;\n        }\n\n        public void setF3(int f3) {\n            this.f3 = f3;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/DoubleTest_custom.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.text.DecimalFormat;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.DoubleSerializer;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\n\npublic class DoubleTest_custom extends TestCase {\n\n    public void test_0() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.put(Double.class, new DoubleSerializer(new DecimalFormat(\"###.##\")));\n        Assert.assertEquals(\"1.12\", JSON.toJSONString(1.123456789D, config));\n    }\n    \n    public void test_1() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.put(Double.class, new DoubleSerializer(\"###.###\"));\n        Assert.assertEquals(\"1.123\", JSON.toJSONString(1.123456789D, config));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/DoubleTest_custom2.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.text.DecimalFormat;\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.DoubleSerializer;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\n\npublic class DoubleTest_custom2 extends TestCase {\n\n    @SuppressWarnings({ \"rawtypes\", \"unchecked\" })\n    public void test_0() throws Exception {\n        Map values = new HashMap();\n        Double v = 9.00;\n        values.put(\"double\", v);\n\n        SerializeConfig config = new SerializeConfig();\n        config.put(Double.class, new DoubleSerializer(new DecimalFormat(\"###.00\")));\n        Assert.assertEquals(\"{\\\"double\\\":9.00}\", JSON.toJSONString(values, config));\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/DupSetterTest.java",
    "content": "/*\n * www.yiji.com Inc.\n * Copyright (c) 2014 All Rights Reserved\n */\n\n/*\n * 修订记录:\n * qzhanbo@yiji.com 2015-03-01 00:55 创建\n *\n */\npackage com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class DupSetterTest extends TestCase {\n\n    public void testEnum() {\n        VO enumTest = new VO();\n        enumTest.setStatus(3);\n        String json = JSONObject.toJSONString(enumTest);\n        JSONObject.parseObject(json, VO.class);\n    }\n\n    public static class VO {\n\n        private Integer status;\n\n        public Integer getStatus() {\n            return status;\n        }\n\n        public void setStatus(Integer status) {\n            this.status = status;\n        }\n\n        public void setStatus(Status status) {\n            throw new IllegalStateException();\n        }\n    }\n\n    public static enum Status {\n                               ENABLE(1);\n\n        private Integer code;\n\n        Status(Integer code){\n            this.code = code;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/DupSetterTest2.java",
    "content": "/*\n * www.yiji.com Inc.\n * Copyright (c) 2014 All Rights Reserved\n */\n\n/*\n * 修订记录:\n * qzhanbo@yiji.com 2015-03-01 00:55 创建\n *\n */\npackage com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class DupSetterTest2 extends TestCase {\n\n    public void testEnum() {\n        VO enumTest = new VO();\n        enumTest.setStatus(3);\n        String json = JSONObject.toJSONString(enumTest);\n        JSONObject.parseObject(json, VO.class);\n    }\n\n    public static class VO {\n\n        private Integer status;\n\n        public Integer getStatus() {\n            return status;\n        }\n\n        public void setStatus(Integer status) {\n            this.status = status;\n        }\n\n        public void setStatus(String status) {\n            throw new IllegalStateException();\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/DupSetterTest3.java",
    "content": "/*\n * www.yiji.com Inc.\n * Copyright (c) 2014 All Rights Reserved\n */\n\n/*\n * 修订记录:\n * qzhanbo@yiji.com 2015-03-01 00:55 创建\n *\n */\npackage com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\n\npublic class DupSetterTest3 extends TestCase {\n\n    public void testEnum() {\n        VO enumTest = new VO();\n        enumTest.status = 3;\n        String json = JSONObject.toJSONString(enumTest);\n        JSONObject.parseObject(json, VO.class);\n    }\n\n    public static class VO {\n\n        public Integer status;\n\n        @JSONField(name = \"status\")\n        public Integer status2;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/DupSetterTest4.java",
    "content": "/*\n * www.yiji.com Inc.\n * Copyright (c) 2014 All Rights Reserved\n */\n\n/*\n * 修订记录:\n * qzhanbo@yiji.com 2015-03-01 00:55 创建\n *\n */\npackage com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\n\npublic class DupSetterTest4 extends TestCase {\n\n    public void testDup() {\n        V1 vo = new V1();\n        vo.status = 3;\n        String json = JSONObject.toJSONString(vo);\n        JSONObject.parseObject(json, V1.class);\n    }\n\n    public static class V0 {\n\n        @JSONField(name=\"status\")\n        public Long status2;\n    }\n\n    public static class V1 extends V0 {\n\n        private Integer status;\n\n        public Integer getStatus() {\n            return status;\n        }\n\n        public void setStatus(Integer status) {\n            this.status = status;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/DupSetterTest5.java",
    "content": "/*\n * www.yiji.com Inc.\n * Copyright (c) 2014 All Rights Reserved\n */\n\n/*\n * 修订记录:\n * qzhanbo@yiji.com 2015-03-01 00:55 创建\n *\n */\npackage com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\n\npublic class DupSetterTest5 extends TestCase {\n\n    public void testDup() {\n        V1 vo = new V1();\n        vo.status = 3;\n        String json = JSONObject.toJSONString(vo);\n        JSONObject.parseObject(json, V1.class);\n    }\n\n    public static class V0 {\n\n        @JSONField(name=\"status\")\n        public long status2;\n    }\n\n    public static class V1 extends V0 {\n\n        private Integer status;\n\n        public Integer getStatus() {\n            return status;\n        }\n\n        public void setStatus(Integer status) {\n            this.status = status;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/DupSetterTest6.java",
    "content": "/*\n * www.yiji.com Inc.\n * Copyright (c) 2014 All Rights Reserved\n */\n\n/*\n * 修订记录:\n * qzhanbo@yiji.com 2015-03-01 00:55 创建\n *\n */\npackage com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class DupSetterTest6 extends TestCase {\n\n    public void testDupSetter() {\n        VO vo = new VO();\n        vo.status = 3;\n        String json = JSONObject.toJSONString(vo);\n        VO vo2 = JSONObject.parseObject(json, VO.class);\n        Assert.assertEquals(3, vo2.status3);\n    }\n\n    public static class VO {\n\n        public int status;\n        private int status2;\n        private int status3;\n\n        public Integer getStatus() {\n            return status;\n        }\n\n        public void setStatus(Integer status) {\n            this.status2 = status;\n        }\n\n        public void setStatus(String status) {\n            this.status3 = Integer.parseInt(status);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/EnumerationSeriliazerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.util.Enumeration;\nimport java.util.Vector;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class EnumerationSeriliazerTest extends TestCase {\n\n    public void test_nullAsEmtpyList() throws Exception {\n        VO e = new VO();\n        Assert.assertEquals(\"{\\\"elements\\\":[]}\", JSON.toJSONString(e, SerializerFeature.WriteMapNullValue,\n                                                                   SerializerFeature.WriteNullListAsEmpty));\n    }\n\n    public void test_null() throws Exception {\n        VO e = new VO();\n        Assert.assertEquals(\"{\\\"elements\\\":null}\", JSON.toJSONString(e, SerializerFeature.WriteMapNullValue));\n    }\n\n    public void test_1() throws Exception {\n        VO e = new VO(new Entity(), new Entity());\n        Assert.assertEquals(\"{\\\"elements\\\":[{},{}]}\", JSON.toJSONString(e, SerializerFeature.WriteMapNullValue));\n    }\n\n    public void test_2() throws Exception {\n        VO e = new VO(new Entity(), new Entity2());\n        Assert.assertEquals(\"{\\\"elements\\\":[{},{\\\"@type\\\":\\\"com.alibaba.json.bvt.serializer.EnumerationSeriliazerTest$Entity2\\\"}]}\",\n                            JSON.toJSONString(e, SerializerFeature.WriteClassName,\n                                              SerializerFeature.NotWriteRootClassName));\n    }\n\n    public void test_3() throws Exception {\n        VO2 e = new VO2(new Entity(), new Entity());\n        Assert.assertEquals(\"{\\\"elements\\\":[{},{}]}\", JSON.toJSONString(e, SerializerFeature.WriteClassName,\n                                                                        SerializerFeature.NotWriteRootClassName));\n    }\n    \n    public void test_4() throws Exception {\n        VO3 e = new VO3(new Entity(), new Entity2());\n        Assert.assertEquals(\"{\\\"elements\\\":[{\\\"@type\\\":\\\"com.alibaba.json.bvt.serializer.EnumerationSeriliazerTest$Entity\\\"},{\\\"@type\\\":\\\"com.alibaba.json.bvt.serializer.EnumerationSeriliazerTest$Entity2\\\"}]}\", JSON.toJSONString(e, SerializerFeature.WriteClassName,\n                                                                        SerializerFeature.NotWriteRootClassName));\n    }\n\n    private static class VO {\n\n        private Enumeration<Entity> elements;\n\n        public VO(Entity... array){\n            if (array.length > 0) {\n                Vector<Entity> vector = new Vector<Entity>();\n                for (Entity item : array) {\n                    vector.add(item);\n                }\n                this.elements = vector.elements();\n            }\n        }\n\n        public Enumeration<Entity> getElements() {\n            return elements;\n        }\n\n        public void setElements(Enumeration<Entity> elements) {\n            this.elements = elements;\n        }\n\n    }\n\n    private static class VO2 extends IVO2<Entity> {\n\n        public VO2(Entity... array){\n            if (array.length > 0) {\n                Vector<Entity> vector = new Vector<Entity>();\n                for (Entity item : array) {\n                    vector.add(item);\n                }\n                this.elements = vector.elements();\n            }\n        }\n\n    }\n    \n    private static class VO3 {\n\n        private Enumeration elements;\n\n        public VO3(Entity... array){\n            if (array.length > 0) {\n                Vector<Entity> vector = new Vector<Entity>();\n                for (Entity item : array) {\n                    vector.add(item);\n                }\n                this.elements = vector.elements();\n            }\n        }\n\n        public Enumeration getElements() {\n            return elements;\n        }\n\n        public void setElements(Enumeration elements) {\n            this.elements = elements;\n        }\n\n    }\n\n    private static abstract class IVO2<T> {\n\n        protected Enumeration<Entity> elements;\n\n        public Enumeration<Entity> getElements() {\n            return elements;\n        }\n\n        public void setElements(Enumeration<Entity> elements) {\n            this.elements = elements;\n        }\n    }\n\n    public static class Entity {\n\n    }\n\n    public static class Entity2 extends Entity {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ErrorGetterTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport junit.framework.TestCase;\n\npublic class ErrorGetterTest extends TestCase {\n\n    public void test_0() throws Exception {\n        Model m = new Model();\n\n        Exception error = null;\n        try {\n            JSON.toJSONString(m);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        assertNotNull(error);\n    }\n\n    private static class Model {\n        public int getValue() {\n            throw new UnsupportedOperationException();\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ErrorTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.ObjectSerializer;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\n\npublic class ErrorTest extends TestCase {\n\n    public void test_error() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.put(A.class, new ObjectSerializer() {\n\n            public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features)\n                                                                                                         throws IOException {\n                throw new IOException();\n            }\n        });\n        JSONSerializer ser = new JSONSerializer(config);\n\n        {\n            Exception error = null;\n            try {\n                ser.write(new A());\n            } catch (JSONException ex) {\n                error = ex;\n            }\n            Assert.assertNotNull(error);\n        }\n\n        {\n            Exception error = null;\n            try {\n                B b = new B();\n                b.setId(new A());\n                ser.write(b);\n            } catch (JSONException ex) {\n                error = ex;\n            }\n            Assert.assertNotNull(error);\n        }\n    }\n\n    public class A {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n    }\n\n    public class B {\n\n        private A id;\n\n        public A getId() {\n            return id;\n        }\n\n        public void setId(A id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ExtendsTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\npublic class ExtendsTest extends TestCase {\n\n    public void test_extends() throws Exception {\n        B b = new B();\n        b.setId(123);\n        b.setName(\"加爵\");\n\n        JSONObject json = JSON.parseObject(JSON.toJSONString(b));\n        Assert.assertEquals(b.getId(), json.get(\"id\"));\n        Assert.assertEquals(b.getName(), json.get(\"name\"));\n    }\n\n    public static class A {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n    }\n\n    public static class B extends A {\n\n        private String name;\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/FieldOrderTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 2016/11/2.\n */\npublic class FieldOrderTest extends TestCase {\n    public void test_field_order() throws Exception {\n        Person p = new Person();\n        p.setName(\"njb\");\n        School s = new School();\n        s.setName(\"llyz\");\n        p.setSchool(s);\n        String json = JSON.toJSONString(p);\n        assertEquals(\"{\\\"name\\\":\\\"njb\\\",\\\"school\\\":{\\\"name\\\":\\\"llyz\\\"}}\", json);\n    }\n\n    public static class Person {\n        private String name;\n        private School school;\n\n        public boolean isSchool() {\n            return false;\n        }\n\n        public School getSchool() {\n            return school;\n        }\n\n        public void setSchool(School school) {\n            this.school = school;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n\n    public static class School {\n        private String name;\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/FileTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.io.File;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\n\npublic class FileTest extends TestCase {\n\n    public void test_file() throws Exception {\n        File file = new File(\"abc.txt\");\n        \n        String text = JSON.toJSONString(file);\n        \n        Assert.assertEquals(JSON.toJSONString(file.getPath()), text);\n                \n        File file2 = JSON.parseObject(text, File.class);\n        \n        Assert.assertEquals(file, file2);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/FloatArraySerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class FloatArraySerializerTest extends TestCase {\r\n\r\n    public void test_0() {\r\n        Assert.assertEquals(\"[]\", JSON.toJSONString(new float[0]));\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", JSON.toJSONString(new Entity(), SerializerFeature.WriteMapNullValue));\r\n        Assert.assertEquals(\"{\\\"value\\\":[]}\", JSON.toJSONString(new Entity(), SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty));\r\n        Assert.assertEquals(\"[1.0,2.0]\", JSON.toJSONString(new float[] { 1, 2 }));\r\n        Assert.assertEquals(\"[1.0,2.0,3.0]\", JSON.toJSONString(new float[] { 1, 2, 3 }));\r\n        Assert.assertEquals(\"[1.0,2.0,3.0,null,null]\", JSON.toJSONString(new float[] { 1, 2, 3, Float.NaN, Float.NaN }));\r\n    }\r\n\r\n    public static class Entity {\r\n\r\n        private float[] value;\r\n\r\n        public float[] getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(float[] value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/FloatFormatTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 09/01/2017.\n */\npublic class FloatFormatTest extends TestCase {\n    public void test_format() throws Exception {\n        Model model = new Model();\n        model.value = 123.45678F;\n\n        String str = JSON.toJSONString(model);\n        assertEquals(\"{\\\"value\\\":123.46}\", str);\n    }\n\n    public static class Model {\n        @JSONField(format = \"0.00\")\n        public float value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/FloatFormatTest2.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 09/01/2017.\n */\npublic class FloatFormatTest2 extends TestCase {\n    public void test_format() throws Exception {\n        Model model = new Model();\n        model.value = 123.45678F;\n\n        String str = JSON.toJSONString(model);\n        assertEquals(\"{\\\"value\\\":123.46}\", str);\n    }\n\n    public static class Model {\n        @JSONField(format = \"0.00\")\n        public Float value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/FloatTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class FloatTest extends TestCase {\n\n    public void test_0() throws Exception {\n        Assert.assertEquals(\"null\", JSON.toJSONString(Float.NaN));\n        Assert.assertEquals(\"null\", JSON.toJSONString(Double.NaN));\n        Assert.assertEquals(\"null\", JSON.toJSONString(Float.POSITIVE_INFINITY));\n        Assert.assertEquals(\"null\", JSON.toJSONString(Float.NEGATIVE_INFINITY));\n        Assert.assertEquals(\"null\", JSON.toJSONString(Double.NaN));\n        Assert.assertEquals(\"null\", JSON.toJSONString(Double.POSITIVE_INFINITY));\n        Assert.assertEquals(\"null\", JSON.toJSONString(Double.NEGATIVE_INFINITY));\n        Assert.assertEquals(\"null\", JSON.toJSONString(new Float(Float.NaN)));\n        Assert.assertEquals(\"null\", JSON.toJSONString(new Double(Double.NaN)));\n        \n        //Assert.assertEquals(\"{\\\"f1\\\":null,\\\"f2\\\":null}\", JSON.toJSONString(new Bean()));\n        //Assert.assertEquals(\"{\\\"f1\\\":null,\\\"f2\\\":null}\", JSON.toJSONString(new Bean(Float.POSITIVE_INFINITY, Double.POSITIVE_INFINITY)));\n        //Assert.assertEquals(\"{\\\"f1\\\":null,\\\"f2\\\":null}\", JSON.toJSONString(new Bean(Float.NEGATIVE_INFINITY, Double.NEGATIVE_INFINITY)));\n        Assert.assertEquals(null, JSON.parseObject(JSON.toJSONString(new Bean())).get(\"f1\"));\n        Assert.assertEquals(null, JSON.parseObject(JSON.toJSONString(new Bean())).get(\"f2\"));\n        \n        Assert.assertEquals(null, JSON.parseObject(JSON.toJSONString(new Bean(Float.POSITIVE_INFINITY, Double.POSITIVE_INFINITY))).get(\"f1\"));\n        Assert.assertEquals(null, JSON.parseObject(JSON.toJSONString(new Bean(Float.POSITIVE_INFINITY, Double.POSITIVE_INFINITY))).get(\"f2\"));\n        \n        Assert.assertEquals(null, JSON.parseObject(JSON.toJSONString(new Bean(Float.NEGATIVE_INFINITY, Double.NEGATIVE_INFINITY))).get(\"f1\"));\n        Assert.assertEquals(null, JSON.parseObject(JSON.toJSONString(new Bean(Float.NEGATIVE_INFINITY, Double.NEGATIVE_INFINITY))).get(\"f2\"));\n    }\n\n    public static class Bean {\n\n        private float  f1 = Float.NaN;\n        private double f2 = Double.NaN;\n        \n        public Bean() {\n            \n        }\n        \n        public Bean(float f1, double f2) {\n            this.f1 = f1;\n            this.f2 = f2;\n        }\n\n        public float getF1() {\n            return f1;\n        }\n\n        public void setF1(float f1) {\n            this.f1 = f1;\n        }\n\n        public double getF2() {\n            return f2;\n        }\n\n        public void setF2(double f2) {\n            this.f2 = f2;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/FontSerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.awt.Font;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.AwtCodec;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\n\npublic class FontSerializerTest extends TestCase {\n    \n    public void test_null() throws Exception {\n        JSONSerializer serializer = new JSONSerializer();\n        Assert.assertEquals(AwtCodec.class, serializer.getObjectWriter(Font.class).getClass());\n        \n        VO vo = new VO();\n        \n        Assert.assertEquals(\"{\\\"value\\\":null}\", JSON.toJSONString(vo, SerializerFeature.WriteMapNullValue));\n    }\n\n    private static class VO {\n\n        private Font value;\n\n        public Font getValue() {\n            return value;\n        }\n\n        public void setValue(Font value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/GenericTypeNotMatchTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.math.BigInteger;\n\n/**\n * Created by wenshao on 10/02/2017.\n */\npublic class GenericTypeNotMatchTest extends TestCase {\n    public void test_for_notMatch() throws Exception {\n        Model model = new Model();\n        Base base = model;\n        base.id = BigInteger.valueOf(3);\n        JSON.toJSONString(base);\n    }\n\n\n    public static class Model extends Base<Long> {\n    }\n\n    public static class Base<T> {\n        public T id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/GenericTypeNotMatchTest2.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.math.BigInteger;\n\n/**\n * Created by wenshao on 10/02/2017.\n */\npublic class GenericTypeNotMatchTest2 extends TestCase {\n    public void test_for_notMatch() throws Exception {\n        Model model = new Model();\n\n        Base base = model;\n        base.setId(BigInteger.valueOf(3));\n\n        JSON.toJSONString(base);\n    }\n\n\n    public static class Model extends Base<Long> {\n\n    }\n\n    public static class Base<T> {\n        private T xid;\n\n        public void setId(T id) {\n            this.xid = id;\n        }\n\n        public T getId() {\n            return xid;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/GenericTypeTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.io.Serializable;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class GenericTypeTest extends TestCase {\n    \n    public void test_gerneric() throws Exception {\n        MyResultResult result = new MyResultResult();\n        JSON.toJSONString(result);\n    }\n    \n    public static class MyResultResult extends BaseResult<String> {\n    }\n    \n    public static class BaseResult<T> implements Serializable {\n        public T data;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/GenericTypeTest2.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.io.Serializable;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class GenericTypeTest2 extends TestCase {\n    \n    public void test_gerneric() throws Exception {\n        MyResultResult result = new MyResultResult();\n        JSON.toJSONString(result);\n    }\n    \n    public static class MyResultResult extends BaseResult<String> {\n    }\n    \n    public static class BaseResult<T>  {\n        private T data;\n        public T getData() {\n            return data;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/IgnoreGetMethodTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class IgnoreGetMethodTest extends TestCase {\n//    public void test_nested_object() {\n//        QueryResult result = new QueryResult();\n//        result.setPay(new PayDO());\n//        String json = JSON.toJSONString(result, SerializerFeature.IgnoreNonFieldGetter);\n//        System.out.println(json);\n//    }\n\n    public void test() {\n        PayDO result = new PayDO();\n        String json = JSON.toJSONString(result, SerializerFeature.IgnoreNonFieldGetter);\n        System.out.println(json);\n    }\n    \n    public static class PayDO {\n\n        public Integer getCurrentSubPayOrder() {\n            throw new RuntimeException(\"non getter getXXX method should not be called\");\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/IgnoreNonFieldGetterTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class IgnoreNonFieldGetterTest extends TestCase {\n\n    public void test_int() throws Exception {\n        VO vo = new VO();\n        vo.setId(123);\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.IgnoreNonFieldGetter);\n        Assert.assertEquals(\"{\\\"id\\\":123}\", text);\n        \n    }\n\n    public static class VO {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public int getNextId() {\n            return id + 1;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/IgnoreNonFieldGetterTest2.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class IgnoreNonFieldGetterTest2 extends TestCase {\n\n    public void test_int() throws Exception {\n        VO vo = new VO();\n        vo.setId(123);\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.IgnoreNonFieldGetter);\n        Assert.assertEquals(\"{\\\"id\\\":123}\", text);\n        \n    }\n\n    private static class VO {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public int getNextId() {\n            return id + 1;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/IgoreGetterTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.io.InputStream;\nimport java.io.OutputStream;\nimport java.io.Reader;\n\npublic class IgoreGetterTest extends TestCase {\n    public void test_for_issue() throws Exception {\n        VO vo = new VO();\n        assertEquals(\"{}\", JSON.toJSONString(vo));\n    }\n\n    public static class VO {\n        public InputStream getInputStream() {\n            throw  new UnsupportedOperationException();\n        }\n\n        public Reader getReader() {\n            throw  new UnsupportedOperationException();\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/InetAddressTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.net.InetAddress;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class InetAddressTest extends TestCase {\n\n    public void test_inetAddress() throws Exception {\n        InetAddress address = InetAddress.getLocalHost();\n\n        String text = JSON.toJSONString(address);\n\n        Assert.assertEquals(JSON.toJSONString(address.getHostAddress()), text);\n\n        InetAddress address2 = JSON.parseObject(text, InetAddress.class);\n        Assert.assertEquals(address, address2);\n        ParserConfig.getGlobalInstance().getDeserializer(InetAddress.class);\n    }\n\n    public void test_null() throws Exception {\n        Assert.assertEquals(null, JSON.parseObject(\"null\", InetAddress.class));\n    }\n    \n    public void test_empty() throws Exception {\n        Assert.assertEquals(null, JSON.parseObject(\"\\\"\\\"\", InetAddress.class));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/InetSocketAddressTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.net.InetAddress;\nimport java.net.InetSocketAddress;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class InetSocketAddressTest extends TestCase {\n\n    public void test_timezone() throws Exception {\n        InetSocketAddress address = new InetSocketAddress(InetAddress.getLocalHost(), 80);\n        \n        String text = JSON.toJSONString(address);\n\n        InetSocketAddress address2 = JSON.parseObject(text,  InetSocketAddress.class);\n        Assert.assertEquals(address, address2);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/IntArrayEncodeTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\n\r\npublic class IntArrayEncodeTest extends TestCase {\r\n\r\n    public void test_0_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(1);\r\n\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.write(new int[] { 0, 1 });\r\n\r\n        Assert.assertEquals(\"[0,1]\", out.toString());\r\n    }\r\n\r\n    public void test_1_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.write(new int[] {});\r\n\r\n        Assert.assertEquals(\"[]\", out.toString());\r\n    }\r\n\r\n    public void test_2_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.write(new int[] { -2147483648 });\r\n\r\n        Assert.assertEquals(\"[-2147483648]\", out.toString());\r\n    }\r\n\r\n    public void test_3_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n\r\n        StringBuilder sb = new StringBuilder();\r\n        sb.append('[');\r\n        int len = 1000;\r\n        int[] array = new int[len];\r\n        for (int i = 0; i < array.length; ++i) {\r\n            array[i] = i;\r\n            if (i != 0) {\r\n                sb.append(',');\r\n            }\r\n            sb.append(i);\r\n        }\r\n        sb.append(']');\r\n\r\n        serializer.write(array);\r\n\r\n        Assert.assertEquals(sb.toString(), out.toString());\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/IntFieldTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class IntFieldTest extends TestCase {\n\n    public void test_model() throws Exception {\n        Model model = new Model();\n        model.id = -1001;\n        \n        String text = JSON.toJSONString(model);\n        Assert.assertEquals(\"{\\\"id\\\":-1001}\", text);\n    }\n    \n    public void test_model_max() throws Exception {\n        Model model = new Model();\n        model.id = Integer.MIN_VALUE;\n        \n        String text = JSON.toJSONString(model);\n        Assert.assertEquals(\"{\\\"id\\\":-2147483648}\", text);\n    }\n\n    public static class Model {\n\n        public int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/IntFieldTest2.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.io.StringReader;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.TypeReference;\n\nimport junit.framework.TestCase;\n\npublic class IntFieldTest2 extends TestCase {\n\n    public void test_model() throws Exception {\n        Model model = new Model();\n        model.id = -1001;\n        model.id2 = -1002;\n\n        String text = JSON.toJSONString(model);\n        Assert.assertEquals(\"{\\\"id\\\":-1001,\\\"id2\\\":-1002}\", text);\n    }\n\n    public void test_model_max() throws Exception {\n        Model model = new Model();\n        model.id = Integer.MIN_VALUE;\n        model.id2 = Integer.MAX_VALUE;\n\n        String text = JSON.toJSONString(model);\n        Assert.assertEquals(\"{\\\"id\\\":-2147483648,\\\"id2\\\":2147483647}\", text);\n        {\n            JSONReader reader = new JSONReader(new StringReader(text));\n            Model model2 = reader.readObject(Model.class);\n            Assert.assertEquals(model.id, model2.id);\n            Assert.assertEquals(model.id2, model2.id2);\n            reader.close();\n        }\n    }\n\n    public void test_model_map() throws Exception {\n        String text = \"{\\\"model\\\":{\\\"id\\\":-1001,\\\"id2\\\":-1002}}\";\n\n        JSONReader reader = new JSONReader(new StringReader(text));\n        Map<String, Model> map = reader.readObject(new TypeReference<Map<String, Model>>() {\n        });\n        Model model2 = map.get(\"model\");\n        Assert.assertEquals(-1001, model2.id);\n        Assert.assertEquals(-1002, model2.id2);\n        reader.close();\n    }\n\n    public void test_model_map_error() throws Exception {\n        String text = \"{\\\"model\\\":{\\\"id\\\":-1001,\\\"id2\\\":-1002[\";\n\n        Exception error = null;\n        JSONReader reader = new JSONReader(new StringReader(text));\n        try {\n            reader.readObject(new TypeReference<Map<String, Model>>() {\n            });\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_model_map_error_2() throws Exception {\n        String text = \"{\\\"model\\\":{\\\"id\\\":-1001,\\\"id2\\\":-1002}[\";\n\n        Exception error = null;\n        JSONReader reader = new JSONReader(new StringReader(text));\n        try {\n            reader.readObject(new TypeReference<Map<String, Model>>() {\n            });\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Model {\n\n        public int id;\n        public int id2;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/IntegerArrayEncodeTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\n\r\npublic class IntegerArrayEncodeTest extends TestCase {\r\n\r\n    public void test_0_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.write(new Integer[] { 0, 1 });\r\n\r\n        Assert.assertEquals(\"[0,1]\", out.toString());\r\n    }\r\n\r\n    public void test_1_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.write(new Integer[] {});\r\n\r\n        Assert.assertEquals(\"[]\", out.toString());\r\n    }\r\n\r\n    public void test_2_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.write(new Integer[] { -2147483648 });\r\n\r\n        Assert.assertEquals(\"[-2147483648]\", out.toString());\r\n    }\r\n\r\n    public void test_3_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n\r\n        StringBuilder sb = new StringBuilder();\r\n        sb.append('[');\r\n        int len = 1000;\r\n        Integer[] array = new Integer[len];\r\n        for (int i = 0; i < array.length; ++i) {\r\n            array[i] = i;\r\n            if (i != 0) {\r\n                sb.append(',');\r\n            }\r\n            sb.append(i);\r\n        }\r\n        sb.append(']');\r\n\r\n        serializer.write(array);\r\n\r\n        Assert.assertEquals(sb.toString(), out.toString());\r\n    }\r\n\r\n    public void test_4_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(1);\r\n\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.write(new Integer[] { 1, null, null });\r\n\r\n        Assert.assertEquals(\"[1,null,null]\", out.toString());\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/IntegerArrayFieldSerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class IntegerArrayFieldSerializerTest extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        A a1 = new A();\r\n        a1.setBytes(new int[] { 1, 2 });\r\n\r\n        Assert.assertEquals(\"{\\\"bytes\\\":[1,2]}\", JSON.toJSONString(a1));\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        A a1 = new A();\r\n\r\n        Assert.assertEquals(\"{\\\"bytes\\\":null}\", JSON.toJSONString(a1, SerializerFeature.WriteMapNullValue));\r\n    }\r\n\r\n    public static class A {\r\n\r\n        private int[] bytes;\r\n\r\n        public int[] getBytes() {\r\n            return bytes;\r\n        }\r\n\r\n        public void setBytes(int[] bytes) {\r\n            this.bytes = bytes;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/IntegerSerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\n\npublic class IntegerSerializerTest extends TestCase {\n    \n    public void test_null() throws Exception {\n        VO vo = new VO();\n        \n        Assert.assertEquals(\"{\\\"value\\\":null}\", JSON.toJSONString(vo, SerializerFeature.WriteMapNullValue));\n    }\n\n    private static class VO {\n\n        private Integer value;\n\n        public Integer getValue() {\n            return value;\n        }\n\n        public void setValue(Integer value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/InterfaceTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic class InterfaceTest extends TestCase {\n\tpublic void test_interface() throws Exception {\n\t\tA a = new A();\n\t\ta.setId(123);\n\t\ta.setName(\"xasdf\");\n\t\t\n\t\tString text = JSON.toJSONString(a);\n\t\tAssert.assertEquals(\"{\\\"ID\\\":123,\\\"Name\\\":\\\"xasdf\\\"}\", text);\n\t}\n\t\n\tpublic static class A implements IA, IB {\n\t\tprivate int id;\n\t\tprivate String name;\n\t\tpublic int getId() {\n\t\t\treturn id;\n\t\t}\n\t\tpublic void setId(int id) {\n\t\t\tthis.id = id;\n\t\t}\n\t\tpublic String getName() {\n\t\t\treturn name;\n\t\t}\n\t\tpublic void setName(String name) {\n\t\t\tthis.name = name;\n\t\t}\n\t}\n\t\n\tpublic static interface IA {\n\t\t@JSONField(name=\"ID\")\n\t\tint getId();\n\t}\n\t\n\tpublic static interface IB {\n\t\t@JSONField(name=\"Name\")\n\t\tString getName();\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/JSONFieldTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic class JSONFieldTest extends TestCase {\n\tpublic void test_jsonField() throws Exception {\n\t\tVO vo = new VO();\n\t\t\n\t\tvo.setId(123);\n\t\tvo.setName(\"xx\");\n\t\t\n\t\tString text = JSON.toJSONString(vo);\n\t\tAssert.assertEquals(\"{\\\"id\\\":123}\", text);\n\t}\n\n\tpublic static class VO {\n\t\tprivate int id;\n\t\t\n\t\t@JSONField(serialize=false)\n\t\tprivate String name;\n\n\t\tpublic int getId() {\n\t\t\treturn id;\n\t\t}\n\n\t\tpublic void setId(int id) {\n\t\t\tthis.id = id;\n\t\t}\n\n\t\tpublic String getName() {\n\t\t\treturn name;\n\t\t}\n\n\t\tpublic void setName(String name) {\n\t\t\tthis.name = name;\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/JSONFieldTest2.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic class JSONFieldTest2 extends TestCase {\n\tpublic void test_jsonField() throws Exception {\n\t\tVO vo = new VO();\n\n\t\tvo.setId(123);\n\t\tvo.setFlag(true);\n\n\t\tString text = JSON.toJSONString(vo);\n\t\tAssert.assertEquals(\"{\\\"id\\\":123}\", text);\n\t}\n\n\tpublic static class VO {\n\t\tprivate int id;\n\n\t\t@JSONField(serialize = false)\n\t\tprivate boolean flag;\n\n\t\tpublic int getId() {\n\t\t\treturn id;\n\t\t}\n\n\t\tpublic void setId(int id) {\n\t\t\tthis.id = id;\n\t\t}\n\n\t\tpublic boolean isFlag() {\n\t\t\treturn flag;\n\t\t}\n\n\t\tpublic void setFlag(boolean flag) {\n\t\t\tthis.flag = flag;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/JSONFieldTest3.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic class JSONFieldTest3 extends TestCase {\n\tpublic void test_jsonField() throws Exception {\n\t\tVO vo = new VO();\n\n\t\tvo.setId(123);\n\t\tvo.setFlag(true);\n\n\t\tString text = JSON.toJSONString(vo);\n\t\tAssert.assertEquals(\"{\\\"id\\\":123}\", text);\n\t}\n\n\tpublic static class VO {\n\t\tprivate int id;\n\n\t\t@JSONField(serialize = false)\n\t\tprivate boolean _flag;\n\t\t\n\t\t@JSONField(serialize = false)\n\t\tprivate int _id2;\n\n\t\tpublic int getId() {\n\t\t\treturn id;\n\t\t}\n\n\t\tpublic void setId(int id) {\n\t\t\tthis.id = id;\n\t\t}\n\n\t\tpublic boolean isFlag() {\n\t\t\treturn _flag;\n\t\t}\n\n\t\tpublic void setFlag(boolean flag) {\n\t\t\tthis._flag = flag;\n\t\t}\n\n        \n        public int getId2() {\n            return _id2;\n        }\n\n        \n        public void setId2(int id2) {\n            this._id2 = id2;\n        }\n\t\t\n\t\t\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/JSONFieldTest4.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic class JSONFieldTest4 extends TestCase {\n\tpublic void test_jsonField() throws Exception {\n\t\tVO vo = new VO();\n\n\t\tvo.setId(123);\n\t\tvo.setFlag(true);\n\n\t\tString text = JSON.toJSONString(vo);\n\t\tAssert.assertEquals(\"{\\\"id\\\":123}\", text);\n\t}\n\n\tpublic static class VO {\n\t\tprivate int id;\n\n\t\t@JSONField(serialize = false)\n\t\tprivate boolean m_flag;\n\t\t\n\t\t@JSONField(serialize = false)\n\t\tprivate int m_id2;\n\n\t\tpublic int getId() {\n\t\t\treturn id;\n\t\t}\n\n\t\tpublic void setId(int id) {\n\t\t\tthis.id = id;\n\t\t}\n\n\t\tpublic boolean isFlag() {\n\t\t\treturn m_flag;\n\t\t}\n\n\t\tpublic void setFlag(boolean flag) {\n\t\t\tthis.m_flag = flag;\n\t\t}\n\n        \n        public int getId2() {\n            return m_id2;\n        }\n\n        \n        public void setId2(int id2) {\n            this.m_id2 = id2;\n        }\n\t\t\n\t\t\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/JSONFieldTest5.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class JSONFieldTest5 extends TestCase {\n\n    public void test_jsonField() throws Exception {\n        VO vo = new VO();\n\n        vo.setID(123);\n\n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"iD\\\":123}\", text);\n        \n        Assert.assertEquals(123, JSON.parseObject(text, VO.class).getID());\n    }\n\n    public static class VO {\n\n        private int id;\n\n        public int getID() {\n            return id;\n        }\n\n        public void setID(int id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/JSONFieldTest6.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport java.util.HashMap;\nimport java.util.Map;\nimport junit.framework.TestCase;\n\npublic class JSONFieldTest6 extends TestCase {\n\n    public void test_for_issue1()\n    {\n        NonStringMap nonStringMap = new NonStringMap();\n        Map<Integer, Integer> map1 = new HashMap();\n        map1.put( 111,666 );\n        nonStringMap.setMap1( map1 );\n        String json = JSON.toJSONString( nonStringMap );\n        assertEquals( \"{\\\"map1\\\":{\\\"111\\\":666}}\", json );\n    }\n\n    public void test_for_issue2()\n    {\n        NonStringMap nonStringMap = new NonStringMap();\n        Map<Integer, Integer> map2 = new HashMap();\n        map2.put( 222,888 );\n        nonStringMap.setMap2( map2 );\n        String json = JSON.toJSONString( nonStringMap );\n        assertEquals( \"{\\\"map2\\\":{222:\\\"888\\\"}}\", json );\n    }\n\n    public void test_for_issue3()\n    {\n        NonStringMap nonStringMap = new NonStringMap();\n        Map<Integer, Integer> map3 = new HashMap();\n        map3.put( 333,999 );\n        nonStringMap.setMap3( map3 );\n        String json = JSON.toJSONString( nonStringMap );\n        assertEquals( \"{\\\"map3\\\":{\\\"333\\\":\\\"999\\\"}}\", json );\n    }\n\n    public void test_for_issue4()\n    {\n        NonStringMap nonStringMap = new NonStringMap();\n        Bean person = new Bean();\n        person.setAge( 23 );\n        nonStringMap.setPerson( person );\n        String json = JSON.toJSONString( nonStringMap );\n        assertEquals( \"{\\\"person\\\":{\\\"age\\\":\\\"23\\\"}}\", json );\n    }\n\n    class NonStringMap\n    {\n        @JSONField( serialzeFeatures = {SerializerFeature.WriteNonStringKeyAsString} )\n        private Map map1;\n\n        public Map getMap1()\n        {\n            return map1;\n        }\n\n        public void setMap1( Map map1 )\n        {\n            this.map1 = map1;\n        }\n\n        @JSONField( serialzeFeatures = {SerializerFeature.WriteNonStringValueAsString} )\n        private Map map2;\n\n        public Map getMap2()\n        {\n            return map2;\n        }\n\n        public void setMap2( Map map2 )\n        {\n            this.map2 = map2;\n        }\n\n        @JSONField( serialzeFeatures = {SerializerFeature.WriteNonStringKeyAsString, SerializerFeature.WriteNonStringValueAsString} )\n        private Map map3;\n\n        public Map getMap3()\n        {\n        return map3;\n        }\n\n        public void setMap3( Map map3 )\n        {\n            this.map3 = map3;\n        }\n\n        @JSONField( serialzeFeatures = {SerializerFeature.WriteNonStringValueAsString} )\n        private Bean person;\n\n        public Bean getPerson()\n        {\n            return person;\n        }\n\n        public void setPerson( Bean person )\n        {\n            this.person = person;\n        }\n    }\n\n    class Bean {\n        private int age;\n\n        public int getAge()\n        {\n            return age;\n        }\n\n        public void setAge( int age )\n        {\n            this.age = age;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/JSONFieldTest_unwrapped_0.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\npublic class JSONFieldTest_unwrapped_0 extends TestCase {\n\n    public void test_jsonField() throws Exception {\n        VO vo = new VO();\n        vo.id = 123;\n        vo.localtion = new Localtion(127, 37);\n\n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"id\\\":123,\\\"latitude\\\":37,\\\"longitude\\\":127}\", text);\n\n        VO vo2 = JSON.parseObject(text, VO.class);\n        assertNotNull(vo2.localtion);\n        assertEquals(vo.localtion.latitude, vo2.localtion.latitude);\n        assertEquals(vo.localtion.longitude, vo2.localtion.longitude);\n    }\n\n    public static class VO {\n        public int id;\n\n        @JSONField(unwrapped = true)\n        public Localtion localtion;\n    }\n\n    public static class Localtion {\n        public int longitude;\n        public int latitude;\n\n        public Localtion() {\n\n        }\n\n        public Localtion(int longitude, int latitude) {\n            this.longitude = longitude;\n            this.latitude = latitude;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/JSONFieldTest_unwrapped_1.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.HashMap;\nimport java.util.LinkedHashMap;\nimport java.util.Map;\nimport java.util.Properties;\n\npublic class JSONFieldTest_unwrapped_1 extends TestCase {\n\n    public void test_jsonField() throws Exception {\n        VO vo = new VO();\n        vo.id = 123;\n        vo.properties.put(\"latitude\", 37);\n        vo.properties.put(\"longitude\", 127);\n\n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"id\\\":123,\\\"latitude\\\":37,\\\"longitude\\\":127}\", text);\n\n        VO vo2 = JSON.parseObject(text, VO.class);\n        assertNotNull(vo2.properties);\n        assertEquals(37, vo2.properties.get(\"latitude\"));\n        assertEquals(127, vo2.properties.get(\"longitude\"));\n\n    }\n\n    public static class VO {\n        public int id;\n\n        @JSONField(unwrapped = true)\n        public Map<String, Object> properties = new LinkedHashMap<String, Object>();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/JSONFieldTest_unwrapped_2.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\npublic class JSONFieldTest_unwrapped_2 extends TestCase {\n\n    public void test_jsonField() throws Exception {\n        String text = \"{\\\"id\\\":123,\\\"latitude\\\":37,\\\"longitude\\\":127}\";\n        Assert.assertEquals(\"{\\\"id\\\":123,\\\"latitude\\\":37,\\\"longitude\\\":127}\", text);\n\n        VO vo2 = JSON.parseObject(text, VO.class);\n        assertNotNull(vo2.properties);\n        assertEquals(37, vo2.properties.get(\"latitude\"));\n        assertEquals(127, vo2.properties.get(\"longitude\"));\n\n    }\n\n    public static class VO {\n        public int id;\n\n        private Map<String, Object> properties = new LinkedHashMap<String, Object>();\n\n        @JSONField(unwrapped = true)\n        public void setProperty(String key, Object value) {\n            properties.put(key, value);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/JSONFieldTest_unwrapped_3.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\npublic class JSONFieldTest_unwrapped_3 extends TestCase {\n\n    public void test_jsonField() throws Exception {\n        Health vo = new Health();\n        vo.id = 123;\n        vo.details.put(\"latitude\", 37);\n        vo.details.put(\"longitude\", 127);\n\n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"latitude\\\":37,\\\"longitude\\\":127,\\\"id\\\":123}\", text);\n\n        Health vo2 = JSON.parseObject(text, Health.class);\n        assertNotNull(vo2.details);\n        assertEquals(37, vo2.details.get(\"latitude\"));\n        assertEquals(127, vo2.details.get(\"longitude\"));\n\n    }\n\n    public void test_null() throws Exception {\n        Health vo = new Health();\n        vo.id = 123;\n        vo.details = null;\n\n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"id\\\":123}\", text);\n    }\n\n    public void test_empty() throws Exception {\n        Health vo = new Health();\n        vo.id = 123;\n\n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"id\\\":123}\", text);\n    }\n\n    public static class Health {\n        public int id;\n\n        @JSONField(unwrapped = true)\n        public Map<String, Object> details = new LinkedHashMap<String, Object>();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/JSONFieldTest_unwrapped_4.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\npublic class JSONFieldTest_unwrapped_4 extends TestCase {\n\n    public void test_jsonField() throws Exception {\n        Health vo = new Health();\n        vo.id = 123;\n        vo.border = 234;\n        vo.details.put(\"latitude\", 37);\n        vo.details.put(\"longitude\", 127);\n\n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"border\\\":234,\\\"latitude\\\":37,\\\"longitude\\\":127,\\\"id\\\":123}\", text);\n\n        Health vo2 = JSON.parseObject(text, Health.class);\n        assertNotNull(vo2.details);\n        assertEquals(37, vo2.details.get(\"latitude\"));\n        assertEquals(127, vo2.details.get(\"longitude\"));\n\n    }\n\n    public void test_null() throws Exception {\n        Health vo = new Health();\n        vo.id = 123;\n        vo.border = 234;\n        vo.details = null;\n\n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"border\\\":234,\\\"id\\\":123}\", text);\n    }\n\n    public void test_empty() throws Exception {\n        Health vo = new Health();\n        vo.id = 123;\n        vo.border = 234;\n\n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"border\\\":234,\\\"id\\\":123}\", text);\n    }\n\n    public static class Health {\n        public int id;\n        public int border;\n\n        @JSONField(unwrapped = true)\n        public Map<String, Object> details = new LinkedHashMap<String, Object>();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/JSONFieldTest_unwrapped_5.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\npublic class JSONFieldTest_unwrapped_5 extends TestCase {\n\n    public void test_jsonField() throws Exception {\n        Health vo = new Health();\n        vo.id = 123;\n        vo.details.put(\"latitude\", 37);\n        vo.details.put(\"longitude\", 127);\n\n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"id\\\":123,\\\"latitude\\\":37,\\\"longitude\\\":127}\", text);\n\n        Health vo2 = JSON.parseObject(text, Health.class);\n        assertNotNull(vo2.details);\n        assertEquals(37, vo2.details.get(\"latitude\"));\n        assertEquals(127, vo2.details.get(\"longitude\"));\n\n    }\n\n    public void test_null() throws Exception {\n        Health vo = new Health();\n        vo.id = 123;\n        vo.details = null;\n\n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"id\\\":123}\", text);\n    }\n\n    public void test_empty() throws Exception {\n        Health vo = new Health();\n        vo.id = 123;\n\n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"id\\\":123}\", text);\n    }\n\n    public static class Health {\n        @JSONField(ordinal = 1)\n        public int id;\n\n        @JSONField(unwrapped = true, ordinal = 2)\n        public Map<String, Object> details = new LinkedHashMap<String, Object>();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/JSONFieldTest_unwrapped_6.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class JSONFieldTest_unwrapped_6 extends TestCase {\n\n    public void test_jsonField() throws Exception {\n        Health vo = new Health();\n        List<String> cities = new ArrayList<String>();\n        cities.add(\"Beijing\");\n        cities.add(\"Shanghai\");\n        vo.id = 123;\n        vo.cities = cities;\n\n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"cities\\\":[\\\"Beijing\\\",\\\"Shanghai\\\"],\\\"id\\\":123}\", text);\n\n        Health vo2 = JSON.parseObject(text, Health.class);\n        assertNotNull(vo2.cities);\n        assertEquals(\"Beijing\", vo2.cities.get(0));\n        assertEquals(\"Shanghai\", vo2.cities.get(1));\n\n    }\n\n    public void test_null() throws Exception {\n        Health vo = new Health();\n        vo.id = 123;\n        vo.cities = null;\n\n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"id\\\":123}\", text);\n    }\n\n    public void test_empty() throws Exception {\n        Health vo = new Health();\n        vo.id = 123;\n\n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"id\\\":123}\", text);\n    }\n\n    public static class Health {\n        @JSONField(unwrapped = true)\n        public int id;\n\n        @JSONField(unwrapped = true)\n        public List<String> cities;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/JSONFieldTest_unwrapped_7.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class JSONFieldTest_unwrapped_7 extends TestCase {\n\n    public void test_jsonField() throws Exception {\n        String str = \"{\\\"s\\\":\\\"[\\\\\\\"123\\\\\\\",\\\\\\\"xyz\\\\\\\"]\\\"}\";\n        System.out.println(str);\n\n        A a = JSON.parseObject(str, A.class);\n        System.out.println(a.getS());\n\n    }\n    public static class A {\n        private List<String> s;\n\n        public List<String> getS() {\n            return s;\n        }\n\n        @JSONField(unwrapped = true)\n        public void setS(List<String> s) {\n            this.s = s;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/JSONObjectOrderTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\npublic class JSONObjectOrderTest extends TestCase {\n    public void test_for_order() throws Exception {\n        System.out.println(JSON.VERSION);\n        JSONObject jsonObj = new JSONObject(true);\n        jsonObj.put(\"code\",\"code\");\n        jsonObj.put(\"msg\",\"msg\");\n        jsonObj.put(\"data\", \"data\");\n        String jsonStr = JSON.toJSONString(jsonObj, SerializerFeature.MapSortField);\n        assertEquals(\"{\\\"code\\\":\\\"code\\\",\\\"msg\\\":\\\"msg\\\",\\\"data\\\":\\\"data\\\"}\", jsonStr);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/JSONSerializerDeprecatedTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.fasterxml.jackson.databind.util.ISO8601DateFormat;\n\nimport junit.framework.TestCase;\n\n@SuppressWarnings(\"deprecation\")\npublic class JSONSerializerDeprecatedTest extends TestCase {\n\n    public void test_() throws Exception {\n        JSONSerializer ser = new JSONSerializer(new SerializeConfig());\n        \n        ser.setDateFormat(new ISO8601DateFormat());\n        Assert.assertEquals(null, ser.getDateFormatPattern());\n        \n        ser.close();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/JSONSerializerFeatureTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport java.io.StringWriter;\r\nimport java.util.Collections;\r\nimport java.util.LinkedHashMap;\r\nimport java.util.Map;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class JSONSerializerFeatureTest extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer(new SerializeWriter());\r\n\r\n        Assert.assertEquals(true, serializer.isEnabled(SerializerFeature.QuoteFieldNames));\r\n        Assert.assertEquals(false, serializer.isEnabled(SerializerFeature.UseSingleQuotes));\r\n    }\r\n\r\n    public void test_0_g() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer(new SerializeWriter());\r\n\r\n        Assert.assertEquals(true, serializer.isEnabled(SerializerFeature.QuoteFieldNames));\r\n        Assert.assertEquals(false, serializer.isEnabled(SerializerFeature.UseSingleQuotes));\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer(new SerializeWriter());\r\n\r\n        Assert.assertEquals(true, serializer.isEnabled(SerializerFeature.QuoteFieldNames));\r\n        Assert.assertEquals(false, serializer.isEnabled(SerializerFeature.UseSingleQuotes));\r\n\r\n        serializer.config(SerializerFeature.UseSingleQuotes, true);\r\n        Assert.assertEquals(true, serializer.isEnabled(SerializerFeature.UseSingleQuotes));\r\n\r\n        serializer.write(\"abc\");\r\n\r\n        Assert.assertEquals(\"'abc'\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_1_s() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer(new SerializeWriter());\r\n\r\n        Assert.assertEquals(true, serializer.isEnabled(SerializerFeature.QuoteFieldNames));\r\n        Assert.assertEquals(false, serializer.isEnabled(SerializerFeature.UseSingleQuotes));\r\n\r\n        serializer.config(SerializerFeature.UseSingleQuotes, true);\r\n        Assert.assertEquals(true, serializer.isEnabled(SerializerFeature.UseSingleQuotes));\r\n\r\n        serializer.write(\"abc\");\r\n\r\n        Assert.assertEquals(\"'abc'\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer(new SerializeWriter());\r\n\r\n        serializer.config(SerializerFeature.UseSingleQuotes, true);\r\n        Assert.assertEquals(true, serializer.isEnabled(SerializerFeature.UseSingleQuotes));\r\n\r\n        serializer.write(Collections.singletonMap(\"age\", 33));\r\n\r\n        Assert.assertEquals(\"{'age':33}\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_2_s() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer(new SerializeWriter());\r\n\r\n        serializer.config(SerializerFeature.UseSingleQuotes, true);\r\n        Assert.assertEquals(true, serializer.isEnabled(SerializerFeature.UseSingleQuotes));\r\n\r\n        serializer.write(Collections.singletonMap(\"age\", 33));\r\n\r\n        Assert.assertEquals(\"{'age':33}\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_3() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer(new SerializeWriter());\r\n\r\n        serializer.config(SerializerFeature.QuoteFieldNames, false);\r\n        Assert.assertEquals(false, serializer.isEnabled(SerializerFeature.QuoteFieldNames));\r\n\r\n        serializer.write(Collections.singletonMap(\"age\", 33));\r\n\r\n        Assert.assertEquals(\"{age:33}\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_3_s() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer(new SerializeWriter());\r\n\r\n        serializer.config(SerializerFeature.QuoteFieldNames, false);\r\n        Assert.assertEquals(false, serializer.isEnabled(SerializerFeature.QuoteFieldNames));\r\n\r\n        serializer.write(Collections.singletonMap(\"age\", 33));\r\n\r\n        Assert.assertEquals(\"{age:33}\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_4() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer(new SerializeWriter());\r\n\r\n        serializer.config(SerializerFeature.QuoteFieldNames, false);\r\n        Assert.assertEquals(false, serializer.isEnabled(SerializerFeature.QuoteFieldNames));\r\n\r\n        serializer.write(Collections.singletonMap(\"a\\nge\", 33));\r\n\r\n        Assert.assertEquals(\"{\\\"a\\\\nge\\\":33}\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_4_s() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer(new SerializeWriter());\r\n\r\n        serializer.config(SerializerFeature.QuoteFieldNames, false);\r\n        Assert.assertEquals(false, serializer.isEnabled(SerializerFeature.QuoteFieldNames));\r\n\r\n        serializer.write(Collections.singletonMap(\"a\\nge\", 33));\r\n\r\n        Assert.assertEquals(\"{\\\"a\\\\nge\\\":33}\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_5() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer(new SerializeWriter());\r\n\r\n        serializer.config(SerializerFeature.QuoteFieldNames, false);\r\n        Assert.assertEquals(false, serializer.isEnabled(SerializerFeature.QuoteFieldNames));\r\n        serializer.config(SerializerFeature.UseSingleQuotes, true);\r\n        Assert.assertEquals(true, serializer.isEnabled(SerializerFeature.UseSingleQuotes));\r\n\r\n        serializer.write(Collections.singletonMap(\"a\\nge\", 33));\r\n\r\n        Assert.assertEquals(\"{'a\\\\nge':33}\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_5_s() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer(new SerializeWriter());\r\n\r\n        serializer.config(SerializerFeature.QuoteFieldNames, false);\r\n        Assert.assertEquals(false, serializer.isEnabled(SerializerFeature.QuoteFieldNames));\r\n        serializer.config(SerializerFeature.UseSingleQuotes, true);\r\n        Assert.assertEquals(true, serializer.isEnabled(SerializerFeature.UseSingleQuotes));\r\n\r\n        serializer.write(Collections.singletonMap(\"a\\nge\", 33));\r\n\r\n        Assert.assertEquals(\"{'a\\\\nge':33}\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_6() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer(new SerializeWriter());\r\n\r\n        serializer.config(SerializerFeature.QuoteFieldNames, false);\r\n        Assert.assertEquals(false, serializer.isEnabled(SerializerFeature.QuoteFieldNames));\r\n        serializer.config(SerializerFeature.UseSingleQuotes, true);\r\n        Assert.assertEquals(true, serializer.isEnabled(SerializerFeature.UseSingleQuotes));\r\n\r\n        serializer.write(Collections.singletonMap(\"a'ge\", 33));\r\n\r\n        Assert.assertEquals(\"{'a\\\\'ge':33}\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_6_s() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer(new SerializeWriter());\r\n\r\n        serializer.config(SerializerFeature.QuoteFieldNames, false);\r\n        Assert.assertEquals(false, serializer.isEnabled(SerializerFeature.QuoteFieldNames));\r\n        serializer.config(SerializerFeature.UseSingleQuotes, true);\r\n        Assert.assertEquals(true, serializer.isEnabled(SerializerFeature.UseSingleQuotes));\r\n\r\n        serializer.write(Collections.singletonMap(\"a'ge\", 33));\r\n\r\n        Assert.assertEquals(\"{'a\\\\'ge':33}\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_7() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n\r\n        serializer.config(SerializerFeature.QuoteFieldNames, false);\r\n        Assert.assertEquals(false, serializer.isEnabled(SerializerFeature.QuoteFieldNames));\r\n\r\n        serializer.write(new User(33));\r\n\r\n        Assert.assertEquals(\"{age:33}\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_7_s() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n\r\n        serializer.config(SerializerFeature.QuoteFieldNames, false);\r\n        Assert.assertEquals(false, serializer.isEnabled(SerializerFeature.QuoteFieldNames));\r\n\r\n        serializer.write(new User(33));\r\n\r\n        Assert.assertEquals(\"{age:33}\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_8() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n\r\n        serializer.config(SerializerFeature.UseSingleQuotes, true);\r\n        Assert.assertEquals(true, serializer.isEnabled(SerializerFeature.UseSingleQuotes));\r\n\r\n        serializer.write(new User(33));\r\n\r\n        Assert.assertEquals(\"{'age':33}\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_8_s() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n\r\n        serializer.config(SerializerFeature.UseSingleQuotes, true);\r\n        Assert.assertEquals(true, serializer.isEnabled(SerializerFeature.UseSingleQuotes));\r\n\r\n        serializer.write(new User(33));\r\n\r\n        Assert.assertEquals(\"{'age':33}\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_9() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n\r\n        serializer.config(SerializerFeature.QuoteFieldNames, false);\r\n        Assert.assertEquals(false, serializer.isEnabled(SerializerFeature.QuoteFieldNames));\r\n        serializer.config(SerializerFeature.WriteMapNullValue, false);\r\n        Assert.assertEquals(false, serializer.isEnabled(SerializerFeature.WriteMapNullValue));\r\n\r\n        StringWriter out = new StringWriter();\r\n\r\n        Map map = new LinkedHashMap();\r\n        map.put(\"a\", null);\r\n        map.put(\"age\", 33);\r\n        map.put(\"c\", null);\r\n\r\n        serializer.write(map);\r\n\r\n        Assert.assertEquals(\"{age:33}\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_9_s() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n\r\n        serializer.config(SerializerFeature.QuoteFieldNames, false);\r\n        Assert.assertEquals(false, serializer.isEnabled(SerializerFeature.QuoteFieldNames));\r\n        serializer.config(SerializerFeature.WriteMapNullValue, false);\r\n        Assert.assertEquals(false, serializer.isEnabled(SerializerFeature.WriteMapNullValue));\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        Map map = new LinkedHashMap();\r\n        map.put(\"a\", null);\r\n        map.put(\"age\", 33);\r\n        map.put(\"c\", null);\r\n\r\n        serializer.write(map);\r\n\r\n        Assert.assertEquals(\"{age:33}\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public static class User {\r\n\r\n        private int age;\r\n\r\n        public User(){\r\n        }\r\n\r\n        public User(int age){\r\n            this.age = age;\r\n        }\r\n\r\n        public int getAge() {\r\n            return age;\r\n        }\r\n\r\n        public void setAge(int age) {\r\n            this.age = age;\r\n        }\r\n\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/JSONSerializerMapTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport java.lang.reflect.Field;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.serializer.IntegerCodec;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.util.IdentityHashMap;\r\n\r\nimport junit.framework.TestCase;\r\n\r\n@SuppressWarnings(\"deprecation\")\r\npublic class JSONSerializerMapTest extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        SerializeConfig map = new SerializeConfig();\r\n\r\n        Assert.assertFalse(0 == size(map));\r\n        Assert.assertEquals(true, map.get(Integer.class) == IntegerCodec.instance);\r\n\r\n        Assert.assertEquals(true, map.put(Integer.class, IntegerCodec.instance));\r\n        Assert.assertEquals(true, map.put(Integer.class, IntegerCodec.instance));\r\n        Assert.assertEquals(true, map.put(Integer.class, IntegerCodec.instance));\r\n\r\n        Assert.assertEquals(true, map.get(Integer.class) == IntegerCodec.instance);\r\n\r\n        Assert.assertFalse(0 == size(map));\r\n    }\r\n    \r\n    public static int size(SerializeConfig config) throws Exception {\r\n        Field serializersField = SerializeConfig.class.getDeclaredField(\"serializers\");\r\n        serializersField.setAccessible(true);\r\n        Object map = serializersField.get(config);\r\n        \r\n        Field bucketsField = IdentityHashMap.class.getDeclaredField(\"buckets\");\r\n        bucketsField.setAccessible(true);\r\n        Object[] buckets = (Object[]) bucketsField.get(map);\r\n        \r\n        Field nextField = Class.forName(\"com.alibaba.fastjson.util.IdentityHashMap$Entry\").getDeclaredField(\"next\");\r\n        \r\n        int size = 0;\r\n        for (int i = 0; i < buckets.length; ++i) {\r\n            for (Object entry = buckets[i]; entry != null; entry = nextField.get(entry)) {\r\n                size++;\r\n            }\r\n        }\r\n        return size;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/JSONSerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport java.io.IOException;\r\nimport java.io.StringWriter;\r\nimport java.util.AbstractCollection;\r\nimport java.util.Collections;\r\nimport java.util.Date;\r\nimport java.util.Iterator;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSONAware;\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.JSONStreamAware;\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class JSONSerializerTest extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n        serializer.write(new C());\r\n\r\n        Assert.assertEquals(\"[]\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_0_s() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n        serializer.write(new C());\r\n\r\n        Assert.assertEquals(\"[]\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n        serializer.write(Collections.singletonList(1));\r\n\r\n        Assert.assertEquals(\"[1]\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_1_s() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n        serializer.write(Collections.singletonList(1));\r\n\r\n        Assert.assertEquals(\"[1]\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n        serializer.write(Collections.EMPTY_MAP);\r\n\r\n        Assert.assertEquals(\"{}\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_2_s() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n        serializer.write(Collections.EMPTY_MAP);\r\n\r\n        Assert.assertEquals(\"{}\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_3() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n        serializer.write(new JSONAware() {\r\n\r\n            public String toJSONString() {\r\n                return \"null\";\r\n            }\r\n        });\r\n\r\n        Assert.assertEquals(\"null\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_3_s() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n        serializer.write(new JSONAware() {\r\n\r\n            public String toJSONString() {\r\n                return \"null\";\r\n            }\r\n        });\r\n\r\n        Assert.assertEquals(\"null\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_4() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n        serializer.write(new JSONStreamAware() {\r\n\r\n            public void writeJSONString(Appendable out) throws IOException {\r\n                out.append(\"abc\");\r\n            }\r\n        });\r\n\r\n        Assert.assertEquals(\"abc\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_error() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            StringWriter out = new StringWriter();\r\n\r\n            JSONSerializer serializer = new JSONSerializer();\r\n            serializer.write(new JSONStreamAware() {\r\n\r\n                public void writeJSONString(Appendable out) throws IOException {\r\n                    throw new IOException();\r\n                }\r\n            });\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_5() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n        serializer.write(new A(3));\r\n\r\n        Assert.assertEquals(\"{\\\"id\\\":3}\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_5_null() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n        serializer.config(SerializerFeature.WriteMapNullValue, true);\r\n        serializer.write(new A(null));\r\n\r\n        Assert.assertEquals(\"{\\\"id\\\":null}\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_6() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n        serializer.write(new Date(1293805405498L));\r\n\r\n        Assert.assertEquals(\"1293805405498\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_7() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n        serializer.write(new B(1293805405498L));\r\n\r\n        Assert.assertEquals(\"{\\\"d\\\":1293805405498}\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_8() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n        serializer.write(new B());\r\n\r\n        Assert.assertEquals(\"{}\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_9() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n        serializer.write(new D(3L));\r\n\r\n        Assert.assertEquals(\"{\\\"id\\\":3}\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_9_null() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n        serializer.config(SerializerFeature.WriteMapNullValue, true);\r\n        serializer.write(new D(null));\r\n\r\n        Assert.assertEquals(\"{\\\"id\\\":null}\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_10() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n        serializer.write(3);\r\n\r\n        Assert.assertEquals(\"3\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_11() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n        serializer.write(3L);\r\n\r\n        Assert.assertEquals(\"3\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_12() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n        serializer.write(new Object[0]);\r\n\r\n        Assert.assertEquals(\"[]\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_13() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n        serializer.write(new Object[] { 1 });\r\n\r\n        Assert.assertEquals(\"[1]\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_14() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n        serializer.write(new Object[] { 1, 2, 3, 4 });\r\n\r\n        Assert.assertEquals(\"[1,2,3,4]\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_15() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n        serializer.write(new Object[] { 1L, 2L, 3L, 4L });\r\n\r\n        Assert.assertEquals(\"[1,2,3,4]\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_16() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n        serializer.write(new Object[] { \"\", \"\", \"\", \"\" });\r\n\r\n        Assert.assertEquals(\"[\\\"\\\",\\\"\\\",\\\"\\\",\\\"\\\"]\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_17() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n        serializer.write(new Object[] { null, null, null, null });\r\n\r\n        Assert.assertEquals(\"[null,null,null,null]\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public static class A {\r\n\r\n        private Integer id;\r\n\r\n        public A(Integer id){\r\n            super();\r\n            this.id = id;\r\n        }\r\n\r\n        public Integer getId() {\r\n            return id;\r\n        }\r\n\r\n        public void setId(Integer id) {\r\n            this.id = id;\r\n        }\r\n    }\r\n\r\n    public static class B {\r\n\r\n        private Date d;\r\n\r\n        public B(){\r\n\r\n        }\r\n\r\n        public B(long value){\r\n            super();\r\n            this.d = new Date(value);\r\n        }\r\n\r\n        public Date getD() {\r\n            return d;\r\n        }\r\n\r\n        public void setD(Date d) {\r\n            this.d = d;\r\n        }\r\n\r\n    }\r\n\r\n    public static class D {\r\n\r\n        private Long id;\r\n\r\n        public D(Long id){\r\n            super();\r\n            this.id = id;\r\n        }\r\n\r\n        public Long getId() {\r\n            return id;\r\n        }\r\n\r\n        public void setId(Long id) {\r\n            this.id = id;\r\n        }\r\n    }\r\n\r\n    public static class C extends AbstractCollection {\r\n\r\n        @Override\r\n        public Iterator iterator() {\r\n            return Collections.EMPTY_LIST.iterator();\r\n        }\r\n\r\n        @Override\r\n        public int size() {\r\n            return 0;\r\n        }\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/JSONSerializerTest1.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Calendar;\nimport java.util.Date;\nimport java.util.TimeZone;\n\npublic class JSONSerializerTest1 extends TestCase {\n    public void test_0 () throws Exception {\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        \n        Assert.assertEquals(0, serializer.getNameFilters().size());\n        Assert.assertEquals(0, serializer.getNameFilters().size());\n        \n        Assert.assertEquals(0, serializer.getValueFilters().size());\n        Assert.assertEquals(0, serializer.getValueFilters().size());\n        \n        Assert.assertEquals(0, serializer.getPropertyFilters().size());\n        Assert.assertEquals(0, serializer.getPropertyFilters().size());\n        \n        serializer.writeWithFormat(\"123\", null);\n    }\n\n    public void test_1() throws Exception {\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n\n        Calendar calendar = Calendar.getInstance();\n        calendar.clear();\n        calendar.set(2019, Calendar.SEPTEMBER, 5);\n        Date date = calendar.getTime();\n\n        String dateFormatPattern = \"yyyy/MM/dd\";\n        SimpleDateFormat sdf = new SimpleDateFormat(dateFormatPattern);\n\n        serializer.writeWithFormat(date, dateFormatPattern);\n\n        assertEquals(\"\\\"\" + sdf.format(date) + \"\\\"\", serializer.out.toString());\n    }\n\n    public void test_2() throws Exception {\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n\n        Calendar calendar = Calendar.getInstance();\n        calendar.clear();\n        calendar.set(2019, Calendar.SEPTEMBER, 5);\n        Date date = calendar.getTime();\n\n        String dateFormatPattern = \"yyyy.MM.dd\";\n        String temp = JSON.DEFFAULT_DATE_FORMAT;\n        JSON.DEFFAULT_DATE_FORMAT = dateFormatPattern;\n\n        SimpleDateFormat sdf = new SimpleDateFormat(JSON.DEFFAULT_DATE_FORMAT);\n        //传入null时调用JSON.DEFFAULT_DATE_FORMAT\n        serializer.writeWithFormat(date, null);\n\n        JSON.DEFFAULT_DATE_FORMAT = temp;\n\n        assertEquals(\"\\\"\" + sdf.format(date) + \"\\\"\", serializer.out.toString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/JSONSerializerTest2.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport java.io.IOException;\r\nimport java.io.Writer;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\nimport junit.framework.TestCase;\r\n\r\npublic class JSONSerializerTest2 extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n        serializer.getMapping().clearSerializers();\r\n\r\n        int size = JSONSerializerMapTest.size(serializer.getMapping());\r\n        serializer.config(SerializerFeature.WriteEnumUsingToString, false);\r\n        serializer.config(SerializerFeature.WriteEnumUsingName, false);\r\n        serializer.write(Type.A);\r\n\r\n        Assert.assertTrue(size < JSONSerializerMapTest.size(serializer.getMapping()));\r\n\r\n        Assert.assertEquals(Integer.toString(Type.A.ordinal()), serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n        serializer.config(SerializerFeature.WriteEnumUsingToString, false);\r\n        serializer.config(SerializerFeature.WriteEnumUsingName, false);\r\n        serializer.write(new A(Type.B));\r\n\r\n        Assert.assertEquals(\"{\\\"type\\\":\" + Integer.toString(Type.B.ordinal()) + \"}\", serializer.getWriter().toString());\r\n\r\n        A a = JSON.parseObject(serializer.getWriter().toString(), A.class);\r\n        Assert.assertEquals(a.getType(), Type.B);\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n        serializer.write(new C());\r\n\r\n        Assert.assertEquals(\"{}\", serializer.getWriter().toString());\r\n    }\r\n\r\n    public void test_3() throws Exception {\r\n        JSONSerializer serializer = new JSONSerializer();\r\n        serializer.config(SerializerFeature.WriteEnumUsingToString, true);\r\n        serializer.write(new A(Type.B));\r\n\r\n        Assert.assertEquals(\"{\\\"type\\\":\\\"B\\\"}\", serializer.getWriter().toString());\r\n\r\n        A a = JSON.parseObject(serializer.getWriter().toString(), A.class);\r\n        Assert.assertEquals(a.getType(), Type.B);\r\n    }\r\n\r\n    public void test_error() throws Exception {\r\n        Exception error = null;\r\n        try {\r\n            JSONSerializer.write(new Writer() {\r\n\r\n                @Override\r\n                public void write(char[] cbuf, int off, int len) throws IOException {\r\n                    throw new IOException();\r\n                }\r\n\r\n                @Override\r\n                public void flush() throws IOException {\r\n                    throw new IOException();\r\n                }\r\n\r\n                @Override\r\n                public void close() throws IOException {\r\n                    throw new IOException();\r\n                }\r\n\r\n            }, (Object) \"abc\");\r\n        } catch (Exception ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public static enum Type {\r\n        A, B\r\n    }\r\n\r\n    public static class A {\r\n\r\n        private Type type;\r\n\r\n        public A(){\r\n\r\n        }\r\n\r\n        public A(Type type){\r\n            super();\r\n            this.type = type;\r\n        }\r\n\r\n        public Type getType() {\r\n            return type;\r\n        }\r\n\r\n        public void setType(Type type) {\r\n            this.type = type;\r\n        }\r\n\r\n    }\r\n\r\n    public static class C {\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/JSONSerializerTest3.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\n\nimport junit.framework.TestCase;\n\npublic class JSONSerializerTest3 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_0() throws Exception {\n        JSONSerializer serializer = new JSONSerializer();\n\n        serializer.setDateFormat(\"yyyy\");\n        Assert.assertEquals(\"yyyy\", ((SimpleDateFormat) serializer.getDateFormat()).toPattern());\n        Assert.assertEquals(\"yyyy\",  serializer.getDateFormatPattern());\n        \n        serializer.setDateFormat(\"yyyy-MM\");\n        Assert.assertEquals(\"yyyy-MM\", ((SimpleDateFormat) serializer.getDateFormat()).toPattern());\n        \n        SimpleDateFormat format = new SimpleDateFormat(\"yyyy-MM-dd\");\n        format.setTimeZone(JSON.defaultTimeZone);\n        serializer.setDateFormat(format);\n        Assert.assertEquals(\"yyyy-MM-dd\",  serializer.getDateFormatPattern());\n        \n        serializer.close();\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/JSONTypeIncludesTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\n\nimport junit.framework.TestCase;\n\npublic class JSONTypeIncludesTest extends TestCase {\n    public void test_includes() throws Exception {\n        Model model = new Model();\n        model.id = 1001;\n        model.name = \"wenshao\";\n        \n        String text = JSON.toJSONString(model);\n        System.out.println(text);\n    }\n    \n    @JSONType(includes=\"name\")\n    public static class Model {\n        public int id;\n        public String name;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/JavaBeanSerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Collection;\r\nimport java.util.List;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.fastjson.serializer.FieldSerializer;\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.JavaBeanSerializer;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\n\r\npublic class JavaBeanSerializerTest extends TestCase {\r\n\r\n    public void test_0_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        A a = new A();\r\n        a.getL0().add(\"A\");\r\n        a.getL0().add(\"B\");\r\n\r\n        JavaBeanSerializer serializer = new JavaBeanSerializer(A.class);\r\n        serializer.write(new JSONSerializer(out), a, null, null, 0);\r\n\r\n        Assert.assertEquals(\"{\\\"l0\\\":[\\\"A\\\",\\\"B\\\"]}\", out.toString());\r\n    }\r\n\r\n    public void test_1_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        B a = new B();\r\n        a.getL0().add(\"A\");\r\n        a.getL0().add(\"B\");\r\n\r\n        JavaBeanSerializer serializer = new JavaBeanSerializer(B.class);\r\n        serializer.write(new JSONSerializer(out), a, null, null, 0);\r\n\r\n        Assert.assertEquals(\"{\\\"l0\\\":[\\\"A\\\",\\\"B\\\"],\\\"l1\\\":[]}\", out.toString());\r\n    }\r\n\r\n    public void test_2_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        JavaBeanSerializer serializer = new JavaBeanSerializer(F.class);\r\n        serializer.write(new JSONSerializer(out), new F(new E(123)), null, null, 0);\r\n\r\n        Assert.assertEquals(\"{\\\"e\\\":{\\\"id\\\":123}}\", out.toString());\r\n    }\r\n\r\n    public void test_3_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        JavaBeanSerializer serializer = new JavaBeanSerializer(F.class);\r\n        serializer.write(new JSONSerializer(out), new F(null), null, null, 0);\r\n\r\n        Assert.assertEquals(\"{}\", out.toString());\r\n    }\r\n\r\n    public void test_error_s() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            SerializeWriter out = new SerializeWriter();\r\n            JavaBeanSerializer serializer = new JavaBeanSerializer(C.class);\r\n            serializer.write(new JSONSerializer(out), new C(), null, null, 0);\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error_1_s() throws Exception {\r\n        JSONException error = null;\r\n        try {\r\n            SerializeWriter out = new SerializeWriter();\r\n            JavaBeanSerializer serializer = new JavaBeanSerializer(D.class);\r\n            serializer.write(new JSONSerializer(out), new D(), null, null, 0);\r\n        } catch (JSONException e) {\r\n            error = e;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public static class A {\r\n\r\n        private List<String> l0 = new ArrayList<String>();\r\n\r\n        public List<String> getL0() {\r\n            return l0;\r\n        }\r\n\r\n        public void setL0(List<String> l0) {\r\n            this.l0 = l0;\r\n        }\r\n\r\n        public Object get() {\r\n            return null;\r\n        }\r\n\r\n        public Object getx() {\r\n            return null;\r\n        }\r\n\r\n        public boolean is() {\r\n            return true;\r\n        }\r\n\r\n        public boolean isx() {\r\n            return true;\r\n        }\r\n    }\r\n\r\n    public static class B {\r\n\r\n        private Collection<String> l0 = new ArrayList<String>();\r\n        private Collection<String> l1 = new ArrayList<String>();\r\n\r\n        public Collection<String> getL1() {\r\n            return l1;\r\n        }\r\n\r\n        public void setL1(Collection<String> l1) {\r\n            this.l1 = l1;\r\n        }\r\n\r\n        public Collection<String> getL0() {\r\n            return l0;\r\n        }\r\n\r\n        public void setL0(Collection<String> l0) {\r\n            this.l0 = l0;\r\n        }\r\n\r\n        public Object get() {\r\n            return null;\r\n        }\r\n\r\n        public Object getx() {\r\n            return null;\r\n        }\r\n\r\n        public boolean is() {\r\n            return true;\r\n        }\r\n\r\n        public boolean isx() {\r\n            return true;\r\n        }\r\n    }\r\n\r\n    public static class C {\r\n\r\n        public List<String> getL0() {\r\n            throw new RuntimeException();\r\n        }\r\n\r\n        public void setL0(List<String> l0) {\r\n        }\r\n    }\r\n\r\n    public static class D {\r\n\r\n        public Collection<String> getL0() {\r\n            throw new RuntimeException();\r\n        }\r\n    }\r\n\r\n    public static class E {\r\n\r\n        private int id;\r\n\r\n        public E(){\r\n        }\r\n\r\n        public E(int id){\r\n            this.id = id;\r\n        }\r\n\r\n        public int getId() {\r\n            return id;\r\n        }\r\n\r\n        public void setId(int id) {\r\n            this.id = id;\r\n        }\r\n    }\r\n\r\n    public static class F {\r\n\r\n        private E e;\r\n\r\n        public F(){\r\n        }\r\n\r\n        public F(E e){\r\n            this.e = e;\r\n        }\r\n\r\n        public E getE() {\r\n            return e;\r\n        }\r\n\r\n        public void setE(E e) {\r\n            this.e = e;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/JavaBeanSerializerTest2.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport java.util.Collections;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.annotation.JSONField;\r\nimport com.alibaba.fastjson.serializer.JavaBeanSerializer;\r\n\r\npublic class JavaBeanSerializerTest2 extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        new JavaBeanSerializer(A.class, Collections.<String, String> emptyMap());\r\n    }\r\n\r\n    public static class A {\r\n\r\n        @JSONField(name = \"uid\")\r\n        private int     id;\r\n        private String  name;\r\n\r\n        @JSONField(deserialize = false)\r\n        private boolean b1;\r\n\r\n        @JSONField(name = \"B2\")\r\n        private boolean b2;\r\n\r\n        private byte[]  bytes;\r\n\r\n        public byte[] getBytes() {\r\n            return bytes;\r\n        }\r\n\r\n        public void setBytes(byte[] bytes) {\r\n            this.bytes = bytes;\r\n        }\r\n\r\n        public boolean isB2() {\r\n            return b2;\r\n        }\r\n\r\n        public void setB2(boolean b2) {\r\n            this.b2 = b2;\r\n        }\r\n\r\n        public boolean isB1() {\r\n            return b1;\r\n        }\r\n\r\n        public void setB1(boolean b1) {\r\n            this.b1 = b1;\r\n        }\r\n\r\n        public int getId() {\r\n            return id;\r\n        }\r\n\r\n        public void setId(int id) {\r\n            this.id = id;\r\n        }\r\n\r\n        @JSONField(name = \"xname\")\r\n        public String getName() {\r\n            return name;\r\n        }\r\n\r\n        public void setName(String name) {\r\n            this.name = name;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ListFieldTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class ListFieldTest extends TestCase {\n\n    public void test_for_list() throws Exception {\n        Model model = new Model();\n        model.id = 1000;\n        Assert.assertEquals(\"{\\\"id\\\":1000,\\\"values\\\":[]}\", JSON.toJSONString(model));\n        \n        model.values.add(\"1001\");\n        Assert.assertEquals(\"{\\\"id\\\":1000,\\\"values\\\":[\\\"1001\\\"]}\", JSON.toJSONString(model));\n        \n        model.values.add(\"1002\");\n        Assert.assertEquals(\"{\\\"id\\\":1000,\\\"values\\\":[\\\"1001\\\",\\\"1002\\\"]}\", JSON.toJSONString(model));\n        \n        model.values.add(\"1003\");\n        Assert.assertEquals(\"{\\\"id\\\":1000,\\\"values\\\":[\\\"1001\\\",\\\"1002\\\",\\\"1003\\\"]}\", JSON.toJSONString(model));\n    }\n\n    public static class Model {\n\n        private int          id;\n        private List<String> values = new ArrayList<String>();\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public List<String> getValues() {\n            return values;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ListSerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.ListSerializer;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\nimport junit.framework.TestCase;\r\nimport org.junit.Assert;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Collections;\r\nimport java.util.List;\r\n\r\npublic class ListSerializerTest extends TestCase {\r\n\r\n    public void test_0_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        ListSerializer listSerializer = new ListSerializer();\r\n        listSerializer.write(new JSONSerializer(out), Collections.EMPTY_LIST, null, null, 0);\r\n\r\n        Assert.assertEquals(\"[]\", out.toString());\r\n    }\r\n\r\n    public void test_2_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        ListSerializer listSerializer = new ListSerializer();\r\n        List<Object> list = new ArrayList<Object>();\r\n        list.add(1);\r\n        list.add(2);\r\n        listSerializer.write(new JSONSerializer(out), list, null, null, 0);\r\n\r\n        Assert.assertEquals(\"[1,2]\", out.toString());\r\n    }\r\n\r\n    public void test_3_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        ListSerializer listSerializer = new ListSerializer();\r\n        List<Object> list = new ArrayList<Object>();\r\n        list.add(1);\r\n        list.add(2);\r\n        list.add(3);\r\n        listSerializer.write(new JSONSerializer(out), list, null, null, 0);\r\n\r\n        Assert.assertEquals(\"[1,2,3]\", out.toString());\r\n    }\r\n\r\n    public void test_4_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        ListSerializer listSerializer = new ListSerializer();\r\n        List<Object> list = new ArrayList<Object>();\r\n        list.add(1L);\r\n        list.add(2L);\r\n        list.add(3L);\r\n        list.add(Collections.emptyMap());\r\n        listSerializer.write(new JSONSerializer(out), list, null, null, 0);\r\n\r\n        Assert.assertEquals(\"[1,2,3,{}]\", out.toString());\r\n    }\r\n\r\n    public void test_5_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        ListSerializer listSerializer = new ListSerializer();\r\n        List<Object> list = new ArrayList<Object>();\r\n        list.add(1L);\r\n        list.add(21474836480L);\r\n        list.add(null);\r\n        list.add(Collections.emptyMap());\r\n        list.add(21474836480L);\r\n        listSerializer.write(new JSONSerializer(out), list, null, null, 0);\r\n\r\n        Assert.assertEquals(\"[1,21474836480,null,{},21474836480]\", out.toString());\r\n    }\r\n\r\n    public void test_6_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(SerializerFeature.BrowserCompatible);\r\n\r\n        ListSerializer listSerializer = new ListSerializer();\r\n        List<Object> list = new ArrayList<Object>();\r\n        list.add(1L);\r\n        list.add(1453964515792017682L);\r\n        listSerializer.write(new JSONSerializer(out), list, null, null, 0);\r\n\r\n        Assert.assertEquals(\"[1,\\\"1453964515792017682\\\"]\", out.toString());\r\n    }\r\n\r\n    public void test_7_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(\r\n                SerializerFeature.BrowserCompatible, SerializerFeature.WriteClassName\r\n        );\r\n\r\n        ListSerializer listSerializer = new ListSerializer();\r\n        List<Object> list = new ArrayList<Object>();\r\n        list.add(1L);\r\n        list.add(1453964515792017682L);\r\n        listSerializer.write(new JSONSerializer(out), list, null, null, 0);\r\n\r\n        Assert.assertEquals(\"[1L,1453964515792017682L]\", out.toString());\r\n    }\r\n\r\n    public void test_8_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(SerializerFeature.WriteClassName);\r\n\r\n        ListSerializer listSerializer = new ListSerializer();\r\n        List<Object> list = new ArrayList<Object>();\r\n        list.add(1L);\r\n        list.add(1453964515792017682L);\r\n        listSerializer.write(new JSONSerializer(out), list, null, null, 0);\r\n\r\n        Assert.assertEquals(\"[1L,1453964515792017682L]\", out.toString());\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ListSerializerTest2.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport java.util.Arrays;\r\nimport java.util.List;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.ListSerializer;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\n\r\npublic class ListSerializerTest2 extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        ListSerializer listSerializer = new ListSerializer();\r\n\r\n        Object[] array = new Object[] { 1, 2, 3L, 4L, 5, 6, \"a\" };\r\n\r\n        List<Object> list = Arrays.asList(array);\r\n\r\n        listSerializer.write(new JSONSerializer(out), list, null, null, 0);\r\n\r\n        // System.out.println(out.toString());\r\n        Assert.assertEquals(\"[1,2,3,4,5,6,\\\"a\\\"]\", out.toString());\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ListSerializerTest3.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.LinkedList;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.ListSerializer;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\n\r\npublic class ListSerializerTest3 extends TestCase {\r\n\r\n    public void test_1() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n        ListSerializer listSerializer = new ListSerializer();\r\n\r\n        ArrayList<Object> list = new ArrayList<Object>();\r\n        for (int i = 0; i < 100000; i++) {\r\n            list.add(i);\r\n        }\r\n\r\n        long start = System.currentTimeMillis();\r\n        listSerializer.write(new JSONSerializer(out), list, null, null, 0);\r\n        long end = System.currentTimeMillis();\r\n\r\n        System.out.println(\"arrayList time: \" + (end - start));\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        ListSerializer listSerializer = new ListSerializer();\r\n\r\n        LinkedList<Object> list = new LinkedList<Object>();\r\n        for (int i = 0; i < 100000; i++) {\r\n            list.add(i);\r\n        }\r\n\r\n        long start = System.currentTimeMillis();\r\n        listSerializer.write(new JSONSerializer(out), list, null, null, 0);\r\n        long end = System.currentTimeMillis();\r\n\r\n        System.out.println(\"linkedList time: \" + (end - start));\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ListTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.util.LinkedList;\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class ListTest extends TestCase {\n\n    public void test_null() throws Exception {\n        List list = new LinkedList();\n        list.add(23L);\n        list.add(45L);\n\n        Assert.assertEquals(\"[23L,45L]\", JSON.toJSONString(list, SerializerFeature.WriteClassName));\n    }\n\n    public static class VO {\n\n        private Object value;\n\n        public Object getValue() {\n            return value;\n        }\n\n        public void setValue(Object value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/LocalTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.util.Locale;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class LocalTest extends TestCase {\n\n    public void test_timezone() throws Exception {\n        String text = JSON.toJSONString(Locale.CHINA);\n\n        Assert.assertEquals(JSON.toJSONString(Locale.CHINA.toString()), text);\n     \n        Locale locale = JSON.parseObject(text, Locale.class);\n        Assert.assertEquals(Locale.CHINA, locale);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/LongArraySerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class LongArraySerializerTest extends TestCase {\r\n\r\n    public void test_0() {\r\n        Assert.assertEquals(\"[]\", JSON.toJSONString(new long[0]));\r\n        Assert.assertEquals(\"[1,2]\", JSON.toJSONString(new long[] { 1, 2 }));\r\n        Assert.assertEquals(\"[1,2,3,-4]\", JSON.toJSONString(new long[] { 1, 2, 3, -4 }));\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", JSON.toJSONString(new Entity(), SerializerFeature.WriteMapNullValue));\r\n        Assert.assertEquals(\"{\\\"value\\\":[]}\", JSON.toJSONString(new Entity(), SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty));\r\n    }\r\n\r\n    public static class Entity {\r\n\r\n        private long[] value;\r\n\r\n        public long[] getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(long[] value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/MapSerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport java.util.Collections;\r\nimport java.util.LinkedHashMap;\r\nimport java.util.Map;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONObject;\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.MapSerializer;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class MapSerializerTest extends TestCase {\r\n\r\n    public void test_empty_1() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        MapSerializer mapSerializer = new MapSerializer();\r\n        mapSerializer.write(new JSONSerializer(out), Collections.EMPTY_MAP, null, null, 0);\r\n\r\n        Assert.assertEquals(\"{}\", out.toString());\r\n    }\r\n\r\n    public void test_singleton_1() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        MapSerializer mapSerializer = new MapSerializer();\r\n        mapSerializer.write(new JSONSerializer(out), Collections.singletonMap(\"A\", 1), null, null, 0);\r\n\r\n        Assert.assertEquals(\"{\\\"A\\\":1}\", out.toString());\r\n    }\r\n\r\n    public void test_int2_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        MapSerializer mapSerializer = new MapSerializer();\r\n        Map<String, Integer> map = new LinkedHashMap<String, Integer>();\r\n        map.put(\"A\", 1);\r\n        map.put(\"B\", 2);\r\n        mapSerializer.write(new JSONSerializer(out), map, null, null, 0);\r\n\r\n        Assert.assertEquals(\"{\\\"A\\\":1,\\\"B\\\":2}\", out.toString());\r\n    }\r\n\r\n    public void test_long2_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        MapSerializer mapSerializer = new MapSerializer();\r\n        Map<String, Long> map = new LinkedHashMap<String, Long>();\r\n        map.put(\"A\", 1L);\r\n        map.put(\"B\", 2L);\r\n        mapSerializer.write(new JSONSerializer(out), map, null, null, 0);\r\n\r\n        Assert.assertEquals(\"{\\\"A\\\":1,\\\"B\\\":2}\", out.toString());\r\n    }\r\n\r\n    public void test_string2_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        MapSerializer mapSerializer = new MapSerializer();\r\n        Map<String, String> map = new LinkedHashMap<String, String>();\r\n        map.put(\"A\", \"1\");\r\n        map.put(\"B\", \"2\");\r\n        mapSerializer.write(new JSONSerializer(out), map, null, null, 0);\r\n\r\n        Assert.assertEquals(\"{\\\"A\\\":\\\"1\\\",\\\"B\\\":\\\"2\\\"}\", out.toString());\r\n    }\r\n\r\n    public void test_string3_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.config(SerializerFeature.UseSingleQuotes, true);\r\n\r\n        MapSerializer mapSerializer = new MapSerializer();\r\n        Map<String, String> map = new LinkedHashMap<String, String>();\r\n        map.put(\"A\", \"1\");\r\n        map.put(\"B\", \"2\");\r\n        mapSerializer.write(serializer, map, null, null, 0);\r\n\r\n        Assert.assertEquals(\"{'A':'1','B':'2'}\", out.toString());\r\n    }\r\n\r\n    public void test_special_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        MapSerializer mapSerializer = new MapSerializer();\r\n        mapSerializer.write(new JSONSerializer(out), Collections.singletonMap(\"A\\nB\", 1), null, null, 0);\r\n\r\n        Assert.assertEquals(\"{\\\"A\\\\nB\\\":1}\", out.toString());\r\n    }\r\n\r\n    public void test_special2_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        MapSerializer mapSerializer = new MapSerializer();\r\n        mapSerializer.write(new JSONSerializer(out), Collections.singletonMap(\"A\\nB\", 1), null, null, 0);\r\n\r\n        Assert.assertEquals(\"{\\\"A\\\\nB\\\":1}\", out.toString());\r\n    }\r\n\r\n    public void test_special3_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        MapSerializer mapSerializer = new MapSerializer();\r\n        mapSerializer.write(new JSONSerializer(out), Collections.singletonMap(\"A\\nB\", Collections.EMPTY_MAP), null, null, 0);\r\n\r\n        Assert.assertEquals(\"{\\\"A\\\\nB\\\":{}}\", out.toString());\r\n    }\r\n\r\n    public void test_4() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n        Map<String, Object> map = new LinkedHashMap<String, Object>();\r\n        map.put(\"TOP\", \"value\");\r\n        map.put(\"bytes\", new byte[] { 1, 2 });\r\n\r\n        MapSerializer mapSerializer = new MapSerializer();\r\n        mapSerializer.write(new JSONSerializer(out), map, null, null, 0);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"TOP\\\":\\\"value\\\",\\\"bytes\\\":\\\"AQI=\\\"}\", text);\r\n        \r\n        JSONObject json = JSON.parseObject(text);\r\n        byte[] bytes = json.getBytes(\"bytes\");\r\n        Assert.assertEquals(1, bytes[0]);\r\n        Assert.assertEquals(2, bytes[1]);\r\n        Assert.assertEquals(2, bytes.length);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/MapTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.annotation.JSONField;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic class MapTest extends TestCase {\n\n    public void test_no_sort() throws Exception {\n        JSONObject obj = new JSONObject(true);\n        obj.put(\"name\", \"jobs\");\n        obj.put(\"id\", 33);\n        String text = toJSONString(obj);\n        Assert.assertEquals(\"{'name':'jobs','id':33}\", text);\n    }\n    \n    public void test_null() throws Exception {\n        JSONObject obj = new JSONObject(true);\n        obj.put(\"name\", null);\n        String text = JSON.toJSONString(obj, SerializerFeature.WriteMapNullValue);\n        Assert.assertEquals(\"{\\\"name\\\":null}\", text);\n    }\n\n    public static final String toJSONString(Object object) {\n        SerializeWriter out = new SerializeWriter();\n\n        try {\n            JSONSerializer serializer = new JSONSerializer(out);\n            serializer.config(SerializerFeature.SortField, false);\n            serializer.config(SerializerFeature.UseSingleQuotes, true);\n\n            serializer.write(object);\n\n            return out.toString();\n        } catch (StackOverflowError e) {\n            throw new JSONException(\"maybe circular references\", e);\n        } finally {\n            out.close();\n        }\n    }\n\n    public void test_onJSONField() {\n        Map<String, String> map = new HashMap();\n        map.put(\"Ariston\", null);\n        MapNullValue mapNullValue = new MapNullValue();\n        mapNullValue.setMap( map );\n        String json = JSON.toJSONString( mapNullValue );\n        assertEquals(\"{\\\"map\\\":{\\\"Ariston\\\":null}}\", json);\n    }\n\n    class MapNullValue {\n        @JSONField(serialzeFeatures = {SerializerFeature.WriteMapNullValue})\n        private Map map;\n\n        public Map getMap() {\n            return map;\n        }\n\n        public void setMap( Map map ) {\n            this.map = map;\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/MaxBufSizeTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 01/04/2017.\n */\npublic class MaxBufSizeTest extends TestCase {\n    public void test_max_buf() throws Exception {\n        SerializeWriter writer = new SerializeWriter();\n\n        Throwable error = null;\n        try {\n            writer.setMaxBufSize(1);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/MaxBufSizeTest2.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport junit.framework.TestCase;\n\nimport java.util.Arrays;\n\n/**\n * Created by wenshao on 01/04/2017.\n */\npublic class MaxBufSizeTest2 extends TestCase {\n    public void test_max_buf() throws Exception {\n        char[] chars = new char[4096];\n        Arrays.fill(chars, '0');\n\n\n        JSONObject jsonObject = new JSONObject();\n        jsonObject.put(\"val\", new String(chars));\n\n        Throwable error = null;\n        try {\n            toJSONString(jsonObject);\n        } catch (JSONException e) {\n            error = e;\n        }\n        assertNotNull(error);\n    }\n\n    public String toJSONString(Object obj) {\n\n        SerializeWriter out = new SerializeWriter();\n        out.setMaxBufSize(4096);\n        try {\n            new JSONSerializer(out).write(obj);\n            return out.toString();\n        } finally {\n            out.close();\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/MultiFieldIntTest_writer.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.io.StringWriter;\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONWriter;\nimport com.alibaba.fastjson.TypeReference;\n\nimport junit.framework.TestCase;\n\npublic class MultiFieldIntTest_writer extends TestCase {\n    \n    public void test_for_big_writer() throws Exception {\n        List<Model> list = new ArrayList<Model>();\n        \n        for (int i = 0; i < 1024 * 10; ++i) {\n            Model model = new Model();\n            model.id = 10000000 + i;\n            list.add(model);\n        }\n        \n        StringWriter out = new StringWriter();\n        JSONWriter writer = new JSONWriter(out);\n        writer.writeObject(list);\n        writer.close();\n        \n        String text = out.toString();\n        System.out.println(text);\n        List<Model> results = JSON.parseObject(text, new TypeReference<List<Model>>() {});\n        \n        Assert.assertEquals(list.size(), results.size());\n        for (int i = 0; i < results.size(); ++i) {\n            Assert.assertEquals(list.get(i).id, results.get(i).id);\n        }\n    }\n    \n    public static class Model {\n        public int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/MultiFieldIntTest_writer2.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.io.StringWriter;\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONWriter;\nimport com.alibaba.fastjson.TypeReference;\n\nimport junit.framework.TestCase;\n\npublic class MultiFieldIntTest_writer2 extends TestCase {\n    \n    public void test_for_big_writer() throws Exception {\n        List<Model> list = new ArrayList<Model>();\n        \n        for (int i = 0; i < 1024 * 10; ++i) {\n            Model model = new Model();\n            model.i = 0;\n            model.j = 1;\n            model.k = 2;\n            model.v = 3;\n            model.l = 4;\n            model.m = 5;\n            model.n = 6;\n            list.add(model);\n        }\n        \n        StringWriter out = new StringWriter();\n        JSONWriter writer = new JSONWriter(out);\n        writer.writeObject(list);\n        writer.close();\n        \n        String text = out.toString();\n        System.out.println(text);\n        List<Model> results = JSON.parseObject(text, new TypeReference<List<Model>>() {});\n        \n        Assert.assertEquals(list.size(), results.size());\n        for (int i = 0; i < results.size(); ++i) {\n            Assert.assertEquals(list.get(i).i, results.get(i).i);\n            Assert.assertEquals(list.get(i).j, results.get(i).j);\n            Assert.assertEquals(list.get(i).k, results.get(i).k);\n            Assert.assertEquals(list.get(i).v, results.get(i).v);\n            Assert.assertEquals(list.get(i).l, results.get(i).l);\n            Assert.assertEquals(list.get(i).m, results.get(i).m);\n            Assert.assertEquals(list.get(i).n, results.get(i).n);\n        }\n    }\n    \n    public static class Model {\n        public int i;\n        public int j;\n        public int k;\n        public int l;\n        public int m;\n        public int n;\n        public int v;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/NoneStringKeyTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\n@SuppressWarnings({ \"rawtypes\", \"unchecked\" })\npublic class NoneStringKeyTest extends TestCase {\n\n    public void test_0() throws Exception {\n        Map map = new HashMap();\n        map.put(1, 101);\n\n        Assert.assertEquals(\"{1:101}\", JSON.toJSONString(map));\n    }\n\n    public void test_1() throws Exception {\n        Map map = new HashMap();\n        map.put(1, 101);\n\n        Assert.assertEquals(\"{\\\"1\\\":101}\", JSON.toJSONString(map, SerializerFeature.BrowserCompatible));\n    }\n\n    public void test_2() throws Exception {\n        Map map = new HashMap();\n        map.put(1, 101);\n\n        Assert.assertEquals(\"{\\\"1\\\":101}\", JSON.toJSONString(map, SerializerFeature.WriteNonStringKeyAsString));\n    }\n\n    public void test_null_0() throws Exception {\n        Map map = new HashMap();\n        map.put(null, 101);\n\n        Assert.assertEquals(\"{null:101}\", JSON.toJSONString(map));\n    }\n\n    public void test_3() throws Exception {\n        Map map = new HashMap();\n        map.put(null, 101);\n\n        Assert.assertEquals(\"{\\\"null\\\":101}\", JSON.toJSONString(map, SerializerFeature.WriteNonStringKeyAsString));\n    }\n\n    public void test_4() throws Exception {\n        SubjectDTO dto = new SubjectDTO();\n        dto.getResults().put(3, new Result());\n\n        String json = JSON.toJSONString(dto);\n        assertEquals(\"{\\\"results\\\":{3:{}}}\", json);\n\n        SubjectDTO dto2 = JSON.parseObject(json, SubjectDTO.class, Feature.NonStringKeyAsString);\n        System.out.println(JSON.toJSONString(dto2.getResults()));\n    }\n\n    public static class Result {\n\n    }\n\n    public static class SubjectDTO {\n        private Map<Integer, Result> results = new HashMap<Integer, Result>();\n\n        public Map<Integer, Result> getResults() {\n            return results;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/NotWriteDefaultValueTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class NotWriteDefaultValueTest extends TestCase {\n\n    public void test_for_byte() throws Exception {\n        VO_Byte vo = new VO_Byte();\n        String text = JSON.toJSONString(vo, SerializerFeature.NotWriteDefaultValue);\n        Assert.assertEquals(\"{}\", text);\n    }\n\n    public void test_for_short() throws Exception {\n        VO_Short vo = new VO_Short();\n        String text = JSON.toJSONString(vo, SerializerFeature.NotWriteDefaultValue);\n        Assert.assertEquals(\"{}\", text);\n    }\n\n    public void test_for_int() throws Exception {\n        VO_Int vo = new VO_Int();\n        String text = JSON.toJSONString(vo, SerializerFeature.NotWriteDefaultValue);\n        Assert.assertEquals(\"{}\", text);\n    }\n\n    public void test_for_long() throws Exception {\n        VO_Long vo = new VO_Long();\n        String text = JSON.toJSONString(vo, SerializerFeature.NotWriteDefaultValue);\n        Assert.assertEquals(\"{}\", text);\n    }\n\n    public void test_for_float() throws Exception {\n        VO_Float vo = new VO_Float();\n        String text = JSON.toJSONString(vo, SerializerFeature.NotWriteDefaultValue);\n        Assert.assertEquals(\"{}\", text);\n    }\n\n    public void test_for_double() throws Exception {\n        VO_Double vo = new VO_Double();\n        String text = JSON.toJSONString(vo, SerializerFeature.NotWriteDefaultValue);\n        Assert.assertEquals(\"{}\", text);\n    }\n    \n    public void test_for_boolean() throws Exception {\n        VO_Boolean vo = new VO_Boolean();\n        vo.f1 = true;\n        String text = JSON.toJSONString(vo, SerializerFeature.NotWriteDefaultValue);\n        Assert.assertEquals(\"{\\\"f1\\\":true}\", text);\n    }\n\n    public static class VO_Byte {\n\n        private byte f0;\n        private byte f1;\n\n        public byte getF0() {\n            return f0;\n        }\n\n        public void setF0(byte f0) {\n            this.f0 = f0;\n        }\n\n        public byte getF1() {\n            return f1;\n        }\n\n        public void setF1(byte f1) {\n            this.f1 = f1;\n        }\n\n    }\n\n    public static class VO_Short {\n\n        private short f0;\n        private short f1;\n\n        public short getF0() {\n            return f0;\n        }\n\n        public void setF0(short f0) {\n            this.f0 = f0;\n        }\n\n        public short getF1() {\n            return f1;\n        }\n\n        public void setF1(short f1) {\n            this.f1 = f1;\n        }\n\n    }\n\n    public static class VO_Int {\n\n        private int f0;\n        private int f1;\n\n        public int getF0() {\n            return f0;\n        }\n\n        public void setF0(int f0) {\n            this.f0 = f0;\n        }\n\n        public int getF1() {\n            return f1;\n        }\n\n        public void setF1(int f1) {\n            this.f1 = f1;\n        }\n    }\n\n    public static class VO_Long {\n\n        private long f0;\n        private long f1;\n\n        public long getF0() {\n            return f0;\n        }\n\n        public void setF0(long f0) {\n            this.f0 = f0;\n        }\n\n        public long getF1() {\n            return f1;\n        }\n\n        public void setF1(long f1) {\n            this.f1 = f1;\n        }\n\n    }\n\n    public static class VO_Float {\n\n        private float f0;\n        private float f1;\n\n        public float getF0() {\n            return f0;\n        }\n\n        public void setF0(float f0) {\n            this.f0 = f0;\n        }\n\n        public float getF1() {\n            return f1;\n        }\n\n        public void setF1(float f1) {\n            this.f1 = f1;\n        }\n\n    }\n\n    public static class VO_Double {\n\n        private double f0;\n        private double f1;\n\n        public double getF0() {\n            return f0;\n        }\n\n        public void setF0(double f0) {\n            this.f0 = f0;\n        }\n\n        public double getF1() {\n            return f1;\n        }\n\n        public void setF1(double f1) {\n            this.f1 = f1;\n        }\n\n    }\n    \n    public static class VO_Boolean {\n\n        private boolean f0;\n        private boolean f1;\n\n        public boolean isF0() {\n            return f0;\n        }\n\n        public void setF0(boolean f0) {\n            this.f0 = f0;\n        }\n\n        public boolean isF1() {\n            return f1;\n        }\n\n        public void setF1(boolean f1) {\n            this.f1 = f1;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/NotWriteDefaultValueTest_NoneASM.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class NotWriteDefaultValueTest_NoneASM extends TestCase {\n\n    public void test_for_byte() throws Exception {\n        VO_Byte vo = new VO_Byte();\n        String text = JSON.toJSONString(vo, SerializerFeature.NotWriteDefaultValue);\n        Assert.assertEquals(\"{}\", text);\n    }\n\n    public void test_for_short() throws Exception {\n        VO_Short vo = new VO_Short();\n        String text = JSON.toJSONString(vo, SerializerFeature.NotWriteDefaultValue);\n        Assert.assertEquals(\"{}\", text);\n    }\n\n    public void test_for_int() throws Exception {\n        VO_Int vo = new VO_Int();\n        String text = JSON.toJSONString(vo, SerializerFeature.NotWriteDefaultValue);\n        Assert.assertEquals(\"{}\", text);\n    }\n\n    public void test_for_long() throws Exception {\n        VO_Long vo = new VO_Long();\n        String text = JSON.toJSONString(vo, SerializerFeature.NotWriteDefaultValue);\n        Assert.assertEquals(\"{}\", text);\n    }\n\n    public void test_for_float() throws Exception {\n        VO_Float vo = new VO_Float();\n        String text = JSON.toJSONString(vo, SerializerFeature.NotWriteDefaultValue);\n        Assert.assertEquals(\"{}\", text);\n    }\n\n    public void test_for_double() throws Exception {\n        VO_Double vo = new VO_Double();\n        String text = JSON.toJSONString(vo, SerializerFeature.NotWriteDefaultValue);\n        Assert.assertEquals(\"{}\", text);\n    }\n    \n    public void test_for_boolean() throws Exception {\n        VO_Boolean vo = new VO_Boolean();\n        vo.f1 = true;\n        String text = JSON.toJSONString(vo, SerializerFeature.NotWriteDefaultValue);\n        Assert.assertEquals(\"{\\\"f1\\\":true}\", text);\n    }\n\n    private static class VO_Byte {\n\n        private byte f0;\n        private byte f1;\n\n        public byte getF0() {\n            return f0;\n        }\n\n        public void setF0(byte f0) {\n            this.f0 = f0;\n        }\n\n        public byte getF1() {\n            return f1;\n        }\n\n        public void setF1(byte f1) {\n            this.f1 = f1;\n        }\n\n    }\n\n    private static class VO_Short {\n\n        private short f0;\n        private short f1;\n\n        public short getF0() {\n            return f0;\n        }\n\n        public void setF0(short f0) {\n            this.f0 = f0;\n        }\n\n        public short getF1() {\n            return f1;\n        }\n\n        public void setF1(short f1) {\n            this.f1 = f1;\n        }\n\n    }\n\n    private static class VO_Int {\n\n        private int f0;\n        private int f1;\n\n        public int getF0() {\n            return f0;\n        }\n\n        public void setF0(int f0) {\n            this.f0 = f0;\n        }\n\n        public int getF1() {\n            return f1;\n        }\n\n        public void setF1(int f1) {\n            this.f1 = f1;\n        }\n    }\n\n    private static class VO_Long {\n\n        private long f0;\n        private long f1;\n\n        public long getF0() {\n            return f0;\n        }\n\n        public void setF0(long f0) {\n            this.f0 = f0;\n        }\n\n        public long getF1() {\n            return f1;\n        }\n\n        public void setF1(long f1) {\n            this.f1 = f1;\n        }\n\n    }\n\n    private static class VO_Float {\n\n        private float f0;\n        private float f1;\n\n        public float getF0() {\n            return f0;\n        }\n\n        public void setF0(float f0) {\n            this.f0 = f0;\n        }\n\n        public float getF1() {\n            return f1;\n        }\n\n        public void setF1(float f1) {\n            this.f1 = f1;\n        }\n\n    }\n\n    private static class VO_Double {\n\n        private double f0;\n        private double f1;\n\n        public double getF0() {\n            return f0;\n        }\n\n        public void setF0(double f0) {\n            this.f0 = f0;\n        }\n\n        public double getF1() {\n            return f1;\n        }\n\n        public void setF1(double f1) {\n            this.f1 = f1;\n        }\n\n    }\n\n    private static class VO_Boolean {\n\n        private boolean f0;\n        private boolean f1;\n\n        public boolean isF0() {\n            return f0;\n        }\n\n        public void setF0(boolean f0) {\n            this.f0 = f0;\n        }\n\n        public boolean isF1() {\n            return f1;\n        }\n\n        public void setF1(boolean f1) {\n            this.f1 = f1;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ObjectArraySerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\n\r\npublic class ObjectArraySerializerTest extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(1);\r\n\r\n        JSONSerializer.write(out, new Object[] { \"a12\", \"b34\" });\r\n\r\n        Assert.assertEquals(\"[\\\"a12\\\",\\\"b34\\\"]\", out.toString());\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(1);\r\n\r\n        JSONSerializer.write(out, new Object[] {});\r\n\r\n        Assert.assertEquals(\"[]\", out.toString());\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(1);\r\n\r\n        JSONSerializer.write(out, new Object[] { null, null });\r\n\r\n        Assert.assertEquals(\"[null,null]\", out.toString());\r\n    }\r\n\r\n    public void test_3() throws Exception {\r\n        Assert.assertEquals(\"[null,null]\", JSON.toJSONString(new Object[] { null, null }, false));\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ObjectSerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.ObjectSerializer;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\n\nimport junit.framework.TestCase;\n\npublic class ObjectSerializerTest extends TestCase {\n\n    public void test_serialize() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.put(ResultCode.class, new ResultCodeSerilaizer());\n\n        Result result = new Result();\n        result.code = ResultCode.SIGN_ERROR;\n        String json = JSON.toJSONString(result, config);\n        Assert.assertEquals(\"{\\\"code\\\":17}\", json);\n    }\n\n    public static class Result {\n\n        public ResultCode code;\n    }\n\n    public static enum ResultCode {\n                                   SUCCESS(1), ERROR(-1), UNKOWN_ERROR(999), LOGIN_FAILURE(8), INVALID_ARGUMENT(0),\n                                   SIGN_ERROR(17);\n\n        public final int value;\n\n        ResultCode(int value){\n            this.value = value;\n        }\n    }\n\n    public static class ResultCodeSerilaizer implements ObjectSerializer {\n\n        public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType,\n                          int features) throws IOException {\n            serializer.write(((ResultCode) object).value);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ObjectWriteTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.ObjectSerializer;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 15/03/2017.\n */\npublic class ObjectWriteTest extends TestCase {\n    public void test_objectWriteTest() throws Exception {\n        ObjectSerializer serializer = SerializeConfig.getGlobalInstance().getObjectWriter(Model.class);\n\n        JSONSerializer jsonSerializer = new JSONSerializer();\n        serializer.write(jsonSerializer, null, \"a\", Model.class, 0);\n\n        String text = jsonSerializer.out.toString();\n        assertEquals(\"null\", text);\n    }\n\n    public static class Model {\n        public int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ParserConfigTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\n\nimport junit.framework.TestCase;\n\npublic class ParserConfigTest extends TestCase {\n\n    public void test_0() throws Exception {\n        ParserConfig config = new ParserConfig();\n        config.getDeserializers();\n    }\n    \n    \n    public void test_1() throws Exception {\n        ParserConfig config = new ParserConfig(Thread.currentThread().getContextClassLoader());\n        \n        Model model = JSON.parseObject(\"{\\\"value\\\":123}\", Model.class, config);\n        Assert.assertEquals(123, model.value);\n    }\n    \n    public static class Model {\n        public int value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/PascalNameFilterTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.PascalNameFilter;\n\npublic class PascalNameFilterTest extends TestCase {\n\n    public void test_0() throws Exception {\n        JSONSerializer serializer = new JSONSerializer();\n        serializer.getNameFilters().add(new PascalNameFilter());\n        \n        VO vo = new VO();\n        vo.setId(123);\n        vo.setName(\"wenshao\");\n        \n        serializer.write(vo);\n\n        Assert.assertEquals(\"{\\\"Id\\\":123,\\\"Name\\\":\\\"wenshao\\\"}\", serializer.toString());\n        \n        serializer.close();\n    }\n\n    public static class VO {\n\n        private int    id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/PascalNameFilterTest_1.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.PascalNameFilter;\n\npublic class PascalNameFilterTest_1 extends TestCase {\n\n    public void test_0() throws Exception {\n        JSONSerializer serializer = new JSONSerializer();\n        serializer.getNameFilters().add(new PascalNameFilter());\n\n        Map<String, Object> vo = new LinkedHashMap<String, Object>();\n        vo.put(\"\", 123);\n        vo.put(null, \"wenshao\");\n\n        serializer.write(vo);\n\n        Assert.assertEquals(\"{\\\"\\\":123,null:\\\"wenshao\\\"}\", serializer.toString());\n\n        serializer.close();\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/PatternTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.util.regex.Pattern;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class PatternTest extends TestCase {\n\n    public void test_file() throws Exception {\n        Pattern p = Pattern.compile(\"a*b\");\n\n        String text = JSON.toJSONString(p);\n\n        Assert.assertEquals(JSON.toJSONString(p.pattern()), text);\n\n        Pattern p1 = JSON.parseObject(text, Pattern.class);\n        Assert.assertEquals(p.pattern(), p1.pattern());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/PointSerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.awt.Point;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\n\npublic class PointSerializerTest extends TestCase {\n    \n    public void test_null() throws Exception {\n        VO vo = new VO();\n        \n        Assert.assertEquals(\"{\\\"value\\\":null}\", JSON.toJSONString(vo, SerializerFeature.WriteMapNullValue));\n    }\n\n    private static class VO {\n\n        private Point value;\n\n        public Point getValue() {\n            return value;\n        }\n\n        public void setValue(Point value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/PrePropertyFilterTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.PropertyPreFilter;\n\npublic class PrePropertyFilterTest extends TestCase {\n\n    public void test_0() throws Exception {\n        class VO {\n            public int getId() { throw new RuntimeException(); }\n        }\n\n        PropertyPreFilter filter = new PropertyPreFilter () {\n            public boolean apply(JSONSerializer serializer, Object source, String name) {\n                return false;\n            }\n        };\n\n        VO vo = new VO();\n\n        String text = JSON.toJSONString(vo, filter);\n        Assert.assertEquals(\"{}\", text);\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/PrettyFormatTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class PrettyFormatTest extends TestCase {\n\n    public void test_0() throws Exception {\n        Assert.assertEquals(0, new JSONSerializer().getIndentCount());\n        \n        Assert.assertEquals(\"[\\n\\t{},\\n\\t{}\\n]\", JSON.toJSONString(new Object[] { new Object(), new Object() }, SerializerFeature.PrettyFormat));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/PrettyFormatTest2.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\npublic class PrettyFormatTest2 extends TestCase {\n\n    public void test_0() throws Exception {\n        Model model = new Model();\n        model.id = 123;\n        model.name = \"wenshao\";\n        String text = JSON.toJSONString(model, SerializerFeature.PrettyFormat);\n        assertEquals(\"{\\n\" +\n                \"\\t\\\"id\\\":123,\\n\" +\n                \"\\t\\\"name\\\":\\\"wenshao\\\"\\n\" +\n                \"}\", text);\n        \n        Assert.assertEquals(\"[\\n\\t{},\\n\\t{}\\n]\", JSON.toJSONString(new Object[] { new Object(), new Object() }, SerializerFeature.PrettyFormat));\n    }\n\n    public  static class Model {\n        public int id;\n        public String name;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/PrimitiveTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport java.io.StringWriter;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\n\r\npublic class PrimitiveTest extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        StringWriter out = new StringWriter();\r\n\r\n        JSONSerializer.write(out, (byte) 1);\r\n\r\n        Assert.assertEquals(\"1\", out.toString());\r\n    }\r\n\r\n    public void test_0_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        JSONSerializer.write(out, (byte) 1);\r\n\r\n        Assert.assertEquals(\"1\", out.toString());\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        StringWriter out = new StringWriter();\r\n\r\n        JSONSerializer.write(out, (short) 1);\r\n\r\n        Assert.assertEquals(\"1\", out.toString());\r\n    }\r\n\r\n    public void test_1_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        JSONSerializer.write(out, (short) 1);\r\n\r\n        Assert.assertEquals(\"1\", out.toString());\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        StringWriter out = new StringWriter();\r\n\r\n        JSONSerializer.write(out, true);\r\n\r\n        Assert.assertEquals(\"true\", out.toString());\r\n    }\r\n\r\n    public void test_2_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        JSONSerializer.write(out, true);\r\n\r\n        Assert.assertEquals(\"true\", out.toString());\r\n    }\r\n\r\n    public void test_3() throws Exception {\r\n        StringWriter out = new StringWriter();\r\n\r\n        JSONSerializer.write(out, false);\r\n\r\n        Assert.assertEquals(\"false\", out.toString());\r\n    }\r\n\r\n    public void test_3_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        JSONSerializer.write(out, false);\r\n\r\n        Assert.assertEquals(\"false\", out.toString());\r\n    }\r\n\r\n    public void test_4() throws Exception {\r\n        StringWriter out = new StringWriter();\r\n\r\n        JSONSerializer.write(out, new boolean[] { true, false });\r\n\r\n        Assert.assertEquals(\"[true,false]\", out.toString());\r\n    }\r\n\r\n    public void test_4_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        JSONSerializer.write(out, new boolean[] { true, false });\r\n\r\n        Assert.assertEquals(\"[true,false]\", out.toString());\r\n    }\r\n\r\n    public void test_5() throws Exception {\r\n        StringWriter out = new StringWriter();\r\n\r\n        JSONSerializer.write(out, new boolean[] {});\r\n\r\n        Assert.assertEquals(\"[]\", out.toString());\r\n    }\r\n\r\n    public void test_5_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        JSONSerializer.write(out, new boolean[] {});\r\n\r\n        Assert.assertEquals(\"[]\", out.toString());\r\n    }\r\n\r\n    public void test_6() throws Exception {\r\n        StringWriter out = new StringWriter();\r\n\r\n        JSONSerializer.write(out, new boolean[] { true, false, true });\r\n\r\n        Assert.assertEquals(\"[true,false,true]\", out.toString());\r\n    }\r\n\r\n    public void test_6_s() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        JSONSerializer.write(out, new boolean[] { true, false, true });\r\n\r\n        Assert.assertEquals(\"[true,false,true]\", out.toString());\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ProxyTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.lang.reflect.Method;\n\nimport javassist.util.proxy.MethodHandler;\nimport javassist.util.proxy.ProxyFactory;\nimport javassist.util.proxy.ProxyObject;\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class ProxyTest extends TestCase {\n\n    public void test_0() throws Exception {\n        A a = create(A.class);\n        a.setId(123);\n\n        Assert.assertEquals(\"{\\\"id\\\":123}\", JSON.toJSONString(a));\n    }\n\n    public static <T> T create(Class<T> classs) throws Exception {\n        ProxyFactory factory = new ProxyFactory();\n        factory.setSuperclass(classs);\n        Class clazz = factory.createClass();\n        MethodHandler handler = new MethodHandler() {\n\n            public Object invoke(Object self, Method overridden, Method forwarder, Object[] args) throws Throwable {\n                return forwarder.invoke(self, args);\n            }\n        };\n        Object instance = clazz.newInstance();\n        ((ProxyObject) instance).setHandler(handler);\n        return (T) instance;\n    }\n\n    public static class A {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ProxyTest2.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.lang.reflect.Proxy;\n\n/**\n * Created by wenshao on 07/08/2017.\n */\npublic class ProxyTest2 extends TestCase {\n    public void test_0() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"id\\\":1001}\", Model.class);\n        Model model2 = JSON.parseObject(\"{\\\"id\\\":1001}\", Model.class);\n        System.out.println(model.getId());\n\n//        System.out.println(model.getClass());\n//        System.out.println(model2.getClass());\n\n        assertEquals(\"{\\\"id\\\":1001}\", JSON.toJSONString(model));\n        assertEquals(\"{\\\"id\\\":1001}\", JSON.toJSONString(model));\n\n    }\n\n    public static interface Model {\n        int getId();\n        void setId(int val);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/RectangleSerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.awt.Rectangle;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.AwtCodec;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\n\npublic class RectangleSerializerTest extends TestCase {\n    \n    public void test_null() throws Exception {\n        JSONSerializer serializer = new JSONSerializer();\n        Assert.assertEquals(AwtCodec.class, serializer.getObjectWriter(Rectangle.class).getClass());\n        \n        VO vo = new VO();\n        \n        Assert.assertEquals(\"{\\\"value\\\":null}\", JSON.toJSONString(vo, SerializerFeature.WriteMapNullValue));\n    }\n\n    private static class VO {\n\n        private Rectangle value;\n\n        public Rectangle getValue() {\n            return value;\n        }\n\n        public void setValue(Rectangle value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ReferenceDeserializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.lang.ref.WeakReference;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.ReferenceCodec;\n\npublic class ReferenceDeserializerTest extends TestCase {\n\n    public void test_0() throws Exception {\n        ParserConfig config = new ParserConfig();\n        config.putDeserializer(MyRef.class, ReferenceCodec.instance);\n        Exception error = null;\n        try {\n            JSON.parseObject(\"{\\\"ref\\\":{}}\", VO.class, config, 0);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class VO {\n\n        private MyRef<Object> ref;\n\n        public MyRef<Object> getRef() {\n            return ref;\n        }\n\n        public void setRef(MyRef<Object> ref) {\n            this.ref = ref;\n        }\n\n    }\n\n    public static class MyRef<T> extends WeakReference<T> {\n\n        MyRef(T referent){\n            super(referent);\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerialContextTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.SerialContext;\n\n\npublic class SerialContextTest extends TestCase {\n    public void test_context() throws Exception {\n        SerialContext root = new SerialContext(null, null, null, 0, 0);\n        SerialContext context = new SerialContext(root, null, \"x\", 0, 0);\n        Assert.assertEquals(\"x\", context.fieldName);\n        Assert.assertEquals(\"$.x\", context.toString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerialWriterStringEncoderTest2.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.lang.reflect.Method;\nimport java.nio.ByteBuffer;\nimport java.nio.CharBuffer;\nimport java.nio.charset.Charset;\nimport java.nio.charset.CharsetEncoder;\nimport java.nio.charset.CoderResult;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\nimport junit.framework.TestCase;\n\npublic class SerialWriterStringEncoderTest2 extends TestCase {\n\n    public void test_error_0() throws Exception {\n        Charset charset = Charset.forName(\"UTF-8\");\n        CharsetEncoder charsetEncoder = new MockCharsetEncoder2(charset);\n     \n\n        Exception error = null;\n        char[] chars = \"abc\".toCharArray();\n        try {\n            encode(charsetEncoder, chars, 0, chars.length);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_1() throws Exception {\n        Charset charset = Charset.forName(\"UTF-8\");\n        CharsetEncoder realEncoder = charset.newEncoder();\n        \n        CharsetEncoder charsetEncoder = new MockCharsetEncoder(charset, realEncoder);\n\n        Exception error = null;\n        char[] chars = \"abc\".toCharArray();\n        try {\n            encode(charsetEncoder, chars, 0, chars.length);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public static byte[] encode(CharsetEncoder encoder, char[] chars, int off, int len) throws Exception {\n        Method method = SerializeWriter.class.getDeclaredMethod(\"encode\", CharsetEncoder.class, char[].class, int.class, int.class);\n        method.setAccessible(true);\n        return (byte[]) method.invoke(null, encoder, chars, off, len);\n    }\n\n    public static class MockCharsetEncoder extends CharsetEncoder {\n        private CharsetEncoder raw;\n        protected MockCharsetEncoder(Charset cs, CharsetEncoder raw){\n            super(cs, raw.averageBytesPerChar(), raw.maxBytesPerChar());\n            this.raw = raw;\n        }\n\n        @Override\n        protected CoderResult encodeLoop(CharBuffer in, ByteBuffer out) {\n            return raw.encode(in, out, false);\n        }\n\n        protected CoderResult implFlush(ByteBuffer out) {\n            return CoderResult.malformedForLength(1);\n            }\n    }\n    \n    public static class MockCharsetEncoder2 extends CharsetEncoder {\n\n        protected MockCharsetEncoder2(Charset cs){\n            super(cs, 2, 2);\n        }\n\n        @Override\n        protected CoderResult encodeLoop(CharBuffer in, ByteBuffer out) {\n            return CoderResult.OVERFLOW;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerialWriterTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\npublic class SerialWriterTest extends TestCase {\n\n    public void test_0() throws Exception {\n        for (int i = 0; i < 3; ++i) {\n            {\n                String text = \"abc\";\n                String charset = \"UTF-8\";\n                SerializeWriter writer = new SerializeWriter();\n                writer.append(text);\n                byte[] bytes = writer.toBytes(charset);\n                Assert.assertArrayEquals(text.getBytes(charset), bytes);\n            }\n            \n            {\n                String text = \"efg\";\n                String charset = \"UTF-8\";\n                SerializeWriter writer = new SerializeWriter();\n                writer.append(text);\n                byte[] bytes = writer.toBytes(charset);\n                Assert.assertArrayEquals(text.getBytes(charset), bytes);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializeConfigTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.lang.reflect.InvocationTargetException;\nimport java.lang.reflect.Method;\nimport java.util.LinkedHashMap;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class SerializeConfigTest extends TestCase {\n\n    public void test_0() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n\n        Method method = SerializeConfig.class.getDeclaredMethod(\"createJavaBeanSerializer\", Class.class);\n        method.setAccessible(true);\n        Exception error = null;\n        try {\n            method.invoke(config, int.class);\n        } catch (InvocationTargetException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_1() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.setTypeKey(\"%type\");\n        Assert.assertEquals(\"%type\", config.getTypeKey());\n\n        Assert.assertEquals(\"{\\\"%type\\\":\\\"java.util.LinkedHashMap\\\"}\",\n                            JSON.toJSONString(new LinkedHashMap(), config, SerializerFeature.WriteClassName));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializeConfigTest2.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.util.LinkedHashMap;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class SerializeConfigTest2 extends TestCase {\n\n    public void test_1() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.setTypeKey(\"%type\");\n        Assert.assertEquals(\"%type\", config.getTypeKey());\n        \n        Model model = new Model();\n        model.value = 1001;\n\n        Assert.assertEquals(\"{\\\"%type\\\":\\\"com.alibaba.json.bvt.serializer.SerializeConfigTest2$Model\\\",\\\"value\\\":1001}\",\n                            JSON.toJSONString(model, config, SerializerFeature.WriteClassName));\n    }\n    \n    public static class Model {\n        public int value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializeConfigTest2_private.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.util.LinkedHashMap;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class SerializeConfigTest2_private extends TestCase {\n\n    public void test_1() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.setTypeKey(\"%type\");\n        Assert.assertEquals(\"%type\", config.getTypeKey());\n        \n        Model model = new Model();\n        model.value = 1001;\n\n        Assert.assertEquals(\"{\\\"%type\\\":\\\"com.alibaba.json.bvt.serializer.SerializeConfigTest2_private$Model\\\",\\\"value\\\":1001}\",\n                            JSON.toJSONString(model, config, SerializerFeature.WriteClassName));\n    }\n    \n    private static class Model {\n        public int value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializeWriterTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport java.io.StringWriter;\r\nimport java.lang.reflect.Field;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\nimport junit.framework.TestCase;\r\n\r\npublic class SerializeWriterTest extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(1);\r\n        out.write('a');\r\n        out.write('b');\r\n        out.write('c');\r\n        Assert.assertEquals(\"abc\", out.toString());\r\n\r\n        StringWriter writer = new StringWriter();\r\n        out.writeTo(writer);\r\n        Assert.assertEquals(\"abc\", writer.toString());\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(1);\r\n        out.write((int) 'a');\r\n        out.write((int) 'b');\r\n        out.write((int) 'c');\r\n        out.write(new char[0], 0, 0);\r\n        Assert.assertEquals(\"abc\", out.toString());\r\n\r\n        StringWriter writer = new StringWriter();\r\n        out.writeTo(writer);\r\n        Assert.assertEquals(\"abc\", writer.toString());\r\n\r\n        out.expandCapacity(128);\r\n    }\r\n\r\n    public void test_12() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(1);\r\n        out.append(\"abc\");\r\n        Assert.assertEquals(\"abc\", out.toString());\r\n        Assert.assertEquals(3, out.toCharArray().length);\r\n        Assert.assertEquals(3, out.size());\r\n        \r\n        Field field = SerializeWriter.class.getDeclaredField(\"count\");\r\n        field.setAccessible(true);\r\n        field.setInt(out, 0);\r\n        \r\n        Assert.assertEquals(\"\", out.toString());\r\n        Assert.assertEquals(0, out.toCharArray().length);\r\n        Assert.assertEquals(0, out.size());\r\n        out.writeInt(Integer.MIN_VALUE);\r\n        Assert.assertEquals(Integer.toString(Integer.MIN_VALUE), out.toString());\r\n        out.flush();\r\n        out.close();\r\n    }\r\n\r\n    public void test_13() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(1);\r\n        out.writeInt(Integer.MIN_VALUE);\r\n        Assert.assertEquals(Integer.toString(Integer.MIN_VALUE), out.toString());\r\n    }\r\n\r\n    public void test_13_long() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(1);\r\n        out.writeLong(Long.MIN_VALUE);\r\n        Assert.assertEquals(Long.toString(Long.MIN_VALUE), out.toString());\r\n    }\r\n\r\n    public void test_13_long_browser() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(SerializerFeature.BrowserCompatible);\r\n        out.writeLong(Long.MIN_VALUE + 1);\r\n        Assert.assertEquals(\"\\\"\" + Long.toString(Long.MIN_VALUE + 1) + \"\\\"\", out.toString());\r\n    }\r\n\r\n    public void test_13_long_browser2() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(SerializerFeature.BrowserCompatible);\r\n        out.writeLong(Long.MIN_VALUE);\r\n        Assert.assertEquals(\"\\\"\" + Long.toString(Long.MIN_VALUE) + \"\\\"\", out.toString());\r\n    }\r\n\r\n    public void test_14() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(1);\r\n        out.writeInt(Integer.MAX_VALUE);\r\n        Assert.assertEquals(Integer.toString(Integer.MAX_VALUE), out.toString());\r\n    }\r\n\r\n    public void test_14_long() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(1);\r\n        out.writeLong(Long.MAX_VALUE);\r\n        Assert.assertEquals(Long.toString(Long.MAX_VALUE), out.toString());\r\n    }\r\n\r\n    public void test_15() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(1);\r\n        out.writeInt(Integer.MAX_VALUE);\r\n        out.write(',');\r\n        Assert.assertEquals(Integer.toString(Integer.MAX_VALUE) + \",\", out.toString());\r\n    }\r\n\r\n    public void test_15_long() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(1);\r\n        out.writeLong(Long.MAX_VALUE);\r\n        out.write(',');\r\n        Assert.assertEquals(Long.toString(Long.MAX_VALUE) + \",\", out.toString());\r\n    }\r\n\r\n    public void test_16() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(1);\r\n        out.writeInt(Integer.MIN_VALUE);\r\n        out.write(',');\r\n        Assert.assertEquals(Integer.toString(Integer.MIN_VALUE) + \",\", out.toString());\r\n    }\r\n\r\n    public void test_16_long() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(1);\r\n        out.writeLong(Long.MIN_VALUE);\r\n        out.write(',');\r\n        Assert.assertEquals(Long.toString(Long.MIN_VALUE) + \",\", out.toString());\r\n    }\r\n\r\n    public void test_16_long_browser() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(SerializerFeature.BrowserCompatible);\r\n        out.writeLong(Long.MIN_VALUE + 1);\r\n        out.write(',');\r\n        Assert.assertEquals(\"\\\"\" + Long.toString(Long.MIN_VALUE + 1) + \"\\\",\", out.toString());\r\n    }\r\n\r\n    public void test_16_long_browser2() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(SerializerFeature.BrowserCompatible);\r\n        out.writeLong(Long.MIN_VALUE);\r\n        out.write(',');\r\n        Assert.assertEquals(\"\\\"\" + Long.toString(Long.MIN_VALUE) + \"\\\",\", out.toString());\r\n    }\r\n\r\n    public void test_17() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(1);\r\n        out.append(null);\r\n        Assert.assertEquals(\"null\", out.toString());\r\n    }\r\n\r\n    public void test_18() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(1);\r\n        out.append(null, 0, 4);\r\n        Assert.assertEquals(\"null\", out.toString());\r\n    }\r\n\r\n    public void test_19() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(1);\r\n        out.append(\"abcd\", 0, 4);\r\n        Assert.assertEquals(\"abcd\", out.toString());\r\n    }\r\n\r\n    public void test_20() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(1);\r\n        out.write(\"abcd\".toCharArray(), 0, 4);\r\n        Assert.assertEquals(\"abcd\", out.toString());\r\n    }\r\n\r\n    public void test_error_0() throws Exception {\r\n        Exception error = null;\r\n        try {\r\n            new SerializeWriter(-1);\r\n        } catch (IllegalArgumentException ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error_2() throws Exception {\r\n        Exception error = null;\r\n        try {\r\n            SerializeWriter out = new SerializeWriter(16);\r\n            out.write(new char[0], -1, 0);\r\n        } catch (IndexOutOfBoundsException ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error_3() throws Exception {\r\n        Exception error = null;\r\n        try {\r\n            SerializeWriter out = new SerializeWriter(16);\r\n            out.write(new char[0], 2, 0);\r\n        } catch (IndexOutOfBoundsException ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error_4() throws Exception {\r\n        Exception error = null;\r\n        try {\r\n            SerializeWriter out = new SerializeWriter(16);\r\n            out.write(new char[0], 0, -1);\r\n        } catch (IndexOutOfBoundsException ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error_5() throws Exception {\r\n        Exception error = null;\r\n        try {\r\n            SerializeWriter out = new SerializeWriter(16);\r\n            out.write(new char[0], 0, 1);\r\n        } catch (IndexOutOfBoundsException ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n    public void test_error_6() throws Exception {\r\n        Exception error = null;\r\n        try {\r\n            SerializeWriter out = new SerializeWriter(16);\r\n            out.write(\"abcdefg\".toCharArray(), 1, 1 + Integer.MAX_VALUE);\r\n        } catch (IndexOutOfBoundsException ex) {\r\n            error = ex;\r\n        }\r\n        Assert.assertNotNull(error);\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializeWriterTest_1.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.io.ByteArrayOutputStream;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class SerializeWriterTest_1 extends TestCase {\n    public void test_0 () throws Exception {\n        SerializeWriter out = new SerializeWriter(SerializerFeature.UseSingleQuotes);\n        out.writeString(\"abc\");\n        Assert.assertEquals(\"'abc'\", out.toString());\n    }\n    \n    public void test_1 () throws Exception {\n        SerializeWriter out = new SerializeWriter(SerializerFeature.UseSingleQuotes);\n        out.writeString(\"abc中文\");\n        \n        ByteArrayOutputStream byteOut = new ByteArrayOutputStream();\n        out.writeTo(byteOut, \"UTF-8\");\n        Assert.assertEquals(\"'abc中文'\", new String(byteOut.toByteArray(), \"UTF-8\"));\n    }\n    \n    public void test_2 () throws Exception {\n        SerializeWriter out = new SerializeWriter(SerializerFeature.UseSingleQuotes);\n        out.writeString(\"abc\");\n        Assert.assertEquals(\"'abc'\", new String(out.toBytes((String) null), \"ISO-8859-1\"));\n    }\n    \n    public void test_3 () throws Exception {\n        SerializeWriter out = new SerializeWriter(SerializerFeature.UseSingleQuotes);\n        out.writeString(\"abc\");\n        Assert.assertEquals(\"'abc'\", new String(out.toBytes(\"UTF-16\"), \"UTF-16\"));\n    }\n    \n    public void test_5 () throws Exception {\n        SerializeWriter out = new SerializeWriter(1);\n        out.write((String) null);\n        Assert.assertEquals(\"null\", new String(out.toBytes(\"UTF-16\"), \"UTF-16\"));\n    }\n    \n    public void test_6 () throws Exception {\n        SerializeWriter out = new SerializeWriter(1);\n        out.writeString(\"中文\");\n        Assert.assertEquals(\"\\\"中文\\\"\", new String(out.toBytes(\"UTF-16\"), \"UTF-16\"));\n    }\n    \n    public void test_null () throws Exception {\n        SerializeWriter out = new SerializeWriter(1);\n        out.writeString((String) null);\n        Assert.assertEquals(\"null\", new String(out.toBytes(\"UTF-16\"), \"UTF-16\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializeWriterTest_10.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\npublic class SerializeWriterTest_10 extends TestCase {\n\n    public void test_erro_0() throws Exception {\n        SerializeWriter out = new SerializeWriter();\n        Exception error = null;\n        try {\n            out.write(new char[0], -1, 0);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n        out.close();\n    }\n\n    public void test_erro_1() throws Exception {\n        SerializeWriter out = new SerializeWriter();\n        Exception error = null;\n        try {\n            out.write(new char[0], 1, 0);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n        out.close();\n    }\n\n    public void test_erro_2() throws Exception {\n        SerializeWriter out = new SerializeWriter();\n        Exception error = null;\n        try {\n            out.write(new char[0], 0, -1);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n        out.close();\n    }\n\n    public void test_erro_3() throws Exception {\n        SerializeWriter out = new SerializeWriter();\n        Exception error = null;\n        try {\n            out.write(new char[] { '0', '0' }, 1, 2);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n        out.close();\n    }\n    \n    public void test_erro_4() throws Exception {\n        SerializeWriter out = new SerializeWriter();\n        Exception error = null;\n        try {\n            out.write(new char[] { '0', '0' }, 1, Integer.MAX_VALUE);\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n        out.close();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializeWriterTest_11.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.io.ByteArrayOutputStream;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\npublic class SerializeWriterTest_11 extends TestCase {\n\n    public void test_erro_0() throws Exception {\n        SerializeWriter out = new SerializeWriter();\n        out.write(true);\n        ByteArrayOutputStream byteOut = new ByteArrayOutputStream();\n        out.writeTo(byteOut, \"UTF-8\");\n        Assert.assertEquals(\"true\", new String(byteOut.toByteArray()));\n        out.close();\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializeWriterTest_12.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.io.IOException;\nimport java.io.Writer;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\npublic class SerializeWriterTest_12 extends TestCase {\n\n    public void test_erro_0() throws Exception {\n        SerializeWriter out = new SerializeWriter(new ErrorWriter());\n        Exception error = null;\n        try {\n            out.flush();\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n        out.close();\n    }\n\n   public static class ErrorWriter extends Writer {\n\n    @Override\n    public void write(char[] cbuf, int off, int len) throws IOException {\n        throw new IOException();\n    }\n\n    @Override\n    public void flush() throws IOException {\n        throw new IOException();\n    }\n\n    @Override\n    public void close() throws IOException {\n        \n    }\n       \n   }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializeWriterTest_13.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.io.StringWriter;\nimport java.util.Collections;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class SerializeWriterTest_13 extends TestCase {\n\n    public void test_default() throws Exception {\n        Assert.assertEquals(\"{\\\"\\\":\\\"\\\"}\", //\n                            JSON.toJSONStringZ(Collections.singletonMap(\"\", \"\"), //\n                                               SerializeConfig.getGlobalInstance()));\n    }\n\n    public void test_single() throws Exception {\n        Assert.assertEquals(\"{'':''}\", //\n                            JSON.toJSONStringZ(Collections.singletonMap(\"\", \"\"), //\n                                               SerializeConfig.getGlobalInstance(), SerializerFeature.UseSingleQuotes));\n    }\n\n    public void test_writer() throws Exception {\n        SerializeWriter out = new SerializeWriter(3);\n\n        try {\n            JSONSerializer serializer = new JSONSerializer(out);\n\n            serializer.write(Collections.singletonMap(\"\", \"\"));\n            Assert.assertEquals(\"{\\\"\\\":\\\"\\\"}\", out.toString());\n        } finally {\n            out.close();\n        }\n    }\n\n    public void test_writer_single() throws Exception {\n        SerializeWriter out = new SerializeWriter(3);\n        out.config(SerializerFeature.UseSingleQuotes, true);\n\n        try {\n            JSONSerializer serializer = new JSONSerializer(out);\n\n            serializer.write(Collections.singletonMap(\"\", \"\"));\n            Assert.assertEquals(\"{'':''}\", out.toString());\n        } finally {\n            out.close();\n        }\n    }\n    \n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializeWriterTest_14.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.io.StringWriter;\nimport java.util.Collections;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\npublic class SerializeWriterTest_14 extends TestCase {\n    @SuppressWarnings(\"rawtypes\")\n    public void test_writer_1() throws Exception {\n        StringWriter strOut = new StringWriter();\n        SerializeWriter out = new SerializeWriter(strOut, 1);\n\n        try {\n            JSONSerializer serializer = new JSONSerializer(out);\n\n            Map map = Collections.singletonMap(\"\", \"a\");\n            serializer.write(map);\n        } finally {\n            out.close();\n        }\n        Assert.assertEquals(\"{\\\"\\\":\\\"a\\\"}\", strOut.toString());\n    }\n    \n    \n    public void test_writer_2() throws Exception {\n        StringWriter strOut = new StringWriter();\n        SerializeWriter out = new SerializeWriter(strOut, 1);\n\n        try {\n            JSONSerializer serializer = new JSONSerializer(out);\n\n            Map map = Collections.singletonMap(\"ab\", \"a\");\n            serializer.write(map);\n        } finally {\n            out.close();\n        }\n        Assert.assertEquals(\"{ab:\\\"a\\\"}\", strOut.toString());\n    }\n    \n    public void test_writer_3() throws Exception {\n        StringWriter strOut = new StringWriter();\n        SerializeWriter out = new SerializeWriter(strOut, 1);\n\n        try {\n            JSONSerializer serializer = new JSONSerializer(out);\n\n            Map map = Collections.singletonMap(\"ab\\t<\", \"a\");\n            serializer.write(map);\n        } finally {\n            out.close();\n        }\n        Assert.assertEquals(\"{\\\"ab\\\\t<\\\":\\\"a\\\"}\", strOut.toString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializeWriterTest_15.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.io.StringWriter;\nimport java.util.Collections;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class SerializeWriterTest_15 extends TestCase {\n    @SuppressWarnings(\"rawtypes\")\n    public void test_writer_1() throws Exception {\n        StringWriter strOut = new StringWriter();\n        SerializeWriter out = new SerializeWriter(strOut, 1);\n        out.config(SerializerFeature.UseSingleQuotes, true);\n\n        try {\n            JSONSerializer serializer = new JSONSerializer(out);\n\n            Map map = Collections.singletonMap(\"\", \"a\");\n            serializer.write(map);\n        } finally {\n            out.close();\n        }\n        Assert.assertEquals(\"{'':'a'}\", strOut.toString());\n    }\n    \n    \n    public void test_writer_2() throws Exception {\n        StringWriter strOut = new StringWriter();\n        SerializeWriter out = new SerializeWriter(strOut, 1);\n        out.config(SerializerFeature.UseSingleQuotes, true);\n\n        try {\n            JSONSerializer serializer = new JSONSerializer(out);\n\n            Map map = Collections.singletonMap(\"ab\", \"a\");\n            serializer.write(map);\n        } finally {\n            out.close();\n        }\n        Assert.assertEquals(\"{ab:'a'}\", strOut.toString());\n    }\n    \n    public void test_writer_3() throws Exception {\n        StringWriter strOut = new StringWriter();\n        SerializeWriter out = new SerializeWriter(strOut, 1);\n        out.config(SerializerFeature.UseSingleQuotes, true);\n\n        try {\n            JSONSerializer serializer = new JSONSerializer(out);\n\n            Map map = Collections.singletonMap(\"ab\\t\", \"a\");\n            serializer.write(map);\n        } finally {\n            out.close();\n        }\n        Assert.assertEquals(\"{'ab\\\\t':'a'}\", strOut.toString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializeWriterTest_16.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.io.StringWriter;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class SerializeWriterTest_16 extends TestCase {\n\n    public void test_writer_1() throws Exception {\n        StringWriter strOut = new StringWriter();\n        SerializeWriter out = new SerializeWriter(strOut, 14);\n        out.config(SerializerFeature.BrowserCompatible, true);\n\n        try {\n            JSONSerializer serializer = new JSONSerializer(out);\n\n            VO vo = new VO();\n            vo.setValue(\"abcd\\t\");\n            serializer.write(vo);\n        } finally {\n            out.close();\n        }\n        Assert.assertEquals(\"{value:\\\"abcd\\\\t\\\"}\", strOut.toString());\n    }\n\n    private static class VO {\n\n        private String value;\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializeWriterTest_17.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.io.StringWriter;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class SerializeWriterTest_17 extends TestCase {\n\n    public void test_writer_1() throws Exception {\n        StringWriter strOut = new StringWriter();\n        SerializeWriter out = new SerializeWriter(strOut, 6);\n        out.config(SerializerFeature.QuoteFieldNames, true);\n\n        try {\n            JSONSerializer serializer = new JSONSerializer(out);\n\n            VO vo = new VO();\n            vo.setValue(123456789);\n            serializer.write(vo);\n        } finally {\n            out.close();\n        }\n        Assert.assertEquals(\"{\\\"value\\\":123456789}\", strOut.toString());\n    }\n    \n    public void test_direct() throws Exception {\n        SerializeWriter out = new SerializeWriter(6);\n        out.config(SerializerFeature.QuoteFieldNames, true);\n\n        try {\n            JSONSerializer serializer = new JSONSerializer(out);\n\n            VO vo = new VO();\n            vo.setValue(123456789);\n            serializer.write(vo);\n            \n            Assert.assertEquals(\"{\\\"value\\\":123456789}\", out.toString());\n        } finally {\n            out.close();\n        }\n        \n    }\n\n    public static class VO {\n\n        private long value;\n\n        public long getValue() {\n            return value;\n        }\n\n        public void setValue(long value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializeWriterTest_18.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class SerializeWriterTest_18 extends TestCase {\n\n    public void test_writer_1() throws Exception {\n        SerializeWriter out = new SerializeWriter(14);\n        out.config(SerializerFeature.QuoteFieldNames, true);\n\n        try {\n            JSONSerializer serializer = new JSONSerializer(out);\n\n            VO vo = new VO();\n            vo.setValue(\"#\");\n            serializer.write(vo);\n            \n            Assert.assertEquals(\"{\\\"value\\\":\\\"#\\\"}\", out.toString());\n        } finally {\n            out.close();\n        }\n       \n    }\n\n    public static class VO {\n\n        private String value;\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializeWriterTest_19.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class SerializeWriterTest_19 extends TestCase {\n\n    public void test_writer_1() throws Exception {\n        SerializeWriter out = new SerializeWriter(14);\n        out.config(SerializerFeature.QuoteFieldNames, true);\n        out.config(SerializerFeature.UseSingleQuotes, true);\n        try {\n            JSONSerializer serializer = new JSONSerializer(out);\n\n            VO vo = new VO();\n            vo.getValues().add(\"#\");\n            serializer.write(vo);\n\n            Assert.assertEquals(\"{'values':['#']}\", out.toString());\n        } finally {\n            out.close();\n        }\n\n    }\n\n    public static class VO {\n\n        private List<String> values = new ArrayList<String>();\n\n        public List<String> getValues() {\n            return values;\n        }\n\n        public void setValues(List<String> values) {\n            this.values = values;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializeWriterTest_2.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\n@SuppressWarnings(\"deprecation\")\npublic class SerializeWriterTest_2 extends TestCase {\n\n    public void test_0() throws Exception {\n        SerializeWriter out = new SerializeWriter(1);\n        out.config(SerializerFeature.WriteTabAsSpecial, true);\n        out.writeString(\"\\t\\n \\b\\n\\r\\f\\\\ \\\"\");\n        Assert.assertEquals(\"\\\"\\\\t\\\\n \\\\b\\\\n\\\\r\\\\f\\\\\\\\ \\\\\\\"\\\"\", out.toString());\n        out.close();\n    }\n\n    public void test_1() throws Exception {\n        SerializeWriter out = new SerializeWriter(1);\n        out.config(SerializerFeature.WriteTabAsSpecial, true);\n        out.config(SerializerFeature.UseSingleQuotes, true);\n        out.writeString(\"\\t\\n \\b\\n\\r\\f\\\\ \\\"\");\n        Assert.assertEquals(\"'\\\\t\\\\n \\\\b\\\\n\\\\r\\\\f\\\\\\\\ \\\"'\", out.toString());\n        out.close();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializeWriterTest_3.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class SerializeWriterTest_3 extends TestCase {\n\n    public void test_0() throws Exception {\n        SerializeWriter out = new SerializeWriter(1);\n        out.config(SerializerFeature.QuoteFieldNames, true);\n        out.writeFieldValue(',', \"name\", \"jobs\");\n        Assert.assertEquals(\",\\\"name\\\":\\\"jobs\\\"\", out.toString());\n    }\n\n    public void test_1() throws Exception {\n        SerializeWriter out = new SerializeWriter(1);\n        out.config(SerializerFeature.QuoteFieldNames, false);\n        out.writeFieldValue(',', \"name\", \"jobs\");\n        Assert.assertEquals(\",name:\\\"jobs\\\"\", out.toString());\n    }\n    \n    public void test_null() throws Exception {\n        SerializeWriter out = new SerializeWriter(1);\n        out.config(SerializerFeature.QuoteFieldNames, true);\n        out.writeFieldValue(',', \"name\", (String) null);\n        Assert.assertEquals(\",\\\"name\\\":null\", out.toString());\n    }\n\n    public void test_null_1() throws Exception {\n        SerializeWriter out = new SerializeWriter(1);\n        out.config(SerializerFeature.QuoteFieldNames, false);\n        out.writeFieldValue(',', \"name\", (String) null);\n        Assert.assertEquals(\",name:null\", out.toString());\n    }\n    \n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializeWriterTest_4.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\n@SuppressWarnings(\"deprecation\")\npublic class SerializeWriterTest_4 extends TestCase {\n\n    public void test_0() throws Exception {\n        SerializeWriter out = new SerializeWriter(1);\n        out.config(SerializerFeature.QuoteFieldNames, true);\n        out.config(SerializerFeature.WriteTabAsSpecial, true);\n        out.writeFieldValue(',', \"name\", \"\\t\");\n        Assert.assertEquals(\",\\\"name\\\":\\\"\\\\t\\\"\", out.toString());\n        out.close();\n    }\n    \n    public void test_1() throws Exception {\n        SerializeWriter out = new SerializeWriter(1);\n        out.config(SerializerFeature.QuoteFieldNames, true);\n        out.config(SerializerFeature.WriteTabAsSpecial, true);\n        out.writeFieldValue(',', \"name\", \"\\t\\n\");\n        Assert.assertEquals(\",\\\"name\\\":\\\"\\\\t\\\\n\\\"\", out.toString());\n        out.close();\n    }\n\n    public void test_3() throws Exception {\n        SerializeWriter out = new SerializeWriter(1);\n        out.config(SerializerFeature.QuoteFieldNames, true);\n        out.config(SerializerFeature.WriteTabAsSpecial, true);\n        out.writeFieldValue(',', \"name\", \"\\t\\n \\b\\n\\r\\f\\\\ \\\"\");\n        Assert.assertEquals(\",\\\"name\\\":\\\"\\\\t\\\\n \\\\b\\\\n\\\\r\\\\f\\\\\\\\ \\\\\\\"\\\"\", out.toString());\n        out.close();\n    }\n\n    public void test_4() throws Exception {\n        SerializeWriter out = new SerializeWriter(1);\n        out.config(SerializerFeature.QuoteFieldNames, true);\n        out.config(SerializerFeature.WriteTabAsSpecial, false);\n        out.writeFieldValue(',', \"name\", \"\\t\\n \\b\\n\\r\\f\\\\ \\\"\");\n        Assert.assertEquals(\",\\\"name\\\":\\\"\\\\t\\\\n \\\\b\\\\n\\\\r\\\\f\\\\\\\\ \\\\\\\"\\\"\", out.toString());\n        out.close();\n    }\n    \n    public void test_5() throws Exception {\n        SerializeWriter out = new SerializeWriter(1000);\n        out.config(SerializerFeature.QuoteFieldNames, true);\n        out.config(SerializerFeature.WriteTabAsSpecial, true);\n        out.writeString(\"\\t\\n \\b\\n\\r\\f\\\\ \\\"\");\n        Assert.assertEquals(\"\\\"\\\\t\\\\n \\\\b\\\\n\\\\r\\\\f\\\\\\\\ \\\\\\\"\\\"\", out.toString());\n        out.close();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializeWriterTest_5.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.math.BigDecimal;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class SerializeWriterTest_5 extends TestCase {\n\n    public void test_0() throws Exception {\n        SerializeWriter out = new SerializeWriter(1);\n        out.config(SerializerFeature.QuoteFieldNames, true);\n        out.writeFieldValue(',', \"name\", (Enum) null);\n        Assert.assertEquals(\",\\\"name\\\":null\", out.toString());\n    }\n    \n    public void test_1() throws Exception {\n        SerializeWriter out = new SerializeWriter(1);\n        out.config(SerializerFeature.QuoteFieldNames, true);\n        out.writeFieldValue(',', \"name\", (BigDecimal) null);\n        Assert.assertEquals(\",\\\"name\\\":null\", out.toString());\n    }\n    \n    public void test_2() throws Exception {\n        SerializeWriter out = new SerializeWriter(1);\n        out.config(SerializerFeature.QuoteFieldNames, true);\n        out.writeFieldValue(',', \"name\", (String) null);\n        Assert.assertEquals(\",\\\"name\\\":null\", out.toString());\n    }\n    \n    public void test_3() throws Exception {\n        SerializeWriter out = new SerializeWriter(1);\n        out.config(SerializerFeature.QuoteFieldNames, true);\n        out.config(SerializerFeature.UseSingleQuotes, true);\n        out.writeFieldValue(',', \"name\", (String) null);\n        Assert.assertEquals(\",'name':null\", out.toString());\n    }\n    \n    public void test_4() throws Exception {\n        SerializeWriter out = new SerializeWriter(1);\n        out.config(SerializerFeature.QuoteFieldNames, true);\n        out.config(SerializerFeature.UseSingleQuotes, true);\n        out.writeFieldValue(',', \"name\", (String) null);\n        Assert.assertEquals(\",'name':null\", out.toString());\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializeWriterTest_6.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class SerializeWriterTest_6 extends TestCase {\n\n    public void test_0() throws Exception {\n        SerializeWriter out = new SerializeWriter(1);\n        out.config(SerializerFeature.QuoteFieldNames, true);\n        out.config(SerializerFeature.UseSingleQuotes, true);\n        out.writeFieldValue(',', \"name\", (Enum) null);\n        Assert.assertEquals(\",'name':null\", out.toString());\n    }\n    \n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializeWriterTest_7.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class SerializeWriterTest_7 extends TestCase {\n\n\tpublic void test_0() throws Exception {\n\t\tSerializeWriter out = new SerializeWriter(1);\n\t\tout.config(SerializerFeature.QuoteFieldNames, true);\n\t\tout.config(SerializerFeature.UseSingleQuotes, true);\n\t\tout.writeFieldValue(',', \"name\", (Enum) null);\n\t\tAssert.assertEquals(\",'name':null\", out.toString());\n\t}\n\n\tpublic void test_1() throws Exception {\n\t\tSerializeWriter out = new SerializeWriter(1);\n\t\tout.config(SerializerFeature.QuoteFieldNames, true);\n\t\tout.config(SerializerFeature.UseSingleQuotes, true);\n\t\tout.writeFieldName(\"名称\");\n\t\tAssert.assertEquals(\"'名称':\", out.toString());\n\t}\n\n\tpublic void test_2() throws Exception {\n\t\tSerializeWriter out = new SerializeWriter(1);\n\t\tout.config(SerializerFeature.QuoteFieldNames, false);\n\t\tout.writeFieldName(\"名称\");\n\t\tAssert.assertEquals(\"名称:\", out.toString());\n\t}\n\n\tpublic void test_3() throws Exception {\n\t\tSerializeWriter out = new SerializeWriter(1);\n\t\tout.config(SerializerFeature.QuoteFieldNames, false);\n\t\tout.writeFieldName(\"a\\n\\n\\n\\n\");\n\t\tAssert.assertEquals(\"\\\"a\\\\n\\\\n\\\\n\\\\n\\\":\", out.toString());\n\t}\n\t\n\tpublic void test_4() throws Exception {\n\t\tSerializeWriter out = new SerializeWriter(1);\n\t\tout.config(SerializerFeature.QuoteFieldNames, false);\n\t\tout.config(SerializerFeature.UseSingleQuotes, true);\n\t\tout.writeFieldName(\"a\\n\\n\\n\\n\");\n\t\tAssert.assertEquals(\"'a\\\\n\\\\n\\\\n\\\\n':\", out.toString());\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializeWriterTest_8.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.io.StringWriter;\nimport java.util.Collections;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class SerializeWriterTest_8 extends TestCase {\n\n    public void test_BrowserCompatible() throws Exception {\n        StringBuilder buf = new StringBuilder();\n        for (int i = 0; i < 1024; ++i) {\n            buf.append('a');\n        }\n        buf.append(\"中国\");\n        buf.append(\"\\0\");\n        JSON.toJSONString(buf.toString(), SerializerFeature.BrowserCompatible);\n    }\n\n    public void test_writer() throws Exception {\n        StringBuilder buf = new StringBuilder();\n        for (int i = 0; i < 1024; ++i) {\n            buf.append('a');\n        }\n        buf.append(\"中国\");\n        buf.append(\"\\0\");\n\n        StringWriter out = new StringWriter();\n        JSON.writeJSONStringTo(buf.toString(), out, SerializerFeature.BrowserCompatible);\n    }\n\n    public void test_singleQuote() throws Exception {\n        StringBuilder buf = new StringBuilder();\n        for (int i = 0; i < 1024; ++i) {\n            buf.append('a');\n        }\n        buf.append(\"中国\");\n        buf.append(\"\\0\");\n\n        SerializeWriter out = new SerializeWriter(new StringWriter());\n\n        try {\n            JSONSerializer serializer = new JSONSerializer(out);\n            serializer.config(SerializerFeature.QuoteFieldNames, false);\n            serializer.config(SerializerFeature.UseSingleQuotes, true);\n\n            serializer.write(Collections.singletonMap(buf.toString(), \"\"));\n        } finally {\n            out.close();\n        }\n    }\n\n    public void test_singleQuote_writer() throws Exception {\n        StringBuilder buf = new StringBuilder();\n        for (int i = 0; i < 1024; ++i) {\n            buf.append('a');\n        }\n        buf.append(\"中国\");\n        buf.append(\"\\0\");\n\n        StringWriter out = new StringWriter();\n        JSON.writeJSONStringTo(Collections.singletonMap(buf.toString(), \"\"), out, SerializerFeature.UseSingleQuotes);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializeWriterTest_9.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.io.ByteArrayOutputStream;\nimport java.io.StringWriter;\nimport java.nio.charset.Charset;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\npublic class SerializeWriterTest_9 extends TestCase {\n\n    public void test_error() throws Exception {\n        SerializeWriter writer = new SerializeWriter(new StringWriter());\n        Exception error = null;\n        try {\n            writer.writeTo(new StringWriter());\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n        writer.close();\n    }\n\n    public void test_error_2() throws Exception {\n        SerializeWriter writer = new SerializeWriter(new StringWriter());\n        Exception error = null;\n        try {\n            writer.writeTo(new ByteArrayOutputStream(), Charset.forName(\"UTF-8\"));\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n        writer.close();\n    }\n    \n    public void test_error_3() throws Exception {\n        SerializeWriter writer = new SerializeWriter(new StringWriter());\n        Exception error = null;\n        try {\n            writer.writeTo(new ByteArrayOutputStream(), \"UTF-8\");\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n        writer.close();\n    }\n    \n    public void test_error_4() throws Exception {\n        SerializeWriter writer = new SerializeWriter(new StringWriter());\n        Exception error = null;\n        try {\n            writer.toCharArray();\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n        writer.close();\n    }\n    \n    public void test_error_5() throws Exception {\n        SerializeWriter writer = new SerializeWriter(new StringWriter());\n        Exception error = null;\n        try {\n            writer.toBytes(\"UTF-8\");\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n        writer.close();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializeWriterTest_BrowserSecure.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.io.StringWriter;\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class SerializeWriterTest_BrowserSecure extends TestCase {\n\n    public void test_0() throws Exception {\n        StringBuilder buf = new StringBuilder();\n        for (int i = 0; i < 1024; ++i) {\n            buf.append('a');\n        }\n        buf.append(\"中国\");\n        buf.append(\"\\0\");\n        JSON.toJSONString(buf.toString(), SerializerFeature.BrowserSecure);\n    }\n\n    public void test_1() throws Exception {\n        StringBuilder buf = new StringBuilder();\n        for (int i = 0; i < 1024; ++i) {\n            buf.append('a');\n        }\n        buf.append(\"中国\");\n        buf.append(\"\\0\");\n\n        StringWriter out = new StringWriter();\n        JSON.writeJSONStringTo(buf.toString(), out, SerializerFeature.BrowserSecure);\n    }\n\n    public void test_zh() throws Exception {\n        Assert.assertEquals(\"\\\"中国\\\"\", JSON.toJSONString(\"中国\", SerializerFeature.BrowserSecure));\n    }\n\n    public void test_all() throws Exception {\n        String value = \".,_~!@<>'\\\"\\\\/hello world 0123;汉字；\\u2028\\u2028\\r\\n<script></scirpt>\";\n        String expect = \"\\\".,_~!@\\\\u003C\\\\u003E'\\\\\\\"\\\\\\\\/hello world 0123;汉字；\\\\u2028\\\\u2028\\\\r\\\\n\\\\u003Cscript\\\\u003E\\\\u003C/scirpt\\\\u003E\\\"\";\n        Assert.assertEquals(expect, JSON.toJSONString(value, SerializerFeature.BrowserSecure));\n    }\n\n    public void test_all_map() throws Exception {\n        String value = \".,_~!@<>'\\\"\\\\/hello world 0123;汉字；\\u2028\\u2028\\r\\n<script></scirpt>\";\n\n        Map<String, String> map = new HashMap<String, String>();\n        map.put(\"value\", value);\n\n        String expect = \"{\\\"value\\\":\\\".,_~!@\\\\u003C\\\\u003E'\\\\\\\"\\\\\\\\/hello world 0123;汉字；\\\\u2028\\\\u2028\\\\r\\\\n\\\\u003Cscript\\\\u003E\\\\u003C/scirpt\\\\u003E\\\"}\";\n        String json = JSON.toJSONString(map, SerializerFeature.BrowserSecure);\n        assertEquals(expect, json);\n\n        assertEquals(value, JSON.parseObject(json).get(\"value\"));\n    }\n\n    public void test_all_entity() throws Exception {\n        String value = \".,_~!@<>'\\\"\\\\/hello world 0123;汉字；\\u2028\\u2028\\r\\n<script></scirpt>\";\n\n        VO vo = new VO();\n        vo.setValue(value);\n\n        String expect = \"{\\\"value\\\":\\\".,_~!@\\\\u003C\\\\u003E'\\\\\\\"\\\\\\\\/hello world 0123;汉字；\\\\u2028\\\\u2028\\\\r\\\\n\\\\u003Cscript\\\\u003E\\\\u003C/scirpt\\\\u003E\\\"}\";\n        String json = JSON.toJSONString(vo, SerializerFeature.BrowserSecure);\n        assertEquals(expect, json);\n\n        assertEquals(value, JSON.parseObject(json, VO.class).value);\n    }\n\n    public static class VO {\n\n        String value;\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializeWriterTest_BrowserSecure3.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class SerializeWriterTest_BrowserSecure3 extends TestCase {\n\n    public void test_0() throws Exception {\n        String text = JSON.toJSONString(\"\\n\", SerializerFeature.BrowserSecure);\n        Assert.assertEquals(\"\\\"\\\\n\\\"\", text);\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializeWriterTest_BrowserSecure_4_script.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.io.StringWriter;\n\npublic class SerializeWriterTest_BrowserSecure_4_script extends TestCase {\n\n    public void test_0() throws Exception {\n        JSONObject object = new JSONObject();\n        object.put(\"value\", \"<script>alert(1);</script>\");\n        String text = JSON.toJSONString(object, SerializerFeature.BrowserSecure);\n//        assertEquals(\"{\\\"value\\\":\\\"&lt;script&gt;alert(1);&lt;\\\\/script&gt;\\\"}\", text);\n        assertEquals(\"{\\\"value\\\":\\\"\\\\u003Cscript\\\\u003Ealert\\\\u00281\\\\u0029;\\\\u003C/script\\\\u003E\\\"}\", text);\n        JSONObject object1 = JSON.parseObject(text);\n        assertEquals(object.get(\"value\"), object1.get(\"value\"));\n    }\n\n    public void test_1() throws Exception {\n        String text = JSON.toJSONString(\"<\", SerializerFeature.BrowserSecure);\n        assertEquals(\"\\\"\\\\u003C\\\"\", text);\n    }\n\n    public void test_2() throws Exception {\n        String text = JSON.toJSONString(\"<script>\", SerializerFeature.BrowserSecure);\n        assertEquals(\"\\\"\\\\u003Cscript\\\\u003E\\\"\", text);\n    }\n\n    public void test_3() throws Exception {\n        StringBuilder buf = new StringBuilder();\n        for (int i = 0; i < 500; i++) {\n            buf.append(\"<script>\");\n        }\n\n        StringBuilder buf1 = new StringBuilder();\n        buf1.append('\"');\n        for (int i = 0; i < 500; i++) {\n            buf1.append(\"\\\\u003Cscript\\\\u003E\");\n        }\n        buf1.append('\"');\n\n        StringWriter out = new StringWriter();\n        JSONWriter writer = new JSONWriter(out);\n        writer.config(SerializerFeature.BrowserSecure, true);\n        writer.writeObject(buf.toString());\n        writer.flush();\n\n        assertEquals(buf1.toString(), out.toString());\n    }\n\n    public void test_4() throws Exception {\n        String text = JSON.toJSONString(\"(\", SerializerFeature.BrowserSecure);\n        assertEquals(\"\\\"\\\\u0028\\\"\", text);\n    }\n\n    public void test_5() throws Exception {\n        String text = JSON.toJSONString(\")\", SerializerFeature.BrowserSecure);\n        assertEquals(\"\\\"\\\\u0029\\\"\", text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializeWriterTest_BrowserSecure_5_script_model.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.io.StringWriter;\n\npublic class SerializeWriterTest_BrowserSecure_5_script_model extends TestCase {\n\n    public void test_0() throws Exception {\n        Model object = new Model();\n        object.value = \"<script>alert(1);</script>\";\n        String text = JSON.toJSONString(object, SerializerFeature.BrowserSecure);\n//        assertEquals(\"{\\\"value\\\":\\\"&lt;script&gt;alert(1);&lt;\\\\/script&gt;\\\"}\", text);\n        assertEquals(\"{\\\"value\\\":\\\"\\\\u003Cscript\\\\u003Ealert\\\\u00281\\\\u0029;\\\\u003C/script\\\\u003E\\\"}\", text);\n        Model object1 = JSON.parseObject(text, Model.class);\n        assertEquals(object.value, object1.value);\n    }\n\n    public void test_1() throws Exception {\n        Model object = new Model();\n        object.value = \"<\";\n        String text = JSON.toJSONString(object, SerializerFeature.BrowserSecure);\n//        assertEquals(\"{\\\"value\\\":\\\"&lt;script&gt;alert(1);&lt;\\\\/script&gt;\\\"}\", text);\n        assertEquals(\"{\\\"value\\\":\\\"\\\\u003C\\\"}\", text);\n        Model object1 = JSON.parseObject(text, Model.class);\n        assertEquals(object.value, object1.value);\n    }\n\n    public void test_2() throws Exception {\n        Model object = new Model();\n        object.value = \"<script>\";\n        String text = JSON.toJSONString(object, SerializerFeature.BrowserSecure);\n//        assertEquals(\"{\\\"value\\\":\\\"&lt;script&gt;alert(1);&lt;\\\\/script&gt;\\\"}\", text);\n        assertEquals(\"{\\\"value\\\":\\\"\\\\u003Cscript\\\\u003E\\\"}\", text);\n        Model object1 = JSON.parseObject(text, Model.class);\n        assertEquals(object.value, object1.value);\n    }\n//\n    public void test_3() throws Exception {\n        StringBuilder buf = new StringBuilder();\n        for (int i = 0; i < 500; i++) {\n            buf.append(\"<script>\");\n        }\n\n        StringBuilder buf1 = new StringBuilder();\n        buf1.append(\"{\\\"value\\\":\\\"\");\n        for (int i = 0; i < 500; i++) {\n            buf1.append(\"\\\\u003Cscript\\\\u003E\");\n        }\n        buf1.append(\"\\\"}\");\n\n        Model object = new Model();\n        object.value = buf.toString();\n\n        StringWriter out = new StringWriter();\n        JSONWriter writer = new JSONWriter(out);\n        writer.config(SerializerFeature.BrowserSecure, true);\n        writer.writeObject(object);\n        writer.flush();\n\n        assertEquals(buf1.toString(), out.toString());\n    }\n//\n    public void test_4() throws Exception {\n        String text = JSON.toJSONString(new Model(\"(\"), SerializerFeature.BrowserSecure);\n        assertEquals(\"{\\\"value\\\":\\\"\\\\u0028\\\"}\", text);\n    }\n\n    public void test_5() throws Exception {\n        String text = JSON.toJSONString(new Model(\")\"), SerializerFeature.BrowserSecure);\n        assertEquals(\"{\\\"value\\\":\\\"\\\\u0029\\\"}\", text);\n    }\n\n    public static class Model {\n        public String value;\n\n        public Model() {\n\n        }\n\n        public Model(String value) {\n            this.value = value;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializeWriterTest_BrowserSecure_6_name_script.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.JSONWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.io.StringWriter;\n\npublic class SerializeWriterTest_BrowserSecure_6_name_script extends TestCase {\n\n    public void test_0() throws Exception {\n        JSONObject object = new JSONObject();\n        object.put(\"<script>alert(1);</script>\", \"value\");\n        String text = JSON.toJSONString(object, SerializerFeature.BrowserSecure);\n//        assertEquals(\"{\\\"value\\\":\\\"&lt;script&gt;alert(1);&lt;\\\\/script&gt;\\\"}\", text);\n        assertEquals(\"{\\\"\\\\u003Cscript\\\\u003Ealert\\\\u00281\\\\u0029;\\\\u003C/script\\\\u003E\\\":\\\"value\\\"}\", text);\n        JSONObject object1 = JSON.parseObject(text);\n        assertEquals(object.get(\"<script>alert(1);</script>\"), object1.get(\"<script>alert(1);</script>\"));\n    }\n//\n//    public void test_1() throws Exception {\n//        String text = JSON.toJSONString(\"<\", SerializerFeature.BrowserSecure);\n//        assertEquals(\"\\\"\\\\u003C\\\"\", text);\n//    }\n//\n//    public void test_2() throws Exception {\n//        String text = JSON.toJSONString(\"<script>\", SerializerFeature.BrowserSecure);\n//        assertEquals(\"\\\"\\\\u003Cscript\\\\u003E\\\"\", text);\n//    }\n//\n//    public void test_3() throws Exception {\n//        StringBuilder buf = new StringBuilder();\n//        for (int i = 0; i < 500; i++) {\n//            buf.append(\"<script>\");\n//        }\n//\n//        StringBuilder buf1 = new StringBuilder();\n//        buf1.append('\"');\n//        for (int i = 0; i < 500; i++) {\n//            buf1.append(\"\\\\u003Cscript\\\\u003E\");\n//        }\n//        buf1.append('\"');\n//\n//        StringWriter out = new StringWriter();\n//        JSONWriter writer = new JSONWriter(out);\n//        writer.config(SerializerFeature.BrowserSecure, true);\n//        writer.writeObject(buf.toString());\n//        writer.flush();\n//\n//        assertEquals(buf1.toString(), out.toString());\n//    }\n//\n//\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerializerFeatureTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\n\npublic class SerializerFeatureTest extends TestCase {\n    public void test_0 () throws Exception {\n        int feature = 0;\n        feature = SerializerFeature.config(feature, SerializerFeature.BrowserCompatible, true);\n        Assert.assertEquals(true, SerializerFeature.isEnabled(feature, SerializerFeature.BrowserCompatible));\n        feature = SerializerFeature.config(feature, SerializerFeature.BrowserCompatible, false);\n        Assert.assertEquals(false, SerializerFeature.isEnabled(feature, SerializerFeature.BrowserCompatible));\n    }\n    \n    public void test_1 () throws Exception {\n        int feature = 0;\n        feature = SerializerFeature.config(feature, SerializerFeature.BrowserSecure, true);\n        Assert.assertEquals(true, SerializerFeature.isEnabled(feature, SerializerFeature.BrowserSecure));\n        feature = SerializerFeature.config(feature, SerializerFeature.BrowserSecure, false);\n        Assert.assertEquals(false, SerializerFeature.isEnabled(feature, SerializerFeature.BrowserSecure));\n    }\n\n    public void test_assert_cnt() throws Exception {\n        int len = SerializerFeature.values().length;\n        assertTrue(len <= 32);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SerilaizeFilterTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.serializer.PropertyFilter;\nimport com.alibaba.fastjson.serializer.ValueFilter;\nimport junit.framework.TestCase;\n\npublic class SerilaizeFilterTest extends TestCase {\n    public void test_for_jsonField() throws Exception {\n        Model m = new Model();\n        String json = JSON.toJSONString(m);\n        System.out.println(json);\n    }\n\n    public static class MyValueFilter implements ValueFilter {\n\n        public Object process(Object object, String name, Object value) {\n            if (name.equals(\"id\")) {\n                return 123;\n            }\n\n            return null;\n        }\n    }\n\n    @JSONType(serialzeFilters = MyValueFilter.class)\n    public static class Model {\n\n        public int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ShortArraySerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\n\r\npublic class ShortArraySerializerTest extends TestCase {\r\n\r\n    public void test_0() {\r\n        Assert.assertEquals(\"[]\", JSON.toJSONString(new short[0]));\r\n        Assert.assertEquals(\"[1,2]\", JSON.toJSONString(new short[] { 1, 2 }));\r\n        Assert.assertEquals(\"[1,2,3]\", JSON.toJSONString(new short[] { 1, 2, 3 }));\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ShortFieldSerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class ShortFieldSerializerTest extends TestCase {\n\n    public void test_0() {\n        Assert.assertEquals(\"{\\\"value\\\":null}\", JSON.toJSONString(new Entity(), SerializerFeature.WriteMapNullValue));\n        Assert.assertEquals(\"{\\\"value\\\":0}\", JSON.toJSONString(new Entity(), SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullNumberAsZero));\n    }\n\n    public static class Entity {\n\n        private Short value;\n\n        public Short getValue() {\n            return value;\n        }\n\n        public void setValue(Short value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/ShortSerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\n\npublic class ShortSerializerTest extends TestCase {\n    \n    public void test_null() throws Exception {\n        VO vo = new VO();\n        \n        Assert.assertEquals(\"{\\\"value\\\":null}\", JSON.toJSONString(vo, SerializerFeature.WriteMapNullValue));\n    }\n\n    private static class VO {\n\n        private Short value;\n\n        public Short getValue() {\n            return value;\n        }\n\n        public void setValue(Short value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SimpleDataFormatSerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SimpleDateFormatSerializer;\n\npublic class SimpleDataFormatSerializerTest extends TestCase {\n\n    private static SerializeConfig mapping = new SerializeConfig();\n    static {\n        mapping.put(Date.class, new SimpleDateFormatSerializer(\"yyyy-MM-dd\"));\n    }\n    \n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_0() throws Exception {\n        Date date = new Date();\n        String text = JSON.toJSONString(date, mapping);\n        SimpleDateFormat format = new SimpleDateFormat(\"yyyy-MM-dd\", JSON.defaultLocale);\n        format.setTimeZone(JSON.defaultTimeZone);\n        SimpleDateFormat format2 = new SimpleDateFormat(\"yyyy-MM-dd\", JSON.defaultLocale);\n        format2.setTimeZone(JSON.defaultTimeZone);\n        Assert.assertEquals(JSON.toJSONString(format.format(date)), text);\n        Assert.assertEquals(JSON.toJSONString(format2.format(date)), text);\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SimplePropertyPreFilterTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SimplePropertyPreFilter;\n\npublic class SimplePropertyPreFilterTest extends TestCase {\n\n    private VO vo;\n    \n    private A a;\n    \n    private Map<String, Object> map;\n\n    protected void setUp() throws Exception {\n        vo = new VO();\n        vo.setId(123);\n        vo.setName(\"sandzhangtoo\");\n        \n        a = new A();\n        a.setId(123);\n        a.setName(\"sandzhangtoo\");\n        \n        map = new HashMap<String, Object>();\n        map.put(\"id\", 123);\n        map.put(\"name\", \"sandzhangtoo\");\n        map.put(null, null);\n    }\n\n    public void test_name() throws Exception {\n        SimplePropertyPreFilter filter = new SimplePropertyPreFilter(VO.class, \"name\");\n        Assert.assertEquals(\"{\\\"name\\\":\\\"sandzhangtoo\\\"}\", JSON.toJSONString(vo, filter));\n    }\n    \n    public void test_name_0() throws Exception {\n        SimplePropertyPreFilter filter = new SimplePropertyPreFilter(\"name\");\n        Assert.assertEquals(\"{\\\"name\\\":\\\"sandzhangtoo\\\"}\", JSON.toJSONString(vo, filter));\n    }\n    \n    public void test_name_a() throws Exception {\n        SimplePropertyPreFilter filter = new SimplePropertyPreFilter(VO.class, \"name\");\n        Assert.assertEquals(VO.class, filter.getClazz());\n        Assert.assertEquals(1, filter.getIncludes().size());\n        Assert.assertTrue(filter.apply(null, null, null));\n        \n        String text = JSON.toJSONString(a, filter);\n        Assert.assertTrue(\"{\\\"id\\\":123,\\\"name\\\":\\\"sandzhangtoo\\\"}\".equals(text) || \"{\\\"name\\\":\\\"sandzhangtoo\\\",\\\"id\\\":123}\".equals(text));\n    }\n    \n    public void test_name_a1() throws Exception {\n        SimplePropertyPreFilter filter = new SimplePropertyPreFilter(\"name\");\n        Assert.assertEquals(\"{\\\"name\\\":\\\"sandzhangtoo\\\"}\", JSON.toJSONString(a, filter));\n    }\n    \n    public void test_id() throws Exception {\n        SimplePropertyPreFilter filter = new SimplePropertyPreFilter(VO.class, \"id\");\n        Assert.assertEquals(\"{\\\"id\\\":123}\", JSON.toJSONString(vo, filter));\n    }\n    \n    public void test_id_0() throws Exception {\n        SimplePropertyPreFilter filter = new SimplePropertyPreFilter(\"id\");\n        Assert.assertEquals(\"{\\\"id\\\":123}\", JSON.toJSONString(vo, filter));\n    }\n    \n    public void test_map() throws Exception {\n        SimplePropertyPreFilter filter = new SimplePropertyPreFilter(VO.class, \"name\");\n        String text = JSON.toJSONString(map, filter);\n        Assert.assertTrue(\"{\\\"id\\\":123,\\\"name\\\":\\\"sandzhangtoo\\\"}\".equals(text) || \"{\\\"name\\\":\\\"sandzhangtoo\\\",\\\"id\\\":123}\".equals(text));\n    }\n    \n    public void test_map_id() throws Exception {\n        SimplePropertyPreFilter filter = new SimplePropertyPreFilter(\"id\");\n        Assert.assertEquals(\"{\\\"id\\\":123}\", JSON.toJSONString(map, filter));\n    }\n    \n    public void test_map_name() throws Exception {\n        SimplePropertyPreFilter filter = new SimplePropertyPreFilter(\"name\");\n        Assert.assertEquals(\"{\\\"name\\\":\\\"sandzhangtoo\\\"}\", JSON.toJSONString(map, filter));\n    }\n    \n    public void test_all() throws Exception {\n        SimplePropertyPreFilter filter = new SimplePropertyPreFilter(VO.class);\n        String text = JSON.toJSONString(vo, filter);\n        Assert.assertTrue(\"{\\\"id\\\":123,\\\"name\\\":\\\"sandzhangtoo\\\"}\".equals(text) || \"{\\\"name\\\":\\\"sandzhangtoo\\\",\\\"id\\\":123}\".equals(text));\n    }\n    \n    public void test_all_map() throws Exception {\n        SimplePropertyPreFilter filter = new SimplePropertyPreFilter(VO.class);\n        String text = JSON.toJSONString(map, filter);\n        Assert.assertTrue(\"{\\\"id\\\":123,\\\"name\\\":\\\"sandzhangtoo\\\"}\".equals(text) || \"{\\\"name\\\":\\\"sandzhangtoo\\\",\\\"id\\\":123}\".equals(text));\n    }\n    \n    public void test_exclude_id() throws Exception {\n        SimplePropertyPreFilter filter = new SimplePropertyPreFilter(VO.class);\n        filter.getExcludes().add(\"id\");\n        Assert.assertEquals(\"{\\\"name\\\":\\\"sandzhangtoo\\\"}\", JSON.toJSONString(vo, filter));\n    }\n    \n    public void test_exclude_id_map() throws Exception {\n        SimplePropertyPreFilter filter = new SimplePropertyPreFilter(VO.class);\n        filter.getExcludes().add(\"id\");\n        Assert.assertEquals(\"{\\\"name\\\":\\\"sandzhangtoo\\\"}\", JSON.toJSONString(vo, filter));\n    }\n    \n    public void test_exclude_name() throws Exception {\n        SimplePropertyPreFilter filter = new SimplePropertyPreFilter(VO.class);\n        filter.getExcludes().add(\"name\");\n        Assert.assertEquals(\"{\\\"id\\\":123}\", JSON.toJSONString(vo, filter));\n    }\n\n    public static class VO {\n\n        private int    id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n    \n    public static class A {\n        \n        private int    id;\n        private String name;\n        \n        public int getId() {\n            return id;\n        }\n        \n        public void setId(int id) {\n            this.id = id;\n        }\n        \n        public String getName() {\n            return name;\n        }\n        \n        public void setName(String name) {\n            this.name = name;\n        }\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SpecialTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class SpecialTest {\n    \n    public static void main(String[] args) throws Exception {\n        \n        int count = 0;\n        for (int i = 0; i < 1000; ++i) {\n            char ch = (char) i;\n            if(isSpecial(ch)) {\n                count++;\n            }\n        }\n        System.out.println(count);\n    }\n    \n    final static long flags;\n    static {\n        long val = 0L;\n        val |= (1L << ('\"' - 31)); // 34 - 31\n        val |= (1L << ('\\\\' - 31)); // 92 - 31\n        flags = val;\n    }\n    \n    static boolean isSpecial(char ch) {\n        if (ch <= 31) {\n            return true;\n        }\n        \n        if (ch > '\\\\') { // 92\n            return false;\n        }\n        \n        return ((1L << (ch - 31)) & flags) != 0;\n    }\n    \n    static boolean isSpecial(char ch, int features) {\n        // if (ch > ']') {\n        // return false;\n        // }\n        \n        if (ch == ' ') { // 32\n            return false;\n        }\n\n        if (ch == '/') { // 47\n            return SerializerFeature.isEnabled(features, SerializerFeature.WriteSlashAsSpecial);\n        }\n\n        if (ch > '#' // 35\n            && ch != '\\\\' // 92\n            ) {\n            return false;\n        }\n\n        if (ch <= 0x1F // 31\n                || ch == '\\\\' // 92\n                || ch == '\"' // 34\n                ) {\n            return true;\n        }\n\n        return false;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/SpecicalStringTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.JSONScanner;\n\npublic class SpecicalStringTest extends TestCase {\n    public void test_0 () throws Exception {\n        String text;\n        {\n            JSONObject json = new JSONObject();\n            \n            Map<String, Object> map = new HashMap<String, Object>();\n            map.put(\"name\", \"张三\");\n            \n            json.put(\"text\", JSON.toJSONString(map));\n            \n            text = JSON.toJSONString(json);\n        }\n        \n        Assert.assertEquals(\"{\\\"text\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"张三\\\\\\\"}\\\"}\", text);\n    }\n    \n    public void test_string2() throws Exception {\n        StringBuilder buf = new StringBuilder();\n\n        buf.append('\"');\n        for (int i = 0; i < 200; ++i) {\n            buf.append(\"\\\\\\\\\\\\/\\\\b\\\\f\\\\n\\\\r\\\\t\\\\u\" + Integer.toHexString('中'));\n        }\n        buf.append('\"');\n\n        String text = buf.toString();\n\n        JSONScanner lexer = new JSONScanner(text.toCharArray(), text.length());\n        lexer.nextToken();\n\n        Assert.assertEquals(0, lexer.pos());\n\n        lexer.stringVal();\n\n        // Assert.assertEquals(\"\\\"\\\\\\\\\\\\/\\\\b\\\\f\\\\n\\\\r\\\\t中\\\"\",\n        // JSON.toJSONString(stringVal));\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/StringArraySerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\n\r\npublic class StringArraySerializerTest extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(1);\r\n\r\n        JSONSerializer.write(out, new String[] { \"a12\", \"b34\" });\r\n\r\n        Assert.assertEquals(\"[\\\"a12\\\",\\\"b34\\\"]\", out.toString());\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(1);\r\n\r\n        JSONSerializer.write(out, new String[] { \"a12\", \"\\na\\nb\\nc\\nd\\\"'\", \"b34\" });\r\n\r\n        Assert.assertEquals(\"[\\\"a12\\\",\\\"\\\\na\\\\nb\\\\nc\\\\nd\\\\\\\"'\\\",\\\"b34\\\"]\", out.toString());\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(1);\r\n\r\n        JSONSerializer.write(out, new String[] { \"a12\", null });\r\n\r\n        Assert.assertEquals(\"[\\\"a12\\\",null]\", out.toString());\r\n    }\r\n\r\n    public void test_3() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(1024);\r\n\r\n        JSONSerializer.write(out, new String[] { \"a12\", null });\r\n\r\n        Assert.assertEquals(\"[\\\"a12\\\",null]\", out.toString());\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/StringSerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport java.io.StringWriter;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class StringSerializerTest extends TestCase {\r\n\r\n\tpublic void test_0() throws Exception {\r\n\t\tAssert.assertEquals(\"{\\\"value\\\":null}\", JSON.toJSONString(\r\n\t\t\t\tnew TestEntity(null), SerializerFeature.WriteMapNullValue));\r\n\r\n\t\tSerializeWriter out = new SerializeWriter();\r\n\r\n\t\tJSONSerializer.write(out, (Object) \"123\");\r\n\t\tAssert.assertEquals(\"\\\"123\\\"\", out.toString());\r\n\r\n\t\tJSONSerializer.write(out, (Object) \"456\");\r\n\t\tAssert.assertEquals(\"\\\"123\\\"\\\"456\\\"\", out.toString());\r\n\t}\r\n\r\n\tpublic void test_2() throws Exception {\r\n\t\tStringWriter out = new StringWriter();\r\n\r\n\t\tJSONSerializer.write(out, new TestEntity(null));\r\n\t\tAssert.assertEquals(\"{}\", out.toString());\r\n\t}\r\n\r\n\tpublic void test_2_s() throws Exception {\r\n\t\tSerializeWriter out = new SerializeWriter();\r\n\r\n\t\tJSONSerializer.write(out, new TestEntity(null));\r\n\t\tAssert.assertEquals(\"{}\", out.toString());\r\n\t}\r\n\r\n\tpublic void test_3() throws Exception {\r\n\t\tSerializeWriter out = new SerializeWriter();\r\n\t\tJSONSerializer serializer = new JSONSerializer(out);\r\n\t\tserializer.config(SerializerFeature.UseSingleQuotes, true);\r\n\r\n\t\tserializer.write(new TestEntity(\"张三\"));\r\n\t\tAssert.assertEquals(\"{'value':'张三'}\", out.toString());\r\n\t}\r\n\r\n\tpublic void test_4() throws Exception {\r\n\t\tStringWriter out = new StringWriter();\r\n\r\n\t\tJSONSerializer.write(out, new TestEntity(\"张三\"));\r\n\t\tAssert.assertEquals(\"{\\\"value\\\":\\\"张三\\\"}\", out.toString());\r\n\t}\r\n\r\n\tpublic void test_5() throws Exception {\r\n\t\tSerializeWriter out = new SerializeWriter();\r\n\t\tout.config(SerializerFeature.UseSingleQuotes, true);\r\n\r\n\t\tout.writeString((String) null);\r\n\t\tAssert.assertEquals(\"null\", out.toString());\r\n\t}\r\n\r\n\tpublic void test_5_d() throws Exception {\r\n\t\tSerializeWriter out = new SerializeWriter();\r\n\t\tout.config(SerializerFeature.UseSingleQuotes, true);\r\n\r\n\t\tout.writeString((String) null);\r\n\t\tAssert.assertEquals(\"null\", out.toString());\r\n\t}\r\n\r\n\tpublic void test_6() throws Exception {\r\n\t\tSerializeWriter out = new SerializeWriter(1);\r\n\t\tout.config(SerializerFeature.UseSingleQuotes, true);\r\n\r\n\t\tout.writeString((String) null);\r\n\t\tAssert.assertEquals(\"null\", out.toString());\r\n\t}\r\n\r\n\tpublic void test_6_d() throws Exception {\r\n\t\tSerializeWriter out = new SerializeWriter(1);\r\n\t\tout.config(SerializerFeature.UseSingleQuotes, true);\r\n\r\n\t\tout.writeString((String) null);\r\n\t\tAssert.assertEquals(\"null\", out.toString());\r\n\t}\r\n\r\n\tpublic void test_7() throws Exception {\r\n\t\tSerializeWriter out = new SerializeWriter(1);\r\n\t\tout.config(SerializerFeature.UseSingleQuotes, true);\r\n\r\n\t\tout.writeString(\"中国\");\r\n\t\tAssert.assertEquals(\"'中国'\", out.toString());\r\n\t}\r\n\r\n\tpublic void test_7_d() throws Exception {\r\n\t\tSerializeWriter out = new SerializeWriter(1);\r\n\t\tout.config(SerializerFeature.UseSingleQuotes, false);\r\n\r\n\t\tout.writeString(\"中国\");\r\n\t\tAssert.assertEquals(\"\\\"中国\\\"\", out.toString());\r\n\t}\r\n\r\n\tpublic void test_8() throws Exception {\r\n\t\tSerializeWriter out = new SerializeWriter();\r\n\t\tout = new SerializeWriter();\r\n\t\tout.config(SerializerFeature.UseSingleQuotes, false);\r\n\r\n\t\tout.writeString(\"\\na\\nb\\nc\\nd\\\"'\");\r\n\t\tAssert.assertEquals(\"\\\"\\\\na\\\\nb\\\\nc\\\\nd\\\\\\\"'\\\"\", out.toString());\r\n\t}\r\n\r\n\tpublic void test_8_s() throws Exception {\r\n\t\tSerializeWriter out = new SerializeWriter();\r\n\t\tout.config(SerializerFeature.UseSingleQuotes, true);\r\n\r\n\t\tout.writeString(\"\\na\\nb\\nc\\nd\\\"'\");\r\n\t\tAssert.assertEquals(\"'\\\\na\\\\nb\\\\nc\\\\nd\\\"\\\\''\", out.toString());\r\n\t}\r\n\r\n\tpublic void test_9() throws Exception {\r\n\t\tSerializeWriter out = new SerializeWriter(1);\r\n\t\tout.config(SerializerFeature.UseSingleQuotes, true);\r\n\t\tout.writeFieldName(\"\\na\\nb\\nc\\nd\\\"'e\");\r\n\t\tAssert.assertEquals(\"'\\\\na\\\\nb\\\\nc\\\\nd\\\"\\\\'e':\", out.toString());\r\n\t}\r\n\r\n\tpublic void test_9_d() throws Exception {\r\n\t\tSerializeWriter out = new SerializeWriter(1);\r\n\r\n\t\tout.writeFieldName(\"\\na\\nb\\nc\\nd\\\"'e\");\r\n\t\tAssert.assertEquals(\"\\\"\\\\na\\\\nb\\\\nc\\\\nd\\\\\\\"'e\\\":\", out.toString());\r\n\t}\r\n\r\n\tpublic void test_10() throws Exception {\r\n\t\tSerializeWriter out = new SerializeWriter();\r\n\t\tout.config(SerializerFeature.UseSingleQuotes, true);\r\n\t\tout.writeFieldName(\"123\\na\\nb\\nc\\nd\\\"'e\");\r\n\t\tAssert.assertEquals(\"'123\\\\na\\\\nb\\\\nc\\\\nd\\\"\\\\'e':\", out.toString());\r\n\t}\r\n\r\n\tpublic void test_10_d() throws Exception {\r\n\t\tSerializeWriter out = new SerializeWriter();\r\n\r\n\t\tout.writeFieldName(\"123\\na\\nb\\nc\\nd\\\"'e\", true);\r\n\t\tAssert.assertEquals(\"\\\"123\\\\na\\\\nb\\\\nc\\\\nd\\\\\\\"'e\\\":\", out.toString());\r\n\t}\r\n\r\n\tpublic void test_11() throws Exception {\r\n\t\tSerializeWriter out = new SerializeWriter();\r\n\t\tout.config(SerializerFeature.QuoteFieldNames, true);\r\n\t\tout.config(SerializerFeature.UseSingleQuotes, true);\r\n\t\tout.writeFieldName(\"123\\na\\nb\\nc\\nd\\\"'e\");\r\n\t\tAssert.assertEquals(\"'123\\\\na\\\\nb\\\\nc\\\\nd\\\"\\\\'e':\", out.toString());\r\n\t}\r\n\r\n\tpublic void test_11_d() throws Exception {\r\n\t\tSerializeWriter out = new SerializeWriter();\r\n\r\n\t\tout.writeString(\"123\\na\\nb\\nc\\nd\\\"'e\", ':');\r\n\t\tAssert.assertEquals(\"\\\"123\\\\na\\\\nb\\\\nc\\\\nd\\\\\\\"'e\\\":\", out.toString());\r\n\t}\r\n\r\n\tpublic void test_12() throws Exception {\r\n\t\tSerializeWriter out = new SerializeWriter(1);\r\n\t\tout.config(SerializerFeature.QuoteFieldNames, true);\r\n\t\tout.config(SerializerFeature.UseSingleQuotes, true);\r\n\t\tout.writeFieldName(\"123\\na\\nb\\nc\\nd\\\"'e\");\r\n\t\tAssert.assertEquals(\"'123\\\\na\\\\nb\\\\nc\\\\nd\\\"\\\\'e':\", out.toString());\r\n\t}\r\n\r\n\tpublic void test_12_d() throws Exception {\r\n\t\tSerializeWriter out = new SerializeWriter(1);\r\n\r\n\t\tout.writeString(\"123\\na\\nb\\nc\\nd\\\"'e\", ':');\r\n\t\tAssert.assertEquals(\"\\\"123\\\\na\\\\nb\\\\nc\\\\nd\\\\\\\"'e\\\":\", out.toString());\r\n\t}\r\n\r\n\tpublic void test_13() throws Exception {\r\n\t\tSerializeWriter out = new SerializeWriter(4);\r\n\t\tout.config(SerializerFeature.UseSingleQuotes, true);\r\n\r\n\t\tout.writeString(\"1'\");\r\n\t\tAssert.assertEquals(\"'1\\\\''\", out.toString());\r\n\t}\r\n\r\n\tpublic void test_14() throws Exception {\r\n\t\tSerializeWriter out = new SerializeWriter(4);\r\n\t\tout.config(SerializerFeature.UseSingleQuotes, false);\r\n\r\n\t\tout.writeString(\"1\\\"\");\r\n\t\tAssert.assertEquals(\"\\\"1\\\\\\\"\\\"\", out.toString());\r\n\t}\r\n\r\n\tpublic static class TestEntity {\r\n\r\n\t\tprivate String value;\r\n\r\n\t\tpublic TestEntity(String value) {\r\n\t\t\tthis.value = value;\r\n\t\t}\r\n\r\n\t\tpublic String getValue() {\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\tpublic void setValue(String value) {\r\n\t\t\tthis.value = value;\r\n\t\t}\r\n\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/TestInnerClass.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestInnerClass extends TestCase {\n\n    public void test_inner() throws Exception {\n        VO vo = new VO();\n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"value\\\":234}\", text);\n    }\n\n    public class VO {\n        private int value = 234;\n\n        public int getValue() {\n            return value;\n        }\n\n        public void setValue(int value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/TestInnerClass1.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestInnerClass1 extends TestCase {\n\n    public void test_inner() throws Exception {\n        VO vo = new VO();\n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"value\\\":234}\", text);\n    }\n\n    private class VO {\n\n        private int value = 234;\n\n        public int getValue() {\n            return value;\n        }\n\n        public void setValue(int value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/TestInnerClass2.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\n\npublic class TestInnerClass2 extends TestCase {\n\n    public void test_inner() throws Exception {\n        VO vo = new VO(234);\n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"value\\\":234}\", text);\n\n        Exception error = null;\n        try {\n            JSON.parseObject(text, VO.class);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    private class VO {\n\n        private int value;\n\n        public VO(int value){\n            this.value = value;\n        }\n\n        public int getValue() {\n            return value;\n        }\n\n        public void setValue(int value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/TestPivateStaticClass.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestPivateStaticClass extends TestCase {\n\n    public void test_inner() throws Exception {\n        VO vo = new VO();\n        String text = JSON.toJSONString(vo);\n        Assert.assertEquals(\"{\\\"value\\\":234}\", text);\n        \n        VO v1 = JSON.parseObject(text, VO.class);\n    }\n\n    private static class VO {\n\n        private int value = 234;\n\n        public int getValue() {\n            return value;\n        }\n\n        public void setValue(int value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/TestSortField.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestSortField extends TestCase {\n\n    public void test_0() throws Exception {\n        Map<String, Object> map = new LinkedHashMap<String, Object>();\n\n        map.put(\"nnn\", \"123\");\n\n        map.put(\"13\", \"123\");\n\n        String text = JSON.toJSONString(map);\n        \n        Assert.assertEquals(\"{\\\"nnn\\\":\\\"123\\\",\\\"13\\\":\\\"123\\\"}\", text);\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/TestSpecial.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class TestSpecial extends TestCase {\n    @SuppressWarnings(\"deprecation\")\n    public void test_0 () throws Exception {\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"name\", \"\\n\\r\\t\");\n        System.out.println(JSON.toJSONString(map, SerializerFeature.WriteTabAsSpecial));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/TestSpecial2.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestSpecial2 extends TestCase {\n\n    public void test_0() throws Exception {\n        StringBuilder buf = new StringBuilder();\n        buf.append('\\r');\n        buf.append('\\r');\n        for (int i = 0; i < 1000; ++i) {\n            buf.append((char) 160);\n        }\n\n        VO vo = new VO();\n        vo.setValue(buf.toString());\n        \n        System.out.println(JSON.toJSONString(vo));\n    }\n\n    public static class VO {\n\n        private String value;\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/TestSpecial3.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestSpecial3 extends TestCase {\n\n    public void test_0() throws Exception {\n        StringBuilder buf = new StringBuilder();\n        buf.append('\\r');\n        buf.append('\\r');\n        for (int i = 0; i < 1000; ++i) {\n            buf.append('\\u000B');\n        }\n\n        VO vo = new VO();\n        vo.setValue(buf.toString());\n        \n        System.out.println(JSON.toJSONString(vo));\n    }\n\n    public static class VO {\n\n        private String value;\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/TestSpecial4.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestSpecial4 extends TestCase {\n\n    public void test_0() throws Exception {\n        StringBuilder buf = new StringBuilder();\n        buf.append('\\r');\n        buf.append('\\r');\n        for (int i = 0; i < 1000; ++i) {\n            buf.append('\\u2028');\n        }\n\n        VO vo = new VO();\n        vo.setValue(buf.toString());\n        \n        String text = JSON.toJSONString(vo);\n        VO vo2 = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(vo.value, vo2.value);\n    }\n\n    public static class VO {\n\n        private String value;\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/TestSpecial5.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class TestSpecial5 extends TestCase {\n\n    public void test_1() throws Exception {\n        StringBuilder buf = new StringBuilder();\n        buf.append(' ');\n        for (int i = 0; i < 1000; ++i) {\n            buf.append((char) 160);\n        }\n\n        VO vo = new VO();\n        vo.setValue(buf.toString());\n\n        String text = JSON.toJSONString(vo);\n        VO vo2 = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(vo.value, vo2.value);\n    }\n\n    public static class VO {\n\n        private String value;\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/TestSpecial6.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\npublic class TestSpecial6 extends TestCase {\n\n    public void test_1() throws Exception {\n\n        VO vo = new VO();\n        vo.setValue(\"马䶮\");\n\n        String text = JSON.toJSONString(vo);\n        VO vo2 = JSON.parseObject(text, VO.class);\n        Assert.assertEquals(vo.value, vo2.value);\n\n        assertEquals(\"{\\\"value\\\":\\\"马䶮\\\"}\", text);\n    }\n\n    public static class VO {\n\n        private String value;\n\n        public String getValue() {\n            return value;\n        }\n\n        public void setValue(String value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/TestSpecial_entity.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestSpecial_entity extends TestCase {\n\n    public void test_0() throws Exception {\n        Assert.assertEquals(\"{\\\"name\\\":\\\"\\\\u0000A\\\"}\", JSON.toJSONString(new VO(\"\\0A\")));\n    }\n\n    public void test_1() throws Exception {\n        Assert.assertEquals(\"{\\\"name\\\":\\\"\\\\u0001\\\"}\", JSON.toJSONString(new VO(\"\\1\")));\n    }\n\n    public void test_2() throws Exception {\n        Assert.assertEquals(\"{\\\"name\\\":\\\"\\\\u0002\\\"}\", JSON.toJSONString(new VO(\"\\2\")));\n    }\n\n    public void test_3() throws Exception {\n        Assert.assertEquals(\"{\\\"name\\\":\\\"\\\\u0003\\\"}\", JSON.toJSONString(new VO(\"\\3\")));\n    }\n\n    public void test_4() throws Exception {\n        Assert.assertEquals(\"{\\\"name\\\":\\\"\\\\u0004\\\"}\", JSON.toJSONString(new VO(\"\\4\")));\n    }\n\n    public void test_5() throws Exception {\n        Assert.assertEquals(\"{\\\"name\\\":\\\"\\\\u0005\\\"}\", JSON.toJSONString(new VO(\"\\5\")));\n    }\n\n    public void test_6() throws Exception {\n        Assert.assertEquals(\"{\\\"name\\\":\\\"\\\\u0006\\\"}\", JSON.toJSONString(new VO(\"\\6\")));\n    }\n\n    public void test_7() throws Exception {\n        Assert.assertEquals(\"{\\\"name\\\":\\\"\\\\u0007\\\"}\", JSON.toJSONString(new VO(\"\\7\")));\n    }\n\n    public void test_8() throws Exception {\n        Assert.assertEquals(\"{\\\"name\\\":\\\"\\\\b\\\"}\", JSON.toJSONString(new VO(\"\\b\")));\n    }\n\n    public void test_9() throws Exception {\n        Assert.assertEquals(\"{\\\"name\\\":\\\"\\\\t\\\"}\", JSON.toJSONString(new VO(\"\\t\")));\n    }\n    \n    public void test_10() throws Exception {\n        Assert.assertEquals(\"{\\\"name\\\":\\\"\\\\n\\\"}\", JSON.toJSONString(new VO(\"\\n\")));\n    }\n\n    public static class VO {\n\n        private String name;\n\n        public VO(){\n\n        }\n\n        public VO(String name){\n            this.name = name;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/TestSpecial_map.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.util.Collections;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestSpecial_map extends TestCase {\n\n    public void test_0() throws Exception {\n        Assert.assertEquals(\"{\\\"name\\\":\\\"\\\\u0000\\\"}\", JSON.toJSONString(Collections.singletonMap(\"name\", \"\\0\")));\n    }\n\n    public void test_1() throws Exception {\n        Assert.assertEquals(\"{\\\"name\\\":\\\"\\\\u0001\\\"}\", JSON.toJSONString(Collections.singletonMap(\"name\", \"\\1\")));\n    }\n\n    public void test_2() throws Exception {\n        Assert.assertEquals(\"{\\\"name\\\":\\\"\\\\u0002\\\"}\", JSON.toJSONString(Collections.singletonMap(\"name\", \"\\2\")));\n    }\n\n    public void test_3() throws Exception {\n        Assert.assertEquals(\"{\\\"name\\\":\\\"\\\\u0003\\\"}\", JSON.toJSONString(Collections.singletonMap(\"name\", \"\\3\")));\n    }\n\n    public void test_4() throws Exception {\n        Assert.assertEquals(\"{\\\"name\\\":\\\"\\\\u0004\\\"}\", JSON.toJSONString(Collections.singletonMap(\"name\", \"\\4\")));\n    }\n    \n    public void test_5() throws Exception {\n        Assert.assertEquals(\"{\\\"name\\\":\\\"\\\\u0005\\\"}\", JSON.toJSONString(Collections.singletonMap(\"name\", \"\\5\")));\n    }\n    \n    public void test_6() throws Exception {\n        Assert.assertEquals(\"{\\\"name\\\":\\\"\\\\u0006\\\"}\", JSON.toJSONString(Collections.singletonMap(\"name\", \"\\6\")));\n    }\n    \n    public void test_7() throws Exception {\n        Assert.assertEquals(\"{\\\"name\\\":\\\"\\\\u0007\\\"}\", JSON.toJSONString(Collections.singletonMap(\"name\", \"\\7\")));\n    }\n    \n    public void test_8() throws Exception {\n        Assert.assertEquals(\"{\\\"name\\\":\\\"\\\\b\\\"}\", JSON.toJSONString(Collections.singletonMap(\"name\", \"\\b\")));\n    }\n    \n    public void test_9() throws Exception {\n        Assert.assertEquals(\"{\\\"name\\\":\\\"\\\\t\\\"}\", JSON.toJSONString(Collections.singletonMap(\"name\", \"\\t\")));\n    }\n    \n    public void test_10() throws Exception {\n        Assert.assertEquals(\"{\\\"name\\\":\\\"\\\\n\\\"}\", JSON.toJSONString(Collections.singletonMap(\"name\", \"\\n\")));\n    }\n    \n    \n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/TimeZoneTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TimeZoneTest extends TestCase {\n\n    public void test_timezone() throws Exception {\n        TimeZone tz1 = TimeZone.getDefault();\n        String text = JSON.toJSONString(tz1);\n\n        Assert.assertEquals(JSON.toJSONString(tz1.getID()), text);\n        \n        TimeZone tz2 = JSON.parseObject(text, TimeZone.class);\n        Assert.assertEquals(tz1.getID(), tz2.getID());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/TransientTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\r\n\r\nimport java.lang.reflect.Field;\r\nimport java.util.ArrayList;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.parser.ParserConfig;\r\n\r\npublic class TransientTest extends TestCase {\r\n\r\n    public void test_transient() throws Exception {\r\n        Category parent = new Category();\r\n        parent.setName(\"Parent\");\r\n\r\n        Category child = new Category();\r\n        child.setName(\"child\");\r\n\r\n        parent.addChild(child);\r\n\r\n        String text = JSON.toJSONString(parent);\r\n        System.out.println(text);\r\n        Map</**fieldName*/String , Field> fieldCacheMap =new HashMap<String, Field>();\r\n        ParserConfig.parserAllFieldToCache(Category.class, fieldCacheMap);  \r\n        Assert.assertNotNull(ParserConfig.getFieldFromCache(\"name\", fieldCacheMap));\r\n        Assert.assertNull(ParserConfig.getFieldFromCache(\"abc\",fieldCacheMap));\r\n    }\r\n\r\n    public static class Category {\r\n\r\n        private String             name;\r\n        private transient Category parent;\r\n\r\n        private List<Category>     children = new ArrayList<Category>();\r\n\r\n        public void addChild(Category child) {\r\n            children.add(child);\r\n            child.setParent(this);\r\n        }\r\n\r\n        public String getName() {\r\n            return name;\r\n        }\r\n\r\n        public void setName(String name) {\r\n            this.name = name;\r\n        }\r\n\r\n        public Category getParent() {\r\n            return parent;\r\n        }\r\n\r\n        public void setParent(Category parent) {\r\n            this.parent = parent;\r\n        }\r\n\r\n        public List<Category> getChildren() {\r\n            return children;\r\n        }\r\n\r\n        public void setChildren(List<Category> children) {\r\n            this.children = children;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/TreeSetTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.util.Collection;\nimport java.util.TreeSet;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\n\npublic class TreeSetTest extends TestCase {\n    \n    public void test_null() throws Exception {\n        VO vo = new VO();\n        vo.setValue(new TreeSet());\n        \n        Assert.assertEquals(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.serializer.TreeSetTest$VO\\\",\\\"value\\\":TreeSet[]}\", JSON.toJSONString(vo, SerializerFeature.WriteClassName));\n    }\n\n    public static class VO {\n\n        private Collection value;\n\n        public Collection getValue() {\n            return value;\n        }\n\n        public void setValue(Collection value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/URITest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.net.URI;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class URITest extends TestCase {\n\n    public void test_file() throws Exception {\n        URI uri = URI.create(\"http://www.alibaba.com/\");\n\n        String text = JSON.toJSONString(uri);\n\n        Assert.assertEquals(JSON.toJSONString(uri.toString()), text);\n\n        URI uri2 = JSON.parseObject(text, URI.class);\n        Assert.assertEquals(uri.toString(), uri2.toString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/URLTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.net.URI;\nimport java.net.URL;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class URLTest extends TestCase {\n\n    public void test_file() throws Exception {\n        URL url = URI.create(\"http://www.alibaba.com/\").toURL();\n\n        String text = JSON.toJSONString(url);\n\n        Assert.assertEquals(JSON.toJSONString(url.toString()), text);\n\n        URL url2 = JSON.parseObject(text, URL.class);\n        Assert.assertEquals(url.toString(), url2.toString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/UUIDTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.util.UUID;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class UUIDTest extends TestCase {\n\n    public void test_timezone() throws Exception {\n        UUID id = UUID.randomUUID();\n        \n        String text = JSON.toJSONString(id);\n        \n        System.out.println(text);\n\n        Assert.assertEquals(JSON.toJSONString(id.toString()), text);\n     \n        UUID id2 = JSON.parseObject(text,  UUID.class);\n        Assert.assertEquals(id, id2);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/UnicodeTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.util.Collections;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class UnicodeTest extends TestCase {\n    public void test_unicode() throws Exception {\n        String text = JSON.toJSONString(Collections.singletonMap(\"v\", \"\\u0018\"));\n        System.out.println(text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/WriteClassNameTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class WriteClassNameTest extends TestCase {\n\n    public void test_writeClassName() throws Exception {\n        Entity object = new Entity();\n        object.setId(123);\n        object.setName(\"jobs\");\n        object.setAverage(3.21F);\n        \n        SerializeConfig config = new SerializeConfig();\n        config.setAsmEnable(false);\n        String text = JSON.toJSONString(object, config, SerializerFeature.WriteClassName);\n        System.out.println(text);\n    }\n\n    public static class Entity {\n\n        private int    id;\n        private String name;\n        private float  average;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public float getAverage() {\n            return average;\n        }\n\n        public void setAverage(float average) {\n            this.average = average;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/WriteNullListAsEmptyTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class WriteNullListAsEmptyTest extends TestCase {\n\n    public void test_nullList() {\n        SerializerFeature[] features = { SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty };\n        Assert.assertEquals(\"{\\\"names\\\":[]}\", JSON.toJSONString(new VO1(), features));\n        Assert.assertEquals(\"{\\\"names\\\":[]}\", JSON.toJSONString(new VO2(), features));\n        Assert.assertEquals(\"{\\\"names\\\":[]}\", JSON.toJSONString(new VO3(), features));\n        Assert.assertEquals(\"{\\\"names\\\":[]}\", JSON.toJSONString(new VO4(), features));\n    }\n\n    public static class VO1 {\n\n        private List<Object> names = null;\n\n        public List<Object> getNames() {\n            return names;\n        }\n\n        public void setNames(List<Object> names) {\n            this.names = names;\n        }\n    }\n\n    public static class VO2 {\n\n        private List<String> names = null;\n\n        public List<String> getNames() {\n            return names;\n        }\n\n        public void setNames(List<String> names) {\n            this.names = names;\n        }\n    }\n    \n    public static class VO3 {\n\n        private List<Integer> names = null;\n\n        public List<Integer> getNames() {\n            return names;\n        }\n\n        public void setNames(List<Integer> names) {\n            this.names = names;\n        }\n    }\n    \n    public static class VO4 {\n        \n        private List<Long> names = null;\n        \n        public List<Long> getNames() {\n            return names;\n        }\n        \n        public void setNames(List<Long> names) {\n            this.names = names;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/WriteSlashAsSpecialTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\npublic class WriteSlashAsSpecialTest extends TestCase {\n\tpublic void test_0 () throws Exception {\n\t\tMap<String, Object> map = new HashMap<String, Object>();\n\t\tmap.put(\"value\", \"/\");\n\t\tString result = JSON.toJSONString(map);\n\t\tAssert.assertEquals(\"{\\\"value\\\":\\\"/\\\"}\", result);\n\t}\n\t\n\tpublic void test_1 () throws Exception {\n\t\tMap<String, Object> map = new HashMap<String, Object>();\n\t\tmap.put(\"value\", \"/\");\n\t\tString result = JSON.toJSONString(map, SerializerFeature.WriteSlashAsSpecial);\n\t\tAssert.assertEquals(\"{\\\"value\\\":\\\"\\\\/\\\"}\", result);\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/date/DateTest.java",
    "content": "package com.alibaba.json.bvt.serializer.date;\r\n\r\nimport java.util.Date;\r\nimport java.util.Locale;\r\nimport java.util.TimeZone;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class DateTest extends TestCase {\r\n    protected void setUp() throws Exception {\r\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\r\n        JSON.defaultLocale = Locale.CHINA;\r\n    }\r\n    \r\n    public void test_0() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n\r\n        Assert.assertEquals(false, serializer.isEnabled(SerializerFeature.UseISO8601DateFormat));\r\n        serializer.write(new Date(1294552193254L));\r\n\r\n        Assert.assertEquals(\"1294552193254\", out.toString());\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.config(SerializerFeature.UseISO8601DateFormat, true);\r\n        Assert.assertEquals(true, serializer.isEnabled(SerializerFeature.UseISO8601DateFormat));\r\n        serializer.write(new Date(1294552193254L));\r\n\r\n        Assert.assertEquals(\"\\\"2011-01-09T13:49:53.254+08:00\\\"\", out.toString());\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.config(SerializerFeature.UseISO8601DateFormat, true);\r\n        Assert.assertEquals(true, serializer.isEnabled(SerializerFeature.UseISO8601DateFormat));\r\n        serializer.write(new Date(1294552193000L));\r\n\r\n        Assert.assertEquals(\"\\\"2011-01-09T13:49:53+08:00\\\"\", out.toString());\r\n    }\r\n\r\n    public void test_3() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.config(SerializerFeature.UseISO8601DateFormat, true);\r\n        Assert.assertEquals(true, serializer.isEnabled(SerializerFeature.UseISO8601DateFormat));\r\n        serializer.write(new Date(1294502400000L));\r\n\r\n        Assert.assertEquals(\"\\\"2011-01-09+08:00\\\"\", out.toString());\r\n    }\r\n\r\n    public void test_4() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.config(SerializerFeature.UseISO8601DateFormat, true);\r\n        serializer.config(SerializerFeature.UseSingleQuotes, true);\r\n        Assert.assertEquals(true, serializer.isEnabled(SerializerFeature.UseISO8601DateFormat));\r\n        serializer.write(new Date(1294502400000L));\r\n\r\n        Assert.assertEquals(\"'2011-01-09+08:00'\", out.toString());\r\n    }\r\n\r\n    public void test_5() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.config(SerializerFeature.UseISO8601DateFormat, true);\r\n        Assert.assertEquals(true, serializer.isEnabled(SerializerFeature.UseISO8601DateFormat));\r\n        serializer.write(new Date(1294502401000L));\r\n\r\n        Assert.assertEquals(\"\\\"2011-01-09T00:00:01+08:00\\\"\", out.toString());\r\n    }\r\n\r\n    public void test_6() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.config(SerializerFeature.UseISO8601DateFormat, true);\r\n        Assert.assertEquals(true, serializer.isEnabled(SerializerFeature.UseISO8601DateFormat));\r\n        serializer.write(new Date(1294502460000L));\r\n\r\n        Assert.assertEquals(\"\\\"2011-01-09T00:01:00+08:00\\\"\", out.toString());\r\n    }\r\n\r\n    public void test_7() throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.config(SerializerFeature.UseISO8601DateFormat, true);\r\n        Assert.assertEquals(true, serializer.isEnabled(SerializerFeature.UseISO8601DateFormat));\r\n        serializer.write(new Date(1294506000000L));\r\n\r\n        Assert.assertEquals(\"\\\"2011-01-09T01:00:00+08:00\\\"\", out.toString());\r\n    }\r\n\r\n    public void test_8() throws Exception {\r\n        String text = JSON.toJSONString(new Date(1294506000000L), SerializerFeature.UseISO8601DateFormat);\r\n        Assert.assertEquals(\"\\\"2011-01-09T01:00:00+08:00\\\"\", text);\r\n    }\r\n\r\n    public void test_9() throws Exception {\r\n        String text = JSON.toJSONString(new Entity(new Date(1294506000000L)), SerializerFeature.UseISO8601DateFormat);\r\n        Assert.assertEquals(\"{\\\"date\\\":\\\"2011-01-09T01:00:00+08:00\\\"}\", text);\r\n\r\n        Entity entity = JSON.parseObject(text, Entity.class);\r\n        Assert.assertEquals(new Date(1294506000000L), entity.getDate());\r\n    }\r\n\r\n    public static class Entity {\r\n\r\n        private Date date;\r\n\r\n        public Entity(){\r\n\r\n        }\r\n\r\n        public Entity(Date date){\r\n            super();\r\n            this.date = date;\r\n        }\r\n\r\n        public Date getDate() {\r\n            return date;\r\n        }\r\n\r\n        public void setDate(Date date) {\r\n            this.date = date;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/date/DateTest2.java",
    "content": "package com.alibaba.json.bvt.serializer.date;\n\nimport java.util.Date;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\n\npublic class DateTest2 extends TestCase {\n    \n    public void test_null() throws Exception {\n        long millis = System.currentTimeMillis();\n        VO vo = new VO();\n        vo.setValue(new Date(millis));\n        \n        Assert.assertEquals(\"new Date(\" + millis + \")\", JSON.toJSONString(new Date(millis), SerializerFeature.WriteClassName));\n    }\n\n    public static class VO {\n\n        private Object value;\n\n        public Object getValue() {\n            return value;\n        }\n\n        public void setValue(Object value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/date/DateTest3.java",
    "content": "package com.alibaba.json.bvt.serializer.date;\n\nimport java.util.Date;\n\nimport org.junit.Assert;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class DateTest3 extends TestCase {\n\n    public void test_date() throws Exception {\n        String text = \"{\\\"gmtCreate\\\":\\\"2014-08-21T09:51:36.25+07:00\\\"}\";\n        \n        Date date = JSON.parseObject(text, VO.class).getGmtCreate();\n        Assert.assertNotNull(date);\n    }\n\n    public static class VO {\n\n        private Date gmtCreate;\n\n        public Date getGmtCreate() {\n            return gmtCreate;\n        }\n\n        public void setGmtCreate(Date gmtCreate) {\n            this.gmtCreate = gmtCreate;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/date/DateTest4.java",
    "content": "package com.alibaba.json.bvt.serializer.date;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.Date;\n\npublic class DateTest4 extends TestCase {\n\n    public void test_date() throws Exception {\n        assertNotNull(\n                JSON.parseObject(\n                        \"{\\\"gmtCreate\\\":\\\"1970-01-01 00:00:00\\\"}\"\n                        , VO.class)\n                        .gmtCreate\n        );\n\n        assertNotNull(\n                JSON.parseObject(\n                        \"{\\\"gmtCreate\\\":\\\"1970-01-01 00:00:00.000\\\"}\"\n                        , VO.class)\n                        .gmtCreate\n        );\n\n        assertNotNull(\n                JSON.parseObject(\n                        \"{\\\"gmtCreate\\\":\\\"1960-01-01 00:00:00.000\\\"}\"\n                        , VO.class)\n                        .gmtCreate\n        );\n    }\n\n    public static class VO {\n        public Date gmtCreate;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/date/DateTest4_indian.java",
    "content": "package com.alibaba.json.bvt.serializer.date;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\npublic class DateTest4_indian extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n\n    public void test_date() throws Exception {\n        Date date1 = JSON.parseObject(\"{\\\"gmtCreate\\\":\\\"2018-09-11T21:29:34+0530\\\"}\", VO.class).getGmtCreate();\n        assertNotNull(date1);\n        Date date2 = JSON.parseObject(\"{\\\"gmtCreate\\\":\\\"2018-09-11T21:29:34+0500\\\"}\", VO.class).getGmtCreate();\n        Date date3 = JSON.parseObject(\"{\\\"gmtCreate\\\":\\\"2018-09-11T21:29:34+0545\\\"}\", VO.class).getGmtCreate();\n        Date date4 = JSON.parseObject(\"{\\\"gmtCreate\\\":\\\"2018-09-11T21:29:34+1245\\\"}\", VO.class).getGmtCreate();\n        Date date5 = JSON.parseObject(\"{\\\"gmtCreate\\\":\\\"2018-09-11T21:29:34+1345\\\"}\", VO.class).getGmtCreate();\n\n        long delta_2_1 = date2.getTime() - date1.getTime();\n        assertEquals(1800000, delta_2_1);\n\n        long delta_3_1 = date3.getTime() - date1.getTime();\n        assertEquals(-900000, delta_3_1);\n\n        long delta_4_3 = date4.getTime() - date3.getTime();\n        assertEquals(-25200000, delta_4_3);\n\n        long delta_5_4 = date5.getTime() - date4.getTime();\n        assertEquals(-3600000, delta_5_4);\n\n    }\n\n    public static class VO {\n\n        private Date gmtCreate;\n\n        public Date getGmtCreate() {\n            return gmtCreate;\n        }\n\n        public void setGmtCreate(Date gmtCreate) {\n            this.gmtCreate = gmtCreate;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/date/DateTest5_iso8601.java",
    "content": "package com.alibaba.json.bvt.serializer.date;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\npublic class DateTest5_iso8601 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n\n    public void test_date() throws Exception {\n        Date date1 = JSON.parseObject(\"{\\\"gmtCreate\\\":\\\"2018-09-12\\\"}\", VO.class).getGmtCreate();\n        assertNotNull(date1);\n        Date date2 = JSON.parseObject(\"{\\\"gmtCreate\\\":\\\"2018-09-12T15:10:19+00:00\\\"}\", VO.class).getGmtCreate();\n        Date date3 = JSON.parseObject(\"{\\\"gmtCreate\\\":\\\"2018-09-12T15:10:19Z\\\"}\", VO.class).getGmtCreate();\n        Date date4 = JSON.parseObject(\"{\\\"gmtCreate\\\":\\\"20180912T151019Z\\\"}\", VO.class).getGmtCreate();\n        Date date5 = JSON.parseObject(\"{\\\"gmtCreate\\\":\\\"2018-09-12T15:10:19Z\\\"}\", VO.class).getGmtCreate();\n        Date date6 = JSON.parseObject(\"{\\\"gmtCreate\\\":\\\"20180912\\\"}\", VO.class).getGmtCreate();\n\n        long delta_2_1 = date2.getTime() - date1.getTime();\n        assertEquals(83419000, delta_2_1);\n\n        long delta_3_1 = date3.getTime() - date1.getTime();\n        assertEquals(83419000, delta_3_1);\n\n        long delta_4_3 = date4.getTime() - date3.getTime();\n        assertEquals(0, delta_4_3);\n\n        long delta_5_4 = date5.getTime() - date4.getTime();\n        assertEquals(0, delta_5_4);\n\n        long delta_6_1 = date6.getTime() - date1.getTime();\n        assertEquals(0, delta_6_1);\n\n\n    }\n\n    public static class VO {\n\n        private Date gmtCreate;\n\n        public Date getGmtCreate() {\n            return gmtCreate;\n        }\n\n        public void setGmtCreate(Date gmtCreate) {\n            this.gmtCreate = gmtCreate;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/date/DateTest_ISO8601_OneLetterISO8601TimeZone.java",
    "content": "package com.alibaba.json.bvt.serializer.date;\n\nimport java.util.Calendar;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class DateTest_ISO8601_OneLetterISO8601TimeZone extends TestCase {\n\n    public void f_test_date() throws Exception {\n        String text = \"{\\\"gmtCreate\\\":\\\"2014-08-21T09:51:36.2+08\\\"}\";\n        \n        Calendar date = JSON.parseObject(text, VO.class).getGmtCreate();\n        Assert.assertNotNull(date);\n        \n        Assert.assertEquals(8, date.getTimeZone().getRawOffset()/(3600*1000));\n    }\n    \n    public void test_date_9() throws Exception {\n        String text = \"{\\\"gmtCreate\\\":\\\"2014-08-21T09:51:36.235+09\\\"}\";\n        \n        Calendar date = JSON.parseObject(text, VO.class).getGmtCreate();\n        Assert.assertNotNull(date);\n        \n        Assert.assertEquals(9, date.getTimeZone().getRawOffset()/(3600*1000));\n    }\n\n    public static class VO {\n\n        private Calendar gmtCreate;\n\n        public Calendar getGmtCreate() {\n            return gmtCreate;\n        }\n\n        public void setGmtCreate(Calendar gmtCreate) {\n            this.gmtCreate = gmtCreate;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/date/DateTest_ISO8601_ThreeLetterISO8601TimeZone.java",
    "content": "package com.alibaba.json.bvt.serializer.date;\n\nimport java.util.Calendar;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class DateTest_ISO8601_ThreeLetterISO8601TimeZone extends TestCase {\n\n    public void f_test_date() throws Exception {\n        String text = \"{\\\"gmtCreate\\\":\\\"2014-08-21T09:51:36.2+08:00\\\"}\";\n        \n        Calendar date = JSON.parseObject(text, VO.class).getGmtCreate();\n        Assert.assertNotNull(date);\n        \n        Assert.assertEquals(8, date.getTimeZone().getRawOffset()/(3600*1000));\n    }\n    \n    public void test_date_9() throws Exception {\n        String text = \"{\\\"gmtCreate\\\":\\\"2014-08-21T09:51:36.235+09:00\\\"}\";\n        \n        Calendar date = JSON.parseObject(text, VO.class).getGmtCreate();\n        Assert.assertNotNull(date);\n        \n        Assert.assertEquals(9, date.getTimeZone().getRawOffset()/(3600*1000));\n    }\n\n    public static class VO {\n\n        private Calendar gmtCreate;\n\n        public Calendar getGmtCreate() {\n            return gmtCreate;\n        }\n\n        public void setGmtCreate(Calendar gmtCreate) {\n            this.gmtCreate = gmtCreate;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/date/DateTest_ISO8601_TimeZone.java",
    "content": "package com.alibaba.json.bvt.serializer.date;\n\nimport java.util.Calendar;\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.Locale;\nimport java.util.Map;\nimport java.util.TimeZone;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class DateTest_ISO8601_TimeZone extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    \n    public void test_date1() throws Exception {\n        Map<String,Date> map = new HashMap<String,Date>();\n        map.put(\"date\", new Date(1425886057586l));\n\n        String json = JSON.toJSONString(map, SerializerFeature.UseISO8601DateFormat);\n        \n        Assert.assertEquals(\"{\\\"date\\\":\\\"2015-03-09T15:27:37.586+08:00\\\"}\", json);\n\n        Map<String,Date> newMap = JSON.parseObject(json, new TypeReference<Map<String,Date>>(){});\n\n        Assert.assertEquals(1425886057586l, newMap.get(\"date\").getTime());\n    }\n\n    public void test_date2() throws Exception {\n        Calendar c = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n        c.setTimeZone(TimeZone.getTimeZone(\"GMT+10\"));\n        VO v = new VO();\n        v.setGmtCreate(c);\n        String json = JSON.toJSONString(v, SerializerFeature.UseISO8601DateFormat);\n        System.out.println(json);\n\n        Calendar cal = JSON.parseObject(json, VO.class).getGmtCreate();\n\n        Assert.assertEquals(10, cal.getTimeZone().getRawOffset() / (3600 * 1000));\n    }\n\n    public void test_date3() throws Exception {\n        Calendar c = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);\n        VO v = new VO();\n        v.setGmtCreate(c);\n        String json = JSON.toJSONString(v, SerializerFeature.UseISO8601DateFormat);\n        System.out.println(json);\n\n        Calendar cal = JSON.parseObject(json, VO.class).getGmtCreate();\n\n        Assert.assertEquals(8, cal.getTimeZone().getRawOffset() / (3600 * 1000));\n    }\n\n    public static class VO {\n\n        private Calendar gmtCreate;\n\n        public Calendar getGmtCreate() {\n            return gmtCreate;\n        }\n\n        public void setGmtCreate(Calendar gmtCreate) {\n            this.gmtCreate = gmtCreate;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/date/DateTest_ISO8601_TwoLetterISO8601TimeZone.java",
    "content": "package com.alibaba.json.bvt.serializer.date;\n\nimport java.util.Calendar;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class DateTest_ISO8601_TwoLetterISO8601TimeZone extends TestCase {\n\n    public void f_test_date() throws Exception {\n        String text = \"{\\\"gmtCreate\\\":\\\"2014-08-21T09:51:36.2+0800\\\"}\";\n        \n        Calendar date = JSON.parseObject(text, VO.class).getGmtCreate();\n        Assert.assertNotNull(date);\n        \n        Assert.assertEquals(8, date.getTimeZone().getRawOffset()/(3600*1000));\n    }\n    \n    public void test_date_9() throws Exception {\n        String text = \"{\\\"gmtCreate\\\":\\\"2014-08-21T09:51:36.235+0900\\\"}\";\n        \n        Calendar date = JSON.parseObject(text, VO.class).getGmtCreate();\n        Assert.assertNotNull(date);\n        \n        Assert.assertEquals(9, date.getTimeZone().getRawOffset()/(3600*1000));\n    }\n\n    public static class VO {\n\n        private Calendar gmtCreate;\n\n        public Calendar getGmtCreate() {\n            return gmtCreate;\n        }\n\n        public void setGmtCreate(Calendar gmtCreate) {\n            this.gmtCreate = gmtCreate;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/date/DateTest_ISO8601_UTCTime.java",
    "content": "package com.alibaba.json.bvt.serializer.date;\n\nimport java.util.Calendar;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class DateTest_ISO8601_UTCTime extends TestCase {\n\n    public void test_date() throws Exception {\n        String text = \"{\\\"gmtCreate\\\":\\\"2014-10-09T03:07:07.000Z\\\"}\";\n\n        Calendar date = JSON.parseObject(text, VO.class).getGmtCreate();\n        Assert.assertNotNull(date);\n\n        Assert.assertEquals(0, date.getTimeZone().getRawOffset() / (3600 * 1000));\n    }\n\n    public static class VO {\n\n        private Calendar gmtCreate;\n\n        public Calendar getGmtCreate() {\n            return gmtCreate;\n        }\n\n        public void setGmtCreate(Calendar gmtCreate) {\n            this.gmtCreate = gmtCreate;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/enum_/EnumCustomCodecTest.java",
    "content": "package com.alibaba.json.bvt.serializer.enum_;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\nimport junit.framework.TestCase;\n\nimport java.lang.reflect.Type;\n\npublic class EnumCustomCodecTest extends TestCase {\n\n    public void test_for_enum() throws Exception {\n        Type type = Type.A;\n        String str =JSON.toJSONString(type);\n\n        assertEquals(\"{\\\"id\\\":1001,\\\"name\\\":\\\"aaa\\\"}\", str);\n\n        Type type2 = JSON.parseObject(str, Type.class);\n        Type type3 = JSON.parseObject(str, Type.class);\n\n        assertSame(type, type2);\n        assertSame(type, type3);\n\n    }\n\n    @JSONType(serializeEnumAsJavaBean = true, deserializer = TypeDeser.class)\n    public static enum Type {\n        A(1001, \"aaa\"), B(1002, \"bbb\")\n        ;\n\n        public int id;\n        public String name;\n\n        Type(int id, String name) {\n            this.id = id;\n            this.name = name;\n        }\n\n        public static Type valueOf(long id) {\n            if (id == 1001) {\n                return A;\n            } else if (id == 1002) {\n                return B;\n            }\n            return null;\n        }\n    }\n\n    public static class TypeDeser implements ObjectDeserializer {\n\n        public <T> T deserialze(DefaultJSONParser parser, java.lang.reflect.Type type, Object fieldName) {\n            JSONObject object = parser.parseObject();\n            long id = object.getLongValue(\"id\");\n            return (T) Type.valueOf(id);\n        }\n\n        public int getFastMatchToken() {\n            return 0;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/enum_/EnumFieldsTest.java",
    "content": "package com.alibaba.json.bvt.serializer.enum_;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class EnumFieldsTest extends TestCase {\n    public void test_enum() throws Exception {\n        Model model = new Model();\n        model.t1 = Type.A;\n        model.t2 = null;\n        \n        String text = JSON.toJSONString(model, SerializerFeature.WriteMapNullValue);\n        Assert.assertEquals(\"{\\\"t1\\\":\\\"A\\\",\\\"t2\\\":null}\", text);\n    }\n    \n    public static class Model {\n        public Type t1;\n        public Type t2;\n    }\n\n    private static enum Type {\n                             A, B, C\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/enum_/EnumFieldsTest2.java",
    "content": "package com.alibaba.json.bvt.serializer.enum_;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class EnumFieldsTest2 extends TestCase {\n\n    public void test_enum() throws Exception {\n        Model model = new Model();\n        model.t1 = Type.A;\n        model.t2 = null;\n\n        String text = JSON.toJSONString(model, SerializerFeature.WriteMapNullValue);\n        Assert.assertEquals(\"{\\\"t1\\\":\\\"A\\\",\\\"t2\\\":null}\", text);\n    }\n\n    public static class Model {\n\n        private Type t1;\n        private Type t2;\n\n        public Type getT1() {\n            return t1;\n        }\n\n        public void setT1(Type t1) {\n            this.t1 = t1;\n        }\n\n        public Type getT2() {\n            return t2;\n        }\n\n        public void setT2(Type t2) {\n            this.t2 = t2;\n        }\n\n    }\n\n    private static enum Type {\n                              A, B, C\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/enum_/EnumFieldsTest3.java",
    "content": "package com.alibaba.json.bvt.serializer.enum_;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class EnumFieldsTest3 extends TestCase {\n    public void test_enum() throws Exception {\n        Model model = new Model();\n        model.types.add(Type.A);\n        model.types.add(null);\n        \n        String text = JSON.toJSONString(model, SerializerFeature.WriteMapNullValue);\n        Assert.assertEquals(\"{\\\"types\\\":[\\\"A\\\",null]}\", text);\n    }\n    \n    public static class Model {\n        public List<Type> types = new ArrayList<Type>();\n    }\n\n    private static enum Type {\n                             A, B, C\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/enum_/EnumFieldsTest4.java",
    "content": "package com.alibaba.json.bvt.serializer.enum_;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class EnumFieldsTest4 extends TestCase {\n    public void test_enum() throws Exception {\n        Model model = new Model();\n        model.types = new Type[]{Type.A, null};\n        \n        String text = JSON.toJSONString(model, SerializerFeature.WriteMapNullValue);\n        Assert.assertEquals(\"{\\\"types\\\":[\\\"A\\\",null]}\", text);\n    }\n    \n    public static class Model {\n        public Type[] types;\n    }\n\n    private static enum Type {\n                             A, B, C\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/enum_/EnumFieldsTest5.java",
    "content": "package com.alibaba.json.bvt.serializer.enum_;\n\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Collections;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class EnumFieldsTest5 extends TestCase {\n    public void test_enum() throws Exception {\n        Model model = new Model();\n        model.types.add(Type.A);\n        model.types.add(null);\n        \n        String text = JSON.toJSONString(model, SerializerFeature.WriteMapNullValue);\n        Assert.assertEquals(\"{\\\"types\\\":[\\\"A\\\",null]}\", text);\n    }\n    \n    public static class Model {\n        public Collection<Type> types = Collections.synchronizedCollection(new ArrayList<Type>());\n    }\n\n    private static enum Type {\n                             A, B, C\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/enum_/EnumFieldsTest6.java",
    "content": "package com.alibaba.json.bvt.serializer.enum_;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class EnumFieldsTest6 extends TestCase {\n    public void test_enum() throws Exception {\n        Model model = new Model();\n        model.types = new Object[]{Type.A, null};\n        \n        String text = JSON.toJSONString(model, SerializerFeature.WriteMapNullValue);\n        Assert.assertEquals(\"{\\\"types\\\":[\\\"A\\\",null]}\", text);\n    }\n    \n    public static class Model {\n        public Object[] types;\n    }\n\n    private static enum Type {\n                             A, B, C\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/enum_/EnumFieldsTest7.java",
    "content": "package com.alibaba.json.bvt.serializer.enum_;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.fastjson.serializer.ValueFilter;\n\nimport junit.framework.TestCase;\n\npublic class EnumFieldsTest7 extends TestCase {\n\n    public void test_enum() throws Exception {\n        Model model = new Model();\n        model.t1 = Type.A;\n        model.t2 = null;\n\n        ValueFilter filter = new ValueFilter() {\n            public Object process(Object object, String name, Object value) {\n                return null;\n            }\n        };\n        String text = JSON.toJSONString(model, filter, SerializerFeature.WriteMapNullValue);\n        Assert.assertEquals(\"{\\\"t1\\\":null,\\\"t2\\\":null}\", text);\n    }\n\n    public static class Model {\n\n        private Type t1;\n        private Type t2;\n\n        public Type getT1() {\n            return t1;\n        }\n\n        public void setT1(Type t1) {\n            this.t1 = t1;\n        }\n\n        public Type getT2() {\n            return t2;\n        }\n\n        public void setT2(Type t2) {\n            this.t2 = t2;\n        }\n\n    }\n\n    private static enum Type {\n                              A, B, C\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/enum_/EnumFieldsTest8.java",
    "content": "package com.alibaba.json.bvt.serializer.enum_;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializeFilter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.fastjson.serializer.ValueFilter;\n\nimport junit.framework.TestCase;\n\npublic class EnumFieldsTest8 extends TestCase {\n\n    public void test_enum() throws Exception {\n        Model model = new Model();\n        model.t1 = Type.A;\n        model.t2 = null;\n        \n        ValueFilter valueFilter = new ValueFilter() {\n\n            public Object process(Object object, String name, Object value) {\n                return value;\n            }\n            \n        };\n        \n        SerializeFilter[] filters = {valueFilter};\n        String text = JSON.toJSONString(model, SerializeConfig.getGlobalInstance(), // \n                                        filters, \n                                        null,\n                                        0, // \n                                        SerializerFeature.QuoteFieldNames, // \n                                        SerializerFeature.BrowserCompatible, // \n                                        SerializerFeature.WriteEnumUsingName);\n        Assert.assertEquals(\"{\\\"t1\\\":\\\"A\\\"}\", text);\n    }\n\n    public static class Model {\n\n        public Type t1;\n        public Type t2;\n    }\n\n    public static enum Type {\n                             A, B, C\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/enum_/EnumOrdinalTest.java",
    "content": "package com.alibaba.json.bvt.serializer.enum_;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 17/03/2017.\n */\npublic class EnumOrdinalTest extends TestCase {\n    public void test_enum_ordinal() throws Exception {\n        Model model = new Model();\n        model.type = Type.Big;\n\n        int serializerFeatures = JSON.DEFAULT_GENERATE_FEATURE & ~SerializerFeature.WriteEnumUsingName.mask;\n        String text = JSON.toJSONString(model, serializerFeatures);\n        System.out.println(text);\n    }\n\n    public static class Model {\n        public Type type;\n    }\n\n    public static enum Type {\n        Big, Medium, Small\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/enum_/EnumTest.java",
    "content": "package com.alibaba.json.bvt.serializer.enum_;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class EnumTest extends TestCase {\n\n    public static enum Type {\n        Big, Medium, Small\n    }\n\n    public void test_enum() throws Exception {\n        Assert.assertEquals(\"0\", JSON.toJSONStringZ(Type.Big, SerializeConfig.getGlobalInstance())); // 0\n        Assert.assertEquals(\"1\", JSON.toJSONStringZ(Type.Medium, SerializeConfig.getGlobalInstance())); // 1\n        Assert.assertEquals(\"2\", JSON.toJSONStringZ(Type.Small, SerializeConfig.getGlobalInstance())); // 2\n\n        Assert.assertEquals(\"\\\"Big\\\"\", JSON.toJSONString(Type.Big, SerializerFeature.WriteEnumUsingToString)); // \"Big\"\n        Assert.assertEquals(\"\\\"Medium\\\"\", JSON.toJSONString(Type.Medium, SerializerFeature.WriteEnumUsingToString)); // \"Medium\"\n        Assert.assertEquals(\"\\\"Small\\\"\", JSON.toJSONString(Type.Small, SerializerFeature.WriteEnumUsingToString)); // \"Small\"\n        Assert.assertEquals(\"'Small'\", JSON.toJSONString(Type.Small, SerializerFeature.UseSingleQuotes)); // \"Small\"\n    }\n\n    public void test_empty() throws Exception {\n        Model model = JSON.parseObject(\"{\\\"type\\\":\\\"\\\"}\", Model.class);\n        assertNull(model.type);\n    }\n\n    public static class Model {\n        public Type type;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/enum_/EnumTest2.java",
    "content": "package com.alibaba.json.bvt.serializer.enum_;\n\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class EnumTest2 extends TestCase {\n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n\n    public void test_enum() throws Exception {\n        Date date = new Date(1308841916550L);\n        Assert.assertEquals(\"1308841916550\", JSON.toJSONString(date)); // 1308841916550\n        System.out.println(JSON.toJSONString(date, SerializerFeature.UseISO8601DateFormat)); // \"2011-06-23T23:11:56.550\"\n        SerializerFeature[] features = {SerializerFeature.UseISO8601DateFormat, SerializerFeature.UseSingleQuotes };\n        System.out.println(JSON.toJSONString(date, features)); // '2011-06-23T23:11:56.550'\n    }\n\n    public void test_enum_noasm() throws Exception {\n        SerializeConfig mapping = new SerializeConfig();\n        mapping.setAsmEnable(false);\n        \n        Date date = new Date(1308841916550L);\n        Assert.assertEquals(\"1308841916550\", JSON.toJSONString(date, mapping)); // 1308841916550\n        Assert.assertEquals(\"\\\"2011-06-23T23:11:56.550+08:00\\\"\", JSON.toJSONString(date, mapping, SerializerFeature.UseISO8601DateFormat)); // \"2011-06-23T23:11:56.550\"\n        SerializerFeature[] features = {SerializerFeature.UseISO8601DateFormat, SerializerFeature.UseSingleQuotes };\n        Assert.assertEquals(\"'2011-06-23T23:11:56.550+08:00'\", JSON.toJSONString(date, mapping, features)); // '2011-06-23T23:11:56.550'\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/enum_/EnumTest3.java",
    "content": "/*\n * www.yiji.com Inc.\n * Copyright (c) 2014 All Rights Reserved\n */\n\n/*\n * 修订记录:\n * qzhanbo@yiji.com 2015-03-01 00:55 创建\n *\n */\npackage com.alibaba.json.bvt.serializer.enum_;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport org.junit.Assert;\nimport org.junit.Test;\n\nimport java.util.EnumMap;\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * @author bohr.qiu@gmail.com\n */\npublic class EnumTest3 {\n\t@Test\n\tpublic void testDefault() throws Exception {\n\t\tString json = JSON.toJSONString(Sex.M);\n\t\tAssert.assertEquals(json, \"\\\"M\\\"\");\n\t\t\n\t\tPojo pojo = new Pojo();\n\t\tpojo.setSex(Sex.M);\n\t\tjson = JSON.toJSONString(pojo);\n\t\tAssert.assertEquals(json, \"{\\\"sex\\\":\\\"M\\\"}\");\n\n        try {\n            JSON.parseObject(json, Pojo.class);\n            Assert.assertTrue(true);\n        } catch (Exception e) {\n            Assert.fail(\"枚举默认序列化name值，可以反序列化成功\");\n        }\n\n\t\tMap<String, Pojo> map = new HashMap<String, Pojo>();\n\t\tmap.put(\"a\", pojo);\n\t\tjson = JSON.toJSONString(map);\n\t\tAssert.assertEquals(json, \"{\\\"a\\\":{\\\"sex\\\":\\\"M\\\"}}\");\n\t\t\n\t\tMap<Sex, Pojo> enumMap = new EnumMap<Sex, Pojo>(Sex.class);\n\t\tenumMap.put(Sex.M, pojo);\n\t\tjson = JSON.toJSONString(enumMap);\n\t\tAssert.assertEquals(json, \"{\\\"M\\\":{\\\"sex\\\":\\\"M\\\"}}\");\n\t}\n\t\n\t@Test\n    public void testDefault1() throws Exception {\n//        JSON.DUMP_CLASS = \"/Users/bohr/Downloads/tmp\";\n        String json = JSON.toJSONString(Sex.M, SerializerFeature.WriteEnumUsingToString);\n        Assert.assertEquals(json, \"\\\"男\\\"\");\n\t}\n\n    @Test\n    public void testDefault2() throws Exception {\n        Pojo pojo = new Pojo();\n        pojo.setSex(Sex.M);\n        String json = JSON.toJSONString(pojo, SerializerFeature.WriteEnumUsingToString);\n        Assert.assertEquals(json, \"{\\\"sex\\\":\\\"男\\\"}\");\n        \n        try {\n            Pojo pojo1 = JSON.parseObject(json, Pojo.class);\n            Assert.assertNull(pojo1.getSex());\n        } catch (Exception e) {\n            Assert.assertTrue(true);\n        }\n\n        Map<String, Pojo> map = new HashMap<String, Pojo>();\n        map.put(\"a\", pojo);\n        json = JSON.toJSONString(map, SerializerFeature.WriteEnumUsingToString);\n        Assert.assertEquals(json, \"{\\\"a\\\":{\\\"sex\\\":\\\"男\\\"}}\");\n\n        Map<Sex, Pojo> enumMap = new EnumMap<Sex, Pojo>(Sex.class);\n        enumMap.put(Sex.M, pojo);\n        json = JSON.toJSONString(enumMap, SerializerFeature.WriteEnumUsingToString);\n        Assert.assertEquals(json, \"{\\\"男\\\":{\\\"sex\\\":\\\"男\\\"}}\");\n    }\n\n    @Test\n    public void testName() throws Exception {\n        Assert.assertEquals(\"\\\"男\\\"\", JSON.toJSONString(Sex.M, SerializerFeature.WriteEnumUsingToString));\n        Assert.assertEquals(\"\\\"女\\\"\", JSON.toJSONString(Sex.W, SerializerFeature.WriteEnumUsingToString));\n    }\n\n    @Test\n    public void testWriterSerializerFeature() throws Exception {\n        SerializeWriter writer=new SerializeWriter();\n        writer.config(SerializerFeature.WriteEnumUsingToString,true);\n        Assert.assertTrue(writer.isEnabled(SerializerFeature.WriteEnumUsingToString));\n        writer.config(SerializerFeature.WriteEnumUsingName,true);\n        Assert.assertTrue(writer.isEnabled(SerializerFeature.WriteEnumUsingName));\n        Assert.assertFalse(writer.isEnabled(SerializerFeature.WriteEnumUsingToString));\n        writer.config(SerializerFeature.WriteEnumUsingToString,true);\n        Assert.assertTrue(writer.isEnabled(SerializerFeature.WriteEnumUsingToString));\n        Assert.assertFalse(writer.isEnabled(SerializerFeature.WriteEnumUsingName));\n    }\n\n    public static enum Sex {\n\t\tM(\"男\"),\n\t\tW(\"女\");\n\t\tprivate String msg;\n\t\t\n\t\tSex(String msg) {\n\t\t\tthis.msg = msg;\n\t\t}\n\t\t\n\t\t@Override\n\t\tpublic String toString() {\n\t\t\treturn msg;\n\t\t}\n\t}\n\t\n\tpublic static class Pojo {\n\t\tprivate Sex sex;\n\t\t\n\t\tpublic Sex getSex() {\n\t\t\treturn sex;\n\t\t}\n\t\t\n\t\tpublic void setSex(Sex sex) {\n\t\t\tthis.sex = sex;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/enum_/EnumTest4.java",
    "content": "package com.alibaba.json.bvt.serializer.enum_;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\npublic class EnumTest4 extends TestCase {\n    public void test_for_enum() throws Exception {\n        assertEquals(\"101\", JSON.toJSONString(Type.Big));\n        assertEquals(\"101\", JSON.toJSONString(Type1.Big));\n    }\n\n    public enum Type {\n        Big(101), Small(102);\n\n        @JSONField\n        public final int code;\n\n        Type(int code) {\n            this.code = code;\n        }\n    }\n\n    public enum Type1 {\n        Big(101), Small(102);\n\n        private final int code;\n\n        @JSONField\n        public int getCode() {\n            return code;\n        }\n\n        Type1(int code) {\n            this.code = code;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/enum_/EnumUsingToString.java",
    "content": "package com.alibaba.json.bvt.serializer.enum_;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 17/03/2017.\n */\npublic class EnumUsingToString extends TestCase {\n    public void test_toString() {\n        Model model = new Model();\n        model.gender = Gender.M;\n\n        String text = JSON.toJSONString(model);\n        assertEquals(\"{\\\"gender\\\":\\\"男\\\"}\", text);\n    }\n\n    public static class Model {\n        @JSONField(serialzeFeatures = SerializerFeature.WriteEnumUsingToString)\n        public Gender gender;\n    }\n\n    public static enum Gender {\n        M(\"男\"),\n        W(\"女\");\n        private String msg;\n\n        Gender(String msg) {\n            this.msg = msg;\n        }\n\n        @Override\n        public String toString() {\n            return msg;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/enum_/EnumUsingToString_JSONType.java",
    "content": "package com.alibaba.json.bvt.serializer.enum_;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 17/03/2017.\n */\npublic class EnumUsingToString_JSONType extends TestCase {\n    public void test_toString() {\n        Model model = new Model();\n        model.gender = Gender.M;\n\n        String text = JSON.toJSONString(model);\n        assertEquals(\"{\\\"gender\\\":\\\"男\\\"}\", text);\n    }\n\n    @JSONType(serialzeFeatures = SerializerFeature.WriteEnumUsingToString)\n    public static class Model {\n        public Gender gender;\n    }\n\n    public static enum Gender {\n        M(\"男\"),\n        W(\"女\");\n        private String msg;\n\n        Gender(String msg) {\n            this.msg = msg;\n        }\n\n        @Override\n        public String toString() {\n            return msg;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/exception/ExceptionTest.java",
    "content": "package com.alibaba.json.bvt.serializer.exception;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 29/01/2017.\n */\npublic class ExceptionTest extends TestCase {\n    public void test_exception() throws Exception {\n        ParserConfig config = new ParserConfig();\n\n        IllegalAccessError ex = new IllegalAccessError();\n\n        String text = JSON.toJSONString(ex);\n\n        JSON.parseObject(text, IllegalAccessError.class, config);\n        JSON.parseObject(text, IllegalAccessError.class, config, Feature.SupportAutoType);\n        assertEquals(IllegalAccessError.class, JSON.parseObject(text, Exception.class, config, Feature.SupportAutoType).getClass());\n\n        assertEquals(\n                JSONObject.class,\n                JSON\n                        .parse(text, config)\n                        .getClass());\n\n        assertTrue(JSON.parse(text, config, Feature.SupportAutoType) instanceof IllegalAccessError);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/exception/RuntimeExceptionTest.java",
    "content": "package com.alibaba.json.bvt.serializer.exception;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\npublic class RuntimeExceptionTest extends TestCase {\n\n    public void test_0() throws Exception {\n        RuntimeException ex = new RuntimeException();\n\n        JSONObject json = JSON.parseObject(JSON.toJSONString(ex));\n//        Assert.assertEquals(RuntimeException.class.getName(), json.get(\"@type\"));\n\n        String jsonString = JSON.toJSONString(ex);\n        Exception ex1 = JSON.parseObject(jsonString, Exception.class);\n\n        Assert.assertEquals(ex.getMessage(), ex1.getMessage());\n        Assert.assertEquals(ex.getStackTrace().length, ex1.getStackTrace().length);\n\n        for (int i = 0; i < ex.getStackTrace().length; ++i) {\n            Assert.assertEquals(ex.getStackTrace()[i].getClassName(), ex1.getStackTrace()[i].getClassName());\n            Assert.assertEquals(ex.getStackTrace()[i].getFileName(), ex1.getStackTrace()[i].getFileName());\n            Assert.assertEquals(ex.getStackTrace()[i].getLineNumber(), ex1.getStackTrace()[i].getLineNumber());\n            Assert.assertEquals(ex.getStackTrace()[i].getMethodName(), ex1.getStackTrace()[i].getMethodName());\n        }\n\n        Assert.assertEquals(ex1.getClass(), ex.getClass());\n\n        //System.out.println(JSON.toJSONString(ex));\n        // Assert.assertEquals(\"\\\"java.lang.Boolean\\\"\", JSON.toJSONString(ex));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/features/JSONDirectTest.java",
    "content": "package com.alibaba.json.bvt.serializer.features;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\n\npublic class JSONDirectTest extends TestCase {\n    public void test_feature() throws Exception {\n        Model model = new Model();\n        model.id = 1001;\n        model.value = \"{}\";\n        \n        String json = JSON.toJSONString(model);\n//        System.out.println(json);\n        Assert.assertEquals(\"{\\\"id\\\":1001,\\\"value\\\":{}}\", json);\n    }\n\n    public static class Model {\n        public int id;\n        @JSONField(jsonDirect=true)\n        public String value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/features/JSONDirectTest_number.java",
    "content": "package com.alibaba.json.bvt.serializer.features;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\npublic class JSONDirectTest_number extends TestCase {\n    public void test_feature() throws Exception {\n        Model model = new Model();\n        model.id = 1001;\n        model.value = \"12.34\";\n        \n        String json = JSON.toJSONString(model);\n//        System.out.println(json);\n        Assert.assertEquals(\"{\\\"id\\\":1001,\\\"value\\\":12.34}\", json);\n    }\n\n    public static class Model {\n        public int id;\n        @JSONField(jsonDirect=true)\n        public String value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/features/JSONDirectTest_private.java",
    "content": "package com.alibaba.json.bvt.serializer.features;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport junit.framework.TestCase;\n\npublic class JSONDirectTest_private extends TestCase {\n    public void test_feature() throws Exception {\n        Model model = new Model();\n        model.id = 1001;\n        model.value = \"{}\";\n        \n        String json = JSON.toJSONString(model);\n//        System.out.println(json);\n        Assert.assertEquals(\"{\\\"id\\\":1001,\\\"value\\\":{}}\", json);\n    }\n\n    private static class Model {\n        public int id;\n        @JSONField(jsonDirect=true)\n        public String value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/features/MapSortFieldTest.java",
    "content": "package com.alibaba.json.bvt.serializer.features;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * Created by wenshao on 14/02/2017.\n */\npublic class MapSortFieldTest extends TestCase {\n    public void test_mapSortField() throws Exception {\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"id\", 123);\n        map.put(\"name\", \"wenshao\");\n\n        String json = JSON.toJSONString(map, SerializerFeature.MapSortField);\n        assertEquals(\"{\\\"id\\\":123,\\\"name\\\":\\\"wenshao\\\"}\", json);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/features/NotWriteDefaultValueFieldTest.java",
    "content": "package com.alibaba.json.bvt.serializer.features;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 01/04/2017.\n */\npublic class NotWriteDefaultValueFieldTest extends TestCase {\n    public void test_not_write_default() throws Exception {\n        assertEquals(\"{}\", JSON.toJSONString(new Model(0)));\n        assertEquals(\"{\\\"id\\\":1}\", JSON.toJSONString(new Model(1)));\n    }\n\n    public static class Model {\n\n        @JSONField(serialzeFeatures = SerializerFeature.NotWriteDefaultValue)\n        public int id;\n\n        public Model(int id) {\n            this.id = id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/features/NotWriteDefaultValueFieldTest2.java",
    "content": "package com.alibaba.json.bvt.serializer.features;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 01/04/2017.\n */\npublic class NotWriteDefaultValueFieldTest2 extends TestCase {\n    public void test_not_write_default() throws Exception {\n        assertEquals(\"{}\", JSON.toJSONString(new Model(0)));\n        assertEquals(\"{\\\"id\\\":1}\", JSON.toJSONString(new Model(1)));\n    }\n\n    @JSONType(serialzeFeatures = SerializerFeature.NotWriteDefaultValue)\n    public static class Model {\n        public int id;\n\n        public Model(int id) {\n            this.id = id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/features/WriteBigDecimalAsPlainTest.java",
    "content": "package com.alibaba.json.bvt.serializer.features;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.math.BigDecimal;\nimport java.math.BigInteger;\n\n/**\n * Created by wenshao on 16/8/9.\n */\npublic class WriteBigDecimalAsPlainTest extends TestCase {\n    public void test_for_feature() throws Exception {\n        BigDecimal value = new BigDecimal(\"0.00000001\");\n\n        Assert.assertEquals(\"1E-8\", JSON.toJSONString(value));\n        Assert.assertEquals(\"0.00000001\", JSON.toJSONString(value, SerializerFeature.WriteBigDecimalAsPlain));\n    }\n\n    public void test_1() throws Exception {\n        Model m = new Model();\n        m.value = new BigDecimal(\"0.00000001\");\n\n        Assert.assertEquals(\"{\\\"value\\\":1E-8}\", JSON.toJSONString(m));\n        Assert.assertEquals(\"{\\\"value\\\":0.00000001}\", JSON.toJSONString(m, SerializerFeature.WriteBigDecimalAsPlain));\n    }\n\n    public void test_for_feature_BigInteger() throws Exception {\n        BigInteger value = new BigInteger(\"2020020700826004000000000000\");\n\n        Assert.assertEquals(\"2020020700826004000000000000\", JSON.toJSONString(value));\n        Assert.assertEquals(\"2020020700826004000000000000\", JSON.toJSONString(value, SerializerFeature.WriteBigDecimalAsPlain));\n    }\n\n    public static class Model {\n        private BigDecimal value;\n\n        public BigDecimal getValue() {\n            return value;\n        }\n\n        public void setValue(BigDecimal value) {\n            this.value = value;\n        }\n    }\n\n    public static class ModelBigInteger {\n        private BigInteger value;\n\n        public BigInteger getValue() {\n            return value;\n        }\n\n        public void setValue(BigInteger value) {\n            this.value = value;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/features/WriteNonStringValueAsStringTestBooleanField.java",
    "content": "package com.alibaba.json.bvt.serializer.features;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class WriteNonStringValueAsStringTestBooleanField extends TestCase {\n\n    public void test_0() throws Exception {\n        VO vo = new VO();\n        vo.id = true;\n\n        Assert.assertEquals(\"{\\\"id\\\":\\\"true\\\"}\", JSON.toJSONString(vo, SerializerFeature.WriteNonStringValueAsString));\n        Assert.assertEquals(\"{\\\"id\\\":true}\", JSON.toJSONString(vo));\n    }\n\n    public static class VO {\n\n        public boolean id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/features/WriteNonStringValueAsStringTestByteField.java",
    "content": "package com.alibaba.json.bvt.serializer.features;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class WriteNonStringValueAsStringTestByteField extends TestCase {\n    public void test_0() throws Exception {\n        VO vo = new VO();\n        vo.id = 100;\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.WriteNonStringValueAsString);\n         Assert.assertEquals(\"{\\\"id\\\":\\\"100\\\"}\", text);\n    }\n    \n    public void test_1() throws Exception {\n        V1 vo = new V1();\n        vo.id = 100;\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.WriteNonStringValueAsString);\n         Assert.assertEquals(\"{\\\"id\\\":\\\"100\\\"}\", text);\n    }\n    \n    public static class VO {\n        public byte id;\n    }\n    \n    \n    private static class V1 {\n        public byte id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/features/WriteNonStringValueAsStringTestByteObjectField.java",
    "content": "package com.alibaba.json.bvt.serializer.features;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class WriteNonStringValueAsStringTestByteObjectField extends TestCase {\n    public void test_0() throws Exception {\n        VO vo = new VO();\n        vo.id = 100;\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.WriteNonStringValueAsString);\n         Assert.assertEquals(\"{\\\"id\\\":\\\"100\\\"}\", text);\n    }\n    \n    public void test_1() throws Exception {\n        V1 vo = new V1();\n        vo.id = 100;\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.WriteNonStringValueAsString);\n         Assert.assertEquals(\"{\\\"id\\\":\\\"100\\\"}\", text);\n    }\n    \n    public static class VO {\n        public Byte id;\n    }\n    \n    \n    private static class V1 {\n        public Byte id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/features/WriteNonStringValueAsStringTestDoubleField.java",
    "content": "package com.alibaba.json.bvt.serializer.features;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class WriteNonStringValueAsStringTestDoubleField extends TestCase {\n    public void test_0() throws Exception {\n        VO vo = new VO();\n        vo.id = 100;\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.WriteNonStringValueAsString);\n         Assert.assertEquals(\"{\\\"id\\\":\\\"100.0\\\"}\", text);\n    }\n    \n    public static class VO {\n        public double id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/features/WriteNonStringValueAsStringTestFloatField.java",
    "content": "package com.alibaba.json.bvt.serializer.features;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class WriteNonStringValueAsStringTestFloatField extends TestCase {\n    public void test_0() throws Exception {\n        VO vo = new VO();\n        vo.id = 100;\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.WriteNonStringValueAsString);\n         Assert.assertEquals(\"{\\\"id\\\":\\\"100.0\\\"}\", text);\n    }\n    \n    public static class VO {\n        public float id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/features/WriteNonStringValueAsStringTestFloatField2.java",
    "content": "package com.alibaba.json.bvt.serializer.features;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\npublic class WriteNonStringValueAsStringTestFloatField2 extends TestCase {\n    public void test_0() throws Exception {\n        VO vo = new VO();\n        vo.id = 100;\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.WriteNonStringValueAsString);\n         Assert.assertEquals(\"{\\\"id\\\":\\\"100.00\\\"}\", text);\n    }\n    \n    public static class VO {\n        @JSONField(format = \"0.00\")\n        public float id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/features/WriteNonStringValueAsStringTestIntField.java",
    "content": "package com.alibaba.json.bvt.serializer.features;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class WriteNonStringValueAsStringTestIntField extends TestCase {\n    public void test_0() throws Exception {\n        VO vo = new VO();\n        vo.id = 100;\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.WriteNonStringValueAsString);\n         Assert.assertEquals(\"{\\\"id\\\":\\\"100\\\"}\", text);\n    }\n    \n    public static class VO {\n        public int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/features/WriteNonStringValueAsStringTestIntegerField.java",
    "content": "package com.alibaba.json.bvt.serializer.features;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class WriteNonStringValueAsStringTestIntegerField extends TestCase {\n    public void test_0() throws Exception {\n        VO vo = new VO();\n        vo.id = 100;\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.WriteNonStringValueAsString);\n         Assert.assertEquals(\"{\\\"id\\\":\\\"100\\\"}\", text);\n    }\n    \n    public void test_1() throws Exception {\n        V1 vo = new V1();\n        vo.id = 100;\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.WriteNonStringValueAsString);\n         Assert.assertEquals(\"{\\\"id\\\":\\\"100\\\"}\", text);\n    }\n    \n    public static class VO {\n        public Integer id;\n    }\n    \n    \n    private static class V1 {\n        public Integer id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/features/WriteNonStringValueAsStringTestLongField.java",
    "content": "package com.alibaba.json.bvt.serializer.features;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class WriteNonStringValueAsStringTestLongField extends TestCase {\n    public void test_0() throws Exception {\n        VO vo = new VO();\n        vo.id = 100;\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.WriteNonStringValueAsString);\n         Assert.assertEquals(\"{\\\"id\\\":\\\"100\\\"}\", text);\n    }\n    \n    public static class VO {\n        public long id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/features/WriteNonStringValueAsStringTestMap.java",
    "content": "package com.alibaba.json.bvt.serializer.features;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\npublic class WriteNonStringValueAsStringTestMap extends TestCase {\n    public void test_0() throws Exception {\n        Map map = new LinkedHashMap();\n        map.put(\"key1\", new Float(100));\n        map.put(\"key2\", 100);\n        map.put(\"key3\", Boolean.TRUE);\n        map.put(\"key4\", true);\n        map.put(1, 200);\n        map.put(new Object(), 100);\n\n        String text = JSON.toJSONString(map, SerializerFeature.WriteNonStringValueAsString);\n        Assert.assertEquals(\"{\\\"key1\\\":\\\"100.0\\\",\\\"key2\\\":\\\"100\\\",\\\"key3\\\":\\\"true\\\",\\\"key4\\\":\\\"true\\\",1:\\\"200\\\",{}:\\\"100\\\"}\", text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/features/WriteNonStringValueAsStringTestShortField.java",
    "content": "package com.alibaba.json.bvt.serializer.features;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class WriteNonStringValueAsStringTestShortField extends TestCase {\n    public void test_0() throws Exception {\n        VO vo = new VO();\n        vo.id = 100;\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.WriteNonStringValueAsString);\n        Assert.assertEquals(\"{\\\"id\\\":\\\"100\\\"}\", text);\n    }\n    \n    public static class VO {\n        public short id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/fieldbase/FieldBaseTest0.java",
    "content": "package com.alibaba.json.bvt.serializer.fieldbase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 01/04/2017.\n */\npublic class FieldBaseTest0 extends TestCase {\n    private static SerializeConfig config = new SerializeConfig(true);\n    private static ParserConfig parserConfig = new ParserConfig(true);\n    public void test_0() throws Exception {\n\n\n        Model model = new Model();\n        model.id = 123;\n        assertEquals(\"{\\\"id\\\":123}\", JSON.toJSONString(model, config));\n\n        Model model2 = JSON.parseObject(\"{\\\"id\\\":123}\", Model.class, parserConfig);\n        assertEquals(model.id, model2.id);\n    }\n\n    public static class Model {\n        private int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/fieldbase/FieldBaseTest1.java",
    "content": "package com.alibaba.json.bvt.serializer.fieldbase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 01/04/2017.\n */\npublic class FieldBaseTest1 extends TestCase {\n    private static SerializeConfig config = new SerializeConfig(true);\n    private static ParserConfig parserConfig = new ParserConfig(true);\n\n    public void test_0() throws Exception {\n        Model model = new Model();\n        ((AbstractModel)model).parentId = 234;\n        model.id = 123;\n        assertEquals(\"{\\\"id\\\":123,\\\"parentId\\\":234}\", JSON.toJSONString(model, config));\n\n        Model model2 = JSON.parseObject(\"{\\\"id\\\":123,\\\"parentId\\\":234}\", Model.class, parserConfig);\n        assertEquals(((AbstractModel) model).parentId, ((AbstractModel) model).parentId);\n        assertEquals(model.id, model2.id);\n    }\n\n    public static class AbstractModel {\n        private int parentId;\n    }\n\n    public static class Model extends AbstractModel {\n        private int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/AfterFilterClassLevelTest.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.AfterFilter;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\n\nimport junit.framework.TestCase;\n\npublic class AfterFilterClassLevelTest extends TestCase {\n\n    public void test_0() throws Exception {\n        Object[] array = { new ModelA(), new ModelB() };\n\n        SerializeConfig config = new SerializeConfig();\n        config.addFilter(ModelA.class, //\n                         new AfterFilter() {\n\n                             @Override\n                             public void writeAfter(Object object) {\n                                 this.writeKeyValue(\"type\", \"A\");\n                             }\n                         });\n        config.addFilter(ModelB.class, //\n                         new AfterFilter() {\n\n                             @Override\n                             public void writeAfter(Object object) {\n                                 this.writeKeyValue(\"type\", \"B\");\n                             }\n                         });\n        String text2 = JSON.toJSONString(array, config);\n        Assert.assertEquals(\"[{\\\"id\\\":1001,\\\"type\\\":\\\"A\\\"},{\\\"id\\\":1002,\\\"type\\\":\\\"B\\\"}]\", text2);\n\n        String text = JSON.toJSONString(array);\n        Assert.assertEquals(\"[{\\\"id\\\":1001},{\\\"id\\\":1002}]\", text);\n\n    }\n\n    public static class ModelA {\n\n        public int id = 1001;\n    }\n\n    public static class ModelB {\n\n        public int id = 1002;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/AfterFilterClassLevelTest_private.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.AfterFilter;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\n\nimport junit.framework.TestCase;\n\npublic class AfterFilterClassLevelTest_private extends TestCase {\n\n    public void test_0() throws Exception {\n        Object[] array = { new ModelA(), new ModelB() };\n\n        SerializeConfig config = new SerializeConfig();\n        config.addFilter(ModelA.class, //\n                         new AfterFilter() {\n\n                             @Override\n                             public void writeAfter(Object object) {\n                                 this.writeKeyValue(\"type\", \"A\");\n                             }\n                         });\n        config.addFilter(ModelB.class, //\n                         new AfterFilter() {\n\n                             @Override\n                             public void writeAfter(Object object) {\n                                 this.writeKeyValue(\"type\", \"B\");\n                             }\n                         });\n        String text2 = JSON.toJSONString(array, config);\n        Assert.assertEquals(\"[{\\\"id\\\":1001,\\\"type\\\":\\\"A\\\"},{\\\"id\\\":1002,\\\"type\\\":\\\"B\\\"}]\", text2);\n\n        String text = JSON.toJSONString(array);\n        Assert.assertEquals(\"[{\\\"id\\\":1001},{\\\"id\\\":1002}]\", text);\n\n    }\n\n    private static class ModelA {\n\n        public int id = 1001;\n    }\n\n    private static class ModelB {\n\n        public int id = 1002;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/AfterFilterTest.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.AfterFilter;\nimport com.alibaba.fastjson.serializer.BeforeFilter;\n\npublic class AfterFilterTest extends TestCase {\n    public void test_afterFilter() throws Exception {\n        AfterFilter filter = new AfterFilter() {\n            \n            @Override\n            public void writeAfter(Object object) {\n                this.writeKeyValue(\"id\", 123);\n            }\n        };\n        Assert.assertEquals(\"{\\\"id\\\":123}\",JSON.toJSONString( new VO(), filter));\n    }\n    \n    public void test_afterFilter2() throws Exception {\n        AfterFilter filter = new AfterFilter() {\n            \n            @Override\n            public void writeAfter(Object object) {\n                this.writeKeyValue(\"id\", 123);\n                this.writeKeyValue(\"name\", \"wenshao\");\n            }\n        };\n        Assert.assertEquals(\"{\\\"id\\\":123,\\\"name\\\":\\\"wenshao\\\"}\", JSON.toJSONString(new VO(), filter));\n    }\n    \n    private static class VO {\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/AfterFilterTest2.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.AfterFilter;\nimport com.alibaba.fastjson.serializer.BeforeFilter;\n\npublic class AfterFilterTest2 extends TestCase {\n    public void test_afterFilter() throws Exception {\n        AfterFilter filter = new AfterFilter() {\n            \n            @Override\n            public void writeAfter(Object object) {\n                this.writeKeyValue(\"id\", 123);\n            }\n        };\n        Assert.assertEquals(\"{\\\"id\\\":123}\",JSON.toJSONString( new VO(), filter));\n    }\n    \n    public void test_afterFilter2() throws Exception {\n        AfterFilter filter = new AfterFilter() {\n            \n            @Override\n            public void writeAfter(Object object) {\n                this.writeKeyValue(\"id\", 123);\n                this.writeKeyValue(\"name\", \"wenshao\");\n            }\n        };\n        Assert.assertEquals(\"{\\\"id\\\":123,\\\"name\\\":\\\"wenshao\\\"}\", JSON.toJSONString(new VO(), filter));\n    }\n    \n    public static class VO {\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/AfterFilterTest3.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.AfterFilter;\n\npublic class AfterFilterTest3 extends TestCase {\n\n    public void test_afterFilter() throws Exception {\n        AfterFilter filter = new AfterFilter() {\n\n            @Override\n            public void writeAfter(Object object) {\n                this.writeKeyValue(\"id\", 123);\n            }\n        };\n        Assert.assertEquals(JSON.toJSONString(new VO(), filter), \"{\\\"value\\\":1001,\\\"id\\\":123}\");\n    }\n\n    public void test_afterFilter2() throws Exception {\n        AfterFilter filter = new AfterFilter() {\n\n            @Override\n            public void writeAfter(Object object) {\n                this.writeKeyValue(\"id\", 123);\n                this.writeKeyValue(\"name\", \"wenshao\");\n            }\n        };\n        Assert.assertEquals(JSON.toJSONString(new VO(), filter), \"{\\\"value\\\":1001,\\\"id\\\":123,\\\"name\\\":\\\"wenshao\\\"}\");\n    }\n\n    public static class VO {\n\n        private int value = 1001;\n\n        public int getValue() {\n            return value;\n        }\n\n        public void setValue(int value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/AppendableTest.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport java.io.StringWriter;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\n\npublic class AppendableTest extends TestCase {\n\n    public void test_stringbufer() throws Exception {\n        Appendable obj = new StringBuffer();\n        obj.append(\"abc\");\n        \n        String text = JSON.toJSONString(obj);\n        \n        Assert.assertEquals(\"\\\"abc\\\"\", text);     \n        \n\n    }\n    \n    public void test_stringwriter() throws Exception {\n        Appendable obj = new StringWriter();\n        obj.append(\"abc\");\n        \n        String text = JSON.toJSONString(obj);\n        \n        Assert.assertEquals(\"\\\"abc\\\"\", text);     \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/ArraySerializerTest.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\nimport com.alibaba.fastjson.util.IOUtils;\r\n\r\npublic class ArraySerializerTest extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(1);\r\n\r\n        JSONSerializer.write(out, new A[] { new A(), null, null });\r\n\r\n        Assert.assertEquals(\"[{},null,null]\", out.toString());\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(1);\r\n\r\n        JSONSerializer.write(out, new A[] {});\r\n\r\n        Assert.assertEquals(\"[]\", out.toString());\r\n\r\n        new IOUtils();\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        SerializeWriter out = new SerializeWriter(1);\r\n\r\n        JSONSerializer.write(out, new A[] { new A() });\r\n\r\n        Assert.assertEquals(\"[{}]\", out.toString());\r\n\r\n        new IOUtils();\r\n    }\r\n\r\n    public static class A {\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/BeforeFilterClassLevelTest.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.BeforeFilter;\nimport com.alibaba.fastjson.serializer.PropertyFilter;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\n\nimport junit.framework.TestCase;\n\npublic class BeforeFilterClassLevelTest extends TestCase {\n\n    public void test_0() throws Exception {\n        Object[] array = { new ModelA(), new ModelB() };\n\n        SerializeConfig config = new SerializeConfig();\n        config.addFilter(ModelA.class, //\n                         new BeforeFilter() {\n\n                             @Override\n                             public void writeBefore(Object object) {\n                                 this.writeKeyValue(\"type\", \"A\");\n                             }\n                         });\n        config.addFilter(ModelB.class, //\n                         new BeforeFilter() {\n\n                             @Override\n                             public void writeBefore(Object object) {\n                                 this.writeKeyValue(\"type\", \"B\");\n                             }\n                         });\n        String text2 = JSON.toJSONString(array, config);\n        Assert.assertEquals(\"[{\\\"type\\\":\\\"A\\\",\\\"id\\\":1001},{\\\"type\\\":\\\"B\\\",\\\"id\\\":1002}]\", text2);\n\n        String text = JSON.toJSONString(array);\n        Assert.assertEquals(\"[{\\\"id\\\":1001},{\\\"id\\\":1002}]\", text);\n\n    }\n\n    public static class ModelA {\n\n        public int id = 1001;\n    }\n\n    public static class ModelB {\n\n        public int id = 1002;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/BeforeFilterClassLevelTest_private.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.BeforeFilter;\nimport com.alibaba.fastjson.serializer.PropertyFilter;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\n\nimport junit.framework.TestCase;\n\npublic class BeforeFilterClassLevelTest_private extends TestCase {\n\n    public void test_0() throws Exception {\n        Object[] array = { new ModelA(), new ModelB() };\n\n        SerializeConfig config = new SerializeConfig();\n        config.addFilter(ModelA.class, //\n                         new BeforeFilter() {\n\n                             @Override\n                             public void writeBefore(Object object) {\n                                 this.writeKeyValue(\"type\", \"A\");\n                             }\n                         });\n        config.addFilter(ModelB.class, //\n                         new BeforeFilter() {\n\n                             @Override\n                             public void writeBefore(Object object) {\n                                 this.writeKeyValue(\"type\", \"B\");\n                             }\n                         });\n        String text2 = JSON.toJSONString(array, config);\n        Assert.assertEquals(\"[{\\\"type\\\":\\\"A\\\",\\\"id\\\":1001},{\\\"type\\\":\\\"B\\\",\\\"id\\\":1002}]\", text2);\n\n        String text = JSON.toJSONString(array);\n        Assert.assertEquals(\"[{\\\"id\\\":1001},{\\\"id\\\":1002}]\", text);\n\n    }\n\n    private static class ModelA {\n\n        public int id = 1001;\n    }\n\n    private static class ModelB {\n\n        public int id = 1002;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/BeforeFilterTest.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.BeforeFilter;\n\npublic class BeforeFilterTest extends TestCase {\n    public void test_beforeFilter() throws Exception {\n        BeforeFilter filter = new BeforeFilter() {\n            \n            @Override\n            public void writeBefore(Object object) {\n                this.writeKeyValue(\"id\", 123);\n            }\n        };\n        Assert.assertEquals(\"{\\\"id\\\":123}\",JSON.toJSONString( new VO(), filter));\n    }\n    \n    public void test_beforeFilter2() throws Exception {\n        BeforeFilter filter = new BeforeFilter() {\n            \n            @Override\n            public void writeBefore(Object object) {\n                this.writeKeyValue(\"id\", 123);\n                this.writeKeyValue(\"name\", \"wenshao\");\n            }\n        };\n        Assert.assertEquals(\"{\\\"id\\\":123,\\\"name\\\":\\\"wenshao\\\"}\", JSON.toJSONString(new VO(), filter));\n    }\n    \n    private static class VO {\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/BeforeFilterTest2.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.BeforeFilter;\n\npublic class BeforeFilterTest2 extends TestCase {\n    public void test_beforeFilter() throws Exception {\n        BeforeFilter filter = new BeforeFilter() {\n            \n            @Override\n            public void writeBefore(Object object) {\n                this.writeKeyValue(\"id\", 123);\n            }\n        };\n        Assert.assertEquals(JSON.toJSONString(new VO(), filter), \"{\\\"id\\\":123}\");\n    }\n    \n    public void test_beforeFilter2() throws Exception {\n        BeforeFilter filter = new BeforeFilter() {\n            \n            @Override\n            public void writeBefore(Object object) {\n                this.writeKeyValue(\"id\", 123);\n                this.writeKeyValue(\"name\", \"wenshao\");\n            }\n        };\n        Assert.assertEquals(JSON.toJSONString(new VO(), filter), \"{\\\"id\\\":123,\\\"name\\\":\\\"wenshao\\\"}\");\n    }\n    \n    public static class VO {\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/BeforeFilterTest3.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.BeforeFilter;\n\npublic class BeforeFilterTest3 extends TestCase {\n\n    public void test_beforeFilter() throws Exception {\n        BeforeFilter filter = new BeforeFilter() {\n\n            @Override\n            public void writeBefore(Object object) {\n                this.writeKeyValue(\"id\", 123);\n            }\n        };\n        Assert.assertEquals(JSON.toJSONString(new VO(), filter), \"{\\\"id\\\":123,\\\"value\\\":1001}\");\n    }\n\n    public void test_beforeFilter2() throws Exception {\n        BeforeFilter filter = new BeforeFilter() {\n\n            @Override\n            public void writeBefore(Object object) {\n                this.writeKeyValue(\"id\", 123);\n                this.writeKeyValue(\"name\", \"wenshao\");\n            }\n        };\n        Assert.assertEquals(JSON.toJSONString(new VO(), filter), \"{\\\"id\\\":123,\\\"name\\\":\\\"wenshao\\\",\\\"value\\\":1001}\");\n    }\n\n    public static class VO {\n\n        private int value = 1001;\n\n        public int getValue() {\n            return value;\n        }\n\n        public void setValue(int value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/ClassLevelFeatureConfigTest.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class ClassLevelFeatureConfigTest extends TestCase {\n    public void test_0() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        \n        Model model = new Model();\n        model.id = 1001;\n        \n        Assert.assertEquals(\"{\\\"id\\\":1001}\", JSON.toJSONString(model, config));\n        \n        config.config(Model.class, SerializerFeature.BeanToArray, true);\n        Assert.assertEquals(\"[1001]\", JSON.toJSONString(model, config));\n        \n        config.config(Model.class, SerializerFeature.BeanToArray, true);\n        Assert.assertEquals(\"[1001]\", JSON.toJSONString(model, config));\n    }\n    \n    public static class Model {\n        public int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/ClassLevelFeatureConfigTest2.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class ClassLevelFeatureConfigTest2 extends TestCase {\n    public void test_0() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        \n        config.config(Model.class, SerializerFeature.BeanToArray, true);\n        \n        Model model = new Model();\n        model.id = 1001;\n        \n        Assert.assertEquals(\"[1001]\", JSON.toJSONString(model, config));\n        \n        config.config(Model.class, SerializerFeature.BeanToArray, false);\n        Assert.assertEquals(\"{\\\"id\\\":1001}\", JSON.toJSONString(model, config));\n    }\n    \n    public static class Model {\n        public int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/ClassLevelFeatureConfigTest3.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class ClassLevelFeatureConfigTest3 extends TestCase {\n    public void test_0() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        \n        config.config(Model.class, SerializerFeature.BeanToArray, false);\n        \n        Model model = new Model();\n        model.id = 1001;\n        \n        Assert.assertEquals(\"{\\\"id\\\":1001}\", JSON.toJSONString(model, config));\n        \n        config.config(Model.class, SerializerFeature.BeanToArray, true);\n        Assert.assertEquals(\"[1001]\", JSON.toJSONString(model, config));        \n    }\n    \n    @JSONType(serialzeFeatures=SerializerFeature.BeanToArray)\n    public static class Model {\n        public int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/ClassLevelFeatureConfigTest_private.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class ClassLevelFeatureConfigTest_private extends TestCase {\n    public void test_0() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        \n        Model model = new Model();\n        model.id = 1001;\n        \n        Assert.assertEquals(\"{\\\"id\\\":1001}\", JSON.toJSONString(model, config));\n        \n        config.config(Model.class, SerializerFeature.BeanToArray, true);\n        Assert.assertEquals(\"[1001]\", JSON.toJSONString(model, config));\n    }\n    \n    private static class Model {\n        public int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/ClassNameFilterTest.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.NameFilter;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\n\nimport junit.framework.TestCase;\n\npublic class ClassNameFilterTest extends TestCase {\n    \n    public void test_filter() throws Exception {\n        NameFilter upcaseNameFilter = new NameFilter() {\n            \n            @Override\n            public String process(Object object, String name, Object value) {\n                return name.toUpperCase();\n            }\n        };\n        SerializeConfig.getGlobalInstance() //\n                       .addFilter(A.class, upcaseNameFilter);\n        \n        Assert.assertEquals(\"{\\\"ID\\\":0}\", JSON.toJSONString(new A()));\n        Assert.assertEquals(\"{\\\"id\\\":0}\", JSON.toJSONString(new B()));\n    }\n\n    public static class A {\n        public int id;\n    }\n\n    public static class B {\n\n        public int id;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/ClassNameFilterTest_private.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.NameFilter;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\n\nimport junit.framework.TestCase;\n\npublic class ClassNameFilterTest_private extends TestCase {\n    \n    public void test_filter() throws Exception {\n        NameFilter upcaseNameFilter = new NameFilter() {\n            \n            @Override\n            public String process(Object object, String name, Object value) {\n                return name.toUpperCase();\n            }\n        };\n        SerializeConfig.getGlobalInstance() //\n                       .addFilter(A.class, upcaseNameFilter);\n        \n        Assert.assertEquals(\"{\\\"ID\\\":0}\", JSON.toJSONString(new A()));\n        Assert.assertEquals(\"{\\\"id\\\":0}\", JSON.toJSONString(new B()));\n    }\n\n    private static class A {\n        public int id;\n    }\n\n    private static class B {\n\n        public int id;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/ContextValueClassLevelTest.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.BeanContext;\nimport com.alibaba.fastjson.serializer.ContextValueFilter;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.ValueFilter;\n\nimport junit.framework.TestCase;\n\npublic class ContextValueClassLevelTest extends TestCase {\n\n    public void test_0() throws Exception {\n        Object[] array = { new ModelA(), new ModelB() };\n\n        SerializeConfig config = new SerializeConfig();\n        config.addFilter(ModelA.class, //\n                         new ContextValueFilter() {\n\n                             public Object process(BeanContext context, Object object, String name, Object value) {\n                                 return 30001;\n                             }\n                         });\n        config.addFilter(ModelB.class, //\n                         new ContextValueFilter() {\n\n                             public Object process(BeanContext context, Object object, String name, Object value) {\n                                 return 20001;\n                             }\n                         });\n        String text2 = JSON.toJSONString(array, config);\n        Assert.assertEquals(\"[{\\\"id\\\":30001},{\\\"id\\\":20001}]\", text2);\n\n        String text = JSON.toJSONString(array);\n        Assert.assertEquals(\"[{\\\"id\\\":1001},{\\\"id\\\":1002}]\", text);\n\n    }\n\n    public static class ModelA {\n\n        public int id = 1001;\n    }\n\n    public static class ModelB {\n\n        public int id = 1002;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/MTopFilterTest.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport java.util.HashMap;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.ValueFilter;\n\nimport junit.framework.TestCase;\n\npublic class MTopFilterTest extends TestCase {\n\n    public void test_0() throws Exception {\n        Model model = new Model();\n        model.id = 1001;\n        model.name = \"yongbo\";\n        model.user = new Person();\n        model.user.personId = 2002;\n\n        final HashMap<String, Object> values = new HashMap<String, Object>();\n        ValueFilter valueFilter = new ValueFilter() {\n\n            @Override\n            public Object process(Object object, String name, Object value) {\n                values.put(name, value);\n                return value;\n            }\n        };\n        \n        String jsonString = JSON.toJSONString(model, valueFilter);\n        Assert.assertEquals(\"{\\\"id\\\":1001,\\\"name\\\":\\\"yongbo\\\",\\\"user\\\":{\\\"personId\\\":2002}}\", jsonString);\n        \n        Assert.assertEquals(4, values.size());\n        Assert.assertEquals(model.id, values.get(\"id\"));\n        Assert.assertSame(model.name, values.get(\"name\"));\n        Assert.assertEquals(model.user, values.get(\"user\"));\n        Assert.assertEquals(model.user.personId, values.get(\"personId\"));\n    }\n\n    public static class Model {\n\n        private int    id;\n        private String name;\n        private Person user;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public Person getUser() {\n            return user;\n        }\n\n        public void setUser(Person user) {\n            this.user = user;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n\n    public static class Person {\n\n        private int personId;\n\n        public int getPersonId() {\n            return personId;\n        }\n\n        public void setPersonId(int personId) {\n            this.personId = personId;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/NameFilterClassLevelTest.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.NameFilter;\nimport com.alibaba.fastjson.serializer.PascalNameFilter;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\n\nimport junit.framework.TestCase;\n\npublic class NameFilterClassLevelTest extends TestCase {\n\n    public void test_0() throws Exception {\n        Object[] array = { new ModelA(), new ModelB() };\n\n        SerializeConfig config = new SerializeConfig();\n        config.addFilter(ModelA.class, //\n                         new PascalNameFilter());\n        config.addFilter(ModelB.class, //\n                         new NameFilter() {\n                             @Override\n                             public String process(Object object, String name, Object value) {\n                                 return name;\n                             }\n                         });\n        String text2 = JSON.toJSONString(array, config);\n        Assert.assertEquals(\"[{\\\"Id\\\":1001},{\\\"id\\\":1002}]\", text2);\n\n        String text = JSON.toJSONString(array);\n        Assert.assertEquals(\"[{\\\"id\\\":1001},{\\\"id\\\":1002}]\", text);\n\n    }\n\n    public static class ModelA {\n\n        public int id = 1001;\n    }\n\n    public static class ModelB {\n\n        public int id = 1002;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/NameFilterClassLevelTest_private.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.NameFilter;\nimport com.alibaba.fastjson.serializer.PascalNameFilter;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\n\nimport junit.framework.TestCase;\n\npublic class NameFilterClassLevelTest_private extends TestCase {\n\n    public void test_0() throws Exception {\n        Object[] array = { new ModelA(), new ModelB() };\n\n        SerializeConfig config = new SerializeConfig();\n        config.addFilter(ModelA.class, //\n                         new PascalNameFilter());\n        config.addFilter(ModelB.class, //\n                         new NameFilter() {\n                             @Override\n                             public String process(Object object, String name, Object value) {\n                                 return name;\n                             }\n                         });\n        String text2 = JSON.toJSONString(array, config);\n        Assert.assertEquals(\"[{\\\"Id\\\":1001},{\\\"id\\\":1002}]\", text2);\n\n        String text = JSON.toJSONString(array);\n        Assert.assertEquals(\"[{\\\"id\\\":1001},{\\\"id\\\":1002}]\", text);\n\n    }\n\n    private static class ModelA {\n\n        public int id = 1001;\n    }\n\n    private static class ModelB {\n\n        public int id = 1002;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/NameFilterTest.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.NameFilter;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\npublic class NameFilterTest extends TestCase {\n\n    public void test_namefilter() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Bean a = new Bean();\n        serializer.write(a);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":0}\", text);\n    }\n\n    public void test_namefilter_1() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"id\", 0);\n        serializer.write(map);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":0}\", text);\n    }\n    \n    public static void test_toJSONString() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n        \n        Assert.assertEquals(\"{\\\"ID\\\":0}\", JSON.toJSONString(Collections.singletonMap(\"id\", 0), filter));\n    }\n\n    public static class Bean {\n\n        private int    id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/NameFilterTest_IntegerKey.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.NameFilter;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\nimport junit.framework.TestCase;\n\npublic class NameFilterTest_IntegerKey extends TestCase {\n\n    public void test_namefilter() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (name.equals(\"1001\")) {\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Map map = new HashMap();\n        map.put(1001, 0);\n        serializer.write(map);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":0}\", text);\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/NameFilterTest_boolean.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.NameFilter;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\npublic class NameFilterTest_boolean extends TestCase {\n\n    public void test_namefilter() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (value != null) {\n                    Assert.assertTrue(value instanceof Boolean);\n                }\n                \n                if (name.equals(\"id\")) {\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Bean a = new Bean();\n        serializer.write(a);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":false}\", text);\n    }\n\n    public void test_namefilter_1() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"id\", true);\n        serializer.write(map);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":true}\", text);\n    }\n\n    public static class Bean {\n\n        private boolean id;\n        private String  name;\n\n        public boolean isId() {\n            return id;\n        }\n\n        public void setId(boolean id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/NameFilterTest_boolean_field.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.NameFilter;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\nimport junit.framework.TestCase;\n\npublic class NameFilterTest_boolean_field extends TestCase {\n\n    public void test_namefilter() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (value != null) {\n                    Assert.assertTrue(value instanceof Boolean);\n                }\n                \n                if (name.equals(\"id\")) {\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Bean a = new Bean();\n        serializer.write(a);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":false}\", text);\n    }\n\n    public void test_namefilter_1() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"id\", true);\n        serializer.write(map);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":true}\", text);\n    }\n\n    public static class Bean {\n\n        public boolean id;\n        public String  name;\n\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/NameFilterTest_byte.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.NameFilter;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\npublic class NameFilterTest_byte extends TestCase {\n\n    public void test_namefilter() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (value != null) {\n                    Assert.assertTrue(value instanceof Byte);\n                }\n                \n                if (name.equals(\"id\")) {\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Bean a = new Bean();\n        serializer.write(a);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":0}\", text);\n    }\n\n    public void test_namefilter_1() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"id\", (byte) 0);\n        serializer.write(map);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":0}\", text);\n    }\n\n    public static class Bean {\n\n        private byte    id;\n        private String name;\n\n        public byte getId() {\n            return id;\n        }\n\n        public void setId(byte id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/NameFilterTest_byte_field.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.NameFilter;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\npublic class NameFilterTest_byte_field extends TestCase {\n\n    public void test_namefilter() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (value != null) {\n                    Assert.assertTrue(value instanceof Byte);\n                }\n                \n                if (name.equals(\"id\")) {\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Bean a = new Bean();\n        serializer.write(a);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":0}\", text);\n    }\n\n    public void test_namefilter_1() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"id\", (byte) 0);\n        serializer.write(map);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":0}\", text);\n    }\n\n    public static class Bean {\n\n        public byte    id;\n        public String name;\n\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/NameFilterTest_char.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.NameFilter;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\npublic class NameFilterTest_char extends TestCase {\n\n    public void test_namefilter() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n\n                if (name.equals(\"id\")) {\n                    Assert.assertTrue(value instanceof Character);\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Bean a = new Bean();\n        serializer.write(a);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":\\\"0\\\"}\", text);\n    }\n\n    public void test_namefilter_1() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"id\", '0');\n        serializer.write(map);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":\\\"0\\\"}\", text);\n    }\n\n    public static class Bean {\n\n        private char   id = '0';\n        private String name;\n\n        public char getId() {\n            return id;\n        }\n\n        public void setId(char id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/NameFilterTest_double.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.NameFilter;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\npublic class NameFilterTest_double extends TestCase {\n\n    public void test_namefilter() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Bean a = new Bean();\n        serializer.write(a);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":0.0}\", text);\n    }\n\n    public void test_namefilter_1() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"id\", 0);\n        serializer.write(map);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":0}\", text);\n    }\n\n    public static class Bean {\n\n        private double  id;\n        private String name;\n\n        public double getId() {\n            return id;\n        }\n\n        public void setId(double id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/NameFilterTest_double_field.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.NameFilter;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\npublic class NameFilterTest_double_field extends TestCase {\n\n    public void test_namefilter() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Bean a = new Bean();\n        serializer.write(a);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":0.0}\", text);\n    }\n\n    public void test_namefilter_1() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"id\", 0);\n        serializer.write(map);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":0}\", text);\n    }\n\n    public static class Bean {\n\n        public double  id;\n        public String name;\n\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/NameFilterTest_float.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.NameFilter;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\npublic class NameFilterTest_float extends TestCase {\n\n    public void test_namefilter() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Bean a = new Bean();\n        serializer.write(a);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":0.0}\", text);\n    }\n\n    public void test_namefilter_1() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"id\", 0);\n        serializer.write(map);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":0}\", text);\n    }\n\n    public static class Bean {\n\n        private float  id;\n        private String name;\n\n        public float getId() {\n            return id;\n        }\n\n        public void setId(float id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/NameFilterTest_float_field.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.NameFilter;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\npublic class NameFilterTest_float_field extends TestCase {\n\n    public void test_namefilter() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Bean a = new Bean();\n        serializer.write(a);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":0.0}\", text);\n    }\n\n    public void test_namefilter_1() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"id\", 0);\n        serializer.write(map);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":0}\", text);\n    }\n\n    public static class Bean {\n\n        public float  id;\n        public String name;\n\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/NameFilterTest_int.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.NameFilter;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\npublic class NameFilterTest_int extends TestCase {\n\n    public void test_namefilter() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    Assert.assertTrue(value instanceof Integer);\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Bean a = new Bean();\n        serializer.write(a);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":0}\", text);\n    }\n\n    public void test_namefilter_1() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"id\", 0);\n        serializer.write(map);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":0}\", text);\n    }\n\n    public static class Bean {\n\n        private int    id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/NameFilterTest_int_field.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.NameFilter;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\npublic class NameFilterTest_int_field extends TestCase {\n\n    public void test_namefilter() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    Assert.assertTrue(value instanceof Integer);\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Bean a = new Bean();\n        serializer.write(a);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":0}\", text);\n    }\n\n    public void test_namefilter_1() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"id\", 0);\n        serializer.write(map);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":0}\", text);\n    }\n\n    public static class Bean {\n\n        public int   id;\n        public String name;\n\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/NameFilterTest_long.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.NameFilter;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\npublic class NameFilterTest_long extends TestCase {\n\n    public void test_namefilter() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    Assert.assertTrue(value instanceof Long);\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Bean a = new Bean();\n        serializer.write(a);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":0}\", text);\n    }\n\n    public void test_namefilter_1() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"id\", 0);\n        serializer.write(map);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":0}\", text);\n    }\n\n    public static class Bean {\n\n        private long   id;\n        private String name;\n\n        public long getId() {\n            return id;\n        }\n\n        public void setId(long id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/NameFilterTest_long_field.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.NameFilter;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\npublic class NameFilterTest_long_field extends TestCase {\n\n    public void test_namefilter() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    Assert.assertTrue(value instanceof Long);\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Bean a = new Bean();\n        serializer.write(a);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":0}\", text);\n    }\n\n    public void test_namefilter_1() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"id\", 0);\n        serializer.write(map);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":0}\", text);\n    }\n\n    public static class Bean {\n\n        public long   id;\n        public String name;\n\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/NameFilterTest_short.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.NameFilter;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\nimport junit.framework.TestCase;\n\npublic class NameFilterTest_short extends TestCase {\n\n    public void test_namefilter() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (value != null) {\n                    Assert.assertTrue(value instanceof Short);\n                }\n                \n                if (name.equals(\"id\")) {\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Bean a = new Bean();\n        serializer.write(a);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":0}\", text);\n    }\n\n    public void test_namefilter_1() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    Assert.assertTrue(value instanceof Short);\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"id\", (short) 0);\n        serializer.write(map);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":0}\", text);\n    }\n\n    public static class Bean {\n\n        private short    id;\n        private String name;\n\n        public short getId() {\n            return id;\n        }\n\n        public void setId(short id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/NameFilterTest_short_field.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.NameFilter;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\nimport junit.framework.TestCase;\n\npublic class NameFilterTest_short_field extends TestCase {\n\n    public void test_namefilter() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (value != null) {\n                    Assert.assertTrue(value instanceof Short);\n                }\n                \n                if (name.equals(\"id\")) {\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Bean a = new Bean();\n        serializer.write(a);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":0}\", text);\n    }\n\n    public void test_namefilter_1() throws Exception {\n        NameFilter filter = new NameFilter() {\n\n            public String process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    Assert.assertTrue(value instanceof Short);\n                    return \"ID\";\n                }\n\n                return name;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getNameFilters().add(filter);\n\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"id\", (short) 0);\n        serializer.write(map);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"ID\\\":0}\", text);\n    }\n\n    public static class Bean {\n\n        public short    id;\n        public String name;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/PropertyFilterClassLevelTest.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.PropertyFilter;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\n\nimport junit.framework.TestCase;\n\npublic class PropertyFilterClassLevelTest extends TestCase {\n\n    public void test_0() throws Exception {\n        Object[] array = { new ModelA(), new ModelB() };\n\n        SerializeConfig config = new SerializeConfig();\n        config.addFilter(ModelA.class, //\n                         new PropertyFilter() {\n\n                             @Override\n                             public boolean apply(Object object, String name, Object value) {\n                                 return false;\n                             }\n                         });\n        config.addFilter(ModelB.class, //\n                         new PropertyFilter() {\n\n                             @Override\n                             public boolean apply(Object object, String name, Object value) {\n                                 return true;\n                             }\n                         });\n        String text2 = JSON.toJSONString(array, config);\n        Assert.assertEquals(\"[{},{\\\"id\\\":1002}]\", text2);\n\n        String text = JSON.toJSONString(array);\n        Assert.assertEquals(\"[{\\\"id\\\":1001},{\\\"id\\\":1002}]\", text);\n\n    }\n\n    public static class ModelA {\n\n        public int id = 1001;\n    }\n\n    public static class ModelB {\n\n        public int id = 1002;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/PropertyFilterClassLevelTest_private.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.PropertyFilter;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\n\nimport junit.framework.TestCase;\n\npublic class PropertyFilterClassLevelTest_private extends TestCase {\n\n    public void test_0() throws Exception {\n        Object[] array = { new ModelA(), new ModelB() };\n\n        SerializeConfig config = new SerializeConfig();\n        config.addFilter(ModelA.class, //\n                         new PropertyFilter() {\n\n                             @Override\n                             public boolean apply(Object object, String name, Object value) {\n                                 return false;\n                             }\n                         });\n        config.addFilter(ModelB.class, //\n                         new PropertyFilter() {\n\n                             @Override\n                             public boolean apply(Object object, String name, Object value) {\n                                 return true;\n                             }\n                         });\n        String text2 = JSON.toJSONString(array, config);\n        Assert.assertEquals(\"[{},{\\\"id\\\":1002}]\", text2);\n\n        String text = JSON.toJSONString(array);\n        Assert.assertEquals(\"[{\\\"id\\\":1001},{\\\"id\\\":1002}]\", text);\n\n    }\n\n    private static class ModelA {\n\n        public int id = 1001;\n    }\n\n    private static class ModelB {\n\n        public int id = 1002;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/PropertyFilterTest.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.PropertyFilter;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\n\r\npublic class PropertyFilterTest extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{}\", text);\r\n    }\r\n    \r\n    public void test_toJSONString() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                return false;\r\n            }\r\n        };\r\n\r\n        Assert.assertEquals(\"{}\", JSON.toJSONString(new A(), filter));\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"id\".equals(name)) {\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"id\\\":0}\", text);\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        a.setName(\"chennp2008\");\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"name\\\":\\\"chennp2008\\\"}\", text);\r\n    }\r\n\r\n    public void test_3() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        Map<String, Object> map = new HashMap<String, Object>();\r\n        map.put(\"name\", \"chennp2008\");\r\n        serializer.write(map);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"name\\\":\\\"chennp2008\\\"}\", text);\r\n    }\r\n\r\n    public void test_4() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return false;\r\n                }\r\n                return true;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        Map<String, Object> map = new HashMap<String, Object>();\r\n        map.put(\"id\", 3);\r\n        map.put(\"name\", \"chennp2008\");\r\n        serializer.write(map);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"id\\\":3}\", text);\r\n    }\r\n\r\n    public static class A {\r\n\r\n        private int    id;\r\n        private String name;\r\n\r\n        public int getId() {\r\n            return id;\r\n        }\r\n\r\n        public void setId(int id) {\r\n            this.id = id;\r\n        }\r\n\r\n        public String getName() {\r\n            return name;\r\n        }\r\n\r\n        public void setName(String name) {\r\n            this.name = name;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/PropertyFilterTest2.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.PropertyFilter;\n\npublic class PropertyFilterTest2 extends TestCase {\n\n    public void test_0() throws Exception {\n        class VO {\n            public int    id;\n            public String name;\n        }\n\n        PropertyFilter filter = new PropertyFilter() {\n\n            public boolean apply(Object source, String name, Object value) {\n                return \"id\".equals(name);\n            }\n        };\n\n        VO vo = new VO();\n        vo.id = 123;\n        vo.name = \"gaotie\";\n\n        String text = JSON.toJSONString(vo, filter);\n        Assert.assertEquals(\"{\\\"id\\\":123}\", text);\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/PropertyFilter_bool_field.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.PropertyFilter;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\n\r\npublic class PropertyFilter_bool_field extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{}\", text);\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"id\".equals(name)) {\r\n                    Assert.assertTrue(value instanceof Boolean);\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"id\\\":false}\", text);\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        a.name = \"chennp2008\";\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"name\\\":\\\"chennp2008\\\"}\", text);\r\n    }\r\n\r\n    public void test_3() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        Map<String, Object> map = new HashMap<String, Object>();\r\n        map.put(\"name\", \"chennp2008\");\r\n        serializer.write(map);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"name\\\":\\\"chennp2008\\\"}\", text);\r\n    }\r\n\r\n    public void test_4() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return false;\r\n                }\r\n                return true;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        Map<String, Object> map = new HashMap<String, Object>();\r\n        map.put(\"id\", 3);\r\n        map.put(\"name\", \"chennp2008\");\r\n        serializer.write(map);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"id\\\":3}\", text);\r\n    }\r\n\r\n    public static class A {\r\n\r\n        public boolean id;\r\n        public String  name;\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/PropertyFilter_byte.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.PropertyFilter;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\n\r\npublic class PropertyFilter_byte extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{}\", text);\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"id\".equals(name)) {\r\n                    Assert.assertTrue(value instanceof Byte);\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"id\\\":0}\", text);\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        a.setName(\"chennp2008\");\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"name\\\":\\\"chennp2008\\\"}\", text);\r\n    }\r\n\r\n    public void test_3() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        Map<String, Object> map = new HashMap<String, Object>();\r\n        map.put(\"name\", \"chennp2008\");\r\n        serializer.write(map);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"name\\\":\\\"chennp2008\\\"}\", text);\r\n    }\r\n\r\n    public void test_4() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return false;\r\n                }\r\n                return true;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        Map<String, Object> map = new HashMap<String, Object>();\r\n        map.put(\"id\", 3);\r\n        map.put(\"name\", \"chennp2008\");\r\n        serializer.write(map);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"id\\\":3}\", text);\r\n    }\r\n\r\n    public static class A {\r\n\r\n        private byte    id;\r\n        private String name;\r\n\r\n        public byte getId() {\r\n            return id;\r\n        }\r\n\r\n        public void setId(byte id) {\r\n            this.id = id;\r\n        }\r\n\r\n        public String getName() {\r\n            return name;\r\n        }\r\n\r\n        public void setName(String name) {\r\n            this.name = name;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/PropertyFilter_char.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.PropertyFilter;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\n\r\npublic class PropertyFilter_char extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{}\", text);\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"id\".equals(name)) {\r\n                    Assert.assertTrue(value instanceof Character);\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"id\\\":\\\"0\\\"}\", text);\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        a.setName(\"chennp2008\");\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"name\\\":\\\"chennp2008\\\"}\", text);\r\n    }\r\n\r\n    public void test_3() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        Map<String, Object> map = new HashMap<String, Object>();\r\n        map.put(\"name\", \"chennp2008\");\r\n        serializer.write(map);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"name\\\":\\\"chennp2008\\\"}\", text);\r\n    }\r\n\r\n    public void test_4() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return false;\r\n                }\r\n                return true;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        Map<String, Object> map = new HashMap<String, Object>();\r\n        map.put(\"id\", (char) '3');\r\n        map.put(\"name\", \"chennp2008\");\r\n        serializer.write(map);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"id\\\":\\\"3\\\"}\", text);\r\n    }\r\n\r\n    public static class A {\r\n\r\n        private char   id = '0';\r\n        private String name;\r\n\r\n        public char getId() {\r\n            return id;\r\n        }\r\n\r\n        public void setId(char id) {\r\n            this.id = id;\r\n        }\r\n\r\n        public String getName() {\r\n            return name;\r\n        }\r\n\r\n        public void setName(String name) {\r\n            this.name = name;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/PropertyFilter_double.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.PropertyFilter;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\n\r\npublic class PropertyFilter_double extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{}\", text);\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"id\".equals(name)) {\r\n                    Assert.assertTrue(value instanceof Double);\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"id\\\":0.0}\", text);\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        a.setName(\"chennp2008\");\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"name\\\":\\\"chennp2008\\\"}\", text);\r\n    }\r\n\r\n    public void test_3() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        Map<String, Object> map = new HashMap<String, Object>();\r\n        map.put(\"name\", \"chennp2008\");\r\n        serializer.write(map);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"name\\\":\\\"chennp2008\\\"}\", text);\r\n    }\r\n\r\n    public void test_4() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return false;\r\n                }\r\n                return true;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        Map<String, Object> map = new HashMap<String, Object>();\r\n        map.put(\"id\", 3);\r\n        map.put(\"name\", \"chennp2008\");\r\n        serializer.write(map);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"id\\\":3}\", text);\r\n    }\r\n\r\n    public static class A {\r\n\r\n        private double    id;\r\n        private String name;\r\n\r\n        public double getId() {\r\n            return id;\r\n        }\r\n\r\n        public void setId(double id) {\r\n            this.id = id;\r\n        }\r\n\r\n        public String getName() {\r\n            return name;\r\n        }\r\n\r\n        public void setName(String name) {\r\n            this.name = name;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/PropertyFilter_float.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.PropertyFilter;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\n\r\npublic class PropertyFilter_float extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{}\", text);\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"id\".equals(name)) {\r\n                    Assert.assertTrue(value instanceof Float);\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"id\\\":0.0}\", text);\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        a.setName(\"chennp2008\");\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"name\\\":\\\"chennp2008\\\"}\", text);\r\n    }\r\n\r\n    public void test_3() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        Map<String, Object> map = new HashMap<String, Object>();\r\n        map.put(\"name\", \"chennp2008\");\r\n        serializer.write(map);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"name\\\":\\\"chennp2008\\\"}\", text);\r\n    }\r\n\r\n    public void test_4() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return false;\r\n                }\r\n                return true;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        Map<String, Object> map = new HashMap<String, Object>();\r\n        map.put(\"id\", 3);\r\n        map.put(\"name\", \"chennp2008\");\r\n        serializer.write(map);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"id\\\":3}\", text);\r\n    }\r\n\r\n    public static class A {\r\n\r\n        private float    id;\r\n        private String name;\r\n\r\n        public float getId() {\r\n            return id;\r\n        }\r\n\r\n        public void setId(float id) {\r\n            this.id = id;\r\n        }\r\n\r\n        public String getName() {\r\n            return name;\r\n        }\r\n\r\n        public void setName(String name) {\r\n            this.name = name;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/PropertyFilter_int_field.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.PropertyFilter;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\n\r\npublic class PropertyFilter_int_field extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{}\", text);\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"id\".equals(name)) {\r\n                    Assert.assertTrue(value instanceof Integer);\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"id\\\":0}\", text);\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        a.name = \"chennp2008\";\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"name\\\":\\\"chennp2008\\\"}\", text);\r\n    }\r\n\r\n    public void test_3() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        Map<String, Object> map = new HashMap<String, Object>();\r\n        map.put(\"name\", \"chennp2008\");\r\n        serializer.write(map);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"name\\\":\\\"chennp2008\\\"}\", text);\r\n    }\r\n\r\n    public void test_4() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return false;\r\n                }\r\n                return true;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        Map<String, Object> map = new HashMap<String, Object>();\r\n        map.put(\"id\", 3);\r\n        map.put(\"name\", \"chennp2008\");\r\n        serializer.write(map);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"id\\\":3}\", text);\r\n    }\r\n\r\n    public static class A {\r\n\r\n        public int    id;\r\n        public String name;\r\n\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/PropertyFilter_long.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.PropertyFilter;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\n\r\npublic class PropertyFilter_long extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{}\", text);\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"id\".equals(name)) {\r\n                    Assert.assertTrue(value instanceof Long);\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"id\\\":0}\", text);\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        a.setName(\"chennp2008\");\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"name\\\":\\\"chennp2008\\\"}\", text);\r\n    }\r\n\r\n    public void test_3() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        Map<String, Object> map = new HashMap<String, Object>();\r\n        map.put(\"name\", \"chennp2008\");\r\n        serializer.write(map);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"name\\\":\\\"chennp2008\\\"}\", text);\r\n    }\r\n\r\n    public void test_4() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return false;\r\n                }\r\n                return true;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        Map<String, Object> map = new HashMap<String, Object>();\r\n        map.put(\"id\", 3);\r\n        map.put(\"name\", \"chennp2008\");\r\n        serializer.write(map);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"id\\\":3}\", text);\r\n    }\r\n\r\n    public static class A {\r\n\r\n        private long    id;\r\n        private String name;\r\n\r\n        public long getId() {\r\n            return id;\r\n        }\r\n\r\n        public void setId(long id) {\r\n            this.id = id;\r\n        }\r\n\r\n        public String getName() {\r\n            return name;\r\n        }\r\n\r\n        public void setName(String name) {\r\n            this.name = name;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/PropertyFilter_long_field.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.PropertyFilter;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\n\r\npublic class PropertyFilter_long_field extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{}\", text);\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"id\".equals(name)) {\r\n                    Assert.assertTrue(value instanceof Long);\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"id\\\":0}\", text);\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        a.name = \"chennp2008\";\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"name\\\":\\\"chennp2008\\\"}\", text);\r\n    }\r\n\r\n    public void test_3() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        Map<String, Object> map = new HashMap<String, Object>();\r\n        map.put(\"name\", \"chennp2008\");\r\n        serializer.write(map);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"name\\\":\\\"chennp2008\\\"}\", text);\r\n    }\r\n\r\n    public void test_4() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return false;\r\n                }\r\n                return true;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        Map<String, Object> map = new HashMap<String, Object>();\r\n        map.put(\"id\", 3);\r\n        map.put(\"name\", \"chennp2008\");\r\n        serializer.write(map);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"id\\\":3}\", text);\r\n    }\r\n\r\n    public static class A {\r\n\r\n        public long    id;\r\n        public String name;\r\n\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/PropertyFilter_short.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.PropertyFilter;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\n\r\npublic class PropertyFilter_short extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{}\", text);\r\n    }\r\n\r\n    public void test_1() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"id\".equals(name)) {\r\n                    Assert.assertTrue(value instanceof Short);\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"id\\\":0}\", text);\r\n    }\r\n\r\n    public void test_2() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        A a = new A();\r\n        a.setName(\"chennp2008\");\r\n        serializer.write(a);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"name\\\":\\\"chennp2008\\\"}\", text);\r\n    }\r\n\r\n    public void test_3() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        Map<String, Object> map = new HashMap<String, Object>();\r\n        map.put(\"name\", \"chennp2008\");\r\n        serializer.write(map);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"name\\\":\\\"chennp2008\\\"}\", text);\r\n    }\r\n\r\n    public void test_4() throws Exception {\r\n        PropertyFilter filter = new PropertyFilter() {\r\n\r\n            public boolean apply(Object source, String name, Object value) {\r\n                if (\"name\".equals(name)) {\r\n                    return false;\r\n                }\r\n                return true;\r\n            }\r\n        };\r\n\r\n        SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.getPropertyFilters().add(filter);\r\n\r\n        Map<String, Object> map = new HashMap<String, Object>();\r\n        map.put(\"id\", 3);\r\n        map.put(\"name\", \"chennp2008\");\r\n        serializer.write(map);\r\n\r\n        String text = out.toString();\r\n        Assert.assertEquals(\"{\\\"id\\\":3}\", text);\r\n    }\r\n\r\n    public static class A {\r\n\r\n        private short    id;\r\n        private String name;\r\n\r\n        public short getId() {\r\n            return id;\r\n        }\r\n\r\n        public void setId(short id) {\r\n            this.id = id;\r\n        }\r\n\r\n        public String getName() {\r\n            return name;\r\n        }\r\n\r\n        public void setName(String name) {\r\n            this.name = name;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/PropertyPathTest.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport org.junit.Assert;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.PropertyPreFilter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\n/**\n * @author wenshao\n */\npublic class PropertyPathTest extends TestCase {\n\n    public void test_path() throws Exception {\n        A a = new A();\n        a.setId(123);\n\n        B b = new B();\n        b.setId(234);\n\n        C c = new C();\n        c.setId(345);\n\n        D d = new D();\n        d.setId(456);\n\n        a.setB(b);\n        b.setC(c);\n        b.setD(d);\n\n        Assert.assertEquals(\"{\\\"b\\\":{\\\"c\\\":{\\\"id\\\":345},\\\"d\\\":{\\\"id\\\":456},\\\"id\\\":234},\\\"id\\\":123}\",\n                            JSON.toJSONString(a));\n        Assert.assertEquals(\"{\\\"b\\\":{\\\"c\\\":{\\\"id\\\":345},\\\"id\\\":234},\\\"id\\\":123}\",\n                            JSON.toJSONString(a, new MyPropertyPreFilter()));\n        Assert.assertEquals(\"{'b':{'c':{'id':345},'id':234},'id':123}\",\n                            JSON.toJSONString(a, new MyPropertyPreFilter(), SerializerFeature.UseSingleQuotes));\n    }\n\n    public static class MyPropertyPreFilter implements PropertyPreFilter {\n\n        public boolean apply(JSONSerializer serializer, Object source, String name) {\n            String path = serializer.getContext().toString() + \".\" + name;\n\n            if (path.startsWith(\"$.b.d\")) {\n                return false;\n            }\n\n            return true;\n        }\n\n    }\n\n    public static class A {\n\n        private int id;\n        private B   b;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public B getB() {\n            return b;\n        }\n\n        public void setB(B b) {\n            this.b = b;\n        }\n\n    }\n\n    public static class B {\n\n        private int id;\n        private C   c;\n        private D   d;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public C getC() {\n            return c;\n        }\n\n        public void setC(C c) {\n            this.c = c;\n        }\n\n        public D getD() {\n            return d;\n        }\n\n        public void setD(D d) {\n            this.d = d;\n        }\n\n    }\n\n    public static class C {\n\n        private int    id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n\n    public static class D {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/PropertyPathTest2.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.PropertyPreFilter;\n\npublic class PropertyPathTest2 extends TestCase {\n\n    public void test_path() throws Exception {\n        Person p1 = new Person();\n        p1.setId(100);\n        \n        Person c1 = new Person();\n        c1.setId(1000);\n        \n        Person c2 = new Person();\n        c2.setId(2000);\n        \n        p1.getChildren().add(c1);\n        p1.getChildren().add(c2);\n        \n        Assert.assertEquals(\"{\\\"children\\\":[{\\\"id\\\":1000},{\\\"id\\\":2000}],\\\"id\\\":100}\", JSON.toJSONString(p1, new MyPropertyPreFilter()));\n    }\n\n    public static class MyPropertyPreFilter implements PropertyPreFilter {\n\n        public boolean apply(JSONSerializer serializer, Object source, String name) {\n            String path = serializer.getContext().toString() + \".\" + name;\n\n            if (path.endsWith(\"].children\")) {\n                return false;\n            }\n\n            return true;\n        }\n\n    }\n\n    public static class Person {\n\n        private int          id;\n\n        private List<Person> children = new ArrayList<Person>();\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public List<Person> getChildren() {\n            return children;\n        }\n\n        public void setChildren(List<Person> children) {\n            this.children = children;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/PropertyPathTest3.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.PropertyPreFilter;\nimport com.alibaba.fastjson.serializer.SerialContext;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\npublic class PropertyPathTest3 extends TestCase {\n\n\t/** 测试只输出子集合中的特定属性 */\n\tpublic void test_path() throws Exception {\n\t\tPerson p1 = new Person();\n\t\tp1.setId(100);\n\n\t\tPerson c1 = new Person();\n\t\tc1.setId(1000);\n\n\t\tPerson c2 = new Person();\n\t\tc2.setId(2000);\n\n\t\tp1.getChildren().add(c1);\n\t\tp1.getChildren().add(c2);\n\t\t//只输出children.id以及根上的id\n\t\tString s = JSON.toJSONString(p1, new MyPropertyPreFilter(new String[] {\"children.id\", \"id\"}));\n\n\t\tAssert.assertEquals(\"{\\\"children\\\":[{\\\"id\\\":1000},{\\\"id\\\":2000}],\\\"id\\\":100}\", s);\n\t}\n\n\t/** 测试只输出子字段map中的特定属性 */\n\tpublic void test_path2() throws Exception {\n\t\tPerson2 p1 = new Person2();\n\t\tp1.setId(1);\n\t\tMap<String, String> infoMap = new HashMap<String, String>();\n\t\tinfoMap.put(\"name\", \"李三\");\n\t\tinfoMap.put(\"height\", \"168\");\n\t\tp1.setInfoMap(infoMap);\n\t\t//只输出infoMap.name\n\t\tString s = JSON.toJSONString(p1, new MyPropertyPreFilter(new String[] {\"infoMap.name\"}));\n\t\tAssert.assertEquals(\"{\\\"infoMap\\\":{\\\"name\\\":\\\"李三\\\"}}\", s);\n\t}\n\n\tpublic static class MyPropertyPreFilter implements PropertyPreFilter {\n\t\tString[] onlyProperties;\n\n\t\tpublic MyPropertyPreFilter(String[] onlyProperties) {\n\t\t\tthis.onlyProperties = onlyProperties;\n\t\t}\n\n\t\tprivate static boolean containInclude(String[] ss, String s) {\n\t\t\tif(ss == null || ss.length == 0 || s == null)\n\t\t\t\treturn false;\n\t\t\tfor(String st : ss)\n\t\t\t\tif(st.startsWith(s))\n\t\t\t\t\treturn true;\n\t\t\treturn false;\n\t\t}\n\n\t\tpublic boolean apply(JSONSerializer serializer, Object source, String name) {\n\t\t\tSerialContext nowContext = new SerialContext(serializer.getContext(), source, name, 0, 0);\n\t\t\tString nowPath = getLinkedPath(nowContext);\n\t\t\tSystem.out.println(\"path->\" + nowPath);\n\t\t\t//只输出children.id\n\t\t\treturn containInclude(onlyProperties, nowPath);\n\t\t}\n\n\t}\n\n\t/** 输出结果 类似a.b.c.d等格式，忽略[] */\n\tprivate static String getLinkedPath(SerialContext serialContext) {\n\t\t//这里有点bad smell，即要考虑parent为null,又要考虑fieldName为null，且对collection判断只能从fieldName，而不能从object入手\n\t\tboolean isCollection = serialContext.fieldName instanceof Integer;\n\t\tboolean isFieldNameNull = serialContext.fieldName == null;\n\t\tif(serialContext.parent == null)\n\t\t\treturn isCollection ? \"\" : isFieldNameNull ? \"\" : String.valueOf(serialContext.fieldName);\n\t\tString parentLinkedPath = getLinkedPath(serialContext.parent);\n\t\tif(isCollection || isFieldNameNull)\n\t\t\treturn parentLinkedPath;\n\t\treturn\n\t\t\tparentLinkedPath.length() == 0 ? String.valueOf(serialContext.fieldName) :\n\t\t\t\tparentLinkedPath + \".\" + serialContext.fieldName;\n\t}\n\n\tpublic static class Person {\n\n\t\tprivate int id;\n\t\tprivate int id2;\n\n\t\tprivate List<Person> children = new ArrayList<Person>();\n\n\t\tpublic int getId2() {\n\t\t\treturn id2;\n\t\t}\n\n\t\tpublic void setId2(int id2) {\n\t\t\tthis.id2 = id2;\n\t\t}\n\n\t\tpublic int getId() {\n\t\t\treturn id;\n\t\t}\n\n\t\tpublic void setId(int id) {\n\t\t\tthis.id = id;\n\t\t}\n\n\t\tpublic List<Person> getChildren() {\n\t\t\treturn children;\n\t\t}\n\n\t\tpublic void setChildren(List<Person> children) {\n\t\t\tthis.children = children;\n\t\t}\n\n\t}\n\n\tpublic static class Person2 {\n\t\tprivate int id;\n\t\tprivate Map<String, String> infoMap;\n\n\t\tpublic int getId() {\n\t\t\treturn id;\n\t\t}\n\n\t\tpublic void setId(int id) {\n\t\t\tthis.id = id;\n\t\t}\n\n\t\tpublic Map<String, String> getInfoMap() {\n\t\t\treturn infoMap;\n\t\t}\n\n\t\tpublic void setInfoMap(Map<String, String> infoMap) {\n\t\t\tthis.infoMap = infoMap;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/PropertyPreFilterClassLevelTest.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SimplePropertyPreFilter;\n\nimport junit.framework.TestCase;\n\npublic class PropertyPreFilterClassLevelTest extends TestCase {\n    public void test_0() throws Exception {\n        Object[] array = {new ModelA(), new ModelB() };\n        \n        SerializeConfig config = new SerializeConfig();\n        config.addFilter(ModelA.class, // \n                         new SimplePropertyPreFilter(\"name\"));\n        config.addFilter(ModelB.class, // \n                         new SimplePropertyPreFilter(\"id\"));\n        String text2 = JSON.toJSONString(array, config);\n        Assert.assertEquals(\"[{},{\\\"id\\\":1002}]\", text2);\n        \n        String text = JSON.toJSONString(array);\n        Assert.assertEquals(\"[{\\\"id\\\":1001},{\\\"id\\\":1002}]\", text);\n\n        \n    }\n    \n    public static class ModelA {\n        public int id = 1001;\n    }\n    \n    public static class ModelB {\n        public int id = 1002;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/PropertyPreFilterClassLevelTest_private.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SimplePropertyPreFilter;\n\nimport junit.framework.TestCase;\n\npublic class PropertyPreFilterClassLevelTest_private extends TestCase {\n    public void test_0() throws Exception {\n        Object[] array = {new ModelA(), new ModelB() };\n        \n        SerializeConfig config = new SerializeConfig();\n        config.addFilter(ModelA.class, // \n                         new SimplePropertyPreFilter(\"name\"));\n        config.addFilter(ModelB.class, // \n                         new SimplePropertyPreFilter(\"id\"));\n        String text2 = JSON.toJSONString(array, config);\n        Assert.assertEquals(\"[{},{\\\"id\\\":1002}]\", text2);\n        \n        String text = JSON.toJSONString(array);\n        Assert.assertEquals(\"[{\\\"id\\\":1001},{\\\"id\\\":1002}]\", text);\n\n        \n    }\n    \n    private static class ModelA {\n        public int id = 1001;\n    }\n    \n    private static class ModelB {\n        public int id = 1002;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/PropertyPrefFilterTest_IntegerKey.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.PropertyPreFilter;\n\nimport junit.framework.TestCase;\n\npublic class PropertyPrefFilterTest_IntegerKey extends TestCase {\n\n    public void test_namefilter() throws Exception {\n        PropertyPreFilter filter = new PropertyPreFilter() {\n\n            public boolean apply(JSONSerializer serializer, Object object, String name) {\n                return name.equals(\"1001\");\n            }\n\n        };\n\n\n        Map map = new HashMap();\n        map.put(1001, 0);\n        map.put(1002, 1);\n        \n        String text = JSON.toJSONString(map, filter);\n\n        Assert.assertEquals(\"{1001:0}\", text);\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/ValueClassLevelTest.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.ValueFilter;\n\nimport junit.framework.TestCase;\n\npublic class ValueClassLevelTest extends TestCase {\n\n    public void test_0() throws Exception {\n        Object[] array = { new ModelA(), new ModelB() };\n\n        SerializeConfig config = new SerializeConfig();\n        config.addFilter(ModelA.class, //\n                         new ValueFilter() {\n\n                             @Override\n                             public Object process(Object object, String name, Object value) {\n                                 return 30001;\n                             }\n                         });\n        config.addFilter(ModelB.class, //\n                         new ValueFilter() {\n\n                             @Override\n                             public Object process(Object object, String name, Object value) {\n                                 return 20001;\n                             }\n                         });\n        String text2 = JSON.toJSONString(array, config);\n        Assert.assertEquals(\"[{\\\"id\\\":30001},{\\\"id\\\":20001}]\", text2);\n\n        String text = JSON.toJSONString(array);\n        Assert.assertEquals(\"[{\\\"id\\\":1001},{\\\"id\\\":1002}]\", text);\n\n    }\n\n    public static class ModelA {\n\n        public int id = 1001;\n    }\n\n    public static class ModelB {\n\n        public int id = 1002;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/ValueClassLevelTest_private.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.ValueFilter;\n\nimport junit.framework.TestCase;\n\npublic class ValueClassLevelTest_private extends TestCase {\n\n    public void test_0() throws Exception {\n        Object[] array = { new ModelA(), new ModelB() };\n\n        SerializeConfig config = new SerializeConfig();\n        config.addFilter(ModelA.class, //\n                         new ValueFilter() {\n\n                             @Override\n                             public Object process(Object object, String name, Object value) {\n                                 return 30001;\n                             }\n                         });\n        config.addFilter(ModelB.class, //\n                         new ValueFilter() {\n\n                             @Override\n                             public Object process(Object object, String name, Object value) {\n                                 return 20001;\n                             }\n                         });\n        String text2 = JSON.toJSONString(array, config);\n        Assert.assertEquals(\"[{\\\"id\\\":30001},{\\\"id\\\":20001}]\", text2);\n\n        String text = JSON.toJSONString(array);\n        Assert.assertEquals(\"[{\\\"id\\\":1001},{\\\"id\\\":1002}]\", text);\n\n    }\n\n    private static class ModelA {\n\n        public int id = 1001;\n    }\n\n    private static class ModelB {\n\n        public int id = 1002;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/ValueFilterTest.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.ValueFilter;\nimport com.alibaba.json.bvt.serializer.filters.PropertyFilterTest.A;\n\npublic class ValueFilterTest extends TestCase {\n\n    public void test_valuefilter() throws Exception {\n        ValueFilter filter = new ValueFilter() {\n\n            public Object process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"AAA\";\n                }\n\n                return value;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getValueFilters().add(filter);\n\n        A a = new A();\n        serializer.write(a);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"id\\\":\\\"AAA\\\"}\", text);\n    }\n    \n    public void test_toJSONString() throws Exception {\n        ValueFilter filter = new ValueFilter() {\n\n            public Object process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"AAA\";\n                }\n\n                return value;\n            }\n\n        };\n        \n        Assert.assertEquals(\"{\\\"id\\\":\\\"AAA\\\"}\", JSON.toJSONString(new A(), filter));\n    }\n\n    public void test_valuefilter_1() throws Exception {\n        ValueFilter filter = new ValueFilter() {\n\n            public Object process(Object source, String name, Object value) {\n                if (name.equals(\"name\")) {\n                    return \"AAA\";\n                }\n\n                return value;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getValueFilters().add(filter);\n\n        A a = new A();\n        serializer.write(a);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"id\\\":0,\\\"name\\\":\\\"AAA\\\"}\", text);\n    }\n\n    public void test_valuefilter_2() throws Exception {\n        ValueFilter filter = new ValueFilter() {\n\n            public Object process(Object source, String name, Object value) {\n                if (name.equals(\"name\")) {\n                    return \"AAA\";\n                }\n\n                return value;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getValueFilters().add(filter);\n\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"name\", null);\n        serializer.write(map);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"name\\\":\\\"AAA\\\"}\", text);\n    }\n\n    public void test_valuefilter_3() throws Exception {\n        ValueFilter filter = new ValueFilter() {\n\n            public Object process(Object source, String name, Object value) {\n                if (name.equals(\"name\")) {\n                    return null;\n                }\n\n                return value;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getValueFilters().add(filter);\n\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"name\", \"AA\");\n        serializer.write(map);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{}\", text);\n    }\n\n    public static class Bean {\n\n        private int    id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/ValueFilterTest_IntegerKey.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.ValueFilter;\n\nimport junit.framework.TestCase;\n\npublic class ValueFilterTest_IntegerKey extends TestCase {\n\n    public void test_namefilter() throws Exception {\n        ValueFilter filter = new ValueFilter() {\n\n            public Object process(Object source, String name, Object value) {\n                if (name.equals(\"1001\")) {\n                    return \"wenshao\";\n                }\n\n                return value;\n            }\n\n        };\n\n\n        Map map = new HashMap();\n        map.put(1001, 0);\n        \n        String text = JSON.toJSONString(map, filter);\n\n        Assert.assertEquals(\"{1001:\\\"wenshao\\\"}\", text);\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/ValueFilterTest_field.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.ValueFilter;\nimport com.alibaba.json.bvt.serializer.filters.PropertyFilterTest.A;\n\npublic class ValueFilterTest_field extends TestCase {\n\n    public void test_valuefilter() throws Exception {\n        ValueFilter filter = new ValueFilter() {\n\n            public Object process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"AAA\";\n                }\n\n                return value;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getValueFilters().add(filter);\n\n        A a = new A();\n        serializer.write(a);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"id\\\":\\\"AAA\\\"}\", text);\n    }\n    \n    public void test_toJSONString() throws Exception {\n        ValueFilter filter = new ValueFilter() {\n\n            public Object process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"AAA\";\n                }\n\n                return value;\n            }\n\n        };\n        \n        Assert.assertEquals(\"{\\\"id\\\":\\\"AAA\\\"}\", JSON.toJSONString(new A(), filter));\n    }\n\n    public void test_valuefilter_1() throws Exception {\n        ValueFilter filter = new ValueFilter() {\n\n            public Object process(Object source, String name, Object value) {\n                if (name.equals(\"name\")) {\n                    return \"AAA\";\n                }\n\n                return value;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getValueFilters().add(filter);\n\n        A a = new A();\n        serializer.write(a);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"id\\\":0,\\\"name\\\":\\\"AAA\\\"}\", text);\n    }\n\n    public void test_valuefilter_2() throws Exception {\n        ValueFilter filter = new ValueFilter() {\n\n            public Object process(Object source, String name, Object value) {\n                if (name.equals(\"name\")) {\n                    return \"AAA\";\n                }\n\n                return value;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getValueFilters().add(filter);\n\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"name\", null);\n        serializer.write(map);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"name\\\":\\\"AAA\\\"}\", text);\n    }\n\n    public void test_valuefilter_3() throws Exception {\n        ValueFilter filter = new ValueFilter() {\n\n            public Object process(Object source, String name, Object value) {\n                if (name.equals(\"name\")) {\n                    return null;\n                }\n\n                return value;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getValueFilters().add(filter);\n\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"name\", \"AA\");\n        serializer.write(map);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{}\", text);\n    }\n\n    public static class Bean {\n\n        public int    id;\n        public String name;\n\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/ValueFilterTest_field_boolean.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.ValueFilter;\n\npublic class ValueFilterTest_field_boolean extends TestCase {\n\n    public void test_valuefilter() throws Exception {\n        ValueFilter filter = new ValueFilter() {\n\n            public Object process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"AAA\";\n                }\n\n                return value;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getValueFilters().add(filter);\n\n        Bean a = new Bean();\n        serializer.write(a);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"id\\\":\\\"AAA\\\"}\", text);\n    }\n    \n    public void test_toJSONString() throws Exception {\n        ValueFilter filter = new ValueFilter() {\n\n            public Object process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"AAA\";\n                }\n\n                return value;\n            }\n\n        };\n        \n        Assert.assertEquals(\"{\\\"id\\\":\\\"AAA\\\"}\", JSON.toJSONString(new Bean(), filter));\n    }\n\n    public void test_valuefilter_1() throws Exception {\n        ValueFilter filter = new ValueFilter() {\n\n            public Object process(Object source, String name, Object value) {\n                if (name.equals(\"name\")) {\n                    return \"AAA\";\n                }\n\n                return value;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getValueFilters().add(filter);\n\n        Bean a = new Bean();\n        serializer.write(a);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"id\\\":false,\\\"name\\\":\\\"AAA\\\"}\", text);\n    }\n\n    public void test_valuefilter_2() throws Exception {\n        ValueFilter filter = new ValueFilter() {\n\n            public Object process(Object source, String name, Object value) {\n                if (name.equals(\"name\")) {\n                    return \"AAA\";\n                }\n\n                return value;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getValueFilters().add(filter);\n\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"name\", null);\n        serializer.write(map);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"name\\\":\\\"AAA\\\"}\", text);\n    }\n\n    public void test_valuefilter_3() throws Exception {\n        ValueFilter filter = new ValueFilter() {\n\n            public Object process(Object source, String name, Object value) {\n                if (name.equals(\"name\")) {\n                    return null;\n                }\n\n                return value;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getValueFilters().add(filter);\n\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"name\", \"AA\");\n        serializer.write(map);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{}\", text);\n    }\n\n    public static class Bean {\n\n        public boolean    id;\n        public String name;\n\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/ValueFilterTest_field_int.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.ValueFilter;\n\nimport junit.framework.TestCase;\n\npublic class ValueFilterTest_field_int extends TestCase {\n\n    public void test_valuefilter() throws Exception {\n        ValueFilter filter = new ValueFilter() {\n\n            public Object process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"AAA\";\n                }\n\n                return value;\n            }\n\n        };\n\n\n        Bean a = new Bean();\n        String text = JSON.toJSONString(a, filter);\n\n        Assert.assertEquals(\"{\\\"id\\\":\\\"AAA\\\"}\", text);\n    }\n\n    public static class Bean {\n\n        public int    id;\n        public String name;\n\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/filters/ValueFilterTest_field_long.java",
    "content": "package com.alibaba.json.bvt.serializer.filters;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.ValueFilter;\n\npublic class ValueFilterTest_field_long extends TestCase {\n\n    public void test_valuefilter() throws Exception {\n        ValueFilter filter = new ValueFilter() {\n\n            public Object process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"AAA\";\n                }\n\n                return value;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getValueFilters().add(filter);\n\n        Bean a = new Bean();\n        serializer.write(a);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"id\\\":\\\"AAA\\\"}\", text);\n    }\n    \n    public void test_toJSONString() throws Exception {\n        ValueFilter filter = new ValueFilter() {\n\n            public Object process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"AAA\";\n                }\n\n                return value;\n            }\n\n        };\n        \n        Assert.assertEquals(\"{\\\"id\\\":\\\"AAA\\\"}\", JSON.toJSONString(new Bean(), filter));\n    }\n\n    public void test_valuefilter_1() throws Exception {\n        ValueFilter filter = new ValueFilter() {\n\n            public Object process(Object source, String name, Object value) {\n                if (name.equals(\"name\")) {\n                    return \"AAA\";\n                }\n\n                return value;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getValueFilters().add(filter);\n\n        Bean a = new Bean();\n        serializer.write(a);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"id\\\":0,\\\"name\\\":\\\"AAA\\\"}\", text);\n    }\n\n    public void test_valuefilter_2() throws Exception {\n        ValueFilter filter = new ValueFilter() {\n\n            public Object process(Object source, String name, Object value) {\n                if (name.equals(\"name\")) {\n                    return \"AAA\";\n                }\n\n                return value;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getValueFilters().add(filter);\n\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"name\", null);\n        serializer.write(map);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"name\\\":\\\"AAA\\\"}\", text);\n    }\n\n    public void test_valuefilter_3() throws Exception {\n        ValueFilter filter = new ValueFilter() {\n\n            public Object process(Object source, String name, Object value) {\n                if (name.equals(\"name\")) {\n                    return null;\n                }\n\n                return value;\n            }\n\n        };\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getValueFilters().add(filter);\n\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"name\", \"AA\");\n        serializer.write(map);\n\n        String text = out.toString();\n        Assert.assertEquals(\"{}\", text);\n    }\n\n    public static class Bean {\n\n        public long    id;\n        public String name;\n\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/label/LabelIncludeTest.java",
    "content": "package com.alibaba.json.bvt.serializer.label;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.Labels;\n\nimport junit.framework.TestCase;\n\npublic class LabelIncludeTest extends TestCase {\n\n    public void test_includes() throws Exception {\n        VO vo = new VO();\n        vo.setId(123);\n        vo.setName(\"wenshao\");\n        vo.setPassword(\"ooxxx\");\n        \n        String text = JSON.toJSONString(vo, Labels.includes(\"normal\"));\n        Assert.assertEquals(\"{\\\"id\\\":123,\\\"name\\\":\\\"wenshao\\\"}\", text);\n    }\n\n    public static class VO {\n\n        private int    id;\n        private String name;\n        private String password;\n\n        @JSONField(label = \"normal\")\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        @JSONField(label = \"normal\")\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        @JSONField(label = \"secret\")\n        public String getPassword() {\n            return password;\n        }\n\n        public void setPassword(String password) {\n            this.password = password;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/label/LabelIncludeTest2.java",
    "content": "package com.alibaba.json.bvt.serializer.label;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.Labels;\n\nimport junit.framework.TestCase;\n\npublic class LabelIncludeTest2 extends TestCase {\n\n    public void test_includes() throws Exception {\n        VO vo = new VO();\n        vo.setId(123);\n        vo.setName(\"wenshao\");\n        vo.setPassword(\"ooxxx\");\n        \n        String text = JSON.toJSONString(vo, Labels.includes(\"normal\"));\n        Assert.assertEquals(\"{\\\"id\\\":123,\\\"name\\\":\\\"wenshao\\\"}\", text);\n    }\n\n    private static class VO {\n\n        private int    id;\n        private String name;\n        private String password;\n\n        @JSONField(label = \"normal\")\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        @JSONField(label = \"normal\")\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        @JSONField(label = \"secret\")\n        public String getPassword() {\n            return password;\n        }\n\n        public void setPassword(String password) {\n            this.password = password;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/label/LabelIncludeTest3.java",
    "content": "package com.alibaba.json.bvt.serializer.label;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.Labels;\n\nimport junit.framework.TestCase;\n\npublic class LabelIncludeTest3 extends TestCase {\n\n    public void test_includes() throws Exception {\n        VO vo = new VO();\n        vo.setId(123);\n        vo.setName(\"wenshao\");\n        vo.setPassword(\"ooxxx\");\n\n        String text = JSON.toJSONString(vo, Labels.includes(\"normal\"));\n        Assert.assertEquals(\"{\\\"id\\\":123,\\\"name\\\":\\\"wenshao\\\"}\", text);\n    }\n    \n    public void test_excludes() throws Exception {\n        VO vo = new VO();\n        vo.setId(123);\n        vo.setName(\"wenshao\");\n        vo.setPassword(\"ooxxx\");\n        vo.setInfo(\"fofo\");\n\n        String text = JSON.toJSONString(vo, Labels.excludes(\"secret\"));\n        Assert.assertEquals(\"{\\\"id\\\":123,\\\"info\\\":\\\"fofo\\\",\\\"name\\\":\\\"wenshao\\\"}\", text);\n    }\n\n    public static class VO {\n\n        private int    id;\n        private String name;\n        private String password;\n        private String info;\n\n        @JSONField(label = \"normal\")\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        @JSONField(label = \"normal\")\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        @JSONField(label = \"secret\")\n        public String getPassword() {\n            return password;\n        }\n\n        public void setPassword(String password) {\n            this.password = password;\n        }\n\n        public String getInfo() {\n            return info;\n        }\n\n        public void setInfo(String info) {\n            this.info = info;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/prettyFormat/ArrayListFieldTest.java",
    "content": "package com.alibaba.json.bvt.serializer.prettyFormat;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class ArrayListFieldTest extends TestCase {\n\n    public void test_prettyFormat() throws Exception {\n        VO vo = new VO();\n        vo.getEntries().add(new Entity(123, \"aaa\"));\n        vo.getEntries().add(new Entity(234, \"bbb\"));\n        vo.getEntries().add(new Entity(3, \"ccc\"));\n        \n        \n        String text = JSON.toJSONString(vo, SerializerFeature.PrettyFormat, SerializerFeature.UseSingleQuotes);\n        System.out.println(text);\n    }\n\n    public static class VO {\n\n        private final List<Entity> entries = new ArrayList<Entity>();\n\n        public List<Entity> getEntries() {\n            return entries;\n        }\n\n    }\n\n    public static class Entity {\n\n        private int    id;\n        private String name;\n\n        public Entity(){\n\n        }\n\n        public Entity(int id, String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/prettyFormat/ArrayListTest.java",
    "content": "package com.alibaba.json.bvt.serializer.prettyFormat;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class ArrayListTest extends TestCase {\n\n    public void test_array() throws Exception {\n        List<Entity> list = new ArrayList<Entity>();\n        list.add(new Entity(123, \"aaa\"));\n        list.add(new Entity(234, \"bbb\"));\n        list.add(new Entity(3, \"ccc\"));\n        String text = JSON.toJSONString(list, SerializerFeature.PrettyFormat, SerializerFeature.UseSingleQuotes);\n        Assert.assertEquals(\"[\\n\\t{\\n\\t\\t'id':123,\\n\\t\\t'name':'aaa'\\n\\t},\\n\\t{\\n\\t\\t'id':234,\\n\\t\\t'name':'bbb'\\n\\t},\\n\\t{\\n\\t\\t'id':3,\\n\\t\\t'name':'ccc'\\n\\t}\\n]\", text);\n    }\n\n    public static class Entity {\n\n        private int    id;\n        private String name;\n\n        public Entity(){\n\n        }\n\n        public Entity(int id, String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/stream/StreamWriterTest_writeArray.java",
    "content": "package com.alibaba.json.bvt.serializer.stream;\n\nimport java.io.StringWriter;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\npublic class StreamWriterTest_writeArray extends TestCase {\n\n    public void test_0() throws Exception {\n        StringWriter out = new StringWriter();\n\n        SerializeWriter writer = new SerializeWriter(out, 10);\n        Assert.assertEquals(10, writer.getBufferLength());\n\n        for (char ch = 'a'; ch <= 'z'; ++ch) {\n            char[] chars = new char[] { ch, ch, ch };\n            writer.write(chars, 0, chars.length);\n        }\n        writer.close();\n\n        String text = out.toString();\n        Assert.assertEquals(26 * 3, text.length());\n\n        for (int i = 0; i < 26; ++i) {\n            Assert.assertEquals(text.charAt(i * 3), (char) ('a' + i));\n            Assert.assertEquals(text.charAt(i * 3 + 1), (char) ('a' + i));\n            Assert.assertEquals(text.charAt(i * 3 + 2), (char) ('a' + i));\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/stream/StreamWriterTest_writeArray2.java",
    "content": "package com.alibaba.json.bvt.serializer.stream;\n\nimport java.io.StringWriter;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\npublic class StreamWriterTest_writeArray2 extends TestCase {\n\n    public void test_0() throws Exception {\n        StringWriter out = new StringWriter();\n\n        SerializeWriter writer = new SerializeWriter(out, 10);\n        Assert.assertEquals(10, writer.getBufferLength());\n\n        int blockSize = 21;\n        for (char ch = 'a'; ch <= 'z'; ++ch) {\n            char[] chars = new char[blockSize];\n            for (int i = 0; i < blockSize; ++i) {\n                chars[i] = ch;\n            }\n            writer.write(chars, 0, chars.length);\n        }\n        writer.close();\n\n        String text = out.toString();\n        Assert.assertEquals(26 * blockSize, text.length());\n\n        for (int i = 0; i < 26; ++i) {\n            for (int j = 0; j < blockSize; ++j) {\n                Assert.assertEquals(text.charAt(i * blockSize + j), (char) ('a' + i));\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/stream/StreamWriterTest_writeBytes.java",
    "content": "package com.alibaba.json.bvt.serializer.stream;\n\nimport java.io.StringWriter;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\n\npublic class StreamWriterTest_writeBytes extends TestCase {\n    public void test_0() throws Exception {\n        StringWriter out = new StringWriter();\n        \n        byte[] bytes = \"民主\".getBytes(\"GB2312\");\n        SerializeWriter writer = new SerializeWriter(out, 10);\n        Assert.assertEquals(10, writer.getBufferLength());\n        \n        writer.writeByteArray(bytes);\n        writer.close();\n        \n        String text = out.toString();\n        byte[] result = JSON.parseObject(text, byte[].class);\n        Assert.assertEquals(\"民主\", new String(result, \"GB2312\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/stream/StreamWriterTest_writeBytes1.java",
    "content": "package com.alibaba.json.bvt.serializer.stream;\n\nimport java.io.StringWriter;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\n\npublic class StreamWriterTest_writeBytes1 extends TestCase {\n    public void test_0() throws Exception {\n        StringWriter out = new StringWriter();\n        \n        byte[] bytes = \"民主共和君主宪\".getBytes(\"GB2312\");\n        SerializeWriter writer = new SerializeWriter(out, 10);\n        Assert.assertEquals(10, writer.getBufferLength());\n        \n        writer.writeByteArray(bytes);\n        writer.close();\n        \n        String text = out.toString();\n        byte[] result = JSON.parseObject(text, byte[].class);\n        Assert.assertEquals(\"民主共和君主宪\", new String(result, \"GB2312\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/stream/StreamWriterTest_writeChar.java",
    "content": "package com.alibaba.json.bvt.serializer.stream;\n\nimport java.io.StringWriter;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\n\npublic class StreamWriterTest_writeChar extends TestCase {\n    public void test_0() throws Exception {\n        StringWriter out = new StringWriter();\n        \n        SerializeWriter writer = new SerializeWriter(out, 10);\n        Assert.assertEquals(10, writer.getBufferLength());\n        \n        for (char ch = 'a'; ch <= 'z'; ++ch) {\n            writer.write(ch);\n        }\n        writer.close();\n        \n        String text = out.toString();\n        Assert.assertEquals(26, text.length());\n        \n        for (int i = 0; i < 26; ++i) {\n            Assert.assertEquals(text.charAt(i), (char)('a' + i));\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/stream/StreamWriterTest_writeChar1.java",
    "content": "package com.alibaba.json.bvt.serializer.stream;\n\nimport java.io.StringWriter;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\n\npublic class StreamWriterTest_writeChar1 extends TestCase {\n    public void test_0() throws Exception {\n        StringWriter out = new StringWriter();\n        \n        SerializeWriter writer = new SerializeWriter(out, 10);\n        Assert.assertEquals(10, writer.getBufferLength());\n        \n        for (int ch = 'a'; ch <= 'z'; ++ch) {\n            writer.write(ch);\n        }\n        writer.close();\n        \n        String text = out.toString();\n        Assert.assertEquals(26, text.length());\n        \n        for (int i = 0; i < 26; ++i) {\n            Assert.assertEquals(text.charAt(i), (char)('a' + i));\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/stream/StreamWriterTest_writeFieldValue.java",
    "content": "package com.alibaba.json.bvt.serializer.stream;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport java.io.StringWriter;\n\n\npublic class StreamWriterTest_writeFieldValue extends TestCase {\n    public void test_0() throws Exception {\n        StringWriter out = new StringWriter();\n        \n        SerializeWriter writer = new SerializeWriter(out, 10);\n        Assert.assertEquals(10, writer.getBufferLength());\n        \n        writer.config(SerializerFeature.QuoteFieldNames, true);\n        writer.writeFieldValue(',', \"abcde01245abcde\", true);\n        writer.close();\n        \n        String text = out.toString();\n        Assert.assertEquals(\",\\\"abcde01245abcde\\\":true\", text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/stream/StreamWriterTest_writeFieldValue_bool.java",
    "content": "package com.alibaba.json.bvt.serializer.stream;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport java.io.StringWriter;\n\n\npublic class StreamWriterTest_writeFieldValue_bool extends TestCase {\n    public void test_0() throws Exception {\n        StringWriter out = new StringWriter();\n        \n        SerializeWriter writer = new SerializeWriter(out, 10);\n        Assert.assertEquals(10, writer.getBufferLength());\n        \n        writer.writeFieldValue(',', \"abcde01245abcde\", true);\n        writer.close();\n        \n        String text = out.toString();\n        Assert.assertEquals(\",abcde01245abcde:true\", text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/stream/StreamWriterTest_writeFieldValue_int.java",
    "content": "package com.alibaba.json.bvt.serializer.stream;\n\nimport java.io.StringWriter;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\n\npublic class StreamWriterTest_writeFieldValue_int extends TestCase {\n    public void test_0() throws Exception {\n        StringWriter out = new StringWriter();\n        \n        SerializeWriter writer = new SerializeWriter(out, 10);\n        writer.config(SerializerFeature.QuoteFieldNames, true);\n        Assert.assertEquals(10, writer.getBufferLength());\n        \n        writer.writeFieldValue(',', \"abcde01245abcde\", 123);\n        writer.close();\n        \n        String text = out.toString();\n        Assert.assertEquals(\",\\\"abcde01245abcde\\\":123\", text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/stream/StreamWriterTest_writeFieldValue_int_1.java",
    "content": "package com.alibaba.json.bvt.serializer.stream;\n\nimport java.io.StringWriter;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\n\npublic class StreamWriterTest_writeFieldValue_int_1 extends TestCase {\n    public void test_0() throws Exception {\n        StringWriter out = new StringWriter();\n        \n        SerializeWriter writer = new SerializeWriter(out, 10);\n        Assert.assertEquals(10, writer.getBufferLength());\n        \n        writer.writeFieldValue(',', \"abcde01245abcde\", 123);\n        writer.close();\n        \n        String text = out.toString();\n        Assert.assertEquals(\",abcde01245abcde:123\", text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/stream/StreamWriterTest_writeFieldValue_long.java",
    "content": "package com.alibaba.json.bvt.serializer.stream;\n\nimport java.io.StringWriter;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\n\npublic class StreamWriterTest_writeFieldValue_long extends TestCase {\n    public void test_0() throws Exception {\n        StringWriter out = new StringWriter();\n        \n        SerializeWriter writer = new SerializeWriter(out, 10);\n        writer.config(SerializerFeature.QuoteFieldNames, true);\n        Assert.assertEquals(10, writer.getBufferLength());\n        \n        writer.writeFieldValue(',', \"abcde01245abcde\", 123L);\n        writer.close();\n        \n        String text = out.toString();\n        Assert.assertEquals(\",\\\"abcde01245abcde\\\":123\", text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/stream/StreamWriterTest_writeFieldValue_string.java",
    "content": "package com.alibaba.json.bvt.serializer.stream;\n\nimport java.io.StringWriter;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\n\npublic class StreamWriterTest_writeFieldValue_string extends TestCase {\n    public void test_0() throws Exception {\n        StringWriter out = new StringWriter();\n        \n        SerializeWriter writer = new SerializeWriter(out, 10);\n        writer.config(SerializerFeature.QuoteFieldNames, true);\n        Assert.assertEquals(10, writer.getBufferLength());\n        \n        writer.writeFieldValue(',', \"abcde01245abcde\", \"123\");\n        writer.close();\n        \n        String text = out.toString();\n        Assert.assertEquals(\",\\\"abcde01245abcde\\\":\\\"123\\\"\", text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/stream/StreamWriterTest_writeFieldValue_string_singQuote.java",
    "content": "package com.alibaba.json.bvt.serializer.stream;\n\nimport java.io.StringWriter;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\n\npublic class StreamWriterTest_writeFieldValue_string_singQuote extends TestCase {\n    public void test_0() throws Exception {\n        StringWriter out = new StringWriter();\n        \n        SerializeWriter writer = new SerializeWriter(out, 10);\n        writer.config(SerializerFeature.QuoteFieldNames, true);\n        writer.config(SerializerFeature.UseSingleQuotes, true);\n        Assert.assertEquals(10, writer.getBufferLength());\n        \n        writer.writeFieldValue(',', \"abcde01245abcde\", \"123\");\n        writer.close();\n        \n        String text = out.toString();\n        Assert.assertEquals(\",'abcde01245abcde':'123'\", text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/stream/StreamWriterTest_writeInt.java",
    "content": "package com.alibaba.json.bvt.serializer.stream;\n\nimport java.io.StringWriter;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\n\npublic class StreamWriterTest_writeInt extends TestCase {\n    public void test_0() throws Exception {\n        StringWriter out = new StringWriter();\n        \n        SerializeWriter writer = new SerializeWriter(out, 10);\n        Assert.assertEquals(10, writer.getBufferLength());\n        \n        writer.write(\"abcde\");\n        writer.writeInt(12345678);\n        writer.close();\n        \n        String text = out.toString();\n        Assert.assertEquals(\"abcde12345678\", text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/stream/StreamWriterTest_writeIntAndChar.java",
    "content": "package com.alibaba.json.bvt.serializer.stream;\n\nimport java.io.StringWriter;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\n\npublic class StreamWriterTest_writeIntAndChar extends TestCase {\n    public void test_0() throws Exception {\n        StringWriter out = new StringWriter();\n        \n        SerializeWriter writer = new SerializeWriter(out, 10);\n        Assert.assertEquals(10, writer.getBufferLength());\n        \n        writer.write(\"abcde\");\n        writer.writeInt(12345678);\n        writer.write(',');\n        writer.close();\n        \n        String text = out.toString();\n        Assert.assertEquals(\"abcde12345678,\", text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/stream/StreamWriterTest_writeJSONStringTo.java",
    "content": "package com.alibaba.json.bvt.serializer.stream;\n\nimport java.io.StringWriter;\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\n\npublic class StreamWriterTest_writeJSONStringTo extends TestCase {\n    public void test_0() throws Exception {\n        StringWriter out = new StringWriter();\n        \n        Map<String, Object> map = new LinkedHashMap<String, Object>();\n        map.put(\"a\", 123);\n        \n        JSON.writeJSONStringTo(map, out);\n        \n        String text = out.toString();\n        Assert.assertEquals(\"{\\\"a\\\":123}\", text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/stream/StreamWriterTest_writeLong.java",
    "content": "package com.alibaba.json.bvt.serializer.stream;\n\nimport java.io.StringWriter;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\n\npublic class StreamWriterTest_writeLong extends TestCase {\n    public void test_0() throws Exception {\n        StringWriter out = new StringWriter();\n        \n        SerializeWriter writer = new SerializeWriter(out, 10);\n        Assert.assertEquals(10, writer.getBufferLength());\n        \n        writer.write(\"abcde\");\n        writer.writeLong(12345678L);\n        writer.close();\n        \n        String text = out.toString();\n        Assert.assertEquals(\"abcde12345678\", text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/stream/StreamWriterTest_writeLongAndChar.java",
    "content": "package com.alibaba.json.bvt.serializer.stream;\n\nimport java.io.StringWriter;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\n\npublic class StreamWriterTest_writeLongAndChar extends TestCase {\n    public void test_0() throws Exception {\n        StringWriter out = new StringWriter();\n        \n        SerializeWriter writer = new SerializeWriter(out, 10);\n        Assert.assertEquals(10, writer.getBufferLength());\n        \n        writer.write(\"abcde\");\n        writer.writeLong(12345678L);\n        writer.write(',');\n        writer.close();\n        \n        String text = out.toString();\n        Assert.assertEquals(\"abcde12345678,\", text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/stream/StreamWriterTest_writeString.java",
    "content": "package com.alibaba.json.bvt.serializer.stream;\n\nimport java.io.StringWriter;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\npublic class StreamWriterTest_writeString extends TestCase {\n\n    public void test_0() throws Exception {\n        StringWriter out = new StringWriter();\n\n        SerializeWriter writer = new SerializeWriter(out, 10);\n        Assert.assertEquals(10, writer.getBufferLength());\n\n        int blockSize = 21;\n        for (char ch = 'a'; ch <= 'z'; ++ch) {\n            char[] chars = new char[blockSize];\n            for (int i = 0; i < blockSize; ++i) {\n                chars[i] = ch;\n            }\n            writer.write(new String(chars), 0, chars.length);\n        }\n        writer.close();\n\n        String text = out.toString();\n        Assert.assertEquals(26 * blockSize, text.length());\n\n        for (int i = 0; i < 26; ++i) {\n            for (int j = 0; j < blockSize; ++j) {\n                Assert.assertEquals(text.charAt(i * blockSize + j), (char) ('a' + i));\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/stream/StreamWriterTest_writeString1.java",
    "content": "package com.alibaba.json.bvt.serializer.stream;\n\nimport java.io.StringWriter;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\npublic class StreamWriterTest_writeString1 extends TestCase {\n\n    public void test_0() throws Exception {\n        StringWriter out = new StringWriter();\n\n        SerializeWriter writer = new SerializeWriter(out, 10);\n        Assert.assertEquals(10, writer.getBufferLength());\n\n        int blockSize = 21;\n        for (char ch = 'a'; ch <= 'z'; ++ch) {\n            char[] chars = new char[blockSize];\n            for (int i = 0; i < blockSize; ++i) {\n                chars[i] = ch;\n            }\n            writer.write(new String(chars));\n        }\n        writer.close();\n\n        String text = out.toString();\n        Assert.assertEquals(26 * blockSize, text.length());\n\n        for (int i = 0; i < 26; ++i) {\n            for (int j = 0; j < blockSize; ++j) {\n                Assert.assertEquals(text.charAt(i * blockSize + j), (char) ('a' + i));\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/stream/StreamWriterTest_writeValueString.java",
    "content": "package com.alibaba.json.bvt.serializer.stream;\n\nimport java.io.StringWriter;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\n\npublic class StreamWriterTest_writeValueString extends TestCase {\n    public void test_0() throws Exception {\n        StringWriter out = new StringWriter();\n        \n        SerializeWriter writer = new SerializeWriter(out, 10);\n        Assert.assertEquals(10, writer.getBufferLength());\n        \n        writer.writeString(\"abcde12345678\");\n        writer.close();\n        \n        String text = out.toString();\n        Assert.assertEquals(\"\\\"abcde12345678\\\"\", text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/stream/StreamWriterTest_writeValueString1.java",
    "content": "package com.alibaba.json.bvt.serializer.stream;\n\nimport java.io.StringWriter;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\n\npublic class StreamWriterTest_writeValueString1 extends TestCase {\n    public void test_0() throws Exception {\n        StringWriter out = new StringWriter();\n        \n        SerializeWriter writer = new SerializeWriter(out, 10);\n        writer.config(SerializerFeature.BrowserCompatible, true);\n        Assert.assertEquals(10, writer.getBufferLength());\n        \n        writer.writeString(\"abcde12345678\\t\");\n        writer.close();\n        \n        String text = out.toString();\n        Assert.assertEquals(\"\\\"abcde12345678\\\\t\\\"\", text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/stream/StreamWriterTest_writeValueString2.java",
    "content": "package com.alibaba.json.bvt.serializer.stream;\n\nimport java.io.StringWriter;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\n\npublic class StreamWriterTest_writeValueString2 extends TestCase {\n    public void test_0() throws Exception {\n        StringWriter out = new StringWriter();\n        \n        SerializeWriter writer = new SerializeWriter(out, 10);\n        Assert.assertEquals(10, writer.getBufferLength());\n        \n        writer.writeString(\"abcde12345678\\\"\\\\\");\n        writer.close();\n        \n        String text = out.toString();\n        Assert.assertEquals(\"\\\"abcde12345678\\\\\\\"\\\\\\\\\\\"\", text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/serializer/writeJSONStringToTest.java",
    "content": "package com.alibaba.json.bvt.serializer;\n\nimport java.io.ByteArrayOutputStream;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class writeJSONStringToTest extends TestCase {\n    public void test_writeJSONStringTo() throws Exception {\n        Model model = new Model();\n        model.id = 1001;\n        model.name = \"中文名称\";\n        \n        ByteArrayOutputStream os = new ByteArrayOutputStream();\n        JSON.writeJSONString(os, model);\n        os.close();\n        \n        byte[] bytes = os.toByteArray();\n        String text = new String(bytes, \"UTF-8\");\n        Assert.assertEquals(\"{\\\"id\\\":1001,\\\"name\\\":\\\"中文名称\\\"}\", text);\n    }\n    \n    public static class Model {\n        public int id;\n        public String name;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/stream/JSONWriterTest.java",
    "content": "package com.alibaba.json.bvt.stream;\n\nimport java.io.StringWriter;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSONWriter;\n\n@SuppressWarnings(\"deprecation\")\npublic class JSONWriterTest extends TestCase {\n\n    public void test_0() throws Exception {\n        StringWriter out = new StringWriter();\n\n        JSONWriter writer = new JSONWriter(out);\n        writer.writeStartObject();\n        writer.writeEndObject();\n        writer.flush();\n\n        Assert.assertEquals(\"{}\", out.toString());\n    }\n\n    public void test_1() throws Exception {\n        StringWriter out = new StringWriter();\n\n        JSONWriter writer = new JSONWriter(out);\n        writer.writeStartObject();\n        writer.writeKey(\"id\");\n        writer.writeValue(33);\n        writer.writeEndObject();\n        writer.flush();\n\n        Assert.assertEquals(\"{\\\"id\\\":33}\", out.toString());\n    }\n\n    public void test_2() throws Exception {\n        StringWriter out = new StringWriter();\n\n        JSONWriter writer = new JSONWriter(out);\n        writer.writeStartObject();\n\n        writer.writeKey(\"id\");\n        writer.writeValue(33);\n\n        writer.writeKey(\"name\");\n        writer.writeValue(\"jobs\");\n\n        writer.writeEndObject();\n        writer.flush();\n\n        Assert.assertEquals(\"{\\\"id\\\":33,\\\"name\\\":\\\"jobs\\\"}\", out.toString());\n    }\n\n    public void test_3() throws Exception {\n        StringWriter out = new StringWriter();\n\n        JSONWriter writer = new JSONWriter(out);\n        writer.writeStartObject();\n\n        writer.writeKey(\"id\");\n        writer.writeValue(33);\n\n        writer.writeKey(\"name\");\n        writer.writeValue(\"jobs\");\n\n        writer.writeKey(\"children\");\n        writer.writeStartArray();\n\n        writer.writeStartObject();\n        writer.writeEndObject();\n\n        writer.writeStartObject();\n        writer.writeEndObject();\n\n        writer.writeEndArray();\n\n        writer.writeEndObject();\n        writer.flush();\n\n        Assert.assertEquals(\"{\\\"id\\\":33,\\\"name\\\":\\\"jobs\\\",\\\"children\\\":[{},{}]}\", out.toString());\n    }\n\n    public void test_4() throws Exception {\n        StringWriter out = new StringWriter();\n\n        JSONWriter writer = new JSONWriter(out);\n\n        writer.writeStartArray();\n\n        writer.writeStartObject();\n        writer.writeEndObject();\n\n        writer.writeStartObject();\n        writer.writeEndObject();\n\n        writer.writeStartArray();\n        writer.writeEndArray();\n        {\n            writer.writeStartArray();\n\n            writer.writeStartArray();\n            writer.writeEndArray();\n\n            writer.writeStartArray();\n            writer.writeEndArray();\n\n            writer.writeEndArray();\n            \n            writer.writeValue(1);\n        }\n\n        writer.writeEndArray();\n\n        writer.flush();\n\n        Assert.assertEquals(\"[{},{},[],[[],[]],1]\", out.toString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/stream/JSONWriterTest_0.java",
    "content": "package com.alibaba.json.bvt.stream;\n\nimport java.io.StringWriter;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONWriter;\n\npublic class JSONWriterTest_0 extends TestCase {\n\n    public void test_writer() throws Exception {\n        StringWriter out = new StringWriter();\n        JSONWriter writer = new JSONWriter(out);\n        writer.startArray();\n        writer.writeObject(\"1\");\n        writer.writeObject(\"2\");\n        writer.writeObject(\"3\");\n        writer.endArray();\n        writer.close();\n\n        Assert.assertEquals(\"[\\\"1\\\",\\\"2\\\",\\\"3\\\"]\", out.toString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/stream/JSONWriterTest_1.java",
    "content": "package com.alibaba.json.bvt.stream;\n\nimport java.io.StringWriter;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONWriter;\n\npublic class JSONWriterTest_1 extends TestCase {\n\n    public void test_writer() throws Exception {\n        StringWriter out = new StringWriter();\n        JSONWriter writer = new JSONWriter(out);\n        writer.startObject();\n        writer.writeObject(\"a\");\n        writer.writeObject(\"1\");\n        \n        writer.writeObject(\"b\");\n        writer.writeObject(\"2\");\n        \n        writer.writeObject(\"c\");\n        writer.writeObject(\"3\");\n        \n        writer.endObject();\n        writer.close();\n\n        Assert.assertEquals(\"{\\\"a\\\":\\\"1\\\",\\\"b\\\":\\\"2\\\",\\\"c\\\":\\\"3\\\"}\", out.toString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/stream/JSONWriterTest_2.java",
    "content": "package com.alibaba.json.bvt.stream;\n\nimport java.io.StringWriter;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class JSONWriterTest_2 extends TestCase {\n\n    public void test_writer() throws Exception {\n        StringWriter out = new StringWriter();\n        JSONWriter writer = new JSONWriter(out);\n        writer.config(SerializerFeature.UseSingleQuotes, true);\n        writer.startObject();\n        writer.writeObject(\"a\");\n        writer.writeObject(\"1\");\n        \n        writer.writeObject(\"b\");\n        writer.writeObject(\"2\");\n        \n        writer.writeObject(\"c\");\n        writer.writeObject(\"3\");\n        \n        writer.endObject();\n        writer.close();\n\n        Assert.assertEquals(\"{'a':'1','b':'2','c':'3'}\", out.toString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/stream/JSONWriterTest_3.java",
    "content": "package com.alibaba.json.bvt.stream;\n\nimport java.io.StringWriter;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class JSONWriterTest_3 extends TestCase {\n\n    public void test_writer() throws Exception {\n        StringWriter out = new StringWriter();\n        JSONWriter writer = new JSONWriter(out);\n        writer.config(SerializerFeature.UseSingleQuotes, true);\n        writer.startObject();\n        \n        writer.startObject();\n        writer.endObject();\n\n        writer.startObject();\n        writer.endObject();\n        \n        writer.endObject();\n        writer.close();\n\n        Assert.assertEquals(\"{{}:{}}\", out.toString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/stream/JSONWriterTest_4.java",
    "content": "package com.alibaba.json.bvt.stream;\n\nimport java.io.StringWriter;\nimport java.util.Collections;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class JSONWriterTest_4 extends TestCase {\n\n    public void test_writer() throws Exception {\n        StringWriter out = new StringWriter();\n        JSONWriter writer = new JSONWriter(out);\n        writer.config(SerializerFeature.UseSingleQuotes, true);\n        writer.writeObject(Collections.emptyMap());\n        writer.close();\n\n        Assert.assertEquals(\"{}\", out.toString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/stream/JSONWriterTest_5.java",
    "content": "package com.alibaba.json.bvt.stream;\n\nimport java.io.StringWriter;\nimport java.util.Collections;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class JSONWriterTest_5 extends TestCase {\n\n    public void test_writer() throws Exception {\n        StringWriter out = new StringWriter();\n        JSONWriter writer = new JSONWriter(out);\n\n        writer.startObject();\n        writer.writeKey(\"value\");\n        writer.writeObject((String) null);\n        writer.endObject();\n\n        writer.close();\n\n        Assert.assertEquals(\"{\\\"value\\\":null}\", out.toString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/stream/JSONWriterTest_6.java",
    "content": "package com.alibaba.json.bvt.stream;\n\nimport java.io.StringWriter;\nimport java.util.Collections;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class JSONWriterTest_6 extends TestCase {\n\n    public void test_writer() throws Exception {\n        StringWriter out = new StringWriter();\n        JSONWriter writer = new JSONWriter(out);\n        writer.config(SerializerFeature.WriteNullStringAsEmpty, true);\n\n        writer.startObject();\n        writer.writeKey(\"value\");\n        writer.writeObject((String) null);\n        writer.endObject();\n\n        writer.close();\n\n        Assert.assertEquals(\"{\\\"value\\\":\\\"\\\"}\", out.toString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/stream/JSONWriterTest_error.java",
    "content": "package com.alibaba.json.bvt.stream;\n\nimport java.io.StringWriter;\nimport java.lang.reflect.Field;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSONWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class JSONWriterTest_error extends TestCase {\n\n    public void test_writer() throws Exception {\n        Field field = JSONWriter.class.getDeclaredField(\"context\");\n        field.setAccessible(true);\n\n        StringWriter out = new StringWriter();\n        JSONWriter writer = new JSONWriter(out);\n        writer.config(SerializerFeature.UseSingleQuotes, true);\n        writer.startObject();\n\n        Object context = field.get(writer);\n        Field stateField = context.getClass().getDeclaredField(\"state\");\n        stateField.setAccessible(true);\n        stateField.set(context, -1);\n\n        Exception error = null;\n        try {\n            writer.startObject();\n        } catch (Exception ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n        \n        writer.close();\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/stream/LargeTest.java",
    "content": "package com.alibaba.json.bvt.stream;\n\nimport java.io.File;\nimport java.io.FileReader;\nimport java.io.FileWriter;\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.apache.commons.io.FileUtils;\n\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.JSONWriter;\n\npublic class LargeTest extends TestCase {\n\n    public void test_0() throws Exception {\n        List<String> list = new ArrayList<String>(1000 * 1);\n        for (int i = 0; i < 100 * 1; ++i) {\n            list.add(Integer.toString(i));\n        }\n        File file = File.createTempFile(\"fastjson-stream-large\", \"json\");\n        JSONWriter writer = new JSONWriter(new FileWriter(file));\n        writer.startArray();\n        writer.writeObject(list);\n        writer.endArray();\n        writer.close();\n\n        System.out.println(FileUtils.readFileToString(file));\n\n        JSONReader reader = new JSONReader(new FileReader(file));\n        reader.startArray();\n        reader.readObject();\n        reader.endArray();\n        reader.close();\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/FastJsonConfigTest.java",
    "content": "package com.alibaba.json.bvt.support;\n\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializeFilter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.fastjson.serializer.ValueFilter;\nimport com.alibaba.fastjson.support.config.FastJsonConfig;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.nio.charset.Charset;\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic class FastJsonConfigTest extends TestCase {\n\n    public void test_0() throws Exception {\n\n        FastJsonConfig config = new FastJsonConfig();\n\n        Assert.assertEquals(Charset.forName(\"UTF-8\"), config.getCharset());\n        config.setCharset(Charset.forName(\"GBK\"));\n        Assert.assertEquals(Charset.forName(\"GBK\"), config.getCharset());\n\n        Assert.assertNull(config.getDateFormat());\n        config.setDateFormat(\"yyyyMMdd\");\n        Assert.assertNotNull(config.getDateFormat());\n\n        config.setParserConfig(ParserConfig.getGlobalInstance());\n        Assert.assertNotNull(config.getParserConfig());\n\n        config.setSerializeConfig(SerializeConfig.globalInstance);\n        Assert.assertNotNull(config.getSerializeConfig());\n\n        config.setFeatures(Feature.AllowComment, Feature.AutoCloseSource);\n        Assert.assertEquals(2, config.getFeatures().length);\n        Assert.assertEquals(Feature.AllowComment, config.getFeatures()[0]);\n        Assert.assertEquals(Feature.AutoCloseSource, config.getFeatures()[1]);\n\n        config.setSerializerFeatures(SerializerFeature.IgnoreErrorGetter);\n        Assert.assertEquals(1, config.getSerializerFeatures().length);\n        Assert.assertEquals(SerializerFeature.IgnoreErrorGetter,\n                config.getSerializerFeatures()[0]);\n\n        config.setSerializeFilters(serializeFilter);\n        Assert.assertEquals(1, config.getSerializeFilters().length);\n        Assert.assertEquals(serializeFilter, config.getSerializeFilters()[0]);\n\n        classSerializeFilter.put(TestVO.class, serializeFilter);\n        config.setClassSerializeFilters(classSerializeFilter);\n        Assert.assertEquals(1, config.getClassSerializeFilters().size());\n        Assert.assertEquals(classSerializeFilter,\n                config.getClassSerializeFilters());\n        config.setClassSerializeFilters(null);\n\n        config.setWriteContentLength(false);\n        Assert.assertEquals(false, config.isWriteContentLength());\n    }\n\n    private Map<Class<?>, SerializeFilter> classSerializeFilter = new HashMap<Class<?>, SerializeFilter>();\n\n    private SerializeFilter serializeFilter = new ValueFilter() {\n        @Override\n        public Object process(Object object, String name, Object value) {\n            if (value == null) {\n                return \"\";\n            }\n            if (value instanceof Number) {\n                return String.valueOf(value);\n            }\n            return value;\n        }\n    };\n\n    class TestVO {\n\n        private Number num;\n\n        private String name;\n\n        public Number getNum() {\n            return num;\n        }\n\n        public void setNum(Number num) {\n            this.num = num;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/hsf/HSFJSONUtilsTest_0.java",
    "content": "package com.alibaba.json.bvt.support.hsf;\n\nimport com.alibaba.fastjson.support.hsf.HSFJSONUtils;\nimport com.alibaba.fastjson.support.hsf.MethodLocator;\nimport junit.framework.TestCase;\n\nimport java.lang.reflect.Method;\nimport java.util.List;\n\npublic class HSFJSONUtilsTest_0 extends TestCase {\n    private Method method_f2;\n    private Method method_f3;\n    private Method method_f4;\n    private Method method_f5;\n    private MethodLocator methodLocator;\n\n    protected void setUp() throws Exception {\n        method_f2 = Service.class.getMethod(\"f2\", String.class, Model.class);\n        method_f3 = Service.class.getMethod(\"f3\", String.class, List.class);\n        method_f4 = Service.class.getMethod(\"f4\", List.class);\n        method_f5 = Service.class.getMethod(\"f4\", User[].class);\n\n        methodLocator = new MethodLocator() {\n            public Method findMethod(String[] types) {\n                if (types == null) {\n                    return method_f2;\n                }\n\n                if (types.length == 1 && types[0].equals(\"java.util.List\")) {\n                    return method_f4;\n                }\n\n                if (types.length == 1 && types[0].equals(\"com.alibaba.json.bvt.support.hsf.HSFJSONUtilsTest_0.User[]\")) {\n                    return method_f5;\n                }\n\n                if (types[1].equals(\"java.util.List\")) {\n                    return method_f3;\n                }\n\n                return method_f2;\n            }\n        };\n    }\n\n    public void test_invoke() throws Exception {\n        String json = \"{ \\n\" +\n                \"    \\\"argsTypes\\\"  :  [ \\\"java.lang.String\\\", \\\"com.alibaba.json.bvt.support.hsf.HSFJSONUtilsTest_0$Model\\\"],\\n\" +\n                \"    \\\"argsObjs\\\"   :   [ \\\"abc\\\", {\\\"value\\\":\\\"xxx\\\"} ]\\n\" +\n                \"}\";\n        Object[] values = HSFJSONUtils.parseInvocationArguments(json, methodLocator);\n        assertNotNull(values);\n        assertEquals(2, values.length);\n        assertEquals(\"abc\", values[0]);\n        assertEquals(\"xxx\", ((Model) values[1]).value);\n    }\n\n    public void test_invoke_1() throws Exception {\n        String json = \"{ \\n\" +\n                \"    \\\"argsObjs\\\"   :   [ \\\"abc\\\", {\\\"value\\\":\\\"xxx\\\"} ]\\n\" +\n                \"}\";\n        Object[] values = HSFJSONUtils.parseInvocationArguments(json, methodLocator);\n        assertNotNull(values);\n        assertEquals(2, values.length);\n        assertEquals(\"abc\", values[0]);\n        assertEquals(\"xxx\", ((Model) values[1]).value);\n    }\n\n    public void test_invoke_null() throws Exception {\n        String json = \"{ \\n\" +\n                \"    \\\"argsTypes\\\"  :  [ \\\"java.lang.String\\\", \\\"com.alibaba.json.bvt.support.hsf.HSFJSONUtilsTest_0$Model\\\"],\\n\" +\n                \"    \\\"argsObjs\\\"   :   [ null, null ]\\n\" +\n                \"}\";\n        Object[] values = HSFJSONUtils.parseInvocationArguments(json, methodLocator);\n        assertNotNull(values);\n        assertEquals(2, values.length);\n        assertEquals(null, values[0]);\n        assertEquals(null, values[1]);\n    }\n\n    public void test_invoke_list() throws Exception {\n        String json = \"{ \\n\" +\n                \"    \\\"argsTypes\\\"  :  [ \\\"java.lang.String\\\", \\\"java.util.List\\\"],\\n\" +\n                \"    \\\"argsObjs\\\"   :   [ \\\"abc\\\", [\" +\n                \"{\" +\n                \"   \\\"value\\\":\\\"xxx\\\"\" +\n                \"   }] ]\\n\" +\n                \"}\";\n        Object[] values = HSFJSONUtils.parseInvocationArguments(json, methodLocator);\n        assertNotNull(values);\n        assertEquals(2, values.length);\n        assertEquals(\"abc\", values[0]);\n\n        List list = (List) values[1];\n        assertEquals(\"xxx\", ((Model) list.get(0)).value);\n    }\n\n    public void test_invoke_list_f4() throws Exception {\n        String json = \"{\\n\" +\n                \"    \\\"argsTypes\\\": [\\\"java.util.List\\\"],\\n\" +\n                \"    \\n\" +\n                \"    \\\"argsObjs\\\": [\\n\" +\n                \"        [\\n\" +\n                \"    \\t\\t{\\n\" +\n                \"    \\t\\t\\t\\\"name\\\": \\\"123\\\",\\n\" +\n                \"    \\t\\t\\t\\\"id\\\": 123,\\n\" +\n                \"    \\t\\t\\t\\\"age\\\": 123\\n\" +\n                \"    \\t\\t},\\n\" +\n                \"    \\t\\t{\\n\" +\n                \"    \\t\\t\\t\\\"name\\\": \\\"123\\\",\\n\" +\n                \"    \\t\\t\\t\\\"id\\\": 123,\\n\" +\n                \"    \\t\\t\\t\\\"age\\\": 123\\n\" +\n                \"    \\t\\t}\\n\" +\n                \"\\t\\t]\\n\" +\n                \"    ]\\n\" +\n                \"}\";\n//        System.out.println(json);\n        Object[] values = HSFJSONUtils.parseInvocationArguments(json, methodLocator);\n        assertNotNull(values);\n        assertEquals(1, values.length);\n\n        List list = (List) values[0];\n        assertEquals(\"123\", ((User) list.get(0)).name);\n        assertEquals(\"123\", ((User) list.get(1)).name);\n    }\n\n    public void test_invoke_list_f5() throws Exception {\n        String json = \" [\\n\" +\n                \" \\t[\\\"java.util.List\\\"],\\n\" +\n                \"    [\\n\" +\n                \"    \\t\\t[{\\n\" +\n                \"    \\t\\t\\t\\\"name\\\": \\\"123\\\",\\n\" +\n                \"    \\t\\t\\t\\\"id\\\": 123,\\n\" +\n                \"    \\t\\t\\t\\\"age\\\": 123\\n\" +\n                \"    \\t\\t},\\n\" +\n                \"    \\t\\t{\\n\" +\n                \"    \\t\\t\\t\\\"name\\\": \\\"123\\\",\\n\" +\n                \"    \\t\\t\\t\\\"id\\\": 123,\\n\" +\n                \"    \\t\\t\\t\\\"age\\\": 123\\n\" +\n                \"    \\t\\t}]\\n\" +\n                \"    ]\\n\" +\n                \"]\";\n        System.out.println(json);\n        Object[] values = HSFJSONUtils.parseInvocationArguments(json, methodLocator);\n        assertNotNull(values);\n        assertEquals(1, values.length);\n\n        List list = (List) values[0];\n        assertEquals(\"123\", ((User) list.get(0)).name);\n        assertEquals(\"123\", ((User) list.get(1)).name);\n    }\n\n    public void test_invoke_array() throws Exception {\n        String json = \"{\\n\" +\n                \"    \\\"argsTypes\\\": [\\\"com.alibaba.json.bvt.support.hsf.HSFJSONUtilsTest_0.User[]\\\"],\\n\" +\n                \"    \\n\" +\n                \"    \\\"argsObjs\\\": [\\n\" +\n                \"        [\\n\" +\n                \"    \\t\\t{\\n\" +\n                \"    \\t\\t\\t\\\"name\\\": \\\"123\\\",\\n\" +\n                \"    \\t\\t\\t\\\"id\\\": 123,\\n\" +\n                \"    \\t\\t\\t\\\"age\\\": 123\\n\" +\n                \"    \\t\\t},\\n\" +\n                \"    \\t\\t{\\n\" +\n                \"    \\t\\t\\t\\\"name\\\": \\\"123\\\",\\n\" +\n                \"    \\t\\t\\t\\\"id\\\": 123,\\n\" +\n                \"    \\t\\t\\t\\\"age\\\": 123\\n\" +\n                \"    \\t\\t}\\n\" +\n                \"\\t\\t]\\n\" +\n                \"    ]\\n\" +\n                \"}\";\n//        System.out.println(json);\n        Object[] values = HSFJSONUtils.parseInvocationArguments(json, methodLocator);\n        assertNotNull(values);\n        assertEquals(1, values.length);\n\n        User[] list = (User[]) values[0];\n        assertEquals(\"123\", ((User) list[0]).name);\n        assertEquals(\"123\", ((User) list[1]).name);\n    }\n\n//    public void test_perf() throws Exception {\n//        for (int i = 0; i < 5; ++i) {\n//            perf(); // 723\n//        }\n//    }\n\n    void perf() throws Exception {\n        long start = System.currentTimeMillis();\n        String json = \"{ \\n\" +\n                \"    \\\"argsTypes\\\"  :  [ \\\"java.lang.String\\\", \\\"com.alibaba.json.bvt.support.hsf.HSFJSONUtilsTest_0$Model\\\"],\\n\" +\n                \"    \\\"argsObjs\\\"   :   [ \\\"abc\\\", {\\\"value\\\":\\\"xxx\\\"} ]\\n\" +\n                \"}\";\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            Object[] values = HSFJSONUtils.parseInvocationArguments(json, methodLocator);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static class Service {\n        public void f1() {\n\n        }\n\n        public void f2(String name, Model model) {\n\n        }\n\n        public void f3(String name, List<Model> models) {\n\n        }\n\n        public void f4( List<User> models) {\n\n        }\n\n        public void f4( User[] models) {\n\n        }\n    }\n\n    public static class Model {\n        public String value;\n    }\n\n    public static class User {\n        public String name;\n        public int id;\n        public int age;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/hsf/HSFJSONUtilsTest_1.java",
    "content": "package com.alibaba.json.bvt.support.hsf;\n\nimport com.alibaba.fastjson.support.hsf.HSFJSONUtils;\nimport com.alibaba.fastjson.support.hsf.MethodLocator;\nimport junit.framework.TestCase;\n\nimport java.lang.reflect.Method;\nimport java.util.List;\n\npublic class HSFJSONUtilsTest_1 extends TestCase {\n    private Method method_f2;\n    private Method method_f3;\n    private Method method_f4;\n    private Method method_f5;\n    private MethodLocator methodLocator;\n\n    protected void setUp() throws Exception {\n        method_f2 = Service.class.getMethod(\"f2\", String.class, Model.class);\n        method_f3 = Service.class.getMethod(\"f3\", String.class, List.class);\n        method_f4 = Service.class.getMethod(\"f3\", String.class, Model[].class);\n        method_f5 = Service.class.getMethod(\"f3\", int.class, long.class);\n\n        methodLocator = new MethodLocator() {\n            public Method findMethod(String[] types) {\n                if (types == null || types.length == 0) {\n                    return null;\n                }\n\n                if (types[0].equals(\"int\")) {\n                    return method_f5;\n                }\n\n                if (types[1].equals(\"java.util.List\")) {\n                    return method_f3;\n                }\n\n                if (types[1].equals(\"com.alibaba.json.bvt.support.hsf.HSFJSONUtilsTest_0$Model[]\")) {\n                    return method_f4;\n                }\n\n                return method_f2;\n            }\n        };\n    }\n\n    public void test_invoke() throws Exception {\n        String json = \"{ \\n\" +\n                \"    \\\"argsTypes\\\"  :  [ \\\"java.lang.String\\\", \\\"com.alibaba.json.bvt.support.hsf.HSFJSONUtilsTest_0$Model\\\"],\\n\" +\n                \"    \\\"argsObjs\\\"   :   [ \\\"abc\\\", {\\\"value\\\":\\\"xxx\\\"} ]\\n\" +\n                \"}\";\n        Object[] values = HSFJSONUtils.parseInvocationArguments(json, methodLocator);\n        assertNotNull(values);\n        assertEquals(2, values.length);\n        assertEquals(\"abc\", values[0]);\n        assertEquals(\"xxx\", ((Model) values[1]).value);\n    }\n\n    public void test_invoke_type() throws Exception {\n        String json = \"{\\\"@type\\\":\\\"com.alibaba.fastjson.JSONObject\\\", \\n\" +\n                \"    \\\"argsTypes\\\"  :  [ \\\"java.lang.String\\\", \\\"com.alibaba.json.bvt.support.hsf.HSFJSONUtilsTest_0$Model\\\"],\\n\" +\n                \"    \\\"argsObjs\\\"   :   [ \\\"abc\\\", {\\\"value\\\":\\\"xxx\\\"} ]\\n\" +\n                \"}\";\n        Object[] values = HSFJSONUtils.parseInvocationArguments(json, methodLocator);\n        assertNotNull(values);\n        assertEquals(2, values.length);\n        assertEquals(\"abc\", values[0]);\n        assertEquals(\"xxx\", ((Model) values[1]).value);\n    }\n\n    public void test_invoke_reverse() throws Exception {\n        String json = \"{ \\n\" +\n                \"    \\\"argsObjs\\\"   :   [ \\\"abc\\\", {\\\"value\\\":\\\"xxx\\\"} ],\\n\" +\n                \"    \\\"argsTypes\\\"  :  [ \\\"java.lang.String\\\", \\\"com.alibaba.json.bvt.support.hsf.HSFJSONUtilsTest_0$Model\\\"]\\n\" +\n                \"}\";\n        Object[] values = HSFJSONUtils.parseInvocationArguments(json, methodLocator);\n        assertNotNull(values);\n        assertEquals(2, values.length);\n        assertEquals(\"abc\", values[0]);\n        assertEquals(\"xxx\", ((Model) values[1]).value);\n    }\n\n    public void test_invoke_reverse_list() throws Exception {\n        String json = \"{ \\n\" +\n                \"    \\\"argsObjs\\\"   :   [ \\\"abc\\\", [{\\\"value\\\":\\\"xxx\\\"}] ],\\n\" +\n                \"    \\\"argsTypes\\\"  :  [ \\\"java.lang.String\\\", \\\"java.util.List\\\"]\\n\" +\n                \"}\";\n        Object[] values = HSFJSONUtils.parseInvocationArguments(json, methodLocator);\n        assertNotNull(values);\n        assertEquals(2, values.length);\n        assertEquals(\"abc\", values[0]);\n        List list = (List) values[1];\n        assertEquals(\"xxx\", ((Model) list.get(0)).value);\n    }\n\n    public void test_invoke_reverse_array() throws Exception {\n        String json = \"{ \\n\" +\n                \"    \\\"argsObjs\\\"   :   [ \\\"abc\\\", [{\\\"value\\\":\\\"xxx\\\"}] ],\\n\" +\n                \"    \\\"argsTypes\\\"  :  [ \\\"java.lang.String\\\", \\\"com.alibaba.json.bvt.support.hsf.HSFJSONUtilsTest_0$Model[]\\\"]\\n\" +\n                \"}\";\n        Object[] values = HSFJSONUtils.parseInvocationArguments(json, methodLocator);\n        assertNotNull(values);\n        assertEquals(2, values.length);\n        assertEquals(\"abc\", values[0]);\n        Model[] list = (Model[]) values[1];\n        assertEquals(\"xxx\", ((Model) list[0]).value);\n    }\n\n    public void test_invoke_array() throws Exception {\n        String json = \"[ \\n\" +\n                \"   [ \\\"java.lang.String\\\", \\\"com.alibaba.json.bvt.support.hsf.HSFJSONUtilsTest_0$Model\\\"],\\n\" +\n                \"    [ \\\"abc\\\", {\\\"value\\\":\\\"xxx\\\"} ]\\n\" +\n                \"]\";\n        Object[] values = HSFJSONUtils.parseInvocationArguments(json, methodLocator);\n        assertNotNull(values);\n        assertEquals(2, values.length);\n        assertEquals(\"abc\", values[0]);\n        assertEquals(\"xxx\", ((Model) values[1]).value);\n    }\n\n    public void test_invoke_array_2() throws Exception {\n        String json = \"[ \\n\" +\n                \"   [ \\\"java.lang.String\\\", \\\"java.util.List\\\"],\\n\" +\n                \"    [ \\\"abc\\\", [{\\\"value\\\":\\\"xxx\\\"}] ]\\n\" +\n                \"]\";\n        Object[] values = HSFJSONUtils.parseInvocationArguments(json, methodLocator);\n        assertNotNull(values);\n        assertEquals(2, values.length);\n        assertEquals(\"abc\", values[0]);\n\n        List list = (List) values[1];\n        assertEquals(\"xxx\", ((Model) list.get(0)).value);\n    }\n\n    public void test_invoke_array_3() throws Exception {\n        String json = \"[ \\n\" +\n                \"   [ \\\"java.lang.String\\\", \\\"com.alibaba.json.bvt.support.hsf.HSFJSONUtilsTest_0$Model[]\\\"],\\n\" +\n                \"    [ \\\"abc\\\", [{\\\"value\\\":\\\"xxx\\\"}] ]\\n\" +\n                \"]\";\n        Object[] values = HSFJSONUtils.parseInvocationArguments(json, methodLocator);\n        assertNotNull(values);\n        assertEquals(2, values.length);\n        assertEquals(\"abc\", values[0]);\n\n        Model[] list = (Model[]) values[1];\n        assertEquals(\"xxx\", ((Model) list[0]).value);\n    }\n\n    public void test_invoke_int() throws Exception {\n        String json = \"[ \\n\" +\n                \"   [ \\\"int\\\", \\\"long\\\"],\\n\" +\n                \"    [ 3,4 ]\\n\" +\n                \"]\";\n        Object[] values = HSFJSONUtils.parseInvocationArguments(json, methodLocator);\n        assertNotNull(values);\n        assertEquals(2, values.length);\n        assertEquals(3, ((Integer)values[0]).intValue());\n        assertEquals(4L, ((Long)values[1]).longValue());\n    }\n\n    public void test_invoke_int_obj_reverse() throws Exception {\n        String json = \"{ \\n\" +\n                \"    \\\"argsObjs\\\"   :   [ 3, 4],\\n\" +\n                \"    \\\"argsTypes\\\"  :  [ \\\"int\\\", \\\"long\\\"]\\n\" +\n                \"}\";\n        Object[] values = HSFJSONUtils.parseInvocationArguments(json, methodLocator);\n        assertNotNull(values);\n        assertEquals(2, values.length);\n        assertEquals(3, ((Integer)values[0]).intValue());\n        assertEquals(4L, ((Long)values[1]).longValue());\n    }\n\n    public void test_invoke_int_obj() throws Exception {\n        String json = \"{ \\n\" +\n                \"    \\\"argsTypes\\\"  :  [ \\\"int\\\", \\\"long\\\"],\\n\" +\n                \"    \\\"argsObjs\\\"   :   [ 3, 4 ]\\n\" +\n                \"}\";\n        Object[] values = HSFJSONUtils.parseInvocationArguments(json, methodLocator);\n        assertNotNull(values);\n        assertEquals(2, values.length);\n        assertEquals(3, ((Integer)values[0]).intValue());\n        assertEquals(4L, ((Long)values[1]).longValue());\n    }\n\n    public void test_invoke_int_obj_2() throws Exception {\n        String json = \"{ \\n\" +\n                \"    \\\"argsObjs\\\"   :   [ 3, 4 ]\\n\" +\n                \"}\";\n        Object[] values = HSFJSONUtils.parseInvocationArguments(json,  new MethodLocator() {\n\n            public Method findMethod(String[] types) {\n                return method_f5;\n            }\n        });\n        assertNotNull(values);\n        assertEquals(2, values.length);\n        assertEquals(3, ((Integer)values[0]).intValue());\n        assertEquals(4L, ((Long)values[1]).longValue());\n    }\n\n    public void test_invoke_int_2() throws Exception {\n        String json = \"[ \\n\" +\n                \"    null, [ 3,4 ]\\n\" +\n                \"]\";\n        Object[] values = HSFJSONUtils.parseInvocationArguments(json, new MethodLocator() {\n\n            public Method findMethod(String[] types) {\n                return method_f5;\n            }\n        });\n        assertNotNull(values);\n        assertEquals(2, values.length);\n        assertEquals(3, ((Integer)values[0]).intValue());\n        assertEquals(4L, ((Long)values[1]).longValue());\n    }\n//\n    public static class Service {\n        public void f2(String name, Model model) {\n\n        }\n\n        public void f3(String name, List<Model> models) {\n\n        }\n\n        public void f3(String name, Model[] models) {\n\n        }\n\n        public void f3(int a, long b) {\n\n        }\n    }\n\n    public static class Model {\n        public String value;\n    }\n\n    public static class User {\n        public String name;\n        public int id;\n        public int age;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/hsf/HSFJSONUtilsTest_2.java",
    "content": "package com.alibaba.json.bvt.support.hsf;\n\nimport com.alibaba.fastjson.support.hsf.HSFJSONUtils;\nimport com.alibaba.fastjson.support.hsf.MethodLocator;\nimport junit.framework.TestCase;\nimport net.minidev.json.JSONUtil;\n\nimport java.lang.reflect.Method;\n\npublic class HSFJSONUtilsTest_2 extends TestCase {\n    public void test_for_hsf() throws Exception {\n        final Method method = HSFJSONUtilsTest_2.class.getMethod(\"f\", VeryComplexDO.class);\n\n        String json = \"{\\n\" +\n                \"\\t\\\"argsTypes\\\":[\\\"com.alibaba.json.bvt.support.hsf.HSFJSONUtilsTest_2.VeryComplexDO\\\"],\\n\" +\n                \"\\t\\\"argsObjs\\\":[\\n\" +\n                \"\\t\\t{\\n\" +\n                \"\\t\\t\\t\\\"fshort\\\":2,\\n\" +\n                \"\\t\\t\\t\\\"pBaseDO\\\":{\\\"id\\\":45},\\n\" +\n                \"\\t\\t\\t\\\"pbyte\\\":3,\\n\" +\n                \"\\t\\t\\t\\\"pfloat\\\":1.2,\\n\" +\n                \"\\t\\t\\t\\\"pint\\\":69,\\n\" +\n                \"\\t\\t\\t\\\"plist\\\":[\\\"taobao\\\",\\\"java\\\",\\\"linux\\\"],\\n\" +\n                \"\\t\\t\\t\\\"plong\\\":56,\\n\" +\n                \"\\t\\t\\t\\\"plongArray\\\":[1,2,3,4,5,6],\\n\" +\n                \"\\t\\t\\t\\\"pmap\\\":{\\\"love\\\":\\\"taobao\\\",\\\"test\\\":\\\"HSF\\\",\\\"me\\\":\\\"you\\\"},\\n\" +\n                \"\\t\\t\\t\\\"ptreeset\\\":[\\\"aaa\\\",\\\"bbb\\\"]\\n\" +\n                \"\\t\\t\\t\\n\" +\n                \"\\t\\t}\\t\\t\\n\" +\n                \"\\t]\\n\" +\n                \"}\";\n\n        HSFJSONUtils.parseInvocationArguments(json, new MethodLocator() {\n\n            public Method findMethod(String[] types) {\n                return method;\n            }\n        });\n\n    }\n\n    public static void f(VeryComplexDO vo) {\n\n    }\n\n    public static class VeryComplexDO {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/hsf/HSFJSONUtilsTest_3.java",
    "content": "package com.alibaba.json.bvt.support.hsf;\n\nimport com.alibaba.fastjson.support.hsf.HSFJSONUtils;\nimport com.alibaba.fastjson.support.hsf.MethodLocator;\nimport junit.framework.TestCase;\n\nimport java.lang.reflect.Method;\n\npublic class HSFJSONUtilsTest_3 extends TestCase {\n    public void test_for_hsf() throws Exception {\n        final Method method = HSFJSONUtilsTest_3.class.getMethod(\"f\", int.class, long.class);\n\n        String json = \"[[1,2]]\";\n\n        Object[] values = HSFJSONUtils.parseInvocationArguments(json, new MethodLocator() {\n\n            public Method findMethod(String[] types) {\n                return method;\n            }\n        });\n\n        assertEquals(2, values.length);\n        assertEquals(1, values[0]);\n        assertEquals(2L, values[1]);\n    }\n\n    public void test_for_hsf_1() throws Exception {\n        final Method method = HSFJSONUtilsTest_3.class.getMethod(\"f\", int.class, long.class);\n\n        String json = \"[\\n\" +\n                \"[1, 2]\\n\" +\n                \"]\";\n\n        Object[] values = HSFJSONUtils.parseInvocationArguments(json, new MethodLocator() {\n\n            public Method findMethod(String[] types) {\n                return method;\n            }\n        });\n\n        assertEquals(2, values.length);\n        assertEquals(1, values[0]);\n        assertEquals(2L, values[1]);\n    }\n\n    public void test_for_hsf_2() throws Exception {\n        final Method method = HSFJSONUtilsTest_3.class.getMethod(\"f\", int.class, long.class);\n\n        String json = \"[[\\\"1\\\",\\\"2\\\"]]\";\n\n        Object[] values = HSFJSONUtils.parseInvocationArguments(json, new MethodLocator() {\n\n            public Method findMethod(String[] types) {\n                return method;\n            }\n        });\n\n        assertEquals(2, values.length);\n        assertEquals(1, values[0]);\n        assertEquals(2L, values[1]);\n    }\n\n    public static void f(int a, long b) {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/hsf/HSFJSONUtilsTest_4.java",
    "content": "package com.alibaba.json.bvt.support.hsf;\n\nimport com.alibaba.fastjson.support.hsf.HSFJSONUtils;\nimport com.alibaba.fastjson.support.hsf.MethodLocator;\nimport junit.framework.TestCase;\n\nimport java.io.Serializable;\nimport java.lang.reflect.Method;\nimport java.math.BigDecimal;\nimport java.util.HashSet;\n\npublic class HSFJSONUtilsTest_4 extends TestCase {\n    public void test_for_hsf() throws Exception {\n        final Method method = HSFJSONUtilsTest_4.class.getMethod(\"f\", HashSet.class, BigDecimalDO.class);\n\n        String json = \"{\\\"argsTypes\\\":[\\\"java.util.HashSet\\\",\\\"com.alibaba.json.bvt.support.hsf.HSFJSONUtilsTest_4$BigDecimalDO\\\"],\\\"argsObjs\\\":[[{\\\"bd\\\":10.12379}],{\\\"$ref\\\":\\\"$.argsObjs[0][0]\\\"}]}\";\n\n        Object[] values = HSFJSONUtils.parseInvocationArguments(json, new MethodLocator() {\n\n            public Method findMethod(String[] types) {\n                return method;\n            }\n        });\n\n        assertEquals(2, values.length);\n\n        HashSet<BigDecimalDO> set = (HashSet<BigDecimalDO>) values[0];\n        assertEquals(1, set.size());\n        assertSame(set.iterator().next(), values[1]);\n    }\n\n    public static void f(HashSet<BigDecimalDO> a, BigDecimalDO b) {\n\n    }\n\n    public static class BigDecimalDO implements Serializable {\n\n        /**\n         * serialVersionUID\n         */\n        private static final long serialVersionUID = 1081203063524239676L;\n\n        private BigDecimal bd = null;\n\n        public BigDecimal getBd() {\n            return bd;\n        }\n\n        public void setBd(BigDecimal bd) {\n            this.bd = bd;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/jaxrs/FastJsonProviderTest.java",
    "content": "package com.alibaba.json.bvt.support.jaxrs;\n\nimport com.alibaba.fastjson.serializer.SerializeFilter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.fastjson.serializer.ValueFilter;\nimport com.alibaba.fastjson.support.config.FastJsonConfig;\nimport com.alibaba.fastjson.support.jaxrs.FastJsonProvider;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport javax.ws.rs.WebApplicationException;\nimport javax.ws.rs.core.MediaType;\nimport javax.ws.rs.core.MultivaluedHashMap;\nimport java.io.ByteArrayInputStream;\nimport java.io.ByteArrayOutputStream;\nimport java.io.InputStream;\nimport java.io.OutputStream;\nimport java.nio.charset.Charset;\n\npublic class FastJsonProviderTest extends TestCase {\n\n    @SuppressWarnings(\"deprecation\")\n    public void test_1() throws Exception {\n\n        FastJsonProvider provider1 = new FastJsonProvider(\"UTF-8\");\n        Assert.assertEquals(\"UTF-8\", provider1.getCharset().name());\n\n        FastJsonProvider provider2 = new FastJsonProvider();\n\n        provider2.setCharset(Charset.forName(\"GBK\"));\n        Assert.assertEquals(\"GBK\", provider2.getCharset().name());\n\n        Assert.assertNull(provider2.getDateFormat());\n        provider2.setDateFormat(\"yyyyMMdd\");\n\n        provider2.setFeatures(SerializerFeature.IgnoreErrorGetter);\n        Assert.assertEquals(1, provider2.getFeatures().length);\n        Assert.assertEquals(SerializerFeature.IgnoreErrorGetter,\n                provider2.getFeatures()[0]);\n\n        provider2.setFilters(serializeFilter);\n        Assert.assertEquals(1, provider2.getFilters().length);\n        Assert.assertEquals(serializeFilter, provider2.getFilters()[0]);\n\n        FastJsonProvider provider = new FastJsonProvider(new Class[]{VO.class});\n\n        Assert.assertNotNull(provider.getFastJsonConfig());\n\n        FastJsonConfig fastJsonConfig = new FastJsonConfig();\n        fastJsonConfig.setWriteContentLength(false);\n        provider.setFastJsonConfig(fastJsonConfig);\n\n        Assert.assertEquals(true, provider.isReadable(VO.class, VO.class, null, MediaType.APPLICATION_JSON_TYPE));\n        Assert.assertEquals(true, provider.isWriteable(VO.class, VO.class, null, MediaType.APPLICATION_JSON_TYPE));\n        Assert.assertEquals(true, provider.isReadable(VO.class, VO.class, null, MediaType.APPLICATION_FORM_URLENCODED_TYPE));\n        Assert.assertEquals(true, provider.isWriteable(VO.class, VO.class, null, MediaType.APPLICATION_FORM_URLENCODED_TYPE));\n        Assert.assertEquals(false, provider.isReadable(VO.class, VO.class, null, MediaType.APPLICATION_XML_TYPE));\n        Assert.assertEquals(false, provider.isWriteable(VO.class, VO.class, null, MediaType.APPLICATION_XML_TYPE));\n        Assert.assertEquals(false, provider.isReadable(String.class, String.class, null, MediaType.valueOf(\"application/javascript\")));\n        Assert.assertEquals(false, provider.isWriteable(String.class, String.class, null, MediaType.valueOf(\"application/x-javascript\")));\n        Assert.assertEquals(false, provider.isReadable(String.class, String.class, null, MediaType.valueOf(\"applications/+json\")));\n        Assert.assertEquals(false, provider.isWriteable(String.class, String.class, null, MediaType.valueOf(\"applications/x-json\")));\n        Assert.assertEquals(false, provider.isReadable(null, null, null, MediaType.valueOf(\"application/x-javascript\")));\n        Assert.assertEquals(false, provider.isWriteable(null, null, null, null));\n        Assert.assertEquals(false, provider.isReadable(InputStream.class, null, null, MediaType.valueOf(\"application/x-javascript\")));\n        Assert.assertEquals(false, provider.isWriteable(OutputStream.class, null, null, null));\n\n\n        VO vo = (VO) provider.readFrom(null, VO.class, null, MediaType.APPLICATION_JSON_TYPE, null, new ByteArrayInputStream(\"{\\\"id\\\":123}\".getBytes(Charset\n                .forName(\"UTF-8\"))));\n        Assert.assertEquals(123, vo.getId());\n\n        final ByteArrayOutputStream byteOut = new ByteArrayOutputStream();\n        provider.writeTo(vo, VO.class, VO.class, null, MediaType.APPLICATION_JSON_TYPE, new MultivaluedHashMap<String, Object>(), byteOut);\n\n        byte[] bytes = byteOut.toByteArray();\n        Assert.assertEquals(\"{\\\"id\\\":123}\", new String(bytes, \"UTF-8\"));\n\n        provider.getSize(vo, VO.class, VO.class, null, MediaType.APPLICATION_JSON_TYPE);\n\n        try {\n            provider.readFrom(null, VO.class, null, MediaType.APPLICATION_JSON_TYPE, null, new ByteArrayInputStream(\"\\\"id\\\":123\".getBytes(Charset\n                    .forName(\"UTF-8\"))));\n        } catch (WebApplicationException ex) {\n            Assert.assertNotNull(ex);\n        }\n    }\n\n    private SerializeFilter serializeFilter = new ValueFilter() {\n        @Override\n        public Object process(Object object, String name, Object value) {\n            if (value == null) {\n                return \"\";\n            }\n            if (value instanceof Number) {\n                return String.valueOf(value);\n            }\n            return value;\n        }\n    };\n\n    public static class VO {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/jaxrs/mock/entity/FastJsonParentTestVO.java",
    "content": "/**\r\n * <p>Title: FastJsonParentTestVO.java</p>\r\n * <p>Description: FastJsonParentTestVO</p>\r\n * <p>Package: com.alibaba.json.bvt.support.spring.mock.entity</p>\r\n * <p>Company: www.github.com/DarkPhoenixs</p>\r\n * <p>Copyright: Dark Phoenixs (Open-Source Organization) 2016</p>\r\n */\r\npackage com.alibaba.json.bvt.support.jaxrs.mock.entity;\r\n\r\nimport java.util.List;\r\n\r\n/**\r\n * <p>Title: FastJsonParentTestVO</p>\r\n * <p>Description: </p>\r\n *\r\n * @since 2016年4月20日\r\n * @author Victor.Zxy\r\n * @version 1.0\r\n */\r\npublic class FastJsonParentTestVO {\r\n\r\n\tprivate String name;\r\n\t\r\n\tprivate List<FastJsonSonTestVO> sonList;\r\n\t\r\n\t/**\r\n\t * @return the name\r\n\t */\r\n\tpublic String getName() {\r\n\t\treturn name;\r\n\t}\r\n\r\n\t/**\r\n\t * @param name the name to set\r\n\t */\r\n\tpublic void setName(String name) {\r\n\t\tthis.name = name;\r\n\t}\r\n\r\n\t/**\r\n\t * @return the sonList\r\n\t */\r\n\tpublic List<FastJsonSonTestVO> getSonList() {\r\n\t\treturn sonList;\r\n\t}\r\n\r\n\t/**\r\n\t * @param sonList the sonList to set\r\n\t */\r\n\tpublic void setSonList(List<FastJsonSonTestVO> sonList) {\r\n\t\tthis.sonList = sonList;\r\n\t}\r\n\t\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/jaxrs/mock/entity/FastJsonSonTestVO.java",
    "content": "/**\r\n * <p>Title: FastJsonSonTestVO.java</p>\r\n * <p>Description: FastJsonSonTestVO</p>\r\n * <p>Package: com.alibaba.json.bvt.support.spring.mock.entity</p>\r\n * <p>Company: www.github.com/DarkPhoenixs</p>\r\n * <p>Copyright: Dark Phoenixs (Open-Source Organization) 2016</p>\r\n */\r\npackage com.alibaba.json.bvt.support.jaxrs.mock.entity;\r\n\r\n/**\r\n * <p>Title: FastJsonSonTestVO</p>\r\n * <p>Description: </p>\r\n *\r\n * @since 2016年4月20日\r\n * @author Victor.Zxy\r\n * @version 1.0\r\n */\r\npublic class FastJsonSonTestVO {\r\n\r\n\tprivate String name;\r\n\r\n\t/**\r\n\t * @return the name\r\n\t */\r\n\tpublic String getName() {\r\n\t\treturn name;\r\n\t}\r\n\r\n\t/**\r\n\t * @param name the name to set\r\n\t */\r\n\tpublic void setName(String name) {\r\n\t\tthis.name = name;\r\n\t}\r\n\t\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/jaxrs/mock/entity/FastJsonTestVO.java",
    "content": "/**\r\n * <p>Title: FastJsonTestVO.java</p>\r\n * <p>Description: FastJsonTestVO</p>\r\n * <p>Package: com.alibaba.json.bvt.support.spring.entity</p>\r\n * <p>Company: www.github.com/DarkPhoenixs</p>\r\n * <p>Copyright: Dark Phoenixs (Open-Source Organization) 2016</p>\r\n */\r\npackage com.alibaba.json.bvt.support.jaxrs.mock.entity;\r\n\r\n/**\r\n * <p>Title: FastJsonTestVO</p>\r\n * <p>Description: </p>\r\n *\r\n * @since 2016年4月20日\r\n * @author Victor.Zxy\r\n * @version 1.0\r\n */\r\npublic class FastJsonTestVO {\r\n\r\n\tprivate int id;\r\n\t\r\n\tprivate String name;\r\n\r\n\t/**\r\n\t * @return the id\r\n\t */\r\n\tpublic int getId() {\r\n\t\treturn id;\r\n\t}\r\n\r\n\t/**\r\n\t * @param id the id to set\r\n\t */\r\n\tpublic void setId(int id) {\r\n\t\tthis.id = id;\r\n\t}\r\n\r\n\t/**\r\n\t * @return the name\r\n\t */\r\n\tpublic String getName() {\r\n\t\treturn name;\r\n\t}\r\n\r\n\t/**\r\n\t * @param name the name to set\r\n\t */\r\n\tpublic void setName(String name) {\r\n\t\tthis.name = name;\r\n\t}\r\n\t\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/jaxrs/mock/service/FastJsonRestfulServiceTest.java",
    "content": "/**\r\n * <p>Title: FastJsonRestfulService.java</p>\r\n * <p>Description: FastJsonRestfulService</p>\r\n * <p>Package: com.alibaba.json.bvt.support.jaxrs.mock.service</p>\r\n * <p>Company: www.github.com/DarkPhoenixs</p>\r\n * <p>Copyright: Dark Phoenixs (Open-Source Organization) 2016</p>\r\n */\r\npackage com.alibaba.json.bvt.support.jaxrs.mock.service;\r\n\r\nimport java.util.List;\r\n\r\nimport javax.ws.rs.Consumes;\r\nimport javax.ws.rs.POST;\r\nimport javax.ws.rs.Path;\r\nimport javax.ws.rs.Produces;\r\nimport javax.ws.rs.core.MediaType;\r\n\r\nimport com.alibaba.fastjson.JSONObject;\r\nimport com.alibaba.json.bvt.support.spring.mock.entity.FastJsonParentTestVO;\r\nimport com.alibaba.json.bvt.support.spring.mock.entity.FastJsonTestVO;\r\n\r\n/**\r\n * <p>Title: FastJsonRestfulService</p>\r\n * <p>Description: </p>\r\n *\r\n * @since 2016年4月20日\r\n * @author Victor.Zxy\r\n * @version 1.0\r\n */\r\n@Path(\"fastjson\")\r\npublic interface FastJsonRestfulServiceTest {\r\n\r\n\t@POST\r\n\t@Path(\"/test1\")\r\n\t@Produces(MediaType.APPLICATION_JSON)\r\n\t@Consumes(MediaType.APPLICATION_JSON)\r\n\tpublic JSONObject test1(FastJsonTestVO vo);\r\n\t\r\n\t@POST\r\n\t@Path(\"/test2\")\r\n\t@Produces(MediaType.APPLICATION_JSON)\r\n\t@Consumes(MediaType.APPLICATION_JSON)\r\n\tpublic JSONObject test2(List<FastJsonParentTestVO> vos);\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/jaxrs/mock/service/FastJsonRestfulServiceTestImpl.java",
    "content": "/**\r\n * <p>Title: FastJsonRestfulServiceImpl.java</p>\r\n * <p>Description: FastJsonRestfulServiceImpl</p>\r\n * <p>Package: com.alibaba.json.bvt.support.jaxrs.mock.service</p>\r\n * <p>Company: www.github.com/DarkPhoenixs</p>\r\n * <p>Copyright: Dark Phoenixs (Open-Source Organization) 2016</p>\r\n */\r\npackage com.alibaba.json.bvt.support.jaxrs.mock.service;\r\n\r\nimport java.util.List;\r\n\r\nimport org.springframework.stereotype.Service;\r\n\r\nimport com.alibaba.fastjson.JSONObject;\r\nimport com.alibaba.json.bvt.support.spring.mock.entity.FastJsonParentTestVO;\r\nimport com.alibaba.json.bvt.support.spring.mock.entity.FastJsonTestVO;\r\n\r\n/**\r\n * <p>Title: FastJsonRestfulServiceImpl</p>\r\n * <p>Description: </p>\r\n *\r\n * @since 2016年4月20日\r\n * @author Victor.Zxy\r\n * @version 1.0\r\n */\r\n@Service(\"fastJsonRestful\")\r\npublic class FastJsonRestfulServiceTestImpl implements FastJsonRestfulServiceTest {\r\n\r\n\t@Override\r\n\tpublic JSONObject test1(FastJsonTestVO vo) {\r\n\r\n\t\tJSONObject jsonObj = new JSONObject();\r\n\t\t\r\n\t\tjsonObj.put(\"id\", vo.getId());\r\n\t\t\r\n\t\tjsonObj.put(\"name\", vo.getName());\r\n\t\t\r\n\t\treturn jsonObj;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic JSONObject test2(List<FastJsonParentTestVO> vos) {\r\n\r\n\t\tJSONObject jsonObj = new JSONObject();\r\n\t\t\r\n\t\tfor (FastJsonParentTestVO fastJsonParentTestVO : vos) {\r\n\t\t\t\r\n\t\t\tjsonObj.put(fastJsonParentTestVO.getName(), fastJsonParentTestVO.getSonList().size());\r\n\t\t}\r\n\t\t\r\n\t\treturn jsonObj;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/jaxrs/mock/testcase/FastJsonProviderTest.java",
    "content": "/**\r\n * <p>Title: TestIssue885.java</p>\r\n * <p>Description: TestIssue885</p>\r\n * <p>Package: com.alibaba.json.bvt.support.jaxrs.mock.testcase</p>\r\n * <p>Company: www.github.com/DarkPhoenixs</p>\r\n * <p>Copyright: Dark Phoenixs (Open-Source Organization) 2016</p>\r\n */\r\npackage com.alibaba.json.bvt.support.jaxrs.mock.testcase;\r\n\r\nimport javax.ws.rs.core.Application;\r\nimport javax.ws.rs.core.Response;\r\n\r\nimport org.apache.cxf.jaxrs.client.WebClient;\r\nimport org.apache.cxf.transport.servlet.CXFServlet;\r\nimport org.eclipse.jetty.server.Server;\r\nimport org.eclipse.jetty.servlet.ServletContextHandler;\r\nimport org.eclipse.jetty.servlet.ServletHolder;\r\nimport org.junit.Test;\r\nimport org.junit.runner.RunWith;\r\nimport org.springframework.test.context.ContextConfiguration;\r\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\r\nimport org.springframework.test.context.web.WebAppConfiguration;\r\nimport org.springframework.web.context.ContextLoaderListener;\r\n\r\nimport com.alibaba.fastjson.JSONObject;\r\n\r\n/**\r\n * <p>Title: TestIssue885</p>\r\n * <p>Description: </p>\r\n *\r\n * @since 2016年4月20日\r\n * @author Victor.Zxy\r\n * @version 1.0\r\n */\r\n@RunWith(SpringJUnit4ClassRunner.class)\r\n@WebAppConfiguration\r\n@ContextConfiguration(classes = Application.class)\r\npublic class FastJsonProviderTest {\r\n\r\n\tpublic final String REST_SERVICE_URL = \"http://localhost:8088/rest\";\r\n\r\n\tstatic {\r\n\r\n\t\tServer server = new Server(8088);\r\n\r\n\t\t// Register and map the dispatcher servlet\r\n\t\tfinal ServletHolder servletHolder = new ServletHolder(new CXFServlet());\r\n\t\tfinal ServletContextHandler context = new ServletContextHandler();\r\n\t\tcontext.setContextPath(\"/\");\r\n\t\tcontext.addServlet(servletHolder, \"/rest/*\");\r\n\t\tcontext.addEventListener(new ContextLoaderListener());\r\n\t\tcontext.setInitParameter(\r\n\t\t\t\t\"contextConfigLocation\",\r\n\t\t\t\t\"classpath*:/config/applicationContext-rest.xml\");\r\n\t\tserver.setHandler(context);\r\n\t\ttry {\r\n\t\t\tserver.start();\r\n//\t\t\tserver.join();\r\n\t\t} catch (Exception e) {\r\n\t\t\te.printStackTrace();\r\n\t\t}\r\n\t}\r\n\t\r\n\t@Test\r\n\tpublic void test0() throws Exception {\r\n\t\t\r\n\t\tJSONObject json = new JSONObject();\r\n\t\t\r\n\t\tjson.put(\"id\", 123);\r\n\t\t\r\n\t\tjson.put(\"name\", \"哈哈哈\");\r\n\t\t\r\n\t\tWebClient client = WebClient.create(REST_SERVICE_URL);\r\n\t\t\r\n\t\tResponse response = client.path(\"/fastjson/test1\").accept(\"application/json\").type(\"application/json; charset=UTF-8\").post(json.toJSONString());\r\n\t\t\r\n\t\tSystem.out.println(response.readEntity(String.class));\r\n\t}\r\n\t\r\n\t@Test\r\n\tpublic void test1() throws Exception {\r\n\t\t\r\n\t\tJSONObject json = new JSONObject();\r\n\t\t\r\n\t\tjson.put(\"id\", 123);\r\n\t\t\r\n\t\tjson.put(\"name\", \"哈哈哈\");\r\n\t\t\r\n\t\tWebClient client = WebClient.create(REST_SERVICE_URL);\r\n\t\t\r\n\t\tResponse response = client.path(\"/fastjson/test1\").replaceQuery(\"pretty\").accept(\"application/json\").type(\"application/json; charset=UTF-8\").post(json.toJSONString());\r\n\t\t\r\n\t\tSystem.out.println(response.readEntity(String.class));\r\n\t}\r\n\t\r\n\t@Test\r\n\tpublic void test2() throws Exception {\r\n\t\t\r\n\t\tString jsonStr = \"[{\\\"name\\\":\\\"p1\\\",\\\"sonList\\\":[{\\\"name\\\":\\\"s1\\\"}]},{\\\"name\\\":\\\"p2\\\",\\\"sonList\\\":[{\\\"name\\\":\\\"s2\\\"},{\\\"name\\\":\\\"s3\\\"}]}]\";\r\n\t\t\r\n\t\tWebClient client = WebClient.create(REST_SERVICE_URL);\r\n\t\t\r\n\t\tResponse response = client.path(\"/fastjson/test2\").accept(\"application/json\").type(\"application/json; charset=UTF-8\").post(jsonStr);\r\n\t\t\r\n\t\tSystem.out.println(response.readEntity(String.class));\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/moneta/MoneyNumberTest.java",
    "content": "package com.alibaba.json.bvt.support.moneta;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.javamoney.moneta.Money;\n\nimport javax.money.Monetary;\nimport java.math.BigDecimal;\n\n/**\n * @Author ：Nanqi\n * @Date ：Created in 01:31 2020/7/4\n */\npublic class MoneyNumberTest extends TestCase {\n    public void test_for_issue() throws Exception {\n        // Integer\n        Money money = Money.of(5000, Monetary.getCurrency(\"EUR\"));\n        String moneyJSON = JSON.toJSONString(money);\n        Money moneyBack = JSON.parseObject(moneyJSON, Money.class);\n        assertEquals(5000, moneyBack.getNumber().intValue());\n\n        // Long\n        money = Money.of(1000L, Monetary.getCurrency(\"EUR\"));\n        moneyJSON = JSON.toJSONString(money);\n        moneyBack = JSON.parseObject(moneyJSON, Money.class);\n        assertEquals(1000, moneyBack.getNumber().longValue());\n\n        // Byte\n        money = Money.of(0x4a, Monetary.getCurrency(\"EUR\"));\n        moneyJSON = JSON.toJSONString(money);\n        moneyBack = JSON.parseObject(moneyJSON, Money.class);\n        assertEquals(74, moneyBack.getNumber().intValue());\n\n        // double\n        money = Money.of(new Double(1.12), Monetary.getCurrency(\"EUR\"));\n        moneyJSON = JSON.toJSONString(money);\n        moneyBack = JSON.parseObject(moneyJSON, Money.class);\n        assertEquals(1.12d, moneyBack.getNumber().doubleValue());\n\n        // float\n        money = Money.of(new Float(\"2.01\"), Monetary.getCurrency(\"EUR\"));\n        moneyJSON = JSON.toJSONString(money);\n        moneyBack = JSON.parseObject(moneyJSON, Money.class);\n        assertEquals(2.01f, moneyBack.getNumber().floatValue());\n\n        // short\n        money = Money.of(new Short(\"2\"), Monetary.getCurrency(\"EUR\"));\n        moneyJSON = JSON.toJSONString(money);\n        moneyBack = JSON.parseObject(moneyJSON, Money.class);\n        assertEquals(2, moneyBack.getNumber().shortValue());\n\n        // BigInteger\n        money = Money.of(new BigDecimal(\"999999999999999999999\"), Monetary.getCurrency(\"EUR\"));\n        moneyJSON = JSON.toJSONString(money);\n        moneyBack = JSON.parseObject(moneyJSON, Money.class);\n        assertEquals(\"999999999999999999999\", moneyBack.getNumber().toString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/moneta/MoneyTest.java",
    "content": "package com.alibaba.json.bvt.support.moneta;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.javamoney.moneta.Money;\n\nimport javax.money.Monetary;\nimport java.math.BigDecimal;\n\npublic class MoneyTest extends TestCase {\n    public void test_for_issue() throws Exception {\n        Money money = Money.of(new BigDecimal(\"321.789\"), Monetary.getCurrency(\"EUR\"));\n\n        String json = JSON.toJSONString(money);\n        assertEquals(\"{\\\"numberStripped\\\":321.789,\\\"currency\\\":\\\"EUR\\\"}\", json);\n        Money money2 = JSON.parseObject(json, Money.class);\n        assertEquals(Monetary.getCurrency(\"EUR\"), money2.getCurrency());\n        assertEquals(new BigDecimal(\"321.789\"), money2.getNumber().numberValue(BigDecimal.class));\n    }\n\n    public void test_compatible() throws Exception {\n        String json = \"{\\\"context\\\":{\\\"amountType\\\":\\\"org.javamoney.moneta.Money\\\",\\\"empty\\\":false,\\\"fixedScale\\\":false,\\\"maxScale\\\":-1,\\\"precision\\\":256},\\\"currency\\\":{\\\"context\\\":{\\\"empty\\\":false,\\\"providerName\\\":\\\"java.util.Currency\\\"},\\\"currencyCode\\\":\\\"EUR\\\",\\\"defaultFractionDigits\\\":2,\\\"numericCode\\\":978},\\\"factory\\\":{\\\"amountType\\\":\\\"org.javamoney.moneta.Money\\\",\\\"defaultMonetaryContext\\\":{\\\"amountType\\\":\\\"org.javamoney.moneta.Money\\\",\\\"empty\\\":false,\\\"fixedScale\\\":false,\\\"maxScale\\\":63,\\\"precision\\\":0},\\\"maximalMonetaryContext\\\":{\\\"amountType\\\":\\\"org.javamoney.moneta.Money\\\",\\\"empty\\\":false,\\\"fixedScale\\\":false,\\\"maxScale\\\":-1,\\\"precision\\\":0}},\\\"negative\\\":false,\\\"negativeOrZero\\\":false,\\\"number\\\":{\\\"amountFractionDenominator\\\":1000,\\\"amountFractionNumerator\\\":789,\\\"numberType\\\":\\\"java.math.BigDecimal\\\",\\\"precision\\\":6,\\\"scale\\\":3},\\\"numberStripped\\\":321.789,\\\"positive\\\":true,\\\"positiveOrZero\\\":true,\\\"zero\\\":false}\";\n\n        Money money = JSON.parseObject(json, Money.class);\n        assertEquals(Monetary.getCurrency(\"EUR\"), money.getCurrency());\n        assertEquals(new BigDecimal(\"321.789\"), money.getNumber().numberValue(BigDecimal.class));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/oracle/TestOracleDATE.java",
    "content": "package com.alibaba.json.bvt.support.oracle;\n\nimport java.sql.Timestamp;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\nimport oracle.sql.TIMESTAMP;\n\npublic class TestOracleDATE extends TestCase {\n    public void test_0 () throws Exception {\n        Timestamp date = new Timestamp(System.currentTimeMillis());\n        TIMESTAMP timestamp = new TIMESTAMP(date);\n        \n        String text = JSON.toJSONString(timestamp);\n        Assert.assertEquals(date.getTime(), Long.parseLong(text));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/oracle/TestOracleTIMESTAMP.java",
    "content": "package com.alibaba.json.bvt.support.oracle;\n\nimport java.sql.Timestamp;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\nimport oracle.sql.DATE;\n\npublic class TestOracleTIMESTAMP extends TestCase {\n    public void test_0 () throws Exception {\n        Timestamp date = new Timestamp(System.currentTimeMillis());\n        DATE timestamp = new DATE(date);\n        \n        String text = JSON.toJSONString(timestamp);\n        Assert.assertEquals((date.getTime() / 1000) * 1000, Long.parseLong(text));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/retrofit/Retrofit2ConverterFactoryTest0.java",
    "content": "package com.alibaba.json.bvt.support.retrofit;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.fastjson.support.config.FastJsonConfig;\nimport com.alibaba.fastjson.support.retrofit.Retrofit2ConverterFactory;\nimport junit.framework.TestCase;\nimport okhttp3.Headers;\nimport okhttp3.RequestBody;\nimport okhttp3.ResponseBody;\nimport okhttp3.internal.http.RealResponseBody;\nimport okio.Buffer;\nimport org.junit.Assert;\n\nimport java.nio.charset.Charset;\n\npublic class Retrofit2ConverterFactoryTest0 extends TestCase {\n    public void test_for_coverage() throws Exception {\n        Retrofit2ConverterFactory f = new Retrofit2ConverterFactory();\n        f.getParserConfig();\n        f.getParserFeatures();\n        f.getParserFeatureValues();\n        f.getSerializeConfig();\n        f.getSerializerFeatures();\n        f.setParserConfig(ParserConfig.getGlobalInstance());\n        f.setParserFeatures(new Feature[0]);\n        f.setParserFeatureValues(0);\n        f.setSerializeConfig(SerializeConfig.globalInstance);\n        f.setSerializerFeatures(new SerializerFeature[0]);\n        f.getFastJsonConfig();\n        f.setFastJsonConfig(new FastJsonConfig());\n        f.requestBodyConverter(Model.class, null, null, null);\n        f.responseBodyConverter(Model.class, null, null);\n\n        final Model model = new Model().setId(1).setName(\"test\");\n        final String json = JSON.toJSONString(model);\n        final Buffer buffer = new Buffer().writeString(json, Charset.defaultCharset());\n        final Headers headers = Headers.of(\"Content-Type\", \"application/json; charset=UTF-8\");\n        final ResponseBody body = new RealResponseBody(headers, buffer);\n\n        RequestBody requestBody = Retrofit2ConverterFactory.create()\n                .requestBodyConverter(Model.class, null, null, null)\n                .convert(model);\n\n        Assert.assertNotEquals(requestBody.contentLength(), 0);\n\n        Model mode2 = (Model) Retrofit2ConverterFactory.create()\n                .responseBodyConverter(Model.class, null, null)\n                .convert(body);\n\n        Assert.assertEquals(JSON.toJSONString(mode2), json);\n    }\n\n    public static class Model {\n\n        private int id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public Model setId(int id) {\n            this.id = id;\n            return this;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public Model setName(String name) {\n            this.name = name;\n            return this;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/spring/FastJsonHttpMessageConverter4Test.java",
    "content": "package com.alibaba.json.bvt.support.spring;\n\nimport java.io.ByteArrayInputStream;\nimport java.io.ByteArrayOutputStream;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.OutputStream;\nimport java.lang.reflect.Method;\nimport java.nio.charset.Charset;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\nimport org.springframework.http.HttpHeaders;\nimport org.springframework.http.HttpInputMessage;\nimport org.springframework.http.HttpOutputMessage;\nimport org.springframework.http.MediaType;\n\nimport com.alibaba.fastjson.support.config.FastJsonConfig;\nimport com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter4;\n\npublic class FastJsonHttpMessageConverter4Test extends TestCase {\n    public FastJsonHttpMessageConverter4Test() {\n        \n    }\n\n\tpublic void test_1() throws Exception {\n\n\t\tFastJsonHttpMessageConverter4 converter = new FastJsonHttpMessageConverter4();\n\n\t\tAssert.assertNotNull(converter.getFastJsonConfig());\n\t\tconverter.setFastJsonConfig(new FastJsonConfig());\n\t\t\n\t\tconverter.canRead(VO.class, VO.class, MediaType.APPLICATION_JSON_UTF8);\n\n\t\tconverter.canWrite(VO.class, VO.class, MediaType.APPLICATION_JSON_UTF8);\n\t\t\n\t\tMethod method1 = FastJsonHttpMessageConverter4.class.getDeclaredMethod(\n\t\t\t\t\"supports\", Class.class);\n\t\tmethod1.setAccessible(true);\n\t\tmethod1.invoke(converter, int.class);\n\t\t\n\t\tHttpInputMessage input = new HttpInputMessage() {\n\n\t\t\tpublic HttpHeaders getHeaders() {\n\t\t\t\t// TODO Auto-generated method stub\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tpublic InputStream getBody() throws IOException {\n\t\t\t\treturn new ByteArrayInputStream(\"{\\\"id\\\":123}\".getBytes(Charset\n\t\t\t\t\t\t.forName(\"UTF-8\")));\n\t\t\t}\n\n\t\t};\n\t\tVO vo = (VO) converter.read(VO.class, VO.class, input);\n\t\tAssert.assertEquals(123, vo.getId());\n\n\t\tfinal ByteArrayOutputStream byteOut = new ByteArrayOutputStream();\n\t\tHttpOutputMessage out = new HttpOutputMessage() {\n\n\t\t\tpublic HttpHeaders getHeaders() {\n\t\t\t\treturn new HttpHeaders();\n\t\t\t}\n\n\t\t\tpublic OutputStream getBody() throws IOException {\n\t\t\t\treturn byteOut;\n\t\t\t}\n\t\t};\n\t\tconverter.write(vo, VO.class, MediaType.TEXT_PLAIN, out);\n\n\t\tbyte[] bytes = byteOut.toByteArray();\n\t\tAssert.assertEquals(\"{\\\"id\\\":123}\", new String(bytes, \"UTF-8\"));\n\t\t\n\t\tMethod method2 = FastJsonHttpMessageConverter4.class.getDeclaredMethod(\n\t\t\t\t\"readInternal\", Class.class, HttpInputMessage.class);\n\t\tmethod2.setAccessible(true);\n\t\tmethod2.invoke(converter, VO.class, input);\n\t}\n\t\n\tpublic static class VO {\n\n\t\tprivate int id;\n\n\t\tpublic int getId() {\n\t\t\treturn id;\n\t\t}\n\n\t\tpublic void setId(int id) {\n\t\t\tthis.id = id;\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/spring/FastJsonHttpMessageConverterTest.java",
    "content": "package com.alibaba.json.bvt.support.spring;\n\nimport java.io.ByteArrayInputStream;\nimport java.io.ByteArrayOutputStream;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.OutputStream;\nimport java.lang.reflect.Method;\nimport java.nio.charset.Charset;\nimport java.util.Arrays;\nimport java.util.Collections;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\nimport org.springframework.http.HttpHeaders;\nimport org.springframework.http.HttpInputMessage;\nimport org.springframework.http.HttpOutputMessage;\nimport org.springframework.http.MediaType;\n\nimport com.alibaba.fastjson.serializer.SerializeFilter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.fastjson.serializer.ValueFilter;\nimport com.alibaba.fastjson.support.config.FastJsonConfig;\nimport com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;\n\npublic class FastJsonHttpMessageConverterTest extends TestCase {\n\n\t@SuppressWarnings(\"deprecation\")\n\tpublic void test_read() throws Exception {\n\t\tFastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();\n\t\tconverter.setCharset(Charset.forName(\"UTF-8\"));\n\t\tAssert.assertEquals(Charset.forName(\"UTF-8\"), converter.getCharset());\n\n\t\tconverter.setFeatures(SerializerFeature.BrowserCompatible);\n\t\tAssert.assertEquals(1, converter.getFeatures().length);\n\t\tAssert.assertEquals(SerializerFeature.BrowserCompatible,\n\t\t\t\tconverter.getFeatures()[0]);\n\n\t\tAssert.assertNull(converter.getDateFormat());\n\t\tconverter.setDateFormat(\"yyyyMMdd\");\n\n\t\tconverter.setFilters(serializeFilter);\n\t\tAssert.assertEquals(1, converter.getFilters().length);\n\t\tAssert.assertEquals(serializeFilter, converter.getFilters()[0]);\n\n\t\tconverter.addSerializeFilter(serializeFilter);\n\t\tAssert.assertEquals(2, converter.getFilters().length);\n\t\tconverter.addSerializeFilter(null);\n\n\t\tconverter.setSupportedMediaTypes(Arrays\n\t\t\t\t.asList(new MediaType[] { MediaType.APPLICATION_JSON_UTF8 }));\n\t\tAssert.assertEquals(1, converter.getSupportedMediaTypes().size());\n\n\t\tMethod method = FastJsonHttpMessageConverter.class.getDeclaredMethod(\n\t\t\t\t\"supports\", Class.class);\n\t\tmethod.setAccessible(true);\n\t\tmethod.invoke(converter, int.class);\n\n\t\tHttpInputMessage input = new HttpInputMessage() {\n\n\t\t\tpublic HttpHeaders getHeaders() {\n\t\t\t\t// TODO Auto-generated method stub\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tpublic InputStream getBody() throws IOException {\n\t\t\t\treturn new ByteArrayInputStream(\"{\\\"id\\\":123}\".getBytes(Charset\n\t\t\t\t\t\t.forName(\"UTF-8\")));\n\t\t\t}\n\n\t\t};\n\t\tVO vo = (VO) converter.read(VO.class, input);\n\t\tAssert.assertEquals(123, vo.getId());\n\n\t\tfinal ByteArrayOutputStream byteOut = new ByteArrayOutputStream();\n\t\tHttpOutputMessage out = new HttpOutputMessage() {\n\n\t\t\tpublic HttpHeaders getHeaders() {\n\t\t\t\treturn new HttpHeaders();\n\t\t\t}\n\n\t\t\tpublic OutputStream getBody() throws IOException {\n\t\t\t\treturn byteOut;\n\t\t\t}\n\t\t};\n\t\tconverter.write(vo, MediaType.TEXT_PLAIN, out);\n\n\t\tbyte[] bytes = byteOut.toByteArray();\n\t\tAssert.assertEquals(\"{\\\"id\\\":\\\"123\\\"}\", new String(bytes, \"UTF-8\"));\n\t}\n\n\tpublic void test_1() throws Exception {\n\n\t\tFastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();\n\n\t\tAssert.assertNotNull(converter.getFastJsonConfig());\n\t\tconverter.setFastJsonConfig(new FastJsonConfig());\n\n\t\tconverter.canRead(VO.class, MediaType.APPLICATION_JSON_UTF8);\n\t\tconverter.canWrite(VO.class, MediaType.APPLICATION_JSON_UTF8);\n\t\tconverter.canRead(VO.class, VO.class, MediaType.APPLICATION_JSON_UTF8);\n\t\tconverter.canWrite(VO.class, VO.class, MediaType.APPLICATION_JSON_UTF8);\n\n\t\tHttpInputMessage input = new HttpInputMessage() {\n\n\t\t\tpublic HttpHeaders getHeaders() {\n\t\t\t\t// TODO Auto-generated method stub\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tpublic InputStream getBody() throws IOException {\n\t\t\t\treturn new ByteArrayInputStream(\"{\\\"id\\\":123}\".getBytes(Charset\n\t\t\t\t\t\t.forName(\"UTF-8\")));\n\t\t\t}\n\n\t\t};\n\t\tVO vo = (VO) converter.read(VO.class, VO.class, input);\n\t\tAssert.assertEquals(123, vo.getId());\n\n\t\tfinal ByteArrayOutputStream byteOut = new ByteArrayOutputStream();\n\t\tHttpOutputMessage out = new HttpOutputMessage() {\n\n\t\t\tpublic HttpHeaders getHeaders() {\n\t\t\t\treturn new HttpHeaders();\n\t\t\t}\n\n\t\t\tpublic OutputStream getBody() throws IOException {\n\t\t\t\treturn byteOut;\n\t\t\t}\n\t\t};\n\t\tconverter.write(vo, VO.class, MediaType.TEXT_PLAIN, out);\n\n\t\tbyte[] bytes = byteOut.toByteArray();\n\t\tAssert.assertEquals(\"{\\\"id\\\":123}\", new String(bytes, \"UTF-8\"));\n\n\t\tconverter.setSupportedMediaTypes(Collections\n\t\t\t\t.singletonList(MediaType.APPLICATION_JSON));\n\n\t\tconverter.write(vo, VO.class, null, out);\n\n\t\tconverter.write(vo, VO.class, MediaType.ALL, out);\n\n\t\tHttpOutputMessage out2 = new HttpOutputMessage() {\n\n\t\t\tpublic HttpHeaders getHeaders() {\n\n\t\t\t\treturn new HttpHeaders() {\n\n\t\t\t\t\tprivate static final long serialVersionUID = 1L;\n\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic MediaType getContentType() {\n\n\t\t\t\t\t\treturn MediaType.APPLICATION_JSON;\n\t\t\t\t\t}\n\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic long getContentLength() {\n\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tpublic OutputStream getBody() throws IOException {\n\t\t\t\treturn byteOut;\n\t\t\t}\n\t\t};\n\n\t\tconverter.write(vo, VO.class, MediaType.ALL, out2);\n\n\t}\n\n\tprivate SerializeFilter serializeFilter = new ValueFilter() {\n\t\t@Override\n\t\tpublic Object process(Object object, String name, Object value) {\n\t\t\tif (value == null) {\n\t\t\t\treturn \"\";\n\t\t\t}\n\t\t\tif (value instanceof Number) {\n\t\t\t\treturn String.valueOf(value);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t};\n\n\tpublic static class VO {\n\n\t\tprivate int id;\n\n\t\tpublic int getId() {\n\t\t\treturn id;\n\t\t}\n\n\t\tpublic void setId(int id) {\n\t\t\tthis.id = id;\n\t\t}\n\n\t}\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/spring/FastJsonJsonViewTest.java",
    "content": "package com.alibaba.json.bvt.support.spring;\n\nimport com.alibaba.fastjson.serializer.SerializeFilter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.fastjson.serializer.ValueFilter;\nimport com.alibaba.fastjson.support.config.FastJsonConfig;\nimport com.alibaba.fastjson.support.spring.FastJsonJsonView;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\nimport org.junit.Test;\nimport org.springframework.mock.web.MockHttpServletRequest;\nimport org.springframework.mock.web.MockHttpServletResponse;\n\nimport java.nio.charset.Charset;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.Map;\n\npublic class FastJsonJsonViewTest extends TestCase {\n\n    @SuppressWarnings(\"deprecation\")\n    public void test_0() throws Exception {\n        FastJsonJsonView view = new FastJsonJsonView();\n\n        Assert.assertEquals(Charset.forName(\"UTF-8\"), view.getCharset());\n        view.setCharset(Charset.forName(\"GBK\"));\n        Assert.assertEquals(Charset.forName(\"GBK\"), view.getCharset());\n\n        Assert.assertNull(view.getDateFormat());\n        view.setDateFormat(\"yyyyMMdd\");\n\t\t\n        Assert.assertNotNull(view.getFeatures());\n        Assert.assertEquals(1, view.getFeatures().length);\n\n        view.setSerializerFeature(SerializerFeature.BrowserCompatible);\n        Assert.assertEquals(1, view.getFeatures().length);\n        Assert.assertEquals(SerializerFeature.BrowserCompatible, view.getFeatures()[0]);\n\n        view.setFeatures(SerializerFeature.DisableCheckSpecialChar, SerializerFeature.SortField);\n        Assert.assertEquals(2, view.getFeatures().length);\n        Assert.assertEquals(SerializerFeature.DisableCheckSpecialChar, view.getFeatures()[0]);\n        Assert.assertEquals(SerializerFeature.SortField, view.getFeatures()[1]);\n        \n        view.setFilters(serializeFilter);\n\t\tAssert.assertEquals(1, view.getFilters().length);\n\t\tAssert.assertEquals(serializeFilter, view.getFilters()[0]);\n\t\t\n        Map<String, Object> model = new HashMap<String, Object>();\n        MockHttpServletRequest request = new MockHttpServletRequest();\n        MockHttpServletResponse response = new MockHttpServletResponse();\n        view.render(model, request, response);\n        \n        view.setRenderedAttributes(null);\n        \n        view.setCharset(Charset.forName(\"UTF-8\"));\n        view.render(model, request, response);\n        \n        view.setUpdateContentLength(true);\n        view.setFeatures(SerializerFeature.BrowserCompatible);\n        view.render(model, request, response);\n        \n        view.setCharset(Charset.forName(\"GBK\"));\n        view.render(Collections.singletonMap(\"abc\", \"cde\"), request, response);\n        \n        view.setDisableCaching(false);\n        view.setUpdateContentLength(false);\n        view.render(model, request, response);\n        \n        view.setRenderedAttributes(new HashSet<String>(Collections.singletonList(\"abc\")));\n        view.render(Collections.singletonMap(\"abc\", \"cde\"), request, response);\n\n    }\n \n    public void test_1() throws Exception {\n    \t\n        FastJsonJsonView view = new FastJsonJsonView();\n        \n        Assert.assertNotNull(view.getFastJsonConfig());\n        view.setFastJsonConfig(new FastJsonConfig());\n        \n        Map<String, Object> model = new HashMap<String, Object>();\n        MockHttpServletRequest request = new MockHttpServletRequest();\n        MockHttpServletResponse response = new MockHttpServletResponse();\n        view.render(model, request, response);\n        \n        view.setRenderedAttributes(null);\n        view.render(model, request, response);\n        \n        view.setUpdateContentLength(true);\n        view.render(model, request, response);\n        \n        view.setExtractValueFromSingleKeyModel(true);\n        Assert.assertEquals(true, view.isExtractValueFromSingleKeyModel());\n        \n        view.setDisableCaching(true);\n        view.render(Collections.singletonMap(\"abc\", \"cde\"), request, response);\n\n    }\n\n    @Test\n    public  void test_jsonp() throws Exception {\n        FastJsonJsonView view = new FastJsonJsonView();\n\n        Assert.assertNotNull(view.getFastJsonConfig());\n        view.setFastJsonConfig(new FastJsonConfig());\n        view.setExtractValueFromSingleKeyModel(true);\n        view.setDisableCaching(true);\n\n        MockHttpServletRequest request = new MockHttpServletRequest();\n        request.addParameter(\"callback\", \"queryName\");\n        MockHttpServletResponse response = new MockHttpServletResponse();\n\n\n        Assert.assertEquals(true, view.isExtractValueFromSingleKeyModel());\n\n\n        view.render(Collections.singletonMap(\"abc\", \"cde中文\"), request, response);\n        String contentAsString = response.getContentAsString();\n        int contentLength = response.getContentLength();\n\n        Assert.assertEquals(contentLength, contentAsString.getBytes(view.getFastJsonConfig().getCharset().name()).length);\n    }\n\n    @Test\n    public  void test_jsonp_invalidParam() throws Exception {\n        FastJsonJsonView view = new FastJsonJsonView();\n\n        Assert.assertNotNull(view.getFastJsonConfig());\n        view.setFastJsonConfig(new FastJsonConfig());\n        view.setExtractValueFromSingleKeyModel(true);\n        view.setDisableCaching(true);\n\n        MockHttpServletRequest request = new MockHttpServletRequest();\n        request.addParameter(\"callback\", \"-methodName\");\n        MockHttpServletResponse response = new MockHttpServletResponse();\n\n\n        Assert.assertEquals(true, view.isExtractValueFromSingleKeyModel());\n\n\n        view.render(Collections.singletonMap(\"doesn't matter\", Collections.singletonMap(\"abc\", \"cde中文\")), request, response);\n        String contentAsString = response.getContentAsString();\n        Assert.assertTrue(contentAsString.startsWith(\"{\\\"abc\\\":\\\"cde中文\\\"}\"));\n\n    }\n    \n    private SerializeFilter serializeFilter = new ValueFilter() {\n\n\t\tpublic Object process(Object object, String name, Object value) {\n\t\t\tif (value == null) {\n\t\t\t\treturn \"\";\n\t\t\t}\n\t\t\tif (value instanceof Number) {\n\t\t\t\treturn String.valueOf(value);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t};\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/spring/FastJsonRedisSerializerTest.java",
    "content": "package com.alibaba.json.bvt.support.spring;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.fastjson.support.config.FastJsonConfig;\nimport com.alibaba.fastjson.support.spring.FastJsonRedisSerializer;\nimport com.google.common.base.Objects;\nimport org.hamcrest.core.Is;\nimport org.hamcrest.core.IsNull;\nimport org.junit.Assert;\nimport org.junit.Before;\nimport org.junit.Test;\n\nimport java.util.Arrays;\n\n\npublic class FastJsonRedisSerializerTest {\n    private FastJsonRedisSerializer<User> serializer;\n\n    @Before\n    public void setUp() {\n        this.serializer = new FastJsonRedisSerializer<User>(User.class);\n    }\n\n    @Test\n    public void test_1() {\n        User user = serializer.deserialize(serializer.serialize(new User(1, \"土豆\", 25)));\n        Assert.assertTrue(Objects.equal(user.getId(), 1));\n        Assert.assertTrue(Objects.equal(user.getName(), \"土豆\"));\n        Assert.assertTrue(Objects.equal(user.getAge(), 25));\n    }\n\n    @Test\n    public void test_2() {\n        Assert.assertThat(serializer.serialize(null), Is.is(new byte[0]));\n    }\n\n    @Test\n    public void test_3() {\n        Assert.assertThat(serializer.deserialize(new byte[0]), IsNull.nullValue());\n    }\n\n    @Test\n    public void test_4() {\n        Assert.assertThat(serializer.deserialize(null), IsNull.nullValue());\n    }\n\n    @Test\n    public void test_5() {\n        User user = new User(1, \"土豆\", 25);\n        byte[] serializedValue = serializer.serialize(user);\n        Arrays.sort(serializedValue); // corrupt serialization result\n        Assert.assertNull(serializer.deserialize(serializedValue));\n    }\n\n    /**\n     * for issue #2147\n     */\n    @Test\n    public void test_6() {\n\n        FastJsonConfig fastJsonConfig = new FastJsonConfig();\n\n        SerializerFeature[] serializerFeatures = new SerializerFeature[]{\n                SerializerFeature.WriteClassName\n        };\n        fastJsonConfig.setSerializerFeatures(serializerFeatures);\n\n        ParserConfig parserConfig = ParserConfig.getGlobalInstance();\n        parserConfig.setAutoTypeSupport(true);\n        fastJsonConfig.setParserConfig(parserConfig);\n\n        FastJsonRedisSerializer fastJsonRedisSerializer = new FastJsonRedisSerializer(Object.class);\n        Assert.assertNotNull(fastJsonRedisSerializer.getFastJsonConfig());\n        fastJsonRedisSerializer.setFastJsonConfig(fastJsonConfig);\n\n        User userSer = new User(1, \"土豆\", 25);\n\n        byte[] serializedValue = fastJsonRedisSerializer.serialize(userSer);\n        User userDes = (User) fastJsonRedisSerializer.deserialize(serializedValue);\n\n        Assert.assertEquals(userDes.getName(), \"土豆\");\n    }\n\n    static class User {\n        private Integer id;\n        private String name;\n        private Integer age;\n\n        public User() {\n        }\n\n        public User(Integer id, String name, Integer age) {\n            this.id = id;\n            this.name = name;\n            this.age = age;\n        }\n\n        public Integer getId() {\n            return id;\n        }\n\n        public void setId(Integer id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public Integer getAge() {\n            return age;\n        }\n\n        public void setAge(Integer age) {\n            this.age = age;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/spring/FastJsonpHttpMessageConverter4Test.java",
    "content": "package com.alibaba.json.bvt.support.spring;\n\nimport java.io.ByteArrayInputStream;\nimport java.io.ByteArrayOutputStream;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.OutputStream;\nimport java.lang.reflect.Method;\nimport java.nio.charset.Charset;\n\nimport org.junit.Assert;\nimport org.springframework.http.HttpHeaders;\nimport org.springframework.http.HttpInputMessage;\nimport org.springframework.http.HttpOutputMessage;\nimport org.springframework.http.MediaType;\n\nimport com.alibaba.fastjson.support.config.FastJsonConfig;\nimport com.alibaba.fastjson.support.spring.FastJsonpHttpMessageConverter4;\nimport com.alibaba.fastjson.support.spring.MappingFastJsonValue;\n\nimport junit.framework.TestCase;\n\npublic class FastJsonpHttpMessageConverter4Test extends TestCase {\n    public void test_1() throws Exception {\n\n        FastJsonpHttpMessageConverter4 converter = new FastJsonpHttpMessageConverter4();\n\n        Assert.assertNotNull(converter.getFastJsonConfig());\n        converter.setFastJsonConfig(new FastJsonConfig());\n\n        converter.canRead(VO.class, VO.class, MediaType.APPLICATION_JSON_UTF8);\n\n        converter.canWrite(VO.class, VO.class, MediaType.APPLICATION_JSON_UTF8);\n\n        Method method1 = FastJsonpHttpMessageConverter4.class.getDeclaredMethod(\"supports\", Class.class);\n        method1.setAccessible(true);\n        method1.invoke(converter, int.class);\n\n        HttpInputMessage input = new HttpInputMessage() {\n\n            public HttpHeaders getHeaders() {\n                return null;\n            }\n\n            public InputStream getBody() throws IOException {\n                return new ByteArrayInputStream(\"{\\\"id\\\":123}\".getBytes(Charset.forName(\"UTF-8\")));\n            }\n\n        };\n        VO vo = (VO) converter.read(VO.class, VO.class, input);\n        Assert.assertEquals(123, vo.getId());\n\n        final ByteArrayOutputStream byteOut = new ByteArrayOutputStream();\n        HttpOutputMessage out = new HttpOutputMessage() {\n\n            public HttpHeaders getHeaders() {\n                return new HttpHeaders();\n            }\n\n            public OutputStream getBody() throws IOException {\n                return byteOut;\n            }\n        };\n        converter.write(vo, VO.class, MediaType.TEXT_PLAIN, out);\n\n        byte[] bytes = byteOut.toByteArray();\n        Assert.assertEquals(\"{\\\"id\\\":123}\", new String(bytes, \"UTF-8\"));\n\n        Method method2 = FastJsonpHttpMessageConverter4.class.getDeclaredMethod(\"readInternal\", Class.class,\n                HttpInputMessage.class);\n        method2.setAccessible(true);\n        method2.invoke(converter, VO.class, input);\n    }\n\n    public void test_2() throws Exception {\n\n        FastJsonpHttpMessageConverter4 converter = new FastJsonpHttpMessageConverter4();\n\n        Assert.assertNotNull(converter.getFastJsonConfig());\n        converter.setFastJsonConfig(new FastJsonConfig());\n\n        converter.canRead(VO.class, VO.class, MediaType.APPLICATION_JSON_UTF8);\n\n        converter.canWrite(VO.class, VO.class, MediaType.APPLICATION_JSON_UTF8);\n\n        Method method1 = FastJsonpHttpMessageConverter4.class.getDeclaredMethod(\"supports\", Class.class);\n        method1.setAccessible(true);\n        method1.invoke(converter, int.class);\n\n        HttpInputMessage input = new HttpInputMessage() {\n\n            public HttpHeaders getHeaders() {\n                return null;\n            }\n\n            public InputStream getBody() throws IOException {\n                return new ByteArrayInputStream(\"{\\\"id\\\":123}\".getBytes(Charset.forName(\"UTF-8\")));\n            }\n\n        };\n        VO vo = (VO) converter.read(VO.class, VO.class, input);\n        Assert.assertEquals(123, vo.getId());\n\n        final ByteArrayOutputStream byteOut = new ByteArrayOutputStream();\n        HttpOutputMessage out = new HttpOutputMessage() {\n\n            public HttpHeaders getHeaders() {\n                return new HttpHeaders();\n            }\n\n            public OutputStream getBody() throws IOException {\n                return byteOut;\n            }\n        };\n        MappingFastJsonValue mappingFastJsonValue = new MappingFastJsonValue(vo);\n        mappingFastJsonValue.setJsonpFunction(\"callback\");\n        converter.write(mappingFastJsonValue, VO.class, MediaType.TEXT_PLAIN, out);\n\n        byte[] bytes = byteOut.toByteArray();\n        Assert.assertEquals(\"/**/callback({\\\"id\\\":123})\", new String(bytes, \"UTF-8\"));\n\n        Method method2 = FastJsonpHttpMessageConverter4.class.getDeclaredMethod(\"readInternal\", Class.class,\n                HttpInputMessage.class);\n        method2.setAccessible(true);\n        method2.invoke(converter, VO.class, input);\n    }\n\n    public static class VO {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/spring/FastjsonSockJsMessageCodecTest_encode.java",
    "content": "package com.alibaba.json.bvt.support.spring;\n\nimport org.junit.Assert;\nimport org.springframework.web.socket.sockjs.frame.Jackson2SockJsMessageCodec;\n\nimport com.alibaba.fastjson.support.spring.FastjsonSockJsMessageCodec;\n\nimport junit.framework.TestCase;\n\npublic class FastjsonSockJsMessageCodecTest_encode extends TestCase {\n    public void test_encode() throws Exception {\n        FastjsonSockJsMessageCodec fastjsonCodec = new FastjsonSockJsMessageCodec();\n        Jackson2SockJsMessageCodec jacksonCodec = new Jackson2SockJsMessageCodec();\n        \n        String v0 = \"a0\\\"\\0\", v1 = \"a1\";\n        String fastjsonResult = fastjsonCodec.encode(v0, v1);\n        String jacksonResult = jacksonCodec.encode(v0, v1);\n        Assert.assertEquals(jacksonResult, fastjsonResult);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/spring/GenericFastJsonRedisSerializerTest.java",
    "content": "package com.alibaba.json.bvt.support.spring;\n\nimport com.alibaba.fastjson.support.spring.GenericFastJsonRedisSerializer;\nimport com.alibaba.fastjson.util.IOUtils;\nimport com.google.common.base.Objects;\nimport com.google.common.collect.Lists;\nimport org.hamcrest.core.Is;\nimport org.hamcrest.core.IsNull;\nimport org.junit.Assert;\nimport org.junit.Before;\nimport org.junit.Test;\nimport org.springframework.data.redis.serializer.SerializationException;\n\nimport java.util.Arrays;\nimport java.util.List;\n\n\npublic class GenericFastJsonRedisSerializerTest {\n    private GenericFastJsonRedisSerializer serializer;\n\n    @Before\n    public void setUp() {\n        this.serializer = new GenericFastJsonRedisSerializer();\n    }\n\n    @Test\n    public void test_1() {\n        User user = (User) serializer.deserialize(serializer.serialize(new User(1, \"土豆\", 25)));\n        Assert.assertTrue(Objects.equal(user.getId(), 1));\n        Assert.assertTrue(Objects.equal(user.getName(), \"土豆\"));\n        Assert.assertTrue(Objects.equal(user.getAge(), 25));\n    }\n\n    @Test\n    public void test_2() {\n        Assert.assertThat(serializer.serialize(null), Is.is(new byte[0]));\n    }\n\n    @Test\n    public void test_3() {\n        Assert.assertThat(serializer.deserialize(new byte[0]), IsNull.nullValue());\n    }\n\n    @Test\n    public void test_4() {\n        Assert.assertThat(serializer.deserialize(null), IsNull.nullValue());\n    }\n\n    @Test(expected = SerializationException.class)\n    public void test_5() {\n        User user = new User(1, \"土豆\", 25);\n        byte[] serializedValue = serializer.serialize(user);\n        Arrays.sort(serializedValue); // corrupt serialization result\n        serializer.deserialize(serializedValue);\n    }\n\n    /**\n     * for issue #2155\n     */\n    @Test\n    public void test_6() {\n\n        BaseResult<List<String>> baseResult = new BaseResult<List<String>>();\n        baseResult.setCode(\"1000\");\n        baseResult.setMsg(\"success\");\n        baseResult.setData(Lists.newArrayList(\"测试1\", \"测试2\", \"测试3\"));\n\n        GenericFastJsonRedisSerializer genericFastJsonRedisSerializer = new GenericFastJsonRedisSerializer();\n        byte[] bytes = genericFastJsonRedisSerializer.serialize(baseResult);\n        BaseResult<List<String>> baseResult2 = (BaseResult<List<String>>) genericFastJsonRedisSerializer.deserialize(bytes);\n\n        Assert.assertEquals(baseResult2.getCode(), \"1000\");\n        Assert.assertEquals(baseResult2.getData().size(), 3);\n\n        String json = \"{\\n\" +\n                \"\\\"@type\\\": \\\"com.alibaba.json.bvt.support.spring.GenericFastJsonRedisSerializerTest$BaseResult\\\",\\n\" +\n                \"\\\"code\\\": \\\"1000\\\",\\n\" +\n                \"\\\"data\\\": [\\n\" +\n                \"\\\"按手动控制按钮\\\",\\n\" +\n                \"\\\"不停机\\\",\\n\" +\n                \"\\\"不转动\\\",\\n\" +\n                \"\\\"传动轴振动大\\\",\\n\" +\n                \"\\\"第一推进器\\\",\\n\" +\n                \"\\\"电机不运行\\\",\\n\" +\n                \"],\\n\" +\n                \"\\\"msg\\\": \\\"success\\\"\\n\" +\n                \"}\";\n\n        BaseResult<List<String>> baseResult3 = (BaseResult<List<String>>) genericFastJsonRedisSerializer.deserialize(json.getBytes(IOUtils.UTF8));\n        Assert.assertEquals(baseResult3.getCode(), \"1000\");\n        Assert.assertEquals(baseResult3.getData().size(), 6);\n    }\n\n    static class User {\n        private Integer id;\n        private String name;\n        private Integer age;\n\n        public User() {\n        }\n\n        public User(Integer id, String name, Integer age) {\n            this.id = id;\n            this.name = name;\n            this.age = age;\n        }\n\n        public Integer getId() {\n            return id;\n        }\n\n        public void setId(Integer id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public Integer getAge() {\n            return age;\n        }\n\n        public void setAge(Integer age) {\n            this.age = age;\n        }\n    }\n\n    static class BaseResult<T> {\n        public String getMsg() {\n            return msg;\n        }\n\n        public void setMsg(String msg) {\n            this.msg = msg;\n        }\n\n        public String getCode() {\n            return code;\n        }\n\n        public void setCode(String code) {\n            this.code = code;\n        }\n\n        public T getData() {\n            return data;\n        }\n\n        public void setData(T data) {\n            this.data = data;\n        }\n\n        private String msg;\n        private String code;\n        private T data;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/spring/data/PageToJSONTest.java",
    "content": "package com.alibaba.json.bvt.support.spring.data;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.junit.Assert;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.PageImpl;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\n\nimport junit.framework.TestCase;\n\npublic class PageToJSONTest extends TestCase {\n    public void test_page() throws Exception {\n        List<Post> postList = new ArrayList<Post>();\n        {\n            postList.add(new Post(1001));\n        }\n        \n        Page<Post> page = new PageImpl(postList);\n        \n        JSONObject obj = (JSONObject) JSON.toJSON(page);\n        Assert.assertNotNull(obj);\n        Assert.assertEquals(1, obj.getJSONArray(\"content\").size());\n    }\n    \n    public static class Post{\n        public int id;\n        \n        public Post() {\n            \n        }\n        \n        public Post(int id) {\n            this.id = id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/spring/messaging/MappingFastJsonMessageConverterTest.java",
    "content": "package com.alibaba.json.bvt.support.spring.messaging;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.support.config.FastJsonConfig;\nimport com.alibaba.fastjson.support.spring.messaging.MappingFastJsonMessageConverter;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\nimport org.springframework.messaging.Message;\nimport org.springframework.messaging.MessageHeaders;\n\n\npublic class MappingFastJsonMessageConverterTest extends TestCase {\n\n    public void test_1() throws Exception {\n\n        MappingFastJsonMessageConverter converter = new MappingFastJsonMessageConverter();\n\n        Assert.assertNotNull(converter.getFastJsonConfig());\n        converter.setFastJsonConfig(new FastJsonConfig());\n\n        VO p = new VO();\n        p.setId(1);\n\n        String pstr = JSON.toJSONString(p);\n\n        System.out.println(pstr);\n\n        TestMessage message = new TestMessage(pstr);\n\n        // test fromMessage/convertFromInternal\n        VO vo = (VO) converter.fromMessage(message, VO.class);\n        Assert.assertEquals(1, vo.getId());\n\n        // test toMessage/convertToInternal\n        Message message1 = converter.toMessage(vo, null);\n        System.out.println(message1.getPayload());\n        Assert.assertEquals(\"{\\\"id\\\":1}\", new String((byte[]) message1.getPayload()));\n\n//\t\t// test toMessage/convertToInternal\n        Message message2 = converter.toMessage(\"{\\\"id\\\":1}\", null);\n        System.out.println(message2.getPayload());\n        Assert.assertEquals(\"{\\\"id\\\":1}\", new String((byte[]) message2.getPayload()));\n\n        converter.setSerializedPayloadClass(String.class);\n\n        // test toMessage/convertToInternal\n        Message message3 = converter.toMessage(vo, null);\n        System.out.println(message3.getPayload());\n        Assert.assertEquals(\"{\\\"id\\\":1}\", message3.getPayload());\n\n//\t\t// test toMessage/convertToInternal\n        Message message4 = converter.toMessage(\"{\\\"id\\\":1}\", null);\n        System.out.println(message4.getPayload());\n        Assert.assertEquals(\"{\\\"id\\\":1}\", message4.getPayload());\n    }\n\n    public static class TestMessage<T> implements Message<T> {\n\n        private T payload;\n\n        public TestMessage(T payload) {\n            this.payload = payload;\n        }\n\n        @Override\n        public T getPayload() {\n            return (T) payload;\n        }\n\n        @Override\n        public MessageHeaders getHeaders() {\n            return null;\n        }\n    }\n\n    public static class VO {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n    }\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/spring/mock/controller/FastJsonControllerTest.java",
    "content": "/**\r\n * <p>Title: FastJsonControllerTest.java</p>\r\n * <p>Description: FastJsonControllerTest</p>\r\n * <p>Package: com.alibaba.json.bvt.support.spring.controller</p>\r\n * <p>Company: www.github.com/DarkPhoenixs</p>\r\n * <p>Copyright: Dark Phoenixs (Open-Source Organization) 2016</p>\r\n */\r\npackage com.alibaba.json.bvt.support.spring.mock.controller;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONObject;\r\nimport com.alibaba.json.bvt.support.spring.mock.entity.FastJsonEnumTestVO;\r\nimport com.alibaba.json.bvt.support.spring.mock.entity.FastJsonGenericityTestVO;\r\nimport com.alibaba.json.bvt.support.spring.mock.entity.FastJsonParentTestVO;\r\nimport com.alibaba.json.bvt.support.spring.mock.entity.FastJsonTestVO;\r\nimport com.alibaba.json.test.entity.Company;\r\nimport org.springframework.stereotype.Controller;\r\nimport org.springframework.web.bind.annotation.*;\r\n\r\nimport javax.servlet.http.HttpServletRequest;\r\nimport javax.servlet.http.HttpServletResponse;\r\nimport java.util.List;\r\n\r\n/**\r\n * <p>Title: FastJsonControllerTest</p>\r\n * <p>Description: </p>\r\n *\r\n * @author Victor.Zxy\r\n * @version 1.0\r\n * @since 2016年4月20日\r\n */\r\n@Controller\r\n@RequestMapping(\"fastjson\")\r\npublic class FastJsonControllerTest {\r\n\r\n    @RequestMapping(\"test1\")\r\n    public\r\n    @ResponseBody\r\n    JSONObject test1(@RequestBody FastJsonTestVO vo) {\r\n\r\n        JSONObject jsonObj = new JSONObject();\r\n\r\n        jsonObj.put(\"id\", vo.getId());\r\n\r\n        jsonObj.put(\"name\", vo.getName());\r\n\r\n        return jsonObj;\r\n    }\r\n\r\n    @RequestMapping(\"test2\")\r\n    public\r\n    @ResponseBody\r\n    JSONObject test1(@RequestBody List<FastJsonParentTestVO> vos) {\r\n\r\n        JSONObject jsonObj = new JSONObject();\r\n\r\n        for (FastJsonParentTestVO fastJsonParentTestVO : vos) {\r\n\r\n            jsonObj.put(fastJsonParentTestVO.getName(), fastJsonParentTestVO.getSonList().size());\r\n        }\r\n\r\n        return jsonObj;\r\n    }\r\n\r\n    @ResponseBody\r\n    @RequestMapping(value = \"test3\", method = RequestMethod.POST)\r\n    public Company test3(HttpServletRequest request, HttpServletResponse response) {\r\n        Company company = new Company();\r\n        return company;\r\n    }\r\n\r\n    @RequestMapping(\"test4\")\r\n    public\r\n    @ResponseBody\r\n    String test4(@RequestBody FastJsonGenericityTestVO<FastJsonTestVO> queryCondition) {\r\n\r\n        return JSON.toJSONString(queryCondition);\r\n    }\r\n\r\n    @RequestMapping(\"test5\")\r\n    public\r\n    @ResponseBody\r\n    String test5(@RequestBody FastJsonEnumTestVO vo) {\r\n\r\n        return JSON.toJSONString(vo);\r\n    }\r\n\r\n    @RequestMapping(value = \"/test6\", method = {RequestMethod.POST, RequestMethod.GET}, produces = {\"text/plain\", \"application/*\"})\r\n    public\r\n    @ResponseBody\r\n    Object test6(@RequestParam long userId, @RequestParam boolean flag) {\r\n\r\n        JSONObject jsonObject = new JSONObject();\r\n\r\n        jsonObject.put(\"userId\",userId);\r\n        jsonObject.put(\"flag\",flag);\r\n\r\n        System.out.println(jsonObject.toJSONString());\r\n\r\n        return jsonObject;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/spring/mock/controller/FastJsonViewAndJSONPControllerTest.java",
    "content": "package com.alibaba.json.bvt.support.spring.mock.controller;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.support.spring.annotation.FastJsonFilter;\nimport com.alibaba.fastjson.support.spring.annotation.FastJsonView;\nimport com.alibaba.fastjson.support.spring.annotation.ResponseJSONP;\nimport com.alibaba.json.bvt.support.spring.mock.entity.FastJsonEnumTestVO;\nimport com.alibaba.json.test.entity.Company;\nimport com.alibaba.json.test.entity.Department;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestBody;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\nimport java.util.concurrent.Callable;\n\n/**\n * FastJsonView注解测试controller\n * Created by yanquanyu on 17-5-31.\n */\n@ResponseJSONP\n@Controller\n@RequestMapping(\"jsonp-fastjsonview\")\npublic class FastJsonViewAndJSONPControllerTest {\n\n\n    @ResponseJSONP\n    @RequestMapping(\"test1\")\n    @FastJsonView(\n            include = {@FastJsonFilter(clazz = Company.class,props ={\"id\",\"name\"})})\n    public Company test1() {\n        Company company = new Company();\n        company.setId(100L);\n        company.setName(\"测试\");\n        company.setDescription(\"fastjsonview注解测试\");\n        company.setStock(\"haha\");\n        return company;\n    }\n\n\n    @ResponseJSONP\n    @RequestMapping(\"test2\")\n    @FastJsonView(\n            exclude = {@FastJsonFilter(clazz = Company.class,props ={\"id\",\"name\"})})\n    public Company test2() {\n        Company company = new Company();\n        company.setId(100L);\n        company.setName(\"测试\");\n        company.setDescription(\"fastjsonview注解测试\");\n        company.setStock(\"haha\");\n        return company;\n    }\n\n    @ResponseJSONP\n    @RequestMapping(\"test3\")\n    @FastJsonView(\n            include = {@FastJsonFilter(clazz = Company.class,props ={\"id\",\"name\",\"rootDepartment\"}),@FastJsonFilter(clazz = Department.class,props = {\"description\"})})\n    public Company test3() {\n        Company company = new Company();\n        company.setId(100L);\n        company.setName(\"测试\");\n        company.setDescription(\"fastjsonview注解测试\");\n        company.setStock(\"haha\");\n        Department department = new Department();\n        department.setName(\"部门1\");\n        department.setDescription(\"部门1描述\");\n        department.setId(1L);\n        company.setRootDepartment(department);\n        return company;\n    }\n\n    @ResponseJSONP\n    @RequestMapping(\"test4\")\n    @FastJsonView(\n            include = {@FastJsonFilter(clazz = Company.class,props ={\"id\",\"name\",\"rootDepartment\"})},\n            exclude = {@FastJsonFilter(clazz = Department.class,props = {\"description\", \"memebers\", \"children\"})})\n    public Company test4() {\n        Company company = new Company();\n        company.setId(100L);\n        company.setName(\"测试\");\n        company.setDescription(\"fastjsonview注解测试\");\n        company.setStock(\"haha\");\n        Department department = new Department();\n        department.setName(\"部门1\");\n        department.setDescription(\"部门1描述\");\n        department.setId(1L);\n        company.setRootDepartment(department);\n        return company;\n    }\n\n    @ResponseJSONP\n    @RequestMapping(\"test5\")\n    public\n    @ResponseBody\n    String test5(@RequestBody FastJsonEnumTestVO vo) {\n        return JSON.toJSONString(vo);\n    }\n\n    @ResponseJSONP(callback = \"customizedCallbackParamName\")\n    @RequestMapping(\"test7\")\n    public Company test7() {\n        Company company = new Company();\n        return company;\n    }\n\n    @ResponseJSONP\n    @RequestMapping(\"test8\")\n    public Callable<Company> test8(){\n        return new Callable<Company>() {\n            public Company call() throws Exception {\n                return new Company();\n            }\n        };\n    }\n\n\n    //使用类上面注解的 @ResponseJSONP\n    @RequestMapping(\"test9\")\n    public Company test9() {\n        Company company = new Company();\n        company.setId(100L);\n        return company;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/spring/mock/controller/FastJsonViewControllerTest.java",
    "content": "package com.alibaba.json.bvt.support.spring.mock.controller;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.support.spring.annotation.FastJsonFilter;\nimport com.alibaba.fastjson.support.spring.annotation.FastJsonView;\nimport com.alibaba.json.test.entity.Company;\nimport com.alibaba.json.test.entity.Department;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\n/**\n * FastJsonView注解测试controller\n * Created by yanquanyu on 17-5-31.\n */\n@Controller\n@RequestMapping(\"fastjsonview\")\npublic class FastJsonViewControllerTest {\n\n    @RequestMapping(\"test1\")\n    @FastJsonView(\n            include = {@FastJsonFilter(clazz = Company.class,props ={\"id\",\"name\"})})\n    public @ResponseBody Company test1() {\n        Company company = new Company();\n        company.setId(100L);\n        company.setName(\"测试\");\n        company.setDescription(\"fastjsonview注解测试\");\n        company.setStock(\"haha\");\n        return company;\n    }\n\n    @RequestMapping(\"test2\")\n    @FastJsonView(\n            exclude = {@FastJsonFilter(clazz = Company.class,props ={\"id\",\"name\"})})\n    public @ResponseBody Company test2() {\n        Company company = new Company();\n        company.setId(100L);\n        company.setName(\"测试\");\n        company.setDescription(\"fastjsonview注解测试\");\n        company.setStock(\"haha\");\n        return company;\n    }\n\n    @RequestMapping(\"test3\")\n    @FastJsonView(\n            include = {@FastJsonFilter(clazz = Company.class,props ={\"id\",\"name\",\"rootDepartment\"}),@FastJsonFilter(clazz = Department.class,props = {\"description\"})})\n    public @ResponseBody Company test3() {\n        Company company = new Company();\n        company.setId(100L);\n        company.setName(\"测试\");\n        company.setDescription(\"fastjsonview注解测试\");\n        company.setStock(\"haha\");\n        Department department = new Department();\n        department.setName(\"部门1\");\n        department.setDescription(\"部门1描述\");\n        department.setId(1L);\n        company.setRootDepartment(department);\n        return company;\n    }\n\n    @RequestMapping(\"test4\")\n    @FastJsonView(\n            include = {@FastJsonFilter(clazz = Company.class,props ={\"id\",\"name\",\"rootDepartment\"})},\n            exclude = {@FastJsonFilter(clazz = Department.class,props = {\"description\"})})\n    public @ResponseBody Company test4() {\n        Company company = new Company();\n        company.setId(100L);\n        company.setName(\"测试\");\n        company.setDescription(\"fastjsonview注解测试\");\n        company.setStock(\"haha\");\n        Department department = new Department();\n        department.setName(\"部门1\");\n        department.setDescription(\"部门1描述\");\n        department.setId(1L);\n        company.setRootDepartment(department);\n        return company;\n    }\n\n    @RequestMapping(\"test5\")\n    @FastJsonView(\n            exclude = {@FastJsonFilter(clazz = Department.class,props = {\"description\"})})\n    public @ResponseBody Company test5() {\n        Company company = new Company();\n        company.setId(100L);\n        company.setName(\"测试\");\n        company.setDescription(\"fastjsonview注解测试\");\n        company.setStock(\"haha\");\n        Department department = new Department();\n        department.setName(\"部门1\");\n        department.setDescription(\"部门1描述\");\n        department.setId(1L);\n        company.setRootDepartment(department);\n        return company;\n    }\n\n    @RequestMapping(\"test6\")\n    @FastJsonView(\n            include = {@FastJsonFilter(clazz = Company.class,props ={\"id\"})},\n            exclude = {@FastJsonFilter(clazz = Company.class,props = {\"name\"})})\n    public @ResponseBody Company test6() {\n        Company company = new Company();\n        company.setId(100L);\n        company.setName(\"测试\");\n        company.setDescription(\"fastjsonview注解测试\");\n        company.setStock(\"haha\");\n        return company;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/spring/mock/entity/FastJsonEnumTestVO.java",
    "content": "/*\n * Copyright 2015-2016 Dark Phoenixs (Open-Source Organization).\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage com.alibaba.json.bvt.support.spring.mock.entity;\n\n/**\n * <p>FastJsonEnumTestVO</p>\n * <p></p>\n *\n * @author Victor.Zxy\n * @version 1.0\n * @since 2016年8月8日\n */\npublic class FastJsonEnumTestVO {\n\n    public enum SmsType {\n\n        USER_REGISTER, USER_LOGIN, USER_LOGOUT;\n    }\n\n    public class Packet {\n\n        private SmsType smsType;\n\n        /**\n         * @return the smsType\n         */\n        public SmsType getSmsType() {\n            return smsType;\n        }\n\n        /**\n         * @param smsType the smsType to set\n         */\n        public void setSmsType(SmsType smsType) {\n            this.smsType = smsType;\n        }\n    }\n\n    private Packet packet;\n\n    /**\n     * @return the packet\n     */\n    public Packet getPacket() {\n        return packet;\n    }\n\n    /**\n     * @param packet the packet to set\n     */\n    public void setPacket(Packet packet) {\n        this.packet = packet;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/spring/mock/entity/FastJsonGenericityTestVO.java",
    "content": "/*\n * Copyright 2015-2016 Dark Phoenixs (Open-Source Organization).\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage com.alibaba.json.bvt.support.spring.mock.entity;\n\n/**\n * <p>MgQueryCondition</p>\n * <p></p>\n *\n * @author Victor.Zxy\n * @version 1.0\n * @since 2016年8月8日\n */\npublic class FastJsonGenericityTestVO<T> {\n\n    private T t;\n\n    /**\n     * @return the t\n     */\n    public T getT() {\n        return t;\n    }\n\n    /**\n     * @param t the t to set\n     */\n    public void setT(T t) {\n        this.t = t;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/spring/mock/entity/FastJsonParentTestVO.java",
    "content": "/**\r\n * <p>Title: FastJsonParentTestVO.java</p>\r\n * <p>Description: FastJsonParentTestVO</p>\r\n * <p>Package: com.alibaba.json.bvt.support.spring.mock.entity</p>\r\n * <p>Company: www.github.com/DarkPhoenixs</p>\r\n * <p>Copyright: Dark Phoenixs (Open-Source Organization) 2016</p>\r\n */\r\npackage com.alibaba.json.bvt.support.spring.mock.entity;\r\n\r\nimport java.util.List;\r\n\r\n/**\r\n * <p>Title: FastJsonParentTestVO</p>\r\n * <p>Description: </p>\r\n *\r\n * @since 2016年4月20日\r\n * @author Victor.Zxy\r\n * @version 1.0\r\n */\r\npublic class FastJsonParentTestVO {\r\n\r\n\tprivate String name;\r\n\t\r\n\tprivate List<FastJsonSonTestVO> sonList;\r\n\t\r\n\t/**\r\n\t * @return the name\r\n\t */\r\n\tpublic String getName() {\r\n\t\treturn name;\r\n\t}\r\n\r\n\t/**\r\n\t * @param name the name to set\r\n\t */\r\n\tpublic void setName(String name) {\r\n\t\tthis.name = name;\r\n\t}\r\n\r\n\t/**\r\n\t * @return the sonList\r\n\t */\r\n\tpublic List<FastJsonSonTestVO> getSonList() {\r\n\t\treturn sonList;\r\n\t}\r\n\r\n\t/**\r\n\t * @param sonList the sonList to set\r\n\t */\r\n\tpublic void setSonList(List<FastJsonSonTestVO> sonList) {\r\n\t\tthis.sonList = sonList;\r\n\t}\r\n\t\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/spring/mock/entity/FastJsonSonTestVO.java",
    "content": "/**\r\n * <p>Title: FastJsonSonTestVO.java</p>\r\n * <p>Description: FastJsonSonTestVO</p>\r\n * <p>Package: com.alibaba.json.bvt.support.spring.mock.entity</p>\r\n * <p>Company: www.github.com/DarkPhoenixs</p>\r\n * <p>Copyright: Dark Phoenixs (Open-Source Organization) 2016</p>\r\n */\r\npackage com.alibaba.json.bvt.support.spring.mock.entity;\r\n\r\n/**\r\n * <p>Title: FastJsonSonTestVO</p>\r\n * <p>Description: </p>\r\n *\r\n * @since 2016年4月20日\r\n * @author Victor.Zxy\r\n * @version 1.0\r\n */\r\npublic class FastJsonSonTestVO {\r\n\r\n\tprivate String name;\r\n\r\n\t/**\r\n\t * @return the name\r\n\t */\r\n\tpublic String getName() {\r\n\t\treturn name;\r\n\t}\r\n\r\n\t/**\r\n\t * @param name the name to set\r\n\t */\r\n\tpublic void setName(String name) {\r\n\t\tthis.name = name;\r\n\t}\r\n\t\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/spring/mock/entity/FastJsonTestVO.java",
    "content": "/**\r\n * <p>Title: FastJsonTestVO.java</p>\r\n * <p>Description: FastJsonTestVO</p>\r\n * <p>Package: com.alibaba.json.bvt.support.spring.entity</p>\r\n * <p>Company: www.github.com/DarkPhoenixs</p>\r\n * <p>Copyright: Dark Phoenixs (Open-Source Organization) 2016</p>\r\n */\r\npackage com.alibaba.json.bvt.support.spring.mock.entity;\r\n\r\n/**\r\n * <p>Title: FastJsonTestVO</p>\r\n * <p>Description: </p>\r\n *\r\n * @since 2016年4月20日\r\n * @author Victor.Zxy\r\n * @version 1.0\r\n */\r\npublic class FastJsonTestVO {\r\n\r\n\tprivate int id;\r\n\t\r\n\tprivate String name;\r\n\r\n\t/**\r\n\t * @return the id\r\n\t */\r\n\tpublic int getId() {\r\n\t\treturn id;\r\n\t}\r\n\r\n\t/**\r\n\t * @param id the id to set\r\n\t */\r\n\tpublic void setId(int id) {\r\n\t\tthis.id = id;\r\n\t}\r\n\r\n\t/**\r\n\t * @return the name\r\n\t */\r\n\tpublic String getName() {\r\n\t\treturn name;\r\n\t}\r\n\r\n\t/**\r\n\t * @param name the name to set\r\n\t */\r\n\tpublic void setName(String name) {\r\n\t\tthis.name = name;\r\n\t}\r\n\t\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/spring/mock/testcase/FastJsonHttpMessageConverter4Test.java",
    "content": "/**\r\n * <p>Title: FastJsonHttpMessageConverterTest.java</p>\r\n * <p>Description: FastJsonHttpMessageConverterTest</p>\r\n * <p>Package: com.alibaba.json.bvt.support.spring.mock.testcase</p>\r\n * <p>Company: www.github.com/DarkPhoenixs</p>\r\n * <p>Copyright: Dark Phoenixs (Open-Source Organization) 2016</p>\r\n */\r\npackage com.alibaba.json.bvt.support.spring.mock.testcase;\r\n\r\nimport com.alibaba.fastjson.JSONObject;\r\nimport org.junit.Assert;\r\nimport org.junit.Before;\r\nimport org.junit.Test;\r\nimport org.junit.runner.RunWith;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.http.MediaType;\r\nimport org.springframework.test.context.ContextConfiguration;\r\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\r\nimport org.springframework.test.context.web.WebAppConfiguration;\r\nimport org.springframework.test.web.servlet.MockMvc;\r\nimport org.springframework.web.context.WebApplicationContext;\r\n\r\nimport java.util.List;\r\n\r\nimport static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;\r\nimport static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;\r\nimport static org.springframework.test.web.servlet.setup.MockMvcBuilders.webAppContextSetup;\r\n\r\n/**\r\n * <p>Title: FastJsonHttpMessageConverterTest</p>\r\n * <p>Description: </p>\r\n *\r\n * @author Victor.Zxy\r\n * @version 1.0\r\n * @since 2016年4月20日\r\n */\r\n@RunWith(SpringJUnit4ClassRunner.class)\r\n@WebAppConfiguration\r\n@ContextConfiguration({\"classpath*:/config/applicationContext-mvc3.xml\"})\r\npublic class FastJsonHttpMessageConverter4Test {\r\n\r\n    @Autowired\r\n    private WebApplicationContext wac;\r\n\r\n    private MockMvc mockMvc;\r\n\r\n    @Before\r\n    public void setup() {\r\n        this.mockMvc = webAppContextSetup(this.wac).build();\r\n    }\r\n\r\n    @Test\r\n    public void test1() throws Exception {\r\n\r\n        JSONObject json = new JSONObject();\r\n\r\n        json.put(\"id\", 123);\r\n\r\n        json.put(\"name\", \"哈哈哈\");\r\n\r\n        mockMvc.perform(\r\n                (post(\"/fastjson/test1\").characterEncoding(\"UTF-8\").content(json.toJSONString()).contentType(MediaType.APPLICATION_JSON)\r\n                ))\r\n//\t\t.andExpect(status().isOk())\r\n                .andDo(print());\r\n    }\r\n\r\n    @Test\r\n    public void test2() throws Exception {\r\n\r\n        String jsonStr = \"[{\\\"name\\\":\\\"p1\\\",\\\"sonList\\\":[{\\\"name\\\":\\\"s1\\\"}]},{\\\"name\\\":\\\"p2\\\",\\\"sonList\\\":[{\\\"name\\\":\\\"s2\\\"},{\\\"name\\\":\\\"s3\\\"}]}]\";\r\n\r\n        mockMvc.perform(\r\n                (post(\"/fastjson/test2\").characterEncoding(\"UTF-8\").content(jsonStr).contentType(MediaType.APPLICATION_JSON)\r\n                ))\r\n//\t\t.andExpect(status().isOk())\r\n                .andDo(print());\r\n    }\r\n\r\n    @Test\r\n    public void test3() throws Exception {\r\n        List<Object> list = this.mockMvc.perform(post(\"/fastjson/test3\")).andReturn().getResponse().getHeaderValues(\"Content-Length\");\r\n        Assert.assertNotEquals(list.size(), 0);\r\n    }\r\n\r\n    @Test\r\n    public void test4() throws Exception {\r\n\r\n        String jsonStr = \"{\\\"t\\\":{\\\"id\\\":123,\\\"name\\\":\\\"哈哈哈\\\"}}\";\r\n\r\n        mockMvc.perform(\r\n                (post(\"/fastjson/test4\").characterEncoding(\"UTF-8\").content(\r\n                        jsonStr).contentType(MediaType.APPLICATION_JSON)))\r\n                .andDo(print());\r\n    }\r\n\r\n    @Test\r\n    public void test5() throws Exception {\r\n\r\n        String jsonStr = \"{\\\"packet\\\":{\\\"smsType\\\":\\\"USER_LOGIN\\\"}}\";\r\n\r\n        mockMvc.perform(\r\n                (post(\"/fastjson/test5\").characterEncoding(\"UTF-8\").content(\r\n                        jsonStr).contentType(MediaType.APPLICATION_JSON)))\r\n                .andDo(print());\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/spring/mock/testcase/FastJsonHttpMessageConverterCase2Test.java",
    "content": "package com.alibaba.json.bvt.support.spring.mock.testcase;\n\nimport com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;\nimport com.alibaba.fastjson.support.spring.FastJsonViewResponseBodyAdvice;\nimport com.alibaba.fastjson.support.spring.JSONPResponseBodyAdvice;\nimport org.junit.Before;\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.ComponentScan;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.converter.HttpMessageConverter;\nimport org.springframework.test.context.ContextConfiguration;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\nimport org.springframework.test.web.servlet.MockMvc;\nimport org.springframework.test.web.servlet.MvcResult;\nimport org.springframework.test.web.servlet.setup.MockMvcBuilders;\nimport org.springframework.web.context.WebApplicationContext;\nimport org.springframework.web.filter.CharacterEncodingFilter;\nimport org.springframework.web.servlet.config.annotation.EnableWebMvc;\nimport org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;\n\nimport java.util.List;\n\nimport static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch;\nimport static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;\nimport static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;\nimport static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;\n\n@RunWith(SpringJUnit4ClassRunner.class)\n@WebAppConfiguration\n@ContextConfiguration\npublic class FastJsonHttpMessageConverterCase2Test {\n    private static final MediaType APPLICATION_JAVASCRIPT = new MediaType(\"application\", \"javascript\");\n\n    @Autowired\n    private WebApplicationContext wac;\n\n    private MockMvc mockMvc;\n\n    @ComponentScan(basePackages = \"com.alibaba.json.bvt.support.spring.mock.controller\")\n    @EnableWebMvc\n    @Configuration\n    protected static class Config extends WebMvcConfigurerAdapter {\n        @Bean\n        public JSONPResponseBodyAdvice jsonpResponseBodyAdvice() {\n            return new JSONPResponseBodyAdvice();\n        }\n\n        @Bean\n        FastJsonViewResponseBodyAdvice fastJsonViewResponseBodyAdvice() {\n            return new FastJsonViewResponseBodyAdvice();\n        }\n\n\n        @Override\n        public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {\n            converters.add(0, new FastJsonHttpMessageConverter());\n            super.extendMessageConverters(converters);\n        }\n    }\n\n    @Before\n    public void setup() {\n        this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac) //\n                .addFilter(new CharacterEncodingFilter(\"UTF-8\", true)) // 设置服务器端返回的字符集为：UTF-8\n                .build();\n    }\n\n    @Test\n    public void isInjectComponent() {\n        wac.getBean(JSONPResponseBodyAdvice.class);\n        wac.getBean(FastJsonViewResponseBodyAdvice.class);\n    }\n\n    @Test\n    public void test8() throws Exception {\n        mockMvc.perform(\n                (post(\"/jsonp-fastjsonview/test8\").characterEncoding(\"UTF-8\")\n                        .contentType(FastJsonHttpMessageConverter.APPLICATION_JAVASCRIPT))).andExpect(status().isOk()).andDo(print());\n    }\n\n    @Test\n    public void test8_2() throws Exception {\n//        ResultActions actions = mockMvc.perform((post(\"/jsonp-fastjsonview/test8?callback=fnUpdateSome\").characterEncoding(\n//                \"UTF-8\")));\n//        actions.andDo(print());\n//        actions.andExpect(status().isOk()).andExpect(content().contentType(APPLICATION_JAVASCRIPT))\n//                .andExpect(content().string(\"fnUpdateSome({\\\"id\\\":100,\\\"name\\\":\\\"测试\\\"})\"));\n\n        MvcResult mvcResult = mockMvc.perform(post(\"/jsonp-fastjsonview/test8?callback=fnUpdateSome\").characterEncoding(\"UTF-8\"))\n                .andExpect(request().asyncStarted())\n                .andReturn();\n\n\n        mockMvc.perform(asyncDispatch(mvcResult))\n                .andExpect(status().isOk())\n                .andExpect(content().contentType(FastJsonHttpMessageConverter.APPLICATION_JAVASCRIPT))\n                .andExpect(content().string(\"/**/fnUpdateSome({})\"));\n    }\n\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/spring/mock/testcase/FastJsonHttpMessageConverterJSONPCaseTest.java",
    "content": "package com.alibaba.json.bvt.support.spring.mock.testcase;\n\nimport com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;\nimport com.alibaba.fastjson.support.spring.FastJsonViewResponseBodyAdvice;\nimport com.alibaba.fastjson.support.spring.JSONPResponseBodyAdvice;\nimport org.junit.Assert;\nimport org.junit.Before;\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.ComponentScan;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.converter.HttpMessageConverter;\nimport org.springframework.test.context.ContextConfiguration;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\nimport org.springframework.test.web.servlet.MockMvc;\nimport org.springframework.test.web.servlet.ResultActions;\nimport org.springframework.test.web.servlet.setup.MockMvcBuilders;\nimport org.springframework.web.context.WebApplicationContext;\nimport org.springframework.web.filter.CharacterEncodingFilter;\nimport org.springframework.web.servlet.config.annotation.EnableWebMvc;\nimport org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;\n\nimport java.util.List;\n\nimport static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;\nimport static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;\nimport static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;\nimport static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;\n\n@RunWith(SpringJUnit4ClassRunner.class)\n@WebAppConfiguration\n@ContextConfiguration\npublic class FastJsonHttpMessageConverterJSONPCaseTest {\n    private static final MediaType APPLICATION_JAVASCRIPT = new MediaType(\"application\", \"javascript\");\n\n    @Autowired\n    private WebApplicationContext wac;\n\n    private MockMvc mockMvc;\n\n    @ComponentScan(basePackages = \"com.alibaba.json.bvt.support.spring.mock.controller\")\n    @EnableWebMvc\n    @Configuration\n    protected static class Config extends WebMvcConfigurerAdapter {\n        @Bean\n        public JSONPResponseBodyAdvice jsonpResponseBodyAdvice() {\n            return new JSONPResponseBodyAdvice();\n        }\n\n        @Bean\n        FastJsonViewResponseBodyAdvice fastJsonViewResponseBodyAdvice() {\n            return new FastJsonViewResponseBodyAdvice();\n        }\n\n\n        @Override\n        public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {\n            converters.add(0, new FastJsonHttpMessageConverter());\n            super.extendMessageConverters(converters);\n        }\n    }\n\n    @Before\n    public void setup() {\n        this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac) //\n                .addFilter(new CharacterEncodingFilter(\"UTF-8\", true)) // 设置服务器端返回的字符集为：UTF-8\n                .build();\n    }\n\n    @Test\n    public void isInjectComponent() {\n        wac.getBean(JSONPResponseBodyAdvice.class);\n        wac.getBean(FastJsonViewResponseBodyAdvice.class);\n    }\n\n    @Test\n    public void test1() throws Exception {\n        mockMvc.perform(\n                (post(\"/jsonp-fastjsonview/test1\").characterEncoding(\"UTF-8\")\n                        .contentType(MediaType.APPLICATION_JSON))).andExpect(status().isOk()).andDo(print());\n    }\n\n    @Test\n    public void test1_2() throws Exception {\n\n\n        ResultActions actions = mockMvc.perform((post(\"/jsonp-fastjsonview/test1?callback=fnUpdateSome\").characterEncoding(\n                \"UTF-8\").contentType(MediaType.APPLICATION_JSON)));\n        actions.andDo(print());\n        actions.andExpect(status().isOk()).andExpect(content().contentType(APPLICATION_JAVASCRIPT))\n                .andExpect(content().string(\"/**/fnUpdateSome({\\\"id\\\":100,\\\"name\\\":\\\"测试\\\"})\"));\n    }\n\n    @Test\n    public void test2() throws Exception {\n\n\n        mockMvc.perform(\n                (post(\"/jsonp-fastjsonview/test2\").characterEncoding(\"UTF-8\")\n                        .contentType(MediaType.APPLICATION_JSON))).andExpect(status().isOk()).andDo(print());\n    }\n\n    @Test\n    public void test2_2() throws Exception {\n\n\n        ResultActions actions = mockMvc.perform((post(\"/jsonp-fastjsonview/test2?callback=fnUpdateSome\").characterEncoding(\"UTF-8\")\n                .contentType(MediaType.APPLICATION_JSON)));\n        actions.andDo(print());\n        actions.andExpect(status().isOk()).andExpect(content().contentType(APPLICATION_JAVASCRIPT))\n                .andExpect(content().string(\"/**/fnUpdateSome({\\\"description\\\":\\\"fastjsonview注解测试\\\",\\\"stock\\\":\\\"haha\\\"})\"));\n    }\n\n    @Test\n    public void test3() throws Exception {\n        List<Object> list = this.mockMvc.perform(post(\"/jsonp-fastjsonview/test3\")).andReturn().getResponse()\n                .getHeaderValues(\"Content-Length\");\n        Assert.assertNotEquals(list.size(), 0);\n    }\n\n    @Test\n    public void test3_Jsonp_ContentLength() throws Exception{\n        ResultActions actions1 = this.mockMvc.perform(post(\"/jsonp-fastjsonview/test3?callback=func\")).andDo(print());\n        Object obj1 = actions1.andReturn().getResponse().getHeaderValue(\"Content-Length\");\n        Assert.assertNotNull(obj1);\n        Assert.assertEquals(85,obj1);\n\n        ResultActions actions2 = this.mockMvc.perform(post(\"/jsonp-fastjsonview/test3?callback=fnUpdateSome\")).andDo(print());\n        Object obj2 = actions2.andReturn().getResponse().getHeaderValue(\"Content-Length\");\n        Assert.assertNotNull(obj2);\n        Assert.assertEquals(93,obj2);\n    }\n\n    @Test\n    public void test3_2() throws Exception {\n        ResultActions actions = this.mockMvc.perform(post(\"/jsonp-fastjsonview/test3?callback=fnUpdateSome\"));\n        actions.andDo(print());\n        actions.andExpect(status().isOk()).andExpect(content().contentType(APPLICATION_JAVASCRIPT))\n\n                .andExpect(content().string(\"/**/fnUpdateSome({\\\"id\\\":100,\\\"name\\\":\\\"测试\\\",\\\"rootDepartment\\\":{\\\"description\\\":\\\"部门1描述\\\"}})\"));\n    }\n\n    @Test\n    public void test4() throws Exception {\n\n\n        mockMvc.perform(\n                (post(\"/jsonp-fastjsonview/test4\").characterEncoding(\"UTF-8\")\n                        .contentType(MediaType.APPLICATION_JSON))).andDo(print());\n    }\n\n    @Test\n    public void test4_2() throws Exception {\n\n\n        ResultActions actions = mockMvc.perform((post(\"/jsonp-fastjsonview/test4?callback=myUpdate\").characterEncoding(\"UTF-8\")\n                .contentType(MediaType.APPLICATION_JSON)));\n        actions.andDo(print());\n        actions.andExpect(status().isOk())\n                .andExpect(content().contentType(APPLICATION_JAVASCRIPT))\n                .andExpect(content().string(\"/**/myUpdate({\\\"id\\\":100,\\\"name\\\":\\\"测试\\\",\\\"rootDepartment\\\":{\\\"id\\\":1,\\\"members\\\":[],\\\"name\\\":\\\"部门1\\\"}})\"));\n    }\n\n    @Test\n    public void test5() throws Exception {\n\n        String jsonStr = \"{\\\"packet\\\":{\\\"smsType\\\":\\\"USER_LOGIN\\\"}}\";\n\n        mockMvc.perform(\n                (post(\"/jsonp-fastjsonview/test5\").characterEncoding(\"UTF-8\").content(jsonStr)\n                        .contentType(MediaType.APPLICATION_JSON))).andDo(print());\n    }\n\n    @Test\n    public void test5_2() throws Exception {\n\n        String jsonStr = \"{\\\"packet\\\":{\\\"smsType\\\":\\\"USER_LOGIN\\\"}}\";\n\n        ResultActions actions = mockMvc.perform((post(\"/jsonp-fastjsonview/test5?callback=myUpdate\").characterEncoding(\"UTF-8\")\n                .content(jsonStr).contentType(MediaType.APPLICATION_JSON)));\n        actions.andDo(print());\n        actions.andExpect(status().isOk())\n                .andExpect(content().contentType(APPLICATION_JAVASCRIPT))\n                .andExpect(content().string(\"/**/myUpdate(\\\"{\\\\\\\"packet\\\\\\\":{\\\\\\\"smsType\\\\\\\":\\\\\\\"USER_LOGIN\\\\\\\"}}\\\")\"));\n    }\n\n    @Test\n    public void test7() throws Exception {\n        ResultActions actions = this.mockMvc.perform(post(\"/jsonp-fastjsonview/test7?customizedCallbackParamName=fnUpdateSome\"));\n        actions.andDo(print());\n        actions.andExpect(status().isOk()).andExpect(content().contentType(APPLICATION_JAVASCRIPT))\n\n                .andExpect(content().string(\"/**/fnUpdateSome({})\"));\n    }\n\n    @Test\n    public void test8() throws Exception {\n        String invalidMethodName = \"--methodName\";\n        ResultActions actions = this.mockMvc.perform(post(\"/jsonp-fastjsonview/test7?customizedCallbackParamName=\" + invalidMethodName));\n        actions.andDo(print());\n        actions.andExpect(status().isOk()).andExpect(content().contentType(APPLICATION_JAVASCRIPT))\n                .andExpect(content().string(\"/**/null({})\"));\n    }\n\n    @Test\n    public void test9() throws Exception {\n        ResultActions actions = this.mockMvc.perform(post(\"/jsonp-fastjsonview/test9?callback=fnUpdateSome\"));\n        actions.andDo(print());\n        actions.andExpect(status().isOk()).andExpect(content().contentType(APPLICATION_JAVASCRIPT))\n                .andExpect(content().string(\"/**/fnUpdateSome({\\\"id\\\":100})\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/spring/mock/testcase/FastJsonHttpMessageConverterTest.java",
    "content": "/**\r\n * <p>Title: FastJsonHttpMessageConverterTest.java</p>\r\n * <p>Description: FastJsonHttpMessageConverterTest</p>\r\n * <p>Package: com.alibaba.json.bvt.support.spring.mock.testcase</p>\r\n * <p>Company: www.github.com/DarkPhoenixs</p>\r\n * <p>Copyright: Dark Phoenixs (Open-Source Organization) 2016</p>\r\n */\r\npackage com.alibaba.json.bvt.support.spring.mock.testcase;\r\n\r\nimport com.alibaba.fastjson.JSONObject;\r\nimport org.junit.Assert;\r\nimport org.junit.Before;\r\nimport org.junit.Test;\r\nimport org.junit.runner.RunWith;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.http.MediaType;\r\nimport org.springframework.test.context.ContextConfiguration;\r\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\r\nimport org.springframework.test.context.web.WebAppConfiguration;\r\nimport org.springframework.test.web.servlet.MockMvc;\r\nimport org.springframework.web.context.WebApplicationContext;\r\n\r\nimport java.util.List;\r\n\r\nimport static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;\r\nimport static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;\r\nimport static org.springframework.test.web.servlet.setup.MockMvcBuilders.webAppContextSetup;\r\n\r\n/**\r\n * <p>Title: FastJsonHttpMessageConverterTest</p>\r\n * <p>Description:</p>\r\n *\r\n * @author Victor.Zxy\r\n * @version 1.0\r\n * @since 2016年4月20日\r\n */\r\n@RunWith(SpringJUnit4ClassRunner.class)\r\n@WebAppConfiguration\r\n@ContextConfiguration({\"classpath*:/config/applicationContext-mvc1.xml\"})\r\npublic class FastJsonHttpMessageConverterTest {\r\n\r\n    @Autowired\r\n    private WebApplicationContext wac;\r\n\r\n    private MockMvc mockMvc;\r\n\r\n    @Before\r\n    public void setup() {\r\n        this.mockMvc = webAppContextSetup(this.wac).build();\r\n    }\r\n\r\n    @Test\r\n    public void test1() throws Exception {\r\n\r\n        JSONObject json = new JSONObject();\r\n\r\n        json.put(\"id\", 123);\r\n\r\n        json.put(\"name\", \"哈哈哈\");\r\n\r\n        mockMvc.perform(\r\n                (post(\"/fastjson/test1\").characterEncoding(\"UTF-8\").content(\r\n                        json.toJSONString())\r\n                        .contentType(MediaType.APPLICATION_JSON)))\r\n                // .andExpect(status().isOk())\r\n                .andDo(print());\r\n    }\r\n\r\n    @Test\r\n    public void test2() throws Exception {\r\n\r\n        String jsonStr = \"[{\\\"name\\\":\\\"p1\\\",\\\"sonList\\\":[{\\\"name\\\":\\\"s1\\\"}]},{\\\"name\\\":\\\"p2\\\",\\\"sonList\\\":[{\\\"name\\\":\\\"s2\\\"},{\\\"name\\\":\\\"s3\\\"}]}]\";\r\n\r\n        mockMvc.perform(\r\n                (post(\"/fastjson/test2\").characterEncoding(\"UTF-8\").content(\r\n                        jsonStr).contentType(MediaType.APPLICATION_JSON)))\r\n                // .andExpect(status().isOk())\r\n                .andDo(print());\r\n    }\r\n\r\n    @Test\r\n    public void test3() throws Exception {\r\n        List<Object> list = this.mockMvc.perform(post(\"/fastjson/test3\"))\r\n                .andReturn().getResponse().getHeaderValues(\"Content-Length\");\r\n        Assert.assertNotEquals(list.size(), 0);\r\n    }\r\n\r\n    @Test\r\n    public void test4() throws Exception {\r\n\r\n        String jsonStr = \"{\\\"t\\\":{\\\"id\\\":123,\\\"name\\\":\\\"哈哈哈\\\"}}\";\r\n\r\n        mockMvc.perform(\r\n                (post(\"/fastjson/test4\").characterEncoding(\"UTF-8\").content(\r\n                        jsonStr).contentType(MediaType.APPLICATION_JSON)))\r\n                .andDo(print());\r\n    }\r\n\r\n    @Test\r\n    public void test5() throws Exception {\r\n\r\n        String jsonStr = \"{\\\"packet\\\":{\\\"smsType\\\":\\\"USER_LOGIN\\\"}}\";\r\n\r\n        mockMvc.perform(\r\n                (post(\"/fastjson/test5\").characterEncoding(\"UTF-8\").content(\r\n                        jsonStr).contentType(MediaType.APPLICATION_JSON)))\r\n                .andDo(print());\r\n    }\r\n\r\n\r\n    @Test\r\n    public void test6() throws Exception {\r\n\r\n        mockMvc.perform(\r\n                (post(\"/fastjson/test6\").characterEncoding(\"UTF-8\")\r\n                        .param(\"userId\", \"1234\")\r\n                        .param(\"flag\", \"0\")\r\n                        .contentType(MediaType.APPLICATION_FORM_URLENCODED)))\r\n                .andDo(print());\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/spring/mock/testcase/FastJsonJsonViewTest.java",
    "content": "/**\r\n * <p>Title: FastJsonJsonViewTest.java</p>\r\n * <p>Description: FastJsonJsonViewTest</p>\r\n * <p>Package: com.alibaba.json.bvt.support.spring.mock.testcase</p>\r\n * <p>Company: www.github.com/DarkPhoenixs</p>\r\n * <p>Copyright: Dark Phoenixs (Open-Source Organization) 2016</p>\r\n */\r\npackage com.alibaba.json.bvt.support.spring.mock.testcase;\r\n\r\nimport static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;\r\nimport static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;\r\nimport static org.springframework.test.web.servlet.setup.MockMvcBuilders.webAppContextSetup;\r\n\r\nimport org.junit.Before;\r\nimport org.junit.Test;\r\nimport org.junit.runner.RunWith;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.http.MediaType;\r\nimport org.springframework.test.context.ContextConfiguration;\r\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\r\nimport org.springframework.test.context.web.WebAppConfiguration;\r\nimport org.springframework.test.web.servlet.MockMvc;\r\nimport org.springframework.web.context.WebApplicationContext;\r\n\r\nimport com.alibaba.fastjson.JSONObject;\r\n\r\n/**\r\n * <p>Title: FastJsonJsonViewTest</p>\r\n * <p>Description: </p>\r\n *\r\n * @since 2016年4月20日\r\n * @author Victor.Zxy\r\n * @version 1.0\r\n */\r\n\r\n@RunWith(SpringJUnit4ClassRunner.class)\r\n@WebAppConfiguration\r\n@ContextConfiguration({ \"classpath*:/config/applicationContext-mvc2.xml\" })\r\npublic class FastJsonJsonViewTest {\r\n\r\n\t@Autowired\r\n\tprivate WebApplicationContext wac;\r\n\r\n\tprivate MockMvc mockMvc;\r\n\r\n\t@Before\r\n\tpublic void setup() {\r\n\t\tthis.mockMvc = webAppContextSetup(this.wac).build();\r\n\t}\r\n\r\n\t@Test\r\n\tpublic void test1() throws Exception {\r\n\t\t\r\n\t\tJSONObject json = new JSONObject();\r\n\t\t\r\n\t\tjson.put(\"id\", 123);\r\n\t\t\r\n\t\tjson.put(\"name\", \"哈哈哈\");\r\n\t\t\r\n\t\tmockMvc.perform(\r\n\t\t\t\t(post(\"/fastjson/test1\").characterEncoding(\"UTF-8\").content(json.toJSONString()).contentType(MediaType.APPLICATION_JSON)\r\n\t\t\t\t\t\t))\r\n//\t\t.andExpect(status().isOk())\r\n\t\t\t\t.andDo(print());\r\n\t}\r\n\t\r\n\t@Test\r\n\tpublic void test2() throws Exception {\r\n\t\t\r\n\t\tString jsonStr = \"[{\\\"name\\\":\\\"p1\\\",\\\"sonList\\\":[{\\\"name\\\":\\\"s1\\\"}]},{\\\"name\\\":\\\"p2\\\",\\\"sonList\\\":[{\\\"name\\\":\\\"s2\\\"},{\\\"name\\\":\\\"s3\\\"}]}]\";\r\n\t\t\r\n\t\tmockMvc.perform(\r\n\t\t\t\t(post(\"/fastjson/test2\").characterEncoding(\"UTF-8\").content(jsonStr).contentType(MediaType.APPLICATION_JSON)\r\n\t\t\t\t\t\t))\r\n//\t\t.andExpect(status().isOk())\r\n\t\t\t\t.andDo(print());\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/spring/mock/testcase/FastJsonViewTest.java",
    "content": "package com.alibaba.json.bvt.support.spring.mock.testcase;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.support.spring.FastJsonViewResponseBodyAdvice;\nimport com.alibaba.fastjson.support.spring.FastJsonpResponseBodyAdvice;\nimport org.junit.Before;\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.http.MediaType;\nimport org.springframework.test.context.ContextConfiguration;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\nimport org.springframework.test.web.servlet.MockMvc;\nimport org.springframework.test.web.servlet.setup.MockMvcBuilders;\nimport org.springframework.web.context.WebApplicationContext;\nimport org.springframework.web.filter.CharacterEncodingFilter;\n\nimport static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;\nimport static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;\nimport static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;\nimport static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;\n\n/**\n * FastJsonView注解测试\n * Created by yanquanyu on 17-5-31.\n */\n@RunWith(SpringJUnit4ClassRunner.class)\n@WebAppConfiguration\n@ContextConfiguration({ \"classpath*:/config/applicationContext-mvc5.xml\" })\npublic class FastJsonViewTest {\n\n    @Autowired\n    private WebApplicationContext wac;\n\n    private MockMvc mockMvc;\n\n    @Before\n    public void setup() {\n        this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac) //\n                .addFilter(new CharacterEncodingFilter(\"UTF-8\", true)) // 设置服务器端返回的字符集为：UTF-8\n                .build();\n    }\n\n    @Test\n    public void isInjectComponent() {\n        wac.getBean(FastJsonViewResponseBodyAdvice.class);\n    }\n\n    /**\n     * 只包括简单属性的对象，单独使用include属性\n     */\n    @Test\n    public void test1() throws Exception {\n        mockMvc.perform(\n                (post(\"/fastjsonview/test1\").characterEncoding(\"UTF-8\")\n                        .contentType(MediaType.APPLICATION_JSON))).andExpect(status\n                ().isOk()).andDo(print()\n        ).andExpect(content().string(\"{\\\"id\\\":100,\\\"name\\\":\\\"测试\\\"}\"));\n    }\n\n    /**\n     * 只包括简单属性的对象，单独使用exclude属性\n     */\n    @Test\n    public void test2() throws Exception {\n        mockMvc.perform(\n                (post(\"/fastjsonview/test2\").characterEncoding(\"UTF-8\")\n                        .contentType(MediaType.APPLICATION_JSON))).andExpect(status\n                ().isOk()).andDo(print()\n        ).andExpect(content().string(\"{\\\"description\\\":\\\"fastjsonview注解测试\\\",\\\"stock\\\":\\\"haha\\\"}\"));\n    }\n\n    /**\n     * 复杂对象：包含Department对象的Company对象，两个对象都使用include属性\n     */\n    @Test\n    public void test3() throws Exception {\n        mockMvc.perform(\n                (post(\"/fastjsonview/test3\").characterEncoding(\"UTF-8\")\n                        .contentType(MediaType.APPLICATION_JSON))).andExpect(status\n                ().isOk()).andDo(print()).andExpect(content().string(\"{\\\"id\\\":100,\\\"name\\\":\\\"测试\\\",\\\"rootDepartment\\\":{\\\"description\\\":\\\"部门1描述\\\"}}\"));\n    }\n\n    /**\n     * 复杂对象：包含Department对象的Company对象，两个对象分别使用include和exclude属性\n     */\n    @Test\n    public void test4() throws Exception {\n        mockMvc.perform(\n                (post(\"/fastjsonview/test4\").characterEncoding(\"UTF-8\")\n                        .contentType(MediaType.APPLICATION_JSON))).andExpect(status\n                ().isOk()).andDo(print()).andExpect(content().string(\"{\\\"id\\\":100,\\\"name\\\":\\\"测试\\\",\\\"rootDepartment\\\":{\\\"children\\\":[],\\\"id\\\":1,\\\"members\\\":[],\\\"name\\\":\\\"部门1\\\"}}\"));\n    }\n\n    /**\n     * 复杂对象：包含Department对象的Company对象，Department使用exclude属性\n     */\n    @Test\n    public void test5() throws Exception {\n        mockMvc.perform(\n                (post(\"/fastjsonview/test5\").characterEncoding(\"UTF-8\")\n                        .contentType(MediaType.APPLICATION_JSON))).andExpect(status\n                ().isOk()).andDo(print()).andExpect(content().string(\"{\\\"description\\\":\\\"fastjsonview注解测试\\\",\\\"id\\\":100,\\\"name\\\":\\\"测试\\\",\\\"rootDepartment\\\":{\\\"children\\\":[],\\\"id\\\":1,\\\"members\\\":[],\\\"name\\\":\\\"部门1\\\"},\\\"stock\\\":\\\"haha\\\"}\"));\n    }\n\n    /**\n     * 只包括简单属性的对象，同时使用include和exclude属性\n     */\n    @Test\n    public void test6() throws Exception {\n        mockMvc.perform(\n                (post(\"/fastjsonview/test6\").characterEncoding(\"UTF-8\")\n                        .contentType(MediaType.APPLICATION_JSON))).andExpect(status\n                ().isOk()).andDo(print()).andExpect(content().string(\"{\\\"id\\\":100}\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/spring/mock/testcase/FastJsonpHttpMessageConverter4Case1Test.java",
    "content": "package com.alibaba.json.bvt.support.spring.mock.testcase;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.support.spring.FastJsonpResponseBodyAdvice;\nimport org.junit.Assert;\nimport org.junit.Before;\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.http.MediaType;\nimport org.springframework.test.context.ContextConfiguration;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\nimport org.springframework.test.web.servlet.MockMvc;\nimport org.springframework.test.web.servlet.ResultActions;\nimport org.springframework.test.web.servlet.setup.MockMvcBuilders;\nimport org.springframework.web.context.WebApplicationContext;\nimport org.springframework.web.filter.CharacterEncodingFilter;\n\nimport java.util.List;\n\nimport static junit.framework.TestCase.assertTrue;\nimport static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;\nimport static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;\nimport static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;\nimport static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;\n\n@RunWith(SpringJUnit4ClassRunner.class)\n@WebAppConfiguration\n@ContextConfiguration({ \"classpath*:/config/applicationContext-mvc4.xml\" })\npublic class FastJsonpHttpMessageConverter4Case1Test {\n    private static final MediaType APPLICATION_JAVASCRIPT = new MediaType(\"application\", \"javascript\");\n\n    @Autowired\n    private WebApplicationContext wac;\n\n    private MockMvc mockMvc;\n\n    @Before\n    public void setup() {\n        this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac) //\n                .addFilter(new CharacterEncodingFilter(\"UTF-8\", true)) // 设置服务器端返回的字符集为：UTF-8\n                .build();\n    }\n\n    @Test\n    public void isInjectComponent() {\n        wac.getBean(FastJsonpResponseBodyAdvice.class);\n    }\n\n    @Test\n    public void test1() throws Exception {\n\n        JSONObject json = new JSONObject();\n\n        json.put(\"id\", 123);\n\n        json.put(\"name\", \"哈哈哈\");\n\n        mockMvc.perform(\n                (post(\"/fastjson/test1\").characterEncoding(\"UTF-8\").content(json.toJSONString())\n                        .contentType(MediaType.APPLICATION_JSON))).andExpect(status().isOk()).andDo(print());\n    }\n\n    @Test\n    public void test1_2() throws Exception {\n\n        JSONObject json = new JSONObject();\n\n        json.put(\"id\", 123);\n\n        json.put(\"name\", \"哈哈哈\");\n\n        ResultActions actions = mockMvc.perform((post(\"/fastjson/test1?callback=fnUpdateSome\").characterEncoding(\n                \"UTF-8\").content(json.toJSONString()).contentType(MediaType.APPLICATION_JSON)));\n        actions.andDo(print());\n        actions.andExpect(status().isOk()).andExpect(content().contentType(APPLICATION_JAVASCRIPT));\n        String content = actions.andReturn().getResponse().getContentAsString();\n        assertTrue(content.equals(\"/**/fnUpdateSome({\\\"name\\\":\\\"哈哈哈\\\",\\\"id\\\":123})\")\n                || content.equals(\"/**/fnUpdateSome({\\\"id\\\":123,\\\"name\\\":\\\"哈哈哈\\\"})\"));\n    }\n\n    @Test\n    public void test2() throws Exception {\n\n        String jsonStr = \"[{\\\"name\\\":\\\"p1\\\",\\\"sonList\\\":[{\\\"name\\\":\\\"s1\\\"}]},{\\\"name\\\":\\\"p2\\\",\\\"sonList\\\":[{\\\"name\\\":\\\"s2\\\"},{\\\"name\\\":\\\"s3\\\"}]}]\";\n\n        mockMvc.perform(\n                (post(\"/fastjson/test2\").characterEncoding(\"UTF-8\").content(jsonStr)\n                        .contentType(MediaType.APPLICATION_JSON))).andExpect(status().isOk()).andDo(print());\n    }\n\n    @Test\n    public void test2_2() throws Exception {\n\n        String jsonStr = \"[{\\\"name\\\":\\\"p1\\\",\\\"sonList\\\":[{\\\"name\\\":\\\"s1\\\"}]},{\\\"name\\\":\\\"p2\\\",\\\"sonList\\\":[{\\\"name\\\":\\\"s2\\\"},{\\\"name\\\":\\\"s3\\\"}]}]\";\n\n        ResultActions actions = mockMvc.perform((post(\"/fastjson/test2?jsonp=fnUpdateSome\").characterEncoding(\"UTF-8\")\n                .content(jsonStr).contentType(MediaType.APPLICATION_JSON)));\n        actions.andDo(print());\n        actions.andExpect(status().isOk()).andExpect(content().contentType(APPLICATION_JAVASCRIPT));\n        String content = actions.andReturn().getResponse().getContentAsString();\n        assertTrue(content.equals(\"/**/fnUpdateSome({\\\"p1\\\":1,\\\"p2\\\":2})\")\n                || content.equals(\"/**/fnUpdateSome({\\\"p2\\\":2,\\\"p1\\\":1})\"));\n    }\n\n    @Test\n    public void test3() throws Exception {\n        List<Object> list = this.mockMvc.perform(post(\"/fastjson/test3\")).andReturn().getResponse()\n                .getHeaderValues(\"Content-Length\");\n        Assert.assertNotEquals(list.size(), 0);\n    }\n\n    @Test\n    public void test3_2() throws Exception {\n        ResultActions actions = this.mockMvc.perform(post(\"/fastjson/test3?jsonp=fnUpdateSome\"));\n        actions.andDo(print());\n        actions.andExpect(status().isOk()).andExpect(content().contentType(APPLICATION_JAVASCRIPT))\n                .andExpect(content().string(\"/**/fnUpdateSome({})\"));\n    }\n\n    @Test\n    public void test4() throws Exception {\n\n        String jsonStr = \"{\\\"t\\\":{\\\"id\\\":123,\\\"name\\\":\\\"哈哈哈\\\"}}\";\n\n        mockMvc.perform(\n                (post(\"/fastjson/test4\").characterEncoding(\"UTF-8\").content(jsonStr)\n                        .contentType(MediaType.APPLICATION_JSON))).andDo(print());\n    }\n\n    @Test\n    public void test4_2() throws Exception {\n\n        String jsonStr = \"{\\\"t\\\":{\\\"id\\\":123,\\\"name\\\":\\\"哈哈哈\\\"}}\";\n\n        ResultActions actions = mockMvc.perform((post(\"/fastjson/test4?callback=myUpdate\").characterEncoding(\"UTF-8\")\n                .content(jsonStr).contentType(MediaType.APPLICATION_JSON)));\n        actions.andDo(print());\n        actions.andExpect(status().isOk())\n                .andExpect(content().contentType(APPLICATION_JAVASCRIPT))\n                .andExpect(content().string(\"/**/myUpdate(\\\"{\\\\\\\"t\\\\\\\":{\\\\\\\"id\\\\\\\":123,\\\\\\\"name\\\\\\\":\\\\\\\"哈哈哈\\\\\\\"}}\\\")\"));\n    }\n\n    @Test\n    public void test5() throws Exception {\n\n        String jsonStr = \"{\\\"packet\\\":{\\\"smsType\\\":\\\"USER_LOGIN\\\"}}\";\n\n        mockMvc.perform(\n                (post(\"/fastjson/test5\").characterEncoding(\"UTF-8\").content(jsonStr)\n                        .contentType(MediaType.APPLICATION_JSON))).andDo(print());\n    }\n\n    @Test\n    public void test5_2() throws Exception {\n\n        String jsonStr = \"{\\\"packet\\\":{\\\"smsType\\\":\\\"USER_LOGIN\\\"}}\";\n\n        ResultActions actions = mockMvc.perform((post(\"/fastjson/test5?callback=myUpdate\").characterEncoding(\"UTF-8\")\n                .content(jsonStr).contentType(MediaType.APPLICATION_JSON)));\n        actions.andDo(print());\n        actions.andExpect(status().isOk())\n                .andExpect(content().contentType(APPLICATION_JAVASCRIPT))\n                .andExpect(content().string(\"/**/myUpdate(\\\"{\\\\\\\"packet\\\\\\\":{\\\\\\\"smsType\\\\\\\":\\\\\\\"USER_LOGIN\\\\\\\"}}\\\")\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/spring/mock/testcase/FastJsonpHttpMessageConverter4Case2Test.java",
    "content": "package com.alibaba.json.bvt.support.spring.mock.testcase;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.support.spring.FastJsonpHttpMessageConverter4;\nimport com.alibaba.fastjson.support.spring.FastJsonpResponseBodyAdvice;\nimport org.junit.Assert;\nimport org.junit.Before;\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.ComponentScan;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.converter.HttpMessageConverter;\nimport org.springframework.test.context.ContextConfiguration;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\nimport org.springframework.test.web.servlet.MockMvc;\nimport org.springframework.test.web.servlet.ResultActions;\nimport org.springframework.test.web.servlet.setup.MockMvcBuilders;\nimport org.springframework.web.context.WebApplicationContext;\nimport org.springframework.web.filter.CharacterEncodingFilter;\nimport org.springframework.web.servlet.config.annotation.EnableWebMvc;\nimport org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;\n\nimport java.util.List;\n\nimport static junit.framework.TestCase.assertTrue;\nimport static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;\nimport static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;\nimport static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;\nimport static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;\n\n@RunWith(SpringJUnit4ClassRunner.class)\n@WebAppConfiguration\n@ContextConfiguration\npublic class FastJsonpHttpMessageConverter4Case2Test {\n    private static final MediaType APPLICATION_JAVASCRIPT = new MediaType(\"application\", \"javascript\");\n\n    @Autowired\n    private WebApplicationContext wac;\n\n    private MockMvc mockMvc;\n\n    @ComponentScan(basePackages = \"com.alibaba.json.bvt.support.spring.mock.controller\")\n    @EnableWebMvc\n    @Configuration\n    protected static class Config extends WebMvcConfigurerAdapter {\n        @Bean\n        public FastJsonpResponseBodyAdvice fastJsonpResponseBodyAdvice() {\n            return new FastJsonpResponseBodyAdvice(\"callback\", \"jsonp\");\n        }\n\n        @Override\n        public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {\n            converters.add(0, new FastJsonpHttpMessageConverter4());\n            super.extendMessageConverters(converters);\n        }\n    }\n\n    @Before\n    public void setup() {\n        this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac) //\n                .addFilter(new CharacterEncodingFilter(\"UTF-8\", true)) // 设置服务器端返回的字符集为：UTF-8\n                .build();\n    }\n\n    @Test\n    public void isInjectComponent() {\n        wac.getBean(FastJsonpResponseBodyAdvice.class);\n    }\n\n    @Test\n    public void test1() throws Exception {\n\n        JSONObject json = new JSONObject();\n\n        json.put(\"id\", 123);\n\n        json.put(\"name\", \"哈哈哈\");\n\n        mockMvc.perform(\n                (post(\"/fastjson/test1\").characterEncoding(\"UTF-8\").content(json.toJSONString())\n                        .contentType(MediaType.APPLICATION_JSON))).andExpect(status().isOk()).andDo(print());\n    }\n\n    @Test\n    public void test1_2() throws Exception {\n\n        JSONObject json = new JSONObject();\n\n        json.put(\"id\", 123);\n\n        json.put(\"name\", \"哈哈哈\");\n\n        ResultActions actions = mockMvc.perform((post(\"/fastjson/test1?callback=fnUpdateSome\").characterEncoding(\n                \"UTF-8\").content(json.toJSONString()).contentType(MediaType.APPLICATION_JSON)));\n        actions.andDo(print());\n        actions.andExpect(status().isOk()).andExpect(content().contentType(APPLICATION_JAVASCRIPT));\n        String content = actions.andReturn().getResponse().getContentAsString();\n        assertTrue(content.equals(\"/**/fnUpdateSome({\\\"name\\\":\\\"哈哈哈\\\",\\\"id\\\":123})\")\n                || content.equals(\"/**/fnUpdateSome({\\\"id\\\":123,\\\"name\\\":\\\"哈哈哈\\\"})\"));\n    }\n\n    @Test\n    public void test2() throws Exception {\n\n        String jsonStr = \"[{\\\"name\\\":\\\"p1\\\",\\\"sonList\\\":[{\\\"name\\\":\\\"s1\\\"}]},{\\\"name\\\":\\\"p2\\\",\\\"sonList\\\":[{\\\"name\\\":\\\"s2\\\"},{\\\"name\\\":\\\"s3\\\"}]}]\";\n\n        mockMvc.perform(\n                (post(\"/fastjson/test2\").characterEncoding(\"UTF-8\").content(jsonStr)\n                        .contentType(MediaType.APPLICATION_JSON))).andExpect(status().isOk()).andDo(print());\n    }\n\n    @Test\n    public void test2_2() throws Exception {\n\n        String jsonStr = \"[{\\\"name\\\":\\\"p1\\\",\\\"sonList\\\":[{\\\"name\\\":\\\"s1\\\"}]},{\\\"name\\\":\\\"p2\\\",\\\"sonList\\\":[{\\\"name\\\":\\\"s2\\\"},{\\\"name\\\":\\\"s3\\\"}]}]\";\n\n        ResultActions actions = mockMvc.perform((post(\"/fastjson/test2?jsonp=fnUpdateSome\").characterEncoding(\"UTF-8\")\n                .content(jsonStr).contentType(MediaType.APPLICATION_JSON)));\n        actions.andDo(print());\n        actions.andExpect(status().isOk()).andExpect(content().contentType(APPLICATION_JAVASCRIPT));\n        String content = actions.andReturn().getResponse().getContentAsString();\n        assertTrue(content.equals(\"/**/fnUpdateSome({\\\"p1\\\":1,\\\"p2\\\":2})\")\n                || content.equals(\"/**/fnUpdateSome({\\\"p2\\\":2,\\\"p1\\\":1})\"));\n    }\n\n    @Test\n    public void test3() throws Exception {\n        List<Object> list = this.mockMvc.perform(post(\"/fastjson/test3\")).andReturn().getResponse()\n                .getHeaderValues(\"Content-Length\");\n        Assert.assertNotEquals(list.size(), 0);\n    }\n\n    @Test\n    public void test3_2() throws Exception {\n        ResultActions actions = this.mockMvc.perform(post(\"/fastjson/test3?jsonp=fnUpdateSome\"));\n        actions.andDo(print());\n        actions.andExpect(status().isOk()).andExpect(content().contentType(APPLICATION_JAVASCRIPT))\n                .andExpect(content().string(\"/**/fnUpdateSome({})\"));\n    }\n\n    @Test\n    public void test4() throws Exception {\n\n        String jsonStr = \"{\\\"t\\\":{\\\"id\\\":123,\\\"name\\\":\\\"哈哈哈\\\"}}\";\n\n        mockMvc.perform(\n                (post(\"/fastjson/test4\").characterEncoding(\"UTF-8\").content(jsonStr)\n                        .contentType(MediaType.APPLICATION_JSON))).andDo(print());\n    }\n\n    @Test\n    public void test4_2() throws Exception {\n\n        String jsonStr = \"{\\\"t\\\":{\\\"id\\\":123,\\\"name\\\":\\\"哈哈哈\\\"}}\";\n\n        ResultActions actions = mockMvc.perform((post(\"/fastjson/test4?callback=myUpdate\").characterEncoding(\"UTF-8\")\n                .content(jsonStr).contentType(MediaType.APPLICATION_JSON)));\n        actions.andDo(print());\n        actions.andExpect(status().isOk())\n                .andExpect(content().contentType(APPLICATION_JAVASCRIPT))\n                .andExpect(content().string(\"/**/myUpdate(\\\"{\\\\\\\"t\\\\\\\":{\\\\\\\"id\\\\\\\":123,\\\\\\\"name\\\\\\\":\\\\\\\"哈哈哈\\\\\\\"}}\\\")\"));\n    }\n\n    @Test\n    public void test5() throws Exception {\n\n        String jsonStr = \"{\\\"packet\\\":{\\\"smsType\\\":\\\"USER_LOGIN\\\"}}\";\n\n        mockMvc.perform(\n                (post(\"/fastjson/test5\").characterEncoding(\"UTF-8\").content(jsonStr)\n                        .contentType(MediaType.APPLICATION_JSON))).andDo(print());\n    }\n\n    @Test\n    public void test5_2() throws Exception {\n\n        String jsonStr = \"{\\\"packet\\\":{\\\"smsType\\\":\\\"USER_LOGIN\\\"}}\";\n\n        ResultActions actions = mockMvc.perform((post(\"/fastjson/test5?callback=myUpdate\").characterEncoding(\"UTF-8\")\n                .content(jsonStr).contentType(MediaType.APPLICATION_JSON)));\n        actions.andDo(print());\n        actions.andExpect(status().isOk())\n                .andExpect(content().contentType(APPLICATION_JAVASCRIPT))\n                .andExpect(content().string(\"/**/myUpdate(\\\"{\\\\\\\"packet\\\\\\\":{\\\\\\\"smsType\\\\\\\":\\\\\\\"USER_LOGIN\\\\\\\"}}\\\")\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/spring/mock/testcase/FastJsonpHttpMessageConverter4Case3Test.java",
    "content": "package com.alibaba.json.bvt.support.spring.mock.testcase;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.support.spring.FastJsonpHttpMessageConverter4;\nimport com.alibaba.fastjson.support.spring.FastJsonpResponseBodyAdvice;\nimport org.junit.Assert;\nimport org.junit.Before;\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.ComponentScan;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.converter.HttpMessageConverter;\nimport org.springframework.test.context.ContextConfiguration;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\nimport org.springframework.test.web.servlet.MockMvc;\nimport org.springframework.test.web.servlet.ResultActions;\nimport org.springframework.test.web.servlet.setup.MockMvcBuilders;\nimport org.springframework.web.context.WebApplicationContext;\nimport org.springframework.web.filter.CharacterEncodingFilter;\nimport org.springframework.web.servlet.config.annotation.EnableWebMvc;\nimport org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;\n\nimport java.util.List;\n\nimport static junit.framework.TestCase.assertTrue;\nimport static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;\nimport static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;\nimport static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;\nimport static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;\n\n@RunWith(SpringJUnit4ClassRunner.class)\n@WebAppConfiguration\n@ContextConfiguration\npublic class FastJsonpHttpMessageConverter4Case3Test {\n    private static final MediaType APPLICATION_JAVASCRIPT = new MediaType(\"application\", \"javascript\");\n\n    @Autowired\n    private WebApplicationContext wac;\n\n    private MockMvc mockMvc;\n\n    @ComponentScan(basePackages = \"com.alibaba.json.bvt.support.spring.mock.controller\")\n    @EnableWebMvc\n    @Configuration\n    protected static class Config extends WebMvcConfigurerAdapter {\n        @Bean\n        public FastJsonpResponseBodyAdvice fastJsonpResponseBodyAdvice() {\n            return new FastJsonpResponseBodyAdvice();\n        }\n\n        @Override\n        public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {\n            converters.add(0, new FastJsonpHttpMessageConverter4());\n            super.extendMessageConverters(converters);\n        }\n    }\n\n    @Before\n    public void setup() {\n        this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac) //\n                .addFilter(new CharacterEncodingFilter(\"UTF-8\", true)) // 设置服务器端返回的字符集为：UTF-8\n                .build();\n    }\n\n    @Test\n    public void checkDefaultJSONPQueryParamNames() {\n        String[] expected = { \"callback\", \"jsonp\" };\n        Assert.assertArrayEquals(expected, FastJsonpResponseBodyAdvice.DEFAULT_JSONP_QUERY_PARAM_NAMES);\n    }\n\n    @Test\n    public void isInjectComponent() {\n        wac.getBean(FastJsonpResponseBodyAdvice.class);\n    }\n\n    @Test\n    public void test1() throws Exception {\n\n        JSONObject json = new JSONObject();\n\n        json.put(\"id\", 123);\n\n        json.put(\"name\", \"哈哈哈\");\n\n        mockMvc.perform(\n                (post(\"/fastjson/test1\").characterEncoding(\"UTF-8\").content(json.toJSONString())\n                        .contentType(MediaType.APPLICATION_JSON))).andExpect(status().isOk()).andDo(print());\n    }\n\n    @Test\n    public void test1_2() throws Exception {\n\n        JSONObject json = new JSONObject();\n\n        json.put(\"id\", 123);\n\n        json.put(\"name\", \"哈哈哈\");\n\n        ResultActions actions = mockMvc.perform((post(\"/fastjson/test1?callback=fnUpdateSome\").characterEncoding(\n                \"UTF-8\").content(json.toJSONString()).contentType(MediaType.APPLICATION_JSON)));\n        actions.andDo(print());\n        actions.andExpect(status().isOk()).andExpect(content().contentType(APPLICATION_JAVASCRIPT));\n        String content = actions.andReturn().getResponse().getContentAsString();\n        assertTrue(content.equals(\"/**/fnUpdateSome({\\\"name\\\":\\\"哈哈哈\\\",\\\"id\\\":123})\")\n                || content.equals(\"/**/fnUpdateSome({\\\"id\\\":123,\\\"name\\\":\\\"哈哈哈\\\"})\"));    }\n\n    @Test\n    public void test2() throws Exception {\n\n        String jsonStr = \"[{\\\"name\\\":\\\"p1\\\",\\\"sonList\\\":[{\\\"name\\\":\\\"s1\\\"}]},{\\\"name\\\":\\\"p2\\\",\\\"sonList\\\":[{\\\"name\\\":\\\"s2\\\"},{\\\"name\\\":\\\"s3\\\"}]}]\";\n\n        mockMvc.perform(\n                (post(\"/fastjson/test2\").characterEncoding(\"UTF-8\").content(jsonStr)\n                        .contentType(MediaType.APPLICATION_JSON))).andExpect(status().isOk()).andDo(print());\n    }\n\n    @Test\n    public void test2_2() throws Exception {\n\n        String jsonStr = \"[{\\\"name\\\":\\\"p1\\\",\\\"sonList\\\":[{\\\"name\\\":\\\"s1\\\"}]},{\\\"name\\\":\\\"p2\\\",\\\"sonList\\\":[{\\\"name\\\":\\\"s2\\\"},{\\\"name\\\":\\\"s3\\\"}]}]\";\n\n        ResultActions actions = mockMvc.perform((post(\"/fastjson/test2?jsonp=fnUpdateSome\").characterEncoding(\"UTF-8\")\n                .content(jsonStr).contentType(MediaType.APPLICATION_JSON)));\n        actions.andDo(print());\n        actions.andExpect(status().isOk()).andExpect(content().contentType(APPLICATION_JAVASCRIPT));\n        String content = actions.andReturn().getResponse().getContentAsString();\n        assertTrue(content.equals(\"/**/fnUpdateSome({\\\"p1\\\":1,\\\"p2\\\":2})\")\n                || content.equals(\"/**/fnUpdateSome({\\\"p2\\\":2,\\\"p1\\\":1})\"));    }\n\n    @Test\n    public void test3() throws Exception {\n        List<Object> list = this.mockMvc.perform(post(\"/fastjson/test3\")).andReturn().getResponse()\n                .getHeaderValues(\"Content-Length\");\n        Assert.assertNotEquals(list.size(), 0);\n    }\n\n    @Test\n    public void test3_2() throws Exception {\n        ResultActions actions = this.mockMvc.perform(post(\"/fastjson/test3?jsonp=fnUpdateSome\"));\n        actions.andDo(print());\n        actions.andExpect(status().isOk()).andExpect(content().contentType(APPLICATION_JAVASCRIPT))\n                .andExpect(content().string(\"/**/fnUpdateSome({})\"));\n    }\n\n    @Test\n    public void test4() throws Exception {\n\n        String jsonStr = \"{\\\"t\\\":{\\\"id\\\":123,\\\"name\\\":\\\"哈哈哈\\\"}}\";\n\n        mockMvc.perform(\n                (post(\"/fastjson/test4\").characterEncoding(\"UTF-8\").content(jsonStr)\n                        .contentType(MediaType.APPLICATION_JSON))).andDo(print());\n    }\n\n    @Test\n    public void test4_2() throws Exception {\n\n        String jsonStr = \"{\\\"t\\\":{\\\"id\\\":123,\\\"name\\\":\\\"哈哈哈\\\"}}\";\n\n        ResultActions actions = mockMvc.perform((post(\"/fastjson/test4?callback=myUpdate\").characterEncoding(\"UTF-8\")\n                .content(jsonStr).contentType(MediaType.APPLICATION_JSON)));\n        actions.andDo(print());\n        actions.andExpect(status().isOk())\n                .andExpect(content().contentType(APPLICATION_JAVASCRIPT))\n                .andExpect(content().string(\"/**/myUpdate(\\\"{\\\\\\\"t\\\\\\\":{\\\\\\\"id\\\\\\\":123,\\\\\\\"name\\\\\\\":\\\\\\\"哈哈哈\\\\\\\"}}\\\")\"));\n    }\n\n    @Test\n    public void test5() throws Exception {\n\n        String jsonStr = \"{\\\"packet\\\":{\\\"smsType\\\":\\\"USER_LOGIN\\\"}}\";\n\n        mockMvc.perform(\n                (post(\"/fastjson/test5\").characterEncoding(\"UTF-8\").content(jsonStr)\n                        .contentType(MediaType.APPLICATION_JSON))).andDo(print());\n    }\n\n    @Test\n    public void test5_2() throws Exception {\n\n        String jsonStr = \"{\\\"packet\\\":{\\\"smsType\\\":\\\"USER_LOGIN\\\"}}\";\n\n        ResultActions actions = mockMvc.perform((post(\"/fastjson/test5?callback=myUpdate\").characterEncoding(\"UTF-8\")\n                .content(jsonStr).contentType(MediaType.APPLICATION_JSON)));\n        actions.andDo(print());\n        actions.andExpect(status().isOk())\n                .andExpect(content().contentType(APPLICATION_JAVASCRIPT))\n                .andExpect(content().string(\"/**/myUpdate(\\\"{\\\\\\\"packet\\\\\\\":{\\\\\\\"smsType\\\\\\\":\\\\\\\"USER_LOGIN\\\\\\\"}}\\\")\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/spring/security/DefaultOAuth2AccessTokenTest.java",
    "content": "package com.alibaba.json.bvt.support.spring.security;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\nimport org.springframework.security.oauth2.common.DefaultOAuth2AccessToken;\n\nimport java.util.Date;\n\npublic class DefaultOAuth2AccessTokenTest extends TestCase {\n    public void test_0() throws Exception {\n        ParserConfig config = new ParserConfig();\n\n        DefaultOAuth2AccessToken token = new DefaultOAuth2AccessToken(\"123\");\n        token.setExpiration(new Date());\n        String json = JSON.toJSONString(token, SerializerFeature.WriteClassName);\n\n        config.addAccept(DefaultOAuth2AccessToken.class.getName());\n\n        DefaultOAuth2AccessToken token2 = (DefaultOAuth2AccessToken) JSON.parse(json, config, Feature.SupportAutoType);\n        assertEquals(token.getValue(), token2.getValue());\n        assertEquals(token.getExpiration(), token2.getExpiration());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/spring/security/DefaultSavedRequestTest.java",
    "content": "package com.alibaba.json.bvt.support.spring.security;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.fastjson.support.spring.FastJsonRedisSerializer;\nimport com.alibaba.fastjson.support.spring.GenericFastJsonRedisSerializer;\nimport com.alibaba.json.bvt.serializer.JavaBeanSerializerTest;\nimport junit.framework.TestCase;\nimport org.springframework.mock.web.MockHttpServletRequest;\nimport org.springframework.security.authentication.UsernamePasswordAuthenticationToken;\nimport org.springframework.security.core.authority.SimpleGrantedAuthority;\nimport org.springframework.security.core.context.SecurityContextImpl;\nimport org.springframework.security.core.userdetails.User;\nimport org.springframework.security.web.PortResolver;\nimport org.springframework.security.web.authentication.WebAuthenticationDetails;\nimport org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationToken;\nimport org.springframework.security.web.csrf.DefaultCsrfToken;\nimport org.springframework.security.web.savedrequest.DefaultSavedRequest;\nimport org.springframework.security.web.savedrequest.SavedCookie;\n\nimport javax.servlet.ServletRequest;\nimport javax.servlet.http.Cookie;\nimport java.lang.reflect.Field;\n\n/**\n * Created by wenshao on 11/08/2017.\n */\npublic class DefaultSavedRequestTest extends TestCase {\n    ParserConfig config;\n\n    protected void setUp() throws Exception {\n        Field field = GenericFastJsonRedisSerializer.class.getDeclaredField(\"defaultRedisConfig\");\n        field.setAccessible(true);\n        config = (ParserConfig) field.get(null);\n        config.addAccept(\"org.springframework.security.web.savedrequest.DefaultSavedRequest\");\n        config.addAccept(\"org.springframework.security.core.context.SecurityContextImpl\");\n        config.addAccept(\"org.springframework.security.core.userdetails.User\");\n        config.addAccept(\"org.springframework.security.authentication.UsernamePasswordAuthenticationToken\");\n        config.addAccept(\"org.springframework.security.core.authority.SimpleGrantedAuthority\");\n        config.addAccept(\"org.springframework.security.web.authentication.WebAuthenticationDetails\");\n    }\n    public void test_for_issue() throws Exception {\n        MockHttpServletRequest mockReq = new MockHttpServletRequest();\n        DefaultSavedRequest request = new DefaultSavedRequest(mockReq, new PortResolver() {\n\n            public int getServerPort(ServletRequest servletRequest) {\n                return 0;\n            }\n        });\n\n        String str = JSON.toJSONString(request, SerializerFeature.WriteClassName);\n//        System.out.println(str);\n\n\n        JSON.parseObject(str, Object.class, config, Feature.SupportAutoType);\n\n        JSON.parseObject(str);\n    }\n\n\n    public void test_cookie() throws Exception {\n        String json = \"{\\\"name\\\":\\\"xx\\\",\\\"value\\\":\\\"xx\\\",\\\"comment\\\":\\\"xx\\\",\\\"domain\\\":\\\"xx\\\"}\";\n        SavedCookie cookie = JSON.parseObject(json, SavedCookie.class);\n        assertEquals(\"xx\", cookie.getName());\n        assertEquals(\"{\\\"comment\\\":\\\"xx\\\",\\\"cookie\\\":{\\\"comment\\\":\\\"xx\\\",\\\"domain\\\":\\\"xx\\\",\\\"httpOnly\\\":false,\\\"maxAge\\\":0,\\\"name\\\":\\\"xx\\\",\\\"secure\\\":false,\\\"value\\\":\\\"xx\\\",\\\"version\\\":0},\\\"domain\\\":\\\"xx\\\",\\\"maxAge\\\":0,\\\"name\\\":\\\"xx\\\",\\\"secure\\\":false,\\\"value\\\":\\\"xx\\\",\\\"version\\\":0}\", JSON.toJSONString(cookie));\n    }\n\n    public void test_0() throws Exception {\n        DefaultCsrfToken token = JSON.parseObject(\"{\\\"token\\\":\\\"xxx\\\",\\\"parameterName\\\":\\\"222\\\",\\\"headerName\\\":\\\"hhh\\\"}\", DefaultCsrfToken.class);\n        assertEquals(\"hhh\", token.getHeaderName());\n        assertEquals(\"222\", token.getParameterName());\n        assertEquals(\"xxx\", token.getToken());\n        assertEquals(\"{\\\"headerName\\\":\\\"hhh\\\",\\\"parameterName\\\":\\\"222\\\",\\\"token\\\":\\\"xxx\\\"}\", JSON.toJSONString(token));\n    }\n\n    public void test_http_cookie() throws Exception {\n        Cookie cookie = new Cookie(\"cna\", \"h8a2EO57uEgCAXyg1TgBBFK\");\n        cookie.setMaxAge(10);\n        String json = JSON.toJSONString(cookie);\n        Cookie cookie1 = JSON.parseObject(json, Cookie.class);\n        assertEquals(cookie.getName(), cookie1.getName());\n        assertEquals(cookie.getValue(), cookie1.getValue());\n        assertEquals(cookie.getMaxAge(), cookie1.getMaxAge());\n        //System.out.println(json);\n    }\n\n    public void test_PreAuthenticatedAuthenticationToken() throws Exception {\n        PreAuthenticatedAuthenticationToken token = new PreAuthenticatedAuthenticationToken(\"ppp\", \"cccc\");\n        String json = JSON.toJSONString(token);\n        System.out.println(json);\n\n        PreAuthenticatedAuthenticationToken token1 = JSON.parseObject(json, PreAuthenticatedAuthenticationToken.class);\n        assertEquals(\"ppp\", token1.getPrincipal());\n        assertEquals(\"cccc\", token1.getCredentials());\n    }\n\n    public void test_WebAuthenticationDetails() throws Exception {\n        WebAuthenticationDetails details = JSON.parseObject(\"{\\\"remoteAddress\\\":\\\"rrr\\\",\\\"sessionId\\\":\\\"ssss\\\"}\", WebAuthenticationDetails.class);\n        assertEquals(\"rrr\", details.getRemoteAddress());\n        assertEquals(\"ssss\", details.getSessionId());\n    }\n\n    public void test_SecurityContextImpl() throws Exception {\n        String json = \"{\\\"@type\\\":\\\"org.springframework.security.core.context.SecurityContextImpl\\\"}\";\n        JSON.parseObject(json, Object.class, Feature.SupportAutoType);\n\n        JSON.parseObject(json, Object.class, config);\n    }\n\n    public void test_UsernamePasswordAuthenticationToken() throws Exception {\n        String json = \"{\\\"@type\\\":\\\"org.springframework.security.authentication.UsernamePasswordAuthenticationToken\\\",\\\"principal\\\":\\\"pp\\\"}\";\n        UsernamePasswordAuthenticationToken token = (UsernamePasswordAuthenticationToken)JSON.parseObject(json, Object.class, Feature.SupportAutoType);\n\n        UsernamePasswordAuthenticationToken token1 = (UsernamePasswordAuthenticationToken) JSON.parseObject(json, Object.class, config);\n\n        assertEquals(\"pp\", token.getPrincipal());\n        assertEquals(\"pp\", token1.getPrincipal());\n    }\n\n\n    public void test_SimpleGrantedAuthority() throws Exception {\n        String json = \"{\\\"@type\\\":\\\"org.springframework.security.core.authority.SimpleGrantedAuthority\\\",\\\"authority\\\":\\\"xx\\\"}\";\n        SimpleGrantedAuthority token = (SimpleGrantedAuthority)JSON.parseObject(json, Object.class, Feature.SupportAutoType);\n\n        SimpleGrantedAuthority token1 = (SimpleGrantedAuthority) JSON.parseObject(json, Object.class, config);\n\n        assertEquals(\"xx\", token.getAuthority());\n        assertEquals(\"xx\", token1.getAuthority());\n\n        assertEquals(\"{\\\"authority\\\":\\\"xx\\\"}\", JSON.toJSONString(token));\n    }\n\n    public void test_User() throws Exception {\n        String json = \"{\\\"@type\\\":\\\"org.springframework.security.core.userdetails.User\\\",\\\"username\\\":\\\"xx\\\",\\\"authorities\\\":[]}\";\n\n        User token = (User)JSON.parseObject(json, Object.class);\n\n        User token1 = (User) JSON.parseObject(json, Object.class, config, Feature.SupportAutoType);\n\n        assertEquals(\"xx\", token.getUsername());\n        assertEquals(\"xx\", token1.getUsername());\n\n        assertEquals(\"\", token.getPassword());\n        assertEquals(\"\", token1.getPassword());\n    }\n\n    public void test_SecurityContextImpl_x() throws Exception {\n        String json = \"{\\\"@type\\\":\\\"org.springframework.security.core.context.SecurityContextImpl\\\",\\\"authentication\\\":{\\\"@type\\\":\\\"org.springframework.security.authentication.UsernamePasswordAuthenticationToken\\\",\\\"authenticated\\\":true,\\\"authorities\\\":[{\\\"@type\\\":\\\"org.springframework.security.core.authority.SimpleGrantedAuthority\\\",\\\"authority\\\":\\\"ROLE_ADMIN\\\"}],\\\"details\\\":{\\\"@type\\\":\\\"org.springframework.security.web.authentication.WebAuthenticationDetails\\\",\\\"remoteAddress\\\":\\\"0:0:0:0:0:0:0:1\\\",\\\"sessionId\\\":\\\"35dbb2c4-971c-4624-bd89-2e002180a2ca\\\"},\\\"name\\\":\\\"admin\\\",\\\"principal\\\":{\\\"@type\\\":\\\"org.springframework.security.core.userdetails.User\\\",\\\"accountNonExpired\\\":true,\\\"accountNonLocked\\\":true,\\\"authorities\\\":[{\\\"$ref\\\":\\\"$.authentication.authorities[0]\\\"}],\\\"credentialsNonExpired\\\":true,\\\"enabled\\\":true,\\\"username\\\":\\\"admin\\\"}}}\";\n\n        SecurityContextImpl context = (SecurityContextImpl) JSON.parseObject(json, Object.class, config, Feature.SupportAutoType);\n    }\n\n    //\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/support/springfox/JsonValueTest.java",
    "content": "package com.alibaba.json.bvt.support.springfox;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\nimport springfox.documentation.spring.web.json.Json;\n\npublic class JsonValueTest extends TestCase {\n    public void test_0() throws Exception {\n        Json json = new Json(\"\\\"{\\\"id\\\":1001\\\"}\");\n        String text = JSON.toJSONString(json);\n        Assert.assertEquals(\"\\\"{\\\"id\\\":1001\\\"}\", text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/taobao/ItemUpdateDOTest.java",
    "content": "package com.alibaba.json.bvt.taobao;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\npublic class ItemUpdateDOTest extends TestCase {\n\n    public void test_1() throws Exception {\n        SerializeConfig config = new SerializeConfig();\n        config.setAsmEnable(false);\n        Model item = new Model();\n        JSON.toJSONString(item, config, SerializerFeature.IgnoreErrorGetter,\n                SerializerFeature.IgnoreNonFieldGetter, SerializerFeature.WriteClassName,\n                SerializerFeature.WriteMapNullValue);\n\n        System.out.println(JSON.toJSONString(\"\\u000B\"));\n    }\n\n    public static class Model {\n        private long f0 = 1;\n        private long f1;\n\n        public long getF0() {\n            return f0;\n        }\n\n        public void setF0(long f0) {\n            this.f0 = f0;\n        }\n\n        public long getF1() {\n            return f1;\n        }\n\n        public void setF1(long f1) {\n            this.f1 = f1;\n        }\n\n        /** @deprecated */\n        @Deprecated\n        public long getUpdateFeatureCc() {\n            throw new IllegalArgumentException(\"updateFeatureCc不再使用\");\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/taobao/MTopTest.java",
    "content": "package com.alibaba.json.bvt.taobao;\n\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.reflect.Field;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.BeanContext;\nimport com.alibaba.fastjson.serializer.ContextValueFilter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class MTopTest extends TestCase {\n\n    public void test_for_mtop() throws Exception {\n        P0 p = new P0();\n        p.model = new Model();\n\n        ContextValueFilter valueFilter = new ContextValueFilter() {\n\n            @Override\n            public Object process(BeanContext context, Object object, String name, Object value) {\n\n\n                if (value instanceof Model) {\n                    Assert.assertEquals(P0.class, context.getBeanClass());\n                    Assert.assertNotNull(context.getField());\n                    Assert.assertNotNull(context.getMethod());\n                    Assert.assertEquals(\"model\", context.getName());\n                    Assert.assertEquals(Model.class, context.getFieldClass());\n                    Assert.assertEquals(Model.class, context.getFieldType());\n                    Assert.assertEquals(SerializerFeature.WriteMapNullValue.mask, context.getFeatures());\n                    \n                    Field field = context.getField();\n                    Assert.assertNotNull(field.getAnnotation(UrlIdentify.class));\n                    Assert.assertNotNull(context.getAnnation(UrlIdentify.class));\n                    \n                    return value;\n                }\n\n                return value;\n            }\n        };\n\n        JSON.toJSONString(p, valueFilter);\n    }\n\n    private static class P0 {\n\n        @JSONField(serialzeFeatures=SerializerFeature.WriteMapNullValue)\n        @UrlIdentify(schema = \"xxxx\")\n        private Model model;\n\n        public Model getModel() {\n            return model;\n        }\n\n        public void setModel(Model model) {\n            this.model = model;\n        }\n\n    }\n\n    public static class Model {\n\n        private int    id;\n        private String url;\n\n        public String getUrl() {\n            return url;\n        }\n\n        public void setUrl(String url) {\n            this.url = url;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n    }\n\n    @Retention(RetentionPolicy.RUNTIME)\n    public static @interface UrlIdentify {\n\n        String schema();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/taobao/TradeTest.java",
    "content": "package com.alibaba.json.bvt.taobao;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\n\npublic class TradeTest extends TestCase {\n    public void test_cast() {\n        String s\n                = \"{\\\"period\\\":{\\\"label\\\":\\\"最近30天\\\",\\\"value\\\":\\\"30d\\\"},\\\"data\\\":{\\\"gmv\\\":{\\\"min\\\":-2},\\\"id\\\":3712312925}}\";\n        Param param;\n        param = JSON.parseObject(s, Param.class); // 从字符串直接转化，OK\n        assertNotNull(param);\n\n        JSONObject jobj = JSON.parseObject(s);\n        param = jobj.toJavaObject(Param.class);\n    }\n\n    public static class Param extends BaseObject {\n\n        private static final long serialVersionUID = 5180807854744861824L;\n\n        public TradeParam<Long, Double, Long, Long> data;\n\n        public Pair<String> period;\n    }\n\n    public static class TradeParam<ID, G, O, C> extends BaseObject {\n\n        private static final long serialVersionUID = 3201881995156974305L;\n\n        public ID id;\n\n        public Range<G> gmv;\n\n        public Range<O> ordCnt;\n\n        public Range<C> cspu;\n\n    }\n\n    public static class Range<T> extends BaseObject {\n\n        private static final long serialVersionUID = 669395861117027110L;\n\n        public T min;\n        public T max;\n\n    }\n\n    public static class BaseObject {}\n\n    public static class Pair<T> extends BaseObject {\n\n        private static final long serialVersionUID = 2840564531670241284L;\n\n        public String label;\n        public T value;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/typeRef/TypeReferenceTest.java",
    "content": "package com.alibaba.json.bvt.typeRef;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class TypeReferenceTest extends TestCase {\n\n    @SuppressWarnings(\"rawtypes\")\n    public void test_0() throws Exception {\n        System.out.println(System.getProperties());\n        String text;\n\n        {\n            Map<String, Bean> map = new HashMap<String, Bean>();\n            map.put(\"a\", new Bean(123, \"马加爵\"));\n            map.put(\"b\", new Bean(234, \"药家鑫\"));\n            map.put(\"c\", new Bean(456, \"刘大伟\"));\n\n            text = JSON.toJSONString(map);\n        }\n\n        System.out.println(text);\n\n        {\n            Map<String, Bean> map = JSON.parseObject(text, new TypeReference<Map<String, Bean>>() {}); // 注意这里\n            Assert.assertEquals(3, map.size());\n            Assert.assertEquals(123, ((Bean) map.get(\"a\")).getId());\n            Assert.assertEquals(234, ((Bean) map.get(\"b\")).getId());\n            Assert.assertEquals(456, ((Bean) map.get(\"c\")).getId());\n    \n            Assert.assertEquals(\"马加爵\", ((Bean) map.get(\"a\")).getName());\n            Assert.assertEquals(\"药家鑫\", ((Bean) map.get(\"b\")).getName());\n            Assert.assertEquals(\"刘大伟\", ((Bean) map.get(\"c\")).getName());\n        }\n        \n        {\n            Map map = JSON.parseObject(text, new TypeReference<Map>() {}); // 注意这里\n            Assert.assertEquals(3, map.size());\n            Assert.assertEquals(123, ((JSONObject) map.get(\"a\")).get(\"id\"));\n            Assert.assertEquals(234, ((JSONObject) map.get(\"b\")).get(\"id\"));\n            Assert.assertEquals(456, ((JSONObject) map.get(\"c\")).get(\"id\"));\n            \n            Assert.assertEquals(\"马加爵\", ((JSONObject) map.get(\"a\")).get(\"name\"));\n            Assert.assertEquals(\"药家鑫\", ((JSONObject) map.get(\"b\")).get(\"name\"));\n            Assert.assertEquals(\"刘大伟\", ((JSONObject) map.get(\"c\")).get(\"name\"));\n        }\n        \n        {\n            Map map = JSON.parseObject(text, new TypeReference<JSONObject>() {}); // 注意这里\n            Assert.assertEquals(3, map.size());\n            Assert.assertEquals(123, ((JSONObject) map.get(\"a\")).get(\"id\"));\n            Assert.assertEquals(234, ((JSONObject) map.get(\"b\")).get(\"id\"));\n            Assert.assertEquals(456, ((JSONObject) map.get(\"c\")).get(\"id\"));\n            \n            Assert.assertEquals(\"马加爵\", ((JSONObject) map.get(\"a\")).get(\"name\"));\n            Assert.assertEquals(\"药家鑫\", ((JSONObject) map.get(\"b\")).get(\"name\"));\n            Assert.assertEquals(\"刘大伟\", ((JSONObject) map.get(\"c\")).get(\"name\"));\n        }\n    }\n\n    public static class Bean {\n\n        private int    id;\n        private String name;\n\n        public Bean(){\n\n        }\n\n        public Bean(int id, String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n    \n     \n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/typeRef/TypeReferenceTest10.java",
    "content": "package com.alibaba.json.bvt.typeRef;\n\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.lang.reflect.Type;\n\n/**\n * Created by wenshao on 2016/10/11.\n */\npublic class TypeReferenceTest10 extends TestCase {\n    public void test_same() throws Exception {\n        Type type1 = getType();\n        Type type2 = getType();\n\n        assertEquals(type1, type2);\n        assertSame(type1, type2);\n    }\n\n    Type getType() {\n        return new TypeReference<Model<Integer>>() {}.getType();\n    }\n\n    public static class Model<T> {\n        public T value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/typeRef/TypeReferenceTest11.java",
    "content": "package com.alibaba.json.bvt.typeRef;\n\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\n\nimport java.lang.reflect.Type;\n\n/**\n * Created by wenshao on 2016/10/11.\n */\npublic class TypeReferenceTest11 extends TestCase {\n    public void test_same() throws Exception {\n        Type type1 = getType(Integer.class);\n        Type type2 = getType(Integer.class);\n\n        assertEquals(type1, type2);\n        assertSame(type1, type2);\n    }\n\n    <T> Type getType(Type type) {\n        return new TypeReference<Response<T>>(type) {}.getType();\n    }\n\n    public static class Model<T> {\n        public T value;\n    }\n\n    public static class Response<T> {\n        public T data;\n    }\n\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/typeRef/TypeReferenceTest12.java",
    "content": "package com.alibaba.json.bvt.typeRef;\n\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\n\nimport java.lang.reflect.ParameterizedType;\nimport java.lang.reflect.Type;\n\n/**\n * Created by wuwen on 2016/12/7.\n */\npublic class TypeReferenceTest12 extends TestCase {\n\n    public void test_same() throws Exception {\n        ParameterizedType type1 = getType(Integer.class);\n        ParameterizedType type2 = getType();\n\n        assertEquals(type1.getRawType(), type2.getRawType());\n        assertSame(type1.getRawType(), type2.getRawType());\n    }\n\n    <T> ParameterizedType getType(Type type) {\n        return (ParameterizedType)new TypeReference<Model<T>>(type) {}.getType();\n    }\n\n    ParameterizedType getType() {\n        return (ParameterizedType)new TypeReference<Model<Integer>>() {}.getType();\n    }\n\n    public static class Model<T> {\n        public T value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/typeRef/TypeReferenceTest13.java",
    "content": "package com.alibaba.json.bvt.typeRef;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 09/02/2017.\n */\npublic class TypeReferenceTest13 extends TestCase {\n    public void test_typeRef() throws Exception {\n        String json = \"{\\\"result\\\":{}}\";\n        for (int i = 0; i < 100; ++i) {\n            {\n                SearchResult<ResultItem, CountFacet> searchResult = parseSearchResult(\n                        json, ResultItem.class, CountFacet.class);\n            }\n            {\n                SearchResult<ResultItem1, CountFacet1> searchResult = parseSearchResult(\n                        json, ResultItem1.class, CountFacet1.class);\n            }\n        }\n    }\n\n    public static <I, F> SearchResult<I, F> parseSearchResult(String resultStr, Class<I> itemType,\n                                                              Class<F> facetType) {\n        SearchResult<I, F> searchResult = JSON.parseObject(resultStr, new TypeReference<SearchResult<I, F>>() {\n        });\n\n        return searchResult;\n    }\n\n    public static class ResultItem {\n\n    }\n\n    public static class CountFacet {\n\n    }\n\n    public static class ResultItem1 {\n\n    }\n\n    public static class CountFacet1 {\n\n    }\n\n    public static class SearchResult<I, F> extends BaseResult {\n\n        /**\n         * 大的结果对象，包含结果数据、耗时、数量统计等信息\n         */\n        @JSONField(name = \"result\")\n        private ResultDO<I, F> result;\n\n        /**\n         * 目前没有用到\n         */\n        @JSONField(name = \"tracer\")\n        private String         tracer;\n\n        public String getTracer() {\n            return tracer;\n        }\n\n        public void setTracer(String tracer) {\n            this.tracer = tracer;\n        }\n\n        public ResultDO<I, F> getResult() {\n            return result;\n        }\n\n        public void setResult(ResultDO<I, F> result) {\n            this.result = result;\n        }\n    }\n\n    public static class BaseResult {\n\n    }\n\n    public static class ResultDO<I, F> {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/typeRef/TypeReferenceTest14.java",
    "content": "package com.alibaba.json.bvt.typeRef;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.TypeReference;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport java.util.List;\nimport junit.framework.TestCase;\n\nimport java.io.Serializable;\n\n/**\n * Created by wenshao on 09/02/2017.\n */\npublic class TypeReferenceTest14 extends TestCase {\n    public void test_0() throws Exception {\n        String str = \"{\\\"result\\\":{\\\"item\\\":[{\\\"key\\\":\\\"123\\\"}]}}\";\n\n        ParserConfig config = new ParserConfig();\n        JSONObject.parseObject(str, OpenSearchResponse.class, config);\n        JSONObject.parseObject(str\n                , new TypeReference<OpenSearchResponse<JSONObject>>() {}.getType()\n                , config, JSON.DEFAULT_PARSER_FEATURE);\n\n        int size = config.getDeserializers().size();\n        for (int i = 0; i < 100 * 1; ++i) {\n            JSONObject.parseObject(str\n                    , new TypeReference<OpenSearchResponse<JSONObject>>() {}.getType()\n                    , config, JSON.DEFAULT_PARSER_FEATURE);\n            assertEquals(size, config.getDeserializers().size());\n        }\n    }\n\n    public static class OpenSearchResponse<T> {\n\n        private OpenSearchResult<T> result;\n\n        public OpenSearchResult<T> getResult() {\n            return result;\n        }\n\n        public void setResult(OpenSearchResult<T> result) {\n            this.result = result;\n        }\n\n\n    }\n\n    public static class OpenSearchResult<T> {\n        private List<T> item;\n\n        public List<T> getItem() {\n            return item;\n        }\n\n        public void setItem(List<T> item) {\n            this.item = item;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/typeRef/TypeReferenceTest2.java",
    "content": "package com.alibaba.json.bvt.typeRef;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class TypeReferenceTest2 extends TestCase {\n\n    public void test_0() throws Exception {\n        String text;\n\n        {\n            List<Bean> list = new ArrayList<Bean>();\n            list.add(new Bean(123, \"马加爵\"));\n            list.add(new Bean(234, \"药家鑫\"));\n            list.add(new Bean(456, \"刘大伟\"));\n\n            text = JSON.toJSONString(list);\n        }\n\n        System.out.println(text);\n\n        {\n            List<Bean> list = JSON.parseObject(text, new TypeReference<List<Bean>>() {}); // 注意这里\n            Assert.assertEquals(3, list.size());\n            Assert.assertEquals(123, ((Bean) list.get(0)).getId());\n            Assert.assertEquals(234, ((Bean) list.get(1)).getId());\n            Assert.assertEquals(456, ((Bean) list.get(2)).getId());\n\n            Assert.assertEquals(\"马加爵\", ((Bean) list.get(0)).getName());\n            Assert.assertEquals(\"药家鑫\", ((Bean) list.get(1)).getName());\n            Assert.assertEquals(\"刘大伟\", ((Bean) list.get(2)).getName());\n        }\n        \n        {\n            JSONArray list = JSON.parseObject(text, new TypeReference<JSONArray>() {}); // 注意这里\n            Assert.assertEquals(3, list.size());\n            Assert.assertEquals(123, ((JSONObject) list.get(0)).get(\"id\"));\n            Assert.assertEquals(234, ((JSONObject) list.get(1)).get(\"id\"));\n            Assert.assertEquals(456, ((JSONObject) list.get(2)).get(\"id\"));\n            \n            Assert.assertEquals(\"马加爵\", ((JSONObject) list.get(0)).get(\"name\"));\n            Assert.assertEquals(\"药家鑫\", ((JSONObject) list.get(1)).get(\"name\"));\n            Assert.assertEquals(\"刘大伟\", ((JSONObject) list.get(2)).get(\"name\"));\n        }\n    }\n\n    public static class Bean {\n\n        private int    id;\n        private String name;\n\n        public Bean(){\n\n        }\n\n        public Bean(int id, String name){\n            this.id = id;\n            this.name = name;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/typeRef/TypeReferenceTest3.java",
    "content": "package com.alibaba.json.bvt.typeRef;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class TypeReferenceTest3 extends TestCase {\n\n    @SuppressWarnings({ \"rawtypes\", \"unchecked\" })\n    public void test_0() throws Exception {\n        String text;\n\n        {\n            List list = new ArrayList();\n            List mapList = new ArrayList();\n            \n            Map<String, Bean> map = new HashMap<String, Bean>();\n            map.put(\"a\", new Bean(123, \"马加爵\"));\n            map.put(\"b\", new Bean(234, \"药家鑫\"));\n            map.put(\"c\", new Bean(456, \"刘＋伟\"));\n            \n            mapList.add(map);\n            \n            list.add(mapList);\n\n            text = JSON.toJSONString(list);\n        }\n\n        System.out.println(text);\n\n        // text = [[{\"b\":{\"name\":\"药家鑫\",\"id\":234},\"c\":{\"name\":\"刘＋伟\",\"id\":456},\"a\":{\"name\":\"马加爵\",\"id\":123}}]]\n        List<List<Map<String, Bean>>> list = JSON.parseObject(text, new TypeReference< List<List<Map<String, Bean>>> >() {}); // 注意这里\n        Map<String, Bean> map = list.get(0).get(0);\n        \n        Assert.assertEquals(3, map.size());\n        \n        Assert.assertEquals(123, ((Bean) map.get(\"a\")).getId());\n        Assert.assertEquals(234, ((Bean) map.get(\"b\")).getId());\n        Assert.assertEquals(456, ((Bean) map.get(\"c\")).getId());\n\n        Assert.assertEquals(\"马加爵\", ((Bean) map.get(\"a\")).getName());\n        Assert.assertEquals(\"药家鑫\", ((Bean) map.get(\"b\")).getName());\n        Assert.assertEquals(\"刘＋伟\", ((Bean) map.get(\"c\")).getName());\n        \n    }\n    \n    public static class Bean {\n        private int    id;\n        private String name;\n        public Bean(){\n        }\n        public Bean(int id, String name){\n            this.id = id;\n            this.name = name;\n        }\n        public int getId() {return id;}\n        public void setId(int id) { this.id = id;}\n        public String getName() {return name;}\n        public void setName(String name) {this.name = name;}\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/typeRef/TypeReferenceTest4.java",
    "content": "package com.alibaba.json.bvt.typeRef;\n\nimport java.util.List;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class TypeReferenceTest4 extends TestCase {\n\n    public void test_typeRef() throws Exception {\n        TypeReference<VO<List<A>>> typeRef = new TypeReference<VO<List<A>>>() {\n        };\n\n        VO<List<A>> vo = JSON.parseObject(\"{\\\"list\\\":[{\\\"id\\\":123}]}\", typeRef);\n\n        Assert.assertEquals(123, vo.getList().get(0).getId());\n    }\n\n    public static class VO<T> {\n\n        private T list;\n\n        public T getList() {\n            return list;\n        }\n\n        public void setList(T list) {\n            this.list = list;\n        }\n    }\n\n    public static class A {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/typeRef/TypeReferenceTest5.java",
    "content": "package com.alibaba.json.bvt.typeRef;\n\nimport java.util.LinkedHashMap;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class TypeReferenceTest5 extends TestCase {\n\n    public void test_typeRef() throws Exception {\n        TypeReference<A<B>> typeRef = new TypeReference<A<B>>() {\n        };\n\n        A<B> a = JSON.parseObject(\"{\\\"body\\\":{\\\"id\\\":123}}\", typeRef);\n        \n        B b = a.getBody();\n        Assert.assertEquals(123, b.get(\"id\"));\n    }\n\n    public static class A<T> {\n\n        private T body;\n\n        public T getBody() {\n            return body;\n        }\n\n        public void setBody(T body) {\n            this.body = body;\n        }\n\n    }\n\n    public static class B extends LinkedHashMap<String, Object> {\n\n        private static final long serialVersionUID = 1L;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/typeRef/TypeReferenceTest6.java",
    "content": "package com.alibaba.json.bvt.typeRef;\n\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class TypeReferenceTest6 extends TestCase {\n\n\tpublic void test_typeRef() throws Exception {\n\t\tTypeReference<Map<String, Entity>> typeRef = new TypeReference<Map<String, Entity>>() {\n\t\t};\n\n\t\tMap<String, Entity> map = JSON.parseObject(\n\t\t\t\t\"{\\\"value\\\":{\\\"id\\\":\\\"abc\\\",\\\"list\\\":[{\\\"id\\\":123}]}}\", typeRef);\n\n\t\tEntity entity = map.get(\"value\");\n\t\tAssert.assertNotNull(entity);\n\t\tAssert.assertEquals(\"abc\", entity.getId());\n\t\tAssert.assertEquals(1, entity.getList().size());\n\t\tAssert.assertEquals(123, entity.getList().get(0).getId());\n\t}\n\n\tpublic static class Entity {\n\t\tprivate String id;\n\n\t\tprivate List<A> list = new ArrayList<A>();\n\n\t\tpublic String getId() {\n\t\t\treturn id;\n\t\t}\n\n\t\tpublic void setId(String id) {\n\t\t\tthis.id = id;\n\t\t}\n\n\t\tpublic List<A> getList() {\n\t\t\treturn list;\n\t\t}\n\n\t\tpublic void setList(List<A> list) {\n\t\t\tthis.list = list;\n\t\t}\n\n\t}\n\n\tpublic static class A {\n\t\tprivate int id;\n\n\t\tpublic int getId() {\n\t\t\treturn id;\n\t\t}\n\n\t\tpublic void setId(int id) {\n\t\t\tthis.id = id;\n\t\t}\n\n\t}\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/typeRef/TypeReferenceTest7.java",
    "content": "package com.alibaba.json.bvt.typeRef;\n\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class TypeReferenceTest7 extends TestCase {\n\n\tpublic void test_typeRef() throws Exception {\n\t\tTypeReference<Map<String, Entity>> typeRef = new TypeReference<Map<String, Entity>>() {\n\t\t};\n\n\t\tMap<String, Entity> map = JSON\n\t\t\t\t.parseObject(\n\t\t\t\t\t\t\"{\\\"value\\\":{\\\"id\\\":\\\"abc\\\",\\\"a\\\":{\\\"id\\\":123}}}\",\n\t\t\t\t\t\ttypeRef);\n\n\t\tEntity entity = map.get(\"value\");\n\t\tAssert.assertNotNull(entity);\n\t\tAssert.assertEquals(\"abc\", entity.getId());\n\t\tAssert.assertEquals(123, entity.getA().getId());\n\t}\n\n\tpublic static class Entity {\n\t\tprivate String id;\n\n\t\tprivate A a;\n\n\t\tpublic String getId() {\n\t\t\treturn id;\n\t\t}\n\n\t\tpublic void setId(String id) {\n\t\t\tthis.id = id;\n\t\t}\n\n\t\tpublic A getA() {\n\t\t\treturn a;\n\t\t}\n\n\t\tpublic void setA(A a) {\n\t\t\tthis.a = a;\n\t\t}\n\n\t}\n\n\tpublic static class A {\n\t\tprivate int id;\n\n\t\tpublic int getId() {\n\t\t\treturn id;\n\t\t}\n\n\t\tpublic void setId(int id) {\n\t\t\tthis.id = id;\n\t\t}\n\n\t}\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/typeRef/TypeReferenceTest8.java",
    "content": "package com.alibaba.json.bvt.typeRef;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class TypeReferenceTest8 extends TestCase {\n\n\tpublic void test_typeRef() throws Exception {\n\t\tTypeReference<Map<String, Entity>> typeRef = new TypeReference<Map<String, Entity>>() {\n\t\t};\n\n\t\tMap<String, Entity> map = JSON.parseObject(\n\t\t\t\t\"{\\\"value\\\":{\\\"id\\\":\\\"abc\\\",\\\"list\\\":[{\\\"id\\\":123}]}}\", typeRef);\n\n\t\tEntity entity = map.get(\"value\");\n\t\tAssert.assertNotNull(entity);\n\t\tAssert.assertEquals(\"abc\", entity.getId());\n\t\tAssert.assertEquals(1, entity.getList().length);\n\t\tAssert.assertEquals(123, entity.getList()[0].getId());\n\t}\n\n\tpublic static class Entity {\n\t\tprivate String id;\n\n\t\tprivate A[] list;\n\n\t\tpublic String getId() {\n\t\t\treturn id;\n\t\t}\n\n\t\tpublic void setId(String id) {\n\t\t\tthis.id = id;\n\t\t}\n\n\t\tpublic A[] getList() {\n\t\t\treturn list;\n\t\t}\n\n\t\tpublic void setList(A[] list) {\n\t\t\tthis.list = list;\n\t\t}\n\n\t}\n\n\tpublic static class A {\n\t\tprivate int id;\n\n\t\tpublic int getId() {\n\t\t\treturn id;\n\t\t}\n\n\t\tpublic void setId(int id) {\n\t\t\tthis.id = id;\n\t\t}\n\n\t}\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/typeRef/TypeReferenceTest9.java",
    "content": "package com.alibaba.json.bvt.typeRef;\n\nimport java.util.Map;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\n\npublic class TypeReferenceTest9 extends TestCase {\n\n\tpublic void test_typeRef() throws Exception {\n\t\tTypeReference<Map<String, Entity>> typeRef = new TypeReference<Map<String, Entity>>() {\n\t\t};\n\n\t\tMap<String, Entity> map = JSON\n\t\t\t\t.parseObject(\n\t\t\t\t\t\t\"{\\\"value\\\":{\\\"id\\\":\\\"abc\\\",\\\"list\\\":[{\\\"id\\\":123,\\\"type\\\":\\\"A\\\"}]}}\",\n\t\t\t\t\t\ttypeRef);\n\n\t\tEntity entity = map.get(\"value\");\n\t\tAssert.assertNotNull(entity);\n\t\tAssert.assertEquals(\"abc\", entity.getId());\n\t\tAssert.assertEquals(1, entity.getList().length);\n\t\tAssert.assertEquals(123, entity.getList()[0].getId());\n\t}\n\n\tpublic static class Entity {\n\t\tprivate String id;\n\n\t\tprivate A[] list;\n\n\t\tpublic String getId() {\n\t\t\treturn id;\n\t\t}\n\n\t\tpublic void setId(String id) {\n\t\t\tthis.id = id;\n\t\t}\n\n\t\tpublic A[] getList() {\n\t\t\treturn list;\n\t\t}\n\n\t\tpublic void setList(A[] list) {\n\t\t\tthis.list = list;\n\t\t}\n\n\t}\n\n\tpublic static class A {\n\t\tprivate int id;\n\t\tprivate Type type;\n\n\t\tpublic int getId() {\n\t\t\treturn id;\n\t\t}\n\n\t\tpublic void setId(int id) {\n\t\t\tthis.id = id;\n\t\t}\n\n\t\tpublic Type getType() {\n\t\t\treturn type;\n\t\t}\n\n\t\tpublic void setType(Type type) {\n\t\t\tthis.type = type;\n\t\t}\n\t}\n\n\tpublic static enum Type {\n\t\tA\n\t}\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/util/AntiCollisionHashMapTest.java",
    "content": "package com.alibaba.json.bvt.util;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.util.AntiCollisionHashMap;\nimport junit.framework.TestCase;\n\nimport java.io.ByteArrayInputStream;\nimport java.io.ByteArrayOutputStream;\nimport java.io.ObjectInputStream;\nimport java.io.ObjectOutputStream;\nimport java.util.Iterator;\nimport java.util.Map;\n\npublic class AntiCollisionHashMapTest extends TestCase {\n    public void test_0() throws Exception {\n        AntiCollisionHashMap m = new AntiCollisionHashMap(3, 0.75f);\n\n        for (int i = 0; i < 100; ++i) {\n            m.put(i, i);\n        }\n\n        AntiCollisionHashMap m2 = new AntiCollisionHashMap(m);\n        assertEquals(m.size(), m2.size());\n\n        AntiCollisionHashMap m3 = new AntiCollisionHashMap(3, 0.75f);\n        m3.putAll(m);\n        assertEquals(m.size(), m2.size());\n\n        AntiCollisionHashMap m4 = (AntiCollisionHashMap) m.clone();\n        m4.hashCode();\n        m4.size();\n        m4.isEmpty();\n        m4.values().iterator();\n        m4.keySet().iterator();\n        m4.values().contains(1);\n        m4.values().contains(null);\n        m4.values().iterator().next();\n        m4.values().remove(1);\n        m4.values().size();\n        m4.values().clear();\n\n        AntiCollisionHashMap m5 = (AntiCollisionHashMap) m.clone();\n        m5.keySet().contains(1);\n        m5.put(1, 1001);\n        m5.get(null);\n        Map.Entry entry = (Map.Entry) m5.entrySet().iterator().next();\n        entry.setValue(1002);\n        entry.toString();\n        m5.keySet().size();\n        m5.keySet().iterator().next();\n        m5.keySet().remove(1);\n        m5.keySet().clear();\n\n        AntiCollisionHashMap m6 = new AntiCollisionHashMap(3);\n        m6.putAll(m);\n        assertEquals(m.size(), m6.size());\n        m6.put(\"a\", \"a\");\n        m6.put(\"b\", \"b\");\n\n        for (int i = 0; i < 100; ++i) {\n            assertEquals(i, m.get(i));\n            assertTrue(m.containsKey(i));\n        }\n\n        for (int i = 0; i < 100; ++i) {\n            m3.remove(i);\n            m2.remove(i, i);\n        }\n        m2.put(null, null);\n        m2.put(1, 1);\n        assertTrue(m2.containsKey(null));\n        assertTrue(m2.containsKey(1));\n        assertTrue(m2.containsValue(null));\n        assertTrue(m2.containsValue(1));\n        Iterator iterator = m2.entrySet().iterator();\n        while (iterator.hasNext()) {\n            iterator.next();\n            iterator.remove();\n        }\n        m2.clear();\n\n        assertFalse(m.entrySet().contains(1));\n        assertTrue(m.entrySet().contains(m.entrySet().iterator().next()));\n        m.entrySet().size();\n        m.entrySet().remove(1);\n        m.entrySet().remove(m.entrySet().iterator().next());\n        m.entrySet().clear();\n\n        {\n            ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();\n            ObjectOutputStream objOut = new ObjectOutputStream(bytesOut);\n            objOut.writeObject(m);\n            objOut.flush();\n\n            byte[] bytes = bytesOut.toByteArray();\n\n            ByteArrayInputStream bytesIn = new ByteArrayInputStream(bytes);\n            ObjectInputStream objIn = new ObjectInputStream(bytesIn);\n\n            Object obj = objIn.readObject();\n\n            assertEquals(AntiCollisionHashMap.class, obj.getClass());\n            assertEquals(m, obj);\n        }\n        {\n            ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();\n            ObjectOutputStream objOut = new ObjectOutputStream(bytesOut);\n            objOut.writeObject(m6);\n            objOut.flush();\n\n            byte[] bytes = bytesOut.toByteArray();\n\n            ByteArrayInputStream bytesIn = new ByteArrayInputStream(bytes);\n            ObjectInputStream objIn = new ObjectInputStream(bytesIn);\n\n            Object obj = objIn.readObject();\n\n            assertEquals(AntiCollisionHashMap.class, obj.getClass());\n            assertEquals(m6, obj);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/util/AntiCollisionHashMapTest_writeClassName.java",
    "content": "package com.alibaba.json.bvt.util;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.util.AntiCollisionHashMap;\nimport junit.framework.TestCase;\n\nimport java.util.Map;\n\npublic class AntiCollisionHashMapTest_writeClassName extends TestCase {\n    public void test_for_bug() throws Exception {\n        ParserConfig config = new ParserConfig();\n        config.addAccept(\"com.alibaba.fastjson.util.AntiCollisionHashMap\");\n        Model m = JSON.parseObject(\"{\\\"value\\\":{\\\"@type\\\":\\\"com.alibaba.fastjson.util.AntiCollisionHashMap\\\"}}\", Model.class, config);\n        assertTrue(m.value.getInnerMap() instanceof AntiCollisionHashMap);\n    }\n\n    public static class Model {\n        public JSONObject value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/util/Base64Test.java",
    "content": "package com.alibaba.json.bvt.util;\n\nimport com.alibaba.fastjson.util.Base64;\nimport junit.framework.TestCase;\n\npublic class Base64Test extends TestCase {\n    public void test_base64() throws Exception {\n        String str = \"阿里巴巴網絡有限公司主要通過旗下三個交易市場協助世界各地數以百萬計的買家和供應商從事網上生意，包括：集中服務全球進出口商的國際交易市場（www.alibaba.com）；集中國內貿易的中國交易市場（www.1688.com）；以及在國際交易市場上的全球批發交易平台（www.aliexpress.com），為規模較小、需要小批量貨物快速付運的買家提供服務。更多>>\";\n\n        byte[] bytes = str.getBytes(\"UTF8\");\n        String base64Str = com.alibaba.json.test.Base64.encodeToString(bytes, false);\n\n        {\n            byte[] bytes2 = Base64.decodeFast(base64Str);\n            assertEquals(str, new String(bytes2, \"UTF8\"));\n        }\n\n        {\n            byte[] bytes2 = Base64.decodeFast(base64Str, 0, base64Str.length());\n            assertEquals(str, new String(bytes2, \"UTF8\"));\n        }\n\n        {\n            byte[] bytes2 = Base64.decodeFast(base64Str.toCharArray(), 0, base64Str.length());\n            assertEquals(str, new String(bytes2, \"UTF8\"));\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/util/FieldInfoTest.java",
    "content": "package com.alibaba.json.bvt.util;\n\nimport java.lang.reflect.Field;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Type;\nimport java.util.List;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.util.FieldInfo;\nimport com.alibaba.fastjson.util.ParameterizedTypeImpl;\n\nimport junit.framework.TestCase;\n\npublic class FieldInfoTest extends TestCase {\n    public void test_null() throws Exception {\n        FieldInfo fieldInfo = new FieldInfo(\"getValue\", Entity.class.getMethod(\"getValue\"), null, null, null, 0, 0, 0, null, null, null);\n        Assert.assertEquals(null, fieldInfo.getAnnotation());\n\n        Field field = GenericFieldEntity.class.getField(\"value\");\n        Type type = new ParameterizedTypeImpl(new Type[] { ValueObject.class }, null, GenericFieldEntity.class);\n        FieldInfo fieldInfoOfField = new FieldInfo(\"value\", null, field, GenericFieldEntity.class, type, 0, 0, 0, null, null, null);\n        Assert.assertEquals(fieldInfoOfField.fieldType, ValueObject.class);\n        Assert.assertEquals(fieldInfoOfField.fieldClass, ValueObject.class);\n\n        field = GenericListFieldEntity.class.getField(\"value\");\n        type = new ParameterizedTypeImpl(new Type[] { ValueObject.class }, null, GenericListFieldEntity.class);\n        FieldInfo fieldInfoOfListField = new FieldInfo(\"value\", null, field, GenericListFieldEntity.class, type, 0, 0, 0, null, null, null);\n        ParameterizedTypeImpl actualFieldType = (ParameterizedTypeImpl) fieldInfoOfListField.fieldType;\n        Assert.assertEquals(actualFieldType.getActualTypeArguments()[0], ValueObject.class);\n        Assert.assertEquals(actualFieldType.getRawType(), List.class);\n        Assert.assertEquals(fieldInfoOfListField.fieldClass, List.class);\n        Assert.assertEquals(null, ((ParameterizedTypeImpl) type).getOwnerType());\n\n        Method method = GenericSetterEntity.class.getMethod(\"setValue\", Object.class);\n        type = new ParameterizedTypeImpl(new Type[] { ValueObject.class }, null, GenericSetterEntity.class);\n        FieldInfo fieldInfoOfSetter = new FieldInfo(\"value\", method, null, GenericSetterEntity.class, type, 0, 0, 0, null, null, null);\n        Assert.assertEquals(fieldInfoOfSetter.fieldType, ValueObject.class);\n        Assert.assertEquals(fieldInfoOfSetter.fieldClass, ValueObject.class);\n        \n        fieldInfoOfSetter.toString();\n\n        method = GenericListSetterEntity.class.getMethod(\"setValue\", List.class);\n        type = new ParameterizedTypeImpl(new Type[] { ValueObject.class }, null, GenericListSetterEntity.class);\n        FieldInfo fieldInfoOfListSetter = new FieldInfo(\"value\", method, null, GenericListSetterEntity.class, type, 0, 0, 0, null, null, null);\n        Assert.assertEquals(actualFieldType.getActualTypeArguments()[0], ValueObject.class);\n        Assert.assertEquals(actualFieldType.getRawType(), List.class);\n        Assert.assertEquals(fieldInfoOfListSetter.fieldClass, List.class);\n    }\n\n    public static class Entity {\n        private int value;\n\n        public int getValue() {\n            return value;\n        }\n\n        public void setValue(int value) {\n            this.value = value;\n        }\n    }\n\n    public static class GenericSetterEntity<T> {\n        private T value;\n\n        public T getValue() {\n            return value;\n        }\n\n        public void setValue(T value) {\n            this.value = value;\n        }\n    }\n\n    public static class GenericListSetterEntity<T> {\n        private List<T> value;\n\n        public List<T> getValue() {\n            return value;\n        }\n\n        public void setValue(List<T> value) {\n            this.value = value;\n        }\n    }\n\n    public static class GenericFieldEntity<T> {\n        public T value;\n    }\n\n    public static class GenericListFieldEntity<T> {\n        public List<T> value;\n    }\n\n    public static class ValueObject {\n        private String name;\n        private int    id;\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/util/GenericFieldInfoTest.java",
    "content": "package com.alibaba.json.bvt.util;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 30/05/2017.\n */\npublic class GenericFieldInfoTest extends TestCase {\n    public void test_generic() throws Exception {\n        A a = JSON.parseObject(\"{\\\"data\\\":3}\", A4.class);\n        assertTrue(a.data instanceof Long);\n    }\n\n    public void test_generic_1() throws Exception {\n        A a = JSON.parseObject(\"{\\\"data\\\":3}\", new TypeReference<A3<Long>>(){});\n        assertEquals(a.data.getClass(), Long.class);\n    }\n\n    public static class A <T> {\n        public T data;\n    }\n\n    public static class A1 <T> extends A<T> {\n\n    }\n\n    public static class A2 <T> extends A1<T> {\n\n    }\n\n    public static class A3 <T> extends A2<T> {\n\n    }\n\n    public static class A4 <T> extends A3<Long> {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/util/GenericFieldInfoTest2.java",
    "content": "package com.alibaba.json.bvt.util;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.TypeReference;\nimport junit.framework.TestCase;\n\nimport java.util.List;\n\n/**\n * Created by wenshao on 30/05/2017.\n */\npublic class GenericFieldInfoTest2 extends TestCase {\n    public void test_generic() throws Exception {\n        A4 a = JSON.parseObject(\"{\\\"data\\\":[]3}\", A4.class);\n        assertTrue(a.data instanceof List);\n    }\n\n\n    public static class A <T> {\n        public T data;\n    }\n\n    public static class A1 <T> extends A<T> {\n\n    }\n\n    public static class A2 <T> extends A1<T> {\n\n    }\n\n    public static class A3 <T> extends A2<List<T>> {\n\n    }\n\n    public static class A4 <M> extends A3<Long> {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/util/IOUtilsTest.java",
    "content": "package com.alibaba.json.bvt.util;\n\nimport com.alibaba.fastjson.util.IOUtils;\nimport junit.framework.TestCase;\n\nimport java.io.StringReader;\n\npublic class IOUtilsTest extends TestCase {\n    public void test_readAll() throws Exception {\n        StringBuffer buf = new StringBuffer();\n        for (int i = 0; i < 1024 * 64; ++i) {\n            buf.append(\"a\");\n        }\n\n        StringReader reader = new StringReader(buf.toString());\n        IOUtils.readAll(reader);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/util/JSONASMUtilTest.java",
    "content": "package com.alibaba.json.bvt.util;\n\nimport java.util.HashMap;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.util.ASMUtils;\n\npublic class JSONASMUtilTest extends TestCase {\n\n    public void test_0() throws Exception {\n        Assert.assertEquals(\"()I\", ASMUtils.desc(HashMap.class.getMethod(\"size\")));\n        Assert.assertEquals(\"(Ljava/lang/Object;)Ljava/lang/Object;\", ASMUtils.desc(HashMap.class.getMethod(\"get\", Object.class)));\n        Assert.assertEquals(\"(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;\", ASMUtils.desc(HashMap.class.getMethod(\"put\", Object.class, Object.class)));\n    }\n\n    public void test_1() throws Exception {\n        Assert.assertEquals(\"I\", ASMUtils.type(int.class));\n        Assert.assertEquals(\"java/lang/Integer\", ASMUtils.type(Integer.class));\n    }\n\n    public void test_2() throws Exception {\n        Assert.assertEquals(\"[I\", ASMUtils.type(int[].class));\n        Assert.assertEquals(\"[Ljava/lang/Integer;\", ASMUtils.type(Integer[].class));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/util/JavaBeanInfoTest.java",
    "content": "package com.alibaba.json.bvt.util;\n\nimport com.alibaba.fastjson.util.JavaBeanInfo;\nimport junit.framework.TestCase;\n\npublic class JavaBeanInfoTest extends TestCase {\n    public void test_0() throws Exception {\n        JavaBeanInfo.getBuilderClass(null);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/util/RyuDoubleTest.java",
    "content": "package com.alibaba.json.bvt.util;\n\nimport com.alibaba.fastjson.util.RyuDouble;\nimport junit.framework.TestCase;\n\nimport java.util.Random;\n\npublic class RyuDoubleTest extends TestCase {\n    public void test_for_ryu() throws Exception {\n        Random random = new Random();\n\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            double value = random.nextDouble();\n\n            String str1 = Double.toString(value);\n            String str2 = RyuDouble.toString(value);\n\n            if (!str1.equals(str2)) {\n                System.out.println(str1 + \" -> \" + str2);\n                assertTrue(Double.parseDouble(str1) == Double.parseDouble(str2));\n            }\n        }\n    }\n\n    public void test_0() throws Exception {\n        double[] values = new double[] {\n                Double.NaN,\n                Double.NEGATIVE_INFINITY,\n                Double.POSITIVE_INFINITY,\n                Double.MIN_VALUE,\n                Double.MAX_VALUE,\n\n                0,\n                0.0d,\n                -0.0d,\n                Double.longBitsToDouble(0x8000000000000000L),\n                Double.NaN,\n\n                Long.MAX_VALUE,\n                Long.MIN_VALUE,\n                Integer.MAX_VALUE,\n                Integer.MIN_VALUE,\n                Double.longBitsToDouble(0x0010000000000000L),\n\n                9999999.999999998d,\n                0.0009999999999999998d,\n                1.0E7d,\n                0.001d,\n                Double.longBitsToDouble(0x7fefffffffffffffL),\n\n                Double.longBitsToDouble(1),\n                -2.109808898695963E16,\n                4.940656E-318d,\n                1.18575755E-316d,\n                2.989102097996E-312d,\n                9.0608011534336E15d,\n                4.708356024711512E18,\n                9.409340012568248E18,\n                1.8531501765868567E21,\n                -3.347727380279489E33,\n                1.9430376160308388E16,\n                -6.9741824662760956E19,\n                4.3816050601147837E18,\n\n                1.797693134862315E308,\n                1.79769313486231E308,\n                1.7976931348623E308,\n                1.797693134862E308,\n                1.79769313486E308,\n                1.7976931348E308,\n                1.797693134E308,\n                1.79769313E308,\n                1.7976931E308,\n                1.797693E308,\n                1.79769E308,\n                1.7976E308,\n                1.797E308,\n                1.79E308,\n                1.7E308,\n                1E308,\n\n                1.797693134862315,\n                1.79769313486231,\n                1.7976931348623,\n                1.797693134862,\n                1.79769313486,\n                1.7976931348,\n                1.797693134,\n                1.79769313,\n                1.7976931,\n                1.797693,\n                1.79769,\n                1.7976,\n                1.797,\n                1.79,\n                1.7,\n                1,\n\n                -1.797693134862315,\n                -1.79769313486231,\n                -1.7976931348623,\n                -1.797693134862,\n                -1.79769313486,\n                -1.7976931348,\n                -1.797693134,\n                -1.79769313,\n                -1.7976931,\n                -1.797693,\n                -1.79769,\n                -1.7976,\n                -1.797,\n                -1.79,\n                -1.7,\n                -1,\n\n                0.1,\n                0.01,\n                0.001,\n                0.0001,\n                0.00001,\n                0.000001,\n                0.0000001,\n                0.00000001,\n                0.000000001,\n                0.0000000001,\n                0.00000000001,\n                0.000000000001,\n                0.0000000000001,\n                0.00000000000001,\n\n                -0.1,\n                -0.01,\n                -0.001,\n                -0.0001,\n                -0.00001,\n                -0.000001,\n                -0.0000001,\n                -0.00000001,\n                -0.000000001,\n                -0.0000000001,\n                -0.00000000001,\n                -0.000000000001,\n                -0.0000000000001,\n                -0.00000000000001,\n\n                1.1E1,\n                1.1E2,\n                1.1E3,\n                1.1E4,\n                1.1E5,\n                1.1E6,\n                1.1E7,\n                1.1E8,\n                1.1E9,\n                1.1E10,\n\n                -1.1E1,\n                -1.1E2,\n                -1.1E3,\n                -1.1E4,\n                -1.1E5,\n                -1.1E6,\n                -1.1E7,\n                -1.1E8,\n                -1.1E9,\n                -1.1E10,\n\n                49E10,\n                49E100,\n                49E200,\n                49E300,\n                49E301,\n                49E302,\n                49E303,\n                49E304,\n\n                49E-10,\n                49E-100,\n                49E-200,\n                49E-300,\n                49E-301,\n                49E-302,\n                49E-303,\n                49E-304,\n\n        };\n\n        for (int i = 0; i < values.length; i++) {\n            double value = values[i];\n            String str1 = Double.toString(value);\n            String str2 = RyuDouble.toString(value);\n\n            if (!str1.equals(str2)) {\n                boolean cmp = (Double.parseDouble(str1) == Double.parseDouble(str2));\n                System.out.println(str1 + \" -> \" + str2 + \" : \" + cmp);\n                assertTrue(cmp);\n            }\n        }\n    }\n\n    public void test_1() throws Exception {\n        double[] values = new double[]{\n                0.1,\n                0.01,\n                0.001,\n                0.0001,\n                0.00001,\n                0.000001,\n                0.0000001,\n                0.00000001,\n                0.000000001,\n                0.0000000001,\n                0.00000000001,\n                0.000000000001,\n                0.0000000000001,\n                0.00000000000001,\n                0.000000000000001,\n                0.0000000000000001,\n                0.00000000000000001,\n                0.000000000000000001,\n                0.0000000000000000001,\n                0.00000000000000000001,\n                0.000000000000000000001,\n                0.0000000000000000000001,\n                0.00000000000000000000001,\n                0.000000000000000000000001,\n                0.0000000000000000000000001,\n                0.00000000000000000000000001,\n                0.000000000000000000000000001,\n                0.0000000000000000000000000001,\n                0.00000000000000000000000000001,\n                0.000000000000000000000000000001,\n                0.0000000000000000000000000000001,\n                0.00000000000000000000000000000001,\n                0.000000000000000000000000000000001,\n                0.0000000000000000000000000000000001,\n                0.00000000000000000000000000000000001,\n                0.000000000000000000000000000000000001,\n                0.0000000000000000000000000000000000001,\n                0.00000000000000000000000000000000000001,\n                0.000000000000000000000000000000000000001,\n                0.0000000000000000000000000000000000000001,\n                0.00000000000000000000000000000000000000001,\n                0.000000000000000000000000000000000000000001,\n                0.0000000000000000000000000000000000000000001,\n                0.00000000000000000000000000000000000000000001,\n                0.000000000000000000000000000000000000000000001,\n                0.0000000000000000000000000000000000000000000001,\n                0.00000000000000000000000000000000000000000000001,\n                0.000000000000000000000000000000000000000000000001,\n                0.0000000000000000000000000000000000000000000000001,\n                0.00000000000000000000000000000000000000000000000001,\n                0.000000000000000000000000000000000000000000000000001,\n                0.0000000000000000000000000000000000000000000000000001,\n                0.00000000000000000000000000000000000000000000000000001,\n                0.000000000000000000000000000000000000000000000000000001,\n                0.0000000000000000000000000000000000000000000000000000001,\n                0.00000000000000000000000000000000000000000000000000000001,\n                0.000000000000000000000000000000000000000000000000000000001,\n                0.000000000000000000000000000000000000000000000000000000001,\n\n                -0.1,\n                -0.01,\n                -0.001,\n                -0.0001,\n                -0.00001,\n                -0.000001,\n                -0.0000001,\n                -0.00000001,\n                -0.000000001,\n                -0.0000000001,\n                -0.00000000001,\n                -0.000000000001,\n                -0.0000000000001,\n                -0.00000000000001,\n                -0.000000000000001,\n                -0.0000000000000001,\n                -0.00000000000000001,\n                -0.000000000000000001,\n                -0.0000000000000000001,\n                -0.00000000000000000001,\n                -0.000000000000000000001,\n                -0.0000000000000000000001,\n                -0.00000000000000000000001,\n                -0.000000000000000000000001,\n                -0.0000000000000000000000001,\n                -0.00000000000000000000000001,\n                -0.000000000000000000000000001,\n                -0.0000000000000000000000000001,\n                -0.00000000000000000000000000001,\n                -0.000000000000000000000000000001,\n                -0.0000000000000000000000000000001,\n                -0.00000000000000000000000000000001,\n                -0.000000000000000000000000000000001,\n                -0.0000000000000000000000000000000001,\n                -0.00000000000000000000000000000000001,\n                -0.000000000000000000000000000000000001,\n                -0.0000000000000000000000000000000000001,\n                -0.00000000000000000000000000000000000001,\n                -0.000000000000000000000000000000000000001,\n                -0.0000000000000000000000000000000000000001,\n                -0.00000000000000000000000000000000000000001,\n                -0.000000000000000000000000000000000000000001,\n                -0.0000000000000000000000000000000000000000001,\n                -0.00000000000000000000000000000000000000000001,\n                -0.000000000000000000000000000000000000000000001,\n                -0.0000000000000000000000000000000000000000000001,\n                -0.00000000000000000000000000000000000000000000001,\n                -0.000000000000000000000000000000000000000000000001,\n                -0.0000000000000000000000000000000000000000000000001,\n                -0.00000000000000000000000000000000000000000000000001,\n                -0.000000000000000000000000000000000000000000000000001,\n                -0.0000000000000000000000000000000000000000000000000001,\n                -0.00000000000000000000000000000000000000000000000000001,\n                -0.000000000000000000000000000000000000000000000000000001,\n                -0.0000000000000000000000000000000000000000000000000000001,\n                -0.00000000000000000000000000000000000000000000000000000001,\n                -0.000000000000000000000000000000000000000000000000000000001,\n                -0.000000000000000000000000000000000000000000000000000000001,\n        };\n\n        for (int i = 0; i < values.length; i++) {\n            double value = values[i];\n            String str1 = Double.toString(value);\n            String str2 = RyuDouble.toString(value);\n\n            if (!str1.equals(str2)) {\n                boolean cmp = (Double.parseDouble(str1) == Double.parseDouble(str2));\n                System.out.println(str1 + \" -> \" + str2 + \" : \" + cmp);\n                assertTrue(cmp);\n            }\n        }\n    }\n\n    public void test_2() throws Exception {\n        double[] values = new double[]{\n                9.223372036854799E18,\n                9.223372036854798E18,\n                9.223372036854797E18,\n                9.223372036854796E18,\n                9.223372036854795E18,\n                9.223372036854794E18,\n                9.223372036854793E18,\n                9.223372036854792E18,\n                9.223372036854791E18,\n                9.223372036854790E18,\n\n                9.223372036854789E18,\n                9.223372036854788E18,\n                9.223372036854787E18,\n                9.223372036854786E18,\n                9.223372036854785E18,\n                9.223372036854784E18,\n                9.223372036854783E18,\n                9.223372036854782E18,\n                9.223372036854781E18,\n                9.223372036854780E18,\n\n                9.223372036854779E18,\n                9.223372036854778E18,\n                9.223372036854777E18,\n                9.223372036854776E18,\n                9.223372036854775E18,\n                9.223372036854774E18,\n                9.223372036854773E18,\n                9.223372036854772E18,\n                9.223372036854771E18,\n                9.223372036854770E18,\n\n                9.223372036854769E18,\n                9.223372036854768E18,\n                9.223372036854767E18,\n                9.223372036854766E18,\n                9.223372036854765E18,\n                9.223372036854764E18,\n                9.223372036854763E18,\n                9.223372036854762E18,\n                9.223372036854761E18,\n                9.223372036854760E18,\n\n                9.223372036854759E18,\n                9.223372036854758E18,\n                9.223372036854757E18,\n                9.223372036854756E18,\n                9.223372036854755E18,\n                9.223372036854754E18,\n                9.223372036854753E18,\n                9.223372036854752E18,\n                9.223372036854751E18,\n                9.223372036854750E18,\n\n                9.223372036854749E18,\n                9.223372036854748E18,\n                9.223372036854747E18,\n                9.223372036854746E18,\n                9.223372036854745E18,\n                9.223372036854744E18,\n                9.223372036854743E18,\n                9.223372036854742E18,\n                9.223372036854741E18,\n                9.223372036854740E18,\n\n                9.223372036854739E18,\n                9.223372036854738E18,\n                9.223372036854737E18,\n                9.223372036854736E18,\n                9.223372036854735E18,\n                9.223372036854734E18,\n                9.223372036854733E18,\n                9.223372036854732E18,\n                9.223372036854731E18,\n                9.223372036854730E18,\n\n                9.223372036854729E18,\n                9.223372036854728E18,\n                9.223372036854727E18,\n                9.223372036854726E18,\n                9.223372036854725E18,\n                9.223372036854724E18,\n                9.223372036854723E18,\n                9.223372036854722E18,\n                9.223372036854721E18,\n                9.223372036854720E18,\n\n                9.223372036854719E18,\n                9.223372036854718E18,\n                9.223372036854717E18,\n                9.223372036854716E18,\n                9.223372036854715E18,\n                9.223372036854714E18,\n                9.223372036854713E18,\n                9.223372036854712E18,\n                9.223372036854711E18,\n                9.223372036854710E18,\n\n                9.223372036854709E18,\n                9.223372036854708E18,\n                9.223372036854707E18,\n                9.223372036854706E18,\n                9.223372036854705E18,\n                9.223372036854704E18,\n                9.223372036854703E18,\n                9.223372036854702E18,\n                9.223372036854701E18,\n                9.223372036854700E18,\n        };\n\n        for (int i = 0; i < values.length; i++) {\n            double value = values[i];\n            String str1 = Double.toString(value);\n            String str2 = RyuDouble.toString(value);\n\n            if (!str1.equals(str2)) {\n                boolean cmp = (Double.parseDouble(str1) == Double.parseDouble(str2));\n                System.out.println(str1 + \" -> \" + str2 + \" : \" + cmp);\n                assertTrue(cmp);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/util/RyuFloatTest.java",
    "content": "package com.alibaba.json.bvt.util;\n\nimport com.alibaba.fastjson.util.RyuFloat;\nimport junit.framework.TestCase;\n\nimport java.util.Random;\n\npublic class RyuFloatTest extends TestCase {\n    public void test_for_ryu() throws Exception {\n        Random random = new Random();\n\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            float value = random.nextFloat();\n\n            String str1 = Float.toString(value);\n            String str2 = RyuFloat.toString(value);\n\n            if (!str1.equals(str2)) {\n                boolean cmp = (Float.parseFloat(str1) == Float.parseFloat(str2));\n                System.out.println(str1 + \" -> \" + str2 + \" : \" + cmp);\n                assertTrue(cmp);\n//                assertTrue(Float.parseFloat(str1) == Float.parseFloat(str2));\n            }\n        }\n    }\n\n    public void test_0() throws Exception {\n        float[] values = new float[] {\n                Float.NaN,\n                Float.NEGATIVE_INFINITY,\n                Float.POSITIVE_INFINITY,\n                Float.MIN_VALUE,\n                Float.MAX_VALUE,\n                0,\n                0.0f,\n                -0.0f,\n                Integer.MAX_VALUE,\n                Integer.MIN_VALUE,\n                Long.MAX_VALUE,\n                Long.MIN_VALUE,\n                Float.intBitsToFloat(0x80000000),\n                1.0f,\n                -1f,\n                Float.intBitsToFloat(0x00800000),\n                1.0E7f,\n                9999999.0f,\n                0.001f,\n                0.0009999999f,\n                Float.intBitsToFloat(0x7f7fffff),\n                Float.intBitsToFloat(0x00000001),\n                3.3554448E7f,\n                8.999999E9f,\n                3.4366717E10f,\n                0.33007812f,\n                Float.intBitsToFloat(0x5D1502F9),\n                Float.intBitsToFloat(0x5D9502F9),\n                Float.intBitsToFloat(0x5E1502F9),\n                4.7223665E21f,\n                8388608.0f,\n                1.6777216E7f,\n                3.3554436E7f,\n                6.7131496E7f,\n                1.9310392E-38f,\n                -2.47E-43f,\n                1.993244E-38f,\n                4103.9003f,\n                5.3399997E9f,\n                6.0898E-39f,\n                0.0010310042f,\n                2.8823261E17f,\n                7.038531E-26f,\n                9.2234038E17f,\n                6.7108872E7f,\n                1.0E-44f,\n                2.816025E14f,\n                9.223372E18f,\n                1.5846085E29f,\n                1.1811161E19f,\n                5.368709E18f,\n                4.6143165E18f,\n                0.007812537f,\n                1.4E-45f,\n                1.18697724E20f,\n                1.00014165E-36f,\n                200f,\n                3.3554432E7f,\n\n                0.1f,\n                0.01f,\n                0.001f,\n                0.0001f,\n                0.00001f,\n                0.000001f,\n                0.0000001f,\n\n                1.1f,\n                1.01f,\n                1.001f,\n                1.0001f,\n                1.00001f,\n                1.000001f,\n                1.0000001f,\n        };\n\n        for (float value : values) {\n            String str1 = Float.toString(value);\n            String str2 = RyuFloat.toString(value);\n\n            if (!str1.equals(str2)) {\n                boolean cmp = (Float.parseFloat(str1) == Float.parseFloat(str2));\n                System.out.println(str1 + \" -> \" + str2 + \" : \" + cmp);\n                assertTrue(cmp);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/util/ThreadLocalCacheTest.java",
    "content": "package com.alibaba.json.bvt.util;\n\nimport java.lang.reflect.Field;\nimport java.lang.reflect.Method;\n\nimport com.alibaba.fastjson.util.ThreadLocalCache;\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.util.IOUtils;\n\nimport junit.framework.TestCase;\n\npublic class ThreadLocalCacheTest extends TestCase {\n\n    public void test() throws Exception {\n\n        clearChars();\n        Assert.assertEquals(allocateChars(0).length, 1024 * 64);\n        Assert.assertEquals(allocateChars(1024).length, 1024 * 64);\n        Assert.assertEquals(allocateChars(2048).length, 1024 * 64);\n        Assert.assertEquals(allocateChars(0).length, 1024 * 64);\n        Assert.assertEquals(allocateChars(1024 * 128).length, 1024 * 128);\n        Assert.assertEquals(allocateChars(0).length, 1024 * 64);\n\n        clearChars();\n        Assert.assertEquals(allocateChars(2048).length, 1024 * 64);\n\n        clearChars();\n        Assert.assertEquals(allocateChars(1024 * 256).length, 1024 * 256);\n        Assert.assertEquals(allocateChars(0).length, 1024 * 64);\n        clearChars();\n\n    }\n    \n    static char[] allocateChars(int length) throws Exception {\n        Method method = JSON.class.getDeclaredMethod(\"allocateChars\", int.class);\n        method.setAccessible(true);\n        return (char[]) method.invoke(null, length);\n    }\n    \n    public static void clearChars() throws Exception {\n        Field field = JSON.class.getDeclaredField(\"charsLocal\");\n        field.setAccessible(true);\n        \n        ThreadLocal<char[]> charsLocal = (ThreadLocal<char[]>) field.get(null);\n        charsLocal.set(null);\n    }\n\n    public void testBytes() throws Exception {\n\n        clearBytes();\n        Assert.assertEquals(getBytes(0).length, 8192);\n        Assert.assertEquals(getBytes(1024).length, 8192);\n        Assert.assertEquals(getBytes(8192 * 2).length, 8192 * 2);\n        Assert.assertEquals(getBytes(0).length, 8192);\n        Assert.assertSame(getBytes(0), getBytes(1204));\n        Assert.assertNotSame(getBytes(9000), getBytes(9000));\n\n        clearBytes();\n        Assert.assertEquals(getBytes(2048).length, 8192);\n\n        clearBytes();\n        Assert.assertEquals(getBytes(1024 * 256).length, 1024 * 256);\n        Assert.assertEquals(getBytes(0).length, 8192);\n        clearBytes();\n\n    }\n    \n    public static byte[] getBytes(int length) throws Exception {\n        Field field = SerializeWriter.class.getDeclaredField(\"bytesBufLocal\");\n        field.setAccessible(true);\n        ThreadLocal<byte[]> bytesBufLocal = (ThreadLocal<byte[]>) field.get(null);\n        \n        byte[] bytes = bytesBufLocal.get();\n\n        if (bytes == null) {\n            bytes = new byte[1024 * 8];\n            bytesBufLocal.set(bytes);\n        }\n        \n        return bytes.length < length //\n            ? new byte[length] //\n            : bytes;\n    }\n    \n    public static void clearBytes() throws Exception {\n        Field field = SerializeWriter.class.getDeclaredField(\"bytesBufLocal\");\n        field.setAccessible(true);\n        ThreadLocal<byte[]> bytesBufLocal = (ThreadLocal<byte[]>) field.get(null);\n        bytesBufLocal.set(null);\n    }\n\n    public void test_chars() throws Exception {\n        ThreadLocalCache.getChars(10);\n        ThreadLocalCache.getChars(10);\n        ThreadLocalCache.getChars(20);\n        ThreadLocalCache.getChars(30);\n        clearChars();\n        ThreadLocalCache.getChars(10);\n        ThreadLocalCache.getChars(10);\n        ThreadLocalCache.getChars(20);\n        ThreadLocalCache.getChars(30);\n\n        ThreadLocalCache.clearChars();\n        ThreadLocalCache.getUTF8Decoder();\n        ThreadLocalCache.getUTF8Decoder();\n    }\n\n    public void test_bytes() throws Exception {\n        ThreadLocalCache.getBytes(10);\n        ThreadLocalCache.getBytes(10);\n        ThreadLocalCache.getBytes(20);\n        ThreadLocalCache.getBytes(30);\n        clearBytes();\n        ThreadLocalCache.getBytes(10);\n        ThreadLocalCache.getBytes(10);\n        ThreadLocalCache.getBytes(20);\n        ThreadLocalCache.getBytes(30);\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/util/TypeUtilsCastLinkedHashMap.java",
    "content": "package com.alibaba.json.bvt.util;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.Feature;\nimport junit.framework.TestCase;\n\nimport java.util.LinkedHashMap;\n\npublic class TypeUtilsCastLinkedHashMap extends TestCase {\n    public void test_for_cast() throws Exception {\n        JSONObject obj = JSON.parseObject(\"{\\\"id\\\":1001,\\\"name\\\":\\\"xxx\\\"}\", Feature.OrderedField);\n        obj.toJavaObject(LinkedHashMap.class);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/util/TypeUtilsTest.java",
    "content": "package com.alibaba.json.bvt.util;\n\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.fastjson.util.TypeUtils;\nimport com.alibaba.json.bvt.parser.deser.generic.GenericArrayTest;\nimport com.jsoniter.spi.GenericArrayTypeImpl;\nimport junit.framework.TestCase;\n\nimport java.lang.reflect.Constructor;\nimport java.lang.reflect.GenericArrayType;\n\npublic class TypeUtilsTest extends TestCase {\n    public void test_0() throws Exception {\n        assertEquals(0, TypeUtils.getSerializeFeatures(Object.class));\n        assertEquals(SerializerFeature.WriteMapNullValue.mask, TypeUtils.getSerializeFeatures(Model.class));\n    }\n\n    public void test_1() throws Exception {\n        TypeUtils.checkPrimitiveArray((GenericArrayType) A.class.getField(\"values\").getGenericType());\n    }\n\n    public void test_3() throws Exception {\n        assertTrue(TypeUtils.isHibernateInitialized(new Object()));\n    }\n\n    public void test_2() throws Exception {\n        Constructor<?> constructor = GenericArrayTypeImpl.class.getDeclaredConstructors()[0];\n        constructor.setAccessible(true);\n\n        Class[] classes = new Class[] {\n            boolean[].class,\n            byte[].class,\n            short[].class,\n            int[].class,\n            long[].class,\n            float[].class,\n            double[].class,\n            char[].class,\n        };\n\n        for (Class clazz : classes) {\n            GenericArrayType type = (GenericArrayType) constructor.newInstance(clazz.getComponentType());\n            assertEquals(clazz, TypeUtils.checkPrimitiveArray(type));\n        }\n\n    }\n\n    @JSONType(serialzeFeatures = SerializerFeature.WriteMapNullValue)\n    public static class Model {\n\n    }\n\n    public static class A<T extends Number> {\n        public T[] values;\n    }\n\n    public static class VO extends GenericArrayTest.A {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/util/UTF8DecoderTest.java",
    "content": "package com.alibaba.json.bvt.util;\n\nimport com.alibaba.fastjson.util.ThreadLocalCache;\nimport com.alibaba.fastjson.util.UTF8Decoder;\nimport junit.framework.TestCase;\n\nimport java.nio.ByteBuffer;\nimport java.nio.charset.CharacterCodingException;\nimport java.nio.charset.CharsetDecoder;\n\npublic class UTF8DecoderTest extends TestCase {\n    public void test_0() throws Exception {\n        CharsetDecoder decoder = ThreadLocalCache.getUTF8Decoder();\n\n        String str = \"asdfl中华人民共和国据《今日俄罗斯》17日消息，穆希卡总统自2015年卸任总统一职后一直在参议院就职。14日，穆希卡宣布辞职，理由是“长途跋涉后感到疲惫了”。按照规定，他作为参议员的任期将到2020年。\";\n\n        {\n            byte[] bytes = str.getBytes(\"UTF-8\");\n            ByteBuffer byteBuffer = ByteBuffer.wrap(bytes);\n            decoder.decode(byteBuffer);\n        }\n\n        try {\n            byte[] bytes = str.getBytes(\"GB18030\");\n            ByteBuffer byteBuffer = ByteBuffer.wrap(bytes);\n            decoder.decode(byteBuffer);\n        } catch (CharacterCodingException ex) {\n\n        }\n    }\n\n    public void test_1() throws Exception {\n        int len = (Character.MAX_VALUE - Character.MIN_VALUE) + 1;\n        char[] chars = new char[len];\n        for (int i = 0; i < len; ++i) {\n            char ch = (char) ((int) Character.MAX_VALUE + i);\n            if (ch >= 55296 && ch <= 57344) {\n                continue;\n            }\n            chars[i] = ch;\n        }\n\n        String str = new String(chars);\n\n        CharsetDecoder decoder = ThreadLocalCache.getUTF8Decoder();\n\n        {\n            byte[] bytes = str.getBytes(\"UTF-8\");\n            ByteBuffer byteBuffer = ByteBuffer.wrap(bytes);\n            decoder.decode(byteBuffer);\n        }\n        try {\n            byte[] bytes = str.getBytes(\"GB18030\");\n            ByteBuffer byteBuffer = ByteBuffer.wrap(bytes);\n            decoder.decode(byteBuffer);\n        } catch (CharacterCodingException ex) {\n\n        }\n    }\n\n    public void test_2() throws Exception {\n        CharsetDecoder decoder = ThreadLocalCache.getUTF8Decoder();\n\n        String str = \"嫉妬心を止められない\\n\" +\n                \"服装はいつも地味なAですが、よく見るとアクセサリーやバッグがブランド品。そこで、その人の夫の職業を聞くと…。\";\n\n        {\n            byte[] bytes = str.getBytes(\"UTF-8\");\n            ByteBuffer byteBuffer = ByteBuffer.wrap(bytes);\n            decoder.decode(byteBuffer);\n        }\n        try {\n            byte[] bytes = str.getBytes(\"GB18030\");\n            ByteBuffer byteBuffer = ByteBuffer.wrap(bytes);\n            decoder.decode(byteBuffer);\n        } catch (CharacterCodingException ex) {\n\n        }\n    }\n\n    public void test_3() throws Exception {\n        CharsetDecoder decoder = ThreadLocalCache.getUTF8Decoder();\n\n        String str = \"面的藏文有一个音节“བསྒྲོནད”（威利转写：bsgrond），由前加字ba、上加字sa，基字ga,下加字ra，元音o、第一后加字na、第二后加字da构成。bsgrond是7世纪的藏语语音，随着现在拉萨音里复辅音以及部分韵尾的消失和声调的出现，该词已转变读成/ʈʂø̃˩˨/（藏语拼音：zhön，藏文拉萨音拼音：zhoenv）。\\n\" +\n                \"\\n\" +\n                \"前加字只能是 ག /g/、 ད /d/、 བ /b/、 མ /m/、 འ /ɦ/。\\n\" +\n                \"上加字只能是 ཪ /r/、 ལ /l/、 ས /s/。\\n\" +\n                \"下加字只能是 ◌ྲ /r/、 ◌ྱ /j/、 ◌ྭ /w/、 ◌ླ /l/ 和用于音译梵文里送气浊辅音的送气符号 ◌ྷ，有一个复辅音 གྲྭ /grwa/ 有两个下加字 ◌ྲ /r/ 和 ◌ྭ /w/。\\n\" +\n                \"第一后加字只可能是 ཪ /r/、 ག /g/、 བ /b/、 མ /m/、 འ /ɦ/、 ང /ŋ/、 ས /s/、 ད /d/、 ན /n/、 ལ /l/。\\n\" +\n                \"第二后加字只可能是 ས /s/ 和 ད /d/，在现代藏语里不再发音，ད /d/ 在现代藏语中已经不用。\\n\" +\n                \"另外，以下是藏文带头字（དབུ་ཅན་）和无头字（དབུ་མེད་）两种字体和国际拉丁文转写的列表：\";\n\n        {\n            byte[] bytes = str.getBytes(\"UTF-8\");\n            ByteBuffer byteBuffer = ByteBuffer.wrap(bytes);\n            decoder.decode(byteBuffer);\n        }\n        try {\n            byte[] bytes = str.getBytes(\"GB18030\");\n            ByteBuffer byteBuffer = ByteBuffer.wrap(bytes);\n            decoder.decode(byteBuffer);\n        } catch (CharacterCodingException ex) {\n\n        }\n    }\n\n    public void test_4() throws Exception {\n        CharsetDecoder decoder = ThreadLocalCache.getUTF8Decoder();\n\n        String str = \"\\uD83E\\uDD17 on Instagram\\n\" +\n                \"\\uD83E\\uDD17 on Twitter\\n\" +\n                \"\\uD83E\\uDD17 on Wikipedia\\n\" +\n                \"\\uD83E\\uDD17 on Yelp\\n\" +\n                \"\\uD83E\\uDD17 on YouTube\\n\" +\n                \"\\uD83E\\uDD17 on Google Trends\\n\" +\n                \"See also\\n\" +\n                \"\\uD83C\\uDFE5 Hospital\\n\" +\n                \"\\uD83D\\uDC50 Open Hands\\n\" +\n                \"\\uD83E\\uDD68 Pretzel\\n\" +\n                \"\\uD83D\\uDE42 Slightly Smiling Face\\n\" +\n                \"\\uD83E\\uDD27 Sneezing Face\\n\" +\n                \"\\uD83E\\uDD14 Thinking Face\\n\" +\n                \"\\uD83D\\uDC95 Two Hearts\\n\" +\n                \"☺ Smiling Face\\n\" +\n                \"\\uD83D\\uDD00 Random emoji\";\n\n        {\n            byte[] bytes = str.getBytes(\"UTF-8\");\n            ByteBuffer byteBuffer = ByteBuffer.wrap(bytes);\n            decoder.decode(byteBuffer);\n        }\n        try {\n            byte[] bytes = str.getBytes(\"GB18030\");\n            ByteBuffer byteBuffer = ByteBuffer.wrap(bytes);\n            decoder.decode(byteBuffer);\n        } catch (CharacterCodingException ex) {\n\n        }\n    }\n\n    /**\n     * @deprecated\n     */\n    public void test_5() throws Exception {\n        UTF8Decoder decoder = new UTF8Decoder();\n\n        String str = \"⌛︎€\\uD83D\\uDC69\\uD83D\\uDC68\\uD83D\\uDC68\\uD83C\\uDFFB\\uD83D\\uDC69\\uD83C\\uDFFFU+1F9D2: Child\\tText\\t\\uD83E\\uDDD2\\t\\uD83E\\uDDD2\\uD83C\\uDFFB\\t\\uD83E\\uDDD2\\uD83C\\uDFFC\\t\\uD83E\\uDDD2\\uD83C\\uDFFD\\t\\uD83E\\uDDD2\\uD83C\\uDFFE\\t\\uD83E\\uDDD2\\uD83C\\uDFFF\\n\\uD83E\\uDDD1\\uD83C\\uDFFF\\uD83C\\uDE1A️\\uD83C\\uDC04️❤️\";\n        byte[] bytes =str.getBytes(\"UTF-8\");\n        ByteBuffer byteBuffer = ByteBuffer.wrap(bytes);\n        decoder.decode(byteBuffer);\n    }\n\n    /**\n     * @deprecated\n     */\n    public void test_6() throws Exception {\n        UTF8Decoder decoder = new UTF8Decoder();\n\n        String str = \"\\u20AC\";\n        byte[] bytes =str.getBytes(\"UTF-8\");\n        ByteBuffer byteBuffer = ByteBuffer.wrap(bytes);\n        decoder.decode(byteBuffer);\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/validate/JSONValidatorTest.java",
    "content": "package com.alibaba.json.bvt.validate;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONValidator;\nimport com.alibaba.json.test.benchmark.decode.EishayDecodeBytes;\nimport org.junit.Test;\n\nimport java.io.ByteArrayInputStream;\nimport java.io.StringReader;\n\nimport static org.junit.Assert.*;\n\npublic class JSONValidatorTest {\n\n    @Test\n    public void validate_test_accurate() throws Throwable {\n        boolean isValidate = JSONValidator.from(\"{\\\"string\\\":\\\"a\\\",\\\"nums\\\":[0,-1,10,0.123,1e5,-1e+6,0.1e-7],\\\"object\\\":{\\\"empty\\\":{},\\\"list\\\":[]},\\\"list\\\":[\\\"object\\\",{\\\"true\\\":true,\\\"false\\\":false,\\\"null\\\":null}]}\").validate();\n        assertTrue(isValidate);\n    }\n\n    @Test\n    public void validate_test_quotation() throws Throwable {\n        boolean isValidate = JSONValidator.from(\"{noQuotationMarksError}\").validate();\n        assertFalse(isValidate);\n    }\n\n    @Test\n    public void validate_test_colon() throws Throwable {\n        boolean isValidate = JSONValidator.from(\"{\\\"colonError\\\"}\").validate();\n        assertFalse(isValidate);\n\n    }\n\n    @Test\n    public void validate_test_bracket() throws Throwable {\n        boolean isValidate = JSONValidator.from(\"[1}\").validate();\n        assertFalse(isValidate);\n    }\n\n    @Test\n    public void validate_test_num1() throws Throwable {\n        boolean isValidate = JSONValidator.from(\"-a\").validate();\n        assertFalse(isValidate);\n    }\n\n    @Test\n    public void validate_test_num2() throws Throwable {\n        boolean isValidate = JSONValidator.from(\"1.a1\").validate();\n        assertFalse(isValidate);\n    }\n\n    @Test\n    public void validate_test_num3() throws Throwable {\n        boolean isValidate = JSONValidator.from(\"1.e1\").validate();\n        assertFalse(isValidate);\n    }\n\n    @Test\n    public void validate_test_num4() throws Throwable {\n        assertTrue(\n                JSONValidator.from(\"+1\")\n                        .validate());\n\n        assertFalse(\n                JSONValidator.from(\"++1\")\n                        .validate());\n    }\n\n    @Test\n    public void validate_test_num5() throws Throwable {\n        boolean isValidate = JSONValidator.from(\"1ea\").validate();\n        assertFalse(isValidate);\n    }\n\n    @Test\n    public void validate_test_tfn() throws Throwable {\n        boolean isValidate = JSONValidator.from(\"trua\").validate();\n        assertFalse(isValidate);\n    }\n\n    @Test\n    public void test_validate_utf8() throws Exception {\n        byte[] json = JSON.toJSONBytes(EishayDecodeBytes.instance.getContent());\n\n        JSONValidator validator = JSONValidator.fromUtf8(json);\n        assertTrue(validator.validate());\n    }\n\n    @Test\n    public void test_validate_utf8_stream() throws Exception {\n        byte[] json = JSON.toJSONBytes(EishayDecodeBytes.instance.getContent());\n\n        JSONValidator validator = JSONValidator.fromUtf8(new ByteArrayInputStream(json));\n        assertTrue(validator.validate());\n        validator.close();\n    }\n\n    @Test\n    public void test_validate() throws Exception {\n        String json = JSON.toJSONString(EishayDecodeBytes.instance.getContent());\n        JSONValidator validator = JSONValidator.from(json);\n        assertTrue(validator.validate());\n    }\n\n    @Test\n    public void test_validate_reader() throws Exception {\n        JSONValidator validator = JSONValidator.from(\n                new StringReader(\n                        new String(\n                                JSON.toJSONBytes(EishayDecodeBytes.instance.getContent()))));\n        assertTrue(validator.validate());\n        validator.close();\n    }\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/value/LongValueTest.java",
    "content": "package com.alibaba.json.bvt.value;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\nimport junit.framework.TestCase;\n\npublic class LongValueTest extends TestCase {\n\n    public void test_value() {\n        long step = ((long) Integer.MAX_VALUE) * 1000 * 1000;\n        for (long i = Long.MIN_VALUE; i <= 0; i += step) {\n            VO vo = new VO();\n            vo.value = i;\n            String text = JSON.toJSONString(vo);\n            VO vo2 = JSON.parseObject(text, VO.class);\n            Assert.assertEquals(vo.value, vo2.value);\n        }\n        for (long i = Long.MAX_VALUE; i >= 0; i -= step) {\n            VO vo = new VO();\n            vo.value = i;\n            String text = JSON.toJSONString(vo);\n            VO vo2 = JSON.parseObject(text, VO.class);\n            Assert.assertEquals(vo.value, vo2.value);\n        }\n    }\n\n    public void test_value_1() {\n        long step = ((long) Integer.MAX_VALUE) * 1000 * 1000;\n        for (long i = Long.MIN_VALUE; i <= 0; i += step) {\n            V1 vo = new V1();\n            vo.value = i;\n            String text = JSON.toJSONString(vo);\n            V1 vo2 = JSON.parseObject(text, V1.class);\n            Assert.assertEquals(vo.value, vo2.value);\n        }\n        for (long i = Long.MAX_VALUE; i >= 0; i -= step) {\n            V1 vo = new V1();\n            vo.value = i;\n            String text = JSON.toJSONString(vo);\n            V1 vo2 = JSON.parseObject(text, V1.class);\n            Assert.assertEquals(vo.value, vo2.value);\n        }\n    }\n    \n    public void test_value_2() {\n        long step = ((long) Integer.MAX_VALUE) * 1000 * 1000;\n        for (long i = Long.MIN_VALUE; i <= 0; i += step) {\n            V2 vo = new V2();\n            vo.value = i;\n            String text = JSON.toJSONString(vo);\n            V2 vo2 = JSON.parseObject(text, V2.class);\n            Assert.assertEquals(vo.value, vo2.value);\n        }\n        for (long i = Long.MAX_VALUE; i >= 0; i -= step) {\n            V2 vo = new V2();\n            vo.value = i;\n            String text = JSON.toJSONString(vo);\n            V2 vo2 = JSON.parseObject(text, V2.class);\n            Assert.assertEquals(vo.value, vo2.value);\n        }\n    }\n\n    public static class VO {\n\n        public long value;\n    }\n\n    static class V1 {\n\n        public long value;\n    }\n\n    public static class V2 {\n\n        private long value;\n\n        public long getValue() {\n            return value;\n        }\n\n        public void setValue(long value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_0_private.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class WriteAsArray_0_private extends TestCase {\n    public void test_0 () throws Exception {\n        VO vo = new VO();\n        vo.setId(123);\n        vo.setName(\"wenshao\");\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.BeanToArray);\n        Assert.assertEquals(\"[123,\\\"wenshao\\\"]\", text);\n        VO vo2 = JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(vo.getId(), vo2.getId());\n        Assert.assertEquals(vo.getName(), vo2.getName());\n    }\n    \n    private static class VO {\n        private int id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_0_public.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class WriteAsArray_0_public extends TestCase {\n    public void test_0 () throws Exception {\n        VO vo = new VO();\n        vo.setId(123);\n        vo.setName(\"wenshao\");\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.BeanToArray);\n        Assert.assertEquals(\"[123,\\\"wenshao\\\"]\", text);\n    }\n    \n    public static class VO {\n        private int id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_Eishay.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.json.test.benchmark.decode.EishayDecodeBytes;\n\nimport data.media.MediaContent;\n\npublic class WriteAsArray_Eishay extends TestCase {\n    public void test_0 () throws Exception {\n        MediaContent content = EishayDecodeBytes.instance.getContent();\n        \n        String text = JSON.toJSONString(content, SerializerFeature.BeanToArray);\n        System.out.println(text.getBytes().length);\n        JSON.parseObject(text, MediaContent.class, Feature.SupportArrayToBean);\n    }\n    \n    public static class VO {\n        private short id;\n        private String name;\n\n        public short getId() {\n            return id;\n        }\n\n        public void setId(short id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_Eishay_Image.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport data.media.Image;\nimport data.media.Image.Size;\n\npublic class WriteAsArray_Eishay_Image extends TestCase {\n    public void test_0 () throws Exception {\n        Image image = new Image();\n        image.setHeight(123);\n        image.setSize(Size.LARGE);\n        image.setTitle(\"xx\");\n        \n        String text = JSON.toJSONString(image, SerializerFeature.BeanToArray);\n        System.out.println(text);\n        \n        Image image2 = JSON.parseObject(text, Image.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(image.getHeight(), image2.getHeight());\n        Assert.assertEquals(image.getWidth(), image2.getWidth());\n        Assert.assertEquals(image.getSize(), image2.getSize());\n        Assert.assertEquals(image.getTitle(), image2.getTitle());\n        Assert.assertEquals(image.getUri(), image2.getUri());\n    }\n    \n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_Eishay_Media.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport java.util.Arrays;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport data.media.Media;\nimport data.media.Media.Player;\n\npublic class WriteAsArray_Eishay_Media extends TestCase {\n    public void test_0 () throws Exception {\n        Media media = new Media();\n        media.setHeight(123);\n        media.setPlayer(Player.FLASH);\n        media.setTitle(\"xx\");\n        media.setPersons(Arrays.<String>asList(\"a\",null));\n        \n        String text = JSON.toJSONString(media, SerializerFeature.BeanToArray);\n        System.out.println(text);\n        \n        Media media2 = JSON.parseObject(text, Media.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(media.getHeight(), media2.getHeight());\n        Assert.assertEquals(media.getWidth(), media2.getWidth());\n        Assert.assertEquals(media.getSize(), media2.getSize());\n        Assert.assertEquals(media.getTitle(), media2.getTitle());\n        Assert.assertEquals(media.getUri(), media2.getUri());\n    }\n    \n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_Object.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.json.bvt.writeAsArray.WriteAsArray_enum_public.VO;\n\npublic class WriteAsArray_Object extends TestCase {\n\n    public void test_0() throws Exception {\n        A a = new A();\n        a.setId(123);\n        a.setName(\"wenshao\");\n        \n        VO vo = new VO();\n        vo.setA(a);\n\n        String text = JSON.toJSONString(vo, SerializerFeature.BeanToArray);\n        Assert.assertEquals(\"[[123,\\\"wenshao\\\"]]\", text);\n        \n        VO vo2 = JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(vo.getA().getId(), vo2.getA().getId());\n        Assert.assertEquals(vo.getA().getName(), vo2.getA().getName());\n    }\n\n    private static class VO {\n\n        private A a;\n\n        public A getA() {\n            return a;\n        }\n\n        public void setA(A a) {\n            this.a = a;\n        }\n\n    }\n\n    private static class A {\n\n        private int    id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_Object_2_public.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class WriteAsArray_Object_2_public extends TestCase {\n\n    public void test_0() throws Exception {\n        A a = new A();\n        a.setId(123);\n        a.setName(\"wenshao\");\n\n        VO vo = new VO();\n        vo.setId(1001);\n        vo.setValue(a);\n\n        String text = JSON.toJSONString(vo, SerializerFeature.BeanToArray);\n        Assert.assertEquals(\"[1001,[123,\\\"wenshao\\\"]]\", text);\n\n        VO vo2 = JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(vo.getValue().getId(), vo2.getValue().getId());\n        Assert.assertEquals(vo.getValue().getName(), vo2.getValue().getName());\n    }\n\n    public static class VO {\n\n        private int id;\n        private A   value;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public A getValue() {\n            return value;\n        }\n\n        public void setValue(A value) {\n            this.value = value;\n        }\n\n    }\n\n    public static class A {\n\n        private int    id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_Object_public.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class WriteAsArray_Object_public extends TestCase {\n\n    public void test_0() throws Exception {\n        A a = new A();\n        a.setId(123);\n        a.setName(\"wenshao\");\n        \n        VO vo = new VO();\n        vo.setA(a);\n\n        String text = JSON.toJSONString(vo, SerializerFeature.BeanToArray);\n        Assert.assertEquals(\"[[123,\\\"wenshao\\\"]]\", text);\n        \n        VO vo2 = JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(vo.getA().getId(), vo2.getA().getId());\n        Assert.assertEquals(vo.getA().getName(), vo2.getA().getName());\n    }\n\n    public static class VO {\n\n        private A a;\n\n        public A getA() {\n            return a;\n        }\n\n        public void setA(A a) {\n            this.a = a;\n        }\n\n    }\n\n    public static class A {\n\n        private int    id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_boolean_public.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class WriteAsArray_boolean_public extends TestCase {\n    public void test_0 () throws Exception {\n        VO vo = new VO();\n        vo.setId(true);\n        vo.setName(\"wenshao\");\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.BeanToArray);\n        Assert.assertEquals(\"[true,\\\"wenshao\\\"]\", text);\n    }\n    \n    public static class VO {\n        private boolean id;\n        private String name;\n\n        public boolean getId() {\n            return id;\n        }\n\n        public void setId(boolean id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_byte_public.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class WriteAsArray_byte_public extends TestCase {\n    public void test_0 () throws Exception {\n        VO vo = new VO();\n        vo.setId((byte)123);\n        vo.setName(\"wenshao\");\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.BeanToArray);\n        Assert.assertEquals(\"[123,\\\"wenshao\\\"]\", text);\n    }\n    \n    public static class VO {\n        private byte id;\n        private String name;\n\n        public byte getId() {\n            return id;\n        }\n\n        public void setId(byte id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_char_public.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class WriteAsArray_char_public extends TestCase {\n    public void test_0 () throws Exception {\n        VO vo = new VO();\n        vo.setId('x');\n        vo.setName(\"wenshao\");\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.BeanToArray);\n        Assert.assertEquals(\"[\\\"x\\\",\\\"wenshao\\\"]\", text);\n    }\n    \n    public static class VO {\n        private char id;\n        private String name;\n\n        public char getId() {\n            return id;\n        }\n\n        public void setId(char id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_double_private.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class WriteAsArray_double_private extends TestCase {\n    public void test_0 () throws Exception {\n        VO vo = new VO();\n        vo.setId(123D);\n        vo.setName(\"wenshao\");\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.BeanToArray);\n        Assert.assertEquals(\"[123.0,\\\"wenshao\\\"]\", text);\n        \n        VO vo2 = JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        Assert.assertTrue(vo.id == vo2.id);\n        Assert.assertEquals(vo.name, vo2.name);\n    }\n    \n    public void test_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[123.A,\\\"wenshao\\\"]\", VO.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[\\\"A\\\",\\\"wenshao\\\"]\", VO.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[123:\\\"wenshao\\\"]\", VO.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public static class VO {\n        private double id;\n        private String name;\n\n        public double getId() {\n            return id;\n        }\n\n        public void setId(double id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_double_public.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class WriteAsArray_double_public extends TestCase {\n    public void test_0 () throws Exception {\n        VO vo = new VO();\n        vo.setId(123D);\n        vo.setName(\"wenshao\");\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.BeanToArray);\n        Assert.assertEquals(\"[123.0,\\\"wenshao\\\"]\", text);\n        \n        VO vo2 = JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        Assert.assertTrue(vo.id == vo2.id);\n        Assert.assertEquals(vo.name, vo2.name);\n    }\n    \n    public void test_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[123.A,\\\"wenshao\\\"]\", VO.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[\\\"A\\\",\\\"wenshao\\\"]\", VO.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[123:\\\"wenshao\\\"]\", VO.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    private static class VO {\n        private double id;\n        private String name;\n\n        public double getId() {\n            return id;\n        }\n\n        public void setId(double id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_enum_public.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class WriteAsArray_enum_public extends TestCase {\n\n    public void test_0() throws Exception {\n        VO vo = new VO();\n        vo.setId(Type.AA);\n        vo.setName(\"wenshao\");\n\n        String text = JSON.toJSONString(vo, SerializerFeature.BeanToArray);\n        Assert.assertEquals(\"[\\\"AA\\\",\\\"wenshao\\\"]\", text);\n        VO vo2 = JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(vo.getId(), vo2.getId());\n        Assert.assertEquals(vo.getName(), vo2.getName());\n    }\n\n    public static class VO {\n\n        private Type   id;\n        private String name;\n\n        public Type getId() {\n            return id;\n        }\n\n        public void setId(Type id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n\n    public static enum Type {\n        A, B, C, D, AA, BB, CC\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_float2_private.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class WriteAsArray_float2_private extends TestCase {\n    public void test_0 () throws Exception {\n        VO vo = new VO();\n        vo.setId(123F);\n        vo.setName(\"wenshao\");\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.BeanToArray);\n        Assert.assertEquals(\"[123.0,\\\"wenshao\\\"]\", text);\n        \n        VO vo2 = JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        Assert.assertTrue(vo.id == vo2.id);\n        Assert.assertEquals(vo.name, vo2.name);\n    }\n    \n    public void test_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[123.A,\\\"wenshao\\\"]\", VO.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[\\\"A\\\",\\\"wenshao\\\"]\", VO.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[123:\\\"wenshao\\\"]\", VO.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    private static class VO {\n        private float id;\n        private String name;\n\n        public float getId() {\n            return id;\n        }\n\n        public void setId(float id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_float2_public.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class WriteAsArray_float2_public extends TestCase {\n    public void test_0 () throws Exception {\n        VO vo = new VO();\n        vo.setId(123F);\n        vo.setName(\"wenshao\");\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.BeanToArray);\n        Assert.assertEquals(\"[123.0,\\\"wenshao\\\"]\", text);\n        \n        VO vo2 = JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        Assert.assertTrue(vo.id == vo2.id);\n        Assert.assertEquals(vo.name, vo2.name);\n    }\n    \n    public void test_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[123.A,\\\"wenshao\\\"]\", VO.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[\\\"A\\\",\\\"wenshao\\\"]\", VO.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[123:\\\"wenshao\\\"]\", VO.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public static class VO {\n        private float id;\n        private String name;\n\n        public float getId() {\n            return id;\n        }\n\n        public void setId(float id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_float_public.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class WriteAsArray_float_public extends TestCase {\n    public void test_0 () throws Exception {\n        VO vo = new VO();\n        vo.setId(123F);\n        vo.setName(\"wenshao\");\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.BeanToArray);\n        Assert.assertEquals(\"[123.0,\\\"wenshao\\\"]\", text);\n    }\n    \n    public static class VO {\n        private float id;\n        private String name;\n\n        public float getId() {\n            return id;\n        }\n\n        public void setId(float id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_int_public.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport java.io.StringReader;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class WriteAsArray_int_public extends TestCase {\n\n    public void test_0() throws Exception {\n        VO vo = new VO();\n        vo.setId(123);\n        vo.setName(\"wenshao\");\n\n        String text = JSON.toJSONString(vo, SerializerFeature.BeanToArray);\n        Assert.assertEquals(\"[123,\\\"wenshao\\\"]\", text);\n        VO vo2 = JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(vo.getId(), vo2.getId());\n        Assert.assertEquals(vo.getName(), vo2.getName());\n    }\n    \n    public void test_1() throws Exception {\n        String text = \"[123 ,\\\"wenshao\\\"]\";\n        VO vo2 = JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(123, vo2.getId());\n        Assert.assertEquals(\"wenshao\", vo2.getName());\n    }\n    \n    public void test_2() throws Exception {\n        String text = \"[-123 ,\\\"wenshao\\\"]\";\n        VO vo2 = JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(-123, vo2.getId());\n        Assert.assertEquals(\"wenshao\", vo2.getName());\n    }\n    \n    public void test_1_stream() throws Exception {\n        String text = \"[123 ,\\\"wenshao\\\"]\";\n        JSONReader reader = new JSONReader(new StringReader(text), Feature.SupportArrayToBean);\n        VO vo2 = reader.readObject(VO.class);\n        Assert.assertEquals(123, vo2.getId());\n        Assert.assertEquals(\"wenshao\", vo2.getName());\n    }\n    \n    public void test_2_stream() throws Exception {\n        String text = \"[-123 ,\\\"wenshao\\\"]\";\n        JSONReader reader = new JSONReader(new StringReader(text), Feature.SupportArrayToBean);\n        VO vo2 = reader.readObject(VO.class);\n        Assert.assertEquals(-123, vo2.getId());\n        Assert.assertEquals(\"wenshao\", vo2.getName());\n    }\n\n    public void test_error() throws Exception {\n        String text = \"[123.,\\\"wenshao\\\"]\";\n        Exception error = null;\n        try {\n            JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_stream() throws Exception {\n        String text = \"[123.,\\\"wenshao\\\" ]\";\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(text), Feature.SupportArrayToBean);\n            reader.readObject(VO.class);\n            reader.close();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_1() throws Exception {\n        String text = \"[123:\\\"wenshao\\\"]\";\n        Exception error = null;\n        try {\n            JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_stream_1() throws Exception {\n        String text = \"[123:\\\"wenshao\\\" ]\";\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(text), Feature.SupportArrayToBean);\n            reader.readObject(VO.class);\n            reader.close();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_2() throws Exception {\n        String text = \"[-123:\\\"wenshao\\\"]\";\n        Exception error = null;\n        try {\n            JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_stream_2() throws Exception {\n        String text = \"[-123:\\\"wenshao\\\" ]\";\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(text), Feature.SupportArrayToBean);\n            reader.readObject(VO.class);\n            reader.close();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_overflow() throws Exception {\n        String text = \"[2147483649:\\\"wenshao\\\"]\";\n        Exception error = null;\n        try {\n            JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_overflow_stream() throws Exception {\n        String text = \"[2147483649:\\\"wenshao\\\" ]\";\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(text), Feature.SupportArrayToBean);\n            reader.readObject(VO.class);\n            reader.close();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_value_notmatch() throws Exception {\n        String text = \"[true,\\\"wenshao\\\"]\";\n        Exception error = null;\n        try {\n            JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_value_notmatch_stream() throws Exception {\n        String text = \"[true,\\\"wenshao\\\"]\";\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(text), Feature.SupportArrayToBean);\n            reader.readObject(VO.class);\n            reader.close();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_value_notmatch_2() throws Exception {\n        String text = \"[+,\\\"wenshao\\\"]\";\n        Exception error = null;\n        try {\n            JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_value_notmatch_2_stream() throws Exception {\n        String text = \"[+,\\\"wenshao\\\"]\";\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(text), Feature.SupportArrayToBean);\n            reader.readObject(VO.class);\n            reader.close();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class VO {\n\n        private int   id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_jsonType.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class WriteAsArray_jsonType extends TestCase {\n\n    public void test_0() throws Exception {\n        VO vo = new VO();\n        vo.setId(123);\n        vo.setName(\"wenshao\");\n        \n        Parent parent = new Parent();\n        parent.setVo(vo);\n\n        String text = JSON.toJSONString(parent);\n        Assert.assertEquals(\"{\\\"vo\\\":[123,\\\"wenshao\\\"]}\", text);\n        VO vo2 = JSON.parseObject(text, Parent.class).getVo();\n        Assert.assertEquals(vo.getId(), vo2.getId());\n        Assert.assertEquals(vo.getName(), vo2.getName());\n    }\n\n    public static class Parent {\n        private VO vo;\n\n        public VO getVo() {\n            return vo;\n        }\n\n        public void setVo(VO vo) {\n            this.vo = vo;\n        }\n\n    }\n\n    @JSONType(serialzeFeatures=SerializerFeature.BeanToArray, parseFeatures=Feature.SupportArrayToBean)\n    public static class VO {\n        @JSONField(ordinal=1)\n        private int    id;\n        \n        @JSONField(ordinal=2)\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_list_obj_first_public.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class WriteAsArray_list_obj_first_public extends TestCase {\n\n    public void test_0() throws Exception {\n        VO vo = new VO();\n        vo.setId(123);\n        vo.setName(\"wenshao\");\n        vo.getFvalues().add(new A());\n\n        String text = JSON.toJSONString(vo, SerializerFeature.BeanToArray);\n        Assert.assertEquals(\"[[[0]],123,\\\"wenshao\\\"]\", text);\n\n        VO vo2 = JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(vo.getId(), vo2.getId());\n        Assert.assertEquals(vo.getName(), vo2.getName());\n        Assert.assertEquals(vo.getFvalues().size(), vo2.getFvalues().size());\n        Assert.assertEquals(vo.getFvalues().get(0).getClass(), vo2.getFvalues().get(0).getClass());\n        Assert.assertEquals(vo.getFvalues().get(0).getValue(), vo2.getFvalues().get(0).getValue());\n    }\n\n    public static class VO {\n\n        private long    id;\n        private String  name;\n        private List<A> fvalues = new ArrayList<A>();\n\n        public long getId() {\n            return id;\n        }\n\n        public void setId(long id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public List<A> getFvalues() {\n            return fvalues;\n        }\n\n        public void setFvalues(List<A> fvalues) {\n            this.fvalues = fvalues;\n        }\n\n    }\n\n    public static class A {\n\n        private int value;\n\n        public int getValue() {\n            return value;\n        }\n\n        public void setValue(int value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_list_obj_public.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class WriteAsArray_list_obj_public extends TestCase {\n\n    public void test_0() throws Exception {\n        VO vo = new VO();\n        vo.setId(123);\n        vo.setName(\"wenshao\");\n        vo.getValues().add(new A());\n\n        String text = JSON.toJSONString(vo, SerializerFeature.BeanToArray);\n        Assert.assertEquals(\"[123,\\\"wenshao\\\",[[0]]]\", text);\n        \n        VO vo2 = JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(vo.getId(), vo2.getId());\n        Assert.assertEquals(vo.getName(), vo2.getName());\n        Assert.assertEquals(vo.getValues().size(), vo2.getValues().size());\n        Assert.assertEquals(vo.getValues().get(0).getClass(), vo2.getValues().get(0).getClass());\n        Assert.assertEquals(vo.getValues().get(0).getValue(), vo2.getValues().get(0).getValue());\n    }\n\n    public static class VO {\n\n        private long         id;\n        private String       name;\n        private List<A> values = new ArrayList<A>();\n\n        public long getId() {\n            return id;\n        }\n\n        public void setId(long id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public List<A> getValues() {\n            return values;\n        }\n\n        public void setValues(List<A> values) {\n            this.values = values;\n        }\n\n    }\n    \n    public static class A {\n        private int value;\n\n        \n        public int getValue() {\n            return value;\n        }\n\n        \n        public void setValue(int value) {\n            this.value = value;\n        }\n        \n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_list_public.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class WriteAsArray_list_public extends TestCase {\n\n    public void test_0() throws Exception {\n        VO vo = new VO();\n        vo.setId(123);\n        vo.setName(\"wenshao\");\n        vo.getValues().add(\"x\");\n\n        String text = JSON.toJSONString(vo, SerializerFeature.BeanToArray);\n        Assert.assertEquals(\"[123,\\\"wenshao\\\",[\\\"x\\\"]]\", text);\n        \n        VO vo2 = JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(vo.getId(), vo2.getId());\n        Assert.assertEquals(vo.getName(), vo2.getName());\n        Assert.assertEquals(vo.getValues().size(), vo2.getValues().size());\n        Assert.assertEquals(vo.getValues().get(0), vo2.getValues().get(0));\n    }\n\n    public static class VO {\n\n        private long         id;\n        private String       name;\n        private List<String> values = new ArrayList<String>();\n\n        public long getId() {\n            return id;\n        }\n\n        public void setId(long id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public List<String> getValues() {\n            return values;\n        }\n\n        public void setValues(List<String> values) {\n            this.values = values;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_long_private.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class WriteAsArray_long_private extends TestCase {\n    public void test_0 () throws Exception {\n        VO vo = new VO();\n        vo.setId(123);\n        vo.setName(\"wenshao\");\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.BeanToArray);\n        Assert.assertEquals(\"[123,\\\"wenshao\\\"]\", text);\n    }\n    \n    private static class VO {\n        private long id;\n        private String name;\n\n        public long getId() {\n            return id;\n        }\n\n        public void setId(long id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_long_public.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport java.io.StringReader;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.json.bvt.writeAsArray.WriteAsArray_int_public.VO;\n\nimport junit.framework.TestCase;\n\npublic class WriteAsArray_long_public extends TestCase {\n\n    public void test_0() throws Exception {\n        VO vo = new VO();\n        vo.setId(123);\n        vo.setName(\"wenshao\");\n\n        String text = JSON.toJSONString(vo, SerializerFeature.BeanToArray);\n        Assert.assertEquals(\"[123,\\\"wenshao\\\"]\", text);\n        VO vo2 = JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(vo.getId(), vo2.getId());\n        Assert.assertEquals(vo.getName(), vo2.getName());\n    }\n    \n    public void test_1() throws Exception {\n        String text = \"[123 ,\\\"wenshao\\\"]\";\n        VO vo2 = JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(123, vo2.getId());\n        Assert.assertEquals(\"wenshao\", vo2.getName());\n    }\n    \n    public void test_2() throws Exception {\n        String text = \"[-123 ,\\\"wenshao\\\"]\";\n        VO vo2 = JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(-123, vo2.getId());\n        Assert.assertEquals(\"wenshao\", vo2.getName());\n    }\n    \n    public void test_1_stream() throws Exception {\n        String text = \"[123 ,\\\"wenshao\\\"]\";\n        JSONReader reader = new JSONReader(new StringReader(text), Feature.SupportArrayToBean);\n        VO vo2 = reader.readObject(VO.class);\n        Assert.assertEquals(123, vo2.getId());\n        Assert.assertEquals(\"wenshao\", vo2.getName());\n    }\n    \n    public void test_2_stream() throws Exception {\n        String text = \"[-123 ,\\\"wenshao\\\"]\";\n        JSONReader reader = new JSONReader(new StringReader(text), Feature.SupportArrayToBean);\n        VO vo2 = reader.readObject(VO.class);\n        Assert.assertEquals(-123, vo2.getId());\n        Assert.assertEquals(\"wenshao\", vo2.getName());\n    }\n\n    public void test_error() throws Exception {\n        String text = \"[123.,\\\"wenshao\\\"]\";\n        Exception error = null;\n        try {\n            JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_stream() throws Exception {\n        String text = \"[123.,\\\"wenshao\\\"]\";\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(text), Feature.SupportArrayToBean);\n            reader.readObject(VO.class);\n            reader.close();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_1() throws Exception {\n        String text = \"[123:\\\"wenshao\\\"]\";\n        Exception error = null;\n        try {\n            JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_stream_1() throws Exception {\n        String text = \"[123:\\\"wenshao\\\" ]\";\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(text), Feature.SupportArrayToBean);\n            reader.readObject(VO.class);\n            reader.close();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    \n    public void test_error_2() throws Exception {\n        String text = \"[-123:\\\"wenshao\\\"]\";\n        Exception error = null;\n        try {\n            JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_stream_2() throws Exception {\n        String text = \"[-123:\\\"wenshao\\\" ]\";\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(text), Feature.SupportArrayToBean);\n            reader.readObject(VO.class);\n            reader.close();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_overflow() throws Exception {\n        String text = \"[2147483649:\\\"wenshao\\\"]\";\n        Exception error = null;\n        try {\n            JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_overflow_stream() throws Exception {\n        String text = \"[2147483649:\\\"wenshao\\\" ]\";\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(text), Feature.SupportArrayToBean);\n            reader.readObject(VO.class);\n            reader.close();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_value_notmatch() throws Exception {\n        String text = \"[true,\\\"wenshao\\\"]\";\n        Exception error = null;\n        try {\n            JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_value_notmatch_stream() throws Exception {\n        String text = \"[true,\\\"wenshao\\\"]\";\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(text), Feature.SupportArrayToBean);\n            reader.readObject(VO.class);\n            reader.close();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_value_notmatch_2() throws Exception {\n        String text = \"[+,\\\"wenshao\\\"]\";\n        Exception error = null;\n        try {\n            JSON.parseObject(text, VO.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n    \n    public void test_error_value_notmatch_2_stream() throws Exception {\n        String text = \"[+,\\\"wenshao\\\"]\";\n        Exception error = null;\n        try {\n            JSONReader reader = new JSONReader(new StringReader(text), Feature.SupportArrayToBean);\n            reader.readObject(VO.class);\n            reader.close();\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class VO {\n\n        private long   id;\n        private String name;\n\n        public long getId() {\n            return id;\n        }\n\n        public void setId(long id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_long_stream_public.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport java.io.StringReader;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class WriteAsArray_long_stream_public extends TestCase {\n    public void test_0 () throws Exception {\n        VO vo = new VO();\n        vo.setId(123);\n        vo.setName(\"wenshao\");\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.BeanToArray);\n        Assert.assertEquals(\"[123,\\\"wenshao\\\"]\", text);\n        JSONReader reader = new JSONReader(new StringReader(text), Feature.SupportArrayToBean);\n        VO vo2 = reader.readObject(VO.class);\n        Assert.assertEquals(vo.getId(), vo2.getId());\n        Assert.assertEquals(vo.getName(), vo2.getName());\n        reader.close();\n    }\n    \n    public static class VO {\n        private long id;\n        private String name;\n\n        public long getId() {\n            return id;\n        }\n\n        public void setId(long id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_short_public.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class WriteAsArray_short_public extends TestCase {\n    public void test_0 () throws Exception {\n        VO vo = new VO();\n        vo.setId((short)123);\n        vo.setName(\"wenshao\");\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.BeanToArray);\n        Assert.assertEquals(\"[123,\\\"wenshao\\\"]\", text);\n    }\n    \n    public static class VO {\n        private short id;\n        private String name;\n\n        public short getId() {\n            return id;\n        }\n\n        public void setId(short id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_string.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class WriteAsArray_string extends TestCase {\n\n    public void test_0() throws Exception {\n        Model model = new Model();\n\n        String text = JSON.toJSONString(model, SerializerFeature.BeanToArray);\n        Assert.assertEquals(\"[null]\", text);\n\n        Model model2 = JSON.parseObject(text, Model.class, Feature.SupportArrayToBean);\n        Assert.assertNull(model2.name);\n    }\n\n    public void test_1() throws Exception {\n        Model model = new Model();\n        model.name = \"abc\";\n        String text = JSON.toJSONString(model, SerializerFeature.BeanToArray);\n        Assert.assertEquals(\"[\\\"abc\\\"]\", text);\n\n        Model model2 = JSON.parseObject(text, Model.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(model.name, model2.name);\n    }\n    \n    public void test_error_0() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[n\", Model.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_1() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[nu\", Model.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_2() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[nul\", Model.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_3() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[null\", Model.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_4() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[\\\"ab\", Model.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public void test_error_5() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[\\\"ab\\\"\", Model.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Model {\n\n        public String name;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_string_special.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class WriteAsArray_string_special extends TestCase {\n\n    \n    public void test_0() throws Exception {\n        Model model = new Model();\n        model.name = \"a\\\\bc\";\n        String text = JSON.toJSONString(model, SerializerFeature.BeanToArray);\n        Assert.assertEquals(\"[\\\"a\\\\\\\\bc\\\"]\", text);\n\n        Model model2 = JSON.parseObject(text, Model.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(model.name, model2.name);\n    }\n    \n    public void test_1() throws Exception {\n        Model model = new Model();\n        model.name = \"a\\\\bc\\\"\";\n        String text = JSON.toJSONString(model, SerializerFeature.BeanToArray);\n        Assert.assertEquals(\"[\\\"a\\\\\\\\bc\\\\\\\"\\\"]\", text);\n\n        Model model2 = JSON.parseObject(text, Model.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(model.name, model2.name);\n    }\n\n    public static class Model {\n\n        public String name;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_string_special_2.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport junit.framework.TestCase;\n\npublic class WriteAsArray_string_special_2 extends TestCase {\n\n    public void test_0() throws Exception {\n        Model model2 = JSON.parseObject(\"[\\\"abc\\\\0\\\\1\\\\2\\\\3\\\\4\\\\5\\\\6\\\\7\\\\b\\\\t\\\\n\\\\v\\\\f\\\\F\\\\r\\\\'\\\\/\\\\xFF\\\\u000B\\\"]\",\n                                        Model.class, Feature.SupportArrayToBean);\n        Assert.assertEquals(\"abc\\0\\1\\2\\3\\4\\5\\6\\7\\b\\t\\n\\u000B\\f\\f\\r'/\\u00FF\\u000B\", model2.name);\n    }\n\n    public void test_error() throws Exception {\n        Exception error = null;\n        try {\n            JSON.parseObject(\"[\\\"abc\\\\k\\\"]\", Model.class, Feature.SupportArrayToBean);\n        } catch (JSONException ex) {\n            error = ex;\n        }\n        Assert.assertNotNull(error);\n    }\n\n    public static class Model {\n\n        public String name;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeAsArray/WriteAsArray_string_special_Reader.java",
    "content": "package com.alibaba.json.bvt.writeAsArray;\n\nimport java.io.StringReader;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONReader;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class WriteAsArray_string_special_Reader extends TestCase {\n\n    \n    public void test_0() throws Exception {\n        Model model = new Model();\n        model.name = \"a\\\\bc\";\n        String text = JSON.toJSONString(model, SerializerFeature.BeanToArray);\n        Assert.assertEquals(\"[\\\"a\\\\\\\\bc\\\"]\", text);\n\n        JSONReader reader = new JSONReader(new StringReader(text));\n        reader.config(Feature.SupportArrayToBean, true);\n        Model model2 = reader.readObject(Model.class);\n        Assert.assertEquals(model.name, model2.name);\n        reader.close();\n    }\n    \n    public void test_1() throws Exception {\n        Model model = new Model();\n        model.name = \"a\\\\bc\\\"\";\n        String text = JSON.toJSONString(model, SerializerFeature.BeanToArray);\n        Assert.assertEquals(\"[\\\"a\\\\\\\\bc\\\\\\\"\\\"]\", text);\n\n        JSONReader reader = new JSONReader(new StringReader(text));\n        reader.config(Feature.SupportArrayToBean, true);\n        Model model2 = reader.readObject(Model.class);\n        Assert.assertEquals(model.name, model2.name);\n        reader.close();\n    }\n\n    public static class Model {\n\n        public String name;\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeClassName/MapTest.java",
    "content": "package com.alibaba.json.bvt.writeClassName;\n\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.TreeMap;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class MapTest extends TestCase {\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.writeClassName.MapTest\");\n    }\n\n    public void test_map() throws Exception {\n        VO vo = new VO();\n        vo.getValue().put(\"1\", \"AA\");\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.WriteClassName);\n        \n        System.out.println(text);\n        \n        VO vo2 = (VO) JSON.parse(text);\n        \n        Assert.assertEquals(vo.getValue(), vo2.getValue());\n    }\n    \n    public void test_map_2() throws Exception {\n        VO vo = new VO();\n        vo.setValue(new TreeMap<String, Object>());\n        vo.getValue().put(\"1\", \"AA\");\n        \n        String text = JSON.toJSONString(vo, SerializerFeature.WriteClassName);\n        \n        System.out.println(text);\n        \n        VO vo2 = (VO) JSON.parse(text);\n        \n        Assert.assertEquals(vo.getValue(), vo2.getValue());\n    }\n\n    private static class VO {\n\n        private Map<String, Object> value = new HashMap<String, Object>();\n\n        public Map<String, Object> getValue() {\n            return value;\n        }\n\n        public void setValue(Map<String, Object> value) {\n            this.value = value;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeClassName/StrictAutoTypeTest_0.java",
    "content": "package com.alibaba.json.bvt.writeClassName;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport junit.framework.TestCase;\n\npublic class StrictAutoTypeTest_0 extends TestCase {\n    private ParserConfig config = new ParserConfig();\n\n    public void test_0() throws Exception {\n        JSON.parseObject(\"{\\\"@type\\\":\\\"com.alibaba.fastjson.JSONObject\\\"}\", Object.class, config);\n        JSON.parseObject(\"{\\\"@type\\\":\\\"com.alibaba.fastjson.JSONObject\\\"}\", Object.class, config, Feature.SupportAutoType);\n    }\n\n    public void test_1() throws Exception {\n        JSON.parseObject(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.writeClassName.StrictAutoTypeTest_0$VO\\\"}\", Object.class, config, Feature.SupportAutoType);\n    }\n\n    public void test_2() throws Exception {\n        {\n            Exception error = null;\n            try {\n                JSON.parseObject(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.writeClassName.StrictAutoTypeTest_0$V1\\\"}\", Object.class, config);\n            } catch (JSONException ex) {\n                error = ex;\n            }\n            assertNotNull(error);\n        }\n        {\n            Exception error = null;\n            try {\n                JSON.parseObject(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.writeClassName.StrictAutoTypeTest_0$V1\\\"}\", Object.class, config);\n            } catch (JSONException ex) {\n                error = ex;\n            }\n            assertNotNull(error);\n        }\n    }\n\n    public void test_3() throws Exception {\n        int features = JSON.DEFAULT_PARSER_FEATURE | Feature.SupportAutoType.mask;\n        JSON.parse(\"{\\\"val\\\":{\\\"@type\\\":\\\"com.alibaba.json.bvt.writeClassName.StrictAutoTypeTest_0$V3\\\"}}\", config, features);\n    }\n\n    public static class VO {\n\n    }\n    public static class V1 {\n\n    }\n    public static class V2 {\n\n    }\n    public static class V3 {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeClassName/WriteClassNameTest.java",
    "content": "package com.alibaba.json.bvt.writeClassName;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class WriteClassNameTest extends TestCase {\n\n    protected void setUp() throws Exception {\n        com.alibaba.fastjson.parser.ParserConfig.getGlobalInstance().addAccept(this.getClass().getName() + \".\");\n    }\n\n    public void test_list() throws Exception {\n        A a = new A();\n        a.setB(new B());\n        String text = JSON.toJSONString(a, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest$A\\\",\\\"b\\\":{}}\", text);\n        \n        A a1 = (A) JSON.parse(text);\n        \n        Assert.assertNotNull(a1.getB());\n    }\n\n    private static class A {\n\n        private B b;\n\n        public B getB() {\n            return b;\n        }\n\n        public void setB(B b) {\n            this.b = b;\n        }\n\n    }\n\n    private static final class B {\n        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeClassName/WriteClassNameTest2.java",
    "content": "package com.alibaba.json.bvt.writeClassName;\n\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class WriteClassNameTest2 extends TestCase {\n\n    public void test_writeClassName() throws Exception {\n        A a = new A();\n        a.setB(new B());\n        String text = JSON.toJSONString(a, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest2$A\\\",\\\"b\\\":{\\\"id\\\":0}}\",\n                            text);\n\n        A a1 = (A) JSON.parse(text, Feature.SupportAutoType);\n\n        Assert.assertNotNull(a1.getB());\n    }\n\n    public static class A {\n\n        private B b;\n\n        public B getB() {\n            return b;\n        }\n\n        public void setB(B b) {\n            this.b = b;\n        }\n\n    }\n\n    public static final class B {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeClassName/WriteClassNameTest3.java",
    "content": "package com.alibaba.json.bvt.writeClassName;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic class WriteClassNameTest3 extends TestCase {\n\n\n    public void test_list() throws Exception {\n        Map root = new HashMap();\n        root.put(\"val\", new Model());\n\n        String str = JSON.toJSONString(root);\n        assertEquals(\"{\\\"val\\\":{\\\"@type\\\":\\\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest3$Model\\\"}}\", str);\n\n       JSON.parseObject(str);\n    }\n\n    @JSONType(serialzeFeatures = SerializerFeature.WriteClassName)\n    public static final class Model {\n        public String value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeClassName/WriteClassNameTest5.java",
    "content": "package com.alibaba.json.bvt.writeClassName;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 14/08/2017.\n */\npublic class WriteClassNameTest5 extends TestCase {\n    public void test_for_writeClassName() throws Exception {\n        Model model = new Model();\n        B b = new B();\n        b.id = 1001;\n        b.value = 2017;\n        model.a = b;\n\n        String str = JSON.toJSONString(model);\n        System.out.println(str);\n        assertEquals(\"{\\\"a\\\":{\\\"@type\\\":\\\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest5$B\\\",\\\"id\\\":1001,\\\"value\\\":2017}}\", str);\n\n        Model model2 = JSON.parseObject(str, Model.class);\n        assertTrue(model2.a instanceof B);\n    }\n\n    public void test_for_writeClassName_no() throws Exception {\n        Model model = new Model();\n        A a = new A();\n        a.id = 1001;\n        model.a = a;\n\n        String str = JSON.toJSONString(model);\n        System.out.println(str);\n        assertEquals(\"{\\\"a\\\":{\\\"id\\\":1001}}\", str);\n\n        Model model2 = JSON.parseObject(str, Model.class);\n        assertSame(A.class, model2.a.getClass());\n    }\n\n    public static class Model {\n        @JSONField(serialzeFeatures = SerializerFeature.WriteClassName)\n        public A a;\n    }\n\n    public static class A {\n        public int id;\n    }\n\n    public static class B extends A {\n        public int value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeClassName/WriteClassNameTest6.java",
    "content": "package com.alibaba.json.bvt.writeClassName;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 14/08/2017.\n */\npublic class WriteClassNameTest6 extends TestCase {\n    public void test_for_writeClassName() throws Exception {\n        String json = \"{\\\"@type\\\":\\\"java.util.HashMap\\\",\\\"@type\\\":\\\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest6$Model\\\",\\\"id\\\":1001}\";\n\n        Model model = (Model) JSON.parse(json);\n        assertNotNull(model);\n    }\n\n    public void test_for_writeClassName_1() throws Exception {\n        String json = \"{\\\"@type\\\":\\\"java.util.HashMap\\\",\\\"@type\\\":\\\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest6$Model\\\",\\\"id\\\":1001}\";\n\n        Model model = JSON.parseObject(json, Model.class);\n        assertNotNull(model);\n    }\n\n    @JSONType\n    public static class Model {\n        public int id;\n    }\n\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeClassName/WriteClassNameTest_Collection.java",
    "content": "package com.alibaba.json.bvt.writeClassName;\n\nimport java.util.Collection;\nimport java.util.Collections;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class WriteClassNameTest_Collection extends TestCase {\n    protected void setUp() throws Exception {\n        com.alibaba.fastjson.parser.ParserConfig.global.addAccept(\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest_Collection\");\n    }\n\n    public void test_list() throws Exception {\n        A a = new A();\n        a.setList(Collections.singletonList(new B()));\n        String text = JSON.toJSONString(a, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest_Collection$A\\\",\\\"list\\\":[{}]}\",\n                            text);\n\n        A a1 = (A) JSON.parse(text);\n\n        Assert.assertEquals(1, a1.getList().size());\n        Assert.assertTrue(a1.getList().iterator().next() instanceof B);\n    }\n\n    private static class A {\n\n        private Collection<B> list;\n\n        public Collection<B> getList() {\n            return list;\n        }\n\n        public void setList(Collection<B> list) {\n            this.list = list;\n        }\n\n    }\n\n    private static final class B {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeClassName/WriteClassNameTest_Collection2.java",
    "content": "package com.alibaba.json.bvt.writeClassName;\n\nimport java.util.Collection;\nimport java.util.Collections;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class WriteClassNameTest_Collection2 extends TestCase {\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest_Collection2\");\n    }\n\n    public void test_list() throws Exception {\n        A a = new A();\n        a.setList(Collections.singletonList(new B()));\n        String text = JSON.toJSONString(a, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest_Collection2$A\\\",\\\"list\\\":[{}]}\",\n                            text);\n\n        A a1 = (A) JSON.parse(text);\n\n        Assert.assertEquals(1, a1.getList().size());\n        Assert.assertTrue(a1.getList().iterator().next() instanceof B);\n    }\n\n    public static class A {\n\n        private Collection<B> list;\n\n        public Collection<B> getList() {\n            return list;\n        }\n\n        public void setList(Collection<B> list) {\n            this.list = list;\n        }\n\n    }\n\n    public static final class B {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeClassName/WriteClassNameTest_List.java",
    "content": "package com.alibaba.json.bvt.writeClassName;\n\nimport java.util.Collections;\nimport java.util.List;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class WriteClassNameTest_List extends TestCase {\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest_List\");\n    }\n\n    public void test_list() throws Exception {\n        A a = new A();\n        a.setList(Collections.singletonList(new B()));\n        String text = JSON.toJSONString(a, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest_List$A\\\",\\\"list\\\":[{}]}\",\n                            text);\n\n        A a1 = (A) JSON.parse(text);\n\n        Assert.assertEquals(1, a1.getList().size());\n        Assert.assertTrue(a1.getList().get(0) instanceof B);\n    }\n\n    private static class A {\n\n        private List<B> list;\n\n        public List<B> getList() {\n            return list;\n        }\n\n        public void setList(List<B> list) {\n            this.list = list;\n        }\n\n    }\n\n    private static final class B {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeClassName/WriteClassNameTest_List2.java",
    "content": "package com.alibaba.json.bvt.writeClassName;\n\nimport java.util.Collections;\nimport java.util.List;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class WriteClassNameTest_List2 extends TestCase {\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest_List2\");\n    }\n\n    public void test_list() throws Exception {\n        A a = new A();\n        a.setList(Collections.singletonList(new B()));\n        String text = JSON.toJSONString(a, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest_List2$A\\\",\\\"list\\\":[{\\\"id\\\":0}]}\",\n                            text);\n\n        A a1 = (A) JSON.parse(text);\n\n        Assert.assertEquals(1, a1.getList().size());\n        Assert.assertTrue(a1.getList().get(0) instanceof B);\n    }\n\n    public static class A {\n\n        private List<B> list;\n\n        public List<B> getList() {\n            return list;\n        }\n\n        public void setList(List<B> list) {\n            this.list = list;\n        }\n\n    }\n\n    public static final class B {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeClassName/WriteClassNameTest_List3.java",
    "content": "package com.alibaba.json.bvt.writeClassName;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.util.ArrayList;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Set;\n\npublic class WriteClassNameTest_List3 extends TestCase {\n\n    public void test_list() throws Exception {\n        Model model = new Model();\n        List tables = new ArrayList();\n        tables.add(new ExtTable(1001));\n        tables.add(new Table());\n        model.setTables(tables);\n\n        String json = JSON.toJSONString(model);\n        assertEquals(\"{\\\"tables\\\":[{\\\"@type\\\":\\\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest_List3$ExtTable\\\",\\\"id\\\":1001},{}]}\", json);\n\n        Model model2 = JSON.parseObject(json, Model.class);\n        assertEquals(ExtTable.class, model2.getTables().iterator().next().getClass());\n    }\n\n    public static class Model {\n        @JSONField(serialzeFeatures = SerializerFeature.WriteClassName)\n        private List<? extends Table> tables;\n\n        public List<? extends Table> getTables() {\n            return tables;\n        }\n\n        public void setTables(List<? extends Table> tables) {\n            this.tables = tables;\n        }\n    }\n\n    public static class Table {\n\n    }\n\n    public static class ExtTable extends Table {\n        public int id;\n\n        public ExtTable() {\n\n        }\n\n        public ExtTable(int id) {\n            this.id = id;\n        }\n\n        @Override\n        public boolean equals(Object o) {\n            if (this == o) return true;\n            if (o == null || getClass() != o.getClass()) return false;\n\n            ExtTable extTable = (ExtTable) o;\n\n            return id == extTable.id;\n        }\n\n        @Override\n        public int hashCode() {\n            return id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeClassName/WriteClassNameTest_Map.java",
    "content": "package com.alibaba.json.bvt.writeClassName;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\nimport org.junit.Assert;\n\nimport java.util.*;\n\npublic class WriteClassNameTest_Map extends TestCase {\n\n    public void test_list() throws Exception {\n        Model model = new Model();\n        Map tables = new LinkedHashMap();\n        tables.put(\"1001\", new ExtTable(1001));\n        tables.put(\"1002\", new Table());\n        model.setTables(tables);\n\n        String json = JSON.toJSONString(model);\n        assertEquals(\"{\\\"tables\\\":{\\\"1001\\\":{\\\"@type\\\":\\\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest_Map$ExtTable\\\",\\\"id\\\":1001},\\\"1002\\\":{}}}\", json);\n\n        JSONObject jsonObject = JSON.parseObject(json, Feature.IgnoreAutoType);\n        assertEquals(\"{\\\"tables\\\":{\\\"1002\\\":{},\\\"1001\\\":{\\\"id\\\":1001}}}\", jsonObject.toJSONString());\n\n        Model model2 = JSON.parseObject(json, Model.class);\n        assertEquals(ExtTable.class, model2.getTables().get(\"1001\").getClass());\n    }\n\n    public static class Model {\n        @JSONField(serialzeFeatures = SerializerFeature.WriteClassName)\n        private Map<String, ? extends Table> tables;\n\n        public Map<String, ? extends Table> getTables() {\n            return tables;\n        }\n\n        public void setTables(Map<String, ? extends Table> tables) {\n            this.tables = tables;\n        }\n    }\n\n    public static class Table {\n\n    }\n\n    public static class ExtTable extends Table {\n        public int id;\n\n        public ExtTable() {\n\n        }\n\n        public ExtTable(int id) {\n            this.id = id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeClassName/WriteClassNameTest_Set.java",
    "content": "package com.alibaba.json.bvt.writeClassName;\n\nimport java.util.ArrayList;\nimport java.util.LinkedHashSet;\nimport java.util.Set;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class WriteClassNameTest_Set extends TestCase {\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest_Set\");\n    }\n\n    public void test_list() throws Exception {\n        A a = new A();\n        Set<B> set = new LinkedHashSet<B>();\n        set.add(new B());\n        set.add(new B1());\n        a.setList(set);\n        String text = JSON.toJSONString(a, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest_Set$A\\\",\\\"list\\\":Set[{},{\\\"@type\\\":\\\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest_Set$B1\\\"}]}\",\n                            text);\n\n        A a1 = (A) JSON.parse(text);\n\n        Assert.assertEquals(2, a1.getList().size());\n    }\n\n    public static class A {\n\n        private Set<B> list;\n\n        public Set<B> getList() {\n            return list;\n        }\n\n        public void setList(Set<B> list) {\n            this.list = list;\n        }\n\n    }\n\n    public static class B {\n\n    }\n\n    public static class B1 extends B {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeClassName/WriteClassNameTest_Set2.java",
    "content": "package com.alibaba.json.bvt.writeClassName;\n\nimport java.util.ArrayList;\nimport java.util.LinkedHashSet;\nimport java.util.Set;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class WriteClassNameTest_Set2 extends TestCase {\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest_Set2\");\n    }\n\n    public void test_list() throws Exception {\n        A a = new A();\n        Set<B> set = new LinkedHashSet<B>();\n        set.add(new B());\n        set.add(new B1());\n        a.setList(set);\n        String text = JSON.toJSONString(a, SerializerFeature.WriteClassName);\n        System.out.println(text);\n//        Assert.assertEquals(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest_Set2$A\\\",\\\"list\\\":[{},{\\\"@type\\\":\\\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest_Set2$B1\\\"}]}\",\n//                            text);\n\n        ParserConfig parserConfig = new ParserConfig();\n        parserConfig.addAccept(\"com.alibaba.json.bvt\");\n        A a1 = (A) JSON.parseObject(text, Object.class, parserConfig);\n\n        Assert.assertEquals(2, a1.getList().size());\n        Assert.assertTrue(\"B\", new ArrayList<B>(a1.getList()).get(0) instanceof B || new ArrayList<B>(a1.getList()).get(0) instanceof B1);\n        Assert.assertTrue(\"B1\", new ArrayList<B>(a1.getList()).get(1) instanceof B || new ArrayList<B>(a1.getList()).get(1) instanceof B1);\n    }\n\n    private static class A {\n\n        private Set<B> list;\n\n        public Set<B> getList() {\n            return list;\n        }\n\n        public void setList(Set<B> list) {\n            this.list = list;\n        }\n\n    }\n\n    private static class B {\n\n    }\n\n    private static class B1 extends B {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeClassName/WriteClassNameTest_Set3.java",
    "content": "package com.alibaba.json.bvt.writeClassName;\n\nimport java.util.ArrayList;\nimport java.util.LinkedHashSet;\nimport java.util.Set;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class WriteClassNameTest_Set3 extends TestCase {\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest_Set3\");\n    }\n\n    public void test_list() throws Exception {\n        A a = new A();\n        LinkedHashSet<B> set = new LinkedHashSet<B>();\n        set.add(new B());\n        set.add(new B1());\n        a.setList(set);\n        String text = JSON.toJSONString(a, SerializerFeature.WriteClassName);\n        System.out.println(text);\n//        Assert.assertEquals(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest_Set3$A\\\",\\\"list\\\":[{},{\\\"@type\\\":\\\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest_Set3$B1\\\"}]}\",\n//                            text);\n\n        A a1 = (A) JSON.parse(text);\n\n        Assert.assertEquals(2, a1.getList().size());\n        Assert.assertTrue(new ArrayList<B>(a1.getList()).get(0) instanceof B);\n        Assert.assertTrue(new ArrayList<B>(a1.getList()).get(1) instanceof B1);\n    }\n\n    private static class A {\n\n        private LinkedHashSet<B> list;\n\n        public LinkedHashSet<B> getList() {\n            return list;\n        }\n\n        public void setList(LinkedHashSet<B> list) {\n            this.list = list;\n        }\n\n    }\n\n    private static class B {\n\n    }\n\n    private static class B1 extends B {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeClassName/WriteClassNameTest_Set4.java",
    "content": "package com.alibaba.json.bvt.writeClassName;\n\nimport java.util.ArrayList;\nimport java.util.LinkedHashSet;\nimport java.util.Set;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class WriteClassNameTest_Set4 extends TestCase {\n    protected void setUp() throws Exception {\n        ParserConfig.global.addAccept(\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest_Set4\");\n    }\n\n    public void test_list() throws Exception {\n        A a = new A();\n        LinkedHashSet<B> set = new LinkedHashSet<B>();\n        set.add(new B());\n        set.add(new B1());\n        a.setList(set);\n        String text = JSON.toJSONString(a, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest_Set4$A\\\",\\\"list\\\":Set[{\\\"valueB\\\":100},{\\\"@type\\\":\\\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest_Set4$B1\\\",\\\"valueB\\\":100,\\\"valueB1\\\":200}]}\",\n                            text);\n\n        A a1 = (A) JSON.parse(text);\n\n        Assert.assertEquals(2, a1.getList().size());\n        Assert.assertTrue(new ArrayList<B>(a1.getList()).get(0) instanceof B);\n        Assert.assertTrue(new ArrayList<B>(a1.getList()).get(1) instanceof B1);\n    }\n\n    public static class A {\n\n        private LinkedHashSet<B> list;\n\n        public LinkedHashSet<B> getList() {\n            return list;\n        }\n\n        public void setList(LinkedHashSet<B> list) {\n            this.list = list;\n        }\n\n    }\n\n    public static class B {\n        private int valueB = 100;\n        public int getValueB() {\n            return valueB;\n        }\n    }\n\n    public static class B1 extends B {\n        private int valueB1 = 200;\n        public int getValueB1() {\n            return valueB1;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeClassName/WriteClassNameTest_Set5.java",
    "content": "package com.alibaba.json.bvt.writeClassName;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\nimport java.util.*;\n\npublic class WriteClassNameTest_Set5 extends TestCase {\n\n    public void test_list() throws Exception {\n        Model model = new Model();\n        LinkedHashSet tables = new LinkedHashSet();\n        tables.add(new ExtTable(1001));\n        tables.add(new Table());\n        model.setTables(tables);\n\n        String json = JSON.toJSONString(model);\n        assertEquals(\"{\\\"tables\\\":[{\\\"@type\\\":\\\"com.alibaba.json.bvt.writeClassName.WriteClassNameTest_Set5$ExtTable\\\",\\\"id\\\":1001},{}]}\", json);\n\n        Model model2 = JSON.parseObject(json, Model.class);\n        assertEquals(ExtTable.class, model2.getTables().iterator().next().getClass());\n\n        JSONObject jsonObject = JSON.parseObject(json, Feature.IgnoreAutoType);\n        assertEquals(\"{\\\"tables\\\":[{\\\"id\\\":1001},{}]}\", jsonObject.toJSONString());\n    }\n\n    public static class Model {\n        @JSONField(serialzeFeatures = SerializerFeature.WriteClassName)\n        private LinkedHashSet<? extends Table> tables;\n\n        public LinkedHashSet<? extends Table> getTables() {\n            return tables;\n        }\n\n        public void setTables(LinkedHashSet<? extends Table> tables) {\n            this.tables = tables;\n        }\n    }\n\n    public static class Table {\n\n    }\n\n    public static class ExtTable extends Table {\n        public int id;\n\n        public ExtTable() {\n\n        }\n\n        public ExtTable(int id) {\n            this.id = id;\n        }\n\n        @Override\n        public boolean equals(Object o) {\n            if (this == o) return true;\n            if (o == null || getClass() != o.getClass()) return false;\n\n            ExtTable extTable = (ExtTable) o;\n\n            return id == extTable.id;\n        }\n\n        @Override\n        public int hashCode() {\n            return id;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeClassName/WriteClassNameTest_bytes.java",
    "content": "package com.alibaba.json.bvt.writeClassName;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.fastjson.util.IOUtils;\nimport junit.framework.TestCase;\n\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.List;\n\n/**\n * Created by wenshao on 15/05/2017.\n */\npublic class WriteClassNameTest_bytes extends TestCase {\n    public void test_for_bytes() throws Exception {\n        List<Object> list = new ArrayList<Object>();\n        list.add(\"a\");\n\n        byte[] bytes = hex(\"84C1F969587F5FD1942148EE9D36A0FB\");\n        String hex = hex(bytes);\n\n        byte[] bytes_2 = hex(hex);\n        String hex_2 = hex(bytes_2);\n\n        assertEquals(hex, hex_2);\n        System.out.println(hex);\n        assertEquals(\"84C1F969587F5FD1942148EE9D36A0FB\", hex);\n\n        list.add(bytes);\n\n        String str = JSON.toJSONString(list, SerializerFeature.WriteClassName);\n\n        System.out.println(str);\n        assertEquals(\"[\\\"a\\\",x'84C1F969587F5FD1942148EE9D36A0FB']\", str);\n\n        JSONArray array = (JSONArray) JSON.parse(str);\n\n        assertEquals(\"a\", array.get(0));\n        assertTrue(array.get(1) instanceof byte[]);\n\n        // list.add(new )\n    }\n\n    public void test_bytes2() throws Exception {\n        JSON.parseArray(\"[x'84C1F969587F5FD1942148EE9D36A0FB']\");\n    }\n\n    private static final byte[] hexBytes = new byte[71];\n    private static final char[] hexChars = \"0123456789ABCDEF\".toCharArray();\n\n    static {\n        Arrays.fill(hexBytes, (byte) -1);\n        for (int i = '9'; i >= '0'; i--) {\n            hexBytes[i] = (byte) (i - '0');\n        }\n        for (int i = 'F'; i >= 'A'; i--) {\n            hexBytes[i] = (byte) (i - 'A' + 10);\n        }\n    }\n\n    /**\n     * Encode a byte array to hex string\n     *\n     * @param bytes array of byte to encode\n     * @return return encoded string\n     */\n    public static String hex(byte[] bytes) {\n        if (bytes == null) {\n            return null;\n        }\n\n        int bytesLen = bytes.length;\n        char[] chars = new char[bytesLen * 2];\n        for (int i = 0; i < bytes.length; i++) {\n            int a = bytes[i] & 0xFF;\n            int b0 = a >> 4;\n            int b1 = a & 0xf;\n\n            chars[i * 2] = (char) (b0 + (b0 < 10 ? 48 : 55)); //hexChars[b0];\n            chars[i * 2 + 1] = (char) (b1 + (b1 < 10 ? 48 : 55));\n        }\n        return new String(chars);\n    }\n\n    /**\n     * Decode hex string to a byte array\n     *\n     * @param hex encoded string\n     * @return return array of byte to encode\n     */\n    public static byte[] hex(String hex) {\n        if (hex == null)\n            return null;\n\n        int len = hex.length();\n        if (len % 2 != 0)\n            return null;\n\n        char[] chars = hex.toCharArray();\n        byte[] bytes = new byte[len / 2];\n        for (int i = 0; i < bytes.length; i++) {\n            char c0 = chars[i * 2];\n            char c1 = chars[i * 2 + 1];\n            int b0 = c0 - (c0 <= 57 ? 48 : 55);\n            int b1 = c1 - (c1 <= 57 ? 48 : 55);\n            bytes[i] = (byte) ((b0 << 4) | b1);\n        }\n        return bytes;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvt/writeClassName/WriteDuplicateType.java",
    "content": "package com.alibaba.json.bvt.writeClassName;\n\nimport java.util.HashMap;\nimport java.util.LinkedHashMap;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport junit.framework.TestCase;\n\npublic class WriteDuplicateType extends TestCase {\n\n    public void test_dupType() throws Exception {\n        DianDianCart cart = new DianDianCart();\n        cart.setId(1001);\n        \n        LinkedHashMap<String, JSONObject> cartMap = new LinkedHashMap<String, JSONObject>();\n        \n        JSONObject obj = new JSONObject();\n        obj.put(\"id\", 1001);\n        obj.put(JSON.DEFAULT_TYPE_KEY, \"com.alibaba.json.bvt.writeClassName.WriteDuplicateType$DianDianCart\");\n        cartMap.put(\"1001\", obj);\n        \n        String text1 = JSON.toJSONString(cartMap, SerializerFeature.WriteClassName);\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"java.util.LinkedHashMap\\\",\\\"1001\\\":{\\\"@type\\\":\\\"com.alibaba.json.bvt.writeClassName.WriteDuplicateType$DianDianCart\\\",\\\"id\\\":1001}}\", text1);\n        \n    }\n    \n    public void test_dupType2() throws Exception {\n        DianDianCart cart = new DianDianCart();\n        cart.setId(1001);\n        \n        LinkedHashMap<String, HashMap<String, Object>> cartMap = new LinkedHashMap<String, HashMap<String, Object>>();\n        \n        HashMap<String, Object> obj = new LinkedHashMap<String, Object>();\n        obj.put(\"id\", 1001);\n        obj.put(JSON.DEFAULT_TYPE_KEY, \"com.alibaba.json.bvt.writeClassName.WriteDuplicateType$DianDianCart\");\n        cartMap.put(\"1001\", obj);\n        \n        String text1 = JSON.toJSONString(cartMap, SerializerFeature.WriteClassName);\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"java.util.LinkedHashMap\\\",\\\"1001\\\":{\\\"id\\\":1001,\\\"@type\\\":\\\"com.alibaba.json.bvt.writeClassName.WriteDuplicateType$DianDianCart\\\"}}\", text1);\n        \n    }\n    \n    \n    public void test_dupType3() throws Exception {\n        DianDianCart cart = new DianDianCart();\n        cart.setId(1001);\n        \n        LinkedHashMap<String, LinkedHashMap<String, Object>> cartMap = new LinkedHashMap<String, LinkedHashMap<String, Object>>();\n        \n        LinkedHashMap<String, Object> obj = new LinkedHashMap<String, Object>();\n        obj.put(JSON.DEFAULT_TYPE_KEY, \"com.alibaba.json.bvt.writeClassName.WriteDuplicateType$DianDianCart\");\n        obj.put(\"id\", 1001);\n        cartMap.put(\"1001\", obj);\n        \n        String text1 = JSON.toJSONString(cartMap, SerializerFeature.WriteClassName);\n        Assert.assertEquals(\"{\\\"@type\\\":\\\"java.util.LinkedHashMap\\\",\\\"1001\\\":{\\\"@type\\\":\\\"com.alibaba.json.bvt.writeClassName.WriteDuplicateType$DianDianCart\\\",\\\"id\\\":1001}}\", text1);\n        \n    }\n\n    public static class DianDianCart {\n\n        private int id;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/AccessHttpConfigModel.java",
    "content": "package com.alibaba.json.bvtVO;\n\nimport java.io.Serializable;\n\n\npublic class AccessHttpConfigModel {\n    /**\n     * 上传文件的配置.\n     *\n     * @author wangwb (mailto:wangwb@primeton.com)\n     */\n    \n    public static class FileUploadConfig implements Serializable{\n        private String tempDir;\n\n        private int maxSize;\n\n        private int inMemorySize;\n\n        private String exclude;\n\n        /**\n         * 获取不允许上传的文件类型.<br>\n         * 多个文件类型之间用','分割.\n         * @return 获取不允许上传的文件类型.\n         */\n        public String getExclude() {\n            return exclude;\n        }\n\n        /**\n         * 设置不允许上传的文件类型.<br>\n         * 多个文件类型之间用','分割.\n         *\n         * @param exclude　不允许上传的文件类型.\n         */\n        public void setExclude(String exclude) {\n            this.exclude = exclude;\n        }\n\n        /**\n         * 获取上传文件时在内存中最大的字节数.\n         *\n         * @return 上传文件时在内存中最大的字节数.\n         */\n        public int getInMemorySize() {\n            return inMemorySize;\n        }\n\n        /**\n         * 设置上传文件时在内存中最大的字节数.\n         *\n         * @param inMemorySize\n         *            上传文件时在内存中最大的字节数.\n         */\n        public void setInMemorySize(int inMemorySize) {\n            this.inMemorySize = inMemorySize;\n        }\n\n        /**\n         * 获取上传文件的最大字节数.\n         *\n         * @return 上传文件的最大字节数.\n         */\n        public int getMaxSize() {\n            return maxSize;\n        }\n\n        /**\n         * 设置上传文件的最大字节数.\n         *\n         * @param maxSize\n         *            上传文件的最大字节数.\n         */\n        public void setMaxSize(int maxSize) {\n            this.maxSize = maxSize;\n        }\n\n        /**\n         * 获取上传文件的保存的临时目录.\n         *\n         * @return 上传文件的保存的临时目录.\n         */\n        public String getTempDir() {\n            return tempDir;\n        }\n\n        /**\n         * 设置上传文件的保存的临时目录.\n         *\n         * @param tempDir\n         *            上传文件的保存的临时目录.\n         */\n        public void setTempDir(String tempDir) {\n            this.tempDir = tempDir;\n        }\n    }\n\n    private String encoding;\n\n    private FileUploadConfig fileUploadConfig;\n\n    /**\n     * 获取HttpServletRequest请求的字符集设置\n     *\n     * @return HttpServletRequest请求的字符集设置\n     */\n    public String getEncoding() {\n        return encoding;\n    }\n\n    /**\n     * 设置HttpServletRequest请求的字符集设置\n     *\n     * @param encoding HttpServletRequest请求的字符集设置\n     */\n    public void setEncoding(String encoding) {\n        this.encoding = encoding;\n    }\n\n    /**\n     * 获取上传文件的配置.\n     * @return 上传文件的配置.\n     */\n    public FileUploadConfig getFileUploadConfig() {\n        return fileUploadConfig;\n    }\n\n    /**\n     * 设置上传文件的配置.\n     * @param fileUploadConfig 上传文件的配置.\n     */\n    public void setFileUploadConfig(FileUploadConfig fileUploadConfig) {\n        this.fileUploadConfig = fileUploadConfig;\n    }\n    \n    private int suspend=10;\n\n    /**\n     * 获取请求的挂起的等待时间.<br>\n     * @return 获取请求的挂起的等待时间.\n     */\n    public int getSuspend() {\n        return suspend;\n    }\n\n    /**\n     * 设置请求挂起的等待时间.<br>\n     * @param suspend 请求挂起的等待时间.\n     */\n    public void setSuspend(int suspend) {\n        this.suspend = suspend;\n    }\n    \n    private String loginExcludeUrls;\n    \n    private String loginErrorPage;\n    \n    private boolean portal;\n\n    private String loginIncludeUrls;\n\n    public String getLoginErrorPage() {\n        return loginErrorPage;\n    }\n\n    public void setLoginErrorPage(String loginErrorPage) {\n        this.loginErrorPage = loginErrorPage;\n    }\n\n    public String getLoginExcludeUrls() {\n        return loginExcludeUrls;\n    }\n\n    public void setLoginExcludeUrls(String loginExcludeUrls) {\n        this.loginExcludeUrls = loginExcludeUrls;\n    }\n\n    public boolean isPortal() {\n        return portal;\n    }\n\n    public void setPortal(boolean portal) {\n        this.portal = portal;\n    }\n\n    public String getLoginIncludeUrls() {\n        return loginIncludeUrls;\n    }\n\n    public void setLoginIncludeUrls(String loginIncludeUrls) {\n        this.loginIncludeUrls = loginIncludeUrls;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/ArgCheckTest.java",
    "content": "package com.alibaba.json.bvtVO;\n\nimport org.junit.Test;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class ArgCheckTest {\n\n    @Test\n    public void testJSON() {\n        TestDTO dto = new TestDTO();\n        dto.setChannel(\"channel\");\n        TestDTO[] dtos = new TestDTO[2];\n        dtos[0] = dto;\n        dtos[1] = dto;\n        JSON.toJSONString(dtos);\n    }\n\n    public static class TestDTO {\n\n        private String       channel;\n        private String       txCode;\n\n\n        public String getChannel() {\n            return channel;\n        }\n\n        public void setChannel(String channel) {\n            this.channel = channel;\n        }\n\n        public String getTxCode() {\n            return txCode;\n        }\n\n        public void setTxCode(String txCode) {\n            this.txCode = txCode;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/AuditStatusType.java",
    "content": "package com.alibaba.json.bvtVO;\n\n/**\n * Created by wenshao on 10/02/2017.\n */\npublic enum AuditStatusType implements IntEnum<AuditStatusType> {\n    AUDIT_FAILURE(0, \"审核失败\", \"FAILED\"),\n    AUDIT_SUCCESS(1, \"成功\", \"SUCCEED\"),\n    AUDIT_NO_SUBMIT(2, \"未实名认证\", \"NONAUDIT\"),\n    AUDIT_SUBMIT(3, \"审核中\", \"AUDITING\");\n\n    private int code;\n    private String desc;\n    private String enCode;\n\n    private AuditStatusType(int code) {\n        this.code = code;\n    }\n\n    private AuditStatusType(int code, String desc, String enCode) {\n        this.code = code;\n        this.desc = desc;\n        this.enCode = enCode;\n    }\n\n    public static AuditStatusType valuesOf(String enCode) {\n        AuditStatusType[] arr$ = values();\n        int len$ = arr$.length;\n\n        for(int i$ = 0; i$ < len$; ++i$) {\n            AuditStatusType temp = arr$[i$];\n            if(temp.getEnCode().equals(enCode)) {\n                return temp;\n            }\n        }\n\n        return null;\n    }\n\n    public String getDesc() {\n        return this.desc;\n    }\n\n    public String getEnCode() {\n        return this.enCode;\n    }\n\n    public int getCode() {\n        return this.code;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/Bean.java",
    "content": "package com.alibaba.json.bvtVO;\r\n\r\npublic class Bean {\r\n    private Integer id;\r\n    private String  name;\r\n    private String  desc;\r\n\r\n    public Integer getId() {\r\n        return id;\r\n    }\r\n\r\n    public void setId(Integer id) {\r\n        this.id = id;\r\n    }\r\n\r\n    public String getName() {\r\n        return name;\r\n    }\r\n\r\n    public void setName(String name) {\r\n        this.name = name;\r\n    }\r\n\r\n    public String getDesc() {\r\n        return desc;\r\n    }\r\n\r\n    public void setDesc(String desc) {\r\n        this.desc = desc;\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/BigClass.java",
    "content": "package com.alibaba.json.bvtVO;\n\npublic class BigClass {\n    public  String  field1  ;\n    public  String  field2  ;\n    public  String  field3  ;\n    public  String  field4  ;\n    public  String  field5  ;\n    public  String  field6  ;\n    public  String  field7  ;\n    public  String  field8  ;\n    public  String  field9  ;\n    public  String  field10 ;\n    public  String  field11 ;\n    public  String  field12 ;\n    public  String  field13 ;\n    public  String  field14 ;\n    public  String  field15 ;\n    public  String  field16 ;\n    public  String  field17 ;\n    public  String  field18 ;\n    public  String  field19 ;\n    public  String  field20 ;\n    public  String  field21 ;\n    public  String  field22 ;\n    public  String  field23 ;\n    public  String  field24 ;\n    public  String  field25 ;\n    public  String  field26 ;\n    public  String  field27 ;\n    public  String  field28 ;\n    public  String  field29 ;\n    public  String  field30 ;\n    public  String  field31 ;\n    public  String  field32 ;\n    public  String  field33 ;\n    public  String  field34 ;\n    public  String  field35 ;\n    public  String  field36 ;\n    public  String  field37 ;\n    public  String  field38 ;\n    public  String  field39 ;\n    public  String  field40 ;\n    public  String  field41 ;\n    public  String  field42 ;\n    public  String  field43 ;\n    public  String  field44 ;\n    public  String  field45 ;\n    public  String  field46 ;\n    public  String  field47 ;\n    public  String  field48 ;\n    public  String  field49 ;\n    public  String  field50 ;\n    public  String  field51 ;\n    public  String  field52 ;\n    public  String  field53 ;\n    public  String  field54 ;\n    public  String  field55 ;\n    public  String  field56 ;\n    public  String  field57 ;\n    public  String  field58 ;\n    public  String  field59 ;\n    public  String  field60 ;\n    public  String  field61 ;\n    public  String  field62 ;\n    public  String  field63 ;\n    public  String  field64 ;\n    public  String  field65 ;\n    public  String  field66 ;\n    public  String  field67 ;\n    public  String  field68 ;\n    public  String  field69 ;\n    public  String  field70 ;\n    public  String  field71 ;\n    public  String  field72 ;\n    public  String  field73 ;\n    public  String  field74 ;\n    public  String  field75 ;\n    public  String  field76 ;\n    public  String  field77 ;\n    public  String  field78 ;\n    public  String  field79 ;\n    public  String  field80 ;\n    public  String  field81 ;\n    public  String  field82 ;\n    public  String  field83 ;\n    public  String  field84 ;\n    public  String  field85 ;\n    public  String  field86 ;\n    public  String  field87 ;\n    public  String  field88 ;\n    public  String  field89 ;\n    public  String  field90 ;\n    public  String  field91 ;\n    public  String  field92 ;\n    public  String  field93 ;\n    public  String  field94 ;\n    public  String  field95 ;\n    public  String  field96 ;\n    public  String  field97 ;\n    public  String  field98 ;\n    public  String  field99 ;\n    public  String  field100    ;\n    public  String  field101    ;\n    public  String  field102    ;\n    public  String  field103    ;\n    public  String  field104    ;\n    public  String  field105    ;\n    public  String  field106    ;\n    public  String  field107    ;\n    public  String  field108    ;\n    public  String  field109    ;\n    public  String  field110    ;\n    public  String  field111    ;\n    public  String  field112    ;\n    public  String  field113    ;\n    public  String  field114    ;\n    public  String  field115    ;\n    public  String  field116    ;\n    public  String  field117    ;\n    public  String  field118    ;\n    public  String  field119    ;\n    public  String  field120    ;\n    public  String  field121    ;\n    public  String  field122    ;\n    public  String  field123    ;\n    public  String  field124    ;\n    public  String  field125    ;\n    public  String  field126    ;\n    public  String  field127    ;\n    public  String  field128    ;\n    public  String  field129    ;\n    public  String  field130    ;\n    public  String  field131    ;\n    public  String  field132    ;\n    public  String  field133    ;\n    public  String  field134    ;\n    public  String  field135    ;\n    public  String  field136    ;\n    public  String  field137    ;\n    public  String  field138    ;\n    public  String  field139    ;\n    public  String  field140    ;\n    public  String  field141    ;\n    public  String  field142    ;\n    public  String  field143    ;\n    public  String  field144    ;\n    public  String  field145    ;\n    public  String  field146    ;\n    public  String  field147    ;\n    public  String  field148    ;\n    public  String  field149    ;\n    public  String  field150    ;\n    public  String  field151    ;\n    public  String  field152    ;\n    public  String  field153    ;\n    public  String  field154    ;\n    public  String  field155    ;\n    public  String  field156    ;\n    public  String  field157    ;\n    public  String  field158    ;\n    public  String  field159    ;\n    public  String  field160    ;\n    public  String  field161    ;\n    public  String  field162    ;\n    public  String  field163    ;\n    public  String  field164    ;\n    public  String  field165    ;\n    public  String  field166    ;\n    public  String  field167    ;\n    public  String  field168    ;\n    public  String  field169    ;\n    public  String  field170    ;\n    public  String  field171    ;\n    public  String  field172    ;\n    public  String  field173    ;\n    public  String  field174    ;\n    public  String  field175    ;\n    public  String  field176    ;\n    public  String  field177    ;\n    public  String  field178    ;\n    public  String  field179    ;\n    public  String  field180    ;\n    public  String  field181    ;\n    public  String  field182    ;\n    public  String  field183    ;\n    public  String  field184    ;\n    public  String  field185    ;\n    public  String  field186    ;\n    public  String  field187    ;\n    public  String  field188    ;\n    public  String  field189    ;\n    public  String  field190    ;\n    public  String  field191    ;\n    public  String  field192    ;\n    public  String  field193    ;\n    public  String  field194    ;\n    public  String  field195    ;\n    public  String  field196    ;\n    public  String  field197    ;\n    public  String  field198    ;\n    public  String  field199    ;\n    public  String  field200    ;\n    public  String  field201    ;\n    public  String  field202    ;\n    public  String  field203    ;\n    public  String  field204    ;\n    public  String  field205    ;\n    public  String  field206    ;\n    public  String  field207    ;\n    public  String  field208    ;\n    public  String  field209    ;\n    public  String  field210    ;\n    public  String  field211    ;\n    public  String  field212    ;\n    public  String  field213    ;\n    public  String  field214    ;\n    public  String  field215    ;\n    public  String  field216    ;\n    public  String  field217    ;\n    public  String  field218    ;\n    public  String  field219    ;\n    public  String  field220    ;\n    public  String  field221    ;\n    public  String  field222    ;\n    public  String  field223    ;\n    public  String  field224    ;\n    public  String  field225    ;\n    public  String  field226    ;\n    public  String  field227    ;\n    public  String  field228    ;\n    public  String  field229    ;\n    public  String  field230    ;\n    public  String  field231    ;\n    public  String  field232    ;\n    public  String  field233    ;\n    public  String  field234    ;\n    public  String  field235    ;\n    public  String  field236    ;\n    public  String  field237    ;\n    public  String  field238    ;\n    public  String  field239    ;\n    public  String  field240    ;\n    public  String  field241    ;\n    public  String  field242    ;\n    public  String  field243    ;\n    public  String  field244    ;\n    public  String  field245    ;\n    public  String  field246    ;\n    public  String  field247    ;\n    public  String  field248    ;\n    public  String  field249    ;\n    public  String  field250    ;\n    public  String  field251    ;\n    public  String  field252    ;\n    public  String  field253    ;\n    public  String  field254    ;\n    public  String  field255    ;\n    public  String  field256    ;\n    public  String  field257    ;\n    public  String  field258    ;\n    public  String  field259    ;\n    public  String  field260    ;\n    public  String  field261    ;\n    public  String  field262    ;\n    public  String  field263    ;\n    public  String  field264    ;\n    public  String  field265    ;\n    public  String  field266    ;\n    public  String  field267    ;\n    public  String  field268    ;\n    public  String  field269    ;\n    public  String  field270    ;\n    public  String  field271    ;\n    public  String  field272    ;\n    public  String  field273    ;\n    public  String  field274    ;\n    public  String  field275    ;\n    public  String  field276    ;\n    public  String  field277    ;\n    public  String  field278    ;\n    public  String  field279    ;\n    public  String  field280    ;\n    public  String  field281    ;\n    public  String  field282    ;\n    public  String  field283    ;\n    public  String  field284    ;\n    public  String  field285    ;\n    public  String  field286    ;\n    public  String  field287    ;\n    public  String  field288    ;\n    public  String  field289    ;\n    public  String  field290    ;\n    public  String  field291    ;\n    public  String  field292    ;\n    public  String  field293    ;\n    public  String  field294    ;\n    public  String  field295    ;\n    public  String  field296    ;\n    public  String  field297    ;\n    public  String  field298    ;\n    public  String  field299    ;\n    public  String  field300    ;\n    public  String  field301    ;\n    public  String  field302    ;\n    public  String  field303    ;\n    public  String  field304    ;\n    public  String  field305    ;\n    public  String  field306    ;\n    public  String  field307    ;\n    public  String  field308    ;\n    public  String  field309    ;\n    public  String  field310    ;\n    public  String  field311    ;\n    public  String  field312    ;\n    public  String  field313    ;\n    public  String  field314    ;\n    public  String  field315    ;\n    public  String  field316    ;\n    public  String  field317    ;\n    public  String  field318    ;\n    public  String  field319    ;\n    public  String  field320    ;\n    public  String  field321    ;\n    public  String  field322    ;\n    public  String  field323    ;\n    public  String  field324    ;\n    public  String  field325    ;\n    public  String  field326    ;\n    public  String  field327    ;\n    public  String  field328    ;\n    public  String  field329    ;\n    public  String  field330    ;\n    public  String  field331    ;\n    public  String  field332    ;\n    public  String  field333    ;\n    public  String  field334    ;\n    public  String  field335    ;\n    public  String  field336    ;\n    public  String  field337    ;\n    public  String  field338    ;\n    public  String  field339    ;\n    public  String  field340    ;\n    public  String  field341    ;\n    public  String  field342    ;\n    public  String  field343    ;\n    public  String  field344    ;\n    public  String  field345    ;\n    public  String  field346    ;\n    public  String  field347    ;\n    public  String  field348    ;\n    public  String  field349    ;\n    public  String  field350    ;\n    public  String  field351    ;\n    public  String  field352    ;\n    public  String  field353    ;\n    public  String  field354    ;\n    public  String  field355    ;\n    public  String  field356    ;\n    public  String  field357    ;\n    public  String  field358    ;\n    public  String  field359    ;\n    public  String  field360    ;\n    public  String  field361    ;\n    public  String  field362    ;\n    public  String  field363    ;\n    public  String  field364    ;\n    public  String  field365    ;\n    public  String  field366    ;\n    public  String  field367    ;\n    public  String  field368    ;\n    public  String  field369    ;\n    public  String  field370    ;\n    public  String  field371    ;\n    public  String  field372    ;\n    public  String  field373    ;\n    public  String  field374    ;\n    public  String  field375    ;\n    public  String  field376    ;\n    public  String  field377    ;\n    public  String  field378    ;\n    public  String  field379    ;\n    public  String  field380    ;\n    public  String  field381    ;\n    public  String  field382    ;\n    public  String  field383    ;\n    public  String  field384    ;\n    public  String  field385    ;\n    public  String  field386    ;\n    public  String  field387    ;\n    public  String  field388    ;\n    public  String  field389    ;\n    public  String  field390    ;\n    public  String  field391    ;\n    public  String  field392    ;\n    public  String  field393    ;\n    public  String  field394    ;\n    public  String  field395    ;\n    public  String  field396    ;\n    public  String  field397    ;\n    public  String  field398    ;\n    public  String  field399    ;\n    public  String  field400    ;\n    public  String  field401    ;\n    public  String  field402    ;\n    public  String  field403    ;\n    public  String  field404    ;\n    public  String  field405    ;\n    public  String  field406    ;\n    public  String  field407    ;\n    public  String  field408    ;\n    public  String  field409    ;\n    public  String  field410    ;\n    public  String  field411    ;\n    public  String  field412    ;\n    public  String  field413    ;\n    public  String  field414    ;\n    public  String  field415    ;\n    public  String  field416    ;\n    public  String  field417    ;\n    public  String  field418    ;\n    public  String  field419    ;\n    public  String  field420    ;\n    public  String  field421    ;\n    public  String  field422    ;\n    public  String  field423    ;\n    public  String  field424    ;\n    public  String  field425    ;\n    public  String  field426    ;\n    public  String  field427    ;\n    public  String  field428    ;\n    public  String  field429    ;\n    public  String  field430    ;\n    public  String  field431    ;\n    public  String  field432    ;\n    public  String  field433    ;\n    public  String  field434    ;\n    public  String  field435    ;\n    public  String  field436    ;\n    public  String  field437    ;\n    public  String  field438    ;\n    public  String  field439    ;\n    public  String  field440    ;\n    public  String  field441    ;\n    public  String  field442    ;\n    public  String  field443    ;\n    public  String  field444    ;\n    public  String  field445    ;\n    public  String  field446    ;\n    public  String  field447    ;\n    public  String  field448    ;\n    public  String  field449    ;\n    public  String  field450    ;\n    public  String  field451    ;\n    public  String  field452    ;\n    public  String  field453    ;\n    public  String  field454    ;\n    public  String  field455    ;\n    public  String  field456    ;\n    public  String  field457    ;\n    public  String  field458    ;\n    public  String  field459    ;\n    public  String  field460    ;\n    public  String  field461    ;\n    public  String  field462    ;\n    public  String  field463    ;\n    public  String  field464    ;\n    public  String  field465    ;\n    public  String  field466    ;\n    public  String  field467    ;\n    public  String  field468    ;\n    public  String  field469    ;\n    public  String  field470    ;\n    public  String  field471    ;\n    public  String  field472    ;\n    public  String  field473    ;\n    public  String  field474    ;\n    public  String  field475    ;\n    public  String  field476    ;\n    public  String  field477    ;\n    public  String  field478    ;\n    public  String  field479    ;\n    public  String  field480    ;\n    public  String  field481    ;\n    public  String  field482    ;\n    public  String  field483    ;\n    public  String  field484    ;\n    public  String  field485    ;\n    public  String  field486    ;\n    public  String  field487    ;\n    public  String  field488    ;\n    public  String  field489    ;\n    public  String  field490    ;\n    public  String  field491    ;\n    public  String  field492    ;\n    public  String  field493    ;\n    public  String  field494    ;\n    public  String  field495    ;\n    public  String  field496    ;\n    public  String  field497    ;\n    public  String  field498    ;\n    public  String  field499    ;\n    public  String  field500    ;\n    public  String  field501    ;\n    public  String  field502    ;\n    public  String  field503    ;\n    public  String  field504    ;\n    public  String  field505    ;\n    public  String  field506    ;\n    public  String  field507    ;\n    public  String  field508    ;\n    public  String  field509    ;\n    public  String  field510    ;\n    public  String  field511    ;\n    public  String  field512    ;\n    public  String  field513    ;\n    public  String  field514    ;\n    public  String  field515    ;\n    public  String  field516    ;\n    public  String  field517    ;\n    public  String  field518    ;\n    public  String  field519    ;\n    public  String  field520    ;\n    public  String  field521    ;\n    public  String  field522    ;\n    public  String  field523    ;\n    public  String  field524    ;\n    public  String  field525    ;\n    public  String  field526    ;\n    public  String  field527    ;\n    public  String  field528    ;\n    public  String  field529    ;\n    public  String  field530    ;\n    public  String  field531    ;\n    public  String  field532    ;\n    public  String  field533    ;\n    public  String  field534    ;\n    public  String  field535    ;\n    public  String  field536    ;\n    public  String  field537    ;\n    public  String  field538    ;\n    public  String  field539    ;\n    public  String  field540    ;\n    public  String  field541    ;\n    public  String  field542    ;\n    public  String  field543    ;\n    public  String  field544    ;\n    public  String  field545    ;\n    public  String  field546    ;\n    public  String  field547    ;\n    public  String  field548    ;\n    public  String  field549    ;\n    public  String  field550    ;\n    public  String  field551    ;\n    public  String  field552    ;\n    public  String  field553    ;\n    public  String  field554    ;\n    public  String  field555    ;\n    public  String  field556    ;\n    public  String  field557    ;\n    public  String  field558    ;\n    public  String  field559    ;\n    public  String  field560    ;\n    public  String  field561    ;\n    public  String  field562    ;\n    public  String  field563    ;\n    public  String  field564    ;\n    public  String  field565    ;\n    public  String  field566    ;\n    public  String  field567    ;\n    public  String  field568    ;\n    public  String  field569    ;\n    public  String  field570    ;\n    public  String  field571    ;\n    public  String  field572    ;\n    public  String  field573    ;\n    public  String  field574    ;\n    public  String  field575    ;\n    public  String  field576    ;\n    public  String  field577    ;\n    public  String  field578    ;\n    public  String  field579    ;\n    public  String  field580    ;\n    public  String  field581    ;\n    public  String  field582    ;\n    public  String  field583    ;\n    public  String  field584    ;\n    public  String  field585    ;\n    public  String  field586    ;\n    public  String  field587    ;\n    public  String  field588    ;\n    public  String  field589    ;\n    public  String  field590    ;\n    public  String  field591    ;\n    public  String  field592    ;\n    public  String  field593    ;\n    public  String  field594    ;\n    public  String  field595    ;\n    public  String  field596    ;\n    public  String  field597    ;\n    public  String  field598    ;\n    public  String  field599    ;\n    public  String  field600    ;\n    public  String  field601    ;\n    public  String  field602    ;\n    public  String  field603    ;\n    public  String  field604    ;\n    public  String  field605    ;\n    public  String  field606    ;\n    public  String  field607    ;\n    public  String  field608    ;\n    public  String  field609    ;\n    public  String  field610    ;\n    public  String  field611    ;\n    public  String  field612    ;\n    public  String  field613    ;\n    public  String  field614    ;\n    public  String  field615    ;\n    public  String  field616    ;\n    public  String  field617    ;\n    public  String  field618    ;\n    public  String  field619    ;\n    public  String  field620    ;\n    public  String  field621    ;\n    public  String  field622    ;\n    public  String  field623    ;\n    public  String  field624    ;\n    public  String  field625    ;\n    public  String  field626    ;\n    public  String  field627    ;\n    public  String  field628    ;\n    public  String  field629    ;\n    public  String  field630    ;\n    public  String  field631    ;\n    public  String  field632    ;\n    public  String  field633    ;\n    public  String  field634    ;\n    public  String  field635    ;\n    public  String  field636    ;\n    public  String  field637    ;\n    public  String  field638    ;\n    public  String  field639    ;\n    public  String  field640    ;\n    public  String  field641    ;\n    public  String  field642    ;\n    public  String  field643    ;\n    public  String  field644    ;\n    public  String  field645    ;\n    public  String  field646    ;\n    public  String  field647    ;\n    public  String  field648    ;\n    public  String  field649    ;\n    public  String  field650    ;\n    public  String  field651    ;\n    public  String  field652    ;\n    public  String  field653    ;\n    public  String  field654    ;\n    public  String  field655    ;\n    public  String  field656    ;\n    public  String  field657    ;\n    public  String  field658    ;\n    public  String  field659    ;\n    public  String  field660    ;\n    public  String  field661    ;\n    public  String  field662    ;\n    public  String  field663    ;\n    public  String  field664    ;\n    public  String  field665    ;\n    public  String  field666    ;\n    public  String  field667    ;\n    public  String  field668    ;\n    public  String  field669    ;\n    public  String  field670    ;\n    public  String  field671    ;\n    public  String  field672    ;\n    public  String  field673    ;\n    public  String  field674    ;\n    public  String  field675    ;\n    public  String  field676    ;\n    public  String  field677    ;\n    public  String  field678    ;\n    public  String  field679    ;\n    public  String  field680    ;\n    public  String  field681    ;\n    public  String  field682    ;\n    public  String  field683    ;\n    public  String  field684    ;\n    public  String  field685    ;\n    public  String  field686    ;\n    public  String  field687    ;\n    public  String  field688    ;\n    public  String  field689    ;\n    public  String  field690    ;\n    public  String  field691    ;\n    public  String  field692    ;\n    public  String  field693    ;\n    public  String  field694    ;\n    public  String  field695    ;\n    public  String  field696    ;\n    public  String  field697    ;\n    public  String  field698    ;\n    public  String  field699    ;\n    public  String  field700    ;\n    public  String  field701    ;\n    public  String  field702    ;\n    public  String  field703    ;\n    public  String  field704    ;\n    public  String  field705    ;\n    public  String  field706    ;\n    public  String  field707    ;\n    public  String  field708    ;\n    public  String  field709    ;\n    public  String  field710    ;\n    public  String  field711    ;\n    public  String  field712    ;\n    public  String  field713    ;\n    public  String  field714    ;\n    public  String  field715    ;\n    public  String  field716    ;\n    public  String  field717    ;\n    public  String  field718    ;\n    public  String  field719    ;\n    public  String  field720    ;\n    public  String  field721    ;\n    public  String  field722    ;\n    public  String  field723    ;\n    public  String  field724    ;\n    public  String  field725    ;\n    public  String  field726    ;\n    public  String  field727    ;\n    public  String  field728    ;\n    public  String  field729    ;\n    public  String  field730    ;\n    public  String  field731    ;\n    public  String  field732    ;\n    public  String  field733    ;\n    public  String  field734    ;\n    public  String  field735    ;\n    public  String  field736    ;\n    public  String  field737    ;\n    public  String  field738    ;\n    public  String  field739    ;\n    public  String  field740    ;\n    public  String  field741    ;\n    public  String  field742    ;\n    public  String  field743    ;\n    public  String  field744    ;\n    public  String  field745    ;\n    public  String  field746    ;\n    public  String  field747    ;\n    public  String  field748    ;\n    public  String  field749    ;\n    public  String  field750    ;\n    public  String  field751    ;\n    public  String  field752    ;\n    public  String  field753    ;\n    public  String  field754    ;\n    public  String  field755    ;\n    public  String  field756    ;\n    public  String  field757    ;\n    public  String  field758    ;\n    public  String  field759    ;\n    public  String  field760    ;\n    public  String  field761    ;\n    public  String  field762    ;\n    public  String  field763    ;\n    public  String  field764    ;\n    public  String  field765    ;\n    public  String  field766    ;\n    public  String  field767    ;\n    public  String  field768    ;\n    public  String  field769    ;\n    public  String  field770    ;\n    public  String  field771    ;\n    public  String  field772    ;\n    public  String  field773    ;\n    public  String  field774    ;\n    public  String  field775    ;\n    public  String  field776    ;\n    public  String  field777    ;\n    public  String  field778    ;\n    public  String  field779    ;\n    public  String  field780    ;\n    public  String  field781    ;\n    public  String  field782    ;\n    public  String  field783    ;\n    public  String  field784    ;\n    public  String  field785    ;\n    public  String  field786    ;\n    public  String  field787    ;\n    public  String  field788    ;\n    public  String  field789    ;\n    public  String  field790    ;\n    public  String  field791    ;\n    public  String  field792    ;\n    public  String  field793    ;\n    public  String  field794    ;\n    public  String  field795    ;\n    public  String  field796    ;\n    public  String  field797    ;\n    public  String  field798    ;\n    public  String  field799    ;\n    public  String  field800    ;\n    public  String  field801    ;\n    public  String  field802    ;\n    public  String  field803    ;\n    public  String  field804    ;\n    public  String  field805    ;\n    public  String  field806    ;\n    public  String  field807    ;\n    public  String  field808    ;\n    public  String  field809    ;\n    public  String  field810    ;\n    public  String  field811    ;\n    public  String  field812    ;\n    public  String  field813    ;\n    public  String  field814    ;\n    public  String  field815    ;\n    public  String  field816    ;\n    public  String  field817    ;\n    public  String  field818    ;\n    public  String  field819    ;\n    public  String  field820    ;\n    public  String  field821    ;\n    public  String  field822    ;\n    public  String  field823    ;\n    public  String  field824    ;\n    public  String  field825    ;\n    public  String  field826    ;\n    public  String  field827    ;\n    public  String  field828    ;\n    public  String  field829    ;\n    public  String  field830    ;\n    public  String  field831    ;\n    public  String  field832    ;\n    public  String  field833    ;\n    public  String  field834    ;\n    public  String  field835    ;\n    public  String  field836    ;\n    public  String  field837    ;\n    public  String  field838    ;\n    public  String  field839    ;\n    public  String  field840    ;\n    public  String  field841    ;\n    public  String  field842    ;\n    public  String  field843    ;\n    public  String  field844    ;\n    public  String  field845    ;\n    public  String  field846    ;\n    public  String  field847    ;\n    public  String  field848    ;\n    public  String  field849    ;\n    public  String  field850    ;\n    public  String  field851    ;\n    public  String  field852    ;\n    public  String  field853    ;\n    public  String  field854    ;\n    public  String  field855    ;\n    public  String  field856    ;\n    public  String  field857    ;\n    public  String  field858    ;\n    public  String  field859    ;\n    public  String  field860    ;\n    public  String  field861    ;\n    public  String  field862    ;\n    public  String  field863    ;\n    public  String  field864    ;\n    public  String  field865    ;\n    public  String  field866    ;\n    public  String  field867    ;\n    public  String  field868    ;\n    public  String  field869    ;\n    public  String  field870    ;\n    public  String  field871    ;\n    public  String  field872    ;\n    public  String  field873    ;\n    public  String  field874    ;\n    public  String  field875    ;\n    public  String  field876    ;\n    public  String  field877    ;\n    public  String  field878    ;\n    public  String  field879    ;\n    public  String  field880    ;\n    public  String  field881    ;\n    public  String  field882    ;\n    public  String  field883    ;\n    public  String  field884    ;\n    public  String  field885    ;\n    public  String  field886    ;\n    public  String  field887    ;\n    public  String  field888    ;\n    public  String  field889    ;\n    public  String  field890    ;\n    public  String  field891    ;\n    public  String  field892    ;\n    public  String  field893    ;\n    public  String  field894    ;\n    public  String  field895    ;\n    public  String  field896    ;\n    public  String  field897    ;\n    public  String  field898    ;\n    public  String  field899    ;\n    public  String  field900    ;\n    public  String  field901    ;\n    public  String  field902    ;\n    public  String  field903    ;\n    public  String  field904    ;\n    public  String  field905    ;\n    public  String  field906    ;\n    public  String  field907    ;\n    public  String  field908    ;\n    public  String  field909    ;\n    public  String  field910    ;\n    public  String  field911    ;\n    public  String  field912    ;\n    public  String  field913    ;\n    public  String  field914    ;\n    public  String  field915    ;\n    public  String  field916    ;\n    public  String  field917    ;\n    public  String  field918    ;\n    public  String  field919    ;\n    public  String  field920    ;\n    public  String  field921    ;\n    public  String  field922    ;\n    public  String  field923    ;\n    public  String  field924    ;\n    public  String  field925    ;\n    public  String  field926    ;\n    public  String  field927    ;\n    public  String  field928    ;\n    public  String  field929    ;\n    public  String  field930    ;\n    public  String  field931    ;\n    public  String  field932    ;\n    public  String  field933    ;\n    public  String  field934    ;\n    public  String  field935    ;\n    public  String  field936    ;\n    public  String  field937    ;\n    public  String  field938    ;\n    public  String  field939    ;\n    public  String  field940    ;\n    public  String  field941    ;\n    public  String  field942    ;\n    public  String  field943    ;\n    public  String  field944    ;\n    public  String  field945    ;\n    public  String  field946    ;\n    public  String  field947    ;\n    public  String  field948    ;\n    public  String  field949    ;\n    public  String  field950    ;\n    public  String  field951    ;\n    public  String  field952    ;\n    public  String  field953    ;\n    public  String  field954    ;\n    public  String  field955    ;\n    public  String  field956    ;\n    public  String  field957    ;\n    public  String  field958    ;\n    public  String  field959    ;\n    public  String  field960    ;\n    public  String  field961    ;\n    public  String  field962    ;\n    public  String  field963    ;\n    public  String  field964    ;\n    public  String  field965    ;\n    public  String  field966    ;\n    public  String  field967    ;\n    public  String  field968    ;\n    public  String  field969    ;\n    public  String  field970    ;\n    public  String  field971    ;\n    public  String  field972    ;\n    public  String  field973    ;\n    public  String  field974    ;\n    public  String  field975    ;\n    public  String  field976    ;\n    public  String  field977    ;\n    public  String  field978    ;\n    public  String  field979    ;\n    public  String  field980    ;\n    public  String  field981    ;\n    public  String  field982    ;\n    public  String  field983    ;\n    public  String  field984    ;\n    public  String  field985    ;\n    public  String  field986    ;\n    public  String  field987    ;\n    public  String  field988    ;\n    public  String  field989    ;\n    public  String  field990    ;\n    public  String  field991    ;\n    public  String  field992    ;\n    public  String  field993    ;\n    public  String  field994    ;\n    public  String  field995    ;\n    public  String  field996    ;\n    public  String  field997    ;\n    public  String  field998    ;\n    public  String  field999    ;\n    public  String  field1000   ;\n    public  String  field1001   ;\n    public  String  field1002   ;\n    public  String  field1003   ;\n    public  String  field1004   ;\n    public  String  field1005   ;\n    public  String  field1006   ;\n    public  String  field1007   ;\n    public  String  field1008   ;\n    public  String  field1009   ;\n    public  String  field1010   ;\n    public  String  field1011   ;\n    public  String  field1012   ;\n    public  String  field1013   ;\n    public  String  field1014   ;\n    public  String  field1015   ;\n    public  String  field1016   ;\n    public  String  field1017   ;\n    public  String  field1018   ;\n    public  String  field1019   ;\n    public  String  field1020   ;\n    public  String  field1021   ;\n    public  String  field1022   ;\n    public  String  field1023   ;\n    public  String  field1024   ;\n    public  String  field1025   ;\n    public  String  field1026   ;\n    public  String  field1027   ;\n    public  String  field1028   ;\n    public  String  field1029   ;\n    public  String  field1030   ;\n    public  String  field1031   ;\n    public  String  field1032   ;\n    public  String  field1033   ;\n    public  String  field1034   ;\n    public  String  field1035   ;\n    public  String  field1036   ;\n    public  String  field1037   ;\n    public  String  field1038   ;\n    public  String  field1039   ;\n    public  String  field1040   ;\n    public  String  field1041   ;\n    public  String  field1042   ;\n    public  String  field1043   ;\n    public  String  field1044   ;\n    public  String  field1045   ;\n    public  String  field1046   ;\n    public  String  field1047   ;\n    public  String  field1048   ;\n    public  String  field1049   ;\n    public  String  field1050   ;\n    public  String  field1051   ;\n    public  String  field1052   ;\n    public  String  field1053   ;\n    public  String  field1054   ;\n    public  String  field1055   ;\n    public  String  field1056   ;\n    public  String  field1057   ;\n    public  String  field1058   ;\n    public  String  field1059   ;\n    public  String  field1060   ;\n    public  String  field1061   ;\n    public  String  field1062   ;\n    public  String  field1063   ;\n    public  String  field1064   ;\n    public  String  field1065   ;\n    public  String  field1066   ;\n    public  String  field1067   ;\n    public  String  field1068   ;\n    public  String  field1069   ;\n    public  String  field1070   ;\n    public  String  field1071   ;\n    public  String  field1072   ;\n    public  String  field1073   ;\n    public  String  field1074   ;\n    public  String  field1075   ;\n    public  String  field1076   ;\n    public  String  field1077   ;\n    public  String  field1078   ;\n    public  String  field1079   ;\n    public  String  field1080   ;\n    public  String  field1081   ;\n    public  String  field1082   ;\n    public  String  field1083   ;\n    public  String  field1084   ;\n    public  String  field1085   ;\n    public  String  field1086   ;\n    public  String  field1087   ;\n    public  String  field1088   ;\n    public  String  field1089   ;\n    public  String  field1090   ;\n    public  String  field1091   ;\n    public  String  field1092   ;\n    public  String  field1093   ;\n    public  String  field1094   ;\n    public  String  field1095   ;\n    public  String  field1096   ;\n    public  String  field1097   ;\n    public  String  field1098   ;\n    public  String  field1099   ;\n    public  String  field1100   ;\n    public  String  field1101   ;\n    public  String  field1102   ;\n    public  String  field1103   ;\n    public  String  field1104   ;\n    public  String  field1105   ;\n    public  String  field1106   ;\n    public  String  field1107   ;\n    public  String  field1108   ;\n    public  String  field1109   ;\n    public  String  field1110   ;\n    public  String  field1111   ;\n    public  String  field1112   ;\n    public  String  field1113   ;\n    public  String  field1114   ;\n    public  String  field1115   ;\n    public  String  field1116   ;\n    public  String  field1117   ;\n    public  String  field1118   ;\n    public  String  field1119   ;\n    public  String  field1120   ;\n    public  String  field1121   ;\n    public  String  field1122   ;\n    public  String  field1123   ;\n    public  String  field1124   ;\n    public  String  field1125   ;\n    public  String  field1126   ;\n    public  String  field1127   ;\n    public  String  field1128   ;\n    public  String  field1129   ;\n    public  String  field1130   ;\n    public  String  field1131   ;\n    public  String  field1132   ;\n    public  String  field1133   ;\n    public  String  field1134   ;\n    public  String  field1135   ;\n    public  String  field1136   ;\n    public  String  field1137   ;\n    public  String  field1138   ;\n    public  String  field1139   ;\n    public  String  field1140   ;\n    public  String  field1141   ;\n    public  String  field1142   ;\n    public  String  field1143   ;\n    public  String  field1144   ;\n    public  String  field1145   ;\n    public  String  field1146   ;\n    public  String  field1147   ;\n    public  String  field1148   ;\n    public  String  field1149   ;\n    public  String  field1150   ;\n    public  String  field1151   ;\n    public  String  field1152   ;\n    public  String  field1153   ;\n    public  String  field1154   ;\n    public  String  field1155   ;\n    public  String  field1156   ;\n    public  String  field1157   ;\n    public  String  field1158   ;\n    public  String  field1159   ;\n    public  String  field1160   ;\n    public  String  field1161   ;\n    public  String  field1162   ;\n    public  String  field1163   ;\n    public  String  field1164   ;\n    public  String  field1165   ;\n    public  String  field1166   ;\n    public  String  field1167   ;\n    public  String  field1168   ;\n    public  String  field1169   ;\n    public  String  field1170   ;\n    public  String  field1171   ;\n    public  String  field1172   ;\n    public  String  field1173   ;\n    public  String  field1174   ;\n    public  String  field1175   ;\n    public  String  field1176   ;\n    public  String  field1177   ;\n    public  String  field1178   ;\n    public  String  field1179   ;\n    public  String  field1180   ;\n    public  String  field1181   ;\n    public  String  field1182   ;\n    public  String  field1183   ;\n    public  String  field1184   ;\n    public  String  field1185   ;\n    public  String  field1186   ;\n    public  String  field1187   ;\n    public  String  field1188   ;\n    public  String  field1189   ;\n    public  String  field1190   ;\n    public  String  field1191   ;\n    public  String  field1192   ;\n    public  String  field1193   ;\n    public  String  field1194   ;\n    public  String  field1195   ;\n    public  String  field1196   ;\n    public  String  field1197   ;\n    public  String  field1198   ;\n    public  String  field1199   ;\n    public  String  field1200   ;\n    public  String  field1201   ;\n    public  String  field1202   ;\n    public  String  field1203   ;\n    public  String  field1204   ;\n    public  String  field1205   ;\n    public  String  field1206   ;\n    public  String  field1207   ;\n    public  String  field1208   ;\n    public  String  field1209   ;\n    public  String  field1210   ;\n    public  String  field1211   ;\n    public  String  field1212   ;\n    public  String  field1213   ;\n    public  String  field1214   ;\n    public  String  field1215   ;\n    public  String  field1216   ;\n    public  String  field1217   ;\n    public  String  field1218   ;\n    public  String  field1219   ;\n    public  String  field1220   ;\n    public  String  field1221   ;\n    public  String  field1222   ;\n    public  String  field1223   ;\n    public  String  field1224   ;\n    public  String  field1225   ;\n    public  String  field1226   ;\n    public  String  field1227   ;\n    public  String  field1228   ;\n    public  String  field1229   ;\n    public  String  field1230   ;\n    public  String  field1231   ;\n    public  String  field1232   ;\n    public  String  field1233   ;\n    public  String  field1234   ;\n    public  String  field1235   ;\n    public  String  field1236   ;\n    public  String  field1237   ;\n    public  String  field1238   ;\n    public  String  field1239   ;\n    public  String  field1240   ;\n    public  String  field1241   ;\n    public  String  field1242   ;\n    public  String  field1243   ;\n    public  String  field1244   ;\n    public  String  field1245   ;\n    public  String  field1246   ;\n    public  String  field1247   ;\n    public  String  field1248   ;\n    public  String  field1249   ;\n    public  String  field1250   ;\n    public  String  field1251   ;\n    public  String  field1252   ;\n    public  String  field1253   ;\n    public  String  field1254   ;\n    public  String  field1255   ;\n    public  String  field1256   ;\n    public  String  field1257   ;\n    public  String  field1258   ;\n    public  String  field1259   ;\n    public  String  field1260   ;\n    public  String  field1261   ;\n    public  String  field1262   ;\n    public  String  field1263   ;\n    public  String  field1264   ;\n    public  String  field1265   ;\n    public  String  field1266   ;\n    public  String  field1267   ;\n    public  String  field1268   ;\n    public  String  field1269   ;\n    public  String  field1270   ;\n    public  String  field1271   ;\n    public  String  field1272   ;\n    public  String  field1273   ;\n    public  String  field1274   ;\n    public  String  field1275   ;\n    public  String  field1276   ;\n    public  String  field1277   ;\n    public  String  field1278   ;\n    public  String  field1279   ;\n    public  String  field1280   ;\n    public  String  field1281   ;\n    public  String  field1282   ;\n    public  String  field1283   ;\n    public  String  field1284   ;\n    public  String  field1285   ;\n    public  String  field1286   ;\n    public  String  field1287   ;\n    public  String  field1288   ;\n    public  String  field1289   ;\n    public  String  field1290   ;\n    public  String  field1291   ;\n    public  String  field1292   ;\n    public  String  field1293   ;\n    public  String  field1294   ;\n    public  String  field1295   ;\n    public  String  field1296   ;\n    public  String  field1297   ;\n    public  String  field1298   ;\n    public  String  field1299   ;\n    public  String  field1300   ;\n    public  String  field1301   ;\n    public  String  field1302   ;\n    public  String  field1303   ;\n    public  String  field1304   ;\n    public  String  field1305   ;\n    public  String  field1306   ;\n    public  String  field1307   ;\n    public  String  field1308   ;\n    public  String  field1309   ;\n    public  String  field1310   ;\n    public  String  field1311   ;\n    public  String  field1312   ;\n    public  String  field1313   ;\n    public  String  field1314   ;\n    public  String  field1315   ;\n    public  String  field1316   ;\n    public  String  field1317   ;\n    public  String  field1318   ;\n    public  String  field1319   ;\n    public  String  field1320   ;\n    public  String  field1321   ;\n    public  String  field1322   ;\n    public  String  field1323   ;\n    public  String  field1324   ;\n    public  String  field1325   ;\n    public  String  field1326   ;\n    public  String  field1327   ;\n    public  String  field1328   ;\n    public  String  field1329   ;\n    public  String  field1330   ;\n    public  String  field1331   ;\n    public  String  field1332   ;\n    public  String  field1333   ;\n    public  String  field1334   ;\n    public  String  field1335   ;\n    public  String  field1336   ;\n    public  String  field1337   ;\n    public  String  field1338   ;\n    public  String  field1339   ;\n    public  String  field1340   ;\n    public  String  field1341   ;\n    public  String  field1342   ;\n    public  String  field1343   ;\n    public  String  field1344   ;\n    public  String  field1345   ;\n    public  String  field1346   ;\n    public  String  field1347   ;\n    public  String  field1348   ;\n    public  String  field1349   ;\n    public  String  field1350   ;\n    public  String  field1351   ;\n    public  String  field1352   ;\n    public  String  field1353   ;\n    public  String  field1354   ;\n    public  String  field1355   ;\n    public  String  field1356   ;\n    public  String  field1357   ;\n    public  String  field1358   ;\n    public  String  field1359   ;\n    public  String  field1360   ;\n    public  String  field1361   ;\n    public  String  field1362   ;\n    public  String  field1363   ;\n    public  String  field1364   ;\n    public  String  field1365   ;\n    public  String  field1366   ;\n    public  String  field1367   ;\n    public  String  field1368   ;\n    public  String  field1369   ;\n    public  String  field1370   ;\n    public  String  field1371   ;\n    public  String  field1372   ;\n    public  String  field1373   ;\n    public  String  field1374   ;\n    public  String  field1375   ;\n    public  String  field1376   ;\n    public  String  field1377   ;\n    public  String  field1378   ;\n    public  String  field1379   ;\n    public  String  field1380   ;\n    public  String  field1381   ;\n    public  String  field1382   ;\n    public  String  field1383   ;\n    public  String  field1384   ;\n    public  String  field1385   ;\n    public  String  field1386   ;\n    public  String  field1387   ;\n    public  String  field1388   ;\n    public  String  field1389   ;\n    public  String  field1390   ;\n    public  String  field1391   ;\n    public  String  field1392   ;\n    public  String  field1393   ;\n    public  String  field1394   ;\n    public  String  field1395   ;\n    public  String  field1396   ;\n    public  String  field1397   ;\n    public  String  field1398   ;\n    public  String  field1399   ;\n    public  String  field1400   ;\n    public  String  field1401   ;\n    public  String  field1402   ;\n    public  String  field1403   ;\n    public  String  field1404   ;\n    public  String  field1405   ;\n    public  String  field1406   ;\n    public  String  field1407   ;\n    public  String  field1408   ;\n    public  String  field1409   ;\n    public  String  field1410   ;\n    public  String  field1411   ;\n    public  String  field1412   ;\n    public  String  field1413   ;\n    public  String  field1414   ;\n    public  String  field1415   ;\n    public  String  field1416   ;\n    public  String  field1417   ;\n    public  String  field1418   ;\n    public  String  field1419   ;\n    public  String  field1420   ;\n    public  String  field1421   ;\n    public  String  field1422   ;\n    public  String  field1423   ;\n    public  String  field1424   ;\n    public  String  field1425   ;\n    public  String  field1426   ;\n    public  String  field1427   ;\n    public  String  field1428   ;\n    public  String  field1429   ;\n    public  String  field1430   ;\n    public  String  field1431   ;\n    public  String  field1432   ;\n    public  String  field1433   ;\n    public  String  field1434   ;\n    public  String  field1435   ;\n    public  String  field1436   ;\n    public  String  field1437   ;\n    public  String  field1438   ;\n    public  String  field1439   ;\n    public  String  field1440   ;\n    public  String  field1441   ;\n    public  String  field1442   ;\n    public  String  field1443   ;\n    public  String  field1444   ;\n    public  String  field1445   ;\n    public  String  field1446   ;\n    public  String  field1447   ;\n    public  String  field1448   ;\n    public  String  field1449   ;\n    public  String  field1450   ;\n    public  String  field1451   ;\n    public  String  field1452   ;\n    public  String  field1453   ;\n    public  String  field1454   ;\n    public  String  field1455   ;\n    public  String  field1456   ;\n    public  String  field1457   ;\n    public  String  field1458   ;\n    public  String  field1459   ;\n    public  String  field1460   ;\n    public  String  field1461   ;\n    public  String  field1462   ;\n    public  String  field1463   ;\n    public  String  field1464   ;\n    public  String  field1465   ;\n    public  String  field1466   ;\n    public  String  field1467   ;\n    public  String  field1468   ;\n    public  String  field1469   ;\n    public  String  field1470   ;\n    public  String  field1471   ;\n    public  String  field1472   ;\n    public  String  field1473   ;\n    public  String  field1474   ;\n    public  String  field1475   ;\n    public  String  field1476   ;\n    public  String  field1477   ;\n    public  String  field1478   ;\n    public  String  field1479   ;\n    public  String  field1480   ;\n    public  String  field1481   ;\n    public  String  field1482   ;\n    public  String  field1483   ;\n    public  String  field1484   ;\n    public  String  field1485   ;\n    public  String  field1486   ;\n    public  String  field1487   ;\n    public  String  field1488   ;\n    public  String  field1489   ;\n    public  String  field1490   ;\n    public  String  field1491   ;\n    public  String  field1492   ;\n    public  String  field1493   ;\n    public  String  field1494   ;\n    public  String  field1495   ;\n    public  String  field1496   ;\n    public  String  field1497   ;\n    public  String  field1498   ;\n    public  String  field1499   ;\n    public  String  field1500   ;\n    public  String  field1501   ;\n    public  String  field1502   ;\n    public  String  field1503   ;\n    public  String  field1504   ;\n    public  String  field1505   ;\n    public  String  field1506   ;\n    public  String  field1507   ;\n    public  String  field1508   ;\n    public  String  field1509   ;\n    public  String  field1510   ;\n    public  String  field1511   ;\n    public  String  field1512   ;\n    public  String  field1513   ;\n    public  String  field1514   ;\n    public  String  field1515   ;\n    public  String  field1516   ;\n    public  String  field1517   ;\n    public  String  field1518   ;\n    public  String  field1519   ;\n    public  String  field1520   ;\n    public  String  field1521   ;\n    public  String  field1522   ;\n    public  String  field1523   ;\n    public  String  field1524   ;\n    public  String  field1525   ;\n    public  String  field1526   ;\n    public  String  field1527   ;\n    public  String  field1528   ;\n    public  String  field1529   ;\n    public  String  field1530   ;\n    public  String  field1531   ;\n    public  String  field1532   ;\n    public  String  field1533   ;\n    public  String  field1534   ;\n    public  String  field1535   ;\n    public  String  field1536   ;\n    public  String  field1537   ;\n    public  String  field1538   ;\n    public  String  field1539   ;\n    public  String  field1540   ;\n    public  String  field1541   ;\n    public  String  field1542   ;\n    public  String  field1543   ;\n    public  String  field1544   ;\n    public  String  field1545   ;\n    public  String  field1546   ;\n    public  String  field1547   ;\n    public  String  field1548   ;\n    public  String  field1549   ;\n    public  String  field1550   ;\n    public  String  field1551   ;\n    public  String  field1552   ;\n    public  String  field1553   ;\n    public  String  field1554   ;\n    public  String  field1555   ;\n    public  String  field1556   ;\n    public  String  field1557   ;\n    public  String  field1558   ;\n    public  String  field1559   ;\n    public  String  field1560   ;\n    public  String  field1561   ;\n    public  String  field1562   ;\n    public  String  field1563   ;\n    public  String  field1564   ;\n    public  String  field1565   ;\n    public  String  field1566   ;\n    public  String  field1567   ;\n    public  String  field1568   ;\n    public  String  field1569   ;\n    public  String  field1570   ;\n    public  String  field1571   ;\n    public  String  field1572   ;\n    public  String  field1573   ;\n    public  String  field1574   ;\n    public  String  field1575   ;\n    public  String  field1576   ;\n    public  String  field1577   ;\n    public  String  field1578   ;\n    public  String  field1579   ;\n    public  String  field1580   ;\n    public  String  field1581   ;\n    public  String  field1582   ;\n    public  String  field1583   ;\n    public  String  field1584   ;\n    public  String  field1585   ;\n    public  String  field1586   ;\n    public  String  field1587   ;\n    public  String  field1588   ;\n    public  String  field1589   ;\n    public  String  field1590   ;\n    public  String  field1591   ;\n    public  String  field1592   ;\n    public  String  field1593   ;\n    public  String  field1594   ;\n    public  String  field1595   ;\n    public  String  field1596   ;\n    public  String  field1597   ;\n    public  String  field1598   ;\n    public  String  field1599   ;\n    public  String  field1600   ;\n    public  String  field1601   ;\n    public  String  field1602   ;\n    public  String  field1603   ;\n    public  String  field1604   ;\n    public  String  field1605   ;\n    public  String  field1606   ;\n    public  String  field1607   ;\n    public  String  field1608   ;\n    public  String  field1609   ;\n    public  String  field1610   ;\n    public  String  field1611   ;\n    public  String  field1612   ;\n    public  String  field1613   ;\n    public  String  field1614   ;\n    public  String  field1615   ;\n    public  String  field1616   ;\n    public  String  field1617   ;\n    public  String  field1618   ;\n    public  String  field1619   ;\n    public  String  field1620   ;\n    public  String  field1621   ;\n    public  String  field1622   ;\n    public  String  field1623   ;\n    public  String  field1624   ;\n    public  String  field1625   ;\n    public  String  field1626   ;\n    public  String  field1627   ;\n    public  String  field1628   ;\n    public  String  field1629   ;\n    public  String  field1630   ;\n    public  String  field1631   ;\n    public  String  field1632   ;\n    public  String  field1633   ;\n    public  String  field1634   ;\n    public  String  field1635   ;\n    public  String  field1636   ;\n    public  String  field1637   ;\n    public  String  field1638   ;\n    public  String  field1639   ;\n    public  String  field1640   ;\n    public  String  field1641   ;\n    public  String  field1642   ;\n    public  String  field1643   ;\n    public  String  field1644   ;\n    public  String  field1645   ;\n    public  String  field1646   ;\n    public  String  field1647   ;\n    public  String  field1648   ;\n    public  String  field1649   ;\n    public  String  field1650   ;\n    public  String  field1651   ;\n    public  String  field1652   ;\n    public  String  field1653   ;\n    public  String  field1654   ;\n    public  String  field1655   ;\n    public  String  field1656   ;\n    public  String  field1657   ;\n    public  String  field1658   ;\n    public  String  field1659   ;\n    public  String  field1660   ;\n    public  String  field1661   ;\n    public  String  field1662   ;\n    public  String  field1663   ;\n    public  String  field1664   ;\n    public  String  field1665   ;\n    public  String  field1666   ;\n    public  String  field1667   ;\n    public  String  field1668   ;\n    public  String  field1669   ;\n    public  String  field1670   ;\n    public  String  field1671   ;\n    public  String  field1672   ;\n    public  String  field1673   ;\n    public  String  field1674   ;\n    public  String  field1675   ;\n    public  String  field1676   ;\n    public  String  field1677   ;\n    public  String  field1678   ;\n    public  String  field1679   ;\n    public  String  field1680   ;\n    public  String  field1681   ;\n    public  String  field1682   ;\n    public  String  field1683   ;\n    public  String  field1684   ;\n    public  String  field1685   ;\n    public  String  field1686   ;\n    public  String  field1687   ;\n    public  String  field1688   ;\n    public  String  field1689   ;\n    public  String  field1690   ;\n    public  String  field1691   ;\n    public  String  field1692   ;\n    public  String  field1693   ;\n    public  String  field1694   ;\n    public  String  field1695   ;\n    public  String  field1696   ;\n    public  String  field1697   ;\n    public  String  field1698   ;\n    public  String  field1699   ;\n    public  String  field1700   ;\n    public  String  field1701   ;\n    public  String  field1702   ;\n    public  String  field1703   ;\n    public  String  field1704   ;\n    public  String  field1705   ;\n    public  String  field1706   ;\n    public  String  field1707   ;\n    public  String  field1708   ;\n    public  String  field1709   ;\n    public  String  field1710   ;\n    public  String  field1711   ;\n    public  String  field1712   ;\n    public  String  field1713   ;\n    public  String  field1714   ;\n    public  String  field1715   ;\n    public  String  field1716   ;\n    public  String  field1717   ;\n    public  String  field1718   ;\n    public  String  field1719   ;\n    public  String  field1720   ;\n    public  String  field1721   ;\n    public  String  field1722   ;\n    public  String  field1723   ;\n    public  String  field1724   ;\n    public  String  field1725   ;\n    public  String  field1726   ;\n    public  String  field1727   ;\n    public  String  field1728   ;\n    public  String  field1729   ;\n    public  String  field1730   ;\n    public  String  field1731   ;\n    public  String  field1732   ;\n    public  String  field1733   ;\n    public  String  field1734   ;\n    public  String  field1735   ;\n    public  String  field1736   ;\n    public  String  field1737   ;\n    public  String  field1738   ;\n    public  String  field1739   ;\n    public  String  field1740   ;\n    public  String  field1741   ;\n    public  String  field1742   ;\n    public  String  field1743   ;\n    public  String  field1744   ;\n    public  String  field1745   ;\n    public  String  field1746   ;\n    public  String  field1747   ;\n    public  String  field1748   ;\n    public  String  field1749   ;\n    public  String  field1750   ;\n    public  String  field1751   ;\n    public  String  field1752   ;\n    public  String  field1753   ;\n    public  String  field1754   ;\n    public  String  field1755   ;\n    public  String  field1756   ;\n    public  String  field1757   ;\n    public  String  field1758   ;\n    public  String  field1759   ;\n    public  String  field1760   ;\n    public  String  field1761   ;\n    public  String  field1762   ;\n    public  String  field1763   ;\n    public  String  field1764   ;\n    public  String  field1765   ;\n    public  String  field1766   ;\n    public  String  field1767   ;\n    public  String  field1768   ;\n    public  String  field1769   ;\n    public  String  field1770   ;\n    public  String  field1771   ;\n    public  String  field1772   ;\n    public  String  field1773   ;\n    public  String  field1774   ;\n    public  String  field1775   ;\n    public  String  field1776   ;\n    public  String  field1777   ;\n    public  String  field1778   ;\n    public  String  field1779   ;\n    public  String  field1780   ;\n    public  String  field1781   ;\n    public  String  field1782   ;\n    public  String  field1783   ;\n    public  String  field1784   ;\n    public  String  field1785   ;\n    public  String  field1786   ;\n    public  String  field1787   ;\n    public  String  field1788   ;\n    public  String  field1789   ;\n    public  String  field1790   ;\n    public  String  field1791   ;\n    public  String  field1792   ;\n    public  String  field1793   ;\n    public  String  field1794   ;\n    public  String  field1795   ;\n    public  String  field1796   ;\n    public  String  field1797   ;\n    public  String  field1798   ;\n    public  String  field1799   ;\n    public  String  field1800   ;\n    public  String  field1801   ;\n    public  String  field1802   ;\n    public  String  field1803   ;\n    public  String  field1804   ;\n    public  String  field1805   ;\n    public  String  field1806   ;\n    public  String  field1807   ;\n    public  String  field1808   ;\n    public  String  field1809   ;\n    public  String  field1810   ;\n    public  String  field1811   ;\n    public  String  field1812   ;\n    public  String  field1813   ;\n    public  String  field1814   ;\n    public  String  field1815   ;\n    public  String  field1816   ;\n    public  String  field1817   ;\n    public  String  field1818   ;\n    public  String  field1819   ;\n    public  String  field1820   ;\n    public  String  field1821   ;\n    public  String  field1822   ;\n    public  String  field1823   ;\n    public  String  field1824   ;\n    public  String  field1825   ;\n    public  String  field1826   ;\n    public  String  field1827   ;\n    public  String  field1828   ;\n    public  String  field1829   ;\n    public  String  field1830   ;\n    public  String  field1831   ;\n    public  String  field1832   ;\n    public  String  field1833   ;\n    public  String  field1834   ;\n    public  String  field1835   ;\n    public  String  field1836   ;\n    public  String  field1837   ;\n    public  String  field1838   ;\n    public  String  field1839   ;\n    public  String  field1840   ;\n    public  String  field1841   ;\n    public  String  field1842   ;\n    public  String  field1843   ;\n    public  String  field1844   ;\n    public  String  field1845   ;\n    public  String  field1846   ;\n    public  String  field1847   ;\n    public  String  field1848   ;\n    public  String  field1849   ;\n    public  String  field1850   ;\n    public  String  field1851   ;\n    public  String  field1852   ;\n    public  String  field1853   ;\n    public  String  field1854   ;\n    public  String  field1855   ;\n    public  String  field1856   ;\n    public  String  field1857   ;\n    public  String  field1858   ;\n    public  String  field1859   ;\n    public  String  field1860   ;\n    public  String  field1861   ;\n    public  String  field1862   ;\n    public  String  field1863   ;\n    public  String  field1864   ;\n    public  String  field1865   ;\n    public  String  field1866   ;\n    public  String  field1867   ;\n    public  String  field1868   ;\n    public  String  field1869   ;\n    public  String  field1870   ;\n    public  String  field1871   ;\n    public  String  field1872   ;\n    public  String  field1873   ;\n    public  String  field1874   ;\n    public  String  field1875   ;\n    public  String  field1876   ;\n    public  String  field1877   ;\n    public  String  field1878   ;\n    public  String  field1879   ;\n    public  String  field1880   ;\n    public  String  field1881   ;\n    public  String  field1882   ;\n    public  String  field1883   ;\n    public  String  field1884   ;\n    public  String  field1885   ;\n    public  String  field1886   ;\n    public  String  field1887   ;\n    public  String  field1888   ;\n    public  String  field1889   ;\n    public  String  field1890   ;\n    public  String  field1891   ;\n    public  String  field1892   ;\n    public  String  field1893   ;\n    public  String  field1894   ;\n    public  String  field1895   ;\n    public  String  field1896   ;\n    public  String  field1897   ;\n    public  String  field1898   ;\n    public  String  field1899   ;\n    public  String  field1900   ;\n    public  String  field1901   ;\n    public  String  field1902   ;\n    public  String  field1903   ;\n    public  String  field1904   ;\n    public  String  field1905   ;\n    public  String  field1906   ;\n    public  String  field1907   ;\n    public  String  field1908   ;\n    public  String  field1909   ;\n    public  String  field1910   ;\n    public  String  field1911   ;\n    public  String  field1912   ;\n    public  String  field1913   ;\n    public  String  field1914   ;\n    public  String  field1915   ;\n    public  String  field1916   ;\n    public  String  field1917   ;\n    public  String  field1918   ;\n    public  String  field1919   ;\n    public  String  field1920   ;\n    public  String  field1921   ;\n    public  String  field1922   ;\n    public  String  field1923   ;\n    public  String  field1924   ;\n    public  String  field1925   ;\n    public  String  field1926   ;\n    public  String  field1927   ;\n    public  String  field1928   ;\n    public  String  field1929   ;\n    public  String  field1930   ;\n    public  String  field1931   ;\n    public  String  field1932   ;\n    public  String  field1933   ;\n    public  String  field1934   ;\n    public  String  field1935   ;\n    public  String  field1936   ;\n    public  String  field1937   ;\n    public  String  field1938   ;\n    public  String  field1939   ;\n    public  String  field1940   ;\n    public  String  field1941   ;\n    public  String  field1942   ;\n    public  String  field1943   ;\n    public  String  field1944   ;\n    public  String  field1945   ;\n    public  String  field1946   ;\n    public  String  field1947   ;\n    public  String  field1948   ;\n    public  String  field1949   ;\n    public  String  field1950   ;\n    public  String  field1951   ;\n    public  String  field1952   ;\n    public  String  field1953   ;\n    public  String  field1954   ;\n    public  String  field1955   ;\n    public  String  field1956   ;\n    public  String  field1957   ;\n    public  String  field1958   ;\n    public  String  field1959   ;\n    public  String  field1960   ;\n    public  String  field1961   ;\n    public  String  field1962   ;\n    public  String  field1963   ;\n    public  String  field1964   ;\n    public  String  field1965   ;\n    public  String  field1966   ;\n    public  String  field1967   ;\n    public  String  field1968   ;\n    public  String  field1969   ;\n    public  String  field1970   ;\n    public  String  field1971   ;\n    public  String  field1972   ;\n    public  String  field1973   ;\n    public  String  field1974   ;\n    public  String  field1975   ;\n    public  String  field1976   ;\n    public  String  field1977   ;\n    public  String  field1978   ;\n    public  String  field1979   ;\n    public  String  field1980   ;\n    public  String  field1981   ;\n    public  String  field1982   ;\n    public  String  field1983   ;\n    public  String  field1984   ;\n    public  String  field1985   ;\n    public  String  field1986   ;\n    public  String  field1987   ;\n    public  String  field1988   ;\n    public  String  field1989   ;\n    public  String  field1990   ;\n    public  String  field1991   ;\n    public  String  field1992   ;\n    public  String  field1993   ;\n    public  String  field1994   ;\n    public  String  field1995   ;\n    public  String  field1996   ;\n    public  String  field1997   ;\n    public  String  field1998   ;\n    public  String  field1999   ;\n    public  String  field2000   ;\n    public  String  field2001   ;\n    public  String  field2002   ;\n    public  String  field2003   ;\n    public  String  field2004   ;\n    public  String  field2005   ;\n    public  String  field2006   ;\n    public  String  field2007   ;\n    public  String  field2008   ;\n    public  String  field2009   ;\n    public  String  field2010   ;\n    public  String  field2011   ;\n    public  String  field2012   ;\n    public  String  field2013   ;\n    public  String  field2014   ;\n    public  String  field2015   ;\n    public  String  field2016   ;\n    public  String  field2017   ;\n    public  String  field2018   ;\n    public  String  field2019   ;\n    public  String  field2020   ;\n    public  String  field2021   ;\n    public  String  field2022   ;\n    public  String  field2023   ;\n    public  String  field2024   ;\n    public  String  field2025   ;\n    public  String  field2026   ;\n    public  String  field2027   ;\n    public  String  field2028   ;\n    public  String  field2029   ;\n    public  String  field2030   ;\n    public  String  field2031   ;\n    public  String  field2032   ;\n    public  String  field2033   ;\n    public  String  field2034   ;\n    public  String  field2035   ;\n    public  String  field2036   ;\n    public  String  field2037   ;\n    public  String  field2038   ;\n    public  String  field2039   ;\n    public  String  field2040   ;\n    public  String  field2041   ;\n    public  String  field2042   ;\n    public  String  field2043   ;\n    public  String  field2044   ;\n    public  String  field2045   ;\n    public  String  field2046   ;\n    public  String  field2047   ;\n    public  String  field2048   ;\n    public  String  field2049   ;\n    public  String  field2050   ;\n    public  String  field2051   ;\n    public  String  field2052   ;\n    public  String  field2053   ;\n    public  String  field2054   ;\n    public  String  field2055   ;\n    public  String  field2056   ;\n    public  String  field2057   ;\n    public  String  field2058   ;\n    public  String  field2059   ;\n    public  String  field2060   ;\n    public  String  field2061   ;\n    public  String  field2062   ;\n    public  String  field2063   ;\n    public  String  field2064   ;\n    public  String  field2065   ;\n    public  String  field2066   ;\n    public  String  field2067   ;\n    public  String  field2068   ;\n    public  String  field2069   ;\n    public  String  field2070   ;\n    public  String  field2071   ;\n    public  String  field2072   ;\n    public  String  field2073   ;\n    public  String  field2074   ;\n    public  String  field2075   ;\n    public  String  field2076   ;\n    public  String  field2077   ;\n    public  String  field2078   ;\n    public  String  field2079   ;\n    public  String  field2080   ;\n    public  String  field2081   ;\n    public  String  field2082   ;\n    public  String  field2083   ;\n    public  String  field2084   ;\n    public  String  field2085   ;\n    public  String  field2086   ;\n    public  String  field2087   ;\n    public  String  field2088   ;\n    public  String  field2089   ;\n    public  String  field2090   ;\n    public  String  field2091   ;\n    public  String  field2092   ;\n    public  String  field2093   ;\n    public  String  field2094   ;\n    public  String  field2095   ;\n    public  String  field2096   ;\n    public  String  field2097   ;\n    public  String  field2098   ;\n    public  String  field2099   ;\n    public  String  field2100   ;\n    public  String  field2101   ;\n    public  String  field2102   ;\n    public  String  field2103   ;\n    public  String  field2104   ;\n    public  String  field2105   ;\n    public  String  field2106   ;\n    public  String  field2107   ;\n    public  String  field2108   ;\n    public  String  field2109   ;\n    public  String  field2110   ;\n    public  String  field2111   ;\n    public  String  field2112   ;\n    public  String  field2113   ;\n    public  String  field2114   ;\n    public  String  field2115   ;\n    public  String  field2116   ;\n    public  String  field2117   ;\n    public  String  field2118   ;\n    public  String  field2119   ;\n    public  String  field2120   ;\n    public  String  field2121   ;\n    public  String  field2122   ;\n    public  String  field2123   ;\n    public  String  field2124   ;\n    public  String  field2125   ;\n    public  String  field2126   ;\n    public  String  field2127   ;\n    public  String  field2128   ;\n    public  String  field2129   ;\n    public  String  field2130   ;\n    public  String  field2131   ;\n    public  String  field2132   ;\n    public  String  field2133   ;\n    public  String  field2134   ;\n    public  String  field2135   ;\n    public  String  field2136   ;\n    public  String  field2137   ;\n    public  String  field2138   ;\n    public  String  field2139   ;\n    public  String  field2140   ;\n    public  String  field2141   ;\n    public  String  field2142   ;\n    public  String  field2143   ;\n    public  String  field2144   ;\n    public  String  field2145   ;\n    public  String  field2146   ;\n    public  String  field2147   ;\n    public  String  field2148   ;\n    public  String  field2149   ;\n    public  String  field2150   ;\n    public  String  field2151   ;\n    public  String  field2152   ;\n    public  String  field2153   ;\n    public  String  field2154   ;\n    public  String  field2155   ;\n    public  String  field2156   ;\n    public  String  field2157   ;\n    public  String  field2158   ;\n    public  String  field2159   ;\n    public  String  field2160   ;\n    public  String  field2161   ;\n    public  String  field2162   ;\n    public  String  field2163   ;\n    public  String  field2164   ;\n    public  String  field2165   ;\n    public  String  field2166   ;\n    public  String  field2167   ;\n    public  String  field2168   ;\n    public  String  field2169   ;\n    public  String  field2170   ;\n    public  String  field2171   ;\n    public  String  field2172   ;\n    public  String  field2173   ;\n    public  String  field2174   ;\n    public  String  field2175   ;\n    public  String  field2176   ;\n    public  String  field2177   ;\n    public  String  field2178   ;\n    public  String  field2179   ;\n    public  String  field2180   ;\n    public  String  field2181   ;\n    public  String  field2182   ;\n    public  String  field2183   ;\n    public  String  field2184   ;\n    public  String  field2185   ;\n    public  String  field2186   ;\n    public  String  field2187   ;\n    public  String  field2188   ;\n    public  String  field2189   ;\n    public  String  field2190   ;\n    public  String  field2191   ;\n    public  String  field2192   ;\n    public  String  field2193   ;\n    public  String  field2194   ;\n    public  String  field2195   ;\n    public  String  field2196   ;\n    public  String  field2197   ;\n    public  String  field2198   ;\n    public  String  field2199   ;\n    public  String  field2200   ;\n    public  String  field2201   ;\n    public  String  field2202   ;\n    public  String  field2203   ;\n    public  String  field2204   ;\n    public  String  field2205   ;\n    public  String  field2206   ;\n    public  String  field2207   ;\n    public  String  field2208   ;\n    public  String  field2209   ;\n    public  String  field2210   ;\n    public  String  field2211   ;\n    public  String  field2212   ;\n    public  String  field2213   ;\n    public  String  field2214   ;\n    public  String  field2215   ;\n    public  String  field2216   ;\n    public  String  field2217   ;\n    public  String  field2218   ;\n    public  String  field2219   ;\n    public  String  field2220   ;\n    public  String  field2221   ;\n    public  String  field2222   ;\n    public  String  field2223   ;\n    public  String  field2224   ;\n    public  String  field2225   ;\n    public  String  field2226   ;\n    public  String  field2227   ;\n    public  String  field2228   ;\n    public  String  field2229   ;\n    public  String  field2230   ;\n    public  String  field2231   ;\n    public  String  field2232   ;\n    public  String  field2233   ;\n    public  String  field2234   ;\n    public  String  field2235   ;\n    public  String  field2236   ;\n    public  String  field2237   ;\n    public  String  field2238   ;\n    public  String  field2239   ;\n    public  String  field2240   ;\n    public  String  field2241   ;\n    public  String  field2242   ;\n    public  String  field2243   ;\n    public  String  field2244   ;\n    public  String  field2245   ;\n    public  String  field2246   ;\n    public  String  field2247   ;\n    public  String  field2248   ;\n    public  String  field2249   ;\n    public  String  field2250   ;\n    public  String  field2251   ;\n    public  String  field2252   ;\n    public  String  field2253   ;\n    public  String  field2254   ;\n    public  String  field2255   ;\n    public  String  field2256   ;\n    public  String  field2257   ;\n    public  String  field2258   ;\n    public  String  field2259   ;\n    public  String  field2260   ;\n    public  String  field2261   ;\n    public  String  field2262   ;\n    public  String  field2263   ;\n    public  String  field2264   ;\n    public  String  field2265   ;\n    public  String  field2266   ;\n    public  String  field2267   ;\n    public  String  field2268   ;\n    public  String  field2269   ;\n    public  String  field2270   ;\n    public  String  field2271   ;\n    public  String  field2272   ;\n    public  String  field2273   ;\n    public  String  field2274   ;\n    public  String  field2275   ;\n    public  String  field2276   ;\n    public  String  field2277   ;\n    public  String  field2278   ;\n    public  String  field2279   ;\n    public  String  field2280   ;\n    public  String  field2281   ;\n    public  String  field2282   ;\n    public  String  field2283   ;\n    public  String  field2284   ;\n    public  String  field2285   ;\n    public  String  field2286   ;\n    public  String  field2287   ;\n    public  String  field2288   ;\n    public  String  field2289   ;\n    public  String  field2290   ;\n    public  String  field2291   ;\n    public  String  field2292   ;\n    public  String  field2293   ;\n    public  String  field2294   ;\n    public  String  field2295   ;\n    public  String  field2296   ;\n    public  String  field2297   ;\n    public  String  field2298   ;\n    public  String  field2299   ;\n    public  String  field2300   ;\n    public  String  field2301   ;\n    public  String  field2302   ;\n    public  String  field2303   ;\n    public  String  field2304   ;\n    public  String  field2305   ;\n    public  String  field2306   ;\n    public  String  field2307   ;\n    public  String  field2308   ;\n    public  String  field2309   ;\n    public  String  field2310   ;\n    public  String  field2311   ;\n    public  String  field2312   ;\n    public  String  field2313   ;\n    public  String  field2314   ;\n    public  String  field2315   ;\n    public  String  field2316   ;\n    public  String  field2317   ;\n    public  String  field2318   ;\n    public  String  field2319   ;\n    public  String  field2320   ;\n    public  String  field2321   ;\n    public  String  field2322   ;\n    public  String  field2323   ;\n    public  String  field2324   ;\n    public  String  field2325   ;\n    public  String  field2326   ;\n    public  String  field2327   ;\n    public  String  field2328   ;\n    public  String  field2329   ;\n    public  String  field2330   ;\n    public  String  field2331   ;\n    public  String  field2332   ;\n    public  String  field2333   ;\n    public  String  field2334   ;\n    public  String  field2335   ;\n    public  String  field2336   ;\n    public  String  field2337   ;\n    public  String  field2338   ;\n    public  String  field2339   ;\n    public  String  field2340   ;\n    public  String  field2341   ;\n    public  String  field2342   ;\n    public  String  field2343   ;\n    public  String  field2344   ;\n    public  String  field2345   ;\n    public  String  field2346   ;\n    public  String  field2347   ;\n    public  String  field2348   ;\n    public  String  field2349   ;\n    public  String  field2350   ;\n    public  String  field2351   ;\n    public  String  field2352   ;\n    public  String  field2353   ;\n    public  String  field2354   ;\n    public  String  field2355   ;\n    public  String  field2356   ;\n    public  String  field2357   ;\n    public  String  field2358   ;\n    public  String  field2359   ;\n    public  String  field2360   ;\n    public  String  field2361   ;\n    public  String  field2362   ;\n    public  String  field2363   ;\n    public  String  field2364   ;\n    public  String  field2365   ;\n    public  String  field2366   ;\n    public  String  field2367   ;\n    public  String  field2368   ;\n    public  String  field2369   ;\n    public  String  field2370   ;\n    public  String  field2371   ;\n    public  String  field2372   ;\n    public  String  field2373   ;\n    public  String  field2374   ;\n    public  String  field2375   ;\n    public  String  field2376   ;\n    public  String  field2377   ;\n    public  String  field2378   ;\n    public  String  field2379   ;\n    public  String  field2380   ;\n    public  String  field2381   ;\n    public  String  field2382   ;\n    public  String  field2383   ;\n    public  String  field2384   ;\n    public  String  field2385   ;\n    public  String  field2386   ;\n    public  String  field2387   ;\n    public  String  field2388   ;\n    public  String  field2389   ;\n    public  String  field2390   ;\n    public  String  field2391   ;\n    public  String  field2392   ;\n    public  String  field2393   ;\n    public  String  field2394   ;\n    public  String  field2395   ;\n    public  String  field2396   ;\n    public  String  field2397   ;\n    public  String  field2398   ;\n    public  String  field2399   ;\n    public  String  field2400   ;\n    public  String  field2401   ;\n    public  String  field2402   ;\n    public  String  field2403   ;\n    public  String  field2404   ;\n    public  String  field2405   ;\n    public  String  field2406   ;\n    public  String  field2407   ;\n    public  String  field2408   ;\n    public  String  field2409   ;\n    public  String  field2410   ;\n    public  String  field2411   ;\n    public  String  field2412   ;\n    public  String  field2413   ;\n    public  String  field2414   ;\n    public  String  field2415   ;\n    public  String  field2416   ;\n    public  String  field2417   ;\n    public  String  field2418   ;\n    public  String  field2419   ;\n    public  String  field2420   ;\n    public  String  field2421   ;\n    public  String  field2422   ;\n    public  String  field2423   ;\n    public  String  field2424   ;\n    public  String  field2425   ;\n    public  String  field2426   ;\n    public  String  field2427   ;\n    public  String  field2428   ;\n    public  String  field2429   ;\n    public  String  field2430   ;\n    public  String  field2431   ;\n    public  String  field2432   ;\n    public  String  field2433   ;\n    public  String  field2434   ;\n    public  String  field2435   ;\n    public  String  field2436   ;\n    public  String  field2437   ;\n    public  String  field2438   ;\n    public  String  field2439   ;\n    public  String  field2440   ;\n    public  String  field2441   ;\n    public  String  field2442   ;\n    public  String  field2443   ;\n    public  String  field2444   ;\n    public  String  field2445   ;\n    public  String  field2446   ;\n    public  String  field2447   ;\n    public  String  field2448   ;\n    public  String  field2449   ;\n    public  String  field2450   ;\n    public  String  field2451   ;\n    public  String  field2452   ;\n    public  String  field2453   ;\n    public  String  field2454   ;\n    public  String  field2455   ;\n    public  String  field2456   ;\n    public  String  field2457   ;\n    public  String  field2458   ;\n    public  String  field2459   ;\n    public  String  field2460   ;\n    public  String  field2461   ;\n    public  String  field2462   ;\n    public  String  field2463   ;\n    public  String  field2464   ;\n    public  String  field2465   ;\n    public  String  field2466   ;\n    public  String  field2467   ;\n    public  String  field2468   ;\n    public  String  field2469   ;\n    public  String  field2470   ;\n    public  String  field2471   ;\n    public  String  field2472   ;\n    public  String  field2473   ;\n    public  String  field2474   ;\n    public  String  field2475   ;\n    public  String  field2476   ;\n    public  String  field2477   ;\n    public  String  field2478   ;\n    public  String  field2479   ;\n    public  String  field2480   ;\n    public  String  field2481   ;\n    public  String  field2482   ;\n    public  String  field2483   ;\n    public  String  field2484   ;\n    public  String  field2485   ;\n    public  String  field2486   ;\n    public  String  field2487   ;\n    public  String  field2488   ;\n    public  String  field2489   ;\n    public  String  field2490   ;\n    public  String  field2491   ;\n    public  String  field2492   ;\n    public  String  field2493   ;\n    public  String  field2494   ;\n    public  String  field2495   ;\n    public  String  field2496   ;\n    public  String  field2497   ;\n    public  String  field2498   ;\n    public  String  field2499   ;\n    public  String  field2500   ;\n    public  String  field2501   ;\n    public  String  field2502   ;\n    public  String  field2503   ;\n    public  String  field2504   ;\n    public  String  field2505   ;\n    public  String  field2506   ;\n    public  String  field2507   ;\n    public  String  field2508   ;\n    public  String  field2509   ;\n    public  String  field2510   ;\n    public  String  field2511   ;\n    public  String  field2512   ;\n    public  String  field2513   ;\n    public  String  field2514   ;\n    public  String  field2515   ;\n    public  String  field2516   ;\n    public  String  field2517   ;\n    public  String  field2518   ;\n    public  String  field2519   ;\n    public  String  field2520   ;\n    public  String  field2521   ;\n    public  String  field2522   ;\n    public  String  field2523   ;\n    public  String  field2524   ;\n    public  String  field2525   ;\n    public  String  field2526   ;\n    public  String  field2527   ;\n    public  String  field2528   ;\n    public  String  field2529   ;\n    public  String  field2530   ;\n    public  String  field2531   ;\n    public  String  field2532   ;\n    public  String  field2533   ;\n    public  String  field2534   ;\n    public  String  field2535   ;\n    public  String  field2536   ;\n    public  String  field2537   ;\n    public  String  field2538   ;\n    public  String  field2539   ;\n    public  String  field2540   ;\n    public  String  field2541   ;\n    public  String  field2542   ;\n    public  String  field2543   ;\n    public  String  field2544   ;\n    public  String  field2545   ;\n    public  String  field2546   ;\n    public  String  field2547   ;\n    public  String  field2548   ;\n    public  String  field2549   ;\n    public  String  field2550   ;\n    public  String  field2551   ;\n    public  String  field2552   ;\n    public  String  field2553   ;\n    public  String  field2554   ;\n    public  String  field2555   ;\n    public  String  field2556   ;\n    public  String  field2557   ;\n    public  String  field2558   ;\n    public  String  field2559   ;\n    public  String  field2560   ;\n    public  String  field2561   ;\n    public  String  field2562   ;\n    public  String  field2563   ;\n    public  String  field2564   ;\n    public  String  field2565   ;\n    public  String  field2566   ;\n    public  String  field2567   ;\n    public  String  field2568   ;\n    public  String  field2569   ;\n    public  String  field2570   ;\n    public  String  field2571   ;\n    public  String  field2572   ;\n    public  String  field2573   ;\n    public  String  field2574   ;\n    public  String  field2575   ;\n    public  String  field2576   ;\n    public  String  field2577   ;\n    public  String  field2578   ;\n    public  String  field2579   ;\n    public  String  field2580   ;\n    public  String  field2581   ;\n    public  String  field2582   ;\n    public  String  field2583   ;\n    public  String  field2584   ;\n    public  String  field2585   ;\n    public  String  field2586   ;\n    public  String  field2587   ;\n    public  String  field2588   ;\n    public  String  field2589   ;\n    public  String  field2590   ;\n    public  String  field2591   ;\n    public  String  field2592   ;\n    public  String  field2593   ;\n    public  String  field2594   ;\n    public  String  field2595   ;\n    public  String  field2596   ;\n    public  String  field2597   ;\n    public  String  field2598   ;\n    public  String  field2599   ;\n    public  String  field2600   ;\n    public  String  field2601   ;\n    public  String  field2602   ;\n    public  String  field2603   ;\n    public  String  field2604   ;\n    public  String  field2605   ;\n    public  String  field2606   ;\n    public  String  field2607   ;\n    public  String  field2608   ;\n    public  String  field2609   ;\n    public  String  field2610   ;\n    public  String  field2611   ;\n    public  String  field2612   ;\n    public  String  field2613   ;\n    public  String  field2614   ;\n    public  String  field2615   ;\n    public  String  field2616   ;\n    public  String  field2617   ;\n    public  String  field2618   ;\n    public  String  field2619   ;\n    public  String  field2620   ;\n    public  String  field2621   ;\n    public  String  field2622   ;\n    public  String  field2623   ;\n    public  String  field2624   ;\n    public  String  field2625   ;\n    public  String  field2626   ;\n    public  String  field2627   ;\n    public  String  field2628   ;\n    public  String  field2629   ;\n    public  String  field2630   ;\n    public  String  field2631   ;\n    public  String  field2632   ;\n    public  String  field2633   ;\n    public  String  field2634   ;\n    public  String  field2635   ;\n    public  String  field2636   ;\n    public  String  field2637   ;\n    public  String  field2638   ;\n    public  String  field2639   ;\n    public  String  field2640   ;\n    public  String  field2641   ;\n    public  String  field2642   ;\n    public  String  field2643   ;\n    public  String  field2644   ;\n    public  String  field2645   ;\n    public  String  field2646   ;\n    public  String  field2647   ;\n    public  String  field2648   ;\n    public  String  field2649   ;\n    public  String  field2650   ;\n    public  String  field2651   ;\n    public  String  field2652   ;\n    public  String  field2653   ;\n    public  String  field2654   ;\n    public  String  field2655   ;\n    public  String  field2656   ;\n    public  String  field2657   ;\n    public  String  field2658   ;\n    public  String  field2659   ;\n    public  String  field2660   ;\n    public  String  field2661   ;\n    public  String  field2662   ;\n    public  String  field2663   ;\n    public  String  field2664   ;\n    public  String  field2665   ;\n    public  String  field2666   ;\n    public  String  field2667   ;\n    public  String  field2668   ;\n    public  String  field2669   ;\n    public  String  field2670   ;\n    public  String  field2671   ;\n    public  String  field2672   ;\n    public  String  field2673   ;\n    public  String  field2674   ;\n    public  String  field2675   ;\n    public  String  field2676   ;\n    public  String  field2677   ;\n    public  String  field2678   ;\n    public  String  field2679   ;\n    public  String  field2680   ;\n    public  String  field2681   ;\n    public  String  field2682   ;\n    public  String  field2683   ;\n    public  String  field2684   ;\n    public  String  field2685   ;\n    public  String  field2686   ;\n    public  String  field2687   ;\n    public  String  field2688   ;\n    public  String  field2689   ;\n    public  String  field2690   ;\n    public  String  field2691   ;\n    public  String  field2692   ;\n    public  String  field2693   ;\n    public  String  field2694   ;\n    public  String  field2695   ;\n    public  String  field2696   ;\n    public  String  field2697   ;\n    public  String  field2698   ;\n    public  String  field2699   ;\n    public  String  field2700   ;\n    public  String  field2701   ;\n    public  String  field2702   ;\n    public  String  field2703   ;\n    public  String  field2704   ;\n    public  String  field2705   ;\n    public  String  field2706   ;\n    public  String  field2707   ;\n    public  String  field2708   ;\n    public  String  field2709   ;\n    public  String  field2710   ;\n    public  String  field2711   ;\n    public  String  field2712   ;\n    public  String  field2713   ;\n    public  String  field2714   ;\n    public  String  field2715   ;\n    public  String  field2716   ;\n    public  String  field2717   ;\n    public  String  field2718   ;\n    public  String  field2719   ;\n    public  String  field2720   ;\n    public  String  field2721   ;\n    public  String  field2722   ;\n    public  String  field2723   ;\n    public  String  field2724   ;\n    public  String  field2725   ;\n    public  String  field2726   ;\n    public  String  field2727   ;\n    public  String  field2728   ;\n    public  String  field2729   ;\n    public  String  field2730   ;\n    public  String  field2731   ;\n    public  String  field2732   ;\n    public  String  field2733   ;\n    public  String  field2734   ;\n    public  String  field2735   ;\n    public  String  field2736   ;\n    public  String  field2737   ;\n    public  String  field2738   ;\n    public  String  field2739   ;\n    public  String  field2740   ;\n    public  String  field2741   ;\n    public  String  field2742   ;\n    public  String  field2743   ;\n    public  String  field2744   ;\n    public  String  field2745   ;\n    public  String  field2746   ;\n    public  String  field2747   ;\n    public  String  field2748   ;\n    public  String  field2749   ;\n    public  String  field2750   ;\n    public  String  field2751   ;\n    public  String  field2752   ;\n    public  String  field2753   ;\n    public  String  field2754   ;\n    public  String  field2755   ;\n    public  String  field2756   ;\n    public  String  field2757   ;\n    public  String  field2758   ;\n    public  String  field2759   ;\n    public  String  field2760   ;\n    public  String  field2761   ;\n    public  String  field2762   ;\n    public  String  field2763   ;\n    public  String  field2764   ;\n    public  String  field2765   ;\n    public  String  field2766   ;\n    public  String  field2767   ;\n    public  String  field2768   ;\n    public  String  field2769   ;\n    public  String  field2770   ;\n    public  String  field2771   ;\n    public  String  field2772   ;\n    public  String  field2773   ;\n    public  String  field2774   ;\n    public  String  field2775   ;\n    public  String  field2776   ;\n    public  String  field2777   ;\n    public  String  field2778   ;\n    public  String  field2779   ;\n    public  String  field2780   ;\n    public  String  field2781   ;\n    public  String  field2782   ;\n    public  String  field2783   ;\n    public  String  field2784   ;\n    public  String  field2785   ;\n    public  String  field2786   ;\n    public  String  field2787   ;\n    public  String  field2788   ;\n    public  String  field2789   ;\n    public  String  field2790   ;\n    public  String  field2791   ;\n    public  String  field2792   ;\n    public  String  field2793   ;\n    public  String  field2794   ;\n    public  String  field2795   ;\n    public  String  field2796   ;\n    public  String  field2797   ;\n    public  String  field2798   ;\n    public  String  field2799   ;\n    public  String  field2800   ;\n    public  String  field2801   ;\n    public  String  field2802   ;\n    public  String  field2803   ;\n    public  String  field2804   ;\n    public  String  field2805   ;\n    public  String  field2806   ;\n    public  String  field2807   ;\n    public  String  field2808   ;\n    public  String  field2809   ;\n    public  String  field2810   ;\n    public  String  field2811   ;\n    public  String  field2812   ;\n    public  String  field2813   ;\n    public  String  field2814   ;\n    public  String  field2815   ;\n    public  String  field2816   ;\n    public  String  field2817   ;\n    public  String  field2818   ;\n    public  String  field2819   ;\n    public  String  field2820   ;\n    public  String  field2821   ;\n    public  String  field2822   ;\n    public  String  field2823   ;\n    public  String  field2824   ;\n    public  String  field2825   ;\n    public  String  field2826   ;\n    public  String  field2827   ;\n    public  String  field2828   ;\n    public  String  field2829   ;\n    public  String  field2830   ;\n    public  String  field2831   ;\n    public  String  field2832   ;\n    public  String  field2833   ;\n    public  String  field2834   ;\n    public  String  field2835   ;\n    public  String  field2836   ;\n    public  String  field2837   ;\n    public  String  field2838   ;\n    public  String  field2839   ;\n    public  String  field2840   ;\n    public  String  field2841   ;\n    public  String  field2842   ;\n    public  String  field2843   ;\n    public  String  field2844   ;\n    public  String  field2845   ;\n    public  String  field2846   ;\n    public  String  field2847   ;\n    public  String  field2848   ;\n    public  String  field2849   ;\n    public  String  field2850   ;\n    public  String  field2851   ;\n    public  String  field2852   ;\n    public  String  field2853   ;\n    public  String  field2854   ;\n    public  String  field2855   ;\n    public  String  field2856   ;\n    public  String  field2857   ;\n    public  String  field2858   ;\n    public  String  field2859   ;\n    public  String  field2860   ;\n    public  String  field2861   ;\n    public  String  field2862   ;\n    public  String  field2863   ;\n    public  String  field2864   ;\n    public  String  field2865   ;\n    public  String  field2866   ;\n    public  String  field2867   ;\n    public  String  field2868   ;\n    public  String  field2869   ;\n    public  String  field2870   ;\n    public  String  field2871   ;\n    public  String  field2872   ;\n    public  String  field2873   ;\n    public  String  field2874   ;\n    public  String  field2875   ;\n    public  String  field2876   ;\n    public  String  field2877   ;\n    public  String  field2878   ;\n    public  String  field2879   ;\n    public  String  field2880   ;\n    public  String  field2881   ;\n    public  String  field2882   ;\n    public  String  field2883   ;\n    public  String  field2884   ;\n    public  String  field2885   ;\n    public  String  field2886   ;\n    public  String  field2887   ;\n    public  String  field2888   ;\n    public  String  field2889   ;\n    public  String  field2890   ;\n    public  String  field2891   ;\n    public  String  field2892   ;\n    public  String  field2893   ;\n    public  String  field2894   ;\n    public  String  field2895   ;\n    public  String  field2896   ;\n    public  String  field2897   ;\n    public  String  field2898   ;\n    public  String  field2899   ;\n    public  String  field2900   ;\n    public  String  field2901   ;\n    public  String  field2902   ;\n    public  String  field2903   ;\n    public  String  field2904   ;\n    public  String  field2905   ;\n    public  String  field2906   ;\n    public  String  field2907   ;\n    public  String  field2908   ;\n    public  String  field2909   ;\n    public  String  field2910   ;\n    public  String  field2911   ;\n    public  String  field2912   ;\n    public  String  field2913   ;\n    public  String  field2914   ;\n    public  String  field2915   ;\n    public  String  field2916   ;\n    public  String  field2917   ;\n    public  String  field2918   ;\n    public  String  field2919   ;\n    public  String  field2920   ;\n    public  String  field2921   ;\n    public  String  field2922   ;\n    public  String  field2923   ;\n    public  String  field2924   ;\n    public  String  field2925   ;\n    public  String  field2926   ;\n    public  String  field2927   ;\n    public  String  field2928   ;\n    public  String  field2929   ;\n    public  String  field2930   ;\n    public  String  field2931   ;\n    public  String  field2932   ;\n    public  String  field2933   ;\n    public  String  field2934   ;\n    public  String  field2935   ;\n    public  String  field2936   ;\n    public  String  field2937   ;\n    public  String  field2938   ;\n    public  String  field2939   ;\n    public  String  field2940   ;\n    public  String  field2941   ;\n    public  String  field2942   ;\n    public  String  field2943   ;\n    public  String  field2944   ;\n    public  String  field2945   ;\n    public  String  field2946   ;\n    public  String  field2947   ;\n    public  String  field2948   ;\n    public  String  field2949   ;\n    public  String  field2950   ;\n    public  String  field2951   ;\n    public  String  field2952   ;\n    public  String  field2953   ;\n    public  String  field2954   ;\n    public  String  field2955   ;\n    public  String  field2956   ;\n    public  String  field2957   ;\n    public  String  field2958   ;\n    public  String  field2959   ;\n    public  String  field2960   ;\n    public  String  field2961   ;\n    public  String  field2962   ;\n    public  String  field2963   ;\n    public  String  field2964   ;\n    public  String  field2965   ;\n    public  String  field2966   ;\n    public  String  field2967   ;\n    public  String  field2968   ;\n    public  String  field2969   ;\n    public  String  field2970   ;\n    public  String  field2971   ;\n    public  String  field2972   ;\n    public  String  field2973   ;\n    public  String  field2974   ;\n    public  String  field2975   ;\n    public  String  field2976   ;\n    public  String  field2977   ;\n    public  String  field2978   ;\n    public  String  field2979   ;\n    public  String  field2980   ;\n    public  String  field2981   ;\n    public  String  field2982   ;\n    public  String  field2983   ;\n    public  String  field2984   ;\n    public  String  field2985   ;\n    public  String  field2986   ;\n    public  String  field2987   ;\n    public  String  field2988   ;\n    public  String  field2989   ;\n    public  String  field2990   ;\n    public  String  field2991   ;\n    public  String  field2992   ;\n    public  String  field2993   ;\n    public  String  field2994   ;\n    public  String  field2995   ;\n    public  String  field2996   ;\n    public  String  field2997   ;\n    public  String  field2998   ;\n    public  String  field2999   ;\n    public  String  field3000   ;\n    public  String  field3001   ;\n    public  String  field3002   ;\n    public  String  field3003   ;\n    public  String  field3004   ;\n    public  String  field3005   ;\n    public  String  field3006   ;\n    public  String  field3007   ;\n    public  String  field3008   ;\n    public  String  field3009   ;\n    public  String  field3010   ;\n    public  String  field3011   ;\n    public  String  field3012   ;\n    public  String  field3013   ;\n    public  String  field3014   ;\n    public  String  field3015   ;\n    public  String  field3016   ;\n    public  String  field3017   ;\n    public  String  field3018   ;\n    public  String  field3019   ;\n    public  String  field3020   ;\n    public  String  field3021   ;\n    public  String  field3022   ;\n    public  String  field3023   ;\n    public  String  field3024   ;\n    public  String  field3025   ;\n    public  String  field3026   ;\n    public  String  field3027   ;\n    public  String  field3028   ;\n    public  String  field3029   ;\n    public  String  field3030   ;\n    public  String  field3031   ;\n    public  String  field3032   ;\n    public  String  field3033   ;\n    public  String  field3034   ;\n    public  String  field3035   ;\n    public  String  field3036   ;\n    public  String  field3037   ;\n    public  String  field3038   ;\n    public  String  field3039   ;\n    public  String  field3040   ;\n    public  String  field3041   ;\n    public  String  field3042   ;\n    public  String  field3043   ;\n    public  String  field3044   ;\n    public  String  field3045   ;\n    public  String  field3046   ;\n    public  String  field3047   ;\n    public  String  field3048   ;\n    public  String  field3049   ;\n    public  String  field3050   ;\n    public  String  field3051   ;\n    public  String  field3052   ;\n    public  String  field3053   ;\n    public  String  field3054   ;\n    public  String  field3055   ;\n    public  String  field3056   ;\n    public  String  field3057   ;\n    public  String  field3058   ;\n    public  String  field3059   ;\n    public  String  field3060   ;\n    public  String  field3061   ;\n    public  String  field3062   ;\n    public  String  field3063   ;\n    public  String  field3064   ;\n    public  String  field3065   ;\n    public  String  field3066   ;\n    public  String  field3067   ;\n    public  String  field3068   ;\n    public  String  field3069   ;\n    public  String  field3070   ;\n    public  String  field3071   ;\n    public  String  field3072   ;\n    public  String  field3073   ;\n    public  String  field3074   ;\n    public  String  field3075   ;\n    public  String  field3076   ;\n    public  String  field3077   ;\n    public  String  field3078   ;\n    public  String  field3079   ;\n    public  String  field3080   ;\n    public  String  field3081   ;\n    public  String  field3082   ;\n    public  String  field3083   ;\n    public  String  field3084   ;\n    public  String  field3085   ;\n    public  String  field3086   ;\n    public  String  field3087   ;\n    public  String  field3088   ;\n    public  String  field3089   ;\n    public  String  field3090   ;\n    public  String  field3091   ;\n    public  String  field3092   ;\n    public  String  field3093   ;\n    public  String  field3094   ;\n    public  String  field3095   ;\n    public  String  field3096   ;\n    public  String  field3097   ;\n    public  String  field3098   ;\n    public  String  field3099   ;\n    public  String  field3100   ;\n    public  String  field3101   ;\n    public  String  field3102   ;\n    public  String  field3103   ;\n    public  String  field3104   ;\n    public  String  field3105   ;\n    public  String  field3106   ;\n    public  String  field3107   ;\n    public  String  field3108   ;\n    public  String  field3109   ;\n    public  String  field3110   ;\n    public  String  field3111   ;\n    public  String  field3112   ;\n    public  String  field3113   ;\n    public  String  field3114   ;\n    public  String  field3115   ;\n    public  String  field3116   ;\n    public  String  field3117   ;\n    public  String  field3118   ;\n    public  String  field3119   ;\n    public  String  field3120   ;\n    public  String  field3121   ;\n    public  String  field3122   ;\n    public  String  field3123   ;\n    public  String  field3124   ;\n    public  String  field3125   ;\n    public  String  field3126   ;\n    public  String  field3127   ;\n    public  String  field3128   ;\n    public  String  field3129   ;\n    public  String  field3130   ;\n    public  String  field3131   ;\n    public  String  field3132   ;\n    public  String  field3133   ;\n    public  String  field3134   ;\n    public  String  field3135   ;\n    public  String  field3136   ;\n    public  String  field3137   ;\n    public  String  field3138   ;\n    public  String  field3139   ;\n    public  String  field3140   ;\n    public  String  field3141   ;\n    public  String  field3142   ;\n    public  String  field3143   ;\n    public  String  field3144   ;\n    public  String  field3145   ;\n    public  String  field3146   ;\n    public  String  field3147   ;\n    public  String  field3148   ;\n    public  String  field3149   ;\n    public  String  field3150   ;\n    public  String  field3151   ;\n    public  String  field3152   ;\n    public  String  field3153   ;\n    public  String  field3154   ;\n    public  String  field3155   ;\n    public  String  field3156   ;\n    public  String  field3157   ;\n    public  String  field3158   ;\n    public  String  field3159   ;\n    public  String  field3160   ;\n    public  String  field3161   ;\n    public  String  field3162   ;\n    public  String  field3163   ;\n    public  String  field3164   ;\n    public  String  field3165   ;\n    public  String  field3166   ;\n    public  String  field3167   ;\n    public  String  field3168   ;\n    public  String  field3169   ;\n    public  String  field3170   ;\n    public  String  field3171   ;\n    public  String  field3172   ;\n    public  String  field3173   ;\n    public  String  field3174   ;\n    public  String  field3175   ;\n    public  String  field3176   ;\n    public  String  field3177   ;\n    public  String  field3178   ;\n    public  String  field3179   ;\n    public  String  field3180   ;\n    public  String  field3181   ;\n    public  String  field3182   ;\n    public  String  field3183   ;\n    public  String  field3184   ;\n    public  String  field3185   ;\n    public  String  field3186   ;\n    public  String  field3187   ;\n    public  String  field3188   ;\n    public  String  field3189   ;\n    public  String  field3190   ;\n    public  String  field3191   ;\n    public  String  field3192   ;\n    public  String  field3193   ;\n    public  String  field3194   ;\n    public  String  field3195   ;\n    public  String  field3196   ;\n    public  String  field3197   ;\n    public  String  field3198   ;\n    public  String  field3199   ;\n    public  String  field3200   ;\n    public  String  field3201   ;\n    public  String  field3202   ;\n    public  String  field3203   ;\n    public  String  field3204   ;\n    public  String  field3205   ;\n    public  String  field3206   ;\n    public  String  field3207   ;\n    public  String  field3208   ;\n    public  String  field3209   ;\n    public  String  field3210   ;\n    public  String  field3211   ;\n    public  String  field3212   ;\n    public  String  field3213   ;\n    public  String  field3214   ;\n    public  String  field3215   ;\n    public  String  field3216   ;\n    public  String  field3217   ;\n    public  String  field3218   ;\n    public  String  field3219   ;\n    public  String  field3220   ;\n    public  String  field3221   ;\n    public  String  field3222   ;\n    public  String  field3223   ;\n    public  String  field3224   ;\n    public  String  field3225   ;\n    public  String  field3226   ;\n    public  String  field3227   ;\n    public  String  field3228   ;\n    public  String  field3229   ;\n    public  String  field3230   ;\n    public  String  field3231   ;\n    public  String  field3232   ;\n    public  String  field3233   ;\n    public  String  field3234   ;\n    public  String  field3235   ;\n    public  String  field3236   ;\n    public  String  field3237   ;\n    public  String  field3238   ;\n    public  String  field3239   ;\n    public  String  field3240   ;\n    public  String  field3241   ;\n    public  String  field3242   ;\n    public  String  field3243   ;\n    public  String  field3244   ;\n    public  String  field3245   ;\n    public  String  field3246   ;\n    public  String  field3247   ;\n    public  String  field3248   ;\n    public  String  field3249   ;\n    public  String  field3250   ;\n    public  String  field3251   ;\n    public  String  field3252   ;\n    public  String  field3253   ;\n    public  String  field3254   ;\n    public  String  field3255   ;\n    public  String  field3256   ;\n    public  String  field3257   ;\n    public  String  field3258   ;\n    public  String  field3259   ;\n    public  String  field3260   ;\n    public  String  field3261   ;\n    public  String  field3262   ;\n    public  String  field3263   ;\n    public  String  field3264   ;\n    public  String  field3265   ;\n    public  String  field3266   ;\n    public  String  field3267   ;\n    public  String  field3268   ;\n    public  String  field3269   ;\n    public  String  field3270   ;\n    public  String  field3271   ;\n    public  String  field3272   ;\n    public  String  field3273   ;\n    public  String  field3274   ;\n    public  String  field3275   ;\n    public  String  field3276   ;\n    public  String  field3277   ;\n    public  String  field3278   ;\n    public  String  field3279   ;\n    public  String  field3280   ;\n    public  String  field3281   ;\n    public  String  field3282   ;\n    public  String  field3283   ;\n    public  String  field3284   ;\n    public  String  field3285   ;\n    public  String  field3286   ;\n    public  String  field3287   ;\n    public  String  field3288   ;\n    public  String  field3289   ;\n    public  String  field3290   ;\n    public  String  field3291   ;\n    public  String  field3292   ;\n    public  String  field3293   ;\n    public  String  field3294   ;\n    public  String  field3295   ;\n    public  String  field3296   ;\n    public  String  field3297   ;\n    public  String  field3298   ;\n    public  String  field3299   ;\n    public  String  field3300   ;\n    public  String  field3301   ;\n    public  String  field3302   ;\n    public  String  field3303   ;\n    public  String  field3304   ;\n    public  String  field3305   ;\n    public  String  field3306   ;\n    public  String  field3307   ;\n    public  String  field3308   ;\n    public  String  field3309   ;\n    public  String  field3310   ;\n    public  String  field3311   ;\n    public  String  field3312   ;\n    public  String  field3313   ;\n    public  String  field3314   ;\n    public  String  field3315   ;\n    public  String  field3316   ;\n    public  String  field3317   ;\n    public  String  field3318   ;\n    public  String  field3319   ;\n    public  String  field3320   ;\n    public  String  field3321   ;\n    public  String  field3322   ;\n    public  String  field3323   ;\n    public  String  field3324   ;\n    public  String  field3325   ;\n    public  String  field3326   ;\n    public  String  field3327   ;\n    public  String  field3328   ;\n    public  String  field3329   ;\n    public  String  field3330   ;\n    public  String  field3331   ;\n    public  String  field3332   ;\n    public  String  field3333   ;\n    public  String  field3334   ;\n    public  String  field3335   ;\n    public  String  field3336   ;\n    public  String  field3337   ;\n    public  String  field3338   ;\n    public  String  field3339   ;\n    public  String  field3340   ;\n    public  String  field3341   ;\n    public  String  field3342   ;\n    public  String  field3343   ;\n    public  String  field3344   ;\n    public  String  field3345   ;\n    public  String  field3346   ;\n    public  String  field3347   ;\n    public  String  field3348   ;\n    public  String  field3349   ;\n    public  String  field3350   ;\n    public  String  field3351   ;\n    public  String  field3352   ;\n    public  String  field3353   ;\n    public  String  field3354   ;\n    public  String  field3355   ;\n    public  String  field3356   ;\n    public  String  field3357   ;\n    public  String  field3358   ;\n    public  String  field3359   ;\n    public  String  field3360   ;\n    public  String  field3361   ;\n    public  String  field3362   ;\n    public  String  field3363   ;\n    public  String  field3364   ;\n    public  String  field3365   ;\n    public  String  field3366   ;\n    public  String  field3367   ;\n    public  String  field3368   ;\n    public  String  field3369   ;\n    public  String  field3370   ;\n    public  String  field3371   ;\n    public  String  field3372   ;\n    public  String  field3373   ;\n    public  String  field3374   ;\n    public  String  field3375   ;\n    public  String  field3376   ;\n    public  String  field3377   ;\n    public  String  field3378   ;\n    public  String  field3379   ;\n    public  String  field3380   ;\n    public  String  field3381   ;\n    public  String  field3382   ;\n    public  String  field3383   ;\n    public  String  field3384   ;\n    public  String  field3385   ;\n    public  String  field3386   ;\n    public  String  field3387   ;\n    public  String  field3388   ;\n    public  String  field3389   ;\n    public  String  field3390   ;\n    public  String  field3391   ;\n    public  String  field3392   ;\n    public  String  field3393   ;\n    public  String  field3394   ;\n    public  String  field3395   ;\n    public  String  field3396   ;\n    public  String  field3397   ;\n    public  String  field3398   ;\n    public  String  field3399   ;\n    public  String  field3400   ;\n    public  String  field3401   ;\n    public  String  field3402   ;\n    public  String  field3403   ;\n    public  String  field3404   ;\n    public  String  field3405   ;\n    public  String  field3406   ;\n    public  String  field3407   ;\n    public  String  field3408   ;\n    public  String  field3409   ;\n    public  String  field3410   ;\n    public  String  field3411   ;\n    public  String  field3412   ;\n    public  String  field3413   ;\n    public  String  field3414   ;\n    public  String  field3415   ;\n    public  String  field3416   ;\n    public  String  field3417   ;\n    public  String  field3418   ;\n    public  String  field3419   ;\n    public  String  field3420   ;\n    public  String  field3421   ;\n    public  String  field3422   ;\n    public  String  field3423   ;\n    public  String  field3424   ;\n    public  String  field3425   ;\n    public  String  field3426   ;\n    public  String  field3427   ;\n    public  String  field3428   ;\n    public  String  field3429   ;\n    public  String  field3430   ;\n    public  String  field3431   ;\n    public  String  field3432   ;\n    public  String  field3433   ;\n    public  String  field3434   ;\n    public  String  field3435   ;\n    public  String  field3436   ;\n    public  String  field3437   ;\n    public  String  field3438   ;\n    public  String  field3439   ;\n    public  String  field3440   ;\n    public  String  field3441   ;\n    public  String  field3442   ;\n    public  String  field3443   ;\n    public  String  field3444   ;\n    public  String  field3445   ;\n    public  String  field3446   ;\n    public  String  field3447   ;\n    public  String  field3448   ;\n    public  String  field3449   ;\n    public  String  field3450   ;\n    public  String  field3451   ;\n    public  String  field3452   ;\n    public  String  field3453   ;\n    public  String  field3454   ;\n    public  String  field3455   ;\n    public  String  field3456   ;\n    public  String  field3457   ;\n    public  String  field3458   ;\n    public  String  field3459   ;\n    public  String  field3460   ;\n    public  String  field3461   ;\n    public  String  field3462   ;\n    public  String  field3463   ;\n    public  String  field3464   ;\n    public  String  field3465   ;\n    public  String  field3466   ;\n    public  String  field3467   ;\n    public  String  field3468   ;\n    public  String  field3469   ;\n    public  String  field3470   ;\n    public  String  field3471   ;\n    public  String  field3472   ;\n    public  String  field3473   ;\n    public  String  field3474   ;\n    public  String  field3475   ;\n    public  String  field3476   ;\n    public  String  field3477   ;\n    public  String  field3478   ;\n    public  String  field3479   ;\n    public  String  field3480   ;\n    public  String  field3481   ;\n    public  String  field3482   ;\n    public  String  field3483   ;\n    public  String  field3484   ;\n    public  String  field3485   ;\n    public  String  field3486   ;\n    public  String  field3487   ;\n    public  String  field3488   ;\n    public  String  field3489   ;\n    public  String  field3490   ;\n    public  String  field3491   ;\n    public  String  field3492   ;\n    public  String  field3493   ;\n    public  String  field3494   ;\n    public  String  field3495   ;\n    public  String  field3496   ;\n    public  String  field3497   ;\n    public  String  field3498   ;\n    public  String  field3499   ;\n    public  String  field3500   ;\n    public  String  field3501   ;\n    public  String  field3502   ;\n    public  String  field3503   ;\n    public  String  field3504   ;\n    public  String  field3505   ;\n    public  String  field3506   ;\n    public  String  field3507   ;\n    public  String  field3508   ;\n    public  String  field3509   ;\n    public  String  field3510   ;\n    public  String  field3511   ;\n    public  String  field3512   ;\n    public  String  field3513   ;\n    public  String  field3514   ;\n    public  String  field3515   ;\n    public  String  field3516   ;\n    public  String  field3517   ;\n    public  String  field3518   ;\n    public  String  field3519   ;\n    public  String  field3520   ;\n    public  String  field3521   ;\n    public  String  field3522   ;\n    public  String  field3523   ;\n    public  String  field3524   ;\n    public  String  field3525   ;\n    public  String  field3526   ;\n    public  String  field3527   ;\n    public  String  field3528   ;\n    public  String  field3529   ;\n    public  String  field3530   ;\n    public  String  field3531   ;\n    public  String  field3532   ;\n    public  String  field3533   ;\n    public  String  field3534   ;\n    public  String  field3535   ;\n    public  String  field3536   ;\n    public  String  field3537   ;\n    public  String  field3538   ;\n    public  String  field3539   ;\n    public  String  field3540   ;\n    public  String  field3541   ;\n    public  String  field3542   ;\n    public  String  field3543   ;\n    public  String  field3544   ;\n    public  String  field3545   ;\n    public  String  field3546   ;\n    public  String  field3547   ;\n    public  String  field3548   ;\n    public  String  field3549   ;\n    public  String  field3550   ;\n    public  String  field3551   ;\n    public  String  field3552   ;\n    public  String  field3553   ;\n    public  String  field3554   ;\n    public  String  field3555   ;\n    public  String  field3556   ;\n    public  String  field3557   ;\n    public  String  field3558   ;\n    public  String  field3559   ;\n    public  String  field3560   ;\n    public  String  field3561   ;\n    public  String  field3562   ;\n    public  String  field3563   ;\n    public  String  field3564   ;\n    public  String  field3565   ;\n    public  String  field3566   ;\n    public  String  field3567   ;\n    public  String  field3568   ;\n    public  String  field3569   ;\n    public  String  field3570   ;\n    public  String  field3571   ;\n    public  String  field3572   ;\n    public  String  field3573   ;\n    public  String  field3574   ;\n    public  String  field3575   ;\n    public  String  field3576   ;\n    public  String  field3577   ;\n    public  String  field3578   ;\n    public  String  field3579   ;\n    public  String  field3580   ;\n    public  String  field3581   ;\n    public  String  field3582   ;\n    public  String  field3583   ;\n    public  String  field3584   ;\n    public  String  field3585   ;\n    public  String  field3586   ;\n    public  String  field3587   ;\n    public  String  field3588   ;\n    public  String  field3589   ;\n    public  String  field3590   ;\n    public  String  field3591   ;\n    public  String  field3592   ;\n    public  String  field3593   ;\n    public  String  field3594   ;\n    public  String  field3595   ;\n    public  String  field3596   ;\n    public  String  field3597   ;\n    public  String  field3598   ;\n    public  String  field3599   ;\n    public  String  field3600   ;\n    public  String  field3601   ;\n    public  String  field3602   ;\n    public  String  field3603   ;\n    public  String  field3604   ;\n    public  String  field3605   ;\n    public  String  field3606   ;\n    public  String  field3607   ;\n    public  String  field3608   ;\n    public  String  field3609   ;\n    public  String  field3610   ;\n    public  String  field3611   ;\n    public  String  field3612   ;\n    public  String  field3613   ;\n    public  String  field3614   ;\n    public  String  field3615   ;\n    public  String  field3616   ;\n    public  String  field3617   ;\n    public  String  field3618   ;\n    public  String  field3619   ;\n    public  String  field3620   ;\n    public  String  field3621   ;\n    public  String  field3622   ;\n    public  String  field3623   ;\n    public  String  field3624   ;\n    public  String  field3625   ;\n    public  String  field3626   ;\n    public  String  field3627   ;\n    public  String  field3628   ;\n    public  String  field3629   ;\n    public  String  field3630   ;\n    public  String  field3631   ;\n    public  String  field3632   ;\n    public  String  field3633   ;\n    public  String  field3634   ;\n    public  String  field3635   ;\n    public  String  field3636   ;\n    public  String  field3637   ;\n    public  String  field3638   ;\n    public  String  field3639   ;\n    public  String  field3640   ;\n    public  String  field3641   ;\n    public  String  field3642   ;\n    public  String  field3643   ;\n    public  String  field3644   ;\n    public  String  field3645   ;\n    public  String  field3646   ;\n    public  String  field3647   ;\n    public  String  field3648   ;\n    public  String  field3649   ;\n    public  String  field3650   ;\n    public  String  field3651   ;\n    public  String  field3652   ;\n    public  String  field3653   ;\n    public  String  field3654   ;\n    public  String  field3655   ;\n    public  String  field3656   ;\n    public  String  field3657   ;\n    public  String  field3658   ;\n    public  String  field3659   ;\n    public  String  field3660   ;\n    public  String  field3661   ;\n    public  String  field3662   ;\n    public  String  field3663   ;\n    public  String  field3664   ;\n    public  String  field3665   ;\n    public  String  field3666   ;\n    public  String  field3667   ;\n    public  String  field3668   ;\n    public  String  field3669   ;\n    public  String  field3670   ;\n    public  String  field3671   ;\n    public  String  field3672   ;\n    public  String  field3673   ;\n    public  String  field3674   ;\n    public  String  field3675   ;\n    public  String  field3676   ;\n    public  String  field3677   ;\n    public  String  field3678   ;\n    public  String  field3679   ;\n    public  String  field3680   ;\n    public  String  field3681   ;\n    public  String  field3682   ;\n    public  String  field3683   ;\n    public  String  field3684   ;\n    public  String  field3685   ;\n    public  String  field3686   ;\n    public  String  field3687   ;\n    public  String  field3688   ;\n    public  String  field3689   ;\n    public  String  field3690   ;\n    public  String  field3691   ;\n    public  String  field3692   ;\n    public  String  field3693   ;\n    public  String  field3694   ;\n    public  String  field3695   ;\n    public  String  field3696   ;\n    public  String  field3697   ;\n    public  String  field3698   ;\n    public  String  field3699   ;\n    public  String  field3700   ;\n    public  String  field3701   ;\n    public  String  field3702   ;\n    public  String  field3703   ;\n    public  String  field3704   ;\n    public  String  field3705   ;\n    public  String  field3706   ;\n    public  String  field3707   ;\n    public  String  field3708   ;\n    public  String  field3709   ;\n    public  String  field3710   ;\n    public  String  field3711   ;\n    public  String  field3712   ;\n    public  String  field3713   ;\n    public  String  field3714   ;\n    public  String  field3715   ;\n    public  String  field3716   ;\n    public  String  field3717   ;\n    public  String  field3718   ;\n    public  String  field3719   ;\n    public  String  field3720   ;\n    public  String  field3721   ;\n    public  String  field3722   ;\n    public  String  field3723   ;\n    public  String  field3724   ;\n    public  String  field3725   ;\n    public  String  field3726   ;\n    public  String  field3727   ;\n    public  String  field3728   ;\n    public  String  field3729   ;\n    public  String  field3730   ;\n    public  String  field3731   ;\n    public  String  field3732   ;\n    public  String  field3733   ;\n    public  String  field3734   ;\n    public  String  field3735   ;\n    public  String  field3736   ;\n    public  String  field3737   ;\n    public  String  field3738   ;\n    public  String  field3739   ;\n    public  String  field3740   ;\n    public  String  field3741   ;\n    public  String  field3742   ;\n    public  String  field3743   ;\n    public  String  field3744   ;\n    public  String  field3745   ;\n    public  String  field3746   ;\n    public  String  field3747   ;\n    public  String  field3748   ;\n    public  String  field3749   ;\n    public  String  field3750   ;\n    public  String  field3751   ;\n    public  String  field3752   ;\n    public  String  field3753   ;\n    public  String  field3754   ;\n    public  String  field3755   ;\n    public  String  field3756   ;\n    public  String  field3757   ;\n    public  String  field3758   ;\n    public  String  field3759   ;\n    public  String  field3760   ;\n    public  String  field3761   ;\n    public  String  field3762   ;\n    public  String  field3763   ;\n    public  String  field3764   ;\n    public  String  field3765   ;\n    public  String  field3766   ;\n    public  String  field3767   ;\n    public  String  field3768   ;\n    public  String  field3769   ;\n    public  String  field3770   ;\n    public  String  field3771   ;\n    public  String  field3772   ;\n    public  String  field3773   ;\n    public  String  field3774   ;\n    public  String  field3775   ;\n    public  String  field3776   ;\n    public  String  field3777   ;\n    public  String  field3778   ;\n    public  String  field3779   ;\n    public  String  field3780   ;\n    public  String  field3781   ;\n    public  String  field3782   ;\n    public  String  field3783   ;\n    public  String  field3784   ;\n    public  String  field3785   ;\n    public  String  field3786   ;\n    public  String  field3787   ;\n    public  String  field3788   ;\n    public  String  field3789   ;\n    public  String  field3790   ;\n    public  String  field3791   ;\n    public  String  field3792   ;\n    public  String  field3793   ;\n    public  String  field3794   ;\n    public  String  field3795   ;\n    public  String  field3796   ;\n    public  String  field3797   ;\n    public  String  field3798   ;\n    public  String  field3799   ;\n    public  String  field3800   ;\n    public  String  field3801   ;\n    public  String  field3802   ;\n    public  String  field3803   ;\n    public  String  field3804   ;\n    public  String  field3805   ;\n    public  String  field3806   ;\n    public  String  field3807   ;\n    public  String  field3808   ;\n    public  String  field3809   ;\n    public  String  field3810   ;\n    public  String  field3811   ;\n    public  String  field3812   ;\n    public  String  field3813   ;\n    public  String  field3814   ;\n    public  String  field3815   ;\n    public  String  field3816   ;\n    public  String  field3817   ;\n    public  String  field3818   ;\n    public  String  field3819   ;\n    public  String  field3820   ;\n    public  String  field3821   ;\n    public  String  field3822   ;\n    public  String  field3823   ;\n    public  String  field3824   ;\n    public  String  field3825   ;\n    public  String  field3826   ;\n    public  String  field3827   ;\n    public  String  field3828   ;\n    public  String  field3829   ;\n    public  String  field3830   ;\n    public  String  field3831   ;\n    public  String  field3832   ;\n    public  String  field3833   ;\n    public  String  field3834   ;\n    public  String  field3835   ;\n    public  String  field3836   ;\n    public  String  field3837   ;\n    public  String  field3838   ;\n    public  String  field3839   ;\n    public  String  field3840   ;\n    public  String  field3841   ;\n    public  String  field3842   ;\n    public  String  field3843   ;\n    public  String  field3844   ;\n    public  String  field3845   ;\n    public  String  field3846   ;\n    public  String  field3847   ;\n    public  String  field3848   ;\n    public  String  field3849   ;\n    public  String  field3850   ;\n    public  String  field3851   ;\n    public  String  field3852   ;\n    public  String  field3853   ;\n    public  String  field3854   ;\n    public  String  field3855   ;\n    public  String  field3856   ;\n    public  String  field3857   ;\n    public  String  field3858   ;\n    public  String  field3859   ;\n    public  String  field3860   ;\n    public  String  field3861   ;\n    public  String  field3862   ;\n    public  String  field3863   ;\n    public  String  field3864   ;\n    public  String  field3865   ;\n    public  String  field3866   ;\n    public  String  field3867   ;\n    public  String  field3868   ;\n    public  String  field3869   ;\n    public  String  field3870   ;\n    public  String  field3871   ;\n    public  String  field3872   ;\n    public  String  field3873   ;\n    public  String  field3874   ;\n    public  String  field3875   ;\n    public  String  field3876   ;\n    public  String  field3877   ;\n    public  String  field3878   ;\n    public  String  field3879   ;\n    public  String  field3880   ;\n    public  String  field3881   ;\n    public  String  field3882   ;\n    public  String  field3883   ;\n    public  String  field3884   ;\n    public  String  field3885   ;\n    public  String  field3886   ;\n    public  String  field3887   ;\n    public  String  field3888   ;\n    public  String  field3889   ;\n    public  String  field3890   ;\n    public  String  field3891   ;\n    public  String  field3892   ;\n    public  String  field3893   ;\n    public  String  field3894   ;\n    public  String  field3895   ;\n    public  String  field3896   ;\n    public  String  field3897   ;\n    public  String  field3898   ;\n    public  String  field3899   ;\n    public  String  field3900   ;\n    public  String  field3901   ;\n    public  String  field3902   ;\n    public  String  field3903   ;\n    public  String  field3904   ;\n    public  String  field3905   ;\n    public  String  field3906   ;\n    public  String  field3907   ;\n    public  String  field3908   ;\n    public  String  field3909   ;\n    public  String  field3910   ;\n    public  String  field3911   ;\n    public  String  field3912   ;\n    public  String  field3913   ;\n    public  String  field3914   ;\n    public  String  field3915   ;\n    public  String  field3916   ;\n    public  String  field3917   ;\n    public  String  field3918   ;\n    public  String  field3919   ;\n    public  String  field3920   ;\n    public  String  field3921   ;\n    public  String  field3922   ;\n    public  String  field3923   ;\n    public  String  field3924   ;\n    public  String  field3925   ;\n    public  String  field3926   ;\n    public  String  field3927   ;\n    public  String  field3928   ;\n    public  String  field3929   ;\n    public  String  field3930   ;\n    public  String  field3931   ;\n    public  String  field3932   ;\n    public  String  field3933   ;\n    public  String  field3934   ;\n    public  String  field3935   ;\n    public  String  field3936   ;\n    public  String  field3937   ;\n    public  String  field3938   ;\n    public  String  field3939   ;\n    public  String  field3940   ;\n    public  String  field3941   ;\n    public  String  field3942   ;\n    public  String  field3943   ;\n    public  String  field3944   ;\n    public  String  field3945   ;\n    public  String  field3946   ;\n    public  String  field3947   ;\n    public  String  field3948   ;\n    public  String  field3949   ;\n    public  String  field3950   ;\n    public  String  field3951   ;\n    public  String  field3952   ;\n    public  String  field3953   ;\n    public  String  field3954   ;\n    public  String  field3955   ;\n    public  String  field3956   ;\n    public  String  field3957   ;\n    public  String  field3958   ;\n    public  String  field3959   ;\n    public  String  field3960   ;\n    public  String  field3961   ;\n    public  String  field3962   ;\n    public  String  field3963   ;\n    public  String  field3964   ;\n    public  String  field3965   ;\n    public  String  field3966   ;\n    public  String  field3967   ;\n    public  String  field3968   ;\n    public  String  field3969   ;\n    public  String  field3970   ;\n    public  String  field3971   ;\n    public  String  field3972   ;\n    public  String  field3973   ;\n    public  String  field3974   ;\n    public  String  field3975   ;\n    public  String  field3976   ;\n    public  String  field3977   ;\n    public  String  field3978   ;\n    public  String  field3979   ;\n    public  String  field3980   ;\n    public  String  field3981   ;\n    public  String  field3982   ;\n    public  String  field3983   ;\n    public  String  field3984   ;\n    public  String  field3985   ;\n    public  String  field3986   ;\n    public  String  field3987   ;\n    public  String  field3988   ;\n    public  String  field3989   ;\n    public  String  field3990   ;\n    public  String  field3991   ;\n    public  String  field3992   ;\n    public  String  field3993   ;\n    public  String  field3994   ;\n    public  String  field3995   ;\n    public  String  field3996   ;\n    public  String  field3997   ;\n    public  String  field3998   ;\n    public  String  field3999   ;\n    public  String  field4000   ;\n    public  String  field4001   ;\n    public  String  field4002   ;\n    public  String  field4003   ;\n    public  String  field4004   ;\n    public  String  field4005   ;\n    public  String  field4006   ;\n    public  String  field4007   ;\n    public  String  field4008   ;\n    public  String  field4009   ;\n    public  String  field4010   ;\n    public  String  field4011   ;\n    public  String  field4012   ;\n    public  String  field4013   ;\n    public  String  field4014   ;\n    public  String  field4015   ;\n    public  String  field4016   ;\n    public  String  field4017   ;\n    public  String  field4018   ;\n    public  String  field4019   ;\n    public  String  field4020   ;\n    public  String  field4021   ;\n    public  String  field4022   ;\n    public  String  field4023   ;\n    public  String  field4024   ;\n    public  String  field4025   ;\n    public  String  field4026   ;\n    public  String  field4027   ;\n    public  String  field4028   ;\n    public  String  field4029   ;\n    public  String  field4030   ;\n    public  String  field4031   ;\n    public  String  field4032   ;\n    public  String  field4033   ;\n    public  String  field4034   ;\n    public  String  field4035   ;\n    public  String  field4036   ;\n    public  String  field4037   ;\n    public  String  field4038   ;\n    public  String  field4039   ;\n    public  String  field4040   ;\n    public  String  field4041   ;\n    public  String  field4042   ;\n    public  String  field4043   ;\n    public  String  field4044   ;\n    public  String  field4045   ;\n    public  String  field4046   ;\n    public  String  field4047   ;\n    public  String  field4048   ;\n    public  String  field4049   ;\n    public  String  field4050   ;\n    public  String  field4051   ;\n    public  String  field4052   ;\n    public  String  field4053   ;\n    public  String  field4054   ;\n    public  String  field4055   ;\n    public  String  field4056   ;\n    public  String  field4057   ;\n    public  String  field4058   ;\n    public  String  field4059   ;\n    public  String  field4060   ;\n    public  String  field4061   ;\n    public  String  field4062   ;\n    public  String  field4063   ;\n    public  String  field4064   ;\n    public  String  field4065   ;\n    public  String  field4066   ;\n    public  String  field4067   ;\n    public  String  field4068   ;\n    public  String  field4069   ;\n    public  String  field4070   ;\n    public  String  field4071   ;\n    public  String  field4072   ;\n    public  String  field4073   ;\n    public  String  field4074   ;\n    public  String  field4075   ;\n    public  String  field4076   ;\n    public  String  field4077   ;\n    public  String  field4078   ;\n    public  String  field4079   ;\n    public  String  field4080   ;\n    public  String  field4081   ;\n    public  String  field4082   ;\n    public  String  field4083   ;\n    public  String  field4084   ;\n    public  String  field4085   ;\n    public  String  field4086   ;\n    public  String  field4087   ;\n    public  String  field4088   ;\n    public  String  field4089   ;\n    public  String  field4090   ;\n    public  String  field4091   ;\n    public  String  field4092   ;\n    public  String  field4093   ;\n    public  String  field4094   ;\n    public  String  field4095   ;\n    public  String  field4096   ;\n    public  String  field4097   ;\n    public  String  field4098   ;\n    public  String  field4099   ;\n    public  String  field4100   ;\n    public  String  field4101   ;\n    public  String  field4102   ;\n    public  String  field4103   ;\n    public  String  field4104   ;\n    public  String  field4105   ;\n    public  String  field4106   ;\n    public  String  field4107   ;\n    public  String  field4108   ;\n    public  String  field4109   ;\n    public  String  field4110   ;\n    public  String  field4111   ;\n    public  String  field4112   ;\n    public  String  field4113   ;\n    public  String  field4114   ;\n    public  String  field4115   ;\n    public  String  field4116   ;\n    public  String  field4117   ;\n    public  String  field4118   ;\n    public  String  field4119   ;\n    public  String  field4120   ;\n    public  String  field4121   ;\n    public  String  field4122   ;\n    public  String  field4123   ;\n    public  String  field4124   ;\n    public  String  field4125   ;\n    public  String  field4126   ;\n    public  String  field4127   ;\n    public  String  field4128   ;\n    public  String  field4129   ;\n    public  String  field4130   ;\n    public  String  field4131   ;\n    public  String  field4132   ;\n    public  String  field4133   ;\n    public  String  field4134   ;\n    public  String  field4135   ;\n    public  String  field4136   ;\n    public  String  field4137   ;\n    public  String  field4138   ;\n    public  String  field4139   ;\n    public  String  field4140   ;\n    public  String  field4141   ;\n    public  String  field4142   ;\n    public  String  field4143   ;\n    public  String  field4144   ;\n    public  String  field4145   ;\n    public  String  field4146   ;\n    public  String  field4147   ;\n    public  String  field4148   ;\n    public  String  field4149   ;\n    public  String  field4150   ;\n    public  String  field4151   ;\n    public  String  field4152   ;\n    public  String  field4153   ;\n    public  String  field4154   ;\n    public  String  field4155   ;\n    public  String  field4156   ;\n    public  String  field4157   ;\n    public  String  field4158   ;\n    public  String  field4159   ;\n    public  String  field4160   ;\n    public  String  field4161   ;\n    public  String  field4162   ;\n    public  String  field4163   ;\n    public  String  field4164   ;\n    public  String  field4165   ;\n    public  String  field4166   ;\n    public  String  field4167   ;\n    public  String  field4168   ;\n    public  String  field4169   ;\n    public  String  field4170   ;\n    public  String  field4171   ;\n    public  String  field4172   ;\n    public  String  field4173   ;\n    public  String  field4174   ;\n    public  String  field4175   ;\n    public  String  field4176   ;\n    public  String  field4177   ;\n    public  String  field4178   ;\n    public  String  field4179   ;\n    public  String  field4180   ;\n    public  String  field4181   ;\n    public  String  field4182   ;\n    public  String  field4183   ;\n    public  String  field4184   ;\n    public  String  field4185   ;\n    public  String  field4186   ;\n    public  String  field4187   ;\n    public  String  field4188   ;\n    public  String  field4189   ;\n    public  String  field4190   ;\n    public  String  field4191   ;\n    public  String  field4192   ;\n    public  String  field4193   ;\n    public  String  field4194   ;\n    public  String  field4195   ;\n    public  String  field4196   ;\n    public  String  field4197   ;\n    public  String  field4198   ;\n    public  String  field4199   ;\n    public  String  field4200   ;\n    public  String  field4201   ;\n    public  String  field4202   ;\n    public  String  field4203   ;\n    public  String  field4204   ;\n    public  String  field4205   ;\n    public  String  field4206   ;\n    public  String  field4207   ;\n    public  String  field4208   ;\n    public  String  field4209   ;\n    public  String  field4210   ;\n    public  String  field4211   ;\n    public  String  field4212   ;\n    public  String  field4213   ;\n    public  String  field4214   ;\n    public  String  field4215   ;\n    public  String  field4216   ;\n    public  String  field4217   ;\n    public  String  field4218   ;\n    public  String  field4219   ;\n    public  String  field4220   ;\n    public  String  field4221   ;\n    public  String  field4222   ;\n    public  String  field4223   ;\n    public  String  field4224   ;\n    public  String  field4225   ;\n    public  String  field4226   ;\n    public  String  field4227   ;\n    public  String  field4228   ;\n    public  String  field4229   ;\n    public  String  field4230   ;\n    public  String  field4231   ;\n    public  String  field4232   ;\n    public  String  field4233   ;\n    public  String  field4234   ;\n    public  String  field4235   ;\n    public  String  field4236   ;\n    public  String  field4237   ;\n    public  String  field4238   ;\n    public  String  field4239   ;\n    public  String  field4240   ;\n    public  String  field4241   ;\n    public  String  field4242   ;\n    public  String  field4243   ;\n    public  String  field4244   ;\n    public  String  field4245   ;\n    public  String  field4246   ;\n    public  String  field4247   ;\n    public  String  field4248   ;\n    public  String  field4249   ;\n    public  String  field4250   ;\n    public  String  field4251   ;\n    public  String  field4252   ;\n    public  String  field4253   ;\n    public  String  field4254   ;\n    public  String  field4255   ;\n    public  String  field4256   ;\n    public  String  field4257   ;\n    public  String  field4258   ;\n    public  String  field4259   ;\n    public  String  field4260   ;\n    public  String  field4261   ;\n    public  String  field4262   ;\n    public  String  field4263   ;\n    public  String  field4264   ;\n    public  String  field4265   ;\n    public  String  field4266   ;\n    public  String  field4267   ;\n    public  String  field4268   ;\n    public  String  field4269   ;\n    public  String  field4270   ;\n    public  String  field4271   ;\n    public  String  field4272   ;\n    public  String  field4273   ;\n    public  String  field4274   ;\n    public  String  field4275   ;\n    public  String  field4276   ;\n    public  String  field4277   ;\n    public  String  field4278   ;\n    public  String  field4279   ;\n    public  String  field4280   ;\n    public  String  field4281   ;\n    public  String  field4282   ;\n    public  String  field4283   ;\n    public  String  field4284   ;\n    public  String  field4285   ;\n    public  String  field4286   ;\n    public  String  field4287   ;\n    public  String  field4288   ;\n    public  String  field4289   ;\n    public  String  field4290   ;\n    public  String  field4291   ;\n    public  String  field4292   ;\n    public  String  field4293   ;\n    public  String  field4294   ;\n    public  String  field4295   ;\n    public  String  field4296   ;\n    public  String  field4297   ;\n    public  String  field4298   ;\n    public  String  field4299   ;\n    public  String  field4300   ;\n    public  String  field4301   ;\n    public  String  field4302   ;\n    public  String  field4303   ;\n    public  String  field4304   ;\n    public  String  field4305   ;\n    public  String  field4306   ;\n    public  String  field4307   ;\n    public  String  field4308   ;\n    public  String  field4309   ;\n    public  String  field4310   ;\n    public  String  field4311   ;\n    public  String  field4312   ;\n    public  String  field4313   ;\n    public  String  field4314   ;\n    public  String  field4315   ;\n    public  String  field4316   ;\n    public  String  field4317   ;\n    public  String  field4318   ;\n    public  String  field4319   ;\n    public  String  field4320   ;\n    public  String  field4321   ;\n    public  String  field4322   ;\n    public  String  field4323   ;\n    public  String  field4324   ;\n    public  String  field4325   ;\n    public  String  field4326   ;\n    public  String  field4327   ;\n    public  String  field4328   ;\n    public  String  field4329   ;\n    public  String  field4330   ;\n    public  String  field4331   ;\n    public  String  field4332   ;\n    public  String  field4333   ;\n    public  String  field4334   ;\n    public  String  field4335   ;\n    public  String  field4336   ;\n    public  String  field4337   ;\n    public  String  field4338   ;\n    public  String  field4339   ;\n    public  String  field4340   ;\n    public  String  field4341   ;\n    public  String  field4342   ;\n    public  String  field4343   ;\n    public  String  field4344   ;\n    public  String  field4345   ;\n    public  String  field4346   ;\n    public  String  field4347   ;\n    public  String  field4348   ;\n    public  String  field4349   ;\n    public  String  field4350   ;\n    public  String  field4351   ;\n    public  String  field4352   ;\n    public  String  field4353   ;\n    public  String  field4354   ;\n    public  String  field4355   ;\n    public  String  field4356   ;\n    public  String  field4357   ;\n    public  String  field4358   ;\n    public  String  field4359   ;\n    public  String  field4360   ;\n    public  String  field4361   ;\n    public  String  field4362   ;\n    public  String  field4363   ;\n    public  String  field4364   ;\n    public  String  field4365   ;\n    public  String  field4366   ;\n    public  String  field4367   ;\n    public  String  field4368   ;\n    public  String  field4369   ;\n    public  String  field4370   ;\n    public  String  field4371   ;\n    public  String  field4372   ;\n    public  String  field4373   ;\n    public  String  field4374   ;\n    public  String  field4375   ;\n    public  String  field4376   ;\n    public  String  field4377   ;\n    public  String  field4378   ;\n    public  String  field4379   ;\n    public  String  field4380   ;\n    public  String  field4381   ;\n    public  String  field4382   ;\n    public  String  field4383   ;\n    public  String  field4384   ;\n    public  String  field4385   ;\n    public  String  field4386   ;\n    public  String  field4387   ;\n    public  String  field4388   ;\n    public  String  field4389   ;\n    public  String  field4390   ;\n    public  String  field4391   ;\n    public  String  field4392   ;\n    public  String  field4393   ;\n    public  String  field4394   ;\n    public  String  field4395   ;\n    public  String  field4396   ;\n    public  String  field4397   ;\n    public  String  field4398   ;\n    public  String  field4399   ;\n    public  String  field4400   ;\n    public  String  field4401   ;\n    public  String  field4402   ;\n    public  String  field4403   ;\n    public  String  field4404   ;\n    public  String  field4405   ;\n    public  String  field4406   ;\n    public  String  field4407   ;\n    public  String  field4408   ;\n    public  String  field4409   ;\n    public  String  field4410   ;\n    public  String  field4411   ;\n    public  String  field4412   ;\n    public  String  field4413   ;\n    public  String  field4414   ;\n    public  String  field4415   ;\n    public  String  field4416   ;\n    public  String  field4417   ;\n    public  String  field4418   ;\n    public  String  field4419   ;\n    public  String  field4420   ;\n    public  String  field4421   ;\n    public  String  field4422   ;\n    public  String  field4423   ;\n    public  String  field4424   ;\n    public  String  field4425   ;\n    public  String  field4426   ;\n    public  String  field4427   ;\n    public  String  field4428   ;\n    public  String  field4429   ;\n    public  String  field4430   ;\n    public  String  field4431   ;\n    public  String  field4432   ;\n    public  String  field4433   ;\n    public  String  field4434   ;\n    public  String  field4435   ;\n    public  String  field4436   ;\n    public  String  field4437   ;\n    public  String  field4438   ;\n    public  String  field4439   ;\n    public  String  field4440   ;\n    public  String  field4441   ;\n    public  String  field4442   ;\n    public  String  field4443   ;\n    public  String  field4444   ;\n    public  String  field4445   ;\n    public  String  field4446   ;\n    public  String  field4447   ;\n    public  String  field4448   ;\n    public  String  field4449   ;\n    public  String  field4450   ;\n    public  String  field4451   ;\n    public  String  field4452   ;\n    public  String  field4453   ;\n    public  String  field4454   ;\n    public  String  field4455   ;\n    public  String  field4456   ;\n    public  String  field4457   ;\n    public  String  field4458   ;\n    public  String  field4459   ;\n    public  String  field4460   ;\n    public  String  field4461   ;\n    public  String  field4462   ;\n    public  String  field4463   ;\n    public  String  field4464   ;\n    public  String  field4465   ;\n    public  String  field4466   ;\n    public  String  field4467   ;\n    public  String  field4468   ;\n    public  String  field4469   ;\n    public  String  field4470   ;\n    public  String  field4471   ;\n    public  String  field4472   ;\n    public  String  field4473   ;\n    public  String  field4474   ;\n    public  String  field4475   ;\n    public  String  field4476   ;\n    public  String  field4477   ;\n    public  String  field4478   ;\n    public  String  field4479   ;\n    public  String  field4480   ;\n    public  String  field4481   ;\n    public  String  field4482   ;\n    public  String  field4483   ;\n    public  String  field4484   ;\n    public  String  field4485   ;\n    public  String  field4486   ;\n    public  String  field4487   ;\n    public  String  field4488   ;\n    public  String  field4489   ;\n    public  String  field4490   ;\n    public  String  field4491   ;\n    public  String  field4492   ;\n    public  String  field4493   ;\n    public  String  field4494   ;\n    public  String  field4495   ;\n    public  String  field4496   ;\n    public  String  field4497   ;\n    public  String  field4498   ;\n    public  String  field4499   ;\n    public  String  field4500   ;\n    public  String  field4501   ;\n    public  String  field4502   ;\n    public  String  field4503   ;\n    public  String  field4504   ;\n    public  String  field4505   ;\n    public  String  field4506   ;\n    public  String  field4507   ;\n    public  String  field4508   ;\n    public  String  field4509   ;\n    public  String  field4510   ;\n    public  String  field4511   ;\n    public  String  field4512   ;\n    public  String  field4513   ;\n    public  String  field4514   ;\n    public  String  field4515   ;\n    public  String  field4516   ;\n    public  String  field4517   ;\n    public  String  field4518   ;\n    public  String  field4519   ;\n    public  String  field4520   ;\n    public  String  field4521   ;\n    public  String  field4522   ;\n    public  String  field4523   ;\n    public  String  field4524   ;\n    public  String  field4525   ;\n    public  String  field4526   ;\n    public  String  field4527   ;\n    public  String  field4528   ;\n    public  String  field4529   ;\n    public  String  field4530   ;\n    public  String  field4531   ;\n    public  String  field4532   ;\n    public  String  field4533   ;\n    public  String  field4534   ;\n    public  String  field4535   ;\n    public  String  field4536   ;\n    public  String  field4537   ;\n    public  String  field4538   ;\n    public  String  field4539   ;\n    public  String  field4540   ;\n    public  String  field4541   ;\n    public  String  field4542   ;\n    public  String  field4543   ;\n    public  String  field4544   ;\n    public  String  field4545   ;\n    public  String  field4546   ;\n    public  String  field4547   ;\n    public  String  field4548   ;\n    public  String  field4549   ;\n    public  String  field4550   ;\n    public  String  field4551   ;\n    public  String  field4552   ;\n    public  String  field4553   ;\n    public  String  field4554   ;\n    public  String  field4555   ;\n    public  String  field4556   ;\n    public  String  field4557   ;\n    public  String  field4558   ;\n    public  String  field4559   ;\n    public  String  field4560   ;\n    public  String  field4561   ;\n    public  String  field4562   ;\n    public  String  field4563   ;\n    public  String  field4564   ;\n    public  String  field4565   ;\n    public  String  field4566   ;\n    public  String  field4567   ;\n    public  String  field4568   ;\n    public  String  field4569   ;\n    public  String  field4570   ;\n    public  String  field4571   ;\n    public  String  field4572   ;\n    public  String  field4573   ;\n    public  String  field4574   ;\n    public  String  field4575   ;\n    public  String  field4576   ;\n    public  String  field4577   ;\n    public  String  field4578   ;\n    public  String  field4579   ;\n    public  String  field4580   ;\n    public  String  field4581   ;\n    public  String  field4582   ;\n    public  String  field4583   ;\n    public  String  field4584   ;\n    public  String  field4585   ;\n    public  String  field4586   ;\n    public  String  field4587   ;\n    public  String  field4588   ;\n    public  String  field4589   ;\n    public  String  field4590   ;\n    public  String  field4591   ;\n    public  String  field4592   ;\n    public  String  field4593   ;\n    public  String  field4594   ;\n    public  String  field4595   ;\n    public  String  field4596   ;\n    public  String  field4597   ;\n    public  String  field4598   ;\n    public  String  field4599   ;\n    public  String  field4600   ;\n    public  String  field4601   ;\n    public  String  field4602   ;\n    public  String  field4603   ;\n    public  String  field4604   ;\n    public  String  field4605   ;\n    public  String  field4606   ;\n    public  String  field4607   ;\n    public  String  field4608   ;\n    public  String  field4609   ;\n    public  String  field4610   ;\n    public  String  field4611   ;\n    public  String  field4612   ;\n    public  String  field4613   ;\n    public  String  field4614   ;\n    public  String  field4615   ;\n    public  String  field4616   ;\n    public  String  field4617   ;\n    public  String  field4618   ;\n    public  String  field4619   ;\n    public  String  field4620   ;\n    public  String  field4621   ;\n    public  String  field4622   ;\n    public  String  field4623   ;\n    public  String  field4624   ;\n    public  String  field4625   ;\n    public  String  field4626   ;\n    public  String  field4627   ;\n    public  String  field4628   ;\n    public  String  field4629   ;\n    public  String  field4630   ;\n    public  String  field4631   ;\n    public  String  field4632   ;\n    public  String  field4633   ;\n    public  String  field4634   ;\n    public  String  field4635   ;\n    public  String  field4636   ;\n    public  String  field4637   ;\n    public  String  field4638   ;\n    public  String  field4639   ;\n    public  String  field4640   ;\n    public  String  field4641   ;\n    public  String  field4642   ;\n    public  String  field4643   ;\n    public  String  field4644   ;\n    public  String  field4645   ;\n    public  String  field4646   ;\n    public  String  field4647   ;\n    public  String  field4648   ;\n    public  String  field4649   ;\n    public  String  field4650   ;\n    public  String  field4651   ;\n    public  String  field4652   ;\n    public  String  field4653   ;\n    public  String  field4654   ;\n    public  String  field4655   ;\n    public  String  field4656   ;\n    public  String  field4657   ;\n    public  String  field4658   ;\n    public  String  field4659   ;\n    public  String  field4660   ;\n    public  String  field4661   ;\n    public  String  field4662   ;\n    public  String  field4663   ;\n    public  String  field4664   ;\n    public  String  field4665   ;\n    public  String  field4666   ;\n    public  String  field4667   ;\n    public  String  field4668   ;\n    public  String  field4669   ;\n    public  String  field4670   ;\n    public  String  field4671   ;\n    public  String  field4672   ;\n    public  String  field4673   ;\n    public  String  field4674   ;\n    public  String  field4675   ;\n    public  String  field4676   ;\n    public  String  field4677   ;\n    public  String  field4678   ;\n    public  String  field4679   ;\n    public  String  field4680   ;\n    public  String  field4681   ;\n    public  String  field4682   ;\n    public  String  field4683   ;\n    public  String  field4684   ;\n    public  String  field4685   ;\n    public  String  field4686   ;\n    public  String  field4687   ;\n    public  String  field4688   ;\n    public  String  field4689   ;\n    public  String  field4690   ;\n    public  String  field4691   ;\n    public  String  field4692   ;\n    public  String  field4693   ;\n    public  String  field4694   ;\n    public  String  field4695   ;\n    public  String  field4696   ;\n    public  String  field4697   ;\n    public  String  field4698   ;\n    public  String  field4699   ;\n    public  String  field4700   ;\n    public  String  field4701   ;\n    public  String  field4702   ;\n    public  String  field4703   ;\n    public  String  field4704   ;\n    public  String  field4705   ;\n    public  String  field4706   ;\n    public  String  field4707   ;\n    public  String  field4708   ;\n    public  String  field4709   ;\n    public  String  field4710   ;\n    public  String  field4711   ;\n    public  String  field4712   ;\n    public  String  field4713   ;\n    public  String  field4714   ;\n    public  String  field4715   ;\n    public  String  field4716   ;\n    public  String  field4717   ;\n    public  String  field4718   ;\n    public  String  field4719   ;\n    public  String  field4720   ;\n    public  String  field4721   ;\n    public  String  field4722   ;\n    public  String  field4723   ;\n    public  String  field4724   ;\n    public  String  field4725   ;\n    public  String  field4726   ;\n    public  String  field4727   ;\n    public  String  field4728   ;\n    public  String  field4729   ;\n    public  String  field4730   ;\n    public  String  field4731   ;\n    public  String  field4732   ;\n    public  String  field4733   ;\n    public  String  field4734   ;\n    public  String  field4735   ;\n    public  String  field4736   ;\n    public  String  field4737   ;\n    public  String  field4738   ;\n    public  String  field4739   ;\n    public  String  field4740   ;\n    public  String  field4741   ;\n    public  String  field4742   ;\n    public  String  field4743   ;\n    public  String  field4744   ;\n    public  String  field4745   ;\n    public  String  field4746   ;\n    public  String  field4747   ;\n    public  String  field4748   ;\n    public  String  field4749   ;\n    public  String  field4750   ;\n    public  String  field4751   ;\n    public  String  field4752   ;\n    public  String  field4753   ;\n    public  String  field4754   ;\n    public  String  field4755   ;\n    public  String  field4756   ;\n    public  String  field4757   ;\n    public  String  field4758   ;\n    public  String  field4759   ;\n    public  String  field4760   ;\n    public  String  field4761   ;\n    public  String  field4762   ;\n    public  String  field4763   ;\n    public  String  field4764   ;\n    public  String  field4765   ;\n    public  String  field4766   ;\n    public  String  field4767   ;\n    public  String  field4768   ;\n    public  String  field4769   ;\n    public  String  field4770   ;\n    public  String  field4771   ;\n    public  String  field4772   ;\n    public  String  field4773   ;\n    public  String  field4774   ;\n    public  String  field4775   ;\n    public  String  field4776   ;\n    public  String  field4777   ;\n    public  String  field4778   ;\n    public  String  field4779   ;\n    public  String  field4780   ;\n    public  String  field4781   ;\n    public  String  field4782   ;\n    public  String  field4783   ;\n    public  String  field4784   ;\n    public  String  field4785   ;\n    public  String  field4786   ;\n    public  String  field4787   ;\n    public  String  field4788   ;\n    public  String  field4789   ;\n    public  String  field4790   ;\n    public  String  field4791   ;\n    public  String  field4792   ;\n    public  String  field4793   ;\n    public  String  field4794   ;\n    public  String  field4795   ;\n    public  String  field4796   ;\n    public  String  field4797   ;\n    public  String  field4798   ;\n    public  String  field4799   ;\n    public  String  field4800   ;\n    public  String  field4801   ;\n    public  String  field4802   ;\n    public  String  field4803   ;\n    public  String  field4804   ;\n    public  String  field4805   ;\n    public  String  field4806   ;\n    public  String  field4807   ;\n    public  String  field4808   ;\n    public  String  field4809   ;\n    public  String  field4810   ;\n    public  String  field4811   ;\n    public  String  field4812   ;\n    public  String  field4813   ;\n    public  String  field4814   ;\n    public  String  field4815   ;\n    public  String  field4816   ;\n    public  String  field4817   ;\n    public  String  field4818   ;\n    public  String  field4819   ;\n    public  String  field4820   ;\n    public  String  field4821   ;\n    public  String  field4822   ;\n    public  String  field4823   ;\n    public  String  field4824   ;\n    public  String  field4825   ;\n    public  String  field4826   ;\n    public  String  field4827   ;\n    public  String  field4828   ;\n    public  String  field4829   ;\n    public  String  field4830   ;\n    public  String  field4831   ;\n    public  String  field4832   ;\n    public  String  field4833   ;\n    public  String  field4834   ;\n    public  String  field4835   ;\n    public  String  field4836   ;\n    public  String  field4837   ;\n    public  String  field4838   ;\n    public  String  field4839   ;\n    public  String  field4840   ;\n    public  String  field4841   ;\n    public  String  field4842   ;\n    public  String  field4843   ;\n    public  String  field4844   ;\n    public  String  field4845   ;\n    public  String  field4846   ;\n    public  String  field4847   ;\n    public  String  field4848   ;\n    public  String  field4849   ;\n    public  String  field4850   ;\n    public  String  field4851   ;\n    public  String  field4852   ;\n    public  String  field4853   ;\n    public  String  field4854   ;\n    public  String  field4855   ;\n    public  String  field4856   ;\n    public  String  field4857   ;\n    public  String  field4858   ;\n    public  String  field4859   ;\n    public  String  field4860   ;\n    public  String  field4861   ;\n    public  String  field4862   ;\n    public  String  field4863   ;\n    public  String  field4864   ;\n    public  String  field4865   ;\n    public  String  field4866   ;\n    public  String  field4867   ;\n    public  String  field4868   ;\n    public  String  field4869   ;\n    public  String  field4870   ;\n    public  String  field4871   ;\n    public  String  field4872   ;\n    public  String  field4873   ;\n    public  String  field4874   ;\n    public  String  field4875   ;\n    public  String  field4876   ;\n    public  String  field4877   ;\n    public  String  field4878   ;\n    public  String  field4879   ;\n    public  String  field4880   ;\n    public  String  field4881   ;\n    public  String  field4882   ;\n    public  String  field4883   ;\n    public  String  field4884   ;\n    public  String  field4885   ;\n    public  String  field4886   ;\n    public  String  field4887   ;\n    public  String  field4888   ;\n    public  String  field4889   ;\n    public  String  field4890   ;\n    public  String  field4891   ;\n    public  String  field4892   ;\n    public  String  field4893   ;\n    public  String  field4894   ;\n    public  String  field4895   ;\n    public  String  field4896   ;\n    public  String  field4897   ;\n    public  String  field4898   ;\n    public  String  field4899   ;\n    public  String  field4900   ;\n    public  String  field4901   ;\n    public  String  field4902   ;\n    public  String  field4903   ;\n    public  String  field4904   ;\n    public  String  field4905   ;\n    public  String  field4906   ;\n    public  String  field4907   ;\n    public  String  field4908   ;\n    public  String  field4909   ;\n    public  String  field4910   ;\n    public  String  field4911   ;\n    public  String  field4912   ;\n    public  String  field4913   ;\n    public  String  field4914   ;\n    public  String  field4915   ;\n    public  String  field4916   ;\n    public  String  field4917   ;\n    public  String  field4918   ;\n    public  String  field4919   ;\n    public  String  field4920   ;\n    public  String  field4921   ;\n    public  String  field4922   ;\n    public  String  field4923   ;\n    public  String  field4924   ;\n    public  String  field4925   ;\n    public  String  field4926   ;\n    public  String  field4927   ;\n    public  String  field4928   ;\n    public  String  field4929   ;\n    public  String  field4930   ;\n    public  String  field4931   ;\n    public  String  field4932   ;\n    public  String  field4933   ;\n    public  String  field4934   ;\n    public  String  field4935   ;\n    public  String  field4936   ;\n    public  String  field4937   ;\n    public  String  field4938   ;\n    public  String  field4939   ;\n    public  String  field4940   ;\n    public  String  field4941   ;\n    public  String  field4942   ;\n    public  String  field4943   ;\n    public  String  field4944   ;\n    public  String  field4945   ;\n    public  String  field4946   ;\n    public  String  field4947   ;\n    public  String  field4948   ;\n    public  String  field4949   ;\n    public  String  field4950   ;\n    public  String  field4951   ;\n    public  String  field4952   ;\n    public  String  field4953   ;\n    public  String  field4954   ;\n    public  String  field4955   ;\n    public  String  field4956   ;\n    public  String  field4957   ;\n    public  String  field4958   ;\n    public  String  field4959   ;\n    public  String  field4960   ;\n    public  String  field4961   ;\n    public  String  field4962   ;\n    public  String  field4963   ;\n    public  String  field4964   ;\n    public  String  field4965   ;\n    public  String  field4966   ;\n    public  String  field4967   ;\n    public  String  field4968   ;\n    public  String  field4969   ;\n    public  String  field4970   ;\n    public  String  field4971   ;\n    public  String  field4972   ;\n    public  String  field4973   ;\n    public  String  field4974   ;\n    public  String  field4975   ;\n    public  String  field4976   ;\n    public  String  field4977   ;\n    public  String  field4978   ;\n    public  String  field4979   ;\n    public  String  field4980   ;\n    public  String  field4981   ;\n    public  String  field4982   ;\n    public  String  field4983   ;\n    public  String  field4984   ;\n    public  String  field4985   ;\n    public  String  field4986   ;\n    public  String  field4987   ;\n    public  String  field4988   ;\n    public  String  field4989   ;\n    public  String  field4990   ;\n    public  String  field4991   ;\n    public  String  field4992   ;\n    public  String  field4993   ;\n    public  String  field4994   ;\n    public  String  field4995   ;\n    public  String  field4996   ;\n    public  String  field4997   ;\n    public  String  field4998   ;\n    public  String  field4999   ;\n    public  String  field5000   ;\n    public  String  field5001   ;\n    public  String  field5002   ;\n    public  String  field5003   ;\n    public  String  field5004   ;\n    public  String  field5005   ;\n    public  String  field5006   ;\n    public  String  field5007   ;\n    public  String  field5008   ;\n    public  String  field5009   ;\n    public  String  field5010   ;\n    public  String  field5011   ;\n    public  String  field5012   ;\n    public  String  field5013   ;\n    public  String  field5014   ;\n    public  String  field5015   ;\n    public  String  field5016   ;\n    public  String  field5017   ;\n    public  String  field5018   ;\n    public  String  field5019   ;\n    public  String  field5020   ;\n    public  String  field5021   ;\n    public  String  field5022   ;\n    public  String  field5023   ;\n    public  String  field5024   ;\n    public  String  field5025   ;\n    public  String  field5026   ;\n    public  String  field5027   ;\n    public  String  field5028   ;\n    public  String  field5029   ;\n    public  String  field5030   ;\n    public  String  field5031   ;\n    public  String  field5032   ;\n    public  String  field5033   ;\n    public  String  field5034   ;\n    public  String  field5035   ;\n    public  String  field5036   ;\n    public  String  field5037   ;\n    public  String  field5038   ;\n    public  String  field5039   ;\n    public  String  field5040   ;\n    public  String  field5041   ;\n    public  String  field5042   ;\n    public  String  field5043   ;\n    public  String  field5044   ;\n    public  String  field5045   ;\n    public  String  field5046   ;\n    public  String  field5047   ;\n    public  String  field5048   ;\n    public  String  field5049   ;\n    public  String  field5050   ;\n    public  String  field5051   ;\n    public  String  field5052   ;\n    public  String  field5053   ;\n    public  String  field5054   ;\n    public  String  field5055   ;\n    public  String  field5056   ;\n    public  String  field5057   ;\n    public  String  field5058   ;\n    public  String  field5059   ;\n    public  String  field5060   ;\n    public  String  field5061   ;\n    public  String  field5062   ;\n    public  String  field5063   ;\n    public  String  field5064   ;\n    public  String  field5065   ;\n    public  String  field5066   ;\n    public  String  field5067   ;\n    public  String  field5068   ;\n    public  String  field5069   ;\n    public  String  field5070   ;\n    public  String  field5071   ;\n    public  String  field5072   ;\n    public  String  field5073   ;\n    public  String  field5074   ;\n    public  String  field5075   ;\n    public  String  field5076   ;\n    public  String  field5077   ;\n    public  String  field5078   ;\n    public  String  field5079   ;\n    public  String  field5080   ;\n    public  String  field5081   ;\n    public  String  field5082   ;\n    public  String  field5083   ;\n    public  String  field5084   ;\n    public  String  field5085   ;\n    public  String  field5086   ;\n    public  String  field5087   ;\n    public  String  field5088   ;\n    public  String  field5089   ;\n    public  String  field5090   ;\n    public  String  field5091   ;\n    public  String  field5092   ;\n    public  String  field5093   ;\n    public  String  field5094   ;\n    public  String  field5095   ;\n    public  String  field5096   ;\n    public  String  field5097   ;\n    public  String  field5098   ;\n    public  String  field5099   ;\n    public  String  field5100   ;\n    public  String  field5101   ;\n    public  String  field5102   ;\n    public  String  field5103   ;\n    public  String  field5104   ;\n    public  String  field5105   ;\n    public  String  field5106   ;\n    public  String  field5107   ;\n    public  String  field5108   ;\n    public  String  field5109   ;\n    public  String  field5110   ;\n    public  String  field5111   ;\n    public  String  field5112   ;\n    public  String  field5113   ;\n    public  String  field5114   ;\n    public  String  field5115   ;\n    public  String  field5116   ;\n    public  String  field5117   ;\n    public  String  field5118   ;\n    public  String  field5119   ;\n    public  String  field5120   ;\n    public  String  field5121   ;\n    public  String  field5122   ;\n    public  String  field5123   ;\n    public  String  field5124   ;\n    public  String  field5125   ;\n    public  String  field5126   ;\n    public  String  field5127   ;\n    public  String  field5128   ;\n    public  String  field5129   ;\n    public  String  field5130   ;\n    public  String  field5131   ;\n    public  String  field5132   ;\n    public  String  field5133   ;\n    public  String  field5134   ;\n    public  String  field5135   ;\n    public  String  field5136   ;\n    public  String  field5137   ;\n    public  String  field5138   ;\n    public  String  field5139   ;\n    public  String  field5140   ;\n    public  String  field5141   ;\n    public  String  field5142   ;\n    public  String  field5143   ;\n    public  String  field5144   ;\n    public  String  field5145   ;\n    public  String  field5146   ;\n    public  String  field5147   ;\n    public  String  field5148   ;\n    public  String  field5149   ;\n    public  String  field5150   ;\n    public  String  field5151   ;\n    public  String  field5152   ;\n    public  String  field5153   ;\n    public  String  field5154   ;\n    public  String  field5155   ;\n    public  String  field5156   ;\n    public  String  field5157   ;\n    public  String  field5158   ;\n    public  String  field5159   ;\n    public  String  field5160   ;\n    public  String  field5161   ;\n    public  String  field5162   ;\n    public  String  field5163   ;\n    public  String  field5164   ;\n    public  String  field5165   ;\n    public  String  field5166   ;\n    public  String  field5167   ;\n    public  String  field5168   ;\n    public  String  field5169   ;\n    public  String  field5170   ;\n    public  String  field5171   ;\n    public  String  field5172   ;\n    public  String  field5173   ;\n    public  String  field5174   ;\n    public  String  field5175   ;\n    public  String  field5176   ;\n    public  String  field5177   ;\n    public  String  field5178   ;\n    public  String  field5179   ;\n    public  String  field5180   ;\n    public  String  field5181   ;\n    public  String  field5182   ;\n    public  String  field5183   ;\n    public  String  field5184   ;\n    public  String  field5185   ;\n    public  String  field5186   ;\n    public  String  field5187   ;\n    public  String  field5188   ;\n    public  String  field5189   ;\n    public  String  field5190   ;\n    public  String  field5191   ;\n    public  String  field5192   ;\n    public  String  field5193   ;\n    public  String  field5194   ;\n    public  String  field5195   ;\n    public  String  field5196   ;\n    public  String  field5197   ;\n    public  String  field5198   ;\n    public  String  field5199   ;\n    public  String  field5200   ;\n    public  String  field5201   ;\n    public  String  field5202   ;\n    public  String  field5203   ;\n    public  String  field5204   ;\n    public  String  field5205   ;\n    public  String  field5206   ;\n    public  String  field5207   ;\n    public  String  field5208   ;\n    public  String  field5209   ;\n    public  String  field5210   ;\n    public  String  field5211   ;\n    public  String  field5212   ;\n    public  String  field5213   ;\n    public  String  field5214   ;\n    public  String  field5215   ;\n    public  String  field5216   ;\n    public  String  field5217   ;\n    public  String  field5218   ;\n    public  String  field5219   ;\n    public  String  field5220   ;\n    public  String  field5221   ;\n    public  String  field5222   ;\n    public  String  field5223   ;\n    public  String  field5224   ;\n    public  String  field5225   ;\n    public  String  field5226   ;\n    public  String  field5227   ;\n    public  String  field5228   ;\n    public  String  field5229   ;\n    public  String  field5230   ;\n    public  String  field5231   ;\n    public  String  field5232   ;\n    public  String  field5233   ;\n    public  String  field5234   ;\n    public  String  field5235   ;\n    public  String  field5236   ;\n    public  String  field5237   ;\n    public  String  field5238   ;\n    public  String  field5239   ;\n    public  String  field5240   ;\n    public  String  field5241   ;\n    public  String  field5242   ;\n    public  String  field5243   ;\n    public  String  field5244   ;\n    public  String  field5245   ;\n    public  String  field5246   ;\n    public  String  field5247   ;\n    public  String  field5248   ;\n    public  String  field5249   ;\n    public  String  field5250   ;\n    public  String  field5251   ;\n    public  String  field5252   ;\n    public  String  field5253   ;\n    public  String  field5254   ;\n    public  String  field5255   ;\n    public  String  field5256   ;\n    public  String  field5257   ;\n    public  String  field5258   ;\n    public  String  field5259   ;\n    public  String  field5260   ;\n    public  String  field5261   ;\n    public  String  field5262   ;\n    public  String  field5263   ;\n    public  String  field5264   ;\n    public  String  field5265   ;\n    public  String  field5266   ;\n    public  String  field5267   ;\n    public  String  field5268   ;\n    public  String  field5269   ;\n    public  String  field5270   ;\n    public  String  field5271   ;\n    public  String  field5272   ;\n    public  String  field5273   ;\n    public  String  field5274   ;\n    public  String  field5275   ;\n    public  String  field5276   ;\n    public  String  field5277   ;\n    public  String  field5278   ;\n    public  String  field5279   ;\n    public  String  field5280   ;\n    public  String  field5281   ;\n    public  String  field5282   ;\n    public  String  field5283   ;\n    public  String  field5284   ;\n    public  String  field5285   ;\n    public  String  field5286   ;\n    public  String  field5287   ;\n    public  String  field5288   ;\n    public  String  field5289   ;\n    public  String  field5290   ;\n    public  String  field5291   ;\n    public  String  field5292   ;\n    public  String  field5293   ;\n    public  String  field5294   ;\n    public  String  field5295   ;\n    public  String  field5296   ;\n    public  String  field5297   ;\n    public  String  field5298   ;\n    public  String  field5299   ;\n    public  String  field5300   ;\n    public  String  field5301   ;\n    public  String  field5302   ;\n    public  String  field5303   ;\n    public  String  field5304   ;\n    public  String  field5305   ;\n    public  String  field5306   ;\n    public  String  field5307   ;\n    public  String  field5308   ;\n    public  String  field5309   ;\n    public  String  field5310   ;\n    public  String  field5311   ;\n    public  String  field5312   ;\n    public  String  field5313   ;\n    public  String  field5314   ;\n    public  String  field5315   ;\n    public  String  field5316   ;\n    public  String  field5317   ;\n    public  String  field5318   ;\n    public  String  field5319   ;\n    public  String  field5320   ;\n    public  String  field5321   ;\n    public  String  field5322   ;\n    public  String  field5323   ;\n    public  String  field5324   ;\n    public  String  field5325   ;\n    public  String  field5326   ;\n    public  String  field5327   ;\n    public  String  field5328   ;\n    public  String  field5329   ;\n    public  String  field5330   ;\n    public  String  field5331   ;\n    public  String  field5332   ;\n    public  String  field5333   ;\n    public  String  field5334   ;\n    public  String  field5335   ;\n    public  String  field5336   ;\n    public  String  field5337   ;\n    public  String  field5338   ;\n    public  String  field5339   ;\n    public  String  field5340   ;\n    public  String  field5341   ;\n    public  String  field5342   ;\n    public  String  field5343   ;\n    public  String  field5344   ;\n    public  String  field5345   ;\n    public  String  field5346   ;\n    public  String  field5347   ;\n    public  String  field5348   ;\n    public  String  field5349   ;\n    public  String  field5350   ;\n    public  String  field5351   ;\n    public  String  field5352   ;\n    public  String  field5353   ;\n    public  String  field5354   ;\n    public  String  field5355   ;\n    public  String  field5356   ;\n    public  String  field5357   ;\n    public  String  field5358   ;\n    public  String  field5359   ;\n    public  String  field5360   ;\n    public  String  field5361   ;\n    public  String  field5362   ;\n    public  String  field5363   ;\n    public  String  field5364   ;\n    public  String  field5365   ;\n    public  String  field5366   ;\n    public  String  field5367   ;\n    public  String  field5368   ;\n    public  String  field5369   ;\n    public  String  field5370   ;\n    public  String  field5371   ;\n    public  String  field5372   ;\n    public  String  field5373   ;\n    public  String  field5374   ;\n    public  String  field5375   ;\n    public  String  field5376   ;\n    public  String  field5377   ;\n    public  String  field5378   ;\n    public  String  field5379   ;\n    public  String  field5380   ;\n    public  String  field5381   ;\n    public  String  field5382   ;\n    public  String  field5383   ;\n    public  String  field5384   ;\n    public  String  field5385   ;\n    public  String  field5386   ;\n    public  String  field5387   ;\n    public  String  field5388   ;\n    public  String  field5389   ;\n    public  String  field5390   ;\n    public  String  field5391   ;\n    public  String  field5392   ;\n    public  String  field5393   ;\n    public  String  field5394   ;\n    public  String  field5395   ;\n    public  String  field5396   ;\n    public  String  field5397   ;\n    public  String  field5398   ;\n    public  String  field5399   ;\n    public  String  field5400   ;\n    public  String  field5401   ;\n    public  String  field5402   ;\n    public  String  field5403   ;\n    public  String  field5404   ;\n    public  String  field5405   ;\n    public  String  field5406   ;\n    public  String  field5407   ;\n    public  String  field5408   ;\n    public  String  field5409   ;\n    public  String  field5410   ;\n    public  String  field5411   ;\n    public  String  field5412   ;\n    public  String  field5413   ;\n    public  String  field5414   ;\n    public  String  field5415   ;\n    public  String  field5416   ;\n    public  String  field5417   ;\n    public  String  field5418   ;\n    public  String  field5419   ;\n    public  String  field5420   ;\n    public  String  field5421   ;\n    public  String  field5422   ;\n    public  String  field5423   ;\n    public  String  field5424   ;\n    public  String  field5425   ;\n    public  String  field5426   ;\n    public  String  field5427   ;\n    public  String  field5428   ;\n    public  String  field5429   ;\n    public  String  field5430   ;\n    public  String  field5431   ;\n    public  String  field5432   ;\n    public  String  field5433   ;\n    public  String  field5434   ;\n    public  String  field5435   ;\n    public  String  field5436   ;\n    public  String  field5437   ;\n    public  String  field5438   ;\n    public  String  field5439   ;\n    public  String  field5440   ;\n    public  String  field5441   ;\n    public  String  field5442   ;\n    public  String  field5443   ;\n    public  String  field5444   ;\n    public  String  field5445   ;\n    public  String  field5446   ;\n    public  String  field5447   ;\n    public  String  field5448   ;\n    public  String  field5449   ;\n    public  String  field5450   ;\n    public  String  field5451   ;\n    public  String  field5452   ;\n    public  String  field5453   ;\n    public  String  field5454   ;\n    public  String  field5455   ;\n    public  String  field5456   ;\n    public  String  field5457   ;\n    public  String  field5458   ;\n    public  String  field5459   ;\n    public  String  field5460   ;\n    public  String  field5461   ;\n    public  String  field5462   ;\n    public  String  field5463   ;\n    public  String  field5464   ;\n    public  String  field5465   ;\n    public  String  field5466   ;\n    public  String  field5467   ;\n    public  String  field5468   ;\n    public  String  field5469   ;\n    public  String  field5470   ;\n    public  String  field5471   ;\n    public  String  field5472   ;\n    public  String  field5473   ;\n    public  String  field5474   ;\n    public  String  field5475   ;\n    public  String  field5476   ;\n    public  String  field5477   ;\n    public  String  field5478   ;\n    public  String  field5479   ;\n    public  String  field5480   ;\n    public  String  field5481   ;\n    public  String  field5482   ;\n    public  String  field5483   ;\n    public  String  field5484   ;\n    public  String  field5485   ;\n    public  String  field5486   ;\n    public  String  field5487   ;\n    public  String  field5488   ;\n    public  String  field5489   ;\n    public  String  field5490   ;\n    public  String  field5491   ;\n    public  String  field5492   ;\n    public  String  field5493   ;\n    public  String  field5494   ;\n    public  String  field5495   ;\n    public  String  field5496   ;\n    public  String  field5497   ;\n    public  String  field5498   ;\n    public  String  field5499   ;\n    public  String  field5500   ;\n    public  String  field5501   ;\n    public  String  field5502   ;\n    public  String  field5503   ;\n    public  String  field5504   ;\n    public  String  field5505   ;\n    public  String  field5506   ;\n    public  String  field5507   ;\n    public  String  field5508   ;\n    public  String  field5509   ;\n    public  String  field5510   ;\n    public  String  field5511   ;\n    public  String  field5512   ;\n    public  String  field5513   ;\n    public  String  field5514   ;\n    public  String  field5515   ;\n    public  String  field5516   ;\n    public  String  field5517   ;\n    public  String  field5518   ;\n    public  String  field5519   ;\n    public  String  field5520   ;\n    public  String  field5521   ;\n    public  String  field5522   ;\n    public  String  field5523   ;\n    public  String  field5524   ;\n    public  String  field5525   ;\n    public  String  field5526   ;\n    public  String  field5527   ;\n    public  String  field5528   ;\n    public  String  field5529   ;\n    public  String  field5530   ;\n    public  String  field5531   ;\n    public  String  field5532   ;\n    public  String  field5533   ;\n    public  String  field5534   ;\n    public  String  field5535   ;\n    public  String  field5536   ;\n    public  String  field5537   ;\n    public  String  field5538   ;\n    public  String  field5539   ;\n    public  String  field5540   ;\n    public  String  field5541   ;\n    public  String  field5542   ;\n    public  String  field5543   ;\n    public  String  field5544   ;\n    public  String  field5545   ;\n    public  String  field5546   ;\n    public  String  field5547   ;\n    public  String  field5548   ;\n    public  String  field5549   ;\n    public  String  field5550   ;\n    public  String  field5551   ;\n    public  String  field5552   ;\n    public  String  field5553   ;\n    public  String  field5554   ;\n    public  String  field5555   ;\n    public  String  field5556   ;\n    public  String  field5557   ;\n    public  String  field5558   ;\n    public  String  field5559   ;\n    public  String  field5560   ;\n    public  String  field5561   ;\n    public  String  field5562   ;\n    public  String  field5563   ;\n    public  String  field5564   ;\n    public  String  field5565   ;\n    public  String  field5566   ;\n    public  String  field5567   ;\n    public  String  field5568   ;\n    public  String  field5569   ;\n    public  String  field5570   ;\n    public  String  field5571   ;\n    public  String  field5572   ;\n    public  String  field5573   ;\n    public  String  field5574   ;\n    public  String  field5575   ;\n    public  String  field5576   ;\n    public  String  field5577   ;\n    public  String  field5578   ;\n    public  String  field5579   ;\n    public  String  field5580   ;\n    public  String  field5581   ;\n    public  String  field5582   ;\n    public  String  field5583   ;\n    public  String  field5584   ;\n    public  String  field5585   ;\n    public  String  field5586   ;\n    public  String  field5587   ;\n    public  String  field5588   ;\n    public  String  field5589   ;\n    public  String  field5590   ;\n    public  String  field5591   ;\n    public  String  field5592   ;\n    public  String  field5593   ;\n    public  String  field5594   ;\n    public  String  field5595   ;\n    public  String  field5596   ;\n    public  String  field5597   ;\n    public  String  field5598   ;\n    public  String  field5599   ;\n    public  String  field5600   ;\n    public  String  field5601   ;\n    public  String  field5602   ;\n    public  String  field5603   ;\n    public  String  field5604   ;\n    public  String  field5605   ;\n    public  String  field5606   ;\n    public  String  field5607   ;\n    public  String  field5608   ;\n    public  String  field5609   ;\n    public  String  field5610   ;\n    public  String  field5611   ;\n    public  String  field5612   ;\n    public  String  field5613   ;\n    public  String  field5614   ;\n    public  String  field5615   ;\n    public  String  field5616   ;\n    public  String  field5617   ;\n    public  String  field5618   ;\n    public  String  field5619   ;\n    public  String  field5620   ;\n    public  String  field5621   ;\n    public  String  field5622   ;\n    public  String  field5623   ;\n    public  String  field5624   ;\n    public  String  field5625   ;\n    public  String  field5626   ;\n    public  String  field5627   ;\n    public  String  field5628   ;\n    public  String  field5629   ;\n    public  String  field5630   ;\n    public  String  field5631   ;\n    public  String  field5632   ;\n    public  String  field5633   ;\n    public  String  field5634   ;\n    public  String  field5635   ;\n    public  String  field5636   ;\n    public  String  field5637   ;\n    public  String  field5638   ;\n    public  String  field5639   ;\n    public  String  field5640   ;\n    public  String  field5641   ;\n    public  String  field5642   ;\n    public  String  field5643   ;\n    public  String  field5644   ;\n    public  String  field5645   ;\n    public  String  field5646   ;\n    public  String  field5647   ;\n    public  String  field5648   ;\n    public  String  field5649   ;\n    public  String  field5650   ;\n    public  String  field5651   ;\n    public  String  field5652   ;\n    public  String  field5653   ;\n    public  String  field5654   ;\n    public  String  field5655   ;\n    public  String  field5656   ;\n    public  String  field5657   ;\n    public  String  field5658   ;\n    public  String  field5659   ;\n    public  String  field5660   ;\n    public  String  field5661   ;\n    public  String  field5662   ;\n    public  String  field5663   ;\n    public  String  field5664   ;\n    public  String  field5665   ;\n    public  String  field5666   ;\n    public  String  field5667   ;\n    public  String  field5668   ;\n    public  String  field5669   ;\n    public  String  field5670   ;\n    public  String  field5671   ;\n    public  String  field5672   ;\n    public  String  field5673   ;\n    public  String  field5674   ;\n    public  String  field5675   ;\n    public  String  field5676   ;\n    public  String  field5677   ;\n    public  String  field5678   ;\n    public  String  field5679   ;\n    public  String  field5680   ;\n    public  String  field5681   ;\n    public  String  field5682   ;\n    public  String  field5683   ;\n    public  String  field5684   ;\n    public  String  field5685   ;\n    public  String  field5686   ;\n    public  String  field5687   ;\n    public  String  field5688   ;\n    public  String  field5689   ;\n    public  String  field5690   ;\n    public  String  field5691   ;\n    public  String  field5692   ;\n    public  String  field5693   ;\n    public  String  field5694   ;\n    public  String  field5695   ;\n    public  String  field5696   ;\n    public  String  field5697   ;\n    public  String  field5698   ;\n    public  String  field5699   ;\n    public  String  field5700   ;\n    public  String  field5701   ;\n    public  String  field5702   ;\n    public  String  field5703   ;\n    public  String  field5704   ;\n    public  String  field5705   ;\n    public  String  field5706   ;\n    public  String  field5707   ;\n    public  String  field5708   ;\n    public  String  field5709   ;\n    public  String  field5710   ;\n    public  String  field5711   ;\n    public  String  field5712   ;\n    public  String  field5713   ;\n    public  String  field5714   ;\n    public  String  field5715   ;\n    public  String  field5716   ;\n    public  String  field5717   ;\n    public  String  field5718   ;\n    public  String  field5719   ;\n    public  String  field5720   ;\n    public  String  field5721   ;\n    public  String  field5722   ;\n    public  String  field5723   ;\n    public  String  field5724   ;\n    public  String  field5725   ;\n    public  String  field5726   ;\n    public  String  field5727   ;\n    public  String  field5728   ;\n    public  String  field5729   ;\n    public  String  field5730   ;\n    public  String  field5731   ;\n    public  String  field5732   ;\n    public  String  field5733   ;\n    public  String  field5734   ;\n    public  String  field5735   ;\n    public  String  field5736   ;\n    public  String  field5737   ;\n    public  String  field5738   ;\n    public  String  field5739   ;\n    public  String  field5740   ;\n    public  String  field5741   ;\n    public  String  field5742   ;\n    public  String  field5743   ;\n    public  String  field5744   ;\n    public  String  field5745   ;\n    public  String  field5746   ;\n    public  String  field5747   ;\n    public  String  field5748   ;\n    public  String  field5749   ;\n    public  String  field5750   ;\n    public  String  field5751   ;\n    public  String  field5752   ;\n    public  String  field5753   ;\n    public  String  field5754   ;\n    public  String  field5755   ;\n    public  String  field5756   ;\n    public  String  field5757   ;\n    public  String  field5758   ;\n    public  String  field5759   ;\n    public  String  field5760   ;\n    public  String  field5761   ;\n    public  String  field5762   ;\n    public  String  field5763   ;\n    public  String  field5764   ;\n    public  String  field5765   ;\n    public  String  field5766   ;\n    public  String  field5767   ;\n    public  String  field5768   ;\n    public  String  field5769   ;\n    public  String  field5770   ;\n    public  String  field5771   ;\n    public  String  field5772   ;\n    public  String  field5773   ;\n    public  String  field5774   ;\n    public  String  field5775   ;\n    public  String  field5776   ;\n    public  String  field5777   ;\n    public  String  field5778   ;\n    public  String  field5779   ;\n    public  String  field5780   ;\n    public  String  field5781   ;\n    public  String  field5782   ;\n    public  String  field5783   ;\n    public  String  field5784   ;\n    public  String  field5785   ;\n    public  String  field5786   ;\n    public  String  field5787   ;\n    public  String  field5788   ;\n    public  String  field5789   ;\n    public  String  field5790   ;\n    public  String  field5791   ;\n    public  String  field5792   ;\n    public  String  field5793   ;\n    public  String  field5794   ;\n    public  String  field5795   ;\n    public  String  field5796   ;\n    public  String  field5797   ;\n    public  String  field5798   ;\n    public  String  field5799   ;\n    public  String  field5800   ;\n    public  String  field5801   ;\n    public  String  field5802   ;\n    public  String  field5803   ;\n    public  String  field5804   ;\n    public  String  field5805   ;\n    public  String  field5806   ;\n    public  String  field5807   ;\n    public  String  field5808   ;\n    public  String  field5809   ;\n    public  String  field5810   ;\n    public  String  field5811   ;\n    public  String  field5812   ;\n    public  String  field5813   ;\n    public  String  field5814   ;\n    public  String  field5815   ;\n    public  String  field5816   ;\n    public  String  field5817   ;\n    public  String  field5818   ;\n    public  String  field5819   ;\n    public  String  field5820   ;\n    public  String  field5821   ;\n    public  String  field5822   ;\n    public  String  field5823   ;\n    public  String  field5824   ;\n    public  String  field5825   ;\n    public  String  field5826   ;\n    public  String  field5827   ;\n    public  String  field5828   ;\n    public  String  field5829   ;\n    public  String  field5830   ;\n    public  String  field5831   ;\n    public  String  field5832   ;\n    public  String  field5833   ;\n    public  String  field5834   ;\n    public  String  field5835   ;\n    public  String  field5836   ;\n    public  String  field5837   ;\n    public  String  field5838   ;\n    public  String  field5839   ;\n    public  String  field5840   ;\n    public  String  field5841   ;\n    public  String  field5842   ;\n    public  String  field5843   ;\n    public  String  field5844   ;\n    public  String  field5845   ;\n    public  String  field5846   ;\n    public  String  field5847   ;\n    public  String  field5848   ;\n    public  String  field5849   ;\n    public  String  field5850   ;\n    public  String  field5851   ;\n    public  String  field5852   ;\n    public  String  field5853   ;\n    public  String  field5854   ;\n    public  String  field5855   ;\n    public  String  field5856   ;\n    public  String  field5857   ;\n    public  String  field5858   ;\n    public  String  field5859   ;\n    public  String  field5860   ;\n    public  String  field5861   ;\n    public  String  field5862   ;\n    public  String  field5863   ;\n    public  String  field5864   ;\n    public  String  field5865   ;\n    public  String  field5866   ;\n    public  String  field5867   ;\n    public  String  field5868   ;\n    public  String  field5869   ;\n    public  String  field5870   ;\n    public  String  field5871   ;\n    public  String  field5872   ;\n    public  String  field5873   ;\n    public  String  field5874   ;\n    public  String  field5875   ;\n    public  String  field5876   ;\n    public  String  field5877   ;\n    public  String  field5878   ;\n    public  String  field5879   ;\n    public  String  field5880   ;\n    public  String  field5881   ;\n    public  String  field5882   ;\n    public  String  field5883   ;\n    public  String  field5884   ;\n    public  String  field5885   ;\n    public  String  field5886   ;\n    public  String  field5887   ;\n    public  String  field5888   ;\n    public  String  field5889   ;\n    public  String  field5890   ;\n    public  String  field5891   ;\n    public  String  field5892   ;\n    public  String  field5893   ;\n    public  String  field5894   ;\n    public  String  field5895   ;\n    public  String  field5896   ;\n    public  String  field5897   ;\n    public  String  field5898   ;\n    public  String  field5899   ;\n    public  String  field5900   ;\n    public  String  field5901   ;\n    public  String  field5902   ;\n    public  String  field5903   ;\n    public  String  field5904   ;\n    public  String  field5905   ;\n    public  String  field5906   ;\n    public  String  field5907   ;\n    public  String  field5908   ;\n    public  String  field5909   ;\n    public  String  field5910   ;\n    public  String  field5911   ;\n    public  String  field5912   ;\n    public  String  field5913   ;\n    public  String  field5914   ;\n    public  String  field5915   ;\n    public  String  field5916   ;\n    public  String  field5917   ;\n    public  String  field5918   ;\n    public  String  field5919   ;\n    public  String  field5920   ;\n    public  String  field5921   ;\n    public  String  field5922   ;\n    public  String  field5923   ;\n    public  String  field5924   ;\n    public  String  field5925   ;\n    public  String  field5926   ;\n    public  String  field5927   ;\n    public  String  field5928   ;\n    public  String  field5929   ;\n    public  String  field5930   ;\n    public  String  field5931   ;\n    public  String  field5932   ;\n    public  String  field5933   ;\n    public  String  field5934   ;\n    public  String  field5935   ;\n    public  String  field5936   ;\n    public  String  field5937   ;\n    public  String  field5938   ;\n    public  String  field5939   ;\n    public  String  field5940   ;\n    public  String  field5941   ;\n    public  String  field5942   ;\n    public  String  field5943   ;\n    public  String  field5944   ;\n    public  String  field5945   ;\n    public  String  field5946   ;\n    public  String  field5947   ;\n    public  String  field5948   ;\n    public  String  field5949   ;\n    public  String  field5950   ;\n    public  String  field5951   ;\n    public  String  field5952   ;\n    public  String  field5953   ;\n    public  String  field5954   ;\n    public  String  field5955   ;\n    public  String  field5956   ;\n    public  String  field5957   ;\n    public  String  field5958   ;\n    public  String  field5959   ;\n    public  String  field5960   ;\n    public  String  field5961   ;\n    public  String  field5962   ;\n    public  String  field5963   ;\n    public  String  field5964   ;\n    public  String  field5965   ;\n    public  String  field5966   ;\n    public  String  field5967   ;\n    public  String  field5968   ;\n    public  String  field5969   ;\n    public  String  field5970   ;\n    public  String  field5971   ;\n    public  String  field5972   ;\n    public  String  field5973   ;\n    public  String  field5974   ;\n    public  String  field5975   ;\n    public  String  field5976   ;\n    public  String  field5977   ;\n    public  String  field5978   ;\n    public  String  field5979   ;\n    public  String  field5980   ;\n    public  String  field5981   ;\n    public  String  field5982   ;\n    public  String  field5983   ;\n    public  String  field5984   ;\n    public  String  field5985   ;\n    public  String  field5986   ;\n    public  String  field5987   ;\n    public  String  field5988   ;\n    public  String  field5989   ;\n    public  String  field5990   ;\n    public  String  field5991   ;\n    public  String  field5992   ;\n    public  String  field5993   ;\n    public  String  field5994   ;\n    public  String  field5995   ;\n    public  String  field5996   ;\n    public  String  field5997   ;\n    public  String  field5998   ;\n    public  String  field5999   ;\n    public  String  field6000   ;\n    public  String  field6001   ;\n    public  String  field6002   ;\n    public  String  field6003   ;\n    public  String  field6004   ;\n    public  String  field6005   ;\n    public  String  field6006   ;\n    public  String  field6007   ;\n    public  String  field6008   ;\n    public  String  field6009   ;\n    public  String  field6010   ;\n    public  String  field6011   ;\n    public  String  field6012   ;\n    public  String  field6013   ;\n    public  String  field6014   ;\n    public  String  field6015   ;\n    public  String  field6016   ;\n    public  String  field6017   ;\n    public  String  field6018   ;\n    public  String  field6019   ;\n    public  String  field6020   ;\n    public  String  field6021   ;\n    public  String  field6022   ;\n    public  String  field6023   ;\n    public  String  field6024   ;\n    public  String  field6025   ;\n    public  String  field6026   ;\n    public  String  field6027   ;\n    public  String  field6028   ;\n    public  String  field6029   ;\n    public  String  field6030   ;\n    public  String  field6031   ;\n    public  String  field6032   ;\n    public  String  field6033   ;\n    public  String  field6034   ;\n    public  String  field6035   ;\n    public  String  field6036   ;\n    public  String  field6037   ;\n    public  String  field6038   ;\n    public  String  field6039   ;\n    public  String  field6040   ;\n    public  String  field6041   ;\n    public  String  field6042   ;\n    public  String  field6043   ;\n    public  String  field6044   ;\n    public  String  field6045   ;\n    public  String  field6046   ;\n    public  String  field6047   ;\n    public  String  field6048   ;\n    public  String  field6049   ;\n    public  String  field6050   ;\n    public  String  field6051   ;\n    public  String  field6052   ;\n    public  String  field6053   ;\n    public  String  field6054   ;\n    public  String  field6055   ;\n    public  String  field6056   ;\n    public  String  field6057   ;\n    public  String  field6058   ;\n    public  String  field6059   ;\n    public  String  field6060   ;\n    public  String  field6061   ;\n    public  String  field6062   ;\n    public  String  field6063   ;\n    public  String  field6064   ;\n    public  String  field6065   ;\n    public  String  field6066   ;\n    public  String  field6067   ;\n    public  String  field6068   ;\n    public  String  field6069   ;\n    public  String  field6070   ;\n    public  String  field6071   ;\n    public  String  field6072   ;\n    public  String  field6073   ;\n    public  String  field6074   ;\n    public  String  field6075   ;\n    public  String  field6076   ;\n    public  String  field6077   ;\n    public  String  field6078   ;\n    public  String  field6079   ;\n    public  String  field6080   ;\n    public  String  field6081   ;\n    public  String  field6082   ;\n    public  String  field6083   ;\n    public  String  field6084   ;\n    public  String  field6085   ;\n    public  String  field6086   ;\n    public  String  field6087   ;\n    public  String  field6088   ;\n    public  String  field6089   ;\n    public  String  field6090   ;\n    public  String  field6091   ;\n    public  String  field6092   ;\n    public  String  field6093   ;\n    public  String  field6094   ;\n    public  String  field6095   ;\n    public  String  field6096   ;\n    public  String  field6097   ;\n    public  String  field6098   ;\n    public  String  field6099   ;\n    public  String  field6100   ;\n    public  String  field6101   ;\n    public  String  field6102   ;\n    public  String  field6103   ;\n    public  String  field6104   ;\n    public  String  field6105   ;\n    public  String  field6106   ;\n    public  String  field6107   ;\n    public  String  field6108   ;\n    public  String  field6109   ;\n    public  String  field6110   ;\n    public  String  field6111   ;\n    public  String  field6112   ;\n    public  String  field6113   ;\n    public  String  field6114   ;\n    public  String  field6115   ;\n    public  String  field6116   ;\n    public  String  field6117   ;\n    public  String  field6118   ;\n    public  String  field6119   ;\n    public  String  field6120   ;\n    public  String  field6121   ;\n    public  String  field6122   ;\n    public  String  field6123   ;\n    public  String  field6124   ;\n    public  String  field6125   ;\n    public  String  field6126   ;\n    public  String  field6127   ;\n    public  String  field6128   ;\n    public  String  field6129   ;\n    public  String  field6130   ;\n    public  String  field6131   ;\n    public  String  field6132   ;\n    public  String  field6133   ;\n    public  String  field6134   ;\n    public  String  field6135   ;\n    public  String  field6136   ;\n    public  String  field6137   ;\n    public  String  field6138   ;\n    public  String  field6139   ;\n    public  String  field6140   ;\n    public  String  field6141   ;\n    public  String  field6142   ;\n    public  String  field6143   ;\n    public  String  field6144   ;\n    public  String  field6145   ;\n    public  String  field6146   ;\n    public  String  field6147   ;\n    public  String  field6148   ;\n    public  String  field6149   ;\n    public  String  field6150   ;\n    public  String  field6151   ;\n    public  String  field6152   ;\n    public  String  field6153   ;\n    public  String  field6154   ;\n    public  String  field6155   ;\n    public  String  field6156   ;\n    public  String  field6157   ;\n    public  String  field6158   ;\n    public  String  field6159   ;\n    public  String  field6160   ;\n    public  String  field6161   ;\n    public  String  field6162   ;\n    public  String  field6163   ;\n    public  String  field6164   ;\n    public  String  field6165   ;\n    public  String  field6166   ;\n    public  String  field6167   ;\n    public  String  field6168   ;\n    public  String  field6169   ;\n    public  String  field6170   ;\n    public  String  field6171   ;\n    public  String  field6172   ;\n    public  String  field6173   ;\n    public  String  field6174   ;\n    public  String  field6175   ;\n    public  String  field6176   ;\n    public  String  field6177   ;\n    public  String  field6178   ;\n    public  String  field6179   ;\n    public  String  field6180   ;\n    public  String  field6181   ;\n    public  String  field6182   ;\n    public  String  field6183   ;\n    public  String  field6184   ;\n    public  String  field6185   ;\n    public  String  field6186   ;\n    public  String  field6187   ;\n    public  String  field6188   ;\n    public  String  field6189   ;\n    public  String  field6190   ;\n    public  String  field6191   ;\n    public  String  field6192   ;\n    public  String  field6193   ;\n    public  String  field6194   ;\n    public  String  field6195   ;\n    public  String  field6196   ;\n    public  String  field6197   ;\n    public  String  field6198   ;\n    public  String  field6199   ;\n    public  String  field6200   ;\n    public  String  field6201   ;\n    public  String  field6202   ;\n    public  String  field6203   ;\n    public  String  field6204   ;\n    public  String  field6205   ;\n    public  String  field6206   ;\n    public  String  field6207   ;\n    public  String  field6208   ;\n    public  String  field6209   ;\n    public  String  field6210   ;\n    public  String  field6211   ;\n    public  String  field6212   ;\n    public  String  field6213   ;\n    public  String  field6214   ;\n    public  String  field6215   ;\n    public  String  field6216   ;\n    public  String  field6217   ;\n    public  String  field6218   ;\n    public  String  field6219   ;\n    public  String  field6220   ;\n    public  String  field6221   ;\n    public  String  field6222   ;\n    public  String  field6223   ;\n    public  String  field6224   ;\n    public  String  field6225   ;\n    public  String  field6226   ;\n    public  String  field6227   ;\n    public  String  field6228   ;\n    public  String  field6229   ;\n    public  String  field6230   ;\n    public  String  field6231   ;\n    public  String  field6232   ;\n    public  String  field6233   ;\n    public  String  field6234   ;\n    public  String  field6235   ;\n    public  String  field6236   ;\n    public  String  field6237   ;\n    public  String  field6238   ;\n    public  String  field6239   ;\n    public  String  field6240   ;\n    public  String  field6241   ;\n    public  String  field6242   ;\n    public  String  field6243   ;\n    public  String  field6244   ;\n    public  String  field6245   ;\n    public  String  field6246   ;\n    public  String  field6247   ;\n    public  String  field6248   ;\n    public  String  field6249   ;\n    public  String  field6250   ;\n    public  String  field6251   ;\n    public  String  field6252   ;\n    public  String  field6253   ;\n    public  String  field6254   ;\n    public  String  field6255   ;\n    public  String  field6256   ;\n    public  String  field6257   ;\n    public  String  field6258   ;\n    public  String  field6259   ;\n    public  String  field6260   ;\n    public  String  field6261   ;\n    public  String  field6262   ;\n    public  String  field6263   ;\n    public  String  field6264   ;\n    public  String  field6265   ;\n    public  String  field6266   ;\n    public  String  field6267   ;\n    public  String  field6268   ;\n    public  String  field6269   ;\n    public  String  field6270   ;\n    public  String  field6271   ;\n    public  String  field6272   ;\n    public  String  field6273   ;\n    public  String  field6274   ;\n    public  String  field6275   ;\n    public  String  field6276   ;\n    public  String  field6277   ;\n    public  String  field6278   ;\n    public  String  field6279   ;\n    public  String  field6280   ;\n    public  String  field6281   ;\n    public  String  field6282   ;\n    public  String  field6283   ;\n    public  String  field6284   ;\n    public  String  field6285   ;\n    public  String  field6286   ;\n    public  String  field6287   ;\n    public  String  field6288   ;\n    public  String  field6289   ;\n    public  String  field6290   ;\n    public  String  field6291   ;\n    public  String  field6292   ;\n    public  String  field6293   ;\n    public  String  field6294   ;\n    public  String  field6295   ;\n    public  String  field6296   ;\n    public  String  field6297   ;\n    public  String  field6298   ;\n    public  String  field6299   ;\n    public  String  field6300   ;\n    public  String  field6301   ;\n    public  String  field6302   ;\n    public  String  field6303   ;\n    public  String  field6304   ;\n    public  String  field6305   ;\n    public  String  field6306   ;\n    public  String  field6307   ;\n    public  String  field6308   ;\n    public  String  field6309   ;\n    public  String  field6310   ;\n    public  String  field6311   ;\n    public  String  field6312   ;\n    public  String  field6313   ;\n    public  String  field6314   ;\n    public  String  field6315   ;\n    public  String  field6316   ;\n    public  String  field6317   ;\n    public  String  field6318   ;\n    public  String  field6319   ;\n    public  String  field6320   ;\n    public  String  field6321   ;\n    public  String  field6322   ;\n    public  String  field6323   ;\n    public  String  field6324   ;\n    public  String  field6325   ;\n    public  String  field6326   ;\n    public  String  field6327   ;\n    public  String  field6328   ;\n    public  String  field6329   ;\n    public  String  field6330   ;\n    public  String  field6331   ;\n    public  String  field6332   ;\n    public  String  field6333   ;\n    public  String  field6334   ;\n    public  String  field6335   ;\n    public  String  field6336   ;\n    public  String  field6337   ;\n    public  String  field6338   ;\n    public  String  field6339   ;\n    public  String  field6340   ;\n    public  String  field6341   ;\n    public  String  field6342   ;\n    public  String  field6343   ;\n    public  String  field6344   ;\n    public  String  field6345   ;\n    public  String  field6346   ;\n    public  String  field6347   ;\n    public  String  field6348   ;\n    public  String  field6349   ;\n    public  String  field6350   ;\n    public  String  field6351   ;\n    public  String  field6352   ;\n    public  String  field6353   ;\n    public  String  field6354   ;\n    public  String  field6355   ;\n    public  String  field6356   ;\n    public  String  field6357   ;\n    public  String  field6358   ;\n    public  String  field6359   ;\n    public  String  field6360   ;\n    public  String  field6361   ;\n    public  String  field6362   ;\n    public  String  field6363   ;\n    public  String  field6364   ;\n    public  String  field6365   ;\n    public  String  field6366   ;\n    public  String  field6367   ;\n    public  String  field6368   ;\n    public  String  field6369   ;\n    public  String  field6370   ;\n    public  String  field6371   ;\n    public  String  field6372   ;\n    public  String  field6373   ;\n    public  String  field6374   ;\n    public  String  field6375   ;\n    public  String  field6376   ;\n    public  String  field6377   ;\n    public  String  field6378   ;\n    public  String  field6379   ;\n    public  String  field6380   ;\n    public  String  field6381   ;\n    public  String  field6382   ;\n    public  String  field6383   ;\n    public  String  field6384   ;\n    public  String  field6385   ;\n    public  String  field6386   ;\n    public  String  field6387   ;\n    public  String  field6388   ;\n    public  String  field6389   ;\n    public  String  field6390   ;\n    public  String  field6391   ;\n    public  String  field6392   ;\n    public  String  field6393   ;\n    public  String  field6394   ;\n    public  String  field6395   ;\n    public  String  field6396   ;\n    public  String  field6397   ;\n    public  String  field6398   ;\n    public  String  field6399   ;\n    public  String  field6400   ;\n    public  String  field6401   ;\n    public  String  field6402   ;\n    public  String  field6403   ;\n    public  String  field6404   ;\n    public  String  field6405   ;\n    public  String  field6406   ;\n    public  String  field6407   ;\n    public  String  field6408   ;\n    public  String  field6409   ;\n    public  String  field6410   ;\n    public  String  field6411   ;\n    public  String  field6412   ;\n    public  String  field6413   ;\n    public  String  field6414   ;\n    public  String  field6415   ;\n    public  String  field6416   ;\n    public  String  field6417   ;\n    public  String  field6418   ;\n    public  String  field6419   ;\n    public  String  field6420   ;\n    public  String  field6421   ;\n    public  String  field6422   ;\n    public  String  field6423   ;\n    public  String  field6424   ;\n    public  String  field6425   ;\n    public  String  field6426   ;\n    public  String  field6427   ;\n    public  String  field6428   ;\n    public  String  field6429   ;\n    public  String  field6430   ;\n    public  String  field6431   ;\n    public  String  field6432   ;\n    public  String  field6433   ;\n    public  String  field6434   ;\n    public  String  field6435   ;\n    public  String  field6436   ;\n    public  String  field6437   ;\n    public  String  field6438   ;\n    public  String  field6439   ;\n    public  String  field6440   ;\n    public  String  field6441   ;\n    public  String  field6442   ;\n    public  String  field6443   ;\n    public  String  field6444   ;\n    public  String  field6445   ;\n    public  String  field6446   ;\n    public  String  field6447   ;\n    public  String  field6448   ;\n    public  String  field6449   ;\n    public  String  field6450   ;\n    public  String  field6451   ;\n    public  String  field6452   ;\n    public  String  field6453   ;\n    public  String  field6454   ;\n    public  String  field6455   ;\n    public  String  field6456   ;\n    public  String  field6457   ;\n    public  String  field6458   ;\n    public  String  field6459   ;\n    public  String  field6460   ;\n    public  String  field6461   ;\n    public  String  field6462   ;\n    public  String  field6463   ;\n    public  String  field6464   ;\n    public  String  field6465   ;\n    public  String  field6466   ;\n    public  String  field6467   ;\n    public  String  field6468   ;\n    public  String  field6469   ;\n    public  String  field6470   ;\n    public  String  field6471   ;\n    public  String  field6472   ;\n    public  String  field6473   ;\n    public  String  field6474   ;\n    public  String  field6475   ;\n    public  String  field6476   ;\n    public  String  field6477   ;\n    public  String  field6478   ;\n    public  String  field6479   ;\n    public  String  field6480   ;\n    public  String  field6481   ;\n    public  String  field6482   ;\n    public  String  field6483   ;\n    public  String  field6484   ;\n    public  String  field6485   ;\n    public  String  field6486   ;\n    public  String  field6487   ;\n    public  String  field6488   ;\n    public  String  field6489   ;\n    public  String  field6490   ;\n    public  String  field6491   ;\n    public  String  field6492   ;\n    public  String  field6493   ;\n    public  String  field6494   ;\n    public  String  field6495   ;\n    public  String  field6496   ;\n    public  String  field6497   ;\n    public  String  field6498   ;\n    public  String  field6499   ;\n    public  String  field6500   ;\n    public  String  field6501   ;\n    public  String  field6502   ;\n    public  String  field6503   ;\n    public  String  field6504   ;\n    public  String  field6505   ;\n    public  String  field6506   ;\n    public  String  field6507   ;\n    public  String  field6508   ;\n    public  String  field6509   ;\n    public  String  field6510   ;\n    public  String  field6511   ;\n    public  String  field6512   ;\n    public  String  field6513   ;\n    public  String  field6514   ;\n    public  String  field6515   ;\n    public  String  field6516   ;\n    public  String  field6517   ;\n    public  String  field6518   ;\n    public  String  field6519   ;\n    public  String  field6520   ;\n    public  String  field6521   ;\n    public  String  field6522   ;\n    public  String  field6523   ;\n    public  String  field6524   ;\n    public  String  field6525   ;\n    public  String  field6526   ;\n    public  String  field6527   ;\n    public  String  field6528   ;\n    public  String  field6529   ;\n    public  String  field6530   ;\n    public  String  field6531   ;\n    public  String  field6532   ;\n    public  String  field6533   ;\n    public  String  field6534   ;\n    public  String  field6535   ;\n    public  String  field6536   ;\n    public  String  field6537   ;\n    public  String  field6538   ;\n    public  String  field6539   ;\n    public  String  field6540   ;\n    public  String  field6541   ;\n    public  String  field6542   ;\n    public  String  field6543   ;\n    public  String  field6544   ;\n    public  String  field6545   ;\n    public  String  field6546   ;\n    public  String  field6547   ;\n    public  String  field6548   ;\n    public  String  field6549   ;\n    public  String  field6550   ;\n    public  String  field6551   ;\n    public  String  field6552   ;\n    public  String  field6553   ;\n    public  String  field6554   ;\n    public  String  field6555   ;\n    public  String  field6556   ;\n    public  String  field6557   ;\n    public  String  field6558   ;\n    public  String  field6559   ;\n    public  String  field6560   ;\n    public  String  field6561   ;\n    public  String  field6562   ;\n    public  String  field6563   ;\n    public  String  field6564   ;\n    public  String  field6565   ;\n    public  String  field6566   ;\n    public  String  field6567   ;\n    public  String  field6568   ;\n    public  String  field6569   ;\n    public  String  field6570   ;\n    public  String  field6571   ;\n    public  String  field6572   ;\n    public  String  field6573   ;\n    public  String  field6574   ;\n    public  String  field6575   ;\n    public  String  field6576   ;\n    public  String  field6577   ;\n    public  String  field6578   ;\n    public  String  field6579   ;\n    public  String  field6580   ;\n    public  String  field6581   ;\n    public  String  field6582   ;\n    public  String  field6583   ;\n    public  String  field6584   ;\n    public  String  field6585   ;\n    public  String  field6586   ;\n    public  String  field6587   ;\n    public  String  field6588   ;\n    public  String  field6589   ;\n    public  String  field6590   ;\n    public  String  field6591   ;\n    public  String  field6592   ;\n    public  String  field6593   ;\n    public  String  field6594   ;\n    public  String  field6595   ;\n    public  String  field6596   ;\n    public  String  field6597   ;\n    public  String  field6598   ;\n    public  String  field6599   ;\n    public  String  field6600   ;\n    public  String  field6601   ;\n    public  String  field6602   ;\n    public  String  field6603   ;\n    public  String  field6604   ;\n    public  String  field6605   ;\n    public  String  field6606   ;\n    public  String  field6607   ;\n    public  String  field6608   ;\n    public  String  field6609   ;\n    public  String  field6610   ;\n    public  String  field6611   ;\n    public  String  field6612   ;\n    public  String  field6613   ;\n    public  String  field6614   ;\n    public  String  field6615   ;\n    public  String  field6616   ;\n    public  String  field6617   ;\n    public  String  field6618   ;\n    public  String  field6619   ;\n    public  String  field6620   ;\n    public  String  field6621   ;\n    public  String  field6622   ;\n    public  String  field6623   ;\n    public  String  field6624   ;\n    public  String  field6625   ;\n    public  String  field6626   ;\n    public  String  field6627   ;\n    public  String  field6628   ;\n    public  String  field6629   ;\n    public  String  field6630   ;\n    public  String  field6631   ;\n    public  String  field6632   ;\n    public  String  field6633   ;\n    public  String  field6634   ;\n    public  String  field6635   ;\n    public  String  field6636   ;\n    public  String  field6637   ;\n    public  String  field6638   ;\n    public  String  field6639   ;\n    public  String  field6640   ;\n    public  String  field6641   ;\n    public  String  field6642   ;\n    public  String  field6643   ;\n    public  String  field6644   ;\n    public  String  field6645   ;\n    public  String  field6646   ;\n    public  String  field6647   ;\n    public  String  field6648   ;\n    public  String  field6649   ;\n    public  String  field6650   ;\n    public  String  field6651   ;\n    public  String  field6652   ;\n    public  String  field6653   ;\n    public  String  field6654   ;\n    public  String  field6655   ;\n    public  String  field6656   ;\n    public  String  field6657   ;\n    public  String  field6658   ;\n    public  String  field6659   ;\n    public  String  field6660   ;\n    public  String  field6661   ;\n    public  String  field6662   ;\n    public  String  field6663   ;\n    public  String  field6664   ;\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/ContactTemplateParam.java",
    "content": "package com.alibaba.json.bvtVO;\r\n\r\nimport java.io.Serializable;\r\nimport java.util.Date;\r\n\r\nimport org.apache.commons.lang.builder.ToStringBuilder;\r\n\r\nimport com.alibaba.fastjson.annotation.JSONField;\r\n\r\n\r\npublic class ContactTemplateParam implements Serializable {\r\n\r\n    private static final long serialVersionUID = 1L;\r\n\r\n\r\n\r\n    public ContactTemplateParam() {\r\n        // TODO Auto-generated constructor stub\r\n    }\r\n\r\n    /** 审核状态 **/\r\n    private AuditStatusType auditStatus;\r\n\r\n\r\n\r\n    public AuditStatusType getAuditStatus() {\r\n        return auditStatus;\r\n    }\r\n\r\n    public void setAuditStatus(AuditStatusType auditStatus) {\r\n        this.auditStatus = auditStatus;\r\n    }\r\n\r\n    @Override\r\n    public String toString() {\r\n        return ToStringBuilder.reflectionToString(this);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/DataTransaction.java",
    "content": "package com.alibaba.json.bvtVO;\n\nimport java.io.Serializable;\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport com.alibaba.fastjson.JSON;\n\n/**\n * 交易消息体\n */\n@SuppressWarnings(\"rawtypes\")\npublic class DataTransaction implements Serializable {\n\n    private static final long serialVersionUID = 1L;\n\n    private Head              head             = new Head();\n\n    private Body              body             = new Body();\n\n    public DataTransaction(){\n\n    }\n\n    /**\n     * Head\n     **/\n    public static class Head {\n\n        private String appid;\n\n        private String transcode;\n\n        private String seqno;\n\n        private User   user = new User();\n\n        private Ret    ret  = new Ret();\n\n        /**\n         * 用户信息\n         */\n        public static class User {\n\n            private String id;\n\n            public String getId() {\n                return id;\n            }\n\n            public void setId(String id) {\n                this.id = id;\n            }\n        }\n\n        /**\n         * 处理结果\n         */\n        public static class Ret {\n\n            private String code;\n            private String msg;\n\n            public String getCode() {\n                return code;\n            }\n\n            public void setCode(String code) {\n                this.code = code;\n            }\n\n            public String getMsg() {\n                return msg;\n            }\n\n            public void setMsg(String msg) {\n                this.msg = msg;\n            }\n        }\n\n        public String getAppid() {\n            return appid;\n        }\n\n        public void setAppid(String appid) {\n            this.appid = appid;\n        }\n\n        public String getTranscode() {\n            return transcode;\n        }\n\n        public void setTranscode(String transcode) {\n            this.transcode = transcode;\n        }\n\n        public String getSeqno() {\n            return seqno;\n        }\n\n        public void setSeqno(String seqno) {\n            this.seqno = seqno;\n        }\n\n        public User getUser() {\n            return user;\n        }\n\n        public void setUser(User user) {\n            this.user = user;\n        }\n\n        public Ret getRet() {\n            return ret;\n        }\n\n        public void setRet(Ret ret) {\n            this.ret = ret;\n        }\n\n        public void setRetCode(String code) {\n            this.ret.code = code;\n        }\n\n        public void setRetMsg(String msg) {\n            this.ret.msg = msg;\n        }\n    }\n\n    /**\n     * Body\n     */\n    public static class Body {\n\n        private Param   param = new Param();\n\n        private DataSet dataset;\n\n        public Body(){\n\n        }\n\n        /**\n         * 参数\n         */\n        public static class Param {\n\n            private Limit               limit = new Limit();\n\n            private Map<String, String> form  = new HashMap<String, String>();\n\n            /**\n             * 分页信息\n             */\n            public static class Limit {\n\n                private String start;\n                private String size;\n                private String total;\n                private String orderBy;\n\n                public String getStart() {\n                    return start;\n                }\n\n                public void setStart(String start) {\n                    this.start = start;\n                }\n\n                public String getSize() {\n                    return size;\n                }\n\n                public void setSize(String size) {\n                    this.size = size;\n                }\n\n                public String getTotal() {\n                    return total;\n                }\n\n                public void setTotal(String total) {\n                    this.total = total;\n                }\n\n                public String getOrderBy() {\n                    return orderBy;\n                }\n\n                public void setOrderBy(String orderBy) {\n                    this.orderBy = orderBy;\n                }\n            }\n\n            public Limit getLimit() {\n                return limit;\n            }\n\n            public void setLimit(Limit limit) {\n                this.limit = limit;\n            }\n\n            public Map<String, String> getForm() {\n                return form;\n            }\n\n            public void setForm(Map<String, String> form) {\n                this.form = form;\n            }\n        }\n\n        /**\n         * 数据集\n         */\n        public static class DataSet {\n\n            private String total;\n\n            private List   rows = new ArrayList();\n\n            public String getTotal() {\n                return total;\n            }\n\n            public void setTotal(String total) {\n                this.total = total;\n            }\n\n            public List getRows() {\n                return rows;\n            }\n\n            public void setRows(List rows) {\n                this.rows = rows;\n            }\n        }\n\n        public Param getParam() {\n            return param;\n        }\n\n        public void setParam(Param param) {\n            this.param = param;\n        }\n\n        public DataSet getDataset() {\n            return dataset;\n        }\n\n        public void setDataset(DataSet dataset) {\n            this.dataset = dataset;\n        }\n\n        public void setDataset(String total, List rows) {\n            DataSet ds = new DataSet();\n            ds.setTotal(total);\n            ds.setRows(rows);\n            this.setDataset(ds);\n        }\n    }\n\n    public Head getHead() {\n        return head;\n    }\n\n    public Body getBody() {\n        return body;\n    }\n\n    public void setRetMsgCode(String code, String msg) {\n        this.head.setRetCode(code);\n        this.head.setRetMsg(msg);\n    }\n\n    public void setRetMsgCode(String code) {\n        this.setRetMsgCode(code, null);\n    }\n\n    public void setDataSet(String total, List rows) {\n        this.body.setDataset(total, rows);\n    }\n\n    public static DataTransaction fromJSON(String jsonString) {\n        return JSON.parseObject(jsonString, DataTransaction.class);\n    }\n\n    public String toJSON() {\n        return JSON.toJSONString(this);\n    }\n\n    public static void main(String args[]) {\n        DataTransaction dt = new DataTransaction();\n\n        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();\n\n        Map<String, Object> m = new HashMap<String, Object>();\n        m.put(\"name\", \"tom\");\n        m.put(\"sex\", \"m\");\n        list.add(m);\n\n        dt.setDataSet(\"1000\", list);\n        dt.setRetMsgCode(\"1\", \"ok\");\n        dt.getHead().setAppid(\"back\");\n        dt.getHead().setSeqno(\"201010\");\n        dt.getHead().getUser().setId(\"root\");\n\n        Map<String, String> m2 = new HashMap<String, String>();\n        m2.put(\"name1\", \"tom\");\n        m2.put(\"name2\", \"tom\");\n        m2.put(\"name3\", \"tom\");\n\n        dt.getBody().getParam().setForm(m2);\n\n        System.out.println(dt.toJSON());\n\n        DataTransaction dt2 = DataTransaction.fromJSON(dt.toJSON());\n        System.out.println(dt2.toJSON());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/DataTransaction2.java",
    "content": "package com.alibaba.json.bvtVO;\n\n\nimport java.io.Serializable;\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\n\n/**\n * 交易消息体\n * */\npublic class DataTransaction2 implements Serializable {\n\n    private static final long serialVersionUID = 1L;\n\n    private Head head = new Head();\n\n    private Body body = new Body();\n\n    public DataTransaction2() {\n\n    }\n\n    /**\n     * Head\n     **/\n    class Head {\n\n        private String appid;\n\n        private String transcode;\n\n        private String seqno;\n\n        private User user = new User();\n\n        private Ret ret = new Ret();\n\n        public Head() {\n\n        }\n\n        class User {\n            private String id;\n\n            public String getId() {\n                return id;\n            }\n\n            public void setId(String id) {\n                this.id = id;\n            }\n        }\n\n        /**\n         * 处理结果\n         * */\n        class Ret {\n            private String code;\n            private String msg;\n\n            public String getCode() {\n                return code;\n            }\n\n            public void setCode(String code) {\n                this.code = code;\n            }\n\n            public String getMsg() {\n                return msg;\n            }\n\n            public void setMsg(String msg) {\n                this.msg = msg;\n            }\n        }\n\n        public String getAppid() {\n            return appid;\n        }\n\n        public void setAppid(String appid) {\n            this.appid = appid;\n        }\n\n        public String getTranscode() {\n            return transcode;\n        }\n\n        public void setTranscode(String transcode) {\n            this.transcode = transcode;\n        }\n\n        public String getSeqno() {\n            return seqno;\n        }\n\n        public void setSeqno(String seqno) {\n            this.seqno = seqno;\n        }\n\n        public User getUser() {\n            return user;\n        }\n\n        public void setUser(User user) {\n            this.user = user;\n        }\n\n        public Ret getRet() {\n            return ret;\n        }\n\n        public void setRet(Ret ret) {\n            this.ret = ret;\n        }\n\n        public void setRetCode(String code) {\n            this.ret.code = code;\n        }\n\n        public void setRetMsg(String msg) {\n            this.ret.msg = msg;\n        }\n    }\n\n    /**\n     * Body\n     * */\n    @SuppressWarnings(\"rawtypes\")\n    class Body {\n\n        private Param param = new Param();\n\n        private DataSet dataset = new DataSet();\n\n        public Body() {\n\n        }\n\n        /**\n         * 参数\n         * */\n        class Param {\n            private Limit limit = new Limit();\n\n            private Map<String, String> form = new HashMap<String, String>();\n\n            class Limit {\n                private String start;\n                private String size;\n                private String total;\n\n                public String getStart() {\n                    return start;\n                }\n\n                public void setStart(String start) {\n                    this.start = start;\n                }\n\n                public String getSize() {\n                    return size;\n                }\n\n                public void setSize(String size) {\n                    this.size = size;\n                }\n\n                public String getTotal() {\n                    return total;\n                }\n\n                public void setTotal(String total) {\n                    this.total = total;\n                }\n            }\n\n            public Limit getLimit() {\n                return limit;\n            }\n\n            public void setLimit(Limit limit) {\n                this.limit = limit;\n            }\n\n            public Map<String, String> getForm() {\n                return form;\n            }\n\n            public void setForm(Map<String, String> form) {\n                this.form = form;\n            }\n        }\n\n        /**\n         * 数据集\n         * */\n        class DataSet {\n            private String total;\n\n            private List rows = new ArrayList();\n\n            public String getTotal() {\n                return total;\n            }\n\n            public void setTotal(String total) {\n                this.total = total;\n            }\n\n            public List getRows() {\n                return rows;\n            }\n\n            public void setRows(List rows) {\n                this.rows = rows;\n            }\n        }\n\n        public Param getParam() {\n            return param;\n        }\n\n        public void setParam(Param param) {\n            this.param = param;\n        }\n\n        public DataSet getDataset() {\n            return dataset;\n        }\n\n        public void setDataset(DataSet dataset) {\n            this.dataset = dataset;\n        }\n\n        public void setDataset(String total, List rows) {\n            DataSet ds = new DataSet();\n            ds.setTotal(total);\n            ds.setRows(rows);\n            this.dataset = ds;\n        }\n    }\n\n    public Head getHead() {\n        return head;\n    }\n\n    public Body getBody() {\n        return body;\n    }\n\n    public void setHead(Head head) {\n        this.head = head;\n    }\n\n    public void setBody(Body body) {\n        this.body = body;\n    }\n\n    /**\n     * 设置返回的消息信息\n     * */\n    public void setRetMsgCode(String code, String msg) {\n        this.head.setRetCode(code);\n        this.head.setRetMsg(msg);\n    }\n\n    public void setRetMsgCode(String code) {\n        this.setRetMsgCode(code, null);\n    }\n\n    /**\n     * 设置返回的结果集\n     **/\n    @SuppressWarnings(\"rawtypes\")\n    public void setDataSet(String total, List rows) {\n        this.body.setDataset(total, rows);\n    }\n\n    public static DataTransaction2 fromJSON(String jsonString) {\n        return JSON.parseObject(jsonString, DataTransaction2.class);\n    }\n\n    public String toJSON() {\n        return JSON.toJSONString(this);\n    }\n\n    public static void main(String args[]) {\n\n        String jsonString = \"{'head' : {'appid':'epas','transcode' : '000000','seqno' : '111111111',        'user' : {          'id' : '00000'},        'ret' : {           'code' : '1',           'msg' : 'txt'}  },  'body' : {      param : {           form:{              name : '111',               sex : '1',              address : 'street1',                array : [ {                 id : '1',                   name : 'tom1'               }, {                    id : '2',                   name : 'tom2'               } ]},           limit : {               start : 1,              size : 25,              total : 100}        },      dataset : {         total : 1000,           rows : [ {              id : 'id',              name : 'name'           }, {                id : 'id',              name : 'name'           } ]     }   }}\";\n        DataTransaction2 dt = DataTransaction2.fromJSON(jsonString);\n        System.out.println(dt.toJSON());\n        DataTransaction2 dt1 = JSON.parseObject(dt.toJSON(), DataTransaction2.class);\n        System.out.println(dt1.toJSON());\n        \n        Assert.assertEquals(dt.toJSON(), dt1.toJSON());\n        \n        System.out.println(\"=================\");\n        System.out.println(dt.toJSON());\n        dt.setRetMsgCode(\"-1\", \"错误\");\n        dt.setDataSet(\"1000\", new ArrayList<Map<String, Object>>());\n        System.out.println(dt.toJSON());\n        \n        String text = dt.toJSON();\n        System.out.println(text);\n        \n        DataTransaction2 dt2 = JSON.parseObject(text, DataTransaction2.class);\n        System.out.println(JSON.toJSONString(dt2));\n\n        Assert.assertEquals(dt.toJSON(), dt2.toJSON());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/IEvent.java",
    "content": "/**\r\n * Project: eve.services\r\n * \r\n * File Created at 2011-12-21\r\n * $Id$\r\n * \r\n * Copyright 2008 Alibaba.com Corporation Limited.\r\n * All rights reserved.\r\n *\r\n * This software is the confidential and proprietary information of\r\n * Alibaba Company. (\"Confidential Information\").  You shall not\r\n * disclose such Confidential Information and shall use it only in\r\n * accordance with the terms of the license agreement you entered into\r\n * with Alibaba.com.\r\n */\r\npackage com.alibaba.json.bvtVO;\r\n\r\nimport java.io.Serializable;\r\nimport java.sql.Timestamp;\r\nimport java.util.Map;\r\n\r\n/**\r\n * �¼�����\r\n * \r\n * @author wb_jianhui.shijh\r\n */\r\npublic class IEvent implements Serializable {\r\n\r\n    private static final long   serialVersionUID = -791431935700654454L;\r\n\r\n    /**\r\n     * �¼������\r\n     */\r\n    private String              name;\r\n\r\n    /**\r\n     * �¼�����Դ\r\n     */\r\n    private String              source;\r\n\r\n    /**\r\n     * �¼����\r\n     */\r\n    private Map<String, Object> detailData;\r\n\r\n    /**\r\n     * �¼�����ʱ��\r\n     */\r\n    private Timestamp           generateTime;\r\n\r\n    /**\r\n     * ���¼����������һ��Ψһ��־��ID.\r\n     */\r\n    private String              externalId;\r\n\r\n    public String getExternalId() {\r\n        return externalId;\r\n    }\r\n\r\n    public void setExternalId(String externalId) {\r\n        this.externalId = externalId;\r\n    }\r\n\r\n    public String getName() {\r\n        return name;\r\n    }\r\n\r\n    public void setName(String name) {\r\n        this.name = name;\r\n    }\r\n\r\n    public String getSource() {\r\n        return source;\r\n    }\r\n\r\n    public void setSource(String source) {\r\n        this.source = source;\r\n    }\r\n\r\n    public Map<String, Object> getDetailData() {\r\n        return detailData;\r\n    }\r\n\r\n    public void setDetailData(Map<String, Object> detailData) {\r\n        this.detailData = detailData;\r\n    }\r\n\r\n    public Timestamp getGenerateTime() {\r\n        return generateTime;\r\n    }\r\n\r\n    public void setGenerateTime(Timestamp generateTime) {\r\n        this.generateTime = generateTime;\r\n    }\r\n\r\n    @Override\r\n    public String toString() {\r\n        return \"IEvent [name=\" + name + \", source=\" + source + \", externalId=\" + externalId\r\n                + \", generateTime=\" + generateTime + \", detailData=\" + detailData + \"]\";\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/IEventDto.java",
    "content": "/**\r\n * Project: eve.services\r\n * \r\n * File Created at 2011-12-21\r\n * $Id$\r\n * \r\n * Copyright 2008 Alibaba.com Corporation Limited.\r\n * All rights reserved.\r\n *\r\n * This software is the confidential and proprietary information of\r\n * Alibaba Company. (\"Confidential Information\").  You shall not\r\n * disclose such Confidential Information and shall use it only in\r\n * accordance with the terms of the license agreement you entered into\r\n * with Alibaba.com.\r\n */\r\npackage com.alibaba.json.bvtVO;\r\n\r\nimport java.io.Serializable;\r\nimport java.util.ArrayList;\r\n\r\n/**\r\n * @author wb_jianhui.shijh\r\n */\r\npublic class IEventDto implements Serializable {\r\n\r\n    private static final long serialVersionUID = -3903138261314727539L;\r\n\r\n    private String            source;\r\n\r\n    private ArrayList<IEvent> eventList = new ArrayList<IEvent>();\n\r\n    public String getSource() {\r\n        return source;\r\n    }\r\n\r\n    public void setSource(String source) {\r\n        this.source = source;\r\n    }\r\n    \r\n    public ArrayList<IEvent> getEventList() {\r\n        return eventList;\r\n    }\r\n\r\n    public void setEventList(ArrayList<IEvent> eventList) {\r\n        this.eventList = eventList;\r\n    }\r\n\r\n    @Override\r\n    public String toString() {\r\n        return \"IEventDto [source=\" + source + \", eventList=\" + eventList + \"]\";\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/Image.java",
    "content": "/*\n * Copyright 1999-2004 Alibaba.com All right reserved. This software is the confidential and proprietary information of\n * Alibaba.com (\"Confidential Information\"). You shall not disclose such Confidential Information and shall use it only\n * in accordance with the terms of the license agreement you entered into with Alibaba.com.\n */\npackage com.alibaba.json.bvtVO;\n\nimport java.io.Serializable;\n\n/**\n * ��Image.java��ʵ��������ͼƬ��Ϣ����\n * \n * @author maik.wangz 2011-8-15 ����06:19:39\n */\npublic class Image implements Serializable {\n\n    private static final long serialVersionUID = -6804500330834961534L;\n    private String            imageUrl;\n\n    public Image(String imageUrl){\n        super();\n        this.imageUrl = imageUrl;\n    }\n\n    public Image(){\n\n    }\n\n    public String getBigImageUrl() {\n        if (imageUrl == null || imageUrl.length() == 0) {\n            return \"\";\n        }\n        return (\"img/\" + imageUrl).replaceFirst(\".jpg\", \".310x310.jpg\");\n    }\n\n    /** �������ͼƬ�����ϵ����·�� 150 * 150 */\n    public String getSearchImageUrl() {\n        if (imageUrl == null || imageUrl.length() == 0) {\n            return \"\";\n        }\n        return (\"img/\" + imageUrl).replaceFirst(\".jpg\", \".search.jpg\");\n    }\n\n    /** �������ͼƬ�����ϵ����·�� 100 * 100 */\n    public String getSummImageUrl() {\n        if (imageUrl == null || imageUrl.length() == 0) {\n            return \"\";\n        }\n        return (\"img/\" + imageUrl).replaceFirst(\".jpg\", \".summ.jpg\");\n    }\n\n    public String getImageUrl() {\n        return imageUrl;\n    }\n\n    public void setImageUrl(String imageUrl) {\n        this.imageUrl = imageUrl;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/IncomingDataPoint.java",
    "content": "package com.alibaba.json.bvtVO;\n\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * Created by wenshao on 03/08/2017.\n */\n@JSONType(serialzeFeatures= SerializerFeature.BeanToArray,\n        parseFeatures= Feature.SupportArrayToBean,\n        orders = {\"metric\", \"timestamp\", \"value\", \"tags\", \"tsuid\", \"granularity\", \"aggregator\"},\n        asm = true\n        )\npublic class IncomingDataPoint {\n    /** The incoming metric name */\n    private String metric;\n\n    /** The incoming timestamp in Unix epoch seconds or milliseconds */\n    private long timestamp;\n\n    /** The incoming value as a string, we'll parse it to float or int later */\n    private String value;\n\n    /** A hash map of tag name/values */\n    private Map<String, String> tags;\n\n    /** TSUID for the data point */\n    private String tsuid;\n\n    private String granularity;\n\n    private String aggregator;\n\n    /**\n     * Empty constructor necessary for some de/serializers\n     */\n    public IncomingDataPoint() {\n\n    }\n\n    /**\n     * Constructor used when working with a metric and tags\n     * @param metric The metric name\n     * @param timestamp The Unix epoch timestamp\n     * @param value The value as a string\n     * @param tags The tag name/value map\n     */\n    public IncomingDataPoint(final String metric,\n                             final long timestamp,\n                             final String value,\n                             final HashMap<String, String> tags,\n                             final String granularity,\n                             final String aggregator) {\n        this.metric = metric;\n        this.granularity = granularity;\n        this.timestamp = timestamp;\n        this.value = value;\n        this.tags = tags;\n        this.aggregator = aggregator;\n    }\n\n    /**\n     * Constructor used when working with tsuids\n     * @param tsuid The TSUID\n     * @param timestamp The Unix epoch timestamp\n     * @param value The value as a string\n     */\n    public IncomingDataPoint(final String tsuid,\n                             final String granularity,\n                             final long timestamp,\n                             final String value) {\n        this.tsuid = tsuid;\n        this.granularity = granularity;\n        this.timestamp = timestamp;\n        this.value = value;\n    }\n\n    /**\n     * @return information about this object\n     */\n    @Override\n    public String toString() {\n        final StringBuilder buf = new StringBuilder();\n        buf.append(\" metric=\").append(this.metric);\n        buf.append(\" granularity=\").append(this.granularity);\n        buf.append(\" aggregator=\").append(this.aggregator);\n        buf.append(\" ts=\").append(this.timestamp);\n        buf.append(\" value=\").append(this.value);\n        if (this.tags != null) {\n            for (Map.Entry<String, String> entry : this.tags.entrySet()) {\n                buf.append(\" \").append(entry.getKey()).append(\"=\").append(entry.getValue());\n            }\n        }\n        return buf.toString();\n    }\n\n    /** @return the metric */\n    public final String getMetric() {\n        return metric;\n    }\n\n    /** @return the timestamp */\n    public final long getTimestamp() {\n        return timestamp;\n    }\n\n    /** @return the value */\n    public final String getValue() {\n        return value;\n    }\n\n    /** @return the tags */\n    public final Map<String, String> getTags() {\n        return tags;\n    }\n\n    /** @return the TSUID */\n    @JSONField(name = \"tsuid\")\n    public final String getTSUID() {\n        return tsuid;\n    }\n\n    public final String getGranularity() {\n        return granularity;\n    }\n\n    public final String getAggregator() {\n        return aggregator;\n    }\n\n    public final void setGranularity(String granularity) {\n        this.granularity = granularity;\n    }\n\n    public final void setAggregator(String aggregator) {\n        this.aggregator = aggregator;\n    }\n\n    /** @param metric the metric to set */\n    public final void setMetric(String metric) {\n        this.metric = metric;\n    }\n\n    /** @param timestamp the timestamp to set */\n    public final void setTimestamp(long timestamp) {\n        this.timestamp = timestamp;\n    }\n\n    /** @param value the value to set */\n    public final void setValue(String value) {\n        this.value = value;\n    }\n\n    /** @param tags the tags to set */\n    public final void setTags(Map<String, String> tags) {\n        this.tags = tags;\n    }\n\n    /** @param tsuid the TSUID to set */\n    @JSONField(name = \"tsuid\")\n    public final void setTSUID(String tsuid) {\n        this.tsuid = tsuid;\n    }\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/IncomingDataPoint_double.java",
    "content": "package com.alibaba.json.bvtVO;\n\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * Created by wenshao on 03/08/2017.\n */\n@JSONType(serialzeFeatures= SerializerFeature.BeanToArray,\n        parseFeatures= Feature.SupportArrayToBean,\n        orders = {\"metric\", \"timestamp\", \"value\", \"tags\", \"tsuid\", \"granularity\", \"aggregator\"},\n        asm = true\n        )\npublic class IncomingDataPoint_double {\n    /** The incoming metric name */\n    private String metric;\n\n    /** The incoming timestamp in Unix epoch seconds or milliseconds */\n    private long timestamp;\n\n    /** The incoming value as a string, we'll parse it to float or int later */\n    private double value;\n\n    /** A hash map of tag name/values */\n    private Map<String, String> tags;\n\n    /** TSUID for the data point */\n    private String tsuid;\n\n    private String granularity;\n\n    private String aggregator;\n\n    /**\n     * Empty constructor necessary for some de/serializers\n     */\n    public IncomingDataPoint_double() {\n\n    }\n\n    /**\n     * Constructor used when working with a metric and tags\n     * @param metric The metric name\n     * @param timestamp The Unix epoch timestamp\n     * @param value The value as a string\n     * @param tags The tag name/value map\n     */\n    public IncomingDataPoint_double(final String metric,\n                                    final long timestamp,\n                                    final double value,\n                                    final HashMap<String, String> tags,\n                                    final String granularity,\n                                    final String aggregator) {\n        this.metric = metric;\n        this.granularity = granularity;\n        this.timestamp = timestamp;\n        this.value = value;\n        this.tags = tags;\n        this.aggregator = aggregator;\n    }\n\n    /**\n     * Constructor used when working with tsuids\n     * @param tsuid The TSUID\n     * @param timestamp The Unix epoch timestamp\n     * @param value The value as a string\n     */\n    public IncomingDataPoint_double(final String tsuid,\n                                    final String granularity,\n                                    final long timestamp,\n                                    final double value) {\n        this.tsuid = tsuid;\n        this.granularity = granularity;\n        this.timestamp = timestamp;\n        this.value = value;\n    }\n\n    /**\n     * @return information about this object\n     */\n    @Override\n    public String toString() {\n        final StringBuilder buf = new StringBuilder();\n        buf.append(\" metric=\").append(this.metric);\n        buf.append(\" granularity=\").append(this.granularity);\n        buf.append(\" aggregator=\").append(this.aggregator);\n        buf.append(\" ts=\").append(this.timestamp);\n        buf.append(\" value=\").append(this.value);\n        if (this.tags != null) {\n            for (Map.Entry<String, String> entry : this.tags.entrySet()) {\n                buf.append(\" \").append(entry.getKey()).append(\"=\").append(entry.getValue());\n            }\n        }\n        return buf.toString();\n    }\n\n    /** @return the metric */\n    public final String getMetric() {\n        return metric;\n    }\n\n    /** @return the timestamp */\n    public final long getTimestamp() {\n        return timestamp;\n    }\n\n    /** @return the value */\n    public final double getValue() {\n        return value;\n    }\n\n    /** @return the tags */\n    public final Map<String, String> getTags() {\n        return tags;\n    }\n\n    /** @return the TSUID */\n    @JSONField(name = \"tsuid\")\n    public final String getTSUID() {\n        return tsuid;\n    }\n\n    public final String getGranularity() {\n        return granularity;\n    }\n\n    public final String getAggregator() {\n        return aggregator;\n    }\n\n    public final void setGranularity(String granularity) {\n        this.granularity = granularity;\n    }\n\n    public final void setAggregator(String aggregator) {\n        this.aggregator = aggregator;\n    }\n\n    /** @param metric the metric to set */\n    public final void setMetric(String metric) {\n        this.metric = metric;\n    }\n\n    /** @param timestamp the timestamp to set */\n    public final void setTimestamp(long timestamp) {\n        this.timestamp = timestamp;\n    }\n\n    /** @param value the value to set */\n    public final void setValue(double value) {\n        this.value = value;\n    }\n\n    /** @param tags the tags to set */\n    public final void setTags(Map<String, String> tags) {\n        this.tags = tags;\n    }\n\n    /** @param tsuid the TSUID to set */\n    @JSONField(name = \"tsuid\")\n    public final void setTSUID(String tsuid) {\n        this.tsuid = tsuid;\n    }\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/IncomingDataPoint_ext_double.java",
    "content": "package com.alibaba.json.bvtVO;\n\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.deserializer.ExtraProcessable;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * Created by wenshao on 03/08/2017.\n */\n@JSONType(serialzeFeatures= SerializerFeature.BeanToArray,\n        parseFeatures= Feature.SupportArrayToBean,\n        orders = {\"metric\", \"timestamp\", \"value\", \"tags\", \"tsuid\", \"granularity\", \"aggregator\"},\n        asm = true\n        )\npublic class IncomingDataPoint_ext_double {\n    /** The incoming metric name */\n    private String metric;\n\n    /** The incoming timestamp in Unix epoch seconds or milliseconds */\n    private long timestamp;\n\n    /** The incoming value as a string, we'll parse it to float or int later */\n    private double value;\n\n    /** A hash map of tag name/values */\n    private Tags tags;\n\n    /** TSUID for the data point */\n    private String tsuid;\n\n    private String granularity;\n\n    private String aggregator;\n\n    /**\n     * Empty constructor necessary for some de/serializers\n     */\n    public IncomingDataPoint_ext_double() {\n\n    }\n\n    /**\n     * Constructor used when working with tsuids\n     * @param tsuid The TSUID\n     * @param timestamp The Unix epoch timestamp\n     * @param value The value as a string\n     */\n    public IncomingDataPoint_ext_double(final String tsuid,\n                                        final String granularity,\n                                        final long timestamp,\n                                        final double value) {\n        this.tsuid = tsuid;\n        this.granularity = granularity;\n        this.timestamp = timestamp;\n        this.value = value;\n    }\n\n\n\n    /** @return the metric */\n    public final String getMetric() {\n        return metric;\n    }\n\n    /** @return the timestamp */\n    public final long getTimestamp() {\n        return timestamp;\n    }\n\n    /** @return the value */\n    public final double getValue() {\n        return value;\n    }\n\n    /** @return the tags */\n    public final Tags getTags() {\n        return tags;\n    }\n\n    /** @return the TSUID */\n    @JSONField(name = \"tsuid\")\n    public final String getTSUID() {\n        return tsuid;\n    }\n\n    public final String getGranularity() {\n        return granularity;\n    }\n\n    public final String getAggregator() {\n        return aggregator;\n    }\n\n    public final void setGranularity(String granularity) {\n        this.granularity = granularity;\n    }\n\n    public final void setAggregator(String aggregator) {\n        this.aggregator = aggregator;\n    }\n\n    /** @param metric the metric to set */\n    public final void setMetric(String metric) {\n        this.metric = metric;\n    }\n\n    /** @param timestamp the timestamp to set */\n    public final void setTimestamp(long timestamp) {\n        this.timestamp = timestamp;\n    }\n\n    /** @param value the value to set */\n    public final void setValue(double value) {\n        this.value = value;\n    }\n\n    /** @param tags the tags to set */\n    public final void setTags(Tags tags) {\n        this.tags = tags;\n    }\n\n    /** @param tsuid the TSUID to set */\n    @JSONField(name = \"tsuid\")\n    public final void setTSUID(String tsuid) {\n        this.tsuid = tsuid;\n    }\n\n    @JSONType(orders = {\"appName\", \"hostIdc\", \"hostunit\", \"nodegroup\", \"idc\", \"hostIp\", \"agg_version\", \"group\"})\n    public static class Tags {\n        // 常用字段\n        public String appName;\n        public String hostIdc;\n        public String hostunit;\n        public String nodegroup;\n        public String idc;\n        public String agg_version;\n        public String hostIp;\n        public String group;\n\n        // 非常用的tag会放在这里，由于标识了unwrapped，序列化时会展开和上面字段并列，反序列化同样能识别\n        @JSONField(unwrapped = true)\n        public Map<String, String> attributes = new HashMap<String, String>();\n    }\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/IntEnum.java",
    "content": "package com.alibaba.json.bvtVO;\n\n/**\n * Created by wenshao on 10/02/2017.\n */\npublic interface IntEnum<E extends Enum<E>> {\n    int getCode();\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/Main.java",
    "content": "package com.alibaba.json.bvtVO;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.TypeReference;\r\n\r\npublic class Main {\r\n    public static void main(String[] args) {\r\n        Page<Bean> page = new Page<Bean>();\r\n        page.setCount(1);\r\n        List<Bean> items = new ArrayList<Bean>();\r\n        Bean item = new Bean();\r\n        item.setId(1);\r\n        item.setName(\"name\");\r\n        item.setDesc(\"desc\");\r\n        items.add(item);\r\n        page.setItems(items);\r\n        String json = JSON.toJSONString(page);\r\n\r\n        Page<Bean> jsonPage = JSON.parseObject(json, new TypeReference<Page<Bean>>() {\r\n        });\r\n        System.out.println(jsonPage.getItems().get(0).getName());\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/OfferRankResultVO.java",
    "content": "package com.alibaba.json.bvtVO;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class OfferRankResultVO {\n\tprivate List<SearchCenterOfferModel> models = new ArrayList<SearchCenterOfferModel>();\n\t\n\tpublic OfferRankResultVO() {\n\t\tmodels.add(new SearchCenterOfferModel());\n\t}\n\n\tpublic List<SearchCenterOfferModel> getModel() {\n\t\treturn models;\n\t}\n\n\tpublic void setModel(List<SearchCenterOfferModel> models) {\n\t\tthis.models = models;\n\t}\n\n}\n\nclass SearchCenterOfferModel {\n\tprivate int id;\n\tprivate String name;\n\n\tpublic int getId() {\n\t\treturn id;\n\t}\n\n\tpublic void setId(int id) {\n\t\tthis.id = id;\n\t}\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic void setName(String name) {\n\t\tthis.name = name;\n\t}\n\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/OptionKey.java",
    "content": "/*\r\n * Copyright 2011 Alibaba.com All right reserved. This software is the\r\n * confidential and proprietary information of Alibaba.com (\"Confidential\r\n * Information\"). You shall not disclose such Confidential Information and shall\r\n * use it only in accordance with the terms of the license agreement you entered\r\n * into with Alibaba.com.\r\n */\r\npackage com.alibaba.json.bvtVO;\r\n\r\n/**\r\n * 类OptionKey.java的实现描述：TODO 类实现描述\r\n * \r\n * @author lei.yaol 2011-12-27 下午03:40:45\r\n */\r\npublic enum OptionKey {\r\n    TEMPLATE_REOUSRCE_ID, TEMPALTE_ATTACH_META, RESEND_LOG_ID;\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/OptionValue.java",
    "content": "/**\r\n * Project: rowan.share-1.0.0\r\n * \r\n * File Created at 2011-11-24\r\n * $Id$\r\n * \r\n * Copyright 1999-2100 Alibaba.com Corporation Limited.\r\n * All rights reserved.\r\n *\r\n * This software is the confidential and proprietary information of\r\n * Alibaba Company. (\"Confidential Information\").  You shall not\r\n * disclose such Confidential Information and shall use it only in\r\n * accordance with the terms of the license agreement you entered into\r\n * with Alibaba.com.\r\n */\r\npackage com.alibaba.json.bvtVO;\r\n\r\nimport java.io.Serializable;\r\n\r\n/**\r\n * 类OptionValue.java的实现描述：TODO 类实现描述\r\n * \r\n * @author lei.yaol 2011-12-27 下午03:41:43\r\n */\r\npublic class OptionValue<E extends Serializable> implements Serializable {\r\n\r\n    private static final long serialVersionUID = -1158546247925194748L;\r\n\r\n    private E                 value;\r\n\r\n    /**\r\n     * set option value\r\n     * \r\n     * @param value\r\n     */\r\n    public void setValue(E value) {\r\n        this.value = value;\r\n    }\r\n\r\n    /**\r\n     * get option value\r\n     * \r\n     * @return E\r\n     */\r\n    public E getValue() {\r\n        return value;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/Page.java",
    "content": "package com.alibaba.json.bvtVO;\r\n\r\nimport java.util.List;\r\n\r\npublic class Page<T> {\r\n    private Integer count;\r\n    private List<T> items;\r\n\r\n    public void setCount(Integer count) {\r\n        this.count = count;\r\n    }\r\n\r\n    public Integer getCount() {\r\n        return count;\r\n    }\r\n\r\n    public void setItems(List<T> items) {\r\n        this.items = items;\r\n    }\r\n\r\n    public List<T> getItems() {\r\n        return items;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/PayDO.java",
    "content": "package com.alibaba.json.bvtVO;\n\npublic class PayDO {\n\n    public Integer getCurrentSubPayOrder() {\n        throw new RuntimeException(\"non getter getXXX method should not be called\");\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/PhysicalQueue.java",
    "content": "package com.alibaba.json.bvtVO;\n\npublic class PhysicalQueue {\n\n    private QueueEntity queue;\n    private Integer     weight;\n    private Integer     capacity;\n    private int         inRate;\n    private int         outRate;\n\n    // Napoli 1.1 新加属性\n    private boolean     sendable;\n    private boolean     receivable;\n\n    public PhysicalQueue(){\n\n    }\n\n    public Integer getCapacity() {\n        return capacity;\n    }\n\n    public void setCapacity(Integer capacity) {\n        this.capacity = capacity;\n    }\n\n    public int getInRate() {\n        return inRate;\n    }\n\n    public void setInRate(int inRate) {\n        this.inRate = inRate;\n    }\n\n    public int getOutRate() {\n        return outRate;\n    }\n\n    public void setOutRate(int outRate) {\n        this.outRate = outRate;\n    }\n\n    public boolean relationChanged(Object other) {\n        return false;\n    }\n\n    public QueueEntity getQueue() {\n        return queue;\n    }\n\n    public void setQueue(QueueEntity queue) {\n        this.queue = queue;\n    }\n\n    public Integer getWeight() {\n        return weight;\n    }\n\n    public void setWeight(Integer weight) {\n        this.weight = weight;\n    }\n\n    public boolean isSendable() {\n        return sendable;\n    }\n\n    public void setSendable(boolean sendable) {\n        this.sendable = sendable;\n    }\n\n    public boolean isReceivable() {\n        return receivable;\n    }\n\n    public void setReceivable(boolean receivable) {\n        this.receivable = receivable;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/ProductView.java",
    "content": "package com.alibaba.json.bvtVO;\n\npublic class ProductView {\n\n    private Integer id;\n    private String  keyword;\n    private boolean hasProduct;\n    private boolean hasCompany;\n    private boolean hasBuyLead;\n    private String  country;\n\n    public Integer getId() {\n        return id;\n    }\n\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    public String getKeyword() {\n        return keyword;\n    }\n\n    public void setKeyword(String keyword) {\n        this.keyword = keyword;\n    }\n\n    public boolean isHasProduct() {\n        return hasProduct;\n    }\n\n    public void setHasProduct(boolean hasProduct) {\n        this.hasProduct = hasProduct;\n    }\n\n    public boolean isHasCompany() {\n        return hasCompany;\n    }\n\n    public void setHasCompany(boolean hasCompany) {\n        this.hasCompany = hasCompany;\n    }\n\n    public boolean isHasBuyLead() {\n        return hasBuyLead;\n    }\n\n    public void setHasBuyLead(boolean hasBuyLead) {\n        this.hasBuyLead = hasBuyLead;\n    }\n\n    public String getCountry() {\n        return country;\n    }\n\n    public void setCountry(String country) {\n        this.country = country;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/PushMsg.java",
    "content": "package com.alibaba.json.bvtVO;\n\nimport java.io.Serializable;\nimport java.util.Date;\nimport java.util.List;\n\n/**\n * Created by haihong.xiahh on 13-12-23.\n */\npublic class PushMsg implements Serializable {\n\n    public static final String DIR_PUSH = \"push\";\n\n    /**\n     * \n     */\n    private static final long serialVersionUID = 8145512296629061628L;\n\n    public static final String TAG = PushMsg.class.getSimpleName();\n\n    public static final String TYPE_SYS = \"sys\";\n\n    public static final String TYPE_WL = \"wl\";\n\n    public static final long STATUS_TRANK_NO_NEW = 128;\n\n    /**\n     * id of PushMsg\n     */\n    private String id;\n    /**\n     * type\n     */\n    private String tp;\n    /**\n     * start time with unit second(s)\n     */\n    private long st;\n    /**\n     * end time with unit second(s)\n     */\n    private long et;\n    /**\n     * delay range 以10秒为单位，客户端会在[0 ~ dr*10seconds]的范围内，进行随机延时请求msg，防止服务器过载。\n     */\n    private long dr;\n\n    private Msg msg;\n\n    public String getId() {\n        return id;\n    }\n\n    public void setId(String id) {\n        this.id = id;\n    }\n\n    public String getTp() {\n        return tp;\n    }\n\n    public void setTp(String tp) {\n        this.tp = tp;\n    }\n\n    public long getSt() {\n        return st;\n    }\n\n    public void setSt(long st) {\n        this.st = st;\n    }\n\n    public long getEt() {\n        return et;\n    }\n\n    public void setEt(long et) {\n        this.et = et;\n    }\n\n    public Msg getMsg() {\n        return msg;\n    }\n\n    public void setMsg(Msg msg) {\n        this.msg = msg;\n    }\n\n    /**\n     * 条件： <br/>\n     * 1、没过期(et>=当前时间，st可以大于也可以小于当前时间)<br/>\n     * 2、消息体有效<br/>\n     * \n     * @return true if valid.\n     */\n    public boolean isValid() {\n        long now = new Date().getTime() / 1000;\n \n        if (now > et) {\n            return false;\n        }// end if\n\n        if (msg == null) {\n            return false;\n        }// end if\n\n        if (!msg.isValid()) {\n            return false;\n        }// end if\n\n        return true;\n    }\n\n    /**\n     * 条件 1. isValid 2. st <= now <= et\n     * */\n    public boolean isActiveNow() {\n        if (!isValid()) {\n            return false;\n        }\n        long now = new Date().getTime() / 1000;\n\n        if (now < st) {\n            return false;\n        }// end if\n\n        if (now > et) {\n            return false;\n        }// end if\n\n        if (!isImagesReady()) {\n            return false;\n        }// end if\n\n        return true;\n    }\n\n    /**\n     * 消息的URL是否存在\n     * \n     * @return true if exist.\n     */\n    public boolean hasUrl() {\n        boolean result = true;\n        if (null != msg) {\n        } else {\n            result = false;\n        }\n\n\n        return result;\n    }\n\n    public boolean hasText() {\n        boolean result = true;\n        if (null != msg) {\n        } else {\n            result = false;\n        }\n\n\n        return result;\n    }\n\n    /**\n     * 通知所需的图片资源是否就绪\n     * \n     * @return true if ready, otherwise return false.\n     */\n    private boolean isImagesReady() {\n        List<String> list = getNewImageUrlList();\n        boolean ret = null == list || 0 == list.size();\n        if (!ret) {\n            preparedImages(list);\n        }\n        return ret;\n    }\n\n    /**\n     * 主动下载未缓存到客户端的资源图片\n     */\n    public void preparedImages() {\n        List<String> list = getNewImageUrlList();\n        preparedImages(list);\n    }\n\n    public void preparedImages(List<String> list) {\n    }\n\n    /**\n     * 获取需要下载图片的URL列表\n     * \n     * @return list of image URL which image's URL is not cached, otherwise\n     *         return null.\n     */\n    private List<String> getNewImageUrlList() {\n        return null;\n    }\n\n    public static class Msg implements Serializable {\n        /**\n         * \n         */\n        private static final long serialVersionUID = -2020714577526457332L;\n\n        private String gid;\n        private String gtp;\n        /**\n         * 指显示在通知左侧的外部图标URL\n         */\n        private String ico;\n        private String url;\n        private String txt;\n\n        private String flgs;\n        private String stxt;\n        private String surl;\n        /**\n         * 指在分享页附加的外部图片URL\n         */\n        private String simg;\n\n        private ControlFlags controlFlags;\n\n        public Msg() {\n        }\n\n        public String getGid() {\n            return gid;\n        }\n\n        public void setGid(String gid) {\n            this.gid = gid;\n        }\n\n        public String getGtp() {\n            return gtp;\n        }\n\n        public void setGtp(String gtp) {\n            this.gtp = gtp;\n        }\n\n        public String getIco() {\n            return ico;\n        }\n\n        public void setIco(String icon) {\n            this.ico = icon;\n        }\n\n        public String getUrl() {\n            return url;\n        }\n\n        public void setUrl(String url) {\n            if (null != url) {\n                url = url.trim();\n            }\n            this.url = url;\n        }\n\n        public String getTxt() {\n            return txt;\n        }\n\n        public void setTxt(String txt) {\n            this.txt = txt;\n        }\n\n        public String getFlgs() {\n            return flgs;\n        }\n\n        public void setFlgs(String flgs) {\n            this.flgs = flgs;\n            controlFlags = new ControlFlags(flgs);\n        }\n\n        public String getStxt() {\n            return stxt;\n        }\n\n        public void setStxt(String stxt) {\n            this.stxt = stxt;\n        }\n\n        public String getSurl() {\n            return surl;\n        }\n\n        public void setSurl(String surl) {\n            this.surl = surl;\n        }\n\n        public String getSimg() {\n            return simg;\n        }\n\n        public void setSimg(String simg) {\n            this.simg = simg;\n        }\n\n        public ControlFlags getControlFlags() {\n            return controlFlags;\n        }\n\n        /**\n         * <p>\n         * 条件\n         * </p>\n         * 0.gid 不为null 1.controlFlag 必须有效（即非空，则控制位数目足够）<br/>\n         * 2.当开启分享功能时，stxt/surl/simg 至少有一个有效（非空）<br/>\n         * \n         * @return true if valid.\n         */\n        public boolean isValid() {\n\n            return true;\n        }\n\n        /**\n         * 打印debug信息\n         * \n         * @return\n         */\n        public String debug() {\n            StringBuilder sb = new StringBuilder();\n            sb.append(\"\\n#gid=\" + gid);\n            sb.append(\"\\n#gtp=\" + gtp);\n            sb.append(\"\\n#ico=\" + ico);\n            sb.append(\"\\n#url=\" + url);\n            sb.append(\"\\n#txt=\" + txt);\n            sb.append(\"\\n#flags=\" + flgs);\n            sb.append(\"\\n#stxt=\" + stxt);\n            sb.append(\"\\n#surl=\" + surl);\n            sb.append(\"\\n#simg=\" + simg);\n            if (null != controlFlags) {\n                sb.append(controlFlags.debug());\n            }// end if\n            return sb.toString();\n        }\n\n        /**\n         * 标志控制\n         * \n         * @author wangyue.wy\n         */\n        public static class ControlFlags implements Serializable {\n\n            /**\n             * \n             */\n            private static final long serialVersionUID = 6289110973325625431L;\n\n            private enum INDEX_TYPE {\n                INDEX_POS, INDEX_OPEN_URL, INDEX_DIMISS, INDEX_CANCEL_BTN, INDEX_TEXT_EFFECTS, INDEX_SHARE, INDEX_ATTACH_IMAGE, INDEX_LIMIT_SHOW_MAX_ONCE\n            }\n\n            private final int COUNT = INDEX_TYPE.values().length;\n\n            public static final int CTR_UNKNOWN = 0;\n            private String text;\n\n            /**\n             * <p>\n             * 展示位置（暂时只有顶部，居中）\n             * </p>\n             * <p>\n             * A:顶部(default)<br/>\n             * B：居中 <br/>\n             * </p>\n             */\n            private char ctrlPos;\n            /**\n             * <p>\n             * URL打开方式\n             * </p>\n             * <p>\n             * A:内嵌打开(default)<br/>\n             * B：外部浏览器打开 <br/>\n             * </p>\n             */\n            private char ctrlOpenUrl;\n            /**\n             * <p>\n             * 消失方式\n             * </p>\n             * <p>\n             * A:不消失（直至过期失效）(default)<br/>\n             * B:点击消失<br/>\n             * C:解锁消失 <br/>\n             * D:浏览消失<br/>\n             * E:解锁+点击消失 <br/>\n             * F:解锁+浏览消失 <br/>\n             * G:解锁+点击+浏览消失 <br/>\n             * </p>\n             */\n            private char ctrlDimiss;\n            /**\n             * <p>\n             * 删除按钮\n             * </p>\n             * <p>\n             * A:显示(default)<br/>\n             * B:不显示 <br/>\n             * </p>\n             */\n            private char ctrlCancelBtn;\n            /**\n             * <p>\n             * 是否支持分享\n             * </p>\n             * <p>\n             * A:开启(default)<br/>\n             * B:关闭<br/>\n             * </p>\n             */\n            private char ctrlShare;\n            /**\n             * <p>\n             * 附加图片来源\n             * </p>\n             * <p>\n             * A:无图片(default)<br/>\n             * B:使用屏幕截图<br/>\n             * C:使用服务器指定的URL网络图片\n             * </p>\n             */\n            private char ctrlAttachImage;\n            /**\n             * <p>\n             * 文案展示效果\n             * </p>\n             * <p>\n             * A:静止显示(default)<br/>\n             * B:滚动 <br/>\n             * </p>\n             */\n            private char ctrlTextEffects;\n\n            /**\n             * <p>\n             * <b>同一gid通知</b>，限制最多展示一次\n             * </p>\n             * <p>\n             * A:否(default)\n             * </p>\n             * <p>\n             * B:是\n             * </p>\n             */\n            private char ctrlLimitShowMaxOnce;\n\n            public ControlFlags(String param) {\n\n                this.text = param;\n                ctrlPos = text.charAt(INDEX_TYPE.INDEX_POS.ordinal());\n                ctrlOpenUrl = text.charAt(INDEX_TYPE.INDEX_OPEN_URL.ordinal());\n                ctrlDimiss = text.charAt(INDEX_TYPE.INDEX_DIMISS.ordinal());\n                ctrlCancelBtn = text.charAt(INDEX_TYPE.INDEX_CANCEL_BTN.ordinal());\n                ctrlShare = text.charAt(INDEX_TYPE.INDEX_SHARE.ordinal());\n                ctrlAttachImage = text.charAt(INDEX_TYPE.INDEX_ATTACH_IMAGE.ordinal());\n                ctrlTextEffects = text.charAt(INDEX_TYPE.INDEX_TEXT_EFFECTS.ordinal());\n                ctrlLimitShowMaxOnce = text.charAt(INDEX_TYPE.INDEX_LIMIT_SHOW_MAX_ONCE.ordinal());\n            }\n\n            /* control of position */\n            public boolean posTop() {\n                // default\n                return 'A' == ctrlPos || ctrlPos > 'B' || ctrlPos < 'A';\n            }\n\n            public boolean posCenter() {\n                return 'B' == ctrlPos;\n            }\n\n            /* control of open URL mode */\n            public boolean openUrlByInner() {\n                // default\n                return 'A' == ctrlOpenUrl || ctrlOpenUrl > 'B' || ctrlPos < 'A';\n            }\n\n            public boolean openUrlByOutside() {\n                return 'B' == ctrlOpenUrl;\n            }\n\n            /* control of dismiss */\n            public boolean nerverDismiss() {\n                // default\n                return 'A' == ctrlDimiss || ctrlDimiss > 'G' || ctrlPos < 'A';\n            }\n\n            public boolean dismissByUnlock() {\n                return 'C' == ctrlDimiss || 'D' == ctrlDimiss;\n            }\n\n            public boolean dismissByClick() {\n                return 'B' == ctrlDimiss || 'D' == ctrlDimiss;\n            }\n\n            /* control of show cancel btn */\n            public boolean showCancelBtn() {\n                // default\n                return 'A' == ctrlCancelBtn || ctrlCancelBtn > 'B' || ctrlPos < 'A';\n            }\n\n            /**\n             * 是否首页 或 Web页，开启分享按钮\n             * \n             * @return true if Not 'B'(B:首页 和 Web页均关闭分享按钮显示)\n             */\n            public boolean enableShare() {\n                return 'B' != ctrlShare;\n            }\n\n            /* control of share */\n            /**\n             * 首页是否支持通知显示分享按钮\n             * \n             * @return true if equal 'A', 'C' or [*,A] || [D,*]\n             */\n            public boolean enableShareInHomePage() {\n                // default\n                return 'A' == ctrlShare || 'C' == ctrlShare || ctrlShare > 'D' || ctrlPos < 'A';\n            }\n\n            /**\n             * Web页是否支持通知显示分享按钮\n             * \n             * @return true if equal 'A' Or 'D'\n             */\n            public boolean enableShareInWebPage() {\n                // default\n                return 'A' == ctrlShare || 'D' == ctrlShare || ctrlShare > 'D' || ctrlPos < 'A';\n            }\n\n            /* control of use screen shot image */\n            public boolean attachNoImage() {\n                // default\n                return 'A' == ctrlAttachImage || ctrlAttachImage > 'C' || ctrlPos < 'A';\n            }\n\n            public boolean attachScreenShot() {\n                return 'B' == ctrlAttachImage;\n            }\n\n            public boolean attachWebUrlImage() {\n                return 'C' == ctrlAttachImage;\n            }\n\n            /* control of text effects */\n            public boolean isStaicTextEffects() {\n                return 'A' == ctrlTextEffects || ctrlTextEffects > 'C' || ctrlPos < 'A';\n            }\n\n            public boolean isScrollTextEffects() {\n                return 'B' == ctrlTextEffects;\n            }\n\n            public boolean isBlingTextEffects() {\n                return 'C' == ctrlTextEffects;\n            }\n\n            public boolean isLimitShowMaxOnce() {\n                return 'B' == ctrlLimitShowMaxOnce;\n            }\n\n            /**\n             * \n             * 控制字不能为空<br/>\n             * 控制字长度不少于所需长度\n             * \n             * @return true if valid, otherwise return false.\n             */\n            public boolean isValid() {\n\n                return true;\n            }\n\n            /**\n             * 打印调试信息\n             * \n             * @return\n             */\n            public String debug() {\n                StringBuilder sb = new StringBuilder();\n                sb.append(\"\\n>>>>>>>>>>>\");\n                sb.append(\"\\nflag:\" + text);\n                sb.append(\"\\n(\" + INDEX_TYPE.INDEX_POS.ordinal() + \")ctrlPos=\" + ctrlPos);\n                sb.append(\"\\n(\" + INDEX_TYPE.INDEX_OPEN_URL.ordinal() + \")ctrlOpenUrl=\" + ctrlOpenUrl);\n                sb.append(\"\\n(\" + INDEX_TYPE.INDEX_DIMISS.ordinal() + \")ctrlDismiss=\" + ctrlDimiss);\n                sb.append(\"\\n(\" + INDEX_TYPE.INDEX_CANCEL_BTN.ordinal() + \")ctrlCancelBtn=\" + ctrlCancelBtn);\n                sb.append(\"\\n(\" + INDEX_TYPE.INDEX_TEXT_EFFECTS.ordinal() + \")ctrlTextEffects=\" + ctrlTextEffects);\n                sb.append(\"\\n(\" + INDEX_TYPE.INDEX_SHARE.ordinal() + \")ctrlShare=\" + ctrlShare);\n                sb.append(\"\\n(\" + INDEX_TYPE.INDEX_ATTACH_IMAGE.ordinal() + \")ctrlAttachImage=\" + ctrlAttachImage);\n                sb.append(\"\\n(\" + INDEX_TYPE.INDEX_LIMIT_SHOW_MAX_ONCE.ordinal() + \")ctrlLimitShowMaxOnce=\"\n                        + ctrlLimitShowMaxOnce);\n                sb.append(\"\\n>>>>>>>>>>>\");\n                return sb.toString();\n            }\n        }\n    }\n\n    /**\n     * 打印debug信息\n     * \n     * @return\n     */\n    public String debug() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(\"\\n>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\");\n        sb.append(\"\\nid=\" + id);\n        sb.append(\"\\nst=\" + st);\n        sb.append(\"\\net=\" + et);\n        sb.append(\"\\ndr=\" + dr);\n        sb.append(\"\\nmsg=\\n\" + msg.debug());\n        sb.append(\"\\n>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\");\n        return sb.toString();\n    }\n\n    public long getDr() {\n        return dr;\n    }\n\n    public void setDr(long dr) {\n        this.dr = dr;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/QueryResult.java",
    "content": "package com.alibaba.json.bvtVO;\n\npublic class QueryResult {\n    private PayDO pay;\n\n    public void setPay(PayDO pay) {\n        this.pay = pay;\n    }\n\n    public PayDO getPay() {\n        return pay;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/QueueEntity.java",
    "content": "package com.alibaba.json.bvtVO;\n\n/**\n * Project: napoli.domain File Created at 2009-6-3 $Id: QueueEntity.java 55142 2010-08-24 01:43:14Z guolin.zhuanggl $ Copyright\n * 2008 Alibaba.com Croporation Limited. All rights reserved. This software is the confidential and proprietary\n * information of Alibaba Company. (\"Confidential Information\"). You shall not disclose such Confidential Information\n * and shall use it only in accordance with the terms of the license agreement you entered into with Alibaba.com.\n */\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * 用于存Queue配置信息的类，这里的Queue就是指业务上对应的�1�7�辑Queue，可能会分布到多台机器上\n * \n * @author xiaosong.liangxs\n */\npublic class QueueEntity {\n\n    private int                         id;\n    private String                      description;\n\n    private Map<Integer, PhysicalQueue> pqMap = new HashMap<Integer, PhysicalQueue>();\n\n    /**\n     * @return the pqMap\n     */\n    public Map<Integer, PhysicalQueue> getPqMap() {\n        return pqMap;\n    }\n\n    /**\n     * @param pqMap the pqMap to set\n     */\n    public void setPqMap(Map<Integer, PhysicalQueue> pqMap) {\n        this.pqMap = pqMap;\n    }\n\n    public QueueEntity(){\n    }\n\n    /**\n     * @return the pqMap\n     */\n    public Map<Integer, PhysicalQueue> getPhysicalQueueMap() {\n        return pqMap;\n    }\n\n    /**\n     * @param pqMap the pqMap to set\n     */\n    public void setPhysicalQueueMap(Map<Integer, PhysicalQueue> pqMap) {\n        this.pqMap = pqMap;\n    }\n\n    public int getId() {\n        return id;\n    }\n\n    public void setId(int id) {\n        this.id = id;\n    }\n\n    public String getDescription() {\n        return description;\n    }\n\n    public void setDescription(String description) {\n        this.description = description;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/RainbowStats.java",
    "content": "package com.alibaba.json.bvtVO;\n\npublic class RainbowStats {\n\tprivate int id;\n\tprivate String name;\n\n\tpublic int getId() {\n\t\treturn id;\n\t}\n\n\tpublic RainbowStats setId(int id) {\n\t\tthis.id = id;\n\t\treturn this;\n\t}\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic RainbowStats setName(String name) {\n\t\tthis.name = name;\n\t\treturn this;\n\t}\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/TempAttachMetaOption.java",
    "content": "/**\r\n * Project: rowan.server.biz.service-1.0-SNAPSHOT\r\n * \r\n * File Created at 2011-12-9\r\n * $Id$\r\n * \r\n * Copyright 1999-2100 Alibaba.com Corporation Limited.\r\n * All rights reserved.\r\n *\r\n * This software is the confidential and proprietary information of\r\n * Alibaba Company. (\"Confidential Information\").  You shall not\r\n * disclose such Confidential Information and shall use it only in\r\n * accordance with the terms of the license agreement you entered into\r\n * with Alibaba.com.\r\n */\r\npackage com.alibaba.json.bvtVO;\r\n\r\nimport java.io.Serializable;\r\n\r\n/**\r\n * 类TempAttachMetaOption.java的实现描述：TODO 类实现描述\r\n * \r\n * @author lei.yaol 2011-12-27 下午03:43:32\r\n */\r\npublic class TempAttachMetaOption implements Serializable {\r\n\r\n    private static final long serialVersionUID = -8786217160252057362L;\r\n\r\n    private Integer           id;\r\n\r\n    private String            name;\r\n\r\n    private String            path;\r\n\r\n    public Integer getId() {\r\n        return id;\r\n    }\r\n\r\n    public void setId(Integer id) {\r\n        this.id = id;\r\n    }\r\n\r\n    public String getName() {\r\n        return name;\r\n    }\r\n\r\n    public void setName(String name) {\r\n        this.name = name;\r\n    }\r\n\r\n    public String getPath() {\r\n        return path;\r\n    }\r\n\r\n    public void setPath(String path) {\r\n        this.path = path;\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/TestDTO.java",
    "content": "package com.alibaba.json.bvtVO;\r\n\r\nimport javax.xml.bind.annotation.XmlRootElement;\r\n\r\n/**\r\n */\r\n@XmlRootElement(name = \"TestDTO\")\r\npublic class TestDTO {\r\n\r\n    private String       channel;\r\n    private String       txCode;\r\n\r\n\r\n    public String getChannel() {\r\n        return channel;\r\n    }\r\n\r\n    public void setChannel(String channel) {\r\n        this.channel = channel;\r\n    }\r\n\r\n    public String getTxCode() {\r\n        return txCode;\r\n    }\r\n\r\n    public void setTxCode(String txCode) {\r\n        this.txCode = txCode;\r\n    }\r\n\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/VirtualTopic.java",
    "content": "package com.alibaba.json.bvtVO;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic class VirtualTopic {\n\n    private static final long         serialVersionUID = 1115397330651723322L;\n\n    private Map<Integer, QueueEntity> queueMap         = new HashMap<Integer, QueueEntity>();\n    private Integer                   queueCount;\n\n    private int                       queueLimit;\n\n    private String                    description;\n\n    public VirtualTopic(){\n\n    }\n\n    public String getDescription() {\n        return description;\n    }\n\n    public void setDescription(String description) {\n        this.description = description;\n    }\n\n    /**\n     * @return the queueList\n     */\n    public Map<Integer, QueueEntity> getQueueMap() {\n        return queueMap;\n    }\n\n    /**\n     * @param queueList the queueList to set\n     */\n    public void setQueueMap(Map<Integer, QueueEntity> queueMap) {\n        this.queueMap = queueMap;\n    }\n\n    /**\n     * @return the queueCount\n     */\n    public Integer getQueueCount() {\n        if (queueCount != null) {\n            return queueCount;\n        } else {\n            return queueMap.size();\n        }\n    }\n\n    /**\n     * @param queueCount the queueCount to set\n     */\n    public void setQueueCount(Integer queueCount) {\n        this.queueCount = queueCount;\n    }\n\n    public boolean propertiesChanged(Object other) {\n        if (!(other instanceof VirtualTopic)) {\n            return false;\n        }\n        VirtualTopic vt = (VirtualTopic) other;\n        int size = queueMap.size();\n        if (size != vt.queueMap.size()) {\n            return true;\n        }\n        for (Integer id : queueMap.keySet()) {\n            if (!vt.queueMap.containsKey(id)) {\n                return true;\n            }\n        }\n        return false;\n    }\n\n    public boolean relationChanged(Object other) {\n        if (!(other instanceof VirtualTopic)) {\n            return false;\n        }\n        VirtualTopic vt = (VirtualTopic) other;\n        int size = queueMap.size();\n        if (size != vt.queueMap.size()) {\n            return true;\n        }\n        for (Integer id : queueMap.keySet()) {\n            if (!vt.queueMap.containsKey(id)) {\n                return true;\n            }\n        }\n        return false;\n    }\n\n    /**\n     * @param queueEntity\n     */\n    public void addQueue(QueueEntity queueEntity) {\n        this.queueMap.put(queueEntity.getId(), queueEntity);\n    }\n\n    public int getQueueLimit() {\n        return queueLimit;\n    }\n\n    public void setQueueLimit(int queueLimit) {\n        this.queueLimit = queueLimit;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/WareHouseInfo.java",
    "content": "package com.alibaba.json.bvtVO;\n\nimport java.io.Serializable;\n\n/**\n * ��WarehouseInfo.java��ʵ���������ֿ���Ϣ����\n * \n * @author maik.wangz 2011-12-12 ����09:50:32\n */\npublic class WareHouseInfo implements Serializable {\n\n    private static final long serialVersionUID = 6102232214244738211L;\n    // ʡ��ID\n    private String            provinceId;\n    // ʡ�����\n    private String            provinceName;\n    // ����ID\n    private String            cityId;\n    // �������\n    private String            cityName;\n    // ����ID\n    private String            areaId;\n    // ��������\n    private String            areaName;\n    // �ֿ����\n    private String            houseArea;\n    // �ֿ�ͼƬ\n    private Image[]           images;\n\n    public String getProvinceId() {\n        return provinceId;\n    }\n\n    public void setProvinceId(String provinceId) {\n        this.provinceId = provinceId;\n    }\n\n    public String getProvinceName() {\n        return provinceName;\n    }\n\n    public void setProvinceName(String provinceName) {\n        this.provinceName = provinceName;\n    }\n\n    public String getCityId() {\n        return cityId;\n    }\n\n    public void setCityId(String cityId) {\n        this.cityId = cityId;\n    }\n\n    public String getCityName() {\n        return cityName;\n    }\n\n    public void setCityName(String cityName) {\n        this.cityName = cityName;\n    }\n\n    public String getAreaId() {\n        return areaId;\n    }\n\n    public void setAreaId(String areaId) {\n        this.areaId = areaId;\n    }\n\n    public String getAreaName() {\n        return areaName;\n    }\n\n    public void setAreaName(String areaName) {\n        this.areaName = areaName;\n    }\n\n    public String getHouseArea() {\n        return houseArea;\n    }\n\n    public void setHouseArea(String houseArea) {\n        this.houseArea = houseArea;\n    }\n\n    public Image[] getImages() {\n        return images;\n    }\n\n    public void setImages(Image[] images) {\n        this.images = images;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/ae/Area.java",
    "content": "package com.alibaba.json.bvtVO.ae;\n\nimport com.alibaba.fastjson.annotation.JSONType;\n\n/**\n * Created by huangliang on 17/4/12.\n */\npublic interface Area {\n    public static final String TYPE_FLOOR = \"floor\";\n    public static final String TYPE_ITEM = \"item\";\n\n    String getName();\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/ae/Data.java",
    "content": "package com.alibaba.json.bvtVO.ae;\n\nimport java.util.List;\n\n/**\n * Created by wenshao on 09/05/2017.\n */\npublic class Data {\n    public List<Area> areaList;\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/ae/Floor.java",
    "content": "package com.alibaba.json.bvtVO.ae;\n\nimport java.util.List;\n\n/**\n * Created by huangliang on 17/5/8.\n */\n\npublic class Floor implements Area {\n    public List<Area> children;\n\n    public String name;\n\n    public String getName() {\n        return name;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/ae/Item.java",
    "content": "package com.alibaba.json.bvtVO.ae;\n\npublic class Item implements Area {\n    public String name;\n\n    public String getName() {\n        return name;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/ae/huangliang2/Area.java",
    "content": "package com.alibaba.json.bvtVO.ae.huangliang2;\n\nimport com.alibaba.fastjson.annotation.JSONType;\n\n/**\n * Created by huangliang on 17/5/8.\n */\n@JSONType(seeAlso = { Section.class, FloorV1.class,FloorV2.class  })\npublic interface Area {\n    public static final String TYPE_SECTION = \"section\";\n    public static final String TYPE_FLOORV1 = \"floorV1\";\n    public static final String TYPE_FLOORV2 = \"floorV2\";\n\n    String getName();\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/ae/huangliang2/Floor.java",
    "content": "package com.alibaba.json.bvtVO.ae.huangliang2;\n\n\nimport com.alibaba.fastjson.annotation.JSONType;\n\n/**\n * Created by huangliang on 17/5/8.\n */\n\npublic interface Floor extends Area {\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/ae/huangliang2/FloorPageData.java",
    "content": "package com.alibaba.json.bvtVO.ae.huangliang2;\n\nimport java.util.List;\n\n/**\n * Created by huangliang on 17/5/8.\n */\n\npublic class FloorPageData {\n    public List<Area> areas;\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/ae/huangliang2/FloorV1.java",
    "content": "package com.alibaba.json.bvtVO.ae.huangliang2;\n\nimport com.alibaba.fastjson.annotation.JSONType;\n\n/**\n * Created by huangliang on 17/5/8.\n */\n@JSONType(typeName = \"floorV1\")\npublic class FloorV1 implements Floor {\n\n    public String type;\n    public String templateId;\n\n    @Override\n    public String getName() {\n        return templateId;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/ae/huangliang2/FloorV2.java",
    "content": "package com.alibaba.json.bvtVO.ae.huangliang2;\n\nimport com.alibaba.fastjson.annotation.JSONType;\n\n/**\n * Created by huangliang on 17/5/8.\n */\n@JSONType(typeName = \"floorV2\")\npublic class FloorV2 implements Floor {\n    public String type;\n\n    public String templateId;\n\n    @Override\n    public String getName() {\n        return templateId;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/ae/huangliang2/MockResult.java",
    "content": "package com.alibaba.json.bvtVO.ae.huangliang2;\n\nimport com.alibaba.fastjson.JSONObject;\n\n/**\n * Created by huangliang on 17/5/9.\n */\n\npublic class MockResult {\n    boolean isTest;\n    public JSONObject mockResult;\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/ae/huangliang2/NetResponse.java",
    "content": "package com.alibaba.json.bvtVO.ae.huangliang2;\n\nimport com.alibaba.fastjson.JSONObject;\n\n/**\n * Created by huangliang on 17/5/9.\n */\n\npublic class NetResponse {\n    public Head head;\n\n    public static class Head {\n        public String message;\n        public String code;\n        public String serverErrorCode;\n        public long serverTime;\n        public String traceId;\n        public String op;\n        public String ab;\n    }\n\n    public JSONObject body;\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/ae/huangliang2/Section.java",
    "content": "package com.alibaba.json.bvtVO.ae.huangliang2;\n\nimport com.alibaba.fastjson.annotation.JSONType;\n\nimport java.util.List;\n\n/**\n * Created by huangliang on 17/5/8.\n */\n@JSONType(typeName = \"section\")\npublic class Section implements Area {\n    public List<Area> children;\n\n    public String type;\n\n    public String templateId;\n\n    @Override\n    public String getName() {\n        return templateId;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/alipay/PlatformDepartmentVO.java",
    "content": "package com.alibaba.json.bvtVO.alipay;\n\nimport com.alibaba.fastjson.annotation.JSONField;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class PlatformDepartmentVO {\n    @JSONField(ordinal=1)\n    private String id ;\n    @JSONField(ordinal=2)\n    private String label ;\n    @JSONField(ordinal=3)\n    private String value;\n    @JSONField(ordinal=4)\n    private String  parentId;\n    @JSONField(ordinal=5)\n    private String  parentLabel;\n    @JSONField(ordinal=6)\n    private String companyId;\n    @JSONField(ordinal=7)\n    private String departCode;\n    @JSONField(ordinal=8)\n    private String memo;\n    @JSONField(ordinal=9)\n    private String departOrgCode;\n    @JSONField(ordinal=10)\n    private String contact;\n    @JSONField(ordinal=11)\n    private String mobile;\n    @JSONField(ordinal=12)\n    private String departType;\n    @JSONField(serialize=false)\n    private String ipId;\n    @JSONField(serialize=false)\n    private String ipRoleId;\n    @JSONField(serialize=false)\n    private PlatformDepartmentVO parent;\n    @JSONField(ordinal=6,name=\"ChildNodes\")\n    private List<PlatformDepartmentVO> childNodes =new ArrayList<PlatformDepartmentVO>();\n    public String getId() {\n        return id;\n    }\n    public void setId(String id) {\n        this.id = id;\n    }\n    public String getLabel() {\n        return label;\n    }\n    public void setLabel(String label) {\n        this.label = label;\n    }\n    public String getValue() {\n        return value;\n    }\n    public void setValue(String value) {\n        this.value = value;\n    }\n\n    public String getParentId() {\n        return parentId;\n    }\n    public void setParentId(String parentId) {\n        this.parentId = parentId;\n    }\n    public String getCompanyId() {\n        return companyId;\n    }\n    public void setCompanyId(String companyId) {\n        this.companyId = companyId;\n    }\n\n    public String getDepartCode() {\n        return departCode;\n    }\n    public void setDepartCode(String departCode) {\n        this.departCode = departCode;\n    }\n    public String getMemo() {\n        return memo;\n    }\n    public void setMemo(String memo) {\n        this.memo = memo;\n    }\n    public PlatformDepartmentVO getParent() {\n        return parent;\n    }\n    public void setParent(PlatformDepartmentVO parent) {\n        this.parent = parent;\n    }\n    public List<PlatformDepartmentVO> getChildNodes() {\n        return childNodes;\n    }\n    public void setChildNodes(List<PlatformDepartmentVO> childNodes) {\n        this.childNodes = childNodes;\n    }\n\n    /**\n     * Getter method for property <tt>departType</tt>.\n     *\n     * @return property value of departType\n     */\n    public String getDepartType() {\n        return departType;\n    }\n\n    /**\n     * Setter method for property <tt>departType</tt>.\n     *\n     * @param departType  value to be assigned to property departType\n     */\n    public void setDepartType(String departType) {\n        this.departType = departType;\n    }\n\n    /**\n     * Getter method for property <tt>parentLabel</tt>.\n     *\n     * @return property value of parentLabel\n     */\n    public String getParentLabel() {\n        return parentLabel;\n    }\n\n    /**\n     * Setter method for property <tt>parentLabel</tt>.\n     *\n     * @param parentLabel  value to be assigned to property parentLabel\n     */\n    public void setParentLabel(String parentLabel) {\n        this.parentLabel = parentLabel;\n    }\n\n    /**\n     * Getter method for property <tt>departOrgCode</tt>.\n     *\n     * @return property value of departOrgCode\n     */\n    public String getDepartOrgCode() {\n        return departOrgCode;\n    }\n\n    /**\n     * Setter method for property <tt>departOrgCode</tt>.\n     *\n     * @param departOrgCode  value to be assigned to property departOrgCode\n     */\n    public void setDepartOrgCode(String departOrgCode) {\n        this.departOrgCode = departOrgCode;\n    }\n\n    /**\n     * Getter method for property <tt>contact</tt>.\n     *\n     * @return property value of contact\n     */\n    public String getContact() {\n        return contact;\n    }\n\n    /**\n     * Setter method for property <tt>contact</tt>.\n     *\n     * @param contact  value to be assigned to property contact\n     */\n    public void setContact(String contact) {\n        this.contact = contact;\n    }\n\n    /**\n     * Getter method for property <tt>mobile</tt>.\n     *\n     * @return property value of mobile\n     */\n    public String getMobile() {\n        return mobile;\n    }\n\n    /**\n     * Setter method for property <tt>mobile</tt>.\n     *\n     * @param mobile  value to be assigned to property mobile\n     */\n    public void setMobile(String mobile) {\n        this.mobile = mobile;\n    }\n\n    /**\n     * Getter method for property <tt>ipRoleId</tt>.\n     *\n     * @return property value of ipRoleId\n     */\n    public String getIpRoleId() {\n        return ipRoleId;\n    }\n\n    /**\n     * Setter method for property <tt>ipRoleId</tt>.\n     *\n     * @param ipRoleId  value to be assigned to property ipRoleId\n     */\n    public void setIpRoleId(String ipRoleId) {\n        this.ipRoleId = ipRoleId;\n    }\n\n    /**\n     * Getter method for property <tt>ipId</tt>.\n     *\n     * @return property value of ipId\n     */\n    public String getIpId() {\n        return ipId;\n    }\n\n    /**\n     * Setter method for property <tt>ipId</tt>.\n     *\n     * @param ipId  value to be assigned to property ipId\n     */\n    public void setIpId(String ipId) {\n        this.ipId = ipId;\n    }\n\n    public PlatformDepartmentVO() {\n\n    }\n//    public PlatformDepartmentVO(String id, String label, String value, String parentId,\n//                                String companyId) {\n//        this.id = id;\n//        this.label = label;\n//        this.value = value;\n//        this.parentId = parentId;\n//        this.companyId = companyId;\n//    }\n\n\n    public boolean equals(Object obj) {\n        if (this == obj) {\n            return true;\n        }\n        if (obj == null) {\n            return false;\n        }\n        if (getClass() != obj.getClass()) {\n            return false;\n        }\n        if(null==this.getId()){\n            return false;\n        }\n        final PlatformDepartmentVO other = (PlatformDepartmentVO) obj;\n        if(!this.getId().equals(other.getId())) {\n            return false;\n        }\n        return true;\n    }\n\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/basic/LongPrimitiveEntity.java",
    "content": "package com.alibaba.json.bvtVO.basic;\n\npublic class LongPrimitiveEntity {\n    public long value;\n\n    public LongPrimitiveEntity() {\n\n    }\n\n    public LongPrimitiveEntity(long value) {\n        this.value = value;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/bbc/BaseResult.java",
    "content": "package com.alibaba.json.bvtVO.bbc;\n\n\nimport java.io.Serializable;\n\npublic class BaseResult<T> implements Serializable {\n    private T data;\n    public T getData() {\n        return data;\n    }\n    public void setData(T data) {\n        this.data = data;\n    }\n    \n    \n    public BaseResult() {\n        \n    }\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/bbc/MyResultResult.java",
    "content": "package com.alibaba.json.bvtVO.bbc;\n\n\npublic class MyResultResult extends BaseResult<String> {\n\n    public MyResultResult(){\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/deny/A.java",
    "content": "package com.alibaba.json.bvtVO.deny;\n\n\npublic class A {\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/mogujie/BankCard.java",
    "content": "package com.alibaba.json.bvtVO.mogujie;\n\nimport java.io.Serializable;\n\n/**\n * Created by wenshao on 16/03/2017.\n */\npublic class BankCard implements Serializable {\n    private static final long serialVersionUID = -8043292491053382301L;\n\n    public static final Integer CARD_TYPE_DEBIT = 1;        //借记卡\n    public static final Integer CARD_TYPE_CREDIT = 2;       //贷记卡\n\n    private Long id;\n    private String bankId;\n\n    public Long getId() {\n        return id;\n    }\n\n    public void setId(Long id) {\n        this.id = id;\n    }\n\n\n    public String getBankId() {\n        return bankId;\n    }\n\n    public void setBankId(String bankId) {\n        this.bankId = bankId;\n    }\n\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/mogujie/BaseDTO.java",
    "content": "package com.alibaba.json.bvtVO.mogujie;\n\nimport java.io.Serializable;\n\n/**\n * Created by wenshao on 16/03/2017.\n */\npublic class BaseDTO implements Serializable {\n    /**\n     *  serialVersionUID\n     */\n    private static final long serialVersionUID = -1;\n\n    /**\n     * version\n     */\n    private String            version;\n\n    /**\n     * is online test\n     */\n    private Boolean           onlineTest = Boolean.FALSE;\n\n    /**\n     * http referer\n     */\n    private String referer;\n\n    public String getVersion() {\n        return version;\n    }\n    public void setVersion(String version) {\n        this.version = version;\n    }\n    public Boolean isOnlineTest() {\n        return onlineTest;\n    }\n    public void setOnlineTest(Boolean onlineTest) {\n        this.onlineTest = onlineTest;\n    }\n    public String getReferer() {\n        return referer;\n    }\n    public void setReferer(String referer) {\n        this.referer = referer;\n    }\n    @Override\n    public String toString() {\n        return \"BaseDTO [version=\" + version + \", onlineTest=\" + onlineTest + \", referer=\" + referer + \"]\";\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/mogujie/BindQueryRespDTO.java",
    "content": "package com.alibaba.json.bvtVO.mogujie;\n\nimport java.io.Serializable;\n\n/**\n * Created by wenshao on 16/03/2017.\n */\npublic class BindQueryRespDTO {\n\n    /**\n     * version\n     */\n    public int            f0;\n\n    /**\n     * is online test\n     */\n    public int           f1;\n\n    /**\n     * http referer\n     */\n    public String referer;\n\n    /**\n     * 签约ID\n     */\n    public Long bindId;\n\n    /**\n     * 签约银行卡ID\n     */\n    public int    bankCardId;\n\n    /**\n     * 签约号\n     */\n    public String bindNo;\n\n    /**\n     * 用户ID\n     */\n    public Long  userId;\n\n    /**\n     * 签约状态\n     */\n    public Integer  status;\n\n    /**\n     * 签约时间（10位时间戳）\n     */\n    public Long bindTime;\n\n    /**\n     * 签约银行卡号\n     */\n    public String   cardNo;\n\n    /**\n     * 签约银行卡号标记\n     */\n    public String cardNoMark;\n\n    /**\n     * 签约银行卡号缩写\n     */\n    public String cardNoClip;\n\n    /**\n     * 银行ID\n     */\n    public String bankId;\n\n    /**\n     * 银行名称\n     */\n    public String bankName;\n\n    /**\n     * 银行LOGO\n     */\n    public String bankLogo;\n\n    /**\n     * 银行背景色\n     */\n    public String bankColor;\n\n    /**\n     * 银行卡类\n     */\n    public Integer cardType;\n\n    /**\n     * 银行卡类描述\n     */\n    public String cardTypeDesc;\n\n    /**\n     * 持卡人姓名缩写\n     */\n    public String cardHolderNameClip;\n\n    /**\n     * 签约银行卡预留手机号\n     */\n    public String mobile;\n\n    /**\n     * 签约银行卡预留手机号缩写\n     */\n\n    public String mobileClip;\n\n    /**\n     * 银行卡开户省 see new\n     */\n\n    public String province;\n\n    /**\n     * 银行卡开户市\n     */\n    public String city;\n\n    /**\n     * 平安提现通道-大小额通道编号\n     */\n    public String pinganBankCode;\n\n    /**\n     * 平安提现通道-超网通道编号\n     */\n    public String pinganSuperBankCode;\n\n    /**\n     * 开户支行\n     */\n    public String subBank;\n\n    /**\n     * 联行号\n     */\n    public String cnapsCode;\n\n    /**\n     * 渠道签约ID\n     */\n    public Long     channelBindId;\n\n    /**\n     * 渠道签约号\n     */\n    public String   channelBindNo;\n\n    /**\n     * 渠道签约类型\n     */\n    public Integer  channelBindType;\n\n    public String  subBankDesc;\n\n\n    /**\n     * 银行卡信息\n     */\n    public BankCard bankCard;\n\n\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/vip_com/QueryLoanOrderRsp.java",
    "content": "package com.alibaba.json.bvtVO.vip_com;\r\n\r\nimport java.math.BigDecimal;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.TypeReference;\r\n\r\npublic class QueryLoanOrderRsp {\r\n  private String loan_card_no;\r\n  private String loan_prod_code;\r\n  private String last_row_type;//最后一条记录类型\r\n  private String last_row_key;//最后一条记录键值\r\n  private String nextpage_flag;//是否有下一页标志\r\n  private List<TxnListItsm> txn_list;\r\n\r\n  \r\n\r\n  public QueryLoanOrderRsp() {\r\n    super();\r\n  }\r\n\r\n  public String getLoan_card_no() {\r\n    return loan_card_no;\r\n  }\r\n\r\n  public void setLoan_card_no(String loan_card_no) {\r\n    this.loan_card_no = loan_card_no;\r\n  }\r\n\r\n  public String getLoan_prod_code() {\r\n    return loan_prod_code;\r\n  }\r\n\r\n  public void setLoan_prod_code(String loan_prod_code) {\r\n    this.loan_prod_code = loan_prod_code;\r\n  }\r\n\r\n  public String getLast_row_type() {\r\n    return last_row_type;\r\n  }\r\n\r\n  public void setLast_row_type(String last_row_type) {\r\n    this.last_row_type = last_row_type;\r\n  }\r\n\r\n  public String getLast_row_key() {\r\n    return last_row_key;\r\n  }\r\n\r\n  public void setLast_row_key(String last_row_key) {\r\n    this.last_row_key = last_row_key;\r\n  }\r\n\r\n  public String getNextpage_flag() {\r\n    return nextpage_flag;\r\n  }\r\n\r\n  public void setNextpage_flag(String nextpage_flag) {\r\n    this.nextpage_flag = nextpage_flag;\r\n  }\r\n\r\n  public List<TxnListItsm> getTxn_list() {\r\n    return txn_list;\r\n  }\r\n\r\n  public void setTxn_list(List<TxnListItsm> txn_list) {\r\n    this.txn_list = txn_list;\r\n  }\r\n  \r\n  public static void main(String[] args) {\r\n    QueryLoanOrderRsp rsp = new QueryLoanOrderRsp();\r\n    \r\n    rsp.setLast_row_key(\"A\");\r\n    List<TxnListItsm> txn_list = new ArrayList<TxnListItsm>();\r\n    TxnListItsm itsm = new TxnListItsm();\r\n    itsm.setAssets_no(\"B\");\r\n    itsm.setCover_vol(new BigDecimal(\"300\"));\r\n    txn_list.add(itsm);\r\n    rsp.setTxn_list(txn_list);\r\n    \r\n    String txt = JSON.toJSONString(rsp);\r\n    System.out.println(txt);\r\n    \r\n    String txt2 = JSON.toJSONString(txn_list);\r\n    System.out.println(txt2);\r\n    \r\n    List<TxnListItsm> itsms = JSON.parseObject(txt2, \r\n        new TypeReference<List<TxnListItsm>>(){});\r\n    System.out.println(itsms);\r\n\r\n    rsp = JSON.parseObject(txt, \r\n        new TypeReference<QueryLoanOrderRsp>(){});\r\n    \r\n    System.out.println(rsp);\r\n  }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/vip_com/TxnListItsm.java",
    "content": "package com.alibaba.json.bvtVO.vip_com;\r\n\r\nimport java.math.BigDecimal;\r\n\r\npublic class TxnListItsm {\r\n  private String assets_no;\r\n  private BigDecimal cover_vol;\r\n  \r\n  public String getAssets_no() {\r\n    return assets_no;\r\n  }\r\n\r\n  public void setAssets_no(String assets_no) {\r\n    this.assets_no = assets_no;\r\n  }\r\n\r\n  public BigDecimal getCover_vol() {\r\n    return cover_vol;\r\n  }\r\n\r\n  public void setCover_vol(BigDecimal cover_vol) {\r\n    this.cover_vol = cover_vol;\r\n  }\r\n  \r\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/wuqi/InstanceSchema.java",
    "content": "package com.alibaba.json.bvtVO.wuqi;\n\n/**\n * Created by wuqi on 17/3/30.\n */\npublic class InstanceSchema {\n\n    public InstanceSchema() {\n        this.created = System.currentTimeMillis() / 1000;\n        this.updated = System.currentTimeMillis() / 1000;\n        this.isDeleted = 0;\n        this.isTagField = 0;\n    }\n\n    private int id;\n    private String instanceName;\n    private String fieldName;\n    private String fieldType;\n    private String fieldBaseType;\n    private String fieldComment;\n    private int fieldIndexed;\n    private int fieldStored;\n    private Integer fieldTag;\n    private int isDeleted;\n    private long created;\n    private long updated;\n    private Integer cycleType;\n    private Integer isTagField;\n    private String defaultValue;\n\n    public String getDefaultValue() {\n        return defaultValue;\n    }\n\n    public void setDefaultValue(String defaultValue) {\n        this.defaultValue = defaultValue;\n    }\n\n    public Integer getIsTagField() {\n        return isTagField;\n    }\n\n    public void setIsTagField(Integer isTagField) {\n        this.isTagField = isTagField;\n    }\n\n    public Integer getId() {\n        return id;\n    }\n\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    public String getInstanceName() {\n        return instanceName;\n    }\n\n    public void setInstanceName(String instanceName) {\n        this.instanceName = instanceName;\n    }\n\n    public String getFieldName() {\n        return fieldName;\n    }\n\n    public void setFieldName(String fieldName) {\n        this.fieldName = fieldName;\n    }\n\n    public String getFieldType() {\n        return fieldType;\n    }\n\n    public void setFieldType(String fieldType) {\n        this.fieldType = fieldType;\n    }\n\n    public String getFieldBaseType() {\n        return fieldBaseType;\n    }\n\n    public void setFieldBaseType(String fieldBaseType) {\n        this.fieldBaseType = fieldBaseType;\n    }\n\n    public String getFieldComment() {\n        return fieldComment;\n    }\n\n    public void setFieldComment(String fieldComment) {\n        this.fieldComment = fieldComment;\n    }\n\n    public int getFieldIndexed() {\n        return fieldIndexed;\n    }\n\n    public void setFieldIndexed(int fieldIndexed) {\n        this.fieldIndexed = fieldIndexed;\n    }\n\n    public int getFieldStored() {\n        return fieldStored;\n    }\n\n    public void setFieldStored(int fieldStored) {\n        this.fieldStored = fieldStored;\n    }\n\n    public Integer getFieldTag() {\n        return fieldTag;\n    }\n\n    public void setFieldTag(Integer fieldTag) {\n        this.fieldTag = fieldTag;\n    }\n\n    public int getIsDeleted() {\n        return isDeleted;\n    }\n\n    public void setIsDeleted(int isDeleted) {\n        this.isDeleted = isDeleted;\n    }\n\n    public Integer getCycleType() {\n        return cycleType;\n    }\n\n    public void setCycleType(Integer cycleType) {\n        this.cycleType = cycleType;\n    }\n\n    public long getCreated() {\n        return created;\n    }\n\n    public void setCreated(long created) {\n        this.created = created;\n    }\n\n    public long getUpdated() {\n        return updated;\n    }\n\n    public void setUpdated(long updated) {\n        this.updated = updated;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/wuqi/Result.java",
    "content": "package com.alibaba.json.bvtVO.wuqi;\n\n/**\n * Created by wuqi on 17/3/30.\n */\npublic class Result<T> {\n    private T data;\n\n\n    public Result(){}\n\n    public T getData() {\n        return data;\n    }\n\n    public void setData(T data) {\n        this.data = data;\n    }\n\n    @Override\n    public String toString() {\n        return \"Result{\" +\n                \"data=\" + data +\n                '}';\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/wuqi/SchemaResult.java",
    "content": "package com.alibaba.json.bvtVO.wuqi;\n\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Map;\n\n/**\n * Created by wuqi on 17/3/30.\n */\npublic class SchemaResult {\n\n    private int code;\n    private String massage;\n    private List<InstanceSchema> data;\n    private List<Map<String, Object>> extra;\n\n    public void addExtra(Map<String, Object> map) {\n        this.extra.add(map);\n    }\n\n    public List<Map<String, Object>> getExtra() {\n        return extra;\n    }\n\n    public void setExtra(List<Map<String, Object>> extra) {\n        this.extra = extra;\n    }\n\n    public SchemaResult() {\n        data = new ArrayList<InstanceSchema>();\n        extra = new ArrayList<Map<String, Object>>();\n    }\n\n    public int getCode() {\n        return code;\n    }\n\n    public void setCode(int code) {\n        this.code = code;\n    }\n\n    public String getMassage() {\n        return massage;\n    }\n\n    public void setMassage(String massage) {\n        this.massage = massage;\n    }\n\n    public List<InstanceSchema> getData() {\n        return data;\n    }\n\n    public void setData(List<InstanceSchema> data) {\n        this.data = data;\n    }\n\n    public void addData(InstanceSchema InstanceSchemaItem) {\n        this.data.add(InstanceSchemaItem);\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/bvtVO/一个中文名字的包/User.java",
    "content": "package com.alibaba.json.bvtVO.一个中文名字的包;\n\npublic class User {\n    Integer id ;\n    String name;\n    public Integer getId() {\n        return id;\n    }\n    public void setId(Integer id) {\n        this.id = id;\n    }\n    public String getName() {\n        return name;\n    }\n    public void setName(String name) {\n        this.name = name;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/demo/BooleanFieldDemo.java",
    "content": "package com.alibaba.json.demo;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 15/02/2017.\n */\npublic class BooleanFieldDemo extends TestCase {\n    public void test_boolean() throws Exception {\n        Model model = new Model();\n        String json = JSON.toJSONString(model, SerializerFeature.IgnoreNonFieldGetter);\n        System.out.println(json);\n\n\n    }\n\n    public static class Model {\n\n\n        public boolean isAvailable() {\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/demo/DateDemo.java",
    "content": "package com.alibaba.json.demo;\n\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.Locale;\nimport java.util.TimeZone;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SimpleDateFormatSerializer;\n\npublic class DateDemo extends TestCase { \n    protected void setUp() throws Exception {\n        JSON.defaultTimeZone = TimeZone.getTimeZone(\"Asia/Shanghai\");\n        JSON.defaultLocale = Locale.CHINA;\n    }\n    \n    public void test_0() throws Exception {\n        Date date = new Date(); \n        String text = JSON.toJSONString(date, mapping);\n        SimpleDateFormat format = new SimpleDateFormat(\"yyyy-MM-dd\", JSON.defaultLocale);\n        format.setTimeZone(JSON.defaultTimeZone);\n        Assert.assertEquals(JSON.toJSONString(format.format(date)), text);\n    }\n\n    private static SerializeConfig mapping = new SerializeConfig();\n    static {\n        mapping.put(Date.class, new SimpleDateFormatSerializer(\"yyyy-MM-dd\"));\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/demo/Demo1.java",
    "content": "package com.alibaba.json.demo;\n\nimport java.math.BigDecimal;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSONObject;\n\npublic class Demo1 extends TestCase {\n\n    public void test_0() throws Exception {\n        JSONObject jsonObject = new JSONObject();\n        jsonObject.put(\"name\", \"Jobs\");\n        jsonObject.put(\"age\", 50);\n        jsonObject.put(\"salary\", new BigDecimal(8000));\n\n        String text = jsonObject.toJSONString();\n        System.out.println(text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/demo/Demo2.java",
    "content": "package com.alibaba.json.demo;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic class Demo2 extends TestCase {\n\n    public void test_0() throws Exception {\n        Department dep = new Department();\n        dep.setId(123);\n        dep.setName(\"一级部门\");\n        dep.setParent(dep);        \n\n        String text = JSON.toJSONString(dep);\n        System.out.println(text);\n        \n        JSON.parseObject(text, Department.class);\n    }\n\n    public static class Department {\n    \n        private int                  id;\n        private String               name;\n        private Department parent;\n        private transient List<Department> children = new ArrayList<Department>();\n    \n        public int getId() { return id; }\n        public void setId(int id) { this.id = id; }\n        public String getName() { return name; }\n        public void setName(String name) { this.name = name; }\n        @JSONField(serialize=false)\n        public Department getParent() { return parent; }\n        public void setParent(Department parent) { this.parent = parent; }\n        public List<Department> getChildren() { return children; }\n        public void setChildren(List<Department> children) { this.children = children; }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/demo/EncodeDemo.java",
    "content": "package com.alibaba.json.demo;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\n\r\npublic class EncodeDemo extends TestCase {\r\n\r\n    public void test_encode() throws Exception {\r\n        Group group = new Group();\r\n        group.setId(0L);\r\n        group.setName(\"admin\");\r\n\r\n        User guestUser = new User();\r\n        guestUser.setId(2L);\r\n        guestUser.setName(\"guest\");\r\n\r\n        User rootUser = new User();\r\n        rootUser.setId(3L);\r\n        rootUser.setName(\"root\");\r\n\r\n        group.getUsers().add(guestUser);\r\n        group.getUsers().add(rootUser);\r\n\r\n        String jsonString = JSON.toJSONString(group);\r\n\r\n        System.out.println(jsonString);\r\n        \r\n        JSON.parseObject(jsonString, Group.class);\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/demo/ErrorObjectSerializer.java",
    "content": "package com.alibaba.json.demo;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\nimport java.util.Collections;\nimport java.util.Set;\n\nimport com.alibaba.fastjson.serializer.AutowiredObjectSerializer;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\n\n\npublic class ErrorObjectSerializer implements AutowiredObjectSerializer {\n    \n    public ErrorObjectSerializer() {\n        throw new RuntimeException();\n    }\n\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\n        \n    }\n\n    public Set<Type> getAutowiredFor() {\n        return Collections.<Type>singleton(X.class);\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/demo/FilterDemo.java",
    "content": "package com.alibaba.json.demo;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.NameFilter;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.ValueFilter;\n\npublic class FilterDemo extends TestCase {\n\n    public void test_secure() throws Exception {\n\n        ValueFilter filter = new ValueFilter() {\n\n            public Object process(Object source, String name, Object value) {\n                if (name.equals(\"name\")) {\n                    return \"WSJ\";\n                }\n                return value;\n            }\n        };\n\n        NameFilter nameFilter = new NameFilter() {\n            public String process(Object source, String name, Object value) {\n                if (name.equals(\"id\")) {\n                    return \"ID\";\n                }\n                return name;\n            }\n        };\n\n        String text = \"{\\\"id\\\":123,\\\"name\\\":\\\"WJH\\\"}\";\n\n        Object object = JSON.parse(text);\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        serializer.getValueFilters().add(filter);\n        serializer.getNameFilters().add(nameFilter);\n\n        serializer.write(object);\n\n        String outText = out.toString();\n        System.out.println(outText);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/demo/Forguard.java",
    "content": "package com.alibaba.json.demo;\n\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 10/03/2017.\n */\npublic class Forguard extends TestCase {\n\n    public void test_0() throws Exception {\n        String json = \"{\\\"id\\\":\\\"a123\\\", \\\"name\\\":\\\"wxf\\\"}\";\n\n        String value = javaGet(json, \"id\");\n        System.out.println(value);\n    }\n\n    public static String javaGet(String json, String key) {\n        char[] json_chars = json.toCharArray();\n        char[] key_chars = key.toCharArray();\n\n        char[] value_chars = get(json_chars, json_chars.length, key_chars, key_chars.length);\n\n        return new String(value_chars);\n    }\n\n    public static char[] get(char[] json, int json_len, char[] key, int key_len) {\n        if (json_len == 0) {\n            return new char[0];\n        }\n\n        Parser parser = new Parser();\n        parser.json_chars = json;\n        parser.json_len = json_len;\n        parser.ch = json[0];\n        next_token(parser);\n\n        if (parser.token != Token.LBRACE) {\n            throw new IllegalArgumentException(\"illegal json\");\n        }\n        next_token(parser);\n\n        for (;;) {\n            if (parser.token == Token.RBRACE) {\n                break;\n            }\n\n            if (parser.token != Token.STRING) {\n                throw new IllegalArgumentException(\"illegal json\");\n            }\n\n            char[] name_chars = parser.str_chars;\n            int name_len = parser.str_chars_len;\n            next_token(parser);\n\n            if (parser.token != Token.COLON) {\n                throw new IllegalArgumentException(\"illegal json\");\n            }\n            next_token(parser);\n\n            if (parser.token != Token.STRING) {\n                throw new IllegalArgumentException(\"illegal json\");\n            }\n\n            if (name_len == key_len) {\n                boolean eq = true;\n                for (int i = 0; i < name_len; ++i) {\n                    if (name_chars[i] != key[i]) {\n                        eq = false;\n                        break;\n                    }\n                }\n                if (eq) {\n                    return parser.str_chars;\n                }\n            }\n\n            next_token(parser);\n\n            if (parser.token == Token.COMMA) {\n                next_token(parser);\n                continue;\n            }\n\n        }\n\n        return null;\n    }\n\n    public static class Parser {\n        public char[] json_chars;\n        public int json_len;\n\n        public char[] str_chars;\n        public int str_chars_len;\n\n        public char ch;\n        public int  pos;\n        public Token token;\n    }\n\n    public static void next_char(Parser parser) {\n        parser.ch = (++parser.pos) < parser.json_len ? parser.json_chars[parser.pos] : '\\0';\n    }\n\n    public static void scanString(Parser parser) {\n        next_char(parser);\n\n        int start = parser.pos;\n        int end;\n        for (;;) {\n            if (parser.pos >= parser.json_len) {\n                throw new IllegalArgumentException(\"illegal string\");\n            }\n            if (parser.ch == '\"') {\n                end = parser.pos;\n                next_char(parser);\n                break;\n            }\n\n            if (parser.ch == '\\\\') {\n                throw new IllegalArgumentException(\"illegal string\");\n            }\n            next_char(parser);\n        }\n\n        parser.str_chars_len = end - start;\n        parser.str_chars = new char[parser.str_chars_len];\n        for (int i = 0; i < parser.str_chars_len; ++i) {\n            parser.str_chars[i] = parser.json_chars[start + i];\n        }\n        parser.token = Token.STRING;\n    }\n\n    public static void next_token(Parser parser) {\n        for (;;) {\n            int ch = parser.ch;\n            boolean isWhiteSpace = ch == '\\n' || ch == '\\r' || ch == ' ' || ch == '\\t';\n            if (isWhiteSpace) {\n                next_char(parser);\n                continue;\n            }\n            if (parser.pos >= parser.json_len) {\n                parser.token = Token.EOF;\n                return;\n            }\n            break;\n        }\n\n        switch (parser.ch) {\n            case '{':\n                parser.token = Token.LBRACE;\n                next_char(parser);\n                break;\n            case '}':\n                parser.token = Token.RBRACE;\n                next_char(parser);\n                break;\n            case ',':\n                parser.token = Token.COMMA;\n                next_char(parser);\n                break;\n            case ':':\n                parser.token = Token.COLON;\n                next_char(parser);\n                break;\n            case '\"':\n                scanString(parser);\n                break;\n            default:\n                throw new IllegalArgumentException(\"illegal json char\");\n        }\n    }\n\n    public static enum Token {\n        STRING, //\n        EOF, //\n        LBRACE,\n        RBRACE,\n        COMMA,\n        COLON\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/demo/Group.java",
    "content": "package com.alibaba.json.demo;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\npublic class Group {\r\n\r\n    private Long       id;\r\n    private String     name;\r\n    private List<User> users = new ArrayList<User>();\r\n\r\n    public Long getId() {\r\n        return id;\r\n    }\r\n\r\n    public void setId(Long id) {\r\n        this.id = id;\r\n    }\r\n\r\n    public String getName() {\r\n        return name;\r\n    }\r\n\r\n    public void setName(String name) {\r\n        this.name = name;\r\n    }\r\n\r\n    public List<User> getUsers() {\r\n        return users;\r\n    }\r\n\r\n    public void setUsers(List<User> users) {\r\n        this.users = users;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/demo/JSONFeidDemo.java",
    "content": "package com.alibaba.json.demo;\n\nimport org.junit.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.annotation.JSONField;\n\npublic class JSONFeidDemo extends TestCase {\n\n    public static class User {\n\n        private int    id;\n        private String name;\n\n        @JSONField(name = \"uid\")\n        public int getId() { return id; }\n\n        @JSONField(name = \"uid\")\n        public void setId(int id) { this.id = id; }\n\n        public String getName() { return name; }\n\n        public void setName(String name) { this.name = name; }\n    }\n\n    public void test_0() throws Exception {\n        User user = new User();\n        user.setId(123);\n        user.setName(\"毛头\");\n\n        String text = JSON.toJSONString(user);\n        Assert.assertEquals(\"{\\\"name\\\":\\\"毛头\\\",\\\"uid\\\":123}\", text);\n        System.out.println(text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/demo/MapDemo.java",
    "content": "package com.alibaba.json.demo;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class MapDemo extends TestCase {\n    public void test_0 () throws Exception {\n        Map<String, Object> map = new HashMap<String, Object>();\n        map.put(\"id\", 123);\n        map.put(\"name\", \"张三\");\n        \n        String text = JSON.toJSONString(map);\n        System.out.println(text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/demo/ReuseObject.java",
    "content": "package com.alibaba.json.demo;\n\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 11/02/2017.\n */\npublic class ReuseObject extends TestCase {\n    public void test_reuse() throws Exception {\nModel model = new Model();\n\n{\n    DefaultJSONParser parser = new DefaultJSONParser(\"{\\\"id\\\":123,\\\"name\\\":\\\"wangsai-silence\\\"}\");\n    parser.parseObject(model);\n    parser.close(); // 调用close能重用buf，提升性能\n\n    assertEquals(123, model.id);\n    assertEquals(\"wangsai-silence\", model.name);\n}\n\n{\n    DefaultJSONParser parser = new DefaultJSONParser(\"{\\\"id\\\":234,\\\"name\\\":\\\"wenshao\\\"}\");\n    parser.parseObject(model);\n    parser.close(); // 调用close能重用buf，提升性能\n\n    assertEquals(234, model.id);\n    assertEquals(\"wenshao\", model.name);\n}\n    }\npublic static class Model {\n    public int id;\n    public String name;\n}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/demo/User.java",
    "content": "package com.alibaba.json.demo;\r\n\r\n\r\nimport org.junit.Assert;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\n\r\npublic class User {\r\n\r\n    private Long   id;\r\n    private String name;\r\n\r\n    public Long getId() {\r\n        return id;\r\n    }\r\n\r\n    public void setId(Long id) {\r\n        this.id = id;\r\n    }\r\n\r\n    public String getName() {\r\n        return name;\r\n    }\r\n\r\n    public void setName(String name) {\r\n        this.name = name;\r\n    }\r\n    \r\n    public static void main(String[] args) {\r\n        User user = new User();\r\n        user.setId(123L);\r\n        user.setName(\"wenshao\");\r\n        String text = JSON.toJSONString(user);\r\n        System.out.println(text);\r\n        \r\n        User user1 = JSON.parseObject(text, User.class);\r\n        Assert.assertEquals(\"{\\\"id\\\":123,\\\"name\\\":\\\"wenshao\\\"}\", text);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/demo/X.java",
    "content": "package com.alibaba.json.demo;\n\n\npublic class X {\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/demo/XAutowiredObjectSerializer.java",
    "content": "package com.alibaba.json.demo;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\nimport java.util.Collections;\nimport java.util.Set;\n\nimport com.alibaba.fastjson.serializer.AutowiredObjectSerializer;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\n\n\npublic class XAutowiredObjectSerializer implements AutowiredObjectSerializer {\n\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\n        \n    }\n\n    public Set<Type> getAutowiredFor() {\n        return Collections.<Type>singleton(X.class);\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/demo/hibernate/ForceLazyLoadingTest.java",
    "content": "package com.alibaba.json.demo.hibernate;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.json.demo.hibernate.data.*;\nimport junit.framework.TestCase;\nimport org.hibernate.Hibernate;\nimport org.junit.Test;\n\nimport javax.persistence.EntityManager;\nimport javax.persistence.EntityManagerFactory;\nimport javax.persistence.Persistence;\nimport java.util.Map;\nimport java.util.Set;\n\npublic class ForceLazyLoadingTest extends TestCase {\n    EntityManagerFactory emf;\n\n    protected void setUp() throws Exception {\n        emf = Persistence.createEntityManagerFactory(\"persistenceUnit\");\n    }\n\n    protected void tearDown() throws Exception {\n        if (emf != null) {\n            emf.close();\n        }\n    }\n\n    public void testGetCustomerJson() throws Exception {\n\n        EntityManager em = emf.createEntityManager();\n\n        // false -> no forcing of lazy loading\n\n\n        Customer customer = em.find(Customer.class, 103);\n        assertFalse(Hibernate.isInitialized(customer.getPayments()));\n        String json = JSON.toJSONString(customer);\n        System.out.println(json);\n        // should force loading...\n//            Set<Payment> payments = customer.getPayments();\n//            /*\n//            System.out.println(\"--- JSON ---\");\n//            System.out.println(json);\n//            System.out.println(\"--- /JSON ---\");\n//            */\n//\n//            assertTrue(Hibernate.isInitialized(payments));\n//            // TODO: verify\n//            assertNotNull(json);\n//\n//            Map<?,?> stuff = mapper.readValue(json, Map.class);\n//\n//            assertTrue(stuff.containsKey(\"payments\"));\n//            assertTrue(stuff.containsKey(\"orders\"));\n//            assertNull(stuff.get(\"orderes\"));\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/demo/hibernate/LazyLoadingTest.java",
    "content": "package com.alibaba.json.demo.hibernate;\n\nimport java.util.*;\n\nimport javax.persistence.EntityManager;\nimport javax.persistence.EntityManagerFactory;\nimport javax.persistence.Persistence;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.json.demo.hibernate.data.*;\n\nimport junit.framework.TestCase;\n\npublic class LazyLoadingTest extends TestCase {\n    EntityManagerFactory emf;\n\n    protected void setUp() throws Exception {\n        emf = Persistence.createEntityManagerFactory(\"persistenceUnit\");\n    }\n\n    protected void tearDown() throws Exception {\n        if (emf != null) {\n            emf.close();\n        }\n    }\n\n    public void testGetCustomerJson() throws Exception {\n\n            EntityManager em = emf.createEntityManager();\n            \n            // false -> no forcing of lazy loading\n            //ObjectMapper mapper = mapperWithModule(false);\n            \n            Customer customer = em.find(Customer.class, 103);\n            // assertFalse(Hibernate.isInitialized(customer.getPayments()));\n            String json = JSON.toJSONString(customer);\n        System.out.println(json);\n            // should not force loading...\n            Set<Payment> payments = customer.getPayments();\n            /*\n            System.out.println(\"--- JSON ---\");\n            System.out.println(json);\n            System.out.println(\"--- /JSON ---\");\n            */\n\n            //assertFalse(Hibernate.isInitialized(payments));\n            // TODO: verify\n            assertNotNull(json);\n            \n//            Map<?,?> stuff = mapper.readValue(json, Map.class);\n//\n//            // \"payments\" is marked as lazily loaded AND \"Include.NON_EMPTY\"; should not be serialized\n//            if (stuff.containsKey(\"payments\")) {\n//                fail(\"Should not find serialized property 'payments'; got: \"+stuff.get(\"payments\")\n//                        +\" from JSON: \"+json);\n//            }\n//            // orders, on the other hand, not:\n//            assertTrue(stuff.containsKey(\"orders\"));\n//            assertNull(stuff.get(\"orderes\"));\n\n    }\n    \n//    @Test\n//    public void testSerializeIdentifierFeature() throws JsonProcessingException {\n//\t\tHibernate5Module module = new Hibernate5Module();\n//\t\tmodule.enable(Feature.SERIALIZE_IDENTIFIER_FOR_LAZY_NOT_LOADED_OBJECTS);\n//\t\tObjectMapper objectMapper = new ObjectMapper().registerModule(module);\n//\n//\t\tEntityManagerFactory emf = Persistence.createEntityManagerFactory(\"persistenceUnit\");\n//    \ttry {\n//    \t\tEntityManager em = emf.createEntityManager();\n//    \t\tCustomer customerRef = em.getReference(Customer.class, 103);\n//    \t\tem.close();\n//    \t\tassertFalse(Hibernate.isInitialized(customerRef));\n//\n//\t\t\tString json = objectMapper.writeValueAsString(customerRef);\n//\t\t\tassertFalse(Hibernate.isInitialized(customerRef));\n//\t\t\tassertEquals(\"{\\\"customerNumber\\\":103}\", json);\n//    \t} finally {\n//    \t\temf.close();\n//    \t}\n//    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/demo/hibernate/data/Customer.java",
    "content": "package com.alibaba.json.demo.hibernate.data;\n\nimport java.util.HashSet;\nimport java.util.Set;\nimport javax.persistence.*;\nimport static javax.persistence.GenerationType.IDENTITY;\n\nimport com.fasterxml.jackson.annotation.*;\n\n@Entity\n@Table(name=\"Customer\", catalog=\"classicmodels\")\npublic class Customer implements java.io.Serializable\n{\n    private static final long serialVersionUID = 1L;\n\n    private Integer customerNumber;\n    private Employee employee;\n    private String customerName;\n    private String contactLastName;\n    private String contactFirstName;\n    private String phone;\n    private String addressLine1;\n    private String addressLine2;\n    private String city;\n    private String state;\n    private String postalCode;\n    private String country;\n    private Double creditLimit;\n    private Set<Payment> payments = new HashSet<Payment>();\n    private Set<Order> orders = new HashSet<Order>();\n\n    public Customer() { }\n\n    public Customer(String customerName, String contactLastName, String contactFirstName, String phone, String addressLine1, String city, String country) {\n        this.customerName = customerName;\n        this.contactLastName = contactLastName;\n        this.contactFirstName = contactFirstName;\n        this.phone = phone;\n        this.addressLine1 = addressLine1;\n        this.city = city;\n        this.country = country;\n    }\n\n    public Customer(Employee employee, String customerName, String contactLastName, String contactFirstName, String phone, String addressLine1, String addressLine2, String city, String state, String postalCode, String country, Double creditLimit, Set<Payment> payments, Set<Order> orders) {\n       this.employee = employee;\n       this.customerName = customerName;\n       this.contactLastName = contactLastName;\n       this.contactFirstName = contactFirstName;\n       this.phone = phone;\n       this.addressLine1 = addressLine1;\n       this.addressLine2 = addressLine2;\n       this.city = city;\n       this.state = state;\n       this.postalCode = postalCode;\n       this.country = country;\n       this.creditLimit = creditLimit;\n       this.payments = payments;\n       this.orders = orders;\n    }\n\n    @Id @GeneratedValue(strategy=IDENTITY)\n    @Column(name=\"customerNumber\", unique=true, nullable=false)\n    public Integer getCustomerNumber() {\n        return this.customerNumber;\n    }\n\n     public void setCustomerNumber(Integer customerNumber) {\n        this.customerNumber = customerNumber;\n    }\n\n    @ManyToOne(fetch=FetchType.LAZY)\n    @JoinColumn(name=\"salesRepEmployeeNumber\")\n    @JsonBackReference\n    public Employee getEmployee() {\n        return this.employee;\n    }\n\n    public void setEmployee(Employee employee) {\n        this.employee = employee;\n    }\n\n    @Column(name=\"customerName\", nullable=false, length=50)\n    public String getCustomerName() {\n        return this.customerName;\n    }\n\n    public void setCustomerName(String customerName) {\n        this.customerName = customerName;\n    }\n\n    @Column(name=\"contactLastName\", nullable=false, length=50)\n    public String getContactLastName() {\n        return this.contactLastName;\n    }\n\n    public void setContactLastName(String contactLastName) {\n        this.contactLastName = contactLastName;\n    }\n\n    @Column(name=\"contactFirstName\", nullable=false, length=50)\n    public String getContactFirstName() {\n        return this.contactFirstName;\n    }\n\n    public void setContactFirstName(String contactFirstName) {\n        this.contactFirstName = contactFirstName;\n    }\n    \n    @Column(name=\"phone\", nullable=false, length=50)\n    public String getPhone() {\n        return this.phone;\n    }\n\n    public void setPhone(String phone) {\n        this.phone = phone;\n    }\n\n    @Column(name=\"addressLine1\", nullable=false, length=50)\n    public String getAddressLine1() {\n        return this.addressLine1;\n    }\n\n    public void setAddressLine1(String addressLine1) {\n        this.addressLine1 = addressLine1;\n    }\n\n    @Column(name=\"addressLine2\", length=50)\n    public String getAddressLine2() {\n        return this.addressLine2;\n    }\n\n    public void setAddressLine2(String addressLine2) {\n        this.addressLine2 = addressLine2;\n    }\n\n    @Column(name=\"city\", nullable=false, length=50)\n    public String getCity() {\n        return this.city;\n    }\n\n    public void setCity(String city) {\n        this.city = city;\n    }\n\n    @Column(name=\"state\", length=50)\n    public String getState() {\n        return this.state;\n    }\n\n    public void setState(String state) {\n        this.state = state;\n    }\n\n    @Column(name=\"postalCode\", length=15)\n    public String getPostalCode() {\n        return this.postalCode;\n    }\n\n    public void setPostalCode(String postalCode) {\n        this.postalCode = postalCode;\n    }\n\n    @Column(name=\"country\", nullable=false, length=50)\n    public String getCountry() {\n        return this.country;\n    }\n\n    public void setCountry(String country) {\n        this.country = country;\n    }\n\n    @Column(name=\"creditLimit\", precision=22, scale=0)\n    public Double getCreditLimit() {\n        return this.creditLimit;\n    }\n\n    public void setCreditLimit(Double creditLimit) {\n        this.creditLimit = creditLimit;\n    }\n\n    @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy=\"customer\")\n    public Set<Order> getOrders() {\n        return this.orders;\n    }\n\n    public void setOrders(Set<Order> orders) {\n        this.orders = orders;\n    }\n\n    @JsonInclude(JsonInclude.Include.NON_EMPTY)\n    @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy=\"customer\")\n    public Set<Payment> getPayments() {\n        return this.payments;\n    }\n\n    public void setPayments(Set<Payment> payments) {\n        this.payments = payments;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/demo/hibernate/data/Employee.java",
    "content": "package com.alibaba.json.demo.hibernate.data;\n\nimport java.util.HashSet;\nimport java.util.Set;\nimport javax.persistence.*;\nimport static javax.persistence.GenerationType.IDENTITY;\n\nimport com.fasterxml.jackson.annotation.JsonManagedReference;\n\n@SuppressWarnings(\"serial\")\n@Entity\n@Table(name=\"Employee\"\n    ,catalog=\"classicmodels\"\n)\npublic class Employee  implements java.io.Serializable\n{\n     private Integer employeeNumber;\n     private Office office;\n     private String lastName;\n     private String firstName;\n     private String extension;\n     private String email;\n     private Integer reportsTo;\n     private String jobTitle;\n     \n     private Set<Customer> customers = new HashSet<Customer>();\n\n    public Employee() { }\n\t\n    public Employee(Office office, String lastName, String firstName, String extension, String email, String jobTitle) {\n        this.office = office;\n        this.lastName = lastName;\n        this.firstName = firstName;\n        this.extension = extension;\n        this.email = email;\n        this.jobTitle = jobTitle;\n    }\n    public Employee(Office office, String lastName, String firstName, String extension, String email, Integer reportsTo, String jobTitle, Set<Customer> customers) {\n       this.office = office;\n       this.lastName = lastName;\n       this.firstName = firstName;\n       this.extension = extension;\n       this.email = email;\n       this.reportsTo = reportsTo;\n       this.jobTitle = jobTitle;\n       this.customers = customers;\n    }\n   \n     @Id @GeneratedValue(strategy=IDENTITY)\n    \n    @Column(name=\"employeeNumber\", unique=true, nullable=false)\n    public Integer getEmployeeNumber() {\n        return this.employeeNumber;\n    }\n    \n    public void setEmployeeNumber(Integer employeeNumber) {\n        this.employeeNumber = employeeNumber;\n    }\n@ManyToOne(fetch=FetchType.LAZY)\n    @JoinColumn(name=\"officeCode\", nullable=false)\n    public Office getOffice() {\n        return this.office;\n    }\n    \n    public void setOffice(Office office) {\n        this.office = office;\n    }\n    \n    @Column(name=\"lastName\", nullable=false, length=50)\n    public String getLastName() {\n        return this.lastName;\n    }\n    \n    public void setLastName(String lastName) {\n        this.lastName = lastName;\n    }\n    \n    @Column(name=\"firstName\", nullable=false, length=50)\n    public String getFirstName() {\n        return this.firstName;\n    }\n    \n    public void setFirstName(String firstName) {\n        this.firstName = firstName;\n    }\n    \n    @Column(name=\"extension\", nullable=false, length=10)\n    public String getExtension() {\n        return this.extension;\n    }\n    \n    public void setExtension(String extension) {\n        this.extension = extension;\n    }\n    \n    @Column(name=\"email\", nullable=false, length=100)\n    public String getEmail() {\n        return this.email;\n    }\n    \n    public void setEmail(String email) {\n        this.email = email;\n    }\n    \n    @Column(name=\"reportsTo\")\n    public Integer getReportsTo() {\n        return this.reportsTo;\n    }\n    \n    public void setReportsTo(Integer reportsTo) {\n        this.reportsTo = reportsTo;\n    }\n    \n    @Column(name=\"jobTitle\", nullable=false, length=50)\n    public String getJobTitle() {\n        return this.jobTitle;\n    }\n    \n    public void setJobTitle(String jobTitle) {\n        this.jobTitle = jobTitle;\n    }\n\n    @JsonManagedReference\n    @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy=\"employee\")\n    public Set<Customer> getCustomers() {\n        return this.customers;\n    }\n\n    public void setCustomers(Set<Customer> customers) {\n        this.customers = customers;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/demo/hibernate/data/Office.java",
    "content": "package com.alibaba.json.demo.hibernate.data;\n\n\nimport java.util.HashSet;\nimport java.util.Set;\nimport javax.persistence.CascadeType;\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\nimport javax.persistence.FetchType;\nimport javax.persistence.Id;\nimport javax.persistence.OneToMany;\nimport javax.persistence.Table;\n\n@SuppressWarnings(\"serial\")\n@Entity\n@Table(name=\"Office\"\n    ,catalog=\"classicmodels\"\n)\npublic class Office  implements java.io.Serializable {\n\n\n     private String officeCode;\n     private String city;\n     private String phone;\n     private String addressLine1;\n     private String addressLine2;\n     private String state;\n     private String country;\n     private String postalCode;\n     private String territory;\n     private Set<Employee> employees = new HashSet<Employee>(0);\n\n    public Office() {\n    }\n\n\t\n    public Office(String officeCode, String city, String phone, String addressLine1, String country, String postalCode, String territory) {\n        this.officeCode = officeCode;\n        this.city = city;\n        this.phone = phone;\n        this.addressLine1 = addressLine1;\n        this.country = country;\n        this.postalCode = postalCode;\n        this.territory = territory;\n    }\n    public Office(String officeCode, String city, String phone, String addressLine1, String addressLine2, String state, String country, String postalCode, String territory, Set<Employee> employees) {\n       this.officeCode = officeCode;\n       this.city = city;\n       this.phone = phone;\n       this.addressLine1 = addressLine1;\n       this.addressLine2 = addressLine2;\n       this.state = state;\n       this.country = country;\n       this.postalCode = postalCode;\n       this.territory = territory;\n       this.employees = employees;\n    }\n   \n     @Id \n    \n    @Column(name=\"officeCode\", unique=true, nullable=false, length=50)\n    public String getOfficeCode() {\n        return this.officeCode;\n    }\n    \n    public void setOfficeCode(String officeCode) {\n        this.officeCode = officeCode;\n    }\n    \n    @Column(name=\"city\", nullable=false, length=50)\n    public String getCity() {\n        return this.city;\n    }\n    \n    public void setCity(String city) {\n        this.city = city;\n    }\n    \n    @Column(name=\"phone\", nullable=false, length=50)\n    public String getPhone() {\n        return this.phone;\n    }\n    \n    public void setPhone(String phone) {\n        this.phone = phone;\n    }\n    \n    @Column(name=\"addressLine1\", nullable=false, length=50)\n    public String getAddressLine1() {\n        return this.addressLine1;\n    }\n    \n    public void setAddressLine1(String addressLine1) {\n        this.addressLine1 = addressLine1;\n    }\n    \n    @Column(name=\"addressLine2\", length=50)\n    public String getAddressLine2() {\n        return this.addressLine2;\n    }\n    \n    public void setAddressLine2(String addressLine2) {\n        this.addressLine2 = addressLine2;\n    }\n    \n    @Column(name=\"state\", length=50)\n    public String getState() {\n        return this.state;\n    }\n    \n    public void setState(String state) {\n        this.state = state;\n    }\n    \n    @Column(name=\"country\", nullable=false, length=50)\n    public String getCountry() {\n        return this.country;\n    }\n    \n    public void setCountry(String country) {\n        this.country = country;\n    }\n    \n    @Column(name=\"postalCode\", nullable=false, length=10)\n    public String getPostalCode() {\n        return this.postalCode;\n    }\n    \n    public void setPostalCode(String postalCode) {\n        this.postalCode = postalCode;\n    }\n    \n    @Column(name=\"territory\", nullable=false, length=10)\n    public String getTerritory() {\n        return this.territory;\n    }\n    \n    public void setTerritory(String territory) {\n        this.territory = territory;\n    }\n@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy=\"office\")\n    public Set<Employee> getEmployees() {\n        return this.employees;\n    }\n    \n    public void setEmployees(Set<Employee> employees) {\n        this.employees = employees;\n    }\n\n\n\n\n}\n\n\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/demo/hibernate/data/Order.java",
    "content": "package com.alibaba.json.demo.hibernate.data;\n\n\nimport com.fasterxml.jackson.annotation.JsonBackReference;\n\nimport java.util.Date;\nimport java.util.HashSet;\nimport java.util.Set;\nimport javax.persistence.CascadeType;\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\nimport javax.persistence.FetchType;\nimport javax.persistence.GeneratedValue;\nimport static javax.persistence.GenerationType.IDENTITY;\nimport javax.persistence.Id;\nimport javax.persistence.JoinColumn;\nimport javax.persistence.ManyToOne;\nimport javax.persistence.OneToMany;\nimport javax.persistence.Table;\n\n@SuppressWarnings(\"serial\")\n@Entity\n@Table(name=\"\\\"ORDER\\\"\"\n    ,catalog=\"classicmodels\"\n)\npublic class Order  implements java.io.Serializable {\n\n\n     private Integer orderNumber;\n     private Customer customer;\n     private Date orderDate;\n     private Date requiredDate;\n     private Date shippedDate;\n     private String status;\n     private String comments;\n     private Set<OrderDetail> orderDetails = new HashSet<OrderDetail>(0);\n\n    public Order() {\n    }\n\n\t\n    public Order(Customer customer, Date orderDate, Date requiredDate, String status) {\n        this.customer = customer;\n        this.orderDate = orderDate;\n        this.requiredDate = requiredDate;\n        this.status = status;\n    }\n    public Order(Customer customer, Date orderDate, Date requiredDate, Date shippedDate, String status, String comments, Set<OrderDetail> orderDetails) {\n       this.customer = customer;\n       this.orderDate = orderDate;\n       this.requiredDate = requiredDate;\n       this.shippedDate = shippedDate;\n       this.status = status;\n       this.comments = comments;\n       this.orderDetails = orderDetails;\n    }\n   \n     @Id @GeneratedValue(strategy=IDENTITY)\n    \n    @Column(name=\"orderNumber\", unique=true, nullable=false)\n    public Integer getOrderNumber() {\n        return this.orderNumber;\n    }\n    \n    public void setOrderNumber(Integer orderNumber) {\n        this.orderNumber = orderNumber;\n    }\n    @ManyToOne(fetch=FetchType.LAZY)\n    @JoinColumn(name=\"customerNumber\", nullable=false)\n    @JsonBackReference(\"order-customer\")\n    public Customer getCustomer() {\n        return this.customer;\n    }\n    \n    public void setCustomer(Customer customer) {\n        this.customer = customer;\n    }\n    \n    @Column(name=\"orderDate\", nullable=false, length=19)\n    public Date getOrderDate() {\n        return this.orderDate;\n    }\n    \n    public void setOrderDate(Date orderDate) {\n        this.orderDate = orderDate;\n    }\n    \n    @Column(name=\"requiredDate\", nullable=false, length=19)\n    public Date getRequiredDate() {\n        return this.requiredDate;\n    }\n    \n    public void setRequiredDate(Date requiredDate) {\n        this.requiredDate = requiredDate;\n    }\n    \n    @Column(name=\"shippedDate\", length=19)\n    public Date getShippedDate() {\n        return this.shippedDate;\n    }\n    \n    public void setShippedDate(Date shippedDate) {\n        this.shippedDate = shippedDate;\n    }\n    \n    @Column(name=\"status\", nullable=false, length=15)\n    public String getStatus() {\n        return this.status;\n    }\n    \n    public void setStatus(String status) {\n        this.status = status;\n    }\n    \n    @Column(name=\"comments\", length=65535)\n    public String getComments() {\n        return this.comments;\n    }\n    \n    public void setComments(String comments) {\n        this.comments = comments;\n    }\n@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy=\"order\")\n    public Set<OrderDetail> getOrderDetails() {\n        return this.orderDetails;\n    }\n    \n    public void setOrderDetails(Set<OrderDetail> orderDetails) {\n        this.orderDetails = orderDetails;\n    }\n\n\n\n\n}\n\n\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/demo/hibernate/data/OrderDetail.java",
    "content": "package com.alibaba.json.demo.hibernate.data;\n\n\nimport com.fasterxml.jackson.annotation.JsonBackReference;\n\nimport javax.persistence.AttributeOverride;\nimport javax.persistence.AttributeOverrides;\nimport javax.persistence.Column;\nimport javax.persistence.EmbeddedId;\nimport javax.persistence.Entity;\nimport javax.persistence.FetchType;\nimport javax.persistence.JoinColumn;\nimport javax.persistence.ManyToOne;\nimport javax.persistence.Table;\n\n@SuppressWarnings(\"serial\")\n@Entity\n@Table(name=\"OrderDetail\"\n    ,catalog=\"classicmodels\"\n)\npublic class OrderDetail  implements java.io.Serializable {\n\n\n     private OrderDetailId id;\n     private Order order;\n     private Product product;\n     private Integer quantityOrdered;\n     private double priceEach;\n     private short orderLineNumber;\n\n    public OrderDetail() {\n    }\n\n    public OrderDetail(OrderDetailId id, Order order, Product product, Integer quantityOrdered, double priceEach, short orderLineNumber) {\n       this.id = id;\n       this.order = order;\n       this.product = product;\n       this.quantityOrdered = quantityOrdered;\n       this.priceEach = priceEach;\n       this.orderLineNumber = orderLineNumber;\n    }\n   \n     @EmbeddedId\n    \n    @AttributeOverrides( {\n        @AttributeOverride(name=\"orderNumber\", column=@Column(name=\"orderNumber\", nullable=false) ), \n        @AttributeOverride(name=\"productCode\", column=@Column(name=\"productCode\", nullable=false, length=50) ) } )\n    public OrderDetailId getId() {\n        return this.id;\n    }\n    \n    public void setId(OrderDetailId id) {\n        this.id = id;\n    }\n    @ManyToOne(fetch=FetchType.LAZY)\n    @JoinColumn(name=\"orderNumber\", nullable=false, insertable=false, updatable=false)\n    @JsonBackReference(\"orderdetail-order\")\n    public Order getOrder() {\n        return this.order;\n    }\n    \n    public void setOrder(Order order) {\n        this.order = order;\n    }\n    @ManyToOne(fetch=FetchType.LAZY)\n    @JoinColumn(name=\"productCode\", nullable=false, insertable=false, updatable=false)\n    @JsonBackReference(\"order-product\")\n    public Product getProduct() {\n        return this.product;\n    }\n    \n    public void setProduct(Product product) {\n        this.product = product;\n    }\n    \n    @Column(name=\"quantityOrdered\", nullable=false)\n    public Integer getQuantityOrdered() {\n        return this.quantityOrdered;\n    }\n    \n    public void setQuantityOrdered(Integer quantityOrdered) {\n        this.quantityOrdered = quantityOrdered;\n    }\n    \n    @Column(name=\"priceEach\", nullable=false, precision=22, scale=0)\n    public double getPriceEach() {\n        return this.priceEach;\n    }\n    \n    public void setPriceEach(double priceEach) {\n        this.priceEach = priceEach;\n    }\n    \n    @Column(name=\"orderLineNumber\", nullable=false)\n    public short getOrderLineNumber() {\n        return this.orderLineNumber;\n    }\n    \n    public void setOrderLineNumber(short orderLineNumber) {\n        this.orderLineNumber = orderLineNumber;\n    }\n\n\n\n\n}\n\n\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/demo/hibernate/data/OrderDetailId.java",
    "content": "package com.alibaba.json.demo.hibernate.data;\n\n\nimport javax.persistence.Column;\nimport javax.persistence.Embeddable;\n\n@SuppressWarnings(\"serial\")\n@Embeddable\npublic class OrderDetailId  implements java.io.Serializable {\n\n\n     private Integer orderNumber;\n     private String productCode;\n\n    public OrderDetailId() {\n    }\n\n    public OrderDetailId(Integer orderNumber, String productCode) {\n       this.orderNumber = orderNumber;\n       this.productCode = productCode;\n    }\n   \n\n    @Column(name=\"orderNumber\", nullable=false)\n    public Integer getOrderNumber() {\n        return this.orderNumber;\n    }\n    \n    public void setOrderNumber(Integer orderNumber) {\n        this.orderNumber = orderNumber;\n    }\n\n    @Column(name=\"productCode\", nullable=false, length=50)\n    public String getProductCode() {\n        return this.productCode;\n    }\n    \n    public void setProductCode(String productCode) {\n        this.productCode = productCode;\n    }\n\n    @Override\n    public boolean equals(Object other) {\n        if ( (this == other ) ) return true;\n        if ( (other == null ) ) return false;\n        if ( !(other instanceof OrderDetailId) ) return false;\n        OrderDetailId castOther = ( OrderDetailId ) other; \n\n        return ( (this.getOrderNumber()==castOther.getOrderNumber()) || ( this.getOrderNumber()!=null && castOther.getOrderNumber()!=null && this.getOrderNumber().equals(castOther.getOrderNumber()) ) )\n                && ( (this.getProductCode()==castOther.getProductCode()) || ( this.getProductCode()!=null && castOther.getProductCode()!=null && this.getProductCode().equals(castOther.getProductCode()) ) );\n    }\n   \n    @Override\n    public int hashCode() {\n        int result = 17;\n\n        result = 37 * result + ( getOrderNumber() == null ? 0 : this.getOrderNumber().hashCode() );\n        result = 37 * result + ( getProductCode() == null ? 0 : this.getProductCode().hashCode() );\n        return result;\n    }   \n}\n\n\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/demo/hibernate/data/Payment.java",
    "content": "package com.alibaba.json.demo.hibernate.data;\n\nimport java.util.Date;\n\nimport javax.persistence.AttributeOverride;\nimport javax.persistence.AttributeOverrides;\nimport javax.persistence.Column;\nimport javax.persistence.EmbeddedId;\nimport javax.persistence.Entity;\nimport javax.persistence.FetchType;\nimport javax.persistence.JoinColumn;\nimport javax.persistence.ManyToOne;\nimport javax.persistence.Table;\n\nimport com.fasterxml.jackson.annotation.JsonIgnore;\nimport com.fasterxml.jackson.annotation.JsonTypeInfo;\n\n@SuppressWarnings(\"serial\")\n@Entity\n@Table(name = \"Payment\", catalog = \"classicmodels\")\n@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = \"@type\")\npublic class Payment implements java.io.Serializable\n{\n    private PaymentId id;\n    private Customer customer;\n    private Date paymentDate;\n    private double amount;\n\n    public Payment() { }\n\n    public Payment(PaymentId id, Customer customer, Date paymentDate,\n            double amount) {\n        this.id = id;\n        this.customer = customer;\n        this.paymentDate = paymentDate;\n        this.amount = amount;\n    }\n\n        @EmbeddedId\n        @AttributeOverrides({\n                        @AttributeOverride(name = \"customerNumber\", column = @Column(name = \"customerNumber\", nullable = false)),\n                        @AttributeOverride(name = \"checkNumber\", column = @Column(name = \"checkNumber\", nullable = false, length = 50)) })\n        public PaymentId getId() {\n                return this.id;\n        }\n\n        public void setId(PaymentId id) {\n                this.id = id;\n        }\n\n        @ManyToOne(fetch = FetchType.LAZY)\n        @JoinColumn(name = \"customerNumber\", nullable = false, insertable = false, updatable = false)\n        @JsonIgnore\n        public Customer getCustomer() {\n                return this.customer;\n        }\n\n        public void setCustomer(Customer customer) {\n                this.customer = customer;\n        }\n\n        @Column(name = \"paymentDate\", nullable = false, length = 19)\n        public Date getPaymentDate() {\n                return this.paymentDate;\n        }\n\n        public void setPaymentDate(Date paymentDate) {\n                this.paymentDate = paymentDate;\n        }\n\n        @Column(name = \"amount\", nullable = false, precision = 22, scale = 0)\n        public double getAmount() {\n                return this.amount;\n        }\n\n        public void setAmount(double amount) {\n                this.amount = amount;\n        }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/demo/hibernate/data/PaymentId.java",
    "content": "package com.alibaba.json.demo.hibernate.data;\n\n\nimport javax.persistence.Column;\nimport javax.persistence.Embeddable;\n\n@SuppressWarnings(\"serial\")\n@Embeddable\npublic class PaymentId  implements java.io.Serializable\n{\n    private Integer customerNumber;\n    private String checkNumber;\n\n    public PaymentId() { }\n\n    public PaymentId(Integer customerNumber, String checkNumber) {\n       this.customerNumber = customerNumber;\n       this.checkNumber = checkNumber;\n    }\n   \n\n    @Column(name=\"customerNumber\", nullable=false)\n    public Integer getCustomerNumber() {\n        return this.customerNumber;\n    }\n    \n    public void setCustomerNumber(Integer customerNumber) {\n        this.customerNumber = customerNumber;\n    }\n\n    @Column(name=\"checkNumber\", nullable=false, length=50)\n    public String getCheckNumber() {\n        return this.checkNumber;\n    }\n    \n    public void setCheckNumber(String checkNumber) {\n        this.checkNumber = checkNumber;\n    }\n\n    @Override\n    public boolean equals(Object other) {\n         if ( (this == other ) ) return true;\n\t\t if ( (other == null ) ) return false;\n\t\t if ( !(other instanceof PaymentId) ) return false;\n\t\t PaymentId castOther = ( PaymentId ) other; \n         \n\t\t return ( (this.getCustomerNumber()==castOther.getCustomerNumber()) || ( this.getCustomerNumber()!=null && castOther.getCustomerNumber()!=null && this.getCustomerNumber().equals(castOther.getCustomerNumber()) ) )\n\t\t         && ( (this.getCheckNumber()==castOther.getCheckNumber()) || ( this.getCheckNumber()!=null && castOther.getCheckNumber()!=null && this.getCheckNumber().equals(castOther.getCheckNumber()) ) );\n    }\n\n    @Override\n    public int hashCode() {\n        int result = 17;\n\n        result = 37 * result + ( getCustomerNumber() == null ? 0 : this.getCustomerNumber().hashCode() );\n        result = 37 * result + ( getCheckNumber() == null ? 0 : this.getCheckNumber().hashCode() );\n        return result;\n    }   \n}\n\n\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/demo/hibernate/data/Product.java",
    "content": "package com.alibaba.json.demo.hibernate.data;\n\n\nimport java.util.HashSet;\nimport java.util.Set;\nimport javax.persistence.CascadeType;\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\nimport javax.persistence.FetchType;\nimport javax.persistence.Id;\nimport javax.persistence.OneToMany;\nimport javax.persistence.Table;\n\n@SuppressWarnings(\"serial\")\n@Entity\n@Table(name=\"Product\"\n    ,catalog=\"classicmodels\"\n)\npublic class Product  implements java.io.Serializable {\n\n\n     private String productCode;\n     private String productName;\n     private String productLine;\n     private String productScale;\n     private String productVendor;\n     private String productDescription;\n     private short quantityInStock;\n     private double buyPrice;\n     private double msrp;\n     private Set<OrderDetail> orderDetails = new HashSet<OrderDetail>(0);\n\n    public Product() {\n    }\n\n\t\n    public Product(String productCode, String productName, String productLine, String productScale, String productVendor, String productDescription, short quantityInStock, double buyPrice, double msrp) {\n        this.productCode = productCode;\n        this.productName = productName;\n        this.productLine = productLine;\n        this.productScale = productScale;\n        this.productVendor = productVendor;\n        this.productDescription = productDescription;\n        this.quantityInStock = quantityInStock;\n        this.buyPrice = buyPrice;\n        this.msrp = msrp;\n    }\n    public Product(String productCode, String productName, String productLine, String productScale, String productVendor, String productDescription, short quantityInStock, double buyPrice, double msrp, Set<OrderDetail> orderDetails) {\n       this.productCode = productCode;\n       this.productName = productName;\n       this.productLine = productLine;\n       this.productScale = productScale;\n       this.productVendor = productVendor;\n       this.productDescription = productDescription;\n       this.quantityInStock = quantityInStock;\n       this.buyPrice = buyPrice;\n       this.msrp = msrp;\n       this.orderDetails = orderDetails;\n    }\n   \n     @Id \n    \n    @Column(name=\"productCode\", unique=true, nullable=false, length=50)\n    public String getProductCode() {\n        return this.productCode;\n    }\n    \n    public void setProductCode(String productCode) {\n        this.productCode = productCode;\n    }\n    \n    @Column(name=\"productName\", nullable=false, length=70)\n    public String getProductName() {\n        return this.productName;\n    }\n    \n    public void setProductName(String productName) {\n        this.productName = productName;\n    }\n    \n    @Column(name=\"productLine\", nullable=false, length=50)\n    public String getProductLine() {\n        return this.productLine;\n    }\n    \n    public void setProductLine(String productLine) {\n        this.productLine = productLine;\n    }\n    \n    @Column(name=\"productScale\", nullable=false, length=10)\n    public String getProductScale() {\n        return this.productScale;\n    }\n    \n    public void setProductScale(String productScale) {\n        this.productScale = productScale;\n    }\n    \n    @Column(name=\"productVendor\", nullable=false, length=50)\n    public String getProductVendor() {\n        return this.productVendor;\n    }\n    \n    public void setProductVendor(String productVendor) {\n        this.productVendor = productVendor;\n    }\n    \n    @Column(name=\"productDescription\", nullable=false, length=65535)\n    public String getProductDescription() {\n        return this.productDescription;\n    }\n    \n    public void setProductDescription(String productDescription) {\n        this.productDescription = productDescription;\n    }\n    \n    @Column(name=\"quantityInStock\", nullable=false)\n    public short getQuantityInStock() {\n        return this.quantityInStock;\n    }\n    \n    public void setQuantityInStock(short quantityInStock) {\n        this.quantityInStock = quantityInStock;\n    }\n    \n    @Column(name=\"buyPrice\", nullable=false, precision=22, scale=0)\n    public double getBuyPrice() {\n        return this.buyPrice;\n    }\n    \n    public void setBuyPrice(double buyPrice) {\n        this.buyPrice = buyPrice;\n    }\n    \n    @Column(name=\"MSRP\", nullable=false, precision=22, scale=0)\n    public double getMsrp() {\n        return this.msrp;\n    }\n    \n    public void setMsrp(double msrp) {\n        this.msrp = msrp;\n    }\n@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy=\"product\")\n    public Set<OrderDetail> getOrderDetails() {\n        return this.orderDetails;\n    }\n    \n    public void setOrderDetails(Set<OrderDetail> orderDetails) {\n        this.orderDetails = orderDetails;\n    }\n\n\n\n\n}\n\n\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/A1.java",
    "content": "package com.alibaba.json.test;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.fastjson.util.IOUtils;\nimport junit.framework.TestCase;\n\nimport java.io.ByteArrayInputStream;\nimport java.io.ByteArrayOutputStream;\nimport java.io.ObjectInputStream;\nimport java.io.ObjectOutputStream;\n\n/**\n * Created by wenshao on 14/03/2017.\n */\npublic class A1 extends TestCase {\n\n    public void test_a() throws Exception {\n        Object obj = JSON.parse(\"[{\\\"feature\\\":\\\"\\\\u3A56\\\\u3A26\\\"}]\");\n        String json = JSON.toJSONString(obj, SerializerFeature.BrowserCompatible);\n        System.out.println(json);\n\n\n    }\n\n\n    public void test_ser() throws Exception {\n//        JSONObject obj = new JSONObject();\n//\n//        ByteArrayOutputStream out = new ByteArrayOutputStream();\n//        ObjectOutputStream objOut = new ObjectOutputStream(out);\n//        objOut.writeObject(obj);\n//        objOut.flush();\n//        objOut.close();\n//        byte[] bytes = out.toByteArray();\n//\n//        String str = Base64.encodeToString(bytes, false);\n//        System.out.println(str);\n\n        byte[] bytes2 = IOUtils.decodeBase64(\"rO0ABXNyAB9jb20uYWxpYmFiYS5mYXN0anNvbi5KU09OT2JqZWN0AAAAAAAAAAECAAFMAANtYXB0AA9MamF2YS91dGlsL01hcDt4cHNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAABB3CAAAABAAAAAAeA==\");\n        ByteArrayInputStream byteIn = new ByteArrayInputStream(bytes2);\n        ObjectInputStream objIn = new ObjectInputStream(byteIn);\n        Object obj = objIn.readObject();\n        assertEquals(JSONObject.class, obj.getClass());\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/Base64.java",
    "content": "package com.alibaba.json.test;\r\n\r\nimport java.util.Arrays;\r\n\r\n/** A very fast and memory efficient class to encode and decode to and from BASE64 in full accordance\r\n * with RFC 2045.<br><br>\r\n * On Windows XP sp1 with 1.4.2_04 and later ;), this encoder and decoder is about 10 times faster\r\n * on small arrays (10 - 1000 bytes) and 2-3 times as fast on larger arrays (10000 - 1000000 bytes)\r\n * compared to <code>sun.misc.Encoder()/Decoder()</code>.<br><br>\r\n *\r\n * On byte arrays the encoder is about 20% faster than Jakarta Commons Base64 Codec for encode and\r\n * about 50% faster for decoding large arrays. This implementation is about twice as fast on very small\r\n * arrays (&lt 30 bytes). If source/destination is a <code>String</code> this\r\n * version is about three times as fast due to the fact that the Commons Codec result has to be recoded\r\n * to a <code>String</code> from <code>byte[]</code>, which is very expensive.<br><br>\r\n *\r\n * This encode/decode algorithm doesn't create any temporary arrays as many other codecs do, it only\r\n * allocates the resulting array. This produces less garbage and it is possible to handle arrays twice\r\n * as large as algorithms that create a temporary array. (E.g. Jakarta Commons Codec). It is unknown\r\n * whether Sun's <code>sun.misc.Encoder()/Decoder()</code> produce temporary arrays but since performance\r\n * is quite low it probably does.<br><br>\r\n *\r\n * The encoder produces the same output as the Sun one except that the Sun's encoder appends\r\n * a trailing line separator if the last character isn't a pad. Unclear why but it only adds to the\r\n * length and is probably a side effect. Both are in conformance with RFC 2045 though.<br>\r\n * Commons codec seem to always att a trailing line separator.<br><br>\r\n *\r\n * <b>Note!</b>\r\n * The encode/decode method pairs (types) come in three versions with the <b>exact</b> same algorithm and\r\n * thus a lot of code redundancy. This is to not create any temporary arrays for transcoding to/from different\r\n * format types. The methods not used can simply be commented out.<br><br>\r\n *\r\n * There is also a \"fast\" version of all decode methods that works the same way as the normal ones, but\r\n * har a few demands on the decoded input. Normally though, these fast verions should be used if the source if\r\n * the input is known and it hasn't bee tampered with.<br><br>\r\n *\r\n * If you find the code useful or you find a bug, please send me a note at base64 @ miginfocom . com.\r\n *\r\n * Licence (BSD):\r\n * ==============\r\n *\r\n * Copyright (c) 2004, Mikael Grev, MiG InfoCom AB. (base64 @ miginfocom . com)\r\n * All rights reserved.\r\n *\r\n * Redistribution and use in source and binary forms, with or without modification,\r\n * are permitted provided that the following conditions are met:\r\n * Redistributions of source code must retain the above copyright notice, this list\r\n * of conditions and the following disclaimer.\r\n * Redistributions in binary form must reproduce the above copyright notice, this\r\n * list of conditions and the following disclaimer in the documentation and/or other\r\n * materials provided with the distribution.\r\n * Neither the name of the MiG InfoCom AB nor the names of its contributors may be\r\n * used to endorse or promote products derived from this software without specific\r\n * prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\r\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\r\n * IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\r\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\r\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\r\n * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\r\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY\r\n * OF SUCH DAMAGE.\r\n *\r\n * @version 2.2\r\n * @author Mikael Grev\r\n *         Date: 2004-aug-02\r\n *         Time: 11:31:11\r\n */\r\n\r\npublic class Base64\r\n{\r\n\tprivate static final char[] CA = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\".toCharArray();\r\n\tprivate static final int[] IA = new int[256];\r\n\tstatic {\r\n\t\tArrays.fill(IA, -1);\r\n\t\tfor (int i = 0, iS = CA.length; i < iS; i++)\r\n\t\t\tIA[CA[i]] = i;\r\n\t\tIA['='] = 0;\r\n\t}\r\n\r\n\t// ****************************************************************************************\r\n\t// *  char[] version\r\n\t// ****************************************************************************************\r\n\r\n\t/** Encodes a raw byte array into a BASE64 <code>char[]</code> representation i accordance with RFC 2045.\r\n\t * @param bytes The bytes to convert. If <code>null</code> or length 0 an empty array will be returned.\r\n\t * @param lineSep Optional \"\\r\\n\" after 76 characters, unless end of file.<br>\r\n\t * No line separator will be in breach of RFC 2045 which specifies max 76 per line but will be a\r\n\t * little faster.\r\n\t * @return A BASE64 encoded array. Never <code>null</code>.\r\n\t */\r\n\tpublic final static char[] encodeToChar(byte[] bytes, boolean lineSep)\r\n\t{\r\n\t\t// Check special case\r\n\t\tint bytes_len = bytes != null ? bytes.length : 0;\r\n\t\tif (bytes_len == 0)\r\n\t\t\treturn new char[0];\r\n\r\n\t\tint eLen = (bytes_len / 3) * 3;              // Length of even 24-bits.\r\n\t\tint cCnt = ((bytes_len - 1) / 3 + 1) << 2;   // Returned character count\r\n\t\tint chars_len = cCnt + (lineSep ? (cCnt - 1) / 76 << 1 : 0); // Length of returned array\r\n\t\tchar[] chars = new char[chars_len];\r\n\r\n\t\t// Encode even 24-bits\r\n\t\tfor (int s = 0, d = 0, cc = 0; s < eLen;) {\r\n\t\t\t// Copy next three bytes into lower 24 bits of int, paying attension to sign.\r\n\t\t\tint i = (bytes[s++] & 0xff) << 16 | (bytes[s++] & 0xff) << 8 | (bytes[s++] & 0xff);\r\n\r\n\t\t\t// Encode the int into four chars\r\n\t\t\tchars[d++] = CA[(i >>> 18) & 0x3f];\r\n\t\t\tchars[d++] = CA[(i >>> 12) & 0x3f];\r\n\t\t\tchars[d++] = CA[(i >>> 6) & 0x3f];\r\n\t\t\tchars[d++] = CA[i & 0x3f];\r\n\r\n\t\t\t// Add optional line separator\r\n\t\t\tif (lineSep && ++cc == 19 && d < chars_len - 2) {\r\n\t\t\t\tchars[d++] = '\\r';\r\n\t\t\t\tchars[d++] = '\\n';\r\n\t\t\t\tcc = 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Pad and encode last bits if source isn't even 24 bits.\r\n\t\tint left = bytes_len - eLen; // 0 - 2.\r\n\t\tif (left > 0) {\r\n\t\t\t// Prepare the int\r\n\t\t\tint i = ((bytes[eLen] & 0xff) << 10) | (left == 2 ? ((bytes[bytes_len - 1] & 0xff) << 2) : 0);\r\n\r\n\t\t\t// Set last four chars\r\n\t\t\tchars[chars_len - 4] = CA[i >> 12];\r\n\t\t\tchars[chars_len - 3] = CA[(i >>> 6) & 0x3f];\r\n\t\t\tchars[chars_len - 2] = left == 2 ? CA[i & 0x3f] : '=';\r\n\t\t\tchars[chars_len - 1] = '=';\r\n\t\t}\r\n\t\treturn chars;\r\n\t}\r\n\r\n\t/** Decodes a BASE64 encoded char array. All illegal characters will be ignored and can handle both arrays with\r\n\t * and without line separators.\r\n\t * @param sArr The source array. <code>null</code> or length 0 will return an empty array.\r\n\t * @return The decoded array of bytes. May be of length 0. Will be <code>null</code> if the legal characters\r\n\t * (including '=') isn't divideable by 4.  (I.e. definitely corrupted).\r\n\t */\r\n\tpublic final static byte[] decode(char[] sArr)\r\n\t{\r\n\t\t// Check special case\r\n\t\tint sLen = sArr != null ? sArr.length : 0;\r\n\t\tif (sLen == 0)\r\n\t\t\treturn new byte[0];\r\n\r\n\t\t// Count illegal characters (including '\\r', '\\n') to know what size the returned array will be,\r\n\t\t// so we don't have to reallocate & copy it later.\r\n\t\tint sepCnt = 0; // Number of separator characters. (Actually illegal characters, but that's a bonus...)\r\n\t\tfor (int i = 0; i < sLen; i++)  // If input is \"pure\" (I.e. no line separators or illegal chars) base64 this loop can be commented out.\r\n\t\t\tif (IA[sArr[i]] < 0)\r\n\t\t\t\tsepCnt++;\r\n\r\n\t\t// Check so that legal chars (including '=') are evenly divideable by 4 as specified in RFC 2045.\r\n\t\tif ((sLen - sepCnt) % 4 != 0)\r\n\t\t\treturn null;\r\n\r\n\t\tint pad = 0;\r\n\t\tfor (int i = sLen; i > 1 && IA[sArr[--i]] <= 0;)\r\n\t\t\tif (sArr[i] == '=')\r\n\t\t\t\tpad++;\r\n\r\n\t\tint len = ((sLen - sepCnt) * 6 >> 3) - pad;\r\n\r\n\t\tbyte[] dArr = new byte[len];       // Preallocate byte[] of exact length\r\n\r\n\t\tfor (int s = 0, d = 0; d < len;) {\r\n\t\t\t// Assemble three bytes into an int from four \"valid\" characters.\r\n\t\t\tint i = 0;\r\n\t\t\tfor (int j = 0; j < 4; j++) {   // j only increased if a valid char was found.\r\n\t\t\t\tint c = IA[sArr[s++]];\r\n\t\t\t\tif (c >= 0)\r\n\t\t\t\t    i |= c << (18 - j * 6);\r\n\t\t\t\telse\r\n\t\t\t\t\tj--;\r\n\t\t\t}\r\n\t\t\t// Add the bytes\r\n\t\t\tdArr[d++] = (byte) (i >> 16);\r\n\t\t\tif (d < len) {\r\n\t\t\t\tdArr[d++]= (byte) (i >> 8);\r\n\t\t\t\tif (d < len)\r\n\t\t\t\t\tdArr[d++] = (byte) i;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn dArr;\r\n\t}\r\n\r\n\t/** Decodes a BASE64 encoded char array that is known to be resonably well formatted. The method is about twice as\r\n\t * fast as {@link #decode(char[])}. The preconditions are:<br>\r\n\t * + The array must have a line length of 76 chars OR no line separators at all (one line).<br>\r\n\t * + Line separator must be \"\\r\\n\", as specified in RFC 2045\r\n\t * + The array must not contain illegal characters within the encoded string<br>\r\n\t * + The array CAN have illegal characters at the beginning and end, those will be dealt with appropriately.<br>\r\n\t * @param sArr The source array. Length 0 will return an empty array. <code>null</code> will throw an exception.\r\n\t * @return The decoded array of bytes. May be of length 0.\r\n\t */\r\n\tpublic final static byte[] decodeFast(char[] sArr)\r\n\t{\r\n\t\t// Check special case\r\n\t\tint sLen = sArr.length;\r\n\t\tif (sLen == 0)\r\n\t\t\treturn new byte[0];\r\n\r\n\t\tint sIx = 0, eIx = sLen - 1;    // Start and end index after trimming.\r\n\r\n\t\t// Trim illegal chars from start\r\n\t\twhile (sIx < eIx && IA[sArr[sIx]] < 0)\r\n\t\t\tsIx++;\r\n\r\n\t\t// Trim illegal chars from end\r\n\t\twhile (eIx > 0 && IA[sArr[eIx]] < 0)\r\n\t\t\teIx--;\r\n\r\n\t\t// get the padding count (=) (0, 1 or 2)\r\n\t\tint pad = sArr[eIx] == '=' ? (sArr[eIx - 1] == '=' ? 2 : 1) : 0;  // Count '=' at end.\r\n\t\tint cCnt = eIx - sIx + 1;   // Content count including possible separators\r\n\t\tint sepCnt = sLen > 76 ? (sArr[76] == '\\r' ? cCnt / 78 : 0) << 1 : 0;\r\n\r\n\t\tint len = ((cCnt - sepCnt) * 6 >> 3) - pad; // The number of decoded bytes\r\n\t\tbyte[] dArr = new byte[len];       // Preallocate byte[] of exact length\r\n\r\n\t\t// Decode all but the last 0 - 2 bytes.\r\n\t\tint d = 0;\r\n\t\tfor (int cc = 0, eLen = (len / 3) * 3; d < eLen;) {\r\n\t\t\t// Assemble three bytes into an int from four \"valid\" characters.\r\n\t\t\tint i = IA[sArr[sIx++]] << 18 | IA[sArr[sIx++]] << 12 | IA[sArr[sIx++]] << 6 | IA[sArr[sIx++]];\r\n\r\n\t\t\t// Add the bytes\r\n\t\t\tdArr[d++] = (byte) (i >> 16);\r\n\t\t\tdArr[d++] = (byte) (i >> 8);\r\n\t\t\tdArr[d++] = (byte) i;\r\n\r\n\t\t\t// If line separator, jump over it.\r\n\t\t\tif (sepCnt > 0 && ++cc == 19) {\r\n\t\t\t\tsIx += 2;\r\n\t\t\t\tcc = 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (d < len) {\r\n\t\t\t// Decode last 1-3 bytes (incl '=') into 1-3 bytes\r\n\t\t\tint i = 0;\r\n\t\t\tfor (int j = 0; sIx <= eIx - pad; j++)\r\n\t\t\t\ti |= IA[sArr[sIx++]] << (18 - j * 6);\r\n\r\n\t\t\tfor (int r = 16; d < len; r -= 8)\r\n\t\t\t\tdArr[d++] = (byte) (i >> r);\r\n\t\t}\r\n\r\n\t\treturn dArr;\r\n\t}\r\n\r\n\t// ****************************************************************************************\r\n\t// *  byte[] version\r\n\t// ****************************************************************************************\r\n\r\n\t/** Encodes a raw byte array into a BASE64 <code>byte[]</code> representation i accordance with RFC 2045.\r\n\t * @param sArr The bytes to convert. If <code>null</code> or length 0 an empty array will be returned.\r\n\t * @param lineSep Optional \"\\r\\n\" after 76 characters, unless end of file.<br>\r\n\t * No line separator will be in breach of RFC 2045 which specifies max 76 per line but will be a\r\n\t * little faster.\r\n\t * @return A BASE64 encoded array. Never <code>null</code>.\r\n\t */\r\n\tpublic final static byte[] encodeToByte(byte[] sArr, boolean lineSep)\r\n\t{\r\n\t\t// Check special case\r\n\t\tint sLen = sArr != null ? sArr.length : 0;\r\n\t\tif (sLen == 0)\r\n\t\t\treturn new byte[0];\r\n\r\n\t\tint eLen = (sLen / 3) * 3;                              // Length of even 24-bits.\r\n\t\tint cCnt = ((sLen - 1) / 3 + 1) << 2;                   // Returned character count\r\n\t\tint dLen = cCnt + (lineSep ? (cCnt - 1) / 76 << 1 : 0); // Length of returned array\r\n\t\tbyte[] dArr = new byte[dLen];\r\n\r\n\t\t// Encode even 24-bits\r\n\t\tfor (int s = 0, d = 0, cc = 0; s < eLen;) {\r\n\t\t\t// Copy next three bytes into lower 24 bits of int, paying attension to sign.\r\n\t\t\tint i = (sArr[s++] & 0xff) << 16 | (sArr[s++] & 0xff) << 8 | (sArr[s++] & 0xff);\r\n\r\n\t\t\t// Encode the int into four chars\r\n\t\t\tdArr[d++] = (byte) CA[(i >>> 18) & 0x3f];\r\n\t\t\tdArr[d++] = (byte) CA[(i >>> 12) & 0x3f];\r\n\t\t\tdArr[d++] = (byte) CA[(i >>> 6) & 0x3f];\r\n\t\t\tdArr[d++] = (byte) CA[i & 0x3f];\r\n\r\n\t\t\t// Add optional line separator\r\n\t\t\tif (lineSep && ++cc == 19 && d < dLen - 2) {\r\n\t\t\t\tdArr[d++] = '\\r';\r\n\t\t\t\tdArr[d++] = '\\n';\r\n\t\t\t\tcc = 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Pad and encode last bits if source isn't an even 24 bits.\r\n\t\tint left = sLen - eLen; // 0 - 2.\r\n\t\tif (left > 0) {\r\n\t\t\t// Prepare the int\r\n\t\t\tint i = ((sArr[eLen] & 0xff) << 10) | (left == 2 ? ((sArr[sLen - 1] & 0xff) << 2) : 0);\r\n\r\n\t\t\t// Set last four chars\r\n\t\t\tdArr[dLen - 4] = (byte) CA[i >> 12];\r\n\t\t\tdArr[dLen - 3] = (byte) CA[(i >>> 6) & 0x3f];\r\n\t\t\tdArr[dLen - 2] = left == 2 ? (byte) CA[i & 0x3f] : (byte) '=';\r\n\t\t\tdArr[dLen - 1] = '=';\r\n\t\t}\r\n\t\treturn dArr;\r\n\t}\r\n\r\n\t/** Decodes a BASE64 encoded byte array. All illegal characters will be ignored and can handle both arrays with\r\n\t * and without line separators.\r\n\t * @param sArr The source array. Length 0 will return an empty array. <code>null</code> will throw an exception.\r\n\t * @return The decoded array of bytes. May be of length 0. Will be <code>null</code> if the legal characters\r\n\t * (including '=') isn't divideable by 4. (I.e. definitely corrupted).\r\n\t */\r\n\tpublic final static byte[] decode(byte[] sArr)\r\n\t{\r\n\t\t// Check special case\r\n\t\tint sLen = sArr.length;\r\n\r\n\t\t// Count illegal characters (including '\\r', '\\n') to know what size the returned array will be,\r\n\t\t// so we don't have to reallocate & copy it later.\r\n\t\tint sepCnt = 0; // Number of separator characters. (Actually illegal characters, but that's a bonus...)\r\n\t\tfor (int i = 0; i < sLen; i++)      // If input is \"pure\" (I.e. no line separators or illegal chars) base64 this loop can be commented out.\r\n\t\t\tif (IA[sArr[i] & 0xff] < 0)\r\n\t\t\t\tsepCnt++;\r\n\r\n\t\t// Check so that legal chars (including '=') are evenly divideable by 4 as specified in RFC 2045.\r\n\t\tif ((sLen - sepCnt) % 4 != 0)\r\n\t\t\treturn null;\r\n\r\n\t\tint pad = 0;\r\n\t\tfor (int i = sLen; i > 1 && IA[sArr[--i] & 0xff] <= 0;)\r\n\t\t\tif (sArr[i] == '=')\r\n\t\t\t\tpad++;\r\n\r\n\t\tint len = ((sLen - sepCnt) * 6 >> 3) - pad;\r\n\r\n\t\tbyte[] dArr = new byte[len];       // Preallocate byte[] of exact length\r\n\r\n\t\tfor (int s = 0, d = 0; d < len;) {\r\n\t\t\t// Assemble three bytes into an int from four \"valid\" characters.\r\n\t\t\tint i = 0;\r\n\t\t\tfor (int j = 0; j < 4; j++) {   // j only increased if a valid char was found.\r\n\t\t\t\tint c = IA[sArr[s++] & 0xff];\r\n\t\t\t\tif (c >= 0)\r\n\t\t\t\t    i |= c << (18 - j * 6);\r\n\t\t\t\telse\r\n\t\t\t\t\tj--;\r\n\t\t\t}\r\n\r\n\t\t\t// Add the bytes\r\n\t\t\tdArr[d++] = (byte) (i >> 16);\r\n\t\t\tif (d < len) {\r\n\t\t\t\tdArr[d++]= (byte) (i >> 8);\r\n\t\t\t\tif (d < len)\r\n\t\t\t\t\tdArr[d++] = (byte) i;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn dArr;\r\n\t}\r\n\r\n\r\n\t/** Decodes a BASE64 encoded byte array that is known to be resonably well formatted. The method is about twice as\r\n\t * fast as {@link #decode(byte[])}. The preconditions are:<br>\r\n\t * + The array must have a line length of 76 chars OR no line separators at all (one line).<br>\r\n\t * + Line separator must be \"\\r\\n\", as specified in RFC 2045\r\n\t * + The array must not contain illegal characters within the encoded string<br>\r\n\t * + The array CAN have illegal characters at the beginning and end, those will be dealt with appropriately.<br>\r\n\t * @param sArr The source array. Length 0 will return an empty array. <code>null</code> will throw an exception.\r\n\t * @return The decoded array of bytes. May be of length 0.\r\n\t */\r\n\tpublic final static byte[] decodeFast(byte[] sArr)\r\n\t{\r\n\t\t// Check special case\r\n\t\tint sLen = sArr.length;\r\n\t\tif (sLen == 0)\r\n\t\t\treturn new byte[0];\r\n\r\n\t\tint sIx = 0, eIx = sLen - 1;    // Start and end index after trimming.\r\n\r\n\t\t// Trim illegal chars from start\r\n\t\twhile (sIx < eIx && IA[sArr[sIx] & 0xff] < 0)\r\n\t\t\tsIx++;\r\n\r\n\t\t// Trim illegal chars from end\r\n\t\twhile (eIx > 0 && IA[sArr[eIx] & 0xff] < 0)\r\n\t\t\teIx--;\r\n\r\n\t\t// get the padding count (=) (0, 1 or 2)\r\n\t\tint pad = sArr[eIx] == '=' ? (sArr[eIx - 1] == '=' ? 2 : 1) : 0;  // Count '=' at end.\r\n\t\tint cCnt = eIx - sIx + 1;   // Content count including possible separators\r\n\t\tint sepCnt = sLen > 76 ? (sArr[76] == '\\r' ? cCnt / 78 : 0) << 1 : 0;\r\n\r\n\t\tint len = ((cCnt - sepCnt) * 6 >> 3) - pad; // The number of decoded bytes\r\n\t\tbyte[] dArr = new byte[len];       // Preallocate byte[] of exact length\r\n\r\n\t\t// Decode all but the last 0 - 2 bytes.\r\n\t\tint d = 0;\r\n\t\tfor (int cc = 0, eLen = (len / 3) * 3; d < eLen;) {\r\n\t\t\t// Assemble three bytes into an int from four \"valid\" characters.\r\n\t\t\tint i = IA[sArr[sIx++]] << 18 | IA[sArr[sIx++]] << 12 | IA[sArr[sIx++]] << 6 | IA[sArr[sIx++]];\r\n\r\n\t\t\t// Add the bytes\r\n\t\t\tdArr[d++] = (byte) (i >> 16);\r\n\t\t\tdArr[d++] = (byte) (i >> 8);\r\n\t\t\tdArr[d++] = (byte) i;\r\n\r\n\t\t\t// If line separator, jump over it.\r\n\t\t\tif (sepCnt > 0 && ++cc == 19) {\r\n\t\t\t\tsIx += 2;\r\n\t\t\t\tcc = 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (d < len) {\r\n\t\t\t// Decode last 1-3 bytes (incl '=') into 1-3 bytes\r\n\t\t\tint i = 0;\r\n\t\t\tfor (int j = 0; sIx <= eIx - pad; j++)\r\n\t\t\t\ti |= IA[sArr[sIx++]] << (18 - j * 6);\r\n\r\n\t\t\tfor (int r = 16; d < len; r -= 8)\r\n\t\t\t\tdArr[d++] = (byte) (i >> r);\r\n\t\t}\r\n\r\n\t\treturn dArr;\r\n\t}\r\n\r\n\t// ****************************************************************************************\r\n\t// * String version\r\n\t// ****************************************************************************************\r\n\r\n\t/** Encodes a raw byte array into a BASE64 <code>String</code> representation i accordance with RFC 2045.\r\n\t * @param sArr The bytes to convert. If <code>null</code> or length 0 an empty array will be returned.\r\n\t * @param lineSep Optional \"\\r\\n\" after 76 characters, unless end of file.<br>\r\n\t * No line separator will be in breach of RFC 2045 which specifies max 76 per line but will be a\r\n\t * little faster.\r\n\t * @return A BASE64 encoded array. Never <code>null</code>.\r\n\t */\r\n\tpublic final static String encodeToString(byte[] sArr, boolean lineSep)\r\n\t{\r\n\t\t// Reuse char[] since we can't create a String incrementally anyway and StringBuffer/Builder would be slower.\r\n\t\treturn new String(encodeToChar(sArr, lineSep));\r\n\t}\r\n\r\n\t/** Decodes a BASE64 encoded <code>String</code>. All illegal characters will be ignored and can handle both strings with\r\n\t * and without line separators.<br>\r\n\t * <b>Note!</b> It can be up to about 2x the speed to call <code>decode(str.toCharArray())</code> instead. That\r\n\t * will create a temporary array though. This version will use <code>str.charAt(i)</code> to iterate the string.\r\n\t * @param str The source string. <code>null</code> or length 0 will return an empty array.\r\n\t * @return The decoded array of bytes. May be of length 0. Will be <code>null</code> if the legal characters\r\n\t * (including '=') isn't divideable by 4.  (I.e. definitely corrupted).\r\n\t */\r\n\tpublic final static byte[] decode(String str)\r\n\t{\r\n\t\t// Check special case\r\n\t\tint sLen = str != null ? str.length() : 0;\r\n\t\tif (sLen == 0)\r\n\t\t\treturn new byte[0];\r\n\r\n\t\t// Count illegal characters (including '\\r', '\\n') to know what size the returned array will be,\r\n\t\t// so we don't have to reallocate & copy it later.\r\n\t\tint sepCnt = 0; // Number of separator characters. (Actually illegal characters, but that's a bonus...)\r\n\t\tfor (int i = 0; i < sLen; i++)  // If input is \"pure\" (I.e. no line separators or illegal chars) base64 this loop can be commented out.\r\n\t\t\tif (IA[str.charAt(i)] < 0)\r\n\t\t\t\tsepCnt++;\r\n\r\n\t\t// Check so that legal chars (including '=') are evenly divideable by 4 as specified in RFC 2045.\r\n\t\tif ((sLen - sepCnt) % 4 != 0)\r\n\t\t\treturn null;\r\n\r\n\t\t// Count '=' at end\r\n\t\tint pad = 0;\r\n\t\tfor (int i = sLen; i > 1 && IA[str.charAt(--i)] <= 0;)\r\n\t\t\tif (str.charAt(i) == '=')\r\n\t\t\t\tpad++;\r\n\r\n\t\tint len = ((sLen - sepCnt) * 6 >> 3) - pad;\r\n\r\n\t\tbyte[] dArr = new byte[len];       // Preallocate byte[] of exact length\r\n\r\n\t\tfor (int s = 0, d = 0; d < len;) {\r\n\t\t\t// Assemble three bytes into an int from four \"valid\" characters.\r\n\t\t\tint i = 0;\r\n\t\t\tfor (int j = 0; j < 4; j++) {   // j only increased if a valid char was found.\r\n\t\t\t\tint c = IA[str.charAt(s++)];\r\n\t\t\t\tif (c >= 0)\r\n\t\t\t\t    i |= c << (18 - j * 6);\r\n\t\t\t\telse\r\n\t\t\t\t\tj--;\r\n\t\t\t}\r\n\t\t\t// Add the bytes\r\n\t\t\tdArr[d++] = (byte) (i >> 16);\r\n\t\t\tif (d < len) {\r\n\t\t\t\tdArr[d++]= (byte) (i >> 8);\r\n\t\t\t\tif (d < len)\r\n\t\t\t\t\tdArr[d++] = (byte) i;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn dArr;\r\n\t}\r\n\r\n\t/** Decodes a BASE64 encoded string that is known to be resonably well formatted. The method is about twice as\r\n\t * fast as {@link #decode(String)}. The preconditions are:<br>\r\n\t * + The array must have a line length of 76 chars OR no line separators at all (one line).<br>\r\n\t * + Line separator must be \"\\r\\n\", as specified in RFC 2045\r\n\t * + The array must not contain illegal characters within the encoded string<br>\r\n\t * + The array CAN have illegal characters at the beginning and end, those will be dealt with appropriately.<br>\r\n\t * @param s The source string. Length 0 will return an empty array. <code>null</code> will throw an exception.\r\n\t * @return The decoded array of bytes. May be of length 0.\r\n\t */\r\n\tpublic final static byte[] dedecodeFast(String s)\r\n\t{\r\n\t\t// Check special case\r\n\t\tint sLen = s.length();\r\n\t\tif (sLen == 0)\r\n\t\t\treturn new byte[0];\r\n\r\n\t\tint sIx = 0, eIx = sLen - 1;    // Start and end index after trimming.\r\n\r\n\t\t// Trim illegal chars from start\r\n\t\twhile (sIx < eIx && IA[s.charAt(sIx) & 0xff] < 0)\r\n\t\t\tsIx++;\r\n\r\n\t\t// Trim illegal chars from end\r\n\t\twhile (eIx > 0 && IA[s.charAt(eIx) & 0xff] < 0)\r\n\t\t\teIx--;\r\n\r\n\t\t// get the padding count (=) (0, 1 or 2)\r\n\t\tint pad = s.charAt(eIx) == '=' ? (s.charAt(eIx - 1) == '=' ? 2 : 1) : 0;  // Count '=' at end.\r\n\t\tint cCnt = eIx - sIx + 1;   // Content count including possible separators\r\n\t\tint sepCnt = sLen > 76 ? (s.charAt(76) == '\\r' ? cCnt / 78 : 0) << 1 : 0;\r\n\r\n\t\tint len = ((cCnt - sepCnt) * 6 >> 3) - pad; // The number of decoded bytes\r\n\t\tbyte[] dArr = new byte[len];       // Preallocate byte[] of exact length\r\n\r\n\t\t// Decode all but the last 0 - 2 bytes.\r\n\t\tint d = 0;\r\n\t\tfor (int cc = 0, eLen = (len / 3) * 3; d < eLen;) {\r\n\t\t\t// Assemble three bytes into an int from four \"valid\" characters.\r\n\t\t\tint i = IA[s.charAt(sIx++)] << 18 | IA[s.charAt(sIx++)] << 12 | IA[s.charAt(sIx++)] << 6 | IA[s.charAt(sIx++)];\r\n\r\n\t\t\t// Add the bytes\r\n\t\t\tdArr[d++] = (byte) (i >> 16);\r\n\t\t\tdArr[d++] = (byte) (i >> 8);\r\n\t\t\tdArr[d++] = (byte) i;\r\n\r\n\t\t\t// If line separator, jump over it.\r\n\t\t\tif (sepCnt > 0 && ++cc == 19) {\r\n\t\t\t\tsIx += 2;\r\n\t\t\t\tcc = 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (d < len) {\r\n\t\t\t// Decode last 1-3 bytes (incl '=') into 1-3 bytes\r\n\t\t\tint i = 0;\r\n\t\t\tfor (int j = 0; sIx <= eIx - pad; j++)\r\n\t\t\t\ti |= IA[s.charAt(sIx++)] << (18 - j * 6);\r\n\r\n\t\t\tfor (int r = 16; d < len; r -= 8)\r\n\t\t\t\tdArr[d++] = (byte) (i >> r);\r\n\t\t}\r\n\r\n\t\treturn dArr;\r\n\t}\r\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/Bug_0_Test.java",
    "content": "/*\r\n * Copyright 1999-2017 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.json.test;\r\n\r\nimport java.io.InputStream;\r\nimport java.text.NumberFormat;\r\n\r\nimport org.apache.commons.io.IOUtils;\r\n\r\nimport com.fasterxml.jackson.databind.JsonNode;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\nimport com.fasterxml.jackson.databind.node.ArrayNode;\r\n\r\nimport junit.framework.TestCase;\r\n\r\npublic class Bug_0_Test extends TestCase {\r\n\r\n    private String text;\r\n    private int    COUNT = 1000;\r\n\r\n    protected void setUp() throws Exception {\r\n        InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"json/Bug_0_Test.json\");\r\n        text = IOUtils.toString(is);\r\n        is.close();\r\n\r\n        // text =\r\n        // \"[{\\\"S\\\":321061,\\\"T\\\":\\\"GetAttributeResp\\\"},{\\\"ERROR\\\":null,\\\"TS\\\":0,\\\"VAL\\\":{\\\"SqlList\\\":[{\\\"BatchSizeMax\\\":0,\\\"BatchSizeTotal\\\":0,\\\"ConcurrentMax\\\":1,\\\"DataSource\\\":\\\"jdbc:wrap-jdbc:filters=default,encoding:name=ds-offer:jdbc:mysql://172.29.61.63:8066/amoeba\\\",\\\"EffectedRowCount\\\":0,\\\"ErrorCount\\\":0,\\\"ExecuteCount\\\":5,\\\"FetchRowCount\\\":5,\\\"File\\\":null,\\\"ID\\\":2001,\\\"LastError\\\":null,\\\"LastTime\\\":1292742908178,\\\"MaxTimespan\\\":16,\\\"MaxTimespanOccurTime\\\":1292742668191,\\\"Name\\\":null,\\\"RunningCount\\\":0,\\\"SQL\\\":\\\"SELECT @@SQL_MODE\\\",\\\"TotalTime\\\":83}]}}]\";\r\n    }\r\n\r\n    public void test_0() throws Exception {\r\n        for (int i = 0; i < 50; ++i) {\r\n            // f_ali_json();\r\n            f_jackson();\r\n        }\r\n    }\r\n\r\n    private void f_ali_json() {\r\n        long startNano = System.nanoTime();\r\n        for (int i = 0; i < COUNT; ++i) {\r\n            com.alibaba.fastjson.JSON.parse(text);\r\n        }\r\n        long nano = System.nanoTime() - startNano;\r\n        System.out.println(NumberFormat.getInstance().format(nano));\r\n    }\r\n\r\n    private void f_jackson() throws Exception {\r\n        long startNano = System.nanoTime();\r\n        for (int i = 0; i < COUNT; ++i) {\r\n            ObjectMapper mapper = new ObjectMapper();\r\n            ArrayNode node = (ArrayNode) mapper.readTree(text);\r\n            JsonNode head = node.get(0);\r\n            JsonNode body = node.get(1);\r\n        }\r\n        long nano = System.nanoTime() - startNano;\r\n        System.out.println(NumberFormat.getInstance().format(nano));\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/DateTest.java",
    "content": "package com.alibaba.json.test;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.json.test.codec.Codec;\r\nimport com.alibaba.json.test.codec.FastjsonCodec;\r\nimport com.alibaba.json.test.codec.GsonCodec;\r\nimport com.alibaba.json.test.codec.JacksonCodec;\r\nimport com.alibaba.json.test.codec.SimpleJsonCodec;\r\n\r\npublic class DateTest extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        List<Codec> decoders = new ArrayList<Codec>();\r\n        decoders.add(new FastjsonCodec());\r\n        decoders.add(new JacksonCodec());\r\n        decoders.add(new SimpleJsonCodec());\r\n        // decoders.add(new JsonLibDecoderImpl());\r\n        decoders.add(new GsonCodec());\r\n\r\n        long time = System.currentTimeMillis();\r\n        for (Codec codec : decoders) {\r\n            String text = codec.encode(new java.sql.Date(time));\r\n            System.out.println(codec.getName() + \" : \" + text);\r\n            // codec.decodeObject(text, java.sql.Date.class);\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/DetectProhibitChar.java",
    "content": "/*\r\n * Copyright 1999-2017 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.json.test;\r\n\r\n/**\r\n * <pre>\r\n * 当有比较多的字符不能在某个串中出现， 通过一个查表算法确定。比如识别\r\n * ［a,b,c,d］不能在一个string中出现。\r\n * 由于消耗比较多的内存， 最好使用单一实例。 初始化过程并非线程安全。 最\r\n * 好一次完成初始化的过程。\r\n * 使用方法：\r\n * DetectProhibitChar p2 = new DetectProhibitChar();\r\n * p2.addProhibitChar(&quot;我们是中国人＊＊＃W￥％＆＊（￥％\r\n * ＆＊AAAAAAAAAAAAAAAAAAAAAAA&quot;);\r\n * for (int i = 0; i &lt; 65536; i++) {\r\n * if (p2.isProhibitChar((char) i)) {\r\n * System.out.print((char) i);\r\n * }\r\n * }\r\n * </pre>\r\n * \r\n * @author sdh5724\r\n */\r\npublic class DetectProhibitChar {\r\n\r\n    byte[] masks = new byte[1024 * 8];\r\n\r\n    public DetectProhibitChar(){\r\n\r\n    }\r\n\r\n    public DetectProhibitChar(char prohibits[]){\r\n        addProhibitChar(prohibits);\r\n    }\r\n\r\n    /**\r\n     * 增加一个跳越字符\r\n     * \r\n     * @param c\r\n     */\r\n    public void addProhibitChar(char c) {\r\n        int pos = c >> 3;\r\n        masks[pos] = (byte) ((masks[pos] & 0xFF) | (1 << (c % 8)));\r\n    }\r\n\r\n    /**\r\n     * 增加一个string里的所有字符\r\n     * \r\n     * @param str\r\n     */\r\n    public void addProhibitChar(String str) {\r\n        if (str != null) {\r\n            char cs[] = str.toCharArray();\r\n            for (char c : cs) {\r\n                addProhibitChar(c);\r\n            }\r\n        }\r\n    }\r\n\r\n    public void addProhibitChar(char prohibits[]) {\r\n        if (prohibits != null) {\r\n            for (char c : prohibits) {\r\n                addProhibitChar(c);\r\n            }\r\n        }\r\n    }\r\n\r\n    public void removeProhibitChar(char c) {\r\n        int pos = c >> 3;\r\n        masks[pos] = (byte) ((masks[pos] & 0xFF) & (~(1 << (c % 8))));\r\n    }\r\n\r\n    public boolean isProhibitChar(char c) {\r\n        int pos = c >> 3;\r\n        int i = (masks[pos] & 0xFF) & (1 << (c % 8));\r\n        return (i != 0);\r\n    }\r\n\r\n    public boolean hasProhibitChar(char cs[]) {\r\n        if (cs != null) {\r\n            for (char c : cs) {\r\n                if (isProhibitChar(c)) {\r\n                    return true;\r\n                }\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n\r\n    public boolean hasProhibitChar(String str) {\r\n        if (str != null) {\r\n            return hasProhibitChar(str.toCharArray());\r\n        }\r\n        return false;\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/DigitTest.java",
    "content": "/*\r\n * Copyright 1999-2017 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.json.test;\r\n\r\nimport java.text.NumberFormat;\r\nimport java.util.BitSet;\r\n\r\nimport junit.framework.TestCase;\r\n\r\npublic class DigitTest extends TestCase {\r\n\r\n    private char[] text  = \"[-5.041598256063065E-20,-7210028408342716000]\".toCharArray();\r\n    private int    COUNT = 1000 * 1000;\r\n\r\n    public void test_perf() throws Exception {\r\n        for (int i = 0; i < 50; ++i) {\r\n            f_isDigitBitSet();\r\n            f_isDigitArray();\r\n            f_isDigitRange();\r\n            f_isDigitSwitch();\r\n            f_isDigitProhibit();\r\n\r\n            System.out.println();\r\n            System.out.println();\r\n        }\r\n    }\r\n\r\n    public void f_isDigitBitSet() throws Exception {\r\n        long startNano = System.nanoTime();\r\n        for (int i = 0; i < COUNT; ++i) {\r\n            for (char ch : text) {\r\n                isDigitBitSet(ch);\r\n            }\r\n        }\r\n        long nano = System.nanoTime() - startNano;\r\n        System.out.println(\"bitset \\t: \" + NumberFormat.getInstance().format(nano));\r\n    }\r\n\r\n    public void f_isDigitRange() throws Exception {\r\n        long startNano = System.nanoTime();\r\n        for (int i = 0; i < COUNT; ++i) {\r\n            for (char ch : text) {\r\n                isDigitRange(ch);\r\n            }\r\n        }\r\n        long nano = System.nanoTime() - startNano;\r\n        System.out.println(\"range \\t: \" + NumberFormat.getInstance().format(nano));\r\n    }\r\n\r\n    public void f_isDigitArray() throws Exception {\r\n        long startNano = System.nanoTime();\r\n        for (int i = 0; i < COUNT; ++i) {\r\n            for (char ch : text) {\r\n                isDigitArray(ch);\r\n            }\r\n        }\r\n        long nano = System.nanoTime() - startNano;\r\n        System.out.println(\"array \\t: \" + NumberFormat.getInstance().format(nano));\r\n    }\r\n\r\n    public void f_isDigitSwitch() throws Exception {\r\n        long startNano = System.nanoTime();\r\n        for (int i = 0; i < COUNT; ++i) {\r\n            for (char ch : text) {\r\n                isDigitSwitch(ch);\r\n            }\r\n        }\r\n        long nano = System.nanoTime() - startNano;\r\n        System.out.println(\"swtich \\t: \" + NumberFormat.getInstance().format(nano));\r\n    }\r\n\r\n    public void f_isDigitProhibit() throws Exception {\r\n        long startNano = System.nanoTime();\r\n        for (int i = 0; i < COUNT; ++i) {\r\n            for (char ch : text) {\r\n                isDigitProhibit(ch);\r\n            }\r\n        }\r\n        long nano = System.nanoTime() - startNano;\r\n        System.out.println(\"prohi \\t: \" + NumberFormat.getInstance().format(nano));\r\n    }\r\n\r\n    private static final boolean[] digitBits = new boolean[256];\r\n    static {\r\n        for (char ch = '0'; ch <= '9'; ++ch) {\r\n            digitBits[ch] = true;\r\n        }\r\n    }\r\n\r\n    public final boolean isDigitArray(char ch) {\r\n        return digitBits[ch];\r\n    }\r\n\r\n    private static final DetectProhibitChar digitDetectProhibitChar = new DetectProhibitChar(new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' });\r\n\r\n    public final boolean isDigitProhibit(char ch) {\r\n        return digitDetectProhibitChar.isProhibitChar(ch);\r\n    }\r\n\r\n    public final boolean isDigitRange(char ch) {\r\n        return ch >= '0' && ch <= '9';\r\n    }\r\n\r\n    private static final BitSet bits = new BitSet();\r\n    static {\r\n        for (char ch = '0'; ch <= '9'; ++ch) {\r\n            bits.set(ch, true);\r\n        }\r\n    }\r\n\r\n    public final boolean isDigitBitSet(char ch) {\r\n        return bits.get(ch);\r\n    }\r\n\r\n    private final boolean isDigitSwitch(char ch) {\r\n        switch (ch) {\r\n            case '0':\r\n            case '1':\r\n            case '2':\r\n            case '3':\r\n            case '4':\r\n            case '5':\r\n            case '6':\r\n            case '7':\r\n            case '8':\r\n            case '9':\r\n                return true;\r\n            default:\r\n                return false;\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/ErrorAppendable.java",
    "content": "package com.alibaba.json.test;\r\n\r\nimport java.io.IOException;\r\n\r\npublic final class ErrorAppendable implements Appendable {\r\n\r\n    public Appendable append(CharSequence csq, int start, int end) throws IOException {\r\n        throw new IOException(\"\");\r\n    }\r\n\r\n    public Appendable append(char c) throws IOException {\r\n        throw new IOException(\"\");\r\n    }\r\n\r\n    public Appendable append(CharSequence csq) throws IOException {\r\n        throw new IOException(\"\");\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/FNV32_CollisionTest.java",
    "content": "package com.alibaba.json.test;\n\nimport junit.framework.TestCase;\n\nimport java.text.NumberFormat;\nimport java.util.Random;\n\n/**\n * Created by wenshao on 08/01/2017.\n */\npublic class FNV32_CollisionTest extends TestCase {\n    char[] digLetters = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_\".toCharArray();\n    //char[] digLetters = \"0123456789\".toCharArray();\n    Random r = new Random();\n    int[] powers = new int[10];\n\n    {\n        for (int i = 0; i < powers.length; ++i) {\n            powers[i] = (int) Math.pow(digLetters.length, i);\n        }\n    }\n\n\n    public void test_fnv_hash() throws Exception {\n        int COUNT = 1000 * 1000 * 1000;\n\n        long id_hash_64 = fnv_hash(\"name\".toCharArray());\n        int id_hash_32 = (int) id_hash_64;\n        System.out.println(\"name : \" + id_hash_32 + \", \" + id_hash_64);\n\n        long v = 0;\n        long time = System.currentTimeMillis();\n        NumberFormat format = NumberFormat.getInstance();\n\n        for (int len = 1; len <= 7; ++len){\n            char[] chars = new char[len];\n            long n = (long) Math.pow(digLetters.length, chars.length);\n\n\n            for (; v < n; ++v) {\n                long hash = 0x811c9dc5;\n                for (int i = 0; i < chars.length; ++i) {\n                    int power = powers[chars.length - i - 1];\n                    int d = (int) ((v / power) % digLetters.length);\n                    char c = digLetters[d];\n\n                    hash ^= c;\n                    hash *= 0x1000193;\n                }\n\n                if (hash == id_hash_64) {\n                    int hash_32 = (int) hash;\n                    System.out.println(\"collision : \" + build(v, len) + \"， hash64 : \" + hash + \", hash 32 \" + hash_32);\n                    break;\n                }\n\n                if (v != 0 && v % (1000 * 1000 * 100) == 0) {\n                    long now = System.currentTimeMillis();\n                    long millis = now - time;\n                    time = now;\n                    System.out.println(\"millis : \" + millis + \", \" + format.format(v));\n                }\n            }\n\n            System.out.println(\"end : \" + len);\n        }\n    }\n\n    String build(long v, int len) {\n        char[] chars = new char[len];\n        for (int i = 0; i < chars.length; ++i) {\n            int power = powers[chars.length - i - 1];\n            int d = (int) ((v / power) % digLetters.length);\n            chars[i] = digLetters[d];\n        }\n\n        return new String(chars);\n    }\n\n    static long fnv_hash(char[] chars) {\n        long hash = 0x811c9dc5;\n        for (int i = 0; i < chars.length; ++i) {\n            char c = chars[i];\n            hash ^= c;\n            hash *= 0x1000193;\n        }\n        return hash;\n    }\n\n    static long hash(char[] chars) {\n        long hash = 0;\n        for (int i = 0; i < chars.length; ++i) {\n            hash = 31 * hash + chars[i];\n        }\n        return hash;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/FNV32_CollisionTest_2.java",
    "content": "package com.alibaba.json.test;\n\nimport junit.framework.TestCase;\n\nimport java.text.NumberFormat;\nimport java.util.Random;\n\n/**\n * Created by wenshao on 08/01/2017.\n */\npublic class FNV32_CollisionTest_2 extends TestCase {\n    char[] digLetters = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_\".toCharArray();\n    //char[] digLetters = \"0123456789\".toCharArray();\n    Random r = new Random();\n    int[] powers = new int[10];\n\n    {\n        for (int i = 0; i < powers.length; ++i) {\n            powers[i] = (int) Math.pow(digLetters.length, i);\n        }\n    }\n\n\n    public void test_fnv_hash_7() throws Exception {\n        int COUNT = 1000 * 1000 * 1000;\n\n        long id_hash_64 = fnv_hash(\"name\".toCharArray());\n        int id_hash_32 = (int) id_hash_64;\n        System.out.println(\"name : \" + id_hash_32 + \", \" + id_hash_64);\n\n        long v = 0;\n        long time = System.currentTimeMillis();\n        NumberFormat format = NumberFormat.getInstance();\n\n\n        final int len = 7;\n        char[] chars = new char[len];\n        for (int i0 = 0; i0 < digLetters.length; ++i0) {\n            long h0 = 0x811c9dc5;\n            char c0 = digLetters[i0];\n            h0 ^= c0;\n            h0 *= 0x1000193;\n\n            chars[0] = c0;\n            for (int i1 = 0; i1 < digLetters.length; ++i1) {\n                char c1 = digLetters[i1];\n                chars[1] = c1;\n\n                long h1 = h0;\n                h1 ^= c1;\n                h1 *= 0x1000193;\n\n                for (int i2 = 0; i2 < digLetters.length; ++i2) {\n                    char c2 = digLetters[i2];\n\n                    long h2 = h1;\n                    h2 ^= c2;\n                    h2 *= 0x1000193;\n\n                    chars[2] = c2;\n                    for (int i3 = 0; i3 < digLetters.length; ++i3) {\n                        char c3 = digLetters[i3];\n\n                        long h3 = h2;\n                        h3 ^= c3;\n                        h3 *= 0x1000193;\n\n                        chars[3] = c3;\n                        for (int i4 = 0; i4 < digLetters.length; ++i4) {\n                            char c4 = digLetters[i4];\n\n                            long h4 = h3;\n                            h4 ^= c4;\n                            h4 *= 0x1000193;\n\n                            chars[4] = c4;\n                            for (int i5 = 0; i5 < digLetters.length; ++i5) {\n                                char c5 = digLetters[i5];\n                                chars[5] = c5;\n\n                                long h5 = h4;\n                                h5 ^= c5;\n                                h5 *= 0x1000193;\n\n                                for (int i6 = 0; i6 < digLetters.length; ++i6) {\n                                    char c6 = digLetters[i6];\n\n                                    long h6 = h5;\n                                    h6 ^= c6;\n                                    h6 *= 0x1000193;\n\n                                    chars[6] = c6;\n\n                                    v++;\n                                    if (h6 == id_hash_64) {\n                                        int hash_32 = (int) h6;\n                                        System.out.println(\"collision : \" + build(v, len) + \"， hash64 : \" + h6 + \", hash 32 \" + hash_32);\n                                        break;\n                                    }\n\n                                    if (v != 0 && v % (1000 * 1000 * 1000) == 0) {\n                                        long now = System.currentTimeMillis();\n                                        long millis = now - time;\n                                        time = now;\n                                        System.out.println(\"millis : \" + millis + \", \" + format.format(v));\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n\n        System.out.println(\"end : \" + len);\n\n    }\n\n    String build(long v, int len) {\n        char[] chars = new char[len];\n        for (int i = 0; i < chars.length; ++i) {\n            int power = powers[chars.length - i - 1];\n            int d = (int) ((v / power) % digLetters.length);\n            chars[i] = digLetters[d];\n        }\n\n        return new String(chars);\n    }\n\n    static long fnv_hash(char[] chars) {\n        long hash = 0x811c9dc5;\n        for (int i = 0; i < chars.length; ++i) {\n            char c = chars[i];\n            hash ^= c;\n            hash *= 0x1000193;\n        }\n        return hash;\n    }\n\n    static long hash(char[] chars) {\n        long hash = 0;\n        for (int i = 0; i < chars.length; ++i) {\n            hash = 31 * hash + chars[i];\n        }\n        return hash;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/FNV32_CollisionTest_All.java",
    "content": "package com.alibaba.json.test;\n\nimport junit.framework.TestCase;\n\nimport java.io.File;\nimport java.io.FileOutputStream;\nimport java.io.FileWriter;\nimport java.io.FilterWriter;\nimport java.text.NumberFormat;\nimport java.util.BitSet;\nimport java.util.Random;\n\nimport static com.alibaba.fastjson.util.TypeUtils.fnv1a_64_magic_hashcode;\nimport static com.alibaba.fastjson.util.TypeUtils.fnv1a_64_magic_prime;\n\n/**\n * Created by wenshao on 08/01/2017.\n */\npublic class FNV32_CollisionTest_All extends TestCase {\n\n    char[] digLetters = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_\".toCharArray();\n    //char[] digLetters = \"0123456789\".toCharArray();\n    Random r = new Random();\n    int[] powers = new int[10];\n\n    {\n        for (int i = 0; i < powers.length; ++i) {\n            powers[i] = (int) Math.pow(digLetters.length, i);\n        }\n    }\n\n    private BitSet[] bits = new BitSet[16];\n\n    private File file = new File(\"/Users/wenshao/Downloads/fnv/hash.bin\");\n    FileOutputStream out;\n\n    protected void setUp() throws Exception {\n        out = new FileOutputStream(file);\n\n        for (int i = 0; i < bits.length; ++i) {\n            bits[i] = new BitSet(Integer.MAX_VALUE);\n        }\n    }\n\n    protected void tearDown() throws Exception {\n        out.close();\n    }\n\n    public void test_fnv_hash() throws Exception {\n        int collisionCount = 0;\n\n        long id_hash_64 = fnv_hash(\"name\".toCharArray());\n        int id_hash_32 = Math.abs((int) id_hash_64);\n        //bitset.set(id_hash_32);\n\n        long v = 0;\n        long time = System.currentTimeMillis();\n        NumberFormat format = NumberFormat.getInstance();\n\n        byte[] b = new byte[8];\n        for (int len = 1; len <= 5; ++len){\n            char[] chars = new char[len];\n            long n = (long) Math.pow(digLetters.length, chars.length);\n\n            for (; v < n; ++v) {\n                long hash = fnv1a_64_magic_hashcode;\n                for (int i = 0; i < chars.length; ++i) {\n                    int power = powers[chars.length - i - 1];\n                    int d = (int) ((v / power) % digLetters.length);\n                    char c = digLetters[d];\n\n                    hash ^= c;\n                    hash *= fnv1a_64_magic_prime;\n                }\n                b[7] = (byte) (hash       );\n                b[6] = (byte) (hash >>>  8);\n                b[5] = (byte) (hash >>> 16);\n                b[4] = (byte) (hash >>> 24);\n                b[3] = (byte) (hash >>> 32);\n                b[2] = (byte) (hash >>> 40);\n                b[1] = (byte) (hash >>> 48);\n                b[0] = (byte) (hash >>> 56);\n                out.write(b);\n\n                if (v != 0 && v % (1000 * 1000 * 10) == 0) {\n                    long now = System.currentTimeMillis();\n                    long millis = now - time;\n                    time = now;\n                    System.out.println(\"millis : \" + millis + \", collision \" + format.format(collisionCount) + \", \" + format.format(v));\n                }\n            }\n\n            System.out.println(\"end : \" + len);\n        }\n    }\n\n    String build(long v, int len) {\n        char[] chars = new char[len];\n        for (int i = 0; i < chars.length; ++i) {\n            int power = powers[chars.length - i - 1];\n            int d = (int) ((v / power) % digLetters.length);\n            chars[i] = digLetters[d];\n        }\n\n        return new String(chars);\n    }\n\n    static long fnv_hash(char[] chars) {\n        long hash = fnv1a_64_magic_hashcode;\n        for (int i = 0; i < chars.length; ++i) {\n            char c = chars[i];\n            hash ^= c;\n            hash *= fnv1a_64_magic_prime;\n        }\n        return hash;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/FNVHashTest.java",
    "content": "package com.alibaba.json.test;\n\nimport junit.framework.TestCase;\n\nimport java.util.*;\n\nimport static com.alibaba.fastjson.util.TypeUtils.fnv1a_64_magic_hashcode;\nimport static com.alibaba.fastjson.util.TypeUtils.fnv1a_64_magic_prime;\n\n/**\n * Created by wenshao on 05/01/2017.\n */\npublic class FNVHashTest extends TestCase {\n    char[] digLetters = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_\".toCharArray();\n    Random r = new Random();\n\n    public void test_fnv_hash() throws Exception {\n        int COUNT = 1000 * 1000 * 1000;\n\n        int collision_cnt = 0;\n        // Map<Long, char[]> map = new HashMap<Long, char[]>(COUNT);\n\n        long id_hash = fnv_hash(\"id\".toCharArray());\n        System.out.printf(\"id : \" + id_hash);\n        System.out.println();\n        for (int i = 0; i < digLetters.length; ++i) {\n            System.out.print(digLetters[i]);\n            System.out.print(\",\");\n        }\n//        for (int i = 0; i < COUNT; ++i) {\n//            char[] chars = gen();\n//            int hash = fnv_hash32(chars);\n//            if (hash == id_hash) {\n//                System.out.println(new String(chars));\n//                break;\n//            }\n//        }\n\n//        for (int i = 0; i < COUNT; ++i) {\n//            char[] chars = gen();\n//            Long hash = bkdr_hash(chars);\n//\n//            char[] chars_2 = map.get(hash);\n//            if (chars_2 != null) {\n//                if (!Arrays.equals(chars, chars_2)) {\n//                    System.out.println(\"collision (\" + collision_cnt++ + \") : \" + new String(chars) + \" -> \" + new String(chars_2));\n//                }\n//            } else {\n//                map.put(hash, chars);\n//            }\n//        }\n    }\n\n    private char[] gen() {\n        int len = r.nextInt(32);\n        char[] chars = new char[len];\n        for (int i = 0; i < chars.length; ++i) {\n            chars[i] = digLetters[r.nextInt(digLetters.length)];\n        }\n        return chars;\n    }\n\n    static int fnv_hash32(char[] chars) {\n        long hash = 0x811c9dc5;\n        for (int i = 0; i < chars.length; ++i) {\n            char c = chars[i];\n            hash ^= c;\n            hash *= 0x1000193;\n        }\n        return (int) hash;\n    }\n\n    static long fnv_hash64(char[] chars) {\n        long hash = fnv1a_64_magic_hashcode;\n        for (int i = 0; i < chars.length; ++i) {\n            char c = chars[i];\n            hash ^= c;\n            hash *= fnv1a_64_magic_prime;\n        }\n        return hash;\n    }\n\n    static long fnv_hash(char[] chars) {\n        long hash = 0x811c9dc5;\n        for (int i = 0; i < chars.length; ++i) {\n            char c = chars[i];\n            hash ^= c;\n            hash *= 0x1000193;\n        }\n        return hash;\n    }\n\n    static long bkdr_hash(char[] chars) {\n        long hash = 0;\n        for (int i = 0; i < chars.length; ++i) {\n            char c = chars[i];\n            hash = hash * 131 + c;\n        }\n        return hash;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/GenerateJavaTest.java",
    "content": "package com.alibaba.json.test;\r\n\r\nimport java.io.InputStream;\r\nimport java.math.BigDecimal;\r\nimport java.util.Date;\r\nimport java.util.concurrent.atomic.AtomicLong;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport org.apache.commons.io.IOUtils;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.json.test.entity.Company;\r\nimport com.alibaba.json.test.entity.Department;\r\nimport com.alibaba.json.test.entity.Employee;\r\nimport com.alibaba.json.test.entity.Group;\r\n\r\npublic class GenerateJavaTest extends TestCase {\r\n\r\n    private String     text;\r\n    private AtomicLong idSeed = new AtomicLong();\r\n\r\n    protected void setUp() throws Exception {\r\n        InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"json/page_model_cached.json\");\r\n        text = IOUtils.toString(is);\r\n        is.close();\r\n    }\r\n\r\n    private Long createId() {\r\n        return idSeed.incrementAndGet();\r\n    }\r\n\r\n    public void testGenerate() {\r\n        Group group = new Group();\r\n\r\n        group.setName(\"Alibaba Group\");\r\n        group.setDescription(\"Alibaba Group makes it easy for anyone to buy or sell online anywhere in the world. \");\r\n\r\n        {\r\n            Company company = new Company();\r\n            company.setId(createId());\r\n            company.setName(\"Alibaba.com\");\r\n            company.setDescription(\"Global leader in e-commerce for small businesses\");\r\n            company.setStock(\"1688.HK\");\r\n            group.getCompanies().add(company);\r\n\r\n            Department root = new Department();\r\n            root.setId(createId());\r\n            root.setName(\"B2B\");\r\n            company.setRootDepartment(root);\r\n\r\n            {\r\n                Department cbu = new Department();\r\n                cbu.setId(createId());\r\n                cbu.setName(\"CBU\");\r\n\r\n                root.getChildren().add(cbu);\r\n\r\n                Employee emp0 = new Employee();\r\n                emp0.setName(\"校长\");\r\n                emp0.setDescription(\"神棍敌人姐\");\r\n                emp0.setAge(3);\r\n                emp0.setSalary(new BigDecimal(\"123456789.0123\"));\r\n                emp0.setBirthdate(new Date());\r\n                emp0.setBadboy(true);\r\n\r\n                cbu.getMembers().add(emp0);\r\n            }\r\n            {\r\n                Department icbu = new Department();\r\n                icbu.setId(createId());\r\n                icbu.setName(\"ICBU\");\r\n\r\n                root.getChildren().add(icbu);\r\n            }\r\n        }\r\n\r\n        {\r\n            Company company = new Company();\r\n            company.setId(createId());\r\n            company.setName(\"Taobao\");\r\n            company.setDescription(\"China's largest online retail website and one-stop platform for shopping, socializing and information sharing\");\r\n            group.getCompanies().add(company);\r\n        }\r\n        {\r\n            Company company = new Company();\r\n            company.setId(createId());\r\n            company.setName(\"Alipay\");\r\n            company.setDescription(\"China's leading third-party online payment platform\");\r\n            group.getCompanies().add(company);\r\n        }\r\n        {\r\n            Company company = new Company();\r\n            company.setId(createId());\r\n            company.setName(\"Alibaba Cloud Computing\");\r\n            company.setDescription(\"Developer of advanced data-centric cloud computing services\");\r\n            group.getCompanies().add(company);\r\n        }\r\n        {\r\n            Company company = new Company();\r\n            company.setId(createId());\r\n            company.setName(\"China Yahoo\");\r\n            company.setDescription(\"One of China's leading Internet portals\");\r\n            group.getCompanies().add(company);\r\n        }\r\n\r\n        String jsonString = JSON.toJSONString(group, true);\r\n        System.out.println(jsonString);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/InnerInnerTest.java",
    "content": "package com.alibaba.json.test;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.json.test.Outter.Inner;\nimport com.alibaba.json.test.Outter.Inner.InnerInner;\nimport com.google.gson.Gson;\n\nimport junit.framework.TestCase;\n\nclass Outter{\n\tprivate String name;\n\tprivate InnerInner ii;\n\t\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\n\tpublic void setName(String name) {\n\t\tthis.name = name;\n\t}\n\n\n\tpublic InnerInner getIi() {\n\t\treturn ii;\n\t}\n\n\n\tpublic void setIi(InnerInner ii) {\n\t\tthis.ii = ii;\n\t}\n\n\tclass Inner{\n\t\tclass InnerInner{\n\t\t\tprivate String name;\n\n\t\t\tpublic String getName() {\n\t\t\t\treturn name;\n\t\t\t}\n\n\t\t\tpublic void setName(String name) {\n\t\t\t\tthis.name = name;\n\t\t\t}\n\t\t}\n\t}\n}\n\npublic class InnerInnerTest extends TestCase{//深层内部类的序列化反序列化测试\n\n\tpublic void testDeserialize(){//\n\t\tString json = \"{\\\"ii\\\":{\\\"name\\\":\\\"iicls\\\"},\\\"name\\\":\\\"ocls\\\"}\";\n\t\tOutter o = JSON.parseObject(json, Outter.class);\n\t\tassertEquals(\"ocls\", o.getName());\n\t\tassertEquals(\"iicls\", o.getIi().getName());\n\t}\n\t\n\tpublic void testSerialize(){\n\t\tOutter o = new Outter();\n\t\tInner i = o.new Inner();\n\t\tInnerInner ii = i.new InnerInner();\n\t\tii.setName(\"iicls\");\n\t\to.setIi(ii);\n\t\to.setName(\"ocls\");\n\t\tString json = JSON.toJSONString(o);\n\t\tassertEquals(\"{\\\"ii\\\":{\\\"name\\\":\\\"iicls\\\"},\\\"name\\\":\\\"ocls\\\"}\", json);\n\t}\n\t\n\tpublic void testGson(){\n\t\tOutter o = new Outter();\n\t\tInner i = o.new Inner();\n\t\tInnerInner ii = i.new InnerInner();\n\t\tii.setName(\"iicls\");\n\t\to.setIi(ii);\n\t\to.setName(\"ocls\");\n\t\tGson gson = new Gson();//default setting\n\t\tString json = gson.toJson(o);\n\t\tassertEquals(\"{\\\"name\\\":\\\"ocls\\\",\\\"ii\\\":{\\\"name\\\":\\\"iicls\\\"}}\", json);\n\t\tOutter newO = gson.fromJson(json, Outter.class);\n\t\tassertEquals(\"ocls\", newO.getName());\n\t\tassertEquals(\"iicls\", newO.getIi().getName());\n\t}\n\t\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/IntArrayFieldTest_primitive.java",
    "content": "package com.alibaba.json.test;\r\n\r\nimport org.junit.Assert;\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class IntArrayFieldTest_primitive extends TestCase {\r\n\r\n    public void test_array() throws Exception {\r\n        Assert.assertEquals(\"[1]\", JSON.toJSONString(new int[] { 1 }));\r\n\r\n    }\r\n\r\n    public void test_codec_null() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue);\r\n        Assert.assertEquals(\"{\\\"value\\\":null}\", text);\r\n\r\n        V0 v1 = JSON.parseObject(text, V0.class);\r\n\r\n        Assert.assertEquals(v1.getValue(), v.getValue());\r\n    }\r\n\r\n    public void test_codec_null_1() throws Exception {\r\n        V0 v = new V0();\r\n\r\n        SerializeConfig mapping = new SerializeConfig();\r\n        mapping.setAsmEnable(false);\r\n        Assert.assertTrue(!mapping.isAsmEnable());\r\n\r\n        String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty);\r\n        Assert.assertEquals(\"{\\\"value\\\":[]}\", text);\r\n    }\r\n\r\n    public static class V0 {\r\n\r\n        private int[] value;\r\n\r\n        public int[] getValue() {\r\n            return value;\r\n        }\r\n\r\n        public void setValue(int[] value) {\r\n            this.value = value;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/Issue1001.java",
    "content": "package com.alibaba.json.test;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONReader;\nimport junit.framework.TestCase;\nimport org.apache.commons.io.FileUtils;\n\nimport java.io.File;\nimport java.io.StringReader;\n\n/**\n * Created by wenshao on 21/01/2017.\n */\npublic class Issue1001 extends TestCase {\n    public void test_for_issue() throws Exception {\n        File file = new File(\"/Users/wenshao/Downloads/issue_1001.json\");\n\n        String json = FileUtils.readFileToString(file);\n\n        JSONReader reader = new JSONReader(new StringReader(json));\n        reader.readObject();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/Issue1407.java",
    "content": "package com.alibaba.json.test;\n\nimport com.alibaba.fastjson.util.IdentityHashMap;\nimport junit.framework.TestCase;\n\nimport java.util.Random;\n\n/**\n * Created by wenshao on 14/08/2017.\n */\npublic class Issue1407 extends TestCase {\n    public void test_for_issue() throws Exception {\n        final String key = \"k\";\n        final IdentityHashMap map = new IdentityHashMap(2);\n        final Random ran = new Random();\n\n        new Thread() {\n            public void run() {\n                while(true) {\n                    String kk = (key + ran.nextInt(2));\n                    if (map.get(kk) != null) {\n//                        System.out.println(\"\\tskip_a \" + kk);\n                        continue;\n                    }\n//\t\t\tsynchronized(map) {\n                    map.put(kk, kk);\n\n                    System.out.println(\"\\tput_a \" + kk);\n//\t\t\t}\n                    Object val = map.get(kk);\n                    if(val == null) {\n                        System.err.println(\"err_a : \" + kk);\n                    }\n                }\n            }\n        }.start();\n\n        new Thread() {\n            public void run() {\n                while(true) {\n                    String kk = (key + ran.nextInt(2));\n//\t\t\tsynchronized(map) {\n                    if (map.get(kk) != null) {\n//                        System.out.println(\"\\tskip_b \" + kk);\n                        continue;\n                    }\n                    map.put(kk, kk);\n\n                    System.out.println(\"\\tput_b \" + kk);\n//\t\t\t}\n                    Object val = map.get(kk);\n                    if(val == null) {\n                        System.err.println(\"err_b : \" + kk);\n                    }\n                }\n            }\n        }.start();\n\n        Thread.sleep(1000 * 1000);\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/Issue1488.java",
    "content": "package com.alibaba.json.test;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\nimport org.apache.commons.io.IOUtils;\n\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.concurrent.Executors;\nimport java.util.concurrent.ScheduledExecutorService;\nimport java.util.concurrent.TimeUnit;\n\npublic class Issue1488 extends TestCase {\n    public void test_user() throws Exception {\n        ExtClassLoader classLoader = new ExtClassLoader();\n        final Class clazz = classLoader.loadClass(\"Issue1488_Server\");\n\n        final int THREAD_NUMBER = 10;\n        ScheduledExecutorService threadPool = Executors.newScheduledThreadPool(THREAD_NUMBER);\n        for (int i = 0; i < 10; ++i) {\n            System.out.println(\"start....\");\n            threadPool.scheduleAtFixedRate(new Runnable() {\n                public void run() {\n                    Map map = new HashMap();\n                    map.put(\"run_id\", \"aeca30e\");\n                    map.put(\"port\", 1002);\n                    map.put(\"processId\", 3001);\n                    System.out.println(JSON.toJSONString(JSON.parseObject(JSON.toJSONString(map), clazz)));\n                }\n            }, 1, 1, TimeUnit.SECONDS);\n        }\n\n        Thread.sleep(1000 * 1000);\n\n//\n//        Object obj = JSON.parseObject(json, clazz);\n//        assertEquals(\"{\\\"process_id\\\":301,\\\"run_id\\\":\\\"aeca30e\\\"}\", JSON.toJSONString(obj));\n    }\n\n    public static class ExtClassLoader extends ClassLoader {\n\n        public ExtClassLoader() throws IOException {\n            super(Thread.currentThread().getContextClassLoader());\n\n            {\n                byte[] bytes;\n                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(\"kotlin/Issue1488_Server.clazz\");\n                bytes = IOUtils.toByteArray(is);\n                is.close();\n\n                super.defineClass(\"Issue1488_Server\", bytes, 0, bytes.length);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/Issue3805.java",
    "content": "package com.alibaba.json.test;\n\nimport com.alibaba.fastjson.support.config.FastJsonConfig;\nimport com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;\nimport lombok.Data;\nimport org.junit.Assert;\nimport org.junit.Test;\nimport org.springframework.http.HttpHeaders;\nimport org.springframework.http.HttpOutputMessage;\nimport org.springframework.http.MediaType;\n\nimport java.io.ByteArrayOutputStream;\nimport java.io.IOException;\nimport java.io.OutputStream;\nimport java.time.LocalDateTime;\n\n/**\n * @project fastjson\n * @desc:\n * @date 2021-06-15 15:18\n */\npublic class Issue3805 {\n\n    @Data\n    private class TestModel {\n        private LocalDateTime createTime;\n    }\n\n    @Test\n    public void test() throws Exception {\n        \n        String dateFormat = \"yyyy\";\n        TestModel model = new TestModel();\n        model.setCreateTime(LocalDateTime.of(2021,5,6,7,8,9,5));\n\n        FastJsonConfig config = new FastJsonConfig();\n\n        config.setDateFormat(dateFormat);\n\n        FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();\n        converter.setFastJsonConfig(config);\n\n        converter.canRead(TestModel.class, MediaType.APPLICATION_JSON_UTF8);\n        converter.canWrite(TestModel.class, MediaType.APPLICATION_JSON_UTF8);\n\n        final ByteArrayOutputStream byteOut = new ByteArrayOutputStream();\n        HttpOutputMessage out = new HttpOutputMessage() {\n            public HttpHeaders getHeaders() {\n                return new HttpHeaders() {\n                    private static final long serialVersionUID = 1L;\n\n                    @Override\n                    public MediaType getContentType() {\n                        return MediaType.APPLICATION_JSON;\n                    }\n                };\n            }\n\n            public OutputStream getBody() throws IOException {\n                return byteOut;\n            }\n        };\n\n        converter.write(model, TestModel.class, MediaType.APPLICATION_JSON_UTF8, out);\n        byte[] bytes = byteOut.toByteArray();\n        String jsonString = new String(bytes, \"UTF-8\");\n//        System.out.println(jsonString);\n        Assert.assertEquals(jsonString, \"{\\\"createTime\\\":\\\"2021\\\"}\");\n     \n    }\n\n    \n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/JSONLibXmlTest.java",
    "content": "package com.alibaba.json.test;\n\nimport junit.framework.TestCase;\nimport net.sf.json.JSONArray;\nimport net.sf.json.JSONObject;\nimport net.sf.json.xml.XMLSerializer;\n\npublic class JSONLibXmlTest extends TestCase {\n    public void test_xml() throws Exception {\n        XMLSerializer xmlSerializer = new XMLSerializer();\n        \n        JSONObject json = new JSONObject();\n        json.put(\"id\", 123);\n        json.put(\"name\", \"jobs\");\n        json.put(\"flag\", true);\n        \n        JSONArray items = new JSONArray();\n        items.add(\"x\");\n        items.add(234);\n        items.add(false);\n        json.put(\"items\", items);\n        \n        String text = xmlSerializer.write(json);\n        System.out.println(text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/JSONParser2Test.java",
    "content": "/*\r\n * Copyright 1999-2017 Alibaba Group.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\npackage com.alibaba.json.test;\r\n\r\nimport java.io.InputStream;\r\nimport java.text.NumberFormat;\r\n\r\nimport org.apache.commons.io.IOUtils;\r\n\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\n\r\nimport junit.framework.TestCase;\r\n\r\npublic class JSONParser2Test extends TestCase {\r\n\r\n    private String text;\r\n    private int    COUNT = 1000 * 10;\r\n\r\n    protected void setUp() throws Exception {\r\n        // String resource = \"json/Bug_0_Test.json\";\r\n        String resource = \"json/Bug_0_Test.json\";\r\n        InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource);\r\n        text = IOUtils.toString(is);\r\n        is.close();\r\n\r\n        // text =\r\n        // \"[{\\\"S\\\":321061,\\\"T\\\":\\\"GetAttributeResp\\\"},{\\\"ERROR\\\":null,\\\"TS\\\":0,\\\"VAL\\\":{\\\"SqlList\\\":[{\\\"BatchSizeMax\\\":0,\\\"BatchSizeTotal\\\":0,\\\"ConcurrentMax\\\":1,\\\"DataSource\\\":\\\"jdbc:wrap-jdbc:filters=default,encoding:name=ds-offer:jdbc:mysql://100.10.10.10:8066/xxx\\\",\\\"EffectedRowCount\\\":0,\\\"ErrorCount\\\":0,\\\"ExecuteCount\\\":5,\\\"FetchRowCount\\\":5,\\\"File\\\":null,\\\"ID\\\":2001,\\\"LastError\\\":null,\\\"LastTime\\\":1292742908178,\\\"MaxTimespan\\\":16,\\\"MaxTimespanOccurTime\\\":1292742668191,\\\"Name\\\":null,\\\"RunningCount\\\":0,\\\"SQL\\\":\\\"SELECT @@SQL_MODE\\\",\\\"TotalTime\\\":83}]}}]\";\r\n        // text = \"{\\\"name\\\":null,\\\"flag\\\":true}\";\r\n        // text = \"-6470204979932713723\";\r\n        // text = \"[-5.041598256063065E-20,-7210028408342716000]\";\r\n        // text = \"[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]\";\r\n        // text = \"{\\\"S\\\":321061,\\\"T\\\":\\\"GetAttributeResp\\\"}\";\r\n        // text = \"{\\\"?�Z,??\\\": true,\\\"?>�wj��\\\\\\\"\\\\\\\\�_c~M?SN?!?k$|HE��K��'\\\": -1377757625945773954}\";\r\n    }\r\n\r\n    public void test_0() throws Exception {\r\n        for (int i = 0; i < 50; ++i) {\r\n            f_ali_json();\r\n            f_jackson();\r\n            // f_simple_json();\r\n\r\n            System.out.println();\r\n        }\r\n\r\n        System.out.println();\r\n        System.out.println(text);\r\n    }\r\n\r\n    public void f_ali_json() throws Exception {\r\n        // String input = \"[{\\\"a\\\":3}]\";\r\n        long startNano = System.nanoTime();\r\n        for (int i = 0; i < COUNT; ++i) {\r\n            DefaultJSONParser parser = new DefaultJSONParser(text);\r\n            parser.parse();\r\n        }\r\n        long nano = System.nanoTime() - startNano;\r\n        System.out.println(\"fast-json \\t: \" + NumberFormat.getInstance().format(nano));\r\n    }\r\n\r\n    private void f_jackson() throws Exception {\r\n        long startNano = System.nanoTime();\r\n        for (int i = 0; i < COUNT; ++i) {\r\n            ObjectMapper mapper = new ObjectMapper();\r\n            mapper.readTree(text);\r\n            // JsonNode head = node.get(0);\r\n            // JsonNode body = node.get(1);\r\n        }\r\n        long nano = System.nanoTime() - startNano;\r\n        System.out.println(\"jackson \\t: \" + NumberFormat.getInstance().format(nano));\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/JavaHash_CollisionTest.java",
    "content": "package com.alibaba.json.test;\n\nimport junit.framework.TestCase;\n\nimport java.text.NumberFormat;\nimport java.util.Random;\n\n/**\n * Created by wenshao on 08/01/2017.\n */\npublic class JavaHash_CollisionTest extends TestCase {\n    char[] digLetters = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_\".toCharArray();\n    //char[] digLetters = \"0123456789\".toCharArray();\n    Random r = new Random();\n    int[] powers = new int[10];\n\n    {\n        for (int i = 0; i < powers.length; ++i) {\n            powers[i] = (int) Math.pow(digLetters.length, i);\n        }\n    }\n\n\n    public void test_fnv_hash() throws Exception {\n        int COUNT = 1000 * 1000 * 1000;\n\n        long id_hash_64 = hash64(\"name\".toCharArray());\n        int id_hash_32 = (int) id_hash_64;\n        System.out.println(\"name : \" + id_hash_32 + \", \" + id_hash_64);\n\n        long v = 0;\n        long time = System.currentTimeMillis();\n        NumberFormat format = NumberFormat.getInstance();\n\n        for (int len = 1; len <= 7; ++len){\n            char[] chars = new char[len];\n            long n = (long) Math.pow(digLetters.length, chars.length);\n\n            // h = 31 * h + val[i];\n            for (; v < n; ++v) {\n                // long hash = 0x811c9dc5;\n                long hash = 0;\n                for (int i = 0; i < chars.length; ++i) {\n                    int power = powers[chars.length - i - 1];\n                    int d = (int) ((v / power) % digLetters.length);\n                    char c = digLetters[d];\n\n                    hash = 31 * hash + c;\n//                    hash ^= c;\n//                    hash *= 0x1000193;\n                }\n\n                if (hash == id_hash_64) {\n                    int hash_32 = (int) hash;\n                    System.out.println(\"collision : \" + build(v, len) + \"， hash64 : \" + hash + \", hash 32 \" + hash_32);\n                    break;\n                }\n\n                if (v != 0 && v % (1000 * 1000 * 100) == 0) {\n                    long now = System.currentTimeMillis();\n                    long millis = now - time;\n                    time = now;\n                    System.out.println(\"millis : \" + millis + \", \" + format.format(v));\n                }\n            }\n\n            System.out.println(\"end : \" + len);\n        }\n    }\n\n    String build(long v, int len) {\n        char[] chars = new char[len];\n        for (int i = 0; i < chars.length; ++i) {\n            int power = powers[chars.length - i - 1];\n            int d = (int) ((v / power) % digLetters.length);\n            chars[i] = digLetters[d];\n        }\n\n        return new String(chars);\n    }\n\n    static long fnv_hash(char[] chars) {\n        long hash = 0x811c9dc5;\n        for (int i = 0; i < chars.length; ++i) {\n            char c = chars[i];\n            hash ^= c;\n            hash *= 0x1000193;\n        }\n        return hash;\n    }\n\n    static long hash64(char[] chars) {\n        long hash = 0x811c9dc5;\n        for (int i = 0; i < chars.length; ++i) {\n            char c = chars[i];\n            hash = 31 * hash + c;\n\n        }\n        return hash;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/JsonIteratorByteArrayTest.java",
    "content": "package com.alibaba.json.test;\n\nimport com.alibaba.fastjson.JSON;\nimport com.jsoniter.JsonIterator;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 27/12/2016.\n */\npublic class JsonIteratorByteArrayTest extends TestCase {\n    public void test_for_iterator() throws Exception {\n        String text = \"{\\\"id\\\":1001,\\\"name\\\":\\\"wenshao\\\",\\\"type\\\":\\\"Small\\\"}\";\n        byte[] bytes = text.getBytes();\n\n\n        fastjson(bytes);\n\n\n        for (int i = 0; i < 10; ++i) {\n            long startMillis = System.currentTimeMillis();\n            fastjson(bytes);\n            long millis = System.currentTimeMillis() - startMillis;\n            System.out.println(\"fastjson : \" + millis);\n        }\n\n//        jsoniterator(bytes);\n//        for (int i = 0; i < 10; ++i) {\n//            long startMillis = System.currentTimeMillis();\n//            jsoniterator(bytes);\n//            long millis = System.currentTimeMillis() - startMillis;\n//            System.out.println(\"jsoniterator : \" + millis);\n//        }\n    }\n\n    private void jsoniterator(byte[] text) throws java.io.IOException {\n        for (int i = 0; i < 1000 * 1000 * 10; ++i){\n            JsonIterator it = JsonIterator.parse(text);\n            Model model2 = it.read(Model.class);\n        }\n    }\n\n    private void fastjson(byte[] text) throws java.io.IOException {\n        for (int i = 0; i < 1000 * 1000 * 10; ++i){\n            Model model2 = JSON.parseObject(text, Model.class);\n        }\n    }\n\n    public static class Model {\n        public int id;\n        public String name;\n        // public Type type;\n    }\n\n    public static enum Type {\n        Big, Small\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/JsonIteratorImageTest.java",
    "content": "package com.alibaba.json.test;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONLexerBase;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\nimport com.jsoniter.JsonIterator;\nimport com.jsoniter.spi.TypeLiteral;\nimport junit.framework.TestCase;\n\nimport java.lang.reflect.Type;\n\n/**\n * Created by wenshao on 27/12/2016.\n */\npublic class JsonIteratorImageTest extends TestCase {\n    private String input = \"{\\\"bitrate\\\":262144,\\\"duration\\\":18000000,\\\"format\\\":\\\"video/mpg4\\\",\\\"height\\\":480,\\\"persons\\\":[\\\"Bill Gates\\\",\\\"Steve Jobs\\\"],\\\"player\\\":\\\"JAVA\\\",\\\"size\\\":58982400,\\\"title\\\":\\\"Javaone Keynote\\\",\\\"uri\\\":\\\"http://javaone.com/keynote.mpg\\\",\\\"width\\\":640}\";\n    private byte[] inputBytes = input.getBytes();\n    private TypeLiteral<Model> modelTypeLiteral; // this is thread-safe can reused\n    private JsonIterator iter;\n\n    private int COUNT = 1000 * 1000 * 1;\n\n    protected void setUp() throws Exception {\n        inputBytes = input.getBytes();\n        iter = new JsonIterator();\n        modelTypeLiteral = new TypeLiteral<Model>() {\n        };\n    }\n\n    public void test_for_iterator() throws Exception {\n        iter.reset(inputBytes);\n        Model m2 = iter.read(modelTypeLiteral);\n\n        fastjson();\n        for (int i = 0; i < 5; ++i) {\n            long startMillis = System.currentTimeMillis();\n            fastjson();\n            long millis = System.currentTimeMillis() - startMillis;\n            System.out.println(\"fastjson : \" + millis);\n        }\n\n//        jsoniterator();\n//        for (int i = 0; i < 5; ++i) {\n//            long startMillis = System.currentTimeMillis();\n//            jsoniterator();\n//            long millis = System.currentTimeMillis() - startMillis;\n//            System.out.println(\"jsoniterator : \" + millis);\n//        }\n    }\n\n    private void jsoniterator() throws java.io.IOException {\n        for (int i = 0; i < COUNT; ++i){\n            iter.reset(inputBytes);\n            Model model2 = iter.read(modelTypeLiteral);\n        }\n    }\n\n    private void fastjson() throws java.io.IOException {\n        for (int i = 0; i < COUNT; ++i){\n            Model model2 = JSON.parseObject(input, Model.class);\n        }\n    }\n\n    public static class Model {\n        public int id;\n        public String name;\n    }\n\n    public static Object decode_(JsonIterator iter) throws java.io.IOException {\n        if (iter.readNull()) {\n            com.jsoniter.CodegenAccess.resetExistingObject(iter);\n            return null;\n        }\n        JsonIteratorImageTest.Model obj = (com.jsoniter.CodegenAccess.existingObject(iter) == null ? new JsonIteratorImageTest.Model() : (JsonIteratorImageTest.Model)com.jsoniter.CodegenAccess.resetExistingObject(iter));\n        if (!com.jsoniter.CodegenAccess.readObjectStart(iter)) { return obj; }\n        switch (com.jsoniter.CodegenAccess.readObjectFieldAsHash(iter)) {\n            case 926444256:\n                obj.id = (int)iter.readInt();\n                break;\n            case -1925595674:\n                obj.name = (String)iter.readString();\n                break;\n            default:\n                iter.skip();\n        }\n        while (com.jsoniter.CodegenAccess.nextToken(iter) == ',') {\n            switch (com.jsoniter.CodegenAccess.readObjectFieldAsHash(iter)) {\n                case 926444256:\n                    obj.id = (int)iter.readInt();\n                    continue;\n                case -1925595674:\n                    obj.name = (String)iter.readString();\n                    continue;\n            }\n            iter.skip();\n        }\n        return obj;\n    }\n\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/JsonIteratorTest.java",
    "content": "package com.alibaba.json.test;\n\nimport com.alibaba.fastjson.JSON;\nimport com.jsoniter.JsonIterator;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 27/12/2016.\n */\npublic class JsonIteratorTest extends TestCase {\n    public void test_for_iterator() throws Exception {\n        String text = \"{\\\"id\\\":1001,\\\"name\\\":\\\"wenshao\\\",\\\"type\\\":\\\"Small\\\"}\";\n\n\n        fastjson(text);\n        jsoniterator(text);\n\n        for (int i = 0; i < 5; ++i) {\n            long startMillis = System.currentTimeMillis();\n            fastjson(text);\n            long millis = System.currentTimeMillis() - startMillis;\n            System.out.println(\"fastjson : \" + millis);\n        }\n\n        for (int i = 0; i < 5; ++i) {\n            long startMillis = System.currentTimeMillis();\n            jsoniterator(text);\n            long millis = System.currentTimeMillis() - startMillis;\n            System.out.println(\"jsoniterator : \" + millis);\n        }\n    }\n\n    private void jsoniterator(String text) throws java.io.IOException {\n        for (int i = 0; i < 1000 * 1000; ++i){\n            JsonIterator it = JsonIterator.parse(text);\n            Model model2 = it.read(Model.class);\n        }\n    }\n\n    private void fastjson(String text) throws java.io.IOException {\n        for (int i = 0; i < 1000 * 1000; ++i){\n            Model model2 = JSON.parseObject(text, Model.class);\n        }\n    }\n\n    public static class Model {\n        public int id;\n        public String name;\n        public Type type;\n    }\n\n    public static enum Type {\n        Big, Small\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/SymbolTableDupTest.java",
    "content": "package com.alibaba.json.test;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.List;\r\nimport java.util.Set;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.fastjson.parser.SymbolTable;\r\n\r\npublic class SymbolTableDupTest extends TestCase {\r\n\r\n    private HashMap<Integer, Integer>      map          = new HashMap<Integer, Integer>();\r\n    private Set<Integer>                   dupHashCodes = new HashSet<Integer>();\r\n    private HashMap<Integer, List<String>> dupList      = new HashMap<Integer, List<String>>();\r\n\r\n    private final int                      VALUE        = 114788;\r\n\r\n    public void test_0() throws Exception {\r\n        int len = 3;\r\n        char[] chars = new char[len];\r\n        tryBit(chars, len);\r\n        tryBit2(chars, len);\r\n        // tryBit3(chars, len);\r\n        // for (Map.Entry<Integer, List<String>> entry : dupList.entrySet()) {\r\n        // System.out.println(entry.getKey() + \" : \" + entry.getValue());\r\n        // }\r\n\r\n    }\r\n\r\n    private void tryBit(char[] chars, int i) {\r\n        char startChar = 'A';\r\n        char endChar = 'z';\r\n\r\n        for (char j = startChar; j <= endChar; j++) {\r\n            chars[i - 1] = j;\r\n\r\n            if (i > 1) {\r\n                tryBit(chars, i - 1);\r\n            } else {\r\n                test(chars);\r\n            }\r\n        }\r\n    }\r\n\r\n    private void tryBit2(char[] chars, int i) {\r\n        char startChar = 'A';\r\n        char endChar = 'z';\r\n\r\n        for (char j = startChar; j <= endChar; j++) {\r\n            chars[i - 1] = j;\r\n\r\n            if (i > 1) {\r\n                tryBit2(chars, i - 1);\r\n            } else {\r\n                test2(chars);\r\n            }\r\n        }\r\n    }\r\n\r\n    private void tryBit3(char[] chars, int i) {\r\n        char startChar = 'A';\r\n        char endChar = 'z';\r\n\r\n        for (char j = startChar; j <= endChar; j++) {\r\n            chars[i - 1] = j;\r\n\r\n            if (i > 1) {\r\n                tryBit3(chars, i - 1);\r\n            } else {\r\n                test3(chars);\r\n            }\r\n        }\r\n    }\r\n\r\n    private void test3(char[] chars) {\r\n        int hash = SymbolTable.hash(chars, 0, chars.length);\r\n        if (hash == VALUE) {\r\n            System.out.println(new String(chars));\r\n        }\r\n    }\r\n\r\n    private void test2(char[] chars) {\r\n        int hash = SymbolTable.hash(chars, 0, chars.length);\r\n        if (dupHashCodes.contains(hash)) {\r\n            List<String> list = dupList.get(hash);\r\n            if (list == null) {\r\n                list = new ArrayList<String>();\r\n                dupList.put(hash, list);\r\n            }\r\n            list.add(new String(chars));\r\n        }\r\n    }\r\n\r\n    private void test(char[] chars) {\r\n        int hash = SymbolTable.hash(chars, 0, chars.length);\r\n        Integer count = map.get(hash);\r\n        if (count != null) {\r\n            dupHashCodes.add(hash);\r\n            map.put(hash, count.intValue() + 1);\r\n        } else {\r\n            map.put(hash, 1);\r\n        }\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/TestASM.java",
    "content": "package com.alibaba.json.test;\n\nimport java.io.FileOutputStream;\nimport java.lang.reflect.Method;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.asm.ClassWriter;\nimport com.alibaba.fastjson.asm.MethodVisitor;\nimport com.alibaba.fastjson.asm.MethodWriter;\nimport com.alibaba.fastjson.asm.Opcodes;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.json.test.benchmark.encode.EishayEncode;\n\npublic class TestASM extends TestCase implements Opcodes {\n\n    // public void test_0() throws Exception {\n    //\n    // ClassWriter cw = new ClassWriter(0);\n    // cw.visit(V1_1, ACC_PUBLIC, \"Example\", null, \"java/lang/Object\", null);\n    //\n    // MethodVisitor mw = cw.visitMethod(ACC_PUBLIC, \"<init>\", \"()V\", null, null);\n    // mw.visitVarInsn(ALOAD, 0);\n    // mw.visitMethodInsn(INVOKESPECIAL, \"java/lang/Object\", \"<init>\", \"()V\");\n    // mw.visitInsn(RETURN);\n    // mw.visitMaxs(1, 1);\n    // mw.visitEnd();\n    // mw = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, \"main\", \"([Ljava/lang/String;)V\", null, null);\n    // mw.visitFieldInsn(GETSTATIC, \"java/lang/System\", \"out\", \"Ljava/io/PrintStream;\");\n    // mw.visitLdcInsn(\"Hello world!\");\n    // mw.visitMethodInsn(INVOKEVIRTUAL, \"java/io/PrintStream\", \"println\", \"(Ljava/lang/String;)V\");\n    // mw.visitInsn(RETURN);\n    // mw.visitMaxs(2, 2);\n    // mw.visitEnd();\n    // byte[] code = cw.toByteArray();\n    // FileOutputStream fos = new FileOutputStream(\"Example.class\");\n    // fos.write(code);\n    // fos.close();\n    //\n    // MyClassLoader loader = new MyClassLoader();\n    //\n    // Class exampleClass = loader.defineClassF(\"Example\", code, 0, code.length);\n    // exampleClass.getMethods()[0].invoke(null, new Object[] { null });\n    // }\n\n    public void test_asm() throws Exception {\n        String text = JSON.toJSONString(EishayEncode.mediaContent);\n        System.out.println(text);\n    }\n    \n    public void test_1() throws Exception {\n        ClassWriter cw = new ClassWriter();\n        cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, \"DateSerializer\", \"java/lang/Object\", new String[] { \"com/alibaba/fastjson/serializer/ObjectSerializer\" });\n\n        MethodVisitor mw = new MethodWriter(cw, ACC_PUBLIC, \"<init>\", \"()V\", null, null);\n        mw.visitVarInsn(ALOAD, 0);\n        mw.visitMethodInsn(INVOKESPECIAL, \"java/lang/Object\", \"<init>\", \"()V\");\n        mw.visitInsn(RETURN);\n        mw.visitMaxs(1, 1);\n        mw.visitEnd();\n\n        mw = new MethodWriter(cw, ACC_PUBLIC, \"write\", \"(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;)V\", null, new String[] { \"java/io/IOException\" });\n\n        mw.visitVarInsn(ALOAD, 1); // serializer\n        mw.visitMethodInsn(INVOKEVIRTUAL, \"com/alibaba/fastjson/serializer/JSONSerializer\", \"getWriter\", \"()Lcom/alibaba/fastjson/serializer/SerializeWriter;\");\n        mw.visitVarInsn(ASTORE, 3); // out\n\n        mw.visitVarInsn(ALOAD, 2); // obj\n        mw.visitTypeInsn(CHECKCAST, getCastType(Entity.class)); // serializer\n        mw.visitVarInsn(ASTORE, 4); // obj\n        \n        mw.visitVarInsn(ALOAD, 3); // out\n        mw.visitLdcInsn(\"{\");\n        mw.visitMethodInsn(INVOKEVIRTUAL, getCastType(SerializeWriter.class), \"writeString\", \"(Ljava/lang/String;)V\");\n        \n        mw.visitVarInsn(ALOAD, 3); // out\n        mw.visitLdcInsn(\"\\\"id\\\":\");\n        mw.visitMethodInsn(INVOKEVIRTUAL, getCastType(SerializeWriter.class), \"write\", \"(Ljava/lang/String;)V\");\n        \n        mw.visitVarInsn(ALOAD, 3); // out\n        mw.visitVarInsn(ALOAD, 4); // entity\n        mw.visitMethodInsn(INVOKEVIRTUAL, getCastType(Entity.class), \"getId\", \"()I\");\n        mw.visitMethodInsn(INVOKEVIRTUAL, getCastType(SerializeWriter.class), \"writeInt\", \"(I)V\");\n        \n        mw.visitVarInsn(ALOAD, 3); // out\n        mw.visitLdcInsn(\"\\\",name\\\":\");\n        mw.visitMethodInsn(INVOKEVIRTUAL, getCastType(SerializeWriter.class), \"write\", \"(Ljava/lang/String;)V\");\n        \n        mw.visitVarInsn(ALOAD, 3); // out\n        mw.visitVarInsn(ALOAD, 4); // entity\n        mw.visitMethodInsn(INVOKEVIRTUAL, getCastType(Entity.class), \"getName\", \"()Ljava/lang/String;\");\n        mw.visitMethodInsn(INVOKEVIRTUAL, getCastType(SerializeWriter.class), \"writeString\", \"(Ljava/lang/String;)V\");\n\n        mw.visitInsn(RETURN);\n        mw.visitMaxs(3, 16);\n        mw.visitEnd();\n\n        byte[] code = cw.toByteArray();\n        FileOutputStream fos = new FileOutputStream(\"Example.class\");\n        fos.write(code);\n        fos.close();\n\n        MyClassLoader loader = new MyClassLoader(com.alibaba.fastjson.serializer.ObjectSerializer.class.getClassLoader());\n\n        Class<?> exampleClass = loader.defineClassF(\"DateSerializer\", code, 0, code.length);\n        Method[] methods = exampleClass.getMethods();\n        Object instance = exampleClass.newInstance();\n\n        SerializeWriter out = new SerializeWriter();\n        JSONSerializer serializer = new JSONSerializer(out);\n        Entity obj = new Entity();\n        methods[0].invoke(instance, serializer, obj);\n\n        System.out.println(out.toString());\n    }\n\n    String getCastType(Class<?> returnType) {\n        if (returnType.isPrimitive()) {\n            return getWrapperType(returnType);\n        } else {\n            return getAsmTypeAsString(returnType, false);\n        }\n    }\n\n    private String getWrapperType(Class<?> type) {\n        if (Integer.TYPE.equals(type)) {\n            return Integer.class.getCanonicalName().replaceAll(\"\\\\.\", \"/\");\n        } else if (Boolean.TYPE.equals(type)) {\n            return Boolean.class.getCanonicalName().replaceAll(\"\\\\.\", \"/\");\n        } else if (Character.TYPE.equals(type)) {\n            return Character.class.getCanonicalName().replaceAll(\"\\\\.\", \"/\");\n        } else if (Byte.TYPE.equals(type)) {\n            return Byte.class.getCanonicalName().replaceAll(\"\\\\.\", \"/\");\n        } else if (Short.TYPE.equals(type)) {\n            return Short.class.getCanonicalName().replaceAll(\"\\\\.\", \"/\");\n        } else if (Float.TYPE.equals(type)) {\n            return Float.class.getCanonicalName().replaceAll(\"\\\\.\", \"/\");\n        } else if (Long.TYPE.equals(type)) {\n            return Long.class.getCanonicalName().replaceAll(\"\\\\.\", \"/\");\n        } else if (Double.TYPE.equals(type)) {\n            return Double.class.getCanonicalName().replaceAll(\"\\\\.\", \"/\");\n        } else if (Void.TYPE.equals(type)) {\n            return Void.class.getCanonicalName().replaceAll(\"\\\\.\", \"/\");\n        }\n\n        throw new IllegalStateException(\"Type: \" + type.getCanonicalName() + \" is not a primitive type\");\n    }\n\n    public String getAsmTypeAsString(Class<?> parameterType, boolean wrap) {\n        if (parameterType.isArray()) {\n            if (parameterType.getComponentType().isPrimitive()) {\n                Class<?> componentType = parameterType.getComponentType();\n                return \"[\" + getPrimitiveLetter(componentType);\n            } else {\n                return \"[\" + getAsmTypeAsString(parameterType.getComponentType(), true);\n            }\n        } else {\n            if (!parameterType.isPrimitive()) {\n                String clsName = parameterType.getCanonicalName();\n\n                if (parameterType.isMemberClass()) {\n                    int lastDot = clsName.lastIndexOf(\".\");\n                    clsName = clsName.substring(0, lastDot) + \"$\" + clsName.substring(lastDot + 1);\n                }\n                if (wrap) {\n                    return \"L\" + clsName.replaceAll(\"\\\\.\", \"/\") + \";\";\n                } else {\n                    return clsName.replaceAll(\"\\\\.\", \"/\");\n                }\n            } else {\n                return getPrimitiveLetter(parameterType);\n            }\n        }\n    }\n\n    private String getPrimitiveLetter(Class<?> type) {\n        if (Integer.TYPE.equals(type)) {\n            return \"I\";\n        } else if (Void.TYPE.equals(type)) {\n            return \"V\";\n        } else if (Boolean.TYPE.equals(type)) {\n            return \"Z\";\n        } else if (Character.TYPE.equals(type)) {\n            return \"C\";\n        } else if (Byte.TYPE.equals(type)) {\n            return \"B\";\n        } else if (Short.TYPE.equals(type)) {\n            return \"S\";\n        } else if (Float.TYPE.equals(type)) {\n            return \"F\";\n        } else if (Long.TYPE.equals(type)) {\n            return \"J\";\n        } else if (Double.TYPE.equals(type)) {\n            return \"D\";\n        }\n\n        throw new IllegalStateException(\"Type: \" + type.getCanonicalName() + \" is not a primitive type\");\n    }\n\n    public static class Entity {\n\n        private int    id;\n        private String name;\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n\n    public static class MyClassLoader extends ClassLoader {\n\n        public MyClassLoader(ClassLoader parent){\n            super(parent);\n        }\n\n        public Class<?> defineClassF(String name, byte[] b, int off, int len) throws ClassFormatError {\n            return defineClass(name, b, off, len, null);\n        }\n    }\n\n    public static class Foo {\n\n        public void execute() {\n            System.out.println(\"Hello World\");\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/TestFor_iteye_resolute.java",
    "content": "package com.alibaba.json.test;\n\nimport java.io.Serializable;\nimport java.util.ArrayList;\n\nimport junit.framework.TestCase;\n\nimport org.apache.commons.lang.SerializationUtils;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestFor_iteye_resolute extends TestCase {\n\n    private static final int SIZE       = 1000;\n\n    private static final int LOOP_COUNT = 1000 * 10;\n    \n    public void test_perf() {\n        for (int i = 0; i < 10; ++i) {\n            json();\n            javaSer();\n            System.out.println();\n        }\n    }\n\n    public void json() {\n        long begin = System.currentTimeMillis();\n        int length = 0;\n        for (int i = 0; i < LOOP_COUNT; ++i) {\n            String json = JSON.toJSONString(mkTestDates(SIZE));\n            length = json.length();\n        }\n        long time = System.currentTimeMillis() - begin;\n        System.out.println(\"json time \" + time + \", len \" + length);\n        \n    }\n\n    public void javaSer() {\n        long begin = System.currentTimeMillis();\n        int length = 0;\n        for (int i = 0; i < LOOP_COUNT; ++i) {\n            byte[] bytes = SerializationUtils.serialize(mkTestDates(SIZE));\n            length = bytes.length;\n        }\n        \n        long time = System.currentTimeMillis() - begin;\n        System.out.println(\"java time \" + time + \", len \" + length);\n    }\n\n    public ArrayList<User> mkTestDates(int count) {\n        ArrayList<User> users = new ArrayList<User>();\n        for (int i = 0; i < count; i++) {\n            User user = new User(i);\n            user.setName(\"xxxxxxxxxxxxxxxxxxxxxx\");\n            users.add(user);\n        }\n        return users;\n    }\n\n    public static class User implements Serializable {\n\n        private static final long serialVersionUID = 1L;\n        private int               id;\n        private String            name;\n\n        public User(int id){\n            super();\n            this.id = id;\n        }\n\n        public int getId() {\n            return id;\n        }\n\n        public void setId(int id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/TestSysProperty.java",
    "content": "package com.alibaba.json.test;\n\nimport junit.framework.TestCase;\n\n\npublic class TestSysProperty extends TestCase {\n    public void test_0 () throws Exception {\n        System.out.println(System.getProperty(\"java.vm.name\"));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/TestUtils.java",
    "content": "package com.alibaba.json.test;\n\nimport java.lang.management.ManagementFactory;\n\nimport javax.management.MBeanServer;\nimport javax.management.ObjectName;\n\nimport com.alibaba.fastjson.util.IOUtils;\n\npublic class TestUtils {\n\n    // ****************************************************************************************\n    // * char[] version\n    // ****************************************************************************************\n\n    /**\n     * Encodes a raw byte array into a BASE64 <code>char[]</code> representation i accordance with RFC 2045.\n     * \n     * @param sArr The bytes to convert. If <code>null</code> or length 0 an empty array will be returned.\n     * @param lineSep Optional \"\\r\\n\" after 76 characters, unless end of file.<br>\n     * No line separator will be in breach of RFC 2045 which specifies max 76 per line but will be a little faster.\n     * @return A BASE64 encoded array. Never <code>null</code>.\n     */\n    private final static char[] encodeToChar(byte[] sArr, boolean lineSep) {\n        char[] CA = IOUtils.CA;\n\n        // Check special case\n        int sLen = sArr != null ? sArr.length : 0;\n        if (sLen == 0) return new char[0];\n\n        int eLen = (sLen / 3) * 3; // Length of even 24-bits.\n        int cCnt = ((sLen - 1) / 3 + 1) << 2; // Returned character count\n        int dLen = cCnt + (lineSep ? (cCnt - 1) / 76 << 1 : 0); // Length of returned array\n        char[] dArr = new char[dLen];\n\n        // Encode even 24-bits\n        for (int s = 0, d = 0, cc = 0; s < eLen;) {\n            // Copy next three bytes into lower 24 bits of int, paying attension to sign.\n            int i = (sArr[s++] & 0xff) << 16 | (sArr[s++] & 0xff) << 8 | (sArr[s++] & 0xff);\n\n            // Encode the int into four chars\n            dArr[d++] = CA[(i >>> 18) & 0x3f];\n            dArr[d++] = CA[(i >>> 12) & 0x3f];\n            dArr[d++] = CA[(i >>> 6) & 0x3f];\n            dArr[d++] = CA[i & 0x3f];\n\n            // Add optional line separator\n            if (lineSep && ++cc == 19 && d < dLen - 2) {\n                dArr[d++] = '\\r';\n                dArr[d++] = '\\n';\n                cc = 0;\n            }\n        }\n\n        // Pad and encode last bits if source isn't even 24 bits.\n        int left = sLen - eLen; // 0 - 2.\n        if (left > 0) {\n            // Prepare the int\n            int i = ((sArr[eLen] & 0xff) << 10) | (left == 2 ? ((sArr[sLen - 1] & 0xff) << 2) : 0);\n\n            // Set last four chars\n            dArr[dLen - 4] = CA[i >> 12];\n            dArr[dLen - 3] = CA[(i >>> 6) & 0x3f];\n            dArr[dLen - 2] = left == 2 ? CA[i & 0x3f] : '=';\n            dArr[dLen - 1] = '=';\n        }\n        return dArr;\n    }\n\n    // ****************************************************************************************\n    // * String version\n    // ****************************************************************************************\n\n    /**\n     * Encodes a raw byte array into a BASE64 <code>String</code> representation i accordance with RFC 2045.\n     * \n     * @param sArr The bytes to convert. If <code>null</code> or length 0 an empty array will be returned.\n     * @param lineSep Optional \"\\r\\n\" after 76 characters, unless end of file.<br>\n     * No line separator will be in breach of RFC 2045 which specifies max 76 per line but will be a little faster.\n     * @return A BASE64 encoded array. Never <code>null</code>.\n     */\n    public final static String encodeToBase64String(byte[] sArr, boolean lineSep) {\n        // Reuse char[] since we can't create a String incrementally anyway and StringBuffer/Builder would be slower.\n        return new String(encodeToChar(sArr, lineSep));\n    }\n    \n    public static long getYoungGC() {\n        try {\n            // java.lang:type=GarbageCollector,name=G1 Young Generation\n            // java.lang:type=GarbageCollector,name=G1 Old Generation\n            MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();\n            ObjectName objectName;\n            if (mbeanServer.isRegistered(new ObjectName(\"java.lang:type=GarbageCollector,name=ParNew\"))) {\n                objectName = new ObjectName(\"java.lang:type=GarbageCollector,name=ParNew\");\n            } else if (mbeanServer.isRegistered(new ObjectName(\"java.lang:type=GarbageCollector,name=Copy\"))) {\n                objectName = new ObjectName(\"java.lang:type=GarbageCollector,name=Copy\");\n            } else if (mbeanServer.isRegistered(new ObjectName(\"java.lang:type=GarbageCollector,name=G1 Young Generation\"))) {\n                objectName = new ObjectName(\"java.lang:type=GarbageCollector,name=G1 Young Generation\");\n            } else {\n                objectName = new ObjectName(\"java.lang:type=GarbageCollector,name=PS Scavenge\");\n            }\n\n            return (Long) mbeanServer.getAttribute(objectName, \"CollectionCount\");\n        } catch (Exception e) {\n            throw new RuntimeException(\"error\");\n        }\n    }\n    \n    public static long getYoungGCTime() {\n        try {\n            MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();\n            ObjectName objectName;\n            if (mbeanServer.isRegistered(new ObjectName(\"java.lang:type=GarbageCollector,name=ParNew\"))) {\n                objectName = new ObjectName(\"java.lang:type=GarbageCollector,name=ParNew\");\n            } else if (mbeanServer.isRegistered(new ObjectName(\"java.lang:type=GarbageCollector,name=Copy\"))) {\n                objectName = new ObjectName(\"java.lang:type=GarbageCollector,name=Copy\");\n            } else if (mbeanServer.isRegistered(new ObjectName(\"java.lang:type=GarbageCollector,name=G1 Young Generation\"))) {\n                objectName = new ObjectName(\"java.lang:type=GarbageCollector,name=G1 Young Generation\");\n            } else {\n                objectName = new ObjectName(\"java.lang:type=GarbageCollector,name=PS Scavenge\");\n            }\n\n            return (Long) mbeanServer.getAttribute(objectName, \"CollectionTime\");\n        } catch (Exception e) {\n            throw new RuntimeException(\"error\", e);\n        }\n    }\n\n    public static long getFullGC() {\n        try {\n            MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();\n            ObjectName objectName;\n\n            if (mbeanServer.isRegistered(new ObjectName(\"java.lang:type=GarbageCollector,name=ConcurrentMarkSweep\"))) {\n                objectName = new ObjectName(\"java.lang:type=GarbageCollector,name=ConcurrentMarkSweep\");\n            } else if (mbeanServer.isRegistered(new ObjectName(\"java.lang:type=GarbageCollector,name=MarkSweepCompact\"))) {\n                objectName = new ObjectName(\"java.lang:type=GarbageCollector,name=MarkSweepCompact\");\n            } else if (mbeanServer.isRegistered(new ObjectName(\"java.lang:type=GarbageCollector,name=G1 Old Generation\"))) {\n                objectName = new ObjectName(\"java.lang:type=GarbageCollector,name=G1 Old Generation\");\n            } else {\n                objectName = new ObjectName(\"java.lang:type=GarbageCollector,name=PS MarkSweep\");\n            }\n\n            return (Long) mbeanServer.getAttribute(objectName, \"CollectionCount\");\n        } catch (Exception e) {\n            throw new RuntimeException(\"error\");\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/TestWriteSlashAsSpecial.java",
    "content": "package com.alibaba.json.test;\n\nimport junit.framework.TestCase;\n\nimport org.junit.Assert;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\n@SuppressWarnings(\"deprecation\")\npublic class TestWriteSlashAsSpecial extends TestCase {\n\n\n    public void test_writeSlashAsSpecial() throws Exception {\n        int features = JSON.DEFAULT_GENERATE_FEATURE;\n        features = SerializerFeature.config(features, SerializerFeature.WriteSlashAsSpecial, true);\n        features = SerializerFeature.config(features, SerializerFeature.WriteTabAsSpecial, true);\n        features = SerializerFeature.config(features, SerializerFeature.DisableCircularReferenceDetect, true);\n        features = SerializerFeature.config(features, SerializerFeature.SortField, false);\n\n        Assert.assertEquals(\"\\\"\\\\/\\\"\", JSON.toJSONString(\"/\", features));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/UTF8Test.java",
    "content": "package com.alibaba.json.test;\n\nimport com.alibaba.fastjson.util.IOUtils;\nimport junit.framework.TestCase;\n\nimport java.nio.ByteBuffer;\nimport java.nio.CharBuffer;\nimport java.nio.charset.Charset;\n\n/**\n * Created by wenshao on 24/07/2017.\n */\npublic class UTF8Test extends TestCase {\n    String T0 = \"央视的报道《陆军第82集团军：聚合重塑 强军路上当先锋！》披露，从南昌起义到平江起义，从井冈山斗争到两万五千里长征，从首战平型关到历经三大战役，从穿插三所里到全歼美军北极熊团，22勇士飞夺泸定桥、18勇士强渡乌江、鏖战冀中“野八旅”、屡战屡胜“老虎连”、万岁军，一支支善战的部队，一个个滚烫的名字，熔铸成第82集团军新的灵魂。\";\n    String T1 = \"Model and actress Emily Ratajkowski would you like you to know she has wonderful abs. We don’t know this because we’re psychic, but rather can surmise this desire from her many photos she posts on Instagram. Whether it’s due to genetics, diet, great Instagram techniques, or some combination of the above, the rising star takes ample opportunity to show you what she’s got, and her fans love it.\";\n\n    Charset charset = Charset.forName(\"UTF-8\");\n    String text = new StringBuilder().append(T0).append(System.currentTimeMillis()).toString();\n    //String text = \"Model and actress Emily Ratajkowski would you like you to know she has wonderful abs. We don’t know this because we’re psychic, but rather can surmise this desire from her many photos she posts on Instagram. Whether it’s due to genetics, diet, great Instagram techniques, or some combination of the above, the rising star takes ample opportunity to show you what she’s got, and her fans love it.\";\n    char[] chars = text.toCharArray();\n    byte[] bytes = new byte[chars.length * 3];\n\n\n\n    ByteBuffer byteBuffer;\n\n    protected void setUp() throws Exception {\n        System.out.println(System.getProperty(\"java.runtime.version\"));\n        byteBuffer = ByteBuffer.allocate(text.length() * 3);\n    }\n\n    public void test_encode() throws Exception {\n\n\n//        for (int i = 0; i < 5; ++i) {\n//            f0();\n//        }\n        for (int i = 0; i < 5; ++i) {\n            f1();\n        }\n//        for (int i = 0; i < 5; ++i) {\n//            f2();\n//        }\n    }\n\n    final static int COUNT = 1000 * 1000 * 5;\n\n    private void f0() throws Exception {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < COUNT; ++i) {\n            text.getBytes(charset);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"f0 millis : \" + millis);\n    }\n\n    private void f1() throws Exception {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < COUNT; ++i) {\n            IOUtils.encodeUTF8(chars, 0, chars.length, bytes);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"f1 millis : \" + millis);\n    }\n\n    private void f2() throws Exception {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < COUNT; ++i) {\n            charset.newEncoder().encode(CharBuffer.wrap(chars));\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"f2 millis : \" + millis);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/UTF8Test_decode.java",
    "content": "package com.alibaba.json.test;\n\nimport com.alibaba.fastjson.util.IOUtils;\nimport junit.framework.TestCase;\n\nimport java.nio.ByteBuffer;\nimport java.nio.CharBuffer;\nimport java.nio.charset.Charset;\n\n/**\n * Created by wenshao on 24/07/2017.\n */\npublic class UTF8Test_decode extends TestCase {\n    String T0 = \"央视的报道《陆军第82集团军：聚合重塑 强军路上当先锋！》披露，从南昌起义到平江起义，从井冈山斗争到两万五千里长征，从首战平型关到历经三大战役，从穿插三所里到全歼美军北极熊团，22勇士飞夺泸定桥、18勇士强渡乌江、鏖战冀中“野八旅”、屡战屡胜“老虎连”、万岁军，一支支善战的部队，一个个滚烫的名字，熔铸成第82集团军新的灵魂。\";\n    String T1 = \"Model and actress Emily Ratajkowski would you like you to know she has wonderful abs. We don’t know this because we’re psychic, but rather can surmise this desire from her many photos she posts on Instagram. Whether it’s due to genetics, diet, great Instagram techniques, or some combination of the above, the rising star takes ample opportunity to show you what she’s got, and her fans love it.\";\n\n\n    Charset charset = Charset.forName(\"UTF-8\");\n\n\n    char[] chars;\n    byte[] bytes;\n\n\n    CharBuffer charBuffer;\n\n    public void setUp() throws Exception {\n        System.out.println(System.getProperty(\"java.runtime.version\"));\n    }\n\n\n    public void test_encode() throws Exception {\n        String text = new StringBuilder().append(T0).append(System.currentTimeMillis()).toString();\n        bytes = text.getBytes(charset);\n        chars = new char[bytes.length];\n        charBuffer = CharBuffer.allocate(bytes.length);\n\n        for (int i = 0; i < 10; ++i) {\n            long start = System.currentTimeMillis();\n            f0(); // 764\n//            f1(); // 695\n//            f2(); // 975\n            long millis = System.currentTimeMillis() - start;\n            System.out.println(\"millis : \" + millis);\n        }\n    }\n\n    public void test_encode_en() throws Exception {\n        String text = new StringBuilder().append(T1).append(System.currentTimeMillis()).toString();\n        bytes = text.getBytes(charset);\n        chars = new char[bytes.length];\n        charBuffer = CharBuffer.allocate(bytes.length);\n\n        for (int i = 0; i < 10; ++i) {\n            long start = System.currentTimeMillis();\n            f0(); // 407 394\n//            f1(); // 1296 1058\n//            f2(); // 615 635\n            long millis = System.currentTimeMillis() - start;\n            System.out.println(\"millis : \" + millis);\n        }\n    }\n\n    private void f0() throws Exception {\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            new String(bytes, charset);\n        }\n    }\n\n    private void f1() throws Exception {\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            int len = IOUtils.decodeUTF8(bytes, 0, bytes.length, chars);\n            new String(chars, 0, len);\n        }\n    }\n\n    private void f2() throws Exception {\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            charset.newDecoder().decode(ByteBuffer.wrap(bytes));\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/VansParseTest.java",
    "content": "package com.alibaba.json.test;\n\n/**\n * Created by wenshao on 11/01/2017.\n */\npublic class VansParseTest {\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/a/A20170327_0.java",
    "content": "package com.alibaba.json.test.a;\n\nimport java.lang.reflect.Type;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.ParseContext;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\nimport junit.framework.TestCase;\n\nimport java.math.BigDecimal;\n\n/**\n * Created by wenshao on 27/03/2017.\n */\npublic class A20170327_0 extends TestCase {\n    public void test_0() throws Exception {\n        String s = \"{\\\"itemCurrentAmount\\\":{\\\"amount\\\":12.50,\\\"cent\\\":1250,\\\"centFactor\\\":100,\\\"currency\\\":\\\"CNY\\\",\\\"currencyCode\\\":\\\"CNY\\\"},\\\"itemDiscountAmount\\\":{\\\"$ref\\\":\\\"$.itemCurrentAmount\\\"}}\";\n        //String s = \"{\\\"itemDiscountAmount\\\":{\\\"$ref\\\":\\\"$.itemCurrentAmount\\\"},\\\"itemCurrentAmount\\\":{\\\"amount\\\":12.50,\\\"cent\\\":1250,\\\"centFactor\\\":100,\\\"currency\\\":\\\"CNY\\\",\\\"currencyCode\\\":\\\"CNY\\\"}}\";\n\n        ParserConfig config = new ParserConfig();\n        config.putDeserializer(Money.class, new MoneyDeserialize());\n\n        Model model = JSON.parseObject(s, Model.class, config);\n        assertSame(model.itemCurrentAmount, model.itemDiscountAmount);\n        //JSONObject jsonObject = (JSONObject) JSON.parse(s);\n        //assertSame(jsonObject.get(\"itemCurrentAmount\"), jsonObject.get(\"itemDiscountAmount\"));\n    }\n\n    public static class Model {\n        public Money itemCurrentAmount;\n        public Money itemDiscountAmount;\n    }\n\n    public static class Money {\n        public BigDecimal amount;\n        public long cent;\n        public int centFactor;\n        public String currency;\n        public String currencyCode;\n    }\n\n    public static class MoneyDeserialize implements ObjectDeserializer {\n\n        @SuppressWarnings(\"unchecked\")\n        public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n            ParseContext cxt = parser.getContext();\n            Object object = parser.parse(fieldName);\n            if (object == null) {\n                return null;\n            }\n            String moneyCentStr = null;\n            if (object instanceof JSONObject) {//历史数据兼容\n                JSONObject jsonObject = (JSONObject) object;\n                moneyCentStr = jsonObject.getString(\"cent\");\n            } else if (object instanceof String) {\n                moneyCentStr = (String) object;\n            } else {\n                throw new RuntimeException(\"money属性反序列化失败，不支持的类型：\" + object.getClass().getName());\n            }\n            if (moneyCentStr.length() != 0) {\n                Money m = new Money();\n                m.cent = Long.valueOf(moneyCentStr);\n                return (T) m;\n            }\n            return null;\n        }\n\n        public int getFastMatchToken() {\n            return 0;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/a/Alipay1206.java",
    "content": "package com.alibaba.json.test.a;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com.alibaba.fastjson.JSONObject;\nimport junit.framework.TestCase;\nimport org.apache.commons.io.FileUtils;\n\nimport java.io.File;\n\n/**\n * Created by wenshao on 06/12/2016.\n */\npublic class Alipay1206 extends TestCase {\n    public void test_for_alipay() throws Exception {\n        File file = new File(\"/Users/wenshao/Downloads/x.txt\");\n        String text = FileUtils.readFileToString(file);\n        JSONObject root = JSON.parseObject(text);\n\n        JSONObject resultObj = root.getJSONObject(\"resultObj\");\n        assertNotNull(resultObj);\n\n        JSONArray conditionGroupItemList = resultObj.getJSONArray(\"conditionGroupItemList\");\n        assertNotNull(conditionGroupItemList);\n\n        JSONObject conditionGroup = conditionGroupItemList.getJSONObject(0).getJSONObject(\"conditionGroup\");\n        assertNotNull(conditionGroup);\n\n        JSONArray recordList = conditionGroup.getJSONArray(\"recordList\");\n        assertNotNull(recordList);\n\n        JSONArray conditionItemList = recordList.getJSONObject(0).getJSONArray(\"conditionItemList\");\n        assertNotNull(conditionItemList);\n\n        JSONObject condition = conditionItemList.getJSONObject(18).getJSONObject(\"condition\");\n        assertNotNull(condition);\n\n        JSONArray conditionConstraint = condition.getJSONArray(\"conditionConstraint\");\n        assertNotNull(conditionConstraint);\n\n        JSONObject constraintOptionalRecordMap = conditionConstraint.getJSONObject(0).getJSONObject(\"constraintOptionalRecordMap\");\n        assertNotNull(constraintOptionalRecordMap);\n\n        System.out.println(constraintOptionalRecordMap);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/a/AlipayJSONPathReplace.java",
    "content": "package com.alibaba.json.test.a;\n\nimport com.alibaba.fastjson.JSONPath;\nimport com.fasterxml.jackson.jaxrs.json.annotation.JSONP;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 06/02/2017.\n */\npublic class AlipayJSONPathReplace extends TestCase {\n    public void test_jsonpath() throws Exception {\n        Model model = new Model();\n        JSONPath path = JSONPath.compile(\"/value/id\");\n        path.set(model, 123);\n        assertNotNull(model.value);\n    }\n\n    public static class Model {\n        public Value value;\n    }\n\n    public static class Value {\n        public int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/a/CompilerTest.java",
    "content": "package com.alibaba.json.test.a;\n\nimport com.alibaba.fastjson.JSON;\nimport junit.framework.TestCase;\n\nimport java.io.*;\n\n/**\n * Created by wenshao on 04/02/2017.\n */\npublic class CompilerTest extends TestCase {\n    public void test_for_compiler() throws Exception {\n        byte[] bytes;\n        {\n            Model model = new Model();\n            model.id = 123;\n\n            bytes = toBytes(model);\n        }\n\n        perf(bytes);\n        for (int i = 0; i < 10; ++i) {\n            long start = System.currentTimeMillis();\n            perf(bytes);\n            long millis = System.currentTimeMillis() - start;\n            System.out.println(\"millis : \" + millis);\n        }\n    }\n\n    private void perf(byte[] bytes) throws IOException, ClassNotFoundException {\n        for (int i = 0; i < 1000; ++i) {\n            ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes));\n            Model model = (Model) in.readObject();\n            assertEquals(123, model.id);\n        }\n    }\n\n    private byte[] toBytes(Model model) throws IOException {\n        ByteArrayOutputStream byteOut = new ByteArrayOutputStream();\n        ObjectOutputStream out = new ObjectOutputStream(byteOut);\n\n        out.writeObject(model);\n        out.flush();\n        byte[] bytes = byteOut.toByteArray();\n        out.close();\n        return bytes;\n    }\n\n    public static class Model implements Serializable {\n        public int id;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/a/Group.java",
    "content": "package com.alibaba.json.test.a;\r\n\r\nimport java.util.List;\r\n\r\npublic class Group {\r\n\r\n    List<User[]> uulist;\r\n\r\n    public List<User[]> getUulist() {\r\n        return uulist;\r\n    }\r\n\r\n    public void setUulist(List<User[]> uulist) {\r\n        this.uulist = uulist;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/a/GsonTest.java",
    "content": "package com.alibaba.json.test.a;\n\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.google.gson.Gson;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 04/02/2017.\n */\npublic class GsonTest extends TestCase {\n    public void test_0() throws Exception {\n        String text = \"{\\\"loader\\\":\\\"com.sun.org.apache.bcel.internal.util.ClassLoader\\\"}\";\n\n//        Gson gson = new Gson();\n//        gson.fromJson(text, Model.class);\n\n        ObjectMapper mapper = new ObjectMapper();\n        mapper.readValue(text, Model.class);\n    }\n\n    public static class Model {\n        public ClassLoader loader;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/a/IncomingDataPointBenchmark.java",
    "content": "package com.alibaba.json.test.a;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.json.bvtVO.IncomingDataPoint;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class IncomingDataPointBenchmark {\n    static String json = \"[[\\\"DataAdaptor.LbMultiGroupPersonalityDataAdaptor.stddev.aggregate_sum\\\",\\\"1501812639932\\\",\\\"95.52667633256902\\\",{\\\"appName\\\":\\\"aladdin\\\",\\\"hostIdc\\\":\\\"et2\\\",\\\"hostunit\\\":\\\"CENTER\\\",\\\"nodegroup\\\":\\\"aladdin_prehost\\\",\\\"idc\\\":\\\"ET2\\\",\\\"agg_version\\\":\\\"100\\\",\\\"group\\\":\\\"DEFAULT\\\"},\\\"\\\",\\\"\\\",\\\"\\\"]]\";\n\n    public static void main(String[] args) throws Exception {\n        for (int i = 0; i < 10; ++i) {\n            perf();\n        }\n    }\n\n    public static void perf() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            JSON.parseArray(json, IncomingDataPoint.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/a/IncomingDataPointBenchmark_file.java",
    "content": "package com.alibaba.json.test.a;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.json.bvtVO.IncomingDataPoint;\nimport org.apache.commons.io.FileUtils;\nimport org.apache.commons.io.IOUtils;\n\nimport java.io.File;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class IncomingDataPointBenchmark_file {\n    static String json;\n\n    public static void main(String[] args) throws Exception {\n        File file = new File(\"/Users/wenshao/Downloads/datalist\");\n        json = FileUtils.readFileToString(file);\n        for (int i = 0; i < 10; ++i) {\n            perf();\n        }\n    }\n\n    public static void perf() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000; ++i) {\n            JSON.parseArray(json, IncomingDataPoint.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"IncomingDataPoint millis : \" + millis);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/a/IncomingDataPointBenchmark_file_double.java",
    "content": "package com.alibaba.json.test.a;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.json.bvtVO.IncomingDataPoint;\nimport com.alibaba.json.bvtVO.IncomingDataPoint_double;\nimport org.apache.commons.io.FileUtils;\n\nimport java.io.File;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class IncomingDataPointBenchmark_file_double {\n    static String json;\n\n    public static void main(String[] args) throws Exception {\n        File file = new File(\"/Users/wenshao/Downloads/datalist_double\");\n        json = FileUtils.readFileToString(file);\n        for (int i = 0; i < 10; ++i) {\n            perf();\n        }\n    }\n\n    public static void perf() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000; ++i) {\n            JSON.parseArray(json, IncomingDataPoint_double.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"IncomingDataPoint_double millis : \" + millis);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/a/IncomingDataPointBenchmark_file_ext_double.java",
    "content": "package com.alibaba.json.test.a;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.json.bvtVO.IncomingDataPoint_double;\nimport com.alibaba.json.bvtVO.IncomingDataPoint_ext_double;\nimport org.apache.commons.io.FileUtils;\n\nimport java.io.File;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class IncomingDataPointBenchmark_file_ext_double {\n    static String json;\n\n    public static void main(String[] args) throws Exception {\n        File file = new File(\"/Users/wenshao/Downloads/datalist_double\");\n        json = FileUtils.readFileToString(file);\n        for (int i = 0; i < 10; ++i) {\n            perf();\n        }\n    }\n\n    public static void perf() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000; ++i) {\n            JSON.parseArray(json, IncomingDataPoint_ext_double.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"IncomingDataPoint_double millis : \" + millis);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/a/JTest.java",
    "content": "package com.alibaba.json.test.a;\r\n\r\n\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\n\r\npublic class JTest {\r\n\r\n\t/**\r\n\t * @param args\r\n\t */\r\n\tpublic static void main(String[] args) {\r\n\t\tList<User[]> list = new ArrayList<User[]>();\r\n\t\tUser u1 = new User(1, \"111111\");\r\n\t\tUser u2 = new User(2, \"222222\");\r\n\t\tUser u3 = new User(3, \"33333\");\r\n\t\tUser u4 = new User(4, \"4444\");\r\n\t\tlist.add(new User[] { u1, u2 });\r\n\t\tlist.add(new User[] { u3, u4 });\r\n\t\tGroup clz = new Group();\r\n\t\tclz.setUulist(list);\r\n\t\tString json = JSON.toJSONString(clz);\r\n\t\tSystem.out.println(json);\r\n\t\tGroup clz1 = JSON.parseObject(json, Group.class);\r\n\t\tSystem.out.println(clz1.getUulist().get(1)[1].getName());\r\n\t}\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/a/SpecialTest.java",
    "content": "package com.alibaba.json.test.a;\n\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class SpecialTest {\n    \n    public static void main(String[] args) throws Exception {\n        \n        int count = 0;\n        for (int i = 0; i < 1000; ++i) {\n            char ch = (char) i;\n            if(isSpecial(ch, 0)) {\n                count++;\n            }\n        }\n        System.out.println(count);\n    }\n    static boolean isSpecial(char ch, int features) {\n        // if (ch > ']') {\n        // return false;\n        // }\n        \n        if (ch == ' ') { // 32\n            return false;\n        }\n\n        if (ch == '/') { // 47\n            return SerializerFeature.isEnabled(features, SerializerFeature.WriteSlashAsSpecial);\n        }\n\n        if (ch > '#' // 35\n            && ch != '\\\\' // 92\n            ) {\n            return false;\n        }\n\n        if (ch <= 0x1F // 31\n                || ch == '\\\\' // 92\n                || ch == '\"' // 34\n                ) {\n            return true;\n        }\n\n        return false;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/a/User.java",
    "content": "package com.alibaba.json.test.a;\r\n\r\n\r\npublic class User{\r\n\tpublic User() {\r\n\t}\r\n\tpublic User(int age, String name) {\r\n\t\tsuper();\r\n\t\tthis.age = age;\r\n\t\tthis.name = name;\r\n\t}\r\n\r\n\tprivate int age;\r\n\tprivate String name;\r\n\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn \"User [age=\" + age + \", name=\" + name + \"]\";\r\n\t}\r\n\r\n\tpublic int getAge() {\r\n\t\treturn age;\r\n\t}\r\n\r\n\tpublic void setAge(int age) {\r\n\t\tthis.age = age;\r\n\t}\r\n\r\n\tpublic String getName() {\r\n\t\treturn name;\r\n\t}\r\n\r\n\tpublic void setName(String name) {\r\n\t\tthis.name = name;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/a/VRTest.java",
    "content": "package com.alibaba.json.test.a;\n\n/**\n * Created by wenshao on 11/01/2017.\n */\npublic class VRTest {\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/a/WhiteSpaceTest.java",
    "content": "package com.alibaba.json.test.a;\n\nimport com.alibaba.fastjson.util.IOUtils;\n\npublic class WhiteSpaceTest {\n    public static void main(String[] args) throws Exception {\n        for (int i = 0; i < 3; ++i) {\n            perf();\n        }\n        //ch < IOUtils.whitespaceFlags.length && IOUtils.whitespaceFlags[ch]\n    }\n\n    protected static void perf() {\n        int count = 0;\n\n        long startMillis = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 200; ++i) {\n            for (char ch = 0; ch < 10000; ++ch) {\n                \n//                boolean whitespace = c < 33 && (4294981376L & (1L << c)) != 0;\n//                boolean whitespace = c == ' ' || c == '\\r' || c == '\\n' || c == '\\t' || c == '\\f' || c == '\\b';\n                  boolean whitespace = ch <= ' ' && (ch == ' ' || ch == '\\r' || ch == '\\n' || ch == '\\t' || ch == '\\f' || ch == '\\b');\n                if (whitespace) {\n                    count++;\n                }\n//                if (ch < IOUtils.whitespaceFlags.length && IOUtils.whitespaceFlags[ch]) {\n//                    count++;\n//                }\n//                if (c <= ' ' && (c == ' ' || c == '\\r' || c == '\\n' || c == '\\t' || c == '\\f' || c == '\\b')) {\n//                    count++;\n//                }\n            }\n        }\n        \n        long endMillis = System.currentTimeMillis();\n        long millis = endMillis - startMillis;\n        System.out.println(\"millis : \" + millis + \", count \" + count);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/BenchmarkCase.java",
    "content": "package com.alibaba.json.test.benchmark;\r\n\r\nimport com.alibaba.json.test.codec.Codec;\r\n\r\npublic abstract class BenchmarkCase {\r\n\r\n    private final String name;\r\n\r\n    public BenchmarkCase(String name){\r\n        super();\r\n        this.name = name;\r\n    }\r\n\r\n    public String getName() {\r\n        return name;\r\n    }\r\n    \r\n    public void init(Codec codec) throws Exception {\r\n        \r\n    }\r\n    \r\n    public abstract void execute(Codec codec) throws Exception;\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/BenchmarkExecutor.java",
    "content": "package com.alibaba.json.test.benchmark;\r\n\r\nimport java.lang.management.ManagementFactory;\r\nimport java.text.NumberFormat;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\nimport javax.management.MBeanServer;\r\nimport javax.management.ObjectName;\r\n\r\nimport com.alibaba.json.test.codec.Codec;\r\n\r\npublic class BenchmarkExecutor {\r\n\r\n    private int                       loopCount    = 1000;\r\n    private int                       executeCount = 10;\r\n\r\n    private final List<Codec>         codecList    = new ArrayList<Codec>();\r\n    private final List<BenchmarkCase> caseList     = new ArrayList<BenchmarkCase>();\r\n\r\n    public List<BenchmarkCase> getCaseList() {\r\n        return caseList;\r\n    }\r\n\r\n    public List<Codec> getCodecList() {\r\n        return codecList;\r\n    }\r\n\r\n    public int getLoopCount() {\r\n        return loopCount;\r\n    }\r\n\r\n    public int getExecuteCount() {\r\n        return executeCount;\r\n    }\r\n\r\n    public void setExecuteCount(int executeCount) {\r\n        this.executeCount = executeCount;\r\n    }\r\n\r\n    public void setLoopCount(int loopCount) {\r\n        this.loopCount = loopCount;\r\n    }\r\n\r\n    public void execute() {\r\n    \tSystem.out.println(System.getProperty(\"java.vm.name\") + \" \" + System.getProperty(\"java.runtime.version\"));\r\n    \t\r\n        for (BenchmarkCase benchmarkCase : caseList) {\r\n            for (Codec codec : codecList) {\r\n                try {\r\n                    benchmarkCase.init(codec);\r\n                } catch (Exception e) {\r\n                    e.printStackTrace();\r\n                    break;\r\n                }\r\n                \r\n                for (int i = 0; i < executeCount; ++i) {\r\n                    Result result = executeLoop(codec, benchmarkCase);\r\n                    handleResult(codec, result);\r\n                }\r\n                System.out.println();\r\n            }\r\n        }\r\n    }\r\n\r\n    public void handleResult(Codec codec, Result result) {\r\n        if (result.getError() != null) {\r\n            result.getError().printStackTrace();\r\n            return;\r\n        }\r\n        NumberFormat format = NumberFormat.getInstance();\r\n        System.out.println(result.getName() + \"\\t\" + codec.getName() + \"\\t\" + format.format(result.getMillis()) + \"\\tYGC \" + result.getYoungGC()\r\n                           + \"\\tYGCT \" + result.getYoungGCTime());\r\n    }\r\n\r\n    private Result executeLoop(Codec codec, BenchmarkCase benchmarkCase) {\r\n        long startMillis = System.currentTimeMillis();\r\n        long startYoungGC = getYoungGC();\r\n        long startYoungGCTime = getYoungGCTime();\r\n        long startFullGC = getFullGC();\r\n\r\n        Throwable error = null;\r\n        try {\r\n            for (int i = 0; i < loopCount; ++i) {\r\n                benchmarkCase.execute(codec);\r\n            }\r\n        } catch (Throwable e) {\r\n            error = e;\r\n        }\r\n        long time = System.currentTimeMillis() - startMillis;\r\n        long youngGC = getYoungGC() - startYoungGC;\r\n        long youngGCTime = getYoungGCTime() - startYoungGCTime;\r\n        long fullGC = getFullGC() - startFullGC;\r\n\r\n        Result result = new Result();\r\n        result.setName(benchmarkCase.getName());\r\n        result.setMillis(time);\r\n        result.setYoungGC(youngGC);\r\n        result.setYoungGCTime(youngGCTime);\r\n        result.setFullGC(fullGC);\r\n        result.setError(error);\r\n\r\n        return result;\r\n    }\r\n\r\n    public long getYoungGC() {\r\n        try {\r\n        \t// java.lang:type=GarbageCollector,name=G1 Young Generation\r\n        \t// java.lang:type=GarbageCollector,name=G1 Old Generation\r\n            MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();\r\n            ObjectName objectName;\r\n            if (mbeanServer.isRegistered(new ObjectName(\"java.lang:type=GarbageCollector,name=ParNew\"))) {\r\n                objectName = new ObjectName(\"java.lang:type=GarbageCollector,name=ParNew\");\r\n            } else if (mbeanServer.isRegistered(new ObjectName(\"java.lang:type=GarbageCollector,name=Copy\"))) {\r\n                objectName = new ObjectName(\"java.lang:type=GarbageCollector,name=Copy\");\r\n            } else if (mbeanServer.isRegistered(new ObjectName(\"java.lang:type=GarbageCollector,name=G1 Young Generation\"))) {\r\n                objectName = new ObjectName(\"java.lang:type=GarbageCollector,name=G1 Young Generation\");\r\n            } else {\r\n                objectName = new ObjectName(\"java.lang:type=GarbageCollector,name=PS Scavenge\");\r\n            }\r\n\r\n            return (Long) mbeanServer.getAttribute(objectName, \"CollectionCount\");\r\n        } catch (Exception e) {\r\n            throw new RuntimeException(\"error\");\r\n        }\r\n    }\r\n    \r\n    public long getYoungGCTime() {\r\n        try {\r\n            MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();\r\n            ObjectName objectName;\r\n            if (mbeanServer.isRegistered(new ObjectName(\"java.lang:type=GarbageCollector,name=ParNew\"))) {\r\n                objectName = new ObjectName(\"java.lang:type=GarbageCollector,name=ParNew\");\r\n            } else if (mbeanServer.isRegistered(new ObjectName(\"java.lang:type=GarbageCollector,name=Copy\"))) {\r\n                objectName = new ObjectName(\"java.lang:type=GarbageCollector,name=Copy\");\r\n            } else if (mbeanServer.isRegistered(new ObjectName(\"java.lang:type=GarbageCollector,name=G1 Young Generation\"))) {\r\n                objectName = new ObjectName(\"java.lang:type=GarbageCollector,name=G1 Young Generation\");\r\n            } else {\r\n                objectName = new ObjectName(\"java.lang:type=GarbageCollector,name=PS Scavenge\");\r\n            }\r\n\r\n            return (Long) mbeanServer.getAttribute(objectName, \"CollectionTime\");\r\n        } catch (Exception e) {\r\n            throw new RuntimeException(\"error\", e);\r\n        }\r\n    }\r\n\r\n    public long getFullGC() {\r\n        try {\r\n            MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();\r\n            ObjectName objectName;\r\n\r\n            if (mbeanServer.isRegistered(new ObjectName(\"java.lang:type=GarbageCollector,name=ConcurrentMarkSweep\"))) {\r\n                objectName = new ObjectName(\"java.lang:type=GarbageCollector,name=ConcurrentMarkSweep\");\r\n            } else if (mbeanServer.isRegistered(new ObjectName(\"java.lang:type=GarbageCollector,name=MarkSweepCompact\"))) {\r\n                objectName = new ObjectName(\"java.lang:type=GarbageCollector,name=MarkSweepCompact\");\r\n            } else if (mbeanServer.isRegistered(new ObjectName(\"java.lang:type=GarbageCollector,name=G1 Old Generation\"))) {\r\n                objectName = new ObjectName(\"java.lang:type=GarbageCollector,name=G1 Old Generation\");\r\n            } else {\r\n                objectName = new ObjectName(\"java.lang:type=GarbageCollector,name=PS MarkSweep\");\r\n            }\r\n\r\n            return (Long) mbeanServer.getAttribute(objectName, \"CollectionCount\");\r\n        } catch (Exception e) {\r\n            throw new RuntimeException(\"error\");\r\n        }\r\n    }\r\n\r\n    public static class Result {\r\n\r\n        private String    name;\r\n        private long      millis;\r\n        private long      youngGC;\r\n        private long      youngGCTime;\r\n        private long      fullGC;\r\n        private Throwable error;\r\n\r\n        public String getName() {\r\n            return name;\r\n        }\r\n\r\n        public void setName(String name) {\r\n            this.name = name;\r\n        }\r\n\r\n        public long getMillis() {\r\n            return millis;\r\n        }\r\n\r\n        public void setMillis(long millis) {\r\n            this.millis = millis;\r\n        }\r\n\r\n        public long getYoungGC() {\r\n            return youngGC;\r\n        }\r\n\r\n        public void setYoungGC(long youngGC) {\r\n            this.youngGC = youngGC;\r\n        }\r\n        \r\n        public long getYoungGCTime() {\r\n            return youngGCTime;\r\n        }\r\n\r\n        public void setYoungGCTime(long youngGCTime) {\r\n            this.youngGCTime = youngGCTime;\r\n        }\r\n\r\n        public long getFullGC() {\r\n            return fullGC;\r\n        }\r\n\r\n        public void setFullGC(long fullGC) {\r\n            this.fullGC = fullGC;\r\n        }\r\n\r\n        public Throwable getError() {\r\n            return error;\r\n        }\r\n\r\n        public void setError(Throwable error) {\r\n            this.error = error;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/BenchmarkMain.java",
    "content": "package com.alibaba.json.test.benchmark;\n\nimport com.alibaba.json.test.benchmark.encode.*;\nimport com.alibaba.json.test.benchmark.decode.*;\nimport com.alibaba.json.test.codec.*;\n\npublic class BenchmarkMain {\n    public static void main(String[] args) throws Exception {\n         // 注意，byte[]在jackson中是使用base64编码的，不正确的。\n\n        BenchmarkExecutor executor = new BenchmarkExecutor();\n        executor.setExecuteCount(10);\n//        executor.getCodecList().add(new FastjsonManualCodec());\n        executor.getCodecList().add(new FastjsonCodec());\n//        executor.getCodecList().add(new FastjsonBeanToArrayCodec());\n//        executor.getCodecList().add(new FastjsonGenCodec());\n//        executor.getCodecList().add(new FastjsonBeanToArrayCodec());\n//        executor.getCodecList().add(new JacksonCodec());\n//        executor.getCodecList().add(new Jackson2Codec());\n//        executor.getCodecList().add(new Jackson2AfterBurnCodec());\n        //\n        // executor.getCodecList().add(new SimpleJsonCodec());\n        // executor.getCodecList().add(new JsonLibCodec());\n        // executor.getCodecList().add(new JsonSmartCodec());\n\n        executor.setLoopCount(1000 * 1000 * 1);\n\n//        executor.getCaseList().add(new TradeObjectParse());\n//        executor.getCaseList().add(new EishayDecodeBytes());\n//        executor.getCaseList().add(new EishayEncodeOutputStream());\n//        executor.getCaseList().add(new EishayEncodeToBytes());\n         executor.getCaseList().add(new EishayDecode()); // 1069\n                                                         //JDK8_162 1094\n                                                         //JDK9_01  1214\n                                                         //JDK9_04  1252\n                                                         //JDK10    1088\n//         executor.getCaseList().add(new EishayDecodeByClassName());\n//         executor.getCaseList().add(new EishayTreeDecode());\n//         executor.getCaseList().add(new EishayEncode());\n//         executor.getCaseList().add(new EishayEncodeManual());\n        // executor.getCaseList().add(new IntArray1000Decode());\n        // executor.getCaseList().add(new StringArray1000Decode());\n        // executor.getCaseList().add(new Map1000StringDecode());\n        // executor.getCaseList().add(new Entity100StringDecode());\n\n        // executor.getCaseList().add(new ListBoolean1000Encode());\n        // executor.getCaseList().add(new ArrayBoolean1000Encode());\n        // executor.getCaseList().add(new IntArray1000Decode());\n        // executor.getCaseList().add(new StringArray1000Decode());\n        // executor.getCaseList().add(new GroupEncode());\n        // executor.getCaseList().add(new CategoryEncode());\n        // executor.getCaseList().add(new GroupEncode());\n        // executor.getCaseList().add(new Map1Decode());\n        // executor.getCaseList().add(new Entity100IntDecode());\n        // executor.getCaseList().add(new Entity100StringDecode());\n        // executor.getCaseList().add(new Entity100IntEncode());\n        // executor.getCaseList().add(new ArrayByte1000Encode());\n        // executor.getCaseList().add(new ArrayInt1000Encode());\n        // executor.getCaseList().add(new ArrayLong1000Encode());\n        // executor.getCaseList().add(new ArrayString1000Encode());\n        // executor.getCaseList().add(new ArrayEmptyList1000Encode());\n        // executor.getCaseList().add(new ArrayEmptyMap1000Encode());\n        // executor.getCaseList().add(new ArrayObjectEmptyMap1000Encode());\n        // executor.getCaseList().add(new Map1000Encode());\n\n        executor.execute();\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/BenchmarkMain_EishayDecode.java",
    "content": "package com.alibaba.json.test.benchmark;\n\nimport java.lang.management.ManagementFactory;\nimport java.util.List;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.json.test.TestUtils;\nimport com.alibaba.json.test.benchmark.decode.EishayDecodeBytes;\n\nimport data.media.MediaContent;\n\npublic class BenchmarkMain_EishayDecode {\n\n    public static void main(String[] args) throws Exception {\n        System.out.println(System.getProperty(\"java.vm.name\") + \" \" + System.getProperty(\"java.runtime.version\"));\n        List<String> arguments = ManagementFactory.getRuntimeMXBean().getInputArguments();\n        System.out.println(arguments);\n\n        String text = EishayDecodeBytes.instance.getText();\n        System.out.println(text);\n        \n        for (int i = 0; i < 10; ++i) {\n            perf(text);\n        }\n    }\n\n    static long perf(String text) {\n        long startYGC = TestUtils.getYoungGC();\n        long startYGCTime = TestUtils.getYoungGCTime();\n        long startFGC = TestUtils.getFullGC();\n\n        long startMillis = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            decode(text);\n        }\n        long millis = System.currentTimeMillis() - startMillis;\n\n        long ygc = TestUtils.getYoungGC() - startYGC;\n        long ygct = TestUtils.getYoungGCTime() - startYGCTime;\n        long fgc = TestUtils.getFullGC() - startFGC;\n\n        System.out.println(\"decode\\t\" + millis + \", ygc \" + ygc + \", ygct \" + ygct + \", fgc \" + fgc);\n        return millis;\n    }\n\n    static void decode(String text) {\n        MediaContent content = JSON.parseObject(text, MediaContent.class);\n        \n//        JSON.parseObject(text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/BenchmarkMain_EishayDecode_WriteAsArray.java",
    "content": "package com.alibaba.json.test.benchmark;\n\nimport java.lang.management.ManagementFactory;\nimport java.util.List;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.json.test.TestUtils;\nimport com.alibaba.json.test.benchmark.decode.EishayDecodeBytes;\n\nimport data.media.Image;\nimport data.media.Media;\nimport data.media.MediaContent;\nimport data.media.writeAsArray.ImageSerializer;\nimport data.media.writeAsArray.MediaContentDeserializer;\nimport data.media.writeAsArray.MediaContentSerializer;\nimport data.media.writeAsArray.MediaSerializer;\n\npublic class BenchmarkMain_EishayDecode_WriteAsArray {\n\n    public static void main(String[] args) throws Exception {\n//        SerializeConfig config = SerializeConfig.getGlobalInstance();\n//        config.put(MediaContent.class, new MediaContentSerializer());\n//        config.put(Media.class, new MediaSerializer());\n//        config.put(Image.class, new ImageSerializer());\n\n//        ParserConfig.getGlobalInstance().putDeserializer(MediaContent.class, new MediaContentDeserializer());\n        \n        System.out.println(System.getProperty(\"java.vm.name\") + \" \" + System.getProperty(\"java.runtime.version\"));\n        List<String> arguments = ManagementFactory.getRuntimeMXBean().getInputArguments();\n        System.out.println(arguments);\n\n        String text = JSON.toJSONString(EishayDecodeBytes.instance.getContent(), SerializerFeature.BeanToArray);\n        System.out.println(text);\n        \n        for (int i = 0; i < 10; ++i) {\n            perf(text);\n        }\n    }\n\n    static long perf(String text) {\n        long startYGC = TestUtils.getYoungGC();\n        long startYGCTime = TestUtils.getYoungGCTime();\n        long startFGC = TestUtils.getFullGC();\n\n        long startMillis = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            decode(text);\n        }\n        long millis = System.currentTimeMillis() - startMillis;\n\n        long ygc = TestUtils.getYoungGC() - startYGC;\n        long ygct = TestUtils.getYoungGCTime() - startYGCTime;\n        long fgc = TestUtils.getFullGC() - startFGC;\n\n        System.out.println(\"decode\\t\" + millis + \", ygc \" + ygc + \", ygct \" + ygct + \", fgc \" + fgc);\n        return millis;\n    }\n\n    static void decode(String text) {\n        MediaContent content = JSON.parseObject(text, MediaContent.class, Feature.SupportArrayToBean);\n        \n//        JSON.parseObject(text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/BenchmarkMain_EishayEncode.java",
    "content": "package com.alibaba.json.test.benchmark;\n\nimport java.lang.management.ManagementFactory;\nimport java.util.List;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.json.test.TestUtils;\nimport com.alibaba.json.test.benchmark.decode.EishayDecodeBytes;\n\nimport data.media.MediaContent;\n\npublic class BenchmarkMain_EishayEncode {\n\n    public static void main(String[] args) throws Exception {\n        System.out.println(System.getProperty(\"java.vm.name\") + \" \" + System.getProperty(\"java.runtime.version\"));\n        List<String> arguments = ManagementFactory.getRuntimeMXBean().getInputArguments();\n        System.out.println(arguments);\n\n        MediaContent content = EishayDecodeBytes.instance.getContent();\n        String text = encode(content);\n        System.out.println(text);\n        \n        for (int i = 0; i < 10; ++i) {\n            perf(text);\n        }\n    }\n\n    static long perf(Object obj) {\n        long startYGC = TestUtils.getYoungGC();\n        long startYGCTime = TestUtils.getYoungGCTime();\n        long startFGC = TestUtils.getFullGC();\n\n        long startMillis = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            encode(obj);\n        }\n        long millis = System.currentTimeMillis() - startMillis;\n\n        long ygc = TestUtils.getYoungGC() - startYGC;\n        long ygct = TestUtils.getYoungGCTime() - startYGCTime;\n        long fgc = TestUtils.getFullGC() - startFGC;\n\n        System.out.println(\"encode\\t\" + millis + \", ygc \" + ygc + \", ygct \" + ygct + \", fgc \" + fgc);\n        return millis;\n    }\n\n    static String encode(Object text) {\n        return JSON.toJSONString(text, SerializerFeature.BeanToArray);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/BenchmarkMain_EishayEncode_WriteAsArray.java",
    "content": "package com.alibaba.json.test.benchmark;\n\nimport java.lang.management.ManagementFactory;\nimport java.util.List;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.json.test.TestUtils;\nimport com.alibaba.json.test.benchmark.decode.EishayDecodeBytes;\n\nimport data.media.Image;\nimport data.media.Media;\nimport data.media.MediaContent;\nimport data.media.writeAsArray.ImageSerializer;\nimport data.media.writeAsArray.MediaContentSerializer;\nimport data.media.writeAsArray.MediaSerializer;\n\npublic class BenchmarkMain_EishayEncode_WriteAsArray {\n\n    public static void main(String[] args) throws Exception {\n        SerializeConfig config = SerializeConfig.getGlobalInstance();\n        config.put(MediaContent.class, new MediaContentSerializer());\n        config.put(Media.class, new MediaSerializer());\n        config.put(Image.class, new ImageSerializer());\n        \n        System.out.println(System.getProperty(\"java.vm.name\") + \" \" + System.getProperty(\"java.runtime.version\"));\n        List<String> arguments = ManagementFactory.getRuntimeMXBean().getInputArguments();\n        System.out.println(arguments);\n\n        MediaContent content = EishayDecodeBytes.instance.getContent();\n        String text = encode(content);\n        System.out.println(text);\n        \n        for (int i = 0; i < 10; ++i) {\n            perf(text);\n        }\n    }\n\n    static long perf(Object obj) {\n        long startYGC = TestUtils.getYoungGC();\n        long startYGCTime = TestUtils.getYoungGCTime();\n        long startFGC = TestUtils.getFullGC();\n\n        long startMillis = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            encode(obj);\n        }\n        long millis = System.currentTimeMillis() - startMillis;\n\n        long ygc = TestUtils.getYoungGC() - startYGC;\n        long ygct = TestUtils.getYoungGCTime() - startYGCTime;\n        long fgc = TestUtils.getFullGC() - startFGC;\n\n        System.out.println(\"encode\\t\" + millis + \", ygc \" + ygc + \", ygct \" + ygct + \", fgc \" + fgc);\n        return millis;\n    }\n\n    static String encode(Object text) {\n        return JSON.toJSONString(text);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/BenchmarkTest.java",
    "content": "package com.alibaba.json.test.benchmark;\r\n\r\nimport junit.framework.TestCase;\r\n\r\npublic class BenchmarkTest extends TestCase {\r\n\r\n    public void test_benchmark() throws Exception {\r\n    \tBenchmarkMain.main(new String[]{});\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/JSONPathBenchmarkTest.java",
    "content": "package com.alibaba.json.test.benchmark;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONPath;\nimport com.alibaba.fastjson.parser.Feature;\n\npublic class JSONPathBenchmarkTest {\n\n    public static void main(String[] args) throws Exception {\n        for (int i = 0; i < 5; ++i) {\n             f0(); // 390 353\n        }\n        for (int i = 0; i < 5; ++i) {\n//            f1();\n        }\n    }\n\n    public static void f0() throws Exception {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            Object val = JSONPath.extract(json2, \"$.expensive\");\n            if (((Integer) val).intValue() != 10) {\n                throw new Exception();\n            }\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"extract millis : \" + millis);\n    }\n\n    public static void f1() throws Exception {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            Object val = JSONPath.read(json2, \"$.expensive\");\n            if (((Integer) val).intValue() != 10) {\n                throw new Exception();\n            }\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"eval millis : \" + millis);\n    }\n\n    public static final String json = \"{\\n\" +\n            \"    \\\"store\\\": {\\n\" +\n            \"        \\\"book\\\": [\\n\" +\n            \"            {\\n\" +\n            \"                \\\"category\\\": \\\"reference\\\",\\n\" +\n            \"                \\\"author\\\": \\\"Nigel Rees\\\",\\n\" +\n            \"                \\\"title\\\": \\\"Sayings of the Century\\\",\\n\" +\n            \"                \\\"price\\\": 8.95\\n\" +\n            \"            },\\n\" +\n            \"            {\\n\" +\n            \"                \\\"category\\\": \\\"fiction\\\",\\n\" +\n            \"                \\\"author\\\": \\\"Evelyn Waugh\\\",\\n\" +\n            \"                \\\"title\\\": \\\"Sword of Honour\\\",\\n\" +\n            \"                \\\"price\\\": 12.99\\n\" +\n            \"            },\\n\" +\n            \"            {\\n\" +\n            \"                \\\"category\\\": \\\"fiction\\\",\\n\" +\n            \"                \\\"author\\\": \\\"Herman Melville\\\",\\n\" +\n            \"                \\\"title\\\": \\\"Moby Dick\\\",\\n\" +\n            \"                \\\"isbn\\\": \\\"0-553-21311-3\\\",\\n\" +\n            \"                \\\"price\\\": 8.99\\n\" +\n            \"            },\\n\" +\n            \"            {\\n\" +\n            \"                \\\"category\\\": \\\"fiction\\\",\\n\" +\n            \"                \\\"author\\\": \\\"J. R. R. Tolkien\\\",\\n\" +\n            \"                \\\"title\\\": \\\"The Lord of the Rings\\\",\\n\" +\n            \"                \\\"isbn\\\": \\\"0-395-19395-8\\\",\\n\" +\n            \"                \\\"price\\\": 22.99\\n\" +\n            \"            }\\n\" +\n            \"        ],\\n\" +\n            \"        \\\"bicycle\\\": {\\n\" +\n            \"            \\\"color\\\": \\\"red\\\",\\n\" +\n            \"            \\\"price\\\": 19.95\\n\" +\n            \"        }\\n\" +\n            \"    },\\n\" +\n            \"    \\\"expensive\\\": 10\\n\" +\n            \"}\";\n\n    public static final String json2 = \"{\\\"store\\\":{\\\"book\\\":[{\\\"category\\\":\\\"reference\\\",\\\"author\\\":\\\"Nigel Rees\\\",\\\"title\\\":\\\"Sayings of the Century\\\",\\\"price\\\":8.95},{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"Evelyn Waugh\\\",\\\"title\\\":\\\"Sword of Honour\\\",\\\"price\\\":12.99},{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"Herman Melville\\\",\\\"title\\\":\\\"Moby Dick\\\",\\\"isbn\\\":\\\"0-553-21311-3\\\",\\\"price\\\":8.99},{\\\"category\\\":\\\"fiction\\\",\\\"author\\\":\\\"J. R. R. Tolkien\\\",\\\"title\\\":\\\"The Lord of the Rings\\\",\\\"isbn\\\":\\\"0-395-19395-8\\\",\\\"price\\\":22.99}],\\\"bicycle\\\":{\\\"color\\\":\\\"red\\\",\\\"price\\\":19.95}},\\\"expensive\\\":10}\";\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/RyuDoubleBenchmark.java",
    "content": "package com.alibaba.json.test.benchmark;\n\nimport com.alibaba.fastjson.util.RyuDouble;\n\npublic class RyuDoubleBenchmark {\n    private final static int COUNT = 1000 * 1000 * 10;\n    public static void main(String[] args) throws Exception {\n        double v = 0.5390050566444644; //new java.util.Random().nextDouble();\n\n\n        System.out.println(v);\n\n        for (int i = 0; i < 10; ++i) {\n            f0(v); // 2505, 1865\n        }\n\n//        System.out.println();\n//\n//        for (int i = 0; i < 10; ++i) {\n//            f1(v); // 752, 571\n//        }\n    }\n\n    public static void f0(double v) throws Exception {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < COUNT; ++i) {\n            Double.toString(v);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"jdk : \" + millis);\n    }\n\n    public static void f1(double v) throws Exception {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < COUNT; ++i) {\n            RyuDouble.toString(v);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"ryu : \" + millis);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/RyuFloatBenchmark.java",
    "content": "package com.alibaba.json.test.benchmark;\n\nimport com.alibaba.fastjson.util.RyuDouble;\nimport com.alibaba.fastjson.util.RyuFloat;\n\npublic class RyuFloatBenchmark {\n    private final static int COUNT = 1000 * 1000 * 10;\n    public static void main(String[] args) throws Exception {\n        float v = 0.539005056644f; //new java.util.Random().nextDouble();\n\n\n        System.out.println(v);\n\n//        for (int i = 0; i < 10; ++i) {\n//            f0(v); // 741\n//        }\n\n//        System.out.println();\n//\n        for (int i = 0; i < 10; ++i) {\n            f1(v); // 368\n        }\n    }\n\n    public static void f0(float v) throws Exception {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < COUNT; ++i) {\n            Float.toString(v);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"jdk : \" + millis);\n    }\n\n    public static void f1(float v) throws Exception {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < COUNT; ++i) {\n            RyuFloat.toString(v);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"ryu : \" + millis);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/basic/BigDecimalBenchmark.java",
    "content": "package com.alibaba.json.test.benchmark.basic;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport java.math.BigDecimal;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class BigDecimalBenchmark {\n    static String json = \"{\\\"v1\\\":0.4430165316544028,\\\"v2\\\":0.22676692048907365,\\\"v3\\\":0.9766986818812096,\\\"v4\\\":0.3423751102308744,\\\"v5\\\":0.4262177938610565}\";\n    static String json2 = \"{\\\"v1\\\":\\\"0.4430165316544028\\\",\\\"v2\\\":\\\"0.22676692048907365\\\",\\\"v3\\\":\\\"0.9766986818812096\\\",\\\"v4\\\":\\\"0.3423751102308744\\\",\\\"v5\\\":\\\"0.4262177938610565\\\"}\";\n    static String json3 = \"[0.4430165316544028,0.22676692048907365,0.9766986818812096,0.3423751102308744,0.4262177938610565]\";\n\n    public static void main(String[] args) throws Exception {\n//        Model model = new Model();\n//        model.v1 = new Random().nextDouble();\n//        model.v2 = new Random().nextDouble();\n//        model.v3 = new Random().nextDouble();\n//        model.v4 = new Random().nextDouble();\n//        model.v5 = new Random().nextDouble();\n//\n//        System.out.println(JSON.toJSONString(model));\n\n        for (int i = 0; i < 10; ++i) {\n//             perf(); // 6806\n//            perf2(); // 7181\n            perf3(); // 7595 6707\n        }\n    }\n\n    public static void perf() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf2() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json2, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf3() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json3, Model.class, Feature.SupportArrayToBean);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static class Model {\n        public BigDecimal v1;\n        public BigDecimal v2;\n        public BigDecimal v3;\n        public BigDecimal v4;\n        public BigDecimal v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/basic/BigIntegerBenchmark.java",
    "content": "package com.alibaba.json.test.benchmark.basic;\n\nimport com.alibaba.fastjson.JSON;\n\nimport java.math.BigInteger;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class BigIntegerBenchmark {\n    static String json = \"{\\\"v1\\\":-1883391953414482124,\\\"v2\\\":-3019416596934963650,\\\"v3\\\":6497525620823745793,\\\"v4\\\":2136224289077142499,\\\"v5\\\":-2090575024006307745}\";\n    static String json2 = \"{\\\"v1\\\":\\\"-1883391953414482124\\\",\\\"v2\\\":\\\"-3019416596934963650\\\",\\\"v3\\\":\\\"6497525620823745793\\\",\\\"v4\\\":\\\"2136224289077142499\\\",\\\"v5\\\":\\\"-2090575024006307745\\\"}\";\n\n    public static void main(String[] args) throws Exception {\n//        Model model = new Model();\n//        model.v1 = new Random().nextLong();\n//        model.v2 = new Random().nextLong();\n//        model.v3 = new Random().nextLong();\n//        model.v4 = new Random().nextLong();\n//        model.v5 = new Random().nextLong();\n//\n//        System.out.println(JSON.toJSONString(model));\n\n        for (int i = 0; i < 10; ++i) {\n             perf(); // 3162\n//            perf2(); // 3265\n        }\n    }\n\n    public static void perf() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf2() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json2, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static class Model {\n        public BigInteger v1;\n        public BigInteger v2;\n        public BigInteger v3;\n        public BigInteger v4;\n        public BigInteger v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/basic/BooleanBenchmark.java",
    "content": "package com.alibaba.json.test.benchmark.basic;\n\nimport com.alibaba.fastjson.JSON;\n\nimport java.util.Random;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class BooleanBenchmark {\n    static String json = \"{\\\"v1\\\":true,\\\"v2\\\":false,\\\"v3\\\":true,\\\"v4\\\":false,\\\"v5\\\":false}\";\n    static String json2 = \"{\\\"v1\\\":\\\"true\\\",\\\"v2\\\":\\\"false\\\",\\\"v3\\\":\\\"true\\\",\\\"v4\\\":\\\"false\\\",\\\"v5\\\":\\\"false\\\"}\";\n    static String json3 = \"{\\\"v1\\\":1,\\\"v2\\\":0,\\\"v3\\\":1,\\\"v4\\\":0,\\\"v5\\\":1}\";\n    static String json4 = \"{\\\"v1\\\":\\\"1\\\",\\\"v2\\\":\\\"0\\\",\\\"v3\\\":\\\"1\\\",\\\"v4\\\":\\\"0\\\",\\\"v5\\\":\\\"1\\\"}\";\n    static String json5 = \"{\\n\" +\n            \"\\t\\\"v1\\\":true,\\n\" +\n            \"\\t\\\"v2\\\":false,\\n\" +\n            \"\\t\\\"v3\\\":true,\\n\" +\n            \"\\t\\\"v4\\\":false,\\n\" +\n            \"\\t\\\"v5\\\":false\\n\" +\n            \"}\";\n\n    public static void main(String[] args) throws Exception {\n//        System.out.println(JSON.toJSONString(JSON.parseObject(json), true));\n\n        for (int i = 0; i < 10; ++i) {\n//             perf(); // 1266\n//            perf2(); // 1334\n//            perf3(); // 1085\n//            perf4(); // 1085\n            perf5(); // 1803\n        }\n    }\n\n    public static void perf() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf2() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json2, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf3() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json3, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf4() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json4, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf5() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json5, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static class Model {\n        public boolean v1;\n        public boolean v2;\n        public boolean v3;\n        public boolean v4;\n        public boolean v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/basic/ByteBenchmark.java",
    "content": "package com.alibaba.json.test.benchmark.basic;\n\nimport com.alibaba.fastjson.JSON;\n\nimport java.util.Random;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class ByteBenchmark {\n    static String json = \"{\\\"v1\\\":-55,\\\"v2\\\":67,\\\"v3\\\":107,\\\"v4\\\":96,\\\"v5\\\":-119}\";\n    static String json2 = \"{\\\"v1\\\":\\\"-55\\\",\\\"v2\\\":\\\"67\\\",\\\"v3\\\":\\\"107\\\",\\\"v4\\\":\\\"96\\\",\\\"v5\\\":\\\"-119\\\"}\";\n\n    public static void main(String[] args) throws Exception {\n        Model model = new Model();\n        model.v1 = (byte) new Random().nextInt();\n        model.v2 = (byte) new Random().nextInt();\n        model.v3 = (byte) new Random().nextInt();\n        model.v4 = (byte) new Random().nextInt();\n        model.v5 = (byte) new Random().nextInt();\n\n        System.out.println(JSON.toJSONString(model));\n\n        for (int i = 0; i < 10; ++i) {\n//             perf(); // 1352\n            perf2(); // 1320\n        }\n    }\n\n    public static void perf() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf2() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json2, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static class Model {\n        public byte v1;\n        public byte v2;\n        public byte v3;\n        public byte v4;\n        public byte v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/basic/ByteBenchmark_arrayMapping_obj.java",
    "content": "package com.alibaba.json.test.benchmark.basic;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport java.util.Random;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class ByteBenchmark_arrayMapping_obj {\n    static String json = \"[-55,67,107,96,-119]\";\n    static String json2 = \"[\\\"-55\\\",\\\"67\\\",\\\"107\\\",\\\"96\\\",\\\"-119\\\"]\";\n\n    public static void main(String[] args) throws Exception {\n        Model model = new Model();\n        model.v1 = (byte) new Random().nextInt();\n        model.v2 = (byte) new Random().nextInt();\n        model.v3 = (byte) new Random().nextInt();\n        model.v4 = (byte) new Random().nextInt();\n        model.v5 = (byte) new Random().nextInt();\n\n        System.out.println(JSON.toJSONString(model));\n\n        for (int i = 0; i < 10; ++i) {\n//             perf(); // 818\n            perf2(); // 903\n        }\n    }\n\n    public static void perf() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json, Model.class, Feature.SupportArrayToBean);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf2() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json2, Model.class, Feature.SupportArrayToBean);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static class Model {\n        public Byte v1;\n        public Byte v2;\n        public Byte v3;\n        public Byte v4;\n        public Byte v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/basic/ByteBenchmark_obj.java",
    "content": "package com.alibaba.json.test.benchmark.basic;\n\nimport com.alibaba.fastjson.JSON;\n\nimport java.util.Random;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class ByteBenchmark_obj {\n    static String json = \"{\\\"v1\\\":-55,\\\"v2\\\":67,\\\"v3\\\":107,\\\"v4\\\":96,\\\"v5\\\":-119}\";\n    static String json2 = \"{\\\"v1\\\":\\\"-55\\\",\\\"v2\\\":\\\"67\\\",\\\"v3\\\":\\\"107\\\",\\\"v4\\\":\\\"96\\\",\\\"v5\\\":\\\"-119\\\"}\";\n\n    public static void main(String[] args) throws Exception {\n        Model model = new Model();\n        model.v1 = (byte) new Random().nextInt();\n        model.v2 = (byte) new Random().nextInt();\n        model.v3 = (byte) new Random().nextInt();\n        model.v4 = (byte) new Random().nextInt();\n        model.v5 = (byte) new Random().nextInt();\n\n        System.out.println(JSON.toJSONString(model));\n\n        for (int i = 0; i < 10; ++i) {\n             perf(); // 1398\n//            perf2(); // 1467\n        }\n    }\n\n    public static void perf() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf2() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json2, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static class Model {\n        public Byte v1;\n        public Byte v2;\n        public Byte v3;\n        public Byte v4;\n        public Byte v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/basic/DateBenchmark.java",
    "content": "package com.alibaba.json.test.benchmark.basic;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport java.math.BigDecimal;\nimport java.util.Date;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class DateBenchmark {\n    static String json = \"{\\\"v1\\\":\\\"2017-08-16 04:29:00\\\",\\\"v2\\\":\\\"2017-08-16 04:29:00\\\",\\\"v3\\\":\\\"2017-08-16 04:29:00\\\",\\\"v4\\\":\\\"2017-08-16 04:29:00\\\",\\\"v5\\\":\\\"2017-08-16 04:29:00\\\"}\";\n    static String json2 = \"{\\\"v1\\\":1502828940000,\\\"v2\\\":1502828940000,\\\"v3\\\":1502828940000,\\\"v4\\\":1502828940000,\\\"v5\\\":1502828940000}\";\n    static String json3 = \"[\\\"2017-08-16 04:29:00\\\",\\\"2017-08-16 04:29:00\\\",\\\"2017-08-16 04:29:00\\\",\\\"2017-08-16 04:29:00\\\",\\\"2017-08-16 04:29:00\\\"]\";\n    static String json4 = \"[1502828940000,1502828940000,1502828940000,1502828940000,1502828940000]\";\n    static String json_null_array = \"[null,null,null,null,null]\";\n\n    public static void main(String[] args) throws Exception {\n//        Model model = new Model();\n//        model.v1 = new Random().nextDouble();\n//        model.v2 = new Random().nextDouble();\n//        model.v3 = new Random().nextDouble();\n//        model.v4 = new Random().nextDouble();\n//        model.v5 = new Random().nextDouble();\n//\n//        System.out.println(JSON.toJSONString(model));\n\n        for (int i = 0; i < 5; ++i) {\n             perf(); // 18540\n//            perf2(); // 2205\n//            perf3(); // 22660 20963 18566\n//            perf4(); // 2020\n//            perf_null_array(); // 841\n        }\n    }\n\n    public static void perf() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf2() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json2, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf3() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json3, Model.class, Feature.SupportArrayToBean);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf4() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json4, Model.class, Feature.SupportArrayToBean);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf_null_array() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json_null_array, Model.class, Feature.SupportArrayToBean);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static class Model {\n        public Date v1;\n        public Date v2;\n        public Date v3;\n        public Date v4;\n        public Date v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/basic/DoubleBenchmark.java",
    "content": "package com.alibaba.json.test.benchmark.basic;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.json.bvtVO.IncomingDataPoint;\n\nimport java.util.Random;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class DoubleBenchmark {\n    static String json = \"{\\\"v1\\\":0.4430165316544028,\\\"v2\\\":0.22676692048907365,\\\"v3\\\":0.9766986818812096,\\\"v4\\\":0.3423751102308744,\\\"v5\\\":0.4262177938610565}\";\n    static String json2 = \"{\\\"v1\\\":\\\"0.4430165316544028\\\",\\\"v2\\\":\\\"0.22676692048907365\\\",\\\"v3\\\":\\\"0.9766986818812096\\\",\\\"v4\\\":\\\"0.3423751102308744\\\",\\\"v5\\\":\\\"0.4262177938610565\\\"}\";\n    static String json3 = \"{\\n\" +\n            \"\\t\\\"v1\\\":0.4430165316544028,\\n\" +\n            \"\\t\\\"v2\\\":0.22676692048907365,\\n\" +\n            \"\\t\\\"v3\\\":0.9766986818812096,\\n\" +\n            \"\\t\\\"v4\\\":0.3423751102308744,\\n\" +\n            \"\\t\\\"v5\\\":0.4262177938610565\\n\" +\n            \"}\";\n\n    public static void main(String[] args) throws Exception {\n//        Model model = new Model();\n//        model.v1 = new Random().nextDouble();\n//        model.v2 = new Random().nextDouble();\n//        model.v3 = new Random().nextDouble();\n//        model.v4 = new Random().nextDouble();\n//        model.v5 = new Random().nextDouble();\n\n//        System.out.println(JSON.toJSONString(JSON.parseObject(json), true));\n//\n//        System.out.println(JSON.toJSONString(model));\n\n        for (int i = 0; i < 10; ++i) {\n//             perf(); // 320\n//            perf2(); // 330\n            perf3(); // 3442\n        }\n    }\n\n    public static void perf() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf2() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json2, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf3() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json3, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static class Model {\n        public double v1;\n        public double v2;\n        public double v3;\n        public double v4;\n        public double v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/basic/DoubleBenchmark_arrayMapping.java",
    "content": "package com.alibaba.json.test.benchmark.basic;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class DoubleBenchmark_arrayMapping {\n    static String json = \"[0.4430165316544028,0.22676692048907365,0.9766986818812096,0.3423751102308744,0.4262177938610565]\";\n    static String json2 = \"[\\\"0.4430165316544028\\\",\\\"0.22676692048907365\\\",\\\"0.9766986818812096\\\",\\\"0.3423751102308744\\\",\\\"0.4262177938610565\\\"]\";\n\n    public static void main(String[] args) throws Exception {\n//        Model model = new Model();\n//        model.v1 = new Random().nextDouble();\n//        model.v2 = new Random().nextDouble();\n//        model.v3 = new Random().nextDouble();\n//        model.v4 = new Random().nextDouble();\n//        model.v5 = new Random().nextDouble();\n//\n//        System.out.println(JSON.toJSONString(model));\n\n        for (int i = 0; i < 10; ++i) {\n             perf(); // 2528\n//            perf2(); // 2484\n        }\n    }\n\n    public static void perf() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json, Model.class, Feature.SupportArrayToBean);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf2() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json2, Model.class, Feature.SupportArrayToBean);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static class Model {\n        public double v1;\n        public double v2;\n        public double v3;\n        public double v4;\n        public double v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/basic/DoubleBenchmark_arrayMapping_obj.java",
    "content": "package com.alibaba.json.test.benchmark.basic;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class DoubleBenchmark_arrayMapping_obj {\n    static String json = \"[0.4430165316544028,0.22676692048907365,0.9766986818812096,0.3423751102308744,0.4262177938610565]\";\n    static String json2 = \"[\\\"0.4430165316544028\\\",\\\"0.22676692048907365\\\",\\\"0.9766986818812096\\\",\\\"0.3423751102308744\\\",\\\"0.4262177938610565\\\"]\";\n\n    public static void main(String[] args) throws Exception {\n//        Model model = new Model();\n//        model.v1 = new Random().nextDouble();\n//        model.v2 = new Random().nextDouble();\n//        model.v3 = new Random().nextDouble();\n//        model.v4 = new Random().nextDouble();\n//        model.v5 = new Random().nextDouble();\n//\n//        System.out.println(JSON.toJSONString(model));\n\n        for (int i = 0; i < 10; ++i) {\n             perf(); // 320\n//            perf2(); // 330\n        }\n    }\n\n    public static void perf() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json, Model.class, Feature.SupportArrayToBean);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf2() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json2, Model.class, Feature.SupportArrayToBean);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static class Model {\n        public Double v1;\n        public Double v2;\n        public Double v3;\n        public Double v4;\n        public Double v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/basic/DoubleBenchmark_obj.java",
    "content": "package com.alibaba.json.test.benchmark.basic;\n\nimport com.alibaba.fastjson.JSON;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class DoubleBenchmark_obj {\n    static String json = \"{\\\"v1\\\":0.4430165316544028,\\\"v2\\\":0.22676692048907365,\\\"v3\\\":0.9766986818812096,\\\"v4\\\":0.3423751102308744,\\\"v5\\\":0.4262177938610565}\";\n    static String json2 = \"{\\\"v1\\\":\\\"0.4430165316544028\\\",\\\"v2\\\":\\\"0.22676692048907365\\\",\\\"v3\\\":\\\"0.9766986818812096\\\",\\\"v4\\\":\\\"0.3423751102308744\\\",\\\"v5\\\":\\\"0.4262177938610565\\\"}\";\n\n    public static void main(String[] args) throws Exception {\n//        Model model = new Model();\n//        model.v1 = new Random().nextDouble();\n//        model.v2 = new Random().nextDouble();\n//        model.v3 = new Random().nextDouble();\n//        model.v4 = new Random().nextDouble();\n//        model.v5 = new Random().nextDouble();\n//\n//        System.out.println(JSON.toJSONString(model));\n\n        for (int i = 0; i < 10; ++i) {\n             perf(); // 320\n//            perf2(); // 330\n        }\n    }\n\n    public static void perf() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf2() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json2, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static class Model {\n        public Model() {\n\n        }\n        public Double v1;\n        public Double v2;\n        public Double v3;\n        public Double v4;\n        public Double v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/basic/FloatBenchmark.java",
    "content": "package com.alibaba.json.test.benchmark.basic;\n\nimport com.alibaba.fastjson.JSON;\n\nimport java.util.Random;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class FloatBenchmark {\n    static String json = \"{\\\"v1\\\":0.012671709,\\\"v2\\\":0.6042485,\\\"v3\\\":0.13231707,\\\"v4\\\":0.80090785,\\\"v5\\\":0.6192943}\";\n    static String json2 = \"{\\\"v1\\\":\\\"0.012671709\\\",\\\"v2\\\":\\\"0.6042485\\\",\\\"v3\\\":\\\"0.13231707\\\",\\\"v4\\\":\\\"0.80090785\\\",\\\"v5\\\":\\\"0.6192943\\\"}\";\n    static String json3 = \"{\\n\" +\n            \"\\t\\\"v1\\\":0.012671709,\\n\" +\n            \"\\t\\\"v2\\\":0.6042485,\\n\" +\n            \"\\t\\\"v3\\\":0.13231707,\\n\" +\n            \"\\t\\\"v4\\\":0.80090785,\\n\" +\n            \"\\t\\\"v5\\\":0.6192943\\n\" +\n            \"}\";\n\n    public static void main(String[] args) throws Exception {\n        Model model = new Model();\n//        model.v1 = new Random().nextFloat();\n//        model.v2 = new Random().nextFloat();\n//        model.v3 = new Random().nextFloat();\n//        model.v4 = new Random().nextFloat();\n//        model.v5 = new Random().nextFloat();\n////\n//        System.out.println(JSON.toJSONString(model));\n//        System.out.println(JSON.toJSONString(JSON.parseObject(json), true));\n\n        for (int i = 0; i < 10; ++i) {\n//             perf(); // 210\n//            perf2(); // 216\n            perf3(); // 246\n        }\n    }\n\n    public static void perf() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            JSON.parseObject(json, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf2() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            JSON.parseObject(json2, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf3() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            JSON.parseObject(json3, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static class Model {\n        public float v1;\n        public float v2;\n        public float v3;\n        public float v4;\n        public float v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/basic/FloatBenchmark_arrayMapping.java",
    "content": "package com.alibaba.json.test.benchmark.basic;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class FloatBenchmark_arrayMapping {\n    static String json = \"[0.012671709,0.6042485,0.13231707,0.80090785,0.6192943]\";\n    static String json2 = \"[\\\"0.012671709\\\",\\\"0.6042485\\\",\\\"0.13231707\\\",\\\"0.80090785\\\",\\\"0.6192943\\\"]\";\n\n    public static void main(String[] args) throws Exception {\n        Model model = new Model();\n//        model.v1 = new Random().nextFloat();\n//        model.v2 = new Random().nextFloat();\n//        model.v3 = new Random().nextFloat();\n//        model.v4 = new Random().nextFloat();\n//        model.v5 = new Random().nextFloat();\n////\n//        System.out.println(JSON.toJSONString(model));\n\n        for (int i = 0; i < 10; ++i) {\n//             perf(); // 145\n            perf2(); // 160\n        }\n    }\n\n    public static void perf() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            JSON.parseObject(json, Model.class, Feature.SupportArrayToBean);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf2() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            JSON.parseObject(json2, Model.class, Feature.SupportArrayToBean);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static class Model {\n        public float v1;\n        public float v2;\n        public float v3;\n        public float v4;\n        public float v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/basic/FloatBenchmark_arrayMapping_obj.java",
    "content": "package com.alibaba.json.test.benchmark.basic;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class FloatBenchmark_arrayMapping_obj {\n    static String json = \"[0.012671709,0.6042485,0.13231707,0.80090785,0.6192943]\";\n    static String json2 = \"[\\\"0.012671709\\\",\\\"0.6042485\\\",\\\"0.13231707\\\",\\\"0.80090785\\\",\\\"0.6192943\\\"]\";\n\n    public static void main(String[] args) throws Exception {\n        Model model = new Model();\n//        model.v1 = new Random().nextFloat();\n//        model.v2 = new Random().nextFloat();\n//        model.v3 = new Random().nextFloat();\n//        model.v4 = new Random().nextFloat();\n//        model.v5 = new Random().nextFloat();\n////\n//        System.out.println(JSON.toJSONString(model));\n\n        for (int i = 0; i < 10; ++i) {\n//             perf(); // 145\n            perf2(); // 160\n        }\n    }\n\n    public static void perf() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            JSON.parseObject(json, Model.class, Feature.SupportArrayToBean);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf2() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            JSON.parseObject(json2, Model.class, Feature.SupportArrayToBean);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static class Model {\n        public Float v1;\n        public Float v2;\n        public Float v3;\n        public Float v4;\n        public Float v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/basic/FloatBenchmark_obj.java",
    "content": "package com.alibaba.json.test.benchmark.basic;\n\nimport com.alibaba.fastjson.JSON;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class FloatBenchmark_obj {\n    static String json = \"{\\\"v1\\\":0.012671709,\\\"v2\\\":0.6042485,\\\"v3\\\":0.13231707,\\\"v4\\\":0.80090785,\\\"v5\\\":0.6192943}\";\n    static String json2 = \"{\\\"v1\\\":\\\"0.012671709\\\",\\\"v2\\\":\\\"0.6042485\\\",\\\"v3\\\":\\\"0.13231707\\\",\\\"v4\\\":\\\"0.80090785\\\",\\\"v5\\\":\\\"0.6192943\\\"}\";\n\n    public static void main(String[] args) throws Exception {\n        Model model = new Model();\n//        model.v1 = new Random().nextFloat();\n//        model.v2 = new Random().nextFloat();\n//        model.v3 = new Random().nextFloat();\n//        model.v4 = new Random().nextFloat();\n//        model.v5 = new Random().nextFloat();\n////\n//        System.out.println(JSON.toJSONString(model));\n\n        for (int i = 0; i < 10; ++i) {\n             perf(); // 210\n//            perf2(); // 216\n        }\n    }\n\n    public static void perf() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            JSON.parseObject(json, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf2() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            JSON.parseObject(json2, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static class Model {\n        public Float v1;\n        public Float v2;\n        public Float v3;\n        public Float v4;\n        public Float v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/basic/IntBenchmark.java",
    "content": "package com.alibaba.json.test.benchmark.basic;\n\nimport com.alibaba.fastjson.JSON;\n\nimport java.util.Random;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class IntBenchmark {\n    static String json = \"{\\\"v1\\\":-1224609302,\\\"v2\\\":379420556,\\\"v3\\\":-1098099527,\\\"v4\\\":-2018662,\\\"v5\\\":422842162}\";\n    static String json2 = \"{\\\"v1\\\":\\\"-1224609302\\\",\\\"v2\\\":\\\"379420556\\\",\\\"v3\\\":\\\"-1098099527\\\",\\\"v4\\\":\\\"-2018662\\\",\\\"v5\\\":\\\"422842162\\\"}\";\n    static String json3 = \"{\\n\" +\n            \"\\t\\\"v1\\\":\\\"-1224609302\\\",\\n\" +\n            \"\\t\\\"v2\\\":\\\"379420556\\\",\\n\" +\n            \"\\t\\\"v3\\\":\\\"-1098099527\\\",\\n\" +\n            \"\\t\\\"v4\\\":\\\"-2018662\\\",\\n\" +\n            \"\\t\\\"v5\\\":\\\"422842162\\\"\\n\" +\n            \"}\";\n\n    public static void main(String[] args) throws Exception {\n        System.out.println(System.getProperty(\"java.vm.name\") + \" \" + System.getProperty(\"java.runtime.version\"));\n//        Model model = new Model();\n//        model.v1 = new Random().nextInt();\n//        model.v2 = new Random().nextInt();\n//        model.v3 = new Random().nextInt();\n//        model.v4 = new Random().nextInt();\n//        model.v5 = new Random().nextInt();\n//\n//        System.out.println(JSON.toJSONString(model));\n\n\n        for (int i = 0; i < 10; ++i) {\n             perf(); // 1798\n           // perf2(); // 1877\n//            perf3(); // 20624 2334\n        }\n    }\n\n    public static void perf() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf2() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json2, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf3() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json3, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static class Model {\n        public int v1;\n        public int v2;\n        public int v3;\n        public int v4;\n        public int v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/basic/IntBenchmark_arrayMapping_obj.java",
    "content": "package com.alibaba.json.test.benchmark.basic;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class IntBenchmark_arrayMapping_obj {\n    static String json = \"[-1224609302,379420556,-1098099527,-2018662,422842162]\";\n    static String json2 = \"[\\\"-1224609302\\\",\\\"379420556\\\",\\\"-1098099527\\\",\\\"-2018662\\\",\\\"422842162\\\"]\";\n\n    public static void main(String[] args) throws Exception {\n//        Model model = new Model();\n//        model.v1 = new Random().nextInt();\n//        model.v2 = new Random().nextInt();\n//        model.v3 = new Random().nextInt();\n//        model.v4 = new Random().nextInt();\n//        model.v5 = new Random().nextInt();\n//\n//        System.out.println(JSON.toJSONString(model));\n\n        for (int i = 0; i < 10; ++i) {\n//             perf(); // 1593\n            perf2(); // 1965\n        }\n    }\n\n    public static void perf() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json, Model.class, Feature.SupportArrayToBean);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf2() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json2, Model.class, Feature.SupportArrayToBean);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static class Model {\n        public Integer v1;\n        public Integer v2;\n        public Integer v3;\n        public Integer v4;\n        public Integer v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/basic/IntBenchmark_obj.java",
    "content": "package com.alibaba.json.test.benchmark.basic;\n\nimport com.alibaba.fastjson.JSON;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class IntBenchmark_obj {\n    static String json = \"{\\\"v1\\\":-1224609302,\\\"v2\\\":379420556,\\\"v3\\\":-1098099527,\\\"v4\\\":-2018662,\\\"v5\\\":422842162}\";\n    static String json2 = \"{\\\"v1\\\":\\\"-1224609302\\\",\\\"v2\\\":\\\"379420556\\\",\\\"v3\\\":\\\"-1098099527\\\",\\\"v4\\\":\\\"-2018662\\\",\\\"v5\\\":\\\"422842162\\\"}\";\n\n    public static void main(String[] args) throws Exception {\n//        Model model = new Model();\n//        model.v1 = new Random().nextInt();\n//        model.v2 = new Random().nextInt();\n//        model.v3 = new Random().nextInt();\n//        model.v4 = new Random().nextInt();\n//        model.v5 = new Random().nextInt();\n//\n//        System.out.println(JSON.toJSONString(model));\n\n        for (int i = 0; i < 10; ++i) {\n//             perf(); // 1888\n            perf2(); // 1965\n        }\n    }\n\n    public static void perf() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf2() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json2, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static class Model {\n        public Integer v1;\n        public Integer v2;\n        public Integer v3;\n        public Integer v4;\n        public Integer v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/basic/LinkedListBenchmark.java",
    "content": "package com.alibaba.json.test.benchmark.basic;\n\nimport com.alibaba.fastjson.JSON;\n\nimport java.util.LinkedList;\n\n/**\n * Created by wenshao on 06/08/2017.\n */\npublic class LinkedListBenchmark {\n    public static void main(String[] args) throws Exception {\n        LinkedList linkedList = new LinkedList();\n        for (int i = 0; i < 1000; ++i) {\n            linkedList.add(i);\n        }\n\n        for (int i = 0; i < 10; i++) {\n            perf_toJSONString(linkedList); // 14825\n        }\n    }\n\n    public static void perf_toJSONString(Object obj) {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000; ++i) {\n            JSON.toJSONString(obj);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"milli : \" + millis);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/basic/LongBenchmark.java",
    "content": "package com.alibaba.json.test.benchmark.basic;\n\nimport com.alibaba.fastjson.JSON;\n\nimport java.util.Random;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class LongBenchmark {\n    static String json = \"{\\\"v1\\\":-1883391953414482124,\\\"v2\\\":-3019416596934963650,\\\"v3\\\":6497525620823745793,\\\"v4\\\":2136224289077142499,\\\"v5\\\":-2090575024006307745}\";\n    static String json2 = \"{\\\"v1\\\":\\\"-1883391953414482124\\\",\\\"v2\\\":\\\"-3019416596934963650\\\",\\\"v3\\\":\\\"6497525620823745793\\\",\\\"v4\\\":\\\"2136224289077142499\\\",\\\"v5\\\":\\\"-2090575024006307745\\\"}\";\n    static String json3 = \"{\\n\" +\n            \"\\t\\\"v1\\\":-1883391953414482124,\\n\" +\n            \"\\t\\\"v2\\\":-3019416596934963650,\\n\" +\n            \"\\t\\\"v3\\\":6497525620823745793,\\n\" +\n            \"\\t\\\"v4\\\":2136224289077142499,\\n\" +\n            \"\\t\\\"v5\\\":-2090575024006307745\\n\" +\n            \"}\";\n\n    public static void main(String[] args) throws Exception {\n//        Model model = new Model();\n//        model.v1 = new Random().nextLong();\n//        model.v2 = new Random().nextLong();\n//        model.v3 = new Random().nextLong();\n//        model.v4 = new Random().nextLong();\n//        model.v5 = new Random().nextLong();\n//\n//        System.out.println(JSON.toJSONString(model));\n\n//        System.out.println(JSON.toJSONString(JSON.parseObject(json), true));\n\n        for (int i = 0; i < 10; ++i) {\n//             perf(); // 2799\n//            perf2(); // 2931\n            perf3(); // 10256\n        }\n    }\n\n    public static void perf() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf2() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json2, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf3() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json3, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static class Model {\n        public long v1;\n        public long v2;\n        public long v3;\n        public long v4;\n        public long v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/basic/LongBenchmark_obj.java",
    "content": "package com.alibaba.json.test.benchmark.basic;\n\nimport com.alibaba.fastjson.JSON;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class LongBenchmark_obj {\n    static String json = \"{\\\"v1\\\":-1883391953414482124,\\\"v2\\\":-3019416596934963650,\\\"v3\\\":6497525620823745793,\\\"v4\\\":2136224289077142499,\\\"v5\\\":-2090575024006307745}\";\n    static String json2 = \"{\\\"v1\\\":\\\"-1883391953414482124\\\",\\\"v2\\\":\\\"-3019416596934963650\\\",\\\"v3\\\":\\\"6497525620823745793\\\",\\\"v4\\\":\\\"2136224289077142499\\\",\\\"v5\\\":\\\"-2090575024006307745\\\"}\";\n\n    public static void main(String[] args) throws Exception {\n//        Model model = new Model();\n//        model.v1 = new Random().nextLong();\n//        model.v2 = new Random().nextLong();\n//        model.v3 = new Random().nextLong();\n//        model.v4 = new Random().nextLong();\n//        model.v5 = new Random().nextLong();\n//\n//        System.out.println(JSON.toJSONString(model));\n\n        for (int i = 0; i < 10; ++i) {\n//             perf(); // 2883\n            perf2(); // 2998\n        }\n    }\n\n    public static void perf() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf2() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json2, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static class Model {\n        public Long v1;\n        public Long v2;\n        public Long v3;\n        public Long v4;\n        public Long v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/basic/ShortBenchmark.java",
    "content": "package com.alibaba.json.test.benchmark.basic;\n\nimport com.alibaba.fastjson.JSON;\n\nimport java.util.Random;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class ShortBenchmark {\n    static String json = \"{\\\"v1\\\":-5972,\\\"v2\\\":5582,\\\"v3\\\":-2398,\\\"v4\\\":-9859,\\\"v5\\\":25417}\";\n    static String json2 = \"{\\\"v1\\\":\\\"-5972\\\",\\\"v2\\\":\\\"5582\\\",\\\"v3\\\":\\\"-2398\\\",\\\"v4\\\":\\\"-9859\\\",\\\"v5\\\":\\\"25417\\\"}\";\n\n    public static void main(String[] args) throws Exception {\n        Model model = new Model();\n        model.v1 = (short) new Random().nextInt();\n        model.v2 = (short) new Random().nextInt();\n        model.v3 = (short) new Random().nextInt();\n        model.v4 = (short) new Random().nextInt();\n        model.v5 = (short) new Random().nextInt();\n\n        System.out.println(JSON.toJSONString(model));\n\n        for (int i = 0; i < 10; ++i) {\n             perf(); // 1455\n//            perf2(); // 1506\n        }\n    }\n\n    public static void perf() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf2() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json2, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static class Model {\n        public short v1;\n        public short v2;\n        public short v3;\n        public short v4;\n        public short v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/basic/ShortBenchmark_arrayMappinng_obj.java",
    "content": "package com.alibaba.json.test.benchmark.basic;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport java.util.Random;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class ShortBenchmark_arrayMappinng_obj {\n    static String json = \"[-5972,5582,-2398,-9859,25417]\";\n    static String json2 = \"[\\\"-5972\\\",\\\"5582\\\",\\\"-2398\\\",\\\"-9859\\\",\\\"25417\\\"]\";\n\n    public static void main(String[] args) throws Exception {\n        Model model = new Model();\n        model.v1 = (short) new Random().nextInt();\n        model.v2 = (short) new Random().nextInt();\n        model.v3 = (short) new Random().nextInt();\n        model.v4 = (short) new Random().nextInt();\n        model.v5 = (short) new Random().nextInt();\n\n        System.out.println(JSON.toJSONString(model));\n\n        for (int i = 0; i < 10; ++i) {\n             perf(); // 1087\n//            perf2(); // 1120\n        }\n    }\n\n    public static void perf() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json, Model.class, Feature.SupportArrayToBean);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf2() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json2, Model.class, Feature.SupportArrayToBean);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static class Model {\n        public Short v1;\n        public Short v2;\n        public Short v3;\n        public Short v4;\n        public Short v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/basic/ShortBenchmark_obj.java",
    "content": "package com.alibaba.json.test.benchmark.basic;\n\nimport com.alibaba.fastjson.JSON;\n\nimport java.util.Random;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class ShortBenchmark_obj {\n    static String json = \"{\\\"v1\\\":-5972,\\\"v2\\\":5582,\\\"v3\\\":-2398,\\\"v4\\\":-9859,\\\"v5\\\":25417}\";\n    static String json2 = \"{\\\"v1\\\":\\\"-5972\\\",\\\"v2\\\":\\\"5582\\\",\\\"v3\\\":\\\"-2398\\\",\\\"v4\\\":\\\"-9859\\\",\\\"v5\\\":\\\"25417\\\"}\";\n\n    public static void main(String[] args) throws Exception {\n        Model model = new Model();\n        model.v1 = (short) new Random().nextInt();\n        model.v2 = (short) new Random().nextInt();\n        model.v3 = (short) new Random().nextInt();\n        model.v4 = (short) new Random().nextInt();\n        model.v5 = (short) new Random().nextInt();\n\n        System.out.println(JSON.toJSONString(model));\n\n        for (int i = 0; i < 10; ++i) {\n//             perf(); // 1527\n            perf2(); // 1667\n        }\n    }\n\n    public static void perf() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf2() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json2, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static class Model {\n        public Short v1;\n        public Short v2;\n        public Short v3;\n        public Short v4;\n        public Short v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/basic/UUIDBenchmark.java",
    "content": "package com.alibaba.json.test.benchmark.basic;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\n\nimport java.util.Date;\nimport java.util.UUID;\n\n/**\n * Created by wenshao on 04/08/2017.\n */\npublic class UUIDBenchmark {\n    static String json = \"{\\\"v1\\\":\\\"d3ab4486-f6c5-4419-8a06-12b0d5853cbe\\\",\\\"v2\\\":\\\"aae4fb77-e5b3-4e3a-b331-d2fbbf812d8f\\\",\\\"v3\\\":\\\"99717c8d-5c39-4f1b-b44c-548bf5dd6060\\\",\\\"v4\\\":\\\"6269e62f-67ba-463d-a38e-c568c25571fb\\\",\\\"v5\\\":\\\"62be2c96-472a-4253-938b-e71a131c1670\\\"}\";\n    static String json2 = \"{\\\"v1\\\":\\\"d3ab4486f6c544198a0612b0d5853cbe\\\",\\\"v2\\\":\\\"aae4fb77e5b34e3ab331d2fbbf812d8f\\\",\\\"v3\\\":\\\"99717c8d5c394f1bb44c548bf5dd6060\\\",\\\"v4\\\":\\\"6269e62f67ba463da38ec568c25571fb\\\",\\\"v5\\\":\\\"62be2c96472a4253938be71a131c1670\\\"}\";\n    static String json_null = \"{\\\"v1\\\":null,\\\"v2\\\":null,\\\"v3\\\":null,\\\"v4\\\":null,\\\"v5\\\":null}\";\n    static String json3 = \"[\\\"d3ab4486-f6c5-4419-8a06-12b0d5853cbe\\\",\\\"aae4fb77-e5b3-4e3a-b331-d2fbbf812d8f\\\",\\\"99717c8d-5c39-4f1b-b44c-548bf5dd6060\\\",\\\"6269e62f-67ba-463d-a38e-c568c25571fb\\\",\\\"62be2c96-472a-4253-938b-e71a131c1670\\\"]\";\n    static String json4 = \"[\\\"d3ab4486f6c544198a0612b0d5853cbe\\\",\\\"aae4fb77e5b34e3ab331d2fbbf812d8f\\\",\\\"99717c8d5c394f1bb44c548bf5dd6060\\\",\\\"6269e62f67ba463da38ec568c25571fb\\\",\\\"62be2c96472a4253938be71a131c1670\\\"]\";\n    static String json_null_array = \"[null,null,null,null,null]\";\n\n    public static void main(String[] args) throws Exception {\n//        Model model = new Model();\n//        model.v1 = UUID.randomUUID();\n//        model.v2 = UUID.randomUUID();\n//        model.v3 = UUID.randomUUID();\n//        model.v4 = UUID.randomUUID();\n//        model.v5 = UUID.randomUUID();\n//\n//        System.out.println(JSON.toJSONString(model));\n\n\n        for (int i = 0; i < 10; ++i) {\n//             perf(); // 25021 24135 4977\n//            perf2(); // 4276\n//            perf_null(); // 4244 1278\n//            perf3(); // 25247 3970\n//            perf4(); // 3733\n            perf_null_array(); // 746\n        }\n    }\n\n    public static void perf() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf2() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json2, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf_null() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json_null, Model.class);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf3() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json3, Model.class, Feature.SupportArrayToBean);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf4() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json4, Model.class, Feature.SupportArrayToBean);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static void perf_null_array() {\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 10; ++i) {\n            JSON.parseObject(json_null_array, Model.class, Feature.SupportArrayToBean);\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public static class Model {\n        public UUID v1;\n        public UUID v2;\n        public UUID v3;\n        public UUID v4;\n        public UUID v5;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/decode/BooleanArray1000Decode.java",
    "content": "package com.alibaba.json.test.benchmark.decode;\r\n\r\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\r\nimport com.alibaba.json.test.codec.Codec;\r\n\r\npublic class BooleanArray1000Decode extends BenchmarkCase {\r\n\r\n    private String text;\r\n\r\n    public BooleanArray1000Decode(){\r\n        super(\"BooleanArray1000Decode\");\r\n\r\n        StringBuilder buf = new StringBuilder();\r\n\r\n        buf.append('[');\r\n        for (int i = 0; i < 1000; ++i) {\r\n            if (i != 0) {\r\n                buf.append(\",\");\r\n            }\r\n            buf.append(i % 2 == 0 ? \"true\" : \"false\");\r\n        }\r\n        buf.append(']');\r\n        this.text = buf.toString();\r\n    }\r\n\r\n    @Override\r\n    public void execute(Codec codec) throws Exception {\r\n        codec.decode(text);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/decode/EishayDecode.java",
    "content": "package com.alibaba.json.test.benchmark.decode;\n\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\nimport com.alibaba.json.test.codec.Codec;\n\nimport data.media.MediaContent;\n\npublic class EishayDecode extends BenchmarkCase {\n\n    private String text;\n\n    public EishayDecode(){\n        super(\"EishayDecode\");\n\n        // JavaBeanMapping.getGlobalInstance().putDeserializer(Image.class, new ImageDeserializer());\n        // JavaBeanMapping.getGlobalInstance().putDeserializer(Media.class, new MediaDeserializer());\n    }\n\n    public void init(Codec codec) throws Exception {\n        this.text = codec.encode(EishayDecodeBytes.instance.getContent());\n        System.out.println(text);\n    }\n\n    @Override\n    public void execute(Codec codec) throws Exception {\n        MediaContent content = codec.decodeObject(text, MediaContent.class);\n        if (content == null) {\n            throw new Exception();\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/decode/EishayDecode2Bytes.java",
    "content": "package com.alibaba.json.test.benchmark.decode;\n\nimport java.io.InputStream;\n\nimport org.apache.commons.io.IOUtils;\n\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\nimport com.alibaba.json.test.codec.Codec;\n\nimport data.media.MediaContent;\n\npublic class EishayDecode2Bytes extends BenchmarkCase {\n\n    public final static EishayDecode2Bytes instance = new EishayDecode2Bytes();\n\n    private final byte[]                  bytes;\n    private final char[]                  chars;\n    private final String text;\n\n    public byte[] getBytes() {\n        return bytes;\n    }\n\n    public char[] getChars() {\n        return chars;\n    }\n    \n    public String getText() {\n        return text;\n    }\n\n    public EishayDecode2Bytes(){\n        super(\"EishayDecode2-Byte[]\");\n\n        try {\n            String resource = \"data/media.2.json\";\n            InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource);\n            text = IOUtils.toString(is);\n            is.close();\n            \n            chars = (text + \" \").toCharArray();\n            bytes = text.getBytes(\"UTF-8\");\n        } catch (Exception e) {\n            throw new RuntimeException();\n        }\n    }\n\n    @Override\n    public void execute(Codec codec) throws Exception {\n        codec.decodeObject(bytes, MediaContent.class);\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/decode/EishayDecodeByClassName.java",
    "content": "package com.alibaba.json.test.benchmark.decode;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\nimport com.alibaba.json.test.codec.Codec;\n\nimport data.media.MediaContent;\n\npublic class EishayDecodeByClassName extends BenchmarkCase {\n\n    private final String text;\n\n    public EishayDecodeByClassName(){\n        super(\"EishayDecode\");\n\n        text = JSON.toJSONString(EishayDecodeBytes.instance.getContent(), SerializerFeature.WriteEnumUsingToString,\n                                 SerializerFeature.SortField, SerializerFeature.WriteClassName);\n        System.out.println(text);\n        System.out.println();\n\n        // JavaBeanMapping.getGlobalInstance().putDeserializer(Image.class, new ImageDeserializer());\n        // JavaBeanMapping.getGlobalInstance().putDeserializer(Media.class, new MediaDeserializer());\n    }\n\n    @Override\n    public void execute(Codec codec) throws Exception {\n        MediaContent content = codec.decodeObject(text, MediaContent.class);\n        if (content == null) {\n            throw new Exception();\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/decode/EishayDecodeBytes.java",
    "content": "package com.alibaba.json.test.benchmark.decode;\n\nimport java.io.UnsupportedEncodingException;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.List;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\nimport com.alibaba.json.test.codec.Codec;\n\nimport data.media.Image;\nimport data.media.Image.Size;\nimport data.media.Media;\nimport data.media.Media.Player;\nimport data.media.MediaContent;\n\npublic class EishayDecodeBytes extends BenchmarkCase {\n\n    public final static EishayDecodeBytes instance = new EishayDecodeBytes();\n\n    private final byte[]                  bytes;\n    private final char[]                  chars;\n    private final String                  text;\n\n    private final MediaContent                  content;\n\n    public byte[] getBytes() {\n        return bytes;\n    }\n\n    public char[] getChars() {\n        return chars;\n    }\n\n    public String getText() {\n        return text;\n    }\n\n    public MediaContent getContent() {\n        return content;\n    }\n\n    public EishayDecodeBytes(){\n        super(\"EishayDecode-Byte[]\");\n\n        content = new MediaContent();\n\n        Media media = new Media();\n        media.setUri(\"http://javaone.com/keynote.mpg\");\n        media.setTitle(\"Javaone Keynote\");\n        media.setWidth(640);\n        media.setHeight(480);\n        media.setFormat(\"video/mpg4\");\n        media.setDuration(18000000);\n        media.setSize(58982400);\n        media.setBitrate(262144);\n        media.setPersons(Arrays.asList(\"Bill Gates\", \"Steve Jobs\"));\n        media.setPlayer(Player.JAVA);\n        media.setCopyright(null);\n\n        content.setMedia(media);\n\n        List<Image> images = new ArrayList<Image>();\n        {\n            Image image = new Image();\n            image.setUri(\"http://javaone.com/keynote_large.jpg\");\n            image.setTitle(\"Javaone Keynote\");\n            image.setWidth(1024);\n            image.setHeight(768);\n            image.setSize(Size.LARGE);\n            images.add(image);\n        }\n        {\n            Image image = new Image();\n            image.setUri(\"http://javaone.com/keynote_small.jpg\");\n            image.setTitle(\"Javaone Keynote\");\n            image.setWidth(320);\n            image.setHeight(240);\n            image.setSize(Size.SMALL);\n            images.add(image);\n        }\n        content.setImages(images);\n\n        try {\n            text = JSON.toJSONString(content, SerializerFeature.WriteEnumUsingToString, SerializerFeature.SortField);\n            chars = (text + \" \").toCharArray();\n            bytes = text.getBytes(\"UTF-8\");\n        } catch (UnsupportedEncodingException e) {\n            throw new RuntimeException();\n        }\n    }\n\n    @Override\n    public void execute(Codec codec) throws Exception {\n        codec.decodeObject(bytes, MediaContent.class);\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/decode/EishayTreeDecode.java",
    "content": "package com.alibaba.json.test.benchmark.decode;\n\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\nimport com.alibaba.json.test.codec.Codec;\n\npublic class EishayTreeDecode extends BenchmarkCase {\n\n    private final String text;\n\n    public EishayTreeDecode(){\n        super(\"EishayDecode-tree\");\n\n        this.text = EishayDecodeBytes.instance.getText();\n    }\n\n    @Override\n    public void execute(Codec codec) throws Exception {\n        codec.decode(text);\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/decode/Entity100IntDecode.java",
    "content": "package com.alibaba.json.test.benchmark.decode;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\r\nimport com.alibaba.json.test.benchmark.entity.Entity100Int;\r\nimport com.alibaba.json.test.codec.Codec;\r\n\r\npublic class Entity100IntDecode extends BenchmarkCase {\r\n\r\n    private String text;\r\n\r\n    public Entity100IntDecode(){\r\n        super(\"StringArray1000Decode\");\r\n\r\n        this.text = JSON.toJSONString(new Entity100Int());\r\n    }\r\n\r\n    @Override\r\n    public void execute(Codec codec) throws Exception {\r\n        codec.decodeObject(text, Entity100Int.class);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/decode/Entity100StringDecode.java",
    "content": "package com.alibaba.json.test.benchmark.decode;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\r\nimport com.alibaba.json.test.benchmark.entity.Entity100String;\r\nimport com.alibaba.json.test.codec.Codec;\r\n\r\npublic class Entity100StringDecode extends BenchmarkCase {\r\n\r\n    private String text;\r\n\r\n    public Entity100StringDecode(){\r\n        super(\"Entity100StringDecode\");\r\n\r\n        this.text = JSON.toJSONString(new Entity100String());\r\n    }\r\n\r\n    @Override\r\n    public void execute(Codec codec) throws Exception {\r\n        codec.decodeObject(text, Entity100String.class);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/decode/GroupDecode.java",
    "content": "package com.alibaba.json.test.benchmark.decode;\r\n\r\nimport java.io.IOException;\r\nimport java.io.InputStream;\r\n\r\nimport org.apache.commons.io.IOUtils;\r\n\r\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\r\nimport com.alibaba.json.test.codec.Codec;\r\n\r\npublic class GroupDecode extends BenchmarkCase {\r\n\r\n    private String text;\r\n\r\n    public GroupDecode(){\r\n        super(\"GroupDecode\");\r\n\r\n        try {\r\n            String resource = \"json/group.json\";\r\n            InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource);\r\n            text = IOUtils.toString(is);\r\n            is.close();\r\n        } catch (IOException ex) {\r\n            ex.printStackTrace();\r\n        }\r\n    }\r\n\r\n    @Override\r\n    public void execute(Codec codec) throws Exception {\r\n        for (int i = 0; i < 10; ++i) {\r\n            codec.decodeObject(text);\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/decode/IntArray1000Decode.java",
    "content": "package com.alibaba.json.test.benchmark.decode;\r\n\r\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\r\nimport com.alibaba.json.test.codec.Codec;\r\n\r\npublic class IntArray1000Decode extends BenchmarkCase {\r\n\r\n    private String text;\r\n\r\n    public IntArray1000Decode(){\r\n        super(\"IntArray1000Decode\");\r\n\r\n        StringBuilder buf = new StringBuilder();\r\n\r\n        buf.append('[');\r\n        for (int i = 0; i < 1000; ++i) {\r\n            if (i != 0) {\r\n                buf.append(\",\");\r\n            }\r\n            buf.append(i);\r\n        }\r\n        buf.append(']');\r\n        this.text = buf.toString();\r\n    }\r\n\r\n    @Override\r\n    public void execute(Codec codec) throws Exception {\r\n        codec.decode(text);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/decode/Map1000StringDecode.java",
    "content": "package com.alibaba.json.test.benchmark.decode;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\r\nimport com.alibaba.json.test.codec.Codec;\r\n\r\npublic class Map1000StringDecode extends BenchmarkCase {\r\n\r\n    private String text;\r\n\r\n    public Map1000StringDecode(){\r\n        super(\"Map100StringDecode\");\r\n\r\n        Map<String, String> map = new HashMap<String, String>();\r\n        for (int i = 0; i < 1000; ++i) {\r\n            map.put(\"f\" + i, Integer.toString(i));\r\n        }\r\n\r\n        this.text = JSON.toJSONString(map) + ' ';\r\n    }\r\n\r\n    @Override\r\n    public void execute(Codec codec) throws Exception {\r\n        codec.decodeObject(text);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/decode/Map1Decode.java",
    "content": "package com.alibaba.json.test.benchmark.decode;\r\n\r\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\r\nimport com.alibaba.json.test.codec.Codec;\r\n\r\npublic class Map1Decode extends BenchmarkCase {\r\n\r\n    private String text;\r\n\r\n    public Map1Decode(){\r\n        super(\"StringArray1000Decode\");\r\n\r\n        this.text = \"{\\\"badboy\\\":true,\\\"description\\\":\\\"神棍敌人姐\\\",\\\"name\\\":\\\"校长\\\",\\\"age\\\":3,\\\"birthdate\\\":1293278091773,\\\"salary\\\":123456789.0123}\";\r\n    }\r\n\r\n    @Override\r\n    public void execute(Codec codec) throws Exception {\r\n        for (int i = 0; i < 10; ++i) {\r\n            codec.decodeObject(text);\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/decode/StringArray1000Decode.java",
    "content": "package com.alibaba.json.test.benchmark.decode;\r\n\r\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\r\nimport com.alibaba.json.test.codec.Codec;\r\n\r\npublic class StringArray1000Decode extends BenchmarkCase {\r\n\r\n    private String text;\r\n\r\n    public StringArray1000Decode(){\r\n        super(\"StringArray1000Decode\");\r\n\r\n        StringBuilder buf = new StringBuilder();\r\n\r\n        buf.append('[');\r\n        for (int i = 0; i < 1000; ++i) {\r\n            if (i != 0) {\r\n                buf.append(\",\");\r\n            }\r\n            buf.append('\"' + Integer.toHexString(i * 100) + '\"');\r\n        }\r\n        buf.append(']');\r\n        this.text = buf.toString();\r\n    }\r\n\r\n    @Override\r\n    public void execute(Codec codec) throws Exception {\r\n        codec.decode(text);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/decode/TradeObjectParse.java",
    "content": "package com.alibaba.json.test.benchmark.decode;\n\nimport java.io.InputStream;\nimport java.io.InputStreamReader;\nimport java.io.Reader;\n\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\nimport com.alibaba.json.test.codec.Codec;\n\n/**\n * Created by wenshao on 16/4/4.\n */\npublic class TradeObjectParse extends BenchmarkCase {\n\n    private String text;\n\n    public TradeObjectParse(){\n        super(\"TradeObjectParse\");\n\n        // JavaBeanMapping.getGlobalInstance().putDeserializer(Image.class, new ImageDeserializer());\n        // JavaBeanMapping.getGlobalInstance().putDeserializer(Media.class, new MediaDeserializer());\n    }\n\n    public void init(Codec codec) throws Exception {\n        InputStream is = TradeObjectParse.class.getClassLoader().getResourceAsStream(\"json/trade.json\");\n        Reader reader = new InputStreamReader(is, \"UTF-8\");\n        char[] chars = new char[1024];\n\n        StringBuilder out = new StringBuilder();\n        for (;;) {\n            int len = reader.read(chars);\n            if (len <= 0) {\n                break;\n            }\n            out.append(chars, 0, len);\n        }\n        reader.close();\n        text = out.toString();\n        System.out.println(\"tradeJsonObject \" + text.substring(100));\n    }\n\n    @Override\n    public void execute(Codec codec) throws Exception {\n        codec.decode(text);\n    }\n\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/encode/ArrayBoolean1000Encode.java",
    "content": "package com.alibaba.json.test.benchmark.encode;\r\n\r\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\r\nimport com.alibaba.json.test.codec.Codec;\r\n\r\npublic class ArrayBoolean1000Encode extends BenchmarkCase {\r\n\r\n    private Object object;\r\n\r\n    public ArrayBoolean1000Encode(){\r\n        super(\"BooleanArray1000Encode\");\r\n\r\n        boolean[] array = new boolean[1000];\r\n        for (int i = 0; i < array.length; ++i) {\r\n            array[i] = (i % 2 == 0);\r\n        }\r\n        this.object = array;\r\n    }\r\n\r\n    @Override\r\n    public void execute(Codec codec) throws Exception {\r\n        codec.encode(object);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/encode/ArrayByte1000Encode.java",
    "content": "package com.alibaba.json.test.benchmark.encode;\r\n\r\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\r\nimport com.alibaba.json.test.codec.Codec;\r\n\r\npublic class ArrayByte1000Encode extends BenchmarkCase {\r\n\r\n    private Object object;\r\n\r\n    public ArrayByte1000Encode(){\r\n        super(\"ArrayByte1000Encode\");\r\n\r\n        byte[] array = new byte[1000];\r\n        for (int i = 0; i < array.length; ++i) {\r\n            array[i] = (byte) (i % 100);\r\n        }\r\n        this.object = array;\r\n    }\r\n\r\n    @Override\r\n    public void execute(Codec codec) throws Exception {\r\n        codec.encode(object);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/encode/ArrayEmptyList1000Encode.java",
    "content": "package com.alibaba.json.test.benchmark.encode;\r\n\r\nimport java.util.Collections;\r\nimport java.util.List;\r\n\r\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\r\nimport com.alibaba.json.test.codec.Codec;\r\n\r\npublic class ArrayEmptyList1000Encode extends BenchmarkCase {\r\n\r\n    private Object object;\r\n\r\n    @SuppressWarnings(\"rawtypes\")\r\n    public ArrayEmptyList1000Encode(){\r\n        super(\"ArrayEmptyList1000Encode\");\r\n\r\n        List[] array = new List[1000];\r\n        for (int i = 0; i < array.length; ++i) {\r\n            array[i] = Collections.emptyList();\r\n        }\r\n        this.object = array;\r\n    }\r\n\r\n    @Override\r\n    public void execute(Codec codec) throws Exception {\r\n        codec.encode(object);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/encode/ArrayEmptyMap1000Encode.java",
    "content": "package com.alibaba.json.test.benchmark.encode;\r\n\r\nimport java.util.Collections;\r\nimport java.util.Map;\r\n\r\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\r\nimport com.alibaba.json.test.codec.Codec;\r\n\r\npublic class ArrayEmptyMap1000Encode extends BenchmarkCase {\r\n\r\n    private Object object;\r\n\r\n    @SuppressWarnings(\"rawtypes\")\r\n    public ArrayEmptyMap1000Encode(){\r\n        super(\"ArrayEmptyMap1000Encode\");\r\n\r\n        Map[] array = new Map[1000];\r\n        for (int i = 0; i < array.length; ++i) {\r\n            array[i] = Collections.emptyMap();\r\n        }\r\n        this.object = array;\r\n    }\r\n\r\n    @Override\r\n    public void execute(Codec codec) throws Exception {\r\n        codec.encode(object);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/encode/ArrayInt1000Encode.java",
    "content": "package com.alibaba.json.test.benchmark.encode;\r\n\r\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\r\nimport com.alibaba.json.test.codec.Codec;\r\n\r\npublic class ArrayInt1000Encode extends BenchmarkCase {\r\n\r\n    private Object object;\r\n\r\n    public ArrayInt1000Encode(){\r\n        super(\"ArrayInt1000Encode\");\r\n\r\n        int[] array = new int[1000];\r\n        for (int i = 0; i < array.length; ++i) {\r\n            array[i] = i;\r\n        }\r\n        this.object = array;\r\n    }\r\n\r\n    @Override\r\n    public void execute(Codec codec) throws Exception {\r\n        codec.encode(object);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/encode/ArrayLong1000Encode.java",
    "content": "package com.alibaba.json.test.benchmark.encode;\r\n\r\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\r\nimport com.alibaba.json.test.codec.Codec;\r\n\r\npublic class ArrayLong1000Encode extends BenchmarkCase {\r\n\r\n    private Object object;\r\n\r\n    public ArrayLong1000Encode(){\r\n        super(\"ArrayLong1000Encode\");\r\n\r\n        long[] array = new long[1000];\r\n        for (int i = 0; i < array.length; ++i) {\r\n            array[i] = i;\r\n        }\r\n        this.object = array;\r\n    }\r\n\r\n    @Override\r\n    public void execute(Codec codec) throws Exception {\r\n        codec.encode(object);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/encode/ArrayObjectEmptyMap1000Encode.java",
    "content": "package com.alibaba.json.test.benchmark.encode;\r\n\r\nimport java.util.Collections;\r\n\r\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\r\nimport com.alibaba.json.test.codec.Codec;\r\n\r\npublic class ArrayObjectEmptyMap1000Encode extends BenchmarkCase {\r\n\r\n    private Object object;\r\n\r\n    public ArrayObjectEmptyMap1000Encode(){\r\n        super(\"ArrayObjectEmptyMap1000Encode\");\r\n\r\n        Object[] array = new Object[1000];\r\n        for (int i = 0; i < array.length; ++i) {\r\n            array[i] = Collections.emptyMap();\r\n        }\r\n        this.object = array;\r\n    }\r\n\r\n    @Override\r\n    public void execute(Codec codec) throws Exception {\r\n        codec.encode(object);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/encode/ArrayString1000Encode.java",
    "content": "package com.alibaba.json.test.benchmark.encode;\r\n\r\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\r\nimport com.alibaba.json.test.codec.Codec;\r\n\r\npublic class ArrayString1000Encode extends BenchmarkCase {\r\n\r\n    private Object object;\r\n\r\n    public ArrayString1000Encode(){\r\n        super(\"ArrayString1000Encode\");\r\n\r\n        String[] array = new String[1000];\r\n        for (int i = 0; i < array.length; ++i) {\r\n            array[i] = Integer.toHexString(i * 1000);\r\n        }\r\n        this.object = array;\r\n    }\r\n\r\n    @Override\r\n    public void execute(Codec codec) throws Exception {\r\n        codec.encode(object);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/encode/CategoryEncode.java",
    "content": "package com.alibaba.json.test.benchmark.encode;\r\n\r\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\r\nimport com.alibaba.json.test.codec.Codec;\r\nimport com.alibaba.json.test.entity.case2.Category;\r\n\r\npublic class CategoryEncode extends BenchmarkCase {\r\n\r\n    private Object object;\r\n\r\n    public CategoryEncode(){\r\n        super(\"CategoryEncode\");\r\n\r\n        Category category = new Category();\r\n        category.setId(1);\r\n        category.setName(\"root\");\r\n        {\r\n            Category child = new Category();\r\n            child.setId(2);\r\n            child.setName(\"child\");\r\n            category.getChildren().add(child);\r\n            child.setParent(category);\r\n        }\r\n\r\n        object = category;\r\n    }\r\n\r\n    @Override\r\n    public void execute(Codec codec) throws Exception {\r\n        for (int i = 0; i < 10; ++i) {\r\n            codec.encode(object);\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/encode/EishayEncode.java",
    "content": "package com.alibaba.json.test.benchmark.encode;\n\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.List;\n\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\nimport com.alibaba.json.test.codec.Codec;\n\nimport data.media.Image;\nimport data.media.Image.Size;\nimport data.media.Media;\nimport data.media.Media.Player;\nimport data.media.MediaContent;\n\npublic class EishayEncode extends BenchmarkCase {\n\n    public final static MediaContent mediaContent = new MediaContent();\n\n    static {\n        Media media = new Media();\n        media.setUri(\"http://javaone.com/keynote.mpg\");\n        media.setTitle(\"Javaone Keynote\");\n        media.setWidth(640);\n        media.setHeight(480);\n        media.setFormat(\"video/mpg4\");\n        media.setDuration(18000000);\n        media.setSize(58982400);\n        media.setBitrate(262144);\n        media.setPersons(Arrays.asList(\"Bill Gates\", \"Steve Jobs\"));\n        media.setPlayer(Player.JAVA);\n        media.setCopyright(null);\n\n        mediaContent.media = media;\n\n        List<Image> images = new ArrayList<Image>();\n        {\n            Image image = new Image();\n            image.setUri(\"http://javaone.com/keynote_large.jpg\");\n            image.setTitle(\"Javaone Keynote\");\n            image.setWidth(1024);\n            image.setHeight(768);\n            image.setSize(Size.LARGE);\n            images.add(image);\n        }\n        {\n            Image image = new Image();\n            image.setUri(\"http://javaone.com/keynote_small.jpg\");\n            image.setTitle(\"Javaone Keynote\");\n            image.setWidth(320);\n            image.setHeight(240);\n            image.setSize(Size.SMALL);\n            images.add(image);\n        }\n        mediaContent.images = images;\n    }\n\n    public EishayEncode(){\n        super(\"EishayEncode\");\n\n    }\n\n    @Override\n    public void execute(Codec codec) throws Exception {\n        String text = codec.encode(mediaContent);\n        if (text == null) {\n            throw new Exception();\n        }\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/encode/EishayEncodeOutputStream.java",
    "content": "package com.alibaba.json.test.benchmark.encode;\n\nimport java.io.IOException;\n\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\nimport com.alibaba.json.test.codec.Codec;\n\npublic class EishayEncodeOutputStream extends BenchmarkCase {\n\n    private DummyOutputStream out = new DummyOutputStream();\n\n    public EishayEncodeOutputStream(){\n        super(\"EishayEncode-outputstream\");\n\n    }\n\n    @Override\n    public void execute(Codec codec) throws Exception {\n        codec.encode(out, EishayEncode.mediaContent);\n    }\n\n    public static class DummyOutputStream extends java.io.OutputStream {\n\n        @Override\n        public void write(int b) throws IOException {\n\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/encode/EishayEncodeToBytes.java",
    "content": "package com.alibaba.json.test.benchmark.encode;\n\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\nimport com.alibaba.json.test.codec.Codec;\n\npublic class EishayEncodeToBytes extends BenchmarkCase {\n\n    public EishayEncodeToBytes(){\n        super(\"EishayEncodeToBytes\");\n\n    }\n\n    @Override\n    public void execute(Codec codec) throws Exception {\n        byte[] text = codec.encodeToBytes(EishayEncode.mediaContent);\n        if (text == null) {\n            throw new Exception();\n        }\n    }\n\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/encode/Entity100IntEncode.java",
    "content": "package com.alibaba.json.test.benchmark.encode;\r\n\r\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\r\nimport com.alibaba.json.test.benchmark.entity.Entity100Int;\r\nimport com.alibaba.json.test.codec.Codec;\r\n\r\npublic class Entity100IntEncode extends BenchmarkCase {\r\n\r\n    private Object object;\r\n\r\n    public Entity100IntEncode(){\r\n        super(\"Entity100IntEncode\");\r\n\r\n        Entity100Int entity = new Entity100Int();\r\n\r\n        this.object = entity;\r\n    }\r\n\r\n    @Override\r\n    public void execute(Codec codec) throws Exception {\r\n        codec.encode(object);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/encode/GroupEncode.java",
    "content": "package com.alibaba.json.test.benchmark.encode;\r\n\r\nimport java.io.IOException;\r\nimport java.io.InputStream;\r\n\r\nimport org.apache.commons.io.IOUtils;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\r\nimport com.alibaba.json.test.codec.Codec;\r\nimport com.alibaba.json.test.entity.Group;\r\n\r\npublic class GroupEncode extends BenchmarkCase {\r\n\r\n    private Object object;\r\n\r\n    public GroupEncode(){\r\n        super(\"GroupEncode\");\r\n\r\n        try {\r\n            String resource = \"json/group.json\";\r\n            InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource);\r\n            String text = IOUtils.toString(is);\r\n            is.close();\r\n\r\n            object = JSON.parseObject(text, Group.class);\r\n        } catch (IOException ex) {\r\n            ex.printStackTrace();\r\n        }\r\n    }\r\n\r\n    @Override\r\n    public void execute(Codec codec) throws Exception {\r\n        for (int i = 0; i < 10; ++i) {\r\n            codec.encode(object);\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/encode/ListBoolean1000Encode.java",
    "content": "package com.alibaba.json.test.benchmark.encode;\r\n\r\nimport java.util.Arrays;\r\n\r\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\r\nimport com.alibaba.json.test.codec.Codec;\r\n\r\npublic class ListBoolean1000Encode extends BenchmarkCase {\r\n\r\n    private Object object;\r\n\r\n    public ListBoolean1000Encode(){\r\n        super(\"BooleanArray1000Encode\");\r\n\r\n        boolean[] array = new boolean[1000];\r\n        for (int i = 0; i < array.length; ++i) {\r\n            array[i] = (i % 2 == 0);\r\n        }\r\n        this.object = Arrays.asList(array);\r\n    }\r\n\r\n    @Override\r\n    public void execute(Codec codec) throws Exception {\r\n        codec.encode(object);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/encode/Map1000Encode.java",
    "content": "package com.alibaba.json.test.benchmark.encode;\r\n\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\n\r\nimport com.alibaba.json.test.benchmark.BenchmarkCase;\r\nimport com.alibaba.json.test.codec.Codec;\r\n\r\npublic class Map1000Encode extends BenchmarkCase {\r\n\r\n    private Object object;\r\n\r\n    @SuppressWarnings({ \"rawtypes\", \"unchecked\" })\r\n    public Map1000Encode(){\r\n        super(\"Map1000Encode\");\r\n\r\n        Map map = new HashMap();\r\n        for (int i = 0; i < 1000; ++i) {\r\n            map.put(Integer.toString(i), i);\r\n        }\r\n        this.object = map;\r\n    }\r\n\r\n    @Override\r\n    public void execute(Codec codec) throws Exception {\r\n        codec.encode(object);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/entity/Entity100Int.java",
    "content": "package com.alibaba.json.test.benchmark.entity;\r\n\r\npublic class Entity100Int {\r\n\r\n    private int f0  = 0;\r\n    private int f1  = 1;\r\n    private int f2  = 2;\r\n    private int f3  = 3;\r\n    private int f4  = 4;\r\n    private int f5  = 5;\r\n    private int f6  = 6;\r\n    private int f7  = 7;\r\n    private int f8  = 8;\r\n    private int f9  = 9;\r\n    private int f10 = 10;\r\n    private int f11 = 11;\r\n    private int f12 = 12;\r\n    private int f13 = 13;\r\n    private int f14 = 14;\r\n    private int f15 = 15;\r\n    private int f16 = 16;\r\n    private int f17 = 17;\r\n    private int f18 = 18;\r\n    private int f19 = 19;\r\n    private int f20 = 20;\r\n    private int f21 = 21;\r\n    private int f22 = 22;\r\n    private int f23 = 23;\r\n    private int f24 = 24;\r\n    private int f25 = 25;\r\n    private int f26 = 26;\r\n    private int f27 = 27;\r\n    private int f28 = 28;\r\n    private int f29 = 29;\r\n    private int f30 = 30;\r\n    private int f31 = 31;\r\n    private int f32 = 32;\r\n    private int f33 = 33;\r\n    private int f34 = 34;\r\n    private int f35 = 35;\r\n    private int f36 = 36;\r\n    private int f37 = 37;\r\n    private int f38 = 38;\r\n    private int f39 = 39;\r\n    private int f40 = 40;\r\n    private int f41 = 41;\r\n    private int f42 = 42;\r\n    private int f43 = 43;\r\n    private int f44 = 44;\r\n    private int f45 = 45;\r\n    private int f46 = 46;\r\n    private int f47 = 47;\r\n    private int f48 = 48;\r\n    private int f49 = 49;\r\n    private int f50 = 50;\r\n    private int f51 = 51;\r\n    private int f52 = 52;\r\n    private int f53 = 53;\r\n    private int f54 = 54;\r\n    private int f55 = 55;\r\n    private int f56 = 56;\r\n    private int f57 = 57;\r\n    private int f58 = 58;\r\n    private int f59 = 59;\r\n    private int f60 = 60;\r\n    private int f61 = 61;\r\n    private int f62 = 62;\r\n    private int f63 = 63;\r\n    private int f64 = 64;\r\n    private int f65 = 65;\r\n    private int f66 = 66;\r\n    private int f67 = 67;\r\n    private int f68 = 68;\r\n    private int f69 = 69;\r\n    private int f70 = 70;\r\n    private int f71 = 71;\r\n    private int f72 = 72;\r\n    private int f73 = 73;\r\n    private int f74 = 74;\r\n    private int f75 = 75;\r\n    private int f76 = 76;\r\n    private int f77 = 77;\r\n    private int f78 = 78;\r\n    private int f79 = 79;\r\n    private int f80 = 80;\r\n    private int f81 = 81;\r\n    private int f82 = 82;\r\n    private int f83 = 83;\r\n    private int f84 = 84;\r\n    private int f85 = 85;\r\n    private int f86 = 86;\r\n    private int f87 = 87;\r\n    private int f88 = 88;\r\n    private int f89 = 89;\r\n    private int f90 = 90;\r\n    private int f91 = 91;\r\n    private int f92 = 92;\r\n    private int f93 = 93;\r\n    private int f94 = 94;\r\n    private int f95 = 95;\r\n    private int f96 = 96;\r\n    private int f97 = 97;\r\n    private int f98 = 98;\r\n    private int f99 = 99;\r\n\r\n    public int getF0() {\r\n        return f0;\r\n    }\r\n\r\n    public void setF0(int f0) {\r\n        this.f0 = f0;\r\n    }\r\n\r\n    public int getF1() {\r\n        return f1;\r\n    }\r\n\r\n    public void setF1(int f1) {\r\n        this.f1 = f1;\r\n    }\r\n\r\n    public int getF2() {\r\n        return f2;\r\n    }\r\n\r\n    public void setF2(int f2) {\r\n        this.f2 = f2;\r\n    }\r\n\r\n    public int getF3() {\r\n        return f3;\r\n    }\r\n\r\n    public void setF3(int f3) {\r\n        this.f3 = f3;\r\n    }\r\n\r\n    public int getF4() {\r\n        return f4;\r\n    }\r\n\r\n    public void setF4(int f4) {\r\n        this.f4 = f4;\r\n    }\r\n\r\n    public int getF5() {\r\n        return f5;\r\n    }\r\n\r\n    public void setF5(int f5) {\r\n        this.f5 = f5;\r\n    }\r\n\r\n    public int getF6() {\r\n        return f6;\r\n    }\r\n\r\n    public void setF6(int f6) {\r\n        this.f6 = f6;\r\n    }\r\n\r\n    public int getF7() {\r\n        return f7;\r\n    }\r\n\r\n    public void setF7(int f7) {\r\n        this.f7 = f7;\r\n    }\r\n\r\n    public int getF8() {\r\n        return f8;\r\n    }\r\n\r\n    public void setF8(int f8) {\r\n        this.f8 = f8;\r\n    }\r\n\r\n    public int getF9() {\r\n        return f9;\r\n    }\r\n\r\n    public void setF9(int f9) {\r\n        this.f9 = f9;\r\n    }\r\n\r\n    public int getF10() {\r\n        return f10;\r\n    }\r\n\r\n    public void setF10(int f10) {\r\n        this.f10 = f10;\r\n    }\r\n\r\n    public int getF11() {\r\n        return f11;\r\n    }\r\n\r\n    public void setF11(int f11) {\r\n        this.f11 = f11;\r\n    }\r\n\r\n    public int getF12() {\r\n        return f12;\r\n    }\r\n\r\n    public void setF12(int f12) {\r\n        this.f12 = f12;\r\n    }\r\n\r\n    public int getF13() {\r\n        return f13;\r\n    }\r\n\r\n    public void setF13(int f13) {\r\n        this.f13 = f13;\r\n    }\r\n\r\n    public int getF14() {\r\n        return f14;\r\n    }\r\n\r\n    public void setF14(int f14) {\r\n        this.f14 = f14;\r\n    }\r\n\r\n    public int getF15() {\r\n        return f15;\r\n    }\r\n\r\n    public void setF15(int f15) {\r\n        this.f15 = f15;\r\n    }\r\n\r\n    public int getF16() {\r\n        return f16;\r\n    }\r\n\r\n    public void setF16(int f16) {\r\n        this.f16 = f16;\r\n    }\r\n\r\n    public int getF17() {\r\n        return f17;\r\n    }\r\n\r\n    public void setF17(int f17) {\r\n        this.f17 = f17;\r\n    }\r\n\r\n    public int getF18() {\r\n        return f18;\r\n    }\r\n\r\n    public void setF18(int f18) {\r\n        this.f18 = f18;\r\n    }\r\n\r\n    public int getF19() {\r\n        return f19;\r\n    }\r\n\r\n    public void setF19(int f19) {\r\n        this.f19 = f19;\r\n    }\r\n\r\n    public int getF20() {\r\n        return f20;\r\n    }\r\n\r\n    public void setF20(int f20) {\r\n        this.f20 = f20;\r\n    }\r\n\r\n    public int getF21() {\r\n        return f21;\r\n    }\r\n\r\n    public void setF21(int f21) {\r\n        this.f21 = f21;\r\n    }\r\n\r\n    public int getF22() {\r\n        return f22;\r\n    }\r\n\r\n    public void setF22(int f22) {\r\n        this.f22 = f22;\r\n    }\r\n\r\n    public int getF23() {\r\n        return f23;\r\n    }\r\n\r\n    public void setF23(int f23) {\r\n        this.f23 = f23;\r\n    }\r\n\r\n    public int getF24() {\r\n        return f24;\r\n    }\r\n\r\n    public void setF24(int f24) {\r\n        this.f24 = f24;\r\n    }\r\n\r\n    public int getF25() {\r\n        return f25;\r\n    }\r\n\r\n    public void setF25(int f25) {\r\n        this.f25 = f25;\r\n    }\r\n\r\n    public int getF26() {\r\n        return f26;\r\n    }\r\n\r\n    public void setF26(int f26) {\r\n        this.f26 = f26;\r\n    }\r\n\r\n    public int getF27() {\r\n        return f27;\r\n    }\r\n\r\n    public void setF27(int f27) {\r\n        this.f27 = f27;\r\n    }\r\n\r\n    public int getF28() {\r\n        return f28;\r\n    }\r\n\r\n    public void setF28(int f28) {\r\n        this.f28 = f28;\r\n    }\r\n\r\n    public int getF29() {\r\n        return f29;\r\n    }\r\n\r\n    public void setF29(int f29) {\r\n        this.f29 = f29;\r\n    }\r\n\r\n    public int getF30() {\r\n        return f30;\r\n    }\r\n\r\n    public void setF30(int f30) {\r\n        this.f30 = f30;\r\n    }\r\n\r\n    public int getF31() {\r\n        return f31;\r\n    }\r\n\r\n    public void setF31(int f31) {\r\n        this.f31 = f31;\r\n    }\r\n\r\n    public int getF32() {\r\n        return f32;\r\n    }\r\n\r\n    public void setF32(int f32) {\r\n        this.f32 = f32;\r\n    }\r\n\r\n    public int getF33() {\r\n        return f33;\r\n    }\r\n\r\n    public void setF33(int f33) {\r\n        this.f33 = f33;\r\n    }\r\n\r\n    public int getF34() {\r\n        return f34;\r\n    }\r\n\r\n    public void setF34(int f34) {\r\n        this.f34 = f34;\r\n    }\r\n\r\n    public int getF35() {\r\n        return f35;\r\n    }\r\n\r\n    public void setF35(int f35) {\r\n        this.f35 = f35;\r\n    }\r\n\r\n    public int getF36() {\r\n        return f36;\r\n    }\r\n\r\n    public void setF36(int f36) {\r\n        this.f36 = f36;\r\n    }\r\n\r\n    public int getF37() {\r\n        return f37;\r\n    }\r\n\r\n    public void setF37(int f37) {\r\n        this.f37 = f37;\r\n    }\r\n\r\n    public int getF38() {\r\n        return f38;\r\n    }\r\n\r\n    public void setF38(int f38) {\r\n        this.f38 = f38;\r\n    }\r\n\r\n    public int getF39() {\r\n        return f39;\r\n    }\r\n\r\n    public void setF39(int f39) {\r\n        this.f39 = f39;\r\n    }\r\n\r\n    public int getF40() {\r\n        return f40;\r\n    }\r\n\r\n    public void setF40(int f40) {\r\n        this.f40 = f40;\r\n    }\r\n\r\n    public int getF41() {\r\n        return f41;\r\n    }\r\n\r\n    public void setF41(int f41) {\r\n        this.f41 = f41;\r\n    }\r\n\r\n    public int getF42() {\r\n        return f42;\r\n    }\r\n\r\n    public void setF42(int f42) {\r\n        this.f42 = f42;\r\n    }\r\n\r\n    public int getF43() {\r\n        return f43;\r\n    }\r\n\r\n    public void setF43(int f43) {\r\n        this.f43 = f43;\r\n    }\r\n\r\n    public int getF44() {\r\n        return f44;\r\n    }\r\n\r\n    public void setF44(int f44) {\r\n        this.f44 = f44;\r\n    }\r\n\r\n    public int getF45() {\r\n        return f45;\r\n    }\r\n\r\n    public void setF45(int f45) {\r\n        this.f45 = f45;\r\n    }\r\n\r\n    public int getF46() {\r\n        return f46;\r\n    }\r\n\r\n    public void setF46(int f46) {\r\n        this.f46 = f46;\r\n    }\r\n\r\n    public int getF47() {\r\n        return f47;\r\n    }\r\n\r\n    public void setF47(int f47) {\r\n        this.f47 = f47;\r\n    }\r\n\r\n    public int getF48() {\r\n        return f48;\r\n    }\r\n\r\n    public void setF48(int f48) {\r\n        this.f48 = f48;\r\n    }\r\n\r\n    public int getF49() {\r\n        return f49;\r\n    }\r\n\r\n    public void setF49(int f49) {\r\n        this.f49 = f49;\r\n    }\r\n\r\n    public int getF50() {\r\n        return f50;\r\n    }\r\n\r\n    public void setF50(int f50) {\r\n        this.f50 = f50;\r\n    }\r\n\r\n    public int getF51() {\r\n        return f51;\r\n    }\r\n\r\n    public void setF51(int f51) {\r\n        this.f51 = f51;\r\n    }\r\n\r\n    public int getF52() {\r\n        return f52;\r\n    }\r\n\r\n    public void setF52(int f52) {\r\n        this.f52 = f52;\r\n    }\r\n\r\n    public int getF53() {\r\n        return f53;\r\n    }\r\n\r\n    public void setF53(int f53) {\r\n        this.f53 = f53;\r\n    }\r\n\r\n    public int getF54() {\r\n        return f54;\r\n    }\r\n\r\n    public void setF54(int f54) {\r\n        this.f54 = f54;\r\n    }\r\n\r\n    public int getF55() {\r\n        return f55;\r\n    }\r\n\r\n    public void setF55(int f55) {\r\n        this.f55 = f55;\r\n    }\r\n\r\n    public int getF56() {\r\n        return f56;\r\n    }\r\n\r\n    public void setF56(int f56) {\r\n        this.f56 = f56;\r\n    }\r\n\r\n    public int getF57() {\r\n        return f57;\r\n    }\r\n\r\n    public void setF57(int f57) {\r\n        this.f57 = f57;\r\n    }\r\n\r\n    public int getF58() {\r\n        return f58;\r\n    }\r\n\r\n    public void setF58(int f58) {\r\n        this.f58 = f58;\r\n    }\r\n\r\n    public int getF59() {\r\n        return f59;\r\n    }\r\n\r\n    public void setF59(int f59) {\r\n        this.f59 = f59;\r\n    }\r\n\r\n    public int getF60() {\r\n        return f60;\r\n    }\r\n\r\n    public void setF60(int f60) {\r\n        this.f60 = f60;\r\n    }\r\n\r\n    public int getF61() {\r\n        return f61;\r\n    }\r\n\r\n    public void setF61(int f61) {\r\n        this.f61 = f61;\r\n    }\r\n\r\n    public int getF62() {\r\n        return f62;\r\n    }\r\n\r\n    public void setF62(int f62) {\r\n        this.f62 = f62;\r\n    }\r\n\r\n    public int getF63() {\r\n        return f63;\r\n    }\r\n\r\n    public void setF63(int f63) {\r\n        this.f63 = f63;\r\n    }\r\n\r\n    public int getF64() {\r\n        return f64;\r\n    }\r\n\r\n    public void setF64(int f64) {\r\n        this.f64 = f64;\r\n    }\r\n\r\n    public int getF65() {\r\n        return f65;\r\n    }\r\n\r\n    public void setF65(int f65) {\r\n        this.f65 = f65;\r\n    }\r\n\r\n    public int getF66() {\r\n        return f66;\r\n    }\r\n\r\n    public void setF66(int f66) {\r\n        this.f66 = f66;\r\n    }\r\n\r\n    public int getF67() {\r\n        return f67;\r\n    }\r\n\r\n    public void setF67(int f67) {\r\n        this.f67 = f67;\r\n    }\r\n\r\n    public int getF68() {\r\n        return f68;\r\n    }\r\n\r\n    public void setF68(int f68) {\r\n        this.f68 = f68;\r\n    }\r\n\r\n    public int getF69() {\r\n        return f69;\r\n    }\r\n\r\n    public void setF69(int f69) {\r\n        this.f69 = f69;\r\n    }\r\n\r\n    public int getF70() {\r\n        return f70;\r\n    }\r\n\r\n    public void setF70(int f70) {\r\n        this.f70 = f70;\r\n    }\r\n\r\n    public int getF71() {\r\n        return f71;\r\n    }\r\n\r\n    public void setF71(int f71) {\r\n        this.f71 = f71;\r\n    }\r\n\r\n    public int getF72() {\r\n        return f72;\r\n    }\r\n\r\n    public void setF72(int f72) {\r\n        this.f72 = f72;\r\n    }\r\n\r\n    public int getF73() {\r\n        return f73;\r\n    }\r\n\r\n    public void setF73(int f73) {\r\n        this.f73 = f73;\r\n    }\r\n\r\n    public int getF74() {\r\n        return f74;\r\n    }\r\n\r\n    public void setF74(int f74) {\r\n        this.f74 = f74;\r\n    }\r\n\r\n    public int getF75() {\r\n        return f75;\r\n    }\r\n\r\n    public void setF75(int f75) {\r\n        this.f75 = f75;\r\n    }\r\n\r\n    public int getF76() {\r\n        return f76;\r\n    }\r\n\r\n    public void setF76(int f76) {\r\n        this.f76 = f76;\r\n    }\r\n\r\n    public int getF77() {\r\n        return f77;\r\n    }\r\n\r\n    public void setF77(int f77) {\r\n        this.f77 = f77;\r\n    }\r\n\r\n    public int getF78() {\r\n        return f78;\r\n    }\r\n\r\n    public void setF78(int f78) {\r\n        this.f78 = f78;\r\n    }\r\n\r\n    public int getF79() {\r\n        return f79;\r\n    }\r\n\r\n    public void setF79(int f79) {\r\n        this.f79 = f79;\r\n    }\r\n\r\n    public int getF80() {\r\n        return f80;\r\n    }\r\n\r\n    public void setF80(int f80) {\r\n        this.f80 = f80;\r\n    }\r\n\r\n    public int getF81() {\r\n        return f81;\r\n    }\r\n\r\n    public void setF81(int f81) {\r\n        this.f81 = f81;\r\n    }\r\n\r\n    public int getF82() {\r\n        return f82;\r\n    }\r\n\r\n    public void setF82(int f82) {\r\n        this.f82 = f82;\r\n    }\r\n\r\n    public int getF83() {\r\n        return f83;\r\n    }\r\n\r\n    public void setF83(int f83) {\r\n        this.f83 = f83;\r\n    }\r\n\r\n    public int getF84() {\r\n        return f84;\r\n    }\r\n\r\n    public void setF84(int f84) {\r\n        this.f84 = f84;\r\n    }\r\n\r\n    public int getF85() {\r\n        return f85;\r\n    }\r\n\r\n    public void setF85(int f85) {\r\n        this.f85 = f85;\r\n    }\r\n\r\n    public int getF86() {\r\n        return f86;\r\n    }\r\n\r\n    public void setF86(int f86) {\r\n        this.f86 = f86;\r\n    }\r\n\r\n    public int getF87() {\r\n        return f87;\r\n    }\r\n\r\n    public void setF87(int f87) {\r\n        this.f87 = f87;\r\n    }\r\n\r\n    public int getF88() {\r\n        return f88;\r\n    }\r\n\r\n    public void setF88(int f88) {\r\n        this.f88 = f88;\r\n    }\r\n\r\n    public int getF89() {\r\n        return f89;\r\n    }\r\n\r\n    public void setF89(int f89) {\r\n        this.f89 = f89;\r\n    }\r\n\r\n    public int getF90() {\r\n        return f90;\r\n    }\r\n\r\n    public void setF90(int f90) {\r\n        this.f90 = f90;\r\n    }\r\n\r\n    public int getF91() {\r\n        return f91;\r\n    }\r\n\r\n    public void setF91(int f91) {\r\n        this.f91 = f91;\r\n    }\r\n\r\n    public int getF92() {\r\n        return f92;\r\n    }\r\n\r\n    public void setF92(int f92) {\r\n        this.f92 = f92;\r\n    }\r\n\r\n    public int getF93() {\r\n        return f93;\r\n    }\r\n\r\n    public void setF93(int f93) {\r\n        this.f93 = f93;\r\n    }\r\n\r\n    public int getF94() {\r\n        return f94;\r\n    }\r\n\r\n    public void setF94(int f94) {\r\n        this.f94 = f94;\r\n    }\r\n\r\n    public int getF95() {\r\n        return f95;\r\n    }\r\n\r\n    public void setF95(int f95) {\r\n        this.f95 = f95;\r\n    }\r\n\r\n    public int getF96() {\r\n        return f96;\r\n    }\r\n\r\n    public void setF96(int f96) {\r\n        this.f96 = f96;\r\n    }\r\n\r\n    public int getF97() {\r\n        return f97;\r\n    }\r\n\r\n    public void setF97(int f97) {\r\n        this.f97 = f97;\r\n    }\r\n\r\n    public int getF98() {\r\n        return f98;\r\n    }\r\n\r\n    public void setF98(int f98) {\r\n        this.f98 = f98;\r\n    }\r\n\r\n    public int getF99() {\r\n        return f99;\r\n    }\r\n\r\n    public void setF99(int f99) {\r\n        this.f99 = f99;\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/entity/Entity100String.java",
    "content": "package com.alibaba.json.test.benchmark.entity;\r\n\r\npublic class Entity100String {\r\n\r\n    private String f0  = \"0\";\r\n    private String f1  = \"1\";\r\n    private String f2  = \"2\";\r\n    private String f3  = \"3\";\r\n    private String f4  = \"4\";\r\n    private String f5  = \"5\";\r\n    private String f6  = \"6\";\r\n    private String f7  = \"7\";\r\n    private String f8  = \"8\";\r\n    private String f9  = \"9\";\r\n    private String f10 = \"10\";\r\n    private String f11 = \"11\";\r\n    private String f12 = \"12\";\r\n    private String f13 = \"13\";\r\n    private String f14 = \"14\";\r\n    private String f15 = \"15\";\r\n    private String f16 = \"16\";\r\n    private String f17 = \"17\";\r\n    private String f18 = \"18\";\r\n    private String f19 = \"19\";\r\n    private String f20 = \"20\";\r\n    private String f21 = \"21\";\r\n    private String f22 = \"22\";\r\n    private String f23 = \"23\";\r\n    private String f24 = \"24\";\r\n    private String f25 = \"25\";\r\n    private String f26 = \"26\";\r\n    private String f27 = \"27\";\r\n    private String f28 = \"28\";\r\n    private String f29 = \"29\";\r\n    private String f30 = \"30\";\r\n    private String f31 = \"31\";\r\n    private String f32 = \"32\";\r\n    private String f33 = \"33\";\r\n    private String f34 = \"34\";\r\n    private String f35 = \"35\";\r\n    private String f36 = \"36\";\r\n    private String f37 = \"37\";\r\n    private String f38 = \"38\";\r\n    private String f39 = \"39\";\r\n    private String f40 = \"40\";\r\n    private String f41 = \"41\";\r\n    private String f42 = \"42\";\r\n    private String f43 = \"43\";\r\n    private String f44 = \"44\";\r\n    private String f45 = \"45\";\r\n    private String f46 = \"46\";\r\n    private String f47 = \"47\";\r\n    private String f48 = \"48\";\r\n    private String f49 = \"49\";\r\n    private String f50 = \"50\";\r\n    private String f51 = \"51\";\r\n    private String f52 = \"52\";\r\n    private String f53 = \"53\";\r\n    private String f54 = \"54\";\r\n    private String f55 = \"55\";\r\n    private String f56 = \"56\";\r\n    private String f57 = \"57\";\r\n    private String f58 = \"58\";\r\n    private String f59 = \"59\";\r\n    private String f60 = \"60\";\r\n    private String f61 = \"61\";\r\n    private String f62 = \"62\";\r\n    private String f63 = \"63\";\r\n    private String f64 = \"64\";\r\n    private String f65 = \"65\";\r\n    private String f66 = \"66\";\r\n    private String f67 = \"67\";\r\n    private String f68 = \"68\";\r\n    private String f69 = \"69\";\r\n    private String f70 = \"70\";\r\n    private String f71 = \"71\";\r\n    private String f72 = \"72\";\r\n    private String f73 = \"73\";\r\n    private String f74 = \"74\";\r\n    private String f75 = \"75\";\r\n    private String f76 = \"76\";\r\n    private String f77 = \"77\";\r\n    private String f78 = \"78\";\r\n    private String f79 = \"79\";\r\n    private String f80 = \"80\";\r\n    private String f81 = \"81\";\r\n    private String f82 = \"82\";\r\n    private String f83 = \"83\";\r\n    private String f84 = \"84\";\r\n    private String f85 = \"85\";\r\n    private String f86 = \"86\";\r\n    private String f87 = \"87\";\r\n    private String f88 = \"88\";\r\n    private String f89 = \"89\";\r\n    private String f90 = \"90\";\r\n    private String f91 = \"91\";\r\n    private String f92 = \"92\";\r\n    private String f93 = \"93\";\r\n    private String f94 = \"94\";\r\n    private String f95 = \"95\";\r\n    private String f96 = \"96\";\r\n    private String f97 = \"97\";\r\n    private String f98 = \"98\";\r\n    private String f99 = \"99\";\r\n\r\n    public String getF0() {\r\n        return f0;\r\n    }\r\n\r\n    public void setF0(String f0) {\r\n        this.f0 = f0;\r\n    }\r\n\r\n    public String getF1() {\r\n        return f1;\r\n    }\r\n\r\n    public void setF1(String f1) {\r\n        this.f1 = f1;\r\n    }\r\n\r\n    public String getF2() {\r\n        return f2;\r\n    }\r\n\r\n    public void setF2(String f2) {\r\n        this.f2 = f2;\r\n    }\r\n\r\n    public String getF3() {\r\n        return f3;\r\n    }\r\n\r\n    public void setF3(String f3) {\r\n        this.f3 = f3;\r\n    }\r\n\r\n    public String getF4() {\r\n        return f4;\r\n    }\r\n\r\n    public void setF4(String f4) {\r\n        this.f4 = f4;\r\n    }\r\n\r\n    public String getF5() {\r\n        return f5;\r\n    }\r\n\r\n    public void setF5(String f5) {\r\n        this.f5 = f5;\r\n    }\r\n\r\n    public String getF6() {\r\n        return f6;\r\n    }\r\n\r\n    public void setF6(String f6) {\r\n        this.f6 = f6;\r\n    }\r\n\r\n    public String getF7() {\r\n        return f7;\r\n    }\r\n\r\n    public void setF7(String f7) {\r\n        this.f7 = f7;\r\n    }\r\n\r\n    public String getF8() {\r\n        return f8;\r\n    }\r\n\r\n    public void setF8(String f8) {\r\n        this.f8 = f8;\r\n    }\r\n\r\n    public String getF9() {\r\n        return f9;\r\n    }\r\n\r\n    public void setF9(String f9) {\r\n        this.f9 = f9;\r\n    }\r\n\r\n    public String getF10() {\r\n        return f10;\r\n    }\r\n\r\n    public void setF10(String f10) {\r\n        this.f10 = f10;\r\n    }\r\n\r\n    public String getF11() {\r\n        return f11;\r\n    }\r\n\r\n    public void setF11(String f11) {\r\n        this.f11 = f11;\r\n    }\r\n\r\n    public String getF12() {\r\n        return f12;\r\n    }\r\n\r\n    public void setF12(String f12) {\r\n        this.f12 = f12;\r\n    }\r\n\r\n    public String getF13() {\r\n        return f13;\r\n    }\r\n\r\n    public void setF13(String f13) {\r\n        this.f13 = f13;\r\n    }\r\n\r\n    public String getF14() {\r\n        return f14;\r\n    }\r\n\r\n    public void setF14(String f14) {\r\n        this.f14 = f14;\r\n    }\r\n\r\n    public String getF15() {\r\n        return f15;\r\n    }\r\n\r\n    public void setF15(String f15) {\r\n        this.f15 = f15;\r\n    }\r\n\r\n    public String getF16() {\r\n        return f16;\r\n    }\r\n\r\n    public void setF16(String f16) {\r\n        this.f16 = f16;\r\n    }\r\n\r\n    public String getF17() {\r\n        return f17;\r\n    }\r\n\r\n    public void setF17(String f17) {\r\n        this.f17 = f17;\r\n    }\r\n\r\n    public String getF18() {\r\n        return f18;\r\n    }\r\n\r\n    public void setF18(String f18) {\r\n        this.f18 = f18;\r\n    }\r\n\r\n    public String getF19() {\r\n        return f19;\r\n    }\r\n\r\n    public void setF19(String f19) {\r\n        this.f19 = f19;\r\n    }\r\n\r\n    public String getF20() {\r\n        return f20;\r\n    }\r\n\r\n    public void setF20(String f20) {\r\n        this.f20 = f20;\r\n    }\r\n\r\n    public String getF21() {\r\n        return f21;\r\n    }\r\n\r\n    public void setF21(String f21) {\r\n        this.f21 = f21;\r\n    }\r\n\r\n    public String getF22() {\r\n        return f22;\r\n    }\r\n\r\n    public void setF22(String f22) {\r\n        this.f22 = f22;\r\n    }\r\n\r\n    public String getF23() {\r\n        return f23;\r\n    }\r\n\r\n    public void setF23(String f23) {\r\n        this.f23 = f23;\r\n    }\r\n\r\n    public String getF24() {\r\n        return f24;\r\n    }\r\n\r\n    public void setF24(String f24) {\r\n        this.f24 = f24;\r\n    }\r\n\r\n    public String getF25() {\r\n        return f25;\r\n    }\r\n\r\n    public void setF25(String f25) {\r\n        this.f25 = f25;\r\n    }\r\n\r\n    public String getF26() {\r\n        return f26;\r\n    }\r\n\r\n    public void setF26(String f26) {\r\n        this.f26 = f26;\r\n    }\r\n\r\n    public String getF27() {\r\n        return f27;\r\n    }\r\n\r\n    public void setF27(String f27) {\r\n        this.f27 = f27;\r\n    }\r\n\r\n    public String getF28() {\r\n        return f28;\r\n    }\r\n\r\n    public void setF28(String f28) {\r\n        this.f28 = f28;\r\n    }\r\n\r\n    public String getF29() {\r\n        return f29;\r\n    }\r\n\r\n    public void setF29(String f29) {\r\n        this.f29 = f29;\r\n    }\r\n\r\n    public String getF30() {\r\n        return f30;\r\n    }\r\n\r\n    public void setF30(String f30) {\r\n        this.f30 = f30;\r\n    }\r\n\r\n    public String getF31() {\r\n        return f31;\r\n    }\r\n\r\n    public void setF31(String f31) {\r\n        this.f31 = f31;\r\n    }\r\n\r\n    public String getF32() {\r\n        return f32;\r\n    }\r\n\r\n    public void setF32(String f32) {\r\n        this.f32 = f32;\r\n    }\r\n\r\n    public String getF33() {\r\n        return f33;\r\n    }\r\n\r\n    public void setF33(String f33) {\r\n        this.f33 = f33;\r\n    }\r\n\r\n    public String getF34() {\r\n        return f34;\r\n    }\r\n\r\n    public void setF34(String f34) {\r\n        this.f34 = f34;\r\n    }\r\n\r\n    public String getF35() {\r\n        return f35;\r\n    }\r\n\r\n    public void setF35(String f35) {\r\n        this.f35 = f35;\r\n    }\r\n\r\n    public String getF36() {\r\n        return f36;\r\n    }\r\n\r\n    public void setF36(String f36) {\r\n        this.f36 = f36;\r\n    }\r\n\r\n    public String getF37() {\r\n        return f37;\r\n    }\r\n\r\n    public void setF37(String f37) {\r\n        this.f37 = f37;\r\n    }\r\n\r\n    public String getF38() {\r\n        return f38;\r\n    }\r\n\r\n    public void setF38(String f38) {\r\n        this.f38 = f38;\r\n    }\r\n\r\n    public String getF39() {\r\n        return f39;\r\n    }\r\n\r\n    public void setF39(String f39) {\r\n        this.f39 = f39;\r\n    }\r\n\r\n    public String getF40() {\r\n        return f40;\r\n    }\r\n\r\n    public void setF40(String f40) {\r\n        this.f40 = f40;\r\n    }\r\n\r\n    public String getF41() {\r\n        return f41;\r\n    }\r\n\r\n    public void setF41(String f41) {\r\n        this.f41 = f41;\r\n    }\r\n\r\n    public String getF42() {\r\n        return f42;\r\n    }\r\n\r\n    public void setF42(String f42) {\r\n        this.f42 = f42;\r\n    }\r\n\r\n    public String getF43() {\r\n        return f43;\r\n    }\r\n\r\n    public void setF43(String f43) {\r\n        this.f43 = f43;\r\n    }\r\n\r\n    public String getF44() {\r\n        return f44;\r\n    }\r\n\r\n    public void setF44(String f44) {\r\n        this.f44 = f44;\r\n    }\r\n\r\n    public String getF45() {\r\n        return f45;\r\n    }\r\n\r\n    public void setF45(String f45) {\r\n        this.f45 = f45;\r\n    }\r\n\r\n    public String getF46() {\r\n        return f46;\r\n    }\r\n\r\n    public void setF46(String f46) {\r\n        this.f46 = f46;\r\n    }\r\n\r\n    public String getF47() {\r\n        return f47;\r\n    }\r\n\r\n    public void setF47(String f47) {\r\n        this.f47 = f47;\r\n    }\r\n\r\n    public String getF48() {\r\n        return f48;\r\n    }\r\n\r\n    public void setF48(String f48) {\r\n        this.f48 = f48;\r\n    }\r\n\r\n    public String getF49() {\r\n        return f49;\r\n    }\r\n\r\n    public void setF49(String f49) {\r\n        this.f49 = f49;\r\n    }\r\n\r\n    public String getF50() {\r\n        return f50;\r\n    }\r\n\r\n    public void setF50(String f50) {\r\n        this.f50 = f50;\r\n    }\r\n\r\n    public String getF51() {\r\n        return f51;\r\n    }\r\n\r\n    public void setF51(String f51) {\r\n        this.f51 = f51;\r\n    }\r\n\r\n    public String getF52() {\r\n        return f52;\r\n    }\r\n\r\n    public void setF52(String f52) {\r\n        this.f52 = f52;\r\n    }\r\n\r\n    public String getF53() {\r\n        return f53;\r\n    }\r\n\r\n    public void setF53(String f53) {\r\n        this.f53 = f53;\r\n    }\r\n\r\n    public String getF54() {\r\n        return f54;\r\n    }\r\n\r\n    public void setF54(String f54) {\r\n        this.f54 = f54;\r\n    }\r\n\r\n    public String getF55() {\r\n        return f55;\r\n    }\r\n\r\n    public void setF55(String f55) {\r\n        this.f55 = f55;\r\n    }\r\n\r\n    public String getF56() {\r\n        return f56;\r\n    }\r\n\r\n    public void setF56(String f56) {\r\n        this.f56 = f56;\r\n    }\r\n\r\n    public String getF57() {\r\n        return f57;\r\n    }\r\n\r\n    public void setF57(String f57) {\r\n        this.f57 = f57;\r\n    }\r\n\r\n    public String getF58() {\r\n        return f58;\r\n    }\r\n\r\n    public void setF58(String f58) {\r\n        this.f58 = f58;\r\n    }\r\n\r\n    public String getF59() {\r\n        return f59;\r\n    }\r\n\r\n    public void setF59(String f59) {\r\n        this.f59 = f59;\r\n    }\r\n\r\n    public String getF60() {\r\n        return f60;\r\n    }\r\n\r\n    public void setF60(String f60) {\r\n        this.f60 = f60;\r\n    }\r\n\r\n    public String getF61() {\r\n        return f61;\r\n    }\r\n\r\n    public void setF61(String f61) {\r\n        this.f61 = f61;\r\n    }\r\n\r\n    public String getF62() {\r\n        return f62;\r\n    }\r\n\r\n    public void setF62(String f62) {\r\n        this.f62 = f62;\r\n    }\r\n\r\n    public String getF63() {\r\n        return f63;\r\n    }\r\n\r\n    public void setF63(String f63) {\r\n        this.f63 = f63;\r\n    }\r\n\r\n    public String getF64() {\r\n        return f64;\r\n    }\r\n\r\n    public void setF64(String f64) {\r\n        this.f64 = f64;\r\n    }\r\n\r\n    public String getF65() {\r\n        return f65;\r\n    }\r\n\r\n    public void setF65(String f65) {\r\n        this.f65 = f65;\r\n    }\r\n\r\n    public String getF66() {\r\n        return f66;\r\n    }\r\n\r\n    public void setF66(String f66) {\r\n        this.f66 = f66;\r\n    }\r\n\r\n    public String getF67() {\r\n        return f67;\r\n    }\r\n\r\n    public void setF67(String f67) {\r\n        this.f67 = f67;\r\n    }\r\n\r\n    public String getF68() {\r\n        return f68;\r\n    }\r\n\r\n    public void setF68(String f68) {\r\n        this.f68 = f68;\r\n    }\r\n\r\n    public String getF69() {\r\n        return f69;\r\n    }\r\n\r\n    public void setF69(String f69) {\r\n        this.f69 = f69;\r\n    }\r\n\r\n    public String getF70() {\r\n        return f70;\r\n    }\r\n\r\n    public void setF70(String f70) {\r\n        this.f70 = f70;\r\n    }\r\n\r\n    public String getF71() {\r\n        return f71;\r\n    }\r\n\r\n    public void setF71(String f71) {\r\n        this.f71 = f71;\r\n    }\r\n\r\n    public String getF72() {\r\n        return f72;\r\n    }\r\n\r\n    public void setF72(String f72) {\r\n        this.f72 = f72;\r\n    }\r\n\r\n    public String getF73() {\r\n        return f73;\r\n    }\r\n\r\n    public void setF73(String f73) {\r\n        this.f73 = f73;\r\n    }\r\n\r\n    public String getF74() {\r\n        return f74;\r\n    }\r\n\r\n    public void setF74(String f74) {\r\n        this.f74 = f74;\r\n    }\r\n\r\n    public String getF75() {\r\n        return f75;\r\n    }\r\n\r\n    public void setF75(String f75) {\r\n        this.f75 = f75;\r\n    }\r\n\r\n    public String getF76() {\r\n        return f76;\r\n    }\r\n\r\n    public void setF76(String f76) {\r\n        this.f76 = f76;\r\n    }\r\n\r\n    public String getF77() {\r\n        return f77;\r\n    }\r\n\r\n    public void setF77(String f77) {\r\n        this.f77 = f77;\r\n    }\r\n\r\n    public String getF78() {\r\n        return f78;\r\n    }\r\n\r\n    public void setF78(String f78) {\r\n        this.f78 = f78;\r\n    }\r\n\r\n    public String getF79() {\r\n        return f79;\r\n    }\r\n\r\n    public void setF79(String f79) {\r\n        this.f79 = f79;\r\n    }\r\n\r\n    public String getF80() {\r\n        return f80;\r\n    }\r\n\r\n    public void setF80(String f80) {\r\n        this.f80 = f80;\r\n    }\r\n\r\n    public String getF81() {\r\n        return f81;\r\n    }\r\n\r\n    public void setF81(String f81) {\r\n        this.f81 = f81;\r\n    }\r\n\r\n    public String getF82() {\r\n        return f82;\r\n    }\r\n\r\n    public void setF82(String f82) {\r\n        this.f82 = f82;\r\n    }\r\n\r\n    public String getF83() {\r\n        return f83;\r\n    }\r\n\r\n    public void setF83(String f83) {\r\n        this.f83 = f83;\r\n    }\r\n\r\n    public String getF84() {\r\n        return f84;\r\n    }\r\n\r\n    public void setF84(String f84) {\r\n        this.f84 = f84;\r\n    }\r\n\r\n    public String getF85() {\r\n        return f85;\r\n    }\r\n\r\n    public void setF85(String f85) {\r\n        this.f85 = f85;\r\n    }\r\n\r\n    public String getF86() {\r\n        return f86;\r\n    }\r\n\r\n    public void setF86(String f86) {\r\n        this.f86 = f86;\r\n    }\r\n\r\n    public String getF87() {\r\n        return f87;\r\n    }\r\n\r\n    public void setF87(String f87) {\r\n        this.f87 = f87;\r\n    }\r\n\r\n    public String getF88() {\r\n        return f88;\r\n    }\r\n\r\n    public void setF88(String f88) {\r\n        this.f88 = f88;\r\n    }\r\n\r\n    public String getF89() {\r\n        return f89;\r\n    }\r\n\r\n    public void setF89(String f89) {\r\n        this.f89 = f89;\r\n    }\r\n\r\n    public String getF90() {\r\n        return f90;\r\n    }\r\n\r\n    public void setF90(String f90) {\r\n        this.f90 = f90;\r\n    }\r\n\r\n    public String getF91() {\r\n        return f91;\r\n    }\r\n\r\n    public void setF91(String f91) {\r\n        this.f91 = f91;\r\n    }\r\n\r\n    public String getF92() {\r\n        return f92;\r\n    }\r\n\r\n    public void setF92(String f92) {\r\n        this.f92 = f92;\r\n    }\r\n\r\n    public String getF93() {\r\n        return f93;\r\n    }\r\n\r\n    public void setF93(String f93) {\r\n        this.f93 = f93;\r\n    }\r\n\r\n    public String getF94() {\r\n        return f94;\r\n    }\r\n\r\n    public void setF94(String f94) {\r\n        this.f94 = f94;\r\n    }\r\n\r\n    public String getF95() {\r\n        return f95;\r\n    }\r\n\r\n    public void setF95(String f95) {\r\n        this.f95 = f95;\r\n    }\r\n\r\n    public String getF96() {\r\n        return f96;\r\n    }\r\n\r\n    public void setF96(String f96) {\r\n        this.f96 = f96;\r\n    }\r\n\r\n    public String getF97() {\r\n        return f97;\r\n    }\r\n\r\n    public void setF97(String f97) {\r\n        this.f97 = f97;\r\n    }\r\n\r\n    public String getF98() {\r\n        return f98;\r\n    }\r\n\r\n    public void setF98(String f98) {\r\n        this.f98 = f98;\r\n    }\r\n\r\n    public String getF99() {\r\n        return f99;\r\n    }\r\n\r\n    public void setF99(String f99) {\r\n        this.f99 = f99;\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/jdk10/StringBenchmark.java",
    "content": "package com.alibaba.json.test.benchmark.jdk10;\n\nimport com.alibaba.fastjson.JSON;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport org.openjdk.jmh.annotations.*;\n\nimport java.util.HashMap;\nimport java.util.stream.Collectors;\nimport java.util.stream.IntStream;\n\n@Warmup(iterations = 10)\n@Measurement(iterations = 10)\n@State(Scope.Benchmark)\npublic class StringBenchmark {\n    private ObjectMapper mapper = new ObjectMapper();\n\n    static private String s = \"{\\\"compress\\\":true,\\\"queryParams\\\":\\\"^^$$Z29e389d72fca43e2591dfa6d5bd182039|null{$_$}H4sIAAAAAAAAAK1YW2/kthX+K4GeGsCdkpRIit6XztrehVHf4ssmabwYUCRlay2Jii72ThcD9L3IY5/7NwL076To3+ghJc1obDd2g754R0fnfvnO0X4J0loW5sHWd2cSfjWHRZUHu1+CKpdtauviclkZ96xy2TQnwBrsBsoWM5lniUzkrK2lNjOVZ6ZsZ4XVJp81tquVmZ1NNHwgwU5Q9tLfHp4fHB1cXCzCBQKqrXVWSrBJVjtBJW/Mf7PYSptIO4OflS2dNb0EjZmaFaaVE7L7lZvPs7dX35PZ2aiw1w2qbkxparC3E2jTKCD8+5//+OXnv/7y89/+9dPfgVrI+s60QN94/P7g5OB8fjR1loOzuVUyd+//crvYOwmA0jWmnjdNdlO+nLLmVtZGz6raNOC1bDNbzipXgtk3namXvho+bbUptalPa/jjiU511uyN8X4wdQOyJNht6864MJcFkNes4NMcYlagcRnspjJvgCkrm1bm+RbjhDbXsmptfWFyo1qjnxO7tDc3uTmSTXsBznfNs6qhD25l8wLXYOzXmUZX3tW22Id6Z/maq6qtMk0zdbNxbHP9qWvagbhauXrn2f2YWhexzu4zl7s9aFuoURghjDFkXGoNVWnWfM1g/FB7qUHNvOdyRNSX3v9cOfsXXVXZuj1tb019bpQBQ+XNxL/h/fH+ny+fUveeo9mysXmmfZ9MXp+CJ42Rh9VTGvgH/26yKX0XbNztu6KfNqDkWXm3HVJpjL6qwKSJhhdrXSDeh2XW8q19KEf5MrWQKZdzyMp9psz8UUbrMSeDOHDeWKubR3yrnYHTHJv21uonFTmfvoUSjm1yArgj8+23zh0Yw8KWazVJt+yrxjEhKKYR9aH1/TCECjwn9mGcLuvG8MIDnFNQmtZBZ++qNi7UPqLg4Pjs8nuHOtso+AT+Nog3gZlm2bSmeKQp6ZqshOQMZI8fweCR63fnTwvvBsR5d356vAAMPDn9FrhSYHg7iWTVk3zllC3TrC48wlx4y8EuBnJtoNvKmy36l8G3wciDrBxkWt3lo13IVwlWVo6cZLlPU9tmrjoYIURFGP2xh/KFLHVtM73gMzaL3NxV1YBmwLwhZoPmorXVAJ5Jl+XaR95zPBXrJDwcX56eXez/6Q/hDM2iGf/qd/Pe4hs+Q2++y6QtsjfHh18dz7/7OnCTM2Zo0+WPuyNrTszD2lrfE00/oucGSg3tdlVvsKk2P3amaV15jsH7EYxAJmtNX7QAVocDsczWWbs87wU2jLZyE994JC98FoEbBrdeVgCXdf/cZgUIyQIMBAyHJIxCRDndp/OIUBLtM8b3Ax8PDEi6J+t6+d6N2wQcwZ+ivwCC3R++BLZrXeQBpyxGUZykIkU6otgQJhHmJuGGKaKE72DYUO1p1/pG8VJKxBgzQilSIokREiqkRnIghlhizUFKybodcMaZdj8pY0hggpkICWTornPE0DUMobEgkQCq6mBX2rUlkL7P8hxmaHxsYJWY4fePnSxbSKpv56y8BzdtvfxmTUUzNLS5ucxci2FKCKYopIww7nwsKgnLfLQEC1yPRe/PiOlybKo8Wxfu4zCYz6T0Fcnxou9r21XDsF8ez4+OFu+uzk8OL6/OD/xVcO7vgos2U3drH+7M0ou9heiC0rZDay5aQMM87eoya7samsCD8mjoCGDl1Dnn/Hy54h+f2aQwlWXjN5rH2sHr32M/VQCnV9P1/AAVe28v7Z4D9Bsz2VwwW9vMfpkeW52l2UTBpBAu0eYzmB8TDWeX3aABmTmMVZAR/+gkHBjmn+AhwiGK48jluyuqvVtZlgYmt+zy3B137hxxFR16zat+MTcAfwsqohALwkkUxQuXgRcL/ljKgWdza6vKoe//cf4Bmsc0BdNhW+DF1pgtXA78n18BjR1XdAWjdpQ5vPohQEkqEeHRdIiiGBFsYoZZ8HHlJfTYfZNbdnotuQtgM1KPXkxPkO3LYt4sS/UOgGDTOMMxbtpmegsPpP3L0+FCgfOxsC7HE4fOrMNsY97BDQx1+JBtzqvqyasjc+/6xi/SIrEDWKTA8z5LW3fSTNvZpwD2jD/yhxtkcl88t3L+B3jcQrzfsAJfvahf2skjQoyo3BfrcOjfZxd9402HKMKGCa0ETQXFPCJxiBKWmEQgSrR03f953cVfrjfjfh3sXruBvw52roeR9ySXWE+DsfeEcfCvg9VE22nyCU7H3wQgq+21A9xlWy+Hrwr3Zdh3455Ut2Z9fq0/WJsLWDHS4XIf0PD1scDe2ZAwxEOaxlQrHicxD8OYuuQgFPEY9ZHJ8QNvEIqwkJxRHEnqJhHJWAoFCZSRjDVnvBcqbbksbLe2BNlOaSQjUJ/QiKE0lGmCBEpJmJAoHfK6uRUHOYMNDwkSTMRE0NgIzHTMqFBCplrK0MuN/dDvh8VLkNhHoWgoqBCJ5lQwnKAYmh8bhRiKhUkjr9hPB3xvLF7C5r49KMSCJNEJ55wJoyjChuqUEshnEm9Uuly+SiOPUxaGmmMEmU1Dg8NYY6plCpFgGbG1xtepEylXYcowVxEMNEk5YCmmKiEplTxkxKsrTGFfl0KVJGFKpJQmkgJhFlOkFYp0rLDiSGGvzs+sz+GrdNKQR6FEjEgqYsHgq1kxCI3jEBqGhhOdLomvUskg9bA1qIpTIUisE0Y4xcIgRnWc6nCj8pUuCuhHiohROAk5izBhhhoRaxFHsUx6iHDAnzXmxbosUN86sMsQVpowSsFNFScixZwqHQpMBY62dL7k5aDTyEglRnGcpqkAuCdIawQCKgUeaWKvc8T0VzZQ4sYjTqTGGkeMhYIDoEgGSyjVSvZ4ASdvvkGLNKWJMsAEk4B1xJOESQyTLHAM6dN9tpouKYZjaBBLQgwLSRIGKJjoiEEfRNAEiGqBOdOyh9fhw3P476nVfwDaiC3ccBQAAA==\\\",\\\"structures\\\":\\\"H4sIAAAAAAAAAI2QwW7DIBBE/4WzD+AYY/IHOUTpvbKsNawbJAMpxpVQ1X+vjZWzObK8nZ2ZX6K8m0ywj6AxDIxcPwloHXBZtkdFfB4r2THW1pxTJceOUqkuHEFswwsDpsUGwhc6lT4g5TVw3iXr10MkIMzvn2UdrYnva31FTEQ7CN52tOnGSU5UN5xh3QJlAkeBraqV3G3t4M1N/hyuyPcKLpqYSthX8NYseIoOlBxu9yinun1xd1u0TOZsBU2XFVYRjbP5wZDuGJ9elyhbtEUOst29hVO2//sHOuYJjmECAAA=\\\",\\\"submitParams\\\":\\\"^^$$Z262e889742b9875f5107901ea64c33b46|null{$_$}H4sIAAAAAAAAAM1XS2/kxhH+KwZPMaDQ3XxTe4lWqw2U7GgmkvZhRAHRJItSWySb7m5KOxIGCHyM4dxyChD7bvjgk9fI39nd+GekuknOjHaztoJcotOwurue31dVunUqyRq4FvJywfCXOmy62tm9dbqa6UrI5nTZgfkuaqbUEV51dp1CNC6rec5y5mrJSnCLmkOr3UaUULtK9LIAd7Gl4Znn7Djt8Pr54fHBk4OTk8zPCEqFLHnL0Ka32nE6dg4fsqiZyJlw8WcnWmOtXKJGXrgNaLYlNr9qeOk+fPqp5y4mhYNuVHUOLUi0t+OUoAoU/OufX79+9efXr75889XfUNoweQka5RuPf3twdHC892Tb2RidrUXBanN+c5HtHzko6RXIPaX4eXvvlOGLK47ZKiQwzdvzuSxBuhI+70Fpd39bejwIBzdAPjqdK2f3j7cOV3utaJeN6PG7YrUC9KTlorWvhnT+mo6vnvAWNi81NIel8XV04yG/Ge6TnfVhGEUkpR6NUt/bcdRlb4R+mPqBFyapF6QoLZjURky2rJjvNEh8L9yZ1J8Mj29XmCvR2xdOHEYJCZK8SitSBiEFL2KExpDHEBVekWK4eb/8Q89azfXS2cVAeHu1+SYuGs35zT5iD9WNKBmr7ELZF5hB0RoASNEI8xvjNzFz9Rglv7tQjxBAvF7nTuf7osnFGI9uWF1bwbyzinbJyrqA1RNyOehCia3qyRDnfKzPcMK0ljzvNShjteqV1eJQx5bJxIC/VzaIg5caWrVxEabvGeusyxIqkM5u29f1jiPvfGFl8Llkw7dJ8ZAEDeU6NK7mJu2H7bwuHyM3mR6PVn/aVKRIE0ojLwxJkeYJIWnhh8BiFPqU0TIeKgJyBkoNnLJkqvkVTPlwWFlKPJ4ybWCUEuqnaeD7yBzeXu4NN8Ysl/yKmziHKg4v/IBQSglB/Ii6PFxLMLIKIxyZ9farH376/kf0YDI5FtN5+49vX7/68c3Xf33z6ouf/vL9m79/R99+86VPEgMFofQIGGL/DPFFzi2daeyHUUjTJPYdw/JzrjQvTrTF0YRyjFUBG4MwHouBogVgJO25vYTdD7AXPBpTs2bWKJ/4PBXHNC7WLp8iWawVU0J4Mprfey+h5L55JOv8WZUtQKkmtcpCde2CtP7DDPSFKAd/ndbgpHZ+FuIdWzbIh9E7bIOnD1+oi2atd8Gm6PHyBVPPuNQ9qw+xxazvvEOT+jO0HVCsVxIYyH0meHvfhnGHVh/EvGlLdT0k26NxiP0sCAPDBAtvI46p55EExYZevLNBH7Qsr22JJy3TyQm7uiO/EF2HgsWd5CBjWo2iiXh4z85Lc9aCNpN4yGkJJs9jEQ5mi9NPDXDvDtX3pulmgG5NLbVUmOh3NOXYh1oEzihWF0zCNFpMXzT+aDwbafb4eD7LcKQezZ/jrQovPOyXR+La2dWyN1FU9g0xMG4rLpshI9aybdp3Btwkvx19G41cY5czRCz7erKLpWjRymrDT3RLG1g72BqIGUO/GXp+xtpSCl5msRu5gWkIXfcMWTp0242Qj5obLbpxFuc9r0sb+XDj/Wc9tlVndjpfnDz6/Se+S9zAjT/61d5g8UHskgcvOBMNfzA7/Gi29+Jjx+BuytA0k9V7oOLqCK7X1kwmsVp91wmpjwFLjVx8KustetqOYcozQ++3IITDeiiag5uIGXVcSOTA3RZjZtE1k+W+ndZqaNx4tYARm4jY62Ng9cLI8NjD4UruOZqyLDMUzbAAWWYKl4XY7GnqxV4QJJmZdniA+S7A3Kmx/QwXSV4x4sUBDT2PhgR7rxcFCfEoJBGN7DN4mXV2O7UPbs8QY2PSzpzdM8dzyZmzY6R9N4pMKq0M+4gVTJ3kzFlZlY3OWHmVgSEzWLXWQwktoiDTvAEr2/iU2E2E36DzMK4eP7dstMX+BRSXpg9nWlyCnfhlWkGY+DGFIvB8GtOKJayiYVXQKqRhXAYszuPc0LCqBrA4htWf90LD+ksCrjHAMeuOH7lh7FIvdb3UnrQjexF63hiTsmTxSUAhSssiDas0pHHgJT7JoxzylIReyQzGG3vz+TNa3YS42BGcg2FR5bFfINVo5BckqSJajVdPx6hOATCOCtXnMfVzP89ZGtMAN8bYC4swNKu/gb5tfP8li8y8wi1an3Q117ZzWNze/vIQ+I8A/MXN5t1XdqnvStyhrPFpHV/TCv9PMsO3l3C6PcnXm+bwP9XQz7nat/jE+b4ZERq6I2Hb5mY75QqB3OrHMGwL62FE/sdRsdj//x0Q5H4DAnPx4QFxzya4Wq3d80bn/g2iNh8JBg8AAA==\\\",\\\"validateParams\\\":\\\"^^$$5da126afd2e7ebcf402eecea37f8e6df{$_$}H4sIAAAAAAAAAIVRTWsCMRT8LzlLcNePVW9ZG4ogItpaepJn9qmL2WRJIq0VoffSY8/9G4X+HUv/Rt9WSr2U3ibzXmaGeXu2dFDgnXWbMRDyg6LUrLdnpYawtK642pVYvZUG70e0ynpM2YKDzhewAB4cZMiVztEEXtgMNfd26xTy8ZnCLGY1Zk6/bwYTOZTT6bwxrxNrXZYbIM/4UGMlrPAvxwB2AZYTLK2p3LIdKeaKFxjgjK6QxnueXt/GfPwjeNImqRUadORXYxl6RcTn++vx7fH49vTx/EJsAW6DgfjfxJdyJCdieB42obDaKtDV/GE9748YMVuPTnifr8z/lfk1OMx46dBTagi5NbysTsAvIMCMlrPvi5yqQ8z6a1SbPjXMekvQHmsMjXK7MkyDy82KTLrtSLRF0ql32qLRkEIK0WzFUookitMo7cq006wnddGKREd22y12OHwB3aDYjQACAAA=\\\"}\";\n    static private DO d_o = JSON.parseObject(s, DO.class);\n    static private Object o;\n    static private int i;\n    static private HashMap<String, String> methodMap = new HashMap<String, String>();\n\n    @Setup\n    public void prepare() {\n        methodMap.put(\"org.openjdk.jmh.annotations.org.openjdk.jmh.annotations.StringBenchmark.prepare(aaa,bbb,com.alibaba.fastjson.JSON)\", \"\");\n    }\n\n    @Benchmark\n    @Fork(value = 3, jvmArgs = \"-XX:+CompactStrings\")\n    public void testParseJsonComp() {\n        o = JSON.parseObject(s, DO.class);\n    }\n\n    @Benchmark\n    @Fork(value = 3, jvmArgs = \"-XX:-CompactStrings\")\n    public void testParseJson() {\n        o = JSON.parseObject(s, DO.class);\n    }\n\n    //    @Benchmark\n    @Fork(value = 3, jvmArgs = \"-XX:+CompactStrings\")\n    public void testToJsonComp() {\n        o = JSON.toJSON(d_o);\n    }\n\n    //    @Benchmark\n    @Fork(value = 3, jvmArgs = \"-XX:-CompactStrings\")\n    public void testToJson() {\n        o = JSON.toJSON(d_o);\n    }\n\n//    //    @Benchmark\n//    @Fork(value = 3, jvmArgs = \"-XX:+CompactStrings\")\n//    public void testJoinComp() {\n//        o = IntStream.range(0, 10000).mapToObj(String::valueOf).collect(Collectors.joining());\n//    }\n//\n//    //    @Benchmark\n//    @Fork(value = 3, jvmArgs = \"-XX:-CompactStrings\")\n//    public void testJoin() {\n//        o = IntStream.range(0, 10000).mapToObj(String::valueOf).collect(Collectors.joining());\n//    }\n\n    //    @Benchmark\n    @Fork(value = 3, jvmArgs = \"-XX:+CompactStrings\")\n    public void testFindMethodComp() {\n        o = testFindMethod0();\n    }\n\n    //    @Benchmark\n    @Fork(value = 3, jvmArgs = \"-XX:-CompactStrings\")\n    public void testFindMethod() {\n        o = testFindMethod0();\n    }\n\n\n    private Object testFindMethod0() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(\"org.openjdk.jmh.annotations.org.openjdk.jmh.annotations.StringBenchmark\")\n                .append(\".\").append(\"prepare\").append(\"(\")\n                .append(\"aaa\").append(\",\").append(\"bbb\").append(\",\")\n                .append(\"com.alibaba.fastjson.JSON\").append(\")\");\n\n        return methodMap.get(sb.toString());\n    }\n\n    static class DO {\n        boolean compress;\n        String queryParams, structures, submitParams, validateParams;\n\n        public boolean isCompress() {\n            return compress;\n        }\n\n        public void setCompress(boolean compress) {\n            this.compress = compress;\n        }\n\n        public String getQueryParams() {\n            return queryParams;\n        }\n\n        public void setQueryParams(String queryParams) {\n            this.queryParams = queryParams;\n        }\n\n        public String getStructures() {\n            return structures;\n        }\n\n        public void setStructures(String structures) {\n            this.structures = structures;\n        }\n\n        public String getSubmitParams() {\n            return submitParams;\n        }\n\n        public void setSubmitParams(String submitParams) {\n            this.submitParams = submitParams;\n        }\n\n        public String getValidateParams() {\n            return validateParams;\n        }\n\n        public void setValidateParams(String validateParams) {\n            this.validateParams = validateParams;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/benchmark/jdk10/StringBenchmark_jackson.java",
    "content": "package com.alibaba.json.test.benchmark.jdk10;\n\nimport com.alibaba.fastjson.JSON;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport org.openjdk.jmh.annotations.*;\n\nimport java.io.IOException;\nimport java.util.HashMap;\n\n@Warmup(iterations = 10)\n@Measurement(iterations = 10)\n@State(Scope.Benchmark)\npublic class StringBenchmark_jackson {\n    static ObjectMapper mapper = new ObjectMapper();\n    static private String s = \"{\\\"compress\\\":true,\\\"queryParams\\\":\\\"^^$$Z29e389d72fca43e2591dfa6d5bd182039|null{$_$}H4sIAAAAAAAAAK1YW2/kthX+K4GeGsCdkpRIit6XztrehVHf4ssmabwYUCRlay2Jii72ThcD9L3IY5/7NwL076To3+ghJc1obDd2g754R0fnfvnO0X4J0loW5sHWd2cSfjWHRZUHu1+CKpdtauviclkZ96xy2TQnwBrsBsoWM5lniUzkrK2lNjOVZ6ZsZ4XVJp81tquVmZ1NNHwgwU5Q9tLfHp4fHB1cXCzCBQKqrXVWSrBJVjtBJW/Mf7PYSptIO4OflS2dNb0EjZmaFaaVE7L7lZvPs7dX35PZ2aiw1w2qbkxparC3E2jTKCD8+5//+OXnv/7y89/+9dPfgVrI+s60QN94/P7g5OB8fjR1loOzuVUyd+//crvYOwmA0jWmnjdNdlO+nLLmVtZGz6raNOC1bDNbzipXgtk3namXvho+bbUptalPa/jjiU511uyN8X4wdQOyJNht6864MJcFkNes4NMcYlagcRnspjJvgCkrm1bm+RbjhDbXsmptfWFyo1qjnxO7tDc3uTmSTXsBznfNs6qhD25l8wLXYOzXmUZX3tW22Id6Z/maq6qtMk0zdbNxbHP9qWvagbhauXrn2f2YWhexzu4zl7s9aFuoURghjDFkXGoNVWnWfM1g/FB7qUHNvOdyRNSX3v9cOfsXXVXZuj1tb019bpQBQ+XNxL/h/fH+ny+fUveeo9mysXmmfZ9MXp+CJ42Rh9VTGvgH/26yKX0XbNztu6KfNqDkWXm3HVJpjL6qwKSJhhdrXSDeh2XW8q19KEf5MrWQKZdzyMp9psz8UUbrMSeDOHDeWKubR3yrnYHTHJv21uonFTmfvoUSjm1yArgj8+23zh0Yw8KWazVJt+yrxjEhKKYR9aH1/TCECjwn9mGcLuvG8MIDnFNQmtZBZ++qNi7UPqLg4Pjs8nuHOtso+AT+Nog3gZlm2bSmeKQp6ZqshOQMZI8fweCR63fnTwvvBsR5d356vAAMPDn9FrhSYHg7iWTVk3zllC3TrC48wlx4y8EuBnJtoNvKmy36l8G3wciDrBxkWt3lo13IVwlWVo6cZLlPU9tmrjoYIURFGP2xh/KFLHVtM73gMzaL3NxV1YBmwLwhZoPmorXVAJ5Jl+XaR95zPBXrJDwcX56eXez/6Q/hDM2iGf/qd/Pe4hs+Q2++y6QtsjfHh18dz7/7OnCTM2Zo0+WPuyNrTszD2lrfE00/oucGSg3tdlVvsKk2P3amaV15jsH7EYxAJmtNX7QAVocDsczWWbs87wU2jLZyE994JC98FoEbBrdeVgCXdf/cZgUIyQIMBAyHJIxCRDndp/OIUBLtM8b3Ax8PDEi6J+t6+d6N2wQcwZ+ivwCC3R++BLZrXeQBpyxGUZykIkU6otgQJhHmJuGGKaKE72DYUO1p1/pG8VJKxBgzQilSIokREiqkRnIghlhizUFKybodcMaZdj8pY0hggpkICWTornPE0DUMobEgkQCq6mBX2rUlkL7P8hxmaHxsYJWY4fePnSxbSKpv56y8BzdtvfxmTUUzNLS5ucxci2FKCKYopIww7nwsKgnLfLQEC1yPRe/PiOlybKo8Wxfu4zCYz6T0Fcnxou9r21XDsF8ez4+OFu+uzk8OL6/OD/xVcO7vgos2U3drH+7M0ou9heiC0rZDay5aQMM87eoya7samsCD8mjoCGDl1Dnn/Hy54h+f2aQwlWXjN5rH2sHr32M/VQCnV9P1/AAVe28v7Z4D9Bsz2VwwW9vMfpkeW52l2UTBpBAu0eYzmB8TDWeX3aABmTmMVZAR/+gkHBjmn+AhwiGK48jluyuqvVtZlgYmt+zy3B137hxxFR16zat+MTcAfwsqohALwkkUxQuXgRcL/ljKgWdza6vKoe//cf4Bmsc0BdNhW+DF1pgtXA78n18BjR1XdAWjdpQ5vPohQEkqEeHRdIiiGBFsYoZZ8HHlJfTYfZNbdnotuQtgM1KPXkxPkO3LYt4sS/UOgGDTOMMxbtpmegsPpP3L0+FCgfOxsC7HE4fOrMNsY97BDQx1+JBtzqvqyasjc+/6xi/SIrEDWKTA8z5LW3fSTNvZpwD2jD/yhxtkcl88t3L+B3jcQrzfsAJfvahf2skjQoyo3BfrcOjfZxd9402HKMKGCa0ETQXFPCJxiBKWmEQgSrR03f953cVfrjfjfh3sXruBvw52roeR9ySXWE+DsfeEcfCvg9VE22nyCU7H3wQgq+21A9xlWy+Hrwr3Zdh3455Ut2Z9fq0/WJsLWDHS4XIf0PD1scDe2ZAwxEOaxlQrHicxD8OYuuQgFPEY9ZHJ8QNvEIqwkJxRHEnqJhHJWAoFCZSRjDVnvBcqbbksbLe2BNlOaSQjUJ/QiKE0lGmCBEpJmJAoHfK6uRUHOYMNDwkSTMRE0NgIzHTMqFBCplrK0MuN/dDvh8VLkNhHoWgoqBCJ5lQwnKAYmh8bhRiKhUkjr9hPB3xvLF7C5r49KMSCJNEJ55wJoyjChuqUEshnEm9Uuly+SiOPUxaGmmMEmU1Dg8NYY6plCpFgGbG1xtepEylXYcowVxEMNEk5YCmmKiEplTxkxKsrTGFfl0KVJGFKpJQmkgJhFlOkFYp0rLDiSGGvzs+sz+GrdNKQR6FEjEgqYsHgq1kxCI3jEBqGhhOdLomvUskg9bA1qIpTIUisE0Y4xcIgRnWc6nCj8pUuCuhHiohROAk5izBhhhoRaxFHsUx6iHDAnzXmxbosUN86sMsQVpowSsFNFScixZwqHQpMBY62dL7k5aDTyEglRnGcpqkAuCdIawQCKgUeaWKvc8T0VzZQ4sYjTqTGGkeMhYIDoEgGSyjVSvZ4ASdvvkGLNKWJMsAEk4B1xJOESQyTLHAM6dN9tpouKYZjaBBLQgwLSRIGKJjoiEEfRNAEiGqBOdOyh9fhw3P476nVfwDaiC3ccBQAAA==\\\",\\\"structures\\\":\\\"H4sIAAAAAAAAAI2QwW7DIBBE/4WzD+AYY/IHOUTpvbKsNawbJAMpxpVQ1X+vjZWzObK8nZ2ZX6K8m0ywj6AxDIxcPwloHXBZtkdFfB4r2THW1pxTJceOUqkuHEFswwsDpsUGwhc6lT4g5TVw3iXr10MkIMzvn2UdrYnva31FTEQ7CN52tOnGSU5UN5xh3QJlAkeBraqV3G3t4M1N/hyuyPcKLpqYSthX8NYseIoOlBxu9yinun1xd1u0TOZsBU2XFVYRjbP5wZDuGJ9elyhbtEUOst29hVO2//sHOuYJjmECAAA=\\\",\\\"submitParams\\\":\\\"^^$$Z262e889742b9875f5107901ea64c33b46|null{$_$}H4sIAAAAAAAAAM1XS2/kxhH+KwZPMaDQ3XxTe4lWqw2U7GgmkvZhRAHRJItSWySb7m5KOxIGCHyM4dxyChD7bvjgk9fI39nd+GekuknOjHaztoJcotOwurue31dVunUqyRq4FvJywfCXOmy62tm9dbqa6UrI5nTZgfkuaqbUEV51dp1CNC6rec5y5mrJSnCLmkOr3UaUULtK9LIAd7Gl4Znn7Djt8Pr54fHBk4OTk8zPCEqFLHnL0Ka32nE6dg4fsqiZyJlw8WcnWmOtXKJGXrgNaLYlNr9qeOk+fPqp5y4mhYNuVHUOLUi0t+OUoAoU/OufX79+9efXr75889XfUNoweQka5RuPf3twdHC892Tb2RidrUXBanN+c5HtHzko6RXIPaX4eXvvlOGLK47ZKiQwzdvzuSxBuhI+70Fpd39bejwIBzdAPjqdK2f3j7cOV3utaJeN6PG7YrUC9KTlorWvhnT+mo6vnvAWNi81NIel8XV04yG/Ge6TnfVhGEUkpR6NUt/bcdRlb4R+mPqBFyapF6QoLZjURky2rJjvNEh8L9yZ1J8Mj29XmCvR2xdOHEYJCZK8SitSBiEFL2KExpDHEBVekWK4eb/8Q89azfXS2cVAeHu1+SYuGs35zT5iD9WNKBmr7ELZF5hB0RoASNEI8xvjNzFz9Rglv7tQjxBAvF7nTuf7osnFGI9uWF1bwbyzinbJyrqA1RNyOehCia3qyRDnfKzPcMK0ljzvNShjteqV1eJQx5bJxIC/VzaIg5caWrVxEabvGeusyxIqkM5u29f1jiPvfGFl8Llkw7dJ8ZAEDeU6NK7mJu2H7bwuHyM3mR6PVn/aVKRIE0ojLwxJkeYJIWnhh8BiFPqU0TIeKgJyBkoNnLJkqvkVTPlwWFlKPJ4ybWCUEuqnaeD7yBzeXu4NN8Ysl/yKmziHKg4v/IBQSglB/Ii6PFxLMLIKIxyZ9farH376/kf0YDI5FtN5+49vX7/68c3Xf33z6ouf/vL9m79/R99+86VPEgMFofQIGGL/DPFFzi2daeyHUUjTJPYdw/JzrjQvTrTF0YRyjFUBG4MwHouBogVgJO25vYTdD7AXPBpTs2bWKJ/4PBXHNC7WLp8iWawVU0J4Mprfey+h5L55JOv8WZUtQKkmtcpCde2CtP7DDPSFKAd/ndbgpHZ+FuIdWzbIh9E7bIOnD1+oi2atd8Gm6PHyBVPPuNQ9qw+xxazvvEOT+jO0HVCsVxIYyH0meHvfhnGHVh/EvGlLdT0k26NxiP0sCAPDBAtvI46p55EExYZevLNBH7Qsr22JJy3TyQm7uiO/EF2HgsWd5CBjWo2iiXh4z85Lc9aCNpN4yGkJJs9jEQ5mi9NPDXDvDtX3pulmgG5NLbVUmOh3NOXYh1oEzihWF0zCNFpMXzT+aDwbafb4eD7LcKQezZ/jrQovPOyXR+La2dWyN1FU9g0xMG4rLpshI9aybdp3Btwkvx19G41cY5czRCz7erKLpWjRymrDT3RLG1g72BqIGUO/GXp+xtpSCl5msRu5gWkIXfcMWTp0242Qj5obLbpxFuc9r0sb+XDj/Wc9tlVndjpfnDz6/Se+S9zAjT/61d5g8UHskgcvOBMNfzA7/Gi29+Jjx+BuytA0k9V7oOLqCK7X1kwmsVp91wmpjwFLjVx8KustetqOYcozQ++3IITDeiiag5uIGXVcSOTA3RZjZtE1k+W+ndZqaNx4tYARm4jY62Ng9cLI8NjD4UruOZqyLDMUzbAAWWYKl4XY7GnqxV4QJJmZdniA+S7A3Kmx/QwXSV4x4sUBDT2PhgR7rxcFCfEoJBGN7DN4mXV2O7UPbs8QY2PSzpzdM8dzyZmzY6R9N4pMKq0M+4gVTJ3kzFlZlY3OWHmVgSEzWLXWQwktoiDTvAEr2/iU2E2E36DzMK4eP7dstMX+BRSXpg9nWlyCnfhlWkGY+DGFIvB8GtOKJayiYVXQKqRhXAYszuPc0LCqBrA4htWf90LD+ksCrjHAMeuOH7lh7FIvdb3UnrQjexF63hiTsmTxSUAhSssiDas0pHHgJT7JoxzylIReyQzGG3vz+TNa3YS42BGcg2FR5bFfINVo5BckqSJajVdPx6hOATCOCtXnMfVzP89ZGtMAN8bYC4swNKu/gb5tfP8li8y8wi1an3Q117ZzWNze/vIQ+I8A/MXN5t1XdqnvStyhrPFpHV/TCv9PMsO3l3C6PcnXm+bwP9XQz7nat/jE+b4ZERq6I2Hb5mY75QqB3OrHMGwL62FE/sdRsdj//x0Q5H4DAnPx4QFxzya4Wq3d80bn/g2iNh8JBg8AAA==\\\",\\\"validateParams\\\":\\\"^^$$5da126afd2e7ebcf402eecea37f8e6df{$_$}H4sIAAAAAAAAAIVRTWsCMRT8LzlLcNePVW9ZG4ogItpaepJn9qmL2WRJIq0VoffSY8/9G4X+HUv/Rt9WSr2U3ibzXmaGeXu2dFDgnXWbMRDyg6LUrLdnpYawtK642pVYvZUG70e0ynpM2YKDzhewAB4cZMiVztEEXtgMNfd26xTy8ZnCLGY1Zk6/bwYTOZTT6bwxrxNrXZYbIM/4UGMlrPAvxwB2AZYTLK2p3LIdKeaKFxjgjK6QxnueXt/GfPwjeNImqRUadORXYxl6RcTn++vx7fH49vTx/EJsAW6DgfjfxJdyJCdieB42obDaKtDV/GE9748YMVuPTnifr8z/lfk1OMx46dBTagi5NbysTsAvIMCMlrPvi5yqQ8z6a1SbPjXMekvQHmsMjXK7MkyDy82KTLrtSLRF0ql32qLRkEIK0WzFUookitMo7cq006wnddGKREd22y12OHwB3aDYjQACAAA=\\\"}\";\n    static private DO d_o;\n    static private Object o;\n    static private int i;\n    static private HashMap<String, String> methodMap = new HashMap<String, String>();\n\n    static {\n        try {\n            d_o = mapper.readValue(s, DO.class);\n        } catch (IOException e) {\n            e.printStackTrace();\n        }\n    }\n\n    @Setup\n    public void prepare() {\n        methodMap.put(\"org.openjdk.jmh.annotations.org.openjdk.jmh.annotations.StringBenchmark.prepare(aaa,bbb,com.fasterxml.jackson.databind.ObjectMapper)\", \"\");\n    }\n\n    @Benchmark\n    @Fork(value = 3, jvmArgs = \"-XX:+CompactStrings\")\n    public void testParseJsonComp() throws Exception {\n        o = mapper.readValue(s, DO.class);\n    }\n\n    @Benchmark\n    @Fork(value = 3, jvmArgs = \"-XX:-CompactStrings\")\n    public void testParseJson() throws Exception {\n        o =  mapper.readValue(s, DO.class);\n    }\n\n    //    @Benchmark\n    @Fork(value = 3, jvmArgs = \"-XX:+CompactStrings\")\n    public void testToJsonComp() throws Exception {\n        o = JSON.toJSON(d_o);\n    }\n\n    //    @Benchmark\n    @Fork(value = 3, jvmArgs = \"-XX:-CompactStrings\")\n    public void testToJson() throws Exception {\n        o = JSON.toJSON(d_o);\n    }\n\n//    //    @Benchmark\n//    @Fork(value = 3, jvmArgs = \"-XX:+CompactStrings\")\n//    public void testJoinComp() {\n//        o = IntStream.range(0, 10000).mapToObj(String::valueOf).collect(Collectors.joining());\n//    }\n//\n//    //    @Benchmark\n//    @Fork(value = 3, jvmArgs = \"-XX:-CompactStrings\")\n//    public void testJoin() {\n//        o = IntStream.range(0, 10000).mapToObj(String::valueOf).collect(Collectors.joining());\n//    }\n\n    //    @Benchmark\n    @Fork(value = 3, jvmArgs = \"-XX:+CompactStrings\")\n    public void testFindMethodComp() {\n        o = testFindMethod0();\n    }\n\n    //    @Benchmark\n    @Fork(value = 3, jvmArgs = \"-XX:-CompactStrings\")\n    public void testFindMethod() {\n        o = testFindMethod0();\n    }\n\n\n    private Object testFindMethod0() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(\"org.openjdk.jmh.annotations.org.openjdk.jmh.annotations.StringBenchmark\")\n                .append(\".\").append(\"prepare\").append(\"(\")\n                .append(\"aaa\").append(\",\").append(\"bbb\").append(\",\")\n                .append(\"com.fasterxml.jackson.databind.ObjectMapper\").append(\")\");\n\n        return methodMap.get(sb.toString());\n    }\n\n    static class DO {\n        boolean compress;\n        String queryParams, structures, submitParams, validateParams;\n\n        public boolean isCompress() {\n            return compress;\n        }\n\n        public void setCompress(boolean compress) {\n            this.compress = compress;\n        }\n\n        public String getQueryParams() {\n            return queryParams;\n        }\n\n        public void setQueryParams(String queryParams) {\n            this.queryParams = queryParams;\n        }\n\n        public String getStructures() {\n            return structures;\n        }\n\n        public void setStructures(String structures) {\n            this.structures = structures;\n        }\n\n        public String getSubmitParams() {\n            return submitParams;\n        }\n\n        public void setSubmitParams(String submitParams) {\n            this.submitParams = submitParams;\n        }\n\n        public String getValidateParams() {\n            return validateParams;\n        }\n\n        public void setValidateParams(String validateParams) {\n            this.validateParams = validateParams;\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/codec/Codec.java",
    "content": "package com.alibaba.json.test.codec;\r\n\r\nimport java.io.OutputStream;\r\nimport java.util.Collection;\r\n\r\npublic interface Codec {\r\n\r\n    String getName();\r\n\r\n    <T> T decodeObject(String text, Class<T> clazz) throws Exception;\r\n\r\n    <T> T decodeObject(byte[] input, Class<T> clazz) throws Exception;\r\n\r\n    <T> Collection<T> decodeArray(String text, Class<T> clazz) throws Exception;\r\n\r\n    Object decodeObject(String text) throws Exception;\r\n\r\n    Object decode(String text) throws Exception;\r\n    \r\n    void encode(OutputStream out, Object object) throws Exception;\r\n\r\n    String encode(Object object) throws Exception;\r\n    \r\n    byte[] encodeToBytes(Object object) throws Exception;\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/codec/FastjsonArrayMappingCodec.java",
    "content": "package com.alibaba.json.test.codec;\r\n\r\nimport java.io.OutputStream;\r\nimport java.util.Collection;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.Feature;\r\nimport com.alibaba.fastjson.parser.ParserConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class FastjsonArrayMappingCodec implements Codec {\r\n\r\n    private ParserConfig    config = ParserConfig.getGlobalInstance();\r\n\r\n    public FastjsonArrayMappingCodec(){\r\n        System.out.println(\"fastjson-\" + JSON.VERSION);    \r\n    }\r\n\r\n    public String getName() {\r\n        return \"fastjson-BeanToArray\";\r\n    }\r\n\r\n    public <T> T decodeObject(String text, Class<T> clazz) {\r\n        return JSON.parseObject(text, clazz, Feature.DisableCircularReferenceDetect, Feature.SupportArrayToBean);\r\n    }\r\n\r\n    public <T> Collection<T> decodeArray(String text, Class<T> clazz) throws Exception {\r\n        DefaultJSONParser parser = new DefaultJSONParser(text, config);\r\n        parser.config(Feature.DisableCircularReferenceDetect, true);\r\n        return parser.parseArray(clazz);\r\n    }\r\n\r\n    public final Object decodeObject(String text) {\r\n        return JSON.parseObject(text, Feature.DisableCircularReferenceDetect, Feature.SupportArrayToBean);\r\n    }\r\n\r\n    public final Object decode(String text) {\r\n        return JSON.parseObject(text, Feature.DisableCircularReferenceDetect, Feature.SupportArrayToBean);\r\n    }\r\n\r\n    // private JavaBeanSerializer serializer = new JavaBeanSerializer(Long_100_Entity.class);\r\n\r\n    public String encode(Object object) throws Exception {\r\n        return JSON.toJSONString(object, SerializerFeature.DisableCircularReferenceDetect, SerializerFeature.BeanToArray);\r\n    }\r\n\r\n    @SuppressWarnings(\"unchecked\")\r\n    public <T> T decodeObject(byte[] input, Class<T> clazz) throws Exception {\r\n        return (T) JSON.parseObject(input, clazz, Feature.DisableCircularReferenceDetect, Feature.SupportArrayToBean);\r\n    }\r\n\r\n    @Override\r\n    public byte[] encodeToBytes(Object object) throws Exception {\r\n        return JSON.toJSONBytes(object, SerializerFeature.DisableCircularReferenceDetect, SerializerFeature.BeanToArray);\r\n    }\r\n\r\n    @Override\r\n    public void encode(OutputStream out, Object object) throws Exception {\r\n       JSON.writeJSONString(out, object, SerializerFeature.DisableCircularReferenceDetect, SerializerFeature.BeanToArray);\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/codec/FastjsonBeanToArrayCodec.java",
    "content": "package com.alibaba.json.test.codec;\n\nimport java.io.OutputStream;\nimport java.util.Collection;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\npublic class FastjsonBeanToArrayCodec implements Codec {\n    private int serializerFeatures;\n    \n    public FastjsonBeanToArrayCodec() {\n        serializerFeatures |= SerializerFeature.QuoteFieldNames.getMask();\n        serializerFeatures |= SerializerFeature.SkipTransientField.getMask();\n        serializerFeatures |= SerializerFeature.SortField.getMask();\n        serializerFeatures |= SerializerFeature.DisableCircularReferenceDetect.getMask();\n        serializerFeatures |= SerializerFeature.BeanToArray.getMask();\n    }\n\n    public String getName() {\n        return \"fastjson-bean-to-array\";\n    }\n\n    public <T> T decodeObject(String text, Class<T> clazz) {\n        return (T) JSON.parseObject(text, clazz, Feature.DisableCircularReferenceDetect, Feature.SupportArrayToBean);\n    }\n\n    public <T> Collection<T> decodeArray(String text, Class<T> clazz) throws Exception {\n        ParserConfig config = ParserConfig.global;\n        DefaultJSONParser parser = new DefaultJSONParser(text, config);\n        parser.config(Feature.DisableCircularReferenceDetect, true);\n        parser.config(Feature.SupportArrayToBean, true);\n        return parser.parseArray(clazz);\n    }\n\n    public final Object decodeObject(String text) {\n        ParserConfig config = ParserConfig.global;\n        DefaultJSONParser parser = new DefaultJSONParser(text, config);\n        parser.config(Feature.DisableCircularReferenceDetect, true);\n        parser.config(Feature.SupportArrayToBean, true);\n        return parser.parse();\n    }\n\n    public final Object decode(String text) {\n        ParserConfig config = ParserConfig.global;\n        DefaultJSONParser parser = new DefaultJSONParser(text, config);\n        parser.config(Feature.DisableCircularReferenceDetect, true);\n        parser.config(Feature.SupportArrayToBean, true);\n        return parser.parse();\n    }\n\n    // private JavaBeanSerializer serializer = new JavaBeanSerializer(Long_100_Entity.class);\n\n    public String encode(Object object) throws Exception {\n        return JSON.toJSONString(object, serializerFeatures);\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    public <T> T decodeObject(byte[] input, Class<T> clazz) throws Exception {\n        return (T) JSON.parseObject(input, clazz, Feature.SupportArrayToBean, Feature.DisableCircularReferenceDetect);\n    }\n\n    @Override\n    public byte[] encodeToBytes(Object object) throws Exception {\n        // TODO Auto-generated method stub\n        return null;\n    }\n\n    @Override\n    public void encode(OutputStream out, Object object) throws Exception {\n        out.write(encodeToBytes(object));        \n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/codec/FastjsonCodec.java",
    "content": "package com.alibaba.json.test.codec;\r\n\r\nimport java.io.OutputStream;\r\nimport java.util.Collection;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.Feature;\r\nimport com.alibaba.fastjson.parser.ParserConfig;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class FastjsonCodec implements Codec {\r\n\r\n    private ParserConfig    config = ParserConfig.getGlobalInstance();\r\n\r\n    public FastjsonCodec(){\r\n        System.out.println(\"fastjson-\" + JSON.VERSION);    \r\n    }\r\n\r\n    public String getName() {\r\n        return \"fastjson\";\r\n    }\r\n\r\n    public <T> T decodeObject(String text, Class<T> clazz) {\r\n        DefaultJSONParser parser = new DefaultJSONParser(text, config);\r\n        parser.config(Feature.DisableCircularReferenceDetect, true);\r\n        return parser.parseObject(clazz);\r\n    }\r\n\r\n    public <T> Collection<T> decodeArray(String text, Class<T> clazz) throws Exception {\r\n        DefaultJSONParser parser = new DefaultJSONParser(text, config);\r\n        parser.config(Feature.DisableCircularReferenceDetect, true);\r\n        return parser.parseArray(clazz);\r\n    }\r\n\r\n    public final Object decodeObject(String text) {\r\n        DefaultJSONParser parser = new DefaultJSONParser(text, config);\r\n        parser.config(Feature.DisableCircularReferenceDetect, true);\r\n        return parser.parse();\r\n    }\r\n\r\n    public final Object decode(String text) {\r\n        DefaultJSONParser parser = new DefaultJSONParser(text, config);\r\n        parser.config(Feature.DisableCircularReferenceDetect, true);\r\n        return parser.parse();\r\n    }\r\n\r\n    // private JavaBeanSerializer serializer = new JavaBeanSerializer(Long_100_Entity.class);\r\n\r\n    public String encode(Object object) throws Exception {\r\n        return JSON.toJSONString(object, SerializerFeature.DisableCircularReferenceDetect);\r\n    }\r\n\r\n    @SuppressWarnings(\"unchecked\")\r\n    public <T> T decodeObject(byte[] input, Class<T> clazz) throws Exception {\r\n        return (T) JSON.parseObject(input, clazz, Feature.DisableCircularReferenceDetect);\r\n    }\r\n\r\n    @Override\r\n    public byte[] encodeToBytes(Object object) throws Exception {\r\n        return JSON.toJSONBytes(object, SerializerFeature.DisableCircularReferenceDetect);\r\n    }\r\n\r\n    @Override\r\n    public void encode(OutputStream out, Object object) throws Exception {\r\n       JSON.writeJSONString(out, object, SerializerFeature.DisableCircularReferenceDetect);\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/codec/FastjsonGenCodec.java",
    "content": "package com.alibaba.json.test.codec;\r\n\r\nimport java.io.OutputStream;\r\nimport java.util.Collection;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.Feature;\r\nimport com.alibaba.fastjson.parser.ParserConfig;\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\nimport data.media.Image;\r\nimport data.media.ImageGenDecoder;\r\nimport data.media.Media;\r\nimport data.media.MediaContent;\r\nimport data.media.MediaContentGenDecoder;\r\nimport data.media.MediaGenDecoder;\r\n\r\npublic class FastjsonGenCodec implements Codec {\r\n\r\n    private ParserConfig    config = ParserConfig.getGlobalInstance();\r\n    \r\n    public FastjsonGenCodec() {\r\n        config.putDeserializer(Image.class, new ImageGenDecoder(config, Image.class));\r\n        config.putDeserializer(Media.class, new MediaGenDecoder(config, Media.class));\r\n        config.putDeserializer(MediaContent.class, new MediaContentGenDecoder(config, MediaContent.class));\r\n    }\r\n\r\n    public String getName() {\r\n        return \"fastjson_gen\";\r\n    }\r\n\r\n    public <T> T decodeObject(String text, Class<T> clazz) {\r\n        DefaultJSONParser parser = new DefaultJSONParser(text, config);\r\n        parser.config(Feature.DisableCircularReferenceDetect, true);\r\n        return parser.parseObject(clazz);\r\n    }\r\n\r\n    public <T> Collection<T> decodeArray(String text, Class<T> clazz) throws Exception {\r\n        DefaultJSONParser parser = new DefaultJSONParser(text, config);\r\n        parser.config(Feature.DisableCircularReferenceDetect, true);\r\n        return parser.parseArray(clazz);\r\n    }\r\n\r\n    public final Object decodeObject(String text) {\r\n        DefaultJSONParser parser = new DefaultJSONParser(text, config);\r\n        parser.config(Feature.DisableCircularReferenceDetect, true);\r\n        return parser.parse();\r\n    }\r\n\r\n    public final Object decode(String text) {\r\n        DefaultJSONParser parser = new DefaultJSONParser(text, config);\r\n        parser.config(Feature.DisableCircularReferenceDetect, true);\r\n        return parser.parse();\r\n    }\r\n\r\n    // private JavaBeanSerializer serializer = new JavaBeanSerializer(Long_100_Entity.class);\r\n\r\n    public String encode(Object object) throws Exception {\r\n        SerializeWriter out = new SerializeWriter();\r\n        out.config(SerializerFeature.DisableCircularReferenceDetect, true);\r\n//        out.config(SerializerFeature.DisableCheckSpecialChar, true);\r\n\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.write(object);\r\n\r\n        String text = out.toString();\r\n\r\n        out.close();\r\n\r\n        return text;\r\n    }\r\n\r\n    @SuppressWarnings(\"unchecked\")\r\n    public <T> T decodeObject(byte[] input, Class<T> clazz) throws Exception {\r\n        return (T) JSON.parseObject(input, clazz, Feature.DisableCircularReferenceDetect);\r\n    }\r\n\r\n    @Override\r\n    public byte[] encodeToBytes(Object object) throws Exception {\r\n        // TODO Auto-generated method stub\r\n        return null;\r\n    }\r\n\r\n    @Override\r\n    public void encode(OutputStream out, Object object) throws Exception {\r\n        out.write(encodeToBytes(object));        \r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/codec/FastjsonManualCodec.java",
    "content": "package com.alibaba.json.test.codec;\n\nimport java.io.IOException;\nimport java.io.OutputStream;\nimport java.lang.reflect.Type;\nimport java.util.Collection;\nimport java.util.List;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.ObjectSerializer;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\n\nimport data.media.Image;\nimport data.media.Media;\nimport data.media.MediaContent;\n\npublic class FastjsonManualCodec implements Codec {\n\n    private ParserConfig    config = new ParserConfig();\n    private SerializeConfig serializeConfig = new SerializeConfig();\n\n    public FastjsonManualCodec(){\n        System.out.println(\"fastjson-\" + JSON.VERSION);    \n        \n        serializeConfig.put(MediaContent.class, new MediaContentSerializer());\n    }\n\n    public String getName() {\n        return \"fastjson-manual\";\n    }\n\n    public <T> T decodeObject(String text, Class<T> clazz) {\n        DefaultJSONParser parser = new DefaultJSONParser(text, config);\n        parser.config(Feature.DisableCircularReferenceDetect, true);\n        return parser.parseObject(clazz);\n    }\n\n    public <T> Collection<T> decodeArray(String text, Class<T> clazz) throws Exception {\n        DefaultJSONParser parser = new DefaultJSONParser(text, config);\n        parser.config(Feature.DisableCircularReferenceDetect, true);\n        return parser.parseArray(clazz);\n    }\n\n    public final Object decodeObject(String text) {\n        DefaultJSONParser parser = new DefaultJSONParser(text, config);\n        parser.config(Feature.DisableCircularReferenceDetect, true);\n        return parser.parse();\n    }\n\n    public final Object decode(String text) {\n        DefaultJSONParser parser = new DefaultJSONParser(text, config);\n        parser.config(Feature.DisableCircularReferenceDetect, true);\n        return parser.parse();\n    }\n\n    // private JavaBeanSerializer serializer = new JavaBeanSerializer(Long_100_Entity.class);\n\n    public String encode(Object object) throws Exception {\n        SerializeWriter out = new SerializeWriter();\n        out.config(SerializerFeature.DisableCircularReferenceDetect, true);\n\n        JSONSerializer serializer = new JSONSerializer(out, serializeConfig);\n        serializer.write(object);\n\n        String text = out.toString();\n\n        out.close();\n\n        return text;\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    public <T> T decodeObject(byte[] input, Class<T> clazz) throws Exception {\n        return (T) JSON.parseObject(input, clazz, Feature.DisableCircularReferenceDetect);\n    }\n\n    public static class ImageSerializer implements ObjectSerializer {\n\n        @Override\n        public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType,\n                          int features) throws IOException {\n            Image image = (Image) object;\n            \n            SerializeWriter out = serializer.out;\n            \n            out.writeFieldValue('{', \"height\", image.getHeight());\n            out.writeFieldValueStringWithDoubleQuote(',', \"size\", image.getSize().name());\n            \n            String tile = image.getTitle();\n            out.writeFieldValueStringWithDoubleQuoteCheck(',', \"title\", tile);\n            out.writeFieldValueStringWithDoubleQuoteCheck(',', \"uri\", image.getUri());\n            out.writeFieldValue(',', \"width\", image.getWidth());\n\n            out.write('}');\n            // TODO\n        }\n        \n    }\n\n    public static class MediaSerializer implements ObjectSerializer {\n\n        @Override\n        public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType,\n                          int features) throws IOException {\n            Media image = (Media) object;\n            \n            SerializeWriter out = serializer.out;\n            out.writeFieldValue('{', \"bitrate\", image.getBitrate());\n            out.writeFieldValue(',', \"duration\", image.getDuration());\n            out.writeFieldValue(',', \"height\", image.getHeight());\n            \n            String format = image.getFormat();\n            out.writeFieldValueStringWithDoubleQuoteCheck(',', \"format\", format);\n            \n            out.writeFieldValue(',', \"size\", image.getSize());\n            out.writeFieldValue(',', \"height\", image.getHeight());\n            \n            List<String> persons = image.getPersons();\n            out.writeFieldName(\"persons\");\n            out.write(persons);\n            out.writeFieldValueStringWithDoubleQuote(',', \"player\", image.getPlayer().name());\n            out.writeFieldValue(',', \"size\", image.getSize());\n            \n            String title = image.getTitle();\n            out.writeFieldValue(',', \"title\", title);\n            \n            String uri = image.getUri();\n            out.writeFieldValueStringWithDoubleQuoteCheck(',', \"uri\", uri);\n            \n            out.writeFieldValue(',', \"width\", image.getWidth());\n            \n            out.write('}');\n        }\n        \n    }\n    \n    public static class MediaContentSerializer implements ObjectSerializer {\n        MediaSerializer mediaSer = new MediaSerializer();\n        ImageSerializer imageSer = new ImageSerializer();\n\n        @Override\n        public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType,\n                          int features) throws IOException {\n            MediaContent mediaContent = (MediaContent) object;\n            \n            SerializeWriter out = serializer.out;\n            \n            out.write('{');\n            \n            out.writeFieldName(\"image\", false);\n            List<Image> images = mediaContent.images;\n            \n            out.write('[');\n            for (int i = 0, size = images.size(); i < size; ++i) {\n                if (i != 0) {\n                    out.write(',');\n                }\n                Image image = images.get(i);\n                imageSer.write(serializer, image, Integer.valueOf(i), Image.class, features);\n            }\n            out.write(']');\n            out.write(',');\n            \n            out.writeFieldName(\"media\", false);\n            mediaSer.write(serializer, mediaContent.media, \"media\", Media.class, features);\n            \n            out.write('}');\n        }\n        \n    }\n\n    @Override\n    public byte[] encodeToBytes(Object object) throws Exception {\n        // TODO Auto-generated method stub\n        return null;\n    }\n\n    @Override\n    public void encode(OutputStream out, Object object) throws Exception {\n        out.write(encodeToBytes(object));        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/codec/FastjsonSCodec.java",
    "content": "package com.alibaba.json.test.codec;\r\n\r\nimport java.io.OutputStream;\r\nimport java.util.Collection;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\r\nimport com.alibaba.fastjson.parser.Feature;\r\nimport com.alibaba.fastjson.parser.ParserConfig;\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.PropertyFilter;\r\nimport com.alibaba.fastjson.serializer.SerializeConfig;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\n\r\npublic class FastjsonSCodec implements Codec {\r\n    public FastjsonSCodec(){\r\n        System.out.println(\"fastjson-\" + JSON.VERSION);    \r\n    }\r\n\r\n    public String getName() {\r\n        return \"fastjsonS\";\r\n    }\r\n\r\n    public <T> T decodeObject(String text, Class<T> clazz) {\r\n        ParserConfig    config = new ParserConfig();\r\n        DefaultJSONParser parser = new DefaultJSONParser(text, config);\r\n        parser.config(Feature.DisableCircularReferenceDetect, true);\r\n        return parser.parseObject(clazz);\r\n    }\r\n\r\n    public <T> Collection<T> decodeArray(String text, Class<T> clazz) throws Exception {\r\n        ParserConfig    config = new ParserConfig();\r\n        DefaultJSONParser parser = new DefaultJSONParser(text, config);\r\n        parser.config(Feature.DisableCircularReferenceDetect, true);\r\n        return parser.parseArray(clazz);\r\n    }\r\n\r\n    public final Object decodeObject(String text) {\r\n        ParserConfig    config = new ParserConfig();\r\n        DefaultJSONParser parser = new DefaultJSONParser(text, config);\r\n        parser.config(Feature.DisableCircularReferenceDetect, true);\r\n        return parser.parse();\r\n    }\r\n\r\n    public final Object decode(String text) {\r\n        ParserConfig    config = new ParserConfig();\r\n        DefaultJSONParser parser = new DefaultJSONParser(text, config);\r\n        parser.config(Feature.DisableCircularReferenceDetect, true);\r\n        return parser.parse();\r\n    }\r\n\r\n    // private JavaBeanSerializer serializer = new JavaBeanSerializer(Long_100_Entity.class);\r\n\r\n    public String encode(Object object) throws Exception {\r\n        SerializeConfig config = new SerializeConfig();\r\n        SerializeWriter out = new SerializeWriter();\r\n        out.config(SerializerFeature.DisableCircularReferenceDetect, true);\r\n//        out.config(SerializerFeature.DisableCheckSpecialChar, true);\r\n\r\n        JSONSerializer serializer = new JSONSerializer(out, config);\r\n        serializer.write(object);\r\n\r\n        String text = out.toString();\r\n\r\n        out.close();\r\n\r\n        return text;\r\n    }\r\n\r\n    @SuppressWarnings(\"unchecked\")\r\n    public <T> T decodeObject(byte[] input, Class<T> clazz) throws Exception {\r\n        return (T) JSON.parseObject(input, clazz, Feature.DisableCircularReferenceDetect);\r\n    }\r\n\r\n    @Override\r\n    public byte[] encodeToBytes(Object object) throws Exception {\r\n        // TODO Auto-generated method stub\r\n        return null;\r\n    }\r\n\r\n    @Override\r\n    public void encode(OutputStream out, Object object) throws Exception {\r\n        out.write(encodeToBytes(object));        \r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/codec/GsonCodec.java",
    "content": "package com.alibaba.json.test.codec;\r\n\r\nimport java.io.OutputStream;\r\nimport java.util.Collection;\r\nimport java.util.HashMap;\r\n\r\nimport com.google.gson.Gson;\r\nimport com.google.gson.JsonObject;\r\n\r\npublic class GsonCodec implements Codec {\r\n\r\n    private Gson gson = new Gson();\r\n\r\n    public String getName() {\r\n        return \"gson\";\r\n    }\r\n\r\n    public <T> T decodeObject(String text, Class<T> clazz) throws Exception {\r\n        return (T) gson.fromJson(text, clazz);\r\n    }\r\n\r\n    public <T> Collection<T> decodeArray(String text, Class<T> clazz) throws Exception {\r\n        return (Collection<T>) gson.fromJson(text, clazz);\r\n    }\r\n\r\n    public Object decodeObject(String text) throws Exception {\r\n        return gson.fromJson(text, HashMap.class);\r\n    }\r\n\r\n    public Object decode(String text) throws Exception {\r\n        return gson.fromJson(text, JsonObject.class);\r\n    }\r\n\r\n    public String encode(Object object) throws Exception {\r\n        return gson.toJson(object);\r\n    }\r\n\r\n    public <T> T decodeObject(byte[] input, Class<T> clazz) throws Exception {\r\n        throw new UnsupportedOperationException();\r\n    }\r\n\r\n    @Override\r\n    public byte[] encodeToBytes(Object object) throws Exception {\r\n        // TODO Auto-generated method stub\r\n        return null;\r\n    }\r\n\r\n    @Override\r\n    public void encode(OutputStream out, Object object) throws Exception {\r\n        out.write(encodeToBytes(object));        \r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/codec/Jackson2AfterBurnCodec.java",
    "content": "package com.alibaba.json.test.codec;\r\n\r\nimport java.io.IOException;\r\nimport java.io.OutputStream;\r\nimport java.util.Collection;\r\n\r\nimport com.fasterxml.jackson.core.JsonEncoding;\r\nimport com.fasterxml.jackson.core.JsonGenerator;\r\nimport com.fasterxml.jackson.core.type.TypeReference;\r\nimport com.fasterxml.jackson.databind.JavaType;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\nimport com.fasterxml.jackson.databind.ObjectWriter;\r\nimport com.fasterxml.jackson.databind.node.ObjectNode;\r\nimport com.fasterxml.jackson.module.afterburner.AfterburnerModule;\r\n\r\n\r\npublic class Jackson2AfterBurnCodec implements Codec {\r\n\r\n    private ObjectMapper mapper = new ObjectMapper();\r\n    \r\n    public Jackson2AfterBurnCodec() {\r\n        mapper.registerModule(new AfterburnerModule());\r\n    }\r\n\r\n    public String getName() {\r\n        return \"jackson2AfterBurn\";\r\n    }\r\n\r\n    public final <T> T decodeObject(String text, Class<T> clazz) {\r\n        try {\r\n            return mapper.readValue(text, clazz);\r\n        } catch (Exception e) {\r\n            throw new RuntimeException(e.getMessage(), e);\r\n        }\r\n    }\r\n    \r\n\r\n    public <T> T decodeObject(byte[] input, Class<T> clazz) throws Exception {\r\n        try {\r\n            return mapper.readValue(input, clazz);\r\n        } catch (Exception e) {\r\n            throw new RuntimeException(e.getMessage(), e);\r\n        }\r\n    }\r\n\r\n    public <T> Collection<T> decodeArray(String text, Class<T> clazz) throws Exception {\r\n        try {\r\n            return (Collection<T>) mapper.readValue(text, new TypeReference<T>() {\r\n            });\r\n        } catch (Exception e) {\r\n            throw new RuntimeException(e.getMessage(), e);\r\n        }\r\n    }\r\n\r\n    public final Object decodeObject(String text) {\r\n        try {\r\n            return (ObjectNode) mapper.readTree(text);\r\n        } catch (Exception e) {\r\n            throw new RuntimeException(e.getMessage(), e);\r\n        }\r\n    }\r\n\r\n    public Object decode(String text) {\r\n        try {\r\n            return mapper.readTree(text);\r\n        } catch (Exception e) {\r\n            throw new RuntimeException(e.getMessage(), e);\r\n        }\r\n    }\r\n\r\n    public String encode(Object object) throws Exception {\r\n        return mapper.writeValueAsString(object);\r\n    }\r\n\r\n    @Override\r\n    public byte[] encodeToBytes(Object object) throws Exception {\r\n        return mapper.writeValueAsBytes(object);\r\n    }\r\n\r\n    @Override\r\n    public void encode(OutputStream out, Object object) throws Exception {\r\n        Class<?> clazz = object.getClass();\r\n        JsonGenerator generator = constructGenerator(out);\r\n        JavaType type = mapper.getTypeFactory().constructType(clazz);\r\n        ObjectWriter writer = mapper.writerFor(type);\r\n        writer.writeValue(generator, object);\r\n        generator.close();\r\n    }\r\n    \r\n    protected final JsonGenerator constructGenerator(OutputStream out) throws IOException {\r\n        return mapper.getFactory().createGenerator(out, JsonEncoding.UTF8);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/codec/Jackson2Codec.java",
    "content": "package com.alibaba.json.test.codec;\r\n\r\nimport java.io.IOException;\r\nimport java.io.OutputStream;\r\nimport java.util.Collection;\r\n\r\nimport com.fasterxml.jackson.core.JsonEncoding;\r\nimport com.fasterxml.jackson.core.JsonGenerator;\r\nimport com.fasterxml.jackson.core.type.TypeReference;\r\nimport com.fasterxml.jackson.databind.JavaType;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\nimport com.fasterxml.jackson.databind.ObjectWriter;\r\nimport com.fasterxml.jackson.databind.node.ObjectNode;\r\n\r\n\r\npublic class Jackson2Codec implements Codec {\r\n\r\n    private ObjectMapper mapper = new ObjectMapper();\r\n\r\n    public String getName() {\r\n        return \"jackson2\";\r\n    }\r\n\r\n    public final <T> T decodeObject(String text, Class<T> clazz) {\r\n        try {\r\n            return mapper.readValue(text, clazz);\r\n        } catch (Exception e) {\r\n            throw new RuntimeException(e.getMessage(), e);\r\n        }\r\n    }\r\n    \r\n\r\n    public <T> T decodeObject(byte[] input, Class<T> clazz) throws Exception {\r\n        try {\r\n            return mapper.readValue(input, clazz);\r\n        } catch (Exception e) {\r\n            throw new RuntimeException(e.getMessage(), e);\r\n        }\r\n    }\r\n\r\n    public <T> Collection<T> decodeArray(String text, Class<T> clazz) throws Exception {\r\n        try {\r\n            return (Collection<T>) mapper.readValue(text, new TypeReference<T>() {\r\n            });\r\n        } catch (Exception e) {\r\n            throw new RuntimeException(e.getMessage(), e);\r\n        }\r\n    }\r\n\r\n    public final Object decodeObject(String text) {\r\n        try {\r\n            return (ObjectNode) mapper.readTree(text);\r\n        } catch (Exception e) {\r\n            throw new RuntimeException(e.getMessage(), e);\r\n        }\r\n    }\r\n\r\n    public Object decode(String text) {\r\n        try {\r\n            return mapper.readTree(text);\r\n        } catch (Exception e) {\r\n            throw new RuntimeException(e.getMessage(), e);\r\n        }\r\n    }\r\n\r\n    public String encode(Object object) throws Exception {\r\n        return mapper.writeValueAsString(object);\r\n    }\r\n\r\n    @Override\r\n    public byte[] encodeToBytes(Object object) throws Exception {\r\n        return mapper.writeValueAsBytes(object);\r\n    }\r\n\r\n    @Override\r\n    public void encode(OutputStream out, Object object) throws Exception {\r\n        Class<?> clazz = object.getClass();\r\n        JsonGenerator generator = constructGenerator(out);\r\n        JavaType type = mapper.getTypeFactory().constructType(clazz);\r\n        ObjectWriter writer = mapper.writerFor(type);\r\n        writer.writeValue(generator, object);\r\n        generator.flush();\r\n        generator.close();\r\n    }\r\n    \r\n    protected final JsonGenerator constructGenerator(OutputStream out) throws IOException {\r\n        return mapper.getFactory().createGenerator(out, JsonEncoding.UTF8);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/codec/JacksonCodec.java",
    "content": "package com.alibaba.json.test.codec;\r\n\r\nimport java.io.OutputStream;\r\nimport java.util.Collection;\r\n\r\nimport com.fasterxml.jackson.core.type.TypeReference;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\nimport com.fasterxml.jackson.databind.node.ObjectNode;\r\n\r\npublic class JacksonCodec implements Codec {\r\n\r\n    private ObjectMapper mapper = new ObjectMapper();\r\n\r\n    public String getName() {\r\n        return \"jackson \";\r\n    }\r\n\r\n    public final <T> T decodeObject(String text, Class<T> clazz) {\r\n        try {\r\n            return mapper.readValue(text, clazz);\r\n        } catch (Exception e) {\r\n            throw new RuntimeException(e.getMessage(), e);\r\n        }\r\n    }\r\n    \r\n\r\n    public <T> T decodeObject(byte[] input, Class<T> clazz) throws Exception {\r\n        try {\r\n            return mapper.readValue(input, clazz);\r\n        } catch (Exception e) {\r\n            throw new RuntimeException(e.getMessage(), e);\r\n        }\r\n    }\r\n\r\n    public <T> Collection<T> decodeArray(String text, Class<T> clazz) throws Exception {\r\n        try {\r\n            return (Collection<T>) mapper.readValue(text, new TypeReference<T>() {\r\n            });\r\n        } catch (Exception e) {\r\n            throw new RuntimeException(e.getMessage(), e);\r\n        }\r\n    }\r\n\r\n    public final Object decodeObject(String text) {\r\n        try {\r\n            return (ObjectNode) mapper.readTree(text);\r\n        } catch (Exception e) {\r\n            throw new RuntimeException(e.getMessage(), e);\r\n        }\r\n    }\r\n\r\n    public Object decode(String text) {\r\n        try {\r\n            return mapper.readTree(text);\r\n        } catch (Exception e) {\r\n            throw new RuntimeException(e.getMessage(), e);\r\n        }\r\n    }\r\n\r\n    public String encode(Object object) throws Exception {\r\n        return mapper.writeValueAsString(object);\r\n    }\r\n\r\n    public byte[] encodeToBytes(Object object) throws Exception {\r\n        return mapper.writeValueAsBytes(object);\r\n    }\r\n\r\n    public void encode(OutputStream out, Object object) throws Exception {\r\n        out.write(encodeToBytes(object));        \r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/codec/JsonLibCodec.java",
    "content": "package com.alibaba.json.test.codec;\r\n\r\nimport java.io.OutputStream;\r\nimport java.util.Collection;\r\n\r\npublic class JsonLibCodec implements Codec {\r\n\r\n    public String getName() {\r\n        return \"json-lib\";\r\n    }\r\n\r\n    public <T> T decodeObject(String text, Class<T> clazz) throws Exception {\r\n        return (T) net.sf.json.JSONObject.fromObject(text);\r\n    }\r\n\r\n    public <T> Collection<T> decodeArray(String text, Class<T> clazz) throws Exception {\r\n        throw new UnsupportedOperationException();\r\n    }\r\n\r\n    public Object decodeObject(String text) throws Exception {\r\n        return net.sf.json.JSONObject.fromObject(text);\r\n    }\r\n\r\n    public Object decode(String text) throws Exception {\r\n        if (text.charAt(0) == '[') {\r\n            return net.sf.json.JSONArray.fromObject(text);\r\n        }\r\n        return net.sf.json.JSONObject.fromObject(text);\r\n        // return net.sf.json.JSONArray.fromObject(text);\r\n    }\r\n\r\n    public String encode(Object object) throws Exception {\r\n        return net.sf.json.JSONObject.fromObject(object).toString();\r\n    }\r\n    \r\n\r\n    public <T> T decodeObject(byte[] input, Class<T> clazz) throws Exception {\r\n        throw new UnsupportedOperationException();\r\n    }\r\n\r\n    @Override\r\n    public byte[] encodeToBytes(Object object) throws Exception {\r\n        // TODO Auto-generated method stub\r\n        return null;\r\n    }\r\n\r\n    @Override\r\n    public void encode(OutputStream out, Object object) throws Exception {\r\n        out.write(encodeToBytes(object));\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/codec/JsonSmartCodec.java",
    "content": "package com.alibaba.json.test.codec;\n\nimport java.io.OutputStream;\nimport java.util.Collection;\n\nimport net.minidev.json.JSONValue;\n\npublic class JsonSmartCodec implements Codec {\n\n    public String getName() {\n        return \"json-smart\";\n    }\n\n    public <T> T decodeObject(String text, Class<T> clazz) throws Exception {\n        throw new UnsupportedOperationException();\n    }\n\n    public <T> Collection<T> decodeArray(String text, Class<T> clazz) throws Exception {\n        throw new UnsupportedOperationException();\n    }\n\n    public Object decodeObject(String text) throws Exception {\n        Object value =  JSONValue.parse(text);\n        \n        return value;\n    }\n\n    public Object decode(String text) throws Exception {\n        Object value = JSONValue.parse(text);\n        \n        return value;\n    }\n\n    public String encode(Object object) throws Exception {\n        return JSONValue.toJSONString(object);\n    }\n\n\n    public <T> T decodeObject(byte[] input, Class<T> clazz) throws Exception {\n        throw new UnsupportedOperationException();\n    }\n\n    @Override\n    public byte[] encodeToBytes(Object object) throws Exception {\n        // TODO Auto-generated method stub\n        return null;\n    }\n\n    @Override\n    public void encode(OutputStream out, Object object) throws Exception {\n        out.write(encodeToBytes(object));        \n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/codec/SimpleJsonCodec.java",
    "content": "package com.alibaba.json.test.codec;\r\n\r\nimport java.io.OutputStream;\r\nimport java.util.Collection;\r\n\r\nimport org.json.simple.JSONValue;\r\nimport org.json.simple.parser.JSONParser;\r\n\r\npublic class SimpleJsonCodec implements Codec {\r\n\r\n    private JSONParser parser = new JSONParser();\r\n\r\n    public String getName() {\r\n        return \"simplejson\";\r\n    }\r\n\r\n    public <T> T decodeObject(String text, Class<T> clazz) throws Exception {\r\n        return (T) parser.parse(text);\r\n    }\r\n\r\n    public <T> Collection<T> decodeArray(String text, Class<T> clazz) throws Exception {\r\n        return (Collection<T>) parser.parse(text);\r\n    }\r\n\r\n    public Object decodeObject(String text) throws Exception {\r\n        return parser.parse(text);\r\n    }\r\n\r\n    public Object decode(String text) throws Exception {\r\n        return parser.parse(text);\r\n    }\r\n\r\n    public String encode(Object object) throws Exception {\r\n        return JSONValue.toJSONString(object);\r\n    }\r\n\r\n\r\n    public <T> T decodeObject(byte[] input, Class<T> clazz) throws Exception {\r\n        throw new UnsupportedOperationException();\r\n    }\r\n\r\n    @Override\r\n    public byte[] encodeToBytes(Object object) throws Exception {\r\n        // TODO Auto-generated method stub\r\n        return null;\r\n    }\r\n\r\n    @Override\r\n    public void encode(OutputStream out, Object object) throws Exception {\r\n        out.write(encodeToBytes(object));        \r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/codegen/Department.java",
    "content": "package com.alibaba.json.test.codegen;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class Department {\n\n    private int            id;\n    private String         name;\n\n    private boolean        root;\n\n    private Employee       leader;\n\n    private DepartmentType type;\n\n    private List<Employee> members = new ArrayList<Employee>();\n\n    public int getId() {\n        return id;\n    }\n\n    public void setId(int id) {\n        this.id = id;\n    }\n\n    public String getName() {\n        return name;\n    }\n\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    public boolean isRoot() {\n        return root;\n    }\n\n    public void setRoot(boolean root) {\n        this.root = root;\n    }\n\n    public Employee getLeader() {\n        return leader;\n    }\n\n    public void setLeader(Employee leader) {\n        this.leader = leader;\n    }\n\n    public List<Employee> getMembers() {\n        return members;\n    }\n\n    public void setMembers(List<Employee> members) {\n        this.members = members;\n    }\n\n    public DepartmentType getType() {\n        return type;\n    }\n\n    public void setType(DepartmentType type) {\n        this.type = type;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/codegen/DepartmentCodec.java",
    "content": "package com.alibaba.json.test.codegen;\n\nimport java.lang.reflect.Type;\n\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.DefaultJSONParser.ResolveTask;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.JSONLexerBase;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.ParseContext;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\n\npublic class DepartmentCodec extends JavaBeanDeserializer implements ObjectDeserializer {\n    private char[] name_gen_prefix__ = \"\\\"name\\\":\".toCharArray();\n    private char[] root_gen_prefix__ = \"\\\"root\\\":\".toCharArray();\n    private char[] type_gen_prefix__ = \"\\\"type\\\":\".toCharArray();\n    private char[] id_gen_prefix__ = \"\\\"id\\\":\".toCharArray();\n    private char[] leader_gen_prefix__ = \"\\\"leader\\\":\".toCharArray();\n    private char[] members_gen_prefix__ = \"\\\"members\\\":\".toCharArray();\n    \n    private ObjectDeserializer name_gen_deser__;\n    private ObjectDeserializer leader_gen_deser__;\n    private ObjectDeserializer members_gen_list_item_deser__;\n    private Type members_gen_list_item_type__ = com.alibaba.json.test.codegen.Employee.class;\n    private ObjectDeserializer type_gen_deser__;\n    \n    public DepartmentCodec (ParserConfig config, Class clazz) {\n        super(config, clazz);\n        type_gen_deser__ = config.getDeserializer(com.alibaba.json.test.codegen.DepartmentType.class);\n    }\n    \n    public Object createInstance(DefaultJSONParser parser, Type type) {\n        return new Department();\n        \n    }\n    public Object deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n        JSONLexerBase lexer = (JSONLexerBase) parser.getLexer();\n        \n        if (lexer.isEnabled(Feature.SortFeidFastMatch)) {\n            return super.deserialze(parser, type, fieldName);\n        }\n        \n        if (lexer.isEnabled(Feature.SupportArrayToBean)) {\n            // deserialzeArrayMapping\n        }\n        \n        if (lexer.scanType(\"Department\") == JSONLexerBase.NOT_MATCH) {\n            return super.deserialze(parser, type, fieldName);\n        }\n        \n        ParseContext mark_context = parser.getContext();\n        int matchedCount = 0;\n        Department instance = new Department();\n        \n        ParseContext context = parser.getContext();\n        ParseContext childContext = parser.setContext(context, instance, fieldName);\n        \n        if (lexer.matchStat == JSONLexerBase.END) {\n            return instance;\n        }\n        \n        int matchStat = 0;\n        int _asm_flag_0 = 0;\n        int id_gen = 0;\n        com.alibaba.json.test.codegen.Employee leader_gen = null;\n        java.util.List members_gen = null;\n        String name_gen;\n        if (lexer.isEnabled(Feature.InitStringFieldAsEmpty)) {\n            name_gen = lexer.stringDefaultValue();\n            _asm_flag_0 |= 8;\n        } else {\n            name_gen = null;\n        }\n        boolean root_gen = false;\n        com.alibaba.json.test.codegen.DepartmentType type_gen = null;\n        boolean endFlag = false, restFlag = false;\n        \n        if ((!endFlag) && (!restFlag)) {\n            id_gen = lexer.scanFieldInt(id_gen_prefix__);\n            if(lexer.matchStat > 0) {\n                _asm_flag_0 |= 1;\n                matchedCount++;\n            }\n            if(lexer.matchStat == JSONLexerBase.NOT_MATCH) {\n                restFlag = true;\n            }\n            if(lexer.matchStat == JSONLexerBase.END) {\n                endFlag = true;\n            }\n            \n        }\n        if ((!endFlag) && (!restFlag)) {\n            if (lexer.matchField(leader_gen_prefix__)) {\n                _asm_flag_0 |= 2;\n                matchedCount++;\n                if(parser.getResolveStatus() == DefaultJSONParser.NeedToResolve) {\n                    ResolveTask resolveTask = parser.getLastResolveTask();\n                    resolveTask.ownerContext = parser.getContext();\n                    resolveTask.fieldDeserializer = this.getFieldDeserializer(\"leader\");\n                    parser.setResolveStatus(DefaultJSONParser.NONE);\n                }\n            }\n            if(lexer.matchStat > 0) {\n                _asm_flag_0 |= 2;\n                matchedCount++;\n            }\n            if(lexer.matchStat == JSONLexerBase.NOT_MATCH) {\n                restFlag = true;\n            }\n            if(lexer.matchStat == JSONLexerBase.END) {\n                endFlag = true;\n            }\n            \n        }\n        if ((!endFlag) && (!restFlag)) {\n            if (lexer.matchField(members_gen_prefix__)) {\n                _asm_flag_0 |= 4;\n                if (lexer.token() == JSONToken.NULL) {\n                    lexer.nextToken(JSONToken.COMMA);\n                } else {\n                    if (lexer.token() == JSONToken.LBRACKET) {\n                        if(members_gen_list_item_deser__ == null) {\n                            members_gen_list_item_deser__ = parser.getConfig().getDeserializer(com.alibaba.json.test.codegen.Employee.class);\n                        }\n                        final int fastMatchToken = members_gen_list_item_deser__.getFastMatchToken();\n                        lexer.nextToken(fastMatchToken);\n                        members_gen = new java.util.ArrayList();\n                        ParseContext listContext = parser.getContext();\n                        parser.setContext(members_gen, \"members\");\n            \n                        for(int i = 0; ;++i) {\n                            if (lexer.token() == JSONToken.RBRACKET) {\n                                break;\n                            }\n                            com.alibaba.json.test.codegen.Employee itemValue = members_gen_list_item_deser__.deserialze(parser, members_gen_list_item_type__, i);\n                            members_gen.add(itemValue);\n                            parser.checkListResolve(members_gen);\n                            if (lexer.token() == JSONToken.COMMA) {\n                                lexer.nextToken(fastMatchToken);\n                            }\n                        }\n                        parser.setContext(listContext);\n                        if (lexer.token() != JSONToken.RBRACKET) {\n                            restFlag = true;\n                        }\n                        lexer.nextToken(JSONToken.COMMA);\n            \n                    } else {\n                        restFlag = true;\n                    }\n                }\n            }\n            if(lexer.matchStat > 0) {\n                _asm_flag_0 |= 4;\n                matchedCount++;\n            }\n            if(lexer.matchStat == JSONLexerBase.NOT_MATCH) {\n                restFlag = true;\n            }\n            if(lexer.matchStat == JSONLexerBase.END) {\n                endFlag = true;\n            }\n            \n        }\n        if ((!endFlag) && (!restFlag)) {\n            name_gen = lexer.scanFieldString(name_gen_prefix__);\n            if(lexer.matchStat > 0) {\n                _asm_flag_0 |= 8;\n                matchedCount++;\n            }\n            if(lexer.matchStat == JSONLexerBase.NOT_MATCH) {\n                restFlag = true;\n            }\n            if(lexer.matchStat == JSONLexerBase.END) {\n                endFlag = true;\n            }\n            \n        }\n        if ((!endFlag) && (!restFlag)) {\n            root_gen = lexer.scanFieldBoolean(root_gen_prefix__);\n            if(lexer.matchStat > 0) {\n                _asm_flag_0 |= 16;\n                matchedCount++;\n            }\n            if(lexer.matchStat == JSONLexerBase.NOT_MATCH) {\n                restFlag = true;\n            }\n            if(lexer.matchStat == JSONLexerBase.END) {\n                endFlag = true;\n            }\n            \n        }\n        if ((!endFlag) && (!restFlag)) {\n            type_gen = (com.alibaba.json.test.codegen.DepartmentType) this.scanEnum(lexer, type_gen_prefix__, type_gen_deser__);\n            if(lexer.matchStat > 0) {\n                _asm_flag_0 |= 32;\n                matchedCount++;\n            }\n            if(lexer.matchStat == JSONLexerBase.NOT_MATCH) {\n                restFlag = true;\n            }\n            if(lexer.matchStat != JSONLexerBase.END) {\n                restFlag = true;\n            }\n            \n        }\n        \n        if (restFlag) {\n            return super.parseRest(parser, type, fieldName, instance, 0, new int[0]);\n        }\n        \n        return instance;\n        \n    }\n}\n\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/codegen/DepartmentType.java",
    "content": "package com.alibaba.json.test.codegen;\n\n\npublic enum DepartmentType {\n    Normal, Virtual\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/codegen/Employee.java",
    "content": "package com.alibaba.json.test.codegen;\n\npublic class Employee {\n\n    private int    id;\n    private String name;\n\n    public int getId() {\n        return id;\n    }\n\n    public void setId(int id) {\n        this.id = id;\n    }\n\n    public String getName() {\n        return name;\n    }\n\n    public void setName(String name) {\n        this.name = name;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/codegen/GenMediaTest.java",
    "content": "package com.alibaba.json.test.codegen;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.codegen.DeserializerGen;\n\nimport data.media.Media;\n\npublic class GenMediaTest extends TestCase {\n\n    public void test_codegen() throws Exception {\n        StringBuffer out = new StringBuffer();\n        DeserializerGen generator = new DeserializerGen(Media.class, out);\n\n        generator.gen();\n\n        System.out.println(out.toString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/codegen/GenTest.java",
    "content": "package com.alibaba.json.test.codegen;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.codegen.DeserializerGen;\n\nimport data.media.MediaContent;\n\npublic class GenTest extends TestCase {\n\n    public void test_codegen() throws Exception {\n        StringBuffer out = new StringBuffer();\n        DeserializerGen generator = new DeserializerGen(MediaContent.class, out);\n\n        generator.gen();\n\n        System.out.println(out.toString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/codegen/MediaContentGenTest.java",
    "content": "package com.alibaba.json.test.codegen;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.codegen.DeserializerGen;\n\nimport data.media.Image;\nimport data.media.MediaContent;\n\npublic class MediaContentGenTest extends TestCase {\n\n    public void test_codegen() throws Exception {\n        StringBuffer out = new StringBuffer();\n        DeserializerGen generator = new DeserializerGen(MediaContent.class, out);\n\n        generator.gen();\n\n        System.out.println(out.toString());\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/deny/NotExistsTest.java",
    "content": "package com.alibaba.json.test.deny;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.util.TypeUtils;\nimport junit.framework.TestCase;\n\nimport java.lang.reflect.Field;\nimport java.util.concurrent.ConcurrentMap;\n\n/**\n * Created by wenshao on 28/01/2017.\n */\npublic class NotExistsTest extends TestCase {\n    public void test_0() throws Exception {\n        Field field = TypeUtils.class.getDeclaredField(\"mappings\");\n        field.setAccessible(true);\n\n        ConcurrentMap<String, Class<?>> mappings = (ConcurrentMap<String, Class<?>>) field.get(null);\n        System.out.println(mappings.size());\n//         ParserConfig.global.setAutoTypeSupport(true);\n        for (int i = 0; i < 10; ++i) {\n            long start = System.currentTimeMillis();\n            perf();\n            long millis = System.currentTimeMillis() - start;\n            System.out.println(\"millis : \" + millis);\n        }\n    }\n\n    private void perf() {\n        for (int i = 0; i < 1000 * 1; ++i) {\n            String text = \"[{\\\"@type\\\":\\\"x0\\\"},{\\\"@type\\\":\\\"x1\\\"},{\\\"@type\\\":\\\"x2\\\"},{\\\"@type\\\":\\\"x3\\\"},{\\\"@type\\\":\\\"x4\\\"}]\";\n            try {\n                JSON.parseObject(text);\n            } catch (Exception ex) {\n                // skip\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/dubbo/EnumTest.java",
    "content": "package com.alibaba.json.test.dubbo;\r\n\r\npublic enum EnumTest {\r\n\r\n    Pig,\r\n    Dog,\r\n    Cat\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/dubbo/FullAddress.java",
    "content": "/**\n * Project: morgan.domain\n * \n * File Created at 2009-6-11\n * $Id: FullAddress.java 77622 2011-03-03 08:31:45Z ding.lid $\n * \n * Copyright 2008 Alibaba.com Croporation Limited.\n * All rights reserved.\n *\n * This software is the confidential and proprietary information of\n * Alibaba Company. (\"Confidential Information\").  You shall not\n * disclose such Confidential Information and shall use it only in\n * accordance with the terms of the license agreement you entered into\n * with Alibaba.com.\n */\npackage com.alibaba.json.test.dubbo;\n\nimport java.io.Serializable;\n\n/**\n * @author xk1430\n */\npublic class FullAddress implements Serializable {\n\n    private static final long serialVersionUID = 5163979984269419831L;\n\n    private String            countryId;\n\n    private String            countryName;\n\n    private String            provinceName;\n\n    private String            cityId;\n\n    private String            cityName;\n\n    private String            streetAddress;\n\n    private String            zipCode;\n\n    public void setCountryId(String countryId) {\n        this.countryId = countryId;\n    }\n\n    public void setCountryName(String countryName) {\n        this.countryName = countryName;\n    }\n\n    public void setProvinceName(String provinceName) {\n        this.provinceName = provinceName;\n    }\n\n    public void setCityId(String cityId) {\n        this.cityId = cityId;\n    }\n\n    public void setCityName(String cityName) {\n        this.cityName = cityName;\n    }\n\n    public void setStreetAddress(String streetAddress) {\n        this.streetAddress = streetAddress;\n    }\n\n    public void setZipCode(String zipCode) {\n        this.zipCode = zipCode;\n    }\n\n    public String getCountryId() {\n        return countryId;\n    }\n\n    public String getCountryName() {\n        return countryName;\n    }\n\n    public String getProvinceName() {\n        return provinceName;\n    }\n\n    public String getCityId() {\n        return cityId;\n    }\n\n    public String getCityName() {\n        return cityName;\n    }\n\n    public String getStreetAddress() {\n        return streetAddress;\n    }\n\n    public String getZipCode() {\n        return zipCode;\n    }\n\n    public FullAddress() {\n    }\n\n    public FullAddress(String countryId, String provinceName, String cityId, String streetAddress,\n                       String zipCode) {\n        this.countryId = countryId;\n        this.countryName = countryId;\n        this.provinceName = provinceName;\n        this.cityId = cityId;\n        this.cityName = cityId;\n        this.streetAddress = streetAddress;\n        this.zipCode = zipCode;\n    }\n\n    public FullAddress(String countryId, String countryName, String provinceName, String cityId,\n                       String cityName, String streetAddress, String zipCode) {\n        this.countryId = countryId;\n        this.countryName = countryName;\n        this.provinceName = provinceName;\n        this.cityId = cityId;\n        this.cityName = cityName;\n        this.streetAddress = streetAddress;\n        this.zipCode = zipCode;\n    }\n\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((cityId == null) ? 0 : cityId.hashCode());\n        result = prime * result + ((cityName == null) ? 0 : cityName.hashCode());\n        result = prime * result + ((countryId == null) ? 0 : countryId.hashCode());\n        result = prime * result + ((countryName == null) ? 0 : countryName.hashCode());\n        result = prime * result + ((provinceName == null) ? 0 : provinceName.hashCode());\n        result = prime * result + ((streetAddress == null) ? 0 : streetAddress.hashCode());\n        result = prime * result + ((zipCode == null) ? 0 : zipCode.hashCode());\n        return result;\n    }\n\n    @Override\n    public boolean equals(Object obj) {\n        if (this == obj)\n            return true;\n        if (obj == null)\n            return false;\n        if (getClass() != obj.getClass())\n            return false;\n        FullAddress other = (FullAddress) obj;\n        if (cityId == null) {\n            if (other.cityId != null)\n                return false;\n        } else if (!cityId.equals(other.cityId))\n            return false;\n        if (cityName == null) {\n            if (other.cityName != null)\n                return false;\n        } else if (!cityName.equals(other.cityName))\n            return false;\n        if (countryId == null) {\n            if (other.countryId != null)\n                return false;\n        } else if (!countryId.equals(other.countryId))\n            return false;\n        if (countryName == null) {\n            if (other.countryName != null)\n                return false;\n        } else if (!countryName.equals(other.countryName))\n            return false;\n        if (provinceName == null) {\n            if (other.provinceName != null)\n                return false;\n        } else if (!provinceName.equals(other.provinceName))\n            return false;\n        if (streetAddress == null) {\n            if (other.streetAddress != null)\n                return false;\n        } else if (!streetAddress.equals(other.streetAddress))\n            return false;\n        if (zipCode == null) {\n            if (other.zipCode != null)\n                return false;\n        } else if (!zipCode.equals(other.zipCode))\n            return false;\n        return true;\n    }\n\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        if (countryName != null && countryName.length() > 0) {\n            sb.append(countryName);\n        }\n        if (provinceName != null && provinceName.length() > 0) {\n            sb.append(\" \");\n            sb.append(provinceName);\n        }\n        if (cityName != null && cityName.length() > 0) {\n            sb.append(\" \");\n            sb.append(cityName);\n        }\n        if (streetAddress != null && streetAddress.length() > 0) {\n            sb.append(\" \");\n            sb.append(streetAddress);\n        }\n        return sb.toString();\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/dubbo/HelloServiceImpl.java",
    "content": "/**\r\n * Project: dubbo.hello.sample.service\r\n *\r\n * File Created at 2009-6-12\r\n * $Id$\r\n *\r\n * Copyright 2008 Alibaba.com Croporation Limited.\r\n * All rights reserved.\r\n *\r\n * This software is the confidential and proprietary information of\r\n * Alibaba Company. (\"Confidential Information\").  You shall not\r\n * disclose such Confidential Information and shall use it only in\r\n * accordance with the terms of the license agreement you entered into\r\n * with Alibaba.com.\r\n */\r\npackage com.alibaba.json.test.dubbo;\r\n\r\nimport java.util.Collection;\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.HashSet;\r\nimport java.util.LinkedHashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.Random;\r\nimport java.util.concurrent.ConcurrentHashMap;\r\n\r\n\r\n/**\r\n * TODO Comment of HelloServiceImpl\r\n * \r\n * @author tony.chenl\r\n */\r\npublic class HelloServiceImpl {\r\n\r\n    public Tigers eatTiger(Tiger tiger) {\r\n\r\n        return new Tigers(tiger);\r\n    }\r\n\r\n    public String eatTiger() {\r\n        return \"想吃老虎\";\r\n    }\r\n\r\n    public String eatTiger(String number) {\r\n        return number;\r\n    }\r\n\r\n    public HashSet<String> eatTigers(String name, HashSet<String> tigers) {\r\n        return tigers;\r\n    }\r\n\r\n    public Map<String, Collection<String>> eatTiger(String name, HashSet<String> tigers) {\r\n        HashMap<String, Collection<String>> tiger = new HashMap<String, Collection<String>>();\r\n        tiger.put(name, tigers);\r\n        return tiger;\r\n    }\r\n\r\n    public String eatTiger(String name, Tiger tiger) {\r\n        return name + \"想吃\" + tiger.getTigerName() + tiger.getTigerSex();\r\n    }\r\n\r\n    public EnumTest eatEnums(EnumTest... enums) {\r\n        if (enums.length > 0) {\r\n            return enums[enums.length - 1];\r\n        } else {\r\n            return EnumTest.Cat;\r\n        }\r\n    }\r\n\r\n    public Date eatTime(Date date) {\r\n        return date;\r\n    }\r\n\r\n    @SuppressWarnings(\"rawtypes\")\r\n    public Map eatTiger(Map map) {\r\n        return map;\r\n    }\r\n\r\n    public Map<String, String> eatTigerMap(Map<String, String> map) {\r\n        return map;\r\n    }\r\n\r\n    public LinkedHashMap<String, String> eatTiger(LinkedHashMap<String, String> map) {\r\n        return map;\r\n    }\r\n\r\n    public ConcurrentHashMap<String, String> eatTiger(ConcurrentHashMap<String, String> map) {\r\n        return map;\r\n    }\r\n\r\n    public String sayHello(String hello) {\r\n        for (int i = 0; i < 10000; i++) {\r\n            StringBuffer sb = new StringBuffer();\r\n            sb.append(new Random().nextInt(5000));\r\n        }\r\n        return hello;\r\n    }\r\n\r\n    public Person showPerson(Person person) {\r\n        return person;\r\n    }\r\n\r\n    public List<Person> eatTiger(List<Person> list) {\r\n        return list;\r\n    }\r\n\r\n    public String[] eatTiger(String[] args) {\r\n        return args;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/dubbo/Image.java",
    "content": "/**\n * Project: dubbo.test\n * \n * File Created at 2010-11-30\n * $Id: Image.java 75806 2011-02-18 09:08:30Z tony.chenl $\n * \n * Copyright 2008 Alibaba.com Croporation Limited.\n * All rights reserved.\n *\n * This software is the confidential and proprietary information of\n * Alibaba Company. (\"Confidential Information\").  You shall not\n * disclose such Confidential Information and shall use it only in\n * accordance with the terms of the license agreement you entered into\n * with Alibaba.com.\n */\npackage com.alibaba.json.test.dubbo;\n\nimport java.io.InputStream;\nimport java.io.Serializable;\n\n/**\n * TODO Comment of Image\n * \n * @author tony.chenl\n */\npublic class Image implements Serializable {\n    /**\n     * \n     */\n    private static final long serialVersionUID = 616779453943392868L;\n    String                    name;\n    InputStream               is;\n\n    public String getName() {\n        return name;\n    }\n\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    public InputStream getIs() {\n        return is;\n    }\n\n    public void setIs(InputStream is) {\n        this.is = is;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/dubbo/Person.java",
    "content": "/**\n * Project: dubbo.test\n * \n * File Created at 2010-11-17\n * $Id: Person.java 77622 2011-03-03 08:31:45Z ding.lid $\n * \n * Copyright 2008 Alibaba.com Croporation Limited.\n * All rights reserved.\n *\n * This software is the confidential and proprietary information of\n * Alibaba Company. (\"Confidential Information\").  You shall not\n * disclose such Confidential Information and shall use it only in\n * accordance with the terms of the license agreement you entered into\n * with Alibaba.com.\n */\npackage com.alibaba.json.test.dubbo;\n\nimport java.io.Serializable;\n\n/**\n * TODO Comment of Person\n * \n * @author tony.chenl\n */\npublic class Person implements Serializable {\n\n    /**\n     * \n     */\n    private static final long serialVersionUID = 1L;\n\n    String                    personId;\n\n    String                    loginName;\n\n    PersonStatus              status;\n\n    String                    email;\n\n    String                    penName;\n\n    PersonInfo                infoProfile;\n\n    public Person() {\n\n    }\n\n    public Person(String id) {\n        this.personId = id;\n    }\n\n    public String getPersonId() {\n        return personId;\n    }\n\n    public void setPersonId(String personId) {\n        this.personId = personId;\n    }\n\n    public PersonInfo getInfoProfile() {\n        return infoProfile;\n    }\n\n    public void setInfoProfile(PersonInfo infoProfile) {\n        this.infoProfile = infoProfile;\n    }\n\n    public void setLoginName(String loginName) {\n        this.loginName = loginName;\n    }\n\n    public void setStatus(PersonStatus status) {\n        this.status = status;\n    }\n\n    public void setEmail(String email) {\n        this.email = email;\n    }\n\n    public void setPenName(String penName) {\n        this.penName = penName;\n    }\n\n    public String getEmail() {\n        return this.email;\n    }\n\n    public String getLoginName() {\n        return this.loginName;\n    }\n\n    public PersonStatus getStatus() {\n        return this.status;\n    }\n\n    public String getPenName() {\n        return penName;\n    }\n\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((email == null) ? 0 : email.hashCode());\n        result = prime * result + ((infoProfile == null) ? 0 : infoProfile.hashCode());\n        result = prime * result + ((loginName == null) ? 0 : loginName.hashCode());\n        result = prime * result + ((penName == null) ? 0 : penName.hashCode());\n        result = prime * result + ((personId == null) ? 0 : personId.hashCode());\n        result = prime * result + ((status == null) ? 0 : status.hashCode());\n        return result;\n    }\n\n    @Override\n    public boolean equals(Object obj) {\n        if (this == obj)\n            return true;\n        if (obj == null)\n            return false;\n        if (getClass() != obj.getClass())\n            return false;\n        Person other = (Person) obj;\n        if (email == null) {\n            if (other.email != null)\n                return false;\n        } else if (!email.equals(other.email))\n            return false;\n        if (infoProfile == null) {\n            if (other.infoProfile != null)\n                return false;\n        } else if (!infoProfile.equals(other.infoProfile))\n            return false;\n        if (loginName == null) {\n            if (other.loginName != null)\n                return false;\n        } else if (!loginName.equals(other.loginName))\n            return false;\n        if (penName == null) {\n            if (other.penName != null)\n                return false;\n        } else if (!penName.equals(other.penName))\n            return false;\n        if (personId == null) {\n            if (other.personId != null)\n                return false;\n        } else if (!personId.equals(other.personId))\n            return false;\n        if (status != other.status)\n            return false;\n        return true;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/dubbo/PersonInfo.java",
    "content": "/**\n * Project: dubbo.test\n * \n * File Created at 2010-11-17\n * $Id: PersonInfo.java 77622 2011-03-03 08:31:45Z ding.lid $\n * \n * Copyright 2008 Alibaba.com Croporation Limited.\n * All rights reserved.\n *\n * This software is the confidential and proprietary information of\n * Alibaba Company. (\"Confidential Information\").  You shall not\n * disclose such Confidential Information and shall use it only in\n * accordance with the terms of the license agreement you entered into\n * with Alibaba.com.\n */\npackage com.alibaba.json.test.dubbo;\n\nimport java.io.Serializable;\nimport java.util.List;\n\n/**\n * TODO Comment of PersonInfoModel\n * \n * @author tony.chenl\n */\npublic class PersonInfo implements Serializable {\n    private static final long serialVersionUID = 7443011149612231882L;\n\n    List<Phone>               phones;\n\n    Phone                     fax;\n\n    FullAddress               fullAddress;\n\n    String                    mobileNo;\n\n    String                    name;\n\n    boolean                   male;\n\n    boolean                   female;\n\n    String                    department;\n\n    String                    jobTitle;\n\n    String                    homepageUrl;\n\n    public List<Phone> getPhones() {\n        return phones;\n    }\n\n    public void setPhones(List<Phone> phones) {\n        this.phones = phones;\n    }\n\n    public boolean isMale() {\n        return male;\n    }\n\n    public void setMale(boolean male) {\n        this.male = male;\n    }\n\n    public boolean isFemale() {\n        return female;\n    }\n\n    public void setFemale(boolean female) {\n        this.female = female;\n    }\n\n    public void setFax(Phone fax) {\n        this.fax = fax;\n    }\n\n    public void setFullAddress(FullAddress fullAddress) {\n        this.fullAddress = fullAddress;\n    }\n\n    public void setMobileNo(String mobileNo) {\n        this.mobileNo = mobileNo;\n    }\n\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    public void setDepartment(String department) {\n        this.department = department;\n    }\n\n    public void setJobTitle(String jobTitle) {\n        this.jobTitle = jobTitle;\n    }\n\n    public void setHomepageUrl(String homepageUrl) {\n        this.homepageUrl = homepageUrl;\n    }\n\n    public String getDepartment() {\n        return department;\n    }\n\n    public Phone getFax() {\n        return fax;\n    }\n\n    public FullAddress getFullAddress() {\n        return fullAddress;\n    }\n\n    public String getHomepageUrl() {\n        return homepageUrl;\n    }\n\n    public String getJobTitle() {\n        return jobTitle;\n    }\n\n    public String getMobileNo() {\n        return mobileNo;\n    }\n\n    public String getName() {\n        return name;\n    }\n\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((department == null) ? 0 : department.hashCode());\n        result = prime * result + ((fax == null) ? 0 : fax.hashCode());\n        result = prime * result + (female ? 1231 : 1237);\n        result = prime * result + ((fullAddress == null) ? 0 : fullAddress.hashCode());\n        result = prime * result + ((homepageUrl == null) ? 0 : homepageUrl.hashCode());\n        result = prime * result + ((jobTitle == null) ? 0 : jobTitle.hashCode());\n        result = prime * result + (male ? 1231 : 1237);\n        result = prime * result + ((mobileNo == null) ? 0 : mobileNo.hashCode());\n        result = prime * result + ((name == null) ? 0 : name.hashCode());\n        result = prime * result + ((phones == null) ? 0 : phones.hashCode());\n        return result;\n    }\n\n    @Override\n    public boolean equals(Object obj) {\n        if (this == obj)\n            return true;\n        if (obj == null)\n            return false;\n        if (getClass() != obj.getClass())\n            return false;\n        PersonInfo other = (PersonInfo) obj;\n        if (department == null) {\n            if (other.department != null)\n                return false;\n        } else if (!department.equals(other.department))\n            return false;\n        if (fax == null) {\n            if (other.fax != null)\n                return false;\n        } else if (!fax.equals(other.fax))\n            return false;\n        if (female != other.female)\n            return false;\n        if (fullAddress == null) {\n            if (other.fullAddress != null)\n                return false;\n        } else if (!fullAddress.equals(other.fullAddress))\n            return false;\n        if (homepageUrl == null) {\n            if (other.homepageUrl != null)\n                return false;\n        } else if (!homepageUrl.equals(other.homepageUrl))\n            return false;\n        if (jobTitle == null) {\n            if (other.jobTitle != null)\n                return false;\n        } else if (!jobTitle.equals(other.jobTitle))\n            return false;\n        if (male != other.male)\n            return false;\n        if (mobileNo == null) {\n            if (other.mobileNo != null)\n                return false;\n        } else if (!mobileNo.equals(other.mobileNo))\n            return false;\n        if (name == null) {\n            if (other.name != null)\n                return false;\n        } else if (!name.equals(other.name))\n            return false;\n        if (phones == null) {\n            if (other.phones != null)\n                return false;\n        } else if (!phones.equals(other.phones))\n            return false;\n        return true;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/dubbo/PersonStatus.java",
    "content": "/**\n * Project: dubbo.test\n * \n * File Created at 2010-11-19\n * $Id: PersonStatus.java 67600 2010-11-30 06:01:31Z tony.chenl $\n * \n * Copyright 2008 Alibaba.com Croporation Limited.\n * All rights reserved.\n *\n * This software is the confidential and proprietary information of\n * Alibaba Company. (\"Confidential Information\").  You shall not\n * disclose such Confidential Information and shall use it only in\n * accordance with the terms of the license agreement you entered into\n * with Alibaba.com.\n */\npackage com.alibaba.json.test.dubbo;\n\n/**\n * TODO Comment of PersonStatus\n * \n * @author tony.chenl\n */\npublic enum PersonStatus {\n    ENABLED,\n    DISABLED\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/dubbo/Phone.java",
    "content": "/**\n * Project: morgan.domain\n * \n * File Created at 2009-6-11\n * $Id: Phone.java 77622 2011-03-03 08:31:45Z ding.lid $\n * \n * Copyright 2008 Alibaba.com Croporation Limited.\n * All rights reserved.\n *\n * This software is the confidential and proprietary information of\n * Alibaba Company. (\"Confidential Information\").  You shall not\n * disclose such Confidential Information and shall use it only in\n * accordance with the terms of the license agreement you entered into\n * with Alibaba.com.\n */\npackage com.alibaba.json.test.dubbo;\n\nimport java.io.Serializable;\n\n/**\n * 电话号码\n * \n * @author xk1430\n */\npublic class Phone implements Serializable {\n\n    private static final long serialVersionUID = 4399060521859707703L;\n\n    private String            country;\n\n    private String            area;\n\n    private String            number;\n\n    private String            extensionNumber;\n\n    public Phone() {\n    }\n\n    public Phone(String country, String area, String number, String extensionNumber) {\n        this.country = country;\n        this.area = area;\n        this.number = number;\n        this.extensionNumber = extensionNumber;\n    }\n\n    public void setCountry(String country) {\n        this.country = country;\n    }\n\n    public void setArea(String area) {\n        this.area = area;\n    }\n\n    public void setNumber(String number) {\n        this.number = number;\n    }\n\n    public void setExtensionNumber(String extensionNumber) {\n        this.extensionNumber = extensionNumber;\n    }\n\n    public String getCountry() {\n        return country;\n    }\n\n    public String getArea() {\n        return area;\n    }\n\n    public String getNumber() {\n        return number;\n    }\n\n    public String getExtensionNumber() {\n        return extensionNumber;\n    }\n\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((area == null) ? 0 : area.hashCode());\n        result = prime * result + ((country == null) ? 0 : country.hashCode());\n        result = prime * result + ((extensionNumber == null) ? 0 : extensionNumber.hashCode());\n        result = prime * result + ((number == null) ? 0 : number.hashCode());\n        return result;\n    }\n\n    @Override\n    public boolean equals(Object obj) {\n        if (this == obj)\n            return true;\n        if (obj == null)\n            return false;\n        if (getClass() != obj.getClass())\n            return false;\n        Phone other = (Phone) obj;\n        if (area == null) {\n            if (other.area != null)\n                return false;\n        } else if (!area.equals(other.area))\n            return false;\n        if (country == null) {\n            if (other.country != null)\n                return false;\n        } else if (!country.equals(other.country))\n            return false;\n        if (extensionNumber == null) {\n            if (other.extensionNumber != null)\n                return false;\n        } else if (!extensionNumber.equals(other.extensionNumber))\n            return false;\n        if (number == null) {\n            if (other.number != null)\n                return false;\n        } else if (!number.equals(other.number))\n            return false;\n        return true;\n    }\n\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        if (country != null && country.length() > 0) {\n            sb.append(country);\n            sb.append(\"-\");\n        }\n        if (area != null && area.length() > 0) {\n            sb.append(area);\n            sb.append(\"-\");\n        }\n        if (number != null && number.length() > 0) {\n            sb.append(number);\n        }\n        if (extensionNumber != null && extensionNumber.length() > 0) {\n            sb.append(\"-\");\n            sb.append(extensionNumber);\n        }\n        return sb.toString();\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/dubbo/Tiger.java",
    "content": "package com.alibaba.json.test.dubbo;\n\nimport java.io.Serializable;\n\npublic class Tiger implements Serializable {\n\n    /**\n     *\n     */\n    private static final long serialVersionUID = -768303386469936078L;\n\n    public Tiger(){\n    }\n\n    private String  tigerName;\n    private Boolean tigerSex;\n\n    public String getTigerName() {\n        return tigerName;\n    }\n\n    public void setTigerName(String tigerName) {\n        this.tigerName = tigerName;\n    }\n\n    public Boolean getTigerSex() {\n        return tigerSex;\n    }\n\n    public void setTigerSex(Boolean tigerSex) {\n        this.tigerSex = tigerSex;\n    }\n\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/dubbo/Tigers.java",
    "content": "package com.alibaba.json.test.dubbo;\n\nimport java.io.Serializable;\nimport java.util.HashMap;\nimport java.util.Map;\n\n\npublic class Tigers implements Serializable {\n\n    private static final long serialVersionUID = -1565572802090235506L;\n\n    public Tigers(){\n    }\n\n    public Tigers(Tiger tiger){\n        this.map = new HashMap<String, Tiger>();\n        this.map.put(\"1st\", tiger);\n        this.tiger = tiger;\n    }\n\n    private Tiger              tiger;\n    private Map<String, Tiger> map;\n\n    public Map<String, Tiger> getMap() {\n        return map;\n    }\n\n    public void setMap(Map<String, Tiger> map) {\n        this.map = map;\n    }\n\n    public Tiger getTiger() {\n        return tiger;\n    }\n\n    public void setTiger(Tiger tiger) {\n        this.tiger = tiger;\n    }\n\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/entity/Company.java",
    "content": "package com.alibaba.json.test.entity;\r\n\r\npublic class Company {\r\n\r\n    private Long       id;\r\n    private String     name;\r\n    private String     description;\r\n    private String     stock;\r\n\r\n    private Department rootDepartment;\r\n\r\n    public String getStock() {\r\n        return stock;\r\n    }\r\n\r\n    public void setStock(String stock) {\r\n        this.stock = stock;\r\n    }\r\n\r\n    public Department getRootDepartment() {\r\n        return rootDepartment;\r\n    }\r\n\r\n    public void setRootDepartment(Department rootDepartment) {\r\n        this.rootDepartment = rootDepartment;\r\n    }\r\n\r\n    public Long getId() {\r\n        return id;\r\n    }\r\n\r\n    public void setId(Long id) {\r\n        this.id = id;\r\n    }\r\n\r\n    public String getName() {\r\n        return name;\r\n    }\r\n\r\n    public void setName(String name) {\r\n        this.name = name;\r\n    }\r\n\r\n    public String getDescription() {\r\n        return description;\r\n    }\r\n\r\n    public void setDescription(String description) {\r\n        this.description = description;\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/entity/Department.java",
    "content": "package com.alibaba.json.test.entity;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\n/**\r\n * @author wenshao[szujobs@hotmail.com]\r\n */\r\npublic class Department {\r\n\r\n    private Long             id;\r\n    private String           name;\r\n    private String           description;\r\n\r\n    private List<Department> children = new ArrayList<Department>();\r\n    private List<Employee>   members  = new ArrayList<Employee>();\r\n\r\n    public Long getId() {\r\n        return id;\r\n    }\r\n\r\n    public void setId(Long id) {\r\n        this.id = id;\r\n    }\r\n\r\n    public List<Employee> getMembers() {\r\n        return members;\r\n    }\r\n\r\n    public void setMembers(List<Employee> members) {\r\n        this.members = members;\r\n    }\r\n\r\n    public List<Department> getChildren() {\r\n        return children;\r\n    }\r\n\r\n    public void setChildren(List<Department> children) {\r\n        this.children = children;\r\n    }\r\n\r\n    public String getName() {\r\n        return name;\r\n    }\r\n\r\n    public void setName(String name) {\r\n        this.name = name;\r\n    }\r\n\r\n    public String getDescription() {\r\n        return description;\r\n    }\r\n\r\n    public void setDescription(String description) {\r\n        this.description = description;\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/entity/Employee.java",
    "content": "package com.alibaba.json.test.entity;\r\n\r\nimport java.math.BigDecimal;\r\nimport java.util.Date;\r\n\r\npublic class Employee {\r\n\r\n    private Long       id;\r\n    private String     number;\r\n    private String     name;\r\n    private String     description;\r\n    private Integer    age;\r\n    private BigDecimal salary;\r\n    private Date       birthdate;\r\n    private boolean    badboy;\r\n\r\n    public Employee(){\r\n\r\n    }\r\n\r\n    public boolean isBadboy() {\r\n        return badboy;\r\n    }\r\n\r\n    public void setBadboy(boolean badboy) {\r\n        this.badboy = badboy;\r\n    }\r\n\r\n    public Integer getAge() {\r\n        return age;\r\n    }\r\n\r\n    public void setAge(Integer age) {\r\n        this.age = age;\r\n    }\r\n\r\n    public Long getId() {\r\n        return id;\r\n    }\r\n\r\n    public void setId(Long id) {\r\n        this.id = id;\r\n    }\r\n\r\n    public String getNumber() {\r\n        return number;\r\n    }\r\n\r\n    public void setNumber(String number) {\r\n        this.number = number;\r\n    }\r\n\r\n    public String getName() {\r\n        return name;\r\n    }\r\n\r\n    public void setName(String name) {\r\n        this.name = name;\r\n    }\r\n\r\n    public String getDescription() {\r\n        return description;\r\n    }\r\n\r\n    public void setDescription(String description) {\r\n        this.description = description;\r\n    }\r\n\r\n    public BigDecimal getSalary() {\r\n        return salary;\r\n    }\r\n\r\n    public void setSalary(BigDecimal salary) {\r\n        this.salary = salary;\r\n    }\r\n\r\n    public Date getBirthdate() {\r\n        return birthdate;\r\n    }\r\n\r\n    public void setBirthdate(Date birthdate) {\r\n        this.birthdate = birthdate;\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/entity/Group.java",
    "content": "package com.alibaba.json.test.entity;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\npublic class Group {\r\n\r\n    private String        name;\r\n    private String        description;\r\n\r\n    private List<Company> companies = new ArrayList<Company>();\r\n\r\n    public List<Company> getCompanies() {\r\n        return companies;\r\n    }\r\n\r\n    public void setCompanies(List<Company> companies) {\r\n        this.companies = companies;\r\n    }\r\n\r\n    public String getName() {\r\n        return name;\r\n    }\r\n\r\n    public void setName(String name) {\r\n        this.name = name;\r\n    }\r\n\r\n    public String getDescription() {\r\n        return description;\r\n    }\r\n\r\n    public void setDescription(String description) {\r\n        this.description = description;\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/entity/TestEntity.java",
    "content": "package com.alibaba.json.test.entity;\r\n\r\nimport java.math.BigDecimal;\r\nimport java.math.BigInteger;\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.List;\r\n\r\nimport com.alibaba.fastjson.annotation.JSONField;\r\n\r\npublic class TestEntity {\r\n\r\n    private boolean       f1;\r\n    private Boolean       f2;\r\n    private byte          f3;\r\n    private Byte          f4;\r\n    private short         f5;\r\n    private Short         f6;\r\n    private int           f7;\r\n    private Integer       f8;\r\n    private long          f9;\r\n    private Long          f10;\r\n    private BigInteger    f11;\r\n    private BigDecimal    f12;\r\n    private String        f13;\r\n    private Object        f14;\r\n    private float         f15;\r\n    private Float         f16;\r\n    private double        f17;\r\n    private Double        f18;\r\n    private Date          d1;\r\n    private Date          d2;\r\n\r\n    private String        a1;\r\n    private String        a2;\r\n    private String        a3;\r\n\r\n    private List<Boolean> l0 = new ArrayList<Boolean>();\r\n    private List<Byte>    l1 = new ArrayList<Byte>();\r\n    private List<Short>   l2 = new ArrayList<Short>();\r\n    private List<Integer> l3 = new ArrayList<Integer>();\r\n    private List<Long>    l4 = new ArrayList<Long>();\r\n\r\n    @JSONField(name = \"A1\")\r\n    public String getA1() {\r\n        return a1;\r\n    }\r\n\r\n    @JSONField(name = \"A1\")\r\n    public void setA1(String a1) {\r\n        this.a1 = a1;\r\n    }\r\n\r\n    @JSONField(serialize = false)\r\n    public String getA2() {\r\n        return a2;\r\n    }\r\n\r\n    @JSONField(deserialize = false)\r\n    public void setA2(String a2) {\r\n        this.a2 = a2;\r\n    }\r\n\r\n    @JSONField(serialize = true)\r\n    public String getA3() {\r\n        return a3;\r\n    }\r\n\r\n    @JSONField(deserialize = true)\r\n    public void setA3(String a3) {\r\n        this.a3 = a3;\r\n    }\r\n\r\n    public static TestEntity getInstance_0() {\r\n        return instance_0;\r\n    }\r\n\r\n    public boolean isF1() {\r\n        return f1;\r\n    }\r\n\r\n    public void setF1(boolean f1) {\r\n        this.f1 = f1;\r\n    }\r\n\r\n    public Boolean getF2() {\r\n        return f2;\r\n    }\r\n\r\n    public void setF2(Boolean f2) {\r\n        this.f2 = f2;\r\n    }\r\n\r\n    public byte getF3() {\r\n        return f3;\r\n    }\r\n\r\n    public void setF3(byte f3) {\r\n        this.f3 = f3;\r\n    }\r\n\r\n    public Byte getF4() {\r\n        return f4;\r\n    }\r\n\r\n    public void setF4(Byte f4) {\r\n        this.f4 = f4;\r\n    }\r\n\r\n    public short getF5() {\r\n        return f5;\r\n    }\r\n\r\n    public void setF5(short f5) {\r\n        this.f5 = f5;\r\n    }\r\n\r\n    public Short getF6() {\r\n        return f6;\r\n    }\r\n\r\n    public void setF6(Short f6) {\r\n        this.f6 = f6;\r\n    }\r\n\r\n    public int getF7() {\r\n        return f7;\r\n    }\r\n\r\n    public void setF7(int f7) {\r\n        this.f7 = f7;\r\n    }\r\n\r\n    public Integer getF8() {\r\n        return f8;\r\n    }\r\n\r\n    public void setF8(Integer f8) {\r\n        this.f8 = f8;\r\n    }\r\n\r\n    public long getF9() {\r\n        return f9;\r\n    }\r\n\r\n    public void setF9(long f9) {\r\n        this.f9 = f9;\r\n    }\r\n\r\n    public Long getF10() {\r\n        return f10;\r\n    }\r\n\r\n    public void setF10(Long f10) {\r\n        this.f10 = f10;\r\n    }\r\n\r\n    public BigInteger getF11() {\r\n        return f11;\r\n    }\r\n\r\n    public void setF11(BigInteger f11) {\r\n        this.f11 = f11;\r\n    }\r\n\r\n    public BigDecimal getF12() {\r\n        return f12;\r\n    }\r\n\r\n    public void setF12(BigDecimal f12) {\r\n        this.f12 = f12;\r\n    }\r\n\r\n    public String getF13() {\r\n        return f13;\r\n    }\r\n\r\n    public void setF13(String f13) {\r\n        this.f13 = f13;\r\n    }\r\n\r\n    public Object getF14() {\r\n        return f14;\r\n    }\r\n\r\n    public void setF14(Object f14) {\r\n        this.f14 = f14;\r\n    }\r\n\r\n    public List<Boolean> getL0() {\r\n        return l0;\r\n    }\r\n\r\n    public void setL0(List<Boolean> l0) {\r\n        this.l0 = l0;\r\n    }\r\n\r\n    public List<Byte> getL1() {\r\n        return l1;\r\n    }\r\n\r\n    public void setL1(List<Byte> l1) {\r\n        this.l1 = l1;\r\n    }\r\n\r\n    public List<Short> getL2() {\r\n        return l2;\r\n    }\r\n\r\n    public void setL2(List<Short> l2) {\r\n        this.l2 = l2;\r\n    }\r\n\r\n    public List<Integer> getL3() {\r\n        return l3;\r\n    }\r\n\r\n    public void setL3(List<Integer> l3) {\r\n        this.l3 = l3;\r\n    }\r\n\r\n    public List<Long> getL4() {\r\n        return l4;\r\n    }\r\n\r\n    public void setL4(List<Long> l4) {\r\n        this.l4 = l4;\r\n    }\r\n\r\n    public float getF15() {\r\n        return f15;\r\n    }\r\n\r\n    public void setF15(float f15) {\r\n        this.f15 = f15;\r\n    }\r\n\r\n    public Float getF16() {\r\n        return f16;\r\n    }\r\n\r\n    public void setF16(Float f16) {\r\n        this.f16 = f16;\r\n    }\r\n\r\n    public double getF17() {\r\n        return f17;\r\n    }\r\n\r\n    public void setF17(double f17) {\r\n        this.f17 = f17;\r\n    }\r\n\r\n    public Double getF18() {\r\n        return f18;\r\n    }\r\n\r\n    public void setF18(Double f18) {\r\n        this.f18 = f18;\r\n    }\r\n\r\n    public Date getD1() {\r\n        return d1;\r\n    }\r\n\r\n    public void setD1(Date d1) {\r\n        this.d1 = d1;\r\n    }\r\n\r\n    public Date getD2() {\r\n        return d2;\r\n    }\r\n\r\n    public void setD2(Date d2) {\r\n        this.d2 = d2;\r\n    }\r\n\r\n    public static TestEntity instance_0;\r\n\r\n    static {\r\n        instance_0 = new TestEntity();\r\n        instance_0.setF1(true);\r\n        instance_0.setF2(Boolean.TRUE);\r\n        instance_0.setF3((byte) 123);\r\n        instance_0.setF4((byte) 123);\r\n        instance_0.setF5((short) 123);\r\n        instance_0.setF6((short) 123);\r\n        instance_0.setF7((int) 123);\r\n        instance_0.setF8((int) 123);\r\n        instance_0.setF9((long) 123);\r\n        instance_0.setF10((long) 123);\r\n        instance_0.setF11(new BigInteger(\"123\"));\r\n        instance_0.setF12(new BigDecimal(\"123\"));\r\n        instance_0.setF13(\"abc\");\r\n        instance_0.setF14(null);\r\n        instance_0.setF15(12.34F);\r\n        instance_0.setF16(12.34F);\r\n        instance_0.setF17(12.345D);\r\n        instance_0.setF18(12.345D);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/entity/case1/IntObject_100_Entity.java",
    "content": "package com.alibaba.json.test.entity.case1;\r\n\r\npublic class IntObject_100_Entity {\r\n\r\n    private Integer f0;\r\n    private Integer f1;\r\n    private Integer f2;\r\n    private Integer f3;\r\n    private Integer f4;\r\n    private Integer f5;\r\n    private Integer f6;\r\n    private Integer f7;\r\n    private Integer f8;\r\n    private Integer f9;\r\n    private Integer f10;\r\n    private Integer f11;\r\n    private Integer f12;\r\n    private Integer f13;\r\n    private Integer f14;\r\n    private Integer f15;\r\n    private Integer f16;\r\n    private Integer f17;\r\n    private Integer f18;\r\n    private Integer f19;\r\n    private Integer f20;\r\n    private Integer f21;\r\n    private Integer f22;\r\n    private Integer f23;\r\n    private Integer f24;\r\n    private Integer f25;\r\n    private Integer f26;\r\n    private Integer f27;\r\n    private Integer f28;\r\n    private Integer f29;\r\n    private Integer f30;\r\n    private Integer f31;\r\n    private Integer f32;\r\n    private Integer f33;\r\n    private Integer f34;\r\n    private Integer f35;\r\n    private Integer f36;\r\n    private Integer f37;\r\n    private Integer f38;\r\n    private Integer f39;\r\n    private Integer f40;\r\n    private Integer f41;\r\n    private Integer f42;\r\n    private Integer f43;\r\n    private Integer f44;\r\n    private Integer f45;\r\n    private Integer f46;\r\n    private Integer f47;\r\n    private Integer f48;\r\n    private Integer f49;\r\n    private Integer f50;\r\n    private Integer f51;\r\n    private Integer f52;\r\n    private Integer f53;\r\n    private Integer f54;\r\n    private Integer f55;\r\n    private Integer f56;\r\n    private Integer f57;\r\n    private Integer f58;\r\n    private Integer f59;\r\n    private Integer f60;\r\n    private Integer f61;\r\n    private Integer f62;\r\n    private Integer f63;\r\n    private Integer f64;\r\n    private Integer f65;\r\n    private Integer f66;\r\n    private Integer f67;\r\n    private Integer f68;\r\n    private Integer f69;\r\n    private Integer f70;\r\n    private Integer f71;\r\n    private Integer f72;\r\n    private Integer f73;\r\n    private Integer f74;\r\n    private Integer f75;\r\n    private Integer f76;\r\n    private Integer f77;\r\n    private Integer f78;\r\n    private Integer f79;\r\n    private Integer f80;\r\n    private Integer f81;\r\n    private Integer f82;\r\n    private Integer f83;\r\n    private Integer f84;\r\n    private Integer f85;\r\n    private Integer f86;\r\n    private Integer f87;\r\n    private Integer f88;\r\n    private Integer f89;\r\n    private Integer f90;\r\n    private Integer f91;\r\n    private Integer f92;\r\n    private Integer f93;\r\n    private Integer f94;\r\n    private Integer f95;\r\n    private Integer f96;\r\n    private Integer f97;\r\n    private Integer f98;\r\n    private Integer f99;\r\n\r\n    public Integer getF0() {\r\n        return f0;\r\n    }\r\n\r\n    public void setF0(Integer f0) {\r\n        this.f0 = f0;\r\n    }\r\n\r\n    public Integer getF1() {\r\n        return f1;\r\n    }\r\n\r\n    public void setF1(Integer f1) {\r\n        this.f1 = f1;\r\n    }\r\n\r\n    public Integer getF2() {\r\n        return f2;\r\n    }\r\n\r\n    public void setF2(Integer f2) {\r\n        this.f2 = f2;\r\n    }\r\n\r\n    public Integer getF3() {\r\n        return f3;\r\n    }\r\n\r\n    public void setF3(Integer f3) {\r\n        this.f3 = f3;\r\n    }\r\n\r\n    public Integer getF4() {\r\n        return f4;\r\n    }\r\n\r\n    public void setF4(Integer f4) {\r\n        this.f4 = f4;\r\n    }\r\n\r\n    public Integer getF5() {\r\n        return f5;\r\n    }\r\n\r\n    public void setF5(Integer f5) {\r\n        this.f5 = f5;\r\n    }\r\n\r\n    public Integer getF6() {\r\n        return f6;\r\n    }\r\n\r\n    public void setF6(Integer f6) {\r\n        this.f6 = f6;\r\n    }\r\n\r\n    public Integer getF7() {\r\n        return f7;\r\n    }\r\n\r\n    public void setF7(Integer f7) {\r\n        this.f7 = f7;\r\n    }\r\n\r\n    public Integer getF8() {\r\n        return f8;\r\n    }\r\n\r\n    public void setF8(Integer f8) {\r\n        this.f8 = f8;\r\n    }\r\n\r\n    public Integer getF9() {\r\n        return f9;\r\n    }\r\n\r\n    public void setF9(Integer f9) {\r\n        this.f9 = f9;\r\n    }\r\n\r\n    public Integer getF10() {\r\n        return f10;\r\n    }\r\n\r\n    public void setF10(Integer f10) {\r\n        this.f10 = f10;\r\n    }\r\n\r\n    public Integer getF11() {\r\n        return f11;\r\n    }\r\n\r\n    public void setF11(Integer f11) {\r\n        this.f11 = f11;\r\n    }\r\n\r\n    public Integer getF12() {\r\n        return f12;\r\n    }\r\n\r\n    public void setF12(Integer f12) {\r\n        this.f12 = f12;\r\n    }\r\n\r\n    public Integer getF13() {\r\n        return f13;\r\n    }\r\n\r\n    public void setF13(Integer f13) {\r\n        this.f13 = f13;\r\n    }\r\n\r\n    public Integer getF14() {\r\n        return f14;\r\n    }\r\n\r\n    public void setF14(Integer f14) {\r\n        this.f14 = f14;\r\n    }\r\n\r\n    public Integer getF15() {\r\n        return f15;\r\n    }\r\n\r\n    public void setF15(Integer f15) {\r\n        this.f15 = f15;\r\n    }\r\n\r\n    public Integer getF16() {\r\n        return f16;\r\n    }\r\n\r\n    public void setF16(Integer f16) {\r\n        this.f16 = f16;\r\n    }\r\n\r\n    public Integer getF17() {\r\n        return f17;\r\n    }\r\n\r\n    public void setF17(Integer f17) {\r\n        this.f17 = f17;\r\n    }\r\n\r\n    public Integer getF18() {\r\n        return f18;\r\n    }\r\n\r\n    public void setF18(Integer f18) {\r\n        this.f18 = f18;\r\n    }\r\n\r\n    public Integer getF19() {\r\n        return f19;\r\n    }\r\n\r\n    public void setF19(Integer f19) {\r\n        this.f19 = f19;\r\n    }\r\n\r\n    public Integer getF20() {\r\n        return f20;\r\n    }\r\n\r\n    public void setF20(Integer f20) {\r\n        this.f20 = f20;\r\n    }\r\n\r\n    public Integer getF21() {\r\n        return f21;\r\n    }\r\n\r\n    public void setF21(Integer f21) {\r\n        this.f21 = f21;\r\n    }\r\n\r\n    public Integer getF22() {\r\n        return f22;\r\n    }\r\n\r\n    public void setF22(Integer f22) {\r\n        this.f22 = f22;\r\n    }\r\n\r\n    public Integer getF23() {\r\n        return f23;\r\n    }\r\n\r\n    public void setF23(Integer f23) {\r\n        this.f23 = f23;\r\n    }\r\n\r\n    public Integer getF24() {\r\n        return f24;\r\n    }\r\n\r\n    public void setF24(Integer f24) {\r\n        this.f24 = f24;\r\n    }\r\n\r\n    public Integer getF25() {\r\n        return f25;\r\n    }\r\n\r\n    public void setF25(Integer f25) {\r\n        this.f25 = f25;\r\n    }\r\n\r\n    public Integer getF26() {\r\n        return f26;\r\n    }\r\n\r\n    public void setF26(Integer f26) {\r\n        this.f26 = f26;\r\n    }\r\n\r\n    public Integer getF27() {\r\n        return f27;\r\n    }\r\n\r\n    public void setF27(Integer f27) {\r\n        this.f27 = f27;\r\n    }\r\n\r\n    public Integer getF28() {\r\n        return f28;\r\n    }\r\n\r\n    public void setF28(Integer f28) {\r\n        this.f28 = f28;\r\n    }\r\n\r\n    public Integer getF29() {\r\n        return f29;\r\n    }\r\n\r\n    public void setF29(Integer f29) {\r\n        this.f29 = f29;\r\n    }\r\n\r\n    public Integer getF30() {\r\n        return f30;\r\n    }\r\n\r\n    public void setF30(Integer f30) {\r\n        this.f30 = f30;\r\n    }\r\n\r\n    public Integer getF31() {\r\n        return f31;\r\n    }\r\n\r\n    public void setF31(Integer f31) {\r\n        this.f31 = f31;\r\n    }\r\n\r\n    public Integer getF32() {\r\n        return f32;\r\n    }\r\n\r\n    public void setF32(Integer f32) {\r\n        this.f32 = f32;\r\n    }\r\n\r\n    public Integer getF33() {\r\n        return f33;\r\n    }\r\n\r\n    public void setF33(Integer f33) {\r\n        this.f33 = f33;\r\n    }\r\n\r\n    public Integer getF34() {\r\n        return f34;\r\n    }\r\n\r\n    public void setF34(Integer f34) {\r\n        this.f34 = f34;\r\n    }\r\n\r\n    public Integer getF35() {\r\n        return f35;\r\n    }\r\n\r\n    public void setF35(Integer f35) {\r\n        this.f35 = f35;\r\n    }\r\n\r\n    public Integer getF36() {\r\n        return f36;\r\n    }\r\n\r\n    public void setF36(Integer f36) {\r\n        this.f36 = f36;\r\n    }\r\n\r\n    public Integer getF37() {\r\n        return f37;\r\n    }\r\n\r\n    public void setF37(Integer f37) {\r\n        this.f37 = f37;\r\n    }\r\n\r\n    public Integer getF38() {\r\n        return f38;\r\n    }\r\n\r\n    public void setF38(Integer f38) {\r\n        this.f38 = f38;\r\n    }\r\n\r\n    public Integer getF39() {\r\n        return f39;\r\n    }\r\n\r\n    public void setF39(Integer f39) {\r\n        this.f39 = f39;\r\n    }\r\n\r\n    public Integer getF40() {\r\n        return f40;\r\n    }\r\n\r\n    public void setF40(Integer f40) {\r\n        this.f40 = f40;\r\n    }\r\n\r\n    public Integer getF41() {\r\n        return f41;\r\n    }\r\n\r\n    public void setF41(Integer f41) {\r\n        this.f41 = f41;\r\n    }\r\n\r\n    public Integer getF42() {\r\n        return f42;\r\n    }\r\n\r\n    public void setF42(Integer f42) {\r\n        this.f42 = f42;\r\n    }\r\n\r\n    public Integer getF43() {\r\n        return f43;\r\n    }\r\n\r\n    public void setF43(Integer f43) {\r\n        this.f43 = f43;\r\n    }\r\n\r\n    public Integer getF44() {\r\n        return f44;\r\n    }\r\n\r\n    public void setF44(Integer f44) {\r\n        this.f44 = f44;\r\n    }\r\n\r\n    public Integer getF45() {\r\n        return f45;\r\n    }\r\n\r\n    public void setF45(Integer f45) {\r\n        this.f45 = f45;\r\n    }\r\n\r\n    public Integer getF46() {\r\n        return f46;\r\n    }\r\n\r\n    public void setF46(Integer f46) {\r\n        this.f46 = f46;\r\n    }\r\n\r\n    public Integer getF47() {\r\n        return f47;\r\n    }\r\n\r\n    public void setF47(Integer f47) {\r\n        this.f47 = f47;\r\n    }\r\n\r\n    public Integer getF48() {\r\n        return f48;\r\n    }\r\n\r\n    public void setF48(Integer f48) {\r\n        this.f48 = f48;\r\n    }\r\n\r\n    public Integer getF49() {\r\n        return f49;\r\n    }\r\n\r\n    public void setF49(Integer f49) {\r\n        this.f49 = f49;\r\n    }\r\n\r\n    public Integer getF50() {\r\n        return f50;\r\n    }\r\n\r\n    public void setF50(Integer f50) {\r\n        this.f50 = f50;\r\n    }\r\n\r\n    public Integer getF51() {\r\n        return f51;\r\n    }\r\n\r\n    public void setF51(Integer f51) {\r\n        this.f51 = f51;\r\n    }\r\n\r\n    public Integer getF52() {\r\n        return f52;\r\n    }\r\n\r\n    public void setF52(Integer f52) {\r\n        this.f52 = f52;\r\n    }\r\n\r\n    public Integer getF53() {\r\n        return f53;\r\n    }\r\n\r\n    public void setF53(Integer f53) {\r\n        this.f53 = f53;\r\n    }\r\n\r\n    public Integer getF54() {\r\n        return f54;\r\n    }\r\n\r\n    public void setF54(Integer f54) {\r\n        this.f54 = f54;\r\n    }\r\n\r\n    public Integer getF55() {\r\n        return f55;\r\n    }\r\n\r\n    public void setF55(Integer f55) {\r\n        this.f55 = f55;\r\n    }\r\n\r\n    public Integer getF56() {\r\n        return f56;\r\n    }\r\n\r\n    public void setF56(Integer f56) {\r\n        this.f56 = f56;\r\n    }\r\n\r\n    public Integer getF57() {\r\n        return f57;\r\n    }\r\n\r\n    public void setF57(Integer f57) {\r\n        this.f57 = f57;\r\n    }\r\n\r\n    public Integer getF58() {\r\n        return f58;\r\n    }\r\n\r\n    public void setF58(Integer f58) {\r\n        this.f58 = f58;\r\n    }\r\n\r\n    public Integer getF59() {\r\n        return f59;\r\n    }\r\n\r\n    public void setF59(Integer f59) {\r\n        this.f59 = f59;\r\n    }\r\n\r\n    public Integer getF60() {\r\n        return f60;\r\n    }\r\n\r\n    public void setF60(Integer f60) {\r\n        this.f60 = f60;\r\n    }\r\n\r\n    public Integer getF61() {\r\n        return f61;\r\n    }\r\n\r\n    public void setF61(Integer f61) {\r\n        this.f61 = f61;\r\n    }\r\n\r\n    public Integer getF62() {\r\n        return f62;\r\n    }\r\n\r\n    public void setF62(Integer f62) {\r\n        this.f62 = f62;\r\n    }\r\n\r\n    public Integer getF63() {\r\n        return f63;\r\n    }\r\n\r\n    public void setF63(Integer f63) {\r\n        this.f63 = f63;\r\n    }\r\n\r\n    public Integer getF64() {\r\n        return f64;\r\n    }\r\n\r\n    public void setF64(Integer f64) {\r\n        this.f64 = f64;\r\n    }\r\n\r\n    public Integer getF65() {\r\n        return f65;\r\n    }\r\n\r\n    public void setF65(Integer f65) {\r\n        this.f65 = f65;\r\n    }\r\n\r\n    public Integer getF66() {\r\n        return f66;\r\n    }\r\n\r\n    public void setF66(Integer f66) {\r\n        this.f66 = f66;\r\n    }\r\n\r\n    public Integer getF67() {\r\n        return f67;\r\n    }\r\n\r\n    public void setF67(Integer f67) {\r\n        this.f67 = f67;\r\n    }\r\n\r\n    public Integer getF68() {\r\n        return f68;\r\n    }\r\n\r\n    public void setF68(Integer f68) {\r\n        this.f68 = f68;\r\n    }\r\n\r\n    public Integer getF69() {\r\n        return f69;\r\n    }\r\n\r\n    public void setF69(Integer f69) {\r\n        this.f69 = f69;\r\n    }\r\n\r\n    public Integer getF70() {\r\n        return f70;\r\n    }\r\n\r\n    public void setF70(Integer f70) {\r\n        this.f70 = f70;\r\n    }\r\n\r\n    public Integer getF71() {\r\n        return f71;\r\n    }\r\n\r\n    public void setF71(Integer f71) {\r\n        this.f71 = f71;\r\n    }\r\n\r\n    public Integer getF72() {\r\n        return f72;\r\n    }\r\n\r\n    public void setF72(Integer f72) {\r\n        this.f72 = f72;\r\n    }\r\n\r\n    public Integer getF73() {\r\n        return f73;\r\n    }\r\n\r\n    public void setF73(Integer f73) {\r\n        this.f73 = f73;\r\n    }\r\n\r\n    public Integer getF74() {\r\n        return f74;\r\n    }\r\n\r\n    public void setF74(Integer f74) {\r\n        this.f74 = f74;\r\n    }\r\n\r\n    public Integer getF75() {\r\n        return f75;\r\n    }\r\n\r\n    public void setF75(Integer f75) {\r\n        this.f75 = f75;\r\n    }\r\n\r\n    public Integer getF76() {\r\n        return f76;\r\n    }\r\n\r\n    public void setF76(Integer f76) {\r\n        this.f76 = f76;\r\n    }\r\n\r\n    public Integer getF77() {\r\n        return f77;\r\n    }\r\n\r\n    public void setF77(Integer f77) {\r\n        this.f77 = f77;\r\n    }\r\n\r\n    public Integer getF78() {\r\n        return f78;\r\n    }\r\n\r\n    public void setF78(Integer f78) {\r\n        this.f78 = f78;\r\n    }\r\n\r\n    public Integer getF79() {\r\n        return f79;\r\n    }\r\n\r\n    public void setF79(Integer f79) {\r\n        this.f79 = f79;\r\n    }\r\n\r\n    public Integer getF80() {\r\n        return f80;\r\n    }\r\n\r\n    public void setF80(Integer f80) {\r\n        this.f80 = f80;\r\n    }\r\n\r\n    public Integer getF81() {\r\n        return f81;\r\n    }\r\n\r\n    public void setF81(Integer f81) {\r\n        this.f81 = f81;\r\n    }\r\n\r\n    public Integer getF82() {\r\n        return f82;\r\n    }\r\n\r\n    public void setF82(Integer f82) {\r\n        this.f82 = f82;\r\n    }\r\n\r\n    public Integer getF83() {\r\n        return f83;\r\n    }\r\n\r\n    public void setF83(Integer f83) {\r\n        this.f83 = f83;\r\n    }\r\n\r\n    public Integer getF84() {\r\n        return f84;\r\n    }\r\n\r\n    public void setF84(Integer f84) {\r\n        this.f84 = f84;\r\n    }\r\n\r\n    public Integer getF85() {\r\n        return f85;\r\n    }\r\n\r\n    public void setF85(Integer f85) {\r\n        this.f85 = f85;\r\n    }\r\n\r\n    public Integer getF86() {\r\n        return f86;\r\n    }\r\n\r\n    public void setF86(Integer f86) {\r\n        this.f86 = f86;\r\n    }\r\n\r\n    public Integer getF87() {\r\n        return f87;\r\n    }\r\n\r\n    public void setF87(Integer f87) {\r\n        this.f87 = f87;\r\n    }\r\n\r\n    public Integer getF88() {\r\n        return f88;\r\n    }\r\n\r\n    public void setF88(Integer f88) {\r\n        this.f88 = f88;\r\n    }\r\n\r\n    public Integer getF89() {\r\n        return f89;\r\n    }\r\n\r\n    public void setF89(Integer f89) {\r\n        this.f89 = f89;\r\n    }\r\n\r\n    public Integer getF90() {\r\n        return f90;\r\n    }\r\n\r\n    public void setF90(Integer f90) {\r\n        this.f90 = f90;\r\n    }\r\n\r\n    public Integer getF91() {\r\n        return f91;\r\n    }\r\n\r\n    public void setF91(Integer f91) {\r\n        this.f91 = f91;\r\n    }\r\n\r\n    public Integer getF92() {\r\n        return f92;\r\n    }\r\n\r\n    public void setF92(Integer f92) {\r\n        this.f92 = f92;\r\n    }\r\n\r\n    public Integer getF93() {\r\n        return f93;\r\n    }\r\n\r\n    public void setF93(Integer f93) {\r\n        this.f93 = f93;\r\n    }\r\n\r\n    public Integer getF94() {\r\n        return f94;\r\n    }\r\n\r\n    public void setF94(Integer f94) {\r\n        this.f94 = f94;\r\n    }\r\n\r\n    public Integer getF95() {\r\n        return f95;\r\n    }\r\n\r\n    public void setF95(Integer f95) {\r\n        this.f95 = f95;\r\n    }\r\n\r\n    public Integer getF96() {\r\n        return f96;\r\n    }\r\n\r\n    public void setF96(Integer f96) {\r\n        this.f96 = f96;\r\n    }\r\n\r\n    public Integer getF97() {\r\n        return f97;\r\n    }\r\n\r\n    public void setF97(Integer f97) {\r\n        this.f97 = f97;\r\n    }\r\n\r\n    public Integer getF98() {\r\n        return f98;\r\n    }\r\n\r\n    public void setF98(Integer f98) {\r\n        this.f98 = f98;\r\n    }\r\n\r\n    public Integer getF99() {\r\n        return f99;\r\n    }\r\n\r\n    public void setF99(Integer f99) {\r\n        this.f99 = f99;\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/entity/case1/Int_100_Entity.java",
    "content": "package com.alibaba.json.test.entity.case1;\r\n\r\npublic class Int_100_Entity {\r\n\r\n    private int f0;\r\n    private int f1;\r\n    private int f2;\r\n    private int f3;\r\n    private int f4;\r\n    private int f5;\r\n    private int f6;\r\n    private int f7;\r\n    private int f8;\r\n    private int f9;\r\n    private int f10;\r\n    private int f11;\r\n    private int f12;\r\n    private int f13;\r\n    private int f14;\r\n    private int f15;\r\n    private int f16;\r\n    private int f17;\r\n    private int f18;\r\n    private int f19;\r\n    private int f20;\r\n    private int f21;\r\n    private int f22;\r\n    private int f23;\r\n    private int f24;\r\n    private int f25;\r\n    private int f26;\r\n    private int f27;\r\n    private int f28;\r\n    private int f29;\r\n    private int f30;\r\n    private int f31;\r\n    private int f32;\r\n    private int f33;\r\n    private int f34;\r\n    private int f35;\r\n    private int f36;\r\n    private int f37;\r\n    private int f38;\r\n    private int f39;\r\n    private int f40;\r\n    private int f41;\r\n    private int f42;\r\n    private int f43;\r\n    private int f44;\r\n    private int f45;\r\n    private int f46;\r\n    private int f47;\r\n    private int f48;\r\n    private int f49;\r\n    private int f50;\r\n    private int f51;\r\n    private int f52;\r\n    private int f53;\r\n    private int f54;\r\n    private int f55;\r\n    private int f56;\r\n    private int f57;\r\n    private int f58;\r\n    private int f59;\r\n    private int f60;\r\n    private int f61;\r\n    private int f62;\r\n    private int f63;\r\n    private int f64;\r\n    private int f65;\r\n    private int f66;\r\n    private int f67;\r\n    private int f68;\r\n    private int f69;\r\n    private int f70;\r\n    private int f71;\r\n    private int f72;\r\n    private int f73;\r\n    private int f74;\r\n    private int f75;\r\n    private int f76;\r\n    private int f77;\r\n    private int f78;\r\n    private int f79;\r\n    private int f80;\r\n    private int f81;\r\n    private int f82;\r\n    private int f83;\r\n    private int f84;\r\n    private int f85;\r\n    private int f86;\r\n    private int f87;\r\n    private int f88;\r\n    private int f89;\r\n    private int f90;\r\n    private int f91;\r\n    private int f92;\r\n    private int f93;\r\n    private int f94;\r\n    private int f95;\r\n    private int f96;\r\n    private int f97;\r\n    private int f98;\r\n    private int f99;\r\n\r\n    public int getF0() {\r\n        return f0;\r\n    }\r\n\r\n    public void setF0(int f0) {\r\n        this.f0 = f0;\r\n    }\r\n\r\n    public int getF1() {\r\n        return f1;\r\n    }\r\n\r\n    public void setF1(int f1) {\r\n        this.f1 = f1;\r\n    }\r\n\r\n    public int getF2() {\r\n        return f2;\r\n    }\r\n\r\n    public void setF2(int f2) {\r\n        this.f2 = f2;\r\n    }\r\n\r\n    public int getF3() {\r\n        return f3;\r\n    }\r\n\r\n    public void setF3(int f3) {\r\n        this.f3 = f3;\r\n    }\r\n\r\n    public int getF4() {\r\n        return f4;\r\n    }\r\n\r\n    public void setF4(int f4) {\r\n        this.f4 = f4;\r\n    }\r\n\r\n    public int getF5() {\r\n        return f5;\r\n    }\r\n\r\n    public void setF5(int f5) {\r\n        this.f5 = f5;\r\n    }\r\n\r\n    public int getF6() {\r\n        return f6;\r\n    }\r\n\r\n    public void setF6(int f6) {\r\n        this.f6 = f6;\r\n    }\r\n\r\n    public int getF7() {\r\n        return f7;\r\n    }\r\n\r\n    public void setF7(int f7) {\r\n        this.f7 = f7;\r\n    }\r\n\r\n    public int getF8() {\r\n        return f8;\r\n    }\r\n\r\n    public void setF8(int f8) {\r\n        this.f8 = f8;\r\n    }\r\n\r\n    public int getF9() {\r\n        return f9;\r\n    }\r\n\r\n    public void setF9(int f9) {\r\n        this.f9 = f9;\r\n    }\r\n\r\n    public int getF10() {\r\n        return f10;\r\n    }\r\n\r\n    public void setF10(int f10) {\r\n        this.f10 = f10;\r\n    }\r\n\r\n    public int getF11() {\r\n        return f11;\r\n    }\r\n\r\n    public void setF11(int f11) {\r\n        this.f11 = f11;\r\n    }\r\n\r\n    public int getF12() {\r\n        return f12;\r\n    }\r\n\r\n    public void setF12(int f12) {\r\n        this.f12 = f12;\r\n    }\r\n\r\n    public int getF13() {\r\n        return f13;\r\n    }\r\n\r\n    public void setF13(int f13) {\r\n        this.f13 = f13;\r\n    }\r\n\r\n    public int getF14() {\r\n        return f14;\r\n    }\r\n\r\n    public void setF14(int f14) {\r\n        this.f14 = f14;\r\n    }\r\n\r\n    public int getF15() {\r\n        return f15;\r\n    }\r\n\r\n    public void setF15(int f15) {\r\n        this.f15 = f15;\r\n    }\r\n\r\n    public int getF16() {\r\n        return f16;\r\n    }\r\n\r\n    public void setF16(int f16) {\r\n        this.f16 = f16;\r\n    }\r\n\r\n    public int getF17() {\r\n        return f17;\r\n    }\r\n\r\n    public void setF17(int f17) {\r\n        this.f17 = f17;\r\n    }\r\n\r\n    public int getF18() {\r\n        return f18;\r\n    }\r\n\r\n    public void setF18(int f18) {\r\n        this.f18 = f18;\r\n    }\r\n\r\n    public int getF19() {\r\n        return f19;\r\n    }\r\n\r\n    public void setF19(int f19) {\r\n        this.f19 = f19;\r\n    }\r\n\r\n    public int getF20() {\r\n        return f20;\r\n    }\r\n\r\n    public void setF20(int f20) {\r\n        this.f20 = f20;\r\n    }\r\n\r\n    public int getF21() {\r\n        return f21;\r\n    }\r\n\r\n    public void setF21(int f21) {\r\n        this.f21 = f21;\r\n    }\r\n\r\n    public int getF22() {\r\n        return f22;\r\n    }\r\n\r\n    public void setF22(int f22) {\r\n        this.f22 = f22;\r\n    }\r\n\r\n    public int getF23() {\r\n        return f23;\r\n    }\r\n\r\n    public void setF23(int f23) {\r\n        this.f23 = f23;\r\n    }\r\n\r\n    public int getF24() {\r\n        return f24;\r\n    }\r\n\r\n    public void setF24(int f24) {\r\n        this.f24 = f24;\r\n    }\r\n\r\n    public int getF25() {\r\n        return f25;\r\n    }\r\n\r\n    public void setF25(int f25) {\r\n        this.f25 = f25;\r\n    }\r\n\r\n    public int getF26() {\r\n        return f26;\r\n    }\r\n\r\n    public void setF26(int f26) {\r\n        this.f26 = f26;\r\n    }\r\n\r\n    public int getF27() {\r\n        return f27;\r\n    }\r\n\r\n    public void setF27(int f27) {\r\n        this.f27 = f27;\r\n    }\r\n\r\n    public int getF28() {\r\n        return f28;\r\n    }\r\n\r\n    public void setF28(int f28) {\r\n        this.f28 = f28;\r\n    }\r\n\r\n    public int getF29() {\r\n        return f29;\r\n    }\r\n\r\n    public void setF29(int f29) {\r\n        this.f29 = f29;\r\n    }\r\n\r\n    public int getF30() {\r\n        return f30;\r\n    }\r\n\r\n    public void setF30(int f30) {\r\n        this.f30 = f30;\r\n    }\r\n\r\n    public int getF31() {\r\n        return f31;\r\n    }\r\n\r\n    public void setF31(int f31) {\r\n        this.f31 = f31;\r\n    }\r\n\r\n    public int getF32() {\r\n        return f32;\r\n    }\r\n\r\n    public void setF32(int f32) {\r\n        this.f32 = f32;\r\n    }\r\n\r\n    public int getF33() {\r\n        return f33;\r\n    }\r\n\r\n    public void setF33(int f33) {\r\n        this.f33 = f33;\r\n    }\r\n\r\n    public int getF34() {\r\n        return f34;\r\n    }\r\n\r\n    public void setF34(int f34) {\r\n        this.f34 = f34;\r\n    }\r\n\r\n    public int getF35() {\r\n        return f35;\r\n    }\r\n\r\n    public void setF35(int f35) {\r\n        this.f35 = f35;\r\n    }\r\n\r\n    public int getF36() {\r\n        return f36;\r\n    }\r\n\r\n    public void setF36(int f36) {\r\n        this.f36 = f36;\r\n    }\r\n\r\n    public int getF37() {\r\n        return f37;\r\n    }\r\n\r\n    public void setF37(int f37) {\r\n        this.f37 = f37;\r\n    }\r\n\r\n    public int getF38() {\r\n        return f38;\r\n    }\r\n\r\n    public void setF38(int f38) {\r\n        this.f38 = f38;\r\n    }\r\n\r\n    public int getF39() {\r\n        return f39;\r\n    }\r\n\r\n    public void setF39(int f39) {\r\n        this.f39 = f39;\r\n    }\r\n\r\n    public int getF40() {\r\n        return f40;\r\n    }\r\n\r\n    public void setF40(int f40) {\r\n        this.f40 = f40;\r\n    }\r\n\r\n    public int getF41() {\r\n        return f41;\r\n    }\r\n\r\n    public void setF41(int f41) {\r\n        this.f41 = f41;\r\n    }\r\n\r\n    public int getF42() {\r\n        return f42;\r\n    }\r\n\r\n    public void setF42(int f42) {\r\n        this.f42 = f42;\r\n    }\r\n\r\n    public int getF43() {\r\n        return f43;\r\n    }\r\n\r\n    public void setF43(int f43) {\r\n        this.f43 = f43;\r\n    }\r\n\r\n    public int getF44() {\r\n        return f44;\r\n    }\r\n\r\n    public void setF44(int f44) {\r\n        this.f44 = f44;\r\n    }\r\n\r\n    public int getF45() {\r\n        return f45;\r\n    }\r\n\r\n    public void setF45(int f45) {\r\n        this.f45 = f45;\r\n    }\r\n\r\n    public int getF46() {\r\n        return f46;\r\n    }\r\n\r\n    public void setF46(int f46) {\r\n        this.f46 = f46;\r\n    }\r\n\r\n    public int getF47() {\r\n        return f47;\r\n    }\r\n\r\n    public void setF47(int f47) {\r\n        this.f47 = f47;\r\n    }\r\n\r\n    public int getF48() {\r\n        return f48;\r\n    }\r\n\r\n    public void setF48(int f48) {\r\n        this.f48 = f48;\r\n    }\r\n\r\n    public int getF49() {\r\n        return f49;\r\n    }\r\n\r\n    public void setF49(int f49) {\r\n        this.f49 = f49;\r\n    }\r\n\r\n    public int getF50() {\r\n        return f50;\r\n    }\r\n\r\n    public void setF50(int f50) {\r\n        this.f50 = f50;\r\n    }\r\n\r\n    public int getF51() {\r\n        return f51;\r\n    }\r\n\r\n    public void setF51(int f51) {\r\n        this.f51 = f51;\r\n    }\r\n\r\n    public int getF52() {\r\n        return f52;\r\n    }\r\n\r\n    public void setF52(int f52) {\r\n        this.f52 = f52;\r\n    }\r\n\r\n    public int getF53() {\r\n        return f53;\r\n    }\r\n\r\n    public void setF53(int f53) {\r\n        this.f53 = f53;\r\n    }\r\n\r\n    public int getF54() {\r\n        return f54;\r\n    }\r\n\r\n    public void setF54(int f54) {\r\n        this.f54 = f54;\r\n    }\r\n\r\n    public int getF55() {\r\n        return f55;\r\n    }\r\n\r\n    public void setF55(int f55) {\r\n        this.f55 = f55;\r\n    }\r\n\r\n    public int getF56() {\r\n        return f56;\r\n    }\r\n\r\n    public void setF56(int f56) {\r\n        this.f56 = f56;\r\n    }\r\n\r\n    public int getF57() {\r\n        return f57;\r\n    }\r\n\r\n    public void setF57(int f57) {\r\n        this.f57 = f57;\r\n    }\r\n\r\n    public int getF58() {\r\n        return f58;\r\n    }\r\n\r\n    public void setF58(int f58) {\r\n        this.f58 = f58;\r\n    }\r\n\r\n    public int getF59() {\r\n        return f59;\r\n    }\r\n\r\n    public void setF59(int f59) {\r\n        this.f59 = f59;\r\n    }\r\n\r\n    public int getF60() {\r\n        return f60;\r\n    }\r\n\r\n    public void setF60(int f60) {\r\n        this.f60 = f60;\r\n    }\r\n\r\n    public int getF61() {\r\n        return f61;\r\n    }\r\n\r\n    public void setF61(int f61) {\r\n        this.f61 = f61;\r\n    }\r\n\r\n    public int getF62() {\r\n        return f62;\r\n    }\r\n\r\n    public void setF62(int f62) {\r\n        this.f62 = f62;\r\n    }\r\n\r\n    public int getF63() {\r\n        return f63;\r\n    }\r\n\r\n    public void setF63(int f63) {\r\n        this.f63 = f63;\r\n    }\r\n\r\n    public int getF64() {\r\n        return f64;\r\n    }\r\n\r\n    public void setF64(int f64) {\r\n        this.f64 = f64;\r\n    }\r\n\r\n    public int getF65() {\r\n        return f65;\r\n    }\r\n\r\n    public void setF65(int f65) {\r\n        this.f65 = f65;\r\n    }\r\n\r\n    public int getF66() {\r\n        return f66;\r\n    }\r\n\r\n    public void setF66(int f66) {\r\n        this.f66 = f66;\r\n    }\r\n\r\n    public int getF67() {\r\n        return f67;\r\n    }\r\n\r\n    public void setF67(int f67) {\r\n        this.f67 = f67;\r\n    }\r\n\r\n    public int getF68() {\r\n        return f68;\r\n    }\r\n\r\n    public void setF68(int f68) {\r\n        this.f68 = f68;\r\n    }\r\n\r\n    public int getF69() {\r\n        return f69;\r\n    }\r\n\r\n    public void setF69(int f69) {\r\n        this.f69 = f69;\r\n    }\r\n\r\n    public int getF70() {\r\n        return f70;\r\n    }\r\n\r\n    public void setF70(int f70) {\r\n        this.f70 = f70;\r\n    }\r\n\r\n    public int getF71() {\r\n        return f71;\r\n    }\r\n\r\n    public void setF71(int f71) {\r\n        this.f71 = f71;\r\n    }\r\n\r\n    public int getF72() {\r\n        return f72;\r\n    }\r\n\r\n    public void setF72(int f72) {\r\n        this.f72 = f72;\r\n    }\r\n\r\n    public int getF73() {\r\n        return f73;\r\n    }\r\n\r\n    public void setF73(int f73) {\r\n        this.f73 = f73;\r\n    }\r\n\r\n    public int getF74() {\r\n        return f74;\r\n    }\r\n\r\n    public void setF74(int f74) {\r\n        this.f74 = f74;\r\n    }\r\n\r\n    public int getF75() {\r\n        return f75;\r\n    }\r\n\r\n    public void setF75(int f75) {\r\n        this.f75 = f75;\r\n    }\r\n\r\n    public int getF76() {\r\n        return f76;\r\n    }\r\n\r\n    public void setF76(int f76) {\r\n        this.f76 = f76;\r\n    }\r\n\r\n    public int getF77() {\r\n        return f77;\r\n    }\r\n\r\n    public void setF77(int f77) {\r\n        this.f77 = f77;\r\n    }\r\n\r\n    public int getF78() {\r\n        return f78;\r\n    }\r\n\r\n    public void setF78(int f78) {\r\n        this.f78 = f78;\r\n    }\r\n\r\n    public int getF79() {\r\n        return f79;\r\n    }\r\n\r\n    public void setF79(int f79) {\r\n        this.f79 = f79;\r\n    }\r\n\r\n    public int getF80() {\r\n        return f80;\r\n    }\r\n\r\n    public void setF80(int f80) {\r\n        this.f80 = f80;\r\n    }\r\n\r\n    public int getF81() {\r\n        return f81;\r\n    }\r\n\r\n    public void setF81(int f81) {\r\n        this.f81 = f81;\r\n    }\r\n\r\n    public int getF82() {\r\n        return f82;\r\n    }\r\n\r\n    public void setF82(int f82) {\r\n        this.f82 = f82;\r\n    }\r\n\r\n    public int getF83() {\r\n        return f83;\r\n    }\r\n\r\n    public void setF83(int f83) {\r\n        this.f83 = f83;\r\n    }\r\n\r\n    public int getF84() {\r\n        return f84;\r\n    }\r\n\r\n    public void setF84(int f84) {\r\n        this.f84 = f84;\r\n    }\r\n\r\n    public int getF85() {\r\n        return f85;\r\n    }\r\n\r\n    public void setF85(int f85) {\r\n        this.f85 = f85;\r\n    }\r\n\r\n    public int getF86() {\r\n        return f86;\r\n    }\r\n\r\n    public void setF86(int f86) {\r\n        this.f86 = f86;\r\n    }\r\n\r\n    public int getF87() {\r\n        return f87;\r\n    }\r\n\r\n    public void setF87(int f87) {\r\n        this.f87 = f87;\r\n    }\r\n\r\n    public int getF88() {\r\n        return f88;\r\n    }\r\n\r\n    public void setF88(int f88) {\r\n        this.f88 = f88;\r\n    }\r\n\r\n    public int getF89() {\r\n        return f89;\r\n    }\r\n\r\n    public void setF89(int f89) {\r\n        this.f89 = f89;\r\n    }\r\n\r\n    public int getF90() {\r\n        return f90;\r\n    }\r\n\r\n    public void setF90(int f90) {\r\n        this.f90 = f90;\r\n    }\r\n\r\n    public int getF91() {\r\n        return f91;\r\n    }\r\n\r\n    public void setF91(int f91) {\r\n        this.f91 = f91;\r\n    }\r\n\r\n    public int getF92() {\r\n        return f92;\r\n    }\r\n\r\n    public void setF92(int f92) {\r\n        this.f92 = f92;\r\n    }\r\n\r\n    public int getF93() {\r\n        return f93;\r\n    }\r\n\r\n    public void setF93(int f93) {\r\n        this.f93 = f93;\r\n    }\r\n\r\n    public int getF94() {\r\n        return f94;\r\n    }\r\n\r\n    public void setF94(int f94) {\r\n        this.f94 = f94;\r\n    }\r\n\r\n    public int getF95() {\r\n        return f95;\r\n    }\r\n\r\n    public void setF95(int f95) {\r\n        this.f95 = f95;\r\n    }\r\n\r\n    public int getF96() {\r\n        return f96;\r\n    }\r\n\r\n    public void setF96(int f96) {\r\n        this.f96 = f96;\r\n    }\r\n\r\n    public int getF97() {\r\n        return f97;\r\n    }\r\n\r\n    public void setF97(int f97) {\r\n        this.f97 = f97;\r\n    }\r\n\r\n    public int getF98() {\r\n        return f98;\r\n    }\r\n\r\n    public void setF98(int f98) {\r\n        this.f98 = f98;\r\n    }\r\n\r\n    public int getF99() {\r\n        return f99;\r\n    }\r\n\r\n    public void setF99(int f99) {\r\n        this.f99 = f99;\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/entity/case1/LongObject_100_Entity.java",
    "content": "package com.alibaba.json.test.entity.case1;\r\n\r\npublic class LongObject_100_Entity {\r\n\r\n    private Long f0;\r\n    private Long f1;\r\n    private Long f2;\r\n    private Long f3;\r\n    private Long f4;\r\n    private Long f5;\r\n    private Long f6;\r\n    private Long f7;\r\n    private Long f8;\r\n    private Long f9;\r\n    private Long f10;\r\n    private Long f11;\r\n    private Long f12;\r\n    private Long f13;\r\n    private Long f14;\r\n    private Long f15;\r\n    private Long f16;\r\n    private Long f17;\r\n    private Long f18;\r\n    private Long f19;\r\n    private Long f20;\r\n    private Long f21;\r\n    private Long f22;\r\n    private Long f23;\r\n    private Long f24;\r\n    private Long f25;\r\n    private Long f26;\r\n    private Long f27;\r\n    private Long f28;\r\n    private Long f29;\r\n    private Long f30;\r\n    private Long f31;\r\n    private Long f32;\r\n    private Long f33;\r\n    private Long f34;\r\n    private Long f35;\r\n    private Long f36;\r\n    private Long f37;\r\n    private Long f38;\r\n    private Long f39;\r\n    private Long f40;\r\n    private Long f41;\r\n    private Long f42;\r\n    private Long f43;\r\n    private Long f44;\r\n    private Long f45;\r\n    private Long f46;\r\n    private Long f47;\r\n    private Long f48;\r\n    private Long f49;\r\n    private Long f50;\r\n    private Long f51;\r\n    private Long f52;\r\n    private Long f53;\r\n    private Long f54;\r\n    private Long f55;\r\n    private Long f56;\r\n    private Long f57;\r\n    private Long f58;\r\n    private Long f59;\r\n    private Long f60;\r\n    private Long f61;\r\n    private Long f62;\r\n    private Long f63;\r\n    private Long f64;\r\n    private Long f65;\r\n    private Long f66;\r\n    private Long f67;\r\n    private Long f68;\r\n    private Long f69;\r\n    private Long f70;\r\n    private Long f71;\r\n    private Long f72;\r\n    private Long f73;\r\n    private Long f74;\r\n    private Long f75;\r\n    private Long f76;\r\n    private Long f77;\r\n    private Long f78;\r\n    private Long f79;\r\n    private Long f80;\r\n    private Long f81;\r\n    private Long f82;\r\n    private Long f83;\r\n    private Long f84;\r\n    private Long f85;\r\n    private Long f86;\r\n    private Long f87;\r\n    private Long f88;\r\n    private Long f89;\r\n    private Long f90;\r\n    private Long f91;\r\n    private Long f92;\r\n    private Long f93;\r\n    private Long f94;\r\n    private Long f95;\r\n    private Long f96;\r\n    private Long f97;\r\n    private Long f98;\r\n    private Long f99;\r\n\r\n    public Long getF0() {\r\n        return f0;\r\n    }\r\n\r\n    public void setF0(Long f0) {\r\n        this.f0 = f0;\r\n    }\r\n\r\n    public Long getF1() {\r\n        return f1;\r\n    }\r\n\r\n    public void setF1(Long f1) {\r\n        this.f1 = f1;\r\n    }\r\n\r\n    public Long getF2() {\r\n        return f2;\r\n    }\r\n\r\n    public void setF2(Long f2) {\r\n        this.f2 = f2;\r\n    }\r\n\r\n    public Long getF3() {\r\n        return f3;\r\n    }\r\n\r\n    public void setF3(Long f3) {\r\n        this.f3 = f3;\r\n    }\r\n\r\n    public Long getF4() {\r\n        return f4;\r\n    }\r\n\r\n    public void setF4(Long f4) {\r\n        this.f4 = f4;\r\n    }\r\n\r\n    public Long getF5() {\r\n        return f5;\r\n    }\r\n\r\n    public void setF5(Long f5) {\r\n        this.f5 = f5;\r\n    }\r\n\r\n    public Long getF6() {\r\n        return f6;\r\n    }\r\n\r\n    public void setF6(Long f6) {\r\n        this.f6 = f6;\r\n    }\r\n\r\n    public Long getF7() {\r\n        return f7;\r\n    }\r\n\r\n    public void setF7(Long f7) {\r\n        this.f7 = f7;\r\n    }\r\n\r\n    public Long getF8() {\r\n        return f8;\r\n    }\r\n\r\n    public void setF8(Long f8) {\r\n        this.f8 = f8;\r\n    }\r\n\r\n    public Long getF9() {\r\n        return f9;\r\n    }\r\n\r\n    public void setF9(Long f9) {\r\n        this.f9 = f9;\r\n    }\r\n\r\n    public Long getF10() {\r\n        return f10;\r\n    }\r\n\r\n    public void setF10(Long f10) {\r\n        this.f10 = f10;\r\n    }\r\n\r\n    public Long getF11() {\r\n        return f11;\r\n    }\r\n\r\n    public void setF11(Long f11) {\r\n        this.f11 = f11;\r\n    }\r\n\r\n    public Long getF12() {\r\n        return f12;\r\n    }\r\n\r\n    public void setF12(Long f12) {\r\n        this.f12 = f12;\r\n    }\r\n\r\n    public Long getF13() {\r\n        return f13;\r\n    }\r\n\r\n    public void setF13(Long f13) {\r\n        this.f13 = f13;\r\n    }\r\n\r\n    public Long getF14() {\r\n        return f14;\r\n    }\r\n\r\n    public void setF14(Long f14) {\r\n        this.f14 = f14;\r\n    }\r\n\r\n    public Long getF15() {\r\n        return f15;\r\n    }\r\n\r\n    public void setF15(Long f15) {\r\n        this.f15 = f15;\r\n    }\r\n\r\n    public Long getF16() {\r\n        return f16;\r\n    }\r\n\r\n    public void setF16(Long f16) {\r\n        this.f16 = f16;\r\n    }\r\n\r\n    public Long getF17() {\r\n        return f17;\r\n    }\r\n\r\n    public void setF17(Long f17) {\r\n        this.f17 = f17;\r\n    }\r\n\r\n    public Long getF18() {\r\n        return f18;\r\n    }\r\n\r\n    public void setF18(Long f18) {\r\n        this.f18 = f18;\r\n    }\r\n\r\n    public Long getF19() {\r\n        return f19;\r\n    }\r\n\r\n    public void setF19(Long f19) {\r\n        this.f19 = f19;\r\n    }\r\n\r\n    public Long getF20() {\r\n        return f20;\r\n    }\r\n\r\n    public void setF20(Long f20) {\r\n        this.f20 = f20;\r\n    }\r\n\r\n    public Long getF21() {\r\n        return f21;\r\n    }\r\n\r\n    public void setF21(Long f21) {\r\n        this.f21 = f21;\r\n    }\r\n\r\n    public Long getF22() {\r\n        return f22;\r\n    }\r\n\r\n    public void setF22(Long f22) {\r\n        this.f22 = f22;\r\n    }\r\n\r\n    public Long getF23() {\r\n        return f23;\r\n    }\r\n\r\n    public void setF23(Long f23) {\r\n        this.f23 = f23;\r\n    }\r\n\r\n    public Long getF24() {\r\n        return f24;\r\n    }\r\n\r\n    public void setF24(Long f24) {\r\n        this.f24 = f24;\r\n    }\r\n\r\n    public Long getF25() {\r\n        return f25;\r\n    }\r\n\r\n    public void setF25(Long f25) {\r\n        this.f25 = f25;\r\n    }\r\n\r\n    public Long getF26() {\r\n        return f26;\r\n    }\r\n\r\n    public void setF26(Long f26) {\r\n        this.f26 = f26;\r\n    }\r\n\r\n    public Long getF27() {\r\n        return f27;\r\n    }\r\n\r\n    public void setF27(Long f27) {\r\n        this.f27 = f27;\r\n    }\r\n\r\n    public Long getF28() {\r\n        return f28;\r\n    }\r\n\r\n    public void setF28(Long f28) {\r\n        this.f28 = f28;\r\n    }\r\n\r\n    public Long getF29() {\r\n        return f29;\r\n    }\r\n\r\n    public void setF29(Long f29) {\r\n        this.f29 = f29;\r\n    }\r\n\r\n    public Long getF30() {\r\n        return f30;\r\n    }\r\n\r\n    public void setF30(Long f30) {\r\n        this.f30 = f30;\r\n    }\r\n\r\n    public Long getF31() {\r\n        return f31;\r\n    }\r\n\r\n    public void setF31(Long f31) {\r\n        this.f31 = f31;\r\n    }\r\n\r\n    public Long getF32() {\r\n        return f32;\r\n    }\r\n\r\n    public void setF32(Long f32) {\r\n        this.f32 = f32;\r\n    }\r\n\r\n    public Long getF33() {\r\n        return f33;\r\n    }\r\n\r\n    public void setF33(Long f33) {\r\n        this.f33 = f33;\r\n    }\r\n\r\n    public Long getF34() {\r\n        return f34;\r\n    }\r\n\r\n    public void setF34(Long f34) {\r\n        this.f34 = f34;\r\n    }\r\n\r\n    public Long getF35() {\r\n        return f35;\r\n    }\r\n\r\n    public void setF35(Long f35) {\r\n        this.f35 = f35;\r\n    }\r\n\r\n    public Long getF36() {\r\n        return f36;\r\n    }\r\n\r\n    public void setF36(Long f36) {\r\n        this.f36 = f36;\r\n    }\r\n\r\n    public Long getF37() {\r\n        return f37;\r\n    }\r\n\r\n    public void setF37(Long f37) {\r\n        this.f37 = f37;\r\n    }\r\n\r\n    public Long getF38() {\r\n        return f38;\r\n    }\r\n\r\n    public void setF38(Long f38) {\r\n        this.f38 = f38;\r\n    }\r\n\r\n    public Long getF39() {\r\n        return f39;\r\n    }\r\n\r\n    public void setF39(Long f39) {\r\n        this.f39 = f39;\r\n    }\r\n\r\n    public Long getF40() {\r\n        return f40;\r\n    }\r\n\r\n    public void setF40(Long f40) {\r\n        this.f40 = f40;\r\n    }\r\n\r\n    public Long getF41() {\r\n        return f41;\r\n    }\r\n\r\n    public void setF41(Long f41) {\r\n        this.f41 = f41;\r\n    }\r\n\r\n    public Long getF42() {\r\n        return f42;\r\n    }\r\n\r\n    public void setF42(Long f42) {\r\n        this.f42 = f42;\r\n    }\r\n\r\n    public Long getF43() {\r\n        return f43;\r\n    }\r\n\r\n    public void setF43(Long f43) {\r\n        this.f43 = f43;\r\n    }\r\n\r\n    public Long getF44() {\r\n        return f44;\r\n    }\r\n\r\n    public void setF44(Long f44) {\r\n        this.f44 = f44;\r\n    }\r\n\r\n    public Long getF45() {\r\n        return f45;\r\n    }\r\n\r\n    public void setF45(Long f45) {\r\n        this.f45 = f45;\r\n    }\r\n\r\n    public Long getF46() {\r\n        return f46;\r\n    }\r\n\r\n    public void setF46(Long f46) {\r\n        this.f46 = f46;\r\n    }\r\n\r\n    public Long getF47() {\r\n        return f47;\r\n    }\r\n\r\n    public void setF47(Long f47) {\r\n        this.f47 = f47;\r\n    }\r\n\r\n    public Long getF48() {\r\n        return f48;\r\n    }\r\n\r\n    public void setF48(Long f48) {\r\n        this.f48 = f48;\r\n    }\r\n\r\n    public Long getF49() {\r\n        return f49;\r\n    }\r\n\r\n    public void setF49(Long f49) {\r\n        this.f49 = f49;\r\n    }\r\n\r\n    public Long getF50() {\r\n        return f50;\r\n    }\r\n\r\n    public void setF50(Long f50) {\r\n        this.f50 = f50;\r\n    }\r\n\r\n    public Long getF51() {\r\n        return f51;\r\n    }\r\n\r\n    public void setF51(Long f51) {\r\n        this.f51 = f51;\r\n    }\r\n\r\n    public Long getF52() {\r\n        return f52;\r\n    }\r\n\r\n    public void setF52(Long f52) {\r\n        this.f52 = f52;\r\n    }\r\n\r\n    public Long getF53() {\r\n        return f53;\r\n    }\r\n\r\n    public void setF53(Long f53) {\r\n        this.f53 = f53;\r\n    }\r\n\r\n    public Long getF54() {\r\n        return f54;\r\n    }\r\n\r\n    public void setF54(Long f54) {\r\n        this.f54 = f54;\r\n    }\r\n\r\n    public Long getF55() {\r\n        return f55;\r\n    }\r\n\r\n    public void setF55(Long f55) {\r\n        this.f55 = f55;\r\n    }\r\n\r\n    public Long getF56() {\r\n        return f56;\r\n    }\r\n\r\n    public void setF56(Long f56) {\r\n        this.f56 = f56;\r\n    }\r\n\r\n    public Long getF57() {\r\n        return f57;\r\n    }\r\n\r\n    public void setF57(Long f57) {\r\n        this.f57 = f57;\r\n    }\r\n\r\n    public Long getF58() {\r\n        return f58;\r\n    }\r\n\r\n    public void setF58(Long f58) {\r\n        this.f58 = f58;\r\n    }\r\n\r\n    public Long getF59() {\r\n        return f59;\r\n    }\r\n\r\n    public void setF59(Long f59) {\r\n        this.f59 = f59;\r\n    }\r\n\r\n    public Long getF60() {\r\n        return f60;\r\n    }\r\n\r\n    public void setF60(Long f60) {\r\n        this.f60 = f60;\r\n    }\r\n\r\n    public Long getF61() {\r\n        return f61;\r\n    }\r\n\r\n    public void setF61(Long f61) {\r\n        this.f61 = f61;\r\n    }\r\n\r\n    public Long getF62() {\r\n        return f62;\r\n    }\r\n\r\n    public void setF62(Long f62) {\r\n        this.f62 = f62;\r\n    }\r\n\r\n    public Long getF63() {\r\n        return f63;\r\n    }\r\n\r\n    public void setF63(Long f63) {\r\n        this.f63 = f63;\r\n    }\r\n\r\n    public Long getF64() {\r\n        return f64;\r\n    }\r\n\r\n    public void setF64(Long f64) {\r\n        this.f64 = f64;\r\n    }\r\n\r\n    public Long getF65() {\r\n        return f65;\r\n    }\r\n\r\n    public void setF65(Long f65) {\r\n        this.f65 = f65;\r\n    }\r\n\r\n    public Long getF66() {\r\n        return f66;\r\n    }\r\n\r\n    public void setF66(Long f66) {\r\n        this.f66 = f66;\r\n    }\r\n\r\n    public Long getF67() {\r\n        return f67;\r\n    }\r\n\r\n    public void setF67(Long f67) {\r\n        this.f67 = f67;\r\n    }\r\n\r\n    public Long getF68() {\r\n        return f68;\r\n    }\r\n\r\n    public void setF68(Long f68) {\r\n        this.f68 = f68;\r\n    }\r\n\r\n    public Long getF69() {\r\n        return f69;\r\n    }\r\n\r\n    public void setF69(Long f69) {\r\n        this.f69 = f69;\r\n    }\r\n\r\n    public Long getF70() {\r\n        return f70;\r\n    }\r\n\r\n    public void setF70(Long f70) {\r\n        this.f70 = f70;\r\n    }\r\n\r\n    public Long getF71() {\r\n        return f71;\r\n    }\r\n\r\n    public void setF71(Long f71) {\r\n        this.f71 = f71;\r\n    }\r\n\r\n    public Long getF72() {\r\n        return f72;\r\n    }\r\n\r\n    public void setF72(Long f72) {\r\n        this.f72 = f72;\r\n    }\r\n\r\n    public Long getF73() {\r\n        return f73;\r\n    }\r\n\r\n    public void setF73(Long f73) {\r\n        this.f73 = f73;\r\n    }\r\n\r\n    public Long getF74() {\r\n        return f74;\r\n    }\r\n\r\n    public void setF74(Long f74) {\r\n        this.f74 = f74;\r\n    }\r\n\r\n    public Long getF75() {\r\n        return f75;\r\n    }\r\n\r\n    public void setF75(Long f75) {\r\n        this.f75 = f75;\r\n    }\r\n\r\n    public Long getF76() {\r\n        return f76;\r\n    }\r\n\r\n    public void setF76(Long f76) {\r\n        this.f76 = f76;\r\n    }\r\n\r\n    public Long getF77() {\r\n        return f77;\r\n    }\r\n\r\n    public void setF77(Long f77) {\r\n        this.f77 = f77;\r\n    }\r\n\r\n    public Long getF78() {\r\n        return f78;\r\n    }\r\n\r\n    public void setF78(Long f78) {\r\n        this.f78 = f78;\r\n    }\r\n\r\n    public Long getF79() {\r\n        return f79;\r\n    }\r\n\r\n    public void setF79(Long f79) {\r\n        this.f79 = f79;\r\n    }\r\n\r\n    public Long getF80() {\r\n        return f80;\r\n    }\r\n\r\n    public void setF80(Long f80) {\r\n        this.f80 = f80;\r\n    }\r\n\r\n    public Long getF81() {\r\n        return f81;\r\n    }\r\n\r\n    public void setF81(Long f81) {\r\n        this.f81 = f81;\r\n    }\r\n\r\n    public Long getF82() {\r\n        return f82;\r\n    }\r\n\r\n    public void setF82(Long f82) {\r\n        this.f82 = f82;\r\n    }\r\n\r\n    public Long getF83() {\r\n        return f83;\r\n    }\r\n\r\n    public void setF83(Long f83) {\r\n        this.f83 = f83;\r\n    }\r\n\r\n    public Long getF84() {\r\n        return f84;\r\n    }\r\n\r\n    public void setF84(Long f84) {\r\n        this.f84 = f84;\r\n    }\r\n\r\n    public Long getF85() {\r\n        return f85;\r\n    }\r\n\r\n    public void setF85(Long f85) {\r\n        this.f85 = f85;\r\n    }\r\n\r\n    public Long getF86() {\r\n        return f86;\r\n    }\r\n\r\n    public void setF86(Long f86) {\r\n        this.f86 = f86;\r\n    }\r\n\r\n    public Long getF87() {\r\n        return f87;\r\n    }\r\n\r\n    public void setF87(Long f87) {\r\n        this.f87 = f87;\r\n    }\r\n\r\n    public Long getF88() {\r\n        return f88;\r\n    }\r\n\r\n    public void setF88(Long f88) {\r\n        this.f88 = f88;\r\n    }\r\n\r\n    public Long getF89() {\r\n        return f89;\r\n    }\r\n\r\n    public void setF89(Long f89) {\r\n        this.f89 = f89;\r\n    }\r\n\r\n    public Long getF90() {\r\n        return f90;\r\n    }\r\n\r\n    public void setF90(Long f90) {\r\n        this.f90 = f90;\r\n    }\r\n\r\n    public Long getF91() {\r\n        return f91;\r\n    }\r\n\r\n    public void setF91(Long f91) {\r\n        this.f91 = f91;\r\n    }\r\n\r\n    public Long getF92() {\r\n        return f92;\r\n    }\r\n\r\n    public void setF92(Long f92) {\r\n        this.f92 = f92;\r\n    }\r\n\r\n    public Long getF93() {\r\n        return f93;\r\n    }\r\n\r\n    public void setF93(Long f93) {\r\n        this.f93 = f93;\r\n    }\r\n\r\n    public Long getF94() {\r\n        return f94;\r\n    }\r\n\r\n    public void setF94(Long f94) {\r\n        this.f94 = f94;\r\n    }\r\n\r\n    public Long getF95() {\r\n        return f95;\r\n    }\r\n\r\n    public void setF95(Long f95) {\r\n        this.f95 = f95;\r\n    }\r\n\r\n    public Long getF96() {\r\n        return f96;\r\n    }\r\n\r\n    public void setF96(Long f96) {\r\n        this.f96 = f96;\r\n    }\r\n\r\n    public Long getF97() {\r\n        return f97;\r\n    }\r\n\r\n    public void setF97(Long f97) {\r\n        this.f97 = f97;\r\n    }\r\n\r\n    public Long getF98() {\r\n        return f98;\r\n    }\r\n\r\n    public void setF98(Long f98) {\r\n        this.f98 = f98;\r\n    }\r\n\r\n    public Long getF99() {\r\n        return f99;\r\n    }\r\n\r\n    public void setF99(Long f99) {\r\n        this.f99 = f99;\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/entity/case1/Long_100_Entity.java",
    "content": "package com.alibaba.json.test.entity.case1;\r\n\r\npublic class Long_100_Entity {\r\n\r\n    private long f0;\r\n    private long f1;\r\n    private long f2;\r\n    private long f3;\r\n    private long f4;\r\n    private long f5;\r\n    private long f6;\r\n    private long f7;\r\n    private long f8;\r\n    private long f9;\r\n    private long f10;\r\n    private long f11;\r\n    private long f12;\r\n    private long f13;\r\n    private long f14;\r\n    private long f15;\r\n    private long f16;\r\n    private long f17;\r\n    private long f18;\r\n    private long f19;\r\n    private long f20;\r\n    private long f21;\r\n    private long f22;\r\n    private long f23;\r\n    private long f24;\r\n    private long f25;\r\n    private long f26;\r\n    private long f27;\r\n    private long f28;\r\n    private long f29;\r\n    private long f30;\r\n    private long f31;\r\n    private long f32;\r\n    private long f33;\r\n    private long f34;\r\n    private long f35;\r\n    private long f36;\r\n    private long f37;\r\n    private long f38;\r\n    private long f39;\r\n    private long f40;\r\n    private long f41;\r\n    private long f42;\r\n    private long f43;\r\n    private long f44;\r\n    private long f45;\r\n    private long f46;\r\n    private long f47;\r\n    private long f48;\r\n    private long f49;\r\n    private long f50;\r\n    private long f51;\r\n    private long f52;\r\n    private long f53;\r\n    private long f54;\r\n    private long f55;\r\n    private long f56;\r\n    private long f57;\r\n    private long f58;\r\n    private long f59;\r\n    private long f60;\r\n    private long f61;\r\n    private long f62;\r\n    private long f63;\r\n    private long f64;\r\n    private long f65;\r\n    private long f66;\r\n    private long f67;\r\n    private long f68;\r\n    private long f69;\r\n    private long f70;\r\n    private long f71;\r\n    private long f72;\r\n    private long f73;\r\n    private long f74;\r\n    private long f75;\r\n    private long f76;\r\n    private long f77;\r\n    private long f78;\r\n    private long f79;\r\n    private long f80;\r\n    private long f81;\r\n    private long f82;\r\n    private long f83;\r\n    private long f84;\r\n    private long f85;\r\n    private long f86;\r\n    private long f87;\r\n    private long f88;\r\n    private long f89;\r\n    private long f90;\r\n    private long f91;\r\n    private long f92;\r\n    private long f93;\r\n    private long f94;\r\n    private long f95;\r\n    private long f96;\r\n    private long f97;\r\n    private long f98;\r\n    private long f99;\r\n\r\n    public long getF0() {\r\n        return f0;\r\n    }\r\n\r\n    public void setF0(long f0) {\r\n        this.f0 = f0;\r\n    }\r\n\r\n    public long getF1() {\r\n        return f1;\r\n    }\r\n\r\n    public void setF1(long f1) {\r\n        this.f1 = f1;\r\n    }\r\n\r\n    public long getF2() {\r\n        return f2;\r\n    }\r\n\r\n    public void setF2(long f2) {\r\n        this.f2 = f2;\r\n    }\r\n\r\n    public long getF3() {\r\n        return f3;\r\n    }\r\n\r\n    public void setF3(long f3) {\r\n        this.f3 = f3;\r\n    }\r\n\r\n    public long getF4() {\r\n        return f4;\r\n    }\r\n\r\n    public void setF4(long f4) {\r\n        this.f4 = f4;\r\n    }\r\n\r\n    public long getF5() {\r\n        return f5;\r\n    }\r\n\r\n    public void setF5(long f5) {\r\n        this.f5 = f5;\r\n    }\r\n\r\n    public long getF6() {\r\n        return f6;\r\n    }\r\n\r\n    public void setF6(long f6) {\r\n        this.f6 = f6;\r\n    }\r\n\r\n    public long getF7() {\r\n        return f7;\r\n    }\r\n\r\n    public void setF7(long f7) {\r\n        this.f7 = f7;\r\n    }\r\n\r\n    public long getF8() {\r\n        return f8;\r\n    }\r\n\r\n    public void setF8(long f8) {\r\n        this.f8 = f8;\r\n    }\r\n\r\n    public long getF9() {\r\n        return f9;\r\n    }\r\n\r\n    public void setF9(long f9) {\r\n        this.f9 = f9;\r\n    }\r\n\r\n    public long getF10() {\r\n        return f10;\r\n    }\r\n\r\n    public void setF10(long f10) {\r\n        this.f10 = f10;\r\n    }\r\n\r\n    public long getF11() {\r\n        return f11;\r\n    }\r\n\r\n    public void setF11(long f11) {\r\n        this.f11 = f11;\r\n    }\r\n\r\n    public long getF12() {\r\n        return f12;\r\n    }\r\n\r\n    public void setF12(long f12) {\r\n        this.f12 = f12;\r\n    }\r\n\r\n    public long getF13() {\r\n        return f13;\r\n    }\r\n\r\n    public void setF13(long f13) {\r\n        this.f13 = f13;\r\n    }\r\n\r\n    public long getF14() {\r\n        return f14;\r\n    }\r\n\r\n    public void setF14(long f14) {\r\n        this.f14 = f14;\r\n    }\r\n\r\n    public long getF15() {\r\n        return f15;\r\n    }\r\n\r\n    public void setF15(long f15) {\r\n        this.f15 = f15;\r\n    }\r\n\r\n    public long getF16() {\r\n        return f16;\r\n    }\r\n\r\n    public void setF16(long f16) {\r\n        this.f16 = f16;\r\n    }\r\n\r\n    public long getF17() {\r\n        return f17;\r\n    }\r\n\r\n    public void setF17(long f17) {\r\n        this.f17 = f17;\r\n    }\r\n\r\n    public long getF18() {\r\n        return f18;\r\n    }\r\n\r\n    public void setF18(long f18) {\r\n        this.f18 = f18;\r\n    }\r\n\r\n    public long getF19() {\r\n        return f19;\r\n    }\r\n\r\n    public void setF19(long f19) {\r\n        this.f19 = f19;\r\n    }\r\n\r\n    public long getF20() {\r\n        return f20;\r\n    }\r\n\r\n    public void setF20(long f20) {\r\n        this.f20 = f20;\r\n    }\r\n\r\n    public long getF21() {\r\n        return f21;\r\n    }\r\n\r\n    public void setF21(long f21) {\r\n        this.f21 = f21;\r\n    }\r\n\r\n    public long getF22() {\r\n        return f22;\r\n    }\r\n\r\n    public void setF22(long f22) {\r\n        this.f22 = f22;\r\n    }\r\n\r\n    public long getF23() {\r\n        return f23;\r\n    }\r\n\r\n    public void setF23(long f23) {\r\n        this.f23 = f23;\r\n    }\r\n\r\n    public long getF24() {\r\n        return f24;\r\n    }\r\n\r\n    public void setF24(long f24) {\r\n        this.f24 = f24;\r\n    }\r\n\r\n    public long getF25() {\r\n        return f25;\r\n    }\r\n\r\n    public void setF25(long f25) {\r\n        this.f25 = f25;\r\n    }\r\n\r\n    public long getF26() {\r\n        return f26;\r\n    }\r\n\r\n    public void setF26(long f26) {\r\n        this.f26 = f26;\r\n    }\r\n\r\n    public long getF27() {\r\n        return f27;\r\n    }\r\n\r\n    public void setF27(long f27) {\r\n        this.f27 = f27;\r\n    }\r\n\r\n    public long getF28() {\r\n        return f28;\r\n    }\r\n\r\n    public void setF28(long f28) {\r\n        this.f28 = f28;\r\n    }\r\n\r\n    public long getF29() {\r\n        return f29;\r\n    }\r\n\r\n    public void setF29(long f29) {\r\n        this.f29 = f29;\r\n    }\r\n\r\n    public long getF30() {\r\n        return f30;\r\n    }\r\n\r\n    public void setF30(long f30) {\r\n        this.f30 = f30;\r\n    }\r\n\r\n    public long getF31() {\r\n        return f31;\r\n    }\r\n\r\n    public void setF31(long f31) {\r\n        this.f31 = f31;\r\n    }\r\n\r\n    public long getF32() {\r\n        return f32;\r\n    }\r\n\r\n    public void setF32(long f32) {\r\n        this.f32 = f32;\r\n    }\r\n\r\n    public long getF33() {\r\n        return f33;\r\n    }\r\n\r\n    public void setF33(long f33) {\r\n        this.f33 = f33;\r\n    }\r\n\r\n    public long getF34() {\r\n        return f34;\r\n    }\r\n\r\n    public void setF34(long f34) {\r\n        this.f34 = f34;\r\n    }\r\n\r\n    public long getF35() {\r\n        return f35;\r\n    }\r\n\r\n    public void setF35(long f35) {\r\n        this.f35 = f35;\r\n    }\r\n\r\n    public long getF36() {\r\n        return f36;\r\n    }\r\n\r\n    public void setF36(long f36) {\r\n        this.f36 = f36;\r\n    }\r\n\r\n    public long getF37() {\r\n        return f37;\r\n    }\r\n\r\n    public void setF37(long f37) {\r\n        this.f37 = f37;\r\n    }\r\n\r\n    public long getF38() {\r\n        return f38;\r\n    }\r\n\r\n    public void setF38(long f38) {\r\n        this.f38 = f38;\r\n    }\r\n\r\n    public long getF39() {\r\n        return f39;\r\n    }\r\n\r\n    public void setF39(long f39) {\r\n        this.f39 = f39;\r\n    }\r\n\r\n    public long getF40() {\r\n        return f40;\r\n    }\r\n\r\n    public void setF40(long f40) {\r\n        this.f40 = f40;\r\n    }\r\n\r\n    public long getF41() {\r\n        return f41;\r\n    }\r\n\r\n    public void setF41(long f41) {\r\n        this.f41 = f41;\r\n    }\r\n\r\n    public long getF42() {\r\n        return f42;\r\n    }\r\n\r\n    public void setF42(long f42) {\r\n        this.f42 = f42;\r\n    }\r\n\r\n    public long getF43() {\r\n        return f43;\r\n    }\r\n\r\n    public void setF43(long f43) {\r\n        this.f43 = f43;\r\n    }\r\n\r\n    public long getF44() {\r\n        return f44;\r\n    }\r\n\r\n    public void setF44(long f44) {\r\n        this.f44 = f44;\r\n    }\r\n\r\n    public long getF45() {\r\n        return f45;\r\n    }\r\n\r\n    public void setF45(long f45) {\r\n        this.f45 = f45;\r\n    }\r\n\r\n    public long getF46() {\r\n        return f46;\r\n    }\r\n\r\n    public void setF46(long f46) {\r\n        this.f46 = f46;\r\n    }\r\n\r\n    public long getF47() {\r\n        return f47;\r\n    }\r\n\r\n    public void setF47(long f47) {\r\n        this.f47 = f47;\r\n    }\r\n\r\n    public long getF48() {\r\n        return f48;\r\n    }\r\n\r\n    public void setF48(long f48) {\r\n        this.f48 = f48;\r\n    }\r\n\r\n    public long getF49() {\r\n        return f49;\r\n    }\r\n\r\n    public void setF49(long f49) {\r\n        this.f49 = f49;\r\n    }\r\n\r\n    public long getF50() {\r\n        return f50;\r\n    }\r\n\r\n    public void setF50(long f50) {\r\n        this.f50 = f50;\r\n    }\r\n\r\n    public long getF51() {\r\n        return f51;\r\n    }\r\n\r\n    public void setF51(long f51) {\r\n        this.f51 = f51;\r\n    }\r\n\r\n    public long getF52() {\r\n        return f52;\r\n    }\r\n\r\n    public void setF52(long f52) {\r\n        this.f52 = f52;\r\n    }\r\n\r\n    public long getF53() {\r\n        return f53;\r\n    }\r\n\r\n    public void setF53(long f53) {\r\n        this.f53 = f53;\r\n    }\r\n\r\n    public long getF54() {\r\n        return f54;\r\n    }\r\n\r\n    public void setF54(long f54) {\r\n        this.f54 = f54;\r\n    }\r\n\r\n    public long getF55() {\r\n        return f55;\r\n    }\r\n\r\n    public void setF55(long f55) {\r\n        this.f55 = f55;\r\n    }\r\n\r\n    public long getF56() {\r\n        return f56;\r\n    }\r\n\r\n    public void setF56(long f56) {\r\n        this.f56 = f56;\r\n    }\r\n\r\n    public long getF57() {\r\n        return f57;\r\n    }\r\n\r\n    public void setF57(long f57) {\r\n        this.f57 = f57;\r\n    }\r\n\r\n    public long getF58() {\r\n        return f58;\r\n    }\r\n\r\n    public void setF58(long f58) {\r\n        this.f58 = f58;\r\n    }\r\n\r\n    public long getF59() {\r\n        return f59;\r\n    }\r\n\r\n    public void setF59(long f59) {\r\n        this.f59 = f59;\r\n    }\r\n\r\n    public long getF60() {\r\n        return f60;\r\n    }\r\n\r\n    public void setF60(long f60) {\r\n        this.f60 = f60;\r\n    }\r\n\r\n    public long getF61() {\r\n        return f61;\r\n    }\r\n\r\n    public void setF61(long f61) {\r\n        this.f61 = f61;\r\n    }\r\n\r\n    public long getF62() {\r\n        return f62;\r\n    }\r\n\r\n    public void setF62(long f62) {\r\n        this.f62 = f62;\r\n    }\r\n\r\n    public long getF63() {\r\n        return f63;\r\n    }\r\n\r\n    public void setF63(long f63) {\r\n        this.f63 = f63;\r\n    }\r\n\r\n    public long getF64() {\r\n        return f64;\r\n    }\r\n\r\n    public void setF64(long f64) {\r\n        this.f64 = f64;\r\n    }\r\n\r\n    public long getF65() {\r\n        return f65;\r\n    }\r\n\r\n    public void setF65(long f65) {\r\n        this.f65 = f65;\r\n    }\r\n\r\n    public long getF66() {\r\n        return f66;\r\n    }\r\n\r\n    public void setF66(long f66) {\r\n        this.f66 = f66;\r\n    }\r\n\r\n    public long getF67() {\r\n        return f67;\r\n    }\r\n\r\n    public void setF67(long f67) {\r\n        this.f67 = f67;\r\n    }\r\n\r\n    public long getF68() {\r\n        return f68;\r\n    }\r\n\r\n    public void setF68(long f68) {\r\n        this.f68 = f68;\r\n    }\r\n\r\n    public long getF69() {\r\n        return f69;\r\n    }\r\n\r\n    public void setF69(long f69) {\r\n        this.f69 = f69;\r\n    }\r\n\r\n    public long getF70() {\r\n        return f70;\r\n    }\r\n\r\n    public void setF70(long f70) {\r\n        this.f70 = f70;\r\n    }\r\n\r\n    public long getF71() {\r\n        return f71;\r\n    }\r\n\r\n    public void setF71(long f71) {\r\n        this.f71 = f71;\r\n    }\r\n\r\n    public long getF72() {\r\n        return f72;\r\n    }\r\n\r\n    public void setF72(long f72) {\r\n        this.f72 = f72;\r\n    }\r\n\r\n    public long getF73() {\r\n        return f73;\r\n    }\r\n\r\n    public void setF73(long f73) {\r\n        this.f73 = f73;\r\n    }\r\n\r\n    public long getF74() {\r\n        return f74;\r\n    }\r\n\r\n    public void setF74(long f74) {\r\n        this.f74 = f74;\r\n    }\r\n\r\n    public long getF75() {\r\n        return f75;\r\n    }\r\n\r\n    public void setF75(long f75) {\r\n        this.f75 = f75;\r\n    }\r\n\r\n    public long getF76() {\r\n        return f76;\r\n    }\r\n\r\n    public void setF76(long f76) {\r\n        this.f76 = f76;\r\n    }\r\n\r\n    public long getF77() {\r\n        return f77;\r\n    }\r\n\r\n    public void setF77(long f77) {\r\n        this.f77 = f77;\r\n    }\r\n\r\n    public long getF78() {\r\n        return f78;\r\n    }\r\n\r\n    public void setF78(long f78) {\r\n        this.f78 = f78;\r\n    }\r\n\r\n    public long getF79() {\r\n        return f79;\r\n    }\r\n\r\n    public void setF79(long f79) {\r\n        this.f79 = f79;\r\n    }\r\n\r\n    public long getF80() {\r\n        return f80;\r\n    }\r\n\r\n    public void setF80(long f80) {\r\n        this.f80 = f80;\r\n    }\r\n\r\n    public long getF81() {\r\n        return f81;\r\n    }\r\n\r\n    public void setF81(long f81) {\r\n        this.f81 = f81;\r\n    }\r\n\r\n    public long getF82() {\r\n        return f82;\r\n    }\r\n\r\n    public void setF82(long f82) {\r\n        this.f82 = f82;\r\n    }\r\n\r\n    public long getF83() {\r\n        return f83;\r\n    }\r\n\r\n    public void setF83(long f83) {\r\n        this.f83 = f83;\r\n    }\r\n\r\n    public long getF84() {\r\n        return f84;\r\n    }\r\n\r\n    public void setF84(long f84) {\r\n        this.f84 = f84;\r\n    }\r\n\r\n    public long getF85() {\r\n        return f85;\r\n    }\r\n\r\n    public void setF85(long f85) {\r\n        this.f85 = f85;\r\n    }\r\n\r\n    public long getF86() {\r\n        return f86;\r\n    }\r\n\r\n    public void setF86(long f86) {\r\n        this.f86 = f86;\r\n    }\r\n\r\n    public long getF87() {\r\n        return f87;\r\n    }\r\n\r\n    public void setF87(long f87) {\r\n        this.f87 = f87;\r\n    }\r\n\r\n    public long getF88() {\r\n        return f88;\r\n    }\r\n\r\n    public void setF88(long f88) {\r\n        this.f88 = f88;\r\n    }\r\n\r\n    public long getF89() {\r\n        return f89;\r\n    }\r\n\r\n    public void setF89(long f89) {\r\n        this.f89 = f89;\r\n    }\r\n\r\n    public long getF90() {\r\n        return f90;\r\n    }\r\n\r\n    public void setF90(long f90) {\r\n        this.f90 = f90;\r\n    }\r\n\r\n    public long getF91() {\r\n        return f91;\r\n    }\r\n\r\n    public void setF91(long f91) {\r\n        this.f91 = f91;\r\n    }\r\n\r\n    public long getF92() {\r\n        return f92;\r\n    }\r\n\r\n    public void setF92(long f92) {\r\n        this.f92 = f92;\r\n    }\r\n\r\n    public long getF93() {\r\n        return f93;\r\n    }\r\n\r\n    public void setF93(long f93) {\r\n        this.f93 = f93;\r\n    }\r\n\r\n    public long getF94() {\r\n        return f94;\r\n    }\r\n\r\n    public void setF94(long f94) {\r\n        this.f94 = f94;\r\n    }\r\n\r\n    public long getF95() {\r\n        return f95;\r\n    }\r\n\r\n    public void setF95(long f95) {\r\n        this.f95 = f95;\r\n    }\r\n\r\n    public long getF96() {\r\n        return f96;\r\n    }\r\n\r\n    public void setF96(long f96) {\r\n        this.f96 = f96;\r\n    }\r\n\r\n    public long getF97() {\r\n        return f97;\r\n    }\r\n\r\n    public void setF97(long f97) {\r\n        this.f97 = f97;\r\n    }\r\n\r\n    public long getF98() {\r\n        return f98;\r\n    }\r\n\r\n    public void setF98(long f98) {\r\n        this.f98 = f98;\r\n    }\r\n\r\n    public long getF99() {\r\n        return f99;\r\n    }\r\n\r\n    public void setF99(long f99) {\r\n        this.f99 = f99;\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/entity/case1/String_100_Entity.java",
    "content": "package com.alibaba.json.test.entity.case1;\r\n\r\npublic class String_100_Entity {\r\n\r\n    private String f0;\r\n    private String f1;\r\n    private String f2;\r\n    private String f3;\r\n    private String f4;\r\n    private String f5;\r\n    private String f6;\r\n    private String f7;\r\n    private String f8;\r\n    private String f9;\r\n    private String f10;\r\n    private String f11;\r\n    private String f12;\r\n    private String f13;\r\n    private String f14;\r\n    private String f15;\r\n    private String f16;\r\n    private String f17;\r\n    private String f18;\r\n    private String f19;\r\n    private String f20;\r\n    private String f21;\r\n    private String f22;\r\n    private String f23;\r\n    private String f24;\r\n    private String f25;\r\n    private String f26;\r\n    private String f27;\r\n    private String f28;\r\n    private String f29;\r\n    private String f30;\r\n    private String f31;\r\n    private String f32;\r\n    private String f33;\r\n    private String f34;\r\n    private String f35;\r\n    private String f36;\r\n    private String f37;\r\n    private String f38;\r\n    private String f39;\r\n    private String f40;\r\n    private String f41;\r\n    private String f42;\r\n    private String f43;\r\n    private String f44;\r\n    private String f45;\r\n    private String f46;\r\n    private String f47;\r\n    private String f48;\r\n    private String f49;\r\n    private String f50;\r\n    private String f51;\r\n    private String f52;\r\n    private String f53;\r\n    private String f54;\r\n    private String f55;\r\n    private String f56;\r\n    private String f57;\r\n    private String f58;\r\n    private String f59;\r\n    private String f60;\r\n    private String f61;\r\n    private String f62;\r\n    private String f63;\r\n    private String f64;\r\n    private String f65;\r\n    private String f66;\r\n    private String f67;\r\n    private String f68;\r\n    private String f69;\r\n    private String f70;\r\n    private String f71;\r\n    private String f72;\r\n    private String f73;\r\n    private String f74;\r\n    private String f75;\r\n    private String f76;\r\n    private String f77;\r\n    private String f78;\r\n    private String f79;\r\n    private String f80;\r\n    private String f81;\r\n    private String f82;\r\n    private String f83;\r\n    private String f84;\r\n    private String f85;\r\n    private String f86;\r\n    private String f87;\r\n    private String f88;\r\n    private String f89;\r\n    private String f90;\r\n    private String f91;\r\n    private String f92;\r\n    private String f93;\r\n    private String f94;\r\n    private String f95;\r\n    private String f96;\r\n    private String f97;\r\n    private String f98;\r\n    private String f99;\r\n\r\n    public String getF0() {\r\n        return f0;\r\n    }\r\n\r\n    public void setF0(String f0) {\r\n        this.f0 = f0;\r\n    }\r\n\r\n    public String getF1() {\r\n        return f1;\r\n    }\r\n\r\n    public void setF1(String f1) {\r\n        this.f1 = f1;\r\n    }\r\n\r\n    public String getF2() {\r\n        return f2;\r\n    }\r\n\r\n    public void setF2(String f2) {\r\n        this.f2 = f2;\r\n    }\r\n\r\n    public String getF3() {\r\n        return f3;\r\n    }\r\n\r\n    public void setF3(String f3) {\r\n        this.f3 = f3;\r\n    }\r\n\r\n    public String getF4() {\r\n        return f4;\r\n    }\r\n\r\n    public void setF4(String f4) {\r\n        this.f4 = f4;\r\n    }\r\n\r\n    public String getF5() {\r\n        return f5;\r\n    }\r\n\r\n    public void setF5(String f5) {\r\n        this.f5 = f5;\r\n    }\r\n\r\n    public String getF6() {\r\n        return f6;\r\n    }\r\n\r\n    public void setF6(String f6) {\r\n        this.f6 = f6;\r\n    }\r\n\r\n    public String getF7() {\r\n        return f7;\r\n    }\r\n\r\n    public void setF7(String f7) {\r\n        this.f7 = f7;\r\n    }\r\n\r\n    public String getF8() {\r\n        return f8;\r\n    }\r\n\r\n    public void setF8(String f8) {\r\n        this.f8 = f8;\r\n    }\r\n\r\n    public String getF9() {\r\n        return f9;\r\n    }\r\n\r\n    public void setF9(String f9) {\r\n        this.f9 = f9;\r\n    }\r\n\r\n    public String getF10() {\r\n        return f10;\r\n    }\r\n\r\n    public void setF10(String f10) {\r\n        this.f10 = f10;\r\n    }\r\n\r\n    public String getF11() {\r\n        return f11;\r\n    }\r\n\r\n    public void setF11(String f11) {\r\n        this.f11 = f11;\r\n    }\r\n\r\n    public String getF12() {\r\n        return f12;\r\n    }\r\n\r\n    public void setF12(String f12) {\r\n        this.f12 = f12;\r\n    }\r\n\r\n    public String getF13() {\r\n        return f13;\r\n    }\r\n\r\n    public void setF13(String f13) {\r\n        this.f13 = f13;\r\n    }\r\n\r\n    public String getF14() {\r\n        return f14;\r\n    }\r\n\r\n    public void setF14(String f14) {\r\n        this.f14 = f14;\r\n    }\r\n\r\n    public String getF15() {\r\n        return f15;\r\n    }\r\n\r\n    public void setF15(String f15) {\r\n        this.f15 = f15;\r\n    }\r\n\r\n    public String getF16() {\r\n        return f16;\r\n    }\r\n\r\n    public void setF16(String f16) {\r\n        this.f16 = f16;\r\n    }\r\n\r\n    public String getF17() {\r\n        return f17;\r\n    }\r\n\r\n    public void setF17(String f17) {\r\n        this.f17 = f17;\r\n    }\r\n\r\n    public String getF18() {\r\n        return f18;\r\n    }\r\n\r\n    public void setF18(String f18) {\r\n        this.f18 = f18;\r\n    }\r\n\r\n    public String getF19() {\r\n        return f19;\r\n    }\r\n\r\n    public void setF19(String f19) {\r\n        this.f19 = f19;\r\n    }\r\n\r\n    public String getF20() {\r\n        return f20;\r\n    }\r\n\r\n    public void setF20(String f20) {\r\n        this.f20 = f20;\r\n    }\r\n\r\n    public String getF21() {\r\n        return f21;\r\n    }\r\n\r\n    public void setF21(String f21) {\r\n        this.f21 = f21;\r\n    }\r\n\r\n    public String getF22() {\r\n        return f22;\r\n    }\r\n\r\n    public void setF22(String f22) {\r\n        this.f22 = f22;\r\n    }\r\n\r\n    public String getF23() {\r\n        return f23;\r\n    }\r\n\r\n    public void setF23(String f23) {\r\n        this.f23 = f23;\r\n    }\r\n\r\n    public String getF24() {\r\n        return f24;\r\n    }\r\n\r\n    public void setF24(String f24) {\r\n        this.f24 = f24;\r\n    }\r\n\r\n    public String getF25() {\r\n        return f25;\r\n    }\r\n\r\n    public void setF25(String f25) {\r\n        this.f25 = f25;\r\n    }\r\n\r\n    public String getF26() {\r\n        return f26;\r\n    }\r\n\r\n    public void setF26(String f26) {\r\n        this.f26 = f26;\r\n    }\r\n\r\n    public String getF27() {\r\n        return f27;\r\n    }\r\n\r\n    public void setF27(String f27) {\r\n        this.f27 = f27;\r\n    }\r\n\r\n    public String getF28() {\r\n        return f28;\r\n    }\r\n\r\n    public void setF28(String f28) {\r\n        this.f28 = f28;\r\n    }\r\n\r\n    public String getF29() {\r\n        return f29;\r\n    }\r\n\r\n    public void setF29(String f29) {\r\n        this.f29 = f29;\r\n    }\r\n\r\n    public String getF30() {\r\n        return f30;\r\n    }\r\n\r\n    public void setF30(String f30) {\r\n        this.f30 = f30;\r\n    }\r\n\r\n    public String getF31() {\r\n        return f31;\r\n    }\r\n\r\n    public void setF31(String f31) {\r\n        this.f31 = f31;\r\n    }\r\n\r\n    public String getF32() {\r\n        return f32;\r\n    }\r\n\r\n    public void setF32(String f32) {\r\n        this.f32 = f32;\r\n    }\r\n\r\n    public String getF33() {\r\n        return f33;\r\n    }\r\n\r\n    public void setF33(String f33) {\r\n        this.f33 = f33;\r\n    }\r\n\r\n    public String getF34() {\r\n        return f34;\r\n    }\r\n\r\n    public void setF34(String f34) {\r\n        this.f34 = f34;\r\n    }\r\n\r\n    public String getF35() {\r\n        return f35;\r\n    }\r\n\r\n    public void setF35(String f35) {\r\n        this.f35 = f35;\r\n    }\r\n\r\n    public String getF36() {\r\n        return f36;\r\n    }\r\n\r\n    public void setF36(String f36) {\r\n        this.f36 = f36;\r\n    }\r\n\r\n    public String getF37() {\r\n        return f37;\r\n    }\r\n\r\n    public void setF37(String f37) {\r\n        this.f37 = f37;\r\n    }\r\n\r\n    public String getF38() {\r\n        return f38;\r\n    }\r\n\r\n    public void setF38(String f38) {\r\n        this.f38 = f38;\r\n    }\r\n\r\n    public String getF39() {\r\n        return f39;\r\n    }\r\n\r\n    public void setF39(String f39) {\r\n        this.f39 = f39;\r\n    }\r\n\r\n    public String getF40() {\r\n        return f40;\r\n    }\r\n\r\n    public void setF40(String f40) {\r\n        this.f40 = f40;\r\n    }\r\n\r\n    public String getF41() {\r\n        return f41;\r\n    }\r\n\r\n    public void setF41(String f41) {\r\n        this.f41 = f41;\r\n    }\r\n\r\n    public String getF42() {\r\n        return f42;\r\n    }\r\n\r\n    public void setF42(String f42) {\r\n        this.f42 = f42;\r\n    }\r\n\r\n    public String getF43() {\r\n        return f43;\r\n    }\r\n\r\n    public void setF43(String f43) {\r\n        this.f43 = f43;\r\n    }\r\n\r\n    public String getF44() {\r\n        return f44;\r\n    }\r\n\r\n    public void setF44(String f44) {\r\n        this.f44 = f44;\r\n    }\r\n\r\n    public String getF45() {\r\n        return f45;\r\n    }\r\n\r\n    public void setF45(String f45) {\r\n        this.f45 = f45;\r\n    }\r\n\r\n    public String getF46() {\r\n        return f46;\r\n    }\r\n\r\n    public void setF46(String f46) {\r\n        this.f46 = f46;\r\n    }\r\n\r\n    public String getF47() {\r\n        return f47;\r\n    }\r\n\r\n    public void setF47(String f47) {\r\n        this.f47 = f47;\r\n    }\r\n\r\n    public String getF48() {\r\n        return f48;\r\n    }\r\n\r\n    public void setF48(String f48) {\r\n        this.f48 = f48;\r\n    }\r\n\r\n    public String getF49() {\r\n        return f49;\r\n    }\r\n\r\n    public void setF49(String f49) {\r\n        this.f49 = f49;\r\n    }\r\n\r\n    public String getF50() {\r\n        return f50;\r\n    }\r\n\r\n    public void setF50(String f50) {\r\n        this.f50 = f50;\r\n    }\r\n\r\n    public String getF51() {\r\n        return f51;\r\n    }\r\n\r\n    public void setF51(String f51) {\r\n        this.f51 = f51;\r\n    }\r\n\r\n    public String getF52() {\r\n        return f52;\r\n    }\r\n\r\n    public void setF52(String f52) {\r\n        this.f52 = f52;\r\n    }\r\n\r\n    public String getF53() {\r\n        return f53;\r\n    }\r\n\r\n    public void setF53(String f53) {\r\n        this.f53 = f53;\r\n    }\r\n\r\n    public String getF54() {\r\n        return f54;\r\n    }\r\n\r\n    public void setF54(String f54) {\r\n        this.f54 = f54;\r\n    }\r\n\r\n    public String getF55() {\r\n        return f55;\r\n    }\r\n\r\n    public void setF55(String f55) {\r\n        this.f55 = f55;\r\n    }\r\n\r\n    public String getF56() {\r\n        return f56;\r\n    }\r\n\r\n    public void setF56(String f56) {\r\n        this.f56 = f56;\r\n    }\r\n\r\n    public String getF57() {\r\n        return f57;\r\n    }\r\n\r\n    public void setF57(String f57) {\r\n        this.f57 = f57;\r\n    }\r\n\r\n    public String getF58() {\r\n        return f58;\r\n    }\r\n\r\n    public void setF58(String f58) {\r\n        this.f58 = f58;\r\n    }\r\n\r\n    public String getF59() {\r\n        return f59;\r\n    }\r\n\r\n    public void setF59(String f59) {\r\n        this.f59 = f59;\r\n    }\r\n\r\n    public String getF60() {\r\n        return f60;\r\n    }\r\n\r\n    public void setF60(String f60) {\r\n        this.f60 = f60;\r\n    }\r\n\r\n    public String getF61() {\r\n        return f61;\r\n    }\r\n\r\n    public void setF61(String f61) {\r\n        this.f61 = f61;\r\n    }\r\n\r\n    public String getF62() {\r\n        return f62;\r\n    }\r\n\r\n    public void setF62(String f62) {\r\n        this.f62 = f62;\r\n    }\r\n\r\n    public String getF63() {\r\n        return f63;\r\n    }\r\n\r\n    public void setF63(String f63) {\r\n        this.f63 = f63;\r\n    }\r\n\r\n    public String getF64() {\r\n        return f64;\r\n    }\r\n\r\n    public void setF64(String f64) {\r\n        this.f64 = f64;\r\n    }\r\n\r\n    public String getF65() {\r\n        return f65;\r\n    }\r\n\r\n    public void setF65(String f65) {\r\n        this.f65 = f65;\r\n    }\r\n\r\n    public String getF66() {\r\n        return f66;\r\n    }\r\n\r\n    public void setF66(String f66) {\r\n        this.f66 = f66;\r\n    }\r\n\r\n    public String getF67() {\r\n        return f67;\r\n    }\r\n\r\n    public void setF67(String f67) {\r\n        this.f67 = f67;\r\n    }\r\n\r\n    public String getF68() {\r\n        return f68;\r\n    }\r\n\r\n    public void setF68(String f68) {\r\n        this.f68 = f68;\r\n    }\r\n\r\n    public String getF69() {\r\n        return f69;\r\n    }\r\n\r\n    public void setF69(String f69) {\r\n        this.f69 = f69;\r\n    }\r\n\r\n    public String getF70() {\r\n        return f70;\r\n    }\r\n\r\n    public void setF70(String f70) {\r\n        this.f70 = f70;\r\n    }\r\n\r\n    public String getF71() {\r\n        return f71;\r\n    }\r\n\r\n    public void setF71(String f71) {\r\n        this.f71 = f71;\r\n    }\r\n\r\n    public String getF72() {\r\n        return f72;\r\n    }\r\n\r\n    public void setF72(String f72) {\r\n        this.f72 = f72;\r\n    }\r\n\r\n    public String getF73() {\r\n        return f73;\r\n    }\r\n\r\n    public void setF73(String f73) {\r\n        this.f73 = f73;\r\n    }\r\n\r\n    public String getF74() {\r\n        return f74;\r\n    }\r\n\r\n    public void setF74(String f74) {\r\n        this.f74 = f74;\r\n    }\r\n\r\n    public String getF75() {\r\n        return f75;\r\n    }\r\n\r\n    public void setF75(String f75) {\r\n        this.f75 = f75;\r\n    }\r\n\r\n    public String getF76() {\r\n        return f76;\r\n    }\r\n\r\n    public void setF76(String f76) {\r\n        this.f76 = f76;\r\n    }\r\n\r\n    public String getF77() {\r\n        return f77;\r\n    }\r\n\r\n    public void setF77(String f77) {\r\n        this.f77 = f77;\r\n    }\r\n\r\n    public String getF78() {\r\n        return f78;\r\n    }\r\n\r\n    public void setF78(String f78) {\r\n        this.f78 = f78;\r\n    }\r\n\r\n    public String getF79() {\r\n        return f79;\r\n    }\r\n\r\n    public void setF79(String f79) {\r\n        this.f79 = f79;\r\n    }\r\n\r\n    public String getF80() {\r\n        return f80;\r\n    }\r\n\r\n    public void setF80(String f80) {\r\n        this.f80 = f80;\r\n    }\r\n\r\n    public String getF81() {\r\n        return f81;\r\n    }\r\n\r\n    public void setF81(String f81) {\r\n        this.f81 = f81;\r\n    }\r\n\r\n    public String getF82() {\r\n        return f82;\r\n    }\r\n\r\n    public void setF82(String f82) {\r\n        this.f82 = f82;\r\n    }\r\n\r\n    public String getF83() {\r\n        return f83;\r\n    }\r\n\r\n    public void setF83(String f83) {\r\n        this.f83 = f83;\r\n    }\r\n\r\n    public String getF84() {\r\n        return f84;\r\n    }\r\n\r\n    public void setF84(String f84) {\r\n        this.f84 = f84;\r\n    }\r\n\r\n    public String getF85() {\r\n        return f85;\r\n    }\r\n\r\n    public void setF85(String f85) {\r\n        this.f85 = f85;\r\n    }\r\n\r\n    public String getF86() {\r\n        return f86;\r\n    }\r\n\r\n    public void setF86(String f86) {\r\n        this.f86 = f86;\r\n    }\r\n\r\n    public String getF87() {\r\n        return f87;\r\n    }\r\n\r\n    public void setF87(String f87) {\r\n        this.f87 = f87;\r\n    }\r\n\r\n    public String getF88() {\r\n        return f88;\r\n    }\r\n\r\n    public void setF88(String f88) {\r\n        this.f88 = f88;\r\n    }\r\n\r\n    public String getF89() {\r\n        return f89;\r\n    }\r\n\r\n    public void setF89(String f89) {\r\n        this.f89 = f89;\r\n    }\r\n\r\n    public String getF90() {\r\n        return f90;\r\n    }\r\n\r\n    public void setF90(String f90) {\r\n        this.f90 = f90;\r\n    }\r\n\r\n    public String getF91() {\r\n        return f91;\r\n    }\r\n\r\n    public void setF91(String f91) {\r\n        this.f91 = f91;\r\n    }\r\n\r\n    public String getF92() {\r\n        return f92;\r\n    }\r\n\r\n    public void setF92(String f92) {\r\n        this.f92 = f92;\r\n    }\r\n\r\n    public String getF93() {\r\n        return f93;\r\n    }\r\n\r\n    public void setF93(String f93) {\r\n        this.f93 = f93;\r\n    }\r\n\r\n    public String getF94() {\r\n        return f94;\r\n    }\r\n\r\n    public void setF94(String f94) {\r\n        this.f94 = f94;\r\n    }\r\n\r\n    public String getF95() {\r\n        return f95;\r\n    }\r\n\r\n    public void setF95(String f95) {\r\n        this.f95 = f95;\r\n    }\r\n\r\n    public String getF96() {\r\n        return f96;\r\n    }\r\n\r\n    public void setF96(String f96) {\r\n        this.f96 = f96;\r\n    }\r\n\r\n    public String getF97() {\r\n        return f97;\r\n    }\r\n\r\n    public void setF97(String f97) {\r\n        this.f97 = f97;\r\n    }\r\n\r\n    public String getF98() {\r\n        return f98;\r\n    }\r\n\r\n    public void setF98(String f98) {\r\n        this.f98 = f98;\r\n    }\r\n\r\n    public String getF99() {\r\n        return f99;\r\n    }\r\n\r\n    public void setF99(String f99) {\r\n        this.f99 = f99;\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/entity/case2/Category.java",
    "content": "package com.alibaba.json.test.entity.case2;\r\n\r\nimport java.io.Serializable;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\nimport com.alibaba.fastjson.annotation.JSONField;\r\n\r\npublic class Category implements Serializable {\r\n\r\n    private static final long serialVersionUID = 8606386680333098397L;\r\n    private long              id;\r\n    private String            name;\r\n\r\n    private Category          parent;\r\n    private List<Category>    children         = new ArrayList<Category>();\r\n\r\n    public long getId() {\r\n        return id;\r\n    }\r\n\r\n    public void setId(long id) {\r\n        this.id = id;\r\n    }\r\n\r\n    public String getName() {\r\n        return name;\r\n    }\r\n\r\n    public void setName(String name) {\r\n        this.name = name;\r\n    }\r\n\r\n    @JSONField(serialize = false)\r\n    public Category getParent() {\r\n        return parent;\r\n    }\r\n\r\n    public void setParent(Category parent) {\r\n        this.parent = parent;\r\n    }\r\n\r\n    public List<Category> getChildren() {\r\n        return children;\r\n    }\r\n\r\n    public void setChildren(List<Category> children) {\r\n        this.children = children;\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/entity/pagemodel/ComponentInstance.java",
    "content": "package com.alibaba.json.test.entity.pagemodel;\r\n\r\n/**\r\n * ��ComponentInstance.java��ʵ�������� ���ʵ��ģ��.\r\n * \r\n * @author jiajie.yujj @ 2010-11-29 ����09:53:39\r\n * @author naipei.chennp 2010-12-7 ����09:47:50\r\n */\r\npublic abstract class ComponentInstance {\r\n\r\n    protected Long   sid;\r\n    protected String cid;\r\n\r\n    public Long getSid() {\r\n        return sid;\r\n    }\r\n\r\n    public void setSid(Long sid) {\r\n        this.sid = sid;\r\n    }\r\n\r\n    public String getCid() {\r\n        return cid;\r\n    }\r\n\r\n    public void setCid(String cid) {\r\n        this.cid = cid;\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/entity/pagemodel/ComponentInstanceParam.java",
    "content": "package com.alibaba.json.test.entity.pagemodel;\r\n\r\n/**\r\n * TODO Comment of UserComponentParamModel\r\n * \r\n * @author jiajie.yujj @ 2010-11-29 ����09:54:04\r\n */\r\npublic class ComponentInstanceParam {\r\n\r\n    private String name;\r\n    private String value;\r\n\r\n    public String getName() {\r\n        return name;\r\n    }\r\n\r\n    public void setName(String name) {\r\n        this.name = name;\r\n    }\r\n\r\n    public String getValue() {\r\n        return value;\r\n    }\r\n\r\n    public void setValue(String value) {\r\n        this.value = value;\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/entity/pagemodel/LayoutInstance.java",
    "content": "package com.alibaba.json.test.entity.pagemodel;\r\n\r\nimport java.io.Serializable;\r\nimport java.util.List;\r\n\r\n/**\r\n * TODO Comment of LayoutInstance\r\n * \r\n * @author jiajie.yujj @ 2010-11-29 ����09:53:44\r\n */\r\npublic class LayoutInstance extends ComponentInstance implements Serializable {\r\n\r\n    private static final long    serialVersionUID = -3025232531863199667L;\r\n\r\n    private List<RegionInstance> regions;\r\n\r\n    public List<RegionInstance> getRegions() {\r\n        return regions;\r\n    }\r\n\r\n    public void setRegions(List<RegionInstance> regions) {\r\n        this.regions = regions;\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/entity/pagemodel/PageInstance.java",
    "content": "package com.alibaba.json.test.entity.pagemodel;\r\n\r\nimport java.io.Serializable;\r\nimport java.util.List;\r\n\r\n/**\r\n * TODO Comment of PageInstance\r\n * \r\n * @author jiajie.yujj @ 2010-11-29 ����09:53:49\r\n */\r\npublic class PageInstance extends ComponentInstance implements Serializable {\r\n\r\n    private static final long     serialVersionUID = 7392769933771342661L;\r\n\r\n    private List<SegmentInstance> segments;\r\n\r\n    public List<SegmentInstance> getSegments() {\r\n        return segments;\r\n    }\r\n\r\n    public void setSegments(List<SegmentInstance> segments) {\r\n        this.segments = segments;\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/entity/pagemodel/RegionEnum.java",
    "content": "package com.alibaba.json.test.entity.pagemodel;\r\n\r\n/**\r\n * TODO Comment of RegionEnum\r\n * \r\n * @author jiajie.yujj @ 2010-11-29 ����09:53:53\r\n */\r\npublic enum RegionEnum {\r\n    SIDE, MAIN, EXTRA;\r\n\r\n    public String getId() {\r\n        return this.toString();\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/entity/pagemodel/RegionInstance.java",
    "content": "/*\r\n * Copyright 1999-2004 Alibaba.com All right reserved. This software is the confidential and proprietary information of\r\n * Alibaba.com (\"Confidential Information\"). You shall not disclose such Confidential Information and shall use it only\r\n * in accordance with the terms of the license agreement you entered into with Alibaba.com.\r\n */\r\npackage com.alibaba.json.test.entity.pagemodel;\r\n\r\nimport java.util.List;\r\n\r\n/**\r\n * 类RegionInstance.java的实现描述：TODO 类实现描述\r\n * \r\n * @author jiajie.yujj 2010-12-25 下午07:24:11\r\n */\r\npublic class RegionInstance {\r\n\r\n    private List<WidgetInstance> widgtes;\r\n\r\n    public List<WidgetInstance> getWidgtes() {\r\n        return widgtes;\r\n    }\r\n\r\n    public void setWidgtes(List<WidgetInstance> widgtes) {\r\n        this.widgtes = widgtes;\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/entity/pagemodel/SegmentInstance.java",
    "content": "/*\r\n * Copyright 1999-2004 Alibaba.com All right reserved. This software is the confidential and proprietary information of\r\n * Alibaba.com (\"Confidential Information\"). You shall not disclose such Confidential Information and shall use it only\r\n * in accordance with the terms of the license agreement you entered into with Alibaba.com.\r\n */\r\npackage com.alibaba.json.test.entity.pagemodel;\r\n\r\nimport java.io.Serializable;\r\nimport java.util.List;\r\n\r\n/**\r\n * 类SegmentIntance.java的实现描述：TODO 类实现描述\r\n * \r\n * @author jiajie.yujj 2010-12-25 下午07:18:37\r\n */\r\npublic class SegmentInstance extends ComponentInstance implements Serializable {\r\n\r\n    private static final long serialVersionUID = -2307992962779806227L;\r\n\r\n    List<LayoutInstance>      layouts;\r\n\r\n    public List<LayoutInstance> getLayouts() {\r\n        return layouts;\r\n    }\r\n\r\n    public void setLayouts(List<LayoutInstance> layouts) {\r\n        this.layouts = layouts;\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/entity/pagemodel/WidgetInstance.java",
    "content": "package com.alibaba.json.test.entity.pagemodel;\r\n\r\nimport java.io.Serializable;\r\n\r\n/**\r\n * TODO Comment of WidgetInstance\r\n * \r\n * @author jiajie.yujj @ 2010-11-29 ����09:54:10\r\n */\r\npublic class WidgetInstance extends ComponentInstance implements Serializable {\r\n\r\n    private static final long serialVersionUID = 153195882933950235L;\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/epubview/EpubViewBook.java",
    "content": "package com.alibaba.json.test.epubview;\r\n\r\nimport java.io.Serializable;\r\nimport java.util.List;\r\n\r\n/**\r\n * Epub书展示实体类\r\n * \r\n * @author  renci\r\n * @version  [版本号, 2012-8-9]\r\n * @see  [相关类/方法]\r\n * @since  [产品/模块版本]\r\n */\r\npublic class EpubViewBook implements Serializable {\r\n    /**\r\n     * \r\n     */\r\n    private static final long serialVersionUID = -3450886861177869027L;\r\n    private String bookName;\r\n    private int pageCountNum;\r\n    private boolean teachingFlag = true;\r\n    private List<EpubViewPage> pageList;\r\n    private EpubViewMetaData metadata;\r\n    public String getBookName() {\r\n        return bookName;\r\n    }\r\n    public void setBookName(String bookName) {\r\n        this.bookName = bookName;\r\n    }\r\n    public List<EpubViewPage> getPageList() {\r\n        return pageList;\r\n    }\r\n    public void setPageList(List<EpubViewPage> pageList) {\r\n        this.pageList = pageList;\r\n    }\r\n    \r\n    public int getPageCountNum() {\r\n        return pageCountNum;\r\n    }\r\n    public void setPageCountNum(int pageCountNum) {\r\n        this.pageCountNum = pageCountNum;\r\n    }\r\n\r\n    public boolean isTeachingFlag() {\r\n        return teachingFlag;\r\n    }\r\n    \r\n    public void setTeachingFlag(boolean teachingFlag) {\r\n        this.teachingFlag = teachingFlag;\r\n    }\r\n    public EpubViewMetaData getMetadata()\r\n    {\r\n        return metadata;\r\n    }\r\n    public void setMetadata(EpubViewMetaData metadata)\r\n    {\r\n        this.metadata = metadata;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/epubview/EpubViewHotPoint.java",
    "content": "package com.alibaba.json.test.epubview;\r\n\r\nimport java.io.Serializable;\r\nimport java.util.List;\r\nimport java.util.Map;\r\n\r\n/**\r\n * 热点\r\n * @author renci\r\n *\r\n */\r\npublic class EpubViewHotPoint implements Serializable  {\r\n\r\n\tprivate static final long serialVersionUID = 2430184364840193603L;\r\n\t\r\n\t/**\r\n\t * 热点类型：\r\n\t * Normal：普通热点，显示图标，有iconzone、iconsrc标签\r\n\t * Hide：隐藏热点，不会显示图标，无iconzone、iconsrc标签\r\n\t * BkHightLight：背景高亮热点\r\n\t */\r\n\tprivate String type;\r\n\t/**\r\n\t * 热点行为名称\r\n\t */\r\n\tprivate String actionname;\r\n\t\r\n\t/**\r\n\t * 热点文件类型：\r\n\t * text/plain：文本\r\n\t * audio/mpeg：音频\r\n\t * video/mpeg：视频\r\n\t * image/jpeg：图片\r\n\t * application/x-book：课文热点弹出框\r\n\t * application/x-practice：课文练习\r\n\t * office：office文档格式\r\n\t * audio/highlight：音频背景高亮\r\n\t * webview/swf：flash\r\n\t */\r\n\tprivate String actiontype;\r\n\t\r\n\t/**\r\n\t * 热点文件位置\r\n\t */\r\n\tprivate String src;\r\n\t\r\n\t/**\r\n\t * 加密热点文件位置\r\n\t */\r\n\tprivate String dcfSrc;\r\n\t\r\n\t/**\r\n\t * 默认热点文件原文件名\r\n\t */\r\n\tprivate String description;\r\n\t\r\n\t/**\r\n\t * application/x-book：课文热点弹出框（自定义热点）的标题\r\n\t */\r\n\tprivate String title;\r\n\t\r\n\t/**\r\n\t * application/x-book：课文热点弹出框（自定义热点）的内容\r\n\t */\r\n\tprivate String content;\r\n\t\r\n\t/**\r\n\t * application/x-book：课文热点弹出框（自定义热点）的附加菜单列表\r\n\t */\r\n\tprivate String menulist;\r\n\t\r\n\t/**\r\n\t * application/x-book：课文热点弹出框（自定义热点）的背景朗读音频源路径.\r\n\t */\r\n\tprivate String reading;\r\n\t\r\n\t/**\r\n\t * application/x-book：课文热点弹出框（自定义热点）是否支持画笔\r\n\t */\r\n\tprivate String pen;\r\n\t\r\n\t/**\r\n\t * application/x-book：课文热点弹出框（自定义热点）是否支持字典\r\n\t */\r\n\tprivate String dictionary;\r\n\t\r\n\t/**\r\n\t * 参数\r\n\t */\r\n\tprivate Map<String, String> parameters;\r\n\t\r\n\t/**\r\n\t * 图片区域左上角X值\r\n\t */\r\n\tprivate String left;\r\n\t\r\n\t/**\r\n\t * 图片区域左上角Y值\r\n\t */\r\n\tprivate String top;\r\n\t\r\n\t/**\r\n\t * 图片区域右下角X值\r\n\t */\r\n\tprivate String right;\r\n\t\r\n\t/**\r\n\t * 图片区域右下角Y值\r\n\t */\r\n\tprivate String bottom;\r\n\t\r\n\t/**\r\n\t * 热点图标存放路径，隐藏热点、背景高亮热点可以不含该值\r\n\t */\r\n\tprivate String iconSrc;\r\n\t\r\n\tprivate String starttime;\r\n\tprivate String endtime;\r\n\t\r\n\t/**\r\n\t * 热点区域\r\n\t */\r\n\tprivate List<EpubViewHotPointZone> zoneList;\r\n\r\n\tpublic String getType() {\r\n\t\treturn type;\r\n\t}\r\n\r\n\tpublic void setType(String type) {\r\n\t\tthis.type = type;\r\n\t}\r\n\r\n\tpublic String getActionname() {\r\n\t\treturn actionname;\r\n\t}\r\n\r\n\tpublic void setActionname(String actionname) {\r\n\t\tthis.actionname = actionname;\r\n\t}\r\n\r\n\tpublic String getActiontype() {\r\n\t\treturn actiontype;\r\n\t}\r\n\r\n\tpublic void setActiontype(String actiontype) {\r\n\t\tthis.actiontype = actiontype;\r\n\t}\r\n\r\n\tpublic String getSrc() {\r\n\t\treturn src;\r\n\t}\r\n\r\n\tpublic void setSrc(String src) {\r\n\t\tthis.src = src;\r\n\t}\r\n\r\n\tpublic String getDcfSrc() {\r\n\t\treturn dcfSrc;\r\n\t}\r\n\r\n\tpublic void setDcfSrc(String dcfSrc) {\r\n\t\tthis.dcfSrc = dcfSrc;\r\n\t}\r\n\r\n\tpublic String getDescription() {\r\n\t\treturn description;\r\n\t}\r\n\r\n\tpublic void setDescription(String description) {\r\n\t\tthis.description = description;\r\n\t}\r\n\r\n\tpublic String getTitle() {\r\n\t\treturn title;\r\n\t}\r\n\r\n\tpublic void setTitle(String title) {\r\n\t\tthis.title = title;\r\n\t}\r\n\r\n\tpublic String getContent() {\r\n\t\treturn content;\r\n\t}\r\n\r\n\tpublic void setContent(String content) {\r\n\t\tthis.content = content;\r\n\t}\r\n\r\n\tpublic String getMenulist() {\r\n\t\treturn menulist;\r\n\t}\r\n\r\n\tpublic void setMenulist(String menulist) {\r\n\t\tthis.menulist = menulist;\r\n\t}\r\n\r\n\tpublic String getReading() {\r\n\t\treturn reading;\r\n\t}\r\n\r\n\tpublic void setReading(String reading) {\r\n\t\tthis.reading = reading;\r\n\t}\r\n\r\n\tpublic String getPen() {\r\n\t\treturn pen;\r\n\t}\r\n\r\n\tpublic void setPen(String pen) {\r\n\t\tthis.pen = pen;\r\n\t}\r\n\r\n\tpublic String getDictionary() {\r\n\t\treturn dictionary;\r\n\t}\r\n\r\n\tpublic void setDictionary(String dictionary) {\r\n\t\tthis.dictionary = dictionary;\r\n\t}\r\n\r\n\tpublic Map<String, String> getParameters() {\r\n\t\treturn parameters;\r\n\t}\r\n\r\n\tpublic void setParameters(Map<String, String> parameters) {\r\n\t\tthis.parameters = parameters;\r\n\t}\r\n\r\n\tpublic static long getSerialversionuid() {\r\n\t\treturn serialVersionUID;\r\n\t}\r\n\r\n\tpublic String getLeft() {\r\n\t\treturn left;\r\n\t}\r\n\r\n\tpublic void setLeft(String left) {\r\n\t\tthis.left = left;\r\n\t}\r\n\r\n\tpublic String getTop() {\r\n\t\treturn top;\r\n\t}\r\n\r\n\tpublic void setTop(String top) {\r\n\t\tthis.top = top;\r\n\t}\r\n\r\n\tpublic String getRight() {\r\n\t\treturn right;\r\n\t}\r\n\r\n\tpublic void setRight(String right) {\r\n\t\tthis.right = right;\r\n\t}\r\n\r\n\tpublic String getBottom() {\r\n\t\treturn bottom;\r\n\t}\r\n\r\n\tpublic void setBottom(String bottom) {\r\n\t\tthis.bottom = bottom;\r\n\t}\r\n\r\n\tpublic String getIconSrc() {\r\n\t\treturn iconSrc;\r\n\t}\r\n\r\n\tpublic void setIconSrc(String iconSrc) {\r\n\t\tthis.iconSrc = iconSrc;\r\n\t}\r\n\r\n\tpublic List<EpubViewHotPointZone> getZoneList() {\r\n\t\treturn zoneList;\r\n\t}\r\n\r\n\tpublic void setZoneList(List<EpubViewHotPointZone> zoneList) {\r\n\t\tthis.zoneList = zoneList;\r\n\t}\r\n\r\n    public String getStarttime()\r\n    {\r\n        return starttime;\r\n    }\r\n\r\n    public void setStarttime(String starttime)\r\n    {\r\n        this.starttime = starttime;\r\n    }\r\n\r\n    public String getEndtime()\r\n    {\r\n        return endtime;\r\n    }\r\n\r\n    public void setEndtime(String endtime)\r\n    {\r\n        this.endtime = endtime;\r\n    }\r\n\r\n    \r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/epubview/EpubViewHotPointZone.java",
    "content": "package com.alibaba.json.test.epubview;\r\n\r\nimport java.io.Serializable;\r\n\r\npublic class EpubViewHotPointZone implements Serializable {\r\n\r\n\tprivate static final long serialVersionUID = 7467644447749652248L;\r\n\r\n\t/**\r\n\t * 热点区域左上角X值\r\n\t */\r\n\tprivate String left;\r\n\t\r\n\t/**\r\n\t * 热点区域左上角Y值\r\n\t */\r\n\tprivate String top;\r\n\t\r\n\t/**\r\n\t * 热点区域右下角X值\r\n\t */\r\n\tprivate String right;\r\n\t\r\n\t/**\r\n\t * 热点区域右下角Y值\r\n\t */\r\n\tprivate String bottom;\r\n\t\r\n\t/**\r\n\t * 热点区域背景颜色\r\n\t */\r\n\tprivate String color;\r\n\t\r\n\t/**\r\n\t * 热点区域透明度（百分比），两位小数\r\n\t */\r\n\tprivate String transparency;\r\n\r\n\tpublic String getLeft() {\r\n\t\treturn left;\r\n\t}\r\n\r\n\tpublic void setLeft(String left) {\r\n\t\tthis.left = left;\r\n\t}\r\n\r\n\tpublic String getTop() {\r\n\t\treturn top;\r\n\t}\r\n\r\n\tpublic void setTop(String top) {\r\n\t\tthis.top = top;\r\n\t}\r\n\r\n\tpublic String getRight() {\r\n\t\treturn right;\r\n\t}\r\n\r\n\tpublic void setRight(String right) {\r\n\t\tthis.right = right;\r\n\t}\r\n\r\n\tpublic String getBottom() {\r\n\t\treturn bottom;\r\n\t}\r\n\r\n\tpublic void setBottom(String bottom) {\r\n\t\tthis.bottom = bottom;\r\n\t}\r\n\r\n\tpublic String getTransparency() {\r\n\t\treturn transparency;\r\n\t}\r\n\r\n\tpublic void setTransparency(String transparency) {\r\n\t\tthis.transparency = transparency;\r\n\t}\r\n\r\n\tpublic void setColor(String color) {\r\n\t\tthis.color = color;\r\n\t}\r\n\r\n\tpublic String getColor() {\r\n\t\treturn color;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/epubview/EpubViewMetaData.java",
    "content": "package com.alibaba.json.test.epubview;\r\n\r\nimport java.io.Serializable;\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\n\r\npublic class EpubViewMetaData implements Serializable\r\n{\r\n    private static final long serialVersionUID = 8776084797505245120L;\r\n    \r\n    private boolean encrypt = false;\r\n    private Map<String, String> properties = new HashMap<String, String>();\r\n\r\n    public Map<String, String> getProperties()\r\n    {\r\n        return properties;\r\n    }\r\n\r\n    public void setProperties(Map<String, String> properties)\r\n    {\r\n        this.properties = properties;\r\n    }\r\n\r\n    public boolean isEncrypt()\r\n    {\r\n        return encrypt;\r\n    }\r\n\r\n    public void setEncrypt(boolean encrypt)\r\n    {\r\n        this.encrypt = encrypt;\r\n    }\r\n\r\n    public static long getSerialversionuid()\r\n    {\r\n        return serialVersionUID;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/epubview/EpubViewPage.java",
    "content": "package com.alibaba.json.test.epubview;\r\n\r\nimport java.io.Serializable;\r\nimport java.util.List;\r\n\r\npublic class EpubViewPage implements Serializable {\r\n\r\n\tprivate static final long serialVersionUID = -2198407838110786606L;\r\n\t\r\n\t//普通Epub书时使用\r\n\tprivate String src;\r\n\tprivate String imageUrl;\r\n\tprivate String pageNum;\r\n\tprivate List<EpubViewHotPoint> hotPoints;\r\n\tpublic String getImageUrl() {\r\n\t\treturn imageUrl;\r\n\t}\r\n\tpublic void setImageUrl(String imageUrl) {\r\n\t\tthis.imageUrl = imageUrl;\r\n\t}\r\n\tpublic String getPageNum() {\r\n\t\treturn pageNum;\r\n\t}\r\n\tpublic void setPageNum(String pageNum) {\r\n\t\tthis.pageNum = pageNum;\r\n\t}\r\n\tpublic List<EpubViewHotPoint> getHotPoints() {\r\n\t\treturn hotPoints;\r\n\t}\r\n\tpublic void setHotPoints(List<EpubViewHotPoint> hotPoints) {\r\n\t\tthis.hotPoints = hotPoints;\r\n\t}\r\n\tpublic static long getSerialversionuid() {\r\n\t\treturn serialVersionUID;\r\n\t}\r\n    public String getSrc()\r\n    {\r\n        return src;\r\n    }\r\n    public void setSrc(String src)\r\n    {\r\n        this.src = src;\r\n    }\r\n\t\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/epubview/TestKlutz.java",
    "content": "package com.alibaba.json.test.epubview;\n\nimport java.io.BufferedReader;\nimport java.io.IOException;\nimport java.io.InputStreamReader;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.serializer.SerializerFeature;\nimport com.fasterxml.jackson.core.JsonParseException;\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport com.fasterxml.jackson.databind.JsonMappingException;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.google.gson.Gson;\n\npublic class TestKlutz extends TestCase {\n\n    private EpubViewBook book;\n    \n    ObjectMapper mapper = new ObjectMapper();\n    Gson gson = new Gson();\n    \n    private EpubViewBook book_jackson;\n    private EpubViewBook book_fastjson;\n    \n    private int LOOP_COUNT = 1000 * 1;\n\n    @Override\n    protected void setUp() throws Exception {\n        InputStreamReader isr = new InputStreamReader(\n                                                      Thread.currentThread().getContextClassLoader().getResourceAsStream(\"epub.json\"));\n        BufferedReader reader = new BufferedReader(isr);\n        StringBuilder sb = new StringBuilder();\n\n        String temp;\n        while ((temp = reader.readLine()) != null) {\n            sb.append(temp);\n        }\n        String s = sb.toString();\n\n        this.book = JSON.parseObject(s, EpubViewBook.class);\n    }\n\n    public void test_0() throws Exception {\n\n\n        for (int j = 0; j < 5; j++) {\n            fastjson();\n            //gson();\n            jackson();\n\n            System.out.println(\"=======================\");\n        }\n    }\n\n    private String jackson() throws Exception {\n        String s = mapper.writeValueAsString(book);\n        Long startTime;\n        // Jackson\n        startTime = System.currentTimeMillis();\n        for (int i = 0; i < LOOP_COUNT; i++) {\n            book_jackson = mapper.readValue(s, EpubViewBook.class);\n            //s = mapper.writeValueAsString(epubViewBook);\n        }\n        System.out.println(\"Jackson:\" + (System.currentTimeMillis() - startTime) + \", \" + s.length());\n        System.out.println(s);\n        return s;\n    }\n\n    private String gson() throws Exception {\n        String s = gson.toJson(book);\n        \n        Long startTime;\n        // Gson\n        startTime = System.currentTimeMillis();\n        for (int i = 0; i < LOOP_COUNT; i++) {\n            EpubViewBook epubViewBook = gson.fromJson(s, EpubViewBook.class);\n            s = gson.toJson(epubViewBook);\n        }\n        System.out.println(\"Gson:\" + (System.currentTimeMillis() - startTime) + \", \" + s.length());\n        return s;\n    }\n\n    private String fastjson() {\n        String s = JSON.toJSONString(book, SerializerFeature.DisableCircularReferenceDetect);\n        \n        Long startTime;\n        // Fastjson\n        startTime = System.currentTimeMillis();\n        for (int i = 0; i < LOOP_COUNT; i++) {\n            book_fastjson = JSON.parseObject(s, EpubViewBook.class, Feature.DisableCircularReferenceDetect);\n            //s = JSON.toJSONString(epubViewBook, SerializerFeature.DisableCircularReferenceDetect);\n        }\n        System.out.println(\"Fastjson:\" + (System.currentTimeMillis() - startTime) + \", \" + s.length());\n        System.out.println(s);\n        return s;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/epubview/TestKlutz2.java",
    "content": "package com.alibaba.json.test.epubview;\n\nimport java.util.HashMap;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestKlutz2 extends TestCase {\n//    public void test_0 () throws Exception {\n//        EpubViewMetaData x = new EpubViewMetaData();\n//        x.setProperties(new HashMap<String, String>());\n//        \n//        String str = JSON.toJSONString(x);\n//        System.out.println(str);\n//        \n//        JSON.parseObject(str, EpubViewMetaData.class);\n//    }\n    \n    public void test_page () throws Exception {\n        EpubViewPage x = new EpubViewPage();\n        x.setImageUrl(\"xxx\");\n        \n        String str = JSON.toJSONString(x);\n        System.out.println(str);\n        \n        JSON.parseObject(str, EpubViewPage.class);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/epubview/TestKlutz3.java",
    "content": "package com.alibaba.json.test.epubview;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\npublic class TestKlutz3 extends TestCase {\n    public void test_0 () throws Exception {\n        EpubViewBook book = new EpubViewBook();\n        book.setBookName(\"xx\");\n        \n        book.setPageList(new ArrayList<EpubViewPage>());\n        \n        EpubViewPage page = new EpubViewPage();\n        book.getPageList().add(page);\n        \n        EpubViewMetaData metadata = new EpubViewMetaData();\n        metadata.setProperties(new HashMap<String, String>());\n        \n//        book.setMetadata(null);\n        \n        String str = JSON.toJSONString(book);\n        System.out.println(str);\n        \n        JSON.parseObject(str, EpubViewBook.class);\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/generic/GenericTypeTest.java",
    "content": "package com.alibaba.json.test.generic;\nimport java.io.Serializable;\n\nimport org.junit.Test;\n\nimport junit.framework.Assert;\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\n\n\npublic class GenericTypeTest extends TestCase {\n\t\n\t@Test\n    public void testEmbeddedGenericType() throws Exception {\n         \n    \tString jsonString = \"{\\\"g\\\":{\\\"b\\\":{\\\"s\\\":'1'}}}\";\n    \t\n    \tStr t = JSON.parseObject(jsonString,Str.class);\n    \tObject o = t.getG().getB();\n    \tSystem.out.println(\"Inner Class EmbeddedGenericType test => \"+o.getClass().getName());\n    \tAssert.assertEquals(GenericTypeTest.Bean.class.getName(), o.getClass().getName());\n    \t\n    \tTStr t1 = JSON.parseObject(jsonString,TStr.class);\n    \tObject o1 = t1.getG().getB();\n    \tSystem.out.println(\"Public Class EmbeddedGenericType test => \"+o1.getClass().getName());\n    \tAssert.assertEquals(TBean.class.getName(), o1.getClass().getName());\n    \t\n    \t\n    }\n    \n\tstatic class Str implements Serializable{\n\t\tGen<Bean> g;\n\t\tpublic Gen<Bean> getG() {\n\t\t\treturn g;\n\t\t}\n\t\tpublic void setG(Gen<Bean> g) {\n\t\t\tthis.g = g;\n\t\t}\n\t}\n\t\n\tstatic class Gen<G> implements Serializable{\n\t\tG b;\n\t\tpublic G getB() {\n\t\t\treturn b;\n\t\t}\n\t\tpublic void setB(G b) {\n\t\t\tthis.b = b;\n\t\t}\n\t}\n\t\n\tstatic class Bean implements Serializable{\n\t\tString s;\n\t\tpublic String getS() {\n\t\t\treturn s;\n\t\t}\n\t\tpublic void setS(String s) {\n\t\t\tthis.s = s;\n\t\t}\n\t}\n    \n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/generic/TBean.java",
    "content": "package com.alibaba.json.test.generic;\nimport java.io.Serializable;\n\n\npublic class TBean implements Serializable {\n\n\tString s;\n\tpublic String getS() {\n\t\treturn s;\n\t}\n\tpublic void setS(String s) {\n\t\tthis.s = s;\n\t}\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/generic/TGen.java",
    "content": "package com.alibaba.json.test.generic;\nimport java.io.Serializable;\n\n\npublic class TGen<G> implements Serializable {\n\n\tG b;\n\tpublic G getB() {\n\t\treturn b;\n\t}\n\tpublic void setB(G b) {\n\t\tthis.b = b;\n\t}\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/generic/TStr.java",
    "content": "package com.alibaba.json.test.generic;\nimport java.io.Serializable;\n\npublic class TStr implements Serializable {\n\n\tTGen<TBean> g;\n\n\tpublic TGen<TBean> getG() {\n\t\treturn g;\n\t}\n\n\tpublic void setG(TGen<TBean> g) {\n\t\tthis.g = g;\n\t}\n\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/gson/TestChineseQuote.java",
    "content": "package com.alibaba.json.test.gson;\n\nimport com.google.gson.Gson;\n\nimport junit.framework.TestCase;\n\npublic class TestChineseQuote extends TestCase {\n\n    public void test_chinese_quote() throws Exception {\n        String text = \"{\\\"name\\\":“tiny.luo”,\\\"school\\\":\\\"\\\"}\";\n\n        Gson gson = new Gson();\n        User user = gson.fromJson(text, User.class);\n        \n    }\n\n    public static class User {\n\n        public String name;\n        public String school;\n    }\n\n    public static class School {\n\n        public int    id;\n        public String address;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/jackson/JacksonInnerClassTest.java",
    "content": "package com.alibaba.json.test.jackson;\r\n\r\nimport com.fasterxml.jackson.core.JsonParser.Feature;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\nimport junit.framework.TestCase;\r\n\r\nimport java.util.Map;\r\n\r\npublic class JacksonInnerClassTest extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        ObjectMapper mapper = new ObjectMapper();\r\n        mapper.configure(Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);\r\n\r\n        mapper.readValue(\"{a:3}\", Map.class);\r\n    }\r\n    \r\n    public void test_1() throws Exception {\r\n        Model model = new Model();\r\n        model.id = 1001;\r\n        ObjectMapper mapper = new ObjectMapper();\r\n        String text = mapper.writeValueAsString(model);\r\n\r\n\r\n        mapper.readValue(text, Model.class);\r\n    }\r\n    \r\n    public class Model {\r\n        public Model() {\r\n\r\n        }\r\n        public int id;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/jackson/JacksonTest.java",
    "content": "package com.alibaba.json.test.jackson;\r\n\r\nimport java.util.Map;\r\n\r\nimport com.fasterxml.jackson.core.JsonParser.Feature;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\n\r\nimport junit.framework.TestCase;\r\n\r\npublic class JacksonTest extends TestCase {\r\n\r\n    public void test_0() throws Exception {\r\n        ObjectMapper mapper = new ObjectMapper();\r\n        mapper.configure(Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);\r\n\r\n        mapper.readValue(\"{a:3}\", Map.class);\r\n    }\r\n    \r\n    public void test_1() throws Exception {\r\n        Model model = new Model();\r\n        model.id = 1001;\r\n        ObjectMapper mapper = new ObjectMapper();\r\n        String text = mapper.writeValueAsString(model);\r\n        System.out.println(text);\r\n    }\r\n    \r\n    public static class Model {\r\n        public int id;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/jackson/JacksonTypeInfoTest.java",
    "content": "package com.alibaba.json.test.jackson;\n\nimport com.fasterxml.jackson.annotation.JsonSubTypes;\nimport com.fasterxml.jackson.annotation.JsonTypeInfo;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 02/04/2017.\n */\npublic class JacksonTypeInfoTest extends TestCase {\n    public void test_typeinfo() throws Exception {\n        ObjectMapper mapper = new ObjectMapper();\n\n        A a = new B();\n\n        String str = mapper.writeValueAsString(a);\n        System.out.println(str);\n\n        Object x = mapper.readValue(str, A.class);\n        System.out.println(x.getClass());\n    }\n\n    @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS)\n    public static class A {\n        protected int a;\n\n        public A() {\n        }\n\n        public A(int a) {\n            this.a = a;\n        }\n\n        public int getA() {\n            return a;\n        }\n\n        public void setA(int a) {\n            this.a = a;\n        }\n    }\n\n    public static class B extends A {\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/jackson/JacksonUnwrappedTest.java",
    "content": "package com.alibaba.json.test.jackson;\n\nimport com.fasterxml.jackson.annotation.JsonUnwrapped;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport junit.framework.TestCase;\n\n/**\n * Created by wenshao on 02/04/2017.\n */\npublic class JacksonUnwrappedTest extends TestCase {\n    public void test_for_unwrap() throws Exception {\n        Model model = new Model();\n        ObjectMapper mapper = new ObjectMapper();\n\n        String str = mapper.writeValueAsString(model);\n        System.out.println(str);\n    }\n\n    public static class Model {\n        @JsonUnwrapped\n        public Point point = new Point();\n    }\n\n    public static class Point {\n        public int x;\n        public int y;\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/knowissue/Bug_for_loveflying.java",
    "content": "package com.alibaba.json.test.knowissue;\n\nimport java.util.Date;\nimport java.util.HashSet;\nimport java.util.Set;\n\nimport junit.framework.TestCase;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObject;\nimport com.alibaba.fastjson.serializer.SerializeConfig;\nimport com.alibaba.fastjson.serializer.SimpleDateFormatSerializer;\n\npublic class Bug_for_loveflying extends TestCase {\n\n    public void test_for_loveflying() throws Exception {\n        User user = new User();\n        user.setId(1l);\n        user.setName(\"loveflying\");\n        user.setCreateTime(new java.sql.Timestamp(new Date().getTime()));\n\n        UserLog userLog = new UserLog();\n        userLog.setId(1l);\n        userLog.setUser(user);\n        user.getUserLogs().add(userLog);\n\n        userLog = new UserLog();\n        userLog.setId(2l);\n        userLog.setUser(user);\n        user.getUserLogs().add(userLog);\n\n        SerializeConfig mapping = new SerializeConfig();\n\n        mapping.put(java.sql.Date.class, new SimpleDateFormatSerializer(\"yyyy-MM-dd\"));\n        mapping.put(java.sql.Timestamp.class, new SimpleDateFormatSerializer(\"yyyy-MM-dd HH:mm:ss\"));\n        // mapping.put(User.class, new JavaBeanSerializer(User.class,\n        // Collections.singletonMap(\"id\", \"uid\")));\n\n        JSONObject jsonObject = (JSONObject) JSON.toJSON(user);\n        jsonObject.put(\"ext\", \"新加的属性\");\n        System.out.println(jsonObject.toJSONString(jsonObject, mapping));\n    }\n\n    public static class UserLog {\n\n        private Long           id;\n\n        private transient User user;\n\n        public Long getId() {\n            return id;\n        }\n\n        public void setId(Long id) {\n            this.id = id;\n        }\n\n        public User getUser() {\n            return user;\n        }\n\n        public void setUser(User user) {\n            this.user = user;\n        }\n\n    }\n\n    public static class User {\n\n        private Long               id;\n\n        private String             name;\n\n        private java.sql.Timestamp createTime;\n\n        private Set<UserLog>       userLogs = new HashSet<UserLog>();\n\n        public Long getId() {\n            return id;\n        }\n\n        public void setId(Long id) {\n            this.id = id;\n        }\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public java.sql.Timestamp getCreateTime() {\n            return createTime;\n        }\n\n        public void setCreateTime(java.sql.Timestamp createTime) {\n            this.createTime = createTime;\n        }\n\n        public Set<UserLog> getUserLogs() {\n            return userLogs;\n        }\n\n        public void setUserLogs(Set<UserLog> userLogs) {\n            this.userLogs = userLogs;\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/performance/DecoderPerformanceTest.java",
    "content": "package com.alibaba.json.test.performance;\r\n\r\nimport java.io.InputStream;\r\nimport java.math.BigDecimal;\r\nimport java.text.NumberFormat;\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.List;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport org.apache.commons.io.IOUtils;\r\n\r\nimport com.alibaba.json.test.codec.Codec;\r\nimport com.alibaba.json.test.codec.FastjsonCodec;\r\nimport com.alibaba.json.test.codec.JacksonCodec;\r\n\r\npublic class DecoderPerformanceTest extends TestCase {\r\n\r\n    final int      COUNT = 1000 * 100;\r\n    private String text;\r\n\r\n    protected void setUp() throws Exception {\r\n        text = \"{\\\"old\\\":true,\\\"description\\\":\\\"神棍\\\",\\\"name\\\":\\\"校长\\\",\\\"age\\\":3,\\\"salary\\\":123456789.0123}\";\r\n\r\n        text = \"[{\\\"S\\\":321061,\\\"T\\\":\\\"GetAttributeResp\\\"},{\\\"ERROR\\\":null,\\\"TS\\\":0,\\\"VAL\\\":{\\\"SqlList\\\":[{\\\"BatchSizeMax\\\":0,\\\"BatchSizeTotal\\\":0,\\\"ConcurrentMax\\\":1,\\\"DataSource\\\":\\\"jdbc:wrap-jdbc:filters=default,encoding:name=ds-offer:jdbc:mysql://100.10.10.10:8066/xxx\\\",\\\"EffectedRowCount\\\":0,\\\"ErrorCount\\\":0,\\\"ExecuteCount\\\":5,\\\"FetchRowCount\\\":5,\\\"File\\\":null,\\\"ID\\\":2001,\\\"LastError\\\":null,\\\"LastTime\\\":1292742908178,\\\"MaxTimespan\\\":16,\\\"MaxTimespanOccurTime\\\":1292742668191,\\\"Name\\\":null,\\\"RunningCount\\\":0,\\\"SQL\\\":\\\"SELECT @@SQL_MODE\\\",\\\"TotalTime\\\":83}]}}]\";\r\n        // text =\r\n        // \"[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]\";\r\n        // text =\r\n        // \"[\\\"description\\\", \\\"神棍\\\", \\\"校长\\\", \\\"old\\\",\\\"salary\\\", \\\"jdbc:wrap-jdbc:filters=default,encoding:name=ds-offer:jdbc:mysql://100.10.10.10:8066/xxx\\\"]\";\r\n        // text =\r\n        // \"{\\\"OLD\\\":true,\\\"DESCRIPTION\\\":\\\"神棍\\\",\\\"name\\\":\\\"校长\\\",\\\"AGE\\\":3,\\\"SALARY\\\":123456789.0123}\";\r\n        text = \"{\\\"badboy\\\":true,\\\"description\\\":\\\"神棍敌人姐\\\",\\\"name\\\":\\\"校长\\\",\\\"age\\\":3,\\\"birthdate\\\":1293278091773,\\\"salary\\\":123456789.0123}\";\r\n\r\n        String resource = \"json/group.json\";\r\n        InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource);\r\n        text = IOUtils.toString(is);\r\n        is.close();\r\n    }\r\n\r\n    public void test_performance() throws Exception {\r\n\r\n        List<Codec> decoders = new ArrayList<Codec>();\r\n        decoders.add(new JacksonCodec());\r\n        decoders.add(new FastjsonCodec());\r\n\r\n        for (int i = 0; i < 20; ++i) {\r\n            for (Codec decoder : decoders) {\r\n                decode(text, decoder);\r\n                // decodeToJavaBean(text, decoder);\r\n            }\r\n            System.out.println();\r\n        }\r\n        System.out.println();\r\n        System.out.println(text);\r\n    }\r\n\r\n    private void decode(String text, Codec decoder) throws Exception {\r\n        long startNano = System.nanoTime();\r\n        for (int i = 0; i < COUNT; ++i) {\r\n            decoder.decode(text);\r\n        }\r\n        long nano = System.nanoTime() - startNano;\r\n        System.out.println(decoder.getName() + \" : \\t\" + NumberFormat.getInstance().format(nano));\r\n    }\r\n\r\n    public static class Person {\r\n\r\n        private String     name;\r\n        private int        age;\r\n        private BigDecimal salary;\r\n        private Date       birthdate;\r\n        private boolean    old;\r\n        private String     description;\r\n\r\n        public String getDescription() {\r\n            return description;\r\n        }\r\n\r\n        public void setDescription(String description) {\r\n            this.description = description;\r\n        }\r\n\r\n        public boolean isOld() {\r\n            return old;\r\n        }\r\n\r\n        public void setOld(boolean old) {\r\n            this.old = old;\r\n        }\r\n\r\n        public Date getBirthdate() {\r\n            return birthdate;\r\n        }\r\n\r\n        public void setBirthdate(Date birthdate) {\r\n            this.birthdate = birthdate;\r\n        }\r\n\r\n        public String getName() {\r\n            return name;\r\n        }\r\n\r\n        public void setName(String name) {\r\n            this.name = name;\r\n        }\r\n\r\n        public int getAge() {\r\n            return age;\r\n        }\r\n\r\n        public void setAge(int age) {\r\n            this.age = age;\r\n        }\r\n\r\n        public BigDecimal getSalary() {\r\n            return salary;\r\n        }\r\n\r\n        public void setSalary(BigDecimal salary) {\r\n            this.salary = salary;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/performance/IntArrayEncodePerformanceTest.java",
    "content": "package com.alibaba.json.test.performance;\r\n\r\nimport java.text.NumberFormat;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.json.test.codec.Codec;\r\nimport com.alibaba.json.test.codec.FastjsonCodec;\r\nimport com.alibaba.json.test.codec.JacksonCodec;\r\n\r\npublic class IntArrayEncodePerformanceTest extends TestCase {\r\n\r\n    final int             COUNT     = 10;\r\n    protected List<Codec> codecList = new ArrayList<Codec>();\r\n\r\n    protected void setUp() throws Exception {\r\n        codecList.add(new JacksonCodec());\r\n        codecList.add(new FastjsonCodec());\r\n    }\r\n\r\n    public void test_0() throws Exception {\r\n        int len = 1000 * 1000;\r\n        int[] array = new int[len];\r\n        for (int i = 0; i < len; ++i) {\r\n            array[i] = i;\r\n        }\r\n\r\n        for (Codec codec : codecList) {\r\n            for (int i = 0; i < COUNT; ++i) {\r\n                encode(array, codec);\r\n            }\r\n        }\r\n    }\r\n\r\n    private void encode(Object object, Codec decoder) throws Exception {\r\n        long startNano = System.nanoTime();\r\n        for (int i = 0; i < COUNT; ++i) {\r\n            decoder.encode(object);\r\n        }\r\n        long nano = System.nanoTime() - startNano;\r\n        System.out.println(decoder.getName() + \" : \\t\" + NumberFormat.getInstance().format(nano));\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/performance/IntegerArrayEncodePerformanceTest.java",
    "content": "package com.alibaba.json.test.performance;\r\n\r\nimport java.text.NumberFormat;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.json.test.codec.Codec;\r\nimport com.alibaba.json.test.codec.FastjsonCodec;\r\nimport com.alibaba.json.test.codec.JacksonCodec;\r\n\r\npublic class IntegerArrayEncodePerformanceTest extends TestCase {\r\n\r\n    final int             COUNT     = 10;\r\n    protected List<Codec> codecList = new ArrayList<Codec>();\r\n\r\n    protected void setUp() throws Exception {\r\n        codecList.add(new JacksonCodec());\r\n        codecList.add(new FastjsonCodec());\r\n    }\r\n\r\n    public void test_0() throws Exception {\r\n        int len = 1000 * 1000;\r\n        Integer[] array = new Integer[len];\r\n        for (int i = 0; i < len; ++i) {\r\n            array[i] = i;\r\n        }\r\n\r\n        // Arrays.asList(array);\r\n        for (Codec codec : codecList) {\r\n            for (int i = 0; i < COUNT; ++i) {\r\n                encode(array, codec);\r\n            }\r\n        }\r\n    }\r\n\r\n    private void encode(Object object, Codec decoder) throws Exception {\r\n        long startNano = System.nanoTime();\r\n        for (int i = 0; i < COUNT; ++i) {\r\n            decoder.encode(object);\r\n        }\r\n        long nano = System.nanoTime() - startNano;\r\n        System.out.println(decoder.getName() + \" : \\t\" + NumberFormat.getInstance().format(nano));\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/performance/IntegerListEncodePerformanceTest.java",
    "content": "package com.alibaba.json.test.performance;\r\n\r\nimport java.text.NumberFormat;\r\nimport java.util.ArrayList;\r\nimport java.util.Arrays;\r\nimport java.util.List;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.json.test.codec.Codec;\r\nimport com.alibaba.json.test.codec.FastjsonCodec;\r\nimport com.alibaba.json.test.codec.JacksonCodec;\r\n\r\npublic class IntegerListEncodePerformanceTest extends TestCase {\r\n\r\n    final int             COUNT     = 1000 * 1;\r\n    protected List<Codec> codecList = new ArrayList<Codec>();\r\n\r\n    protected void setUp() throws Exception {\r\n        codecList.add(new JacksonCodec());\r\n        codecList.add(new FastjsonCodec());\r\n    }\r\n\r\n    public void test_0() throws Exception {\r\n        int len = 1000 * 10;\r\n        Integer[] array = new Integer[len];\r\n        for (int i = 0; i < len; ++i) {\r\n            array[i] = i;\r\n        }\r\n\r\n        List<Integer> list = Arrays.asList(array);\r\n        for (Codec codec : codecList) {\r\n            for (int i = 0; i < 5; ++i) {\r\n                encode(list, codec);\r\n            }\r\n\r\n            System.out.println();\r\n        }\r\n    }\r\n\r\n    private void encode(Object object, Codec decoder) throws Exception {\r\n        long startNano = System.nanoTime();\r\n        for (int i = 0; i < COUNT; ++i) {\r\n            decoder.encode(object);\r\n        }\r\n        long nano = System.nanoTime() - startNano;\r\n        System.out.println(decoder.getName() + \" : \\t\" + NumberFormat.getInstance().format(nano));\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/performance/JacksonGroupDecoder.java",
    "content": "package com.alibaba.json.test.performance;\r\n\r\nimport java.io.OutputStream;\r\nimport java.util.Collection;\r\n\r\nimport com.alibaba.json.test.codec.Codec;\r\nimport com.fasterxml.jackson.core.JsonFactory;\r\n\r\npublic class JacksonGroupDecoder implements Codec {\r\n\r\n    private JsonFactory f = new JsonFactory();\r\n\r\n    public String getName() {\r\n        return \"jackson-s\";\r\n    }\r\n\r\n    public <T> T decodeObject(String text, Class<T> clazz) throws Exception {\r\n        JacksonGroupParser parser = new JacksonGroupParser(f.createJsonParser(text));\r\n        return (T) parser.parseGroup();\r\n    }\r\n\r\n    public Object decodeObject(String text) throws Exception {\r\n        JacksonGroupParser parser = new JacksonGroupParser(f.createJsonParser(text));\r\n        return parser.parseGroup();\r\n    }\r\n\r\n    public Object decode(String text) throws Exception {\r\n        JacksonGroupParser parser = new JacksonGroupParser(f.createJsonParser(text));\r\n        return parser.parseGroup();\r\n    }\r\n\r\n    public <T> Collection<T> decodeArray(String text, Class<T> clazz) throws Exception {\r\n        throw new UnsupportedOperationException();\r\n    }\r\n\r\n    public String encode(Object object) throws Exception {\r\n        throw new UnsupportedOperationException();\r\n    }\r\n\r\n    public <T> T decodeObject(byte[] input, Class<T> clazz) throws Exception {\r\n        throw new UnsupportedOperationException();\r\n    }\r\n\r\n    @Override\r\n    public byte[] encodeToBytes(Object object) throws Exception {\r\n        // TODO Auto-generated method stub\r\n        return null;\r\n    }\r\n\r\n    @Override\r\n    public void encode(OutputStream out, Object object) throws Exception {\r\n        // TODO Auto-generated method stub\r\n        \r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/performance/JacksonGroupParser.java",
    "content": "package com.alibaba.json.test.performance;\r\n\r\nimport java.io.IOException;\r\nimport java.math.BigDecimal;\r\nimport java.util.Date;\r\nimport java.util.List;\r\n\r\nimport com.alibaba.fastjson.JSONException;\r\nimport com.alibaba.json.test.entity.Company;\r\nimport com.alibaba.json.test.entity.Department;\r\nimport com.alibaba.json.test.entity.Employee;\r\nimport com.alibaba.json.test.entity.Group;\r\nimport com.fasterxml.jackson.core.JsonLocation;\r\nimport com.fasterxml.jackson.core.JsonParseException;\r\nimport com.fasterxml.jackson.core.JsonParser;\r\nimport com.fasterxml.jackson.core.JsonToken;\r\n\r\npublic class JacksonGroupParser {\r\n\r\n    private JsonParser parser;\r\n\r\n    public JacksonGroupParser(JsonParser parser) throws Exception{\r\n        this.parser = parser;\r\n        parser.nextToken(); // move to the start of the\r\n    }\r\n\r\n    public Group parseGroup() throws Exception {\r\n        Group group = new Group();\r\n\r\n        accept(JsonToken.START_OBJECT);\r\n\r\n        for (;;) {\r\n            JsonToken tok = parser.getCurrentToken();\r\n\r\n            if (tok == JsonToken.END_OBJECT) {\r\n                break;\r\n            }\r\n\r\n            if (tok == JsonToken.FIELD_NAME) {\r\n                String name = parser.getCurrentName();\r\n                tok = parser.nextToken();\r\n\r\n                if (\"name\" == name) {\r\n                    group.setName(acceptString(tok));\r\n                } else if (\"description\" == name) {\r\n                    group.setDescription(acceptString(tok));\r\n                } else if (\"companies\" == name) {\r\n                    parseCompany(group.getCompanies());\r\n                } else {\r\n                    throw new RuntimeException(\"not match property : \" + name);\r\n                }\r\n            }\r\n        }\r\n\r\n        accept(JsonToken.END_OBJECT);\r\n\r\n        return group;\r\n    }\r\n\r\n    private Company parseCompany() throws Exception {\r\n        Company company = new Company();\r\n\r\n        accept(JsonToken.START_OBJECT);\r\n\r\n        for (;;) {\r\n            JsonToken tok = parser.getCurrentToken();\r\n\r\n            if (tok == JsonToken.END_OBJECT) {\r\n                break;\r\n            }\r\n\r\n            if (tok == JsonToken.FIELD_NAME) {\r\n                String name = parser.getCurrentName();\r\n                tok = parser.nextToken();\r\n\r\n                if (\"name\" == name) {\r\n                    company.setName(acceptString(tok));\r\n                } else if (\"description\" == name) {\r\n                    company.setDescription(acceptString(tok));\r\n                } else if (\"stock\" == name) {\r\n                    company.setStock(acceptString(tok));\r\n                } else if (\"id\" == name) {\r\n                    company.setId(acceptLong(tok));\r\n                } else if (\"rootDepartment\" == name) {\r\n                    company.setRootDepartment(parseDepartment());\r\n                } else {\r\n                    throw new RuntimeException(\"not match property : \" + name);\r\n                }\r\n            }\r\n        }\r\n\r\n        accept(JsonToken.END_OBJECT);\r\n\r\n        return company;\r\n    }\r\n\r\n    private Department parseDepartment() throws Exception {\r\n        accept(JsonToken.START_OBJECT);\r\n\r\n        Department company = new Department();\r\n\r\n        for (;;) {\r\n            JsonToken tok = parser.getCurrentToken();\r\n\r\n            if (tok == JsonToken.END_OBJECT) {\r\n                break;\r\n            }\r\n\r\n            if (tok == JsonToken.FIELD_NAME) {\r\n                String name = parser.getCurrentName();\r\n                tok = parser.nextToken();\r\n\r\n                if (\"name\" == name) {\r\n                    company.setName(acceptString(tok));\r\n                } else if (\"description\" == name) {\r\n                    company.setDescription(acceptString(tok));\r\n                } else if (\"id\" == name) {\r\n                    company.setId(acceptLong(tok));\r\n                } else if (\"children\" == name) {\r\n                    parseDepartment(company.getChildren());\r\n                } else if (\"members\" == name) {\r\n                    parseEmployee(company.getMembers());\r\n                } else {\r\n                    throw new RuntimeException(\"not match property : \" + name);\r\n                }\r\n            }\r\n        }\r\n\r\n        accept(JsonToken.END_OBJECT);\r\n\r\n        return company;\r\n    }\r\n\r\n    private Employee parseEmployee() throws Exception {\r\n        accept(JsonToken.START_OBJECT);\r\n\r\n        Employee emp = new Employee();\r\n\r\n        for (;;) {\r\n            JsonToken tok = parser.getCurrentToken();\r\n\r\n            if (tok == JsonToken.END_OBJECT) {\r\n                break;\r\n            }\r\n\r\n            if (tok == JsonToken.FIELD_NAME) {\r\n                String name = parser.getCurrentName();\r\n                tok = parser.nextToken();\r\n\r\n                if (\"name\" == name) {\r\n                    emp.setName(acceptString(tok));\r\n                } else if (\"description\" == name) {\r\n                    emp.setDescription(acceptString(tok));\r\n                } else if (\"number\" == name) {\r\n                    emp.setNumber(acceptString(tok));\r\n                } else if (\"id\" == name) {\r\n                    emp.setId(acceptLong(tok));\r\n                } else if (\"age\" == name) {\r\n                    emp.setAge(acceptInteger(tok));\r\n                } else if (\"salary\" == name) {\r\n                    emp.setSalary(acceptBigDecimal(tok));\r\n                } else if (\"birthdate\" == name) {\r\n                    emp.setBirthdate(new Date(acceptLong(tok)));\r\n                } else if (\"badboy\" == name) {\r\n                    emp.setBadboy(acceptBoolean(tok));\r\n                } else {\r\n                    throw new RuntimeException(\"not match property : \" + name);\r\n                }\r\n            }\r\n        }\r\n\r\n        accept(JsonToken.END_OBJECT);\r\n\r\n        return emp;\r\n    }\r\n\r\n    private void parseEmployee(List<Employee> list) throws Exception {\r\n        accept(JsonToken.START_ARRAY);\r\n        for (;;) {\r\n            JsonToken tok = parser.getCurrentToken();\r\n\r\n            if (tok == JsonToken.END_ARRAY) {\r\n                break;\r\n            }\r\n\r\n            list.add(parseEmployee());\r\n        }\r\n        accept(JsonToken.END_ARRAY);\r\n    }\r\n\r\n    private void parseDepartment(List<Department> list) throws Exception {\r\n        accept(JsonToken.START_ARRAY);\r\n        for (;;) {\r\n            JsonToken tok = parser.getCurrentToken();\r\n\r\n            if (tok == JsonToken.END_ARRAY) {\r\n                break;\r\n            }\r\n\r\n            list.add(parseDepartment());\r\n        }\r\n        accept(JsonToken.END_ARRAY);\r\n    }\r\n\r\n    private void parseCompany(List<Company> list) throws Exception {\r\n        accept(JsonToken.START_ARRAY);\r\n        for (;;) {\r\n            JsonToken tok = parser.getCurrentToken();\r\n\r\n            if (tok == JsonToken.END_ARRAY) {\r\n                break;\r\n            }\r\n\r\n            list.add(parseCompany());\r\n        }\r\n        accept(JsonToken.END_ARRAY);\r\n    }\r\n\r\n    private String acceptString() throws Exception {\r\n        if (parser.getCurrentToken() == JsonToken.VALUE_STRING) {\r\n            String stringValue = parser.getText();\r\n            parser.nextToken();\r\n            return stringValue;\r\n        } else {\r\n            throw new JSONException(\"syntax error, expect string, actual \" + parser.getCurrentToken());\r\n        }\r\n    }\r\n\r\n    private String acceptString(JsonToken token) throws Exception {\r\n        if (token == JsonToken.VALUE_STRING) {\r\n            String stringValue = parser.getText();\r\n            parser.nextToken();\r\n            return stringValue;\r\n        } else {\r\n            throw new JSONException(\"syntax error, expect string, actual \" + parser.getCurrentToken());\r\n        }\r\n    }\r\n\r\n    private Long acceptLong(JsonToken token) throws Exception {\r\n        if (token == JsonToken.VALUE_NUMBER_INT) {\r\n            long value = parser.getLongValue();\r\n            parser.nextToken();\r\n            return value;\r\n        } else {\r\n            throw new JSONException(\"syntax error, expect string, actual \" + parser.getCurrentToken());\r\n        }\r\n    }\r\n\r\n    private boolean acceptBoolean(JsonToken token) throws Exception {\r\n        if (token == JsonToken.VALUE_TRUE) {\r\n            parser.nextToken();\r\n            return true;\r\n        } else if (token == JsonToken.VALUE_FALSE) {\r\n            parser.nextToken();\r\n            return false;\r\n        } else {\r\n            throw new JSONException(\"syntax error, expect string, actual \" + parser.getCurrentToken());\r\n        }\r\n    }\r\n\r\n    private BigDecimal acceptBigDecimal(JsonToken token) throws Exception {\r\n        if (token == JsonToken.VALUE_NUMBER_FLOAT) {\r\n            BigDecimal value = parser.getDecimalValue();\r\n            parser.nextToken();\r\n            return value;\r\n        } else {\r\n            throw new JSONException(\"syntax error, expect string, actual \" + parser.getCurrentToken());\r\n        }\r\n    }\r\n\r\n    private Integer acceptInteger(JsonToken token) throws Exception {\r\n        if (token == JsonToken.VALUE_NUMBER_INT) {\r\n            int value = parser.getIntValue();\r\n            parser.nextToken();\r\n            return value;\r\n        } else {\r\n            throw new JSONException(\"syntax error, expect string, actual \" + parser.getCurrentToken());\r\n        }\r\n    }\r\n\r\n    private void accept(JsonToken token) throws Exception {\r\n        if (parser.getCurrentToken() == token) {\r\n            parser.nextToken();\r\n        } else {\r\n            throw new JSONException(\"syntax error, expect \" + token + \", actual \" + parser.getCurrentToken());\r\n        }\r\n    }\r\n\r\n    public static String getNextTextValue(String fieldName, JsonParser parser) throws JsonParseException, IOException {\r\n        JsonToken current = parser.nextToken(); // move to filed\r\n        if (current != JsonToken.FIELD_NAME || !fieldName.equals(parser.getCurrentName())) {\r\n            reportParseError(\"Error occoured while getting value by field name:\" + fieldName, parser.getCurrentLocation());\r\n        }\r\n        current = parser.nextToken(); // move to value\r\n        return parser.getText();\r\n    }\r\n\r\n    public static void reportParseError(String errorMsg, JsonLocation jsonLoc) throws JsonParseException {\r\n        throw new JsonParseException(errorMsg, jsonLoc);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/performance/JacksonPageModelParser.java",
    "content": "package com.alibaba.json.test.performance;\n\nimport static com.alibaba.json.test.performance.JacksonPageModelParser.JsonParserHelper.assertExpectedFiled;\nimport static com.alibaba.json.test.performance.JacksonPageModelParser.JsonParserHelper.assertExpectedJsonToken;\nimport static com.alibaba.json.test.performance.JacksonPageModelParser.JsonParserHelper.getNextTextValue;\n\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport com.alibaba.json.test.entity.pagemodel.LayoutInstance;\nimport com.alibaba.json.test.entity.pagemodel.PageInstance;\nimport com.alibaba.json.test.entity.pagemodel.RegionEnum;\nimport com.alibaba.json.test.entity.pagemodel.RegionInstance;\nimport com.alibaba.json.test.entity.pagemodel.SegmentInstance;\nimport com.alibaba.json.test.entity.pagemodel.WidgetInstance;\nimport com.fasterxml.jackson.core.JsonFactory;\nimport com.fasterxml.jackson.core.JsonLocation;\nimport com.fasterxml.jackson.core.JsonParseException;\nimport com.fasterxml.jackson.core.JsonParser;\nimport com.fasterxml.jackson.core.JsonToken;\n\npublic class JacksonPageModelParser {\n\n    /**\n     * @param content\n     * @throws JsonParseException\n     * @throws IOException\n     */\n    public PageInstance parse(String content) throws JsonParseException, IOException {\n        JsonFactory f = new JsonFactory();\n        JsonParser parser = f.createJsonParser(content);\n\n        JsonToken current = parser.nextToken(); // move to the start of the\n        // object\n\n        String instanceId = getNextTextValue(\"sid\", parser); // get instanceId\n\n        String pageId = getNextTextValue(\"cid\", parser); // get pageId\n\n        current = parser.nextToken(); // move to field: segments\n        assertExpectedFiled(parser.getCurrentName(), \"segments\", parser.getCurrentLocation());\n\n        PageInstance pageInstance = new PageInstance();\n        pageInstance.setCid(pageId);\n        pageInstance.setSid(Long.valueOf(instanceId));\n        pageInstance.setSegments(parseSegments(parser));\n        return pageInstance;\n        // 构建组件树，用于递归渲染\n        // pageInstance.buildComponentTree();\n\n    }\n\n    /**\n     * @param parser\n     * @throws JsonParseException\n     * @throws IOException\n     */\n    private List<SegmentInstance> parseSegments(JsonParser parser) throws JsonParseException, IOException {\n        JsonToken current = parser.nextToken();\n\n        assertExpectedJsonToken(current, JsonToken.START_ARRAY, parser.getCurrentLocation());\n        List<SegmentInstance> instances = new ArrayList<SegmentInstance>();\n        while ((current = parser.nextToken()) != JsonToken.END_ARRAY) {\n\n            assertExpectedJsonToken(current, JsonToken.START_OBJECT, parser.getCurrentLocation());\n\n            String segmentId = getNextTextValue(\"cid\", parser); // get pageId\n\n            current = parser.nextToken(); // move to field: layouts\n            assertExpectedFiled(parser.getCurrentName(), \"layouts\", parser.getCurrentLocation());\n            SegmentInstance instance = new SegmentInstance();\n            instance.setLayouts(parseLayouts(parser, segmentId));\n            instances.add(instance);\n\n            assertExpectedJsonToken((current = parser.nextToken()), JsonToken.END_OBJECT, parser.getCurrentLocation());\n\n        }\n        return instances;\n\n    }\n\n    /**\n     * @param parser\n     * @param segmentId\n     * @throws JsonParseException\n     * @throws IOException\n     */\n    private List<LayoutInstance> parseLayouts(JsonParser parser, String segment) throws JsonParseException, IOException {\n\n        JsonToken current = parser.nextToken();\n\n        assertExpectedJsonToken(current, JsonToken.START_ARRAY, parser.getCurrentLocation());\n\n        List<LayoutInstance> layoutInThisSegment = new ArrayList<LayoutInstance>();\n\n        while ((current = parser.nextToken()) != JsonToken.END_ARRAY) {\n\n            assertExpectedJsonToken(current, JsonToken.START_OBJECT, parser.getCurrentLocation());\n\n            String instanceId = getNextTextValue(\"sid\", parser); // get\n                                                                 // instanceId\n            String layoutId = getNextTextValue(\"cid\", parser); // get\n                                                               // layoutId\n\n            LayoutInstance layoutInstance = new LayoutInstance();\n            layoutInstance.setCid(layoutId);\n            layoutInstance.setSid(Long.valueOf(instanceId));\n            layoutInThisSegment.add(layoutInstance);\n\n            current = parser.nextToken(); // move to field: regions\n            assertExpectedFiled(parser.getCurrentName(), \"regions\", parser.getCurrentLocation());\n\n            layoutInstance.setRegions(parseRegions(parser, segment));\n\n            assertExpectedJsonToken((current = parser.nextToken()), JsonToken.END_OBJECT, parser.getCurrentLocation());\n        }\n        return layoutInThisSegment;\n\n    }\n\n    /**\n     * @param parser\n     * @param layoutId\n     * @throws JsonParseException\n     * @throws IOException\n     */\n    private List<RegionInstance> parseRegions(JsonParser parser, String segment) throws JsonParseException, IOException {\n\n        JsonToken current = parser.nextToken();\n\n        assertExpectedJsonToken(current, JsonToken.START_ARRAY, parser.getCurrentLocation());\n        List<RegionInstance> instances = new ArrayList<RegionInstance>();\n        while ((current = parser.nextToken()) != JsonToken.END_ARRAY) {\n\n            assertExpectedJsonToken(current, JsonToken.START_OBJECT, parser.getCurrentLocation());\n\n            String regionId = getNextTextValue(\"cid\", parser); // get regionId\n            RegionEnum region = RegionEnum.valueOf(regionId);\n\n            current = parser.nextToken(); // move to field: widgtes\n            assertExpectedFiled(parser.getCurrentName(), \"widgets\", parser.getCurrentLocation());\n            RegionInstance instance = new RegionInstance();\n            instance.setWidgtes(parseWidgets(parser, region));\n            instances.add(instance);\n\n            assertExpectedJsonToken((current = parser.nextToken()), JsonToken.END_OBJECT, parser.getCurrentLocation());\n        }\n        return instances;\n\n    }\n\n    /**\n     * @param parser\n     * @param layoutId\n     * @param regionId\n     * @throws JsonParseException\n     * @throws IOException\n     */\n    private List<WidgetInstance> parseWidgets(JsonParser parser, RegionEnum region) throws JsonParseException, IOException {\n\n        JsonToken current = parser.nextToken();\n\n        assertExpectedJsonToken(current, JsonToken.START_ARRAY, parser.getCurrentLocation());\n\n        List<WidgetInstance> widgetInThisRegion = new ArrayList<WidgetInstance>();\n\n        while ((current = parser.nextToken()) != JsonToken.END_ARRAY) {\n\n            assertExpectedJsonToken(current, JsonToken.START_OBJECT, parser.getCurrentLocation());\n\n            String instanceId = getNextTextValue(\"sid\", parser); // get\n                                                                 // instanceId\n            String widgetId = getNextTextValue(\"cid\", parser); // get\n                                                               // widgetId\n\n            WidgetInstance widgetInstance = new WidgetInstance();\n            widgetInstance.setCid(widgetId);\n            widgetInstance.setSid(Long.valueOf(instanceId));\n\n            widgetInThisRegion.add(widgetInstance);\n\n            assertExpectedJsonToken((current = parser.nextToken()), JsonToken.END_OBJECT, parser.getCurrentLocation());\n        }\n        return widgetInThisRegion;\n\n    }\n\n    public static class JsonParserHelper {\n\n        public static String getNextTextValue(String fieldName, JsonParser parser) throws JsonParseException, IOException {\n\n            JsonToken current = parser.nextToken(); // move to filed\n            if (current != JsonToken.FIELD_NAME || !fieldName.equals(parser.getCurrentName())) {\n                reportParseError(\"Error occoured while getting value by field name:\" + fieldName, parser.getCurrentLocation());\n            }\n            current = parser.nextToken(); // move to value\n            return parser.getText();\n\n        }\n\n        public static void assertExpectedJsonToken(JsonToken object, JsonToken expected, JsonLocation jsonLoc) throws JsonParseException {\n            if (object != expected) {\n                reportParseError(buildFailMessage(object, expected), jsonLoc);\n            }\n        }\n\n        public static void assertExpectedFiled(String object, String expected, JsonLocation jsonLoc) throws JsonParseException {\n            if (!expected.equals(object)) {\n                reportParseError(buildFailMessage(object, expected), jsonLoc);\n            }\n        }\n\n        private static String buildFailMessage(Object object, Object expected) {\n            StringBuilder sb = new StringBuilder();\n            sb.append(\"get [\").append(object).append(\"] but expect [\").append(expected).append(\"] !\");\n            return sb.toString();\n        }\n\n        public static void reportParseError(String errorMsg, JsonLocation jsonLoc) throws JsonParseException {\n\n            throw new JsonParseException(errorMsg, jsonLoc);\n\n        }\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/performance/JsonitorCollisionTest.java",
    "content": "package com.alibaba.json.test.performance;\n\n/**\n * Created by wenshao on 08/01/2017.\n */\npublic class JsonitorCollisionTest {\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/performance/ObjectDecodePerformanceTest.java",
    "content": "package com.alibaba.json.test.performance;\r\n\r\nimport java.io.InputStream;\r\nimport java.text.NumberFormat;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport org.apache.commons.io.IOUtils;\r\n\r\nimport com.alibaba.json.test.codec.Codec;\r\nimport com.alibaba.json.test.codec.FastjsonCodec;\r\nimport com.alibaba.json.test.codec.JacksonCodec;\r\nimport com.alibaba.json.test.codec.JsonLibCodec;\r\nimport com.alibaba.json.test.codec.SimpleJsonCodec;\r\nimport com.alibaba.json.test.entity.Group;\r\n\r\npublic class ObjectDecodePerformanceTest extends TestCase {\r\n\r\n    private String    text;\r\n    private final int COUNT = 1000 * 100;\r\n\r\n    protected void setUp() throws Exception {\r\n        text = \"{\\\"badboy\\\":true,\\\"description\\\":\\\"神棍敌人姐\\\",\\\"name\\\":\\\"校长\\\",\\\"age\\\":3,\\\"birthdate\\\":1293278091773,\\\"salary\\\":123456789.0123}\";\r\n\r\n        String resource = \"json/group.json\";\r\n        InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource);\r\n        text = IOUtils.toString(is);\r\n        is.close();\r\n    }\r\n\r\n    public void test_decodeObject() throws Exception {\r\n        List<Codec> decoders = new ArrayList<Codec>();\r\n        decoders.add(new JacksonGroupDecoder());\r\n        decoders.add(new FastjsonCodec());\r\n        decoders.add(new JacksonCodec());\r\n        decoders.add(new SimpleJsonCodec());\r\n        decoders.add(new JsonLibCodec());\r\n\r\n        for (int i = 0; i < 20; ++i) {\r\n            for (Codec decoder : decoders) {\r\n                decodeToJavaBean(text, decoder);\r\n            }\r\n            System.out.println();\r\n        }\r\n        System.out.println();\r\n        System.out.println(text);\r\n    }\r\n\r\n    public void decodeToJavaBean(String text, Codec decoder) throws Exception {\r\n        long startNano = System.nanoTime();\r\n        for (int i = 0; i < COUNT; ++i) {\r\n            decoder.decodeObject(text, Group.class);\r\n        }\r\n        long nano = System.nanoTime() - startNano;\r\n        System.out.println(decoder.getName() + \" : \\t\" + NumberFormat.getInstance().format(nano));\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/performance/ObjectEncodePerformanceTest.java",
    "content": "package com.alibaba.json.test.performance;\r\n\r\nimport java.math.BigDecimal;\r\nimport java.text.NumberFormat;\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport java.util.concurrent.atomic.AtomicLong;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport com.alibaba.json.test.codec.Codec;\r\nimport com.alibaba.json.test.codec.FastjsonCodec;\r\nimport com.alibaba.json.test.codec.JacksonCodec;\r\nimport com.alibaba.json.test.entity.Company;\r\nimport com.alibaba.json.test.entity.Department;\r\nimport com.alibaba.json.test.entity.Employee;\r\nimport com.alibaba.json.test.entity.Group;\r\n\r\npublic class ObjectEncodePerformanceTest extends TestCase {\r\n\r\n    private final int  COUNT  = 1000 * 100;\r\n    private AtomicLong idSeed = new AtomicLong();\r\n\r\n    private Object     object;\r\n\r\n    protected void setUp() throws Exception {\r\n        this.object = createObject();\r\n    }\r\n\r\n    public void test_decodeObject() throws Exception {\r\n        List<Codec> decoders = new ArrayList<Codec>();\r\n        decoders.add(new JacksonCodec());\r\n        decoders.add(new FastjsonCodec());\r\n        // decoders.add(new SimpleJsonDecoderImpl());\r\n        // decoders.add(new JsonLibDecoderImpl());\r\n\r\n        for (Codec decoder : decoders) {\r\n            for (int i = 0; i < 10; ++i) {\r\n                encode(object, decoder);\r\n            }\r\n            System.out.println();\r\n        }\r\n    }\r\n\r\n    public void encode(Object object, Codec decoder) throws Exception {\r\n        long startNano = System.nanoTime();\r\n        for (int i = 0; i < COUNT; ++i) {\r\n            decoder.encode(object);\r\n        }\r\n        long nano = System.nanoTime() - startNano;\r\n        System.out.println(decoder.getName() + \" : \\t\" + NumberFormat.getInstance().format(nano));\r\n    }\r\n\r\n    private Object createObject() {\r\n        Group group = new Group();\r\n\r\n        group.setName(\"Alibaba Group\");\r\n        group.setDescription(\"Alibaba Group makes it easy for anyone to buy or sell online anywhere in the world. \");\r\n\r\n        {\r\n            Company company = new Company();\r\n            company.setId(createId());\r\n            company.setName(\"Alibaba.com\");\r\n            company.setDescription(\"Global leader in e-commerce for small businesses\");\r\n            company.setStock(\"1688.HK\");\r\n            group.getCompanies().add(company);\r\n\r\n            Department root = new Department();\r\n            root.setId(createId());\r\n            root.setName(\"B2B\");\r\n            company.setRootDepartment(root);\r\n\r\n            {\r\n                Department cbu = new Department();\r\n                cbu.setId(createId());\r\n                cbu.setName(\"CBU\");\r\n\r\n                root.getChildren().add(cbu);\r\n\r\n                Employee emp0 = new Employee();\r\n                emp0.setName(\"校长\");\r\n                emp0.setDescription(\"神棍敌人姐\");\r\n                emp0.setAge(3);\r\n                emp0.setSalary(new BigDecimal(\"123456789.0123\"));\r\n                emp0.setBirthdate(new Date());\r\n                emp0.setBadboy(true);\r\n\r\n                cbu.getMembers().add(emp0);\r\n            }\r\n            {\r\n                Department icbu = new Department();\r\n                icbu.setId(createId());\r\n                icbu.setName(\"ICBU\");\r\n\r\n                root.getChildren().add(icbu);\r\n            }\r\n        }\r\n\r\n        {\r\n            Company company = new Company();\r\n            company.setId(createId());\r\n            company.setName(\"Taobao\");\r\n            company.setDescription(\"China's largest online retail website and one-stop platform for shopping, socializing and information sharing\");\r\n            group.getCompanies().add(company);\r\n        }\r\n        {\r\n            Company company = new Company();\r\n            company.setId(createId());\r\n            company.setName(\"Alipay\");\r\n            company.setDescription(\"China's leading third-party online payment platform\");\r\n            group.getCompanies().add(company);\r\n        }\r\n        {\r\n            Company company = new Company();\r\n            company.setId(createId());\r\n            company.setName(\"Alibaba Cloud Computing\");\r\n            company.setDescription(\"Developer of advanced data-centric cloud computing services\");\r\n            group.getCompanies().add(company);\r\n        }\r\n        {\r\n            Company company = new Company();\r\n            company.setId(createId());\r\n            company.setName(\"China Yahoo\");\r\n            company.setDescription(\"One of China's leading Internet portals\");\r\n            group.getCompanies().add(company);\r\n        }\r\n\r\n        return group;\r\n    }\r\n\r\n    private Long createId() {\r\n        return idSeed.incrementAndGet();\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/performance/PageModelPerformanceTest.java",
    "content": "package com.alibaba.json.test.performance;\r\n\r\nimport java.io.InputStream;\r\nimport java.text.NumberFormat;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport org.apache.commons.io.IOUtils;\r\n\r\nimport com.alibaba.json.test.codec.Codec;\r\nimport com.alibaba.json.test.codec.FastjsonCodec;\r\nimport com.alibaba.json.test.codec.JacksonCodec;\r\nimport com.alibaba.json.test.entity.pagemodel.PageInstance;\r\n\r\npublic class PageModelPerformanceTest extends TestCase {\r\n\r\n    private String    text;\r\n    private final int COUNT = 1000;\r\n\r\n    protected void setUp() throws Exception {\r\n        text = \"{\\\"badboy\\\":true,\\\"description\\\":\\\"神棍敌人姐\\\",\\\"name\\\":\\\"校长\\\",\\\"age\\\":3,\\\"birthdate\\\":1293278091773,\\\"salary\\\":123456789.0123}\";\r\n\r\n        String resource = \"json/page_model_cached.json\";\r\n        InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource);\r\n        text = IOUtils.toString(is);\r\n        is.close();\r\n    }\r\n\r\n    public void test_decodeObject() throws Exception {\r\n        List<Codec> decoders = new ArrayList<Codec>();\r\n        decoders.add(new JacksonCodec());\r\n        decoders.add(new FastjsonCodec());\r\n\r\n        for (int i = 0; i < 20; ++i) {\r\n            for (Codec decoder : decoders) {\r\n                decodeToJavaBean(text, decoder);\r\n            }\r\n            System.out.println();\r\n        }\r\n        System.out.println();\r\n        // System.out.println(text);\r\n    }\r\n\r\n    public void decodeToJavaBean(String text, Codec decoder) throws Exception {\r\n        long startNano = System.nanoTime();\r\n        for (int i = 0; i < COUNT; ++i) {\r\n            decoder.decodeObject(text, PageInstance.class);\r\n        }\r\n        long nano = System.nanoTime() - startNano;\r\n        System.out.println(decoder.getName() + \" : \\t\" + NumberFormat.getInstance().format(nano));\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/performance/case1/GenerateTest.java",
    "content": "package com.alibaba.json.test.performance.case1;\r\n\r\nimport java.io.File;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport org.apache.commons.io.FileUtils;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONObject;\r\n\r\npublic class GenerateTest extends TestCase {\r\n\r\n    public void testGenInt() throws Exception {\r\n        JSONObject json = new JSONObject(true);\r\n        for (int i = 0; i < 100; ++i) {\r\n            json.put(\"f\" + i, i);\r\n        }\r\n        String text = JSON.toJSONString(json, false);\r\n        System.out.println(text);\r\n        FileUtils.writeStringToFile(new File(\"d:/int_array_1000.json\"), text);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/performance/case1/IntDecoderPerformanceTest.java",
    "content": "package com.alibaba.json.test.performance.case1;\r\n\r\nimport java.io.InputStream;\r\nimport java.math.BigDecimal;\r\nimport java.text.NumberFormat;\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.List;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport org.apache.commons.io.IOUtils;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.json.test.codec.Codec;\r\nimport com.alibaba.json.test.codec.FastjsonCodec;\r\nimport com.alibaba.json.test.codec.GsonCodec;\r\nimport com.alibaba.json.test.codec.JacksonCodec;\r\nimport com.alibaba.json.test.codec.JsonLibCodec;\r\nimport com.alibaba.json.test.codec.SimpleJsonCodec;\r\n\r\npublic class IntDecoderPerformanceTest extends TestCase {\r\n\r\n    private String    text;\r\n    private final int COUNT = 1000 * 100;\r\n\r\n    protected void setUp() throws Exception {\r\n        String resource;\r\n        resource = \"json/int_100.json\";\r\n        resource = \"json/object_f_int_1000.json\";\r\n        // resource = \"json/string_array_10000.json\";\r\n        InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource);\r\n        text = IOUtils.toString(is);\r\n        is.close();\r\n\r\n        // text =\r\n        // \"{\\\"badboy\\\":true,\\\"description\\\":\\\"神棍敌人姐\\\",\\\"name\\\":\\\"校长\\\",\\\"age\\\":3,\\\"birthdate\\\":1293278091773,\\\"salary\\\":123456789.0123}\";\r\n    }\r\n\r\n    public void test_performance() throws Exception {\r\n\r\n        JSON.parse(\"true\");\r\n\r\n        List<Codec> decoders = new ArrayList<Codec>();\r\n        decoders.add(new FastjsonCodec());\r\n        decoders.add(new JacksonCodec());\r\n        decoders.add(new SimpleJsonCodec());\r\n        decoders.add(new JsonLibCodec());\r\n        decoders.add(new GsonCodec());\r\n\r\n        for (int i = 0; i < 4; ++i) {\r\n            for (Codec decoder : decoders) {\r\n                decode(text, decoder);\r\n                // decodeToJavaBean(text, decoder);\r\n            }\r\n            System.out.println();\r\n        }\r\n        System.out.println();\r\n        System.out.println(text);\r\n    }\r\n\r\n    private void decode(String text, Codec decoder) throws Exception {\r\n        long startNano = System.nanoTime();\r\n        for (int i = 0; i < COUNT; ++i) {\r\n            decoder.decode(text);\r\n        }\r\n        long nano = System.nanoTime() - startNano;\r\n        System.out.println(decoder.getName() + \" : \\t\" + NumberFormat.getInstance().format(nano));\r\n    }\r\n\r\n    public static class Person {\r\n\r\n        private String     name;\r\n        private int        age;\r\n        private BigDecimal salary;\r\n        private Date       birthdate;\r\n        private boolean    old;\r\n        private String     description;\r\n\r\n        public String getDescription() {\r\n            return description;\r\n        }\r\n\r\n        public void setDescription(String description) {\r\n            this.description = description;\r\n        }\r\n\r\n        public boolean isOld() {\r\n            return old;\r\n        }\r\n\r\n        public void setOld(boolean old) {\r\n            this.old = old;\r\n        }\r\n\r\n        public Date getBirthdate() {\r\n            return birthdate;\r\n        }\r\n\r\n        public void setBirthdate(Date birthdate) {\r\n            this.birthdate = birthdate;\r\n        }\r\n\r\n        public String getName() {\r\n            return name;\r\n        }\r\n\r\n        public void setName(String name) {\r\n            this.name = name;\r\n        }\r\n\r\n        public int getAge() {\r\n            return age;\r\n        }\r\n\r\n        public void setAge(int age) {\r\n            this.age = age;\r\n        }\r\n\r\n        public BigDecimal getSalary() {\r\n            return salary;\r\n        }\r\n\r\n        public void setSalary(BigDecimal salary) {\r\n            this.salary = salary;\r\n        }\r\n\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/performance/case1/IntObjectDecodePerformanceTest.java",
    "content": "package com.alibaba.json.test.performance.case1;\r\n\r\nimport java.io.InputStream;\r\nimport java.text.NumberFormat;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport org.apache.commons.io.IOUtils;\r\n\r\nimport com.alibaba.json.test.codec.Codec;\r\nimport com.alibaba.json.test.codec.FastjsonCodec;\r\nimport com.alibaba.json.test.codec.JacksonCodec;\r\nimport com.alibaba.json.test.entity.case1.LongObject_100_Entity;\r\n\r\npublic class IntObjectDecodePerformanceTest extends TestCase {\r\n\r\n    private String    text;\r\n    private final int COUNT = 1000 * 100;\r\n\r\n    protected void setUp() throws Exception {\r\n        String resource = \"json/object_f_int_1000.json\";\r\n        InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource);\r\n        text = IOUtils.toString(is);\r\n        is.close();\r\n    }\r\n\r\n    public void test_decodeObject() throws Exception {\r\n        List<Codec> decoders = new ArrayList<Codec>();\r\n        decoders.add(new FastjsonCodec());\r\n        decoders.add(new JacksonCodec());\r\n\r\n        for (int i = 0; i < 10; ++i) {\r\n            for (Codec decoder : decoders) {\r\n                decodeToJavaBean(text, decoder);\r\n            }\r\n            System.out.println();\r\n        }\r\n        System.out.println();\r\n        System.out.println(text);\r\n    }\r\n\r\n    public void decodeToJavaBean(String text, Codec decoder) throws Exception {\r\n        long startNano = System.nanoTime();\r\n        for (int i = 0; i < COUNT; ++i) {\r\n            decoder.decodeObject(text, LongObject_100_Entity.class);\r\n            // decoder.decode(text);\r\n        }\r\n        long nano = System.nanoTime() - startNano;\r\n        System.out.println(decoder.getName() + \" : \\t\" + NumberFormat.getInstance().format(nano));\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/performance/case1/IntObjectEncodePerformanceTest.java",
    "content": "package com.alibaba.json.test.performance.case1;\r\n\r\nimport java.io.InputStream;\r\nimport java.text.NumberFormat;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\nimport junit.framework.TestCase;\r\n\r\nimport org.apache.commons.io.IOUtils;\r\n\r\nimport com.alibaba.json.test.codec.Codec;\r\nimport com.alibaba.json.test.codec.SimpleJsonCodec;\r\n\r\npublic class IntObjectEncodePerformanceTest extends TestCase {\r\n\r\n    private String    text;\r\n    private final int COUNT = 1000 * 100;\r\n    private Object    object;\r\n\r\n    protected void setUp() throws Exception {\r\n        String resource = \"json/int_array_1000.json\";\r\n        InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource);\r\n        text = IOUtils.toString(is);\r\n        is.close();\r\n\r\n        // text = \"{\\\"age\\\":9223372036854775807}\";\r\n        // object = JSON.parseObject(text, Long_100_Entity.class);\r\n        // object = JSON.parseArray(text);\r\n        {\r\n            ArrayList<Long> array = new ArrayList<Long>();\r\n            for (long i = 0; i < 1000; ++i) {\r\n                array.add(i);\r\n            }\r\n            object = array;\r\n        }\r\n    }\r\n\r\n    public void test_encodeObject() throws Exception {\r\n        List<Codec> decoders = new ArrayList<Codec>();\r\n        // decoders.add(new FastjsonDecoderImpl());\r\n        // decoders.add(new JacksonDecoderImpl());\r\n        decoders.add(new SimpleJsonCodec());\r\n        // decoders.add(new JsonLibDecoderImpl());\r\n\r\n        for (int i = 0; i < 10; ++i) {\r\n            for (Codec decoder : decoders) {\r\n                encode(object, decoder);\r\n            }\r\n            // System.out.println();\r\n        }\r\n        // System.out.println();\r\n        // System.out.println(text);\r\n    }\r\n\r\n    public void encode(Object object, Codec decoder) throws Exception {\r\n        long startNano = System.nanoTime();\r\n        for (int i = 0; i < COUNT; ++i) {\r\n            decoder.encode(object);\r\n        }\r\n        long nano = System.nanoTime() - startNano;\r\n        System.out.println(decoder.getName() + \" : \\t\" + NumberFormat.getInstance().format(nano));\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/ryu/RyuDoubleTest.java",
    "content": "package com.alibaba.json.test.ryu;\n\nimport com.alibaba.fastjson.util.RyuDouble;\nimport junit.framework.TestCase;\n\nimport java.util.Random;\n\npublic class RyuDoubleTest extends TestCase {\n    public void test_for_ryu() throws Exception {\n        Random random = new Random();\n\n        long start = System.currentTimeMillis();\n        for (int i = 0; i < 1000 * 1000 * 100; ++i) {\n            double value = random.nextDouble();\n\n            String str1 = Double.toString(value);\n            String str2 = RyuDouble.toString(value);\n\n            if (!str1.equals(str2)) {\n                System.out.println(str1 + \" -> \" + str2);\n                assertTrue(Double.parseDouble(str1) == Double.parseDouble(str2));\n            }\n        }\n        long millis = System.currentTimeMillis() - start;\n        System.out.println(\"millis : \" + millis);\n    }\n\n    public void test_0() throws Exception {\n        double[] values = new double[] {\n                Double.NaN,\n                Double.NEGATIVE_INFINITY,\n                Double.POSITIVE_INFINITY,\n                Double.MIN_VALUE,\n                Double.MAX_VALUE,\n\n                0,\n                0.0d,\n                -0.0d,\n                Double.longBitsToDouble(0x8000000000000000L),\n                Double.NaN,\n\n                Long.MAX_VALUE,\n                Long.MIN_VALUE,\n                Integer.MAX_VALUE,\n                Integer.MIN_VALUE,\n                Double.longBitsToDouble(0x0010000000000000L),\n\n                9999999.999999998d,\n                0.0009999999999999998d,\n                1.0E7d,\n                0.001d,\n                Double.longBitsToDouble(0x7fefffffffffffffL),\n\n                Double.longBitsToDouble(1),\n                -2.109808898695963E16,\n                4.940656E-318d,\n                1.18575755E-316d,\n                2.989102097996E-312d,\n                9.0608011534336E15d,\n                4.708356024711512E18,\n                9.409340012568248E18,\n                1.8531501765868567E21,\n                -3.347727380279489E33,\n                1.9430376160308388E16,\n                -6.9741824662760956E19,\n                4.3816050601147837E18,\n        };\n\n        for (int i = 0; i < values.length; i++) {\n            double value = values[i];\n            String str1 = Double.toString(value);\n            String str2 = RyuDouble.toString(value);\n\n            if (!str1.equals(str2)) {\n                boolean cmp = (Double.parseDouble(str1) == Double.parseDouble(str2));\n                System.out.println(str1 + \" -> \" + str2 + \" : \" + cmp);\n                assertTrue(cmp);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/ryu/RyuFloatTest.java",
    "content": "package com.alibaba.json.test.ryu;\n\nimport com.alibaba.fastjson.util.RyuDouble;\nimport com.alibaba.fastjson.util.RyuFloat;\nimport junit.framework.TestCase;\n\nimport java.util.Random;\n\npublic class RyuFloatTest extends TestCase {\n    public void test_for_ryu() throws Exception {\n        Random random = new Random();\n\n        for (int i = 0; i < 1000 * 1000 * 1000; ++i) {\n            float value = random.nextFloat();\n\n            String str1 = Float.toString(value);\n            String str2 = RyuFloat.toString(value);\n\n            if (!str1.equals(str2)) {\n                boolean cmp = (Float.parseFloat(str1) == Float.parseFloat(str2));\n                System.out.println(str1 + \" -> \" + str2 + \" : \" + cmp);\n                assertTrue(cmp);\n//                assertTrue(Float.parseFloat(str1) == Float.parseFloat(str2));\n            }\n        }\n    }\n\n    public void test_0() throws Exception {\n        float[] values = new float[] {\n                Float.NaN,\n                Float.NEGATIVE_INFINITY,\n                Float.POSITIVE_INFINITY,\n                Float.MIN_VALUE,\n                Float.MAX_VALUE,\n                0,\n                0.0f,\n                -0.0f,\n                Integer.MAX_VALUE,\n                Integer.MIN_VALUE,\n                Long.MAX_VALUE,\n                Long.MIN_VALUE,\n                Float.intBitsToFloat(0x80000000),\n                1.0f,\n                -1f,\n                Float.intBitsToFloat(0x00800000),\n                1.0E7f,\n                9999999.0f,\n                0.001f,\n                0.0009999999f,\n                Float.intBitsToFloat(0x7f7fffff),\n                Float.intBitsToFloat(0x00000001),\n                3.3554448E7f,\n                8.999999E9f,\n                3.4366717E10f,\n                0.33007812f,\n                Float.intBitsToFloat(0x5D1502F9),\n                Float.intBitsToFloat(0x5D9502F9),\n                Float.intBitsToFloat(0x5E1502F9),\n                4.7223665E21f,\n                8388608.0f,\n                1.6777216E7f,\n                3.3554436E7f,\n                6.7131496E7f,\n                1.9310392E-38f,\n                -2.47E-43f,\n                1.993244E-38f,\n                4103.9003f,\n                5.3399997E9f,\n                6.0898E-39f,\n                0.0010310042f,\n                2.8823261E17f,\n                7.038531E-26f,\n                9.2234038E17f,\n                6.7108872E7f,\n                1.0E-44f,\n                2.816025E14f,\n                9.223372E18f,\n                1.5846085E29f,\n                1.1811161E19f,\n                5.368709E18f,\n                4.6143165E18f,\n                0.007812537f,\n                1.4E-45f,\n                1.18697724E20f,\n                1.00014165E-36f,\n                200f,\n                3.3554432E7f\n\n        };\n\n        for (float value : values) {\n            String str1 = Float.toString(value);\n            String str2 = RyuFloat.toString(value);\n\n            if (!str1.equals(str2)) {\n                boolean cmp = (Float.parseFloat(str1) == Float.parseFloat(str2));\n                System.out.println(str1 + \" -> \" + str2 + \" : \" + cmp);\n                assertTrue(cmp);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/tmall/EngineResult.java",
    "content": "package com.alibaba.json.test.tmall;\r\n\r\nimport com.alibaba.fastjson.annotation.JSONField;\r\n\r\n/**\r\n * User: jingxian.lzg\r\n * Date: 2015/9/1\r\n * Time: 16:55\r\n */\r\npublic class EngineResult {\r\n    @JSONField(name = \"pinglun\")\r\n    private RateResult rateResult;\r\n\r\n    public RateResult getRateResult () {\r\n        return rateResult;\r\n    }\r\n\r\n    public void setRateResult (RateResult rateResult) {\r\n        this.rateResult = rateResult;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/tmall/Head.java",
    "content": "/**\r\n * Taobao.com Inc.\r\n * Copyright (c) 2003-2012 All Rights Reserved.\r\n */\r\npackage com.alibaba.json.test.tmall;\r\n\r\nimport com.alibaba.fastjson.annotation.JSONField;\r\nimport com.alibaba.fastjson.annotation.JSONType;\r\n\r\n/**\r\n * ͷ����Ϣ\r\n * @author benxiang.hhq\r\n * @version $Id: Head.java, v 0.1 2012-12-26 ����5:48:58 benxiang.hhq Exp $\r\n */\r\npublic class Head {\r\n    @JSONField(name = \"Status\")\r\n    private String status;\r\n    @JSONField(name = \"SearchTime\")\r\n    private String searchTime;\r\n    @JSONField(name = \"Version\")\r\n    private String version;\r\n    @JSONField(name = \"DocsFound\")\r\n    private String docsFound;\r\n    @JSONField(name = \"DocsRestrict\")\r\n    private String docsRestrict;\r\n    @JSONField(name = \"DocsReturn\")\r\n    private String docsReturn;\r\n    @JSONField(name = \"DocsSearch\")\r\n    private String docsSearch;\r\n    @JSONField(name=\"HasPrePage\")\r\n    private String hasPrePage;\r\n\t@JSONField(name=\"HasNextPage\")\r\n    private String hasNextPage;\r\n\tpublic String getHasPrePage() {\r\n\t\treturn hasPrePage;\r\n\t}\r\n\tpublic void setHasPrePage(String hasPrePage) {\r\n\t\tthis.hasPrePage = hasPrePage;\r\n\t}\r\n\tpublic String getHasNextPage() {\r\n\t\treturn hasNextPage;\r\n\t}\r\n\tpublic void setHasNextPage(String hasNextPage) {\r\n\t\tthis.hasNextPage = hasNextPage;\r\n\t}\r\n    public String getDocsFound() {\r\n        return docsFound;\r\n    }\r\n    public void setDocsFound(String docsFound) {\r\n        this.docsFound = docsFound;\r\n    }\r\n    public String getDocsRestrict() {\r\n        return docsRestrict;\r\n    }\r\n    public void setDocsRestrict(String docsRestrict) {\r\n        this.docsRestrict = docsRestrict;\r\n    }\r\n    public String getDocsReturn() {\r\n        return docsReturn;\r\n    }\r\n    public void setDocsReturn(String docsReturn) {\r\n        this.docsReturn = docsReturn;\r\n    }\r\n    public String getDocsSearch() {\r\n        return docsSearch;\r\n    }\r\n    public void setDocsSearch(String docsSearch) {\r\n        this.docsSearch = docsSearch;\r\n    }\r\n    public String getStatus() {\r\n        return status;\r\n    }\r\n    public void setStatus(String status) {\r\n        this.status = status;\r\n    }\r\n    public String getSearchTime() {\r\n        return searchTime;\r\n    }\r\n    public void setSearchTime(String searchTime) {\r\n        this.searchTime = searchTime;\r\n    }\r\n    public String getVersion() {\r\n        return version;\r\n    }\r\n    public void setVersion(String version) {\r\n        this.version = version;\r\n    }\r\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/tmall/RateResult.java",
    "content": "package com.alibaba.json.test.tmall;\r\n\r\nimport com.alibaba.fastjson.annotation.JSONField;\r\n\r\nimport java.util.List;\r\n\r\n/**\r\n * User: jingxian.lzg\r\n * Date: 2015/9/1\r\n * Time: 14:51\r\n */\r\npublic class RateResult {\r\n    @JSONField(name = \"head\")\r\n    private Head head;\r\n\r\n    @JSONField(name = \"auctions\")\r\n    private List<RateSearchItemDO> comments;\r\n\r\n    @JSONField(name = \"statistics\")\r\n    private String stats;\r\n\r\n    public Head getHead () {\r\n        return head;\r\n    }\r\n\r\n    public void setHead (Head head) {\r\n        this.head = head;\r\n    }\r\n\r\n    public List<RateSearchItemDO> getComments () {\r\n        return comments;\r\n    }\r\n\r\n    public void setComments (List<RateSearchItemDO> comments) {\r\n        this.comments = comments;\r\n    }\r\n\r\n    public String getStats () {\r\n        return stats;\r\n    }\r\n\r\n    public void setStats (String stats) {\r\n        this.stats = stats;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/tmall/RateSearchItemDO.java",
    "content": "package com.alibaba.json.test.tmall;\r\n\r\nimport com.alibaba.fastjson.annotation.JSONField;\r\n\r\n/**\r\n * ���������������\r\n * User: jingxian.lzg\r\n * Date: 2015/8/17\r\n * Time: 16:26\r\n */\r\npublic class RateSearchItemDO {\r\n    /**\r\n     * ����id\r\n     */\r\n    @JSONField(name = \"feed_id\")\r\n    private long feedId;\r\n    /**\r\n     * ��Ʒid\r\n     */\r\n    @JSONField(name = \"item_id\")\r\n    private long aucNumId;\r\n    /**\r\n     * ���в���ֵ\r\n     */\r\n    @JSONField(name = \"rate\")\r\n    private int rate;\r\n    /**\r\n     * �����Ƿ���ͼƬ\r\n     */\r\n    @JSONField(name = \"rater_pic\")\r\n    private int raterPic;\r\n    /**\r\n     * ������(����id)\r\n     */\r\n    @JSONField(name = \"rated_uid\")\r\n    private long ratedUid;\r\n    /**\r\n     * ������(���id)\r\n     */\r\n    @JSONField(name = \"rater_uid\")\r\n    private long raterUid;\r\n    /**\r\n     * ���������ǳ�\r\n     */\r\n    @JSONField(name = \"rated_user_nick\")\r\n    private String ratedUserNick;\r\n    /**\r\n     * �������ǳ�\r\n     */\r\n    @JSONField(name = \"rater_user_nick\")\r\n    private String raterUserNick;\r\n    /**\r\n     * ����״̬\r\n     */\r\n    @JSONField(name = \"status\")\r\n    private int status;\r\n    /**\r\n     * ��������\r\n     */\r\n    @JSONField(name = \"feedback\")\r\n    private String feedback;\r\n    /**\r\n     * �����Ƿ�������\r\n     */\r\n    @JSONField(name = \"validfeedback\")\r\n    private int validfeedback;\r\n    /**\r\n     * �ظ�\r\n     */\r\n    @JSONField(name = \"reply\")\r\n    private String reply;\r\n    /**\r\n     * ҵ������\r\n     */\r\n    @JSONField(name = \"biz_type\")\r\n    private int bizType;\r\n    /**\r\n     * �㷨���ֵ\r\n     */\r\n    @JSONField(name = \"sort_weight\")\r\n    private int sortWeight;\r\n    /**\r\n     * ����ʱ���\r\n     */\r\n    @JSONField(name = \"gmt_create\")\r\n    private long gmtCreateStamp;\r\n    /**\r\n     * ���ü���\r\n     */\r\n    @JSONField(name = \"vote_useful\")\r\n    private int voteUseful;\r\n    /**\r\n     * �����ֶ�\r\n     */\r\n    @JSONField(name = \"attributes\")\r\n    private String attributes;\r\n    /**\r\n     * ���Ի��Ĵ�ֱ����\r\n     */\r\n    @JSONField(name = \"details\")\r\n    private String properties;\r\n    /**\r\n     * �Ƿ�����\r\n     */\r\n    @JSONField(name = \"anony\")\r\n    private int anony;\r\n    /**\r\n     * ��Ǽ�¼��Դ\r\n     */\r\n    @JSONField(name = \"source\")\r\n    private long source;\r\n    /**\r\n     * �������ʱ��\r\n     */\r\n    @JSONField(name = \"gmt_trade_finished\")\r\n    private long gmtTradeFinishedStamp;\r\n    /**\r\n     * �����߽��׽�ɫ\r\n     */\r\n    @JSONField(name = \"rater_type\")\r\n    private int raterType;\r\n    /**\r\n     * ���ۼƷ�״̬\r\n     */\r\n    @JSONField(name = \"validscore\")\r\n    private int validscore;\r\n    /**\r\n     * ��Ʒһ����Ŀid\r\n     */\r\n    @JSONField(name = \"cate_level1_id\")\r\n    private long rootCatId;\r\n    /**\r\n     * ��ƷҶ����Ŀ\r\n     */\r\n    @JSONField(name = \"cate_id\")\r\n    private long leafCatId;\r\n    /**\r\n     * ������Id\r\n     * */\r\n    @JSONField(name = \"mord_id\")\r\n    private long parentTradeId;\r\n    /**\r\n     * �Ӷ���Id\r\n     * */\r\n    @JSONField(name = \"order_id\")\r\n    private long tradeId;\r\n    /**\r\n     * �Ƿ����׷��\r\n     */\r\n    @JSONField(name = \"append\")\r\n    private int append;\r\n    /**\r\n     * ׷��״̬\r\n     */\r\n    @JSONField(name = \"append_status\")\r\n    private int appendStatus;\r\n    /**\r\n     * ׷������\r\n     */\r\n    @JSONField(name = \"append_feedback\")\r\n    private String appendFeedback;\r\n    /**\r\n     * ׷���ظ�����\r\n     */\r\n    @JSONField(name = \"append_reply\")\r\n    private String appendReply;\r\n    /**\r\n     * ׷��ʱ���\r\n     */\r\n    @JSONField(name = \"append_create\")\r\n    private long appendCreateStamp;\r\n    /**\r\n     * ׷���Ƿ����ͼƬ\r\n     */\r\n    @JSONField(name = \"append_pic\")\r\n    private int appendPic;\r\n    /**\r\n     * ׷����¼id\r\n     */\r\n    @JSONField(name = \"append_feed_id\")\r\n    private long appendFeedId;\r\n    /**\r\n     * ׷�������ֶ�\r\n     */\r\n    @JSONField(name = \"append_attributes\")\r\n    private String appendAttributes;\r\n    /**\r\n     * ׷����ֱ�����ֶ�\r\n     */\r\n    @JSONField(name = \"append_properties\")\r\n    private String appendProperties;\r\n    /**\r\n     * �㷨�����ֵ\r\n     */\r\n    @JSONField(name = \"algo_sort\")\r\n    private long algoSort;\r\n    /**\r\n     * �۵���־\r\n     */\r\n    @JSONField(name = \"fold_flag\")\r\n    private int foldFlag;\r\n    /**\r\n     * �㷨�����ֶ�\r\n     */\r\n    @JSONField(name = \"reason\")\r\n    private String reason;\r\n    /**\r\n     * �㷨�����ֶ�\r\n     */\r\n    @JSONField(name = \"other\")\r\n    private String other;\r\n    /**\r\n     * ���ӡ���ǩ\r\n     */\r\n    @JSONField(name = \"expression_auc\")\r\n    private String expressionAuc;\r\n    /**\r\n     * ���ӡ���ǩ����λ��\r\n     */\r\n    @JSONField(name = \"position\")\r\n    private String position;\r\n    /**\r\n     * ���Ի��û���ǩ\r\n     * */\r\n    @JSONField(name = \"personalized_tag\")\r\n    private String personalizedTag;\r\n    /**\r\n     * ����ͼƬ\r\n     */\r\n    @JSONField(name = \"main_pic_json\")\r\n    private String mainPicJson;\r\n    /**\r\n     * ׷��ͼƬ\r\n     */\r\n    @JSONField(name = \"append_pic_json\")\r\n    private String appendPicJson;\r\n    /**\r\n     * ���������Ϣ\r\n     */\r\n    @JSONField(name = \"main_component_json\")\r\n    private String mainComponentJson;\r\n    /**\r\n     * ׷�������Ϣ\r\n     */\r\n    @JSONField(name = \"append_component_json\")\r\n    private String appendComponentJson;\r\n    /**\r\n     * �Ƿ�Ϊϵͳ����\r\n     */\r\n    @JSONField(name = \"is_auto\")\r\n    private String auto;\r\n\r\n    public long getFeedId () {\r\n        return feedId;\r\n    }\r\n\r\n    public void setFeedId (long feedId) {\r\n        this.feedId = feedId;\r\n    }\r\n\r\n    public long getRatedUid () {\r\n        return ratedUid;\r\n    }\r\n\r\n    public void setRatedUid (long ratedUid) {\r\n        this.ratedUid = ratedUid;\r\n    }\r\n\r\n    public long getRaterUid () {\r\n        return raterUid;\r\n    }\r\n\r\n    public void setRaterUid (long raterUid) {\r\n        this.raterUid = raterUid;\r\n    }\r\n\r\n    public String getRaterUserNick () {\r\n        return raterUserNick;\r\n    }\r\n\r\n    public void setRaterUserNick (String raterUserNick) {\r\n        this.raterUserNick = raterUserNick;\r\n    }\r\n\r\n    public String getFeedback () {\r\n        return feedback;\r\n    }\r\n\r\n    public void setFeedback (String feedback) {\r\n        this.feedback = feedback;\r\n    }\r\n\r\n    public int getRate () {\r\n        return rate;\r\n    }\r\n\r\n    public void setRate (int rate) {\r\n        this.rate = rate;\r\n    }\r\n\r\n    public int getStatus () {\r\n        return status;\r\n    }\r\n\r\n    public void setStatus (int status) {\r\n        this.status = status;\r\n    }\r\n\r\n    public String getReply () {\r\n        return reply;\r\n    }\r\n\r\n    public void setReply (String reply) {\r\n        this.reply = reply;\r\n    }\r\n\r\n    public int getBizType () {\r\n        return bizType;\r\n    }\r\n\r\n    public void setBizType (int bizType) {\r\n        this.bizType = bizType;\r\n    }\r\n\r\n    public int getSortWeight () {\r\n        return sortWeight;\r\n    }\r\n\r\n    public void setSortWeight (int sortWeight) {\r\n        this.sortWeight = sortWeight;\r\n    }\r\n\r\n    public int getVoteUseful () {\r\n        return voteUseful;\r\n    }\r\n\r\n    public void setVoteUseful (int voteUseful) {\r\n        this.voteUseful = voteUseful;\r\n    }\r\n\r\n    public String getAttributes () {\r\n        return attributes;\r\n    }\r\n\r\n    public void setAttributes (String attributes) {\r\n        this.attributes = attributes;\r\n    }\r\n\r\n    public String getProperties () {\r\n        return properties;\r\n    }\r\n\r\n    public void setProperties (String properties) {\r\n        this.properties = properties;\r\n    }\r\n\r\n    public int getAppendStatus () {\r\n        return appendStatus;\r\n    }\r\n\r\n    public void setAppendStatus (int appendStatus) {\r\n        this.appendStatus = appendStatus;\r\n    }\r\n\r\n    public String getAppendFeedback () {\r\n        return appendFeedback;\r\n    }\r\n\r\n    public void setAppendFeedback (String appendFeedback) {\r\n        this.appendFeedback = appendFeedback;\r\n    }\r\n\r\n    public String getAppendReply () {\r\n        return appendReply;\r\n    }\r\n\r\n    public void setAppendReply (String appendReply) {\r\n        this.appendReply = appendReply;\r\n    }\r\n\r\n    public long getAppendFeedId () {\r\n        return appendFeedId;\r\n    }\r\n\r\n    public void setAppendFeedId (long appendFeedId) {\r\n        this.appendFeedId = appendFeedId;\r\n    }\r\n\r\n    public String getAppendAttributes () {\r\n        return appendAttributes;\r\n    }\r\n\r\n    public void setAppendAttributes (String appendAttributes) {\r\n        this.appendAttributes = appendAttributes;\r\n    }\r\n\r\n    public String getAppendProperties () {\r\n        return appendProperties;\r\n    }\r\n\r\n    public void setAppendProperties (String appendProperties) {\r\n        this.appendProperties = appendProperties;\r\n    }\r\n\r\n    public int getRaterPic () {\r\n        return raterPic;\r\n    }\r\n\r\n    public void setRaterPic (int raterPic) {\r\n        this.raterPic = raterPic;\r\n    }\r\n\r\n    public int getValidfeedback () {\r\n        return validfeedback;\r\n    }\r\n\r\n    public void setValidfeedback (int validfeedback) {\r\n        this.validfeedback = validfeedback;\r\n    }\r\n\r\n    public int getAppendPic () {\r\n        return appendPic;\r\n    }\r\n\r\n    public void setAppendPic (int appendPic) {\r\n        this.appendPic = appendPic;\r\n    }\r\n\r\n    public long getGmtCreateStamp () {\r\n        return gmtCreateStamp;\r\n    }\r\n\r\n    public void setGmtCreateStamp (long gmtCreateStamp) {\r\n        this.gmtCreateStamp = gmtCreateStamp;\r\n    }\r\n\r\n    public long getAppendCreateStamp () {\r\n        return appendCreateStamp;\r\n    }\r\n\r\n    public void setAppendCreateStamp (long appendCreateStamp) {\r\n        this.appendCreateStamp = appendCreateStamp;\r\n    }\r\n\r\n    public int getAppend () {\r\n        return append;\r\n    }\r\n\r\n    public void setAppend (int append) {\r\n        this.append = append;\r\n    }\r\n\r\n    public boolean haveAppend () {\r\n        return append == 1;\r\n    }\r\n\r\n    public String getRatedUserNick () {\r\n        return ratedUserNick;\r\n    }\r\n\r\n    public void setRatedUserNick (String ratedUserNick) {\r\n        this.ratedUserNick = ratedUserNick;\r\n    }\r\n\r\n    public int getAnony () {\r\n        return anony;\r\n    }\r\n\r\n    public void setAnony (int anony) {\r\n        this.anony = anony;\r\n    }\r\n\r\n    public long getGmtTradeFinishedStamp () {\r\n        return gmtTradeFinishedStamp;\r\n    }\r\n\r\n    public void setGmtTradeFinishedStamp (long gmtTradeFinishedStamp) {\r\n        this.gmtTradeFinishedStamp = gmtTradeFinishedStamp;\r\n    }\r\n\r\n    public int getRaterType () {\r\n        return raterType;\r\n    }\r\n\r\n    public void setRaterType (int raterType) {\r\n        this.raterType = raterType;\r\n    }\r\n\r\n    public int getValidscore () {\r\n        return validscore;\r\n    }\r\n\r\n    public void setValidscore (int validscore) {\r\n        this.validscore = validscore;\r\n    }\r\n\r\n    public long getAlgoSort () {\r\n        return algoSort;\r\n    }\r\n\r\n    public void setAlgoSort (long algoSort) {\r\n        this.algoSort = algoSort;\r\n    }\r\n\r\n    public int getFoldFlag () {\r\n        return foldFlag;\r\n    }\r\n\r\n    public void setFoldFlag (int foldFlag) {\r\n        this.foldFlag = foldFlag;\r\n    }\r\n\r\n    public String getReason () {\r\n        return reason;\r\n    }\r\n\r\n    public void setReason (String reason) {\r\n        this.reason = reason;\r\n    }\r\n\r\n    public String getOther () {\r\n        return other;\r\n    }\r\n\r\n    public void setOther (String other) {\r\n        this.other = other;\r\n    }\r\n\r\n    public String getExpressionAuc () {\r\n        return expressionAuc;\r\n    }\r\n\r\n    public void setExpressionAuc (String expressionAuc) {\r\n        this.expressionAuc = expressionAuc;\r\n    }\r\n\r\n    public String getPosition () {\r\n        return position;\r\n    }\r\n\r\n    public void setPosition (String position) {\r\n        this.position = position;\r\n    }\r\n\r\n    public long getAucNumId () {\r\n        return aucNumId;\r\n    }\r\n\r\n    public void setAucNumId (long aucNumId) {\r\n        this.aucNumId = aucNumId;\r\n    }\r\n\r\n    public long getSource () {\r\n        return source;\r\n    }\r\n\r\n    public void setSource (long source) {\r\n        this.source = source;\r\n    }\r\n\r\n    public long getRootCatId () {\r\n        return rootCatId;\r\n    }\r\n\r\n    public void setRootCatId (long rootCatId) {\r\n        this.rootCatId = rootCatId;\r\n    }\r\n\r\n    public long getLeafCatId() {\r\n        return leafCatId;\r\n    }\r\n\r\n    public void setLeafCatId(long leafCatId) {\r\n        this.leafCatId = leafCatId;\r\n    }\r\n\r\n    public String getMainPicJson() {\r\n        return mainPicJson;\r\n    }\r\n\r\n    public void setMainPicJson(String mainPicJson) {\r\n        this.mainPicJson = mainPicJson;\r\n    }\r\n\r\n    public String getAppendPicJson() {\r\n        return appendPicJson;\r\n    }\r\n\r\n    public void setAppendPicJson(String appendPicJson) {\r\n        this.appendPicJson = appendPicJson;\r\n    }\r\n\r\n    public String getMainComponentJson() {\r\n        return mainComponentJson;\r\n    }\r\n\r\n    public void setMainComponentJson(String mainComponentJson) {\r\n        this.mainComponentJson = mainComponentJson;\r\n    }\r\n\r\n    public String getAppendComponentJson() {\r\n        return appendComponentJson;\r\n    }\r\n\r\n    public void setAppendComponentJson(String appendComponentJson) {\r\n        this.appendComponentJson = appendComponentJson;\r\n    }\r\n\r\n    public String getAuto() {\r\n        return auto;\r\n    }\r\n\r\n    public void setAuto(String auto) {\r\n        this.auto = auto;\r\n    }\r\n\r\n    public long getParentTradeId() {\r\n        return parentTradeId;\r\n    }\r\n\r\n    public void setParentTradeId(long parentTradeId) {\r\n        this.parentTradeId = parentTradeId;\r\n    }\r\n\r\n    public long getTradeId() {\r\n        return tradeId;\r\n    }\r\n\r\n    public void setTradeId(long tradeId) {\r\n        this.tradeId = tradeId;\r\n    }\r\n\r\n    public String getPersonalizedTag() {\r\n        return personalizedTag;\r\n    }\r\n\r\n    public void setPersonalizedTag(String personalizedTag) {\r\n        this.personalizedTag = personalizedTag;\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/tmall/TmallTest.java",
    "content": "package com.alibaba.json.test.tmall;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.util.IOUtils;\nimport junit.framework.TestCase;\n\nimport java.io.File;\nimport java.io.FileReader;\n\n/**\n * Created by wenshao on 17/03/2017.\n */\npublic class TmallTest extends TestCase {\n    @SuppressWarnings(\"deprecation\")\n    public void test_for_tmall() throws Exception {\n        File file = new File(\"/Users/wenshao/Downloads/tmall_perf/searchjson.json\");\n        String text = IOUtils.readAll(new FileReader(file));\n\n        for (int i = 0; i < 10; ++i) {\n            long start = System.currentTimeMillis();\n            perf(text);\n            long millis = System.currentTimeMillis() - start;\n            System.out.println(\"millis : \" + millis);\n        }\n    }\n\n    private void perf(String text) {\n        for (int i = 0; i < 1000; ++i) {\n            JSON.parseObject(text, EngineResult.class, Feature.DisableFieldSmartMatch);\n        }\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/vans/VansAnimation.java",
    "content": "package com.alibaba.json.test.vans;\n\n\nimport java.io.Serializable;\nimport java.util.ArrayList;\n\n/**\n * Created by xiaolin_kxl on 17/1/5.\n */\npublic class VansAnimation implements Serializable{\n    public String fps;\n    public String name;\n    public ArrayList<String> tracks;\n\n    public VansAnimation(){\n\n    }\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/vans/VansData.java",
    "content": "package com.alibaba.json.test.vans;\n\nimport java.io.Serializable;\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * Created by xiaolin_kxl on 16/12/28.\n */\npublic class VansData implements Serializable{\n\n    public int[] textures;\n    public ArrayList<String> images;\n    public VansObject object;\n    public VansMetaData metadata;\n    public ArrayList<VansGeometry> geometries;\n    public ArrayList<VansAnimation> animations;\n    public Object materials;\n\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/vans/VansGeometry.java",
    "content": "package com.alibaba.json.test.vans;\n\nimport java.io.Serializable;\n\n/**\n * Created by xiaolin_kxl on 17/1/5.\n */\npublic class VansGeometry implements Serializable{\n    public String uuid;\n    public String type;\n    public VansGeometryData data;\n\n    public VansGeometry(){\n\n    }\n}"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/vans/VansGeometryData.java",
    "content": "package com.alibaba.json.test.vans;\n\nimport com.alibaba.fastjson.annotation.JSONField;\nimport com.alibaba.fastjson.annotation.JSONType;\n\nimport java.io.Serializable;\nimport java.util.ArrayList;\n\n@JSONType(orders = {\"uvs\",\"metadata\",\"normals\",\"name\",\"faces\",\"vertices\"})\npublic class VansGeometryData implements Serializable{\n    public float[][] uvs;\n\n    @JSONField(name = \"metadata\")\n    public VansGeometryDataMetaData metaData;\n\n    public float[] normals;\n    public String name;\n    public int[] faces;\n    public float[] vertices;\n\n    public VansGeometryData(){\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/vans/VansGeometryDataMetaData.java",
    "content": "package com.alibaba.json.test.vans;\n\nimport java.io.Serializable;\n\n/**\n * Created by xiaolin_kxl on 16/12/28.\n */\n\npublic class VansGeometryDataMetaData implements Serializable {\n    public int version;\n    public int uvs;\n    public int normals;\n    public int faces;\n    public int vertices;\n    public String generator;\n\n    public VansGeometryDataMetaData() {\n\n    }\n}\n\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/vans/VansMetaData.java",
    "content": "package com.alibaba.json.test.vans;\n\nimport java.io.Serializable;\n\n/**\n * Created by xiaolin_kxl on 17/1/5.\n */\npublic class VansMetaData implements Serializable{\n    public String version;\n    public String type;\n    public String generator;\n    public VansMetaData(){\n\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/vans/VansObject.java",
    "content": "package com.alibaba.json.test.vans;\n\nimport com.alibaba.fastjson.annotation.JSONType;\n\nimport java.io.Serializable;\nimport java.util.ArrayList;\n\n/**\n * Created by xiaolin_kxl on 17/1/5.\n */\n@JSONType(orders = {\"uuid\",\"type\",\"matrix\",\"children\"})\npublic class VansObject implements Serializable {\n    public String uuid;\n    public String type;\n    public ArrayList<VansObjectChildren> children;\n    public float[] matrix;\n}\n"
  },
  {
    "path": "src/test/java/com/alibaba/json/test/vans/VansObjectChildren.java",
    "content": "package com.alibaba.json.test.vans;\n\nimport com.alibaba.fastjson.annotation.JSONType;\n\nimport java.io.Serializable;\nimport java.util.ArrayList;\n\n/**\n * Created by xiaolin_kxl on 17/1/5.\n */\n@JSONType(orders = {\"name\",\"uuid\",\"matrix\",\"visible\",\"type\",\"children\",\"castShadow\",\"receiveShadow\",\"geometry\"})\npublic class VansObjectChildren implements Serializable{\n    public String name;\n    public String uuid;\n    public String type;\n    public boolean visible;\n    public String geometry;\n    public boolean castShadow;\n    public boolean receiveShadow;\n    public float[] matrix;\n    public ArrayList<VansObjectChildren> children;\n}\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/ABCTest.java",
    "content": "package com.derbysoft.spitfire.fastjson;\n\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.json.test.Base64;\nimport junit.framework.TestCase;\n\nimport java.lang.reflect.Field;\nimport java.util.Arrays;\n\n/**\n * Created by wenshao on 27/01/2017.\n */\npublic class ABCTest extends TestCase {\n    public void test_abc() throws Exception {\n        Field field = ParserConfig.class.getDeclaredField(\"denyList\");\n        field.setAccessible(true);\n\n        String[] denyList = (String[]) field.get(ParserConfig.getGlobalInstance());\n        Arrays.sort(denyList);\n\n        for (int i = 0; i < denyList.length; ++i) {\n            if (i != 0) {\n                System.out.print(\",\");\n            }\n            System.out.print(denyList[i]);\n        }\n\n        for (int i = 0; i < denyList.length; ++i) {\n            // System.out.println(\"\\\"\" + denyList[i] + \"\\\",\");\n            System.out.println(denyList[i]);\n        }\n\n        System.out.println();\n        System.out.println(Base64.encodeToString(\"\\\"@type\".getBytes(), true));\n    }\n}\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/Generic.java",
    "content": "package com.derbysoft.spitfire.fastjson;\r\n\r\nimport java.io.Serializable;\r\nimport java.util.List;\r\n\r\npublic class Generic<T> implements Serializable{\r\n        String header;\r\n        T payload;\r\n\r\n//        List<T>\r\n\r\n    public String getHeader() {\r\n        return header;\r\n    }\r\n\r\n    public void setHeader(String header) {\r\n        this.header = header;\r\n    }\r\n\r\n    public T getPayload() {\r\n        return payload;\r\n    }\r\n\r\n    public void setPayload(T payload) {\r\n        this.payload = payload;\r\n    }\r\n}"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/Header.java",
    "content": "package com.derbysoft.spitfire.fastjson;\r\n\r\npublic class Header {\r\n    private String taskId;\r\n\r\n    public String getTaskId() {\r\n        return taskId;\r\n    }\r\n\r\n    public void setTaskId(String taskId) {\r\n        this.taskId = taskId;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/TestFastJson.java",
    "content": "package com.derbysoft.spitfire.fastjson;\r\n\r\nimport java.io.ByteArrayInputStream;\r\nimport java.io.ByteArrayOutputStream;\r\nimport java.io.IOException;\r\nimport java.io.ObjectInputStream;\r\nimport java.io.ObjectOutputStream;\r\nimport java.math.BigDecimal;\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport java.util.concurrent.atomic.AtomicLong;\r\n\r\nimport org.apache.commons.lang.time.StopWatch;\r\nimport org.junit.Test;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.serializer.JSONSerializer;\r\nimport com.alibaba.fastjson.serializer.SerializeWriter;\r\nimport com.alibaba.fastjson.serializer.SerializerFeature;\r\nimport com.derbysoft.spitfire.fastjson.dto.AvailGuaranteeDTO;\r\nimport com.derbysoft.spitfire.fastjson.dto.AvailRoomStayDTO;\r\nimport com.derbysoft.spitfire.fastjson.dto.CancelPenaltyType;\r\nimport com.derbysoft.spitfire.fastjson.dto.CancelPolicyDTO;\r\nimport com.derbysoft.spitfire.fastjson.dto.CardCode;\r\nimport com.derbysoft.spitfire.fastjson.dto.ChargeItemDTO;\r\nimport com.derbysoft.spitfire.fastjson.dto.ChargeType;\r\nimport com.derbysoft.spitfire.fastjson.dto.ChargeUnit;\r\nimport com.derbysoft.spitfire.fastjson.dto.Currency;\r\nimport com.derbysoft.spitfire.fastjson.dto.DateRangeDTO;\r\nimport com.derbysoft.spitfire.fastjson.dto.FreeMealDTO;\r\nimport com.derbysoft.spitfire.fastjson.dto.FreeMealType;\r\nimport com.derbysoft.spitfire.fastjson.dto.GenericRS;\r\nimport com.derbysoft.spitfire.fastjson.dto.GuaranteeType;\r\nimport com.derbysoft.spitfire.fastjson.dto.HotelAvailRS;\r\nimport com.derbysoft.spitfire.fastjson.dto.HotelAvailRoomStayDTO;\r\nimport com.derbysoft.spitfire.fastjson.dto.HotelRefDTO;\r\nimport com.derbysoft.spitfire.fastjson.dto.LanguageType;\r\nimport com.derbysoft.spitfire.fastjson.dto.MealsIncludedDTO;\r\nimport com.derbysoft.spitfire.fastjson.dto.MealsIncludedType;\r\nimport com.derbysoft.spitfire.fastjson.dto.PaymentType;\r\nimport com.derbysoft.spitfire.fastjson.dto.ProviderChainDTO;\r\nimport com.derbysoft.spitfire.fastjson.dto.RateDTO;\r\nimport com.derbysoft.spitfire.fastjson.dto.RatePlanDTO;\r\nimport com.derbysoft.spitfire.fastjson.dto.ResponseHeader;\r\nimport com.derbysoft.spitfire.fastjson.dto.RoomRateDTO;\r\nimport com.derbysoft.spitfire.fastjson.dto.RoomTypeDTO;\r\nimport com.derbysoft.spitfire.fastjson.dto.SimpleAmountDTO;\r\nimport com.derbysoft.spitfire.fastjson.dto.TPAExtensionsDTO;\r\nimport com.derbysoft.spitfire.fastjson.dto.UniqueIDDTO;\r\nimport com.derbysoft.spitfire.fastjson.dto.UniqueIDType;\r\n\r\n//import com.derbysoft.spitfire.fastjson.dto.*;\r\n\r\npublic class TestFastJson {\r\n\r\n    private static final int TIMES       = 10000;\r\n    private static final int STAYS_COUNT = 10;\r\n\r\n    public void f_testF() {\r\n        Generic<String> q = new Generic<String>();\r\n        byte[] text = JSON.toJSONBytes(q, SerializerFeature.WriteClassName);\r\n        JSON.parseObject(text, Generic.class);\r\n    }\r\n\r\n    @SuppressWarnings(\"unchecked\")\r\n    public void f_test() throws Exception {\r\n\r\n        String text = JSON.toJSONString(createTest(), SerializerFeature.WriteClassName);\r\n        System.out.println(text.length());\r\n        System.out.println(text);\r\n        System.out.println(\"serialize finished\");\r\n        GenericRS<HotelAvailRS> o = (GenericRS<HotelAvailRS>) JSON.parseObject(text, GenericRS.class);\r\n\r\n        System.out.println(o);\r\n    }\r\n\r\n    public void testFP() throws IOException {\r\n        Generic<String> q = new Generic<String>();\r\n        for (int x = 0; x < STAYS_COUNT; ++x) {\r\n            StopWatch stopWatch = new StopWatch();\r\n            stopWatch.start();\r\n            for (int i = 0; i < TIMES; ++i) {\r\n                jsonSerialize(q);\r\n            }\r\n            stopWatch.stop();\r\n\r\n            System.out.println(\"JSON serialize:\" + stopWatch.getTime());\r\n\r\n            stopWatch.reset();\r\n            stopWatch.start();\r\n            for (int i = 0; i < TIMES; ++i) {\r\n                javaSerialize(q);\r\n            }\r\n            stopWatch.stop();\r\n            System.out.println(\"JAVA serialize:\" + stopWatch.getTime());\r\n            System.out.println();\r\n        }\r\n    }\r\n\r\n    private <T> void jsonSerialize(T t) throws IOException {\r\n        // String text = JSON.toJSONString(t, SerializerFeature.WriteClassName, SerializerFeature.PrettyFormat);\r\n        // System.out.println(text);\r\n\r\n        ByteArrayOutputStream os = new ByteArrayOutputStream();\r\n        SerializeWriter out = new SerializeWriter(SerializerFeature.WriteClassName);\r\n        // SerializeWriter out = new SerializeWriter();\r\n        JSONSerializer serializer = new JSONSerializer(out);\r\n        serializer.write(t);\r\n        out.writeTo(os, \"UTF-8\");\r\n        os.toByteArray();\r\n        //System.out.println(JSON.toJSONString(t, SerializerFeature.WriteClassName, SerializerFeature.PrettyFormat));\r\n        //System.out.println(\"json \" + os.toByteArray().length);\r\n    }\r\n\r\n    private <T> void javaSerialize(T t) throws IOException {\r\n        ByteArrayOutputStream os = new ByteArrayOutputStream();\r\n        ObjectOutputStream oos = new ObjectOutputStream(os);\r\n        oos.writeObject(t);\r\n        // System.out.println(\"java \" + os.toByteArray().length);\r\n    }\r\n\r\n    @SuppressWarnings(\"unchecked\")\r\n    private <T> T jsonDeserialize(byte[] bytes, Class<T> clazz) throws IOException {\r\n        return (T) JSON.parseObject(bytes, clazz);\r\n    }\r\n\r\n    @SuppressWarnings(\"unchecked\")\r\n    private <T> T javaDeserialize(byte[] bytes) throws IOException, ClassNotFoundException {\r\n        ByteArrayInputStream is = new ByteArrayInputStream(bytes);\r\n        ObjectInputStream ois = new ObjectInputStream(is);\r\n        return (T) ois.readObject();\r\n    }\r\n\r\n    @Test\r\n    public void testSerializePerformance() throws IOException {\r\n        Object obj = createTest();\r\n\r\n        for (int x = 0; x < 20; ++x) {\r\n            StopWatch stopWatch = new StopWatch();\r\n            stopWatch.start();\r\n            for (int i = 0; i < TIMES; ++i) {\r\n                jsonSerialize(obj);\r\n            }\r\n            stopWatch.stop();\r\n\r\n            System.out.println(\"JSON serialize:\" + stopWatch.getTime());\r\n\r\n            stopWatch.reset();\r\n            stopWatch.start();\r\n            for (int i = 0; i < TIMES; ++i) {\r\n                javaSerialize(obj);\r\n            }\r\n            stopWatch.stop();\r\n            System.out.println(\"JAVA serialize:\" + stopWatch.getTime());\r\n            System.out.println();\r\n        }\r\n    }\r\n\r\n    public void testDeserializePerformance() throws IOException, ClassNotFoundException {\r\n        Object obj = createTest();\r\n        byte[] bytes = JSON.toJSONBytes(obj, SerializerFeature.WriteClassName);\r\n\r\n        ByteArrayOutputStream os = new ByteArrayOutputStream();\r\n        ObjectOutputStream oos = new ObjectOutputStream(os);\r\n        oos.writeObject(obj);\r\n        byte[] javaBytes = os.toByteArray();\r\n\r\n        System.out.println(bytes.length);\r\n\r\n        for (int x = 0; x < 20; ++x) {\r\n            StopWatch stopWatch = new StopWatch();\r\n            stopWatch.start();\r\n            for (int i = 0; i < TIMES; ++i) {\r\n                // ByteArrayInputStream is = new ByteArrayInputStream(bytes);\r\n                Object o = jsonDeserialize(bytes, GenericRS.class);\r\n                o.getClass();\r\n            }\r\n            stopWatch.stop();\r\n\r\n            System.out.println(\"JSON deserialize:\" + stopWatch.getTime());\r\n\r\n            stopWatch.reset();\r\n\r\n            stopWatch.start();\r\n            for (int i = 0; i < TIMES; ++i) {\r\n                Object o = javaDeserialize(javaBytes);\r\n                o.getClass();\r\n            }\r\n            stopWatch.stop();\r\n\r\n            System.out.println(\"JAVA deserialize:\" + stopWatch.getTime());\r\n            System.out.println();\r\n        }\r\n\r\n    }\r\n\r\n    public GenericRS<HotelAvailRS> createTest() {\r\n        GenericRS<HotelAvailRS> rs = new GenericRS<HotelAvailRS>();\r\n        rs.setHeader(new ResponseHeader(\"dsfsdfsd\"));\r\n        HotelAvailRS hotelAvailRS = createExpectedHotelAvailRS();\r\n        TPAExtensionsDTO extensions = new TPAExtensionsDTO();\r\n        extensions.getElements().put(\"dfd\", \"Dfdf\");\r\n        hotelAvailRS.setTpaExtensions(extensions);\r\n        rs.setPayload(hotelAvailRS);\r\n        return rs;\r\n    }\r\n\r\n    // private static final String HOTEL_DESC = \"foo hotel desc\";\r\n    private static final String       ROOM_TYPE_CODE            = \"foo room type code\";\r\n    private static final String       ROOM_TYPE_NAME            = \"foo room type name\";\r\n    private static final String       RATE_PLAN_CODE            = \"foo rate plan code\";\r\n    private static final String       RATE_PLAN_NAME            = \"rate plan name\";\r\n    private static final Integer      ROOM_COUNT                = 2;\r\n\r\n    // private static final Date CANCEL_POLICY_DEAD_LINE = DateUtils.parseUseDefaultFormat(\"2008-09-01\");\r\n    private static final String       CANCEL_POLICY_DESCRIPTION = \"foo cancel policy description\";\r\n\r\n    private static final String       GUARANTEE_DESCRIPTION     = \"foo guarantee description\";\r\n    // private static final String CARD_NUMBER = \"foo card number\";\r\n    // private static final String CARD_HOLDER_NAME = \"foo card holder name\";\r\n    // private static final String CARD_SERIES_CODE = \"foo card series code\";\r\n    // private static final Date CARD_EXPIRE_DATE = DateUtils.parseUseDefaultFormat(\"2010-12-31\");\r\n    private static final Currency     CURRENCY                  = Currency.CNY;\r\n\r\n    private static final PaymentType  PAYMENT_TYPE_POA          = PaymentType.POA;\r\n    // private static final int DAY_COUNT = 4;\r\n    // private static final String[] CHECKIN_DATES = {\"2008-08-25\", \"2008-08-26\", \"2008-08-27\", \"2008-08-28\"};\r\n    // private static final String[] CHECKOUT_DATES = {\"2008-08-26\", \"2008-08-27\", \"2008-08-28\", \"2008-08-29\"};\r\n    // private static final BigDecimal[] AMOUNT_AFTER_TAXS\r\n    // = {new BigDecimal(800), new BigDecimal(800), new BigDecimal(800), new BigDecimal(900)};\r\n    private static final BigDecimal[] AMOUNT_BEFORE_TAXS        = { new BigDecimal(750), new BigDecimal(750),\r\n            new BigDecimal(760), new BigDecimal(880)           };\r\n    private static final BigDecimal   AMOUNT_TAX                = new BigDecimal(50);\r\n    private static final BigDecimal   SERVICE_CHARGE_AMOUNT     = new BigDecimal(10);\r\n    private static final String       TAX_DESC                  = \"foo tax desc\";\r\n    private static final String       SERVICE_CHARGE_DESC       = \"foo repository charge desc\";\r\n\r\n    private static final String       PROVIDER_CODE             = \"hilton\";\r\n    private static final String       HOTEL_NAME                = \"foo hotel name\";\r\n    private static final String       HOTEL_CODE                = \"foo hotel code\";\r\n    private static final LanguageType LANGUAGE_TYPE_CN          = LanguageType.ZH_CN;\r\n    // private static final String TASK_ID = \"task id\";\r\n    private static final boolean      NEED_GUARANTEE            = true;\r\n    private static final CardCode     VISA                      = CardCode.VISA;\r\n    // private static final String CARD_CODE = VISA.getCode();\r\n\r\n    private static final int          NUMBER_ZERO               = 0;\r\n    private static final int          NUMBER_ONE                = 1;\r\n    private static final int          NUMBER_TWO                = 2;\r\n    private static final int          NUMBER_THREE              = 3;\r\n    \r\n    private static AtomicLong seed = new AtomicLong();\r\n\r\n    private HotelAvailRS createExpectedHotelAvailRS() {\r\n        HotelAvailRS payLoad = new HotelAvailRS();\r\n        payLoad.setHotelAvailRoomStay(createExpectedHotelAvailRoomStay());\r\n        return payLoad;\r\n    }\r\n\r\n    private HotelAvailRoomStayDTO createExpectedHotelAvailRoomStay() {\r\n        HotelAvailRoomStayDTO hotelAvailRoomStay = new HotelAvailRoomStayDTO();\r\n        hotelAvailRoomStay.setHotelRef(createExpectedHotelRef());\r\n        hotelAvailRoomStay.setRoomStays(createExpectedRoomStays());\r\n        return hotelAvailRoomStay;\r\n    }\r\n\r\n    private List<AvailRoomStayDTO> createExpectedRoomStays() {\r\n        ArrayList<AvailRoomStayDTO> roomStays = new ArrayList<AvailRoomStayDTO>();\r\n        for (int i = 0; i < STAYS_COUNT; ++i) {\r\n            AvailRoomStayDTO roomStay = new AvailRoomStayDTO();\r\n            roomStay.setLanguageType(LANGUAGE_TYPE_CN);\r\n            roomStay.setRoomType(createExpectedRoomType());\r\n            roomStay.setRatePlan(createExpectedRatePlan());\r\n            roomStay.setQuantity(ROOM_COUNT);\r\n            roomStay.setRoomRate(createExpectedRoomRate());\r\n            roomStay.setProviderChain(createExpectedProviderChain());\r\n            roomStays.add(roomStay);\r\n        }\r\n\r\n        return roomStays;\r\n    }\r\n\r\n    private ProviderChainDTO createExpectedProviderChain() {\r\n        ProviderChainDTO providerChain = new ProviderChainDTO();\r\n        List<UniqueIDDTO> providers = new ArrayList<UniqueIDDTO>();\r\n        UniqueIDDTO provider = new UniqueIDDTO(PROVIDER_CODE, UniqueIDType.HOTEL);\r\n        provider.setCompanyName(PROVIDER_CODE);\r\n        providers.add(provider);\r\n        providerChain.setProviders(providers);\r\n        return providerChain;\r\n    }\r\n\r\n    private List<AvailGuaranteeDTO> createExpectedAvailGuarantee() {\r\n        List<AvailGuaranteeDTO> availGuarantees = new ArrayList<AvailGuaranteeDTO>();\r\n        AvailGuaranteeDTO availGuaranteeDTO = new AvailGuaranteeDTO();\r\n        availGuaranteeDTO.setGuaranteeType(GuaranteeType.CreditCard);\r\n        availGuaranteeDTO.setCardCode(VISA);\r\n        availGuaranteeDTO.setTpaExtensions(createExpectedEpaExtensions());\r\n        availGuarantees.add(availGuaranteeDTO);\r\n        return availGuarantees;\r\n    }\r\n\r\n    private TPAExtensionsDTO createExpectedEpaExtensions() {\r\n        TPAExtensionsDTO tpaExtensions = new TPAExtensionsDTO();\r\n        tpaExtensions.setElement(\"description\", GUARANTEE_DESCRIPTION);\r\n        return tpaExtensions;\r\n    }\r\n\r\n    private CancelPolicyDTO createExpectedCancelPolicy() {\r\n        CancelPolicyDTO cancelPolicyDTO = new CancelPolicyDTO();\r\n        cancelPolicyDTO.setCancelPenaltyType(CancelPenaltyType.UNKNOWN);\r\n        cancelPolicyDTO.setDeadline(\"16:00\");\r\n        cancelPolicyDTO.setDescription(CANCEL_POLICY_DESCRIPTION);\r\n        return cancelPolicyDTO;\r\n    }\r\n\r\n    private RoomRateDTO createExpectedRoomRate() {\r\n        RoomRateDTO roomRate = new RoomRateDTO();\r\n        List<RateDTO> rates = new ArrayList<RateDTO>();\r\n        rates.add(createExpectedFirstDayRate());\r\n        rates.add(createExpectedSecondDayRate());\r\n        rates.add(createExpectedThirdDayRate());\r\n        rates.add(createExpectedForthDayRate());\r\n        roomRate.setRates(rates);\r\n        return roomRate;\r\n    }\r\n\r\n    private RatePlanDTO createExpectedRatePlan() {\r\n        RatePlanDTO ratePlan = new RatePlanDTO();\r\n        ratePlan.setCode(RATE_PLAN_CODE);\r\n        ratePlan.setName(RATE_PLAN_NAME);\r\n        ratePlan.setPaymentType(PAYMENT_TYPE_POA); // TODO paymentType only cash back?\r\n        ratePlan.setTaxes(createExpectedTaxs());\r\n        ratePlan.setServiceCharges(createExpectedServiceCharges());\r\n        ratePlan.setNeedGuarantee(NEED_GUARANTEE);\r\n        ratePlan.setCancelPolicy(createExpectedCancelPolicy());\r\n        ratePlan.setAvailGuarantees(createExpectedAvailGuarantee()); // TODO translator\r\n        ratePlan.setFreeMeal(createExpectedFreeMeal());\r\n        return ratePlan;\r\n    }\r\n\r\n    private FreeMealDTO createExpectedFreeMeal() {\r\n        FreeMealDTO freeMeal = new FreeMealDTO();\r\n        freeMeal.setType(FreeMealType.NONE);\r\n        return freeMeal;\r\n    }\r\n\r\n    private RoomTypeDTO createExpectedRoomType() {\r\n        RoomTypeDTO roomType = new RoomTypeDTO();\r\n        roomType.setCode(ROOM_TYPE_CODE);\r\n        roomType.setName(ROOM_TYPE_NAME);\r\n        return roomType;\r\n    }\r\n\r\n    private RateDTO createExpectedForthDayRate() {\r\n        return createExpectedRateDTO(NUMBER_THREE);\r\n    }\r\n\r\n    private RateDTO createExpectedThirdDayRate() {\r\n        return createExpectedRateDTO(NUMBER_TWO);\r\n    }\r\n\r\n    private RateDTO createExpectedSecondDayRate() {\r\n        return createExpectedRateDTO(NUMBER_ONE);\r\n    }\r\n\r\n    private RateDTO createExpectedFirstDayRate() {\r\n        return createExpectedRateDTO(NUMBER_ZERO);\r\n    }\r\n\r\n    private RateDTO createExpectedRateDTO(int index) {\r\n        RateDTO rate = new RateDTO();\r\n        rate.setDateRange(createExpectedDateRangeDTO());\r\n        rate.setPureAmount(createExpectedAmountDTO(CURRENCY, AMOUNT_BEFORE_TAXS[index]));\r\n        rate.setMealsIncluded(new MealsIncludedDTO(MealsIncludedType.UNKNOWN));\r\n        return rate;\r\n    }\r\n\r\n    private List<ChargeItemDTO> createExpectedServiceCharges() {\r\n        List<ChargeItemDTO> serviceCharges = new ArrayList<ChargeItemDTO>();\r\n        ChargeItemDTO serviceCharge = new ChargeItemDTO();\r\n        serviceCharge.setUnit(ChargeUnit.PER_NIGHT);\r\n        serviceCharge.setType(ChargeType.FIXED);\r\n        serviceCharge.setValue(SERVICE_CHARGE_AMOUNT);\r\n        serviceCharge.setDescription(new String(SERVICE_CHARGE_DESC + seed.incrementAndGet()));\r\n        serviceCharges.add(serviceCharge);\r\n        return serviceCharges;\r\n    }\r\n\r\n    private List<ChargeItemDTO> createExpectedTaxs() {\r\n        List<ChargeItemDTO> taxs = new ArrayList<ChargeItemDTO>();\r\n        ChargeItemDTO tax = new ChargeItemDTO();\r\n        tax.setUnit(ChargeUnit.PER_NIGHT);\r\n        tax.setValue(AMOUNT_TAX);\r\n        tax.setType(ChargeType.FIXED);\r\n        tax.setDescription(TAX_DESC + seed.incrementAndGet());\r\n        taxs.add(tax);\r\n        return taxs;\r\n    }\r\n\r\n    private SimpleAmountDTO createExpectedAmountDTO(Currency currency, BigDecimal amount) {\r\n        SimpleAmountDTO simpleAmountDTO = new SimpleAmountDTO();\r\n        simpleAmountDTO.setCurrency(currency);\r\n        simpleAmountDTO.setAmount(amount);\r\n        return simpleAmountDTO;\r\n    }\r\n\r\n    private DateRangeDTO createExpectedDateRangeDTO() {\r\n        DateRangeDTO dateRangeDTO = new DateRangeDTO();\r\n        dateRangeDTO.setStart(new Date());\r\n        dateRangeDTO.setEnd(new Date());\r\n        return dateRangeDTO;\r\n    }\r\n\r\n    private HotelRefDTO createExpectedHotelRef() {\r\n        HotelRefDTO hotelRef = new HotelRefDTO();\r\n        hotelRef.setCode(new String(HOTEL_CODE));\r\n        hotelRef.setName(new String(HOTEL_NAME));\r\n        return hotelRef;\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/AbstractDTO.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\nimport java.io.Serializable;\r\n\r\nimport com.alibaba.fastjson.annotation.JSONField;\r\n\r\npublic abstract class AbstractDTO implements Serializable {\r\n    private boolean keepgoingValidate = false;\r\n\r\n    private boolean checkCircularReference = true;\r\n\r\n    @JSONField(name=\"KV\")\r\n    public boolean isKeepgoingValidate() {\r\n        return keepgoingValidate;\r\n    }\r\n\r\n    @JSONField(name=\"KV\")\r\n    public void setKeepgoingValidate(boolean keepgoingValidate) {\r\n        this.keepgoingValidate = keepgoingValidate;\r\n    }\r\n\r\n    @JSONField(name=\"CR\")\r\n    public boolean isCheckCircularReference() {\r\n        return checkCircularReference;\r\n    }\r\n\r\n    @JSONField(name=\"CR\")\r\n    public void setCheckCircularReference(boolean checkCircularReference) {\r\n        this.checkCircularReference = checkCircularReference;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/AbstractRS.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\npublic class AbstractRS extends AbstractDTO {\r\n    private SuccessDTO success;\r\n    private WarningsDTO warnings;\r\n    private ErrorsDTO errors;\r\n\r\n    public SuccessDTO getSuccess() {\r\n        return success;\r\n    }\r\n\r\n    public void setSuccess(SuccessDTO success) {\r\n        this.success = success;\r\n    }\r\n\r\n    public WarningsDTO getWarnings() {\r\n        return warnings;\r\n    }\r\n\r\n    public void setWarnings(WarningsDTO warnings) {\r\n        this.warnings = warnings;\r\n    }\r\n\r\n    public ErrorsDTO getErrors() {\r\n        return errors;\r\n    }\r\n\r\n    public void setErrors(ErrorsDTO errors) {\r\n        this.errors = errors;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/AgeQualifyingType.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\npublic enum AgeQualifyingType {\r\n    ADULT\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/AvailGuaranteeDTO.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\npublic class AvailGuaranteeDTO extends AbstractDTO{\r\n    private GuaranteeType guaranteeType;\r\n    private CardCode cardCode;\r\n    private TPAExtensionsDTO tpaExtensions;\r\n\r\n    public GuaranteeType getGuaranteeType() {\r\n        return guaranteeType;\r\n    }\r\n\r\n    public void setGuaranteeType(GuaranteeType guaranteeType) {\r\n        this.guaranteeType = guaranteeType;\r\n    }\r\n\r\n    public CardCode getCardCode() {\r\n        return cardCode;\r\n    }\r\n\r\n    public void setCardCode(CardCode cardCode) {\r\n        this.cardCode = cardCode;\r\n    }\r\n\r\n    public TPAExtensionsDTO getTpaExtensions() {\r\n        return tpaExtensions;\r\n    }\r\n\r\n    public void setTpaExtensions(TPAExtensionsDTO tpaExtensions) {\r\n        this.tpaExtensions = tpaExtensions;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/AvailRoomStayDTO.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\nimport com.alibaba.fastjson.annotation.JSONField;\r\n\r\npublic class AvailRoomStayDTO extends AbstractDTO {\r\n    private RoomTypeDTO roomType;\r\n\r\n    private RatePlanDTO ratePlan;\r\n\r\n    private RoomRateDTO roomRate;\r\n\r\n    private Integer quantity;\r\n\r\n    private ProviderChainDTO providerChain;\r\n\r\n    private LanguageType languageType;\r\n\r\n    private TPAExtensionsDTO tpaExtensions;\r\n\r\n    public RoomTypeDTO getRoomType() {\r\n        return roomType;\r\n    }\r\n\r\n    public void setRoomType(RoomTypeDTO roomType) {\r\n        this.roomType = roomType;\r\n    }\r\n\r\n    public RatePlanDTO getRatePlan() {\r\n        return ratePlan;\r\n    }\r\n\r\n    public void setRatePlan(RatePlanDTO ratePlan) {\r\n        this.ratePlan = ratePlan;\r\n    }\r\n\r\n    public RoomRateDTO getRoomRate() {\r\n        return roomRate;\r\n    }\r\n\r\n    public void setRoomRate(RoomRateDTO roomRate) {\r\n        this.roomRate = roomRate;\r\n    }\r\n\r\n    public Integer getQuantity() {\r\n        return quantity;\r\n    }\r\n\r\n    public void setQuantity(Integer quantity) {\r\n        this.quantity = quantity;\r\n    }\r\n\r\n    @JSONField(name=\"PC\")\r\n    public ProviderChainDTO getProviderChain() {\r\n        return providerChain;\r\n    }\r\n\r\n    @JSONField(name=\"PC\")\r\n    public void setProviderChain(ProviderChainDTO providerChain) {\r\n        this.providerChain = providerChain;\r\n    }\r\n\r\n    @JSONField(name=\"LT\")\r\n    public LanguageType getLanguageType() {\r\n        return languageType;\r\n    }\r\n\r\n    @JSONField(name=\"LT\")\r\n    public void setLanguageType(LanguageType languageType) {\r\n        this.languageType = languageType;\r\n    }\r\n\r\n    public TPAExtensionsDTO getTpaExtensions() {\r\n        return tpaExtensions;\r\n    }\r\n\r\n    public void setTpaExtensions(TPAExtensionsDTO tpaExtensions) {\r\n        this.tpaExtensions = tpaExtensions;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/BathType.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\npublic enum BathType {\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/CancelPenaltyType.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\npublic enum CancelPenaltyType {\r\n    UNKNOWN\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/CancelPolicyDTO.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\nimport com.alibaba.fastjson.annotation.JSONField;\r\n\r\npublic class CancelPolicyDTO extends AbstractDTO{\r\n    private CancelPenaltyType cancelPenaltyType;\r\n    private String deadline;\r\n    private String description;\r\n\r\n    public CancelPenaltyType getCancelPenaltyType() {\r\n        return cancelPenaltyType;\r\n    }\r\n\r\n    public void setCancelPenaltyType(CancelPenaltyType cancelPenaltyType) {\r\n        this.cancelPenaltyType = cancelPenaltyType;\r\n    }\r\n\r\n    public String getDeadline() {\r\n        return deadline;\r\n    }\r\n\r\n    public void setDeadline(String deadline) {\r\n        this.deadline = deadline;\r\n    }\r\n\r\n    @JSONField(name=\"DESC\")\r\n    public String getDescription() {\r\n        return description;\r\n    }\r\n\r\n    @JSONField(name=\"DESC\")\r\n    public void setDescription(String description) {\r\n        this.description = description;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/CardCode.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\npublic enum CardCode {\r\n    VISA\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/ChargeItemDTO.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\nimport java.math.BigDecimal;\r\n\r\npublic class ChargeItemDTO extends AbstractDTO{\r\n    private ChargeUnit unit;\r\n    private ChargeType type;\r\n    private BigDecimal value;\r\n    private String description;\r\n\r\n    public ChargeUnit getUnit() {\r\n        return unit;\r\n    }\r\n\r\n    public void setUnit(ChargeUnit unit) {\r\n        this.unit = unit;\r\n    }\r\n\r\n    public ChargeType getType() {\r\n        return type;\r\n    }\r\n\r\n    public void setType(ChargeType type) {\r\n        this.type = type;\r\n    }\r\n\r\n    public BigDecimal getValue() {\r\n        return value;\r\n    }\r\n\r\n    public void setValue(BigDecimal value) {\r\n        this.value = value;\r\n    }\r\n\r\n    public String getDescription() {\r\n        return description;\r\n    }\r\n\r\n    public void setDescription(String description) {\r\n        this.description = description;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/ChargeType.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\npublic enum ChargeType {\r\n    FIXED\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/ChargeUnit.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\npublic enum ChargeUnit {\r\n    PER_NIGHT\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/CompositeType.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\npublic enum CompositeType {\r\n    UNKNOWN\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/Currency.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\npublic enum Currency {\r\n    CNY\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/DateRangeDTO.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\nimport java.util.Date;\r\n\r\npublic class DateRangeDTO extends AbstractDTO{\r\n    private Date start;\r\n    private Date end;\r\n\r\n    public Date getStart() {\r\n        return start;\r\n    }\r\n\r\n    public void setStart(Date start) {\r\n        this.start = start;\r\n    }\r\n\r\n    public Date getEnd() {\r\n        return end;\r\n    }\r\n\r\n    public void setEnd(Date end) {\r\n        this.end = end;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/ErrorsDTO.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\npublic class ErrorsDTO extends AbstractDTO {\r\n    private List<WarningDTO> errors = new ArrayList<WarningDTO>();\r\n\r\n    public List<WarningDTO> getErrors() {\r\n        return errors;\r\n    }\r\n\r\n    public void setErrors(List<WarningDTO> errors) {\r\n        this.errors = errors;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/FreeMealDTO.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\npublic class FreeMealDTO extends AbstractDTO{\r\n    private FreeMealType type;\r\n\r\n    public FreeMealType getType() {\r\n        return type;\r\n    }\r\n\r\n    public void setType(FreeMealType type) {\r\n        this.type = type;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/FreeMealType.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\npublic enum FreeMealType {\r\n    NONE\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/GenericRS.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\n\r\npublic class  GenericRS<T> extends AbstractRS{\r\n    private ResponseHeader header;\r\n    private T payload;\r\n\r\n    public T getPayload() {\r\n        return payload;\r\n    }\r\n\r\n    public void setPayload(T payload) {\r\n        this.payload = payload;\r\n    }\r\n\r\n    public ResponseHeader getHeader() {\r\n        return header;\r\n    }\r\n\r\n    public void setHeader(ResponseHeader header) {\r\n        this.header = header;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/GuaranteeType.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\npublic enum GuaranteeType {\r\n    CreditCard\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/GuestCountDTO.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\npublic class GuestCountDTO extends AbstractDTO{\r\n    private AgeQualifyingType ageQualifyingType;\r\n    private int count;\r\n\r\n    public GuestCountDTO() {\r\n    }\r\n\r\n    public GuestCountDTO(AgeQualifyingType ageQualifyingType, int count) {\r\n        this.ageQualifyingType = ageQualifyingType;\r\n    }\r\n\r\n    public AgeQualifyingType getAgeQualifyingType() {\r\n        return ageQualifyingType;\r\n    }\r\n\r\n    public void setAgeQualifyingType(AgeQualifyingType ageQualifyingType) {\r\n        this.ageQualifyingType = ageQualifyingType;\r\n    }\r\n\r\n    public int getCount() {\r\n        return count;\r\n    }\r\n\r\n    public void setCount(int count) {\r\n        this.count = count;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/HotelAvailRS.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\npublic class HotelAvailRS extends AbstractRS {\r\n    private HotelAvailRoomStayDTO hotelAvailRoomStay;\r\n\r\n    private TPAExtensionsDTO tpaExtensions;\r\n\r\n    public HotelAvailRoomStayDTO getHotelAvailRoomStay() {\r\n        return hotelAvailRoomStay;\r\n    }\r\n\r\n    public void setHotelAvailRoomStay(HotelAvailRoomStayDTO hotelAvailRoomStay) {\r\n        this.hotelAvailRoomStay = hotelAvailRoomStay;\r\n    }\r\n\r\n    public TPAExtensionsDTO getTpaExtensions() {\r\n        return tpaExtensions;\r\n    }\r\n\r\n    public void setTpaExtensions(TPAExtensionsDTO tpaExtensions) {\r\n        this.tpaExtensions = tpaExtensions;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/HotelAvailRoomStayDTO.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\npublic class HotelAvailRoomStayDTO extends AbstractDTO{\r\n\r\n\r\n    private List<AvailRoomStayDTO> roomStays = new ArrayList<AvailRoomStayDTO>();\r\n\r\n    private HotelRefDTO hotelRef;\r\n\r\n    private TPAExtensionsDTO tpaExtensions;\r\n\r\n    public List<AvailRoomStayDTO> getRoomStays() {\r\n        return roomStays;\r\n    }\r\n\r\n    public void setRoomStays(List<AvailRoomStayDTO> roomStays) {\r\n        this.roomStays = roomStays;\r\n    }\r\n\r\n    public HotelRefDTO getHotelRef() {\r\n        return hotelRef;\r\n    }\r\n\r\n    public void setHotelRef(HotelRefDTO hotelRef) {\r\n        this.hotelRef = hotelRef;\r\n    }\r\n\r\n    public TPAExtensionsDTO getTpaExtensions() {\r\n        return tpaExtensions;\r\n    }\r\n\r\n    public void setTpaExtensions(TPAExtensionsDTO tpaExtensions) {\r\n        this.tpaExtensions = tpaExtensions;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/HotelRefDTO.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\npublic class HotelRefDTO extends AbstractDTO{\r\n\r\n    private String code;\r\n\r\n    private String name;\r\n\r\n    private String chainCode;\r\n\r\n    private String brandCode;\r\n\r\n    private TPAExtensionsDTO tpaExtensions;\r\n\r\n    public HotelRefDTO() {\r\n    }\r\n\r\n    public HotelRefDTO(String code) {\r\n        this.code = code;\r\n    }\r\n\r\n    public String getCode() {\r\n        return code;\r\n    }\r\n\r\n    public String getName() {\r\n        return name;\r\n    }\r\n\r\n    public void setName(String name) {\r\n        this.name = name;\r\n    }\r\n\r\n    public String getChainCode() {\r\n        return chainCode;\r\n    }\r\n\r\n    public void setChainCode(String chainCode) {\r\n        this.chainCode = chainCode;\r\n    }\r\n\r\n    public String getBrandCode() {\r\n        return brandCode;\r\n    }\r\n\r\n    public void setBrandCode(String brandCode) {\r\n        this.brandCode = brandCode;\r\n    }\r\n\r\n    public void setCode(String code) {\r\n        this.code = code;\r\n    }\r\n\r\n    public TPAExtensionsDTO getTpaExtensions() {\r\n        return tpaExtensions;\r\n    }\r\n\r\n    public void setTpaExtensions(TPAExtensionsDTO tpaExtensions) {\r\n        this.tpaExtensions = tpaExtensions;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/InternetDTO.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\npublic class InternetDTO extends AbstractDTO{\r\n\r\n    private InternetType internetType;\r\n    private String chargeInfo;\r\n\r\n    private TPAExtensionsDTO tpaExtensions;\r\n\r\n    public InternetType getInternetType() {\r\n        return internetType;\r\n    }\r\n\r\n    public void setInternetType(InternetType internetType) {\r\n        this.internetType = internetType;\r\n    }\r\n\r\n    public String getChargeInfo() {\r\n        return chargeInfo;\r\n    }\r\n\r\n    public void setChargeInfo(String chargeInfo) {\r\n        this.chargeInfo = chargeInfo;\r\n    }\r\n\r\n    public TPAExtensionsDTO getTpaExtensions() {\r\n        return tpaExtensions;\r\n    }\r\n\r\n    public void setTpaExtensions(TPAExtensionsDTO tpaExtensions) {\r\n        this.tpaExtensions = tpaExtensions;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/InternetType.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\npublic enum InternetType {\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/LanguageType.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\npublic enum LanguageType {\r\n    ZH_CN\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/MealsIncludedDTO.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\npublic class MealsIncludedDTO extends AbstractDTO{\r\n    private MealsIncludedType mealsIncludedType;\r\n\r\n    private int breakfastNumber;\r\n\r\n    public MealsIncludedDTO() {\r\n    }\r\n\r\n    public MealsIncludedDTO(MealsIncludedType type) {\r\n    }\r\n\r\n    public MealsIncludedType getMealsIncludedType() {\r\n        return mealsIncludedType;\r\n    }\r\n\r\n    public void setMealsIncludedType(MealsIncludedType mealsIncludedType) {\r\n        this.mealsIncludedType = mealsIncludedType;\r\n    }\r\n\r\n    public int getBreakfastNumber() {\r\n        return breakfastNumber;\r\n    }\r\n\r\n    public void setBreakfastNumber(int breakfastNumber) {\r\n        this.breakfastNumber = breakfastNumber;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/MealsIncludedType.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\npublic enum MealsIncludedType {\r\n    UNKNOWN\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/PaymentType.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\npublic enum PaymentType {\r\n    POA,\r\n    PREPAY\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/ProviderChainDTO.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\nimport java.util.List;\r\n\r\npublic class ProviderChainDTO extends  AbstractDTO{\r\n    private List<UniqueIDDTO> providers;\r\n\r\n\r\n    public List<UniqueIDDTO> getProviders() {\r\n        return providers;\r\n    }\r\n\r\n    public void setProviders(List<UniqueIDDTO> providers) {\r\n        this.providers = providers;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/RateDTO.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\npublic class RateDTO extends AbstractDTO{\r\n    private DateRangeDTO dateRange;\r\n    private SimpleAmountDTO pureAmount;\r\n    private MealsIncludedDTO mealsIncluded;\r\n\r\n    public DateRangeDTO getDateRange() {\r\n        return dateRange;\r\n    }\r\n\r\n    public void setDateRange(DateRangeDTO dateRange) {\r\n        this.dateRange = dateRange;\r\n    }\r\n\r\n    public SimpleAmountDTO getPureAmount() {\r\n        return pureAmount;\r\n    }\r\n\r\n    public void setPureAmount(SimpleAmountDTO pureAmount) {\r\n        this.pureAmount = pureAmount;\r\n    }\r\n\r\n    public MealsIncludedDTO getMealsIncluded() {\r\n        return mealsIncluded;\r\n    }\r\n\r\n    public void setMealsIncluded(MealsIncludedDTO mealsIncluded) {\r\n        this.mealsIncluded = mealsIncluded;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/RatePlanDTO.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\nimport java.util.List;\r\n\r\npublic class RatePlanDTO extends AbstractDTO{\r\n    private String code;\r\n    private String name;\r\n    private FreeMealDTO freeMeal;\r\n    private PaymentType paymentType;\r\n    private List<ChargeItemDTO> taxes;\r\n    private List<ChargeItemDTO> serviceCharges;\r\n    private boolean needGuarantee;\r\n    private CancelPolicyDTO cancelPolicy;\r\n    private List<AvailGuaranteeDTO> availGuarantees;\r\n\r\n    public String getCode() {\r\n        return code;\r\n    }\r\n\r\n    public void setCode(String code) {\r\n        this.code = code;\r\n    }\r\n\r\n    public String getName() {\r\n        return name;\r\n    }\r\n\r\n    public void setName(String name) {\r\n        this.name = name;\r\n    }\r\n\r\n    public FreeMealDTO getFreeMeal() {\r\n        return freeMeal;\r\n    }\r\n\r\n    public void setFreeMeal(FreeMealDTO freeMeal) {\r\n        this.freeMeal = freeMeal;\r\n    }\r\n\r\n    public PaymentType getPaymentType() {\r\n        return paymentType;\r\n    }\r\n\r\n    public void setPaymentType(PaymentType paymentType) {\r\n        this.paymentType = paymentType;\r\n    }\r\n\r\n    public List<ChargeItemDTO> getTaxes() {\r\n        return taxes;\r\n    }\r\n\r\n    public void setTaxes(List<ChargeItemDTO> taxes) {\r\n        this.taxes = taxes;\r\n    }\r\n\r\n    public List<ChargeItemDTO> getServiceCharges() {\r\n        return serviceCharges;\r\n    }\r\n\r\n    public void setServiceCharges(List<ChargeItemDTO> serviceCharges) {\r\n        this.serviceCharges = serviceCharges;\r\n    }\r\n\r\n    public boolean isNeedGuarantee() {\r\n        return needGuarantee;\r\n    }\r\n\r\n    public void setNeedGuarantee(boolean needGuarantee) {\r\n        this.needGuarantee = needGuarantee;\r\n    }\r\n\r\n    public CancelPolicyDTO getCancelPolicy() {\r\n        return cancelPolicy;\r\n    }\r\n\r\n    public void setCancelPolicy(CancelPolicyDTO cancelPolicy) {\r\n        this.cancelPolicy = cancelPolicy;\r\n    }\r\n\r\n    public List<AvailGuaranteeDTO> getAvailGuarantees() {\r\n        return availGuarantees;\r\n    }\r\n\r\n    public void setAvailGuarantees(List<AvailGuaranteeDTO> availGuarantees) {\r\n        this.availGuarantees = availGuarantees;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/ResponseHeader.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\npublic class ResponseHeader extends AbstractDTO{\r\n    private String taskId;\r\n\r\n    public ResponseHeader() {\r\n    }\r\n\r\n    public ResponseHeader(String taskId) {\r\n        this.taskId = taskId;\r\n    }\r\n\r\n    public String getTaskId() {\r\n        return taskId;\r\n    }\r\n\r\n    public void setTaskId(String taskId) {\r\n        this.taskId = taskId;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/RoomRateDTO.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\nimport java.util.List;\r\n\r\npublic class RoomRateDTO extends AbstractDTO{\r\n    private List<RateDTO> rates;\r\n\r\n    public List<RateDTO> getRates() {\r\n        return rates;\r\n    }\r\n\r\n    public void setRates(List<RateDTO> rates) {\r\n        this.rates = rates;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/RoomStayCandidateDTO.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\nimport com.alibaba.fastjson.annotation.JSONField;\r\n\r\npublic class RoomStayCandidateDTO extends AbstractDTO{\r\n    private int numberOfUnits;\r\n    private List<GuestCountDTO> guests = new ArrayList<GuestCountDTO>();\r\n\r\n    public RoomStayCandidateDTO() {\r\n    }\r\n\r\n    public RoomStayCandidateDTO(int numberOfUnits, List<GuestCountDTO> guests) {\r\n        this.numberOfUnits = numberOfUnits;\r\n        this.guests = guests;\r\n    }\r\n\r\n    @JSONField(name=\"Unit\")\r\n    public int getNumberOfUnits() {\r\n        return numberOfUnits;\r\n    }\r\n\r\n    @JSONField(name=\"Unit\")\r\n    public void setNumberOfUnits(int numberOfUnits) {\r\n        this.numberOfUnits = numberOfUnits;\r\n    }\r\n\r\n    public List<GuestCountDTO> getGuests() {\r\n        return guests;\r\n    }\r\n\r\n    public void setGuests(List<GuestCountDTO> guests) {\r\n        this.guests = guests;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/RoomTypeDTO.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\npublic class RoomTypeDTO extends AbstractDTO {\r\n    private String code;\r\n\r\n    private String name;\r\n\r\n    private String description;\r\n\r\n    private List<String> amenities = new ArrayList<String>();\r\n\r\n    private CompositeType compositeType = CompositeType.UNKNOWN;\r\n\r\n    private Integer floor;\r\n\r\n    private SmokingType smokingType = SmokingType.INDIFFERENT;\r\n\r\n    private String sizeMeasurement;\r\n\r\n    private Integer bedCount;\r\n\r\n    private Integer adultCount;\r\n\r\n    private Integer childCount;\r\n\r\n    private Integer maxGuestCount;\r\n\r\n    private Integer extraBedCount;\r\n\r\n    private BathType bathType;\r\n\r\n    private InternetDTO internet;\r\n\r\n    private TPAExtensionsDTO tpaExtensions;\r\n\r\n    public RoomTypeDTO() {\r\n    }\r\n\r\n    public RoomTypeDTO(String code, String name) {\r\n        this.code = code;\r\n        this.name = name;\r\n    }\r\n\r\n    public String getCode() {\r\n        return code;\r\n    }\r\n\r\n    public void setCode(String code) {\r\n        this.code = code;\r\n    }\r\n\r\n    public String getName() {\r\n        return name;\r\n    }\r\n\r\n    public void setName(String name) {\r\n        this.name = name;\r\n    }\r\n\r\n    public String getDescription() {\r\n        return description;\r\n    }\r\n\r\n    public void setDescription(String description) {\r\n        this.description = description;\r\n    }\r\n\r\n    public List<String> getAmenities() {\r\n        return amenities;\r\n    }\r\n\r\n    public void setAmenities(List<String> amenities) {\r\n        this.amenities = amenities;\r\n    }\r\n\r\n    public CompositeType getCompositeType() {\r\n        return compositeType;\r\n    }\r\n\r\n    public void setCompositeType(CompositeType compositeType) {\r\n        this.compositeType = compositeType;\r\n    }\r\n\r\n    public Integer getFloor() {\r\n        return floor;\r\n    }\r\n\r\n    public void setFloor(Integer floor) {\r\n        this.floor = floor;\r\n    }\r\n\r\n    public SmokingType getSmokingType() {\r\n        return smokingType;\r\n    }\r\n\r\n    public void setSmokingType(SmokingType smokingType) {\r\n        this.smokingType = smokingType;\r\n    }\r\n\r\n    public String getSizeMeasurement() {\r\n        return sizeMeasurement;\r\n    }\r\n\r\n    public void setSizeMeasurement(String sizeMeasurement) {\r\n        this.sizeMeasurement = sizeMeasurement;\r\n    }\r\n\r\n    public TPAExtensionsDTO getTpaExtensions() {\r\n        return tpaExtensions;\r\n    }\r\n\r\n    public void setTpaExtensions(TPAExtensionsDTO tpaExtensions) {\r\n        this.tpaExtensions = tpaExtensions;\r\n    }\r\n\r\n    public Integer getAdultCount() {\r\n        return adultCount;\r\n    }\r\n\r\n    public void setAdultCount(Integer adultCount) {\r\n        this.adultCount = adultCount;\r\n    }\r\n\r\n    public Integer getChildCount() {\r\n        return childCount;\r\n    }\r\n\r\n    public void setChildCount(Integer childCount) {\r\n        this.childCount = childCount;\r\n    }\r\n\r\n    public Integer getMaxGuestCount() {\r\n        return maxGuestCount;\r\n    }\r\n\r\n    public void setMaxGuestCount(Integer maxGuestCount) {\r\n        this.maxGuestCount = maxGuestCount;\r\n    }\r\n\r\n    public Integer getExtraBedCount() {\r\n        return extraBedCount;\r\n    }\r\n\r\n    public void setExtraBedCount(Integer extraBedCount) {\r\n        this.extraBedCount = extraBedCount;\r\n    }\r\n\r\n    public BathType getBathType() {\r\n        return bathType;\r\n    }\r\n\r\n    public void setBathType(BathType bathType) {\r\n        this.bathType = bathType;\r\n    }\r\n\r\n    public Integer getBedCount() {\r\n        return bedCount;\r\n    }\r\n\r\n    public void setBedCount(Integer bedCount) {\r\n        this.bedCount = bedCount;\r\n    }\r\n\r\n    public InternetDTO getInternet() {\r\n        return internet;\r\n    }\r\n\r\n    public void setInternet(InternetDTO internet) {\r\n        this.internet = internet;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/SimpleAmountDTO.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\nimport java.math.BigDecimal;\r\n\r\npublic class SimpleAmountDTO extends AbstractDTO{\r\n    private Currency currency;\r\n    private BigDecimal amount;\r\n\r\n    public Currency getCurrency() {\r\n        return currency;\r\n    }\r\n\r\n    public void setCurrency(Currency currency) {\r\n        this.currency = currency;\r\n    }\r\n\r\n    public BigDecimal getAmount() {\r\n        return amount;\r\n    }\r\n\r\n    public void setAmount(BigDecimal amount) {\r\n        this.amount = amount;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/SmokingType.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\npublic enum SmokingType {\r\n    INDIFFERENT\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/StayDateRangeDTO.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\nimport java.util.Date;\r\n\r\npublic class StayDateRangeDTO extends AbstractDTO {\r\n    private Date checkInDate;\r\n    private Date checkOutDate;\r\n\r\n    public StayDateRangeDTO() {\r\n    }\r\n\r\n    public StayDateRangeDTO(Date checkInDate, Date checkOutDate) {\r\n         this.checkInDate = checkInDate;\r\n        this.checkOutDate = checkOutDate;\r\n    }\r\n\r\n    public Date getCheckInDate() {\r\n        return checkInDate;\r\n    }\r\n\r\n    public void setCheckInDate(Date checkInDate) {\r\n        this.checkInDate = checkInDate;\r\n    }\r\n\r\n    public Date getCheckOutDate() {\r\n        return checkOutDate;\r\n    }\r\n\r\n    public void setCheckOutDate(Date checkOutDate) {\r\n        this.checkOutDate = checkOutDate;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/SuccessDTO.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\npublic class SuccessDTO extends AbstractDTO {\r\n    private List<String> messages = new ArrayList<String>();\r\n\r\n    public List<String> getMessages() {\r\n        return messages;\r\n    }\r\n\r\n    public void setMessages(List<String> infos) {\r\n        this.messages = infos;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/TPAExtensionsDTO.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\n\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\n\r\npublic class TPAExtensionsDTO extends AbstractDTO {\r\n    private Map<String,String> elements = new HashMap<String, String>();\r\n\r\n    public Map<String,String> getElements() {\r\n        return elements;\r\n    }\r\n\r\n    public void setElements(Map<String, String> elements) {\r\n        this.elements = elements;\r\n    }\r\n\r\n    public void setElement(String key, String value) {\r\n        elements.put(key,value);\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/UniqueIDDTO.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\nimport com.alibaba.fastjson.annotation.JSONField;\r\n\r\npublic class UniqueIDDTO extends AbstractDTO{\r\n    private String companyName;\r\n    private String code;\r\n    private UniqueIDType type;\r\n\r\n    public UniqueIDDTO() {\r\n    }\r\n\r\n    public UniqueIDDTO(String code, UniqueIDType type) {\r\n        this.code = code;\r\n        this.type = type;\r\n    }\r\n\r\n    @JSONField(name=\"CName\")\r\n    public String getCompanyName() {\r\n        return companyName;\r\n    }\r\n\r\n    @JSONField(name=\"CName\")\r\n    public void setCompanyName(String companyName) {\r\n        this.companyName = companyName;\r\n    }\r\n\r\n    public String getCode() {\r\n        return code;\r\n    }\r\n\r\n    public void setCode(String code) {\r\n        this.code = code;\r\n    }\r\n\r\n    public UniqueIDType getType() {\r\n        return type;\r\n    }\r\n\r\n    public void setType(UniqueIDType type) {\r\n        this.type = type;\r\n    }\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/UniqueIDType.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\npublic enum UniqueIDType {\r\n    HOTEL\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/WarningDTO.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\npublic class WarningDTO extends  AbstractDTO{\r\n    private String code;\r\n\tprivate String message;\r\n\r\n\tpublic String getCode() {\r\n\t\treturn code;\r\n\t}\r\n\tpublic void setCode(String code) {\r\n\t\tthis.code = code;\r\n\t}\r\n\tpublic String getMessage() {\r\n\t\treturn message;\r\n\t}\r\n\tpublic void setMessage(String message) {\r\n\t\tthis.message = message;\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/derbysoft/spitfire/fastjson/dto/WarningsDTO.java",
    "content": "package com.derbysoft.spitfire.fastjson.dto;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\npublic class WarningsDTO extends AbstractDTO{\r\n    private List<WarningDTO> warningList = new ArrayList<WarningDTO>();\r\n\r\n    public List<WarningDTO> getWarningList() {\r\n        return warningList;\r\n    }\r\n\r\n    public void setWarningList(List<WarningDTO> warnings) {\r\n        this.warningList = warnings;\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "src/test/java/com/mchange/v2/c3p0/impl/PoolBackedDataSourceBase.java",
    "content": "package com.mchange.v2.c3p0.impl;\n\n/**\n * Created by wenshao on 27/01/2017.\n */\npublic class PoolBackedDataSourceBase {\n\n}\n"
  },
  {
    "path": "src/test/java/com/wheelchair/parser/JSONScannerTest.java",
    "content": "package com.wheelchair.parser;\n\nimport com.diffblue.deeptestutils.Reflector;\nimport org.junit.Assert;\nimport org.junit.Test;\n\nimport java.lang.reflect.Method;\n\nimport static org.junit.Assert.*;\nimport com.diffblue.deeptestutils.Reflector;\n\n\npublic class JSONScannerTest {\n\n    @Test\n    public void checkDate1() throws Throwable {\n        // Arrange\n        char y0 = '2';\n        char y1 = '0';\n        char y2 = '2';\n        char y3 = '0';\n        char M0 = '0';\n        char M1 = '2';\n        int d0 = 48;\n        int d1 = 52;\n\n        // Act\n        Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n        Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n        m.setAccessible(true);\n        boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n        // Assert result\n        Assert.assertEquals(true, retval);\n    }\n    @Test\n    public void checkDate2() throws Throwable {\n        // Arrange\n        char y0 = '2';\n        char y1 = '0';\n        char y2 = '2';\n        char y3 = '0';\n        char M0 = '0';\n        char M1 = '2';\n        int d0 = 48;\n        int d1 = 48;\n\n        // Act\n        Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n        Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n        m.setAccessible(true);\n        boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n        // Assert result\n        Assert.assertEquals(false, retval);\n    }\n    @Test\n    public void checkDate3() throws Throwable {\n        // Arrange\n        char y0 = '2';\n        char y1 = '0';\n        char y2 = '2';\n        char y3 = '0';\n        char M0 = '0';\n        char M1 = '2';\n        int d0 = 48;\n        int d1 = 97;\n\n        // Act\n        Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n        Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n        m.setAccessible(true);\n        boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n        // Assert result\n        Assert.assertEquals(false, retval);\n    }\n    @Test\n    public void checkDate4() throws Throwable {\n        // Arrange\n        char y0 = '2';\n        char y1 = '0';\n        char y2 = '2';\n        char y3 = '0';\n        char M0 = '0';\n        char M1 = '2';\n        int d0 = 49;\n        int d1 = 52;\n\n        // Act\n        Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n        Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n        m.setAccessible(true);\n        boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n        // Assert result\n        Assert.assertEquals(true, retval);\n    }\n    @Test\n    public void checkDate5() throws Throwable {\n        // Arrange\n        char y0 = '2';\n        char y1 = '0';\n        char y2 = '2';\n        char y3 = '0';\n        char M0 = '0';\n        char M1 = '2';\n        int d0 = 49;\n        int d1 = 21;\n\n        // Act\n        Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n        Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n        m.setAccessible(true);\n        boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n        // Assert result\n        Assert.assertEquals(false, retval);\n    }\n    @Test\n    public void checkDate6() throws Throwable {\n        // Arrange\n        char y0 = '2';\n        char y1 = '0';\n        char y2 = '2';\n        char y3 = '0';\n        char M0 = '0';\n        char M1 = '2';\n        int d0 = 49;\n        int d1 = 97;\n\n        // Act\n        Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n        Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n        m.setAccessible(true);\n        boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n        // Assert result\n        Assert.assertEquals(false, retval);\n    }\n    @Test\n    public void checkDate7() throws Throwable {\n        // Arrange\n        char y0 = '2';\n        char y1 = '0';\n        char y2 = '2';\n        char y3 = '0';\n        char M0 = '0';\n        char M1 = '2';\n        int d0 = 51;\n        int d1 = 49;\n\n        // Act\n        Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n        Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n        m.setAccessible(true);\n        boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n        // Assert result\n        Assert.assertEquals(true, retval);\n    }\n    @Test\n    public void checkDate8() throws Throwable {\n        // Arrange\n        char y0 = '2';\n        char y1 = '0';\n        char y2 = '2';\n        char y3 = '0';\n        char M0 = '0';\n        char M1 = '2';\n        int d0 = 51;\n        int d1 = 21;\n\n        // Act\n        Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n        Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n        m.setAccessible(true);\n        boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n        // Assert result\n        Assert.assertEquals(false, retval);\n    }\n    @Test\n    public void checkDate9() throws Throwable {\n        // Arrange\n        char y0 = '2';\n        char y1 = '0';\n        char y2 = '2';\n        char y3 = '0';\n        char M0 = '0';\n        char M1 = '2';\n        int d0 = 51;\n        int d1 = 52;\n\n        // Act\n        Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n        Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n        m.setAccessible(true);\n        boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n        // Assert result\n        Assert.assertEquals(false, retval);\n    }\n    @Test\n    public void checkDate10() throws Throwable {\n        // Arrange\n        char y0 = '2';\n        char y1 = '0';\n        char y2 = '2';\n        char y3 = '0';\n        char M0 = '0';\n        char M1 = '2';\n        int d0 = 21;\n        int d1 = 52;\n\n        // Act\n        Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n        Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n        m.setAccessible(true);\n        boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n        // Assert result\n        Assert.assertEquals(false, retval);\n    }\n    @Test\n    public void checkDate11() throws Throwable {\n        // Arrange\n        char y0 = '2';\n        char y1 = '0';\n        char y2 = '2';\n        char y3 = '0';\n        char M0 = '0';\n        char M1 = '2';\n        int d0 = 52;\n        int d1 = 52;\n\n        // Act\n        Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n        Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n        m.setAccessible(true);\n        boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n        // Assert result\n        Assert.assertEquals(false, retval);\n    }\n    @Test\n    public void checkDate12() throws Throwable {\n        // Arrange\n        char y0 = '2';\n        char y1 = '0';\n        char y2 = '2';\n        char y3 = '0';\n        char M0 = '0';\n        char M1 = '0';\n        int d0 = 48;\n        int d1 = 52;\n\n        // Act\n        Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n        Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n        m.setAccessible(true);\n        boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n        // Assert result\n        Assert.assertEquals(false, retval);\n    }\n    @Test\n    public void checkDate13() throws Throwable {\n        // Arrange\n        char y0 = '2';\n        char y1 = '0';\n        char y2 = '2';\n        char y3 = '0';\n        char M0 = '0';\n        char M1 = 'a';\n        int d0 = 48;\n        int d1 = 52;\n\n        // Act\n        Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n        Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n        m.setAccessible(true);\n        boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n        // Assert result\n        Assert.assertEquals(false, retval);\n    }\n    @Test\n    public void checkDate14() throws Throwable {\n        // Arrange\n        char y0 = '2';\n        char y1 = '0';\n        char y2 = '2';\n        char y3 = '0';\n        char M0 = '1';\n        char M1 = '0';\n        int d0 = 48;\n        int d1 = 52;\n\n        // Act\n        Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n        Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n        m.setAccessible(true);\n        boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n        // Assert result\n        Assert.assertEquals(true, retval);\n    }\n    @Test\n    public void checkDate15() throws Throwable {\n        // Arrange\n        char y0 = '2';\n        char y1 = '0';\n        char y2 = '2';\n        char y3 = '0';\n        char M0 = '1';\n        char M1 = '!';\n        int d0 = 48;\n        int d1 = 52;\n\n        // Act\n        Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n        Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n        m.setAccessible(true);\n        boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n        // Assert result\n        Assert.assertEquals(false, retval);\n    }\n    @Test\n    public void checkDate16() throws Throwable {\n        // Arrange\n        char y0 = '2';\n        char y1 = '0';\n        char y2 = '2';\n        char y3 = '0';\n        char M0 = '1';\n        char M1 = '3';\n        int d0 = 48;\n        int d1 = 52;\n\n        // Act\n        Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n        Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n        m.setAccessible(true);\n        boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n        // Assert result\n        Assert.assertEquals(false, retval);\n    }\n    @Test\n    public void checkDate17() throws Throwable {\n        // Arrange\n        char y0 = '2';\n        char y1 = '0';\n        char y2 = '2';\n        char y3 = '0';\n        char M0 = '!';\n        char M1 = '2';\n        int d0 = 48;\n        int d1 = 52;\n\n        // Act\n        Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n        Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n        m.setAccessible(true);\n        boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n        // Assert result\n        Assert.assertEquals(false, retval);\n    }\n    @Test\n    public void checkDate18() throws Throwable {\n        // Arrange\n        char y0 = '2';\n        char y1 = '0';\n        char y2 = '2';\n        char y3 = '0';\n        char M0 = '2';\n        char M1 = '2';\n        int d0 = 48;\n        int d1 = 52;\n\n        // Act\n        Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n        Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n        m.setAccessible(true);\n        boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n        // Assert result\n        Assert.assertEquals(false, retval);\n    }\n    @Test\n    public void checkDate19() throws Throwable {\n        // Arrange\n        char y0 = '2';\n        char y1 = '0';\n        char y2 = '2';\n        char y3 = '!';\n        char M0 = '0';\n        char M1 = '2';\n        int d0 = 48;\n        int d1 = 52;\n\n        // Act\n        Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n        Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n        m.setAccessible(true);\n        boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n        // Assert result\n        Assert.assertEquals(false, retval);\n    }\n    @Test\n    public void checkDate20() throws Throwable {\n        // Arrange\n        char y0 = '2';\n        char y1 = '0';\n        char y2 = '2';\n        char y3 = 'a';\n        char M0 = '0';\n        char M1 = '2';\n        int d0 = 48;\n        int d1 = 52;\n\n        // Act\n        Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n        Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n        m.setAccessible(true);\n        boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n        // Assert result\n        Assert.assertEquals(false, retval);\n    }\n    @Test\n    public void checkDate21() throws Throwable {\n        // Arrange\n        char y0 = '2';\n        char y1 = '0';\n        char y2 = '!';\n        char y3 = '0';\n        char M0 = '0';\n        char M1 = '2';\n        int d0 = 48;\n        int d1 = 52;\n\n        // Act\n        Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n        Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n        m.setAccessible(true);\n        boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n        // Assert result\n        Assert.assertEquals(false, retval);\n    }\n    @Test\n    public void checkDate22() throws Throwable {\n        // Arrange\n        char y0 = '2';\n        char y1 = '0';\n        char y2 = 'a';\n        char y3 = '0';\n        char M0 = '0';\n        char M1 = '2';\n        int d0 = 48;\n        int d1 = 52;\n\n        // Act\n        Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n        Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n        m.setAccessible(true);\n        boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n        // Assert result\n        Assert.assertEquals(false, retval);\n    }\n    @Test\n    public void checkDate23() throws Throwable {\n        // Arrange\n        char y0 = '2';\n        char y1 = '!';\n        char y2 = '2';\n        char y3 = '0';\n        char M0 = '0';\n        char M1 = '2';\n        int d0 = 48;\n        int d1 = 52;\n\n        // Act\n        Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n        Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n        m.setAccessible(true);\n        boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n        // Assert result\n        Assert.assertEquals(false, retval);\n    }\n    @Test\n    public void checkDate24() throws Throwable {\n        // Arrange\n        char y0 = '2';\n        char y1 = 'a';\n        char y2 = '2';\n        char y3 = '0';\n        char M0 = '0';\n        char M1 = '2';\n        int d0 = 48;\n        int d1 = 52;\n\n        // Act\n        Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n        Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n        m.setAccessible(true);\n        boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n        // Assert result\n        Assert.assertEquals(false, retval);\n    }\n    @Test\n    public void checkDate25() throws Throwable {\n        // Arrange\n        char y0 = '!';\n        char y1 = '0';\n        char y2 = '2';\n        char y3 = '0';\n        char M0 = '0';\n        char M1 = '2';\n        int d0 = 48;\n        int d1 = 52;\n\n        // Act\n        Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n        Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n        m.setAccessible(true);\n        boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n        // Assert result\n        Assert.assertEquals(false, retval);\n    }\n    @Test\n    public void checkDate26() throws Throwable {\n        // Arrange\n        char y0 = 'a';\n        char y1 = '0';\n        char y2 = '2';\n        char y3 = '0';\n        char M0 = '0';\n        char M1 = '2';\n        int d0 = 48;\n        int d1 = 52;\n\n        // Act\n        Class<?> c = Reflector.forName(\"com.alibaba.fastjson.parser.JSONScanner\");\n        Method m = c.getDeclaredMethod(\"checkDate\", Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"char\"), Reflector.forName(\"int\"), Reflector.forName(\"int\"));\n        m.setAccessible(true);\n        boolean retval = (Boolean)m.invoke(null, y0, y1, y2, y3, M0, M1, d0, d1);\n\n        // Assert result\n        Assert.assertEquals(false, retval);\n    }\n}"
  },
  {
    "path": "src/test/java/com/wheelchair/validate/testcase_accurate_json.json",
    "content": "{\"string\":\"a\",\"nums\":[0,-1,10,0.123,1e5,-1e+6,0.1e-7],\"object\":{\"empty\":{},\"list\":[]},\"list\":[\"object\",{\"true\":true,\"false\":false,\"null\":null}]}"
  },
  {
    "path": "src/test/java/com/wheelchair/validate/testcase_colon_error.json",
    "content": "{\"colonError\"}"
  },
  {
    "path": "src/test/java/com/wheelchair/validate/testcase_num_error1.json",
    "content": "{\"num_err1\":+a}"
  },
  {
    "path": "src/test/java/com/wheelchair/validate/testcase_num_error2.json",
    "content": "{\"num_err1\":1ea}"
  },
  {
    "path": "src/test/java/com/wheelchair/validate/testcase_quotation_mark_error.json",
    "content": "{noQuotationMarksError}"
  },
  {
    "path": "src/test/java/com/wheelchair/validate/testcase_square_brackets_error.json",
    "content": "{\"square_brackets_error\": [1}"
  },
  {
    "path": "src/test/java/com/wheelchair/validate/testcase_tfn_error.json",
    "content": "{\"num_err1\":trua}"
  },
  {
    "path": "src/test/java/data/ReprUtil.java",
    "content": "package data;\n\npublic class ReprUtil\n{\n\tpublic static String repr(String s)\n\t{\n\t\tif (s == null) return \"null\";\n\t\treturn '\"' + s + '\"';\n\t}\n\n\tpublic static String repr(Iterable<String> it)\n\t{\n\t\tStringBuilder buf = new StringBuilder();\n\t\tbuf.append('[');\n\t\tString sep = \"\";\n\t\tfor (String s : it) {\n\t\t\tbuf.append(sep); sep = \", \";\n\t\t\tbuf.append(repr(s));\n\t\t}\n\t\tbuf.append(']');\n\t\treturn buf.toString();\n\t}\n}\n"
  },
  {
    "path": "src/test/java/data/media/FieldMapping.java",
    "content": "package data.media;\n\nimport java.util.HashMap;\n\npublic final class FieldMapping\n{\n\tpublic final static int FIELD_IX_MEDIA = 1;\n\tpublic final static String FULL_FIELD_NAME_MEDIA = \"media\";\n\tpublic final static int FIELD_IX_IMAGES = 2;\n\tpublic final static String FULL_FIELD_NAME_IMAGES = \"images\";\n\tpublic final static int FIELD_IX_PLAYER = 3;\n\tpublic final static String FULL_FIELD_NAME_PLAYER = \"player\";\n\tpublic final static int FIELD_IX_URI = 4;\n\tpublic final static String FULL_FIELD_NAME_URI = \"uri\";\n\tpublic final static int FIELD_IX_TITLE = 5;\n\tpublic final static String FULL_FIELD_NAME_TITLE = \"title\";\n\tpublic final static int FIELD_IX_WIDTH = 6;\n\tpublic final static String FULL_FIELD_NAME_WIDTH = \"width\";\n\tpublic final static int FIELD_IX_HEIGHT = 7;\n\tpublic final static String FULL_FIELD_NAME_HEIGHT = \"height\";\n\tpublic final static int FIELD_IX_FORMAT = 8;\n\tpublic final static String FULL_FIELD_NAME_FORMAT = \"format\";\n\tpublic final static int FIELD_IX_DURATION = 9;\n\tpublic final static String FULL_FIELD_NAME_DURATION = \"duration\";\n\tpublic final static int FIELD_IX_SIZE = 10;\n\tpublic final static String FULL_FIELD_NAME_SIZE = \"size\";\n\tpublic final static int FIELD_IX_BITRATE = 11;\n\tpublic final static String FULL_FIELD_NAME_BITRATE = \"bitrate\";\n\tpublic final static int FIELD_IX_PERSONS = 12;\n\tpublic final static String FULL_FIELD_NAME_PERSONS = \"persons\";\n\tpublic final static int FIELD_IX_COPYRIGHT = 13;\n\tpublic final static String FULL_FIELD_NAME_COPYRIGHT = \"copyright\";\n\n        // 25-Jun-2011, tatu: Some earlier tests used minimal names; not in use any more\n        /*\n\t\n//      public final static String FIELD_NAME_MEDIA = \"md\";\n//      public final static String FIELD_NAME_IMAGES = \"im\";\n//      public final static String FIELD_NAME_PLAYER = \"pl\";\n//      public final static String FIELD_NAME_URI = \"ul\";\n//      public final static String FIELD_NAME_TITLE = \"tl\";\n//      public final static String FIELD_NAME_WIDTH = \"wd\";\n//      public final static String FIELD_NAME_HEIGHT = \"hg\";\n//      public final static String FIELD_NAME_FORMAT = \"fr\";\n//      public final static String FIELD_NAME_DURATION = \"dr\";\n//      public final static String FIELD_NAME_SIZE = \"sz\";\n//      public final static String FIELD_NAME_BITRATE = \"br\";\n//      public final static String FIELD_NAME_PERSONS = \"pr\";\n//      public final static String FIELD_NAME_COPYRIGHT = \"cp\";\n\t\n\tpublic static final HashMap<String,Integer> fieldToIndex = new HashMap<String,Integer>();\n\tstatic {\n\t\tfieldToIndex.put(FIELD_NAME_MEDIA, FIELD_IX_MEDIA);\n\t\tfieldToIndex.put(FIELD_NAME_IMAGES, FIELD_IX_IMAGES);\n\t\tfieldToIndex.put(FIELD_NAME_PLAYER, FIELD_IX_PLAYER);\n\t\tfieldToIndex.put(FIELD_NAME_URI, FIELD_IX_URI);\n\t\tfieldToIndex.put(FIELD_NAME_TITLE, FIELD_IX_TITLE);\n\t\tfieldToIndex.put(FIELD_NAME_WIDTH, FIELD_IX_WIDTH);\n\t\tfieldToIndex.put(FIELD_NAME_HEIGHT, FIELD_IX_HEIGHT);\n\t\tfieldToIndex.put(FIELD_NAME_FORMAT, FIELD_IX_FORMAT);\n\t\tfieldToIndex.put(FIELD_NAME_DURATION, FIELD_IX_DURATION);\n\t\tfieldToIndex.put(FIELD_NAME_SIZE, FIELD_IX_SIZE);\n\t\tfieldToIndex.put(FIELD_NAME_BITRATE, FIELD_IX_BITRATE);\n\t\tfieldToIndex.put(FIELD_NAME_PERSONS, FIELD_IX_PERSONS);\n\t\tfieldToIndex.put(FIELD_NAME_COPYRIGHT, FIELD_IX_COPYRIGHT);\n\t}\n\t*/\n\n\tpublic static final HashMap<String,Integer> fullFieldToIndex = new HashMap<String,Integer>();\n\tstatic {\n\t\tfullFieldToIndex.put(FULL_FIELD_NAME_MEDIA, FIELD_IX_MEDIA);\n\t\tfullFieldToIndex.put(FULL_FIELD_NAME_IMAGES, FIELD_IX_IMAGES);\n\t\tfullFieldToIndex.put(FULL_FIELD_NAME_PLAYER, FIELD_IX_PLAYER);\n\t\tfullFieldToIndex.put(FULL_FIELD_NAME_URI, FIELD_IX_URI);\n\t\tfullFieldToIndex.put(FULL_FIELD_NAME_TITLE, FIELD_IX_TITLE);\n\t\tfullFieldToIndex.put(FULL_FIELD_NAME_WIDTH, FIELD_IX_WIDTH);\n\t\tfullFieldToIndex.put(FULL_FIELD_NAME_HEIGHT, FIELD_IX_HEIGHT);\n\t\tfullFieldToIndex.put(FULL_FIELD_NAME_FORMAT, FIELD_IX_FORMAT);\n\t\tfullFieldToIndex.put(FULL_FIELD_NAME_DURATION, FIELD_IX_DURATION);\n\t\tfullFieldToIndex.put(FULL_FIELD_NAME_SIZE, FIELD_IX_SIZE);\n\t\tfullFieldToIndex.put(FULL_FIELD_NAME_BITRATE, FIELD_IX_BITRATE);\n\t\tfullFieldToIndex.put(FULL_FIELD_NAME_PERSONS, FIELD_IX_PERSONS);\n\t\tfullFieldToIndex.put(FULL_FIELD_NAME_COPYRIGHT, FIELD_IX_COPYRIGHT);\n\t}\n}\n"
  },
  {
    "path": "src/test/java/data/media/Image.java",
    "content": "package data.media;\n\nimport static data.ReprUtil.repr;\n\npublic class Image implements java.io.Serializable {\n\n    private static final long serialVersionUID = 1L;\n\n    public enum Size {\n        SMALL, LARGE\n    }\n\n    public int    height;\n    public Size   size;\n    public String title; // Can be null\n    public String uri;\n    public int    width;\n    \n    public Image(){\n    }\n\n    public Image(String uri, String title, int width, int height, Size size){\n        this.height = height;\n        this.title = title;\n        this.uri = uri;\n        this.width = width;\n        this.size = size;\n    }\n\n    @Override\n    public boolean equals(Object o) {\n        if (this == o) return true;\n        if (o == null || getClass() != o.getClass()) return false;\n\n        Image image = (Image) o;\n\n        if (height != image.height) return false;\n        if (width != image.width) return false;\n        if (size != image.size) return false;\n        if (title != null ? !title.equals(image.title) : image.title != null) return false;\n        if (uri != null ? !uri.equals(image.uri) : image.uri != null) return false;\n\n        return true;\n    }\n\n    @Override\n    public int hashCode() {\n        int result = uri != null ? uri.hashCode() : 0;\n        result = 31 * result + (title != null ? title.hashCode() : 0);\n        result = 31 * result + width;\n        result = 31 * result + height;\n        result = 31 * result + (size != null ? size.hashCode() : 0);\n        return result;\n    }\n\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(\"[Image \");\n        sb.append(\"uri=\").append(repr(uri));\n        sb.append(\", title=\").append(repr(title));\n        sb.append(\", width=\").append(width);\n        sb.append(\", height=\").append(height);\n        sb.append(\", size=\").append(size);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    public void setUri(String uri) {\n        this.uri = uri;\n    }\n\n    public void setTitle(String title) {\n        this.title = title;\n    }\n\n    public void setWidth(int width) {\n        this.width = width;\n    }\n\n    public void setHeight(int height) {\n        this.height = height;\n    }\n\n    public void setSize(Size size) {\n        this.size = size;\n    }\n\n    public String getUri() {\n        return uri;\n    }\n\n    public String getTitle() {\n        return title;\n    }\n\n    public int getWidth() {\n        return width;\n    }\n\n    public int getHeight() {\n        return height;\n    }\n\n    public Size getSize() {\n        return size;\n    }\n}\n"
  },
  {
    "path": "src/test/java/data/media/ImageGenDecoder.java",
    "content": "package data.media;\n\nimport java.lang.reflect.Type;\n\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.JSONLexerBase;\nimport com.alibaba.fastjson.parser.ParseContext;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\n\npublic class ImageGenDecoder extends JavaBeanDeserializer implements ObjectDeserializer {\n    private char[] size_gen_prefix__ = \"\\\"size\\\":\".toCharArray();\n    private char[] uri_gen_prefix__ = \"\\\"uri\\\":\".toCharArray();\n    private char[] title_gen_prefix__ = \"\\\"title\\\":\".toCharArray();\n    private char[] width_gen_prefix__ = \"\\\"width\\\":\".toCharArray();\n    private char[] height_gen_prefix__ = \"\\\"height\\\":\".toCharArray();\n    \n    private ObjectDeserializer uri_gen_deser__;\n    private ObjectDeserializer title_gen_deser__;\n    private ObjectDeserializer size_gen_deser__;\n    \n    public ImageGenDecoder (ParserConfig config, Class clazz) {\n        super(config, clazz);\n        size_gen_deser__ = config.getDeserializer(data.media.Image.Size.class);\n    }\n    \n    public Object createInstance(DefaultJSONParser parser, Type type) {\n        return new Image();\n        \n    }\n    public Object deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n        JSONLexerBase lexer = (JSONLexerBase) parser.getLexer();\n        \n        if (!lexer.isEnabled(Feature.SortFeidFastMatch)) {\n            return super.deserialze(parser, type, fieldName);\n        }\n        \n        if (lexer.isEnabled(Feature.SupportArrayToBean)) {\n            // deserialzeArrayMapping\n        }\n        \n        if (lexer.scanType(\"Department\") == JSONLexerBase.NOT_MATCH) {\n            return super.deserialze(parser, type, fieldName);\n        }\n        \n        ParseContext mark_context = parser.getContext();\n        int matchedCount = 0;\n        Image instance = new Image();\n        \n        ParseContext context = parser.getContext();\n        ParseContext childContext = parser.setContext(context, instance, fieldName);\n        \n        if (lexer.matchStat == JSONLexerBase.END) {\n            return instance;\n        }\n        \n        int matchStat = 0;\n        int _asm_flag_0 = 0;\n        int height_gen = 0;\n        data.media.Image.Size size_gen = null;\n        String title_gen;\n        if (lexer.isEnabled(Feature.InitStringFieldAsEmpty)) {\n            title_gen = lexer.stringDefaultValue();\n            _asm_flag_0 |= 4;\n        } else {\n            title_gen = null;\n        }\n        String uri_gen;\n        if (lexer.isEnabled(Feature.InitStringFieldAsEmpty)) {\n            uri_gen = lexer.stringDefaultValue();\n            _asm_flag_0 |= 8;\n        } else {\n            uri_gen = null;\n        }\n        int width_gen = 0;\n        boolean endFlag = false, restFlag = false;\n        \n        if ((!endFlag) && (!restFlag)) {\n            height_gen = lexer.scanFieldInt(height_gen_prefix__);\n            if(lexer.matchStat > 0) {\n                _asm_flag_0 |= 1;\n                matchedCount++;\n            }\n            if(lexer.matchStat == JSONLexerBase.NOT_MATCH) {\n                restFlag = true;\n            }\n            if(lexer.matchStat == JSONLexerBase.END) {\n                endFlag = true;\n            }\n            \n        }\n        if ((!endFlag) && (!restFlag)) {\n            size_gen = (data.media.Image.Size) this.scanEnum(lexer, size_gen_prefix__, size_gen_deser__);\n            if(lexer.matchStat > 0) {\n                _asm_flag_0 |= 2;\n                matchedCount++;\n            }\n            if(lexer.matchStat == JSONLexerBase.NOT_MATCH) {\n                restFlag = true;\n            }\n            if(lexer.matchStat == JSONLexerBase.END) {\n                endFlag = true;\n            }\n            \n        }\n        if ((!endFlag) && (!restFlag)) {\n            title_gen = lexer.scanFieldString(title_gen_prefix__);\n            if(lexer.matchStat > 0) {\n                _asm_flag_0 |= 4;\n                matchedCount++;\n            }\n            if(lexer.matchStat == JSONLexerBase.NOT_MATCH) {\n                restFlag = true;\n            }\n            if(lexer.matchStat == JSONLexerBase.END) {\n                endFlag = true;\n            }\n            \n        }\n        if ((!endFlag) && (!restFlag)) {\n            uri_gen = lexer.scanFieldString(uri_gen_prefix__);\n            if(lexer.matchStat > 0) {\n                _asm_flag_0 |= 8;\n                matchedCount++;\n            }\n            if(lexer.matchStat == JSONLexerBase.NOT_MATCH) {\n                restFlag = true;\n            }\n            if(lexer.matchStat == JSONLexerBase.END) {\n                endFlag = true;\n            }\n            \n        }\n        if ((!endFlag) && (!restFlag)) {\n            width_gen = lexer.scanFieldInt(width_gen_prefix__);\n            if(lexer.matchStat > 0) {\n                _asm_flag_0 |= 16;\n                matchedCount++;\n            }\n            if(lexer.matchStat == JSONLexerBase.NOT_MATCH) {\n                restFlag = true;\n            }\n            if(lexer.matchStat != JSONLexerBase.END) {\n                restFlag = true;\n            }\n            \n        }\n        if ((_asm_flag_0 & 1) != 0) {\n            instance.setHeight(height_gen);\n            \n        }\n        if ((_asm_flag_0 & 2) != 0) {\n            instance.setSize(size_gen);\n            \n        }\n        if ((_asm_flag_0 & 4) != 0) {\n            instance.setTitle(title_gen);\n            \n        }\n        if ((_asm_flag_0 & 8) != 0) {\n            instance.setUri(uri_gen);\n            \n        }\n        if ((_asm_flag_0 & 16) != 0) {\n            instance.setWidth(width_gen);\n            \n        }\n        \n        if (restFlag) {\n            return super.parseRest(parser, type, fieldName, instance, 0, new int[0]);\n        }\n        \n        return instance;\n        \n    }\n}\n\n"
  },
  {
    "path": "src/test/java/data/media/Media.java",
    "content": "package data.media;\n\nimport static data.ReprUtil.repr;\n\nimport java.util.List;\n\n@SuppressWarnings(\"serial\")\npublic class Media implements java.io.Serializable {\n\n    public enum Player {\n                        JAVA, FLASH\n    }\n\n    private int          bitrate;   // Can be unset.\n    private boolean      hasBitrate;\n\n    private long         duration;\n    private String       format;\n    private int          height;\n    private List<String> persons;\n    private Player       player;\n    private long         size;\n    private String       title;     // Can be unset.\n    private String       uri;\n    private int          width;\n\n    // msgpack requires this\n    public String        copyright; // Can be unset.\n\n    public Media(){\n    }\n\n    public Media(String uri, String title, int width, int height, String format, long duration, long size, int bitrate,\n                 boolean hasBitrate, List<String> persons, Player player, String copyright){\n        this.uri = uri;\n        this.title = title;\n        this.width = width;\n        this.height = height;\n        this.format = format;\n        this.duration = duration;\n        this.size = size;\n        this.bitrate = bitrate;\n        this.hasBitrate = hasBitrate;\n        this.persons = persons;\n        this.player = player;\n        this.copyright = copyright;\n    }\n\n    @Override\n    public boolean equals(Object o) {\n        if (this == o) return true;\n        if (o == null || getClass() != o.getClass()) return false;\n\n        Media media = (Media) o;\n\n        if (bitrate != media.bitrate) return false;\n        if (duration != media.duration) return false;\n        if (hasBitrate != media.hasBitrate) return false;\n        if (height != media.height) return false;\n        if (size != media.size) return false;\n        if (width != media.width) return false;\n        if (copyright != null ? !copyright.equals(media.copyright) : media.copyright != null) return false;\n        if (format != null ? !format.equals(media.format) : media.format != null) return false;\n        if (persons != null ? !persons.equals(media.persons) : media.persons != null) return false;\n        if (player != media.player) return false;\n        if (title != null ? !title.equals(media.title) : media.title != null) return false;\n        if (uri != null ? !uri.equals(media.uri) : media.uri != null) return false;\n\n        return true;\n    }\n\n    @Override\n    public int hashCode() {\n        int result = uri != null ? uri.hashCode() : 0;\n        result = 31 * result + (title != null ? title.hashCode() : 0);\n        result = 31 * result + width;\n        result = 31 * result + height;\n        result = 31 * result + (format != null ? format.hashCode() : 0);\n        result = 31 * result + (int) (duration ^ (duration >>> 32));\n        result = 31 * result + (int) (size ^ (size >>> 32));\n        result = 31 * result + bitrate;\n        result = 31 * result + (hasBitrate ? 1 : 0);\n        result = 31 * result + (persons != null ? persons.hashCode() : 0);\n        result = 31 * result + (player != null ? player.hashCode() : 0);\n        result = 31 * result + (copyright != null ? copyright.hashCode() : 0);\n        return result;\n    }\n\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(\"[Media \");\n        sb.append(\"uri=\").append(repr(uri));\n        sb.append(\", title=\").append(repr(title));\n        sb.append(\", width=\").append(width);\n        sb.append(\", height=\").append(height);\n        sb.append(\", format=\").append(repr(format));\n        sb.append(\", duration=\").append(duration);\n        sb.append(\", size=\").append(size);\n        sb.append(\", hasBitrate=\").append(hasBitrate);\n        sb.append(\", bitrate=\").append(String.valueOf(bitrate));\n        sb.append(\", persons=\").append(repr(persons));\n        sb.append(\", player=\").append(player);\n        sb.append(\", copyright=\").append(copyright);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    public String getUri() {\n        return uri;\n    }\n\n    public void setUri(String uri) {\n        this.uri = uri;\n    }\n\n    public String getTitle() {\n        return title;\n    }\n\n    public void setTitle(String title) {\n        this.title = title;\n    }\n\n    public int getWidth() {\n        return width;\n    }\n\n    public void setWidth(int width) {\n        this.width = width;\n    }\n\n    public int getHeight() {\n        return height;\n    }\n\n    public void setHeight(int height) {\n        this.height = height;\n    }\n\n    public String getFormat() {\n        return format;\n    }\n\n    public void setFormat(String format) {\n        this.format = format;\n    }\n\n    public long getDuration() {\n        return duration;\n    }\n\n    public void setDuration(long duration) {\n        this.duration = duration;\n    }\n\n    public long getSize() {\n        return size;\n    }\n\n    public void setSize(long size) {\n        this.size = size;\n    }\n\n    public int getBitrate() {\n        return bitrate;\n    }\n\n    public void setBitrate(int bitrate) {\n        this.bitrate = bitrate;\n    }\n\n    public List<String> getPersons() {\n        return persons;\n    }\n\n    public void setPersons(List<String> persons) {\n        this.persons = persons;\n    }\n\n    public Player getPlayer() {\n        return player;\n    }\n\n    public void setPlayer(Player player) {\n        this.player = player;\n    }\n\n    public String getCopyright() {\n        return copyright;\n    }\n\n    public void setCopyright(String copyright) {\n        this.copyright = copyright;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/data/media/MediaContent.java",
    "content": "package data.media;\n\nimport java.util.List;\n\n@SuppressWarnings(\"serial\")\npublic class MediaContent implements java.io.Serializable\n{\n\tpublic Media media;\n\tpublic List<Image> images;\n\n\tpublic MediaContent() {}\n\n\tpublic MediaContent (Media media, List<Image> images) {\n\t\tthis.media = media;\n\t\tthis.images = images;\n\t}\n\n\t@Override\n\tpublic boolean equals(Object o)\n\t{\n\t\tif (this == o) return true;\n\t\tif (o == null || getClass() != o.getClass()) return false;\n\n\t\tMediaContent that = (MediaContent) o;\n\n\t\tif (images != null ? !images.equals(that.images) : that.images != null) return false;\n\t\tif (media != null ? !media.equals(that.media) : that.media != null) return false;\n\n\t\treturn true;\n\t}\n\n\t@Override\n\tpublic int hashCode()\n\t{\n\t\tint result = media != null ? media.hashCode() : 0;\n\t\tresult = 31 * result + (images != null ? images.hashCode() : 0);\n\t\treturn result;\n\t}\n\n\tpublic String toString() {\n\t\tStringBuilder sb = new StringBuilder();\n\t\tsb.append(\"[MediaContent: \");\n\t\tsb.append(\"media=\").append(media);\n\t\tsb.append(\", images=\").append(images);\n\t\tsb.append(\"]\");\n\t\treturn sb.toString();\n\t}\n\n    public void setMedia(Media media) {\n        this.media = media;\n    }\n\n    public void setImages(List<Image> images) {\n        this.images = images;\n    }\n\n    public Media getMedia() {\n        return media;\n    }\n\n    public List<Image> getImages() {\n        return images;\n    }\n}\n"
  },
  {
    "path": "src/test/java/data/media/MediaContentDeserializer.java",
    "content": "package data.media;\n\nimport java.lang.reflect.Type;\n\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONScanner;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\n\npublic class MediaContentDeserializer implements ObjectDeserializer {\n    private ObjectDeserializer mediaDeserializer;\n    private ObjectDeserializer imageDeserializer;\n    private final char[] mediaPrefix = \"\\\"media\\\":\".toCharArray();\n    private final char[] imagePrefix = \"\\\"images\\\":\".toCharArray();\n\n    public <T> T deserialze(DefaultJSONParser parser, Type clazz, Object fieldName) {\n        final JSONScanner lexer = (JSONScanner) parser.getLexer();\n        \n        MediaContent object = new MediaContent();\n        \n        lexer.matchField(mediaPrefix);\n        if (mediaDeserializer == null) {\n            //mediaDeserializer = parser.getMapping().getDeserializer(ObjectDeserializer.class);\n        }\n        mediaDeserializer.deserialze(parser, clazz, null);\n        \n        lexer.matchField(imagePrefix);\n        imageDeserializer.deserialze(parser, clazz, null);\n        \n//        if (lexer.token() != JSONToken.RBRACE)\n        \n        // TODO Auto-generated method stub\n        return null;\n    }\n    \n\n    public int getFastMatchToken() {\n        return JSONToken.LBRACE;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/data/media/MediaContentGenDecoder.java",
    "content": "package data.media;\n\nimport java.lang.reflect.Type;\n\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.DefaultJSONParser.ResolveTask;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.JSONLexerBase;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.ParseContext;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\n\npublic class MediaContentGenDecoder extends JavaBeanDeserializer implements ObjectDeserializer {\n    private char[] media_gen_prefix__ = \"\\\"media\\\":\".toCharArray();\n    private char[] images_gen_prefix__ = \"\\\"images\\\":\".toCharArray();\n    \n    private ObjectDeserializer media_gen_deser__;\n    private ObjectDeserializer images_gen_list_item_deser__;\n    private Type images_gen_list_item_type__ = data.media.Image.class;\n    \n    public MediaContentGenDecoder (ParserConfig config, Class clazz) {\n        super(config, clazz);\n        \n    }\n    \n    public Object createInstance(DefaultJSONParser parser, Type type) {\n        return new MediaContent();\n        \n    }\n    public Object deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n        JSONLexerBase lexer = (JSONLexerBase) parser.getLexer();\n        \n        if (!lexer.isEnabled(Feature.SortFeidFastMatch)) {\n            return super.deserialze(parser, type, fieldName);\n        }\n        \n        if (lexer.isEnabled(Feature.SupportArrayToBean)) {\n            // deserialzeArrayMapping\n        }\n        \n        if (lexer.scanType(\"Department\") == JSONLexerBase.NOT_MATCH) {\n            return super.deserialze(parser, type, fieldName);\n        }\n        \n        ParseContext mark_context = parser.getContext();\n        int matchedCount = 0;\n        MediaContent instance = new MediaContent();\n        \n        ParseContext context = parser.getContext();\n        ParseContext childContext = parser.setContext(context, instance, fieldName);\n        \n        if (lexer.matchStat == JSONLexerBase.END) {\n            return instance;\n        }\n        \n        int matchStat = 0;\n        int _asm_flag_0 = 0;\n        java.util.List images_gen = null;\n        data.media.Media media_gen = null;\n        boolean endFlag = false, restFlag = false;\n        \n        if ((!endFlag) && (!restFlag)) {\n            if (lexer.matchField(images_gen_prefix__)) {\n                _asm_flag_0 |= 1;\n                if (lexer.token() == JSONToken.NULL) {\n                    lexer.nextToken(JSONToken.COMMA);\n                } else {\n                    if (lexer.token() == JSONToken.LBRACKET) {\n                        if(images_gen_list_item_deser__ == null) {\n                            images_gen_list_item_deser__ = parser.getConfig().getDeserializer(data.media.Image.class);\n                        }\n                        final int fastMatchToken = images_gen_list_item_deser__.getFastMatchToken();\n                        lexer.nextToken(fastMatchToken);\n                        images_gen = new java.util.ArrayList();\n                        ParseContext listContext = parser.getContext();\n                        parser.setContext(images_gen, \"images\");\n            \n                        for(int i = 0; ;++i) {\n                            if (lexer.token() == JSONToken.RBRACKET) {\n                                break;\n                            }\n                            data.media.Image itemValue = images_gen_list_item_deser__.deserialze(parser, images_gen_list_item_type__, i);\n                            images_gen.add(itemValue);\n                            parser.checkListResolve(images_gen);\n                            if (lexer.token() == JSONToken.COMMA) {\n                                lexer.nextToken(fastMatchToken);\n                            }\n                        }\n                        parser.setContext(listContext);\n                        if (lexer.token() != JSONToken.RBRACKET) {\n                            restFlag = true;\n                        }\n                        lexer.nextToken(JSONToken.COMMA);\n            \n                    } else {\n                        restFlag = true;\n                    }\n                }\n            }\n            if(lexer.matchStat > 0) {\n                _asm_flag_0 |= 1;\n                matchedCount++;\n            }\n            if(lexer.matchStat == JSONLexerBase.NOT_MATCH) {\n                restFlag = true;\n            }\n            if(lexer.matchStat != JSONLexerBase.END) {\n                endFlag = true;\n            }\n            \n        }\n        if ((!endFlag) && (!restFlag)) {\n            if (lexer.matchField(media_gen_prefix__)) {\n                _asm_flag_0 |= 2;\n                matchedCount++;\n            if (media_gen_deser__ == null) {\n                media_gen_deser__ = parser.getConfig().getDeserializer(data.media.Media.class);\n            }\n                media_gen_deser__.deserialze(parser, data.media.Media.class,\"media\");\n                if(parser.getResolveStatus() == DefaultJSONParser.NeedToResolve) {\n                    ResolveTask resolveTask = parser.getLastResolveTask();\n                    resolveTask.ownerContext = parser.getContext();\n                    resolveTask.fieldDeserializer = this.getFieldDeserializer(\"media\");\n                    parser.setResolveStatus(DefaultJSONParser.NONE);\n                }\n            }\n            if (matchedCount <= 0 || lexer.token() != JSONToken.RBRACE) {\n                restFlag = true;\n            } else if (lexer.token() == JSONToken.COMMA) {\n                lexer.nextToken();\n            }\n            if(lexer.matchStat > 0) {\n                _asm_flag_0 |= 2;\n                matchedCount++;\n            }\n            if(lexer.matchStat == JSONLexerBase.NOT_MATCH) {\n                restFlag = true;\n            }\n            if(lexer.matchStat != JSONLexerBase.END) {\n                restFlag = true;\n            }\n            \n        }\n        if ((_asm_flag_0 & 1) != 0) {\n            instance.setImages(images_gen);\n            \n        }\n        if ((_asm_flag_0 & 2) != 0) {\n            instance.setMedia(media_gen);\n            \n        }\n        \n        if (restFlag) {\n            return super.parseRest(parser, type, fieldName, instance, 0, new int[0]);\n        }\n        \n        return instance;\n        \n    }\n}\n\n"
  },
  {
    "path": "src/test/java/data/media/MediaGenDecoder.java",
    "content": "package data.media;\n\nimport java.lang.reflect.Type;\n\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.Feature;\nimport com.alibaba.fastjson.parser.JSONLexerBase;\nimport com.alibaba.fastjson.parser.ParseContext;\nimport com.alibaba.fastjson.parser.ParserConfig;\nimport com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\n\npublic class MediaGenDecoder extends JavaBeanDeserializer implements ObjectDeserializer {\n    private char[] size_gen_prefix__ = \"\\\"size\\\":\".toCharArray();\n    private char[] uri_gen_prefix__ = \"\\\"uri\\\":\".toCharArray();\n    private char[] title_gen_prefix__ = \"\\\"title\\\":\".toCharArray();\n    private char[] width_gen_prefix__ = \"\\\"width\\\":\".toCharArray();\n    private char[] height_gen_prefix__ = \"\\\"height\\\":\".toCharArray();\n    private char[] duration_gen_prefix__ = \"\\\"duration\\\":\".toCharArray();\n    private char[] bitrate_gen_prefix__ = \"\\\"bitrate\\\":\".toCharArray();\n    private char[] persons_gen_prefix__ = \"\\\"persons\\\":\".toCharArray();\n    private char[] player_gen_prefix__ = \"\\\"player\\\":\".toCharArray();\n    private char[] copyright_gen_prefix__ = \"\\\"copyright\\\":\".toCharArray();\n    private char[] format_gen_prefix__ = \"\\\"format\\\":\".toCharArray();\n    \n    private ObjectDeserializer uri_gen_deser__;\n    private ObjectDeserializer title_gen_deser__;\n    private ObjectDeserializer persons_gen_list_item_deser__;\n    private Type persons_gen_list_item_type__ = java.lang.String.class;\n    private ObjectDeserializer copyright_gen_deser__;\n    private ObjectDeserializer format_gen_deser__;\n    private ObjectDeserializer player_gen_deser__;\n    \n    public MediaGenDecoder (ParserConfig config, Class clazz) {\n        super(config, clazz);\n        // data.media.Media.Player\n        player_gen_deser__ = config.getDeserializer(data.media.Media.Player.class);\n    }\n    \n    public Object createInstance(DefaultJSONParser parser, Type type) {\n        return new Media();\n        \n    }\n    public Object deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n        JSONLexerBase lexer = (JSONLexerBase) parser.getLexer();\n        \n        if (!lexer.isEnabled(Feature.SortFeidFastMatch)) {\n            return super.deserialze(parser, type, fieldName);\n        }\n        \n        if (lexer.isEnabled(Feature.SupportArrayToBean)) {\n            // deserialzeArrayMapping\n        }\n        \n        if (lexer.scanType(\"Department\") == JSONLexerBase.NOT_MATCH) {\n            return super.deserialze(parser, type, fieldName);\n        }\n        \n        ParseContext mark_context = parser.getContext();\n        int matchedCount = 0;\n        Media instance = new Media();\n        \n        ParseContext context = parser.getContext();\n        ParseContext childContext = parser.setContext(context, instance, fieldName);\n        \n        if (lexer.matchStat == JSONLexerBase.END) {\n            return instance;\n        }\n        \n        int matchStat = 0;\n        int _asm_flag_0 = 0;\n        int bitrate_gen = 0;\n        String copyright_gen;\n        if (lexer.isEnabled(Feature.InitStringFieldAsEmpty)) {\n            copyright_gen = lexer.stringDefaultValue();\n            _asm_flag_0 |= 2;\n        } else {\n            copyright_gen = null;\n        }\n        long duration_gen = 0;\n        String format_gen;\n        if (lexer.isEnabled(Feature.InitStringFieldAsEmpty)) {\n            format_gen = lexer.stringDefaultValue();\n            _asm_flag_0 |= 8;\n        } else {\n            format_gen = null;\n        }\n        int height_gen = 0;\n        java.util.List persons_gen = null;\n        data.media.Media.Player player_gen = null;\n        long size_gen = 0;\n        String title_gen;\n        if (lexer.isEnabled(Feature.InitStringFieldAsEmpty)) {\n            title_gen = lexer.stringDefaultValue();\n            _asm_flag_0 |= 256;\n        } else {\n            title_gen = null;\n        }\n        String uri_gen;\n        if (lexer.isEnabled(Feature.InitStringFieldAsEmpty)) {\n            uri_gen = lexer.stringDefaultValue();\n            _asm_flag_0 |= 512;\n        } else {\n            uri_gen = null;\n        }\n        int width_gen = 0;\n        boolean endFlag = false, restFlag = false;\n        \n        if ((!endFlag) && (!restFlag)) {\n            bitrate_gen = lexer.scanFieldInt(bitrate_gen_prefix__);\n            if(lexer.matchStat > 0) {\n                _asm_flag_0 |= 1;\n                matchedCount++;\n            }\n            if(lexer.matchStat == JSONLexerBase.NOT_MATCH) {\n                restFlag = true;\n            }\n            if(lexer.matchStat == JSONLexerBase.END) {\n                endFlag = true;\n            }\n            \n        }\n        if ((!endFlag) && (!restFlag)) {\n            copyright_gen = lexer.scanFieldString(copyright_gen_prefix__);\n            if(lexer.matchStat > 0) {\n                _asm_flag_0 |= 2;\n                matchedCount++;\n            }\n            if(lexer.matchStat == JSONLexerBase.NOT_MATCH) {\n                restFlag = true;\n            }\n            if(lexer.matchStat == JSONLexerBase.END) {\n                endFlag = true;\n            }\n            \n        }\n        if ((!endFlag) && (!restFlag)) {\n            duration_gen = lexer.scanFieldLong(duration_gen_prefix__);\n            if(lexer.matchStat > 0) {\n                _asm_flag_0 |= 4;\n                matchedCount++;\n            }\n            if(lexer.matchStat == JSONLexerBase.NOT_MATCH) {\n                restFlag = true;\n            }\n            if(lexer.matchStat == JSONLexerBase.END) {\n                endFlag = true;\n            }\n            \n        }\n        if ((!endFlag) && (!restFlag)) {\n            format_gen = lexer.scanFieldString(format_gen_prefix__);\n            if(lexer.matchStat > 0) {\n                _asm_flag_0 |= 8;\n                matchedCount++;\n            }\n            if(lexer.matchStat == JSONLexerBase.NOT_MATCH) {\n                restFlag = true;\n            }\n            if(lexer.matchStat == JSONLexerBase.END) {\n                endFlag = true;\n            }\n            \n        }\n        if ((!endFlag) && (!restFlag)) {\n            height_gen = lexer.scanFieldInt(height_gen_prefix__);\n            if(lexer.matchStat > 0) {\n                _asm_flag_0 |= 16;\n                matchedCount++;\n            }\n            if(lexer.matchStat == JSONLexerBase.NOT_MATCH) {\n                restFlag = true;\n            }\n            if(lexer.matchStat == JSONLexerBase.END) {\n                endFlag = true;\n            }\n            \n        }\n        if ((!endFlag) && (!restFlag)) {\n            persons_gen = (java.util.List) lexer.scanFieldStringArray(persons_gen_prefix__, java.util.List.class);\n            if(lexer.matchStat > 0) {\n                _asm_flag_0 |= 32;\n                matchedCount++;\n            }\n            if(lexer.matchStat == JSONLexerBase.NOT_MATCH) {\n                restFlag = true;\n            }\n            if(lexer.matchStat == JSONLexerBase.END) {\n                endFlag = true;\n            }\n            \n        }\n        if ((!endFlag) && (!restFlag)) {\n            player_gen = (data.media.Media.Player) this.scanEnum(lexer, player_gen_prefix__, player_gen_deser__);\n            if(lexer.matchStat > 0) {\n                _asm_flag_0 |= 64;\n                matchedCount++;\n            }\n            if(lexer.matchStat == JSONLexerBase.NOT_MATCH) {\n                restFlag = true;\n            }\n            if(lexer.matchStat == JSONLexerBase.END) {\n                endFlag = true;\n            }\n            \n        }\n        if ((!endFlag) && (!restFlag)) {\n            size_gen = lexer.scanFieldLong(size_gen_prefix__);\n            if(lexer.matchStat > 0) {\n                _asm_flag_0 |= 128;\n                matchedCount++;\n            }\n            if(lexer.matchStat == JSONLexerBase.NOT_MATCH) {\n                restFlag = true;\n            }\n            if(lexer.matchStat == JSONLexerBase.END) {\n                endFlag = true;\n            }\n            \n        }\n        if ((!endFlag) && (!restFlag)) {\n            title_gen = lexer.scanFieldString(title_gen_prefix__);\n            if(lexer.matchStat > 0) {\n                _asm_flag_0 |= 256;\n                matchedCount++;\n            }\n            if(lexer.matchStat == JSONLexerBase.NOT_MATCH) {\n                restFlag = true;\n            }\n            if(lexer.matchStat == JSONLexerBase.END) {\n                endFlag = true;\n            }\n            \n        }\n        if ((!endFlag) && (!restFlag)) {\n            uri_gen = lexer.scanFieldString(uri_gen_prefix__);\n            if(lexer.matchStat > 0) {\n                _asm_flag_0 |= 512;\n                matchedCount++;\n            }\n            if(lexer.matchStat == JSONLexerBase.NOT_MATCH) {\n                restFlag = true;\n            }\n            if(lexer.matchStat == JSONLexerBase.END) {\n                endFlag = true;\n            }\n            \n        }\n        if ((!endFlag) && (!restFlag)) {\n            width_gen = lexer.scanFieldInt(width_gen_prefix__);\n            if(lexer.matchStat > 0) {\n                _asm_flag_0 |= 1024;\n                matchedCount++;\n            }\n            if(lexer.matchStat == JSONLexerBase.NOT_MATCH) {\n                restFlag = true;\n            }\n            if(lexer.matchStat != JSONLexerBase.END) {\n                restFlag = true;\n            }\n            \n        }\n        if ((_asm_flag_0 & 1) != 0) {\n            instance.setBitrate(bitrate_gen);\n            \n        }\n        if ((_asm_flag_0 & 2) != 0) {\n            instance.setCopyright(copyright_gen);\n            \n        }\n        if ((_asm_flag_0 & 4) != 0) {\n            instance.setDuration(duration_gen);\n            \n        }\n        if ((_asm_flag_0 & 8) != 0) {\n            instance.setFormat(format_gen);\n            \n        }\n        if ((_asm_flag_0 & 16) != 0) {\n            instance.setHeight(height_gen);\n            \n        }\n        if ((_asm_flag_0 & 32) != 0) {\n            instance.setPersons(persons_gen);\n            \n        }\n        if ((_asm_flag_0 & 64) != 0) {\n            instance.setPlayer(player_gen);\n            \n        }\n        if ((_asm_flag_0 & 128) != 0) {\n            instance.setSize(size_gen);\n            \n        }\n        if ((_asm_flag_0 & 256) != 0) {\n            instance.setTitle(title_gen);\n            \n        }\n        if ((_asm_flag_0 & 512) != 0) {\n            instance.setUri(uri_gen);\n            \n        }\n        if ((_asm_flag_0 & 1024) != 0) {\n            instance.setWidth(width_gen);\n            \n        }\n        \n        if (restFlag) {\n            return super.parseRest(parser, type, fieldName, instance, 0, new int[0]);\n        }\n        \n        return instance;\n        \n    }\n}\n\n"
  },
  {
    "path": "src/test/java/data/media/writeAsArray/ImageDeserializer.java",
    "content": "package data.media.writeAsArray;\n\nimport java.lang.reflect.Type;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONLexer;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\n\nimport data.media.Image;\nimport data.media.Image.Size;\n\npublic class ImageDeserializer implements ObjectDeserializer {\n\n    @SuppressWarnings(\"unchecked\")\n    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n        Image image = new Image();\n\n        final JSONLexer lexer = parser.getLexer();\n        if (lexer.token() != JSONToken.LBRACKET) {\n            throw new JSONException(\"error\");\n        }\n        \n        int height = lexer.scanInt(',');\n        int width = lexer.scanInt(',');\n        String sizeName = lexer.scanSymbolWithSeperator(parser.getSymbolTable(), ',');\n        String title = lexer.scanString(',');\n        String uri = lexer.scanString(']');\n        \n        lexer.nextToken(JSONToken.COMMA);\n        \n        image.setHeight(height);\n        image.setWidth(width);\n        image.setSize(Size.valueOf(sizeName));\n        image.setTitle(title);\n        image.setUri(uri);\n        return (T) image;\n    }\n\n    public int getFastMatchToken() {\n        return JSONToken.LBRACKET;\n    }\n\n}"
  },
  {
    "path": "src/test/java/data/media/writeAsArray/ImageSerializer.java",
    "content": "package data.media.writeAsArray;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.ObjectSerializer;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\nimport data.media.Image;\n\npublic class ImageSerializer implements ObjectSerializer {\n\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\n        Image image = (Image) object;\n\n        SerializeWriter out = serializer.getWriter();\n        out.write('[');\n        \n        out.writeInt(image.getHeight());\n        out.write(',');\n        out.writeInt(image.getWidth());\n        out.write(',');\n        out.writeString(image.getSize().name(), ',');\n        out.writeString(image.getTitle(), ',');\n        out.writeString(image.getUri());\n        \n        out.write(']');\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/data/media/writeAsArray/MediaContentDeserializer.java",
    "content": "package data.media.writeAsArray;\n\nimport java.lang.reflect.Type;\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONLexer;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\n\nimport data.media.Image;\nimport data.media.Media;\nimport data.media.MediaContent;\n\npublic class MediaContentDeserializer implements ObjectDeserializer {\n\n    MediaDeserializer mediaDeser = new MediaDeserializer();\n    ImageDeserializer imageDesc  = new ImageDeserializer();\n\n    @SuppressWarnings(\"unchecked\")\n    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n        JSONLexer lexer = parser.getLexer();\n\n        parser.accept(JSONToken.LBRACKET, JSONToken.LBRACKET);\n        Media media = mediaDeser.deserialze(parser, Media.class, \"media\");\n        parser.accept(JSONToken.COMMA, JSONToken.LBRACKET);\n        \n        parser.accept(JSONToken.LBRACKET, JSONToken.LBRACKET);\n        List<Image> images = new ArrayList<Image>();\n        int index = 0;\n        for (;;) {\n            Image image = imageDesc.deserialze(parser, Image.class, index);\n            images.add(image);\n            index++;\n            if (lexer.token() == JSONToken.COMMA) {\n                lexer.nextToken(JSONToken.LBRACKET);\n            } else {\n                break;\n            }\n        }\n        parser.accept(JSONToken.RBRACKET, JSONToken.RBRACKET);\n        \n        parser.accept(JSONToken.RBRACKET, JSONToken.EOF);\n        \n        MediaContent content = new MediaContent();\n        content.setMedia(media);\n        content.setImages(images);\n        return (T) content;\n    }\n\n    public int getFastMatchToken() {\n        return 0;\n    }\n\n}"
  },
  {
    "path": "src/test/java/data/media/writeAsArray/MediaContentSerializer.java",
    "content": "package data.media.writeAsArray;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.ObjectSerializer;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\nimport data.media.Image;\nimport data.media.Media;\nimport data.media.MediaContent;\n\npublic class MediaContentSerializer implements ObjectSerializer {\n    private MediaSerializer mediaSerilaizer = new MediaSerializer(); \n    private ImageSerializer imageSerilaizer = new ImageSerializer(); \n\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\n        MediaContent entity = (MediaContent) object;\n\n        SerializeWriter out = serializer.getWriter();\n        out.write('[');\n        \n        mediaSerilaizer.write(serializer, entity.getMedia(), \"media\", Media.class, 0);\n        out.write(',');\n        \n        out.write('[');\n        for (int i = 0; i < entity.getImages().size(); ++i) {\n            if (i != 0) {\n                out.write(',');\n            }\n            Image image = entity.getImages().get(i);\n            imageSerilaizer.write(serializer, image, i, fieldType, 0);\n        }\n        out.write(']');\n        \n        out.write(']');\n    }\n\n}"
  },
  {
    "path": "src/test/java/data/media/writeAsArray/MediaDeserializer.java",
    "content": "package data.media.writeAsArray;\n\nimport java.lang.reflect.Type;\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport com.alibaba.fastjson.JSONException;\nimport com.alibaba.fastjson.parser.DefaultJSONParser;\nimport com.alibaba.fastjson.parser.JSONLexer;\nimport com.alibaba.fastjson.parser.JSONToken;\nimport com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;\n\nimport data.media.Media;\nimport data.media.Media.Player;\n\npublic class MediaDeserializer implements ObjectDeserializer {\n\n    @SuppressWarnings(\"unchecked\")\n    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {\n        final JSONLexer lexer = parser.getLexer();\n\n        if (lexer.token() != JSONToken.LBRACKET) {\n            throw new JSONException(\"error\");\n        }\n\n        Media media = new Media();\n\n        int bitrate = lexer.scanInt(',');\n        int height = lexer.scanInt(',');\n        int width = lexer.scanInt(',');\n        String copyright = lexer.scanString(',');\n        long duration = lexer.scanLong(',');\n        String format = lexer.scanString(',');\n\n        List<String> persons = new ArrayList<String>();\n        lexer.scanStringArray(persons, ',');\n\n        String playerName = lexer.scanSymbolWithSeperator(parser.getSymbolTable(), ',');\n        long size = lexer.scanLong(',');\n        String title = lexer.scanString(',');\n        String uri = lexer.scanString(']');\n\n        lexer.nextToken(JSONToken.COMMA);\n\n        media.setBitrate(bitrate);\n        media.setHeight(height);\n        media.setWidth(width);\n        media.setCopyright(copyright);\n        media.setDuration(duration);\n        media.setFormat(format);\n        media.setPersons(persons);\n        media.setPlayer(playerName == null ? null : Player.valueOf(playerName));\n        media.setSize(size);\n        media.setTitle(title);\n        media.setUri(uri);\n\n        return (T) media;\n\n    }\n\n    public int getFastMatchToken() {\n        return JSONToken.LBRACKET;\n    }\n\n}\n"
  },
  {
    "path": "src/test/java/data/media/writeAsArray/MediaSerializer.java",
    "content": "package data.media.writeAsArray;\n\nimport java.io.IOException;\nimport java.lang.reflect.Type;\n\nimport com.alibaba.fastjson.serializer.JSONSerializer;\nimport com.alibaba.fastjson.serializer.ObjectSerializer;\nimport com.alibaba.fastjson.serializer.SerializeWriter;\n\nimport data.media.Media;\n\npublic class MediaSerializer implements ObjectSerializer {\n\n    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {\n        Media media = (Media) object;\n\n        SerializeWriter out = serializer.getWriter();\n        out.write('[');\n        \n        out.writeInt(media.getBitrate());\n        out.write(',');\n        out.writeInt(media.getHeight());\n        out.write(',');\n        out.writeInt(media.getWidth());\n        out.write(',');\n        out.writeString(media.getCopyright(), ',');\n        out.writeLong(media.getDuration());\n        out.write(',');\n        out.writeString(media.getFormat(), ',');\n        out.write('[');\n        for (int i = 0; i < media.getPersons().size(); ++i) {\n            if(i != 0) {\n                out.write(',');\n            }\n            out.writeString(media.getPersons().get(i));\n        }\n        out.write(\"],\");\n        out.writeString(media.getPlayer().name(), ',');\n        out.writeLong(media.getSize());\n        out.write(',');\n        out.writeString(media.getTitle(), ',');\n        out.writeString(media.getUri(), ']');\n    }\n\n}"
  },
  {
    "path": "src/test/java/oracle/sql/DATE.java",
    "content": "package oracle.sql;\n\nimport java.sql.Date;\nimport java.sql.Timestamp;\n\npublic class DATE {\n\n    private Date date;\n\n    public DATE(Timestamp date){\n        long time = date.getTime();\n        time = (time  / 1000) * 1000;\n        this.date = new Date(time);\n    }\n    \n    public Date toJdbc() {\n        return date;\n    }\n}\n"
  },
  {
    "path": "src/test/java/oracle/sql/TIMESTAMP.java",
    "content": "package oracle.sql;\n\nimport java.sql.Timestamp;\nimport java.util.Date;\n\npublic class TIMESTAMP {\n\n    private Date date;\n\n    public TIMESTAMP(Timestamp date){\n        this.date = date;\n    }\n    \n    public Date toJdbc() {\n        return date;\n    }\n}\n"
  },
  {
    "path": "src/test/resources/1.txt",
    "content": "Fastjson介绍\n\nFastjson是一个Java语言编写的JSON处理器。\n1、遵循http://json.org标准，为其官方网站收录的参考实现之一。\n2、功能qiang打，支持JDK的各种类型，包括基本的JavaBean、Collection、Map、Date、Enum、泛型。\n3、无依赖，不需要例外额外的jar，能够直接跑在JDK上。\n4、开源，使用Apache License 2.0协议开源。http://code.alibabatech.com/wiki/display/FastJSON/Home\n\n如果获得Fastjson？\nSVN:http://code.alibabatech.com/svn/fastjson/trunk/\nWIKI:http://code.alibabatech.com/wiki/display/FastJSON/Home\nIssue Tracking:http://code.alibabatech.com/jira/browse/FASTJSON\n\n如果你使用了Maven，maven repository配置如下：\n<repository>\n\t<id>opensesame</id>\n\t<name>Alibaba OpenSource Repsoitory</name>\n\t<url>http://code.alibabatech.com/mvn/releases/</url>\n\t<snapshots>\n\t\t<enabled>false</enabled>\n\t</snapshots>\n</repository>\n\npom.xml文件中加入依赖依赖：\n<dependency>\n\t<groupId>com.alibaba</groupId>\n\t<artifactId>fastjson</artifactId>\n\t<version>1.0.4</version>\n</dependency>\n\n如果没有使用maven，可以直接下载：\nhttp://code.alibabatech.com/mvn/releases/com/alibaba/fastjson/1.0.4/fastjson-1.0.4.jar\nhttp://code.alibabatech.com/mvn/releases/com/alibaba/fastjson/1.0.4/fastjson-1.0.4-sources.jar\n\n\n使用介绍：\nFastjson的最主要的使用入口是com.alibaba.fastjson.JSON\n\nimport com.alibaba.fastjson.JSON;\n\npublic static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray\npublic static final JSONObject parseObject(String text)； // 把JSON文本parse成JSONObject\npublic static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean\npublic static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray\npublic static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合\npublic static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本\npublic static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本\npublic static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。\n\n代码示例：\n代码示例用到类User和Group：\npublic class User {\n\tprivate Long id;\n\tprivate String name;\n\n\tpublic Long getId() { return id; }\n\tpublic void setId(Long id) { this.id = id; }\n\n\tpublic String getName() { return name; }\n\tpublic void setName(String name) { this.name = name; }\n}\npublic class Group {\n\tprivate Long id;\n\tprivate String name;\n\tprivate List<User> users = new ArrayList<User>();\n\n\tpublic Long getId() { return id; }\n\tpublic void setId(Long id) { this.id = id; }\n\n\tpublic String getName() { return name; }\n\tpublic void setName(String name) { this.name = name; }\n\n\tpublic List<User> getUsers() { return users; }\n\tpublic void setUsers(List<User> users) { this.users = users; }\n}\n\nEncode代码示例：\nimport com.alibaba.fastjson.JSON;\n\nGroup group = new Group();\ngroup.setId(0L);\ngroup.setName(\"admin\");\n\nUser guestUser = new User();\nguestUser.setId(2L);\nguestUser.setName(\"guest\");\n\nUser rootUser = new User();\nrootUser.setId(3L);\nrootUser.setName(\"root\");\n\ngroup.getUsers().add(guestUser);\ngroup.getUsers().add(rootUser);\n\nString jsonString = JSON.toJSONString(group);\n\nSystem.out.println(jsonString);\n\nDecode 代码示例：\nGroup group2 = JSON.parseObject(jsonString, Group.class);\n"
  },
  {
    "path": "src/test/resources/2.json",
    "content": "{\"company\":{\"aliwwStatus\":0,\"id\":0,\"name\":\"红茄子印像\",\"sellerId\":\"1000000301\",\"trustScore\":0},\"count\":5,\"pagecount\":0,\"pageindex\":0,\"resultList\":[{\"atoms\":[{\"bankImage\":true,\"height\":300,\"imageURL\":\"http://web.tcloudapp.cn/temp/1000000001/18C3C7410D9B1E5B964E0BAA6268053A727510F2CAC5E70E72C3C7DE48AE1.jpg_640x400.jpg\",\"style\":0,\"title\":\"\",\"uIActionParams\":{},\"versionCode\":0,\"width\":640},{\"bankImage\":true,\"height\":300,\"imageURL\":\"http://web.tcloudapp.cn/temp/1000000001/1B0F08D14F1F793842AC87B17003C52AE408D8FCFD26628EF83E65C3CFFD2.jpg_640x400.jpg\",\"style\":0,\"title\":\"\",\"uIActionParams\":{},\"versionCode\":0,\"width\":640},{\"bankImage\":true,\"height\":300,\"imageURL\":\"http://web.tcloudapp.cn/temp/1000000001/5857874C9779EF6EFCAC9FD55702FA4D0EE5522F035F2E14A9972CC955123.jpg_640x400.jpg\",\"style\":0,\"title\":\"\",\"uIActionParams\":{},\"versionCode\":0,\"width\":640}],\"height\":300,\"type\":\"slides\",\"versionCode\":0,\"width\":640},{\"atoms\":[{\"action\":\"go_to_search\",\"bankImage\":true,\"colorBackground\":\"#333333\",\"height\":100,\"style\":1,\"title\":\"人气宝贝\",\"uIActionParams\":{\"offerRequest\":{\"beginPage\":0,\"companyId\":1000000301,\"deliveryFree\":false,\"descendOrder\":true,\"discount\":false,\"pageSize\":0,\"pop\":false,\"priceEnabled\":false,\"priceEnd\":3.4028235E38,\"priceStart\":0,\"sortType\":\"renqi\"}},\"versionCode\":0,\"width\":640}],\"height\":100,\"type\":\"channel_item\",\"versionCode\":0,\"width\":640},{\"atoms\":[{\"bankImage\":true,\"height\":289,\"imageURL\":\"http://img03.taobaocdn.com/bao/uploaded/i3/T1OdxDXXtvXXcWWv_a_090851.jpg_250x250.jpg\",\"offerId\":102077,\"originalPrice\":{\"amount\":119.30,\"cent\":11930,\"currencyCode\":\"CNY\"},\"price\":{\"amount\":119.30,\"cent\":11930,\"currencyCode\":\"CNY\"},\"style\":0,\"title\":\"限时包邮 8*8照片书|相册影集|婴儿|宝宝|儿童/diy定制|制作 简单\",\"versionCode\":0,\"volume\":0,\"width\":213},{\"bankImage\":true,\"height\":289,\"imageURL\":\"http://img05.taobaocdn.com/bao/uploaded/i5/T1w9NDXipxXXay20Q4_052428.jpg_250x250.jpg\",\"offerId\":102076,\"originalPrice\":{\"amount\":119.30,\"cent\":11930,\"currencyCode\":\"CNY\"},\"price\":{\"amount\":119.30,\"cent\":11930,\"currencyCode\":\"CNY\"},\"style\":0,\"title\":\"限时包邮 8*8照片书|相册影集|婴儿|宝宝|儿童/diy定制|制作 D调\",\"versionCode\":0,\"volume\":0,\"width\":213},{\"bankImage\":true,\"height\":289,\"imageURL\":\"http://img06.taobaocdn.com/bao/uploaded/i6/T1hIRDXalGXXa_aivX_085522.jpg_250x250.jpg\",\"offerId\":102075,\"originalPrice\":{\"amount\":119.30,\"cent\":11930,\"currencyCode\":\"CNY\"},\"price\":{\"amount\":119.30,\"cent\":11930,\"currencyCode\":\"CNY\"},\"style\":0,\"title\":\"限时包邮 8*8照片书|相册影集|婴儿|宝宝|儿童/diy定制|制作 青春\",\"versionCode\":0,\"volume\":0,\"width\":213},{\"bankImage\":true,\"height\":289,\"imageURL\":\"http://img01.taobaocdn.com/bao/uploaded/i1/T1GyuyXjxDXXcE22E8_100415.jpg_250x250.jpg\",\"offerId\":102074,\"originalPrice\":{\"amount\":158.00,\"cent\":15800,\"currencyCode\":\"CNY\"},\"price\":{\"amount\":158.00,\"cent\":15800,\"currencyCode\":\"CNY\"},\"style\":0,\"title\":\"马伊琍同款项链 蝴蝶 正品925纯银 假一罰十 DIY字母名字项链定做\",\"versionCode\":0,\"volume\":0,\"width\":213},{\"bankImage\":true,\"height\":289,\"imageURL\":\"http://img02.taobaocdn.com/bao/uploaded/i2/T1Uw4IXmRyXXayTOM6_062232.jpg_250x250.jpg\",\"offerId\":102073,\"originalPrice\":{\"amount\":158.00,\"cent\":15800,\"currencyCode\":\"CNY\"},\"price\":{\"amount\":158.00,\"cent\":15800,\"currencyCode\":\"CNY\"},\"style\":0,\"title\":\"马伊琍同款项链 爱心天使 正品925纯银 假一罰十 DIY名字项链定做\",\"versionCode\":0,\"volume\":0,\"width\":213},{\"bankImage\":true,\"height\":289,\"imageURL\":\"http://img08.taobaocdn.com/bao/uploaded/i8/T1vElPXcFEXXb6e.34_054443.jpg_250x250.jpg\",\"offerId\":102072,\"originalPrice\":{\"amount\":238.00,\"cent\":23800,\"currencyCode\":\"CNY\"},\"price\":{\"amount\":238.00,\"cent\":23800,\"currencyCode\":\"CNY\"},\"style\":0,\"title\":\"包邮！银条男士项链 正品925纯银刻字 实心项链 DIY刻字项链定做\",\"versionCode\":0,\"volume\":0,\"width\":213}],\"height\":578,\"type\":\"offer_item\",\"versionCode\":0,\"width\":640},{\"atoms\":[{\"action\":\"go_to_search\",\"bankImage\":true,\"colorBackground\":\"#333333\",\"height\":100,\"style\":1,\"title\":\"最新上市\",\"uIActionParams\":{\"offerRequest\":{\"beginPage\":0,\"companyId\":1000000301,\"deliveryFree\":false,\"descendOrder\":true,\"discount\":false,\"pageSize\":0,\"pop\":false,\"priceEnabled\":false,\"priceEnd\":3.4028235E38,\"priceStart\":0,\"sortType\":\"time\"}},\"versionCode\":0,\"width\":640}],\"height\":100,\"type\":\"channel_item\",\"versionCode\":0,\"width\":640},{\"atoms\":[{\"bankImage\":true,\"height\":289,\"imageURL\":\"http://img01.taobaocdn.com/bao/uploaded/i1/T17OxOXi0yXXau1o75_060407.jpg_250x250.jpg\",\"offerId\":102041,\"originalPrice\":{\"amount\":46.80,\"cent\":4680,\"currencyCode\":\"CNY\"},\"price\":{\"amount\":46.80,\"cent\":4680,\"currencyCode\":\"CNY\"},\"style\":0,\"title\":\"限时抢购 跨年台历定制/照片定做/制作/挂历/日历 8寸25页\",\"versionCode\":0,\"volume\":0,\"width\":213},{\"bankImage\":true,\"height\":289,\"imageURL\":\"http://img08.taobaocdn.com/bao/uploaded/i8/T12yhOXh0EXXXfz.I5_060343.jpg_250x250.jpg\",\"offerId\":102042,\"originalPrice\":{\"amount\":46.80,\"cent\":4680,\"currencyCode\":\"CNY\"},\"price\":{\"amount\":46.80,\"cent\":4680,\"currencyCode\":\"CNY\"},\"style\":0,\"title\":\"限时抢购 跨年台历定制/照片定做/制作/挂历/日历 8寸25页 宝宝\",\"versionCode\":0,\"volume\":0,\"width\":213},{\"bankImage\":true,\"height\":289,\"imageURL\":\"http://img05.taobaocdn.com/bao/uploaded/i5/T1fpx1XfdoXXcDATUZ_033624.jpg_250x250.jpg\",\"offerId\":102043,\"originalPrice\":{\"amount\":44.80,\"cent\":4480,\"currencyCode\":\"CNY\"},\"price\":{\"amount\":44.80,\"cent\":4480,\"currencyCode\":\"CNY\"},\"style\":0,\"title\":\"限时秒杀 8x6画册|相册/照片书/影集|宝宝儿童/diy定制|制作 生活\",\"versionCode\":0,\"volume\":0,\"width\":213},{\"bankImage\":true,\"height\":289,\"imageURL\":\"http://img06.taobaocdn.com/bao/uploaded/i6/T1jyVOXntsXXaQrU35_060401.jpg_250x250.jpg\",\"offerId\":102044,\"originalPrice\":{\"amount\":46.80,\"cent\":4680,\"currencyCode\":\"CNY\"},\"price\":{\"amount\":46.80,\"cent\":4680,\"currencyCode\":\"CNY\"},\"style\":0,\"title\":\"限时抢购 跨年台历定制/照片定做/制作/挂历/日历 8寸25页 看海\",\"versionCode\":0,\"volume\":0,\"width\":213},{\"bankImage\":true,\"height\":289,\"imageURL\":\"http://img01.taobaocdn.com/bao/uploaded/i1/T1yrX1XjJbXXcDvJfa_090502.jpg_250x250.jpg\",\"offerId\":102045,\"originalPrice\":{\"amount\":44.80,\"cent\":4480,\"currencyCode\":\"CNY\"},\"price\":{\"amount\":44.80,\"cent\":4480,\"currencyCode\":\"CNY\"},\"style\":0,\"title\":\"限时秒杀 8x6画册|相册/照片书/影集|宝宝儿童/diy定制|制作 曾经\",\"versionCode\":0,\"volume\":0,\"width\":213},{\"bankImage\":true,\"height\":289,\"imageURL\":\"http://img05.taobaocdn.com/bao/uploaded/i5/T1rUROXcNAXXX_AA.6_062529.jpg_250x250.jpg\",\"offerId\":102046,\"originalPrice\":{\"amount\":39.59,\"cent\":3959,\"currencyCode\":\"CNY\"},\"price\":{\"amount\":39.59,\"cent\":3959,\"currencyCode\":\"CNY\"},\"style\":0,\"title\":\"卖疯了！国际一级白瓷！个性水杯定制 印图照片 情侣马克杯 春日\",\"versionCode\":0,\"volume\":0,\"width\":213}],\"height\":578,\"type\":\"offer_item\",\"versionCode\":0,\"width\":640}],\"totalCount\":0}"
  },
  {
    "path": "src/test/resources/META-INF/persistence.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<persistence version=\"1.0\" \n\txmlns=\"http://java.sun.com/xml/ns/persistence\" \n\txmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n\txsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd\">\n\n    <persistence-unit name=\"persistenceUnit\" transaction-type=\"RESOURCE_LOCAL\">\n        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>\n        <class>com.alibaba.json.demo.hibernate.data.Contrato</class>\n        <class>com.alibaba.json.demo.hibernate.data.Customer</class>\n        <class>com.alibaba.json.demo.hibernate.data.Employee</class>\n        <class>com.alibaba.json.demo.hibernate.data.Liquidacao</class>\n        <class>com.alibaba.json.demo.hibernate.data.Office</class>\n        <class>com.alibaba.json.demo.hibernate.data.Order</class>\n        <class>com.alibaba.json.demo.hibernate.data.OrderDetail</class>\n        <class>com.alibaba.json.demo.hibernate.data.OrderDetailId</class>\n        <class>com.alibaba.json.demo.hibernate.data.Parcela</class>\n        <class>com.alibaba.json.demo.hibernate.data.Payment</class>\n        <class>com.alibaba.json.demo.hibernate.data.PaymentId</class>\n        <class>com.alibaba.json.demo.hibernate.data.Product</class>\n        <properties>\n\t\t\t<property name=\"javax.persistence.jdbc.driver\" value=\"org.h2.Driver\"/>\n\t\t\t<property name=\"javax.persistence.jdbc.user\" value=\"\"/>\n\t\t\t<property name=\"javax.persistence.jdbc.password\" value=\"\"/>\n\t\t\t<property name=\"javax.persistence.jdbc.url\" value=\"jdbc:h2:mem:;DB_CLOSE_DELAY=-1;INIT=RUNSCRIPT FROM 'classpath:/classicmodels.sql'\"/>\n\t\t\t<property name=\"hibernate.dialect\" value=\"org.hibernate.dialect.H2Dialect\"/>\n        </properties>\n    </persistence-unit>\n    \n</persistence>"
  },
  {
    "path": "src/test/resources/META-INF/services/com.alibaba.fastjson.serializer.AutowiredObjectSerializer",
    "content": "com.alibaba.json.demo.XAutowiredObjectSerializer\n#com.alibaba.json.demo.XAutowiredObjectSerializer\ncom.alibaba.json.demo.ErrorObjectSerializer"
  },
  {
    "path": "src/test/resources/classicmodels.sql",
    "content": "--\n-- Schema classicmodels with initial data.\n--\n-- The original file was downloaded from Eclipse BIRT project site: \n-- http://www.eclipse.org/birt/phoenix/db/#mysql\n-- ------------------------------------------------------\n\n/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;\n/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;\n/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;\n/*!40101 SET NAMES utf8 */;\n\n/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;\n/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;\n/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;\n\n\n-- This script has been modified to be executed in a H2 database.\n-- The original script was designed for MySQL DB. Uncomment this lines and \n-- comment next SET lines to execute this script in a MySQL database\n-- CREATE DATABASE IF NOT EXISTS classicmodels;\n-- USE classicmodels;\ncreate schema IF NOT EXISTS classicmodels; -- Uncomment this also to execute in MySQL\nSET MODE MySQL;\nSET IGNORECASE TRUE;\n\n\nDROP TABLE IF EXISTS `classicmodels`.`Customer`;\nCREATE TABLE  `classicmodels`.`Customer` (\n  `customerNumber` int(11) NOT NULL,\n  `customerName` varchar(50) NOT NULL,\n  `contactLastName` varchar(50) NOT NULL,\n  `contactFirstName` varchar(50) NOT NULL,\n  `phone` varchar(50) NOT NULL,\n  `addressLine1` varchar(50) NOT NULL,\n  `addressLine2` varchar(50) DEFAULT NULL,\n  `city` varchar(50) NOT NULL,\n  `state` varchar(50) DEFAULT NULL,\n  `postalCode` varchar(15) DEFAULT NULL,\n  `country` varchar(50) NOT NULL,\n  `salesRepEmployeeNumber` int(11) DEFAULT NULL,\n  `creditLimit` double DEFAULT NULL,\n  PRIMARY KEY (`customerNumber`)\n) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;\nINSERT INTO `classicmodels`.`Customer` (`customerNumber`,`customerName`,`contactLastName`,`contactFirstName`,`phone`,`addressLine1`,`addressLine2`,`city`,`state`,`postalCode`,`country`,`salesRepEmployeeNumber`,`creditLimit`) VALUES \n (103,'Atelier graphique','Schmitt','Carine ','40.32.2555','54, rue Royale',NULL,'Nantes',NULL,'44000','France',1370,21000),\n (112,'Signal Gift Stores','King','Sue','7025551838','8489 Strong St.',NULL,'Las Vegas','NV','83030','USA',1166,71800),\n (114,'Australian Collectors, Co.','Ferguson','Peter','03 9520 4555','636 St Kilda Road','Level 3','Melbourne','Victoria','3004','Australia',1611,117300),\n (119,'La Rochelle Gifts','Labrune','Janine ','40.67.8555','67, rue des Cinquante Otages',NULL,'Nantes',NULL,'44000','France',1370,118200),\n (121,'Baane Mini Imports','Bergulfsen','Jonas ','07-98 9555','Erling Skakkes gate 78',NULL,'Stavern',NULL,'4110','Norway',1504,81700),\n (124,'Mini Gifts Distributors Ltd.','Nelson','Valarie','4155551450','5677 Strong St.',NULL,'San Rafael','CA','97562','USA',1165,210500),\n (125,'Havel & Zbyszek Co','Piestrzeniewicz','Zbyszek ','(26) 642-7555','ul. Filtrowa 68',NULL,'Warszawa',NULL,'01-012','Poland',NULL,0),\n (128,'Blauer See Auto, Co.','Keitel','Roland','+49 69 66 90 2555','Lyonerstr. 34',NULL,'Frankfurt',NULL,'60528','Germany',1504,59700),\n (129,'Mini Wheels Co.','Murphy','Julie','6505555787','5557 North Pendale Street',NULL,'San Francisco','CA','94217','USA',1165,64600),\n (131,'Land of Toys Inc.','Yu','Kwai','2125557818','897 Long Airport Avenue',NULL,'NYC','NY','10022','USA',1323,114900),\n (141,'Euro+ Shopping Channel','Freyre','Diego ','(91) 555 94 44','C/ Moralzarzal, 86',NULL,'Madrid',NULL,'28034','Spain',1370,227600),\n (144,'Volvo Model Replicas, Co','Berglund','Christina ','0921-12 3555','Berguvsvägen  8',NULL,'Luleå',NULL,'S-958 22','Sweden',1504,53100),\n (145,'Danish Wholesale Imports','Petersen','Jytte ','31 12 3555','Vinbæltet 34',NULL,'Kobenhavn',NULL,'1734','Denmark',1401,83400),\n (146,'Saveley & Henriot, Co.','Saveley','Mary ','78.32.5555','2, rue du Commerce',NULL,'Lyon',NULL,'69004','France',1337,123900),\n (148,'Dragon Souveniers, Ltd.','Natividad','Eric','+65 221 7555','Bronz Sok., Bronz Apt. 3/6 Tesvikiye',NULL,'Singapore',NULL,'079903','Singapore',1621,103800),\n (151,'Muscle Machine Inc','Young','Jeff','2125557413','4092 Furth Circle','Suite 400','NYC','NY','10022','USA',1286,138500),\n (157,'Diecast Classics Inc.','Yu','Kyung','2155551555','7586 Pompton St.',NULL,'Allentown','PA','70267','USA',1216,100600),\n (161,'Technics Stores Inc.','Hirano','Juri','6505556809','9408 Furth Circle',NULL,'Burlingame','CA','94217','USA',1165,84600),\n (166,'Handji Gifts& Co','Victorino','Wendy','+65 224 1555','Village Close - 106 Linden Road Sandown','2nd Floor','Singapore',NULL,'069045','Singapore',1612,97900),\n (167,'Herkku Gifts','Oeztan','Veysel','+47 2267 3215','Drammen 121, PR 744 Sentrum',NULL,'Bergen',NULL,'N 5804','Norway  ',1504,96800),\n (168,'American Souvenirs Inc','Franco','Sue','2035557845','149 Spinnaker Dr.','Suite 101','New Haven','CT','97823','USA',1286,0),\n (169,'Porto Imports Co.','de Castro','Isabel ','(1) 356-5555','Estrada da saúde n. 58',NULL,'Lisboa',NULL,'1756','Portugal',NULL,0),\n (171,'Daedalus Designs Imports','Rancé','Martine ','20.16.1555','184, chaussée de Tournai',NULL,'Lille',NULL,'59000','France',1370,82900),\n (172,'La Corne Dabondance, Co.','Bertrand','Marie','(1) 42.34.2555','265, boulevard Charonne',NULL,'Paris',NULL,'75012','France',1337,84300),\n (173,'Cambridge Collectables Co.','Tseng','Kyung','6175555555','4658 Baden Av.',NULL,'Cambridge','MA','51247','USA',1188,43400),\n (175,'Gift Depot Inc.','King','Julie','2035552570','25593 South Bay Ln.',NULL,'Bridgewater','CT','97562','USA',1323,84300),\n (177,'Osaka Souveniers Co.','Kentary','Mory','+81 06 6342 5555','Dojima Avanza 4F, 1-6-20 Dojima, Kita-ku',NULL,'Osaka','Osaka',' 530-0003','Japan',1621,81200),\n (181,'Vitachrome Inc.','Frick','Michael','2125551500','2678 Kingston Rd.','Suite 101','NYC','NY','10022','USA',1286,76400),\n (186,'Toys of Finland, Co.','Karttunen','Matti','90-224 8555','Keskuskatu 45',NULL,'Helsinki',NULL,'21240','Finland',1501,96500),\n (187,'AV Stores, Co.','Ashworth','Victoria','(171) 555-1555','Fauntleroy Circus',NULL,'Manchester',NULL,'EC2 5NT','UK',1501,136800),\n (189,'Clover Collections, Co.','Cassidy','Dean','+353 1862 1555','25 Maiden Lane','Floor No. 4','Dublin',NULL,'2','Ireland',1504,69400),\n (198,'Auto-Moto Classics Inc.','Taylor','Leslie','6175558428','16780 Pompton St.',NULL,'Brickhaven','MA','58339','USA',1216,23000),\n (201,'UK Collectables, Ltd.','Devon','Elizabeth','(171) 555-2282','Berkeley Gardens 12  Brewery',NULL,'Liverpool',NULL,'WX1 6LT','UK',1501,92700),\n (202,'Canadian Gift Exchange Network','Tannamuri','Yoshi ','(604) 555-3392','1900 Oak St.',NULL,'Vancouver','BC','V3F 2K1','Canada',1323,90300),\n (204,'Online Mini Collectables','Barajas','Miguel','6175557555','7635 Spinnaker Dr.',NULL,'Brickhaven','MA','58339','USA',1188,68700),\n (205,'Toys4GrownUps.com','Young','Julie','6265557265','78934 Hillside Dr.',NULL,'Pasadena','CA','90003','USA',1166,90700),\n (206,'Asian Shopping Network, Co','Walker','Brydey','+612 9411 1555','Penthouse Level, Suntec Tower Three, 8 Temasek',NULL,'Singapore',NULL,'038988','Singapore',NULL,0),\n (209,'Mini Caravy','Citeaux','Frédérique ','88.60.1555','24, place Kléber',NULL,'Strasbourg',NULL,'67000','France',1370,53800),\n (211,'King Kong Collectables, Co.','Sunwoo','Michael','+852 2251 1555','Bank of China Tower, 1 Garden Road','Level 25','Central Hong Kong',NULL,'','Hong Kong',1621,58600),\n (216,'Enaco Distributors','Saavedra','Eduardo ','(93) 203 4555','Rambla de Cataluña, 23',NULL,'Barcelona',NULL,'08022','Spain',1702,60300),\n (219,'Boards & Toys Co.','Young','Leslie','3105552373','4097 Douglas Av.',NULL,'Glendale','CA','92561','USA',1166,11000),\n (223,'Natürlich Autos','Kloss','Horst ','0372-555188','Taucherstraße 10',NULL,'Cunewalde',NULL,'01307','Germany',NULL,0),\n (227,'Heintze Collectables','Ibsen','Palle','86 21 3555','Smagsloget 45',NULL,'Århus',NULL,'8200','Denmark',1401,120800),\n (233,'Québec Home Shopping Network','Fresnière','Jean ','(514) 555-8054','43 rue St. Laurent',NULL,'Montréal','Québec','H1J 1C3','Canada',1286,48700),\n (237,'ANG Resellers','Camino','Alejandra ','(91) 745 6555','Gran Vía, 1',NULL,'Madrid',NULL,'28001','Spain',NULL,0),\n (239,'Collectable Mini Designs Co.','Thompson','Valarie','7605558146','361 Furth Circle',NULL,'San Diego','CA','91217','USA',1166,105000),\n (240,'giftsbymail.co.uk','Bennett','Helen ','(198) 555-8888','Garden House Crowther Way',NULL,'Cowes','Isle of Wight','PO31 7PJ','UK',1501,93900),\n (242,'Alpha Cognac','Roulet','Annette ','61.77.6555','1 rue Alsace-Lorraine',NULL,'Toulouse',NULL,'31000','France',1370,61100),\n (247,'Messner Shopping Network','Messner','Renate ','069-0555984','Magazinweg 7',NULL,'Frankfurt',NULL,'60528','Germany',NULL,0),\n (249,'Amica Models & Co.','Accorti','Paolo ','011-4988555','Via Monte Bianco 34',NULL,'Torino',NULL,'10100','Italy',1401,113000),\n (250,'Lyon Souveniers','Da Cunha','Daniel','+33 1 46 62 7555','27 rue du Colonel Pierre Avia',NULL,'Paris',NULL,'75508','France',1337,68100),\n (256,'Auto Associés & Cie.','Tonini','Daniel ','30.59.8555','67, avenue de lEurope',NULL,'Versailles',NULL,'78000','France',1370,77900),\n (259,'Toms Spezialitäten, Ltd','Pfalzheim','Henriette ','0221-5554327','Mehrheimerstr. 369',NULL,'Köln',NULL,'50739','Germany',1504,120400),\n (260,'Royal Canadian Collectables, Ltd.','Lincoln','Elizabeth ','(604) 555-4555','23 Tsawassen Blvd.',NULL,'Tsawassen','BC','T2F 8M4','Canada',1323,89600),\n (273,'Franken Gifts, Co','Franken','Peter ','089-0877555','Berliner Platz 43',NULL,'München',NULL,'80805','Germany',NULL,0),\n (276,'Annas Decorations, Ltd','OHara','Anna','02 9936 8555','201 Miller Street','Level 15','North Sydney','NSW','2060','Australia',1611,107800),\n (278,'Rovelli Gifts','Rovelli','Giovanni ','035-640555','Via Ludovico il Moro 22',NULL,'Bergamo',NULL,'24100','Italy',1401,119600),\n (282,'Souveniers And Things Co.','Huxley','Adrian','+61 2 9495 8555','Monitor Money Building, 815 Pacific Hwy','Level 6','Chatswood','NSW','2067','Australia',1611,93300),\n (286,'Martas Replicas Co.','Hernandez','Marta','6175558555','39323 Spinnaker Dr.',NULL,'Cambridge','MA','51247','USA',1216,123700),\n (293,'BG&E Collectables','Pon','Ed','+41 26 425 50 01','Rte des Arsenaux 41 ',NULL,'Fribourg',NULL,'1700','Switzerland',NULL,0),\n (298,'Vida Sport, Ltd','Holz','Michael ','0897-034555','Grenzacherweg 237',NULL,'Genève',NULL,'1203','Switzerland',1702,141300),\n (299,'Norway Gifts By Mail, Co.','Klaeboe','Jan','+47 2212 1555','Drammensveien 126 A, PB 744 Sentrum',NULL,'Oslo',NULL,'N 0106','Norway  ',1504,95100),\n (303,'Schuyler Imports','Schuyler','Bradley','+31 20 491 9555','Kingsfordweg 151',NULL,'Amsterdam',NULL,'1043 GR','Netherlands',NULL,0),\n (307,'Der Hund Imports','Anders','Maria ','030-0074555','Obere Str. 57',NULL,'Berlin',NULL,'12209','Germany',NULL,0),\n (311,'Oulu Toy Supplies, Inc.','Koskitalo','Pirkko','981-443655','Torikatu 38',NULL,'Oulu',NULL,'90110','Finland',1501,90500),\n (314,'Petit Auto','Dewey','Catherine ','(02) 5554 67','Rue Joseph-Bens 532',NULL,'Bruxelles',NULL,'B-1180','Belgium',1401,79900),\n (319,'Mini Classics','Frick','Steve','9145554562','3758 North Pendale Street',NULL,'White Plains','NY','24067','USA',1323,102700),\n (320,'Mini Creations Ltd.','Tam','Wing C','5085559555','4575 Hillside Dr.',NULL,'New Bedford','MA','50553','USA',1188,94500),\n (321,'Corporate Gift Ideas Co.','Brown','Julie','6505551386','7734 Strong St.',NULL,'San Francisco','CA','94217','USA',1165,105000),\n (323,'Down Under Souveniers, Inc','Graham','Mike','+64 9 312 5555','162-164 Grafton Road','Level 2','Auckland  ',NULL,'','New Zealand',1612,88000),\n (324,'Stylish Desk Decors, Co.','Brown','Ann ','(171) 555-0297','35 King George',NULL,'London',NULL,'WX3 6FW','UK',1501,77000),\n (328,'Tekni Collectables Inc.','Brown','William','2015559350','7476 Moss Rd.',NULL,'Newark','NJ','94019','USA',1323,44100),\n (333,'Australian Gift Network, Co','Calaghan','Tony','61-7-3844-6555','31 Duncan St. West End',NULL,'South Brisbane','Queensland','4101','Australia',1611,51600),\n (334,'Suominen Souveniers','Suominen','Kalle','+358 9 8045 555','Software Engineering Center, SEC Oy',NULL,'Espoo',NULL,'FIN-02271','Finland',1501,98800),\n (335,'Cramer Spezialitäten, Ltd','Cramer','Philip ','0555-09555','Maubelstr. 90',NULL,'Brandenburg',NULL,'14776','Germany',NULL,0),\n (339,'Classic Gift Ideas, Inc','Cervantes','Francisca','2155554695','782 First Street',NULL,'Philadelphia','PA','71270','USA',1188,81100),\n (344,'CAF Imports','Fernandez','Jesus','+34 913 728 555','Merchants House, 27-30 Merchants Quay',NULL,'Madrid',NULL,'28023','Spain',1702,59600),\n (347,'Men R US Retailers, Ltd.','Chandler','Michael','2155554369','6047 Douglas Av.',NULL,'Los Angeles','CA','91003','USA',1166,57700),\n (348,'Asian Treasures, Inc.','McKenna','Patricia ','2967 555','8 Johnstown Road',NULL,'Cork','Co. Cork',NULL,'Ireland',NULL,0),\n (350,'Marseille Mini Autos','Lebihan','Laurence ','91.24.4555','12, rue des Bouchers',NULL,'Marseille',NULL,'13008','France',1337,65000),\n (353,'Reims Collectables','Henriot','Paul ','26.47.1555','59 rue de lAbbaye',NULL,'Reims',NULL,'51100','France',1337,81100),\n (356,'SAR Distributors, Co','Kuger','Armand','+27 21 550 3555','Century City-Montague Gardens PO Box 37177',NULL,'Chempet',NULL,' 7442','South Africa',NULL,0),\n (357,'GiftsForHim.com','MacKinlay','Wales','64-9-3763555','199 Great North Road',NULL,'Auckland',NULL,'','New Zealand',1612,77700),\n (361,'Kommission Auto','Josephs','Karin','0251-555259','Luisenstr. 48',NULL,'Münster',NULL,'44087','Germany',NULL,0),\n (362,'Gifts4AllAges.com','Yoshido','Juri','6175559555','8616 Spinnaker Dr.',NULL,'Boston','MA','51003','USA',1216,41900),\n (363,'Online Diecast Creations Co.','Young','Valarie','6035558647','2304 Long Airport Avenue',NULL,'Nashua','NH','62005','USA',1216,114200),\n (369,'Lisboa Souveniers, Inc','Rodriguez','Lino ','(1) 354-2555','Jardim das rosas n. 32',NULL,'Lisboa',NULL,'1675','Portugal',NULL,0),\n (376,'Precious Collectables','Wang','Yang ','0452-076555','Hauptstr. 29',NULL,'Bern',NULL,'3012','Switzerland',1702,0),\n (379,'Collectables For Less Inc.','Nelson','Allen','6175558555','7825 Douglas Av.',NULL,'Brickhaven','MA','58339','USA',1188,70700),\n (381,'Royale Belge','Cartrain','Pascale ','(071) 23 67 2555','Boulevard Tirou, 255',NULL,'Charleroi',NULL,'B-6000','Belgium',1401,23500),\n (382,'Salzburg Collectables','Pipps','Georg ','6562-9555','Geislweg 14',NULL,'Salzburg',NULL,'5020','Austria',1401,71700),\n (385,'Cruz & Sons Co.','Cruz','Arnold','+63 2 555 3587','15 McCallum Street - NatWest Center #13-03',NULL,'Makati City',NULL,'1227 MM','Philippines',1621,81500),\n (386,'Lordine Souveniers','Moroni','Maurizio ','0522-556555','Strada Provinciale 124',NULL,'Reggio Emilia',NULL,'42100','Italy',1401,121400),\n (398,'Tokyo Collectables, Ltd','Shimamura','Akiko','+81 3 3584 0555','2-2-8 Roppongi',NULL,'Minato-ku','Tokyo','106-0032','Japan',1621,94400),\n (406,'Auto Canal+ Petit','Perrier','Dominique','(1) 47.55.6555','25, rue Lauriston',NULL,'Paris',NULL,'75016','France',1337,95000),\n (409,'Stuttgart Collectable Exchange','Müller','Rita ','0711-555361','Adenauerallee 900',NULL,'Stuttgart',NULL,'70563','Germany',NULL,0),\n (412,'Extreme Desk Decorations, Ltd','McRoy','Sarah','04 499 9555','101 Lambton Quay','Level 11','Wellington',NULL,'','New Zealand',1612,86800),\n (415,'Bavarian Collectables Imports, Co.','Donnermeyer','Michael',' +49 89 61 08 9555','Hansastr. 15',NULL,'Munich',NULL,'80686','Germany',1504,77000),\n (424,'Classic Legends Inc.','Hernandez','Maria','2125558493','5905 Pompton St.','Suite 750','NYC','NY','10022','USA',1286,67500),\n (443,'Feuer Online Stores, Inc','Feuer','Alexander ','0342-555176','Heerstr. 22',NULL,'Leipzig',NULL,'04179','Germany',NULL,0),\n (447,'Gift Ideas Corp.','Lewis','Dan','2035554407','2440 Pompton St.',NULL,'Glendale','CT','97561','USA',1323,49700),\n (448,'Scandinavian Gift Ideas','Larsson','Maria ','0695-34 6555','Åkergatan 24',NULL,'Bräcke',NULL,'S-844 67','Sweden',1504,116400),\n (450,'The Sharp Gifts Warehouse','Frick','Sue','4085553659','3086 Ingle Ln.',NULL,'San Jose','CA','94217','USA',1165,77600),\n (452,'Mini Auto Werke','Mendel','Roland ','7675-3555','Kirchgasse 6',NULL,'Graz',NULL,'8010','Austria',1401,45300),\n (455,'Super Scale Inc.','Murphy','Leslie','2035559545','567 North Pendale Street',NULL,'New Haven','CT','97823','USA',1286,95400),\n (456,'Microscale Inc.','Kuo','Kee','2125551957','5290 North Pendale Street','Suite 200','NYC','NY','10022','USA',1286,39800),\n (458,'Corrida Auto Replicas, Ltd','Sommer','Martín ','(91) 555 22 82','C/ Araquil, 67',NULL,'Madrid',NULL,'28023','Spain',1702,104600),\n (459,'Warburg Exchange','Ottlieb','Sven ','0241-039123','Walserweg 21',NULL,'Aachen',NULL,'52066','Germany',NULL,0),\n (462,'FunGiftIdeas.com','Benitez','Violeta','5085552555','1785 First Street',NULL,'New Bedford','MA','50553','USA',1216,85800),\n (465,'Anton Designs, Ltd.','Anton','Carmen','+34 913 728555','c/ Gobelas, 19-1 Urb. La Florida',NULL,'Madrid',NULL,'28023','Spain',NULL,0),\n (471,'Australian Collectables, Ltd','Connery','Sean','61-9-3844-6555','7 Allen Street',NULL,'Glen Waverly','Victoria','3150','Australia',1611,60300),\n (473,'Frau da Collezione','Ricotti','Franco','+39 022515555','20093 Cologno Monzese, via Alessandro Volta 16',NULL,'Milan',NULL,'','Italy',1401,34800),\n (475,'West Coast Collectables Co.','Thompson','Steve','3105553722','3675 Furth Circle',NULL,'Burbank','CA','94019','USA',1166,55400),\n (477,'Mit Vergnügen & Co.','Moos','Hanna ','0621-08555','Forsterstr. 57',NULL,'Mannheim',NULL,'68306','Germany',NULL,0),\n (480,'Kremlin Collectables, Co.','Semenov','Alexander ','+7 812 293 0521','2 Pobedy Square',NULL,'Saint Petersburg',NULL,'196143','Russia',NULL,0),\n (481,'Raanan Stores, Inc','Altagar,G M','Raanan','+ 972 9 959 8555','3 Hagalim Blv.,',NULL,'Herzlia',NULL,'47625','Israel',NULL,0),\n (484,'Iberia Gift Imports, Corp.','Roel','José Pedro ','(95) 555 82 82','C/ Romero, 33',NULL,'Sevilla',NULL,'41101','Spain',1702,65700),\n (486,'Motor Mint Distributors Inc.','Hernandez','Rosa','2155559857','11328 Douglas Av.',NULL,'Philadelphia','PA','71270','USA',1323,72600),\n (487,'Signal Collectibles Ltd.','Taylor','Sue','4155554312','2793 Furth Circle',NULL,'Brisbane','CA','94217','USA',1165,60300),\n (489,'Double Decker Gift Stores, Ltd','Hardy','Thomas ','(171) 555-7555','120 Hanover Sq.',NULL,'London',NULL,'WA1 1DP','UK',1501,43300),\n (495,'Diecast Collectables','Franco','Valarie','6175552555','6251 Ingle Ln.',NULL,'Boston','MA','51003','USA',1188,85100),\n (496,'Kellys Gift Shop','Snowden','Tony','+64 9 5555500','Arenales 1938 3A',NULL,'Auckland  ',NULL,'','New Zealand',1612,110000);\n\nDROP TABLE IF EXISTS `classicmodels`.`Employee`;\nCREATE TABLE  `classicmodels`.`Employee` (\n  `employeeNumber` int(11) NOT NULL,\n  `lastName` varchar(50) NOT NULL,\n  `firstName` varchar(50) NOT NULL,\n  `extension` varchar(10) NOT NULL,\n  `email` varchar(100) NOT NULL,\n  `officeCode` varchar(50) NOT NULL,\n  `reportsTo` int(11) DEFAULT NULL,\n  `jobTitle` varchar(50) NOT NULL,\n  PRIMARY KEY (`employeeNumber`)\n) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;\nINSERT INTO `classicmodels`.`Employee` (`employeeNumber`,`lastName`,`firstName`,`extension`,`email`,`officeCode`,`reportsTo`,`jobTitle`) VALUES \n (1002,'Murphy','Diane','x5800','dmurphy@classicmodelcars.com','1',NULL,'President'),\n (1056,'Patterson','Mary','x4611','mpatterso@classicmodelcars.com','1',1002,'VP Sales'),\n (1076,'Firrelli','Jeff','x9273','jfirrelli@classicmodelcars.com','1',1002,'VP Marketing'),\n (1088,'Patterson','William','x4871','wpatterson@classicmodelcars.com','6',1056,'Sales Manager (JAPAN, APAC)'),\n (1102,'Bondur','Gerard','x5408','athompson@classicmodelcars.com','4',1056,'Sale Manager (EMEA)'),\n (1143,'Bow','Anthony','x5428','bhoward@classicmodelcars.com','1',1056,'Sales Manager (NA)'),\n (1165,'Jennings','Leslie','x3291','ljennings@classicmodelcars.com','1',1143,'Sales Rep'),\n (1166,'Thompson','Leslie','x4065','lthompson@classicmodelcars.com','1',1143,'Sales Rep'),\n (1188,'Firrelli','Julie','x2173','jfirrelli@classicmodelcars.com','2',1143,'Sales Rep'),\n (1216,'Patterson','Steve','x4334','spatterso@classicmodelcars.com','2',1143,'Sales Rep'),\n (1286,'Tseng','Foon Yue','x2248','ftseng@classicmodelcars.com','3',1143,'Sales Rep'),\n (1323,'Vanauf','George','x4102','gvanauf@classicmodelcars.com','3',1143,'Sales Rep'),\n (1337,'Bondur','Loui','x6493','lbondur@classicmodelcars.com','4',1102,'Sales Rep'),\n (1370,'Hernandez','Gerard','x2028','ghernande@classicmodelcars.com','4',1102,'Sales Rep'),\n (1401,'Castillo','Pamela','x2759','pcastillo@classicmodelcars.com','4',1102,'Sales Rep'),\n (1501,'Bott','Larry','x2311','lbott@classicmodelcars.com','7',1102,'Sales Rep'),\n (1504,'Jones','Barry','x102','bjones@classicmodelcars.com','7',1102,'Sales Rep'),\n (1611,'Fixter','Andy','x101','afixter@classicmodelcars.com','6',1088,'Sales Rep'),\n (1612,'Marsh','Peter','x102','pmarsh@classicmodelcars.com','6',1088,'Sales Rep'),\n (1619,'King','Tom','x103','tking@classicmodelcars.com','6',1088,'Sales Rep'),\n (1621,'Nishi','Mami','x101','mnishi@classicmodelcars.com','5',1088,'Sales Rep'),\n (1625,'Kato','Yoshimi','x102','ekato@classicmodelcars.com','5',1088,'Sales Rep'),\n (1702,'Gerard','Martin','x2312','gmartin@classicmodelcars.com','4',1102,'Sales Rep');\n\nDROP TABLE IF EXISTS `classicmodels`.`Office`;\nCREATE TABLE  `classicmodels`.`Office` (\n  `officeCode` varchar(50) NOT NULL,\n  `city` varchar(50) NOT NULL,\n  `phone` varchar(50) NOT NULL,\n  `addressLine1` varchar(50) NOT NULL,\n  `addressLine2` varchar(50) DEFAULT NULL,\n  `state` varchar(50) DEFAULT NULL,\n  `country` varchar(50) NOT NULL,\n  `postalCode` varchar(10) NOT NULL,\n  `territory` varchar(10) NOT NULL,\n  PRIMARY KEY (`officeCode`)\n) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;\nINSERT INTO `classicmodels`.`Office` (`officeCode`,`city`,`phone`,`addressLine1`,`addressLine2`,`state`,`country`,`postalCode`,`territory`) VALUES \n ('1','San Francisco','+1 650 219 4782','100 Market Street','Suite 300','CA','USA','94080','NA'),\n ('2','Boston','+1 215 837 0825','1550 Court Place','Suite 102','MA','USA','02107','NA'),\n ('3','NYC','+1 212 555 3000','523 East 53rd Street','apt. 5A','NY','USA','10022','NA'),\n ('4','Paris','+33 14 723 4404','43 Rue Jouffroy Dabbans',NULL,'','France','75017','EMEA'),\n ('5','Tokyo','+81 33 224 5000','4-1 Kioicho',NULL,'Chiyoda-Ku','Japan','102-8578','Japan'),\n ('6','Sydney','+61 2 9264 2451','5-11 Wentworth Avenue','Floor #2',NULL,'Australia','NSW 2010','APAC'),\n ('7','London','+44 20 7877 2041','25 Old Broad Street','Level 7',NULL,'UK','EC2N 1HN','EMEA');\n\nDROP TABLE IF EXISTS `classicmodels`.`Order`;\nCREATE TABLE  `classicmodels`.`Order` (\n  `orderNumber` int(11) NOT NULL,\n  `orderDate` datetime NOT NULL,\n  `requiredDate` datetime NOT NULL,\n  `shippedDate` datetime DEFAULT NULL,\n  `status` varchar(15) NOT NULL,\n  `comments` text,\n  `customerNumber` int(11) NOT NULL,\n  PRIMARY KEY (`orderNumber`)\n) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;\nINSERT INTO `classicmodels`.`Order` (`orderNumber`,`orderDate`,`requiredDate`,`shippedDate`,`status`,`comments`,`customerNumber`) VALUES \n (10100,'2003-01-06 00:00:00','2003-01-13 00:00:00','2003-01-10 00:00:00','Shipped',NULL,363),\n (10101,'2003-01-09 00:00:00','2003-01-18 00:00:00','2003-01-11 00:00:00','Shipped','Check on availability.',128),\n (10102,'2003-01-10 00:00:00','2003-01-18 00:00:00','2003-01-14 00:00:00','Shipped',NULL,181),\n (10103,'2003-01-29 00:00:00','2003-02-07 00:00:00','2003-02-02 00:00:00','Shipped',NULL,121),\n (10104,'2003-01-31 00:00:00','2003-02-09 00:00:00','2003-02-01 00:00:00','Shipped',NULL,141),\n (10105,'2003-02-11 00:00:00','2003-02-21 00:00:00','2003-02-12 00:00:00','Shipped',NULL,145),\n (10106,'2003-02-17 00:00:00','2003-02-24 00:00:00','2003-02-21 00:00:00','Shipped',NULL,278),\n (10107,'2003-02-24 00:00:00','2003-03-03 00:00:00','2003-02-26 00:00:00','Shipped','Difficult to negotiate with customer. We need more marketing materials',131),\n (10108,'2003-03-03 00:00:00','2003-03-12 00:00:00','2003-03-08 00:00:00','Shipped',NULL,385),\n (10109,'2003-03-10 00:00:00','2003-03-19 00:00:00','2003-03-11 00:00:00','Shipped','Customer requested that FedEx Ground is used for this shipping',486),\n (10110,'2003-03-18 00:00:00','2003-03-24 00:00:00','2003-03-20 00:00:00','Shipped',NULL,187),\n (10111,'2003-03-25 00:00:00','2003-03-31 00:00:00','2003-03-30 00:00:00','Shipped',NULL,129),\n (10112,'2003-03-24 00:00:00','2003-04-03 00:00:00','2003-03-29 00:00:00','Shipped','Customer requested that ad materials (such as posters, pamphlets) be included in the shippment',144),\n (10113,'2003-03-26 00:00:00','2003-04-02 00:00:00','2003-03-27 00:00:00','Shipped',NULL,124),\n (10114,'2003-04-01 00:00:00','2003-04-07 00:00:00','2003-04-02 00:00:00','Shipped',NULL,172),\n (10115,'2003-04-04 00:00:00','2003-04-12 00:00:00','2003-04-07 00:00:00','Shipped',NULL,424),\n (10116,'2003-04-11 00:00:00','2003-04-19 00:00:00','2003-04-13 00:00:00','Shipped',NULL,381),\n (10117,'2003-04-16 00:00:00','2003-04-24 00:00:00','2003-04-17 00:00:00','Shipped',NULL,148),\n (10118,'2003-04-21 00:00:00','2003-04-29 00:00:00','2003-04-26 00:00:00','Shipped','Customer has worked with some of our vendors in the past and is aware of their MSRP',216),\n (10119,'2003-04-28 00:00:00','2003-05-05 00:00:00','2003-05-02 00:00:00','Shipped',NULL,382),\n (10120,'2003-04-29 00:00:00','2003-05-08 00:00:00','2003-05-01 00:00:00','Shipped',NULL,114),\n (10121,'2003-05-07 00:00:00','2003-05-13 00:00:00','2003-05-13 00:00:00','Shipped',NULL,353),\n (10122,'2003-05-08 00:00:00','2003-05-16 00:00:00','2003-05-13 00:00:00','Shipped',NULL,350),\n (10123,'2003-05-20 00:00:00','2003-05-29 00:00:00','2003-05-22 00:00:00','Shipped',NULL,103),\n (10124,'2003-05-21 00:00:00','2003-05-29 00:00:00','2003-05-25 00:00:00','Shipped','Customer very concerned about the exact color of the models. There is high risk that he may dispute the order because there is a slight color mismatch',112),\n (10125,'2003-05-21 00:00:00','2003-05-27 00:00:00','2003-05-24 00:00:00','Shipped',NULL,114),\n (10126,'2003-05-28 00:00:00','2003-06-07 00:00:00','2003-06-02 00:00:00','Shipped',NULL,458),\n (10127,'2003-06-03 00:00:00','2003-06-09 00:00:00','2003-06-06 00:00:00','Shipped','Customer requested special shippment. The instructions were passed along to the warehouse',151),\n (10128,'2003-06-06 00:00:00','2003-06-12 00:00:00','2003-06-11 00:00:00','Shipped',NULL,141),\n (10129,'2003-06-12 00:00:00','2003-06-18 00:00:00','2003-06-14 00:00:00','Shipped',NULL,324),\n (10130,'2003-06-16 00:00:00','2003-06-24 00:00:00','2003-06-21 00:00:00','Shipped',NULL,198),\n (10131,'2003-06-16 00:00:00','2003-06-25 00:00:00','2003-06-21 00:00:00','Shipped',NULL,447),\n (10132,'2003-06-25 00:00:00','2003-07-01 00:00:00','2003-06-28 00:00:00','Shipped',NULL,323),\n (10133,'2003-06-27 00:00:00','2003-07-04 00:00:00','2003-07-03 00:00:00','Shipped',NULL,141),\n (10134,'2003-07-01 00:00:00','2003-07-10 00:00:00','2003-07-05 00:00:00','Shipped',NULL,250),\n (10135,'2003-07-02 00:00:00','2003-07-12 00:00:00','2003-07-03 00:00:00','Shipped',NULL,124),\n (10136,'2003-07-04 00:00:00','2003-07-14 00:00:00','2003-07-06 00:00:00','Shipped','Customer is interested in buying more Ferrari models',242),\n (10137,'2003-07-10 00:00:00','2003-07-20 00:00:00','2003-07-14 00:00:00','Shipped',NULL,353),\n (10138,'2003-07-07 00:00:00','2003-07-16 00:00:00','2003-07-13 00:00:00','Shipped',NULL,496),\n (10139,'2003-07-16 00:00:00','2003-07-23 00:00:00','2003-07-21 00:00:00','Shipped',NULL,282),\n (10140,'2003-07-24 00:00:00','2003-08-02 00:00:00','2003-07-30 00:00:00','Shipped',NULL,161),\n (10141,'2003-08-01 00:00:00','2003-08-09 00:00:00','2003-08-04 00:00:00','Shipped',NULL,334),\n (10142,'2003-08-08 00:00:00','2003-08-16 00:00:00','2003-08-13 00:00:00','Shipped',NULL,124),\n (10143,'2003-08-10 00:00:00','2003-08-18 00:00:00','2003-08-12 00:00:00','Shipped','Can we deliver the new Ford Mustang models by end-of-quarter?',320),\n (10144,'2003-08-13 00:00:00','2003-08-21 00:00:00','2003-08-14 00:00:00','Shipped',NULL,381),\n (10145,'2003-08-25 00:00:00','2003-09-02 00:00:00','2003-08-31 00:00:00','Shipped',NULL,205),\n (10146,'2003-09-03 00:00:00','2003-09-13 00:00:00','2003-09-06 00:00:00','Shipped',NULL,447),\n (10147,'2003-09-05 00:00:00','2003-09-12 00:00:00','2003-09-09 00:00:00','Shipped',NULL,379),\n (10148,'2003-09-11 00:00:00','2003-09-21 00:00:00','2003-09-15 00:00:00','Shipped','They want to reevaluate their terms agreement with Finance.',276),\n (10149,'2003-09-12 00:00:00','2003-09-18 00:00:00','2003-09-17 00:00:00','Shipped',NULL,487),\n (10150,'2003-09-19 00:00:00','2003-09-27 00:00:00','2003-09-21 00:00:00','Shipped','They want to reevaluate their terms agreement with Finance.',148),\n (10151,'2003-09-21 00:00:00','2003-09-30 00:00:00','2003-09-24 00:00:00','Shipped',NULL,311),\n (10152,'2003-09-25 00:00:00','2003-10-03 00:00:00','2003-10-01 00:00:00','Shipped',NULL,333),\n (10153,'2003-09-28 00:00:00','2003-10-05 00:00:00','2003-10-03 00:00:00','Shipped',NULL,141),\n (10154,'2003-10-02 00:00:00','2003-10-12 00:00:00','2003-10-08 00:00:00','Shipped',NULL,219),\n (10155,'2003-10-06 00:00:00','2003-10-13 00:00:00','2003-10-07 00:00:00','Shipped',NULL,186),\n (10156,'2003-10-08 00:00:00','2003-10-17 00:00:00','2003-10-11 00:00:00','Shipped',NULL,141),\n (10157,'2003-10-09 00:00:00','2003-10-15 00:00:00','2003-10-14 00:00:00','Shipped',NULL,473),\n (10158,'2003-10-10 00:00:00','2003-10-18 00:00:00','2003-10-15 00:00:00','Shipped',NULL,121),\n (10159,'2003-10-10 00:00:00','2003-10-19 00:00:00','2003-10-16 00:00:00','Shipped',NULL,321),\n (10160,'2003-10-11 00:00:00','2003-10-17 00:00:00','2003-10-17 00:00:00','Shipped',NULL,347),\n (10161,'2003-10-17 00:00:00','2003-10-25 00:00:00','2003-10-20 00:00:00','Shipped',NULL,227),\n (10162,'2003-10-18 00:00:00','2003-10-26 00:00:00','2003-10-19 00:00:00','Shipped',NULL,321),\n (10163,'2003-10-20 00:00:00','2003-10-27 00:00:00','2003-10-24 00:00:00','Shipped',NULL,424),\n (10164,'2003-10-21 00:00:00','2003-10-30 00:00:00','2003-10-23 00:00:00','Resolved','This order was disputed, but resolved on 11/1/2003; Customer doesnt like the colors and precision of the models.',452),\n (10165,'2003-10-22 00:00:00','2003-10-31 00:00:00','2003-12-26 00:00:00','Shipped','This order was on hold because customerss credit limit had been exceeded. Order will ship when payment is received',148),\n (10166,'2003-10-21 00:00:00','2003-10-30 00:00:00','2003-10-27 00:00:00','Shipped',NULL,462),\n (10167,'2003-10-23 00:00:00','2003-10-30 00:00:00',NULL,'Cancelled','Customer called to cancel. The warehouse was notified in time and the order didnt ship. They have a new VP of Sales and are shifting their sales model. Our VP of Sales should contact them.',448),\n (10168,'2003-10-28 00:00:00','2003-11-03 00:00:00','2003-11-01 00:00:00','Shipped',NULL,161),\n (10169,'2003-11-04 00:00:00','2003-11-14 00:00:00','2003-11-09 00:00:00','Shipped',NULL,276),\n (10170,'2003-11-04 00:00:00','2003-11-12 00:00:00','2003-11-07 00:00:00','Shipped',NULL,452),\n (10171,'2003-11-05 00:00:00','2003-11-13 00:00:00','2003-11-07 00:00:00','Shipped',NULL,233),\n (10172,'2003-11-05 00:00:00','2003-11-14 00:00:00','2003-11-11 00:00:00','Shipped',NULL,175),\n (10173,'2003-11-05 00:00:00','2003-11-15 00:00:00','2003-11-09 00:00:00','Shipped','Cautious optimism. We have happy customers here, if we can keep them well stocked.  I need all the information I can get on the planned shippments of Porches',278),\n (10174,'2003-11-06 00:00:00','2003-11-15 00:00:00','2003-11-10 00:00:00','Shipped',NULL,333),\n (10175,'2003-11-06 00:00:00','2003-11-14 00:00:00','2003-11-09 00:00:00','Shipped',NULL,324),\n (10176,'2003-11-06 00:00:00','2003-11-15 00:00:00','2003-11-12 00:00:00','Shipped',NULL,386),\n (10177,'2003-11-07 00:00:00','2003-11-17 00:00:00','2003-11-12 00:00:00','Shipped',NULL,344),\n (10178,'2003-11-08 00:00:00','2003-11-16 00:00:00','2003-11-10 00:00:00','Shipped','Custom shipping instructions sent to warehouse',242),\n (10179,'2003-11-11 00:00:00','2003-11-17 00:00:00','2003-11-13 00:00:00','Cancelled','Customer cancelled due to urgent budgeting issues. Must be cautious when dealing with them in the future. Since order shipped already we must discuss who would cover the shipping charges.',496),\n (10180,'2003-11-11 00:00:00','2003-11-19 00:00:00','2003-11-14 00:00:00','Shipped',NULL,171),\n (10181,'2003-11-12 00:00:00','2003-11-19 00:00:00','2003-11-15 00:00:00','Shipped',NULL,167),\n (10182,'2003-11-12 00:00:00','2003-11-21 00:00:00','2003-11-18 00:00:00','Shipped',NULL,124),\n (10183,'2003-11-13 00:00:00','2003-11-22 00:00:00','2003-11-15 00:00:00','Shipped','We need to keep in close contact with their Marketing VP. He is the decision maker for all their purchases.',339),\n (10184,'2003-11-14 00:00:00','2003-11-22 00:00:00','2003-11-20 00:00:00','Shipped',NULL,484),\n (10185,'2003-11-14 00:00:00','2003-11-21 00:00:00','2003-11-20 00:00:00','Shipped',NULL,320),\n (10186,'2003-11-14 00:00:00','2003-11-20 00:00:00','2003-11-18 00:00:00','Shipped','They want to reevaluate their terms agreement with the VP of Sales',489),\n (10187,'2003-11-15 00:00:00','2003-11-24 00:00:00','2003-11-16 00:00:00','Shipped',NULL,211),\n (10188,'2003-11-18 00:00:00','2003-11-26 00:00:00','2003-11-24 00:00:00','Shipped',NULL,167),\n (10189,'2003-11-18 00:00:00','2003-11-25 00:00:00','2003-11-24 00:00:00','Shipped','They want to reevaluate their terms agreement with Finance.',205),\n (10190,'2003-11-19 00:00:00','2003-11-29 00:00:00','2003-11-20 00:00:00','Shipped',NULL,141),\n (10191,'2003-11-20 00:00:00','2003-11-30 00:00:00','2003-11-24 00:00:00','Shipped','We must be cautions with this customer. Their VP of Sales resigned. Company may be heading down.',259),\n (10192,'2003-11-20 00:00:00','2003-11-29 00:00:00','2003-11-25 00:00:00','Shipped',NULL,363),\n (10193,'2003-11-21 00:00:00','2003-11-28 00:00:00','2003-11-27 00:00:00','Shipped',NULL,471),\n (10194,'2003-11-25 00:00:00','2003-12-02 00:00:00','2003-11-26 00:00:00','Shipped',NULL,146),\n (10195,'2003-11-25 00:00:00','2003-12-01 00:00:00','2003-11-28 00:00:00','Shipped',NULL,319),\n (10196,'2003-11-26 00:00:00','2003-12-03 00:00:00','2003-12-01 00:00:00','Shipped',NULL,455),\n (10197,'2003-11-26 00:00:00','2003-12-02 00:00:00','2003-12-01 00:00:00','Shipped','Customer inquired about remote controlled models and gold models.',216),\n (10198,'2003-11-27 00:00:00','2003-12-06 00:00:00','2003-12-03 00:00:00','Shipped',NULL,385),\n (10199,'2003-12-01 00:00:00','2003-12-10 00:00:00','2003-12-06 00:00:00','Shipped',NULL,475),\n (10200,'2003-12-01 00:00:00','2003-12-09 00:00:00','2003-12-06 00:00:00','Shipped',NULL,211),\n (10201,'2003-12-01 00:00:00','2003-12-11 00:00:00','2003-12-02 00:00:00','Shipped',NULL,129),\n (10202,'2003-12-02 00:00:00','2003-12-09 00:00:00','2003-12-06 00:00:00','Shipped',NULL,357),\n (10203,'2003-12-02 00:00:00','2003-12-11 00:00:00','2003-12-07 00:00:00','Shipped',NULL,141),\n (10204,'2003-12-02 00:00:00','2003-12-10 00:00:00','2003-12-04 00:00:00','Shipped',NULL,151),\n (10205,'2003-12-03 00:00:00','2003-12-09 00:00:00','2003-12-07 00:00:00','Shipped',' I need all the information I can get on our competitors.',141),\n (10206,'2003-12-05 00:00:00','2003-12-13 00:00:00','2003-12-08 00:00:00','Shipped','Can we renegotiate this one?',202),\n (10207,'2003-12-09 00:00:00','2003-12-17 00:00:00','2003-12-11 00:00:00','Shipped','Check on availability.',495),\n (10208,'2004-01-02 00:00:00','2004-01-11 00:00:00','2004-01-04 00:00:00','Shipped',NULL,146),\n (10209,'2004-01-09 00:00:00','2004-01-15 00:00:00','2004-01-12 00:00:00','Shipped',NULL,347),\n (10210,'2004-01-12 00:00:00','2004-01-22 00:00:00','2004-01-20 00:00:00','Shipped',NULL,177),\n (10211,'2004-01-15 00:00:00','2004-01-25 00:00:00','2004-01-18 00:00:00','Shipped',NULL,406),\n (10212,'2004-01-16 00:00:00','2004-01-24 00:00:00','2004-01-18 00:00:00','Shipped',NULL,141),\n (10213,'2004-01-22 00:00:00','2004-01-28 00:00:00','2004-01-27 00:00:00','Shipped','Difficult to negotiate with customer. We need more marketing materials',489),\n (10214,'2004-01-26 00:00:00','2004-02-04 00:00:00','2004-01-29 00:00:00','Shipped',NULL,458),\n (10215,'2004-01-29 00:00:00','2004-02-08 00:00:00','2004-02-01 00:00:00','Shipped','Customer requested that FedEx Ground is used for this shipping',475),\n (10216,'2004-02-02 00:00:00','2004-02-10 00:00:00','2004-02-04 00:00:00','Shipped',NULL,256),\n (10217,'2004-02-04 00:00:00','2004-02-14 00:00:00','2004-02-06 00:00:00','Shipped',NULL,166),\n (10218,'2004-02-09 00:00:00','2004-02-16 00:00:00','2004-02-11 00:00:00','Shipped','Customer requested that ad materials (such as posters, pamphlets) be included in the shippment',473),\n (10219,'2004-02-10 00:00:00','2004-02-17 00:00:00','2004-02-12 00:00:00','Shipped',NULL,487),\n (10220,'2004-02-12 00:00:00','2004-02-19 00:00:00','2004-02-16 00:00:00','Shipped',NULL,189),\n (10221,'2004-02-18 00:00:00','2004-02-26 00:00:00','2004-02-19 00:00:00','Shipped',NULL,314),\n (10222,'2004-02-19 00:00:00','2004-02-27 00:00:00','2004-02-20 00:00:00','Shipped',NULL,239),\n (10223,'2004-02-20 00:00:00','2004-02-29 00:00:00','2004-02-24 00:00:00','Shipped',NULL,114),\n (10224,'2004-02-21 00:00:00','2004-03-02 00:00:00','2004-02-26 00:00:00','Shipped','Customer has worked with some of our vendors in the past and is aware of their MSRP',171),\n (10225,'2004-02-22 00:00:00','2004-03-01 00:00:00','2004-02-24 00:00:00','Shipped',NULL,298),\n (10226,'2004-02-26 00:00:00','2004-03-06 00:00:00','2004-03-02 00:00:00','Shipped',NULL,239),\n (10227,'2004-03-02 00:00:00','2004-03-12 00:00:00','2004-03-08 00:00:00','Shipped',NULL,146),\n (10228,'2004-03-10 00:00:00','2004-03-18 00:00:00','2004-03-13 00:00:00','Shipped',NULL,173),\n (10229,'2004-03-11 00:00:00','2004-03-20 00:00:00','2004-03-12 00:00:00','Shipped',NULL,124),\n (10230,'2004-03-15 00:00:00','2004-03-24 00:00:00','2004-03-20 00:00:00','Shipped','Customer very concerned about the exact color of the models. There is high risk that he may dispute the order because there is a slight color mismatch',128),\n (10231,'2004-03-19 00:00:00','2004-03-26 00:00:00','2004-03-25 00:00:00','Shipped',NULL,344),\n (10232,'2004-03-20 00:00:00','2004-03-30 00:00:00','2004-03-25 00:00:00','Shipped',NULL,240),\n (10233,'2004-03-29 00:00:00','2004-04-04 00:00:00','2004-04-02 00:00:00','Shipped','Customer requested special shippment. The instructions were passed along to the warehouse',328),\n (10234,'2004-03-30 00:00:00','2004-04-05 00:00:00','2004-04-02 00:00:00','Shipped',NULL,412),\n (10235,'2004-04-02 00:00:00','2004-04-12 00:00:00','2004-04-06 00:00:00','Shipped',NULL,260),\n (10236,'2004-04-03 00:00:00','2004-04-11 00:00:00','2004-04-08 00:00:00','Shipped',NULL,486),\n (10237,'2004-04-05 00:00:00','2004-04-12 00:00:00','2004-04-10 00:00:00','Shipped',NULL,181),\n (10238,'2004-04-09 00:00:00','2004-04-16 00:00:00','2004-04-10 00:00:00','Shipped',NULL,145),\n (10239,'2004-04-12 00:00:00','2004-04-21 00:00:00','2004-04-17 00:00:00','Shipped',NULL,311),\n (10240,'2004-04-13 00:00:00','2004-04-20 00:00:00','2004-04-20 00:00:00','Shipped',NULL,177),\n (10241,'2004-04-13 00:00:00','2004-04-20 00:00:00','2004-04-19 00:00:00','Shipped',NULL,209),\n (10242,'2004-04-20 00:00:00','2004-04-28 00:00:00','2004-04-25 00:00:00','Shipped','Customer is interested in buying more Ferrari models',456),\n (10243,'2004-04-26 00:00:00','2004-05-03 00:00:00','2004-04-28 00:00:00','Shipped',NULL,495),\n (10244,'2004-04-29 00:00:00','2004-05-09 00:00:00','2004-05-04 00:00:00','Shipped',NULL,141),\n (10245,'2004-05-04 00:00:00','2004-05-12 00:00:00','2004-05-09 00:00:00','Shipped',NULL,455),\n (10246,'2004-05-05 00:00:00','2004-05-13 00:00:00','2004-05-06 00:00:00','Shipped',NULL,141),\n (10247,'2004-05-05 00:00:00','2004-05-11 00:00:00','2004-05-08 00:00:00','Shipped',NULL,334),\n (10248,'2004-05-07 00:00:00','2004-05-14 00:00:00',NULL,'Cancelled','Order was mistakenly placed. The warehouse noticed the lack of documentation.',131),\n (10249,'2004-05-08 00:00:00','2004-05-17 00:00:00','2004-05-11 00:00:00','Shipped','Can we deliver the new Ford Mustang models by end-of-quarter?',173),\n (10250,'2004-05-11 00:00:00','2004-05-19 00:00:00','2004-05-15 00:00:00','Shipped',NULL,450),\n (10251,'2004-05-18 00:00:00','2004-05-24 00:00:00','2004-05-24 00:00:00','Shipped',NULL,328),\n (10252,'2004-05-26 00:00:00','2004-06-04 00:00:00','2004-05-29 00:00:00','Shipped',NULL,406),\n (10253,'2004-06-01 00:00:00','2004-06-09 00:00:00','2004-06-02 00:00:00','Cancelled','Customer disputed the order and we agreed to cancel it. We must be more cautions with this customer going forward, since they are very hard to please. We must cover the shipping fees.',201),\n (10254,'2004-06-03 00:00:00','2004-06-13 00:00:00','2004-06-04 00:00:00','Shipped','Customer requested that DHL is used for this shipping',323),\n (10255,'2004-06-04 00:00:00','2004-06-12 00:00:00','2004-06-09 00:00:00','Shipped',NULL,209),\n (10256,'2004-06-08 00:00:00','2004-06-16 00:00:00','2004-06-10 00:00:00','Shipped',NULL,145),\n (10257,'2004-06-14 00:00:00','2004-06-24 00:00:00','2004-06-15 00:00:00','Shipped',NULL,450),\n (10258,'2004-06-15 00:00:00','2004-06-25 00:00:00','2004-06-23 00:00:00','Shipped',NULL,398),\n (10259,'2004-06-15 00:00:00','2004-06-22 00:00:00','2004-06-17 00:00:00','Shipped',NULL,166),\n (10260,'2004-06-16 00:00:00','2004-06-22 00:00:00',NULL,'Cancelled','Customer heard complaints from their customers and called to cancel this order. Will notify the Sales Manager.',357),\n (10261,'2004-06-17 00:00:00','2004-06-25 00:00:00','2004-06-22 00:00:00','Shipped',NULL,233),\n (10262,'2004-06-24 00:00:00','2004-07-01 00:00:00',NULL,'Cancelled','This customer found a better offer from one of our competitors. Will call back to renegotiate.',141),\n (10263,'2004-06-28 00:00:00','2004-07-04 00:00:00','2004-07-02 00:00:00','Shipped',NULL,175),\n (10264,'2004-06-30 00:00:00','2004-07-06 00:00:00','2004-07-01 00:00:00','Shipped','Customer will send a truck to our local warehouse on 7/1/2004',362),\n (10265,'2004-07-02 00:00:00','2004-07-09 00:00:00','2004-07-07 00:00:00','Shipped',NULL,471),\n (10266,'2004-07-06 00:00:00','2004-07-14 00:00:00','2004-07-10 00:00:00','Shipped',NULL,386),\n (10267,'2004-07-07 00:00:00','2004-07-17 00:00:00','2004-07-09 00:00:00','Shipped',NULL,151),\n (10268,'2004-07-12 00:00:00','2004-07-18 00:00:00','2004-07-14 00:00:00','Shipped',NULL,412),\n (10269,'2004-07-16 00:00:00','2004-07-22 00:00:00','2004-07-18 00:00:00','Shipped',NULL,382),\n (10270,'2004-07-19 00:00:00','2004-07-27 00:00:00','2004-07-24 00:00:00','Shipped','Can we renegotiate this one?',282),\n (10271,'2004-07-20 00:00:00','2004-07-29 00:00:00','2004-07-23 00:00:00','Shipped',NULL,124),\n (10272,'2004-07-20 00:00:00','2004-07-26 00:00:00','2004-07-22 00:00:00','Shipped',NULL,157),\n (10273,'2004-07-21 00:00:00','2004-07-28 00:00:00','2004-07-22 00:00:00','Shipped',NULL,314),\n (10274,'2004-07-21 00:00:00','2004-07-29 00:00:00','2004-07-22 00:00:00','Shipped',NULL,379),\n (10275,'2004-07-23 00:00:00','2004-08-02 00:00:00','2004-07-29 00:00:00','Shipped',NULL,119),\n (10276,'2004-08-02 00:00:00','2004-08-11 00:00:00','2004-08-08 00:00:00','Shipped',NULL,204),\n (10277,'2004-08-04 00:00:00','2004-08-12 00:00:00','2004-08-05 00:00:00','Shipped',NULL,148),\n (10278,'2004-08-06 00:00:00','2004-08-16 00:00:00','2004-08-09 00:00:00','Shipped',NULL,112),\n (10279,'2004-08-09 00:00:00','2004-08-19 00:00:00','2004-08-15 00:00:00','Shipped','Cautious optimism. We have happy customers here, if we can keep them well stocked.  I need all the information I can get on the planned shippments of Porches',141),\n (10280,'2004-08-17 00:00:00','2004-08-27 00:00:00','2004-08-19 00:00:00','Shipped',NULL,249),\n (10281,'2004-08-19 00:00:00','2004-08-28 00:00:00','2004-08-23 00:00:00','Shipped',NULL,157),\n (10282,'2004-08-20 00:00:00','2004-08-26 00:00:00','2004-08-22 00:00:00','Shipped',NULL,124),\n (10283,'2004-08-20 00:00:00','2004-08-30 00:00:00','2004-08-23 00:00:00','Shipped',NULL,260),\n (10284,'2004-08-21 00:00:00','2004-08-29 00:00:00','2004-08-26 00:00:00','Shipped','Custom shipping instructions sent to warehouse',299),\n (10285,'2004-08-27 00:00:00','2004-09-04 00:00:00','2004-08-31 00:00:00','Shipped',NULL,286),\n (10286,'2004-08-28 00:00:00','2004-09-06 00:00:00','2004-09-01 00:00:00','Shipped',NULL,172),\n (10287,'2004-08-30 00:00:00','2004-09-06 00:00:00','2004-09-01 00:00:00','Shipped',NULL,298),\n (10288,'2004-09-01 00:00:00','2004-09-11 00:00:00','2004-09-05 00:00:00','Shipped',NULL,166),\n (10289,'2004-09-03 00:00:00','2004-09-13 00:00:00','2004-09-04 00:00:00','Shipped','We need to keep in close contact with their Marketing VP. He is the decision maker for all their purchases.',167),\n (10290,'2004-09-07 00:00:00','2004-09-15 00:00:00','2004-09-13 00:00:00','Shipped',NULL,198),\n (10291,'2004-09-08 00:00:00','2004-09-17 00:00:00','2004-09-14 00:00:00','Shipped',NULL,448),\n (10292,'2004-09-08 00:00:00','2004-09-18 00:00:00','2004-09-11 00:00:00','Shipped','They want to reevaluate their terms agreement with Finance.',131),\n (10293,'2004-09-09 00:00:00','2004-09-18 00:00:00','2004-09-14 00:00:00','Shipped',NULL,249),\n (10294,'2004-09-10 00:00:00','2004-09-17 00:00:00','2004-09-14 00:00:00','Shipped',NULL,204),\n (10295,'2004-09-10 00:00:00','2004-09-17 00:00:00','2004-09-14 00:00:00','Shipped','They want to reevaluate their terms agreement with Finance.',362),\n (10296,'2004-09-15 00:00:00','2004-09-22 00:00:00','2004-09-16 00:00:00','Shipped',NULL,415),\n (10297,'2004-09-16 00:00:00','2004-09-22 00:00:00','2004-09-21 00:00:00','Shipped','We must be cautions with this customer. Their VP of Sales resigned. Company may be heading down.',189),\n (10298,'2004-09-27 00:00:00','2004-10-05 00:00:00','2004-10-01 00:00:00','Shipped',NULL,103),\n (10299,'2004-09-30 00:00:00','2004-10-10 00:00:00','2004-10-01 00:00:00','Shipped',NULL,186),\n (10300,'2003-10-04 00:00:00','2003-10-13 00:00:00','2003-10-09 00:00:00','Shipped',NULL,128),\n (10301,'2003-10-05 00:00:00','2003-10-15 00:00:00','2003-10-08 00:00:00','Shipped',NULL,299),\n (10302,'2003-10-06 00:00:00','2003-10-16 00:00:00','2003-10-07 00:00:00','Shipped',NULL,201),\n (10303,'2004-10-06 00:00:00','2004-10-14 00:00:00','2004-10-09 00:00:00','Shipped','Customer inquired about remote controlled models and gold models.',484),\n (10304,'2004-10-11 00:00:00','2004-10-20 00:00:00','2004-10-17 00:00:00','Shipped',NULL,256),\n (10305,'2004-10-13 00:00:00','2004-10-22 00:00:00','2004-10-15 00:00:00','Shipped','Check on availability.',286),\n (10306,'2004-10-14 00:00:00','2004-10-21 00:00:00','2004-10-17 00:00:00','Shipped',NULL,187),\n (10307,'2004-10-14 00:00:00','2004-10-23 00:00:00','2004-10-20 00:00:00','Shipped',NULL,339),\n (10308,'2004-10-15 00:00:00','2004-10-24 00:00:00','2004-10-20 00:00:00','Shipped','Customer requested that FedEx Ground is used for this shipping',319),\n (10309,'2004-10-15 00:00:00','2004-10-24 00:00:00','2004-10-18 00:00:00','Shipped',NULL,121),\n (10310,'2004-10-16 00:00:00','2004-10-24 00:00:00','2004-10-18 00:00:00','Shipped',NULL,259),\n (10311,'2004-10-16 00:00:00','2004-10-23 00:00:00','2004-10-20 00:00:00','Shipped','Difficult to negotiate with customer. We need more marketing materials',141),\n (10312,'2004-10-21 00:00:00','2004-10-27 00:00:00','2004-10-23 00:00:00','Shipped',NULL,124),\n (10313,'2004-10-22 00:00:00','2004-10-28 00:00:00','2004-10-25 00:00:00','Shipped','Customer requested that FedEx Ground is used for this shipping',202),\n (10314,'2004-10-22 00:00:00','2004-11-01 00:00:00','2004-10-23 00:00:00','Shipped',NULL,227),\n (10315,'2004-10-29 00:00:00','2004-11-08 00:00:00','2004-10-30 00:00:00','Shipped',NULL,119),\n (10316,'2004-11-01 00:00:00','2004-11-09 00:00:00','2004-11-07 00:00:00','Shipped','Customer requested that ad materials (such as posters, pamphlets) be included in the shippment',240),\n (10317,'2004-11-02 00:00:00','2004-11-12 00:00:00','2004-11-08 00:00:00','Shipped',NULL,161),\n (10318,'2004-11-02 00:00:00','2004-11-09 00:00:00','2004-11-07 00:00:00','Shipped',NULL,157),\n (10319,'2004-11-03 00:00:00','2004-11-11 00:00:00','2004-11-06 00:00:00','Shipped','Customer requested that DHL is used for this shipping',456),\n (10320,'2004-11-03 00:00:00','2004-11-13 00:00:00','2004-11-07 00:00:00','Shipped',NULL,144),\n (10321,'2004-11-04 00:00:00','2004-11-12 00:00:00','2004-11-07 00:00:00','Shipped',NULL,462),\n (10322,'2004-11-04 00:00:00','2004-11-12 00:00:00','2004-11-10 00:00:00','Shipped','Customer has worked with some of our vendors in the past and is aware of their MSRP',363),\n (10323,'2004-11-05 00:00:00','2004-11-12 00:00:00','2004-11-09 00:00:00','Shipped',NULL,128),\n (10324,'2004-11-05 00:00:00','2004-11-11 00:00:00','2004-11-08 00:00:00','Shipped',NULL,181),\n (10325,'2004-11-05 00:00:00','2004-11-13 00:00:00','2004-11-08 00:00:00','Shipped',NULL,121),\n (10326,'2004-11-09 00:00:00','2004-11-16 00:00:00','2004-11-10 00:00:00','Shipped',NULL,144),\n (10327,'2004-11-10 00:00:00','2004-11-19 00:00:00','2004-11-13 00:00:00','Resolved','Order was disputed and resolved on 12/1/04. The Sales Manager was involved. Customer claims the scales of the models dont match what was discussed.',145),\n (10328,'2004-11-12 00:00:00','2004-11-21 00:00:00','2004-11-18 00:00:00','Shipped','Customer very concerned about the exact color of the models. There is high risk that he may dispute the order because there is a slight color mismatch',278),\n (10329,'2004-11-15 00:00:00','2004-11-24 00:00:00','2004-11-16 00:00:00','Shipped',NULL,131),\n (10330,'2004-11-16 00:00:00','2004-11-25 00:00:00','2004-11-21 00:00:00','Shipped',NULL,385),\n (10331,'2004-11-17 00:00:00','2004-11-23 00:00:00','2004-11-23 00:00:00','Shipped','Customer requested special shippment. The instructions were passed along to the warehouse',486),\n (10332,'2004-11-17 00:00:00','2004-11-25 00:00:00','2004-11-18 00:00:00','Shipped',NULL,187),\n (10333,'2004-11-18 00:00:00','2004-11-27 00:00:00','2004-11-20 00:00:00','Shipped',NULL,129),\n (10334,'2004-11-19 00:00:00','2004-11-28 00:00:00',NULL,'On Hold','The outstaniding balance for this customer exceeds their credit limit. Order will be shipped when a payment is received.',144),\n (10335,'2004-11-19 00:00:00','2004-11-29 00:00:00','2004-11-23 00:00:00','Shipped',NULL,124),\n (10336,'2004-11-20 00:00:00','2004-11-26 00:00:00','2004-11-24 00:00:00','Shipped','Customer requested that DHL is used for this shipping',172),\n (10337,'2004-11-21 00:00:00','2004-11-30 00:00:00','2004-11-26 00:00:00','Shipped',NULL,424),\n (10338,'2004-11-22 00:00:00','2004-12-02 00:00:00','2004-11-27 00:00:00','Shipped',NULL,381),\n (10339,'2004-11-23 00:00:00','2004-11-30 00:00:00','2004-11-30 00:00:00','Shipped',NULL,398),\n (10340,'2004-11-24 00:00:00','2004-12-01 00:00:00','2004-11-25 00:00:00','Shipped','Customer is interested in buying more Ferrari models',216),\n (10341,'2004-11-24 00:00:00','2004-12-01 00:00:00','2004-11-29 00:00:00','Shipped',NULL,382),\n (10342,'2004-11-24 00:00:00','2004-12-01 00:00:00','2004-11-29 00:00:00','Shipped',NULL,114),\n (10343,'2004-11-24 00:00:00','2004-12-01 00:00:00','2004-11-26 00:00:00','Shipped',NULL,353),\n (10344,'2004-11-25 00:00:00','2004-12-02 00:00:00','2004-11-29 00:00:00','Shipped',NULL,350),\n (10345,'2004-11-25 00:00:00','2004-12-01 00:00:00','2004-11-26 00:00:00','Shipped',NULL,103),\n (10346,'2004-11-29 00:00:00','2004-12-05 00:00:00','2004-11-30 00:00:00','Shipped',NULL,112),\n (10347,'2004-11-29 00:00:00','2004-12-07 00:00:00','2004-11-30 00:00:00','Shipped','Can we deliver the new Ford Mustang models by end-of-quarter?',114),\n (10348,'2004-11-01 00:00:00','2004-11-08 00:00:00','2004-11-05 00:00:00','Shipped',NULL,458),\n (10349,'2004-12-01 00:00:00','2004-12-07 00:00:00','2004-12-03 00:00:00','Shipped',NULL,151),\n (10350,'2004-12-02 00:00:00','2004-12-08 00:00:00','2004-12-05 00:00:00','Shipped',NULL,141),\n (10351,'2004-12-03 00:00:00','2004-12-11 00:00:00','2004-12-07 00:00:00','Shipped',NULL,324),\n (10352,'2004-12-03 00:00:00','2004-12-12 00:00:00','2004-12-09 00:00:00','Shipped',NULL,198),\n (10353,'2004-12-04 00:00:00','2004-12-11 00:00:00','2004-12-05 00:00:00','Shipped',NULL,447),\n (10354,'2004-12-04 00:00:00','2004-12-10 00:00:00','2004-12-05 00:00:00','Shipped',NULL,323),\n (10355,'2004-12-07 00:00:00','2004-12-14 00:00:00','2004-12-13 00:00:00','Shipped',NULL,141),\n (10356,'2004-12-09 00:00:00','2004-12-15 00:00:00','2004-12-12 00:00:00','Shipped',NULL,250),\n (10357,'2004-12-10 00:00:00','2004-12-16 00:00:00','2004-12-14 00:00:00','Shipped',NULL,124),\n (10358,'2004-12-10 00:00:00','2004-12-16 00:00:00','2004-12-16 00:00:00','Shipped','Customer requested that DHL is used for this shipping',141),\n (10359,'2004-12-15 00:00:00','2004-12-23 00:00:00','2004-12-18 00:00:00','Shipped',NULL,353),\n (10360,'2004-12-16 00:00:00','2004-12-22 00:00:00','2004-12-18 00:00:00','Shipped',NULL,496),\n (10361,'2004-12-17 00:00:00','2004-12-24 00:00:00','2004-12-20 00:00:00','Shipped',NULL,282),\n (10362,'2005-01-05 00:00:00','2005-01-16 00:00:00','2005-01-10 00:00:00','Shipped',NULL,161),\n (10363,'2005-01-06 00:00:00','2005-01-12 00:00:00','2005-01-10 00:00:00','Shipped',NULL,334),\n (10364,'2005-01-06 00:00:00','2005-01-17 00:00:00','2005-01-09 00:00:00','Shipped',NULL,350),\n (10365,'2005-01-07 00:00:00','2005-01-18 00:00:00','2005-01-11 00:00:00','Shipped',NULL,320),\n (10366,'2005-01-10 00:00:00','2005-01-19 00:00:00','2005-01-12 00:00:00','Shipped',NULL,381),\n (10367,'2005-01-12 00:00:00','2005-01-21 00:00:00','2005-01-16 00:00:00','Resolved','This order was disputed and resolved on 2/1/2005. Customer claimed that container with shipment was damaged. FedExs investigation proved this wrong.',205),\n (10368,'2005-01-19 00:00:00','2005-01-27 00:00:00','2005-01-24 00:00:00','Shipped','Can we renegotiate this one?',124),\n (10369,'2005-01-20 00:00:00','2005-01-28 00:00:00','2005-01-24 00:00:00','Shipped',NULL,379),\n (10370,'2005-01-20 00:00:00','2005-02-01 00:00:00','2005-01-25 00:00:00','Shipped',NULL,276),\n (10371,'2005-01-23 00:00:00','2005-02-03 00:00:00','2005-01-25 00:00:00','Shipped',NULL,124),\n (10372,'2005-01-26 00:00:00','2005-02-05 00:00:00','2005-01-28 00:00:00','Shipped',NULL,398),\n (10373,'2005-01-31 00:00:00','2005-02-08 00:00:00','2005-02-06 00:00:00','Shipped',NULL,311),\n (10374,'2005-02-02 00:00:00','2005-02-09 00:00:00','2005-02-03 00:00:00','Shipped',NULL,333),\n (10375,'2005-02-03 00:00:00','2005-02-10 00:00:00','2005-02-06 00:00:00','Shipped',NULL,119),\n (10376,'2005-02-08 00:00:00','2005-02-18 00:00:00','2005-02-13 00:00:00','Shipped',NULL,219),\n (10377,'2005-02-09 00:00:00','2005-02-21 00:00:00','2005-02-12 00:00:00','Shipped','Cautious optimism. We have happy customers here, if we can keep them well stocked.  I need all the information I can get on the planned shippments of Porches',186),\n (10378,'2005-02-10 00:00:00','2005-02-18 00:00:00','2005-02-11 00:00:00','Shipped',NULL,141),\n (10379,'2005-02-10 00:00:00','2005-02-18 00:00:00','2005-02-11 00:00:00','Shipped',NULL,141),\n (10380,'2005-02-16 00:00:00','2005-02-24 00:00:00','2005-02-18 00:00:00','Shipped',NULL,141),\n (10381,'2005-02-17 00:00:00','2005-02-25 00:00:00','2005-02-18 00:00:00','Shipped',NULL,321),\n (10382,'2005-02-17 00:00:00','2005-02-23 00:00:00','2005-02-18 00:00:00','Shipped','Custom shipping instructions sent to warehouse',124),\n (10383,'2005-02-22 00:00:00','2005-03-02 00:00:00','2005-02-25 00:00:00','Shipped',NULL,141),\n (10384,'2005-02-23 00:00:00','2005-03-06 00:00:00','2005-02-27 00:00:00','Shipped',NULL,321),\n (10385,'2005-02-28 00:00:00','2005-03-09 00:00:00','2005-03-01 00:00:00','Shipped',NULL,124),\n (10386,'2005-03-01 00:00:00','2005-03-09 00:00:00','2005-03-06 00:00:00','Resolved','Disputed then Resolved on 3/15/2005. Customer doesnt like the craftsmaship of the models.',141),\n (10387,'2005-03-02 00:00:00','2005-03-09 00:00:00','2005-03-06 00:00:00','Shipped','We need to keep in close contact with their Marketing VP. He is the decision maker for all their purchases.',148),\n (10388,'2005-03-03 00:00:00','2005-03-11 00:00:00','2005-03-09 00:00:00','Shipped',NULL,462),\n (10389,'2005-03-03 00:00:00','2005-03-09 00:00:00','2005-03-08 00:00:00','Shipped',NULL,448),\n (10390,'2005-03-04 00:00:00','2005-03-11 00:00:00','2005-03-07 00:00:00','Shipped','They want to reevaluate their terms agreement with Finance.',124),\n (10391,'2005-03-09 00:00:00','2005-03-20 00:00:00','2005-03-15 00:00:00','Shipped',NULL,276),\n (10392,'2005-03-10 00:00:00','2005-03-18 00:00:00','2005-03-12 00:00:00','Shipped',NULL,452),\n (10393,'2005-03-11 00:00:00','2005-03-22 00:00:00','2005-03-14 00:00:00','Shipped','They want to reevaluate their terms agreement with Finance.',323),\n (10394,'2005-03-15 00:00:00','2005-03-25 00:00:00','2005-03-19 00:00:00','Shipped',NULL,141),\n (10395,'2005-03-17 00:00:00','2005-03-24 00:00:00','2005-03-23 00:00:00','Shipped','We must be cautions with this customer. Their VP of Sales resigned. Company may be heading down.',250),\n (10396,'2005-03-23 00:00:00','2005-04-02 00:00:00','2005-03-28 00:00:00','Shipped',NULL,124),\n (10397,'2005-03-28 00:00:00','2005-04-09 00:00:00','2005-04-01 00:00:00','Shipped',NULL,242),\n (10398,'2005-03-30 00:00:00','2005-04-09 00:00:00','2005-03-31 00:00:00','Shipped',NULL,353),\n (10399,'2005-04-01 00:00:00','2005-04-12 00:00:00','2005-04-03 00:00:00','Shipped',NULL,496),\n (10400,'2005-04-01 00:00:00','2005-04-11 00:00:00','2005-04-04 00:00:00','Shipped','Customer requested that DHL is used for this shipping',450),\n (10401,'2005-04-03 00:00:00','2005-04-14 00:00:00',NULL,'On Hold','Customer credit limit exceeded. Will ship when a payment is received.',328),\n (10402,'2005-04-07 00:00:00','2005-04-14 00:00:00','2005-04-12 00:00:00','Shipped',NULL,406),\n (10403,'2005-04-08 00:00:00','2005-04-18 00:00:00','2005-04-11 00:00:00','Shipped',NULL,201),\n (10404,'2005-04-08 00:00:00','2005-04-14 00:00:00','2005-04-11 00:00:00','Shipped',NULL,323),\n (10405,'2005-04-14 00:00:00','2005-04-24 00:00:00','2005-04-20 00:00:00','Shipped',NULL,209),\n (10406,'2005-04-15 00:00:00','2005-04-25 00:00:00','2005-04-21 00:00:00','Disputed','Customer claims container with shipment was damaged during shipping and some items were missing. I am talking to FedEx about this.',145),\n (10407,'2005-04-22 00:00:00','2005-05-04 00:00:00',NULL,'On Hold','Customer credit limit exceeded. Will ship when a payment is received.',450),\n (10408,'2005-04-22 00:00:00','2005-04-29 00:00:00','2005-04-27 00:00:00','Shipped',NULL,398),\n (10409,'2005-04-23 00:00:00','2005-05-05 00:00:00','2005-04-24 00:00:00','Shipped',NULL,166),\n (10410,'2005-04-29 00:00:00','2005-05-10 00:00:00','2005-04-30 00:00:00','Shipped',NULL,357),\n (10411,'2005-05-01 00:00:00','2005-05-08 00:00:00','2005-05-06 00:00:00','Shipped',NULL,233),\n (10412,'2005-05-03 00:00:00','2005-05-13 00:00:00','2005-05-05 00:00:00','Shipped',NULL,141),\n (10413,'2005-05-05 00:00:00','2005-05-14 00:00:00','2005-05-09 00:00:00','Shipped','Customer requested that DHL is used for this shipping',175),\n (10414,'2005-05-06 00:00:00','2005-05-13 00:00:00',NULL,'On Hold','Customer credit limit exceeded. Will ship when a payment is received.',362),\n (10415,'2005-05-09 00:00:00','2005-05-20 00:00:00','2005-05-12 00:00:00','Disputed','Customer claims the scales of the models dont match what was discussed. I keep all the paperwork though to prove otherwise',471),\n (10416,'2005-05-10 00:00:00','2005-05-16 00:00:00','2005-05-14 00:00:00','Shipped',NULL,386),\n (10417,'2005-05-13 00:00:00','2005-05-19 00:00:00','2005-05-19 00:00:00','Disputed','Customer doesnt like the colors and precision of the models.',141),\n (10418,'2005-05-16 00:00:00','2005-05-24 00:00:00','2005-05-20 00:00:00','Shipped',NULL,412),\n (10419,'2005-05-17 00:00:00','2005-05-28 00:00:00','2005-05-19 00:00:00','Shipped',NULL,382),\n (10420,'2005-05-29 00:00:00','2005-06-07 00:00:00',NULL,'In Process',NULL,282),\n (10421,'2005-05-29 00:00:00','2005-06-06 00:00:00',NULL,'In Process','Custom shipping instructions were sent to warehouse',124),\n (10422,'2005-05-30 00:00:00','2005-06-11 00:00:00',NULL,'In Process',NULL,157),\n (10423,'2005-05-30 00:00:00','2005-06-05 00:00:00',NULL,'In Process',NULL,314),\n (10424,'2005-05-31 00:00:00','2005-06-08 00:00:00',NULL,'In Process',NULL,141),\n (10425,'2005-05-31 00:00:00','2005-06-07 00:00:00',NULL,'In Process',NULL,119);\n\nDROP TABLE IF EXISTS `classicmodels`.`OrderDetail`;\nCREATE TABLE  `classicmodels`.`OrderDetail` (\n  `orderNumber` int(11) NOT NULL,\n  `productCode` varchar(50) NOT NULL,\n  `quantityOrdered` int(11) NOT NULL,\n  `priceEach` double NOT NULL,\n  `orderLineNumber` smallint(6) NOT NULL,\n  PRIMARY KEY (`orderNumber`,`productCode`)\n) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;\nINSERT INTO `classicmodels`.`OrderDetail` (`orderNumber`,`productCode`,`quantityOrdered`,`priceEach`,`orderLineNumber`) VALUES \n (10100,'S18_1749',30,171.7,3),\n (10100,'S18_2248',50,67.8,2),\n (10100,'S18_4409',22,86.51,4),\n (10100,'S24_3969',49,34.47,1),\n (10101,'S18_2325',25,151.28,4),\n (10101,'S18_2795',26,145.13,1),\n (10101,'S24_1937',45,31.2,3),\n (10101,'S24_2022',46,53.76,2),\n (10102,'S18_1342',39,123.29,2),\n (10102,'S18_1367',41,50.14,1),\n (10103,'S10_1949',26,207.87,11),\n (10103,'S10_4962',42,128.53,4),\n (10103,'S12_1666',27,125.74,8),\n (10103,'S18_1097',35,112,10),\n (10103,'S18_2432',22,54.09,2),\n (10103,'S18_2949',27,83.07,12),\n (10103,'S18_2957',35,57.46,14),\n (10103,'S18_3136',25,101.58,13),\n (10103,'S18_3320',46,104.17,16),\n (10103,'S18_4600',36,117.45,5),\n (10103,'S18_4668',41,47.29,9),\n (10103,'S24_2300',36,102.23,1),\n (10103,'S24_4258',25,114.92,15),\n (10103,'S32_1268',31,104.01,3),\n (10103,'S32_3522',45,75.63,7),\n (10103,'S700_2824',42,106.21,6),\n (10104,'S12_3148',34,175.25,1),\n (10104,'S12_4473',41,112.58,9),\n (10104,'S18_2238',24,144.08,8),\n (10104,'S18_2319',29,130.09,12),\n (10104,'S18_3232',23,198.13,13),\n (10104,'S18_4027',38,140.75,3),\n (10104,'S24_1444',35,55.49,6),\n (10104,'S24_2840',44,39.6,10),\n (10104,'S24_4048',26,112.37,5),\n (10104,'S32_2509',35,47.62,11),\n (10104,'S32_3207',49,65.87,4),\n (10104,'S50_1392',33,112.28,7),\n (10104,'S50_1514',32,53.31,2),\n (10105,'S10_4757',50,144.16,2),\n (10105,'S12_1108',41,211.96,15),\n (10105,'S12_3891',29,157.45,14),\n (10105,'S18_3140',22,139.32,11),\n (10105,'S18_3259',38,113.95,13),\n (10105,'S18_4522',41,82.5,10),\n (10105,'S24_2011',43,147.47,9),\n (10105,'S24_3151',44,72.58,4),\n (10105,'S24_3816',50,79.67,1),\n (10105,'S700_1138',41,70.67,5),\n (10105,'S700_1938',29,70.15,12),\n (10105,'S700_2610',31,65.77,3),\n (10105,'S700_3505',39,81.14,6),\n (10105,'S700_3962',22,116.19,7),\n (10105,'S72_3212',25,56.78,8),\n (10106,'S18_1662',36,146.65,12),\n (10106,'S18_2581',34,90.39,2),\n (10106,'S18_3029',41,83.44,18),\n (10106,'S18_3856',41,116.46,17),\n (10106,'S24_1785',28,88.63,4),\n (10106,'S24_2841',49,74.68,13),\n (10106,'S24_3420',31,52.6,14),\n (10106,'S24_3949',50,64.83,11),\n (10106,'S24_4278',26,63.76,3),\n (10106,'S32_4289',33,72.92,5),\n (10106,'S50_1341',39,40.15,6),\n (10106,'S700_1691',31,106.87,7),\n (10106,'S700_2047',30,105.91,16),\n (10106,'S700_2466',34,110.69,9),\n (10106,'S700_2834',32,124.58,1),\n (10106,'S700_3167',44,74.4,8),\n (10106,'S700_4002',48,61.44,10),\n (10106,'S72_1253',48,52.64,15),\n (10107,'S10_1678',30,95.7,2),\n (10107,'S10_2016',39,99.91,5),\n (10107,'S10_4698',27,224.65,4),\n (10107,'S12_2823',21,144.6,1),\n (10107,'S18_2625',29,70.87,6),\n (10107,'S24_1578',25,113.83,3),\n (10107,'S24_2000',38,83.03,7),\n (10107,'S32_1374',20,92.9,8),\n (10108,'S12_1099',33,159.55,6),\n (10108,'S12_3380',45,136.23,4),\n (10108,'S12_3990',39,89.38,7),\n (10108,'S12_4675',36,103.64,3),\n (10108,'S18_1889',38,82.39,2),\n (10108,'S18_3278',26,68.35,9),\n (10108,'S18_3482',29,139.64,8),\n (10108,'S18_3782',43,67.77,12),\n (10108,'S18_4721',44,126.48,11),\n (10108,'S24_2360',35,58.87,15),\n (10108,'S24_3371',30,63.07,5),\n (10108,'S24_3856',40,136.22,1),\n (10108,'S24_4620',31,68.71,10),\n (10108,'S32_2206',27,43.45,13),\n (10108,'S32_4485',31,118.38,16),\n (10108,'S50_4713',34,82.99,14),\n (10109,'S18_1129',26,168.43,4),\n (10109,'S18_1984',38,116.65,3),\n (10109,'S18_2870',26,121.44,1),\n (10109,'S18_3232',46,179.5,5),\n (10109,'S18_3685',47,132.8,2),\n (10109,'S24_2972',29,32.1,6),\n (10110,'S18_1589',37,146.84,16),\n (10110,'S18_1749',42,144.5,7),\n (10110,'S18_2248',32,50.25,6),\n (10110,'S18_2325',33,116.96,4),\n (10110,'S18_2795',31,163.69,1),\n (10110,'S18_4409',28,89.27,8),\n (10110,'S18_4933',42,61.29,9),\n (10110,'S24_1046',36,85.25,13),\n (10110,'S24_1628',29,59.37,15),\n (10110,'S24_1937',20,35.51,3),\n (10110,'S24_2022',39,44.35,2),\n (10110,'S24_2766',43,78.15,11),\n (10110,'S24_2887',46,129.18,10),\n (10110,'S24_3191',27,73.62,12),\n (10110,'S24_3432',37,100.66,14),\n (10110,'S24_3969',48,34.47,5),\n (10111,'S18_1342',33,99.66,6),\n (10111,'S18_1367',48,49.06,5),\n (10111,'S18_2957',28,64.33,2),\n (10111,'S18_3136',43,112.05,1),\n (10111,'S18_3320',39,107.15,4),\n (10111,'S24_4258',26,86.68,3),\n (10112,'S10_1949',29,248.59,1),\n (10112,'S18_2949',23,110.43,2),\n (10113,'S12_1666',21,162.64,2),\n (10113,'S18_1097',49,100.34,4),\n (10113,'S18_4668',50,49.81,3),\n (10113,'S32_3522',23,68.52,1),\n (10114,'S10_4962',31,138.88,8),\n (10114,'S18_2319',39,106.78,3),\n (10114,'S18_2432',45,68.67,6),\n (10114,'S18_3232',48,171.03,4),\n (10114,'S18_4600',41,117.45,9),\n (10114,'S24_2300',21,139.29,5),\n (10114,'S24_2840',24,30.06,1),\n (10114,'S32_1268',32,114.61,7),\n (10114,'S32_2509',28,55.73,2),\n (10114,'S700_2824',42,113.29,10),\n (10115,'S12_4473',46,124.43,5),\n (10115,'S18_2238',46,160.46,4),\n (10115,'S24_1444',47,69.36,2),\n (10115,'S24_4048',44,126.56,1),\n (10115,'S50_1392',27,105.33,3),\n (10116,'S32_3207',27,63.38,1),\n (10117,'S12_1108',33,182.86,9),\n (10117,'S12_3148',43,137.48,10),\n (10117,'S12_3891',39,152.26,8),\n (10117,'S18_3140',26,136.59,5),\n (10117,'S18_3259',21,95.8,7),\n (10117,'S18_4027',22,126.39,12),\n (10117,'S18_4522',23,97.42,4),\n (10117,'S24_2011',41,126.58,3),\n (10117,'S50_1514',21,49.21,11),\n (10117,'S700_1938',38,79.68,6),\n (10117,'S700_3962',45,83.42,1),\n (10117,'S72_3212',50,43.68,2),\n (10118,'S700_3505',36,117.2,1),\n (10119,'S10_4757',46,108.8,11),\n (10119,'S18_1662',43,160.84,3),\n (10119,'S18_3029',21,89.46,9),\n (10119,'S18_3856',27,99.52,8),\n (10119,'S24_2841',41,59.6,4),\n (10119,'S24_3151',35,87.62,13),\n (10119,'S24_3420',20,72.98,5),\n (10119,'S24_3816',35,90.57,10),\n (10119,'S24_3949',28,70.29,2),\n (10119,'S700_1138',25,76.67,14),\n (10119,'S700_2047',29,94.14,7),\n (10119,'S700_2610',38,65.77,12),\n (10119,'S700_4002',26,59.22,1),\n (10119,'S72_1253',28,48.17,6),\n (10120,'S10_2016',29,96.34,3),\n (10120,'S10_4698',46,201.41,2),\n (10120,'S18_2581',29,71.81,8),\n (10120,'S18_2625',46,58.15,4),\n (10120,'S24_1578',35,98.05,1),\n (10120,'S24_1785',39,119.27,10),\n (10120,'S24_2000',34,83.79,5),\n (10120,'S24_4278',29,85.49,9),\n (10120,'S32_1374',22,111.88,6),\n (10120,'S32_4289',29,72.23,11),\n (10120,'S50_1341',49,50.62,12),\n (10120,'S700_1691',47,82.21,13),\n (10120,'S700_2466',24,107.7,15),\n (10120,'S700_2834',24,142.38,7),\n (10120,'S700_3167',43,76,14),\n (10121,'S10_1678',34,81.35,5),\n (10121,'S12_2823',50,165.68,4),\n (10121,'S24_2360',32,76.88,2),\n (10121,'S32_4485',25,86.74,3),\n (10121,'S50_4713',44,74.85,1),\n (10122,'S12_1099',42,180.95,10),\n (10122,'S12_3380',37,99.82,8),\n (10122,'S12_3990',32,63.84,11),\n (10122,'S12_4675',20,107.1,7),\n (10122,'S18_1129',34,147.2,2),\n (10122,'S18_1889',43,72.38,6),\n (10122,'S18_1984',31,132.29,1),\n (10122,'S18_3232',25,143.94,3),\n (10122,'S18_3278',21,73.17,13),\n (10122,'S18_3482',21,117.59,12),\n (10122,'S18_3782',35,49.74,16),\n (10122,'S18_4721',28,127.97,15),\n (10122,'S24_2972',39,30.96,4),\n (10122,'S24_3371',34,50.21,9),\n (10122,'S24_3856',43,127.79,5),\n (10122,'S24_4620',29,71.14,14),\n (10122,'S32_2206',31,44.66,17),\n (10123,'S18_1589',26,118.22,2),\n (10123,'S18_2870',46,112.2,3),\n (10123,'S18_3685',34,156.82,4),\n (10123,'S24_1628',50,59.87,1),\n (10124,'S18_1749',21,136,6),\n (10124,'S18_2248',42,53.88,5),\n (10124,'S18_2325',42,105.52,3),\n (10124,'S18_4409',36,85.59,7),\n (10124,'S18_4933',23,57.73,8),\n (10124,'S24_1046',22,77.9,12),\n (10124,'S24_1937',45,37.84,2),\n (10124,'S24_2022',22,45.25,1),\n (10124,'S24_2766',32,72.7,10),\n (10124,'S24_2887',25,93.95,9),\n (10124,'S24_3191',49,83.04,11),\n (10124,'S24_3432',43,121,13),\n (10124,'S24_3969',46,33.23,4),\n (10125,'S18_1342',32,101.71,1),\n (10125,'S18_2795',34,190.69,2),\n (10126,'S10_1949',38,192.87,11),\n (10126,'S10_4962',22,152.17,4),\n (10126,'S12_1666',21,116.17,8),\n (10126,'S18_1097',38,101.5,10),\n (10126,'S18_1367',42,54.99,17),\n (10126,'S18_2432',43,65.02,2),\n (10126,'S18_2949',31,90.17,12),\n (10126,'S18_2957',46,73.7,14),\n (10126,'S18_3136',30,97.39,13),\n (10126,'S18_3320',38,82.34,16),\n (10126,'S18_4600',50,141.66,5),\n (10126,'S18_4668',43,53.83,9),\n (10126,'S24_2300',27,126.51,1),\n (10126,'S24_4258',34,105.18,15),\n (10126,'S32_1268',43,96.31,3),\n (10126,'S32_3522',26,62.7,7),\n (10126,'S700_2824',45,102.16,6),\n (10127,'S12_1108',46,245.2,2),\n (10127,'S12_3148',46,160.14,3),\n (10127,'S12_3891',42,193.78,1),\n (10127,'S12_4473',24,106.65,11),\n (10127,'S18_2238',45,158.82,10),\n (10127,'S18_2319',45,139.91,14),\n (10127,'S18_3232',22,174.42,15),\n (10127,'S18_4027',25,137.88,5),\n (10127,'S24_1444',20,60.69,8),\n (10127,'S24_2840',39,38.19,12),\n (10127,'S24_4048',20,96.99,7),\n (10127,'S32_2509',45,51.95,13),\n (10127,'S32_3207',29,70.84,6),\n (10127,'S50_1392',46,134.27,9),\n (10127,'S50_1514',46,69.12,4),\n (10128,'S18_3140',41,135.22,2),\n (10128,'S18_3259',41,117.98,4),\n (10128,'S18_4522',43,92.16,1),\n (10128,'S700_1938',32,97,3),\n (10129,'S10_4757',33,133.28,2),\n (10129,'S24_2011',45,133.95,9),\n (10129,'S24_3151',41,94.71,4),\n (10129,'S24_3816',50,77.99,1),\n (10129,'S700_1138',31,60,5),\n (10129,'S700_2610',45,85.29,3),\n (10129,'S700_3505',42,91.15,6),\n (10129,'S700_3962',30,85.41,7),\n (10129,'S72_3212',32,64.97,8),\n (10130,'S18_3029',40,96.34,2),\n (10130,'S18_3856',33,103.75,1),\n (10131,'S18_1662',21,132.46,4),\n (10131,'S24_2841',35,67.14,5),\n (10131,'S24_3420',29,59.18,6),\n (10131,'S24_3949',50,81.89,3),\n (10131,'S700_2047',22,85.99,8),\n (10131,'S700_2466',40,110.69,1),\n (10131,'S700_4002',26,85.13,2),\n (10131,'S72_1253',21,41.71,7),\n (10132,'S700_3167',36,68.8,1),\n (10133,'S18_2581',49,69.27,3),\n (10133,'S24_1785',41,94.1,5),\n (10133,'S24_4278',46,77.52,4),\n (10133,'S32_1374',23,114.87,1),\n (10133,'S32_4289',49,57.1,6),\n (10133,'S50_1341',27,50.19,7),\n (10133,'S700_1691',24,77.64,8),\n (10133,'S700_2834',27,99.67,2),\n (10134,'S10_1678',41,94.74,2),\n (10134,'S10_2016',27,122.51,5),\n (10134,'S10_4698',31,226.58,4),\n (10134,'S12_2823',20,135.56,1),\n (10134,'S18_2625',30,61.78,6),\n (10134,'S24_1578',35,93.54,3),\n (10134,'S24_2000',43,83.03,7),\n (10135,'S12_1099',42,190.68,7),\n (10135,'S12_3380',48,125.66,5),\n (10135,'S12_3990',24,75.01,8),\n (10135,'S12_4675',29,97.89,4),\n (10135,'S18_1889',48,79.31,3),\n (10135,'S18_3278',45,78,10),\n (10135,'S18_3482',42,129.35,9),\n (10135,'S18_3782',45,50.36,13),\n (10135,'S18_4721',31,151.78,12),\n (10135,'S24_2360',29,61.64,16),\n (10135,'S24_2972',20,35.87,1),\n (10135,'S24_3371',27,66.13,6),\n (10135,'S24_3856',47,134.81,2),\n (10135,'S24_4620',23,87.31,11),\n (10135,'S32_2206',33,40.23,14),\n (10135,'S32_4485',30,89.8,17),\n (10135,'S50_4713',44,96,15),\n (10136,'S18_1129',25,145.79,2),\n (10136,'S18_1984',36,146.52,1),\n (10136,'S18_3232',41,203.21,3),\n (10137,'S18_1589',44,99.55,2),\n (10137,'S18_2870',37,117.48,3),\n (10137,'S18_3685',31,165.3,4),\n (10137,'S24_1628',26,49.81,1),\n (10138,'S18_1749',33,161.5,6),\n (10138,'S18_2248',22,48.43,5),\n (10138,'S18_2325',38,108.06,3),\n (10138,'S18_4409',47,100.31,7),\n (10138,'S18_4933',23,66.99,8),\n (10138,'S24_1046',45,84.51,12),\n (10138,'S24_1937',22,29.21,2),\n (10138,'S24_2022',33,43.01,1),\n (10138,'S24_2766',28,104.5,10),\n (10138,'S24_2887',30,138.58,9),\n (10138,'S24_3191',49,90.75,11),\n (10138,'S24_3432',21,118.86,13),\n (10138,'S24_3969',29,38.16,4),\n (10139,'S18_1342',31,102.74,7),\n (10139,'S18_1367',49,43.13,6),\n (10139,'S18_2795',41,194.06,8),\n (10139,'S18_2949',46,120.56,1),\n (10139,'S18_2957',20,71.2,3),\n (10139,'S18_3136',20,90.06,2),\n (10139,'S18_3320',30,103.18,5),\n (10139,'S24_4258',29,112.97,4),\n (10140,'S10_1949',37,199.3,11),\n (10140,'S10_4962',26,122.62,4),\n (10140,'S12_1666',38,127.1,8),\n (10140,'S18_1097',32,130.67,10),\n (10140,'S18_2432',46,61.99,2),\n (10140,'S18_4600',40,115.03,5),\n (10140,'S18_4668',29,43.27,9),\n (10140,'S24_2300',47,108.62,1),\n (10140,'S32_1268',26,108.83,3),\n (10140,'S32_3522',28,60.76,7),\n (10140,'S700_2824',36,114.3,6),\n (10141,'S12_4473',21,101.91,5),\n (10141,'S18_2238',39,152.27,4),\n (10141,'S18_2319',47,133.78,8),\n (10141,'S18_3232',34,142.25,9),\n (10141,'S24_1444',20,54.33,2),\n (10141,'S24_2840',21,42.43,6),\n (10141,'S24_4048',40,94.62,1),\n (10141,'S32_2509',24,45.99,7),\n (10141,'S50_1392',44,125.01,3),\n (10142,'S12_1108',33,243.13,12),\n (10142,'S12_3148',33,151.08,13),\n (10142,'S12_3891',46,205.89,11),\n (10142,'S18_3140',47,128.39,8),\n (10142,'S18_3259',22,97.81,10),\n (10142,'S18_4027',24,157.98,15),\n (10142,'S18_4522',24,70.22,7),\n (10142,'S24_2011',33,102,6),\n (10142,'S24_3151',49,98.25,1),\n (10142,'S32_3207',42,74.57,16),\n (10142,'S50_1514',42,49.79,14),\n (10142,'S700_1138',41,64,2),\n (10142,'S700_1938',43,84.01,9),\n (10142,'S700_3505',21,111.19,3),\n (10142,'S700_3962',38,85.41,4),\n (10142,'S72_3212',39,44.23,5),\n (10143,'S10_4757',49,114.24,15),\n (10143,'S18_1662',32,164,7),\n (10143,'S18_3029',46,74.84,13),\n (10143,'S18_3856',34,101.64,12),\n (10143,'S24_2841',27,60.97,8),\n (10143,'S24_3420',33,77.59,9),\n (10143,'S24_3816',23,80.51,14),\n (10143,'S24_3949',28,66.19,6),\n (10143,'S50_1341',34,36.66,1),\n (10143,'S700_1691',36,109.61,2),\n (10143,'S700_2047',26,100.48,11),\n (10143,'S700_2466',26,82.77,4),\n (10143,'S700_2610',31,85.29,16),\n (10143,'S700_3167',28,96,3),\n (10143,'S700_4002',34,85.87,5),\n (10143,'S72_1253',37,50.65,10),\n (10144,'S32_4289',20,81.86,1),\n (10145,'S10_1678',45,83.26,6),\n (10145,'S10_2016',37,140.35,9),\n (10145,'S10_4698',33,156.86,8),\n (10145,'S12_2823',49,170.2,5),\n (10145,'S18_2581',30,85.32,14),\n (10145,'S18_2625',30,49.67,10),\n (10145,'S24_1578',43,95.8,7),\n (10145,'S24_1785',40,87.54,16),\n (10145,'S24_2000',47,83.03,11),\n (10145,'S24_2360',27,60.95,3),\n (10145,'S24_4278',33,84.77,15),\n (10145,'S32_1374',33,93.9,12),\n (10145,'S32_2206',31,35.8,1),\n (10145,'S32_4485',27,120.42,4),\n (10145,'S50_4713',38,81.36,2),\n (10145,'S700_2834',20,137.63,13),\n (10146,'S18_3782',47,67.14,2),\n (10146,'S18_4721',29,153.26,1),\n (10147,'S12_1099',48,192.62,7),\n (10147,'S12_3380',31,112.74,5),\n (10147,'S12_3990',21,63.84,8),\n (10147,'S12_4675',33,97.89,4),\n (10147,'S18_1889',26,82.39,3),\n (10147,'S18_3278',36,86.04,10),\n (10147,'S18_3482',37,119.06,9),\n (10147,'S24_2972',25,42.67,1),\n (10147,'S24_3371',30,68.58,6),\n (10147,'S24_3856',23,126.39,2),\n (10147,'S24_4620',31,64.67,11),\n (10148,'S18_1129',23,117.48,13),\n (10148,'S18_1589',47,124.44,9),\n (10148,'S18_1984',25,169.28,12),\n (10148,'S18_2870',27,130.68,10),\n (10148,'S18_3232',32,169.34,14),\n (10148,'S18_3685',28,129.98,11),\n (10148,'S18_4409',34,105.83,1),\n (10148,'S18_4933',29,81.25,2),\n (10148,'S24_1046',25,60.26,6),\n (10148,'S24_1628',47,56.85,8),\n (10148,'S24_2766',21,73.6,4),\n (10148,'S24_2887',34,129.18,3),\n (10148,'S24_3191',31,73.62,5),\n (10148,'S24_3432',27,128.5,7),\n (10149,'S18_1342',50,118.15,4),\n (10149,'S18_1367',30,58.22,3),\n (10149,'S18_1749',34,158.1,11),\n (10149,'S18_2248',24,62.36,10),\n (10149,'S18_2325',33,150.01,8),\n (10149,'S18_2795',23,183.94,5),\n (10149,'S18_3320',42,94.25,2),\n (10149,'S24_1937',36,33.19,7),\n (10149,'S24_2022',49,49.28,6),\n (10149,'S24_3969',26,38.98,9),\n (10149,'S24_4258',20,90.57,1),\n (10150,'S10_1949',45,244.3,8),\n (10150,'S10_4962',20,159.56,1),\n (10150,'S12_1666',30,136.67,5),\n (10150,'S18_1097',34,136.5,7),\n (10150,'S18_2949',47,91.18,9),\n (10150,'S18_2957',30,49.97,11),\n (10150,'S18_3136',26,107.86,10),\n (10150,'S18_4600',49,131.98,2),\n (10150,'S18_4668',30,42.76,6),\n (10150,'S32_3522',49,58.18,4),\n (10150,'S700_2824',20,105.2,3),\n (10151,'S12_4473',24,138.65,3),\n (10151,'S18_2238',43,165.37,2),\n (10151,'S18_2319',49,110.46,6),\n (10151,'S18_2432',39,69.28,9),\n (10151,'S18_3232',21,177.81,7),\n (10151,'S24_2300',42,121.4,8),\n (10151,'S24_2840',30,40.31,4),\n (10151,'S32_1268',27,113.65,10),\n (10151,'S32_2509',41,63.85,5),\n (10151,'S50_1392',26,123.85,1),\n (10152,'S18_4027',35,129.26,1),\n (10152,'S24_1444',25,65.31,4),\n (10152,'S24_4048',23,121.83,3),\n (10152,'S32_3207',33,50.95,2),\n (10153,'S12_1108',20,245.2,11),\n (10153,'S12_3148',42,128.42,12),\n (10153,'S12_3891',49,143.61,10),\n (10153,'S18_3140',31,117.47,7),\n (10153,'S18_3259',29,88.74,9),\n (10153,'S18_4522',22,83.38,6),\n (10153,'S24_2011',40,136.41,5),\n (10153,'S50_1514',31,57.41,13),\n (10153,'S700_1138',43,64.67,1),\n (10153,'S700_1938',31,87.48,8),\n (10153,'S700_3505',50,88.15,2),\n (10153,'S700_3962',20,110.23,3),\n (10153,'S72_3212',50,60.06,4),\n (10154,'S24_3151',31,91.17,2),\n (10154,'S700_2610',36,64.33,1),\n (10155,'S10_4757',32,141.44,13),\n (10155,'S18_1662',38,171.88,5),\n (10155,'S18_3029',44,79.14,11),\n (10155,'S18_3856',29,124.93,10),\n (10155,'S24_2841',23,72.62,6),\n (10155,'S24_3420',34,55.89,7),\n (10155,'S24_3816',37,67.93,12),\n (10155,'S24_3949',44,77.11,4),\n (10155,'S700_2047',32,91.43,9),\n (10155,'S700_2466',20,117.67,2),\n (10155,'S700_3167',43,86.4,1),\n (10155,'S700_4002',44,85.87,3),\n (10155,'S72_1253',34,49.16,8),\n (10156,'S50_1341',20,41.02,1),\n (10156,'S700_1691',48,103.21,2),\n (10157,'S18_2581',33,78.57,3),\n (10157,'S24_1785',40,102.85,5),\n (10157,'S24_4278',33,86.22,4),\n (10157,'S32_1374',34,118.87,1),\n (10157,'S32_4289',28,74.98,6),\n (10157,'S700_2834',48,124.58,2),\n (10158,'S24_2000',22,67.03,1),\n (10159,'S10_1678',49,106.23,14),\n (10159,'S10_2016',37,135.59,17),\n (10159,'S10_4698',22,187.85,16),\n (10159,'S12_1099',41,202.35,2),\n (10159,'S12_2823',38,164.18,13),\n (10159,'S12_3990',24,73.42,3),\n (10159,'S18_2625',42,51.48,18),\n (10159,'S18_3278',21,81.21,5),\n (10159,'S18_3482',25,145.52,4),\n (10159,'S18_3782',21,64.66,8),\n (10159,'S18_4721',32,144.34,7),\n (10159,'S24_1578',44,121.72,15),\n (10159,'S24_2360',27,80.34,11),\n (10159,'S24_3371',50,69.8,1),\n (10159,'S24_4620',23,67.1,6),\n (10159,'S32_2206',35,35.4,9),\n (10159,'S32_4485',23,102.05,12),\n (10159,'S50_4713',31,71.6,10),\n (10160,'S12_3380',46,115.09,6),\n (10160,'S12_4675',50,103.64,5),\n (10160,'S18_1889',38,88.55,4),\n (10160,'S18_3232',20,199.82,1),\n (10160,'S24_2972',42,37,2),\n (10160,'S24_3856',35,136.22,3),\n (10161,'S18_1129',28,134.46,12),\n (10161,'S18_1589',43,143.11,8),\n (10161,'S18_1984',48,128.03,11),\n (10161,'S18_2870',23,138.6,9),\n (10161,'S18_3685',36,154,10),\n (10161,'S18_4933',25,80.54,1),\n (10161,'S24_1046',37,72.76,5),\n (10161,'S24_1628',23,53.33,7),\n (10161,'S24_2766',20,107.23,3),\n (10161,'S24_2887',25,110.39,2),\n (10161,'S24_3191',20,77.05,4),\n (10161,'S24_3432',30,104.94,6),\n (10162,'S18_1342',48,91.44,2),\n (10162,'S18_1367',45,51.21,1),\n (10162,'S18_1749',29,178.5,9),\n (10162,'S18_2248',27,69.62,8),\n (10162,'S18_2325',38,113.15,6),\n (10162,'S18_2795',48,150.19,3),\n (10162,'S18_4409',39,100.31,10),\n (10162,'S24_1937',37,27.22,5),\n (10162,'S24_2022',43,36.29,4),\n (10162,'S24_3969',37,38.98,7),\n (10163,'S10_1949',21,231.44,1),\n (10163,'S18_2949',31,107.39,2),\n (10163,'S18_2957',48,69.96,4),\n (10163,'S18_3136',40,122.52,3),\n (10163,'S18_3320',43,116.08,6),\n (10163,'S24_4258',42,91.55,5),\n (10164,'S10_4962',21,168.42,2),\n (10164,'S12_1666',49,133.94,6),\n (10164,'S18_1097',36,99.17,8),\n (10164,'S18_4600',45,111.39,3),\n (10164,'S18_4668',25,53.83,7),\n (10164,'S32_1268',24,109.79,1),\n (10164,'S32_3522',49,54.94,5),\n (10164,'S700_2824',39,81.93,4),\n (10165,'S12_1108',44,195.33,3),\n (10165,'S12_3148',34,143.53,4),\n (10165,'S12_3891',27,205.89,2),\n (10165,'S12_4473',48,142.2,12),\n (10165,'S18_2238',29,173.55,11),\n (10165,'S18_2319',46,130.09,15),\n (10165,'S18_2432',31,71.1,18),\n (10165,'S18_3232',47,186.27,16),\n (10165,'S18_3259',50,106.89,1),\n (10165,'S18_4027',28,119.2,6),\n (10165,'S24_1444',25,69.36,9),\n (10165,'S24_2300',32,145.68,17),\n (10165,'S24_2840',27,31.82,13),\n (10165,'S24_4048',24,99.36,8),\n (10165,'S32_2509',48,45.99,14),\n (10165,'S32_3207',44,53.44,7),\n (10165,'S50_1392',48,94.92,10),\n (10165,'S50_1514',38,66.78,5),\n (10166,'S18_3140',43,161.18,2),\n (10166,'S18_4522',26,73.73,1),\n (10166,'S700_1938',29,103.93,3),\n (10167,'S10_4757',44,134.64,9),\n (10167,'S18_1662',43,134.04,1),\n (10167,'S18_3029',46,73.12,7),\n (10167,'S18_3856',34,105.87,6),\n (10167,'S24_2011',33,115.52,16),\n (10167,'S24_2841',21,69.88,2),\n (10167,'S24_3151',20,79.66,11),\n (10167,'S24_3420',32,63.12,3),\n (10167,'S24_3816',29,83.86,8),\n (10167,'S700_1138',43,75.34,12),\n (10167,'S700_2047',29,101.38,5),\n (10167,'S700_2610',46,70.11,10),\n (10167,'S700_3505',24,117.2,13),\n (10167,'S700_3962',28,107.25,14),\n (10167,'S72_1253',40,41.71,4),\n (10167,'S72_3212',38,48.59,15),\n (10168,'S10_1678',36,96.66,1),\n (10168,'S10_2016',27,135.59,4),\n (10168,'S10_4698',20,209.15,3),\n (10168,'S18_2581',21,70.96,9),\n (10168,'S18_2625',46,61.18,5),\n (10168,'S24_1578',50,114.95,2),\n (10168,'S24_1785',49,131.3,11),\n (10168,'S24_2000',29,75.41,6),\n (10168,'S24_3949',27,73.02,18),\n (10168,'S24_4278',48,78.25,10),\n (10168,'S32_1374',28,115.87,7),\n (10168,'S32_4289',31,73.61,12),\n (10168,'S50_1341',48,51.93,13),\n (10168,'S700_1691',28,98.65,14),\n (10168,'S700_2466',31,110.69,16),\n (10168,'S700_2834',36,125.77,8),\n (10168,'S700_3167',48,96,15),\n (10168,'S700_4002',39,82.91,17),\n (10169,'S12_1099',30,167.33,2),\n (10169,'S12_2823',35,132.55,13),\n (10169,'S12_3990',36,63.84,3),\n (10169,'S18_3278',32,70.76,5),\n (10169,'S18_3482',36,123.47,4),\n (10169,'S18_3782',38,68.39,8),\n (10169,'S18_4721',33,148.8,7),\n (10169,'S24_2360',38,74.11,11),\n (10169,'S24_3371',34,50.21,1),\n (10169,'S24_4620',24,94.58,6),\n (10169,'S32_2206',26,39.83,9),\n (10169,'S32_4485',34,115.32,12),\n (10169,'S50_4713',48,80.55,10),\n (10170,'S12_3380',47,116.27,4),\n (10170,'S12_4675',41,107.1,3),\n (10170,'S18_1889',20,63.14,2),\n (10170,'S24_3856',34,112.34,1),\n (10171,'S18_1129',35,128.8,2),\n (10171,'S18_1984',35,133.72,1),\n (10171,'S18_3232',39,140.55,3),\n (10171,'S24_2972',36,35.49,4),\n (10172,'S18_1589',42,118.22,6),\n (10172,'S18_2870',39,154.44,7),\n (10172,'S18_3685',48,114.44,8),\n (10172,'S24_1046',32,75.69,3),\n (10172,'S24_1628',34,42.76,5),\n (10172,'S24_2766',22,74.51,1),\n (10172,'S24_3191',24,81.33,2),\n (10172,'S24_3432',22,98.51,4),\n (10173,'S18_1342',43,117.12,6),\n (10173,'S18_1367',48,44.21,5),\n (10173,'S18_1749',24,146.2,13),\n (10173,'S18_2248',26,57.51,12),\n (10173,'S18_2325',31,144.93,10),\n (10173,'S18_2795',22,156.94,7),\n (10173,'S18_2957',28,53.72,2),\n (10173,'S18_3136',31,89.01,1),\n (10173,'S18_3320',29,95.24,4),\n (10173,'S18_4409',21,75.46,14),\n (10173,'S18_4933',39,71.98,15),\n (10173,'S24_1937',31,31.53,9),\n (10173,'S24_2022',27,41.22,8),\n (10173,'S24_2887',23,118.61,16),\n (10173,'S24_3969',35,33.23,11),\n (10173,'S24_4258',22,116.87,3),\n (10174,'S10_1949',34,235.73,4),\n (10174,'S12_1666',43,158.54,1),\n (10174,'S18_1097',48,93.34,3),\n (10174,'S18_2949',46,121.57,5),\n (10174,'S18_4668',49,44.78,2),\n (10175,'S10_4962',33,162.51,9),\n (10175,'S12_4473',26,136.28,1),\n (10175,'S18_2319',48,122.73,4),\n (10175,'S18_2432',41,69.28,7),\n (10175,'S18_3232',29,152.41,5),\n (10175,'S18_4600',47,108.97,10),\n (10175,'S24_2300',28,106.07,6),\n (10175,'S24_2840',37,31.12,2),\n (10175,'S32_1268',22,110.76,8),\n (10175,'S32_2509',50,63.31,3),\n (10175,'S32_3522',29,74.98,12),\n (10175,'S700_2824',42,85.98,11),\n (10176,'S12_1108',33,226.5,2),\n (10176,'S12_3148',47,178.27,3),\n (10176,'S12_3891',50,157.45,1),\n (10176,'S18_2238',20,183.38,10),\n (10176,'S18_4027',36,153.67,5),\n (10176,'S24_1444',27,68.78,8),\n (10176,'S24_4048',29,100.54,7),\n (10176,'S32_3207',22,64,6),\n (10176,'S50_1392',23,135.43,9),\n (10176,'S50_1514',38,64.44,4),\n (10177,'S18_3140',23,159.81,9),\n (10177,'S18_3259',29,105.88,11),\n (10177,'S18_4522',35,74.6,8),\n (10177,'S24_2011',50,121.66,7),\n (10177,'S24_3151',45,72.58,2),\n (10177,'S700_1138',24,76,3),\n (10177,'S700_1938',31,88.34,10),\n (10177,'S700_2610',32,76.62,1),\n (10177,'S700_3505',44,92.16,4),\n (10177,'S700_3962',24,105.27,5),\n (10177,'S72_3212',40,50.23,6),\n (10178,'S10_4757',24,145.52,12),\n (10178,'S18_1662',42,154.54,4),\n (10178,'S18_3029',41,81.72,10),\n (10178,'S18_3856',48,112.22,9),\n (10178,'S24_2841',34,80.84,5),\n (10178,'S24_3420',27,73.64,6),\n (10178,'S24_3816',21,72.12,11),\n (10178,'S24_3949',30,72.33,3),\n (10178,'S700_2047',34,96.86,8),\n (10178,'S700_2466',22,87.75,1),\n (10178,'S700_4002',45,76.25,2),\n (10178,'S72_1253',45,51.15,7),\n (10179,'S18_2581',24,78.57,3),\n (10179,'S24_1785',47,124.74,5),\n (10179,'S24_4278',27,84.77,4),\n (10179,'S32_1374',45,119.87,1),\n (10179,'S32_4289',24,72.23,6),\n (10179,'S50_1341',34,42.77,7),\n (10179,'S700_1691',23,107.78,8),\n (10179,'S700_2834',25,105.6,2),\n (10179,'S700_3167',39,68.8,9),\n (10180,'S10_1678',29,86.13,9),\n (10180,'S10_2016',42,111.8,12),\n (10180,'S10_4698',41,216.9,11),\n (10180,'S12_2823',40,168.69,8),\n (10180,'S18_2625',25,64.2,13),\n (10180,'S18_3782',21,50.36,3),\n (10180,'S18_4721',44,126.48,2),\n (10180,'S24_1578',48,111.57,10),\n (10180,'S24_2000',28,68.55,14),\n (10180,'S24_2360',35,72.03,6),\n (10180,'S24_4620',28,71.14,1),\n (10180,'S32_2206',34,45.46,4),\n (10180,'S32_4485',22,114.3,7),\n (10180,'S50_4713',21,93.56,5),\n (10181,'S12_1099',27,200.41,14),\n (10181,'S12_3380',28,102.17,12),\n (10181,'S12_3990',20,81.4,15),\n (10181,'S12_4675',36,124.37,11),\n (10181,'S18_1129',44,123.14,6),\n (10181,'S18_1589',42,129.42,2),\n (10181,'S18_1889',22,73.92,10),\n (10181,'S18_1984',21,156.48,5),\n (10181,'S18_2870',27,143.88,3),\n (10181,'S18_3232',45,140.55,7),\n (10181,'S18_3278',30,82.82,17),\n (10181,'S18_3482',22,154.34,16),\n (10181,'S18_3685',39,148.34,4),\n (10181,'S24_1628',34,53.83,1),\n (10181,'S24_2972',37,42.67,8),\n (10181,'S24_3371',23,65.52,13),\n (10181,'S24_3856',25,154.47,9),\n (10182,'S18_1342',25,87.33,3),\n (10182,'S18_1367',32,54.45,2),\n (10182,'S18_1749',44,171.7,10),\n (10182,'S18_2248',38,61.15,9),\n (10182,'S18_2325',20,110.6,7),\n (10182,'S18_2795',21,145.13,4),\n (10182,'S18_3320',33,86.31,1),\n (10182,'S18_4409',36,109.52,11),\n (10182,'S18_4933',44,69.84,12),\n (10182,'S24_1046',47,74.22,16),\n (10182,'S24_1937',39,36.84,6),\n (10182,'S24_2022',31,36.74,5),\n (10182,'S24_2766',36,73.6,14),\n (10182,'S24_2887',20,119.79,13),\n (10182,'S24_3191',33,94.17,15),\n (10182,'S24_3432',49,127.43,17),\n (10182,'S24_3969',23,42.26,8),\n (10183,'S10_1949',23,233.59,8),\n (10183,'S10_4962',28,122.62,1),\n (10183,'S12_1666',41,150.34,5),\n (10183,'S18_1097',21,96.84,7),\n (10183,'S18_2949',37,89.15,9),\n (10183,'S18_2957',39,68.08,11),\n (10183,'S18_3136',22,113.1,10),\n (10183,'S18_4600',21,116.24,2),\n (10183,'S18_4668',40,49.3,6),\n (10183,'S24_4258',47,107.13,12),\n (10183,'S32_3522',49,64.64,4),\n (10183,'S700_2824',23,86.99,3),\n (10184,'S12_4473',37,122.06,6),\n (10184,'S18_2238',46,160.46,5),\n (10184,'S18_2319',46,130.09,9),\n (10184,'S18_2432',44,60.16,12),\n (10184,'S18_3232',28,157.49,10),\n (10184,'S24_1444',31,60.11,3),\n (10184,'S24_2300',24,145.68,11),\n (10184,'S24_2840',42,31.82,7),\n (10184,'S24_4048',49,118.28,2),\n (10184,'S32_1268',46,100.16,13),\n (10184,'S32_2509',33,62.77,8),\n (10184,'S32_3207',48,50.95,1),\n (10184,'S50_1392',45,109.96,4),\n (10185,'S12_1108',21,184.94,13),\n (10185,'S12_3148',33,122.37,14),\n (10185,'S12_3891',43,183.4,12),\n (10185,'S18_3140',28,122.93,9),\n (10185,'S18_3259',49,80.67,11),\n (10185,'S18_4027',39,130.69,16),\n (10185,'S18_4522',47,77.24,8),\n (10185,'S24_2011',30,105.69,7),\n (10185,'S24_3151',33,74.35,2),\n (10185,'S50_1514',20,48.62,15),\n (10185,'S700_1138',21,54,3),\n (10185,'S700_1938',30,94.4,10),\n (10185,'S700_2610',39,57.82,1),\n (10185,'S700_3505',37,105.18,4),\n (10185,'S700_3962',22,79.45,5),\n (10185,'S72_3212',28,64.43,6),\n (10186,'S10_4757',26,148.24,9),\n (10186,'S18_1662',32,187.65,1),\n (10186,'S18_3029',32,89.46,7),\n (10186,'S18_3856',46,106.93,6),\n (10186,'S24_2841',22,69.2,2),\n (10186,'S24_3420',21,69.04,3),\n (10186,'S24_3816',36,85.54,8),\n (10186,'S700_2047',24,99.57,5),\n (10186,'S72_1253',28,52.14,4),\n (10187,'S18_2581',45,93.77,1),\n (10187,'S24_1785',46,95.2,3),\n (10187,'S24_3949',43,58,10),\n (10187,'S24_4278',33,59.41,2),\n (10187,'S32_4289',31,60.54,4),\n (10187,'S50_1341',41,38.84,5),\n (10187,'S700_1691',34,92.25,6),\n (10187,'S700_2466',44,105.7,8),\n (10187,'S700_3167',34,88,7),\n (10187,'S700_4002',44,71.81,9),\n (10188,'S10_1678',48,114.84,1),\n (10188,'S10_2016',38,96.34,4),\n (10188,'S10_4698',45,193.66,3),\n (10188,'S18_2625',32,65.42,5),\n (10188,'S24_1578',25,101.43,2),\n (10188,'S24_2000',40,91.4,6),\n (10188,'S32_1374',44,98.89,7),\n (10188,'S700_2834',29,136.45,8),\n (10189,'S12_2823',28,161.16,1),\n (10190,'S24_2360',42,76.19,3),\n (10190,'S32_2206',46,32.99,1),\n (10190,'S32_4485',42,85.72,4),\n (10190,'S50_4713',40,66.72,2),\n (10191,'S12_1099',21,182.9,3),\n (10191,'S12_3380',40,139.75,1),\n (10191,'S12_3990',30,64.64,4),\n (10191,'S18_3278',36,94.88,6),\n (10191,'S18_3482',23,148.46,5),\n (10191,'S18_3782',43,72.74,9),\n (10191,'S18_4721',32,132.43,8),\n (10191,'S24_3371',48,60.01,2),\n (10191,'S24_4620',44,66.29,7),\n (10192,'S12_4675',27,131.28,16),\n (10192,'S18_1129',22,150.03,11),\n (10192,'S18_1589',29,146.84,7),\n (10192,'S18_1889',45,90.86,15),\n (10192,'S18_1984',47,157.9,10),\n (10192,'S18_2870',38,130.68,8),\n (10192,'S18_3232',26,150.71,12),\n (10192,'S18_3685',45,118.68,9),\n (10192,'S24_1046',37,69.82,4),\n (10192,'S24_1628',47,53.83,6),\n (10192,'S24_2766',46,83.6,2),\n (10192,'S24_2887',23,132.71,1),\n (10192,'S24_2972',30,30.59,13),\n (10192,'S24_3191',32,72.77,3),\n (10192,'S24_3432',46,121,5),\n (10192,'S24_3856',45,140.43,14),\n (10193,'S18_1342',28,110.96,7),\n (10193,'S18_1367',46,53.37,6),\n (10193,'S18_1749',21,149.6,14),\n (10193,'S18_2248',42,59.33,13),\n (10193,'S18_2325',44,105.52,11),\n (10193,'S18_2795',22,167.06,8),\n (10193,'S18_2949',28,93.21,1),\n (10193,'S18_2957',24,51.84,3),\n (10193,'S18_3136',23,120.43,2),\n (10193,'S18_3320',32,79.37,5),\n (10193,'S18_4409',24,97.55,15),\n (10193,'S18_4933',25,76.26,16),\n (10193,'S24_1937',26,29.21,10),\n (10193,'S24_2022',20,50.62,9),\n (10193,'S24_3969',22,41.03,12),\n (10193,'S24_4258',20,113.95,4),\n (10194,'S10_1949',42,173.58,11),\n (10194,'S10_4962',26,163.99,4),\n (10194,'S12_1666',38,129.84,8),\n (10194,'S18_1097',21,93.34,10),\n (10194,'S18_2432',45,70.49,2),\n (10194,'S18_4600',32,133.19,5),\n (10194,'S18_4668',41,44.78,9),\n (10194,'S24_2300',49,117.57,1),\n (10194,'S32_1268',37,97.27,3),\n (10194,'S32_3522',39,54.94,7),\n (10194,'S700_2824',26,89.01,6),\n (10195,'S12_4473',49,131.54,6),\n (10195,'S18_2238',27,189.93,5),\n (10195,'S18_2319',35,103.09,9),\n (10195,'S18_3232',50,152.41,10),\n (10195,'S24_1444',44,66.47,3),\n (10195,'S24_2840',32,28.29,7),\n (10195,'S24_4048',34,108.82,2),\n (10195,'S32_2509',32,43.29,8),\n (10195,'S32_3207',33,54.68,1),\n (10195,'S50_1392',49,105.33,4),\n (10196,'S12_1108',47,189.1,5),\n (10196,'S12_3148',24,158.63,6),\n (10196,'S12_3891',38,190.32,4),\n (10196,'S18_3140',49,140.69,1),\n (10196,'S18_3259',35,101.85,3),\n (10196,'S18_4027',27,168.04,8),\n (10196,'S50_1514',46,62.09,7),\n (10196,'S700_1938',50,94.4,2),\n (10197,'S10_4757',45,118.32,6),\n (10197,'S18_3029',46,87.74,4),\n (10197,'S18_3856',22,115.4,3),\n (10197,'S18_4522',50,101.81,14),\n (10197,'S24_2011',41,110.6,13),\n (10197,'S24_3151',47,83.2,8),\n (10197,'S24_3816',22,86.38,5),\n (10197,'S700_1138',23,64.67,9),\n (10197,'S700_2047',24,90.52,2),\n (10197,'S700_2610',50,78.79,7),\n (10197,'S700_3505',27,92.16,10),\n (10197,'S700_3962',35,93.35,11),\n (10197,'S72_1253',29,41.71,1),\n (10197,'S72_3212',42,50.23,12),\n (10198,'S18_1662',42,178.19,4),\n (10198,'S24_2841',48,67.82,5),\n (10198,'S24_3420',27,71.67,6),\n (10198,'S24_3949',43,66.19,3),\n (10198,'S700_2466',42,113.68,1),\n (10198,'S700_4002',40,63.67,2),\n (10199,'S50_1341',29,38.4,1),\n (10199,'S700_1691',48,83.12,2),\n (10199,'S700_3167',38,82.4,3),\n (10200,'S18_2581',28,92.93,3),\n (10200,'S24_1785',33,98.48,5),\n (10200,'S24_4278',39,72.45,4),\n (10200,'S32_1374',35,109.88,1),\n (10200,'S32_4289',27,67.41,6),\n (10200,'S700_2834',39,102.04,2),\n (10201,'S10_1678',22,98.57,2),\n (10201,'S10_2016',24,126.08,5),\n (10201,'S10_4698',49,164.61,4),\n (10201,'S12_2823',25,161.16,1),\n (10201,'S18_2625',30,64.81,6),\n (10201,'S24_1578',39,111.57,3),\n (10201,'S24_2000',25,73.88,7),\n (10202,'S18_3782',30,54.71,3),\n (10202,'S18_4721',43,136.9,2),\n (10202,'S24_2360',50,69.26,6),\n (10202,'S24_4620',50,87.31,1),\n (10202,'S32_2206',27,44.25,4),\n (10202,'S32_4485',31,102.05,7),\n (10202,'S50_4713',40,89.5,5),\n (10203,'S12_1099',20,196.52,8),\n (10203,'S12_3380',20,112.74,6),\n (10203,'S12_3990',44,82.99,9),\n (10203,'S12_4675',47,110.55,5),\n (10203,'S18_1889',45,85.47,4),\n (10203,'S18_3232',48,172.73,1),\n (10203,'S18_3278',33,86.04,11),\n (10203,'S18_3482',32,160.22,10),\n (10203,'S24_2972',21,37,2),\n (10203,'S24_3371',34,64.9,7),\n (10203,'S24_3856',47,148.86,3),\n (10204,'S18_1129',42,147.2,17),\n (10204,'S18_1589',40,100.8,13),\n (10204,'S18_1749',33,178.5,4),\n (10204,'S18_1984',38,169.28,16),\n (10204,'S18_2248',23,71.44,3),\n (10204,'S18_2325',26,123.32,1),\n (10204,'S18_2870',27,154.44,14),\n (10204,'S18_3685',35,163.88,15),\n (10204,'S18_4409',29,85.59,5),\n (10204,'S18_4933',45,76.26,6),\n (10204,'S24_1046',20,62.47,10),\n (10204,'S24_1628',45,49.81,12),\n (10204,'S24_2766',47,96.32,8),\n (10204,'S24_2887',42,101,7),\n (10204,'S24_3191',40,79.62,9),\n (10204,'S24_3432',48,91.02,11),\n (10204,'S24_3969',39,33.23,2),\n (10205,'S18_1342',36,103.77,2),\n (10205,'S18_1367',48,63.61,1),\n (10205,'S18_2795',40,187.31,3),\n (10205,'S24_1937',32,37.17,5),\n (10205,'S24_2022',24,38.08,4),\n (10206,'S10_1949',47,192.87,6),\n (10206,'S12_1666',28,144.87,3),\n (10206,'S18_1097',34,116.67,5),\n (10206,'S18_2949',37,90.17,7),\n (10206,'S18_2957',28,67.46,9),\n (10206,'S18_3136',30,119.38,8),\n (10206,'S18_3320',28,87.3,11),\n (10206,'S18_4668',21,53.33,4),\n (10206,'S24_4258',33,97.39,10),\n (10206,'S32_3522',36,58.82,2),\n (10206,'S700_2824',33,117.33,1),\n (10207,'S10_4962',31,131.49,15),\n (10207,'S12_4473',34,99.54,7),\n (10207,'S18_2238',44,160.46,6),\n (10207,'S18_2319',43,133.78,10),\n (10207,'S18_2432',37,69.89,13),\n (10207,'S18_3232',25,157.49,11),\n (10207,'S18_4027',40,153.67,1),\n (10207,'S18_4600',47,141.66,16),\n (10207,'S24_1444',49,46.82,4),\n (10207,'S24_2300',46,148.24,12),\n (10207,'S24_2840',42,29.7,8),\n (10207,'S24_4048',28,106.45,3),\n (10207,'S32_1268',49,80.9,14),\n (10207,'S32_2509',27,60.06,9),\n (10207,'S32_3207',45,56.55,2),\n (10207,'S50_1392',28,94.92,5),\n (10208,'S12_1108',46,187.02,13),\n (10208,'S12_3148',26,120.86,14),\n (10208,'S12_3891',20,155.72,12),\n (10208,'S18_3140',24,109.27,9),\n (10208,'S18_3259',48,116.97,11),\n (10208,'S18_4522',45,87.77,8),\n (10208,'S24_2011',35,122.89,7),\n (10208,'S24_3151',20,89.4,2),\n (10208,'S50_1514',30,65.61,15),\n (10208,'S700_1138',38,74.67,3),\n (10208,'S700_1938',40,80.55,10),\n (10208,'S700_2610',46,74.45,1),\n (10208,'S700_3505',37,120.2,4),\n (10208,'S700_3962',33,85.41,5),\n (10208,'S72_3212',42,63.88,6),\n (10209,'S10_4757',39,133.28,8),\n (10209,'S18_3029',28,100.64,6),\n (10209,'S18_3856',20,124.93,5),\n (10209,'S24_2841',43,82.21,1),\n (10209,'S24_3420',36,77.59,2),\n (10209,'S24_3816',22,89.73,7),\n (10209,'S700_2047',33,88.71,4),\n (10209,'S72_1253',48,44.69,3),\n (10210,'S10_2016',23,130.83,2),\n (10210,'S10_4698',34,180.1,1),\n (10210,'S18_1662',31,184.5,17),\n (10210,'S18_2581',50,76.88,7),\n (10210,'S18_2625',40,49.67,3),\n (10210,'S24_1785',27,98.48,9),\n (10210,'S24_2000',30,61.7,4),\n (10210,'S24_3949',29,69.6,16),\n (10210,'S24_4278',40,71,8),\n (10210,'S32_1374',46,79.91,5),\n (10210,'S32_4289',39,59.16,10),\n (10210,'S50_1341',43,41.02,11),\n (10210,'S700_1691',21,78.55,12),\n (10210,'S700_2466',26,99.72,14),\n (10210,'S700_2834',25,112.72,6),\n (10210,'S700_3167',31,86.4,13),\n (10210,'S700_4002',42,70.33,15),\n (10211,'S10_1678',41,114.84,14),\n (10211,'S12_1099',41,182.9,2),\n (10211,'S12_2823',36,132.55,13),\n (10211,'S12_3990',28,92.57,3),\n (10211,'S18_3278',35,78,5),\n (10211,'S18_3482',28,133.76,4),\n (10211,'S18_3782',46,54.09,8),\n (10211,'S18_4721',41,138.38,7),\n (10211,'S24_1578',25,90.16,15),\n (10211,'S24_2360',21,63.72,11),\n (10211,'S24_3371',48,48.98,1),\n (10211,'S24_4620',22,92.16,6),\n (10211,'S32_2206',41,42.24,9),\n (10211,'S32_4485',37,109.19,12),\n (10211,'S50_4713',40,80.55,10),\n (10212,'S12_3380',39,126.84,16),\n (10212,'S12_4675',33,126.68,15),\n (10212,'S18_1129',29,144.37,10),\n (10212,'S18_1589',38,118.22,6),\n (10212,'S18_1889',20,66.99,14),\n (10212,'S18_1984',41,118.07,9),\n (10212,'S18_2870',40,122.76,7),\n (10212,'S18_3232',40,138.86,11),\n (10212,'S18_3685',45,141.28,8),\n (10212,'S24_1046',41,82.31,3),\n (10212,'S24_1628',45,53.33,5),\n (10212,'S24_2766',45,88.14,1),\n (10212,'S24_2972',34,43.42,12),\n (10212,'S24_3191',27,79.62,2),\n (10212,'S24_3432',46,87.81,4),\n (10212,'S24_3856',49,141.83,13),\n (10213,'S18_4409',38,94.79,1),\n (10213,'S18_4933',25,83.39,2),\n (10213,'S24_2887',27,103.35,3),\n (10214,'S18_1749',30,198.9,7),\n (10214,'S18_2248',21,62.96,6),\n (10214,'S18_2325',27,133.49,4),\n (10214,'S18_2795',50,190.69,1),\n (10214,'S24_1937',20,34.19,3),\n (10214,'S24_2022',49,47.94,2),\n (10214,'S24_3969',44,34.88,5),\n (10215,'S10_1949',35,173.58,3),\n (10215,'S18_1097',46,112,2),\n (10215,'S18_1342',27,89.38,10),\n (10215,'S18_1367',33,43.13,9),\n (10215,'S18_2949',49,112.45,4),\n (10215,'S18_2957',31,58.71,6),\n (10215,'S18_3136',49,107.86,5),\n (10215,'S18_3320',41,111.12,8),\n (10215,'S18_4668',46,45.28,1),\n (10215,'S24_4258',39,90.57,7),\n (10216,'S12_1666',43,133.94,1),\n (10217,'S10_4962',48,146.26,4),\n (10217,'S18_2432',35,61.38,2),\n (10217,'S18_4600',38,118.66,5),\n (10217,'S24_2300',28,112.46,1),\n (10217,'S32_1268',21,106.9,3),\n (10217,'S32_3522',39,62.05,7),\n (10217,'S700_2824',31,88,6),\n (10218,'S18_2319',22,121.5,1),\n (10218,'S18_3232',34,135.47,2),\n (10219,'S12_4473',48,101.91,2),\n (10219,'S18_2238',43,196.48,1),\n (10219,'S24_2840',21,40.31,3),\n (10219,'S32_2509',35,55.19,4),\n (10220,'S12_1108',32,224.42,2),\n (10220,'S12_3148',30,157.12,3),\n (10220,'S12_3891',27,186.86,1),\n (10220,'S18_4027',50,165.16,5),\n (10220,'S24_1444',26,56.07,8),\n (10220,'S24_4048',37,136.02,7),\n (10220,'S32_3207',20,52.82,6),\n (10220,'S50_1392',37,107.65,9),\n (10220,'S50_1514',30,68.54,4),\n (10221,'S18_3140',33,133.86,3),\n (10221,'S18_3259',23,80.67,5),\n (10221,'S18_4522',39,89.53,2),\n (10221,'S24_2011',49,138.87,1),\n (10221,'S700_1938',23,97,4),\n (10222,'S10_4757',49,122.4,12),\n (10222,'S18_1662',49,141.92,4),\n (10222,'S18_3029',49,94.62,10),\n (10222,'S18_3856',45,85.75,9),\n (10222,'S24_2841',32,81.53,5),\n (10222,'S24_3151',47,70.81,14),\n (10222,'S24_3420',43,70.35,6),\n (10222,'S24_3816',46,80.51,11),\n (10222,'S24_3949',48,56.64,3),\n (10222,'S700_1138',31,62.67,15),\n (10222,'S700_2047',26,102.29,8),\n (10222,'S700_2466',37,87.75,1),\n (10222,'S700_2610',36,80.95,13),\n (10222,'S700_3505',38,110.19,16),\n (10222,'S700_3962',31,95.34,17),\n (10222,'S700_4002',43,74.03,2),\n (10222,'S72_1253',31,45.69,7),\n (10222,'S72_3212',36,63.34,18),\n (10223,'S10_1678',37,107.18,1),\n (10223,'S10_2016',47,115.37,4),\n (10223,'S10_4698',49,199.47,3),\n (10223,'S18_2581',47,100.53,9),\n (10223,'S18_2625',28,60.57,5),\n (10223,'S24_1578',32,91.29,2),\n (10223,'S24_1785',34,106.14,11),\n (10223,'S24_2000',38,69.31,6),\n (10223,'S24_4278',23,74.62,10),\n (10223,'S32_1374',21,117.87,7),\n (10223,'S32_4289',20,66.04,12),\n (10223,'S50_1341',41,46.26,13),\n (10223,'S700_1691',25,101.39,14),\n (10223,'S700_2834',29,110.34,8),\n (10223,'S700_3167',26,67.2,15),\n (10224,'S12_2823',43,141.58,6),\n (10224,'S18_3782',38,58.44,1),\n (10224,'S24_2360',37,80.34,4),\n (10224,'S32_2206',43,39.43,2),\n (10224,'S32_4485',30,111.23,5),\n (10224,'S50_4713',50,77.29,3),\n (10225,'S12_1099',27,167.33,9),\n (10225,'S12_3380',25,99.82,7),\n (10225,'S12_3990',37,77.41,10),\n (10225,'S12_4675',21,127.83,6),\n (10225,'S18_1129',32,141.54,1),\n (10225,'S18_1889',47,64.68,5),\n (10225,'S18_3232',43,149.02,2),\n (10225,'S18_3278',37,95.69,12),\n (10225,'S18_3482',27,169.04,11),\n (10225,'S18_4721',35,150.29,14),\n (10225,'S24_2972',42,36.63,3),\n (10225,'S24_3371',24,50.21,8),\n (10225,'S24_3856',40,113.75,4),\n (10225,'S24_4620',46,70.33,13),\n (10226,'S18_1589',38,109.51,4),\n (10226,'S18_1984',24,162.17,7),\n (10226,'S18_2870',24,134.64,5),\n (10226,'S18_3685',46,159.65,6),\n (10226,'S24_1046',21,60.26,1),\n (10226,'S24_1628',36,43.27,3),\n (10226,'S24_3432',48,92.09,2),\n (10227,'S18_1342',25,118.15,3),\n (10227,'S18_1367',31,48.52,2),\n (10227,'S18_1749',26,142.8,10),\n (10227,'S18_2248',28,50.85,9),\n (10227,'S18_2325',46,152.56,7),\n (10227,'S18_2795',29,192.38,4),\n (10227,'S18_3320',33,111.12,1),\n (10227,'S18_4409',34,104.91,11),\n (10227,'S18_4933',37,57.73,12),\n (10227,'S24_1937',42,29.21,6),\n (10227,'S24_2022',24,48.38,5),\n (10227,'S24_2766',47,88.14,14),\n (10227,'S24_2887',33,131.53,13),\n (10227,'S24_3191',40,79.62,15),\n (10227,'S24_3969',27,43.9,8),\n (10228,'S10_1949',29,222.87,2),\n (10228,'S18_1097',32,105,1),\n (10228,'S18_2949',24,104.35,3),\n (10228,'S18_2957',45,63.71,5),\n (10228,'S18_3136',31,102.63,4),\n (10228,'S24_4258',33,103.23,6),\n (10229,'S10_4962',50,128.53,9),\n (10229,'S12_1666',25,138.04,13),\n (10229,'S12_4473',36,125.61,1),\n (10229,'S18_2319',26,144.82,4),\n (10229,'S18_2432',28,59.55,7),\n (10229,'S18_3232',22,189.66,5),\n (10229,'S18_4600',41,115.03,10),\n (10229,'S18_4668',39,40.25,14),\n (10229,'S24_2300',48,118.84,6),\n (10229,'S24_2840',33,32.88,2),\n (10229,'S32_1268',25,111.72,8),\n (10229,'S32_2509',23,54.11,3),\n (10229,'S32_3522',30,73.04,12),\n (10229,'S700_2824',50,112.28,11),\n (10230,'S12_3148',43,163.17,1),\n (10230,'S18_2238',49,148.99,8),\n (10230,'S18_4027',42,172.34,3),\n (10230,'S24_1444',36,54.33,6),\n (10230,'S24_4048',45,105.27,5),\n (10230,'S32_3207',46,60.9,4),\n (10230,'S50_1392',34,116.91,7),\n (10230,'S50_1514',43,52.14,2),\n (10231,'S12_1108',42,199.49,2),\n (10231,'S12_3891',49,141.88,1),\n (10232,'S18_3140',22,163.91,6),\n (10232,'S18_3259',48,95.8,8),\n (10232,'S18_4522',23,89.53,5),\n (10232,'S24_2011',46,122.89,4),\n (10232,'S700_1938',26,88.34,7),\n (10232,'S700_3505',48,96.16,1),\n (10232,'S700_3962',35,82.43,2),\n (10232,'S72_3212',24,49.69,3),\n (10233,'S24_3151',40,94.71,2),\n (10233,'S700_1138',36,70.67,3),\n (10233,'S700_2610',29,82.4,1),\n (10234,'S10_4757',48,150.96,9),\n (10234,'S18_1662',50,189.23,1),\n (10234,'S18_3029',48,74.84,7),\n (10234,'S18_3856',39,125.99,6),\n (10234,'S24_2841',44,61.66,2),\n (10234,'S24_3420',25,57.2,3),\n (10234,'S24_3816',31,72.96,8),\n (10234,'S700_2047',29,87.8,5),\n (10234,'S72_1253',40,56.12,4),\n (10235,'S18_2581',24,76.03,3),\n (10235,'S24_1785',23,96.29,5),\n (10235,'S24_3949',33,60.05,12),\n (10235,'S24_4278',40,81.14,4),\n (10235,'S32_1374',41,101.89,1),\n (10235,'S32_4289',34,77.73,6),\n (10235,'S50_1341',41,35.35,7),\n (10235,'S700_1691',25,103.21,8),\n (10235,'S700_2466',38,88.75,10),\n (10235,'S700_2834',25,96.11,2),\n (10235,'S700_3167',32,92,9),\n (10235,'S700_4002',34,72.55,11),\n (10236,'S10_2016',22,129.64,1),\n (10236,'S18_2625',23,55.72,2),\n (10236,'S24_2000',36,87.6,3),\n (10237,'S10_1678',23,101.44,7),\n (10237,'S10_4698',39,180.1,9),\n (10237,'S12_2823',32,131.04,6),\n (10237,'S18_3782',26,52.22,1),\n (10237,'S24_1578',20,114.95,8),\n (10237,'S24_2360',26,79.65,4),\n (10237,'S32_2206',26,40.23,2),\n (10237,'S32_4485',27,115.32,5),\n (10237,'S50_4713',20,68.34,3),\n (10238,'S12_1099',28,206.24,3),\n (10238,'S12_3380',29,109.22,1),\n (10238,'S12_3990',20,74.21,4),\n (10238,'S18_3278',41,73.17,6),\n (10238,'S18_3482',49,133.76,5),\n (10238,'S18_4721',44,144.34,8),\n (10238,'S24_3371',47,62.45,2),\n (10238,'S24_4620',22,93.77,7),\n (10239,'S12_4675',21,93.28,5),\n (10239,'S18_1889',46,73.92,4),\n (10239,'S18_3232',47,150.71,1),\n (10239,'S24_2972',20,44.56,2),\n (10239,'S24_3856',29,154.47,3),\n (10240,'S18_1129',41,137.29,3),\n (10240,'S18_1984',37,149.36,2),\n (10240,'S18_3685',37,161.06,1),\n (10241,'S18_1589',21,119.46,11),\n (10241,'S18_1749',41,185.3,2),\n (10241,'S18_2248',33,72.65,1),\n (10241,'S18_2870',44,155.76,12),\n (10241,'S18_4409',42,90.19,3),\n (10241,'S18_4933',30,66.99,4),\n (10241,'S24_1046',22,76.43,8),\n (10241,'S24_1628',21,40.25,10),\n (10241,'S24_2766',47,94.5,6),\n (10241,'S24_2887',28,98.65,5),\n (10241,'S24_3191',26,81.33,7),\n (10241,'S24_3432',27,86.73,9),\n (10242,'S24_3969',46,36.93,1),\n (10243,'S18_2325',47,130.94,2),\n (10243,'S24_1937',33,29.54,1),\n (10244,'S18_1342',40,117.12,7),\n (10244,'S18_1367',20,58.22,6),\n (10244,'S18_2795',43,138.38,8),\n (10244,'S18_2949',30,117.52,1),\n (10244,'S18_2957',24,58.09,3),\n (10244,'S18_3136',29,115.19,2),\n (10244,'S18_3320',36,84.33,5),\n (10244,'S24_2022',39,45.25,9),\n (10244,'S24_4258',40,86.68,4),\n (10245,'S10_1949',34,180.01,9),\n (10245,'S10_4962',28,163.99,2),\n (10245,'S12_1666',38,155.8,6),\n (10245,'S18_1097',29,119,8),\n (10245,'S18_4600',21,113.82,3),\n (10245,'S18_4668',45,59.87,7),\n (10245,'S32_1268',37,111.72,1),\n (10245,'S32_3522',44,69.16,5),\n (10245,'S700_2824',44,105.2,4),\n (10246,'S12_4473',46,110.21,5),\n (10246,'S18_2238',40,163.73,4),\n (10246,'S18_2319',22,98.18,8),\n (10246,'S18_2432',30,61.99,11),\n (10246,'S18_3232',36,198.13,9),\n (10246,'S24_1444',44,52.6,2),\n (10246,'S24_2300',29,121.4,10),\n (10246,'S24_2840',49,36.07,6),\n (10246,'S24_4048',46,137.2,1),\n (10246,'S32_2509',35,48.7,7),\n (10246,'S50_1392',22,133.11,3),\n (10247,'S12_1108',44,241.05,2),\n (10247,'S12_3148',25,175.25,3),\n (10247,'S12_3891',27,153.99,1),\n (10247,'S18_4027',48,140.75,5),\n (10247,'S32_3207',40,49.71,6),\n (10247,'S50_1514',49,63.85,4),\n (10248,'S10_4757',20,145.52,3),\n (10248,'S18_3029',21,73.98,1),\n (10248,'S18_3140',32,118.83,12),\n (10248,'S18_3259',42,121.01,14),\n (10248,'S18_4522',42,75.48,11),\n (10248,'S24_2011',48,145.01,10),\n (10248,'S24_3151',30,101.79,5),\n (10248,'S24_3816',23,76.31,2),\n (10248,'S700_1138',36,71.34,6),\n (10248,'S700_1938',40,103.93,13),\n (10248,'S700_2610',32,75.89,4),\n (10248,'S700_3505',30,108.18,7),\n (10248,'S700_3962',35,90.37,8),\n (10248,'S72_3212',23,65.52,9),\n (10249,'S18_3856',46,121.75,5),\n (10249,'S24_2841',20,67.82,1),\n (10249,'S24_3420',25,69.7,2),\n (10249,'S700_2047',40,95.95,4),\n (10249,'S72_1253',32,57.61,3),\n (10250,'S18_1662',45,181.34,14),\n (10250,'S18_2581',27,98.84,4),\n (10250,'S24_1785',31,88.63,6),\n (10250,'S24_2000',32,87.6,1),\n (10250,'S24_3949',40,75.06,13),\n (10250,'S24_4278',37,74.62,5),\n (10250,'S32_1374',31,105.88,2),\n (10250,'S32_4289',50,61.22,7),\n (10250,'S50_1341',36,51.93,8),\n (10250,'S700_1691',31,91.34,9),\n (10250,'S700_2466',35,111.69,11),\n (10250,'S700_2834',44,137.63,3),\n (10250,'S700_3167',44,67.2,10),\n (10250,'S700_4002',38,62.19,12),\n (10251,'S10_1678',28,113.88,2),\n (10251,'S10_2016',44,130.83,5),\n (10251,'S10_4698',43,164.61,4),\n (10251,'S12_2823',46,164.18,1),\n (10251,'S18_2625',29,61.18,6),\n (10251,'S24_1578',26,101.43,3),\n (10252,'S18_3278',20,76.39,2),\n (10252,'S18_3482',41,164.63,1),\n (10252,'S18_3782',31,52.84,5),\n (10252,'S18_4721',26,136.9,4),\n (10252,'S24_2360',47,65.8,8),\n (10252,'S24_4620',38,87.31,3),\n (10252,'S32_2206',36,48.28,6),\n (10252,'S32_4485',25,113.28,9),\n (10252,'S50_4713',48,72.41,7),\n (10253,'S12_1099',24,163.44,13),\n (10253,'S12_3380',22,109.22,11),\n (10253,'S12_3990',25,90.17,14),\n (10253,'S12_4675',41,119.77,10),\n (10253,'S18_1129',26,117.48,5),\n (10253,'S18_1589',24,140.62,1),\n (10253,'S18_1889',23,83.93,9),\n (10253,'S18_1984',33,135.14,4),\n (10253,'S18_2870',37,139.92,2),\n (10253,'S18_3232',40,169.34,6),\n (10253,'S18_3685',31,129.98,3),\n (10253,'S24_2972',40,42.67,7),\n (10253,'S24_3371',24,52.66,12),\n (10253,'S24_3856',39,132,8),\n (10254,'S18_1749',49,142.8,5),\n (10254,'S18_2248',36,63.57,4),\n (10254,'S18_2325',41,110.6,2),\n (10254,'S18_4409',34,92.95,6),\n (10254,'S18_4933',30,57.73,7),\n (10254,'S24_1046',34,64.67,11),\n (10254,'S24_1628',32,60.37,13),\n (10254,'S24_1937',38,26.88,1),\n (10254,'S24_2766',31,100.87,9),\n (10254,'S24_2887',33,96.3,8),\n (10254,'S24_3191',42,96.74,10),\n (10254,'S24_3432',49,100.66,12),\n (10254,'S24_3969',20,43.49,3),\n (10255,'S18_2795',24,155.25,1),\n (10255,'S24_2022',37,45.7,2),\n (10256,'S18_1342',34,95.55,2),\n (10256,'S18_1367',29,51.75,1),\n (10257,'S18_2949',50,88.14,1),\n (10257,'S18_2957',49,53.72,3),\n (10257,'S18_3136',37,84.82,2),\n (10257,'S18_3320',26,89.29,5),\n (10257,'S24_4258',46,78.89,4),\n (10258,'S10_1949',32,240.02,6),\n (10258,'S12_1666',41,162.64,3),\n (10258,'S18_1097',41,133,5),\n (10258,'S18_4668',21,59.87,4),\n (10258,'S32_3522',20,61.41,2),\n (10258,'S700_2824',45,80.92,1),\n (10259,'S10_4962',26,155.13,12),\n (10259,'S12_4473',46,142.2,4),\n (10259,'S18_2238',30,189.93,3),\n (10259,'S18_2319',34,99.41,7),\n (10259,'S18_2432',30,49.22,10),\n (10259,'S18_3232',27,135.47,8),\n (10259,'S18_4600',41,113.82,13),\n (10259,'S24_1444',28,46.82,1),\n (10259,'S24_2300',47,112.46,9),\n (10259,'S24_2840',31,33.24,5),\n (10259,'S32_1268',45,86.68,11),\n (10259,'S32_2509',40,43.83,6),\n (10259,'S50_1392',29,105.33,2),\n (10260,'S12_1108',46,228.58,5),\n (10260,'S12_3148',30,170.72,6),\n (10260,'S12_3891',44,171.29,4),\n (10260,'S18_3140',32,131.13,1),\n (10260,'S18_3259',29,88.74,3),\n (10260,'S18_4027',23,155.11,8),\n (10260,'S24_4048',23,102.9,10),\n (10260,'S32_3207',27,57.17,9),\n (10260,'S50_1514',21,55.65,7),\n (10260,'S700_1938',33,85.74,2),\n (10261,'S10_4757',27,125.12,1),\n (10261,'S18_4522',20,89.53,9),\n (10261,'S24_2011',36,125.35,8),\n (10261,'S24_3151',22,91.17,3),\n (10261,'S700_1138',34,62,4),\n (10261,'S700_2610',44,68.67,2),\n (10261,'S700_3505',25,88.15,5),\n (10261,'S700_3962',50,81.43,6),\n (10261,'S72_3212',29,50.78,7),\n (10262,'S18_1662',49,134.04,9),\n (10262,'S18_3029',32,84.3,15),\n (10262,'S18_3856',34,120.69,14),\n (10262,'S24_1785',34,97.38,1),\n (10262,'S24_2841',24,67.14,10),\n (10262,'S24_3420',46,70.35,11),\n (10262,'S24_3816',49,87.21,16),\n (10262,'S24_3949',48,61.42,8),\n (10262,'S32_4289',40,79.11,2),\n (10262,'S50_1341',49,37.97,3),\n (10262,'S700_1691',40,84.03,4),\n (10262,'S700_2047',44,94.14,13),\n (10262,'S700_2466',33,90.75,6),\n (10262,'S700_3167',27,76,5),\n (10262,'S700_4002',35,71.07,7),\n (10262,'S72_1253',21,57.11,12),\n (10263,'S10_1678',34,108.14,2),\n (10263,'S10_2016',40,111.8,5),\n (10263,'S10_4698',41,203.34,4),\n (10263,'S12_2823',48,134.05,1),\n (10263,'S18_2581',33,86.17,10),\n (10263,'S18_2625',34,58.75,6),\n (10263,'S24_1578',42,102.56,3),\n (10263,'S24_2000',37,62.46,7),\n (10263,'S24_4278',24,75.35,11),\n (10263,'S32_1374',31,79.91,8),\n (10263,'S700_2834',47,116.28,9),\n (10264,'S18_3782',48,54.71,3),\n (10264,'S18_4721',20,120.53,2),\n (10264,'S24_2360',37,65.1,6),\n (10264,'S24_4620',47,83.27,1),\n (10264,'S32_2206',20,32.59,4),\n (10264,'S32_4485',34,97.97,7),\n (10264,'S50_4713',47,89.5,5),\n (10265,'S18_3278',45,86.84,2),\n (10265,'S18_3482',49,171.98,1),\n (10266,'S12_1099',44,208.19,14),\n (10266,'S12_3380',22,111.57,12),\n (10266,'S12_3990',35,76.61,15),\n (10266,'S12_4675',40,111.71,11),\n (10266,'S18_1129',21,120.31,6),\n (10266,'S18_1589',36,144.35,2),\n (10266,'S18_1889',33,74.69,10),\n (10266,'S18_1984',49,126.6,5),\n (10266,'S18_2870',20,141.24,3),\n (10266,'S18_3232',29,165.95,7),\n (10266,'S18_3685',33,152.58,4),\n (10266,'S24_1628',28,48.3,1),\n (10266,'S24_2972',34,40.4,8),\n (10266,'S24_3371',47,62.45,13),\n (10266,'S24_3856',24,122.17,9),\n (10267,'S18_4933',36,75.55,1),\n (10267,'S24_1046',40,80.1,5),\n (10267,'S24_2766',38,87.24,3),\n (10267,'S24_2887',43,108.04,2),\n (10267,'S24_3191',44,96.74,4),\n (10267,'S24_3432',43,118.86,6),\n (10268,'S18_1342',49,117.12,3),\n (10268,'S18_1367',26,64.69,2),\n (10268,'S18_1749',34,161.5,10),\n (10268,'S18_2248',31,49.04,9),\n (10268,'S18_2325',50,105.52,7),\n (10268,'S18_2795',35,151.88,4),\n (10268,'S18_3320',39,89.29,1),\n (10268,'S18_4409',35,87.43,11),\n (10268,'S24_1937',33,38.83,6),\n (10268,'S24_2022',40,46.14,5),\n (10268,'S24_3969',30,40.62,8),\n (10269,'S18_2957',32,63.08,1),\n (10269,'S24_4258',48,97.39,2),\n (10270,'S10_1949',21,233.59,9),\n (10270,'S10_4962',32,134.44,2),\n (10270,'S12_1666',28,146.24,6),\n (10270,'S18_1097',43,96.84,8),\n (10270,'S18_2949',31,96.24,10),\n (10270,'S18_3136',38,125.66,11),\n (10270,'S18_4600',38,141.66,3),\n (10270,'S18_4668',44,58.36,7),\n (10270,'S32_1268',32,85.72,1),\n (10270,'S32_3522',21,63.35,5),\n (10270,'S700_2824',46,88,4),\n (10271,'S12_4473',31,97.17,5),\n (10271,'S18_2238',50,183.38,4),\n (10271,'S18_2319',50,101.87,8),\n (10271,'S18_2432',25,69.28,11),\n (10271,'S18_3232',20,196.43,9),\n (10271,'S24_1444',45,64.74,2),\n (10271,'S24_2300',43,130.35,10),\n (10271,'S24_2840',38,41.72,6),\n (10271,'S24_4048',22,139.57,1),\n (10271,'S32_2509',35,47.62,7),\n (10271,'S50_1392',34,98.39,3),\n (10272,'S12_1108',35,166.24,2),\n (10272,'S12_3148',27,158.63,3),\n (10272,'S12_3891',39,204.16,1),\n (10272,'S18_4027',25,149.36,5),\n (10272,'S32_3207',45,64.63,6),\n (10272,'S50_1514',43,56.82,4),\n (10273,'S10_4757',30,116.96,4),\n (10273,'S18_3029',34,98.06,2),\n (10273,'S18_3140',40,125.66,13),\n (10273,'S18_3259',47,115.97,15),\n (10273,'S18_3856',50,85.75,1),\n (10273,'S18_4522',33,71.09,12),\n (10273,'S24_2011',22,126.58,11),\n (10273,'S24_3151',27,103.56,6),\n (10273,'S24_3816',48,83.02,3),\n (10273,'S700_1138',21,65.34,7),\n (10273,'S700_1938',21,102.2,14),\n (10273,'S700_2610',42,62.16,5),\n (10273,'S700_3505',40,86.15,8),\n (10273,'S700_3962',26,114.21,9),\n (10273,'S72_3212',37,45.86,10),\n (10274,'S18_1662',41,164,1),\n (10274,'S24_2841',40,65.08,2),\n (10274,'S24_3420',24,72.33,3),\n (10274,'S700_2047',24,90.52,5),\n (10274,'S72_1253',32,58.6,4),\n (10275,'S10_1678',45,92.83,1),\n (10275,'S10_2016',22,132.02,4),\n (10275,'S10_4698',36,191.72,3),\n (10275,'S18_2581',35,90.39,9),\n (10275,'S18_2625',37,63.6,5),\n (10275,'S24_1578',21,102.56,2),\n (10275,'S24_1785',25,95.2,11),\n (10275,'S24_2000',30,79.98,6),\n (10275,'S24_3949',41,81.89,18),\n (10275,'S24_4278',27,62.31,10),\n (10275,'S32_1374',23,81.91,7),\n (10275,'S32_4289',28,63.97,12),\n (10275,'S50_1341',38,45.39,13),\n (10275,'S700_1691',32,89.51,14),\n (10275,'S700_2466',39,114.68,16),\n (10275,'S700_2834',48,132.89,8),\n (10275,'S700_3167',43,73.6,15),\n (10275,'S700_4002',31,72.55,17),\n (10276,'S12_1099',50,192.62,3),\n (10276,'S12_2823',43,120.5,14),\n (10276,'S12_3380',47,116.27,1),\n (10276,'S12_3990',38,83.79,4),\n (10276,'S18_3278',38,69.96,6),\n (10276,'S18_3482',30,130.82,5),\n (10276,'S18_3782',33,50.36,9),\n (10276,'S18_4721',48,119.04,8),\n (10276,'S24_2360',46,75.49,12),\n (10276,'S24_3371',20,61.23,2),\n (10276,'S24_4620',48,75.18,7),\n (10276,'S32_2206',27,36.61,10),\n (10276,'S32_4485',38,113.28,13),\n (10276,'S50_4713',21,70.78,11),\n (10277,'S12_4675',28,111.71,1),\n (10278,'S18_1129',34,137.29,6),\n (10278,'S18_1589',23,113.24,2),\n (10278,'S18_1889',29,90.86,10),\n (10278,'S18_1984',29,129.45,5),\n (10278,'S18_2870',39,110.88,3),\n (10278,'S18_3232',42,152.41,7),\n (10278,'S18_3685',31,132.8,4),\n (10278,'S24_1628',35,45.28,1),\n (10278,'S24_2972',31,38.89,8),\n (10278,'S24_3856',25,126.39,9),\n (10279,'S18_4933',26,60.58,1),\n (10279,'S24_1046',32,74.96,5),\n (10279,'S24_2766',49,79.97,3),\n (10279,'S24_2887',48,116.27,2),\n (10279,'S24_3191',33,71.06,4),\n (10279,'S24_3432',48,128.5,6),\n (10280,'S10_1949',34,235.73,2),\n (10280,'S18_1097',24,116.67,1),\n (10280,'S18_1342',50,104.79,9),\n (10280,'S18_1367',27,57.68,8),\n (10280,'S18_1749',26,141.1,16),\n (10280,'S18_2248',25,62.96,15),\n (10280,'S18_2325',37,128.4,13),\n (10280,'S18_2795',22,202.5,10),\n (10280,'S18_2949',46,111.44,3),\n (10280,'S18_2957',43,68.71,5),\n (10280,'S18_3136',29,103.67,4),\n (10280,'S18_3320',34,102.19,7),\n (10280,'S18_4409',35,105.83,17),\n (10280,'S24_1937',20,28.88,12),\n (10280,'S24_2022',45,47.49,11),\n (10280,'S24_3969',33,41.85,14),\n (10280,'S24_4258',21,78.89,6),\n (10281,'S10_4962',44,159.56,9),\n (10281,'S12_1666',25,117.54,13),\n (10281,'S12_4473',41,127.98,1),\n (10281,'S18_2319',48,120.28,4),\n (10281,'S18_2432',29,57.73,7),\n (10281,'S18_3232',25,167.65,5),\n (10281,'S18_4600',25,99.29,10),\n (10281,'S18_4668',44,59.87,14),\n (10281,'S24_2300',25,111.18,6),\n (10281,'S24_2840',20,40.66,2),\n (10281,'S32_1268',29,82.83,8),\n (10281,'S32_2509',31,55.19,3),\n (10281,'S32_3522',36,77.57,12),\n (10281,'S700_2824',27,85.98,11),\n (10282,'S12_1108',41,172.47,5),\n (10282,'S12_3148',27,161.66,6),\n (10282,'S12_3891',24,157.45,4),\n (10282,'S18_2238',23,140.81,13),\n (10282,'S18_3140',43,155.71,1),\n (10282,'S18_3259',36,115.97,3),\n (10282,'S18_4027',31,150.8,8),\n (10282,'S24_1444',29,46.82,11),\n (10282,'S24_4048',39,123.01,10),\n (10282,'S32_3207',36,59.65,9),\n (10282,'S50_1392',38,113.44,12),\n (10282,'S50_1514',37,66.78,7),\n (10282,'S700_1938',43,86.61,2),\n (10283,'S10_4757',25,119.68,6),\n (10283,'S18_3029',21,98.06,4),\n (10283,'S18_3856',46,125.99,3),\n (10283,'S18_4522',34,105.32,14),\n (10283,'S24_2011',42,126.58,13),\n (10283,'S24_3151',34,92.94,8),\n (10283,'S24_3816',33,72.96,5),\n (10283,'S700_1138',45,78.67,9),\n (10283,'S700_2047',20,94.14,2),\n (10283,'S700_2610',47,65.77,7),\n (10283,'S700_3505',22,88.15,10),\n (10283,'S700_3962',38,89.38,11),\n (10283,'S72_1253',43,57.61,1),\n (10283,'S72_3212',33,51.32,12),\n (10284,'S18_1662',45,127.73,11),\n (10284,'S18_2581',31,71.81,1),\n (10284,'S24_1785',22,105.04,3),\n (10284,'S24_2841',30,73.99,12),\n (10284,'S24_3420',39,71.67,13),\n (10284,'S24_3949',21,55.96,10),\n (10284,'S24_4278',21,71,2),\n (10284,'S32_4289',50,81.86,4),\n (10284,'S50_1341',33,51.93,5),\n (10284,'S700_1691',24,83.12,6),\n (10284,'S700_2466',45,101.71,8),\n (10284,'S700_3167',25,69.6,7),\n (10284,'S700_4002',32,64.41,9),\n (10285,'S10_1678',36,113.88,6),\n (10285,'S10_2016',47,137.97,9),\n (10285,'S10_4698',27,201.41,8),\n (10285,'S12_2823',49,140.08,5),\n (10285,'S18_2625',20,49.06,10),\n (10285,'S24_1578',34,109.32,7),\n (10285,'S24_2000',39,70.08,11),\n (10285,'S24_2360',38,59.56,3),\n (10285,'S32_1374',37,98.89,12),\n (10285,'S32_2206',37,41.03,1),\n (10285,'S32_4485',26,100.01,4),\n (10285,'S50_4713',39,78.92,2),\n (10285,'S700_2834',45,119.84,13),\n (10286,'S18_3782',38,57.2,1),\n (10287,'S12_1099',21,163.44,12),\n (10287,'S12_3380',45,105.7,10),\n (10287,'S12_3990',41,69.43,13),\n (10287,'S12_4675',23,116.31,9),\n (10287,'S18_1129',41,158.52,4),\n (10287,'S18_1889',44,82.39,8),\n (10287,'S18_1984',24,146.52,3),\n (10287,'S18_2870',44,114.84,1),\n (10287,'S18_3232',36,162.57,5),\n (10287,'S18_3278',43,70.76,15),\n (10287,'S18_3482',40,169.04,14),\n (10287,'S18_3685',27,159.65,2),\n (10287,'S18_4721',34,126.48,17),\n (10287,'S24_2972',36,39.65,6),\n (10287,'S24_3371',20,67.97,11),\n (10287,'S24_3856',36,119.37,7),\n (10287,'S24_4620',40,88.12,16),\n (10288,'S18_1589',20,146.84,14),\n (10288,'S18_1749',32,183.6,5),\n (10288,'S18_2248',28,61.75,4),\n (10288,'S18_2325',31,123.32,2),\n (10288,'S18_4409',35,80.99,6),\n (10288,'S18_4933',23,73.41,7),\n (10288,'S24_1046',36,66.14,11),\n (10288,'S24_1628',50,52.32,13),\n (10288,'S24_1937',29,38.17,1),\n (10288,'S24_2766',35,80.87,9),\n (10288,'S24_2887',48,136.23,8),\n (10288,'S24_3191',34,68.49,10),\n (10288,'S24_3432',41,118.86,12),\n (10288,'S24_3969',33,40.62,3),\n (10289,'S18_1342',38,120.21,2),\n (10289,'S18_1367',24,56.07,1),\n (10289,'S18_2795',43,192.38,3),\n (10289,'S24_2022',45,48.38,4),\n (10290,'S18_3320',26,96.23,2),\n (10290,'S24_4258',45,114.92,1),\n (10291,'S10_1949',37,192.87,11),\n (10291,'S10_4962',30,128.53,4),\n (10291,'S12_1666',41,155.8,8),\n (10291,'S18_1097',41,114.34,10),\n (10291,'S18_2432',26,57.73,2),\n (10291,'S18_2949',47,121.57,12),\n (10291,'S18_2957',37,50.59,14),\n (10291,'S18_3136',23,124.62,13),\n (10291,'S18_4600',48,110.18,5),\n (10291,'S18_4668',29,51.82,9),\n (10291,'S24_2300',48,112.46,1),\n (10291,'S32_1268',26,83.79,3),\n (10291,'S32_3522',32,71.75,7),\n (10291,'S700_2824',28,116.32,6),\n (10292,'S12_4473',21,105.47,8),\n (10292,'S18_2238',26,175.19,7),\n (10292,'S18_2319',41,110.46,11),\n (10292,'S18_3232',21,135.47,12),\n (10292,'S18_4027',44,162.29,2),\n (10292,'S24_1444',40,53.75,5),\n (10292,'S24_2840',39,30.06,9),\n (10292,'S24_4048',27,141.94,4),\n (10292,'S32_2509',50,46.53,10),\n (10292,'S32_3207',31,67.73,3),\n (10292,'S50_1392',41,121.54,6),\n (10292,'S50_1514',35,55.07,1),\n (10293,'S12_1108',46,182.86,8),\n (10293,'S12_3148',24,176.76,9),\n (10293,'S12_3891',45,183.4,7),\n (10293,'S18_3140',24,117.47,4),\n (10293,'S18_3259',22,109.92,6),\n (10293,'S18_4522',49,100.94,3),\n (10293,'S24_2011',21,140.09,2),\n (10293,'S700_1938',29,71.89,5),\n (10293,'S72_3212',32,60.06,1),\n (10294,'S700_3962',45,104.28,1),\n (10295,'S10_4757',24,142.8,1),\n (10295,'S24_3151',46,84.97,3),\n (10295,'S700_1138',26,75.34,4),\n (10295,'S700_2610',44,58.55,2),\n (10295,'S700_3505',34,102.17,5),\n (10296,'S18_1662',36,157.69,7),\n (10296,'S18_3029',21,96.34,13),\n (10296,'S18_3856',22,84.7,12),\n (10296,'S24_2841',21,71.25,8),\n (10296,'S24_3420',31,53.92,9),\n (10296,'S24_3816',22,77.15,14),\n (10296,'S24_3949',32,71.65,6),\n (10296,'S50_1341',26,48.44,1),\n (10296,'S700_1691',42,102.3,2),\n (10296,'S700_2047',34,102.29,11),\n (10296,'S700_2466',24,101.71,4),\n (10296,'S700_3167',22,80.8,3),\n (10296,'S700_4002',47,86.62,5),\n (10296,'S72_1253',21,45.19,10),\n (10297,'S18_2581',25,82.79,4),\n (10297,'S24_1785',32,126.93,6),\n (10297,'S24_2000',32,65.51,1),\n (10297,'S24_4278',23,72.45,5),\n (10297,'S32_1374',26,109.88,2),\n (10297,'S32_4289',28,79.8,7),\n (10297,'S700_2834',35,113.9,3),\n (10298,'S10_2016',39,96.34,1),\n (10298,'S18_2625',32,48.46,2),\n (10299,'S10_1678',23,112.93,9),\n (10299,'S10_4698',29,230.46,11),\n (10299,'S12_2823',24,173.21,8),\n (10299,'S18_3782',39,55.95,3),\n (10299,'S18_4721',49,162.19,2),\n (10299,'S24_1578',47,116.08,10),\n (10299,'S24_2360',33,66.49,6),\n (10299,'S24_4620',32,80.84,1),\n (10299,'S32_2206',24,42.24,4),\n (10299,'S32_4485',38,115.32,7),\n (10299,'S50_4713',44,80.55,5),\n (10300,'S12_1099',33,167.33,5),\n (10300,'S12_3380',29,137.4,3),\n (10300,'S12_3990',22,76.61,6),\n (10300,'S12_4675',23,122.07,2),\n (10300,'S18_1889',41,92.4,1),\n (10300,'S18_3278',49,78.8,8),\n (10300,'S18_3482',23,164.63,7),\n (10300,'S24_3371',31,58.78,4),\n (10301,'S18_1129',37,159.94,8),\n (10301,'S18_1589',32,107.02,4),\n (10301,'S18_1984',47,159.32,7),\n (10301,'S18_2870',22,146.52,5),\n (10301,'S18_3232',23,174.42,9),\n (10301,'S18_3685',39,165.3,6),\n (10301,'S24_1046',27,72.02,1),\n (10301,'S24_1628',22,51.32,3),\n (10301,'S24_2972',48,34.36,10),\n (10301,'S24_3432',22,96.37,2),\n (10301,'S24_3856',50,154.47,11),\n (10302,'S18_1749',43,170,1),\n (10302,'S18_4409',38,89.27,2),\n (10302,'S18_4933',23,72.7,3),\n (10302,'S24_2766',49,108.14,5),\n (10302,'S24_2887',45,123.31,4),\n (10302,'S24_3191',48,74.48,6),\n (10303,'S18_2248',46,49.04,2),\n (10303,'S24_3969',24,40.21,1),\n (10304,'S10_1949',47,216.44,6),\n (10304,'S12_1666',39,164,3),\n (10304,'S18_1097',46,98,5),\n (10304,'S18_1342',37,95.55,13),\n (10304,'S18_1367',37,48.52,12),\n (10304,'S18_2325',24,101.7,17),\n (10304,'S18_2795',20,178.88,14),\n (10304,'S18_2949',46,100.3,7),\n (10304,'S18_2957',24,64.96,9),\n (10304,'S18_3136',26,85.87,8),\n (10304,'S18_3320',38,104.17,11),\n (10304,'S18_4668',34,49.3,4),\n (10304,'S24_1937',23,30.2,16),\n (10304,'S24_2022',44,39.42,15),\n (10304,'S24_4258',33,101.29,10),\n (10304,'S32_3522',36,73.04,2),\n (10304,'S700_2824',40,105.2,1),\n (10305,'S10_4962',38,175.81,13),\n (10305,'S12_4473',38,125.61,5),\n (10305,'S18_2238',27,145.72,4),\n (10305,'S18_2319',36,133.78,8),\n (10305,'S18_2432',41,53.48,11),\n (10305,'S18_3232',37,201.51,9),\n (10305,'S18_4600',22,99.29,14),\n (10305,'S24_1444',45,61.85,2),\n (10305,'S24_2300',24,132.9,10),\n (10305,'S24_2840',48,31.47,6),\n (10305,'S24_4048',36,128.93,1),\n (10305,'S32_1268',28,112.68,12),\n (10305,'S32_2509',40,57.9,7),\n (10305,'S50_1392',42,109.96,3),\n (10306,'S12_1108',31,211.96,13),\n (10306,'S12_3148',34,146.55,14),\n (10306,'S12_3891',20,181.67,12),\n (10306,'S18_3140',32,117.47,9),\n (10306,'S18_3259',40,91.76,11),\n (10306,'S18_4027',23,156.55,16),\n (10306,'S18_4522',39,90.4,8),\n (10306,'S24_2011',29,110.6,7),\n (10306,'S24_3151',31,84.08,2),\n (10306,'S32_3207',46,50.33,17),\n (10306,'S50_1514',34,60.34,15),\n (10306,'S700_1138',50,54,3),\n (10306,'S700_1938',38,91.81,10),\n (10306,'S700_2610',43,75.17,1),\n (10306,'S700_3505',32,90.15,4),\n (10306,'S700_3962',30,117.19,5),\n (10306,'S72_3212',35,59.51,6),\n (10307,'S10_4757',22,122.4,9),\n (10307,'S18_1662',39,189.23,1),\n (10307,'S18_3029',31,83.44,7),\n (10307,'S18_3856',48,86.81,6),\n (10307,'S24_2841',25,75.36,2),\n (10307,'S24_3420',22,71.67,3),\n (10307,'S24_3816',22,91.41,8),\n (10307,'S700_2047',34,97.76,5),\n (10307,'S72_1253',34,53.63,4),\n (10308,'S10_2016',34,118.94,2),\n (10308,'S10_4698',20,228.52,1),\n (10308,'S18_2581',27,82.79,7),\n (10308,'S18_2625',34,52.09,3),\n (10308,'S24_1785',31,112.7,9),\n (10308,'S24_2000',47,63.22,4),\n (10308,'S24_3949',43,76.43,16),\n (10308,'S24_4278',44,83.32,8),\n (10308,'S32_1374',24,79.91,5),\n (10308,'S32_4289',46,66.04,10),\n (10308,'S50_1341',47,43.64,11),\n (10308,'S700_1691',21,105.95,12),\n (10308,'S700_2466',35,88.75,14),\n (10308,'S700_2834',31,129.33,6),\n (10308,'S700_3167',21,87.2,13),\n (10308,'S700_4002',39,68.11,15),\n (10309,'S10_1678',41,107.18,5),\n (10309,'S12_2823',26,179.24,4),\n (10309,'S24_1578',21,126.22,6),\n (10309,'S24_2360',24,56.1,2),\n (10309,'S32_4485',50,84.7,3),\n (10309,'S50_4713',28,88.68,1),\n (10310,'S12_1099',33,210.14,10),\n (10310,'S12_3380',24,129.18,8),\n (10310,'S12_3990',49,81.4,11),\n (10310,'S12_4675',25,100.19,7),\n (10310,'S18_1129',37,168.43,2);\nINSERT INTO `classicmodels`.`OrderDetail` (`orderNumber`,`productCode`,`quantityOrdered`,`priceEach`,`orderLineNumber`) VALUES \n (10310,'S18_1889',20,91.63,6),\n (10310,'S18_1984',24,143.67,1),\n (10310,'S18_3232',48,186.27,3),\n (10310,'S18_3278',27,80.41,13),\n (10310,'S18_3482',49,127.88,12),\n (10310,'S18_3782',42,67.14,16),\n (10310,'S18_4721',40,133.92,15),\n (10310,'S24_2972',33,41.91,4),\n (10310,'S24_3371',38,56.94,9),\n (10310,'S24_3856',45,122.17,5),\n (10310,'S24_4620',49,97.01,14),\n (10310,'S32_2206',36,43.05,17),\n (10311,'S18_1589',29,100.8,9),\n (10311,'S18_2870',43,122.76,10),\n (10311,'S18_3685',32,113.02,11),\n (10311,'S18_4409',41,81.91,1),\n (10311,'S18_4933',25,66.99,2),\n (10311,'S24_1046',26,87.45,6),\n (10311,'S24_1628',45,49.3,8),\n (10311,'S24_2766',28,93.6,4),\n (10311,'S24_2887',43,106.87,3),\n (10311,'S24_3191',25,83.04,5),\n (10311,'S24_3432',46,92.09,7),\n (10312,'S10_1949',48,242.16,3),\n (10312,'S18_1097',32,130.67,2),\n (10312,'S18_1342',43,89.38,10),\n (10312,'S18_1367',25,44.21,9),\n (10312,'S18_1749',48,168.3,17),\n (10312,'S18_2248',30,61.15,16),\n (10312,'S18_2325',31,152.56,14),\n (10312,'S18_2795',25,155.25,11),\n (10312,'S18_2949',37,100.3,4),\n (10312,'S18_2957',35,53.72,6),\n (10312,'S18_3136',38,117.29,5),\n (10312,'S18_3320',33,107.15,8),\n (10312,'S18_4668',39,56.85,1),\n (10312,'S24_1937',39,29.54,13),\n (10312,'S24_2022',23,37.63,12),\n (10312,'S24_3969',31,35.29,15),\n (10312,'S24_4258',44,111.02,7),\n (10313,'S10_4962',40,166.95,7),\n (10313,'S12_1666',21,127.1,11),\n (10313,'S18_2319',29,117.82,2),\n (10313,'S18_2432',34,52.87,5),\n (10313,'S18_3232',25,182.89,3),\n (10313,'S18_4600',28,102.92,8),\n (10313,'S24_2300',42,132.9,4),\n (10313,'S32_1268',27,87.64,6),\n (10313,'S32_2509',38,45.45,1),\n (10313,'S32_3522',34,56.24,10),\n (10313,'S700_2824',30,99.13,9),\n (10314,'S12_1108',38,209.88,5),\n (10314,'S12_3148',46,138.99,6),\n (10314,'S12_3891',36,192.05,4),\n (10314,'S12_4473',45,137.46,14),\n (10314,'S18_2238',42,137.53,13),\n (10314,'S18_3140',20,136.59,1),\n (10314,'S18_3259',23,107.9,3),\n (10314,'S18_4027',29,145.06,8),\n (10314,'S24_1444',44,53.18,11),\n (10314,'S24_2840',39,37.13,15),\n (10314,'S24_4048',38,105.27,10),\n (10314,'S32_3207',35,66.49,9),\n (10314,'S50_1392',28,121.54,12),\n (10314,'S50_1514',38,61.51,7),\n (10314,'S700_1938',23,76.22,2),\n (10315,'S18_4522',36,100.06,7),\n (10315,'S24_2011',35,120.43,6),\n (10315,'S24_3151',24,86.74,1),\n (10315,'S700_1138',41,62,2),\n (10315,'S700_3505',31,86.15,3),\n (10315,'S700_3962',37,91.37,4),\n (10315,'S72_3212',40,55.69,5),\n (10316,'S10_4757',33,125.12,17),\n (10316,'S18_1662',27,137.19,9),\n (10316,'S18_3029',21,94.62,15),\n (10316,'S18_3856',47,86.81,14),\n (10316,'S24_1785',25,114.89,1),\n (10316,'S24_2841',34,63.71,10),\n (10316,'S24_3420',47,76.93,11),\n (10316,'S24_3816',25,92.25,16),\n (10316,'S24_3949',30,77.79,8),\n (10316,'S32_4289',24,59.16,2),\n (10316,'S50_1341',34,47.57,3),\n (10316,'S700_1691',34,82.21,4),\n (10316,'S700_2047',45,93.24,13),\n (10316,'S700_2466',23,117.67,6),\n (10316,'S700_2610',48,74.45,18),\n (10316,'S700_3167',48,75.2,5),\n (10316,'S700_4002',44,62.19,7),\n (10316,'S72_1253',34,43.7,12),\n (10317,'S24_4278',35,83.32,1),\n (10318,'S10_1678',46,94.74,1),\n (10318,'S10_2016',45,123.7,4),\n (10318,'S10_4698',37,207.22,3),\n (10318,'S18_2581',31,100.53,9),\n (10318,'S18_2625',42,52.7,5),\n (10318,'S24_1578',48,134.11,2),\n (10318,'S24_2000',26,86.83,6),\n (10318,'S32_1374',47,112.88,7),\n (10318,'S700_2834',50,142.38,8),\n (10319,'S12_2823',30,137.06,9),\n (10319,'S18_3278',46,73.98,1),\n (10319,'S18_3782',44,59.06,4),\n (10319,'S18_4721',45,175.58,3),\n (10319,'S24_2360',31,81.73,7),\n (10319,'S24_4620',43,85.69,2),\n (10319,'S32_2206',29,38.22,5),\n (10319,'S32_4485',22,119.4,8),\n (10319,'S50_4713',45,77.29,6),\n (10320,'S12_1099',31,221.81,3),\n (10320,'S12_3380',35,138.58,1),\n (10320,'S12_3990',38,73.42,4),\n (10320,'S18_3482',25,139.64,5),\n (10320,'S24_3371',26,61.23,2),\n (10321,'S12_4675',24,124.37,15),\n (10321,'S18_1129',41,141.54,10),\n (10321,'S18_1589',44,102.04,6),\n (10321,'S18_1889',37,78.54,14),\n (10321,'S18_1984',25,149.36,9),\n (10321,'S18_2870',27,105.6,7),\n (10321,'S18_3232',33,172.73,11),\n (10321,'S18_3685',28,151.17,8),\n (10321,'S24_1046',30,70.55,3),\n (10321,'S24_1628',48,42.26,5),\n (10321,'S24_2766',30,72.7,1),\n (10321,'S24_2972',37,33.23,12),\n (10321,'S24_3191',39,84.75,2),\n (10321,'S24_3432',21,89.95,4),\n (10321,'S24_3856',26,155.88,13),\n (10322,'S10_1949',40,150.01,1),\n (10322,'S10_4962',46,61.99,8),\n (10322,'S12_1666',27,177.19,9),\n (10322,'S18_1097',22,102.32,10),\n (10322,'S18_1342',43,86.3,14),\n (10322,'S18_1367',41,57.68,5),\n (10322,'S18_2325',50,250.73,6),\n (10322,'S18_2432',35,61.21,11),\n (10322,'S18_2795',36,161.04,2),\n (10322,'S18_2949',33,106.81,12),\n (10322,'S18_2957',41,29.87,13),\n (10322,'S18_3136',48,47.04,7),\n (10322,'S24_1937',20,131.2,3),\n (10322,'S24_2022',30,116.67,4),\n (10323,'S18_3320',33,91.27,2),\n (10323,'S18_4600',47,131.98,1),\n (10324,'S12_3148',27,54.33,1),\n (10324,'S12_4473',26,58.38,7),\n (10324,'S18_2238',47,153.35,8),\n (10324,'S18_2319',33,37.48,10),\n (10324,'S18_3232',27,116.87,12),\n (10324,'S18_4027',49,109.79,13),\n (10324,'S18_4668',38,179.79,6),\n (10324,'S24_1444',25,69.16,14),\n (10324,'S24_2300',31,123.24,2),\n (10324,'S24_2840',30,111.27,9),\n (10324,'S24_4258',33,189.93,3),\n (10324,'S32_1268',20,98.18,11),\n (10324,'S32_3522',48,171.03,4),\n (10324,'S700_2824',34,124.95,5),\n (10325,'S10_4757',47,64.93,6),\n (10325,'S12_1108',42,64,8),\n (10325,'S12_3891',24,107.65,1),\n (10325,'S18_3140',24,69.12,9),\n (10325,'S24_4048',44,121.04,5),\n (10325,'S32_2509',38,232.74,3),\n (10325,'S32_3207',28,192.05,2),\n (10325,'S50_1392',38,136.59,4),\n (10325,'S50_1514',44,134.84,7),\n (10326,'S18_3259',32,118.99,6),\n (10326,'S18_4522',50,86.01,5),\n (10326,'S24_2011',41,105.69,4),\n (10326,'S24_3151',41,85.85,3),\n (10326,'S24_3816',20,92.25,2),\n (10326,'S700_1138',39,60,1),\n (10327,'S18_1662',25,112.19,6),\n (10327,'S18_2581',45,106.26,8),\n (10327,'S18_3029',25,45.86,5),\n (10327,'S700_1938',20,173.46,7),\n (10327,'S700_2610',21,96.31,1),\n (10327,'S700_3505',43,80,2),\n (10327,'S700_3962',37,86.61,3),\n (10327,'S72_3212',37,86.74,4),\n (10328,'S18_3856',34,112.22,6),\n (10328,'S24_1785',47,87.54,14),\n (10328,'S24_2841',48,58.92,1),\n (10328,'S24_3420',20,72.98,2),\n (10328,'S24_3949',35,76.43,3),\n (10328,'S24_4278',43,60.86,4),\n (10328,'S32_4289',24,81.17,5),\n (10328,'S50_1341',34,51.93,7),\n (10328,'S700_1691',27,102.3,8),\n (10328,'S700_2047',41,101.38,9),\n (10328,'S700_2466',37,108.69,10),\n (10328,'S700_2834',33,123.4,11),\n (10328,'S700_3167',33,64,13),\n (10328,'S700_4002',39,85.87,12),\n (10329,'S10_1678',42,104.67,1),\n (10329,'S10_2016',20,158.8,2),\n (10329,'S10_4698',26,225.7,3),\n (10329,'S12_1099',41,71.47,5),\n (10329,'S12_2823',24,147.61,6),\n (10329,'S12_3380',46,83.63,13),\n (10329,'S12_3990',33,109.32,14),\n (10329,'S12_4675',39,64.74,15),\n (10329,'S18_1889',29,101.89,9),\n (10329,'S18_2625',38,138.58,12),\n (10329,'S18_3278',38,59.1,10),\n (10329,'S24_1578',30,87.78,7),\n (10329,'S24_2000',37,94.43,4),\n (10329,'S32_1374',45,63.91,11),\n (10329,'S72_1253',44,86.13,8),\n (10330,'S18_3482',37,119.06,3),\n (10330,'S18_3782',29,69.63,2),\n (10330,'S18_4721',50,122.02,4),\n (10330,'S24_2360',42,81.03,1),\n (10331,'S18_1129',46,139.87,6),\n (10331,'S18_1589',44,110.21,14),\n (10331,'S18_1749',44,74.04,7),\n (10331,'S18_1984',30,32.47,8),\n (10331,'S18_2870',26,64.9,10),\n (10331,'S18_3232',27,154.47,11),\n (10331,'S18_3685',26,67.91,12),\n (10331,'S24_2972',27,42.24,13),\n (10331,'S24_3371',25,123.14,9),\n (10331,'S24_3856',21,149.33,1),\n (10331,'S24_4620',41,139.4,2),\n (10331,'S32_2206',28,146.52,3),\n (10331,'S32_4485',32,157.08,4),\n (10331,'S50_4713',20,182.89,5),\n (10332,'S18_1342',46,95.13,15),\n (10332,'S18_1367',27,89.89,16),\n (10332,'S18_2248',38,84.25,9),\n (10332,'S18_2325',35,64.69,8),\n (10332,'S18_2795',24,52.67,1),\n (10332,'S18_2957',26,114.58,17),\n (10332,'S18_3136',40,39.8,18),\n (10332,'S18_4409',50,146.2,2),\n (10332,'S18_4933',21,165.38,3),\n (10332,'S24_1046',23,56.84,4),\n (10332,'S24_1628',20,87.96,5),\n (10332,'S24_1937',45,81.91,6),\n (10332,'S24_2022',26,85.52,10),\n (10332,'S24_2766',39,86.72,7),\n (10332,'S24_2887',44,42.26,11),\n (10332,'S24_3191',45,34.19,12),\n (10332,'S24_3432',31,37.18,13),\n (10332,'S24_3969',41,77.24,14),\n (10333,'S10_1949',26,115.5,3),\n (10333,'S12_1666',33,99.21,6),\n (10333,'S18_1097',29,40.25,7),\n (10333,'S18_2949',31,90.17,5),\n (10333,'S18_3320',46,246.45,2),\n (10333,'S18_4668',24,79.86,8),\n (10333,'S24_4258',39,113.44,1),\n (10333,'S32_3522',33,73.69,4),\n (10334,'S10_4962',26,122.62,2),\n (10334,'S18_2319',46,126.41,6),\n (10334,'S18_2432',34,61.38,1),\n (10334,'S18_3232',20,143.94,3),\n (10334,'S18_4600',49,138.03,4),\n (10334,'S24_2300',42,131.62,5),\n (10335,'S24_2840',33,37.13,2),\n (10335,'S32_1268',44,107.87,1),\n (10335,'S32_2509',40,60.6,3),\n (10336,'S12_1108',33,57.22,10),\n (10336,'S12_3148',33,123.01,11),\n (10336,'S12_3891',49,63.38,1),\n (10336,'S12_4473',38,167.7,3),\n (10336,'S18_2238',49,152.26,6),\n (10336,'S18_3140',48,120.38,12),\n (10336,'S18_3259',21,106.21,7),\n (10336,'S24_1444',45,132.72,4),\n (10336,'S24_4048',31,148.99,5),\n (10336,'S32_3207',31,84.71,9),\n (10336,'S50_1392',23,136.59,8),\n (10336,'S700_2824',46,207.8,2),\n (10337,'S10_4757',25,48.05,8),\n (10337,'S18_4027',36,157.76,3),\n (10337,'S18_4522',29,155.11,2),\n (10337,'S24_2011',29,71.97,4),\n (10337,'S50_1514',21,109.37,6),\n (10337,'S700_1938',36,70.3,9),\n (10337,'S700_3505',31,89.38,1),\n (10337,'S700_3962',36,71.89,7),\n (10337,'S72_3212',42,97.16,5),\n (10338,'S18_1662',41,137.19,1),\n (10338,'S18_3029',28,82.58,3),\n (10338,'S18_3856',45,122.81,2),\n (10339,'S10_2016',40,68.92,4),\n (10339,'S10_4698',39,76.67,3),\n (10339,'S18_2581',27,104.1,2),\n (10339,'S18_2625',30,62.16,1),\n (10339,'S24_1578',27,84.39,10),\n (10339,'S24_1785',21,50.65,7),\n (10339,'S24_2841',55,112.99,12),\n (10339,'S24_3151',55,195.6,13),\n (10339,'S24_3420',29,99.69,14),\n (10339,'S24_3816',42,59.36,16),\n (10339,'S24_3949',45,96.92,11),\n (10339,'S700_1138',22,128.02,5),\n (10339,'S700_2047',55,71.25,15),\n (10339,'S700_2610',50,74.35,9),\n (10339,'S700_4002',50,57.86,8),\n (10339,'S72_1253',27,76.31,6),\n (10340,'S24_2000',55,79.98,8),\n (10340,'S24_4278',40,84.77,1),\n (10340,'S32_1374',55,117.87,2),\n (10340,'S32_4289',39,59.16,3),\n (10340,'S50_1341',40,50.62,4),\n (10340,'S700_1691',30,88.6,5),\n (10340,'S700_2466',55,87.75,7),\n (10340,'S700_2834',29,141.19,6),\n (10341,'S10_1678',41,188.73,9),\n (10341,'S12_1099',45,79.65,2),\n (10341,'S12_2823',55,147.61,8),\n (10341,'S12_3380',44,95.93,1),\n (10341,'S12_3990',36,93.56,10),\n (10341,'S12_4675',55,75.2,7),\n (10341,'S24_2360',32,103.35,6),\n (10341,'S32_4485',31,71.02,4),\n (10341,'S50_4713',38,123.22,3),\n (10341,'S700_3167',34,107.18,5),\n (10342,'S18_1129',40,161.36,2),\n (10342,'S18_1889',55,65.45,1),\n (10342,'S18_1984',22,143.67,3),\n (10342,'S18_3232',30,167.65,4),\n (10342,'S18_3278',25,66.74,5),\n (10342,'S18_3482',55,119.06,7),\n (10342,'S18_3782',26,55.95,8),\n (10342,'S18_4721',38,165.17,11),\n (10342,'S24_2972',39,40.4,9),\n (10342,'S24_3371',48,62.45,10),\n (10342,'S24_3856',42,119.37,6),\n (10343,'S18_1589',36,162.47,4),\n (10343,'S18_2870',25,52.32,3),\n (10343,'S18_3685',44,84.88,2),\n (10343,'S24_1628',27,36.21,6),\n (10343,'S24_4620',30,103.29,1),\n (10343,'S32_2206',29,128.04,5),\n (10344,'S18_1749',45,170,1),\n (10344,'S18_2248',40,56.91,2),\n (10344,'S18_2325',30,130.94,3),\n (10344,'S18_4409',21,104.91,4),\n (10344,'S18_4933',26,63.43,5),\n (10344,'S24_1046',29,59.53,7),\n (10344,'S24_1937',20,35.18,6),\n (10345,'S24_2022',43,53.76,1),\n (10346,'S18_1342',42,36.11,3),\n (10346,'S24_2766',25,115.07,1),\n (10346,'S24_2887',24,87.24,5),\n (10346,'S24_3191',24,138.58,2),\n (10346,'S24_3432',26,95.88,6),\n (10346,'S24_3969',22,97.44,4),\n (10347,'S10_1949',30,131.49,1),\n (10347,'S10_4962',27,164,2),\n (10347,'S12_1666',29,123.67,3),\n (10347,'S18_1097',42,49.6,5),\n (10347,'S18_1367',21,58.95,7),\n (10347,'S18_2432',50,136.69,8),\n (10347,'S18_2795',21,229.3,6),\n (10347,'S18_2949',48,100.3,9),\n (10347,'S18_2957',34,64.96,10),\n (10347,'S18_3136',45,109.96,11),\n (10347,'S18_3320',26,102.19,12),\n (10347,'S18_4600',45,130.77,4),\n (10348,'S12_1108',48,52.36,8),\n (10348,'S12_3148',47,102.16,4),\n (10348,'S18_4668',29,245.2,6),\n (10348,'S24_2300',37,161.66,1),\n (10348,'S24_4258',39,50.31,2),\n (10348,'S32_1268',42,152.07,3),\n (10348,'S32_3522',31,101.29,5),\n (10348,'S700_2824',32,82.83,7),\n (10349,'S12_3891',26,169.56,10),\n (10349,'S12_4473',48,109.02,9),\n (10349,'S18_2238',38,176.83,8),\n (10349,'S18_2319',38,137.46,7),\n (10349,'S18_3232',48,154.1,6),\n (10349,'S18_4027',34,129.26,5),\n (10349,'S24_1444',48,47.4,4),\n (10349,'S24_2840',36,37.13,3),\n (10349,'S24_4048',23,138.39,2),\n (10349,'S32_2509',33,46.53,1),\n (10350,'S10_4757',26,75.47,5),\n (10350,'S18_3029',43,64.97,6),\n (10350,'S18_3140',44,117.98,1),\n (10350,'S18_3259',41,93.04,2),\n (10350,'S18_4522',30,100.77,3),\n (10350,'S24_2011',34,50.33,7),\n (10350,'S24_3151',30,100.7,9),\n (10350,'S24_3816',25,60.34,10),\n (10350,'S32_3207',27,163.2,14),\n (10350,'S50_1392',31,71.4,8),\n (10350,'S50_1514',44,147.52,17),\n (10350,'S700_1138',46,76.67,11),\n (10350,'S700_1938',28,104.44,4),\n (10350,'S700_2610',29,75.35,12),\n (10350,'S700_3505',31,77.34,13),\n (10350,'S700_3962',25,114.19,16),\n (10350,'S72_3212',20,112.22,15),\n (10351,'S18_1662',39,99.52,1),\n (10351,'S18_3856',20,168.73,2),\n (10351,'S24_2841',25,74.68,5),\n (10351,'S24_3420',38,68.38,4),\n (10351,'S24_3949',34,59.37,3),\n (10352,'S700_2047',23,102.29,3),\n (10352,'S700_2466',49,100.72,2),\n (10352,'S700_4002',22,75.51,1),\n (10352,'S72_1253',49,52.64,4),\n (10353,'S18_2581',27,130.21,1),\n (10353,'S24_1785',28,71.73,2),\n (10353,'S24_4278',35,89.9,3),\n (10353,'S32_1374',46,81.17,5),\n (10353,'S32_4289',40,44.51,7),\n (10353,'S50_1341',40,82.21,8),\n (10353,'S700_1691',39,129.33,9),\n (10353,'S700_2834',48,68.8,4),\n (10353,'S700_3167',43,81.95,6),\n (10354,'S10_1678',42,86.13,6),\n (10354,'S10_2016',20,104.67,2),\n (10354,'S10_4698',42,213.03,3),\n (10354,'S12_1099',31,93.28,9),\n (10354,'S12_2823',35,182.9,4),\n (10354,'S12_3380',29,73.15,11),\n (10354,'S12_3990',23,50.88,12),\n (10354,'S12_4675',28,86.84,13),\n (10354,'S18_1889',21,110.45,8),\n (10354,'S18_2625',28,165.68,10),\n (10354,'S18_3278',36,82.26,7),\n (10354,'S24_1578',21,113.92,5),\n (10354,'S24_2000',28,69.43,1),\n (10355,'S18_3482',23,138.17,7),\n (10355,'S18_3782',31,53.47,1),\n (10355,'S18_4721',25,168.14,2),\n (10355,'S24_2360',41,70.65,3),\n (10355,'S24_2972',36,38.52,4),\n (10355,'S24_3371',44,62.45,6),\n (10355,'S24_3856',32,165.71,8),\n (10355,'S24_4620',28,95.39,9),\n (10355,'S32_2206',38,39.83,10),\n (10355,'S32_4485',40,108.17,5),\n (10356,'S18_1129',43,97.6,8),\n (10356,'S18_1342',50,50.18,9),\n (10356,'S18_1367',22,72.41,6),\n (10356,'S18_1984',27,64.69,2),\n (10356,'S18_2325',29,125.18,3),\n (10356,'S18_2795',30,148.74,1),\n (10356,'S24_1937',48,202.5,5),\n (10356,'S24_2022',26,31.86,7),\n (10356,'S50_4713',26,151.45,4),\n (10357,'S10_1949',32,177.87,10),\n (10357,'S10_4962',43,134.44,9),\n (10357,'S12_1666',49,121.64,8),\n (10357,'S18_1097',39,98,1),\n (10357,'S18_2432',41,61.99,7),\n (10357,'S18_2949',41,87.13,6),\n (10357,'S18_2957',49,70.58,5),\n (10357,'S18_3136',44,117.29,4),\n (10357,'S18_3320',25,104.17,3),\n (10357,'S18_4600',28,127.13,2),\n (10358,'S12_3148',49,55.34,5),\n (10358,'S12_4473',42,64.16,9),\n (10358,'S18_2238',20,121.4,10),\n (10358,'S18_2319',20,36.42,11),\n (10358,'S18_3232',32,93.49,12),\n (10358,'S18_4027',25,101.13,13),\n (10358,'S18_4668',30,176.76,8),\n (10358,'S24_1444',44,60.76,14),\n (10358,'S24_2300',41,138.65,7),\n (10358,'S24_2840',36,82.94,4),\n (10358,'S24_4258',41,167,6),\n (10358,'S32_1268',41,108,1),\n (10358,'S32_3522',36,157.49,2),\n (10358,'S700_2824',27,139.31,3),\n (10359,'S10_4757',48,54.68,6),\n (10359,'S12_1108',42,113.44,8),\n (10359,'S12_3891',49,62.09,5),\n (10359,'S24_4048',22,118.32,7),\n (10359,'S32_2509',36,176.63,3),\n (10359,'S32_3207',22,195.51,1),\n (10359,'S50_1392',46,106.45,2),\n (10359,'S50_1514',25,64.93,4),\n (10360,'S18_1662',50,58.67,12),\n (10360,'S18_2581',41,87.48,13),\n (10360,'S18_3029',46,77.34,14),\n (10360,'S18_3140',29,175.04,8),\n (10360,'S18_3259',29,101.38,18),\n (10360,'S18_3856',40,87.15,15),\n (10360,'S18_4522',40,86.02,1),\n (10360,'S24_1785',22,115.2,17),\n (10360,'S24_2011',31,118.83,2),\n (10360,'S24_2841',49,56.78,16),\n (10360,'S24_3151',36,113.95,3),\n (10360,'S24_3816',22,111.16,4),\n (10360,'S700_1138',32,100.94,5),\n (10360,'S700_1938',26,97.38,6),\n (10360,'S700_2610',30,125.35,7),\n (10360,'S700_3505',35,65.77,9),\n (10360,'S700_3962',31,103.56,10),\n (10360,'S72_3212',31,96.44,11),\n (10361,'S10_1678',20,72.55,13),\n (10361,'S10_2016',26,51.15,8),\n (10361,'S24_3420',34,113.88,6),\n (10361,'S24_3949',26,142.73,7),\n (10361,'S24_4278',25,62.46,1),\n (10361,'S32_4289',49,72.33,2),\n (10361,'S50_1341',33,82.59,3),\n (10361,'S700_1691',20,60.54,4),\n (10361,'S700_2047',24,45.39,14),\n (10361,'S700_2466',26,105.95,9),\n (10361,'S700_2834',44,72.42,5),\n (10361,'S700_3167',44,113.68,10),\n (10361,'S700_4002',35,122.21,11),\n (10361,'S72_1253',23,95.2,12),\n (10362,'S10_4698',22,166.55,4),\n (10362,'S12_2823',22,176.23,1),\n (10362,'S18_2625',23,49.67,3),\n (10362,'S24_1578',50,96.92,2),\n (10363,'S12_1099',33,85.39,3),\n (10363,'S12_3380',34,96.73,4),\n (10363,'S12_3990',34,81.62,5),\n (10363,'S12_4675',46,88.45,6),\n (10363,'S18_1889',22,167.57,7),\n (10363,'S18_3278',46,60.3,10),\n (10363,'S18_3482',24,172.61,11),\n (10363,'S18_3782',32,89.12,12),\n (10363,'S18_4721',28,58.18,13),\n (10363,'S24_2000',21,171.22,8),\n (10363,'S24_2360',43,61.23,14),\n (10363,'S24_3371',21,116.56,15),\n (10363,'S24_3856',31,94.58,1),\n (10363,'S24_4620',43,119.87,9),\n (10363,'S32_1374',50,131.53,2),\n (10364,'S32_2206',48,48.28,1),\n (10365,'S18_1129',30,87.06,1),\n (10365,'S32_4485',22,155.69,3),\n (10365,'S50_4713',44,113.28,2),\n (10366,'S18_1984',34,123.76,3),\n (10366,'S18_2870',49,125.4,2),\n (10366,'S18_3232',34,184.58,1),\n (10367,'S18_1589',49,56.3,1),\n (10367,'S18_1749',37,127.13,3),\n (10367,'S18_2248',45,197.44,4),\n (10367,'S18_2325',27,155.41,5),\n (10367,'S18_2795',32,94.79,7),\n (10367,'S18_3685',46,104.53,6),\n (10367,'S18_4409',43,62.72,8),\n (10367,'S18_4933',44,85.25,9),\n (10367,'S24_1046',21,60.37,10),\n (10367,'S24_1628',38,38.5,11),\n (10367,'S24_1937',23,36.29,13),\n (10367,'S24_2022',28,30.59,12),\n (10367,'S24_2972',36,139.4,2),\n (10368,'S24_2766',40,102.68,2),\n (10368,'S24_2887',31,136.23,5),\n (10368,'S24_3191',46,79.62,1),\n (10368,'S24_3432',20,99.58,4),\n (10368,'S24_3969',46,37.34,3),\n (10369,'S10_1949',41,110.12,2),\n (10369,'S18_1342',44,210.01,8),\n (10369,'S18_1367',32,98.63,7),\n (10369,'S18_2949',42,109.08,1),\n (10369,'S18_2957',28,44.21,6),\n (10369,'S18_3136',21,94.22,5),\n (10369,'S18_3320',45,73.08,4),\n (10369,'S24_4258',40,86.92,3),\n (10370,'S10_4962',35,65.63,4),\n (10370,'S12_1666',49,172.86,8),\n (10370,'S18_1097',27,144.87,1),\n (10370,'S18_2319',22,179.5,5),\n (10370,'S18_2432',22,96.86,7),\n (10370,'S18_3232',27,56.85,9),\n (10370,'S18_4600',29,57.53,6),\n (10370,'S18_4668',20,136.5,2),\n (10370,'S32_3522',25,126.41,3),\n (10371,'S12_1108',32,111.27,6),\n (10371,'S12_4473',49,35.71,4),\n (10371,'S18_2238',25,104.09,7),\n (10371,'S24_1444',25,97.27,12),\n (10371,'S24_2300',20,172.47,5),\n (10371,'S24_2840',45,123.24,8),\n (10371,'S24_4048',28,50.32,9),\n (10371,'S32_1268',26,155.54,1),\n (10371,'S32_2509',20,66.47,2),\n (10371,'S32_3207',30,99.55,11),\n (10371,'S50_1392',48,56.55,10),\n (10371,'S700_2824',34,126.51,3),\n (10372,'S12_3148',40,146.55,4),\n (10372,'S12_3891',34,174.75,1),\n (10372,'S18_3140',28,137.96,3),\n (10372,'S18_3259',25,84.71,5),\n (10372,'S18_4027',48,146.49,6),\n (10372,'S18_4522',41,86.89,7),\n (10372,'S24_2011',37,105.69,8),\n (10372,'S50_1514',24,58.58,9),\n (10372,'S700_1938',44,102.2,2),\n (10373,'S10_4757',39,103.75,3),\n (10373,'S18_1662',28,57.55,4),\n (10373,'S18_3029',22,86.74,5),\n (10373,'S18_3856',50,60.49,6),\n (10373,'S24_2841',38,70.44,7),\n (10373,'S24_3151',33,57.32,12),\n (10373,'S24_3420',46,66,11),\n (10373,'S24_3816',23,104.1,10),\n (10373,'S24_3949',39,73,13),\n (10373,'S700_1138',44,105.18,14),\n (10373,'S700_2047',32,84.41,15),\n (10373,'S700_2610',41,70.33,16),\n (10373,'S700_3505',34,96.34,2),\n (10373,'S700_3962',37,108.8,8),\n (10373,'S700_4002',45,55.62,17),\n (10373,'S72_1253',25,64.97,9),\n (10373,'S72_3212',29,137.19,1),\n (10374,'S10_2016',39,135.59,5),\n (10374,'S10_4698',22,174.29,1),\n (10374,'S18_2581',42,69.27,2),\n (10374,'S18_2625',22,53.3,4),\n (10374,'S24_1578',38,110.45,6),\n (10374,'S24_1785',46,94.1,3),\n (10375,'S10_1678',21,34.91,12),\n (10375,'S12_1099',45,76,7),\n (10375,'S12_2823',49,78.92,13),\n (10375,'S24_2000',23,106.23,9),\n (10375,'S24_2360',20,102.3,14),\n (10375,'S24_4278',43,233.48,2),\n (10375,'S32_1374',37,171.71,3),\n (10375,'S32_4289',44,82.26,4),\n (10375,'S32_4485',41,114.68,15),\n (10375,'S50_1341',49,65.8,5),\n (10375,'S50_4713',49,110.34,8),\n (10375,'S700_1691',37,81.87,6),\n (10375,'S700_2466',33,116.87,1),\n (10375,'S700_2834',25,66.73,10),\n (10375,'S700_3167',44,118.38,11),\n (10376,'S12_3380',35,113.92,1),\n (10377,'S12_3990',24,67.83,5),\n (10377,'S12_4675',50,103.64,1),\n (10377,'S18_1129',35,168.43,2),\n (10377,'S18_1889',31,67.76,4),\n (10377,'S18_1984',36,120.91,6),\n (10377,'S18_3232',39,186.27,3),\n (10378,'S18_1589',34,42.64,5),\n (10378,'S18_3278',22,112,4),\n (10378,'S18_3482',43,96.49,10),\n (10378,'S18_3782',28,164.63,9),\n (10378,'S18_4721',49,67.14,8),\n (10378,'S24_2972',41,142.85,7),\n (10378,'S24_3371',46,41.54,6),\n (10378,'S24_3856',33,53.27,3),\n (10378,'S24_4620',41,119.37,2),\n (10378,'S32_2206',40,82.46,1),\n (10379,'S18_1749',39,138.45,2),\n (10379,'S18_2248',27,49.3,1),\n (10379,'S18_2870',29,176.8,5),\n (10379,'S18_3685',32,70.83,4),\n (10379,'S24_1628',32,124.08,3),\n (10380,'S18_1342',27,93.16,13),\n (10380,'S18_2325',40,123.29,10),\n (10380,'S18_2795',21,47.18,8),\n (10380,'S18_4409',32,105.52,1),\n (10380,'S18_4933',24,189,2),\n (10380,'S24_1046',34,101.23,3),\n (10380,'S24_1937',32,70.56,4),\n (10380,'S24_2022',27,68.35,5),\n (10380,'S24_2766',36,37.5,6),\n (10380,'S24_2887',44,36.29,7),\n (10380,'S24_3191',44,79.06,9),\n (10380,'S24_3432',34,116.27,11),\n (10380,'S24_3969',43,95.03,12),\n (10381,'S10_1949',36,229.3,3),\n (10381,'S10_4962',37,168.42,6),\n (10381,'S12_1666',20,147.6,1),\n (10381,'S18_1097',48,98,2),\n (10381,'S18_1367',25,52.83,9),\n (10381,'S18_2432',35,48.62,7),\n (10381,'S18_2949',41,105.36,8),\n (10381,'S18_2957',40,68.08,4),\n (10381,'S18_3136',35,122.52,5),\n (10382,'S12_1108',34,112.46,10),\n (10382,'S12_3148',37,110.05,11),\n (10382,'S12_3891',34,95.35,12),\n (10382,'S12_4473',32,66.58,13),\n (10382,'S18_2238',25,88,5),\n (10382,'S18_3320',50,178.71,7),\n (10382,'S18_4600',39,125.4,1),\n (10382,'S18_4668',39,200.7,2),\n (10382,'S24_2300',20,132.72,3),\n (10382,'S24_4258',33,139.17,4),\n (10382,'S32_1268',26,104.17,6),\n (10382,'S32_3522',48,141.66,8),\n (10382,'S700_2824',34,54.84,9),\n (10383,'S18_2319',27,142.37,11),\n (10383,'S18_3140',24,61.52,9),\n (10383,'S18_3232',47,146.15,6),\n (10383,'S18_3259',26,128.48,12),\n (10383,'S18_4027',38,140.55,1),\n (10383,'S18_4522',28,58.58,7),\n (10383,'S24_1444',22,91.76,2),\n (10383,'S24_2840',40,152.24,3),\n (10383,'S24_4048',21,93.91,4),\n (10383,'S32_2509',32,53.18,5),\n (10383,'S32_3207',44,36.07,8),\n (10383,'S50_1392',29,106.45,13),\n (10383,'S50_1514',38,60.06,10),\n (10384,'S10_4757',34,142.55,4),\n (10384,'S24_2011',28,80.54,3),\n (10384,'S24_3151',43,97.87,2),\n (10384,'S700_1938',49,130.56,1),\n (10385,'S24_3816',37,85.54,2),\n (10385,'S700_1138',25,77.34,1),\n (10386,'S18_1662',25,54.57,7),\n (10386,'S18_2581',21,74.77,18),\n (10386,'S18_3029',37,93.01,5),\n (10386,'S18_3856',22,57.55,6),\n (10386,'S24_1785',33,41.71,11),\n (10386,'S24_2841',39,55.96,1),\n (10386,'S24_3420',35,63.76,9),\n (10386,'S24_3949',41,73.32,12),\n (10386,'S24_4278',50,63.34,8),\n (10386,'S700_2047',29,85.76,13),\n (10386,'S700_2466',37,83.84,14),\n (10386,'S700_2610',37,135.61,10),\n (10386,'S700_3167',32,94.34,17),\n (10386,'S700_3505',45,92.08,2),\n (10386,'S700_3962',30,95.48,3),\n (10386,'S700_4002',44,86.4,15),\n (10386,'S72_1253',50,87.15,16),\n (10386,'S72_3212',43,125.99,4),\n (10387,'S32_1374',44,94.9,1),\n (10388,'S10_1678',42,76.36,4),\n (10388,'S10_2016',50,44.51,5),\n (10388,'S10_4698',21,86.77,7),\n (10388,'S12_2823',44,135.26,6),\n (10388,'S32_4289',35,111.97,8),\n (10388,'S50_1341',27,118.94,1),\n (10388,'S700_1691',46,218.84,2),\n (10388,'S700_2834',50,143.09,3),\n (10389,'S12_1099',26,99.04,4),\n (10389,'S12_3380',25,72.38,6),\n (10389,'S12_3990',36,70.26,7),\n (10389,'S12_4675',47,111.57,8),\n (10389,'S18_1889',49,79.22,3),\n (10389,'S18_2625',39,179,5),\n (10389,'S24_1578',45,102.17,1),\n (10389,'S24_2000',49,81.4,2),\n (10390,'S18_1129',36,93.77,14),\n (10390,'S18_1984',34,43.05,15),\n (10390,'S18_2325',31,98.99,16),\n (10390,'S18_2795',26,78.11,7),\n (10390,'S18_3278',40,137.29,9),\n (10390,'S18_3482',50,147.94,1),\n (10390,'S18_3782',36,141.11,2),\n (10390,'S18_4721',49,140.06,3),\n (10390,'S24_2360',35,65.13,4),\n (10390,'S24_2972',37,132.29,5),\n (10390,'S24_3371',46,52.84,6),\n (10390,'S24_3856',45,150.29,8),\n (10390,'S24_4620',30,82.42,10),\n (10390,'S32_2206',41,44.56,11),\n (10390,'S32_4485',45,48.98,12),\n (10390,'S50_4713',22,158.69,13),\n (10391,'S10_1949',24,100.69,4),\n (10391,'S10_4962',37,46.9,7),\n (10391,'S12_1666',39,63.2,9),\n (10391,'S18_1097',29,85.1,10),\n (10391,'S18_1342',35,158.54,2),\n (10391,'S18_1367',42,119,3),\n (10391,'S18_2432',44,38.5,5),\n (10391,'S18_2949',32,45.25,6),\n (10391,'S24_1937',33,252.87,8),\n (10391,'S24_2022',24,168.42,1),\n (10392,'S18_2957',37,59.96,3),\n (10392,'S18_3136',29,86.92,2),\n (10392,'S18_3320',36,112.11,1),\n (10393,'S12_3148',35,109.08,8),\n (10393,'S12_4473',32,101.13,10),\n (10393,'S18_2238',20,69.81,11),\n (10393,'S18_2319',38,100.14,7),\n (10393,'S18_4600',30,120.86,9),\n (10393,'S18_4668',44,110.21,1),\n (10393,'S24_2300',33,176.83,2),\n (10393,'S24_4258',33,98.18,3),\n (10393,'S32_1268',38,145.3,4),\n (10393,'S32_3522',31,57.86,5),\n (10393,'S700_2824',21,102.23,6),\n (10394,'S18_3232',22,152.41,5),\n (10394,'S18_4027',37,172.34,1),\n (10394,'S24_1444',31,50.29,2),\n (10394,'S24_2840',46,38.9,6),\n (10394,'S24_4048',37,140.75,7),\n (10394,'S32_2509',36,62.77,3),\n (10394,'S32_3207',30,60.28,4),\n (10395,'S10_4757',32,105.33,2),\n (10395,'S12_1108',33,69.12,1),\n (10395,'S50_1392',46,123.76,4),\n (10395,'S50_1514',45,199.49,3),\n (10396,'S12_3891',33,185.13,3),\n (10396,'S18_3140',33,159.81,2),\n (10396,'S18_3259',24,89.75,4),\n (10396,'S18_4522',45,105.32,5),\n (10396,'S24_2011',49,116.75,6),\n (10396,'S24_3151',27,83.2,7),\n (10396,'S24_3816',37,90.57,8),\n (10396,'S700_1138',39,66.67,1),\n (10397,'S700_1938',32,80.55,5),\n (10397,'S700_2610',22,66.5,4),\n (10397,'S700_3505',48,108.18,3),\n (10397,'S700_3962',36,105.27,2),\n (10397,'S72_3212',34,62.24,1),\n (10398,'S18_1662',33,127.73,11),\n (10398,'S18_2581',34,76.88,15),\n (10398,'S18_3029',28,72.26,18),\n (10398,'S18_3856',45,106.93,17),\n (10398,'S24_1785',43,129.12,16),\n (10398,'S24_2841',28,57.55,3),\n (10398,'S24_3420',34,71.67,13),\n (10398,'S24_3949',41,68.24,2),\n (10398,'S24_4278',45,78.25,14),\n (10398,'S32_4289',22,67.41,4),\n (10398,'S50_1341',49,36.66,5),\n (10398,'S700_1691',47,87.69,6),\n (10398,'S700_2047',36,108.62,7),\n (10398,'S700_2466',22,86.76,8),\n (10398,'S700_2834',23,122.21,9),\n (10398,'S700_3167',29,65.6,10),\n (10398,'S700_4002',36,87.36,12),\n (10398,'S72_1253',34,40.22,1),\n (10399,'S10_1678',40,113.88,8),\n (10399,'S10_2016',51,123.7,7),\n (10399,'S10_4698',22,158.8,6),\n (10399,'S12_2823',29,164.18,5),\n (10399,'S18_2625',30,68.44,4),\n (10399,'S24_1578',57,105.94,3),\n (10399,'S24_2000',58,89.12,2),\n (10399,'S32_1374',32,99.89,1),\n (10400,'S10_4757',64,150.96,9),\n (10400,'S18_1662',34,189.23,1),\n (10400,'S18_3029',30,74.84,7),\n (10400,'S18_3856',58,125.99,6),\n (10400,'S24_2841',24,61.66,2),\n (10400,'S24_3420',38,57.2,3),\n (10400,'S24_3816',42,72.96,8),\n (10400,'S700_2047',46,87.8,5),\n (10400,'S72_1253',20,56.12,4),\n (10401,'S18_2581',42,76.03,3),\n (10401,'S24_1785',38,96.29,5),\n (10401,'S24_3949',64,60.05,12),\n (10401,'S24_4278',52,81.14,4),\n (10401,'S32_1374',49,101.89,1),\n (10401,'S32_4289',62,77.73,6),\n (10401,'S50_1341',56,35.35,7),\n (10401,'S700_1691',11,103.21,8),\n (10401,'S700_2466',85,88.75,10),\n (10401,'S700_2834',21,96.11,2),\n (10401,'S700_3167',77,92,9),\n (10401,'S700_4002',28,72.55,11),\n (10402,'S10_2016',45,129.64,1),\n (10402,'S18_2625',55,55.72,2),\n (10402,'S24_2000',59,87.6,3),\n (10403,'S10_1678',24,101.44,7),\n (10403,'S10_4698',66,180.1,9),\n (10403,'S12_2823',66,131.04,6),\n (10403,'S18_3782',36,52.22,1),\n (10403,'S24_1578',46,114.95,8),\n (10403,'S24_2360',27,79.65,4),\n (10403,'S32_2206',30,40.23,2),\n (10403,'S32_4485',45,115.32,5),\n (10403,'S50_4713',31,68.34,3),\n (10404,'S12_1099',64,206.24,3),\n (10404,'S12_3380',43,109.22,1),\n (10404,'S12_3990',77,74.21,4),\n (10404,'S18_3278',90,73.17,6),\n (10404,'S18_3482',28,133.76,5),\n (10404,'S18_4721',48,144.34,8),\n (10404,'S24_3371',49,62.45,2),\n (10404,'S24_4620',48,93.77,7),\n (10405,'S12_4675',97,93.28,5),\n (10405,'S18_1889',61,73.92,4),\n (10405,'S18_3232',55,150.71,1),\n (10405,'S24_2972',47,44.56,2),\n (10405,'S24_3856',76,154.47,3),\n (10406,'S18_1129',61,137.29,3),\n (10406,'S18_1984',48,149.36,2),\n (10406,'S18_3685',65,161.06,1),\n (10407,'S18_1589',59,119.46,11),\n (10407,'S18_1749',76,185.3,2),\n (10407,'S18_2248',42,72.65,1),\n (10407,'S18_2870',41,155.76,12),\n (10407,'S18_4409',6,90.19,3),\n (10407,'S18_4933',66,66.99,4),\n (10407,'S24_1046',26,76.43,8),\n (10407,'S24_1628',64,40.25,10),\n (10407,'S24_2766',76,94.5,6),\n (10407,'S24_2887',59,98.65,5),\n (10407,'S24_3191',13,81.33,7),\n (10407,'S24_3432',43,86.73,9),\n (10408,'S24_3969',15,36.93,1),\n (10409,'S18_2325',6,130.94,2),\n (10409,'S24_1937',61,29.54,1),\n (10410,'S18_1342',65,117.12,7),\n (10410,'S18_1367',44,58.22,6),\n (10410,'S18_2795',56,138.38,8),\n (10410,'S18_2949',47,117.52,1),\n (10410,'S18_2957',53,58.09,3),\n (10410,'S18_3136',34,115.19,2),\n (10410,'S18_3320',44,84.33,5),\n (10410,'S24_2022',31,45.25,9),\n (10410,'S24_4258',50,86.68,4),\n (10411,'S10_1949',23,180.01,9),\n (10411,'S10_4962',27,163.99,2),\n (10411,'S12_1666',40,155.8,6),\n (10411,'S18_1097',27,119,8),\n (10411,'S18_4600',46,113.82,3),\n (10411,'S18_4668',35,59.87,7),\n (10411,'S32_1268',26,111.72,1),\n (10411,'S32_3522',27,69.16,5),\n (10411,'S700_2824',34,105.2,4),\n (10412,'S12_4473',54,110.21,5),\n (10412,'S18_2238',41,163.73,4),\n (10412,'S18_2319',56,98.18,8),\n (10412,'S18_2432',47,61.99,11),\n (10412,'S18_3232',60,198.13,9),\n (10412,'S24_1444',21,52.6,2),\n (10412,'S24_2300',70,121.4,10),\n (10412,'S24_2840',30,36.07,6),\n (10412,'S24_4048',31,137.2,1),\n (10412,'S32_2509',19,48.7,7),\n (10412,'S50_1392',26,133.11,3),\n (10413,'S12_1108',36,241.05,2),\n (10413,'S12_3148',47,175.25,3),\n (10413,'S12_3891',22,153.99,1),\n (10413,'S18_4027',49,140.75,5),\n (10413,'S32_3207',24,49.71,6),\n (10413,'S50_1514',51,63.85,4),\n (10414,'S10_4757',19,145.52,3),\n (10414,'S18_3029',44,73.98,1),\n (10414,'S18_3140',41,118.83,12),\n (10414,'S18_3259',48,121.01,14),\n (10414,'S18_4522',16,75.48,11),\n (10414,'S24_2011',23,145.01,10),\n (10414,'S24_3151',60,101.79,5),\n (10414,'S24_3816',51,76.31,2),\n (10414,'S700_1138',37,71.34,6),\n (10414,'S700_1938',34,103.93,13),\n (10414,'S700_2610',31,75.89,4),\n (10414,'S700_3505',28,108.18,7),\n (10414,'S700_3962',27,90.37,8),\n (10414,'S72_3212',47,65.52,9),\n (10415,'S18_3856',51,121.75,5),\n (10415,'S24_2841',21,67.82,1),\n (10415,'S24_3420',18,69.7,2),\n (10415,'S700_2047',32,95.95,4),\n (10415,'S72_1253',42,57.61,3),\n (10416,'S18_1662',24,181.34,14),\n (10416,'S18_2581',15,98.84,4),\n (10416,'S24_1785',47,88.63,6),\n (10416,'S24_2000',32,87.6,1),\n (10416,'S24_3949',18,75.06,13),\n (10416,'S24_4278',48,74.62,5),\n (10416,'S32_1374',45,105.88,2),\n (10416,'S32_4289',26,61.22,7),\n (10416,'S50_1341',37,51.93,8),\n (10416,'S700_1691',23,91.34,9),\n (10416,'S700_2466',22,111.69,11),\n (10416,'S700_2834',41,137.63,3),\n (10416,'S700_3167',39,67.2,10),\n (10416,'S700_4002',43,62.19,12),\n (10417,'S10_1678',66,113.88,2),\n (10417,'S10_2016',45,130.83,5),\n (10417,'S10_4698',56,164.61,4),\n (10417,'S12_2823',21,164.18,1),\n (10417,'S18_2625',36,61.18,6),\n (10417,'S24_1578',35,101.43,3),\n (10418,'S18_3278',16,76.39,2),\n (10418,'S18_3482',27,164.63,1),\n (10418,'S18_3782',33,52.84,5),\n (10418,'S18_4721',28,136.9,4),\n (10418,'S24_2360',52,65.8,8),\n (10418,'S24_4620',10,87.31,3),\n (10418,'S32_2206',43,48.28,6),\n (10418,'S32_4485',50,113.28,9),\n (10418,'S50_4713',40,72.41,7),\n (10419,'S12_1099',12,163.44,13),\n (10419,'S12_3380',10,109.22,11),\n (10419,'S12_3990',34,90.17,14),\n (10419,'S12_4675',32,119.77,10),\n (10419,'S18_1129',38,117.48,5),\n (10419,'S18_1589',37,140.62,1),\n (10419,'S18_1889',39,83.93,9),\n (10419,'S18_1984',34,135.14,4),\n (10419,'S18_2870',55,139.92,2),\n (10419,'S18_3232',35,169.34,6),\n (10419,'S18_3685',43,129.98,3),\n (10419,'S24_2972',15,42.67,7),\n (10419,'S24_3371',55,52.66,12),\n (10419,'S24_3856',70,132,8),\n (10420,'S18_1749',37,142.8,5),\n (10420,'S18_2248',36,63.57,4),\n (10420,'S18_2325',45,110.6,2),\n (10420,'S18_4409',66,92.95,6),\n (10420,'S18_4933',36,57.73,7),\n (10420,'S24_1046',60,64.67,11),\n (10420,'S24_1628',37,60.37,13),\n (10420,'S24_1937',45,26.88,1),\n (10420,'S24_2766',39,100.87,9),\n (10420,'S24_2887',55,96.3,8),\n (10420,'S24_3191',35,96.74,10),\n (10420,'S24_3432',26,100.66,12),\n (10420,'S24_3969',15,43.49,3),\n (10421,'S18_2795',35,155.25,1),\n (10421,'S24_2022',40,45.7,2),\n (10422,'S18_1342',51,95.55,2),\n (10422,'S18_1367',25,51.75,1),\n (10423,'S18_2949',10,88.14,1),\n (10423,'S18_2957',31,53.72,3),\n (10423,'S18_3136',21,84.82,2),\n (10423,'S18_3320',21,89.29,5),\n (10423,'S24_4258',28,78.89,4),\n (10424,'S10_1949',50,240.02,6),\n (10424,'S12_1666',49,162.64,3),\n (10424,'S18_1097',54,133,5),\n (10424,'S18_4668',26,59.87,4),\n (10424,'S32_3522',44,61.41,2),\n (10424,'S700_2824',46,80.92,1),\n (10425,'S10_4962',38,155.13,12),\n (10425,'S12_4473',33,142.2,4),\n (10425,'S18_2238',28,189.93,3),\n (10425,'S18_2319',38,99.41,7),\n (10425,'S18_2432',19,49.22,10),\n (10425,'S18_3232',28,135.47,8),\n (10425,'S18_4600',38,113.82,13),\n (10425,'S24_1444',55,46.82,1),\n (10425,'S24_2300',49,112.46,9),\n (10425,'S24_2840',31,33.24,5),\n (10425,'S32_1268',41,86.68,11),\n (10425,'S32_2509',11,43.83,6),\n (10425,'S50_1392',18,105.33,2);\n\nDROP TABLE IF EXISTS `classicmodels`.`Payment`;\nCREATE TABLE  `classicmodels`.`Payment` (\n  `customerNumber` int(11) NOT NULL,\n  `checkNumber` varchar(50) NOT NULL,\n  `paymentDate` datetime NOT NULL,\n  `amount` double NOT NULL,\n  PRIMARY KEY (`customerNumber`,`checkNumber`)\n) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;\nINSERT INTO `classicmodels`.`Payment` (`customerNumber`,`checkNumber`,`paymentDate`,`amount`) VALUES \n (103,'HQ336336','2004-10-19 00:00:00',5307.98),\n (103,'JM555205','2003-06-05 00:00:00',16560.3),\n (103,'OM314933','2004-12-18 00:00:00',2311.68),\n (112,'BO864823','2004-12-17 00:00:00',14449.61),\n (112,'HQ55022','2003-06-06 00:00:00',33847.62),\n (112,'ND748579','2004-08-20 00:00:00',34453.85),\n (114,'GG31455','2003-05-20 00:00:00',50397.66),\n (114,'MA765515','2004-12-15 00:00:00',85591.32),\n (114,'NP603840','2003-05-31 00:00:00',9738.18),\n (114,'NR27552','2004-03-10 00:00:00',49637.57),\n (119,'DB933704','2004-11-14 00:00:00',20719.91),\n (119,'LN373447','2004-08-08 00:00:00',56002.9),\n (119,'NG94694','2005-02-22 00:00:00',59617.44),\n (121,'DB889831','2003-02-16 00:00:00',54702),\n (121,'FD317790','2003-10-28 00:00:00',1474.66),\n (121,'KI831359','2004-11-04 00:00:00',19769.68),\n (121,'MA302151','2004-11-28 00:00:00',40652.85),\n (124,'AE215433','2005-02-18 00:00:00',51826.36),\n (124,'AQ50522','2005-06-03 00:00:00',32194.79),\n (124,'BG255406','2004-08-28 00:00:00',93928.73),\n (124,'CQ287967','2003-04-11 00:00:00',12398.56),\n (124,'ET64396','2005-04-16 00:00:00',121972.78),\n (124,'HI366474','2004-12-27 00:00:00',50547.68),\n (124,'HR86578','2004-11-02 00:00:00',63075.06),\n (124,'KI131716','2003-08-15 00:00:00',122368.67),\n (124,'LF217299','2004-03-26 00:00:00',48922.77),\n (124,'NT141748','2003-11-25 00:00:00',50360.89),\n (128,'DI925118','2003-01-28 00:00:00',11432.34),\n (128,'FA465482','2003-10-18 00:00:00',27257.79),\n (128,'FH668230','2004-03-24 00:00:00',37266.49),\n (128,'IP383901','2004-11-18 00:00:00',9214.97),\n (129,'DM826140','2004-12-08 00:00:00',30348.72),\n (129,'ID449593','2003-12-11 00:00:00',25431.88),\n (129,'PI42991','2003-04-09 00:00:00',18695.58),\n (131,'CL442705','2003-03-12 00:00:00',25783.76),\n (131,'KG113538','2004-05-22 00:00:00',45357.66),\n (131,'MA724562','2004-12-02 00:00:00',53152.28),\n (131,'NB445135','2004-09-11 00:00:00',39775.74),\n (141,'AU364101','2003-07-19 00:00:00',39615.82),\n (141,'DB583216','2004-11-01 00:00:00',34872.13),\n (141,'DL460618','2005-05-19 00:00:00',22353.86),\n (141,'HJ32686','2004-01-30 00:00:00',65165.17),\n (141,'ID10962','2004-12-31 00:00:00',133588.75),\n (141,'IN446258','2005-03-25 00:00:00',95065.46),\n (141,'JE105477','2005-03-18 00:00:00',90135.87),\n (141,'JN355280','2003-10-26 00:00:00',53502.3),\n (141,'JN722010','2003-02-25 00:00:00',44621.96),\n (141,'KT52578','2003-12-09 00:00:00',72487.5),\n (141,'MC46946','2004-07-09 00:00:00',91328.4),\n (141,'MF629602','2004-08-16 00:00:00',21986.27),\n (141,'NU627706','2004-05-17 00:00:00',28327.64),\n (144,'IR846303','2004-12-12 00:00:00',66005.88),\n (144,'LA685678','2003-04-09 00:00:00',9749),\n (145,'CN328545','2004-07-03 00:00:00',4749.45),\n (145,'ED39322','2004-04-26 00:00:00',31329.56),\n (145,'HR182688','2004-12-01 00:00:00',24078.61),\n (145,'JJ246391','2003-02-20 00:00:00',58871.11),\n (146,'FP549817','2004-03-18 00:00:00',46802.27),\n (146,'FU793410','2004-01-16 00:00:00',54536.87),\n (146,'LJ160635','2003-12-10 00:00:00',41535.11),\n (148,'BI507030','2003-04-22 00:00:00',43657.47),\n (148,'DD635282','2004-08-11 00:00:00',3127.88),\n (148,'KM172879','2003-12-26 00:00:00',122028.73),\n (148,'ME497970','2005-03-27 00:00:00',4175.6),\n (151,'BF686658','2003-12-22 00:00:00',64316.09),\n (151,'GB852215','2004-07-26 00:00:00',23252.18),\n (151,'IP568906','2003-06-18 00:00:00',68462.15),\n (151,'KI884577','2004-12-14 00:00:00',41706.52),\n (157,'HI618861','2004-11-19 00:00:00',44040.73),\n (157,'NN711988','2004-09-07 00:00:00',71930.61),\n (161,'BR352384','2004-11-14 00:00:00',2916.2),\n (161,'BR478494','2003-11-18 00:00:00',62305.47),\n (161,'KG644125','2005-02-02 00:00:00',13529.57),\n (161,'NI908214','2003-08-05 00:00:00',42031.83),\n (166,'BQ327613','2004-09-16 00:00:00',42902.84),\n (166,'DC979307','2004-07-07 00:00:00',45788.72),\n (166,'LA318629','2004-02-28 00:00:00',24219.59),\n (167,'ED743615','2004-09-19 00:00:00',16363.1),\n (167,'GN228846','2003-12-03 00:00:00',95277.18),\n (171,'GB878038','2004-03-15 00:00:00',20178.13),\n (171,'IL104425','2003-11-22 00:00:00',48874.28),\n (172,'AD832091','2004-09-09 00:00:00',2173.6),\n (172,'CE51751','2004-12-04 00:00:00',56812.67),\n (172,'EH208589','2003-04-20 00:00:00',38217.41),\n (173,'GP545698','2004-05-13 00:00:00',14380.92),\n (173,'IG462397','2004-03-29 00:00:00',21782.7),\n (175,'IO448913','2003-11-19 00:00:00',26115.8),\n (175,'PI15215','2004-07-10 00:00:00',44130.52),\n (177,'AU750837','2004-04-17 00:00:00',17114.43),\n (177,'CI381435','2004-01-19 00:00:00',50490.64),\n (181,'CM564612','2004-04-25 00:00:00',24804.34),\n (181,'GQ132144','2003-01-30 00:00:00',6864.05),\n (181,'OH367219','2004-11-16 00:00:00',56372.87),\n (186,'AE192287','2005-03-10 00:00:00',26422.82),\n (186,'AK412714','2003-10-27 00:00:00',42083.5),\n (186,'KA602407','2004-10-21 00:00:00',42744.06),\n (187,'AM968797','2004-11-03 00:00:00',57827.61),\n (187,'BQ39062','2004-12-08 00:00:00',48962.28),\n (187,'KL124726','2003-03-27 00:00:00',51017.92),\n (189,'BO711618','2004-10-03 00:00:00',18971.96),\n (189,'NM916675','2004-03-01 00:00:00',38784.47),\n (198,'FI192930','2004-12-06 00:00:00',11528.53),\n (198,'HQ920205','2003-07-06 00:00:00',7277.35),\n (198,'IS946883','2004-09-21 00:00:00',7673.38),\n (201,'DP677013','2003-10-20 00:00:00',26797.21),\n (201,'OO846801','2004-06-15 00:00:00',50408.25),\n (202,'HI358554','2003-12-18 00:00:00',38662.21),\n (202,'IQ627690','2004-11-08 00:00:00',36576.71),\n (204,'GC697638','2004-08-13 00:00:00',52505.36),\n (204,'IS150005','2004-09-24 00:00:00',4692.6),\n (205,'GL756480','2003-12-04 00:00:00',4512.48),\n (205,'LL562733','2003-09-05 00:00:00',55776.12),\n (205,'NM739638','2005-02-06 00:00:00',44273.36),\n (209,'ED520529','2004-06-21 00:00:00',5416.9),\n (209,'PH785937','2004-05-04 00:00:00',39341.23),\n (211,'BJ535230','2003-12-09 00:00:00',48784.36),\n (216,'BG407567','2003-05-09 00:00:00',4219.2),\n (216,'ML780814','2004-12-06 00:00:00',21249.77),\n (216,'MM342086','2003-12-14 00:00:00',44009.31),\n (219,'BN17870','2005-03-02 00:00:00',3987.2),\n (219,'BR941480','2003-10-18 00:00:00',5142.15),\n (227,'MQ413968','2003-10-31 00:00:00',40321.61),\n (227,'NU21326','2004-11-02 00:00:00',60273.94),\n (233,'II180006','2004-07-01 00:00:00',24564.53),\n (233,'JG981190','2003-11-18 00:00:00',15947.29),\n (239,'NQ865547','2004-03-15 00:00:00',87489.23),\n (240,'IF245157','2004-11-16 00:00:00',51334.16),\n (240,'JO719695','2004-03-28 00:00:00',26906.68),\n (242,'AF40894','2003-11-22 00:00:00',38098.24),\n (242,'HR224331','2005-06-03 00:00:00',15139.12),\n (242,'KI744716','2003-07-21 00:00:00',17251.08),\n (249,'IJ399820','2004-09-19 00:00:00',38039),\n (249,'NE404084','2004-09-04 00:00:00',56078.26),\n (250,'EQ12267','2005-05-17 00:00:00',20321.53),\n (250,'HD284647','2004-12-30 00:00:00',32623.93),\n (250,'HN114306','2003-07-18 00:00:00',25624.88),\n (256,'EP227123','2004-02-10 00:00:00',5759.42),\n (256,'HE84936','2004-10-22 00:00:00',59074.88),\n (259,'EU280955','2004-11-06 00:00:00',68943.4),\n (259,'GB361972','2003-12-07 00:00:00',31363.18),\n (260,'IO164641','2004-08-30 00:00:00',43332.35),\n (260,'NH776924','2004-04-24 00:00:00',31302.5),\n (276,'EM979878','2005-02-09 00:00:00',29852.17),\n (276,'KM841847','2003-11-13 00:00:00',41791.95),\n (276,'LE432182','2003-09-28 00:00:00',47191.76),\n (276,'OJ819725','2005-04-30 00:00:00',35160.25),\n (278,'BJ483870','2004-12-05 00:00:00',41696.69),\n (278,'GP636783','2003-03-02 00:00:00',56181.32),\n (278,'NI983021','2003-11-24 00:00:00',40077.71),\n (282,'IA793562','2003-08-03 00:00:00',28397.26),\n (282,'JT819493','2004-08-02 00:00:00',41297.14),\n (282,'OD327378','2005-01-03 00:00:00',37905.15),\n (286,'DR578578','2004-10-28 00:00:00',54251.66),\n (286,'KH910279','2004-09-05 00:00:00',48828.72),\n (298,'AJ574927','2004-03-13 00:00:00',50432.55),\n (298,'LF501133','2004-09-18 00:00:00',67281.01),\n (299,'AD304085','2003-10-24 00:00:00',45078.76),\n (299,'NR157385','2004-09-05 00:00:00',34145.47),\n (311,'DG336041','2005-02-15 00:00:00',49055.4),\n (311,'FA728475','2003-10-06 00:00:00',37501.58),\n (311,'NQ966143','2004-04-25 00:00:00',17813.4),\n (314,'LQ244073','2004-08-09 00:00:00',47760.48),\n (314,'MD809704','2004-03-03 00:00:00',18800.09),\n (319,'HL685576','2004-11-06 00:00:00',46873.04),\n (319,'OM548174','2003-12-07 00:00:00',38682.95),\n (320,'GJ597719','2005-01-18 00:00:00',11021.3),\n (320,'HO576374','2003-08-20 00:00:00',45738.39),\n (320,'MU817160','2003-11-24 00:00:00',52191.44),\n (321,'DJ15149','2003-11-03 00:00:00',95678.88),\n (321,'LA556321','2005-03-15 00:00:00',54203.62),\n (323,'AL493079','2005-05-23 00:00:00',39267.74),\n (323,'ES347491','2004-06-24 00:00:00',40034.67),\n (323,'HG738664','2003-07-05 00:00:00',2476.8),\n (323,'PQ803830','2004-12-24 00:00:00',43930.62),\n (324,'DQ409197','2004-12-13 00:00:00',13739.9),\n (324,'FP443161','2003-07-07 00:00:00',32376.29),\n (324,'HB150714','2003-11-23 00:00:00',42688.31),\n (328,'EN930356','2004-04-16 00:00:00',8722.12),\n (328,'NR631421','2004-05-30 00:00:00',27987.07),\n (333,'HL209210','2003-11-15 00:00:00',27098.8),\n (333,'JK479662','2003-10-17 00:00:00',10640.29),\n (333,'NF959653','2005-03-01 00:00:00',21730.03),\n (334,'CS435306','2005-01-27 00:00:00',51373.49),\n (334,'HH517378','2003-08-16 00:00:00',31569.43),\n (334,'LF737277','2004-05-22 00:00:00',31018.23),\n (339,'AP286625','2004-10-24 00:00:00',27445.31),\n (339,'DA98827','2003-11-28 00:00:00',40061.66),\n (344,'AF246722','2003-11-24 00:00:00',34311.35),\n (344,'NJ906924','2004-04-02 00:00:00',15330.7),\n (347,'DG700707','2004-01-18 00:00:00',23889.32),\n (347,'LG808674','2003-10-24 00:00:00',24159.14),\n (350,'BQ602907','2004-12-11 00:00:00',20136.86),\n (350,'CI471510','2003-05-25 00:00:00',52481.84),\n (350,'OB648482','2005-01-29 00:00:00',2317.44),\n (353,'CO351193','2005-01-10 00:00:00',48895.59),\n (353,'ED878227','2003-07-21 00:00:00',15146.32),\n (353,'GT878649','2003-05-21 00:00:00',18971.96),\n (353,'HJ618252','2005-06-09 00:00:00',52029.07),\n (357,'AG240323','2003-12-16 00:00:00',23294.8),\n (357,'NB291497','2004-07-01 00:00:00',41418.55),\n (362,'FP170292','2004-07-11 00:00:00',19548.35),\n (362,'OG208861','2004-09-21 00:00:00',15344.64),\n (363,'HL575273','2004-11-17 00:00:00',55570.6),\n (363,'IS232033','2003-01-16 00:00:00',12133.25),\n (363,'PN238558','2003-12-05 00:00:00',63981.45),\n (379,'CA762595','2005-02-12 00:00:00',31474.78),\n (379,'FR499138','2003-09-16 00:00:00',34992.4),\n (379,'GB890854','2004-08-02 00:00:00',15110.8),\n (381,'BC726082','2004-12-03 00:00:00',13463.48),\n (381,'CC475233','2003-04-19 00:00:00',1711.26),\n (381,'GB117430','2005-02-03 00:00:00',16628.16),\n (381,'MS154481','2003-08-22 00:00:00',1637.2),\n (382,'CC871084','2003-05-12 00:00:00',38629.14),\n (382,'CT821147','2004-08-01 00:00:00',6693.28),\n (382,'PH29054','2004-11-27 00:00:00',37353.16),\n (385,'BN347084','2003-12-02 00:00:00',22841.96),\n (385,'CP804873','2004-11-19 00:00:00',15928.75),\n (385,'EK785462','2003-03-09 00:00:00',55245.02),\n (386,'DO106109','2003-11-18 00:00:00',44669.74),\n (386,'HG438769','2004-07-18 00:00:00',56421.65),\n (398,'AJ478695','2005-02-14 00:00:00',38191.39),\n (398,'DO787644','2004-06-21 00:00:00',25928.75),\n (398,'KB54275','2004-11-29 00:00:00',44802.04),\n (406,'HJ217687','2004-01-28 00:00:00',51172.65),\n (406,'NA197101','2004-06-17 00:00:00',27931.21),\n (412,'GH197075','2004-07-25 00:00:00',35911.81),\n (412,'PJ434867','2004-04-14 00:00:00',36409.31),\n (415,'ER54537','2004-09-28 00:00:00',34993.92),\n (424,'KF480160','2004-12-07 00:00:00',27733.04),\n (424,'LM271923','2003-04-16 00:00:00',24777.41),\n (424,'OA595449','2003-10-31 00:00:00',25284.75),\n (447,'AO757239','2003-09-15 00:00:00',7600.12),\n (447,'ER615123','2003-06-25 00:00:00',20350.95),\n (447,'OU516561','2004-12-17 00:00:00',29343.35),\n (448,'EQ620556','2003-11-06 00:00:00',48710.92),\n (448,'FS299615','2005-04-18 00:00:00',31606.72),\n (448,'KR822727','2004-09-30 00:00:00',53941.69),\n (450,'EF485824','2004-06-21 00:00:00',64600.34),\n (452,'ED473873','2003-11-15 00:00:00',28550.59),\n (452,'FN640986','2003-11-20 00:00:00',14938.15),\n (452,'HG635467','2005-05-03 00:00:00',8775.16),\n (455,'HA777606','2003-12-05 00:00:00',42498.76),\n (455,'IR662429','2004-05-12 00:00:00',36973.31),\n (456,'GJ715659','2004-11-13 00:00:00',31446.15),\n (456,'MO743231','2004-04-30 00:00:00',1698.78),\n (458,'DD995006','2004-11-15 00:00:00',34546.6),\n (458,'NA377824','2004-02-06 00:00:00',24995.47),\n (458,'OO606861','2003-06-13 00:00:00',61073.21),\n (462,'ED203908','2005-04-15 00:00:00',37557.7),\n (462,'GC60330','2003-11-08 00:00:00',11861.69),\n (462,'PE176846','2004-11-27 00:00:00',49504.38),\n (471,'AB661578','2004-07-28 00:00:00',12334.82),\n (471,'CO645196','2003-12-10 00:00:00',37878.55),\n (473,'LL427009','2004-02-17 00:00:00',7278.98),\n (473,'PC688499','2003-10-27 00:00:00',21672.93),\n (475,'JP113227','2003-12-09 00:00:00',8234.56),\n (475,'PB951268','2004-02-13 00:00:00',37850.08),\n (484,'GK294076','2004-10-26 00:00:00',3220.88),\n (484,'JH546765','2003-11-29 00:00:00',51502.74),\n (486,'BL66528','2004-04-14 00:00:00',7287.24),\n (486,'HS86661','2004-11-23 00:00:00',48996.1),\n (486,'JB117768','2003-03-20 00:00:00',27398.82),\n (487,'AH612904','2003-09-28 00:00:00',34100.03),\n (487,'PT550181','2004-02-29 00:00:00',16118.48),\n (489,'OC773849','2003-12-04 00:00:00',27541.82),\n (489,'PO860906','2004-01-31 00:00:00',8477.22),\n (495,'BH167026','2003-12-26 00:00:00',63730.78),\n (495,'FN155234','2004-05-14 00:00:00',7129),\n (496,'EU531600','2005-06-25 00:00:00',34332.29),\n (496,'MB342426','2003-07-16 00:00:00',37754.33),\n (496,'MN89921','2004-12-31 00:00:00',58593.28),\n (496,'PL783960','2003-11-29 00:00:00',26421.24);\n\nDROP TABLE IF EXISTS `classicmodels`.`Product`;\nCREATE TABLE  `classicmodels`.`Product` (\n  `productCode` varchar(50) NOT NULL,\n  `productName` varchar(70) NOT NULL,\n  `productLine` varchar(50) NOT NULL,\n  `productScale` varchar(10) NOT NULL,\n  `productVendor` varchar(50) NOT NULL,\n  `productDescription` text NOT NULL,\n  `quantityInStock` smallint(6) NOT NULL,\n  `buyPrice` double NOT NULL,\n  `MSRP` double NOT NULL,\n  PRIMARY KEY (`productCode`)\n) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;\nINSERT INTO `classicmodels`.`Product` (`productCode`,`productName`,`productLine`,`productScale`,`productVendor`,`productDescription`,`quantityInStock`,`buyPrice`,`MSRP`) VALUES \n ('S10_1678','1969 Harley Davidson Ultimate Chopper','Motorcycles','1:10','Min Lin Diecast','This replica features working kickstand, front suspension, gear-shift lever, footbrake lever, drive chain, wheels and steering. All parts are particularly delicate due to their precise scale and require special care and attention.',7933,48.81,95.7),\n ('S10_1949','1952 Alpine Renault 1300','Classic Cars','1:10','Classic Metal Creations','Turnable front wheels; steering function; detailed interior; detailed engine; opening hood; opening trunk; opening doors; and detailed chassis.',7305,98.58,214.3),\n ('S10_2016','1996 Moto Guzzi 1100i','Motorcycles','1:10','Highway 66 Mini Classics','Official Moto Guzzi logos and insignias, saddle bags located on side of motorcycle, detailed engine, working steering, working suspension, two leather seats, luggage rack, dual exhaust pipes, small saddle bag located on handle bars, two-tone paint with chrome accents, superior die-cast detail , rotating wheels , working kick stand, diecast metal with plastic parts and baked enamel finish.',6625,68.99,118.94),\n ('S10_4698','2003 Harley-Davidson Eagle Drag Bike','Motorcycles','1:10','Red Start Diecast','Model features, official Harley Davidson logos and insignias, detachable rear wheelie bar, heavy diecast metal with resin parts, authentic multi-color tampo-printed graphics, separate engine drive belts, free-turning front fork, rotating tires and rear racing slick, certificate of authenticity, detailed engine, display stand\\r\\n, precision diecast replica, baked enamel finish, 1:10 scale model, removable fender, seat and tank cover piece for displaying the superior detail of the v-twin engine',5582,91.02,193.66),\n ('S10_4757','1972 Alfa Romeo GTA','Classic Cars','1:10','Motor City Art Classics','Features include: Turnable front wheels; steering function; detailed interior; detailed engine; opening hood; opening trunk; opening doors; and detailed chassis.',3252,85.68,136),\n ('S10_4962','1962 LanciaA Delta 16V','Classic Cars','1:10','Second Gear Diecast','Features include: Turnable front wheels; steering function; detailed interior; detailed engine; opening hood; opening trunk; opening doors; and detailed chassis.',6791,103.42,147.74),\n ('S12_1099','1968 Ford Mustang','Classic Cars','1:12','Autoart Studio Design','Hood, doors and trunk all open to reveal highly detailed interior features. Steering wheel actually turns the front wheels. Color dark green.',68,95.34,194.57),\n ('S12_1108','2001 Ferrari Enzo','Classic Cars','1:12','Second Gear Diecast','Turnable front wheels; steering function; detailed interior; detailed engine; opening hood; opening trunk; opening doors; and detailed chassis.',3619,95.59,207.8),\n ('S12_1666','1958 Setra Bus','Trucks and Buses','1:12','Welly Diecast Productions','Model features 30 windows, skylights & glare resistant glass, working steering system, original logos',1579,77.9,136.67),\n ('S12_2823','2002 Suzuki XREO','Motorcycles','1:12','Unimax Art Galleries','Official logos and insignias, saddle bags located on side of motorcycle, detailed engine, working steering, working suspension, two leather seats, luggage rack, dual exhaust pipes, small saddle bag located on handle bars, two-tone paint with chrome accents, superior die-cast detail , rotating wheels , working kick stand, diecast metal with plastic parts and baked enamel finish.',9997,66.27,150.62),\n ('S12_3148','1969 Corvair Monza','Classic Cars','1:18','Welly Diecast Productions','1:18 scale die-cast about 10\\\" long doors open, hood opens, trunk opens and wheels roll',6906,89.14,151.08),\n ('S12_3380','1968 Dodge Charger','Classic Cars','1:12','Welly Diecast Productions','1:12 scale model of a 1968 Dodge Charger. Hood, doors and trunk all open to reveal highly detailed interior features. Steering wheel actually turns the front wheels. Color black',9123,75.16,117.44),\n ('S12_3891','1969 Ford Falcon','Classic Cars','1:12','Second Gear Diecast','Turnable front wheels; steering function; detailed interior; detailed engine; opening hood; opening trunk; opening doors; and detailed chassis.',1049,83.05,173.02),\n ('S12_3990','1970 Plymouth Hemi Cuda','Classic Cars','1:12','Studio M Art Models','Very detailed 1970 Plymouth Cuda model in 1:12 scale. The Cuda is generally accepted as one of the fastest original muscle cars from the 1970s. This model is a reproduction of one of the orginal 652 cars built in 1970. Red color.',5663,31.92,79.8),\n ('S12_4473','1957 Chevy Pickup','Trucks and Buses','1:12','Exoto Designs','1:12 scale die-cast about 20\\\" long Hood opens, Rubber wheels',6125,55.7,118.5),\n ('S12_4675','1969 Dodge Charger','Classic Cars','1:12','Welly Diecast Productions','Detailed model of the 1969 Dodge Charger. This model includes finely detailed interior and exterior features. Painted in red and white.',7323,58.73,115.16),\n ('S18_1097','1940 Ford Pickup Truck','Trucks and Buses','1:18','Studio M Art Models','This model features soft rubber tires, working steering, rubber mud guards, authentic Ford logos, detailed undercarriage, opening doors and hood,  removable split rear gate, full size spare mounted in bed, detailed interior with opening glove box',2613,58.33,116.67),\n ('S18_1129','1993 Mazda RX-7','Classic Cars','1:18','Highway 66 Mini Classics','This model features, opening hood, opening doors, detailed engine, rear spoiler, opening trunk, working steering, tinted windows, baked enamel finish. Color red.',3975,83.51,141.54),\n ('S18_1342','1937 Lincoln Berline','Vintage Cars','1:18','Motor City Art Classics','Features opening engine cover, doors, trunk, and fuel filler cap. Color black',8693,60.62,102.74),\n ('S18_1367','1936 Mercedes-Benz 500K Special Roadster','Vintage Cars','1:18','Studio M Art Models','This 1:18 scale replica is constructed of heavy die-cast metal and has all the features of the original: working doors and rumble seat, independent spring suspension, detailed interior, working steering system, and a bifold hood that reveals an engine so accurate that it even includes the wiring. All this is topped off with a baked enamel finish. Color white.',8635,24.26,53.91),\n ('S18_1589','1965 Aston Martin DB5','Classic Cars','1:18','Classic Metal Creations','Die-cast model of the silver 1965 Aston Martin DB5 in silver. This model includes full wire wheels and doors that open with fully detailed passenger compartment. In 1:18 scale, this model measures approximately 10 inches/20 cm long.',9042,65.96,124.44),\n ('S18_1662','1980s Black Hawk Helicopter','Planes','1:18','Red Start Diecast','1:18 scale replica of actual Armys UH-60L BLACK HAWK Helicopter. 100% hand-assembled. Features rotating rotor blades, propeller blades and rubber wheels.',5330,77.27,157.69),\n ('S18_1749','1917 Grand Touring Sedan','Vintage Cars','1:18','Welly Diecast Productions','This 1:18 scale replica of the 1917 Grand Touring car has all the features you would expect from museum quality reproductions: all four doors and bi-fold hood opening, detailed engine and instrument panel, chrome-look trim, and tufted upholstery, all topped off with a factory baked-enamel finish.',2724,86.7,170),\n ('S18_1889','1948 Porsche 356-A Roadster','Classic Cars','1:18','Gearbox Collectibles','This precision die-cast replica features opening doors, superb detail and craftsmanship, working steering system, opening forward compartment, opening rear trunk with removable spare, 4 wheel independent spring suspension as well as factory baked enamel finish.',8826,53.9,77),\n ('S18_1984','1995 Honda Civic','Classic Cars','1:18','Min Lin Diecast','This model features, opening hood, opening doors, detailed engine, rear spoiler, opening trunk, working steering, tinted windows, baked enamel finish. Color yellow.',9772,93.89,142.25),\n ('S18_2238','1998 Chrysler Plymouth Prowler','Classic Cars','1:18','Gearbox Collectibles','Turnable front wheels; steering function; detailed interior; detailed engine; opening hood; opening trunk; opening doors; and detailed chassis.',4724,101.51,163.73),\n ('S18_2248','1911 Ford Town Car','Vintage Cars','1:18','Motor City Art Classics','Features opening hood, opening doors, opening trunk, wide white wall tires, front door arm rests, working steering system',540,33.3,60.54),\n ('S18_2319','1964 Mercedec Tour Bus','Trucks and Buses','1:18','Unimax Art Galleries','Exact replica. 100+ parts. working steering system, original logos',8258,74.86,122.73),\n ('S18_2325','1932 Model A Ford J-Coupe','Vintage Cars','1:18','Autoart Studio Design','This model features grille-mounted chrome horn, lift-up louvered hood, fold-down rumble seat, working steering system, chrome-covered spare, opening doors, detailed and wired engine',9354,58.48,127.13),\n ('S18_2432','1926 Ford Fire Engine','Trucks and Buses','1:18','Carousel DieCast Legends','Gleaming red handsome appearance. Everything is here the fire hoses, ladder, axes, bells, lanterns, ready to fight any inferno.',2018,24.92,60.77),\n ('S18_2581','P-51-D Mustang','Planes','1:72','Gearbox Collectibles','Has retractable wheels and comes with a stand',992,49,84.48),\n ('S18_2625','1936 Harley Davidson El Knucklehead','Motorcycles','1:18','Welly Diecast Productions','Intricately detailed with chrome accents and trim, official die-struck logos and baked enamel finish.',4357,24.23,60.57),\n ('S18_2795','1928 Mercedes-Benz SSK','Vintage Cars','1:18','Gearbox Collectibles','This 1:18 replica features grille-mounted chrome horn, lift-up louvered hood, fold-down rumble seat, working steering system, chrome-covered spare, opening doors, detailed and wired engine. Color black.',548,72.56,168.75),\n ('S18_2870','1999 Indy 500 Monte Carlo SS','Classic Cars','1:18','Red Start Diecast','Features include opening and closing doors. Color: Red',8164,56.76,132),\n ('S18_2949','1913 Ford Model T Speedster','Vintage Cars','1:18','Carousel DieCast Legends','This 250 part reproduction includes moving handbrakes, clutch, throttle and foot pedals, squeezable horn, detailed wired engine, removable water, gas, and oil cans, pivoting monocle windshield, all topped with a baked enamel red finish. Each replica comes with an Owners Title and Certificate of Authenticity. Color red.',4189,60.78,101.31),\n ('S18_2957','1934 Ford V8 Coupe','Vintage Cars','1:18','Min Lin Diecast','Chrome Trim, Chrome Grille, Opening Hood, Opening Doors, Opening Trunk, Detailed Engine, Working Steering System',5649,34.35,62.46),\n ('S18_3029','1999 Yamaha Speed Boat','Ships','1:18','Min Lin Diecast','Exact replica. Wood and Metal. Many extras including rigging, long boats, pilot house, anchors, etc. Comes with three masts, all square-rigged.',4259,51.61,86.02),\n ('S18_3136','18th Century Vintage Horse Carriage','Vintage Cars','1:18','Red Start Diecast','Hand crafted diecast-like metal horse carriage is re-created in about 1:18 scale of antique horse carriage. This antique style metal Stagecoach is all hand-assembled with many different parts.\\r\\n\\r\\nThis collectible metal horse carriage is painted in classic Red, and features turning steering wheel and is entirely hand-finished.',5992,60.74,104.72),\n ('S18_3140','1903 Ford Model A','Vintage Cars','1:18','Unimax Art Galleries','Features opening trunk,  working steering system',3913,68.3,136.59),\n ('S18_3232','1992 Ferrari 360 Spider red','Classic Cars','1:18','Unimax Art Galleries','his replica features opening doors, superb detail and craftsmanship, working steering system, opening forward compartment, opening rear trunk with removable spare, 4 wheel independent spring suspension as well as factory baked enamel finish.',8347,77.9,169.34),\n ('S18_3233','1985 Toyota Supra','Classic Cars','1:18','Highway 66 Mini Classics','This model features soft rubber tires, working steering, rubber mud guards, authentic Ford logos, detailed undercarriage, opening doors and hood, removable split rear gate, full size spare mounted in bed, detailed interior with opening glove box',7733,57.01,107.57),\n ('S18_3259','Collectable Wooden Train','Trains','1:18','Carousel DieCast Legends','Hand crafted wooden toy train set is in about 1:18 scale, 25 inches in total length including 2 additional carts, of actual vintage train. This antique style wooden toy train model set is all hand-assembled with 100% wood.',6450,67.56,100.84),\n ('S18_3278','1969 Dodge Super Bee','Classic Cars','1:18','Min Lin Diecast','This replica features opening doors, superb detail and craftsmanship, working steering system, opening forward compartment, opening rear trunk with removable spare, 4 wheel independent spring suspension as well as factory baked enamel finish.',1917,49.05,80.41),\n ('S18_3320','1917 Maxwell Touring Car','Vintage Cars','1:18','Exoto Designs','Features Gold Trim, Full Size Spare Tire, Chrome Trim, Chrome Grille, Opening Hood, Opening Doors, Opening Trunk, Detailed Engine, Working Steering System',7913,57.54,99.21),\n ('S18_3482','1976 Ford Gran Torino','Classic Cars','1:18','Gearbox Collectibles','Highly detailed 1976 Ford Gran Torino \\\"Starsky and Hutch\\\" diecast model. Very well constructed and painted in red and white patterns.',9127,73.49,146.99),\n ('S18_3685','1948 Porsche Type 356 Roadster','Classic Cars','1:18','Gearbox Collectibles','This model features working front and rear suspension on accurately replicated and actuating shock absorbers as well as opening engine cover, rear stabilizer flap,  and 4 opening doors.',8990,62.16,141.28),\n ('S18_3782','1957 Vespa GS150','Motorcycles','1:18','Studio M Art Models','Features rotating wheels , working kick stand. Comes with stand.',7689,32.95,62.17),\n ('S18_3856','1941 Chevrolet Special Deluxe Cabriolet','Vintage Cars','1:18','Exoto Designs','Features opening hood, opening doors, opening trunk, wide white wall tires, front door arm rests, working steering system, leather upholstery. Color black.',2378,64.58,105.87),\n ('S18_4027','1970 Triumph Spitfire','Classic Cars','1:18','Min Lin Diecast','Features include opening and closing doors. Color: White.',5545,91.92,143.62),\n ('S18_4409','1932 Alfa Romeo 8C2300 Spider Sport','Vintage Cars','1:18','Exoto Designs','This 1:18 scale precision die cast replica features the 6 front headlights of the original, plus a detailed version of the 142 horsepower straight 8 engine, dual spares and their famous comprehensive dashboard. Color black.',6553,43.26,92.03),\n ('S18_4522','1904 Buick Runabout','Vintage Cars','1:18','Exoto Designs','Features opening trunk,  working steering system',8290,52.66,87.77),\n ('S18_4600','1940s Ford truck','Trucks and Buses','1:18','Motor City Art Classics','This 1940s Ford Pick-Up truck is re-created in 1:18 scale of original 1940s Ford truck. This antique style metal 1940s Ford Flatbed truck is all hand-assembled. This collectible 1940s Pick-Up truck is painted in classic dark green color, and features rotating wheels.',3128,84.76,121.08),\n ('S18_4668','1939 Cadillac Limousine','Vintage Cars','1:18','Studio M Art Models','Features completely detailed interior including Velvet flocked drapes,deluxe wood grain floor, and a wood grain casket with seperate chrome handles',6645,23.14,50.31),\n ('S18_4721','1957 Corvette Convertible','Classic Cars','1:18','Classic Metal Creations','1957 die cast Corvette Convertible in Roman Red with white sides and whitewall tires. 1:18 scale quality die-cast with detailed engine and underbvody. Now you can own The Classic Corvette.',1249,69.93,148.8),\n ('S18_4933','1957 Ford Thunderbird','Classic Cars','1:18','Studio M Art Models','This 1:18 scale precision die-cast replica, with its optional porthole hardtop and factory baked-enamel Thunderbird Bronze finish, is a 100% accurate rendition of this American classic.',3209,34.21,71.27),\n ('S24_1046','1970 Chevy Chevelle SS 454','Classic Cars','1:24','Unimax Art Galleries','This model features rotating wheels, working streering system and opening doors. All parts are particularly delicate due to their precise scale and require special care and attention. It should not be picked up by the doors, roof, hood or trunk.',1005,49.24,73.49),\n ('S24_1444','1970 Dodge Coronet','Classic Cars','1:24','Highway 66 Mini Classics','1:24 scale die-cast about 18\\\" long doors open, hood opens and rubber wheels',4074,32.37,57.8),\n ('S24_1578','1997 BMW R 1100 S','Motorcycles','1:24','Autoart Studio Design','Detailed scale replica with working suspension and constructed from over 70 parts',7003,60.86,112.7),\n ('S24_1628','1966 Shelby Cobra 427 S/C','Classic Cars','1:24','Carousel DieCast Legends','This diecast model of the 1966 Shelby Cobra 427 S/C includes many authentic details and operating parts. The 1:24 scale model of this iconic lighweight sports car from the 1960s comes in silver and its own display case.',8197,29.18,50.31),\n ('S24_1785','1928 British Royal Navy Airplane','Planes','1:24','Classic Metal Creations','Official logos and insignias',3627,66.74,109.42),\n ('S24_1937','1939 Chevrolet Deluxe Coupe','Vintage Cars','1:24','Motor City Art Classics','This 1:24 scale die-cast replica of the 1939 Chevrolet Deluxe Coupe has the same classy look as the original. Features opening trunk, hood and doors and a showroom quality baked enamel finish.',7332,22.57,33.19),\n ('S24_2000','1960 BSA Gold Star DBD34 1960','Motorcycles','1:24','Highway 66 Mini Classics','Detailed scale replica with working suspension and constructed from over 70 parts',15,37.32,76.17),\n ('S24_2011','18th century schooner','Ships','1:24','Carousel DieCast Legends','All wood with canvas sails. Many extras including rigging, long boats, pilot house, anchors, etc. Comes with 4 masts, all square-rigged.',1898,82.34,122.89),\n ('S24_2022','1938 Cadillac V-16 Presidential Limousine','Vintage Cars','1:24','Classic Metal Creations','This 1:24 scale precision die cast replica of the 1938 Cadillac V-16 Presidential Limousine has all the details of the original, from the flags on the front to an opening back seat compartment complete with telephone and rifle. Features factory baked-enamel black finish, hood goddess ornament, working jump seats.',2847,20.61,44.8),\n ('S24_2300','1962 Volkswagen Microbus','Trucks and Buses','1:24','Autoart Studio Design','This 1:18 scale die cast replica of the 1962 Microbus is loaded with features: A working steering system, opening front doors and tailgate, and famous two-tone factory baked enamel finish, are all topped of by the sliding, real fabric, sunroof.',2327,61.34,127.79),\n ('S24_2360','1982 Ducati 900 Monster','Motorcycles','1:24','Highway 66 Mini Classics','Features two-tone paint with chrome accents, superior die-cast detail , rotating wheels , working kick stand',6840,47.1,69.26),\n ('S24_2766','1949 Jaguar XK 120','Classic Cars','1:24','Classic Metal Creations','Precision-engineered from original Jaguar specification in perfect scale ratio. Features opening doors, superb detail and craftsmanship, working steering system, opening forward compartment, opening rear trunk with removable spare, 4 wheel independent spring suspension as well as factory baked enamel finish.',2350,47.25,90.87),\n ('S24_2840','1958 Chevy Corvette Limited Edition','Classic Cars','1:24','Carousel DieCast Legends','The operating parts of this 1958 Chevy Corvette Limited Edition are particularly delicate due to their precise scale and require special care and attention. Features rotating wheels, working streering, opening doors and trunk. Color dark green.',2542,15.91,35.36),\n ('S24_2841','1900s Vintage Bi-Plane','Planes','1:24','Autoart Studio Design','Hand crafted diecast-like metal bi-plane is re-created in about 1:24 scale of antique pioneer airplane. All hand-assembled with many different parts. Hand-painted in classic yellow and features correct markings of original airplane.',5942,34.25,68.51),\n ('S24_2887','1952 Citroen-15CV','Classic Cars','1:24','Exoto Designs','Precision crafted hand-assembled 1:18 scale reproduction of the 1952 15CV, with its independent spring suspension, working steering system, opening doors and hood, detailed engine and instrument panel, all topped of with a factory fresh baked enamel finish.',1452,72.82,117.44),\n ('S24_2972','1982 Lamborghini Diablo','Classic Cars','1:24','Second Gear Diecast','This replica features opening doors, superb detail and craftsmanship, working steering system, opening forward compartment, opening rear trunk with removable spare, 4 wheel independent spring suspension as well as factory baked enamel finish.',7723,16.24,37.76),\n ('S24_3151','1912 Ford Model T Delivery Wagon','Vintage Cars','1:24','Min Lin Diecast','This model features chrome trim and grille, opening hood, opening doors, opening trunk, detailed engine, working steering system. Color white.',9173,46.91,88.51),\n ('S24_3191','1969 Chevrolet Camaro Z28','Classic Cars','1:24','Exoto Designs','1969 Z/28 Chevy Camaro 1:24 scale replica. The operating parts of this limited edition 1:24 scale diecast model car 1969 Chevy Camaro Z28- hood, trunk, wheels, streering, suspension and doors- are particularly delicate due to their precise scale and require special care and attention.',4695,50.51,85.61),\n ('S24_3371','1971 Alpine Renault 1600s','Classic Cars','1:24','Welly Diecast Productions','This 1971 Alpine Renault 1600s replica Features opening doors, superb detail and craftsmanship, working steering system, opening forward compartment, opening rear trunk with removable spare, 4 wheel independent spring suspension as well as factory baked enamel finish.',7995,38.58,61.23),\n ('S24_3420','1937 Horch 930V Limousine','Vintage Cars','1:24','Autoart Studio Design','Features opening hood, opening doors, opening trunk, wide white wall tires, front door arm rests, working steering system',2902,26.3,65.75),\n ('S24_3432','2002 Chevy Corvette','Classic Cars','1:24','Gearbox Collectibles','The operating parts of this limited edition Diecast 2002 Chevy Corvette 50th Anniversary Pace car Limited Edition are particularly delicate due to their precise scale and require special care and attention. Features rotating wheels, poseable streering, opening doors and trunk.',9446,62.11,107.08),\n ('S24_3816','1940 Ford Delivery Sedan','Vintage Cars','1:24','Carousel DieCast Legends','Chrome Trim, Chrome Grille, Opening Hood, Opening Doors, Opening Trunk, Detailed Engine, Working Steering System. Color black.',6621,48.64,83.86),\n ('S24_3856','1956 Porsche 356A Coupe','Classic Cars','1:18','Classic Metal Creations','Features include: Turnable front wheels; steering function; detailed interior; detailed engine; opening hood; opening trunk; opening doors; and detailed chassis.',6600,98.3,140.43),\n ('S24_3949','Corsair F4U ( Bird Cage)','Planes','1:24','Second Gear Diecast','Has retractable wheels and comes with a stand. Official logos and insignias.',6812,29.34,68.24),\n ('S24_3969','1936 Mercedes Benz 500k Roadster','Vintage Cars','1:24','Red Start Diecast','This model features grille-mounted chrome horn, lift-up louvered hood, fold-down rumble seat, working steering system and rubber wheels. Color black.',2081,21.75,41.03),\n ('S24_4048','1992 Porsche Cayenne Turbo Silver','Classic Cars','1:24','Exoto Designs','This replica features opening doors, superb detail and craftsmanship, working steering system, opening forward compartment, opening rear trunk with removable spare, 4 wheel independent spring suspension as well as factory baked enamel finish.',6582,69.78,118.28),\n ('S24_4258','1936 Chrysler Airflow','Vintage Cars','1:24','Second Gear Diecast','Features opening trunk,  working steering system. Color dark green.',4710,57.46,97.39),\n ('S24_4278','1900s Vintage Tri-Plane','Planes','1:24','Unimax Art Galleries','Hand crafted diecast-like metal Triplane is Re-created in about 1:24 scale of antique pioneer airplane. This antique style metal triplane is all hand-assembled with many different parts.',2756,36.23,72.45),\n ('S24_4620','1961 Chevrolet Impala','Classic Cars','1:18','Classic Metal Creations','This 1:18 scale precision die-cast reproduction of the 1961 Chevrolet Impala has all the features-doors, hood and trunk that open; detailed 409 cubic-inch engine; chrome dashboard and stick shift, two-tone interior; working steering system; all topped of with a factory baked-enamel finish.',7869,32.33,80.84),\n ('S32_1268','1980’s GM Manhattan Express','Trucks and Buses','1:32','Motor City Art Classics','This 1980’s era new look Manhattan express is still active, running from the Bronx to mid-town Manhattan. Has 35 opeining windows and working lights. Needs a battery.',5099,53.93,96.31),\n ('S32_1374','1997 BMW F650 ST','Motorcycles','1:32','Exoto Designs','Features official die-struck logos and baked enamel finish. Comes with stand.',178,66.92,99.89),\n ('S32_2206','1982 Ducati 996 R','Motorcycles','1:32','Gearbox Collectibles','Features rotating wheels , working kick stand. Comes with stand.',9241,24.14,40.23),\n ('S32_2509','1954 Greyhound Scenicruiser','Trucks and Buses','1:32','Classic Metal Creations','Model features bi-level seating, 50 windows, skylights & glare resistant glass, working steering system, original logos',2874,25.98,54.11),\n ('S32_3207','1950s Chicago Surface Lines Streetcar','Trains','1:32','Gearbox Collectibles','This streetcar is a joy to see. It has 80 separate windows, electric wire guides, detailed interiors with seats, poles and drivers controls, rolling and turning wheel assemblies, plus authentic factory baked-enamel finishes (Green Hornet for Chicago and Cream and Crimson for Boston).',8601,26.72,62.14),\n ('S32_3522','1996 Peterbilt 379 Stake Bed with Outrigger','Trucks and Buses','1:32','Red Start Diecast','This model features, opening doors, detailed engine, working steering, tinted windows, detailed interior, die-struck logos, removable stakes operating outriggers, detachable second trailer, functioning 360-degree self loader, precision molded resin trailer and trim, baked enamel finish on cab',814,33.61,64.64),\n ('S32_4289','1928 Ford Phaeton Deluxe','Vintage Cars','1:32','Highway 66 Mini Classics','This model features grille-mounted chrome horn, lift-up louvered hood, fold-down rumble seat, working steering system',136,33.02,68.79),\n ('S32_4485','1974 Ducati 350 Mk3 Desmo','Motorcycles','1:32','Second Gear Diecast','This model features two-tone paint with chrome accents, superior die-cast detail , rotating wheels , working kick stand',3341,56.13,102.05),\n ('S50_1341','1930 Buick Marquette Phaeton','Vintage Cars','1:50','Studio M Art Models','Features opening trunk,  working steering system',7062,27.06,43.64),\n ('S50_1392','Diamond T620 Semi-Skirted Tanker','Trucks and Buses','1:50','Highway 66 Mini Classics','This limited edition model is licensed and perfectly scaled for Lionel Trains. The Diamond T620 has been produced in solid precision diecast and painted with a fire baked enamel finish. It comes with a removable tanker and is a perfect model to add authenticity to your static train or car layout or to just have on display.',1016,68.29,115.75),\n ('S50_1514','1962 City of Detroit Streetcar','Trains','1:50','Classic Metal Creations','This streetcar is a joy to see. It has 99 separate windows, electric wire guides, detailed interiors with seats, poles and drivers controls, rolling and turning wheel assemblies, plus authentic factory baked-enamel finishes (Green Hornet for Chicago and Cream and Crimson for Boston).',1645,37.49,58.58),\n ('S50_4713','2002 Yamaha YZR M1','Motorcycles','1:50','Autoart Studio Design','Features rotating wheels , working kick stand. Comes with stand.',600,34.17,81.36),\n ('S700_1138','The Schooner Bluenose','Ships','1:700','Autoart Studio Design','All wood with canvas sails. Measures 31 1/2 inches in Length, 22 inches High and 4 3/4 inches Wide. Many extras.\\r\\nThe schooner Bluenose was built in Nova Scotia in 1921 to fish the rough waters off the coast of Newfoundland. Because of the Bluenose racing prowess she became the pride of all Canadians. Still featured on stamps and the Canadian dime, the Bluenose was lost off Haiti in 1946.',1897,34,66.67),\n ('S700_1691','American Airlines: B767-300','Planes','1:700','Min Lin Diecast','Exact replia with official logos and insignias and retractable wheels',5841,51.15,91.34),\n ('S700_1938','The Mayflower','Ships','1:700','Studio M Art Models','Measures 31 1/2 inches Long x 25 1/2 inches High x 10 5/8 inches Wide\\r\\nAll wood with canvas sail. Extras include long boats, rigging, ladders, railing, anchors, side cannons, hand painted, etc.\\r\\n\\r\\nThe Mayfower was already old in 1620, when the pilgrims charted her to bring their band of 103 to North America.',737,43.3,86.61),\n ('S700_2047','HMS Bounty','Ships','1:700','Unimax Art Galleries','Measures 30 inches Long x 27 1/2 inches High x 4 3/4 inches Wide. \\r\\nMany extras including rigging, long boats, pilot house, anchors, etc. Comes with three masts, all square-rigged.',3501,39.83,90.52),\n ('S700_2466','America West Airlines B757-200','Planes','1:700','Motor City Art Classics','Official logos and insignias. Working steering system. Rotating jet engines',9653,68.8,99.72),\n ('S700_2610','The USS Constitution Ship','Ships','1:700','Red Start Diecast','All wood with canvas sails. Measures 31 1/2\\\" Length x 22 3/8\\\" High x 8 1/4\\\" Width. Extras include 4 boats on deck, sea sprite on bow, anchors, copper railing, pilot houses, etc.\\r\\n\\r\\nThis was one of six warships commissioned by George Washington and launched in 1797. The nickname Old Ironsides was given the ship when British cannonballs bounced off the 21-inch oak planking of the American frigates hull. The Constitution has been restored and now resides in Boston Harbor.',7083,33.97,72.28),\n ('S700_2824','1982 Camaro Z28','Classic Cars','1:18','Carousel DieCast Legends','Features include opening and closing doors. Color: White. \\r\\nMeasures approximately 9 1/2\\\" Long.',6934,46.53,101.15),\n ('S700_2834','ATA: B757-300','Planes','1:700','Highway 66 Mini Classics','Exact replia with official logos and insignias and retractable wheels',7106,59.33,118.65),\n ('S700_3167','F/A 18 Hornet 1/72','Planes','1:72','Motor City Art Classics','10\\\" Wingspan with retractable landing gears.Comes with pilot',551,54.4,80),\n ('S700_3505','The Titanic','Ships','1:700','Carousel DieCast Legends','Completed model measures 19 1/2 inches long, 9 inches high, 3inches wide and is in barn red/black. All wood and metal.',1956,51.09,100.17),\n ('S700_3962','The Queen Mary','Ships','1:700','Welly Diecast Productions','Exact replica. Wood and Metal. Many extras including rigging, long boats, pilot house, anchors, etc. Comes with three masts, all square-rigged.',5088,53.63,99.31),\n ('S700_4002','American Airlines: MD-11S','Planes','1:700','Second Gear Diecast','Polished finish. Exact replia with official logos and insignias and retractable wheels',8820,36.27,74.03),\n ('S72_1253','Boeing X-32A JSF','Planes','1:72','Motor City Art Classics','10\\\" Wingspan with retractable landing gears.Comes with pilot',4857,32.77,49.66),\n ('S72_3212','Pont Yacht','Ships','1:72','Unimax Art Galleries','Measures 38 inches Long x 33 3/4 inches High. Includes a stand.\\r\\nMany extras including rigging, long boats, pilot house, anchors, etc. Comes with 2 masts, all square-rigged',414,33.3,54.6);\n\n\nDROP TABLE IF EXISTS `classicmodels`.`Contrato`;\nCREATE TABLE  `classicmodels`.`Contrato` (\n  `id` numeric(10) NOT NULL,\n  `numero_contrato` varchar(50) NOT NULL,\n  PRIMARY KEY (`id`)\n) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;\nINSERT INTO `classicmodels`.`Contrato` (`id`,`numero_contrato`) VALUES \n (1, '100001-9');\n \nDROP TABLE IF EXISTS `classicmodels`.`Parcela`;\nCREATE TABLE  `classicmodels`.`Parcela` (\n  `id` numeric(10) NOT NULL,\n  `numero_parcela` numeric(10) NOT NULL,\n  `contrato_id` numeric(10) NOT NULL,\n  PRIMARY KEY (`id`)\n) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;\nINSERT INTO `classicmodels`.`Parcela` (`id`,`numero_parcela`,`contrato_id`) VALUES \n (1, 1, 1);\n \nDROP TABLE IF EXISTS `classicmodels`.`Liquidacao`;\nCREATE TABLE  `classicmodels`.`Liquidacao` (\n  `id` numeric(10) NOT NULL,\n  `valor_total` numeric(10) NOT NULL,\n  `contrato_id` numeric(10) NOT NULL,\n  `parcela_id` numeric(10) NULL,\n  PRIMARY KEY (`id`)\n) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;\nINSERT INTO `classicmodels`.`Liquidacao` (`id`,`valor_total`,`contrato_id`, `parcela_id`) VALUES \n (1, 10000, 1, 1);\n \n\n \n \n-- Return to H2 regular mode\nSET MODE REGULAR;\n\n/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;\n/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;\n/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;\n/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;\n/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;\n/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;\n/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;\n"
  },
  {
    "path": "src/test/resources/com/alibaba/json/bvt/support/jaxrs/mock/resource/applicationContext-rest.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\r\n\txmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:context=\"http://www.springframework.org/schema/context\"\r\n\txmlns:jaxws=\"http://cxf.apache.org/jaxws\" xmlns:jaxrs=\"http://cxf.apache.org/jaxrs\"\r\n\txsi:schemaLocation=\" http://www.springframework.org/schema/beans  \r\n\t\t\t\t\t\thttp://www.springframework.org/schema/beans/spring-beans.xsd \r\n\t\t\t\t\t\thttp://www.springframework.org/schema/context \r\n\t\t\t\t\t\thttp://www.springframework.org/schema/context/spring-context.xsd \r\n\t\t\t\t\t\thttp://cxf.apache.org/jaxws \r\n\t\t\t\t\t\thttp://cxf.apache.org/schemas/jaxws.xsd \r\n\t\t\t\t\t\thttp://cxf.apache.org/jaxrs\r\n\t     \t\t\t\thttp://cxf.apache.org/schemas/jaxrs.xsd\">\r\n\r\n\t<import resource=\"classpath:META-INF/cxf/cxf.xml\" />\r\n\t<import resource=\"classpath:META-INF/cxf/cxf-servlet.xml\" />\r\n\r\n\t<!-- Component Scan -->\r\n\t<context:component-scan base-package=\"com.alibaba.json.bvt.support.jaxrs.mock.service\" />\r\n\r\n\t<bean id=\"inMessageInterceptor\" class=\"org.apache.cxf.interceptor.LoggingInInterceptor\" />\r\n\t<bean id=\"outMessageInterceptor\" class=\"org.apache.cxf.interceptor.LoggingOutInterceptor\" />\r\n\r\n\t<jaxrs:server id=\"userServer\" address=\"/\">\r\n\t\t<jaxrs:inInterceptors>\r\n\t\t\t<ref bean=\"inMessageInterceptor\" />\r\n\t\t</jaxrs:inInterceptors>\r\n\t\t<jaxrs:outInterceptors>\r\n\t\t\t<ref bean=\"outMessageInterceptor\" />\r\n\t\t</jaxrs:outInterceptors>\r\n\t\t<jaxrs:serviceBeans>\r\n\t\t\t<ref bean=\"fastJsonRestful\" />\r\n\t\t</jaxrs:serviceBeans>\r\n\t\t<jaxrs:providers>\r\n\t\t\t<bean class=\"com.alibaba.fastjson.support.jaxrs.FastJsonProvider\" />\r\n\t\t</jaxrs:providers>\r\n\t\t<jaxrs:extensionMappings>\r\n\t\t\t<entry key=\"json\" value=\"application/json\" />\r\n\t\t</jaxrs:extensionMappings>\r\n\t\t<jaxrs:languageMappings>\r\n\t\t\t<entry key=\"en\" value=\"en-gb\" />\r\n\t\t</jaxrs:languageMappings>\r\n\t</jaxrs:server>\r\n\r\n</beans>"
  },
  {
    "path": "src/test/resources/com/alibaba/json/bvt/support/spring/mock/resource/applicationContext-mvc1.xml",
    "content": "<beans xmlns=\"http://www.springframework.org/schema/beans\"\r\n\txmlns:context=\"http://www.springframework.org/schema/context\"\r\n\txmlns:mvc=\"http://www.springframework.org/schema/mvc\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\n\txsi:schemaLocation=\"\r\n        http://www.springframework.org/schema/beans     \r\n        http://www.springframework.org/schema/beans/spring-beans.xsd\r\n        http://www.springframework.org/schema/context \r\n        http://www.springframework.org/schema/context/spring-context.xsd\r\n        http://www.springframework.org/schema/mvc\r\n        http://www.springframework.org/schema/mvc/spring-mvc.xsd\">\r\n\r\n\t<context:component-scan base-package=\"com.alibaba.json.bvt.support.spring.mock.controller\" />\r\n\t\r\n\t<mvc:annotation-driven>\r\n\t\t<mvc:message-converters>\r\n\t\t\t<bean\r\n\t\t\t\tclass=\"com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter\">\r\n\t\t\t\t<property name=\"supportedMediaTypes\">\r\n\t\t\t\t\t<list>\r\n\t\t\t\t\t\t<value>application/json</value>\r\n\t\t\t\t\t</list>\r\n\t\t\t\t</property>\r\n\t\t\t</bean>\r\n\t\t</mvc:message-converters>\r\n\t</mvc:annotation-driven>\r\n\r\n\t<mvc:default-servlet-handler /> \r\n</beans>\r\n"
  },
  {
    "path": "src/test/resources/com/alibaba/json/bvt/support/spring/mock/resource/applicationContext-mvc2.xml",
    "content": "<beans xmlns=\"http://www.springframework.org/schema/beans\"\r\n\txmlns:context=\"http://www.springframework.org/schema/context\"\r\n\txmlns:mvc=\"http://www.springframework.org/schema/mvc\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\n\txsi:schemaLocation=\"\r\n        http://www.springframework.org/schema/beans     \r\n        http://www.springframework.org/schema/beans/spring-beans.xsd\r\n        http://www.springframework.org/schema/context \r\n        http://www.springframework.org/schema/context/spring-context.xsd\r\n        http://www.springframework.org/schema/mvc\r\n        http://www.springframework.org/schema/mvc/spring-mvc.xsd\">\r\n\r\n\t<context:component-scan base-package=\"com.alibaba.json.bvt.support.spring.mock.controller\" />\r\n\r\n\t<mvc:annotation-driven />\r\n\r\n\t<mvc:default-servlet-handler />\r\n\r\n\t<bean\r\n\t\tclass=\"org.springframework.web.servlet.view.ContentNegotiatingViewResolver\">\r\n\t\t<property name=\"order\" value=\"1\" />\r\n\t\t<property name=\"contentNegotiationManager\">\r\n\t\t\t<bean class=\"org.springframework.web.accept.ContentNegotiationManager\">\r\n\t\t\t\t<constructor-arg>\r\n\t\t\t\t\t<bean\r\n\t\t\t\t\t\tclass=\"org.springframework.web.accept.PathExtensionContentNegotiationStrategy\">\r\n\t\t\t\t\t\t<constructor-arg>\r\n\t\t\t\t\t\t\t<map>\r\n\t\t\t\t\t\t\t\t<entry key=\"json\" value=\"application/json\" />\r\n\t\t\t\t\t\t\t</map>\r\n\t\t\t\t\t\t</constructor-arg>\r\n\t\t\t\t\t</bean>\r\n\t\t\t\t</constructor-arg>\r\n\t\t\t</bean>\r\n\t\t</property>\r\n\t\t<property name=\"defaultViews\">\r\n\t\t\t<list>\r\n\t\t\t\t<bean class=\"com.alibaba.fastjson.support.spring.FastJsonJsonView\" />\r\n\t\t\t</list>\r\n\t\t</property>\r\n\t</bean>\r\n</beans>\r\n"
  },
  {
    "path": "src/test/resources/com/alibaba/json/bvt/support/spring/mock/resource/applicationContext-mvc3.xml",
    "content": "<beans xmlns=\"http://www.springframework.org/schema/beans\"\r\n\txmlns:context=\"http://www.springframework.org/schema/context\"\r\n\txmlns:mvc=\"http://www.springframework.org/schema/mvc\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\n\txsi:schemaLocation=\"\r\n        http://www.springframework.org/schema/beans     \r\n        http://www.springframework.org/schema/beans/spring-beans.xsd\r\n        http://www.springframework.org/schema/context \r\n        http://www.springframework.org/schema/context/spring-context.xsd\r\n        http://www.springframework.org/schema/mvc\r\n        http://www.springframework.org/schema/mvc/spring-mvc.xsd\">\r\n\r\n\t<context:component-scan base-package=\"com.alibaba.json.bvt.support.spring.mock.controller\" />\r\n\t\r\n\t<mvc:annotation-driven>\r\n\t\t<mvc:message-converters>\r\n\t\t\t<bean\r\n\t\t\t\tclass=\"com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter4\">\r\n\t\t\t\t<property name=\"supportedMediaTypes\">\r\n\t\t\t\t\t<list>\r\n\t\t\t\t\t\t<value>application/json</value>\r\n\t\t\t\t\t</list>\r\n\t\t\t\t</property>\r\n\t\t\t</bean>\r\n\t\t</mvc:message-converters>\r\n\t</mvc:annotation-driven>\r\n\r\n\t<mvc:default-servlet-handler /> \r\n</beans>\r\n"
  },
  {
    "path": "src/test/resources/config/applicationContext-mvc1.xml",
    "content": "<beans xmlns=\"http://www.springframework.org/schema/beans\"\r\n\txmlns:context=\"http://www.springframework.org/schema/context\"\r\n\txmlns:mvc=\"http://www.springframework.org/schema/mvc\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\n\txsi:schemaLocation=\"\r\n        http://www.springframework.org/schema/beans     \r\n        http://www.springframework.org/schema/beans/spring-beans.xsd\r\n        http://www.springframework.org/schema/context \r\n        http://www.springframework.org/schema/context/spring-context.xsd\r\n        http://www.springframework.org/schema/mvc\r\n        http://www.springframework.org/schema/mvc/spring-mvc.xsd\">\r\n\r\n\t<context:component-scan base-package=\"com.alibaba.json.bvt.support.spring.mock.controller\" />\r\n\t\r\n\t<mvc:annotation-driven>\r\n\t\t<mvc:message-converters>\r\n\t\t\t<bean\r\n\t\t\t\tclass=\"com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter\">\r\n\t\t\t\t<property name=\"supportedMediaTypes\">\r\n\t\t\t\t\t<list>\r\n\t\t\t\t\t\t<value>application/x-www-form-urlencoded;charset=UTF-8</value>\r\n                        <value>text/plain;charset=UTF-8</value>\r\n\t\t\t\t\t\t<value>application/json;charset=UTF-8</value>\r\n\t\t\t\t\t</list>\r\n\t\t\t\t</property>\r\n\t\t\t</bean>\r\n\t\t</mvc:message-converters>\r\n\t</mvc:annotation-driven>\r\n\r\n\t<mvc:default-servlet-handler /> \r\n</beans>\r\n"
  },
  {
    "path": "src/test/resources/config/applicationContext-mvc2.xml",
    "content": "<beans xmlns=\"http://www.springframework.org/schema/beans\"\r\n\txmlns:context=\"http://www.springframework.org/schema/context\"\r\n\txmlns:mvc=\"http://www.springframework.org/schema/mvc\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\n\txsi:schemaLocation=\"\r\n        http://www.springframework.org/schema/beans     \r\n        http://www.springframework.org/schema/beans/spring-beans.xsd\r\n        http://www.springframework.org/schema/context \r\n        http://www.springframework.org/schema/context/spring-context.xsd\r\n        http://www.springframework.org/schema/mvc\r\n        http://www.springframework.org/schema/mvc/spring-mvc.xsd\">\r\n\r\n\t<context:component-scan\r\n\t\tbase-package=\"com.alibaba.json.bvt.support.spring.mock.controller\" />\r\n\r\n\t<mvc:annotation-driven />\r\n\r\n\t<mvc:default-servlet-handler />\r\n\r\n\t<bean\r\n\t\tclass=\"org.springframework.web.servlet.view.ContentNegotiatingViewResolver\">\r\n\t\t<property name=\"order\" value=\"1\" />\r\n\t\t<property name=\"contentNegotiationManager\">\r\n\t\t\t<bean class=\"org.springframework.web.accept.ContentNegotiationManager\">\r\n\t\t\t\t<constructor-arg>\r\n\t\t\t\t\t<bean\r\n\t\t\t\t\t\tclass=\"org.springframework.web.accept.PathExtensionContentNegotiationStrategy\">\r\n\t\t\t\t\t\t<constructor-arg>\r\n\t\t\t\t\t\t\t<map>\r\n\t\t\t\t\t\t\t\t<entry key=\"json\" value=\"application/json\" />\r\n\t\t\t\t\t\t\t</map>\r\n\t\t\t\t\t\t</constructor-arg>\r\n\t\t\t\t\t</bean>\r\n\t\t\t\t</constructor-arg>\r\n\t\t\t</bean>\r\n\t\t</property>\r\n\t\t<property name=\"viewResolvers\">\r\n\t\t\t<list>\r\n\t\t\t\t<bean class=\"org.springframework.web.servlet.view.BeanNameViewResolver\" />\r\n\t\t\t</list>\r\n\t\t</property>\r\n\t\t<property name=\"defaultViews\">\r\n\t\t\t<list>\r\n\t\t\t\t<bean class=\"com.alibaba.fastjson.support.spring.FastJsonJsonView\" />\r\n\t\t\t</list>\r\n\t\t</property>\r\n\t</bean>\r\n</beans>\r\n"
  },
  {
    "path": "src/test/resources/config/applicationContext-mvc3.xml",
    "content": "<beans xmlns=\"http://www.springframework.org/schema/beans\"\r\n\txmlns:context=\"http://www.springframework.org/schema/context\"\r\n\txmlns:mvc=\"http://www.springframework.org/schema/mvc\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\n\txsi:schemaLocation=\"\r\n        http://www.springframework.org/schema/beans     \r\n        http://www.springframework.org/schema/beans/spring-beans.xsd\r\n        http://www.springframework.org/schema/context \r\n        http://www.springframework.org/schema/context/spring-context.xsd\r\n        http://www.springframework.org/schema/mvc\r\n        http://www.springframework.org/schema/mvc/spring-mvc.xsd\">\r\n\r\n\t<context:component-scan base-package=\"com.alibaba.json.bvt.support.spring.mock.controller\" />\r\n\t\r\n\t<mvc:annotation-driven>\r\n\t\t<mvc:message-converters>\r\n\t\t\t<bean\r\n\t\t\t\tclass=\"com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter4\">\r\n\t\t\t\t<property name=\"supportedMediaTypes\">\r\n\t\t\t\t\t<list>\r\n\t\t\t\t\t\t<value>application/json;charset=UTF-8</value>\r\n\t\t\t\t\t</list>\r\n\t\t\t\t</property>\r\n\t\t\t</bean>\r\n\t\t</mvc:message-converters>\r\n\t</mvc:annotation-driven>\r\n\r\n\t<mvc:default-servlet-handler /> \r\n</beans>\r\n"
  },
  {
    "path": "src/test/resources/config/applicationContext-mvc4.xml",
    "content": "<beans xmlns=\"http://www.springframework.org/schema/beans\"\n\txmlns:context=\"http://www.springframework.org/schema/context\"\n\txmlns:mvc=\"http://www.springframework.org/schema/mvc\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\txsi:schemaLocation=\"\n        http://www.springframework.org/schema/beans     \n        http://www.springframework.org/schema/beans/spring-beans.xsd\n        http://www.springframework.org/schema/context \n        http://www.springframework.org/schema/context/spring-context.xsd\n        http://www.springframework.org/schema/mvc\n        http://www.springframework.org/schema/mvc/spring-mvc.xsd\">\n\n\t<context:component-scan base-package=\"com.alibaba.json.bvt.support.spring.mock.controller\" />\n\t\n\t<mvc:annotation-driven>\n\t\t<mvc:message-converters>\n\t\t\t<bean\n\t\t\t\tclass=\"com.alibaba.fastjson.support.spring.FastJsonpHttpMessageConverter4\">\n\t\t\t\t<property name=\"supportedMediaTypes\">\n\t\t\t\t\t<list>\n\t\t\t\t\t\t<value>application/json;charset=UTF-8</value>\n\t\t\t\t\t</list>\n\t\t\t\t</property>\n\t\t\t</bean>\n\t\t</mvc:message-converters>\n\t</mvc:annotation-driven>\n\n\t<mvc:default-servlet-handler />\n\n\t<bean id=\"fastJsonpResponseBodyAdvice\" class=\"com.alibaba.fastjson.support.spring.FastJsonpResponseBodyAdvice\">\n\t\t<constructor-arg>\n\t\t\t<list>\n\t\t\t\t<value>callback</value>\n\t\t\t\t<value>jsonp</value>\n\t\t\t</list>\n\t\t</constructor-arg>\n\t</bean>\n</beans>\n"
  },
  {
    "path": "src/test/resources/config/applicationContext-mvc5.xml",
    "content": "<beans xmlns=\"http://www.springframework.org/schema/beans\"\n\txmlns:context=\"http://www.springframework.org/schema/context\"\n\txmlns:mvc=\"http://www.springframework.org/schema/mvc\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\txsi:schemaLocation=\"\n        http://www.springframework.org/schema/beans     \n        http://www.springframework.org/schema/beans/spring-beans.xsd\n        http://www.springframework.org/schema/context \n        http://www.springframework.org/schema/context/spring-context.xsd\n        http://www.springframework.org/schema/mvc\n        http://www.springframework.org/schema/mvc/spring-mvc.xsd\">\n\n\t<context:component-scan base-package=\"com.alibaba.json.bvt.support.spring.mock.controller\" />\n\t\n\t<mvc:annotation-driven>\n\t\t<mvc:message-converters>\n\t\t\t<bean\n\t\t\t\tclass=\"com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter4\">\n\t\t\t\t<property name=\"supportedMediaTypes\">\n\t\t\t\t\t<list>\n\t\t\t\t\t\t<value>application/json;charset=UTF-8</value>\n\t\t\t\t\t</list>\n\t\t\t\t</property>\n\t\t\t</bean>\n\t\t</mvc:message-converters>\n\t</mvc:annotation-driven>\n\n\t<mvc:default-servlet-handler />\n\n\t<bean id=\"fastJsonViewResponseBodyAdvice\" class=\"com.alibaba.fastjson.support.spring.FastJsonViewResponseBodyAdvice\">\n\t</bean>\n</beans>\n"
  },
  {
    "path": "src/test/resources/config/applicationContext-rest.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\r\n\txmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:context=\"http://www.springframework.org/schema/context\"\r\n\txmlns:jaxws=\"http://cxf.apache.org/jaxws\" xmlns:jaxrs=\"http://cxf.apache.org/jaxrs\"\r\n\txsi:schemaLocation=\" http://www.springframework.org/schema/beans  \r\n\t\t\t\t\t\thttp://www.springframework.org/schema/beans/spring-beans.xsd \r\n\t\t\t\t\t\thttp://www.springframework.org/schema/context \r\n\t\t\t\t\t\thttp://www.springframework.org/schema/context/spring-context.xsd \r\n\t\t\t\t\t\thttp://cxf.apache.org/jaxws \r\n\t\t\t\t\t\thttp://cxf.apache.org/schemas/jaxws.xsd \r\n\t\t\t\t\t\thttp://cxf.apache.org/jaxrs\r\n\t     \t\t\t\thttp://cxf.apache.org/schemas/jaxrs.xsd\">\r\n\r\n\t<import resource=\"classpath:META-INF/cxf/cxf.xml\" />\r\n\t<import resource=\"classpath:META-INF/cxf/cxf-servlet.xml\" />\r\n\r\n\t<!-- Component Scan -->\r\n\t<context:component-scan base-package=\"com.alibaba.json.bvt.support.jaxrs.mock.service\" />\r\n\r\n\t<bean id=\"inMessageInterceptor\" class=\"org.apache.cxf.interceptor.LoggingInInterceptor\" />\r\n\t<bean id=\"outMessageInterceptor\" class=\"org.apache.cxf.interceptor.LoggingOutInterceptor\" />\r\n\r\n\t<jaxrs:server id=\"userServer\" address=\"/\">\r\n\t\t<jaxrs:inInterceptors>\r\n\t\t\t<ref bean=\"inMessageInterceptor\" />\r\n\t\t</jaxrs:inInterceptors>\r\n\t\t<jaxrs:outInterceptors>\r\n\t\t\t<ref bean=\"outMessageInterceptor\" />\r\n\t\t</jaxrs:outInterceptors>\r\n\t\t<jaxrs:serviceBeans>\r\n\t\t\t<ref bean=\"fastJsonRestful\" />\r\n\t\t</jaxrs:serviceBeans>\r\n\t\t<jaxrs:providers>\r\n\t\t\t<bean class=\"com.alibaba.fastjson.support.jaxrs.FastJsonProvider\" />\r\n\t\t</jaxrs:providers>\r\n\t\t<jaxrs:extensionMappings>\r\n\t\t\t<entry key=\"json\" value=\"application/json\" />\r\n\t\t</jaxrs:extensionMappings>\r\n\t\t<jaxrs:languageMappings>\r\n\t\t\t<entry key=\"en\" value=\"en-gb\" />\r\n\t\t</jaxrs:languageMappings>\r\n\t</jaxrs:server>\r\n\r\n</beans>"
  },
  {
    "path": "src/test/resources/data/media.1.cks",
    "content": "{\n\t\"images\":\n\t\t[\n\t\t\t{\n\t\t\t\t\"title\":\"Javaone Keynote\",\n\t\t\t\t\"height\":768,\n\t\t\t\t\"width\":1024,\n\t\t\t\t\"uri\":\"http://javaone.com/keynote_large.jpg\",\n\t\t\t\t\"size\":\"LARGE\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"title\":\"Javaone Keynote\",\n\t\t\t\t\"height\":240,\n\t\t\t\t\"width\":320,\n\t\t\t\t\"uri\":\"http://javaone.com/keynote_small.jpg\",\n\t\t\t\t\"size\":\"SMALL\"\n\t\t\t}\n\t\t],\n\t\"media\":{\n\t\t\"duration\":18000000,\n\t\t\"title\":\"Javaone Keynote\",\n\t\t\"height\":480,\n\t\t\"player\":\"JAVA\",\n\t\t\"width\":640,\n\t\t\"bitrate\":262144,\n\t\t\"format\":\"video/mpg4\",\n\t\t\"persons\":\n\t\t\t[\n\t\t\t\t\"Bill Gates\",\n\t\t\t\t\"Steve Jobs\"\n\t\t\t],\n\t\t\"uri\":\"http://javaone.com/keynote.mpg\",\n\t\t\"size\":58982400\n\t}\n}\n"
  },
  {
    "path": "src/test/resources/data/media.1.json",
    "content": "// The standard test value.\n{\n\tMedia = {\n\t\tUri = \"http://javaone.com/keynote.mpg\"\n\t\tTitle = Set: \"Javaone Keynote\"\n\t\tWidth = 640\n\t\tHeight = 480\n\t\tFormat = \"video/mpg4\"\n\t\tDuration = 18000000    // half hour in milliseconds\n\t\tSize = 58982400        // bitrate * duration in seconds / 8 bits per byte\n\t\tBitrate = Set: 262144  // 256k\n\t\tPersons = [\"Bill Gates\", \"Steve Jobs\"]\n\t\tPlayer = Java\n\t\tCopyright = None\n\t}\n\n\tImages = [\n\t\t{\n\t\t\tUri = \"http://javaone.com/keynote_large.jpg\"\n\t\t\tTitle = Set: \"Javaone Keynote\"\n\t\t\tWidth = 1024\n\t\t\tHeight = 768\n\t\t\tSize = Large\n\t\t}\n\t\t{\n\t\t\tUri = \"http://javaone.com/keynote_small.jpg\"\n\t\t\tTitle = Set: \"Javaone Keynote\"\n\t\t\tWidth = 320\n\t\t\tHeight = 240\n\t\t\tSize = Small\n\t\t}\n\t]\n}"
  },
  {
    "path": "src/test/resources/data/media.2.cks",
    "content": "// A test value where everything is different from media.1.cks.\n// This is mainly used to check if the serializers are \"honest\".\n{\n\tMedia = {\n\t\tUri = \"http://javaone.com/keynote.ogg\"\n\t\tTitle = None\n\t\tWidth = 641\n\t\tHeight = 481\n\t\tFormat = \"video/theora\"\n\t\tDuration = 18000001\n\t\tSize = 58982401\n\t\tBitrate = None\n\t\tPersons = [\"Bill Gates, Jr.\", \"Steven Jobs\"]\n\t\tPlayer = Flash\n\t\tCopyright = Set: \"2009, Scooby Doo\"\n\t}\n\n\tImages = [\n\t\t{\n\t\t\tUri = \"http://javaone.com/keynote_huge.jpg\"\n\t\t\tTitle = Set: \"Javaone Keynote\"\n\t\t\tWidth = 32000\n\t\t\tHeight = 24000\n\t\t\tSize = Large\n\t\t}\n\t\t{\n\t\t\tUri = \"http://javaone.com/keynote_large.jpg\"\n\t\t\tTitle = None\n\t\t\tWidth = 1024\n\t\t\tHeight = 768\n\t\t\tSize = Large\n\t\t}\n\t\t{\n\t\t\tUri = \"http://javaone.com/keynote_small.jpg\"\n\t\t\tTitle = None\n\t\t\tWidth = 320\n\t\t\tHeight = 240\n\t\t\tSize = Small\n\t\t}\n\t]\n}"
  },
  {
    "path": "src/test/resources/data/media.2.json",
    "content": "{\n\tmedia : {\n\t\turi : \"http://javaone.com/keynote.ogg\",\n\t\ttitle : null,\n\t\twidth : 641,\n\t\theight : 481,\n\t\tformat : \"video/theora\",\n\t\tduration : 18000001,\n\t\tsize : 58982401,\n\t\tbitrate : null,\n\t\tpersons : [\"Bill Gates, Jr.\", \"Steven Jobs\"],\n\t\tplayer : \"Flash\",\n\t\tcopyright : \"2009, Scooby Doo\",\n\t},\n\n\timages : [\n\t\t{\n\t\t\turi : \"http://javaone.com/keynote_huge.jpg\",\n\t\t\ttitle : \"Javaone Keynote\",\n\t\t\twidth : 32000,\n\t\t\theight : 24000,\n\t\t\tsize : \"Large\",\n\t\t},\n\t\t{\n\t\t\turi : \"http://javaone.com/keynote_large.jpg\",\n\t\t\ttitle : null,\n\t\t\twidth : 1024,\n\t\t\theight : 768,\n\t\t\tsize : \"Large\"\n\t\t},\n\t\t{\n\t\t\turi : \"http://javaone.com/keynote_small.jpg\",\n\t\t\ttitle : null,\n\t\t\twidth : 320,\n\t\t\theight : 240,\n\t\t\tsize : \"Small\"\n\t\t}\n\t]\n}"
  },
  {
    "path": "src/test/resources/data/media.3.cks",
    "content": "// Long strings.\n{\n\tMedia = {\n\t\tUri = \"http://javaone.com/keynote.mpglkajldfjlskajdflkjslfjdslfjldjfljsdfljsdlfjsljfldjfldjals;djfasldjf;alskdjf;aslkdjf;asdjf;laskdjflsjdalfjd;alksjdfl;jsa;lfdja;slkdjf;alsjfd;lajsfl;dj\"\n\t\tTitle = Set: \"Javaone Keynotelkajldfjlskajdflkjslfjdslfjldjfljsdfljsdlfjsljfldjfldjals;djfasldjf;alskdjf;aslkdjf;asdjf;laskdjflsjdalfjd;alksjdfl;jsa;lfdja;slkdjf;alsjfd;lajsfl;dj\"\n\t\tWidth = 640\n\t\tHeight = 480\n\t\tFormat = \"video/mpg4lkajldfjlskajdflkjslfjdslfjldjfljsdfljsdlfjsljfldjfldjals;djfasldjf;alskdjf;aslkdjf;asdjf;laskdjflsjdalfjd;alksjdfl;jsa;lfdja;slkdjf;alsjfd;lajsfl;dj\"\n\t\tDuration = 18000000    // half hour in milliseconds\n\t\tSize = 58982400        // bitrate * duration in seconds / 8 bits per byte\n\t\tBitrate = Set: 262144  // 256k\n\t\tPersons = [\"Bill Gateslkajldfjlskajdflkjslfjdslfjldjfljsdfljsdlfjsljfldjfldjals;djfasldjf;alskdjf;aslkdjf;asdjf;laskdjflsjdalfjd;alksjdfl;jsa;lfdja;slkdjf;alsjfd;lajsfl;dj\", \"Steve Jobslkajldfjlskajdflkjslfjdslfjldjfljsdfljsdlfjsljfldjfldjals;djfasldjf;alskdjf;aslkdjf;asdjf;laskdjflsjdalfjd;alksjdfl;jsa;lfdja;slkdjf;alsjfd;lajsfl;dj\"]\n\t\tPlayer = Java\n\t\tCopyright = None\n\t}\n\n\tImages = [\n\t\t{\n\t\t\tUri = \"http://javaone.com/keynote_large.jpglkajldfjlskajdflkjslfjdslfjldjfljsdfljsdlfjsljfldjfldjals;djfasldjf;alskdjf;aslkdjf;asdjf;laskdjflsjdalfjd;alksjdfl;jsa;lfdja;slkdjf;alsjfd;lajsfl;dj\"\n\t\t\tTitle = Set: \"Javaone Keynotelkajldfjlskajdflkjslfjdslfjldjfljsdfljsdlfjsljfldjfldjals;djfasldjf;alskdjf;aslkdjf;asdjf;laskdjflsjdalfjd;alksjdfl;jsa;lfdja;slkdjf;alsjfd;lajsfl;dj\"\n\t\t\tWidth = 1024\n\t\t\tHeight = 768\n\t\t\tSize = Large\n\t\t}\n\t\t{\n\t\t\tUri = \"http://javaone.com/keynote_small.jpglkajldfjlskajdflkjslfjdslfjldjfljsdfljsdlfjsljfldjfldjals;djfasldjf;alskdjf;aslkdjf;asdjf;laskdjflsjdalfjd;alksjdfl;jsa;lfdja;slkdjf;alsjfd;lajsfl;dj\"\n\t\t\tTitle = Set: \"Javaone Keynotelkajldfjlskajdflkjslfjdslfjldjfljsdfljsdlfjsljfldjfldjals;djfasldjf;alskdjf;aslkdjf;asdjf;laskdjflsjdalfjd;alksjdfl;jsa;lfdja;slkdjf;alsjfd;lajsfl;dj\"\n\t\t\tWidth = 320\n\t\t\tHeight = 240\n\t\t\tSize = Small\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/test/resources/data/media.4.cks",
    "content": "// Short strings.\n{\n\tMedia = {\n\t\tUri = \"g\"\n\t\tTitle = Set: \"J\"\n\t\tWidth = 640\n\t\tHeight = 480\n\t\tFormat = \"v\"\n\t\tDuration = 18000000    // half hour in milliseconds\n\t\tSize = 58982400        // bitrate * duration in seconds / 8 bits per byte\n\t\tBitrate = Set: 262144  // 256k\n\t\tPersons = [\"B\", \"S\"]\n\t\tPlayer = Java\n\t\tCopyright = None\n\t}\n\n\tImages = [\n\t\t{\n\t\t\tUri = \"h\"\n\t\t\tTitle = Set: \"J\"\n\t\t\tWidth = 1024\n\t\t\tHeight = 768\n\t\t\tSize = Large\n\t\t}\n\t\t{\n\t\t\tUri = \"h\"\n\t\t\tTitle = Set: \"J\"\n\t\t\tWidth = 320\n\t\t\tHeight = 240\n\t\t\tSize = Small\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/test/resources/epub.json",
    "content": "{\"metadata\":{\"properties\":{\"isSupportPic\":\"no\",\"sort\":\"教材\",\"finishflag\":\"no\",\"mcpother\":\"\",\"shortnominateinfor\":\":未命名\",\"chargeway\":\"\",\"toolversion\":\"v1.4\",\"fristissueflag\":\"no\",\"mcpsalevolume\":\"\",\"editionsnumber\":\"\",\"actualbook\":\"0\",\"chargeflag\":\"no\",\"author\":\"教育出版社\",\"mcpclicknum\":\"\",\"isbn\":\"\",\"chargefristnum\":\"\",\"p2maga\":\"../maga/book.p2maga\",\"nominateinfor\":\"未命名\",\"longdescription\":\"这是一本电子教材\",\"publisherdate\":\"2012-03-15\",\"bookheight\":\"297\",\"infopricesuggest\":\"\",\"publishflag\":\"no\",\"mcpcommend\":\"\",\"mcpfristissue\":\"\",\"keyword\":\"\",\"mcpbookid\":\"\",\"salespromotionflag\":\"no\",\"authordescription\":\"\",\"shortdescription\":\"\",\"recommendreason\":\"\",\"mcpcollection\":\"\",\"bookseries\":\"1\",\"bookname\":\"未命名\",\"mcprecommend\":\"no\",\"secondsort\":\"语文\",\"mcpchargefristnum\":\"\",\"bookwidth\":\"210\"},\"encrypt\":true},\"pageList\":[{\"src\":null,\"imageUrl\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/oebps/chap0001/images/orig/img1.jpg\",\"hotPoints\":null,\"pageNum\":\"1\"},{\"src\":null,\"imageUrl\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/oebps/chap0001/images/orig/img2.jpg\",\"hotPoints\":null,\"pageNum\":\"2\"},{\"src\":null,\"imageUrl\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/oebps/chap0002/images/orig/img1.jpg\",\"hotPoints\":null,\"pageNum\":\"3\"},{\"src\":null,\"imageUrl\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/oebps/chap0002/images/orig/img2.jpg\",\"hotPoints\":[{\"type\":\"Normal\",\"content\":null,\"parameters\":null,\"description\":\"Unit 9 Festivals Part A\",\"left\":\"193.2608696\",\"right\":\"205.0543478\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/flash/2012021313291142600023.swf\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/OrdiFlash.png\",\"actiontype\":\"webview/swf\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/flash/2012021313291142600023.swf.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"49.4361290\",\"bottom\":\"61.3161290\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"192.8804348\",\"right\":\"205.4347826\",\"top\":\"49.0529032\",\"bottom\":\"61.6993548\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"Unit 9 Festivals Part A\",\"left\":\"177.2826087\",\"right\":\"189.0760870\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142600024.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HideAudio.png\",\"actiontype\":\"audio/mpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142600024.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"49.0529032\",\"bottom\":\"60.9329032\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"176.1413043\",\"right\":\"189.4565217\",\"top\":\"48.6696774\",\"bottom\":\"61.3161290\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Normal\",\"content\":null,\"parameters\":null,\"description\":\"Easter\",\"left\":\"87.8804348\",\"right\":\"99.6739130\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/flash/2012021313291142600025.swf\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/OrdiFlash.png\",\"actiontype\":\"webview/swf\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/flash/2012021313291142600025.swf.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"133.7458065\",\"bottom\":\"145.6258065\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"86.3586957\",\"right\":\"100.0543478\",\"top\":\"132.2129032\",\"bottom\":\"146.0090323\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Normal\",\"content\":null,\"parameters\":null,\"description\":\"Halloween\",\"left\":\"60.1086957\",\"right\":\"71.9021739\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/flash/2012021313291142610026.swf\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/OrdiFlash.png\",\"actiontype\":\"webview/swf\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/flash/2012021313291142610026.swf.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"193.1458065\",\"bottom\":\"205.0258065\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"59.3478261\",\"right\":\"72.2826087\",\"top\":\"191.9961290\",\"bottom\":\"205.4090323\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Normal\",\"content\":null,\"parameters\":null,\"description\":\"The Dragon Boat Festival\",\"left\":\"136.9565217\",\"right\":\"148.7500000\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/flash/2012021313291142610027.swf\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/OrdiFlash.png\",\"actiontype\":\"webview/swf\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/flash/2012021313291142610027.swf.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"128.7638710\",\"bottom\":\"140.6438710\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"136.5760870\",\"right\":\"149.1304348\",\"top\":\"128.3806452\",\"bottom\":\"141.0270968\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Normal\",\"content\":null,\"parameters\":null,\"description\":\"Jingle bells\",\"left\":\"143.4239130\",\"right\":\"155.2173913\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/flash/2012031513318169610001.swf\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/OrdiFlash.png\",\"actiontype\":\"webview/swf\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/flash/2012031513318169610001.swf.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"11.4967742\",\"bottom\":\"23.3767742\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"0.3804348\",\"right\":\"159.0217391\",\"top\":\"4.5987097\",\"bottom\":\"29.5083871\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Normal\",\"content\":null,\"parameters\":null,\"description\":\"Unit 9 Festivals 预习资料\",\"left\":\"167.0108696\",\"right\":\"178.8043478\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/office/2012031513318169610002.doc\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/OrdiOffice.png\",\"actiontype\":\"office\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/office/2012031513318169610002.doc.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"11.1135484\",\"bottom\":\"22.9935484\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"163.2065217\",\"right\":\"184.5108696\",\"top\":\"6.8980645\",\"bottom\":\"26.8258065\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"Easter（3）\",\"left\":\"58.2065217\",\"right\":\"70.0000000\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169610003.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169610003.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"90.0580645\",\"bottom\":\"101.9380645\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"46.4130435\",\"right\":\"81.7934783\",\"top\":\"73.1961290\",\"bottom\":\"119.9496774\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"watch boat races（2）\",\"left\":\"122.8804348\",\"right\":\"134.6739130\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169620004.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169620004.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"84.6929032\",\"bottom\":\"96.5729032\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"110.3260870\",\"right\":\"146.8478261\",\"top\":\"73.5793548\",\"bottom\":\"108.4529032\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"Halloween（1）\",\"left\":\"47.1739130\",\"right\":\"58.9673913\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169620005.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169620005.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"154.4400000\",\"bottom\":\"166.3200000\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"33.8586957\",\"right\":\"72.6630435\",\"top\":\"144.0929032\",\"bottom\":\"175.9006452\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"Christmas\",\"left\":\"123.6413043\",\"right\":\"135.4347826\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169620006.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169620006.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"148.6916129\",\"bottom\":\"160.5716129\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"112.6086957\",\"right\":\"146.8478261\",\"top\":\"141.0270968\",\"bottom\":\"169.7690323\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"Chinese New Year（2）\",\"left\":\"159.7826087\",\"right\":\"171.5760870\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169620007.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169620007.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"148.3083871\",\"bottom\":\"160.1883871\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"149.5108696\",\"right\":\"181.0869565\",\"top\":\"140.6438710\",\"bottom\":\"167.4696774\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142600024.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142600024.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"22.0652174\",\"right\":\"175.3804348\",\"top\":\"52.8851613\",\"bottom\":\"59.7832258\"}],\"starttime\":\"1608\",\"endtime\":\"9648\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142600024.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142600024.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"112.6086957\",\"right\":\"177.2826087\",\"top\":\"112.6683871\",\"bottom\":\"118.4167742\"}],\"starttime\":\"29419\",\"endtime\":\"33274\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142600024.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142600024.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"35.7608696\",\"right\":\"53.2608696\",\"top\":\"124.1651613\",\"bottom\":\"130.2967742\"}],\"starttime\":\"23251\",\"endtime\":\"24971\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142600024.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142600024.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"55.5434783\",\"right\":\"101.5760870\",\"top\":\"124.5483871\",\"bottom\":\"130.6800000\"}],\"starttime\":\"24990\",\"endtime\":\"29399\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142600024.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142600024.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"121.3586957\",\"right\":\"165.1086957\",\"top\":\"119.1832258\",\"bottom\":\"126.0812903\"}],\"starttime\":\"33290\",\"endtime\":\"37203\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142600024.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142600024.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"97.0108696\",\"right\":\"123.2608696\",\"top\":\"170.1522581\",\"bottom\":\"175.9006452\"}],\"starttime\":\"45085\",\"endtime\":\"47469\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142600024.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142600024.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"38.0434783\",\"right\":\"68.0978261\",\"top\":\"177.4335484\",\"bottom\":\"183.1819355\"}],\"starttime\":\"37221\",\"endtime\":\"39917\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142600024.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142600024.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"140.7608696\",\"right\":\"186.0326087\",\"top\":\"172.0683871\",\"bottom\":\"178.2000000\"}],\"starttime\":\"51338\",\"endtime\":\"54722\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142600024.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142600024.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"97.0108696\",\"right\":\"127.8260870\",\"top\":\"178.2000000\",\"bottom\":\"183.1819355\"}],\"starttime\":\"46577\",\"endtime\":\"50121\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142600024.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142600024.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"33.0978261\",\"right\":\"73.0434783\",\"top\":\"183.9483871\",\"bottom\":\"190.0800000\"}],\"starttime\":\"39933\",\"endtime\":\"43895\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142600024.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142600024.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"140.7608696\",\"right\":\"181.8478261\",\"top\":\"178.9664516\",\"bottom\":\"185.4812903\"}],\"starttime\":\"53566\",\"endtime\":\"57171\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142600024.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142600024.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"75.3260870\",\"right\":\"114.8913043\",\"top\":\"193.1458065\",\"bottom\":\"201.1935484\"}],\"starttime\":\"9660\",\"endtime\":\"12210\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142600024.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142600024.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"86.3586957\",\"right\":\"119.0760870\",\"top\":\"209.6245161\",\"bottom\":\"218.4387097\"}],\"starttime\":\"12231\",\"endtime\":\"14473\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142600024.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142600024.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"35.7608696\",\"right\":\"101.5760870\",\"top\":\"272.4735484\",\"bottom\":\"280.5212903\"}],\"starttime\":\"14486\",\"endtime\":\"17352\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142600024.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142600024.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"122.5000000\",\"right\":\"180.3260870\",\"top\":\"277.0722581\",\"bottom\":\"284.7367742\"}],\"starttime\":\"17371\",\"endtime\":\"20289\"}],\"pageNum\":\"4\"},{\"src\":null,\"imageUrl\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/oebps/chap0003/images/orig/img1.jpg\",\"hotPoints\":[{\"type\":\"Normal\",\"content\":null,\"parameters\":null,\"description\":\"Unit 9 Festivals Part B1\",\"left\":\"76.8478261\",\"right\":\"88.6413043\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/flash/2012021313291142610028.swf\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/OrdiFlash.png\",\"actiontype\":\"webview/swf\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/flash/2012021313291142610028.swf.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"19.5445161\",\"bottom\":\"31.4245161\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"75.3260870\",\"right\":\"89.0217391\",\"top\":\"19.1612903\",\"bottom\":\"31.8077419\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"Unit 9 Festivals Part B1\",\"left\":\"61.2500000\",\"right\":\"73.0434783\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610029.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HideAudio.png\",\"actiontype\":\"audio/mpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610029.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"18.7780645\",\"bottom\":\"30.6580645\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"60.1086957\",\"right\":\"73.4239130\",\"top\":\"18.3948387\",\"bottom\":\"31.0412903\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Normal\",\"content\":null,\"parameters\":null,\"description\":\"Merry christmas\",\"left\":\"110.7065217\",\"right\":\"122.5000000\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/flash/2012031513318169620008.swf\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/OrdiFlash.png\",\"actiontype\":\"webview/swf\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/flash/2012031513318169620008.swf.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"59.7832258\",\"bottom\":\"71.6632258\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"107.2826087\",\"right\":\"125.9239130\",\"top\":\"55.9509677\",\"bottom\":\"75.4954839\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"Christmas day（3）\",\"left\":\"51.3586957\",\"right\":\"63.1521739\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169620009.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169620009.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"88.9083871\",\"bottom\":\"100.7883871\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"26.6304348\",\"right\":\"87.8804348\",\"top\":\"73.5793548\",\"bottom\":\"116.5006452\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"Halloween（6）\",\"left\":\"155.5978261\",\"right\":\"167.3913043\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169620010.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169620010.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"95.8064516\",\"bottom\":\"107.6864516\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"129.3478261\",\"right\":\"193.2608696\",\"top\":\"68.5974194\",\"bottom\":\"135.2787097\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"chocolate eggs（2）\",\"left\":\"53.6413043\",\"right\":\"65.4347826\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169620011.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169620011.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"217.2890323\",\"bottom\":\"229.1690323\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"27.3913043\",\"right\":\"91.3043478\",\"top\":\"186.6309677\",\"bottom\":\"259.0606452\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"watch boat races（3）\",\"left\":\"151.4130435\",\"right\":\"163.2065217\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169620012.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169620012.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"226.4864516\",\"bottom\":\"238.3664516\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"140.0000000\",\"right\":\"174.2391304\",\"top\":\"210.0077419\",\"bottom\":\"254.8451613\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610029.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610029.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"35.7608696\",\"right\":\"200.1086957\",\"top\":\"11.8800000\",\"bottom\":\"17.6283871\"},{\"color\":null,\"transparency\":null,\"left\":\"35.3804348\",\"right\":\"59.3478261\",\"top\":\"22.2270968\",\"bottom\":\"28.7419355\"}],\"starttime\":\"1186\",\"endtime\":\"8843\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610029.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610029.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"13.6956522\",\"right\":\"68.8586957\",\"top\":\"50.5858065\",\"bottom\":\"56.7174194\"},{\"color\":null,\"transparency\":null,\"left\":\"13.3152174\",\"right\":\"46.4130435\",\"top\":\"58.6335484\",\"bottom\":\"64.3819355\"}],\"starttime\":\"10548\",\"endtime\":\"14500\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610029.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610029.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"77.6086957\",\"right\":\"92.4456522\",\"top\":\"54.4180645\",\"bottom\":\"60.5496774\"},{\"color\":null,\"transparency\":null,\"left\":\"77.6086957\",\"right\":\"107.2826087\",\"top\":\"63.2322581\",\"bottom\":\"70.1303226\"}],\"starttime\":\"14516\",\"endtime\":\"16593\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610029.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610029.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"15.5978261\",\"right\":\"62.0108696\",\"top\":\"118.8000000\",\"bottom\":\"125.6980645\"}],\"starttime\":\"16486\",\"endtime\":\"18029\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610029.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610029.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"42.6086957\",\"right\":\"94.3478261\",\"top\":\"131.8296774\",\"bottom\":\"139.8774194\"},{\"color\":null,\"transparency\":null,\"left\":\"43.7500000\",\"right\":\"99.2934783\",\"top\":\"141.4103226\",\"bottom\":\"147.5419355\"}],\"starttime\":\"17880\",\"endtime\":\"21471\"}],\"pageNum\":\"5\"},{\"src\":null,\"imageUrl\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/oebps/chap0003/images/orig/img2.jpg\",\"hotPoints\":[{\"type\":\"Normal\",\"content\":null,\"parameters\":null,\"description\":\"Unit 9 Festivals Part B2\",\"left\":\"122.5000000\",\"right\":\"134.2934783\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/flash/2012021313291142610030.swf\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/OrdiFlash.png\",\"actiontype\":\"webview/swf\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/flash/2012021313291142610030.swf.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"169.3858065\",\"bottom\":\"181.2658065\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"121.3586957\",\"right\":\"134.6739130\",\"top\":\"167.4696774\",\"bottom\":\"181.6490323\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"Unit 9 Festivals Part B3\",\"left\":\"180.7065217\",\"right\":\"192.5000000\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012031513318169620013.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HideAudio.png\",\"actiontype\":\"audio/mpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012031513318169620013.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"186.6309677\",\"bottom\":\"198.5109677\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"177.2826087\",\"right\":\"195.9239130\",\"top\":\"183.1819355\",\"bottom\":\"201.9600000\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"Halloween（7）\",\"left\":\"129.3478261\",\"right\":\"141.1413043\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169620014.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169620014.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"100.4051613\",\"bottom\":\"112.2851613\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"123.6413043\",\"right\":\"146.0869565\",\"top\":\"77.0283871\",\"bottom\":\"134.8954839\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"Halloween（8）\",\"left\":\"115.2717391\",\"right\":\"127.0652174\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169620015.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169620015.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"221.5045161\",\"bottom\":\"233.3845161\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"101.5760870\",\"right\":\"140.7608696\",\"top\":\"207.7083871\",\"bottom\":\"247.5638710\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"chocolate eggs（1）\",\"left\":\"36.1413043\",\"right\":\"47.9347826\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169620016.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169620016.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"219.9716129\",\"bottom\":\"231.8516129\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"20.9239130\",\"right\":\"62.7717391\",\"top\":\"201.9600000\",\"bottom\":\"249.8632258\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"boat races（3）\",\"left\":\"157.8804348\",\"right\":\"169.6739130\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169620017.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169620017.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"255.6116129\",\"bottom\":\"267.4916129\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"142.6630435\",\"right\":\"184.5108696\",\"top\":\"238.3664516\",\"bottom\":\"284.7367742\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"boat races（4）\",\"left\":\"81.7934783\",\"right\":\"93.5869565\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169620018.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169620018.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"101.5548387\",\"bottom\":\"113.4348387\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"76.0869565\",\"right\":\"99.2934783\",\"top\":\"77.0283871\",\"bottom\":\"137.9612903\"}],\"starttime\":null,\"endtime\":null}],\"pageNum\":\"6\"},{\"src\":null,\"imageUrl\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/oebps/chap0004/images/orig/img1.jpg\",\"hotPoints\":[{\"type\":\"Normal\",\"content\":null,\"parameters\":null,\"description\":\"Unit 9 Festivals Part C\",\"left\":\"73.4239130\",\"right\":\"85.2173913\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/flash/2012021313291142610032.swf\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/OrdiFlash.png\",\"actiontype\":\"webview/swf\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/flash/2012021313291142610032.swf.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"9.9638710\",\"bottom\":\"21.8438710\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"73.0434783\",\"right\":\"85.5978261\",\"top\":\"9.1974194\",\"bottom\":\"22.2270968\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"Unit 9 Festivals Part C\",\"left\":\"57.8260870\",\"right\":\"69.6195652\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610033.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HideAudio.png\",\"actiontype\":\"audio/mpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610033.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"9.5806452\",\"bottom\":\"21.4606452\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"57.4456522\",\"right\":\"70.0000000\",\"top\":\"9.1974194\",\"bottom\":\"21.8438710\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"costume（5）\",\"left\":\"155.9782609\",\"right\":\"167.7717391\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169620019.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169620019.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"117.2670968\",\"bottom\":\"129.1470968\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"138.4782609\",\"right\":\"184.5108696\",\"top\":\"96.1896774\",\"bottom\":\"148.6916129\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"costume（6）\",\"left\":\"42.6086957\",\"right\":\"54.4021739\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169620020.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169620020.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"233.0012903\",\"bottom\":\"244.8812903\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"35.0000000\",\"right\":\"62.3913043\",\"top\":\"210.3909677\",\"bottom\":\"267.4916129\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"costume（4）\",\"left\":\"135.8152174\",\"right\":\"147.6086957\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169620021.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169620021.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"236.4503226\",\"bottom\":\"248.3303226\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"125.5434783\",\"right\":\"157.8804348\",\"top\":\"215.3729032\",\"bottom\":\"268.2580645\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"costume（3）\",\"left\":\"90.1630435\",\"right\":\"101.9565217\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169620022.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169620022.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"231.8516129\",\"bottom\":\"243.7316129\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"82.1739130\",\"right\":\"109.5652174\",\"top\":\"208.8580645\",\"bottom\":\"267.1083871\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"Halloween（3）\",\"left\":\"151.7934783\",\"right\":\"163.5869565\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169620023.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169620023.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"168.6193548\",\"bottom\":\"180.4993548\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"130.4891304\",\"right\":\"184.5108696\",\"top\":\"159.0387097\",\"bottom\":\"190.4632258\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610033.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610033.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"27.3913043\",\"right\":\"55.5434783\",\"top\":\"11.1135484\",\"bottom\":\"19.9277419\"}],\"starttime\":\"1564\",\"endtime\":\"2684\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610033.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610033.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"23.2065217\",\"right\":\"88.2608696\",\"top\":\"54.0348387\",\"bottom\":\"65.5316129\"}],\"starttime\":\"4184\",\"endtime\":\"6352\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610033.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610033.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"22.8260870\",\"right\":\"117.1739130\",\"top\":\"70.1303226\",\"bottom\":\"76.2619355\"}],\"starttime\":\"6369\",\"endtime\":\"11801\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610033.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610033.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"119.0760870\",\"right\":\"189.0760870\",\"top\":\"68.9806452\",\"bottom\":\"76.2619355\"},{\"color\":null,\"transparency\":null,\"left\":\"22.8260870\",\"right\":\"38.0434783\",\"top\":\"78.1780645\",\"bottom\":\"84.3096774\"}],\"starttime\":\"11814\",\"endtime\":\"15352\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610033.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610033.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"40.3260870\",\"right\":\"175.3804348\",\"top\":\"77.7948387\",\"bottom\":\"84.3096774\"}],\"starttime\":\"15370\",\"endtime\":\"21014\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610033.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610033.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"22.8260870\",\"right\":\"81.7934783\",\"top\":\"96.5729032\",\"bottom\":\"106.9200000\"}],\"starttime\":\"21028\",\"endtime\":\"23283\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610033.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610033.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"22.8260870\",\"right\":\"125.1630435\",\"top\":\"109.9858065\",\"bottom\":\"116.1174194\"}],\"starttime\":\"23304\",\"endtime\":\"26661\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610033.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610033.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"23.2065217\",\"right\":\"83.3152174\",\"top\":\"118.4167742\",\"bottom\":\"124.1651613\"}],\"starttime\":\"26676\",\"endtime\":\"29256\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610033.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610033.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"84.0760870\",\"right\":\"130.1086957\",\"top\":\"118.4167742\",\"bottom\":\"124.5483871\"},{\"color\":null,\"transparency\":null,\"left\":\"22.8260870\",\"right\":\"94.7282609\",\"top\":\"126.4645161\",\"bottom\":\"131.8296774\"}],\"starttime\":\"29267\",\"endtime\":\"33837\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610033.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610033.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"96.6304348\",\"right\":\"129.7282609\",\"top\":\"126.0812903\",\"bottom\":\"131.8296774\"},{\"color\":null,\"transparency\":null,\"left\":\"22.8260870\",\"right\":\"38.4239130\",\"top\":\"135.2787097\",\"bottom\":\"140.6438710\"}],\"starttime\":\"33848\",\"endtime\":\"36034\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610033.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610033.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"40.3260870\",\"right\":\"130.1086957\",\"top\":\"134.8954839\",\"bottom\":\"141.4103226\"}],\"starttime\":\"36053\",\"endtime\":\"39548\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610033.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610033.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"23.2065217\",\"right\":\"89.7826087\",\"top\":\"154.0567742\",\"bottom\":\"164.4038710\"}],\"starttime\":\"39568\",\"endtime\":\"42259\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610033.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610033.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"23.2065217\",\"right\":\"116.7934783\",\"top\":\"165.9367742\",\"bottom\":\"172.0683871\"}],\"starttime\":\"42270\",\"endtime\":\"45941\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610033.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610033.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"22.8260870\",\"right\":\"125.1630435\",\"top\":\"172.8348387\",\"bottom\":\"180.1161290\"}],\"starttime\":\"45958\",\"endtime\":\"50019\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610033.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610033.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"22.8260870\",\"right\":\"103.8586957\",\"top\":\"195.8283871\",\"bottom\":\"203.4929032\"}],\"starttime\":\"50031\",\"endtime\":\"53280\"}],\"pageNum\":\"7\"},{\"src\":null,\"imageUrl\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/oebps/chap0004/images/orig/img2.jpg\",\"hotPoints\":[{\"type\":\"Normal\",\"content\":null,\"parameters\":null,\"description\":\"9ESh\",\"left\":\"123.2608696\",\"right\":\"135.0543478\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/flash/2012021313291142610034.swf\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/OrdiFlash.png\",\"actiontype\":\"webview/swf\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/flash/2012021313291142610034.swf.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"124.1651613\",\"bottom\":\"136.0451613\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"122.8804348\",\"right\":\"135.4347826\",\"top\":\"123.0154839\",\"bottom\":\"136.4283871\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"Unit 9 Festivals Part E\",\"left\":\"108.0434783\",\"right\":\"119.8369565\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610035.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HideAudio.png\",\"actiontype\":\"audio/mpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610035.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"123.3987097\",\"bottom\":\"135.2787097\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"107.6630435\",\"right\":\"120.2173913\",\"top\":\"123.0154839\",\"bottom\":\"135.6619355\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"Australia\",\"left\":\"57.0652174\",\"right\":\"68.8586957\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169620024.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169620024.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"147.1587097\",\"bottom\":\"159.0387097\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"49.0760870\",\"right\":\"76.8478261\",\"top\":\"141.4103226\",\"bottom\":\"164.7870968\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"autumn（2）\",\"left\":\"96.2500000\",\"right\":\"108.0434783\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169630025.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169630025.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"148.3083871\",\"bottom\":\"160.1883871\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"89.0217391\",\"right\":\"114.5108696\",\"top\":\"142.5600000\",\"bottom\":\"165.1703226\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"August\",\"left\":\"133.5326087\",\"right\":\"145.3260870\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169630026.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169630026.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"148.3083871\",\"bottom\":\"160.1883871\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"128.2065217\",\"right\":\"149.5108696\",\"top\":\"142.9432258\",\"bottom\":\"164.7870968\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"saucepan\",\"left\":\"171.5760870\",\"right\":\"183.3695652\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169630027.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169630027.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"148.3083871\",\"bottom\":\"160.1883871\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"165.1086957\",\"right\":\"189.8369565\",\"top\":\"142.9432258\",\"bottom\":\"165.1703226\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"picnic（3）\",\"left\":\"127.0652174\",\"right\":\"138.8586957\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169630028.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169630028.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"212.3070968\",\"bottom\":\"224.1870968\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"80.2717391\",\"right\":\"184.8913043\",\"top\":\"178.9664516\",\"bottom\":\"256.7612903\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610035.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610035.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"24.7282609\",\"right\":\"105.7608696\",\"top\":\"127.9974194\",\"bottom\":\"134.8954839\"}],\"starttime\":\"1511\",\"endtime\":\"5015\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610035.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610035.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"17.8804348\",\"right\":\"25.1086957\",\"top\":\"157.8890323\",\"bottom\":\"163.6374194\"}],\"starttime\":\"6958\",\"endtime\":\"8850\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610035.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610035.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"50.5978261\",\"right\":\"73.0434783\",\"top\":\"165.9367742\",\"bottom\":\"172.8348387\"}],\"starttime\":\"8868\",\"endtime\":\"10924\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610035.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610035.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"90.9239130\",\"right\":\"112.6086957\",\"top\":\"166.7032258\",\"bottom\":\"174.3677419\"}],\"starttime\":\"10940\",\"endtime\":\"12966\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610035.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610035.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"130.1086957\",\"right\":\"147.6086957\",\"top\":\"165.9367742\",\"bottom\":\"172.8348387\"}],\"starttime\":\"12982\",\"endtime\":\"15287\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610035.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610035.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"167.0108696\",\"right\":\"190.9782609\",\"top\":\"166.7032258\",\"bottom\":\"172.8348387\"}],\"starttime\":\"15299\",\"endtime\":\"17323\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610035.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610035.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"9.8913043\",\"right\":\"46.0326087\",\"top\":\"178.2000000\",\"bottom\":\"185.8645161\"}],\"starttime\":\"43515\",\"endtime\":\"46211\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610035.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610035.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"9.5108696\",\"right\":\"55.5434783\",\"top\":\"201.1935484\",\"bottom\":\"207.7083871\"}],\"starttime\":\"46230\",\"endtime\":\"48880\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610035.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610035.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"11.0326087\",\"right\":\"62.3913043\",\"top\":\"208.8580645\",\"bottom\":\"213.8400000\"}],\"starttime\":\"48891\",\"endtime\":\"51251\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610035.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610035.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"11.0326087\",\"right\":\"52.5000000\",\"top\":\"217.2890323\",\"bottom\":\"221.5045161\"}],\"starttime\":\"51268\",\"endtime\":\"52546\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610035.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610035.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"11.4130435\",\"right\":\"49.0760870\",\"top\":\"223.8038710\",\"bottom\":\"229.1690323\"}],\"starttime\":\"52306\",\"endtime\":\"53858\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610035.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610035.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"11.4130435\",\"right\":\"57.8260870\",\"top\":\"231.4683871\",\"bottom\":\"236.0670968\"}],\"starttime\":\"53878\",\"endtime\":\"55564\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610035.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610035.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"11.4130435\",\"right\":\"55.1630435\",\"top\":\"237.6000000\",\"bottom\":\"244.1148387\"}],\"starttime\":\"55584\",\"endtime\":\"57676\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610035.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610035.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"9.5108696\",\"right\":\"146.8478261\",\"top\":\"262.8929032\",\"bottom\":\"271.3238710\"}],\"starttime\":\"57687\",\"endtime\":\"64108\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610035.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610035.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"22.8260870\",\"right\":\"39.9456522\",\"top\":\"273.6232258\",\"bottom\":\"281.2877419\"}],\"starttime\":\"65862\",\"endtime\":\"67660\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610035.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610035.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"77.6086957\",\"right\":\"87.8804348\",\"top\":\"274.0064516\",\"bottom\":\"280.5212903\"}],\"starttime\":\"70187\",\"endtime\":\"71579\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610035.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610035.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"129.3478261\",\"right\":\"149.5108696\",\"top\":\"273.2400000\",\"bottom\":\"281.2877419\"}],\"starttime\":\"73953\",\"endtime\":\"75513\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142610035.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142610035.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"179.5652174\",\"right\":\"192.8804348\",\"top\":\"273.2400000\",\"bottom\":\"282.4374194\"}],\"starttime\":\"78016\",\"endtime\":\"79479\"}],\"pageNum\":\"8\"},{\"src\":null,\"imageUrl\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/oebps/chap0005/images/orig/img1.jpg\",\"hotPoints\":[{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"boat races（2）\",\"left\":\"103.0978261\",\"right\":\"114.8913043\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169630029.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169630029.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"147.5419355\",\"bottom\":\"159.4219355\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"86.7391304\",\"right\":\"130.4891304\",\"top\":\"129.5303226\",\"bottom\":\"177.4335484\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"Chinese New Year（5）\",\"left\":\"51.7391304\",\"right\":\"63.5326087\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169630030.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169630030.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"154.8232258\",\"bottom\":\"166.7032258\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"34.2391304\",\"right\":\"81.0326087\",\"top\":\"134.5122581\",\"bottom\":\"187.3974194\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"Christmas day（1）\",\"left\":\"156.3586957\",\"right\":\"168.1521739\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169630031.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169630031.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"153.6735484\",\"bottom\":\"165.5535484\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"138.0978261\",\"right\":\"186.4130435\",\"top\":\"134.8954839\",\"bottom\":\"183.9483871\"}],\"starttime\":null,\"endtime\":null}],\"pageNum\":\"9\"},{\"src\":null,\"imageUrl\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/oebps/chap0005/images/orig/img2.jpg\",\"hotPoints\":null,\"pageNum\":\"10\"},{\"src\":null,\"imageUrl\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/oebps/chap0006/images/orig/img1.jpg\",\"hotPoints\":[{\"type\":\"Normal\",\"content\":null,\"parameters\":null,\"description\":\"Unit 9 G\",\"left\":\"118.3152174\",\"right\":\"128.5869565\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/flash/2012021313291142610036.swf\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/OrdiFlash.png\",\"actiontype\":\"webview/swf\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/flash/2012021313291142610036.swf.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"12.2632258\",\"bottom\":\"22.6103226\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"117.5543478\",\"right\":\"128.9673913\",\"top\":\"11.8800000\",\"bottom\":\"22.9935484\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"Unit 9 Festivals Part G\",\"left\":\"101.9565217\",\"right\":\"112.2282609\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142620037.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HideAudio.png\",\"actiontype\":\"audio/mpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142620037.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"11.4967742\",\"bottom\":\"21.8438710\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"101.5760870\",\"right\":\"112.6086957\",\"top\":\"11.1135484\",\"bottom\":\"22.2270968\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"Chinese New Year（1）\",\"left\":\"27.7717391\",\"right\":\"39.1847826\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169630032.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169630032.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"119.9496774\",\"bottom\":\"131.4464516\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"17.1195652\",\"right\":\"49.8369565\",\"top\":\"107.3032258\",\"bottom\":\"144.4761290\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"chocolate eggs（3）\",\"left\":\"75.7065217\",\"right\":\"87.1195652\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169630033.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169630033.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"121.4825806\",\"bottom\":\"132.9793548\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"65.8152174\",\"right\":\"97.0108696\",\"top\":\"107.3032258\",\"bottom\":\"147.5419355\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"Halloween（4）\",\"left\":\"126.3043478\",\"right\":\"137.7173913\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169630034.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169630034.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"121.8658065\",\"bottom\":\"133.3625806\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"114.5108696\",\"right\":\"149.5108696\",\"top\":\"105.3870968\",\"bottom\":\"149.8412903\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"Christmas day（2）\",\"left\":\"172.3369565\",\"right\":\"183.7500000\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169630035.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169630035.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"122.2490323\",\"bottom\":\"133.7458065\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"160.9239130\",\"right\":\"195.1630435\",\"top\":\"106.1535484\",\"bottom\":\"149.8412903\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"Hide\",\"content\":null,\"parameters\":null,\"description\":\"Santa（1）\",\"left\":\"66.1956522\",\"right\":\"77.6086957\",\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/image/2012031513318169630036.jpg\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/icon/HidePicture.png\",\"actiontype\":\"image/jpeg\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/image/2012031513318169630036.jpg.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":\"223.4206452\",\"bottom\":\"234.9174194\",\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"29.6739130\",\"right\":\"114.5108696\",\"top\":\"177.8167742\",\"bottom\":\"280.5212903\"}],\"starttime\":null,\"endtime\":null},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142620037.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142620037.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"27.3913043\",\"right\":\"98.9130435\",\"top\":\"14.1793548\",\"bottom\":\"22.2270968\"}],\"starttime\":\"1220\",\"endtime\":\"4585\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142620037.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142620037.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"27.3913043\",\"right\":\"64.6739130\",\"top\":\"28.7419355\",\"bottom\":\"34.4903226\"}],\"starttime\":\"8566\",\"endtime\":\"11747\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142620037.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142620037.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"127.8260870\",\"right\":\"165.4891304\",\"top\":\"28.7419355\",\"bottom\":\"34.1070968\"}],\"starttime\":\"23460\",\"endtime\":\"25273\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142620037.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142620037.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"28.9130435\",\"right\":\"54.7826087\",\"top\":\"35.6400000\",\"bottom\":\"41.0051613\"}],\"starttime\":\"11763\",\"endtime\":\"13724\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142620037.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142620037.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"127.8260870\",\"right\":\"164.3478261\",\"top\":\"36.0232258\",\"bottom\":\"41.0051613\"}],\"starttime\":\"25602\",\"endtime\":\"27691\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142620037.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142620037.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"27.7717391\",\"right\":\"91.3043478\",\"top\":\"42.9212903\",\"bottom\":\"48.6696774\"}],\"starttime\":\"13744\",\"endtime\":\"16188\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142620037.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142620037.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"127.8260870\",\"right\":\"175.7608696\",\"top\":\"43.3045161\",\"bottom\":\"48.6696774\"}],\"starttime\":\"27489\",\"endtime\":\"29840\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142620037.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142620037.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"27.3913043\",\"right\":\"97.7717391\",\"top\":\"50.5858065\",\"bottom\":\"56.7174194\"}],\"starttime\":\"16203\",\"endtime\":\"19183\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142620037.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142620037.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"127.8260870\",\"right\":\"189.8369565\",\"top\":\"50.5858065\",\"bottom\":\"57.1006452\"}],\"starttime\":\"29856\",\"endtime\":\"32902\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142620037.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142620037.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"27.3913043\",\"right\":\"64.6739130\",\"top\":\"64.7651613\",\"bottom\":\"70.5135484\"}],\"starttime\":\"35989\",\"endtime\":\"38956\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142620037.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142620037.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"127.8260870\",\"right\":\"169.6739130\",\"top\":\"64.3819355\",\"bottom\":\"70.5135484\"}],\"starttime\":\"49466\",\"endtime\":\"52579\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142620037.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142620037.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"27.7717391\",\"right\":\"101.9565217\",\"top\":\"72.0464516\",\"bottom\":\"77.7948387\"}],\"starttime\":\"38968\",\"endtime\":\"41108\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142620037.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142620037.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"127.8260870\",\"right\":\"180.7065217\",\"top\":\"71.6632258\",\"bottom\":\"77.7948387\"}],\"starttime\":\"52591\",\"endtime\":\"54640\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142620037.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142620037.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"27.3913043\",\"right\":\"75.7065217\",\"top\":\"79.3277419\",\"bottom\":\"84.6929032\"}],\"starttime\":\"41122\",\"endtime\":\"43352\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142620037.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142620037.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"127.8260870\",\"right\":\"204.2934783\",\"top\":\"79.3277419\",\"bottom\":\"84.6929032\"}],\"starttime\":\"54882\",\"endtime\":\"57978\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142620037.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142620037.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"27.7717391\",\"right\":\"89.0217391\",\"top\":\"87.3754839\",\"bottom\":\"92.7406452\"}],\"starttime\":\"43367\",\"endtime\":\"46111\"},{\"type\":\"BkHightLight\",\"content\":null,\"parameters\":null,\"description\":\"背景朗读\",\"left\":null,\"right\":null,\"title\":null,\"src\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/multimedia/audio/2012021313291142620037.MP3\",\"iconSrc\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/null\",\"actiontype\":\"audio/highlight\",\"reading\":null,\"actionname\":null,\"dcfSrc\":\"multimedia/audio/2012021313291142620037.MP3.dcf\",\"menulist\":null,\"pen\":null,\"dictionary\":null,\"top\":null,\"bottom\":null,\"zoneList\":[{\"color\":null,\"transparency\":null,\"left\":\"127.8260870\",\"right\":\"182.6086957\",\"top\":\"87.3754839\",\"bottom\":\"94.2735484\"}],\"starttime\":\"57828\",\"endtime\":\"61156\"}],\"pageNum\":\"11\"},{\"src\":null,\"imageUrl\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/oebps/chap0006/images/orig/img2.jpg\",\"hotPoints\":null,\"pageNum\":\"12\"},{\"src\":null,\"imageUrl\":\"http://192.168.102.241:8008/dls/FileStorage/downloadEncryptAPI?contentKey=CNBJTW2600000000300&filePath=ebook/CNBJTW200005109600000000300/oebps/chap0007/images/orig/img1.jpg\",\"hotPoints\":null,\"pageNum\":\"13\"}],\"bookName\":\"未命名\",\"pageCountNum\":13,\"teachingFlag\":true}"
  },
  {
    "path": "src/test/resources/fastjson.properties",
    "content": "#default\nfastjson.compatibleWithJavaBean=false\n#default\nfastjson.compatibleWithFieldName=false\n#default\nfastjson.parser.deny="
  },
  {
    "path": "src/test/resources/hashcollide.txt",
    "content": "QL8kHVYUYnsma=&SVGuEjUWnrkep=&7q9r64Y_rs_dW=&v6Cq7VXfoqd_r=&nVCS4SXqrqfdg=&FPFfCZYYgqUrb=&H6nztRVaqf_cV=&cb8m7kXqnehoY=&pxYRPkZcjVmsq=&_cyom6YrsmaXg=&9ArUASZWdrbee=&Cxjm3uUjbqdaU=&zPnR75ZmWmqkU=&QycGswWeeoboo=&hm8Bd3Wddh_Xb=&mh4uemWjXccVo=&cre2cKYiWsqib=&CHaeTYXadqocr=&eXeQTEWUp_bsh=&wNgj2jWrZsqUd=&_mF2CQYisUhiU=&MD_qjkUnsdlce=&XaAtXIYZWWb_e=&tKtpeVXmjorlr=&llhh3zVUdlhrr=&IIlLBBVbqqcjm=&xKjhHtZcgbmVd=&NthfTvVhpgfdg=&9LVxELZcdVejV=&VDUfeGWqkhlsY=&E559MeUoVjVig=&cbLuZSYqVm_jU=&uGrslvVYZdgqn=&p4aZstYildVkU=&vGc36lWWlfYse=&B8QjgbYnYrcsb=&GGbGRhUggnrhd=&EvchGkXZdochf=&myZoZYUlVfcZX=&6NNcR_Veimemo=&EAecfzXrdj_mV=&3kbThGYbroVqd=&7hCVKwXdcn_np=&RLOJMEYpkXfmr=&4RP2QSUdhndVc=&Ak9jimXeeUbUi=&zZds2uZemskm_=&lisectVqrrpns=&lLkS9XXnYkmYU=&QtRjoDZjYaXeo=&pW35ImUisnYZW=&IlNA9oZemoecq=&OLGOFwWZsnkbe=&dm55SVZUfjdlm=&kwmM6vWjUYYbf=&Jifp2jWmmZUjs=&BFslYEXjqmohj=&5mkJMMWcViohi=&ykLb4wXlfgYgh=&YcAeM7YYgXmXn=&RgnFL_UW_kmkf=&w4UJpwZogspdh=&EIZGa5WoXsZph=&ulBrcOUYneUqd=&kcgwQEXqkbdkm=&KGLCxbWXaomkd=&B6zXpYXsheXVk=&PRqFf5XhcaYod=&CyRApkXnVoVUh=&jJw7vqYkedekl=&gXhGcsYoUghmg=&RTBo4zYnil_hp=&tAn4AHVlWpfnk=&CNkFPRWYo_mkr=&dd_O7nWiX_dUk=&9LOx5_XijqifU=&8RTAnUZcdkbXn=&tjANrVWWfilrj=&O5Lon3UhUjjkq=&aOAxMEZlsmfsp=&FX9FgqWfgrr_j=&AUMuewWeZaleV=&BmecJkWoqaesZ=&NS9CJIZahWZqU=&ruWapgVbfgfin=&yQmh6_ZqUrngc=&vGnvk6Ve_jWWX=&93sy7HXnlWsUn=&qTEDT9VZnUpjf=&hD73EpYWpjeXh=&e2USPmZVhedkb=&yRbQgqYXnimWp=&sv6dI3VkXbgfs=&mo9PUGWW_sihX=&WBx_cFXUWor_q=&_n4_iyZqkccYi=&uL9HZHVkrqnbV=&L35QvmXrjlnfh=&6lRn8VVcdqpXl=&OB5jdsXare_We=&OirRIwYjn_dUU=&PIm2jUZcdkihr=&JGylFuVereq_i=&6YxDtLUlofWia=&x6eXPTVaaVegq=&8yI42gZoVgeVr=&Y5g6cUZZqjk_d=&HrCyL7WmaliVs=&o6xsTJWqV_sXZ=&ugJT7HW_Xqeil=&KjTpN7WkgUdYU=&3a2pPUXWjnj_c=&XMxawRYnfleaj=&5rPS89Xhesfqd=&HMd6ijYemjmcq=&qYsNiiUlleVsj=&X56jlMYbdUhom=&owTupRVVUYYXh=&Kq8qCPYahfnig=&gpOYStWbeopqd=&ljaW76YWU_Yjf=&uy6wiGXUYZbrk=&TgOrAcYfdlXds=&7IerFrUaol_hW=&doKZqPYeXXrbo=&NjX_dhUZqniga=&oJj_LQYqrdYmm=&DVxoRRWWeYsae=&iRARhTUpsdsWp=&8tOkGpWlankeW=&tzF6Y9Uqeeqsn=&OALPHoUValsaq=&y2rnOkUnbjsqj=&ISnpt2UWehiss=&DAmROhYfaWYqp=&ZphzV3VWcr_aq=&6KXOBBXbihpon=&bOqXYfWgoofgl=&gN6c9uZjaoqXo=&4QjBi7ZnrbYYa=&pl2TLuWelnm_c=&vioXdHUbbpggU=&w24qgoXbWknmW=&26ANIiWeXekWr=&7oTBhAXssXklZ=&ariAWlXgchhos=&PSUQBnZr_emdZ=&AagnJ5Zdgkcsj=&zXjNeuW_mUZdf=&OOUlXeWVrjsac=&BMdFsMZseXVof=&ciMHmEYVqbpgX=&puG8_TZeqoar_=&pbV7XqZsWahij=&lvLa6UZfhkrpe=&nacKOeWkcjlic=&JtHnCgYkcZWgg=&OzfpP8VfcYagc=&ZcqmdcZmoUYdb=&yiDrjhZUWZngm=&BMukdcXpaUamr=&WHQizKVXhsY_g=&OrzefrUkhlsd_=&QeS98IXVUoXqV=&oQ5I66VfpjUej=&D9kPY7ViqknXi=&miaZdgUhcdekl=&QtTQSmWZUprqq=&l84LpiVcjk_ag=&t9sZs5UpboZsi=&TOSDQzXWWaeZm=&Yq5SfNXmUbajc=&mOBolmYVXoblh=&fnLUH5YmoZfhY=&FFLE8vZiXfkor=&nEpLiLYk_ebio=&Or8mU2XcqWnse=&IYTsCDUniiYkU=&GcYUVYYdZVXmq=&4ujNg9YrUnZV_=&ilKJHLYoajjqf=&eUS9Z7UaqmVdc=&v5S3fzXohiYlX=&GvfRh9ZplgYig=&sMUebiZohZdXf=&mvxkplUmXqYcm=&5dBQGkVZnsa_c=&ueQes8YmcpYWb=&4CywUQVlXrXrm=&AuQjqWXjjcip_=&tpPsQYZaXpoWh=&qJEcehZWVXUki=&KsFH7kXsqnrge=&QDXrmMYnqnmam=&e_vzHYYsmUmsq=&VL3YkGU_apWqe=&UQnbjlWcq_VhX=&JrqsB8ZZcrpmf=&4hvmIXXXokaXg=&l7UquaZkkhcnf=&nbByPSWjaZsXY=&yUbXgFWfhYibd=&yPH7IgV_hZask=&qhZ9PuY_fafbr=&UWzHCwVaXfgqa=&l7xozsWgecedb=&9mKX5mYgYkccs=&iJ4DPhZcmqfgq=&JaWFqNWa_n_Zq=&SO5aHnWVafhim=&c_NXyuYZbrbep=&Lu9mW9YWgVVeU=&_4PsmvWaljWco=&6WdscAVdjpgsh=&fahGlLV_Xgomj=&c2UHYHUsndenh=&T9nDaIVUZjWbW=&pm2iTRYrkogdf=&iJ7zCzUabihXX=&NG7g_4XYWgqme=&i2WUjRUjdYmlr=&PErLrUY_lidfq=&GT2wRpWqYXiga=&Td_skVXdeXmrm=&IVS77wVjrVsaq=&ZmAuO2ZrYkYmb=&6hbc6KVYc_bkj=&Wgq5ANUdfVin_=&fuJT_vUsagrfb=&uv3l64ZnUgoXa=&qsLnrvZUcrmrq=&HodawfVqnqhps=&BDbp84YaYccYn=&5yVhPoUrnimUo=&fjSntHYmlqjkg=&3BQlf3Vsjsnjs=&dDKkULYWgihYb=&fAH2RbYqjnlfe=&tkRAWmVWaocpr=&EEcnmIUqmfb_s=&EfguSNVWeZllZ=&CbY9yGWXcgcoX=&zTVr7RXe_fXel=&cfXmDbUsbsWrZ=&j7YLy4YjnrdsY=&YJhuIaYdlWfnn=&WtfCWRVosYYbW=&dJv9TlYiXgmXe=&Ruwq4rWdkZggq=&D6ePcvWleimbX=&hdzS9bYpimqoq=&qevp3VWpVUlne=&w5KEmAWUhjpqg=&iQppK6ZqbUdXk=&K82j46YsjYWcV=&bpOJ2PUrcVfbm=&bCVd8sYmdYYZn=&DRU3wGZmafUqj=&QwPS_WXhmUXlg=&RdUuzSYriZacq=&xJxngAUYr_Woe=&oNzmZdWUaUfpr=&tIbNLFXedYhfU=&qkWBY3Wfommf_=&JFrZ5OYZcYnrs=&zPX3ZyXbVolYZ=&REE99kWVfjVss=&fmkYiQXaXsplW=&feGQFXYfgWZme=&NjEH4gVZfhdbp=&4zCm5BV_hoXiX=&L7fdUJVobXsnb=&DbKMeiVjabibl=&UfWIJWZicbgeV=&x9_wjJUdsajek=&H5rPPWY_aaWhc=&KXmBgSWsnXb_k=&6QG4_yU__lsmm=&JYFHV5Waffoaf=&nPTPHeUaZfbcn=&6MHbHIWcggZsq=&38M3mrXqndqhp=&YNO2BfVdkZjqZ=&cFhKk9Vjpncfc=&rnIpOTUlnakef=&9xwEDRWVlqoYc=&BJQoWIUbsjWZY=&VhBQfyXgjcWkj=&wk33VIUUicmkY=&QLQylcXpabVkb=&foAJPZZob_bag=&MMhmNuXXhdkkb=&Cy77YPVddcZpj=&CHwpuMUnZkibs=&VTFlIgVkZaqls=&o6tkeXZUXUimg=&yXvfclVipdeeY=&JvOeiYUdnmUsX=&3q6pklYZVVqkn=&RdcItNVmod_jc=&nDMUXbX_pmUn_=&lqaDZGWoinhei=&m_9VsXYaiqYbg=&XMcCAbXUYnsWf=&D7paEJUkbfanj=&dKX4IkYdVijdW=&GqBIpvWc_pX_U=&n34w3vWrsfVjg=&IVVjNCXdZmjlq=&kQ2icUWssk_ig=&o_RVFrUWr_fdg=&9vC3IyZkipbjW=&4iyd5eXkXVobn=&q3dCzTUredeam=&c68ERCY_jkkip=&JITLP4Y_pdaWe=&KF3TnjVgcdeed=&UseHKiXbXgZWo=&RmfGfRXhh_ago=&YMzdJIXiXfXrp=&3SxhtVXdfsjsn=&s8n2K8UnnU_dU=&ECxUJbYrXpgne=&uEbrIaVjVhbrh=&sPhvQ9UnhnblV=&pHGUkgZhocUlU=&VVHk6QYqebW_U=&KqB_ZMUnXobpn=&5ehZtuVrnqmfU=&ktm_bWWkbYmoW=&nEx5UCWbo_moY=&Bo2n4vYkcmYoW=&_f9pJaYsZrig_=&slxIwjU_r_mYZ=&cfb5QQZmWZsZm=&ZLPYnzZVf_aZo=&9Ur2HKUZqlgUg=&hD4melVhXrpfX=&IDgRhlWnZsfsa=&u4QXv2WkkdZkZ=&5A9IHAXVbkbdX=&Vpj2ySVYcrb_e=&DfIzWHYgfknil=&q6DNUlYao_rms=&tiwei5Xb_kUgq=&dEEpnrXWUqmia=&3ADTK2YgZWejo=&irZP5TUhgYac_=&CMQdI2UVakoYU=&yUrsUKYYcmWWW=&E2tkuCWgr_dhm=&cIdk_EUiVoWhk=&sl9a67UlVY_ri=&KvnwmaVrirmga=&8tf8P3VqnfWip=&9bjCbzYgbmqso=&kolA9LUhki_jb=&wwSHaxWifmjsh=&hna7zNWXqUYWm=&JVsyOkXomsbWZ=&mrNyqFUqdUfhn=&kKJpYZYcjegba=&Qd3NArVnsdZbj=&LUhrIaWm_lipo=&eygjqdUYrVqlg=&QZspEQUbUanri=&EZvQnSWhrcX_X=&BGePUvUYiXpZh=&MIVpLgVUdZosd=&DgS6J6Xsqnhok=&Ns52u7Udg_ikg=&IYbc79XbeUqZp=&NbYuHeUioeiai=&tukWmWWmWlkiZ=&2Nw6ETUhneWja=&gIZL4xYqYomWj=&ZMktMLVffhqbX=&K7HcvoWohZnsi=&TLE26YZZkUUqh=&SYlsudYgniioe=&lAWD77Wrsolfm=&pOTU5YVjejfVg=&keOevbX_brjVY=&jOjJE7Zik_hs_=&aOnESsWhqlraZ=&837345YZjsYor=&feAGnwVXdcgoq=&mM8mlvYjVYWrh=&CoIu2vUjqmemo=&FMzetdVWXXce_=&zR88MIWaXWWcc=&rKkDK5VelqqWp=&rTBG9GZfpdjqV=&u5D9CuYsZcnUk=&f8YvvjWUaZihs=&cDS4f_ZWgbgfl=&utDSjrYhVsbe_=&qS8OHvWggYnbW=&Y3GZy_WoniqfU=&89wVrZUjUXfma=&PmhOiKYbsplVp=&YkXEGdYmfiqjf=&qgbPvKVlXlVX_=&FMolcHUjrmidn=&NLgXJ9UYUZjpg=&4zldcXWZglXkh=&aJH2gPWiX_qWU=&qC72Y5Xpacp_l=&vnJD_PUrVeXVg=&6YvAFZUjp_Wbk=&cqsHcaYdYUpXj=&DvblZiUmVfgoU=&xXNTWqXWrsej_=&kXzpMSVsUmdqe=&SEXSRAUrZgU_j=&9GOkABZcind_n=&WeNErkZ_oUlVm=&tbEYcDYVqWZci=&XERmgwUjXbdr_=&OhNtDrWVWoerk=&KbLGbvWXWWVVa=&z5yQswUYeVhki=&uabRCKWYebcqk=&UpoqdLUjobedf=&OjzecAUVnUaZ_=&rsZ5mjZaqfWia=&UpOk7sXdUejnm=&6_CSjzWsckfhi=&6LH9eKZXgpsfa=&7qjSzTWsWWhlW=&7WMGdbXlWZXbs=&YdenmpXWjcngb=&8k7U63Vpfkrpe=&67dd7rUqVijid=&FHjQM4YUUgdma=&V_uGuxWsUclVl=&iXofVdUcrZeml=&bjexeNYhsdoXg=&HocYNpVcaZXX_=&f4Ryz7ZbbfqX_=&dqXcsdWZglVUj=&lhlyZPZsekZWU=&CtpypWUmsqVmh=&NluudRZVsZWWi=&IWIqh7VodjZsW=&mE77x9ZbXgfVZ=&veZSfOUrbcUaU=&PA_RnTZYrag_j=&UZZO4yYomhmro=&duak8qVkiocio=&bSEm75WhoikfW=&ZV8IxnZWYUcYl=&mPjWEyUlqsdsf=&8NKpAVVamikek=&4QGhyXXXgffeU=&EabCxdXWiereq=&59tVdwYrXlm_r=&YhedMJUVsYUbY=&226RzKYqaVcZk=&2Nwe32WbhghpU=&Ns4QiiXjlhqle=&XEwYleUfXeehc=&tj8rMaV_ioihl=&NgCw4dYZlerml=&xCPAiAVagkYcg=&dDYXZMWffaXnl=&vaBWtuYdesdWg=&Mijw2dVUmbUZn=&lL4MYMWWnYpqs=&xNI95yZXmdrjq=&aItZJuWpmilrn=&g4xPMNYfeliXc=&aAuRFsYqrjcpa=&UrSblWWoY_qmk=&Zj5b9qWqnYZWq=&MIROaYWhknZZ_=&VWLbaTUhUkjnq=&iC3o9eWWbgnre=&wGnja7VWXiqXU=&vnD4YPWVraoYq=&F889sAUUsldfV=&zMytFJZrrnimd=&iaQTUGXpXsaZs=&eDvhvEWaUgWdc=&5BrHrLWrroilr=&Id7jBpYrWbriq=&lEwso9XnUqVUj=&gXnZrOVcUrmdU=&c7fy8gYfdWgen=&FFSjmHXinmsV_=&Bqs4AFVrpZUnn=&tA_yfEUYdYi_o=&fwQs63WVbbkmk=&8YxiDPUmnsZql=&pR3wtXYdWgdUp=&nMgBrdWkXsnX_=&HYZfmOZrca_gW=&sfjJ2tVisgjUa=&8WDVXXXkhYnkl=&JVQWvbUa_fmca=&Rffnv6YWXelWl=&AChlSKZqqohkp=&6z_vSHXeijXmm=&f9gssmXUqrn_b=&MPpgeDUq_Wlsn=&kyM3vYWsaodUl=&hhZQDrWiYkffc=&DWW234YddmW_e=&lJfCSWVmijpde=&EYkCohZrsXbhb=&7WsQndWfUYmbV=&8EsMDLUWdlhgr=&DYx6T9XckdghW=&yWZFlHWopipij=&ATDA74Zs_kpVr=&yfe6RAYahfZsf=&iWGKnxUjdVVcj=&PWIHKrYWWnesj=&wDpw6JYefcqsm=&9BIrCEXc_lsgZ=&CSdg8jUZjYsYY=&FfRTmUUcekqbi=&P2LLQFXkdoXsj=&USATIxVXZqUrp=&PTfVD8VbW__lc=&yrTgBSXX_fUjs=&YD2sTZY_gXqhZ=&g9MRDJXecrlbi=&mNDZ9OWZiilki=&w_M9WDYjXjrgs=&2aDCS8ZZmZfXl=&ldZW8hVWeXWpl=&wyvbRUVUsjYem=&LlEpd5Vlqablf=&IW8xelXs_qina=&KckZ7WXdsZZpj=&cGF_4uWeUhUfj=&OnXCqpYdjVbUm=&ycQd6eVismdgV=&MqoVptZfprnmV=&c4eTFnYjsmbcn=&cR_MAgYkglcVg=&VchLqOZsdjhkk=&g7xFaAUbYUfUp=&iYgzonZ_XXhVo=&3ixDkuZW_bori=&h3eMPJYWYfr__=&NTLAwtWXWqYWk=&iXw2H3ZXpYZok=&rROpw6Wdgcabd=&moMxVlZUXUVba=&mEodQaYiocaWq=&BoCQ3EVWikUqf=&7sFKL9XdenYjn=&nFbEjGVVh_dlq=&XQk_RrXnglbXX=&9bAxKuWlgWfeh=&2yWWD4WennXdk=&DzYkaGYjjjieU=&t9XpmxZkZVfV_=&hSmEgRVaroaZi=&IMaVAvWcsnjdi=&KpoZFcWZogrrb=&VVqEfcVgZUilZ=&B3POixVrmobXm=&A9NBsJWppoorX=&FqiHz2Wcsmopc=&8deQ4wZr_pish=&VzYb2GUVddk_q=&7sAXuMVlkodUp=&ekgpGjWsnUkim=&i9_LmmUoZsYgX=&TrHE4bWkU_X_h=&7Zk_YYVkarock=&sPx4p2Xekqfln=&RZ9fhVUhjnioZ=&wsUr9eVcofhlg=&TmXbmdYaWgpgc=&cz_2dzWjodUYf=&TsWrXrWe_WrVX=&vRpVYMWZceqqU=&f3RW6TZosenlo=&cnYk5aVoarrsn=&5WhtOXZorYbal=&HNF8dqWbfsgcs=&9lQiY9Wdbhbi_=&984xJWUjrbihn=&hK2MWdZjhqfia=&IbLN8IZnajcXX=&TcYpVAXncrcmZ=&rNrgyTWgh_mss=&Lar23GXjaVYsd=&eQiGccYlkVcji=&TyvE2XXqkorVU=&Kv3hjJZ_gfjUi=&RCBfkYXVsojUb=&teHpVoUigabsk=&_jhYLlY_hhsnW=&7Oy25LWrfdedZ=&It5rC7Wsosbpd=&kYqLd5Xrdjrhj=&NMUQylVXc_ZWc=&mPdn2YX_haqnk=&dIElFdZjjrqjU=&UIfKT6YpYgX_a=&VYTZj4XsV_XUn=&jryJGPUbodp_m=&JnrRZlUcjUrkb=&CeNKz5VapWqpe=&xj_RUJZ_esiXV=&YNQCJcWcdjsrk=&J99xiCWfhnabX=&5B2Bz3ZZrqfpY=&ej5efzXlqjnhj=&fOUEm4YeWggVe=&lS5IN6ZhYcYZV=&FAxfxzWhs_Xdn=&7B7JmwWqfjqgV=&UgF4FPZqeXkcf=&d2D5rnVprnnro=&BTqLpzZpglsqj=&t5_VTcZVYdsqf=&9oEcyDUiWigog=&9xp2_LWVhiVUg=&8cyvwOXgsVlss=&sWdKs8ZUVmUjq=&LqRHBVZbosYc_=&5dVpShVbo_Ymh=&FwlYqdVaarmXr=&J8jM4oYebWggg=&tuVZ9hUjeijif=&xQDguuWghVrnp=&3KC_fHZiXgXXn=&tWXbYBZdYniag=&vkMIjmXVabaYe=&ZWaKrmZeejkhi=&5Swj4sYUqloas=&zO5IKaWesUfrU=&8OWk2DZVn_UjY=&KcsWOCUkljYch=&oC84tlVWVrkfZ=&lhWlq4Y_ejVmp=&kqQyjbYshqgkg=&XLHiCNZWghZUs=&rRXgW7Ynmparr=&xunzHmZnpgiWa=&sdvrILUnZW_bc=&s8LNotUYirsXX=&fvPdSoZno_oXg=&3gQCjCWsYhoYn=&YDRlJ6VllXXaV=&sE35k6WcnWWh_=&mHt6ZXVc_UmYd=&hwu6JlUfhagXg=&gaUlPhYfYjs_m=&_MOkLFWiporeb=&M3fnp5Yaqaerr=&GeBvb_VmcsXog=&xWraoWYkdshmV=&ErlG6yUrhVpWW=&AayHNRYWmicim=&ilX7yJYojlUfV=&9CKp_TZcXmeja=&e_SsTqVnpbdh_=&hrwsHNZrXhelU=&q3SOlbZYYbrei=&MnNx_ZVpZ_oZj=&RtJm2oYbUqiXp=&2QWrQZUWYUgUi=&Mw5d6lUpioYiZ=&Ev9qvSUWXZgfc=&9tRXcfYZjirco=&ydluEaVfrhjio=&7kQPCnWbZkfdr=&IOG5pEXeYXreb=&3BCvPKUWZbamm=&DN9OahVYUdojn=&G5D_pNVpUiWZr=&wp_yZhWleWcXW=&Oysx6iVhUUjcg=&7r75UOVgklrhU=&UFw4LEXajeoka=&HIDVOhYojfpdl=&WijsTiYmkbZ_Z=&UYOoetWiUgnrU=&6MLxMzVslgXbl=&Cuy7K6Xa_ohsY=&ESwzYvUVjZema=&UI54grZ_dsmfe=&bk_v93XkXneph=&zcgZw9Vme_XgX=&9YDvclXidefUV=&4MApFHXYdjVj_=&MnzZ6zUplkc_U=&FldfUrVrenXkW=&GiAHLeZUVmhio=&u9mHJmYersfrU=&dYVgf6XcUWbfa=&yol8ZOVirUjb_=&6KDuSTYdnicqU=&4FZo5FYdllYnr=&hJkGgBVdhZeVd=&KaiJq3VYWnfbi=&p3_dFBYjXlgso=&m_p3CsUmkpfVl=&Da_QSgUnUYpoY=&fqNzIfYjapngg=&Ch2XiJVsUqqWe=&2X3MOIZ_oojZi=&V5ObCJYVeXqoa=&o3onSEVchk_cc=&w5vsg9VYXbUrq=&HiykPDZoVsVYV=&eljMqCXgajfZb=&x5RnYrYmhWkae=&TPcZXnZasVgci=&ItI43XUXplaob=&t9PSuNYbchoUo=&7dUENDWjVqjVg=&X3IhERVprs_pm=&TVzGVXXlllfXq=&hvAFH4Yoofnjb=&EAaOakZoghiXs=&ATCiGVWnhZlnm=&8gb_GTXd_conb=&5k4z33VlXkdkf=&RDDCnfXspprfr=&XJAgxHYUaUjmU=&gm_ADCXjWqerZ=&RIotVBWUbreXc=&_2mDpPZqeYlcf=&kPk8QHYhbbdsa=&LD2KvCXsUkWfX=&TWXpmmWjejXcX=&FwcVjWXcapWYg=&sSvZsVZmioaWp=&Gp8ehgVkcVjfs=&h9fWbCYgmoomk=&uc_qf_ZhVXaXZ=&hZhNg7VkmhZia=&Ld2jRMU__mjeX=&vUPcjhXjhhodq=&t8gwEnUYksYoY=&DsAozMVsbZUeo=&jRSJ4fZrpsoVm=&E6wphpUnokslZ=&kHM5zjYinVs_s=&4U5SZsYsehrXU=&98szUKUcZqYmo=&7nn2HGZ_ZoV_W=&AACGfEWhe_gVW=&bRiZaNVbmrWpr=&bpc9XDXYWgfqf=&kFdIqsUgfo_bZ=&t42rtaXpbflpg=&4X5orJYhkZVYq=&afDaSSWi_UpYm=&4jOhXpWsVZVhs=&CLi4luWVrlZi_=&O2uXRqVneanns=&VDd_6iYlkh_oV=&smLKzJYjriZZk=&3UwQaVZmgcdqg=&cUzUqZYrjjXn_=&goXwwZVmmebar=&_vZpi_VUiXmYW=&swrk3VVaUnkYl=&sJ5P7SXmciZcl=&S7bEfQUaahY_e=&s398e_Wgmmggc=&U7usfYUYWWrdc=&hn8IzrWbZUZWl=&zOYES5XUrZfqm=&kTAmAgVnbgpjl=&kyDciSUVgblbc=&6PJu7tWegaddd=&WsqlLCVjnsacc=&L56sT_Z_jgs_Y=&C2rWnpWYmaXsa=&tRCfy6UWgjlar=&tL9yC4YjdcVli=&HzZkRiWjWnriU=&chf2_mZmrrjfh=&Q8odquXoZpZ_l=&SDYfBaXoXmajl=&duT3aFZXpdiog=&kyzTdSXqrnrZn=&M8AycRWiVqsci=&w4xiLtVhsjeaU=&2gfxSMYrVYVgh=&JJelMZXjfamsa=&OixZhfXnopYXj=&xWZAQjZdddnj_=&J76ukOUnhff_Z=&O2IbkBYqjdVlU=&Ri3QWgZgflsYX=&Glq3CpXrXjbWo=&7AOUmxXkpnnqi=&wTIh5hYYmjssf=&OjumzCZgWcVXq=&AynyJhUksYlal=&QZWAg_YX_gool=&nca3IqZjWkmYY=&hytG_rXrrhXir=&6bGSDxYqsiVjh=&kXaO4aVY_enkh=&hDLgZ5XncZYff=&KlqVNcWorfknd=&TbgS3yY_ibsag=&DWKvvjVchfbqf=&bZ5LzKVqrssil=&cQ8L7yUhnhlih=&BxUkF9Wgrgdga=&Gw_QiGYhWWYfV=&NIASgSXXdhhYh=&wRPMR8VbUpaca=&3zfzPJWkfkpbZ=&S4aJNNUdXWrpp=&TIawKfWp_lfYY=&XkTgIUXepdkjl=&6eaEutVshsWif=&96YpKhYWddpoh=&zUos2NXddVWea=&wd45WhWkroZXh=&jgwCGIUdrhrnf=&_Qax2WXcl_jfb=&vMRXq3XnellkU=&qhBsT6XifWUgX=&uz3bcyWkYVbre=&NY7IA8W_nncqd=&FnShZCWaks_Yl=&q9rnyhVclYkok=&pHwWBQUVpjmds=&rbLBzzViqVWkl=&pbl8IAXY_jWkp=&GsNdMZVhhqfXV=&PiVNL2Vrfn_Vl=&fh_FsjYrlaqof=&vwTiYpVadfinY=&g8qfYFUrgoidm=&6FBeARXheanqm=&rpto9jYYkdblg=&QW6SZVUifclrp=&Fx4LU8VcqZ_ig=&kzjQ7QXsoogdb=&hwC2XEXeoadVV=&mmgvwdUWXgqdZ=&eTBv4PXZnWaeh=&jQBFkXXoVmoar=&vzDfwiYVWelfW=&wgc9cmViifj_o=&GZIwlsXkYnqVo=&bFQ5NdYo_qkdY=&57a_iHXcpUago=&MKFAHfUYYdgVo=&vPZn3sYmojndm=&92kjVkXVlfcfb=&UQuXF7ViVaaZa=&lJjtslZrmgeck=&DSQeBRUVofsrd=&UeDUA9Upmmmbc=&R3pl4bYVdohkp=&E7cwqbWkdkjac=&q6uhTDVsrsgkd=&tFftiaW_Vahmj=&SSaYRdWrkhqYd=&vGblBFUbhibhm=&hipug8XWVXeiV=&aWQU8jZmYggss=&YxOZSEWVhdgfp=&QPxwaKUWhWgnZ=&FWUD4CVpYYU_m=&yWSenJUeoaWWh=&eFMqIiUjpYkgY=&dafvvvWseUcZj=&IOEFz7Wjimqjn=&h2L7avXajbbcf=&UljQnOXaYXZgn=&RFlc3aZhmshgf=&zAucIyVgrp_Ve=&_FFHqcZmqYpnn=&G5u5MgUbohjfd=&Vxlza_ZgjoYhi=&Eoug8XXhbrqch=&kObPVRVlmYWUh=&z2b8v8UpUpfsm=&wkE26IUXbrpVg=&2GvaYiXnVZlVn=&94o6olYlYesZ_=&opFAiVWsknkkb=&7xjB8jYceqUqW=&ldStzdYqrhWeY=&qKqznaUdpjogq=&eNv3nHZkgmpde=&tGi8vXUabdjUW=&atfTNCZfUbadl=&cCRCjkZhaWjgm=&Ofu_jVUqemfhm=&BQUSQoVggopWe=&TLXDEaYafnhkm=&LfiRwzZrqbpkd=&V6M5MlVfanhbX=&W3t2gRUkqlVUo=&8zi5oYYiaWnoY=&g9795TYpjiqYk=&uGY9GCVZlsVqn=&Ay3OAVZYdp_ap=&3KilNEXlkm_ad=&toAFMtZieXkph=&jLMplFZlqjYVa=&pdwyqlWiciehf=&XNCApzUkkWjjZ=&_TgqNCXcfahiU=&mN6q5jYpUcsda=&byivPBZbcYjUY=&Dx4WTNVfkWica=&uB5P37YVnWeel=&XXxaQqUc_rk_X=&aKalAEZ_bVVlb=&zrERZhZWpdoWf=&GyW95sXbhpagd=&oEELQSUeqhmsf=&vc2OubYfXVcmf=&GWun2GVcZWYXa=&kQbSQZUbmadsj=&ldANDKZic_biX=&xsd3OvUhWodZl=&EjIkZZUng_inW=&Fi_BwTVYbnkrs=&lkhYCyX_rYdmW=&oDlPZ9YlXjbrg=&n7ZRVEVdiXVsd=&XjdzTXXfjaaeo=&FAZ4vOVeXboWi=&uCJoKJVrcreWi=&ttF_V4UVqnVUn=&_ocd9xVbUc_sX=&GMeR_QWbpkiie=&EI5mwJWnbZbnd=&VtYP9IWbYslg_=&djynPJXno_oag=&FNQv_HVhoeho_=&OSCAn8VfqfoVr=&YGoIulYmenjmY=&Rm53D_Xhk_rVV=&wX9TxTWYVksrh=&FvcQm5WmcXWnb=&t4KsFCZbeaWeq=&iSOSY6YcXZrrq=&VVt9DpWZflana=&5d8TUfUfqkZgn=&96p7y5YajUknp=&HQ43vyYlaqljf=&CG6FqIUXYhpZb=&hGkQwpYcprfnl=&7W9bGbWXgelfW=&3JIae4WaXUbpm=&zLy7qdYqhfkpX=&FEHKJjVZa_osb=&hK3snzUasXYgh=&PnZndDUqWWkjg=&33_PRjXagknhj=&DZGperYZocjrc=&XwYxVdXUonpVh=&qQRaQVU_jfjYc=&bS4PhEVYZaspk=&ZzdrFXUiaYVcs=&aYtu6pYinbafV=&GmMYMxWVbafXg=&JivYDvYcpogbr=&uNnrqdXbrpean=&kcwnmmXXpecid=&eoZwpHWWerfXX=&URlZ3nVfaZedh=&UvfiNaZXYhpsa=&pAEP5GWlfsVk_=&WM8qYWZrfhcpn=&UNmVtAVaoXspZ=&t2s49aVpnpXbg=&mQFbxVVY_fiUn=&AxUwMdWdibVYs=&U9L_gOVneXagj=&jVDeOlYnrsVUY=&LfFEo_Wnfjeha=&ouxADuVYg_cpb=&RZTNZcUmbcmXi=&mjuojNUciemgY=&ZAQpR8YWdUeo_=&tqRmZAUnol_o_=&BqADDYXkjpdsi=&HPKmwNZgnfcgd=&xrCzKgYoabWsZ=&j9AXJWWXmZlWf=&Qnb_HeXg_hUma=&7OPjLSYYhi_qf=&oSsTtvYUgn_rW=&RxcwPfYmXgnWV=&6CCSGsWlajjZq=&KmuWVWWdkqWhc=&MM_NB3UqlkZ_Z=&ilzna_ZblXmsi=&PHYJ5QVUaspbb=&CkCc5mYXWYW_c=&T5DhnqXXamoXW=&RLxUuWZmidjUl=&vXNIpRUcrjnsd=&dsa9DTYgZgagr=&2lURhVZnhfmlp=&xKsQtTVilqkjb=&cE77qeXWhZWgq=&ThUHqnZslX_nr=&Y_xHaOVhrYUbd=&7IJvG4WikrZgk=&fkx9TbYoUnmaq=&_a3uFFUnaZpcc=&9AanE4VifikV_=&5CINwkZr_Vsgd=&B3oJqDWsVorjf=&NcNYjmVaYgc_r=&PwIhqAZpiq_Ud=&QZarF6YriZelU=&JLkfTyVcpqfos=&tnX6jKYdmnkfZ=&XwUKjaWfWg_qW=&zAtWliWoWirle=&RXHzZsXdcmYZb=&aavTvSXhppY_k=&rVDr92WUjcpXd=&SdNQUjWrrlqgn=&Rw5SroXmXmd__=&lWaVZeUXaarqg=&zHPZUnXghoYrZ=&F64sI3ZWrqjkp=&GnrWOmUbUcirh=&jMq4NnXUcpg_b=&QgEb9PZhogjkk=&URpszNYogngfj=&dvFHQWWbYkgoY=&HvwkmlYgpVdal=&ofwUfLZceXasc=&_Ya6_6XmrWcZq=&FvjdsKYjoXgjY=&kX46ceWVViZcf=&HPafdAVf_eYef=&AkgwfaZjhjcjh=&leALXzVprj_bU=&nsWQbrYneWoVW=&85VvhLVpeqord=&p8zq_HXoZ_hdZ=&m3_rquXpglmho=&z9JFJlYgnbWdf=&hnGxPwVWeZqqn=&RTG3n7YesbVUk=&oFfYoQYcYYYaX=&rwNELFWWj_mnf=&vGckIGYofYfsg=&xmmHLUZh_jUVm=&eX6LrpXaaopiq=&bd9SiMZcXm_pi=&sZ5Ag3XpXjahj=&CRiGvJXkoXnmV=&BTgEKRVnVWjWW=&rpslrxWr_eUmp=&4NHVxVXcrhUdp=&oVLZKWUXcYjdn=&3O4kY3VmhrVfX=&rdliNwUlq_njs=&6OI9VtWXapnfi=&CkdfN3YXVsgWU=&8Grz7nVgdWfqW=&BZETrxXYWmaol=&lstQYFZYUnlof=&UJ7X2zYpVjccc=&bpEUfwWmVcXYm=&6ikX_jUjdopaV=&EAfvDwUWU_fYX=&GsklfCX_gZm_p=&elKjwLYjppWUd=&zPnCL8ZcYpkhn=&Hg5VBGXhWXaap=&fNdYCKUkUsm_e=&9bgC8UUYspYae=&qBkpxhXlcpfZU=&eQFJAMUcgboUe=&VgLtcnXjYjiqi=&s23zskUdVqYbk=&AP5coXWpXesXk=&_SgWbmYdkWpYi=&PeOQikXqXVipq=&kPp67RYhgZkZq=&fUiPILXfaV_sj=&dF99lWZkXoekU=&w69Da4ZUaliXl=&EflBFEUmchWpf=&neWbPUVpZsZnh=&RJ6_qXUVqVZWe=&qKH9hRWgsdqml=&iwr4yiYV_kfhe=&oDPXVVUpYhdkh=&ZpHMdZYW_bqkf=&bKYzcaVshlbij=&jRpYK4UXUccUW=&Q9tk2JUeqkV_d=&kIRykgZVeUqbX=&9WB67pYanZcka=&AHXo4hXaoUg_s=&kns8QpZifpsgn=&JCHjaSYoscUld=&eOi8gDXUYemkW=&lf9mkLUqXenrV=&dFl9kiXoVWZkp=&vjmLOHYVcao_q=&UcqipqZVdjdhg=&E93kuHUdmbjcV=&KfNE3CYkZr_X_=&rXEq38XkhdhYq=&R8BriwWajZVXZ=&GysuQiUVmgcec=&xhPgJmYqgoXco=&im5j4WVjnWUig=&FLypc_ZogVeeW=&TXBh9jVafhWjU=&gCAG4DWrUfZlj=&YKObiCVUpVkYl=&8DuZf5Zaremcj=&WJUVWLYWV_gdg=&kRhphQVXea_dU=&yyjP6mYlflqVU=&k_S_TBYfokder=&jTgFneUnifUoj=&zY6fH5WkbqYVV=&WzP5KrVfqmWig=&OfAScnUsXWbjs=&2zmHZnXfdomUr=&ezEuwsXcqamfo=&3w3ZJEVkakfkd=&eS7cTOUbbYkW_=&BZ2R8sZrWhVaa=&N2YIHmVf_cWZj=&vgoTg7ZcYdhjV=&wC7myBUddqdol=&BBzqcJZqdgbhX=&3nd5GeZlWddgf=&KjRiJfXYmZoZe=&Goh2SRXrq_Ua_=&vsyABlUUhqqjk=&LUqHLQUoYjjdd=&ZXbJSdUboXppg=&bQUgJ2ZsmsVjV=&VXaOcVZVfclWa=&on6pSDUpVfhkr=&OlAeL3Udoqsee=&JXkrOrVXglUim=&TImznxUomXkee=&hB9zTyXYlqp_o=&XJSGpIZbfVWic=&U4UibrWYesUia=&YGwOkgWWojgiY=&NyA7zEWpbpkhj=&8R9aWCYcacaVi=&ODo3hEXgmhUch=&7r9MviWqeoYX_=&aKIGynVbkXjgm=&v2bXb3YleYcqr=&Ba5AvTZhkfUUl=&dyD7f8Zor_Wji=&nilhpWYleWnZi=&JnwjweVgoshVb=&yRH7FGYeseVnY=&x5t_EgWmcendr=&V8W74PVnokado=&4NKdDgYVXUZrb=&qeSEgeXlpXVUY=&2daTu3ZrcpiWp=&cPkSWMUjYqgal=&wqfvkwVqnqmXY=&werWLmVnW_smh=&VGpAIqVandUZj=&SR3Wa_XXoghoZ=&6GYgwHVVfdnUo=&MyhvtsWgdirsi=&nyew7MVggXX_V=&phd5VxZdg_iUs=&yZTLO5Xkokenq=&RVtZbkViY_cnq=&Nhgyw_Zorbpjm=&UfLvZ_ZaUpqep=&yAFyDGXnneacg=&yzOE4eWjmafmp=&nqjsJXUVnXicY=&ZztA3wYpsplob=&LFdqyNZpenXli=&5eXPwLUksmlpk=&4lTlxvYZViqfq=&Uf2iKTXnlkndV=&ug_w3MUlakksg=&aSZXnzWZbbfYl=&dBe32bWkepVih=&8URZ4AZXYncea=&OzVe8GYeodXVb=&bL_HfDXWVZipU=&ftwtrcVXcmjaY=&LWVCUwYhfYXjh=&4tAtzKVgUaZYZ=&dqqANfYjoqgZU=&4ELBHHZrc_sac=&q2PvCkXcXmdrW=&JGTHzkUhsgXnY=&6Z5rwJV_aXjim=&QleegOVckpZeZ=&kADsShXXqmUXs=&tAeOp7WcZcdqZ=&XosCQiUpqdkfb=&uER5N8WqbqUYd=&wxoJILUaYnkhW=&V9EzluWXbpWgZ=&l52pfjWoirgVU=&_dLPUZZVbZpmY=&KISUsNUirbkbp=&j3hgx9UlWVXUV=&nsJkhTWYodWZf=&5RxcjhZfbYlXo=&7CTbRSZWgpqoY=&QFVVReXdVheVq=&zOG2_rWedncpr=&knC9m5YYjijVf=&QlllcXZpmp_VZ=&yBFh7wUZaZZlU=&j23NCVXoXVjje=&MV3oL4XskceWl=&RJyfpQXmjVleZ=&ZSDZKKZnYrfeU=&SNYWVeWqXe_kU=&NMgBoTWqkbbYa=&mxteB_U_bdhXo=&fiuhJpZYrhjUV=&pGsuMkXsXcnV_=&q5ENarYkalWsq=&HCOAvxXgrWeph=&zAfx8bZmfbcYb=&H9O4tDXbhecqU=&qLnEWLZskflZc=&rqLR5RXsZhcik=&XAAHtUXdbahVd=&oPld6uUZlgomp=&hAXvHDYcmXeb_=&TmHiuFU_siqVj=&BqVaMnUkfZeVp=&YdEtpnWpkghba=&6G74PmZroksY_=&Cp2TRCUjjsdWk=&jqVCcRZcfnmop=&_Nwj9_U_mbgVp=&RelFXPVn_s_Ua=&Pkb49oWVrkeVf=&CIigRBWqcsXZZ=&GrEyHvUcfZfrU=&A9chXeXpoZjqn=&qFELRcZfZkaUX=&Osw4BSZWsVlll=&SVoWLRZYrh_jk=&jKi25mUhbqidY=&3DIJMFVVjcVZb=&4FClRRWbraoYY=&CTWuP2YssUUeW=&HY_t_mY_fqXah=&Bn6yAAZhWfiqn=&kko7mPVdbVrdY=&iVTEceWUlraif=&kvIQKhZqcUlcj=&wGHRqSWp__dZe=&y6aQMmYheaWgb=&KQsRFrWqknidc=&FVDXLbXgYcske=&_StPs3Xfqdhgj=&64J_7jWUdde_X=&d_fVl2WphYlZc=&RLkzVeXdknncV=&GlgiVWVZZgpmp=&XgnXjFUWmWrlU=&elMQQWVUeslYe=&YQBlh9X_YqcYb=&tITyifZXpWdZl=&HI4j8iUjWfrma=&5fqF65Udhlgbm=&3JGRzvUYUkYZs=&VN3JDEXd_dmXf=&JqXboWVWWjgss=&Ml7wn4WckWaZp=&9ao9rBZZi_nUY=&TOStSZXZdecpm=&mkCKtAYlkdcXn=&UiJQihUlXWZjZ=&cXPmaDXZYZUda=&EeJta7VbpZkaf=&ObzxpfWmnhgZd=&Vhw_n2XfdZjYk=&VZ74pUZWprfjc=&QadtzqZ_bZldf=&uJtlKkVYfWZef=&efUuDzXbmZoha=&yQC8lbYhplYgV=&oZhKU2UlUiXYq=&SwwsA7UYbabVg=&3C2cmmVseblYb=&r9bzT3Umfabaj=&x78k5dWYr_qXq=&uIfh8rVpfcmpd=&U_XogmXrXemsn=&UsUPXUYioipgq=&VEUpZvVgkiXpg=&WLwGNaYpeYhaV=&hpG8WBX_WqgVn=&PJdk28ZeemrVX=&v2rcbdVbiUbrq=&zjUROUU_YqYi_=&mXdmrsXnYZfaa=&jN5Fz2ZjfXpf_=&LLfdOGWYgmonW=&tAKHX5UXZXUiV=&ydMbZ6XksVamX=&4aLRU2Wdkapgd=&QS_PXlWblhhXX=&akI8vrXjionZs=&xCIaI_UpqfkWo=&t4SjpZVrXYpbj=&beL7coWYgmWlq=&IOMltiYUblhcU=&XnbZ_9WeliXrg=&ENezATVgW_gYV=&scHm5wYYkrghY=&SSnjxTVdoed_q=&Cvhca8Yqrecjq=&zkNTmVWUrcjZY=&2UzpRnXhjeggZ=&IuLDQMU_lYnmp=&WbTPpIZhhhsZo=&pN_AkSVXVdVkg=&iNG3VQZVZhahW=&Xwd9hCVdikcpf=&SgEZOzZfmWXco=&5nHAkEVaqhsrg=&K6uZlSZldeWer=&kThMjgW_csslV=&ptSle4UapbWUb=&HRaPgaWfsVksg=&uiEnbYXcaV_sb=&P_LR_tYbjapbV=&KyUoNWWbXabro=&XrLdfYWsndVVq=&fFIYQgXUXhXXm=&PKeqHPVfpeohg=&bJBuhvUnnZmgb=&mCIgiEXdqhafr=&TyJsKaVnadkYg=&Pg6A4cWaiZjea=&uuwFQdYUUVkhV=&iSX7glVoiorUj=&rksUhEUqsgehe=&zzgT7VXafVbro=&D2c5sOZjffrnb=&xc8U9RZ_kZgmU=&qRngKgWrXbUrr=&rUqdnrYj_no_d=&VQnDgeXmrrmgX=&UpaSljUe_bena=&b_vi6fUrnk_rg=&76_k6BWlf_VqZ=&rSr36xUshhZVX=&tyY_irXYaqhbY=&od4499WVXsimm=&6k8ObEWreknie=&IZy2NrWrg_mcq=&GiKvMtXZcVpsf=&rJVDQSYbXiaZU=&Kkk3qIXngrake=&DJNxexZnssobd=&Rm49C6XsfcrUh=&ROc3mLYZaid_j=&NqIRbBWgdZlkk=&kHsDhmXijnfYU=&kcIyvXZooleZk=&soZadmVebiZoq=&gMEBMlZVXVaj_=&chC5fQYoZbjjZ=&QCCcCJUcqjZmm=&DHp28_WaaliVi=&hIbIGGUnjqqWh=&6HhiwsUdorVbg=&T6EqtlYneYcek=&C4taVUWg_bZWg=&r8bRibZcbboil=&j9eoivUWpinlY=&yAygVNZVXemcg=&invDPNVVVbkgs=&stsro9Zcsglj_=&oOGSsiVjfhmrW=&biLMbbZkkb_fq=&N7qoc7VWrmqYY=&3dIXHhYnbaUha=&jOqeg6ZWbaXlr=&iQnJRaZejgZWr=&f7BGyFWhdZrfX=&ujOGlnXknrXrZ=&WKU7wtXVWfebW=&HpkjAMUh_efee=&9PVvHuWheoYaa=&L8W5m6Ze_WqZY=&3RtBfqWaXXcsl=&jEN3_4YZfenfg=&9zEcSsXgUnjkb=&ZPQ8AwUelslXp=&UO7vH3Vbj_kqe=&nVuTBVWZodaeq=&DZMM_3XrVoUac=&fAqfKGWkZjkml=&e5NtRuUhfsZWp=&2Zh8meWe_eUbk=&J5MicAWsoqnfU=&6uGIhBZXUXr_c=&WndLGNYslgbfY=&NbMvXmXYjebhn=&ZsT5mtYalrjpo=&apyS3qZe_cYXo=&M3KqO8XY_Xikk=&yhxj53XZaohde=&LWtZcmWceopsn=&__76gSXVq_Vid=&wHi2wbVircWam=&C6kZpUVgjdbeo=&KXuwW8WsVUrYl=&N3coghVaaeaga=&ibA44JWcYnWms=&V_ZswjYXqiqj_=&OXDjKaZ_hlqof=&XIdlvcYeWdUnr=&JJG8ovXlqXWVl=&tJAVfzUdUlWmU=&Sj6FeaV_UgXZZ=&CVLkyWUksrYag=&QCviixUZgmspV=&ZkX6XpXZfqdWa=&A_vlifWhhfoVa=&d7NzooYb_Yene=&N8p_dDUqkpkir=&E6RGqJUXdakkY=&QxFTPpZcUdd_b=&uPXP5dXXbrna_=&zVhQN7VflXjnh=&i5sBlYY_s_spq=&sxGQWEUgkW_aW=&dc2QxDVYlYefU=&V64FyHXjoZqfm=&BybdB6Um_omVX=&rZZDzCYXsqqmn=&gjnefoVXY_Wq_=&DLTZAQYhrhUgo=&IiKtPGVWgfbUm=&ZmYdPWY_jpnqn=&wTjylqYeeceXh=&3vmmkMZhcagko=&FxW9TuYaVXebV=&TdiMHuYZVsfYl=&idg3oNWbribbb=&tXmsHvWUUhcll=&SgTieLZUjspge=&MKGo6CUokVgmX=&VPWfTjXdj_okV=&ObFNabZomZpqY=&kIE4MpZifi_da=&y3B8PJVqj_WZW=&fXuq_oVXnk_ld=&8FhnPsZaoef_g=&ZeTeXsUcfXWic=&nm6b2wYbqadml=&AisQjiYhdgron=&FbVd9OZjYqWXc=&75xrAdVUrZfka=&hjSS8VYi_kYfc=&GoQHQtWklUqW_=&7kJhD3Ysp_W_l=&U7PR88U_bXWho=&exwe55VjecVof=&W8CauNUnVWlll=&TdJnzrXZpaame=&IpzgaUWjbZngf=&JNiChrZYkmbij=&blIllTUkVagdm=&BqO6U5Xhf_cnd=&C6kDxyUadVmog=&EwuxKCXphhpiX=&sXaKZyYXmrchq=&5TU6CkXifmdWm=&8ZJj_pVdrlUXX=&brclDRXsc_amd=&_tlKb5ZnqnUfc=&HTO6ETXcqYfXa=&IDpsJIWXXWYhf=&UFHihvVlniWVj=&WjIJqEUbh_bhl=&HVogN_WsUgWYa=&kIeboaZXlibpp=&NvfYOiYqmlejk=&5THNkMWVbYnfo=&uI7M2tZgZc_if=&Btj9WmZomhi_W=&rSeHeqVinqiri=&nxbPewXWcrlY_=&9jzdAyWWkkYqe=&2mxIzLUZllapl=&rSz6VjYVbXaYV=&BbfL_7VXXYsrZ=&MmLqRtVYrkpcp=&pKGhxEVUmrnWp=&jrX7cIZVUmcog=&VNgGsrYZUW_rg=&Msdu6QXaaneda=&EwWCdcVleUZjm=&lTSF4FUeiVpZn=&fqieKaZj_dcpY=&Q3Uq_fZjUenqb=&dslqklXmpsjpm=&T5aoNcVdfmcrb=&rP8_SzWXWXmgb=&SUffeyXbpeaXf=&yGeD9BWjcnfoW=&6zakezVjfoaib=&qeHEosYZaaXsk=&gFqp2mYncgnhf=&__7LNHWn_UbYm=&ta5lfSZqWVkqg=&KoNzNSYnoiVpX=&46ZyDPZbkjbYe=&CznY7uWejqgqY=&VK4fZYXZZqald=&5SkzttZZldpds=&xLoC5SY_ZbpXV=&Ef4nAFZseqaig=&ZECO4rZm_ioYV=&uWg_BaUaaqfqZ=&wUfbSTWWYmkom=&H3jBcOZofrjXX=&YaHYg7Zsmign_=&NME_DNZVoX_UX=&_bGS_OXsUhc_c=&gWcXXNUdXWpbU=&GhtKpCW_laVUa=&xst7CMWokgZqm=&5tW8bTUd_iekk=&ZQGTqpVVqZZjV=&BmhlwcWYdbqlp=&bWGjiyWmVUdob=&emCd9lVZihpoX=&wvbibwZlrWjnp=&qZCP35WcrnXmo=&x4OPd3WnrUcVs=&4ncnaMUgmhbcY=&lwjn4HXaWrjkb=&DXb3JgWfoYcUg=&mY8ILPYanbXnm=&2B_GfyZ_c_rqe=&22zWusVkqe_lk=&hZforFWmYYdid=&F4W5moXdcUUiZ=&i265agWkemgli=&ru4gMBVUrVknk=&wSNE4LVfUjjaa=&R4RcfgYYa_VcY=&695vnqYVjcVrs=&eJPMTTXmhh_eW=&qPr2hOYYnqqdV=&ItTAo_XVpWY_m=&ebJauZYcWW_rp=&XaukUFZgrVrfo=&48_kPwXgXUZad=&eMSSviYpgdaks=&Jy74DmZVpkrrf=&4PpWxbWljrXVb=&Ni3FnvYjraono=&pIezUkWamflbW=&VW5kypXZWm_XY=&AA3_NgZWidkbn=&Mc88NvZZcfgpd=&A8shYQZYr_jjj=&xqSLUKZlobrnc=&QHPdEtVXrXgj_=&wgSelZUmX_YWg=&sygjwuWsaqjVY=&CGl7IcWhgpafb=&pkNS3NWf_ZUfp=&JVKrQ6Ubhiksh=&Rl2ucXWWo_Wdi=&SrQ6dWVYYfsbp=&PyCb9rYccdZeq=&XngnY2YXYbVce=&kjaPHyWUlXi_Y=&OxwDHbU_rnobc=&4leYf7Ubplbca=&64Hg_BYpfdgjr=&S6RjhOXjkcYXe=&cVNHaNUhUfXgg=&wV5StrYcjXkjl=&y6wX5wVffhloo=&5UdmmDUWrU_hh=&EIDL_uXpV_Znq=&viiCJYXlnYdpa=&cPO6pMXUVVqh_=&oMVduBZcjlsoZ=&9NfJScVViqben=&3dD4ZjYrWbqom=&E7c4t4WVqkfgW=&mSIhAwZi__Wer=&Mk4HtkVibieia=&Uzi6uWVfpafir=&JcvtoYZnleVoa=&jPkNNlUXflZeU=&aTShzpVggabgh=&NS6O8ZYekYmsZ=&mwcZApZhkeXqk=&NOTAdSVfrUmgd=&Xu3FZiUlWedoi=&KL4jLTZmUhUis=&BOAEnMVoclalW=&OuGcJ4YpUfk_b=&PNSawPXhmYhfY=&2KXVJxVUphikX=&quICCbUbekc_f=&VlIXOsXV_dsUh=&T_AYdyYliqbjU=&q9xozuYpUmjha=&NF3zuEVXrhjri=&_cCCxfWloWXdU=&Swj5hYVmcYagm=&lKK6d2WsjV_pk=&qn_ssQXoqrlla=&6FRMqeYVbrcmp=&Wx_9jyZWfmbci=&B3JmVOYa_brkk=&PERrO4YafaeYk=&XooapzYsqjf_Y=&PEqbdAXbgYcWm=&GWWVJ9WWoZhoj=&CvNfZ8VgreeXZ=&sJLfqbXfXegfV=&nCtWG9WsXaYeU=&LiRw2BY_oZWqW=&o3BzonUnnpXVn=&4qr6x6XjXjngV=&vYcMXyUfUca_e=&VRQip2XolaeZq=&OrPOZEXm_pcYc=&XQH6FrVWZlYls=&QTxW7TZ_raZYl=&fzaEpoYlfWrrU=&CTgEiiXfWknUr=&rKmU3CUknk_ed=&9LrDBQUoWnoWg=&E4xjR_Yqchckm=&cIjTvrUVglWZo=&xivIvoZplacon=&MfncO2WjVdnhf=&PFfWfkVnWaUsf=&f63VhJUssenar=&DatSglWWnVnqf=&2I9SmhVpVrarm=&_sUJjFZUaaeaV=&5vlAmLZa_cXjl=&pe9M3XWohWnXY=&WJCtPkUlegk_f=&mdnCsOXcjferV=&kn_uboUlVZlsb=&QJSQQ8Yh_VVYa=&Vjq4Q_XfZkZos=&HMoMmqWXaeoja=&Luz_bTZZkaaap=&VT6XtdZXlgZjs=&9bnyLeVkejoeW=&hwVzKfZaZbo_g=&Fu8niPVcdaprr=&CHnT85ZlbXXdV=&SvMLxBVomUcqU=&PMjhoKVpWlbki=&Avy4bqZddUYgb=&NYP5pgXfhfVUl=&jZ4N3ZXZWUkkk=&2bOsZ2ZqXghfj=&NefKpaYrabirj=&yH2ya5Xd_ZXXk=&3RI8TiXcfsoci=&zqbJ5eWabmjYm=&2vyN7xVlmXlcl=&XZ7LXcWbsYWYo=&hSTQhHYZZhgYc=&5oKCWaYUicYYl=&gmCP9mZYVbqWr=&WAigfwUgUjXXZ=&bGhjIWUqiZqlW=&4DW5gsYZieron=&TBER5CVi_jqWg=&5tHnLyYrmbWcf=&Pg9ELmYkjrnWa=&CTXdD2XUeshks=&UpPYTFXlooajm=&xtgfzMWUmasah=&R82UF6ZbeajVc=&822AuEVckhVah=&NEfFwLVWaibYf=&JXeOqbYbsWVUo=&LcuYYeWkUsVda=&3NI7_GVVgZlYk=&QiHE6mUUepVlg=&MUUH3QUVVpoZY=&R4yCYLZmXpeed=&RXqiCzWmqsiUs=&PdAXSGXYdiXip=&daq9fcVripaki=&RcWcIoUakoiqU=&JwqqtIYjjpmfl=&twBliBUlnimrW=&WakxDJXdkpbY_=&3MxryMUfiphVh=&DizOQdWcVUeWd=&qvos72WnaUanV=&VyX7NmYqjkmrY=&WZ2w4AYiVgVsm=&5pFf3UYsd_XXl=&mU882nZdqsopk=&73UF6AZlbpqef=&mLTzbOYceshrn=&OMOKWuWircegW=&wGSJVEZfesmli=&dXZcvwWokgggl=&4DiXE9Zqffrse=&dWXJxMWempWsa=&XSS_FxZnkXYoj=&2MK9sAYhmlsmY=&DTylNnXdrXdWb=&WAaenbWlbnVcj=&dDUvICUhrsbpW=&K63S4AYnWVbqU=&e5yIziYYcVW_d=&8pMTYHWrUUYkU=&m2QVBOVhanYlc=&dxe7F3WrmjUiY=&Jw4eJeYZgsUlW=&YIQq4WVnalhmU=&u3gW4RYnWghmp=&fNUpeNYqZ_Vr_=&kYsYz6Z_XoVeU=&fvABuRWZdcWWj=&smRU_tWg_nheh=&49jKX7Uplsenj=&phaKw8XgpmjYX=&_f4LuvYZcoYes=&akyDcKVWnrl_o=&V6emT2VsWrUmp=&gA2zueX_Zggrk=&V2hmSUZgragpb=&6gbVwDYZqpZdV=&PUO3XYZYnhYhl=&JfUKR2ZXUsVfX=&tU9HAcWhhaash=&EjK9gCWeeUhVU=&6BYqkmXjZcYdf=&4F7bVpWgkYeYc=&BaSxXDUdVaimh=&WbRvggZ_maWWb=&EI_MfYWZdjd_c=&JoVrObVZpXbYq=&BcJoutWobsdlp=&oCr8Q6YXqsdmc=&HFKpCZYWgmVgi=&9GPnU8ZhZh_gm=&_ykK2bZjhjrbf=&YPNKnvUUXqUke=&tzFBqjYharglZ=&KURAL5UoiUYaj=&Jj65ItVpZWVns=&kRB2CpVikkccq=&jGe4MwXbdnbbd=&hFPOLcXhYVpoZ=&UdGZGmUgfbeep=&CVDF_MVXb_Ymp=&_8dPmvZeja_Yd=&JhE8MdUZdcY_l=&Ni7J9AYsmXWhf=&QOYUf5WislWUl=&SkDulCVmfjjVa=&5qGZs2YojnpdV=&MkavdZWXsmank=&QTI8_GZcnjqck=&nZMHRsUVsohqh=&BcHdD6XnWlpqU=&ikVMpAU__jbYp=&9UisIbVhadoed=&SQ2RdnZnipiYm=&L73LskUpZkmcX=&3SFXnMUrqhkUi=&kZARZ9ZfWsZgn=&llgJfaUXp_VWk=&q3TNd8Uebbaf_=&N8bQGbVebZmfn=&tx5fa6YbkWUsW=&8sXe43YXWhnps=&JUpNxyZjqVhar=&c7Yi8aVUU_hoW=&OeBXLXUgpcgUe=&xJroGcVcmqhkY=&tYLjWpYan_jfk=&jQvYiMZVYnrrY=&WL3AO7Xh_hZ_c=&_lZjksYicnVim=&pHrCMDYadelVm=&akgzNLYc_ck_W=&pmeNXdWbroYXs=&UaVfgzVXeclli=&XRijw9UhWlgaY=&viHqbYUodXYnp=&ZqxCkTXriUYm_=&LomRJjZlhmV_b=&HmLndAYsgpWZd=&SjfBoHWeooUlk=&NUXVU2YYmindn=&45LaZCXeqdYWW=&IdmtGOWkodbhs=&bEjAaIYmrXVff=&_VJG44XhWeWbW=&hz8x2kYUkmYhr=&HVOxQZVbYdXf_=&QYkvW7Ziblrrf=&G6p2LTZb_gVZg=&YXFDMvZnoqpms=&WovVlLVmoegqi=&hmSHUcVbi_hnj=&BnLad8XYZrnjd=&wasl5kYopWaap=&aVPNe6WeedWsg=&vmMFtZVjdknnk=&PJhW_zZXjhbph=&Uz2vQnXjUqjmq=&IRczjOYcsXnjj=&EifuKqZeqdVfa=&SEAxmRXe_W_Xf=&oMidnTYUhXqfZ=&CMtLOhZiZarle=&NJCTt9WdeeYdd=&lmWjdQWUdcrdj=&su9DgRZqYkkqa=&CVO_3RWWecYde=&NRHBwaWmaqlfb=&Y_7yGaUjXrqlf=&dieiOXZbhflY_=&taQzqwWpeUdgb=&RISPLIUUnpZWj=&IzijyJYWgXXYm=&EgBONfZcljiXW=&yWi9tMWrjkrgr=&N6Cae8Xpqerer=&a9zdq6Yrg___r=&GXFC8gZjr_klU=&kXZK6rU_Wmroq=&uErtIAUfhpZlo=&R3GzwqWWolVbq=&_rWpSKYeUhpmZ=&ecfpw2VlhoZrr=&6jBXw7XiYjlrl=&SRWldwZloYldU=&PIwuDdVcYrjer=&f86Ez2YehiUnY=&YabwTKVnikcdi=&3JRfFOW_rnmfk=&pvAYeYWrlhUgU=&lWG7laYcilcrf=&ypszKNVkjienX=&YmHiysYVkdmeW=&SHbzTPYUYmkiq=&UTkDvQXpYVVs_=&tXWprwViXonVn=&LdYTvJXhUbkcV=&HAL4U9XVrocUl=&T8ecsvUsohpbh=&o7Af38VoXnkcs=&rsnmpxXVhoZbo=&SXM5efXVgbVep=&oeUBaaWYUggZd=&XESLouVXXhgeV=&VSvh_YZqdfWjo=&uXEgpvYsgbipa=&y4xF4kWWWjmmm=&BNcqpvYYbkY_i=&khB8jhWseerVk=&shtLC9XZfVgck=&Ib6EyBXmYUaWr=&4t2XC4Yhfokqo=&vhFlLuWeYmqbn=&Fs5xLiZpgjgrk=&hFLlXkUsjW_aX=&NYiNmKWYVeYVV=&DDARd6Wlcnfqh=&HZU2_bUhV_sUj=&aLjD7HWn_mpch=&GOqIKAZcgcUee=&EjJC2nXqdprjq=&JAq5_HWUgdUUY=&b73932Ypirsno=&VCV4ciZcXoVVk=&Ako4SVYdUqggs=&pF3jVCWobVgsl=&gAGajsUWsmqeg=&QrInFkWlogXqk=&LY_bZqWsqpmWf=&aYcWQnXZYZsZm=&RSZOnzUVrdZaV=&YlUgyQYpoUdYi=&pe9_2sZUheXqg=&MtgXOWX_Vpcme=&trcdGGVsqV_so=&TyeTMMVUjbXXe=&ZhFcPKYcaWdfb=&Zrk9qpZXYXXim=&B_68TEUVcllW_=&SheDhFUgjnamn=&j_xA4vWUjVhie=&O9HTbvYZWkbja=&9qOwd_VnpheUU=&yFan6eVmdWmnn=&GEUk46ZXcjoek=&lLicsKVlrVcjm=&lwvmzXXXZcoXl=&cBPicHVjhkeZc=&hIrGXjXdpjVWi=&fHqhjAYcbZoZW=&rspmUSUfogVlU=&LE8x7GVWflZVf=&k7dXS7YlbjdZo=&TzcnGtUpfVhWr=&brjgCkYhi_Zpj=&_Bdf5SW_raqkn=&eZwRNfUXUXinm=&7iPusUZkVefXe=&n777pIXhgiWZq=&c9G6F8Xqhjjkm=&sYbVQoUWWcgmf=&npBxeQXflpdco=&wiYvq6Z_ZWlqU=&TLHnxNVdeVgoU=&frDBInYgVlqlh=&LWCmFiVbidcka=&I57vkpVYanbVn=&GsWuczUlYWlmq=&lMEh94WWZdXnY=&dPq42bZoaagZa=&LqFGxCWaXYghW=&F_xEmBZrbjehX=&L5nJLVYferggc=&Zby536XYsUVjX=&DyuiFxVnoXrae=&bPVv4bXWiZmaZ=&wnhaXMVsmhgWg=&oKOQPlXlsdnVa=&fqrbO6Ye_g_rc=&7TfLrMYinXWfa=&y2P5f3XfqVUps=&dBaYmCZUfWYng=&QHAGeuX_impik=&eF6BvWWsXXoUj=&6aZHcHYqpZkds=&fkBuzSZrhnapX=&GZuLLDXrYbkma=&ZpknyqWbUbkqi=&riz3_xZehsald=&89WqkwV_Vd_ib=&MhQrQjUmjfbkl=&MReTrHWbkjhkq=&aTF7_iUhYffmo=&BVUrp2Vqfmfgp=&C5AZGAXYgqbrZ=&vXIqkJYlUnYmc=&6Kj8VOVgijnga=&_sNEDYZjfnlgm=&hVjspVZpenrim=&dtOivAVhYlchY=&w64RzrYgWYseq=&QzTDGgZXcnafa=&MsaSffWlfeqmb=&OqAr6eYocoVmU=&eSpJSuYgsimUp=&Hne5CxXYV_ipV=&Xa4SJPUoqUnjb=&wc5FkMUmmgrng=&HKMcKxUh__Xid=&6KJGzsUnhmcZZ=&JvE2y7Ufjmdhi=&uSiLLpVanYmqY=&NpzAMmUUfVapb=&HnzD3AXagamWe=&8GasubYYjmXYl=&vDw43cVfkhbpp=&95Agi3WiklVgj=&JMKLrmZlojgon=&pHRiR4YYepbrf=&_jRLevWkZgUqm=&LDgE2tZqVpsZj=&25eGqhWfkXZYq=&dozuiGZanmjga=&HtfbFcXeZbl_g=&6ePPKMYgoZgqn=&63wDEbUocohXW=&zFQ89pU_nkcbj=&8hTQnPZrckajr=&OL2dmeViilkVb=&I8ucAwXaZfoeX=&VMzaWBXdchmip=&NJhMTqW_sl_Uo=&sKtxa9UmsnYfn=&IjBdZeXejrgWm=&OCaa_IWrmsdcX=&R6a2k2WYUdjpm=&Z529zoZrqleYX=&Q7yxUuUjVXepa=&fHXD2bYYn_kjh=&EEqJf9Yg_hZbe=&guwwJDZfkZd_X=&g6k3Y3Zbesord=&oOh5XWXdqnjkp=&sgLekYYffmUbV=&WaCZVkXpZZbci=&IIgeOuUhXosZo=&9GbRliVUUgjc_=&tIht25Ye_cebk=&ufgUrAVkpimXa=&HSIKtJUZdlXZl=&gKUfuqVZr_eaX=&jShjARZUpbYhr=&S5paSmYcfohUg=&t4gwQlUWUWeei=&W4K3qsYUoljWg=&7gpveZXiWmnlj=&vIdrujYnclsmh=&s5smhkWkcWbXW=&BFwOqQVidkjag=&_BrXCQVrrcm_p=&cqVNFTUisYlWs=&8i3F7pXiohVgr=&jRswqJXboifVs=&QfcUSzZWjokkj=&3qJEQgVjYqcgY=&7YeX9TUfjVreZ=&WG4DxwXfodkeV=&2QzlwXUpr_mZa=&bCG7FlVpWcnqZ=&M7QalfYWlndis=&OxLi8zVceVhZr=&IQVo4cZjWZnkZ=&HzuQGqXmnWUmh=&iVvhQPZlkejXr=&qzNG2XZanZrkn=&2iL2wsWrb_a_i=&6sgHZoVchi_YU=&3vqn8KZrkqWaU=&ELtSkpUql_Wjg=&RmcgrMZUnUqlq=&dzRFwSYcjjUaV=&PkwylnVYiXibd=&jNGXYXZqipqlg=&fFFfLzUjrkpms=&LdBUfyVljj_ra=&fbpA8OVVajfjk=&KWzxYBWklrZr_=&oKLn2GVZWYpjm=&bVLQQjWglirjq=&HcgWZSZYbpcai=&NE_ovBXqVfYXU=&GBQknHWmfsndb=&7eOUVQYVfVibo=&SFT33_XqYsgVZ=&5wfQP8VVmmUke=&NO5483VXcpoeZ=&PLyaalUbfasrp=&rf2vJwXgjWofr=&qTsagKWccbkhW=&8uRM_EYjfbbkn=&35aYZHZX_qmgl=&QBMMYPUhfbiW_=&Bclaf9XpaqsaY=&LTPjXNZqXhsrX=&jBGXYVVqdYmnq=&3TpUu_VZqgVYg=&NeCGipZhfXeYp=&JBTWIiUmXZqYW=&_ox_CZVXooesX=&uPvwiRUmqglhi=&7cKDmeYpaZXsb=&TeedrKYdUlbcf=&VzmeNyUVaUdas=&ZWNxn3UdlX_ln=&Cio_LkXUfjqZY=&da4BxtYjkkadU=&Sntqo5Ugcjmcg=&AxCRM5Vlnfmaj=&f4MrcUYYkeakc=&pgp44fZdjiZaW=&by4_odZenifbs=&YIOb_JZqgcVhm=&APVRVIZl_nksa=&Cu5MmAZ_eVqsp=&xZqvZ4XoWeq_n=&6Z8NoMVbsmkr_=&Z3AoG3Ycfoopa=&oPnqgmVheqrWg=&dvTJ2_Zgjmfng=&rWFS8XYipblbd=&RYqJxLZ_ZWqgf=&UoxezTVrhiqrY=&hbIJh3YpaXXXn=&ruoWEfZliYsWl=&gfRkk_WbhhUWs=&iphszHWjbaZm_=&yPNi3pUmmW_nZ=&9MX44BXe_fkef=&2Mhj8AWbjrdVe=&Lq6C6cYYfdefX=&FvhE9EXgejZYf=&Qk9rMzUhghsd_=&MB9KahYrpqs_n=&mrTCqDZVZ_laW=&6K5zrtYfpnh_X=&hqZywqYk_bciW=&fXxmOvXegesff=&qh4TxzZUkapqe=&jLCHrEUeanVd_=&tPbZcWYXbUhXd=&ShSpjtXmbZrpa=&3_PxqQUgqnVoV=&WCtUgpZ_UffWW=&6hk3bIUiWVhag=&Z5rsDAWqhbjXU=&fFL5PnYjYV_fV=&yvwihWXUnfZqd=&zNL3mzVhcl_a_=&LxNrgTWhopYcs=&luTAyEXhmleqW=&l57AQdUhchaaX=&l2GqJyXXdVVnc=&q6G8hmXhhfqfX=&akvOGhYcbkYld=&dS3LpkXceYsV_=&UIge8dZhsbmnV=&ENAGpdZpmXnhX=&9JUewOXdrrVpY=&NZLGZwUeUWXZr=&edsbrWUWZr_hp=&f3XEvyXrpcVUc=&6wnZ97Xkpfeir=&rI_zo6Wlqnajn=&zjWl9wZUqcdek=&eTlh89WqsjUqs=&7lpK9_Ubgijj_=&DXRNFjUnqbZWU=&KMtumKYlapqnZ=&JWRqIDY_brkjV=&hIMUdnVdrjWkg=&gbzapFUkhjdag=&LN_ZooZrsaVkr=&rZNam5Vmbkhnc=&obWmHdWpc_Ukj=&A46mCKU_dlkl_=&ZZJLopYncfpgl=&FOXBO9Zomjmmi=&7e7AA3VVcnjmr=&YYbEEaUbhceYU=&Sz4n3_WjahnVi=&vLXasxWnmcsrj=&AJ_ESZVnoqoql=&neIKi_YfZoVYn=&3Gdcl6UdrXbYc=&NYqcBpXWmslXV=&GnmG7fYodphko=&Z3YSVLYXmcefY=&yZKLOCVfpld_W=&IYcyLfXboqmYr=&Q_U4k2ZogWiis=&VC2gySWnijWZq=&yPK4ahUbbWscs=&H64DubW_hWoUb=&aJwsqXZfYkr_q=&R6KhLIVgYhrag=&ZiRMvBWidsplm=&86hNcaWX_VeiX=&o6l5yiXfZ_shb=&LmDKptXbgfUXr=&2k5nNvZnW_ode=&cmGi4TXXkVYVn=&ldm7_HUdpmhjs=&RBZ4ziZseogVe=&dhSxFEZrmlrel=&YMUyK4ZjemaVh=&hHnVZfVYUlUWj=&L9ObftXcrqdgU=&ykAlnJVcWprcj=&tUzbP_YZikfgV=&2sJhiDZbcYXVp=&GobJWJVhdjnho=&ZlcWsKZa_flic=&zay7iCVsf_ohh=&ftt974WdjUaab=&Ek82piWolZXgh=&3ZxSG7UrYlfUk=&6F9AQaYlheiYb=&lWbcVZXrbbqcV=&HB5VyXUdsYjWV=&akAEWCZUk_hgb=&7oLrK2WjkdWk_=&bKklsPYdrUorr=&7p93WVZdkonXd=&NgXYcIYqVbila=&6Hg_kSUmkf_jj=&3bWacyXnbpgjp=&Y_zyJdVViqpXi=&umHaAfUcUaXhZ=&gXkazNUiicbpq=&FOLcR_WhgjnWd=&gsfJPKXdisqcm=&rAl_BCXpijnmU=&RWyz2XVneeVgo=&93OuA6ZXoqdZe=&BCZRWKYdhZpYm=&eIacpgUVUbmqi=&VTPJZTYXUZsb_=&KP2xzYUsqqdnl=&it9G8xWbrpsfo=&ixiZVTWli_lh_=&WrUVWYVlbees_=&cULQUDXfrqpqn=&uuxoWdXXpjWef=&q5EFKzUdnYUgZ=&dQFsxtZqmqdoV=&KGVmKWZZZmrWq=&Ovu3gzXsojq_V=&CQP9XpXZhkphf=&kreXNlUWhbYod=&CTYVKjXUephnU=&WKfQoiYrrgqjZ=&jvsyAZYsbnqqk=&YN_gDnYrqaajs=&G8x3EwVdUfbqf=&u79b26XYjomgi=&mffjhfUhriqYg=&e_LkVAVrejaki=&35QCvHZdkgpdZ=&d_8KgSVkUnmpe=&pNBAE_VXqqflY=&dJCg8UV_gqWsp=&Yai8PbVsYohdr=&UkQj_jUjsfeYp=&aOFirlVihYZra=&4yXkttZqohdWU=&xnb2G9XmYmfZo=&4nunZgZhV_ipX=&djIs9hUaprnf_=&izRpE_V_ejrih=&gWNsapWhYdqqZ=&pUOODMYlnUshW=&kZIjdTYWjpmrc=&lUOkmRVVlYbgV=&pGV3rmWWVYWla=&jdnTpbVemUUao=&vkulyqXZ_Wnhr=&mj36oYWdeoX_b=&AOD9AuYXoqjbj=&zKqHjwXsacior=&YJeNxFXVWVpcr=&t_q293XlhUYnV=&ue8o83UqYWnrZ=&HxxjjnZliWmXk=&y2RTDHUmkaige=&7PsjpeVeeWjUk=&tQxuIfVXhfpbc=&iuMiGMZhXlhXZ=&MXhuQqWkm_YYX=&qbslhmVVdYgWn=&6n3PqqYdnaned=&5zvUkvVUcbkUq=&jV22aJWcUbri_=&TvJAaOXgXofhi=&Jy5UwMZhrpYYk=&OppEnjZjajWbp=&2BoIJhYofaUmk=&gEYxNjVjlsrZV=&F26_ypWh_cfdY=&ep6clfWkskVsU=&LBiQP9ZroVXYa=&qkcZk8UrfnngV=&HodvqXWd_sim_=&lzwYUTUdsmVqm=&QmlArlWUjccpi=&eRlQJEVesgjYY=&MeF6ADWpVipbc=&vtDXchVlaldq_=&rmgxr8Urgkejr=&wwZ6ZSXdfVmmk=&6nv3ZtXgWmbnZ=&2jPuweYnqnjer=&E6aqUUYkXb_kc=&PNmYj3WkWqarl=&FokNZbXgX_k_X=&9SqkvsWUbprmr=&ZS5rj7ZkkUfgY=&n65Tq2UXiqgci=&tCMilTUjlmbop=&yyE8OTZZgqVrX=&_Fy6L6Vraeoib=&SyAxbiUsfrddh=&D8ViQrWVrgkep=&6r4SJcXWafh_i=&6LnSbuYWVmnUd=&nHABIeUkpemap=&m22JvBYk_YemW=&qzZIZqYbrXndn=&4WBTQxXWlphfW=&iPiGrXZYhVinW=&mJtRHiZWdmndr=&3HVITvYhqfqcZ=&wMjOzlZeqdkoi=&riSFHiUdgmsfm=&_XWFitWUZYpWq=&XPEMSCWoiVkim=&7TBMd9UnsVsrr=&hoD3m5XkUnljb=&XSL_qZWhlgrep=&6tv_r5VYhYmep=&3CJArMYllZg_U=&c_j_9oVqqkopW=&L8xfc4XoX_qXj=&Knq2w2Yrc_jko=&fKSj85UsVfk_U=&bP3g3AV_ia_dp=&qyAPNSYeVmkgU=&LqFGEmYm_jWgW=&CKpARHVblifVb=&b2z2PwXhlnZVW=&45jRRkYoVXrpr=&ck82vDZjsmrac=&Ixdmc3UXgVY_Z=&s2FesfUfikejc=&LOCVlCY_feoro=&sUare4VkZ_eeV=&qHwL2hWckaank=&m48w6jVfVUaqs=&fZyPbCWZpbXad=&W6T9yxZfdrpbi=&HCLQISVbqsk_f=&hAXnJlZibqeUY=&QMJ5JuUgVYjaX=&SKyKBDWbhsnZh=&5pEy4hUqlqhdZ=&Gv2HavVcraeep=&kdzBSjZdVaimk=&ShYE9rWdcoXnc=&xj75aIWafZhdl=&BC3YO_WZlg_Xh=&LrnYXkVflrplp=&bUwQbZUsoV_qV=&OUNUhLUjanlij=&hwT7Q_WmhiZqh=&HBdFOvUqejYpU=&OxcFOAZdVXp_s=&_EBj76Yidpchh=&FfAEOiWjhqVsq=&cDc394ZoecUnr=&2rQrs9VUifsYc=&r97pEDWblWU_Y=&xxMrgpXkjprYh=&RKfpaLYkpWoXj=&RUDyDvWslhdph=&ucdv5QWhYqdni=&4pKWcZWgkdcsr=&JFalYgYlmfqmW=&jpFSakVUnhmlo=&NRjgtWVaaikfl=&EApubsVqrYeXa=&KpaWLTZZbYrac=&oKmOqVZXZikkj=&2kjl7WUpdecjX=&fVJC4ZXUakpVV=&3u4kveUjgbgep=&qYOf7oXclrbll=&OtzqkaXX_pXlq=&36wXL9Vnpo_be=&wmcIcYYpmXfZb=&_z3PDQWUsYWam=&8sTsDPXlsierW=&Oyel7oYasUoWU=&DbD9G8XjgX_df=&xLlLN4Zfiioqb=&ygo7FTVjgXqse=&8igik2ZgkXrok=&NaeR8zVhVghlc=&mJyji3UZqfWmb=&uFQZjcZk_gdkm=&GVkpMxXckXWWq=&hVsIy3ZWfknXd=&fcpg38UlUeUmr=&2ROeZVWZrUskj=&zlCwQeWdngepe=&FQSIgfVVskfWc=&cn8wdyZhnpipp=&lizfnZWjVeWga=&VYnNQSZWacUV_=&8XdU9yXYUiapo=&3ZHPKfWnrbhor=&I3AtUKUjhWYia=&BGFRtjZZZ_Urc=&ygz8JSUbYcVsc=&QcayoVVichsgW=&MGOkm2Wbreeq_=&JZDDFCYssWjni=&QZHdk4Vcrdc_c=&ALac5TVhkcjjp=&2B977mWkaXrbY=&tPrDc9XbfaWam=&RioutGUcbqjXU=&rbxVOQZokZWlc=&pNETdbUpopmma=&pnSgG5YpUsZdY=&esr6bvXrsaUZm=&Gf73UzVZmXW_q=&YFfy7NWfqsbZZ=&VGLXu7VhYsfWV=&b8N8RtWaaaUZk=&eoLDxFWUiWWpo=&Vw5YZHZXXfbof=&K_V8DwYmhcaeV=&iuTgp6WnkoWhk=&I4MSFOX_aXdjX=&MClinKYfjfZib=&RIUIc2WgXp_gd=&g6o_eYWYWrlfd=&GFK5P5WkXnr__=&wy4YEoZiWVVbe=&O4HUL3YlnshrU=&58qFlsZXU_mYm=&stWAVhWnghakY=&fGjIocYbUfYsb=&5BV255WjWoirW=&TDeI3iYnhfVlm=&uQ72wlYi_aojs=&rwWZaDXpsnUsV=&RXeeeGVnnqcWq=&jIkp2QYiaoeYo=&WzJgP_YbiVaWU=&kH8ThqUp_VnXX=&dlzsKZXmamjkl=&UI3dHsUVjVcoc=&PoPqjIWqslhdh=&poOkEIWf_lUjj=&oc3AeYZgoeogk=&ZKzW98UYlgmkd=&wvBx8rYWkhWlY=&wCVSo_YaZrpgj=&75GoMeZporUso=&BLTRz4ZomsgYi=&8dFmiDWgnnYsr=&tyBLuWZhdeiUf=&ndr8jRYglgqYo=&BehoQhXpWmmok=&chyxzGZdWpZWk=&WdWJFTYfrVaZr=&UIzg9OUkapnW_=&oPNwbYVYZopgj=&vPiXosWcjpfna=&YelWDTWomnlVd=&dktr2MUViYdfm=&k8QogHWmYYbga=&D2M7L2WUpdmnk=&QuUE7aVmnnpqp=&PtVnaRVpcpelU=&ftLaYwXfVdXVU=&qsaA3EZdZlmZW=&XIVDt5ZZfqacg=&Kac6UZZnUUsV_=&Q59SPuXVUXYej=&WWSIdIXaqcnhj=&lG4qMzYbqlmoe=&Q7dUSUY_bVWpf=&X5jwmVZUbdmfc=&kUlpTyZhpb_es=&gqIhEXUfrkUal=&dfbYkaVklUoph=&7263KqXgVnhpg=&PnH5q4YpkmlYn=&NnkPRbZV_Ymjb=&2a9dPGXVelqkj=&jCRxz8WaVorqY=&L2NRtzVYdWrUc=&2aBaZlWZrViXp=&YgIeteYUgbX_s=&SqekUYYdsWhnW=&Nq5nHPYUYVm_i=&AjMy7QUiYrYYV=&u4MJckUgn__hj=&R3ygKpVmkmhed=&L2EerbZshsmsZ=&wmZQJ3WcjXeaf=&b_d7WOWqWodYi=&gvdnjhWsnUkaj=&j63r8oWiWm_pU=&p2BbFaZmVlWfo=&r8apFhYcUWoXf=&wdyWLrVcfXsbY=&VJeOtvVdWZ_jV=&mIoCO3ZgsXbge=&NqUVhoUUlfcmi=&ZujvaoUV_rso_=&IuD_dSWeZXjZl=&SCXaOGUrjof_f=&MOI9dqZacYcYl=&M3hhnzXWZefrb=&EGEFpdZXdddal=&D2beRFXcqfanl=&ZWia9nUdgfbo_=&7agRTXZjoroVm=&A8RJ83UnqgVol=&MsDCLjUjVrVsk=&XId3RUYYebWmp=&gPXtW4Zaqkcnh=&aP3gRKZmh_cfc=&xMUpkkYskjhUp=&VkYxtpWqmqsbW=&ZrDAlhVZmYfsh=&qpUKuTVjcVVqp=&O4K5wtWadXfom=&aykOp7ZUgXjZY=&8yBugcZjqhqee=&AMujJEYcVd_Ve=&QDvFEDVkdZhrq=&oYgaRaWXiUsel=&K8GmEvZdncUai=&LMO_D5Zsgk_ga=&88sWqQXlVWekY=&XzxuhFUfdUgm_=&ejiJm8UYXYkZ_=&a3fguNYblifkq=&2kLZNTXajrcYn=&zexRt7WqobaZh=&qwCNzeYglUZVi=&rpEhcJWgVYXli=&cXfaAZYbaZdno=&VmNUAwUZmsbpg=&uFQqvxXjckiqo=&aprrINUbocYqg=&PYGgbDXbVoion=&Is6znoXpodhZh=&k3SGi_ZssghfW=&65fM4WXdmXkhW=&dpcIlwZsjVXbf=&n62fvoYfjgdqf=&lpwgkTVcqVVWj=&QWTEfHXloiXir=&hiII3zXWmqqma=&3ZMK4jZfXXhkd=&h_sjweZgpelgs=&fhaqvYYmdbcjh=&mY_PFPUXiYqrU=&MlLSTxUf_prsg=&TSM4SkUrqpjgq=&9_nbcZWghYXcW=&KgbGaoYaYjahi=&bhGQTRYaUdbpm=&22vpUYYbVUUjU=&LhMmrFX_bdVli=&UdPDAFZkcnosb=&eziLnbUWajsge=&Rv7dyLWmUriZb=&yTMgHVYcbb_ck=&UFzx_cY_UnXbV=&99pNXhVaiii_i=&3CGZOFYllfgVp=&ZSm5U9ZjYcUUY=&lmXAKcZdZUrbq=&US25gmXU_nZpc=&QHZStUYng_nfp=&Yb8Z3dWUdsnrg=&ozJxYwVofXUbi=&kgqBh8VriYhZU=&VDbdzuUggWUhZ=&SyvmJ3X_WfUpq=&WzYdt8Yskbdle=&Q359DvVmZeido=&mCkL8NWYcedoV=&VKNHeDVdfhasj=&PvVE3fYlUcpUh=&3oITXxXddjlip=&eUspMlUWWecXk=&v4mkvSXssgdfd=&AZXFpDUjs_cob=&TxpG4rXcYWmjY=&WIRM5XYrpWWXk=&c65PG3UVaeeWk=&GgCrDeW_nocgW=&_3fMnsXVpVU_h=&dzN9tbVdVks_X=&sBmfaBUYqelap=&GEI6DvVnXsfmq=&PdxXksYaVVsoZ=&5GJPSQUWmrsVZ=&wf6DAmXg_bdgX=&TuGlxOZh_oZUp=&OZPxyWUgZgjkk=&e4WtX3VXpZ_jX=&oEz8gAYeZngbc=&cciqYCYonac_q=&dOS2fDXYqirZc=&ElpQkAWgdXbe_=&hCwQ5aVnmjUni=&dUKPBsV_cdbcl=&lYM_rmYZWYfqb=&DIMEnFWkZkiVa=&wU9ywxUrZdhkc=&hmNHrUUbhVZZW=&5g_ooSZrspgao=&dVCFiXXqepXXb=&7wz5TQYlXlkVd=&QkZAEKVrWYmas=&OQ_8SjZUjaqdq=&nu6ItBXrbkipl=&DVOkjaUds_fcW=&8OFGSCWmnkrbe=&qF7F5BZnaZgqb=&6UYdWoVmWUqmm=&JOBlMAZaZeonn=&abn9Q7Ydjapom=&4HTQ96ZhjZXVd=&LdDhgaZrfddpr=&io4f3JWhkisin=&pcNLRJUfipYsU=&fAHJhiWgWfhWf=&f_JboWXrfYUmX=&4zaVaeUbiaVai=&hK9tRNXcVfbkX=&TsaY3YZdaalVk=&kUwwCVZddWnci=&oHdPUKZ_ml__Y=&WJrg_YYWbUcWa=&EAVjHAVlo_YiY=&wtKDNgYprorjU=&5esUGcZeorZkg=&HJoFNeYsbhbnV=&46dKvhWcUdekV=&DgHfMQXdsjXnX=&ZnjEZxVnrbYsi=&ifuqyJYjmcXfY=&CUuO6sWameXr_=&2epnKwVqfqVah=&_uRljpZsVfUhl=&tf_aBAVarjiah=&6yxwz3UsVZrrW=&4wbaSUXafmeoX=&ndlRiZYigdgmZ=&tzvPcwWcobXXm=&bXqRFhUqUYnaf=&86yWuyXoaskZr=&ok8svrVdZXaia=&YnO8N9YeYm_lp=&_jgkGnVpVa_lb=&7H72TDWaqUUZi=&VCUpSuYXl_Umn=&qHrCxdUb_lq_V=&HPFujWVddeYfZ=&vlgkQBYiXdlXm=&yYIfMKXUYjajl=&skUUkLUhmqfim=&H8kxnzZcdahUV=&zW7GcTVrrcqZn=&wB5yiQYrpbdaY=&GUvuruVmWaVUj=&etLnLyYkiopgg=&PjqUcCXkjoebm=&nz8oyeUjcsjqU=&IJhLYVZgrWssn=&aQl3sEYhkmjYc=&2nbe9cVqkaZke=&f2oAygYY_ofYi=&bcj3hcYWrWisl=&j4MXbsVjXsrqn=&_lxibmZabaUnb=&MPNfGmXZbXoos=&qxyR99Zmiamme=&_qC59_YVonrkY=&cG9tXQXospqmb=&vD6xy6Yhqajrn=&fxBcqAWfrqnZW=&LiGKQEUemVX_o=&lSK2atZffrrmn=&KBvazzXWXonim=&hpvOKWYUonbaa=&DJDTcxWgWhklg=&EGTKGTXorXiYm=&kmd7i2ZdgdYbh=&iBhR7kYshoioX=&LLCtbcZiUWWbh=&lRlxgIZhenfon=&4LfjiRWjfcpba=&2vB6vtVpjmZgZ=&ffmh2cYljfjcn=&a8Yu63WUUVack=&EYJF86XbVXbZl=&K2PBuOUj_ksXs=&h8uTxAUqesZgi=&NVFIb2ZjVhmYc=&7Tv2zTYnbVrqU=&QdLNNvX_Wjmbf=&vDYR24XoeZpdc=&wItAqCXZohlke=&uUdjHTUqiqbXf=&MCH2daVXgnadc=&E52Vl9ZeoWdWa=&la8XIzYlimngp=&uHJvYvWrgZsWh=&QfypFwVYiUlke=&m7QyopVhWeZqd=&ibHs6aYUYmf_r=&dvAfKHVidodYa=&mKNIuwYiqWZbs=&hAXerfUXoYaXX=&bMWkOIUkccmlh=&97qCUEZnqrrli=&KHWJAfWjrqoeW=&jr65vUYXd_Vmq=&uNTlUmUgmXsZg=&UM6StXYWYmWhV=&9494y9Zmrpfoj=&RyuJEtZaprYqf=&GZVF3PUorYpWb=&YRgn4AUcshUWl=&bSdbVMVeqZigV=&LkqWVcZ_fsZei=&WP6W88XpoVqhj=&8de5zQXsoXXXq=&vk4X2zYqZVVsl=&gn39G4Vcjphcb=&DizFIwYqmshsb=&4f8yBLVYmUpZl=&64dQ5TXfrbUXe=&wB9ZwQZiqWmW_=&ksO3p8Wansima=&wCkWJOXon_Udn=&SUVkxgWiVdcXU=&Fps6OsWWnlkge=&SiQapYXbgofWl=&f5SXrqUcpsYjo=&ukwN2RXhkgfkX=&deyXtyUWXpWXZ=&YuCP86XjW_Vgl=&j6thgbVhnskbc=&BQYiEbZsbXbfi=&oUcS4nVifYXUm=&gtR_jlYVlrbZq=&_zWj95VrgerVb=&C4CrJLWUZiYeU=&kKBBCzZrbrUsW=&VSyVtPUjhjgXX=&rsube3WVpkdnZ=&resttPVnlcXrs=&tUV9nOZVgsUgY=&XSJop_YmgmmZp=&SOIuEvUrdneeZ=&xaehKbYfghsnf=&uqcdZxXUfWrdU=&qw3QiEZqnqiZe=&F6kbP2XWjlWdq=&PMTa5dVdchiVs=&54KMLKVkrqg_f=&_XJpoZYjopfaq=&NM7gpXUVqoZVl=&wPGLtJWhsrkgZ=&NhVgtmVhUVWsm=&dMFkHkWWkmrql=&YtvFlzYiYWZ_f=&UHTL6XZciifnX=&6f3EUJXbjqpXj=&utMxhGUWnlfgd=&4e3MGtUZcYhaf=&4rhLsfYjmdj_l=&ZauB8ZUdWWhkb=&_cSD9TZ_gapf_=&W4RstNYiolpap=&66JJtBVbhinoV=&gHLzi9UlrrUd_=&iGRr_RUfj_lqV=&KPgk2qXhX_Yss=&s5ULTaUjaegm_=&Oz7i5yWqWjejm=&fIpltkXsbmVmm=&dFbjaZXedlUjg=&pss_8tYo_m_nX=&fZA6hpUckknVa=&Ii86qkXcgeYsU=&dFC5PzZmar_da=&UgIFx5Vbrbccb=&EmwMKoUfrgsjY=&2fcR6jUajg_lg=&DFRn_YWperneo=&PaTB_7VWminii=&n7JQ9hUmjjqrr=&te6zitUYhWdpY=&H6tkOvYekX_ss=&OIxLBJW_fpXhr=&Hr4ldiWdcbjmp=&GhAy3JXgYesfX=&STcsX4WrelrUl=&eGhJNCZfl_rUU=&ivGtlbZirrgrd=&bdMefUXqdcbha=&BpEjpEYWorXZe=&xks6iKUnhhpZU=&ZY9C59VslodrU=&mrEFqwZoZjpWr=&_FSP4CVemahYa=&FkjtoAVsac_rm=&uLRjQGYnUdjWp=&5odGTAZmbbilZ=&H9vwjbXblgaai=&9XSBj9Vffiihi=&kjvo4YUqiemXZ=&ZO8JMSZhghmaj=&HGzWdNUbhjhnU=&cGo25aUkjnYes=&kAgFIpXlb_bfk=&3OWohbWXlUrZZ=&RuagxVYVZZqiV=&JSs7V4UhpsebX=&wq4MfmWjgnUYr=&mOrkV4WqkZp_k=&SstnmaZdsW_ne=&cW47WqUYemjfs=&2AtWtIYrVgphc=&SQKAdhVfXsiXl=&SwwMj8UipZoar=&D9BzHqWVkUWln=&UIldq8ZXYmeXr=&D5HIMiZhfhcod=&xKvR8fUbnbsdi=&eAPkcMWnVWbiZ=&hplyeOXikXqrX=&uG8FvuWedfhgh=&g_VpjaVoirbcf=&lvDyyAVUrkgXj=&p2PXRlZjslrUj=&s3i9vKYedgdnX=&56AtFIUqUdpgs=&kIVnUFViqXbUn=&ighTWUVrgsjdd=&zZjfbTXYkWodj=&z7daPBX_srgej=&TUXoZRWfkiWss=&oFmGGRXnVbpmU=&dyC29hUkhddql=&3YaFbnZWkVofp=&Zm3CGCXrhpedZ=&2dNxqKWbnpphU=&Ew8hsAZm_V_pe=&fMgjpdYobgsoo=&Mnv8WFYfgdUhi=&N3tWmCYWahcWq=&bWSXIrUjidlkl=&hHEi7fZqUaaVe=&TlPrChYrhpWkn=&DBb2MJZjj_iVW=&AKf7Y6XkeriXa=&ZRpZoxWfcgdfZ=&zZwW3zUsmssVh=&IoO3nIWjdXckn=&mDa2foYpW_dms=&fsaXT7YofhfbU=&xKSywEZdbkhYe=&vsD3dEVfbrams=&brRgoYXffXigg=&5fLhNJXilWeqk=&wY_eqnWogoeke=&6wmwq_UWbpbYZ=&dxyxq8YrWlsgV=&NUG4ejZnUfZec=&XqWhQqYYjjhlh=&P4GLAHU_ropno=&HWYydDWUeYgZn=&2qlCfnVsddklV=&2CMvUqXmjdYgm=&8MANnUYcoolkl=&SOYXpcVmbfofZ=&L2Xrf3Xpdjfcb=&ZdfijuWqio_cV=&gCpF9jYacYrV_=&Rh6FXoZaVdbis=&OMk9KoYU_inmo=&8x57BoWaVYZok=&ndlelvXfWnmoZ=&aMeXZeVheammr=&HdqTgVVgqpsej=&QUrXFGZmpnnpX=&KammkBY_gbael=&6KVp4aYbUfndf=&XqeIAwUh_f_qY=&uEArD5VaffadZ=&dIhPOsVZYsonh=&_WqD_RXrpfnWq=&tloSJSVX_escW=&LsCe4zWsfY_Wp=&FUS7LtZrrZZWr=&MqrXjVZfZVUdg=&N6Go2QWdUUq_d=&GN_ntvU_ejlmb=&gFhZKrXcbebsq=&4RvpPYYlhr_ng=&INe5fYYlmiefr=&ibHb7qYkkolqb=&9OfBM2ZkUbeZd=&mY_AnvXhleZkj=&UtxkR9XYjkcqc=&jqu9xuV_jbiXr=&V_D2PoZrrmpVi=&qWw2daXhroYam=&4CfO5VUapX_dl=&N5xXUzUagdaXf=&M7AngiWVhg_m_=&CLLPZlXYkZpWp=&hme79GXVaorjc=&BOvoSfYjooVYg=&AhseE5WWklkrk=&g9qRt5Wcr_ffg=&d7iz3ZW_dkslm=&kVxh5TXilpcbh=&6CEDI5Xcsampn=&i5MwRAVWcrlbe=&lhsSOaY_qlmso=&FX2crCVWgVsgr=&OXocOsUlVjjok=&2Wap7UYqVcqrr=&Vq5Xz8ZfZU_WU=&7Sp55zZmbbnUZ=&PXs6EZXkqpXbV=&bLks5yWaZphbj=&tg3A5hUcVfels=&sJdJKZXh___md=&DnxiCPYeUikne=&pbhTJqUrsdXVk=&FOxk3HWqqndki=&cRWy9XVldsoee=&OADm8EVbmrigq=&CHRYmRZssdofl=&8tLBc3YkYXcak=&MBkI23WnYfXVp=&Ofw7phWUjVUca=&KDUbSbUipq_bg=&YqgtgOVWhieUY=&qnyFvEXhfjsk_=&TYXeYfWUghUrU=&lvCWwIZfj_kgg=&2GVUOQVnsceYl=&lDHOs7YoWghgb=&opZOKyXopoiXc=&Y9Dv2_WjngbVY=&IhzRO6YWUWdpd=&OM82H8VWrcUgf=&Fa8jz2ZW_oisV=&4jvIUfVdXnbYo=&ZpjJSmZYqknpe=&ouTEEzXhfcpUX=&lNafkeZjqkpnc=&R2bdgAWac_rlV=&lMFDjXZolsdsr=&tR_ii6Zdbi_qr=&DyZ8hnUssjpWo=&5FLgTRYgrkaU_=&p5rB6cUoehcmc=&kmZkVfZscXkWW=&zcS3TjWqosceY=&gJRdrjWcYnVeW=&ZWgMSCXg_qblX=&KxYOIhXfinibh=&NyL5_pVbaiXpk=&HdVOytZoaipcZ=&pBujA4WloeWhp=&mMzMxuWlm_UYU=&woFCpkXbhWYXb=&zSh7rTWrZeqVo=&eReBBqW_gcllW=&Oa_VCIWoVpfj_=&bpfWTaXshWglU=&Sd8fHsVZsebUm=&wC6eIOYWhUrk_=&amw7f8XarYhss=&OwGHjaYbimWYi=&fGah2sVrchgYV=&e_dWk5VYcokbW=&uHTCfgYqmWaca=&HWUwINVXkdWk_=&8PHIhFUcfisYh=&qjMFynUbW_qgl=&Um7wBiYoleXXh=&cQBz7fUhgVbZi=&YFoZaxWcnaWVg=&GqlqwxZVocpmW=&NRo5GKUXnkiVU=&u8TdNEXaos_se=&NEX2qaVrgZ_Wb=&ixpvPcZiaWgii=&nUpEuWXjXlmpa=&qqV4W9Yqedqnn=&D__9moXsh_dnm=&FsRMKiYi__mVY=&hrjzmHUfXUajf=&uxcD6WZldl_ke=&KL_ZnLYoroppg=&9tocZsWXloasX=&mRLxsfUgpVbdX=&KumMT2XXnXe_f=&FkTkBdXZUdcjp=&dBSRizYYkZXqp=&GWWmlmX_ogmgZ=&YCAMqtZakpXbi=&A5_aqKYocaWrY=&88qFDtYqppjiV=&W7h8G2XplZmdr=&r8BuQFWqij_ae=&7aPItWUWdfqeX=&i7MNlDUVkVsUo=&Y4Z6ZWZYkeggg=&ka5EcZXckfYqU=&UbJNDNUssqjZa=&t4o2MmUfYcasj=&h8o2C3WbZrqsb=&VKsGMjZqnirZZ=&vSD8wmV_kZplU=&qz64lTVYpshjq=&c4rNNjUhXdbXX=&_UiH59UpkabUW=&_WpcdjUpjciWm=&mDywMWWVddVpr=&JixBidWnlpclb=&63rrRGWsba_Ya=&VWlyahWZmginq=&slWYVlVbqYkma=&kantDgVq_ohso=&r7dLuvXZbZi_X=&8RV76pYmUWUZj=&QMuOEXYighXhd=&3Vzu8UZqZsZVa=&TxEnhPZlZboqk=&CFV4ccUoWlYn_=&buzDeQXrnbbp_=&X_M_CUV_Ufcqm=&LpUXJ6WaZnrZs=&taQul7ZsW_keq=&hoc5ARWhhWiVq=&nhSdwpZinmigj=&tYMCFXUhgXfdi=&XMMvEiWoqsYXU=&lMpeAzVZcpWVY=&6TyMbmZjWofoh=&l5UjkSVqfr_em=&BfcwxxYijamjV=&zdKdzPUVoglff=&NHM_AeYgYUhmY=&NE34d2Wsaesdq=&L6Xn6BVVUkUip=&92UmLlYgfkYqV=&o2lmz8XdYfXVs=&x7J2_jWrbXgUk=&AM5BknWkgWXqs=&lumskvXdirbqX=&zo8zw5WWprqcc=&KzrQrqYUhjnh_=&cKLeWkYjl_saa=&8kBkAnX_XojbY=&rD4qgyXkVZkah=&U6zq6QUdgamnW=&4OxfncUXXYWlq=&iZZFzbXhh_cps=&SHD2LpXVebe_V=&P6nGb3WcdpsgV=&5JDLdNWrUaeWZ=&ENT67YYZqmbeg=&OmYCPvZXhhjnj=&6Y8bbQZfjedpi=&KyRJ6uV_plmmd=&ys8Y9GVhmrhpb=&UYSQf7YrZahqV=&Y5O9WEWrjeYlW=&XcyCl4YcpinYe=&OCgZvvZqZcrra=&5hWoCsVkZiUbf=&VGRwNYZXYcbhi=&NTVzZwXpighra=&aKmTgnVnsZsZX=&hClYroUhnfhjl=&RZQXtQWriWVsl=&9NWAWhUpjlsk_=&4OnONAZaZhemf=&jPmQLSVcX_frk=&9tIVnlZn_Zsok=&_WH5IjYl_Yghn=&eAxTXLZUsssdr=&X4uOnAXmWbjqj=&doQK2tXWhhcfc=&GgADjTWXWibld=&7n5lz7WYYdaZk=&5qWEuoYUWUYYX=&9vrpkLZoZsbkm=&I8iJ6dWsgnZmn=&p4btCkYrmZYfk=&YB6ESFZqYgaoX=&Y6dmXfXldgXer=&83pDUZVlgiers=&n7pjHAVileqeV=&V8glzrZgsqabe=&7DUjsWU_aVhof=&3RrKbvVkeUrng=&ynsfHAWd_qVae=&zENLj3Zd_egod=&ulYTUtVneoZWj=&iu5tI5Uscam__=&bahpLmYqrUlWh=&znzjQXZffWb__=&SIhCUZUlYslpe=&YUmSwSZjcgsVo=&68qTNwWdXosWp=&dPLHKVUZXjarU=&JIcsctYlmohip=&2mwJx7VinpYgj=&34UI3eUkrUljX=&ijHcsqUYsmXnh=&O4Zi8ZZlbkdho=&eGURllWjbjare=&ncCbv7VZmgsjd=&RFiGrNYXjXZql=&qcSBpWZifgmch=&pW2GE4Ymjrdfc=&zKIIXIZqgerba=&m_WipSUcl_WjU=&jBksdKXmsjgdj=&VYXtcKVrjfXpq=&LjiB5EUemUeUi=&tG9xcdZYfXno_=&i8doprZclehgW=&exIf5OWpsshYn=&2fyzrLWhaWZZp=&HRFH5uXcVZXda=&IesCODXWYYang=&iLhCIYYccZnWr=&iB7Dm8Vd_rZdV=&LeN83sUUWohYf=&OWTlGaVYcpoj_=&aKnA2MYq_nqbj=&85hkG8XXqhkri=&xYhaOPUdsdncj=&tAQFgnXUbsXVo=&IvnD9PYgb_nWh=&QJKJVUXUjdnpj=&UwjSG_Wjeflmr=&naj97XYWe_ngn=&AVQrFcUcfnkUm=&RSivFpVbinmnd=&d9mqb3Vaarrbp=&eMi3CUVrhZWmb=&FgFH76VjkjXbY=&JzQsXrZhhcojj=&VuMSEXWihorqj=&EqCvA6ZVWrekk=&zG8VwWUqipcrW=&PcseeTWaWprdc=&IaZiKlZaodcje=&HSWV3qVVjnsob=&iXOCKLZprYkcs=&b_O75PUdVsarW=&MM8mGqVYoXVUd=&rQlcwQUhblWeU=&HEg_dKXmlsnos=&jbRrfGXmhlre_=&mtuhDcYihWefs=&3x5YoeXab_nYj=&BRbOxKWmfnZ_m=&JFRDmEUbo_eia=&DAdL3uYWhdUkq=&q8gPMEZVppoZi=&WEkz6oXhpUqVj=&mkrQG6WZbgknq=&HgjSh2Vbfmjod=&nemyrVWiWmksq=&JMCh86ZUarohe=&BPdsaUVohoamW=&dxXoSIV_ncepd=&5VKBTiUYZanmq=&L9HkhEZabbVog=&Bk5zRwUfsnirb=&Bf_LAsZoUqdcm=&DaKwaUXfU_Url=&WX8T7pZbVWVgj=&ujMNGaYiUnffs=&yjI9USUnkabag=&ydGEA9Urienio=&DnsmenUlpnjUg=&iwpeiCYdWaWaV=&MDVr5RVbXVjdn=&KMly7jWdZrann=&xL9NXtZedjqfe=&d3Wi6VUpVq__q=&RaAjgZVsW_ajs=&kqhDDbZsgaejr=&dldaJRWnU_jpn=&_kYKugZsXpedZ=&vZtTxjU_bXXld=&kkSO3yXYYlUni=&3giZbGXckeerV=&bY3c9iUfjiZX_=&hEHN3fXXsoaep=&uH7qZXYsUbsha=&gGmUtvUpUsjre=&ECQXmhZd_Ubia=&dlFhmCUmisUip=&EcRPeOUUfgec_=&NHwaavZjrWfVX=&oCiFP2Ydeodjh=&_RfnhdXkokpgW=&5pC6eXVragkWi=&FvcvTRYlYbbrg=&yNIOLgZaddZfc=&oQ6SFIZqndicc=&4EvtDTWgedblr=&5Cl2noZkWleaq=&8TJRHDWlfpsjp=&qHmDsmVaUUWrh=&iX9kKJXZeVUZr=&DgbHu4YUqkZpn=&yzQ_6TVfkfVUq=&nKwlP3XqlqVja=&ojRPIGZbocWVl=&iv7MwWXnWahXm=&RqkbJYVhXjVjW=&YrBI3yXsWohjU=&RQIAHmWqeserk=&wWGzX_Uibkihp=&YT7LkvZVZarbh=&ahmigGVbZ_sXs=&TY3q6EUkZUagc=&AyvTrlYqhhfUq=&zKmT5wVqXfosa=&Th7KnVVcUbjlf=&rcyDQQWsignUW=&e5HivkVfjhmij=&22suakXVrklrc=&Qzg_EEUraX_eU=&WiH8gWVlslYeg=&RXDdkgZYsejnq=&2VGsWpXrUfphf=&58SOmEYoVdmck=&vmg_ECYcpafmi=&HrWn9SUabVXZW=&ZROpu8Zqjj_jX=&dwuDenUZ_phbU=&qLogjyYgZiZWV=&B3KNVYYXiibes=&9_heCCUYghpfX=&FybxQhVnXrlhh=&Zm6lJ2Ueabps_=&avxCaIVrXfdZb=&aeNcQPZrdfZVh=&zKli7nWWehbVV=&PfelfbWqskspb=&WAtLpmXhsbXii=&NT92HOYssacdi=&Qf5pFoZUWWrgc=&2EollsVkqrgss=&MN6YffYisVpYZ=&h7qC5nVdskjiY=&CIy5NCYcWnhcm=&n99mteVeqkUrp=&4uaKQIVlsjf_c=&MDwTJrWnWo_io=&8JAwVTZmie_eU=&5ziyKRWjqbokV=&qOgOHEZnkgnml=&aXc5oEVpfmirc=&FYFWf9YrVrocZ=&52WKbhYVrkeln=&rLKpznWkbgsob=&hZH6LQYhrUbra=&k6XqaKYaoUhbp=&SQcNGBZipbZsX=&mD5v9KVoUda_j=&GvgxnyYdfoYVV=&uIPuiyWkYm_gs=&4ptyMCVf_bdcc=&FhRLARVmksoZq=&M6nFOAWnafgVX=&zdroklZgmacoo=&3NXKheYr_lWZn=&t6gifOYbjVplX=&kl_rGnUfrrsgZ=&_XpTNBWYZeo_h=&9Twk66Xcabqmq=&xmt4MXVnpjhVZ=&aHOVebUZhlpXV=&QV6TwSXWYrqee=&UGNVzeWZbqdjW=&e8YMjUYfcncWX=&pF7UZ4ZZnsske=&FBoCfqVWslekU=&cuXz8nWWYnWgi=&HUAaOcYcYkbqf=&jJfrKuYWlYgbV=&Mr4hPaWbjbZlY=&slewrmYaVcYnj=&8SnalcYbqpgnn=&Xa9cV3XsYlmoZ=&vKdnj4ZUcVZne=&pVx7_UZcWiZVl=&7kdoXdXjhhVXY=&z7Od4yYfdlYXe=&nz6vsjZZr_saX=&Ww2GCQXbpYkbg=&4nb2TXYsXa_Vb=&3aqqVlZsYUVZW=&5TCUL7WfpflUd=&vq8NAvYlo_amo=&bvTHoEUkgkflX=&3sfYmcVffsngY=&X5zRXcYcklhfc=&JaAsFRXVjfgik=&XVnZkJWUnUsbW=&ksekItWbsWVUa=&z78RTRXn_cXZk=&W8r7xdVZjledq=&QX6r7XYlkmmms=&EvFOyJXqmmeVo=&_Z7lItZskhZWh=&UcGIHmXoegjrp=&j7v5_wYchiegk=&tc9uuSWjjohUh=&DoNXNFVZVZe_i=&r4OmPfVpmUgmX=&eHUaPhZWorjZq=&pQWFt4VomWkfh=&5zq_PFX_fgWrf=&w4VhMbXoXXqgk=&USVjDlXmpcUoV=&mSS3TaYXgeemr=&KUcFooXbqrWXs=&GCB2arZfdVfjY=&AP3XJgWpdZUmr=&l2JfONYgZ_YaV=&hqx_knWbkcUd_=&Q2eUBgYosqqcV=&UnJTzqXXcj_so=&CqXfEKZasrppb=&288INBVqaZs_e=&w8jNRSZVaodjp=&ieZLRPZhoXWek=&ClKEDzYU_YZbq=&QqcR68UmXcleg=&HfyXFzVdX_ml_=&rZg5rTViYoYhj=&BUpGemZkqglnU=&nE8Dc9VljseiV=&oxzvoeYnfnrdd=&jj8aNtWfZmrle=&PKOWUgZZcgZng=&8K2e65UpXhYYj=&5K3LYPUXdikb_=&zxQnM3VUalWlZ=&ErqknPZeUhirj=&GldGSKZUgmjbs=&NBE55uVedUZqU=&xc9loGXjgXmbh=&QgIVmIYqWaXjm=&tv82EgZlYl_fd=&PXMo5tUrmbhWd=&cJNQn8Vbfsqmc=&Pr32REUXfqZfh=&OYzlxlZroaVom=&o4srxhWapaWm_=&49SHzLZonUlrh=&H4XmKLXfYeleo=&AFBE8zUWnYVd_=&CZEi6VZqcjlqX=&iTr6sqVUZUaee=&MiuVo4WZoiWik=&JIrmuTWhrriWr=&SeICPKVfngZ_o=&hsR6yxWbgeUVr=&S49lfSYmnXXYZ=&WjsqrSZlXokbl=&xSk5obX_kablY=&TlSCJ3WnYpbYp=&dXUo6RUhaWglr=&vUsvDWUpermak=&QL8qE8YpsZcmi=&jx_zYhZYsknUp=&nifqdtU_Whais=&c4K47BZirbq_l=&rc6s8ZWkemXiW=&4jMGeSWbmjshU=&GT3AjVUrmqWZe=&EhJjHFUjgejVZ=&mgnr8OYgaYejZ=&h_Mii9Zjheide=&QZUTtWWpmWihg=&LxjbM_UgdZfVh=&Ff9qT6YrafmZ_=&3IBc36YVWYigq=&7mNQ_ZUhfrZl_=&SX7GX_WsqY_pk=&nRFXbDYZ_WUqg=&D8LMHWZcdmafU=&hv7ul2YeWVgaq=&m9ZRYVWiUmjXs=&KrMPwQXWYsZqn=&9893KsUjUrlmn=&PQ8ZUWY_bqiXc=&YwuIe_WprrfYr=&W_iOPsW_miYka=&ySvzqYYpqfgmr=&qsXrBVYrmcdsh=&HNxPMoXZVlgXc=&wr3pnuYUhZViZ=&lquDynZjpic_h=&KKOZgtUmmYkbm=&IA875aXksaakh=&GNUdF4YXnmYps=&6KtrlAUeZirgV=&AjunpkXpfYgd_=&rABIVsZhkoasq=&NaFjesVYrbrss=&e7bEHLXcc_Umr=&3TcnVGXXghodm=&mzvg4DUU_UYfk=&RUpsQFXaZUdcX=&nXkg2xWiZrkaf=&wCvx25VlZdghl=&pTpuCGWmZrVYX=&IT7RRkZhng_qr=&lIaD5EUZXadZn=&yoCqlJVriUWfs=&7yTPdyXiqjYki=&txONhDYibcqpi=&_HxrVtXcqfoam=&tv7EdrVWXZXps=&8WVVrbZknrpes=&_ogz98Yfeeple=&zfPmCLYeUssgj=&bpLNyKYsnmrkn=&DQARcTWnkqfVV=&UW8KkpW_lYsqg=&QTDqp4Wcn_ngd=&cQXJFWWgjnmpb=&RaQcARUZ_ompd=&coufUKVXos_fZ=&tVqe46ZXsiloi=&Zw8jY5XYaVjsd=&SGZlYkYqknXbW=&WsIib6UVrZkdl=&lTUzPHVbmshmV=&NdSovRVl_Ubrd=&vXwlIIUcZgl__=&NYtpX5X_Zsgof=&oE6Ay_VbiWVej=&9Xy6MzUcVZjZe=&VvRFPcUpe_rlp=&47EUXmVdfjXlh=&DJyC6CWaq_qki=&Z5FZX5Vhgbsii=&MuqUIMVYcVrgU=&oICXvHXfpjpdW=&DFdFZ2Yqogfgg=&8d8kYUYhlshrU=&KRWlrYXbgrWVq=&UryQ3tYhUnWop=&Sn5Zu5VYhelYg=&MMnyezVkVoWUf=&namfUCVcfoehm=&YjonuMVUfYfXf=&vWnFsEYbmbUYg=&UYkk_ZUdfhrg_=&X36kgeUoqdVXW=&3AnmDeYrdVb_p=&RsWwC2XhUhUld=&PlSXlXWkcXjhn=&XTzdAXWqZhbqn=&L2bBwLXpXUnmi=&GVJltlUVdfUbs=&xDiiwyXclqYXW=&SpSCK9Vnmjgeh=&_QgJVHVlWalWl=&8C9E4CVlcsWfU=&M6fFVMVdmsoon=&83ikafVrViZdU=&C43ie6WpkhqUl=&EXln69XesfbhX=&TEeeROYWjbcrm=&_US4oaVZ_dlss=&v_aWFYYigfckc=&iq4PCSWjqbihq=&75tk2PYr_sihY=&Ddd7wBUjaXZdn=&KQ_B6cYYm_oXk=&TfMcO8XnfmUob=&dd_zj_ZYgahrm=&beVUCoWgWoohi=&lFiLFWX_Xspic=&xRS_nJYbscgiW=&YeImGSXUdlrhq=&rT6dTIYpcV_fp=&Paa3GjZkdrhXo=&pnRLvpZljVpUo=&YPim8FWqnlYVX=&34hIchUakYVpU=&vBxcuWWpjpgoZ=&TR5zPAUnkVcWf=&8hnbWNYqkYnYf=&bCZ4NmUmUbbne=&2I9DcWVpgnojl=&DibgbNXXlbVaq=&hrhmzzYZiXdj_=&4xHnI2VoiqU_X=&5vtsifWddjYeV=&UzDqrQXcgnnYh=&Lo9j5tXWiYjWi=&DBqGl2ZmoapZc=&xJBIDCZoUeZmj=&5iLardYgXrfkb=&482g3nZjksWfU=&rnhr6rWeqfiWm=&uPXP7SVobacfd=&7ys2_oVdf_imV=&HQ7mwXXacqkdj=&7Hag5DWZhUseb=&TYd2cPVYshrjj=&KdQshpWXlmjZo=&IDNkxvYfYqhmZ=&b7b6wkYrlhYZm=&nyXfQmZZfkham=&fdJ9nzZiZUgbX=&xC6yV2ZYpgaYr=&exux3mXrhbVnV=&zntVFtXfWjhh_=&7vaotzZUZrXjr=&EU_Sk_ZUUhqsb=&RWrq9sYrrWccV=&drgGXbYZiojds=&hLtWkaYXopeZl=&sUTlqtXdYsUjr=&CmfVHPWpohVjb=&LH98TYWefradW=&dSW37KXVojVso=&tcRHYkWXdmkjZ=&VrUXjUUUlVsd_=&wIxBTCZjYifYX=&X8j_qNXlh_qdj=&6O7F_AYl_icig=&miGEhGYhpmlbU=&zKpYE4XomfbfW=&neO2WtVUjcY_o=&aegfGQVUprmhc=&4jVvy4WUfWroW=&XbLfPHYUjWaig=&lHozAsXlcecbh=&iGJSH4YXUmlqi=&jENJw2YUYapZZ=&JfkSm9UjpbnUX=&l3zQrQWiigeXZ=&VW2BdbVlrZjXU=&BVS2RzXnihpUo=&WurKG5XlhZ_io=&sFnfU2XlVYdla=&2DdC6TXjpUdgc=&8vRFMmXrWkasl=&ZyUZlWUqbUpai=&U_3I6QVhbcY_n=&wnjALDVososXZ=&ag9waZYkYlmZi=&F365T3Xkodcak=&VeKpDVYaqUrsm=&4MgZKGZWnYfhl=&aA3jSyWhWWbqW=&Ws4qB6ZbsUbp_=&ynaOuSWkokqic=&f7Ui7yWmmkWdb=&c7tq8lVroZjqm=&frYGsUXmZqdqo=&E_KlPPZsUZbfW=&_5iUQqXpYpidf=&HQ3t8LXbVaYoc=&rEqxNOZ_XY_pl=&pCv4bwZlefgfr=&dziHWSUnoaamb=&zIk9QuYkeqqZb=&4Fft6yYaWhoqX=&3Mcd2SVnhgXXm=&ZmZ5JKWceo_VV=&FM2XZ_WobUhiX=&tDHZGtXmZilno=&srkTgWYeVYfgb=&Y6SayNXgZggds=&bxTPYFXnpnned=&kqOrGeYdXkika=&nU3KBsX_bkman=&PRyLIsUV_WnqU=&NIc6wWXYljdad=&yXPeHaWbacnjp=&cPUIPQYaeckri=&v5HV_IXfXfm__=&NMJhDOUjdqoWl=&wbFuF3WXj_gUe=&lQgTVeYemdlse=&LPbQOpZegseWW=&MyeIN8UnmkWoc=&zc7SgmUiUqoci=&sHwBuBXppbV_Z=&Wv8RVWVegWiWa=&k5kQekZbpboVq=&E_fqN8XZ_Ymnf=&ps2R9nU_Zcnkb=&5SjZFgUdpnesd=&lk6mCIUmqaVfn=&gbrk2uUckhsYb=&WxzMnoUUblbbY=&Pt5ZTrZoomkqZ=&whDdADXXWpgbb=&nK6ubFY_VkXZW=&NU7g5HWXaZ_cb=&3VR9qjUsrsoVc=&b_j2TUUpkqXlU=&8UuQP6WfqjUVb=&QNqMN_ZaaXjg_=&cImAv3YiXgVe_=&NOHOfWZhkdbUm=&qzBHLDZnZVfjU=&ADJrUOUihbW_U=&Dx4Ra6VcndreW=&z2L3HaXhmVhbe=&8JRwmoYsssske=&6HHxocWfbrX_V=&HVuTM_YVVaoXj=&9YyJo3UcgWkhj=&oyNkZmYjirmpq=&nXxWa3Ysqdmmb=&AmSUvKYYZbnZq=&IXsDuDZY_lkWa=&wNJoh2ZfndiUn=&3S3NhZYmpigjW=&YW8aEUXeabskW=&OQu5XjZoaaWkW=&N3Sl8TXoZiZhh=&fHCh_6Wckbbkd=&EQseVsVpmWiUe=&dpytmCYdihbml=&qV4nQOXpkderU=&4FeSG2YfdskVl=&RVyApBXriYYjs=&r93h79ZUgqgqg=&yJRQkVZUjVUZa=&rwqZQFUirglVp=&IVVZVOW_rqffk=&PFhIURWkWWpse=&y8d6wQYgsibnU=&RvBN4qUfjcXZs=&Z3TKQiWe_VUm_=&zKfSmpYUUXjUe=&vKyn2cUph_dbe=&2vDquzU_nYksm=&38XgMkUnXbVle=&NeE26NVnVaqhp=&vLjQpRWhZoh_V=&LkeDYtWmkV_Uj=&43n2j3UbsdiXs=&fPG_QxYYrqfea=&IyxZizZoVdnoa=&vg2JvBYnhYq_c=&SVcIacVihpine=&vbWCoMY_lWejf=&jLlx7kZohooen=&OlcZTsZqiqgjo=&oRz7GtVhdhcke=&pTVxm2UYdjqhf=&wAM8zxWZlppcg=&UDvvZvVnZfWcU=&VnZ3TlYdrsXWn=&fkYfGAUV_kYe_=&zCVJgKWZdbVbh=&DnWb_vUndeqiX=&ewAaDDYUeksni=&e32n57Ul_asmY=&p7RyZ5ZYXsYmq=&CeHD48XmsXaj_=&zs9jzFVlbscnb=&l8PSofUibbsef=&2olB5xXgpbYWo=&p2eVSaXinmsrj=&VxTzHNWaXq_s_=&mYqlnXWVeU__Z=&Qr2uyEUklg_gc=&azPe6RVjrhZoc=&XdVTMwXogWrgj=&ByXuN5VUnWpfs=&4TMe5yYbrfspp=&L_wehTV_ejogm=&H6g2HRWislVgY=&Y_Wa7QUqelWaq=&7_X9SOZWhWbgp=&gQW_c_Vdklhra=&RZ3k3WUjUVeZi=&DI84stWX_dWhs=&DMSW9rWsdWe_i=&JxC2cNXVddkaV=&gAj_jYUg__ZgW=&tQ5U2NXoZpjnd=&DTMQWrVZqsUsm=&dsn6iLZYskiUW=&PYaxehUWgZVWs=&YNj4okWrZhjcW=&snd8QgUbrrmsr=&ZVGiXZWXcYZpg=&nSrjN4UjVpVWm=&GP433BZZUaZnq=&p8WRrLZ_mkmer=&nYa_bAW_olhih=&_uhSeCWZdspfa=&uwbc49WilhelW=&iEeNveWZb_pig=&ngasU7WlVrmoZ=&doom8JVdopahk=&sp9p5FZooZirh=&Om_T6_Xfergak=&L2YkE3YqXefed=&rDTUvQWUibkeY=&XPSLTKWmgVWiY=&m2CsU6Yfpfrbc=&2cUp2OYibboos=&nWDiHcZcnmh_b=&6UNs8DYYXZjjl=&rLVLsCUXWsliV=&LCipxdUUlorZo=&Ly8K_SWkpkifZ=&eksVqoUc_lgrg=&W7ZbVrVUliles=&XKq6WVU_jeVrr=&5fcbtAXheeYao=&sxBuXCYapUf_c=&8ZqzoEWhgiXnd=&TqyRxoUYWUVqd=&f6Ln3KZXZrbXp=&xClav4Zp_qpgW=&fKeWDZY_kbmXo=&SitvLYUmlf_rd=&tUeqzHXkpWpnm=&Efyf9HWkZjjdU=&_f6AKfUWXjiVh=&IZYnhAXnoebad=&JEA2oQZgmssem=&qdMnnZWnhds_Y=&aWJ6ziUYYldig=&7cuhj6ZUiiqsb=&zbx6JQZlbnqfZ=&AnTOnsVmfafgZ=&WDDmlpZlclkmq=&2Tn4DoXcjrVoY=&sawem7XhqnVh_=&9qvM8iZnVmZZe=&QdgdVQVmglWhr=&wkg75iU_ihfXm=&gn3_RqYcUZgZn=&IxWBVnZnorbkl=&dYt2ojWfUmlgj=&BxsiVBUaYciih=&b2e6LIUhiqnbg=&9rNiywVp_pomU=&8TvmYBZkWncfa=&zIPZbzVe_ecfc=&iapaqfWlbrmsc=&4l9qnXXiilZsa=&BZdaMFYdepqbo=&5aFwejXlnXhYk=&bGuB7zYrahhho=&DcMJY_UXsgZZs=&4IqANLWYorgmh=&pTxYnKUersWXn=&WojgH5VdpejXm=&qwg7RGVcZgfZs=&8pmiS3YgoWgol=&av2CZhWo_Wahe=&orLjgwXbmmeeU=&jYZwAxUodVgnp=&xwszIzVoddlca=&lDTka6UhrdfUr=&QtCM6JZfbfhlo=&s8oGsMYZdUYeo=&o73YVmUkjlfdU=&hh6VteZlcVXXp=&BFm7JFUepblga=&ikwrnNWZmXXkX=&KHxeEiZZZmVch=&Z65HiZWckWpeg=&9DZfRGXcskmUq=&MUtRBdUZgVmaj=&wEuEKAZnXchqV=&b4SeHzZbhcpcf=&ZS3bqoYVjjqjV=&XkCmh4VgiWcml=&sMu8BPZpkWfno=&NH545_VfeXnoa=&ENKNvwWgicXVo=&gtrxqVVZefWWW=&NUAU6mUscmUXW=&glPiPfUqprnig=&KngAp3ZjWsZeq=&LZXmCkYbrhdaa=&xsC3XWX_Wpfqo=&flSewoYhfUnjd=&Dv34UYVf_nWmf=&dVwtpzXsVgbUr=&kw2tA5XZjYWYo=&8XZvRgXoiZgco=&zRZWdkYrUkUVf=&8PQ_oWYbec_sc=&R2FS48ZmVUZfi=&JJJdLnWkkfkpj=&4CwFf6VpoYkpq=&lwmKctV_ojaja=&ZKZfd8WVngkZr=&evwZ7uXlngiXh=&aXaBTIUmbkUna=&uuNtYNZZkWZkr=&zaBbQyVkZokks=&p5EKssYercVdp=&8_kUoOUhppYfk=&4ApkovZUYaloo=&dj8wuPZemXdUa=&y5oDzuYfXUZaW=&FXI64WWnXcrVb=&iPK7qtYnilcpU=&Jmz9LMYqnasod=&D_YeFjYfeeZia=&Pt4cJtZkpkejh=&OLL7HuUdV_pof=&ToL782YWggdk_=&QTNuE7Wkpg_fh=&F85ugVYcnghqg=&MiSGbIWi_Udnc=&LMX53PYjhoUaY=&p7LYf3YgZnVcj=&WXLW_oYZhamsV=&TXvylWYndZhgV=&39KkaxYrbkqfn=&yOU92aWpVbiba=&9s2_MpWcgUkeX=&B5uyUUWfqnkUg=&ZWJ3YDWgnXoUk=&7SAyr3ZbihYkh=&GxLCZ2Whaee_i=&fL4nPMXgjicWY=&bHAFGKZqjbUUX=&s3RAyHUlrVrXY=&wOowlqUbXheh_=&RMt_R2Zscffqg=&mYKAgbWjWUkeb=&usG8rFZqj_khf=&7amyXUVnZUpbr=&QoXr57ZZZarcl=&uK8ax5WZdk_mn=&njESolXesnpaZ=&QrCDgOVpbjZeq=&dBolSDWUbhkhg=&gHNGBCZlreXoq=&RBLswuZcefWUW=&zu7HYUYeccrkg=&y5NsOlYWXWmdl=&oCZMXuUlXeiVo=&uBhNH_X_iihnq=&wOn99OZhsg_cY=&fxTDC_ZaXjhqZ=&EaKdwJXZYYhgc=&cjQD4jVbmjdsb=&p_uNDoXgZdqdY=&OyPXBTXofgeeV=&Mz4qKLUbsUknW=&rGbnxYYciVsaa=&LJHn87VWeYasd=&HNqKnCZsjqWjb=&g_D4byYocXclm=&qzPSXSWelVsek=&jC6Gd6Ubecdb_=&lLORYcUYdjsnl=&SVMMzcYWfUXhc=&RvUhwCUflgicc=&uGd24sZXXZdpe=&LBE4D2XWWkorc=&rgAZrMWnlj_Vo=&TKqNgbXjUnjlV=&PUF34TZjofgco=&yjzBM6W_mUXrf=&zYG2SPYjasdjj=&6M2RicYajh_as=&dcDr3lYpgqom_=&ixvDoPZfXeYg_=&xlzkDHZeZnWWb=&IReDSlYWoplao=&WS5yeuUZhUmds=&WjTPicWWY_idd=&g5rIXaUU_U_YX=&6MxBtOZoiXnWc=&dSBxauXW_Xrib=&ThVdkNVqiXbX_=&XwVCucVqfjYUo=&kUnMmZWbZZeka=&9OehbeXXbpZfp=&uNnc8BYVaZVqc=&pPCX3zUepWjps=&v6q8mbZrolr_X=&jcdviaUpV_jZq=&IipaBnUfjWYhd=&TUbdruUecVYZd=&E84qOrXoXXbdf=&jG43SLZdfVmea=&svWoyZUZmWppe=&EABVuAYrVgelg=&vb9ogDXXmcpfe=&L9nAWxVZhaeZm=&mW3s2nX_Vbqoq=&NTyDefWbjWafi=&oSYgRhUrZqkjU=&tAh4BRZpUgdgn=&RsBQC3Xrbia_Y=&w4Xjt2WrnZpig=&cAvV6IZZWdrpV=&lRBMDsYXnaffl=&Iyiv6TUnaqlXj=&RxkC3CYhUk_jX=&l_qtEUWbhZnVe=&mh3sbgZpcesji=&iyuF8tZUdkkdr=&YqVM7JUlbiWlo=&YaaM3kZhnapne=&hWHNJ9ZVkmlbr=&mW7OHgXqn__ek=&b2lDkJViVsrrq=&885DeDUqanqZZ=&auuvHzZ_mcgYn=&CK2vk9VpiXYhl=&nqVmyIVY_fppn=&5jVoH7VgVceaq=&jf2Ld3XqiUkqj=&LXRwsAUnbclqX=&AkUyL6VZkrfsj=&ZhWJstYldoecX=&bevKlZVZUgqhm=&TdE8iVVchhcrf=&xjaUdoVnb_adc=&RzpyWgYnjZjcY=&VeA4QjVhmsiVZ=&oe66NOVXacpch=&DJ5reaXpnUooX=&LhfwtRWmodn_a=&tJnrtvXdeWfkY=&6dU6nNVUZeqnp=&NBEE82WaldYVg=&vA3F6VVfqVhUZ=&EEMELuVmcm_ro=&GlBgRKYY__iVj=&IHzCGaVcUqaim=&VMzeUsUpZjke_=&t2vK3TWZdUero=&HjWe6yVXacpYZ=&R6UFP6Vj_pl_m=&c_9CzhXqmqbir=&S9_JWUZYXgmWa=&YKyeWCVjVegnn=&SXKVA_YnYkkae=&47PVFrVkZrpco=&QM3iuzYfedqbn=&4X_YEFZoasVhr=&_rKLpLZYgjimp=&vuUTcpYqal_js=&sdyS_sWXhWesW=&RYG9L3Vnnsobj=&ttGtOGXfdUYfk=&WztRDmXokXVZl=&J7ToUKXqqjjoo=&rQB4UZWZUbqiX=&33zCUfVaisjZY=&rTQRwVYeccbgm=&PQnqfDVrmpsbj=&pkAGoIXrrUoil=&8LzljvUd_drlZ=&TK_jX8VZWjVZW=&vQMYvmZlqoefi=&fHgbruXefsecr=&USrb4ZXanVkqe=&eaPgziXhqaeXo=&odbVvAXYUZaZm=&Gx3YP4ZZcooXj=&bRMw8HUbjpVjk=&YdGi_eWWb_jdd=&cOHfLhXqmYsoa=&zCmpuLVbghoXs=&4o8UAXUYgcebf=&rFXvQBZXfeVUY=&DGnxZIUhXr_jn=&TIDfBrYsZhZsb=&tuXcLAVVUVlYi=&fOHsdLU_skkZg=&B5CruyUklmhkZ=&U_jIV6XkeV_Zb=&VTMA4HZXhkoqc=&JT2oWrXeoiqcU=&kBPqfrW_crarf=&pTWLF5XpoWV_k=&dKznDEUgZlr_g=&6TlDvEYjhmeUe=&DhkYuxXhrjeeW=&D2IQDJYUdgcUg=&7rNIJuXsXmjkl=&qNIHJxWccqsjU=&ZyQqQAUhrahfi=&r5Nm37XqiYnql=&Zfd8RvYhsonhc=&FhQkHFZlVWVrc=&Bqqn2eVgisrln=&DTT7QZUrodlnj=&ujrsMmXn_haXf=&TPwyOZVYWfUff=&EoqK5sWmcbkkq=&SHCXkMZmmdgbk=&oMUCbvUdsjfWq=&GrGh8VVsYjZXp=&UPWZljZoWhb_Y=&CRqmOYVknmhni=&jaCT8QXhcqqgo=&FeX9oTXYarYbZ=&XCaQeIUWrfdbm=&S76zxuZYomipc=&x8AKTuYZlqfkp=&ALkHPWWWlinVn=&RO2i4NUZUsqsm=&Twg8SUZ_pbn_X=&xFtG2iZhUmYnm=&f_WlqVYiYmjX_=&_gMM4tXoalYep=&XxakpvYloWedd=&v5a5AzUo_kYcV=&uCx3Z4ZedmeXd=&H5smDfWbjXhk_=&Kzzav5YfUnWqo=&KCVZneVmUqgWp=&uPyxxPWoinXiZ=&5QwkGkZkXicdq=&_OMhBRWYXpoZZ=&evYVzFVdkdYhj=&DuC8wIUYehcnd=&r3lh9CYXb_Yfj=&3hHVirUr_gW_s=&O3u8IzWYcnUkU=&PNnaxFWfUpqse=&IUltljZorUgnk=&4DKUXKVWsfXfi=&G6i9t6WeVoYpY=&aTtPx5ZdmpcgW=&K6jpIqX_lshVo=&hENo3XVjYpWWh=&3EdCUXVWsnjcc=&r6RLVeUVYmbnh=&HbXq5tZVnXsfe=&IgeqcZVdhagXs=&GDumqoUeXoflZ=&TNpAOEVfihXfX=&TDulfHZeqr_sc=&pQulPwVhkpbjX=&GcVDSpVbpfVlY=&U7VZZSVbjsYYn=&iLnwQYZjphV__=&9_Ey27UWhafq_=&Odi6WQVpVb_da=&Aubg9NXsnYaer=&7SWYKoZ_nsjpl=&5uvaJkW_mh_Yc=&iRTncBWsemji_=&WkDF9oUodVbVf=&v3UtrEZqkbZda=&c2R_UvXZVUkiV=&xp3hF6Vfgf_oV=&qd73HUXchiW_j=&yt5WgqV_hXc_V=&FqCFpNYgrkonl=&H_IxkMXeeokbp=&D_jkgwYfbeesd=&mFv3AUXilgVke=&kImgQ_XsYWjYh=&VOGmrgVWbknkU=&lHYScPVbjnofd=&7OpwcyUdU_lgc=&HA4NMdYirbUds=&QJWoqgVqcobjp=&tV8jDZWkpadZ_=&MCFTLRYeccgV_=&kHiB3AYsr_blo=&PxP2JfVVpsgkg=&NDMMj2ZlrgX_f=&KjucNYYkpppaU=&sjd43KXkWsllh=&qOPNkOVUX_qXg=&8pGwlLZZflsla=&jsXzRHVgWfXeh=&avaVErVXVcofW=&9jplrYZpqiojW=&SggL5RUXpUqfm=&MQsMC7UqjYbmb=&6Cq9QPZUbZrYh=&AQxMdzZhfZkmY=&KfgxNkY_oYVpm=&dd4Q7kYZoegrm=&heRJIJVcoqhUl=&4CLGgbYqXdlcZ=&Pz4EVVYYbp_gk=&c7FnyGVpflpfZ=&GOitBBWjiWmkl=&gvvNO6WrnWjVX=&r_tWe5VbWXnZs=&i3GgjiYacedlU=&4fqtBWVqXlWso=&FpVS3tWXebfga=&ghxmjuUaqqfmn=&LIWTFfZgsXeop=&j6mtVEWlqdiZU=&3TpeysWhpoZkk=&Fs53FeZgljdcn=&AMxFyzXpYm_gi=&bYgLojZeYZplY=&wpRR9oWsnfWY_=&rDYiw5ZoXrYiY=&Wc8UVlWbhadle=&aETW9FUegnfrq=&cHGNK_Xfek_Yh=&Ztxo8JVhadpWY=&Xjek8QWfW_nUi=&nDiXilXXYjprU=&5JL63FWlq_rjg=&SVUktTZblmsXa=&hJvM_iYn_ecVk=&mzUlQeZsidfoo=&Xa799pUdpWVhd=&h96I4NVsVrpab=&Bg83UDUsgmmnn=&eqIapIYWmmskm=&JojhxTUbhq_fV=&6Ff6csWmoobnl=&VfPvt3XYjZlbV=&L2S8RmZ_pblYd=&ZHUNsaYoZhrfg=&2AcMk8WkYdXcj=&ZHOv3YXWXeann=&LQ3pXWXpVVZrk=&Xsr6etUUoili_=&yZcJHiYafXgdZ=&JyDPwxXjkfcpp=&FKpj7NWn__Ydr=&3CLuVjXYdmmcg=&PkIvdeZeUmUXi=&PaHoy6Wribege=&cboIOdUfcjmYl=&TfXU7TVafUogX=&ZDHAdXWWVsYUj=&mGNDDkUdprbee=&4HhHmBUiXpnYZ=&XQC6FtVeigfkf=&wCoYJIYnmZmim=&EUQ6TXUVfa_Vf=&Xs4fyHWfrilfV=&ZNaVwrYmpi_Vb=&y5q9DyYcqedcp=&OjJBpZXZZhfop=&XD6ijSZefYZrX=&JBRJz6ZVjolsn=&QN3yhAVchYheq=&K8D3HkYhaXpXg=&zrJqC6ZiqcYZn=&n6nPqPWdasamn=&Xq4npWUalVfei=&oW2GezYllhjhY=&QHpmQYUZoeoac=&x8lawSVpZaieh=&izdFWaXYblfVr=&sZzfpkWVqZ_Wh=&TCtd88WeqVcen=&tA5ojsYqikn_U=&jsQmQzUcWcklc=&ZAriLGXcjfYjk=&99URAxYorUgoo=&wc9xmJUpnnpVc=&Edih5yWZnbdbq=&AfFoYrXmpnXea=&cDY9EkUYqefpc=&XPeIjHWYsYeaX=&_purUAWgahqmg=&DOT5iLUZmhaem=&zAPpk3ZhWjbgo=&MHquNoVlWnloj=&JhwesKZfifWeU=&2RDorgWcdWZqp=&CxCTRiWpg_lnj=&fWwkq2ZfnbgUn=&hgXFUyWijkUXa=&YdSENPUnedllq=&MFSW2IUhqmkgY=&u3AvE9XqnoZef=&awqYK4XblhiUs=&h_LoljVsqminp=&kKXyA5UeYaVeV=&sXwYxzYbbbilo=&ITosG4XoVfZjm=&oZT5eHWnmsW_n=&nV5LCKZmXqkik=&O3tQItWqdhWmZ=&atfRPLVZkZjlj=&wFQbycYngmn_p=&RBp7JKWin_fZi=&wZAf94UXeZcZl=&Bn6IPYWgjkkck=&_hKhrbWkUg_Xo=&Ewssr5YUmmroh=&KUlvUNUgemrds=&EG3OrRUac_UnY=&ngyNLTVlVbhWa=&ttiVuRZafaiqn=&sHmg8qWlpgcZe=&cz5LMsVhiied_=&N8GQwzW_Ybdge=&3PsQ6dY_gjlbb=&HC35xLZjlkpfp=&w7POiqXgqs_Xk=&S9MwhoZlpobVV=&XxY3d3ZpVYhma=&rT9IjVUVpUmgX=&6ODZ7MXWVrgqd=&hyCTNvUibl_fi=&UqmQCbUUUhVUk=&EsvlIYUXkfebi=&fIR8jOZVohlrc=&Q2aVMhWq_Wesk=&lc5kebZYWblik=&AGqWHWVsmnqmo=&SXg5a7Y_fWZnn=&lMIggAUimnqlc=&dhjKISVnglmoh=&7EzzXqVhnkiip=&AyNYuFUqrWYdZ=&yzJ5jlWso_hnZ=&Z3Rh_yVskVUXn=&JXbEVDUWjaUgd=&mU79ydXafUgYY=&ltoK_DYoUrols=&4daPMlZqXlWjV=&nJiCMZYrXX__V=&pN83BdZafsqYq=&yLMpZGZseYcgn=&XwFDjvVscbsfr=&vt9OVSVqpkXmV=&EZXgxNZsmngel=&dyqMVEUZlZiqU=&5jCj6uWU_gUio=&p9bGj3YgmrVjX=&7yemSwYYcYrXd=&XX6LEEVfopgqk=&LvW3HWZqpXkps=&FvOBI3Zkgrpl_=&T7UAGeVmYllpU=&ISqcjRW_gqaXg=&djC2iLUmdlXnh=&YSJsquXf_qlaV=&yAYgiaYeldhos=&2FXf8WYah_WVY=&IDP27qYWjqgiX=&nGEHlZVfdldkc=&ssGFNbZpeViXc=&bHL38BVbelkaZ=&wTgIIOWiqqhlU=&cEen6aUrVlcmm=&MyF6p6WZp_kgj=&rlr5BnXYnjrlZ=&yf_BWHZpUWcqa=&Z6Urq4WrYphhh=&nRvNUtWgniWqZ=&IjZoabWXofmok=&SsopoEViaoejW=&aWD7BTWdjqkpn=&ChT6xHZnWXVo_=&dBKsbJWipUeqk=&gwDGpeZglYUho=&bagFbcYn_babr=&UliWQEVsgjdVe=&5TSzLFYUrenpk=&ozaFIYUlnngdn=&29gFESZoWYnXo=&4SDwPlXXnVkmr=&DzXDVrX_h_aod=&AsK8iNVdmnbXc=&D66KtBYdnZrYm=&_s3_usZeXlkgs=&sH2Ie7YmZkcYs=&rveiGXVfcfXlZ=&oTlkYVWiUfoZi=&p_pLaLYih_qag=&Kfs4OzUj_lZjs=&FDS_B6Wegcbdd=&ZwgRFnUbd_Ykd=&XTUEv5VU_WZln=&Pp6etwX_meraZ=&mlrE8OWUUpscl=&ZZJfuNWcXqXjf=&IOltpDWaamgal=&Cdge7VVonZmqa=&WIonJeVXifkmg=&G3pBn7UXUsisl=&YMZOigV_gWlkY=&PdYCAnVgdi_rn=&x6UNrBXhdUWkV=&A3UPauVfnWfYg=&aSYr8hXpUUhej=&baMce3Zki_ocX=&XztdTQXmljrWa=&B6y3tVWsUqphZ=&GZhcysVasoX_p=&XTvHl5Yfjaqcg=&lnMPXgZUapgpa=&tfFuOYW_Wphfd=&ZaDU3QUWdpiZo=&POTTz6VkkYXdd=&vzQM4aUoqkrV_=&enTBSUZVpfpZo=&4wCMbBYWZVlcX=&3l9kWNXoVcerm=&LAeDHZVYcegqo=&EWQ2yJUWoVmhb=&fDgkXxZ_esihn=&UhLQbxWnaVWda=&3fom7MWphZpqm=&qIAlygXWhfqmd=&kNCeQAZkVhpdf=&RCejbCWpqfmrd=&eCri9jZojerqo=&V7Y7kzVj_YfiY=&umppIYUlelcro=&R_qVHSWWajUmX=&KQj43zVWkUgj_=&kjo9bxWlgsjZj=&Pj_NiSYgpshYo=&TtbWw_WsZkrrd=&xC_gDOZXVZnXd=&XvdeTZWqkhUkl=&4VCTdbUVcaWfY=&baBLxuXggoadZ=&Vc3athZeZZnag=&hWUpboZrXeYUr=&4gXtUPXgXboao=&Xt57LPWoWsbbp=&fjMMqBZefkfib=&vArxYJWlfmnWa=&pHqObxXlhifYn=&doyla5Zqqafcp=&lgIasWZnodbWo=&7joxrTVZ_jsrf=&7xtKBgYfkq_do=&9RaaRnUoV_snm=&LBFn2wZcofdle=&MaH5KWUUdecZ_=&CMi_GLWWdehg_=&olAt4GXjadkfm=&v9Aw9pVnjriop=&Xkori9VlXUcfV=&V6HI4rUqfgnck=&R5korNUY_imca=&QXvcREZfXregi=&AzJYkcWdUeigU=&3W4wIvXiomi_s=&EbUJdqXogZWmY=&6iROz4WhsgZfU=&yb4cTgYpjWqaY=&MrzcLKXqUWUkX=&hFhUGqV_kejoW=&YlSw8MUodUclZ=&9H58SMYoYcZjV=&fpUn5hZfiXZpa=&J5nBCJWebVaWX=&GVcIw4YYZcllU=&FaazG_ZoooXsV=&KxabUqVjnaYdV=&ovGcQEVUechkq=&t_aTgpVZiomnl=&MhmEmgXsZbrjb=&Rm7Fb4WfiXsmn=&RMUDNNYlpkmZ_=&luP38VZkoclVs=&Pjbg7JYi_YZlh=&wsuTIoYnfW_df=&MWMEPaZjYrmcl=&QreehuUgooXWY=&fmmtrhVXXlpjn=&lBWK2aXidbZjr=&YDrm67YkdobVr=&CQ5opJVjkZVoX=&9pk7HgUmr_klb=&zT92YvVmYaXYj=&Ujs3GEXopcXdc=&m_lRMgYmYWbok=&8C55tpXVgpqVm=&IQSnm5WeqUYpn=&a5fZWjV_ddXhn=&FgCrnVZjoUoUn=&Ql9H6dWWVicnp=&eFizmNVnlgj_U=&RA9BoWXl_rgVp=&bPlCOuUmZkdYc=&bEKRgaWoVhqbY=&YSjQ7LXoflnba=&WjodRhYdipXZl=&nbA_oLYVYVrXi=&fcE7iwUhXbfq_=&72RVqzVqancah=&UvppVhUajUfdb=&yeFQejWklnVcY=&eMFrkBUpqjsms=&nQSDvqWlpkrsZ=&Iyo8jnZjaiims=&7psGbIZqgcmk_=&twgeXPW_foZnX=&YH6EpqXobZrrh=&5NQb7ZZbnbm_U=&dRMQDhWjZVUgq=&Pfn9ZpVdYkYrj=&PriCJuWifllcp=&cAXcliYXfWZUk=&T2yR9FZVmgpmq=&vfcYMNUbiprWZ=&o_r5FNWbqppXg=&QrELQkYjogkmg=&fSFy22Y_rarkh=&oVlwFiVgdsknr=&HN7tnWXemhWmd=&lCQpLYUcemZng=&oCsE7yXfgYsWf=&gHjestUWiilmZ=&FoMLGdVaehigk=&CYaV4WYXisgpZ=&ujlTW3WqfccqX=&XgZrt3Ximjlce=&JUftOWV_ckakV=&PbP_M7V_VbWgj=&zzulQ7ZkUUZWe=&UfWkjtWVhrkah=&tsfjmIUboYnln=&U3RWUiWmb_mja=&tRew6sZZnlbnq=&Y6VskpUhlclkb=&4PLBbPWpZXYUm=&6WxRzTUilnjje=&YebvqxZgaWrcU=&MUsFt8YiolWds=&YMvQl9Ypmjpmg=&P92tg_XUoX_hl=&GuVvrxYWnsljo=&RosZPlUqfdojo=&xxqqWAUgollgn=&Q8fXYKWVbZZnp=&ckYVZMUrlhlkj=&cW8l59WhhqqYh=&j5E7cAZifcbgf=&aO9_pFUXndaUq=&alZx5nZVifUjj=&dfdF9gYXbeXbX=&FCb3HtZkdgWUf=&NnjQHBWYqar_Z=&Ycwr2GZldbddd=&rcoYqiZbaejra=&GMtZzMUhskpYm=&2jgUrzWfppi_m=&KfI5daWpjYkhc=&mNrvKkZljUcmf=&4PD7YqWkpYnrb=&EMLwPzXYsareY=&7xyBEVXmoqfjp=&cK2wW9ZnrXrUf=&qd3eXbXndVces=&nzaXFnZcfc_iU=&QP667DWp_hUZm=&_EphRCZnlW_qZ=&taKMAfXdpdar_=&Ft27PJVWWYqsl=&ONixEMUfamohf=&uMAZp_WVoiYe_=&D977WiVe_jjn_=&c7xATVWpU_VsY=&nx6hEYUYolcrZ=&JbTql3UYcZssq=&4y5fTYYWbaZme=&kGo_GDUcqViUb=&mLplbQZkrfhqr=&_ib5YEZYrhjq_=&FuKakDVm_Ziij=&uGRGEeVenjeZa=&qLAkS5XoohirZ=&LbUMT2VZeUcWn=&CrdcthYljqslo=&jNZFuNZljdjbg=&BDmLglYbkYhds=&iolFHOVenfmmh=&xzPiqqVkfekrp=&6QLgCZVaesl_s=&bi_nUXZri_jne=&gcwQxYXngUlqZ=&PtA46jZa_rbkh=&GCDe99Wsbjsfn=&kMxxDQVahVosf=&qIjs4nVYWXZsr=&WcHqmmXhqhdWi=&Thi4lEVWekUjn=&quoFIFUVr_YrY=&sflvPdVeWnWhb=&yGyXEKZsgkmol=&RCIpBGU_apcan=&bYJlNeWrskhYn=&d2DuN2WdkolVX=&sieF9aXWfkYgk=&EUjgL5WiYqVei=&75Lv5VWsjkfqk=&SSzG2mUh_dXgi=&lukMvKZrUhdmn=&6LI_khYjlqmfr=&vCNJ9lUaXUqlZ=&sDo2ZmZUafnbU=&35wP_gVmsikfe=&INGPrbZZVppoq=&rl_eEOXgXeYqX=&naiLqYVbeWniq=&8cRpyQZklgZmZ=&iySHzGYejndsk=&_3PcwuVsfldqo=&f58zjHXV_m_Vl=&elqHXtZUnWWde=&WfeAnUXipYZeq=&3OqNzYZUUgp_n=&yLWRscVUUklVW=&XlOtIZUocaljZ=&mA6JLjVanXbcV=&fOLNHwXs___o_=&pqwlEYXihnWcg=&UjRxoNVggohdi=&oFxCzBZhZWrb_=&aRRirQVXg_fZo=&RfmZvnZcgslgc=&7RW3tXYlgaYhq=&yUy9fdUjYgbrg=&yPHYznWsU_Uho=&c3BXJMWseceg_=&yjP3CyYUiqegj=&EXQCSNZfnhWhq=&E9lpUcXiqb_fi=&JetDaaYkXariW=&Vp66DrXmVpUWs=&kWoY44YWXem_m=&HBrA9NXnmZrqZ=&kuqVHkXfgkVrZ=&wGxXp3Wddg_hf=&PN3wOQZciqikq=&AAmX6YWmjrpka=&PBV2PyZiZleUb=&LQRqrPWpjcrpl=&mGtvNCXemfrji=&MuHKvlYlddisX=&oRBTmdXckXdic=&TkCQjhWdifbdi=&2jq8V8VpZ_m_l=&jfE5vLUilYq_k=&QChUiMXcUoWcn=&jsJkHKVkjVprj=&lm7j7SV_qVqrY=&zZDDF9VmcqglW=&sN2OMHUaffmbn=&kiqByFXrh_Ybp=&SB6aPOUohklfj=&BFDBy9Wdbndbs=&orjZE5YokVZhl=&pLxXztXdYWrW_=&cViV4qYchcjeW=&46eBHkYejXjdp=&7cN6gdWbjaden=&VnwPWfUbedmkd=&aFAQjOXsoVlfp=&IVNp__WYYaYYs=&HLiQf4YfoVpsk=&ZbB_4lU_nspsi=&dnKsRkZ_qensc=&RLOBmeZcVkn_n=&EuU2MzXoerWno=&3nh6sgWrkWfaY=&oPEvHEWpgsbs_=&48B9GqYjVcrWb=&hzP6o6UYdXWrl=&mfkbhJVWXhmeU=&aXPDUEZkppefg=&btlSjyWigmirc=&4QiWt_UjshqlU=&EMw8r_UXnaeWX=&jC6eYVYX_ZjVe=&ex4A2FWcfoafh=&LqLnYzWVljosc=&gmi_MYUogjrYf=&UkTbECYbrZaWc=&Xjy7tgYVldoVY=&gkNpOuUrnVb_h=&75KkafXdVrXjW=&rky3wqWqqcp_b=&EdEjBlZrZ_jlg=&GdwQUaWpoqnXb=&IK5J8ZUqcYZXc=&FqpTxKUUkaan_=&VvykW8WoZeVe_=&ECN5jQVjaVijp=&SZ7YWcVhnkhUk=&3Sva6SX_pmfoo=&RAEKDFUVfrbkg=&aOjIh3YZcZqha=&TF7i4jUnhXoq_=&j5CeTCVeYWoVj=&pt6mZTVoighlj=&yVgFnvZshjek_=&FZW69iUokYsqc=&f_uU8NXcolo_a=&pqvsqOVYWUeeW=&PN8LyJXkhr_pk=&ydHmw4UsU_aao=&rlrSAHUXebgqf=&fXOxizVqmbmlU=&rEr8JyYZjlhgd=&xtGINvWicqcpm=&GArULYZnYcocV=&OfP7aHXlUYdZm=&xP7uRlX_mmmUY=&PJIUCSZUmnels=&WoYWOUWW_Yohi=&Qs3DHtWqpVhrc=&z57ZAXVlqgnbo=&rG2GqoUpiXoif=&Uxmw2YYrsUYiY=&PdiOplZhgcksb=&clZSH2YUggoob=&ESFfLgZojglaj=&wz3zBoYiqWaag=&WRjAPlWaYcXhl=&uuWooUUXopmhW=&cOJNZ2VkYUfVc=&MHFPrIVZsqYpo=&J6AMGZVkqnqio=&SiI9tCUjfrhem=&j2_YM3UfdonjZ=&uZvM4gUfmWjXr=&6ZS_HPXgirjUU=&wQfyZDUZmVYio=&LR9jkQWXcX_bp=&_tYnyHYUXrnZU=&4jCKpfWVfhgai=&ueZZyRZrUeidf=&SBhqhRXbkpanX=&ELTeKQXfrWrpi=&6NhB3oZfZ_hXi=&bYReYtZkaWmjc=&lYqvbXXjamfsm=&mjJHyRYpnpVqb=&rVA_PYUkWYclf=&pP_8BAXplppXV=&8fK_HIUWVriZl=&fBgTZ9Wdffcgs=&UGuUtIWjilWll=&zq4v4cXZZdhjp=&8icKJtWYbjqYo=&v3yONjWWdXieY=&DA2fYcVsdpVnV=&9J3E5FYbYspij=&9ewLgwUYlXbUn=&xsBwhgXUYjaVl=&a5TXPsZXcjkZi=&zFBlN5YhYWql_=&zbpQHTYqnppha=&lDln_cZodYlqg=&6nlTV7ZdaWamg=&SxEF9HXichkYs=&tQ6dhAY_pnXis=&dMXYB6UgVVVfZ=&MujhaEWecqfpj=&njuljpZropicf=&Pft6LmUUrkrga=&qHQcdQUZrXrmV=&e3_BhsUamide_=&N5Chf7YlccZYi=&iI3ApRUUUVofb=&U6i4E7ZYdYilo=&NN_fFvXsiUceZ=&fGWveqUiVqeqa=&74h8mIVmYnfcl=&fxfTCuWZcsjaV=&W5VqT2VsrUWpj=&xrwXxFWfiibWg=&d99TieYZeVlgs=&jnDYyhYsXfnZV=&VdL6NmWnagpZX=&HxM3xDWsklVUX=&x_uyIGWofgXhl=&aFoD7LVXkVhgU=&UPiBhAWpV_aem=&jvabTjYgbpmam=&ffYiHbVfsqqfg=&ihHngKYisXrdj=&vT3dHCVsojmra=&aKUMj_VmXmjYl=&uXuNOQUc_ahbb=&J4ROtvZmqWngU=&9rFRyoZsaWflj=&Hw_QG8XpWakcf=&_8JqXMWmaUcsi=&tvOcazUgpVern=&i6xiYBUacneXk=&b4rgaoZidcphU=&7pV5BFYqjbnld=&wghvtpZhhnlfb=&psJ786UodVfYg=&RKrlIlXemW_bj=&gka7PRUmciqjm=&AVxaBBVifkaVe=&IJFxVHVlppVcb=&3SlW6aVmenoUV=&BkDUzJXobeYhm=&TmctVHUW_lWXf=&8D2MLMXqqWklb=&JydwgoYYbsdbs=&OOXxycYdbnraj=&Jxr6cOZZkVsWg=&rBVWMXVdkolWs=&OzJyyVZ_Xnaep=&j2nkjEUfbYpeW=&lAVz_7WanlXXs=&7MrpoOXkbWjkW=&9L6yKGViZXhVk=&afStBWYbdonsn=&8oQ8lGWWgikmW=&7n8TIzXneVsqc=&M_TE7uZqr_XoV=&yU2Yu2WbZpVhm=&D7SBqzXWgWdo_=&QqarMpXgeradm=&eCAPYLUsrkooq=&IduX43Ynigjkk=&cqNHjDUmWljml=&PI6oLLYeelkfZ=&6oSeVgYfslqZe=&tJeOZTZoklngc=&_62mUAYqmpcqa=&RJ_fafU_pcpdo=&54zO27VaafnZo=&ntknfOWiUrelb=&ffEpATUWYamod=&ezYdUZUjnefkp=&_yzXGKVVlfrrp=&SI4vEUUYXfVYW=&wtRxbpUandios=&qaBlDGYq_djak=&JeQATEUahiVmZ=&XKieXyUbsbgpo=&sk39LRUjms_sm=&MiXXSnUbnkfcX=&WdXOLEZnlmonk=&FXan_nYgVrYoh=&ZdePwBZoZiij_=&rq_qCHZdldk_f=&eiOhEKUV_jXeV=&SMoz5HVee_hgZ=&t6gZ6RXrYfihq=&t4XManXfiacon=&oMxanHYVmkrbf=&iFg8OQYgrWbsn=&cXBEQWWeebfXU=&JXg9fqZUXnghW=&u4YOiVWVZmWmd=&bRiEsNYaqrifg=&FFaT4sZjWbnWp=&7kDhYvZiorYW_=&eIgkkBXnrVZkd=&DcgGIgXnZmWlU=&8CS5JGUjhsaWZ=&PolBrBVnjmpcm=&ens2_sZhVorVa=&OzEBgnUomembp=&XmDTqgXWkbkXX=&JtCtYQViiWopo=&L2udFwVYbnrsp=&Of345lVnkojgb=&ufBthpUWgsVif=&QH65DsUqajfnl=&5zsm7LVUoVZXr=&h7IRAaWoa_fqs=&HKuLqrVYkjdUh=&TeeV7NZssmisp=&ZfKXlsZbdsllq=&OjIpz6UlfnedV=&pR_ZSDZshdU_g=&PJQ84LWoUinhY=&iQKEzwZjlpVYp=&krot6LVmYWfoZ=&fjDVspYipcblZ=&4UTS6UUXeb_Ys=&6fPS98UUorWia=&BQLvz5Yhae_pr=&chBU2uWj_drrm=&KhiPjJYqqb__g=&NjEWJSVcgedVn=&h4h3m8VojWpcU=&Oek4F9X_Uiph_=&S2OKQTWbeXZok=&jw7AtEVejWeoh=&G_DgfbZiUbnhg=&3QGSTeXk_lfcr=&vmar7IYhmeicU=&7N9ZZsWXpmUpd=&DkzqVSUUkYiWq=&WIv5n_Zdckgho=&t6sRLuWekfmmm=&vsCIY4ZkWWWm_=&sQwUclXnVkech=&thfyeGWjXrara=&8hx2AeWUZZmsl=&fFNkCqWoUoefX=&UxRylxXYfqiob=&cDcMRsVkcVXUk=&FlTwFAZXkZqnh=&NZPJZbWXnqWZo=&OTShl2VmYmlkd=&xnLhlfVkjZXgZ=&9wRap6ZdZiYlY=&SDaagRWlcoem_=&SDG2yNXfqgfpY=&gj9wzMUbcnqbW=&OPy_PWZjihsdh=&L5jnvfUcqsXap=&pMEVjTWcsnXpq=&Rb8mGvYcWhdUZ=&DaUL8yUbY_ccb=&c9SOnkZaWh_fh=&EGE3SdYldUkUi=&9JrnrCUZclkkf=&TjU5bLXnqkkXW=&4VfZfmVcpbgfU=&2tNpQrVlsrXWs=&JAWWJqXUWfnnd=&UneFOxVlaqsrb=&GrDVFYUUcljgp=&e7ckxcXgVqikk=&gxds29Vaops_Y=&Tr4ZvvXqpUnZh=&BIsANwXnfjsfe=&xb_8oOZZW_ppe=&PNZbqUUnobVjd=&XbyWkpUddigma=&2_rNowZ_UjZ_j=&LvNpjvYlVsYbk=&E6OMnCXUXafWU=&OAkWKiYnempad=&kBdVuYZZpehdX=&Mx6jB2WWpasfm=&sRqL9oYfabYfe=&_OnyPTZ_nlris=&8ssxHEZboUXUb=&RHgoJPUirZpmW=&wFlDmTYhjWprf=&pOFGVOXohkdnW=&WeJtjPZimbnjX=&OuwlNSWqmVmVf=&TGX_EKZqddpef=&FLpZh7XlWUVWl=&lNsAxcVbrrkWm=&2OQaSkXebspkX=&5ii5ggZqYqmso=&_4PWWtXkga_hi=&3JIFB2ViYsopl=&QPJxnXUVsVkbl=&QhzV5uZYfqarh=&dmjJc2WdViecp=&wYHAwRVUXjp_p=&Pk9dL2VVfgfhi=&Iq9E7FZlWse_e=&6IVdtiUejkUXd=&xToEGlUoaXshW=&6qxphmYpfXokW=&aes6yZWVsqWbj=&iAwZHYUmXqhkZ=&ap8TkDXrqlkck=&jKC7tcUYdWoci=&fm9GyPUcfVpsg=&osG7hlZeYjjfj=&NnZXhmUbegjjl=&UFzR5jXWqcfdg=&qMAXSAYsfXrmb=&YdpUoMUjUshYl=&WQ28R8XUmZbpX=&C5f2ndWchkper=&SbyKXJXWddacn=&SJzzq7Ulgfsjd=&fNms3MWjfngYo=&rb5jPCUrbnmes=&8HlbRLYXfgbrj=&D9kncXWgc_bYj=&8r7PUUUsWfYgh=&enyooLYrVqWl_=&IsRXoLWoZpUaa=&oTqCrfYVecrcq=&kL7_aPWolssfd=&JcAhbTZUraggV=&r9iyqXVYemV_l=&kO7SNPYhecrYp=&gmwZqwXmaUZsk=&eRQzhWZqWXbWl=&4MwU6DY_ghcfi=&dbw_BQXlhmopi=&HC9VwmVpVbedm=&djcJuWZscWnoW=&hsDcZmZbeUVib=&cI6JDiVsYffli=&mbcbzUUdmfUgc=&rqKjHYXZbdZeX=&xoyfEzWg_sYrp=&_UZfn2UebVXjV=&o55gyWVilcUrW=&TR9O84ZWqiclh=&6zSp86VnhcYl_=&lApl3KUdhZjUo=&hUU6QwZsUabar=&l85evCXqkqlUk=&Ne6sUnZcqecVW=&RbkRBIZjnd_VU=&PZYDmGYqldjjY=&dVtYVtXsbcfhm=&lnZ2W5YjgaoXf=&bapKJjZWaoUak=&F9mWicWdnkspX=&h3PXXQUahpZ__=&hV5obXZgbonUY=&ysYiNcVjrrUrj=&RiilGRXlUXjUa=&BYLL4rWnchXbU=&XvtzgnZeUhiWq=&YSOVe2XWjhoaW=&aG_8ObUhhkglg=&Rxq3ohYjYriUq=&Dd2SRcWhcZVZX=&nzxVwtYXZXkUh=&g6FjgZZqqdXWi=&iKlyQlXiXsmfi=&sknrw8UahUp__=&I_yNktUiWmVUW=&PeV_SdYhn_geg=&rCjpFnYcUscec=&XGLD5_VpkqgUY=&Goe4agUXpfYmd=&eQ6ZH_XlfbZXo=&h9CNgFXmeanWo=&S_V6RCWXjbqWV=&MXJmjFWseliZX=&RbJOKwVkbrnVh=&cflt85UdZWdlV=&F8TCkPXdoefkg=&W7_ztrYsUkmmc=&tQEbsoZWUsngd=&8j5dCHVVqglbl=&l5zuj3Yfksbjd=&rVOM96Xahef_X=&PnJ7gvYgdoaUa=&BMs_NSXYhodlf=&BmjgnfZVshlqp=&iRQYs6YoesXe_=&LbahTgYmscajW=&OcaxLhZcZXcej=&YSThQzYcXhfmr=&z9kH5WWgYYnoi=&6GNziIZlVZVaX=&lj2LsvYgpkWls=&r4qZQ6XXpaVjo=&HnJiN_Wbdlchh=&5VBRL3WgsnUoW=&yzhttCY_lemmU=&RzLOXKXoepkap=&6C7P48Vkdhiqe=&gM2zCMYrihggj=&glFJXYZrodjls=&Mqcd3FXkZVY_g=&i9mhlVZqnUkoq=&xxsVvbVo__WZe=&dnX634YrrVdWs=&9Y67iIXggkZoc=&XGuejeYcjqqeY=&4t6fTWZqciUcX=&4IpCTXXlZonXY=&cMXnYZUafgmrm=&53iShrZjWebZb=&V7mEx4VXpUdgY=&AUrNuSWjladmY=&A2O32EZpdqpj_=&ykFlJOVVVodWc=&qO_Ml3VWU_roU=&6kzj2ZXfiqjpc=&Rg7n7cVnXgfsf=&gz_diIUeWqcib=&TnaZdsVr_spc_=&DZ6Yr5Ych_fbs=&W7JsjcXoncWqb=&QJri8BWYkmsmr=&Yq9Q26VVhiWUm=&rZtuxRZVlXjql=&geuBjWUhWahls=&4SIFIWU_h_sYk=&R4vjqUZijmcjm=&UpINnnZXhjVlp=&FjT_5zXfckkVo=&eYBVblZVXdgfs=&U_cGc4UYngUab=&dK3PEsXolYhfn=&zzHf2HUiXUaec=&z4gk3sVs_Yqmk=&zUc_25Ydmsorh=&7_W8zJYsZocrq=&z6BnmLVYpndUs=&E_JOZKXdmaVdX=&hpxV5JUUqrsgj=&n5AqSpWsnlnXr=&XUIa9BWaUm_Xs=&cGHIXbZoeW_iZ=&VWC3JYWbbjlde=&gudvafZUoWoWj=&gCA4EZYiimoad=&SsFgApYjfqlpj=&dEPnStYjesdsh=&N_S9dpVbUUdZ_=&fsSWtqYsmodYY=&7UfKhBZekjlcX=&cTw9SBXVnginX=&pQg42dYoekgYh=&gI8tH8YopkmmY=&d3hDCBZkshUXm=&fBFeimXaUlgZl=&ZSjgR9YfiXshh=&c7b6OpZrjdgkY=&jRfIohZgVjpra=&LWspi_Vci_nkX=&Zk_I4iZepXsis=&hUffL2WXdjslm=&gOuSAEWsbekVn=&qrYK5yUWaiYac=&FbfVkCZdnmrj_=&bnKFjMZkgYoaY=&OAKWGPU_bpomW=&3xpvO7YbWXprY=&qzjnTNYlgeddr=&sfUsfCUsbUpoX=&T9rlosWkWdhnd=&DFz3J7Womf_Ui=&OmSa8CWdZsqrX=&4MCZ_4Ufcklgs=&_BmjMPXhnaUgr=&UcX5sHUdfopdf=&7sh4toXrhbVUp=&c7BuQTYd_essU=&po6gTBZUpnaXh=&7tGNZtUrrqgr_=&H4Bu2VVegZh_V=&PFeI_eXpflsqV=&YDMcCGUWfipXl=&dJAytjYmqb_Ym=&MGsbn_Veflnoj=&8HrL4XYYscqho=&MWn95OVnVVVmX=&dATeRlUohlrsa=&XicXHMZoYcfdb=&u4Mq7PVjaj_k_=&2iFyvZU_jolep=&XDXyQ5XiUanke=&jlTfBuYh_prgV=&eIT2YIXsUoadd=&jwHmPOZsafVna=&2Wtkt2WrWWWYq=&pOnsKqUgWVe_o=&CkSgXLYWhXsZ_=&Oe3YSmVfVhjW_=&K3CcJjZckdXam=&k29jh6ZobXUaW=&gLmOgmYedneVn=&pXYK3bVWWXbeh=&JPmRwAWkVYXkY=&CdeqIqXcdalnY=&85cwekUZUXqqY=&pG9EQPYnhmYUr=&c3AjJ2YkkdVbr=&TRYSoVYkUWmaa=&5wncIFXjaadZV=&EI2v9AVbsjkkm=&BjjtTaXrnehgi=&7b8BL9YinVqrU=&EBdQftYkqYsXq=&2rMplpUp_pgci=&_BashVU_hqe_j=&aplwlJZhcjfpq=&sYo4pMXfrWkak=&6NOclVVgcgrob=&paLWKxZrrYbUU=&RuM6k6Xfnrdih=&KBQtOmZnajfoX=&5_9BJqXkmhcih=&ZSkO2bZhZVpmn=&OtKQWrZmpkaiV=&tzdoFUYmoXYom=&mhWZBWUmVUbmo=&7RvvuEZfeUbba=&_EIffmZieocUo=&RdrXIPWWWaie_=&zjrigqYmkaaqe=&NDcohWUch_nbd=&ghdPrxWhYjXWn=&AfICmzUrknepq=&7z96qUVf_aads=&En8z4LVeUpbpU=&Syn_VKUVgqclZ=&8bRMXoWiqigXq=&IagaO6XnX_fXb=&opfqeyVefiaoZ=&djJBZMZ_qXUsU=&Vi4BcJYlUYllY=&GpGCZLZeYkbYe=&5TFx2BYlgmdcs=&T9EUPpYXosrjj=&zviPVSXgXasml=&XbiGTyViqWrsa=&vUQgD_UXpllpm=&ZJkDWBW_gUcpq=&xjmn4QWdYXYgd=&WMXBnBYUWUUYl=&Jbznt5ViqsUcj=&7Zm99QZsXXUkp=&BpzhycWhampYf=&nBMJ3nXqafreW=&NwK_VpU_mfqnq=&GhnzADYfVqUVs=&IszumUUlchmka=&hbAjPuVZkbaUq=&2HBXBaZgbbZYq=&jjIowkZlWcdhV=&XGrFsPWjsp_lW=&UCSBNPXhknnom=&PMBEfyWpfibX_=&FlWjGhVeWVoXk=&dY9J2zXlfcfl_=&2F6hpGYVbamci=&p8GBfPYopn_lh=&bUXRfNYVXqafj=&u6GequXUhsiZV=&ZgZjmUXnVZXrs=&22rgWBYobYVhY=&QbdyD6Wdhp_ks=&M28hDSXephefd=&tVqP29UZslYqX=&qVVAUDZajagcs=&O2WRVPXUkgsVn=&rJq84FXepW_bb=&lxP5VnU_rprZs=&IB6BltYWnpdjm=&jgsLEVXeZmdnk=&zXOlcjZkdnZol=&fQLKLdUWjXlkk=&iFVQUKYfgWknh=&qDrXxaVpXdscr=&RFXynmXjfsfgn=&A8Nw4HVkUsqXh=&69NmAzVbboikp=&wGrO_IWcspcja=&Ou_7orWZW_aZ_=&xuIjGSZbcXm_s=&HYJFKAWYgjXkU=&jByu4VU_mfplo=&IgA9q_WibXnsk=&HTqPt_WZb_c_l=&P7EuE6UVaolhm=&m7Ov_HYYinUnr=&sud75IVXWXcgj=&vy5MNnUmZlqiW=&DCX_s6ZceVeph=&9Qq4XQZclVmfZ=&BlkiDmU_iaWnd=&aRI9gpZYXbkXZ=&wwtSFCYoilXmd=&z77GBOWcbehoj=&RrYnJtVlqfXbn=&dcVT_WVUUpkfd=&pxeL_FUseYklc=&62t_NXUYnUmqZ=&N4xcemXUpXolU=&ejstA6WWZqlmm=&GOdxgqZfZnqbq=&PmJMufVmgsmbc=&bPnKeyYnpmlml=&OD6JgfUijooeq=&oVB8tGYsedok_=&OBfQHIVfbVUZb=&mxSdHrUYoVZdU=&OHYPpRYVo_h_p=&5qfrlFUVjWcnU=&KGws6PZfnhlkq=&_TzCiYYnfXkqU=&KGIJY5Xc_dlVm=&C9XP8BYkiUogh=&a83b22VmZ_or_=&pz6eKZUbhhgbj=&tRhiinZjkWlYg=&oE375BXfasfrm=&oBZSRHUrWW_jd=&HLsaXYYhahmXn=&vqpqj4ZWngpdj=&piCUIfWpimknb=&eG4yOzXY_mahb=&jWvYNiZdcfeUb=&meabubXopVmUe=&eifHaxX_hrkeb=&IrpgA_XnZeiqa=&XeRJxSVhsYWkf=&WaLT__Yg_bXin=&BBrJsYXflciqe=&J62kuXXUqnb_Y=&hJvuKTYdfqeqf=&EFxsaAVmrj_ms=&5_xWZpVXdonVn=&U5z9qWYiqrjio=&O9zKPsYpfjXpk=&Iu9qsAVknramq=&h7dEirVWpZgXo=&nbJmQMZobfikh=&OtgGxkUphpXda=&W_8THNYZWVsqb=&sfaaZKUdeooW_=&BYP9odY_gfiYd=&uP67eJUXhWjps=&eeqZkbVmojprn=&Z7ee5wVYscoro=&KdEUNXYW_sgnf=&akH5LoXhjcajf=&yr3xObYnheXmr=&xOZNjhVchZfmi=&TdQj8sVWhj_fh=&mLcCcZXXUkpi_=&wQDbxLUiroXYX=&jxcyoHYehomZW=&CVwHZvYbiZWYV=&AcuqrrZfpdsrW=&QJZBhMVk_ZsVs=&qzymBbWednYcY=&5S6L3NYYkgodZ=&TKPDW5YralqWm=&eWDGLdZsplmbq=&qTizkZZYsYhsm=&pZzutiVr_ldVo=&nS9OyvVmjooWV=&Ioae8_XddWqXq=&fxBEKCVkgecne=&PRKxVSVXnZmoV=&CqlGPqV_msrWX=&txLOcFYVihXnV=&9gCaaJYakkaXn=&Utekc_WXciZiq=&PdBEwZXWpZdUn=&fboJYHYehXXdh=&DkmdHFVkZbZsl=&RQ8cYqWmiepfd=&vIussBWhhphXc=&yXIGbfUfXXgmr=&qHMHeBXWlWcUe=&ex_OllZcenVUn=&A_KDYgWnicWjc=&RfGZWtXhlVdaU=&UCdonIZre_qjY=&G6N2AjViXgjhV=&EXaK2PWcsprYe=&Epkys7WmohmYr=&RCXwdUVaqmqfW=&kPLZQkVhqqdUj=&t_gL6tZelehqU=&d_DthmUgWlcsa=&eZBXi6YiUe_Vi=&JfRz5LZmZajns=&ZwkfELZXYsXkd=&WkoVFFYpVrraW=&fRYP_NWmmfjbs=&Lx9enzX_iffhd=&FpF7cxZUliisl=&dJiDICUYq_kie=&lDSUFMUVpnch_=&tnMahXZkWVne_=&CFVBoqUpecakn=&7niDeOXngo_j_=&vXSTgMYeciVcb=&D44GC_WngmXjh=&lBdQigZkZojUl=&zsaNrrWpcZYri=&i3lCH9YanXmbs=&JAvkrqVhn_UcV=&hrF8krUkZncgk=&K5VVkiXcofhie=&Gbh9WgX_oaeoY=&fDbcLBWcYsppU=&Zpj4klWkm__fh=&sPgPOBWeVYkib=&onU7VQWfcVkcp=&JQyqedZlnUZYp=&ImtXyeZXgYsoZ=&MTvvhBVhpnnXU=&4pIrmzUmU_qgd=&OBpWKmWX_iUmY=&FK9OZzZofq_Uk=&czF2suWYXbeY_=&rP_HjqYsbsiis=&CGU2DiUlUrojo=&YTnjZ9YrdqaaV=&OFYOHRUXUVZUp=&ltnmUUUYhXWjh=&e49I7BXfqeoYp=&EMkDJLWWfrnje=&EM2AorWpcbbZd=&rkO9HlWjlYflg=&na5EMQVeeYlbZ=&oXCA5JU_fjeml=&ylcGhcUhsidbs=&RZnr6eXeUWgjg=&OmR94JXg_lfgr=&_Of2dsVjWioVr=&3fJnocXp_rlos=&8vCthMYmehjhc=&p9ZnwcVoaaZfh=&Qc3F6pZqrsarb=&iDNRYxZbpgbnc=&CLIjrsYWnYUib=&B6G8RDYbnkmfp=&7pZmMoVZorisY=&rslvnOUUZbhio=&ewUnl5XbqU_kh=&qy2g9FUkZgeVX=&HrbLaqXnaaaeX=&ajLcIMUcUmhYU=&u58J2DWdX_lsY=&kH8uiKWfpaskn=&TYNFcSXesimjg=&HqIL2fZViWfWU=&VGTdQKYilnsrf=&qi2SNlUhk_fdV=&iggKYVYpcqdYs=&jTAszMZbUrWri=&iuz6HHUdhnUWY=&e_zwXrZgekeWp=&VaJrVkXirXmco=&Itm7ETWVdUpnl=&PimYM3Whleodd=&g3CNDhVmdVWnU=&294iVcUhofinr=&9sBnC2YWZXf_d=&iwHKJlVepsZch=&wtjqNTXhljYVo=&maMBGeWcmccee=&VbE84QZqpim_X=&3DsggNXqoqYfn=&L9B4xhXUVhrrX=&zYnufPVjYrWee=&dVfj63XYohkZV=&ugre9LZoqZ_rc=&b9PzMvVsUdmUX=&a9BrznVbmjWZb=&m4uvfjYnaXoad=&DGbNfsZlpd_YV=&EO2i9vUWllaha=&IJy_9pUginWaY=&D_GYtKXpY_Wlq=&6CAkWDXW_ppWU=&ONNxmxZnjX_gX=&D7N6HNWpchdpe=&y2dsUpZUfsZcn=&Z4iNqTVrdnXU_=&uYPe6RXbinidY=&pjvvodZpmWiss=&IV5nNYZifhcjc=&wfAwRLVWak__d=&Fqo9LxWmZblan=&SVy5bfYVgXcW_=&wsBKoKYXWaVdr=&q97JhnVohs_dd=&6rMO8JW__Welq=&ggiHcvXoamksW=&9Csgj7YXZ_kYW=&jVy48mYXXWana=&PKqe7sWYZXerr=&D5bh9tWmshnoX=&ND6vdRYeasekb=&Qt3cs5XZXWkZ_=&dYDwBmWYsrkil=&lOHFtDVrfgd_c=&NO2a_lVed_kka=&Mlbm9vYhoannb=&6le9B9XpfcUsn=&tue3EvYohYfmh=&Y95uXiZiippVg=&QxOTXbYerrrpZ=&jXOF3dWnrrbjo=&5BaVxYVphljar=&Q4U4DAYofejqU=&SGRU9EWllmoko=&OL_tXtYksZaii=&r_CwuTVsjUiqj=&C7nyzPVUmhrne=&Qe2whkZYVeoXm=&xguKFqYfUfjlj=&C8snyRWgkgqge=&yO8maoYejXhrW=&mgYF6TV_prY_p=&FCXAZMZVVoglm=&na3gLrVWhXoir=&sqttvsZegYgmX=&rUoyz2Ueqgbps=&8Bsj3gVfepcjq=&qSHY8ZVehZU_Z=&kGHc5mXiUpm_g=&2e5CIMYfqjdpq=&Li5LcOUjflVsr=&bhgQCPYgp_i_j=&v__jzbZrZYljk=&Uhb2RIXbVmVml=&poBadHUagXhn_=&nZTTmzUVrflpl=&_mdV7mXiUVfjf=&jCRuP3Xbfoinq=&IfzDbhYirjaYg=&Mekzn5VUaXrbn=&YItb_kVeUZdfZ=&5OWGoMZomrgZo=&_mwQuDUs_iabZ=&iUn8txZjbZZjl=&vz96s4YYlkYeg=&n5tDxXZoWW_bi=&5BdMYMZXjgcea=&CHvuEjYphl_rq=&BqBzLHYcnZm_e=&aDzuFpYWUqkeV=&LcR9mqYnsergX=&GIddjWZqpgecU=&5GJKYdWqmXZUX=&XoGW6_VpYghbl=&F9v7N5UgehbZb=&e2LElKZpjekpU=&NmeKDfXrlbfoZ=&cjjtc9WseUsVp=&5lSbCmVrXWsse=&8_nGDhWcVscei=&6emXGEUWYcVfn=&3ynh9TVoWVpjg=&w_HSPqYYpbpbr=&7NzpDVUkehb_o=&Gcb8OuZXnUf_p=&Wvx9ptZbhZsqV=&3dDBz4ZUrroVe=&zK5CVnXdqkepb=&rtoHQmXghdYmp=&723EywVXoXiZa=&LfC7IIXUfWqdi=&qNK3ykWXsqYne=&vAznY2ZmnfjbU=&uMvNwyWYsqdbj=&lS_MFoWUsonei=&SqafWDVqWWn_V=&4U3Er4ZpfVWqo=&Qbz2K5XsmUbhV=&Akf4yhYX_dYnZ=&t_efUbYXYfrhU=&95gWYPZpgelgl=&Z73oCgUm_dj_i=&E4XNqYYUXf_fX=&nvcgo5UlfdVVa=&eKiWmXWl_jZpo=&NldhC_Uoce_Vk=&dFcC5pYcVfeco=&jjOZg7Z_gYsf_=&kOJsDkUsp_Xbe=&5xmy4PWVnkjri=&qds25TZklZcfm=&JiqdRJUacmfsg=&PwB_yfZreZamd=&34H8h8WbVXbms=&kXYNl_ZqYfkqY=&wOizQJZjhdZUc=&cxS7WLUX_fqcd=&vbJGNLUmWhjkk=&E2MVOFZWrYgUY=&pquYNaWoqWirY=&Abdxh2Zfmgl_r=&sDFwIJUbXVgjk=&pqU6ezUihdcqo=&c6bOKyZZclldi=&YS9CAzUrkVYrX=&s9Et5cVcZf_pg=&k4KNx5Wgkcolh=&Md3mwwVWYdWmm=&h6ndLEYbYYfe_=&fLi68vWssgkXh=&4424i5XrpgqnV=&TPi3d5UXksrXb=&ZtJpUrUe_dsZs=&ubU9bcZdiejdl=&t2WtgEVfomVYd=&vHKDi8XaZgaZc=&EvlCXTZpcajgo=&IXWaj5ZcmiZZc=&wgZmr_YglYbkn=&6B4LOGVWhsW_j=&uQz7jtWbohnYl=&rmfuczWiZcamb=&v_hcSSVjWZcdV=&ud4LmwXZVpY_m=&PDq6S7XVigVli=&NaiyNYWYXWYUe=&HHd_aJWncapjm=&7CGqiKZqdoWXU=&zGKLOAXleliUa=&dAEFdSZnbsenU=&8rn_qQVcijrbc=&4vNWQFZgVnepj=&2DFzRfZodhlkl=&GHHUrGXcWmhVl=&GSRZrjWpVdfnU=&IvAzadVdflW__=&jSWgpEYWegrrh=&s5H4MeZUdsgWZ=&wIqpJuYXrchWU=&28JuqpYodkaqW=&2HvpSoW_eZ_sW=&U7Rd7EZUXXYdb=&2CrlKuYkaXVpr=&s6TZCfZfmdclr=&CTAOz5WiXjhYi=&vwPiCqYgpZXUW=&5vd5oXZlljhjg=&jHKIrzUfbXlqj=&kSUQ7cYaZZscb=&svBcNeUjgsnhp=&NzYP_3X_raemo=&fcJsi5Xgqejmr=&593xXCWWm_kbW=&Svq7QtXmkhh_o=&MOCxAWVdbrpla=&dzLrBrWhhrZah=&mBIq5VWWoUWZa=&qRJXDOXYn_hig=&3WCecfXXmqYVd=&XGhrXbXdb_oZq=&qfIOeQVbdckgh=&HfdSuAUsYhbnl=&TyDY7xYcsnYVW=&77GRf6WViiger=&rNZ77fZqZpbhU=&RulPWhZlrZUaX=&VSgyQgZfqinYn=&mY6dRpYXhUoap=&MQIosSYpqjkmV=&rysYxlYZeZogi=&9AobavXZXVhsU=&pfLoNAXjYspeg=&qAo9C3UmpZkmh=&v62RRbXaZoXcs=&dtqMVfXojfVYl=&bPBujNZYjsehj=&3GczQjV_g__XX=&879XyUVfsZhps=&P7IGMmXVWXsjU=&sm4cUxXnskXmi=&ZGxQxUXmnfens=&xC5eWIXsVeUea=&Y2TnX4WghXWse=&rwt2FwZWorsgb=&tYss5DUqVVehm=&c8y3QDVoadWVW=&UPAZV3ZY_orks=&CYRwziZsqeccq=&NCphKWZV_lnZh=&8b_hBtYfUabpf=&VvmKBPWfVZqqY=&vLVYAGVWgrZcn=&uQ8npdWVqskVl=&LfA6sVUjXq_kf=&F5LyYJXopenpU=&ke4nZIZhreYkp=&awIBGzYVap_Xa=&2kMzZlY_mZXkX=&eho3nMWYkqmd_=&_D29pbZlfccdh=&sMInI4WoXdn_Y=&KmRQk8Yqekged=&3DGC6_VYgbhkq=&iNC7ZzWperrZa=&wL7uniXgisclj=&fDqG4FXlqXeWm=&8UNpgTZdssVmg=&tDvTNwW_XsWb_=&PN9U6QWklZZja=&Z5GwY4YaaUnWe=&yqHdF8UlVpqUU=&qqF2ECWplfhiX=&5uuM3YXleWWrY=&vAW5uBVYjjomq=&TrFYCaVkdZpjn=&Xs2ykWWoWqUsX=&rcvy4IYUcacrl=&NnNErrVnrlVr_=&PhG7j8Vba_ale=&AkEVGEXimbnep=&LUzIHEUnkqrpl=&O3iF__V_hVUXU=&QFgZ3pWbsdbUn=&FMIyyGWcUVikn=&kNehCpWmqUkc_=&WnvwfuXhfcfks=&VppzoHVbcdboq=&ULkOdSZgk_bgj=&HTXHngYXqVldk=&v39QpYYgjk_bj=&KBexKYUpnrpef=&6YksCGV_mqqpU=&YlZVXVVsd_iYo=&5PqVl8YomUdqq=&b74PZyUafmpan=&Wwkf7ZV_eZUop=&UwDWPlVkVZ__d=&4KRcbmYngjhhe=&xNebbVXn_ieso=&OBLBjUUrghnge=&hXwdefXnZgUbh=&NePeTwVbgb_Vg=&mtrkLNXfYUhYW=&odXq4RYrmXapY=&SDNxhRUcVdaoi=&g9nwHQU_oYVie=&za5KExVVocesl=&e_tZgGUaWjeoc=&FfRA2vUVZcfhY=&boHPN7WbUYnjc=&R4Chv7UWrUmoi=&ppr56lUlecZhV=&SeXnQeWXpkdao=&UEyXydWmeZkXl=&GpVbqKYcUZedW=&3HDObrZpjUknn=&HH_zLKW_d_pls=&KCcwc8Xjfbmnj=&7tS_eDZ_kmqVn=&nzntnwUYlUclk=&bnYyu9ZaqiZgV=&juTAOhXfkerfg=&KSKHufYoVa_Xj=&xQRSyXYdgpbaf=&yn_PXzXgmcZr_=&9Wn3LYVkXbmea=&K7V4eQVeeorVm=&3c5XVhWieXYVa=&DXD5_RWWi_mgb=&FBEeN4YZarlXZ=&6qUstbYqiZbfn=&ExkiLwVWhflmV=&EecwyfYcikgnn=&_TxVzBWddVUrq=&cDbu_3Zo_iYhp=&dtlVbaZmdprqq=&nldhCZVpkVcnc=&tCP7bbVWdeifo=&56MbrkZ_gfsqk=&l2xRhpYoaiVis=&pMobx7VbVpgdl=&KhlzKUX_VYXVW=&OPA9BFYqasrgV=&O2VSthUilbrgm=&gB5RnVZqfbmYY=&cdVYeBVoerbkj=&E5GeFZVY_dfom=&we99kSXha_jnb=&Ue3UHQV_sedam=&894bVmUmhcg_k=&9oVRwqVmVZbXW=&YLR5duYloWmXg=&hdn4DNVedrqse=&RChZJFXpmkZmb=&yF3LkGZVqYcpm=&awgu99Usljdoe=&CjxSEvVrXch_k=&tUzkoDV_jfckn=&yNTipxUmUZerV=&4vhPQyYqdfnWo=&DUMxoTV_WlkZh=&38GN8FUbX_XfV=&9PWvGMXkohimf=&9SbHpoXWgccVg=&WJn3HaYZjmmpr=&saQuHWUYfnjli=&3rcfekUaXVnYW=&jSyxGLXhmhorU=&9xe3eHYqaVkVb=&UUbexdXYVofmj=&dfWUbwYYlp_aU=&3qAIlbUldWepk=&2FxMGaVscsipq=&lUOaybVeksasg=&DMNmVqUjYpkmk=&ftoLI7XYqrbdW=&lbDa4NVremaU_=&UBjYzUYfjVjXX=&4D3DCqUkfbZrs=&6EH6G_VpdWXmq=&rX2darZWcbUgq=&dbDRMHZbrcaf_=&xH4EzhYehYqpe=&FQDku8ZXhUZmm=&LOS8IMWWlapcn=&pdZzQWWdfpnsp=&KS7rZBXoscdnV=&LxeFtHWa_eisU=&Vm5EE5VdlrqcW=&YLjaj7XddeYbg=&wedRcLVkhajfi=&52L4zzYlYrVla=&frBWZtXngUjkZ=&fXrYcFZmqUlYZ=&ttMeE_WsUoqrc=&69LYmhVlldeUc=&InDzvEZqbWqml=&pxL7ReXerqjqs=&gDsgSuZbaoUbp=&wOggESXkagoak=&agCGmEWfslmsj=&V8MRsxXbloXlg=&4gO_LzZkhogYU=&PnUFXpVlXfZal=&CMuTk_VpXeUdm=&qOgRJeZmng_Va=&rok_GcUgabgWj=&kP_cd4YqZVsqe=&UAhHWfXepkWms=&lS2PRwWgVbcUr=&gGDa8xWdXgagY=&7dbJJcYhomZXs=&OWIthmYqmVVfc=&zwPSQyYZjYbaq=&SfL67PVrqfYoW=&fNXqfDXoXVUib=&n_rMAdWbjoddY=&38LVh5XXeeWhg=&bMphIPUeUZYYY=&eWyTrRVcghooU=&9tsHASViXkgrm=&4laYW3Xecl_if=&E7C7KyYc_meab=&XYxm8XZsm_fdY=&XMOG7tYcgoUYZ=&THrP2OXjpsdsm=&HQ8t4FWiefViW=&6_nkWUXddXmbs=&Cv8yjoVssnhfi=&RjBkMnWher_fa=&VWoUJgXnUVWqo=&F5vxkkWccqWUc=&CFNv6oZVUVZij=&qUjW7CVccXoU_=&oJi7RsWaqllZW=&MZnHyoWqZsXXj=&xuzkTmWoeXVYo=&VqxreyZgaiUeh=&V5P_r7WrUa_Yn=&8owMTuWei_nqo=&vmpCItVUekWYV=&l3pXQmWXkqabm=&jdFZEuZWngenW=&4noj5IU_aseXr=&sM7kBaXcUUr__=&nYPwDmYmndg_W=&IgPcJdVcoYWrW=&QiUWs9ZUhlXVW=&vT7SuHZpdlpqf=&6g_8KJVaWVrkf=&5WrnnNZqpVWYW=&zkJvafXiqXq_b=&kaoOyUXeaUs_Y=&dyeOM2UYki_de=&MZXibOZopkVdc=&qKfe6eVjsjljk=&Acf5wTVs_lnrV=&yTcDy7XdpUsrd=&QCiRkNWWfkgUk=&XZPaZpWaUjVeq=&VKDmkGZcWngYf=&ncFeYpVchcglr=&OyEGy_Ucojjgr=&swCrS6VqZk_ZW=&wd8i8OXcjbjYa=&oZVpCKWpajhab=&rnNGTJWgeXdbf=&4i5FLgXqnU_pl=&OqgDniXgW_cai=&pdoZQfXhosqn_=&6aOgUgVlih_ch=&dAcSKpZYYegeU=&BRMWrAX_dZsmZ=&RC8zaoVX_raUd=&eVHL9nUfjabak=&vVidAlVl_mekj=&N95WMnVp_fhqr=&V2fEn3XYkoaom=&LjZdSFWrhlWol=&_CWRGfYjX_ZdZ=&5FhHIZVnXYWYW=&hjDDs_ZjgYnnj=&xipKDDZnsbkqo=&Sqq7DiYdZpoaV=&HGVUmGWknjUbo=&UDH7rRYhYmarl=&ayqpSaXqgYYgX=&BvRyN8XiiYpaq=&pNMDHsUfphVVc=&TxticiVnZVfls=&pxANXBYafpZgX=&EKb4DhZ_rieer=&LJYByJYjWXckl=&BrEjMsVpgidr_=&OTDvYYYajoVqY=&c77Qs9Yffo__d=&uk4zsGWifganj=&7tDvBSZYodYmb=&pFTRIPWincgWl=&KmV5ZRXakoYel=&zxYpXgUodYhUZ=&escONpXaposjU=&dTg5roWr_jsYa=&Put_X7VqVaZeZ=&9R7u3VZoblqkm=&ginQyCUqpn_UY=&6TNtSSZnoWrmU=&MyYujRVqhjqpf=&5uUBZvWfdXbhl=&kGL6C7UnllUph=&sRuOdZVmfmiZX=&baYupZYUoUhpi=&RPmh_lWkkjlbi=&8WxWuuUV_hsUd=&Eu3bXWWpqgdWZ=&B4LlJXYjZkcf_=&EzGxX2YVgp_ef=&AncGKNWklUlfe=&isHaVmUbeslcf=&PSEdVTVmhelqs=&s7NutqYogngme=&FyWiyxWVrknnV=&CO_UlyUZonhjo=&vAWVmGVjodhfe=&b4oJ7GUjhYVnU=&R3YVVUXngflff=&rTC2IAXljqWsZ=&6WTsNWYXpsekk=&beAWSSYeZhgoU=&k2rruEXqYUmoh=&QIAMf9Xacsjss=&ZKR7GgXYoUks_=&WBmfTNXlsqaYb=&vQ8NO8Yngmklp=&ESzTByXVjmYUV=&Zts6gZYcamkrg=&PdhWjeWWVeYWe=&keI5s8Xjdoefc=&utMD8SWlflseX=&RdYVIZXrlWrZg=&BOM9UhVnj_kfn=&RP4voOYYlidsf=&ksUpQIYYblcea=&GExkKRUWfg_si=&fYOjFKZZgbpg_=&qbK4hTZYecdVo=&94k4oiWWs_cop=&xDTSSNVWiYooq=&8a_MTRZ_rXXln=&Qy4sOmXmWqjgk=&LVLlqDZgfs_pb=&24byJGWloeY_a=&IlwSq5ZqincaW=&c8cubqUbmmUdl=&PXBtjOZecfbdi=&jwoCiOUkmm_ia=&kz8q_LVXqVYeb=&kJyqJvYmelYhg=&KD526xWVejdoa=&AHo2UGXr_esil=&xWAUtjVfZVknr=&Keo3XsUaYhgip=&DqHbMcYeoddaU=&22UlMXYibkrps=&h2SHXEWcUlc_e=&T7JhYBVgWVodi=&Df6k6uUnWhrmU=&ljHTTXXYgqVb_=&UtKlfkYnhWWco=&WjAFnWYnYgmfW=&nHsgzeVonhXgU=&5sZIubW_VZU_j=&5rQxQlX_Yakol=&kNE6TYVpfWdWq=&8rlfY_UVVooih=&F4YaGXYbYm_XW=&jFjWJjWYqZc_j=&KS43ATYVgrXnr=&r9qJZuYmV_cjY=&fNgQdcZkkfUqs=&uU58VOZgssobV=&aWIm5BYbXXVcW=&BRzfGzYkloogV=&BuRgXQUYZerrj=&pKAFqgVrffcjs=&RxrYmCVbeckso=&XY_g4FZblkgmb=&VPgy7SWUeeZoU=&iWuqz6YhpXdl_=&oRgndDWnnZ_go=&bWhVhCYhclXWo=&PSkYWQVriagXj=&ipmM8GWhVrejb=&t7RHzyYioddbU=&Ums8dHYcjcgpg=&Xj4rPMZZcXkUf=&paS2blYqflkZa=&HihnRHWZehZcf=&eCpkXwZsdcipq=&wKPXk9Ug_Wgls=&2cJrHgYjlejhZ=&ogsTEAYheihke=&yXeuzfUZUakd_=&k_fODTZbod_Z_=&ONn8wYWZmhfgd=&bri6PAXqhgdok=&X59YSTUYp_cjr=&kRMJbvXZcUpXn=&KxRtMmUlcXpUZ=&UtIx3oXUhaoYd=&WAG9vbZVlpeif=&DelihOZgsdf_V=&gYmw_jVXUgqVZ=&kNsmshUeknmUg=&VyF6ULXlippkZ=&TQTiTGXX_ijkj=&Lqhm3KZjYep_g=&tTOfEKWmUZo_b=&uQW46uWXa_lch=&IvrMAqYphZsmU=&A7gmubZlb_pgi=&TbeMfLWc_Wfsg=&_NxknUY_jk_ep=&SgR6POXqrcdaX=&3g6BzgVqglfXY=&OtrSvnV_dWiWb=&wdM7SkZpesonl=&X6wyV3ZXscckm=&EsvtQzVmUonrd=&NQWCGUWpfpsho=&psINouVpnbs_b=&hGi25RZZaomaa=&AV5CjZZUWspeY=&_YxfNnXeYVUpg=&4KAla9Ykbmmlp=&DeofvEZrWgYeU=&ModkkcVlnUrgm=&FJxcK5UsUgsZj=&vxrhInYWhXcVX=&fWvlJnUXUmcfc=&nPVGCfYncXoWb=&oBaxSTVmVUoXd=&PB6lCJZUXnVfj=&4EgbFGWjYgead=&EHIpMFZYqgfjV=&7kajzjUlWVgdZ=&CX3ogEWhohpsV=&Y74qk7YbZpcb_=&4mjlEUYiciqpZ=&b2fFwhXokrgas=&qfC2QUWUrokoa=&ehkewiW_kYZdi=&_EjrY4Zkjoksa=&ICLW3oUX_dscs=&bKARedUmfgUaX=&SshXEQXkllXUf=&S48QaqZYXhVgd=&NaRo5eYjebdos=&dT_pZcXeh_prj=&qs6EosYaiUnrg=&Gh8q2NWkngUhp=&U4XZlbXbspefY=&HlokynUjhkiUs=&76lswSYUjZ_hq=&FXsgNwVjkfYqp=&DF6TVmXnb_agj=&LRtzFwYZb_Vgf=&YfAi26YnUfXab=&xwoTrbYigeUip=&MaDCysYjUsgsb=&rzCdJxYsUVnge=&xS5X5qZnmdfib=&ArDUFuUpoiqfU=&9pdZUuXV_jaVe=&YPXkW3UlesWkY=&Goj3_6UfVcnse=&7zORgtUXVcliZ=&Z6Cgk2YZUbemW=&NVx6EhUeWoYYk=&NsjIBfXoeXna_=&xtvTUFZeWnZUb=&TFALVbWn_jYfr=&AR4efzXUcfXrj=&hzJX5AUse__hg=&RLE2BpXYlhprn=&_u78YzViponWm=&CyRdf_ZWbafVg=&HzQ98iWjpWenh=&4TsQRIWnjraer=&HtfK5_ZejXbWc=&udrExfXpXegnV=&zL5VreYoXgcln=&XNfybaWrdnobZ=&jYPKnJWnbZUUo=&zc4xzEXol_bsm=&OJqZsJXmrmXYf=&AivRWQUUVnspm=&2y5bniYjofhZc=&oj3tIiYoriWeq=&peUW92XbYrkce=&9X2uq_Vndplfh=&Xjj5DoUXkibno=&vSrZKEXoXrair=&J_bxq5Woefhhb=&pZH4MxYpddj_g=&aAn4FAUVWhhfk=&oJCMkfVrdhsgn=&SKcMqxZZdXYjh=&mPMYkXWbVYbpr=&NicZzvYrWfggp=&iGpzPeUVseVnb=&fsAuQxVcgqmbn=&NN8QHMUXlUjWq=&PrMzLKZsdgoaV=&zFhwvnZXsn_jq=&7KliPMXjk_Yj_=&7CNMMWYXoWndl=&tPdZkkYegcZoi=&Dhx5ERXjjiWqs=&G9SMUaXXsgink=&VnuwQkW_gmXei=&Xb9micXkUrXpZ=&uGKWHcUrbhlhr=&byNYdsUYrfbjk=&w2zwW_UYZcfop=&gyVJwQYUZWjir=&rk2ewQZjUnhop=&yWFCktXqp_WkZ=&mlKcWgXlbbfXg=&EwjsT8VWhccas=&NkFySfVfoZljV=&oJB8KCXisdWWe=&VjMTWCYrfYZl_=&Pim4B3ZqcbocU=&zv7Hu7YZcXcjf=&hAaA6OZrWaffn=&fnaOa7Zorqp_i=&_PwheLUkUW_lh=&rtjrwdZphoVia=&5x_DZbYUgsgkV=&agabfIXhjfsnk=&9nljlUWWnsmq_=&C6G8FPU_YsbU_=&FaNpQPUdVrrgV=&SL6cmEZrgZike=&GcWMfbXpqoZUY=&ZGrjpJWdaXbUp=&Jo4hjdZaXqhaf=&x3uqr7VasohdY=&3o_WEIUjYZWeV=&uhzWvnXjd_jmr=&CVaUEqWaqZbsq=&MQTl6pUZqZ_rq=&lcpRFHUdoqVgW=&yVzjupVVYrhre=&FVfQ5XUXi_gWa=&eK8xlKWWoUgrp=&ZF36mhVmpeaVe=&WKbzTaUeonda_=&JG8uXBXpqphXe=&XyLPg8VckgmnZ=&eYqDkLXZVdnim=&ZVYvGhXeWXVVb=&kVxxzVXcbmdl_=&XNtfPLWhjXphU=&yJzo4zVpnVYds=&kCyr62WVaioqp=&43BA4WZUikZWU=&dVwhd3UYkma_p=&U3MEtGWbbkaXn=&eUaX4NUZhZnrV=&ZJf9OMZXmVkne=&Wh3vRrXZWfqgU=&usyFvsVUXreka=&vHioYGVrUmlks=&COzrGcUWnaYYo=&xVz7VuXfjodVY=&SePX2lZmqkbXq=&lYt32GXYgpWhV=&4mCARmVsgljbf=&_XjBHMUfmrUn_=&crBuMxYZiXcqe=&yU567BWli_mll=&Fy6HzTUimjaZc=&wn72O3Weds_Yg=&munLlXYrYohsf=&ll7oMWUoUUlWa=&LyAo4MVehaorY=&Nb7UmaXXf_Zgf=&HWospuWdUraUp=&bdSSJKXkj_bmp=&La9T5BViXggZl=&QgKZFkXsjogfc=&8QyzAOXgoUsgk=&QXg2OKYdpc_kr=&NMVoN8YrocgVX=&csYH6iXponY_i=&PB3teoWXpsW_c=&nZzEM8WhVaWgh=&f7NcHPZhsihcg=&OCkabSYoWshdc=&UVwigGUrqpejn=&3sot6kYdqmjrc=&X83kXrZksfebm=&_pLWV7XUnjbcq=&IDFMHCXcb_UlV=&iGURzlXdZdkZl=&qTeMAvVbfndoY=&9dkEIHZiYhkfW=&jgaLb3Wqde_jY=&CTzhmjWk_WZgo=&ItWI8jXXidorg=&YrOA6vVnUXikb=&cF2v6AZjfhcni=&n6cdLQYXpYWZs=&O75zIoYsc_drq=&L2RWCSVielkbf=&QnwhoAYiXWcms=&nsOI8tXofroZc=&2VCSxeYsUgqsi=&IOFQbxUUfibln=&HEhsexV_pmbWp=&CN3gECYlemiZc=&BVpg3kVpeZicf=&xcwOCpVWdbWrd=&6dsXoiXlsienZ=&G3u3jnWVjlVeX=&sEn3Y7UgiqYsc=&deF8miXiosdVp=&EBoryoZabbkkW=&KfsiAOUghcZXd=&I5RlbZVVZsqqq=&4IUCHAXjZ_qkg=&avQuhZWUobmen=&xpUEl6Yeprgqd=&z4Q5k7XYVb_as=&JvgdRWVYUmonb=&OZKkIfUkZlZeU=&UL7nNAYZqnnVa=&SOlM7NVjblbU_=&VYNYDoVgkoddh=&a8ShS3Wco_cnm=&SCe7KjYUckpra=&Md74a9ZlUZYVZ=&J2ZEOHVZgilee=&kADMsAUrqbseg=&zXAlKNWoZ_dZY=&COuVGSUikmjkj=&wvlN4oUYaWqXW=&fPXW5yWUfphpW=&eqwLcYUnUobjl=&XpeapbWjhkepa=&nWSzUgUZUWVr_=&IxddKSWfWnZsp=&6SdIx2WXXalWk=&ha6UaFYeiXnim=&znkhGnXYXsXi_=&VevlaeYViUVbX=&x3encOVsgnpjh=&TdmpyoUqgg_gg=&izsUFeYVZbpij=&nm7dSsYesajmc=&tmiLh4Wlomeqa=&Plc9ILYkpVnha=&XsYz9NWkWeroj=&zwsTKAXhopbpm=&Zn9DNlXYopf_r=&C4taFDXaWgiag=&xUik6JYqdoacr=&m_QtM6UhcqWln=&4skjOrWifXdhc=&xnRewnZaWncUj=&Ca5QlFWXidVbV=&5uJjDeVqinaoi=&74CO6uYesbcYs=&rnFKL4Ydsn_pZ=&KAM8qwZYieVlr=&zSiPqWWfmbljb=&QMNEgPXggWVVU=&YZXFwyZqobcVh=&HOZtOeWsmskai=&_Yu6g2UjeqZho=&n2saklWspkVsa=&InYzoUWlfrgjj=&qoo8xIZaZpe_i=&lnmuPaZknXbq_=&BhjXjOUmUYefp=&rHyKNlWfhrnfq=&OzrmqKVogieWg=&p8bo9WWndri_h=&pEWTH9YWYimsq=&8TV3K6UfaoniX=&IQgUfeVfsjrae=&joP8e6VoVmsZo=&oUR_ahZfocokp=&jm5QQcWrjcgVn=&VjyNixZrUdenb=&Tjty9cVaVidf_=&lVeRxJZbi_lXm=&tJCOuoVpqZoak=&3soITlZkjaZga=&D9_C5gUddklcr=&M6RlYEZlmXeop=&rUfmz2XoleUZq=&Hxy32YZWYofWo=&5P7pFIZUmeeZY=&zW5LHfUhmVchm=&2Yf_BGWmiUime=&dgGWMbYacWUZc=&vXOnhPXZabgdc=&oJHtUsXgrdml_=&ZGtshkYpWbffk=&kLdGRSXnjddcn=&jvRg87XrXjged=&nYjpVUYZebqlc=&3cATbJWrihenh=&mLlFFhXZjZVhY=&8TAVehWnhVVkh=&HbbNMZV_jdils=&jKAulFWWhnlil=&3xDKQVXosapbb=&PvPXZ9YplUW_o=&kRiX_hWWdqmpi=&lJnZYIYkcpk_g=&WlYFe9VlZsjZo=&i5oMjQUiXdkZZ=&YsDUSPV_s_lal=&mi2ZVQWbZmlYd=&W368zFVjpnjjV=&5eUi9SUedgeY_=&RzhrKqVWa__eW=&FT9ms4VYjXXVl=&FhMKKSZUcrnki=&LdWjqCXYqp_kc=&Qylo7kXfnbnZg=&gjVOqbUaghgbo=&WcroNJVpdaqqV=&O2PytMVfbVejh=&Vv3ewhYq_bUnq=&GH9T4tZVXrmnm=&VqyD4gUkrWrc_=&TANdzmYhakXgX=&LHw5iMZUUXrqU=&SqujgsWqqli_d=&RPjw2SZndVcV_=&UwfZV2XlbaXpW=&mnEUTvZpaqrcd=&RcFSLlXdUssVe=&mtfb_zWYcsmjg=&KEVWoUUaanjhr=&8H_D_hUkYkcnk=&cAzWQdUqq_lci=&WPu2tEWYoZmde=&JibfpaUqhlgcj=&CocbonU_lmcWc=&XCpmpMWnadssY=&8_43iSWUifbeh=&zGxvVsUpahUhW=&4Lvc5fYdnpkpb=&_cTXUrZWWqrgk=&HS27dRWdplsq_=&IRXHYhXfjYcUq=&Y8XftgXhsYhgo=&EopR29XhifWbe=&XDNnogVr_Vnlo=&TsGQCZVVpqWdh=&9cevo6VWkeYXV=&9ln8jiUahYZrk=&ROr8nYWcrWi_o=&IHyeBPVXkkVgf=&HP8iTNVbgbWpm=&7ywVAfXZkmmqh=&mfdwUpYVhoXZg=&6kjcrEZjjicel=&6UDcseVnbpUid=&g37wWIXpVUeYc=&LW26I7VWUlmfh=&3lTt6yZhpjZgk=&VJOcuYZnr_bUZ=&BnsTQ7XmUobmg=&dHIdaUYijqfpn=&EabSCiUZeYsbU=&YlzTkQXekfWZX=&dSHSLAXcadVef=&kq2XQuVfVssko=&afLykdUr_lcdp=&tcjNy4WgesaUZ=&zGZgBmYibscgd=&l3UaUJWXpfUUY=&Uje7JhZklmnVY=&s6AgdnWXmUoah=&rmf7LTWZknlnV=&7kbOy3ZsXVphd=&5YySLQVgsroYW=&HGOw4zWcfXkke=&7qbUIIUsYkmZd=&_UTHF8YhnXjhm=&bVuOpMWUXaWcX=&On5zr_Ugckm_W=&GJ3hcwYgWemsh=&chSzZYWjareVZ=&PHH6pyXlrlcdX=&6pi94kUocYioq=&zBgW7fUYkVf_i=&cOBPxDWUqmYXY=&wWZKc4UVqdsqn=&daoW5dYbWmfip=&yWyXwCZVhkbdd=&KPUkPfVckkXnn=&jlVmJOY_o_Ujc=&xskUtzWjpmVji=&47gUUKU_bbWma=&Vv64AhVcfjemX=&c4ynbKWdaoVao=&mm4n8qWecVUle=&eRAky2YpZmmjq=&A6UvSiYglblXV=&VOBMz8Udlssrq=&txxijqYeVbXcY=&COiQvZYUXsjdc=&dJuoucWipYZgp=&ktyQMNXih_Wer=&aMhIz6WYg_sbl=&TnYwXNViqVUfq=&cCeoHhZUXsXdf=&YqhQESUecjres=&nvGgaRXmciVWo=&kK56EpZeYpVVh=&AwD4s4YVnWUUg=&OQbPbmW_rVakk=&FLwDV5YdpWlWi=&A3xhwsZdelYbr=&yxIgXGYmX_bnm=&xpoyi5VhsVdib=&z_ppLvWUXrcnl=&zbA3uFWqVpZrq=&KZIb7hVYrWmVd=&pf5T4HZbXpbop=&hIkRgoWnhVfgp=&sTHGXaVWsdsjl=&swCt8DWYajpmc=&eCyo_aZXkXhWj=&N7mQ_QYgU_rdc=&rGMwb2UffZmUV=&vmofnIVspbspo=&DRlXcRXVkhsal=&S94IsfYaapehb=&eSGh9_Ulhenla=&juuha2XrcZpZd=&_ol3D2YXgpdrU=&lLHxWcYnlrlmr=&NsZoXNYVlW_gZ=&AhkBeHZssn__o=&ltcgPCVkWmenm=&bi5kOPVZagjUm=&LZRMmpWojWolh=&2Kj582ZYdlmoa=&QKbAJgWZlUkn_=&bxi2TaZepjnda=&NeaHzcZlejhVf=&xauoWOXckifog=&RNijpwXfUqZiW=&aYlQYYYssglXq=&g3GQX2WcappbW=&zMiwUIVqYdrjm=&RYyIO_WXlndoo=&gHPM2lYeXZih_=&wfFshdXYjaelq=&yLxNNSXho_rpf=&BoKw3HUbqkiag=&jG8oObYfmibW_=&gg8Af_WlesXbi=&C_NgeHVUUUejV=&jhPmZAYcccbei=&QOvSEpXjsdbUV=&L26ctvWpbqWss=&7lqBoaYpgmeak=&CVi2RIYgWXcjc=&jeRR3PZa_fqap=&oFDqF2UfnnkYi=&XDmidDXccolbo=&KREh4LUpVfold=&qQxO5RYlremsZ=&CCQDFsVUYi_Zd=&7czU9MVcsnrep=&qAGeEmXheZkoY=&wAFXtbVpalXfW=&_fm3dEVbbmbfc=&hcIpr4WeVgYVZ=&ERdjBCVn_dYdV=&bmQRbpXaiXYna=&mgoibtWsecdYo=&KxMoW9UjjUhil=&XJWZ9jUhdaaYh=&65PHxTZbpWlsc=&qlYzIjYXekZdf=&JIYObwWdaoqjX=&noYkV9ZqbckZW=&QkRFRqVgsqgVe=&l6SDzBUU_shaj=&uxiJlEUUeodUr=&oPRbbVUmjdfcn=&KBPXwuUbdmfgn=&4JCdQpWVpZWUW=&Q5UcGBYlYXYqq=&xNOISpWmjVjXW=&pBoTRzXplbkhd=&b7a_RrU_jeUif=&QVpH9DVjUnipV=&f4BHilWerXnYp=&Ca2QaEYhpkdrs=&DPM8MKYVrqkZZ=&kZlbyjYspVZXn=&bhVkzOWnYmiVb=&x5kIBWZUZYnqg=&3k9hI7UhYfidj=&YOJyd9YorroXs=&ekIUmfWYrsraW=&D_Q8YWVZcWWni=&n58uIsWrhXafX=&SmF7KUUfnmdd_=&5tmXqEUndodUm=&7RBTRoZYshqoV=&pe3Ye_YUgarbU=&zgDhOzUZkWYgU=&ioxgPTUqVqlUs=&ziKEqCYdkfXVY=&8sc3ioZaof_cm=&S6GbxKZfrepqk=&LkyXKwXhmbfVY=&IWCLqCUcklssr=&hS2ytTXYUrVWk=&4DGkq9VoijdkW=&RRtllhXbfdWYX=&ZFPqooUsrsnYq=&56rf_XW_ZhpYg=&K723waValqdgd=&eGDu9KYkUshdk=&4gFRY5VbUhcsd=&97XfCdZmWdosk=&iVAkxNVnkhifY=&PvQSXcVedlkjc=&MR2jQPZVVYbl_=&hjryo4Wrrlodr=&CT3nSkXmgeZja=&PlmkhOV_oesqX=&6vuBk2XafWUYl=&3Q8orbWsdUkkl=&oJFrXEXgropgq=&jfsixGXWWgrZr=&xHxDzGXepgiec=&5WSoScWUi_bjd=&sFTHLRXhfnind=&PDSiKCUoelroZ=&eMhXhZZqWmjah=&wcNu8hVkesknc=&j7uj3dZbhXgig=&nUURMUZUhlUaq=&zAD73XYgkklni=&EmfVjAZcglZhe=&UGXmlqYckseZm=&LvhhHwXll_jfV=&QipI4YUracrpm=&fcErtZVWfWncq=&gA5YMuUeXZVVr=&wXJDnnZY_sglm=&i6MdJXXUiUokq=&capF7fWdbcalV=&ePuDtjZomXlig=&GFU6PTVUjYj_a=&uOgjzxZYVXefW=&E4RZWfXYalkde=&5TkS5FVsgikag=&IF9Ta2Yhc_hio=&bD88PBVnkdbZW=&qhCgLEUnrVg_c=&cHDPn7WgUodke=&CgMmUAYdbnlbW=&MbFdsVWeqYhYW=&QgsjWGZXYsksW=&QEP79XWmaiWje=&A2T8dtWcWkpbq=&EwBBgrXbXgg_h=&9LSZQhZlekdlk=&lIEWQmXgXhlnf=&GCjdrPUgeaWpU=&QnH6stYngqVra=&gp4_5gZcnUlos=&EkeVupVgcgemi=&hYY7u9ZeXacWU=&4WSiR5Vesckdn=&2OmkSgWelkZrn=&9zgq3FVqpkWlc=&WK_CCZUYWWWaW=&VuLbBdX_Vkpmj=&MesyL_UlrYqnf=&Xn5RpfVWoenjV=&q5AdzVZlljU_W=&4fQQz5XkXneXc=&vIhentU_kdcVf=&wHlpleWolrcbe=&TQ2cMiVrVbfek=&nfifyZVbfVnig=&6FawusUZansda=&qNuRNGYfbmYnZ=&UxOjCHYdopjWV=&H4lOMyVdhjoaW=&V4e6LvYmjjrcX=&WYYDoSWanksml=&mcBD4lZ_kqe_o=&BJC3TwWk_lpkq=&G8g8UiYVga_ck=&M6ho76VdmbZfX=&i3alyoY_YmhbY=&gG8NXiUognjVn=&g2_fwWWmUmZqq=&HiMybhVrnblpa=&OT2boiZrjUhsW=&rJUGUsVgjdhpU=&69AilzXkdoeco=&isH_bOZq_nfdl=&ifSKjjXbgnWXa=&t5pZrYUWoppVU=&G5ZUyoWffoldi=&Hs8ZpGUpaqgVX=&sdmmJBXYnmbqr=&ttpevIXpklelb=&GDT3nhZqlqpc_=&o6hC4lWZUhbnV=&kFxFxnVg_rpan=&_wr_CSVf_WWVV=&s2GfntXoeoXrY=&a4GaykWjqreZb=&cmfhRQVsipmYU=&wDgcJzUr_iihY=&UQMZVdUnbfVld=&DjgHKeV_calcY=&5SZxmbVWomsaX=&lBoeAUUnaUZlY=&7LDxGjUhfjogU=&Ba4orWYgfjiac=&PljlGxWhmhbl_=&Zw79ezUZssocg=&MFidRnVokolrm=&wY85OjVpo_Xlr=&xoSBYGUdZhedj=&zNa6iWXlnngYW=&9FvP6RZbZmceZ=&aLaRxQZgqgWpk=&VUrkdTXislXdX=&mb35fuWk_ohZV=&kj2CtsUegZisV=&o6qtoZWoWrlXn=&E52N_xXgjaW_m=&ITsgRkZrbVmWh=&BawbaaZj_eVim=&JlITRcVoZV_We=&3zn4rsVnprqVg=&bOfWEjYXkXpf_=&mqfZ29Wqo_qm_=&zrrK2zWV_iYps=&cldjxYWYZsq_s=&y3pBX2ZnsrnrW=&hFMj4BYqmaZbW=&q2Oe_jXbVcXid=&AFvzJ_Xehddjg=&OtFKe9YYWckoh=&d6dKxGYqkreso=&86R2tPYo_qocp=&GLIKZRYmieahp=&huryxeZlUkhpk=&nEsSS4UYjkaYo=&Y8qnkBXpmZUkh=&LJ9d9jZpcVaWs=&ORsjsWYVreUUh=&9qGCShYXVVZiq=&S7zmotWgqYpca=&HZ7xayVaV_fUh=&3S6sYaXnYsXri=&wuPuKyXhfZsUq=&9eLPmfXYXbqnk=&SNLeqjZdaUcmo=&PaHqeNWiWhmre=&gznLRhYsUkVid=&NE3OkEUbXWaqc=&y98XGiUhjVphs=&6aFo52UUjmpWU=&HQEhErXgUYU_p=&p9iGGVYgaeaqr=&NxXiF3YhirhZl=&msHeyzYoXWVVs=&4PitGYUUXj_io=&n_Y6kyZeralrV=&T7apRfXj_Yqgb=&ThKcrcUoXcZik=&dMkg5BVmdbXjs=&2F3z7hYrsgsjj=&L_rf9mVdWfjYa=&bCixaeXnaYiUh=&XYVJFKWmnYZ_Z=&nTWBMfV_WsapX=&fjMAUMVjZ_VmZ=&PMdmtyWhglV_d=&B6tbXBUUiVYWq=&XPrmeJWseom_j=&nASJF_WWnfjkV=&HbAgzPWrfUqcl=&OVyvYDWiVfWVj=&rITLShXoVlapZ=&VkKCUiZaigYgn=&5N7JQUUfrhpWX=&d6uu4TZhYYrZb=&XHRBHYVUhY_kg=&jw_cM3WbWkjkq=&iFpjrDYpfUkYW=&MVO_L7Woe_chU=&IyOujxWeXs_W_=&7FBrUWXpYoWVh=&fopzEhXirmbUo=&yCbBXrY_lmsYk=&6cHLmmXpnrnZs=&kexMaZZgYXcVa=&2a7EP4Uakfpqc=&XPvslzZUUilrr=&bQJxddZZVUYUr=&Gi7esmVibWXVj=&XXG2rPXdaUehf=&7YPIx4UjamUZW=&koAAhhWjkoUmm=&V3wbBqVoqUafs=&tyJiRUYbrnlsm=&S7QgZiXfgW_mo=&WClfRMY__pkip=&8bY9l3VgcgaZY=&dvPVbDZlbUZlk=&5RFOeYVbhincV=&obVLpTYnWgsaZ=&p45ypOXdosbra=&vR838jXjfnZeh=&6sZK2bWYicoej=&TFgM5LWkrpkVf=&XypvhyUkfsZWr=&4LfHTlWsVoncV=&rEJYlmXrdqbce=&gNVeFNYgn_dpc=&Y6Ri_JVmeskfY=&OGAKJMXWbrbYe=&FAx_iYVcimshr=&BHipd5YUUragW=&Qb4VxbYZa_esd=&BQEKZBVekWkX_=&RpPWofYZUkWaW=&6JDsG3Zokgns_=&uIUjN8ZhbphWX=&PQwNzWV_b_sVX=&Tr7km_Vphcnhm=&8PHlPDVsebeZY=&AR7HbQWblanif=&NHYumrVVakaUs=&GOZJqqZZYhmma=&q2HI6oZpY_shf=&ZNT9ofXeakZcj=&DgGT6NYrbdqbn=&G2n7VEYdbVYsV=&al_vVAZlocaYe=&DNOvA5WZgVekW=&ylMiiyYkkla_j=&lbqb6rWcerkWb=&PQ3DyyUkih_mo=&n8NPfoYYq_WsY=&FqBNd6WoakdWX=&_lvmTsUiacdkZ=&hPeILVZsWUZhU=&4LG35_YaoeWgV=&hgvwpiUrrjYds=&XmnceeXZkpVaV=&HqducRYgrZb_V=&Xik_BWVanZmig=&QEGMbqYdUh__a=&5Bm_LeWXhVUlX=&JbBmBFYdjUYig=&uDirfmXXWekZV=&5_MLaSWZbrbbh=&MPzdE6WZcehqf=&Ta9LZyXlXogol=&qwQdeYYXXpWoV=&w4Plg_XUoZYsm=&U7R5R8WeYoUrf=&7LINyCUnYiaek=&s4ptk5YUqjdsm=&rXsLUeVmlmbYX=&xEeVPzVgWsrjg=&KxnDg2Wjhoro_=&YGFpGeUdcWYhb=&Cv8mroZriZXbr=&Mf7JYfWbrgcaq=&zUrQf7XWnjsVc=&6hYBExYqUrjre=&4sWwy6XopVrno=&xGMF2hUnr_Xms=&zJWTpFYdmiqob=&Tr_uDCX_lVaVs=&kY5xamXgWp_UU=&HsydJ9WekYdcZ=&iuTWLkZmdhpiX=&KaFNbHYerlkib=&c_tp9DXqcblpY=&iM7UN7ZacZeUs=&6_3htPUiXohsj=&hmM3eIUedqlmg=&srfvDxV_gqqed=&JxHLXmXadWhdY=&pxtVLYZrjkpVp=&prld6MVeaofUW=&e4WOreZlobZWV=&ISQL_aVgYUiej=&wsrLWTZqeadYU=&mvkOFqXffVYh_=&kcSXoZZc_neVk=&vvWGkoYoVpshs=&3VNnoUXWiXpab=&mODHQeXkerXgc=&XljZXFXbjmbYp=&7Sd3g6XcmaeZh=&deCZ2xUjfnbYl=&RFILbZUb__llV=&D_MTTjZUdp_Xr=&Uy94DNVUseqjm=&nCad9VWqVasno=&uictakXrfmdrX=&I7sYLoVdoUcXZ=&gUsrvYUspdhoc=&JPO2m7VqXYbls=&sGfEhFXkU_csX=&u5KL_KXYmU_hY=&tqHc4QZWWUbai=&kuuOMJWnncp_V=&FPTOOEZsW_i_l=&5ehAvoWgkVcma=&BmuH4zXasllma=&YszBxvZgZlV_b=&kM9zYXUXYaonf=&8PIuPWWfgZsqe=&GdE4bDWojrole=&2DOBXUYVcbolU=&nIiCNQUgeUlem=&ZoaQMWZWsbgkY=&NtzWjJVbcfcgp=&s3ry33ZjUobqZ=&oDTJgoZqfbp_o=&XsBGNJZYkekcg=&LsKzuxUbfdiZo=&aRszgmXshnlYf=&S8pyP4XonUaqZ=&t2gmagVnkbaYk=&ehkGhvWejXWZf=&DncwYwZqXsdim=&sG4lSjZkrqoa_=&tPNtc3V_qVUaf=&TvOtyzXriWkba=&FswkE8UnsdWde=&CIT8gmZX_mogn=&5zloTcVZrUqkr=&9qaPNjVrg_Wrl=&JZokMFWgcpdYq=&VjXRbGWhVkVpm=&DAHqOuWqnllhZ=&5qbUy5Vnsclhi=&wBcUj8UqbshpZ=&hvCP_qVWsWlpp=&JTGAjzUmdZbYs=&UomBWMVdmggcc=&t5lzgpYXZWjUY=&AvJnONVgpfame=&qSB96pWmYYaVX=&onz9bxVfpoejb=&7Q7QooWkZasWm=&pr6iSgWqpepWY=&b67zntXfbqdYi=&sjVJEVYsZocbd=&xtYRP9UbUasZX=&gEh7gLVjYrhsd=&CYRgw7WgWYWff=&ri2ULlWZbskjg=&LNZVBmYUofUno=&paht3XZgrY_Xi=&ZbKd6yXVrqdri=&6EbKMFY_lYsgr=&u97ttyZhoifpr=&jdDWuIUhnjgnq=&mts_BVUk_agoa=&jR9suQZ_pjZli=&AQaFZHVcZYicc=&FN5feVXfbnaol=&w25tYeWW_slfn=&XzrNk2UrsihXb=&UO8EEVYpbrUos=&CYkC8_WqamkWa=&98iqaVUampiea=&eSG_XYVWqmWjq=&P8tm5aUc_lmqf=&up8uMlYVrUYZr=&zVBFZcZanbnfV=&YkCW5gZs_sbda=&mT9pdsUmankWX=&BLf_KpVUlrhji=&nhYNknWXgsoWa=&Eg8sceYVkpWae=&oxkajnUUhkWdm=&W_AoqhWklaXg_=&UsyDUQYVpXhc_=&xKFiiXVlesqYk=&cbCY4DZY_dfnk=&3n9zcbVkXpneY=&lMiwixXmbjesc=&QXzpuwYYaUmYY=&FX9HfVUlhUaq_=&8YgTLhXdUrdoX=&zSAJLvVmnVc_a=&KZe4qXXhfaadm=&shfxpWWmeVZaV=&5PYpvJZXineki=&e4zMmkZnnfclo=&nHaLZEZdiZecc=&LILRIeUiXsm_Z=&5AgKUxUfrgqln=&JzvgqOXrlfqok=&wVBZLeUgoYqYn=&on5R8AVZhjoi_=&MvuTueWrmkieg=&BnPu34Zsoioo_=&M26ISFZYljfnj=&c8c5XPViqjfVU=&gg7lGfVXrrnnp=&Ewob2GUjddqXp=&2_atcVZZVhbZW=&OHJUT3WoZfaXX=&plgx7rXdsnXWh=&HOA6X4YmrhVfl=&gzobSoUYmsWWf=&ilbokuVsfsjVj=&RnrEkMXmbjYp_=&hx4K43Xdipldk=&Urf8LrZlqUWsa=&37XuqtVhaWjie=&Ay8bT8UrVoVqq=&lVwUWXVWhYmW_=&IChGSaUkpXmhZ=&HunGcEUqVXaYX=&Cl9EfjUcmZXaW=&nb23D3WpWrhis=&KHP8TIWlhhoke=&ShL52LXrpksbV=&oRpqxZYkiYUbo=&DBB7E6XkWkjWr=&dbCptyWrcYbsl=&TBpsBpZXVYiUf=&Hh5mQfWbabhWb=&U3iuDJYneXsfe=&uBW4KRYcskafr=&P7bhLpYhmYoVm=&vTxlmHZl_lhig=&GsI2xmVigVnph=&s29LcCUUgYbYU=&TQ65xxYkkpspj=&yWFUvDXgabbsV=&lOvITyXrWlUbq=&Vv9yKRYXkjkqe=&bYfhiaUhfrrXp=&qFuiLkXmpphp_=&EMdseXUjml_ha=&9t8D7zWXpsXo_=&fr2S6xZeVlqsl=&_bTbvJXZUdnsU=&s4c8ipYZpconj=&sf9f_ZWsZd_rn=&beigrVZrfl_ig=&64ffnjWphZZ_d=&4ffqw_XbpU_Xg=&USr9QXYWlogss=&UWLSfUZZglcdX=&pHDj7GYjrpks_=&c_hFcAXirfaUk=&zvWfUXXkUUble=&4Qi8TzVcnsqZg=&cqqc43ZoraVX_=&OoITOUZWiZVil=&DaokZQYceeVmk=&nrT5cOZaVkfXY=&ozB_NIYdb_gca=&n2mg75Xrkjh_f=&czeMXrWbYdgoq=&iWgdVKYV_oVYj=&OKmx9zWlcfjXh=&DCJ6wTYaUYaVc=&ezmQKGZenhYfa=&F2E7kZYreUggp=&rhiaTOUoYUWqs=&ZNmBFnZ_WjUiW=&4rsZtHXq_epqs=&fr3FpmYV_qZXc=&W2EkiTUlefXqW=&YOwlaOZWabYZr=&8bfcNDZiXfqbe=&I7UZHPXa_reeq=&tGeprUWbobVeh=&psN7PXUlUrhWq=&65om2PYhV_jcf=&cPiEOkZbfmich=&k2efz6YpfXfqr=&Fw6QbIYkYcdfk=&slNkwoUYYVehl=&MQ9V2AUgjrsUf=&MhyPdnXcfkcmp=&ZmwxbmYppYsqW=&oKLYWXYgnlcr_=&yBZHddWoUgWdh=&AtfqMPWokmosY=&6DIBnzYWfkeep=&a6lPiBUdnfVXU=&5ENH6oUV_Wb_s=&BLHmKpVcXopeg=&jdgkVHZWhmWYn=&Nwj97jX_nqgmU=&66UBb5ZsXcbmi=&ON_CxVVehslfo=&vrP9j4ZZkjdUY=&qoOKVBZcZ_bZf=&7iGN6YVhcoefU=&cPx8ybZclcZnd=&Jhs98yYjaqndV=&Li6ljvZfVVVYh=&Dn7WL7YXUi_fi=&koHIX7UUbWZkd=&Vq_79BXokfong=&JO8tCZYfgVqjg=&vB5ReLWdmnd_s=&_FJKSqXahqnko=&4PKnE7UhbdjbX=&9BlbSDXjqgUro=&VY3hI3UnojUsn=&R_IeQFWYbeaZV=&4pRlcWXXlfWho=&lUvRv5YgUUXWk=&SVeKcuXqeides=&5qqaZxYjlqeZo=&wQpYwUZYheUWY=&lXlvygVasdjfV=&RRzscnVencehe=&esn6UlXespnVY=&dGxuipYXWoq_f=&mY7wxhVnbaomk=&wFzQmdYbhmlf_=&3F8ZUYWXYXmms=&Z_DhEWUasXpka=&NbfZxfZdeilUg=&xCfutzVnXg_sU=&Uk_nroZgXYllj=&o3QgALYqfcXea=&eSYiHAZqVVbrX=&S3Kz5rYnVpbdW=&9xcfnpZZ_djoh=&ICP3TCXnfjhaY=&5BMib_ZmrglWs=&7QLQzwXee_lqb=&dclQy7ZnXegka=&eOttxDZbaaqdk=&MDkG2xWWgUscq=&GsrjkBUZhpbZZ=&x_9d58UrcmUYZ=&TCffRRZfklh_m=&BHNKiMUsbeg_Z=&wW57c5VUlaoeX=&XyZWr2WhrjjUl=&WmWDDtWmZlVZY=&y36z8CZdi_XZe=&hcZcnkUZeZkeo=&Nr_QfbVlenfch=&fXfrmGZblmVZ_=&9Lk9nAXhial_i=&NWntIwVgUhZab=&gv96LFVYhVoqs=&N7HVHBUdajVfs=&i2macKXnkfkdi=&PgXyI4UrXaqfX=&SNGrIIZmbnVaj=&7yN4WAZqYgqff=&wpxCVMYUlmrhh=&pDNFuPU_aggbl=&dXo7VLVirbpdc=&Unr3ZtZkkcYlj=&e2e9hvYnddjUi=&gBuonJUrcksif=&ZxoQ5NUqnYniU=&E3DcjGXq_Woio=&2sw9PBUbgYnaa=&9eQymUWdUlsdk=&ZtTfzDZZmjWcY=&aDQBciVqgshUh=&Dk2IOjXknlVlZ=&9HpeC7Yelse__=&Im29r_WdYWXqV=&ZDuIzPZblgpYZ=&bp8qluXho_VeY=&CnAGiqY_pWiri=&zlcCcOUYdalmZ=&uNYLBUWaaZlaq=&FdVurxVZ_skcm=&Znb57oVWdqqWm=&RJG8UHZWe_oge=&Gk2LavXsUVedh=&uAKtClYgXbVmg=&wnkZrfZegnlsm=&iVFU3QZo_lrko=&2RGqP9ZpYbdgo=&sJPZcaVmprsrq=&KdK8tkVdXm_lg=&XUcQp9WXfligs=&uhKxpIUcjUfag=&cUqGePXUrm_fl=&M3PcchUZpnbib=&9TVzU7VY_Yqfm=&Z6vGB9XWogrkn=&lp8GgLZVsngUW=&WzbV32ZsfedqU=&gtIQeJUgjpqsn=&7g4DAAVkhriZj=&xw3afsWcX_Vsd=&_e_tfHZZXdmbX=&erxky9ZpelghX=&GHoSSNZWsmgZd=&Qr3DFEYZpaWqW=&MnGNi9Uicbegg=&vtUds5WZokdko=&zoM74GXZVW_Vf=&AtMkQOYfsdsqe=&MsbhOZZdssWgk=&BNzvIpXee_Uql=&Y2TL6GYifheV_=&_pjhFZYqqYYjn=&W2WZQvYqVgcfi=&2IjFy6XVncrep=&iObfOFUlmnadV=&ZASJx6Xgijbnr=&RycNJpWamehco=&4IrVX3Zjj_mfl=&mvjL2qXjkUnfX=&go6BnGXXhjZiX=&VginLkUlimnjf=&WtB8GrZ_ckhol=&Nw4nF2WkWakok=&FeBygsWWXbbsW=&ajqnMWXaaasff=&spW2EvUpbWgiU=&OEsRKgXpsfdeW=&TTA7QqUVcaksW=&rBJIpyYm_Xasq=&BmeJM7XqmkUdZ=&N5TXw3UjX_Xdi=&uo44EYWkmWgWV=&5YZHZIYnjplYc=&OZZL6rUjUkbie=&yeYh3ZUWiWbZd=&_IelWqUdfUlUl=&bqf9mtZronUUZ=&4malrqXkscZms=&saObndZVYeVcf=&hYKsFwUbiccYa=&ChSp6bUegYUcX=&4XFLJrVrkXZrm=&mbcmgSWVibipd=&KSVsYEUoggWUc=&n5MJGcUaUme_X=&w_6jvyZbpsmXo=&L6dVbtVlekjUo=&CbT6DZUrU_Ylk=&tPWu25XZlapca=&KtzFn4Ychnhhe=&v5RTS4Vbik_hs=&SmVyW4V_VUgpe=&9jysWWXiYfVkX=&ZPSPPZZcVYhmh=&7yKDDOYrZclZp=&lRHPqQZsVcpig=&XeBkdgXUdjYYV=&x7Xy2cWsmWspn=&PW4GxFXpWWZpp=&n_x8zCWWnqqbh=&kfQ2SnWkilWeV=&efPq4TUgclscg=&jk6WIAXoXsjrn=&DyFIHiZjpYY_r=&G2MV5AV_dplor=&4h_5xVZWjfYjl=&8XIWeLZpmhhsk=&KrGO7WXbfnapj=&FYdd9_Xqc_YjY=&LddBIUZbiseYb=&Q8BBGrYhXcXYg=&glpKGlYlrcZaj=&OegFNkYbZheZX=&fUd5JPUsrYcoq=&TTbAwyUWqUjmd=&Lvvf8NWZZgVnr=&vklVvaZaUjoVg=&rGuddQVZoYYgg=&emRl6oVrrsWje=&GgkBXJVqgsnnj=&7FdDFZVpkopfq=&GLaZgPYoYjVXj=&aufaEeZcXsgdj=&5ibHSpUbrUeWs=&3GxAppZYscpqg=&d9w4nnXnjjcWV=&fiMfISWnqibjW=&YHuUg5WYonmfq=&9LMcDbZX_ekmg=&iOsg5iZisdo_X=&k6NaymVbregdh=&4PlBVoVkVZphV=&tS69qgVYqmklr=&__TDf7VjXicqn=&kuHO5uZocaYmr=&xqJFhjWl__deg=&gJEJypVpebZoe=&2mbWzfYci_skn=&BkSMx7WmXgfje=&4oiRcRUifrorp=&S2e5_5ZinqUUq=&iVZ3fGWhZZolo=&5PpmGdVVWskgg=&XVvC9WVqdseiq=&tVViS8UpWokok=&yrwl4SXUbcYVb=&sNb5vhVZormZn=&6S3nNKXqUcUqr=&dHQI6bXankknk=&G_bT5lZiflcan=&Lq8hUnYj_kbmp=&qdZJXTWioosrj=&WC8MSTWmaqUbo=&FU6mPYZocpnhe=&J6SE6RWsdXmXo=&UewM4lYmkcjrl=&plHYJbXssemYX=&LAhsUjXUWWmgf=&VYhybhUiomdnp=&6Az_WpZeWYmcf=&mrihEAZqYcmiW=&ssI9DsVjnXgZj=&WDWaUhUlfdfsf=&eoZiedXonfocU=&BBVsYpXUlXnYb=&wtrVLoZYospar=&B69eDDZr_WVaU=&ftq92cUbUmnqi=&fFxgjLVr_apVo=&MoqmVhYsbonWZ=&jcVRbRXrdisVa=&8rY6ZXZbboeqp=&5zkF2rWjfZppa=&xlxweBUo_VUqW=&DFhXEBZkrZhqk=&vL96wsVlU_aoW=&zFtfdbWpfdkWY=&oDZKkFUcsmWYe=&9dy3AJUXcdYl_=&PmzMBLWhZbrgb=&5Lm_RIUXeqjrq=&n7K3qjYinffkq=&DkzWDvZUjrVhe=&wXd82dUrpWmkc=&PvmNecV_UrZdo=&NGkDMDXfZZcdr=&gqhkb_Wogbfar=&kyEDsMXZVksin=&AhhaotXifhlfl=&rSIu59ZpVadjr=&j64PqXXeerosg=&HWwMPjZaodUbb=&OJuZ6NUmqZrUV=&B3UoFzWVXgqYo=&LwUSWFUZVjelr=&pPQ5JaZlnp_oY=&jVD_INVnVXYah=&_TvbktXVXdbkW=&vyTRLgVkn_bYs=&gFei4nUbjikld=&n3lQTwXmpUdnk=&M4lyucVhZhVek=&imirwbZnrcXgf=&9x2NqvVbiVogk=&XQ23ZeWljeZYn=&SwRCpzYfl_aZr=&PccJRaVbUiemk=&Nkv9FzY_Uqpdd=&jqGjVzYefiWqq=&ntaK7yYesb_ai=&VTotmHWqeUcpo=&tpvdfYUmfkmip=&lcucw2WeeWXpr=&kQU3LUZaVcobn=&j3ekWSXXgiemo=&wdKeZHXVrZbcV=&rCivarWd_gU_h=&v5y_HtWdoojsa=&w7GxBNXXsedsX=&VgsOenZrUoqgX=&dk8ZJhYhWYZnf=&SJKKJpXpYjldX=&98DRkwYoiejXs=&6yRDbgXkYseWs=&pHQSZYXmkZrZ_=&3vAHZgVkdmUYs=&KDAojDZpokpYV=&pIYHS3ZZobmks=&jbLNXFZeYfale=&tKfhvHVqbghUr=&RnBKHvWr_aiVW=&sIxwLcYkZYmeo=&PoKEIjZqdsela=&WvrjopZXjsWik=&szHDXlW_fZWi_=&7Mo5KzZpccjgX=&E7suKJYaseXsb=&QHHaLeXmZbbrp=&pSumCtZZgUbUg=&hBSthJXgehlqn=&QLjFKLVnYbkoW=&kFPeyLVXa_ioc=&w3Mh46VpnYXVV=&TBO2JTUUZaapk=&HT7EmqWWdifja=&SarocfXYpWeoZ=&SSK_bKWjqUqnk=&iDjVjMXUraXog=&snTwKRV_jYodl=&5L6EWFZeinqWe=&9e73v5UsleZdb=&FLkC4ZWhgbjpp=&H2Ac2JYokdfoV=&I7UtMwZihYXmf=&bgoDrrXcgnobY=&jYqxQHZXaeUma=&7i5BBUYdcYihl=&yCqTBQZcepUVk=&sDVx7mZWeXnmr=&tn5vSbUsjicdb=&B4GVWsVogmqch=&4J_cEUUUYZgom=&cWasAEZmoispn=&l3aI22VmkUffj=&3tY9KtZkhqgsj=&rFnq4xYbdYnrW=&TG5_NSZbYsqmZ=&XH5n7OYnZmrfW=&ERQapGXhblmoj=&a3PeNQYmqWiod=&bY6FJaWZUVZfh=&vvKV4HViogsn_=&8cUxvaZWjbkgd=&fDDnV3XiZdcXo=&sAMyH2Wd_jbVj=&M2rGapYcnqdXd=&VnSkPeXdfdiee=&C9yCy7UVVeUYl=&quwkGEWsfoUaa=&GaoH8VUqclmlo=&FCU8C8VV_fbVj=&ywN6pNZcVWrWm=&tfC9sgYgaWXVX=&8F8bmfYjUYeUp=&nFmN4WYqYcblb=&U4OBQIXVlmoVj=&H5cWtHZjfjlmd=&3ZhdZjWmomVlW=&RWwngoYi_b_se=&eu4zkYW_qofsq=&xCvLEXVUccpmj=&NwYx8zVpfrrXp=&bEkqiFZlkh_hX=&8ZW6egWicrYbg=&_fCZVOWjpUdrW=&fUZulZZnZrlUg=&ZISWRjUUskcVp=&6vyvPrWVgqloe=&wT3duDYpokWpc=&OqMkbxWceccri=&vvmpcMWcg_acm=&WmgDXXZWWjakg=&2NEJjgYm_rXel=&EcgXuEYgWYsYo=&vLEBjWXsXqcYd=&2Sn3yPWnnkinp=&ddYctqVrncndh=&qZfpZSYYrppWk=&UZdl8CUejjXhr=&jBqJKRZXsVc_o=&PheDvrYhfrfgi=&4zDXsHVpmlcqp=&uaW3yNYdfnlZX=&DC8Xs8Wrcqemo=&slN9clWhWobhV=&gG7bkmZWUrcig=&2UhefHWislYgU=&ryfeBMYUZaYqf=&cIG7G5YqXUqbd=&b8PPavYdmVWsU=&WVIrjzZZdpsXc=&nADRv4Zihmqqm=&44oAekViUbafW=&veKPjuZWVehqn=&FpFiTSYsXslZi=&EkvKymYVsUrcY=&PhKRP3VanjgYU=&3YBhC9UchgiWW=&t9qL3nXXcajgp=&MafVISYWrgrfo=&_HHFJNYnUjqom=&qnSXmXZjkefnY=&AntaPfZrpnfpj=&E7jbkAVqeokpd=&DfsIARYije_iX=&Ik7NKxZZeldcf=&CRAhjFUfsZhVr=&9GKY9SVm_rVjn=&tRrsxNUfdojij=&jRmtLWVVnmqjl=&6W5n8SYqnfhWn=&5yNhgXYZgYiXk=&2ObMIjUgjVkoe=&KQioHmWslsqjg=&3RTcFsVhgqZUl=&pTfIgJVddreUp=&XLW5UEZjYWhdf=&tzH6eVVdafqpq=&4Ye8fxXlkgeWf=&Y7WAjZXfnXbmU=&M5IklnXkaqebf=&wKNCO4WlejZrZ=&tmJL2bZomWbce=&w7k5PHYjaU_VX=&SbBJqRYYYaeXm=&JTJSQ4UgorqVj=&Y2Son3YU_arrr=&62_gp5ZbabpVr=&wTclIOW_XbbXn=&QKRqaWZbmncZi=&lv2fVJWWleadh=&ElvhbCWbUrakf=&xXl466XmXlWma=&4mxD3aWhprX_g=&fxQsfUXobgfeX=&tFlyCFUpfmfaY=&daE_fXUriegsh=&EydoVvZgYUqfW=&4ibWwyZo_hosh=&ryLFWfVWhrrWZ=&ZlpgGuXeXXUXa=&Gx6X5SVhhilse=&Q6fmUJUmqoZne=&7YXPIDWgmjeWn=&gkj8uDZqqknYW=&lrBrk8YedkWjc=&Htv7kqViiZUlh=&suMjC4Vjgsnfb=&6zhCbRWUicUZf=&fMXCXDYUYomqn=&n3ROs9YrVplir=&FWGzt_WloUccd=&o9rHl9Ysgbalg=&fFLjMjXhrsach=&hF69R8YVccokZ=&KblvEYWgaoWka=&qKZUIaZprYZZd=&CxI3B8XhYcghj=&rr2k5gWg_cb_V=&BalbWZUsms_ri=&neCIdNUiUasgU=&KG6NfIVcihqlX=&ghzOsiZoXZYim=&cMK_TcUs_kfal=&VCA8ZGWgUYmdV=&9ImLwSUYgggik=&MZ3AFsWchWWgm=&aj4TUPZmnWVhl=&iboPlvXhUhakk=&4N_F2zWhhl_rk=&SmsOd_WcXZlZg=&PiqO6eXnrcghh=&4wBUEmZdbYci_=&MXh9HwWpiohgc=&OI4f4cZlWhXii=&CLJubXYmcpYWc=&zqLlQQXgrfqbe=&F2Y3WeVgZdUpd=&PIKLBoXbiYndq=&ThjG5kYfq_Ymp=&stU9J6XUVUcVZ=&cyLkaZYjemUXd=&dAYgzgVWcjWnq=&bNfqTAUXVpamg=&8d74YUYreohsm=&29ZhY2UhhseUV=&T2v9DiZZsVrn_=&5oQJMSZdYebqX=&84gxi7Wksqeqs=&SMG7ngYch_pVd=&_nI4LTYXs_ZWd=&rAN4o4VdbUesc=&iauf7sVUVeebj=&H3muvvYjbZlbl=&Mj7TsxW_ZnlZc=&WKQVpRVWafVsX=&Bnjr4vWsopZXk=&vm7hkmUsgZm_g=&9Q6lD5YhYgpqW=&umaaQ3YlZkXee=&W5jT4RYo_gqUb=&3OGwJKXrkjqds=&5TYThSUeqUjaj=&oBCPZkWpkUebk=&Jo3hd8YrlkW_h=&oGi9epY_YnbsY=&RLoFa6XdUUpso=&bpnNqyZqkcoYi=&GNbVWQZUfsWll=&XWMWA3Z_bWsea=&5dbxKmVaeUYUX=&_ili6SVVpraih=&hySVubWZddnjZ=&VLn5FgWijsYsm=&fvuJhoVhVajmf=&ze8s73Vajgomb=&kC9QyWVejfbrc=&jYutu2XUedjpg=&YFQzeaWYYbYlj=&BHQ__mUosdl_Z=&_YMOI5XbdUlar=&nh5OUmWl_Ueam=&XFFQYbWXnViVr=&SiGQVsVcb_nYl=&jToAqzYsgcXVs=&cRaPwNXsXahnY=&fmF5YTXUbUrir=&wzENrsZYWfqcg=&v_z6K6VWU_Yie=&U7GzM_Zeriglh=&P5nOEwUe_ps__=&ubXM9qVmrVUic=&nDekJFZohU_cX=&yaEuBEUrnfXas=&FhSSQ5WrjYajs=&RgIEfOYcfnZlX=&guuTW_VXZidnj=&I675iQYjbjcjm=&Z5GospZdkUqqn=&OvXhlmWaeWncc=&MNar4LWrbe_be=&FYkEIKUn_Zjna=&Z7DzzhWdkUrZZ=&_DYzT7ZfU_omW=&jw4_32XnjZ_me=&JDIOJyZYXiXYZ=&Ixh7pcVWUalmY=&KwdyGKZpimajb=&DPmnDRZZhoUah=&icdzryVifgXXe=&3XXNx_UYUqZoq=&8R7QB7VooaVXp=&adlyQnXXkWrcd=&yz4TO9ZhmjpXX=&68AyXzZa_jdVZ=&SUZJLkWlhsmmk=&FHuLsKYYnqVld=&dPlgI2WrXWasV=&PevFnyZViXddU=&Yvo9sRWjYWUlh=&mrZqycWYeelaW=&rvieawUoajiis=&q9XuasZkfpgmr=&4b8akIXenZmXs=&gz3EGAZpkYogU=&UPkJ2sXmaXoWi=&s8dfZTVekUpjn=&ZdBWHRWrrmmbn=&IuJkXHYnXkqdr=&NEaSbSZWZ_Zea=&bWFJqpXbcYeiV=&gTWgXtWXeloVb=&JQpkVsXhqinUh=&TGKtDmWfYrkWs=&hBB5QVUrsniid=&tFtGToXjVskca=&6XZs3HZXgY_ql=&BzFfU9VaXjsee=&QQ3Ge9Yadmqgi=&cbPCwmZXUYrcU=&8IhCXxVqolaVs=&veT9rnYjWdsbW=&VldOivVYiejfc=&VnX7LZVVdaiqd=&FjDWDqXXXfdqY=&lyeXOCYeUYlZl=&RHPgE5Yoajamb=&UBar4gWkXYgWp=&_bNqb2Ukk_oYd=&wXaST4YilqrjZ=&WP5sLtXfkdVcm=&xfp9vYYmsjisi=&B34oinVUorlkl=&GExPsmXZobdgb=&FQtNjsVZasXbh=&ztBCXmZkWYaUq=&U6QfQiU_gZlsl=&UwPuyNZjYsgpi=&5alDqgWrjVWcg=&XYBwK5VcZmhas=&UEKSriZcYjpob=&VJQwYnXZUfh_s=&ZcSqyKVrrqWh_=&_YPDSDWndgWie=&C5maBrVppdXdj=&AX8QmKVVmlp_V=&yHbB6rWXsa_cX=&yVxOHLXqrfhqh=&vupS4tYZjX__k=&tinnSkZklYiea=&8yVoj9WmipqgV=&26WpcXZbXnpWq=&Sh3_V8WiUjV_m=&ZS3Al2YkcpUfW=&Vs_LO4XWkXppU=&o9DIIGWVWjqmU=&jKD6xLWUnifVj=&brg2QHVmkVWcZ=&brsMsaXnjYVab=&fnAxCGWncriXr=&cTYPkeYsggqin=&iWWYnNWeXeZZe=&vEFcOrXXYhgar=&uN7QMiUVrqmZV=&SPCivhVs_kWlm=&oDcvQtZqnmqYc=&jvOiyPYYssg_o=&oJkt9rYpogimj=&NvoPhWUrfZ_jn=&ipyrpjWskhppm=&BuEtc7Vlccklg=&nKrLtDWcXZrkh=&rYRHdHWWnYdeg=&7ZbWOwYWbpkhc=&5eGxf5ZWcmaeU=&IcBAQHVfWVk_m=&3PAXpZXjiYdsi=&3QqNHbV_rgUqi=&vYta2jZscVXXn=&SeMOOAZkmWnlY=&FOOTYzZ_afqpr=&iPAVwlUUdpVhi=&i2TYVEYdc__ji=&jKpNcwXWsonqk=&emmmyxVanpdmW=&qSa_shUrrgfsn=&jA73CDUamffmZ=&k75MBMXfYYhVe=&GwcFwSZeraefd=&Mv9cTTUspkbei=&yGDMUYWrmdUpb=&zTfLeRZVaedad=&RgouBIVcdi_ap=&5FQsZpYfoZn_l=&_joQKTXlkWqnm=&rJhAewUfbcijp=&H4u2Z3XUkodle=&Z8lnfzYhWXiZo=&VivoNFWXjlUco=&7RRemgUkWXbpg=&CJ3quXZssgf_h=&mdXJudUlXUrZn=&2FEaa8Wkpd_gq=&JQrAXhYjs_VrY=&UCj9tUYcmoikf=&ZAiqlrVhcqhX_=&sAhlXLVrVWrlW=&2sg7XHVYeeVai=&OYB_fGXYUcfkV=&OjzpsRVjfd_sp=&ZccE48Xisklhn=&af6OtfZVnipbs=&8Hh5rfUZXokhd=&odI3bGXfYpmWm=&VmjHi6VmYeksg=&rQdLCcWhcUZak=&RHea6OXYkekXm=&duFVpgXdksgon=&2q5vZgWear_nU=&pwWhYeWisYgUd=&8lVFdtXUsnfoo=&BtdRP9YoUsVjk=&dJfQivZeiaoVb=&U64K29ZdWahdi=&vlhaTrXasnjqr=&NmmUMKVlsVrrX=&z6TbJXXUbXeVV=&TvOlmVUVbid_e=&J7Yje_VbV_djm=&fXvWnXZ_sYloe=&dlzwZ3Udecn_V=&iUVcCTUbbcdq_=&TKt7BQVafeV_V=&PSvvrzZXohcpi=&DdCb7eUnZgaYe=&Ay4vMTUhYbcXl=&iZLK4xXfefYfj=&VIbQa2XkhaWoq=&F3D8YFUmZraXo=&obSSHhUednsnb=&T2f84EVUZgVgX=&Wt9RU5Unjpfen=&KpTCBKZgoq_ho=&Sz5NEvXhoakeg=&_6oUUBUZbZsq_=&YLaM_oX_daas_=&y3eK_lWWUY_mY=&CZLFgLZr_ipsU=&8CeHPyXmXVgYV=&wr4SZtYak_hce=&Lavkv6ZdkYmWf=&4IvNp7Yi__Zgk=&s8HYdhUdZaWsf=&GVTzqEVqgpZXe=&vjZn_2Z_dW_es=&x8TtneZbirdca=&HZlzZRWWpXf_s=&R9qwTVYbX_ijZ=&IWhoJIVgqkibr=&AW6pOvXieoXZn=&IPRWSPUqYemec=&bNtScSWdVeoln=&pfHnRxVsW_o_q=&6WVoRTVsVkhVV=&cPQpucVaYoWig=&MHHVBOXdeVqhd=&68Id2cYWcpVb_=&omuyOzVolehgX=&zNgPyUUXefZeb=&ouG49oYgWghmf=&CoBf4OUrkp_Ya=&YQdXvUWfXrgdk=&JoVITJZoqshh_=&DVJID2WgokpWl=&dMkgjTVmdanap=&WQ72UuYgpdZqh=&EDuSUpWooXagY=&cZUCDHYefrUrX=&OA3oA7XgqbXfl=&EQ4oGNZlphjYa=&SpDye4WhhZYaf=&kCaYctVqUsYWr=&dPGUhdZYVeXhn=&UrrFmoYhmcjbj=&l5lvcQYqXgbnn=&R5xpAuZZZVlaZ=&cGFP44VUar_aZ=&bh3HUGUVklcoU=&GlGrmGWXbiqpk=&PaxAlSVjfalWU=&GpJHLAUrdqiqh=&9dhZslYfUiirZ=&UQQ4isYqVeerW=&SO2OUKUWfVgXl=&wjkxBiZprfhcf=&Hjhal6U_hsVXV=&dGaRmiZfUmsgb=&6m7WY3UWYafp_=&XKScPcVkihbVX=&TiPvHDYpbsdnc=&UcSgxQXhmYklr=&wb_FiRY_faWgf=&PFo7PXUhUVdo_=&HU6i7GYgUZnfU=&Ayx9jPWsXdcpn=&C5UuutYbgboqq=&FRQlZaWcpogjV=&IMtjCYYmVlZUo=&vEYiUJXUYjoiV=&GcMRs_WgpaWhY=&2fjbpTUaXcnl_=&7KBdq_WiWceXo=&ikA45pVYlcZgq=&6xA2sSUhjdkgV=&BsdJQUXdcnojg=&oWaeC4ZakdecU=&S96yArUYkUgVq=&ZMSanLVcWqZpV=&wLqx3kWcXrfbp=&Zyf9o5YXjYser=&B4PszTXmjnZYa=&_Mw6VFZZk_jgh=&ktF8sdViVfiZZ=&qj8oszXmaogbo=&RhUM7CVmggkdd=&CaRVHOYnir__a=&hueiGBWpgZcUd=&BKreXkUZdhqrs=&WfoG5NZZgkfsk=&DvSLL6VWeemil=&VDN3JhWob_jUk=&yTDQMAXlbrVUY=&zNHv97Ysplrig=&3OD3ofZYsZVUa=&khzF7fZUbjiYe=&QnkvCYVfmaWmr=&qgcZ5XWrYdWng=&af8NDPWkfaqZY=&3dPZdhXoraUpZ=&sKokzcYhjndoU=&dyjFNRZfYomos=&kCNYpPWecbmpm=&ciD5EwUa_oVmV=&ED4Xp5YdbXW_k=&gnUUwBVgdUldf=&IDRMDoUroqhWi=&IYZjopYdmkkYr=&z3EqMaXfXYcqp=&WoCIfNUdddb_l=&lhGLkAYemUpUj=&P56_9AV_Vdgff=&4r4eRUVmfpcZd=&kdNRjsW_fbpqe=&fw4SToUdfWsgY=&96M4JkWXpaZqh=&aoar7uWrbdiXc=&YETb8FXYUaYZp=&u_uVazZlafUdd=&7gpJMZXXXilWm=&G9HTaIUkseqne=&jDH9rEXi__fVY=&uOygxTVWUrYhk=&Ul3QFaWioiogn=&fB7YvLXfebWce=&EG7g8tXYeUebV=&QyKuVaVddsqbe=&SRZWztYi_ZicU=&WxBTSKZdqcZsZ=&Wl8De7V_ZrWpg=&dOHDKQVYcrebV=&vZ6HefVUZjn_q=&ATpyXeZoiaWqj=&FdK6nnUhnWYqW=&5IHs5bZnUseZm=&jFkWTKXYmfhnY=&tVRWjmYYcYf_s=&ytE5HCUZafirs=&Rw8mnuUeXnkka=&H_zddIYnUbcsr=&7pfBUSUYXfUoY=&Kioev5UYliVkc=&ipTJfoU_flpkk=&N3F6vvUorjchf=&h_EwAOXbgXqmh=&CuyDUQWiagoqm=&5xLanLWimrmXr=&JUoA28Uaecrpe=&NLjpWqZcWlaeZ=&l_pkrPXXVZhkm=&JIvwwjWomssVn=&mHGM9hUkWkj_i=&SDvYf5Vhdd_o_=&iGMKSxXknYXgh=&cQTVPwXWehpfi=&tOEvfDYnsVbke=&NhitwpYcafnVo=&qMEQRhZdgoesX=&DBqRZpYj_mfjr=&FO8_HOV_hVZsa=&ybUbzuUaadqhq=&wOXQXnWfUZZmh=&O68ePAYioqgak=&ItgldrVUeghZk=&FXuP8ZXXmjdeg=&YqFiZSXsVlcWs=&DFnTKxUgr_Yrg=&bbhQykVesqffb=&oeWxmbVplrhge=&buhKtBYpXWhbn=&kfZaBBZkXUofa=&CNpIUSVmsckYq=&YIkq_4WinaraY=&A653yUWqlUdem=&bEwEEZYeUbdaV=&LMFSBqXfYhbse=&fpygAKXbdrprV=&Y98PpHZqgsZbU=&GVLjaLXgjXZXm=&6pG2UCXhbslbd=&prV2z_UibsUWd=&9AF_ZcUhUon_b=&i2EJCfWnZWaXV=&JJxKG5X_mq_rY=&nyoqxfWZalnod=&zmBy3VXUfZ_ng=&omh5OEViYs_pY=&c8BYPqWWaUZkl=&7TDqBZYhkggZZ=&hOpszPWnWeemg=&uZ8pSVXdhYdXk=&Ct94JNXZnrmjm=&WzUcEwYj_reok=&bjpulMXlcbomY=&bKIhZZYfqrcZg=&6B4l_7YbYcppi=&4_sRYVYjg__jU=&iYCdkLZenWaqp=&Oh7ivJWlWclXf=&AMdpKXXnsnjio=&ZYl4vVXYbbllb=&PWKlgcZmZhWfn=&fFFY6NUkYapZm=&PIrqpSWYYarfs=&kGQHTPUcegWgi=&cBsrRWUmmnrfj=&DvJQfOW_ghdop=&Uxn_GrZUrf_oX=&dE4xnBVlickg_=&KzoLx8UUZsapn=&fsgPI9XbXWgWY=&ciRAnmXpXbZsi=&52PWnOXZZdedj=&m8ZUy2Xn_Xdjn=&SX2ZixVrrkinp=&JXQPqbWpimYqm=&aqIGU2VjqsihZ=&A3MpveXkon_gX=&bNgKcwZ_Wrdjd=&RTbVTYUcqcmai=&xmSgWeYVpie_a=&992ch9ZaffkXp=&HUioEIXWnrfcq=&L8FaoNUjoYjdY=&fbe7tWUlscZnf=&DxjL5HXpdXcbn=&wLHzpkZaa_mdX=&39pFUUYiaY_rq=&l7GqmiXcZeclj=&XKsm4uZacdjlr=&M6WCFKYkgkXeW=&mchtO3X_kqedl=&GjPNmWZb_lhm_=&UVxrSHZoXkVWs=&lft7R2WWhs_UX=&g8p8jrYkYZYnc=&mrNwUcWiYZehl=&9aHZYmVbZcWag=&_cyD5xXbipcmg=&2M4VClUWXlccV=&HKrZ3xUcgsUbq=&rTNP6VVY_qchX=&XvSHDcXmUjjnZ=&tEo4f3XhhrYig=&Vyv3T4ZVYfVhU=&dqxQwTZljmWid=&iXB_DhXiXXofr=&vtqqcMVadbZYj=&jsbVLoWdUskWq=&x2mjoZUqjWcVX=&33SBEQXccpmjj=&SA9ALRUcjgW_i=&g_ixKOYhkkcsd=&Cj4V3lWlghbYi=&dRmnKiXqcWbqc=&duHjqpVZnmpnm=&cgmWRqXihZkqp=&iUEquCWjhVlaV=&tZtaPAVgkZ_hg=&qiVA8XZrWhehi=&wbFlh6ZafjWUb=&W85uPCZahigYh=&VM9mMRVnbprge=&I8mbPwXUXmYig=&QrPY82XlkVnds=&ywk7HiWdcfadX=&PFAUpsXjhfZjg=&XJPg4NZXWgejp=&gCxmADYUXlkZm=&ugjSjWUrogqek=&fWV6jcUbjbZhW=&XaaoNVWgcnVhf=&fbYx47UmlgZdU=&bkyhMyYqfYhlm=&dLX8jMUjXZkn_=&VtN3NrXkpUdeZ=&kl7KPVUgqeYoq=&JyTOfzWZYVbsi=&46zyUiWeanlqo=&UAu4EQZncXWil=&oJiVcDZefdZYk=&QtAhnhYfZsgeb=&YZQVjXYg_gkmf=&fsu_KmYmnkdgg=&BACalyVWpYnXX=&DsMkSZWjrWiro=&OufgoiVWgpdlm=&zy494fVrocdlh=&tqQc6FZaioWkZ=&6iJ4uuW_hqspe=&nb2c5cUUUscZb=&SicGdvVYYrhoi=&SdkiW3UUfjlqn=&4J8P9mYrppkWa=&k_GznqYsfhmYl=&GMQzcgXdjem_f=&C_irb8ZsckWih=&vc6PsFZkUkVhm=&gX4_qrXWqrYhf=&2ycRVvUeharbi=&5FVFx4Ygerrjj=&6Kvw2BVkqioUs=&jxwUBTYXkUfUp=&r3peZXXhmVoYq=&gqCzVvWUWUUqs=&OPSDYDWhYdUqo=&RLWuQaXYX_hhj=&T4vAp6Woeqplk=&cwS_lzZXYZYiW=&Jr5EOOYnshlgW=&Bnl9rsUlddmca=&3F3CKEUrfrjXn=&psovYRZYlegYg=&ezCsTTXXZmcjY=&5dZqUUWlcgYmm=&nlue5gZnUZrde=&72s7huYrpfmpX=&Z9oBNXYZ_dVbh=&9KJYfSXkZed_a=&YmpauMYfgUUb_=&M4LutWVUlagrl=&OBaQgAWebc_pW=&FfkCT3ZXZrfXY=&Y5aVsmYrZlmbe=&wEZVzUVingYeW=&ejRTKlWZsnflf=&9RmMXWUifaWis=&FfWQAOYjclfoe=&DRCZoxUrqnXak=&U4cTFyXccnbUf=&UnaJdMUlkhjcr=&grNb73UYaXgir=&qCUwvBWYUrZqp=&hjgxqdVgaXqne=&zmIUslYajdghU=&67GLuzXpZXpZe=&NlLefWYkUZblc=&WUw27wUnonVbW=&6jhXhWVk_ZcUo=&Bbu2X_Uick_Up=&BgvCJrWnYppZl=&fk2BH_VaoVXee=&eivl5FXpjsYmZ=&3RphJ5Zbajkdf=&Uit_I6ZlaYjgm=&TLuWHDYfcdVYa=&G8N6H9VaqVUon=&B6KSU9WjWYfYb=&2UC6MiYpilfii=&nebw35Xemddem=&4CmOo4VVpc_ae=&4GCH4CVahcnYr=&P6SgzWZicdcsq=&GfMYQUWdnnjdp=&9_MCouVrrVd_W=&Y4Hsx9ZbdXZUX=&hAgaS6WieWioZ=&_lGp6HWWqfbpe=&psfmMEUeqjhYV=&gpJVunUWgbWZh=&HEehMoZZriYoi=&UczIxiYhhkbbZ=&ZDfp4DZVkn_mk=&UNlhTvXdjekfs=&wAcRyyYqqVelW=&iun3bBVfacbni=&TBeZ4zVkjdlrX=&r3JIoLV_ncmpX=&eSPhVrWUgehVf=&XVFbkfX_YWfjX=&jJgLH3ZVfYpYb=&EFms3QYcUqdgh=&u7hDtjWsfioki=&L6gvtwWYWaqhY=&YGLLL_Wblff_Y=&S4woQwXUesjga=&cfcZPxZXnhheq=&DgHHh2Vb_Xccl=&sCtfBpZpssVcm=&EfTFYBWdkXUmh=&uMGOv2Zpj_kka=&w3a7xEZWYnddk=&BaUb4fYlhcVgW=&w64NQXZYVflkh=&J6xmqRXiaiWge=&6iDGgYVeUjiol=&FYIc59UsfkWVm=&9KQgqUUlZqqps=&3LLoCeZdklmUk=&Tdanj6Y__fpmm=&X6jh9VWXdXjhf=&FzDIpLZWcejjn=&4oUOy4ZYgjkgh=&joOlHVZfoZ_qs=&ETOh2BUefVUZW=&YVxSmHYogYngn=&LyQ2fwVVqaUXl=&Qowh3jZVfjkYn=&abY_vdZmZgehr=&QasbaSVUYUprh=&eQX2hEZl_cqac=&gYZot3ZZVUcso=&xRwQJ6VdUgniU=&trjEkdVcmhUZY=&EFpPnlWZUogfU=&teY4pMVZafgfk=&jhTnzrVWocemg=&Wed85OVrrabba=&ccRguGUalgZYg=&qmV73JZqqs_pX=&zT93DkZUrWgcq=&UQTVzxYgcUqpU=&x4riFnXqYmUZg=&fFrRS2Xp_kZbe=&7McAMeUeZVpmo=&9ST94zVoUhdpW=&vYp4pvXdpiYZm=&UYmmnXZgbeWab=&5uELaRYXWfsWd=&FWU2u4UUjcngY=&DISPkeXesacXf=&LazFotUWZV_po=&j5S2jKX_Vekcs=&r7TqWvYsdjheX=&O5GtNDY_oUleh=&RSZB6AYlZncdV=&z9JNFjWYrcZVp=&eGeanUUejdeae=&9NxUWoZYqggse=&dHKL_IXei_khi=&xrMnIiYlhldjr=&m9keNNZepbrYd=&5Yz9xHXegonVj=&e3jWW9UYbVdWb=&P6yNVLZskoZWe=&wqM8ISVr_n_dY=&YOWRV3UsgcWXc=&iBGp9uVoWqbnW=&IMUTjkUfnZboh=&B5DtmmZhjViao=&H7c8jbYfUYrqf=&CQ7jv4Vsknoak=&uNPmQJYqcjUl_=&_MDHilZdVWaXq=&Sab5pYZWgXhoY=&lVQfIBUincbsl=&hRWNc_WlmrdWd=&4eTT7QXVopmZq=&pSqmddXle_lmh=&CgydkfZijahbd=&gXlVVaUqrrdme=&mzHq_4Xp_gbps=&2OrT7pZcbWkej=&wUAulOVlrq_pU=&fHPZTrVhXWjVa=&5Cm_KVZZsriid=&Sb7voCWceeXfV=&T_55WLUdp_ena=&nYcx__UYferkV=&C3QWAvZscndhm=&wslaXdWq_ndie=&wNhYHeWg_qjmd=&Tt2Dk8WXkadYe=&ScW__LWWh_bVj=&eqLi_2XXmirYY=&jo4fpSXVmZWYa=&fCo_VbUWfapii=&7KVCiIYinqe_h=&FTMLEPVn_mopY=&iQspESZkmprra=&rDguc6Xnkdq_j=&MCzLlwXlpXeim=&OdXPpRWmogfiZ=&tZo6mYXfhalao=&AKMoTNYsdrXsc=&bSeoEtVjrklch=&QAeY3OZhlnnZV=&5Kt5TmVbYjXgV=&BHHMdzWUsecmU=&FnIPlBZmfkmYc=&8AriDbZZpqgcU=&78pC6iYjWsdU_=&VL2UHFZekjrir=&petuMrWafV_Zj=&EAQE5ZWYWgaZZ=&ofhezMWpfprrd=&3RIoMQYrsoVoq=&Kei2GEUZddYoV=&uDzhWOZgcsUsj=&Cjje5IY_WXpip=&yLNp6yZpbmZle=&YP4D7mVd_aoia=&kIyQMdZbajYZY=&3owXF3WmaXrdc=&KX_ltSZgWhZUl=&En7VspUknpWmm=&zYqQPHYffebd_=&M25Y5IWgccdfi=&w2OROWZqhYihg=&9kS6ExZZ_ibpZ=&x6pDJ7VVocbdo=&NLAPVLZ__o_l_=&exWFmcWYh_qke=&lCEjutUcsWjol=&NBGv8XUlhXk_X=&NjEcvoUVYpsgY=&jN_eW7VsbZsdj=&34zrOeVaofWYm=&5rs7xLVha_Wdl=&XvFtFcZmahrbm=&5M6VmFZffrkZr=&a6MPyuUoXdpjn=&bpXLBNWpknZoY=&xzBzwzUkfjnps=&wf5hF4ZnjkmZl=&6lamx9VYYYZag=&DbVT2HZnVfinU=&vNqUBuYsommaU=&uoRaLtUmnWlbb=&pLOdYwYpkXWqg=&NNhiFdYsiglch=&DZHxKpWeUXfaq=&AGwkWfZYdZf_q=&eGxsZSV_pWeni=&VtZgaKYnVUZnW=&GFgO3DUoYpqYk=&z33jltZpnbYsV=&99x2_zYnoXnji=&qmKgJhVforgc_=&LOPnhIVebVbfc=&WKVn95UZZshme=&etESuJZdqggqV=&qq25HpVmfVkkl=&3JkZuIWrgqsdj=&OFQvACWplXiaU=&45i7kHU_amgcX=&4CxWraUqdXeVX=&IqTGiKWoZZbUb=&IprLjnWsdkZdl=&8OWX8DXaYp_on=&FldrY_Viordci=&s2BbVSXqqefif=&SojutuZrUVsrZ=&zfSCPNYcrXdgg=&onTMnnWZedqor=&sU6k46WrkUZqo=&xAKvJgVVloebk=&qCzDxqVkfUilV=&39N7XcXVqZ_qm=&tLt6gfWZdiko_=&lMhNaPVjrrsUf=&YDmGV9XpZ_sUa=&F5TjgRUdmlXVV=&v7dFFLYbmhcgk=&jkiDU_Zdosnmm=&lDGS7TXhYmorb=&XrGYrkXkbaUok=&umA2gLWjbZojn=&NVyB5yWYcrehc=&DIMJEhXfqcrYf=&OgxO4MWrfqmhc=&h_Us3oVilhhfX=&LtQiikUWjmikc=&cBlPQIYfZeYdX=&BlXl7LUooVjbf=&sT4tSSWaZpicU=&75fBISXhhWhod=&hQmvG5Y_bhrVj=&rGBt9AUZdqofr=&cK_nC4VYWqlYl=&MzfEzYWbckcbW=&zRPMkdZhlclmn=&Ds7_88VZUbYoX=&RZaUfOUbYslhb=&ckw4nNZnmiffo=&Z2lANhV_pYaYk=&O6HsQfXbXjsWa=&5gkro6UlmlfZd=&7Z4drlVojihri=&H6lu96XjUinms=&O2o8XvY_m_pdp=&mSfqEbYbmWfrg=&Er9vbIUUhcbqU=&beaSnuXaokm_m=&9p6C6fVmloYbq=&S6haHWYWjpaW_=&Op5NGuUYVbrZZ=&ammX7kWjlqojX=&UeeTmJWkjhVVh=&hfzCLOYcjYhsh=&RMMeAcUlcilaa=&DEv8ieWjfghns=&G8DWO7VnasUsn=&3CZW3WZa_iojW=&67M8sTYkYfifc=&Mx6Q9UVbnsanZ=&BFPTZwZgclXgd=&nUteHUXkpprXX=&ZeGSOEXbqrmbg=&a3n2tkXYnUbfs=&CSsyCsUfYoYsa=&l7jcIsWccZdbi=&_88j8UUVlosl_=&wL5BkDVfnp_Ya=&SvoySQUVlecc_=&dS6Y2ZVnUhgbZ=&8uwHpaUWXaWjW=&GJ9ciCYYY_hkj=&SsX8L3XepqVXq=&J3yfCLYrXnZXf=&aZoeNrVqrjfrl=&QJghIzVXXYied=&7HYajaVlnofXs=&nDIbcLUneW_om=&Ho5CrhWYsVZXh=&DdE_EZZqajfps=&6MT5eDXamqfjb=&2JhDXTWrrchlZ=&NIQa77ZeUdnhY=&HyKhCJWXiVipd=&bZ3iPkVXdhZWf=&9t2dW5YYmfbie=&DBsvMIXqXpVVh=&rBdgrGVmdkgkd=&eFj3jgUjZigZX=&GzJSyQYWisdYk=&wHlWWpZfVgnlj=&rAilyOWVVmoen=&5Hi9m3UXZknir=&xQxnYYUqoVsYr=&7_pvWPZhWlcXY=&euCaywVhcUdfl=&7DeVZGXsUisfg=&XIJcZfXXdpl_o=&Q86c59Ynirabq=&ajHQoKVqqqrgX=&pI2nCyVkadodr=&nwqSM4ZiVhnsr=&bwKE4wZ_UZqin=&UKlDvZYVibqXi=&9XpTHyUU_slUk=&eNIRVbUgkUYXs=&cRzNVQUaggjrl=&SIjdC9VeebhUY=&rqFVdKUesrafd=&ZnxenvYdaqlfX=&U7e8oAZgsUjbh=&kKGVeOYnUaVZX=&FbwCmYVbcjdhe=&2V_R3nYosZbbi=&3R2oWKZWUbZga=&Y5qEzAXfiYVaZ=&GVbcIgWlqYoZp=&GDNFslZYmWmko=&9dkdTBXYcemik=&J4X2PEZaanmsm=&5UlmToVqgsUrZ=&Vy7Eg2VeUpdc_=&4zNjCTVge_fZl=&8NMhV7ZjqbYma=&lggbwcWsefrnU=&Xc24TaZjYbdmV=&9rN_mdWojkdZj=&HQRroZZWefblV=&wkyIydZZioUlf=&PZhKQdZYeifbY=&qD3TYlVheWbps=&FJcLpMUrVmXYY=&bBBMPhUmdbbWh=&4l8yKsYrVhpsi=&j9laAzYXjUaqq=&PCEoszZdrZmkn=&edKAZ6ZYVXb_i=&zXzJrdVlmoraa=&5pFm8iVhmsmme=&LBUVs9Xs_qroa=&qyvjKcWhak_eo=&RUsFXrYm_XYYW=&6IAf5QXXcorjr=&hVI3_tZgZYWpl=&zoBoD8WXUprUo=&DJhGszYcamoYf=&Mu3GfyYoosWWc=&sJUY_eUeoesUc=&k57X56YndVkoq=&x5oP5WWjgppkq=&I9WnIEV_lmsaU=&3Eu6b4XsdcZji=&h5zTC5YeiqoYq=&rNvlCaWXsVgjq=&27kfFxXqmXUql=&r5TMnfWsZdrVX=&tOn48gWlsfr__=&uZUgZaYdZYWkV=&7BFZZSVWgWbjk=&O3iNfZWskkkfn=&hZ6AH2YUZWsoV=&2JXaVvWrYWinY=&tbd2afVossbpb=&m6rDt7YkpsWlb=&KiHuyOZgpYdmZ=&sO2MpiVcWlmih=&ZYaD8rVfpqiUs=&shg_rvZaWeXhp=&o33J7iZhammoc=&RDxXKcYsirX_n=&BI6hOHWhpXaim=&9mmJFVUWpVcmm=&lEVVVXWisnlpf=&NqBoxCXnWsnsl=&m3iNSCYokaiph=&6ZF_unU_ajsiY=&WiUmqdUmfbZar=&i44ARhWahedgr=&JWLpIVZUbgWjk=&NlNPAHVlmVdUq=&_ikiX3UcXknUe=&TlAKZvYi_dcnX=&2mkQ3CXfmcemW=&C6xSfmWbcVlop=&BJ7EYoXc_qkg_=&Fyk9krZeYnhmg=&WtpiLCXjskgmW=&Dgwvl6Zbjfkih=&xt2eJCZXc_Xmq=&T_kmJeXXofqhp=&4BcnIIYjiWmch=&9yi9_CWXihqVs=&O6NdurXqmqmmq=&qo9nGwXapbZYW=&ke6HVTUfgrdVr=&GBJ2tRWcYko_i=&MUfSybZkbphp_=&a_m2CyWrbnZff=&iyfoZUWehfrrZ=&9rtJf4ZYXmZgX=&ARhtsnVroWdeW=&FSPOiaZWcqnrm=&6z44gJVfolnnn=&Jqnfe_UlUpUWg=&kYtJVUUdfXd_Y=&HDCHKjWqYmXcs=&WeDLxYZZi_VYj=&EFqaayY_fqfcq=&jwKDP_ZbapZkW=&iCiVCKXWflYod=&UYMQ22XZckYsf=&xkPj4RXj__dXk=&wL5l5jUdajapb=&mqWj2yUbmlWfs=&76A2ORWXool_a=&mkEZQmYcjWfrl=&LZU9hMYsbUdrl=&khrYI5UWcrUag=&vqbM67WZVenjo=&62iD_8VhVVWin=&RzdP_wYk_Wsif=&N7hmUtXdmjjkq=&skXLY2Ygh_Ybm=&xHXHo2WUqgUc_=&cAKKKiWVokihp=&qu4afLVgrlakf=&8B9eMAUqcZqek=&ARFgudW_mVZhZ=&9DMarrU_eXdfX=&tSBMJKUgjheXh=&uRPb4yUfffp_n=&xJEB3gVnpsZUs=&ZPT9jAWmoZlgh=&d5j4yzZrogXdr=&PK6AfJWem_Zbl=&4yKFBTZUfqmqV=&X6GrkFXmjossX=&kVw7rxZhXibpX=&Mf4wEtVUpdqfm=&Xp2mN5XdXpdfZ=&UtsC5kVYapccq=&Tq_s6SVZpqVlc=&xuoZzNXmXomqf=&JKyJlSWWmadjm=&hW4a4rZgnerpV=&AQ_6czZrhhnln=&BTfIB5UflWcVq=&vQgfgHVmVafbs=&m3aLjZYaohYjm=&dFLypqUqjlbci=&qAQKakVhpVjrn=&HvsXxHXYUd_We=&dmSOPrZgXXqqn=&NtB88zYdblfjq=&UJsrZ4Wghagak=&EAs3feYnpjkYr=&soh2HpYragUUg=&oIoZtDUXZZbeU=&8ny__FYb_hXZq=&96nC2GWYVmcqh=&Q2KwQEXnscs_m=&yQ_kSjVZWXlgU=&xA8QlZZgrmsWV=&5zEuwZWnkjlea=&DzCTTQUposUfn=&FDrkRsYrfelYW=&hmN_6mUlZjssn=&_zuXoCZjadqXf=&sRNRhtVfffVWZ=&RMDHLnZrcneYr=&CAqrlqWkgekch=&mcHhLGVnambUb=&P6ljpXUkoqXfl=&PWVPn3Yenjmlg=&xnkJgxWiVkekm=&KpjFXHYkcdj_s=&JJwEUHZkYhqgq=&azvAfjZYoqZir=&ehgfxJYYfZXbl=&nTpiSZYaoqjmm=&eo4MGAZmcij_e=&xpK8UxXaUadna=&PAGG5CWWpekor=&PV3GJpYpispcn=&6vUu7JUYUhsgX=&nOv6WaUa_m_WW=&M9KkqLVoskbsc=&H4gJxBVrfmXnl=&BfKnQnZgfUWsV=&ReX3JeXdodelk=&vjeG9LVnoqWY_=&M3xZwnVikp_Yk=&U2hPovZgfViUo=&spJFTsZl_WWfk=&6vUwDOWkV_m_V=&kt55BhYXUcaeZ=&QYhowpYdjfckq=&2DEhWQWpUnUkq=&aRl3WjUhhreqn=&nHEZXJZlqradq=&6LELiQYcUrVqa=&hFmuviYYrZsnV=&ge5JxGUdXWVWk=&6xuASmWje_hip=&tV_y3nVbqgfbo=&BPfZvcVYVigjb=&geQqTnXUjdsXn=&9neSQpUhpshcm=&fa8eAVVsgreic=&3nU9UZWZbaYqX=&5Dabc9UYXUXen=&uujQnZUkq_neh=&CDw5KEZhUbWh_=&MDAJPWYpjmqlV=&agzcklZgmfmcf=&edvFTxYjsVZsZ=&ErXdODUpfZXkj=&WWVCuOVrqhjbl=&sAS4TtUigjcnk=&bdOtV5WnjpWY_=&oLMU58YVYVisf=&WVuDcUWY_hbkn=&TqFA6lVkXqUop=&mOWxQZVnqVXkV=&cLxDFcYdqekUU=&Smb5TsVkbjpbU=&sa5GxfVfhj_kf=&YVvkJSZZpfcoW=&KfxSQhXolgkq_=&hMNZ85WZqrijm=&8mvVOgUlZpbrd=&nrrdPLUZfhgkW=&mhndrlYbpbjdZ=&uqtQV6YilghZp=&RbAIanVWslrah=&w7RUd2VehWVbU=&xVopSlZdUZiZr=&jJ6a3ZYWXfmoZ=&FmsVtQVkVqh_h=&iWRlXXYl_UbnW=&3oDMEgZpVkmml=&qa5bHDYqrhWhr=&c5G8zoWoZndXr=&y7H9tXVcamYZg=&l9G_UlWdUq_YY=&CZvHkVWdkWklh=&3SyLjHVhVhkmq=&w_EOmRUshj_Ug=&mqRzjhUrejfnn=&irwR3pZfm_gXj=&TMke2aVifidlZ=&kFqXtDWndhmnh=&7TLSVkWZhodpi=&HMaJwaZe_cmdX=&pnFQuMZkXkZrW=&TrWuWZYpXfrs_=&gGa8hlYWWqrUp=&iC9Y6nUWnYmgs=&xzl3xtVgbmbkd=&3puF9ZWoaa_eg=&ZnZNmyX_XXVZY=&726GwuWi__cUh=&ZkAC4gZcjfgsq=&abSKWgWbpiflm=&buRu9AVcZgZkc=&nTETImZVbjZgd=&UoAc3RVYXcbhi=&UtbPocVmqebfj=&dL_gWmVYoplnf=&2ASQIwUogqWik=&HrYGYcUeaXUWe=&hyiavwZXgeisj=&Qob6jOU_krqXi=&6KDt5IXdldhap=&wLetgIYlesZsZ=&ugDPlYUqshZlh=&tVbmVbWqgpiUb=&gtwB5NYZZjjgY=&tcZYDlVelei_n=&eIdKmZUochhhq=&gXFskxUgpZnYl=&39gLJWUYhapZY=&796_AlVlfacca=&ywa8pxZblZnji=&_65JvEYedlnmh=&QVZiuUYog_keV=&mvtw6rUrUkrVY=&AvULjwUdjcjqb=&7cgUP_Xeookch=&auShSHUlhmfgU=&onVc8kXmqabgc=&VmHsx8Wrhlbjc=&bUXAUAZjgrmeU=&jsDd2NZWlhlVb=&qa7qBKZjglgfa=&XxqNRUZanVibb=&qtUjprVmercUj=&WfwuKwZefijkb=&TcgcumVZfpXeX=&hwGeObUphdnil=&LaWLp7XroYnbc=&ODiUvxYmYUk_a=&4uLvFZUXW_reW=&_AMtOtUakliZf=&Z6kmVCZdYngli=&kv2hfyZaddabV=&yMy4NwVibgscZ=&JMSJiRWscgsak=&xsU_aXWrrqopq=&RnriJsUgbmdUd=&s9qHpcWepqmUa=&VRpcP8WopXVd_=&nW8bd9WsgZqWW=&F9hSBuWfXnra_=&7cH3RrVhmjacb=&9vaThMZeppngs=&zIlSgSXWrieiV=&T35e42WYohWhs=&N9bC7sUWWrWdl=&kazyWNXmnWihc=&wzX_MTXoanpnm=&ZcaTE3XnpZola=&DNpcfSXmmlrkq=&mSRrTBY_WraUc=&ev_wHVXoigdXZ=&h92WkhYjbjYUb=&qD_f_5VsnklYq=&e3tznnYmYfcfr=&zJ6ihaXjdjsgb=&r6pULBYilsgir=&ZeOhRyUpaeikf=&ZvOMezYrs_iZ_=&j7OGKzXoeYiVf=&4jfuZfXegp_np=&BEIovcVpmjjqn=&GCalnuYsVllUa=&8ujXTMXWqolYh=&HnPJgfV__eYgV=&cWjDaCUbnYeeb=&27RLCfZnheWka=&F8lw6yZnmapUg=&9isiDlVbpjiUZ=&gtSziVYnmaaad=&QK7X3eXXp_Yhe=&jaNjcHUdrgbcW=&duXHRTXaUrelj=&GhJHtpUrn__im=&cZIZBhZe_ofqn=&PWEljLV_qmlfi=&lYOeN3VkfVhfe=&j8XzstZdVccba=&KeWPPzZgrcbna=&Ena_s_ZUZmnhU=&IWdobpYeWkeVr=&jpVrqqXUdndlk=&26xSCqYmbdcga=&NhVe7eXrhZhrg=&X8JHKeYpoaboh=&aZ8DpaUalifpc=&iByJAwUfbjhYd=&VmfU7oZajobbd=&EarpBiXWfeask=&H96vv2WUdepXn=&GcMyVfV_ohY_Z=&joRR4hWafdgqe=&EQzy_cWd_ejas=&ofalKLWs_Wfep=&IMcYlzYhsshXa=&WPRgHEXbg_Yq_=&ldQesbVl_fVmi=&arpVsmYpecXai=&7lBf5wXZlahgk=&MXNEYiUdfmVgs=&ptcHw3ZaWWgih=&PecnU4VrcdZgc=&mAYKFYVkZngeZ=&zkLYpcXookkYl=&TitEFaZqVgUjX=&3WFECcZlWdX_c=&q4HHZtVXaYlZ_=&ZTiX65XYaic_g=&twFgsTWcZraoq=&8lr3SuYannnhs=&Q3azZTXpocfaV=&ooqMJZWdodfsU=&JCpxjvYjYoVaY=&BWyJvaZWnphfh=&fci9cmXrVisXc=&HV7zL3ZYpeXjX=&tz2cbCWrjWsbi=&bYB4xjVjdVsfn=&XTIRTKWiYhgjZ=&G5S8sSUeldjcn=&IGGunVUlbiqsn=&ljqNPhVkXpWeh=&Dbi3pzWY_ZYbr=&hjRsdfYsndZmb=&wGpdWsVXZrmqX=&fMQU5VX_bUZio=&4icVDBWXfUXUm=&k9s894YpeeUhr=&dKchJ9WskqbXm=&xX4QXXZldUmmZ=&pIRwpKXiqbhhU=&Z3HHdLUhYaWba=&yuZplgZUVVmnc=&UAZTE2YgdV_lZ=&GLNAOMUXlimgj=&EJsLwKWmfUqoo=&cJlEeXWfXUnkV=&XGNB3GUZWbk_U=&vPvmmZZpXnVao=&r36LuCVWmrVfU=&cfvdO9Wr_fXpo=&kslnUPVXfclZl=&clJ4PfYlhkjVe=&FQsskkZkisjsi=&BmsSOOUpgkgfc=&ClvdaHXehdqWg=&U9S7RwVsUXimk=&4buKIfUnibWpf=&Ttt3dqUrlpekm=&LPYNjNVrUpWja=&6itAMZXlXkqol=&NUpK8CVbXolqo=&5pJGqzVladbm_=&EelOuCVnmjUjU=&PZeOM4XmngmVl=&gWnLYjZorcngX=&JGRHfcUgq_bZb=&GGnZkHWdrsdWd=&ND_YusWerjg_f=&CAvFHWZVciYqq=&YXjCzvUlpVdls=&OZqqJjUfn_Ybp=&PEiZxtXcplpl_=&7ZYPvUYiqikhX=&4zis9XZoVpUlo=&gy4pIkWWqbjbs=&QjnBAUZ_blZjZ=&5GV8THYqYVsfj=&6RZ7AVXabme_V=&5CDhZBXipomqh=&PO4tm3ZkWfqgU=&VsdlY7Uplesrp=&NgzJcvVanrYYe=&nrbV_ZVhXVYae=&gaCXdrYYWYlVc=&LleOkRWVangWg=&C9jXgYVfWrgcW=&82VkXMYVkcZYr=&9HzLyeUZgk_hY=&psoruGZc__hWj=&Ochm8XXV_hooZ=&uaw2AWZXZirrd=&pd7O8sUXejarZ=&5DkiiEUqWUXkp=&4WjrrWYrjqdag=&8dR_fuXkslrWs=&TuQsKBYohdgdc=&xJyJX_Veldofb=&M8fqImXjfYXcd=&_pg6y4Vklhckn=&DnkFeaVcbnZYs=&sZ8YKwXlihsVd=&5vGKhsUmcllkj=&YoP4isYjVVcYe=&4BC5CvUqbWfUm=&WuPPoPXZlVhsp=&XQBtNEUoZVcUd=&tlk65tUUVbkpm=&tveecMWeelfpe=&WD6QpsWdgVjmd=&bJIuk6Vgs_loY=&M3qyeEY_dhnim=&jqhN_lYdijWmV=&BHpdSiYgmZkga=&fZkTx4Ugcclng=&Oi7Bh2WpsXeqs=&sapB3TZWVgVna=&iwnvf4X_ojVZd=&4N6Y8dXbmecln=&IZFdF8XeaXUpZ=&qlKN6FWombbsf=&5zZYKQVWmcpbm=&X7TTmJZUrZZZY=&uso9uzZiYnXna=&LQYSYzWofoXUX=&obyXFDUUgVYVV=&wHaOMNXkVUijm=&ZH6EwaVcafrmn=&LNL83AUjhVkjX=&vOimBDXWcrW_o=&9egb_xWllcoqh=&gYwSboYnfrhhV=&PuuxVOVn_Wf_d=&_ldmdXVbZZV_Y=&xJlww6XUZVqge=&BdfmLBVVihboe=&6z7gx6Zkhhakg=&WPEbfKVXrcork=&TPeicPWYmkbpU=&QD7mxGUYYqrYU=&CpiDa4XscbYrh=&rdqoplVbibVbW=&lxXmFQYqecY_b=&GSqyJlVhfmlro=&RiR235YXZUlmn=&YUo7OkUmUZnXa=&bZeCodVbe_gmq=&GZGZYEV_XbZsX=&F5AUEFXicVr_o=&JlBIzOY_jhfWm=&CfiRXkXZneoeh=&ZItfm6Yialhof=&NLDyhuUnjbjkl=&dqAXxrXhZ_lXY=&kXubrFWeVXcj_=&Y_4eGgWga_aom=&bL6i25UqrshiX=&n_kLq7Ymemdfp=&mO2jN8Xnpikac=&auAAi_XkYhhnl=&ggKfplUjo__Wn=&fGaddSVZsilhc=&ZSYhtyZpaUjsZ=&tB5IGSWbkiacs=&wabEuVWkddfbX=&Q3qjjeWqbUaZV=&YtEtUwUdbVfWZ=&KpAhYVUfkYsp_=&FH5tsgWigUrVs=&HX_wpHVXofgnZ=&Pz89R3WarkWYk=&ZVCWzNZaen_ds=&CgIsNLZbZokkc=&PceizEXgfcanU=&ZnNXDVU_ohbgr=&kuTupPXqmYhoq=&XCURifYiXWoqp=&2q_Kc6Xokogco=&bCVgjSZgVjYgd=&eFYiJJXpWaned=&ZzJOwUWaZsXdl=&fZPQq3Ukalsba=&DNyyntWfskeWc=&TUIJuLVksjVfo=&uQ95WpYWsckcq=&E45vp9WmkiUeW=&AqMYZiWZenedp=&gASeMXYk_rhsa=&cUXSY3WXUdWoi=&Rysb2LWsabdcf=&gK3_OiYh_sYcq=&YdABzPYqmqXmm=&fo9sYqZlrWroi=&Att428ZUYbsei=&Zq6SLkWjhgpjY=&m6wPTRUrhljVg=&vpiAcTUXrnkpa=&S2EF72YfpUVZk=&rwHXukUYfeiml=&oja4O5YgabdZs=&KRFcssZXfWfX_=&E5YeekYbXikgr=&MgaGwkWcWlWjb=&mSECEDUpVmZeZ=&zM3WnoWXmVdme=&VI6lFCVhclVej=&wPzY_VXkoaiin=&UfHIObWgZ_daq=&vLiNMzYrnZffg=&BXBcsLWUVaodh=&YJJhmbWfaapda=&NKwJwLVhjgnjj=&MChUhyZhmXqcY=&MnqWlHVbbclXV=&YH2kYoYnWVcYb=&FxVENQUgWeosb=&Qmc4x9V_gqgXl=&mz2J82Zopfksl=&WWX3txWZrlpag=&97KyiRYbrpmgp=&Cke_VQZdmUYrb=&YhcQ77XimoscZ=&YIhMHoUYbnfii=&WIW4Y4Xels_le=&p5_F9LYoqfkaZ=&xtfDW7XXa_sXW=&LoWIgGYlYilek=&hx8N66UlqpVgg=&FJTwZqYqpUbVi=&gDdaBxUsYUiid=&4qo6H6Vcodhbh=&yH7ZYWZrpmfaZ=&8Yaki_UfkrehV=&TqUReBVXbasXW=&rPxik9UjegnWW=&NRnqj9VonqWeZ=&YVkHipUkVageZ=&CqYNuyYkY_dqf=&CHrA5cZYmkjsb=&8bdo27VmkaUUa=&SgwPp6UcWakrl=&s_XIFOVsgrhss=&JaBNzCVfsoUpm=&Qs78EKUdjqWVX=&mtgbDEYonrVno=&KscwcMXorrYmk=&62XYV8VqYogps=&u593roVljq_hW=&VkdRqWVjhjWac=&_f2yNPUbpWVem=&bVjkuOVonlWcl=&U49aAGYcgghir=&gCGe5aUjbarfh=&cVv4SxYpqmdWV=&VjmBiaYmddXVm=&25apScUiibbel=&oay5pyWqZdlaj=&PrVvpeWUmmdgr=&VBRC_3Vqo_gZi=&OF5hVdX_cVWbW=&RmjfcZVhWqrfh=&fBaZrtWYVZeXj=&G6Ss8ZUelajio=&TaVYcwUdZVngb=&QoiYqeXUWWXVW=&opCJcQV_nYmZq=&tNvLHuUdXjo_h=&mPGmotZqslddX=&dYs6ViUocajWj=&nYzoAJUijgdbr=&J8qxUJXfUodhp=&J9kqdQVikapeZ=&nOvuwsZcYVris=&4o4rk_Wdlqald=&eaDpPxVo_jjsW=&o7mqMAWnaddgW=&8U8alRZhkonU_=&_x9lX9WWUWgce=&_JRwejVkrhmhU=&AzQ3dYXr_WmiX=&9aA_KXZqijhgd=&s9FHLEWjnshkV=&FMF28oWUigdfb=&TRgxQrWge_ZXr=&TjtynNUeojVis=&cyTx8KXgkYoeZ=&UO9WNdVkkZUpg=&rC6OQgUgfdmgd=&cVUmPTZgrlrge=&BMDoGSXkrppsp=&2Rm42bZYUUc_l=&laMfgzUZaUjlV=&qYcdECXgWpchn=&K7Rs_VYjndmZr=&c8RDwWUgmZoar=&C2Wk3sUWhbhn_=&5EAPMtWnqgbWb=&PlQtRkVkaYeke=&o4lY6bUasUhhf=&qp8R8iVikVYcl=&53HPDnXacYikk=&mJmpIwVYWZaan=&Szp5o8Ugrgnck=&NrNnZ4ZmWpabe=&_XFq8xYrns_gd=&3hTsTZWYidhnW=&HRSUSRWmZoccp=&YSD5FoXeYXoal=&QK4tTkUgirrma=&Bb6tZGVnlhobl=&rOv5bBWdkfdke=&EehxBhZ_knsch=&nMUmVCWqkcj_e=&grgwXqUonhhUo=&jI3CVfUda_mle=&XZcu4CXUrogaq=&wYCdeuYesWVcj=&99jQjUZnblWl_=&Ewzb87Xjcdkhc=&wu534SUoZrXjY=&6mD9_MZX_Ymon=&f8WkseYW_qjYq=&2dz36DXk_h_Wg=&NUuFgrYZk_Xlf=&lYOnCVYehXeUe=&7SFvoXXpahYmb=&QYLehGUadgrne=&x3lgw2UsddZXg=&Kjs7UjZjeoimp=&36SRnwUqqfVhh=&B5CNxgU_inVll=&MpdPKyXarYpXo=&jiYQHrYbpdXll=&kTN22pZfjrrip=&523uacVdYUgrp=&_4abzbWUqnqoq=&XAyfuwZfbVnae=&3f_OtHZrfUkmZ=&Fun5FAXXoqfho=&Xu5Z8RYdfrkce=&BeBAVvVWVrWik=&dxgwedWgqs__o=&6oYEHxZnbinmi=&fHedbIZ_rcari=&3rxheyV_glskc=&9YpyejYhbVidf=&qnsZnsZbasaso=&Doh4ScXqYsaVi=&aqtpZbYWqneUY=&Ew7jEQUWigefl=&cEULHSZmsfbik=&4jdZZXVhqbjZW=&DpPeFNYs_oi_c=&XGI9GpVdckXcc=&Te_GWJZcrecpo=&bM7sfaU_Zg_fZ=&rDXV8AWgjknZp=&O5DTFPYfeqccs=&GtsvSOWpssdXs=&2AH8djZZ_nX_U=&wLpYvkYZsVUZV=&JJC_pCYop_eV_=&OWip28YomeVip=&fCqnWSZWZbYea=&8xZDLsUlWWsWf=&c7qKGUZXgamjk=&h4pJCuVkcmbhW=&E4f2IYWlfegYk=&sflH6pVqlVmlg=&TtJ3UoUgmshVc=&TaBUAiYcchclZ=&wqvHL4Uhciakq=&oId4pwVc_Vhcj=&JCP6s8Wbmnlca=&VFNKyXY_ommZW=&aZP7xMYqWhboe=&gUM7CPXoh_hbg=&4uEptPZsUgjrU=&XOld_wYescrmX=&iSHo6IYVYWYrr=&SNhWXVXpkpjdY=&_ig3OsZlplglg=&kJwfr9ZsadnXU=&VASEFjUdVZkeh=&NcQvGOVeXXfns=&GoacbuVZarcV_=&Q7p4y2WqXZdsh=&sG6RODWlchbUl=&cJ2997Wnq_raZ=&NqzZW9WVridbs=&UBy8gcUZVZice=&8UYILNYsdjleb=&nVgKDIVbsmlsX=&rLi4VsZlfocWk=&lEs8kyXjWkkXY=&afMB4GXcqnajX=&Kbm4VVVcqcfpa=&Czc_9pU_XoqdX=&eCyGuHXVgadhU=&dq6iZ9WWZhWZj=&vMU3FiVijebge=&Vf25_lUlmnnmq=&TPDXsLZpgbUcb=&LCrRJbYXkYkYd=&MWIRDhUslkmlm=&P73ArXVZUnmhm=&OOZutbYdhX_cb=&O5EfFoWqrjgbW=&TjHwvTWhgcVma=&f8ZomZZppXoro=&HZDMXcY_lVUVq=&XbA56rYoabfch=&p_EBa6WYcesjV=&dyKCNaYhWWlZW=&pfmCiMZWYorVa=&agbj8qYfreknd=&shrHyeWcZVVkn=&3PwPQxXkmhcik=&rh2CTiVZUddqV=&awmgxcWhiopYU=&_HMbJUWepriYc=&hqmI2xYXhhndZ=&s6b8rUZciVkno=&UekinpUZekosY=&RMsxyKVXcYije=&dEa7RyZadeYah=&kUUztoWekiacr=&B7xtaIWUlmlci=&ZKgzCuUirWjlk=&ygtQyYZYoaZso=&roJ86AZjXbUYn=&AKavhRWckdlok=&6xK8vgXfdblmg=&UPmw3HWiYfbVg=&NI6sOvUsbnpWj=&5kdHB9ZUUfks_=&ugALGsXWXjjWa=&NPhPkUW_iorhr=&hnorwhUpeWild=&YNS9lMUgjciaY=&RnRdJrYaliUVV=&TWE2nrUmagYVi=&ah9fNMWYolqWr=&63STl7XbYqhif=&86ZiH8UbZsflc=&3aBT2BZdaeip_=&jmf3NkZrhhqlZ=&Qd7tO8ZpoiYfp=&eXx8Z7WWgZeia=&9EaXK8UfneUmj=&MFkDILXjsns_h=&qQPX98Y_boYd_=&tlsEQAWclpdbb=&keZq8FUejWghW=&A5I8oZYnYhl__=&yE4bJFYqqbdZo=&dYyNQHU_kVgdm=&B7sj4YWXoqkdg=&xQyb_PZsnZsba=&rkPOsVYoqsZcV=&S2RUDZVdgf_ZZ=&NjuFvNUlXeUcq=&QfqlVDUi_bpfe=&FSdzmEWWdqbUU=&cIi6_DZnsjmo_=&FtHqm7YmqWpaf=&GBUgRKZZWbsme=&cv_6mTZZapfYm=&arGxXYUmlkXgc=&u4rV4VY_frV_Z=&aY5ZZKWg_Z_Zn=&DXNSAOWmsniir=&OJg6ZHVZqacgj=&srgQWsYsYiUma=&6v69AAZinZdWk=&LKUR9wXp_mWWZ=&mAm3N7XnXbWio=&EDdnnAVdXlZfd=&6ecmYhUmgblZc=&3_2nnUZrlWsYr=&dAFN9QXacobeo=&7LKhxCXkspUdV=&KNY9t4Zlcjskn=&x43rqQXdjVllm=&zZcV5gVidoaie=&XvBAv8YVgos_j=&IOTr3CUclbi_h=&ckK2aRWrhacVa=&7flJ_QVWhgiaq=&s9ts6YVqkgebV=&GIT9hTYesohYf=&9YkHj5VXpjqmZ=&9c7WQ7WfdnlWn=&FRT_IcZoXdibe=&IhZ76PUjmWrkh=&fx7oeFVrYmgWe=&nPNFUlXgffYjk=&dDZkwtUrdrjfo=&Hgg2WOWrfcYZU=&3GGu9yUkVoXdW=&EKDreEW_ZgrWh=&VXHphvZosggaU=&WRe_llWjkrYXh=&cJHmYSV_ZdYoi=&x2A3fEYnrpkcp=&6fww3hYjYndjk=&CVp954Wcsqpbq=&OGjU5OWpmmeal=&CjP62BWYcsVcV=&OrDfNkViidlpn=&rtsSzMUlsn_gi=&9WC7VLYsdlsgX=&WBlPFCYdVaYlo=&cI2nbAZsh_Vpe=&_MvvO3Vimckgq=&744N3gZUeUnqs=&uV2Tx7UsakdUU=&wCR4OdVfWXspk=&yhvVX4VXXmYVY=&SLRFZmVpkUjk_=&supwUMUWqdcfs=&bJnTxaVfpXdaf=&cFKs3JWnkmobh=&boJf3pYXknpoa=&zkGKzoVrneiq_=&cNynC6VUejaXh=&nsDrulYmZaarp=&SLvlggUcgnWip=&lEWOA5UWbZkiW=&orFelLWenpepW=&fNrCk4ZhgeZhV=&RgaWVcYerrbWs=&txVBYUUhlccmZ=&uMqJfEUfkVsXk=&aR_tP9WqdsYZs=&ZKIvXSZUoloZV=&WtLMa4VjYmfUb=&ueTBvmVqrhpqa=&A_DNRdVokVa_V=&fMssl_XmYXgno=&RWYr_NWsicdZs=&zt2rpJYeoWjsk=&4AwNfcWjlbeVU=&T3u383VUnheek=&3LqlCTVnqWhZo=&AilKeqVrbr_nh=&d5H9tMVpmZlo_=&QgyuDzVngmlVj=&3Gl_DqWabWnih=&tLjmZzUrbeigs=&o8x35dYqaXVgm=&TWB449XdVn_pi=&kC539kVWcVfo_=&BNzGs3YpWehYi=&kAyemHZ_sscpi=&BaRWQBUZifq__=&5r8TL9Zikcjnk=&4hAaMIX_oZalg=&o_3_odVqcmoXY=&_wafuYZdebhmg=&67DyG6YVrgdVc=&DLzT3LXdYpllX=&eb65uKXUqnrfZ=&ph9mCwUfnbsam=&7T9sSJUcWnisW=&ZBoJOpXWscqie=&RpAVNCYYUkebU=&5yYwxTYdcYdWl=&wnDufUYagcsoq=&vKgAgRXodahhh=&XvicjjVmiaWnX=&6sNzz5UiXeega=&eXzemOWndl_Ys=&xePN6NUgqcYdl=&kyyHLDYUojV_o=&WaCJkAYgaVZis=&XwDxe6XrjoZkn=&YpcBD5ZaYjWce=&kiA8ClUhqngYZ=&fxzTOBWk_pr_k=&ggeNcLWXrq_er=&bXBVhtZejebUi=&eusK4KZradWol=&SNN59sWjjVYpl=&ANFKVIVYZese_=&gvznTPVceicpW=&YMNrXFUcZnUXe=&WfvYZzWgppfnd=&oAhoBLYoqYcYq=&mGUFj8XqpnUod=&z52eJ5XkXYgss=&KU6KzMWgskrce=&dBWF3nUhVc_gj=&jeN6vHWqapmcn=&QXyNhUZoYehea=&MgGVskXVnrdjc=&ZEqCwVWZcWUg_=&BxwHk6Ygkh_sk=&dOF9IAWiXXdfd=&n2tDl8ZroUYml=&2gIEWOWVmej_o=&_OgcRtUYUjUco=&cTacEWYec_dUX=&npIEqSWlnZhre=&XtAJhKVaahjis=&fIp7GuVralYZZ=&GAtxwPVpUcYUU=&sKg5kuWeesclo=&jmgrM5UXbdjZe=&ZuTvZ8ZjeUWlj=&6afbhHVhUigVV=&5hVXkoViUlUoW=&3teBonUsZ_csj=&pt5hPJWoUflfn=&VbIcclX_cnYce=&yvt3TbYqqeWoh=&pkBiZ5U_lZkdh=&vcch4hXodhqhr=&8J7uPrVWgUmkY=&nvzBKLWqhoUaX=&uMXuz6Zcaa_cX=&rC6_prWXjrqgU=&sjVMpdWmsjill=&ORIehUVWYqlfY=&m3p3y6Yikepqk=&opVifCWodVXjg=&t9u_i5ZVVejVl=&FTKZtKYmXllpZ=&QRzIJlWsr_okq=&hwm_jVZVVUbqq=&sMizC_Wijdcfp=&lFOYeyXZVVUml=&ATEPc7XWqfed_=&g9c9f4UXoshYh=&WhhnHBXekUhVp=&gUBaqYXscgjqU=&EIcBmRVrscccn=&GSgdtrWWqUpeZ=&ex2VKbXoVVUWa=&FrfNM8UhfmZ_X=&Mh6CpDZkd_jWo=&Xax97LU_WmlZg=&RAoEBAWa_UkWj=&BFSNlxVcqmbgs=&El4i3oVbpUrdU=&VVACbvXjXWoUg=&Pt_h6rXpUqVYZ=&6iYkK5WlknbZY=&bE2rXqXmslqYl=&TRXlroXreYfdU=&GjoyhUXkVmnsc=&2AU4XAYamgkks=&rkVoizUmhdWjd=&dHRgvCYp_eeg_=&WANU_yVZbVbpk=&SJnWCYVoWnlcW=&P3IOERXaasbir=&pqeSF5UeksYUl=&miZUs8Vkcdips=&xBhOjJXkkZbWb=&hG6QFLXfnseqY=&sznPCGUeYsUgc=&Cwr4fSZiioghs=&d7DFZuUaUqWni=&rvuvc6ZlmljUn=&9gQ6lTVmqaq_j=&BpWk8TXkaVUkV=&9TkyxzWdicgjo=&N6vXyaWcksmdW=&UEyBwBWeldsqb=&77EB_rWkcWdVd=&FTbpBQZeXbhZl=&p5bpawWlYcmj_=&INVtljVVmnkn_=&2ajk_vX_oUhsY=&zAQpJuYadliVh=&m7cx64ZjmdUgp=&nF6gTxVWagWne=&b6MNj3Wsslndc=&MhSynAZhbapfq=&qzr2J3VhUgXWo=&lxmUfMXoZfp_g=&g2pNNKUscnlmj=&jwsV9ZUYkUaWo=&bj5yCoZqhgcin=&aAa3CeXYmmgdl=&NiKLGkVhs_Vnp=&VxhYPqWdcUmYY=&2lddezWWqslih=&yFm3sYVXi_oYU=&en6vK4Y_iXeie=&5xICn_ZpZeqUm=&DWhzvhWWmjacp=&TE3cjoYg_XVZk=&voWezFWfqbmgg=&dKqe_ZXmlpYYi=&ewNUv7ZUekWsq=&sPhAzeUjodqfZ=&JOmSMcZhkUekY=&DOgG4GWgcfagq=&AdbcD2Ujhco_l=&Ajn7NWUmomVla=&thC3nAYddrdY_=&wgQKsAVWjgoab=&RccI2qWVmirYr=&yJrBw5UpWXUpp=&pnXMJPVV_ZajW=&n85hdFVasUeWX=&JR_p72Zi_lbai=&8JrzGMVlfeoll=&e2JmTYWWfaWsf=&P8BLueYkdclef=&GPgM_vUVcrjqW=&JEUo73Ychnqak=&SBIMHcXebonpd=&KBjgjSYlVVqrk=&9QFVi3UXgpmXc=&NJAPMoUnp_opp=&_RkCPmUjkhUsr=&4ORPRAZc_Wbcd=&kLZFn6UeorZck=&CfIuwXXVXjhhZ=&g5XOaWVZgbpUY=&wU3YCiWVejhii=&Zo4gs7Zo_pgbg=&ZAD3XUVmfpckV=&scyExRXflpcji=&FqjOVdXqrrarb=&yPWlF4VsfofXl=&S56EW8Wkpkias=&3hyPOgYfgmrrq=&AOhEYjYsVZibm=&5YWNj8XY_bbhm=&ynYAIIUfpjZdl=&CJZbFmWleUrhk=&SmLeFYUUskUps=&qpipmnWaU_bpc=&SPTE9FUUUho_X=&UUngEtXpi_neg=&fCkbfiVnVhigY=&Vkm9KOZrWqmgk=&NwhTscZkZhfog=&yWcj_xZXfbinW=&4cezpqWhqjbrY=&4Qcu2tXbqbgrq=&3ybrhPVVqjmmq=&ae3QVUZkmeocX=&v5kYSwXoocnZb=&OAP_XNWaUXiUj=&7slQQnWaZncVi=&sXADFBZVjq_gi=&BFdQ2KVsZn_nd=&GVNfRBUjecjic=&9iaM_UZkahije=&hui9oLYXdjnbm=&axTCV4UniWolb=&4_XOXVZabU_la=&UWaZlSWdUrmkd=&xv3ITSYXagZZr=&trErVwVhdmXdm=&pUDDC6XnmbaVr=&SuPrEzZqceijm=&Yl4cSZVnnijlX=&cyhMOXWi_laVr=&XaNuhSUXWlXrg=&mqoVAzUgkdVob=&wkHOS6Wdoa_qi=&zkiMMRWioaocl=&IcZQIbZjeoslW=&ZDMNGKUpkckeV=&uEExQIWpVsdnU=&bGOupzWYkasma=&zk6RsBYdYZZrZ=&klpsGOYYgjhno=&S66O5BXVXd_Xf=&OkMZsKVgVVfdj=&OLEGGBUohomqY=&S7G2WzYjYinYX=&6qrnYBWhjVhXg=&LPElWXVjkgZWs=&YM72WHVdieYZe=&kXDUMSWmmp_Xp=&k_RUdFUoschdY=&Jt2H__ZYalsqb=&oOl9rnUqjmeif=&URyft9ZiikWlo=&sEuFNkUqqmYf_=&JgLScAX_kZUif=&aWNHwnVYUed_o=&CIi_4CZnse_co=&U3FOS6ZVagink=&CBmFqNUlVZY_p=&PJJES5XVlUUlo=&D9ay7uWllalcf=&Q_eceMWmX_mdb=&p5lZVOVjVXZeg=&IlXzJLVbUkjqj=&M2xs82Vjskgjc=&Br5lGNV_ebmef=&GarYCHWfrXUUU=&Rz2kMaXXfcikn=&glFbtpXmXbfcs=&6HmPZsYXcpohm=&ORnxqmWsqekhp=&eFwdTrZ_WZoml=&Tb674PUoUbUh_=&DAWhuwXYbabiq=&wucIuvWmmrnnZ=&2sbFYNXrhakWs=&fOeWccZildXnr=&qEM9t9YpUVVkl=&t3tAmnYle_nqW=&b3ZoTvVVUe_gZ=&WAGdYpUhXgcof=&NjnFRYWrmihmq=&ovrueHZqffWgn=&t6aQ2eWaodno_=&HwgDJZUWmn_Uo=&yTOkGsXiYWjpr=&6yd_qEXXbqmUc=&sjJZYtYlaVeVU=&fqnVA5ZrWdnXp=&IIUAC8XYnXepq=&Gbjg2lZUYYlhc=&MTaHB9Ue_fnqY=&lG7TS4Xlghfgi=&QXW5UhZcrmbrf=&NcjrDdXqUkcgj=&wijrseXpWnWlj=&hXuhvMWWprjmY=&RPnjm8ZZVhkkq=&sNMBUzYZchnsZ=&FYqN2TXisglZ_=&3cJBesUolnrYs=&oIjNeqXqYmciW=&c4Fk9hUWqaUkg=&L9XpXyUsmZVdY=&qqHw5LVUUppkU=&lnT_hDWnsoibo=&U9rmNPYmb_nfd=&gpCUbfVbUUVkZ=&Dd3aeCWnajkql=&uTVd9LUXcZkhq=&52IYRcYbmWXXk=&z_UroSUjWoiVZ=&4owMJCVglkohm=&Ju2SjBYdqYlsX=&96BOAZUpcaYgd=&NxuiipZZYXYej=&zmbsnkZVmZfWU=&3DUMzaVkfqief=&rwuQykZqYgYYr=&R5F8ogXUmjnUh=&BEd472VkrljUb=&MCPRK2Woqmnml=&cjSFiFZdosogW=&nYuCyIYomfdjX=&2tr9PdZinpZbp=&fDz5ZLV_kXoiU=&uIMbdsXkVsabc=&AeT7RzYbpVhfV=&nxYy54XfYpbdj=&HNlq4UUnokogs=&2AgdKzZUnmikq=&clRK6RWjhpdWf=&HiyFcRYU_nmUj=&QdEqssUkZsrlb=&_hIB6PUZnbkko=&6ar9YoViVanZl=&5vjqMxZgXkkjl=&4AZF4SWcdqlba=&l47MsdYqgaXmp=&qcIWxdUZna_kj=&SlKKEDWfaXpbj=&UZ6l5NUiqoelg=&ohnkc4XnXVdbs=&mQsBn4UqVfXqX=&pqcwYsXiqnZmj=&toHVtDXdXWdYs=&ktLYcvVfcrbbb=&wsvfi8YrdslUf=&zKZL3DYdmbbiU=&Du7JK6Yrsidma=&Au2ylZZgqqWaZ=&t5NDAPXrngkYa=&7BldOIYp_Xblq=&NGXq37Uohdori=&wpMaNxVqmfdcd=&oLwPiBUUbeVYo=&HqkRiZWjoUeds=&lvEQgFUrgseYl=&cIbA2RUmanhhd=&IWARLyZWslWlq=&QgiIEUUdjieaj=&nA53_7WnVW_qm=&cAMriSWpoeepa=&CXy7wfWrrgggl=&bjK4EtUahlVfZ=&jYRsqiYdsYZqj=&yyBkgFYdcrjhZ=&KBgwykYshjYoe=&5elKcTXVapdgj=&4qEjKwYnraVmc=&NTmq42Yranpqi=&FgDyMYXqqcmqk=&JPxqB7VhZpm_h=&vIQxJYUghZgVV=&PgiRWPZWn_oVh=&LyctUhXabUkfb=&pAq9giZinrof_=&fUwSB9WaZhlks=&igLAHAXUceZal=&zmOr3iYsppjVl=&ByaKPcZrlnUob=&AB7k7CZipfZsY=&7GNMdDZbYkoWk=&zIfvu9UnpmXfa=&x5esqwVYsWaWh=&MwcP83W_rYUag=&IPXniZYghiXlk=&jXiKp6Ysckjck=&H9aTGeVnijabV=&2BX7WOUnpUZaf=&GEcIFKVslfdZp=&bJdP63YXdmmpV=&u7jPeuVXUqgdm=&4tVZlUYkWgdfk=&rWfWqJZnnneXp=&PD55ZiZdoq_mW=&s_5LN6WU_nVmi=&5tQMlIZqkgpWl=&2emgqQZrrkel_=&xhF4nQYplof_n=&thQwFwZgUkYgV=&Wru6x3WpXqege=&HutYtPZokafXe=&IlXAtJUnmc_mY=&9eRrCRZgXlYol=&c7IY63WqkYemk=&oH6EyYXsmb_cV=&fLRykoVlnVdpU=&TFy4yMZhiUZmh=&KNC2eQWnkojqZ=&QmvqXWVniiqlc=&sBkeJrYnWerea=&CxUNZRWisigbc=&mkpaj9YYdg_nj=&V53BiyWmigcgp=&bqNlnGZnnpehY=&q4VgcjVjfYVlr=&gbkMAoWhgrfni=&iVVTHIYfYoWdV=&5U7sAMVbklZYn=&Hiq7QYVoUfomq=&QNViqCZlknifn=&pKdMXkZqfebch=&AUAMhuXgijXon=&6J5HItWXXsWn_=&qtxOqKUXjdUaW=&zOrbtnZihaWoY=&xq95kvZZldgoZ=&bKjDZfZscgVhX=&hin6fyZairWYh=&Zr9u8xXXsdocs=&gzg_dWWYWjrUp=&NPBr_nYgWUU_q=&sveZjOUaqmXip=&OSQPdAYpbldkb=&448XLdXaYg_nX=&vG7mI2ZoYehor=&uZScp2VYimrkq=&fHJ3nxWhqqYX_=&7Jj_OGWdYlYfg=&DML6hfXsroUbp=&5ndmLCXnUWZsd=&6nwPbaWk_jVob=&J2KMYhWjiZbpe=&J4Gt2CVUcleZ_=&pKOtE8YcYmsUm=&nJVkRQXZiVWln=&2XDYvnUmosdsX=&v9FuSNUfcrVpa=&97uqCnXkpWihX=&kIkwQsWqWfqhf=&nzw9hHXXiWmgp=&MTWyk4WZdmUor=&kMuTcVVrmleVZ=&WWevigZrUncqh=&2oNnEVXfgfsWY=&V3NgkIYfracah=&cgIPDiXedW_fq=&nvUfpwY_Uadiq=&glF6jXVbjYslq=&9UYMoxYjYmgn_=&HTC9fsUjhd_ni=&si5gPoZYasedq=&BKTqGwYphb_ik=&GmL2unUeibgUV=&vZER3tZpnpnZp=&iZiuULWgUdqso=&H7sNbxVjVYnhk=&xDqtnwWorWcbn=&CjZuuxXnsaosg=&iY_txsVYhcgeV=&qPPLUJYYcpese=&xlLrGRWVVoijX=&IvjDZrVmUkeqr=&ngMZ7cWmblsng=&y6P47wUsZnden=&buniQ5WXbfkag=&mm2MgBUYVbbpn=&MiZkTpVsYbZhW=&iLFX8xYcnfigo=&6xyZ5AWqeqY_U=&ALFaCfWgjYZfn=&qN698aXVnpoqe=&peXPcKUnrYlbe=&8N59awXYVYVog=&e2x3yVXqforra=&axogknWUeZXkr=&vJxkcXXgbgqYr=&8Mfl5bWdardmi=&8Zo9HxXUqYljY=&xxbyxrVWVXZfZ=&VEoiN9Wom_fZl=&3wbqVZWqZagkV=&XYFlG2YooVhop=&VgnN4TYqmscci=&JgPx8yVYlkqbs=&lsNWuuUkYXqYg=&Uq4wAGYomqpcl=&k3zb5rUrpVlki=&GBEYPsXZqsUrm=&DONNK6YkZgZaV=&t6ymR4ZijcqV_=&uqjwypXcVlaic=&F6KwR7YrdeUoo=&AcMo8MYdjdnkU=&oXJnp6UUahdbr=&w2C8YYVsfpsa_=&PRDbG4WkeclUb=&NS2IGvYfXWcVd=&mYsnysUXkXd_f=&MbzyPbXXissh_=&aC3VWhUkUdbZm=&LFLaauWdkfodZ=&JMkZcRYZkeZnj=&y5YKwmZVUrsko=&RvCMlLU_hpbUm=&PqabaxUfVUimg=&RvDZDbVffgm_U=&2oRyNpZfkYplV=&o4baSiXVobU_o=&stcAbNZnlVasU=&S9BWq8ZrlYWmW=&yKXSncWpeincn=&3riXiOYn_redU=&zbSqoxUlXcnpm=&kojHL9VfXYWWZ=&ILdBOkVYmbfmV=&GYutDGUbfdnnY=&Pc6z2fZiVcegc=&36VArKZoZllVr=&ywcZr2Xjejqla=&4WOSMNVpijYUY=&9ICUQ5ZWnp_qq=&skjDW9WXUqofb=&9L7AppZcikdqo=&zuoyGwZsdVgZm=&t9u_OQXfeaWki=&9TL4o6UrbdWbn=&9nlcyoUYopiqi=&HJz2bZWped_pU=&IXJ54VWkhVepc=&XSWNntWjdmkUX=&eYrKmRXoppXkV=&fIWWRjWaspcpi=&aDme95ZdqUoUe=&nnuGUAXZUdVfY=&xfYkfqUpprWXc=&hkootHYYnqnY_=&qrJtCQXfoqXgr=&lf3JHEZlWheag=&IwvxM3YUddlbb=&lZSNEnVVr__Ys=&tr5ujMZspmfZe=&T9Ey7EWWXWXiq=&pPDRo4Yahgsde=&pJhjunVZXss_Z=&3baSJyXqnhjcV=&yTS6rMWdkXjjm=&K5QyxYUqleYV_=&TlHXjJU_sfUXb=&wcxmxZUofsUVe=&wx8XgOUfjjWol=&GnI6qsVbdecUo=&SfjaAUZ_jgfUi=&KMaRadZshrgam=&veikPhZiXlnZr=&BLN3m9Xmeiloq=&i2MkNOVrUecdo=&tPv6raXsjl_sV=&yGFJevV_faeYU=&3JcWYVU_Znjlb=&d4nglcUhkYoam=&XWjNYuZeadinl=&QYJvivVnVaram=&QNM3ZwUo_cVnp=&Qz2rjKUYVUbfk=&QIGtZ8VkVmbip=&5yMyXzZaYslVW=&IQGpkkYWcngjW=&7kDOrPYj_jqdf=&7vRnh9ZUn_nVZ=&gUYXW5XaXWkqs=&q6KwMOZajconl=&gij2oyYlVroXf=&hp_l8WWhWpmfq=&eCfG7sUjZgZb_=&Vt9xF6Zbenah_=&T_G9gPYdeVscl=&7aep7HYodfnU_=&7FSLrNUYhnanU=&iJLuZLYlmqWbX=&j5PucfWp_XXcj=&fVGLW6ZadXolf=&XhjRQcXhn_aei=&YoYuh8ZqsjYgX=&bkdz2rWfosYVi=&iZhAq2ZZapgZg=&mAHA5NUcWipqa=&byBMMJWVZodir=&HLaelpX_lmVVn=&HmCtvNYVrUoZs=&WMqflXUmlZYdb=&kLkz4VZoj_fUe=&S7oqFfWiViYZf=&EovRhZWp_Xoj_=&TdXv3uXmreXrl=&MqMikkVijjWrh=&X5_EiXXYjldal=&5aqVoeWadWhmc=&K_6qiEZZejUUj=&KZLBbfYejhfoV=&PPY5QRVoocagj=&bLUJjLYklcUYh=&9d5fa3Xappcdr=&IDhbn3VoqfYgp=&yzkKEfVbb_rcV=&C5rQTAVUgYZra=&BoQcCyWgkkgrj=&C5FPWvWcnXoso=&z3TGLvUjpWYqd=&9Kw8d6UVinkga=&vrgBMQZdZbpsj=&WmnjCEWoVY_Zd=&Whx8ssUnWnhdW=&MrsEIpVX_eine=&gtpapCXXeZWgp=&aSEFrPWkplhWj=&Uc7JHTVarVgra=&TVskUcWrosrgV=&vMP6rXXpkdeen=&L4vw4PXcZYXbs=&H7Bex9XdXomfi=&daEWblUYqahYX=&7qWhZYZccshnc=&CzkCklXokkYck=&6dnpz8Vblcems=&JhLU3dVjghjgd=&7JVMJGVVnlika=&4JzhEdWXqabdp=&qzSEvMZmpdobf=&UHK2dpXo_Ubhs=&5YU74dUpWg_ie=&sVLGZfXYqgheX=&57Wx2lYcnZlWX=&xdoaMCUik_ihU=&B5n7COWYhUqmm=&LTNtCXYfrZidm=&yn8zp7XWfaan_=&8toH2fWmdjUcm=&ipYThsYVme_kh=&7mWQPVZoUhWYZ=&2dCBDAWirdnjh=&8AjGqGZYdjdkb=&miHf3jVoZelUX=&yhANCGZdscmoV=&44SelkVVkqWXr=&gP5L3fVUUlndY=&PR8IycVm_eVlj=&UbxvW8ZnoZVsb=&DhSclBVbWiqn_=&NjuKX_YYrsdbr=&R25kMwUi_fsnp=&5Wamc_WhUXUps=&cevbkmZrensia=&86CHbfVXhqqhc=&whZ2UGXidedbe=&IwPD_8UckXYcZ=&84esb4XkponXr=&F49mQIVmdfWnd=&gikdw2YZe_Xqd=&dz8qgmXefmZhq=&Y6lcI4XXaisZh=&w9BSNrVZeXeVY=&ifMu7XYifgXaZ=&a88pV9VscaYiW=&OOzERnYfmhdsX=&Uc8AIIZkgmcpU=&fgl_CiYWfnqlU=&ZnOFBXYqXgnsg=&Pc3zIQUenfVao=&pAF4lRVpcsXWh=&deP7BpYiZUrcl=&N2dNQcYnmgqrj=&tYZi7rWYnmnhd=&zxffwXVafqkbf=&aliutvWZ_iUbm=&zfIJ8NYianUej=&Ykia_lZsjXqjq=&pIgwuyYlfrmf_=&l4uIGvYhVWaWk=&kn4ky6WdXbiba=&G9SBkJXfZbnpr=&QpibMTXhgUndm=&R2R67xZjsdXnV=&mk3EGfZYkpsga=&HYndk2WWlonfc=&r5wgnlYprbddr=&oWibBQZdqqkir=&SZDisLXUqkmgp=&CCtrbwUfa_bga=&KrSrjeUfWhaso=&dEJ9D8ZZadmaU=&8ROo8uWWrVggU=&QN9q9zWgskcdY=&JktE8qUbqjekq=&4zBOdjUZZUafX=&nhvVypYqeUnrW=&o4wSX_Yesagnc=&XklOXxXmpcdbV=&fqL5b4Xmmodl_=&DIAIC_W_dnWmk=&_QcD3aWgnqbWc=&v5CZfmZhbrcXj=&Lotc3DXWjYook=&VSbxArXrkmmWd=&qvvmobVfpVqsa=&QZ5_rgVnpnWop=&ASeyeTYpZjoZa=&obEtWKYWalkcq=&VM_3yBXVemaob=&VVAqZsXcahqfj=&P22MOxXqW_gUo=&USJkPJXZh_kpq=&8QFQpFYiccaor=&yhhaRkUYfmWap=&62DxNvYcUiolm=&flLfUkVp_YVWe=&_TeTtxZUnVoUk=&mvdWFvZenene_=&ytkgA4VldbqrY=&Gf4rxSWWVnnYU=&gublMvYV_YUkh=&Zg3mjbU_angfo=&QQG_ZzVmiWisa=&7JtGEcUYdUkmU=&jMC4RVXoqoWUe=&n2ag5OVroV_pr=&rwCrmIWjjs_ip=&gTQl8jXgsrXhr=&KKLKg2UUlsblU=&5nPJAWZZqpjUm=&JVaUgxWYmrhak=&9ABPltWYfaWmk=&FNl_zBVoUsXWs=&94UyMUUqrnZVU=&_L4qfjY_ZVZbr=&6TfGtBYkVUcZo=&SilonGUedaVsV=&VA4C8LVfWksaZ=&TTrZLsZmckjVp=&irXbe5Y_coigm=&5DzAKGUrbb_Xb=&kWmIPoZaYYUl_=&FxBWszWcehsim=&fBVHBZVlkahcg=&engxeEWgUVkga=&HHYJnaZgjfUm_=&xgpRkOWg_oeak=&Aval94UlaUcfc=&_BilD7WfVqXpU=&kjqWSOUdj_pVe=&3aYqX5VjodfYY=&jJ9xfYYqcdYdp=&LmByOgVlrXVUe=&Df7NFJWYWmajX=&ZsZpq3UpWdejX=&6TJX_bZpYYanl=&8tEcIfYbofZja=&GfXl2BXZZgfjp=&igK4ibUdsbkZg=&8sVuLZYqfcbsh=&H8icdwViZsp_r=&OxnTeeUXrqYYk=&DzFoOhZsqYYUo=&TfS5sUWmlarpY=&_KyiEpZ_lVssp=&Cuvi8ZZcihkfd=&Gl7VipUjXVijY=&ymvgSYXffeWoj=&FMLG6eZ_lqpaf=&DjnWZtUffqss_=&mVLW6iWrZVnZd=&iL7XXiZncXmoZ=&gSeic2Xssblne=&AcfxavWUrmjWi=&rdP2gzVXkpnrl=&RWuy9XWqdsa_i=&85aHQHYUmapj_=&GVlrC_UmhUWha=&lQWZ_2UUYsojj=&xSiU7iYam_jcf=&qzoKsRY_fikjf=&ohPcpFZUcodsr=&UxbBjJXYoiaWn=&UynwgfWYekmrs=&R2E_MzZYe_Ykl=&Ax9q3SW_leYar=&DNSnazZqpipXp=&A7qFFbXqcpseY=&UoutyRVWq_ecY=&JctODnZXkps_g=&zDao9KVke_pps=&9IPo2fXhmYYqq=&YDw3LbZqjoonr=&xs6TjFVXjhcam=&6tTPaNYsYUcqe=&levOloWnlVaZi=&JqlIydVnhrZpa=&JEImuqXgmepmY=&ShI9pZZgimUsX=&QIe64hWpqppnm=&Qf2uiNUhVqhXU=&4CatDXZlZgaWe=&SaRI5pUeakpae=&CBKrfbUrenZck=&ihnTCnVfcshoq=&vNZrHsZZrassd=&KJpOLwYbo_saj=&Wkao2tZoihahY=&37smXgUXWpsZj=&NOmKtmWVsUcVf=&9WJxK2YYWhaYV=&YJkr4pZbnYksi=&In8yTuVmgeYXU=&wr8V2nVfeqoqm=&gnN7DBWkqs_hg=&8uuGUkXbkVZoi=&NqOFCGWVcnqWh=&CPVNZmVVibZsd=&47WbuLYsilnq_=&hcddjEUUaiZdb=&d9W8HSWifigpY=&VBgdOWVkV_VcV=&2G9XKhVmYpame=&CooSlmWiaqbep=&eM9LqhZaXUrig=&FdegkZZ_mefff=&a3VT5qVVqWVWm=&kwH5viZkdmVhr=&qR4JwyVWspkbh=&8V6l7FVlsjqjc=&FSEIRXUjpaqoU=&dGv94RUiZchbU=&hsEQ_oUVgjlaZ=&ycXywNYcclcgs=&Ow2xRcWUcVUj_=&OEer4zUXhrY_V=&E5YaOrXVo_dlk=&Xjmu79XYcWioq=&4O5k65VefWlrp=&Yv5l9nYXjmqnb=&rP59wvZorqlWZ=&ozwBKyZUfpkg_=&nKyGwaXa_ZbWh=&VGtUtzVfionke=&UiYjaCVWXqeWm=&gDBwDDYcjjZZV=&AIcu3WUYbmsnb=&8KQdt4Wq_lnmf=&TuzbuqYldp_hg=&wXejwgXdmlUci=&s6wYa7WYqejrs=&8XtBVsUefWXdr=&7LctqFUsVkjfd=&CjqKQrXlpWYlj=&beHYGVX_Xbpa_=&qzTx3AXUjrgZm=&sAOAJvUZnYVss=&4AOPA9VorsppZ=&K9bGh4UoefUZY=&JrpR_6UlficUg=&Pte7fUZUajcee=&uNFRKAXdhnXra=&KRYVXQYWnpndm=&IdlEmJYqgofkp=&OLhfCDXgjkjqm=&LgmYZUYorZesh=&hZe22RWk_ipZa=&a9AFFPZggmUhg=&qM2tjTUUkeaWr=&wngwZpXWrVbZr=&hQZpwaUWjXXgb=&qDaiDhVg_shXn=&Igiy7qWbYbnYa=&BGZnHZX_pZXUs=&HLpKl5XcoXfgW=&gVRFj5YbXmcil=&HpegVzZXnhqhW=&us3IB4Xfnaepl=&rjzR4RYYcjZla=&aktmkxUfbUadq=&Kf2IL6VYmjanc=&ABH8I9WniZfol=&7FVggkUgjrUVY=&JpqkzqZnYqqUa=&WifSucZjaVrga=&5He8zGXZgYYoW=&S3awSlZbWicoo=&_4bhxKWqfabfa=&Ge_QM7Usfs_aa=&lbOFCoX_nsbeb=&_4SAqDWXkbpph=&teDXLcUYUVdsj=&JNcJ9aYnXajhi=&DVfWsVZYndpUZ=&sKrt4bWlp_W_n=&A2s5DeYiUdqYU=&dGc44lVrql_db=&HW8kNwYqdVorr=&NjT5q4UW_ldmr=&NCjZJDUpVbWfo=&dCXiSwYdjseda=&6dWSRJVUjoWir=&ZdrRHWWXjYUXf=&uQSZiHZqfWsfW=&7KpXO7ZiVWVkc=&OP2hWEUiWinWn=&6B5KMoWehYngV=&ESRDzXUgYpYgo=&MB34mAVhmgpmm=&AB9qCUUYbrcZp=&SRvUSqVpfVVWa=&E7ccuTYppfllX=&v2dpvHXrVWims=&OmugtyVjmjXem=&GQXII3WZdksYo=&ZC3HVBUYUhYac=&vBe3y7UgX_Zqb=&iyIqduXapfgsn=&OPC4oBZkjiUUo=&C9v7NMZkU_ZeV=&cGZv_XXpefcqZ=&GHJ7DkVUldepq=&hLeWyXZbViUYn=&7lU42oVcfVckp=&LfHtZzXlhiafZ=&W_SlD6VdeklUj=&t4mzsIZilVZUq=&iObgr7UXUnjpl=&oSJXlHUlohUil=&HhVadAXkdeicp=&oPiUyMWefqjXb=&C8V_GcXloWsXU=&gQvs85Zef_qXi=&nXuFRLWhbUYUo=&2Bt_IBZ_Yscbl=&WVXjomVkocXic=&ZUm2AWVpUhoiW=&ycknnjZpsjUlg=&jsm4TBUqUkagp=&Jw3UMWXZfVrpc=&NpsylYXomn_W_=&iCFoiNYalnirU=&ANx3zhXUsYaXj=&FzWx83XeXoVph=&swAFHQYhqhbfV=&dvgvfaZlnhkaX=&yoDwlJUcfoYji=&kBwtpMZgroilX=&djx3RZYrfUeag=&ZJUg8_ZZXrbql=&w8UBfxUeejppo=&UIpquIUeYfkWl=&Rhc4HYVdiqfkm=&JjkDntXrpkZeY=&222uirYihlbbZ=&Ws62v6YigVXha=&qkamYiXklZmim=&hwJ59AVn_hhaV=&ombypCXXYsgVk=&ViFFu4ZmasYbZ=&G7vGxLVfqZVhZ=&H82iNoWopij_h=&iWut2TXUclgrZ=&6xQJxZUqWmbah=&l7bTgCWmmnnea=&kwi79kWpplUrX=&o829ipYqggdin=&35pPY3YrUscpZ=&yqcYjpVmsVYp_=&KF_Ll7VWoqocd=&VZDRnpZYskgki=&qErUiXWjreccf=&27Zf9VUXklqkf=&kfpHQYZqXlUcn=&aUSKepZdcVsrm=&EW6hHuZbhckeh=&xve2rKWoXcmrf=&auSM9xWbdWq_s=&HHp7PZZcVirsh=&iks9ZyVclrXso=&zhUJO9ZbfenYY=&B4c4ruUcXZdnZ=&mikqyTYbUXcjj=&gU6TqFYbhenna=&DkGj8uYcnjgff=&5vOaWOYjhkkdr=&5WmFLWVidcfWc=&pAKv5IUVZgkbo=&a763zBVddWVii=&TJBB3iYYUbUsq=&MSSlRsZcVaqqn=&S6uo4iUsecWZk=&IaokTpUmXsmhX=&kPIvWyVUbdfXa=&O3ooMjXUmXbmn=&OKTxoZXsUVmnb=&TDxBVGZfnifhn=&xyPS3QV_XWUUd=&YahDa3XjhdkXk=&3_yj9XZrpgsgY=&MvtXSMXqWVmjV=&n_VcSXVZXhbUd=&5QQyS7U_rlWZi=&oFZfNbXbagUdp=&QpXtEjZiZakjo=&3WLrGkUrU_nfg=&p6ONMoYZ_eof_=&2wAGdsWikoiUV=&MCJBFFUhggkiY=&owmSHDYilpZrp=&wNQYN4VfYesiq=&VEnahqYrndWUr=&m3hiHEVoYkiWW=&etU_LpXb_hghk=&Or6QPDUqscnak=&8nHQdDX_cninp=&t5FsHlUsqbXWZ=&JA4cdhUfrcUpa=&tEGzu7YaYoiWl=&Ja7KTtXbokVVk=&8MTmH5VaUdefp=&nLIkfdYZmppjV=&Yr_adiZhlnmli=&3q2J_TUidcssX=&KuuRA7Zmdap_V=&zGD4czZUgiihj=&QtOBlhVVkpbUd=&V_Mc8PXcrcUXp=&nqIM9QUkrhjrm=&Tmz62LYs_YiWk=&rfBFYGUYoWqfa=&xNKARcVppbWdp=&5KUu63UmbkeV_=&vUYtGOXdbgdqZ=&Ff4t_GXonofcW=&pUGXBpYoqfesW=&j5uMJxWVXejXe=&zWQrj_XfXcnbZ=&jLlQzRXjslUUd=&wm_V6aXhase_n=&3XnlAKWmWo_si=&M2hTCpXbknagk=&D6RhhjX_palqa=&gBEYvzYndomYY=&p5pM66Ude_WjX=&Vbum5WXcqkehh=&XWIg_tVsfmpee=&TzEm2SZdrqa_p=&gCyeDsZZgmkbn=&MDSWDcZpimYj_=&ru5GHiZsidfki=&WUVWbNXnkUhqn=&fXIfTYWsjlbmW=&toHGSDZfVdgsk=&okzjX9UWWfcsh=&5H58BRWhjdXcV=&O2CaxHWajaklm=&5qaP4tZcjsYdb=&ugqyPHYplVqWs=&okNca2YaqWpga=&iCYxqmZYVogUU=&psz2x8Ukm_jYl=&ljvYeaXVXXVfe=&Cq57BdYboebbk=&cPWbWIUaaqapo=&324xROWfcZbhf=&n3arjTUlWnpXp=&LtSGTAWbirscg=&gmzthCWhVmZjm=&yrlriMZUWofYc=&oPMQggWbXnY_f=&8lqFmPVemZoXk=&aRk5wmZXUfeeZ=&LNP3sqZVkVZYc=&wCr_LpWhidgjf=&igNpEfVhWrisr=&MWt_2cVZighpj=&qihX9_VphXaar=&2u59xHXr_qmhX=&ccmfPzZZfYsif=&dR7pL9ZoUZ_js=&bu2V9tXosVUZk=&S3t3wQZYjYgXr=&TmSkaoXcUohXn=&hmgHEeZbXYgln=&6ZnW8kYlnpacq=&XQlYDMZXeZcsl=&Z72Js6ZdXqk_i=&dAHKCMZsYVZee=&CY2PmqVjbbiqn=&_9L8c8YcmYmZX=&2Yib9BVUkYbkY=&AWknpIYmXasZp=&t9skHsXbUirXf=&6UOiWtVocefZ_=&2NpcurVa_bpei=&2NNDk3UUZfepk=&K7KUn4Xlrqclr=&BZPvyqWokXUWW=&F2iaj3Vskbdri=&gkwOVkYWraqho=&gCB5LwWrUcmaq=&YUfypAVijYdVn=&XajruLYabZXhr=&Dk6px8XksbYqU=&hwREbPXU_Xaih=&rd73gyZqepWmr=&vWyDQJUbnVmfm=&jAFIOeUYVVdoY=&S4iJu6WpoUkar=&jFaTeAWhaklk_=&Ki8VgaUnXoaon=&_vAJkCZpbq_Wo=&X4Jf9bUkXjWiU=&nT8RL3VddifiW=&aAI5QaVVenXrY=&iBHkVTUmlabXW=&tQzVmTUdcn_Yn=&zITozFUkfemg_=&5c_ZCKZb_rZco=&PIfdLeVmkmcdd=&csV_47ZWerqcr=&IcVdpkUhranqb=&uR84kOZgrnfe_=&alSiqzXqcpVpd=&4cIy4UY_iXbVc=&nj_EcIUgbpqsd=&e_5ltnUqjdfaV=&y86qkEVWrbYbh=&XVx3XnZpYsnfq=&Q3NwlMUiZWgaq=&hSq_l4WXWZpUd=&nKOtwgXiYaaae=&Udkk88Ulgd_ge=&sPjQbvXccaZUV=&Wxm6VpUUp_hsX=&fF23r2XYrahhk=&JOk39XYagsgZm=&Iq5YAYYdXUZXd=&qna5m6ZrgjeWa=&IKwnu2VjniXel=&VMRmLZZi_oXUV=&_WoK5WWpoXo_b=&XkPTQlVWdgYja=&Ig8i_6ZV_lUqe=&hGCCUuZorYWjh=&O6BuaRZdhoqch=&ps9UVpWerlpep=&_bLN2GYmnfih_=&6CZcmAUskcgdW=&4qCYpWYfXbbmV=&P665AMXrpiqYf=&h8NTmRVipdslU=&Ileuu2UkcXkkU=&H_ENCZYsU_qVZ=&LkIvr9WrqakVc=&IJFsgkUb_rYl_=&KuglruYmjXleg=&2hmcJ6WbdrXl_=&Yfk3q3XsjZjoa=&ya6wHMVasqkek=&Xy45wPUXarmqm=&8SCtZoVkWklg_=&QFVbsFXfa_sbi=&xToLXPUVndpYk=&AvHX6iUVodWWh=&Tjr2J6WsaYjci=&GNsOw8WYWYgmh=&Wt9MtAZaorpUg=&8tOAUeYobsnrc=&wCjmftZgcdpaV=&hPmOAvVZZ_gVq=&nSEEkwXWfabkn=&NXL2HlUcZlWh_=&FIhCSGUiZ_qaU=&gqq5o3ZogWcgU=&ek3d6OZa_hkZi=&VkPBw3VohbagV=&JnXGc8WqjeZda=&s9obF_YUWWmkf=&Xlwh69Xiioc_U=&L_ZOVPUpmirfg=&d2Q4srWngrfrX=&VoUdUQWWdWUrn=&mhHjjDUlqqdlp=&77CvgjXcldnfk=&8rfThKUdZmdlo=&RPqGPnWqisifm=&kl62wjYZXkWqX=&J7a7xvYje_YkX=&bdsm_5UfVkrWW=&x5xI9qUi_bkgs=&kJNYccUhnWYah=&kPY_6LZqhdg_f=&FvgPF2UV_qXke=&WobFsoYqbaZYh=&jC8PgQXXmgW_W=&FnRHzqWUceifl=&8jZap4Ws_YYsg=&K_UtLLZcrWbqj=&XhcfuLVWZq_kh=&U9q2oaYZXiimg=&D9G_vxXoonaqo=&uB5Hi_Yirjgar=&ELbw5YYbalUrk=&lxSY8vUdhmZhl=&FuE_PhXodZ_pY=&yTDyYfXXaYWWo=&aYz9EsXsoYeml=&ljQcGWUZgrjbb=&lwtcGSYbUbpqW=&KujFlmVX_YYbf=&UIuFzoYbeUego=&vm_qdfVZomfrs=&aE6TgdWrUf_ms=&WzbD5zUZnnaiq=&wR4IRTZUXVcbd=&qoef_9UVVencX=&sMdNO2XibfrVZ=&NAhxKNUiplgir=&8yGK7gWesqerh=&ZDpAkFVsobcro=&RvwgI5XUWbhrl=&JxF6ZxZsjosqr=&nW5s8LYbVZda_=&kTySjAVadVcsa=&Sp3NLtYkUpidb=&ogQrSCZkjYpVi=&tUBntMWXinopg=&wVrMw_ZefrXUp=&Um6gS3YcXmfnj=&KQFCfzVdklcfc=&MSx85rWWbgkpg=&s2s5FQVgrZXbi=&aRtUd7UrpfbgW=&EzdBy7VklUjnm=&F2INaaXaWbqdr=&9Y6_8qXd_jndi=&fqoCzMYrkigYU=&sLGqpvWi_apls=&r4GvXqVkrYsWd=&HVWGG4WrhXqml=&EKAKYiXmeqUsY=&xTkLDTVbnrqY_=&47YFifYlsaUeX=&o_VssdXWlmZig=&hMcmKQXg_lems=&hyf7N4ZsZcini=&KG3QSqYhrbooq=&XrPbcqUrrWXec=&eGb3A4Znkqaf_=&259Ec5YVXjked=&RttVliV_bVliU=&HE3W3MVXgrgZU=&QPBKBaWXmbedV=&Yor3qiWlgapai=&5N36N_ZohpZlV=&ivxjf7ZdsqchW=&Q2GQMsYsmYkpV=&I5N9fmUpZZh_j=&6Hh9BPXqZqWae=&olw_4eVWZenes=&YEPpErVXecfVc=&izLlcbYmjcWkk=&dfZWVuYjU_aas=&IjanV6WiW_p_q=&2Ehi_DY_Zdihb=&UgzNmGZsUr_hY=&QvMWD9WeXXkab=&EqWjYUVnso_bl=&EeV9mIVlrUhlV=&GWQDP6YWXiapa=&FszroAXklUmpp=&9VgWj_Vaqhmpa=&7pjHBJXVlqokX=&oFXZ85Vfmibjd=&DTD4STXXghf_U=&FjHPMZUfYmeXk=&37RCioUsUhehi=&q99pKDXollf_b=&WygN58VqshYb_=&a9keY3YajfWsf=&nrcK4OWseperU=&gB8_EbYgejlVV=&mmvnVfZqlcfoY=&oDfNQ_Unlin_l=&KZSDxtWg_WU_h=&JokLdLZXjfVjV=&FmH3DDYVfdoVn=&oh4pePVXbZZjd=&x9VfEWXchZdVl=&V_xHmvVkpaXeo=&LrqqDsUW_ZU_V=&3JW77oZcgYUiX=&l767swXnoZqrl=&93ez9jUXlbfer=&iLbn6RVWkXXWr=&LqCeJLWqZpigq=&9XGtsAZcnrYmU=&rBz3Q6ZnrWcfd=&5DB_teVVslj_e=&gsS5ctZisehoa=&DSQZPdUcdhaqh=&8YEDsyV_fghdf=&JEvb6rUkijolq=&whAjLzVnfUdZ_=&4mVg9XUcpdmaY=&dAHwjCXchcb_b=&KAEd8lZoUbpWl=&j8NlRfZ_ajabi=&GFAFj_ZXVmhee=&vbRhgmZfYqVZj=&HXzUdxWYooYhj=&5P96XSXfnYmVo=&pG_G89XosalbU=&mdFLAFYokhYsi=&VUpWQ6UpoXUnb=&ub6k_7ZWXVflU=&Tb8JIgVogqnkX=&Pm4OvHYXnXnVU=&7dG4wjXhrajpl=&P_fPZyWljlqph=&FRtAwXZVkkqlk=&uDfLLGZbkaboU=&NuPESKXmpXXYl=&_xIFnbUUdschX=&swUAd_ZnXlVXo=&hd8eTrUbijaZh=&IJ4cpLZlqfqnj=&Gx5kYEWsqWjch=&xzA_bdWnsZX_a=&ppL94CVYdUbqY=&Jf8sP3WbcVqfg=&zoJ499ZVrYiYl=&bQ2CFDYiXWica=&lDH9QGZlsjjme=&dJyoJTZpfepqV=&OIeTY2Vel_lpb=&IILQJ4UqYVlrh=&3p2CGHWsaUqdl=&cWU8qMWWossnl=&aISg8hUbUmrYr=&3iet93UZ_bjmd=&CacqLWXmbWcYq=&rlZkHHYrrdmsV=&xThVC9UZcim_W=&h_dbMOXkboeam=&Lj5hnnWYklgbi=&6Czy_sWUpZYen=&vykLa6WWZZYic=&nCsWGbWjmsZjW=&HQydieXfkXqYm=&RgGcnmXYrUspk=&zk8SivWbZcsZn=&bRXeBzXnargZi=&6K_zjDXV_aZak=&FHuhPhXXdaVVd=&d2aBS7Vps_b_p=&RkKJTkYdoec_f=&p6a8LsViaUmrj=&E_QYE3YpqcmrX=&3hzo3BYpkViYe=&eEAGEaXodYdfj=&eZeCIRXrYgiXm=&7mOsYPXWhXWps=&GzOod9Zank_fm=&usTGT4Ys_oYc_=&PYakCBWgWfaU_=&ldmHDBYhbZ_Wj=&5cakPRVmWaoci=&lT73VoZmlVchY=&XOlgycUiYZmjh=&IIUPyhWnpUres=&LlcyYBWVmY_in=&JYqCVqYanjWil=&uOJM3pYjXeer_=&_F8TLxXonmbeb=&YRSgW2ZrZejql=&ihFqcFWrpXeZ_=&srQMJuVkiaXsh=&iXCgjTXXnqaib=&hNRZciUbkefiX=&ERY5xmUYfeiUg=&9e9BdyWkVVZqo=&2kPSNbVnfYeqa=&8FbGSSU_krhrh=&j6vB4JXcUahmd=&bLn94RWbWjekq=&iucmsTVWhokVd=&jqAYkiVojccag=&ifOqoPWWeeeWl=&rmlnKMY_kUamU=&6I65lIUqhdpeV=&GkkiMOVreilVh=&jKd83uZqishYc=&H8rJkuXdVdreY=&KOnpJ_VhneZos=&MLnov4W_lVfjn=&QMqbVqUna_W_a=&Le8P7zXfgUlhf=&oIj3t6XsoqsoX=&4Kbaf3XrmZUUd=&LaUUxzWmUWlXU=&7ZbVcAZbpobaU=&p44ZJSV_Yagh_=&g4Ec95ZncooYk=&zZEuWFYaaZnbn=&NOWqxQUUojZbq=&P6YgLRVjggbkq=&aw_SGuYXWsUph=&yNpvbCUaiVshd=&iaoBgvYsnhmUp=&95LHuuYogegsr=&rMrO3uXUWibjk=&y_8LBfWisqsaV=&xmYbpyWepjdhm=&jn3yAeUYcXamm=&YSVvrFVoppaee=&sexUkTXbcUkUX=&9NCk4bWYhsZnf=&gkNNhiYssprdh=&67wfSAY_ZVaqj=&GBRIM_VVqpVip=&MbaRXIYalXbnq=&jqpFc2ZcgqWfh=&OoBXNOVeoilZh=&oTILrLZYeefsh=&HZUKfxVabZmpZ=&PVhtIRYnffZbr=&h8HsQ6YUpkWga=&6wNIe2ZfmepUl=&kbSJo3Vifghph=&8yqnRbUbkdgbi=&KrFnZfVjqilZo=&GphR2ZUfrp_gl=&Agg9YxXZgUsWe=&x2a8zvZfepeng=&72JxdpUqlViWc=&tHztY3XdW_odk=&LhHDr5Wssmgae=&eZWCLAUfhkpcW=&RtU5tEXkielUe=&s8nYIpVpirkYb=&VDfEVxUVllnmi=&O7XJcTVnZnpWX=&YDsgQAWVlsmnp=&76SZyKVe__ZrY=&mRA9PTZpbYbbh=&JkXTQqWnmZlsb=&vOmXaFWndrpjb=&gmDtYeYVmjmZc=&LqObVjVlZc_oU=&4DoyzVXmVhUln=&2RbzOMVophfkf=&CzfuYMYnkpWri=&iYfzrbXrXefcr=&AM5gHLVfhdiml=&FaFJDrXhXijhf=&IesRFYUVkrinU=&wK7vxeXYlfgYg=&gk2lUcUhdYZk_=&kqadWUZVeoojb=&T7eX2xWlVbdbU=&_w8iYRUogpfqj=&JROZtzYcajXjX=&h5EPJUWhZgmjX=&ez6OxNUirXiVe=&rGOLGSZsUXbWi=&ake4SEYUWniXg=&g4A9CsXZjWaif=&gDrmG7UbWYbiX=&8Yo6SXZcrcca_=&maLYeGYfhoUVr=&klGgHFZrXasfm=&mcGaXOWYZaUod=&LL_YjtUfYkbpo=&uLmJVdZh_fmmq=&NJSMwSWqbsWkk=&Rb5uiEZqbiZis=&pLklSYXgWoXVb=&j_zSyIVn_ggXi=&qQd3WcXhXmllZ=&NHJt28WqXjWsl=&zstPo5UhWeerc=&ObRgiTWVfjakZ=&xIluaJZkpZYdc=&S_TCbCYdabkof=&FvooJKVeUXUoW=&gKoVIUZsiZ_so=&5Ol2LpUdonVi_=&GZQntDUjZgbmg=&6WWcu8VmWneXk=&7RCoUhXsdYnmc=&Q2DNEVZVVpgej=&_GfbQqWprgXcW=&8LM_fxZknUlig=&VqNSiKWdZmqep=&wGkfp8X_aemZe=&UtGb8EYdZVXo_=&nJzhMjVhVVnhm=&eDzrThUfWpogg=&NQdgAAV_Wjhrf=&egKYsCVeVlcgc=&PruNgsUbddZqe=&_4V_ftYhqcplc=&QvL63hVlsjoea=&RMGGdeZljXarg=&r3bGMEXjXof_Z=&VdO9pRVYqXjk_=&UMbTxEX__ZVZW=&SCdr7DZaXYaVb=&ZtosUlZhZqal_=&bQEMcKXeiljrq=&G2hvSGVXYVX_m=&YYJP5QVdn_csk=&HMpoD2XdUlVha=&T9I2aAUkenUse=&ObbKPmUnkkZpb=&Na5EfhVemgajq=&uFM78GVXXoZrU=&qoCwl9YsggWVr=&kl89duWjlmWpZ=&EURA83ZhbZngs=&LdvDRqUnosrWa=&HCy5oWZpYmfif=&FNSnx_Yni_YbX=&dpIJiIXq_ahpj=&gbvMV3VgfpYmX=&dfTSlKWmYoekl=&JWL9UaZ_qjUgp=&nEWESnUjXhnsd=&HtLRvfUdUqppg=&3CLSgmUYijZln=&SpEjQpWcqdUgl=&XA2CNzVUqkald=&ohuVXeVZansih=&Bal4fgUijhsYZ=&LbTEVuUfUcUmW=&NGKPvMWafpfif=&Y2D3pIXd_sYVX=&QV5PKIWmYZebl=&9anmXnZsaajms=&UpL44CZheXVkb=&plFQt_WdaZaVg=&gcHmn4VUrdpjl=&2mKVdNXfbZirY=&Vu7o7FUZsgrjq=&hYIgehYVildks=&moaLZqZVbfosb=&KZngsRZbojeih=&yklxXiUUanhVd=&NgacjXUc_lksf=&DSuR9UUsUhVpm=&ZZJ322ViUnlad=&SkL9U7Zha_ZZm=&LVp_RGVlYrVlm=&bEgTsFVqpmogm=&B2mBSIXnWaqae=&egoHpUYsjjgZg=&ChDgWeUbrmYWV=&v_pRgqZgrl_of=&5UCW4qYhoXlmd=&6Taxj5Zlffob_=&OsMsCwZjbfijm=&ar9G7YZjlomVW=&EFX_m3XpWjYic=&8TRECDVVmblfY=&jZKeuNYjsbleV=&AnQ9VnZUi_nbl=&AZyyHuWlfWYmZ=&5NceujVppgpWb=&7XvdotWibYfYj=&kXQrcrYrfaXdW=&2A9KmqWrbZbhX=&WRuQXHXpdgojW=&NfLtUnVjqoceg=&fOPfmWZfbiWpo=&QhgBuzUdeieji=&EKUwkCUlocsgY=&MluQB8Wlr__sa=&duiUD3YaUXYsk=&sQVzRwZX_afVq=&8u5evoWllZnVk=&4jZJqBYscrfcW=&lZfQ9vYpeXWgj=&SYetnBYbsjY_i=&SWW5gTYmenUhY=&sYSFghUdkYclZ=&kO2t3rZpaXsmf=&z_BCvlYW_dkbp=&jkEiz8UmqmWsm=&STyBSMVfhW_mk=&_Zw4WvWfpejXc=&SXGV7HWYmq_lr=&jSv4QuYhedkrZ=&6uKTPvUYbegpX=&z2lLnvXiYYmjh=&wmmUvmXUklomk=&ZnOYUZU_YVaps=&3jWSIuWoeZnme=&SWeKQXYjqokjY=&s_jGK8VaWifrY=&La4AtKVYsZdf_=&C9izLqVkdrVcV=&p2Wqp_UkolrsY=&ntUaP_Ynefnnq=&9pVYwcVhjrokV=&sfb8_mYhWaUod=&MxKxoBVchXagh=&nKemnSYismeqZ=&G9rvjyWojUUer=&ETqNSPVjobehm=&kktyd9YjU_Wog=&ibsSSKW_mlgbm=&6ufQMyXb_lisq=&fsTplQZopdrdc=&AETCcSVsakflj=&a7HZpMYhUhbji=&sMnChTUmYgaic=&hel4ZTV_UrWhp=&omCuDiWimahkX=&vrQkqWWeZXobU=&9ptHiaYslrbUp=&Zjt9pTUUYeYbh=&yvXtccZknZj_e=&DHI_IWXWlbrqV=&xyt7YxVWYZeXr=&2E5FowYnXXsfn=&_xNeXqZi_fdZo=&Zaz2uUZhUYVnc=&QT_uY2ZbgreWq=&KQSuiBUXiccnc=&inUDoAXeZjXdi=&P_fYH2VVlsaYe=&u2hxZ3WebdXVn=&3qDVRSUklWqoj=&fOePd6WfoUnpW=&bxclxnZhhakkV=&OdmAhjWmUhqeb=&MTmopyVc_nrZp=&OV2XBnXhWagag=&hwKulpUer__Vk=&GhElCuZ_jWW_n=&4P2_OpZYaZeja=&8nDmJnVdrhdUr=&K4aF62XVrrcih=&LRISLvYqmmV_U=&GMaPDhZVoYofp=&uhBdofZr_q_pa=&6DZEiQXUrmjaj=&d4TjBgUbpolch=&dtGxZ5XirmmaV=&uNbDiJXkkUggs=&mUe3q2WpfpiYd=&86m6J5Xjbcfqj=&ZFJKyBWVpalbV=&mXRYLOYhjsnYr=&5mugQYYUlkc_c=&nM6u6NZZh_dor=&lGKCPrYfrnliU=&j2LaNsYlisaVn=&QIOW6gUkoabWh=&lq4E3uXejgrhr=&jHg9RGVgVqlcb=&rTS2YPUfnUrme=&eWNT4vWsWieYV=&TTtsR5YZVpmfp=&9wergLZfVohah=&tu3bmLUeipfrl=&tui23hXfiqUrl=&vuYrWIYViXlqU=&zEyR6nWmc_ekn=&Y5ZD3RValgoXn=&gH7APsXbcapff=&q7ZaMLWmYjrsn=&f_ehTlWbhWWUf=&ivR3glXWpjers=&JJjn6kVmcaafm=&yfSfANUkUebmX=&AX5huFVskYVbl=&XxU4PtXoUdjpi=&_mksgkYrVnell=&ueJgX7ZmaiZdk=&FPDbFgXslWaqY=&DKvLq3YgYZXcs=&C5FiCYYpVdofa=&wRaHVKUkhZkbp=&b3GN4gVnYmbap=&ZBPYMLZbajjdU=&TmRfoQZckZrra=&DzWC5wVdesaWp=&V28g9OVb_disV=&iZtwIlUqno_ra=&HjTglNVYomXic=&Yx9akiYsmfsrq=&f2lMdPXXl_lVp=&fuNZDjXZihYnq=&_rMQreYUUYsbs=&UBTzsBYqWpYqe=&E7qR8WUsgmWle=&863NJTYq_Yoff=&wJKN5iVrW_ojc=&9VwLpjWhlpbVo=&Nj3oGVVpjjqU_=&WrX2gyXcplbio=&K3rQGXUWUakrg=&O9JaWIYccdaaX=&flpWyCUjnabne=&GdpyH7ZZpiXXh=&gJ4lp6WnYrhmp=&jnvDP_Vof_YfZ=&lnnlLqUWafkUp=&6ko52JZncia_e=&MObQ97UfUhlpq=&LmiHXjYpkjocV=&iOKX46YrnYolp=&_94maQVfadrjh=&4ZuAHlUcljplX=&2ZNQATZicsmkU=&KtOSGlVpodfmb=&ZHZjGXWcbqVZh=&Wjt4HBZUkidYU=&awiFqAZomV_Uq=&mcSsJ5Yfgqnko=&gSZQJ6Yl_oomj=&QIxaIBXlU__Uh=&EGtWIZZegiUks=&WyHnVCVejbWnm=&Tsf6nJWh_UirU=&W3dVnfYebZsiZ=&_9YZgyVXXaqgh=&ZCMRXEYmUjlYk=&XMdpKtYoafWem=&SyzXQyYfZecrm=&YZ5MM4VWrUqdq=&jUMteCVndsnfi=&ZzOjGAXfiXoVs=&ysuTi3YgVdddY=&zEZLepVbqZlYd=&zjGVyXYXiZjsq=&iSDH98WgeniaX=&nOa9qnUcsmpfn=&fyZT6JVnejrkq=&YBzbk3XqZXUaV=&7hA_P5Upfa_bg=&wex4E8YWdbfr_=&e9MjMbXgUggic=&AuFAWVXhgar__=&Vx5k9EUohUolb=&JX27G9WYqXrmc=&iZInkBUjXrmgp=&Zpp2luXhqpXas=&CApSIzViq_Xrg=&WWjuTMYlpUVmm=&b3ewHQUjnsgoh=&5QaFg4U_Yoa_f=&OBpXCRU_gpopX=&xX7ip9Zq_fbUf=&HHAg4nXjVUjbc=&nyasT_VnXaeec=&LzjNhJUYmYeha=&cDvbVmVojUeeb=&zY8AyXZbmosld=&FIy98IWs_aVrh=&QfJmEvWVZlkcl=&MU5F76ZiUcnij=&O2xmQQZgfcWsX=&TXtz3UUYbpakb=&yXXDFcX_UVcZa=&WEahcKVafeaVV=&uIzNNBVchfcjh=&ts9_HgYqiWhfb=&jdoKFtViqjWre=&NyRas_UiYsdhr=&flbcf3VhW_bio=&bmUKkSWrpoicW=&AtD5fBXsbgbia=&u_MQ9TXqkgUlo=&AQjIvuXeVpqec=&hGZIk7WfUnZhj=&2NheNDVaUhgbb=&bDe8plXVaiVje=&uX2GzAVglbXoW=&Wlpz6_ZhkaYr_=&WJ4sVcWqsrYaZ=&oMiK26WrfdonV=&zRz7DQUYZjinU=&HOMxdcYplldom=&EPusTkVcfiZqa=&pHTHnYYgsjmdm=&8sWAkEXUdbhdp=&Tj2tneYegngrg=&wQ9JJVUXdkUrX=&Ys5f68Vecobss=&LWVpoEVZrshWi=&wSxG99XojXsWn=&dJ38aTUbpferh=&6ZaFe3WWcXdeg=&JbTKTXZjhUrqi=&dadA8FXgYbrks=&niuuD9UUWUfkm=&FbjVFsXjhfojZ=&rU6PbQXbdUjcZ=&dqTQKMWZslWbm=&lmEKzeWrdlVib=&jwxxVlWmoomek=&2qG4nyUjsVdsX=&f8dpYFZfYssg_=&mcJguYUffcoiY=&vZSE8qXpbglsm=&LOY32UXnZrd_c=&YtMM5cVeZcVlq=&vMlr4UVpggXke=&fgOn7GZeeejZe=&f8gDfSWnmgqrh=&twP2lDXrUomnl=&iKdQhOUXedrkk=&4HbjplVqpjoqi=&eevxBrUbf_UYV=&mTcEqiVbarn_i=&DwDdyMXUVfbYe=&LRDKmDXff_XZg=&dVhvIBYgXZ_hl=&9qdDJ2Zfflcbk=&cGVA5vYYdrfZl=&iqjIsFVdV_ipr=&4P36AaXpUcnfW=&yQ7RJfZmeoach=&C36ANpYVoWl_o=&65KdK2ZjXmnhX=&LzhGGGZnklani=&DbYNo_Wdmfqrd=&B9A3ftYs_Vgje=&C3Fki7YgUVlrr=&F5YxtjWld_Vnf=&amBkydZWpgbUa=&lsVR94Vplekcc=&BnfDDUYiksWrh=&MhTAoQYgXZoin=&MTPdTGZila_iV=&AIR7RJVrZnsie=&ERtaJyUepUWno=&BZqUg9ZUfWnsY=&oTnUz4ZYYcbho=&NqdyfdWbhj_mk=&ZyMNabUsWpaUf=&PrJvm9YmdZj_s=&F8AXYZZ_jVlen=&tZWvKmZnXfVdq=&3SfxLHXkqUkVj=&7OEBbWZYVfYXr=&aX5akRUrqf__V=&TK6QcTZofZcjm=&PFM6L8Zghmepb=&D76HEnUhjfdfY=&5u7YIlYeZXprk=&pmxVzUVVdemim=&FIZ8YTYrfdfcj=&yipffCVWhYifl=&zIxTaYXgrrlaa=&mx3im5UraeaUX=&yOLLqtWbUXVjU=&mj6yRYXWVYYlV=&J9IfVOWgcYfgf=&iOyf_CXenrWVa=&dK8MZXWhrqsYj=&XtX4vzXdodbmb=&h_OJSpYqrmfaW=&h4H_slWXWaVZe=&nbFWeMYfqUlbn=&oWr8JgWVakV_W=&EzL8XeVcqoeUc=&EJNDjQXsmcY_s=&LmrmcJUagWcka=&PGYtYOUga_jrZ=&bxEjLYWepYYVV=&SW2m3AY_nkmhe=&9xe3rcWfg_Zhm=&vETdR7XhYgUgn=&jKyMmWWirXmae=&7DKLhIWkjcp_e=&C9YIkBWgjrehr=&B4a38OVWbk_jj=&qE__ISXVefegY=&3UHBQ6Uclco_p=&82g7MtZaerjXm=&72__eSUX_fpb_=&EkIBbIWfbekZa=&W7lkREXejhXrq=&YADbMCZcYgcpZ=&oen3ImVZhZhqX=&pTghKoVjcaeYi=&vS6c4mZlpiWUf=&RJHCPLVZioXVq=&Xq7tjoVjiVknY=&j2RrrXVnmYXeY=&zpJjW9Uelgral=&BELmkPXWbrgmX=&kKT_jwXcfkclk=&LwE86RVjXfqfk=&AchXxHZdhXcsf=&Kw_qrOZropfiq=&GeIwa8Xh_jdZn=&Z3LwCWWqXZXcY=&FlSZ3ZZipdpbc=&2l5D5UZanUmfj=&FuhMnWZdrlVfk=&lxOFWUYnjhjdh=&XA9ufqUpZheXf=&IBEnYHYmrnasm=&XEPwIjVsljaZc=&ywFwmJUfYisqe=&pOyd5RVkgaZWm=&oVNV5ZUsZgjds=&OqlYrrXsj_dj_=&8vv_VzWfmgUha=&BNs7XvXodpZpa=&I6ydG2YoigVrm=&iZvUbFWUWVjbc=&IJfjmBVXYUfXd=&yQ_IFnWohohid=&zxOwCTUpnVbpb=&QY_hx2WVjhrYi=&d3Dtb6ZsafoWs=&iC4_6DVZhYlbX=&K4vY4ZVV_ijZf=&EZiqrvZWpbsaX=&oWOopjU_dXmhU=&9H9XbcWegVlWq=&yXM6w4ZdblaYk=&xCBN6ZWVZohYZ=&tlOnTDVmiXnf_=&iDdy3AWYYpXmf=&S5FaAaXXpsjhX=&TsXOlnVnnknZs=&kNixzaZphYVdh=&ohIJ3dZasgnfX=&UPyaDxZslpihm=&tAmLSiVWjYels=&eQ4v36UXXrVcU=&gfnVIjW_rcroX=&qrvx7eUmn_inY=&pPF26bXVejiXd=&IZIup4ZYVbXcq=&iPPEoLUfrfVVX=&bHlMcSZZorYid=&vwkNCxZirsqoa=&Zqvd7ZZirXlal=&cGes9XV_efaoc=&oh3HRHZrkgrjj=&4_7vzQWWhhYjl=&Pl52kkZe_bmnb=&6hC7QmXrpigZb=&u9w_ycYpqjmqd=&QCO9EOUVjVfbi=&FRYTIaWrXsm_a=&itBeUmVdngfhi=&ygf2HrUXjZYog=&5fpHsGUjgjped=&YnMUJlZVrl_hX=&sVowUqYckbUdq=&U7cNtFVrkZVjX=&kqQDZLXosVnWh=&rq9hsjZrjkdVj=&Uwk2BaWibsfpo=&FKGDMHVoacoVY=&36ouGSXakUlqg=&ccZ8z4Uc_ohai=&N8oW4QYdoUZee=&8Rk3F6YYkokbg=&oKTwuNVkZjaUk=&9z5EuGYVaYjbj=&PfFeacXpsXrlh=&XzRvtSUZmUcen=&VCM4UVUpU_pjn=&DzRFHuZhcd_UV=&h_pyBtUrqrUpe=&IkYJUzWc_sUsp=&cvmzBGVVhUiUX=&ROiayRUbrWdnd=&EXBVRgZkVqXak=&Rc8FPdZmiUlqq=&IVg2FyYmqk_Xl=&v_4HZhXmVWasm=&FuW7yZWWoXnsX=&9J2Nl7UjUb_od=&RgpdXXUf_UWna=&khAsCPVWhogja=&p6UaW4Vpioqqi=&eaYvqRXhdfaZ_=&4hGTkZVhZVlkW=&cAMRiKVoZYfWh=&rCcTD8XmXmVos=&3EDCYEVXkZeUX=&HpXV47XdYcU_c=&ClA2GGXeqsjib=&HajLzVZbhfeoa=&wMiW5oYVojgen=&ws5S_MZralUWg=&wxtRlIW_nbqVW=&l8tMVcXUUsVfW=&FlZx6GWYqblVl=&PIKja7YXrlfhc=&EPJfdlZVqVs_V=&CdMVIPYUhX_sk=&orP7ljWWjhadc=&yD9ZHFYeVmqXn=&Tll_H3W_UgoVq=&cMqdIwWnlbsYX=&kCgE2ZYblfjUf=&HS7kLjUkljUUk=&PCulvnVVdUimq=&POcDuZZlcWnkb=&l9YW5HXrsmhei=&LTA5FfUsqqVhf=&uIvH6cYZnnVWo=&QIHHI9ZmoqpqX=&7ix3vnYqWmden=&OJQFWbYiYn_id=&euPRwGXdkgYal=&gx8oxHZZnUjgV=&eXztYcXfhbpen=&SbCUyGWqqgmfr=&LqMaCLXZblrmc=&wmozp_VdfiiYk=&X3J8sRYkVZbcY=&y59Fo5XmUaVZn=&eFObZ8VhVcZhY=&Ca68PZXrUgelW=&UOdgbVUokoUUi=&Rh9_TkWZoemjc=&q2LfomUWUcksk=&8CSeLDVqqpUfZ=&oeiYa2Ydm_Wh_=&RXi4mvUdn_dsc=&f6xWoaXfWdVWW=&P5i8AzZYhfViW=&hcuTF6VfUYgrc=&Z_oRxeYXmojoU=&lvYlr3ZdrUcoq=&MeLZkyYbrsYnm=&sLLZy8WgYcnmY=&trNIzuZlZdkWV=&TRhjPaXnnaZpj=&_vw6GAWj_fhgc=&MCaPwfUYclVZ_=&oBJTSDWoagWiX=&BtRMsuXUalqmm=&zvloRDXriXejY=&pEL63jUjnVnml=&Zr4rZhVVjoeqo=&GGgJxGXf_iZkU=&kBKvNXU_fVlrf=&6Bfr6gVnconjc=&8mFWFTZVVceoa=&K5LiHXWmVhald=&t_YCbAUbVlrpo=&u_AySOWokikil=&b9GWsxZqUYWnX=&jOfxGJXfZVcje=&l6tAkDWiZgesW=&8JpY9dXnpgrZU=&2LJmGsZegnZfa=&SCbAu8YnasWWs=&3Sgo_NViVfcpa=&bcaSJPXVcdkqX=&bK9gjnXsgernj=&_kFaVQUnqUsms=&dOTnrxXjpeqql=&lfxeWQXfYZefk=&3jY3lcYnaYioU=&K7bZvDWbnlUdd=&pTHNzQUjaYigf=&85owlDXsmk_iZ=&E7RMePXmdWg_r=&FlbXZvVsXVVkb=&Bv3r_wZXh_UrW=&FXkiuTXbgijVa=&EHdfooWmbbjgr=&KL5jM4Yqhoplr=&xPQYHvUXafXkc=&sxor6QWsUWerh=&XGgiZWUrjVkY_=&V3he3yX__Ylds=&8Cm5olWmpgcdX=&7jvlXPVceYpgs=&E4afwcZgknYgX=&raIucKYXVfmVU=&V62x8_WfbjqVc=&QyH4BWXd_Uhqn=&3t_7_KXZdZ_kc=&5E2roIXUasnbg=&GHXP65ZsVZcjV=&BAZJtzXigakUd=&wixpwdXZ_anrY=&NMi2lhVgkUgUg=&eFqubRVZiiiWa=&aMQ4FXZkWrhYX=&yXUzUrUhZrbgk=&fgTnkEYded_e_=&8O9u9FUannaej=&r32N5TXqmkqlh=&lTX9PNZemdcss=&d8dSZ_YiWfhaZ=&LtBrsnUjl_Wom=&UsQtmnXVoUbnl=&Umo98MXhjmhc_=&Z8lbqWVYajfVp=&Uew9KgXmiaoag=&icflFrYZgbjog=&ko9M__XUkYjbU=&jIukFOUjpcibY=&Il2mfXXcXXpmr=&oGe5GxZiUXXYf=&UpyjpDVcndrVa=&bMgO9gUhionkq=&WZ23XMUhbWird=&g6Wh7pUfsqocV=&3EJ5tvWnWYnnr=&_Li4DNVgjjWoe=&DYrgMiYrsndfV=&QAyEJmZbeWahZ=&nCwvQFZqYUV__=&gXXEWsZhirpgb=&SmIkaUUVkg_jr=&uEpYPmUiesWfa=&bbSrWoUeohYmn=&wT4lJKYZWqjlm=&3cYDP2UagbkcV=&MPAQmxXmiWZcd=&yCmYYTZfWqnlo=&kZicNKVcrpWfZ=&3YkVYNUmjmVmr=&NpixuoWWaamog=&tPQecqX_dYWif=&xxL_sQUeqWejf=&yppnZpZZcknba=&rXULqvXamefbY=&cyQzQPU_qrrbs=&wvGsesZsrdjrf=&PR7RRVZqmXfVm=&mQsFISZqVZbcW=&3DLRKYVaYisip=&vELxgNXsUoWqk=&tnY9ozWeUdgZo=&5EHJ65ZbnYYlq=&6XiRnuVpmhXYb=&3Oj9vFUnepZZY=&EzqmlNYiZVWsU=&CjJWE3WemgpbV=&6wkwgiYbVWpgj=&AabDJHWUW_fWq=&3GgodLWsdoZhs=&K62A5PUapVqqa=&RhTrTlZoonoXc=&EYBklmWsjpl_m=&qKcXTsWZXW_Wb=&bbeqHcZgZrZkW=&yspqEXYqkggla=&CJX9ijXpfrplc=&L5N_E9VhjWgff=&Q3QoBWVahg_Xr=&VWSJH2ZrspbUd=&w5J8ApXrbdbjY=&HNSCF7Vkcdcnb=&tTVU8sYr_moam=&6DTAQ_UkneipW=&M295N9Wmaljsp=&KCS_6aVqfbUcn=&xwprJ6Xlagsbp=&JdL3nBWhXjdjX=&2VXUkUYcqZbbX=&LLnMoUWeikcco=&dNmwYoXomkn_j=&OYeGABXYerXro=&sATJ9MUXmhZlb=&XzbotEUbsoshX=&DTn6wFZdmbscp=&qU4c83UnpblZa=&l6c2BQVVrpfmg=&WPojoaUYkfrr_=&bYe6dZUmXapV_=&4TXzsNYrbXsUh=&fmyutHZbWlWXo=&4eM8JCUcperee=&u9vZnvUXsicnn=&BKD5AwZVrrVaq=&5b8Kg2WYdiidg=&OqjtW2YUgekUe=&3rZsxcUkmqppW=&VUwNtMUcmksVX=&RPybHXXhXnk_k=&wRMHKgXnnlarq=&Y_SRK6ZncrmZZ=&3g2WZDWVVkphi=&KI6ZcfXjdfVnk=&C3fJGsUndasUr=&jPvl_rXcklfjY=&WrSzJEXrkakie=&uvyoQpXWskirp=&GreKmpVoqbdWk=&_SbjvMUeemYXd=&YYcFX3ZpeXbYX=&DdohoQWgUojXm=&_MCJXxXmcjgqU=&fkGxZOWsdVZUn=&6QgGkPUWVXoVe=&GMPRP6Vldsroj=&rrXUGlYkVqjfe=&_cQOKNXmU_mpa=&uUF3ATZjhW_ga=&IWMZRVZiWggfW=&tGmst8Wppmoca=&hGYE_cUXZWleb=&xDuFvLYkesbjU=&9uSGl9WeaciUs=&WNpAk4VUhfbio=&5ajtYHWZclUpf=&cIdQjvX_eXUsq=&zGSZ64WdnrZrU=&xrdTshWakZidm=&eaGEljUiXocrl=&jqaMfiUfrhaWm=&KDsYhbUfcrmY_=&DD2QXaXhcmspY=&IfezBDXnpVsWn=&TBb8nIYVmef_g=&mhtZ2tXnpdYZh=&CKQVyCXegiWjs=&yL2Wh5Ymngjgi=&vnhzg_WaaZXah=&gqM9waYsoqleo=&K9ORDRVsY_rZd=&fd4uVuXWgsgWs=&K2zI3YUs_Ugfi=&QBKTgIViqXccp=&FsLy_PYrqqmbs=&y5py6eXZsmeqV=&3TCfhtUsijkec=&6mPe7aZeWbVjZ=&xMFgLzZokkebp=&VFMSqNWgisfcd=&WuhqAHUcgmoZg=&mWnGG2WhajX_i=&BvuE_TXrYZYXm=&gbsFQAYjdrUqs=&ul8q7_XoV_kjq=&8SNRmmVUZbdok=&nPkjJsZXZiqmm=&dydIWsUnjbgsm=&UKjtLqZlajWUX=&NQAtBmXnmUccY=&53voxvUUgjhlV=&smLfVcYbXXffd=&jl_ESbYamgVfc=&LXfVR7UrigaeZ=&qHcnnjUiiXqoY=&XBAolVXakapjU=&qCcOVoXgXjffr=&U5zB7TUqVoVUs=&rQZ6zZZffYqad=&NSbVtZYbfpZYk=&CpZGfXUpWjsWX=&6E7HpBZbagbia=&buqj7_Xhqmneq=&dHdqwpUljpeUq=&nKezBSZVkkYpp=&WM2YYTYVpomlm=&TLANssXopsVgj=&tpf9YcYkVnhnc=&eLxHT2YsWqfol=&WW58lqWcnglsn=&Uy9UiaWnhWsqV=&i33JrBVsWbipZ=&esc5_sWZsVhbn=&U4xLujYo_sVbX=&jmpAk7VksYsjl=&cqhyZqVaWfcel=&6VGn7IZpeZrs_=&hAC6QrVgoaf_c=&oPNDtdYpphcer=&wFzjxmUZlmhVb=&BD2PKrZmlqgUg=&WjOVvvVmisdgX=&FZ7HWTXirkZVb=&q67SQsUokjfiY=&s5qEAVYolma_Z=&kYlbB4YU_cYof=&P6agKyWZkg_cW=&htF_exYapqojV=&6TNjpuUl_Xahp=&YreMVyVnbUpoh=&G_rd_WXnrYcUk=&Tqkbc9Ykcspoe=&IcdfDVUbUZpak=&52UzKDUa_eenp=&QsAJnLYiWeacc=&UGkFRVUdhbhs_=&fTeYvvVqndlhi=&UImGOuUakrV_j=&Ztd4xSWidccVc=&HxsPDxYZUYser=&LRIgnkXanjpqa=&SOgwLTWn_Yfoh=&3KyAcWUZkrnbn=&jd4AKlWjYehqj=&Pz8q82Weqgfmb=&PLxmDpVqWjZnY=&3rj3A4YWgaqso=&lXpBbTWslVlko=&eZRFBFYcpVsnr=&F4OUwtYqqlgcZ=&HRQI3AXUWWVrc=&37WHNoZgmZpnh=&PKrElbWpiWilh=&C4hd5PXoVodiW=&XOcEfgZmYmVsX=&dFwcUVXk_qsql=&OuHmfuVaebqYd=&NtbjvlVnjmrip=&v4hSD7YheaUYe=&aQsIMfWciqspj=&VUjvfYXe_cleb=&eL3X8bXVdij_h=&9B7SsMXcsoicZ=&axPviZVsWVorg=&bHEukzZcUpUWe=&DGK5T7UrhgVqa=&9np4soYsgjqgb=&uyRzL9Ygci_jr=&o_6BS5WrsaogY=&2y_rx6UorXgcn=&S_zYqDXgZlask=&_zsNgIUaVWksg=&YIIHrFUjbUYjV=&CqfozEZcZiqjm=&uEiLpjVbhUndV=&Jxbx4lYXfXcsW=&ig6XNZYXkfkod=&Afa2SXVedYbXo=&_z7tz8WrcsqYc=&AXC7PSUpYasg_=&osykPNWcqoUWZ=&3yjeC8UirnVXb=&sYs8vDXksZXqf=&gn7AffUdYmYZo=&cZiE7lVehYnUi=&X7tEwIVk_glbo=&L4nYxdWa_dmsn=&8w_5IxVbkWWpo=&2PIa5bVnrWWhk=&uvtZuhYldi_hU=&RWFPtaVZVgofb=&pYxJY3Zjjagbq=&lkwmpyXsZgkVk=&4q778zWp_fhrc=&HeSVTdZhqmeds=&KoVSuaVarsaeW=&TO8KddWnXVhrg=&mfUXuiWZfchfh=&MJZpGPUa_Y_Ur=&gfq2JdYgdWnip=&PHkWxMZgXhpnn=&H4XDjGYdrkkoW=&nGGZAWUdml_Yd=&UDqvBKXVjZigc=&Ka8MutUojdrgm=&YuqIWFZspjnik=&ZPZHuDUqXXkhf=&ZYvtgHUhdnpkp=&EBQhrUXbkfgUd=&FSWTOIUUiVkqq=&2ornwGYdXjgf_=&cFLZ59Wpprqrk=&EmAtswY_lhgaU=&UmZI2MZiojZZf=&LQGUvWWjhYksZ=&JtLJkPZi_hika=&G9eTgHVVfqVhY=&vYCEO7VjrnfZk=&Q7ODMgWbchjcX=&Y5ogacUipZkil=&7WZ35sXUVocqU=&SLozGtU_XrhZa=&MgwH7fYXsjXZl=&Ve3DniXsdboYX=&U3phlhYmfsaco=&6YFL9gXsXpcjk=&VagX3EVqVdejV=&xSd2huYjdZpho=&2qKx4oWnYeVXf=&6nUlyKZqjkWpl=&HdpcabUssUadm=&5dke6EWnUX_r_=&o6dxlNYekkpXk=&F_xPhxXcdXeaV=&ek7OPDZsUnrUa=&UyungxXZckpjl=&waIzAXYVWqZcl=&nmOxAbZpqpkmZ=&fBDYQoVrbUmhs=&dz_Sg7WoVagXh=&zVwIRHUWrnWjo=&STSoI9VplagkZ=&3bDVafUslkqco=&5EGrLOVZlhXoo=&PHoZ_zZkgqoei=&iFiKt4YngnZkf=&XSFoYVVadagpl=&CiJZALYZkeUop=&79qB4WXknorcU=&He52poVaVkgXd=&faioq2ZjgWYnq=&3tfPkEZpWeahj=&6nsQHiXhUYbnq=&PufM4OXshVpjd=&lHYQhGYiarYsh=&EjmT_MWjqffrh=&jYDg5oYW_VkeU=&lcsG2wVmanVkc=&ewDuEnVnmZffk=&nIss_dYgZpfnf=&lw7GsCUfrjlac=&dr43xYXefVWUc=&V3JmxHWVfkshc=&L5fG8NVa_WUfn=&A9iXOxUasYeri=&rSrYaxZUnWWpV=&CP7KypYeodejX=&VvV8LQYVgbenb=&xusxcSZaofZjZ=&YxUGSLZqkblci=&RPa_JBVhiciiZ=&cItAJ3Vmqijkf=&trC38SWqWoWom=&ohaejrYZZqhhW=&7jgFcRUdsghdZ=&Fj85hxVnWinel=&nwFovrWisb_Wa=&YEMJOFVboaWno=&VecIzFVpUf_Za=&4WExpOZqeiogb=&tFpFAZWlUXocg=&dZN4WLXjcfiYp=&fF_I3pXrbighc=&dKrP8aYmcmha_=&U7vMkJY_imkfW=&6rCqnvXdjZecf=&5pU3OWYfgarbr=&DmZ3zDYhbkpdr=&6kETtNZnYrjhc=&xMS2nFXWYcVVo=&GJlsbiWjmVjeb=&5z3fI4WW_rZYo=&u86a3pUspjYgk=&CxMJKsVeskXcf=&zy_jZnVoeedYf=&BiWMOHZg_ZcVk=&_ika4TZlYapos=&Oc5KauZq_ZdY_=&HtCrozXfhhWqh=&xeLJSEZbpU_ns=&4mKaZqYinjsng=&JNygz4UiqYl_U=&biJOEFWpgVrkh=&IjlPSWZbeqf_p=&WfALLEVokZiYe=&jvhIY8ZcYgaea=&uBrBZpYoa_kqg=&PdmIclUbmseef=&4GDK9tZZYZXjb=&WSoXYyUgXkqYl=&ygyziwZcUpgXl=&MWmzlkXbrsae_=&R2vQBSUfsoekY=&LZOy8OWXaUUdm=&nHP2g6VpqsgXr=&26_lkoVelsm_W=&Nat4_ZXWYXeWX=&5knw8gWaUojVX=&zgb75bZeksYUX=&xSyTOJVYppYqf=&oUJdg8UZbnZmo=&GJPzmLWkXcfji=&ii82cDXZXdnsh=&B9Rx4uYXifZWq=&BmzpdYZpqZmmo=&b87_LXWaYrlfa=&VMUQdIZeZjUme=&iOjRovWmschdq=&lWZXDDVejfrjf=&U5IbvHWfnWrXc=&Gd2CtAZbXdZWf=&A3nEXlUjrVYlc=&OiNA4MVhhsac_=&5bMkwmW_pbdWh=&nCrp6NVZoVnsU=&LhN_4nZekYVae=&fiMa3FVnYXoiU=&TSMDRXZqXbmcm=&IJ7hPrXnfjiZY=&ATtdBHWWr_eZe=&rIKXWXXhrodhp=&dxH5mHV_krplb=&8rc7SOZXn_Ylf=&BJ87jgY_Wgh_k=&3WQrD2UkoWlkj=&D_88lPWsremd_=&J3ym_HXhXgqbp=&W3VgNuVcdUrjd=&pWxJNWYoXmdVY=&uat_raWVZbcqU=&3rBQENWsYUjih=&vQUEMiYnWhZfs=&jZqcbBXZWeUri=&ur9PsCZdUnlpe=&YL2R2KYcmpmfl=&landVzWpfbZko=&R9eSkNUnkejlg=&GbEivTYoXYl_a=&A5Eep_XklXe_V=&Xoep_vYohrfan=&BvK84RVlcUVdo=&Z7IHrjZeh_lVZ=&w7oHDPZpaZaYf=&eRqz49Y_oUgoi=&ABXsqkWe_cmWl=&CW5PwSZVsljiY=&CTPHPWUYkbXYf=&45IfyqUaqpYac=&p3xfw8UrfXplW=&E_kODOXYgWdYi=&APR3NDXipffXY=&MHBRYgYjgWfWe=&CmpmhiZghVnWf=&kC7QrlYqXgimq=&Sw8VHoWksmrji=&BKecU6XhdsrjY=&UT8DHIVjirkg_=&hroMf5YaickZb=&DGvcdrUaljXdn=&aJP563Uomanmr=&BvGzJMYncneZY=&ajbhh7WarjXjl=&RwToqjXWsjVYl=&EQaFNKVdVminr=&Q8ySxuUjreiWn=&LTt8fdYhqXjVf=&oQXH5gWsrffhp=&p5Hcy8Xinngmp=&4ANAaZVkhoban=&I9NNiwZqsg_mq=&A8B36WYkdfa_U=&P3a6iGZpVpVlV=&dMHKd2Xcembch=&ILCJe7Uldkdo_=&G8yQbUUclbqen=&gJJz7oVdaXejo=&M8bQdRYfisYhh=&MQDxdbYeUqqho=&giRgG4WfbqXgk=&uYy_rOZXiWhej=&aTgcv9Z_hhoce=&s82bmpYXchlbl=&smdyPxXlkijrk=&Ny2brBZdnZ_mi=&pSJAVHYbe_dns=&jBHS5FYd_YXkf=&vJgY56VZl_kXe=&YoRKmrYfllspX=&eUMmBfXmenbkU=&Xj5IbLWoqiVgk=&nC8lL2WUcXcYr=&LVkSFhV_qWjWj=&OzqpigVnZUidp=&Zdb6SFYmdlrod=&3XN8C4YlYnif_=&qXEEOHYlUmnof=&7ojlgPWYleacZ=&hq7cRQXfrchns=&KbF__ZUgYUilV=&uI3LQFUkUXeiY=&ljH59KUjlZUkp=&W6ey4PVojmcgi=&5Qw7JSXpagqVb=&hl5mCIWYijhYp=&ASAH8MWrVpkUg=&r8VLtJZn_fUeW=&OYrfGuVhjYqcY=&hSPyn7WYYlldd=&iLpMszYpmXmbX=&Ew_Ls3YaoWckq=&jyfpnaZkoZeZW=&jsXiZSWZpUnX_=&ETC9bQZWpbVgn=&C4GTkhVZYlWnc=&FOiunhXVmrfgm=&ccPbSyWV_q_bf=&fviGacUcpeqhd=&VKnlsJXpbmiUs=&Qby3LwUblplsh=&RmzcdEYUsXUlW=&RgHSAsYjWdkcb=&vEYWtVYkWepoh=&VUR3BKUkrkUhe=&Qha2FfUrigZmp=&FiAHlTVgeZnae=&_ubtprUVWXjkg=&alYBA_VamY_hl=&7GRRvkXkqihqs=&w4bMQIVsVi_al=&sjE6foXgcl__c=&gxrWvIYmqjsda=&R34brJZ_rcese=&DOeEhXWosXY_X=&jBUOO7VUrgnnh=&fvMCoIXXdrWXi=&wH8ygVVXdmWp_=&KzxSHBYUbVopo=&OeHFEAZmsfdXd=&2KpBzOUo_gUZa=&hsSlw9Za_lXlh=&76KqpsYo_crXb=&RJrbJZYsaVqcs=&RAa_oWYVjhsUl=&HHO986Ybshagf=&rOq9rcYgm_diU=&eI_joQYndmlif=&PgoWjOZlqcXoY=&kKCNppZloWqUc=&__c87IYmjVVgr=&RmlwoAZecfcif=&xrMOD8Vikbaob=&CDpFdFZbhenWa=&WCs53tXbjZo_s=&nwfPtIVeljaXf=&UtTd_6YhgleUd=&H5VvC5VZnejU_=&Yom3nzVej_UZk=&QH4pHAUXiejWr=&9y_3ncVdVUoij=&FIElInVgsfdYb=&yR5vZuXUfjqVU=&xpdtCSVifmdks=&U44Y3hUpehfbm=&sT2miTUqdeZei=&YIKJueXiZ_opp=&TdkigDYaWordW=&EqpUfsZjbjnce=&YNwAUbVjnYk_Y=&y_ptVnYle_YWg=&upOlDWXmjW_iq=&BaCDsEYlfYXUo=&xJ6aFVWUaaYs_=&KeGrIuUdhUeac=&tInbAaUaVibee=&VjOynQWikbrse=&FE5dWqU_XqpUj=&y4vpEjU_mopjZ=&RJrNswWqWhhcX=&oAOcEXVpfbkca=&BqCjfnZdVondq=&oQfMJzYVUpWWk=&WqlbF3YUfgXmi=&zgqDLnXsm_hij=&wG3hXIVjrjjqc=&CDITakZikUijj=&8BR36BV_dqipn=&kjYM9YWqsWsXp=&ovMOPrUgiri_V=&bUHgGiUcoWqgZ=&VeyEuhWcY_ljX=&6U4uFiYfmihec=&6AzS2pUXWadaf=&oIXXKiUZnfslh=&f2lY5YXjcWYko=&KhPTbRZcd_ZbW=&6McCBAUecrZWl=&cKYxyLZiXlbsh=&C9uMMbXsqVVip=&xi27HuUkkioik=&lnyYE2VmWqajc=&lWBWCNXhojWf_=&Ji98GYYcjndrf=&VC6eXsVbXbpja=&vHS62vUdemaZc=&bDetnqWbgqoma=&mC_tzlYYXq__p=&no6UyZYaikVWf=&AmM2VDUfdUXUX=&sLWKcVUWlrXWa=&nRxTuuXbiVWjd=&DZtwFoUpk_gbf=&yN4YBRUdYnrVl=&dLwWUmXbUYhqq=&Vu4vkRZaodrmY=&uIfPg5XsgehWn=&XSrVhjXhmoUsk=&NB_NsbUirlroW=&4RzKZQWUqYeij=&YF5dZKYqiXgip=&_6x54QVldrreb=&bpfnTcZYkqbqs=&YpwnjEYnYfpUj=&M_EJWTZUdXogU=&KucQykUaoqWql=&V2oPHbYYfmqgn=&L5oBU5UoXepfs=&bbeGvEXjinjog=&hMNo4HUXWdkng=&fktwHwWomoZgX=&FQrZ8PZaaXoZn=&VnCSWnZqmqsjk=&h42PQbVapeU__=&AFdGbHVbpfjhh=&EFEJNAZhfhsWg=&prGV7kWYakjno=&FXbpzFZWg_aUo=&DULgPaXiefckq=&TxrVW5XcoVhgq=&FLHBqWXgapZae=&uA96f9Yoeckrq=&4kghogYhaZYVo=&3y_ecYWsUbdjk=&QGrqsdYeVglqb=&YXdEPpWbUnnXh=&lTnvZmXkcmliW=&ElrldTYgsYhZq=&oG4Cb8XWmgfdn=&oLy9tJUneimmj=&TDM6cJYZpnmVb=&pinOhEXhfYcZk=&iIsQ8PXiWfap_=&FROIcXWdWssYd=&PWgKwcUhpdjiW=&JHezqAXincsbr=&75b6kNYZmndWd=&xRW8fsXpnUbqp=&O2wc8UUifiWek=&a8VZRVWbfjhXX=&SGRcGBVfZrlnd=&8FMVXVYYnZqgq=&X2CkZQVasslZl=&eadXy8Y_cspp_=&9ZQiQOXjeZdVj=&Q3UnupVYcprq_=&yrO9OGXmpVeZe=&SxvcIAZgjqZdb=&bo6eDGZraVdbd=&n9qgoUYZblYpc=&i_IOqbUenobZp=&yk7H3NYqhkngl=&jew8n5ZljjZj_=&VWVl3HV_qXqej=&DlAQLhYdrjfbm=&PL9mPHVeeUi_W=&3sZHDFUZoUkWa=&PPwrCcYelnq_q=&rQq6vlXmpUnhh=&FTawpzXjfneli=&ldhFuCYmYhki_=&KguscpVcpoXcX=&Jh4DZHVcpWpoi=&TTGm3pXkllaZi=&oqymYOZVrXUVi=&hx4kqHVhjZYYZ=&fq6MalWgZZbrg=&6yNxxUUZ_jheq=&F8eD_fYaVYmUe=&6LaeoKXflsUbr=&34ahRUZcenZUr=&nPRPMWUYbXhUk=&_Hf8lmXWUnmgh=&tBZcOGVsgqYmd=&kthbI7ZZokiUs=&iwDr24ZXX_dmf=&vMeqWYWe_Zddh=&_ib6iMWpopqUZ=&EqdljjWhdYmls=&iPrEgNUmsiUrf=&e2O4WLWZmhmYk=&XkoZMvXeUdagc=&N3Ff9MVi_ajrp=&y_B2kEZlooUX_=&6_XJh6Xg_Xhbe=&QEhqUqYacqUUi=&rra9RIVaanhVo=&N8dQabUcZcfeh=&LWRWThYZieaoi=&XAiiqEZmknXrg=&psFDGTVYeibZg=&jneXXvZqUbaYk=&pyFMb_VmWk_l_=&LPBtfKZWdrbnl=&eIBQpBVXWWlbW=&O8iqKJUrpqgab=&VX7jVyUZVloa_=&SUrCeBWZbpasm=&3RAEtHXs_dYYq=&ohDmWCUndUhoY=&ZAeUloWppednl=&IEGPsZUUiohko=&faalrcZrfonbf=&IuHWr4VbqXZVf=&dZC96BWkUWjjh=&UUilTDXeigeYl=&rEEMUSZWVbUho=&zaDqdDVnsUlea=&RYmjKsZc_amdh=&tA2q4vYamchWU=&4umz_vZiabXcZ=&_uX4zeVnlreZj=&5DzludU_hmnoZ=&ibDCdZZgdd_ka=&hnk7ZqYhYsoXU=&ZyHJXzVqqlVfc=&IKtCECYskkWeq=&bZDOx3XbdYXrq=&qchOxzXc_lfel=&kFDMUfVsfejXY=&CYKYkPXkdsilh=&Z55UuDZaUjlXl=&GJY5cZV_seldc=&oEBkdlUhXZfrb=&n83QEiUlaXjcm=&dY4e3aW_pUsck=&_ioKAlWnsehmY=&9A43KAZZVWmXc=&EkA9ZwXfklXkW=&pgtgWHZWXjWWd=&myAfALUZdZ_rd=&_3JZGUV_UcpXk=&lQG2UdYkrV_jZ=&5XCNyHZcjgiXl=&WkHvdpXfbshlk=&6Ob73cYkUjeoi=&ojSaKlZfcZgmm=&IrK6jsUsgkXhi=&nLIsSwWeokVga=&dFxaWWWflgqUs=&5nxdBGYajVWVW=&vH9yYHVmapWbl=&z_iFGMUcdVfnj=&wHCCiOZVfhrpm=&7dP5P7YWshkXs=&_PlsuqXkWndXl=&d3SQu5VdmXbXV=&EGfjxMVUddihs=&ysN5__Uk_ZWod=&AlbseQYfhbjlk=&9s69J5UggUX_i=&lJK4JoYZ_gekU=&tE5mNRWUUejep=&O3gAEYXal_jlj=&UKtBPhWVXeona=&5yVQWeZfeiXnm=&FyHjO4ZaZnnmn=&5AgPVmVXqrqZr=&u_Yq9HUmnncmm=&UyvMFNXdVeqho=&DE3ouQZoXgrej=&HL4YVKU_hfUep=&qxFq_RUgnVbYp=&5kFAuVYYcVVV_=&BhWDhxXrfbsll=&cDO_TyZppoqma=&utrdSmVgVgqVl=&9HODCBUlkhWWq=&f8UHgCZfhUj_i=&oNyjRIWZcUYsp=&VxVlERXpka_gU=&46trjbVmdkinU=&ualWssXskmqgd=&g2gCf9Vhlhcsr=&CjYS9mYsrYkaf=&rcGriFVmUVlih=&IA_yxZZeqmjVa=&6sCABxZiegofs=&4xiztjUeoYfXq=&lPQb3MWUYdoor=&j7LBPmX_ndqjp=&L4tBDdU_epWes=&9_aKoUUgkmYXc=&fbO8JFVWjWVWj=&eIYglFWie_Xpj=&3gJQZ_Zrip_sm=&UHCsnaXchVdjo=&OdTQdOZanUYs_=&ZycTrsYe_dsqZ=&ICaw4fVinV_ld=&64NVSmVZiWcYb=&WPmFDXUdgXofW=&fp92VeXo_lWmf=&B59I2fWqqppnh=&VQGRtLXdmcXVX=&jWC59SVZZlbls=&oX8mVMUkkejWl=&8IQ2NKZWekqhc=&pYLhTQYZgk_VX=&XIt9RRZVbgXha=&2Psok6ZiksWpo=&oTnQSJWglZcma=&BeGwvEZcrbVdc=&7KlQFUVUnYhrV=&pahHcmXskhdir=&4iONlBWgcjeYo=&jWcJL9UicdemX=&_DBnaDZifmni_=&SWxQXxZghpsha=&zNoF5IZhqcYii=&YBCok5Wmrssro=&7hjfLSXpZfWoj=&R8QwE8WUd_qcd=&SOmtsSXlUdWnW=&bz_Cu4YUWnnmg=&sqAtRaYiVheaX=&9dAuplWpaYZfr=&gSbk6UWecnWVf=&bPGcdMZpWgdVe=&yXGq3dZrkokin=&_gFGOuWibUoqp=&dcuGPjWjrrWWX=&yT7yaYYWnYlXd=&WwZNF2Wrcmdpk=&xjeBBIVallmjX=&jo66loVXWfUdb=&txdVdFXUUbqXc=&eZ_bsIZWabZWc=&XP5ns4YiUZjUl=&6HK97OWZjmggX=&LOcCWqYaqdedq=&jd6TC2WW_joda=&r92HfjZWgomob=&tbR2bzUmY_eVo=&WBeDUAWls_XZs=&wSbYY3Vekdpdc=&h4l2MMUXiWWY_=&jnwswgUfmqjWl=&l6vVTYZelhsfc=&_ykR_rYfajhYU=&_Kjm26WikklcV=&sVrz_oVhfZ_rn=&miSGAPYpVjorg=&D4QW8GWjnigdj=&mbYMosZgkhmgk=&tUrEgCVXjlrfb=&pV5dRIWiqkW_Z=&X7ZlnEUchrWrU=&6nWOpvWaloXqV=&TKdyONVcheWld=&ZePJHTZUXghmZ=&FKZHXDXkXXVoe=&GkG9duVrlZdel=&4jnRrkWiXdrha=&n62zoOY_njdoW=&3az5zNWmhpUss=&E7LHUuVbenldU=&GrHvSjXcUmXpe=&4LjEiiZnkjcYV=&O4kKuAXgjgkYe=&D6sgP9ZseanYi=&xq5oxrUjohVsr=&N9UPs4YlfrkUj=&CXRnyRXkcbaaV=&7ppHqMXafosgm=&lYt6wuUlqXlYr=&6K_MPZXaZhlqc=&eB5mrcXeg_loh=&AevD_tXXiqhUV=&cQgOJ6ZadkVrf=&GIv8NMYqkf_eV=&5Cwjs4VpeVpYp=&mH8YEvXnbrpb_=&xxKSFvZmXrnWh=&vXiGROY_fkXeo=&ZclkVbWfbaWrW=&hzLpCWZ_bqZqo=&zUfCdmVWfqqpf=&gLfXLZXkWasXa=&xJNJscU_WUYZa=&sNbVyIWpgqeof=&PIasT5Xqdpsme=&XXq3mPZscboqY=&78IQG3Vkernjm=&ti2bdZWnlkZeV=&fvEOilZakgYYZ=&TsVV9jYrcreYf=&9Ydp7rYbpggUo=&BD6GB6UWqWUUi=&vYcdgdYnrmhnq=&_4r_7nVgcebqU=&IfAuTXYiZjphg=&2DYHEJXjaWqbY=&dQQw52Wpbpppq=&7KtMtZXanjiqZ=&KpD_LmUlidXZo=&WjD9UlWrpUjjY=&hLNzNxUWkUfnh=&OHSW2yXemsYUm=&ICGLfBZfbohsY=&KMd_m_ZhrsWij=&hsX9G7W_ocgfq=&hd4uUPVmViZqs=&dZP8uiXXVUbYb=&j7uAdRUnqdVbY=&MvmouCVbdn_Yc=&QNZlE4WloncpY=&npzPjCZbbrVXe=&f7KLhHWlmUVeX=&MpZ5mNZVfsdpn=&eKBjriVgWZekY=&dlDvmdWmhsYbU=&2jmWqdXXXneee=&TzhFADVqjZcjs=&mwwivdVpncnin=&kgML9GYeYifYr=&l6EwpFXYWUsnf=&gtjyHMViUqiop=&bzbCWiYgjXVoZ=&ehhfyeXgUnWld=&Ksv6caXZqb_fZ=&BnZpmzZmifbZq=&RSMyD8Wq_ngZW=&Az3VotWglekUn=&5MLZiOZnadplY=&DzKCiUYjbYhoc=&AFTLx9ZjoZdWf=&5h6DRiYggq_nY=&5pGOCbYYXjpUs=&XVcxiFYjgdWWX=&7DyDaAXgkXjdh=&EEuk94VWfidhs=&p7t2BZYcejhpn=&L3qhsUWZbphWZ=&tu3SHLYYYVsmV=&Ex4xbIXseedYh=&2I6FVoUWhaeXh=&sakO57ZgpYrYk=&3yKpjPVjUjZrl=&ByceXKVldo_W_=&85wGk9YqoZ_Un=&Vd622MVqecqkr=&QPRLp9XkZsp_W=&ZYUzmnXadbcsV=&A6GRCHUdinVro=&J3dwqNWjpUkVV=&v7QkjjXWmrfeX=&FjfN9SYnlcaXc=&cnTLkVZYYjbpf=&hwBtujWegbcVl=&3aTDT8VcXnkYm=&laH2MBVjUrVmV=&xhZRGlVoekcdg=&dY6TKEUUsVfgk=&g8uIlVZWXmfaV=&eG8fJ3ZgqeZXr=&ijFyQeXjiWqar=&IIV9hbZrpWkkV=&vvU2w2Yomljol=&XXr73hX_herio=&84u6qnWZrcnXr=&zJtSHiYlgVegn=&ETNbYAVY_gsro=&ZaQLduZXdqa_V=&77cDqhYVnnaZh=&34av78Zjaeceg=&gT3C6hVa_oZZd=&PjS63LYgbanfU=&q6aOvnUnVhckX=&64IHQ3ZnnirYo=&xaZYmEXejcaVU=&BFuUEDWgrndfk=&V9kqkSVbnfZsh=&DfHNl5ZYqklia=&xB4z6OZZhXgs_=&2pAeIpYmbcdaU=&6OdIeXUinfhcr=&gDGHhDYqaiaWj=&eskjLCXbUqqVi=&CdjOjmXjeXlok=&zFUVyAZbddXih=&YrZHCqXo_jmei=&MBHXbfZc_oZXZ=&KefPoMXgZkbqk=&NH_NJpUXiehVV=&NZinMiVYZUVp_=&MeJnyuWcqcedo=&KqzygqXYbXgrk=&hMg94HYpbeWnV=&ZccdJvV_khgVe=&6Jio7KZUdoXcY=&WmwNqtVkilhic=&fjCn_5UndVUsh=&B8VSD_We_Woqp=&4CnkqXZfosfh_=&hJkn4mUphshqg=&wKnIyVUekZVsb=&kQtLHFXVhVZpX=&pEI2GEZdioYiV=&RG2OiJUVkfZZi=&bIxKcZZcicsrm=&Dy95BRXVrZmfZ=&rWzo57Zcjhq_k=&Upn4f4WddjdXp=&yJeyYTZXWq_Xk=&NWwEl6ZWUUWVW=&tqH5wLUnUmjgg=&FreIQTXpkpXpb=&xSJOomWrhZrqd=&IsI22fYZbamqe=&3ihaxRVkZrrqo=&inWaLVXXYsksU=&NdIHbsWnsegln=&U4a4JUXbVerge=&8ESR3eWjmgjje=&M_n5tdYfZ_eiY=&AlIIA9UkklVjh=&jxyioDYssXmkj=&EKm8nsUdbWdo_=&A4meRfU_lWWja=&eEgpulVdXaYqi=&WRHXyxXarZjal=&TeZ2KqUskVrll=&ov5ABuVhVrsrm=&vopRsoWhVaoge=&4iHBQrVVnheZY=&KHO7jDVqWhr_r=&viR6PDWrXbbgo=&35EObMVWYfjVk=&6FxFAEZmsYjVa=&NBo6w_XWcocch=&lp9ecQUgmhcoq=&mAsYNKYcXlZj_=&tJghfYVUsVXVd=&RbXqnfVqdkhrg=&vEdVXRVmeYadc=&vIBt8cYsqWVVj=&4Gd9i8UoniUfW=&IqBhZsYrciVhr=&2OpoY8Wjsffmb=&hNNff4XfaVosm=&dJynhpWXYij_c=&vpkcrMWlmUZXb=&prTQe8Xapoesb=&FE5SMhXfUkcXk=&Giy64wVY_kVVk=&4oM4siWZe_bXe=&ZWNpXnWgrj_ia=&ylpaSVZmrjiVY=&PBTrj2Ypjlmhf=&pDTL8pZmnYroY=&MCQi5bVgZeokm=&ojB_HSYUYaYbj=&Qn6hYGZZprZZY=&oUA4flWisrmnk=&kdLJhcYdlsWkr=&cxPTfnWrdhpbl=&bBjIjMWsUbkYs=&j4vizuWlYYld_=&UhOl66VhjgqYa=&6Xo2oYVWXgUei=&QfzZ7ZZ_joXVZ=&UMi3vYUkfUegf=&BiYRnaUg_Yocm=&BCPeqrXeooYqV=&hpUu2pUcobsUc=&pkRkdgXldpces=&PQT3PQUlfgidn=&ygqFQuUemqooU=&EyPOabZZVpfoq=&hUOTYjXfhYiXk=&H8DYg4YXsmdWX=&HPnP5dXlU_YYq=&zbQTzhUemsljg=&II9hv4XqWeXZp=&tzu3smWjkesrd=&VrhjdNUcUVjoV=&iZsLdhXnmrrUf=&f4BzFTXsfUXXX=&eEh8gFX_kpXli=&K2QuvdXoVmZnU=&Ixae7iYkXojge=&IOajRyVclaYqj=&hAsPl6VeVedeY=&eADjl_Yngjiig=&246KrjX_bsdol=&jJuBd8UrikWWZ=&26suzpUUjeXha=&wDt2hAUkVj_en=&xxCd6aVsqs_pV=&FTFCdFUimpoXg=&c4K8NZVbblebW=&NFGEAcUfpWmjg=&Mbp3ujWn_qmfi=&vhAzbTXcmrjkh=&x9wJGvWbnhqYj=&lewxHCWnfVeXi=&SNOSxCVhmeWqh=&gj7yjyXifcfpf=&VnTX8NWbopZa_=&SIi4XyWlcnroY=&OWS9BcWl_qXZr=&l8tU55XjjqYoV=&VVyUejUjnsZVq=&KwpvmbXirmaeq=&Py5wL3Wnro_no=&7hchrFVXgbegc=&6evxG4Ze_koaa=&4o82OgVYYUqsh=&xqMfpwVnrcdXp=&bGylVfXlpeiXZ=&g7CHWrYaschmg=&pKRKQ3Vnogdie=&wBWyfVYhrYhUZ=&AFJ7N3XoXWsrf=&QwJ9YVYdqZVgq=&EqTlQAYimorVd=&SCekeEZhjZqhe=&5hGw4iXklq_Xc=&9VMe5ZXmVaeUd=&mDOtbaWaUsYrV=&QUbpcxYchXcbZ=&MIyHB5UdgYsio=&FgNfK_YXiV_sg=&CWkGxJVcVljod=&wYJtZFZVc_mpm=&G9vVrwYknh_ec=&2gSiAQUproYk_=&n6aFJKVYaenef=&MO_QlvXidbpja=&nn75GfYljWnaj=&t4NIoXZlcWjYs=&CgPWEGYpeh_df=&xbwnpGVZqaobY=&laL7DtZiqj_Xk=&xmvGx8UmqWZUY=&FMfSCRXbqanir=&OFC8alXfWWVdm=&8rwTJNVmkmrjf=&nYGneTYXUecel=&WkSx7gUjjfibm=&IqQO2xVaqjpga=&jTyqm3WgiYUkX=&5xcw4KUooeUgj=&HXPkPDWkhZqcq=&O_cFJcYlhmVem=&bWzTRRZWiUkah=&S23wSeXgmiqoX=&ph3D_MWjmiWaj=&hJXhhwXmphV_q=&lPL7zAZ_djjXi=&AgfZbvVjYopUW=&tvUh_pUaYmbom=&cjgYzTYXac_Wf=&64mLmVUYjZmel=&K8UzThWniVWdq=&FNTXn8YrsiqVd=&JSpdaOWrbmWeY=&OHSTvTVWlcYUf=&sAH2ZyYesWi_W=&7p3twjYgrZXch=&TMrvXbXWbXWon=&iH_5vNUZkWUgj=&JVw24TUrXgXaV=&8nGYB6YpedqUp=&ksFIY2Wa_hgak=&KhaBTkVoagfpX=&vVgLi8VlZiiWa=&fRlh6qUnbnZZb=&8OVtjQVgeYgWk=&SEflWdUciUnlW=&Cy7vMIYlcacjc=&5t72DvUWjihXW=&at87GoXlXVUar=&r2D2sTZkdp_gn=&kld9H5ZgXiaUo=&MAGPAbUeeaeed=&O2eeiXZ_ZggVm=&GzYLkxUab_gkZ=&LDTsSuYYgmecW=&2_NZAeWfrlcfc=&YYzUAaZkYiV__=&8rNWWzYjlUXdf=&TYBTuFZndgeXl=&hMaqXiXsXWYef=&uymuCKYcpgmhj=&fh9H3eVeUqdrV=&2gM_ATUUZfhsk=&HKhxnVYalsqbU=&28shBKXofkcof=&RG4S6cWViqmod=&IL4aYGVphfdmY=&qmPDfsZdardes=&c3XLFUViafceg=&ltjLZ5YedVXej=&L9FYg4Ydsjhef=&nEmSHTYaVnioi=&T3flWDX_mhgkr=&EmDZ4gYfhVqWl=&C8cKvQVopafsi=&bGeDrRW_UpUjV=&9Uy4TnYaXsqfc=&f4FiaJUiqjprc=&CUSDAtYnVaa_n=&WXlCOHWWbVaig=&JjqNQRVnqjcms=&jJdRBEZsXapYV=&eVIDp4YXjesqb=&Pyrz_2XYUbhei=&7dQwv3Y_qcncW=&F3gpbuUabZabh=&7WorCBZYgZnaa=&Xvr9wbYdmfmjk=&3SQzjEYcVngha=&DFMvsMZgfjdeq=&CC4f6JWgWbpal=&Fx_y6tYicfdl_=&E24N9rUfZjVfk=&5BaWnRZZ_cWq_=&xrl7evYfpWm_V=&ef8xCbUZVqZXX=&_SGLBgUVZVjjU=&bTSvwiWshaWgf=&wqKnDAVYbWlgg=&o_zy6bUf_mhnZ=&wuwbFKXirqrbh=&YH5tjPVqWlmWh=&J_P_TgWV_okaV=&QptpDbWekpZmY=&MdEOUEVlUXhhd=&fBkwtxZiblmXj=&ov2IHgXYgZs_W=&Hu5ZPUXdUakWU=&ZSsRocYaepbaX=&iHFlvZVWoVsph=&qpkgMQZpqkkdb=&4qsjiEZgpmZhb=&DaPE4TUUpcZqV=&5vkRICYkffbVb=&HlBzUrVXebmjo=&B8yqQbXnlnWmg=&itdhJMUYeqoiV=&UMrP7qYmlfmbm=&LeXDB6Xomkhff=&NxjXXoYeoqlep=&WHXpQOWqbWXg_=&hL6VLIWjrjijg=&mItbHRZelpWdj=&Q3y7gYVWcsWag=&HbRjpwXssUskh=&xoOrXyYbXqmXb=&D7d4y6ZZ_enVh=&OBXlCjZnpsYhn=&xjNcAhZjoVVgp=&_GpCVIXaWagpd=&QAiKPLWsqdaka=&2zbeasVnkomag=&4ofzcLUkVVn_Y=&JTLYjHXX_popa=&K5U29AYWcklUX=&qC2PYmVkrbpna=&5vTQYMYlgfYaf=&Kxp3aaYqsr_jl=&QQJNqkWsXnaYb=&LhbmeXXaXoYlg=&J5CHIHZedlqkV=&D7F4HAWWrcWYg=&2rCj_hWaqalYq=&cXyjK7X_Ycbid=&SpyP9OVmdbfYl=&MxVor7VWWonWe=&WzufigUiedm_q=&HCYrzBXkXorlZ=&pOqxRYVa_cjVb=&RG_C_3WUZ_skb=&x5BIeuWXbfZoh=&y_nM3mZUodZds=&HpqWFDWeqeiZY=&UliGtGWpbYffr=&jNSJ3eVhibkjq=&xVCVeBUkodmsY=&JyQd35X_cUiiW=&ZurWtuWanpWaq=&5gWUZbXkojih_=&Cu9PIbVnUpVVo=&ZoYEgnXjoeens=&QUsWJmYV_eZUc=&_JAGB9UsldWfg=&YVxxx9Vspbgqq=&xQxptDZiYpleZ=&qvGrZyXdUkgbf=&kJKbkuVjjjmpq=&5oZwubXamZdcs=&TnnURnZYsorXX=&BWHbIpXUmkibd=&ftkNKYUfaXfpk=&3cyZOtV_d_dhX=&ZZ_KLkZUd_esi=&OAu8jgWsrd_hc=&h6kVFnYYcrheg=&_MUQzzUhiUsZj=&kGlOxuYXc_bgV=&vfp5J6Vkpgmqk=&EEvnxbXUpmjkW=&Co5CKSZpWsVkc=&nFAx6_Ug_mobe=&uARON_UbXYejg=&PABqzWZkhbkVm=&3ZjYsjWWsqZbm=&eVFBf4VbbfhYV=&4BrAk4YqhXqlc=&NzSD_CZeZhq_b=&8kBvvVVYUidXl=&4ayCHUYlqh_Xa=&Ac5qRsWbeXo_g=&GDCRVPUnbirq_=&2WEhOiYbfmgpU=&an7jlAZ_qXpVa=&bbnxpJZpkXo_q=&E9TBFwZkngZnk=&QaM3a5VgmVsfq=&dIwPwsVjdsVmn=&tE4Jb8VlWdphr=&ppV7AQZanrcpc=&wutLLDYZeYroZ=&WRCLsxWhV_jeX=&UAPpQmZgbZm_Y=&EKQk6iZorWllg=&LtELIMVngmcem=&Jj9GwWWooafco=&awKvuAWgrjY_U=&oLMmNMYdlddcX=&CykyS8VbqpUkd=&diYdvGUpmnccW=&yjMDrjVVqhhYb=&e9MsdFZlrW_Xf=&rkxURHXqbnskc=&nDUbA9Wooefol=&fJ27ovYZVbm_i=&CyftxcUdYmeZa=&oX2gp7Zs_bgdX=&FFSudQXsaeghi=&tkHTRzWf_nppc=&CZY_W7WpsZgiY=&yJ_NJ_XpUhlcq=&xREqWQVlrpfck=&iz8XuqZmeUUUj=&vPsIRyVmeWVfj=&T9KX3fVkVh_rY=&e9eVEbWarZnkk=&NnHpDsU_qggpZ=&XKU9tfZnnmVcc=&XIV9KtXh_npag=&6YS2dZWYYnjYX=&XMENPIUYboriY=&NefeaaY_sXhsf=&uIwq22VkrdUmg=&LEvmN_WqXskmr=&Yge8wHWdcoomc=&nAuLkXUlsjhsj=&CrgsPTYehrXja=&hvoW2QUUdVqUe=&gxCmbYWVqheli=&Hw_XC9YslehVY=&JWG35nYnjgiUj=&ZXcs7aXsXhV_f=&APlaixYogYnfm=&M2xQnXUdbYgjk=&WCbWlaYXkdsUj=&8txwDrUrkdmlX=&WKwSSHYVjWhqr=&Am8KxMUhgXUgd=&jBCdbiVjcaUUl=&ineILmU_XZmjm=&MjObRnVhUasXi=&i6IHOAUdsrjrn=&aPECk2XgsWfmh=&Hd_zISZcsWpZr=&fApje3VocW_do=&94Nw5YWZcmoVV=&wrkgWpZmliVei=&BNxzx5XocheUq=&8hiAArWicpadU=&Pkv2eoZppehom=&5JMUesUqhofce=&5EDuuFUYseqqb=&ViIHFjYXkpsef=&AhBZAOUrVrpjZ=&FrGvBwXohhepl=&qmYlnIUjYk_mY=&pBLPARZX_jkVU=&VeHr_lUphiXlp=&ZZ5C4TVgjgXnl=&NeMeEKWngjrlc=&Me7M4fUdbbZsb=&fFQKQFXcjpiWh=&aHaSIeWWgnVpp=&z8m_gOXgZhXWn=&GbNPkUWoWsril=&79b2nSXo_r_ie=&vOQ_a5UbWVoWi=&EBtNLyWkoimrq=&4gIJ_tZeehZh_=&HGZ56oVqjmlml=&ZjaYRIVkZaUdd=&I9cPQ_Xgbarno=&FLx7DUZmb_oWh=&PcZUUIUYpUWao=&8UgTOYZlbsgU_=&9PLcFkXasibak=&NK8fGdVf_aWXU=&Q8PVt5WUcaXeq=&RAVrZLXejWVlg=&UtiRW7UkXYdUj=&YOikgVYUgjakj=&Oy3SsdWkdjZod=&kK4hc9YgsZpfo=&x7dcoyVnafdsn=&9CbhCNUZ_bWrX=&2Dq9MyVspWXam=&A3HXQcXsdUfWk=&QZabBXXqojlce=&qRc_NiUbdcVhp=&WnH5jzUipdppV=&3R3AAAZgsplej=&kbyxv3VarYrZg=&feMmQyYkVooeb=&5FLBpcUjlbrhU=&h9lfOuYZfrkbo=&MZVIueYlVcffj=&EyRxzQUrmoZbr=&DA_SgCVZjgdrV=&jKmmvcYbZrrkb=&kdOjsHZscUisX=&EGRCZ6XjpkVii=&uWF977Ygikcok=&nOUCZuUWgbnUh=&PqlFfqVnpnijW=&iXHkmcUcbdops=&5B8S4tWfXWgZc=&8JnlIEUihfWhi=&_emUVuWcr_iYp=&O28naWXdkUcYU=&4usvCdYqgnnsc=&BmNjL7VXoalZn=&FGZ4KmYZjqWbj=&kFQGXaYZrhsqi=&HSVMb3Vfmbfbn=&7jvX_XUbZprng=&YSuv_IUjara_c=&U6oo76XnWbZno=&M7HAKEZankdsj=&F3z_LAUcdZcUW=&gAfJqFZeemYkr=&KbmRKGUibkibh=&xQRZnCUjcfjec=&8NqGwCXhangem=&IYIkc9Uhrad__=&cDfYYGYiXfYUV=&OUd_2DVfqkrbg=&OsgxQkZVgiYsa=&wpc6tJVarmlnd=&ZNg5LtUaoYhVh=&kTjqdpXneaekn=&ULJR6rWijYfVf=&Lq2AeGZrr_dpa=&d3W8iCUegaWlc=&WexBsMUiZqXpo=&Jd3SFWZlhYof_=&Hg4HjXXUcfmYg=&5aWF8VYUYV_Xe=&TZbKdpYgrZUmc=&mtww_EYrcVYga=&aIzQHhZcgmkUr=&pKzgNZVdYkXlb=&NLmeoqYkodrpW=&8guaRaUffWUgX=&BTcHfSXoXWp_c=&IWIF7GVcalXdY=&yG4plhUekejXX=&XAHHDmXbradXY=&gBD53uXjidXXU=&xRikQCVdcWkrq=&9EwS7BXUUocqr=&77nnMjVrZrcoW=&2zzSGHUdbVeqk=&Cim2W6YZeii__=&Oi8sLZVZo_YXp=&Bl36NbYlUVaao=&P4DFfFYcpWeiU=&fF7IAVWeaiUqs=&BrYMplUUYgpkc=&eHa_PIWkXZWna=&FiXOEfWjeebsY=&koK6GHVhbnUob=&zHq59NZXsWfif=&G5pVNRWZpidpZ=&BFszJ9YifWrmp=&nqX4kvVdprYUp=&bAMissVi_doYW=&KXG9O8ZhipUfh=&_VorT9XVpchqs=&F7YnTpUkiXUiU=&A_afamV_cd_dX=&5KbQUuVVoogjb=&CPBMFUZbsZUni=&VlFRNVWYppnqi=&ZtGvmOWWgYfsd=&obS4WvVfdZcVf=&g7KzF_Udeklkf=&XgmFNDXplVgqd=&OgozTKUbgXoor=&LHyz2EUhY_kld=&256NQBUjWjYj_=&3culfmYfrbXmZ=&bKMb72YXXXchW=&Y7OrAuWVeWdok=&gxHjhgVWkgq_W=&7YlcJlYinVgkq=&GgpanHYkiVoVk=&7OSMHoXgXXhic=&t4kFxcWcamX__=&a5AeWdXfZZ_lZ=&BOxzHSVprqhrW=&R7BF2cW_jgedX=&ev2a5jYXoqdmY=&Rg38DOXrbkbnn=&ZtDVVVZllqqWc=&m6xCARUXmpjgb=&WmS_63XUWWebs=&Dtad6zVpZkVci=&hly3MEU_oWgWr=&tGjTCeZVlbcgo=&QdRR7KUkdXsUm=&Rzo7FRYdV_f_c=&kHtzhcXakriji=&qwrLfyYmmojkd=&BENM4uYXarpUr=&yKSeGAXbqUo_V=&IDU7zAYVmUdpo=&atcfrpWqkqnff=&7fqclHWnb_b_h=&OcXWiaY_ej_hY=&vRvbJdYZfmWUb=&w5r62AZpqXbpV=&Q8dfBaXUVnWff=&rnIuryZ_bhdYi=&AZx8RuVoqnoVs=&TjedkrYomohqW=&Ao3_HbZipYcps=&yWxyF_Ukroilh=&gf_Ml_YmkbrZm=&2wZr7qYXqoYmb=&VOmtEhUcmqrYV=&MLAUplVVpoYp_=&_rqhuCYnslfic=&anc2iQUriYgko=&_gfX_bZgndUgl=&NsajuWUbeabZk=&uYNdCLXfXfms_=&BYApNXUfsaXfW=&zultGjUYYaVYo=&8tzlsGXipkgVW=&ArvX2gWbskqZn=&Gl4tvEZjhoXcp=&heFnm5WqercXc=&XEPH_PU_cgjXl=&tDgxsHWaZrnfj=&Rz_M_kWs_hkpf=&r6w5yjZdaXhci=&t8Y5KmUamYsjk=&XYTJYsWbsdZUb=&dovCVZWZmcnVW=&buhvzkYZaoniV=&IypfrYWoVqkbq=&Blp9jdWrfddnj=&cy3I9FZsgookp=&k8xfKAWgdbhiZ=&UOUzgNUg_Yafq=&lpXIA7ZXbikon=&sxIFMoZoXUjio=&jZVVKnZraaUWg=&4ccVfCWdsVbho=&aNIr33XZkqUsV=&OK52FVYqcUXcX=&NO4PzlXfkUkoe=&D5WIsUWhsqaan=&SGadiSZWrVUZa=&Kneh5nVjkbije=&OTnwlRVlnbaUl=&lVy5kUZrhbZpr=&q8qbFRYUopncp=&Z5HAGMUigjUqg=&zATVgKVW_pgfX=&8i4aIFUYfabYk=&yhiW6hWVnacqi=&jTKBlrUlchf_V=&jHcu8OZoifXoj=&vTrqMnUXYrobg=&v4toXjYlWYaUn=&lAAEhiXmrbfbU=&2tAGbRZlhjbdh=&3ziuQ6UgsdqsW=&6njaFhV_gj_ld=&NksxmHZq_oWnU=&gceTdvZoqWXYs=&_rFEmJUsXeljr=&CkspVJWsXfcga=&jvXcS9X_oWopg=&JfCo8TWWkmemh=&ZDkgNzXiZbipl=&kcO46VWYgbdiY=&2AHiAFUqcjVso=&GuzdWUYcfbjbn=&ihhKqWUbnqXsm=&Yda469W_bYVrV=&CDQNsFYUqXhkq=&OinCmMXpkknWj=&A7tGsXZ_pqgdk=&FbtbqyUlkVppn=&XI7F2GUeroYbe=&QzDFAdZeqsWnl=&ppG8GwYnYZXpi=&t2HiCGWnmaerU=&WhJzMmVoinWkm=&3uvzAzWslbjqr=&yF4GUpViVdprX=&ksSUiwVVk_oaX=&NxZoeSZcd_gsW=&9hVvALWdUgggs=&WMKv9CZXheikb=&vGcKetZYakWdX=&iyTTFxZdolffc=&ZSnP6SZrmqhdj=&WjYjmKUhimWfb=&9obsgDWVhjmhZ=&fO7ejUUqsY_dc=&HoxqmiU_rarjg=&guaTK_XqeoXXr=&2YWw8dWVgkYpg=&5c6_RLUdfsams=&OhyRLUYmcpnrZ=&MZUqurUfe_sbZ=&v2Soi_YXkhkqj=&ykeVlyWYaYqYl=&uFoofrYcjeUgn=&qO68LJVcpfner=&GbcX9TUdemina=&TaZ9XxV__eWhf=&NlODM3XppcgaX=&QBiMU5ZakUrWe=&9gQT9oVgVcamk=&whjMDVWYmofsq=&5BGhnNWollVnX=&2Y2ir4Zl_cqed=&UdK8uLYmgmclp=&nfs7tpVbombXr=&pTRHNpYhbqnsY=&szZsGNUpiUpld=&JGzaDHXYsgVfg=&HnCe8VXmn_rqe=&DEwOkEYYZcUpq=&5vHfAWXjrrgpj=&3TFiEaWmiXcea=&33G89ZWgcVsmi=&Ztce7XYmgqYso=&xztyw2VZUh_aU=&P_a_2wUjghdki=&glRlTDXXskelh=&UbtHuPVeUiWsU=&uFjKSoVsVilfr=&LXUL5lYbgjasr=&KAlclJUlhoYYc=&z45MZ9ZYjjaen=&Rq4WxQWVhVnWk=&sxrXKpYegVhjg=&vh59NJVlmVqic=&EXeSvxYekpaan=&Vk_DeJYWerclm=&oh47n6YhpsWpi=&kStppnXrsbncZ=&_Yh2fmUlrsd_X=&LnzgOUVZqqkmU=&RPj_FkXmboYXs=&CV2G9aXWgZmra=&uGX7b4ZkjUWoq=&niFYdpZngqrWW=&Peq6ObWcXf_ac=&gpTELaWYikanZ=&2JXGS7XcrUccs=&RR_ALDUclWZsf=&whogPOWsghWjr=&xOn4aXZlXXkaV=&xN2GV7Xglor_e=&rCMtmNVmXWZ_n=&Pm99twYrhYjrl=&hUbpeiWVelWck=&KQt7MiVoohmdh=&tJjXhFVaYmfmb=&SX5tKfWfeoadU=&hoDRv6WlVWjni=&3WZ6zjUoViZVs=&I9aGQJUW_eaaq=&MbVfQgUdmVVpg=&PVBETbUajYgns=&RDOz6EXk_dieZ=&NcMeWcW_Viqro=&qifXWJXaVgjcj=&KHBMO6V_smkop=&bQpkUsYjkjmlq=&gZ8dDPViXqdcp=&dV7qIoYhhpnj_=&zdrBPOWbjrmrk=&9TGjewYmiqmib=&HRwKrrVYrdoqo=&tYjGdiZjVWqcd=&gdu9RmXcllYpX=&Q2gq7VVqVXrWf=&ZwlIYwUfWdglU=&8yyEz5XZaiYbU=&va47XCUfYqheY=&ctxEKLVVUZVYa=&IsFM_OZaUeg_j=&E_2ukeUXroZne=&OCjQ5rVhUroeW=&w3ahkhWscn_sU=&pxtiKPVglfkok=&99cYWEZdeqloW=&6TQvoAXWqiWXg=&BCOkaeUhfWdd_=&rzoqOpVoXcWcU=&QUtXotUYdVpr_=&CXc6LaVbaWbmd=&tgABrlZVisYeZ=&Vjr9fEXkaqVrs=&nbkfguXdcYomW=&aT3WhkWslmrnm=&aTPDcLVkg_Uhj=&fC6OTRUbZgUsf=&ifVMKlUrsrnol=&3xyyakVahbjbf=&899bTTWjo_grr=&JyCAMZZgmrsna=&BFXWFSYUnsook=&ekwNbZWrnbcoj=&8Wd6XzY_lrpgp=&LJbo36WZ_aZfY=&TLNsICXfWXpjZ=&7gEorqWnY_Ugb=&YZHTl7VfhpWpc=&4wwDcAUVmUeVb=&hJ2IIVXrWfsmc=&UXES56U_elejb=&vitIlJZWflbWX=&Tu_I9zXXZlo_h=&nNj6q4VbUgmYs=&C9JgP8Vgeh_mW=&HzoL5yZqmWXqg=&thUPx2Uaasqbr=&Yg3YIhXjgkbop=&JAWVbWZqljYjk=&rCwBdXXpsgedU=&jDk5U7X_qjq_n=&rZPZEQX_ifroY=&7zwjchZVUVaiZ=&ZcFkWiZojpXhe=&KoHbTUZ_hUYcU=&KuTaAWUbiniiY=&WACl7CXkmYjWe=&2quUCBUghjgkp=&_GzYD5WWkmhco=&9e5JOvXVpjWcf=&kDLrLVZp_lsbU=&2TNn4RYqiqdmc=&4WRTbpXerdboY=&6WcNIFVXbdYgU=&hzvtYoVniXbkp=&bhTpIIXnVjalq=&Pj9nZ_Vhbjicb=&eyVHvfXZgpsem=&aeJ2OGUgjpkjU=&Uetql8ZWgZafh=&dUOlMFZbWXedi=&_ArgxYZkWoUpV=&ohrJT5Zrqchq_=&NNf3XSUrdgUer=&LEcTzGXjbmgqX=&jHKIAoYhossVZ=&UrIvO4VefUjro=&cLT4WpUWiamcl=&qeXakjXpsoqrk=&E_WTlVWbi_bmg=&SMxubLZiZoqsa=&zBGPEDUVhoWVq=&ZFGEyOXUZYZgc=&mL4nYcUac_dij=&GxCDofWjscrVj=&icZJ7sWlalhkc=&vecO4IUnlqkVs=&qSCpWsUooqa__=&cBR9bbYrWYcWo=&49UXHcVrr_UfW=&NtrIdIUqbiWW_=&Qpv5pbZjnfVkg=&zMxYOdXrchWoZ=&n6KnSMYVibhZg=&3PHFTgXqib_Xs=&lkI9SZWljeVhr=&vO7trpVocacac=&xJ2nBhVjdUl_f=&CU73e_Unnip_e=&niwsQkYdYegd_=&MpfT_cZZcqlfW=&e8IwfqZbnqrVU=&YbgjVJUbnsqd_=&49FHVJWXZnVZn=&zH6DAKXXmjfof=&qSaBcuYZiojXd=&phYpQCXWdabUj=&VvIwvWWeYgU_o=&KHkjqfWokcemc=&oGedwpXjcphij=&3ai5yNZVhraWe=&rMqkvtUajlZgh=&eVts2wXcVVnnZ=&hWuKXyXZdcdb_=&VVrNcuWokYoqp=&Q3oBGdWrpaVVX=&4PszyoWmVbWa_=&H_dU54YWkrrrf=&6Mv9lzZfWkile=&uvLdTEUXVWrZp=&46a6ZIUasnX_n=&zVWP5EYilfqld=&3pegVmY_qYZim=&w6oOHiZ_lkfog=&2yQEcSXZkqisW=&MWd3kbYdeqWYc=&JZhMJaUWdYicW=&lobY9JYcooYlb=&whRPNRVmqamsZ=&akczCSXlomgUk=&2N8jdmZXZagUd=&nrqPOrYZdaVfn=&u9mj5OYUjn_Zp=&iNiQZLVjicdeh=&hLOupDWscsZoY=&VBsvsOWpXXVYa=&LyOPRYWcn_Vka=&46W3J5ZfZsri_=&JqefERZmdpYUj=&VK_nc_VlgcZXj=&fplkZTVfbVhpi=&Qf8PLiXmig_me=&dkfYrdWrdnVla=&BgfzNrUasoY_e=&y83GkkXVdXgg_=&CIYAbDUbnVXah=&ljaEB7Zssfcmg=&sVzshmYibkciZ=&KTtmS4XoiY_ej=&ZlkqnEYlbVqZY=&J7vPwCZjXdqjb=&NL36dDZlsahZm=&8eUU5kYkjdkpn=&3K8JefYpeVVh_=&D7lXWxYkUfmaq=&4CnlkkYidnY_g=&bft_zSYrWlWVo=&VXJcZQWmghcYY=&e_N6ptZY_kjqr=&FbL_J3V_hmrhV=&Jhj5atVcfnXYl=&rIHhEmZdVnkZj=&s7jKYvVrojmY_=&yHMKiCWprYoZl=&OA7OmeXpqpgs_=&RpXgYVUoU_kli=&NC2DD3Ufgorh_=&VNfdhUYaVcrYY=&R6_oe9Ys_nc_g=&ELR9mAX_fWmoV=&_pov2TXkdUrjp=&mGiT8AZcXbUag=&dpw3LeWXbnboU=&ea_XWuXgfjdgc=&Q2sDFpUfgrWVq=&QQKE9BX_jWqhh=&6N5sUmUnlojWq=&65jwSKZs_djfX=&x4k3_KUhjZrd_=&MYiyCVZnZVmZf=&plkYOCUksmUeX=&biDA6vXZcfnsh=&IomlZBUisiagW=&JndBOxYpdgohX=&rc3CjeX_eejWj=&47JV_3YdaXbhe=&eI46g4UYZXYZp=&GHK7jLUsXqhUm=&B_Amx4Uam_hod=&bUlOmgYZpiaUX=&F6Flr2Ycei_XW=&2bYvuvVdisfqk=&SHZwUtUladjpk=&bpUfmSWpqmZUo=&JI7xkhZVZcVag=&SgcbgtWqgdebn=&gCpazaUkiXfbo=&k_TkXnXg_Xgea=&GYlVFQXfbkphp=&HkpqCsZaVYqls=&GF2lysXcUbcWY=&P2e3EmVUf_agp=&y5ekEDZbVqUcl=&s7mkqIW_lgZmj=&SZEwMnY_fbpag=&Te6XQCU_odrkW=&rGWg5uWYhjhje=&WDN6tMWVqVlhh=&KU9dOpXXYchdV=&p_iDSLXlihqhg=&icnozFUaofVgU=&DuYuavWcXggo_=&us5Q_pXonsrXg=&4OxBLoZmalbca=&5qlrooUkVn__j=&qk54NsU_YiY_X=&h4XR6eXacVjjk=&VbapUxWkkmk_b=&eHkSU2XVpdUqp=&Q3fxHmUasea_o=&A_guNxUWVhVes=&vKacSdUgZlmUn=&KVYJgEVkjqngi=&5snpAgXdVbnoY=&NdTfBXZWhsmeX=&nYcH4OZrinqbs=&TYjikVUrmpqZr=&Mg68OfUXploeb=&AMwWQUViYlUni=&tIGmEwUXasWin=&lqldoSXUoYVam=&5AB5laXXlWUqU=&oewpwBWrXaoir=&Jf3X25XfpiXer=&zOC7dXXerocsq=&SJwY8XUWXqbs_=&5knjHNXlcpco_=&SnaJGHYWsXbgg=&9dEA55VnomWdd=&T6syX5Zecpsnr=&3Qo_LpVWchpac=&PiVZHBXlfjcY_=&pDAHZzVednWsj=&vaMdQBUbrY_fh=&GL3je9Ykmfkgq=&KJ92nSWafqagr=&79bqyKWjVUqlj=&3g38RYWfoeZqV=&4yneikUolgrni=&K99Yo3ZmlgfaU=&kHptlYWajdsqj=&8mXljbYoZUppl=&4ICkTgX_gohqb=&VzgEytZgrVdhl=&NqlwvYYhdoUVf=&zHzFQXXXmWjhc=&fcRZHfUomm_jb=&gBuuvnZrc_jh_=&v4uhm8UskkcfW=&NNk34BZUfaWZi=&heJ_Q3WspYb_p=&r4mhgnUkXjUar=&tpzgzXXofeZqn=&uZwh8OUrYfVXs=&TnW89pXmjWYeZ=&FE8e9kUokgaan=&wVcbqBU_jskqb=&t7GdJjWfjkfae=&Rwo9ouZhWUdqh=&B8tItQWaerYff=&ohhCn_XVXegjm=&49zHNYXfgenVl=&OojPApYUVdc_U=&L3IYKzZkYafqd=&Y9EVwcYdXYUlZ=&uKgkHZVkjeggV=&NW2uFQWVsglkc=&LYVCtHUWXqejh=&gHDe8eVneaphU=&eKGfpQUhrljlo=&bYHl_rXZ_WWZe=&tQTwCaXjiqljp=&e5JLuSUkojXfi=&soXX3fVaXieXX=&BFmwEaYlXfWes=&6_CqpgVWgUhjY=&yS29R9WfYnVcs=&A9l5zIYaYpcqW=&25JrkQYpfinVm=&j9EWOKUZrrkXi=&qNglOaZeonkkX=&8qd3KqZhYrXZq=&5OOvTZVnianrU=&BEIp9VZV_gkic=&6ap6d6UgkajUp=&diw44kUlijmWU=&G52dY6UjhgXUh=&dqW5pKXqbqcin=&F7A9nNWVbdnVl=&pEVxRWZ_kUUVf=&QOrbkQVjdfefe=&MeGwcxUrVslns=&FvXHHLXZmoaef=&wVY2B9Wki_Xfa=&iJMN3DWZroVpg=&CeI_bFZahkdWs=&mYdzeiYepqYpd=&R78Kr8YajhbUq=&k9OHvJWVfrdok=&camLJmX_hqfUY=&gJQdjIZaUj_kW=&BRMR6jWmYiYgW=&XcFuFNVhXehob=&EEB2HVXoXqsXm=&In_YSOVW_ldkj=&V8Vfl4UZqclih=&PeVu9WVbne_Ue=&MYuarJXkmfhiW=&_FLjOEZcflWWd=&_XvuklXUapaom=&JwhsfDWXZqqaX=&OuB6EpVrkm_fd=&PmkESMXYYpZnW=&ITZM8UWkobpXd=&KZ67lPVlnspmf=&fmAaAfUjUYWai=&SgfRbqVZUqlif=&BGBGwuX_ckofh=&372ycXUbfjgko=&saSyRhVlVmsrp=&sE99JNWmpggWm=&gKCAFNWYoiVZd=&9H29VRYrlsUZq=&lIQCKKUfiffgX=&AbU9w2Vcppeqs=&2ZglVeXpgleiW=&ke5iisXUoVlnX=&sJQJjlWhZoelY=&c65VyGZoddgYc=&43G5_bVUqVXaW=&DZsQsRXeqhigo=&93jodUVXhZriU=&oyce_fWWWnqob=&_mGXwAWaopnss=&bza9JeVXXoYej=&Hkw3EIUbcbsmc=&zEmlD_Xdfbrrg=&o5d2vPZh_cfeY=&HGf97zWjoWZVf=&jzBlgnX_br_cV=&iErj8qZo_baec=&BsoztdUmg_d_q=&Ct6MEQZqqocjj=&PM2F8eXaqbUda=&f9O7UtVnYdibp=&HXRDvmYjimekn=&luwsskXfmalmZ=&lBtZAyUkcgjfd=&EDmvJpZphgmaq=&ovxVLCXsffW_Y=&KNol6ZZpdaoik=&AkmO7HZqcispq=&9zinycXnajsWm=&QoqUcAWbY_VZo=&IiiAr8YVfemnU=&wJHo3KYmVmiVd=&ADaVhSYXmpWrZ=&p5ZgbFUeqZmYU=&BPniQtXokdofm=&EwLGvgY_bUYqi=&9dPuSaZcjcXVX=&CgAxxpZZcbWmb=&VC8rjyYZprUca=&dRY7vCWYXjp_V=&RWM_yyVWXkWao=&2TBuJiVZajV_d=&9geY2GZo_hgW_=&Ar7OnaWVYqdhq=&8VFarqYejpjhb=&uDKuy2ZhcbjYh=&pdpRmKWhhWspk=&tTwuIgVedUZgc=&GxeEncXVWlnej=&ApWMIrVd_ldml=&6oQhgSWddrqoo=&7YEo2vUZqpoWV=&pdqiacVWqbnmY=&dh9TI8VZiVZYX=&PXoKc2YbbneZW=&XRZ3HbYbolanZ=&IjHwVGWqZUpaa=&nH4bwGXbakaZ_=&QqZPOGXfj_rpi=&cgls4nZoprUmn=&FnoaHQXWelU_m=&eQXSzcUdVVrfm=&NZyKvtZaiismW=&YAKwTeUmrhUXp=&BOvUtpWrohjmY=&BYZL3MUZUiqUZ=&_nmhvXVipombm=&RYtQkoYodreUV=&vTFwQqVjpqZbf=&kMGxzTVbgrali=&mYXdPWVnmgkjj=&YT9mOZYirjmiX=&BdADVSZilkbck=&QeoDybZXZbndh=&jgM9LbZUcbggs=&Jnyai9XdUnnmZ=&lIkpTkYYgj_Ul=&BquDGiVbgkscZ=&Kv7IpyXqopkZi=&OJ8fdAYUVmgiU=&E7eMb8Zo_Xmcn=&HMjqOyZbUqYpk=&9JBJxBZsijnlU=&LdHTdKXZUgpcl=&HIhCTvXUVjhlm=&blzASMYoVUg_r=&SompS8ZakgcXV=&jS6gUVXlbYjZp=&DfGlSwXcka_nU=&h6wTnnWsnkZei=&3vMOZ4VpoiXZo=&i6RADRUXiiZlY=&RlX4ISWYhjkZm=&R9GmwuUZXhWrU=&oB_AolZXksUqn=&dd7WlRYWgZcVd=&OtrZQPUrqihZm=&Am4E4iUshbZnX=&EJ2ZTsZY_lcUd=&Y5bIJzVe_Zjr_=&hVSXaUWZmddcZ=&J82ibVVaeqqoh=&lxvYLlVW_Wjnf=&z8mH9bXUXlqjf=&eudF4pXbhgeVb=&UMAEPaYoXkg_h=&GWX2WtXfUYsUU=&hh5KGWYpkdjlr=&FwxfvnYgjjll_=&2FHyzaXpbsrfc=&uhnkLoWmf_plX=&fIU9IlX_klrmg=&gfxsOFZcedUge=&anT3_uUkj_rmb=&BjGuAkUnXdkWk=&izwdFqVfkrbnf=&fkcOqKXiiZjol=&4vN4QWXZXXUrg=&LIw5EdWeVnrgo=&qD2jmqVdqYUak=&yseOILVsqsleY=&jtXd9hXmknlfq=&Z8P9a7Y_fcqaj=&5pfQT7Wdkffmr=&PmDyKVX_j_jpY=&zhS9VTWanjWpk=&BmORRsXehjcmb=&5muKo4ZlbUhbl=&bnbXkiX_aYbh_=&fB5_8BUjXoUmn=&UuuHXCZrmlrb_=&EymTbuUisfoaa=&5QCi5KXgcliVW=&nk6uNqU_UZfbd=&dAiblrVhUXikm=&FGSbNZYprhnVk=&ysqB6lYYjqbdd=&5OEcGMUh_Wsbr=&uMM4icUinUoVU=&a8XPxoXeeZWgr=&o7FliEZmfg_jc=&KPwZRLZehfseW=&h9ZCJeZasbfml=&DfR4nMZhdkhXb=&X4nFw4WbaYgkr=&qi6yj2YZ_dsbr=&AklzJtYbVcXVp=&wIph6XWUqlgbZ=&p__UCwZldbVUb=&Y7LUOjZmdoVjn=&5taZC8ZgjmYa_=&eOxCKOUksYoaa=&IwR8ljWlYlXhd=&Us8GnmYfVfZhq=&s2DZnlZsofac_=&VFYZBlYcrhUWW=&5QJ5nUZq_fZnZ=&QFIr2cYaXjnrg=&KeMNmiYlsnoWg=&BvQGxWUkWdbos=&oLJDt4YedhqZj=&PukS8eYgU_esZ=&N3zxtjYldfrZp=&Q2YmrcYaWWjdb=&ekeCRhUmephgV=&eXqfY8XmUWdpd=&eviC9CYnrqiUo=&cvwBEFWcXYlnh=&aDxch6Yrdekns=&onLa9tV_qhaai=&CvS4w2Xlaimog=&VRkKt4Zj_acjo=&7CqtwYZeefUdf=&OWLCVpVYpkWlf=&wfuODdWdlWdlc=&KZXU4_VddrcU_=&9NT_TmYphgehl=&KTk4NUYdaaafc=&mdrAsHZeWarZr=&YkwblkUWhWdjm=&tTSxGhUjiojUf=&FO_7NhUjkXhds=&Jc8smqXWoZYor=&BzAyoNW_lnorV=&lXAcIuWipbhWg=&i7mK3pWVYW_qr=&Fr4ww2Zmebqdg=&kbs954UjVaVVV=&C6GY6AYdionXe=&MPSItOWfmhffX=&xegJnsZan_V_p=&wi4dc3ZbbnUep=&_VpHrSUsfsobh=&ZzSsgSYlnqsir=&XULz8OZmdaoif=&OAl43FYbbhqZ_=&ChgAsEXjqnXhj=&vQrJpSYpnYjhp=&wHrrZ2VeU_kXi=&65CiwIZsqenWg=&Ml4Dq_XfeVcXk=&ENggKaZrZldml=&glQDgBZnnbbna=&qDU7rPUfhlsds=&L4c_waYiikVfj=&3imWTyUWVaohe=&pdkGxEYpq_okX=&9J6ujJZWUZdbj=&qiiMfnZgdcfjn=&yeJvy9VXjlbbV=&3SmmMsUnerp_U=&oMxnvCYU_opne=&tFr56CVgakVqr=&h6QLN7ZnnooZl=&AVFP88Wabcdnn=&Wz_x66ZjepUhd=&4WucddXlW_bin=&3RJpVoZ_kiW_c=&895TXIVplkrVh=&8JvPGtVaedaVr=&YlXcGhXbcsZpi=&VvPdjiZqrrqcV=&idqdNyWpbhqWX=&qkNVmtXdcUcge=&pk76jfYlqhgdW=&h8EfFJVYjUUZb=&c3fT3QZmVYsle=&2i2aReYmnkgnk=&XfCj7CXWd_hjW=&YKLsOQUepjkbV=&wztCysZiWcfUp=&7PzGUZXgmgmcd=&PoC7KtUWqhmkm=&HRHvTGVlsnWpo=&me98ANVnYqWof=&v7PKOmUobscpl=&29AFdlZoc_esm=&XguEOeUiblske=&Edxg8hYWbmXbk=&XzdUEbZmWqW__=&XnOEnLVVhdkmb=&t64ZDeXZlnsUi=&_GVBdTZnkhonn=&v3VThEYjgpVXn=&c6sp8IZjWnbdd=&sDLu4sUYlbccm=&iMjfQvYdecakr=&lIMSdxWXfXgnk=&mVeqgMVYqhaVd=&kjUc9tYleahir=&_nAaPBWiodnYm=&_dEbSuUisbmcW=&NZl8ZmYZsjZWZ=&7Fr8zaXgahpqm=&fzfB_gYsfhosr=&aI9NZXYZoqkbo=&LIHiBmVfYebfc=&3LzedNUjsmgVf=&z3cdcdXelakWc=&DsV7AqUZjXXnc=&VGm_OpViVniii=&ymirR7ZjfhsUp=&DriHJEWXeh_X_=&SpJbqOUcaXlkq=&RXGFw2Wbminpc=&Z9creJVqilllk=&Q7I7IPZWYomni=&VWcygfYrccikk=&4kU3ScYVsaheg=&TBBWoyXqnXfbf=&fw3N8IUbqqVbp=&_WgaveYdkqips=&3WxRoLWighhll=&CmBbArVigVUce=&hXYEEPV_lhrdX=&zIJ5OvXfrqael=&Ut3UdqXVXhXjh=&dUjcT2ZYsWkpj=&tgJgbAVVjknlh=&4abOawXWcsolV=&3qkOhaXdpW_aj=&Kb4YH5XYedcgg=&emZmWkVdcgZgh=&gS_rJxXpabkWl=&OVgQjLVXiXqUb=&3QS6GBUrXkkhc=&XuJSpjVWgoeZX=&NKuMoiWbhkXVU=&OIdCqUUWroghW=&aEwAnIYVYrggY=&S2HiQIVshrpXa=&5ehOhDXf__frg=&9uWO9nWpVYWfn=&SeHwC3WjYbddg=&UiTgDlZfgomZj=&kHofLwXookeX_=&RhK_x6XWqsdon=&yO9SODZVVWaVq=&v7feNAYogjdUW=&iWxensYZaisaq=&CuqoJXXaUklcn=&W9x2tCUsefpYm=&_WVo5SVsbdYhW=&GXLQfxXnfcooU=&9tlkCzYscoUok=&VcBZf2UfembWY=&G4hCBSXqgWbpj=&p6IMhCWebbg_e=&EUwnCRXhmfsjp=&EY3ze2UXfX__W=&YWmLMDZoZjjbk=&YKzrzOZqUYfYg=&fUJ3XKZggq_ol=&mlfpFBWfWXnef=&pHN4xLYpjhshV=&p3nSRVVqrksbi=&fJwObsWmUmccU=&TrG4kgW_WsqZn=&3zTYdfWmihnYh=&y4dHmfZiXbd_f=&jm9nKPXocsgXo=&IQdcNHVnreqrg=&kns4asWbdhasq=&f8Uq8VWgidacs=&TlSECmZlks_qZ=&cxVhEfVqYXsdm=&J6i64_YqjkfWh=&RpFEPrYehrZYn=&HJDQ_UZl_gdXm=&LNkpsuWc_jgdW=&8tSlRKYdlinqs=&j3uRlxYqjfdok=&YS2kBPWkclpmU=&L5Kj7DVXhZUdr=&r4HIojZsnXUek=&d3_Mi_ZXe_bnq=&V5vO7OUsnloWn=&xpGZvIWhZkdqg=&tKIkjjWjWg_Xo=&ZtOvueVVfg_mZ=&N5aE_XWpddnir=&X8ztD6VYVrecc=&HGU7ZQXdYa_ls=&mUucMgYUjn_oZ=&pNSe28Xs_jZfb=&Fpj6irYqYUrmh=&l3Su7bUlWhhdr=&YJFunkZpqkgaa=&UyMcqDXdsqjho=&6f_N_CWnYWXWq=&e_wwp4UlsgfXU=&H_SHtbYlgrgdo=&hrGGO8UUjZrep=&X9qiLuXfheVfW=&Ho67C8UWXgnnh=&aUjSN7Wm_Xmeg=&WmGgpnWWrehng=&ht6oM4WYejefn=&JB5XdnWldpjaW=&JBPBdgXaVkWsa=&Sll3zGVfjYpoe=&hFAYn7UbljnXn=&eGjFFxYdoolqZ=&ZgXBlKXieksYm=&t8TzrjXmUke_a=&vsPcbOXXVrbeV=&Yw25aiYalnspj=&NOlJ4rUUUpUkh=&4kc8ucZsYjZko=&4snnLrXdqYbn_=&8jrrwRZoVscXn=&SF5cR3YeXcfhU=&2UtQNRWbYsism=&_WzsBgUVbjY__=&UENqSFYamiaUX=&9o4ElCWnfdqc_=&FSGR6VWVasbab=&6KTeHmZbXYfgo=&CPsnTIY_kkVjq=&CKGl7iVknqmqU=&OvWBwsWgYWYeb=&dau_L7Xeaqpib=&xeUB9vXaVlkqV=&oeWuAAZc_WVZs=&YfOWXRXZeoror=&dyFXKkWb_qZos=&ErQlWRVdUdqnW=&jQo7H9XmkdYVe=&lDgTR5ZbdsccY=&SuXKhGZobljeh=&GViCARUqmgVcW=&uJ5MvQZ_sUopj=&JtGKLOW_agpXa=&AeIqipXbYWUcc=&BHdGQSX_cillr=&jHGrCKWrjXhs_=&_vbeqQUd_nYle=&Pdo5PgZWVaegU=&X5blxkVbUpVaf=&N9LLLWWVWnqsh=&vAsXt6YobYYbb=&8WpYXAXYdXqYh=&AsNyvWVksqkVV=&lyClDYZZVqdmi=&eTiBxnUZqpeaX=&uVPnc6WcoYWep=&2mmUYwXYajpsh=&hcQg6cZdYZUsa=&r9FlvSZcls_dY=&JW4apNYjXVVkV=&LENUoMYhngija=&Fuk8XwUqgjchY=&G4T5zhYXXgqgZ=&h2OCeeUberZbZ=&qQmO26W_dkgpX=&xtpRI9XjgXolh=&QyV9m4UdrVhqh=&s6wo4HWsfgdqs=&oQPsEdZlhUiqe=&3z5ZEaXWdnUdZ=&r_ydOXWdsrd_b=&8nFiwCVjqWmbn=&smD68XZoakiYU=&DXOQw_UipXomr=&5PrFOcZUnkjnY=&zDkuf4UanhYmV=&TMvPFFVkjWUoi=&ursvGtXfnUofs=&AbxqQ8Uan_kYf=&DYyxFqWhYmde_=&OlCbjEUgqmjXm=&tv8HF8X_UX_qZ=&hctQ96VbVYdmg=&bkuGoUXhcomYc=&FqP2MbXVoVfpk=&ClLk8XXeollZZ=&BchxFyXglkYeX=&UIxbEOUiWchmg=&xZO6PzYsYfesb=&zSvEJlWgWcZbh=&UQZHxYWjeeaof=&itfLTGVX_jr_X=&h9UqxXXjpjejX=&LaBqPKZeer_Wi=&HpqFQlZereeal=&p5ptxRVcYcaYl=&aredJSVijgcss=&mfNAuvUrYVjh_=&UfwWFJXnfcfc_=&NdBelwWldZnsn=&cDiNlhVehmdjV=&c5I7yhXombpkp=&Qzh6hWUmdrnme=&mJZNxDZnapqdm=&bDQ_L3UXnmljq=&b3GmIiXrmrZnd=&e_snRfZhXmehi=&pYBe8kVUaZefr=&WMMw97Xqah_ib=&cxtUDDWZnbXWf=&VnJmRVYkkhWYj=&FVcoL8XppsUZb=&OvSrl4YmmbZmd=&rUffZmZZgXinf=&fXm3KvXnjlqgk=&KdEqDQXi_iUoa=&nhrgMQUpefcpV=&RmvB6qWXfiUjU=&CxuXCxVcVjkqn=&EthGsvVjlrqaU=&4EfLOZZoVskUX=&6ZD3FrXrgmhYj=&ECvtrSWe_kmVZ=&TwSsnrUYoeroX=&LNyZj9YboqnXa=&xEBGHDWhbqfgi=&C8r2pUVmcYfkf=&LCVx9NYVeUVfe=&XiFI3qYfaUpkh=&i4Edt2WWlslfc=&CnfUBJWWrWZdk=&pMSEoIZhXZbfW=&fkUOt4Wa_obhY=&luMOViZcUbkjm=&Jq5J7yUfaXsfs=&TQnNSVXlhWkhZ=&EGqxYMVsVpkUX=&hDqW9eUnr_ecl=&VruLR8Wcmjpbn=&TEnYUQWcmaZVn=&x723CSUmelZbq=&SjUl8PYfcXVYe=&NlRP4sUfpsnlg=&ZZkbSNXsbrnoX=&zB2LJvYYfflZV=&e_XaRxYinmXe_=&Z4gFfVXislZbU=&5Ao9LPUbVYVes=&rQ44mUXcknlbe=&76KJ6sXqbkrlq=&XWLCBqYslsldX=&9etSn4Zrdadok=&mq8ukKV_mbVfi=&MWIl7eUjZmpUb=&grLiEvVVfslUi=&8HgUzlYpmps_p=&QFJ54EWickfed=&QTJyniZVWgUhf=&2eyK_kYXWonpd=&oBl9xiZdalWmV=&Fj3ZwFWmcXVYb=&fEqZMMVbnpqcb=&pz5ARUYoUomXn=&B4UpGdXmisWgs=&dQ6_CGWlnXjV_=&qeJUGSWncmsbU=&ummTFWZicpZmY=&KDnddxYbhhpoe=&pFBsHoWfigrad=&DpHLMIWcqWWYZ=&wUb2MTUYrUkZe=&Xbn3JFYpaoUZo=&o5nfbpVfes_di=&HCeP_kZrsXbX_=&niIfqCXmkgkZd=&A6JNNBVZWWjqr=&PwFG_YUioZplW=&dq2INWU_UerWf=&QDJIGAUjgUqqi=&lcfyRIVjgZglg=&mcgHsUWsU_kWe=&FL3Io3ZVdnoWh=&hxFtJEUanhnfq=&FQhUt2Ugrnkre=&zmwwGmXnermcl=&tXdJEyVannseU=&lcGS6PUWkhbqe=&HWlGY2XiUWecn=&xTuyKgXlijlqp=&B8TcxlYroVqce=&zl7OoxWncj_Wc=&SAU9y6XgqVqgs=&xFLq9bZcqWiWs=&3_5_k3VhYmnVf=&_mpfNdYVfokp_=&hWIWD9VjddUbm=&zKfcdTUhrekYl=&FSf8YVYdoVsla=&j9ZddwVrfscVb=&P7rk6DVopcZoi=&oAzrIiYXoniWp=&RyZ5T9Za__e_b=&FhVUQaZ_eqrZd=&tUivh9ZkskUjW=&Dva7IqYbdkale=&_WANUvVnjXf__=&QjDOD3Upijmlh=&E9aCiCWasUoZa=&XDDbXUVbXp_ci=&UKZFsVXinsYea=&WYodHkUWbnjg_=&SvmzkTUddcWYc=&aAWzQAVVbspes=&QCtDUeXpYhshh=&tKHt6uZnWndfi=&QOBu32UkbUnhm=&qFikceYjgkgef=&Z9u_ziVeiYrYX=&DktOdsYWoVcXe=&oA9bsqVkWidlb=&DIXGpfUelWdni=&SAYfRcXpqXeaa=&diOyQJZjYphWX=&2nxJ_bXjjigZo=&qbS7KnXoUkUak=&hE_e8rWjd_lZs=&E_u65OVnjqofe=&6j6moRVmlqlXp=&BIdT7CXpnagrs=&AhST74XlrYrbj=&5ZO7_RUZsilfo=&XuYTFKWZdUhnq=&FO2oBkWrokpeU=&Zi8ZNhUWWqi_W=&znEuMNYYVcZYk=&QDaSi4XqZW_XY=&ZOhiocW_WhngV=&HL66P9Uamgden=&LC9qwKX_ncrel=&To9CutVgqpkUX=&WclqmbV_kiakq=&ViDcK4UVirbda=&rbFr_eUqhbebo=&VBbplhUfcrhgo=&HiDkGiVXjXgZg=&tF8kNRWiVnmVV=&NWqOzvYb_gkor=&oENDciZhUrhbq=&LU53U9XWd_pZi=&nuXA6BWnfkdq_=&hiwvuKXncopce=&xLzEYsXhs_i_e=&BLPSnGXsieibp=&THS8TqVUbmVsW=&yEIPPSZrmVnkn=&omwKy6VolbhiY=&E5O4u6XeZjnba=&xjNhZnWaVjrkq=&oeuVi8XhWdXsX=&2fyi2yWlkfkdn=&I28RfFUZagrka=&hcJtZAXhUYpmW=&EbxCvAZiqosqX=&2v5puuXlqo_nZ=&Mx6fRCUajWpUd=&4ojVXKYgdhqmb=&JcuK4tZbo_iaY=&xrv3pNXqVa_Wk=&xHJCHZX_cacaX=&U5BBm9WXljnpg=&r2ZLjLUZaprYi=&OZ_GvgVrUbaio=&4GoBicXgigfde=&LbLHCcZomodrq=&vq2M9vZYblqdi=&CbUJciW_pmdsh=&Zing9CVnjnmoj=&adhKGKYZWaoee=&ALrwwTZeXcln_=&H6dfBxXeq_k_o=&fQ7HGPZ_qalpX=&slyNb3UsWkhsV=&SscALUYgedoqp=&sDNClBUYfldWs=&HQd5CxZ_Usbdn=&9iSpgDZllVskX=&s2N_kLVnXYZ_i=&2Jp7wwZo_VnZq=&iXCs3KXaYbsUe=&NtvkkvZ_jhZmV=&rUjK8MUpmk_Xe=&EilP8UVgasced=&plu4_cVppgnYU=&6Pv_WYVj_dsrW=&H7M2vNXUscYmg=&oMeOhRW_bgaVn=&47AFPgYqnYiYl=&oTmgyYUYjjirf=&8KkFHTWqqnoc_=&yENqi8VdfYepd=&PeCUYcW_aZZZl=&PHDumiVVmgZih=&zOKmVMZbbdjem=&stgPB9Wsqlkbi=&PaoyfHUaojkre=&xFpwRMWcipqVb=&_HtzgXYdZsipe=&hVY5a3ZghYdcs=&yvOGPFZcqgocX=&5K3XxmYXgiice=&cIHRwWU_iV_jl=&vmluHXXjnhniq=&KxDeaYUjkhjiq=&aUHjAOZlsspqq=&3HxWk2Ucfkkda=&PowUQZVWeUfkV=&V6o9EdWrfollg=&UzvYkpUWUglgV=&Qp4qbMYfVjlpf=&7czgBeUooYmhU=&UkQ8fNZhspbYa=&42TWkZWgVdsaV=&ZnaHtiXlsXYnX=&yxM4R2Vffbbak=&al3vbfXrqfXdg=&xyXbVwWseeeYV=&hPcpDsZWWZXdj=&qwHD_oZhorqjV=&JEVom_Zosgnlg=&gVsnySX_dpWjd=&AJ26OOXXomZ_j=&5KxH6DYXaaabn=&BhzAqtXfWgoqj=&8bYKvzWijoeam=&ahSUKfUioUYgf=&pCjI2UXeVgsqk=&QD5BI3WkUiV_U=&IMIymkZXVdhUe=&nG9j7MYUbfsdk=&iqGy8sXkgdUlV=&IUGLLpYoZddcn=&zrfFOXUoUga_e=&CSNyGIVlVUjqs=&blzki3XefbWqb=&PnyKXJZZilpsb=&DpSWYcZajmnZj=&QBc6D3VUqYcbs=&jHlmXAXijdefn=&fGTQVKVaqnhWd=&lrxN6mZZmrUVs=&wxy6N9Umfgad_=&yOOODyYcqpskf=&9SZEJDWrdWenp=&uI7KiIXZfksqg=&GRxa8yVjYpnnZ=&KH7Ry2Usip_n_=&z8hyKjUcqhqpl=&7zfotxXrisqli=&dJAspoYoqVqje=&VT6PiRVmW_gUh=&dD__YrYcriYUp=&zxiVzpVhgpeXi=&suMh8yXVjlifU=&Z7vCBVXZlcWUo=&lglNc6XWgUlmX=&pYz9mYVYVpoUq=&MYLMcrUlppgjp=&ipz3iqVmZVpqV=&8lm74GXUdkgem=&qbDXeKUnkUhXX=&Ni9r6jXoplkeo=&9z7Vy7XUr_gWr=&JkK9WtVVliXWb=&YQjbmQVgiWmoo=&ijCKstXUppdgd=&o5JiAuW_amagm=&NWMUM9YfeUgfs=&Jrdk2mUXlheZX=&PqpzeUVmroZgV=&HPBOtDXra_lXc=&FNK_E7Xero__r=&xmphCPUgb_ghd=&lfTfzzXqegfd_=&c6KtW6VnfVkUg=&YbA33GZhnkmdk=&dpmU_dZocbimk=&lYax2QXpXYrei=&EXAyLlXqbYbl_=&UngUBtZUlUVcd=&Me8Ye8VkekoUg=&xetcz7UckpdXZ=&VSxlLtVaiqoaX=&KhL_CBVrrcobi=&cpWnO5WUokkUh=&RFmA8nYYfcUbb=&tk4L2iZrViVUj=&2PnOJCWZqqsik=&MfS_2jUjrpbYa=&4nXx5yWrcgrZ_=&4DHV9hUsfirdZ=&2NElHNVoXo_sg=&kXZSWGXkabmof=&CCr_hGVso_hdo=&HQManoZslWsV_=&B8zaUGUfgnklb=&e8C6t3X_imqYr=&U7s4duUdiZihm=&VMNZLZXUqXqlj=&dK2MkCXblYepV=&JVnUVhZqbZich=&CepyJeYfliVWk=&qlLUFPYoqfZWp=&83yzv3Vdrgi_l=&sHtW3XXqbhjVb=&ibwHldYsmbglp=&PyP49AZeXVnZd=&WTIIUXZpUWWni=&4DXcZPUfnnpkW=&dMYllHXlnoYkY=&IUSrY4WmjiloX=&g79hrhWsVileW=&RrooAbUhqsUlg=&bKj7nqWpZrdcc=&Je5mSQUbooere=&pnWqTVVVj_ioo=&J92SavYXZslep=&KeE4WXUbcdnnr=&k_mwQPYklpZqd=&CKercpYZZaflj=&pjTvFTZrlsihb=&_r5tnUZmaimlm=&O2X7ARUlncbpg=&qLU3g7VUbZZnn=&FWMnJ_YYmmqsc=&RTgejrYmkscXs=&bBmQ2vYsjUjXU=&MEvKeCUlYrkXb=&nhvLYZUWrbmYi=&2MyxFxYUlWZdW=&uvPk2GY_YnmYr=&ZTv6QCVVYVnXm=&CHZ_InVjbnqUm=&wJ4FZgXoWqakg=&V_NVnhWfafjgV=&X4sHzrXneh_qn=&lRrNKxY_gcbdm=&aObkwYYiiloja=&JP9LwSZqojYck=&ekSS6uVcrjqXk=&Jc6s2MWnZkkem=&dZV8DyZUgqdoW=&KxWVcFYhqdaU_=&SwgrhOYieUpcc=&kKd5YWVfVo_na=&4Uuz7uZWgkejd=&CttR24Umsbijs=&JMPkMPY_qqZbi=&wNljHMXdoqYV_=&sRRLa2Wjlocri=&CrkizeYdejenk=&Htxwh5UrVcqkV=&EtKFfaZqeijYi=&QdcTRJZb_nYnb=&emqF3xXddYpUb=&H5Q4Y2Wraq_Yh=&7eJD8EZolfbrn=&8wNbVAYssiWar=&BfL6HIVYqWkgn=&bKKXkXUWchjYs=&cQW5RzYosbp_b=&7vT4ypZXjqdsd=&azvs_uYfhVehd=&FrwtWbZfXcZmX=&FoD6daYergsWW=&Jk4QNiVmccqmf=&6YpvfzWh_abnV=&4SX4qwVmjmlaj=&9bPvLTWkrjcmg=&YH7nXHXVXnbdf=&CjAK8kUWbeWiU=&IR7bynUkpgnsU=&VhHv74UnXqW_q=&955suVYdYpmoY=&dmgPW_ZqcbiXY=&U36lpJXjgViaa=&hG8LBaZe_gkdX=&PiQBefZkcnfje=&EcXLuAXgnVpdc=&cWi5jHXgqXWsj=&xWj3yTYggbdhj=&2fVKjIWppspdr=&fmNSO2YdhUqZj=&PamxeJYjhqaWk=&f3sG68XYbmjfe=&oLTx45UmX_nmZ=&8dq74iXgYVUnf=&x6uswkVbkq_ro=&TVwZVwXrUfhUX=&8SOph5WslhgVj=&h_pCUtXdjl_m_=&mxVF9IVYpoejl=&qku8xsXa_nahq=&yLHVr3ZihZVjq=&hikpCTXpZaW_X=&hxGBXrYXZbYdq=&_TYw3kWhWhilj=&oOCW5cZncshog=&4r8xYjVhipfhd=&qjiq_RUqboYsq=&H66yO7Znbenok=&t6WW95UVqpdVj=&MTExvKZibshop=&bKqgvBZgjZfkg=&Q33YT4Wcdcppm=&r4IhdyVkqpfom=&RqZvgNXpibf_f=&nbCI7CXhcokbs=&nvcMhmVbjnWnX=&egdnKQVWUXpZZ=&dcnhpfZrhVlcf=&rqq2TdWmobWWs=&jsgu5CUroadmW=&6KcZ4nZZhUfls=&uZ8XVhWnijjpo=&x2B6NNXpdrXbX=&S734orUZhcflh=&QLtvQkXaUsh_o=&UPtAU5UXekdah=&KjMo4RX_lnbXX=&PPMcn6UZ_kpf_=&wI6sk5Umamdl_=&Kyv4zFUXackVb=&ezRHAJYplZaYk=&umFhb8ZcfYVrb=&5TUvfJXpmarog=&Ice2d_YfWfhVf=&DHkNGYWWojXXn=&qTSFCLVgfZesl=&BWwmFLUikmgpj=&SnGDYYVmgXp_i=&lAQiXVUdgsWbk=&h7MBqVUrXsjar=&4HM5EZVqcobfV=&cIgTbGXnYYfbd=&9bjWzeW_plfrk=&SIGTF_Xmhkddn=&R7W7hvWpqgrfp=&xZdyzKXUomqkW=&9NA3TMYssrUqo=&6AhL9fUnrY_Ul=&pN3PkDWoifpcV=&9t49WHUWjmajY=&oHjXJhWnkfVmh=&oxXPPoYdclich=&e7sMFAXrekYnV=&lSibL7XrUYjZs=&dIODNUYllcseW=&5DpVhlZhejaej=&hRABdlYihlrjY=&Yj_I4XYopUdsc=&rDzjinZUnoUem=&ohNPggZfnpiYs=&bfUx_kUbsecV_=&g_cqpsUbe__lW=&6J8PDrXjbYnXg=&uDtJnWXaroYeZ=&jqI8_pVgjpWrs=&PSPtHUVsZY_nY=&uUv_hNZbUqWZp=&hiRb4oWWoigaZ=&ExmbQDWgrap_c=&fuJgXAXVphnh_=&VmqcI9YXZdipc=&dAipKMZ_WXqeZ=&6qVQSDUmrYWXa=&jyqYkxUislhjm=&GnxBSUZXlgehi=&euz6dxUie_qVm=&wRuSmkXcafaff=&suxeYLXVndsif=&bgDuKGUUk_big=&r37TYUYcaUcap=&pHaBB_UmrnZhr=&COjsYvZs_sUVZ=&pUIsp8ZhUnqbi=&E42lJmXlUa_fm=&EAm686VhrVXfa=&KWLozbXqeXqfr=&tVIEBUUnqXnZW=&Yl8SPjWknVWcj=&QHxnOhWbejUje=&7B_zQpWopjqjj=&kz6qtLZsUnelU=&yTHkFvUqWmd_U=&VQoKDbUVsirXl=&sFkRfIWVinjiZ=&66SzF7VljbiXo=&FyKQjzUpemfqq=&TEoj_kVlqep_k=&maSrlwW_lrggf=&W3_RQaW_pldmf=&K9sBh9UYliZWf=&hFwBnjYehkknq=&cTknvNY_bkqko=&Lj8q8vZeXphkU=&kisWfqUnglmUm=&aBjgR5WjcmWef=&ZR7D8ZXabmdVg=&h8vI7OZZg_anZ=&nnVie7YsenYV_=&U6ViDdYYjgUsi=&ZfIWE2Znhekkr=&zrqoXYUYspZYq=&8TOVQyZcUXoik=&Rr7ycGWVmZafq=&v58wFGYWWreWd=&bn7r5iUmdlZpk=&W57mDsZfidZhr=&5dPBbKXjhYiig=&mGtVczXnX_kXW=&gfUMVgVccWrqb=&bneYSKZYfZVra=&Idi6h2Xbfdndj=&PKYGKaXhZmgnc=&IjEE5gUpoppYr=&oA2zbEZqenWcc=&kvSKG8Ycrlpjl=&AHsNGvXqVdehU=&KjyTGCYgZjfks=&9_cGWeUprVdkX=&qHXVqSYsqnjge=&HukBWPUqaohqj=&QKCJPJZkqhjXk=&ZaoEN_YhefkUb=&Xnipx6Urlldq_=&3fmhvOVXpnYZb=&VM4KtzYadikhX=&zKFao9ZsmXqfi=&AJ4i5FWerlpmn=&DCPmbIWjrVgYf=&p3uGSCYadq_qf=&LOiNTjWbiVrig=&NWycUYVnZmjYk=&vFxnxJWdnYXeW=&vqEnxTYUiXgnl=&fQvRobWZi_Ukc=&fIaT3_Yiijlde=&7BTrwXVkZpgks=&xlQfUgVhUpUVc=&ejJP5sXsisaip=&heoVWWWqjZcgl=&yPMtJeVpqesjX=&vBytpTYaXmUan=&BMVTDbXcqeiof=&x6LTOBWfclpql=&PpTDtQZfsoefp=&2Ock23WjYoapX=&qE_LFZXZjcdpV=&z97rxAXsajZpW=&HjyHxQZdVmerr=&fNxB_MWXXUWjk=&c93WvJYX_fiej=&2WwRTvXZncskk=&b8qWbdXmfWreq=&GkXK7mXYddbek=&G4Pd7kYajoYbe=&b4rtrQUbnflgm=&2hLOIQVrjskVk=&aQTGxYXsWopmn=&U4oTFTXhiYYZm=&G8ZVAgUmomgea=&Aa6RnJYlfsrff=&etXIGgWbmopqh=&POm6tHWsaqing=&AE_FI_Vhjasn_=&8TxFrhVhXUhef=&q5IdvLYasklkn=&ma2RF6WpliWZW=&cruZnnYamUXlr=&czOC7hUVaVmqp=&mHg9cUUUmX_lq=&yEpDstVhjpkgo=&zzmPbqZiglZci=&VFukfqWgskZVo=&iMOfo7XsbYrgd=&ezGmIFUbmhXsU=&BDvyaGVXjbmhZ=&Lv9B7bXgbXjVi=&gI6xPWZdrhlha=&Gt3HCnVrqfnbl=&bkSUXqZbihcqs=&WNVswpVffflZe=&eoqWd_ZnrUkpa=&sJNNoyVbkZqhm=&spGxCZZoljqno=&gXtZhZUimerol=&DinKvJWVhkefs=&GsJkW9WndrUZs=&UoLViGWWdaXWX=&COgVdtUcYUnfg=&H5hNrpXmi_lZd=&mUgQ8gVdqnmWp=&nUncwBXZrfbdY=&rckwYoVaVmmce=&dnwAVfYerUdhq=&4g35GlUgidsgU=&IhNZh4ZcbUfoV=&2Woi9fWaXfloa=&ASTdLFUcZeVng=&ZpAD9aWknljor=&xVkCfgWVnbdVV=&3sCSGTWbYjUig=&3QhyH9Ufme_qU=&Jpa6I4ZpWU_rg=&JDNcsYVdUZfkg=&hKpL2mYX_hfaW=&tMYRQeWinnUUr=&T73hLWXbnaYYZ=&VPU8sxUkZhnWi=&VGI4iLYZXnhqY=&xmKVobUYkiiio=&D_VFouZYWaWpm=&su4HP7Wo_jXmo=&4vYI7pUhhldph=&wFw4GIVbsm_Yh=&vC3fZ8ZXUgfhj=&EhXTygZqkodig=&ennpygXcbViqZ=&vGAUHJZdW_mek=&iMLkFXZflaiZa=&HCdIMVWYXiYkh=&tCOe2aZa_qgss=&TAh3W4YmpWbiq=&9gZL7iVeq_oe_=&HEoxkWVjpYYYi=&5kfZTcZqqWnfh=&iUNKJ5UnafpVr=&eJDRiXUsslipZ=&my4l4WYejVkbp=&ils8CvXkYddiX=&_9XQEnWipgcok=&zsSb2TY_YiWnq=&YAJTz5Ws_jpXV=&zbwIbjWpaZrUq=&MXO4jiY_mfjZX=&7FXok6WdgWesV=&vce2G6WZXiXsr=&Mic8xrZjkUjnc=&GvNWzHY_XlmlY=&kq8p3_VXiblpc=&hhVwP3ZrVdelk=&WE3ZpwYrXcerg=&zHKqS7UpXpUWg=&VUcFI_Yime_gb=&EJz98bXnijjj_=&x_EYL9YmWnhgl=&p3knH9YepnjWh=&H4QxMeUUpmssb=&XRlv_NVde_ngn=&7mIwJoWUlrggg=&lFmqT8WekXjXe=&uxbCLYUnpWjgh=&2NmlJ5Ud_rgsn=&gzeYzuWUXpebo=&Of2p5jWddisps=&X5Ge_eWohYlUm=&UHcbyvWX_npdm=&Z3TTYdVgbU_rU=&jpk8rUWgleVps=&khuOfhVfearlY=&4XO7mWY_ZmWdV=&mXKC_VUojiYYm=&iiLmQZZpphbZj=&MXKMHXYhoXlbe=&wli8KAVsroZXl=&6ZMe4JWfUacbf=&QRWEq6UfhkZai=&VA4hW_VjaqiUq=&ZT5ycBZYnncna=&Ho8dK3VcnZUha=&bjtPGQWkcmnYq=&dJh_fEVZ_kiXU=&pmNDGRWmaWdff=&v39Ue_ZZgWe_W=&BOejm7XXiVrqb=&F_wyG_WWiqZWr=&uu5i68Vcrsnbr=&zox3nYWkmbjnb=&hCGtBjXccYlYX=&2uyoU4UgcYej_=&OCZXCuXWXVemc=&hV3KCWYsohmXr=&oUIRNmXkXZcoi=&_gBQeXVkpphsd=&kBAtATYgXceXc=&ckrm7HYpfVhYf=&aEZPdfVsklnjp=&dWtmPSWmVbVla=&XoaD6gZfecnij=&hZNxf4ZmnroWc=&ze4NlBUj_XnZo=&LiOqurUbXbajV=&ulmX2hU_ZnUje=&RfUzibYgngmlr=&HYyVhPYhiYlrU=&mc_MUhZhWUmYi=&INeRK5Wjifkid=&NAj2QlUgkgnbr=&LiTXzMUlUjeWl=&fOfRv_YlUsVWj=&xnq6ugYdnknVW=&WbtfpKXhYVX_f=&NVwtF8WVgbUoe=&FDNxM9YmZXjUk=&HKohi3Znsnici=&766NNlUkUoibX=&fJAjtWUkqcdUc=&5cyVDjXZoXpoU=&OELBjYW_hVsWo=&BcvmaiYhXkUcj=&TqNdj7X_noh_Y=&5_Ng5JVYnihpX=&i6vFylU__ZUoi=&yZq_59VUeWfqi=&dfhuN6VqXnlWm=&rjOuTMYibXnqZ=&lnxlhzVgiscYs=&IxwDyKWseipg_=&q6ef2PWZclsne=&3l2ansU_pbpXk=&3YqkbgV_ngeqm=&IVxX8yYgolmlr=&PxgfvFXdcUhip=&mU2dmtUZd_qU_=&EzhcB5VUYZdmf=&RSu_TAZrbYWkU=&rZkB2IUirqeYW=&5_tJyGXXirmmq=&RTvluvWpVabqf=&HvKTW4YhdUaXe=&idnXzUYbdlqlf=&98wuffXfhejme=&CUMmcCWigckVe=&7n3qp5WXbarkm=&SoU9geXcekcbh=&MqkCKGVbodgUa=&7oDqovXd_bosY=&clBEMeWjkjbZh=&Z49IswXekkVml=&Ma4GqaVprhfoj=&JYdcAkWgZasdZ=&_XmbS5ZnponhW=&n5SXUPYUpfXkf=&Xg48ekUndkWWs=&2Kc5m3UYqeeca=&BrayWkVZr_gff=&mqTPAZWgnrWgW=&Ib8L95V_sXgnX=&YGFmFHVdpcWVq=&A3fd_9YYkkqcV=&_T9eBLVWVYYUe=&4GbhfaWosWUla=&Bd8YH7YVgbWkX=&pXzTzoZVbgcVe=&QvmdLKWkrpedf=&h93gLVVnkqapV=&LzGZ99ZXdsrka=&igvc92WemWUVW=&tq2uWtUqqoeiU=&M2NezlVoUirjm=&gXhZSNUkdUrer=&O9_ReGXdqZYqf=&XIvCLPXUfbpgl=&roNujoYYaUlbm=&q_e6uJXYlkqhe=&35nayxWW_k_sn=&CiO5ITVohebhm=&KjgLiYWWmeiYV=&htsdciVVVnUii=&AxOR74WgVcfks=&oN_UcCZmrkWgk=&R5U6I4Wcq_caa=&VSa8H6Xjh_dYZ=&ATphu2VgmhYcX=&3hwmVPXbqnfmm=&cUnU89VsXWYri=&9cbOIeZb_Xpge=&XbRhq_YmXsock=&_uIlomXnbmYZs=&UQP8Y_ZhWonZV=&CnwX3sXfUVosY=&bVDz2uWjjbelY=&rh97XDVeekrsp=&PqBMjmWXWcaeZ=&f7WRjCXfhicgr=&LbnOHOYkffZsc=&7KokrNYqWrcmc=&g3OxffWWmpsji=&3x8zzQVUpeWZo=&n97Z_3ZYlbssq=&2QZXtUYViqZfi=&HFtqz8YlpUnli=&wV7mAgYgnbbWl=&_SuDIDZU_rkmh=&FkNo78WijegnU=&QVi2mcXc_jiWb=&fTNCpfXfefiZs=&3wPYWBZclfseg=&4ibvHmXchl_bZ=&SzRBR_ZeVZkfh=&FAQ87vVqWgXXf=&E2WeQyU_cp_j_=&pZdxeqXlcdeeY=&5_gVw5ZpfVonV=&HDLyPpV_jZrfp=&opNSGZYYhkUmn=&eOIGLmYbrZYrm=&99kTH_VpopdfW=&7r9kOJZeca_gs=&iMxiXiUjoelpo=&qgEauTYdpsiaq=&ioiGd9XrsgmZn=&S9EBpfWXpVhhZ=&4HVXWxUmkqmac=&anSeh4Upfbil_=&EEdvXtX_filio=&PBLK84UXsknbV=&YZdRxFYahklsi=&kWsdkMYqnesod=&mhwrfwXqlbVlf=&qLtTPUYVekVrY=&SJBnQPWlYjmVk=&i4HfIqUfmeUnm=&Qlm2KuUf_gpWd=&bJzXXtVjrnXma=&b3ym6FYfiobgg=&jmZbC5XXelamj=&k8cPhZXpeldmn=&HJyicsYjjprqr=&LkpVdnZZZYne_=&f6DyChZjcobom=&Oipj4pVYcWYmU=&nsxNfkUqdXaaj=&vINqIfYXqhaeg=&ayoiWhWabsUad=&CphBHcXdXhdnb=&I3VDrCUpiWgin=&ZtEhrfXdiqjrg=&RNiTjdYalmsYj=&VaBgalUhpWWjb=&fZet9bY_nhcgj=&QJtrbqVbdh_qb=&9SwBxcVokd_sp=&MuBElGYogmYad=&NYwD_hUpYZq_e=&rM5uTHYlmfdn_=&IlLebZXeiibUn=&cL2wuBUk_jsmp=&hI6JVgUi_rmsm=&ywc4EhZj_VsUU=&63dCgsWokdYke=&FbR5DrXlfqgWV=&pGngrLVYkX_eZ=&qjayxjYmhVlob=&wKEXLWVcXlofd=&iR3FLfX_qrVWY=&i3AxGVZgkVbUU=&cFLv6EWWmbcpX=&kQUSYjWfWZom_=&mcU5iNYWmkqnn=&669MopWioZXbV=&GdAd7UZbUkXom=&XM6YQcUhYsnad=&fxFaToVZlpmkh=&tGrEuZZohpmVk=&aocSJPUZharYc=&rcJIKgXeeq_kk=&4zpTw3Xsacp_l=&aychLgUssdfni=&InXCNyZeVYksk=&lX7jekWfdkkdn=&Xv3RVDUUdkXVj=&tvEZEOZm_ciir=&28ejUWZgicrjf=&OrqkN5VdpjXWe=&BMQfUfYl_VorX=&WUp33UVragUnX=&BIF8hQYapem_k=&RVNjk4V_riWkW=&mTWGhwY_mrXre=&3G4lMXWpUXfkr=&k4AH2CYfXgdsf=&3_ysGUXhsnopZ=&swRMBeXhlciWq=&VTmHi2YnglZmi=&rnNedsUUobZZo=&sHDP8mYmblpfd=&B2z6eMXV_iYro=&A37PTIZghYqdk=&TrTm2yZscXfrr=&TfwDBEZmlgigh=&KQJcToVhjWgZf=&T8GjPHYajjlrg=&frvo9lUUdmkcs=&MgmUnOXgbYiXr=&FtLUOPWs_nbUp=&5f2S4qUkoaiem=&Byu5vYXX_YepY=&utfXPgYdbihUa=&6_6vwkVhcUpbm=&fv4WCBWVamrZ_=&DgF76aWlZXkbc=&YpBIsAWghbnoq=&YveqiXVabeaqp=&NCDxV4ZmedUlj=&PrKqHdUmUlsmg=&9ItcyfUjehnZj=&3tqh_PVrWhXUm=&bJbkPKWZkcVgr=&ezFmGWYeWVoVX=&kKkjn3ZargrW_=&6rrVOlUmmcfml=&JlZrB_XibWZmj=&lrccIoWWhlcip=&Fihh5FXXsglUk=&LcVdrzUbqrerb=&K3pVkpXrdmklq=&WIiRdTV_qlcms=&Hzkty3Vraodla=&vvZ9VkVrWldje=&rJRPpUYrfokYe=&kwHrC5WrpYYUb=&Ei6WP2VkpXYch=&cIFq2RXXhkqsp=&7ynvnrWVknXm_=&XcZy5MZddXn_k=&GnDjpmWpjVopj=&_LC47pUmmppgc=&JUk6ERVjnsloY=&P8nsdqUjrrkYW=&pf6RKIXdYgUkZ=&4ZWXo9XasWccX=&oGTA9pYhihXlX=&vXXAY7UrZaebd=&ScXoSOVeWpjkf=&Dg2cAPXgXXeip=&2XRSFRYagp_kj=&ahbmFvYbblZsh=&MI8CwwUsabfrl=&h2fS65UjeoksW=&I7tVu8UmmipgX=&viBaNrVmsUYiY=&ugXOLLVffelms=&EhhUGNZZZX_iY=&cBxsoNUlorljk=&icIcQLVmYmlZb=&ZQcVHBWXhcidU=&EvlHU7Ygenekf=&IAIz3mVZUrlm_=&g9zHiiUbiqUUo=&SLZ5FXZYnhdWl=&4ZECsOYjhisjc=&5mlnPQVUm_iXU=&Fz9qA3XXcd_jd=&GAuRsKVsnWoZZ=&FJYp4oWrgoekY=&DrVm5RU_ZflsY=&Ajcz7yZgVYqje=&5jaDiYZWqcrWV=&QYxywnY_Zkpcd=&OES2e5ZkkUrck=&HaVD_gZcccsml=&BQgS8AYpUoZVk=&fFaSRnYjZnmrr=&ueCfxOYgaqUUb=&MDj9R2VZajqok=&Y3p6K6VnhgnWe=&SX2gzHXVqbVWr=&p9g9GEVmebmrl=&IA6_LSUgsbUq_=&W8YNmwWalqmmi=&wyxHL5VfVoneU=&dGO_6lYXYdpXU=&oIcBWCZ_hhbmo=&_ohtXxUmck_of=&LPtJL9VsdhXoY=&M5AXgzWmqhsgm=&WLW2iMZdoaZVf=&soCXooUcpXnYl=&RHGQtfUgrjmdm=&bLgxBPUlhgnoZ=&BAiRYHVfoVXgW=&TDzMW5Zpfhsjj=&t75iARUpVjVVq=&Zp59ksXlpWUik=&bGRXaHVjbjVas=&EB46e2Yr_Urps=&kLQqGHWpjsmWh=&vnHGxaUfdcZUe=&LNJbcoXjcc_Zm=&6y8eaCWoUkpcm=&xqhsTGYilngYU=&w4UNEDYmqapnq=&XWcyb2ZgbW_np=&n_DSMmYdkecfb=&M2mRUSZXZqXdc=&9Aj4_zYmpkcpc=&E_asF6Z_U_hhe=&X_9YjAZgpqfbb=&P_tXMmZmUaebi=&9kQgQXWc_n_pU=&yRCdHpUekc_Z_=&SwaMlSXsVpnph=&RR6gbfZelgijV=&NVIW7BW_ZYnVj=&iTCt59YppqVVr=&TK6DypWcm_sab=&qyVNyHUqXpYUY=&ybuiruWVjpVV_=&3lB_kZWjgaigj=&spNuypXpXrpja=&DCLfh3UWioppf=&7XwR8WXjrVfbg=&xx5sBkVYWrbZW=&CyidChVajY_fq=&P9aOOQZjjWdgs=&H_OQIaYsogfWn=&etq8JTZgqqhrq=&AreMU4VeZlsWW=&6wfYc9VZcVVjo=&JhLAidUmVrsdm=&SEz3CqUmoWYoi=&q7coA9XXVVpnb=&BbD4SlVjZfoeY=&xlwYFuXXgjqXi=&ECDAGWWigpmWj=&_dQw_mWUhmnZb=&n_j_oRXXeXceX=&Y8ILndYlUiefZ=&XTGeorZagfr_j=&v4W8o2XfUq_dk=&XaOh77Wnmrrdj=&OhKrwrWgbrmZb=&jVEyMDXdakepr=&UeqqcDZdmcrkd=&z4aKYwXpbdnck=&6ZLjNfYbep_bk=&YVDdf3WqZepYr=&nYCQRTYXgZplc=&zZl3lLWraVWsm=&mvVZxOVanjVZi=&kHxDoIVrfgrai=&JuqOvXVXglbfp=&_tL8APZ_ldVeV=&daNlT5UpmqYVr=&I75KWcVXeogfU=&TdVb2mYYsfgif=&kYSHWiWcgsdil=&u7TuC5Vneq_oc=&h_cDWjZrhqhYW=&4xjqfHYrgWgqZ=&uskrdPYmhUdgo=&8ue_YOUmVrqYc=&tDRSkNZpYpqfp=&YcOeDqVpmZZqe=&amOrl3ZqiW_si=&ea7VkzVcjX_jj=&DWngwMWZcl_nW=&JdKTHLWnbjZY_=&ZQdtzjUZngXmd=&2trkcJYopnagV=&jXkmiRUfZ_dhm=&ZNNxNBXs_gcVb=&KowM4XUgd_ZoZ=&kRQ24uV_pknYr=&MIg3SZXhpWs_l=&zvNesXWnVglWe=&GOLrnUUiraVhd=&JzID68Y_VZelX=&keXUfVYYpVqpf=&oucQLoYljlroc=&ekxgEpZVcohmg=&t9a2miZmchhmi=&cLCmtEZhpiacg=&P4XblaUjeZdWZ=&rlH8keZbdplms=&ZjK7WvWXlmZZW=&TNf2BcXqeZUXr=&zD7nFiZUc__i_=&WRnFnXZdgUooo=&6QjouAVqWqcme=&KRh9G2ZprUWkj=&mvpRbHVorgjap=&88IeUUWX_YekW=&ihQOZNXUmsogf=&m4KeZDYq_dhWq=&CJJ2T4XaXoaoW=&TkSOigUdmifWg=&a8YEG_Wdepkbd=&tLwHdSYkbZYps=&MAlzUvXqshmZX=&pmWnvGWbodXZa=&b4Pv3xXUYZncj=&ld5fLmXrgei_r=&QCR9foUn_XWbY=&NLa5KYVjhlohk=&QPMtVPZrlfkde=&mxYnd6ZcerqfW=&v6jhurVnXVfej=&hk4ZHBUhjmoqU=&GPizBnYgZhZ_a=&hjTuk3WqYa_go=&mEUdsDUmdpjam=&FIWV5AXaZXcZf=&uxYg3QXlrlbqf=&8DkC5sZ_ihWir=&WyBRvyUaYbsUf=&NkKaNUUfUpdc_=&rDNYjQZVWffUX=&TZPIbtYZodmfZ=&l3yoCFUqcijpb=&HSBsntVmfpaok=&UVazkYUknhWlg=&tJwIgGVVWVVYd=&Gp6saMXjjidZs=&OES_PcXgVcUYo=&WsDrWUZbjhe_b=&bs4N48WlseYkb=&yeQmxZYeeWeli=&_lnF3UVafoebr=&cdIs2WUkfjoZo=&poi89jXVqjneg=&jgKYjlVXh_YX_=&RvC9hhUegmdrX=&ORDpeNVUf_agp=&e6tLjdZiWokoh=&LVElKKVqcXjZk=&2xrDYOYZhYlbp=&v2faLcVgrdipr=&m5QPRnUgneoaX=&gpDWwlZnqcgcm=&tCWOOeZUfihdq=&eq9fZ5ZsgdaUX=&DIMhjKWZf_qrX=&v6ngcqYUppkWi=&tli8_XValqjoo=&gBNIHrYbkammY=&6eAkg5WXWX_ei=&Kv8BqkYpo_Zi_=&BXpSTpV_UfYVf=&_L6ce_Uhsj_f_=&khNg4UXkrZnYW=&O3N_7YXdrkXXV=&xOWVELZnqqfdi=&mTivlkZcqeVWk=&_OcsXlYYdfXXp=&yOITiRZVXphgW=&HNaZvCWpdpmWU=&ayLraNUXcidXb=&B3ryGgZe_alXk=&5b55M5YranfVe=&MUMh2tWbZUqdX=&fx3hJMZniglnX=&rDq4QYVWghiaq=&ffuHAXXXegsob=&X2aewFVYjngX_=&xiEl8JVZZWZZe=&ITFhmPXjr_WVh=&RyvoX9ZiXfVXZ=&VXytkwXiWYhdr=&rEmUZ2XXdXWeo=&RIqZCeYZndUWU=&UnYuG2WfgYUdj=&NFipbcZmpfqXj=&K4tXAwUZbiUUi=&xrjw_kYkaW_Yo=&B22iX5Uds_cdZ=&YD3RDdUWZcnjk=&PWsVBXXrbWVl_=&bDBeHVZdngajY=&8ohiNUYmc_Uk_=&hDGc5cV_kYabX=&5shLPzUmnZ_cn=&cJYllKWndjeYd=&DCM87hUsiqolX=&i4ptxDWgWUobV=&eCj_JKUisYnYs=&erVjpQWUrsjhY=&mPaCLiYbgrW_X=&nSvstAYf_gcgb=&9FS9LYYWcnirl=&5mGAWTVrZgVea=&oJB9caXenjWkg=&UPTyZVYaibXlk=&vyQjIvYXpiUek=&zVOUteVnXas_Z=&g3txLdXm_hjaW=&UNaQQLYXerjYY=&yCzHb_Zcofjhm=&nauEFlUqkpVsa=&s4mUHmXasanbs=&H3MFWoVWmk_oe=&qPercpYXsnlno=&7C5OFUVjcjflp=&JUd9o8XmqXf_X=&62aIU3ZUaWjdg=&zmpv6XZkckaan=&AojchhVqmXUas=&MPWeCWWsrfo__=&StxGclVgUrdhe=&VPUOIYUdiqimY=&TID3V7ZWmpnbs=&aay_D6VYfgWdc=&nnuK9PYisasoa=&5xksgJVUj_cXq=&zRvZzVXYlpgZj=&XsCRC7ZZWdjd_=&XXXAYrUshWZZi=&iqQqubUlgcosf=&TXi_TDYkisine=&7GACKWYnWcheV=&3U_jFIZopjdj_=&mhqKr4XiXpdka=&mua_AQZmasiUa=&punvQnYYjshaf=&AuVTpAVkbaZpg=&BUXyvkVqkgolW=&r76BCGYlcZbja=&Z9DI6bUZXhm_q=&H7CpTkZnfYroq=&6denVVUfkW_p_=&tr5kWjUWkhpo_=&9tK9SJUjps_eX=&gJfOYHUqekVUV=&p3xYquVfjmYmi=&sT_eGRUlZsYsV=&aPGb5FUmZVsZp=&Fo2cX_ZrabhYe=&Hb3KrDYkZlejg=&xTBhLdVcVqcXq=&C_NXMnUUXeifk=&57TOOBZVZdpVV=&6S_VshYcXebg_=&B_rVAdYahVial=&n5ZAmOVVZle_V=&hQ_E3pWXpbUos=&Xve5GzVmj_loj=&hcVYjnYomZjpe=&4EeaXqUsgablb=&cf5d_bWcebhWg=&8su7CtXqpWYkZ=&P_UAHxWqdadZr=&vinmrrW_Yp_s_=&2cZXDFUpehhXY=&UidIJgYrqck_o=&M75kdjWpkVsUf=&72KTr2YprYipc=&jPz6amXnkrifb=&KNSPW4WfYkhfV=&E4eb3RYdfmasi=&oCzRT8YWWcUml=&ArsNGFYr_UsVW=&umWMayVUhis_l=&NaA5TYZaocphY=&FlGukpUXsalaY=&4JVPJNVdgssXm=&suDEx2UVZmsrj=&7kjj9GXkYagjZ=&UQ7AsnYjYfolV=&hAi69CZnbWfan=&nqOXaBUasehmj=&TaLBHlYiqg_rZ=&YU37TWV_dfoZs=&ahyuBlV_rUbgX=&xTHCZ_ZUlllhm=&ZbOF_pYWUfZgf=&kc7uAXUrYchag=&pMThD3UVlgaZo=&qoJJboXlsojbm=&hQGhGNVUpUgem=&ca44MwYgbjklY=&qQEhR9ZeZaslo=&mqiqGZVks_cja=&4gOLcgXafhjWf=&gH3cS_Yjdcnib=&pq8rZpUoksirV=&JEbKDdVcepZgc=&WFOxjpVqUlllj=&rItlclXicUpfk=&eyZDIDUVV_fof=&8HkPbIWjokWZh=&CnM_RIWldXqbh=&CyKhWuZYhmjns=&lzH3ZvYpksrnj=&mcDNSqWUaasrU=&jJDpSdXnsifif=&ZwPmnyZZoUZVa=&_VNCEaUhl_ejm=&g5CABVUoggXea=&tLcTFqVkoorrc=&OdkDptZkbcleW=&r27aLGXihesYs=&ORmThxVcbZYXX=&Eez_CLV_ZgYhm=&cWMF94VcgY_UW=&HImKizVaphhgl=&BXBmByYmfisoe=&ftSS3MZZrdigr=&pQ8BJxYiiaecY=&sQSIWlUgqYcUo=&zvQms8UprprWU=&Lxh2zfUqWfoph=&qrOVN6ZVerjoX=&XlsbLEZmnX_qe=&fSCKk4Xc_aoVl=&GDdT3HWnlcrnf=&4T_p7EY_bUUb_=&23PtA6YhUsjcZ=&pkMoh3XYl_obi=&fBBkWMXbindkk=&eunSmaWkegj_n=&pCfzwDVXhpneo=&FPtGf_VokffYW=&4QR3jNWksfimg=&WPb_RTZhVqjUf=&bXlmsAUbrWb_n=&cJryOVYjeb_ZX=&8ImUAkYagkVYl=&PJWXAxZjiriok=&M8pzdHXf_esXl=&9QmAejVnomgpj=&7yNxVtVVcsgWd=&aMUC8KYcgbUqh=&pdvxDgZjg_qU_=&8lXdTiWkr_UVq=&cGJVrnXcWeaUs=&NlmCyDYddiUYm=&hANfsFVbUUpic=&GWuTbYUVWoaYq=&EIw8JnZqpedWb=&S2cJAJUkcpnec=&v2R4OuYZklUoZ=&ox4qNeWpWpYhX=&AnBzHpUYplYbp=&al9ESoUgdXUUs=&CL7p7TVhojrfZ=&rRXYxPZ_YrZUl=&rITP2rUYkVmgV=&yGL_GEYoskokc=&UaWJAWWmknZhV=&6pJxsfXVejdWk=&G8gKqfXbWdkZj=&E5LOPOYmrVZoY=&SXPPRFUeehihe=&rBY2c9XbjjZfo=&YdNnUBWnYjXgi=&kigSC2Xp_Zepq=&2mZHaPVbg_Znj=&waPVXUYpmig_r=&4LX2zdYmY_pll=&daQkbXUahUZek=&wjk_JyYgd_ncn=&qCcVZBYojUc_d=&mmeAADYppdlUm=&PQ4B6rZbbeZrh=&lYRu7BWmlnZfY=&fZMFntXhqojpa=&iB_6m2YVmgfaa=&QUOI4gVdbYVVp=&sVNXwYXgsrXdc=&ISv2IGYaeieaf=&WE4tLOXbdaflX=&hZvSIpX_fkZnp=&QB5HpqZf_cdep=&xbYF7xYnWkmhV=&GFbD7nZpscamd=&VUPqRZXormsrs=&MrpnXUUfkhraW=&OhfK8VY_jVfkm=&6U9NdRVUgXpqm=&PUng5SUgUjnZi=&vpg5vuVZoaghX=&zJN64GZdkscbV=&YJrcbeUqarmXW=&UCV6eiYmo_dWc=&vSXYkeVjmkelk=&JlFICrVWeVgoh=&zjqvmmVeaUZbZ=&4zzAckYnenihl=&zRDmgSXseVUhf=&tLePxxZpXadXp=&UUkfApWYcqpos=&aekVa6ZWmbVoi=&k7ZM5bVW_anWr=&IDOkBkUcjphsY=&lBFFTeZ_W_gnU=&WrRYBAUjrW_Zp=&4GeJ9FWaYehfs=&x_UxPjY_sjanh=&BA2TU9XqadZqr=&I3VjJ5Xkgsggb=&6HyikzVgZrhbn=&6mIRHjYWjZkcb=&LyEWSOUhWWcgl=&ZRrvvCUcrrlUZ=&B4HggBZmeafra=&QM3wIgXlgilVX=&Ta9vTAY_Zgm_V=&2uiCdkVseqeXZ=&CDtFdAXssjemd=&Bvhl4oUeZXkbr=&Qk37b4ZhcVfsX=&AQCAAeVXogdjl=&CPaeocXkYdcoi=&KuJ5_sZgghkoU=&ibMgYAUaiprnd=&8OQEGNWmaiUod=&RA8yb5ZmqriW_=&llMOIyWXWergp=&taB_KvWasZqiX=&lsFHH8Ydapafr=&o68FPbViaYflr=&q9bBYrU_saprU=&m2dLgkUZdnYrs=&24AynXUWgXomo=&snNhsdWrfncrr=&CD3D2zVm_ojXi=&V6L8QmVepZjUf=&5Okv94Zfchpql=&9Mbq3qZokUhm_=&5yR6dMWZhUUsY=&JBfIsoVajeWdd=&vJXgLaYWWZ_Ui=&HwVuvyUancibe=&x2MaRDUfXjhZo=&W96GgYUkreVUg=&vd4VfTWXafesl=&t7VJv6VYZkUbr=&N7h4n2WUqieko=&XOcPfjW_VUnXs=&TFzuImVmlmnnc=&gKUIllUmXqbYZ=&ZFJmS_VW_oiZW=&ZuLVNfXYbocbd=&C7tnexUkfWapq=&4solLgWdchUsa=&KjCq9sVdqgiUq=&Pc_4cBVisoqdc=&iREai5WhsWeWr=&l2gr59VUcYiUp=&6EdSjsZVlrZXa=&kLYUNWWecfkpV=&CTV4q3Zb_qcUW=&jMeKa6VnYjVWb=&XAn7USWgkec_p=&cV4FhFVjabfXd=&LtziZ5XkklofW=&tB5OXSYeVYmfe=&oQNqNuUkkkrcm=&H4VtUFYZXnhgk=&VGCbHSXeXVYnU=&idsBEbWVbXen_=&7B_67eYodhcpq=&kiXx9VVrbbfdo=&VmqrfQYnqslqY=&TCycM4Ysqjmbb=&5nWL9vZfWofjm=&RQcjVaUfmXjmj=&VIIGznUYYWppa=&fQV3irXVVUiVU=&p3uq_rXqdpirZ=&yY7ZayVale_pj=&Kp_Q_6ZcX_ZUs=&BJg_uvYdgaqgV=&h_ATD_Znoejcb=&dwvjdpYiWYsiU=&2SuEECXecadjZ=&graECrZdiahas=&JfPhMXXjjk_Vc=&NC29sVUqhdoUW=&uyyfZpYcngkpi=&8DswhlUiUcomn=&G8ZwM6Wr__cgp=&rvNBWaYngVgle=&clbQbZXodbaig=&ZECuB3VpdZjZh=&aj8jxLZribfpd=&u8ETSuVfjeaZr=&smBLiDZa_YsX_=&zRHkoWUk_cWaa=&AQivLKXf_UpkU=&NwNVNWX_shUWr=&igRtkLXeolrXk=&c52ivOVinUqZ_=&Zf_YaaZolqWlo=&dzV7DnWaU_ipV=&3OP7hBYdocqZ_=&oDZHbtWcakiZV=&Ha_HF9Zqdjabm=&iRFyPEZWcdcqW=&p6iXxOV_lidmU=&aesdrBVfhihnV=&uwcoMGVkoapUn=&Yi38FxWXoafsa=&qJyMlbUodkmrc=&VSYlhAXopnefY=&w8ca2IWmZhpmq=&vNCqMNWe_jj_o=&8UeXSXXUksrdf=&rksj9pYcsmUUe=&rjLWVWUfn_hph=&cmTqHpWbjYmpf=&YLUqZQVooeaes=&C3lj9bZfjVdZ_=&U5a7tlZgbckkV=&iOzOTnUXWafoe=&jDslVtZqkXrsp=&WLWP6sXVbdpsh=&bGIUkBUbcjfaq=&BigOPrVepXjqi=&pazvLpWkgjeb_=&3u2Ii6VjolXmf=&MV9HyFUpgeijY=&YlUWZcYdf_UrY=&uoVwlFYkkY_Zj=&mgSyLVWiaVe_e=&GTuYPZVinjoeZ=&IHH_sAUmebngl=&i4O9A6Wkapdcf=&DYLgAJXZfipgo=&7wHtYKW_bZUgj=&fjXTlcWljossk=&o_dtP7ZZppbba=&H9cOkZWppkhqc=&YCSmmCVdrppqa=&q27xB_XoZjnZl=&WOxjXfUfogZYZ=&fPe763ZphjbYb=&zgVGpHZs_rXei=&OseAP_Zdpjabn=&I3K6oNZp_dmpl=&4qs9CTYVodoVg=&jUDttlVaUffbe=&Fc2we3YUeXcrh=&zmgMZnXjilqkV=&R5T7VTXUppbjc=&pclJcgYiira_f=&FONNusUZUYfhl=&7CPnzEWYVapfr=&Aj9KY2Wiasoil=&s5oxVPXlWjX_m=&r8i2NgZnbUZZi=&yhkkPYZnohY_e=&6Wz5mJZs_W_gl=&YDPysrUYehZnh=&h8j8XzXbiZVWV=&KPfZgkVaciafm=&_dSKIoZikZlkZ=&b9D7uOYkpoqqo=&ga7BHTZpdqWmd=&TvFVjbZ_pZaoa=&gPoblGZVroYsd=&eVQKANZlaisib=&DqCs7CVjkfglW=&7SEys3VVmonca=&BraqfUUfsaeWZ=&lsfDidZiZkWjm=&zjdr_CYWlgjfq=&Dv5Lm7UlV_ojh=&_TvyiDVe_UgVa=&k5qokrX_sqVUm=&CZZvjgWo_clrl=&N7HigLYiUhhfj=&b5iKbjWhbqcqe=&lqAXA2ZamaUfs=&mlsTuYZcjXmbj=&K5QK87Ygfimop=&Qd9n6KWigbmri=&s45T9bVo_gZXb=&xzacX5YrZkdlm=&TxxuDBVndd_rd=&P8Y2kEZksghqc=&szBjFHXgmYmle=&iZ_EBaXWbdhlU=&Yzfx45Xpreio_=&oTeAy8VhcVhUl=&zXTiPoZaUZceZ=&npHIw7ZqenlXi=&at3FFfWpqoYge=&bBJpnoY_cYUfn=&6Gfjs9ZmedWYi=&NFSu8_UnlYYbj=&bOpeglZipcYdn=&ba3funZsaUsgf=&PgZxRrWsYaiU_=&icns73Xmbnlgq=&D8djVBYaipkUY=&e57YyQVaqcqhX=&5GslvpWqemncV=&LznDSLWpoUknY=&4qFwCRXZssqem=&Wd4yJ3WfWeVea=&rB9cfAWnZfrjj=&vFnWZ6Xksfanb=&wv6h3gWZkiXmU=&pRFzBlYYddhYk=&BjdKxGUhpqYUh=&UzvAZDWs_iXdf=&yqOmpvYphjdmX=&LQfQC4UahjXrc=&EvJV24YYXVsmq=&jLqZNrXk_Usdc=&DzVkyjWsWWZia=&AJD9yHYUaaenl=&jYdwJpVqXp_aW=&uRnEzaWgnVlrs=&TnFKrNVfllsWi=&duC7F4U_iskcY=&Esinm7XUfqZrW=&nXFiBiYkpd_rg=&mHyXJqU_magcU=&CAI7qoZVkedWm=&cKJqoeZpmg_Wg=&W9tE8nXaYpnWl=&zh4MOyW_iYhWr=&OBWYYEZlfbsbX=&lhIaVwYlsf_oe=&wyaXcgXrsWffU=&xpwWHlYcprqiZ=&xPEiqyXkiUhZo=&QEJRWdZXdofio=&jSp3fCWfWar_i=&iGjujrYfXbfYU=&uJe_OmZslZncc=&CUCkNdZWW_kos=&kyShlwZicbabW=&xI4kq9YdeflXb=&HP9MqAYbWdheY=&IPFKKXUUleXoc=&EBFafqVnflndq=&vXJ5GwVZcplVr=&zSp9vLYkaj_dr=&PadJgbZnfdbUq=&hdRDByZVgbUWX=&BhbBfcUVXcqia=&4VcvTGZjdcffq=&Qm5iaaWhrllbk=&EQU789XXpdpbo=&ezjdylUdgZleW=&iTjFtwWmoVhqj=&M4hAw4UVmpUqW=&TGuEiqY_finnn=&wy_SW5YmsnnfU=&jsAVO7X_rdWdf=&uqqPCnYfjqqcf=&vTKd_yZqXgqWW=&UbOe7VXWWonZ_=&VEsU3EUfmVYmk=&L9CWjjYefUols=&nwdmaWUhlqXln=&_WZaxzXqqmkmr=&W7U_73WbYdrcg=&Okdy3uVpnpfVY=&DQewzQZsbfcnX=&pIA4E6YpVkkUm=&GN6sXCZXebfXV=&ZsxeWoYfWbmeh=&FkpkCWZYhmXpj=&yntQZwXWanhYf=&IcVpekZWrgljd=&s6_zFDV_fraak=&WyXPQfVgrhU_Z=&RPsPhqXf_rs_k=&4ENc3gZgsVYlW=&CmOgu_Wqjppmc=&L6sKtdZneofgk=&wwJTYxYjXniXY=&x5jt_fXaXrUXn=&XuWiYDVsecVZs=&lw4wWMVVrlUsV=&SQzndHUY_UrYq=&zu7RTvY_onnhq=&A4zuoiZrbkoYm=&ySzWm2ZrVnrnb=&27eXWmV_mdaho=&7HgRtiWanWlse=&zdXe4AZbpZjbh=&plSDaRXWqmVhe=&ukepI7VsjmZjY=&sDzbb6WdoWani=&9Gve2MVqhaieb=&Sj8o7qZd_cqdc=&OmeVzSXsjisbk=&SWe8lOUfjXUca=&flOa7OZfnqiYi=&ahggkTUdXnpji=&FMfS4pZrVehZc=&5YhmTZZbloWUr=&eZ6pHNVsjrqfi=&RAiYlbZkjVYVi=&P4ZxsYZjoeopi=&MD5yyCWchWpmW=&ZYO5rvY_WhfbV=&8QPLUJYdplnXU=&yJp_H_YX_Zlsr=&tVmn7gUogiZUd=&7qMYAvYjjhkXq=&ogQpnXYeXacmZ=&hZjJgdXhobajU=&LpxHduXmeafdn=&RhkTjCVkiksmc=&t7BcarXssfVqX=&cPxvoiYbreq_i=&jeS5XlWUaWYbh=&k5QjNyYslbdZn=&eGkwVjYpVgiVq=&7MuhzJVedWdXi=&lVTEXcXppbXqc=&Bj9GhUWhkqkgp=&lCOXsNUZjolsf=&YrmMUAYrqel__=&RzaDCwVpZsabm=&zhulS3UpoYfec=&CcaOGIYaVoYrd=&w_DylDYjYqXss=&UH9x3aYeUYWre=&bUZkMlZbXZold=&IIGA9yVUgamqq=&lfXlH2YdrVq_o=&2OPEXDYhrpga_=&ykYatwUdeUqfk=&6siMm9V_iWeib=&q2SrQqVZclirp=&576_4UZfbUbad=&cJag7OXlZkYal=&zfjzG_VnsXZiZ=&yXCO2oUfiqebX=&lMqv4RUrsUb_Z=&7PSQW3WiqlWjm=&SG_J2DYjXraZo=&cus4h2U_Zlkfn=&TbNEPVUsflnrm=&Jw5cEOUWW_eko=&Q35c8rYZaniYb=&uhmrWWYXUoWrf=&3XUbV_Vnmceki=&UF5xX2Yi_loXn=&XBBvhKZqfkaoe=&_g9iUnYslUdlV=&ypQIYBXYmgZVi=&QWLa2SVlrYljq=&3wtpfCUkpYpY_=&QgCXQXXdlcgZb=&ZcKeEFXZaeccd=&cRhnCgUcY_mke=&SQQTnEUeici_r=&AiWjegUbrig_s=&SFB6QwVcUrqpp=&KvQ9rGUb_gZli=&KD4GjDYgcohYk=&orRU4QZpna_rY=&W5VvbhXUZkqni=&whVGzxXekdilc=&a8TiySYlcjUsX=&mt6QbZYUf_rlc=&v37_A5WnhVjsa=&qjHNraX_gjYaZ=&EuRuo7Z_bb_hc=&53nKMdZpkqWVg=&sM5VJLXpfcomj=&4sv3A5WafXoYp=&OubUAqZbaYiVp=&HslQlwVlr_Vpr=&I6sOmaWZsUhVj=&flpDhvWWWoomX=&zDPJEWXenVbkn=&pDxJzQWecUhp_=&lUmlcQYpsalhq=&bXYSsuYYVUUcY=&plLuMkVplYppd=&FNRJ66XoY_kco=&jru2F2U_slVld=&j66j5AYVsWUeW=&c8i2koZdaYcje=&6jCwzyZZnjoao=&_yRFUgZlacaWd=&T3Yh4tYZeWlcr=&OaDUE6Xoc_jne=&esE5rAZkrrWpq=&qIOS8AWUdehaW=&kcyCcxYWdmira=&83HvflXjsVkVi=&PpxOfMWZcokmi=&k7vhBxXcaqjlk=&IzQ3hXWZibdUj=&g4VHU8XXqrcWq=&Teuwx3XiXXXde=&fZmbIfWfosohl=&gqRpzmUZWdlZU=&mWa4CXUhjqXbp=&JovUX2Wlnorso=&QKC5puVZdWppb=&CA748MUpoapZa=&nLaMkKXmaXh_g=&BmB8VZYdeVqXb=&mkB8YTXUkbhYn=&IaSgx3Umnihgs=&d2zfDgXbeYjlW=&UCkpV3UYl_Vep=&CNlyglVfrdhZk=&KBA339YXljers=&goKzviWkaejeW=&lUU6t9VqWsWgp=&czUcnuYYYpmfV=&2LycPFVqkUrkr=&VKR6KDVVncUjV=&73E_UOUUgkZeY=&nPFNXeYZocmUn=&WPxmzDVgi_r_f=&_nVP5RXaolVcs=&L2fXkxWmciVgl=&ahRrJLZjfVjYr=&rWuESxVmUogki=&yl5rTUUfpglls=&MRaCy7Y_iUlch=&gwTg5qWskcfrY=&ZQ75iOUhhkinp=&28RQz6Yrpqpkp=&WHC6rVVUcpgqX=&VuDmNsXpsblce=&a2o2L7VmZWYqe=&eI46jGWnWaoVe=&YM2gGIWblifqX=&fpr7H7XXsi_cr=&8WAIk5ZaoWnmY=&4CTGLHWi_ger_=&zGQUL3Zahasml=&_5eaAFVplgZYe=&QwirjXYXsclke=&wMy25GU_kVdiU=&VS_fXlYXsnYXk=&RwkFrVYcdcjmj=&87en7kZVUkesV=&FMpQQHXiZjXpr=&dYkYjWUkkUVZn=&N3ecdAUispWdX=&WBIvVgZfXamkV=&OP5vUeZncjp_V=&EYSMznYWfpZbl=&XtvniKWfmUWo_=&o4rWGIXpgclao=&ohm_EGW_lksd_=&4QvbScWmligrq=&uuG3w6WfnqlWb=&InmGtpXhqrZs_=&fs2Bs_ZfYjUkV=&6IyWmMWmaoVle=&6EKghSXXfnjXf=&obZtqRXed_agV=&mhQb3NVk_Zick=&2gU5VmZarhmYo=&KrYY5oUfmYZYW=&hFbwI5Wcml_ch=&WyyOP_WdVccjb=&Oj5TPYXVjZigi=&GPO25lZabqXmh=&JnD78AXifigbi=&MygvPgYVinWne=&hXwoBTYZqdqkb=&Gsjbx5U_fdmmc=&mThhBmWoXVq_p=&gKhYuwUmqeagc=&JFfdI_VWgjUYr=&LV3j3OZWhrgWn=&hdStAuYZXmslZ=&Xc8nIjZXfpgsp=&mefAWHVcsVloq=&A4mp_wUkXmehV=&_a25FWYcimqXe=&dqsPOUXrZqaXr=&9qagv9UnqUnXb=&5uTA8PUoffWqs=&wNbMvnZkaXofs=&4X39BsXrVoXiY=&gBhHiUVrmscgg=&JYXS3lW_iaaea=&7uuzfAZjUlmVh=&sUmUshYVqYaeb=&_n67U_VllWeVf=&Zm9WxjUZkiWnW=&qgY3iDXWkbZqr=&fuZEeKUpgqgZr=&zACFnkVhmdmVs=&NDpe5OYZbhnqi=&qrfmZSUUZUUcd=&UC42WyUrssdmn=&bHJh3sY_jXmhm=&X8OVdFYWkWakW=&sqWQvYYhrUX_n=&9rvkR5Wnl_Xgd=&LIxmpHYhmiqZX=&q4Tg59UZmYZmX=&x6oDPzUilbrjY=&5WbpduWoadcsf=&ddLJtcWbecZoe=&tvrl2LU_ZlY_r=&sxvySgZdprZhp=&UZPVi7ZrWjada=&N5F2doZn_aenW=&rMBL5ZUrlopnb=&aZizGPXaYfmaW=&xqJKTwZ_pnlWe=&txswwcXWWoess=&6_PLrCWUrksrf=&Ojo86rWffXWdh=&XcHx8UWmakpVX=&XJUNolXZheZ_f=&zvl5niYeUUckn=&uhUeqwUnXZeha=&49OoOZWhqnZca=&5BJZTOYYocahm=&JlLvooWesqUol=&y9NXsbX_q_noi=&TAhGrGWkUhdmk=&NNmsTUWjnfYfY=&uyK5uGWXfkgib=&FFCSgLYZhpkYf=&8ZuNK_Wbhanqp=&dMlS_dXhld_Um=&dKmIvPWlXYngf=&vDamOWVoYkUrd=&iSNnkaYZhUhaa=&vNsXnMXiXpUgq=&iwRRoCUYinsgY=&WGU2AZViglb_U=&vu6XGSZpUp_le=&pEYLTUYnsemli=&EaAMsVYZmsaXc=&sUL5GbW_sjrdq=&o5ocf_Uprbker=&TlaHhXV_kosVY=&dmmJRGUbsnXqV=&FloU24XZgfddi=&5a_5ROZjnphVY=&cG6cVGYlcj_aX=&Ozc3NcYmUddnW=&TEiNdxVrf_aVn=&ZIJxd2ZWcegYV=&KTjb2lWaqZnqk=&IdEl8MYidncfn=&o8tLsPX_sphpd=&BMORGFVfebZVp=&Kkkwr8VWYofif=&kr26SGVZ_bZbh=&gvzztsUfehXgk=&MacUFHXgs_rmX=&yTM7DaWmrl_jW=&j7N8w2WVkVmfo=&JVBgsxVj_hslf=&bZ7lEDVYfdloj=&sVpPleUeWZnoj=&VVvDTMXdqjklg=&DMgeteXe_qWic=&roMg2lWZYrbsX=&pgY6mEYljoXsY=&zXXrcrYkfiYjg=&8mDdbSYmX_lUd=&kEIZAPXWilVaa=&hWvls_Wahqnaq=&hokOJtU_lbYi_=&4BmqEsWkpmpVq=&MwUulOYWcpbsc=&B5cyj4VXdmiZi=&ejS_UgWrnlifs=&RvyXqFXaplbsh=&LDuRBWUoUZUjX=&oIf6bxYdrsreY=&NVvhnSVhVijeY=&QNTznkXWnll_j=&azvN_AVjlYhek=&wC8BGRUXVgpVU=&eNfUV8WXjdlor=&UARvdyVqWXlp_=&m7esxqXq_U_gb=&537KjGUomgjUh=&T4mLfgVYdWkrW=&BPyLKuUjacepg=&iJ_qJbUbifnbc=&sAbKPuVnc_XVh=&HEoWDhWfmjgks=&zJ4Mc_VjqjUaX=&OoQ4sFUnfdVfW=&mv_I7BZnZWfad=&vl9xqhVkdjlrg=&__akPVXfUkigl=&wQZI7UUrYloVX=&LDnkgJZsZigYl=&fttspmYsbgefd=&OAezgTVppeiVj=&9Yvb_6YmbrWYc=&sZAybaWsV_WrX=&FdngDwX_ghsle=&XEH3P2XUbbYld=&zZWoRPYofdV_m=&9CVhGrUbed_Xf=&QxUga8Ukb_gZp=&IqATXzYpYYZk_=&xLQA2VXkkp_id=&uwWDtHVnhkere=&fT6op9Yj_iYmY=&Qy75HuYpVeVqn=&hy9WEiWmhUXaY=&cFZq56XdrsiZs=&M8PIIaWpla_lq=&buNjZ7ZZcUddX=&YoIy6TVdmgZnZ=&75sGIZWmkUqWc=&x7W9tbWZooXaU=&jrSFLjWkjiZmY=&W9ehWyWr_Xcas=&T4_TAHXiVmksf=&WjUOlyZd_onYY=&5V8unnVfjsZZq=&tOMiQ4VsVhcff=&SKdlOXWndbesf=&i6XDWhXgXcnhX=&vtov_7YcpbmpV=&ts646VUfkmcls=&E9zogRZViYrks=&IS7bPSXsjeecf=&TmBodzWnbaerY=&S2vQTAU_WlrYg=&P6hShBYmWabXY=&WIRZRXXsjnbYp=&xB7CmlZlYW_hh=&RoGklHYggqiqW=&LiSiu9Weidsdk=&hOFQ5yXllmdab=&rPxrFYYnsUqWb=&UNmveBUZkaYql=&vbSfMCWm_nqmp=&JqoC2tYmUsYeU=&ubmrkAVmhfnen=&pLhGwMXqlrdgm=&kypcfbU_fadZr=&3Umhu4V_nannr=&iArzQjWV_loaq=&gcRGQPUboUcXr=&38IETvXrlXbUV=&I58LlIYkorqsn=&lECfimXqfmgl_=&GfYPH7WdVaalb=&YvG6PCUZojqck=&tEsYGEXkYbkYY=&2Lm2pKWls_rhk=&_aOHjRUdoaVZb=&q4R8gOZhpYrgW=&LwiTMUUkngjpm=&9HVw2rXn_bUdr=&Srp8CxUWhnlse=&8kTRC_UUbZlWj=&dNYMnsXdeiWlb=&NK_knxZhlVmia=&QYHIBIVfoUrsa=&bmLpQRYoiYpcc=&SIfPCdV_riZVW=&NddrJ_XsVgYek=&n7sXiqZlUaVaY=&llSgsvYeZpciY=&yEOekJXcgmWUj=&eAfOUGZWUYh_i=&stGUQuWVoXffU=&cuP_xAZUmbjU_=&gFVCwEYablVjZ=&EssCRTXbegnUm=&gcWaIaUe_abW_=&UO3woEXlm_qkn=&qPDNv2WjUmnZV=&Z9WlxDWfsVlqq=&myy9JmXpgsios=&diqH6dVZjn_dq=&pc8d4sXhbomiq=&j8zkSTUqggmhq=&35QvhNZemqjZf=&lhBowmXXelVZd=&XNXGpWWUYlpX_=&PCnALVVohogdg=&fJkHMvUoifnr_=&oiAKljViZXnhg=&u9vj8bUkalhVk=&_kINJGWkrleZk=&N_csdUWpgikhd=&zwIo_3WcsViYp=&sBkG3sWgbmdc_=&ca6y9OXijgiaW=&_v4CUSXaqphec=&zdoLMNYXfflXm=&FEKw49ZdaiXgk=&RdpX8bUhnmqsr=&_p7jGgYbnsdqY=&ByicK8UXZcksl=&tbhokNXolWdsc=&I4KHQgZsrhhml=&55o7RFYeoYXaU=&g_8wgUXjUi__e=&yTBuMvUaVaXXh=&p2_GGRWpoYqXY=&Kd_6I_Vkge_sg=&Iv_qamXolXfbd=&kO92_UVs_acbk=&ciH4fAWccWcos=&H465V6WbcsfYs=&hYzfDRVgpfVZp=&ac5JFWVVeeoob=&8_y3m5UjcVYWi=&53EndCXf_jcdZ=&7HBfUxXpZ_rol=&lcIh2fZnnfqji=&xsVQc9Xqlmrdr=&A6ABhgYYWUc_i=&rOu762ZiXVVam=&K4bsE3YqfolZq=&GBHdYTXmjlksk=&AyzA3YUWonXoW=&d8UpsOYrkmgjc=&Xzz5jhZZfWeYZ=&b7PmPRXgacsXd=&ZoYtHRVXnf_p_=&TYRevNYXcsbja=&Jq2BTjXmoZjol=&dv78SJWrdadg_=&7I3rJUWsh_gln=&y2JUjkXYqjqks=&bHe54nVdfhXVX=&5ZZhciVYZi_jp=&GK3QxvUeZnbrn=&saJEr_VhYcYsf=&_NGIADXp_nnls=&I7IpVFXWieWbe=&7PYm8OYedpjVb=&q5yUGmUirUilZ=&TNxgGDWZaa_lp=&w7fSavXfkenbX=&eEgxepVefYhUe=&oYwjPuWnrgWbs=&nb8gZnXpXmaro=&kr7j4wUqecpde=&css7nwXnkmbfs=&ZX6Nk7VWrkUij=&sD6wduVdVshVV=&kMDnPtYclVWZa=&CKYerpWjkaegW=&xUljaCZh_qXYX=&3zKDHmVXYmWsq=&3tQbDSZgjpdZd=&l3j3_rUciao_s=&FeWLUoUsacqkb=&CwlR2SUkeXWoV=&hDR4_ZZXefgkV=&XcUVxZVlfWrUr=&pfvMpsXoedZci=&YcqfyuVieokkr=&uTDWyzUmjeqfU=&DmZGONXcipU_k=&YrQt6FYrZZlUh=&CIGq9bVgdVoZa=&OZSl4JZYmapUl=&BRmniXYpeihiV=&BxIM7NVdpdU_W=&TeBpIpWkih_Xl=&AOuGefVXfbgfX=&WxUNSMYoaaqob=&Ek7lelYlWlalo=&KJhavhUlerebe=&rWygNYZZionfV=&X_I4fKWUqWYgc=&_MyIiOUgZhkob=&BhCgGkWXlmcrY=&ELQ7rvXllVoke=&uTGozrUplWkcW=&apZPgqYbkiqsr=&5lrNIuXfYfqnq=&Xxp6ncXajUhrs=&sCpph4Vi__cci=&HuC5VvUWnXUYi=&4HZmozUbYkcks=&eoLNuiVsfamrW=&Zvl5lRZsmhUhl=&nt39UPUhob_oW=&425HPEUZbibak=&_VxTZuUseepbX=&WwIqJ6UlnhU_i=&m8hQrwWdm_oeh=&brTtYlZnWheda=&5hv4HtVfdgjYY=&BFeGJXUrUqnUn=&Xie79RZlsXdXa=&3nYcFsWoZbmVU=&wrPvKRXbl_VlU=&ICW3bpVjgfUok=&lx6UNgUhrh_pX=&6EZNUfU_dohoj=&GcbWUcVcprmhc=&Zkxo7jUsX_XsU=&ilJSEmVibXqkq=&WTKfymUUmrYfX=&e38MnwUoUfVZU=&ikCoGxUddgepV=&Ij5APoWVkcWqW=&XACaHpZriVdkU=&3gNqEQVUnflYa=&Gqd6qBVoqdgUa=&X8y2zrUoVd__s=&xPQ3nqVcjXehU=&G2tNIGZochbYn=&Dh_DYoXXVeUXk=&gJVqt5ZbhYdes=&jYhCiUX_fUoZq=&LpaqZ4UsgVmks=&lh7FDxVYq_rUm=&S8vSLBUsqWbbV=&KiEwmIVoUfqon=&TZ9lqvVilgUpa=&p3g3o2XroomaZ=&DsflSkZiUiYZk=&BvUvKiXecohXV=&dwor6UYn_kkjo=&fpKisdWZqrohp=&7qJaFWXjnenlc=&b_I9MWYfZiqmi=&RlitB9UbbVfeV=&AABGnrVXlZUca=&ONpQnjXhVXXUe=&M7mlFpYqWdVVr=&uvjeHAZlhdicW=&5IQKxYYlcilVl=&_urtGPVZfdrkV=&z_dkplVmpVpVe=&jrl9SNXffleqj=&4humNNVpaYZig=&_LIjKmXmWVlse=&U9AR_dValdidr=&Rw_oZEWmegYUn=&opkiGQXYaaWhU=&2Rlu8XZmlmomU=&fMjATSWafagWl=&VBX6m7WncYajd=&bQ44zqXfYVdho=&opq2gdVqsdZmX=&HRMFPvWcXaWWX=&vnRYWzUbnhfgd=&fOtMSmZmnkrk_=&ZNRxrOVmfrqkn=&lnWq4MUhdqdhs=&c_EsRFYmnerar=&FFKISuXaUski_=&VpriC6Zebqgbs=&7vAz43UXsmkdg=&c5MxsAXgsggkl=&S4paPiVeZYWYU=&mwc2ZCZa_Yfkb=&DCArw7XZXagjX=&kyTZKGWghbjoY=&q2iyX9WXhWa_Z=&OctjigZVrjlkU=&stfTkmWgiXljh=&SHEfi3Voiglmr=&WtykGDUfVVobj=&jVM6nnYX_j_lf=&gSqVomUbUZhpc=&uZbkanVWVlior=&m_hAFOVg_lqrm=&BJnfShWinnjcZ=&bYNGvSXejUehb=&E7juaVWgd_asi=&_xp6wjUhbpcoY=&poj6Q2XmddrZc=&RQi6PZWklpqri=&n6CQUWYgYfk_a=&TxjlMeX_qXnUm=&ohzjb9VdoiVeq=&sHG7EPVhpdZaW=&iHP6sNWhoZier=&mJqexqWsipWcs=&pOSAw4XpnjhfV=&_3a8MOVcVckoe=&YmPrReYZnpXYg=&YJGLcrVanqpYV=&dBpIfnUprWndo=&cRbMgvZdhUYXY=&axU9uTUqplkno=&M8BuzfVipgrZV=&MwOxE6Zn_icng=&5Hkw4eWUlsjrW=&xrXoxQZfdgqik=&wWzpXrVcskYbX=&eQqfqiZoWbqik=&2dYKHCZVZZZni=&WL8zN4VZmkV_b=&ixw_DQVbqrUrh=&OVDKMeYiiqfVh=&jSw2jYZhrjrmn=&3UJnlrYihYdps=&6nqdsuYoo_ajV=&arbJJqXdsachY=&h2HwjkZofj_kY=&nTtbdxVZrfkjY=&VOu4OLUbYdhba=&3VcU5AYmXZejV=&3aqudAXigbsac=&pxyF53VgkqVhV=&TFJwcdYkZaqik=&lALe5kWmnZres=&R8JOnfVZpgpai=&Ieg_heYrkabnf=&GXdBbJZcZrapa=&ICBDkLXfjhjVo=&iKg2OMUkil_ZY=&2VlqhSZbgeWqn=&wNX_OmXr_ndd_=&qAukzVYaX_dbi=&vB6zv8UZedbUc=&PAnX8LZdjloag=&bvbRrYWrpfjnZ=&l_kcyjWmipsUU=&ZWPTkBYfnhgXj=&5Hu6f4WirmdZ_=&Y7uq5bYebhYe_=&KBm9fxWXUdV_h=&W6wT8EVmbirgV=&KL8CAHVfaclbU=&8_YBb4VViWpmg=&3O3_RBVmiZepe=&koZc6SZXUbmce=&LDM6uWWspfqca=&i63CTbVpUrjXj=&nJYSDTXaohrrb=&oYOKcTXroodpW=&MNyJSZZknpieb=&RHQs5VYWqcmi_=&MgKVlSUcmenec=&ch2a9RWjmbWZr=&cnZQzfXUUWlkf=&EYe6uvYjnVsdj=&Wfy8_bUhXarVk=&pJ4ZYNYhZgiln=&xviGdtX_scUai=&ouelenYldimfa=&AjEdUWUWdiaZd=&ZXFqNnYoUbXq_=&6X4QapXedZXUh=&uNpplAWjcfq_l=&iwxyuBXXledZe=&gPZ6YOYollUdZ=&kqdUk8XodcbUg=&snJXoPXWfmolg=&3Xt7I5YgsVajh=&Qi2ppRUhharkW=&nuyOCtVUqmYnX=&PirF8IUUbpUVg=&erkdKgWXUgYoe=&YxoqQgVXUVjoY=&vbpUBSXqaoosg=&O53kXlUccccqh=&yUSYvLUolsrmn=&bXFR5iXWblYkk=&xu9_MVZrselei=&2TiVhrZaYr_Ym=&ChK6RLXsVXqVf=&472MGsVrrajmr=&SF4p5pUlVpn_f=&4U2CPXXngpigq=&3RYAB8Uhjigkm=&5KPBHlZkcqabf=&NU9cHTZpbeZsi=&CzzNxdVbY_Yfp=&MG9Tb6YnggkZg=&3B3jswXXqfijZ=&IqIn7oZbVsjic=&5LUWAYYjcsibe=&izY2hiZVVXfsp=&shiVh4UemZhol=&yZ9ghiUhkfZrp=&f6Sn8gXdnsenn=&i8YytVYsngjsg=&rU7J2AUjrZfZp=&8mC6VvVUmddoc=&x3FfKpWnhVVoX=&zOq2R4Xmcjimr=&rZabYHZsldagi=&cD9JAQVaaYjWl=&jpCSYkWofdepc=&oBbeMTVphrjUf=&MU2OXaXj_afcY=&yQ5RS5YshbXjW=&dA4TVAZedopjr=&lzwEklXbisjVW=&wK_GMGVeYfYYl=&PTG2BqXaobpei=&6az3W_ZYfercU=&IMYJC7YrcUXpf=&kvjctVVsjeWpq=&yKRTEzWhmqgYj=&RNpyXeWiphrfj=&W6glavZeishkk=&5AMwerWVbbYcf=&jSkJL6XsZdrsr=&bSCeTpWqqVael=&worf7EZgUgVjg=&KEWf6IU_asdiW=&zKZlOMWfWkWls=&ci3rPYWkdlpsg=&d6XYmpVmmohab=&TwVZq3YjfbUkf=&rUVg4qXqXehXa=&pOYo_IXopafVq=&qtIB9iYrpfcUg=&HVYH8PXroepVe=&NA4cEAUnpd_Y_=&bKPWzaXdcoihh=&8waLFbYXmdjam=&EjnIoxXiqUiUd=&4C6im5Ukecdma=&4GZwieWllfkcm=&U5h8sKZ_WighZ=&mqruISYmgVkcf=&cT4lYsWm_eqdl=&g8zbpyXjhnjXb=&9dXNuNXbmepek=&tVRonbUdZqnkp=&ZsEBznZdcVfUp=&jVCgv_VlVh_fb=&G2PjFCXnbmZsV=&BPC5ktVmdXn__=&FW93LtUelXjsr=&SA3bOlXqcqlZi=&Se5XBwZiqgoWq=&vMSKf_UhesWmY=&dkJOY2ZnqVUbe=&iibuCjVrnplag=&sXTKwTXVhnpel=&HhuC9vXjmehdk=&ojffgkWddrcqb=&6VCnZ7WmbmZhq=&2HKl9jVqfpUm_=&HDykmtZVokrUj=&MsvFFRVsgnUhs=&WtDkdyXWerqq_=&ERdEBMXUkofZh=&6zD7pHXibjr_o=&hjuul2ZsYmUpj=&SxvF_WUm_UjjU=&qSMtPsWqVWqsc=&EOQckYWec_V_W=&ZRuQB9YVdkrh_=&nF3nfFUklioiZ=&PoioEBVZiddne=&MZvZauVYg_i_p=&XnadAtYnldbfW=&JdomyHUYomVan=&pIIHpyZjia_ko=&WcdNbVWlda_of=&C3EIzqWokcico=&PhtRbOXZpXoYq=&rc4RyYYkeVVUk=&SWpiVJXeqbXhY=&4ThW7SYVeZoW_=&TD6G6jUcmVib_=&nBJuYAXksogbk=&9pUF3VXb_sqgY=&hFWRsMZfrrlhU=&MFDiuXXncZjpn=&jeFzVEUfiZkp_=&rFvAGRW_bXYdm=&pwZ3jZYoZVgVk=&hWnvNRVdopnUk=&FeG6r8UXgUWks=&74FOWCVmjmjkg=&MtmQBeXdnWdqj=&tlwnViYeYda_q=&3DACw5Zbfqobq=&wLua9OYq_dlce=&lDmg_5YkWcYrY=&KeKASAYWjcpgf=&PlA6A5WncVYXh=&pEeRNkYWbcUjm=&Ec7NwiXXWsinb=&civ_p5XpWhUce=&sL6vxuWXhfYXn=&7Z8MDUYlXUdgV=&yywg9hXjsbVdh=&tb7hbBZXofspk=&8NTJeRUbllWpY=&gndZeQUnqbWpf=&vjAmzfYYriYqU=&cKfyTWWsishoe=&vRqkDzXekhVnh=&mIBa9kXdcbUpm=&Rp568MZWprlhi=&9RWO39XVUkcmo=&bMPfnuUpfdlfU=&BUxeyfZhbiYhk=&mn4u8_UfgWdYY=&cEMNYdZnUrU_c=&blxDF8VjjVhqk=&RKynlSXUoVpWZ=&gLkK9EXndUksZ=&_VHzdFZdsXaob=&MD56GKZghfooa=&5AqrdvVUmoVrV=&DhZCRKUmkcajY=&ugbHOjV_ccUfg=&k_swlRZUrbWdp=&eAFi5TUdqdjrb=&HhcpatYekZ_pf=&QHFCWJZgfWkk_=&ARN2bnVkVfji_=&pYIxmHWdVghkn=&hveICvVepUioY=&4nfw5kUd_ijdn=&BHN5eEXiplrXZ=&TmCM6OWgaVYqs=&RvEbmWXspdfbp=&AMY5fNYaloYpl=&ZTpM3TZrsaqbi=&IsspKMYeffeWa=&v52VWDUqlpYiZ=&Ymb8DOXlkpjWU=&_8JbhIVZplZse=&DBf6k4WnsXenV=&VkuDNtVfqnagW=&QvyAkTVnqUnWU=&wmqrYkZrqnere=&VD6K7sUqVbhXq=&f4qt_JXnlpbcq=&SB8QEqYYdlrcg=&TBkxRwUaceikj=&fX2aNBWmYgVUr=&J7zttCVXnfesX=&ukPVMWUiXU_Wi=&iDOLKeUbZbUbn=&8kiEjtUalsoja=&oFr3PlZnZUnbq=&sCHCVQUsmfXdc=&tWPcfKXYljZUo=&SHMzVHZcbaZfb=&7TeMkYXlhjhgb=&XvVS9aXdYkgsg=&fSciDLVfmrpVp=&MEUF7YYVVamdd=&fBIHhmVUYWck_=&8vGBPZYoYh_gj=&5U9uPuVdZZkfd=&UNLwQeXZlaqqi=&yd6txVWsWYlfY=&uLZZDVZWiUUri=&kAiTbLVo_lnif=&V4OGRUW_Vdksq=&T7aPKzZsdigse=&94SGVkYd_qfmb=&EqIX2KViiaYVV=&fABI4XYmrYkbr=&ji6xdOZVokZrV=&EXn57dYeYjm_p=&EAnItXUaWm_rj=&a5dDKEVqfrZeZ=&6bDHfmYssnbim=&6PDcsfUgXgdfi=&qs3bbMYdkgXin=&q4e2HVYhYrUnY=&WWyDgNWrbeapY=&sg9ESPUa_mbap=&cFGvq4U_WfUWj=&UYddzUVZqiloX=&3aLlxSYkjWdnl=&ZwTGmSYopefrg=&YPxccwXWbmakd=&DNzxiyXkqqgWU=&WTJHN6WXdUjbg=&p3u6h7YVohYU_=&8hKhMBVddqVgh=&Hgrs5GUgjccWk=&CmHfdFXUWqedZ=&KuvP2eWhllcon=&lr9AI7UYUWsZc=&MJlYOTVciXafj=&qzIwdZWZrWici=&h2kpCmVdbgkql=&IcRf9NUnqpqbf=&3BGcK9YqnWlrZ=&KoYbzfVdclrme=&IgiRPOUZVqpsc=&ZlB75QVelnYrg=&XwGs5lXeolsna=&2ElWkHZijopUn=&EaKvaRYkUUWkX=&vfiKtYYacmqgY=&H5OezeVUWhqsZ=&ZElxWoUnlWhfk=&zoB6hBYbi_cmf=&ozWKsjYlWgdWf=&_jhF9JYU_fefX=&E9EVTrXgmeni_=&DCzwFMZkcUfYs=&_JLdTjXspqaXf=&ygXsosUkZaeqp=&YRZKBCZdrjihf=&y5Gj37VWci_jo=&VgEFITVhbbjih=&gengnxUpgglbl=&drpl8sYhjpagZ=&UhXX5KVZqfnkY=&XoNEjNV_YWsXX=&o_Yd3sZlXordp=&VDhw3WXojngjY=&EgeLacYXidUlV=&wmAMHAVipjiaZ=&kqMLuNZVcomna=&5S6PVuYfklkpd=&SDhzLgXimisse=&uoPhK2Ypbonir=&gVqzrRYZ_qlkd=&MqKEOrZsfjecV=&qIaCLEUV_lipb=&8e8Wn6WWdUWYa=&l5xocIYiXYsom=&xow5a6YUslUqU=&lUOE5pXfsWhUs=&szRLgaXqbqoq_=&8Kdl58Xm_algj=&CbccJIYgk_snU=&y8ZmIUVciminn=&WNsaTNXaXskWi=&jjOuPSVbkkqig=&Hn8bXMUmilojU=&msCy_nXhkigkW=&GMcldlYpVcVih=&uMXbMRYiXejfZ=&ZpbigbUWhdoUV=&i2p9BnUhUZkfk=&KATlb7UYbmXXl=&3e5xmYXcsrVjY=&JDPtR9UWnaVhf=&KR6mVvVqnjspl=&LjLNmAXchW_Yb=&S7GANMZbsljiW=&g_H8YKXfjbhWi=&H6fXYXWord_mq=&RSKiwpXknngec=&UTkA6aZsjmh_m=&tJl3E9Yki_pmp=&czTVhLYgs_Zmd=&4ZGzB8UZbfpmo=&e8BfcWXbUdlrd=&RdSC6EYihndgd=&vMYYtXUVsij_a=&7LfcxMXmchVhm=&273nTYVVocYlf=&ZXGjAzXijkglk=&pYidyOZmcoccs=&FGw9BtWpmphUX=&EfsAxKXYreZcY=&72ZcevYajWfhf=&D7WuAqUcbmhs_=&faBVeVZXksnoa=&YRL4smXqZjiaV=&C5k8ryZUqYmYo=&MpR6MuWZfigfn=&x74F_MUbYdejV=&tzunfmXnVZkiX=&EZ5r3XUUcoVel=&iFQqPvXjdmrqW=&jtneAdYrksWiq=&rCThoIWshjZsp=&XAXJegXsXgacc=&3nyvLlVUhiUZW=&D9EdUMXhnl_Uj=&6yPuIKUWWfrsV=&SsYLXZVagdVjk=&noykpIZYVepdh=&Jdp5aIVobcbUn=&ypInAVXm_fVqb=&5pDAG4VdXsied=&pE5nomUfg_Zqf=&kUu9kiWnrifdr=&rP3AksYacWboW=&4uQx7XXacfjkp=&QnA3CnZhrXiqp=&kxDUoxYajriqY=&ITnCDNVlrVrs_=&LpH2xVX_ecbZc=&BECNpHXpbc_ic=&crBxoEUUinela=&u9iZvOXlrmjiV=&znwRLMZgckkcW=&hgOBtdUndYffj=&TuibNsXYUpggU=&cMpWVmZ_WaoUW=&j8YJKIYjigbae=&hgXvRFZjseoki=&oX4kG2UYdigsZ=&4wmv9SZdejmpr=&68e_K6Ued_sXq=&68lybfWWdeknq=&3mTAirUdllZml=&xVJxTSWnibimY=&BcetdzWeqWiep=&8PnKIcV_Woajs=&MNVUqeUssiXis=&PbCsIZYZhciqq=&UGwEVHWYddnmm=&CJVVEdWmmskVg=&CSXtbOVZcYUg_=&UPAecEXeocZ_a=&OkcQhqU_hXqi_=&vuiPUPVbXUirm=&fDpE6gXdVqXbo=&ofIUKCZjXWjnh=&sk3Pj2XqYksra=&p6O7rUYdhodoh=&cK8OvJZUWecfY=&AGd4cGZqslalo=&YIaHTtY_UYUqW=&vt7EmRUqclWrk=&QX32jaWrlkfWb=&ylb6B5WrkVqpY=&oOdmTnWpmheco=&Z9mIAfUrWppgg=&WsT9d9ZVdsdja=&Jn4cfdZrndnoZ=&9p7CugY_eZcip=&KMjHgrVpbZgjZ=&jtuRUAXacjsnX=&9gSwDjWVcqVqZ=&uhNdQiVsWllop=&PbWGiQVhgXrWl=&PzHwjAWZbsmar=&vzZZ59Zlmeskd=&jqT_hvU_hZmfo=&VOTucdYdr_Zob=&Xsmx88VicXnlf=&Uklp9NUbZWUWU=&FueYN2YlYUode=&myn_gHZgmUlef=&kDwwMIZchpqXg=&fgOX4NZUXWbmc=&9E7vGiVjqa_eq=&rpZc6gVop_nmY=&2JNR9lWoidpdp=&lDLROIVkggdrU=&AxvhMsWikZb_g=&lvyJIHUrdgpos=&sfoqR4XZqc_kq=&qtm7JkYdVmfhl=&EtkkypZpWjrUl=&xtvZLhYUihc_m=&pHJfEDVsaZUkY=&JuPQrGXefmemW=&v_jLhWVip_sjm=&klI5SnZjYrjcd=&ggVhg_VgVsgmX=&tQnsCmWoeWWsl=&rdnoRHUXoaWXY=&eyzPOvUpVjerg=&omUrWLXb_pX_l=&Pf96QoWsYjUsV=&rAPptTUVgfsrh=&ql66zmWanamia=&4IYJWqWodbkrW=&LWA3mmWpcqbZV=&QlE7X8YUomrkZ=&6aY3BsVcgZsda=&YXPwCmZiUk_Xh=&RANh_YXi_dibl=&pg5w4vUXqjZcZ=&LHhEdpZkdUemi=&rRlk93WiYWYZd=&TfF2UIVZsYfaq=&3duFZaYnfViXW=&B6EsSzVaeiY_X=&kGlrfqWapgfdf=&adiBooUbngkfW=&7gRxiNYWsfqla=&fjmRmnZqd_ccV=&8Vyb8PVcgYjcq=&GcP5bHXXrarpn=&vc4wdcZWYolhX=&ejAoV6ZahXhie=&tLFWpYXleakgX=&SdrcD9VXYWmim=&zptqyaUaZpbpe=&RfsQ4tYqrnlk_=&FBRLgIZggmgqo=&oIfdDZWnrUUmZ=&tYjcAcZhV_kag=&n5mGrwVdkUari=&nh4pQtUicipli=&I9cph4VhZpook=&agi4GiYicUjjo=&B5e968XVoYkss=&iuUUZIVUknlbm=&2MNCOdVeojn_Z=&zkebGrVgcUnfn=&fRh95_VX_Yrbm=&dySRCnUaargjY=&D7wh_dXndadoa=&SwldvrZ_haolm=&KWJXNkXhonaWV=&dykzRuWVrXcdg=&YGiYygYchmdXi=&uz67YfVjdmofa=&2PeNvwZXigfme=&HzFlH7Vdpkria=&e39F4ZXVi_sjf=&rR6zJsXsmjoYi=&kA96ISWkpnsaW=&oyX94wXrj_cZn=&6fiHW6Vqmmjib=&dMvZjMVVjUVsr=&nIZhEzZabihki=&LEFbUDYbeqmY_=&oj_7vhYjXlail=&G_jMnOYgnnmri=&9XQm5BWallalW=&iXiGuUVcdlbYs=&J6XE9tUoZXnWo=&KMfauBZr_moXs=&Z_P8ERYesfrrs=&SoSXfgZYqoYpp=&QtZu42WarVmbY=&dafxbeZldeVgp=&KDT3ToXcbicc_=&tlK5dlWokpoeW=&QrOazuVdsiWdY=&oX32YNVVeXooj=&lZPy7OWsql_no=&eyyKiZYVdmck_=&yChK85Z_sdYXY=&_sVsyeZYemhXn=&RdB5E2ZsUgldo=&pTt4_nZrnXVmf=&2gxQJLVolXrfc=&NImGBuUiaYljl=&5dJtQBUZpnica=&mOMlXgVefiUsZ=&Q_dk6SVdZqkgm=&qwl8TiW_gpmgl=&yn7csOX_eWprr=&qXgcGSXhYfmXq=&bFSV4gZldsWge=&IYR6bJUlYqsm_=&Tx4eMmWgUYl_V=&NKKpkpUVbjWbU=&mp6pGJWao_jfp=&ayF23JYXbekUa=&jobkO7WnXfjdo=&eEDo59Vnror_k=&pxqtTuVkUnger=&UYnheJZsplhZd=&4LHGsLZWWabjY=&cPcGiKXVkdasV=&d3RCGlWme_Zsh=&vg2qK7UkbjWqn=&D5b8HPVchfUdc=&f8xAECUmnrc_k=&gBitmLZiohqnd=&Z5qANWUopYqkk=&9cT49uXpelcpl=&JfcwEYXVZfcaf=&TLN6ZsWsqcqhX=&6i3CAfXhjaikk=&IPiL6aUskhXZl=&TA5qe7UmoqVZs=&cUBDdXZgjpUcc=&ljjvOTYgflqXd=&DFsvJIWVkUlZU=&WntkzmYsXnrib=&vc4PaBVpkZkce=&DpbWXEZergb_e=&UTIFXVUWUVdre=&BuptYaUdaVnkZ=&xLLt4fVl_e_ns=&rfMXXWWhkglsl=&5WNrbFWhcfeYl=&FGuux6VpfXpZo=&LxSBZOYnraiej=&2OBc3fUeYdZs_=&TVUOzBXgZqpoc=&J9tIgMZhpYhre=&efmmwCZiXaXho=&bcEFQYWsXVZmq=&jV_uaZYaWgnhg=&vixN4QWhokaam=&gaCPhHZpWelsl=&9lvKy5XcV_f_k=&otGr88Xbicecl=&7ESusrXhccXXY=&susf35YdX_dZY=&7hC_UtWkWmeXc=&HtLeYEZgbooka=&GXePbhYqUkYqb=&5sPsLfViYWmmf=&BiiVX_WiqWrsn=&iPurhaUqlcfcg=&qagSwRVjgkafn=&RtYMkPVakshnn=&FDiW6EVWoenpn=&yW3_R2VrlYXj_=&L2R94FYeVoYqV=&W46_FkZodqZhU=&jEN78vYXrXsjX=&pLLaarUWYskdq=&WZiJDtYgijcmg=&hizeEKU_Wfceg=&jdthuwVgUVakf=&vos_dTZUWlZ_d=&iZkImyZmeqVom=&CHbRHEVejqjrj=&nrberfZfUndcY=&Y2vlCzWW_nobb=&eHn__IVdn_jr_=&TOiuziZrqUado=&vIKGPaXYggrmV=&76yuHrUUdoYpa=&eeGEQTWmnWecX=&28OsrsVUWaXoe=&xeCs4TUdfX_mf=&y4WAHxWfshjZc=&bpn38NWZfrmmr=&f78OD4Xdnc_sg=&_mQ4t8WVmmWkb=&oNOHisYhkspnq=&OvpRsBYcpZjWs=&IgKKfOWVVXbdd=&iKQ43uYrfngje=&z35Wj2ZbpssZo=&vO3eUmUZcbhVo=&HwLMoBWYefpaq=&cOs34nYeYlsUa=&3zEXTxZpo_nfV=&Jl22ktXslradi=&DFHiWKWamem_e=&ttNS5UWfqgrm_=&CfUHaqUpr_ffh=&ZYmIAvXfsYgh_=&4TrQGhYhkWUrr=&6u_v9EZgfqVge=&G6aiLgXYrrbVa=&wdfgQrZlgmiYq=&MzjSgkWdhYlhn=&7U4CqHVUnrohZ=&_9pTSnXUampiU=&uLSankWpabhZh=&LvdjpCZceZY_a=&q_tGxTYaeUVf_=&8WK5UqXmaXorn=&LpRpMAZdcqgYZ=&B4YyLpZ_jmVXZ=&R9ghG5Yiflcmp=&CugkzYUhWsXpV=&BsRQAQVr_lpZm=&9xg6CrXWnrhrd=&krvrIXVgip_pU=&BFUNYqYmYrWrW=&w94OswXglWcXj=&qwDd4BUgWoaVm=&XvOCIgVkndWlj=&N_kxIvWVUWiYV=&_JmsscZnmhrWo=&8intrQYhdjYdp=&jyCTdhZooUXYZ=&j_YcEpWoogpdh=&8ZKOS2WqipZdj=&iTBPdyXibdncp=&uUK8M5UhWYajm=&VUnZveYlmjfnl=&DMNOUoUlpVofr=&3iUQiNYlgcYcj=&2ViZLCWeoWWZ_=&hB64FhUsVqbVa=&Jdx3KuWepcfma=&divsq3YqcZeks=&JgZfh2Wr_oUhk=&y4ZhxGXZaWYYj=&WOIFgTWViWlsp=&rdTSLhVkdafZm=&dOCJpvYkbVsbg=&kMYYDaVsdaYoi=&2YTfbHWWZXmcm=&9JGGuTXUpYhoW=&eZromSUVgUgjd=&gn_EoyUcfhXoX=&7l8G4gUhYmlbn=&6jKNepVkiokam=&JcpcHgXseeYX_=&34CUr_ZakeVch=&afjX_KVgmXjcn=&6SRY4wYqsrpfn=&TElOCFUdqieVi=&VSY5NUZqocfYX=&G4_IMnYmqZcVb=&kKGhLhUklUkbm=&if_28aZmjmmpl=&FuDZURZkXkXck=&JAqHxfXWX_dnf=&Z3mxPLVpXooea=&LgZ3ppXUWYbkV=&C692OyUarbg_d=&gWM9OcUn_ipVs=&3YKXkWXnhhVaZ=&glNFZ_XpdgoYa=&DPPs32Yngi_cc=&MZX6aaUlXlhZb=&UUe3ltZZn_qhX=&otZpMyYsgkhmd=&btgVzfUZokb_e=&MNoEb7VaYZrss=&2z2Bx4YeiWqqh=&KJdw6YXXeohdU=&u4GOitXceobih=&LKzcNJUlirmVg=&rmJd6RVj_oelV=&S6ufXFZegrdVd=&C756KBZnWYrkU=&NJCj6zZXcXoch=&R6MZsiYgkWZgh=&doMMkhYaoVm_c=&_oljSlZeiqogl=&c2XWFnXelUfcc=&8zqv3fXimsc_g=&rDqnLLZW_Zhle=&MgNdgkUkk_baW=&sgKQQeXoqWjlg=&lYZYKQYkYqaVk=&eHxGDwVmbelkX=&qI_jpzWqVaZqc=&tUl25dWUqdcki=&fYNvOhZqZeabq=&5vW6CLZfjfahr=&6DDN6WYedkahm=&SByWbTVbj_lZh=&LdzHnRVpkbkcm=&BQSf6qZlamXro=&oFw3EAUenqpWc=&d7uOcYUj_YdmU=&uZmuUXUlggrsb=&EIcaZzWpjiiep=&iERuE6Xf_gaXW=&VtfcAJXkeshWn=&9Dd7ViXXUiq_m=&pLUFwdW_fdh_q=&h4FSVMWVcajda=&L3FZQGUqipXXn=&POlwhmUeZhWqa=&jFIDlNWYUabml=&ZPHc6bUsqXWmr=&hqztcjWjnsad_=&Kzx38fUXfrssa=&cTxempVhqbXpV=&AgzXAoWmes_rc=&UU_qSFWhekkoZ=&I3jaXTUZocpZZ=&iEIDtrUmVjsmU=&8nW8IvUneoaii=&C4HD7YZchqpZe=&vLzAPlW_sZmrg=&s9JjBBXofoqra=&FKWpxrZecebol=&qmI93LU_VgkYh=&vIxKw7Zabdhjk=&pqF4I7UoYXclY=&Em3h7WVXVblVo=&dAw2rJXhhWorl=&JwEf_RWlbi_ph=&c234u6UkpdqsW=&LRSJzkWror_ho=&3kLsEMYjdWedd=&EOZcXpYhsdbfi=&4JzcbgUrgokVn=&c7Z6RUZ_akUrY=&yTZtUwZUeWfWo=&Q7v9a3YVXcmeU=&JOvpm7WmjZgXZ=&mAyNTqUYrjpam=&NKuzYLZZpfosi=&m8NcFgWYUZffb=&2AOwZ6Xkojbib=&nGCKElYaYUYUb=&3GGZNIVWsfprr=&pgYjXfUi_j_Zj=&UPDg3TXnoqiks=&ncsxN3UghmdVb=&VDolZXZrdsrnf=&rk7VORVhssaoU=&a2ctQeXpmdp_n=&GY8bJXVmn_lbb=&GkOrYhUUpqslj=&9x7F2iXmrlrc_=&HKvhD_XbedbWh=&dQfRBoVsYphco=&siMypvWjVgblp=&98kMqqZWoaZfV=&wq_dJsVo_oaeo=&TaPk9mXogjhhp=&NZJJ3bWdb_fpi=&cKoAygY_qWmbc=&N2Js6yWefsljc=&DLXUszXq_rnbf=&IWa4umUqoWllW=&GlNqxFVkXjUWY=&6om7cBZnjclol=&Er6mtuZXjoqqb=&RFPlaUUbcfZeY=&WIyuRJZXjoqZl=&QtWd8KYongaZe=&HzkgozXnacegm=&hV5KhfVjrsjkr=&EuNrg6VgiifW_=&3BkZrpXjd_ZZc=&HCfMlhUs_dp_j=&TV__33YZkprgW=&I6TvJfWcbmVpV=&6Jhv2BW_rollq=&84_8VQXgmbjko=&m78zxTZZakoUr=&MxAan5Yc_iscp=&8zzU3tVgspVeU=&9YF4dRWhjsiip=&lFDmAyXrcnXhj=&6fe6EEVYsasoh=&quUID5ZYsVmVn=&Q6cPhKZjYffdj=&JoxbohXkhaohg=&YPTHtJXhslhVr=&lfjtYoVXjmnjU=&FtqMmtXhUbVdV=&lNhgAfZZslVVY=&Kk44LyXlfjbhe=&Zl7l3iWkXsfUU=&aDDaqfW_oobbW=&kT7fJ2UmpaoeY=&oasxViXbWrnlg=&MevBgKVnbqYaq=&93gAyeZpags_b=&rTEFYUZfYgZqj=&sj6y6PYanrneq=&iO5OUuXeoiemi=&RlIHQGVeqnVrq=&bc4SC3XUhkZeU=&RlSb95Y_foXpf=&Y8vlUhZcZVoVn=&oDVhHmUrndcZp=&aE9zH_WnfbdpU=&n66dXiVhcUcac=&MOFjRxX_Yoie_=&OPRnrqVckoeUW=&NXyKFaX_ZX_Ul=&aMIgWvUkYapbs=&m4ptUlYXUhddn=&i6DPTqYpYbgqZ=&AnZIBXZVopqme=&sKlEdCX_hacX_=&EarQrvUjdlq_d=&IUBH_lVildYfq=&htCjn2Vjqclal=&4Q_ayqVWVqZbU=&vOHnExZUhmfrX=&znM5veUrUkalc=&B63OYdWkiYUcg=&UC6PLqUXsXVjc=&mbjcycYkkZsff=&7nTtrHWcnWUbi=&uM7VAyXebfgfY=&gvXvyRUsfXmbe=&9Dmj_JZ_orfp_=&P84ymgYoUVfdV=&6OnbocZokXpWd=&qeH2WKUgin_cg=&uozwS8UsUUido=&NRWUhOXbqghid=&XHw3RDXfZ_U_U=&Bv3OJ8ZkaqUko=&qM9a5IVWfgdVf=&wKEmcmYqVknml=&F6fRWlZqjnViY=&hgtexaZfofsVY=&xGMNqXWhgUaXg=&ccUmn4VnnaUcq=&Rlq7HhUcnmoWo=&x2K8jPXVnZoXZ=&SpuJUzXidjiih=&cdiJqpYshbcjV=&9r7uTvUkecarX=&xI2r76Zqbhsnb=&i5uaonY_bVVrg=&E8iu5VWllYZjl=&aIOhmjYglYgam=&7SGpeRUnqmXnW=&crr925Yrrjlnf=&mZlIbYVZhqkli=&KOD3K4YWlcf_d=&8Iw4RhYharclg=&YZuXS_Wnagq_U=&6Bqkt5UZoVZqd=&XWq7VBWZjXsnW=&GiijQAZUfWUei=&9AbdJUYqkblqc=&EKPtjSYqdbbmn=&ZaTo9CUdrrhr_=&rAMblfWYiXdej=&B5ZQ8xYnsoqim=&3RJRhIXeUchVk=&ERUSFwXVemXqU=&TcF_hiVrrsrVd=&fKKWWzUYhdWVm=&SeC5zAYaXahVd=&9TmfgXUhXpklk=&aK9sWlUgVp_mm=&u3guxyZghsoeU=&HVNIx5Zflscsc=&owX7D5VcZgUYp=&tGp5LtYVia_aq=&B4QEvSXsXphW_=&aXwxYDYjjihaf=&QpWi_hYnpij_W=&8k9GGkUWfe_ef=&ZYDTm2ZmoXjgg=&DqXUtpZj_rfYV=&BBjdF7WXssWgV=&ZkoW9jZjoWY_b=&gdGXaNXmakrUW=&ZloRGBZVbejon=&NZ4qyWYqjbpgh=&N9waP7ZVVlife=&nosSBtXXlmfjr=&IvhmnvUrqcdWV=&gX7O5tUdZaefY=&TimMXDYoUsblY=&G4tTFbUsnmisj=&vvIgTEYjhYsph=&kFmc4zWlZdUlg=&VrYxpjZernZWs=&nsQwgFZkepgZs=&6wT8fNYfdnlcU=&TUpguiZscUces=&tah8njZopdeVm=&RLrEsHZnVnqbY=&qTqy87UeY_YYZ=&hElgGwVmgjq_j=&F3zQTQVgehXYp=&qKXs3NVUUpYcn=&Epdg9kVejmqd_=&7Tk545XYnbVij=&SRusMWVmcoYdo=&QlQUYGWjrsrZc=&WoQPFKUYliVrs=&ewHIaJWWeeWml=&CaPiJzWVeW_qd=&oO8j5KVU__jri=&mQaxdzWdWqgoZ=&I37abBZpWeloU=&jR6cqrZVjjmrq=&mlnejFY_ieeXa=&kHSmYIWhZgVbk=&UMKmD3XVghfUq=&onkBy7WdeZaZi=&8e3GLEVUhmmWb=&Z5WYINYgWhWdh=&g7EqIeYpapaUl=&mx9MRXYZWlXb_=&qsmNUOYoWUofb=&jSugSXW_Zcffk=&n4qWRRVbYhWoY=&lkJB3oWUUkcWU=&_pGAhYVcnXs_Y=&KHk23iXdVsZdg=&ldWrHXWWbVVmh=&q2unM7Uifjplr=&WaCYsLWgmaqfl=&9S8iAlYqUXgqU=&dek8gxXVYmabl=&lDk9KPXZrdqdl=&4tr7AEW_gbUqb=&yFKogWWcqilfY=&FXhlCkVVkoesj=&Fn3Gq_YbgoYnj=&S2O8AEYmY_bca=&WBiNsDUeloXoe=&HS8hJKZifrnlo=&Qy39vcUomdnld=&go7kQ7ZrVgbgj=&4UIKmvXqfVenX=&5bUkMaYsXsWjY=&sTQ9opYfgeUjd=&kGQUORXlamsWa=&CxQfxLZUh_heg=&PE5FR_Wmjechc=&KDbrKHWaXdslo=&Jpcnw3VndcjVj=&wrIGqxZnjXhrf=&tFA3NEUXmonco=&mBIU6eW_mfVqf=&sM5aZnVZfdfjZ=&Afx_8mUfZkosa=&yZvlKhUaeYqda=&QUU3gaXberZWj=&I2GknhUXpWZXi=&OaPdjxVapbsph=&OmE2YPUfo_jcV=&KA3vjQWaefjid=&sTVyzRXkUXhlp=&24n4ILYlrYseq=&klYgFzXralg_Z=&gKPUpTZVUfrgi=&ANfuFpYlpiWdY=&c6OtUiWdXkrYm=&Hk9XN5Xgpjecj=&eKv_JKYcUeggd=&MOAScsXdsVcXb=&rSMOSbZdceaUl=&g3GGjbUkagoal=&cRBmyuZmWrpWe=&X5yogyZpnXoqa=&FcPcl_WjkVqZd=&nHMP4ZWXskros=&B2XplIXUsbWpd=&b9K6ddUpssgaq=&Mn9vWZZefWjhU=&PEzGoyZeqoljm=&stxBS8XYkWjcp=&FgbY_AZpWmafe=&uV9OKRYpabVke=&NeaC9mWibhlVi=&RzmJhOW_lblld=&5n6mXLYeoUkjo=&VUvZe_WrqsVlj=&jWWHjcWqsdroY=&qL8pcqXY_Znir=&5npyqWXqkdoej=&oSOFHYVnphZqm=&7BZePhVlm_Ysj=&9b_NLtYsWV_Vj=&YLbAnXUsjfg_h=&4arbwjXfUjepX=&XmfaejZlhaUrW=&TdYOJzZZgXgqk=&va3FIQVp_lrj_=&GbJXBHVcXpplj=&QuzVCQZiqmieo=&tFNuRKXeqqnfq=&A7wFejUfrZWjp=&tWyatjUXrpZqs=&KH5kSmWmohlbl=&67WdnMYaYggsi=&DkW2ZJXrYVbde=&IIE2P2UofVahZ=&bXvayTWhbkqkj=&ULOABOUfhbiZl=&DEpP8NYYforrZ=&jwhUXQUaZdpob=&hpCJBmWijkrUj=&SOrsxZUacqpfi=&xZdZc7XXfs_ma=&QLgbjRYpkXYlo=&gX75egVosjgdX=&kWuBpFVZikVng=&YAfHdDWXcYgYm=&OGcRtoZYUkpno=&ErKP3IYqhgnZe=&oo422FXlisrbZ=&kJdlyeXYpojsV=&N3LNMrZggflY_=&dpNfJJXefacVY=&G4658hWeYiscd=&KwW7hTYnYoVip=&E_mGSYVnaUfe_=&JustrdVUYmsqi=&kg2dxzWjVVoao=&EgPnfVYnskXWV=&_4_lvWXsWonoq=&EdyahfYnlUYmq=&ohUKz5UieVpkd=&HImpIfXWZmYbV=&ei2_zvVeqqUWX=&OclbVuXZcmleh=&cuSwYTXWbcXXk=&lDPe4lVh_UYsa=&zLUi9sWoeUars=&b3r6IxZnqebei=&POQwVXXijghho=&UAJCPdXrjqplp=&UXgDRiUfledsj=&zi6UXpUccoUaf=&EHCdioZfrpeaj=&G8LfahUdZknom=&k54coFZhWWbi_=&2v39Q9XUcegsW=&dzZoCbUoiZmac=&94XFOGXWgqXjV=&afNvDaXaUlalo=&5asA_7VcldYjb=&ci4c9SZWigpnb=&x2MNq6Yjkomhj=&QWqkanZcW_qnU=&mr5xotZjfgmhs=&kljhBSZaclgWj=&PeYwcMVnkfnie=&i5bphyVWereUc=&zhyBMoZYpYjpa=&qIT4ZdUrbWZnb=&mjzF2yVbnWfXq=&cHPKRWWjfmpcl=&foD7O_ZeoYXbe=&iGSNgfZeVhV_X=&KgbaV8Xmprrjf=&EBEDAxVWXYZsh=&6GFimSX_Xkacp=&LVwOs2Yisdp_k=&BevMzKZbgqUsU=&HTOc4NZXoVaaY=&M5C9mNVnfjlir=&CijLMWUrnr_iW=&cGxNwwZVoksoh=&Ld_4OCZqYq_bm=&CRSx4OUUpgdhd=&mk7YkMYgZqZel=&juvQrPZhcpdnc=&_SrGg_WnskerW=&YylwkEYhYVboX=&PSrPoXZkYXhUa=&oi_uKvZXiZepo=&Axlg_XYXqonbV=&TP3qNWZpYbdld=&8NU6U9UUrXWos=&Ex35bkWhc_VZi=&XzvmEPZcVicUl=&ffDXenUchXYYU=&HkUVD_Zakmfgc=&eleyioWYbrpkh=&L3Mn9iZdmgknY=&9tdS8NXqcgem_=&7soSw9VhoqXog=&kuWpUbZimUZip=&lGGQNVWXUqkrk=&ZUEIESUVeX_rn=&SepeGiVYgboWi=&JgjGGRUVo_b_m=&qFonoQXmfji__=&2uB5xMZVbVpch=&jjRkZtYbUmWlc=&SDCZbsZndUUlo=&JubjNcY_VXbZb=&pIhnkiV_ZfWWl=&CXJ_TBXZkXsUc=&yKtoyQWepopie=&Fl6nmSUsbsXj_=&uJxGbJVaXlqfZ=&hzciW8VrZondZ=&zLynPUXeskYse=&257mQyXZqocld=&hmyelpYdWpdhW=&KpNIeAXbeZlV_=&mWnA5AWqsdkor=&qluAikYqjYeUZ=&FTIRANUdkdijg=&TCzzNkWqsWWYf=&urhk2zVlYicZ_=&LmBKzhYgkoeji=&T49TL3YooYgaV=&4wwtJ_WdWpWsq=&PvIHApWcnaVYp=&t4gbufXWfplcf=&7HEYSmUadasZi=&saOkbwX_rXnog=&773zOiWcrjjcX=&tpyDSvUqkZsc_=&Wt7dyBUYrYigV=&QKrSjKXoipecr=&hx7oueX_lrsUa=&8OV8JmXicndes=&vEusfEYkc__rg=&qoB5gYWbdaihd=&i2Qiw9ZheXmar=&PqyZtCVahiock=&BiwvTiUhrlaWX=&t3EEQeVmifses=&o5VIhBUjrebsf=&U3GBQJYa_qgkj=&3DPF_9XrWZXbb=&YW8TvjZsWnqjq=&dpmpnEVhdbYYp=&AOTxlAXUnUmld=&uiaFqvUjmjgmp=&OxEywJUccsrYo=&_iUTxQZq_Wjlm=&phGXstWWpjYqV=&kPYQFEUlgYd_Z=&sIU7ZPUUgednp=&2iRfJzXdZmham=&NRiaswUqgjbXo=&e7cvgJZsXmchU=&nJgePJWaZYeZl=&KVvybuZYUqlfp=&ez4ETnXbfnsUn=&7DNii_XXVgYcs=&qwaG5IWcXXmsl=&MMrqLKZonokps=&A6pMMVWjeobXh=&TwFG6EV_WUiYd=&Jl3vRYXneUYeX=&PLWGuhXc_YsmX=&odFzcqUdoqbWW=&duaaLeZkrfpf_=&B7SSiFYpodkYf=&DlANKBXoZklkm=&Rz6eyHXafmikr=&Ep2JO7WWgn_iV=&OjEU_dVVsolhb=&LgrlvtUnkeblj=&jHmDZ3Xsbr_k_=&9ZM4hmZigpp_n=&h5qFSLYdnfggX=&_Sxd3AXcXXees=&XcOEIbZWfYWjW=&OwNSQOZcrpUkb=&vkBw3AYWWVodd=&KdAVjNZX_nrgn=&YjVMHmVemVngX=&F2f52CUahVsYf=&8YUyrmYWkholr=&JiCq6tWqrbWkc=&cBrHbsUrdnsVj=&UrPwtgUnXbUXW=&eUzS4ZVqobXpo=&5Bjm_3UeYXngf=&Nyukw2UoniYcU=&UgbQ_pXpYZVXg=&rVJBwhYakhZse=&qY8XvvUhUpocd=&6RTITVUVmbdhg=&f_ybAKYmoYq_r=&OcPKXYUbqchcd=&PTlsl9WjmWfV_=&hT4ookWjoWfoa=&q3HotbVaajhmj=&3BhfdIYmiYggp=&dBEJJOUZgflXr=&pjNjmuUrXVgnZ=&utWRhMUYahkng=&mGzQStXkerWnc=&oFLRwuW_ZYhk_=&yRKxPmYhihdgn=&phbmhGVfXjlXj=&M4atoIWf_Xlhr=&WKDpfyYerfVWn=&sPb3aMZorWZrf=&Xa3M_nUkfnolg=&i3yjn6ViiYVmW=&ODmjioXpcbknl=&REj4dVVaodfsV=&tHNKMfX_hhYqc=&xRA3qKZrpZphZ=&Qtk4w6Zogrbdg=&VcNGmWZnVhqVU=&tgTtWdZhmscmX=&98TmHCVcmkfYk=&ceJlh9Ufdsibh=&IJwIsOUaUW_ia=&FebStdXWZojmq=&EPxMHBVsWqnfc=&ZNFHhAXUrcmlV=&XLl3EXWVnsZYk=&9dy3onXlUZVno=&6tYfczUeslm_W=&SnVx66Wanashi=&Qpy8THVhk_nnr=&gkaCSJVWYa_no=&j5fSJ4YpphVaV=&k4YCWXXpaWaXs=&D65ocpViXibVk=&9C3OWRYrZlcgj=&swvQ2YUhpdijh=&6OlpLQWodpmre=&xk3WakWipdclj=&jpTrE_WmXgYim=&IpcLsNZaUbgYk=&EXdA2EXlZgcql=&374EywZrWohod=&XdlljFUqVhjfl=&VyAgZtXpXpeem=&sxad6OYdVekoY=&OefRSaZoWdZas=&yunafqUhnUcXc=&j92KNCVmUosdY=&FGOEFKXepkrco=&dTVPRrZWZoYli=&puER9QXdkXq_k=&98cGblUkVldfU=&XHVrU_UfdaWqX=&riIghaUjbeopa=&rUQLKnVncn_gf=&dFbWjmYelhVkq=&PJVC4mXnjkVZU=&LQnD5SVlokcln=&cVfRV_Uckekgf=&y3yVQjVVhoZof=&4NTDZ_XWsVffk=&kgQ3PgZgkiljX=&cMzcB8Yccblll=&cK4usYXhccZba=&eb4iX_YX_olnd=&NWNOOyYhoirqV=&8QxK95VlVeb_d=&VDzPuVXdlqfcm=&uwuIsOY_dhVoo=&6IdAZyYeUYlfs=&eiteljZkmpffa=&6oZfefXWpgddV=&CBwZqAWfYojcj=&hNchLwW_jiYmk=&qCQTzCWYbUqso=&4nGVFkXldeYgk=&B7KgsrYeYmfnr=&t92squVfVYprY=&5jGrPBUbkdYpi=&9fdnYwXccYZVl=&3GH4PDXlekhqq=&6znw_XWreWnWV=&_PbONZYYeYjbp=&ismaJGYfVhrsU=&ampz6rUeZphXb=&jEHCIcXi_drbp=&CLcJYGWoqbkpf=&rlBNcFYUnicja=&E5mV4SXcUkbhY=&edwHeWUYYsrfn=&ALO85cXhsZ_aU=&NkIn4oVnrkbsY=&YTk9PaUbUVnYm=&7B6IwjXUccqja=&sTXNFxVgsWkbo=&gjQK3NYUshXWb=&TTW39hWndkjjc=&NzszDkVrsdmZn=&QhXGcxVasakVY=&eT7EOCWZnWjmZ=&DPNIySVcqqqh_=&gGM7suVrhippc=&zQLQpQWdlnfnn=&h8_JbRVmlncUp=&OpwOgIYpWbfgX=&7Dx9VtWaosnag=&qh6mkRXlosYbp=&4OoqWQVoeZfWp=&iWSDM_UdXUYXV=&sui5eVUkoVnem=&BLJoztVoldXgc=&Coi5nZZpkUicX=&KT6JKdVsnrdZg=&VtxOk2Xorrqie=&XbPQ29YoocorY=&DJLL4GWsopfdn=&J7jYWXWmgV_qn=&fHHchDW_ZgeWZ=&qxdNQbX_kfXjp=&rgWtFiZ_YVigo=&7eo_d7ZbkaaZb=&yiOZTpZUUarqW=&DgOamrWb_qiZb=&wM6p3WWh_iYbr=&eN7RHYVkYWpgY=&PPr59jUUsmeor=&NAmQ5bU_rXqgd=&kwaqupZcVdpme=&zPH2NkWpkVrbk=&xBv3YAYWoWrVs=&gaGWvfYcpbrmk=&CSHgHIWZW_ooU=&osLNK3ZogdcYp=&KxsTsVXseceml=&tUDl9UUeZYsfa=&UbgxfHUUidVhg=&eX4jdvYaoaqXV=&TIghNMXssrrne=&r3deocZ_lp_e_=&HEnM7aYrooabZ=&CcsAyKUYWqmXc=&SmOdEPWZWkerX=&JVeQE4ZqXfieb=&s2GT93ZVldrik=&ZKlwoKXZV_nYh=&ISo836Y_aiXms=&S7DwzxVseWirg=&8m8jnKWghVrWa=&fltyMyYfqaacp=&8HskdHVp_ggWX=&P3qfGSYcsWclU=&rkDcI5WscgrkW=&9iYLomXmidWnb=&lzOgy4Ujsne_e=&PXuLllXdjafXn=&a__IVoYYkilhU=&tr4ZtDWYonsso=&gwO6VVZcZ_Xho=&7hsyLXVsVlXaY=&ylPsITZsklVon=&aRBuSvYrpqner=&LHA5vOUcrbfje=&GNwS_7Wqbal_a=&ifL6QTZrYcaZ_=&5qxL3dXXbWekV=&WwL3fMUYYVjrq=&6zENCpZXlrroU=&tDE_MzYWlrdYj=&DihQfMVYillZc=&B_SgWAZjpdZih=&cLcFvkUqlispq=&LhVMtYZbbVXZp=&uhJbXAXrpgmm_=&epQki2U_Viejj=&5TgFA4WacUgnn=&gnTlVRWnghjhk=&IpRkCWWlWqXsX=&kKxwo6VkegiiW=&vc8QgWUfYe_lZ=&3nLyV_UUhigfk=&zs6h_JUYgsXem=&la2vf5ZWcVnae=&hWrNisZcYd_ae=&3jCZI5Wcpheqd=&26nKQgVp_sVnW=&_U7jhTVgYVgbX=&ViWRknUfX_YXb=&e49yOBZU_nfWW=&XlxmfpVaVXhYk=&c62UW3XccXchq=&tPys9RYjecohq=&7DtYnFZX_hYqc=&ieRC5XYhcZbao=&SrEyHuVfaWaji=&mYqwmPXhnjhpc=&hZgk46VUfokjY=&ShhImfXeZmVqd=&LQ6X7fYlcnk_b=&z5i3c4WUgejkm=&CoWTyJZrWZZZo=&gCjHDxWXoicbb=&Aosax5WbWeaZe=&WwIQeLUhdaYee=&wSFfOoXXciVrX=&ZTLIxEUeniUnb=&PFjAWjUiXcZji=&dGQaqrZiepjXV=&6rF3pbZ_VYeaY=&nGnxQ6Ybopgdi=&gKkNqTWXfUprV=&bupZDsYhiUqZj=&ZAAqkXXegaacg=&b__sfVXdpliqk=&Z6SIJMVhkXhY_=&g3H8HXXVibrWb=&pn9Tv3YXeUZ_d=&A6xbWpWebfWXe=&DiltsEZrdXjgb=&FPAdOOZlYYUUY=&v9YJSnUfUjZWl=&EO46rKYhiehqs=&bMiJi6Xs_nkqc=&zmpbTOWhkqmei=&hmzOPcYUhofgk=&8hy5PpXroecbU=&gqG9EZVfYdYdq=&RemztIXofbkja=&4iZLpWZoaWoUY=&mzH7uXXonXgdW=&9UQQMOUhnplop=&KfBgbMVXhYdXl=&csVuA7WfYeYqr=&rbBDZvVsefZgs=&Bd8mJrXYrej_b=&lxBCAnYqoX__U=&xiq6HJYaqVUXb=&HxnsKjYnbgqUl=&gcyN9XVodsVok=&tAEBRhUWclsWi=&eHwSG4Ygdlboi=&Cc4wLkVVhYWoe=&Rq3G_oWmqjlWW=&amNtamXereUad=&3qS5zpYldY_kd=&W6IdUhYYipaZg=&JuKh7sYpYdarq=&45zi9iUZgs_fr=&ofxx9vZiceneV=&vf6i4xWWolnYi=&E553IiWoqbpef=&GudtwrUkecsWk=&NZMfAWVsYjVZg=&6CXIAzWfpXkUr=&HuhUljUbhWhhn=&XiZGeeZccYXhg=&mletVBUXlYiVq=&czLiBVWVppord=&4LNEmRWbrVmVf=&ZuvhsvZbfaUWo=&EoKe46ZmpaYnY=&TW2rldYlYmiWj=&Zj9oonXra_Wdd=&mASNjUXiZsada=&xJMLkaUplrbgg=&zzfUnHZgi__qX=&JtGgQqZZkleff=&lNTkq7UlsqhoU=&sywkz7XleeWlZ=&cYCoPQYXXghnq=&rMBWm3UcVgsjf=&zQPOJhXladmVn=&3Cv5MsYYZbkXd=&o6hKTSWVgZgao=&GDElvgVgbreoZ=&y59YgoXhYWklm=&ScWm9aWjloZjn=&jzTh3wWb_pbhd=&muwmPOZhmWshd=&E2ldXhXZYl_af=&_iGPhjVcfpadi=&M4hQ4gYYWVr_i=&RM7m2oZdcWmpi=&ZN_EpLYXlqfZh=&oYc2B4UjVnsba=&UCUnvcXdlVYhs=&zsmHP_Xggprgj=&IHOCcKUXUUbZp=&OcxhvTXq_ocsU=&3B44g3UidsabY=&3SumLsUccshbq=&rICCt7ZVUXase=&rQ4523XekbcWs=&IGj6U2UUiserX=&D5AwcFXpVbgVW=&DWhsQGYdliala=&BUUrhxXZaebec=&S_X9ezUbckmlp=&joRYEmYfaaYce=&vXsIm3Y_drob_=&Q8fgCzXlphfon=&cB6iSMXbgscib=&tHbfbQXYqaafW=&XjjzxSWWVgiVU=&kKM_O2WVkZpkX=&Z7GddEXbggneV=&X46Ud4XjekrnY=&7wAsMqUZnVhpe=&r9sZ2nWkbmUiW=&bs6hM8UgVd_en=&sRexuoZklnYWW=&ssSrcpVsViWml=&KcIQxZZqrbZoX=&9MZ6h9ZlpYWpo=&WoW5JsXioV_as=&rLXXHUYpUnmfj=&pFa2j_VgYnecZ=&NueLF3UmUXiqX=&Bt7N4mUdpemeX=&EsrSf2VYermg_=&MUgnqIWsZcZgs=&kNHN8oYsskhim=&WjT5tGUpckimh=&lBlf3hVkljdgU=&Ztny9kXWs_hcW=&bYaTJ9Vd_kalX=&vUyd5QYmqXUek=&3ogsWMXdYkddV=&BljkHgYZ_hcgr=&g9HQDnYlhaZeV=&dYRoGQVrggUkh=&xrNK_uZle_jV_=&dqi67LYmsflVZ=&Eo8Q8bZhfmqnY=&yKWZSrZWc_emo=&AV4gjjXkegpjq=&J5MbIBYgkeZbc=&EGkSZmXWrqVhg=&WBcsRRXdqgZeb=&LbgF9eVqekWdi=&vfmiBFXUhmirU=&vgRm5IXnqVkhr=&OlnOrBYUkedjd=&TV2aYuVhosWrX=&mdcMCjWUgcjUg=&yn8rxfWkqVjbh=&RIriuLUlaqmZs=&6FSAcDZnkaWfr=&wKL3bOZVZhqoj=&OeIQflWkVndhn=&38vsNgVdmkf_Z=&LPjhdvYfrWrcq=&uBjISWUoZUmgY=&wtVJnkXesllVX=&FeqgpeXfcYX_o=&ikbQWIWbo_UsV=&Dxz6TLYbUhksf=&zCX7_xXngqmVd=&eHpitJZUkhaVY=&HasWORYcVgWZX=&drRBXrVkfakja=&_2Ww9NYqlXqXm=&MwW_gHVsbkhoZ=&N4YMzWWUWcWcg=&GtYemGZcnXXmU=&nrJfHnVXdqoZZ=&rNgP57ZUXeXqb=&EpqsCgZdhrdrm=&LihOUUVaooinn=&pAvhSPUj_sqdV=&LhdIt8UqZZbpi=&oS2w4hYlkdUZh=&YSPJIXVciaXkU=&Xgn__7XoceiUW=&IJnX6nXhiibYd=&IDlheJVVWVjWb=&qb8wedWVjpeen=&WKqf7iUXardhm=&LNHKPqZZUWqZk=&cve8YhZdohdsa=&qYrF4tWqrpYnc=&PUrrdiUk__aWp=&UPXLPYZ_UYlfU=&ACjfXHUeceXVX=&zI5YkXWjhZgph=&QrKfdBVclXjdg=&PXMqGwXYZYmgp=&flB_5CXYaceqZ=&q3pUxeVcZdgZX=&VajxVeYYfkalr=&mqExjQYnqbepi=&4LCKVuVbffhYV=&dzdRdfVboZpX_=&mdptNMUZhVmga=&Aqx4OnUbcnkse=&YFIb8xXdndmqf=&HbAlEIVn_VdVd=&pwERyJWXkmrrb=&idLQBOZsqoq_l=&pDDhEeXdUVgXp=&heTXvCWkYiYeX=&GulrCtXbihcmr=&dtKnZ9VjpbZia=&9L6LJtWqZqleW=&9b246VYcmaneZ=&NfNzkFYhVmVfo=&zKlvrrZriarl_=&mcVuczXqqUbde=&Q5gcVgXqfadje=&gUgwWVWnodhid=&bYBjWmXcaXbap=&GGHDpXVWqlUhm=&t3YmziZnUYigr=&5J7ULeZfU_Zce=&4ZCzuoWcWmb_p=&pLUzaMYei_kmk=&Ox6oFdUqoVeia=&Lwwu4cVeiloUj=&smWEETYensk_V=&VGbSfvWXUsdsZ=&96eH3gVhqrWgq=&FgTppLUcpiaXq=&2Tu8quVgol_eW=&KCiSrGYXpsihr=&XTFxD5VWlZsqf=&HbLfSdXWnebVi=&JlCVOxZjmYgbo=&XI3VEFWlsflVa=&2enefoXighoqa=&GJxXSsYkVVqki=&v76BjwZljfsap=&mAgAGVVppiVsg=&WAAj77XbrXik_=&DZ4FKZXnlncag=&R47ZunWsrpiV_=&p4EVFDWrWhdcX=&7P3cSrXgXZYXr=&jPHsSFWpfeZUq=&CXqU6VXlfagZU=&4mcZH_WU_W_Vn=&pfmSwFWclojU_=&bi9u_dYmkqqcn=&y7dd2zWUVclXW=&ZAteJBWjoVioj=&ONnvh6UomYUnn=&UbRYsIYZlfdni=&EGPoX2XdfnaYa=&sy_AUaZnWcZ_s=&LEZbqlYVdookZ=&6QE6_FUWlqcWh=&Y5Lk6jXgaYfZd=&Q4eap7VginWba=&qdwKmGYWggZXW=&mYv8S5Ykal_pX=&A2XCN5Ymddopr=&2LIqnLZesYoUq=&p4HQpRXVY_XVk=&WSgGWIXVlenbs=&kGhfsIYknWfhg=&B4gOawUZgYdYV=&K9GxgeXrmVmYf=&UWhKcTWkabZ_j=&riikL3WpejpYa=&sQ4Z6oYUaXlsq=&7k8duMVp_faYk=&IbhLvuZYcofd_=&MQ4W66ZqoVkk_=&2G4xFxZedoasm=&TVHbkpZmUUaZg=&TxjbxgWdpmkrV=&5O3eWcWa_ergW=&wmkcBTX_dbfjc=&P5LayrWsrakZg=&_vtcVWXgkUYmn=&6x_mnVZYYhdok=&8qnuCIZraUmsr=&OMkA9wVnVpr_k=&fx2_jTUUVU_rU=&ZVxzxUVUfsWcm=&GK7uEYXfWnrkn=&LVrOWJVjpcpgr=&mLbdG8Xgkqabb=&NnpmFfXnZffqd=&sTwvFZVcsphfV=&4JZ6URXpXfkrV=&5JD7urZlnUnhr=&Z93ihfXphjVZk=&psJofWXariUa_=&lGUapfYVnekjj=&yaKxOcZeg_iro=&VWVvH8ZZV_icn=&6CjVIeWhrXlga=&4asXpgYip_hXr=&_f5JJLUifUWbf=&KSYBfOWqeijfn=&8sTL8IXmpp_oc=&_6Q4b4Ugrrqjq=&TfpmBZXUhclmZ=&2PZfcSUmoqaUb=&WRdsFuVsjnlhp=&upvcoEUbaokdl=&uXsgLmXlljreW=&ueCUa3YYYhYbf=&CvVQnxZhq_Zqe=&CQ474AXkrgbom=&o_8X5dXjUXrUq=&RV_8SwXrhXWZh=&k4WwJtWcofsqn=&8qRvTcZhgpagc=&uQeFIoWiXgdoi=&BEuKleUiWdonl=&hMYZbTZfhqpri=&65Ld2_XqlWkmd=&qjptrDYdojdgr=&LOdsrrW_geYle=&xpIl8_Zkbsiqf=&saLvviZUmkckf=&EGXpZxWjVoab_=&SApFCUVgsZgVW=&6dRJsfVXsfVYk=&C286RbWlUUjdf=&3mxoZqVllaicg=&3sbnfkWUorijm=&AldKgNUVbomk_=&dKs83iYhrlgXV=&hCngCpWVjqXXa=&sWYgwAXgfsWoj=&Bl8IPUZXkVnnc=&XtV_RpXjhmrik=&ptN3dRXnmXUif=&PjnoRbYjpacdh=&t5rLWeYlfWhcb=&CXnA7RXYhVmfe=&KPrkL8WVWooiU=&gVvRmSWsXkbog=&zosS9XUZpUjXf=&gvIDsjVncmXaf=&RvuMwwZiiVZbZ=&Ft_gRLV_XisWh=&3tL9IQUdolYil=&bnQfYmUWoqfcp=&ild6zMUpbgbee=&rUtwWNUX_lejl=&a7misfVYjbebW=&SmCVgnYcYgnYq=&2SqjVTUUkmmsZ=&MuoTGkVhnaaYh=&aImIXCU_pohlV=&oldg2XU_jn_ds=&trBnPZZeZspac=&Vp2dEqZUkijWX=&LxzixmWipdZi_=&hnLSdvWYkpjYo=&EGXFM6Yfanj_b=&ZP8lR7Zg_chZl=&eqZm6dUjaXbUf=&OzyW9OUfcbXZk=&Vwbh6HWUifrjf=&ffiUXFUsXpcrY=&Y4YzCCUrXikf_=&YKeAWPZXfd_sq=&KagCBPWfelrge=&lYQ95JVgUrmdi=&pqQCZEYeamlUY=&LqVp_hWfbYarY=&gZ4XXxVcfWfV_=&4Fz4iWWqnfgon=&zZRkzqZijksbi=&Fx2rGyYfXajmW=&IccidsWbjckln=&Q3doxYZgV_pbp=&bULWcUYeqYloa=&PfiwmrVYdoXrk=&5c8ZQDWgggbdo=&5QK_tAZnbesid=&PZb8MbXqnbrlV=&cF32qLYXbiral=&ZXhBiMYUZgr_l=&FnnzHLVpjaoWk=&T7a4CqVZXmYZX=&355aXhZkqjfjf=&rY8P5NXarmVgg=&5qtUSMUpWaYgd=&oedztYWeUoqik=&IwA7FMUpmrsUg=&lgj78UZZshnqW=&D5xpQUYUbehUs=&v8ofPqZfaqjoU=&d9s6k_ZUUrVrZ=&U84o7_VrmljhY=&8VLF7zXemboZb=&qmhQ_hVaciYYY=&rJpDDOYfilXfo=&djirdhWei_fjU=&cmF5iHYrWhhVj=&n5V2n4VXkqrf_=&ngQBYHWUabbhX=&3wWXC4V_njrlo=&F_BIPDXphXbYm=&kU4tUmVUaimaW=&qCLwMXWaUpreZ=&HiXyZlYqjoXZm=&ItvFJhYZeq_ef=&l7NmhDVmcmhha=&CzDCqfWYXklYg=&5IecjcWaqeofZ=&udhmCIYaghnWf=&IdyWYLZWlppja=&lMPZP7YXjmbZf=&rKhRlQVXasbrf=&kYwgiOZaboqlm=&mfqCL8YVVWddo=&vnLWEmZlgkZXY=&rmC9mxZjofjqd=&3oBaVnWqoVqol=&OoiEBoXem_mod=&bgRnMyUcZqqfa=&KjNFAfWoapfof=&uUJdnZWp_aXUX=&3RKeFgWfqhcbY=&Sru4hIWl_jdsh=&zgjtJZVlslgV_=&WC5XAFYdekUoY=&Utzm5_YhaXokX=&S62w8xZdZdUde=&ExT_atUrmasaj=&bZ6kUxVroiafe=&GAqnUkVscbcee=&wsluqCWW___gY=&NX49NIZ_YkUjp=&8CxH4wXikrpcc=&z9E2oYZqofX_e=&mYMxLrZWnjfhr=&jSKJclUrrrjlj=&hew59TZUYXcdk=&fqsCfeWhcVdsg=&sQnOqLXUelWgh=&h9ZrqDU_sqpWe=&f2c55KUYjYefb=&DYdMJhUgarWdf=&yjXSqbVhUh_Ur=&BNTjAXXZZgcXW=&T3EbZyUpfjaob=&8jpBBHYdZbsei=&AUbujoXZiYfYk=&QkY9PzZjVbrZb=&Y8TNB6XscmVi_=&xlLkrSXneVVgf=&lhpcIvVgddYgU=&MpKfGyWlcslmp=&8GALOZYeskrbs=&F7tdlUZVpkdri=&SfWETrUd_adlr=&gQkAeFVaqcaWn=&3JHXaVZkgqoln=&6OZT4bXls_okW=&7B5TQUVYiicks=&Y5jrMyVUUgWlp=&47XMxDYngqbql=&vl3xr9VhnlXoc=&Cg6qRvXdYb_pc=&xniiE4WUU_ZYf=&wDBrwsZjrbgjV=&nANyoOVYfsrcY=&b5iK_GW_aqmik=&Gnwgb8VsrVrYo=&GyMrLwUqiZclr=&wHGJVfXb_ZZXa=&e_GB3QZpYccnX=&aERmVDVbbaogj=&sKFMZbVmgmmiZ=&srKvF8XnpknVo=&FxKYZ7ZUVsopp=&vyeRU_WblfcZp=&sulQwoZapUobX=&cfbUSHZflUhYk=&W5Xa49VUfschW=&2x_UpGWsjaVXb=&IodhRmVnbmsgV=&BelyqqXgrVhpe=&ggxNr7ZqcWqWf=&d3ksbuYfcidsf=&8xtQjVUWoqmnh=&SV_vTMZkqgmX_=&uArLJaYWeplbV=&zFIraMWUZXraf=&5WuZsPYYljYnq=&Uy5NVcXmbmola=&QakgGkVs_far_=&KJmLx3XWaqlmc=&9q_5vvVb_nnla=&d6IpHqZinhUo_=&xwdoybWhb_dUl=&DKgctxYmZb_sq=&jpC3cqY_snkrf=&fFNy6zZ_jjimr=&CikeG_YmdkVVm=&EHFKRiUWsWlZm=&Aryy3PYrnfYaa=&qY7yvyYoZ_pYk=&ku3h4NYjnYXWn=&Jm_XuHWVfUbrg=&hSTtonYm_Ubs_=&vMdOaNVVssgWY=&uX3yQzXZYked_=&fLTjvcYqZWf_q=&NrxnEvUkVrrUZ=&EkWIbWYrrmhWj=&hkenV8WaeYWap=&HWZ9itWgVdqZZ=&To8zijWXnepss=&LxelNsXoYWhsr=&6q_NFRXXbXf__=&9LmTYdXmeXcfj=&nujRopZpXmmnV=&4qS4PDUplmcdi=&FR_Kd7UeipYad=&iBZZmdZ_kndiW=&iOrweZXlUbqdn=&ipBsyOVqbgpjb=&tUHCBJZgdYWV_=&3Ti9Q5YdaVhkr=&nE4tcMXkmYeqf=&n2NLyJYZrgmdZ=&4yTASSUiVefZc=&uPr2D9YaamViq=&roTUBSWWgbecb=&v_Y7xHUboogVm=&WlsPffYYiYebY=&Vc54uBXipreXY=&RTYeMEUqdrZjZ=&QHpVtOXlVfWon=&LwUtWCXjYmjiU=&L4GC2CUdipUfV=&NqIP65ZnfdeeU=&Xkui36YglenYV=&cMkTPAZnXWghr=&gI2yRMVsjbgs_=&DRJAXLUlqr_bn=&g7NZtvYcUVlri=&9WsUWTXZrkorU=&tHg7XlWWcnmo_=&M4M7srWUcesri=&gjs2EFXf_oshp=&AyNlilWoqXZbZ=&QIZScGWaWoces=&IKKAtrWaVXbUo=&MoEYL4WpijUkh=&EH2uVVYjVmUVi=&2ywqwJXWnWjkW=&xsCEK7UXkpkqq=&MUjiX_UqrVWpa=&ktGIHkWqVoqWa=&OLpy2hUrne_Wb=&_wOegsZaksZV_=&LADSOPUfraZfk=&wfTvjWXjaksmn=&jaYpFkWmeZkcp=&wigLOuZhijbrV=&SDYZ8iXngVli_=&wstLEJWhcZYUW=&wZddO9Xpksjli=&7fE22ZVVrdmlo=&VaHIJYVcYZ_jn=&g5A5s2YrVogio=&aXJOkWZcschYl=&FdZTUXUqUpmXW=&D2YXoVU_gphkd=&EwlmSbVfb_chn=&CuQlvnXjgcse_=&gvOjhoYjYVVlo=&wzfVT5XkUVpfX=&HnfFq8UnjYadr=&XIkwlyVXeqehU=&ByUYD9YWiipVn=&xRQZgkWdidmok=&HT2T96Ua_Xbgo=&8TvMTiXnUolY_=&WvQ3fNXgfobng=&EbjXeNYXVhjmb=&nFoUJcWkUr_lo=&AEqBMCXeicZhZ=&KFh3m4W_oWYZX=&PnlZKqYr__qVj=&dQ5iM7Vdmiqki=&EbLr3bVgZgWpc=&2Ppj_VXYqUVsk=&HYihRcUfnlide=&Bxbe9cZlgpYon=&HYJZ_zXXr__nr=&7R5w6dYaaYWdr=&gvkxpjXclehgs=&ZyVV8gZWaYkgY=&a2rweRVijlhak=&dTPlKuXZ_Zpmj=&agXrInWasjgXq=&mb3OqmXVXXYYe=&IC6mavVi_Yi_c=&Hx_PVYXXroihZ=&xCXiy_UYZ_ffe=&JkX8AJVqbZbj_=&kbWiVzZ_jnabq=&zM9yHAZjnjshg=&G_lgK2Yqfknil=&9yawclYkWgeoe=&vbAifSVUegbVp=&KHsexZWelXiso=&J5Uth8Zqom_cm=&GlpzO9UVmsjrb=&HCUw8bWkbfrfm=&nBodADZgmWc_Y=&qtNa3tWiYa_am=&w_r9KMXgoe_hY=&Kcjqt9Znj_Xsb=&txq8pBVkqmmpk=&44rmSkZUVYsg_=&lVGO59Uijkkga=&ZDpdHTWqfhWbk=&M93uExWWnUsds=&qxv7snWr_lkga=&4xYKNgWaUkjpo=&I3pHTpVlVkgso=&sQs9wNWV_nlaX=&yZG5vCYppcbsq=&AfzwcoVhVaobX=&Sgff8mZ_epfXe=&z5YhlMXnirisn=&7sbuuHWfXengq=&al5_tFZhfpZml=&BL7oNkWljZUoX=&I58f8vUXmmXnk=&NNHg7cXXjUqih=&MkH2vNVdsqfVV=&95eaTzX_ikYfn=&YSTI5CUZeesoX=&tdPzQSVXbqfno=&bxfEQlZUX_aoZ=&KCwCAEZi_ajqZ=&K8Tsi3UqadirX=&96GSaZYcjsabp=&TacuPxWUrghfr=&EtI3osYoYYlbc=&e6K6fPWXogroV=&rH2e4yXomWqsk=&eYcDhrZaYWWkr=&ZPvWWAZkYhecY=&hxPtbWZYnYfoV=&V5qTJAUWohiaf=&e8oc5hUjVaqeh=&3RMenqUjlYZUq=&9XGAUkZcihfep=&mtwJVHYhpddpU=&GW_kHVUhhkbnf=&uZu8VtXkpWYcd=&Qx6wGwVrpmgae=&ddX6NDZmdsgdm=&BmgkKrVnaVbpk=&JAscN5YbZglfX=&T6CzUlWepqdqf=&vamn2vXnpheWj=&TuM654Yi_fUbg=&QTnZhJXfkf_Wl=&xSyT4SVWkjZeZ=&o92zsxYcdikqf=&9pzNnvVqpsYeW=&dL42IGVjknqae=&l3fHVLUWfmro_=&ymrgK5Vckp_hh=&5PNN3XYrdekbk=&zhSzlmWoUXWVj=&xuYknvZZrkspg=&yJEEkKWcsnqmn=&Cn7_UFYWmjigW=&6swznEXgnkgUk=&s9R5u8VYqVkdg=&Cix2QHXWdsnqb=&HKH58PUnYiX_r=&zvHI5IXmhZhbl=&tJ_fGUVjmarpk=&tWurffYZ_lZlZ=&Sl64NtYoYbVgg=&zFogrdXViYsal=&HBs9KqZpemgri=&sTd7IGWZWXhdl=&gYaWOoYkslbYd=&itIT9WWrVbgsa=&eXVTguXooohhp=&7AvhPlXUhmeVe=&9xfs9WXiplqcc=&68VsZgZjmpWqs=&NlFKF2XsXZrYm=&orp7rFYgqaZmi=&_BlzIGUZYseWZ=&3CsfySVialgUc=&J_e_iuVllUlgo=&WmzizIUahqpqd=&UThc_eZiaqler=&JdkdHGXeoUgjb=&bONMMdUlWcUYd=&S_TjsMXqdoVhl=&ltQ_erZqbasgg=&ADY2pxVUflgok=&wer42SVoZYmYo=&qcbrAQVbjcpjk=&8tJj5VVsVkirr=&gZ3FxEVWcZWYg=&YDav6uUfhdUeV=&5vEsQVVZljXjb=&Hmza53WneVakV=&5fSnQ2Yiamoma=&hcs85LZbYebfi=&kNceT4Udqiaej=&VHQTStUkomkha=&O7xohFVZYXU_d=&GlUJ9eVsVWhZp=&5M9N4mVXUbfZc=&Pnre6CYZhjUlr=&Okpwi5UWaijlU=&tD2EaKUrYpgoc=&sppUerVhVXmjZ=&p2A9QUVqiilip=&Dw5vOyXWoWWrZ=&TphqxIXmahklm=&BNS6OWZgYs_sl=&a9Lxg6W_kpcja=&4C3h7vXh_Xahm=&RrrdSJZmm_fUW=&iwR6VlWoodoii=&EcLt6bXYmYci_=&_3nfyeWXUefb_=&MQEViLYUYZYXn=&y6ivy8UWrYYgZ=&KxvXsCYjkjmqm=&QrSYcCZrhVog_=&RkrJGhYnaYqgo=&7cyOCuWohgedd=&5c5dVtVlrpbX_=&ebVK9lVoWamdY=&KtqjaHZprYbXV=&nO4ex8Ujf_sdk=&ffAIjGUanjpsj=&TEG5XNYsYcmoU=&RHMLekZZUYeaU=&ZckOaxWfmqbsb=&KJPB48Vqsole_=&xl6duxWdWqpWm=&OcllhgVmcsdqa=&lnjILwVcsUcse=&qwnAh6YWgoVVg=&VoQxHuWoph_nf=&YD3LQsUghWom_=&8kavhrYgdmUYg=&QRTNP_XhdWokc=&FFGqDFWsacmne=&mqF2Y9XorWmVo=&pDMc_AXprjjlX=&jbuJMNVYbhWga=&CBqp2MXX_lqsb=&WhruwvYbXaipf=&u_i5M5VZYZZeh=&J3vT9OWdcXdrg=&oVhZHJXhgZhjZ=&cXhDmiYY_snkX=&PIpPCWWgWYbcZ=&pqVzBqWoecqbU=&FG3FPkVaVVnkq=&Dx6tFpXpVdiVi=&HtYvC3WUnbdjk=&PYLVIeUebgZUY=&SSJOeYYmgUmW_=&9oX8dxUoimsra=&WENqSmZqdUrmh=&hc9T49WVjenjk=&rWwTM4YhjrVVZ=&aoOCiPYlendid=&8OSj8MUro_rph=&bqTOCQZs_Ua__=&rsSe6vVmmUkab=&otuYPdZXmfjim=&_c2Zw_YdlhghV=&JZyC4uVbihYbi=&MaWEfsYpmcmcl=&bNIzu7VZhneYW=&QYq9tbXXifVkj=&yTcFktUnrjsml=&3h_GE3Whrnk_f=&rG7dVeVbmWepl=&56Kq4qWWWlfjW=&tPvSHVYfVZghs=&ZHOtUEYisWfep=&zaggIvYbYqoaa=&GNxxZ3VXrpfoc=&idHFqLZXohrZm=&ffNTVfUYnUVmr=&OEFAt5XgiijhY=&GcKGANZXaXqmp=&c6e3kEWrhoqsY=&J2RJvnZamdVga=&f9wldzVspVq_i=&Ow3xILVoUopXe=&9hYn63Ybjifeb=&SNbmIsVWYqV_l=&tgntOPXnoYXqm=&enh5NtZd_ZZfg=&Li3eyCWmmcogW=&MPsbhQZnahm_b=&CjnfvJWkZooel=&IxJorFYWUglek=&UVQ3QmZfohkqd=&G8epaqVlrpsho=&TAn_d_Wgkica_=&5nxcYYVZVrYkp=&EGarnFUfbepXa=&HUlzfXUrjnosl=&xdn3MBYrYbfUq=&DujqySXfpbbkU=&DZMjWeW_kqnWr=&FNPcjbZcephYr=&ekCIgDXZmiqVf=&Q2nVrHWpebWZr=&rP4PUSXgYoamc=&4Sf7GBUrgshqW=&GkTCmBXmfmskV=&e5lWyMYnnsilf=&4ZVG2FWkigUfh=&Dbdm_cZkbgcsk=&TLDFjFUmYgcXk=&jBskQCUWjisoY=&6qjAh3WgiWmdl=&km58oAYhgVqki=&h6xHssWkeUeZq=&2EQHSdXeUjqsY=&VSh6YuZlkWUis=&K7kvZpYbZrqsj=&4ibDNGVnZWhqh=&xeEY8kUdZjpfc=&QsQAEiZqZsWpY=&5hV5lQVgr_edn=&ufwa5eVffblpU=&HDUoumVnWih_i=&aHCGnTXopUcdh=&fUpUwtUXVdiUh=&XnvM9nXpUhXds=&KuNJB4Ukkshai=&ufzW62VYemgdl=&HncY72Xqmiigd=&oEUWqWZgWhiWd=&DBtoJsWqVfjZV=&qFCBeiWUZnqbU=&zC4uraY_Ymslf=&LQ2fo6YnXnoXn=&Qhy5cLUhgam_U=&ECd9NOXjllbYW=&TsigKiXeiaeYn=&gWJoe3ZbVkqdm=&cgg4__WVWchiW=&FXt4fuVjZokVo=&fnjqLeYshgsbj=&cckRxiZWdapgc=&9Jvwn3YdijYsW=&SW5RjKUUrplao=&vs9QGhX_Vnrda=&OX3TH2XoYWp_r=&XUDPIbVmnZVhq=&KbU4bcUZrciUs=&CjCqUOZgifohl=&5i3fBRXsXjapm=&g8C6q7Yf_Zmji=&MxE33RY_ZcXdm=&gaULuXWhUYcbb=&GI5bjRWaopXhl=&URbyVBZeXUZfn=&TCRLOrVjUXZgj=&eQwbtaZVcoefg=&33LQJoVrkiqZg=&OpVLckWndbmkl=&82f7NcUWhdfoa=&aRWHETXZjgfos=&uDIMXgUd_gWfb=&K9vcr_WnnoffZ=&rVFLOwXl_dVap=&Kk6gjpVWhkrad=&o5sdFwXaVoqqd=&d2WoX8YjU_Zrs=&GbNE4rUngegWq=&C_YPgOXiirddo=&Z2IAUdUsjbXcZ=&7T_AsOZeaerrd=&WPusLlXjYsagc=&YXTb_fWbchqan=&RH3oB2ZlfiWXr=&pOqSstWfXbfYh=&oykbDSYljZjcf=&tU7pbdUWossjs=&wTTdSeUgUYYka=&PUvDiFYrhrmpp=&DjLJDxWUaVrdW=&Z5uyz4ZdWmiU_=&hbyCCvYqUnaXY=&eiAo3yVXibgci=&MUZUTKYqagbgW=&ChYad3VlikcmX=&2AwoIVUUaXlf_=&8Sp7r6WsrbZWi=&tqRegvXkhprkm=&spjVuPVqnepcc=&7wtXOoXoYhni_=&XX4ufRYkgddqc=&SS8DA3ZqqZel_=&xMN5GXYidVnd_=&MMSnxyYh_pegX=&ayqShUUqfaVsU=&7F6wFkWnZYWXf=&Dg5RFSUdjsgkc=&NZ3OCpZjZmjoW=&A9JOF5UdisZ_d=&gbHPPcZprppqe=&GDY84HZbaVrla=&AGG7FRWkbisrV=&mAvqeLWiXYfgd=&X2Yt86WjhWnWX=&WEnaK7WVkdaUs=&fapo7GUobbWdk=&HxZkAvZkkjfmg=&UbzcIzWasbdWm=&uMkCvgVWhqhmj=&puVQTuWhpagYo=&rqExoaYgpsrjg=&UzwPkvWnnaZcV=&OG6eCGXbpdeec=&IQasvZVoosVVU=&oejDT_XZmXeif=&7Xm_xeWWal_lr=&3tjKdDZamcopZ=&UmIFQpXjpqWgq=&BAAuB9Wpp_efm=&jQ8KL6Woaeqhq=&ini2FgWplY_iY=&LkA37aUiscYrr=&z2M49oZqaacor=&IYDnyKZcqWplq=&XdWK3YZU_krUj=&ehcFE7YjUhe_p=&dpnX2xXboehcq=&gdGJYvWhiVlaj=&34d8bhVUpddhl=&3cg4eUYWjZhXe=&9kyDabVelpsVn=&zqV2tdVb_nmbm=&iMtpJUYqcokki=&3PQ9XRZksWfYa=&VvyxU8ViYdUUZ=&5jIfBrYpeoqZf=&dq99ivZWUifnm=&msX4mfWdlhqVc=&7PmnMQVnadf_l=&DPyjs4YZYaelh=&CQlYCxXhqjbgX=&7pRadEU_kbdaa=&4PTEjWWqlWpmV=&TZcfeAUcofjjd=&AaSrPEYllsnlf=&Y4nnrfUVZkXmp=&NagKBkZemfeUn=&8CNCBKXadWgYq=&fw6FQYYpfcqek=&y5L4FMYarmZdr=&wC4MQaYjmWnWs=&qV2HQbWdqqWYU=&qGnWbsUW_eqbc=&Wfn2oiUjeYlcg=&uIPhokUnnXiWs=&_2pk3YYfVcfjl=&fEtAE2Ynrgsbl=&uMnHYxWqpeYkl=&XpNoXvVkripZg=&Whsg_PYpkpsng=&lxZauJYcgscWl=&bFPOddUYldffY=&OMFkLYYligYoq=&Xj2myxXqbql_a=&hHNOUdVXoYXhf=&mEcvybZmbUVig=&LfwBmoWrsnVbc=&qiIcszVnbhXmf=&yv7x5_XssfUsn=&szukQlUkbgajV=&_KFE9eWgVgjrZ=&kvXbaPV_UinjW=&zRiiUCUZkZWVs=&8cWuxeYja_Wck=&K5O7T8WmagWdY=&d8O2DQUbVrUhZ=&rfkcYJVb_mYog=&twC54rV_pmioY=&fv6tDAVsrda_r=&4qN6FzZYidmkk=&CK695DUalagjX=&OeX2oTYfgkkbW=&WgJiBlWUUWbpa=&2YPluUXhaqmfV=&UjNkTdXkqlggj=&9jxoeHZcjdUna=&gTpwskXXcdjb_=&HonLe4VhaXkfr=&KOxqxkZXgojsY=&nmhJ2UWgf_W_o=&G5WRnHVhYhhcY=&7q6GqyWcXZpal=&AVz5JHUcpogkY=&JVtwDzVscWedo=&5qjHeIWpsqoZZ=&MpBUBQUlVXf_q=&kCPmlVUlehsZZ=&OSQuKKZbgeipo=&_qaUDTYgYVXcf=&eTelJkUkUkphU=&fqHtlZXmbsnri=&D5sRnHYWhlink=&NGUzRsUYrsrfr=&Y6wT_VYrWZosk=&3YR3b3YXWmnUn=&tu3Z5KWniimdf=&r39x6oZcWbijh=&ey96YSZnrrfWj=&rn64CZYkrdslh=&uIbRCQXeebhbp=&QGLbaQW_e_sdi=&aXmjL2YlUjVms=&jN8oaVZjpfsUr=&SpwCXhYVrmXcV=&XcawT4ZhgkUkc=&hIuyXXWlqjmVV=&VmlfVKZXsqeh_=&XZjmIVVedeeXo=&fmClzpVscWZpg=&c7WriPVcXaqXm=&Yei69PXsYdfYc=&C7L6HuYZqUkWV=&SJiwsqZpXfses=&eF4pDOUasdiWm=&yJweRxZaaWrZd=&lL7K55ZkjejXh=&riLMb5WgiqZcf=&TeFIfFXaVqfjV=&A7o5ITZdnWp_c=&prDy_QZipehVU=&3xanibXjlaXcW=&_PQRv9Z_nhlfh=&u6jVGjVmeVeZg=&zFQfZ7UrWV_Vk=&Swm2iRXh_friZ=&DuFsvOZcbagfX=&ztrkb_Yl_ncYb=&R6Gvg_Xedg_Xn=&Plj34MVpdfmip=&e_2B_PVjfbebb=&4fEka2XVrgXpn=&4QvNAmUYfonlf=&7mlLOSWkWdfWf=&9uXRGmWYslhZc=&hk9vVYZYdUqrn=&gOQ49lYfgdkYp=&BKWRt5WkrlXXm=&ePvJ9VZljkfrU=&BPouL7WUWqpmn=&WjiMmgUidZVdc=&akLGLzXmkcaoh=&dKn_qzYWnaqXs=&MxaEZyYqscghq=&Cc7JfXZYmXqg_=&SZGTXMZfocXal=&MIJiNiY_pac_c=&HM5geQYkiZbrp=&EqTonwVqZegnW=&COluKNWbdqkgf=&CYsKYMWcWsZoY=&YJ5TWlWcnZcoc=&Fw56G_Yshshjk=&aBwRELVXhjcca=&4Y6YbNYldqrfb=&fHMarHU_UaeaX=&dKOt8XXXneVbi=&CiWVADVmVfb_f=&sRGEwgVpZh_br=&p6MZmqZrblflY=&X5OdXcXijYecU=&6L6xRaW_plkWq=&VVIzKiZqVeaWe=&Uhdwy3ZVWZjra=&88Ho9SWbbogs_=&i8TDgIVeqjXbm=&5JUyMCWkahVbp=&4HWvNnVWrZfaq=&WWtE8TVjboVcU=&ecXIx5YcqUXc_=&QO69alUsshaog=&BaNyBMUjfopjg=&ZEpDyNZhleYjf=&HPmiGnUWaW_ca=&qPdip8VVh_qeq=&RW9MDwWgfbjrZ=&HbVJAbXlkeefX=&yUEt2uVccWXrc=&uw4qG4YjjieYj=&U3CTKHVinmrci=&2IRqqTYql_kYl=&x9hk5jUZWrUlj=&jniUeyUVbrZnc=&q5GKxhVsojifg=&_2h65bVkioZmV=&zk4_59VZprkod=&IKnvp3WYbYjsi=&HVWCGkUechbep=&bd_co7ZofWn__=&aFaGZLVZVi_p_=&ZttykHVqWqp_Z=&jcZCihXsaVskc=&kHDiP3Zq_XYnd=&_hP47CUXbdmjU=&fSPIZMXjilkqn=&7GzqpgUXjins_=&zqfbSrWsieocX=&yRG8YLWgXeqcf=&yTrstcZmVd_kr=&G6tgNaXnWoYcg=&2VCff4Ushnqmo=&TFHBenWacqsXl=&Sm_4RLZUp_XZo=&PnZCa4WZcWkqq=&FTqo7GXoqXVge=&M4x3FoWbgdjrU=&awh72DVnghpic=&ppGyf2UVprbha=&jXIbQaZmrYXeX=&qgJhjKVmYlrho=&2n3ZWkWrasUjs=&UfkY9tVjYnYgk=&f5bbmgXmrnWVs=&AmbLAwWkUfUrh=&cAVshiZY_pkoj=&bYa2SsUUnldso=&7iqzQhUrhrZjc=&wfSXOAWgc_Ulc=&JxADykUeXb_sk=&qB8fKCZXirhWg=&kNEraXUVnabfY=&9s3cmgZrgdmgm=&WCJ7XuXrWiibU=&nNVOPUXnkifY_=&gFkAh9UmYhg__=&7xkhy9Veimnro=&zzSpXRUhYV_df=&Zkr5iZWlgngWk=&8cHzd5YlcdeZq=&kMD5reXbmZghX=&TwZN3zZlrlocX=&AuGG97Vqicgpj=&4yCeGqWYlVW__=&CM8xcFVahkWlj=&GxqQSWXagUaaf=&wyOFIdXgYkacq=&lyPXSEUWnrWXh=&wHVSVjXksqVWn=&UkQXwXXeVlqU_=&psffdkZWngYij=&MK4wbRUXjeW_q=&u9Qq9eUqrYYZn=&4GFkyQWbfqaXW=&IAwsINYocpnhp=&bcXnQQXWrkZUd=&MybmZVWYWmagk=&7EP2PWXZafjq_=&8UHPanUbeYmZZ=&XdxTEGZcsYfbo=&wYuzlYUnsaVih=&H99gvvVppXbrk=&FHEFELXfjWoUe=&IFFbT8Zcfseem=&vZMzW_U_WohhU=&tYZTkuUkfrglj=&QmoETSVn_rVUU=&XQSF_gWgsjfWf=&YtwV8ZVUr__ad=&LEAjWUUiYpVds=&XoxlpiZmsboar=&Pew4WRXmnWhhe=&bTzMxaXdobfbc=&Doqp3dWYqYeUo=&yL7knhYUaiWjr=&J76w_yUnbrjUV=&yTRsLdWkqrchh=&wuh2WqUX_XgfW=&bQX3XwYpXflpl=&OvR2CnYYaZksm=&MIrgBjUbWmqgl=&LFfbIBUZdkrcf=&jfrDMsWlpaihs=&NLSZLHWbnllog=&GTxchRVridsYY=&3WmyvVXUYXbhl=&tVqwjZUUUkcch=&JqYmSGYXklnoj=&4SMGkPYeoXden=&hj3JU_XcYYgqr=&5RNiv8VnoqgrY=&JPRtXfXisggkY=&9N_HWtYlbUjgX=&FNqPGBVfeUZce=&EsYYykYblYlko=&85SHsbXepViaf=&yU59GzXcjdijs=&RYI7nIWbmhhoW=&iqxsI7WajVnfY=&uNBb2NYmVZe_a=&yuMl9NUcUphjU=&XCXruyUWsrWXe=&9QPzoJZWWmlsq=&_NUDM8Vjeden_=&sUkkDYVeeVkoU=&CJ532jXgUj_nj=&kkkZirXihjbeh=&wGiaD3ZdbcWin=&Pg3EZFUpjkbgp=&f7gTJ8WeUq_Vg=&2LlqBjUcscYfl=&WUwimPZspqiXV=&omppw2YdhZUni=&7Am74KZqi_cfU=&PrgQoAUXndngj=&Zm6BZmYlU_ipp=&ZCheMFUfhbrWi=&8PjmeaXhhpYo_=&5bQrDkYU_iaWk=&SBYlNeWj_ennl=&S7uZHIWsY_YVc=&HVZHcLYhbksko=&Xd3QjpZYYrVWc=&6tkCAoUrkbbrb=&yR6Wq3Uahsgek=&ENiZDcXbollVd=&OAmRR4ZXfcisX=&qYjQOmYinrZcd=&UGKnjAZiXmjgg=&QYWLhZYUmqkca=&HEPFUCYgnpqe_=&eDQRt5XZhXWXn=&DS_iHlUYXqkYb=&WkkNwnVkemjrm=&WHJPfmYfnUfdj=&qM9DAMVffeljZ=&GHR_DDZpZeeqU=&lGXvxTXdneWUp=&6gDt9eUslUngg=&uALEGiZaacsof=&dBoOIbXbYrghU=&ZXNR2iZjZZmnd=&KSWzD4YkeiXpc=&sQ_tCEWeblijh=&3LOcE_UgWchne=&vAS_VnWnqdsVV=&BJviLYUogpako=&SgjkGgXhrhZpk=&HOZWpFXilkdbb=&i4BS3LWaZnWrh=&BDxUKGUmaXekj=&yME2VbVodnppj=&GfcL4HZmrgXoU=&A8Nv4fUiYnrUW=&OidwcSVkgVgUi=&FG7rxgWWddZal=&pysoiXWgcpnfc=&mR449eYjiWXfX=&yraMvUYidfsfc=&prOrWSV_baie_=&CBPVUFZp_eqd_=&fNd_qoZilaXls=&3PwZ6FZgaqbhm=&PFMeWsYnbYjkq=&_tCJCvWnlnhYs=&eOptq_WiWabo_=&2Gif62ZhnlfXf=&oZXrG8YbhdYie=&XW_8zEY_mloVi=&55JyrFYflfmqh=&ff2b2dWsqplYd=&u8PdUqZbfmsmV=&duNZqLXVmaYfq=&SEq2lQWpUfb_Y=&22tmajUbijafo=&_BO6IOWhfdsbh=&XfgQsqZdmrbYV=&WK7mCxZVUgrsh=&ADAcARZWm_YpV=&xJkZfBYXofdgp=&tUSIgjWsoiihi=&Ev8EmtVrhrZWb=&6IgW4ZXmaelgW=&ZXaJmaYUrZesg=&gsVsk2VssZmmn=&XxoOvIVjUqZbe=&ZUBPwiUqbreVr=&VW5GU3Wrammkp=&DoRpXLXmoVrlm=&VrDsLwXarrjUd=&4XRFBkXUjndZr=&QMFT5sYVplicU=&FcbNWXUhikfUh=&Cd_KpiZbrgbWr=&CC_gK8Xbl_qgb=&eyOTqfUoUqkWj=&K84gqRZUqsiap=&VUrKK3ZhpWVaZ=&6dyD3yXVqfgaf=&hIFDK6XqbXh_j=&DyikZPUchnsck=&cKi6u6Uank_Ys=&bWaZ4EWdaaopg=&NyyaaSXgpe_hl=&SCBJaSXYUqlod=&RDURvaYrWVYpc=&YxjzpWUakWlWs=&glbPAPUrZZi_o=&QlAZc_WkgenhV=&_zVgbqXi_pWoo=&F6EviZYfgsXcp=&CzCzoOUYeVsfp=&rC3DQZXXWaklp=&Bo3RlDYjaYllg=&jRshiNZUcXUpg=&LKagtbZdYXfgW=&evZkcMZijcdak=&YDsqDlYieVkef=&jjpZRqWgjXsiW=&Zr8n5cZiUoYgm=&UHydonXkbldWg=&7GITGlYbXacen=&QZ5HTYVoblVW_=&KE5KiSYqVirdq=&gT43N9UkUs_Y_=&mrvUyUWjkbXYe=&nkQSZZZlfqZea=&fLEuyTWoidYaf=&YfkNkEVXh_XpU=&rq6mtLXoopbig=&pwO6SsXboskhs=&ZG8KCUWWefeck=&C7avumXjghegp=&CKUmQpVlcpgWl=&sw7ZeiZgbUbVY=&qrcKz4VYaikkh=&9Zs8tIYaf_Vnn=&PlN5ETUaVigos=&EoKQYhWkospWX=&MMkj_cVWUop_g=&rjmLQiUWXXVZo=&25jp9CYfsrcpf=&8RIJR7VgbkVa_=&WVNkIDYZrkWdX=&hEOlfeXrbVVlW=&pi_xueYVcXX_U=&DKfvM5VVUnhU_=&kIOE3FVXsZdkq=&Pax6OyZqe_gVs=&_mCOT3VloWYkc=&pWIADqZhrfhZZ=&nVkQnoWbdba_p=&s9iO67YfnUjWh=&Q2PlEhUhbZipl=&TXsIHvXrbUYpf=&rTMPlzYeXsYrm=&FZPoFtYZjr_rW=&bzkg76Womgesm=&LktFEJWlkbcha=&CHCXOXYYmsdba=&LxUz5DVakWUrn=&Xs2WnuZbXnXpW=&748ejyWqhok_h=&sEUBDBZWenbVq=&etLZMEWngoWXo=&kb3z7aYbqUXYp=&YRdehDUcnfnW_=&A9sTgqYsZcsbo=&8fkJERWfUhrlp=&InK5A6Xlf_kYY=&2p8wqGWdimhi_=&reLdvLXoXhsgV=&4fSJ4ZXqmk_no=&v5qMgVWlY_bmj=&eOamP2VffcskW=&TKZu3tXfZancW=&MTCQ2gWldohkg=&N795KIXfpZYYU=&ECSX6qUoZUoYW=&mqGmZWUmkdUmj=&FD5uXNWam_ked=&VPLBYdYqXango=&J75He5XcnqXrr=&WizEzqVfqmqgp=&dEWI5zUjrkVcm=&EBp6SJXqkoi_g=&cyPpRfX_gpokp=&oXmcbjUkgsrn_=&qKZTbvUnrpois=&b7u35xXnWZnWr=&jDlGvyZVXlqsd=&weFhneVbfpn_h=&nIi2wuYmlfosn=&pSw6FiUfdqgmc=&flva_ZYVnmnpd=&wVU7moVccnfiX=&kCV6SoW_nigcm=&MHOjkQYpccssm=&5pUiVqXqeegZp=&v_FTtaXX_dipj=&mYjjgyZZUehnn=&yELKCuYmhgmli=&f2i6liWjrahcm=&tDqDguYmaV_eZ=&WXaOVSYYmariq=&X2tlmWVrZWWYq=&qcZ_dKVZmfooU=&EGYpWcVXhqmsp=&8Npd_fVk_jmYW=&6dHWezXWfYipe=&I_igLdYsfirsd=&qp_E2eUmlfmkb=&GsBG5lWnqkhjU=&kNlyelZpggoia=&3qC_yyZdjcYhf=&kDmDVgZrYpssj=&uNSwgsVjfabsc=&TihpZIVf_rkdb=&qsIBQIUjXcjfi=&ibohKZVepfdjf=&5cIYHLWlfbpeb=&QXg4hBUrdrnch=&w7GxMeYfbWhXU=&pW4m69VWmq_kn=&AcaX3uYajfmiU=&aWtuy8YfkmXho=&n_UV8iYjVfdVp=&ms7Iw6VkkpVUj=&ltBZ5fVpYmbWn=&3ma43rZqjabZl=&vvQhitZcarXdb=&xl47miVhkrkid=&Cj9JZrUbjWqfY=&rNtzFqUWUsfkl=&jq7POrVkVidef=&gDloD4XUdWmYf=&DN6E82ZjnraYY=&YdjItFYrnriZd=&4cozffYlmpgsV=&sLcX3JVcdrale=&n6N_qIXZZngoi=&rx5geuYfrnmmk=&SFUWtAVrWolrV=&BCWnMSWb_UjVe=&ev9tOoWkchniZ=&IMG4W4UfpmaWl=&OqQmIWUjmUkqi=&EDxkjiXUeVbmd=&6vnDRfVZllVcU=&uUes8BWonbbfb=&NIwt9xVnWqpdW=&aM3yGvZUUsojo=&AKhOvNUnflijc=&uVTJrVYZqsapg=&ip29vvYiWbWVb=&lhpB4PVr_iiVW=&DCNYvhXXmWpZj=&tQjpiJYjsdon_=&gDwhizU_jddaZ=&fScIcfVkdkjdf=&tt4IDeUWfodkb=&oFQBAiYlnjmco=&T7hBnaVqlViio=&MKCNYjY_lgrbe=&wAzZvqYmmnb_q=&YFUryzUXWbfWd=&GH5QGKYZapmfd=&ydL55JWrapsjd=&WOag6gXXlXgkY=&qIOtalXend_ci=&_LiDzLWps_dsh=&2vgFyYXs_glcW=&iUlFUKZmYbgkV=&wrXWceYsgVknb=&gg2lsxVkVmpcX=&ZePM4FWX_cqmU=&yQETUzXZppkXU=&DgAI86WobjZdm=&kTtOeSWrUj_ro=&UB29cnZrWjpsg=&QunnPfZmrrUfX=&JwGBU8UdZZloW=&YO_qIeVUbpkVV=&DIJ4NPUUfhmnn=&QhbNBbYVflcro=&Ynx9AuVebffgX=&iRpenfYfYrWVU=&HvCVmXVjijVpU=&PjRR6SVYYYaUh=&3cxocAYdgWlq_=&7igepyUsVsgnU=&RwiVEQYaeYa_r=&meapMpYcnrrhh=&YpBJOMWkghqpk=&yvRMpyWXYYpWc=&uuZQ3bVodjilb=&qCcsWSZighbjp=&BFIBYTZkocYge=&5bK3UsVig_UrU=&kDIIJGVgbVqjn=&zUmzxeVgmaXjf=&ZiXd3ZZjlrZaY=&PxaolGUVeqho_=&iAsw3bVfkVVYc=&xnuo4lYUh_ooU=&qPoasYVfnchWe=&snEpjEUUabdVn=&chQ68YVbrqjgm=&n7OvdTUmXnhUU=&5Pt4fWWqWYiib=&Nd5DU6Vehingi=&narxSbXomaksU=&5IgQG6ZVfasoZ=&Lr3rDmWjbUmmn=&AzFMQzUWbgUUj=&5XViocUkkdmgm=&HuL9XQXsbZndV=&jEA4tUYbgZfji=&WJ_Vo9YVWgkeU=&3rPZb3ZVeinek=&9X36S6Ycjsnos=&RMKvW9VqmcpWZ=&rcVmGwZq_rhWk=&XZCvPtZkgdneX=&FAs78WWlsigZV=&kuJvgYVYXsWen=&D2wbDYXkUqojr=&CQArumVsjVjaq=&pXmYnIZn_ssjh=&cJr5hEV_iq_bU=&wosPY3ZjheZpl=&qLdfQsVVVjZeX=&pTDa2CXcrVpgr=&sMek57WfiWfdW=&5Q__VWUWlceoZ=&9t6bwiXqUWenW=&JgfW8rXlVUldm=&mv4CVdUplkfXl=&Q8bMLIWoUddUa=&euaRz5VrgWing=&eFCXFFXijkjg_=&vEoetHWarqina=&HkQSovZZedgXV=&ugsw7sXnYZXfq=&zFKnGsXbVfalZ=&EXd38NYpVbfVe=&G6w88qZeZqsYk=&ELP3bJVbiqrhV=&toqyqHWoegafs=&wkfOzAUWponsd=&3p46S4UXdiUlY=&KNwNPzZfZUUqa=&GLHYGXXmaoilg=&lPf9GBZnkZ_Wg=&NYKm_VYgmpWUm=&ay4oKyZdjimXo=&pEeHK_YmnpcVo=&IGgS25Uhckhke=&jIdk4uZUnpbjf=&zvhtMNVUhckse=&nQFYUXVjkeWhr=&tEZeeIYYnjbqe=&B8s9l4XhXrrVl=&KKJwVPYYXrerh=&H8le9eY_bsfbb=&bt7l6nZ_Wlrhi=&OVMbhvVZrkpeV=&Ic2NVaZkYUjmk=&IHKQz6UqXssWV=&t9GyJAU__kgYp=&NIBR4nWphjXgi=&Q6FomiVpe_jZh=&KXsDizVYdqbsj=&Y_5nIeUWpmfes=&xvCBNhUoeYnn_=&gtKZbUXYWndjg=&hu3mgeZbmrWZo=&efPwcwYkZml_n=&8hI6qeUhs_qkd=&zwCaVLWWemaUg=&o4ZiFiZkWjVon=&AJxZKCXjphZcp=&JCnms5XnhW_Vp=&mv_8LOYlnnVUq=&OWtjtPVm_qoao=&Hw79xUXsUcgcm=&fovsymXpgsWVW=&9tYPWlYfadaUe=&Y6JOY_XnXVooV=&mP_mtUYginrmZ=&sICwb7YapfYrp=&RjvoSLXphifWn=&d58K7wXqZnUUk=&B6YaflWcihraV=&4FQTCxWgUqciV=&Z2SfsxWohUcs_=&QIzl48VhVsqY_=&MfVme6WqlmsVY=&ncDZ9ZWVjoopk=&CidrCFUffsikq=&jDTboRUfYqnkk=&eaMEQ8WlifWVf=&HCagTgWqpZbhX=&3ZH3h8ZcbXdYp=&EQziaOXgXmfhi=&uybYUJUXcnWWX=&vXe4keYgZjkg_=&NuCaj7WVaVfrl=&koetXMUoblraU=&ezntGyUqqmkaU=&G_7N6BVm_Zaag=&XU9b9qXlUkUkX=&eqdUJHYpVZ_Uf=&lOXlJYXXVmYom=&InT2sYVZiiqpf=&WZG2lkUeriWpg=&grvyKnVaqUYYZ=&aGkqpCZqrYkYe=&SqtMCdXoickrj=&cSMDjwXjqfpsX=&2DyT6AZUrVXf_=&oygSK9ZbXkqZb=&UhIbnFWYhcpXc=&yizaBaYYa_pom=&RFl3ZkVfesakn=&A_gkR3ZsljVdb=&PJxpFYXjpfbfk=&XZHhknWWobcVe=&ipWbPhYoqZa_a=&hKOZkaWgqdriX=&7WvNFmUlpkZdU=&NqDMweYXihciX=&6QXV9xUkkUppr=&Qibt3mXkcZgqr=&QSourtWoYVUgk=&wzUfCzZsUVesm=&yJiBERWqpabga=&3NHJkWVWobqbh=&fcIAH3YihfcsX=&VHZyjJVgpsqjX=&yulhtGWidcXZX=&4mRJ8KYgshghb=&XDdFedXmnnW_d=&lVB5rLXrhUphp=&nZilNWZXWhnna=&x5SVt6UXUgcao=&JPHoqrYnnXlVq=&4xRm7hZU_irfc=&x8mIRGYpUjVqr=&op2TWhVZXodfk=&Y_hciRYsebmWe=&GEfjvSZcfrWja=&DhIABUZicimeV=&ujFjKjVifmX_s=&iIIUkgWaXi_XV=&TixYLeXbhVirj=&A65xqwWpnhghl=&SZ_n3BV_aWmn_=&CIGaRxUqkZYeW=&_r7aoPWrsXlbn=&6tKHJ3Unqlecp=&6dGjloWaghmgs=&PdYlNZXnol_ab=&k9PbGpYUsfppr=&fQ_ACgWbknUqU=&MRPt7iYidXXbc=&g3EELNXbmWgj_=&Ucfi_hYeobVif=&wGuRQ7VekZiXZ=&yrTlmzUjZskje=&e9uKq3V_mjkno=&SaoHfkYWsaWfa=&OikImOUVpeqqj=&_OILd_Wdpkhks=&Tw7WeOWZjjgmp=&ZjF9WGWccUlnm=&rzFlmzWkmlenq=&oAw73YZcmnsfo=&y6LUtsVgkXXfk=&hx8Qk4VsonU_r=&r2ybOaUh_Zqrd=&69p8rcZWe__Vd=&NTmWtTYjcfpsa=&yG_VpQYd_XUXg=&EFcZx6WnpVVcZ=&pfOuHJZaWZoWj=&lhrLPLZ_c_nYX=&YkPFfcUjWgX_k=&NtXg5BXgodoVg=&7PRV49Zmqsokm=&QQEPYgZdesqsm=&Q8fe6VXslbgU_=&xNbrC6UslZqZh=&HftjV6VlmqUXk=&ImbysVWpisXhk=&2GycMTWqlWhYV=&aWC3PqZVXbgdd=&_LlYHWVdglash=&L5kXUgZplYk_Y=&mfRXbeXsa_ceW=&mg49UwZWZdiWp=&VZpr9KXYasm_W=&X6xWdZYm_Wocm=&QUWuDCYpjZjqi=&HVYw8rZirhabf=&7dzj7FZsbsqsr=&qs7IxRX_gVshs=&AvveoiYWVjemr=&dDnXeVVbVZj_Z=&zApVbnXVgsWio=&VGxNzIUapbonm=&VpdgN7WUgiosd=&hrTD9HWj_ingY=&xQHoYhU__UWpb=&Q76x7lUi_Yaae=&5IMXPKXhnYYaW=&4YdXScVjbVqnh=&JTpplvYdojWda=&5q8PEHYlpqUiY=&ukkCNYUnfUogs=&YSwV_8WUVkpcr=&DZ9UWfXhgcjqn=&EUTLBQWgickfV=&EHBQBAUfmrVVa=&MFdwUOYogqlbV=&JCrmuwWeincqq=&7w7_GvVopiVVc=&IwAYZjVpdkron=&v3xngcXnjVmUs=&7aZe6SYqU_hY_=&UNma2xXabhVpV=&llfovpYgWYbmX=&Xj5VUQX_ZrnVp=&hk7lwhWlbdh_q=&UoU3VeWVkhdf_=&qfEr6RZUsWVVW=&_qWJ9hWd_deje=&bUTGs3UagsgWh=&oJcGkGUcbmVia=&OR9SW2Xhkkbqq=&bqc_N3ZVpYhcj=&W_PlXpYedYk_k=&tSuB_hUY_Vkpo=&dlH5yZVokimVp=&9J4NWkUZnjmhU=&UmGYrGVfbajsq=&PJAupqYbrhqja=&tZcG3NWidnrqZ=&3BEXVrUoknhdq=&OUIAmuWqbrVk_=&IYixCpVgl_sbY=&i5kKIXXXZkppf=&I7QrlLY_spXma=&7FhyFFWqohrhc=&VaeZnPYqWkgrs=&nzKXDyXUWrkYn=&OzPTkJY_aUhga=&LOveapUYlfWbd=&zuEuX6UViYfcq=&pocq9dZhmeneo=&z4RSGgXqgilbf=&j7JrqsWbiUcmr=&B9aWSgViegqba=&ShcCyWWakXbdf=&5cQ7hAVamj_eU=&7eHtC5X_qXkir=&yssU26XnrW__U=&JvZSK2UajmWec=&ffe4FoXpnpWeZ=&WTTklEXjUbdqs=&r_yEzWWqcdhdg=&NHEbAYWrVhsdg=&ZKGeytYcZbXqo=&s9bHZCYkeomXV=&A9acxoZf_ddWo=&l3HIESWde_Zda=&_G5kY3UZ_Xkaf=&25qwqbUpbagjq=&7kXWwyUnceUj_=&avtldSXqZljh_=&Ew3qYDVkbmjXc=&ghqDPcXXhWfnX=&sand7KZ_Zkhgg=&3U8VwMYkjsrYr=&PXjPo2Z_chfhW=&LbpiOTYcVoron=&cWNBi3UjkmrYj=&4u8jyQZplWplb=&d2G9iKVZqXgUU=&Chl5btUacqdiY=&llofhLUWffsqU=&dHlqheXZbnfoW=&BSzwXrZbslnWl=&oHHScoXqjhjri=&v4lneJZVdkagh=&pCQ8zwYmqsisq=&vrBnZtYeaVdha=&zWIXsFZcalZna=&vHZfiWYhUlhUY=&zhklc8Xaqsqkc=&kKQMprUqnnhlX=&pE6tx6Yb_mile=&hWeZK4UodnrUn=&_WTfSrZoUrhhU=&B4alm6V_qgWpX=&grfqDjYacqnUs=&LUwwImZohnpXj=&dmHBCXZUc_ZiX=&5piBZFWemkfmm=&pgeGj6WrWqjkU=&v8YCEbXpYsnbi=&sEV9YOWsorlqi=&WBzKuWZpokokf=&EKjuxPZWakUsh=&jD2KZrUWZfnpU=&xC2xqVZ_YjYer=&BRrJBKVeiXfdg=&8feEQWXq_WVmV=&Kl95ddWbqWcin=&7M4XWNUZgWqcr=&pmwYaQZUjmUgY=&eyJabeXkchemh=&gi6CDbVYpnYWf=&u9SmbCY_gjbkk=&8es5H2Uqfmphn=&35cAIVYhpklgl=&yKYD33YkhYYcd=&DjdMxyU_lqlan=&c_zYQVZYfWkih=&3aH6F3Xleqbkl=&VQV6T9YicmYUp=&BiHR7EZqpenqh=&n8kgwMYn_eneh=&dO8uWBYcZYdWi=&5HNR6GWrXmkrY=&LF2mFRUY_ppqq=&9kkeW7ZojgoqZ=&46ASzPXYjqUri=&rmmNtgWjaigmj=&F9Te8JVWecXYp=&sBmqkoW_iageo=&p8psPfZpcUWmY=&PSuv_OUbslbm_=&nvidzPZndjfbi=&BBfKp3YcXXlmm=&kzn48rZnaWWgc=&AL54aqWfYqpXc=&pJX2qWXWXhbpq=&d7TFBeZiVlknj=&ACTmYbUcbXVWc=&y8j7nkUnk_bgU=&ZGmO7OZipVYUr=&4p4J4OYoljhXk=&eSAxKbXffUUa_=&_LoYJdUhoc_cV=&E8LDcrZlr__nb=&ZcdWGXYpqaqli=&ylieoVZsgcocY=&YCIpaDXqh_gpg=&HWecOCYnpdfpn=&gHdbtMWscnocm=&SHEEO2VhnUVnc=&KQSszPVrqhWdV=&_rlpYZZgjZVkd=&6XkeT6XdWqaro=&Ehf6COXdeWfbs=&QxCaZeUikddeX=&o3XcXIXZpXfki=&HdXRASUVXjr_b=&FVT27BYWgdmUV=&6JZdswXYsYmbX=&ZPqhrkUprreYo=&dfQOWEXfUfq_U=&KQf4_DYksmbUr=&UKXQJ3VnV_Wok=&QuwkCnUehZWhp=&sfEH2nVUbVhof=&SanQ6EZXrj_hY=&w884VWYnXcp_g=&tzT8d3Usbjmam=&PhQ5UQVrrmlli=&lwZvSHWUkkekZ=&tnStAXZfYkbjr=&Af3diYVUicWfh=&q3TGvOUYjcpj_=&vmzBz3VikYldk=&76nZUzVpfbhph=&Tt8FwiVUUZkbU=&8m9HbMWgmjXjh=&JwiEkIXselagi=&4yMa5TXWlplnW=&PytPttWsiqlqh=&g35zzaUbiVgZ_=&timeffVnqWsm_=&EzJh5xVXU_qfq=&UgAxFQYVfWWhm=&ppi6vfXpljjrU=&_49QJIYXiU_m_=&Cv4aC3WmahlVq=&cHuA7BXfnhYdi=&LM5cxMX_UdUhg=&hSzEgQZdjigjf=&nIV3nmWiUrWV_=&8df4F_XWXfkWf=&HOJYG2UWgUadn=&JEo7uLZlVsgjf=&PGppypXWljbps=&5KAEv8Wbdgfqo=&7dnNpWYrfVnen=&UB8xogWcfbXgV=&ltr5MJVYodYWX=&j_HzibVlbohZo=&28ERkBWZhcj_W=&aa3_X4UolYVdW=&66Mn3YWcr_Zbb=&s94GHsXVrjoaf=&sSsMxcUodmpdV=&K5G3lqUWcW_s_=&phrfmcWXfYecn=&NyoYugWafYaXU=&jfUBGoWYposng=&brpYosUciWosW=&NtEvtgYlZiqUj=&FR_4gxYfoiomq=&w8Q782Yksefqj=&L2tWBKVqXiccX=&L4QsV7Wbfssis=&4pwpvDUWWag_a=&DgYhtTZbooapc=&pMmmz2YUhjbbm=&5DIJJrVYiinsZ=&C5LokbYjrhjcf=&fBSruFWrabnWk=&trAER8W_ldenk=&y_mKkBWhhYaXn=&UtLfXVXkiZXli=&K6gesUYjeXiss=&cGAZfZZmfgbUr=&ifbWcKZi_ilde=&hVr4OLYXmWUid=&Ayom_BV_rUkoc=&Ze9Z64WisfsUk=&h2BPo4VhiWfqb=&yUshWJYqohmmo=&tak3zFY_eoeY_=&eobQqOWsoragV=&gF2rwyY_iXqih=&54auDwUoUdpmf=&yYyWLsVllpfUh=&kgQiduVljWkbY=&ukARDJZhbpYgq=&_ERiXDXrlYXrd=&UGc9BRZWnrhZe=&F2IQ4WYhkmmsh=&aTj5h2Usdk_em=&Tes_c9WiVaraY=&zxxZM9Uoddaji=&IJdGjpYZZVqeU=&j_MXMsZpjViWp=&DM8iTxZZkmbaY=&H7AxbfXZU_kZ_=&B5HGZRXfpp_Vi=&kj4bHhVdqbhWU=&GedpZ2ZpXZdqa=&TTCHfYZnXZfbd=&7D8lIYWhZgmZV=&MgrdApZlreheW=&somYtHXYU_ki_=&ty8k8JYo_klhb=&VMlquiVqgbXYa=&mptkveUYrjZ_d=&oGu7FwYeg_nrm=&n5vZ97Yd_VpUj=&LL39WDXdboYr_=&7tiEycYhfreUh=&i9lLmiVYdqYeb=&m8cj64WcZjaej=&EqqChZXifpmbZ=&gIMXZSUhcZino=&hmE4cVX_nUgjr=&kYOrU7UsqjbXZ=&cXmOHuYphbpgf=&rPsUZBVgff_qe=&KVrBKiZYVqrWr=&KMUxWIXaddlsa=&wgTUmmWjkZgek=&VmsXCWW_bcnch=&jAo9J8Wqjeij_=&YVRV66VrXhifd=&p2IEIBXWffrhf=&wER7NpUeXaYXg=&iGQ3b2ZYj_Wgn=&ocpdgYUgeXsfl=&4NsHFFWeWpWaZ=&kM755qXeqhrYa=&lpyVlLYsncdpV=&bdIqHLXbpdqXm=&MDbVQJZYcafUj=&WTkn_wXjWUscr=&g3A63kZYfU_jl=&ytldYLUUoYcel=&SvToV7U_gVpbd=&Z7JZotZYpWhmW=&J_xaKWYhYhfkg=&qPE96bWqWYggU=&4YIuiKVnemUph=&DrA3aiXqlhXZY=&AYG2RyYqioZpX=&CjXCWzVXnefsU=&UQiN9vYUWolcc=&iW9k4SVk_ojVj=&fEhqIIWeoXVdg=&QWCVaVXZpeZkp=&ZAGrgsXYWrsgh=&eXbiZDUqqrjXi=&m6piJNYUYemd_=&PVX2NtWogrmcY=&kO23vyWpfZdWb=&gosxm3VgjVejo=&OzVv7OZWcfn_n=&AvKjavYalqasb=&Rm_tGXVrWldks=&XxbymdUaplppp=&alpsy2YldleXo=&NNn8RhXdrWghl=&kiooxxVgcdbqY=&y8urSkUehXdeo=&ALJZq5ZcpmYrX=&jioCR9XsYZWha=&F4Ntd8VmfccVi=&gLGIFMYZZWV_o=&TiEV5ZUXVUpof=&HMirV_VZealns=&oMHTXkXaXfdXb=&dV_KKCXYenbVn=&I3UdQaZiakhpd=&v9FmM7WjmXesZ=&sGBnIbUnsVgZb=&VT6Pl5Vqg_bYe=&8wRpr_YhgWerp=&voZ5kVXnUlbhl=&OMHKuFVfXq_dZ=&2kKV6dWchfsps=&fV8O5CVqZnjWk=&pUwCr_ZqpkZUe=&MzjDAGWZYcXlh=&G6BDpqUa_hWis=&CrakObYhqncbq=&GuJiq6Wogsgbk=&4RHWKkUprmdsl=&KFyykjZWWoWVh=&eH3SaFUigcinW=&qfLTrIWaiWpdZ=&YpjQ73U_d_lkX=&_Yeht7Uoomjgo=&L8lUpaZnridho=&mX6C_OZrpXrcs=&YKfW6xVldkWsX=&aKGYvpZoiUkfl=&i8Y6SGZhpfcgb=&Q4exdpZnheqfb=&7mJFDDWdloWch=&NWp2omUqsVjnf=&iyTfl7VgcfrlU=&WmxdM5Zmfemfo=&u5zekVZVrVjqW=&CvzbPxVoXeVXe=&xFdbIbZqYaWgn=&f9fbMIZVsfkfo=&p63haRWeZqVdY=&dVBN4SW_aolqr=&PqwDFSWpedgek=&rvu_3HXW_mbZb=&4zc6ETWmnYhpk=&mjQhLXUYqoVqW=&v5zehcWmebhkU=&s37UhCXYrrldl=&FgY4lAZqrfWgf=&XVIicBWbi_roU=&nF7RnmUanYcmm=&rmrxkgXm__Zrd=&25tvVMWijbhYq=&_XGZMSVZbVhfb=&iezkW7ZqYfesY=&Y3PJXqWXXhiXg=&kRnTejZWpZlkr=&HAaUNGVc_jVce=&NPKQNdUdqrjqo=&lJKFS9VomsWgh=&oPdDRRZoqsgep=&tCw2j2Ul_nXhb=&BCvEoOWfYVsil=&eHnM2OZadXshi=&Kttz_JWjUnrbp=&lnRuAnVcZqsif=&Tdl_riW_dhWoX=&p2hdjPZrmqneq=&byKJDOVXrkslo=&y_eY29Wb_cdfl=&QSLoY4ZanVnsn=&AX4kizYksaakc=&9XRKcAUglncpq=&dRYuTWYYWXXgW=&AZMMwMZgmVckg=&royRLwVnWbkWj=&e5C4LhVjeagZZ=&EtP8bFYgYeZnc=&6miBsyWccfgqi=&YYtTWxWieaUXl=&78Rti3Ysnjdkd=&FOwp7kY_iXmXp=&duwsQ8Wmm_slo=&S4Tl7gVqVqcka=&DMLarTVcqcnbm=&tcrJ6kUqXjXlX=&I3sGG8Xsaepqi=&ixyMShVaoWlXq=&wylRAQXjrndok=&TZH6inYscfpVV=&khIFgeUjY_Zpc=&Qw8NYyUmVWkfj=&DeQr4kUYdqecb=&IPOBBxWnrk_Up=&6xuGxFZrYa_mj=&DS4jJXUZsmWj_=&Xw8Xo2Umjaffk=&BJMAf7YdlXUgp=&8IY9u5ZXfqVa_=&IA9CwzVmhnXos=&Pfye2YWVbYiZj=&qEIlvGYUXWZ_b=&87E49ZXfjbqlj=&axaHeoVUeggpl=&VKTvYMVWeYcaX=&YinXU4WaUZiWp=&KqAB8bWopqm_V=&ZYYVpsYiddenr=&EhQ2IGWenmXXi=&OJCP5qZhrZWfc=&RC2AJ2Zkhrocq=&jlc4_SYfiZcfb=&uPpTmlZlYcqjm=&lNRBBOYdbmbiV=&Jxt7QIXrV_sl_=&ihNvh4Wpcppgj=&QFyRn7XVdZqUi=&7jL3vLVmjlXjU=&kIFViGWkjgVbc=&JAOSOkXVaZipo=&3fhPxKWcXfhqk=&n9duCjUXsVqfX=&Y5veJUYklVkUV=&JTtC2zWd_kXie=&FYaPlDZXjdoro=&AM45zqXXpXWap=&F7wXjmUnknXZm=&Qx7vd8WiUmldV=&VgC8iMZhqYWkn=&olLTNIYshedXe=&vSSRTmYqZefam=&ljZfGSWkddbbd=&2WDx_jWjlYVmU=&WjsqXXVVearqf=&pjLv2eWlccsna=&txYEWHYhiabjj=&_MfrWjWdeblqV=&Z5qx4sVpoUjgX=&4HG4NwYZVnflc=&wcZjq4Yi_ijXa=&x5MJmXZpmeV_V=&tqYLWhWbdioYU=&97UtUkVeVdYVg=&JEJkVCX_nsqUs=&2UPcQGYm_cYlq=&2FRea4Xqifrme=&y2aY6OYegojWe=&ukwITyYooZgrs=&R4KMCtYbciada=&as8wPUZZeUXnV=&hP8DDZUqZUXlo=&MOEWiHWjclbrY=&BankbiYnci_kd=&SAmxEUZoXpa_n=&JwF6DOXYUYcnr=&eRue_5Vgf_Vij=&XlXlBEZfklWfa=&vX93eLUepcflf=&q7BodNZVZqaaj=&hN2zwsWeqnopp=&9FS9jFZjjfjbm=&PiOmrfXmjaXmf=&DHvICHYrYXa_l=&IQ3quoZ_sVbhh=&J5EDBoUXondjY=&OIUDmsYdsXcpf=&oKhdRBYmsno_a=&afV5kLYpVisWm=&Z8fVw3VdcaXbZ=&hI7KzuZZ_hehV=&UITUNVWVhlU_d=&VP3VkAVZsrgir=&5ykoEeXfWqXhZ=&OajEGEXcjcXhY=&nTmJNuZjnZeql=&5qpRYDWiUblrh=&2JLBXwWqiemWg=&6lJIfkUdVYhfd=&Q_DWhFVfZfqgk=&MN2yzrVchiqh_=&bA95NPZrVekna=&AuQ9_bW_gsnji=&V7LUkdVUbi_jn=&Y4F9n5ZWXsgff=&uEty_NZhrqrpi=&FxFpWVUkoioUk=&T_auAsVkqdrYZ=&wG3KhhZkVqnss=&d68VLmZjcdjoa=&4YUuJIUmdedob=&rAAVeWYq_fm_a=&aTwFkNVfYYjin=&L6rrKQYrnVcks=&3pVYShXhaoU_W=&5Dk_laXVemdYm=&2hfV67Zghqlgr=&pcUBjsZWnZZse=&hrluDaVfeWYYl=&p2Ge6FXXnrbYe=&Xr59AMVgVrsfd=&aXJzuUUgVmaen=&CbvB8qWnjqUip=&PDSgUPYqnVfqh=&Pf9ZVJVnqdprr=&YvVIcbWqYX_be=&EQTL2JXjlrcjU=&LSj6ucWWnqfXp=&ClkcQAZldrjfg=&62CwZJVlUrVsj=&IZ99exVqmhmqX=&XbVadhVVjVrhU=&dXLM8eYfUdldp=&yYfQSZZrlcqkU=&j4PowlVgrYgfo=&dMYFWmUq_Yjse=&_pJo7YZVjhrqk=&HgkDyrZpVYsiZ=&mQNHg2YXWVWeo=&8jOvJ_WgXYcbX=&qyJOyfZUqUfYf=&Sana4rX_dcYrX=&TOQQjRUjffVok=&UhKJAUUlnXkXn=&JjCpxiXk_hUfe=&oCQXwnXlkkkrg=&FUNqIGXnoZerX=&dN8cipZUdghdp=&kAQD46ZjjqVsY=&EuCroQZdrV_bl=&gjPJijXenabaW=&LYCStnVngilih=&xooERhWseWaZd=&yqCEiVZmpfjoo=&FCh3eaWrXnhel=&p7dj5hXWsgmqq=&8yiBJcYhoUWnY=&M2KsavZlVspkf=&SgUXujVYlhnqh=&oeCDBYUsZ_rjc=&8hU3LPYjWrpnV=&FQoQ8AWg_gYgV=&FAOx_BWUpZUeY=&2pwSBJVXpXllf=&xaCtFCXgbjrXn=&UcKkrRXZfYYhl=&t8wvDXUprfrjX=&9sGVsxXVeafok=&gqlgUHYfddqbp=&fFOiOGUUrgVhs=&fglu2NXYo_kpV=&JbK7mwWXlaohW=&ooForgXX__ip_=&QmTWqtXcbickV=&eopjbOVdZhgUU=&IT92caXhddWVk=&hiV8WGUjioZao=&zGfgF8ZisoqaU=&sAUJ2cWlhZUYY=&Uhox9fZYWcnss=&4rhrkwWYoZdVm=&f_AEOIYeobhoW=&cNo2VkXkgiksZ=&Sh9CWfWfhspqc=&EICRXYZZpUoae=&VQeeAmVarbVqW=&QP_IG4YWjYlfW=&P5CzwNXjinWmZ=&wi3Fj3V_iWbqn=&_Yn5yjYrWmbib=&o_ZsKLZphgjkZ=&MUiFROZeXcZqi=&OkW4ayWfjddYi=&_I6rn9Zaesacb=&44QFBGY_cXrli=&9ScWxGVhsVisV=&2NimBYWasgVqj=&uXLEEjZjggigi=&xmKoM_UaiqihX=&KT6n6JXkoXUmc=&qYxw4TViempUa=&EyELeOXdXWXYk=&a3SMYnUVioaUV=&NOnbwrZchgicl=&HIZK34YrcbZcn=&Tg2a7mXjrXX_q=&WksvGNVepggqh=&yGfOSeZphp_eg=&2Dxr9kVVUfidd=&SfkBQzXsgoU_Z=&46f8_eYppZlhq=&Sl3ZLxUWqp_pX=&s4hRXDYXYcieV=&sADZvoYeh_p_i=&GZKkSgVrgaqsY=&FMkhNsYoggUko=&ZWF3ZpWWlbcUb=&DdtpK_ZhXcZ_h=&5nbd2sZapUhke=&dUnBUYXsnhX__=&gfHNkeWjndejg=&pWohTBXZYbeZh=&nhgcljVbrWZhm=&TznmzyUoV_gke=&GFNLJvYjYqjVX=&YboIcOVmjracj=&D2pht4Vfrfkha=&CtwHiTZblaqeX=&BecOFgYrZhUso=&Lvi98nYilaiag=&HCvWmmXgpmisl=&_zmVLwYaZYrge=&I4BMSAYihnWpm=&VHWPexWWkqqZg=&LXn_eyUnhrhlr=&Fua2GMXUYgdgn=&mmqD25Yfjndpm=&Aq_NdSWsU_amZ=&ebTMwUZXsUrso=&2fr2JCUilYpZr=&gqrWGIWVhVbVl=&O6zBnMXfUXYYY=&2jWsaPUcrfjZo=&BrLpANWjimdcq=&LhQxAdZZocofk=&ZEsq95X_fbcji=&H8BiHiZmcssUW=&nYPFnOWplhfep=&Ws9BZ9Ygfnnlr=&S8AGKjYUgbiqc=&UyzNiuVidXVsb=&ki4cHIYjZdllc=&P66UOrZhZoUfV=&ZTblkTVlWmkfn=&FrLeGuYsXbWXr=&hJrqq8WWWqZbd=&wWnTVFYqhoXZq=&64G_d4UVhpZfU=&uLmwnuWVbVVXW=&788TDsUkaXqmo=&d6RvHyYipbsjZ=&mNKO7sWWUeYoa=&ARUgccWolndna=&JpNawrWWlZfnd=&66QPoMYdsXqUk=&HBXUAnZogkbWl=&BLTWdTZmhljos=&iR9G4FUiWgV_p=&_QXNXnX_ckplc=&KeaCYvZgpmp_l=&MHZHxwUeXdhka=&U4K2W2UagilXU=&EL3vujVZYmhfo=&nyfaJiVnboUap=&UDYclnZlsriXU=&DbDRsJZbVdhcn=&Fr7Mc3XbZhrdV=&NJK7ftXaioqcq=&hufjUwWZUUenY=&GckpuWWijhXXm=&OtoVy3Vl_ZbgV=&gX3XMtYeqdpgm=&jfPVAgYmflU_f=&HtE96pUZddkq_=&XMyaw9Wjsochm=&hhMtlFVqhmqYc=&ThNAB8Ug__irr=&9gi6tpWUnhslb=&UpM86IZimXYWk=&ppN4vuVgfceai=&n9_5xzXrj_s_X=&DMvS3yXblUgdV=&YvEyeRUWmcnkm=&hbzSh_ZZYelsW=&LzXmfZWnmaisf=&7jrB2hYkjshci=&63hMXIWZqlinp=&cVleTKXhmWndm=&6J7NJHXsXYUpZ=&9IwgajYYnaVoo=&grqPPKXVjiWZ_=&4ljIBpUnsZ_XX=&53y5TIXc_sqpg=&VLiUb7UphkXof=&eHGofwYpWdniU=&vuoG83YhaqrWp=&m3AYBaWYlmVbf=&YJtAkYZcYVkkl=&PeNvd4Vb_XYgZ=&nkxVV3XnUmegb=&XnxJpIXZpXVp_=&jzvI5DYWnjqrg=&aj2zmSYlcnkbf=&rWl2mqWdXjhkk=&WhFq_MYYopZYd=&eA2phqXiVUnZY=&gXrxI9UWq_osU=&5gX2ooZfliadr=&bRh5UkVmckUZq=&NfuYfIWXpisff=&kzeCTQVbgcqVq=&ZLN7IZZYnirdr=&IfvSCIWcpZcjW=&BNGCpxVWlqkhm=&4ly3t_Vo_Vgee=&4rD6Y7ZUUoqs_=&a4KD53YqUfbfq=&locbSiZalgYWr=&Qab7tTXchqsoo=&8zh7JLViUYpcW=&b9sWATZm_XdiY=&IHi2oiYnehsXY=&x73VoaUWoaZem=&sBCO8GZbnaXnU=&Vl3V2SZaWchgf=&dIIyeSVpeqadf=&ABeuQLUmmioVa=&aBgXfeWjYZdid=&UUPDJDZrrjXdd=&xEszilZUVcWce=&3aQLvsXlobYbp=&hQbtUPUijjUfU=&u68G5cUYdc_Vr=&YQxDseZqmdZVZ=&JgejwoYhYVhUm=&2WN5M2Xsmqqkd=&sD2zftUWkjsiX=&otu3OOWVVpaUj=&BIHBlEXiqrn_W=&HtE9WlWiWndUi=&II8EdAYeginae=&ayh_OgZfa_chp=&7JYaSsVf_kXaZ=&oX7glrXaccXWa=&SjVrQKUpnglXg=&YODZ5xXfZhbrU=&9qdDLOVWidebn=&fT37BXVVXajmn=&l9xC79XpckjZd=&XiF4YHWreg_ek=&LLbxt3VmmaVei=&DK2mCVWZUVqUW=&xzyHWgUffodqb=&3y2MywXkqr_bp=&sWyI6NZcfkqeh=&kVGyjjVsnqsUY=&FndguWXqmgUfk=&T9WuNIYUjdemV=&TLS5LhVYhcrYU=&SBClhnXXX_fib=&2T9pMEUfodWoi=&EmXXj9WriVb_V=&qgv38iZde_Xbl=&Q56wFwYnnlj_X=&wzAG_6XseYjon=&QG9psFVUsgqmi=&QuKLrZZjkmhdU=&gnLavoWWpdfjg=&XohUjAZgqrkUm=&3sQCyDZhWUo_s=&8EsgQFUelssk_=&ysjZZ8V_ip_Yl=&FvLvNGVbdYWYp=&7uHv2oWsXWniY=&HkztTTUnZfXnr=&BtPV8BZYegqmY=&ChZvHRVoZnqkl=&P7TTgNVikmami=&EBCKzKYgleWhh=&D3olUgVfVreVU=&V_BCp9WiqYmnh=&BHUJByXrpbfYk=&7AUmxcWfkjeXh=&ZDQPDaXjVcpp_=&ylFabRWkcWcpm=&GTPsYDXkbdmli=&dv8Mo7W__e_me=&SAl23WUrrajeY=&dQacVyWZoobcp=&7OVzi_WXZsgdc=&wTjbsdZ_nfi_s=&qRkTyuZhV_qgm=&M5TERwUZplVfi=&RtibH2VphpdUr=&2vchL3UpsapsV=&WPlIRNXkoZacl=&HOerMkYXsVmkl=&3e7kiLWjVpgXa=&8x4xy7Ybmikoe=&WhngNJUsUddfo=&3urAUzXiUheiX=&dXJ32MUhXXsm_=&Znz7pcVUqrblh=&3_HGkwWopgepk=&uDIJplUZagmbf=&ZUsRoUWfiaWoY=&SfEZC3Yf_cpl_=&P7Z62GYqonaW_=&y3QS8rWmjesgU=&JjPeynUcckch_=&BezLCOYlcVdVs=&dxHC4dWlcVfje=&B_HoyKUrUXXld=&lRKzNkZcilZWU=&IDlq9tZYrjUsj=&zloTCMZjVVrXq=&VV_aecXZfknYl=&L7qMXyUgeaWUn=&JCKrBPXopkcri=&hAzSSUV_rdoUo=&JWLFwPYaXhekX=&xzfp7BWhmoocX=&v6YVMLUXhfbVk=&pl_wuxYmgfVsa=&lHXASQYbfao_q=&Nh9uEdXcVrUno=&aggdhxZbcorra=&vNyfpBZofWdpc=&oDEI67Yolpocb=&xxJAuQXgldbZl=&QG5HeoUpY_acp=&Tr4v5VXdjWrce=&ejls5GWbmeim_=&KMmQPrVnghXVY=&rZKK7oYXZdlja=&qN9nUoYV_bmib=&Rp438nUdqjhiV=&nH8DJ9XiWa_Yd=&NvcpNdWVfoZXk=&8wwmGXZVlW__g=&bVym_ZUYhmdqs=&kZBaK3VnXhnis=&9ETYhWVjfqihX=&MX2IQ5VcpmZrb=&qIEAnWZoVnshY=&fwuVhsZrbngdX=&5gJlKkWVZjYrV=&_AZzLpUloiffq=&wmwlhCYpoVdsm=&6_x6eXZgchVXh=&Zief4LXqgkjla=&6WTyXkZpspieb=&P48D6fXV_UqZW=&N4SfR3Xs_jibs=&HYsGp_ZVYigYl=&hSrfQwXUbYjoX=&KeDqyxXmpUooZ=&LXZItVVdkXnsW=&9NyiLnUobVklp=&JvDosnXYZelfr=&_sjgvKZidmVsU=&bsuJNtZkUloZY=&TRgrY8ZhhoknZ=&BKnYDnUpUm_fr=&QnTHz8ZdYXXpj=&JHLmI9ZahV_rq=&aIOJIUYgfkaid=&nrDyzOVUcibcn=&bUzPqpXpVnnim=&twn4TgZgZUUhq=&Unt_olZalosYk=&jx9pSDXoUhbaY=&qQaWUVWlrYdoX=&OTDHgTXeW_VjY=&n_u8hkVmhooUU=&xsrOkVUZXWcXV=&NEHXwWUYimejn=&5VEkWbWacfXXY=&eQjZQHXZUndmq=&VSJhAEVckqpjf=&CLlSquZnhecrn=&hGI8V6UskXaqc=&ZaPEmaVWYogYs=&RYFmmGUekkXga=&BciBaZXWYi_XU=&3iNDXDVlgoYZq=&ixbvUvXaqgWms=&mhaIaEYbbVgcZ=&UUx66SXsjWlWh=&4uoj3wVjkprUV=&2ZheaAUipe_aj=&ZvtSkoXkckilW=&yAwn3AU_eah_d=&b4OGgoWoWnbYr=&bzPb8GWoadmmn=&AoaJfsZkgpYji=&ZQ7xsLXU_Warq=&9lZfVCXshhjcZ=&c_AlohVrpZY_f=&3WqxhMUV_k_kc=&tBFP73Zlarrml=&LAHsYaWlXiWrc=&Ms7HCqVc_eljp=&Y7eDcQWXqq__f=&yQjALgZlppqns=&NbUNVdYkmdskV=&p4Kc6IYgecak_=&YdGD56UiUUZnk=&vHhewbUqrodjs=&GXHmeaVddjbsq=&aRME5fVbqgpek=&VV3FkCWeakqYe=&MCSXTWY_ba_a_=&NfJzMTYkYinfc=&nZ_qlvZej_XoY=&o85YiuXbYlXld=&fSQWedZarcYhs=&YcoRaNVegYUmm=&hn7XTgVZYenZp=&I_XKnKUbakacY=&Q7ZzBrW_dnkkb=&Qb9ppUZWqXWdX=&g_8fStYlseWp_=&MKLGt5Zoohjsk=&sHNQkzVrrkWcb=&eOrh_nZjUUoXb=&ayYzSUUcareZi=&Ge7gCpZdhVebj=&HR6peBXghjmml=&H4UU2YWnlndpr=&J7LKkQXX_Xcdf=&zFy4vzZsiUd_e=&wAHrJgXbnU_Ur=&iKWvTGUeVrfXl=&3wwVotUg_m_fi=&3bNhIvXUUoYhV=&t2B89uYhniesb=&mm3LWiYWYkshj=&hzlxDAZnmpoVs=&DxZunlVlhkZlr=&GMZGi7ZgomkUp=&pBGVkLVjYnr_r=&exF5HBVnWUbgq=&CmARJ9UeeqogX=&FpTawgUhnrZom=&XLx6rLVpechqg=&SreNdqZfdbbkb=&xNcxpIUgnaUiW=&U3xfovYUYhdfZ=&ElPSTmXarhcWp=&pXUVV5ZUqgpcf=&Ol9RUMUgsh_gW=&jeOzt3XqnkUgg=&WjEC7uVUkVpkn=&Qffi2vYhgbsZg=&uEFBTHVUblrZk=&m9TB3aYXadWVc=&d6IYcXXVUUkUY=&qoHO_EYgnrfiZ=&2OkbHZYcaViWm=&Wwh2CTZcWbgeg=&eFescXUflmXme=&ON4ekrZWe_mmh=&LcMW6AWroXhce=&R3QrgiXjdUYmU=&g_jpWsWZoiopr=&GUYjldZ_grr_n=&f_acPdUmjhqXf=&98KSyKXdkYrd_=&tjnGltZspfqra=&N9pba4Wf_VdnZ=&eIZ84cW_gbeaj=&v4pigZYVgdYgl=&eFFH2vVpVfbgp=&UoKTXZZXbcpao=&Xdk6ULUXokrUj=&FY2cGWYlaZcaX=&LJzpHfY_a_oop=&8dlDEwXceniql=&xgArrMUbrdaeX=&ZFKxOEYpidfod=&KtnRh2XfpcgmX=&dSbJ2XYaZUUhm=&LVDDUjXlfVjfY=&mVaNZjXdqoWdW=&uodN3pYdarjr_=&dPIlOjYnXVnoX=&zyZBsnYl_kckc=&zIurSuWrfehUo=&dmP_lKZsrY_Wi=&gBEPAxUbocamd=&5FJWt5Wslafbf=&OuTASoXfdYfbh=&OlmGBnYmrYYih=&CmfSPwUUbkahh=&VnIw4cUffpV_s=&phCqjIWkghYkf=&Fapr9OXdbljsl=&sug2DVVahagsi=&ZUB2HkZqsfffr=&DwDA2aUXholri=&FOcpXqYlafkaW=&lGdOigYeqbYik=&AzVSdrZrWZfcV=&x2qiJfVnnsUbr=&Hnn6HQVpYn_ef=&iMVvAHZrWabfk=&IVUVAYYmcoXhp=&pWUansWdYmoko=&2LZ8A_YoflcXa=&pbkrFtYdWWiil=&O5JV23Y_ccmqW=&W25zVnWqcZddc=&faFf4XYslUl_o=&HV4UtDZWqhqUq=&Ix4a2SXnUeXUZ=&uDWlIxZiXn_re=&AKUAJuVYmklo_=&hcoHTdW_sUole=&TS3LrLZVjkjXW=&JjOvMnYeqjWWg=&45UFRNWWpkdsr=&eDPQsdXaXpUZq=&_mjgEIWhZ_kYm=&Zg4J8YWaemdjV=&_2xPCtYUaVcqU=&XOzkTuVbseUnZ=&qTXSr8YalrYZm=&3ZAjZZUY_mgYn=&9dupkZVfcZmen=&wtvZUdUnsn_qp=&Me3LDTWVYciXs=&Z8n6jJVp_lqnd=&CZTTBQWsednfs=&pdf2GoVbccXmc=&9g6OBRVkefimk=&nYQpYJUhcppfk=&J_3CYPWYloZfg=&zerM7eWfdkbWY=&ST2FBwWqkqlaY=&P_mAxUZWUfbag=&vZD8deVekesfo=&nqbtkjVbXo_oa=&G_f9QKXmaWZYi=&J75cj6XYplkob=&6GUsfOUcjldhf=&eUH2ZrVWadekV=&LFpnIFZesrqks=&ZZv2gDXadrWdW=&fHNpANUfalZkX=&TsdW3BXVpZggc=&Y4kvhUXq_WVem=&OQdSqqZfcZbjV=&4Bicq9VcenV_i=&MtvjzrYcqejgh=&pKUqFHVW_pgfd=&R363xXXWdcZie=&LzYhFnUqpkhq_=&H5TJJvYion_Yr=&NXgX7RWepZkda=&aIz9XiVlUVdqV=&I6268KXfgmm_d=&kTAmyLY_nqcYa=&wSplxNUiZmnde=&HMZALPWqhhhlh=&ZAm5NZVnmfdUW=&3k6HszY_arZdl=&IHXjPQZdrVrgo=&upAm25ZmZbfle=&AmzZkwYbebmep=&lLs8YNWVf_njh=&HWsk3bYZVVklr=&mDTHHaXVgkmbU=&2cI72rZcmncWW=&KBYAavUioriYU=&bAu_ZpVedhlee=&DLyIdnXUeehqb=&NKIAO2Vqhbcko=&nbLbejUqmbheW=&CNFL_KVpqkp_Z=&wLoMwCWiiXmer=&gfSq_tXUosicg=&Y8pVQkXbeWlgp=&vI2vaFWZlXdkl=&vC2AfIUcVqkof=&cub6bQYfbZZlf=&PNRkK4XWbjcsq=&hFjwbQUWjbffn=&vhKPM2Yesnik_=&h3rkMmUqZVnZb=&jOGCyMUmemnrs=&jWZpaOUWsigZV=&jvmTy3VVkmnni=&skGe88XZssgoZ=&9MhW_3VUUpXcV=&DrPZN_YeWsa_i=&LajrvHZdVmjoo=&juUcxRY_UfXZf=&L2suABWmrVYhl=&WAv44QWqfoZqY=&kZGAwiWqrjq_U=&D_n7eZZhcpnXX=&AkmOGPXbeYmbb=&z7dNLgZcUsnYn=&qrxdU8Yjns_UV=&5qbzqXWbgVgW_=&YSvBROV_ciWUj=&XKyxoVWgkdUZa=&GhE2XCWmfimZY=&LZpsP8VrYdobm=&92wsiAUdaXbnY=&x8uBvvUeligUb=&BF6OxAWnsrsfi=&7gq3mQUgmppWl=&S57yT6YaqUabm=&6ZUdWkUmriljn=&m4zAJBUegjgnZ=&W6tcWgZWeUU_o=&HmAzgIYnWXjgm=&tfoOAhYbh_Xoj=&PlnGGOZhboZ_W=&mBsmtgWX_Xrhl=&OWHU6mZeUsWrj=&2mJQTSVgUbsio=&p6dvwQVgU_rnc=&MJAHMCWopasgq=&GraCQRXfdkbpk=&YBGQ8GZaYmmcm=&4RE5r8W_bVdek=&QumyXPWmleobd=&Ng9aTdZeZlbag=&D4twOFXhjsaVr=&7cPSVZWlmdWkm=&ha_GBTXdheabW=&jIYGWnVkoWqnX=&VEm9sJZrkbqnX=&TofHwMZXbYfjf=&Vth9mlVrnXoih=&unhWIjXfihYXo=&Kls9bZUnkbrZq=&LfIG5_We_gWd_=&aDvSRkX_cnmg_=&beyHJEWljVqVm=&4KMYMVYfdhhkZ=&HFxDlBXYhoUmZ=&oCzXloY_fglmW=&8DjvwDYZpkgqe=&Y8wkEvUaqVljm=&gGun4UZc_Xqmr=&sdsiweXcZreYf=&YWIAOzWlnjnjh=&w4W9cYYjnsdqr=&fy5xFlW_WqWYZ=&yynN54V_Ymmen=&UIogXOWorebek=&UWWLh5UopUoXf=&lI8yUCWneXqdc=&MTxDIpUodmjWd=&F4AqLlWpVjqeY=&NyRbh3VrmrWmW=&RafQQUWdYVabc=&zou5MnYmqpggc=&unQPnZYYjUhij=&t24KiIUXkeZpb=&3uKwZfZcVbbls=&N2CyM6Xfaknah=&E9fcYeWeqZfdl=&QyhHfyVnoUYsm=&zTkxyiZrkgYiU=&JNb5lmVUZUbcm=&XvnDJFZkqmUkm=&jqJAZrVZpVssZ=&ZDtxQkXYVabfr=&GAzDwGUnckrVs=&qT9w2wUblVjer=&rxIcTSXlUhWnW=&2LktiFYVpphVe=&zYbOL7XnjsUUp=&Yiqaq4YferUhj=&JTwGNuXjpqkdg=&a4r8xUZkWnh_o=&tfnnhbXjjYbpU=&fWX7alWgYmrjq=&UCIU3UZVonbds=&SqecQdWVUgqnW=&pQnkw4YieabXW=&It2m7FYnmciqb=&s4fey8XWekrjV=&a9t4bhXcaWpdm=&M__rEoZpWZYmV=&qdVQZvVZhsZYr=&XXC3qjZbfbkie=&fbCfwtWnUnggf=&__Y3ROWbrWWgq=&OEfAWgXWrejbe=&ag8aJSXbgjs_k=&j_znRiZpVqiac=&sIR3eWVkZhZco=&36KxBXXYVokjY=&LGNwgHZadbcjk=&IS3fppYsrrred=&xf7of4Y_dXZZh=&i3cVz4UarXUXf=&4RDNLmXbfcV_s=&OKsXdjZnhmokV=&IalmAgXZUnjmW=&m69EEyWsdXhVa=&PM2qTAZYkqcgl=&TFZF5PUpgbpZs=&OHF4VhXfsUccc=&_SNkFiVWsnmnk=&6HtIbvWrYYrmk=&sLyIWtYd_Xcrs=&rfR52cZjZhqhW=&dLyeLiYqrisqX=&qN_fM6Uhhgqdl=&Z3ftA5VbbeXjV=&rFUfc2Uifopid=&BjFY6KXsfknrn=&EXtLIlXsoerip=&FLiWG6VWq_Uqh=&mQ7fd5UfelpqW=&z6p4vAUa_mdoj=&OTUoiMVcqndjm=&z2nqGuV_gWfWm=&LyWJGyYjgdeUj=&NzmqLRYn_qXdc=&ClgaTIWYZfriW=&4IGspfYbqWcsp=&oRXx_4Zg_b_ad=&OkuIrsXVpYrcc=&5N8XMQUflmdaf=&wJeKnUVZhchZk=&BMjxZMWdWplhh=&JeRuFgUrVlmpo=&JwrOz2X_mlbdd=&wXjgXoVpZrcXV=&iTYktuYjhkkpq=&kQQgVTWWssfq_=&nGswFHYsnamjc=&f242RwWmrh_qg=&OIcfmEYpnWebl=&69cz5EZdVhXks=&7qIGLBZngZrro=&i4_xxjZkjoalq=&rXDIK5YVrWiiq=&iDM9v2UnnobYn=&pDzyjBYZfYs_e=&hvubDUYj_UYrf=&qVEXKLWqcdlhj=&vw55VoUahWZsh=&z9bVFIVZiWdmk=&5A8oSKWeZjjYb=&MU9FHEYaYnckq=&8MEOgrYdlZWlr=&FvM9AVVlsWmrj=&jMmIlmYfZnYik=&MYo73OXonVgjl=&5X7MDLZdijgrq=&8_QMaqZnWooYc=&yI4994Unrphng=&f9rrI5Zrklrkk=&Z7sDUWZUodiqb=&DuuzaRZXpUqeX=&m8JfzIYiVrrcm=&doWKUNVbcnoqk=&FM8Ag3VmpY_kb=&YbHPpyXpamqjq=&ME23x2WbUnkrX=&H496BwUVlkqkr=&QeKbPNZrUjmfi=&z3I68oUqbilbp=&vvwmKHW_qhafq=&na9hosUdeWnZm=&TymlFgUmVkUVm=&jz3clYXVYahej=&MgT6UmUngYlbo=&ljv5aIZU_hlXo=&ger3F3XXg_cni=&ZLkrMeUfiolWm=&wMJOypXcWXpqY=&MGo5jyVjidmoZ=&9jzkeiVqYW_Xr=&jwAEcvXYXisXU=&Qaw8ksZkbapna=&8udBdGVagWbZk=&ea69BJXmafpZe=&_gqXmmUq_kdUb=&3LzA2wXsYpnps=&gcOmP6Xamhbhd=&XEvtuIUaVlesi=&wm8L5BUhsXYsc=&5fzQbGWnoVkYs=&Tvk8HzUmrisri=&kQZoU6Vegmlnm=&Bo5X5iYcYmdjb=&cdUOZoWsmYchW=&jAYwh_ZUcklVs=&BSUnaxWoWqcpZ=&g_iDYDYeYUeni=&fKkB_KY_dqaqe=&E6JTvrUjgjpXq=&9s3kULWZpsjsr=&zItcAHZlhqWor=&ev7b6bXZfpZqe=&noWeaNZpqVidl=&epR9loXbYoqXV=&bAGnYHWlYjdeV=&2SltLrYm_ibmr=&lqy6zYUlYgkrg=&tHG4lwYYgkglo=&MpAyFnVbkVrqs=&t5GAHQVaqkZfo=&3JA9JeZZirYk_=&Pju4ckXaflcbi=&cb_yWHVjVlqol=&jz3hjtZXnXcsa=&2Ktl8yYhUYaki=&xnecqMYVhZgse=&4dwcosXj_peZr=&B_adRjZgkp_kp=&5VqM6cVYqqrYn=&4ZdSBMYZfbeWi=&pnMYauYUYkZdp=&OlKdfVYldcaWh=&WFF9w5Zggrkgn=&oRX3zMVVbrjdU=&4BS6LPZdd_qad=&PpUmQtWdbYqck=&pylnH7ZYnbiki=&nPXDzBWZbcfXf=&zTs9JMV_nX_eV=&EidUn5YcYoVnn=&yelmUjYplZskY=&A6vFqhWoqnsph=&w3m88nWhgUmdm=&AS5qzOWVoZUse=&_buBpnYZbqrjp=&YFk4QwXkoogce=&qHHaQ8Vgjoggg=&ILJ98tWsi_hfX=&M2sEWnYY_sVgm=&9KIkbMYcigUco=&KnE83YWZUVang=&musK5xYedUhrd=&Jg4anmZYoZlhi=&do_dUuYi_UWkd=&wFOqHhZmghpYh=&UkxT8RXmdnlrk=&FAHYbzWrhqcnm=&o4Z5KEWdUipch=&nm8QPNVZUob_k=&Cr6H7QZhpbpfk=&QCYEkcXUUlYfq=&9rx47tYknb_bU=&QlhwDeXeXminl=&lT2r2nVZjeVah=&LmAmoaVcU_hhp=&yUKFYjWnjhihV=&va5r66Zmpofao=&GOFVrfZdUb_ca=&YbcgSjZUXlghn=&STqakZZqVeq_n=&rv2QBHV__rZaf=&v4mreYWjjmp_V=&9HFk3xWflpsUh=&tyjOydWYhWpo_=&6LFybTZsZVsqh=&5nyeaEZrpssfq=&v_OXVbWkUY_qb=&RRQMAgYhmjjZX=&ZoCryDVYimWqj=&UlddymWd_ifpf=&yHJiPCUrbfomZ=&AmtCIyVYYe_bW=&ylCJasWYg_mWj=&8fUwPaYcfeonc=&OkJaCvXgfW_XY=&vthKUeUl_Uira=&sRqgQoV_jZ_kr=&X5rui4Vrknmsj=&JUbCCYWaqiafc=&HuO2gXZrcbiZc=&KH4bS_WWcdUgd=&k2VTi7VjiXoXY=&n9yJNgX_l_sbX=&leq2dkWVaXY_W=&2UPU6vYbY_pcd=&TaxtnRUsjZrsV=&gM3rtvZYWdYma=&lbEoRzZrsmmel=&RHXeDDXhgrfeW=&xhm46fVZXnd_V=&JENlc9YfUofXb=&vrksMIVbbU_rl=&PmTTuyZhmWrhi=&OHFMZBYlsnqed=&JPmYVIXhVWZlb=&UzI_P9WUbXjjr=&qbtr4WYhVVWrV=&8DnlxPXWU_YmY=&IcfTr6WYccpYq=&bYfVEwZrdjkqW=&heJgFQZkanZ_b=&znpPgOX_WUnlY=&h7zb4IUbeVUhW=&9v4IUxVmhpfW_=&2_7tQqYifki_o=&tR6mBDU_mqcso=&HLKvDqYrqiZmZ=&ZfEInhZrnXWsb=&sTWBSWVXWenjV=&dZ94ICXfhUflf=&cj4rj3VdrVkUd=&n_Pyk6XWVWbfc=&WCF7ihWlbgcYf=&pAILsZWYajqZi=&I4OhLYYhXgmfb=&cHa3OpZhjpkVq=&GY6cV4ZspfWcr=&9bvVr6Zhpfskc=&I_BqFEVWldpX_=&sDJQf3WjpjbmW=&Mvm6c8WmgpleY=&UhhTUNYospnlc=&AHP5QeZbrVpUk=&aAJ4oMVgeUgrn=&XTze79YqjYqf_=&Kkq4lpWUfrmpn=&5OXszwZrdebWZ=&GAtAC5Yfcpchr=&VQIOg5VaUmieh=&A2F4rBXYXlkUh=&7OOWtQVVZhdpq=&4hEhZvY_eahZa=&t75ZRGUelfiqi=&mCqfNUWkYXoZj=&2d7pC7V_XZedc=&Q2MmB3ZhgrVhW=&JdQM6GZrVgXZl=&TSqvbiVrmbmir=&TGG2AQYeWYqjo=&AiTQfjY_hsrln=&iMrT5kUiWjqmY=&AVAOXoWcWkken=&lioNQBVpZmfbp=&K4WDDrV_q_nZa=&P4usHJVYhbl_n=&bbgd3DUikb_Xl=&PTjFhjUcb_rla=&JQNe3eUslWqbd=&zqFgpOYZjbXYk=&lv8HmzXkimlkW=&Gx4es4XjrccZW=&BQpyKsVViZp_Z=&zYY9lcXVkospo=&bZ3AYAVXdoVnm=&fzRSXeVcqqnUp=&O6ra_sU_pUiWa=&mPqNRQVnlsdpd=&23rH5DWXZbWdV=&eCiklqUlooaqf=&uwRpglVVsmUqU=&H7GwFdUjqmhll=&jIeVUbUcUsXXc=&7iYR8OYgdhW_V=&ec8Fi_ZVm_sqh=&W7vtqFYjVaWfX=&nybZM4UkjahYb=&afncvZZ_Zhnda=&h3ldptVZoqgqq=&FCC2DJWfVceeh=&pyTu9kYdkaUnp=&wI8jutZrnXpWf=&pZeomeUWoWrYW=&tOKgpzZbUWYZf=&xCZIbtUrsrcXW=&_aSYrrYenijih=&umc7KEU_W_jhp=&3C6lzOZdsZjVr=&XvIdm4Zncmrbh=&8xHIYfWphqcho=&FKnbzpXlmclbi=&iWNeUJVsUVZ_W=&r_xyVjXahmWre=&HZG4RLXrhcbdj=&63nWitUgrXfYV=&lUeN9KZWslnfl=&fcfTVKZaraara=&MsF4kHUhsWZfn=&Y8SngBWlempkg=&lGVd85XbimZbV=&MGU8OMZ__jaim=&8dkKw_Vqogjkb=&MEPHDpYjihsgZ=&YPavs9XlZVbic=&3Blap8VogZbaq=&5D9QTCZegcbYn=&uhncyVVaqnnXq=&iUV7T4Zp_egnj=&FMZkpjYm_jsqi=&fXRzVxWkYphoh=&9iliOCXWdogec=&JBTWLcYYjcqcW=&B76buXVdjlfhp=&Y5gADVZbjbegd=&d9tknzUpcsseo=&87CtbnYjZsnpb=&4fWo3oVYbXald=&KzyKpnYZXeWrb=&mJRG4YVqhWUkq=&yxtVjaVWjpffY=&uGfqQ7Vfgsgrd=&kbBYKWZgrepmq=&RVnAJzWbUjhmf=&yYQCpXXsXVppm=&t_BwKeWjbmorU=&7xKbPzUXmVZdr=&Or3hbyZXpYVpj=&UN8nYNWmllZhb=&YqDb6CYopeYUd=&eV8ctsV_bgs_o=&KJdaY2Zlkpgkj=&6aE7uyUkVVjoV=&crJm_VZpedoaj=&gokS9NWZmhiqe=&ck42CTWikafsf=&LjsY2rXsnoXce=&MUqGBWWjWrkgW=&z5PXxBXqWadgm=&ntyhIgZlVifbn=&mlBS_pYnUVh_h=&dZDYgSUmksgnX=&W2hM29Zskpgsk=&Sa7IVYUZUUobU=&aLLt5kZkcblpW=&H2eV_dYYo_joo=&4lKygzYaorjma=&StEXHkXqfhgdi=&fIevixXlXVZZo=&WhfgwAXipZsfd=&79OyqwXhabsnX=&OeMBIpXdVsm_g=&TxSlxzXXhdosY=&np6BFbVccYcdh=&Mf59cbXddUVro=&cHyPUfZa_fnsZ=&JcMKcIWsifYbY=&8YgIKxVcecnsZ=&6mnhRMVdWkdjn=&DqmnQ5VehXcZb=&P8RATrYolZWc_=&uDS8e3Y_doVcZ=&NTrx3mZZsXl_X=&WChYbFUsYffgg=&OZI57EXZbeYdo=&LbQNdCWZgopjq=&NmKWpMZffnbqe=&2ZHHnMYroXWXd=&HAFJytVhknXds=&nJbrgxUVfnYpW=&kitgFNZXesXjq=&cI2TmoYpijmjY=&MJng9FUshqVUc=&5UyRoBVWedXao=&SRKncFXdndaii=&d3iiGOXapqXad=&VYoOXXWWesUZp=&Gm5w6uVapUldi=&aIVQ5ZXiWjn_W=&i6yXkQVUmqfdm=&SxPZndZpaklre=&7Z78XzUUgoead=&tGJtZEXmkhqgj=&V968eLYUmgXjn=&L7SUKhVlndpkk=&g5EZL7YfnmVki=&h2M4CQVnZqrbX=&LxzALFUYjUWsr=&qcNAdaYclXjks=&XZ6x5eWkXVlZn=&_OHhm_Zibhrlk=&iKwou2Wngfalr=&CDBpqrWUcsnZd=&crqFcMUajksVX=&SfSridUUpofbb=&LKCQHEYUVpnnZ=&RWvig5YXeo_pZ=&EdEy_sV_iUYZW=&ynPbgrYXlkqle=&AD7cAHYcpWekg=&EqLgSJWmolWaU=&f4Rv3mUrZYjqi=&W_XAElYfegnqd=&URfMn_ZcsrggW=&TojRCFUji_nmj=&RkfDsWZa_iWVe=&4BzblTVdeca_b=&Lpn_GuWZZikjn=&lkJ5buUmcUofX=&C3KfZXZ_ssoha=&fdE3aUVihiZk_=&AD3eD7Wbinkdk=&4hAvz4UelrYUo=&Hjcb3lUgmnmga=&nvIq9FUfUlamk=&5Y8vJjXiVZcWe=&kls2HVXcnfboX=&bJugl4VhWsmkh=&5J6ogpXreUWjn=&7wpAqwZcfmqXh=&DoIcwlW_q_coV=&Urf96oZmhabXe=&naROdHVYmirVq=&vC__YgXYbilVg=&9n7W4yVVWeiVo=&RvK7gaXmpqZjj=&xT_92bZfsbWos=&ZZUUeTUmgYinX=&7MyqBUVmlrVqs=&vFW3gcXcWlehe=&k_5_UTWchmjrp=&puxpqsUslZirn=&xKxa56YUejp_g=&7tTmLEZsgegf_=&kjgvjyYk_fkZ_=&UHGqFDZsWjcki=&pPWFAOYnefrVq=&7q3oqjUn_rXhe=&_de3PZU_jfhdY=&AdGg9SYpiaged=&eulRT4WVVgVmW=&HBeuhOZ_nXWWZ=&x7G_jGVZjhn_a=&3kr_2gVsXWpmm=&TbXMOvVjZrsb_=&VSXCUbZamZfqn=&FyEuHpZZeXXWW=&DLsaOSVgdWpbj=&yv2Vx8ZnUehne=&fCCRyfZaq_gno=&Ek4w2FUpp_lrg=&tewMmOYZh_YsU=&iiJu3TWjkhleo=&jqUSWUUodopcU=&CpxjJmUY__cjg=&bbD4Y9XiViich=&GJHzK3ZWdaUc_=&tbyB5_Zr_Xqkf=&6dFh4cVaeihjj=&fgvtDaXZ_anbn=&CJ9gYVVfXrnqY=&Gw7RzHUVo_kZs=&A9EFATYbhljqZ=&e2KRO4WecfZoY=&gnKFuHUpdiiY_=&goIsWGZgchlnp=&mhzCgkZnsprop=&FnaNMDVaaqoWi=&c88JWiXhisZUh=&PUvVwfXiZddfk=&ZYt5taXffnrnY=&DB_U5EWZrgYhe=&ohTCefXVlmsYh=&DLYYBMZWckoor=&PNUvxDYVrcgmY=&dIMyzCVqWUfcj=&smSJdjWrqXZUn=&V2qUPBV_YXjZd=&vZ2pWzVkgfY_Y=&GTkBpmYZqjXeb=&V65UJ_Xil_hlW=&EjU6VzUcjfjrV=&sj7dVdXdXebbe=&b2XHTwZpddpkn=&DOuIEPYmYVdfW=&qJ7MokZjWhbos=&lwi5fFWfXWXoV=&VzBo5rXoaddnl=&CYhiuCUfmsVmm=&g9eCoVVdikpiZ=&7NVwBaUddoUnd=&V6Wb9BZllqZXc=&6WWTfvZoemXfs=&S_sxImXjXaadm=&PbV2ctZrhcojg=&HrHH8eVieajaW=&_PvGlRXebksgl=&5xZdffXVcdhqo=&nnunU2WejWkWW=&5EQsqeUfkpgWf=&fbmM56VpmkaXf=&p9_OiYVW_qkep=&c7VWTlWZYqfhd=&pI8fwCVb_dslW=&UWGcVWZhpqglm=&fRhRTqUfZUsjp=&296slLUWjZhZb=&ZOPEk9Ukki_fm=&qeufpNXWZhksr=&2xwk7fUcpZsnV=&MTgw58XakZgrW=&p9Yc8BVhqVbam=&tQRDm_UaWohne=&9gstN3UsWUYgX=&NZyGqVUUfpXal=&rVchWTXinddad=&VhCm8nWiarogg=&7RtUHUVnUiqca=&c52cIuXcWhU_o=&w_JYNdVrg_dkb=&D5muD_YdYUWnl=&o2qNlJZmnsfYc=&BjJlqLXndYWWj=&mk3SnzYo_hbhi=&jVgrhNYdnnlrh=&Reh3TPUkbUblg=&yy4Au8Xddbsef=&Duf5CMUYeZjcV=&WAzq4gUjZcrUo=&wUmzH5VrjVkYh=&IMv7XrZkdbscX=&7BzWFiWaoVYXU=&L2R_BVU_kZVmq=&uEsRgEYl_fYmU=&72KbX3Vcpsgrb=&MKwNz7VYcpfi_=&FC7MxnUWeWYec=&D28hpSXWYhlqn=&XxMa2BZiamcka=&2SFSvVWsfdWWb=&ZSUbUgWeqVsYk=&Efv3BDVockjYj=&TfECnFVigms_g=&NoDNeWZYblYnU=&aZoSgeVmmspnp=&KtlQFbU_hqraf=&gHytM6ZfUhWZa=&KOGVuWUoXiZVV=&gDbuFOWpqmgno=&cY7JfNWrbXnYg=&lUireWUXYnhZh=&p946wQZqpfepW=&kshDxAWZiZWdh=&4SOg8TZgYroUY=&rXoRwrUUpXWYh=&hQOgGhYieqdsg=&OtLlQVX_cjVgc=&zUKGRKVgmsacc=&rwHXFlYWohZoa=&o8p8owWpaXdih=&iQEDPwYgXlhac=&6XRdhVXYVWVmU=&UccMDZXdZeiXn=&vBldUoWUjUUZf=&C4hyHVVe_goqc=&c2XSsTZUbm_am=&ckWgHHWpUhfaY=&Zy_m_zWlbkhsk=&8nXZaAXhggabc=&ynZRbwZigVaqj=&pFVvHqVWilsWa=&ov7ZatXjpnV_p=&uFCQ3XZriWbWY=&gciyrCZhnlqse=&z56rYRWnWaigi=&_iAgeWVasa_mc=&3SKvQzZnUVefd=&jscBp_XZpddeh=&7Ei2h5UVmqoqe=&8bHnt6XnksYUf=&ROI7WNUciinjf=&9m5lZoWUgqVgs=&QyeUhZUiqWmeV=&8rv3iLVcWlnjr=&QAv6v7WrgYm_j=&JDYzrtWnijjbg=&NdNfzHWprWqkn=&ghN7opZjckpXe=&MY4UTGXUVY_Xs=&AO7Go3ZmVoWXi=&OeOmPOYZZgVmr=&t_Ymf9YelgkqY=&SKDKNIVjhnWZq=&zJKZCrVqXhVpm=&SSlP2vYskXonh=&gjmtFEZZlpfjk=&g786YGXlhjlgg=&ofrlAZYVnjkgY=&v6VsxhYUdZmXd=&loOBCiWis_Vdb=&fnenYGWYosfWp=&yUCGDuYl_rjip=&H6eY_pUUsfYjq=&AGyQA8UfjYUic=&XLi2TBVlhqWkX=&RZpK5jVgaUem_=&3nx2owYgUjUfk=&Vo97tKZddiacY=&e9K7EIVjYjfVs=&RZrHPSXdhbVep=&Ckvk4HZefsnod=&CJSfLAZnfkajk=&SMbRw2XhcYalp=&dHyvYnVkqskc_=&3m9RmgXfUnrjf=&yrarAxZfd_rhX=&95iWfgZlmgcVd=&flxsj5Ze_dhkY=&86hRfoZnUqXnq=&HpIOv7Y_roboY=&ebuYGDZaWoVhi=&SAWQgvZdaqgnr=&qU6rkvYjhjUsV=&iMVbDeXqVZeWZ=&5flGiZWbsrcdb=&iVatkhZggkYYh=&ZdYR8oWbrVm_U=&uvE8wuVgdjjsl=&KBAeNYWdeiejV=&jOeuLhUeaqrng=&XS4DOtVsdYkdU=&VhhLDLVlrYoek=&Fc8xrgXicck_q=&YyujKZZdekmlm=&rJ6Bv3Ymdabeo=&F_3oVAYpacc_o=&oJ3dw2YanakVg=&8PgManU_rp_cq=&LFdStrUhmespi=&psbplNYjfbcpg=&vS5pOGUkhqWgY=&GkpeFWUgVorli=&r_ZTXSXWYmlbe=&kZdrgVYhkYimg=&ZeYFq5WZcYenX=&_3YmmPWXoekUf=&4Vzi2xYpsgXlp=&UVs_UxWrfZdVk=&vLaa7mWkikoYf=&nu7ahFXZrbrjs=&qAiXxZWipgVao=&JF_opOXaefUUo=&_YNBQgWrikofr=&RVFXZBV_XY_kn=&naBZQtZmioXjs=&Rn9b_3Xj_UaYs=&ZN7VJ_Zlqqboa=&GYveHdXflXjel=&yDxOtZUqbbnYi=&EvddGQWY_rUrg=&JjTYwwXeXaacW=&yN4NefZojqcil=&2XFYWCVrnUZiq=&CfqNQcZbdjqjs=&Pm_jLFVVZnb_m=&A4C_GNVhZerje=&Xw3FWEWXqYZbk=&sWR7gvVnpkXYf=&jsdFC7WjZXspg=&_KlXQcVUrrded=&8jZtmuYXUZrdd=&m7nULGXeZbgeY=&sBS84eYafs_bW=&_5AnGqYoZid_g=&2wLvQQZ_lgmZV=&wZ_vJIYesrVYa=&kOudLtVWkYfa_=&SeOyc5Zrbjiih=&jIPsBpYhieXb_=&NPc7RjUss_Vnj=&kEtl9ZYsYXoof=&8U2BrlZohoseo=&h5j5dnWncqmUi=&DumEGfVXcbpbU=&stYLXlZeaebap=&j42EWbWZhmUZo=&bGr5K6Up_fZmb=&OousAKZVirmke=&x6IqJUXnYdZfX=&W6E2nXYachseo=&rmXjZ7WoVYioe=&CdwjgFUUXVXWj=&oDwpjeYcqgqdV=&3PgDM5YsqUrmU=&WYAXV5UXmcgrV=&Gu4yDNWY__jXg=&CQbH77Zaeiiqa=&W8UooVWlWhbnn=&lUcdkvXranbXl=&EfSL5AXVeUncc=&zQTYYJVprUdll=&OaJFtxWsjgnmd=&_RA8_BYUfiZjV=&LaotFiXdsZqWp=&7kZqv9Xgmkmdl=&dbqaItUd__afg=&ZGamCDZUjlnrU=&7nVsQDUZnUXaV=&nZtRA4ZmjofpY=&JoOgxuVkkYsos=&2NNtdGUiacmpX=&sAez2IUVjmrio=&ZNj782XogXaqm=&FWPkg6XrhpsUY=&aqVVkjUVqdcjd=&O3unC8ZifmgVq=&Is5GHoZY_khUU=&ZZIC9qUZ_YsaY=&wsfJ8bVojbaWk=&wP5OldZsbYppU=&aAHHcmVnUo_md=&pWOY7yZXiamdZ=&jRA3D_VWcUUbo=&JgJ7_hZYkgoVo=&2b3Zg4UXZgVld=&riq_H2Ufgicsl=&9jzBOQYnnaoVd=&_IsiVuXlsjqbU=&54Ton9VasZbds=&KhutUsZoqk_dh=&qTWClPWahoqer=&hweJKfUrWofme=&PSPJPYVXbgiZX=&GwFNEJYmbneYk=&QjucEDZbcepsm=&uWprt6VUYhamZ=&A2c4EFVWUajee=&9sBdb5ZomqXpZ=&indVJZUemcqcY=&VuhW9UZmionjY=&589Fs4ZdWVcn_=&zACu_OWgln_ka=&zCKr_oXadWWYX=&tokAssYahdalZ=&_Q_uc7VjdYpap=&X4jMq_ZjaXWVm=&_59s4SZYWaorU=&F5JgBIYZnseWe=&uFXsl2YkrckUY=&AA33VtZcakqnh=&uH4Y47ZZpqWba=&jGkGlJVq_Xhgd=&bytj_qWUen_ab=&RobHs3UeqfgWr=&CF3PgxYkV_aaf=&9MAcBcXihWnfi=&DHS7awUeVarop=&nuJNC5ZZWgkfb=&kjWp9kU_Vec_Y=&izFAqyZZnqefr=&a8TcZcUneoZcU=&p2Kxr8UfpUhif=&kFtcQyUdrei_d=&jSfSLpWqorqhh=&6kW63EXZgddni=&RBreYiXVpqenU=&UrXeuSVXXXn_U=&DPC5_vXXldhnm=&5OUnSRVjXbXgY=&CoZpOOZXrXnfX=&FrwjQjYbmfVom=&vqsloZXjcYshV=&khVKhGVrbmree=&XG2zQMZZlasZi=&6Ip6TkWqsgYsr=&jLRAptZfljZYX=&ZynvkbZVpgice=&2NPafMWcfmXjs=&nBgKw_WXbkUWf=&CfPyE2Zaggapi=&EM5FsEYrfn_ip=&gyibndVniqmjX=&tQqfbaZho_Vsf=&7XiU5QZplaYj_=&7Q_xwAZaVZano=&ACImP2ZkghmX_=&nP3iemVnbd_od=&GG7pBRZndpqm_=&iz3HdqZpmlbrr=&KstDPxUiZZjsW=&Gxg4FIVrcrkid=&uGTWIEWjabUpZ=&igWcbTYpqld_c=&3lhSD8Vahqqod=&gIycKVWcnnmsc=&bvwXmWVoWkjfb=&ZmkCLgXgdZksm=&7JqrxTVajcVog=&RWf7ovYYqXYns=&HhvRstUbblsoj=&qEGQFnXecslUf=&FP4wRzWWlgbgo=&LULA9PXmgWUdc=&5FztxsWiqXqbj=&zYTIwRXopUhli=&2gR88NYhaflbU=&UGnC8EUonYUig=&nw3giqZirW_pd=&6Wu4oxV_Ujhkd=&gvYj9_YZk_Ved=&488l_qZpdWk_a=&ZzPQl5WZnqmVs=&hB_y2ZXl_kkbm=&qZvWdEVbp_nqc=&ZCg6yWUnVcfrb=&5uHkkLZhfhirW=&4oWesaUg_Zemf=&bksf3XYZiUrVl=&SDpRfUWeZ_kfj=&YXY4IBYWUsdlq=&RQyVNYVaXsjol=&j96JavVb_mcnW=&l7CUZtVcWVfUl=&nAjZQpWdjisYn=&lFiBDcWdoWbsr=&kqe3eYXgfWnfZ=&i7IrRKUsbqo_g=&6UhKhWVpmYsrp=&LXdUhwWqfWbap=&OBLOnnVgiYdan=&q6lflLVsclbZW=&Z2Sim8Unqonkg=&DpUHGnZrd_Uec=&unsPZVVaahWah=&h5GEiMUmslsjq=&fXbsDpWqqrdii=&wiPKqNXValjkn=&EsjEvYZggjWkj=&AelgwTZfVfree=&icLHxKZnophaq=&q3Ww6xYaplkaX=&sR7pGmYsUWWkh=&FJsjEDXreephf=&iq_uJNZpicgrW=&LRaJumWjXkfmn=&nZvwsLYsfqecc=&Aqwd8cXYnoacf=&5YBEdSYjdisna=&p5rmrnYdgohhi=&rjeNStZdddc_b=&89nWiKXcrZhqb=&TGGunnUn_plZs=&p6bFARUmcaegm=&FvW7POWrlkdon=&avPzuIWplrlii=&M68po3ZXpUfok=&ENzRytYZkUpar=&jTJk7QXaXjjcs=&bLJy57XggYbdX=&T4K6IfUsseWgb=&Af2a6gWcngmsj=&9GiggrViUoaYV=&BXa7bTYjdsssX=&UAZQ2fXcbjje_=&2erHahYWVdarg=&MPOPUrYdgnjhk=&GDrM9tXnqoiYq=&8RS2HFZbWZomZ=&ALiGXyZaqdrjV=&FPsLaKUssrYoZ=&Bqy5ACUop_pee=&9FW24jZmlXmhr=&8rAnQfZj_dcks=&YAEYfvYiVWqio=&xvvrRFUqfnsng=&fuhGGlUfgdbng=&T24R5MXYqoVVm=&5ISfCHXYbVUhn=&vaGzmoUeoiXs_=&cjv8nxYhgUqpi=&ng8WIXX_kamWh=&QfQsxlZejsois=&ieVCG9Xmgjolj=&Tc7jUwYhgi_Ue=&8rqLw6ZikYpgb=&ZGYTMlWehZamm=&Nj549UZVbZqZn=&tdtYwGXXaZqah=&7Nz4r9Wfhd_ig=&pdiELRVaqUphW=&QCMnfzZUlklgV=&Vp4NPMZ_oUrlp=&6RiT8BXWVoUq_=&mrZuwCXkdWXVj=&CF8YPhVag_Zpo=&wqwmJPZUiehdc=&dHlU3FXYeslif=&ZARCugYZUdWif=&UPkFS5XXmlhaj=&TPU3RkUneboqe=&gcVgaDYUqUked=&gJn8eSZZkdpUs=&UJmxT6Yim_mYj=&WrHIkxZhsqpnm=&XGXZdGYedbYcb=&ZSIK7iYqdacpi=&XfyYLKZVbaeif=&EhYVtAZWejidd=&LfaEJvYkdYogc=&D8TD4BUndadnl=&rotkieYeXWaYm=&Fe2UrHZhfpkVU=&MnrlZ4ZpbbmXp=&9Gb5tSZjWampW=&Bd47ZGX_gXppd=&VJirorUdYkZqr=&OF4ggeYkWllda=&gDPR8sYjYVlcY=&DfVrCxZcaprdW=&BLZrEVUaordph=&o44kieXdnqiWo=&taAf5lUsZfofd=&iHVzCUZcVcoi_=&7FUVsMZfmoWql=&3gkc3kWmrZYps=&EQjTxoXlspXkk=&wbu6MvYkkcXlm=&Gmt739XqUmV_c=&edLzOoVgZqrmj=&ZzARaBVej_lmq=&4abBi8Yjpaogp=&xbOE6LZmioZXg=&bgvTSAZp_ogpZ=&fhRkz7YbqjWro=&nBDwTVXe_jfUj=&yHmXC9XY_kjjW=&GHoQyZUafraj_=&dopT_gVXli__p=&Zfeq9_XomUWkk=&hfKOtfVdcXnmp=&GXBKepUlglYfh=&HmfSlAUZscddV=&ydjJBIYnlqcps=&N4zEKLWgoljZi=&gE_oEmWYnmhjs=&hSXWsZZdZVo_a=&jIAXKhW_VYdoc=&nh4NYdWYUUcrj=&DZT639Xfnflpb=&if3VqUVaqfamj=&zCWMuEVgmboYY=&FegQtzXbZgagf=&FlE9JOYgZriWm=&rv6KUuVsfcY_s=&WSLPIRZnedYif=&UlTGNIUVUpfUj=&VkjDVeUog_nmi=&MP9T3NVU_kshs=&OvXlAVYbfakps=&m6_A8mXehYXZZ=&IIoSloVacfYXn=&BqGnwSUdVdkig=&4NUnvzXqWU__h=&dDdP5gXXoXgoi=&6yZkXZYiq_nqq=&Z6r7v3Wijgfpq=&avLt5xXXoWnoc=&RcgCDwYijkfaf=&AJdaOnYhUUffn=&fBO4ufZaXnUk_=&OOGytRXZeh_aq=&HtTgztVsgZdqp=&VwTTMCVjskdZs=&iKfXj6UnUdjbZ=&qZyvCGV_WWVWn=&i5WNgZVWhVfjc=&EJwPRNXXndmqn=&xqrGYKWsdsjmh=&fRc7PBZj_dVkV=&I88tWcVgjkZdm=&XnoZgVWkcgZrZ=&VAOMwBXXjrYeb=&d8QlR4ZsfWfhW=&sp8YUgXrgksUj=&NKBZH9XssV_fe=&uyslcVUYXYici=&vZLDXHYdmssjn=&RBGRWKUdifh_l=&OyBWoEYbkUYir=&LOuhlnZlk_Vqs=&cr7xf4Wcrocpn=&vLPQMwYcVkZhh=&HU5YYeYdiiVlX=&7s2thJZaegXjU=&sz_qafVpYeh_U=&FqTzPoWoXlfqa=&bIJrKeZ_rVhfj=&Aoz5uQXnlkZnh=&W6TLGoXVclZoU=&vVVkUpWfUhZhZ=&HWaw7cZgaVsga=&deyWKhWrpsmX_=&keREoAYcoZgho=&u7FeQiWmmgelj=&SaEFE9Wni__Ze=&gCqnvtXkilrbW=&L7ZhN3YdojnWg=&OdlOtLYqoiiZm=&Hs7fxRVVcncdZ=&qur9VJWeYsrcr=&QcjchZWfrs_Zb=&ePyPQZUri_Wcd=&726SJ2VjZXahs=&BQniz6UpWUkq_=&cAQNMuZVofors=&8YTqqqUWcZoXZ=&PNpWCuWffasfn=&hoEIoKZ_rjXdj=&KmH7V5Yrdgrqe=&SlrXeaUjUYbYe=&Cc2PyJYcimYca=&xBb9BSXkaYeeW=&odB_RPWXUq_Zb=&8eA8axWekUVja=&XrW63oXeUnh_l=&xhEH6CXUbZonn=&W7aKsIYdaWWfj=&a8CZTwYondrUZ=&p_cHHiZXWUhUX=&hVwIdWV_lffU_=&3xwC7iUfsqips=&HLHFLBYproWZi=&_6c2YCX_llmko=&YwHioPWfkmbpY=&ATPIpwWV_kfeW=&b7brCQWXggWWn=&t55VftUjmrVsa=&JgfaysZjqWpm_=&gyHyrNZsXaWko=&PcqM8FVcaUiXg=&qDh5lwXUlgrWb=&CWLEM4U_espoe=&tesNaqVpcjbsh=&wojQbfWiffm_a=&xGdjjfXsZbYod=&_bAy7rYprbarh=&oid9xCUZbsrrj=&zpPvsRXqdaWUi=&6OQuOaVaomkqX=&CBpJ8mYrmpnXn=&OwKFrZXbVXpbc=&cmDjEzZidWVal=&ASmYerXcgrZef=&pMSxWvZdXjiUc=&bNX2a4YrsdjWj=&FjGBp4ZnhoolU=&aq2isqVisZjbq=&iodoiNUjXrgUm=&F6siuAXnapdlY=&xM3EqlYhkiUbV=&ov8URRWXrXgjh=&DBMsUGYgci_ns=&gnzcEhYmbnohf=&ZIqsouWmscerd=&e3m9tUXiYmWgj=&DrJOT2XanXiXm=&RpRKLsUjefWUl=&HFzdeRWdUrUim=&kxWmW4WZmUXiV=&yj3yfWWVrapnn=&4dGJ3vZZ_Xgpr=&4cEkmbVb_rrar=&rbQUMtXpjgelq=&KuxeotYdUbWof=&SeruvnWjbrdhn=&NRpwGEY_mVgep=&G7yOs5ZjbWVhY=&d8cRTPZXk__eq=&xJqYAsYZbqrmq=&q2tXMjYqhcbUb=&S_YpHvWYfgkjm=&FySHjFVVqbrkh=&YXi2raZailoZf=&V6M_AEYqspbjm=&HKx_V2Yjelcnc=&Yj4ACuZmXdXhY=&ctWW6OZj_bhZi=&UxWl_HUlYU_Wf=&7nV9rjYXqmhml=&LeSgVzUhlXYhY=&cy4b5aZhVZY_b=&xbkvcxZsiXVka=&Bi32zEZijlgbW=&KjFpe4WqbhiYb=&e7Nis5WVinjil=&3pTkIgYeVognX=&NnC3_JZlankfo=&l964wJWglWphk=&BpPJh5UebkdsW=&7nkTZDZmX_qlY=&3Nw8RuVmnZeof=&6qUgdeWdj_Unc=&iRWAA8WkaeniW=&fSPd3IVUfjrhj=&mlnCyKXUoZVeW=&EQK8tAWckVgcs=&qIVZqzWeei_Wi=&LuVIC6Zcgfcsa=&UqmIIkWcWZedb=&5yVFQxVsnUnoZ=&GpdaN3XgZsjbe=&Xfr_KvWdpiijg=&WAegY9ZdYasej=&b9znt6XqoUiZW=&yBzRSFWZmabbe=&2Wjf8sWl_iUdd=&kKqLoWZZeYdkX=&kjwGtsUm_ZkZj=&nx6JKAYcem_ij=&EUoJkjYXnr_ck=&XtJrRlVYac_hf=&K_ueCWWnfjjad=&WRCFOGYnoq_W_=&amF7gHUiVejZk=&RSzojiUaVrcYm=&8WepzwWabXnXk=&DLNMQjWYdaema=&Vl5OtZWkjhmYn=&iw5ZsuXZlkccp=&AhbOz6VUgc_dj=&MLcg8QXZhmami=&JaHchGWproXZc=&OnRaIaZWVdlXW=&D7f68dYkggqWa=&2l5WcLYnkqneq=&w5eD7SZqYpcqo=&OMv32DUaiXirk=&xFq9n4YrWmcac=&jxckXIZonjnVZ=&qKXtXpYsV_aWa=&zcoNPNZsZjUaU=&ZznLfHWhVY_ap=&KzfwC2VhWohnY=&ySHhRiVrmYgXd=&pknRUyXeis_nc=&cOS9vSWijrWeq=&amcvYWUni_qaV=&rzGodNZlZiphm=&ma2UcLYpprmY_=&9enynoWdgYbVe=&68gyV4WmfgZmV=&dAiAs2Xfpbgho=&t7Om2sWgkpjZa=&5wKPYBWqrUVfW=&HU3QJyVcUkqpV=&yp8Rd4YbYUpqa=&QaMEymWfle_qp=&fJ4RYkUiiVsVr=&WjittMWUfjjbk=&gZMGRwYZrfZip=&vg_AzJYXdngdc=&s5uWUvYeWggbV=&tdpcMcVpcpYbc=&jeCbCfVnjacil=&DDPSaAZhnXp_d=&EKPlMLVaUsql_=&sPaV2IVYsaimX=&NGaNFOWpnWa_i=&XctcMcUpXWeVU=&C3HyoZXhUVqci=&pwKB8yXnhgqli=&IPuxtZUngcrr_=&bU26wHVZcfYo_=&INzL_IVmeshsk=&Kq7rCoYhokmfk=&58RDtZWbcUhmW=&bhgQyRYZpYfls=&9CtN5tZYopdha=&_VyOCuXcXkbbW=&bq_UDiXoYeklh=&mZKns3XahsVai=&IqKqzrU_pmXjY=&mdcsCnWfqoXqr=&MkottWUlcaljs=&O_ayH5Vcleolr=&ZY_LZwUiZo_mZ=&Q3Za8zUUlrgae=&WPxoP9ZojnZdV=&HeXauaYZqdgng=&2FlnLKYdgUYWf=&BaoU9VYZghibW=&DsEGcsUlXegld=&_WyW9bWikqmos=&Ab3FzBWYojapb=&fQBS4bYalpYpg=&JJ9mHxZbcZjqd=&cMbmI6UcdcoWq=&hIniF4Yfm_pl_=&3LjNsKYddfkiZ=&IrMx45WaXfbZ_=&BMj7xhZo__jlY=&cQvRwqWeqZcrd=&XsdxzoZUZrpop=&aE5icOYmXYoqU=&O7wqoYZfeXgfd=&qZL9xbUUdhskV=&WG3CnRUaVg_YU=&a23XmuXeomnla=&vwLhlhZdpniVh=&_bbrLiYm__mdU=&pTdywqWmhZlaj=&hIyLUGXsdUjXZ=&8oZ26nVmjlfdX=&v6GYsiYYZqoak=&GrQZQOVdnhlYa=&yqAtjZVdfsmnq=&mN3YXEVqcUoXd=&9yE_UyYnYZoXW=&p8pGmGYlrjWah=&mX6Lb4YZaqrs_=&2hQrrqVmW_XYp=&ZBEbGoZnl_jsW=&HKJvXoYZpndsn=&c4pGx3YidYeZW=&tFhIFlZgfac_W=&_8ewQgXYhWkll=&IduEBhWdVgVgZ=&ptSbeSZWa_YXU=&MIOlPLXfiYbal=&K7o_RfVXUqZq_=&ev5LzFXnndqqZ=&NfUr8pYpjages=&KW4UlHVYiqkkn=&LMbhJmVqrdhaj=&6vAtsYXldZqs_=&HmGO4SYqckccf=&jEGrsxXXZbdZc=&eMFaUEYdqjcUc=&qSgQxhZjVpafe=&JTrFZMYabZb_h=&oYeG9NWqVdglh=&yEyDsbVsYXmp_=&SDzXhXWqfrqVd=&ZkYFeEXeVbkio=&hFw6KsYpXgcjl=&Fn_9vfYgbWgpX=&VIjpzjVhUWooW=&wPRahVZlfnpe_=&hvPkWRZaUlYcf=&uH9EQiUmipdVb=&ONyo9gXolZ_mp=&xIn8WOYnYmfYi=&HDshelV_iXjYY=&Iwv8iEVoYYWZb=&8cREtdVrefVgV=&eVa3F8Xrdjdbm=&d9oUyYZ_joZ_d=&Ry26hvUbchcln=&932j7jUfVf_rs=&Ym_njjUYaUiZf=&AcjrU7Vgqrdoc=&hCsXDaVhirVVr=&AJSbHdYnmYngh=&2Nii2SUWkjZdb=&4Z7WcnXcanqas=&M8EzKnXpjggXc=&MlM7m7Ukairha=&E27eTpWparbqj=&pcXKJdVhodqqa=&AIU2hZZmVUfeb=&53pPy8XZZnYYm=&XjJD48YaYZrXY=&3hZeqzWfsqgnW=&IVGVbJUdsUWld=&ttRSkBXXYphef=&uA8_E_ZgXacXr=&jXFy5GXjfa_Wr=&xeAhYQWilhnqW=&ouZluPVaYpbWd=&6ahxZCVeXggXm=&W5AcvpZdbgkph=&STQvrCU_kYoke=&I2DWJyXqXsgUg=&annHX_Yjkmmbp=&7q3CevVYcmWkV=&tAIEpXYfkdpbc=&XEKyR4Uehg_kr=&xFJMN5XgrWnUm=&bhKCGmWcqlYam=&c8gmQ2XqbhYUq=&HfQ_tDZhadjXU=&HTdj4sUkjjoas=&ABXjIhWaZkpmd=&PDQ4U4ZofVi_k=&eLEt9SYgbrWrc=&edKIhdXYmkecp=&LpuDtmVfkaqfa=&fN4FOzZjUoknl=&sCxSGmVinqbgf=&NYKxs_VVsXmaW=&JqKN_ZYbaYqYh=&dOYfweVcogbfi=&b5jS3gXjoipsY=&2rvegNWemaUgd=&Fvf7pxXcfprkq=&2Snal_Uhpr_sj=&RqJxngUUbkcpV=&2qCT4UUiemVfW=&u4wk3pYknkqem=&i5UPjrUUaUhdY=&aU72AJWiXYrdW=&72K8R5ZWZjrYY=&8NVL8hUl_Zkif=&GZkoooWcobWoh=&k9ocuiZWYfYcd=&tVLGjjYUjjXje=&yLHUlAYbonWaa=&yQZjlxYfajWbo=&rrK4RbXblgkhU=&UDzUhpYZjZVbi=&dmsNIbZVdUUgV=&wYNQEPZqUUngZ=&6bsigNZoXVl_i=&cw6v8gXosqbUe=&_UggDCUXYspso=&v_vP6LYjlZUmj=&PLggm3YqUrncf=&Mdcu5yUac_oVV=&MqzdhZWmoccpq=&2qUeNSUrnlWYk=&zn_vktYlakZpa=&BB7pKRXoqpibi=&UzbTN3Yinrkml=&TzoZkvXVYagqf=&YPIFruXkacnph=&J53hQqXXboZdq=&2LJYtiVWgibrk=&6bZMstUcdqehX=&MtR5VaZlYiUWs=&DrxfgvVrqobli=&MQA6DSV_mecWW=&nF6QiWWYiWXna=&2CKWgeYkWZcbi=&Urv3QFWscepof=&tX4uyQVakkYcl=&IQf5ohYqYfXUl=&DGul5KUgkgnU_=&ix_6WDXZUWZcZ=&BlANRRUejUeoV=&zmqdNeWqaehYf=&sCSdwQUskcVnc=&DgiVVwUn_qplr=&Ax5r3aZjcdeai=&zrtWzHVqehbsr=&UNIIdIXZasl__=&7XaXywZnnYkae=&wca_omWUcmmeb=&FGnhyeVVabghc=&y4aGCJWjUWU_a=&_fBEHaYliV_pn=&rrWpZyWcjhXim=&DvRCH7Vchrfeb=&8t5_S9WceaoWV=&cCyPklUbaaqiW=&kIM7EXYsUpYeV=&yMy5KOVkgmrof=&mlLcyNXYXWamq=&3SuJadWUpqncf=&Rl58WJWfXeekl=&ZHbhmrZnsnZem=&BaGYG8VndUkke=&EGbKvtWZi_aVq=&kaBmRAYkihlhW=&ktbBMjUarjmlc=&U9SBQpVgbilUm=&C8I6vRUjZinXf=&jCsLvvWYnssqq=&CYBaZzZjWbnWs=&OkAPjzYmcWibV=&UtXQY7YUhZrbn=&G9m6fNVhbWWXe=&KyBhtFUgYZofj=&JsMiCDU_lhrWk=&gdRUyHXm_oZdX=&Q7oPZ2WUiUpl_=&Hcx_eUVkoggrd=&PoeShnZhjghZj=&FPWx87VlskksZ=&nKEWXeUVaUfsX=&4qvpPOUeemh__=&KYS_aMYgWnlf_=&vK5moaZigZa_Y=&ZNepAtVepecbo=&YxEAluZdsid_Y=&vBENsfVmipgZs=&AGI24dVamaeXk=&Mb4x64ZUaphVi=&R96IcAYhlngea=&kYuReZZilqisX=&XSzwPuZVnhadp=&nOeR8DYjqoYfp=&MmQ9WUWZq_ojl=&VhQDPVVmbaUsY=&udHaYVYhcbnXW=&cjtAh3UUpclss=&jkJEiqVgXdYsU=&WZYmEqWacenoj=&e4qn7iUZcedid=&_Gbg3AUVXYgbr=&fdUqzpWXsdmcr=&YDO7yCZl_ZgUr=&G6VaIlVqU_hdX=&oOQ5PpWonhokl=&qtSoP7VYdjfnq=&xHiuDaWVemale=&S6najEYjXUerf=&8UkFxqXfjbcVd=&xh2u9YZZZfbri=&reGs96XXlVrVd=&DieEqEVd_krhc=&LLvDVlWqqZfXs=&64Rp2EWZjanj_=&cUC5OxZZYmmbp=&gDNlapXnljUjm=&TqfOBsWophkVl=&E9bfDEUigXlco=&CXody3UXimU_o=&BpPoz8UmUjrdd=&KvoKgTWjsakjn=&Ikws9KVWkgYhV=&HkHwjUVYlaZrg=&ds5b8yVjhphjU=&SBedMPVdglWnU=&oHrws4Xakrolf=&wpb66KVngsWgp=&_hmbKPVr_lede=&pSxR4GZUjcUir=&T3_pFJVkhWc_n=&h_yphzUeeVUci=&wYoGG6YiYsroj=&h92QF7UVXchpo=&_WqLiYWirsVhb=&SUTeG3Yb_b_oU=&Ql4PHlUYcemjX=&6D2TU2Xfsbekj=&YlOd5qXjcqiZo=&HoeSvoUdfpXpY=&pbsVdvXproqgl=&l5vaSDXloUesg=&NiXQdfVZWoajU=&takQoKWrkef_W=&hzuUPNUjhWsd_=&IC2qnyUdli_jU=&h2lkQVXdfmfWl=&uJPQmpVVookiq=&MnvE9_Xkablsk=&Wg7RGCUkq_hpm=&a8qRVBVXrjkYf=&CkTX2WZbZUWXo=&B7o8HdWWhjhhV=&TZzu5MVhocecW=&T_cFClXeZsYdb=&TYiYB7VnUYbsq=&RkoivYYrkpisX=&oZ7KqYWrfpUWh=&U8IJNXUWjm_iW=&VPu2aRZ_sZcVa=&jEiSxwYhjVpcl=&quKUdIXmaZVkp=&iRlaKvYZbinsp=&IHF5WqUjibdjV=&gFXcvIUmsYYie=&Dr_Z3HZkV_jpX=&O7IahBWjqWbVa=&hd_jmMUnkjXVW=&8SSKvSVegZonk=&uRz6GjXimnork=&lj4J9JZegldYd=&jg8svdXkXaXos=&XRttozWYkYgoW=&ZLa6GUZgbsYYm=&YtvtcnZfXm_hh=&axuxpMUrsVrWV=&pdd28PXdrrWhq=&Pxmb8FYhnfpUq=&tQJTfIWZVdfWf=&vyCZeHXbnsach=&gFVobjU_kUsid=&hztyQnXq_ZWlW=&Qi7lNXVbe_rej=&lAWnypZkWXrda=&Qaak3FYonZkec=&E9iBoVWsbnghW=&7c4RntVlYmXYU=&5MsShXZbsgfog=&lPOqlrVYgg_oY=&VAeox5UdXasbs=&2T9DKnXVWoceb=&TjNSFrZUWlYWo=&A7jEARVWfUcaj=&HeHK2WUYX_jbb=&Tah5dWVpgjcqr=&rkChRNU_cbibV=&O5reJoU_jZffr=&bLX3c2XmoWoUq=&zEOw2VXhpaYXq=&tWuaMgUlirjYr=&gFWaC5Vdcjorm=&Voa6AkVnoVhnW=&RUykc_Wfhqgqm=&wUPrssYWaocad=&_nzDLhYjgXksY=&HGcghxYWXjWag=&G4DLM9VhsYcrb=&LqyRSyYXng_Xo=&Yt_dKEVgaspgn=&Nmj3hGWhZksrb=&NubJqdYrpqXdb=&YCTgtTWbjXsol=&foi27SUmrjjlZ=&Q2vJlQZpjglhc=&gKNAmjUclserp=&LSdAEgWq_crdp=&45lcQ5Z_qcfdk=&3zStoKYkssprr=&FzjHTpWcjbjkm=&JpuIhuUgXabUo=&zoXi8TYglhnqi=&un8nndXbrgriU=&OvTkIMVVcUfgo=&k23aGRUZjfpal=&ED9aMMYinZiVj=&4YPJjSWcqfscs=&AcxGF3WgUrUYi=&ZVrwXAVUmhhmc=&XFjk7fXinnadl=&a6s5SgWfUbYpX=&vgqW3mVcrWapl=&3e4pw7YfVqdfr=&HfjpqcWjlfhod=&HhmjsBXbjjnhj=&lyMuAZYnZYeqh=&pgnlxQUUZbrXV=&opmjH3Zbqfbqo=&WmwovuWkq_ipp=&Si_QDoVpoZb_o=&WY7XOUYahWYVW=&3nDCQKZmjlnrg=&QfUXp9YaiWnbe=&RX7LZmYfWrciV=&bSwnmBYiWdsij=&5tYi9KWmofnXr=&FQ7mfWXrkpfqV=&ZeeITtYVqaZUq=&bEV4a4Wildm_j=&4mdutfXgnWnbb=&W33soHVkbnbiW=&CKuJZJVkgYZaU=&ofmhRoZmdkism=&bhOQzGXb_kmXp=&OW8mfgUom_rdV=&bda5ZFUWkZqjf=&5s5BZnWZZnjY_=&nsQj4DYejgqaa=&MDcmdkZdnpdgq=&WcqAqZUdeWiri=&36LFnjYmeqXhc=&2WBUIMXVbWWVh=&mv26xeXZaijcW=&WP5SspVdbXodg=&qfujwCZmeraap=&D37Bh9XVhbqbn=&vAHpI4XsqjdZb=&yrME9SVmfa_Wo=&mhJOQbU_UencZ=&zGL23LXinlUhh=&DHEVLEUfqiqoo=&Wr_ruDYkY_gem=&JscVMcUZaeiYe=&ucx7xyYmhXkpq=&CzoZQSXeVdksa=&IyYmgsUdl_sXq=&uqUy2BXppsejj=&RnhTLXXlakqoj=&rl9VleXXYmram=&JCmWN4UsXcfsY=&4pHns2VbsXpmi=&IQbphzXnf_phi=&Iha4Q_VUocrmh=&4LQIPxVfXYgkg=&zUmYJgXYoYYiY=&_3ocIUUVWVhoU=&QSqlagUiUgqfX=&l8Oqq7UUfcmjh=&7MYmQbYVjVWdk=&JKsLzCVqgVXfU=&xoptIGXn_apd_=&ITxCOsZhngidV=&P_cJmeZfsUsfi=&GNNz6qWYhehih=&blGWEdWYjUsVc=&jLtNpOYlnejla=&XcbmrWWiXcsji=&zBfty3VsbaXhV=&RtI5HtUm_XoaW=&GZESdYXVg_sWj=&gtuz8YVonnUhY=&XAItG5ZchXiYe=&C7L3SiZrWsbZW=&wJUhXvVXZjara=&E_pwIYWsoaZnm=&Vj7OJSXVWV_bo=&D7qSXqUciimpY=&IMWWWVWslkonW=&CAgzSPWsbUmoY=&GGN49kUk_anZV=&JHnN73XmfmUni=&76mSYoXomshlV=&FiiyqNYWrpkWr=&EHSYK3ZYosmrs=&MfT8vcZsh_l_g=&p3d9n8Ylbqj_s=&cGmqWgU_ggsYb=&5GOGRbVnsWppp=&YlN_h3XfdqfUs=&88F4UvWiYkbVa=&jHO9nJYXmUXan=&uvMaAMZXqfrmi=&88cNBiZfdVlpn=&wkorN5XfomrXj=&M5RtzwUpqsqbo=&wOsmEDUkimcpr=&H6ppH2ZeWeopl=&EVKqBfYbWZskY=&Fewo6kXkcobUX=&spMVLUYlaph_b=&NAk68zWejfYlW=&E8qylmYbZidfp=&ZijVmiVpegpro=&ymuQhHZWZfccs=&HI8QHCXsdXgja=&WZyz8HXXoposs=&qhVOuuXpXsdqj=&XqLKowUfocndU=&XVF6RlXcnqmcf=&6JSudFU_rZZeo=&sHU7ShVjbcZVW=&t_8hGAWrhhUZo=&7zBruQZdqmUnh=&IQSVE9YjlWaUi=&Dj4s4JUpchkXb=&eP5OSlZsqlhlp=&zJAhQKWlZhphf=&GSAaQLUbWpnXq=&eaWPtXUU_hkpa=&KS7LoWVngYbZa=&elyUrPWfecqof=&WpTPLhYqYmiYg=&gbeZbcVomksUd=&3Wqo2uXXZjYbX=&mrxgS6XpqeoYg=&Qz9pI_YZZdWlp=&C4v_HSUsX_i_Z=&Irn_tbYUdq_Xd=&5JgdEqZ_VkeiV=&jZ4W8iUabidhU=&iAmq7nVkWdfnW=&wFOLWcYWojkWW=&F_3vXFUj_fba_=&gJJcpRUVmWcWW=&vdCoiKXkefkba=&oTpmjnXeWoUeU=&kB2684Ysoafne=&wzCE3lZeUfmpW=&gkILWWYnrshsb=&A84CWkXUcfUkj=&wCLdHEXWrobbW=&dWGWwYXchXkcr=&VrvtIfVdW_gjj=&3vc56DXjkqkXb=&DB7Ym9VhcjskW=&p8H9QkZpoonZo=&w8DgAeYUcencU=&JVmarJVddhbWY=&GBYEBbZanlUfW=&_XLvLYXjVraVm=&rHJMSbZbVnXmW=&LfVNp4WjopVsa=&XxhiRqVXUUWdi=&anoP2YZmorehh=&VBjIOcWbgqoqp=&Hr6arYZsXhqZh=&huzU4wYiqmdr_=&yb__bwZpjbXes=&IPgEVVYkkW_qo=&H5fUclWmmWlna=&nwro2IYlaeoZY=&2Hgt5CXUUehfV=&gGC2eWV_UVodZ=&uTBllHUeUsgag=&ir4GLbXrlinmb=&DIBQgVZZcjdYY=&SwtYp_ZcqdVia=&cJ9RvIYrmqdfl=&nmDNaVUYkUekl=&UY2IOeWbdidcZ=&Yrbnz8ZgdVY_b=&RGOl3GYihbWre=&nLc_y7WZeXjYW=&IY7qCcVmWojV_=&2rkVeEZWWXVlY=&HouxCZWidbaeo=&hmBCuzUbderXY=&Qc9AmGVafqVgU=&VrG28nZqcXnpe=&JV9C9pXlZYjhX=&Y98yVRUdWXoYq=&uFqz8BVofmoVe=&jf4qMjVielYgX=&rZj3g7XXcpfik=&CsuCPAV_lqWZZ=&ZOu5GbUeqkr_a=&kgmZ7UWYWkVlm=&mSpS3gUgooYgW=&evdautXYVopgX=&uZV5raUlkrfkp=&bcN4MhXmp_qUd=&Qr7cVNZUopjVg=&pqwk63XroaiVe=&RapJ4MWUsfigk=&wsVsMFXjodrgh=&HVt_KZZ_pWgnU=&IbplQ_VXgnhki=&QZSNjaZqZfjlZ=&9PQudTWmsjpXZ=&lmfoeOUlVWpmc=&lIIzumZhockja=&eK9FctUillsYX=&S43qtOVWmUqnZ=&sF_kJpYeoplYY=&LTkcb3VlZ__el=&L_wfN9Vhfjeog=&SqwVMTUmnUVjq=&7wOEA7V_diWXU=&jtSAJTVlZlckl=&KH7owQUefqs_p=&kLmCakYgXqrhX=&eVAyHlVmnqfXs=&cg682RWYVrfme=&2MxXwlWXopYWj=&nDyZPzVWksini=&GgN2oHUXasUof=&eAOXhNYmhpjh_=&IoZly4Ybgnhla=&hZQwVBYnXcrnZ=&oBOEffUrYVmo_=&YdKAieW_ZihY_=&yOyrTyYUrnoZq=&QYBrf7UjlomgU=&HENhERYXiirep=&U9xeOGUsscklr=&M8bBbdUeogZla=&_qf9sUZclWkgq=&mdV_hbWsnmcmY=&5JgKXhWqhksVc=&f3ijjdUcaamVY=&csSCl3XaepchZ=&SItUatWal_shV=&T6TxGAUdgVfrd=&CJh_zpYhbYhmY=&orn8GVWmUmoVk=&kGGMU9Y__rqem=&FYAfT9ZUs_lVh=&97p4ZeZqXbVWi=&8RGeFIVnYXZWi=&OQ7cPeUZbcgok=&5xjqQ8XhWbkWr=&e9bOKgWVVYqiq=&gNdPDrVqnkYpj=&c6t5QvZgUmV_a=&UxGV7KVrbcmhX=&5iTTkTVZrfVaZ=&e_cQn9ZkceYbi=&Aoq2okXrWWnfW=&28WRnwXfjjpbd=&mqTlbHUVkVmkf=&RjRaGbZbjrWVk=&5tdW4YWlploWj=&cmhj2zZsaaog_=&KrSQPzZeZcXej=&eeQ237ZUaaUdi=&4kVaGaUgijadl=&ojXnOEVilfepY=&6OEm8sYcahe_a=&tZd2HuYqrjnnk=&FQQbtwUcqrckp=&A3M9idUqhasUj=&vVpLtAZ_gZmkY=&wo3lkaWoiYmhd=&NdniPzUmZmpeU=&hSi22sZX__gek=&9S7ZVrVdjjWWa=&UcvZLWYXa_lks=&oMXFRMVrakZWd=&hLXYxlZsccggl=&Tq3OAPZUchUZg=&ykvWx6YVkelbX=&qzYHdtWYrfnU_=&aZONKzWZesUZW=&DJUbPUWaUnaeY=&h_bGwlWqkZ_Vk=&3WIDXLWlVWVZg=&VVXvT3YppmZrc=&hLmv7RWhnsfcU=&yISOC7UjWmhjg=&ZsLTWhWpXngoc=&BAoL87Wlnsped=&Mt6a6BWpm_rpa=&xV_AfjUcaZfWV=&h7Oer_VrZhVll=&RyI7MtZoYolrg=&t8grTyXYlprVW=&iS6HluVpacfZo=&9_OuWiVcUhqbi=&jYta2tVkmoUke=&7hQ6LSZenXZfX=&SdpDJeXXcepXd=&Pkc64fW_h__ic=&StHQFBWhWmgkk=&CGhOVkZlskqsf=&HtJfeVWdejooe=&MmmySCXcdWrdf=&c7fz4hY_sdVlc=&LL4bQ_Wgbcgjj=&jS5AjCZhrpVec=&hwh_luVUggqpg=&EJUnVjUfZXliX=&jAruSOZXraioc=&UgBPOWXljkcpd=&YwGdxfXgkYmsf=&hUUr_MYardqVq=&oLOHLhV_iieeU=&YvPuGCY_ricse=&_IHPidWgqkqkk=&Z2FPWtYlleiZV=&FpaJ9PXjVqmbf=&OnxsNCZWUapWY=&fvTHPaYqchqje=&UtC5G5YoUsUZr=&5EkymFUmsrYXg=&iIPV5WVYbWiiZ=&DLGDVeZsa_jVq=&tDzWdsZisYfqV=&jr8dxZXYdYdkm=&fgRKgKVnWqjUU=&tyfUzVUkUgghs=&MVkNk8ZiWcpmk=&3Bwv9UZUWVmn_=&xREgSjUaYmdaj=&RzQEloZssnXbW=&J6UfDHYaqYaXb=&THGj8aUppgZpb=&bXpoY4Uqkfbnm=&3JtP2iXfkUjUg=&2k2zrwVYlerkU=&QBf_POUYmbUnU=&WwtkgSVdjrkjr=&vPqRaCZichjjk=&TPenD6Zjmsgpp=&gSl6rWXdVkgfU=&4iJDt9UUoXWWW=&MWc7FUVqpeqpV=&adqY9BUYUjraV=&YtqjuHWopZrgX=&5tARumYengffg=&t2kmHRZWohlkY=&ol5DzoXkqhqoc=&FKZrjnZqZsiln=&JsMs2aWrYdjk_=&YaDwOhYhZhnZW=&9o8UMCYffWcca=&keLqnxX_calnj=&OplRrxUcrWXgi=&OD73BeVhospsg=&ZlGCjYUWfq_rW=&XqiLLWWjWgU_n=&_mQ8IMYmjipi_=&yLrgAvXbqc_ma=&nAdb9sZXcmfoV=&fl8KvFX_Vpnsi=&yx7sMiWmsVmZW=&aGZ9jyUfYZoXi=&A_GUXMXrkaqjd=&illNQMVnXbrnY=&A7PlMtVoecofa=&XIaXHKUjgiXbf=&hIZOiYUdcWnaV=&iDrktIXjoc_ak=&VH9LgJZnjhlqY=&hkEopYXaloU_f=&duzYgHVsdUVps=&oXyzYzYfgWVmY=&gfiT7PV_kgdki=&aaFV6dYdelsh_=&wQI4WOYr_pqYi=&oBeUKAXm_cblV=&uIHqouZjopnjj=&gOMfQ2ZmUWbUd=&uzPPEyVZnfkim=&WctwlHYsaeYU_=&Li4gcqUmhrobm=&KQw8IuUiWl_Vm=&OM8UN2XnXlmnd=&kqfa_MWrijYdp=&Mqyz3AYpZVoqb=&VdlfqCYeoqlqg=&eFbM7VWUrchiU=&EtJevCUheVWlj=&AEbaZbXjmjUdc=&fnA2JjZbgieaY=&BGWwwHYdnsiWn=&LBIParXsbVhXg=&7vMOmqYa_goii=&J9f8QTWWlmepj=&rCI2DKXWgdcUi=&ZdAlHKYnagcgq=&uOmQn9YfXnomd=&gBJPkZYsqV_mW=&K6UA5SWcmqioe=&GzktlCVmirdXa=&YZwIDvUbYnhkd=&Zjn8vjZVbaddc=&kATt88WbZUibo=&A2N3NyW_YhVso=&CG5XXwZsrkfeq=&ME7w8kXXXlqks=&h3oVDMZiaepia=&fRR4oSU_sUeob=&2NNPvQUUpplsZ=&6IWt4yYVbepon=&KJh6cdXrepjlo=&ZMZeRmZslqoqs=&3AkkbSWqnbfef=&JAPGCyXkZVlrs=&MFnsHkZioZqqU=&PpssyHUYcZqUh=&xXreVwXUgbpmc=&v3MViUZqlsbks=&NYbLcvXjddacV=&ROiiEWWiVZapn=&dE5rbrYlYbije=&B5OAe9UnVmbfg=&oYRX3oWcrqcgU=&VqccavVVheXYh=&ggQ_4nV_YeZpm=&JWar3XYWgfckb=&LzE5k7VoUbqjc=&AE5Pl7ZkfXapV=&m87i_nXknWbrr=&r6GaTeWejpojX=&kiVKSYZrkjlnl=&ViZk57Z_qqfon=&k_iz6AZhsYUjs=&dijIuXXge_biq=&ZVwEqOYYarZYr=&IDtwboYjhonVe=&sxCbZfUdXish_=&4pWqJNUcelXqb=&qx7ZHDXopW_fe=&BhE5q4YlVhfYk=&dw657_Xcraeen=&i_tMdwUWoncnh=&D8iMluZsrqqpr=&AD8bMwV_dhUV_=&zE3DsDVl_gWUc=&ZfDey7WrVnZnl=&FZo6ARYbocqgY=&Vj9l4sWiXrcXa=&K4_jfMX_XWboh=&X29DxMWlsWrni=&wLn_jYWjkmjWq=&ldIui_XibsiXe=&3YPDhtYeiVYVV=&dStyUWXdgbfn_=&abTF2gZbknirV=&VGEq7_ZrVecjm=&gbsoCrZZjWpol=&FW82EkVkVokhV=&3jtbTBXfVVfUj=&IrEQ5vVsYsagm=&SIgFBhUrdYe_a=&zvOFh_UegjWaa=&cuC5sgUlXWZYg=&8eCEBZUagVlcs=&EVBhBwYVlUdks=&uelGLCUZhds_i=&vy8AI4VbljiXj=&xLPon4Wbhhdjd=&Y2p2fSXrqedam=&en8HuFUUWYone=&eoZJqEYpbkYhW=&ByPq8hXe_ngsj=&7iPBkvUbaaXge=&QOqEQ7ZpUsXdr=&UJpcieYrmqpWb=&Zf7cAgYspncr_=&nIp287Wkrhobs=&Gt_WqBXcXUWlm=&6rz4RkXUlaanh=&PlKhnhVbfogrm=&AB9FXOVhYrXpb=&wBoRjSUfeqsd_=&Y5xrGEXWsWldi=&YvYyoNVVifosW=&8fyJI7YrerVof=&f4Id6VUsXnZfc=&FnGoFfZjoqbqk=&AQ3joLYbeniel=&CWzm37YmXcXnZ=&MCNhmPY_hlpqX=&CbEqudZkUnqjW=&pO9QPJVesmndj=&3RErxKYrXdnrb=&cAK5JlXmYmlmn=&U9xRwnVilfYUX=&vvLoqNZegrpYY=&4yHKQAUYrZbnj=&ByvqsYWhdcVkW=&O5bFfSZ_gZUpd=&TqN_LqVcdYkhl=&Q_OhcaXXZXpr_=&X3HDrrV_srolV=&3n_C9oXmrfZca=&Gtm9JXYYp_Xph=&Z3MbAZYnpiVng=&_w4tKkYjimnYr=&QjxmVKZfbZUam=&K2D84fYkgf_oh=&c9itk9UZhsVps=&GBQdfVZoarUgp=&OcT4EtXj_afkV=&ZcPL4OXojgXoe=&gYCRpXWUscedp=&NWzBBwZaXWreY=&eAe2cnVmYZnme=&nizJ_NYiqbeVf=&uzqA5XYreUbVo=&dIFTxTYso_ekY=&9AShsZUkffXZV=&ufMlDZYsiYmhe=&zcdrk3WpjWbro=&OvOP7GXh_YokX=&urwocFWhYssXb=&kqzHqlYUhXfkZ=&DDk2kbXkapcof=&QsftOyZXdccbp=&kb7KC2Wkghago=&aAZou3XoooVbp=&kMYJOgYbkgbem=&sjzLonUfgkkVb=&nFwrVkZUjeXkk=&HP2SArZjdcUdr=&R_xdNwYb_jrpn=&ATeTGXZUeeggh=&_NVHe6YZcncXm=&gpLpjmXsWUZhq=&NkLwKPVckrmkY=&kpXynMZmZVoZY=&g8P7T5ZUZXhlp=&I4LM9EWndekVU=&hOPxEDYlrgirY=&smffk4XaZVWgr=&83mV7GUWg_glm=&HVlZLyVmkhVUV=&pnT_9WVmiYehk=&UmCUGMYeabgXh=&pdPixRYnebnaf=&gdf6ELVWmbmlc=&3kAHhbWrZjWnU=&nTWa_UUmnncbW=&kdBUvcZebgoaU=&BI4LQuYpbelbm=&wVeVbpVoXooZs=&vdFWe6Xjmmafa=&9Xq5moXViWjfg=&2F7ii8WYZdaYs=&QYqzmAZYdqgfj=&qFSgDIY_pgXbo=&ix9DhVVZmhrds=&nFh7L5Xjrpmcp=&m8fWDJYYknaYW=&_b_kuRUUVcWpl=&rpgxXfWarreqm=&urbpVXYrplhnb=&VCA5GEVUmUlrf=&hIAl77XdmmWmh=&YlZPJ7XscXfoi=&ar_EzEVbdnWlg=&yTPNwGY_shsnY=&3UwW25UadhYWm=&ZoMBkVYscsjbq=&y7PMCnUWfYXZW=&qse5ydZdjqkpm=&bCxf2MUsYrbZs=&twNjl5XUo_Ylb=&JtLBzmVjYgksW=&faQNIeUcjaZYr=&gdxXC9UosrYfs=&7FQN4KVskjqjr=&mL2hySYdhsbVs=&EVKlCAZarmc_h=&vFAlqrVYo_ZkZ=&js8zAGZlgfjhZ=&ES9Qw3UVYYpjW=&36rx_OXsVWUoi=&LdO5ndZrYiseh=&N4Al65Yjifhqa=&vJHnpFWlpYbjp=&tMBFyoUl_qbpd=&LtwcBHWWnZgib=&Tc9tHIWYsqsgY=&ZOvrI3VY_ag_r=&8PZwPtYjVrqhW=&TXxwtcVYofbko=&6yY4aSXZopZpc=&6IwE6eYskUnnn=&cguw_RWsmhmXU=&VnUzpwVsaeVaj=&ugBYMzVglppYn=&lhjImLXsasksi=&iuhRiVZYZUdsf=&cWqBk7YpVmler=&z4O2pwXqWfgcb=&uKNWvnZqpoVVg=&qd3G_yUYdkjpl=&wRLk59Voamnra=&HtYYpfVhZgjZk=&eFuybFYjfhkmX=&RqOabxUcYfmsb=&N6JU9IXkiUaid=&nE85iHUfddjma=&98UoFbVqYqmqf=&V8bEnHV_blUVm=&3BnAXqWfWaVog=&XxCOglWVckiqZ=&2UOqyBZZsech_=&QBN_tjUpjYkiZ=&ga3CDoYgbbeg_=&sZVFOzYcpqgss=&ZjPUHsXqZpfmp=&miLjBfZjUdbXm=&JhJ36SZaooaqU=&VdR2RcXYimYns=&BemwsnUhmsfla=&l3pvorVsVYgUX=&CWCL5YWckVinW=&xaboDsUmlVeUq=&5vHpcGUXjaisk=&pf35CQWeqWsXY=&_gee8qYVaoXjX=&49RS2OXlrn_ao=&i7AWqDWcUhX_W=&frJWVdYgUgrfU=&FssIOyXldpXVe=&w2snr2VddWiks=&6JLILWZcrccUb=&7G7VF5Vmksrbg=&3ZQKlcZrZghap=&yUK5qVUX_hUYU=&Qv3YfLVgpbjfj=&skJ5vWVXjZqih=&8fIeTYUV_oqbk=&BdBMjdWeUsqrn=&6YPviiVeZsgfj=&_Wpj8FWpcfpjp=&SoiaIeVacjnbp=&G_CuhsVgnossa=&JjigV_UUma_dZ=&ZauDLoUbWchlp=&H2PVGyWZki_XV=&5zYd5mX_eXndr=&wZ5zOcUdj_Zoo=&XRv7WtXsmj_Ze=&gtIDp2Y_jVg_n=&Sc2V5sUZlioih=&8eDLoWYkgpmej=&Pf4OkOWoqglWh=&u5beJ3VerrVqp=&b82UEvXsonnXh=&CVnc_mUjepjhn=&5lRNxdYrdckpV=&RkdGuqXbXhohe=&gl6_6hZ_gsjkl=&65eEWSVaqsskZ=&bWRLdsUiV_kcm=&3s_CQuVcZrYbp=&HEW4FpW_kVrZY=&AjCp3xUYdem_l=&_QFzwuVngiaUl=&24d5zAYdopfjd=&aBn2WHZmqjUkr=&ObyHvxUplqrjV=&HSBB63YeijWqi=&DR3AsnUdaY_Yr=&UDwm6vVXjVlde=&JrNhlBWhUfkfo=&NEWUJTWZbrb_i=&M6yJfFYqkljmp=&G2PeCoWYgielq=&Iuvl62U_YcVUk=&4KT4vkYamUklW=&xSgQNFXlUkj_V=&p9wJ7cYe_dZ_X=&m24lb4XVniiha=&QGjGKPYgWnnpY=&aBVivEYeilnhf=&zORllfUfqiYob=&F4XeQHVnrhYbc=&xiDhTOVqXbelV=&tTicJXZedUZei=&VFEFJXZbpZUZp=&_RnQnWWoqY_ga=&VQb3FVUqWbfYp=&AVp2wFWfWeflc=&dnNioCVhnsmli=&7xCypvXsVZZfb=&AaVj7AYkd_WYg=&nEmeRzWdpgZWr=&gvjeEgWioVfVo=&zBu3KzWhakqsl=&I36PCyXZWprsp=&bpsnRxUjXgnhg=&3ut5d3Zhgpagi=&4pmX3oUbYpYZb=&YWVIiiZpfppZU=&Q_OVXoWcXiYU_=&eyOyVXZklffZY=&NDp8GMZlgVYoU=&mu3wSZYjkWUaV=&dzi4PUWasiegb=&juJjR8UndrYle=&zxGh2uWrWcXep=&COIYpaWXrlcpo=&bAEHJlU_lYXnk=&8as4pAYpksbVh=&a5XqYGWd_fVbU=&6XVmW_YcqcqoU=&SyGWZ7Ugsjsil=&IQosSAXZmjnpU=&KVlYAuWejqofr=&9I7YccZbf_Xsh=&MmsKXmZkfVZ_m=&kE_O56YVplfZr=&ELUb2iXjZkrWm=&tXIi63WbreVdg=&vATsEAYroZXWc=&pX6ZHSZlYYbfg=&3GfP9CVhbbknW=&S3odS6UXWkUpd=&JX8ezuZjdqWka=&GXVWaiVXjaaXd=&atcatZUjknkUs=&egsEz8WheWqZX=&VfkicOYVefUif=&cgcLfaYkq_hjd=&ad6QFQVlUqpjo=&f_heWwWVYZbgU=&gghiDSZVh_sZd=&q2hwurYo_fhWs=&ssbvKiWqrgdof=&gHoMTKWqbbsne=&FEgyeoXYhiW__=&tnI24dWqfkZVh=&rDtNSrVlplXfe=&FTljlGXmagZnp=&V74HnwUgqqVUi=&8vokYKW_rqsjd=&okCgNPVfhipif=&X9Q4wdYbkkgdq=&EXsCuLWafUbnY=&aSstLJVkqfdiZ=&JizJqWWWcXhrn=&TKYQd5YYWZUW_=&fE8vKBVkXUjka=&tmvfwJWnrgZem=&fTBlxJVfWpbgr=&wxpj3aZkgqZjn=&JJhjR6XWrXmnf=&OLBnsAXVaWkpj=&HUfucTXrragqZ=&Xa4xmLZqjbrjm=&_Dq3AFYYehhjk=&sDqnEiVresnrZ=&FgL26aYlpomfW=&RwGSpYVqfqmYf=&6toUXbXYbfdmV=&ZvPV8CZsgWrge=&LuqB8PYdXYlco=&f4LdNKYqrYrfp=&uCbT9VXjkdXYc=&mp4DdmXYhdmY_=&hcBychWofelVr=&rjAu8_UWjjoVV=&LBpli_WagmZnf=&v8TUU_W_dahgk=&XntuHeXijlVfq=&35_DUcZmjZ_Wj=&QzfzXFWqbolcc=&TwOMEvXgc_oai=&dn7ypvZjYfbgn=&nDTcfqZZVUiii=&yRZr7lYWgjZel=&NneMd3ZVZgphr=&noBKF_YlbjZhf=&5jPXLEXkUfhco=&KHVdqgUglarjZ=&N9DaNMYeWhapm=&tT6KlUZrrllZX=&M75uQBVaiVnnm=&lm3lSWYYhiY__=&q_g9BtUgWopms=&KX7VJVWdqsfd_=&PQOzceZmXdjnk=&qUVXKKZfkoaUd=&LBHVSJUWleYVm=&uui7FYZahXoor=&LzDuZVZgeYeeV=&oesZCJXojU_qr=&3bxg2mZarWmm_=&IEUyj9ViZYipb=&StEkLAVroshsa=&WFrd5dX_WlqaV=&8FRBgFYWWbdqm=&AYG5fYWjdWsoU=&HCwy5cVUjXqWX=&ZnYIADUYcnXjb=&kSZ59aVmlfeiZ=&Mlq6GaUhjVbpe=&6zcWtdWclsieq=&O4SZ2_UXWgnph=&okiqgZUjdiZVg=&FIbFomUglfkqq=&fbcH6cZeUrsnk=&655T6WVoqnnbc=&LLYv5YWnbrXeo=&U4As5gZXrpjkZ=&iAXmgLVoZ_slc=&b8EwvgZUkdiYW=&_kQlpQZpspkcm=&ACS4otUXggeZZ=&vJAx4uXlscosn=&T5KE4YVcWbogj=&sYJHEiXceafWZ=&FOSNQrVoZhgih=&OtZMgVVpVophl=&mOiYFGWlpibha=&vqPIcgZlrroUj=&t6o3vkZhoefWj=&JVlEisUpqZdbk=&OUtGWuWrciWni=&SnKkIEZohpbdp=&AM2fqsWZmgk_m=&j3GgiiWjgXVrc=&ZeuT9TXZqZo_Z=&qt2cCAVjocgr_=&AZBvMVUdlpoWk=&dXFAJpYmnaesd=&yeF3BqXUblrqh=&4m7DRCWleUYXU=&7J_IFBZfVjXXs=&U9yJ5uXm_ZZsX=&fXRssMY_Ucjbs=&yYBssHWaabma_=&6uyXmJWdeViak=&hlE4XlUmojWsp=&kMl6g6Ye_aedb=&fdVK6KWderarm=&HevOEdZjelgVU=&Fglv3aZqcjggq=&CvTpejXXYsfac=&h5mzC4XXdUfsc=&uwlLRyVhkoame=&wQfQJ2XlpYgeb=&OUUAc6Ykqgfop=&vAdP8HXqWUiiX=&MFD59lZVliUje=&4T2Y5_XUimWod=&3yjtKKW_bikcq=&koglOrYWorsfZ=&ZNvmRAZeecdf_=&DhGb6sWsqk_kX=&_quc3pWXrsWln=&nTeYgzUVcVpZe=&E6p4DbUYaqefb=&OaFInPXnZohma=&uPux7nVpe_lcZ=&2JqPkFWqhhpqg=&BekKHOXjoWkqd=&GNBqPXUciqcXc=&S3sJtVVsVjfig=&dZV2TEWpdbUYX=&6TGWfDYspWrpe=&vDaSijWVcoZnZ=&TtLnueZkqkqag=&7ixy7jVgXeVW_=&vYHKwYXibobom=&gJmCYSZ_sUhnZ=&dxGxgZUccZrmr=&XA57j2YbllaeZ=&WkUzzOUVWncUr=&7LDwtAXZpUhcq=&HQn6c4Vpa_ljr=&PTSFgZWhlcikn=&2WpzZdVpaXffd=&f9hvd2XqfeqhX=&O8WqQVVfgnema=&CvLWZ8XqddZZo=&zjigNrVUZddYj=&uniu3VVoqYZgp=&s2fTuiVjpnpVs=&7fdGPtZqmcUqY=&d8ocdXViecbbg=&_QKJPCUkbjlcs=&rUHuq4YqWbkpU=&spGymmZqaWooV=&hMa3yxXmjapdp=&25fksmVscYeZd=&UOFdmWXbqlsdr=&oWGzgRUognnre=&dk9OGVYafb_nY=&35cQxtVbekqgn=&KTAMgDYcUYang=&_EVxlPXdnZYkp=&oCMfNeZedXWhn=&iOm_jaYXWVZiV=&RHi7NIYejnlpm=&d_7JYTWommWae=&jqHTEEXaZVZg_=&2gJqOZUXsgVgi=&RnjsDeVpajXdo=&EeUQnAXbrmsUp=&vQTwYyWVWsshh=&ziqnbUUbbWUag=&A8Kq2SWdmkdZY=&ISvsvEXVs__id=&Zx79DzZbacXbd=&TIGayUYjYXqcg=&xxkv78UYbmmpX=&NgXSfEXUjkmWU=&jKq6KEZfafXXk=&LT6qSsWhlUjVc=&kFiYNlZXpreqo=&gbhyR3XpcZkoZ=&alh5F2Vhfadgn=&KbPSLeVbbqnpj=&uS82iSWlsrchU=&5amBPhXXkipUV=&8UpNwTWha_rUd=&drGDnHZfXmZsY=&x_j3QLZbcsscm=&EP_HkmYnqmiXp=&PVignKZrmakVr=&p6ZuLaWc_iokb=&AhFvvmV_ojanY=&K9CySDUmkVgbm=&nSMhjYVhkWUas=&HEMBEJYfVbphb=&7SfIlzU_rbbdc=&gmrSF_UVshoij=&LZj7gIYcrabq_=&ghfkNjZehjesW=&VhDcoWYm_lm_f=&RMhIEdWZadaXr=&Z3ol7lUnbUlrW=&zOlbRVUbhafnW=&sftAGcYYZVWsn=&89KeGBZYW_Ylj=&rdU95kX__qnUf=&FJIDfNVh_dojs=&vWwBAbX_mXpZc=&cY3CbvXaZbjoj=&6gkX9hYrephWZ=&HreXsdWYeifem=&rgTJgJVpfq_dr=&CWS8FgXjf_mcU=&OevcYEWkpeWWr=&hD4O8mWsljfhb=&HKNROEZfYj_la=&bHzsK9Zanjgbe=&jwjHUwXXZYjjf=&AiHwzxVjjfUkU=&CqnWnRZWlhjos=&BKeydhXmUopsm=&rEEfefZpYiZhc=&sDW7vcZYjddmZ=&JBxZ8CXUnVood=&Pb7JsDWlbndjW=&8ZDoYKWeVqhjd=&5KYsYlVijgosq=&hhKmY6Xfg_emg=&HI4zlMUfiWgqk=&fuBqQRY_oecXj=&kvapyEVZcVUik=&p43SAwZeUpbnf=&NcBn_NZjjndhb=&HOyLYWXYYnmXs=&U2aM8qYkYXmll=&C_VHHoZ_popsV=&DOoUctZVcgoUb=&HPkfxsXWWYYff=&uh4tn4YjlpkYV=&dPlJsKXqhgh_k=&WZNhMDVandmnp=&bqdQjmU_kmnh_=&quRmX2UboXonh=&UceRRpXhjYmmr=&DWPu7lYrsggan=&euvoOaWlUolme=&dBGXpZZVascsq=&G8_vyuWrXoqZY=&RIWnWTVVgfrpb=&OvbqICVrq_YWr=&IbRjAKYjdkgrX=&WVknpdWkhjolc=&kRCc3ZUrojmdW=&5TlP6kUcnYroh=&qQ4C_dVkjWqnm=&Dc3erIYUmhVjm=&crIvHOVmkfj_d=&nJdw4sXXa_lic=&DebvwTYYYnWXb=&fhs3ieVigZVZb=&erwRiOYnYXcmf=&lZmCD5VcbpVaU=&47UBgBY_cXiof=&A56yjRZhZ_igj=&b5TCXhYnXrVpU=&xTtrHkZgVVlg_=&w5DZTYUqebkkl=&A4Zqp5Uoqipep=&DNqHXbYmdk_op=&XgiyR_UqnYnYX=&NOaMZIZhgZaoe=&EMyPOmWifbodZ=&jFgvYBZfrgqdb=&fHOgjGVVgUVfo=&qBGhckVbWVlna=&xuRMqkWaianWW=&vtqXOGZhiUsec=&jj9gIvVclhiWl=&PFiNfIUWVfnYU=&qWEECPXcXUis_=&KCSdnfUmeUfda=&XH7vwyUbYlVVk=&TAprU2ZlmqYbe=&rkksBvVigmne_=&yxPjj7ZbXjYbc=&pJH7iEUdqVn_d=&SXVosyVXksoZs=&4S_NzFUmVcgYk=&vgnnI2Vcaiiee=&u7cltNXcgXYVX=&6qtM6iVeeecmZ=&U3OYa9Yessrnb=&IfKFaQVcoqsZX=&HO_v7_UieZrja=&J48Q8qZlmacWp=&2HxbJvZWmUe_e=&JTWxUJYqXZVpn=&XtBGVDYVamjiq=&7D7zR_UfarqrZ=&_m3wlzXnj_oVl=&aeDHYzUiZgonc=&MGWOBaVrkqjsV=&CA2OxXXonbYjq=&apdngvWYoiVbj=&CyfXAGUZafgmX=&jd3_3zXeYqdmU=&9wBEyXUkdqrbm=&y3WfmWVViVcpg=&wPL5OSVleVkc_=&SPULIPWUYlfbb=&FZGJAbWqqlbns=&Fbuc5wZkgqqfV=&c_7srZW_obplq=&srKD9mWfZVngj=&zGGkarVVUfgag=&NjuTzkXbffWWp=&XFCXPoWYZkmmo=&Jo7XNBXYffis_=&u2bWF_VXlfa__=&eMkkLUWogcilb=&63kzqyXqfYVlp=&N5e8GMUZoZgps=&NNJcAzUoVZcsZ=&FAgRiCWehsmgm=&demBDTXpYlisU=&cgyYpWZVkbkYf=&ixwIVHWdsncqc=&TcuXSPZXgsgiU=&JLA6ljXdiUZjW=&gtcJoFWdWlnUn=&A5HmJaWobsdds=&IlATbZVjiXlba=&vtg3tlYWiaqYZ=&TM5HFeZpibrjl=&UUZw28Wdrfpao=&5oyCIaUplfsme=&KrkoqnVdlbpi_=&UUKMsqWiUgeXq=&m3vTtBYpkkXep=&2lwJkWYbslkcm=&WtwgNzZcYcepq=&BPqpdRUmpVchX=&AXomhgZVllXas=&79XuUpVp_fmiq=&y5pbc7VUhZigk=&JmtR4DZnijf_Y=&tTWrEZVoarpUY=&3Zy9nEUlZqocZ=&dGXefxZpkiZcY=&gB9cFxZVmpgir=&CXySiFYmXshWd=&bbNppCVcgokf_=&RYZRcHXVcqafo=&eesXTTUfqao_p=&mDPTd6Xfjkr_c=&mKJlQzWeshrYm=&mZbmoSWrsUUYW=&6xalC8Ydbqamb=&7e6MAgVZsqoYq=&jTzbIxUgYdobk=&qzAhBbYZljioo=&x4g94SVpenaen=&Zx8KNvZmalmnr=&xJZg7CUkcYqff=&vfKs4tVbpWmqi=&aGXOZqXofdlmd=&JLMNy6WUYhkjf=&g6yfvtUjbUqal=&xzWZOcYjnqeXZ=&q83HByUrXjhUi=&qagLJKYeVWcUo=&FRGuYuZnhnopk=&hsNpsjXXUihbl=&Lct2LxZjecckq=&C5Bwg8WdZmkbi=&7WDGGlXgrqsqn=&_oFkwbWapaknX=&XhUxOpWoZg_aU=&BsHwRgZkhffme=&f5eGDtV_ekdoU=&TSLCluYdgVsmm=&DmrOAZVlgqfbU=&KEMWgJWUY_eff=&77cNj7ZsWdgbs=&nOrDjAYsebqbl=&Qpw7V4Vsqpg_k=&VkjGB6YjcUa_a=&gGrFXSYolWgdg=&VuBSgYYXjXorl=&XefcqyW_pjkmp=&YabfxwY__kjlY=&ZiTDi_Xfdiopc=&q7bi5iWUsdhnp=&fTjWONVVjj_Vk=&iaMsOsUmrabVW=&scVUDhYqdnnqr=&AHM4VxVVqqkji=&WVznOyWWjYUsd=&rj7MoAVfcafik=&U9XTY3VliWqrY=&udTBnCUdpWVs_=&WS_HD9YUWXUok=&4eUBqaZecYXrc=&wn4SAmVjjenpm=&QO4hp5Zfgrlso=&FKJsfZYolmgiU=&FtRT_gW_Wgjbb=&Dvm68zUammZcl=&zDlOR7UhjcVmo=&THxqnSVsrUXYm=&CSij2MWccaeZe=&7uBmAHYUceqne=&RaTtRAUgYnn_p=&VHxofKVhho_km=&FkIwBqVflg_Ya=&H2IaclUaiojVc=&DYzHZ4YdoncXV=&xA4CQOYgUapga=&txK_WzUUXnnmj=&5wCc2rZsnZqeU=&jNrEnGUaZqhbg=&Fx7haQXhZh_lX=&matXkBUqYneYn=&Imrsf4Vicinqi=&K4JCbiU_knqkj=&D3Q6MjXcXsqrr=&ZKsbyyZhgfjXU=&OwNF7QXmlgjqk=&vYP8k6VorbaWo=&7myHw8WqpVjoe=&9l2hcbU_mWaWl=&9DGrvpYUpkqUe=&JcjJALUoqmphl=&KYWARKXhWkqYW=&b8eXhPWZabWog=&iSuOgDYXVhgns=&oZQyG5Werkced=&NSNyIGXjksaqr=&yrRGmdWgncseV=&B3LQP4Y__ifdb=&ErnDV4Vl_ppXj=&Uwa_kQZijrqY_=&3ecIPnUbcXosV=&H2wycDXZrVmii=&2AI5PwXZlXlZX=&f7SJacYcnsXZU=&f7P6E4ZVfaWrr=&25pdq4WkZUodX=&YMNeHsWbsUerj=&9Cwf8uV__laqV=&Rr8kMcWnbiall=&4SUSIGUonZipb=&Nz3WKhZlljYdb=&n3fqxtUeUfqXn=&rjfk9jYnkZpVr=&LYtz6vVfklqfs=&tz9ahqVdXkqbc=&ezVkPfVYfginc=&bf8II7XYmeloY=&GjOyI8Z_WqWYW=&IHl64HYneXcrn=&hbVZ2yZWhldok=&ioBTD_ZokhqYg=&i8RbIuVnbVlZ_=&BcfTbwYYabiZp=&njMK5cYhkijch=&rrQ8DRUUpVimY=&RCorZlZepXbiZ=&I2fZLOZXYhhqp=&M9wHU5XggVZVq=&32Udr5WXkfklh=&Ap_qvCVdnrmcp=&KOiaVaXooggV_=&wguPziZrdmXVs=&jyM8EzXjlpqes=&Eb8v7pUjnogeb=&hBqu4yVoppjjV=&DVYSNIZfZgWad=&ShKm5QUrddbhp=&zo_56eXjZr_kj=&AMPrhHVVVZ_dq=&c3r7eEXokd___=&NBO3ztYXnZmcm=&NoIgnGWmmhUq_=&rGw4gDWVfnhrZ=&PZJWgTXqlnpgp=&kw2TeGZUrblnW=&M6F6GEUgnWWsh=&fv_APkVZWd_jc=&tZgNKuXrlogip=&Imku9iZY_sWnb=&KUdUDPVcYfYUW=&eGDyWCYsYrdkW=&kO92eLWnpfmXV=&XM2FRZXZikVjc=&TLPGcZZhq_qnY=&xODYCpYfibjWf=&_RKtosWrbnZbi=&MDAFwxYXdbmX_=&JHzjl8VlWsmib=&Ujo6WeYpjjfrg=&EiLzfwWVjW_Xb=&azRAz8XbbUZeh=&2smkbOWaYeojW=&4RynrjWjjXVWg=&vXCn7WZjYbpcs=&9SHSwhZW_bqdc=&L7xvldYZrUnZk=&C_BDcfWlbnscl=&FQjQjUVmbil_h=&Xv72sdWWmkdca=&FZocYqWampgqq=&7m_OPnXdekYXo=&FqDu4EYcgqanh=&HuGgAkWqqnpqi=&IRYzWfWUW_gVh=&hRMs7uXWgpZXn=&rmnnvuWppqVkc=&dR48AzVoi_asf=&usVP9EYqecVXV=&Hra8kcVil_r_f=&f3Z6n6Xnemiss=&v_7vKyYdajWXe=&Dk8zEWYrpskdj=&8ROg2BVYd_Zff=&qsSjmfUnfdjXq=&7_NxxTVaisYhl=&z8CK83YVdnU_l=&io4_zLVamlUqc=&PpUgLvVfpbX__=&LjGTmWYjrWYWc=&lvIoUWXkfhklb=&I_SfS5XoiYYWj=&CNVeSKZkYjlkm=&_P9Jx2VoVYpmo=&gy4OoWYseXqal=&VDq6YaWecomln=&4wQQwRVWrjhmV=&3ppr_jYpc_lVa=&PxxJHZUaWehrj=&BdcpkJY_qhZkV=&bKEDgbYXdoghh=&KyE6OgUhUrfje=&rdbFXTXmkfsoX=&O5oYStUXnsYhb=&IQpI8eZkkpele=&QJFlv6ZdXpsdl=&mxeEqwVmdhdfh=&fCKn8dUslfXms=&xkkl8fXcjVfUb=&LQdv_oXmajqao=&4qKWwxXhjpbnf=&UIaYeDYsbZYsq=&k4JBrKZamnlUe=&lYWhP4V_gVorW=&8h_3JKVhlXsbl=&uGijYfWjXWXsg=&HMNZ9DWqYmYhs=&pLrFg9VgndeYW=&2zwhMZUYaol_e=&7WVKo4UWfpnm_=&LOFak9Vaoofcn=&ony2RIYcomXpi=&GMoLDdVicVpVi=&fBRf2uVnZklpZ=&CvNeepZlqmojX=&rpATy8WcWkqWp=&COjU3CWkqiWVl=&gK2SEQWdmcs_Z=&aeL9IiYiVmYf_=&vtDUGTWjirbrb=&ZLHWO6ZfokaqZ=&3nZ4gCVWWgYjm=&yJwPYmWkidapV=&jQtjN5VklUUrY=&TBHho9U_dd_ro=&rYr4dEUgaYmop=&dqUmOVZkhddUd=&GRczrCUXohoga=&nrpUHGZjcdWok=&eR6h3DWbqhWeZ=&JIx8YdVkabocn=&aOD6W5Zcao_rb=&SMQbNiXogabds=&SzKVvxZcnWed_=&fraJx3ZhrcWoa=&i5okdMWqkoopj=&ZSS7ftWqXnqjn=&ZGb9S7Uanbabc=&e8DVvTYrjgfVc=&bMOSLqZoibcUn=&xveSMjYgXhrYh=&asBvUAWWZfnWa=&5Xj_YqZbaYgor=&9QaNVRVnqmrqn=&6SNzxGYgeioUj=&2GiqfOUdYcXlm=&R_o8qNWbblsra=&IS8AyXYhlXghh=&PHTMUCVr_nY_j=&ss8G_jY_Zpmgj=&o84hYJX_hbiqq=&OLO8DIWlnrele=&YQjregXka__lZ=&wrKzFGZh_ddbV=&Xm_Od5WegahiY=&GVFWTXUXjfcmg=&Zivlv4XbjfZZc=&k652QDWaUXcfe=&86Rn4xWncpUnU=&2xCfzOXXcYcbm=&HTuMEVYYnglea=&9COIyzWgmUWoo=&VTiKS7UoWYp_i=&OavRXRZoonboc=&K4VlAXYkomdWs=&mSI9UjXbeVlWk=&qBkp6LVleZXqj=&qy2odfXUkWZbr=&MIdFgcUhjUX_Y=&wY2cH_WbipjnZ=&rRRN8tWhqeloZ=&NgCLkCWXXVaeW=&mGU6EYUfoalff=&zsYBY4Vhiiicc=&GwMku2UpfZWjg=&ixHacNYmeZWnm=&jaVCPXUpXhXpi=&s3gXxmWkdnirg=&f_PxhVXoWfjhm=&2PNjBgVfmYnip=&c_uUafUYaknd_=&2D6fj6Zjk_Wsh=&Tnql3sVbqYdgf=&VF_onwWZfeYkW=&6GupeBZnecUee=&itgPFbYlaspqp=&cwBxGTYeZUUeh=&RBxigSUjjqpVi=&aHj9L3WjjsYlf=&HHVailVpXVqgV=&43rebPYiqaXbd=&AANFHWUniXZap=&gLepo2VsWX_dp=&3iRapTYjmpeVh=&9AG2PmZqVfnWZ=&OIGnDsXgdenco=&9nsiGlVskgbij=&E4DAYCX_n_YUd=&sQt3p2Yl_gl_g=&EfdX2CVVhpYap=&IcDB6LZphfgj_=&eVoNr_WqWkqma=&tFWMTlZapYWgZ=&YE9RhtZfoclml=&OlBzknWoclhnY=&a_MxZMYhhkXWg=&a2zVGqYkjWUsn=&Nd_KHnYq_oVoc=&9lj3OkYpZqbpn=&dZIoRbVhpsZcd=&uBn52hZfXXUoj=&fyiTujUpU_XUo=&U_ZzpVV_ZaqZc=&yU7YEWVnqbase=&ZvLoDcXkpXjmV=&Wx3bsaZVesjkc=&8w7yLGXrrlVeY=&Ui32MTWYlmgXh=&OmMo8lUVZbgsc=&8_OvnOWcVdZbk=&TT3ZGLWjqYrds=&IeE8F9WkZspUn=&GW3PsuYodZVhg=&JQUqFTWmeYjdo=&okiEjBUhjpoVj=&vjUNLQYjnlXbe=&OBjjeIVihsjej=&Fe3UUfZnkXjcf=&iQUWYoWhjemkd=&RBkxcDXo_UVds=&3KrxOQXXhfprZ=&2RPVVSXcodfWn=&8av9JoYVkWWVs=&P3P9JbVYclhqs=&qGdjBXUqgYkhW=&Nqmw7UW_pYi_l=&7b8qoDVoZpajk=&eV7NiwXXkbpYp=&yowXNfYschfUW=&gUJTPNZflV_gn=&ETgSNoXcXWkWl=&yiHMY2XkoeqWW=&OCKCtdYbcXgjW=&K6QSAcVVqlgkh=&p43dmgYdVhWiX=&YtcOlCXgZfVda=&ngrNnsUmXWbZc=&vNxsnEVgYeXgp=&mRPJ_lYWeXYca=&oRrfQfYsahqrh=&TWa_rSUroWZbi=&wTXoY4Xalpcpc=&d5HxE8YqeYdUk=&ZnJCVbUjenenZ=&KvqWvnXbZlpiX=&iSJp_CVrnZcob=&eAzXwnVd_ejeZ=&wvAZBzYqaXsdj=&pRtSrmUemiZ_g=&PD8uGfWhgkjla=&xssm9qYUYUjsh=&i4yOZKUjYY_ik=&T9hddvZhhmeid=&hPpKtmWWYmrkc=&btbFgdUYhdVYp=&MRwDjeUnaqdXd=&v7mWTOZdbegdj=&XdtL6dUWUVrhe=&Idy6koYbZjmUW=&nBo4LoZebesn_=&CgcovWUpoq_V_=&7j39yRYqXlZca=&nae_gaUZjk_mU=&Zehy9lUoZdpYV=&8uvAIDXVgkXho=&DvcDWaXeoeasl=&MzcVglVfUsbdo=&DtKKNMVqrVpme=&oLJop7UUdesiZ=&zSPfyhWiWocVU=&F7LyenZkZXqsr=&xveAuvUbYcgdi=&DMdRlUXefYYlm=&yGfIoCWeanaYr=&gP8FfWXfdZpcY=&s7YZzGYemjUss=&492kplXrUaqhq=&ddlCVPXZckfhW=&MX28gWYmdfder=&PdrFbRUobXlqg=&FF4pYsZmlcsoV=&cqgnzZZhmVkid=&zoE6uzYcUUcUa=&wEnb_CUsfpZVd=&LSmc3cYjkpZbe=&VGwcmPVefil__=&lSp276ZaYZUsh=&iC2qftYhUjWao=&Q9PTnKYWarkqX=&Nr2JEAXcqUhVo=&_uuLIkWjYsVbb=&7DBlVrZWkZolV=&v3I2scWWlgfpU=&5qXVNhWZjgiUZ=&7dlx9wYkjaUdi=&vlGMPAZkkZrVk=&z8UxgeYbdgrl_=&OPHxthZZohUps=&qMwwnCWoobsjm=&VVLhNdYfdYjos=&QpVUJ8VcocaqW=&eFktjYVVZkZhr=&xHz9aXXYVklmW=&W7hiJnYiadXXr=&f2lxhXZWbhqUi=&LaXAxBXWfcgXo=&LwvFARUfjhiiU=&GgVzazW_eqZUf=&VaCTY2YXedZna=&pE4lFNYdpgafV=&efEZjbWcpekig=&BoV3cIVnj_ofn=&ID_DOZVnedYor=&qB5txXYYpbUkr=&qLpkAPYdniglj=&GydCxxXlY_peZ=&fIGcHcYmVqedb=&N4O7HRVUgrebY=&mpuhuSZmhepgU=&GuvPJHZdqhXXa=&bP_AuZWmleXbh=&zi5DTMWUpogls=&m3P2JUUnonnmd=&I38UMGVVdmhVr=&Eg8WfsUimejkU=&VrX9fPZlXkkid=&hhGUmwUUsWbZn=&sbMchvVphZkZh=&veEigSZpZnZgp=&IT7NQPWdhqaYi=&TTkxx9X_nbqeW=&kvtVTsXjqnVWV=&aRqhbNXWnqYlc=&BiuYpgWkhskiY=&F2C9zMYZomWlc=&adoOKeUdmWrca=&5BAbtlUllpasm=&UBpMKJWoelWbm=&ZmZ67lUnbXXWl=&wWZ535VrWmafn=&DZIcvAZel_sXX=&rVFdwQUgsVagq=&CygtCHZikoiiU=&K4AhEYVaXfbXm=&ICwKNsZndYZkg=&22guF_Ufpjkno=&3UeOgVUcrfkco=&39GhJAYXhjXlm=&XksXTaXlaafkX=&mdlVWcYXlaXbe=&KwQh43VYUegck=&xryjQJZgaeY_U=&_ILstMXldU_hr=&ZINS2oZscUoip=&zOJYqEVqjjjil=&_pYxFpXblbinY=&iX2YSmZZ_cqgd=&TkRJwJUfgoifr=&mCfkNiZZm_Vdp=&cBSNaxZWlbpbp=&EyWXKzVsfkine=&TU6_xwZknkfYd=&I44OuGZZmgkXY=&CiF4i2YVbUiWU=&IZYfa_VdVoac_=&cNOmz_UdYmaoY=&dIoK_dXjYqjaa=&sovwjSUeqpsWs=&tPNJJyWWobpbf=&cT7vJPUokVWXV=&Et65b7UWnsnVl=&zJYToKVeoUlZd=&jOp_lEVnXXZdi=&MYQMyrWcbfddk=&KdocmsUjjqkqo=&VKxQ2RUkikckh=&VrQO2SZhkbfZn=&H9sExpVnqoYVh=&V6FVOpZbaYVod=&LDPvGBYipcWZY=&HIZQjJWdaojUX=&mEueNpZipgZZj=&lj__REXXlcX_i=&ZUFVqbWZsgXsh=&wzQAucVZZjgfn=&vk59ocYqjndml=&9WAfoEXakqUkX=&TXSDdgZZ_rXdq=&qgODehYfXhZXc=&AifmCqZeUpeia=&_ryyn9Zsebjim=&cTLYchWUqXcdc=&bGIp4bUrZkpWi=&tpy8wIZWpXjnp=&6RSUmeWmdo_Vh=&esDRL4Vnlcrql=&7wNEGtXVhZWja=&77DsopYdkeWnf=&jxNS4vYbjedjY=&BmefvqXqmeqde=&dlqI2_Whpbcah=&EW8dxRUospflo=&V2rQBvWdhYWo_=&GNg93KUbVUhjY=&n5DhmlYsVheYd=&9AsqhlYqharWZ=&wbEQY_WdWdeYe=&8ZuPq8VspnXqr=&cn_zbKWYgbYr_=&PWfaWgXVipbZi=&KucoSKWZmWkpZ=&3YF2USVflfjis=&cnqQ_WYjWbrsZ=&lU66PpYhbooYi=&kIEKUYYc_rqZh=&nzxdS2ZasgmYX=&nsn_j4XmmVkhU=&qsnskjWUWefkq=&FWrU4pUZliajU=&5U593aXpWenfj=&RtYMDeVkiseep=&Ysgzp_XfVmfrg=&UfcPTfXVnmmnh=&iwtCQ9YobjVX_=&IrW2wpXeclorp=&RH7W5ZZYgXabf=&FQBLi6WkfgmUY=&xjfMIIUlpfXdl=&zlVoOmYqYcfsr=&SmmojWZrpYXjV=&tN2bGAVhekr_c=&Ll6_b6ZYlsisg=&bc2rlkXfbifmV=&DVih27VfebYim=&AO4gWqZeigakh=&gR6N36ZdXpbjj=&vAlkYrZsYajqe=&_RsZeZUbkjlpY=&KDYYHAZhbXdiU=&UwsZWgZcccpnZ=&zV7nXTWolamlU=&wEsoInZkgZmii=&2FPvgEVnndbWU=&nJpJSMZZcbnXs=&mwJjUOVZiqXpb=&bTCoDWWYjoVkg=&Y8zvdrWdUadUm=&RXEcUQUeZqiia=&tfcXOHZkmdqeV=&SD_vaaUa_ZV_r=&UUbRBVXfWYrgc=&yGtVL6WeYkcar=&OZleDrXassXUr=&u8Fkh6UrehrXV=&fEqcdXYcr_mdm=&aUeDYhWhcpZXX=&P9tlYmVcVrjdr=&QADLABYdfVsVq=&uNhLJDUZdVjXV=&XE6eRSYUgbbnZ=&zgVTYSX_Yrhlc=&4fj2EGUsWldjo=&kktWZIXbelcsm=&MnLafAWo_smZd=&FwoCzSZqgUd_X=&Kt8S7NZocZZls=&IhKQDuYeehaWU=&h9Q6fwVYnUXqd=&LOZJtMV_reUhU=&8IJBvUXV_qggr=&rSK4bIWeZeXnZ=&M4Yim3Xjgefde=&KBS_tuVrcZkci=&8JF33VXWiYYm_=&9q5Ar3XlcmWqW=&JQB33NVXbbsso=&rYdFRxXrpZcpZ=&zkiagUZllmlWo=&KqafAfXnp_i_e=&OWOIWRVlcrXhl=&kiCcjvValagXU=&FztYv4UhZoofp=&aDoQviXViic_l=&3pVbWoUUgdhhX=&FYYNbZW_fmolf=&6LKHZTXciYlcY=&UKEhFoWYscqjg=&HlnEAeZZqgVXq=&XztcI9YX_dika=&KvI4fhU_ognY_=&EdckYaYjZZ_mh=&8NsOlUYqomgqU=&uY4feTYpbneif=&jGU56WVmXiWhq=&wWhHq7VsWoVgf=&kXJo6MUZXgXji=&BetOY3ZreUq_h=&YqLGpqYYsjfih=&Pp_osDWmfsqiV=&C9U_ijXolWfmd=&kX5O5gXqqpbV_=&aGvXHuWk_pkhq=&HyYROMZbZbhkU=&VUIAtKZZchorp=&vXQgs8WhVerkp=&oflcqiUYcjsog=&tyJ_OTWqn_bnp=&iB4MizUUXoiXc=&wwEInuWWVbelX=&FsLeUpYbjVnmo=&9NIRzUWhgoZpb=&CE99OBV_VkYfZ=&V6xgsjVrhcefX=&d8msyeXpZiWaq=&sLJ8vNYgoYipX=&kHCeIbWqcsoan=&m6s4IPWVmsads=&5HBHw9ZhiVYcZ=&4jEiWzYnehgfn=&HsrJTgYg_hkie=&PECq9yVgldida=&bsuQVBZgakkVU=&UWoQdvVpeadsU=&dzL9isYfbmdql=&ZGzfmQWmf_arW=&cHHVKYYhaijnV=&BdrJ72Vamqrfr=&vS4ZzQXjgdcdd=&whwffOZjfYamr=&gwxyurYsibqkU=&A46fPXYfnonrW=&zbUtEfXighcpa=&_gNVlsWpmYbsg=&Ps5Cj_Zgkjrlf=&AuMEFDUVnddUl=&BGkRdRWjUaVqn=&qTKe8HVq_m__p=&Rn8zNxVa__ZfY=&T8O8JpZpZlZni=&EkkXrbVjdlVil=&JClvLmVXbooWU=&gp_pQXXkfXmqd=&LvdqONUcpjdaU=&JfIXWoYkpmbhr=&_FcNnKUacilWf=&ZVO8l6Wkqmkq_=&Od4RrXUW_eXbe=&pV3szrWpmlfnX=&Ut9LoRYeYfpZr=&D_ms7UZhXeo_d=&43noysVXUkqkf=&fpEhLmYUoriqo=&qDQ3XQYbVsWcZ=&z_JDgXZUkpcip=&sOoMJdYYqjqUk=&hoSB9lWfZaYcc=&jbVeAoZYZXf_e=&jsK8jqVgjsXYr=&QHbnuaUhieqZa=&t9PsO4Yepomin=&mGSFPeXlXrqVo=&hABRfTUspbfrm=&Uw82GUUpndYc_=&__rWh_VnneqUi=&MqGMrQZWallon=&Y66ZUeXpkonpi=&HKEi4KXWgmsWa=&VAASsjZfXcZZe=&9mnrE5Zsiicme=&rE2nTnZrgjlrd=&5PXU_iZeorXUg=&ANmbTQWdagrVp=&nnzY2JZlZoVfh=&57sfNkUUnlmpm=&6tlURHWUreZq_=&jMC5jfWZqWhgs=&jyqt2dWbelkZ_=&9uIia2Z_p_YsU=&t9irFvXmhleco=&f7EuFZVflofso=&yiwVUbX_XriVd=&TCq92XXoUrsld=&uG_7YQWjjpeaq=&2365fUZkjajcj=&8xJ5zsUhkfVka=&NHAu9DYhhmYhV=&KYCpJ4WabgYrg=&RGiLFRYaejgbf=&6PCamFZZiVWXY=&vrq8TNUXflUWb=&kHmMQNWjqo_ms=&9xpmL7XYadUhX=&f99sFnZUgpbYj=&XSUAxTVelcUjX=&VH_r95UUlUqcV=&cxtULoVmehhrW=&S8RxGhVdspphi=&Y4VaMNWgscig_=&VJ2Wf9ZmdVZ_p=&4m7bY2XnUmoYo=&SziRFvUenceVp=&932vnWWdlUgqa=&JHdgi4Vnqnei_=&9wMFqfXhg_ZXl=&UorLhtUqeWole=&qUAz3MUVbWiki=&PdO4rUZqmXqip=&CYSnbhWilqdqU=&RqO4cDWjeYmWp=&CC7e_AXYadkrU=&h5yft_YcYgdcV=&8P7GWfXiXehoV=&Fqpkx3Xoa_mmp=&GpfQ4hVqjmdmi=&AfAjsXYhfpXUc=&EZCnSSZisbnfp=&mAl6O7YdWYojh=&MIacPOXWqdWeW=&AI9UKvWdXmdah=&bbtph4YcbZcVW=&SVRuOEYWdqelh=&wkM3MkVblqhVq=&XX4mOGVq_oVbb=&Jn3PsBZolg_d_=&Fv34KEVlrUnfV=&oEYZCLU_dXXnn=&4ZtJGeWckfeWm=&8LBsaSVsZ_hnY=&tEaEy8XWkpeWd=&KOS5boYgfhjqd=&m3EY2iUiokjqb=&2Xf7dLZXeksgq=&luXR6uWfehXrh=&4FnBCyWXggkco=&ZJR3zKVfeWVW_=&LGCI__XbdonWY=&nMKsHtYcX_YrW=&OVgi7yWrUYaad=&inWCBNVcranch=&A27AEUVepfYgX=&clwTAfYidYlYW=&j25S_WZsfafqW=&kNPfn4Ujheihj=&KdnTexXXjX_id=&n_vRorUahmdcZ=&PBV4IaZWoZZ_o=&Lx8WA9ZZflmoe=&fE4RmgVgYkZjd=&MAZnAYUah_jdW=&_F9b3lUsrbbiX=&KJ9i_HUmkVrmp=&sgZidJZblpmsU=&6Ndcm5YdYW_rU=&BbfiKHVYqUUfr=&YzAT_eVbfnjZX=&o4dhQiYgZZkfd=&MFJWy4XkZboel=&L4L3l9YdffZoV=&GUVK6mZXVcmm_=&GGkoBtZafpqWg=&7wRN6BYXiZoeh=&xwTIZfWYZ_lsh=&DHflFeWVbgUse=&DoffvqVdUeWsZ=&GhgqkoXsrZdpX=&RqmfbfUomqnci=&xK7_qBYchfeqZ=&pl8AE_ZfYUVep=&rgF29RYUgaqXq=&amcd8GYgpkoYi=&FuN9HYWhdoncV=&_75NEiYZYZpab=&PqVV_XUdnmlbX=&WMZMu8Ungjcqp=&ZuosozVplodb_=&ktj6dmViqrWaV=&ObqNEaXskmkZr=&lfAOOCUYg_rZZ=&LyKmcOVngipih=&D8bYTsWllZog_=&Ul88sdZqWnneg=&PUuOPKWjqfVpV=&gGVDbQVVlioaf=&D6MUQLVWnierX=&AqIvhgXqUpnUq=&bGFmXZUrlWX_W=&l3wwDzUZpsm_q=&GfByl8Wch_sdp=&8B5JltXVmYsjb=&I5_q9BVmVpoil=&i4J9iHYoUcoW_=&v8ECnmVWfeqhp=&ugYF3vXkVYkrY=&uTKzvZWUgXU_e=&VvMJsQVdYsYqU=&lIQkI9VsfXUoj=&mvr8bFYWlqnhj=&lJH_azXndpb_g=&4q5oygVokh_i_=&KbkR4iXsgfnVo=&kWxry8ZhiZdga=&jRoX2lVdkmqfj=&zKzHNVZm_ohlh=&IZolFHXid_bnb=&eaCZL8VZgUglp=&eav8UbXkgjWVZ=&DJhgTIVWhkodm=&AW9EBKUX_jWUq=&BWZIQtXiaXqog=&T3HkAlWqmVngc=&WDkPuWUelqnla=&H8CHjGZocgiie=&eFiAVlYbjhpdd=&Ip83PFWaakqeZ=&FmnDkAUjcqjms=&tzKC9pUbpUnre=&YP4628U_fkjWU=&Jk3CLoZUZnkfX=&xKgkTyUZVeUnc=&F6w5ILZ_fV_hi=&PZSorRZaapghW=&MQhieWZmUqpgW=&mwe2vnVaVXokr=&EVMrtJUrrYbmU=&IDzvwwUXsfloj=&Ij7qlbWdbbUeh=&px3bnXVbpdUhn=&D8gnb3W_phWap=&9IndBOYZrfkZq=&VqJVUwXbXcWcd=&WYQu5vXmdbVhf=&KRdzapVccoss_=&BSAMXFVUinnfa=&uE8i9JYiaornf=&2q8NHEZial__f=&lLLBBvXZXUnUj=&pgBO2BY_XXhiU=&n6WU5wZWUos_e=&AHIyygVgfalVU=&PWVh53ZWblhZj=&dXn8bPVrWglfl=&bgH82bVsgXpb_=&3gtmFMYjmWhfg=&CsP6BUZmbodml=&34YRpLZXUqmmj=&OcIH5fYraljXp=&oy4zaJYdYZsco=&JKxMxDVaXfsqs=&ZazHR6Yqdhkos=&TZhdo9WjXbjoh=&lhU8cTXpiYYkd=&xW5iMgUXWWcbi=&JkILM8VpbVsqU=&Xu2mLPXkqmgrp=&vKStfgXsUshXZ=&XFvcX5UpgiioU=&cQZiZ2VWeldXk=&ZZgMSCXYnghUW=&o5EAs4YkjaZYe=&WiHD4uV_sdfda=&6HbixuUskZUks=&HUbaNIYYfnXpa=&lDqfAKZWbfbWg=&IYv9NZWYinmqd=&KjnW4iZZXsXke=&iBlAkQVlUYpVn=&RZ6ROEVhmhgsm=&RYGXazXsilZp_=&9hHrrnVbgW_dp=&kO_norUWlkkci=&RgZC3YWVjfbVm=&J2Wy96WUWcmUs=&j73LY_Ullcl_g=&LKSlqnVnVbcjZ=&bteePpUlaZbrl=&vc5Hy7UVWkVqh=&3pebZTWalbZ_s=&PzvMbPVfVimih=&vLQQ35UomVrdg=&6hFsfgUbleVgq=&E_fwTaXrkWqqX=&4Nuqg7VUX_epq=&VdKABZVgXfbsf=&VVqAXYVdhiXoq=&BbwKwNZYZpaUn=&cxsRpwXclZVia=&tnypirZerYgZY=&ZzAkZ5Xniqscm=&O69mtMYshWkVb=&OVPbO6YghXddX=&QIPeGaXpUoZng=&BXFCQPX_lc_fq=&U8wd7fUcUViZY=&wdKZwlXdoaqia=&akxULeVk_nclg=&F87HODYaXdqdY=&sKuNXgVUdcdXl=&zu2hFxUefjmdh=&PQrLfvUceomUe=&5vqNcWUhepUUj=&LVZg6zZVjnUYY=&hN3UKDXqUhgll=&Af8yhdVnqblVo=&xz7eCQViZdmoW=&FcJNCQWdWVVon=&XO8C3aUaihcqc=&seo7oNX_bfZim=&w7x_9WWkgsh_V=&Rh2rU9Z_bespY=&PVrpLYWUsecjb=&pnsY9LWfdfqfW=&dvgOKhUskUaog=&LybztpVklgrha=&R_kJaNYbrqVlq=&MbA_hvWojbdnU=&_UfQy9YhjrWWr=&EYv7CIVj_Udhc=&sTJ3UyUkVjdgU=&r_s_GTUZgdafg=&648JlvVkqrYYj=&7Tthx4XlUYbol=&t63qKhYrYbZVU=&XMf2ZQWdgnfYY=&XMDseSUafnefa=&xwlroFZkXnqfr=&5yzLDNVfVllUi=&efkKFWZUmlc_b=&5VpLVpYjVaZpc=&hibZHXWcdqcaZ=&JEoqGGWckZcgV=&6WTtD5W_shmmi=&4VmyzgWbiUdoW=&zkswfZYdosarc=&nYxqV7YfUadnb=&mn87dGZoalahd=&zTfHhXX_XgpiU=&XITRhMUanelch=&vcml4KYdjWUbb=&g9MkLOZoklV_l=&WFVA3vZqn_esm=&rOjsNEXaVpX_a=&G9jPWuUhqW_pZ=&UsfYpXVmpfcXU=&HaOIc_Vkpmcia=&aKyZ3pYlVaZsY=&WAJyQ7Z_rgnej=&i85qrZZdqirnk=&AxiWrOWdU_Vsp=&URR4MKYXdUbej=&NTbYyTWkckoYX=&SLUjU2ZcggZma=&qS6UcEVWWkXnh=&NftClpXcWkgpm=&ssghxuUgockeX=&wq3wtjUnbgjfh=&AarpynW_Wppjh=&97dSKPYUXZsZq=&S5_YBzYqabia_=&iwYhnEXfXmefr=&dcafz5XnlaWfs=&_kBvxOWms_dcr=&K3yfjuYZjY_do=&5vVCUgYfsjaol=&hGS8yHXrVpXXa=&m7GNJ2Xkehkec=&RBoZTMUhlsbfl=&toye6cVYfgWoj=&oEivxtZakgcZs=&cLEJEFZpcjrVj=&9EYUacWYhoofd=&EqAUU8Vbnspki=&zXfRiqVcYqVpk=&myoziqUWeWaeq=&w7AtHfXfqmZje=&ABZGIzWVpa_gq=&DtFMMEZqjmbqr=&NrHSaYVoUghmq=&pZLlwQXgqYXgd=&Foiv6JVfb_fcn=&CjUWoWZmZZogV=&d2EqtgVYnesjX=&t584iqVfjs_kd=&r7sQYvVnhUVZc=&ySZZmrUUpfaes=&fQRQtWYajXXin=&DHbtxVVZeo_he=&bJyhKNWs_i__Z=&DmcQ2AUVllom_=&wG8PbkXinXYr_=&8sbmRiUeclopq=&RDTOZEZVdhdjX=&mhGS9MWUasjpk=&98MbnrXnsqeWX=&jtGiq_UfrVaks=&uwFX6JV_fZqes=&9efyB8YjkijfZ=&MfkP7PZgaVceU=&2bF8pHUbUcasa=&ejtU4oYUZWWro=&zoups5XrUZhgj=&U8lPAtUddorlh=&bySYRWYamfajf=&EGuePzUmfYeUq=&69KRYpYieneZi=&Fmooh3YgYZmiW=&8_JVnBZqqh__o=&I4fbtkYUlVqkX=&A4qgolWqqip_a=&lHFrY2Xenpgkn=&i__5OFZkXncab=&bN3mtBWkWolVd=&Zlv2amYoWdikY=&XXla6hVljmpmW=&5eEwdEYUsZaVU=&jt2umzVZcmopc=&JAafkEVXogrnf=&jU6LFrXprlXlm=&pNC8g5WofrV_h=&EUqeqrUscYgnZ=&JERZUBVZrlssh=&UfELhLYZjZmUo=&qvj4JbUgrpqcc=&aCn9l7VWmgqea=&oxKdecUepheda=&ShYTE2VWaadXl=&ctKfBbUpZsjYi=&6SMITlZbqjibe=&22TzwHVjokbdc=&GPciyWZdldrja=&LcJ3eoXscmkWU=&84KB4PYdpnmej=&Fc9tWGWsYfWfZ=&9uWi6OUcsVsed=&GZ5PV5Wd_ffeZ=&NEbMsMXmWUoWq=&8SX4d7UjfWdsY=&LlBSBQZaXflps=&sKnX6tZg_dUYp=&MqgvwRYpmslWp=&MHZUh6Vijgefo=&G3bF8HXdbWrnW=&mYWpyZWhqWaUk=&tbgexFXWqYXor=&aK6EDwVcZhj_V=&MCLchKXidsUsh=&OiQDCUXobsVal=&yavoHHXerUVla=&e9YET9XYg_daU=&J8GjRpYVmmosj=&ixFuMsXobnnl_=&UxGwFpVUjqdjc=&P4nh97Usb_Ynf=&q5reCyVpeqY_s=&xz6_IIWUqjnVd=&FVRjA3YZikoks=&LtBGoVVXr_rdo=&x6EFOYXVYiWnh=&AdZeBCZf_XWVm=&uTgLf3Zaqmebk=&_8SUc_VomoUXo=&xK4qzVUmidfpc=&ICNOIrWgXYUe_=&Ehik9nWsapaig=&o7CVdUVhmfinV=&uAikrzUpmZebU=&Io7yNSUrVlXgi=&_wZjvgZcihgk_=&ppg6P_XrgVhXq=&gIQ6zxXaVsdqr=&bKXlnFYegXoYV=&hXTOYTWXhhass=&EbBrzmWjqceoi=&HSK5OVWWUop__=&nU5i3DXZkhcjl=&7awHX8UagUbZg=&Glyj5fYWfsmon=&Is9OztUfYqnds=&YbXpSIZsZZnfb=&JpA2boZq_ZeZe=&vj5gwNZVXkoqh=&nid5v4UYdkVpi=&CG5pvQVo_eZqj=&b977H5ZfsdiYk=&en4FL2UceodWf=&gmJJ_UWYjlcne=&w39EXCVbiafbm=&6piBdRYdplsiX=&dHFtQOZecXrme=&bECJFVWZdjlpa=&QpJ75dVWXYWVV=&wpMZZDVX_UpZl=&GiMytvVXirijV=&TAGSR4Whod_Uq=&mlNkWCUUmslok=&eJTXxWY_Vbmel=&JC6diDXZYokYb=&XzBWmHWYfdf_e=&RCyFbRZsUahlq=&NUx5xcWnbenXm=&Bm39zKYediYqe=&exoS62Xriikie=&FJMXlyUUWrifn=&lV2plYYrabkge=&YbiTbPWgijlcd=&ky7gp_YUjYfXd=&f4jzcLUVaZmkY=&bkExZ9WXVfhfd=&vqE5gaXoVoZZo=&3eoNKSZlioZhY=&GjJlLqWiUqojm=&oVXdCsXkqjiVV=&irbc9fXdrfZh_=&xl3EjlUaWjenj=&QkdEkLVjrsrXq=&h4kZN2Xqrpjag=&pZz9vPXXdVk_c=&oxoQi4ZYVYcWf=&UYfU8xWUqmeln=&EmQWZiWVopnaj=&6VuugkZkqlp_Y=&igyzdtUkVWVnX=&4OMaffVVgmc_k=&ra5dDSVsanYme=&Z5UhGQXfidofr=&4tSUIUXjXse_o=&mL2ERzUblXfdk=&wNQQKNZe_ihWX=&NxJRTzZcajZYc=&2Qap8xVsonrqc=&Wvy_IqUapmWZs=&gtiw73ZqsfnVc=&hnaqfhUgqkjeY=&jpH9XAUfZodUq=&aJ_aWnWUXXnXd=&eOFHlHZlghhiV=&Edl6DvYgaq_oc=&gaH4BkYUhXUZZ=&ZCxPlmU_ismeh=&38uYTpWmfUXs_=&daLEIiYVZlrmZ=&7UYDA3ZXsaqVf=&zbI3VSXUsjbUp=&ByFO4eWeeZjhl=&Rw4sntZaYqqm_=&rEET_rYncZmcq=&nwM4BpXbhYVda=&kutHXqXYgWdZX=&WA6_YHUWgaXUU=&4dYau3WsXkclh=&RBl7mmXqisgn_=&NSXrqaYakcXn_=&kXAB5QUmomWil=&JbfTY8ZoaVhop=&yq9FNoWjXmsWl=&d6B4hSUijqdhh=&2CrnFoVqjZelb=&HJ7VyqWjleUkU=&xKn8UqVba_lfW=&Fsqx_gUhYi_sm=&NR_DDJUmYghnU=&j2y5rvXejVise=&iAwNm6VokfVUe=&zRgNGPXoplWsq=&lMOeJDUiagsgY=&9JBkaqYnefaYr=&2Ntx6jXZgZqZl=&bG48DWZVcrkVl=&nXtYMeXgloVkh=&rSfudWYgomrsj=&5qWqrVXd_fnkd=&LYTFMPXZarjZ_=&8TNyGqVjYUmhV=&EyeMDdXgpkXks=&FeTLENWql_gmm=&jUaIH8UZch_rZ=&AiMV5TWbhVkYq=&8ciQLhZapaVmX=&7pNzlwWsqprob=&dKeJufYbkWflr=&IvdLOUVlYkdsl=&_yKUDMVibqnd_=&gIVN54WYqbd_a=&tYAIjvVlYk_YU=&KGbkHGVXVWVep=&wcDTFcWnfioec=&_judPMUd_cUcr=&QEmmadUjffoaX=&2dr7PXWWhbegU=&EPFAnRWXkVmhk=&vzZLcJYpjiVUl=&QpaQKMXUieakn=&8VdZAVWbjafon=&UgWVsUXpUbhU_=&9z7gl2Yi_gcsY=&RPBLd9Ubmsjff=&YhmVZLVnoYscV=&JfdgIBVgf_Wgl=&Mw7hbdYjW_ils=&UzVmlOVjlsk_h=&yWugYpZimqcsd=&yc3jVmVadZWWs=&gvnm2tVfYYjUe=&Hc9gidYieaUpe=&ZugpsgVcWiofh=&BmJGjIV_lWklV=&5PS8RSZkdfdlV=&f_IcVQVkklsjU=&6Cwc99XaZZ_qn=&EMTrWjVUc_XdZ=&WyJZz_UYYhaeh=&E9RhAZXhhZpds=&bPYQEyUXYlldb=&DahnbKYeUdpbs=&lzn4h5ZqdffiW=&CaewXYUhomksd=&9pxDt3Xrgdmdj=&VyJPmaZprZmnV=&pJxOugWhUkgUr=&pbVWq4YjjcbZr=&ourbEgVhmfqjV=&fYIGx2UjkbUok=&K3MvWpVWXZmWq=&S2k6rpXmcXecj=&LwO9qoXWlsbbs=&n2hF4sXo__raa=&4M5r3aWnWrors=&A4bdChVbr_mbb=&Gd4libXrUroVf=&xj33dZUcbYgkk=&s6vOVsWpYerfl=&s9Zs9QYs_nWVY=&nkhhWxVhkkmli=&pujN7hYXXdosc=&c9Z6YQWrkbaXm=&93GpnYZpldepa=&m7ky6sYpWqbom=&GbQd_dXUYZVnc=&hy5BHPVjdbraa=&df6bODVinaqfX=&ReCT_hZZbpreh=&QkHYpPZUZhjlp=&OWEx2TYgY_XfY=&xFHtwQWnqbeiZ=&74inqnYcridXn=&JCwlY5Wl_Yqhj=&Wvi22UUW_asdZ=&QYMhS7VbXaZYU=&MEZhpmVjrUgr_=&zUFFrOZUj_cba=&SM5lkFYfrsZhb=&dWqjSkXal_bsk=&jFkYsVVfoUWsY=&35r9zOVgeWWUY=&AUIh4KW_rmfkl=&pUyEixZq_f_Vo=&ybGdhvVhapkhl=&ABQytlXdkbZei=&Ww7l7TZrdsscc=&ZSIMWJZgWljfh=&hvPV6ZUWnhoon=&rgXpPsW_sspln=&fNFs79ZUoq_fU=&nfYRLrYplhqdW=&hqDEHSXmqmZ_e=&ncgsDaUUXXkan=&GnN67KZolecgo=&gv25Y_WoabXYl=&U5ZIzSXdWcYUV=&8iGikzWjUsYaU=&KSN3ZhZbWsag_=&fBl4xVYo_gapi=&rtWV7wVigoVkk=&2oZ3WjWdiibes=&x8uANYYoW_cs_=&OudwTfYkYnnWU=&TMrIWEYcgjqaU=&8AsGWRWVehl_g=&cS4RF8VlZjpVf=&VOc36sZhkoqYZ=&6tAXIQZcVcXbW=&SZLHZIUlsajho=&RiMw_GUgmgqom=&_and4LZZUXeqY=&mDzit9XnVe_ep=&5cj8cvZlVgnhf=&CePM8QUagsadm=&ZViIAPWmagfni=&Y6cEPoWcanfep=&PARpUgXka_ifi=&iwJQjlY_gdagZ=&Y8FEIzYaUhnrh=&hBefljVgoVmUs=&c6uXXkWnaWqed=&OMddkFYjjaren=&OvpRinYZcsnmX=&3XL9JHUXUeVfm=&QFKBd3U_Urafa=&HJZyLRWYlclgU=&aMt99yZljofgc=&sWcs6RVWiidrY=&TKIffUYkfss_h=&hToGI8ZadsmdZ=&3ziBCQYfniphh=&nAUovdZcrXWXe=&aJLSZXUWVle_Z=&LeyYu7XUaqXbl=&VfN58rUXrgkjb=&GvYtXdUkrnaYZ=&z8MsUqY_cnoUq=&rI_9YzXhYYrbl=&jrHCKSXfg_njg=&BxTa7zYk_rmWo=&PKowJMYWdjeed=&ldIAr4WrrpqdX=&DQYxy3YqWiqaZ=&DpjW7sYfUhshd=&kxSOvIYddsejU=&r6Ods3VifeVWf=&t_7mrEY_WjqVl=&Fi6nrtUUsedfk=&i7PW_HWnjUZbb=&yBSULdZfrhoiY=&LbuCRzZacsdaZ=&Z_wA4tXckUVrZ=&tICgZDWrVgjji=&YzMtudWYprZWr=&hECvYDZirgmlX=&mgiGyaYesblfo=&U3wYivVaalfkb=&TaIN2SUjqfpoV=&zF5U3uZcgVjoe=&JL27AFYosrr_h=&uumQZlX_XYhVf=&jhkt2nWYrnfdY=&mPX3ZWWs_VUqd=&bZEOIqUqhbq_h=&6uDCFGUprndfr=&X4gEpnZWWdU_f=&V4nV6xZfilYnf=&yA2NU7Z_esgjV=&iPftSaZieXcYU=&uK9OZ4Xsomhrc=&zL_BAQUkpljah=&lrML4sXcVVqXp=&uwXxHAWaooajh=&Vu3TrnXe_ejVU=&jtOSYqZXbbgpg=&cELz6KVUeneqs=&CapIgZWgdjYXY=&IQFFivUrikmjk=&fSzQERYVcUpak=&tLjYRPYhgkjnV=&diIk8FUgofqel=&cDkOWtWaUUbko=&vShVSMWiYlUhW=&T6kJKmWZiifnh=&b58sKJZjkjjWc=&hAaMwgVpkVlgo=&_vWzdRWniea_s=&DCimpaUnnZ_pd=&TCa_9uUWbVfWj=&nQy2IsY_nahiZ=&KZaeBHYsoZkYf=&7tvYJCWdfieom=&oAtgN7Zrmoro_=&te_SXMU_kZkac=&xCvU4cUUfongU=&nzAAHfXlhmjgZ=&smhchTUkrmdqY=&YKRUaPZrjVfWs=&uCYlsMZgibjrc=&oeqOIoYj_g_lZ=&EXx5q6UqncjaW=&jjd4dTZbZkgZf=&ZYuQdkXXnqibX=&QoNZ2tXkhYXrd=&xzieoPUpaoced=&2hl5r3YsiWdec=&IU_79DYfUcdff=&69TC5WUZgXUgV=&2uvJD_WlogmnZ=&NsQeRZVWXsj_l=&cOxOvjXamlrrY=&Y6e5wAX_okjbl=&gpJcuhZWVZnoq=&tCE4ZSZngkVVi=&ZjJISHXsqsmVd=&AFEswjVoeWh_b=&fY96vWXrgsf_j=&VVewmRWXoUYfe=&2bOUfeUscqjYj=&39KKlpWXXgojo=&WCq5olVmfmXjW=&qgq9DSVbcdYql=&SHcNC6XV_qVcj=&zupEasYWVnghs=&2cpPBbXrmfbjf=&o7e2s5ZpXegUb=&uLFPu7WVnhVss=&CgTeyQZfcbVVr=&2_v8APVYXoefs=&ewWb2QZrfidXe=&h3ZGp7UjWbYgg=&nmv3vcV_iViaq=&ienYeAZog_ljh=&QObtS8WeghYaf=&_H5TXgWWlnXZU=&qZsASQUWWoVl_=&v9N4jDZqsrUhf=&cJtTZiUYshicc=&pdKB_uVqgnjna=&txHAxrWcUbegl=&SL_XixWbbboaX=&ALD7WRVdkrafm=&LbyQd7UqqYksg=&ru6xAxYZnkYXs=&28rhOtZopnlkm=&Wx2TwlUsiZ_hj=&KrlH3zYlkmlmZ=&ZMDoLjZkgXXrr=&Hf66TOZYUoVbX=&QhtOkOVniWqdi=&UxJwmYZomnqd_=&bLWB6fYq_l_in=&jmo3RTYppdsXs=&TfayqmYjU_n_l=&899y4uXiXaVgg=&hvSUssXiZggjk=&daC5q6YZlalme=&XMX9upXjefila=&D7cP2NVeWdZbZ=&sTst8_XUZYhpg=&jAwQqYZZkkmrX=&olfuggXjqcjff=&92JqFFWVpWg_X=&hXVjGsVk__ipf=&BYAQDOUjmZUng=&dixzzMVsgWiWo=&MVpfYSXsqkmhc=&Eeq2xsYd_WjVe=&8eYTucXmlnsaU=&UpLqqRWglblbW=&xVepc3Xqnljgg=&Xe8QcdZVsWsYg=&DmxSJNXcYac_q=&LmDZCcVkikfdf=&ZD2jgcY_hdUfk=&FXmy46UcnejVk=&9dk3FdXcrgnjg=&JjOGEJUYfWilo=&XYe2wDZpiYq_i=&_8et9JUpZZiin=&_taXpeWrqqpkq=&Yx7dGMWhhsmlg=&CndRvsXalsbec=&yeEm45VeUcikn=&2HjLctWeUbods=&dpqKiiWqljffX=&s8vp9aUjgcspo=&kmzRIfYpdercZ=&MEl37OXXkrkfs=&LIeIeXVZWWiZc=&VoZYNfWijoXYb=&vLeyG5XnrosgY=&ocgw7XWWslVik=&mcsGPMZ_ngfpi=&giou7sUUpcrqp=&546agtZpYkYff=&sQoFZaWWcVkig=&XwsUlyXWpkYfo=&cBl35HVYdmkrf=&molHLmUrUngmU=&xvesXvZikUoXf=&aJ3TfiXhlZ_dj=&aD6HnUUgVWbel=&4dHa3sXiec_re=&qv_pfbZWqkbUV=&3GZDAHUdhnhZf=&F45HXbXpksceg=&McBAxAYWsnYWo=&4VdfPlZhoshhl=&9D6FeSVfVaqjW=&iJSO9BVioakVp=&d3rfsCXdUfXoa=&OrlqGnWUspocX=&UNJb2HWnaXW_W=&W7sA8BYqXgfWj=&AdL5UZXijobsr=&QBJNnHYokaogm=&heENdDYXVccV_=&rAQmFSVhqZgpV=&2IW2UzUXjskYk=&D9JXT4UWmijVg=&cPrFnLWjsdocq=&Nve4lBYee_mUU=&cReC3wXXpngkm=&HJIwaMUeWpbda=&nYCePTYcgijYf=&vIuMS4YrUVWjs=&3MhhBaXakoVak=&OIRhdJUoZfWrq=&OfjczAUXodeei=&sPUK5gXplolXf=&6Rr5cqUUk_gnb=&h_rYlmUbXs__a=&vrOvK_Ygcrbco=&O8U4qwXknhkak=&9Kjxt2YYemesn=&Gu2vYJYd_Upao=&PQwIFGXZdqper=&P5okEtUXpZlZe=&FsI9q8ZgcgWqi=&zKvpGWYoXYsjc=&qpXn2_WiVjjUm=&chIqlyWifklon=&eOGnroZWWoqco=&YlnwjiUkpqkde=&It27ynU_jqYja=&HLU_N6VdUrhob=&iZbvcCUrXfllj=&gZswhYVpqfdfs=&zCi_53ZXgqgXp=&C3WnwGWp_eoij=&CArWChUjkmdZo=&r9s_JUZUbcefU=&dUuqTMVjsUaj_=&Z4fOUPUZWZmna=&vV2yXDVW_baYi=&liHACiXiolsrc=&AmcrxWYXZdln_=&s5KhxuV_YdWbU=&GMEruvXsrVdfo=&hy3dnyWVeZnkX=&VnGwvZXbXXfnX=&PvTs_YUZrX_sX=&DFjL3wVpphdfV=&cDTaBVYsdneWr=&UWlIJuZrsoXXX=&Qp6SybWk_ZeV_=&_tTsn4WZhVqcW=&9SZkGLYVsbcWj=&DFzXeQUceneph=&_OCK36Ykqq_Ya=&XmRkm8Yebhnne=&Euj9OmYrUncfl=&ZQYuXAXqisYoo=&3hEoaDVoeehVc=&AcpEvSVdclfon=&XKdnkwZqWisYr=&r3RGZKUdaedgW=&p27jzsWgdXXsg=&xUIhUKZcimieU=&CyvcSiYpnZbdX=&4RCaOhWZqYrhp=&ohpl8MWWbf_cl=&2Ok8qIUksUUqp=&ctwAMqWXsXmhZ=&33XKgMUkkid_b=&icYbcrZikjjaq=&eST8VjZeYgedX=&J2hrbHZgbhrgZ=&2gnb3xWYnlgjk=&xiVQZQWnqamYp=&aPTpPeYrgmdod=&h2SfBDYsVkWUf=&ojSNnHWshZWkl=&7nmaSzXkYggrX=&DR_bnpUdokbZp=&YXJ9pjYkZYUjh=&TCKjTPX_jje_e=&fHRi47Vgkc_WW=&sDDCZJYrnrYa_=&eyV3CpZjcessj=&DeseH8XkmZcjd=&65sjsxWrpqZja=&JXxndlXinnem_=&Y7p4s8UqXkjfl=&7XupMqWoaViWU=&A8b9OtVppifke=&4nELIdWnmfYfs=&CXoW2ZXdmrcan=&nZ2576ZsjVrhc=&_u9M3HWYYmfnW=&nVsZklZpfjZkU=&UxydHZUYdsas_=&SoVNaAZjpliXi=&kqRKUOVVeeihr=&6SiQrjXXdop_q=&xQPRhMVkhkheo=&y2nrKvWfnqjU_=&42p_VRUXcpnej=&GtfQjwYbag_hW=&wwbuJQYskpVkh=&MJc7UqXgWslY_=&EkSQ4PZnZbYhe=&majI7oZjYpmon=&nA2t2pVXnpklr=&qfuJJlZglrZhg=&_2RFfOZpahcsW=&46IYxbUhWfeVi=&NCLaJyWYalXYa=&g6titxXddsjYl=&l2P2QkUkqjkgg=&6reiqYWsVlUkj=&Yw8IFkZhdVgfm=&8IvntZUpWdrji=&x6ogQ6XiVldsk=&mDnZq8Zqdnfkj=&4YqNqTZVa_oYc=&UxCZJXXVrjsfk=&mgV7UPYpUnfsm=&mfN2NRXaeoohg=&AO5ywZUpoomUr=&6kvOAHWYnUbaW=&2d4cJoXXrXcdg=&DI7zRAUYWrWmf=&DtB6TlWsoqUrq=&t_KZjBVZbbode=&XlTqAvVra_Ycd=&MtZ6biVohZban=&32ckxNYncaprl=&6ZR7WCUaeVkUV=&6e_6jlWblZo_k=&fWLCcUVYgihgX=&PDWjIzXfdsfmV=&xmfkaiWjdsfrj=&nwhQwrXsscZg_=&bkPld6Yapbsld=&Y2i5rtX_WlZil=&RK6GdvVZVlgjs=&Hyyya3WUofqXY=&kSjXnZXqmXgoh=&vp6GuUZcpiipn=&Fj8ltSYhYchWY=&WuTLoTWeoachZ=&F4cLfCXaimhre=&vrN4xrXfpeUko=&zWvn9SV_sfbeh=&Iy9aH2Wahqaes=&mvZ5i8Vasmheo=&7yQhR7Xq_igbV=&btkbj7WqUcneo=&NYI2jIVesiVhd=&d7MWcsZqacfjd=&mWY2X4ZdllWnZ=&qik633WUrZcee=&KjC9NvVmgjlgl=&RpKvX5Vpgcsnq=&SDGNSWVneqWhk=&5aGWucVcssmae=&nKj63hZllahlc=&Or8rdIYdYniqd=&NrevddYbVjbak=&Zo3FDIUrhao_m=&rqWwYbXlWXeeW=&h2dQuCZWVWXgl=&jgZjE8XrYeqfU=&VFDzAlZkenqoc=&HwaeWEUVfchhY=&ajvi9IYUeZWVV=&xRTvQvVgncbba=&us2iIxZdgqskj=&WOju79Uihrhnc=&Ms9hdiXfeelsi=&LYUS6KUWoaolk=&nAD3YyWibcooo=&AhnDrYZgpWsXW=&hqfl6ZVoVYVgZ=&ILym2HYmfbkeq=&uKBviBYpWgXlX=&KDDgphYrljb_b=&l9TG4EXnorhea=&PT3wK6VWeUYmr=&6UB2OeUkYegVp=&aRJiFwYgXh_ga=&j6PeOTXdXmjqh=&chqMz6XchsVlc=&bMFY72WZUWhhX=&pLnlNoYiipdks=&2F6UIsXaUlYlj=&MeUs2wXYskbco=&yugmmkZcrgkjW=&RTgZnEWWlYVnk=&u5aESwXVlhn_m=&aML4pwZkihV_n=&6niAaNVdYUsbp=&nx89GyWm_Znpj=&7ifXWHWicZjhV=&969BFIXsmkcaZ=&Q7EcKTWqpZgjn=&EKdKGrZnUsXiU=&R9JJQRY_mrorp=&mMIITeVXfqUrU=&bmjL6SZeWekUg=&cCEfE4U_mkbWg=&rkNQR4ZidpgUa=&rRXIJBX_lXZea=&5lOvpiZnbYdjb=&PA398sVUaeZUj=&3tIkxnZfdUdYe=&n6HR2aVblageZ=&iRTOEUYZfrVaf=&L4CHLmWjmidl_=&73nVCkXqaecnn=&Qufo_OWhfarhY=&gWP8a6VVU_nVY=&UVzCSjUcfgggj=&6ogxH5WnYcXsm=&bUOxrmV_kYhaa=&CITgGaWr_Ubqm=&hct2ODWZpdZrW=&tdSz7sWjlYmgg=&pCBeRZXbfaXns=&3k2yjgVpUhqVh=&uWKMARVUeoiXg=&qXJbooZVUlbkU=&vbQak3XVXsqsY=&ZDCaj6ZbYYjWc=&f6qEwUVVhcoai=&uGKiBlYWbhlVb=&TRoGj9Vanbpsa=&AlOsaOZbcdneW=&AugdmQWYp_gXq=&xNRUK4Vl_XZZk=&EfVRRnUdf_nhU=&eGY_EsWllkgda=&nGtZpGZniZZhc=&JtdejwZmpqaUZ=&i7N27wUkdVWUr=&ntaUjsVbYooVf=&auNYvjVdmdqWX=&UkmiTQVgiWkUr=&qd4dhUUnhflsh=&MZ42peWpmlbsc=&QJASNfWoYgihb=&rSfnZGYbboapU=&wg2A5vUrpoegX=&AiqbxVWaoqqYe=&OubHgEVnVYXls=&WbZQu2UlgYmaV=&USe8qHVepsoej=&AkchnpUchbfbo=&OGlFoVVeeZUce=&pRXpcJWsWormj=&QjlkUKWsceili=&tXO2rpYnhdacr=&LCv_aZZVlrdWh=&aW4ZDrUcUlrWn=&gXyhy7VXXsebr=&pUbm43ZbiYhpi=&nrazGcXqhejji=&UwX_P2XUaUdqc=&Hr3VbyXigjkqX=&N_svzLVhodqVl=&MLC4zCVpkcVap=&SjgwAjZpZcflo=&h3gqTPWmUpUfm=&cf7Yd3YqqpWiW=&Rer7hPYdrkirg=&sO3FPfZfbdjnq=&ijWJjyUhkdfps=&zkxXkSWigYecU=&iBdEJeUqrYm_d=&PmfjmrZjco_if=&mU6biOYga_YnU=&vZORmBUcrqksk=&RZI8hsYgssbdl=&bwYQW8Xor_bbl=&pGcxm8WVlpigr=&XVboFIUrWnrkU=&CORTnLXZbZqgV=&xOklScZdp_bqj=&JZslwEVhcgrYn=&NPueB9YmnhaWg=&uwAR4EUcik_Xg=&APlWWUZjVmbmd=&kYcdojUpUjjXb=&DKzHIEVcXabpo=&ol4pkwXq_fgWo=&AbtCBIUccjhdb=&zeoNCNXaegpZd=&aFX5D9Z_bmass=&S7qefCWbelppa=&4cjeKeYkaWehi=&gtAynKYmbkfqd=&ACuy2zVcXp__m=&RU4_jYWaWZVgU=&n5OSTBZlfasYf=&qa9v5SWeopgiV=&9GT7gOWkUqmWm=&JlRc3yYZUXsbf=&RPX6eOXmfZoic=&ZhTaG7UWcgnVs=&jSCPXVWVmcobV=&KpZaJ8Uflccha=&XpAndJXlpiien=&CzP65rXhXj_Xo=&WxEAyiVidfaXs=&QPGrYiXhZdcXc=&4eGDYOWnZbkZl=&XEhByFYVafUid=&EXqYkCUefjkVl=&KEB8QHYgVemrc=&HByve2Yrgbfgs=&Vdh2fRZigWbgb=&incZRDZifonse=&vF3k9YYbWij_r=&ns3VEBWXemnhb=&N8nv52YdoUZee=&UqqlFlZaWgbbn=&wkyEr2Zrjhmeh=&nIawrBVpnpVlm=&T__nK6UmdYUaX=&pOwMylWgZUonl=&dYwAwtXlfrfjZ=&St3XTWWYlaj_o=&bb7tnSWfdsnbn=&9_hZKfX_lsr_h=&2JG7e3ZZrmhps=&zeffCAVdjdahr=&3ltZgNWXWZjke=&vwnwtMVmsrphk=&p3piuOXqqUUg_=&dQIdBiWfqghkq=&LgRxIqWrnresp=&tmsQcEYlafesY=&iyE72PVjhiZla=&8SfNeTYWgge_d=&XNeZYJVenUosp=&wBg_BNWkVsh_q=&ZOMdMfWWcfdlj=&MOPp4JZlWUgql=&73ugpqYqmgUlr=&Jx_mObWcnYaji=&lcXJMSZkYYbme=&ffTrkoUdVs_gp=&hiaIUWZlgWbZ_=&HdMBpzXVVUUVs=&AaLPo_Ynbmegp=&CWHbwhVbjpb_h=&HFgewKUXmjiqr=&z5DPjuYVXkfZp=&usjUVUVfkiakZ=&yjUSFgYhWVjcq=&I5KgYXUaZieh_=&Uq9fiPWbWnlll=&dOJwO4YYindjb=&2L4g83Vf_smaZ=&Qc_v47UfpcWdW=&bJlMdzWrYogor=&GGNYLfYZsjapf=&iDMKOMXVXdXdg=&RGCKoWZlibjqq=&FQklpzWgZeVj_=&s62P99WeYfYgd=&DgoxyIXVdbXic=&JBYT_GUneYZfn=&_ki8CiZnpbakk=&km4orgY_kehae=&DhYr_HWnljqlp=&ssadstXfXblmW=&g4nFwMVobVVUa=&E6olhgVbYkkXr=&YvdUKmWYfhoqp=&3lCf9HWjlmrcj=&KlfML8Zkphmhr=&x2nEgmYWVamhU=&dbe3ofXYasbsa=&nag3vnY_ocsYq=&QCpRFiYUoogfl=&BbZU5OUskmpqp=&zJeC2EVfoiWdr=&FYlgm2WXgfkkm=&YrRonfXnoWUiZ=&K5BfDkYYqeejh=&6ic5H3YVWYfhk=&LC7WD6XdkZesl=&SrUk5FWZnZWph=&fTy2MdUYmqgaZ=&ytuPgfZmhdjeY=&GWjzPuZoVroUV=&YZtAWmUfYgXlq=&fhOrHtZlgXsVq=&uhUoeRWo_Vnqf=&7GLziKWrUkVeZ=&zztIAZZqjfjVg=&hCRuKOUeZ__Vh=&GWWsyoXUqfssn=&9tLDBNVafkbrY=&TlsQyWXmYapje=&CBDVecZhXVUcc=&pEKmEkVsqWckb=&8qSk4hWneikbq=&KTpjEfXprVgdW=&SIhYuYZUUkeZk=&2_p3_uZ_rZilp=&P6xLq_VoXrjYd=&6QSikjXYjjmge=&pgvd_uYYUmXj_=&BVNciSWYoWgo_=&pCGDdHZikbbcU=&OpqlInUpkiY_Z=&VW5e_PWVaibef=&c932N9ZqZXqXV=&lO_2TMYmrhhYd=&MXE_TLZlkndiq=&QFmZf3VXljanV=&PPnPvUXjWmscs=&xZbE6PXjibail=&sgzvMzYgldhrg=&EQweE5ZZcWljV=&Pci7AtU_fllXj=&BjTqBTZjgeUdn=&wvcgFLUpkpdsr=&ogwEyNWindmiY=&_fausKZjUYses=&MrbDRDXbpUcih=&3F6hcNWosfcpb=&LeFCmtZgqZsnh=&aiDoVxVjZbqnh=&9Y3OziXibWsqi=&dj7f5AUd_rhXm=&aNlG38VcmqmmX=&ykxaSUYlaXlod=&FMbnDbZncWciY=&9OA2m5VVedYUd=&otL7kTUsgablU=&uQh5wkYoqjcVY=&iOWxWEZfpcfnV=&ZJngPLVheXni_=&MrPoc_VjVfWZa=&VZqwXdUrioesa=&qaaLtXXsbqnZo=&rQosEmXcVVh_g=&Hk9_FLVlskZsp=&uYqPU8Zfrr_r_=&tQvsRrZqXs_ho=&ytSlMsUZdbarh=&NMuzXlWqsplZW=&wL7fEJVodYVpk=&dKKfY3VXpfUWp=&IXq7uKXnehbea=&zDCtawYprn_cb=&Cefc3QZliorol=&YM5ZerUlUWUos=&eFR_ZOZanUrsl=&ZhMcixUemZnrn=&v6sZmjVnlsUmU=&ZcXRXCWXnamsb=&Y9KdgaUlcYYlm=&5yrHSWWZgrehi=&Ej36l5ZcdqUkW=&AMbS_7WXemdfZ=&D4NHIJWjXooff=&GrPZqzYamdnpY=&rJIoShXjbWreg=&EjE99LYobmgrr=&g23mPbWr_Zams=&Xzi8FbVnrkfZl=&AdnIksYpnUUZc=&YS3fOOXVagsme=&CxBUGhUUZgqcb=&xXUMKQUpccsoo=&8KB6OnZaaYmXj=&BlVn_yUVUgppi=&5uUPkJZjo_Zjd=&inAN7VXecjnar=&maiXAIU_drinb=&wieZZVZjcridW=&qMFjgzVXrWdZj=&HecbtkZU_ZWZf=&xORw_3Xbecm_d=&2U699wWrlomgV=&HVtt_eUWqqqXW=&R7ke7AYhhhm_d=&dAF4wpYrpknmq=&LZygNOWYbU_kX=&lTdJ7wXmpgWeb=&cUG_zHZsanrag=&wdPFUFUWWZfVc=&4rKXI5WpakmrY=&ZkLdL5XVoYheq=&G8GXlMYhX_ljq=&uAVzC6Xfbdpqn=&DcYqQaXZUmdYp=&m9TxzfUndpZno=&8UFHPKYe_hYWg=&iiPqezWcXarcV=&cROHrBX__gcqo=&aHUOQaVVeYcgc=&6iLDscWd_WqoX=&bxklL6XclXYUn=&IbWXZCUUmdmX_=&fsZKatUrlhorg=&Rmdav4UVeiYie=&V_angEYUsplVq=&_tDIpuVcYWrWi=&wuGM77Wdqn_fo=&9JHZ2RWfapnWd=&96f4RcWclhsWb=&yyG3snV_kqUXs=&l6oVUbYlmWg_m=&IPFs2zWdjnbfk=&3KmMQxWqZWnpr=&ofuyItWblrjrY=&M6wrsNZsbbsji=&nK7NRbWWpVUZi=&swxVHzZYosabr=&TxLe5rWYonVon=&NY9BVfUoVYqis=&nsP6eOVbgrrUi=&yhyr39ZhhlhWi=&h4eS2hVaVoibg=&alixSiYkXYkrd=&UtxjrOZeliWf_=&N3ZC_DXhnihrb=&_uyfRpUoamahh=&qk9_koWgaVYdn=&t6nWyeUbkciiV=&7XfjAoXpWiaVl=&X9X2W8Zecjgjk=&XCSDz2XfjfV_a=&BFbaU6WjViUra=&9ewpPQWUqVhje=&adJP_wXmdgecq=&e6sP8MVWclpVm=&wcNoPuYaXYZd_=&hgM2HSYlbcalh=&HXhocrZalds_k=&NHfX5MXl_fYUU=&5vgEeZZgoplUe=&l7iF7YXfsWdas=&r2GVYkXqindmb=&doGwUQVqklZdW=&_ZeMTpVeiYmcn=&fbBRHrV_pZZYb=&wl4RJxX_biXUf=&eHP3tKXksqdfj=&3mYvvCZhjaqcU=&ItLm3JWleUrrb=&dBLmh5XgaiVoV=&pRDL8FZbscdkq=&kLDIQnZahshoV=&Kml4b7UprXd_U=&xHzIrcZZcZbqp=&XmkaF7YdlfgUi=&pi5ItOXUUWfXs=&9yOAGjUUVmZXd=&o5e8shYYWkVgm=&Vn8BJLUnhdikU=&UddDQXYlUgasg=&SN4hV8ZglrogV=&5RUQteUeZpbrZ=&AXgi5KWUYoliZ=&sycHvVWhmbVZo=&dwclxaWqpdamY=&YD665HZUjrjar=&hpaqnFZragkqn=&r7j23EUalshsW=&PpyLUFWUgdqqY=&fzY4WCZlo_orZ=&sjU8JBUUnpdXb=&VX5JK2YbXlfjY=&UkK252Ugaqofm=&JoEfNkWckWhjW=&LM593CXmnqapV=&KchLlSXij_pre=&mQ_7BoYYmZlgk=&qSHPW2UpaUogf=&3gB5pSXefpqnX=&xygV_mUq_VsUm=&xu_ndAYqmjena=&IHcArjYsbmi_j=&ZkgyIjUgXUpgd=&Pk3prXYUZimUk=&uTI9k8XlW_sba=&QFJ4tnXpVcrms=&YUxtKjWXobjrm=&MIaMBRWegUqro=&hmC7fEZgUWaYY=&bP6SGwUg_gqYW=&kEvJubVdnikl_=&qSlWVvWihpcpn=&iak5fJZmgfree=&jRX6TqVsolgsc=&qKhodlUmmk_Xr=&9Tm7BBVhUkjkh=&MXWzZeVhkp_Xc=&DUyPodVlVYbkY=&d56w5QWk_eqn_=&rpSjBkUshrcda=&2N3DVgXkVYXsi=&aQAl9IWhiU_ad=&fWf4WWWlYZpon=&UyxRclXrdYikr=&h5C54nZYrhakr=&ldr4nMVihjnnh=&3nxrZ6VssgnjX=&4wiqDuZZWhiXV=&m9alvuVadinUg=&EYkAuxZjXkhjl=&HhwBEhVaWWXUp=&ETmwdGVlYWsri=&Fbu6tbZgnfppj=&rRhYoaUeaeZbY=&8IbuMKXqXochq=&5miiaFViocdjd=&BYfYCpUosjeXU=&KFXnToYsaVUss=&8zeJ9tWl_ejlY=&fSXFPQUjapjqa=&MNxenyXmolqrf=&lLELqaW_dUWcV=&bWPAlbZXmailk=&bXIMA4Zpofal_=&vOso2nZdaXh_c=&EbB236ZZeYsal=&zPdThuXhoaUUo=&_cJVzaVZXmlpn=&n_hFJeVo_bnhZ=&ayqoAfZhYj_Wl=&V5VGfQWUmqghX=&GZ7_WJYekilag=&CESkLoYbenffi=&qBKKZQVrdXapa=&f5jYpCWonprYl=&uNCydfXjWXZ_c=&T4yv3DYbnpXkf=&jIwIssXicamcp=&IsR6IbUfUlUcW=&HMKfhBW_nhplr=&knzsLCYhZsmhp=&vlELNbU_cXihi=&bUGSJkZpdUYbj=&5ni6zWWqjqop_=&GEwcPKUoggXhi=&V2HCouXYZiipn=&JM8R4TWlfopin=&KaRGb6YfhXmpY=&lBLxgsZpUaaqZ=&WO4O89ZrWZXfW=&jYNS5oUeh_lil=&saOms2YegpUin=&ZhQ2hmWnrWrYq=&AviKtAWiVkreX=&2qVyecXcofmUd=&4BtmFhUracdqo=&BCwJZpYfsghda=&v6HXS8XXfmoel=&4EP7rjV_kolVa=&OYDNGrZokegfg=&C2O2YwWWhpXsm=&PG23o6ZsZdaVq=&BHgkB_Vsemha_=&7razXQWcliojk=&4ITqdzUdZffWn=&7kWDUZUkrafkj=&9vgX8JYYdpejk=&GMESb2UUlYlqp=&OaBPmqXUc_eas=&wMfIfwVeifglU=&bwXGGYXorfhdW=&aRCoTyVmsjbhp=&BjtpRBWjfihmi=&54ZqEpVfcXprb=&pZBR_qVaYdYbe=&ZDOQTHYXWUZb_=&XSpvYOYrbsUag=&BssmbjZrs_rsr=&bjfTV_WeVgqbi=&kAQGAVXpZYdYg=&ofHmMvYoWl_bm=&iYgB9HZrsaspW=&c3_Og9XZjcmqk=&OaPB7QUcsjXin=&5XoozRVsrpmor=&ufg82uYnn_iea=&bx5cdUZsZhhVd=&jkp3sCV_dafXf=&CMmFZgYnqjaZq=&MK9rBvXqsfao_=&6KMZeyYrdnnch=&bLYnalWeshcsW=&VpR2VEUkWYXbe=&lDaJdjVWhUdhs=&KfoEuKVdckXsr=&SognE_XopjjUs=&hDvQFEWYqidbh=&TiNQFtUmXimfb=&XWVerJXodWrrj=&5NNQjoUZUUicZ=&okmOAdVUm_hfj=&D6keFEXdWd_YX=&SyKOpxVednhUr=&ubzgzRXdXqiYa=&MZD2r6ZnqpclU=&TxioiNWfZXXa_=&Bv8S8CWUoknss=&LsQhypXbUijrU=&FUGBG2VpqeWio=&B5Ayr6WkUbhdf=&dk3iVMWjXmYb_=&_CTgqIZa_deWg=&fG9uw6ZWpZjfY=&UmAA5IZrocW_Z=&wEYggyUdYqVle=&y2xFRhVgbijZ_=&vD9PnNUWcc_ac=&59wxYuUWWhWne=&MIhP3YWXehWar=&wubyp4ZUWgeYr=&IQbniyWenadrm=&Le2t2NXUhcrof=&acaC3kZmYgies=&y2_XJmVbjjsdl=&RuxL_aVYhbrmk=&yhf5xFUppkqWb=&VZflXcWakZfWY=&vH_qa7UnVYpZZ=&6hTXXEWsmrmeV=&vROxiKXgenlmZ=&hHR_VkZplgcXb=&SpaBAYYnffrcV=&cRQf9zZlXanbn=&ppsH86ZmmUcch=&7PmPHlYfdZhpe=&NPl2JHZisbjpd=&z9QfNbUaplide=&Z7WC4PZrklVoq=&xxNV4VYndVnb_=&bI8QqPWmlVWkm=&FkhyhyZcmilrl=&hmESdHZonrqWp=&849TmtWqjWqcq=&jJPxPSXr_qsUs=&eJkhgeWUUhrle=&_JIyBcXofqk_l=&cR5_geYsm_WoU=&zRudxGYeafcdb=&_siStIXprqcpq=&YRmnQEUqjYknV=&7gXztUVYfUgld=&faGk9QXUddVme=&n8AJx7WYiirhd=&MwyNjAYhshpgk=&bRra_vVdkrUo_=&qYu4wNXYsnrdf=&OGgfLbUbgWnsi=&itGOv_Yiperfo=&eZdtMpZfZiWhn=&j6gXdJXXhWlXX=&GkYjAQZXepc_d=&GpSRb7XfaUhXi=&_58kO4VVhlffl=&dkloKPYUeaqsc=&nbmMQZUfVbqgj=&c5cDlfWrndalc=&ttgm2FYorcYkm=&8SzDicVjgojYd=&2rKQjJWbmYscg=&roQUxmVjdleqX=&j4y9H3VlrlUeo=&lTOin7WgWWerb=&g92vmWZXrZih_=&igV2ytZVsspVq=&_rlKnGYpnmcaY=&TzfHzoZlkmXfY=&oYVjEuUkffpjX=&_dL8K5Xhefkoj=&UeFNkRVXnpZhk=&9EHOOJXVUbYUo=&J58bfhYgcrkjm=&vfQ8RLYiqimag=&dNkznBUrdYodn=&CcRQUEZshmZr_=&5PUMTAZbsqZdj=&RcVjtKX_gjche=&2zHTO3ZahYpXr=&XOhGecWmssnXn=&mRs9OmWldfjrb=&fzDBHyXs_ZbYj=&PbV7MCUaibcin=&H3ZwBHY_Yjbeb=&iRxxPyXsaijaf=&EKveCcVfghpbr=&eOVyVoZVcakjY=&jSUbnXZqskemq=&ttdNG9WYmhicm=&ECmL4dYeeooZh=&OLNyQqVmXmfZb=&___fiMYWXdUpj=&fuMCTBZfkoVfm=&uQ5_7oUZWWVpW=&zPTkwLZXsscof=&3vmqoRYoWaipk=&lOiTpdZkbcilq=&DqAmpoVmsklmb=&yPysyfZcagepr=&KdkUFjU_eeVla=&nruZUQYaeUrfk=&uoREPZZajjgYj=&IwqdYAUqmgXrs=&kXw488Welbacj=&QL4oW9WUfsXfk=&rMDR_7ZlVqja_=&5d_OZoXZspjhk=&t6GSVWWhdgcmg=&OKmfwyVZeXbdj=&9syJUKXW_afZp=&mYPC4sVncsbca=&eVmlyBYXdWbgj=&Qh3UJeXXaXWjX=&HijVhrVrigpZU=&6MOEtKXrhcobf=&ZJ794nXXZcnde=&ORwQ9pXrdfoid=&WMgRniYpbcpa_=&HbMn8OWn_Xpbn=&URP22WX_cgidd=&27fAFbYhXrbpm=&5_eDe_YenrfsZ=&Ztw5oEWXlsdlX=&zwLDvCYmYWrc_=&s3Ry4eYbfV_fr=&y4AEflYoqfUrg=&FTvKUoXWjVhXr=&nFsXimVkoVqbh=&hLixouVgZWohZ=&6HsKgIXXkqaXc=&cRR_ohVeYagXW=&gp5wvNUkVVnsX=&K2F2zfYnib_ks=&VpMX45YkkifpZ=&gAGqzzXXlUb_d=&gSsC4rUrbegVc=&2JUWiKVhoprVm=&TTg4yTVmmsZUZ=&TCCRDDVo_WWqc=&awIil6Xmhon_g=&PsS9YWVihjarg=&p3ISREXrijdqb=&nfrOrKUkiVfkp=&vBo5kZVc_Yopc=&FNOenJZqnbfib=&iTQzoPVVrlbX_=&xadtGEUlniqas=&mgCjUwWknjnhg=&QlXVtnZZjjd_h=&IZfAEyXcrepW_=&MwtOawZpYWUaU=&O8jlrXZbWhafi=&UkGmBHX_pUXVf=&dlEBueWmiWkrZ=&iMLpNNXpkhhZi=&DocVGRZasU_bo=&wYlf3KZkrdqss=&emlggUZrUfXc_=&lLta_VYnecYWo=&Ud8_k5Ygfckic=&cXdWvQWmiUksg=&yOIyC5WccZacW=&EbnmkVXjUhkoj=&BU4SHpVUfpsmW=&V97fxtZardiaY=&IH3zOsUoWlUXV=&UY9wCSXnherlY=&XR4mTzYlnaj_n=&DObYttYfZobmi=&OORAwJZnoenld=&hmPv4rZisirVl=&2bGCwjUlihYdZ=&tpAn_AZssqWej=&aY4M_LZqXkUdq=&HKmWIrWkZmVij=&ERgnh6UaVseii=&ALf9KKWUnUmbr=&Mmnv_EVYagred=&qylHWgVXdjcVi=&veIP4rXaa_llU=&ANUFGQXdbdds_=&nal2zJVYckbs_=&EsiINrYfhinco=&ceyirjYj_Xilq=&8lf9RXWcqlVjb=&YcungpYVgVfWc=&GZGTuQYbUrfsi=&qTlwYCYf_orYV=&8RRvvNYcmmqpY=&4d4dXHWho_gdh=&nGeeVCZaUXqaZ=&gzUsq5UbmlpXc=&73sy39ZXlhhWk=&dfxuWpViWidna=&I5VcwCXYUjZhc=&tJbxLVUh_nlgm=&bndjYCUrYZcbs=&QGvQ3NZdfcg_e=&B6bprmWrVsbVc=&6PK_djYdiWeXZ=&tjWIPIVmrjhWY=&6Ou3y7ZWnsqZZ=&if7ILQWVg_YXd=&xIT2jhX_rmYcs=&lqytARYWhrlnU=&WxHD6jZdZXdWf=&eyY2gHXkVWnkY=&wVvbSJZfcYXoU=&IBLJw_Wkscdsl=&MpvuWQZojlZYl=&a_MMfRUVidcfc=&UqsUmWYUnUasW=&CC_hjPZYjWifr=&OWl7uJWhgfolo=&I7GBgoZpUnkap=&YIGMPkVUqXjZa=&OFuVXOUUoelpc=&XfwgHDUUfVXfr=&rN6wTZZhZZblU=&gRtPXIUXrdWWg=&wmtFUGVqqcqZj=&JoqScVVsclqbk=&rvrWf3Ynkpdkq=&kKWIbKWZssWmn=&b4mqbVUdXianq=&KWlSLwZUijomr=&xP_QqMVrlpriW=&C2cy6KUnoi_Ya=&TeB_QAVWkfjYc=&sBrlteUqqalUi=&5NfEuNWhnbldh=&t2AOvAVlgaWeo=&ZtWhGAUoUjhio=&kr9YwzVXXnXqU=&445WzOV_rZbgg=&cjO7IfVgYdijc=&6P8NlPZbXhpWm=&yxeXtUUfkWrVn=&rIKMRUVlbfqml=&eO8MukUkVsnsg=&sbccEMWbclcoq=&mKeYjQUejkedc=&jY5GAOUif_jZf=&JUKHiIWoasrqk=&6YWenmYfslnce=&qXULyQUWgkgp_=&mYVCQ8UYmaWkf=&OIqgRlXeXWssp=&IEfDuOXegnqWh=&nFZ_HJWgZ_cgr=&x2ZGWOUUhUYUb=&AVqqvxZaleUYU=&XONEJWUfgg_rY=&WwcdRZZnXgsVi=&i5ocb2VjsfWlf=&ljM8q8XYgZokZ=&B2iot9Wiopfln=&g_dD7hYcpjcUY=&6inNJLV_esfcc=&GfXMiyZYgjiXo=&TXfzIQZXWYgre=&2wX_VmXr_jgrm=&zRac47VqlqrsX=&mnvhMFZaj_jld=&u3FPzhVqioZkb=&sXa3BAVnhlirU=&WcsbKnVibqiWh=&UwOQgbWUkjZmi=&MvHVfaZlVVZlp=&eM7_PpYpqpj_U=&neTXjtUZhssqm=&O4pBExYaVlol_=&Zx9_g7WsYloWe=&8AQxeDUVrXm_b=&HHO7iJVhUeXdq=&t8OHoDWjhqZlZ=&6zq2K2Xbj_iqm=&THdbPYVbpfrmr=&UxdF_aXbeWeXp=&3mRvyJXZjXaXp=&wURhlpWaUhZbW=&aXD6gwXqgpsmo=&fKLFXsYdqiilZ=&c_OhtAYpconYj=&7qCX_JZqYedZm=&9QYSW8ZronmaX=&jOzSJeXc_mbU_=&pVA3TIUnrrpYi=&AU_6ELZfkrbda=&ngTSjTXfWZXod=&jNHViVUcakWXr=&GpdNBVWsreVXr=&BJ3IkoXpUgVVf=&ABiICJXgo_bcb=&8wlkQ8Whicggj=&ymSURcXnkWfYV=&87QBdaXZYpkod=&Cq_eRxZpVejjY=&3TgkqCUmonnlf=&8EHuawWrmjiaZ=&DG6QcHUeUcpYd=&wRCiR4Xindmja=&mNb4SzXifhakq=&3Cm5T2Vsfinik=&H4fiq4Uinnbom=&W3ghZ_WXmocYU=&JpJNPIZaUcqWX=&irUwxXVq_komj=&25zdLYZhWUZjp=&z3_HO6UXqmU_l=&lhOIrAUcXZnde=&zDY3tZUVUeWhf=&FRHUX4Uesakoq=&EhxWXpVUhoaib=&VXB2TBWidd_er=&Hq43NHU_hgrpc=&pUumoIYk_WVsX=&JgC_xOXVkidgi=&zVvVV6Upecsqm=&9hAysFViXoYmr=&9N4nZQUr_aXho=&BpYUIYXdjhUYb=&BTyaeCVVWhcbb=&vBcIa2VVqksfj=&anJaJxYqhXWb_=&aLWshmVpeoerW=&BOCBZbUjjihnh=&ij5ZXSW_cohcj=&CSy85HZoYmlng=&rXViQzVlXiaac=&XJjr_tUeirrZj=&8xbWcVXrfWqjf=&vsLmCAZXr_YpX=&Vv_ddDYmiabir=&l52cFzUZgXjdX=&DkqzbgWnnlmmd=&zp6O9BVXlhYqh=&wf7ySpYfdYVnb=&GiUUfVYrjVelX=&gFUMDoWYelUqa=&Zw8xKBUgbojmp=&FQz5a9VkfVjdW=&GtEl_VZ_r_bqf=&OHTv_OWi_bn_k=&DCeMYQYXZepUh=&zWs4fOYdkpneh=&cCWZfYYdYXsel=&MBl8hXYdpgoig=&x2uF2_Zll_mZd=&p2aA_uZXnsUnn=&P58uITZeWpkrr=&B3iy8wWlligUZ=&hNZlf7XrVqqls=&d4NXjKYhWolaq=&IaHHLAYgYVUeb=&RD4mAdYdYnokd=&FS7fmeXaameca=&aYjiOPXfkondZ=&pdXCcfXYnkfoc=&RQ5bPyVZc_Vqj=&YpPefCVqVdWWl=&6cA3ARUnondge=&JMaqGrYilqbcn=&oG3PyCUYfmdcc=&7y_sahWpnmqom=&99BPQBWrgsfYs=&W2A4ocVrmXehf=&KimUMsZWgecig=&M5hZoSZkUlskX=&wRMKO2UfoblUc=&7yTLp2WXdrfZY=&9FEWNGWbgrZkY=&bYv4sWXblZoie=&IPHYAbZpcdklk=&oFi2WyZYWanh_=&4jOzCGVYd_Wci=&TKvBmFZldYsis=&JWMRTkUqbqYdY=&jcDeNgZpfnnli=&OflnCoWjYbUag=&J3GB6bZXccrka=&iY7jYjXYhgmcd=&xciFIuWZeigjX=&ALIhssUZjhscW=&i5sldAZmVckqb=&lbZTlTUjlipaU=&M4byInZighas_=&GUy8OBXof_nUq=&rxq4qYUhZVXln=&UgpFYoUZ_qabp=&uRuKwfWZgUkmo=&yhIFoZYdYf_oY=&dWAHATXskhlre=&pfzjoUWicioZi=&EdjVriVUdmclm=&wXAzBNZsahblj=&Gs7Xy9ZZrodjj=&UFCTVXYaj_oiU=&8SQ36YYqZsZXi=&dpUNYPWXnZXZe=&2wjYHAUZZqqoa=&qEpXzuVZsqXfa=&VeK2xqYoc_shp=&qXjyKFYjZjeqX=&QAxk2HVkhfbhl=&zkOoEyUZjUdXc=&iqxKYuVZaXjgi=&H42CyGVcYngss=&BAdROYUhVrUbm=&cewxBMVoqWeUW=&xClShLYfkVjmk=&cXsysRXgXnUcg=&hBG3MpYjVVhjV=&iX6XnVVpmjeUZ=&IRKx5kUhZUsbc=&Wn2YYfWheWWpa=&ygbdqTZYrakfV=&RsMnsqXnVZjYc=&7By9IEWmlrqbn=&bP_YpPXVeZe_o=&YRbPxmVqhmc_r=&Qv5jrHXUV_qrq=&CNsaEOWsbsefk=&Dgclz5WpdmWfr=&reyxL7VobmmXf=&B9xQJyWqWUdZg=&xzwbQIUfliaXd=&FbhSQyYljjmsb=&egExdwXq_YhjW=&2O5NBAZUYXfor=&WXQT8VWihhZfZ=&PHUCVSVakdngZ=&iFfsN9WimZlXZ=&Q_q7HZZ__nprV=&tCwyVeVaqmhoh=&uoffEoYWldXVr=&xhAQrQYddlsha=&apIwnfYnqg_oj=&Lkhjj5Vadrdni=&7K8EF2UeaVhjn=&cyAE_UXrdXjiW=&LwyNaxXmqrkfb=&ir8OwBYemqXjg=&MXGAeGYVmplnc=&e4YJwLZW_kere=&igylSTVhfqcci=&rAWyjuXhnmoi_=&3aPFhHXXbodip=&I3VwcpYfmp_nq=&XIQF_ZZpnfYYi=&bvy7dTUigajdd=&mlsfQqZYqhmXm=&9QEkQfXkmbhZg=&rYzUs5XmjcmXW=&h6KaamXfriacq=&TfOj92Zbgeloi=&FHitpIVVhVrpl=&fSE8SuVUXVljW=&aUUyE6UjrbVas=&99XgEkZkX_sWk=&Vsj9u2UoXaWcr=&eFPXCAYieVars=&aLoaFWVXUngkg=&OQcrklXZVVisX=&PdXEL2YkpXg_s=&kG7xYmXhleYrm=&7idHezWneamVa=&jF6UF6UW_pYWV=&2fuCNVZeksdeX=&xN8dgVUlfrgel=&9Ro_j_UgqelgY=&PLXCuEUkrpnri=&8KTxgzY_gWonY=&naGogKZepVqle=&cH3qe8Xfhsi__=&66kF7rXksdkZc=&Rv464VUfmUerh=&pGh2G8VfabheZ=&jCTicPVWrcUrd=&yVLALbWdr_Vjp=&oYSH_YXXcgmkU=&CKNIvIZkelpnf=&wRHXP3XWfYojU=&3kWIypVgjdc_b=&7MCRdFXi_grhp=&FfsmsEZYlkbXZ=&SSXyZQVosogee=&JBeCyqVdlqfeZ=&3CAXd6XbsVmgZ=&JKBzpaWsqVaUY=&BO8CTkVsjXrhj=&bYlc7zZqqmeVo=&iLGEzyYWejnXg=&NP2zRxUbeiipb=&HiWWjgXpqhkYU=&KSlWKMYibgjlf=&4e6AdyYbil_me=&3po_2fVsYkgVY=&umarAxYsVanbs=&_Y_nLaU_XUpYh=&i5SE_ZXknkVUb=&EINUQwX_qZVjo=&Ae7WP3ZpniaVg=&H4Pfu_YsnXdoU=&UAqy79WgUq_mj=&tLCOcgUUfpogd=&TADqwFYddZgUr=&j5aCKHWaWVgms=&9CShanVqsZUcV=&9ZXpGIZsnoaVd=&EEhQ8RYoYrYna=&f_zL9cVbmhYif=&TwiUx5XsmZaWd=&WKZj8dYsqfaXp=&6jwXkeVUqmije=&IzE_RaWgUVpqf=&8kRDmqY_cifdm=&meZFZAWshojpn=&rYQCXLUelmlgs=&5q29QyWodkkWp=&o6IpzNUnWsd_l=&5LRDXuZhagUgf=&vriUIMXmViZpd=&RkL2aeUljnXnn=&bRKWVxYekVpcb=&URpxwvXfooUkb=&_Qb7yVWZXfdkV=&gM5cxTX_hWfnh=&PBoXELYnfhmhn=&d2vnSfZbY__oq=&Pg4KFgU_eejXa=&zNKiaQYkaXqk_=&e4c6sPYpjdo_Z=&QgDn9sUcWpZcd=&SmG_h8VhpYlgr=&5hc3c_VUnXgql=&cKknycYaZkiZY=&ciYEx9VWZjUen=&n6BPIHWeUnaj_=&A9zz5yVsXZUss=&92HBByZYWmhn_=&aQcXY8VVoosbm=&xkQiQZUbpilfn=&WHYmDiYZbcikh=&Gm9YEtVdlWpZr=&BYZbAfXnXUrih=&GYcAfVWZYcYcq=&abuKB7VmiZqpm=&8xbb52WleWclg=&T5imJHYVnkjZg=&VxVBphZWlgZmk=&ZIfeedYsVshYo=&y7w4JgYkdYoak=&MWNDKKVmdXkUo=&BO8OqWV_sirdU=&bqBFbeZqbgUqh=&Zz6lfsZbrgVlp=&eBpMucZpWUeWh=&k6XonUZsWZeoi=&PyIAePVYckkag=&Ph5sIoVcl_Xmk=&ASRUBIZepgZig=&Rv6gBXV_gfiVZ=&dpELChXZaqfUs=&_6uF_LUVghmos=&xg_KARZoglXmU=&c5r3n2ZWoeZ_i=&S3mZB6WlnnlVZ=&_EAzJtUfZXVso=&IZ_f_bXilkrre=&_MO5niUqZbWka=&i3fN2_VXVnZaZ=&VmOWoOZdkarfm=&YOr76aZcpsbpZ=&ifS6gXXnkXelU=&XewNDlYk_UVia=&eGhUbJZripYUl=&ofI8UcZZfifmX=&4ByAPNUYsospk=&B2VqkfXYVrmUe=&SB2oIwYjYniXi=&JTolPLWofefjX=&svjSINVnbdnja=&vW9dqJVZqfVeg=&AZIbSAUmlm_pd=&fHu4_nVgZcpeY=&t5xR2JUlVlYkl=&SOEsTLXnVbcXs=&yXgFkmWlVVbZg=&BfWUNoVlmsfZm=&9ZZtYkUZeoo_f=&SaOCrVXpXflsm=&O4E_pxVho_laX=&xHDql5WZZhXng=&zJBMlLXbYZsWd=&t4JOAWYVkgqZW=&ddZ5tfUpagdhl=&Hn2sZzYqVgVbV=&aXWXwuYZWgmoc=&pAKyzCWsgWcfq=&vxYR5lXkqgYkg=&SpzIvOUinXsU_=&uzRfOmZhsriYn=&DCavLiYWXalqW=&FXkcGdWnn_ZgV=&KOgwQAYXcUdmX=&GwsvQXUWalVlW=&58ripuYfksnnn=&nNAQvnYfgoloZ=&Cc8M3LYsZ_pja=&MF7T72Xcjfrdd=&AYiqkJXcinrne=&rITOFNYpfjqhf=&bgJNiuX_cmoar=&VzDLiJUjobjaf=&99R8a4XUYkr_o=&nmuG36YVnhnof=&fHuh_VWYosXYm=&4zyFwQXlYUYec=&cVjJowZlZkZqo=&3tDiLyYlr_Yoc=&35PQ7VZiWXbnX=&TVuDhbZYrsoka=&ijDxIjW_qphiX=&Mc5CiKZc_ampn=&PzftZcVhXnhmh=&38_juWZk_nfek=&3q4DopU_fZdor=&ruPOWkVrYdfhY=&zjcLEgUikqUke=&XXB7iAZgmsjhX=&xNY9dRVkfholr=&f5ujqCVprqmok=&qkmB_hXi_esZp=&mGiOfSYgqccae=&LKXNaHXlppXpb=&ehRRGaZn_cjhm=&jAQTdqZ_XX_el=&vFxEUiVhZgdjp=&vfiraCXUoVV_b=&yC2rSTUaZskkj=&6D_Tl3YWWgrhh=&gz5dP6XdhkWWq=&rpE3fEVqso_jg=&Vf5GTPYjedXjZ=&sBn7nDYiUcsWj=&aDLSBeXrojjfX=&sxPyJzXgdgcip=&KRhQejVVnasjY=&ulLVLpYZmUaho=&NLpCH6VUVkWqg=&oDMqzTYsjcgZs=&inBIPaYkddsZp=&zTtLmHVfihVff=&nmAlRKVcUYVia=&CsiI4SWYlkjkk=&8FGbPrUn_cjXp=&BGAptwU_sfqgd=&OPShfjZsqZ_Xo=&dV8YhNXcYjbYf=&o4PKhJWckWdXh=&4mFsV_VeimXhl=&t5biJEUhfbbfp=&IVdONKUcen_X_=&WPUDN8ZhjYWZl=&mUWPORXlUknke=&SvreZkXhXgmna=&PkXVrpVnropnd=&OnGixGZeUespb=&nHEo7CUdsnUXW=&G567b5YgnhVWe=&kFi7weWpkaiVm=&MdGMyRYlUjUil=&AxLQ99ZVnqaUi=&zsTNaTUodWmgg=&izDfRrXdcXkmp=&OrrbKlXfnphcY=&gNRtSgVaiiY_h=&S_ajpvVjbcZo_=&TFDPZOWUVZXkb=&l3aArEZr_Xhro=&RfZxygXZemgfc=&nfl57OYnodsWa=&sdcgIGXghYbVa=&DPhq7OYZaqiap=&aQAy_mWeaYZZV=&7icruPYZbdhiZ=&izqhsLYg_ifVc=&jI5nG6ZZmgshp=&QfcrPdZVbdfdn=&j6wDg_UmhjjZU=&dLiht8Zjpgkab=&acqzACWfYnbmV=&J2_efYWnYffaZ=&GWLibnVarabXc=&J4zwCMXmZadmp=&8M28CuWkacUqY=&RRnWUlYefamrf=&ZDWBIxVrZlsWp=&bK2c_sZXY_oXU=&hZgU7dXpWpijY=&MlTrjwWhmcfkp=&U2G5w5YYfsZpf=&WIMomEXjpZaef=&bTJ5hpXdljkYW=&b46NZzWdUqomk=&YsteiIZlsm_eW=&CXvHbNZUfZVhn=&WDJjQKVVXppV_=&anlE5IZm_kmY_=&A9kutfUgknfli=&JnWazaWUjfnZU=&QeaDxnYaVXUgc=&XpV9lPZZoipWZ=&2TxvcOYgomekX=&nqkveCWZkodYb=&l6NROAYZZbsUe=&QwhIiuVmf_skU=&XMURjZYgeqhao=&o7RISUYZnlhWi=&dKLi7NWegeWdn=&o9MLFpWVfqnV_=&mWBGizZqpmmcd=&uE6SUxVYdiWd_=&ooJN6QW_cimlf=&wxuBXcUskgrsn=&uNM73nZXhppao=&NjmQCaZdkpoYq=&Sbv3r5Xgrkh_h=&bgZUT_XoXZbWs=&ZqoBWLYVaflXg=&ClGOdmVkZbijr=&QW6RRkUsdciir=&TVIlBmUYofkga=&KfIUgCWajZoai=&mzBT6oXkdgqaX=&_wPeMzXiZidZj=&Bt694NVcpabqV=&2rZV7pUhYmlkU=&M4XawBZ_Zjhmo=&WOrqKKWUYeolX=&cqfvc8ZrefrYm=&DHznA8UZjlhqY=&Oaso7SYmhnaeb=&BxLaiSWa_UbmZ=&w9G3wMZdpjUmZ=&nCvxSeUlbqnUp=&qJ4Pa_UZVXcYj=&nTmuznWbcbdoq=&xY7q4mZoZfY_U=&taueA_VYdYmaa=&WdAQt9Vnbdfsc=&XVEtT2WdXmaci=&xAuOjwYlWVsir=&5JcM4aXbqanVh=&7dQ6dYYdhbhlj=&LCm38FUhZjsdY=&gP2wobXnneqlc=&JWWk6TVWnVVYe=&zkYngyW_hnY_f=&tY4FeOWbpsWfX=&cZlfrjXdcfohk=&uxkQTrXpXesfY=&4rGTB4Zmqrkdd=&tFeBpNWWcijgj=&qwIksnZliZYho=&logPRwYZshfgb=&wOU2cEZaprsZa=&gOjKexZ_cnWcr=&vCvI88WZdoVas=&LuXxCRXiaam_U=&3PYKBeVp_eZse=&oro5RNXedhZYo=&UBrKDrZgmeYlf=&IAdmLuVVbrapc=&G3cSevUVXfYVs=&Iaq46CUfbllqb=&FsDqv7UidWsZc=&tasX7KXbodfYr=&Bk9ZGAWrohnUY=&65TzibUcVWcei=&J_3iZtYnd_jrW=&a3mRQvWblnsVf=&fuesTkXhmpUVb=&uUjtwDWWgZahk=&GEqCPXYdZdWsc=&b6FaowZZlmrYY=&tM2yP2VbUmgoh=&Moe3gQYW_jgpf=&iTSz6gXfbkpae=&yjwjEDYpqUgqb=&QwLXREUjUrsqo=&X8l_KQVrmimYW=&gFCLT5Zd_Yrod=&VFxfjEUdgWmhm=&XM4eYPYbdYhiV=&R8R9QqYbnhsh_=&uvTnRsVegmrha=&NIqBerWfWbVWn=&4OQBGsZflkgUk=&NHgkpzXVnpalm=&vby8mUWfndgoZ=&B8_hgYVsnnfik=&5DJd6IZYrUojs=&btvzZ_VhaWcjd=&b9GysrZofYbiq=&RAWNbNZXhhppj=&tTh2fdVqdfdlg=&FGEdwtYghogmr=&rPuB_pXfbcWq_=&aoJ3PvVVopsrW=&XAfMbgWiqskZr=&4qOs2JVhZdpih=&Tox8IoXaVZedg=&KwkTImWamjbrj=&YQVXhKYVbrVq_=&DXVRZRUpjjmjZ=&sm9KozYbflcXU=&BqiErgZrdVsar=&pRGfYXUlZlZhq=&VH_sDjUoUsogV=&GNF4jFZqqgXpp=&jvCp9UZmhshaf=&IknfCQXWkrekn=&H7G6XyVWolUjl=&hMNMnyYmdegpg=&pZdueSXqpdpaa=&5knPpoYsaseg_=&CmcGASWaZVYX_=&wxrlrhXmhacaW=&4OsqqaWbqideg=&U7mQaVZsidVXk=&xkuk3xWZYrpaU=&UsUhbZVZciZZm=&2oeo4eZhmXlYX=&CC_zwlYnfaZpp=&ipLVPOYnpfVsr=&8hpu_XUYrVjY_=&wJ_9u8XUffYXf=&emxjyNXpUXhgc=&PJ3GzwXejYnsf=&PjrrJOZbscenZ=&EerIOVYarsneX=&_V6FUfYdnldh_=&7fEEDsWdql_lm=&DtOgtlXkUYeiU=&6HVeWZZZcrVbY=&uz_szoW_jXreq=&EhqOVJWaYWWff=&GYLyjdVpakrlq=&Z6SRksVViWbpY=&hHjohbZpmrYUp=&QF7LrKVdbqfZn=&8KGWaaWlZZkah=&VBxVqGXUrgldd=&IyLPOsVYp_siZ=&IRQEfGWgUaegV=&orT6AkWjhqjhc=&J_AaLpVVqWi_o=&gdMzuSZschija=&bhu_n7X_gimZi=&BL9Eh8ZbalfYf=&OALr93Wpqd_Un=&j_wWLoYfsaqUq=&Svy3PRVfjY_f_=&BciijDUhsq_dk=&WYWm7KZpirinj=&b97pmLYnoadbn=&pulOdnZrqWngc=&VXXcEKYsmqplg=&C9gHQ9ZYUocUd=&N3VlemYWaXfam=&pld3DuWlZejdp=&bYrSRxUoksrck=&KGOIdMZZgapUX=&xrvUk6Ynfs_ef=&LspQdhYssflZa=&tSmwA2VqWplrn=&WQqVLBXlUVmqh=&JMMi5UWVgeWkj=&fmzzP2WhkoUcf=&wIkVhFYXboblk=&Mc2SDeW_jrcnm=&wN9hh3VeUbXsb=&JGeMFgVVZaeoq=&vCO5xpWWXjrmr=&op7ZbiYUgoicc=&Niaw_xVhdVseZ=&PR_7u3XZcnXdk=&3x8mrhYblWfWo=&drmR8eZmYXdjr=&B6qZfpWr_jnsl=&zEY6PKZWhlniY=&7gm2w8XioXVZn=&yDiZwjZlWhdpX=&JiV4ogYsWaYjd=&iCFGRyYhXVebf=&JtKMgnUYhsVdj=&zqEtQ6Uirbjsr=&oNoANyZraVdVU=&CjVQIUZglVqZh=&VQOyXPWZfXUWn=&p_3UpvZbhcWmj=&ZmnAGVXaYjZsb=&cLFjDtUVnenop=&5o6KPDZrqmfdo=&UYP9NLZVsieoa=&37clxSYZbr_Zn=&dfLzGYXjUadbX=&Ey7yuQYWgbWlZ=&LmqCzyVjjhqWd=&i5AGOhYbmabss=&NGD7J4ZWpljrq=&akTMSNUssYXos=&ephRhCZrWUslY=&W_OD3aZngkYjn=&2h3oWGVkml__p=&DBdrzFWbdkmqh=&fTRltmZcaZjsf=&JJsqCQVbVUslj=&TYWbnQZqWpXrW=&8j5eJiXsVqUqm=&r96o5bUiXdhnm=&riEVL7YginZdj=&tBc7C6Ypjpric=&LdtjvuWqZibYg=&SNglLaYVW_l_g=&LpVkDeZkoo_oU=&Y7biDwVsmberq=&uKntAMUYYqhmc=&WTOoxwWrndepr=&8D_nWdWYq_rcc=&CPwyTcWekUbjX=&vkeGmYYhgUpfp=&8QOhPBYehZkn_=&xqOXxCZVcjeUZ=&SsC3CSYfnYbfV=&8SgKszWpfcmZc=&fTjY8xWoYndmm=&263C2EUb_jkbp=&LMLFj9Ussqscp=&pG9fNDZaYmVoh=&5FlVs2WpYXhmq=&WnD5cqUnmadZs=&2WHLErUYgsWaj=&tfUveeUqi_Wai=&IOOnjjZefridq=&cDNitDZrjs_hp=&wENXt7ZYklWec=&des3OCZforcZU=&ozfGW3WrZjWqg=&yOS3uQZigXjac=&L5Y2ViWjjZpeg=&OCmzQpZXqplVa=&WhXHlNWmonflX=&PRAJr4VcplhqY=&U3dDpXWalrYXo=&Fz7gDCZanndoo=&yQ4pE2VdglVkc=&m24KqGXdlVViU=&2O48FOWrkpZpZ=&yyTA9LXgqqY_o=&D3L2xKZaYUenn=&uh2US8XeicYsV=&VXvOkVUrcZWeb=&Oqbcd3XkhUpie=&KX_QXCXVYi_pc=&2_pDj2XaVrbdj=&sjw98VWnpjgVq=&V6MeYQWel_Vod=&LDvU5EWk_kXir=&eMOSoLZgnsVba=&lNAzM3Vmedmae=&XlqXtzZrjjiYc=&srZyjSVqqfkfl=&n2v69aVg_pcmr=&IpEcSaWXibYlZ=&ER9dV6Xp_kUlm=&BGeT9SXVsUbag=&npo9iHYqmmcrl=&GPJZDwXadnZhg=&IfZQgwZlfYWlX=&uHC8riXXYlWcX=&8fFLxRWqWUqhW=&8jTMZEZUVbZol=&FjnB_iYZXldiV=&fwpZteZWkpm_Z=&x3L9UYWmdhsfs=&ct5ZQ3Xqmfkjc=&xQ6Hv9YsaaV_k=&pVl7eTZUglWlo=&_iInphX_kdkdZ=&TbRBdQUpoWnhb=&E8_BGWZqeiYdf=&oXszJvXghelpf=&LKOSjoZnkY_af=&oBqPCKUkbdpgc=&czcW8XZnnjadX=&uN2zygUgm_fdk=&nsFPTrYgUoeoY=&tGETE7U_ngkek=&gqk8DmUsroprW=&ducCwDZdemlUs=&oUTORXWXerUsm=&mczcSfWWsedpj=&TKLlLeU_pskdp=&5OeJ_4Wsimrie=&4sTfn9YbrieXi=&izie43Ucdalmr=&cpgUzPUe_rWXo=&5xsxDMYWXheYm=&XwyfIdXcrlr_s=&ZdM7K4ZlWZgin=&T8w4BsZkbnspf=&L8jTmVWekeYgo=&XWQJIpXo_eZUq=&Gbd7PmWiUeeln=&uXtD8lWnjZWsd=&cpEZx9Wqgkhpc=&VM9XhPWobZhWW=&zd46GMUZsVljr=&pJRRwoVnXqmZj=&Ke82TvZbeaphl=&CXuEFVWZlo_cY=&crbzsKXerlZek=&U8EYkzWXlkbom=&KbqwMEZgaosh_=&dgYAJUWYskpke=&43jlc3ZcZXebo=&kCxlJ9Vcpjeja=&WBkZOpWaUfnpr=&2KnIO_U_hkWma=&xcciv7XWfciYX=&nzG99AXUdUohg=&OiJMzuWYUfqrf=&tOQztfVblo___=&EKe2ofZjgefeq=&fV9w9WZoiXZo_=&CvaH7SZqjpVWn=&5ABEBLVWeVedd=&xClNe2Yofcjpm=&kgOCMrVgXVmXi=&Ppy9FpZlqprdg=&vZzZDGZjVVsZX=&5ZQXf5UdUXrj_=&e8LA7pWgdapbZ=&FTnFPxVcoqefX=&f9QXdZWnf_dYo=&zeGxEMZdghrpg=&LxjsNQUUbXZhV=&Ug8pv2W_iqdmY=&AWiujPZ_ndmUe=&bh2yjLXXffZfU=&qXMiUuVYp_Xh_=&PrPVt6Zmpj_Wi=&MJyQOlXWmiWYi=&wzFGiDWYalUXi=&X7THutXrZWWiU=&KWHKI4WgZipgj=&cJMnSOWcfZg_V=&5pxO8EWaUcaiY=&v3zmKpWeffbkf=&ho4b7UWcsmfhU=&x6_z3IWpXiaWi=&TY9Yr8UakqWaa=&NZHF7XZshsq_W=&Qu_gJzYicaola=&SGSIh5Xbponfr=&2cC7UmVnqsZUl=&PwNWYgUVnklZd=&PmUARVUqWsgog=&ZME5H7Yhsj_Xk=&3WWIKPWjpUabn=&CeqdMTWkdbqri=&QghF7nWcrZqiq=&Txctj2Ys_hjVf=&F_ngfiYUeXZae=&yOFPamV_s_s_g=&hPsDb6Z_oUioX=&jbanZRVldojbp=&hbTn2EVXbqfs_=&OZWnLmXeZldld=&MmcSFxXrenjbW=&A865tHVWo_cas=&TpLZQXWdccgYj=&DqvnmTVaVfVdo=&VsJWSbVmqYfbn=&CRazjPV_WqWcW=&Jw7ChsWcYWlWs=&Sdw9ZLYfremeW=&A4rWbIYrgkeiZ=&yXuIxMUWgWhZf=&SmCskFUm_fbfb=&Z3LveeZk_pWai=&KmxxaeVXkbl_l=&kBQgJgUgiWosh=&KrCTCkUsUZVkr=&GP66z3YosUnY_=&8PZQSzZXbfcap=&m48f3zXnXnqdU=&vpvQ3AXbXshlf=&2taPohWgZmdkn=&cnN7G7Yqoolhr=&hvVAvQUlUpbge=&vvpEz2WXUifrh=&9xOfSLYgUmmhj=&NNakH7Vb__UZd=&AjhoIzYajmbUY=&PJRoUIXUrs__c=&W_LOQZYbhamhk=&o9y4WnXaVseri=&hXlgwCZ_Unbdq=&QNEOIOUqUWijf=&fAYbcUXiabssb=&J4GA2hYZaYaco=&4VomPFWcZeokc=&huxk5KVsidelo=&vmNUyXVmfiqll=&OHdpKDYq_bcqa=&hIECleZhZbcpU=&pXlnZCXjbXrps=&Xh4Pu_YWXpjZV=&9KXiJnWsjhqbl=&dJTt8UYlkfnVs=&gytcprZlUWlZ_=&mm6PDZVmdirdX=&JLiZ39UUaZpZV=&b7qRpOYnjigea=&wzwdjNXWVVffm=&FcfKwFWXjspqV=&wu7sKpYXj_Vkb=&cgzsTLVgrhnks=&jKzoaiZirifog=&zZdJuaWnWpnVd=&themHpXgofdhh=&zIUAQeXVhrjdk=&dIbuUuZdgWkqr=&zxmSISUXWcepb=&L6cpQEZWoodsq=&ahr3c5Wgc_qYh=&qg2gT_YaVVpfn=&CylXH9UnrqV_n=&y5_aRSWgdWlhX=&XkKjIAVVsedZl=&jRoZuPYiXWcaU=&Ib_jqVZenVZpl=&QAMNOqWrWkqWb=&p3CjvgXbsapb_=&BpYwZ7VXhdahh=&bgaCDeXeipXUs=&zFkQ8WXrirkfi=&qVSuGbZjfUplW=&SPLuNBVdcqXog=&6pky8mXqslXeV=&f8KU5tXWeflgp=&fEdB7gYgsskmW=&bNKh5PZjshq_q=&gYZnF7UZraWhV=&vUqKMnYVXbmlZ=&KkN4w3Zg_Xfpl=&YKPJu2W_YlrVb=&K3HrCkWjkUnrU=&L9Fw7AYUhfZnp=&gNzLCaY_ioYim=&gZPoDdXkcnief=&EX3bSKZscVUal=&blPaLcUWojVpc=&_nObnsZmgfidn=&YVcisBZkhVbYb=&FhoKrIXelqWXb=&PET9iPXcoUUqh=&ke5nL6VrbWYkZ=&GfQDDOZm__nie=&FwtxVsWqpYmoq=&Rlpq35UqkoVYZ=&DpHapvYfaW_gp=&LkJKhGUoZYffr=&UGky2NVVgenlr=&OQooj4YVrrmaW=&y9YoCAWgkeqdk=&RuX9bfVVUdncf=&hWiXspVZm_ais=&DcR_eWVn_epbh=&EEoH36Xl_hUUs=&8yDE92Vikpspj=&3s5ebfWensqVf=&mhDhExXdd_hhs=&Bzp_B8YgarooV=&tvJCgjWoWneXZ=&PH87AKUWjocsr=&3WVScIWgmqnX_=&k8tzriYhqfUVi=&MQyW2dXgkroeZ=&AcjfOsYaneamg=&RiNJiEWbjhcds=&Tn7wImVXaYjYa=&WQaoBsZckoUbm=&P9cwN2YoceikU=&KbvuilUfYZ_Y_=&dfTFmtXjeXWWZ=&DywSsqYmVmn_e=&EaYU_uV_eWX_j=&K9mQ6zXngdbVW=&htWXXwXWsccZl=&IeMlUTXXgjlYd=&2hOYpRUggiZlb=&gHxXzEVbjWYpV=&JJkNppXadeoUm=&bxcGBsXchXUal=&9ExXnBVsrckjg=&fK2eSsVm_jcUf=&iTFNuQXdehecV=&CUV2k8WZUialW=&udAFi2ZdVsaYV=&CAV9USZgWochc=&WINbC4XqqcjdV=&22_NVHZXXldmV=&ySnU3DVraWYch=&iPeBepYgnsoer=&kKXp5JUginslW=&3NtUFkWZlXqmf=&h4fS4mWdko_pn=&ajvr6NYggWrWZ=&7RalfpUjmpUlY=&P7ggAMWmilbgk=&bEzGFPXimqoic=&RyzovvXbsk_kd=&7ZxlpuXbWmVss=&rY_fnHWZmqbkr=&I2RC7XUjjmWnd=&KLN2eBVhWlYmW=&aQlgHNWobsWhe=&ibwDF2Zerbrsh=&MuzqfZVUm_iaV=&zckIszZoVgeV_=&gWmFRrVgZnfce=&Mx3gTSVWiZkpo=&MhHDfXWXa_aVW=&t2zSbUYZbUZpn=&6Icd23X_YmWob=&_6Xn63WpkfaWn=&Fl5k9mVVWfiYi=&hCHQpTXrnYjb_=&A5ckUpVherbZh=&_q38MMUUakajd=&7fm4SOVqhqkdi=&EzAqQEVjihmrk=&Mh7jBIYnoZpdc=&gj7fMMWgjaqUW=&Pum3eZXdVaaWg=&8N2leZUoaoUZl=&PIzW6kWZkgXgs=&VP4tatUiZnnYZ=&VYmaR4WbVUY_c=&e5QJeAWkVn_fr=&zIajC5ZaUZakZ=&tfRVHYUifVZlW=&KSGf_FWVpn_dj=&nz53zxYYWkmjs=&M6kGqJYsbgm_i=&TRYWulXiXpqaf=&R8Ob77Zcsjqjl=&s9DuQYXkcVee_=&FnfHeBUWlYZbX=&P4TwMYXVjjZYj=&l8mlxmVlVbmXg=&qLSQrrWXUqZi_=&Tflh3VYspeiZk=&FGVpvTZjdgnog=&AzqzRgUrcbjrU=&z_eWGcV_VncjU=&V69R7nZonmlcU=&voUMOaWhqecqp=&VAIM6lXfiZdrl=&gwfh3QVhkZmdb=&fmmHH5ZsYcdbj=&AOu4UzWcnqUdj=&uUZvJ7Zhonmdg=&SidlR3YhkWVlj=&x2nPNMXqZYsic=&hun7UdZieacjq=&USZglqZbsdrrc=&65GHAXWok_icW=&5wRNxFYZq_qjn=&JhgYhTXUspZsi=&ghSB5sZeqnfXb=&nJR3YOZjplesg=&VpnLTTUgcklmm=&pA6lFVXXdaaer=&LUklzkUforXhY=&ACsVNZXVhlnYX=&dmddL7W_lZYjU=&wjhBUqVZcrYb_=&_fsJ9dUpgoZWc=&hHwfVsXkpnVab=&JYCbrhWeU_gcr=&SIx7iZXcbaZo_=&bIWskJUWUlcfX=&XESe3LXimUhil=&afZoylVZYZbZd=&4ssuLuYcYagjY=&Rqxb5FXXnmZYr=&USDKtkWY_Zsff=&ariGJ5YZkZje_=&kNGSVaUkagoef=&8aO3jpVdWlUVq=&s6bQT6VX_iej_=&DgN4gZVYmslYl=&JbRyQgUcadZms=&CvV2kcUUrpaa_=&id32n_VondgiV=&pztXI3WUrppom=&PBGly4XompcrU=&I9CYKfVrXsYmf=&ovPjQUXpefrgm=&CtCY8kZls_eWd=&UljjQiUbeolcW=&6tAB5PUeakrnj=&8_UfotX_nqZfm=&2amejJUlbhWqX=&r4JLxbVZrdWsZ=&zmbrVXWraVlps=&Ff8SgnWbfaYnW=&w72xszXVUsVbo=&w6RBjwUUhsppa=&sP9JKtYsZWipo=&ogm6uzUjhslbV=&I6J7YjZcprohi=&59blE2WZaojqm=&miNKD2WgWnejm=&oafAGZWeprhkm=&eMGnf3VrhXpdV=&wSGTSLZbepooo=&NkC4kkYljZkqq=&oQvfrEYpikbYo=&3CPML3WqbrXdd=&3G3MciUfcqqYU=&HEpZNpZWcbYci=&6wZ4hGYgqgqqX=&YOBS6LYXpmiXb=&Q5J_euZbpUXme=&j2UOvIXp_rZii=&ptoTyoZjl_VqW=&53MB9fXkkfYbq=&cz8GjCZVoodYj=&6BGNZzUrqihUo=&HKDxBYUfaZaUf=&QS4HT3WpZqhXo=&XQi_pmWrYqjfU=&4vmCQiUUqeinc=&yrp8qXYheXUsb=&rgE8msUopVdcg=&ab7t9SUli_pYh=&FniP9ZVohqe_f=&iNzVcyZpsfZUU=&rN7vQdVUsrhom=&B6YI7YVifamab=&eArzg5YbVoZma=&4jbtubYnfYZro=&bEXCbaZs_lqWs=&HiUQxAYoqgWYn=&_EuUjgYbqYmpq=&3GbbNFUdrceUV=&9_esKPWcYgnqp=&CQ3H7NZasas_U=&D4msNPZhZYlVi=&bKOSkmYfUUloY=&RyByTMU_cpbfl=&lFY2syYfjikk_=&z7kisQXVfdcmY=&NEg3iDUgrgpfU=&IXv4BVXroZhWo=&87T79YWjdohdV=&fhVxnNXpkqrbl=&RGdHcWXqfmjda=&uQmhVmXepaUqb=&hXZg6HZkrelno=&3w9EqdXfneirk=&qoHuCAWfgnZba=&oPvZsDVemirYb=&LLvL7FVipgUXl=&Ef7nbwWabdikU=&wBdItvUe_jcei=&eNWQCwWUpejoi=&APsD9XVpgnVlp=&BKimn5XqZVWs_=&6snN4dYkqqZsr=&GObmbAUpYgd_p=&a_8AiUXdZdapr=&PJccOeVcc_mkq=&xsRhgsVhmhql_=&uGe2Z8VrkjiqZ=&z4x6dpYeZhWqr=&Fi6NZWVUeWgnj=&LpfBbeXV_Zlak=&jcpJWZWZsilqn=&vfWQs7UY_nlUd=&LrcwjrYUeUjec=&tY_UmAZrgXeWd=&LpLFQsUcnYqgi=&DmGmZhWnpsYnf=&5QLcpKZYcmUc_=&phVYcbVfkjenl=&D7WEgZZqkWder=&7GpW99ZikgWhm=&lugL9xWmdbim_=&tzw_Y6Xmikcib=&SxBD7dUsrVidk=&YgCuYnZUjerZm=&2bALHqWXrsYbi=&YvvjKiWjmscsr=&HwREqtZeWpUdr=&jtXz64XVb__UU=&6UVsaaX_YUcWm=&7xTj5pYXndlZo=&WFVRtXWfgYadm=&hxcdlgYnlrbsr=&frSxTYYWgp_kc=&Y32_wrW_djqWp=&QlYly2YgWhWhq=&wOTfxkWaj_hUc=&jlmwGSUcVgkfl=&qhCd6AVrWbefe=&SccFvIUsghaca=&IJf3yoWbYcpjm=&b26yOHZnYkqlg=&dVK28WUYWkhXZ=&tknEwyXcjWobU=&HeHoYuYbVgegV=&smYpDRZdWflpV=&8D6B9XWeedhlb=&wm4lzrW_fYhcV=&DT9WuiWWdfish=&El_usoXkmnajp=&QvvmvnZpcZZqr=&xX5vEiVsVlpln=&US4fiiUmookmd=&5pOWvPVhVYdhp=&azJaFZZfUrgss=&Kvm6UQVrjdgUn=&_LLYCOZYjZooo=&C6pHcbYYWVhWr=&5J2uw_ZWabYba=&bUGKSEZXhpVl_=&9jmxL8YapZhVb=&IKau5cXYlZpli=&TIPYElUkgr_pq=&ZrShJyUcnlcXW=&75Elw7Wnomep_=&cruiyGZWqWsd_=&b_tpFjXnpkkhe=&gk3tCDYbmmjsr=&kTdUGGWWkoljV=&njHewKWlahm_U=&uazAoEXZkkdab=&f2RGpBVWd_rpg=&8vAg2MYVWWllV=&2YfEH2WXYmbli=&fmeVKEVbiXmlf=&eQa6RTXnofcdk=&_QTcAIVdls_Wp=&6cd5pCXkshmek=&7IPTvAYpegqor=&AMXTP7YlsVXoV=&4_TdwAYjgUYfk=&IlbghsVsYWdim=&OLzS7GZdocZae=&XRqbjQY_nppos=&OrQTawUaqskjc=&WoCht6Zfnldhg=&o7TsxdUeZphgr=&HxjU_yV_sfrsl=&nW7qhAVf__WhW=&iViKouZUdfmba=&Sd_kILZUnUapk=&3fBPomUXkVYjX=&uIYs8_UmiqWph=&FYj_N3XmcXfoZ=&hylnbfVp_Vhoi=&5j3R9JVhYjmod=&4UC3oHXbaoVhn=&2pFUTHZoccWVo=&_yYJsiZaZVVfn=&jqIvXUUol_qjq=&TDOaJHYiYhhrc=&c7gKBYUjqWmqh=&l2DcLUZmgeqqY=&qj59GTYhsoj_d=&x3upCbUWskZgV=&W3rA9IVbbaYip=&Yvg8wIWadiinn=&sUyzzzUrZrekX=&5RyxwJUnqam_d=&ri9bQBZbUmlrq=&SIDhDGViZaeZf=&IINamrVgWZrma=&TqMgzMZpgebnd=&SYZmasXXdiqUn=&t9X7RUVsqjdob=&SCc2rHYjsdUea=&kmZksGYqrYgkd=&kAmCVJZUrilaa=&jafoeSXiZjlmj=&f3_bhxWo_drhm=&Xzvg4dWnagUfk=&lDgvt7Uo_kljh=&IT_A_hXqjUVpn=&vNXZL3Xnjeoqn=&S7Fpm2YZWXbkX=&EpMQxkUsYXncn=&uFJgUfXoVUWme=&eWdnXeZXbbZcj=&tpECaEUminbYl=&rPHkDNVVneU_f=&h3SVoGYllUjm_=&vDexWeVZefnmm=&VFPHMTXalqYWU=&RxMx_UUZplhlf=&6kiLpSUpjXiZo=&7Vt85fYsonjqn=&PND5qHUpgpdee=&44SBkKUpYdkim=&NWcJ2rUkpmfri=&Np3bGWZofsidX=&xYCG4AUmYcfmU=&apg6gQZfpeaoq=&mWAVriUoqiZgo=&vOdKSVYVolfsd=&iwEugxVfWocUc=&QJFiIsVdUofUW=&rF8_ZTUcrlWWW=&CBQjvIZppVime=&7V4NPxVfXXdqX=&WxiiIZZb_mZgo=&2gyVM3WXoqbdW=&Lk3YuVWmbmg_Y=&gh9tj6Wrokfsf=&2XGj6gZ_qnoZa=&bb6RGkVrksdrl=&66SYDzXsp_rYg=&NKLuOHUdjorVq=&W6wIh4YijVXid=&2hHMsAXqWUman=&rSxmmhUUrpWoa=&iER_yeWhWeiZ_=&tUMBUnWof_sah=&h9beb_WjflVes=&tzD3QgZkflbga=&RDMVuMWiiclfs=&ktTbkxXWgVphd=&BQl4ooUmUchkZ=&8ibJusW_Vchlj=&6VbGKGYheljgn=&jblP6TXVkpbsh=&4m4OSKYmqsps_=&N2KyDcZU_jmim=&PU_ws7YsdVrbW=&kUwhWpVecjiql=&s6LSfUUeljYfn=&wkAxpZZY_pjYn=&4I2LyHVdbnpVX=&Bjd_PBVZdsfUq=&n_eGm3UqhgXnd=&WJsHg5XrharWh=&POC_GCYpkXrVY=&LaooXAVcfjXpa=&AZz6hGZX_sjVl=&a3gu8uW_Zjaq_=&lqYG9QWXanibl=&duP_6ZUqXjgkp=&XSZl4LUVXgljm=&tyQrEQVspVdep=&BpNLNkWcgmqbf=&szOhtfV_hZblq=&PQiTULWnqqXgc=&3thpEUYsgnsrs=&aBKqKKUnif_bZ=&98ZGfPWWUckcV=&DvFg5OUrbocgU=&ntwpElYogmhk_=&uFkoAwXYkVoeg=&LacR6yYcinofg=&QdrHKGZbWjUqV=&Khc4oTV_Y_hdX=&8IKHDMWeskrkp=&g4lcjGYVe_nnr=&XhhFwsYZnXpZY=&X7fpwDWaZlqVq=&DhEG23YVWsfrf=&cGmGnOWlUrqpj=&qh4xpDZrhZmY_=&ubsXHNX_Xbeec=&hA_MvuWZqsncZ=&yjs7rAUmV_VZc=&OB9LKlVgVVsqp=&MD8PcTXfUlqcq=&zSQhkWZYfskUl=&w9a6VqXZobadd=&e6ZmPWUhp_sXl=&5JZv4OZcXWdXb=&fa6e6_VaqeXma=&ryaeNCYWfVjlj=&xAhgZyUcZkdhd=&9FEEx4ZYmerks=&XMUs8NVaZoaWY=&oQ8SD8UfmqpYi=&gmja8qUeieiYl=&NroOKqWdfoWfi=&N625bnWbomcXo=&iq9CDbVpgioYp=&v8L_7kUcqaeie=&iid6p4VUaXnqi=&sXU8bAZWojpen=&drwCyRXi_XjkX=&5rWkfqVslWerk=&aanmDxWaXZ_jd=&VOxP2sWpZ_rZr=&Dt9h_MVjbnggg=&HjlnmPZodh_oj=&8IFfzlYgrlilh=&lNo4lwYZphmme=&WkQGTJUZhmpWk=&k8javeYekhaWl=&HL_uhbWnjiYoZ=&8KMvYTVrksqcg=&9gEVSaUXVfqpY=&vIBkupUWboloc=&RSo5BLXinpakh=&8ueWkPYifWdlW=&Le8n3IVdbqibU=&mq2ir4Wajjdb_=&g5p5_UZYoXZZk=&bMqkHuZrZaakU=&fEHmX5Vo_jbVs=&czC4fnXYUdsbi=&hh9q8hVUqqlZo=&K2j9ETVnsViWh=&VGvG99ZZXjbs_=&Y3achEV_kZZbs=&zodRODUbkarWZ=&bMkDBMXWp_qjp=&kJYueuWirrWii=&KgP587Yrapssb=&yuK4QkYsVabnj=&n2rPurUrdbmX_=&j99NUKZcpXjUp=&VUt9xDVVjlepW=&MDSh9rV_rbabY=&wBIKrTYYobpgs=&ArQUAmXkVYVXs=&t8O9vcZsjpbrd=&lFgdA_Wplnelq=&WN9AkBWdncWje=&2sjHKzWceVqXl=&6W6I69WZqjalX=&JBEdCdYlfaYsZ=&399Ku4UZgmeaX=&UF9KWUYhWXsaY=&Zux_jZUgbiX_l=&WGK5xJYe_sXcq=&Esd8TjYWobpqd=&bNHkULUkkpqgq=&IfBMkcXjkschY=&efXzfnVnUWkUi=&3BImjoWYsloqo=&ZTLZ68VpfXjms=&8lmSbIWZimeUr=&uveYgGZhYbgdc=&3dLSqrZpnobpX=&o7DpGmUUfdlhn=&ZVoD5NWspZhmo=&axP2SbXnjm_YU=&OGs2ucWnVaqrb=&rQj6qHVlYdlbs=&kaGDFaUlnYUaV=&kPfS_HYmjeorg=&ftOk7sXjZkWmY=&vGWRwOYgisVYY=&YG5OYvZghVWad=&4VGlpkUoqYXlr=&IlY9_RUjWlUmr=&_Po7wBUqf_Yke=&G7pjsYZUjdbZW=&AO5Jq5Wehiqnm=&BWD5kgYXsVWel=&lMineMUibiWXd=&AbQ4SZYradiWo=&PBItPKWUZZUlg=&IXwuRTXibbs_f=&rUFhFaVWrgaWf=&7PlihWXZdcWqZ=&7dmbPEVkib_bb=&8bCYdeYeWko_k=&dx_7MEXgeXUYd=&tYxvbZWVreXhW=&ze_BQUWckcoWX=&v99fgwXkhsWbc=&UlllUQWYXVenV=&cTqQyHXlecofc=&OGGCBrVrUaYVc=&Y5XkZqU_pfceb=&AeOHOsZkcZjrk=&dgVuRlWqiemgf=&jz6LXLX__gqWi=&f4JruuZlrmhVk=&Qy7VtNYYnfUdb=&PLtrguXYadgcb=&HFB7xdXceWVee=&3UgqL3VgmmqXe=&RL6nJwXYXdkd_=&w2UjMtVWcedZj=&lWwDXuZZbekls=&44gYWdZVUZfWk=&LhpU8KXojYbWi=&nk_9KhYZkjWVm=&j8qIIHWfgdjij=&UFkU2RYkgUWjh=&RAJjAlYVnfscY=&NL2DijUcrpUkm=&xoh84sYokdmVX=&MQmWdFYepglkl=&dYnHcqZcqbYaY=&KAvNwrXlmkecs=&EjT2rnZfaa_bh=&ItDDeHZnV_fed=&bnQQPgXanqrUl=&lbQzbEYneWneZ=&hgplEwVsbYrXa=&NVv28rWjoYcdV=&YW2eFgWdndfhq=&cNEWpGWYYmhWs=&FOci4cZmUgXkp=&lfByruXqhhXVe=&DX8e_BUcohUVf=&_zdEALZkgZb_b=&oULYvhUskdbbV=&XgNLMTZmbklmk=&lqFLYpWqbolja=&IB3NlCYradqYi=&KXHheJX_XqWZo=&MhUPItYYkfXjh=&HJTZqgWkoiglk=&i7Bp6lYp_bdXZ=&9_YO8HUbeleeZ=&SwT85YYWUpZqV=&cDgX6hZpV_piV=&2myxuKYa_sdfh=&4oaWy7ZsUYgdc=&ZaX_WxUms_bkV=&hBHfJfWdXWUin=&A9li5XZhblnWs=&aqd9xSVjVs_dp=&cW7gMCYepoqVd=&rAL_qLWhcdXUf=&oKhf6tYppbYoq=&iH7V9SUerarhg=&kRmcWQWlsfYbb=&ycdBPjXYrhgnZ=&pdv7iqXcasabU=&ISXaCrWg_c_Yj=&jHKX2aUWWWUop=&GjotZ8WUYWjgY=&KXoe8yYYkrXZg=&jktxNaVlceVnb=&nx7p2_Vorpdmj=&q7V7GVVqboocl=&wqS3qKXjdksZn=&p4RuB2UamcsXX=&VJ6I2UYliomrb=&magr5QUhU_qYZ=&4tIUuCVqhfhUZ=&hPPJ__YVfjkoa=&qdGhepUajilWo=&BIP8OMZmnffjV=&pBWskJZkVsVji=&QgTH3BVsYooh_=&y5iI7nVcfkhbY=&I4FnpQYYplUXm=&ljmUAfWbUX_sg=&RUHCMbXdiUgrp=&4etDyaWlibao_=&IjbLnfYspWkVi=&eKFnCoYjdlpeb=&Kzlla9UgnX_WU=&k8ftDyYkeaphp=&MRlsHoVjlYaWd=&gDpoPRZjUdknZ=&l2TdzbUXUkrnm=&G3QzyNYa_XdXY=&SD5X7NZiooboa=&ojkYCeVbmgdls=&zftUZrUldgmmY=&IgnkdbYkcfmql=&tl9Q6UVecds_e=&UN65KEY_Xffnh=&mXWCj8YoZnsVl=&CIxrIIXiYpcYX=&3FUwefVjokrXf=&2Lf6oGYscpXVa=&lFmrZzVeXYcrX=&tHiVDgVbg_bZZ=&8JKL6kWsZkh_f=&8D4zUeXifpmbl=&FqaSOOXpqpgah=&zopGlCVVmsYbl=&vqZi9ZWYZlsms=&I6rJ77Zbg_XnU=&bljEinVkcoqbV=&LXtudmZdcoWra=&p3NwTmUnWkdqY=&XinsUCWmVqYUk=&hUdfgXWhanpYa=&BzznKwZVbqmYi=&FbjgU_YjeVbda=&WIJ3HPXeihqaY=&X3Ayb5Xo_gkYm=&3TVrTlWfpWnUl=&AeuNykV_gWpfX=&JhmOkQUlpZXbk=&Q3ATwcXoanjj_=&Y_KRPbZ_plhfX=&H8JD8ZUsgfoma=&NhCAfSVcgfWaU=&ELUP_YVmXjeUo=&WcvkSqZgqUlfd=&Dhc8FaWZdXnUl=&WVSzn8Uajclps=&coJCU4YkUqblV=&DUrf3_VVfopko=&bEJeMuYlXobck=&gOhUxcVZYhfho=&7AdhnHVfrYm_k=&JYS2pwUbbjmZq=&jdnCxNYrbsdpU=&nrbi7FW_odrYX=&wVra7GYZijYbc=&5BZm4PWieVYkk=&XvQMVbUkqdqjb=&qtBzSsWhcqrsU=&XunS5KUZaiZsX=&I7KNjXYskdabm=&WI78QmYsfidln=&ZJ4dCCZaZcqmf=&759N55Zra_qm_=&YJBGxPWqnmUUa=&CpNMrgVqik__X=&kvCgshWiooUlg=&t88SD8VUlXWWX=&SmrTwOXpqWdmU=&R_PWijZqcWWVY=&Jqm_GbWlpneea=&fgSqRtZXdhkZl=&cMkoDGYgjlsjr=&Djoy3cWmfjqeh=&tjaK_WV_slido=&pjFP4XWXhlcnr=&lQtg2pXWUacUm=&kAFRaoYrhrcak=&oHTsUmVVaWZsY=&ptnAsFYoaVUmg=&BcRza3Vqolnkj=&GOO9XiVsr_mrl=&zxxCi6Ugknjd_=&oYlfUcZoahWeV=&7XkxdCUfcUa_h=&ofDK9UXgncpks=&dbgz8RXajoUmk=&x_EytCZrVUXUX=&QQ8xnfXkjjYjV=&tF3qp2YrbgYXi=&6I8K6hXeelmqj=&qiUUwDVjlhYWm=&5axUPBWgairmh=&akwVqmVdXsjnl=&T5QIUeYpmopVb=&gTGXdrYbjrcpd=&4NQzYaXUbpUfa=&2eMKqPYjackqc=&mXZXdqWkaorZZ=&9UKZIqWjWnbod=&8xT_XJWkpXjfo=&c2PQoLZhWrqfe=&q5FLOeUUbrWbU=&JcDWuGXnZhYWZ=&rTtDA5WqmYZgs=&qoZsTrVZYlVUe=&Q4WAYvXjrreWh=&3u7vdIX_afnge=&6W8migXespfas=&7NycpZYsg_Ynl=&pKDH8MVeUVldV=&Rw7iI_YZaXfaZ=&UBVjGZYZdiYid=&ireXobXsqosZi=&ikr5deYsZUiZf=&IqGVuJVahZpgZ=&xAPBWJZicXsng=&OMJNS4Vagfadj=&9vUs5wUZlsgqm=&i_saysYkckhlV=&KhcOcZUXlVUfX=&NTDuYIVacVUWa=&537vt8WYZXjgX=&7i2v6RZqZehio=&gV9kjAV_jhYpp=&vXiqTzVUmZkdo=&fnMZBkUs_dfj_=&xMt6VjYbaiidq=&hvPKydXZUme_b=&45fnL7ZkdnsYo=&axlcrbXoWbpak=&dwjo57WdoWoe_=&wocPabXllYprc=&bMhCRHZ_WgkUU=&lcxBk6Wp_kbdm=&MvDfdZVZgsjde=&b4grwMZbpYUoX=&jDCDVNXelYmke=&ka6jryWkamhad=&dd6SiSWmYUbn_=&_7y6UxYYrXqel=&XxhPEcVarYZ_W=&LfSaqaVhXXmUl=&NjLFS9Xnpqse_=&iu2MQZWdcXXeY=&ypzoiQZlifnYh=&wcmILYXrfgYbs=&m9vTWSXe_XX_m=&HDwU7nYanhoec=&dGp8LKWdnocfU=&8TtnDHUfgedon=&cJmzDAXrbeVfX=&7gpzX3VakcVjf=&cWUpxCYnlgdii=&D942vRZofqUWk=&__493bWhlVfps=&z3WREXZcmkmfa=&6iiBOuZ_daWsj=&tcWBEfYZsXXkn=&QrvRsNXsepfYk=&paqPT3Uooe_ic=&kwEBCKZsXbZbV=&ArmFYJUchcZrV=&Dprr4tYYYeXke=&j8J77kWrqfbXo=&_V6MAJUrhnrmo=&MtwK36VqWbcpk=&a5LIIWWXocfem=&A7Ass7UnnceXg=&NPYJEmZnggfsV=&s5FmIaXhZVpUl=&VyNk7sUcqe_Yr=&4sjWX_Xisldsf=&AGhplGWWqbpdh=&Ezzu23XXVpgca=&t4IFlcZsZZWjZ=&AhaS_TWXqgVpY=&hs7izYWhYqYpV=&zIEeWcYcWdVdZ=&QOPPXZXZVXkWj=&bShZN7ZlXsskk=&pWM5_pZXofYrh=&iJanYyXkeegsg=&qGc4bwZl_oofo=&r6LTeeZjaggWl=&GsAYraZbodkqp=&y8stNVXmbYdYc=&H3YMDdZUXjUZk=&lTU2OTXcY_Xjg=&ISaAOJZakaUZa=&eRvyWdVWnofWj=&uaOGGiWbXsbqU=&dYd2QoZjoWagY=&utXhHmUUbYhsp=&PCmkugVZdgrWi=&rxYvFaXjiejYU=&hLUtRlVWlUYnV=&TvytOXWckVnXa=&wKqhIgX_VZnqq=&Qqz5K4YbgqkqW=&Xq9UPXUmXXhdk=&JRbYBSWreVe_p=&woWlDHVokrbhq=&QMpYGBUclZVee=&qBpGC_ViWXshg=&XU2ltLUjllbmi=&8EagjAUhgXfUW=&T9nRyAUrZssao=&JamrX8ZasVqjY=&TKChiYZmimgpf=&2gBqEBVUdYbjW=&xGNOUDViVcgYk=&eypPKjZkacjcY=&HBWgFOVbokooU=&cusNdRWoa_dpW=&5L6yEHZdfrbWb=&CMBQ4gWeWlnje=&lidBONWeoYefm=&2dXKt9Ureomrp=&E_5MYRWnrcaWc=&LprnyZXpnUn_k=&JhAEqwVqkUbhm=&3JZZeUY__bjmm=&hzgfvwWUpZfbp=&n7gtseWekaokb=&WkA2flUmYpVa_=&2ONT3kVsroZqf=&aWNqQDZhXZXhf=&IQMARQVXoraYr=&SRVzVEXqlkVWe=&Y6CFTyXnokcao=&bVmsBIYkopmVW=&K3jMAfV_hZgki=&UsdugzVXrZchk=&cvr75wVb_eWWf=&UMxSx9XcelZhn=&H4kIdbXVdoggk=&azfi6cYW_qUpn=&QaV_cLWspgrgd=&yYd8mwWVlWloe=&yrmR2uWrj_chp=&HpnfKMVsamdrs=&eJ6TBDZegoWni=&ugkmfXXcjnYdZ=&c_ZYQXYZfcfdX=&Qnj924Yk_nUWk=&9KSxwrWesnmdl=&H7vfdLVqbWphi=&MBSi4jWfYenpX=&o3Pyr6YjeXqjh=&JcLFjIYbcdjmY=&_fmqbNXWqaVU_=&H77ptEZZaVllh=&K7eA84UWibqpX=&2PR6aMVV_ZXYd=&RdWIf8VpWmWcl=&BZUPaUZnsrcgX=&3Gp7exVosVUWf=&K_9_DVYsqimWb=&hHyxIIYolXqis=&sAm_EiUiWlXjY=&c2JRKNXfZipWX=&NIvtijYVcbYri=&TDXmVvXZrVfXW=&t6OrT_ZqYkhVa=&RV7jwXUcnVrnd=&ibyt3aUelgg__=&yM5cB9UkkfpXl=&jCGkbhXcqUghm=&8rKKdaXmaasXk=&fN34jFVqZVifs=&gMFzH9WrmUnlf=&Q4aowkUjdoarp=&YDsHzsYjmcjeU=&_lGNnWVkergdV=&KlIWjNVUZrlbZ=&x6MPIRXhZZmgn=&u5hyLTZmbbpVl=&_zsGhEXpghVdm=&qhL_LrVdoXdgd=&3QVKY9XWfndqa=&wYolD4Znc_skq=&tQf9_vXdWfZjl=&aYReINXpWhpnq=&QVNpXzUanknqo=&cYPszuWgbfdlj=&L6gMj7Vfqii_U=&ERpEwoZfsWfjh=&RbIKhjZsYaoss=&BKfKuKUW_WXff=&joT_qwWcposbj=&NiK7vHVlVheqg=&AaAPfLVebnUod=&Nen_VGY_Ullko=&6kcRCxYniUZjd=&j_RdGcXsrZgsl=&gCBjreVgXUeic=&PIo6TnXhVhaWl=&pipjI3UaXYnrh=&UpWARjUlscef_=&B8TdzdZgphj_d=&w8_Nj8Wacblnc=&rHqHDnUYUVcZm=&fyCysJUfhqe_n=&ThSqjhXjrXXgq=&E7rrjmZnZVobr=&azrB_zYnrgpWo=&inwSWkWadY_bq=&eYUgLVWXdgrUq=&tBP5UGXYWc_Xe=&UHXTHbX_ZZqf_=&MpjsKfWfZYgpX=&dtaHfGZlYWlnd=&7ngS9gVoksdfn=&5BlcYcW_ifnVU=&WXj9kXWVphrgc=&lyMobfXfjaoWZ=&pF3x_TZappffq=&ELc4zhZprWhYl=&yedwNoUkWojdb=&grUNidUsZmXcU=&SIVLMHYjq_dUq=&S6TwLTVohdeYq=&sc3XPsUceUpll=&LJrO2eZkscqia=&72tDm_ZZfeYVs=&7nkWfBZlqklXq=&wnqOCIUiqhYgn=&eveIZ8YglgZVr=&a8ns9QUrfVcXp=&wQXdUVXqnifYh=&ljF3puVercrph=&9qU2RAVghsfbV=&zmOvCfZhrbo_e=&DG39moZdcsXoV=&SvwgXpZYVjWUV=&AcFOHdYenddZY=&DllvUwVegXogf=&KWcCMoVUWdVdb=&TnzTosZpdljhn=&5KaA2XUeW_jhl=&FzUB_WVWhlg_p=&DyZrcAUWbgsWp=&kcLS3RYjZjksa=&3624n2UVnosfX=&KUyXX_WjYbrcW=&BWccKVVkqWgYg=&LjeBtfWjsnjhs=&tlYAK2Ypp_goo=&mhmLWQYncYaph=&xZDez_VUUYWiW=&n_jUIQWqUgUmb=&Doe9IbYkniWdl=&2uSsDsX_aUqbX=&rCyKVnZsc_alU=&kDSAvfUajgirc=&FpbiDWVopVZjm=&_cuDbQXpVrjsY=&iiw_fVYscioVY=&yaDw_6UmakYnc=&MptSpcZU_jqim=&aUKbHLVZncdig=&pu9wfWY_rrqfi=&xfv65mY_djlhh=&maPNsbZWdsgmm=&VQyrJXWkibdin=&LO3cYiVo_ebga=&RGs4fZVVbgfdg=&BeRNWFVsYid_p=&nr56NwZbYXYbX=&9EkCURYnsrlsV=&rYdQviWjofUsi=&lcjoDtVWrljmd=&jO7866Z_edgpm=&kEnBv5V_sqWsj=&5P7TrIV_Wmnmg=&_SB8qcVrbljVh=&JtTvqjWbfqUUU=&4oRpXwVZgfis_=&W4wn2xVqrWdfV=&fBsj_IZgaogoZ=&9zRyN3ZWkmqaV=&HfJzDyXjcbhdj=&3uqtmhZZpcaZf=&BeRzLUXalfjZa=&7mxaECXsqolcg=&kyMhpkZoncbfl=&WcMKivXkgsXqi=&FL47JIUjUqYrl=&pvrxyjZWaoqqb=&LuIL5IZrXmcgk=&eVMHR7YZoVWpl=&Di7UfkXgslief=&6YQpSnUnjcjVU=&HweIzXWV_VsjX=&jxVk43WifWXho=&Nda2XpXVejaql=&W3jsJmXmbnbfg=&xRF9D6Zkbjoil=&HiZ3dJXZdrZo_=&92XzZkUcicUha=&bqSnj2ZrVnUnU=&B8xzoqVfdggii=&5QoJReVpXrgZk=&q38OuoV_eViqo=&DZ22LiVnXYdeg=&a2jKe9Zc_pWgj=&NzrtYgUoXrafo=&h3OQePZq_qZjk=&2wFvyEVbgZYUV=&EKlBSxXhgpsVW=&j5mWO_XlshUVi=&dMi_fnYeVeVgm=&n7SUW5WWqpZqY=&iHx6cIWmdbk_e=&msDbFvVjfpd_g=&KmElF9YVdoplZ=&GJGVTPYohsUVj=&kZRrZuVnffeh_=&ftIIRfVgqafmd=&CpFAazXWielgq=&98GBXWWddZmlU=&jIQkQdUqlqYdr=&Qh4s5hVnnadcm=&Fqk_YtXfVXUra=&mz8JbSUVVXchr=&AqxXCUYUlXfrp=&LVe8kxWrmnagf=&9JA4O2ZWjVYqb=&36FSexWqreheg=&7LCAdXXafjbjV=&kgNpIjWfh_mcU=&iKVfWdWZklhWl=&5Tg5ykYjWhfZo=&TDM9AgYdXalVZ=&ASmEbzVbUqdqq=&afVEW4ZYZgVef=&pP4yicVriiXro=&KexzpZVhqhdqV=&XDWiZSZpfgjZX=&n5AFG3VkXVhda=&g_DYbdZpgingZ=&dUcdpmYropnod=&IAVUzJU_YXqle=&Qfns9DYndmmo_=&qzVBmnZdoUfqk=&k6ESYQXn_jnpn=&nwDjhGZVjecWs=&cGV4UHVqYjcld=&ZQkUuzYgpmolh=&WiIt5vYablgor=&zIlnLjUoraUnk=&3HIZt7Vg_b_sk=&FclQaNXcljZUm=&NNyx9jYcimeeX=&X_cofmUsVifdc=&uoiinYWUmgpbi=&6rZktPYqhfodn=&ZM76szZXeWkUm=&9vXlTpYYrflZi=&9__KkTUVgYc_d=&NR_wHSWepVmqY=&PbUCRCVepdgkr=&oxLiZuYUUXjaq=&o5h4TtUVh_onc=&G_2xfOUgdbeVb=&_fG8TRWsjqUpn=&ckYFn4UYXfVpa=&mWkaWqXXrhked=&4PmggNYpcjnls=&fRFKtTXpdcXhr=&cu2hFmUUbZXcl=&eTDlSMVcYhlUp=&ZbvkFbUVdqapp=&J7xMvjXVWorUi=&CCErrbXasmhXj=&qDYmkdUsWZYce=&kpXpFOZdiqjmU=&ryGycgUedfc_e=&XYZp3tVkkcbgd=&iGDpVIZUViUfV=&2BaFsmZsYaWcV=&AKroCJYkpqqcm=&xTsmObZ_higmo=&jhOpSMYUUhmj_=&mUaEpXYaUhknl=&h69puuZYnhpoW=&9NO2UfUgZcXsY=&3JfCRYVZkgbWj=&vmxlQaWccbo_p=&XOMP3eYW_mhoY=&YXPsDFVXdWlah=&32QFOGVknobWq=&atpZnMYqWjVjU=&5Fvht4VUhemiU=&lTPfcAUhZmdqi=&yvz8PlUWgahgl=&RglP3TWmplUsd=&CifNzoXr_kcaa=&2ElX_KYgcdbfX=&UvXFkjZfYbnra=&8BBVwHZ_drpUa=&bAEOlaZhgXhkZ=&7WbPMOUU_gdao=&cVB_daXbjampk=&R9ZJz7XpbmirZ=&UnyXb8WdrrWdb=&K7kJCxYkamsqV=&KUunsPVhcbraZ=&9bnIguUYgbUZp=&BQecwrWfjZWeo=&drIEFaZWoVepn=&m76fhrVshXYYk=&tCUpLwUjelmjh=&bwrlU7ZXnajXj=&yFi8AaWamZijn=&tfla_DXcnlqqo=&Ud2yezZ_plYkX=&6B3CPvXgdkWkf=&rtP_hDZeaimr_=&fkzr5oZbgreWV=&YOY2ZpWcXbfbq=&RMAREzWseseYY=&cwN88XUbialdU=&DPlfYwUedadgn=&zllkTeVoqZaZW=&2DFOGmXkrYggU=&NkaPyaXjsofUk=&KVldXEZkjfbeZ=&6LcBiMXWgbcWa=&iQU3PKXckXibl=&mPL4WwVpsYcdf=&l2qYusXYYpXoU=&3ruqwOZWlqeYc=&kf_AVqUksjfle=&W6J8gRXjllmmd=&k5dkRAWXVhbbm=&Eg3e9rUl_kked=&orC7EZZZosh_a=&PnNUhiX_nheYU=&tSDk66WXnilcs=&PetiNGXVjefiY=&DMsNEvYrUXgim=&cAzzBxVlqe_Yr=&h_GTYIW_WahaY=&tHjLXiYZdXqpU=&EYottwUmpjrqg=&kZm7UgWihZmZV=&ILMAi9XpWrZVp=&X8EAwZWnUrsmg=&L6jMuvXXrjdfb=&v2VAz4Wqjajeg=&aoVPNLXkZZahZ=&Ptziw_ZnqrYpa=&pWjIomZXjaioY=&tT776AZcVqoga=&3ShIRJZipW_fp=&BzezajVhpgpqZ=&zhJtnkZmssqgX=&ttxzZQUacsXsj=&2G6FxkUV_l_no=&cRH9SPVjWfYfg=&mkxKDHZaoWpgU=&b5g4fmZasjnXi=&DtLEG3UkZfbWf=&4Lmp9eYXggbqo=&3EH8uEZklg_jc=&dDV4lQWmsjldb=&gC83O7WkfhdlW=&fLsJmsVZUnUch=&5UnxLiXpnpoUa=&Uk4QSMWoWikjp=&qh28CiWdZU_jp=&cucKoKVXXgYoW=&YJ6VAhVpUhWhp=&FuBfIOZYWUbcq=&sA4cZtYWbjfgX=&r8DPiyZgVVmlh=&5JqfK4XYsbrmX=&8YEu8dZokmenW=&QSEXFDXYacoXY=&dALzHGWpemZal=&xrGlimVWoqgmf=&gNH7kTZbqaXkd=&J7zbVaWrfUacf=&NS7SJPUnnclUX=&Ug3T4IYofcjnY=&rLnEZjVq_UboY=&GKHS7VWscppjk=&w93yPWWbhVq_p=&rk9kG6Uhq_osY=&qH5R3gYnpejdf=&x4wf6xYjjdeiV=&C8JUEgYVabZXX=&CM_x_XXUWpnUs=&HhV3EeUVjqcmi=&uuVDuaVb_ij__=&HX99tCZoa_rYs=&4jRd6NUoWkrXn=&NxJ3D2UrVmsZV=&pNxQUSZhWeVod=&fZEBJ6Zrjadqs=&MKVeFiVddcrbg=&k9kR2DWUYobob=&GVQgBEWaWdaUm=&Ne8eCHZjVibei=&vOdoB3WgYnXc_=&HXO5seYqUaWjY=&lewybiUkjjpce=&84IxFrVilZXga=&6mkFksWphsgWh=&rYF_SdYgZnb_j=&_hMHD7UXbqaUW=&dx6bPIZmcpmio=&vQTBMSVlmjqgr=&EZFyTnVqbsefi=&fnxPVOWdWVcmi=&RQZbybVdfWlfc=&AInm3mVhnWqsX=&lGBL8gYhcYcsc=&e7Bfd4Vksekrn=&S7XqGsU_cdqZW=&Sjy3EmUcsprco=&La4GghV_aY_sX=&FYdmTyZUVnrc_=&RisVNcYnkimgV=&F88VdMZfmUgrr=&qTkMcrXfnqXls=&8NnL7UW_osWop=&4qQLU_WpZrVaX=&HuERoiYklhhnb=&sO4ZajUWWgcZn=&9awqWQWfirVYq=&uuS3lGYrnlphd=&UMaSzzWkUYsjs=&KaqpLKYpfXabX=&zaPqN9WqokWVb=&VyaxXUXaiogib=&9i7KWSYigZYmq=&o3RPUgYWfVVdj=&yoNq8aXnfhrfh=&cH3dzxUVelprX=&E3UEyzUmrgori=&XfrDdXYkk_gcp=&PkGc5dZYXiXXp=&9zWwXhXiWmfXd=&rToW2UUalmZXr=&Ont_jFYrgnadc=&3wfkeMWoZYeXU=&GvR8EmYUkWVpY=&RWnT4fUrdiiXh=&5amnsJWkWbcYs=&jcq8x2Umsnqka=&bXqqZXWdYXrai=&zdDC6NXk_jhrc=&pdtdyJWaeqXr_=&CCYgECZoqqaXr=&LqUhdHYVYXdVd=&SkdrSOZrkhjoV=&Echj7OZUsWfjU=&FDZQpnWYsqqok=&bYZLQ8VlpZ_Va=&wAFuNwZneVrgV=&rN3msvZco_oro=&k4_PNEYUdlgbj=&zgl827WkW_VZX=&hXL4BxWlZrak_=&O2zCfqYcjfnir=&MXrRwBVUhbeos=&aGxlnnZer_cfo=&YXFg2fYefscos=&suoNLGVmoiXZi=&8TOUExWXdbhoU=&mmzg5jU_Yacbm=&pEhMIcYpjqsYr=&AKWIEVYbdVZgo=&ac5ySzXWaUaha=&qCev_GVoWm_mb=&c7RNDLWsXbkfs=&zYJFeCYmceqZr=&Gj9gPNUbifqln=&HSOsI8WnoUWmk=&bHzT2GWamsXah=&Zl4UeUVsfiXkp=&DhDfX4WUrhsXU=&j8io5UZrgZbof=&jYVWA3ZUimdof=&KJYKNmYppfWhh=&5EPEk_Wbkojme=&H6q55BVmibYjZ=&hwa4h5WqZafmq=&a9Yoc7WVcWodd=&i5zNFCVdrsYWd=&wYGy5JXsbWekY=&wzmPTyYUZcgVY=&2V6atlXajVZok=&djUK5GYlgfeYn=&9ydstcYXneUVo=&a9SttpZhrZlZs=&ptpSOgUg_YUYi=&j5mLHTXoYpWdk=&MSMbxTXecfhsl=&dQKeyuX_lanlW=&QlwHRTXXacdgm=&Sq7slhXXpVodk=&8q4N5XZnUkVlp=&XEAUPXYUehWhs=&UhumUCZWrploq=&8wcLvHWXnapUm=&g6pN5mXjooUkg=&RXfnTdVaXXbqr=&AxBanWXdiabd_=&uf5hSEXXWa_lg=&qhVl8AWjhinYo=&z_6mLQYriqqfq=&QkmKp_XnXqsYV=&8W2D7KXpgfrrV=&g6XdArXhnjVjf=&cgnzgRUrWXX_Z=&AEl4eYUnjdWUk=&KNAY8KUYcdVWn=&nNksa7WioViai=&OZl7X3WnabmVl=&JdBBFeUVYhinh=&Jis7seXnosajr=&RNWxG5Vmfn_di=&qktfJFVafgoml=&fCKHrHVYc_oXr=&edoypIVXqWbVX=&vUwW7rYpnXdsd=&JYB4ThVmnUVXo=&erAgkXWimUqhk=&db_TIPWnjcXkW=&WzHvJEXnoqm_p=&3c6TCKWjgfXoY=&CLpFCqWiZUifq=&Wr6ogmUlZaapa=&xMdtSeXsldmlc=&unyYNiWZldedh=&AazSutVobWmob=&v57TsAUqqhVfg=&nzY_EYZnhaa_k=&bbIgs6Vhjfmie=&8Mj2gfYhYqVpW=&2cYCNTVgljicd=&oTkimDXihkbhn=&K7XHFUVqsmpbl=&zXMMzYWbnhiqd=&349ZZFZoYhVlb=&WkjDTnXhmlqVV=&ewCz6gXcepXoa=&mJf2rRXfbo_ed=&KERzNMVmbWklh=&FEXynFXorUlnn=&9y5wT_WfYXZgb=&oAQ_kJXcdickq=&kDUWYTUYZr_kX=&DRiB4jYXnVqdq=&qkWxTIYjmb_Uf=&G_ETVJXdZbsoe=&_iDSMPVnWZhfo=&JWC6ndWcUepjf=&9tHsdKVar_mqc=&VI88nOXijhVel=&D6tAmhZW_pZW_=&H7pVPnYfX_gga=&yz54OvVmVVXXX=&Y3pX6pWkWg__Z=&AmKddhYXirejp=&BbUDUzVjseheq=&mNdE7gVbkidYk=&ypYeX5ZdZffbl=&wz9djzYVqZ_fe=&DwQmO8VehkWUb=&Aze53BYmVaYnf=&KfXIuzXolgkm_=&NN8yGpVXmrrXq=&dz7Ec4Xgla_rf=&DnmUJ8UdWhYgh=&tleOX4Vgqpcgl=&beTpLEXjbUmZd=&Mfhxg_YWgsdcd=&oD83IXZhjbpds=&sywcHeXadsdgd=&lEj4YWUZVVUmX=&2bThiUYbqoUie=&e9DLrwXYjrUfU=&3SR5CkVjbklka=&PdUNZeVgpdUXZ=&kEqpbkVdikeip=&WJqZcNYkcoUfp=&oByC4kWqiqmsV=&EqFFN7Zhjcojq=&dVftdPXaWfdUo=&WkKzlXV_sXgUe=&XeBygWUWndaqV=&PA7fAoVjordje=&lLGsVuXUrnaol=&aC2UDVYmiYghV=&OvfXIyYrfclhU=&pbixOlVqmWdYr=&32BIsKXhWfisa=&EeF9nOXZkrbrg=&9wp3KVUXnpaU_=&nD6SopYkckelo=&oPFa9pVbWmVpi=&ph8I5rZlgid_o=&INAHRWZlYsYec=&8VXuAfVXUmYql=&XGkHE5VfWkibs=&Y3z_yQYVqrnjk=&6GyYJtZispmaU=&m3BT6qUbnpdld=&3_i_ToZYjcgYa=&oGM7dAXfnkXmY=&ep5gHiYignUlf=&XpBh7jYoXppqZ=&oS8vZuUmofihe=&ib5kc3Uf_VXen=&B3YbuCWpcfYjo=&tMjoczZVmhWZi=&SjQLWvWWkVaXm=&a3pEN_ZsacmXX=&ZGwbNhXjVVkdW=&JeqsmnXXh_Vqj=&mkGWAYYoreoXr=&W_BrE4Xajma_k=&at8AVdYpY_cca=&b65IYOYVXXsmo=&sGB3maYsaoW_c=&qnCrpBYZdUair=&HGRKXHUqipgZX=&6uwUPlWh_UffZ=&uNE2CLUVkW_lc=&K7KxTbXlVkfko=&tsyTHwXomWcab=&LiBeEsWaVppkg=&2_ibfDZgf_Wdq=&AsWdknZna_rYU=&noyhmOVWopidi=&ussPAtWYlXaod=&l4Fe6TZorbdee=&qBoOgJYhqfZkc=&MFlXsBYUqefrj=&YzNoqPU_ZcXbX=&hAEI8sUemZqa_=&VjW4VsYWlnUna=&w4sVOQYWeaVqq=&hopnURUVYg_gs=&nfNQMTYhjfddg=&BIy3OhUnYhroY=&BaFN9PXsjaXoa=&ER8KhaVlrpejl=&SQkQzXUqmlkVb=&jmk_GpVlZccYo=&OmZPatUZblXjb=&lsVdGeZqfqWld=&uI_jSsWcdVllW=&zbSy5PVichWUY=&lPxCaqZYcnYZd=&nfbIwhWdnmnnV=&kHSIOgWcoaWdp=&i_8X6WZVqhWkX=&nQIwjdYgXklYs=&mAK5UFWcqrbnb=&uMolTeV_fa_sX=&c_suDXZdVrVc_=&5l3OdPXokWibU=&6qJMgbZnporWk=&KUkjY8XkU_jWl=&gy5esuYilbgqn=&jNHeoMYhqjcZX=&bE2N2TYb_Yr_k=&SEM5CHZZUqh_l=&c2hwhNUpcYbr_=&639XIgXprUVjc=&b3hp6hZiqYhYm=&Ltuq97Visomhf=&ua8AmeZpkpcnm=&LIoBDFWeXYkeU=&jVa3yVWZWdamq=&fx3AqRXpeWcWY=&RoqU_9ZcnrVfr=&QgjmWnWqXagio=&rOX2fqWYYmjYa=&lBKIoPZpUnqXe=&TL6HfUXUlrYsp=&U5ldToUiUWdkj=&A79OeBXsarjsX=&OuNCFNZsijkjV=&Fu39JUXblqfor=&h2fbtWZblhVYj=&ZMDeL_ZldYnpj=&KPmUSQUgdjlar=&ni_lxPYeZkhUd=&9vlClTXqsehUn=&kKW8LLUVjrXXd=&xbNqfgZUcaUeq=&pkiRgcUjZqsl_=&rihFYDZXknZVW=&Q64AppUocrigs=&T7Yy6QWklYWoq=&MGLJ_YYriYrrU=&jUwjPOXmjjomj=&BwxXuPXndlgrs=&JXs2BzYdpagUi=&fHFGaMXjniaXm=&hKkfkzXZnfkmc=&Nhxq4yZpVYnsp=&dDoUZLUUdcjip=&H4ZChZZiplaep=&KhgISyUekfapY=&GnwYGlVdafalf=&Ev8RfYUVaYVsn=&jFsfFOZighZoW=&6aEAv_Wm_ed_a=&cARmm2WgbdhVX=&czQIaGUpqoXo_=&vNXJlHYoimheW=&4bfPgZWsleYjk=&EAOoPRZdYZrhY=&r4AEjQUnWdfgn=&q2C8NuYpc_irs=&__EYn8YnUhqiX=&cGlFYHUdobVUh=&Eyxm7VVmbXXZq=&wiNTIFWshWZdd=&z7UHRsZrnnZV_=&trIqYAUiok_Yr=&RIk5ruYg_Xamq=&Hlly4wYWVpZXd=&J7IkgGVWnqdYb=&muP4w5ZnbZZka=&wuEjBPWaYaeYq=&M9ERRxYUooVml=&t3VNdNZqhoZji=&Rwg3NuXYjkasf=&r5RXesVVlc_mV=&N5V4qnYZiikcU=&jVo7hTZelrYqc=&beuTfOZinsihX=&oOHQ3KYbhssmi=&qHSPCeYoh_hWl=&tD6lsKZrXhVXb=&UFtQIxXropaqb=&34INRaYsdkmrU=&738eGaXXgbhYi=&mWTxVxXrZpUUZ=&jdERneUWXlpsq=&_eo6vnVYlah_n=&8Alol7ZamkZea=&rG4jGeYonidbr=&AoSHoAVdkbrjl=&yVX2wVXroioZo=&KrdjTtWd_VsZr=&cWSlkUUsfWoqb=&TifOYMYdlsoiX=&caFilxWhn_egk=&oJEgT9UVghYsX=&YRqgjxVmfonfo=&n8MMk9Vesmm_m=&MdxiRWVfXedaa=&Wk5gkAUfkVrpp=&fW_6N2YheYZXg=&O8weWEWnsji_c=&YGrYAyXrpVkWs=&u7v6eGXdfjsfa=&l6EpMhXpZocUi=&aaFvGEZcYrmfc=&D7w6fLUqUZceU=&JvZ4J_Ylngpn_=&NOJiZWUjZZZdV=&U5mR_4VblZgjq=&YYBVR7YnXZgil=&ejd6wbZkqYggU=&BlHWCvWfjWmbW=&oKFMJyUYjU_nj=&kMtiOOVmlUkfl=&o2fAsUW_gisZk=&PvoC94Zh__Wio=&TW5r63VqZZcbq=&tB9nbIVakgYrd=&tbo4DoZqieice=&hhYOcHUgqsZWf=&ndj8eGYigsplX=&IdAsqyXgcjjmh=&mZXfvxZVYjpVj=&xfNoe3WbiZa_q=&a3xtdDYgZcdUp=&Y85StzWfflgfq=&OvDg2gUecbefi=&tSpjVHYijland=&5Q_ec9YegWmcd=&kntVANYrjsgoV=&KAcMuJZisZZep=&yIyj7fZfsWscj=&xDHQRhZeZjpsc=&HacHGVWidjkrf=&rbHb_4UonZhZq=&fEOqGxZfq_bko=&azCBU9Wbbbijb=&n5_PMUUbkhgsp=&mXr46MUsssXmq=&sBV9GjUoklijk=&5mCBcvUYUkeZs=&H8FewHYYeZ_fV=&3x96xPUafeqhV=&2pWxeYUoqcci_=&qL46L3XpXmabl=&jex3ddZ_YfYqZ=&PWHby5XdaVrY_=&agpmIBUnUUbXe=&p2FPeaUbaXijg=&iBh3aAVgdrUai=&tcmLbOZYnmfiV=&vQUx_eWenUXXs=&vIebmwZVYpasY=&NPtrevZelplkY=&RHtsHTVbedYiV=&ZYq6avYpgdpof=&JAA5thZlXdVef=&UTKxgYZrsUpqs=&cCT5s_Yq_hnoi=&lMQHlHVgig_ZX=&_SnI7KYcVffeV=&AePlkiUbbZbXs=&BUgCXCXqbbrje=&T8pGtsZhlrYfU=&zYNHiFZqYUXdo=&kcwuPSVdo_oVX=&xUPQWOZqqWrZU=&gl_GirWkhpeah=&yc6hEDYeclcZa=&25YhlYUUcjYls=&OIIbH4V_lkmbV=&PRPOu_XUjWfYb=&t88WveZjbeUeo=&f7R4l2UVqgohc=&_DfcUbWboXoVd=&7Ze5glUdpckhq=&R5sjWkYqglgjh=&xoSuuOYjmUXgU=&vCiJd9UnYXpkp=&j8QgJjUip_oYk=&RMEndiWd_lW_e=&hpF6p2Zlgneem=&dFhSrAW_sihlX=&gfwgWiVgViXdk=&P5ACGrWqdXUmr=&4AQN66XcsnY_p=&2HTnbUUYb_nsc=&nbq2UbYm_sVZh=&HonifRYafWX_h=&5OnGcNVnodalp=&feCcNBVpYfUkj=&56q8geZWcZhiU=&ylwDtRVdmfran=&5QRFVBYhfXhra=&frh5C3YUeUhZa=&DJH64qY_biel_=&vAyZ6rZhrijUr=&4dKFHkYZVipeq=&s3flRDXaniqaf=&DlczeXZWXYelq=&WDzuduXhrneoi=&MfxdgPXbcksgn=&fG7utLYrq_aWn=&tshHzCV_nrsso=&zVNkKZUnljrbi=&iPANb3YdbZdXV=&BZ8leyWWc_jVb=&9TEcwaVhbUbee=&GyHMJYXfjffVZ=&d7gP2xUhgfrWs=&QKhsAyZgkmhdb=&mNnAidWjjdcl_=&5yOxzXUVdhXm_=&PcRADsWmUnbbZ=&3MXIuAUZrWgcW=&xxJZOxU_mWYkY=&wTZEHIYfkY_hg=&SFXXH_UVkgmeY=&f8Tz98Zbn_Zaq=&pvVLnXYnbsblp=&3Ak_gnUsillaY=&gmJhcaXVjf_lc=&_weRwNZnWiWej=&LZcAsSWZWnmpc=&imVeyuXoXWkZn=&mp7oABWoqrpWV=&Yk4icGZbspiUV=&eJRNFpVssecpa=&gXnF9OVqiijpZ=&dgpivoYZpoadr=&YcCUuVZpaghhs=&T9hw9GUVacjVk=&X9DOLjUpgrgnq=&lqg8YIVesplll=&meEcDMUYghlas=&Sm5SGtYrlhpbf=&hLWwYOYapYXkX=&E8E8f9UeVgXie=&EE4LloZcmYpqk=&58hAlUVXoon_r=&FfStCGYloVkes=&F8SRbNUWhrUlZ=&MWxuF2ZqjUpVU=&HXBcfoUkf_VlY=&qJgZhdXgopmsX=&CSTMxvVVjbjZi=&peRxqRWhgkUYo=&ylCeg_Vesaomb=&iCOAApYfbXqls=&Rg5qr9WhrjcZr=&bc5OeTXlfkleV=&RATG2bUms_nce=&aGS8IcUoqmqlp=&CXVlukWegaVan=&hhoIaiXsgWejl=&NO6Ov5Umeflnn=&EkaDb6VmnaWgq=&Qhjv9bZrVdWod=&Lo6eQxVeW_j__=&jbP8wSWmlpWUn=&9YxhuYZgeqkmi=&yFDNIIUhe__ji=&Ndp2ZNWhhdflY=&_3HoeCVfsWrqf=&o6lfwPV_p_qXs=&AZ5fcKXZa_qpk=&AiiSVeU_gpZma=&rcuwtnZspdoin=&_tYpkyZehjmoc=&MZWUAIWVr_Whj=&fWIXYQVkjVgam=&ZSeQDQZp_Wbsk=&mUODbiWhUnerU=&YUu3V5VimekZm=&5oj3MsWjdUabh=&2mOTnkXinplUs=&vZkyMwXUqfoWp=&mZlB4vXokpeXn=&lTu5ZGZehdZso=&PgcAAEYjaXZde=&O7kUc3Zpjr_Wr=&SDeOudUVXYgcb=&aZ2q2VUUopZZW=&fqvE3MUmpm_qU=&eKJJYeVdomWhi=&BTemSXVboUgrV=&C8dazKYd_h_dV=&IphGumVYoYZhs=&NqNlBNW__ZnYU=&hkAUYxWnfXY__=&NYKnReWYUrbg_=&TDm9fTWpbdirh=&sgl2uYVUVUjnZ=&JeQBkOXhjqqjZ=&rFP9jiWsYdngV=&Jm95Y6WYiadmY=&yqnkmUUWhWgde=&tOYJy9XrVbqni=&ivJjrPXoreskg=&H7B6F6XgqkjmY=&QcnZROYoVWVbX=&mJejCIXhsXgZj=&9IRlpXZqfqdak=&DDHF2SZeVsqrb=&qefGstXmdZnmZ=&B4UcHoZfVgZdh=&Lo9__JYXmsXni=&FDaBihUojVbc_=&GlEpSFYjnrgYd=&PqUqoTV_oZqfe=&6ijuYIYbif_Ud=&2msqxlYgecYoi=&L7HxrCXnhrdeg=&Z43IEiWhgZpeg=&oZXoCoXloe_re=&RtcyxoVoVaYUi=&iYIjqCUeVrqWo=&hnPIO_ZgclZmr=&kQPjtnZrVancl=&sFhndmUUXVnjV=&7ECknmWeaqgbh=&ny2PiYVoXYfqX=&zp9bZBVZesdZi=&e6msCgVpsZmV_=&Ls6vBqWaqdsWq=&thoivFZfYZhhe=&JejfKAU_ojqfa=&gxIgQ2Vgsbimn=&VGq9tqWYVXohm=&FmdnR_UqVUkW_=&SGFUijXfgVdof=&nDdUi8Wcoakps=&rq3BdzZjgsjXh=&yS_K2OXmkopek=&CPz2btWejpeoo=&bSnvpeXUZpanh=&MmFOibUlefqfi=&rY45f3VnYVsar=&6nkAtDUrjXVjW=&APXWhFZWUiqY_=&8kMB6BXWoZrkq=&lAPXz8VpbaVZr=&ATpNQMZUcibio=&7kn8bJZleeWoj=&ydzr9fYjYqjnW=&sLN4vvVUkgbeW=&uXzRRuYrlfkee=&fz82ldXgXfXkp=&GG25xdYUq_knV=&uA5bLiYch_ejV=&DXNXbxZXpeWlV=&nAA5bTUqWblgU=&PsQeDVUb_hjcr=&QeqBVDVZgbkpq=&Ztmw4kUXoh_pb=&6twhKpXcYc_sW=&P8JZGfZnVgWlk=&xafp4yXccWVkf=&WtwFyuXg_jpkW=&5vt4qTVckccZZ=&vfCiWAYblnlqj=&833RieWXarcZY=&hirKT_XeXmdpm=&XmWtTzUiiVfr_=&kzgCj2YjlUlpk=&qewqhlWXZidWo=&lwOysBYYZlWaZ=&37jcU9ZnZ_aob=&hQTk9hVjUqmmY=&QCW45rUrWonZg=&XaVqO3XY_dXaq=&UwGcGoZfrojlk=&w5F3iJZiUldgo=&8LxB8NWgUnssW=&kKpycyYZhdehY=&EAE34dZaiorra=&QET3jWUbrbknZ=&ueWWaIVorakZi=&U2BYY9Zhigdoe=&jK6thQXWakXdW=&CIQwqtZWhfhc_=&KrrIuDZrZpsoq=&QoFYj4YbYpk_i=&UJWxBbVgkWVVm=&3D2EI4YmWYjXm=&INJNqAZnWsWco=&5emMdZZbnnfkm=&L35PdnXnkgUnq=&5RVOJrW_kchcs=&hwPYH4ZbXinmV=&W8Sw5aZqkbfYl=&ByYk3cUjjaXgn=&nCH3dQUXdXcid=&FllPV7UdpaZXc=&BfFIW_Ylfjmsf=&_AwZRLYiZpcjf=&CYfc74Yoah_W_=&kXgiyFYd_nqfe=&QgTjKIZqblWdr=&x3YMErZWrmsoj=&XrYgTfVilVnps=&QsyhfoUrVlnmf=&NRKRihYUjcpmV=&I9kPiiUhmqfee=&yFdIMaZsZbfoj=&2hpNDYZZgVdsa=&bk8iiaVpbkVle=&oL6aGKXUnglsc=&2wSvdxUsgkgZk=&i7QFaMUZigsaZ=&6FRX4HWXcliZ_=&Rux9fzZibnXZo=&6YWtsBUpngjYl=&Hpw2WKXZgWckk=&AVhq6vVXjUo_U=&aw4YnGVUapcng=&TK_VnRUZUhZgq=&dKPxNmYlfonYo=&w8MVYIV_orkVk=&4Jjg8yXbX_hVm=&CFRulOVnhblcl=&s7Z_X2XonqVmn=&M_qKaQYbejn_U=&X_AwrHVrlp_kY=&f2PpdwXaqsql_=&iCELP6Ueckesg=&MuBcwTXegbsqf=&6liaeQVbigno_=&Y2jT2IUZpkYUp=&x7TnXbYVogqqr=&T4KKG5VU_giY_=&W9ijXqZVYkq_r=&JEPoEDXsodsqa=&LdwgdpZisWYfn=&EZfrL_UpidlbZ=&jlQQqQZcUjoYd=&7EnScOYhqqpnf=&3dR6wYZZlmjhp=&WrvWiGUcYhqqq=&vHZpU6Volgerd=&YlVOe5V_iWr_Z=&GKN2vvUjhqWen=&WeVmR9Z_mas_k=&Zu6AUVYca_iVV=&Vco5qEUngmYel=&RhyZZdVlocqdX=&ZfLtxdYhrWidi=&GbWc7xUidU__g=&5dc8itWkjrYnZ=&XaoagtZ_XlkeU=&9baFzyYUWZWWf=&WCHKr7YmnilYj=&YvppfyUqqhqfr=&46xCxtW_XcpoU=&F5mpfQXsjVriU=&7U6KrpWqkXafW=&q3AlodVdYqkof=&I2LhmdZkbhnVU=&Dn5zgaYdimcZi=&8IXDeGUdjfgpm=&Cg8lRyUekgnZq=&396R2kWo_srZi=&xsp8hOXdbiWff=&yKYRsrYmVoXWp=&Sr9HtqZmsWlVf=&aMRoADVdcmbso=&_52TZsXdUVdrf=&UX_gnbYncscZU=&XCNFiWWlbbdUq=&64WVUNWWgdYnb=&QblijmXpredVh=&fDW5BaUVshoqm=&eZ96gSUYbh_VY=&HHu8dPXfoiclZ=&e4Dvu_XdjZakk=&FCk9lrUpjkokc=&CVQYDvWgmXmsh=&yUK5I5Wms__ap=&WPS3BEZqkferU=&KBlIzOXpXdlid=&f_IkssUhlrkgj=&BnmOivWmefUaX=&gIX2vVWjphWcm=&agu2hrZcYXkrV=&v2DJhxVehXsrj=&PdEx5aWrpZmrW=&ImlKmlZqksqeo=&XNteGFUjpgbmW=&7Mg3QCXUWrqdY=&KGUdX8VaY_m_h=&o4DmQNXghkqag=&4jVkrTYlcWZXl=&RE5IVKXYhXoph=&xSYdXrUiprclY=&jtXgnOVmgcfYZ=&Qj6pk5WXipqZh=&acX6TOUacgjrm=&3XZrAUWVbjsdc=&H2OTOsXgbsmii=&MV5veKUnbmZdX=&nN5XxfVgkghiY=&jAiketVqiXpmi=&fPO_LDUschlil=&BJ84gfY_shYXW=&EthKzqWcbeUhe=&O6fiu3XXqfdbU=&qocUQpUpbf_fo=&kv_2AQUiVYlpc=&KRcausYfVcqbh=&Hu5nxhXimdUps=&gYqxOCZUlZmfi=&o2IaZ9XZajosc=&R5iZ2LUec__rg=&dlaIS2Ynpkkes=&m7iO8uV_ngssi=&cya2WXXhkpdWj=&m3thbDXadaaXs=&Q6hwEPVapbZc_=&Pyjz8SWacogZW=&CamaZjWUcWl_a=&Y62rPvVXVeUVo=&aA_56RZepVjbU=&lCGtElWYWbhmW=&PZDzrWVeZrha_=&rOnGQzZaermcc=&Qfk4eIVisllea=&2XOa7CU_eiacn=&d9bwTSUalpXid=&KDrlQrVqaZnoc=&zVDJFaWgUfk_l=&vijRw3VZVljde=&MAV8YlVgdjhoa=&6mig6ZUeinoqj=&gPLwshYbnhWkZ=&8kMC2uVcshnUo=&HzQXNfWZsXlbi=&CeQ3J8UYoYpgq=&yGKHjyZhigoiZ=&nAeQpWZnjcqlh=&Qlmt8nYlUqYhp=&4VWNxzXmYb__s=&g2zjsdUcYrcXb=&NkIADzWofrYcs=&L9vpskXpUojrs=&O5UJc9Zd_sjnm=&Za4HilWadcXaj=&Sf9KsqV_drZUo=&2HnnDmWhgfdlq=&W3_sspVVgnWof=&bIpgkiVilVXfa=&SnKqoPYqUckne=&OOfl2iYciWlsV=&hIRFNCYa_nVgl=&XEPBVZYgeXXbh=&5TkQbXYgpgZrr=&aVxbJRWZccVcq=&PyX_ZdZeVbYgY=&klStGeYWaqiji=&t7RIrFVhqgaiX=&B9ejsNWahfsms=&kcWqTVZoVsbom=&f9lY2kYlqgcaZ=&n_hmW_ZZnqbsl=&tdtyNbY_dfrmf=&X7l4eNXVVVdlp=&5KJNlfXpsYaep=&cAVphaUnjVfkU=&5KCebAXf_oVoh=&4wM5bNZXhbXWh=&4UysPsXfbeUnb=&oZfoMfWadksfk=&TwMFaYZdeoro_=&cnSJ8pWglfgUl=&AItPv2XZnlaVo=&8iN2RjYehakef=&rE2MSKWb_UVVa=&PsRak8YaefUkX=&uZx5DwUcjipnZ=&aMcgzuZhWrZk_=&_b6LVPZmXf_Yh=&ekPWxyVopmZos=&23tULRYZiYVol=&KHQzzUUhjYrbm=&Uoo8l8ZWdsjal=&zgCmbFYfkosYl=&oVt8GPVksrdfd=&U26zikUcjVmU_=&Z6SlSSVaoXqas=&VXW5XxVZjWesY=&MnaCakYY_isom=&OeOWeoXbVqjgd=&KFrokQXpnfUcV=&THO6UDUgnd_Zg=&cgHN7BWmZpdaX=&w_AoySXWokjsn=&e8rT7hWihdsmh=&akGr8cWmd_ZXi=&JUvtWeXZcdWnk=&f83VvEU_VahoZ=&NEDFbhXolilpq=&l2K9LsYshmfq_=&jVDyeFWoqXhXk=&aVOnVKXf_Vfpr=&KEVEs2Zekromr=&H4L2fHYnrqWfq=&AJhn8tUeZZndk=&oUPA7WUmqlb_a=&nw_miVXqoiiks=&VynKMWXXfooig=&dT3HxcZademin=&yojETVXfnnqgq=&GO4OmHVjjkYoc=&Wii6e9WUVUoUp=&wVhVlhUbfmcaU=&8h3GHNXmnfrcb=&iBv_2zVanirWo=&LaVvB5Xl_dmZh=&szJWjGXlmidri=&yT8_fhUbkhpld=&GWvm3VYpZsjkU=&_9EyHbWkmihdn=&eyeTlLXshgprY=&WAnJLZXbjdYZs=&IMQ5IZZUijpWV=&eA3B4NVorZdYU=&9SZyuZZgijhca=&ow9HrlUkajUaV=&wcSODmXejpZVZ=&sMOMtNUhseUrn=&uojcKNVbepkmi=&zAjDSuZeghill=&HK88ViUbjUasZ=&pFw39NYY__Zkr=&DHnKzxWXUlmgk=&VmlzcPWUedjon=&7J2CQPYnUYaVk=&wgi_cdVZnYXg_=&bJv6RMWViWh_a=&ZAT68JUrnqkkU=&OyWxvJUhhdcmr=&IN9zn4UfWV_bY=&2RfvjLXXjq_sg=&SgFMU6Ubskjar=&_VW_n8ZZaoqmm=&SCLY2DXsjpgil=&MYqlJAWVWVrlp=&ctkWKsXkphdgm=&9zXiTqUrbseZl=&BySrhsXjqpcZc=&a9CGyGUlXloll=&V9OsRZVeYgijg=&Es85jPUeZnVrk=&Z6ynBQYesngjd=&lvhjOjV_drqpW=&kSWFe2W_aZYdj=&74EeNOVcaibkV=&wxVmBiWcaqVba=&TzEeNtZhrYjfW=&E7suJfUhfhqao=&IDAQGeWodZngj=&HFLk8BUjcemmX=&U9stk2Udnorfj=&2t4TnoXV_lead=&C_7fhwXe_khfk=&OGlkK9XVXkXXp=&DwrLHAUWcnbhs=&xtR2c3UgiaclY=&2tMqX4Uck_mUf=&4fco2JYXcqqnZ=&hBM5O3ZhblpZb=&uZt4FwZqWa_as=&XRmH5KZhrqXke=&MARqwfVfhWXnq=&vlAVLNUhYesZm=&IWJpmeUrY_ijj=&hxQsMHX_WhqgU=&eCb_oeXqsnldW=&blXsGKXsiccZo=&6lrr2tZjcneW_=&LTuEOQUUchag_=&JOAAwkVlXcdjZ=&CiDvsdYelsaZo=&R8gwzVXhlpXW_=&wrZY3SZYbprbq=&wi8saVWXn_bXd=&A8VEeyZffrh_c=&B4T7JuUg_fedr=&DpkkrHWiigprn=&o8HFuiXbVfZqf=&nkdczxUmlWaqg=&6g_MkbYkaVUUW=&ewvnWsWeek_Vk=&pAMBExUhVqkYo=&5AmVY7ZlorYoX=&lbtLK9XdoqiVq=&Sl2RnrYkkepeX=&N7zM6NUmpbrdj=&ll5SSaWeachdr=&T3bhBZU_go_Xb=&3xD8FdXUWYjrX=&nygMCHVfisghk=&aEHAoAYVgjpsl=&tlyg7MXkUnboo=&Ng2T5JZb_bspr=&evOQB5ZrgqcYX=&KQCaJZXVhWUci=&Px74rKXXWhnhc=&PCc5qoXZpgWgf=&mSCJDLYnelfjo=&ZR_rD4UVpddhn=&AwBg6KVglhXWV=&HI9A5BYbrUhpd=&Re5R4EVXWcprk=&DleVWlVXbkieo=&o4xB4LUjVVobi=&bJAwtjXjjcWnp=&_9cAQvZqsimWn=&8yOqb2VVYrnaY=&7haGQsXfcplUW=&yhwMcjYgjY_fj=&Zv65H2W_Xdi_i=&Ct8k9jVZYjeqp=&qGqvV8WnVZYmf=&BiptYNUnrlrkf=&sFFthNVdpip_W=&CtB3MrYsrr_hd=&WvJMkXZWipVne=&XdjCpzY_njipr=&occ7P_WclmYaf=&EHHMCgWZWiifX=&xjOrKZZiqmVeX=&m_dqTrWhYlgma=&bHnA2xXdnqh__=&Pd4mBkVsbnheV=&fFuLh3VVZeU_q=&mkXPGtVmXkjjg=&jK9laoVrpiqaa=&yGUfHkUcUcoir=&CsawspYgXsYiV=&Iivt3hWssVbpZ=&4THxtAYdrqmYm=&r6_LPEYaUgbbZ=&8DYKzmVskZock=&72vvX8UpanqiU=&_qGCeoZjggkne=&2yyH4JVrgUfhr=&kdBDhPUpci_XW=&ckfoiHZbaplqf=&vwEl46UfaZoon=&pGleI3ZnVkarn=&Kd5d78ZeVnqod=&SF7L7wXjcWfik=&59MAnYZbjhfsp=&CVXgXyVdVieqj=&e42paFXYV_khs=&WSWXFfXoVggrj=&LYFsAtZmriZmd=&KWhBuwYWWXiVn=&g8FL9lZcikbhU=&8FMf6DWnsfVmp=&KBjGOEYVZilVZ=&IseQXMUhmpgeY=&vHxvnrVolrhrW=&6BOOamXrUZaqa=&ptgzIJVofhgms=&xGUcy5WVX_Wln=&tLBooUVrfUpcc=&zdylFpXiapXen=&fSWhsOXsXfdng=&WLylXTYrdZrUp=&_s73hGUpjWYsk=&iHKVXTUgXYaeW=&thE_ARYfifcqq=&L7nwuWXngrqkk=&Idi9PEZUjiVdb=&GxvloRYWdfghe=&uno3wGWmsUiZp=&EkCTRxZUjgisY=&cottQjZloXokV=&_LefrVZXhlrgc=&caxyjtYklXbZY=&5cShclXrkZlfi=&jalS4WXfshdjd=&icZCROZprjf_a=&SRTC5EWliajUp=&Qd9qw2ZksXiXe=&sjd3dPVdsoidq=&ESqsarUnfbads=&N6G7aLXiojfor=&wSZKt_YVnWocl=&TPQhbJZVoqVro=&iMLSnkZjfYVsb=&F4pvwOVjcriqq=&uCBD3KWnbriaa=&btybM8YXYhXaW=&XA3H6nXVbVpeW=&CNeK_FVipfmhV=&nwJmDmZbacdYn=&RAWkTHYdXjmYZ=&qIYgKwWppogZW=&f9EM_mVZoqsbX=&T7uUbjYokUUUe=&PLLdLSXbXkZia=&DkFjKLZdshhnk=&OkU7JyZfq_blk=&fQlOSCYcpafr_=&kmRdeNXUUbhsl=&hsMQ6qVanjUYo=&xbEVLLZWdjmYd=&jtNIlGZpnhnpl=&fLuzUpVpgZ_hV=&ktOOzTWpchmes=&wyZsWrWrqsaVb=&NDCESTUnX_Yjd=&cHpGtZYYUbWm_=&coOQ_CYUYaZdZ=&2tUXEMZhZkobY=&tA99ZIWfdbYXb=&gBjoZpXikZXog=&XJVdPOXpiaiWW=&N7BeKLW_eZbsU=&gfTgfKUnaemhi=&VL4Kl_WfaqXab=&YSU2zpUpUoqdo=&S7oRtGZYq__mo=&ujWdCCXXXUfZm=&iXs23zXfijYpU=&zdAEzqYqqrhcs=&tliMaLYifdgiq=&Ibs9NmVU_mimi=&Pyyi3dYmncjor=&im3RIeWmVqYeV=&rbREFfZqqbrZm=&bUfqn4UYUbhX_=&KesFUBVZjahgn=&kNHps4VknhjXc=&QEqWp2VsnlgYc=&UmkWq7Vlklpdo=&ElpnqqYaidYjs=&abeUEwWWVdeci=&wb6jpAZsZiUqn=&2knjuGVjagrqZ=&2bHiSZXZhYrob=&2swlS3XksroeX=&oPzGgHWZccf_e=&uKZ_QKVZgpWin=&hQzeQpXskWolq=&F_VnnVUpnkdX_=&rJjbOyVprpsYr=&i5egv3VldVmrr=&ckNwFBUkrfkag=&qzVLb2VeXWqY_=&_wZqANValefXl=&uwHVmoUlXigan=&ATjIdJWcfgnXi=&zQ2sjLXaUXhld=&M48zlXVcVhjko=&P5bd6ZWbignqq=&j5ee8lUfohdqp=&uBq3KcYZWnjbq=&Cosj_wXhUccXh=&Y7KaXVZrfkrYp=&V54skaXrmXbXi=&8TqYIOZhmUZll=&jYQ5OqZbebaWj=&H5l6oFUispepd=&63JtAYWdXlVdh=&SMhzpGXUbpoib=&Dk38lkVUiYgUb=&NYksp_ZafVolp=&PnUFMqVfpZUYk=&qCvnVOUcUXrpl=&QbtEOmUjfcWZo=&HRwkI8Yllh_pg=&qXSpsEZioWrrg=&OnJZSdVmfnslr=&Hp__OzVYdVmeZ=&HjB_pZZgbab_l=&HVwGVzYaVkeeY=&LbMOK5Ylcisnp=&V8sOOuWhWjlVl=&3yTIMwVbl_req=&jzicIHVpbdUgq=&SDDas8ZUfU_rj=&jtGcujZYkqobm=&KKBeZnUrUYcXg=&3Q_P3IZfXfaZr=&_DiJ8DWnqrUkZ=&KKNU5uZZhbWVZ=&yoeQnXVfppmYb=&Hu6tNYYZdcenY=&udym_YVeWmXrV=&W5lSFzZdfbliV=&nYzJ32VangVhj=&ronuniVl_Yiaa=&o4XopwWrnpWil=&Mlj4OFWXVnebp=&_BlpIvWbmffeq=&5TQjHHXkaZplZ=&Prbhq4Udahkqa=&cONE8_ZWYpUps=&tG4KNhWZnemnY=&5wQutXVZjmrpi=&e8raevXsbslhU=&wuWcQKZVrhgaj=&dYfzanWZ_oUZh=&OdAMIPZpkdpef=&l9ZujaXkfoaUi=&VzISzaVnoplhd=&cX6ljCYcfbbgi=&r53pyFUXcqq_f=&DQKhxMWZsjWgc=&T_uWhZYakeXhk=&myhiGPVpqefia=&J2QryNXlij_Zh=&Q6MKyWYrpUrah=&FJBGKzVgXdrol=&9iLVBPXVsXiVr=&mrm7BhWkjYsYX=&Mqb6eNZVUUdbU=&WcdYOwX_UeZdd=&YYMvBRVmhsmqY=&lTASTVUk_jhra=&4ZXoLFUnrWW_W=&CqPv7hYWodksZ=&U4gaamVVdXqkm=&qRyGraWopdWlY=&f3cMkvVn_lqWg=&pvxua7UWfnYUY=&rpWs6kZssVcXZ=&WMTMKcWgfWgfa=&ZGqKDdWrobrb_=&uyiI3GUh_cjYX=&XqozRdWUnXZnl=&SSheDtXamYgpe=&RB935dVnaYYkU=&nrJSuBZfpdUsr=&5fjY5xWXeaqgp=&_d_LCFVjcUpaf=&jXYEigVXmoofm=&2fX8g3ZrkiaXg=&cjVjLHYropmfd=&W6fdgfVnhXp_m=&nVRb_VXZVVhlo=&8CSX3jYZiclbr=&64WNGxZcfUnis=&97lrPnWeecn_Y=&2S58ESYZpYnmU=&I9kumvVXsXVVd=&PUdE8bWjclfVV=&UfD8FlZsjassU=&4kQHvQZhVe_qr=&35J2eZYkUlZW_=&LFuM66VWmb__b=&YQ4DOkZlfjfkY=&rWtRmBVqerbme=&uQjRpEXXehorY=&2z_w66WqecYpi=&jy2pVUUrnlbhg=&x8Tul_XjdUWic=&xwBgLaWVUdkpf=&EziklhYjnnmn_=&6hDN5VYVrfcrW=&2hOePRZnsnbmb=&F_7ocjWddbohV=&ah3AUKYnsqooX=&LzYgHdZVsUW_X=&haTkA9Vchpr_d=&tSvw5pYgjVekU=&ujyCTYWnbXbgp=&gCvXq2WgVooqd=&qyDVcFWmaWsYi=&PcctuUXrVelXs=&uqpDJiYgmlqUZ=&4CXMZiYnjgelf=&g94ZL8VdVXggn=&35rY4wUdkkmbj=&ma883EYVdeWX_=&ihea2uZgkYhhs=&FViXjoWliWjcZ=&OyPUV_WrqoUrh=&_9yZzsZVr_aVl=&gU7AenUpmmfZj=&dHUKGcVVnjkrs=&4hXSctW_iWoYZ=&4s6HEXUm_Yqih=&5B_KuOYWqpsUl=&UV3_3bWZpdmVV=&5Z3ryjVXYZUnk=&lFj3HrYXYkoir=&RAIm5DXfnrgdk=&tu25WaYYYadVb=&3lCKJIZZkci_h=&QWecFvUhlbgo_=&ApKL3SWkeajo_=&TAuCPxXUjmfja=&hYJ3TfWgYkdrV=&F53FEhWUanijk=&7idORtViaanom=&twisF8UgkjVcW=&5t2RtrVUsdrWl=&Ll_sz5XWrhcid=&9fB54LXjYrce_=&ZZJEHNZYVanbY=&BW9UCpVXcWXi_=&26FfOQYkZihng=&kw4JHwXfgglkX=&MEXgxPWqjkjXb=&_yunwZVZrXb_W=&DwzsdZXnVWlpW=&uU3WVtXeYnq_l=&gRacjdWkmmbWj=&AhPpv2UhahUfh=&bKgGkrVrdUa_U=&KEJUloUljXasY=&hvnQ4XVdknaqp=&xd7PWCUiofWYX=&HbrtnJUbgelpa=&WZK8H6WUhjWef=&vzWVfUYppkUYb=&7ej2ORZkWXe__=&Rwy3NIUZcjhVn=&LBdcEIYW_cak_=&zIesLoWZhedVl=&LkiZJeUYodqkX=&6XXyLLVpp_rZn=&nYap3lZUamcn_=&amLx9QWrZcdlV=&Ek5yWrVsnqejd=&AkR7j2ZpkdWfo=&3YIjDvXmqcdpf=&CE4BbiXjgiZlW=&_SpYYrYjmqaVZ=&CiY2ShWeeaVkm=&yjQOuUZkVe_dn=&QoQZMAUacXgVe=&gWCqn_VVbcqmf=&TH9GPIWkpYfkW=&IsYLXbVlZrpZY=&SQQUFjVdcbkpr=&xKBdBhWjcjfen=&iR3nlcZoVnhe_=&lg5hm5WWcVeom=&6g8F5RZ_rUmhY=&v9ilgZY__g_fh=&Oio8pHUVj_lji=&zEVFBtYnpajnq=&E59ztdXWqksrs=&RSOeMNVoiUjlY=&wnnL5MVXo_hdU=&WHm46LWamZidZ=&chMRBCZVbepqe=&ccm8kbZZUhVZs=&2NEt2tU__cZrm=&lQ7nEAWarYsiY=&KUAA5XZkfmmse=&u6zIQfVcYYnec=&snQRSlZer_l_Z=&W8CPjrZfmnmqa=&MpefnCXkooZbn=&osez6MVb_ieje=&2y__DdXjZrYrd=&b4zHT5Umbngnf=&DuipnAYgdgVZZ=&Kf9udkXlYYagr=&MfKoWdWgedsWW=&vjxX32UhkfZrs=&nB3YhDYiilq_q=&Ynj2NEUbUcdjo=&NuyKXYXWgmWln=&l95VarZkqmYkX=&3qmBdgYXcgVmj=&wBu7zyXao_oiY=&EfQMDGXcefXUc=&bll7SRXZbrikb=&2_ctQEZrWVmmc=&su8C93Ykilear=&yLpJCCUancfeg=&qsNNoJUUXrhmV=&cVKrLQXfmeqcq=&eTNb9SXYidlcj=&pbiYTuWWoVcij=&k8LVx_Zgri_ZW=&JGGVxGUdZffhr=&KydwkzZeiiXnk=&ZMn3VcZXqsVaj=&V4LbeXZsolalb=&xdz4BjVXVW_mY=&764xZCYbnbqqc=&NKfWEFVVUXcdm=&DNIdsVXkXqqUr=&5G2hggWkljplp=&jZ4g97Wekjmgb=&8G5_5OVdgUfkn=&GqimjsUmnfcWU=&5QJMy7UgamdYj=&k7cCocWfpiXoY=&InfTsFZVYbgdb=&hl9cZyYZ_ZpcV=&Jq_glhZphXWsg=&Xc5cNgXUUkrXe=&zeaifmZrkgeUX=&IDvarPUfUfkmb=&vhgRbwWnkgrdq=&cUJUjiYabnhWY=&xvMac3Zbbjgfk=&Gf6ZRuVniVWUc=&QQFMMmYeUckhX=&trtvGaXomefVs=&ZYOu7WWloYYkp=&uJVdfJZZpsdZZ=&kmJfRIVqhodbo=&gxcNXvWVUoeck=&sKOh9hZWbaUef=&5VfYknUYUgeik=&U47DrBVscsbbc=&dGQotvWZeXqdf=&Lz8V2vY_rVdaq=&PYlminVlkidZs=&DwUSAKZnUnimf=&6Uy_JyYnkalZg=&auzvXrUodYdjY=&heDRcRWccilpj=&V5lZ23Xmal_ir=&eX7m7oVUYsqbe=&yRllv8Xbsmqfn=&nQDCmYUs_goYX=&8xZSZiXnbkUco=&_zDz9DUcsssn_=&RKdkNRW_c_loe=&ZUiN7sWVhlsag=&T76qOUWZrojUi=&bmrb6YZXqoWYV=&MhCFVmUpYVVbs=&DWilDfYkseWfe=&cfHVCmWlnaqs_=&KWhrkVVVo_mdb=&ALxQHAYWcdgkZ=&edrzI6YUiihpr=&YCnIesUfko_hk=&U93YguZqcesXp=&tnkU3uUeipogo=&7A2XnxZmhsaVg=&X8KlxUWcYjhZg=&JejYRjXmsccjh=&Q_W55jXXinlpd=&iKIZkbX_lbkdZ=&7iKCBSYmkeXVa=&NRrsAvZehWmUV=&VgASFmYXgZir_=&GZbSfiUerUXqm=&2jMj3kZldZslh=&r_752GWZejVXd=&PzWNmAUemiojV=&64qHSfUbYkVbm=&FSi5LxXmbZlpp=&EtoD6BWlsYcln=&8ZUrIrVUkajYf=&MhcIGSYfi_od_=&Ggcx7YWiVc_gX=&hmLIvKZVYheaX=&B9w6sUXq_XXjV=&jsuxDgY_kbnqi=&UcRT9VYcbhYWU=&mTTc3vYrrpjXX=&CGJg5cUclsfg_=&lMpK9dWsXlhdm=&E52SDwYqdqhql=&f2j9fcUXkprem=&_oathxYjZgmsq=&PNiQmKZVkmYhk=&It2EXIYVlqacm=&y2YBqCZscXkVg=&z826c3YYoidsU=&sITAOzVmjgb_Y=&pwZKN3UjZi_ie=&2SDhwiWZnelml=&CrkvH_Ybkhhbk=&RrK47eYfpn_ro=&7cXIoAZcUigZY=&LOJuZMWrkUYZa=&sHVHuhYYXdgle=&fqFSYRX_UepfX=&j6bWqbVYlndZg=&MRgVPpY_WWhlX=&PYrmisYWrepnW=&3AnxLLZUiZgsj=&YP9etxZajbZsY=&ij6a9sZlj_fqr=&bAaIKoUZ_pYsU=&ZZc7VmZlmYXYd=&CtrLkiWgbrepn=&85hpXIUhgpcen=&ehJw8jWne_sYs=&HCV_MuYphiiZo=&v6vtLaWoZirik=&RqMhYpUZdWpZm=&9HQlt8WbfZhfe=&MDt5TnXfmXhhe=&LnSsh9VlYUWYa=&3obWlFYrpdbrb=&dlfHMoXkZjrja=&RAQlenZmhWohh=&NZHy6yXiqgZgn=&oewqzfVdYVkYo=&6AJUTLYfplmae=&na7DkIYkojmqi=&fjs6S6VYZUabc=&w_T3yWZqUcrYk=&Trsoo_WdmnjW_=&l3EBkMVmYdhhb=&ZLKGfyUnWhpdY=&gzWflXYsYfWYq=&iMkXNVWWfbpsr=&T7nFXxWbVs_a_=&ltMiqHUcqb_cX=&CISamkYXcZdXV=&3xYKDxVembrne=&KO6Bi3Xajhesi=&WAWJ9kUrYfam_=&3NsoaoYi_cfmZ=&pHunlnUi_Wqem=&VGn9EnXUdnfgg=&KK6aOeYpqXlr_=&GiIcxVVVpmUso=&FLxIlyVZkaWop=&BKWDtWUhaWnsa=&WV5jT_UZWsbjb=&z2Kty9UlplYUj=&fCOigGUrcjWUs=&vgWdaBYUcngUn=&9KMDemUbiVWes=&kfYfrEYkUsppe=&mW3bJTWjprlms=&gjytQ3YroUald=&qFPvQ7Z_mgZaa=&nLpgUWZbVqep_=&gNtijkZZ_pefi=&X86DTjZqVVnfm=&bkWG2oYkgoXqc=&be8J3RWdU_cik=&FIhfjQVkgXhkk=&WVv8ckVoikh_U=&nhkeZtWWm_m_l=&4OSAHJUUVrsZh=&oFD2wQV_j_mfp=&ya29iuWXpejbc=&hLZn55UlashWj=&7L_ye5Wqg_cW_=&QxHgrTWbb_coV=&sYrtnWYrelkdd=&Wl4NvzUXnalkb=&kGOE8nZhrgYZf=&kFF2rwVeiYjd_=&OSCBjsXhYdhng=&2y8Un3WhkZncX=&xAQyuoXc_dpqV=&kKFZajZamqeda=&2J4EnTUmY_qsi=&PrGAdqXomhfra=&gbkkQSUVliieq=&xJvN3NWmWZceZ=&2rRJUzXon_iUk=&IVD9HzUdnWmf_=&dijmhkVUdbVco=&2g892LVselich=&MEGVN6WobsfXd=&SdNQpBZoUcjpi=&DQObRcYeV_pqa=&8_lC9kXXXqqoa=&m93DV9UcYdnhm=&QXaQjDZVedlWq=&MJv6AoUZohVr_=&KsLRHmZdddYrp=&avQjIOVhUqj_q=&hNimcbWVhgZsZ=&62ZJqUZdrpWql=&26REE6ZrrkiXb=&KFmZ3eZZgdfhs=&8C3lacWocfUms=&GweV3BYnegkVl=&NdZMWfWmWfcVj=&Tm_YxbYZkbrhe=&Mk5wlyYZhr_Yl=&wbwAXLYmeV_mV=&f7lHZgXdkWbak=&IbQeuyWhUmbeW=&8nfKmnXblVhln=&rDvvg8Ylkckeb=&iHAcGPUUWngdX=&Xq5oHEUWsdYos=&WvTVU6UpkniWh=&sjAZAYZZsggra=&56xwLlXZjjXcg=&7ntElfZWlWqcV=&oFFjhHUWceclb=&yTYGskZXVppcf=&qr8HOiWbqqZqg=&O_WsrlZnfljXh=&PhHhotXcWUiqh=&39YbBGVcpcoed=&rWlySvXnnok_Z=&ZJaWD7XWfneZo=&ENQXVaYiqpnYo=&6NtY9iUpVcrda=&4gBR8iXVmpXsj=&3mYMQlUaXncik=&ToyAV4Yf_drmh=&vgnDErXeZhjkj=&pZmF8OZaUZbhf=&FohnbPXUVjoWp=&kNVaD4XhhnsVq=&qc6qaSWalWdmW=&BesNe4Vsdklkj=&aJEwNEVpnXfak=&6rmcZUXVemdaj=&uPn9I8ZYqafbZ=&PNEz6CYhqhYZa=&X685zXXdrbUrl=&z4SoHIZ_ijdeX=&5LSXYgWpisdgj=&VSGM_VWhZYsn_=&8aaJOLZdbllqb=&tw8hRRXUWYrmg=&BDbziTUUXlUqo=&gcBxlcVaqWcar=&3bGOydZWkqfkd=&YzqCN6WdqZYse=&QVgw63VmY_VVi=&5jebBFVqbkh_k=&ADcZEsZgiolcl=&qsu8wfVebVsZX=&5kwZSTUUhqqs_=&Mn2RJeXWUZk_n=&VLr5veZscfcfa=&8Hkx72XUsWiZd=&FjHv32Zeandih=&7BRDUPVjijlXs=&GryXqOWVadXUa=&fBtEPGVoWhWiZ=&cEcVMqWYngbmY=&v8DBHEYnqU_gX=&ulxMGrYfsnald=&68wDtKUiklpns=&DGsNUBZUXsZmn=&8GMU_5UfqYYjq=&ieJcomYiVZ_pr=&PVZSndY_cmVjs=&rCBQA2UV_bfpY=&AIOM8zXfVmbaf=&EtcrOaWpnf_qm=&K9MS89Xbio_WW=&_ktQFOXjjobqr=&FLF3mEYWVpjZm=&yWPQ8XWgcZXfn=&D2GApQYegahWX=&fFxl8YVeYgqZU=&odDkzFXbfbqof=&dkFVWmZZdqZYs=&lCeqbuVsVViUY=&DJqw6UVXXphkb=&Y8MnymUprddja=&SZD4MrXndgsso=&r7BUvIWefbrjg=&d23_XbUhdZsdX=&7JiGFuWhjVgWg=&ol4UvyVpigUnl=&OehphAVYnkaXh=&bGojmkZgXnbWp=&rSrt3oWlZa_lb=&G3nazMXdkVfmj=&s4qiF_UiYjhaj=&oQZzi3XeZq_bm=&UHzxq_UYjmaed=&3d7XXIXli_gUU=&8uDPgrVkdrXib=&u2rGI3Vdgc_no=&Smu9ibVWiUYin=&fIzEoAZhYnVgn=&zNYBeDUVWijWV=&uz26TrXZgcWai=&RgiMGwVrZdhbc=&I4hgefWsVXoZn=&yobyllYffpmdU=&V7deVdZeoVqZe=&JKdYglUaeUedp=&oNfBtnYijhmUe=&J4CZp5ZapbmiU=&UKdmEcUcVqpaq=&EMmM6tYsjpXbj=&JXzn_WYprVZpe=&QLTGh3Wkhasbo=&87RvWFYegaVea=&iXOmYMXVVnUpl=&GuwcqJUYZjmbV=&Nhm2SjYZZiiWn=&CL5zuWYVXdnkp=&DiRM3RVkogbcg=&Any9akWsqpXXl=&2mwCuNWWcprsh=&GotUFOUqZlYef=&kxO4oZZjfmfiq=&nlCd3VVakambr=&FY_2EnVpsrVjV=&f6jIrSUopcnYb=&D6TVzyUrWoVdp=&3Au3KGWUgbrbk=&vW9muWZYqsWrm=&8mMgDYYUfmlaV=&eMWXUgYVfaicg=&OMONklXioUdlW=&SHOIHwXjYmZdh=&GDVg7EWaiUerY=&UTODAdU_naoWV=&GQnKYiWlWjcaW=&uF8QadUfhYjhg=&8sjYULWlmnciW=&jp6cd8ZoXlnnj=&EXJfTxZnbngbh=&Y_ZTDrYdhZekk=&6psxlhUXsisgb=&It7li4Vpejhea=&nnTzHpXWieaUW=&b5W9UEXekkYpc=&TblQcVVcVWcgr=&tLLPLVZUYmVXq=&rjbu6gXfeikfc=&RttSBKXWhUmVY=&rMvnQDVWWiYXr=&cI_S48UgccUod=&sXG6rRYemYsYl=&oc_wV3Ujolpkp=&UMpWMZZYsWVdW=&MNgckiXql_Zkr=&UWkqo_Zebmlrn=&_WygkoZWeYkkU=&xrWdHgUdZarbf=&3z7cxRWXYhgeU=&9OKrRqWss_bpl=&yPTpJ6Zoehdan=&pJpmPkVmlsapY=&NEyn_XUYqsZ_j=&vfkMiyZqgsriV=&s9USlRWfaqhhc=&F5LoFtVcccoqi=&ImKcBjZrngahV=&RwpcnfZhrgnlk=&X_EBSUVgqdfXV=&dKsTCQXbqhnrU=&6PnHJAZphdcnb=&3Uu4xuZdVZink=&ZQxWSuZnfpsjg=&QKC_t3XVca__k=&tRe7t8UoboYea=&djrpfEVZ_bdUU=&C4T9lrXqZYkad=&EblsVGWZWUWib=&WPkuftVlglgkj=&HVK78nUVesnVa=&IeRzNvXWXrkXl=&DdnVVkVWWZnlY=&xoDeHOYrsjeei=&KW8CrcXZeWWed=&hEb47FYodhfgs=&Hdv6h2UaYoXnX=&iEVHFfVbVUgs_=&hjHruEVjWqrhZ=&q2kk5XVfnVUYZ=&EwhzgjWUZelnl=&ipzNOAUinrcnj=&97fCC9Y_l_XXd=&NXVFHwXedgfhU=&rBwRFTWlUqlsk=&b7qSaBYoroilh=&GKhE9_WjWnr_X=&rWeJNaUheblZU=&MyAU2hVqmVnrX=&oZHeW_WgcZsfd=&UVmqcFZ_iVZYs=&q4M8NEWrheWWW=&KvlLPZZseUlUa=&kUPr_tZnXWXmc=&RUmPWpVgUZoss=&3nqZwFUcjmmeV=&dJlxTaUgbeWaX=&CIYJQDVjc_mjq=&Am3oxIVd_egee=&wJVVLVXiieini=&Misf48Y__iVel=&2KdmY9Zh_ipcg=&mHmQG9Zlo_rXs=&FjfKIhZZrii_o=&9P_lCtUksUUUg=&g_tdtBZjZpebs=&rMZyQNYgjqoZq=&hEaSAMVmikfiq=&T9wETEUnkXlg_=&tm7MGBZcgfqWr=&7_GpaCVV_bpXX=&AwL5UiUdUslUc=&KsqPqbVZbhVhn=&pBhRC7XZrWqaa=&gJ7gbkZobfgiq=&8efJtdYfUUcej=&yDM62AWVkaspo=&VpqUxXVeekego=&Oeqf7wYqXdiUU=&8Q2CgiYilhUgd=&_nvZXUZYdpXkh=&cjIJe9XedlrWp=&XiO2bnXYnVVVc=&uFHtscVqWYYoZ=&r6y6iTVUnkVs_=&bIKK_HYcieZrh=&eLYUySYUnbrZo=&t7cQWUVm_ghXX=&EazwhvYrYbdsr=&PWdRorXgijda_=&JTfthGVesWl_W=&PMUsB4WbUXror=&wxPxmcUYq_opl=&MvNxG_UWlsocb=&dQeWDGVahodcm=&zVtiXEYjjUUrq=&LjIbqRUm_sVem=&E4NjX2VXaVWrq=&FXZ7IuVrc_pgd=&ouO8wGXpUUXXq=&RDTiPHXqWqgaf=&kOS4JuWjaidrs=&cgrnBXVdqokUf=&lBGXadVVoUXXj=&jhHmeQXbppahZ=&8WDdyWXajWeiq=&FH4ApyZrnsclX=&aev3A3XpeYlkX=&BUDQuJUne_cZY=&p9mjsnYo_Ukjf=&WqWhpoXYVaoXY=&OVbyw5XkrjYrZ=&EcU6XkZsebakl=&Ank74jZdooVsp=&7VsxgiVlrrXpn=&xFoRNsVbedrdm=&w8edHgXWUigpU=&4wPo9eVnpphVn=&ZxMc3zUcZlmnV=&x6PF5fUVroVpW=&tZn2zzVVapcgW=&UBuECuWbYeiYp=&KMsbDwWnso_fX=&DkVHbMWil_bWX=&Y9skzMVfeXr_U=&Nk7pt6Yobqkeq=&lV3YLHXsVhjmV=&rivJ7aYrasYef=&Rv5OloUdapmeq=&96btMJXqUqsbj=&8oQVH8XgUibfm=&qc2k2jWXkngnh=&59hHPVVhVbgUp=&s6EqmDVqsWfYr=&ZAIv8tW__babV=&bMC5KhZW_jsYb=&8zEOqHYUegqoY=&X38TQCWb_Uhmi=&D6Kck3Za_Znff=&a8Se3zUckUloe=&4OrPOEXVkag_U=&2LtPtDVqksrWh=&rIQVx9XWlnrqW=&DPGPeaWqVcbcs=&nRwAZUZVpWWsb=&ylYRvvXWZocVm=&H3JgPSY_bYlbX=&Tmv7CpYgWVcmX=&NxMjIhUlgsbhi=&MfzHGxWlYmYhj=&qY75cIVmkVVUg=&PxvLHuVnphabV=&OhVVeWVYmVnps=&4kk23sUZq_Ypb=&rOduE9Vldrjpf=&OpFKjEZo_e_ja=&tvUspJUlkXcnc=&J78o5kXXsZoWc=&d3WJMgWhbhbZe=&3LwUq8WjgrVUU=&I2oJjjXidUWpY=&VmTTZIX_dbirn=&cKs5nEUqimVkp=&PXeIfcYrVYkUi=&eSUYSrWkWYVkV=&M3T36tXbddc_c=&sQGvv7XccpYip=&dstHqlXm_UsgW=&5SX_xxYgWfq_j=&xtNcftWmrfViV=&svgmpgWmmiVdZ=&ef2UA_Vbidhgb=&o7TM7wVcndUpY=&uojju9XrVZZpl=&AWYzSYVd_ZkaV=&cs_EyxVaYoe_j=&J762EOZaWghea=&BaM85mVb_scmf=&Ev_yJ9VdoqWmZ=&ZScaajUnejeYl=&hjTutXVnZhgUU=&QTvm3RVrhqkbo=&Nlv_YAXeXZXff=&A54WnXUWgVnig=&GdbOQRZblXYnn=&dXo7xuUWhjcpd=&i9SepwWbaVqoa=&77vbYPXorZYlo=&RQoBtwYpUqbnn=&CvniZkZhgbdge=&987l6_UqbgXhh=&uxVtRCYWqZnns=&RZiOV6Wlklkqd=&k4iLNrWlhWljl=&_CchYgUmfVbYp=&7O6FlnYWbfdXZ=&JTK_hyXlVasWl=&oMOcczYYkoUhZ=&DwGP2EVgYamWl=&gBuhpDZfqUrrl=&8GNvsdVppqnVe=&iidZCcYXXnlYr=&poBAmfZsXXfhl=&beiMsXXYdmcYf=&gri8HoVUjnqdq=&4qMvDZXchfsVb=&wtrjyKWerYsad=&ebOX_PVrUYciW=&TqHcVeZXVoane=&r4zWlVXYknsqe=&ZUdTpPXocrXcV=&knDWDsVYcnkbd=&i8ryEbYWdjofh=&_iabKRWhUbjkk=&sH3i5tYbjg_Wb=&QmOdwXUdp_nkg=&2f6nhzUbXnlhW=&RgHsFCYprXklU=&ZCGKDdZhWYpfm=&Wf73LlZrlkbsm=&s7dxmcUaXejja=&yOxR7oXphmirh=&W2RLWNUZgWp_j=&vwzKw_Vhp__i_=&hW4YvxUhqelXc=&SXyAh2YglchXf=&PIG8qpWa_gZfa=&vAEJCQWgrinhY=&y_wKe6ZZokdda=&FsXyyKYqghrno=&Vg2Il3XXgiifh=&3O5ZKdZseXprb=&dv2yFLZochWgc=&RHJ_pFVffcjnl=&DCbJVJZUUcV_g=&F7ZcPsUmnZjn_=&XhiXeCYpcnmam=&fRI7B2Y_lbjXn=&ifJCKXYVhaam_=&KevdRMZers_nX=&u2AvX8VZfdkWZ=&PVgZNIZemiXjg=&mDVYEjVggrYjf=&IVmWsYUflUUso=&rhJ_JfWlkkibo=&FasOqlZj_rkrV=&dvrEGGZXenjpl=&pQ3UiwZmUXoUg=&m6titDVYWYXmb=&B2WsIyUinidab=&9WHlzIYbYUijq=&u2CH_jXVqYmss=&QxqevkYb_flUc=&8QdmAwUiUbkZb=&ojz83YUsWgenp=&IHQUJKUlrYhUi=&VdXulKYaXXjbd=&mpY6jKXqnYbpm=&yDs57NUeUWfWa=&X_7IhhYcdmhlj=&xq8ZW3UfdndpX=&xWOLYRZec_sps=&TS3kiKUaZkUd_=&yuiTvKWplWcYp=&22fFR6VYgqbcl=&pBMfK6ZWhUWmp=&2yAlwtXlZVonX=&_VOmNuUjeqlkV=&mSXFTJUjkWZgr=&fEgdY7Wic_cml=&hrrWTpUeYnhbd=&7HIO4fUcXZkai=&VHLJcCZprYjol=&YXlH78ZlXqjh_=&oRScRsZZZhfUk=&wRrNX5VdUZdol=&AmrboWWqgnqbp=&nZYoh_Uqnqlms=&FzWxF7Ynagcrj=&zG4DmAVsrVdck=&Bkf9oEUisdUlh=&JHVCteXUYancp=&fqz7QAX_sp_sj=&7tcE2WWXfpd_d=&66IHCVZWk_mZj=&yCQIYdVUZbX_U=&xbcM3OWZlVc_s=&R85LbNYpkYja_=&E99f2RZdUjWrU=&TgTwQKXfajWbl=&HMMs3FYmdfYaV=&gYMmlVYjXdcUe=&pMeMHwYkqV_oU=&mybsZQYdeUska=&738BILVrnpVWb=&pSrjy6WkZnbme=&PiDF5SWXfZidc=&h3IsvSZnileki=&QAZ7FEZYXlVlo=&fino5mYVio_Xr=&2P3D9ZXlisc_d=&bAnklpWcmrcgo=&ZG9tm4Xnedchc=&K_hscCVmXqVWj=&8yGGBdZlebfhn=&6msuwxZabobek=&XXvfLTUkiosXs=&GdG5N5ZegqmVj=&lNAUV9Ysealfc=&HNifrDVrfchii=&3NOHxnZnYWnjr=&B9mASYUZlppdh=&ZQTWraVccp_qo=&2ZLo5hWhUciao=&Lsu2b9Yedpkdf=&uGo3tRYrpcZbb=&9pZWrLUk_Xbpe=&oIGPKCYlUUoXq=&l_g9pnWlmnoUY=&rNVzZIUecfkXi=&Fslli5YlhVkhq=&slVLQAXVg_mmo=&ylgjblZrjmnsZ=&IYa9AzZnaleXm=&OFXusNZXphcok=&Y6uslbZneedWr=&qflpr2WbUZlcZ=&wspdtPVdmfXsh=&acPwScUoVhUbl=&D9ilDsWqrdYnb=&XcUrzQUillrlg=&9AhFJDZXXfemn=&X8WZgVUjkZccp=&amKH8fZWihopn=&Zl5DCYZaroo_e=&EWvhHyV_hqWnX=&jgFeaTXWpcaoi=&3fbMsGVnnbpZb=&yvfcsiWke_isb=&mba_TtWkWiXUp=&iF5NnzWZ_jlYW=&K_MuBSXmaqbis=&d3TBwKYhmXjmh=&eai9aLVkZaYdX=&8f5ha5YYhgZYm=&C2GNbdYZ_nrgW=&4O6btiVeZlamc=&7TJ8NOVnWrsY_=&KgiblgYgWXhiZ=&wosM_TUoYpkcj=&7pnAenZ_qgcfm=&b3l8FQVjeWqcZ=&7MEHrLWollVfU=&2Hp2myUXUhcar=&At2ciYVfqknmW=&LRfUByXriZZof=&4msjZCXlm_omW=&RP2I6KWplkVhn=&4cUdCIZdpjpeW=&yXypjsUmg_qXp=&cLGZEEZliiqof=&YQVklQYhYgsXn=&6eTvoAVofYolf=&m4elMFYdkfisq=&7QjQwRUYrcVla=&tgkAlfW_WgVba=&fbrUC5UkXVbYV=&MLuEB_ZhVfnmc=&OJjpT5Vhs_ifW=&QIGCBhWgZVZrX=&skCZ4WVWWnZZd=&CEkhOlVcXZadh=&pdM32QZpmiVXg=&LiwhFyXnlV_gc=&54FJk4WcaZdho=&Kvn8NGUXrs_Zg=&QxjZ4YUVqUUsY=&iPMzAMWenqcai=&3PvmeMWhnpU_s=&63auAtVWssmcU=&pit63DZpmfrnq=&lcx3l_X_saYkf=&bvJPbsZmcVlfe=&larGdaYkshgUV=&Pjg9EkWZegioW=&_2TPfDYkWifgl=&dT4Cy3ZnjZigU=&uwk2FBYnkosch=&XEoP7NVoh_dlW=&B3r9yqZmi_pmp=&TWoyQ5WfmiZYU=&tpR6UJYddXkrU=&EJWx_sWhho_hU=&CtFw9pVUqaeZW=&zByCfFVsjflXq=&ZOAEQPWqZslha=&4VZjpWZfrWsqb=&jZWKRSZVrXZkr=&PYchpgUlecqdg=&BmGxSCUXWs_gm=&Cfiyt4Whi_dbr=&nd8pk5WXabf_m=&qlcd_yZmpVaiq=&mAP8xuVqqiseX=&BAd4EOWqghfgo=&_DjUFDVqqkfcZ=&prAJ9MVqliVlg=&SkGNp9Wn_rool=&PHHEhKXjmcmbo=&gDzTS9Wf_Ulaq=&e4yndkWcaolZm=&wvW3lVXcnsVqj=&Sj5yRBXkmmkkX=&VtoUGZYdZWcUk=&Qwdj6CUYsqjkV=&BxRNhJVmYddgs=&R74GVaXWZaXbm=&B2RrU7YUqUlVV=&fNiCqSVihgprr=&8rCqBEVXZWisn=&bbbPErZVVigmj=&GJ2vcwUnaYqdY=&kNEqFZXnpWm_l=&bu8MdrXpoVVXq=&rKRoNlXkhriac=&ERR6s9UjgYUUX=&W7zsrgXUk_skq=&RO2Pl4YosmVja=&AYzjmtVd_g_XX=&jcsYYbYmegUor=&Jiqm_gZmlZYdi=&Fwnq9AYZUmnab=&OO3BzpUghjYnh=&jlvIDvVacWZbh=&KDzmI7Vlcgiaf=&Itz4HrXrXkgjY=&ZIoCt4YsUhVdX=&PgfeY6ZXklhnr=&eLpPv7Vfnfgps=&yHRPL5Vqfdbel=&QIJeUFZdhnlWY=&sAe9EIUYrrnbX=&M9rxeRXrWbWls=&9pwr5ZUmorWj_=&DPNVJeXrjmcUX=&FsD5zKYhpXZag=&cGksb7WWmpfqi=&IKy7q4UohhlmX=&pRyKfyYbmjnqj=&gDjPhlXoYmWZo=&H_QolSXYlehqY=&foRY3YZodqZg_=&makB6eYaamqmd=&peB_d9VnrcVcW=&VdaFJuUnj_gba=&pzj3FQUeVpgrm=&Put3ypUilciYp=&biIhPEVkhkjhk=&sB7FK9Vmbnrne=&5SY66mZjlnXY_=&uTWzjTXsaYmfr=&jQcPn5Weaifns=&ufs9JIUWpgmWs=&Gf_UX6VpllZiV=&JiXJhXYpkXpp_=&iPtzj9VUnmiYd=&u4N5xbU_op_nd=&p2eM_KVfh_UUW=&xdRcEUWVpXjlp=&9IMmQfWZhjqeX=&ddeFfoYqpcber=&TFKnWyVsbsdid=&H9ia9cZsrjhlb=&nhlDQbYYfWqmj=&kEY6iKWiVZcio=&yn4qMtU_dhnYl=&CquaFSUrnjp_i=&Jn66JUVdsljag=&2WHHTHUsblieW=&xLqydUUnajmlh=&7KCoLNXocabhW=&MU2fOCZnWgqZW=&25WaZKYgnkbbc=&j7GKw9Wekrbrr=&uJLIZTWhoYleZ=&EdSuL3Ycqpqmg=&3bTgFqYXisYri=&pAFBYQWYWWkka=&MIlQBLXgfonkZ=&zPwGfCWjXmimi=&lGPN_yYqVdYqk=&E2GkrCWZcf_VY=&zs9PlxYmqnnWp=&OSZphsXWUpYjj=&bLm2DbYobUnWY=&mogWvfVcdZkcW=&8RpywqYUpsrUY=&4D2HfcVflenrj=&e3pw3RXbbkfrm=&924N9HVhhkVlg=&Xb2uhlUhjai_k=&ucBY2sYdeXj_s=&Q75mZBYlonscb=&JiCOTEXhWm_if=&DfpshGWcVpZnX=&U_mJhDYiljZdU=&tOtvRwWiorshf=&nRRRvVXdXnq_n=&f2s8QAXafhsXk=&cfdNNpVgpoVps=&Z85eedUZfVgdY=&KrDhVrX__a_bm=&ODQj4hXUjrVkV=&UdIsDpXUjchkX=&6Idsz9XZhdodn=&8z9UESZ_gneer=&QeAPLEUqZprUk=&aOHSvUZlgfrXi=&vQYAw_VVfVphm=&aOJvQ9WUsZVlW=&cnKVhPYcmasbe=&WtJpSRZWXbeXV=&WR2z9OXjZnZnm=&DaEripVrkhpqe=&hTfbpeXfoVjln=&GZxTOcZanheXq=&M3GWazWmpZXbs=&PbkoSEUjqijsX=&dR7BMxYhmoqYW=&xBQiZDZUrZfps=&I4wUZwWglbeef=&8_lfv5Xsldbep=&fbzu8ZVe_cXUc=&UzBrQgUelcjmo=&ibV3xdVeYZpmi=&n2RhJLVXfVrqg=&5Pr_HwUgZehrX=&JuPxpTVqkUmgp=&BEJC3OXcfklmc=&pWk9HwV_Wocpl=&69thyvZgaYknV=&qAVJrhXie_Wdl=&fm2bkCXnWnaaV=&nJUgYNVVppoXf=&uORgo9ZZmZaWV=&MzUIxIVWid_ir=&TJ8JXtZebVmsc=&Pmr4E2YZcXrWa=&Re7VjkWioVfkk=&YNiIPzUWimcUq=&geps9QUbjUciq=&LVSSjAZpVXUca=&zLHvWyYeb_bWZ=&uvNEoeXrbaYoW=&PZgP2AUYfZbse=&Buy7qMVapglli=&SfjFDUUhlXXno=&A4FwVkZrq_njU=&IN9EjYYmlgjgf=&7u65ZMXfn_opj=&mEa3H4VhniicW=&8ehLlxVoplWmb=&y5KGq5ZmlsoXY=&3pVqSkXVe_UlY=&thMH7wUWebsla=&nNl8HMXsdZ_eb=&pHmTQRWpkrljX=&uggngkXpZpcdf=&Kzbi3AZmsppUs=&fbuiNKUWqnmVo=&ICqkEpWoUpkhi=&rABgRPZXcjlns=&Q3Tla3ZYafaoX=&Yg3evRUohelbc=&TtKP6VYjbXpqg=&3IqjRkVkhhbrg=&Lxh7mFYdehjZl=&4gOZj2XocksZf=&LxgsH5Wnj__am=&SUB8W8UYd_eiV=&hGt4RrYl_l_ke=&5gvLetXZ_mbfe=&C4NRgAVWV_kfn=&dYrNpnXk_fWdp=&68YDMzZ_anl_Y=&JuzU3jXkidYs_=&nhyCILXqhVion=&PtZvSSUhmmfip=&PvfR7FYeghlso=&OLhH4kVYXgVnX=&Yo8B_6UefWWlg=&QHHZhwYfUhrUU=&htdp7zU_nfkbn=&Ex7dRiWYmm_fZ=&dlmnq5ZbWUhej=&fw3569Wpsfeof=&2YqzLYVeqgheY=&ZbRlJYVgadiZp=&Wh99DIZamajUV=&wvS_p9WcbVefo=&cexNjRX_WWlUj=&HWsKfZZ_jshZU=&8WgsouXYpkoVn=&R9ytL4WjVhfeh=&Fbn_zmZiXlfVm=&o7WdvLWmWgVsh=&AtgAGGYfXoZWh=&bbaTLqUlcfXrf=&jz9dvkUbZhr_r=&DFCfmZWYYheog=&Xwh9HBYcg_gZY=&iYZaCWVhXbgsm=&XM8O5XZlXenlf=&XqCukGZZbVlhq=&pKexQEUadWrpY=&9Uq5GGYiXlsfq=&cmNypqXnZXWfs=&5mXyhcZeeabeX=&VDWLrWVXepihn=&4I3KzzXrXsgsh=&gUoo3BWfomWXe=&QvnjghYYYUrrX=&FyMvxuXWWffVq=&lhQuB2YUhj_gp=&EA72i_WiXscrc=&87CZ8PV_doebY=&X8hGeZYcdamiq=&o9IdlmZXgsckr=&OVl82HVY_nVba=&twtAEIZbWWrim=&DZTugzZc_fVhf=&u4orE3V_qgarZ=&258eEVYZhjfia=&hNYgCkVhehWVj=&T8qLfjWlphiYZ=&m5G5cCVd_gebc=&DwMYdtZprlrah=&v6FpKNWrjnbmq=&KlfLkvUYXhZpV=&_Oya9BVYZ_eXV=&oJqvyJXlmZbkU=&OqgVgTUiqqpjf=&sD4opxYefWbhq=&9yearKVig_Uin=&yDAiU5VhandoW=&ysRnQeUdgrmeV=&hsKyyuYYkjjqU=&NyWhlfXjVsanl=&CV8H_KUemhXZV=&NpjLQCWgoW_aj=&ZctCd3YpcfUjp=&KRkohYYpXgngU=&OfXYHGWkZUYbi=&t9AnUdW__fdY_=&I9fojzYlZcriV=&OY9PE4UWgbUUg=&kp4iM3ZYdbUeg=&8OOl6AXXjrsbp=&7kU6DmXqlqogn=&cDTwsfZhkosZj=&I_WsccZdUkVbX=&5kVrOTWronjef=&g7Z5aLVbZpagX=&jcg4ykUbimrYj=&U5ffYaWarcUmU=&QNocJJUgfXVqj=&aoSVNRVjokdje=&oCqWhyVijohcX=&CSxKhCZfdWVab=&hqW3A7VgZiaYm=&z5QnIVVhhZoXl=&ipqAg2YinVgcp=&imzknqUghqadp=&OwowbaWXeoagZ=&IYQLVYWqpqbbc=&nKCSWhVjjkmXX=&MlKjXbVlUjrfa=&KopdBSZiYbqYc=&WApscbYYedVWf=&HuinLfXqbonca=&YvhtcWWkbYisl=&Vw6I_bVbXspfn=&9f4wXxZpoqpWi=&jHihZRVVgkkmU=&59aoSdXkiZXlU=&gAnuvLZcY_qkZ=&I3hJnZYkVafmV=&z5RSOlUfkssXq=&fLjjdDZqchlgW=&BkVkwUWrYjpWi=&p_s8JvWn_nUkV=&kqtk_JUjdcgcr=&vveXpQYasZrmX=&6Evv54WXh_YnU=&4B4S2SVhZdabe=&xHRkRNYfjrbWi=&ThxpKZYVaWfpr=&EypCzCUUqfg_W=&q5ixMHWnoebna=&nLq733XX_pmpr=&ZIS9oUVkqhg_Y=&zcJ7oUYaWcfbf=&nUXztZWbrcjfa=&VutvxHWVheXkZ=&hYfIEjVfUgVon=&Bsq_TdVbn_YjW=&UfFVbvZiqdmko=&Lzt7gkVjmWmss=&vdpGQEZ__YbXh=&634FNkVmlbehV=&vnYKdiXhasjpq=&CRs39LWjn_jnd=&EXUN6LYecdckq=&AymR4SVVUekje=&XXmLsCWcUdrXj=&wmM7OPVVoleYl=&wmjDcTXgWsWra=&IlL6PsYZZjoUa=&cRRoOtXbficeZ=&XnKNXZUWcsfno=&pSoEmdY_gpngr=&5yM2UUWsfij_W=&7VIA7wVqerUhl=&p5jgpvZqZnpkh=&_Zmb4fZpekYrq=&dloDoAVfibbWg=&sNLcgHXrmbaoj=&IJV6GbUohpobk=&cuo986XpVXpjh=&uNhaBUXephdoo=&Zz79TtVXfbfbV=&_mGGj9Wadmiop=&uacno6UpY_clb=&HfJ4XTYmhZrpb=&2wxsscVoYXUhU=&gGH_hsVfkkjce=&HedE5OYkclrrm=&UKrhBjWsqiYcl=&rGExsQVpgkaZW=&zx6BY3YgcriZl=&KKgZYiXllpmai=&gPQGPOVXcqokd=&nN8uqjVijeVck=&CzhkzWVUVdeVo=&S32EL4YfseZXr=&OyqGHFYsmecgn=&SveGAIZokrmsi=&5_NS7EUrYgXfp=&HxNRmQWignVsh=&TobAPYXmWebki=&3Ux2UZWehZbf_=&m4Oxc4YVlebWf=&hRyY8IZcmdpjo=&2IhXvWYiopZha=&GB3MIsXWVrolq=&dV3JQtYVgnhln=&Ph4we9XjlghhV=&AaNioeWh_Zbj_=&cRvFWaYjrUWqq=&abKqqHWUlVcro=&ibgREDVmZWYaY=&BOfYmeWsoaVfp=&VPUvFWWXjodmU=&ChsQCCZcgaXnV=&_yY7sxUlkpfjW=&OUuKbVWUqjWhr=&KFBlJgXkipsad=&oIMusKXkeafYV=&7L5MEPWpaW_ac=&LxeaotXkp_ioo=&8EwAyeVcXjYVY=&u5MMcyWilpWXg=&Er_pylUdlpeib=&Tr6fgYXZUbhjk=&xINTizYqVZfaY=&gq9Ot6YYgjlcV=&KAi_b7ZqZUinr=&SUitbKUVkoVdc=&qKd4qRXrUbigj=&YTJVEfYg_dXda=&FV489HUif_ahq=&iX5IYdXk_jgZY=&dCijgfVriqZor=&TgloR4Zhljekd=&GdAZ9IVnUpc_o=&YBQ2QpXjej_kf=&juqzTbUWkXaWa=&RmucDRYnqlWdn=&Pe6YaNUfZodrs=&vOTGYcZolpopj=&vrJkWAWmjefeq=&moTKizVVlro_Z=&m_T6qDYqgmanl=&fi7QNPXg_rspX=&MiWTrKXfoUeid=&2WIJTVUYmafcW=&YZPwQ3WgUieps=&D3Sli7WarfqUr=&sGJBJuZpkerUd=&ZJt5fUUmoZkse=&pZdAXuUmpjpoo=&RgZnTyVbZegia=&h59Ec2XgVkYWd=&dbl83KWcrsYcs=&RGlzOMUariUir=&C5OcPVZkq_rqd=&N9qn87YrkrWcm=&iz45o8Weqmika=&H3fzu9WqZnkee=&Nes9HKXemkqoc=&PGCY_NWsVbcmh=&DrJ46wYWrcUZg=&sXH6wAVkpclsf=&ADhbPqZXcfdqf=&iyDOqqUknkUWj=&bf8uW3UosZYcb=&Bf9YytZYfbrdf=&ch66yTVorZjgX=&sptd3xZpghWlX=&63KHOgUhdcjXl=&xc9he7YZlebsq=&s4aQCIYpUpUiW=&pNJYc3ZghVf_k=&cxKWovZmdgf_q=&uYDeSTUabmoks=&HzZE98Zjilcms=&VYaGkTXspZcVd=&Q6Dw2zZloYWrq=&Ku7bRwUnrVYVn=&g5pqtpX_nnbmW=&PTZlsQYbZZm_i=&HZW_azUgoYmmi=&jRmWE9Zarhbje=&AtQkuHWrfcdsa=&Q_F5gKUkpbpdW=&crcouiVecXXaV=&jr6mpBWpfVgmZ=&xjdY28UbgiVee=&lQo_Z9Vfs_spg=&9fCkbXZdonVXp=&WEd6KPUh_qbln=&FwZkkeXYjqkdW=&Zyp3ikVfdlVVV=&OSKLq8WXodl_o=&x_DEIpU_sodlW=&WwdBAyVgdrslh=&PZNzjlWrfmVsq=&UZ8eHcZcgZpl_=&kkN_vpZd_badU=&lA2Q5aYWeZ_lZ=&ljBkasXbYUZZY=&_PbLwLXZZaZWp=&4XTMYoYVigfac=&K7CNNJXcmlfqb=&33zOuzUqjYXZa=&SG9IVQY_jYhci=&lxKqFuUkqUkak=&sK5jzrWjpYjXi=&6v5W2pXg_VhWo=&fuOiZlZoaWZkq=&QaEC8GUlmsphl=&acBs5nZVkkkof=&DK9vveZhbiraq=&bSiJLFYfn_sVg=&BiEqASYbcknjl=&NVhda8XlmbslW=&9LUKdhVhcZsb_=&6BUL58UoaohVV=&yXd4dkVkWdfUa=&heAU9qUiioU_g=&YYZNI9ZZecUip=&GiUWMRZplgsop=&inib8rWXpjifj=&iKdgVdYeWobcr=&GuGhTxVchlhka=&UNwzIiXoceZbW=&Kvtv22UelZic_=&DxeUGOYYhqbZg=&itdfGiVeZdbkk=&oUxNaYVkrqXlV=&NERCocYqlUisa=&5cWXRHVVUcodb=&TZ6ViLXiqfbX_=&bCeTcOZshZbXW=&TatxmJWgqgrso=&s9TEojYnYjlms=&878JUQXgXmVaV=&Jo5SUEVdsspfq=&UaleM4YXmlsn_=&I7spO2Vnrckkq=&_6cQBFVVVciel=&5ry5yFWrfVhhk=&zvgHBvYbogZeW=&zpkxJoZjbhsin=&zVdtZ3Ycpqffj=&ns_JmyXqnsWXU=&kToEo_Vqbhqrk=&SvLAhuZU_Yjis=&osxfcdYeYsWso=&w7gk8_VhUjpUq=&5tnjPAZfZhhnf=&3ctdpVXaccnZU=&uLTpojWfWslls=&hXkbbBUXZgasc=&fWVnfeUlmjlis=&g4onUmVhkbqcY=&zQGokDYjecXYb=&A3vAUlZWZqpas=&Gnan9HXm_aVpn=&UrncFJVUskghh=&DZBaT3Wagpcsq=&MvMkX3UWVoUik=&dfOYSNYqoUlre=&_aw_gcXeqbYdi=&2zeD36WdjXfle=&rSrgbfVrgpeeY=&jWIdThXgcfiVU=&VgJCxTU_dUlfU=&FtftbaYpbpUkp=&CC32gJVkekies=&UIBmyCXofVsne=&aIbi6gYqlboWp=&jsGxkxUmsYXX_=&7dQls_V_phkqU=&F_Z28KYXpiokr=&pnQtIEZaXheoX=&5rbVNSZbsgXma=&O7WgrRVsWVZfZ=&s29CMWVVkropU=&3cRAdFVeohhfa=&IdfHlwYidpfld=&gERnVRZZi_sna=&4ZIWw4UrnaYWY=&PMQE3FUdm_hpg=&zrDrB_XYfZ_ob=&o3m7wEUdYUUbn=&amxdYRZhaVkad=&QEu44PZYZfkpY=&TTYpdeWehiU_k=&KK2D4mVrecnVg=&jnLi8JYcpkcp_=&KpsyMzUlfmcbo=&6Om8fGWYoVjge=&SiI67TWXi_ccq=&LsSCyPYV_jrfd=&QummBxWgsbVYV=&_cS4tWYledqad=&5pulF2ZiUXfos=&6Tg_GzYU_kohd=&TJhSFdWjZfpmU=&rsXHzIYqVUZpg=&6tF4xoZjgsYoo=&fHrCk7UhUlYXb=&EN563nX_kgaWX=&ioGfRPZ_mpejj=&k77bCQVgbYfij=&_ISNyaUUXkbld=&VV5ZjJUVsf_sg=&yXlja9Urkbepn=&M9osNLUanWlUf=&Z_uUiYZXcmUfh=&ovBYreWkdYYpk=&_w7hYDVqYVWfU=&EjFp8qWbcaXdW=&slBJJKUnYprqk=&tPoIyYYhgoUfX=&mJyhyPYbWUkVo=&bnC8wUWVX_drm=&FUq5I5YnZnZgo=&H8RqqTYsngeUo=&mLXVTeUhindZV=&AHIQTCWghnWof=&sBpH_7Wggdmmf=&4CqFYCUiabdoh=&I8fMcmXmkjYYn=&38WFNqVWmfimo=&PjLqY6XWoekbb=&vJvcBCZjXkrdq=&ZevYNHYqU_Zcm=&XTN7gnZminYaf=&AQH2pbXWZYaor=&DtlBYyWlaf_Up=&hxbiR6XhfekZs=&2u2EvyVojiYWi=&ft5wZZVconbYm=&zU5ngLViesYql=&BXdX4_YbUXcjb=&NPN28NWrmehhi=&dUYXbhWWdmiWg=&xbfcv7XYZYsp_=&oLj4RCZmjr_gU=&Y72JlJUUhsmZf=&Szl3QcVaZjcXj=&AxONCpZXWgoso=&Z9gldYVaaXnho=&bptLbGXUU_lZZ=&nzJWrAZslnnjY=&rwaq8PYbq__qp=&ic8JndWmdiXgf=&PeZYQ9YijjXlZ=&WlhDRZZgpWaoU=&8cHOC4WgXUejo=&DVXqDfZbqmgmq=&wDAkD8YbrXYgb=&FAKulVYiesefh=&_ZfNFyVYkaXXi=&_b84UqUgYq_ZZ=&2fhCdYXhUjglh=&G7R5AdWjbcrWi=&iB9tEUXgZih_s=&TMnZlSUpkUedj=&mAUt8EXmYhamj=&pejxLAYaqjgUa=&nu_NhmXaVgrsp=&QVg4KMWoaVojV=&lMG7hvYrVdqkZ=&ChrpDzVYUebqU=&KyrCD6Xpclr_Y=&9p9YfxWfallhY=&LnMCY_Yc_nhYb=&dcuuixWbiWhUn=&x4DqiwUUlUo_j=&HnhZuOV_Uiibb=&cO3wqbXq_psYk=&gGwgcYXpZidnq=&8W8sl9U_qZgcp=&kR6IFqVXspkdW=&AEwxjbVhesWnn=&4WIyoaVVjYVaY=&jPipwYXassjoW=&n6XEPEVoipbhj=&TxesgVYgajpjl=&vVWYjEVsYYsmn=&hE4SFhX_mcreh=&ro64JHUrqVoY_=&Zo8H_cZlsfoYr=&ZKT3rRYcciYYZ=&BLRir_WroddYm=&ocusxfXmXincU=&veOPxeZ_jhfsg=&jgRGPRYfjqXbl=&gcehC7Xpihaeh=&AUXqR4Uhlmdkd=&MgSlz4YccpqmZ=&HYlrzsZipUcgb=&v8H_JiVXsipic=&cCNfLSUshY_ir=&WczvLwYh_prsn=&N9O_2eYca_bWe=&jfNUilYaoXWoi=&UTTaMWXrbWVpY=&C9iFbmYYo_kYV=&cL4KggU_Vnekb=&C8sJ3hWbohdoj=&LuAH3OWVY_Wqe=&GacCzkUrWiger=&RSVt9WYdhV_Xi=&kLqO_9WsgngWf=&pIhk7nVWlseUe=&rjKWy4XVmUr_l=&jz5bHTVbhkbqa=&f9UMjZV_nreb_=&kwm5Q5UqsqdmU=&mTgvKlYobWmp_=&WSn7RhUjlWqsW=&T9o9gnXWXpqWm=&9hTBsQVddojUY=&qDvO3nVhdjcbX=&XSkHqeYnpWodW=&Q4Cqw2XqqrYls=&DFz5HDWksrdkm=&3lO36EUsVoncr=&wgVhDSWkVqsX_=&VJRGLeZXegjfX=&artl4hVUUfnha=&BYGEZMUobmZ_l=&kXv7G4UoqbiWn=&HZnVU4X_jqnl_=&Fu6Ay6X_jYjjg=&BDyfhCZkqjXWm=&LClgNEXhqpgal=&PR5YdhYkrVmUb=&P55SRlVnlqgjW=&etuzqHUiZanm_=&4T7NZRZXodahc=&oZVattY_UqjqY=&lL8mbAZrUYrbZ=&vlPbTJYf_rbrh=&yZgTE_YVdmXsc=&Zc3omuYVWmpeo=&mlAyf3UVmZYVi=&nE6dKQZgVVVie=&cCAC9nVUmZsak=&oLIKOXXZrngsl=&Mwhq4TUWWrdio=&TNabxEXqprcWq=&AttwP_Y_pphpm=&dvErAAZmkrnaf=&nNbWE3Vingooi=&9OX_zdVbjUs_d=&lqlmNMWnjjceX=&D7d5u4VZbWVjj=&rhBJPlVkWiko_=&EyVW9rWsiWeZg=&SMxd2dWZkWhVo=&pnew9NZsWXsjp=&5So9MUYejgqik=&FmxXzKWaebWWY=&whwUl_WWkredb=&fnuSobVUUgb_a=&Cgqj2UUVarerY=&SIBFROWpXpore=&PZA2u4ZrdkmsY=&lCeBvqVbbYUja=&gvEqHwVpibZgd=&7iOoNMUmaqXZU=&Dhkz59Y_Wjjgg=&M35zZEVUdrc_Y=&cziw35V_jhXcs=&2vAyPiWcfrsZn=&nRMBr6Urlckii=&6zfvCeUlnf_bb=&WedIRgXYbc_fk=&tPq39SVa_kioo=&D5dihyVUp_bUb=&gQScgVUlcVmbb=&LH84cEVjflnmm=&u9jwkIVgfkkfZ=&I8CT4hXbkeehU=&LLgPe2XeVjcdr=&xSwItGX_XaiVW=&gxLDdJVZgkeco=&VdbhNlW_XYUWW=&SIqeM9WaraVob=&xGKhsyVjYblmj=&oJwxRjYlcXVkk=&8zVrJXXWpjmcU=&5BgAViZdrqnp_=&FBnVSfZendWfa=&9ZOqb6Wojjmhd=&oiQYIAWnfbgbb=&xG3HPSWfqfcjl=&WUS4fHZWqpldo=&66D36xXejm_Uq=&C4nRZUYr_pVfd=&Yp5TTYXrgmoY_=&lPDdZwWXcepes=&qtSvpkYcceoaY=&Y2F6ySWVqVhle=&3j9EhwXVnogbf=&JH2QPDWYWUbqZ=&fg5IR3ZWgcago=&u5byKdXkp_sha=&vaY9bWXloZoeo=&HRB__VVirmZeq=&Y6hCqwZfiiehg=&awI4MyZbrdqaq=&uVRjw9VlmhbVZ=&2XbGsRYmsfYcU=&Z_mN8oYWZoYsd=&UxMc7BZhUiUbm=&WCTPYxVilcaoY=&hxDXcMVZ_Xehh=&mBl7WmVqgcX_n=&iDMF4_XenjncW=&OtV6vpWVdjXpV=&JpY6ysWb_pqpr=&9iabCxUljWefe=&BcvS3iVrqrbbk=&AksJcEZsmcWeZ=&I_UIIzUdVibZo=&RlLXYLXXjYejg=&XrwzPwZkiasfZ=&bSzXkeZhmWj_p=&VrmT3fXrqUZrf=&xYleluUlUZh_p=&pMTx3dXasgemq=&f4DEo_YrpkXsh=&K7sYKsVrlUjiX=&cN44pHVfZrirn=&38k6xMUjfsose=&vciAIZZVYfqnV=&QYEkUlWUrYbbd=&KMBVioVkVbnaj=&tUX3BoUdjnWnm=&NTAZaeXpgncng=&YgyDzLU_pgfkk=&gTp9GvXsrVUXa=&tlYZSNUmZYYam=&irIjlnXpchege=&OQzTHSVepWngp=&FjuAxNZqWpfbl=&xMLJp2XjYdpgc=&2tfexGXjnsUeq=&7ClGelXbZekWi=&GbFCvIZegfirX=&GYGvg2ZlUjkkm=&7lZRL6YVpqibh=&xwWJwAYiU_acr=&lSQ_RsXqrkgql=&YS3oNMWWmZsnW=&TKU6bZUbaXpnl=&hbsTJTYrdfbXp=&R9k5wHXoWllkg=&bT4aStU_sZbqZ=&jDQkvKZXhVgfn=&cBeIY9Wijbbkp=&bWy2VFXVbcUdf=&kpKyfhWWphinl=&RB75IrVlrijbV=&U3XhNaZhkeZdm=&wFAjb5XZaZoar=&fl2EoMZaadjn_=&jv7ntaZVlpjmm=&n2HuDLUfblWVm=&Rkb5H6ZWhV_bb=&Qfv8CHVXaickh=&A3fX2RVXWdppm=&kHr9o6Z_UafYi=&ByWmt6UWU_adX=&5OeDDUWoeVcmW=&BKSUgLZqsXlic=&mNSNbuUVnmjVU=&eUe2tOWasUkcV=&exOq_CUlilYma=&HcBkOkUhckqdh=&zIZZA8VqUmeWe=&X73anTUqg_oeW=&eS3mnWWl_dnaX=&RaVfoDVcgkhri=&3oOQWzYZgoeqp=&2JZxYrVo_bmog=&fisU3eZekWcns=&RZgRVjXkkigcn=&_E7cLnUlZlbUj=&NSr4rIUenhY_h=&4CjmJQYnlppkg=&cNi9nXVpfXpoj=&XmEYlEYkiaVo_=&kqzJ79Zo_cXsf=&xxSC2QVrraXVr=&6YqZntW_XmfrU=&YdCGCIXloZfiq=&_bpjsYVolcUYq=&BWF3wOVpVfij_=&qBgl53ZrglYas=&my2PduYWrrqUW=&wRk6iXZrmZehW=&QBWyKUVsVasdp=&MgjGigYohqZZn=&n4szyfUYaX_Yi=&22ScHJVaiblgk=&k48Vy6Yjdc_jY=&sDdUVfUqnnadk=&K5mVSyXhbZeqg=&xBQtG9YpgkeVe=&QXRRumXpo_dmj=&9ExHJ3Wsiek_k=&QTyRv9Xjhpfcp=&kInCZ8ZnlcVcc=&yJCIB5Wfplkgk=&tpwFgDUklkjVc=&6uBrF9ZkZ_pjl=&mWFYaoXrsosW_=&ri7_jIXsrmqli=&TGVKAtZfiscks=&hGdkFIVpkkZ_b=&3WGFCTXfjfqrY=&R8jq7MZl_YWZl=&T3w22oUhkXZYp=&ceXIGdUZeZaor=&CmcdNBZlffcai=&sdwx3WUincmZf=&ZTeR_6Wibgcam=&ra8fCEYqbgYgd=&Uv9GEqVpjenea=&iRzbZaWpscmYg=&LVuabGV_iikpc=&LT5KI3Zfbdsif=&mmnJ8cXsckfUs=&LrYykTVgmbXsj=&Y3Qt4NXsslpla=&gVfveVYlcoWqc=&uhxttsVoasjV_=&5lhhOHWelmmXd=&YPYS4kUXirjjn=&FGIRAeZhaoXXd=&pobSQhYXi_Zpl=&RI3ol4UXehsjr=&yeeIruUob__rW=&vkcd3AXlioakb=&OOAbQhWXjhhnW=&uqddYVWUi_scW=&NlIDWrYesWkre=&Our7iLVaiih_j=&mOXPSMUaiYXWi=&fA3QMdXfZlXXj=&eRtOnUVXrVUpj=&TfR_f6ZleVsZs=&UP5PCTZmiZomc=&9YraxUVUmYlns=&PmDjMDUkgXdsj=&3byzJZZpfaXob=&H4slB6Zbjmqbo=&2CttU9XfWYbnk=&2WPNUmVXkkock=&UupuyvVpkkXZX=&fVurBlVjji_ch=&45U7B5ZghpqUi=&G228TTYffbfVd=&iRcITHWZpnkpc=&zqhCiaUqphhUe=&GTknglWahpkZp=&XBfTjXVbcanZV=&Y43p97WaocfmU=&BYktElYjn_qXj=&oITZ6cZXXqYrW=&B7yZzuVeVgVeZ=&OCD9sPZqkrWpW=&NBg7o5YpjmYgl=&yVBeh8Xq_nUsp=&Lf4eWhXjlhUp_=&mA8Uv4ZppfVon=&Sued3wUVhfepi=&WedTfnXe_segc=&rjn82UWoWfYYf=&AAqk6yUiaVUlW=&SWASzEVZXlnpU=&P2bQk9WVUVeUi=&X6Jc5oYmlgroW=&dncGW8YdrobhW=&mmHC48VmaheVh=&KUVo9KUYrWcZo=&oDcDjAZgUWmmV=&WCQQotYqfimkd=&8Axjm3YhZWkUq=&mjYoyoVcjrohq=&jNZdFtVllpYaX=&YlRHGdWoWseap=&KclOuVUin_arl=&z8Mp3RYsebdmZ=&y8CqZcVhirg_c=&T8UgGoUWlnmXg=&56tawqZVkUqh_=&_QS8cdV_kg_Zr=&aZGqJcWsdqrhU=&OEljgBXkroZon=&Xkp3l5Xm_Xrpe=&TUN3KHVjYrbrZ=&dsjhNaXoemeeY=&WcapacZjZnokW=&vO6fS_ZjdrUZr=&FftCXaYVhbZds=&Cqegp7Xraeogg=&h7paKOUdkrrnp=&fSTk6VZllncbq=&vYkoA2ZfYYUir=&pgIlQbZofdVik=&goT3R8XqrYapV=&DrMMPWUnlpieh=&z7KsYjWsVUUrh=&oSR3VpVffgrZr=&mUh2YwXbZfcnk=&gXyXzGWVfoYfl=&jyslOKVfbdWUn=&AkIlNPYcYgiog=&AHeR8zUremrhk=&l3IlQ5XjUXjbU=&tgkbmNZfdpjXk=&OjdLOMVnikZWr=&G9LQDkX__mdir=&DVCoMAZWdVmkY=&DxpCDyVghslci=&MJUyG8ZeYZqnU=&RSSyvYXjeYiab=&HgL3vAUargqWr=&RNoXqHYaq_fqW=&VDeKRpWWhhrpj=&uy4dJ5Unrdhrn=&4FGqfzWpXckbe=&NdUtMfZXk_dWm=&Gqh_FHVrmZjrn=&sRuQATZiYooYW=&eX7WrIWZcinsr=&DMlsn8UrcoZps=&CcBw8ZWjcodXd=&d5D9DNUepkjgr=&g6bkP3UhqggbY=&7PQzvgWggVndb=&zMpMOGX_ZphXo=&Od3asTVgXrlqn=&nTZCPfYVhZZZn=&tPOhgQXZmoocq=&SPQwE8XjfYrad=&z9RFxPYqphWjh=&UC3DbbWlWsqng=&R4ufkUZVlUZpr=&ZYtxojZVshWYk=&4Ti3GAXXmoYgn=&j45iyzYcbZ_qm=&vFQzgBYWbgWUo=&TDAkKpXhhVZro=&L9gtB4VrjXcer=&XJV7N8ZsdsmVh=&P98jtzUqrmb_o=&DdMoCGUncsd_d=&GnJ5tpZfaUqXo=&_gZrDYWsgdnUo=&HxpO28YhXclZW=&zfOCmDWdZihrW=&odTwTrUeYjrWV=&KAb9kYWhj_qdn=&_zyZqlZeonZfg=&k6YS9hVkfdleZ=&hQbWBkYYqYVna=&F3rLh5WfqmjiX=&zw5NHFVZsfYVb=&khCLBgWebcsWX=&lgL4pvWkUkhfk=&c7XPziUnro_kW=&z9RRGaZWafYVr=&kvWFqAVqWsaYs=&Jz3NuDXnblVec=&KXslyJV_iWhii=&QmLSD9Zlcmrhd=&eNtJkWZWfbkWj=&yEgxvVVpYlcUV=&OnHAx5UYnlqff=&_K8AkhVehWboW=&pL5Ew9Wakiabq=&akEtWkXVhiYZg=&JlKQ3_XZjiqjh=&zhyWcgWfikYUW=&WDLKOxWfhcllY=&w5sTftZmnfcbq=&vINXhhYfclYUi=&ApNyloWbchknj=&Gs2LoIXejbmZl=&DHQTGaWnaeegX=&T4zOxgVpZaWhp=&SpM8DIYdUkYkZ=&MEOtsLYgrffbn=&At9MOXXbpZpao=&GaKnAFUjsglVo=&Ia9a7HUihnfkj=&AcnmXNXbWnhmW=&a3PC3zWXhlmmk=&vlUKVsZkssYlg=&CXbt5MZfhmVrf=&ARBPc8UZm__ms=&xDu4hUWrcYaqs=&9LiPcjXaWbhX_=&zEDFgBVgZnkso=&OUr2foWjpqbql=&CSllpkXlZnakW=&9mifb4Znssnmp=&Y6woEOUlZmXoZ=&acCSQUYdUrebU=&ieo_MxW_oVmYl=&S9_KNEXqkbieo=&LChtErXUsedeZ=&zZQQQIWhVlldq=&dQ4bcyZWefgqs=&Zr9FhKYhaqbpo=&Ilwuw7WaUeosY=&fVVm6bZhWeiWW=&8cLB8KXYgfs_Z=&ft_q2sXUokdcs=&lhxFkqX_Xabkc=&OOhBQXXmdmhWh=&jaeoyUYfZoYUU=&SfnnZoVidlXpU=&TlyZGqUeinsfe=&CHYyCIWrcbYkq=&r2REAlZccrprr=&8DJjwAUjpVoYU=&zLujTJYreseib=&4UO84yVZsancp=&atRXDQZZqjc_U=&ctARoSZ_scsoq=&oYJmEhWh_gUXf=&u8HknpUXdqfs_=&UbqJRJYY_WcWd=&mkkvCEWYfhUZn=&Ultb3DVbf_lZc=&Uf3MixYfpdZhc=&X2l8OoVdiljoV=&v3uCdcVcqWqms=&BNmW3FXZgZZrp=&gGumQNZcYe_lq=&JYzG88VllmbYd=&H26otDUmYolbq=&MFFyERWossgdh=&wtAa7UXmYjYkm=&qSpstjYnslfpm=&NEwU3YZcdpmmj=&Z7tauYWXpcZpr=&Qss2eSZgWZUmq=&kElYPjYnihZqf=&A3IveqVjcr_lU=&ECjcxYXrYWUVk=&4IQ2zXUWlVd_U=&Qs_axQXgfnjcg=&O29_i5Wsskrar=&Ayd5yVYfZeiWf=&srU4DSUlnorkX=&BlNMemWhhjgof=&mFBkKOVUXsYrs=&anf6YwW_bljYV=&IKQM2MXnmlnVp=&MVSQxpYpfVdfb=&nl4oL4YVcVrrk=&tEpocUXqcnih_=&pSoFZJWahldbp=&clRIM6WcVjlaX=&SGz4rcWrjbaVa=&SnjDkLYZhfmkm=&xHWL2dVWifmUW=&SPiGZdWomWki_=&qkzKsYUebkql_=&kZahtDUXUcgmW=&gnQOvdZhjbWWs=&c6ZiErZrZgYZo=&PNsUKjWehqZoe=&5ILlMbXZUU_ek=&l7W4ZOUnnZlfV=&9tFQIMXdsndkr=&eGJfRPVaa__dd=&p_yWo6ZWldqas=&zPlpdPXbibriZ=&NXII4YUplXqVU=&d9DGHqUfXYcnX=&pmwJlnVUrseqX=&C9WXvIZjcXeim=&VaSmtYZqmkVad=&fufNkOWdleiXj=&RlqNZ_Vnknghr=&aFJwaIYkeojek=&uT4PQsZghgsiY=&I8KCwJXYchmkX=&2QLRAXYrqrciV=&IOcFD6XnesZqp=&89hDtoVlYgWXW=&WRspKyYsiYggj=&UbcFCUZUojnbf=&x52hIJXsopqib=&XXva8UZ_UfYqp=&u9xsNbXZbp_Us=&6bSgffWlZeVqU=&CyMrexYsqmj_s=&DP5wRCUYjieZq=&BtThfRWVrdk_q=&SmiVQpXhcbnop=&6R_hhDXhsnpaW=&CgTlmTZnamUrZ=&RmrZMMZf_jabU=&lXVjyOV_lg_mb=&zBeooJZqZopbe=&phvVgEYsVbscf=&hn3fneYiZoVqj=&73R4PkUVbjkiZ=&uDx3xxUjlljXg=&5qkoliXjfXcbZ=&yaJSVlVfrbsgU=&jv5ubaYhVhZmY=&FiBHfeVfmhWsi=&34Lea8VaVUUXX=&kdXh57XcerpjW=&74sSsdXlYde_a=&lQ33KLUqZnmps=&_WtnKXUjjqlnW=&zOsIehWlXocXi=&fHPOeSWkgjsdq=&l4_8A7UVekoYb=&JtsHCVZbsd_ci=&BAz5d5WZehcjr=&CQRBWbUmqhZUm=&_ubIJRYssagss=&Ns9wCbWYjUhXY=&cG9_bcXgdngYp=&scVxlMVsXXplf=&cWaboBYndsopg=&llmevkWZWVrlc=&Cl8djNZefmnof=&fqVvQqZUdXkir=&qywYVsVesiqj_=&VFUnsBYUjmnor=&fRu4jpYWlUnos=&O2kdSIVqXcoWZ=&L2OQD_VlnXgVl=&DwtMhXYsqjnZU=&CnKx5CUeYU_an=&WE2LtxVYpbkVf=&j765DRXooZnmU=&FRcqihXgicemd=&czclyWYcqafUa=&pCVCUXWpckhVl=&5Bi5HDWiblXZm=&8kpyNfVahVrrg=&ywqeVPZiYlehk=&uFaPJzWsplqYj=&w_2xeJYpgUqef=&3Pnn8FUkWkbcp=&b5nfwCWfsXVfU=&mAtCcWVcWmdhX=&K8Z5J6Wps_rfg=&LGXmRuXgnUeom=&HjRUmiZVepphZ=&6xLGuPXiUgXhe=&earAl4YYWjpgW=&nPY9XjXsmdiWn=&mxlX5YUbkli_Y=&uSpJc5XhapZfo=&U6K2NPZYclips=&6_gTTSVajYXpa=&u_rJMyVnYWWho=&h_J5VcWbjVlma=&FjmNAbVUVZ__c=&mMjcnWYXaqrXq=&VyczaLU_ngdom=&R7bNZhZVdqYhq=&c9NwvKUsenVih=&oEKuWsUZomYhh=&3OfVvkXqcqYbk=&GlWGY_YpZVjjh=&4BPT6KYrjqjsj=&aAghTvYWcneWX=&sUrT5QZcViVgg=&G4tGCPXYoaaWp=&OHuxz3ZikailW=&xKTyuyWrohmXU=&PLihWWUYbffkb=&v5BLHOXYopdhp=&LY5lyrZelVZVh=&PZzQCeWlkmaZm=&y82QcGYafskms=&SgelPXWnYjpdY=&Rjn2SCVekWXZc=&NCRtXwWenscaa=&cQARo8ZaZcpXZ=&n3M4apXpVYj_e=&tFVxkCYlhp__a=&b_2Tz2Wbklsdn=&ScnRN3WZaUhVX=&V2H57CXecenjZ=&OJOwYYYYsdjVZ=&QkRCKaXgapZWV=&PDiypLYso_Ycn=&T2rbUzWfjgp_h=&z8URXSZibmaoX=&JR3Qx6U_oeYaf=&SbtvekWonqlkk=&MJXGRnXsmmkeW=&WkCBxBVjYaeXf=&PSDmLmYpklkqe=&5_TPxGUecfars=&EH4tkRZpmmdWm=&gAnGFKZr_UWgp=&eaywwMXfjgmYa=&iLnNoWXfrqXe_=&y69nz3YrY_m_V=&5DZyHVYrYrXYi=&V9WqdDU_micjd=&IzNe6mYcXgr__=&nxesv7Wsfhrgf=&eDBuEfVfXfehn=&NbHWYsZcWdaZf=&tUCP6QXk_mbfh=&WpD3D3Zcrdsmf=&9quupsZbYYW_e=&A8Ef4uWiebWmX=&eEjuK8VVeooXe=&xDp87EWlpacba=&2kR_ObZkfgmnf=&sdWj2qUindiqo=&Jc3keQXopodhq=&IgENNHXnZWefo=&kI2QyzUUsli_g=&lJH3tyUolbXgg=&BWXJH9ZamUarr=&SwrfhgV_ipkka=&fbv9XuVsXVsec=&QbfYftZVVUnZs=&rRAyPLXenhWpn=&f8BNFbYpadpYW=&MfxtIrYrWaim_=&cSlXbbXppdUUb=&COWdaFWYgilhX=&5vWhuLW_WZdeo=&EuPspeYdbaoqn=&giGmihVsbmgkm=&LHtA3MWq_ogii=&qcrYVYWXqhZsg=&2uvMZEWdkgbY_=&YqwqtUXrggoia=&bzX3UoXinreqh=&UPiu5PVnjjdUe=&ZcLAYPXmq_aXi=&OseBbsXXiYqcn=&BGMwRHUohiWad=&2tsSv6WXhihnd=&bZj2ImYjXinqc=&LALnyXZchj_ok=&En7tFvZfrYpl_=&pyFo3uVVdfbes=&UTJIe2XYZrjWk=&9kQNT7YqljU_l=&hWljuPZfglsVV=&9SmuD7WbnqsnX=&gzi6PqWXZgb_f=&HzVQHWXmsbjrb=&vYVejnXqipVqk=&Kol2WwWX_kjqX=&KS3xKKWXbshZk=&q7m9JMYrmffoj=&tLAsiZWsZYgV_=&DXpcFhWaeVhpf=&OLy26dYr_hhog=&izDobDWgWpnVi=&Lb8MzCUsehrro=&xJvPwVUZ_VYck=&CNgf_8UcoXfZh=&h5V3JSUilcrrX=&aVoIeTUbjafaW=&fUPiaiXhpVUmX=&tJZaMpWqUpWaY=&JgGocTZihge_X=&YPvOidZaplooh=&C5M4AHWlWifXs=&8TEXXMYVZWopY=&jzlALcVq_Ykmm=&_yF4cUWhX_jjl=&GWAjS9Ydfgmsk=&gJpfJAYhZkibc=&_xSzbrYrhggmh=&TedBiHVoaUZsn=&2Jc3VuWchbsWk=&i8coFfYaZYkhY=&OGNb6sVakUjq_=&ZHbGcCWjsppmZ=&_lGoFmUdsUdhk=&hNwbs4ZjhjjfZ=&QaXWR_ZqqhYbm=&6MVYBZWfrgmkn=&UVC_32XUhdk_c=&3uYTlWZVjakoY=&Za6fUyYqYolcZ=&t5Y46TWXdiVgk=&G2O9tLYV_UaUn=&CZOzOXY_XXjno=&znKntTUXZs_Xf=&MiQhnQYrojljb=&twppwOUshVooa=&C3IOE_WgqrolX=&HlKiHpWjmkhkX=&Vr795VVfmaaso=&9LtwaoZpdhhXh=&iJRKbuVceglZd=&BZwD2rVhaWUWi=&nFurEsXpXjqaW=&bwrw_WXmnZnon=&Rjx2zAXdpiel_=&a9Dd4yWlsZgmY=&NUS7iYYeqpmUh=&nCKiWAXkhmVUn=&h7TftgZdZUnsX=&ggxydiYpcj_ml=&Kyc3C8Wkbdepn=&na_FoGVcXibck=&pExfyBWXsjjpd=&Vk__KPXaahbUW=&JRbkZwYcoWrW_=&lN5We5ZUdcne_=&Q9A45yWZbgrkZ=&T7zV7kXXXslUq=&dgrzCvZjilpZU=&Ew5zfPZnromXW=&o8LExrYfmhdUo=&NgIOvgUdaVYod=&Bs9kQNUabaiZV=&_S4qybYcqZplc=&BNiLraZUdoaol=&IuO9znX_VZspl=&5OrmUkUhmhgUa=&9Q_rNVUsUfsgp=&TWYaSNYcskpoa=&88jSr9Yljhgk_=&83xWQVWeVYdfl=&UvpTLDZndacfk=&wa7aRRXhZsbWl=&q2lZedVbcfVab=&al8PwrZeYV_ij=&IW_I6KWqWiicm=&YOCL9PWodprXZ=&PDKF9GUYfZibh=&J4RzbWUnhhVei=&zYq2WqYVYXjfl=&B2TUmdUp_rUkf=&BwxZg9VfbUnVn=&bYdWrrVrmZVof=&TyOQLuZpiXVaZ=&7aPo_wYdrngmh=&RMb5EzUcdqUlo=&Y4_3dVXWUrccW=&U_DO98Zcf_noq=&VHWxX7Umsl_ca=&sNjFVdWfWoVUe=&2fVrwIYYZrUcb=&2e7T4kWicqbhg=&O5EI9zViljleo=&Od4YSfWraZsoW=&vcBrH7XhXXfhX=&wwVNtDZjdYakq=&ejljyxYUUkdWa=&a7Rb5gZbhUsdX=&hPX4XoXfpobnn=&PjTfsIXcZspqa=&LoG4o7Zklqmrm=&x_kkLwWiigjXj=&e95MJlZWlisiX=&ko32nJXbrXqnf=&YLyPqrZqqkl_i=&zrLLu7Ygoem_j=&UXq4kUZoUXeVs=&_aM2M4Zrlj_YX=&HpXTlaZfsm_jd=&4Z6wK3WqbcVXf=&BLmZuwXgrWbin=&kS8pJJVgs_asi=&b59FRwVWdXp_c=&5vKl5FZeilWbf=&THAXycVqZdUVU=&4cSCTfZjpUpVf=&xGC9QzUiaefVp=&lE7JP3WecjXrX=&7sWWvEUqgimoe=&tAv9uOYkplmsX=&CuzF3cWZVbnhq=&DkwmKdZUpqqje=&Vw2wqIWYkagaj=&J_FtAfWracVgp=&epFVEqXndgUhm=&P_wdCCYUmpYUq=&G_sO3tYirceXc=&m_zxUDUkolmZY=&UOlzKPUkefYlq=&LQxsd7YWYhspW=&YGF3ARWaefVpk=&QZCpWXXfnhjVe=&DG48OBUjhfdbe=&BQTZZOYolpkgZ=&Je8DDSVjYkfo_=&ssYuI_Ypjjkjb=&2p5ZOUYgUUdlY=&PQ735ZYpbjnbo=&b8dDuTYienfoq=&XCs_e3Zalslop=&bylsEcVWYaWjr=&wYwW3kZagdeVi=&5mJWa5WZfeanb=&rFnJubVsshpZs=&LEgTjhVdolrqh=&BufW4rZbcUWsr=&lG3qO8ZbhqZob=&lgou9OYYhVnqb=&795vctZXsYWql=&dv2IHuZplWfVa=&biGihKZrmedpb=&ZlEemcYfYXqfc=&5fZHdvWj_VoqW=&E3AKqaYXikqWi=&NkTqQbWplrljb=&TzJiMbVfhsmln=&TN6ZcMVmo_XZk=&aESijFZddqmic=&7ttYccVVbVgpY=&vlxwIKWqerbZp=&6Qygl3UrfgaoV=&EyyYqpXegsXiW=&pZ5bYLZZbqqjl=&rQmZ7BVacaiZk=&kE5YW6UYqdlnp=&6nMgNPWehVagp=&ETtBqEZfVoclY=&Kstqp7UZ_lUbe=&tfCYFTUpohXUa=&qU9ljxXconljg=&bCpZBNXVpYYed=&t5dkCdWgWUasc=&lRkVoxW_ipjZs=&q28o98YVomVZp=&vuOx4IZmplr_s=&qWiKCvXVgriaV=&9hlrUTXamlrim=&IKw6xfYgmijir=&8khGw4Zmosbhf=&487LBKWibYhsp=&2xPvmWUcfWjlq=&2MJdQGXjkYbgj=&C6xQrIU_bYYlq=&9hthkwXYhbnWm=&zKP6ZdUn_UWre=&Ork9STUZqoXmd=&_uKTE6ZijkYab=&xGArX7ZVWUhVa=&LyHzWaVlbqjlj=&NG8E_HVqYiilW=&eG5mU9WUoXgjb=&EeOXEFVZUWklk=&ifnofqUhfapVW=&MpWCuSXkVcdmp=&gpYmd7WcaUfVZ=&lghNYdUbamsZf=&KLy4bBZgV_oZW=&IJ7_CjZgXpkdh=&Kf63GZZmUlqge=&5WDsRLZsfmbps=&WtNENFWdmiiag=&BPvtm7ZkigeVp=&y97Y4NXcnrZVa=&j4xV3jUfqmiif=&ujqMU8WbkcXVo=&V8bQCiVhnpVhW=&IeENbXXkmnpWp=&EzAcdNZXZUXmi=&dlm9zEYmfegfk=&F9rUJPZkdshZh=&aRN6ZwXahVepr=&cahZLVWUXl_cj=&n9BdSIZfYpZgm=&B6OA3zXcs__gf=&RSNGFyUrnsnXs=&NVrzOUXUsUhkr=&o8YSnNWVjZeho=&k7EpDiWcbgsbV=&cV8bPVXblYZXr=&My9MtJXWVbkqa=&QeYeJ9ZpjVpWr=&mRM5G_Xpa_oag=&3R3Y4lVhmjbdh=&tABDDDWlagfdb=&wpivXvUcXbeUf=&bQ3j9dXbYknWp=&wigpHIXdUZUWi=&QbHdqDUcldqfU=&mdIAXpVprbrng=&NHQBgcUcgUc_Y=&R6I4i8ZpXkpWh=&HT_JCZZWoaiXf=&fZyBKXWrkjWqX=&S8EOZPXerXflX=&e33BBlWemhfos=&Rbpmx9XddkoiU=&bqtkUkYdbfVfU=&zu_xa8Yo_omfd=&_cyIXoVfYdqUd=&tJjcHHWcqprgi=&WuICx7ZZUiqbV=&GkBJ9JWYfYjik=&RNYbqFYkgphah=&4ju5DVVdodlWp=&_ItbnUYibkrYY=&O8E3rDUkZXfZk=&nyu5fNVnkjUp_=&cAsPscXZjXlpY=&rvTpoLVYUcead=&JYL8g9XprlsY_=&l5IEahYhX_oVc=&jarsuSX_kafdk=&3DT5I4W_UbWmb=&JfuLgfZqjZi_i=&nPTS4rWfUcoqX=&hjn_PJXlfZo__=&2rRmWlYcaqlld=&enDc2aUdkXkac=&WpzFIkYk_iicW=&fUpfjjVomYmsj=&sVraYDUfdesqg=&txap4xZYolhfk=&ef3grEXbgrihV=&7SzqrfYaknWXm=&w7ChzkUZsUUdf=&UISi_JYfiqdll=&amBBplZebnYbb=&ZGVXE2XUWibgj=&5F2qFCXeYanjX=&6jGLzNVXUZjko=&BTbC7aX_Uqdi_=&VF74sIXmnrUno=&SRamTbZodancZ=&uzM4rHWfcmjkV=&wE63VUWfoadYZ=&WQG4RhXhhegmj=&YVqbaWXUk_lhk=&VQNpMwZhogqrh=&TJhWsQVojsZbg=&9PAkyKYbicphh=&MLIpwrVdrWljl=&ImIAZWXYan_ln=&YJza3MVrjrkkp=&3Q_QKcXgbUbgi=&NiyNDJXpnVrWU=&uFv4xlUmdesrU=&AWOdkeVj_nmXm=&TbBRnRUXqUUUc=&gitFqHXpheobm=&7YXPvQZnYgVoj=&aKJj3WZlqbXgZ=&AYqu9mYohZrYY=&WB8aytWfZfiXs=&I_KAILVVcUhfY=&AXSZhRYl_qcgk=&vDhqKbVipWdYW=&377awHYnUnadj=&HILImKUkaaXYm=&IbzWxRUjZn_Wk=&XKgVbaWdgUVqq=&fwxRtgZqZXqso=&mretJFZildnlo=&T7qjnfYilmZrW=&He46m5VfickYY=&Iqu9ElVUsgaml=&zIhJ9QUVYdqge=&KU6doxWqqg_mY=&vWYcqUZbmcdeh=&Hqnr9pZfjbbqq=&gGkmmcUsnmnab=&YVb9lDXqnYfei=&6Th8QpXe_spYq=&ZXjGFHUqsYaZr=&flTIZ8VUZqqVn=&YFJ93bUbhcbjU=&4j_jBoWiUaXkY=&dNB9gsZsscfkU=&W_XWDaYmrWaVl=&BpSVCMWqiikVZ=&rO3snaXoWsnWf=&E6lLdwVqphX_X=&OlKOSBZe_lflh=&NEKVUcYqgefjd=&eqEVroUbfcoXg=&wsaNMPWsgVYaY=&swaHJzXXgdqpq=&gg9VKnWbVpmXj=&BcAHReVqgmmir=&wYFfSsWecUWjo=&_OioqwVZZUloX=&aRc9tVYhsYebU=&jKWRKxYYiYiYc=&NOwu59UgUjoWl=&YmPvwuZcVUYYZ=&LordeMZscgcfW=&rxhmyyVjmoWos=&wlUTuQWc_eesj=&NVpRIgUhfcf_k=&FoY__qYolkiX_=&Wr_H6oUbkqjii=&Ywe25yUdcYblX=&rvJTiTYnghpib=&_nFkL_XYhlqpe=&k655lKUkp_iVV=&JxwWMTVopkaac=&Jx2DovUlrngr_=&8cTTU5Ygphnb_=&mOHOdYXVaUlqo=&EzOAoUUjjqWco=&GPO3hVWikgUUc=&GP7YigXkkjgYg=&8ns5b6ZsmhpWa=&POxr4iXWrj_ss=&mAox8uVljYqfn=&8dhRgoZsmYoXf=&rsdzX3YfXiejo=&eVOyOVZ_afqUj=&deU7axYXpZapl=&ABN84wUcnasVl=&BFrZIjXlfcmbm=&YqCfDLUVdh_ps=&U_mdEkWqUmnch=&U5KgLyUZqae_r=&F4jTWvYmmpjjh=&wJ7ZEbUl_aUfW=&G3S5VfZbXkccs=&eqnlzKZqocbdb=&O2DxwmWgXXZro=&hUx698ViYcjja=&cVukb4YqccVVm=&B6dfRuV_Uesmf=&2PWkfWXlnkWWn=&LoXxrEYmgUqgh=&ddI8cKYpbUWqU=&rwRVdAYpkigjX=&LwUSAeUrbipUp=&_T54uKZireoWn=&BMU2rUVnnYelo=&ogYvhGYd_gWdn=&4Aqv78WiYolir=&MISXGZYsZXhlj=&dDbYCbUjZWlka=&sdTCpRXkdefoY=&GjWQsUWekUkoU=&c5R_aAZarn_ol=&zoQFhtXWcpgeZ=&LPaAXjVV_mdqk=&8q2abNZrZkqpV=&mQAx8RYWVb_mg=&qzpr6nU_XUeml=&kSeY6nUaeXYma=&jeshYHUmsinsl=&9XN7ydWop_opU=&MOnBEgUXVcUkX=&RHmLTCWfmp_qb=&h2VkeTXhYUUhg=&BGNI2_X_lofep=&p5Uy2uWlrWmUh=&uDZv5aXocdgfh=&FhsZoYVhdaWgl=&XOaacFXkVVVhY=&KxPwXWUVsW_fY=&e38cOeWXlaXgn=&wTM_fNVajeqlr=&BHpDHNXrZsgqW=&eJW5haXiblWga=&p6PxXbZ_spl_g=&KahCGuUZnpXks=&dlYSi3Yi_ccbY=&66wrNJXcggX_c=&IINsjmYbgUUVZ=&6QOVqoWqjXaWX=&TIwFo4YnffUil=&A_3b5UU_cknhs=&Ikws34YsrVpZa=&HfkjknXcVmsdm=&RGwIhfXscWoml=&YUhuTZZZgdomd=&NfhHxMZjYqZeZ=&COgZufUensrcp=&_3FWkWXpYprai=&M5hvG3WrrXdle=&jLmJ8tVaspjbU=&GFEbtFVlZVfeY=&OTP8BfZeYiqWl=&3Ru32FXnkZlmq=&4nTkbZYYjqofa=&8QbXkpYXjaUYh=&WtSIbvXeqekaX=&dG6niXXYnsfbf=&PiEVvYWcUjgmn=&Pr5OLPZmon_er=&bGoDAHZ_ZiXmd=&ZHDP2aXUqbsom=&Yi3XDfVlnhmma=&ZiYnRuUjgcdZh=&yg8GaBXfjdpYi=&5pJwgNUski_kq=&vtigAdYWhmbVp=&fWYI2WWdmlUVm=&Wo_LgKWpV_mUm=&NzbgnEWdp_dpj=&6IGmweZcrprWm=&yLdmZXXshVXdi=&qVyiKGZhpjpad=&nAS4FvUbperhV=&kYQP3wZoaZjap=&pZD3F9Ya_ndmf=&AuKNcSXajjZUe=&VlZomxVpcilcg=&CyTfHLZYaiYoc=&aityDeYrbZYZZ=&zdARjsU_ahici=&bZkG_7WdfVcrr=&QDnR8YWkrpVUc=&6cfoEIXfUZgpp=&vlYV36VpUraoU=&YpsWWxWmiop_a=&Nhf8jUVsXkXhq=&XK3ZTvWfissc_=&JCwRPNWZWkcdd=&2_pjUlZYsWfsh=&F3IqlmYslbWqZ=&zGuaeiVhfUlkW=&AFAOOJZpZogXd=&lWsp5EZghmZpZ=&9RQfQZVrcWVoZ=&TAmadiZgV_Xfd=&LeLaTJWkhjYni=&tHkLC7XesZdna=&ONxXt4YXjoeia=&EToaVcYeiZlUn=&K7ZjwTXrnskjq=&izlG4uUribkqc=&Wa7W4mWedkan_=&6XxIFRXUlbdmU=&dh5EPYWXqsdVl=&wQ27cRVmaZ_qj=&QmrUFdWlrjiUp=&vqVvOFXfc_jjV=&OPP79zVdoXjbr=&QpqrgLYqhjmiU=&oUfRcNVefanYl=&3DAm2UUXccpXe=&fHCyakXUjk_Wr=&NyCuULYYmrrjk=&gf2CSWWWmmpig=&gFEx5AZZfZifi=&WvQ8UNXrmUdpg=&x67qiuVehWc_X=&Knv4L_YXgjkmr=&tgmSpPXhkWoWW=&iWlpf4WhbYgid=&oJyFe9VsiXhsm=&IshpN3UkXspXj=&LVtGM5ZdciaXf=&vACWLyYYXd_l_=&uLJJ8LXVpYYXk=&RKI7MUZiahVir=&6ZBmmfYbasn_n=&8aTT7fWbjWXpb=&4FGDSKWriXrng=&df5H4dVpdqrVj=&jvudcGYcen_mZ=&tLXTPxUgjnZqc=&5ASf_yXndbWjZ=&jPUmAaVXfrlpj=&ys2HasUYaqqba=&gBy9RxYgenraa=&SQEg8iXVVZdV_=&K9fDzEVpdVWfl=&BdhXu8Vrnrmln=&ypV9CkZad_eXq=&iZmvTzUmppUpm=&_je3WfYjYZXhd=&qWLXJXVUkfqps=&mNidwHVfYUZWp=&nUrmUFYYqaUck=&gTk6C5VaaabjW=&BxKXIJYXhZoZZ=&8PocYoXZZWei_=&uLv2GVZmkYcrl=&mpeJtiXmafYZr=&3t388ZXoYgXcr=&rgTJRmVjhXoXm=&3QmuCmXsbflpm=&zqoZe8UhWpqoY=&EtDXwuUle_ieh=&tex9KLV_cfdWl=&BKBg6EZggZojr=&FrB_QHZUgsgWq=&GeLEl3VnYqZjX=&fgdvCGVinlsXg=&sn5GdZVorZgkb=&8bLXOBUWl_Zjh=&nKXQmUYqXgcok=&4dCYi7Vmfngkq=&VDxQ2fVZpfVWp=&d7mOSbVscjeVs=&f7zaZ2Zrohfj_=&MrzUqZXYeYssX=&T5uvcQUisjnsZ=&U7rOEZYUldars=&3e4mRlXdqZcZk=&XCayWpUhqkcss=&vBL7DxZhjWldX=&FB5R2KUpbrdsf=&woduguXakZngb=&yASHuLWnYflY_=&ag6UotWbkesqg=&WxnkSiWWWnViX=&WWK8WiZbnjheZ=&SNgtaEVqollcU=&_Ol9LXUZWiUgl=&kTZBV_YgnnbXX=&giL_naXpo_gkn=&Lr3FWfVnpWscq=&4FekpFUosfgq_=&8P_3oWXjYqVpr=&kULi7xXZnqVXi=&LCxYU3VoalVhf=&LJTf57Ws_iUUr=&TYo5yHW_gcmal=&fJAA24XaibXZd=&NoJ6mxWZiYZYd=&O2LFvgWrWgXXs=&EzlVurYnbbYcU=&IseOXLWYrcUkk=&YMpgeTWqrdY_f=&MGydaOYfXbWfs=&j4njLLWhlYfnf=&4Q5QQBUlZjkoo=&ukEJEzWUWYbgo=&bbqKvaWqrYiVm=&JlECsOYdqekis=&Le9f4CZpiVinW=&rnnMkxVUqmUiq=&xgIBeQZfeUcfm=&jCOKTBUhedims=&wqIUBiZkbUpXs=&_IcoCJXqriVrc=&NVukKdWVmapqe=&pOd59KYfjafke=&lrjQV7XefsoYl=&chnIh6Xaiqbne=&3RpOAFVarfkbs=&AX_A7UUXY_aib=&qP3S4VVaUfnV_=&TipjVWUYgbsbX=&aj9Z7gWrWifXs=&4zavrPVXgm_ZV=&EiLFQOWXofggn=&27ABtQXlasbbc=&bgwYS4UiingVj=&F46zHGXfWYcZr=&HbKvBlWinb_aq=&ZvQUEmUZidpXj=&pTWv7cXh_hqYj=&rhyXMzZY_rYod=&UKiucgWjVYarg=&DIOuilZZfnqhg=&tMtYQEUlWYekk=&GCrJ9WWZsdjrh=&ChTFqeVVoZWWp=&mzcGRDVVVbimm=&EyfL4jYggeUcd=&vn7biUXocfWiU=&XwebOZXhlogbo=&tvHTAVXYochak=&wXiYAUUsUhjlr=&t59i8AUXkZXao=&_QUtu6UdYkkjl=&iq9jqaWdlUnXc=&vxwRxzYVorlUb=&cZFiXrXlWlZYV=&buYfPKUmkipZU=&KMPjETYdobWam=&r_K5iMWf_mafW=&8G2zWnYqsimen=&ccWcmpYmfmnlb=&jJz2d2YmonXd_=&2NlpXNWsYUknk=&f_eDp7UjsXjcl=&KcsVHtV_fWYac=&CDbCbAVeddqle=&njBTX8YfmqfYl=&Rhh88gZimpq_o=&awhAqyYWYdfXl=&GWmywXWpc_bXb=&uOrghpUrcYsiZ=&pdn_FFYbmqdfn=&jYIPUPYdXpoZY=&3SKXqcXVUjkno=&_y6K3_XXZm_V_=&pDIsHuUamUhrc=&qjUjC2XadpZse=&pGpWCmUnrcedk=&RkpDScYie_goi=&7eVP6kWeUXmid=&dgqdjCYYsjsr_=&yVLa3IWrXrUkm=&MHWuXgYegVeaY=&iXaEy6ZcXbZjm=&cPOlqZZsdolkp=&Q7ZuyTWmVnoj_=&7UBfVTWXpjrkn=&pPe2aUYjiichq=&X6qgsKZljscZX=&eY5knrUoifll_=&gdDE9FU_ipb_s=&TFaFyEZlqomXX=&fnwbXUVfpfUpk=&b9qZBtYdmWgjd=&f_IidhZlknVVl=&PfbKz2Xf_h_V_=&xOMycNWXfZarn=&w_DgwjVkVXYmc=&8sUMeDVVbsdib=&8CaDe5VkZb_i_=&pZToP3YmkXUcq=&k8wFMZVjjbV_X=&WJeY7UWirmnYW=&QbdgWqXh_Ybaq=&SRMYeMWqaWjVi=&6tXJ46VXZWkqq=&ft_2ooUZelegi=&rzCtD3Zrpejjo=&hw_2PcYaWXk_l=&O9YJ82WXVdjVj=&YaucvnWdjkXUs=&T3AilQXWdpUkg=&wzE8U7ZmddVds=&OIpUnRXrnrdh_=&CGDWDYVWrjdhc=&A7CgZ9UhYUUWd=&fniu9iZjd_ihh=&K7STuYYprpohY=&qIy3emWrZaYmj=&nb4HDvZnigchk=&L3vgMBZpXqbUi=&22T43SU_bZ_Vs=&Gt4inQUribjcn=&RPvMIlYVdocVm=&tFwUSLWXhhrXj=&CMLXBTXUqmVmr=&KhyfulWiqacke=&gqjJtRXkYbmWh=&CMX9qZWlqcdiZ=&Zfigf7Upbobpk=&x6o9YHXblUiZU=&TPPOpqWicWpiU=&m7d5wbZprWWqU=&BrBXn6Ygmmcna=&SRv9WrVpUaWio=&r8bBtpVioVlkU=&E7XK53Xkccap_=&zfMfEWXfbZpX_=&yLxQlBVsqZkaX=&uMBRJVZdmhXlg=&9R5sYjUlfpdhg=&FUTBXcZ_bYhsi=&mXfS4iVrYbrUo=&LmDSzzYXfWcsj=&sF52B2WigZUZd=&e35n2uYmdfheW=&M8DroPVieWgXj=&rwVji3VolrhfZ=&RozHjOUUkUjmW=&b3tkQaZiXjbeV=&5P6ZtCVrrqeUs=&LweQ_bXXZnong=&8ZBSfBWemnfWi=&laQeD9VdfXVbd=&NJNfeXZWinlne=&qobmBoYhajXVf=&mv3b8bVmljn_b=&dwXs8pVcgnfao=&nrNr5pXXnX_pX=&8qt8mzXgUmiWY=&626zGcYbkpiVq=&sxdEtxZpl_as_=&YvySnRXseeoqr=&gxfJ96WUcfdaj=&cgPgQnUkqbUsW=&z7pKQLU_epjg_=&54oT2AYYkfejm=&2zjD_CYXjaUmn=&WExOYgUrpjeon=&gTovEcZZVniXs=&qjwW3AZspglhm=&8pFx7hYsmlcjU=&8Pb6YLVknVWed=&e9hwODXXriaoW=&6dBB8nUcighpr=&jdC4LlXZaslVc=&LpNF4CZo_oZZj=&nMJOWSWjlYoep=&d6OuZ4VYmj_Wd=&ZkJO9yVZpWaXr=&TbzZoaZgaWUiq=&HLXMjLWpZpcno=&ShMISSZmrsjrg=&nSqyLfV_i_esn=&s_nl5vZsgUfgm=&vaKntzXcp_Xo_=&MBsR7jZbqnhsq=&2dwYlDYkgj_so=&BEtOHbYiqY_Va=&O7mcLYWpdUioU=&BHZdOmWYYWeWZ=&BkdRPaZUqlcZo=&2eEJnpVg_loUX=&2KKnlnZsjZogY=&5taK_EYksWiVl=&5uQ4kkYVVVUbg=&3swnVUVqok_em=&G9R8ZzZrWUVfX=&38gA6FUZpcYfn=&Ae_Nf7ZjhsYbb=&mObKPhXsYdoYm=&RRjsyiYam_mXX=&33SZC8Zahddmb=&q4ON5bZhpfeqY=&YMzwHrUjjrZkc=&S2deHbYphbfZY=&PBFeGxWVnZYes=&Qiu_bGYhefe_k=&ZwEbvjWUspYXb=&XGrW_MUilofVc=&Fwk6OpUbmrsVl=&WRWtLHXpdUfiZ=&qEAsCNWaiWcWW=&KYRvozVUpshWh=&PXTZsaYjZgreg=&bDVb4HXWUnesb=&HrntohZkfnlaq=&8ThVSXXrmnqdW=&hzZ5kHZkXmfUY=&woxLFjXkqYcWY=&olRzv8YpjiqY_=&I4JqbpUrp_bjn=&AN9U25ZpnmmhV=&6vPTOaUqmoogf=&mEe9luZYZnacd=&s7p7JcVqlZdlo=&2UAPC_ZpUkjcm=&ZQDfcbWmfklUV=&dPCpTAVsYsUfh=&7MZEbhUjnZpm_=&O8k2z8VYddqke=&iizixXWbpZaif=&hWMLfhXiegVbi=&JPuxFlWmdrXVk=&i69LmOWgrVZi_=&ZGuL2eVjhgbbd=&ISEbqiXX_e_kk=&UExxf4Z_hppsh=&HSNMvXVoYame_=&SxFnGyUWUYjrg=&PtUpkXYVdfrdW=&tO9YRuVjogbbd=&JXoAItVfojsfc=&aZB4xTUommpcn=&2E4ySmUpe_mk_=&LDcqACXi_nbYY=&WvD_ZrXZspZiZ=&Z2wQSkWbVdlpa=&fHBZKaWoXcm__=&YNVS4sWnd_jna=&JPvswEZopdVa_=&yuQjG3Wed_eYX=&CnSMHaVdbhdYa=&OKsIbIZZVdlWl=&CukTDzXVr_cXk=&axYQ6BXiaid_i=&XHRP4IYdWrfeb=&xyDFbcUiVUsmk=&497W2nUbVsfhg=&9liXtxWmjlWbc=&8g6yT9Ydcecje=&l3nuW4WnbWacs=&TmkQPrUrV_WkU=&lbpMakU_Wdnqq=&SkllSJVgqncnb=&vvAfpiXhrsclr=&VdWGRrWsfssjX=&z6MajfWXXYokd=&WxA2NHV_lridp=&86WO3kUeiVgqo=&njl9tNUikdlXV=&IdAMxWXhUkV_o=&B96PV8VmUqUlW=&CLqP2vVZWoYXa=&Zq27wSWXgcgjr=&unkaMqVasjsnj=&cqOOOLVag_bag=&T8qb3EUhgaVsk=&4NtOrPXckUjYq=&tWvjmsWnmid_e=&WWWMPGYhiXqeY=&iubE8yUhqjZrn=&bZHks2YirV_pY=&W2ncNzUmaWlph=&ZozXa7VYZmarj=&bSOjt_VWUsjms=&3dLVTlWnsrYhr=&6tfOPgVVXUpkp=&4wuJVGWhhbqkh=&byHJhmYhZengk=&jejwMvVmlXjgk=&3Q9vpnXXhgn_c=&N7mfe9Unirhgq=&Wjx5uZYhbZYfc=&4dn7uJZeobccf=&bW7_zbYZcmrld=&85sB2FYYXkhUZ=&idOsmcUYerWpY=&iQigNTYjjqcrm=&NrXz3MVmcn_ol=&opRxuvVWVdeYe=&NSpKf2WrhYroo=&KOn2P_UYVeUgV=&RJeL2EUUlUYVr=&2fo959WVfmkja=&BXoFTZZlYVlVf=&m5iamGZcp_VXn=&xkj4xKXUrrXsb=&GLZ94FZgjVqld=&3Np7wNXoW_Xga=&xlFpiCVVUkpg_=&Hu8BV7Wm_Vaom=&4sAbP6Vnrileh=&58sZVhUVfcXrn=&zCRmoDWnlWsgi=&GqaWUgYWflqhg=&bJAtYrYqnVYWl=&dJ8Ab6Zlgisge=&hcHEv5VsnUcdV=&6QUOg9Wal_Xkq=&77YxazYneoWUo=&TifWjrWXkUlel=&iKoNPZYclpdfU=&yQWstmYdbfWZY=&SWtOsvWksWreg=&3JX3J7Uam_ddW=&bu3ZfMUmgXrse=&uyFqGzUZhYVqm=&iDul4LYbaqidX=&TJZkHdXWeiacb=&YByfFMWZjkUjp=&6aCJKkUpndanj=&5UphHlUVbZYYo=&WZjvXWWlUqnbm=&3geVzkVkUdflZ=&rsoSOOWraUmrs=&rISuMhXdrXbig=&qsQil7Yenejog=&LC7XVkYVpYkVX=&UxqWp8XcjqlVg=&vwlSFuVbsqplW=&a5ypYSVsWbpof=&lPum7FWbdZqqf=&FZQwkTUskUmZr=&rXLDmbUUpiYlY=&vQeKDMWgecsZY=&8MMI9VUVYliVi=&Y3ZMFFXV_Vkbs=&WtgVHzZcgelXk=&lCiyO8UscrcUi=&T7cRovYejerhp=&uK3rqzUqjefcl=&6hAEGiUZii_og=&ZUeOVdYd_mXZh=&ufm4ELYhneaUs=&Du7hdCXXk_nYZ=&gJsgSXXbdbjZn=&aKiGKEYimcijc=&vqRAGPZpUokm_=&qIh9KXVjb_qhX=&NpeKV4Won_dpU=&JueqPgX_Xscah=&PMplpvZWraVhW=&pAhf9fVfkUads=&7ejdQsYboipri=&NLDdD5UYfaVZl=&sHkLMeZoXZqYg=&VGrxqDXfn_qse=&mxcXCCUjkkXh_=&nUeXEJZ_cqikn=&MbNL2UYUUoink=&dnxOQmZXWlZ_o=&RDB4QdYaf_Vso=&rJoh_KZgncois=&z2dqOVUZpVhir=&Z6kh35YYgqU_i=&GbuYJXVUjiWq_=&goR5azWpmjroq=&LU5bczVcbrVdr=&J2_xUcZslrmWr=&YFODH2YoYskmX=&Uf6MjeVglWUhl=&iOQ3ZVYXalVhZ=&FxDJT6Vbqajfl=&wZDUp_UrjkXfi=&Z_6sqpZ_j_Wki=&RxqDRDZfbbgZd=&pdAZYbWachWYa=&lEne2iZrqdUqh=&9wi375ZZikpcU=&wihQRNY_qecnV=&RgTzsLXWpVfVc=&tug2V5Vfkdmjk=&mq4wMFUdW_bkZ=&8TgA7IXgb_igl=&4TbqpvVcZYojV=&myhAduXhrWspb=&xgO8rJWdX_Ygl=&dIOL9lUpWlmpb=&7fcE42XcUka_h=&XLRCHfYZZqijV=&wn8vsZVnhoVhg=&AvfnZMUa_emra=&69E_fZWYporqk=&d2ETGEXkinpro=&CI6pVBVlXUXmn=&OteEr6VYghaag=&RFjooRVVXafng=&TxYLdDZkpfiap=&IoEt2ZZmnZsps=&YySG9zXhfjcXX=&inTW4YWrifpbq=&w2cmcIYcjlsa_=&PWEADeUoac_ZU=&4PBiLyVbrijUX=&mz6k7yUmjofla=&inh8SxYsVnYUb=&3guBOOVqmhnps=&JGTvP6U_aepnk=&Ug5nvaZYrYros=&ClNq_GUlYcefp=&AzsQEwUrXXr_m=&SRWaahWcrqfkZ=&5il55MYlkodfh=&HwCeqJVmlUbsU=&DRvkteUh_jVdZ=&hBTWNRXYWiVWo=&K5pUJwYlcUqZd=&Lz59UTYWceems=&b_k2FtZcpmb_o=&GSYI5qVYUVfgW=&Nvb7MkUiasbZs=&OqwNmBVbdmVls=&A8tmKaVgaVpnd=&XUpTTcUqX_aam=&gmyiw7XpWfkfr=&bQBERNXflqpcn=&Dx8aUsYZbcUVX=&ob3k8CUdVoho_=&kPH2YZZ_Xqafm=&PxNoctUWUbUsa=&ZvIeLzUcUaaf_=&oOb4pkUlYrllW=&QHQCHQWqrWYXj=&Y5NEqIZYW_qmh=&QISEYKUbsakio=&K5FEJKWfrcjpj=&xGnimkZlrVYba=&LfyproXZnsomm=&wPLufsYlpmisc=&MSP3IqVaZZokr=&gvlkeUWXXp_pb=&ZH4V8XVoeUqnp=&GcSgaiVnhoick=&HBZccQXjflhXs=&zILPCVXhVUgmU=&wBccvZUafXobZ=&9Zi_tzXVYpbYc=&OwCFXdVlVlqfr=&4XjtODZZVYVlV=&ermfCGYlUeojb=&YdkBBpUZpgYXe=&9nzw9VUWbffgp=&Tvp9fFYsbomqp=&BPTIYTXqYa_Xr=&6jFTYQZZcZmig=&QoMHrcVlUoial=&NANeNXWpdjorp=&GocwdpYZmgahd=&KFbI9aYVmkrhU=&8eaRRMZsngdrs=&aXk3U_UlXojah=&AIdXevWnejjXq=&zB4vIfX_WarXX=&W78h6vZiksiog=&KOGtH6YoUrna_=&G_9dylVllpihi=&zROPAhWnpYVqU=&xt3A3FYdis_Vc=&oMLEbhZaVj_Yl=&I2rpGlVUbrnZa=&PjmWdaWXdmdde=&9LtW7BVhhrigU=&laFCzvZbkibeq=&OfI7MtWmVmgfr=&gIMUytXYYXdkf=&J38BQVYpopcoV=&xH7nhsYsdgeko=&ti9ba_VW_rjss=&qguv_EXpififi=&ObqNcSZchYcgX=&PFFdesYassbeg=&phvgSsXd_gnZc=&CxQNy5X_rqogf=&Zk5bOpVYqU_VW=&qVuL2QWoVVlhi=&uA_nEyWrVnsjs=&4u5bG7UdobjYi=&EDYtYQXYcsYcg=&hq_WvEYfmlhsa=&tqv33ZYrfdkho=&YVvvLCYade_nf=&HSDEmDZgpinrg=&VwIG_EYbrhVfn=&5Ee7nmVXmkq_i=&KIWcZdUUpWsXZ=&XPU6QbXqmmUks=&xd3RgOWVYgZaa=&VQHBb6XjffhVc=&ocjdtkXmUVsoq=&3BnTfVVZh_Vos=&ctTPRHZqfsfni=&qQyaUqUf_gegY=&GTgnb3YXaklfb=&9KCqgwXhdhVai=&LJd3rDVmlsbrg=&nqlsBsWeqpiaZ=&XFQfGOZddqgWl=&BgqZBAZXkZXie=&Apzg4LXdiWeVY=&nphq_KVWsUdaq=&O8GOBoWsgeqpq=&bibVi5YpVaXep=&LcusUEZWkesil=&QCOEvEVYn_dkl=&QelsBzZYnXcUh=&OJfea9YphZrkn=&YnpdHXXYdoirh=&3bSVAxXbfVsnX=&V4twphU_mWcfj=&kb58bjUoskkil=&ZwbAXDYVjlpWh=&GActrmZpqpngn=&mLOUZ2WgrkcXU=&ulOM5fUbWWYXl=&obNAGLUi_adYp=&rGVuNOWrUlig_=&qSfYewZUnnrcm=&ArsSBFUjsrZYb=&l6Bf73VhcqXWc=&ILWnIqYXs_pri=&42ntAVX_UhbjU=&6tJMU8Wnebg_j=&INEbkvYmorkfY=&TbAxwgWrpWWqk=&JsyzaLXWgbWpb=&7HqgZ_Xirabmq=&qhIAqHVbjgdkp=&_zOA4jWlfrWah=&X7oLT4Vnbhken=&5NH7r8UWjainf=&wkFOd9Wsoe_YX=&_Ocw7NVfoUffk=&jCQ6wUUXnWijc=&TcFo27Xaachnh=&uwyYe8Xgeiaab=&aGhLf9ZcYjgeo=&ePm3K3ZfhUifi=&9XsKtmZrlqfrs=&HmZguxVrgfqqj=&dRQi7EZXhqmfn=&QhTxmiZgdpj__=&O9j268Unledmi=&n9KT5MYdrhsUi=&WEeMlyYXepmic=&RfsVWXVhppssd=&mQTSzYYsijjr_=&DulNIWUkkgWZp=&F8tUSjVaXYnoq=&X6nR4gZ_ZiUbp=&rgC5BAVqlgZUq=&kQX8I4XdomfZi=&DNeq78UUWeeoi=&Ih8aS2ZpqZkqf=&kELsbGWmbdWop=&eMobjLUhaWsiV=&WXPb_vUsWYssd=&Xb2lvsXkgrhrc=&jHVL5dUenaikb=&dPRWAWWsdpZp_=&VPq3PbYUnXaiV=&Fz6WbJXhqkooa=&dTTv6lWqZcVXg=&z2b27LV_ieXVZ=&V7kZXHXlZZZZn=&TPdqecWekbhlj=&zX6pvzVsdblaf=&cxoXFIVded_dm=&7_wQVDYWkgfhf=&i5HE69Vcsdcef=&fYEyUYZnjiqho=&uC67tdZjfmsnk=&K8SLPSW_YVkro=&CajbiSYXokk_i=&dCQReNUm_VaWh=&SeJNpNWaceWdg=&JkfmjBUoncmgc=&tk6y5PWfblbdj=&MYf5bcWqmVanf=&Omc2ruZjhsXbo=&Qfbk3iU_iinak=&LvDqzMVUpUfmo=&zkprvVXpkr_jW=&A8SkXVVlnZoWq=&A8jtodVqkrXic=&XdbL2mZfWgpZq=&vsTqkCWrjmZrb=&dwduk4VWmkmjc=&Qbx9sgYXrXalp=&6bSMMsWn_onsr=&YYMVb4WiUkqnZ=&uTCxnIWcejZ__=&koNpBHUjYmgpX=&LKXqcDYWnikbc=&K9anWtWUoWYVU=&3ahUVEYpr_rqg=&vhAhovWlajWWX=&Qh6d2pYrWoVld=&K_3BF2XXmkkqm=&JyDvPjXkmrirV=&aw82GVWpqlc_i=&WAmTJ3XfYUWho=&FnEm8NUciiWUl=&Jg8d_xZ_VpVch=&X_aTEQWqadhsh=&R4wh_2ZbnnsYn=&xnFUrOYVbbebV=&wfXfsoXhr_cVc=&ieTd6WZccUdnl=&go6CTaZmkgcem=&5n_uwRZZcoWaZ=&ETqfhBYj_acks=&sX4_8iUggZWjs=&TfXbpNVdW_gjm=&pYgrkAXnbaV_b=&wKOqNDUosq_YX=&ppW4mDUqkqoop=&EuxLJbZ_rcjsU=&DLTkGyUYjVqgq=&nXkdPBYgZX_ok=&slXndIXkpgYlk=&Ec2bnaYcaXZbd=&qXh_OOYjqgZUZ=&3v5FPZVdkW_sf=&nWfWQHV_fkhYj=&oUbbZpXnl_jcX=&e5VO8SXWreVic=&89aU4CUhjYhkc=&yeCgYrYrVrUlo=&tp75qvWddceaa=&oZwMgsXdUeoZn=&T4Zv5FYkohqXY=&wJw6vKVYnWVmd=&wHUJs8WXbZbso=&oqSIsbXenklXW=&a7SRB9YgVlsZq=&fiGsafZYXraoU=&9hsl6pYgmf__c=&IQVrRVZoilfcW=&vkTM7zYoelYVe=&5dyrwMUisigWr=&snfJbyWqenlgn=&LSyfGhWdfiUdn=&fHxpoZUofhsmU=&e2WxOMZdjljck=&Hv7M3fYUbr_qo=&h39ZIFXahYsdn=&9KAyZNWYnZZYe=&ZMF2_3Whcsldf=&rhoKucWZcbe_V=&V6VLubYslaskd=&mMNhi_YprkonY=&j7k7SzZeqqkga=&3xcSVZWsebWUj=&glCPApZsrgcrX=&wF8siHWgkqald=&HyPmz5WVnYisW=&XMxCnzWqosilg=&rn6gXUZjqmiel=&9pScsFXUkZji_=&qiMrhdUZXd__d=&9UoTsQUUYpf_i=&SyLkpxYqbsgbk=&jlMIilXjipqps=&YOkgJjUmjiqpb=&ExsdImZdjchVs=&QeaLPwXnYjUrd=&ScCSYgUYr_a_W=&ebh4qqVqdmssg=&J4pYt4YmdWUYX=&obzW4nXinrffY=&_dRhtQVj_eVlb=&UN_5hmUXXZlrY=&2_MdEOUpa_ZpW=&MJfaGJYXjbWdY=&hcoYqOYmciXkj=&XqTlkeWpeUsoj=&hpQqLTWhpjcdV=&6cxrsFYkfmihl=&jZD8WXVcananf=&4RFyiAWlrcrZq=&a7gtBgUsiheXr=&CJvlzvYkViUfi=&J8s4fDZWZbebi=&8gFm4mWcYpklm=&3yAgWFXqsgfnj=&ucxqwnX_Whrge=&dVMEXUUVkcigX=&sSP4cGYbWdfoa=&N_sTdlWhUpYel=&SgBypKV_XYein=&7Vd8UxWbXcqod=&7KgQUFWdprrlr=&c9vNd6UVbYXqk=&QDx8nJVmnjnZh=&Vucdt2XemeZor=&ScGizsXejadkp=&QfH7OOZfYXWfX=&YcdJyXVpiiijd=&2JCvVUZirqhXb=&p6jLLuZolarVY=&f7qFooVebp_pn=&HNrTwnVsVnXcY=&t74kGAV_dnfgb=&3ibKjRYfqhoi_=&Qvuey4ZrbsdVe=&hQYT3VZhoVs_b=&9gD6CMWeUoeel=&kKyWVcWfeseda=&HNYm9IYqVkbUd=&wuHxGJYd__baU=&9ZTisZYZdbcob=&_NXNUwYZnhqlW=&JNSvGFZhXkUfr=&FcmL8RUYhVgoj=&_xdTm2Ynfiikb=&PtpzOHVbrqmgf=&XEqRfIUgVhUic=&8dGaMtUkXlqYY=&i3DF5DYYZi__d=&GkbH2oXmYYsad=&v_oDLqXflW_kb=&dDwuuHXpUs_XZ=&J3pZI7XhpjX_l=&S5QJktZhYqgol=&5nK728VnkmXah=&uTBypkUpajlVY=&o7itjZUdpiUrb=&DLa3szUWnXfUV=&eJSbecU_YWrUW=&xSVwu4ZaanVVi=&cd_ukpVaabnUi=&I_ULXoUWVcV_V=&xWWiEdUcbfkbs=&slGlvnZccWirV=&fpWKDtYUammWZ=&PBJ7xuYUocZam=&Y4XTQlValhkpX=&tQEcmzUdg_boV=&fbDb6cVkrqfVe=&9bOb77UmcVa__=&ENf57aZ_mVWUh=&P6z4VSXUsXcXn=&lFrO65XZUhbgj=&sb7e9DXnZ_aok=&QOJsJOVedUhWU=&gWyDcRVqarZYo=&rB5B2yXnhnoep=&8bGs5fWrnlbsk=&SVLbe3UXpmefb=&7HJHRyUeWhqii=&CjX45cWlgZ_dX=&LKoEZOUsgnhjk=&SqfD3wUamoq_V=&q7XiXXYZdrpUe=&eG7I4tXmUqeWq=&Qw92qZYkdkqmW=&fW2tfkYedmece=&RFSlMTVhXmmW_=&lYBjp7YUmgfpV=&uy2NqyUk_sXWk=&_t2IquUqhVVhf=&OLUeihZcsZYeb=&7n7VETZmrZW_b=&BitvszYrnkhaY=&OvqfwDUhiUiaZ=&GJt6yDXqYZYWb=&GDcgaTWekfW__=&umjs9hYigiagb=&RZkS4QVgVhoid=&E2AjefZqXdWro=&4OmkyzYfecbgd=&h9xsLMWZZosam=&pRdMJqX_VfpdW=&iLNRfVZfqfkpW=&ywXyipXWWifdo=&oKgw__ZfXiqXj=&eEycWDYXcomWf=&kcU_3nYcWjWmj=&PQBjRFWZZsWok=&rJpgMGWmqmrmp=&EsccuYZkWXn_o=&zus9vQUpVinoe=&VeGC4MUcndkUl=&SRAJnvZVqsabi=&FYuINHYYgeWdf=&NnYvJnYqWilqj=&AZsY6UUUosafa=&GYpwHKZmash_r=&qOm3_FXbWsqVp=&7TA9OyUYoZbag=&QHiuB7YiWfklr=&YmyVP4Xlrqqrc=&qoCIcPXpnisal=&dLfXrpXUspqUp=&KcHYskUnkXjqh=&QIrNFaWinXfcb=&_rxpvtYUoXrXn=&d9NnjzXfmdXs_=&LdDFXWWVUUhYc=&lGdQtWZfpfq_U=&pbkGLrVbbUlXY=&pwohHkUUnipYa=&KeqYxOXeirrWn=&CqVLJTWho_kXV=&jN3omCYXVpmkg=&8j5n85XiiijYb=&ECRCztZmZ_lXg=&y98jPEVjfXonf=&vo35cdWV_ZfXb=&SoRwubVsXlVrU=&XWdt_MZcWeg_f=&Gfqg2NYqanoij=&_YTEh_ZkhZmUg=&KI3YAZYrehpmp=&ZzKljmYsffZhf=&76ES9UZfVjUes=&WDrjlpVbkengb=&r4W5QoYfnohXV=&o7ccaZUYesoge=&WZojqfWhfkgZV=&WZICCXZkeboYd=&MBNJAkUa_iZfW=&xCE7GSWsmnnhZ=&DIxO8eXammpnj=&OaypNQZUiZUb_=&gkIBIvU_jg_jV=&l9ksQiUXihioo=&lh7hpbZsnsrlq=&Oi5iJJZkgYpVq=&36Fd38VdpWsnp=&viD9pfWjgiVja=&edxatyUdpilrU=&HXUO_wYmqU_Uj=&5EnuCrXbbrplV=&g93kyvWYnZWrj=&KODHYiUqiiZsg=&XabMV5Zgdkeea=&Bz5utzWfjkhcc=&DvyI_wWqljnec=&8F2nGJVn_hZbp=&CRVcuyWrkpdqg=&dixKzKZZliUVa=&E_wZmkZZUcahj=&njyET9UpYm_cZ=&osKZ9KYsYbefc=&NRhSc5UosescW=&ZGlyqXWWmWcoq=&zvjXAmUigjidb=&kzGOGiUamcUqq=&XlHb4fXchVbXi=&7dH42QV_lqhWo=&DZCX9SUldUiec=&spPUgpWpmUsVi=&tzwiQbUXYaWYp=&lKarvgXWbdVek=&qioPRkWqkjlpi=&WCLWcuXgg_nlh=&WhcJ8JUVqUXar=&ibjyguYUooa_j=&FfOlppVZrdemU=&YoxfT3Ug_rqar=&M_Meu5XscanjY=&99NgqBUkehper=&48xMXgX_UblpZ=&LAok8jYkoilnk=&J3XSfeYdabr_V=&dPpwPTZh_nUXq=&OIugObUrapcpr=&FBLumTWniWpoj=&OOa9v2WWsdkUi=&TAT5sCVsqbWds=&CMZRj3WWraeiX=&P7UphyYqeYkYg=&6ADxt9ZpUljrs=&EqNQRPWjVqiiU=&ZZHvuoYpndVf_=&gJUicdUfWXoWl=&VjI_b7VjmWZda=&YOhEu7UjiZhbo=&HjVKdyYkrcipp=&nQr4BtXbdbjVe=&JmKCeiYjiqcds=&N6fYkMUbWUsfU=&uqGBWoXgaqiXW=&8vuu2MZrfealU=&HPemDZXaleeqn=&dooMZwY_crqrV=&YTnZ8PXYeWZZl=&jSRCTgWejkmcl=&Q6lwP6UjnfXmr=&95ehyAXbkonrs=&DVAserWrqiUqZ=&blnmeJXmldUmm=&h4rDDIUrWddsV=&HAbbSzXdkrqqm=&WK3TUYVndr_Xr=&6ro8rDWaijkVg=&RUFlqJXYnYagn=&6jaImHYdkZjYZ=&yHr5TrZhhmWio=&oudE8uYoaijas=&869LElWojsn_d=&JHoTMlWqnmejZ=&XbUAHiZerpYef=&E4R8KaU_piWfW=&uCV5v5VpWaWre=&IrUNr5UVhpWhY=&k4uFCDVkVWabl=&XHq83tYdcdngW=&FhZBBWXYsUgbW=&yYNLPrYiWXfgl=&qVhOvuVbUqmWW=&K3ffK2ZXdnYqi=&B3sFEJZfrqfrZ=&sZvtACYWmebod=&mFhQCeXUbVsZV=&zaXgf7VsUahUW=&6xLY43Ymgiapm=&bJISaPUWnshmg=&vfwwPBYieXrjW=&RfZB6UVbZfdaj=&CddqKpWhoalgk=&pvKAaIWbsnlWo=&Rt59RPXoWoslf=&IOIS3oZqelXs_=&yuylUqUaeVkh_=&EfaBJyZeflomZ=&dUgWkGWUsflZV=&ZEAL2MVqVfape=&wes4bRVrlsUel=&KOAedkUaVnfgn=&b8gnhAVnqZVrm=&o3E_4kWnVoage=&dAxqhsUsrcVdX=&64Xpr4XnrjrjX=&5WbmJVUbbgflk=&O9MZAUXefVehe=&RWdvoAVsjrrlb=&A9efjHY_UhfsW=&CDykrgUadefV_=&5woTbGWrcYXed=&QL_bsQYYhkWUW=&Gkent3Y_bsrZe=&emd3IiXisdlqX=&f5otSTXrgVhqa=&ZEpazuUbWe_Vc=&kGsxVWWdqfWdk=&2oyyitZoZZfeV=&FacywKVenbagh=&TbjteFVqoaoqb=&UEvkzcYqiYU_Z=&w8zzg7Ygahsan=&z_LSnJUqZsgbr=&4zskM8WVrddqa=&fVwmI3UZZgYmp=&wnCBRGWVcUjco=&VR75plUUoqlpV=&AhyXChXqgkpqc=&apLs2tUjXbghr=&kmIgq2VrfUdgi=&BEuqGrUXsqgec=&7PpkBBYgkkUpW=&jewYQxVdcbiqs=&wqzMc4XbjhpjZ=&LlsgnAWgoblkc=&9kwcijYrWljmj=&yGgytqWm_lmkX=&2t22mNUsrlhlY=&9LEDUjZmjpYbc=&cUieGcVefohVj=&tEjyuJXo_grok=&thkmIaXjeeYkl=&WeqPPHZerphll=&KxV2XOWrqXr_i=&Ipw7jeVqrssfk=&KyUiZdUUYdoVX=&DiOg8CW_i_nfX=&QTKFRrX_eYkrZ=&Ym7Lt8VY_XgZV=&bcvuStUkhesd_=&rVP_SRWepcsXr=&icLvtRXmsppmk=&vRmSG5VWZXmie=&WzudYBVfpjdql=&3rZfsKUqlmmhU=&5MsMzNW_jqnef=&jBwtDnUpgjsgk=&HXrrpMYchZrn_=&nQ5wkPUfakjsh=&J_i38pWXUmUpe=&LyewWvYVhnsgo=&cyBtgjZrhUeUZ=&kIknfSYpjYsfa=&CT9x24Zk_sVid=&9nAkqVUpopaib=&xUY85lXklfWWZ=&AegDwEWhV_bop=&XiSgiiXdmhekl=&YWEalnWXbbdUh=&C7VkPwUYck_ne=&K8y_UuWjclXhY=&EBRFeIYjqlXcf=&k66p2WYmreWnb=&twATWUVkhrcpZ=&xHAxCuVa_qnhj=&Fm898nVfjklqn=&JloylVUqacfck=&cMO4BDYaqZZgi=&w4LkR8Y_Yhccq=&n9bbmKWmZbWmW=&ur9OrBU_pacsh=&f6opowUplaYbl=&maKisYYWnkmmm=&pmjNXcUUgocoZ=&CSaXQnYnYU_br=&z6P288Umbrcro=&g39v35WjeeXmm=&UwNJ9YYkUarcg=&DdUOLpUsdfgpa=&rCeWQmXcpnabc=&5GLG5dUe_idgs=&FEvPKkXeoWWgX=&mCtZnRYgiUXso=&SkS8fCVgeiUsg=&MmOCeWZgVkgql=&9oN3ybWfckUgg=&5ETrHZWggXheX=&Ddf8RTZffmmWk=&J93AVoXZX_qW_=&gdNHwmXZlnlWV=&56zyaiXXYqfoc=&NTw3noUXmmfnh=&raoN5NVooWdec=&BSEDGRWZarhYZ=&morc8eXk__mcc=&xGEz2mZjcWVsZ=&YPjoQGZrfohqV=&pVZ8mBVWamadc=&vIBedwXhWsffo=&MmOmMcUdpie_p=&Tl7TwrUWg_XVb=&O5hGsQYf_kpsY=&9DuEWPYhmgefX=&Cm_eYDVoUfohX=&lCAuMtUcbqlYV=&fGtolmWd_ikps=&YsCBe6UfgiXih=&OK5GuyWjWfVYq=&5WjYhqUqfjljr=&GxfVslV___sWa=&DZt3UFYrcZofg=&favEVtWigYkUp=&rWjVM4WrfnosY=&6XrQM_Zfkesnn=&485PQsYkfaeps=&5UeA5ZYdjYjfq=&zSkLCdWio_Vop=&bV53RbZodqmZk=&qdukWhXs_rmdY=&VRbIE5ZdVsjWa=&ri_FjtYjascqs=&nHrDrFWmkrjXe=&p3Y6zTYdlVkki=&DPjFGYVsYWiqW=&q78lBoYrZclri=&kg27zFWXeYUho=&mrEaF5Uh_YWUU=&fLTv5tVdikoXZ=&dUgrlvUUidVpU=&TvrHgAUU_mhVh=&DqOMeEUpUeV_Y=&eeOCLrWjdqZpj=&THc_v8UgpaWnf=&huuGa2ZidXUWo=&sMfGKXUncZVfb=&RgBOjKXiomihk=&IJ6PneUoWpnVg=&dW2KYRWpiocid=&7CUh4gUUbolYf=&xNT8A7WYrqWnb=&E7TSIhVmpZ_bn=&qY7cu9WheeqhZ=&AJQZzPYgqlXdW=&jfg5dHVslUipU=&kwkMMrUWnYrhp=&e2sPUTXbVsqha=&piENfzUsalYaa=&kYzH6dYja_rrs=&Ec8GJTVfadpsg=&ZSYxUBVVspkn_=&9Az8QRVUaVhdq=&5bw7xKY_bfpbV=&nch_yjUlabZXm=&ZwykWBXkslbdb=&RJFRxaVrpchq_=&w8jfBKXZVseUo=&DNNOBOUfkpjUs=&9m4UlAUqXhoUV=&AmLVXPVeiYbkp=&xONrJfV__ilqi=&iBBfKgUbVcshb=&MBCiZwWidX_jc=&n4qZXtZhUolUV=&jxmYrUXXjfYpj=&uBkxHyVehsUnX=&Mq5PnJXqqkUYl=&FcFYhdUsidlYl=&JtXyx_Xdgrike=&SgbnfhZkdXhf_=&8suuh4UqchUcp=&KGEL3gYXrfoYn=&_CpyXRW_ZVbor=&D7la8RXiolhsU=&xpDpA5Udhabld=&KcbNchYserYeV=&pBXJiuWWpenYj=&oIUzkQWhjngkX=&hBmuT9Uk_asgm=&haM8ySZXlpWUX=&W3s9qSYYglkia=&ld38fsVoaglXo=&DRzgb3VhUs_ri=&FAoNv9VVeipdo=&iKYhSaVgno_co=&qqsYSUXoikVjo=&fq8rpYUardZYe=&fw4OO5VjljXio=&83YIBtWVgUfdb=&pwYvO3Ueigacr=&MDtBxhYbjakUY=&_i75f5ZUojgWW=&OfthJhVsrpcrm=&KHC9U4Ufrrlqb=&vPUAsjWVsppkn=&NUPWShXpec__s=&zGIb48VYbirea=&h8PN3pVfshWna=&eA6USeVWefimm=&W8JT7_Wcidicn=&jR9Ji7Xeelsgi=&na_AYtWjViZsi=&LozHZZVqjpnge=&ngwoLdWhYflnc=&_pABESWhsYXUn=&FDerowW_phios=&KKIC_qWZsjUoZ=&6W39T4UfqYfdX=&gwfyOGYhfaWoW=&rTjmiFVXnjark=&MQNPzMZZUsqkk=&CvxhHZXUmgaqV=&anDUyxXffbkZp=&_392rCXefsZaY=&ayx2_SXWUWoeW=&ydoGPmZsdnjUh=&fNeNmiWkeaibp=&tGJr_kVniqaee=&uYqMFlWqaoakr=&CDfORgVorepaV=&VQQDqZVflidjd=&ezrO2kUWelUWp=&Zzxp4uZZcYUrf=&Nex8MZXo_ijWl=&8BAdEvWsk_hnn=&uyFbECYUXjc_b=&sFv7sUVpqckWh=&A_RFKFUdeqXbl=&aqeqJzZehfoXX=&zbVh3RUnWhYcg=&Am77NnXekjgZe=&5okpb_Xcoceo_=&HfUGIyZdald_j=&nPyqzVZmrmWZa=&TONzXmZsViprd=&zwER3VXoWiors=&m3ed2rVnnWfke=&UJVEJWVscdnpk=&7KNImtUhYmqkq=&QkOrSCUojnbdg=&aOKXMWWr__Zkk=&5THGEPY_Vkfld=&pZj2_QWhgWmWi=&bcq5h2XhbpZZg=&piUHHQXWZ_hkV=&wkzNAIUeYmlfh=&7Hl6X9UUeojpf=&_LVkh6XnWaXeW=&ymtnwoWYdcbpo=&HDAJI5WeVqkhq=&oZe9h9Zredbfe=&Wyj57qZqedks_=&zmF5vwYmhmcna=&5ymyAAYgrimjl=&OL5jzXXUUfegZ=&OP7tcdVZoeUpn=&ArsvWDVqfdfes=&D8HKU_WobZabl=&R3VkOoYoV_ikq=&GwzbuuVsmsZVq=&GMToIUYVoWYpc=&mmPuzCYnniZom=&87w7vBUsfhgig=&2YbVnkVrXgYbf=&qJX5_uUbjajdd=&JolLO4VnhdWno=&oJ6GjPZmbgpsg=&bgui7dXkpZnsb=&TVjAGoZhidnsi=&ipvf_TWoVhlhl=&gzClpaYiomiUa=&B6vzleUlUqmUf=&EdggbvXdi_cZf=&CUcKLFVcbphno=&erRHsJVbUpjiZ=&x39wrQYbZeghg=&4hsaiZWacqlXq=&IHmZ2DYWffanc=&QwERWvZgkVkZs=&ZwopqgXgpieWh=&wsJ_NJXVYkgqa=&lC4RePXjgilfh=&hbi9klXhqcsqe=&mSy4RyVVZnqin=&wYQ6X5Uqkaobc=&ZRcg_vXjgYdjW=&FJuFOBYrrlkWa=&5sPkvKWqpWiqq=&94oZZrVkaVcfe=&c95SoVX_XpUhg=&KpZPtaVnmXeXX=&9yiBfgUqWnkUq=&Pw3knzXimgXqi=&SS4OVmVkj_hUc=&WqUPQuVXkrrZd=&CTn5bvXbbhXUs=&92Y_L4XbVrWVf=&Jpew8UVecXUWU=&K2P8veUolmeZh=&JhgLthYirWqrg=&RqiBNoXnaqqnV=&Q5vHZ5XscfVna=&fyfyQWUoibnhs=&MiUuhpUqciipg=&ipkifPX_iXbpm=&JI8aZwZhrmeor=&dg5ct6ZmZikae=&l4wyB6YXoWbhe=&SDrtVsUVUjbqo=&numsW6WUYnf_r=&YgDpMRWgqWeU_=&GBnHoOX_aenWc=&Rzo4JoXamskbr=&qhVTl3YreqhfY=&aMW_xgWrsYlfX=&CRaoOMXUoXhl_=&mBQnk9UiZceVh=&LWJohQVlkofqX=&itexQoVgeUgrb=&JRXyAEUkfcmZg=&p9e3VrVdjbaZl=&cEzkKJYprggiZ=&9VtHtqYgcromc=&w7DvZ6UilrXmW=&4XGjkHZbqV_jV=&8KaKyJVgbfnds=&RLU_TOVmfoebV=&QkbOfIUbVkiqn=&8JzBclVjqWVgh=&uVej7QXXapopj=&mKJCDzUosYUWi=&NZf8xCUXfo_iY=&4UCxlFWU_XXoX=&SvOCh8UiZrmee=&odetVEZkkgnnZ=&6ANerEXremlgl=&j65owCWsUbcUg=&MZWfD_WgqgsUY=&kSldcrYUcjlVV=&23h4NrUqfdfYX=&iTuwFjViUXgrl=&WUMcQLZrpVeUW=&JCo7z4UbdXccV=&V2PBmwVbaY_ja=&khKGd5VYlfapp=&ca6CYQYf_il_g=&FNfT6VXWZiUdm=&i7IW8uYldljei=&QQn6_hVWVZaUd=&Vl5gC6XYeXWgY=&U4ZqKxXnZgnXj=&NTzW5SVc_VZjo=&JdHzGdYaV_ekZ=&Hnq9niYsrlraf=&whyuTEZkbkYVo=&5IijDKVZVoglX=&bHKnBfZjlikpY=&x7RUWVVdUsagm=&TwUrnZWk_Xndi=&Q4r9pTZipVbgb=&9d8GTjXiXeeor=&dED5btXZXhfmW=&NRthGoYWbo_rX=&ZPHXUPZWpnedU=&ur_fmvXroZZ_q=&sRXRdpWZXgdYf=&NM9GT4VUfVfgW=&vFx79gXd_napa=&4Ec2e9VsjZdUl=&Fs9o2qVaimpgb=&olI7CyVi_Xnoh=&w4m6u9WppoVdj=&vfpVIhUlpoblo=&dKWqKZUZqbfoi=&OcRfiXXdkpVYe=&Lf_KRHWZUfXVh=&8DZYVKZafbbje=&8QzQ5ZXlZdVcZ=&OjgMbSZssiZgh=&UbxfUfYippgiX=&s3UEDbXgebfsa=&KQwqgFWXmZgkk=&EuhP8IZhkUim_=&Himyx3WjliiZc=&cwraEtUiiqlmi=&cqdifDZllmqan=&WulFzvUglYYYm=&sdnsDJWmWgbke=&V7wBUtWnUiYmd=&N2yvV5Vokbhce=&dScdNBVWqZjWU=&QxtVYYWniZsbZ=&Z3OBBIX_hqlWh=&ibV_mTZlhgpdh=&HbQFQzWaiifoe=&X6CvtWZkeWb_n=&CodEhgZXkUmVW=&4skXsnWasUcfp=&IDUbWyVjsVmbp=&GwHbyYWgjbZpb=&u59wGQWjVkWcV=&ZvflzHZmYYjXk=&nZXdq5UdXfobf=&QgV2OgYpX_i_X=&4eNuvCXsmkVXZ=&UxXElRUsZbnYa=&EoLW5GWaqmsdX=&45A7ULWZppYeW=&nWokMsXspfkYd=&L4WBL_VgqVqUZ=&RzpDDjVkrgWbq=&UmFtecVdWhlYj=&89TkxEWbfgrWp=&XS2oi_Yoermsq=&vnjJuRVcdXejU=&ZKibGxVihoXUl=&Zf9NU8Vqdpeoo=&HE5LP2XdigZss=&7JzfVzXlsdZZb=&xtvMkvWqZYVje=&IsjI2EUepcnVa=&wa6PcGZibZhWX=&EqOTUwWhsYZfp=&IJpYK5WqW_Xia=&dB5UZKUsbcZhV=&6Fm4GCUef_Zmi=&VPmkihXqUpgXV=&FvBeSLVse_gqg=&cLD4RyWlXjmcW=&hAOxStVrb_hiW=&_YRW6NYsYcbob=&qipIfoWacgUhU=&TOiVHiXkqWWin=&WAQ33ZYolafqc=&uxqPi8XWjefpo=&dGJtxkY_foX_p=&tuFxveXbeZbng=&F56iwWVUokmU_=&4VePpNZphkbpl=&AShivmWhWeo_s=&XnggpjW_akWkp=&rbqGn_YiZjfdo=&7In3rrW_mipmr=&GPwZbUYgnliWs=&YKZDitWjoVpbm=&jkqJqiW_qcfoo=&sJbDnaWeqlUke=&6rtVE_U__Y_ja=&RXJoD2UoWscqW=&PcP9xxZqljkhh=&rOG9F7XchWYUp=&wlbfbGYVVYVpr=&TudRLdU_Z_clY=&PBOtwrWcljiiV=&AQ_kaDXdrUjki=&VTN_JbWjcosdq=&RwOOxOYloorqh=&y695CEYicpcXg=&2fAKBtWfkcYia=&xhIFAPWjnkYiV=&rsILrjZhdronq=&ZyURTwXfmg_hj=&83Kh29ZlpriVZ=&Iuzsa2ZggemkY=&zLT9k7VlfjYfd=&3r7fadYU_fmqr=&eaf9wpXhbiVWZ=&lU9QFzUpWqbeg=&_YfXJaUkZXpXY=&e6ezT_XkUcisV=&tWuUUwW_bsYba=&tZc44IZcgViVk=&guxn3BVafZsZs=&YT6rFsUVZlYbZ=&bCkfYRZeobrVq=&CDM_YfUVfVdsZ=&JyqcxdYnjhWjm=&OyhUNzVgjqgWe=&oFUgGWUpYXqkg=&LzzcvPZegcmmr=&WpOwMjVeafYcV=&UnmU6oWfXhqik=&SGaM6cZVofkWf=&zUYJb9Vlgkfar=&9zQVW3Xrpahlk=&Qr87VOUZleZcZ=&5dMNYqYXhmekl=&mHULmjYsgfaqr=&b3qvUbX_rned_=&RqjIqQWWfsWhV=&DHUtE5Xerhlmq=&Vd8w5DVcmZVUo=&7fyuR7XbebbYh=&4tonkJVpjbhhj=&PHgn_9ZcZUdXk=&vK6W5mVcjorai=&Ip7bldYVjskfe=&D6L3LnVjhahke=&3ue7tmZjjWYgr=&v9wJH9Wh_hVdi=&p73yHsVkhc_be=&9zUN9vVeZbkZW=&yGpZGzVgsngkU=&3DRBrKZgpscef=&Am3tTlZkoZcsk=&qAGMUDYr_pXXi=&OYTUkMVpbhqrh=&IiJG3gWjiY_jY=&qkzmPaX_dihWs=&HjL5waWeesrqj=&GzPjaPXbrbgoX=&TlwN7iZsljVmi=&_6W4F9Xsjnbig=&ksktriUjqh_Wf=&4vEtf4YYdWUsj=&9V_LbpUohdkeb=&7fjEThUrdZimo=&6Wi6mGVopfWmg=&ubfeeUZoVYXZp=&vZP7pPYZim_Ze=&_ag8avUWpkhaX=&pjD4zLXYWhWiZ=&m_bX9lXVpoUZW=&tc_bYaUgcboUk=&_gILxxU_dlYrp=&a_7leyYknmdhV=&G4G3GeZZmbsWj=&5qVHolVYkocir=&OlQCnpXpUbdYe=&6KUjZpZbn_gfr=&my4ZABZ_sXrmr=&WOT2QCXhkbnsn=&CQIs8ZYWdUYnX=&n_46h9VnUYjbr=&fVEAxcVrfbgVX=&9EEQIBZkiiVfl=&Jesa2eW_Vdrga=&6YVMLhUkggmqj=&pUIokNYfpWpVb=&kfhqs9ZVbXmjs=&m2agQBVq_qmoe=&NAWkDFXeophmV=&atKanaXflXXld=&X4cfN4Uef_kgd=&FvNYsoUjproib=&Xt9arzZckYsgq=&TYWGbMWjlYWfi=&TN3OMuUgi_ogX=&yuGGBEVgcjkag=&eO9NgeUlYaqqV=&VgkmcYYdnYZcb=&Z2YdErUapioqq=&_lziBxUXaarZW=&3dxyAKYmmobgq=&eHxrGJYYrbXqc=&93ugVqVVUqrep=&6jb97kX_gYemZ=&OtNSmFXZlpUsa=&HrgXUVVhbrXYY=&wI7vpzXsfplq_=&f_ik6xXsXXcgV=&9JdtDbWdbpjlV=&haGtzMZf_fcmp=&fcdF7uWjVqdhi=&YyGhs_Wqgabmf=&vyuo67XbkmmVm=&h7pXewVrelkd_=&fZtpTIWalqXWm=&maGu2PYqolYka=&j6LqNkYWaUYef=&IJNRH4Url_Xfi=&KVeT3NVcYgqpi=&29sfLjVcjhibV=&tTCPGQYgs__eq=&yN5QOqZVlrjkp=&mhVkKUZanem_d=&gHW9YcYpnVpqg=&QBtiC5WVrisbW=&3ZiJQEZUYcoYe=&FEUMHLUdkjqVh=&72vTYcWpqfaYc=&_K26N9ZikcVjp=&5ohFm5ZpXlXam=&6h9z6uUbnlUXZ=&MgMyrAVlpYpYW=&Z7LVwfXkWUZgn=&HLU4UpXhdqjoZ=&ZzVf_JYdjdbWo=&SzTO5xZqdYpXs=&JzFhEWYqnpYWV=&CWf462Vcbrbob=&joLDVjYWblhlW=&NX5hvAXhaXlro=&QdULrIXkjYYae=&GdZUYIZZic_nk=&zW2swxZdbgXcs=&j9GTb9ZUpcelb=&ahjDbSVmrWZZh=&mvHNzwWabemfl=&xpmt8mYdd_egV=&AQ7Ur2WY_qjXj=&OsDymuZiljaho=&aoee4cXeconnp=&zyY7REXqeZsej=&SFydoyVXasZok=&sVwEftYcYdmij=&6V_caaX_hfeca=&M8dy2LYojabon=&BGpik6UUmcms_=&3sDn3ZVcdshcb=&djpA46VcUoZrr=&F2JcqBVpngjrk=&96s9OAXcVYVcj=&z64LyzZofpdWa=&2cmmTKXokk_jd=&CHsqfuYndWojo=&FBiQRRWdqcpWd=&uG3hX4XfjUfaq=&iITl5HYoc_noX=&TYp_wjZkpleen=&TonQ9VZZkeVsl=&W5gIEpVWikUZm=&jGkoTJUgoeklZ=&iZV8vwVXmg_lW=&92tB7ZWUqihYk=&JwLBGfXW_hlme=&yjyDvwZUdpVck=&859SqrYrfVl_n=&tBNFdmW_YrVaU=&uu9F86UYlkprj=&M2IYAuUcromlm=&Nv5szHZmWcndc=&YQB_CYWggUhoj=&8a62wEXdZn__m=&6Fno8SWVdmYbW=&ngnQkmXodcYla=&gcSWnXUsWkhWe=&44qQhfUsVarUd=&lVQrfKVYsmXhW=&5u76sEYUsqnof=&JaehgcZjopjh_=&jddN3FWijeoZi=&lbEHOFVaUffbb=&ecxZjNZXakrZn=&iVwzRsXYmesar=&qcBS9TYaXXba_=&D8ldjnWhpmgUf=&ckZUanUgqcoon=&F_dYmKUgkbYka=&Il3z66VfffUon=&jbbxInXdds_Zc=&wznDhmYlcknfk=&4pL9MnZoeZs_Z=&tOICQgVcUYjUa=&uv7RBzVgaaZdi=&VSfErpWogUenc=&DYiaYZZbdaadp=&qDTkNNXgUlkih=&bQBchPWjimbbi=&Gw64QDWofgkgp=&VxtE_BYoqZcnZ=&og4xGWZhVf_lq=&PrFUcnUblgkXk=&OnIDPzXiaW__e=&VzBuZXUqk_smY=&7R3AFTYUXskUr=&gzI7oLUkkfqjb=&a_3_otYgYrlhl=&652_cVYkhmebm=&8DxHHKYnpYe_q=&JZztUmUblgcpq=&wbVTjRUqqsbsZ=&weSc8KVgqiqbe=&HV4yZLWcnYUhi=&vkAILyUfYmlsp=&f34p8AVkeelUj=&DJWikKU_gpkjd=&_nOeupWaiVpef=&xduf_zUiYchrZ=&BQUemoYeiWVml=&kWPtOBXnYlpka=&GjCDipVqisgeh=&c2DRu4WZafWho=&wx8U4QXbVUbpl=&VhQfRMWUnmdVk=&AOwbHFUadloVl=&sB8MgrXj_YqVZ=&Mn2P2sXjYmZhn=&sxYnEfUWeakmU=&SlDQv6UodfXim=&pBDbvwXs_hUrl=&EAGhocWsYd_Wj=&p6LfBsWZqsoop=&EFUlY2Zcap_lp=&5tDRUGZfVoank=&e9KamiUfhpfUh=&CDuPjkUpjljeo=&ngh5kYZbYUX_Y=&fkYf4LWicVVVi=&MLXkjsW_djbYZ=&5fFpFMUYdZsil=&hvLTUSZeUlkbg=&RiBYKuU_Zpolo=&hHFCENWfdlWXX=&yTugZlVcpsegk=&tPsubqVWqn_ek=&Yvw2bvXrnjUrY=&fu2SFAUdZmn_X=&RESC3jWsqrrWV=&XMrNFMUXnools=&UIigUtXprkpZf=&E_lqQYUZhajpe=&L_lC8EYopjiVn=&VFdnW6ZlslZlp=&MoEusEVprerUn=&U4wkoVWorVVsm=&nbCN8RVdqXZWe=&Hsdi8YVsXsaln=&F3nDrlVofYo_s=&8_nfx6Uchomed=&pFvVu4YVmpoXX=&APbOnSUfYkgh_=&pkE6eeUjlehWc=&mMYdNmVp_YmZe=&4LTaymVpkpY_X=&Tiqvf5WfZqnni=&4MoGkiZmshlZ_=&OBRfdWYqlcfro=&lb7l3bYdkjhdZ=&9jirS5UhXnkbV=&yl5dLZUacjanj=&APSYCVYlclYqV=&RhWQN2YjZkokl=&vdlRLKVprdWeg=&wcZ2g4UqlXZf_=&EBQQQyUmemaa_=&3ALLZAZgZqUjh=&jb_akXXYjhgrk=&BRDisbXlkbhab=&GFPmuCZ_kljoo=&_ASAqxYgVcchq=&ML_AWEUmVrr_j=&xBgg7GZnqlasU=&BCZwUoZjXYdWV=&ud6Yo3WdspZff=&m7P8lLVaVijcc=&nC8_VbWiormbl=&NLiqkzWdpUbed=&2bJqpZZYiddZk=&ANqCwRUcZYiYq=&IlucASXgrrna_=&LfKJKrZVkefWa=&EGfDqRWadcjrl=&GrteooUcnqppg=&ymufWYYhbolfW=&pA5XmcWZVqZfn=&eN4q8FWaXUico=&AbEd__ZpqWhbp=&juGDCFZkcXi_a=&XokimrXb_somp=&zr3iCqVZanpbY=&pmNmwDVgpjXYo=&7Vr7myUUsYWf_=&WwovRZZVlVisY=&XbBbKqXdcoapq=&izOWkrZgsUknl=&uhOfzvY_bXVdj=&OALbarZddWomn=&5sfhETVrV_ZZn=&bcBq9kYc_pXWV=&PR27PgZgjeoar=&zoN3fHWejkm_W=&jvUrOlXgmqfYf=&hCGXoqWfnebjV=&TUf3L6ZaWopgh=&KKJNYDUeddbmd=&LfHcLxYbreepb=&WGkNj4WbdfWhU=&kJrTbUZqnWfYa=&KklbxbUmXnWiZ=&eNrbhgWjdkjpr=&6UtAIXWbdqhqV=&ZApL8FWheWpig=&38nbPTXfmeoao=&EoMA4vWUnfgqZ=&LqbEO3Vk_qphe=&d3SuuQWpgVslh=&BIF88QXbpsbVm=&gWra7rVaqaqa_=&Bh6r9IVsYaXaZ=&6GTIgoZmWsoai=&kEuspKYnmdkUc=&htjgEaVUUldar=&_HP9RbYneZqVk=&AHnMTtYgl_ndW=&UauZblVXZfghd=&GxAI6zYX_lkrj=&O2ENwXWinZUeU=&7BBaz6Udk_kph=&ErbS_fWesceog=&QWL24TXYlfkcY=&f3mJxAVqqVcnX=&h5BWapVgaeUYd=&HBMZkEUk_famd=&QljaBcWfYUXdd=&uYGAUjWqnmnme=&kVYD7WXjoc_qh=&eyA6GZUijegki=&hoYkyaVdhYcaX=&Sg2ts5WhXdklp=&SDRjTCXoeZbok=&DVc6mjXZsWeXU=&bq6AnBZqoperm=&NnNbDKUoWUjdg=&uftb2qYlaVlaU=&_xvIHGYdpndhr=&QB2AlrW_hqpbc=&7nOSRoWskqWeb=&WAnHEsWfaqmjh=&Ijnt3oVr_Wnhk=&7fZDvIVihYZfV=&xrGERuWdajjde=&H2mhCBZVbhhnf=&RIkWv8YfVk_jl=&YuJlOEWkafsbV=&xgADo6ZXnmqnm=&YSVdtOXhn_Yaf=&7E2AEYVjdkrk_=&KYCFvlVmXhgrs=&8Be5YzVfcUYYW=&cZ7MRpWbefUhd=&kuS7rxZiWhVVn=&X32OAOUmVlXaW=&Yxv4g5YalchYU=&LICpeAZcqhaZY=&o5vLrDZZ_Uepi=&Gss5SWVsc_sWi=&mpV9C5VU_Yggk=&LzWmnYYepqjfr=&sJgv25WcenWij=&FdWntPWUUUqog=&pg6Fo3VVnlVcp=&upD6IYYohbrsh=&SiftlGYmVWUng=&5nqiVFUZUrflc=&GWJSpcXpkmbhf=&aGSvL4Vjfhejf=&GLGENEUdkbrmU=&HXtzxzZsUrcfk=&Z_vyLnVqcjrbV=&fttCHfYWWjmmf=&YeqprpXshfrU_=&jW36lHWdncisr=&qRtjF4YWoXqqf=&KlTksLVfiXkdc=&TpapvkUndfXhe=&DMQn4eYocoVgd=&EqAlAtWoZngoX=&YyxvTFYWhaYoW=&udUqFuWipZZnd=&H_KFvjZeY_Zof=&JnPYUbZfUkeWh=&UMCCCIYqWsmkj=&DdJ7H8WhdldkW=&n5CQcHYhaepja=&WGKuD4YaZnhog=&QLiGwIXf_er_f=&dPz_krWXfXfVU=&mAhMU9UWpc_dq=&4TzOeTYhXpaqU=&hW6gusVVkjlbm=&YOzzG_WchkXnm=&L7d9pSVa_qjrb=&c7TcTtYbW_Zk_=&okW6R2VdUWeWW=&LzmbReYmZlniq=&QzaZCiUVWUZnU=&_C9xuhXaZYkfs=&26Ds_gWgmmrgZ=&9izjhYZdVYa_V=&PikboeUipjgsZ=&eEJreJVg_grWe=&Ze7kc_YlcrhiX=&ztD8C5VrUZiUg=&xy4qnPUmslepV=&95WlIoUnjrpmo=&yBGc2lWnleiXX=&jwDhnoYkVdkhi=&cryl98UWef_ZY=&bBUPeRUWZ_eos=&Y6XuinYsdfqmq=&K9Zx5HWaWbWZq=&2ci_LjWgkqs_a=&mPqKRsWYjsjpi=&i4wlq3ZW_frbp=&gEwHqjWXbhrcZ=&8M9R5FYZYo_Uf=&oiBS9bYabUmlh=&nepj9vUjfbcnd=&7evPzCXiakans=&ApPogiVUqmfWV=&BuBEH9XmegefY=&9NA6XzWpVsgmb=&yV98pvUqqdrib=&hdUXZ4VdqjhYk=&Je5Jd2ZqipVff=&gmVVcfXoqfYUk=&NMzTVZWV_cf_s=&Ci2aKMYfrngsf=&FEvBzqWXagWdp=&c2kT4bYVkXqXq=&KXHQNhXmabXnV=&2WyIhcZoepnc_=&fcR53kWsqe_kn=&5wmOU8ZhUh_lo=&x_82e2Zblipjg=&73oYgTYXZea_U=&KKDarCVq_gWma=&vyDOSQVrVeYaY=&dX6_v3Yergsoq=&PZyWlXYheohlk=&6XoZopXckWcea=&mWWtOIUVoppiV=&26Qe7rZVVlckg=&t_xKYaXYgiglh=&ZsTiZBWnheZnX=&uZ4TiqU_kpjYe=&HNWpwCYWVilYc=&DXr5DNYehd_nr=&dCHf6EZkklUrU=&7yhfibWlheWhV=&xpSzmpVsrpdfY=&aycSDaVeWUYdW=&VDiWp7VsZcqm_=&pI8TUDXijrccW=&r996CoVqiibgj=&NRqbk2VV_ploj=&oEgSszZeZegfX=&HbvsdGXeYYnXk=&o4LyhdVpoYZoa=&r6CkzNXVsdpqj=&9YEkmxYpgsaYf=&grL8FdXaUmdfr=&Ox7gKYXqoneYm=&seDs2LWnlqVXs=&ZhtUAUUlgpsWa=&aHNVkwXUbbsba=&ghDik6ZcoUUgl=&c9NrbvUecVjWX=&VotApDWXacnpY=&g37x3QWZcchqq=&AoGKvnZaWshgf=&HgQedrUVZcnbY=&nETbmqYeecemU=&u4HFfzYrrp_hk=&X3C6H2YWaUpqe=&qC5T6cZbssleY=&FSrRWUXasioj_=&sRn9mXZUYhblc=&fCTgjbWbdmUhi=&jptGLqXWeVsqf=&k36pmlVpgqrWd=&56V26sZjfpdnX=&MxXxMsWilbWkg=&vayE7ZVrdVZZb=&qv3wpTYYUYdkr=&Frpg3PXljgpVq=&uVBWDBX_Xiipm=&hYRgedZqrrVWW=&wMHZnDWqnb_el=&qJ3ebkUhXreaW=&wg2hLbXlmYbk_=&e4rt9JZffYjbs=&bpH3nVUYfgogX=&CCffBFUgqhkok=&PvtIBDXsepYdh=&wpkD3fWkkprsY=&fFOKyyUWr_ess=&XhXrjDXmmcerV=&9RmWlhUer__ri=&o6OJtVZiZghVh=&sasIoqZ_jmpjb=&zO94y8ZsZXnrd=&qukwApUnmqhkY=&oTgLRvZ_oqnpq=&FAlGrmYYi__jl=&OxMSq_XZmrUmV=&OwfckhXaeWe_q=&rHUEAhVjUpUYZ=&ElIUEfVqfjXsh=&xQi9aoYdihsrZ=&mcugUdZjiVphf=&X9LdjkXbjZUqj=&9vWTpKZeVhfsY=&CiymwNVdkegYe=&uPekXJWpdlccn=&2AHyg3XUddsbr=&mjHZ3dVYdobci=&ek6K_cVlmfeWZ=&xvt3SMZWladfe=&E5T_xuW_oVUiU=&gSct3mVjnalnZ=&hf4NICXhYogmX=&jBACbNYhpbYZb=&_LiYrmXpdg_Yg=&cMnf46Yhrdioe=&AYEpEjXWVdkbf=&hyip8XVXisngW=&uUPWGUZcYeqre=&go4Je9ZZVeYnp=&hvWVYeZosbbrg=&8dwUIQUrsdihY=&DwLtLfWshpjcl=&jDo9IRWhdhXVZ=&64nzviXVnVpXe=&PsKdZQXsUlika=&YyJXvnVcbUe_Z=&YHf24pZhmkdpi=&MhjXOFUsYrrsr=&5r9RvFY_kYf_m=&YDrXiPVhVidVi=&pAJW2hVgbXYYU=&2bbw5oYsceWpn=&HnckELYkekojb=&Gml6g2UihigVY=&fMgyonVUfobaY=&lJ5NmVXdYdUea=&hpuQcOYXlfnqf=&ZdHjRUYlfaZgd=&BuANtGWrpekgY=&AWZyIQXcqfZol=&G5aFZJXgYjp_l=&Q5fK3YVZoafpi=&uRxyEQVaecpb_=&emqmeCZX_cnjZ=&Gi3dt4ZjWhlik=&ru7gUrVkgdobo=&hpiSvcXpbVell=&npYkduXfhsWhi=&N4hVpsWfjgYdh=&TQnEfMYqUjhrl=&iAZjorYsZXmXh=&oPcJ7lZgbrYmh=&4BXdMHYoVbqYY=&aOECpHYhVUnjh=&cBiwDMVncdqaY=&eZ2Gn5Ynjsjed=&Uw7iUfV_erVlk=&G7kR3yYdce_mr=&2boUiYXdeWpao=&FSPItCWminqWp=&tLhpXfXkgs__g=&qEuUGkXoeZfnf=&YnMH6SUoprqZl=&r_geDYYnsmiWW=&QcLRLVZVfUW_o=&IZBh7hWZ_Uckc=&xJ9wfRXkXpefb=&EXVGyIWZXnjnk=&8i_8cpZVgnVsq=&XV7AsXYgbUoVo=&YnsIIvYbgiXns=&zz9knxYYqieir=&Ad38jnZghjqUY=&NknJvHXqsUpaq=&DmGXKYVqqXmbY=&wahJRTVokijcX=&Wbzsi5YVXXapV=&l5HAPnXjfmXpk=&4b3jbAWcghngd=&rhr4ZLXUcbXYa=&PM6RX_YUdbbqc=&oP4uSSVpWrsge=&XdPSMTWYdmjsd=&iQ4f2SVnVapfn=&Sh3zEkYeUWZbr=&P6GAoCY_ehm_i=&BatuBGVbXpYXb=&_yOlGcVrhjgnr=&S2YWoWXXgcj_p=&F9B38rUoVigca=&37esSTZVeejdc=&AvmBvYYaloUli=&LgWOeLXUmqYso=&e22EJKUYkhpVb=&fZFz4kWZWbkie=&uBEcQYZrgkklj=&dJOyIJXfqVeYr=&zsQFqOVehnksc=&ipscOaUpqbhpW=&vzpsniZWeaeVf=&lJ7EdwYjZYipp=&_Wha8rYldfZqq=&Xpkc8_XqeiUng=&GwU9_uXohrpaV=&q7bbovZrqagai=&qwS57tZprY_gd=&oqi5GaYahajkd=&W4WvnwYsrcmZW=&ZqMjSFZlpZqkW=&idh9OlWjpo__U=&Bqvx2wWmdbfUs=&ZAD422XVViWbm=&l2bcQjVgkis_U=&HPRWQjXeXlYai=&tjkfPfVcUWaYh=&hBXzI6UosUrcp=&H85AMFVYVhbmo=&hVeKz_YXigWpi=&Q7rN73WYrqfgZ=&OA3FOKXXqonjU=&QiAHkfVkdmsYX=&A25eA6UXn_jqk=&2VHTnLUdWdUgV=&Tfsch8VUcilns=&Jtb3BAZgVlceY=&rhOZqEVYikoZ_=&Hn88gnUmjUVk_=&zjWrJ_ZoUmrla=&UxNWZcVmYofWm=&IfaprlXVdnkb_=&C_LHV3ZhWg_gU=&bkdDogZmalerf=&wtK8scXZisfWq=&oxKITOYVncggn=&dS9sK4XimpriW=&KHV_QJUrgbibj=&Q9sSazY_kWkWY=&nlx3wvYY_aZnh=&yUIJ4pYcnkWeh=&4yWT4OYV_gjoa=&tBlyGJVlhpUhi=&OrzSpaWXWnjZo=&tTBiDTZmnkgoi=&nZ6UmgZpfsdWU=&XCe6FQZhqVdbr=&b8jG36UVbkgXk=&gcfTwBXeXZZcg=&2QqvUUXnYZXkh=&DahLqcYgkjgna=&dnV5UnYbdnYcY=&kJlBbqWfbedco=&fdeaODZhXXjcp=&FWegNiUslgVZe=&hfYosCVsqXXgq=&VQnduxWWobcjh=&qlOStqZdgap_i=&eXUveuUcZreed=&qTjmaTUfbmmXZ=&a7IwnQZsXVdXl=&_xMS4KZmdhold=&BhbxV5VshXjnf=&8XC6aXXXo_nek=&ILbTT8UXhqbYV=&muWym4W_pjXYn=&scbs86XY_hrpa=&inVdU7XdskkqY=&LwtfN6WmjqmVe=&WBOGiXWobqcrb=&osbcaMUafkoYf=&pUga5QYbZsbj_=&_6saijWYhlkXs=&jxS7i8ZlisWZZ=&LvKkvfUZncbbn=&xXgFdLYfecmqp=&a9gBrnZpbZo_g=&HD6pHXZUWYac_=&e7Guy2XnWeWYY=&gkzWkhWe_dcYa=&dkLxIPYpmpfjr=&xZJ8m6XsiVeXn=&9Pcx9TZfpWhlX=&nmXhISXaqprjs=&hTevGgZidofYd=&CdAuzCUghqbqb=&TEOUvVZphir_U=&h9oGDAZinZYhj=&4jkhGfVXmlnsr=&OOchM9VfpeYja=&uzmrmdVa_eikn=&EVnxzsZi_nnjh=&Tn7HrNYanddje=&AZ5CZuZqiid_n=&TnFfk7YgYkeVq=&Ls2e6JXsei__g=&pyCcpLXdUojVq=&CwwHozUjUbfrX=&QJrhcgW_YmlXU=&uUh4J7UUcrgXs=&ghmx9iVYaYlkp=&DWe9djXrbqbq_=&PqTWMsXmenrcs=&IjJxX3WYXpqiV=&e7FY8SVibeakZ=&PxySphZYcl_Vs=&kncMcIYVhajf_=&FAZbF6Vldmdai=&Qwth7GWXVposc=&V5debJXppccdn=&JcfhRSZlolmld=&XtLbQvYZ_X_co=&MMgahxVrYgUjc=&JjHW6kUhfsqlY=&C9vRj3Xh_bhdd=&JSCBBFYUrYbip=&Mr8mHbXWZdUmo=&a9b5WgUVWqg_h=&iKi5ZbVXrZaYr=&fAoQrhXmmkbYW=&hNQz5GWm_ieUk=&iut5_AZZZjiWg=&mDSmgWYp_VYeU=&wCYLbEYc_jZh_=&VYR2KZX_Zqgdg=&QYVVZcVgXkdVa=&SgwgEDVmbiVjo=&c8A6d9Wic_raV=&_5KEv8ZpiXegs=&jWdopVXVeVYjX=&LsEQVkYeViXlU=&UDx5UJYmXpWYi=&KWvmzVZhUsrYl=&PUwJUiUckdfkr=&mImlKnWmZk_WW=&33DCwHUosrsqa=&Vuvw2_Wd_lkoe=&gcFaIUYZpUsXh=&ekn8J3Wknki_Z=&argkmFWbpfrZq=&edpxQGVmipk_i=&3VOBkTXjmmYcU=&XiEXSnY_ZXkcU=&YVOawBUiUqhUq=&Xw4fnLZhXWUop=&5hPFDrVncpcVi=&jzIfrfZppjXgZ=&ZmRDcVYaUdWas=&ZPyxnbVYYceZe=&QpUpVtXspgkYr=&HeKzWWYogUW_r=&BIbk_sVneWhZZ=&hObSYGUXebcUr=&Cyj_BXWipYmV_=&LH9bThVknekXl=&3Bf6zxUjjWoZd=&cPeUe7WhZWjjW=&Vi4SowWiYkbcY=&Xz4haeWhsncVs=&BwNIYKXlfrWZ_=&3fYbC4Uagr_XW=&nsli_8ZgVphbV=&FoPV9nZXV_gUs=&cSavlbXmjbZrZ=&zY__BrZaofUeW=&KEunzUXfYbUZd=&BYo3lGUcifWos=&WtuxOoYgrlZrZ=&3_hsP6UVWpoXZ=&d6oR6kWjipfph=&5d8InKUbrfp_g=&viKO6zYj_cXse=&Le8GydYsXhYlj=&mWty_MW_jfdri=&8ZzK9DYVsq_qe=&xMsDqZYmsYdZY=&2K38PiYjkdeXn=&qVBxSSVhkpfrX=&8RUQ2mVamUVnV=&R2u4tXVpX_fkc=&xufznvUrkrXpo=&wHaQ38YWgadbV=&HuScK7Xhprdrc=&svDbfRXgkrgoe=&Sg5jgKVlZioro=&7SeEZgWqs_nje=&njArUnXdlZUUZ=&SyAvCXYilVelk=&97jCJpUrrkqhd=&gxUUIaUbmdchl=&ghuD4bYfUraXY=&vm4GGzUWWXrks=&Aq4djOXlhhscc=&T2q8XEYiUfVqh=&vWiCCwZnWijpU=&EYEOIaXeoeXni=&wUpI6fYhr_Wkq=&EURocsVpshqdY=&hzqec8Zboeomq=&jTKrqXUVVsedo=&i_QOGLXblZesY=&8tRMhtXcbiXZq=&TuH_vtUhejnsm=&dRZAgMYfsaafU=&4OJamdXcrb_WV=&XBdnFeVWhhgkr=&qbXDiGYdgYbqa=&b2qf8bXnVcqUp=&ff33LhZnqWkpU=&EMUzYlUXhknoa=&V24Ku2Vklegn_=&UN3NUuWdVaeqr=&fdlp96Urkfnor=&dwnjGaWaaUn_r=&aEy7nPVmrrU__=&Ja4VZlXellkip=&tqVWYDUsZfqhd=&CsQTUtVrfnoab=&3tjLDGW_Vfrlr=&cHaYULUZbi_rm=&Vx884VUcdgmgi=&l3H7niYrVYb_d=&sxH6bjYcckdmp=&myG8lmUkWfdXq=&zJ5F9fYe_oifa=&8mwFyMZYqoahV=&sSqOuAYioUddZ=&822TCYUWfZUfs=&iLgiHMX_lseZg=&wC_nVeYhUVeds=&RMhsE7XVinnpW=&9nmxWcYjrVpnY=&HmnSltX_oZeUn=&UjoGExWbiWgUa=&BEAvanZYhlZ_g=&976PjpWblnnaX=&LUz_2gUgdndcX=&In7LDjXUeqZhq=&q2ZWEfVjeWind=&rRBdeWWkegVkY=&rf7tSKVpUWnVg=&VxHwReVUlVjpm=&AfrUPZYhdXVqj=&Jf4ettYicrhZX=&vX8RmXWrdZqde=&LwuNfbZegmjXY=&BWuwPAWWhnrka=&TAJEA2Xrigssk=&RlGDjBYXbWnVe=&WBoQMmUhhaVjg=&nzZHIeVogp_sf=&hit8jvXUVZVbX=&CntA3SVsgrlcq=&Sf7IG2Vqaj_iX=&JsrddOXhW_ggX=&YDneDZXUsV_Yl=&bZRFO2VdWbZoW=&mBpmFIYn_fhnq=&fpp_UNXljYoXX=&864RS4VpaVlqk=&DD5atnVZlosYm=&gvECPHXdjnjsX=&pbXgaiVcVrUja=&QJOoouWfVUhkj=&FImPqFYXmpknZ=&4oShagWmbshgV=&BPlOjmZcrlZUl=&tNrV2_WjVpYqj=&snwL_pUrfkmcs=&wWn3gLZrWaXhV=&IYF7PjWsrembY=&JoLrmrUrZVcii=&ThIC5eVphrmYh=&hMhgJwXcpeahr=&nR2Wx9UnfhsWc=&ZsSPMSXYrUns_=&4Bu5cbX_iXpkX=&WFuTw_UWXVVe_=&qtJs75Yflqmaj=&moLh4qWhr_lZa=&LINE_YWbfofoe=&rJ6hvKYmdZoWk=&eaol7zYYhmhdW=&Xt9DBcYehlhcm=&vizlfpZphpjpm=&IdZ9ekUosfqpf=&j4McpHUqhrlWc=&Zm9WyAUcabgsn=&fQexPxZ_iZVff=&npmCjmZVrpYnd=&iLRS8bXXilfjo=&YRl7nMVVYUmXd=&FrNiMMXpddWbd=&qGMXYoUbeoclq=&Jox3tzWVWYW_i=&DSX4JNX__kkrc=&BJCjswZbjfick=&buPX6YUibqfrg=&mlkaA2VfYlsUe=&K9rhWxXWWeXk_=&9CLdqjXXjYpXl=&QQdQ4OVfWfVWb=&4Ty2pyXshbgXb=&QDZt68Vcdmff_=&QxQCryWrXZUeg=&OqOBhPVXWaZir=&LPTC3bWhfZpgX=&rRo5FyVqkcgnm=&VJgAjbVsgdZdd=&A_xARHYaZhXj_=&JxhxbcVmh_dVY=&hjbJmoYlpYhlf=&yUiAxvUafeceY=&IoxgqdVqaefWr=&zXmurpYrisaaa=&AAinicVe_lloX=&oorwv2WrUpVid=&gBAevhZjbokqn=&9PoRVGYbVbppZ=&DjXphUWfXepqb=&UM7VFiUjUdhhX=&YkpXgyYWrUjfc=&kByrc6XkVshmr=&wo5Xv2ZpVUhrp=&IBeVdtZXkaYWf=&scKh2AWgYXecc=&5Mtu6nUhlmmeW=&ds_yDyUXnXqbV=&bGMblYWYqcigs=&PlEeUCZeasiXp=&TZQf_vWgebZrq=&7rShm5YseXhpg=&YBiM7rVaVcWUX=&gofb42VcghqXq=&F2qByfYhjeeir=&bVHby9Vkoplpb=&zBFEF2XrYYiec=&WzhUthUjdoeng=&BtRsRbZkgWakh=&ERi7uqYdgakdo=&KczJpHVihdhqr=&_UfCLHVasqlgm=&RiNoX5WgaUgdp=&y4lXXsUiW_Ugj=&pxDo8eYpUZVUU=&yDNr8UYnjbUWU=&wNbV5HXZslmio=&M9QL3zXdZhWhs=&STigNeW_UUhhX=&27Va_TYcpYebo=&x9etD6WqfXfce=&BAaf59YUfhnfX=&umkBbcWVdbeUW=&TYKBTPUrsddWs=&9ZXKbkUelhdgf=&QCVCRgZccUXWh=&glpY4fZYosWY_=&OMTsVVXWUfeeg=&iXALU6YaamWoa=&lqSW_zUVohmWb=&oOIHSMWmp_VXZ=&VgQtGbYeogpda=&VwN3ptUonsXfq=&UaG78HVeWkoWq=&HQI63bZVdpU_q=&Nul2GKWnZsdaX=&M2xXCEZUgfkVf=&yR5VDjVlkqnnV=&j5N6RDWdmaopa=&AzkKiWXbXVqia=&cAV6aXZqfgs_s=&C3zpzsXfnbgfZ=&RXx_6JZXgrkUn=&5FPaGoUfUso_c=&5SLfkbXacojYm=&LP46NUUrkVqrp=&jfMNaCWYfsgij=&EHyg79XiVforq=&Cp6HcrVjleYmi=&BIR6drXkYd_Wi=&PS6HMsWZXWlep=&KHow8BW_Webif=&nwrs3cUZbWXka=&gjfEcTUedXcUc=&tcK4jYZWjUmUq=&3rCmZPVhqqpZU=&XtvmSzUlaosrX=&ltPw9UUlUnnho=&ycValmXlsokod=&ZxzHOBZmV_bsf=&jaFaMgWcdsZbi=&6oSANzVWbdWsl=&_CYnehY_mhecU=&ERgqh5XUecsio=&EbEX76XhWisrj=&zmjzqTVdZiiqe=&Lj9HpkXcUUXrg=&2JOqSHYkhjkcU=&vkbFD5Yperfln=&t3HbfnUimYUrX=&vDyqTEYqVUmoj=&7wnCTBX_Xankj=&jskmD6UcXfhVa=&i28KwoWUo_gqf=&DXib_oZnaldas=&DXb4cvUVnUcVn=&3sx6enWVcocgp=&OnyZVWWloVjWd=&Zle9xyYqjnVdk=&QDJLSSUYVnjqr=&PHvT8dVjqpdep=&mdTYRDWVaafVW=&OdCepvZepVWsd=&MmFpFeXdWXcbo=&B8l7KQU_njlpk=&nOYSlnYVlkiZd=&2ytxFwXsc_mee=&Dzgf6JVaUhUWc=&u3xJirYUgksXX=&En9v7FVZqYckc=&q_xszsYYporXa=&QPk4PPVgdWXcq=&pWfqzUWn_rdWd=&P2zuvNZpbldhs=&WN4ngNYdsagVZ=&dj5MUlUisUrXk=&MmWoxhWrkZcmV=&xgSatiVfpnnco=&Ei6N9uUaYgfgm=&_rB4IFVWaYXif=&rZMP3CUahocdi=&Iyp7gAWhqmkr_=&MdhhScUhoYahe=&GagQjiWnrbcVW=&ZpFWJlVVgbkWj=&d3sktdVqgghei=&ePUZ4VUVoes_o=&SKlFXPVWnXgmU=&EdzCzCXsZneod=&B3FdNjWbXohqp=&q8ibCqXXfXfcW=&mIk_PmXYrXqkh=&sX9NsmXXgddgn=&OKzDy8Vihb_jW=&i7GLwFVXWcpUo=&9cV446UdVXloX=&7kI4eKVoedUkm=&MR7ek8WnesWqY=&o8VRJSYfknkbo=&OwuLSYYbVfsaf=&7SMmxBUZXlrah=&H5MO4gUcXlV_g=&CfHMliYXkieZq=&7xwV95Znkpjkp=&cn74EXUXsUljX=&bHSj8yWVhneUm=&TgkEDUWhaUWio=&SzncHbYepfpXZ=&zi9bmqVnkgerW=&nFGULZVelkaWr=&O7X_ShW_sdfn_=&UrtdJ2UqjpcVd=&4l5estV_hZipe=&a7Lr_8UbnrVYc=&tNWBCCYYknbmm=&3xmeQmXqfYojZ=&tiHvcuVgZUoiU=&TNzvQeXndkWdn=&Q7fHXhWfohXmo=&9qvRWpXWYnomY=&4WSANyZpUlfVs=&8DsLzjWipbsnn=&wgElB3XlYUosV=&VswYk6VZor_am=&klkagcVaq_mjc=&APixBsWUhbneX=&eEFs9WYabaqXs=&UcIAK4XZqqggk=&9NtvPIVnbasao=&erecH_YZZfelp=&b98M7mXaVjYYY=&zzXfjMVloskmg=&_9FqbYVUjZnWn=&dFZgUFVdjaofV=&nRqzTOZWsaWZp=&3thCjeZWdjXYU=&GImlpJUlgrj_l=&AJJXuYUocWp_r=&nIaJn4VghegXc=&MqF5XcVaWa_es=&uW9PHXVgZYdkZ=&qVnS6eWhqnrkZ=&RGtwvjYfZYZYq=&qnH4vqWll_bnr=&nfxjPvUiscc_j=&ppFG_qXodp_Uf=&yu3FYAVVmaVcr=&eCxxrFUUcmnpX=&Hp7CEZYneVXeV=&XBNZhMUkkrqrs=&l_JeOeVVdWbp_=&vkbe7CV_edapU=&JJc32UYlnbqjm=&INDtRDZhpajcY=&f849OKVdkZXrd=&dLVQX6Usom_ia=&FObFdqX_pbXla=&i4UpsOW_sksaj=&tb4Q74Vhd_oee=&Xz3rWWZXlojUg=&MVQDYQUenUbeh=&O4NY9LWgma_pr=&QavhIHZ_YelVV=&xBA5eVVajYsgW=&vEypQzZi_hemi=&Yphl26UkVqpga=&SIT7LhXkabcbb=&l4lgAGUeWmqbZ=&KxRBoYVapZdcU=&a_GulZWrcbVqi=&pHzgduXaUfrme=&pdyJuEXgklZbg=&vqw2FQZkXqrbU=&HGLSBvUgajjqV=&XjQwBCWpieinm=&yc2GZjUnhYimW=&A9HaGwXehXlbn=&IGFQsTYoseUcZ=&mezUPIZsikjcZ=&ZvFNrOVWqUjVl=&ac5nTsVqWdp_k=&yUyK6LWbeVbog=&D3gmRbXmnokeo=&BurrLyXWlhpns=&gq9BppZVglXka=&BJt9rHUZYXfmh=&keAb2kWVsVkhm=&yIIr3VVZoeXbZ=&zctDDvWoYloab=&rnTvstUsWcYU_=&nUclqUZsZecgV=&RZ5QMWXe_YjZ_=&uTgQkZXVVbgrg=&FiIAPpVUmVrZe=&qBUgtoXWcfqZc=&du3tA5XZkefdZ=&LekawgWa_jsql=&PNGzWtXpWWlcW=&S2ItBhWYYkeZs=&r47RrPVjg__pr=&dmGK_QXZUjpll=&PfpEZVVZfdnsh=&DwNwjQXfjdinj=&i_eMKjWaifYsX=&Nh_auRZnZsYbi=&nCHVbPZl_efli=&ZCImMhXcfpedV=&GEdd4bUlhjYoU=&GahJawZpbUWmk=&jKj8KZXnhU_Vr=&3WaOI5Zcmlbca=&W7zVmjYkciesY=&GPo3c_ZkfedfU=&Ioz8gQWngUjjm=&5s_rYjWUmcopq=&JKbLiAYf_XZir=&PhWkAuVlaoocr=&oaUJyIXjlgoap=&dnEAzYWYmf_oj=&2rgyXgXbYcUWq=&mKiRG6X_lZnlc=&sY6bu7UYYUogf=&fksKyeUalklpr=&HMpbKIXfknZci=&GFFuUcYV_XZXj=&HZ5PweYnWspqg=&wrjxB9ZUkrfsi=&6LslsgYajZfVe=&2B4OqVVdcpfml=&jkZqkDUicjhXV=&HAOr8ZZcekXiX=&M2EJQIVgYUXpa=&jYedigXXYlpdm=&HUuMBxXkcbkVr=&juUgYCZahXXYY=&9Y2b6tZcVqc_h=&VStYdqZYoafma=&Gr3RaNWgViWhe=&2jkLWZWUeingq=&toeWAKWpdpVss=&gmmZxhXVjZVod=&d5nvGfYnrllla=&LoBpwUUYkoUc_=&bjsm58ZVZrYic=&4laMO7ZlifVZY=&56Ci2yXUrZUia=&TmaLfiX_jmsog=&pxwTQZUbsafgd=&2FehoZVmbkkfW=&pxVIhHXjrp_ag=&ftjOqqYnbkqUo=&VOSKl8VYZoZnc=&qZz35AZicebXo=&4NhPwZXnbdVmn=&6e7Gv4VfYiaqg=&T58LOlVfhWrXq=&oiH_fGYZ_eVYV=&ICmt8wUWWUqfo=&zbKozJYpg_ghf=&HaLnEiZaZZpo_=&A8ZoXQWbqYUpm=&kaCBAKVVdhaso=&RlwZBoYWmbqms=&7azbn8XnVhibW=&_ZVUbDZgWs_ff=&8zd6vkWjkaoif=&Cxv9EoXoXh_fj=&6YWvRlVjUsYWf=&fis46cXb_YWrj=&7tb_3nVbbknoe=&wZVlUBUpsWYio=&89l5b8UbihZdp=&2_Pl6aUqXZXsg=&lRRWjvXljs_jY=&kFph2VXrkjhgi=&U37Yn5YmprdUh=&ZIJkm7ZpVZgcj=&qCrM9_ZpUnrU_=&lfWXdzZhsjoij=&4hnhzIXlgdllh=&DFX2F8VXmeWdo=&56ACFtWabrWhV=&_3hVw4VXpdaYg=&PpRoKYXmeniVp=&Sxzf4xXrUi_Us=&EM83fXVX_ebYn=&4eyoQ5XYkeXdl=&iozwgmVagWZfj=&yWPDbCUiijcdc=&tMaTmKVfiVZoV=&jbqfyRXfgiifm=&pSBf55UalVkam=&56hRqsUUZYqqf=&AqdVtOWWZVfUb=&3ggW_aYdkWUVX=&Ih7rGBZUcWqbo=&zV9dOHZWqoaaU=&pgxdQxWnZpYrj=&hvcSR_WnmoqiV=&N8ex3dZcYkcqq=&jRV7QrYgsasmZ=&d4tuEeZXlppjg=&dbfiv9XgiphXd=&GYTydtXcojmYs=&i8_lsNXkriroX=&uixzzjXpiXcmq=&Vd7XTdWfaWXoU=&Ix96kIYhccYWq=&jNjKeEYsrYVdn=&FgiBg4XemmVaY=&s9tO9hYdVXgcs=&GlEvEVYZa_fVp=&f7GPHOXlYbojs=&hWm4FeXojZXom=&O54HY9UY_pqVn=&CWqBFBXnUWhmX=&BDV9f3ZdZgrrc=&Ahq5Z5ZsbVgqW=&vb9xjnV_dpdWq=&7xcxU9WirWYas=&IVeDObZ_U_mgb=&xc9eDyZXoXmss=&3Rj6kgYccbnnj=&oXHwOOWhpboY_=&LFQB4iZbfgcff=&HkgQgxUUkcbcq=&8aOzqAWlspsUr=&TPftkMYgiaimp=&gRbfyvUhac_lh=&Q5u4HuYfkbUYr=&X5vCVVYnmXsrc=&RlWzgrV_Ypssb=&zsIoraYiddXdd=&gfGr8ZXn_Vbn_=&tu5NHpYYXlXWo=&rnZRV_VoYgaeb=&aRkL7FYnjofp_=&zfCbJOXcresla=&77Qv99Z_XnlhV=&LPoKwkUngX_jc=&BnAUlpZdribYV=&ZzxivlUobXUUq=&w2qjCbZUVrcef=&gxdb4oWYhflqi=&oWb35GXYXWfrq=&DG_Yh2XZjhkoe=&_YCDIHVdqp_pr=&RY_IIeWqXjrno=&PXiBfDYgpqYhW=&vVttK5Zqbiagh=&bxkafJZVYqXrX=&IsvH5dXkhdbqc=&2SpRcNVqWoZqr=&vpz82HYkaZsXX=&jnseb3ZZZ_rdX=&3SfFOGZfsoXpr=&ZpnLBqZXXVYYY=&NjP_gQVaZmWVl=&JjLDinUorsmdi=&ySh8rtWqVheWd=&OGK_YRYqnoVdf=&xxdcOeZZkrfYi=&McE7vkXisYrkg=&gTXdYuXesZYcm=&ns_aKYWhZpgYh=&_9wSgkUirWVh_=&7jiUQoVaWYd__=&If_ityZUrYjge=&q6HUElUnq_dka=&rucTNJUp_hVg_=&xZhFO7YlolZYq=&z9TSX8XdbiWrf=&JD7rsXXlaalqm=&FHM6mYYaiYqrj=&_67skDWVppXWd=&Ksd53pXob_joi=&87dcnPVWUcpng=&KodlhpXfelXbm=&xSPLyVWelfsfi=&9y42tpWeWVmXl=&yzql7dZscgWpY=&ygwH6RWjWUclo=&KudEiuUmgmdlW=&4TGkPOUb_kWqp=&8zNiCDZWejUhm=&VwrVVYYYdnkrs=&Cd5v6NU_aaoZi=&P5cbsvZeVYZj_=&4ET3UtWcVYsch=&wIZKqdYXZidrl=&2dJjOhUf__ddV=&J8PzyGVonhWgc=&blPVBaUfoe_gX=&ifB7OSXZVWfr_=&wfwZo9VraWfln=&9zeltpXXlbfVd=&O4fKDMZhahVdp=&mz4RRzUjX_hcd=&oOqm7TVofhVXp=&rMO8qnYYdnY_k=&PIQquvWgaqjmW=&VMgh_YUhYsfqd=&PeixK4ZhapZWa=&7UKhCEVpW_mZf=&XDYmN_VehZcV_=&yYMhuWVjdUhoc=&9s9yJAWXjirf_=&Bw9gspVakWgWa=&JjHzAOXdbqYYU=&f39H32WqZiblh=&8aeOiqYircccV=&oiu4l6Ujmifem=&nUjfjAZXlmZYr=&JTOtiHXbnUeYm=&AluWXTYchjrol=&r3TGJwVjm_nfY=&hI3Hd_YdVffqq=&j3R3_kXjVoahb=&LdXWkQYnalhjY=&zvdNHnXbbjo_h=&3ub3sMVcfYhWV=&wtqjtNXmrpkeW=&YE5f7VYfsdcrc=&BpTsSGWdiYbdZ=&y8LUAlXYaqWho=&e6WZPmUaYZoZc=&pk48GuYpU_ipo=&mK7FetX_dXmhl=&klLTyRUsZgpcZ=&OJmEYrYkpfcZe=&zPcqGTZhhelXb=&pwqkLQZosqekY=&FrdzdDZaeXmdm=&fo5Sc6UsieYrg=&hl2FMmUUldfqU=&sXyIiwYcoseag=&9DTxNNWcajrgs=&jRq8RUW_fadnY=&F99cUKXWXWcqY=&wjkCpOXaceijp=&XypCwhUYZW_VW=&54R4CcWslnWfh=&TrPdu8Xd_kflm=&anVMPHZbnXckp=&zwahOvVeUrogi=&oYb_tAWiXdXYm=&jeVO85Xbmrogr=&4HGxnaVlmqa_j=&mUNtCzVnWrlrX=&PoEdJ6XYqemdp=&PoztlEXmYVUfo=&83s_jJUpihWjn=&wWhWr2WhdegZn=&5nJ8dKVhgenis=&MYgdBJYXmfpWj=&mxnFk7XUqnelj=&TsbGKCXiismbf=&GkN8nLZcsoc_g=&rIh6ZJV_WpfkV=&nFVKgHXpcpmVV=&HrvBEEXkfsobc=&gR8CjzUXUliiZ=&NEuutMYlXirpl=&knXEADWocnUhc=&pqolnnZedXsqU=&kSMM5xUWZendh=&wQYUFYYqZ_jYo=&2q5TfDVVpscVl=&xGKIvRYqgXd_g=&66c7jPYnnYZVp=&oafuDeUooqdnb=&UdIU6YX_snmcp=&Tr24BoZmYkmon=&D7EnZDUXpfcWm=&i33sRVXaYfkZm=&M6DjUZZUkmYWi=&NxdNYFUY_ffbb=&JZ6Bv2Up_bsb_=&UQnvEAVcoVggn=&dwjHpvYnqh_rp=&AEcFfeXmYbs_j=&tPhRxuXZiiYek=&y5lEj3XlqYhUa=&vwhv6lZfUXXqg=&cMyu5OWeisasd=&MAM5ENZkherWr=&QYrA9OVdbgbme=&HgYrxIYoeVnhd=&Q2c9HFXpiijVs=&E8xbU_XnpssZa=&FkT4ElZfskfqU=&Dgv3xQXfZmYd_=&fuyKL8WsiVdfr=&nPGjjzWsnZhgV=&xv4Vq5VYsnkfW=&akuxTIWWf__aW=&kBNXcbXepgeYr=&jdio9WXlscWpU=&WMjzxLZZh_WWk=&OQZCnLYllngn_=&96rayjUmcrjqe=&np8tRlWUrjgno=&uBII6mZsdZodb=&kstTMVWnsmZUW=&HjV2eDXjbiVrl=&MWOXxvZlodbZj=&pQ8L2tYfllbZV=&U342kjZkiVoim=&jaPmtwUmbascX=&tG_KMfYVUnesV=&d4TmpHUnXUneh=&PaZxugYmXUZgY=&FJ26dLZV_WYmr=&LhfwC6VfUf_nj=&tSIQsGUfUsgro=&vVeDVlZY_Yjec=&HYQVxRUjgUdfo=&ZtbGToU_gshbd=&GC2hVKZbakhlW=&Hj4TbiXrflYYc=&QbycjwYarjdjh=&YDpX5LZsepYsb=&uktVGBZlogijX=&TGLxxuXjqdspX=&qZbVlKXrikson=&UswVQQZeaeUar=&A8d6lZYWscZjo=&ArCSaFUedWWYe=&zQAr6YXkleWsm=&hPiAM7WhZcali=&zVzn4zZXX_Wom=&Hd5YIDUihqcZi=&Zb6jyHUsVgXkg=&rLffxjZkddYqo=&hDeGVfZpnYaiq=&URRm5tXdYeXXi=&38wbRzYcqfYXp=&Vzc4ORYUcda_m=&QpaiWgVW_Vka_=&XXJmlBYUs_pVa=&vZhYTmYafnkUb=&uuX8RgWUrZak_=&XPLua2ZdsYUjq=&lBmAUaZrqZkbh=&huoPEHVlYUfkb=&nA2GejZZfgmmh=&vpD6eeYlrlejX=&Mv2FenWjYbk_p=&8aQXsKXWlYZk_=&IaqRw2XgZpgWc=&OUhxJmWqsiagi=&fOosvLYinUmfm=&HLbowIUX_Vdl_=&oW7AlYZdofpXb=&cEFkmaVXnkmfm=&3Ei9bLUsZasnf=&wr52qDYkckrYf=&NcXwqaXZqVViX=&HujXTaWseoYhW=&dqjm_IYkmpcio=&dGgGcdYkZVkbc=&MyvS4TWXmosqd=&SrpW54ZdhdWXf=&6MxdliYXbsjjj=&rrMKy9XYeeci_=&ZCgL2LXikoprY=&dYyCLaVeqiqlp=&FgnYvUXojllgY=&SMExuqYgaqmcW=&Klh_JJXaWccko=&G9FfUrWZsYfjV=&QZ6NEGU_XaUrm=&JKyvHdVqeloX_=&Ru2XjNYVmhdkf=&iiys8vWXlkYUn=&PalECbZinfUmb=&D4GlEkZmmmYiX=&4RVCz2ZUgeehY=&4gyRjNXXXkcic=&iBjAu6X_YiZqY=&M2tXwZXdnqVVU=&DdmCBUWYdbelj=&8r5Y88Vhonnsn=&9bv8qbWdkVe_h=&dnuHpNZ_dpkUp=&atlCMOWo_lsld=&JrDLBcUVarfXo=&_lnXg3XoWcdYU=&SDtSiUWbbiXiY=&6RLCC_WnhlpcW=&L_LX4iVaVblkd=&HYFtNaUkprnqg=&OWoB5bXVgZrkl=&UtMB_WUa_XWfZ=&baDgtFUsihnUr=&ooraCPYijYhZg=&myfARRWheWcgh=&nqDCTbU_Yrsga=&VEz_ESVqneXlb=&Q3JHyfXWeYr_g=&RtCedvXrsaVdf=&hvS_fyVcsaqYj=&AtLd4uWnhZpnm=&cjrEWoYXjpUok=&mlpQHFWciljfc=&bMY4qgWqlYsfp=&XBuZfzVmVZZpn=&8ILGFHXkcklne=&FLDHD7Vpjaaah=&WObEGqWqgkngV=&PbaZfWX_snlkW=&ioWOqFYXgirhd=&zL7ktcWZkhXqh=&nhna5iVqec_Xm=&K4u6IjWhXsbfU=&ppmaDqYfYfYso=&wN5UIfYseXhdW=&zKjRJtZ__mglU=&CrNbFSY_hs_ie=&OJLt2jUldlesb=&pdeo3pYXUafga=&fxys86Xhpirid=&9HuFS4WkaYfUV=&4iFeSjZZkbor_=&OPEH7XWYakWaU=&TlQQTQWUrmWYj=&s4vFxOZgocZcl=&vTHHqXXYdsYrh=&rbvEoxZsjmish=&U2h8mdWeZdXXV=&AKQN4aUWfsnbq=&s7ZQHVXrescrZ=&jtl_LeZdfYWaW=&AbCamOXVaejXk=&jbsfIzZeccahh=&a6aZdUUkUmiom=&FB6KzIVppZ_ba=&JYm8TeXjcVnrn=&Gmm6E8Xqrskcn=&OhFT6uWbWUafn=&rr6RF6Z_abUof=&odMZnpWqmmocl=&yUM5pyZsapZcX=&Aw8tpdYosZUhp=&RdGRKAUbf_rWX=&A698nnXfVclfc=&PZ8pn6WhgVmqh=&XLYoIdZU_berj=&fd4mLMVbYWjfX=&mBWfmvVmZnphj=&tNZ5BkYZsfkef=&wnrT_iWnl_gZZ=&aZaSkUX_fmUdl=&itiC56Yckqseb=&IbDVe5V_Zfked=&hlQpcoVieVV_V=&iV6jFZXrqWkei=&HeuHl8XakoVbo=&eJLKDMZbrjUqc=&mJN88XUgspbWe=&NLEwkOZkVqfqe=&X_YULDWe_jhoU=&HTptSfYgfnrgh=&gpCqkGYfZenaX=&EviuBuWpsfVkk=&3CzuSrVpViedp=&6His2TWeeodiU=&9_XsLjYepgbhb=&WvfcLwZfYcsfj=&NHJBmLUXroUcY=&t_DiVBWng_YmY=&MEADGrYidWYpZ=&NBd4RhXdUZZVa=&nNPeeCWWaVVZf=&bY_PJTVgsWkoe=&hioqoAXhUjana=&bDpOxwUqVcnYn=&OwxH5lXYi_Zek=&QvVfXBXffbffc=&GCquTPUslpWab=&6Y6SlYWoebqkV=&efz8HiYlaildm=&XdCoUTXYnidcl=&AdkjMJV_nVknm=&wRwc5tZYrjWoo=&g43n6ZY_pZaeZ=&jIzNSuYi_bfmi=&434VbnUmrl_sm=&9JQ3c2UfanXce=&8nMMxzUdcosqk=&RaEQvPVdVsoVa=&JYANGtXpclj_Y=&hhqfCAWpWUbkm=&DfNWpxW_hqqer=&hpGnQ8X_hbVVq=&_I6naMVjXkdYd=&hGcX_nWrhYnrm=&GiPasLYpeiYai=&VzE7heVWrfllb=&jvFJgGXhs_gVU=&ZlSIyAVleenm_=&usPvn7Zrebfsi=&6ZVVKRUZmsqWV=&Kz74IVWeZlbeV=&6Fc3D3UehWYhW=&emMXU3Xnmpamp=&Pn4LrSWginZfr=&d44sDWWZeqXna=&u3nTmZWeriidk=&kWiIBJWkbXdVj=&ohg58wUdkcnpi=&WHUV5GXUYknhg=&u4IKydWpcepZk=&qXKdO4YrimZjl=&AttJhAZaVqWdk=&qaPnoOXrWpgfZ=&i56zPrYpqnWmV=&Fa2bl_UXXjsXr=&BB7SP5Vii_WYf=&eZnSqIXoferZj=&NV9Y_CVcp_eVs=&jlMIEZYbmjZqj=&IKz86_VlhbhkV=&grbwVbVgmisYY=&RTZYIQWcUgZbi=&dS5eOrYjbhoUY=&L7YWpMWaXhidU=&sJXyM2Ygkqegm=&EfMqcBXjmUrgm=&oUTgJaWdcaXro=&slE_KJZofjkrl=&hWXqaFXgicfoY=&qCFW7OYaqoidV=&lSLIMrUWahspi=&pI248oUhhioqb=&ypWqaAXjkjlqa=&DGZVFsXgkkXYV=&WWLkIKZgpVXrh=&PxNO4XZcnnnqs=&2Oz74YVWUUZVV=&uuT_uQZlUkbrY=&k7CjrHUkWbjUo=&USPXjdX_cgihd=&ZpDflHYldZfn_=&m87JlrUsZrXgc=&jE833jZrgjsap=&W9mGgYUmhfoVe=&wOukKcYW_lWma=&zxtIWnWWXVaVW=&w7qnEUZkdasqs=&gJ_fooXhUqVnh=&sWiM8vZrcirmY=&tqbHBkUYiU_kb=&4gH98gXqdlYaV=&bx9pkVZVbd_eV=&OZUVTNXfnhkkh=&ACBEx7VXaarbp=&EfjT2WWWabYeW=&NYg4_PWaUahVg=&UZHXqWVjsgiZn=&NO7MDeYjkpjjh=&FaZ9DPUiVsjX_=&3o7MFlUmsYlhl=&dvdwUoZfYrmar=&lPjW5yVkjiUVd=&jq_4a3YgWZkYg=&LIFJf9Vebhssc=&bIRIicUWVoiUY=&jUMBnHYXYmlmh=&7H6ntcXcVgfZb=&MCVSJ5Wcgrsrn=&NRfMlBWnYigWr=&P6PDqgUYrsnno=&owa3D7U_nWang=&hZWVzIVcfqlfl=&QvvUCaYdiYndm=&PoE_kEZqkcjm_=&qjRxftUZcUdsm=&ZAnHhCYfYaYhZ=&WEUIYfX_WXncf=&V2BPNVWVhW_sn=&tFpj7SYWqWdsU=&zaXwMjYcdhoqm=&STxhtqYcfkoW_=&fTuRf6UVaVYUg=&qshQYfVqalqdk=&ksDM39YpdWfpe=&KP7dEoUkmZiYi=&iAAOt8YjnarXn=&uBZRorXcpoiil=&Ycspw9ZeckmlU=&maarFYWei_Yhe=&oOnRqaUXrYVik=&A4cSQnVqfoaif=&s3PWeFXdigi_b=&mVO9mjZremljh=&PXAGhBUcorcsc=&VapsnJUrZnWpn=&X26v5rVqbZbmo=&aIqtHJUiseVUl=&cuzGH3YnVjpif=&dy2qVkYaYlsXc=&FMmmylUUnrgar=&TVhbeZYlfjfqm=&IwZUgmYcUrZrh=&iO7BWmZY_knqo=&yDomkDYeckbjX=&JeQAZUUfdoVsY=&TzwvogYrpaaXX=&ly5e2oVpWdaVp=&sGuQipYjcVYie=&aaEvgEZjaXlcg=&vdJWAmYjiijck=&9j2AO8YkWXdXj=&UWg2BsWgW_mrU=&438c3rUYpaprZ=&N57HduWaksmai=&AXZYHrWUVgkhf=&jE4sCmUUZhiWZ=&RsW9SxVYmnqsh=&Zp6_v5XdfWinZ=&XYjLOoZphYkng=&7jL32pZfVVY_d=&NHBOChVYhXsek=&o8MJNOZasahlZ=&xi2RvzXcbngZY=&FXd7ZCYseXggU=&K9He3kZWcZWXr=&HXXUpLZblbbYX=&FpWNQCUiZklgm=&2isHG4Vbgjopc=&CoeEAwWlkefgl=&tanf94WX___hd=&IJGR3AZgfsnkk=&UNwMpZVYcocji=&cDAdlTXaieqUo=&uFhM5HYZ_krYW=&O5GlXhUhrgZps=&2wBoJWVWVeWgY=&sf2BWOUi_Zmof=&bPl7slWUXlYej=&c4BHBHWdesrcc=&FXfnHkWmfqsjo=&AiPQcNVfdgWYc=&XqdmZ4ZYpZh_V=&8y3bArYhamfbr=&rlEtq8Vqlslss=&oAir4VWrnn_gZ=&2VFKxgUdhjVkX=&sA6_sEUb_pbYX=&9zqiP4Xdmffi_=&QCPp4WWhopfXs=&BhV953WWllbhg=&LenldoYpnbrpe=&psTxEdZdqmlmg=&jp_7ZNVUpVpVW=&6O8DNSYXiXlpV=&_bUgK2YfepVVn=&xf6bn8XVUsiar=&z6loX2WleWgdW=&dQzSJ3WgZsonq=&tldGLdUXYladf=&fBhBaaXsshpVf=&IRtB6wVl_m_kb=&XEXkkDYeicqnV=&uQ56BDZs_qXZf=&nBNT87UeWibUh=&nI5lXeVhamZZW=&pyHgFiWipgksV=&8gzx6yXfqZdUr=&gFIwAVZrUcdec=&5lUdP4YdaVjUo=&akDa3vXecXkgb=&EUpbmnWoWjWXi=&Ln_SZJZcYZicd=&OSte3gWmVVbmd=&yzRqPiYmWZZgW=&pRi9qgVhXWZUn=&4VDKXkVeZUiaX=&iBZ89zXfnjVpV=&RnT2GUYipfjWU=&nFZgNtVoakZcq=&nxaCGcUfWpjVX=&GSoOoLZdZbreh=&q46dwSWmYicU_=&VqcXAkXbjdmoZ=&3iy2T7UgbXnqW=&zBx4ZuUplWWbj=&UjRPCpUqXkXXi=&jlWe5eZlUfYlp=&zDV6DXWbWrfnf=&QCSgasYikYdbn=&EWQuXCZUiYUqb=&lO9_BNZiplZ__=&Mmr2PBXadUolc=&_9DlziXhscimo=&QqFVVRUhVWfsg=&k4vJXhZkilZlm=&vlvC3cVpgbYgp=&mV4tOtYggab_m=&6r9WPvXdqifkc=&KozaGXVaaccnn=&qvlpWzWYWllfW=&LJIEGcZqhhnaZ=&JJUfJtYl_mbcW=&3opkhgXdiUZdr=&qOigadUaZdahV=&Dynnf2Wiecqjd=&kYeSlbZqbpbp_=&hNlKgaZorYXkh=&TV_JPzVbidffX=&iJPcZ2VongmmX=&3HZDJtYpXqXXs=&WF5bCZUXeiger=&kNrPZpWpqWrlj=&GIbteiXbr_aqY=&pNTtjwYdamlcs=&5mLY8vXh_qpbq=&RBFXFtUnbXYYY=&iUUao7YZg_Veb=&DjHrbQYrbnneU=&QLIlItVYUZcjr=&6kZorgZscYqpg=&r4hwdlVahoUhX=&5nxu9UZqXWopc=&_WwkVQXeoYVik=&nM6hWVUff_sop=&L7AZwRWcVmWjo=&KPSU8jXfmXkgh=&gmJB2rVnVbVkq=&j8QjiYZqWrk_W=&cAVwQLVhVsjmf=&y4dcR9VcVbZYs=&DM7LwFVihnlqe=&gXkJRLZYfogUZ=&gz6LuCViU_XZp=&SVz4vyYbde_pU=&aI7r9zYmoVmnZ=&qU9vB8VdsiUpp=&WaAtKTYYifima=&BaNle5Yqemkjf=&_iQXq_UdkYYro=&OcvtVLVcYUgbf=&CkfVbOUUsVlaW=&7Bq89pYogWqog=&zKMVBbUbalgbg=&PpbWIZZcoYXXs=&fkNtrvXWeVZdc=&zKSLiHUdkffrY=&tTAww7XYhpqmU=&i3rRXNVfWdWpp=&dOjLz2UppakUU=&PJOTzwZVXs_Yg=&KWLhLXZlbXf_o=&LZtogdXcbsfoe=&TzoBrGWiV_qqc=&QjwNeQZlfppac=&KwPenSUdYkmqe=&c2CfMgWUkUleg=&UNMw2PWiocbnm=&vGxW9gUlbrdrm=&esCCukVUcleYZ=&vAXPojUi_a_Xg=&CcubLsUsnZcrg=&YLwOZHXbWfkfg=&QOIqz6Zfionqq=&XHGPUQYirVejh=&Qns7DaYiiodeo=&_RlgckYqjXWdc=&rDdRmlZrjYqhW=&dcIryoVidlapb=&5lWOxnUdc_khg=&MisNgxVadWVbl=&xirY9vXjodYb_=&zA584hXYcmXZe=&l4In8vYcldm_Y=&fPkgqTVl_dhmc=&uVcvLoUWochji=&9nAonLUmhWVZf=&XInpv3Xlk_qij=&_x2iDoUYmfrss=&yC7xhGWkVnZaW=&4ZWmiHZX_qZXc=&bv6nsnVohcqrV=&jwKuj_Vcqqjaj=&TIqJypWfjbfpp=&Fs7TxyWWhoogd=&4vcaLcWenh_sm=&v6bD8QUcrpjkb=&s4ZuGfXXYeleZ=&CP3hz7Zeaabdf=&wyvbkIWqeUeYd=&3MvdBNUb_qoZX=&vqKn87Uo_mcok=&9b4MTaZZWjire=&MJJWRXXVWZZsd=&fpR9YRWiZahj_=&JCuQPyUfbXsjV=&AewaDeZaXeWjp=&XxKYC7Wnhilai=&S4EB3AYdppVZU=&bFZ9HlUoqioae=&_TNgJwUWaXaan=&xjTAvUZfXfr__=&RXdKUGZUi_bks=&NlxrEEVqVfg_U=&inFlt3U_Wlgie=&wFyi2wZXmUnaW=&GxJSqCVVnbemb=&EXjNjoVrdkhn_=&7kR6VaYoYhZbj=&6kHfhZVlVimWr=&y4jjWCUogZVkc=&pP72RcXemjVke=&4RGL9aXhYembV=&KD3NxFYdlsmcd=&CnVNSWVbhXZil=&6GHdaxZrleYbX=&cUgjlvWleYWWb=&cumONtZZdjmer=&OfjofmVcfsnXa=&8ZDo4TVbhrqco=&mzosncWZkpUUh=&O2SaXAWkpnl_Y=&yJJsKmWZUkf_h=&JDex_VX_jUdmY=&jBqIfNYnrVmXV=&zq6lpAUaUWoof=&BcT6YaUbmoaZm=&5JokXeXVqfigi=&NvAY8cVbWd_YX=&F5U8m6Zbbjbil=&DUjmUCYZWdmli=&VnIj3yZjZfsdf=&p7HiU5ZVXghaf=&2gBji9X_lXXoq=&I_sMUiXmdXoaY=&NcOAYUUqpZaik=&XllIaDVmaZnfV=&qGcRMsVjWbbmo=&IS2tohUaWgqbl=&E9OMn3Yrcakqn=&MfjzkaXXhVlUp=&LSh8iEXqfggii=&Y4FMoFW_llhqd=&pSS6aRXhfVrsr=&HUEuBoUnahmYp=&Nw23hPZgpZnnc=&LLslk9XbsoeWY=&HWqRYKUsghmes=&WegdKzW_ihZUV=&agEFdJWcZnmke=&s_aTb5UVraXgk=&YNpIbVUhb_s_X=&nWkbGwWooreqq=&dgtDPzVpkVbUo=&guQDGIXVZehZX=&tcf4oJWglbVfh=&xNGPEFXa_Zlm_=&il5pKzZdVWfYe=&mIskDdZfispdX=&Hb6S8qYdXnZWh=&FXpzupZpmngVW=&XqApZIZUkoUql=&TH6c4GXUUdkra=&dPdzoAUZYoWse=&eqeFHRYVqjrsh=&D5xNQLYcpkVbm=&5bXPRXXpeVWsj=&6OUbqrWbssWsh=&MBuHhgVidiY__=&99qOknVecWclg=&OKODcbZWpsbnV=&vdKJ_UUlkj_fZ=&fTztwTXWiWafq=&79SDB2ZpiaWk_=&LpUQq9VmadYbe=&8IivBHVmdqVZf=&3xFtrTZoksV_U=&RLQ75GU_WhasY=&_3MyuWWaVeoY_=&3GiwQ9WgVWYkg=&nyzZpeUZlcXa_=&tthofrWhlefar=&GLo4h2XcWjrVp=&o9LtBTWdXonrf=&ErhxDGYfsfaUn=&iqKRjbWpqnhgV=&CzeIdHZqkVlZi=&qeh5KZWdUg__i=&GSdmkaXaUiaqr=&ptIY9sYgnefnU=&5GYMdkXjZc_fi=&aMbA5UYgisYqU=&f5C6TLVYlqgWl=&gjsl87YomqXVm=&6qlKZDZV_U_ar=&v5sfx5UbreZUd=&NMzMWzWgjWmpo=&WDJGuOUiqpprs=&aI9lb8Wodaapo=&PIbqpxXer_lme=&9WUk56YksmU_e=&dLsqyWVbrrhUW=&pBcjonYZimaXn=&muScBtXgVWUlk=&eOzitmXqadWsd=&jeFkWJXsdleWb=&_535oPXiroU_k=&QKp3U2Xpgaqmb=&6j_yoEVjcfXeb=&HIX59hWqhYqop=&WyQMr5ZUikgXi=&QAy5lVUYokirY=&P4BJF2YcZUadZ=&Da8UerUjgpqao=&hYr8TsVWdgopU=&tGEWTiZrrmpmd=&mFAXTqYahelrr=&xDjR8SYmmUsas=&mjx2GVWnspinY=&mkrWWPYaWdaU_=&gSqIyWXVXfhcc=&DpuAx6XX_jepf=&tTUuVJVgcpoqn=&lAqtf3UbbldgY=&B9ZPoRVqpbraf=&dMr8LUZahrcrr=&Jwk4zHWqXegca=&uIRMymZifZWnW=&XIxX5pXigffjZ=&fMheW8Wepr_gW=&XHroLnXsUbjjq=&LtvV6lXjYZdgn=&E2HVhQYqkhWok=&tJwvYCUUhaqij=&NpPGpXYhdYaig=&ewmqjdYkjaWrn=&X42VcEXrdnbjh=&pljkEEWgmmc_c=&OOLutiVXqhslj=&o683dMVsjbhdV=&Z_kMELXVlnhjj=&eN_yiVYknnnq_=&VekLXfWmjebsZ=&hT4RM9Zoqrbim=&OZloLFVolljYj=&UFGqNoZonbqWe=&bjD8qqU_oqnUi=&LXbFILW_defXh=&c77m8jWcpsWhV=&WLUo2XW_gXals=&3spSizZpf_slV=&KjVyjVYqdYbUh=&vk3_VJWhehkWo=&rwYqcTZVlWqec=&WFOhypYkWro_V=&ILayOWWs_aYce=&VgZjRSYibXVjV=&qDXUbKZVZYcgr=&XatzkOUZV_Vhm=&ZPOW8OUifliaa=&U5GGk5WhWmggk=&hk86MeZXrljUV=&dTZtmPWfXnfms=&dSbMbJYcosYfW=&aJCjvzVaX_hrj=&B3L7pWYjeskfW=&LTQdPJXUYmnWi=&ih79KvZmfrZnY=&o4jkvrWdXZnpm=&3UuYmJXXpVjZs=&4YX3yLYiWbqXo=&y82XGRYlgeqeo=&R2ZB_dUXjmsnh=&ItTX7zZh_oplf=&qgR6EPYUXmmgj=&S4clxuViaXddk=&7AokYZYci_eie=&Klh_lKWqbpYoo=&2nIvj8XmoZXle=&JzSBWDYoghgcY=&VkACXXUcZcof_=&csaRJQXjofiqs=&inHP7jXWZWphn=&sRik35UXgsclU=&zhBcjNZgqWkVk=&Ak4kbgUnqZWYd=&G4MqGQWgZerjh=&dYMecPZVesslW=&vVaCGMWrb_Vko=&zdpIB9Yrfmdsc=&V_anDsWXlZV_W=&puNPAVXfcflkf=&BVJctSVrZgWYq=&TrVqqsUscWsaU=&TCa4fxXk_ZXfj=&MClpXmVUdhhnr=&2_LVqFVaoYnan=&jYCjMuZqresiX=&ZECgkwVsfbsWr=&BDpp7gXYajUkl=&d7MrDeUbrjkhU=&NriRAGYkmgcXn=&pQeetIZdrfhY_=&82YGrtWk_mVqa=&MVRezvYbXXomY=&ihek_LUqcnrYZ=&pOTlaGZqdbWpe=&GlAUzeY_dUXjg=&uFMb2vWpl_lim=&KZV2CeXhcbVss=&2Pgds3VXkib_r=&5KXpc7WbesYkg=&mNgyh5YW_rhnq=&xx6qJmUfaUXkp=&Usbg4RWeilkno=&P7oMCUVggfXfo=&U7HohBUqjpnYj=&PLpuXLWXhhXWo=&8gbhPvUgkqeiq=&IlBtaCZeohsln=&MLMClbXnhmUal=&8kSlI8Ugimgdh=&H6l6e9ZjefWss=&NPTWZxUaWlkeX=&psqcDYVkZajXn=&mn_ZzjZkfmhaW=&zFlJTFWphVjUh=&I5DG3FUUXpYVq=&ngIXI5ZWnacWr=&7rIidtWhVkbpY=&w6Hzw2YXojZsY=&qexwsZZYX_sah=&Ukc5yeVWcXnZp=&yI9UP6WUVngkf=&xY2zqnXnpbYWf=&9iLUjVYlpoj_f=&vdsJo4YqihUci=&aIeShYYmahsir=&Vcp4xaUhXUdll=&PhrZHPYWZUW_c=&7qHJQpVlYcooU=&u4WuCfYVpVhod=&xqK6giVZUdjfo=&kqGEPAYbesXUc=&xg_V5IVeaUnZc=&NWDZc3UcrWdWo=&nbpeReWVheqcd=&LpRzwkVWqaanX=&PlhT8eYpZbgqX=&SVScjyXaUcase=&sSCfybZYkbr_i=&F3qlmAXrUerVd=&F896oBZmnapoa=&rJR8iqWsjoiqi=&Uxe8yfVrWnkaf=&txDuP6XdqUa_c=&gjTlZ3YjUcse_=&Q__JlJUabmqkb=&t5zZYdVVmkpWk=&XQ3WBKUbWUnhe=&UUtYGJWjmUmVf=&uRQ9cVXXYengW=&cvjOX6Ukjmbcj=&GpgN7eZgokYmU=&xKLibuZhXVUk_=&XkpbGQYoUbf_e=&NdnfXGUanUrXp=&EGq9wfUUkqU_c=&duIzTYWekjlfh=&lZZCvgUdqmchr=&ZeF_LHVlfXmdY=&TJazpTWmhrnhg=&4LumWPZoUlihn=&Rl58IOWrVXnnZ=&OsmGAqUjhnhni=&BH8i6jUjZUVqp=&98qltcYcigepV=&sxyinTXfZsVY_=&RTybjIYr_ciWo=&9b89a8YeUehZi=&3y9ZK4Zbnamsk=&e2_zYCYWaajnn=&xP8jE8VYdrmd_=&EAxf94VmfcWjf=&m4JKIoXpkogpm=&vhcV49Y_ZbkoV=&NH3AqXUnlnYXc=&XM3rB5VmcrYZh=&VAEFa8YfUinhX=&HkOemMYXoZj_r=&zMajnBXrVjojs=&dXeoYLYmWsUms=&6K_CP7WYpees_=&ZCaVb3ZWcsrfj=&kEs8IuYpWaWWf=&aGPXrzVdbqbnY=&PThoPoYosqqoV=&c2f_JeVafUalb=&bFIaThWleklle=&us72WaYegmrYV=&zpvZq9Xeersnq=&QNdwxPVlUbrWj=&rTJHDdVsUniah=&i49aZUUhdemra=&mRREEhUhqpoWo=&rB48RaUgUrnsq=&ReL3h8Wodmlha=&aCNpRTXXhsled=&2TkNqlXqWja_d=&rwUQvAWrqhfgY=&PkMmA8YdqsVsV=&VWgtshXarVjdd=&HYUS4yZslfslZ=&aYmeNSUnncYUY=&kfhCWMZUpgYed=&dmAkX2VZWno_r=&eCk24XYipjroj=&M5SRCeZoXignp=&AamMY8VXqahlo=&VfSpXHVgW_sfc=&UIglOhWhajiqn=&i8kTWOWbsZboi=&msD_zoYefUWk_=&g8PsnCZVVmVii=&7ILw7uVflnhba=&NMAX98VjcYjUd=&jg7iLHWmlcZqi=&qYdtUFVsVchsX=&AkCh4oXbUqUYn=&3LNtg4ZsefjZp=&w9APnSXfVbWYl=&CCwHNuYWirZfe=&oQgbHgUaXjjoY=&dtJ4_lX_corce=&E_pa9_WYierVm=&BsrifwUZsYZnr=&fnSGDfXcWdXia=&lhOqYvY_gV_Ze=&kaqcfkWjkadVb=&eJG5z3VcbaUfc=&_83VpHYWsdmjZ=&vPviofYodolXk=&fP4jbeV_hoYfZ=&Dp_buFUqpsqW_=&I4i_FGUrpihnX=&N2TTdCWjrarbo=&3zVqClZlgcdp_=&HgULBwUsVpqWc=&xTDbdyWYZmXms=&wQ27vzZdXVejj=&lqSADlVfiXhlX=&OXyqWcYVgfriZ=&_UvSkOYckrkaX=&6P83BOWsbcnoZ=&BFZ3WyXicVncr=&9LVzSpWbkkkiW=&P6NQFpZVeeWfX=&fHGylyVZrjZjg=&lurvkyXfcVseh=&mKLAFoVXesemn=&hA3q2lXdssnfo=&bR3dFKYqlksim=&R5FDTvXdmbZqU=&EvcBW6ZgigYql=&vub3uAWoleqmc=&T_ahbcZejiand=&NMU4vMZprehaq=&YsrvFVUhdajZh=&nZTBWiYUb_oqa=&FgxDrmWpoZhUs=&im8e4oXWrqlg_=&5w3j35ZUkldr_=&_YN4cHUgjdYdV=&dnGiyoXjhrXgg=&KUdEKeYnUednn=&PB8MjVYn_bbhk=&6UaSAEXdYWjWf=&teIKgiWZkscmd=&mTUHJbUUghajV=&eWFHoTVidYgk_=&ppCiTfYdlaZZr=&V4Vr3rWkcbnYq=&NcyXPKUbXZeob=&agsfKtXZYcXqa=&WHwKJFWnqXZZY=&EzO2XUXlqWrXo=&pVwZySZYdnnnf=&pJhnVAXWkqens=&YpFgj_XUbZ_sp=&FIdqDVZhsnkjd=&nWb5h7XUmrgss=&qZIiYKZrlkUqh=&Z3qEIuZekkrmY=&byKrJdU_UlUig=&isYyZwYcsmXdq=&Q6TWLnVXsWdoU=&mH2EdAYbcWoUh=&WiGEE5Ysjrbpj=&rmyvB5XZYfYoj=&snRKV5XskVrXY=&lTP_caXsaqf_s=&FzQmx4VZZgngp=&sxOKtRZbrlesi=&romvqzVkWXjYn=&p7YrZlVjjdl_m=&OAuktPWaYniZn=&4sQEv8YdVrpkq=&M_rm7ZWkggjZn=&sFLmnZUlkplWa=&C_6PdGUcjkdlj=&M2cAe7UqZorZh=&V8nJ2UYoXkhlh=&cUDkeSZr_jesr=&hvYZg2XrpqhnU=&OJVrb_Yapjssp=&hnRXaNZfqdrdd=&vrQe34Vkggbge=&RaQQ8uVW_rWVY=&ltF8qxWZkVrpg=&Gt_7QbXolZafZ=&Kmovf2ZjVWXgo=&DcwihlZXZrpj_=&Wv252TWiXohcb=&SOW5PFVXolYUe=&tDdOsWV_eYeWh=&8RouyaWknVWoV=&FMMuBOWqmfpaZ=&hTrwJRWXmdmqo=&btttaQYXkZein=&GxcLB_Zpgslah=&M6BNzbVZjssZk=&vp4aEuVcWagno=&bDgpfFZssWpm_=&eKOlOVYVloUcr=&de9axlWrZb_kf=&7Do9cMUYchasV=&47XZNyVshlVmb=&rp2WGqZmjUloh=&6_AQFHYUXVoii=&KU5EXeXpUdpld=&ShCRdLWV_Zsfs=&dp7RlpUaYgeke=&J59BR6Xlcgcbi=&DG3EJgZnapqdb=&WAtOZ3ZiXlXrU=&5R2uSuXelolkk=&Wn5oY4UcXjeab=&C_6CJaUVjhXno=&uuolDjVdqXdq_=&gIHJnFUb_kipV=&tPrw9TVsqrjlV=&nHWE3tUkadqYd=&_CmTSFVbkgkVk=&enNgh7VYpedpo=&VpwnmHYVZcdai=&oy2DN5Zeoaldr=&DhXsJJWkeWfYr=&q3Exm5XjVjfpg=&LO7BXoX_fflmg=&qqk6XjWWmrcpi=&OnynWaYXfdcZl=&kUQUlZVdrsmog=&5rplFMZXmbmoo=&DrphB7Ujgcmng=&4sSTz7WgpaZsq=&5L2sDVUbWhodW=&RPipoIUqrUZsq=&Jhfc3YVgqiYlW=&lum2a3XeakZZq=&bfd_TEUW_jZda=&V4G3jDZpcdYZV=&_Gjed3Wkjclcp=&6fBo3uUkmmbXe=&THiMArYkUkegm=&t7tuJIWfWhcga=&2SeYStYhpUpVj=&U_wafYYVkoVZf=&HWPAxcYcskqZp=&avfqYcZXi_Yqp=&FNeLTcUrs_Xen=&W3NAIRVe_hekp=&_idJDYYahmmWV=&reUz_TXXXmbnh=&eXRpTJYYqaX_X=&LsvuGbWVZhfeg=&9Y7zCUVmVbbZj=&5tDFgGUnqijsU=&Wrq3fvUXZXnga=&fRipTAVobbqdf=&gkPffSZXVhYjb=&73kSgLUjpfepY=&o2gtV_YkX_kqr=&eJqnATUdlUlkf=&dcCHqfUrdoeWm=&LShvdcVmbkadq=&QT_3YEVqYnpkh=&sn6OUQWcelXpU=&erbCpkZ_pUhUZ=&aUZKy8UsmZrof=&ug6GsCXofgikg=&vca_ZnZ_lgYYY=&LV4VzRZpaVjWV=&ubL3iXWcVnlUj=&zGrVxFXldefpX=&8YhuxaYonkseV=&Hvkex4UVddlqd=&Oq9zDXZl_fXcU=&DwjG8OUXsVZVc=&wzeuYeVqUXiao=&tfi6YKZchilgp=&OqPaMmYeXY_sn=&ZZ2Ft3Wgghsep=&Nc7wJuVfjaqo_=&RlHSPxUdVlaWb=&SVDwnUXVhZXp_=&BCGDbfUWWdhmp=&leZGWaVjYZnUf=&zufakSZchribd=&kGsrOnYirXgbe=&_MdCmNUkcX_bV=&yuuU_kUUWdZaV=&o_BKvnXXmcgqk=&zT57q8UpZWeZj=&DzXxnnXnsUllh=&jA2ll_Y_qfsrX=&dhqbsvYUierUm=&3hRnnlYqcm_iU=&gxeZoCZjsqddb=&L6jvvIUsckkom=&fy82CYYlVjjXr=&iBRYbgYZnodqn=&vvJrJbYbcrUli=&W8LfDCUUgefjV=&zLbLwAUaaaVsi=&SWPySnZnqU_ZU=&uUSOAmXhrebad=&wn4mOoXUYl_gb=&MgRk69XrVdmbm=&z2PiapVgeXiYn=&t9iGpDXmXZsbW=&69FZXzXiojUak=&aLNgxfXYbbjVY=&uFpK2sVsUhjZg=&B7pfMoWpZoVji=&8UFIcMZhoZ_db=&gFTtHeWihWdgZ=&myS2fPUiaXjhX=&FzRRTRZ_Yofgh=&LpEFD6WZmXkoc=&aJbhWPZhbiVbc=&IihsFyXrYVbr_=&jMnuIdVb_polY=&lksDw9ZlXoqos=&oQTbCDVXblscg=&Y5IFJqVmgeaWe=&moJ3TwVecbUno=&C3C37_YYcq_Xi=&2ZewY9WoXWbXa=&yjRPkdVjacolU=&TGbBVsUUc_YiV=&HNcpuCYqprlmV=&lfzNCnVhYngre=&pJHRXYZZlrl_X=&Ck4BJWXsqXhri=&aOcwROWUnnbsh=&kgpdFGUjsmYXY=&L3XgF3Xpdsfa_=&rypxjgUmgVcmW=&o9AZqUUc_ZcZa=&sINsFxUnqaUrm=&v6a3O8XeWicbs=&iue22VZmaqVgk=&taV6bjWhU_flp=&P_4PriVZijbdc=&m9pUzKZsrbqoc=&6SSgwlXfk_iqj=&uT7zBlYZ_qWik=&xEpoMaYh_Vi_V=&ou_7sJWiYpWgh=&OKqUZ3VhrdgYi=&BFhkYhYbaWo__=&PPYNJYXgdcfqW=&U6mRuvXglqn_f=&85RTRAVlrndsi=&zzQW2PYjVgmZm=&RixuUHVseqelq=&Wv3drcYib_kfc=&BH2RorVeqqqno=&yjnVrXZgWokl_=&XdLqSXZVihcgo=&5klEQqYUnUqje=&GQlyotXVcsU_n=&rzjPXSVhXXcfX=&CeexYtWebUkXX=&c85PGZUgfrmZh=&J7UrOOVWVadlX=&78mL6fViZfWhZ=&8SDINkVnjmmgl=&ywIoWrWdX_hjo=&Mmn6e9Xa_WrsX=&BrWUmcYbsfhhZ=&fZeYeDVkUVl_j=&9GXBbNUZmcXde=&NfYPvvXmpkebV=&VZp5xzVbomXWn=&PCrlieZeammiV=&8JOFWYUslXrif=&Zns9CbYWhc__l=&TUh7bUXqqelpn=&ZSVryfVXnbhpZ=&v8XvP_WkaXhs_=&xKoSCtUlhVcfj=&d6J6tXWpiiVdc=&TyIQIbUlZdinf=&nS5ADFVXgcfch=&kU5yHLXlcscmZ=&nqYKl5Wmsmirq=&o4cojHXjZ_icZ=&iQQsMDWihWd_W=&xkuGZ6YnZcirb=&DS7_oLZrnXpgg=&RIGkSnZfongqe=&jl8gb9Z_UXpUo=&42IPJ6VgljkUd=&eIjtoyXsmidgl=&_upamVUcZgXhU=&pvhdDsYnZYYY_=&DomtjBY_ikoZW=&TupeNRUdeYck_=&8WR_H5Wc_eYlX=&T9YTyUVoimnkp=&EoRld_Ypif_ao=&M6d466WdkUeaf=&s_RjjPUlZVbWl=&RcCjJAUghdUbd=&JMwPezUZlUmYe=&GgZuFsVrroiVh=&rjRO35VgfqepX=&6TYvCiZsnsZpo=&7nHILsUafoiqV=&xFJQq4ZYhamZW=&_kLr8WVrZooYf=&eVeROmZlcllZ_=&NxsgggYgbjUrk=&JwHxypWUcodXl=&nmjfSgVYlVqgl=&OpPA9PYXhkXdq=&R7awFyUppmcif=&AYf4LuUogaVjq=&pNMtLdUanfVgl=&5YFwwCWUqgZaV=&4QL7NSWWWUcfh=&pb2FaBXcgiVsk=&H82cZHZmVUZUV=&RwVRUBWpidjXj=&AWMlIPUbjmZlX=&QwCLayZUicVYY=&PKpFvQYasfose=&Q_tqRlYb_UfZr=&GkQhNiVjfZsUZ=&qv_egCWibVrod=&AbwERNZfYmlsl=&lbNTjJViWqiqk=&77d3nBXWcsZZl=&5xcjyWXhoWkWf=&ZmG3obXbWqcfs=&72Gbf4UflX_nj=&hiHPzRXYhVhqs=&Iad246UWpbqUZ=&GB_84SZrarlbl=&zclOn3WqqWiXZ=&seTwgsYfYhpah=&7BYZiNWdZqshd=&drvbV2UVjbjml=&ndSqqcXWgdsir=&SN25HZVbsqpae=&cUDRZeZfmbqaV=&kQTOKSVmVgsld=&oynkWIXalcVda=&fT9FmkXodgZcV=&yLV3AgXanalii=&n_wggUYZjZfYm=&XTUfgWWrchaaW=&7LzXziUhWqZcr=&eyCLLMVlXUqoi=&fwVUIkWUYemYb=&IfOszuYgicskV=&_4Yb7VXgqm_il=&JnTTjzX_ekfeZ=&3IuWJ2YcjfYgn=&yF6JYKUVkaacf=&ArSdzFZ_bVYbj=&NkePfqYgmeiWa=&94DusJVjprcsc=&Znf7ycXVqYjmr=&GDG8KKZXUaYkd=&Vhl8XDXnYdijf=&82BTCnUqcleqb=&NZg7ZHXgamUpZ=&uTLG7TWVina_s=&G5PpejZmYr_ke=&wJYwsZVdmplaX=&jodRVlXbs_gZl=&chWGPuVfpsbUZ=&VqboQ6Wnkfk_m=&L5WP3DVnmUXaV=&kNPYMSUabUmjh=&Ksi3NxYaqiiYf=&GZMusPWaimhXp=&mqarRiWqYjWic=&VXGHeaVWdreWZ=&habnNSVVqccpc=&A5YjAoUcckhsn=&TWqlZZWiYZ__k=&yHX7vJYbfjrh_=&mSkf7RUeZgmsY=&VcrwL_Vfjinff=&4DfmfgUkheodZ=&Yb6IQQZdfXjai=&yAXxGAYkZgWmq=&c3d4MFVbibWkl=&T_5_B6ZagrdUf=&QpoXbiUfpknip=&5PRGfAUnlnWYb=&fv4gO3Vak__bc=&DE4HsPVrnZhgs=&__N3rDYVYXijn=&KzkjJZWhoheif=&uQIFnkYrsflWg=&uCjnIEYdrqiqZ=&xWvH5pYhWVdaq=&Tvyw9JZZjrjpY=&Bi6xRQYdUWqki=&Oag45TUXcscYa=&SP7b_OWgUhYqm=&XfZQWDZjcmqXm=&j2xjZAZehimsm=&e72NCUVabWVko=&AxwruxZrlnmok=&2XnpxTUp_fgjc=&bP2mHxXZUiqnf=&2NqBsiYpZesVb=&Dk35bsWspdfsq=&zNrKIzUpdcZme=&ctd9p_UlhdeXU=&EdPHYIUl_meVW=&7H_wdTXVpoara=&zka6FVWnge_jp=&7wOn8dZ_mWmcj=&GsfAZCWnZkXpj=&ZX6mejWVldjqr=&S6wonjZVbZYVb=&LrjuqJYWiUdeo=&LgGrTbWZjeVlb=&w9ZilfXmo_c_f=&RVoQABWoUh_Yf=&8dnm4eWmqpZ_p=&q67mz5XmVbqll=&2FS9U5XjWc_Yl=&jCqdtXUZmcmUm=&rSQVCbVqedqrZ=&ENYdDuZimUape=&zjQ4CSXmdVope=&4qwh97VW_cUmc=&vvZT6kUnabqfX=&2veSv7UfYZqVd=&LKFQyFVbfbskq=&XXzXEVWWUgsqY=&JW3AG8XijUnk_=&d9XeifZnnecef=&BTccCbVVUoUUe=&5gUbfiXfsmViW=&Oo3ZCjWibnged=&zg4hNCVZYhUbp=&UjxxapWhZnrgX=&qaXmaSWqW_ihr=&zMddXTVXmdqWh=&tx4K7RZrYfUkk=&G3ykwfVnh_gXg=&eYGX3OZoqagjc=&nIwZBqYnleeWg=&Mn8rs3ZfhpZjY=&koTkMCUaWmbnY=&ps3Gp8ZVYUYme=&nOOZfcYbUhWck=&qTB7bkYnkdfVY=&jube9rYdUWoVU=&EZkGBVXhpsnrV=&x7xnK2YaYYqZg=&3XiMKqYXobnUb=&9kk3QxUXapXeZ=&eNkvhwZWglcso=&taKv5gZeqgkqk=&8W4GlkUcfXgqU=&Yx55YJVjab_mm=&9PsWbSYndXcVb=&WICGFZXrjqpXm=&Sh9ZL9VVYXkXi=&ttgXdAZaaYgZZ=&mugmwjYdXXYhU=&z8pvKfYdp_gmY=&Wam_7MXecWcXb=&t5oL3hVlZdlqr=&cQU44BVWa_Zga=&YliaRzZXamZmj=&NwedrmUoqUgWk=&lpquBIXXpYi_h=&B4FqfoZddjpdd=&PQzDQ_WmVVfad=&3SRtwSYYXjdms=&yosk2DVYnYfXZ=&eT9MLwValqeob=&AzvULTXmVjcUU=&mGMk5lXiWgmkh=&ZVVKTxW_bWqni=&I3QawrWZlr_Xq=&HKK9L2Zma_ghc=&bknnjtYc_hhph=&Pthnx8ZfeoYhi=&wlTqIFVlifoXe=&9FGkMzUjV_eVg=&yPi2nTZdakpbf=&WIiN2tU_dbVns=&ygZ226UbooWjd=&5UJpbUXhkg_hh=&sSIpOzWsob_c_=&r4Bp_UVcXilYk=&59n4lOWipilsY=&jWenFVVgZ_Vaa=&EeaPF3Wg_fdfo=&9K52B5VWXdUsg=&mT2HcdZZcqjrn=&h3qq3RZXlopcX=&H9owXdVqcicb_=&dVwbioWdZ_ifl=&B2Ut8rUZXncpk=&QVsn5bW_gcjno=&NOkvgxXUapilf=&LlNj3rW_figXq=&LBQppsWhXXqoa=&i3LluwUomfUqU=&zZYKEqVgliVhX=&29f8aTWenqYom=&tTYbGkWWhjiUU=&rkpvIHUpkkrij=&f_7_rZXl_bpis=&YFcDscWnZmZbj=&MWSRfXZlchpZV=&ZoaR4_VgmYiba=&e5WsWVWgV_sXc=&YrldldZdelilW=&PbotqrWUUXVsp=&myaxJWWlpVXkX=&7kPIlyWirkcjf=&BxYT7gZka__nY=&AArDcDZpVprfq=&4LyB8cZggkbZo=&bKJAttYjkgZ_l=&pPsXflVhlXhgb=&F6a2rmXUmYbgd=&ZkJWPuYbXqhpg=&rncnN_ZYYlqYl=&JjsfeDVsmad_X=&8kFJxxYeojmZe=&7obznjZdXqnZU=&TBCsyIZmgkaqo=&PehI9ZWppgkXn=&AAl9PNZesarfr=&D7GPFPUshYrda=&rDuCgeYjqqssi=&B5Hz2sYX_ZllZ=&R7MghOWXgXZqi=&6fQDfoVkgsesU=&4w7MJSXs_eqUa=&HNnPaWXUmWseq=&KPjKyTUpkokUd=&2Ju2tWXoYpbXV=&L8_o_cYmjahgd=&NrXscCVdWiabZ=&NLmYJiZ_nfhph=&SKLViEUqUmZpb=&p3m3kWXVnobmY=&JtEKjfYejjVie=&tCoDLCUe_kUVr=&LLzljcUol_WUp=&FzXipIUcnhnXj=&Y9yZDNYcnXUim=&ERUyHyVqoabjq=&qYceVlVceYdof=&JexyDcZXenapk=&dzdn3eVlmUsXo=&GOwPcHZqX_sVa=&rjxJfGZgnhZm_=&SxuEOtUrfgfdp=&PEle9qZkbXrrg=&dAQneTZZ_XXmq=&yyZyLQXmo_iic=&ChdCwyZknVhpa=&A_NJeCXknceqf=&CnXPTXVZXfYic=&q8rviEUndjshU=&taHbFgUhcslha=&yZdmlUZm_plpU=&SsIq2XUeadYsU=&bTEBoMVnafUUd=&_dpAHVWlgdjY_=&vELqfdUklseos=&Mn7CouZageWid=&mGwV5GVnodbYi=&oD76EXUsUYnod=&NlbdIoZla_bcq=&_DQy7mXWiUork=&FiLxlaYYUqnYe=&axTwNbWdifUVs=&2NonKLZamnsdo=&dNOWzFVdWmcpi=&krbGWiYmbWjZq=&KxmyyoVosfieq=&RlcjFXVWoqiqX=&EKJIJXZVdqaod=&m2Gt3MYrgpW_p=&8CTvFaVcchZmg=&c94TkUUZgYaZj=&fF5yCVXdfpipn=&MicdkQUei_kXp=&t9AIwQXqXkYeY=&cZcKrIUerZjec=&vxXK3kWpknggc=&nEyfoTVUa_gqj=&Hu92p7UsdhWXj=&Wh4Ra6UahpioX=&WVdYA_YcjaWUk=&tZ7LdMVqcVldd=&9mZqLuXpUmohW=&j8YDKwUYgZape=&_2nrgXXbqaeYp=&2_5JZYXekesZi=&vHyKFTZjcX_Wi=&hw2YorXsdXfZV=&QZhorOZlZes_p=&CB6e_CWZapfld=&aAHAPBWbppVWq=&PUlF7pYXYeYlp=&D433SiYcqahZl=&wrUpPBZbongWY=&rCgBWdXknsabl=&qvPQfCYeiqao_=&jBFulTUeogn_b=&N7yc2eXfjalib=&xtrQCeZj_qdsh=&GWmxq5VXZmnaa=&jRTBtUUfbnjhl=&iVnQFiYqljZhq=&5JKG4eXlWggib=&UXZ2PKUqYWbW_=&HJsnO7Wsslsde=&Q7OiC_ZsXdsoW=&63X7iZUVZkfob=&w39GArXWmYdWs=&P6UHsDVjnVjpf=&GrFmn3UjmVo__=&BITYxGZZiXXs_=&yKZENdYcXldkr=&HTXMWjZklgU_d=&jmENOzYnVcUnl=&niVkJKXoXXqdU=&eVc8JcUfenhgr=&Ggzs6HWUlqffh=&T95pcxZedZaZi=&GVgHgLUVe_UVk=&C_lDlaYhkphXg=&4LVu6BVqbnirm=&9_BrPSXamcUjg=&tWGt6qZVjjfgb=&w7Wrk6ZXoeXZV=&fB2tOyZoZinZr=&_PPkeLYjVjfbn=&QETL5nWpsnoUY=&WzODBLVWrWgid=&NstLRnWqksrrU=&FgaCYiUYpikrq=&IdN_ElYroeYjm=&HWRZiiZhUhZ_W=&nMtVI5XepaiUq=&Llu6fXWXYZogg=&49aUlqXimsqUs=&FTAgnCUfqrqei=&lErvg4WaZUVna=&m7kueuXnlfeYb=&DJ9rGBWWrsqqU=&XsCeSKWjXpZmm=&eMpesHUc_XafX=&dT2lIFVhWhseV=&zJJFYPZa_Zjj_=&VBUjhWWsjllso=&boQM2MWUinjpg=&xpYb2wZgaW_bf=&h3TcW3YqWZcem=&9hQH5eUg_mbUc=&ze8GIKUfYjVce=&ECkPlYVdscnYs=&5aF6HjWqWkXhV=&QJvgqbUYaZeWd=&72YLm_ZeU_mac=&xLcTjtWklW_gp=&N9_qOhWWVqprm=&jf_4VJVe_bagW=&je9yBeVXjnloa=&OhifVlUaqXXef=&w4LMGZUcaXmcf=&96ZUNLXYgeXpg=&wvBBM6WjlYqsd=&g4izsAYYb_bab=&EcR5gWVlgWohj=&fO8n5VVeUqXer=&zYLg8fZmeZpXr=&Dir84WUolmcnn=&wxjeG6VdddoUY=&3iugJGUoUkYqg=&5dN7stYfZkfhs=&arHhhuVWbarY_=&8PWXqyUkmfsja=&4oaAONZpoWdq_=&_PzQu6YpdlYaj=&oFT4QNVaaffjb=&AzV9HfZbelYXb=&dyvQtMX_msfbl=&nlEmC8WZUaVZh=&AM5ZXFY_hWifk=&TPrzPEZcdimfZ=&sjed2KYiZXkjV=&6BbrJOYYlcpnp=&PJkSLHWVdUsqf=&cLx6jAZsmrokr=&hDIH9pVaYlVnb=&NU69iHXoarVod=&l5ro64ZUYmlcd=&CwiQMCXaheffr=&nYIYaiWdjfZZf=&vvCnNHZUll_oj=&I2eVDyZVebade=&UgKqBMXXVgjmq=&9IPd2xYfjZYW_=&kMItwbYpZdqln=&uRZW26UjdXXgp=&uTsgndYYnsqne=&RolSgvWkbXZif=&pH48AqZgeXjea=&V9wbuYVsUejap=&WYJTFdXpbankX=&5VOPfKUbenjiV=&srZ6xcXesWoce=&SwoszeYohUmhk=&KjZXIGVnq_dja=&cmGKjNWWlUoms=&PfvNruX_UYedU=&YnOgbDZUjXZg_=&5K5qQ3YhXlpno=&PuJgfrZdkkYZs=&EIAIAiXYoWqjp=&FAzY8LWeZcdgb=&HbgqpxWfVgdkm=&7JjWhYVllakYd=&6MJDqsZkqpkoa=&BXsAugVZikjVb=&XqsOGsVs_oblr=&UkAYIuYgqkXmq=&HQdJW7YXsppeZ=&dGCy9VUsqlZgV=&lOM7YfXYfmZVX=&PLHFhGVeWbbmX=&okywJ6WdamcWm=&Udjbs3UpldhXd=&WmgvCCUWnZbdo=&SEGQeaUUZrskb=&X4B2OVWi_Wogo=&_q7udgWpbaXfs=&otaCllVWZj_ob=&tbjRGBUYYUkcc=&ZZV9YyVYgkcYZ=&PON9dhZYmarcl=&kSMqOyUrhdlZW=&sN3Q2NXodcrqd=&A8Os6uUnfipgg=&7kL2EaUlUaqln=&xxyGf2YgfcrkX=&YVViptUrUi_YY=&P6flgNYohUZUk=&IqYT_qXXshbln=&G2swelWXddWWq=&_MqFHBYrjqWll=&_oQXKzYkelUbf=&QRZzlxYanmUib=&smEYTHWbkccZV=&DOfs5tVamkeYn=&kHdTgcYXjeZor=&w7gJTrY_fgdlj=&3sUe6hWnpVaZr=&nM7GSQVmiqkni=&dr_jFjVbhep_o=&cMWrBZUna_mpq=&aRnTW8XkUXmni=&aag6ZbVYYYVqo=&cRmOp9Vmigjpo=&IhmyqTVfUsloY=&pT8Es5WZqYUWZ=&s8fFCOZVWl_Ur=&29_LwPVqUUoZm=&kB3g8RWdpbfog=&DfWrAaZUolUnh=&TZQtdaXpbqVhY=&KowVBeZfldsWh=&Ir3zwXXaYhXWb=&PRd6sVXZnYgcZ=&NRvWL3Vjqcjln=&3wlvpcVcddVoa=&BIdMIsWnacmhh=&QNat4HWphZUk_=&b9IJzVZniVnop=&6VvrRJUXVssid=&nDXDi3XgbYjhj=&lu9mp_Zciejop=&DHzDzfWXjXonb=&iVivXXUbpWhgg=&hstSxVWWlWXeZ=&yuyWxvXsbbsqk=&hEL_qFUoYqjbi=&5Fk68aXqiboUW=&rdbCKoZqXkipb=&jOCEp8Ve_Vqca=&9alF7NXboVr_q=&oT2EfXUsYddir=&WquW4qVkpfagd=&zOzNg3ZZredec=&DrBensYdhemoZ=&xn4TwDYUWljrV=&D3JUXEYXVUdd_=&JIlG9jUgVpd_l=&dfUGZWYnqdWie=&UsQfAtZVWbeoq=&coyuTFZnWbref=&ZZAXkFUiqUZfp=&nQwQmVVqjVhml=&SmvDt_Ympbpdg=&ff9OVtVhbnfhn=&FAHHwKXg_aWfi=&T72UfNYqkUgVY=&xKtfiBVqphdsZ=&pypBigUi_qpoX=&amYqY6ZfaZUnY=&obDOy5YjUqeea=&JOBAPaWVjWoVb=&UxkCpHXpUopXg=&VVpX9CXsrasor=&cyhym6YlfVWoe=&afONOUXnUsjdr=&CviJJiXemYeqr=&EmXPLKVeaYaji=&_HLqJzXmUgmcU=&_33TSwXVbbmei=&gYzxZiUVsZjbY=&z4tz9mWaWagUp=&sjoMldVkba_mi=&n_EB7mVeVl_sW=&x6siQFUXqlmXl=&gvoy6EZVdmjsp=&ACRDYFXgmsZWm=&SGXdOvZeegXWm=&pQvPc9XVcUhWj=&TwOT_pWXrYlhW=&9VDsUXYeVVlgp=&KX6Jz_Z_U_YcY=&Geka6tWekrmma=&_aL3IOZprogmb=&StnVWBXs_Xrcs=&WLzZx8WYrmpok=&KdxiGMWrqiicW=&8F7xx8YXdUaWo=&SGr6YvUgldYff=&upuzirYelmUrm=&il4Is9ZdrccVf=&ARfLuyUfdjfqW=&eVRLwmXopYhZm=&5wOMqmXoWpgrq=&AraHu2X_fhesf=&Wqq5HeWUahhcU=&2MwZCoUVlXeYe=&f3CjYPUlngdbs=&96ZV6nXospldW=&VTtLp8XUUlnsq=&OqEn3tUjidgsb=&Gm336gUXmgacp=&UEESbXXm_gkcc=&lhG8ofX_qmXXa=&Ewlin9ZdqUpUg=&8jI_tVVbklUlh=&72l6mUZeWmVZl=&XxGH_fYWjUaU_=&8NMhpEWYUYZkW=&AaKDmTXYgpcop=&IDMRtIYh_bdol=&TYABOsXbbrgsj=&nEygIYVYZrXqc=&yapKaZXnnheef=&ljYZCgXofXZfr=&AU_JrmWrskXds=&9odGhmUYlVrk_=&fDcc6rZlfqedp=&4B4Jz8ZjnUWc_=&z6wBatUfqWsYq=&mZmVQJUqdjc_g=&3StsRzXWgbkWg=&eua5TPUhadbgU=&yvjdhxWlVbnrf=&AaikkWYdZUipU=&HUet2NUnajgVc=&YULw7DZiferkU=&Nk2rBwWnmi_ss=&LYXIlmXglhbmo=&62MRo2WWWspWa=&QjRvstVXboVqb=&FTm2qpUdphfcp=&QeyRJYXhmWl_c=&QpHvMcXknnpff=&bgLLQ8UbYfdhd=&DWhmFxZekoipZ=&uAlv2kUcfncmi=&gadfDOZUeXsYU=&5suuxJXnigWel=&fACHjUVdYjYZe=&OIDUecXdhgggn=&LaiLG2UgjfUka=&MGrAQ_UpkYkp_=&F4Dk9yVcdikpf=&9BDcxqVpVrrkj=&zeMCpkUjkiVgZ=&qhCuXsZmiakge=&jTaLdzZnomjer=&BhSI4SWbbfoaV=&5dYD_bUXnpkWh=&kQBhWvYUYk_fZ=&nqMG5cWkkXcdg=&uQGZaaX_mVqhp=&zIJF7AYcggdla=&B3tKpzWUlnhnr=&CxbpEGZjXkdnl=&a9GyD3YdVpbka=&YXk49WZacncgV=&JVyOOcXWVUVaY=&_iGVJ6ZXXejss=&9QHGTcYYrqWnV=&zeYS5QWsnnZro=&GopvCnZkajkfh=&YMWgDhUjepsgV=&2tOITWZppiYiX=&b2RSdJUsbbpWV=&A9exf9UgVcUkm=&D6wvHPY_fdZli=&wzLnjCWkhVsdk=&mZ328qYdfhqkf=&LYKeRwWoZYmiY=&XINaTKXZcnZZb=&BUJFJPXYUphjm=&lsTR5dVqYWjXU=&7pWCMxWUepc_o=&sX5CyyUgaegmi=&yeKPkwYZZdccb=&9rYNrsWWs_bZm=&QXD3wkZkcjXsW=&dTXPgSVcZgpqi=&fBgrHQWmamcoX=&euo5eEWqislmU=&sKbR8bUUpmXpa=&ZrEt84ZpZers_=&VETumlUr_UaVq=&JPJa85YiUikmZ=&KKQCSmVnUjomq=&6zfInDWnrknsl=&JTS3HxZWUbhrh=&yMKfYYZlYZdog=&akDXZPZfddbme=&kFzavuXcomsVg=&xcakDGVkiidVY=&bePgsvUssiXeX=&eqqAarUnVrhYm=&vnRqY4WXdV_ee=&whqLQuVVscqlU=&GCkugZXVqoZUj=&jJw53jWfdsnfe=&ubTOEoXYooroj=&4IYuYLVsrUqr_=&6mHx4eXlff_oV=&vHnl_uZpXbUhs=&_V8l_4UUk_gfm=&Ssrm9VYVhpbaV=&DtcckoYfsioqs=&q5oxYdXmhcYir=&gVMHAYZWlUsVe=&sugoWGUmiWela=&Sunwa9Um_ccmc=&LUFPQFZaiZYUV=&LnLLbyUkqijlc=&OJSpgbWZqXck_=&8EI_LKZVXZlZh=&4BJ7IuZeWjqlZ=&LQh64ZYhVfXqk=&p5NtgPXfUXUcm=&zD56E7Wbncmhr=&EUebYGVqWUimr=&GgKLERZqjroog=&g6_xywZdVcsfj=&bL6IDDVVgYrpg=&6WhdijZlU_hdp=&OYpSIlZbnpera=&ytodCRWlZkrXe=&Oc_7dpUnfrsmq=&3J3Y62Yhagrka=&IhvEdlWaepnVm=&yn3ivFZnocicW=&ueytXTX_WqVmY=&n2JBboZV_qqUU=&HCCRjJUfpfheh=&Sik_9VWl_Zpfg=&u6rOznVYbXcqs=&fevBVCUobeWrj=&rsMIURZsYjXY_=&4xi4wYU_eepaf=&Q49GEvU_qVVnc=&oeWqdOYnWpsgW=&wSpxDEWZpWple=&8ok_DUWmo_WZ_=&5JKyvuVigZbff=&PtNALIXoloqUl=&Q995wuWhqrrqm=&TBEYjdWmaUibY=&hp7QIIVrkgkaj=&7JKHkSVrpig__=&2nJOcGVpVipWs=&nCWxNkXYYb_kc=&ujVeu9VmXUgjY=&rJheVnUdbisZd=&Fj7hzFZfrhjdW=&V2vbpXWbVrWUo=&v8RwE3Vfcmfad=&hj7U2QYWbfsW_=&h5x55tZrVahqo=&pTOpK4Ws_cqXo=&wx3mcHZehcgaZ=&9FDMEOWpZYqYZ=&XZ6LUdWUsXjYs=&gA85vpYnljgne=&nzXWnpViXeqXn=&X5eMC4UjhYqej=&UXOfT2Xnommrk=&GvkN7VXfoUlZm=&kkLflbUbkjobi=&XFHPmtVi_karg=&YxHjWSZrdprXa=&vBMlBnVWgZYkW=&2hB9JdYcmrsVs=&rE3mgHYqmrpla=&bi67pUUjVkhen=&EFDWItWhZhqho=&qakMmNZhjei_l=&Xel8e7XjVicsZ=&8d4RP4XgiVmZq=&EWJ57NYUbrYqr=&K4WnAzX_oo_id=&zVk2HFWidrWnr=&zs_6YWUcdkhnc=&hlYpwwYZYfaik=&kphShmXWsgXdn=&qoCGLOWYWrbWq=&fFAzKMXq_aXld=&OiFKKAYndafhc=&_9FOQ_U_Uadda=&gckZDIXniWUng=&c6ZssHUaqppXn=&S2XsKzZgZn__d=&RhgLazZor_meh=&G6Wt_DUngWqcf=&pYxhNDUXcUhmc=&oEvY4dUdqiooj=&VGpdLeYrnflqn=&FzSBhZYhiaYeb=&532ZcqXmjWojk=&fp9zO8Vrhaenl=&fSQLoFYnjqsoq=&DCLfYdXs_ep_n=&BvCIKIUgke_gf=&jrFgDmZWlVcUe=&akAdwtUZrqdbf=&ynMtI_Wblasf_=&4MldP7Urjri_m=&8b_hhIVoUcreh=&rTixUsXXWYapZ=&dlDwuNYbgXdVZ=&64qFERVWUjnoq=&EP7BQ3WnchlVX=&9kyxrhWUfmfoo=&6HgkpKZYifWhX=&rdB9cIY_ZZkdh=&I_28UvVjngWjW=&BYaDQwZjlqegq=&z9niqqYnnrsjd=&Dbj4ILZgscr_o=&9thgB4Ulejchg=&Oc84trXWjpWWm=&lgPEPZYaUjcq_=&pE2zniWsUqVbV=&6hYUE_UYWgmcl=&ictu8_Ygjl_Vc=&vYdFxNUgsqgge=&IKbO3oXUVhimX=&x85Gv8Xd_hpsf=&jskzMHUnocqlU=&5RciH8XqVncoj=&fiDXEAXpYWVer=&4xdfcJYebabVf=&i7rpl3Yfodmoq=&o_6K4RZolclnk=&h2hA95WUpsYpq=&IKNf6TWeeaWbg=&aSFPxjWUdYmbp=&4f6EAKUVXdfnZ=&Jh3wvJUqpgbVW=&sOT5a_UnrUoXZ=&HfTUOeYnncjUd=&n_7JsWYnqasoc=&4_sFiqUrmqcca=&BG3xdlVdnkfUf=&mM62gOUklkoko=&fZPNtLUheZsZs=&JnvMGMZbqgocm=&Qm3TfKXmUga_a=&hRFZ3LWdlo_km=&gbwLbnXqnhemq=&YWTVlsZjsfrVh=&bJtjj9Up_fmlh=&hzSmlpYogeXhn=&ZiLIMrUgm__Zj=&Xx3hOhVqafnrl=&dCbYTEUbqosqj=&C4T54dXfosoml=&cZD7AmYnpenmY=&AvjsmaYZkjedk=&omTFDwYUsWaok=&N8jcovZnj_qlh=&vK8o99Yreckrd=&u2B6UcYrblpXd=&QNrbRDUiYsaio=&AV2P2SXYXq_nW=&lkTktoYUXWglk=&UkBFE_XgocosU=&_LA7B5ZUapibs=&G3lUtIWXfXbeZ=&DRf2rsVchlXsa=&76XfdJWeklkhY=&5y99f2YcqiUri=&wU4JslUikblqW=&COzo3xYffWWjq=&nMCOrqXrmqjVn=&naeaZ3Vfjcd_f=&tDyPUrWfYomVl=&VZK8AHUcqUhUq=&wOBkuJVfgca_Z=&eN_4jaXloiZWZ=&_TSVizZgmfYsc=&NDyfgsUeXsbgY=&VKwlsGXmonrUo=&FM8A8hUbVsmZq=&RXmml_VbopmgZ=&BdtjFuXckkphd=&tSGqcYXafWVb_=&AowpnbVpmloed=&NEsOTYU_aZjgr=&wNUHs_VhnrXsa=&RTVoW6X_YXqdm=&vaQ9omYk__hsh=&ELHq9nYcndUXb=&EEFafOUaeWgWl=&rFUrMZZmehmlm=&B4Pn44UaaZUoi=&CLlIK5XdkormU=&nMnUjmViUqZld=&XpfN7oYWhbZsc=&dxlrCnZUdopod=&LsyYJ4VfejYnU=&5lCIfzYqddmdZ=&og2y8gWkhspja=&63aWNTVdceqhZ=&YN3Kf4Zjqlegb=&Fon9KFUaiVda_=&OSB_QaWXpsUic=&MPqLpAZplqVYg=&SJs2IzYbWpcee=&6r3OsRUqVUoXU=&Ie8q75ZVYibri=&WelFquVWh_qlY=&spOdqsYYhWbd_=&ju2_ooWclqWiU=&NfrpSbUcbXpgZ=&szFcgqVj_Ynks=&KqIV2VZmpkmm_=&LBxvk_Zefbdbg=&48QQBuWsVUVlb=&BVkESqXlZfmpi=&3Bz2GNYacYZnZ=&e6tTxkWnidjag=&e99KhVUpokcWY=&duaVT_W_hr_om=&TTJ2vhXka_qrf=&GIqulJWjqfWsb=&6jx8xoWnUksih=&AnawNlUWUaVWj=&ls7pnEUsUlnrj=&_3vPR9ZpaYmo_=&7HsvWvX_WscUb=&8fbTLZYbmWjZk=&_eutx2XlWrUdW=&uu9PCkWrnmdXg=&BCTwsJVc_qafY=&wKAX8PZWjYiWW=&pLTGkkZqXle_n=&uiTND6UdkeZfo=&rBTz8ZWWWggZU=&JJsaniYbmapo_=&6qGwTPZkXfapo=&GGTJToVrmUYaW=&3DF4ePYnllpV_=&MGTVHYVZZnm_q=&zmMuDvZong_lb=&FZMxKcYrfg_Zf=&XjlBUEXZU_dlf=&pQuWlkUYdbnbr=&28oSHVVWhUlma=&lfOdlGWWcrXoj=&Mq9T8qUfododm=&fVbYoCYUpaiha=&mHnsm9UlilVnX=&GPrETkUaWdWXg=&XDudoqZngbZeq=&ktJC3HYfpeccs=&fcJDBsUXkeYkq=&2Z_ayKZrrkmhb=&7OVawkVdreoWZ=&QtSBoqWb_lXjX=&jLKWE4Z_fmcii=&LSnLgHUodr_mV=&ejY_xgYXlWbok=&QBCYf3XfXgraZ=&SBfmesUZlrkge=&KgtSrNWforihb=&ZIw2mdUnqVlVc=&wzsbFnXfVeqqq=&ZO6wr5Zceqpnf=&2gMrtoVnegbip=&HWn7ybYXWgkVU=&FNlj7MZqiaWcq=&nF2GOXYipemai=&vu5ZaYVqUfgfa=&oDXN4WVkcpZYi=&pLXokjZceoeWq=&hlO2yVU_pllUm=&h5RycBUassiUe=&MJ2keIWneUjXi=&mECDFOXkXjrhW=&_3ANNeVsoWhkZ=&2gPKLGVZnqels=&NqAs4SWYbgrrU=&YW32EjYioYcqd=&F9ddGXWbebghg=&R7Ok9ZVVYmWf_=&BZG6dvYsjrdUf=&7UbzUPYflfgWb=&bn2Kx_WhWfbjn=&loDhVEVbUcZUe=&Ev79MHXsjeZbf=&bMXAebXjVhnfg=&TzQKrBWXakbVi=&QHi_p4WfarfsX=&giH6g7Vjrkojb=&pjhCCdWciXinp=&LYlMM8XicY_d_=&wIhKolWsgilge=&TGPlLOXoVjdYl=&R7VC2BUdomrcZ=&e4YW_AUVWncec=&UIlXlzWsr_Xle=&RkFMonZbbYfZl=&fcU65PXckZlde=&fcvKoHUjUUlYg=&_GFGr_UnX_lqU=&NSD9_4XUYWood=&EkjKdkXnskarg=&Cv_RmrYmimcmg=&dI2Zi4WrkoZXo=&QG8kSQXWa_qVc=&l4gIGhXlf__Wj=&lOoTzrVWWZgmd=&26PwCVYYgi_rm=&4ZqeH5Vpd_rjn=&z3IrHSYsdssqn=&HDBZiFZsplXhp=&Ej6ioZYjXXnXX=&_d8MsNUYmnjZd=&dX28opXmdfVi_=&WgkuhyW_norkg=&5rDgRNZYldfah=&2tt44zZZcfrVi=&HhD7hRUd_srW_=&e3yT2sZY_X_ol=&SRXKkhZcslrf_=&nfANHCUo_rkpl=&IDUbtpZoaeWhh=&kLnaApVZbjrne=&d_lbPHYfrsopr=&grw6PkYjWXWjd=&X6ygTgZchgprc=&Nqkmo7YdkcjXX=&cOJsYwXVXsUWh=&iSsBaaZbbakUd=&TqvwAXXYnhc_f=&orvkZ5XXWkYks=&6jZJvPWocV_nr=&3IKskRWga_as_=&LeXM6MYUYWaZr=&_yEvSSVWVgilZ=&ZOhjjuUfkWnlW=&aj5JilZpYlUfU=&b96RQoVW_osgp=&ChhQ5DZriWifZ=&GkYJjFVdfZa_k=&fWh4JgWYYonhf=&NI23z2VadWVVl=&RX6hFYWb_hnkV=&SlfntUVdZchnY=&eUmjGgXerjdqY=&aw4K89WelXpas=&RH6VUGXlaqlnh=&QMu8GXXhsmXfb=&HWfNjxVdqfUXe=&DefMGlXcUZarh=&mq_XbaWjXmWkr=&2OnlWZYgZWZcl=&WGzGRmVXanpiZ=&UKCQg6WmYecmY=&ImpqJSZWp_Vki=&5qu84MVWrZfYn=&PiZak8Wjimab_=&aOBwfSVro_iUb=&HhVsz2Yemagiq=&xaFGbLZZfgWZr=&A52HVfXcUZlYq=&93GwGoZmopVZd=&rssqqIVqlZqir=&J5jQgSZUUsUie=&7XTPENZgXileW=&ZnvdNuYlqcmfa=&eKDbDIWVjcfdY=&sfgI9dW_gdjXm=&Ki_DgRXhYpnhi=&Tv5X8DVVcoiiW=&iQzyDDUqkmgVn=&aZFBygUsfhaso=&FafvQ6YishjUZ=&ByYBnSWoeelWb=&DPuO8KXndpUVV=&59SghgZiYsYhi=&i7j4K7ViakkfV=&XfOZqWZpjVepf=&gFhiflUrrXmmc=&bPPMBWWqsohiq=&VTp5eFWnhgfiW=&EurP5KV_ZUnfZ=&NwtFoGZssUh__=&YpphHIYYriZsZ=&whUSBiVo_isXX=&IaHXL5Wi_afle=&qK9t52W_qmprr=&nV2FhuUqob_bU=&azPszlZXshYmo=&IK9XWZWibjkXe=&OzWUbfXdYnkUr=&QKJaTLZUoXemo=&SDCUpWVXZZejk=&YC3LpJYVereie=&3tksxAUUYcVdd=&ICcCBRXqedpeq=&GrPds9WoUdipm=&zAiFzdUhYfUWj=&BNvvTlVd_Wdss=&e6tb9JZ_drjsf=&WGbSbCWcspaei=&bpsyNQXmrVbZb=&Ygf6lrZilUXig=&DnjD2eXbYen_X=&j2pWILVdddbph=&Lg5KQTWjYoXsr=&OalsP2Uld_cVZ=&tR8GlJVsf_Vch=&r7nDXnWdaqdrV=&LVA7JjVbiqidi=&KnTqgIXaqiqlX=&id7DuFYjrapjm=&mJVOYYYpZbZZo=&TUkfcZWresicp=&krkASuYdYsVem=&ClmZ9SVUiUfkZ=&rBbUYeYq_jWnc=&k_SiKyVbisYap=&xCF7XVYkWghjX=&KIqdcWYmobZ_k=&GpjbYQXhrrYWa=&ycOMhNYUmsbW_=&WO7AtBWXqbdVn=&nX5bBnWdhYnYf=&ngKIJDWgdashm=&rtRR7jVihkhkh=&LMhsgsUpab_hW=&c5yCesWidXUod=&bX5vSdXskVoUn=&ItmA2DVnhZjdo=&hTmyEpUmWnXbV=&2Uxj57XiWXlaX=&gwEW2YUasVaeV=&2J2bllU_gfXZm=&vDJEKAZimabic=&3JhEwNVUXhjgq=&c5V5YWWmibmdo=&FYq7oNXqrXelX=&UOPHb_XgUsmlU=&tKgDW2ZW_kjjr=&IATwrUYhbr_Xp=&Dp6mVBUfqom_j=&NwfgbhYsgpofd=&c6XNpUUWnoma_=&HcLZhRZnZqmXc=&e_XJVyZlhWZqa=&JFkfskVUraZol=&_7JaEyYrgUcno=&cjkhfsVUssgfi=&nzgMenZkcorll=&RImcSZXpWkmVc=&sYETgGV_mopgq=&nSBvz6Vdmjfoc=&hty8dJXbhkm_j=&mhFFpxZ_Uqdpj=&c7WGosXZaggmp=&o4rctTYUUmjsm=&kWDxAKVrrjboe=&XkWXTXXbschim=&55SfwzYWk__sV=&ayVsPnZaW_rgq=&khc_4rWVmoYoh=&zfqz2jUVXfVoo=&RZrDklXionnaX=&3vG5cmVjfoUeb=&eIZkGzW_V_mdj=&S9oYe3UhaWmWk=&JnjnPxYhYkhcf=&d5BVP7YlomYYW=&IGpZ36VXgdqsf=&EKf2g6XarnqfU=&CVy9tLZWpW_Xb=&6uXPhtZmgXhXq=&Ct4zn8YXVUVVY=&4Snu5fUrkofam=&_yyOp2XnUqYUZ=&BAoXcTWZakrhV=&DxmTqyXnieidj=&YAyU8GVZshYVc=&oi9rB5WrdVndc=&KLIPPaUrjimsU=&pqryixYUjZlYj=&82gBkGWbmZlsj=&S3FZ8sVbYbhmc=&_4jViyZf_nmZs=&Q5nnkPVsqZlol=&OTlqa3Ushbhek=&_9En_uYsjo_ob=&2D_iuwXdaWVcg=&ntvKIhZmp_ihU=&eHtjR5Yjg_hcZ=&jh_DrvYbdWmZj=&urSUpLVfobUkn=&PwwJTbWaabUrj=&yywUJSWslkspY=&PSywSBUZicdej=&OQCJl5ZjW_lme=&3OLQ6HYjnnmgX=&pimqdTZaiWZfh=&Oyfep6UhZmsUq=&rvDGhAUpZWfgs=&zT9mRbZsfXqUg=&GOoiELXkajUU_=&iZaZnbWhjbnre=&IAUI5uWsYjeWe=&tKtTgoUsXXhbq=&j6JAQdYapainn=&3eVTSTYjUsaha=&XJBeBvXjnWckf=&iSltUaWWmVj_V=&gcJuCeWXejddi=&XuSKfRUlWfXfo=&TaMdpdUWqlnqr=&t43yqHWVebVYV=&i7jMOsXscqbbX=&6Na7S4UgdZ_rd=&qtGTWqVpjjm_p=&xIMmYsYWqoXZc=&ChUEaHXUpkmcd=&KoYkiaWpccqZj=&uYDLwTUb_qsUd=&26avUjVodsdjV=&TQcDSMVmbkZme=&RG9RQRXekUcZW=&d2CM5MXnrUiga=&mM5jgHUiammps=&TqSrJPXrVddaa=&WxxiSxWWrWggV=&Oav2qqX_cisac=&uMEZIoUrYmlrd=&BEgMygUYWeoVj=&SLKh6xVrkiZdV=&9lgoKxWgqmVnf=&gd8BQhZpeaaYb=&OeVu79Wk_fnca=&8fz7IWWoYkp_l=&bLtijrYgVqWgZ=&JVuIW5XcjkYgr=&dDJY7qYid_XXn=&VfeXG9X_pkWnh=&3VnXSXUWmssef=&Aocgf5WbpioiY=&TFE5EdVYifmdr=&WQ5DsLUsZbpoa=&sskZ3OWhYnUqg=&73FPjFVWnshVp=&YIwX_zUXhlden=&vRfPuVUgaYsUm=&LqNR6kVhl_aYU=&xeLhHnVXnm_Va=&gx_iAAXqaYalq=&3lfRQKUnajlp_=&yCN_X9YmVponc=&CWaRZzWdhairn=&ZX7W5_Z_WrlZp=&4wuU2AVgnniVj=&I9slIgUdmZmo_=&6BAFBEXebioXk=&7llWF9YYdlrfi=&7jzNngWfcaZWd=&edaauHXnWfYjb=&d2m8neXYqonfa=&rsjVG5YVkoXca=&kKvzPHVdY_jrr=&LBmuz8XWVUnY_=&z5OJx_YlXUome=&EAj5CyW_Wkolp=&pZkSfcUfWgdrX=&wXoyg6XgnXoZX=&xURWBcVohbqqp=&cHvHXIWeihgmU=&HIvkClVUkkWrs=&c_Yz4oWUkeech=&5lKVy9VgdYlYo=&DqzqMFVdnbjWf=&vkhwyvX_hjVdr=&SnxFakUXnijXY=&C2RRdXVkmZksg=&dDySg_YYeUcf_=&_YHQ8sVqeqpiX=&tA_oX4Wmokaos=&NfOZJzYbsslhr=&E69QXPZYpeeWa=&XN_bKfYcYqqVU=&cwoH2hWroqbog=&Qh6f6EVZfrcVs=&Xv2PJ8VdrVgap=&WvCgOWYeZljsl=&EGtvMsUdZVWVn=&NLkLQjZpWsWjW=&bAmAmQZinVkqn=&Ja46mNWXdsgol=&PqgQvfYmYehUb=&_HRU8gUjhUlkV=&HbMkH9UdmhUog=&QiFwyGU_cqbrY=&Fo2oBLVXcedcm=&_8LPoNUoakVnr=&XM78dFXorjhUn=&rw7hquYa_ickn=&6TNuUnZdeppsp=&SKMzbTZqUVafn=&fhfarDUqZZinj=&okCHw3YdY_kda=&auAPh_UYrigem=&oNd3W8UkbUVc_=&3RlgCOYaXVWhW=&rRiQGPZrVUmrg=&2W4SArVcUYqiX=&28PLgwWo_fqjd=&rcmWlRWVcahaq=&yrEFuXVadgUiY=&jMUsKJUiccggn=&rHZrkWU_haUeg=&5Tc7tCWcngYks=&_s_6eyWboonYo=&9ySRzIVckklaj=&HEYQO2WpYYZn_=&qO8n2SYqshZsU=&rKVB87XWVY_qr=&_8RK6GVdgpeds=&m3iaK_ZeocrUn=&U8Gd_qVoWe__s=&ikdhZ5XkrUZh_=&8Hiok7ZroZenh=&MgAT97XdbUU_n=&nn3adxZqhplp_=&olCE53YlnaVbi=&CPy5slXXgbYUs=&Z9FPt2XjUqlkn=&yxBqVZYikXWXj=&nfmmQbVUjlYal=&CJBXFOVZjjk_X=&QlVz5qZfnVZYh=&ClcX3VUqslnVX=&ZNEywoUcccYgV=&eH8TykVlZYsiV=&IpRSSPZVbrpql=&3UQ8iJVpgkbgg=&sK4ERxUosgefX=&H5JkNRWnchajq=&DfBopJZrYrpjn=&Tewy_dV_knbmi=&XRkwupVqpporY=&CQPUpnYXeesUl=&8H7zXHYc_bjbb=&tJ2bcXYaYYmZj=&nrCbl3ZoanVcs=&llg2wFUZjcVea=&7eYV6MZqcohbY=&ejL9CJZdhkVnX=&9xS6MlYbYZgec=&2Jv2LdUdiUmsg=&8gV9A9VqXUnVd=&Cxh__lYVYhdZU=&Qa_kHhVUbVgoq=&WFF6SrZaiZnmo=&T_aFYYYYpjeon=&HYKQPkWWWVcqY=&Es6yt2XjhimjY=&8_GKHZXfgj_lU=&K26yQhW_rplmb=&TfBsaTUiUWpWm=&AsqpLnWngWbWi=&dXB6mMXgsmfbg=&EQcuaAVjZfomV=&7nI8vlZssgasU=&7RDolhYcXfcWh=&sr99mEWrZnbqo=&FtaHnuYVnnWso=&aUhwdgZiUlqYn=&bSmmbzVnjradf=&njFDfqXY_lfel=&McxCsPViUXddn=&JrRqXcXrkaUgn=&pdvFl4WUhYbgZ=&gYhLSEZckZepe=&pxcJQfVqmjZVr=&fJRhSDYncUXrf=&J7ysz2Uqj_oni=&nOxKsGVVUjem_=&3xJNLnWqjZoss=&B4KswBXfYdXff=&uVetpBUoYdjZq=&IeDLIyVjgWlqW=&GZBY24XU_iZna=&p8IhBlZZcVjaU=&84X2joXmmcosd=&i_p7guVsrmWci=&xECSodYejamUW=&DyZmssVXmUWsh=&Dn3tMoZmgkjqe=&EFVnisYnekZWU=&uCIpGeVpjXmks=&qpxT3hWdZjinl=&l_ZVGlUWgbUlb=&QSCLL8XZjWmre=&9CMh4KUlYo_UY=&THoSatVsskljX=&U3isxlYmmkiba=&rpqhzLXqeVifh=&b_EX_aUscdkgg=&mC3aIpVgmlUhh=&Z8NvwYVdrfmaX=&lSt_ovWYdXbho=&Sofj9PVYZgYjr=&3ZcLp6XhZlZaY=&QMKnO3UYnpVXe=&bZUufDUbZchig=&8a36cyZcmodWZ=&yhrZjPYge__gg=&AgSr2CYmk_bdZ=&4riJ9ZXismako=&wDS4sZYbdWboX=&D6l5F9XqnZbcn=&rVX4d4VXrfrZh=&WcYDYDYsUjcks=&9QrUgXWflsjrd=&IecqSoV_qkYmW=&RBOqQEXlrdged=&jEhAkKUcpinbi=&gCG8NJYeiemXV=&SuBZ3zX_pgZdc=&xHF3pjXUkmbcq=&Hox2g3WmiWpd_=&d4r9gsUdeqjYg=&pl6TYIWefehZc=&Fff6lIWhWloWU=&kbMDqjUaadsgd=&HTNAYSXVUWYpj=&RwHcKXVoacjnf=&LiJnmSU_gqeqa=&AToghwVqkmbbq=&J9GhveVgfqZni=&_RfS99UsrsgVh=&_QO4SoZqklhli=&OO7bJbXgcXlsh=&X89kacWliUgfn=&ax5cEcWXqbsie=&ckGlQzXUsfjqg=&bt7w4VWbYUZXs=&LZ_TbGVklVYbj=&KkalqSZgfjqdk=&BKBHYaUdpk_Vr=&Uf22f7VrmddWb=&5IB_BDWUnoffl=&ET6SimVpVnnao=&NUopxZUn_bfnh=&6uTuHsUl_lqkc=&SmqbFSXmiaVXa=&R_DOuxZnnZsmo=&6M2fLmWkilqWc=&ItxqrPVYrhXqn=&7mmsZQUsgfcip=&7dBCSTUgjXVXk=&hczkN5VYdljes=&9XrvMUUeVhlid=&vqRlfWVoqeqVr=&I_LzhmY_jUdZj=&PuJYBGXobcUoe=&7G2OdTYomaajj=&fJ4cRhUqVfbWd=&H3H74IUihpigc=&tmQFe2Xpol_Va=&ZLwy38Xlgblnd=&ApfoFxWYdYeZp=&Vj85lhXXamsss=&ktUuzTYWneqqr=&wuALySVnccjep=&EnS2bWVUegspU=&UCobT7Wpsnb_o=&nqtFm_Yroimfm=&HnhYAkYlasWir=&ncQGwcWXWdika=&SnV4NyVcUngeb=&ad3zeEY_bYYgo=&HNEgx_YhdbXlj=&Bvo6SwVlmfb_e=&VztJkGUr_qdVq=&6r_fh4Uqooprg=&UURHrIZXfkjbb=&BdJN7NVninqgj=&Vyy5ACVclehmf=&DV7N9PUWaWldj=&HjgUxvZkfbb_r=&V3ZfPyUaZihpo=&rV6ytsVhXpUWl=&tatOiyUcZihnU=&ztQPGwYVokbWq=&lYgwEBVjYg_qh=&RAzjMSUf_rqeW=&v8SLJzU_Zjhlc=&ByQL_tYnhgqrV=&SJQHOUZsYgplq=&AsLQntWjnccpl=&wQhi6OWfcdmhY=&cjBDNmXhWbVjq=&rabsvzUipYmsa=&Xqu5RkYdksU_i=&z42x84Wahcamg=&9ZMx72Wq_aqgs=&fTUR5SZrqaepV=&QU8G5iUsi_lbk=&6gsth6XcsZldd=&kSn5QgVrjpdeb=&IIGd8yVpjZona=&4TkmDjZscjWfq=&yZaPHFWifWiac=&JRHYWyUkcnhiW=&ZyqZryXVqdemb=&JFlbBHUYdWchn=&HjI3rSXiWWrlr=&mbpNOnVp_sVei=&XCEgH_ZkVqgVY=&vaA64SYZmroo_=&xSDjW8Xg_ccUa=&m9deBIUraaoZV=&8f4386VkY_gha=&SIsq8eUrVhaoX=&Kyz6BwVhjqnos=&lB9lX2Xlkhifk=&tqhl8LWjqWlVr=&iAgRYnXfUiZmg=&UjvRfWZpZjars=&HqSIrCVWrWdkW=&rctKQmW_hoeW_=&khHABLU_Xrab_=&4ulEx2WXradUo=&ejoFMzUdskebg=&tOeaoHWokpYbp=&lYvK__XmhronZ=&7JnNajXmapsbi=&R_TU2sYpXUocq=&qe8SkNUiqgidq=&hYOv2oXekohph=&kYGyoDYWpegUp=&b7phFnVgnUnXq=&UTB8mpXejngZV=&WRTjEtVafW_md=&umlqWhVhXhWcV=&FQPt3LWpprjZm=&KaV35fVaYiZih=&P3LCrdZV_ijdf=&zGEqUZVhsollf=&n_GMT7Xkdikij=&ny59oDXVcqaaj=&OUrLx6WZssfbW=&r542YyWYebniU=&9SQGjsVghcfXq=&QuLN_EVVVZWfY=&J8VZeIUseZlja=&cxky7NXpmeakn=&Yxz_gLZpsWlar=&7En_oAVYqZbeZ=&cPhPEUYdYY_do=&23OBoSYVjobgY=&FvI9pEVmefnpi=&x2yAHSXjglWjq=&2urNsDXrfUsZZ=&4DZtNmYbacgcj=&ToxhfeUlksike=&HR3FkQYoohXfZ=&KGWQgOVYZkWrg=&fyCyt9WXdosab=&JXNF74Ujahler=&jNPYfTUhbXZmq=&BWQgCkZbecbWh=&VoLUMOWVcXdiW=&Foyp4lUdiVVVn=&9cVfqlZfUWWek=&HeR_fCZbmeVgr=&XcK4ZfZcddie_=&OweJvoYddYp_o=&xHz6eRXVZYlei=&qm2g_6YmpsdWl=&h4mwvJU_ipikW=&JCUajPZUmbjVa=&vvoivmZUjksrf=&gmLYdAZlYajmg=&8YzatRUXjdVZa=&7NkTf7W_Xkf__=&QMyx2HUVdiUjf=&wmN8HDWrUk_ai=&_KAHA4YU_agof=&clO7s4VXjrkgr=&eOY8AkUecadmd=&o5y5NzZobnXeV=&UEaLHTYYlZf_h=&_PQLZfXnY_Wkb=&IIJElCYrdklpp=&JXPrT4UreUrbg=&7zbCReWfpmbje=&o7Aj_VYaVqbbe=&W5NNF8Zdkiraa=&jbc85yVgsniYg=&Unzp6TZgjejdi=&GVWcKGXofhdek=&megbfeXlrbWmf=&QQ_AWzXlfnjYj=&SAm9EbZWcidWg=&XeMXYiYb_hkfo=&ja9q5SXrnjeqi=&vMKW3MUoWpjll=&HAeDqeXiWUXZW=&qwVULRWlq_cns=&WffBMHWriZkjk=&A6TxTLXqshbmd=&TDjHofWch_rqa=&G3iEnrVaZ_jam=&7irG5nZYjqgsl=&vASs8sYXXfgio=&uXwn9bVYsolVf=&HLoG8nUdkapgh=&slTCQ8ZUXjZWs=&bxi2bvWdassha=&fweVwSYUqicgp=&COdB9qZVoeVqi=&TZ6F3JUfXZUkp=&miLtOAZa_iXZc=&ZOEWo6V_VV_se=&rxoFKXWf_Ungb=&5Me6cNY_aUnlf=&5RcCrnYUjUjsc=&Yn_bIoWgWhm_k=&uxMZAyXskXXpb=&3KawIcXZeecWX=&u47VjvYgofXfW=&ACUMtqVfqiema=&vsSyMYUVUnWZf=&PR7H_IWdUjVmp=&KHhw4xYhcimdV=&bCLvVFWdZnqhm=&IFZOKFUmVmUqr=&TsubreWjlfjYU=&CVcCFLYgXVobr=&jzKFwdWcYUkgV=&SHGRliXZcqkqm=&QdeTnGYhrdVUU=&jAzIA_Vfpsegs=&ZzubpBUflooom=&VcI6gtZUjhfXl=&h4rNEIU_nolin=&FYvprMZkZcfi_=&r4Zmn6UccYkgW=&Imy4fYVn_UZUU=&QnRBsmWlglpZe=&Smwa87Xcorr_X=&H4cvaPVoeVUli=&rPTER2XiYfams=&i4SOGBY_maq_d=&XOJ5YmUcfZbo_=&pQbp7hUiisneo=&iILKDUUpdbodX=&PzB5yzZ_adblj=&7d8Kr5Ydli_jp=&IEfk7RZnrfZlp=&A79yw3VrqZlUZ=&ybIxjEXqqrmke=&5uRBWtXsfsfen=&fYnjaeYXqXXWr=&mk9CqgXhqdr_h=&bgTgwdXqXjpqk=&AerQHGZfUilrb=&nY2RHlYVdrVfd=&jQnVOnZqiargl=&SIMLCcZVbjaWi=&dBI2aVWZk_iim=&Fv6ToVVhfqjVX=&V4yaYLYWUUhYb=&ZLDZe2WahXVgZ=&iaHP7SVkjnsie=&uHtCusYXdYihm=&QzoRKoWWflabq=&gqKlWNXkobdlj=&WhesP_Vcgfpmq=&biEzBjWq_WlrV=&FfpAfIXaarakr=&ot4zWdVepZbXa=&J2KVeWYbiccpo=&mVpcIuVilgXjb=&txFO8nYoWhnlb=&kMKFIlVffkqca=&d54g2jWnrs_sb=&tenuJNWqnkVri=&hLk4XSZigsrgr=&vYyvdyVZfmjcs=&liyoc5YdlsejV=&WLKQPUXkcZVXf=&4pcmL3XeoaUbs=&SqVB4eUXjVsfW=&vjHyqCXhnshUs=&hU7TgaVYrshe_=&EiigQdWkXefU_=&kYTpDKYeeqhni=&HThnEYXbodbmj=&SzI58GWmfXcUV=&obu2YmYggaYZg=&tpxCcUYXkWVks=&S5L7BSVhcVUck=&diXakXUd_hbYd=&8eZgnwYpk_VdV=&J3_XGEUXp_sjc=&ClcowcWoVlkhf=&9OtaFFVqYldgn=&KYf5tyZac_esm=&TjtwwfZZcekXq=&SSILkWXkkVdeh=&c6sSFCUnseher=&5CUaXhVaehcra=&y5I8vRYpmcWWn=&VXQ8geY_Waccq=&I_54KVZnYrgjj=&tDoCsXYciUXjk=&HsjzQcZgnXnfV=&MeigIKYonVrca=&4LBUVDZprYafU=&_hUJzzYnprgYa=&S6FXgZZUbgcfe=&TOxFtwUkmhrlq=&OSgfOfVma_UYm=&3x2a6DZpfrg_V=&IDDDOlXlckUUn=&ERO2DuWmsnZZl=&66ehtvYZqedYi=&pTrdl5UqkrVms=&_UdCYdWknnk_b=&7wOOpeYXXpjjf=&N8ZgFhUgUjYef=&UqKzR8UUqjVXf=&AYAgiTXUnVbdj=&WL8sjIZlVmkrY=&QayGLeViYkaXm=&FIyJM8Uh_rrfs=&SzWu2UZgebdai=&WbOoZBZZqlbqW=&hpNgKqXXkcVjm=&4zyAB6Urgkjpc=&phSUTgWhnUZjo=&HQfNuTXef_idk=&8lAst6Xnimaoj=&A6ie3LYWaWonW=&IMuydgVbkaYUc=&DOjnzXZdaeUcc=&YpDIQUYgfoWXr=&UALdkWXp_geqV=&wbtTRvUZcah_c=&usAOhaWq_Yonr=&59CcEwU__YgZg=&w4ZIdfUdldmik=&IvJn7rZijXnla=&yDlDErUkZgjnq=&ahEl6SZnrksml=&buUpIUYfmskUq=&VsfhDVWV_aXZn=&eGUpXUYWmcqpg=&yhkk9qXnZdWis=&YnafobXsWUelg=&LZnloVZacZgUY=&AvQlsOYbXVqVr=&mHdDRuZaYspir=&ZRXF2yWafWk_V=&KAxBMuUoX_naV=&QTOFGqZeVmdrn=&q3S4UwXUlcimW=&RMrEehVbVadYW=&nsN2tSYjVnibd=&uMW6DeYsm_nUe=&Js3jyiYggaahY=&8T3ys5YbZgsop=&gZ6IwCUUqicij=&mOcGfjWbcUZbi=&MhAioxUUaaiZW=&9oBvqhXlUfshU=&_33dVXUsdUijq=&yxhtdMUnXUacf=&NbKjqTYdhWsh_=&g6sT7IXgmWlYb=&SCWkWPYgmcX_b=&icZ5EEUmprYsc=&w9C8O5Wpshjni=&dS6lrUUskelcq=&d42j_lZVbahXZ=&5UABmoYiVZbhW=&yGHREsZrhWYbp=&J6NHdWYmjdinf=&B5EyA2VYaafcr=&yxVkN5XaljpYe=&ssiSaAWVcadqn=&3PZkKlZpmbgfs=&dh48MMYssrVsX=&sWEob4UosWjes=&9thfSaUUmXisV=&DcCvXsVeqnjaj=&GcdpmFUlXpjss=&9MDFeoWhnYrdh=&LQvmDNYdeaqrh=&tL_wogWpnkapg=&DJP9xSZigUXYb=&azUQC4ZjXqqph=&6VtiYTXZsplnk=&T3GENXUZZYWjX=&lg_evqVcmgfh_=&WfCPNvVlcUdXZ=&jHpMXGWfpncbp=&dktDliYgqbmhh=&TxX5Y7VlZUWdW=&S5v5svZs_ajds=&NoTf_3YelVmpZ=&mrk_9BUqdlVmW=&E4vW6zWliYnmr=&xQeNx4YVmUsnX=&SzTRHKWsbnmgd=&2TCnBAUsmrdqV=&tmcEAhZr_mVjV=&5l2xNpYpommqr=&EP_8jAXaYYWfm=&qBfWlMWZUfV_Z=&fDnQz2Wj_UU_f=&oe3_JTUijZlom=&BBgWAmWmWYbiU=&7d3Bc3YdWZdbr=&Z9rIIWXfplXo_=&A26Fo3WqZVcas=&5clBiYXlWcdmW=&qVUQCgXZYfegp=&iCV9SxYVXsXWs=&L5dimgUnWhfbh=&Vz44skZiimc_e=&OPCIfRYZnfrcW=&ZXRBGbXoWVZsr=&dtyFELVWXpkeq=&RgfP3WYXl_foX=&KZL_GdXcWqZgk=&kRYEEaXjnfcXh=&e5ISzsZjVcXZl=&ZGqzSqXpUlac_=&tWdZLMYYZhlXn=&_dl7qkUnnkUgl=&izHhGLV_mWjjc=&VIizpNWeqZhlW=&PtUKrgYobf_UY=&tzJGkeVl_e_cW=&E3XRwNUY_hlmg=&Wj_wpbUmpVmW_=&6vN4OhZWhVmsj=&gz2UN3UllafVq=&brNP_BWrgropV=&CnIwrxVpajrak=&VWXevxWdXlojf=&6_AnFjVkhsWsp=&UcTfV6XkoZnhr=&xg4XfDZYsesZc=&FVLdugYZ_girf=&4ujps_UsqYebp=&29Jf3dZYkhgUX=&94dvsiZoYojki=&72ulziXemfmYm=&oEOI5MXqhn_ac=&8eIDteZbsbrZr=&TM7lmRXsflbs_=&lPwGvBXfeaj_Y=&D2EHWCWnYZbWd=&b6FmlnYpfYfmh=&Fg38M3Zep_csp=&kwy2rZYgfYVfX=&4gNZkvZnpo_ph=&58xCfFWmsbZsf=&w2BHBZXWprgkX=&8zs6EQXjeaWln=&6xtykfXXZZlcs=&umi4qRZgeYcea=&QuY_7SYbcXcUp=&AM2g5zVsXapnd=&f96GijUgZZngj=&4e499fVg_oZim=&hqZny_Wsj_psq=&7b7UPcZXekYab=&3JjGSHWVWbrsn=&TuFzC9UVXkggY=&APexnIVcdYiUe=&O6KeNMUsgeqin=&_RmwzMUXXZnkl=&GPvHvUZcVUZpr=&Gl4YLuXncojhm=&Lv_GGCUpaZkUf=&9Ix_XbVmckpeo=&rVPxpzXXaeXYU=&x8WAeQVnYVXVc=&PkQcvSWaeZpob=&eH2b9LUigfilV=&38zFF6WYciiqk=&mcVHvmYrjnkVa=&caHLZKXgW_Zcm=&PtswG9ZdipmUm=&FtqVcfXVimdiW=&QW_UcRXnro_ha=&TgH8c_VanmZaj=&tmEoraZYVZUlf=&SjAagRUZqYsoe=&Ls8HE9VViWYke=&j_vFGUUrcUWpU=&nbiu_YWlZVarV=&lgtkovVpjXbaZ=&NdighDYmd_m_k=&mbUxHqYXjYesW=&RPZ9qLUXkrZpr=&IGM4RDZpUhmer=&tsi7KGWdgicp_=&SYcyvqWrVVdYa=&jSAMk7YrrYeVl=&CZeOFmXs_Yojr=&a2x7dtXbandcp=&4vX7WKVmamdVd=&8pnFVRWZpZjhq=&wsIlbkYUdgbdc=&F6g_LRUlnkhsg=&pthitzXXadirq=&oUXYYlVqksklX=&QnQQmpUcbegUY=&nnMO36WXqUflj=&PFKK_QUhqfqUn=&QAtNMcXjefVmd=&KKONdCZsfVhsl=&V9pPDgVjqosed=&94nGulYZnV_Yh=&_KcStxWVsjkgl=&lBCX4tUf_Xldg=&Wt2RJCYdqZmZq=&duZCELUaeedor=&7JsGNLXempcdp=&W6lnskVlrhcgc=&NJwsO4Zfbbdkj=&5CgeZOYmffnUV=&NwegX_ZXailoU=&dpCnf7YmXUhXc=&zNKWmEU_kllfW=&nUpLlLXifqogq=&FlJnziUfYkYUr=&u237SrYZjZqpj=&PWvY5wUlmVVjZ=&8RRn_sYZrc_Xo=&ZjzlIwZregpoc=&ztrDRgZplglll=&jTPdH9XmfWfYb=&zI6Eg8Vl_rcjY=&k27_43ZnedsoW=&jegaaUYbgcjhf=&gsKK9fYVnVpnV=&uRv_P_VUmsc_p=&J9ivyFUZimYdW=&AqSdPMWshXUbq=&uvc9EGWilcbhb=&FR7uYHXkeWaja=&2pHaJ4Wbardob=&Wq9UwXWbk_jlr=&_qMgdmXdnbbWd=&YRIDYXYZj_WlX=&AyGOclXqniUdf=&AVEbm6UWemsiU=&YXN4QZYZpdWfl=&gXQI76XakVVff=&CAefX7Ueqlhkf=&tZKqCOXijqnnj=&XXXkKbXeUYnpW=&SUagx8ZUj_bbr=&r6KUdcZmXljos=&rq8G2cXnarpgW=&YLhBTWVWkkadn=&vNJqrwVokXXXd=&vJmaTZWjomrpW=&vctM_EYjmakZZ=&f6NpLlUeqeeep=&GNPK6lZgqksY_=&FfiujSXlnibgc=&lHgkKsYgjsZhg=&O4dVFFWcjabfX=&NcMhjBYohfmYb=&BFUG7YUcikajk=&BKfWFHYoboeWk=&sI4XPnVfnh_Vs=&8_EZwyXnUeg_V=&a96t8TUjksfeh=&dAaQ8OWfYZg_f=&dpN_b7VVsXgnX=&rnfsWUVpeXqYV=&4yd5wrYXbjqop=&6YyHrMWcrjkXX=&fYwZ8eXVmos_i=&mH_rFYWXoXekk=&ECmwoUXsUbbYg=&_I2oL5XUYfnci=&4pgUT_XsUgslU=&OnFHmrZdXqZfo=&nljBvEUkUbqZk=&vFqYDuVbhX_nn=&f_ve8bXiWpqin=&MQNTqRWXUclZb=&r7pRO3ZfVmkqn=&uaB6LmXjljaYc=&_hyCZuVccifmb=&a9uLWoXjbZgUY=&GBszSDXhaaXjo=&yrIrcMYZn_ssX=&ILSnzKVVsegnb=&qLU89oVkc_VmV=&IH6ER2XX_oZsq=&4zW5ACXeXUboW=&WULmDmVsddafd=&Fyy6HsXdrWjZV=&oizdfSZeYflkb=&jsXuJVZWiWXlk=&PejAjOZgYmsib=&AOtGLSYoZdaWX=&waOiNvYZfrhoZ=&K_NQLSXj_lYjh=&kScRjQWmgabpV=&8y53NWZZaWlXd=&wbP4GfVnWZfsp=&6VRTrUWo_qbcj=&lU3lNpVgeZiXs=&mH8mFQUiprfch=&N7qaQWYrqYrnV=&I2FIkBVU_gmWn=&fIaeySU_bqrbd=&9ANYAzViojXie=&ChzNCoZZZUXXZ=&JBFUDBYdsXb_l=&IM6niZXraXVpr=&ccx7i3YXseqbe=&pjSZmCYWbflkr=&zSKzErWWanqmX=&jEJFwYZeocqpq=&hIUiiDXd_Xgiq=&ZU2GuwWkZeXna=&aPUlwPUqrlhip=&IdUohyUjV_neU=&ulNd2lYrglmpb=&ub_RaTZcjihan=&V72bJxYceZnbl=&TbiAHHXVkhqmW=&8mEZYgZVmUijW=&votgCHXpVZ_W_=&TaHPmIXaqhpgb=&FVB_NSZfqqkhU=&ZnhisBXUbkfca=&SUcoA3Ugfjh_g=&KVdX7DXqUjYfa=&kAiD8NZhgYcYW=&dupjX_Vkloalo=&YpPEzJWboblhp=&KHhcBuZff_oXs=&doOdLhXi_gsZV=&IBtFJUZsqcXor=&KTdljxZegVqnp=&4OqlojYgVfgfh=&xxNcI7UVZehlm=&LJpkutXfsYUZk=&tlykKFVUUp_qk=&Of7Eo3VmWifrX=&yMz99IXrm_fbe=&3IIKSGVXpldrr=&UZ9uXHYjfYhho=&XLhkviUZdglkk=&LMmHmcVfjfsrW=&FILARCWffrkUh=&wCFEGKYY_bbak=&QPqZovZnlpV_j=&SRqsLwVafrbfa=&o33AntWWr_sdp=&3yQQlvYZXrUVf=&oFOU6DVrahknk=&uiI9zjZhqsXms=&TTPt6eWnegWds=&CIVvAiVlXUkeU=&KsUXLaXeaYpZi=&tK3m8CVWkVlaW=&thS4NcVsUogZn=&fdMGBJYriVgWp=&BxWEmNWf_Vlpi=&MjPjWaWaflsia=&YFPFaRZWUgblg=&musU4cWaZnofh=&qAVyTAUeYloZh=&VpMkyjVnlnsgq=&nlmTOnZjbipbg=&GDzxSaXinba_f=&NtEn7XUYicnnh=&Mqq_sGYcfghWZ=&j5dmVjWbdWpZj=&F8G7vzVfgeUqj=&CkPuXQZnXXfVd=&5kLTHLVkbsYgp=&sQDACyXnpdZgb=&4i7tVGYgUgXgl=&REQRPIZYgfZjU=&8IF5ueWZXXiUY=&FF8GG6UoUgWYf=&LtYNt3W_aWhkW=&wutwqFWodlbUc=&b4O7x3VkalVVo=&Qot4APYXjekbX=&PrFqJ2Urnnpfb=&9gJAcXWgeYdfZ=&3cr4bXYjVcWpY=&wilGm6VVcmieV=&avpWFdXYfUZbl=&GQ_ssuZmWsUVj=&c3QpGoYdlpadc=&jEjVMUZpYhmhi=&MNqmajYVo_adp=&yXTjsIZsqnoam=&uLjqaFWaWs_im=&6j9eUOWgdhfWY=&lvlB8IYUmUakY=&PJvrBzYfsosge=&AmePquUVbpabe=&ohaIrhYojcYkr=&WmsAnqZVibWon=&jVpcaDZbdkdah=&VNoxwpYfgaajd=&55rutKVdeYpY_=&thDCldUZchcam=&TCK75cWq_gfml=&X4ZwJeWjblUqg=&_BMEH8VcnUdbW=&jysYbKWZafhqi=&Ocvjb4XVnUigW=&nxCKqNUgjoXjr=&6oA3FJUm_XVnr=&HunbSIZYpneoX=&a9gj_bYbsaocc=&4UOKP4Y_jmnka=&PsotWeVYaXlec=&V3IJeLXmmVmgW=&3tbdjPWlhnZUY=&xb2vNPXmdicgh=&pX38ZDZUlcjaZ=&wExY6dVgimYsf=&E3Tz59Ydns_eh=&Cm5Gz9Xmrf_on=&eU2Ml4YmVblij=&rInVw4Vnrbpes=&IKQfnfZVZmXpp=&99EomsUphreoY=&Q8UhXIWWrnfrm=&WF9MStYbq_jnY=&YXRkBqVsfleWV=&TqGsUaWlbnZWm=&WylCaMYlfkWmm=&M85OV2Ufnk_hr=&s5FfwnWcfqlsq=&BfWO55Udmcae_=&7T3CpIYngski_=&A6TUgmXrehZle=&tLAuFtWVsfkmh=&ZH7AW7ZaYjrVn=&eWyoTeZnkYmbj=&V6MDmfYafbmpq=&oS9ArmWbmnqVr=&zivPI3UaisXYd=&NAJL9dZZpce_g=&tlOfaqVV_mcsW=&waHtzGYsUW_ke=&jVMgqHXkrhafe=&gM5sYmZrpq_lX=&KcqsVQYZZYrsp=&iYtVOoUXUVZXn=&9h7rR7ZUakZVj=&5Olq5aVqaUcVg=&I5KfoFWpisdZq=&fpxwPIUkYqrYq=&pquELDWqegdlg=&J_Xsi5XqiXVck=&OxiScsVlqqlcj=&Hp6ewTWrecgYY=&Zy5nnlUZcjagb=&PamXUUVdcmnhh=&5Nqs5GUlr_ogc=&uGgyPEYpUolXp=&UYI6bvVkYsqqn=&cCU4B_XkXqdig=&DTxpRtXfqojY_=&dCD9RUXgcfXmX=&voXt87Ygaklpj=&OlOfzWXipZqXm=&a_Y6zCW_ailVX=&OK7ExOWqiafpW=&nN8jxSZbUofgj=&YBFOrAWZWjUfb=&VKNJtBWeps_kV=&ORHBxRZfmrano=&q32oBzVcjk_aa=&TZGUdPUcnqgqU=&jjjfcJWjbWsm_=&KRCLJeZjcXked=&USDQxyXcpXfsf=&F2qWfuYVbnshY=&29zwktYnpakln=&sY8YmdXspahmi=&TyxuDeUjhrgVk=&iG3XSLVicbfUW=&Y756ykWViqagX=&xmOTmfZf_gqZj=&Bbd2h_XigfhoV=&PTNd4OYUVeipa=&gKD7Z4VnUehmX=&57KcaVXYeUgXk=&3mVohLZVngeUV=&Ft2ovcXVcmUkp=&CErZFDYspkdl_=&IGzJy2XjffloV=&dvviFBYloeqVi=&jEIdcDZnjp_am=&WGFRBSXoVqYmm=&tmd8ltV_napd_=&unKrszUX_ggpU=&SfMMHQXUmanoh=&7gmR5rYarjpqm=&yOkfCaUViicrY=&ChZZTCVYeUarr=&maxAwSYiX_aYb=&XfQuVDXWgbpUY=&3XKnxQXerckdr=&aJbwZkZg_roga=&iMVcUzW_nUgia=&Zv47odYYoZag_=&UiFBoAUjjVdpi=&TC2aI3Yhlhpfc=&PN7zk_ZViUjlY=&v5EVcsZarVUiY=&JneywIYXc_jla=&CMbpufUbVjk_X=&5bp8djUWgqjsj=&r2DrlqVqkbpXg=&R7J4dTUibriUi=&U7jatFZnbeVlr=&o7BWgGYabVdbq=&jBEXm8Ukcehqq=&Yeb5YlYgjd_pe=&VCQaFKZYfimdU=&EwXUb6UXfgYfn=&6ThjTTXXYqn_c=&QGXjXBZibXmsW=&Sp2bprWWlUsji=&osx3BhUbemgr_=&Ux75JVXeigVjf=&cjbg7sXUcdbnl=&VyXCwvUn_mggn=&2sWf_TXkcYdjn=&AmeakNUbZmXer=&9nclL_VYWfsgq=&5W6QxOWpkppso=&XrZElWVqYigYg=&Y9PKB6Yl_pbXc=&lSpmkoWlXdlUl=&EpWgKQUUhdhra=&ffJQ33ZlVrXZq=&2x4YU5XhmnVpp=&KwgVe8UsqhWci=&ja2bwnYra_nhi=&GhmxBMZmqVcbh=&J9p7SBXc_hZYr=&lN_YKBW_ecibl=&fyNNQMVXUoXWd=&QkeHbIVhmgrog=&za25PwYmoZpic=&BuqKUZXp_gmon=&bieH4GUWUXdph=&iQe7fYZiqVahb=&DRNszdX_fcsmU=&oyQzEJV_gordU=&vMiXCXZVZYeal=&FwiL2rVZqsXnj=&Qy8wBHZkV_oVh=&2wYJ5FVUiemhW=&4MJrhcYYpcdjo=&PqJoriVfrdffY=&iDybzvWiXkind=&GaTPuSUkXmoeo=&gUQOqLWifepkm=&KWU5cgVVVsgii=&uQeReuWYlelmo=&LnnNZEUsdfYcq=&wsVWXyWUnqhZk=&thlWTlViXqsZd=&NPsZ9QZbphVfk=&Z9eVVwVoYZhb_=&pVv9mcWopiirs=&iEKkVYVcZ_ZXi=&ThLuL2VdYlohW=&6H5lEdYgghrcb=&gzvcjHWcichVl=&h9u5inZibUgnY=&kW_c9wWeYjsk_=&EeKTPzYandanX=&z7KEhGUXe_maa=&GDNh_EUYbWUrm=&kqdxKHWXoYVkq=&O4cT7VZmcp_Xh=&yf4zuYWckqmsi=&BLa64uWgaag_b=&7l7n6JZ_cghql=&6jtVdqZWimkeX=&JSlwBSUichrhn=&X6_gAjUZrWphk=&PzWnLEZYofWcV=&rvt_etVrimbbX=&TiKEoYWlUaUdc=&aqaU5aWackifY=&nUHqS_W_gqZhV=&NwozHlUdXZgso=&x8MB48XiskX_c=&wSzwFtVlWmXnc=&FzmHyKVjiY_jj=&QslvR8Vbcqqnc=&pZr7YIYWYnjac=&Ik7kqTYneUUfi=&nboD4nZpom_eW=&As6Z3VUefdqeU=&R2owNqXpslZrn=&e9Z5_yYnba_nf=&xWxuYOVpdkilp=&bvbVAeVcnglmm=&7PvVtEVflpYqp=&d3RdSlZdeVjch=&486C4MUWaibkW=&MNfUkKYcqfbjq=&reEJhrVlipWik=&87v2TPWlXscjh=&Re7C8jZWWj_qm=&zErYFSXZgjj_s=&8F_hOyVWdoqpf=&xfyEVdVnhfldp=&GHi4tDU_brgir=&QuWwa7VVYhakm=&XcEcqZVemUZ_h=&lai3ALUbkiYaW=&ienHUOUWlhfhj=&Z38hOvUWgnUYW=&T3QDzwUedZioU=&uIFj6JW_cgjbj=&WSe5cKZocpnmo=&yXfyakUamU_hs=&DpmS8JZZdqkbb=&QbUUX8ZmsZbbe=&KJwde5Uegep_s=&7HHxjYWilVcjm=&VOta2NXbpkknd=&vreLbKYsX_qi_=&OHniRlWpVmqdk=&eAXm6ZXprcVUW=&QsX8_EVaYraZ_=&NcPs__VlpWpba=&_AehglYcdkjcn=&_bWR5nZpZgkbk=&yXDLKIVhqXoqZ=&7NWb_yUXraXVf=&ObpO7wXWUgeXp=&BrdWGzUgpVVWi=&gbbM5nZdZbZfW=&pdEBduYmjfomj=&qJVggwUcgcjk_=&e9COu8ZmenUqU=&oCCISCWfrphXa=&fYaKDEXlbYeUs=&Sy_WEYWgWpcpb=&8CM8GzXrXddbg=&U6debIUesdWkX=&Q2dXuIVlZgUfW=&TSyJbfYhdUepY=&3uCH3nYjhXgYo=&AvpHprXkmjrjq=&2mYiylZcVgWje=&KVgf2lVmWYknZ=&qcHRKiWVnYfjb=&XHlVuNVrkjWhY=&RWGyb3XUoYhUV=&sOCcbHYboUVqf=&iBo2xYZgUsnk_=&AUpKK5Uaao_We=&xsGSykWpeUlo_=&cNav_fYWYdhjl=&NAk8gAWejefYp=&VyjtdmWpkeepn=&E9u6HEWmVngXk=&AwdngFWfUbiWc=&aoocsSYUVkZpc=&kSK4P2XpYjloY=&XM_PO_XYjbssi=&gCSXVbZWfidkn=&urvvcpVrUrgoe=&gC5pwYUibopmq=&CoFwPOWWrVfqe=&DihDq7UrphqpU=&PhopGuZgjYi_s=&cmaIKFWUmeiUi=&7BfMDUYgYjbsm=&TQTcjmUsrfeYo=&eSub4hVmpfdpb=&gsY9MMWXVZsme=&fC4qyXYfbgenn=&mSSWxrXharZin=&R4w7gYWVkUgrb=&GEv4PLUsahXnm=&avkEDqWsjmYgc=&ZpKmsSXcZZZgj=&BMCHb5Udpskei=&Xej_MDVgqoioh=&PAf57BXssUVjV=&P7k2pMWqnYe_d=&EVD5keY_reisY=&3q23DDZpZbqkq=&dtOwRDWrYoXli=&zsvGS6VlcmsUi=&JsxzqEXnpsUqn=&tFBloTYXpbfgm=&xEVHTfVUcpmeo=&wATq_AYfgjekY=&HHitDpUVnXpam=&eSMXBrYqVVlZi=&JzuG7iYkhXgpY=&vEgXOeVVqhjkh=&3fm_NJYqd_keh=&A6OHbvVnWnjfg=&DV_7aQUgsVjpo=&i3YEWrVYfqZdc=&3z6aVtXrrlhoe=&c_Ed7gWipjndg=&4yrh3FV_kjf_i=&YUAoAwXc_lnjn=&FYg72GXonieZY=&vG8OheWqiUgki=&gCJVouUUhslls=&uyPv3_Ymbneep=&QlPCB7UhilVb_=&JFjRHeZpmeaks=&LWHfWoXn_aYVp=&sDO8WqUZciXVW=&R2jxwXUlnqUao=&ovrGR8Ws_qXfX=&utuJ7MWpYa_rX=&XH8iBrWZYsopi=&DeGKMTYb_kiUg=&nWubbxXeraYcl=&CAsDC6YlcZrnb=&ZegEgAZkfgrXU=&Ce6fC7WfajVnp=&vZxbpNVnncrWX=&aovX8vVWYoq_m=&yAUB_YWrciaoX=&5WwN92Yajmrin=&ZTbfVSXZZZonV=&wLS6rRWordfaW=&PhMzaCXUXpUYZ=&yCRhGqUrZcqaZ=&cryyKLU_icjqU=&sT8SUoUijnseZ=&LFNPxdUlZZcsi=&5pIR2GXVdmZhh=&VOL6rfZniUkms=&DKuInoXmaZhUq=&p9bgB5Xkjmghr=&sg2HVgZqWnUkY=&uwl92PXWpqbfk=&fch7_QYl_nqXa=&BbMDz7XjhcVsX=&g76oQaXVmYlsd=&doRhiSYbphmkd=&_G2eIwZjrdbdg=&biXfJwXeZpbVs=&noUdaGZjgamhU=&iTNy3wYWesnrd=&OBvJvtWqroYhe=&pQthvAXXWhboX=&vXAesrVVqZjYW=&utmBZWWionlhX=&OuJNlSUYdkZUq=&9cvykOXYVWmXX=&Dv__r5Wchjlrc=&vZ3JwdWWhZbXj=&_5FQNNYbYlnhq=&eBrOwjUjcbZlm=&4JrzcZWpmogad=&4ioZuMXoinofe=&mpMiF3XcVlgoo=&zwJ2vzYpa_doc=&opyA7xUfiimks=&NvPDjuViraZcl=&hSF4KPZqssWjb=&uIJIvfVVkXnhd=&tUkkjkU_pgeqi=&vIhraJZsliVUU=&5BtUAtUqqXfbZ=&FAvRD7UcmignU=&VEHS9CVmrcbsW=&sIzWDPX_ebalh=&EbfupfVpgnqgs=&BBhmgoUonXYeW=&krMipwWpngcUh=&8_Cd2xXlabiXl=&NMT4UpXbkgbia=&iIW5AcYV_lfsq=&kZz_W7ZdpUdZs=&422Sf8XrjaYkn=&hPFxRlYpnYl_c=&iqYkBYWUqpkXU=&ki48dYVaiiY_b=&TN6rldYcldgrU=&t3qwttXbeajZU=&AkHWAYWUnlsma=&LYjrFEVpkeisl=&K4A9eCWfgsbXj=&LgclwBWqoWUWm=&nCfmUqYdjbm_g=&5otIKtWaqrpr_=&O8ZmcYXiWcXn_=&pBrdvDYYYasmn=&WCohNOXhXgZsX=&_JObAVUeaeZjq=&oJt9qFWaooWln=&25J2vIYhhhjol=&U8TeYaYUqmjqU=&6fPvEaUXUrWZo=&rYmY7PVfaaYjg=&Vs3DylXrYlmZU=&PjWzCYZlpdcVf=&dTi5_xXojegoi=&RX6KDAU_oilak=&F4KdSqUcrXlah=&3TFivBXlhinn_=&mddUutZknqkYc=&YXQxgbVZiWbhs=&wOHapwYppfldW=&yf3ROAYpei_Wk=&pez6IiUcUasWi=&FUx2pnZZ_mipV=&tZodRPUhlcVpW=&yuFSUgXZsYjsf=&2QaHdbUXpdqos=&4RukhUZYUqpio=&NbWICeUpkqiYs=&Z6PBqTVhZorll=&QGcPzYWjgiYZr=&99yfQ7UbnUXbk=&2BGD7rYlplfep=&aohEbLVUmgdim=&5G4FHkUogapej=&yGT58YYogaUkp=&S4PdJoUdfXWWU=&LlRaEAZnfjokY=&vmesHgXZmcqmr=&w9vdmnWYqrnVV=&iVAU2kUjpUZpd=&EfQ5o4WVhqhmq=&pnkClAZ__sjk_=&PZdldIYXlgiln=&XZ3slEZoXjdrj=&3MKV_BWfjsm_l=&xMQQR4XfdhW_k=&yfszNXYZd_sUV=&ltCm2DVUaknpi=&8WNVSMVeXWppi=&wYVYbAVWfep_m=&QvX3CSWbjhXUp=&j6vrCjZsgVj_f=&PcAvu_XU_cYcW=&896rxlWZVsdgn=&c2al7QYarq_dZ=&lkCqDQYibZmgV=&qTbORMYcjnlqX=&OcfgwTXYsUZrg=&P2KtLkZYgYfgV=&XFLg6fWqeWZZ_=&gtgNKfVY_des_=&td_HACYkfWikZ=&XlJ83sYedXXUY=&YGEw6tXjhdglk=&syaqyKVdffmor=&jmNGywVgiUnad=&HFIbzfXXcUjgl=&YRhd8TZUYramk=&uJ6AuVWepnZlY=&5PpjfAVfkZlYV=&daS_ZuZsi_lij=&jnUHJ5V_iiVfU=&BoDFvvWZmrclZ=&3bX_bVY_jkVpe=&TQZDSGUZn_ZiZ=&VFoai_Zdmqbqo=&wlHC5CUZrsUqZ=&OTDtTWWfWdplj=&QVoMqHZ_XbncX=&6ywqwGUhaU_fU=&Ak4dO7VhXgUem=&mOZxjsUVgsUoj=&fdrEHvUaemdZc=&rIAFC8VeWlhoV=&ZDLsw_WhfZcmb=&4tvcUIYihmobc=&pSh5WAZkXYssf=&78QiQ_ZgbkXih=&WhRBaNUmlfela=&DvoySIVXsnlUr=&seNsLfZhVpYWq=&re2zqUUmrqnsU=&QJ_Z5rZZapeqf=&D3s4obVr__sbh=&u33EFLWVfnUnp=&Z34BglXjbslif=&3S3a5RXXonchi=&V8EETdYVrpfWX=&xcoBLKUaajmpo=&rncJA4VpkcpVh=&AzSExqZgWZlkm=&dXeVsBYWbXqbs=&CgrdKJZdinnZj=&9ETIGvUkmVgUW=&adRamQVVqabYW=&eUxPDdUdWUrfc=&XbyYHRXWpfopd=&W6uU5YZnWpe_d=&FafbhDZWcYUal=&YlsNSPYVXmaUk=&csANlIXh_Y_ZY=&tHL8qiYbgnkUl=&HScAJlYlpfWYp=&kP99SOUafhmqm=&ZtmWP9XWWjnYd=&X9xWyUXjlZrfj=&yu3hr4Wle_dog=&oOrO4HZUcjqhd=&Faz5aTYcUkkrj=&hOQYvgVrjpaje=&o73FdhZnadd_k=&hsrhgQWWfjkec=&jc9lCQZrsdfXo=&GlehFtYYjWXpU=&AEVT2gVaYkYUj=&QNnYzYVlYcrgV=&dkNbxyYlhojgm=&jKuFOmYpVsirg=&4rtBBeVessker=&fxJs3_VjXWoin=&RqW6neVYWUXaY=&PjDRi7UsYllYn=&52udLsXqsmemh=&oMb7jwYhhflni=&_9b_rpWbbZilU=&SvnEscVndkkYq=&RzcaEaVfVp_bi=&wGopjQUkhisXn=&YN_yXQUZWVgWV=&TOTQLUWjdlpoU=&GIEB5aVhldqXV=&EJMcLAX_qcreV=&5H59osZdfgUal=&aIYSnFUseVdXW=&kZitLqXscXVZm=&oIdLNKYfrneqn=&LyJTYRVpasgjY=&dBt3ElXlhVVkU=&K5ymQ_Wfiadhq=&GJGOidVropmeU=&IJJlaqW_abZmi=&7PA5ehUgqWjrj=&sfGMSvYbblhUV=&5JxCLCVeZpbWk=&GOgJBaZqUfhae=&WPEZscWpoonWZ=&Zt8gAQZeWYVdn=&FiNehWZm_VXmb=&ib6j26XYeZsq_=&bRKETjYhVrlXq=&dxYGOWWbbWhpl=&YLd9CYZjXXmUp=&4LDf_CUYWpbVi=&knKraFYZkfagk=&xBJrihVXVcdbX=&jlH35IYlliifh=&hP_ruLYajVon_=&9PpAPMWpZbVcm=&CYuxzoWaWlpsj=&tq9BUtYfsajrb=&8M6XJrYZeeclc=&g7sonUZrVW__f=&sBgxq3Zhqpqia=&WqOxVgVhcrqpn=&9xUKekZphomlq=&KH9NQhUeqs_ka=&3yELFtWWjqdUm=&mOrXKFXp_ijWl=&ZEgJm2YlpjV_c=&Q_FefcZlahYdh=&DXmC8qZsWoVUm=&Z9NMYLZXgkZeX=&t6kULcWsokhr_=&A9hHCCVpoljfe=&cNGrgvXZXcaWb=&TPBeD8Vdlhrns=&nJcyYzZVqbhhZ=&UYlM95ZimjUse=&qXrCRXW_pjZkk=&FsFSj2WmriYfV=&MKj46cUifeVWc=&m6_8EZWarUdpj=&azrTapXdafWfd=&DwGzAoWdoepXY=&9aExFiUZpiYfc=&uHuC77Weebha_=&sN6xyZYWp_Usc=&irXwa4WmrsmXW=&tb4SLBWnjpmbo=&pivoBoWfWhZba=&zifc38Yjpjols=&CAHYCBUafpWel=&AQmEcZXiqghld=&EoN4mzWrUUohk=&x94_bpZrlhcaf=&OUAfrfUirZpUZ=&nnJiY4UoehcUc=&SlSBjtWjjZclX=&lYODj_Xlarrnr=&s2YcKyWWpghZZ=&taYr9EVcVYUsZ=&kTsnA_WoYXVb_=&qHgzoZV_VYcph=&gGejozZZUkasr=&NBTSNDVm_h_ko=&kpi_Z2XZdlVqr=&PrquROYjlUslp=&Aw2wedYohshjW=&gLUiXGUqnf_pg=&FYGEDuYiUqWYj=&qgdZ2rZpUUgcX=&IycxIPVmbeZms=&cengItYidVbUU=&fLJcJHYgccjrm=&WhRDlyWXgXahc=&sIZ2HnZaoXmgX=&AydqdZVWoqasj=&hgFhWhVeaWbYh=&8_4Y7vYapp_Vd=&cWJIqZVgrUpVp=&RonwZYVieaXnd=&j5ctToWgZndbs=&DARyjmXjhYpdX=&GKtAwgVYeUdeo=&IHI2RcYVpUlir=&Vp5dnAYrkemfb=&tOso4lXYosWUl=&Vv5ZAqYjnfWno=&6DqWJsVXfsZeq=&sdC_KUUkfb__c=&SceHBTXmnsfob=&OGRi3vXpnakXd=&tIJGBIYfaqeXc=&7DSiGHXieqWlp=&e_puCyUsebZYi=&kAuvHKWVaplbX=&yAjbD_ZYbsXZg=&MDjgdJUpfVkk_=&ox6JPRUriaikp=&RTu8i3YeUUcqc=&mSgCqcVibbqeU=&3k2WKNYdd_rdr=&6OwnMrUhhchVk=&DY4tVxVo_adZb=&9xd5IeUijrkri=&A8Ju4GYnYmojs=&iUwCDiVglWhoZ=&idb2VnYZcWddr=&VDj9ddZeerocc=&ItjtMgWsaZcd_=&QVmOoxUZbesba=&tfBOtNUdabrgX=&TxQXoVXbrZUen=&_tjTqAZqiXVYr=&vLpq6_YUomqhk=&GLUdkFUooUsdZ=&PLQdcpXbhhr_m=&JQm9kvYUdoeWq=&q6vuurXYZjhrV=&orX7w5YbWlggX=&LtjCNnUlpcXXe=&T6iGdiXUYgdY_=&hprqCNYnsjjVd=&JX8HT9UslUoYn=&I6zBOWZpsrpfb=&LdansGVYkmcla=&4GabwwUhWYa_a=&emzEJYXaZmnpZ=&LEnHgBYXaYbb_=&JAiyJ9WWhWpZi=&OuCU_sYipr_Wp=&yLHp7xWfpXrd_=&IWZC6WVlkUXpj=&eYatrKWcWoUYb=&fyf66oYpiplhp=&toeeojUWbisbh=&YHArs5ZYssjiZ=&6CSCxqYiflV_o=&PxjRViVqXorUr=&7tSXTyZbhbkVn=&EP3tJ8ZqafXme=&XclN9eXXjeV_W=&nWAiOwXbWfsUn=&eNU7I2Ybdl_ff=&yYxLhXZkbaXpf=&QtgZBRWrdYYja=&6oT2AjYkdp_ng=&Xh4dobUWUkVfU=&FFITElUhVlnkr=&6Yua7iXnpbVmZ=&D3GlqnWfZcVZg=&S6bBlGWjl_apm=&ZftFjMYskspiV=&A7jmvzZcUhobf=&RQMNScWjoUkrj=&a2OZk4U_pnrZo=&ZmSFllV_egesY=&_EtouWXqnmkhr=&53Gl9aVUlbnlX=&YxrnYxXqriail=&CvfXKGVhZiZ_a=&oSOwjVUkUfnhs=&n5n2ZKWedeaae=&GVbsb7VcbjoYn=&5N6HKaZp_i_Ws=&_jsYkMZbkWs_m=&tO3b5bXir_YUk=&_4a_sNWZnVeiW=&lCREGqXall_og=&n9uffTUe_fqfp=&3GP2pYYkieUgY=&VECwUbUhoZWqb=&l7Ix_bXsVqpYV=&aLA8M7UZaVrcq=&VQXIapXs_YcpW=&YwIpPJXZpZUaq=&TBbxHCVUdWdrY=&w9i_ymZsYeWsg=&cmXJZHUrrqhog=&VbBbokUnidmnW=&4fx6u3WjcoYes=&AoakvgVbchbdV=&YabTPyWWWdq_X=&yqmvNAZiobVjd=&VaDnwpYck_rma=&5YVd3JXnXchjf=&pnTwXZVbharhX=&a2HrJ2ZhrfXbi=&FomjsIWefpUkd=&LSYDY8XUnllic=&jdx6i_VrZndVj=&pLifhPZanf_lg=&KMP4qOYpVqVYs=&reiLVlVnhnadg=&Xh5Wm9XVoq_pi=&wrfeliX_qggsZ=&sLUQAJUWgiakf=&ldS2L9UbdrWoq=&bwiveWWaosreo=&AnOSWnXqjm_sr=&JXIg5SZdsrpqn=&sNEEteVWVjpXc=&TUkE7yUUjclbf=&2e8xxkVXmZfpY=&cVLNKlUhqoqbr=&JSokXhWmqqbdg=&4NpqVmZWacoWs=&LWVWotUYhlgZf=&nSpHGQUZZhbas=&wp8W_rXgfmsgo=&zYL9TkYWrpmeq=&bd5xYZZdlipYp=&uKSM9BZVgcdqX=&4Gpjp4Ypflecf=&dly667Yekjb_h=&XnNl5TVjdcUlW=&OxmyiVU_iWVmk=&gew97QWejVnWW=&qWOsNJZYrlrnU=&FbWESRY_meofX=&pOr923XljZiYU=&hq9nGUYUXoanf=&ZazH8pWgsXfsi=&aKY4V_W_Whcki=&UolRuUYoifjUX=&Pes7GuVeUhmbX=&nFM7xuYqdkjlZ=&4BsOn5Ydrpdqa=&VWB8xqYdqsXpo=&ikVzgjXaeemed=&zAIbJbXVnioUq=&gSmrnuYsXZ_kZ=&L9ZU_BU_emabX=&fVqBI9Zb_dalc=&JpnEDcUmchl_f=&rSNZlIXddfZYq=&lJeQUpVafhU_V=&KRp6GFVeVflqj=&K62msnUWfhWdl=&n3T6AIZjppVil=&ghVrhgYdaVojq=&bjEwPcZiVhmgb=&k7FT86ValUsl_=&O2yUjoXsjolWi=&G8om9nXofqjUk=&7aR72LXcnVVqq=&FVCRgPXcZdZol=&JbDMhhWandbUn=&svg8WgXVqrXin=&_VekFaUUnlYXo=&6GPzdaZkXn_ic=&YcWFKaXinpkqb=&x_EqCYVdqmmXX=&bQ5UkOUjrseig=&u2wkieVXXUVWg=&BfoDXlZXZgolo=&3lJo2kXhhdoao=&oo9QqjUqobfaU=&LqHOQwZkgcYUU=&HtPssqWjhsceg=&lTyso5XoaXXYq=&2Xjb8gZqmmbok=&LHLKhwWnokkdp=&Yk6d3JVegdlUf=&A65geUWlYYZam=&wL4WrUYb_oZWk=&MDAtV7WYbcZXf=&mP293JYYXlgW_=&_NQdzSZb_dX_i=&2LhNgcVYbXidj=&FOAXVZUkgeer_=&ZFSSj2XfhYrfa=&KtknLhU_c_iih=&9f44fYXUhspqc=&ESIdhgZgkjimr=&YgoglhVYdkYjW=&y5spLSZYocWoe=&JUNQvtV_mipmh=&YYigZhWlnsegb=&8UyGrkWihUrZe=&9eu8fhYfonhcr=&cepf7UXilkrUc=&Xq6obHZhaedhh=&iTssDBXbchdYg=&NzuHVIVgVoaVk=&cZmSjXZobnpUk=&eUDqCcYVprcdW=&TwZ9WQUWoVsco=&6mZEgfUYib__X=&BbwIDyZXnjner=&BEk8akYqfUeWm=&9CLU38Ul_kges=&VYt_4iUsqcUph=&ShvE4cXVnsohi=&lzUpCRUnfkpbb=&aGfeBFYpcXsfb=&BaqrZbZVojaia=&_J_YTRYphVhsm=&W6P9ryZblVrfo=&fYpmrmXfZrddk=&IgprNwVkWWlnZ=&qqlJjeVmachlp=&FTUh_fYqlfYZU=&DpL2T7VZrrkai=&nc5PsnYlgnh_V=&CtSp8XXYaqecW=&jcLCsCUqWmd_g=&BjWQTuUkokj_d=&Cx2PEOVoZ_soq=&jKDJLpVUaZqs_=&arCwcNWgm_qoj=&vOz7YZUYegVVW=&Dblay8VmhsrYU=&zOH48XZij_hsj=&MfEZabUanlUXV=&duxLQnVcVoXgq=&L5EvLaVhqXfUq=&9LoRpwWajhXcj=&rE4syuUXrdlpa=&6yUnDtZVjZqmn=&y968XIYjbViZc=&BDy97UUs_pknl=&AW_PrUWkrkkdj=&e6CAAdYa_pUUe=&qamWgRVdgoqqU=&kKLYWIXjoYanb=&DXxHRpVsnniXh=&V8VOOGU_saess=&papulOZllqolg=&xU9UgQXbZekoV=&skfgsQVrphcce=&oyqPL5VUjZVjo=&Xum_9PXsZnonn=&3gBxUxWUrmYoV=&4B5DJwWjlsUV_=&y84E9yZsZWXmU=&RmuNKxWkk_Zgp=&dOIs_PXVZbsob=&vTJNLwWrkafYk=&a2NZM6ZpjbepY=&libEf9YrssnaY=&uI9uEoYWq_bge=&tDdnE5UiUgjii=&T9GYqgVslWoii=&wYPVRsWjWres_=&CWlW4WWjpcjUm=&t6PAGXXkVjnUl=&iFTCx5UgabdeW=&zNB2VcXjXhf_f=&u4JoEEVkjaqWp=&oD9v3vVVdoaZs=&twBDDKUdpdmqm=&f2J_vQVspmWUn=&Q63spSXrVYjcX=&IFlUcTVokmZfX=&j4IYjKVehjahm=&n7pUPEZcZekgm=&feCuR5Unbp_bX=&49wLUbYhoaeda=&km9Kv4XdYjhde=&gzX5oJUkXZnra=&A9cDJ6Vhlidcm=&k5TE5QVchoV_n=&35DrjgZqWaXWg=&uez7NBVsfXicd=&BRFI53ZciUosd=&JXnLLzZsmcnbW=&WfBSyOUUbncUn=&SoWUu4WrbnqV_=&DanhGiXWUYojq=&XvHOPdUj_ii_h=&dIykRXXqYahZj=&B7P8MkXdjnimi=&VBroANVVqmXk_=&NiAJ4wUrpplgY=&d5U5_XVjUljej=&ioPHm2ZUXXYgf=&EbO7oxUsqmoZm=&CHEAS4YeZfYid=&P8J_pBVaija_s=&tEDgeQWarYkll=&nYESA4WrbpVpi=&6xjQMjVnoaXYk=&raNOHqWUkaXXg=&QXeEM5ZWgdVdq=&HqRFQdVppVfrV=&Mrg8fyUmnpmhX=&yDjC4GWjsWrZp=&LUMSvpXbkmeXb=&vaLDBXYjhlddh=&J8fvjFWbVagrU=&dtOejZYhepapY=&CQJkrOXkXWakb=&qtkTiiV_YpWap=&oTUB5uVennqlV=&FBaxmpZeperWU=&myqEHRUgVhYXg=&b5aTPEZVssahX=&gQYwzaUfWqYlg=&zuQFveWXZcZYb=&77lhdTY_bo_rl=&Eyh_haUqmZ_mU=&gQM9RDZlifo_a=&UbQztLZhUdkhb=&g2ng5PYiX_Vnh=&Cob5onWpZedkc=&ls7GhBYqdinmg=&lTB8fNZfsqaXa=&r4L72aZZdemdn=&j8KhnzVgn_mhn=&v5Bs3uZjsaXVh=&lfWUseYZcffhj=&3xrF5UWXpkdmX=&tjPGDxVXjYerY=&KIy3MMY_eqoWl=&t_yRCzYlsmqXi=&fjKjwKWcUgrZW=&rssMwvYqbWrWf=&OtS6P5Ufhof_X=&lMjau3VZdqlUj=&B4eeqHUVmlopd=&tD9ozyY_rqkaZ=&V_LvhOXlbjlVZ=&VFNHwuUkoqqcl=&UK2PmnVVg_eoq=&2yCiynXhekkpW=&cKqRDcYUrijnY=&KymS2AVrkUcrr=&z63mk2XUrsVlk=&jMB3B2Zoef_Vk=&YpciqkYcgjZae=&tcBvIXXsfogmV=&iHPI8GWVrjpYa=&IdsQwDUijkVgf=&KBplmxYjZsoVi=&Jps7jFVnVnWYr=&yoftvMZjasmU_=&TLnpk2ZlkXeqf=&A2at78UdYUglo=&JmVNJ9UqkpYco=&pOVEIhXmkrrfW=&ywdfivVjfkjpf=&CWrb2kWs_fbkc=&WqvKv6YfireXr=&7QvOTvXUldadg=&FOroKCVsYopsn=&zzH792YYdZUlo=&oc3yRvYhjWUgf=&ROz3VHWWb_iWm=&LC4xWUVqalhiZ=&dNyHAzZ_mpWpm=&muzGgzYannegl=&Xr9AiDYXmkqlo=&A6Ell9Xokd_Vj=&OptKwEYcnZppV=&KUBumWYhVlgpo=&5TglXzWcbaalV=&s35HalXWnZike=&cRFwzIWqUdjqY=&N32gmLVdaWYdb=&iw2I3aXqZkgYi=&BQfHtSYsiVslj=&YTNDuCUsYacso=&O65An4YiebhVn=&MfnTGqYed_air=&sBCvdjZqh_nik=&AbxKDcWWXqXgU=&M5GWoQZWYqsoe=&4rDj5uZ_isZUh=&oC43RqUmgcine=&PbAEwgUUoadgU=&HST7zKYWcndYW=&wF427jZWqXZei=&t4DHE2XakXaoo=&qovIpfX_UiVdj=&NtGaPyVrcembV=&thKTXOYXZgccZ=&L5HtmKVehmpgX=&OiOiwWXdhXbhp=&2K43_yYlZYish=&h_ym84UohiWmr=&6waKQjZWpVlVk=&JxxVJfUqmsesr=&x8CHzgZsfqkfk=&OnwmZpUjelgYs=&wbj24pUeUXqep=&uI6qcVZjgndap=&eGvVmhWod_dqW=&sDSMxQWhd_qaZ=&fsejA7WbleVgW=&Qvv3zAWbpgiqm=&6UwnrhWmoqqXe=&ZbEClKUUebcVo=&pRBHmkVqe_gWe=&j8eSyaUXbacif=&chhmF_Y_bYXjl=&Y2YQ2iXpjf_pg=&poVfyBYgpjXbd=&6sjXTiZnZqXer=&pTBWwAV_XeYhb=&t4qHZNYpZViap=&E2LQA4XrkaV_X=&hUVkljXcYahaf=&uP8cAyXYpgioV=&sN5PLDWoVlodk=&fkdk5FVYbYeco=&KymF8FVcppsaj=&8TCnKCWojYofW=&L3qGtwWkhVlsc=&dtWHDBXdhpsXr=&L7GlejWfWnprW=&uS7VadWgfqnbi=&5DPtWdVYsbVUk=&CFDRx6UesX_VU=&Eag7iWZedimcZ=&RaLxELUXaUdXg=&mFnZEcZmkjYmc=&oLJgLhWqhqVpm=&ksFuZaYYjqmhZ=&PIMWfmUVoo_ek=&PHJF8eY_iXdUa=&Q2QS3qZjfsifU=&BGyAsSWgrcXfV=&ViwDuSUXqiilV=&qESP5JUlmgofh=&XeemMRUsWilme=&KEMPS5UrnUdkd=&NBHp5SZZZbgdY=&rNA4uAXebqUlh=&BX8huaXlnomVj=&xo2fWnV_ZqjgY=&OvFMSfZWejYmq=&A5cLxuWsnchpm=&FD29QeVVqVbsi=&veVwnWVaekfnl=&HtF788Yd_msjg=&NghuWaUsUhmYg=&m4w8X6UskVfgj=&DHNXBAVpjied_=&gmiSrXWqkjlYV=&qK6HNlUsdgpaV=&AXm46YVYrYecc=&srOwkjXoVhdin=&AZr8DaUcsXlpm=&Jx4flpXdighss=&jvCfuwUqsmcnl=&2XsqpQZihYage=&SkiAqKVgamXgp=&XzdgAQZrossld=&OxXKhxYibnhmg=&S8QUKdWqUUkhs=&CvM6BHUgpnYna=&SiHNkgVahZpnm=&XNbjGHUYnjq_g=&nmieu3Upbhrln=&jbUosSWbednfn=&8TtZlYZdgjUfg=&D2CY_6Zhfkljf=&6APSn7YUYrdfh=&4s5ErRYknUbVV=&5GmdrtWVXkZda=&DKIVTQUsUnqdU=&_XZ_oMUmfkmfl=&Y_uC6AWYYWZYX=&2H9H5FUjfhkVr=&WJTLgrV_jcYXq=&VgHc_rYodVgUo=&DpVGOdUYUrZre=&BjDkTWWkqhYec=&wWib3OZkmU_hq=&6bxUapZYa_Vsl=&VWm3HtV_goasp=&bmOfCpXfeei_m=&X5M8IOXbi_nlf=&O4wqZVXUUeesp=&ay5mWlXndYrsk=&miYvUuZZgZnjb=&KyWZ2IV_Yamgm=&dui56IXUf_YnU=&hnWtNHYijqhbh=&FFWnQkXVcq_g_=&sMpy2qYkbUoVh=&DlM8xCViUhmqb=&VxRedWYUZeZds=&YNHLZdW_gUikU=&ixlolLVakfUgd=&yxF8R_Vejha_c=&dkCATjXq_aUid=&t2vaXtZV_soaa=&hKy56zYjemYda=&UHQtXlY_nZpoU=&pUG38ZUYme_dn=&ZTznq8VoUnaii=&ASfotRUbpkerh=&c_JEz8WaUgnol=&bHtByOXohobqq=&xcvfpPXlrflWh=&EV3UQTVUZbVUV=&dqEBG4Ygol_mj=&7wF46WUfpkhbo=&7Tj7TbWflgcoh=&rpXYT_YibVlhd=&Dx9v2qVfjVgWV=&qBlvMBXoUWjle=&JFHCMgWprgmmY=&vFecjdXUhirao=&XRj5VHUjsdXVU=&py2Jn7Zeecslf=&SU9XM9UfZkUnb=&UvqSnFU_pUYfq=&MefZrGUYpUUcr=&qgRgVDUbqhlbm=&gT25ljUjddmUe=&lY7x4AWkaWee_=&3EqGHqVYUYkjq=&7yMIEUZZqpilj=&RmA4HqUrf_plc=&F9UKSZVf_gmpe=&JnafH7YUmYogr=&c6BgzwVmeWgXi=&3cd_rwZrisrXr=&4G2MVQZUZclid=&8SYeseWZggVpp=&57NzAdXqeYiiX=&fC56yWU_XjbeU=&krwoXEXWZpYdf=&ft2udbYcZocch=&DN4MITZYoomqk=&wRgkDUXVcisXs=&CoCzygYUfdUsc=&nTOcLEVsUZWaY=&SZHh9lYZYUhqZ=&Qw98NuWkqZcbb=&DaQwB9WjrqaUZ=&VANJHtUXYbdsh=&vcs8xDWdpZZla=&svgjMSYUZnlgq=&_hrw8BZeVc_gr=&YRsQcAWlqalck=&TiiHM2Xkq_gXe=&YkNf8GXklVqed=&lNFvRtUVYXkVY=&PDF__mXZYgloh=&Uhuqu9XjWXdrn=&hfN46SYgZiiVe=&77hDvoUrZVgde=&gjABeSXfsiVsm=&dMmzonXVdeWcZ=&38hhGtXef_rjj=&JwFB_AZspZgVW=&BBXEBDWfnobVm=&584NROWkiZXbc=&KyCZgXZbgkqhs=&qDJ_BlXmgZVUs=&gZVFYiZoqlVel=&ud58IYUpWWqms=&CxfZ7bYnUZllh=&bbf65EZWieVif=&9pnaxyZspUcXX=&5QTCngXgaUdjg=&k_6YumYkemYYc=&I9ByF6XrsjmdY=&umbwMOVlYdrXp=&pwrigeXnVbUeh=&HLEqGmUnpcUrY=&27vCC9UfYWrih=&Wp3RMeYegeXea=&z4u9KcWlhsahW=&A6JhZ4UmY_qcW=&dc6KE_VVnpoVq=&d7epL2UdherVn=&XK3IVlXYqiqqr=&_BcCBBYV_khWU=&FCREC2Ymdj_pd=&NBNapCZpUVdho=&vy7sxPWnl_dcZ=&bW6M4dVjkZ_Xr=&dXX8dDYaW_gcZ=&3DLFOHVfUrWqe=&OvZYGwUWmjshd=&PjK7aWWhbVfod=&w_YOOhYqspmle=&gofjOHUdmh_Xb=&9QlOz5YflmkVi=&FWhhbjWdeadph=&L2JJoJWlescVq=&NOJ8tOUbVbmhX=&A5l8sZVfYosk_=&iKJWqIXX_jcoX=&xPXbkHXikllrq=&rw2LhhYreikZe=&nNZFuPXYrVWZi=&yuFicHUifjrbf=&kDKIdhXcfo_is=&Kk2VDUXfhVkqq=&EjT5p_WfkjUgo=&YBJVoPUbmUUqa=&gllvurUsfUl_f=&yLiXntUVcnWpg=&yC9k9JXppqYgn=&ovKDvlZohaVem=&uLK4EEVk_XoVo=&lOoSPZVYmZqpZ=&VhGF2gXiXcYrU=&xTDQh6WgXVnZk=&9iSjUnVbphoXg=&TcR9eRXinpXjb=&Xhf93MVYecXee=&z3SiidXnjerhk=&gpXLEHXWermpi=&XGDxYGVdobZWi=&FxDj9QWYlnZma=&E9NDIWUWWsrmk=&A3VCSdUl_akld=&UORje5WXiqUUe=&tAL6U5VkUfmU_=&JWeMugWcqXhWc=&oJKB7YXWophfl=&JipNxzUnoceYZ=&xmbvprZWVkqfl=&ffCI9vVXd_kZi=&MauE52VelaXjq=&7vg8A6UloYkj_=&77XBZwVnphVZU=&__elX6XpibUUp=&HoG_MSZoaVbip=&BS4sTlVsZhsrl=&hp9LpGZselZrd=&rDhv3tY_hXqZZ=&Jru36dYahcXib=&2KLZgxWmpUroj=&fdhcNfVacqhc_=&fF9nQOXUqiore=&KnHD4KVjpiobp=&ig4beMWVsXpdf=&VU7NbcXrsqqXp=&FUNMKrWgknabc=&OlyaqEWsorilU=&8KxflMWargqak=&3dy4LVWUnfY_l=&LA42xZUemYeoU=&5X3qaEZgaZhb_=&q4KB2lXUbnZda=&ukCEIrV_ikpnd=&_uobmBYVhnqmW=&nYa_LnYjXjasZ=&4UbVZtWo_pgYd=&gx3RrhZedbjed=&RocSZwYcXnXgs=&g4LdlKXbqdq_i=&PzONSTUfUigsU=&gwXAE3WYjhUkW=&vV_VarWlcllaU=&6Wiz97UdsUksc=&LkBEZRUrhrshp=&Mm3yHaXYYlnYX=&b5b7OSUZbkfXf=&kt5s2sW_smWcp=&TMraNVVhbooYs=&EJnV_gW_XoisX=&ME8IwcXbrnnip=&Tep7xAZWrWbrm=&hwtyXaUfsacUh=&ibQqEoZcsg_mh=&IS_BM5UVUXZf_=&qASSmqUlgWmYa=&Qi3Lj5ZekdYpq=&rK6TcMVYghsVb=&a7gs7JVbfndon=&vSkFkWUeqmUsh=&tLAawNWimVkib=&8p4drDYrcZiXs=&xhX23CVccWWec=&3oyvldY_Vrhin=&8RFRNeUbjbYnq=&5DqwlpUkmdZbh=&FN2_RoYrWrWir=&jCueiMWoojcmd=&zP4usZXjkqiah=&IJ654sYXbfYcf=&yXjED3Y_pWj_e=&4FUoivVZnkVqo=&8L9HppZpsapVg=&qqQE8tXca_dVe=&KmLhhyYcXi_fk=&f4Prn3WgoVlnh=&ej5DUfZrincaZ=&C8T5gxYiohqha=&LzgWVOWnjqqom=&9wsiDfVdsaqrm=&Jf7qy5WX_iYa_=&s92dTwWidddmp=&oZaH4rZrfXh_k=&JfswsIZiqd_fY=&KaUrSfVndobbc=&JHPhDlXjdVVag=&5hNQUmVWqZqqr=&hoJXuVYfprff_=&4hwELMYiU_Udf=&m6Uyi_Vsgsnqi=&94cOaLUrhUbfZ=&oYzpoXYdasWbk=&6AaGrCZnmakaZ=&Vf4CdUU_rnbiW=&7FRUXGYcdaiaZ=&eIGa8MUXYfmqa=&jCgBbzYdZWVWo=&d5dH2XWjZnmcr=&d6mLQwYerafjp=&Z67maYUaUnVdW=&Z25fSKYUqZnYk=&UAvxdXYejgUjZ=&34TcpRVcjhYqo=&S3icDqVUieapk=&DsV3WhXjmafof=&pmTQyeYpqjaUd=&RIFghQZgan_pf=&2Tq45dUghkWkW=&Lkdqt5Zemcgqr=&u97dHeUYp_dVm=&EoUEVIWdg_bis=&8rLra_WgZcbp_=&WolBKCUZjhodX=&rBIEz3UUUohfW=&jXsc9QZodoZpf=&3vo7hJW_gWXkr=&cy28hvViacbne=&7BIowTVYkhhkk=&UekanjUdnsXqi=&P59s9xZbqeifq=&y2_FIHZZYWmhr=&tKJl5ZZnseXhn=&nisKuIVmeklWi=&ATrHcpYjjregk=&iyDswMYdpZlbZ=&tWzIbCWpgYkan=&sUWzPHWnesqep=&6fwR2kXWdWecn=&4_oqftYpqoZsc=&WlQmnYWqZeXil=&VCvh9fWXgq_Ug=&ILKZEwXoqfZcs=&Nzzmq6Zkhnsjl=&WTuWIUWWeWeas=&DzoOmhWjWdfin=&E7zblNZselbbV=&TVgPguXVXbZlm=&FHFuMUUXZlkif=&9NMJlKUWiWdaX=&Aj_h5gZanf_db=&JMpNnyZokcbgX=&gESQvuWWUbfrn=&VpMdNBZmVrjnr=&p3HLMeYmdjWpl=&juLE7RVrZsVaY=&hmWPSPZnnolki=&8DVnUMUnmYpcn=&OQZyrSVbmhejh=&g4Aun9UZXUsj_=&XNcKXVWbnb_Xn=&hhqvX4WXleqVZ=&cNPldgYjaWkii=&nrmUSwZZrbVim=&MHz4Q_YaVraZZ=&9wQyBMUgbodsY=&3n4NxJXsmeesb=&OocMC7Xen_jWc=&3ATKJTUVppskb=&n5UfnWYmejhiU=&h7UsQ4UesYfXr=&96uKWuXXUWpVs=&s8U7qIUZZ__lp=&fmls7LVbbYiVm=&PwFqlSYirUkmh=&NO2uZyYXpYjgb=&YPT9SwYbqhaVo=&nhkhduVml_ddl=&Qamk7bVjXgldn=&BAGmfGVUomkfX=&F9qUioZrlYgWl=&86RLR5YVrn_Xg=&eH6QDtWWi_Ugp=&692P4rUYdkbUW=&kqjw3vUiiYfWe=&3BZ9nVUVYmZkV=&bFSirbUorgqoq=&DqEne_Yha_kiU=&NACm9UXgVrcUp=&NNrPOrZjiZlgW=&koXT7TWhmla_e=&zxQpliWXZpikm=&RInWNqZrqrnZb=&T_3YKiUcmpfUi=&e7TFaTZjqWYiW=&xjGycxU_ophka=&kzH5VIWrkekpc=&ugXPmpXY_cnki=&Vp5cb2UW_qXjX=&eDikweXVYaabp=&ai29IgXlVgpok=&Bqnh9wWYd__lk=&JJe2I7XV_f_lg=&eawy9iWgpsdYp=&Gk5EqcZmjqXXZ=&iIYKBaYakWbgd=&nlNhGKYhfZaqi=&25cKk4WZsbiWn=&8Uu8BoVmZiUXp=&ExLs9aXXdVUXq=&hWa47HVXo_ckg=&W92DroZViWjZe=&F7XrQRXsslVlp=&aCpcaiZYojiiq=&uiJoJaWcXahlc=&iiF8fmVskdWXj=&IxarzcZmprZec=&wtf5ewXqcdb_o=&2BlHcIXpaksUp=&bSBDUbXlqmVrf=&IMirbzVroplaq=&zQ7c_SWoeleWb=&U_2X3EVUiZY_r=&ljnlLLZfejm_Y=&SjsjNKX_eelrr=&3UYeVYXcYbfZs=&XPPttMXqWpgYs=&Xvv3kYYdrdsmZ=&SIvdc3ZsnnVeV=&YJJTXeWjqe_Yc=&9xM2MbV_menlr=&LhlShRVpnjlpa=&CZellkYgnlmdZ=&LbD7vjXb_gnid=&5fe5gxXfqUqZg=&RsxMyKVUna_la=&tHXJKjVlh_fY_=&voJ3IbXseenkm=&P3mgUnVYXpWaU=&vEoyWGWscssso=&rU7NUFUYasUqW=&JMi4suXsVpcUq=&4eQdKqWhYkojb=&x4c2duXoscosa=&yVNQBoWqlcllX=&XxNuJMZdpdhmg=&Kw4Y8wWbiUZnU=&8c49nMUehcdbr=&Jk3pkeZmferpb=&kG_UIHUmqpWal=&ExhA42UZi_pbq=&AbFzhPWdljfqm=&LclVAlXcfe_ar=&YqJKyqYnVgedp=&VklYxLWWYhnsd=&yUaH3TXrbfqcn=&DkklLkWisjfhl=&CquBO8WegnhoZ=&9d6qKuWoZpWVW=&NW8XnYZmfgfrn=&4eStWBVXkYfjk=&BKZjPvVqX_UrX=&nr_x5JWZnYoXc=&S9maQyYVhWhXX=&LrzNlpZressfq=&iLtH3hYUXjghU=&lqfVlPWWbcpsW=&guerdgUhhjYZn=&UQTtVbUcqabom=&jJSSXCZsffZae=&lXxgALUWfZUno=&Du62WrZosrWXW=&8qKLStYnZlfYo=&CqSAVXZpXnbqs=&CKpSieUZUgfoa=&vRyWKTWf_fibl=&Xd3TzQWcgmpjj=&SfZUYMZoYbVUY=&MQOAC8UoZcZhV=&6BF2QoZjbblsg=&AUJBm4W_rnchV=&6FiV6gZrficcc=&seYxwFZZnYdmn=&jixnlIUUbWhqj=&A6nCh7Ushdios=&z64VzJWkqqpVb=&uWOdBzUgpVern=&kNHediZUeaZie=&76dO9yVfooaWj=&fftghBYlcl_cg=&IDCvjkWUXVjrm=&nneFQqXhqbsir=&zETaMfXbZbqkW=&wTLpNhYoWqcWY=&H9dHXrYiblUjX=&YaJkcPZZioYqn=&I_dJzXYVp_Ykr=&LE3OlaUVcWWqs=&e339gJW_XcreW=&kyrY8lZUVsWUY=&wDxvAuWUoZeb_=&OOG_TAY_o_cYk=&HHF2WkVnUqW_V=&sdnaZmXprcXbd=&JXPYptYZricnX=&jnIyVuWmpaejY=&JXIIoLYqa_gUi=&72wqYZYneZVsW=&AzMGLNWVWrWeW=&UmkrH4Wkegcia=&oK25SvWlekgbr=&vUbtLZUh__ZWi=&xYDH9UWsVnaao=&PTrmlBZe_sdeo=&rKmLNnXZYpdpW=&8AffjLYVUiZok=&wPGSk4YpUVeni=&7nwBzKUWf_oUn=&MpDbyhVqjboes=&8EJrFtUmrbkjd=&AB2kppXqZikZk=&rxOyyDYgZarph=&C_8HPQUcYhcfg=&HPuMYhUbkhdp_=&zWGDT8YpqUrde=&hMdsFgVrgUZlk=&sez5MZYranYpq=&penMRkUdYsUfa=&ayLtTVVqiZssh=&FkE56JVsWblfe=&epERa8UdZjWar=&e67X52Uor_emX=&dLDEwtYpsoXkf=&96FUKgZYikcll=&2JudXmVmlW_mf=&eFiw2uWoUa_Uf=&Vd5QuOXmYnWpa=&MF_YGdUgrjlks=&AXS_7LUXlVdoj=&AnzxeGZomcXe_=&aSkhCdZbodeln=&fpPiikWaajbUe=&z23treVejdV_X=&3_fL6pYaakecV=&d9P5YEVeqkgac=&TsGg_yWWdlWfj=&ga9VM6VZpsrZi=&8tMlGZXanrcUg=&DQ5ZemXVXrcaj=&QocKzKXqXYnsp=&NVgGk7XYXafqc=&8kLln9VlXfdVn=&PO3fzYUnpm_WY=&gg7TVuVlXipiV=&l2qsNcYbhWqnl=&9SJw5fWlbZnXi=&wrgwW3YpbWdlU=&aDdGURYqefijW=&ZR4iV2YnecUde=&nSsm2lZlaXnWe=&_BsK5EVUYajoq=&ixOD6sXXXZarn=&iIIz7RXsmaghV=&9ijaooZVrZfji=&_ATdTsXnkkekg=&g68G5TZhWYVdU=&8L6SvHVWgnj_Z=&g4sCbiUikbZWf=&TWfyaDVsrnhqU=&aFXLq2YdsWabd=&pwd2lXXnofZkY=&K82EfSWrngbha=&EMiWvsZgYjYWi=&UkDA_8UgWocer=&kWu8FpZZaiUqW=&6ZjfbwXpfq_pc=&lAkZ7EVcsqdUh=&_oCmCoZjgh_Yk=&ay2yviVjUpZno=&vcTHaTUebqgms=&tNqKwQVjekhsm=&sKzDroWgrssne=&5TRMdsZm_dk_o=&n8sCspXqcsffZ=&2ZmKALUekUchj=&Zf7w4MUYVorhr=&YOGZXwZbjbhjd=&g9yHGQUddWdrU=&N4CpRRUUrlXXg=&6KwmClWWlelWr=&EC2dsHZqjXaWZ=&9EvqRSUZmYdsb=&WvTLocVs_blWp=&bOoEvRUkplkgg=&SQJjT5Xfsim_o=&NA_5WgZpWkeqi=&7wnLhwUVaihck=&OyiuO6VXYsfcp=&zL7sZCYZYdqZf=&_cEd8MUhearUd=&LYocOsYbncgWm=&kMcV3yWkfcViY=&wh9x3WVjmklWk=&jgZkexVkdglqX=&GdrwSaVrhaohX=&9Co72MW_iZapo=&rYzX8TWdVdpio=&ZpfTxqXoigppl=&f3FJezYhfqmZg=&VIJap_WdXXXhp=&yTT2XQZl_WXge=&BlccziXohdYWd=&YMqoSGUbhfZ_p=&wUp4_IUXVgVgk=&SWBGESUgmWmff=&9sERc9WYZgoUl=&KW9wypZblqmWr=&ozPYUuWqfspch=&kFm6U2Wroqhqa=&kEkpaSUfmmksd=&Q44WvBWXXlYnV=&8Oz2jKXqVa_p_=&8XWRb7Z_qbsr_=&u5qzxOWiqflsh=&GiNusfWgkldjm=&Yct69cXlUlajd=&GoVR5VWbjXkr_=&nO8IGMVqXgZqs=&mxNl3WWVladaX=&cUGvnIYUpls_Z=&RwyBVzUsrZkpW=&f5KiTbYmmkimk=&MoNFWrYikZWaX=&xArjvrZUqndVa=&V9JVfKVqnhWUa=&fooCpeZdjgiis=&rPo2qNYZmlgsd=&nGAyHzXifXhUm=&8tRJAzXemcfdh=&hzQEwxXcseeYr=&8DJgv6ZWkYZoc=&sqRpFGVpdsoYj=&mnU8cjXjlsiWl=&uDYv8hXpUckrc=&nDIWyaVrfdaba=&LK95suYlVrikh=&RXySGTUXbgqhf=&wLekUXYaebgnd=&g_cGXKVbrrYqm=&owpKQJZoVrnha=&mn73alVgkj_bU=&qeNRRMUpcsikZ=&zbvIgmZYijarl=&ogJFUQVrd_dnk=&yl8P4VYfs_qZi=&yY9obKUoacqbf=&d3FBAFVrlhro_=&Y_rflxUrXbX_n=&ELNONrUcYlemo=&UjqCGDZ_VihjX=&tS3FT8WZUas_k=&yinmYOVmXnsaZ=&vBWvBwZpUbVls=&SwLWZnYiYWVWl=&UZceMiXngZjhd=&pSR6NpUmaedZU=&VSOuDmUXbhjdi=&qEEP3BXap_pqa=&SAe4UfWngr__j=&PhiPKDXhdVUqp=&amf7GwYlgVpWp=&NprE3lVcflnmZ=&4wd_btUp_klpU=&9wnmuvWfpasgl=&SzLZaVX_orkWZ=&N6sGnEZokXYi_=&38KAtSZeYebZc=&avFBF6XmcmbUm=&qInoRgZlcisfs=&YbQTIQWldcaXY=&OQVCWdY_VrWef=&9Bm9LkWggiqVe=&Wjty4PUchnfso=&76Om85UailjaZ=&cAaBtfX_cqbZX=&jVeYN8YefkaVj=&aDIl2GZfZnmgo=&zUnZn8Vhja_Yn=&BgxCfxXjrqcdn=&wD_wHHZoigXjd=&hS5G6gXqrcqab=&LeZoLsZXmjjdd=&2TuUFtYjapopk=&5wQai_YZUbXg_=&Mf2YrFWqsYqnk=&BrS2UdZdphdUk=&BJfgiKV_do_oi=&rBbdTsYbeamfi=&v39O7GZjcqXgj=&i9UvP2XYamqZc=&9zoPyJU_k_mdb=&MV97tvXsjkkma=&VJiBuvXqUcijp=&RCbJX9XecVkYb=&k2wHC_VopceUj=&B6seeLZdcUbef=&42YHcyYnUokVW=&S5jChUWsfXbsa=&uyUxYAVhjbiWa=&fCREXzXogilXq=&e2iXCKYiriYmY=&SRjwrYXbcor_p=&NWb_BlYZckmag=&DNbOKKY_ddeYk=&kvzxQwYfsfUfZ=&s8pg7CWjVdodX=&_vZHl4Ublrpak=&RMHyrBYmjWigU=&sEgMzkZionUmi=&irwSIXUrZcqil=&dspH5SUUciaei=&CwS_axZWganqk=&AO_AuJYWsmceY=&UAR6mcZkVYnag=&hYm4ptVfpcmfr=&hCnN4yVecWV_f=&zKyXdrVroc__h=&QQGkETWb_adUk=&cu7N6QWgVrokf=&QNCK3oYcfeood=&btnZkMYlblUfh=&UpII3FZriWndd=&ytr4tkUdbrdhq=&MKBJCTYipabVf=&o8rqDiXUpbrnr=&2OAmmcXkojd_b=&jZx3aVYXd_fjX=&WfAHgmVgrahkY=&eEl__wY_rkisn=&hdxi7SWVpeXfe=&MhfAuqUWkgqng=&yAbMEDZcmihbk=&nFuDkHUiaojpf=&KzmiPcVUbrYgU=&Cvo2ihWp_cYXk=&yafa2PY_Vhidn=&P9jOpRWVkhfhh=&8QdQQGZYciZrs=&CjKU5SUiWdnmi=&mQojwjZppVoWp=&7pdUnCU_sfqkp=&LBLSItVcfUU_h=&nF8nPfYoWiseX=&LTbkEkUZWjp_X=&wHqUoPZro__pi=&2hlLfzVWbcpYo=&RieSSaYbpe_lX=&7d5kVkWYmjUnj=&roCr_AUkrid_p=&k7ybjMYkmZqjj=&wifcZ3Zo_qlqn=&oOTMrRWWVmscZ=&GFJ9bcVYZbdcs=&AtSROVXVhcajU=&6HE6dCWrgUfba=&vUbwLnUkgX_aY=&glbq4oXZZXsZp=&Q3ruYMUe_ogco=&4i6sGJYgqlk_l=&MkXvtGUfhgcqg=&ICBhBiVldppUh=&JmwnMNUsefioZ=&vEOt7kYckehUs=&ozF9MOYp_bpos=&8B_Eo_XipWg_j=&Y_Hl7zXmYZrmX=&wdXWYRYgqfUdq=&CP3WyYZfXplfi=&Dy_t6IUWaksjZ=&IggRs_WXVakaq=&ew_VRqWcdiVif=&OSpwbvWUaVkfg=&NjETjwYrmnkhi=&OJSLG4UUkZpWq=&tfA7i3Yasbbgh=&pnefkeUmigUqe=&N9iTxZZppUpro=&SA7VoyUgogiYk=&Y3EkrYYr_Vpcd=&4eBOy7Zmj_kl_=&_4ocPpYjV_VrY=&wJUOfEYYoYUrm=&mAuBDVUYscfgb=&HPo8_ZXsrinlV=&8ghN5ZWYlfsli=&PES29UXhkaqon=&6DobjoYmUqsgd=&7As7KIZqmpipg=&KPX4S8Yjmmjfm=&MJmu5EUk_ainl=&yHieeFWqdfZgo=&Lcn5a9Usmbgso=&3z2eUbZoosZWW=&w7p99UVacnldm=&SNzm_oZefmgmp=&yBheedZlmjhlr=&bjAxXsVssoXrg=&RHgIlyU_nnUdX=&75LHyeZVcjqas=&U7cs7VYeZpalX=&eo9HDCYlnojqm=&NM2M3lYfmXm_W=&ambnnsYZ_ohUU=&B8a9ncYlso_mZ=&Py8NE8YmiXU_Y=&mkaISgZdjWkff=&h4sotoVksoaan=&iij9avXjbsbnm=&GzzruWVXWsbVY=&9Htvg6Yfnmbcg=&NhfGZEYXrfcUe=&LRA2pPXeisfsU=&9wHvrSYlnpgYn=&SumaFEWbnkYpn=&TqGXXYYWcXjse=&D_taY7XhXj_lo=&XdcItEWXY_qYl=&4nhr6uU_srekl=&JiRgUYWVrdcee=&oBNyroWirjYlr=&KWBXZyXlZUUqf=&pm9c4WZkeogog=&PI2DTPZUqjYkg=&dNgcv_ZZcoWa_=&im5C6zZoWYhfe=&kYKI3YWimll_p=&cVckEQWdVogqq=&BdCv26YbWlVql=&3_zgKsZcpijre=&rAmG2PZacUgcV=&E_eLn8YphcjhU=&eztGjZYgpcsrr=&T2nGOfZorralh=&pDPV8HVVWYjso=&9pGW9vZibcZk_=&y2OoUSYV_osVa=&4GHjChZsforko=&VEDoKIZbYcsar=&rA5oWDYhfXrXW=&oNXBYdXpaWsjs=&u5sYf9Zrmjrnd=&Wr9zyzZorVfXb=&gzqvPgXkYspsY=&czPhevXojeqql=&9ZFaTvZrocXs_=&zW9rZYVqXpmrg=&KxszuSXUZdXje=&NPztreZaabnhk=&kCaDIkUjc___h=&mZsDZiUalffnU=&Qq9bm9ZYXXldf=&5bdfPdZargVWZ=&Nmu5pTVfsVjfl=&RAasJ7UnWbldd=&dJ8dxNVdkhV_V=&wTGRjmVafVndV=&fhQTInWceVjqh=&2ZOHN2WYfZhcp=&zuisyfVpkVdfs=&sxRy_LUadfUXd=&6K4QpRWqsWfkq=&vU3n87YkagYeW=&ZgSrxVWZYZlfb=&OCUItyYYUYpid=&nTOJzEXUZVqcq=&XRYGJxVgedlbV=&kyKGOKYiboXch=&4Lm2aiZqgpZ_d=&GppCLjZrcggoX=&n6jkeLXYijob_=&7kaH4aXnnYmlb=&l87LvZZilVs_d=&edBixmWWm_fUV=&rGeIQjZjaXigq=&wLwLwvZgiVaea=&lUHmhcVnnXmYq=&tLH3ptYpfhcsj=&QAE_BiXrUgiYg=&odfqnzZXrWVZm=&uJq_2oVZciipk=&qBiLTcZilZhqc=&XAj6tEWhnnejV=&tPnu7vUVbkdpr=&BzNGz5VsdilYU=&GTcJcFZsrsUcY=&FYgQM_WrnelfU=&Io4ZdsXoVYaZh=&DYux4oUdglbZY=&m3n_6KWVh_gqf=&d9Ts4RYlgmeYY=&Kor8pFXUinf_U=&IfDBsDZVhobcj=&hvNUeFUYhsclh=&EHjKmoYpbdVUX=&hhmJjoVooWmbr=&yxkXzBYZd_bgo=&covuiBVrpWnZm=&LPHhSrUqdkXqY=&bznIpJViqpWjl=&HjtF2CUnrVUjq=&jZmH6EUViWZen=&6owsgJWlgqVWr=&gcEvjuVdgfgia=&xfz6aMU_lYUZl=&m4fswZVXaibmf=&9J8JRBZY_pVrY=&pYRM35WsUW_lk=&P87fYoXdbjZfg=&gCL6fLZqshjqY=&ufp_sCUqkjVkZ=&cbbBjEVbnfcdY=&P2jA5MUrZgcas=&xSMAkrWcsZYoY=&jJ4IcuUkblaWW=&l4T58XUbpbrjZ=&EC9oGOVbqZlih=&72TDamYgjWnsq=&tEH_vNZjmmhhj=&Bgix7zVflXYUi=&99EXdFWqjarjX=&zpWzPIYWjfZUa=&x_i_tEVaXiZdn=&NPGcGoYXVberX=&ysljy_U_Vchls=&FYqlOhZqZYr_d=&Tt2GhYYc_dnqr=&SrzmlQXappcYp=&jIjlebYcnbpag=&ecXzTsYYrlXni=&K9XMnfWbemkVs=&eTUj6zYYjarX_=&9eygl_YgUceca=&qjyZIjYVZjkZq=&9ZkslUUYUXlfm=&Kcqbj7ZWebWqd=&fD3UwqZrWjqcq=&_7TMr3XWZiUin=&xYvG9qUgmnjVc=&MIUPeKVUdeies=&JJxpnVVrsepia=&inGIFGVsfkpfZ=&RkPBIWUjjbbjh=&HZ7ncGYiUjbYc=&kXv3IQZZg_Uap=&Gd35SZYZsoUmU=&Si_IHNZ_VqZbh=&Db5iRGZrUlljn=&8_7sU8UjWkiee=&IwkhlxWhaYcsj=&WtMWiSYpjVmWX=&tUbSZqZVZeqUn=&jDBXMAXcabVVj=&HRxtRJVbmdjXi=&eGZiGpWcUXaWY=&B2XAvTVWXercp=&MLhGANVaeYmsj=&IpxBC8ZiaVgkh=&MKc3MxVfVqUpY=&CaS4xBVh_Vmfe=&RckMKBWiZbjpd=&WGwb4OXike_so=&KiiGUEXk_r_an=&SDEAalVe_kjsV=&L7akeMZcWhlsX=&h8sdLqUblViq_=&W7zSO3Wfn_sos=&nFRinUZirfbqb=&SYNC8EUeqcqdW=&hMgetcYnsc_hZ=&dj7WtWUUZhrdc=&ZMNDNhZXUnhkW=&v8yFrlUsqkVns=&lPCf4AYsebWXf=&cCytYkWlX_ijd=&cR8mY3VfkhoVl=&DO5a_zZoZfoa_=&BgzsVCWlokngo=&FMpxdcWmmpdeb=&d2UhSZYa_qieX=&FyWySNVUbj_Xj=&6CKfpGY_YYfqj=&4FcPukUrkVqio=&PmusiyViUqmho=&JBzGObX_qaesW=&QGEg8hZmdhkiW=&2A4gRzXmholqe=&geygm2Xkdmsk_=&t5P6neWWiZnWr=&ep4KUHUgpiiVg=&epY3dzWflXgir=&lqkLc2WZcoqZg=&75tlmrZ_WrmW_=&hOu3VVZgrelbU=&jfuXHZXmclWcU=&n2or8TYnsoimr=&Ih7pifXXlYrnX=&bKzOiFXejbWad=&BrEWysUZjUcgj=&zYdOLeYi_mgrf=&VwLNwBXqoijar=&qWY6ynYgUsjma=&uTPacDVbdaYni=&EUvxqMZjlUkXn=&EcMokxVVlVlfk=&UuBLDVYghhrgY=&g_ek22Yedjjff=&uvULPCXraYcsg=&6kgGw5Zsl_Y__=&CAK2NcXnrohXW=&P72NAUYqUUiZZ=&Ii_VIoZV_YYnb=&MnFmsUYlcXZeW=&XCirxeWcgkWZn=&oMoit9ZWhndbX=&92C2FHXpcaYXY=&36_WhxWckaYkY=&_PU3dEYbbrbkl=&DRy8vuVqsabfs=&pgeIVHYkkicdX=&7z8BZwYkgnVgn=&g49wbIZsbUjq_=&XdSDL6Xjkdnpn=&ifNcHHUslhbbf=&zb4mqAZhXk_kX=&C5ds4dVYsmUXk=&WZR9OHZUWfblq=&3Rw89lVocciro=&XEt5mlXnnrbYX=&RJh5IDVaproqi=&rvFFtkYkqao_g=&dWROGMXUccpif=&bQdyz4Xdr_dWd=&_lpuudYipkgXW=&Gr6zxnVdsYYga=&u6924AYZdclod=&RzDML5Zs_hbdX=&L8PnVvZioshgV=&8R9ZnvWoUYjap=&Gu_sRPVYlYhXZ=&J5EkWcWdf_Vdk=&gJjiaRVl_hqsn=&mNPwCsVqnhghh=&3IC5fYVsXphln=&i24KuBUmfpZ_n=&cyFnMFVbaqXnc=&KBjHaDYZYoelp=&MlszkAVVXjjlj=&ZAhxssXlmZmns=&4_UOShWZqVXdh=&nFMOp6VdnkUXh=&eRTUCAUioZ_rX=&m9Z8FsWpW_cap=&PME8AiUopWfr_=&3UA4UcYgpVYme=&vsx39hXmZWUki=&O7ECSSXlhdmeh=&3GKGbBVaZfp_p=&YPHEXCXYpcqVr=&yt3U6jWl_hhcd=&8jWg4WZkbYbdi=&EojpIPYhrZmid=&b5rMF7VdkZnhp=&xgPMkOYbmfnXV=&EyLxdsXWVbVfd=&E3GI_eU_lhidq=&QFUddUUVcnnUb=&VUdSTLVegfsgb=&x_iOCqUaVgUif=&9dG79VZWiZgUn=&8WEkFmZXVneja=&lO_BxIWakUbeh=&WPTBk_Yssqoig=&qwj7LIZpsknYc=&ME2UCQUnpdeWb=&vPVujMZniqaWh=&Ab84JVVqmelXb=&Rjwyt2UfiegUm=&JTWobUWraiqWX=&w5X3v2YaWiqUm=&qeegmBWoranca=&VnyiYNXYjegYe=&HbxKIOUgnYVma=&2DfG4EYsggmal=&QuDRH9Zssflol=&8PfORaXb_lZdk=&AgmBwQUYbbbXi=&vr8F_tUXpeshf=&QgG49mUhdiqph=&bOBBgWYXUcrZl=&TDGPiRXsgkjgX=&5dZoHRZqkpmri=&SYcZm5XhZabma=&gFd6iMZUYlqUa=&SgBrliUcfUbZp=&JTJun9YYdodkl=&4vVYwnVjpensd=&empxv2ZlqrrZa=&9UEnkPXZi_Ylo=&lsX3XnVfWsX_e=&BBfZVtVabkres=&NvusROVbdkcWd=&RdcubAUaodada=&vD7d7BXrmZiYW=&dZq_jMYihUkZm=&bMxpnvYjiaYXm=&EjnqFOYjosXdl=&G4tjgWWkcnYgZ=&pSOUDNYbYZWYY=&yVedqCXeg_qso=&Ay5cSLWZZqaYk=&EOTqMVUVinXsk=&n4nibUVnnUgio=&8iNVk6Znprobg=&Xq86DbVVbVmZp=&6ePilWYcooUdf=&bkScJiZarYlcW=&oMecAJZrmfkZ_=&TpH6snWme_oaa=&v8ddxtZZko_pm=&MuDHI2XkfVmkp=&TvdEF7Zjkidnf=&DEMCJ5Vhkphgr=&y933arXWacUYp=&WkYaRHWhhmdki=&yKvXKDVXWqVUb=&TAlNYnZoZggYr=&3wme2vZeadXeU=&r2HpcnVsdljqY=&Kk4d_QUsVXagb=&Mh7HQJVjdWbim=&B3t9ewZkcnXoU=&wXwfgGVfkdlah=&KM37cHYhsqlek=&34oKMrXn_mmbU=&CK_3zPZcol_Yl=&IOhi3AYZpjlhf=&_PviiAYcYqgWh=&mFrEEMYVjlhjo=&Hsra5ZZrgorfm=&MjZxkvZpehskq=&RNxB6bVaoU_ZX=&NdvPMCWUsdsc_=&iL9WhHUfj_mbV=&wWYSH4WpkYqWm=&_oB8EJZlbWnom=&7qxUULZskrgef=&2cxUDvZbWjjYd=&8UFttDYepZWfZ=&yU3qlpZZmpZpq=&u57_pVYWgkrme=&Zvply4U_pslYg=&2fjVmwZZVmfVk=&VQ9pdDXiUdqlg=&62fJTPYlmUjX_=&Ry2qBIZXjfZel=&a_GCclVXflhYV=&s3PhKnVgalrih=&jnt2k8YajdXqd=&Lt2DFtYkYVYbZ=&IYi8daVnhdcoV=&_49i7lXhiWsVU=&N9TcR2Vknkghg=&vhsAe8XZYanpY=&rlzwyBYqopbUf=&ZbTLkOXYWjXqk=&49OLORUqiVrsi=&KXEXsjWrV_Wfd=&IAuWceWaWiree=&MPzQU6VeVojqd=&vJ6LVhXhZbar_=&brFFBbWsfalVk=&L3HbilW_UbbUf=&HNsedHYsWbpoZ=&A_7IIRVYUl_q_=&sjEPNdVbcWeZg=&jpNChJUmf_lea=&EOzDS3WmkgVWa=&BcbLCLVVopakY=&oDtVNwVqXZWkk=&GACIHDXsorjhr=&7ujYk7ZqdbsaV=&9fs4vPVmZdjib=&yVnpAQUmhnccg=&GvYZklXbrpWgc=&3EawAHWVshfWn=&9N2zHxWcYUmUW=&Anl_rCVciliWi=&KYxaFwUfVrVZs=&YGypGkUUpnshV=&BXEeoeYdpacsr=&bYWL3XWbXpZWk=&LDWKvpZVVicZf=&SN_nRrZnlcaWe=&snKF8LXbakfgY=&dAAje5XkhYdaq=&jaaU7sUhcbVZW=&Qxx6LzYdoUnUe=&DJBU2FVsimsla=&jIvrcLVcqUqom=&ykDBn5Zg_csXg=&afTNIkWVsmZhb=&4kBWzEZbebrqU=&OWXHeyZfaVnVo=&pEjgOkVec_nrW=&2SSQiBWraiUmm=&KoO5RqXkepki_=&8CQDjzXjokr_c=&WahLg5XbViWea=&8GBcqSWjpphkb=&nEWuocWngXUbX=&LkrVoDWmcWgaV=&HntDsfUeqqqsU=&WEki2LWaVZYZo=&OQ2MA3YbYkfZX=&tnKzVtWigfgXc=&KTGWBLU_hZkjX=&XiW4xpWggiXYs=&QrKSyNVrfag_g=&7e4MioYneremq=&UOTB9XXdoYbaV=&mEN8VzZ_nalbn=&9tNqn2ZYjmjma=&gODsm8Vmipfrf=&G5sQwaXXrkjVU=&6w24qNUmiWZek=&tyLVm9WrkVVqV=&Wu6jKYUnZjkVn=&85pGD3Ueoklnk=&LkVvdSWrcrjgo=&QLmblxYffcgha=&lf4VSiUo_epnj=&RAid2LUssrWfj=&wwc9qQZafhVil=&FqQG5dUcsiWWn=&uayIZQY_onbeU=&daBQc8UXilhha=&ewYdnzXkkligU=&eI8xyxXacea_f=&ribzyQZameqp_=&CtBklRXUpphgV=&bFYmr5ZcsgfiU=&Yxiaj4Zmsnjlk=&yOiKiCUdg_c_o=&qg_5yCVnoalYg=&G2Md_8VZhhWVX=&W3XRKaUYnoZeV=&DqDFSFV_ecVYf=&N5j_2IXaYspXX=&sxIYUEW_phcZV=&ptkZYYZssgUbg=&XuAGZwVnbVsbU=&eEQ_ROVlepqpe=&aLrWJeUYUmfVq=&ItdQ5CYpolbXj=&3J_bQOVmkhWbq=&5hS9jtZpfXXUb=&ymiRNgWineYoo=&hlCGewUsnkWkc=&8MIVxAYibUkhe=&RGI3icZo_efYa=&7ZGx76VgncmrX=&QyVgnsU_Yghhp=&zpYebSVYiUdUm=&UNAYpAVhg_cgj=&EaqLwWUoqrrmg=&Ti2EhrYqecXWa=&auBrhKZbbYVis=&9zLLPXVddgrfh=&JIsVDVW_Uqodg=&JP3Xt6Xkb_Ymk=&XaO7ogWWpVikk=&TKltPXXmoWgja=&wDXKvVYfsWalV=&JjwOoiVXYWUYp=&7MYfvnVVnljXa=&TGNn6nVUhkbbg=&c9YF_hZagbdko=&8HJ3tQXiYZXU_=&hlSUsIUcicjUi=&GBDvPjVWUVdji=&vwsjUSVpdfl__=&Co4u5zYnrXXds=&rmHPdnWpVWXhq=&bbzqEZVgeUpWn=&CJ4ed3Yj_eisb=&TYv2juXabbpba=&HPnJvVWgVsflq=&N3sYUEWqiUsYa=&OtTDUgYmmWWiq=&CN_XLyXfsjZrh=&UJAAWWYakjerc=&pJt9y4VYjslaU=&qAxIp6VoeWojg=&48JiLGXZfipXe=&7sXiz4YqYijhg=&o6xxgSUnqaVss=&zrz8WOYbqWhhW=&I6eV4UXojrqpW=&gnVWd3YdhYhjo=&tvsx3uXrpmbbZ=&Ab5w3QWjncajl=&7i_Ka9VfZdhsU=&7jaLm9VWembal=&uPv7vmXhqWYfp=&ZSNOGoWoeZcjp=&pdZQ3hZakbgn_=&_LwNJeWlfcdls=&5CZrWGUhcphjr=&BkaRxcXppqWqr=&EvCGF9XUssndU=&n62Wb_VhXfseV=&jw28ulVsbgYYf=&RHO79kWVpnfcd=&psRRDUZrd_jZq=&VDmds4Ula_sUW=&ZlXzRgYZneb_X=&HRFlumWhUfrdV=&zN2m5IWW_efZW=&QuE2mXZkofsmX=&nEqJjgXkWggor=&Fb6LBiYclniWm=&25GsqNWhdcZso=&O2SX8mYVUVaXl=&ApGBc2UXbnpqc=&O3U5FNWcalkXj=&hS4MGWVe_plln=&dvGjAQZjcolap=&tmVO8gYZonnkX=&AglrFoYqUaZib=&nt5__LWgpgmZk=&QoOdWWYllifpg=&s3isdXXgVdjhs=&2XqSxGVoofqeU=&giOKkQVn_moXm=&tdOoNCWgjjshd=&SSaHb7YUWXYWq=&FJPxiKUgdbhUe=&apM3ghXpiXbUj=&CVkFvyVmjrUnc=&TjQI_pZhgVlmW=&g2uxw5Vqjphdc=&kCr6ZxWaXglbc=&3DmqQmYc_cokU=&aD3o6mVihrhch=&nVfHBiYbijdWh=&BXmgmaWhYXfai=&aHkxkiYmpsZV_=&vA_lcTZqaibii=&C539CoYeYdWqo=&qsfF4VYkipmWa=&UmetFkYlmf_na=&IK8JQaZbmifea=&axSzLkXgbos__=&PObAPiYkdXlhs=&FDYNXnXniipmV=&MsfNOHYdZodro=&vOGZ8JY_pXZbn=&ZsXm7ZYjrfWrk=&xnmnCfZkmWiag=&ABFpzQUqlihmZ=&WQTPEcUY_oUbo=&AuGPcqYgaXqrk=&_zsmgAXglU_np=&_mjB4kY_iXWsh=&LUECO_Ufkfgka=&uV55GyXWgqdYk=&en65YqZYaiXoX=&UyeK7PVpnlfXg=&aQYcjeWWpjqYq=&9WdgSfZqVYjsq=&NzhlfQYr_smeZ=&QIT3jwYmZsoZV=&BXgM_YUr_YpbY=&rQCd7LZahX_kr=&MSrTz7Zjnf_hp=&V2hjHpWXfejYo=&2R9n5jYkWqgoX=&cEm59IYeXfl_a=&4x9b_XVqlZYjZ=&3LPsMaXsqjhcY=&rojIQbVdlqUZ_=&w8e8j7Vrpelff=&kg8GmoWlkZgdh=&Vy_uKxZXgsVWk=&tldbpsVer_oss=&ZUIXtEYUdmhWi=&mbcaGEUbbllcY=&aHbx2HXVgUVVY=&_pjSlpZbbnisV=&ECZwqcYskjfWq=&fiUW8IZfgimfW=&LwgkbTWri_kkl=&jdqi9QVaVmXZh=&AshJOFWmUcVdW=&6TZkfkZZkcqsh=&UAw42IVaeXVln=&suWx38Xrndo_b=&nekR_iZqWidip=&sCw7CjZkUqcZU=&ZgDkJuYbXrnes=&tNwCVWZipamUi=&ranrobYaVlgVm=&_dD88xZqUpfml=&Dd8mdNVhpglaW=&pBZPgaXrjXZZd=&lGtOPLZZ_bbdq=&PLFKFhUVUnUVX=&3wOkAIWXkZXic=&ayA94LX_WaYsm=&8YyQJtVrbWsid=&pNM3XbYjrsZXX=&rv8NKZUhneios=&yshw39Ygcln_q=&TELjkJZheWlfb=&k4exlaWXVYkrV=&2EeFwTXXnVknV=&AM4LXFYVlr_sc=&yjo8FJVlgaUsf=&fa856xXn_fdYf=&5WqHvAXbfjj_a=&Mxg8iiXgV_ihm=&TDfAhNVdcqdgj=&oDnt8SWqqgo_p=&IfNmJaZjWigiq=&Q3uCtzUonabid=&33Lw76V_fpcUi=&kep_8wWr_jajq=&WapMdyVZhqkme=&vsJd8KUggiohq=&DisufmWb_hWZ_=&rul8g3WeVl_hb=&E6Zr9uVfbYdqs=&wZGINgVjboXkl=&P_rAy6Uimbemf=&o2MQJ9YZhpUgk=&47w9qeXc_pngh=&NPLKy7Wqpkk_b=&95tQ87XWnapfZ=&JavHI8XYialnm=&c7vYK7XXrqocp=&HbVMQtVijgUfo=&FE7bY5UUZgm__=&XZLTdxZlWqsrc=&XtzgS2XkjkZZV=&wjSCxRXqjWfUl=&zhUdEYZbUgfhg=&9skhNqXmnV_cU=&nkhOhLZnbeigW=&HfHRjmYhfflrZ=&4I6xlTXZbhqjZ=&LombuDWXkmirm=&2DxHHnVpVZbXV=&6fLsckXld_WYj=&6qkHQqWXnjgbj=&6vkrlXXcgXsXn=&qZO5ECUqo_YUo=&vbK6hNYdjba_X=&j3d8udWsneXgh=&d69pcbYdWUjhi=&mK9RP2YqsVpig=&2JyGNPV_hlgZb=&h28AWMZqclmi_=&4hhQWYYmsVffp=&tB_O4mXpnplqp=&RJg9xQWkZomaZ=&ZUeDefYcshkpY=&q4rYEMWlWqiZl=&og2Rz7UYnWiob=&J_iEM6XVcbiYa=&F9lF9pYXYlmjm=&RufVVkVenjoqo=&pmtTs3Vc_np_b=&t7pqUkWbd_k_n=&WG7tIqYWqXapc=&Dmkb6oZgYdkqq=&6aYov5UbgjXse=&NIZQ4TZedoUXe=&cYfWx3VqqXrgs=&FjjszIXldZmVi=&d8XMIjZWYpVqs=&LNLvDHVbZjYlY=&xHTGH_YsZZrok=&8WLdB8W_lejge=&fSJJEiZ_XYkY_=&cvXz_rUqVVrZf=&e57ybWXXcoaeq=&tTCqcFXbcsbgj=&cTbT2eYmloYcq=&i4lBgbVZlVeYX=&wwnjmoZ_jbdUf=&GNB4aFXjlfXfr=&cIZkgVWUlYUrh=&xxu8pdWcckegg=&eWvqZ6XWiYjbj=&jgAsVTWjnWXnY=&A_zkPNVpdXgcq=&5KDHmhXVhhrd_=&cXxe5oZXmampk=&shqwTQXmjqYj_=&ARccjqWfibZdd=&SJ5m6SWbcfq_b=&NGKe9zWfWmXfa=&L7Xvu2WjYh_kn=&6bazHXVjgUjsZ=&r9fBk6Xfee_aX=&w7c39NWUeXWkd=&BnjywMXknUV_n=&XJgtYXXmilqXW=&lD_wMLYfXUXkf=&jCKNSgUlpfqbh=&jJ2e5wWVhkUc_=&UL8iNDYVlphgX=&ZsDhuhXnWWVis=&ruaMEWYiajWnk=&peUdZXXkfWZbh=&GMxiYSZijUXr_=&httF94UbhhdWs=&MMsKsYXUdgZhf=&vCuPlqUdoasZo=&d_o5hIYVeY_cq=&QTT3R6Ydroisr=&9pyGaXVldZsjY=&ifmVhqVscpbWh=&qGuEWlVgnZkip=&8D52drYbmdbap=&SpaHwbViibfcr=&HWhEKdXqYmZse=&Ue6VXTUcdnmbs=&6uu5NEZqlhm_U=&jtF4qxUhldqcV=&Gp4kjtWegWkqh=&rOtOK_WVhseal=&sz6EXbZXcZqnl=&ZBhQgKUjmYUd_=&Cegh9jZpnc_lf=&t2ZOPHYmlZUqc=&Nb5PlBXfcpfdX=&pY7TtzYmpVdgc=&RTEjieYXbcjna=&tixvMEXVaohgp=&WvPh_kUZehpbW=&oXOCWjWbpkffp=&Job9DiUq_Yqgg=&Mus_bcUghpVsf=&kCvgz5ZYe_hap=&iT_CdCZoUcsXp=&6FSz7TXpf_fsl=&jbhBKoZmoZXka=&ZSNlguYg_l_ZU=&I5MjDVUYadnlZ=&IrEWHiYgsibWo=&cYaVEeWcfZrfY=&7UpahVVVrZoYi=&e7csGPZm_hYoW=&lfJyaLXXXiahf=&VBeHYGYedYZjh=&td8ZcSVbpbrW_=&9sLlKkZigkpcZ=&pZc_faUhXdsdk=&Z7TClrXgrebUa=&GezMvTXpfhXbm=&TumTxgVWgkkkV=&Zn3bvqVeognUf=&btXzdfZfo_s_X=&JHxGhKWfadndr=&nBqYGsYfmhafo=&kOLIIBYZ_XbnZ=&KkOMDeYirhoeU=&fPSFDLUfsjhlk=&oJJ_g7WhgdmVq=&97nOe6Vesrgrc=&hBppviYoqsfoh=&2GYQSsVhnfoce=&QhfJdYVaZfeie=&bkycbZZnklWgj=&cAGeElUrqdslf=&U4qL_hXVVVbZs=&iicUQ8WhWWagj=&r4eeUkVcnidWm=&SBF4blXUUrWhl=&p8BIRcUeZZpVp=&DlG2glXjho_gs=&JcyDDkYZhe_fj=&rLqTbkVbinemY=&8ITuYmUseZaas=&RD3jLsYbZbYqs=&zJXmIzYlZrmao=&L2AfBdWplZprp=&gm88zZWVfZeiW=&LPMxQFYsUhbdm=&m8zx79ZhdeXpl=&8wZ88MXWjWXhh=&kh_sp_XUsgWma=&ZITpPiUhraY_f=&FZKlE9Ul_emsf=&M8w8vlWrjqcje=&S2qf_XVXojeWV=&a4nYOHUZjXlog=&d_6dBjXiescgn=&iKNjtnWXWXoin=&DM5MXXUseUUXl=&Rxq5lBVVbif_Z=&AsIacuYoYUrka=&mggxwcX_lrhbX=&ZaXPrKUdahajq=&g57QTXXYnpomg=&Ll9fEmUflscae=&Qs4MLsWelhpWm=&iz2iTOVmsjWma=&CyQexbUZYqlji=&sSI54YYgZdrVg=&O9SxFDWs_oggs=&92vgPrXejcZse=&h6NZhTXjklqmo=&d6EiCxZsVrWbe=&ypdjEFZZkblbe=&OmjeYmZhmcnhe=&DraeUzWgqnlWi=&LTN_ybXYorUjU=&HFyONKVb_ihaZ=&zkYKONVXkVfor=&l2hfT6Vi_Uehl=&MfmsxRZdcplrp=&9anvBlZnYsVWc=&Ncc_QYYfcncks=&IE73V8WmaXdgd=&LjReyIUafacih=&FqZov9WakaVho=&mzfpxDVhboncq=&3GbUcCWkrihcg=&noQP8sW_UqrrY=&jVaueIVfnfWXg=&9SxKJGVVmdjZk=&XfKYjsUqhXb_h=&gg63gnWWWUfqg=&_Vcdd2WhloYVq=&nzYTAoUbehkYm=&3eGT_cXZYhdis=&LJOPo7YcmmWcW=&4TdhgoXlosgmd=&Sc29rpWpr_bcV=&dDct7yVsmkcZ_=&joenRRV_rWcna=&SPRdgaYlgoada=&MTiKcFZnogafW=&jr7pBPZaVZolq=&tPIWoUZaXkhWs=&tvoAydYlofWkW=&_ClTmYUekmoXm=&bCNVIgUXoYfYa=&dV_MxHXYemnch=&NuQGtnYlYWbkk=&HF2iuEXVVfoom=&v_MzGfVid__fd=&8yysHrYjUYkgp=&Zh896NYlj_dns=&xyr5ujXiebpWh=&z4zZ4wVnjroem=&K2FIUPVrrmnjr=&gtdwXxYrdWWcr=&Yi9WTQUajoZjf=&8YF_MLZmqkqkZ=&FMQRIIZXjgn_n=&lZiMWnYhUafZr=&Sr7QAbVqoeXWd=&VP5_UcWYWYWVo=&SlwId2UrcfWea=&aYqVDrVmmaqXW=&MarBTJVXr_agi=&7nFAFQUkpbkbV=&5srgw5YnaYibq=&gy4bK9Ycbhr_e=&aonOPlWssoUqY=&meINJTWWZsqqZ=&QuWt2oWmYsoWp=&Wk4B9pY_VkjUY=&GrW_3WZkVVZiq=&lMyez3XpsUbia=&NxdSngXajUpsc=&8O856bUfZlYlp=&8lhCxdYdaoqsp=&aVrLBrWnZsqme=&jgqwZuZaehghc=&9b3Bk2Y_blcdj=&KIM_IvUpXnjXV=&VBg7V5UZenfXU=&8xzZOnYWUq_pd=&QIT2unVWdXiaV=&DKwvGiXaWmose=&hPwzkVZWohgfe=&MR82gSYsaUbYj=&izyZ6DVXhpZeo=&vV7ACaZfVeiaU=&xce8uWXsqfjWW=&KmIfHfXrggprs=&weVxXtVnlnehc=&uzSJl8UWXq_rp=&AjjjYBYkboejp=&2jQlrzVoWadcW=&cmlDf6XYVhXcj=&B4emS3V_ZdZhU=&pfSTcQXoqXnhW=&i3f_pzUjVeWpd=&2x6MwXZeoidWp=&vpPGHqXbjnlbX=&LPAjfWVcjplhg=&s2kMahZaVWnmi=&NHn3BqVaooZoh=&w6fCL5WmYoUZp=&4vZaBpV_dUmsq=&3mr4keUommrqi=&S4Vm5yZcgiZpW=&tzRQ8vXprbXkX=&EOeZZEWYWXlgb=&UsD47sWcjVkn_=&FLGSKfUXfpWnk=&2qHClfZaqbhqo=&yoDH8NWYWVqqk=&Q7nKq5VXnodkk=&kTgam4YegZpl_=&haTM4tWdsbfhj=&9mIhESUgrqYZm=&283SBwZnnWcgV=&tFVvrkWrXYiaY=&z2FBn4ZjqrUaq=&r_PPm8ZYYpbkq=&dxO8ndVrdXeXp=&AwtBB6ZcbbY_a=&5zYsTIUYe_bpZ=&_bBHC4VqiUokW=&tpWeWwXiWaqsa=&Ln3E9CUYhosXh=&SqwfcgWYpigcb=&uOGH_mVVgaYUY=&LA8WCIZZpqWXV=&Qoytf5VqkmXrY=&NrewaBWaU_qaU=&teLOndYZjZapd=&T5EHDNZbikqjk=&xCpmNIUae_srb=&AskFy5Zpnboec=&mPeTZbUdXcjcg=&8pILnfVXigenV=&H7WVNOZpmhjiY=&JQNmTOVooUckb=&zwHOZhYrUqlUj=&Zjmq3VZfoobgb=&EOU9YrWj_Vrkd=&YS5StsWjqfohr=&u2fe8LVlglpsh=&xVaElYWgoekfj=&6BPhaDUVosgZY=&KIu8coYbWsimp=&xxW2tIVfcaZa_=&8qRxFHVesahbr=&bueI2NUWbscda=&MUgKuEVeqjiaV=&HWhqK3Xagrcgr=&8su_B5XmpiYrY=&OQRO3KXjfmens=&LgTQL8ZXdYmos=&dTGEijZmYWcri=&jFwI9UWrlmWir=&kSjybuVe_nYfo=&oz48oiZleemai=&r7HnioVaXjsUj=&pYGvOuXaVqsnW=&bgSCmEUepslXf=&KmBShUVogsldW=&_Tu4WkVhrfqUl=&UskMirWUqYohb=&gBav8LWrqXgkd=&arpdZqWcUicYl=&5TAvOBYojoil_=&ZiVUaiYdVUWjm=&L3pxOxVsima_q=&GEXLtwWZgholp=&Y_My9BUYqloUZ=&gayN5AUbrsWYe=&YoYhFGVYdkZgW=&nV89QUWUVnmfV=&k_4nXXWUkjkYs=&wXZWRaUfhognf=&jVURUSYaorXcW=&A3tXXFYfoZYZW=&UpxPwLVqfarY_=&5ifh6xXmVhplU=&HLbZBnXgec_o_=&JnJJluYbqcrcs=&Ae8ilDViodrgd=&vNhHFiVWjrkbU=&ehdcfqZYhpVia=&v2m6IcUYlfsUY=&mQ3KcBWcn_scb=&ysDBejXUZrdW_=&AyaQoIZUXWkjU=&4fl3YMZYmWWf_=&ia9zCaVmraarh=&yqqsXBWcibnXm=&tmj8FIVZqZmqU=&Cxdbj8UYYb_Zc=&AJnVczUpYokem=&NUnOzcWWergfW=&qCsk65XmjrodU=&7MZUHJUeaXboa=&rPRezbXfh_WVW=&9TjTSNX_dhfrq=&a5DapqZWoUhdk=&RSWZRXV_ZXd_f=&HGswzEWgdibql=&gAz72nY_lihnV=&syKr7pVlcZnml=&6te38rYgibpkb=&VpifCEUlUcWqr=&XYixF9Yee_XWb=&ZuXYd7Uignm_V=&947ggbW_iihmm=&Zny8JOYiiahcU=&Ir7x85Yjrdfsq=&pv42PIZVdneUm=&BEJ_89UYbWhVZ=&pC37yBW_YjVjg=&HqFtR8XhlhZoX=&7LjBsiW_XfYmg=&pjUebxZWYYZYV=&gw7CgDZdqnZWW=&AgEtK9XphZegi=&RXdQDeYljq_nW=&oSx2ARWcpmmin=&_nyJugW_sXsjp=&9XUUN9VZsnlXo=&9QfmJYYnqiloX=&hDnYeyVsfUXhq=&kHBaHdXkarqhm=&IuNh_WVparhWr=&jpukaaUYnfsgf=&oW2fqhXihWrje=&nzsmA8WWdkkre=&BwZHLzVUb_qnd=&vzkrjsUnjao_n=&I3aAHtUbjUcUZ=&zXuEhtVifsVmk=&ImIrQoVllsile=&7L_J5BYkmYic_=&vEPxxMZXVdlgm=&XjF3HAZqXqllb=&Wdko6kYfWsYfV=&GMBi5wXsVhgUd=&2w_Ee3Vr_pgoh=&gPcB8uUVopXmV=&NmPzwYYcVZrqr=&y_YhiHVXVXVc_=&N3x8qeYljpahs=&UuYT3dUdjep__=&jRVsefYliiqik=&chiMuvVbcbXri=&CE7RDXUXilhcl=&qC2c7JZbchdha=&TpUB2jYVXaaVV=&_hotEEUUZfnms=&TtZGdyYmaliUg=&3vjxAmXhjko_X=&oZfVcpWjUWXnm=&GGhudlX_iVcff=&usEHl3Vcj_mkb=&icbCMkUdXWfsn=&2UyNSXUglsprr=&YUsTdgXUZVkbj=&p4EIoIVYhfXch=&JRNCFfZoalYqo=&5CYrr8ZhXdclj=&Au6qFOYeodbgX=&okcXSgXohedjY=&ItoqjrVdifhUg=&R8ZBZhZagZabq=&PD_Ev4XeqsrgV=&7OPhyTVbhlYok=&gLy3SaZc_pVVa=&2D2WSkXVqaZXU=&xOJs8fZZrbfUg=&5rPxvVXkWZXqn=&89sbhCUjUlVoj=&MOjFSRYfbfpog=&VBTbS6VpUngUX=&73rI4eYpfWeij=&qzIVJFUfeqleb=&IO4NqIXcsWgrl=&dZMaHhXeajigX=&3xVmD2UXenhjr=&tfcgEQUVihVio=&5vC2_mYmrpVbV=&t_mvbJZdcVjhq=&spcxKPVjhgWr_=&ZaBaXFXjeVdjW=&7Ks3vRUpmpoqj=&LRVNhPWWlbdcU=&K_XlY6WUsdpdb=&ROCYpXWqqhmf_=&LhYWe7VeqaUbr=&9mE4nuWfjbWXl=&f_7xu3UVWhcab=&FehYXIWonmllr=&Yn2gt_WeeajiX=&a7kkSLWmc_Wfj=&pzIp39YVYronf=&YbWVpyVjrbgmU=&CPPGEbUVsemYZ=&MwcGQYUo_bYVj=&aTH5CeXbqlWpZ=&BENFyyYfdmVaV=&ZpE7UIZhrbmfm=&YoKlnhUUk_ogW=&PFNxPoYiZcnsW=&jklLtCZiZnafr=&tnYKXOUerilph=&PAPVSZZjcflpo=&AfxQQ4Ughgqgb=&xnUSB9XhZWXlf=&yv4xc5YjohnV_=&UjdoQbXbakkma=&kW4VSjZforVph=&w84DBFWgXrlan=&zpH6YUVn_gnkW=&Y5rCsuYqkkdXU=&Aj54qfXsbsWnZ=&aiK_6wW_fXaUe=&qMxl2jWWnfnfr=&F9vBKoYUaVjsW=&4mNcGTUagXjdl=&BPg6GLWjniZWg=&rTTbClZaUVZWX=&jSRmhSYkmhaaV=&HKlrhTWpgmaer=&8dEzJQVqYrYli=&k5pCEkUegUird=&UuyNuMVfqsask=&tHPo94ZWWhYol=&VlCbSTYVmoomm=&PAFqqKYeqshnd=&6IfiHwYVeghka=&E4UUJCVsWkXd_=&CHbROHZVsnYbh=&fc7WwgUfkpcke=&n8UwE6XrZjqUe=&NXua_cXediimj=&FghTcpUeVerUV=&nRwzT3Ycmlnmh=&Es9ZSdWVjZidd=&ZrQFYgVfboemZ=&ykK3sUWdfbsjV=&YVsVGwYlqUcqo=&kpWd2TXdkbcgU=&6rlH4PUWWUfZb=&q2vtIqWrkngbZ=&WGNsAtYVpXsnb=&hwv3beVhogqgi=&vGuGEMXkaomf_=&qoRDRkXg_qaVY=&9_upvTWgfnrYX=&PaeH2cXsXgkqo=&mPBeTSXoeenW_=&uORSI8WlhlplY=&3XoZcaWicmUjY=&2mhRG6VWYVpkg=&fexuC3YWdZmWd=&JELvunXVbaZWr=&pKq8ULYqmbZqW=&SKppsgYXedVVd=&LZZyWRYZsnakh=&RhjSa2YojUijl=&YjBBr_Xpdjplr=&Zhfu2bZjdgbph=&S9hHlWXjWjign=&9zduTQXhi_nrs=&pXNGkIUjqoXsg=&U8DE9gXksllbn=&Oq388DXdibelY=&5IKCFmYgbsUsj=&MU7wGcXcmkbmr=&rbAX4kVnoUodk=&I_DtApXXsWgUa=&HYqg2YUVkUXje=&oViuXDWloWfUe=&9jVzZVUcpjZqj=&xdFFDBVmWsYhf=&7p9JyxXa_gefU=&PIzPLFVrdhbop=&oVCdGeVjhmsfl=&8Zh8TJVmXaloe=&YvriUVXihiYiq=&CPJ3i8XmWlmpl=&o4jDcoYgjYaYZ=&JmLZmMUnekrVn=&dD6QcKUmoYo_o=&QJSC6sUVjolsm=&rsqu8EVoVeaYl=&wu3oXrXZWikqh=&YiovVWWbbhnWl=&MsAmpHXiUeYgs=&HSK3FRZiifcnp=&E9__7YYk_YkZk=&9ccufbXaWmmmq=&mJphJLYmofshq=&tCBixDUamjnbY=&Xosrm5ZqWcndq=&2Fu5CwWYqhnYf=&QaqvUPWZshcba=&DsgBZQZgrXblX=&NfsxV4Xq_sopc=&zLNF8fYbYlrso=&c5oDEsYfmfjal=&VozmUNWgpmZpb=&PkTFD9YeWflmX=&Q7oLmwZrleYWV=&DoyRvNWhddc_c=&WROL5yZYfZsdZ=&N5obYKWfieciW=&XpvtdfYZrngrZ=&FA58HzZoednZj=&Uqe4zYZbgmYZs=&ydBF3fYnsp_Zi=&rQjkGuYXi_hZo=&F4SV5VZdgoeVo=&4eQFekWhjjjmZ=&5OxfRyVnmg_rn=&gfLvxRVZcb_op=&cJWkttWWforUa=&_DqGzEZhmVrhm=&9eOLNjZWgpkXr=&uJaVUtYVhZson=&_aYMpaYhdjbnb=&vV4JrdYZmhqlY=&wUUGzaZpflmdd=&gfGpBUYeZhhgn=&vmAiBfYrUXqgo=&4DtLEhZnmksbf=&8WkjAEUZUmlan=&TlBqjiUhYbidW=&SXUOzvWcoXZbr=&oCXsaHUdecnZi=&yjFS_mXjgp_XZ=&_trjpmVcakieW=&FeEApMVgXbios=&uWW8vhXYVhYlU=&OmUKmEYVgdrVd=&JmGrZXXcfmeVi=&iuRSYMXsYopgc=&uzkBoJXYZpmrm=&34PfhwVpZjZiY=&Aqm5AZXihUrsj=&GZluvAXrersVk=&mFRJ5kXkljhnX=&PzCyIUWYrVkbc=&CEs83oWZiVYaU=&4TX_vsZUapZWe=&VYdXn5XaWZfhf=&Iq8Ny2U_iWZfU=&558a7BUedfkdY=&rWrmWaYhkieVb=&wwaKyFYeXj_Zj=&ROqBwMZo_pjYs=&TJfr6gZkoVjrm=&V9T37SYhamkhp=&oFEVfRXmepnaa=&A_klaYYXfnrek=&mVyU22Ykkgnlk=&yVj5LvVrsafhX=&q5BVfDYYensqW=&TanUoxWqehlqY=&_izpwFUXqddZU=&ltZuo_YargUla=&7BVvzwZXinYWc=&8rgMhfVZdbcVm=&GjNMzvUhjccrs=&ASkzLSWZ__ocY=&4MOs9rZcjYsla=&_9EOfJYpXUnZb=&Pv732HYeorpiZ=&6ASRpJUn__eVh=&HLThLOVeXjUop=&xl5cEMVbll_iZ=&m7UntzWifodpj=&L3p6RqWaYenjX=&kovEI4YjfrrUX=&h2Lj3aUsZbdVh=&YSjnL2WclbohY=&QtAeseZbnlssY=&syZdUmYWWm_Xo=&2VsZPAZnihaZb=&eJCXFQUoXkZWi=&yrdyYpZZkmofX=&zYJnrXXkafZUV=&GvM5IGXalsVqZ=&JXbFhjVVoerqc=&lM6qyiYmhY_Xd=&FshbAaUmmrYin=&DugbHaWaapbXn=&3kBMNcYaYnrZW=&VncQcgVspXkpn=&N6zZGKUm__qZg=&o64USjVmlYk_q=&Ifm2RBVpdkpqn=&_9UfRkYfsYZpg=&q2N2u2YefckYs=&Vq6jnTYkjZXaZ=&xv2ZNdXmnpYZn=&JMsxi8XZrsqor=&Qttbt9WqYhb_V=&KdKUuvWolZefe=&PcazOdUnrlfhp=&uBEDDGXXnaasn=&XUsbufXhshqbm=&ICXExdXdVanaW=&iaKqpdVUneqbs=&O_gNqNYhhnoqe=&eKInghZp_glnf=&w_5kOZYcUggia=&Q6zyZYUdVqcVZ=&bHlZtWUrkab_a=&VkY5ihZgfUmjc=&xI6Vy7Yli__Yl=&2y_FAXVWhfdqk=&EmmlanYqlhdom=&aYY8HBUfnZlpl=&9acZFlUUYUh_r=&btZFsCZbjdddj=&CaniN5XZfnppd=&Rbd2FTYoodqkk=&HKGHyfZVnrsZr=&mUkwFFYpYUblk=&wCr6OgWnbqkXU=&twe_MfXrbmUrr=&CUnwnNYlWbZpi=&NsxiLSUZcVUe_=&zpcSprYafipmj=&TcmS8oWgsdYZh=&2vrQrPXWXWVhk=&Nib7nxUiopZgV=&LmtitwXVliich=&4tSz29ZdcqhaY=&fW7dVtYajbVUU=&veWh7gVohbbrm=&iCAVEGVlsXrWk=&htwfaNUbsXlks=&rQlnraZUc_gqk=&K8HDpLXrrfVne=&i_hgzfVijjmkl=&txOBTpUjbWdVi=&OvwMLGZkirpWs=&x7PDtgYnkjsrs=&cbQvV6VY_bcno=&pvLaodVfjqUbn=&N2lgwKZpsbjmU=&j8t75lYehnham=&qMc2NUVbeldid=&BVHEh3UhU_hcn=&35xYZ_ViniYlc=&8FlaB3V_aVclU=&iI5WhzVZnrehY=&LB4pskYbbjhhU=&l5CZSIUbmnXfl=&MiwhCPVYYhqWl=&uaCcymUorlZpd=&WUWRCZZYphmVj=&lqFsMcWrpbnde=&zRXN3LXedfaap=&Dyt3wIZk_ikqa=&vYCc4_Zcnkqif=&UNkzVZVgsiosq=&petQ9wVriVqpr=&oGKp7hXhWraZl=&opD2bSVlspr_Z=&uQiBHzUlUmahW=&diDzrAUlfr_Zb=&sLQxGUUqbqWhd=&E3jX6wYWeffZj=&ZjcQgtZpY_lj_=&Ei2LmzUnejXWb=&EBSoE6WcfUhri=&gheTjQWqZcmcj=&3mbRzGVibseYi=&rr5n57VrnYhXl=&Gy9sJ3XUWZaWe=&BBTnQnYoibhph=&dIBMd2WUlZ_pU=&tVVznoYocbbpd=&mvap2QXVjnUlj=&ohuON5Zlleclh=&mbIs_RYZUbsZa=&mR5dqyUZcZUeb=&XpkFCtWoihoag=&xFeA5XXkgW_Va=&e9oroWUdbrdYm=&ZQueRnYp_ZblY=&YzPq6tWjonlbb=&7pakCSZsdabrs=&wXA9CCUjrYshd=&G3ycuKUgpUmsc=&y5ThlQYpZcorr=&LiFBs2VbrnfVj=&Yc6VTKVqngXZq=&lbpojHWrqVVkb=&S6yOIhXZbcafZ=&NuH5xCWeenYof=&lIy_ePZWWXm_X=&4nqpbgYfkibab=&7HwoC9Vncfsef=&N4Dxz4XohgdZZ=&VhRqQlViWffsU=&oaCWZRUhifbY_=&x66WyuWYamViV=&j3e6ApZlscmia=&yxWVMPXmonrda=&zZ7IiZWajkarY=&VqLL9GXmXlcfo=&pbOaUYXabos_d=&4KPs2dVijooVe=&JRApRnXVrbfod=&hUZ5tyZmfejkZ=&GSJDE_Xjqmhaa=&RYwRk6WXVkZeh=&5WBwlvW__UnWb=&Ql__M6XdcWnVf=&GXrPcPWrmka_m=&EfFYbJZZjkjWd=&zek4TiZUmZsZr=&ngQspEWjZYYad=&bKM76CWkXgeWo=&CslHitWlZaVcZ=&IokhgqWdprrVZ=&UEkRwIWjpiYYo=&WAbW3xWojeXkd=&z9Gb3eUipqarl=&SpUAYCYhioqYj=&D3aGP9Vglsgbk=&VxzEfcU_jjWpg=&MvtzfAVXZ_sqi=&ZzppuxYYpejks=&4csSPcYVUoXql=&aaysEaZbjedhW=&J7o2W_ZViXlpa=&dAoZMIZZ_hUdV=&YXlS8uVkoZsbl=&UCEsmFZsrqWcs=&j_xfNgZdpXsdY=&btU3QzWgflqUm=&29KRisUsqpkae=&sy9rihZasscnj=&CC5KYPUVjXXmk=&_jFamxZXdWWZ_=&49O3r4YgcWbjo=&AG3rGjWmeanio=&L7FyTzZXfofXW=&OSMRDlWcokbn_=&yBo24pVbfXiVm=&LRsSeBZoni_dr=&v4HmavVqjpWnj=&hoAMdJVpoihrq=&UIoziiZYrYfWp=&NRRMWhYhbjUgs=&vkJJVgWXjfshr=&qRzTkHXpinW_W=&dhAjDTUhmlXWh=&MMZvMYZdraigY=&jPUJTPWecqXmb=&VcHTE_ZnnUdmq=&7pyVHAXdmVWqX=&BYbqkaWeimfoq=&tzNvGuWhgYgdV=&wQDlqUYnrVhrc=&gKrnDDVokoarh=&8dUz_iZlXbfal=&JRpfNsZcXcarb=&WrIhImUlmfUbU=&lRDUqUUmoXdeW=&oNJXb8WpVVUjk=&Qy7bXBWaWlVnn=&jvLnn_ZaioWWf=&oSj4GcVnUhljm=&ocpeHlWUVjZed=&l9SiXQZofWWgl=&2swaJbVshcrkn=&7vk5U4Yce_qqf=&BA9M8zYVjkZeX=&rpwAWhWYld_Uc=&34jsD2XbbogUW=&PYjIb6XZnfds_=&vfE9IfXZUmjgr=&_R7tipYeYhfsY=&gfx7MqUcZsbij=&Ds2VbFXefcZrs=&LaR2zLVWhohhi=&L6dK7XUgrhmZa=&Yo5tqiYrcrnbc=&QOkZLYXjdfeeh=&5bZAFBYUifjXq=&SsJEzeWgpjYUf=&6SW7CHYfVjgrh=&B4VyytZhfjUpW=&Jgl66xWahnZXq=&mdeB8aXlVklpd=&qpHWxZVaYUrqp=&UgzJYwZgcgXdW=&xtMUiSUoWigr_=&Hw9m37UnnYfVU=&pmllHUZhZlhUq=&sNXweEZcdg_XY=&RicwOGWpcqhso=&WTFmdjWsVisll=&2QUGEwVporbZr=&rfEk4DXVVjXZX=&k2cIXrUqkldhb=&fdyfLsWVbeiej=&WmEZX5UYhh_dk=&DnlITvZkdWjkh=&aDEUBjYgrcrXZ=&HT9kMcZpsgZki=&OhkUnVZinpXmk=&6BBQ4PVbadkj_=&eZ6XNLXYcojhZ=&OOINwdW_jlVii=&eZ3ISxYhlUdfd=&2o6VagW_bkVia=&Tah6PAYgVmqpj=&F8mR26WXZfirk=&N5xEKpZYhoabZ=&feC3GAXYkZdp_=&VAUWCaZfelshm=&HGhS2gZlicpUj=&uKdeThZmhYoUo=&Z4pSIpVlosaXo=&UdrBtfXoXmmbl=&4RFnQWZVacjqk=&tlSC28XWknpWq=&dcQSHxYnqbpXY=&t3tiALUcUpVlX=&SbSVpGWjmbcck=&cV83R6VpZVcon=&mHyl7SUmjcsik=&nlQ_7RZrUWUrX=&SrssZEViqkdcp=&5Q3G58Uscamgc=&tzMTo3Zkjgldq=&xHVqrRXfbbpsV=&rmmHJHZkpahoW=&Xz6s37ZmZXkad=&F_8HHOXghojka=&Hwj9rYYpbsp_V=&gwFyVTVYpoaVr=&QdPSnGZcZdkUf=&S43gjtWhnhlia=&39nbI_Vbonqko=&iNlWAqViqeWis=&xSETcZVsXihlm=&QvgOqCYaoZldd=&fuDkLIUV_rjUl=&uG7BcsXfieflW=&Jp77FKUbliiag=&HJjmARYiZWlsd=&zIp3olU_jVWdl=&YxO3HnVnVec_f=&tXVMcOVYrobed=&tfqdCVYZXimh_=&wgI8yvYsVfnse=&5qtitrYjaYinW=&YufrMkVagkjmr=&h2FClfYZlZgUX=&iudPXoYngqsVk=&i7Wv32Vi_Vsb_=&foicLzWVVsbqV=&RbfkUtXljcpoZ=&OsRstEUoibrar=&Whzjq8Vpilkrf=&_vwdmGVVflcmh=&dONp6VY_WZZ_U=&C85ouuXilqisi=&ck9puFZnajXcr=&RrTtV_ZbUooYo=&jwZXBvUb_e_an=&ZRKO3nVkXq_mm=&_eg2hjWXrshnU=&o3NQnKUclbcXW=&KRQafJXfWbgbi=&VjOFDFYpUciWZ=&nmVG29VXgdpUU=&QDfHbbXmjpWna=&exBz9cZgYUWde=&_7j5DqVWiVXkk=&7RLSM6ZrddZgj=&LZhLfTZhpsmqo=&zaXSgEZrlaWfV=&jq8USjYdfloZq=&e2ioKCXVklrZl=&h3YTXkUfcedoq=&aEiK5vUqVhmac=&GcRVKWVXWYoVq=&tEsuGWXgjpfdp=&vMaO6KUarrUVa=&3z_GzaXXen_jd=&SM_uQSXcVcocX=&XnhaIdXY__rsf=&2Ds_CqUXosWpf=&eALX5CXfeolWs=&mva3lFXbn_Wob=&VojPRWWqfdlbl=&hbw7apX_WjVZa=&tRdxxCYglqpUo=&lXTFmmWlipmel=&lU2SnNYsifsrZ=&BWQLElVfg_fcV=&S3AssYXdnpfnh=&DbU8l5WsnZgej=&XW5p63Wmbadkm=&EilfpwZ_qkfnf=&mAYLR8YWZYail=&wd8alCZ_jUdna=&syAgBdUoYnZXU=&8H8p7TUgqocs_=&xCTWVqWaiWXgj=&kCsgZJXsVjqZn=&G7E6kbXYaqZgp=&wXXwqyZWnckV_=&fL2NbtUqsceWl=&ito_9zXpsrgjp=&B3osscXhnhYrb=&Syep5kUkgsUjX=&UCXjsNZXadYVs=&9gvPPzYVsZlVZ=&jVAFDzUWahYrc=&6FrE9oVYYYh_m=&YBVO4mZm_sps_=&U47uWrXqnVebp=&yUzb9WXksXYoj=&eXzrcJYnnhXjm=&qVLMuOW_qZZUf=&4LHpRmXXkoVjm=&wxRWslVXplbdY=&bfExpgZjcefVj=&mZ6tmrZ_fXgsm=&I45kaqVdmmics=&rzZW8EUoZWbjk=&QTlLnGYocrZrs=&YZY7tAWUncgpb=&vLicAwUlUmnYZ=&T6wpYrZZscfia=&v27kokWra_qlZ=&eWrDLiVenYhYf=&eHxSraZnhYZrd=&bOd8T_VmnqcZW=&LECIzWVnncbhi=&So4H2uXpUYsrh=&GTIi_FUcdcsoW=&nuRnl4WgkkWnl=&XC8HdzUkdqWh_=&_UKXcYXfmnamn=&645LIHZcqegUY=&QudAkcWgdbVgr=&S3zYkJZ_gjaih=&57T6W4Yfkihge=&5oeu7qUZhspWU=&AdlbVYUYlrpfV=&QjpdBKYkXUrdq=&mDQtdxYVolqbs=&ZAEt_FXo_Webc=&4otqkbUYmjgmp=&InEQvdUppkW_W=&87DYPTUgqjqdp=&KVFsHGWWXZqac=&EjV9NSUeofslg=&KsQU7NXnhc_Zi=&wi7bVCVfdUlrk=&BB4GCrVeeXish=&mgArOxZhhXebi=&6zfIqYVgXmWZr=&MACEnoWp_pYeg=&vBYkNcXbogsYU=&bYpsqzUZsZiZZ=&g3u3SdYmbUbhb=&xCFlKfWX_Zqar=&lDGecfXmfj_Ub=&47iawcUXknW_o=&Kah7vdZiWrjYf=&ykdMJjVphgdZd=&ScagTgVq_ZWmo=&xnpaq3Y_lpXla=&wo5gfUYihmYWf=&2Uw9_ZWkpsjho=&qLjcZyYer_ink=&PSBUeiVWWZYdc=&K8TOb7YkUZljl=&ILwOgmZZjYZqa=&jsvkjFZ_gqXbm=&V3tjKYYrcmbUq=&HM4LkGYaUXbWs=&ZqAYI8YZsnbdV=&KSTHK4VnrrZfc=&jwpsUrZfZaXsU=&znqmqzUqnZYmo=&IEm6_UVfpZZcX=&VttA7bZbljfiY=&JwlbGrWsnXb_k=&HAnau2ZqhmsiU=&VUQZFiUY_paf_=&V9udt6WYboqs_=&X6sf2XVjsZjdf=&tkVjScUkUYcVb=&9ZbPbCXi_llc_=&bBbKuMYmVldrs=&S4AFnLXqYYkco=&rW5mNPWiXdlep=&C9l__jZorUrdX=&QH9izYUcnpfdn=&xnQHWaUofdlsp=&qJQcQjYVpoaoh=&UV7izxWg_YYUq=&NWeNPuWnU_pkm=&Acb6_cWpZnmrf=&Lz4VaDVbXUp_e=&uwOGGWZefgZka=&3J2o_2XolWcWW=&8mToJIUjaVbZk=&V_WEZOVZkfYco=&Co83EaWfibnpg=&3f2GoJZbZjbna=&YpL8avYZ_led_=&EMRN8cWeWhgVW=&OPCJ5FUlsWopo=&5AaOwdVVbgoXo=&Mpbx_EZpegeVb=&gpLrj6ZrcqomY=&ErM2ImZcmafrY=&kIq_iiUnfefld=&65XFleWWrneXo=&vfpWBpYpsXfpe=&Wjj3SFXrZnoai=&lV5o8iYYcZVsc=&moSXnRXeescjg=&YZaDJoUWscpkp=&EuE4giUZXaqkc=&GP8LakWqmndog=&3ACzMCZokabca=&QkLtUWXgWbjZh=&yEn3MfVsqedVg=&mA4gDYVeWWpqf=&qJNTa9WdYdhno=&9zsZ3JXgiqWf_=&Ru_YDDXljbcjj=&ySnq38Wirpfag=&zPolVUYZaec_m=&53aha8VnekdiY=&9Wgt6zXhfhlap=&LLyXjDWVgsXsY=&7RgPbLVbpljlr=&OCnx3jUraioin=&FKdAv7Wfhnp_a=&8ztBxkXXcYqhj=&X2KRIyUejZben=&r6coUMUZqoUiY=&PJVJUEVXeYlgi=&YQstUcWdamqfo=&hnOUmpUWVhbje=&35rdo2WXagrlr=&OY65yeWfUmo_f=&HVbtfsXiV_dda=&YqV234Umjsrjh=&ci4jDKVZspkZm=&GsMsepXllei_Z=&pIZE_XVpbZsXn=&yiknP3XepXUo_=&dsbka6UYjjVWl=&Iil25AUachibV=&joQFIOWckrWi_=&rubRe4V_mmZkV=&F59sfaXbsjZej=&3ouepiUcdikcj=&9WSHdjVWUnhns=&5rajVPZoWnmib=&6mksUIWYYliib=&TTHUWfVbrgVrs=&uSH8luUVZnkUp=&gdHMDDWikcfVV=&ZJ4h3yXYnYYkb=&dgttbVXkgkZXf=&xNcJegVVknnUc=&ZOxg3zWbWWfnX=&IcOKSRUUXmhZV=&YsIpv2WcbpdUb=&NJELVWUqaW_Xi=&2WXylTVmcWgZf=&ymWoFAVrYqWsq=&LXJUb4VpZh_Xd=&yXHVjaXlhjken=&bHZUOeUqUf_ih=&S2zeOtYYfblf_=&Gcm87kWsnZisg=&RnV7jRYkjZmrf=&TxzFuRUqjUsXs=&BeSNpNUdWec_o=&H_5ISHUjYjaed=&ja6FAxXVocrph=&k3yI8bVpm_edg=&8UqKGQYWZrjnU=&maYpF9U_ggdqo=&W8YuRYUcWZfV_=&92AZ83WVqmVjV=&gu7tn_WWjabZe=&3yqsVJVrXimi_=&R7mKaqXp_ViXk=&iyrYntVn_oVnW=&NxttybWksj_qj=&LU2EK9YneXgfk=&RC3C4pV_hXnkm=&UujiRCWsZmgas=&GbOC_SZipaima=&4aBPyzUocnVbg=&C9GjB3Vjbkeok=&uKK_MRWYjVaZp=&bxwoCvZankseq=&kDaW5eYoWeXdi=&oO7lo9WpYbfXm=&ZfeJalWlnbqgU=&czlxrVXaWhUY_=&s4sQG9XcUsnoU=&3RpPsiZjkasbd=&Ume_ACZfkcUjg=&Exjx8ZYWcsVsh=&JbttLsUfnhYhs=&SiOTvIVbcrYYc=&STsgxGWcncisi=&RwscxLUosoUim=&uxzhSLZcYrsWj=&U58tEnUsagj_X=&WDZvCbVXqi_gd=&xYj9V_YjoiZae=&GwJTXCXlWkdnq=&eXUDeVVoqaUVW=&q7wM_mYkdkbpk=&UHfQqkYpdeZ_o=&lX7QzYWfYilfX=&VHpkQxXbdgljY=&jL7oBcWbUUgUn=&YqAxIyYWYkqkc=&wJ8csBVg_eaVs=&Vdc_BlWXgaolf=&bpV2lRXUepjdl=&W9MhhBZUraepf=&vqFtrNWXUsYfk=&BizIOSUkoWgjU=&cTljZXVafpebY=&xJpy5KUbcoadg=&ZRtlLoYgdYbdr=&cc7fKJYXhZVeh=&4Zzwg8XqXnbpk=&jC_EX2XdoimXd=&KABwsKZVXWaVm=&8xe8z9UdVodsc=&St6gtqVcbUicc=&lHV_CBXpranja=&qEm6JkVbWUgZU=&WeELQBVscojYX=&3j3ggJWdeXqpg=&zOrSSoZljis_i=&F96VKMXjhcWpU=&JNqpkTYaUflre=&N9jwAvXejlXhf=&Ug6zcrZdrdobn=&92p9nnVlhnV_a=&O8IL5uVsjiZZb=&dv4yrtVglsqic=&TYJ_c5VnejXVa=&JQBLuSZaqfaUY=&T9iwgpUk_ornX=&mYcyz6UVWnkUZ=&8MbCNNWqcVlrc=&6npBJOZmgWaZe=&jUbPZHYYicpal=&kWpGmyWVgqhWa=&UKrhaxYliaUWj=&XmzlvsWkfreVo=&vuugvSUZfVbUp=&cNsy6jXVmglnY=&slefEvWgrhYWi=&O6bI32UipqmXg=&v2wsDWXkmaWUj=&3hUstVYgpbnfg=&6mgjhYYYohmqb=&5MSypcVnscUec=&3AIMIBVomYa_h=&dWMb4FVZlqUfn=&GcAnTVVrpksYb=&VWIPDfWhUWqbh=&5T3Wu2VUqmYfb=&SmLmFuYphqZcm=&FLgvYwUVV_Ymk=&ROFvNpUjZbccf=&67yvadUkpXmfr=&hIBDBoZpolZps=&M9AG5oZ_ef_Xe=&IDGiLfY_drpeZ=&7gGaiIVWXkWpq=&gazYZgZhqYs_b=&J8tcKSUnXenWn=&SsJO4ZUU_Xmar=&XBdWq4UkhZXhr=&YHKacoUsgpean=&9aBoM3ZrfbboV=&C5LjWqVZXsaln=&ZYwhSiZlnllko=&7djUtUUmmVbrd=&UTKcInZbplngs=&TdnAEfZrYXsln=&CQ4jmRZm_nnof=&q_RDNGUkZhqag=&R67F26ZipmVcj=&DjFr9gYolZpgU=&JGmr4oWWss_og=&orlaWxWiaqdhY=&MWfQ9qUVjlVWk=&tVxn8eUVmfgpb=&lUuwhsUnijcoV=&rsJ29HUsZjfrl=&M3JrBnY_UVfXm=&QsN9ZwXidUY_l=&RONkuGZUZZUmY=&qPjlOxUVYqqkW=&zYLuvyVVoVhcg=&wolyn9WfXglWs=&yu45UGXgZhdoq=&kqa9KXXq_YeZm=&W6_pVJUsndflX=&aplbRVVpj_dbp=&aN5EHdUpopkos=&pLu2pnYhUgaYj=&AVBBQqWmUh_Un=&A3ZfDAVfVjiWg=&Ps5PHQZbobodq=&_jlPXnVqiWa_f=&mPNTqbUlfVfdY=&NwLRVbWmcmloX=&qJZuBaXkZmqnp=&zIScMUUlnsicW=&M7H84DWXVdXlg=&4jQZxBYf_hllY=&QKqcPDUVejjbX=&URWTArWfgUgmh=&LlwsUPZgYZrUb=&aOOPadZXjafpk=&GLuLzYU_lnkVl=&jHR8bzWgWY_oX=&n2XeQWUaoVp_s=&rvQaeDVgdVobc=&mjFStfXU_ZZaU=&Quvo_VVqhWUps=&nzrHjTVUhrYsi=&s3GIvsZopZUad=&PfTPxlXeeUliZ=&C9A7_xXbiskfn=&nRqoebYnYVlkj=&2gUg4oVaXpkbV=&wNrHmLXZeojbj=&qRB5EAXpnXZdV=&g66ynfVbZqgdd=&NQ8VbWZWXpoaW=&fSoyseXbpqhfl=&XpF7RnZiliXdW=&piaDtZVhdXmla=&AzgT2rViffkks=&lvYih7ZihhdhV=&GnJ2NuYmkcmp_=&tBmmWeYphojlV=&349lkKUlbpXpk=&3_IdpbYieUXje=&gkYkpVZUnnjpW=&PGm8QFUYfhccW=&5owq6tXhXm_oa=&hKbyUsVikcpZg=&G2KcZmXhjdYpq=&MLXMezZhqrfVb=&mC4eeEZhmgsUk=&dT9kLxUqfVmah=&x5IXYtVsVolbm=&f38mLZUmmdZYX=&E6ROznWl_WbqX=&Mj5892VkrljZr=&eH5cOmVcpUbUn=&rvNUDEVXpWXlc=&FBuY4lXehqjki=&dQ_WAlWbiVrXh=&qLyjZyWg_llcY=&K5dl45WgjVkki=&Q7FRkDZnnmpnV=&z4oCq6Xkcqlmo=&4fupexVWbpjrq=&U22PszXUiXZUc=&otJPH8Ujfh_r_=&g4PY33XWYqUeW=&AkjnTmWmcqdno=&Aos9AqUojUaWY=&U7mcW7WWnXcjc=&86akUHUasYqcY=&2tjeKyVUpsUoa=&g8cVHsZmWbZhU=&lk3bTyUaiZgVY=&VTWdUZWVqdd_W=&7WDgbCZodjVor=&B8DJqsVrZir_p=&2xyV9pXioiclh=&AE69UJZhXiolr=&Cmk566ZgciXYb=&4RNCbGZZ_eYVU=&yVUbTgUhqVZWl=&3mR4h7ZmWa_il=&esNRMeUcsZqmU=&RQHpfNWgsXXio=&i2oLTsZbfpjZa=&4H4w72VbbbgZk=&ID8oqQYmYdoie=&7YLKoAWakad_h=&L5duYOUZlaUiX=&EHxblBXimZZrs=&OfqKf3UgWnXcl=&u949oEVUXWUeg=&U5URwRUpelceV=&lpBG5AXYormlr=&QsqoWAWeVilXq=&3vWIHVYdfWWUW=&XuEOcRVVfYgrn=&uPWfVfVdVibVi=&ybfak5XqVicn_=&ArzLQPYpcnjUi=&moZYCdVclVYoi=&HMkC82Wklcsgp=&Iojb3PVhWnYgl=&DPjIiqZaZYkqY=&Kg59LQXl_srqf=&IO8hofYkVmsXU=&Lf27sdZrdkrh_=&_EFPxCWeqgbXo=&_hX_F9XbZZ_W_=&8TDyQIWqcqcoW=&pmUlcCUsjpllr=&mYTYBuUidmmes=&9AmcPsYcqrgji=&X_jykIVbnfpik=&CIfOegZrmkbih=&bGFRViUZZhski=&UkMz4AXgrpaaW=&KLzYMeVWleVi_=&6o2awSYhsdmn_=&viwEdQYb_WcqW=&TPXEiVWZas_dj=&MbwKT8YphXkVY=&LIG4yTXkZeYae=&jcyuxmVlfclkV=&fidrQTXcoZggd=&CT8NjNYYmUfdk=&sGfREyYeibmag=&GfpuJfWpqaWjV=&3WmoaCUZ_ie_k=&KyIXZXZZmqeeY=&HOkJr3YUYhmml=&88stkNXnqeVfX=&Y87HQYWeoWfqs=&oOWhwyZmcanXh=&uRdausZrZkfpe=&YuzQczVfUbhYr=&_XYWvHVkXka_i=&LOFjNTWhhZ_gr=&2GC6hAUXmshok=&xPccu3ZdaZsYY=&78cOZhXVraqfW=&NIclqVYodeifW=&DRLo5IWoacqem=&khiqkMYbnhWfs=&Q_TRmqWY_akmp=&iWfaKyYllaihX=&5TgvAfVrefeZ_=&iUFIwMYdbbprl=&llns6sVfsoWqb=&kUGadgUZcjpUr=&yz9uhuYfZWgfm=&lhnTBmWcsWogo=&kxEemvYslirdY=&Kf4a9mYYskZma=&L8pgQGVUZhcsp=&kJaBM6YshrrbW=&qDHYleUqZhcnl=&vzqcbVVqbh_pV=&9xM2AJYjXhlok=&FLyzDRY_hVdZY=&5SdpRHVXkXkdb=&9jVtydUqbjhZj=&a5ELKdVVXdf_s=&Iti4OhXamWps_=&5PdiwdZofYVmf=&_lpjVlZiglioq=&lEBfDZWfin_ik=&7ARhexWffiUnX=&QBWS9BXpcsZUs=&wjKub3ZZq_rhl=&AuIccJW_X_leW=&KPkeDfUpkfXha=&HxyiqsW_WUsYh=&hLTZR8XchiWXW=&5YKlWXYrVWonY=&qyd5WWWbqenmq=&BGvLxCVoieifr=&qMNFDBYdXslhn=&rHO2IJWcWmerc=&NvftHPWZpjhmZ=&dfg4rLVWimals=&RcqKjHWmiachV=&7d4ds2ZVVZsgj=&IWvQ8UVmsopdg=&2I_GPKVcUoYqs=&rFZHBJZrfmpqd=&A6IsUAYZsrgec=&5BEUrCYspkfZq=&nG3UN9Ukrhnrp=&G6smVSX_hsqVW=&zLs35MVsWemac=&ryJIldUoWXXVq=&cYM4VpV_hdUij=&kwMaWSZidWZec=&RVjAilWismXjV=&Oub24iVbcpZos=&4zALclVZrlp_a=&zNltFgYncYbYY=&eMbdoDUhnejmf=&qTwD_kWbkdq_h=&iFPDqzWifVmfo=&bsOKDNWgmVllj=&oEawuKUqjXnXp=&3yPBh7XWehdba=&38oDGjZZcdXmm=&faCo2kXWdlbji=&8IYajXZXaWfhW=&C6Dx89Up_Xs_b=&CbHLcAVmbobif=&XYNi48XmkqeVf=&AClJmbYgqZssf=&OIw7vfXUpqrfV=&pp_mjeWaUmXdq=&wqJ6bGWYorWXk=&dpoaQYZiYVXk_=&i6QVa9Yb_fbrd=&Jnl4_dWkmrrUg=&ptRvkbYlhsqci=&jJl24FXrqpWpd=&IX2ilZYWnijif=&bSGFhcWirYUhq=&bioIv_V_oqdmX=&WjmGJGXnknUai=&2KyGkuWXil_rb=&tFTKtaXaaXmmp=&CIdDAOW_WoepY=&ikTLf7ZUajebf=&4HyR56UVVqgda=&WOM2mnZghmfUY=&OWI7JMWoXiWmr=&TRc7hiVWVhfXr=&VgeU6iY_WXnqX=&2YSbQpWYYqdUZ=&jAH4IcUqamiVl=&4uwMsPZcflUqY=&XnXmoJZVoaZqe=&5ZVV_pZpWXVn_=&kmHhpXUqgUehq=&wzNXjaVWXpjlY=&6p_9eiWVkbfgi=&42oxyXZVcrqpj=&XnLsvHZXensb_=&dqTI9yXZjlfhb=&Tq9e6KYgsVsmc=&z9sD_UUpjnsUa=&KV_86lWpmrmbg=&h9sxZKVaZqpl_=&oV_EdSZg_aYlX=&IAUCL7Uofslci=&dv2_B3W_ZpYds=&xyIJymUYcfZli=&AfwqrlVhVrrYh=&ovDw6RZrqXppo=&RrpQNuYernosn=&OGEf5JYcmVren=&AZccexVipnshl=&OKecp3ZpjljsX=&iuZSS2WppXgYq=&5jbwB8XmbioZa=&dBuEujUYgopqj=&9As349YmoZdqs=&lNYUcNYrYVcoe=&4FRE9yXYkgsbk=&a9JK_XWVqWrih=&7T7ILVWeVlWll=&uHiZ5GZqZjZsp=&NhU8V2UaWeUog=&Vv7MvbWqk_W_r=&TrITWCYjrmkrb=&UIObe9VnW_fap=&RMdqMmVfWm_cl=&TDerYQWqfZbkf=&dKcGy2XeZirgo=&xpy7lnXWenqbk=&Wy6AaVXYXenfb=&E57H5hVnqnbde=&nDVZQQXWpmiho=&97ofqaVpnhnbg=&NsiuJXWXoqVhn=&TVVRysYmrXZgY=&fe4DGIYaWoZgX=&AHx7dRXZmsacX=&TJC4BaUqcngrr=&uZPgI2XiUUqed=&QLcLjMVlUbUra=&sgSHwbYfek_bd=&CW5wh3WbeVVgh=&sTk6lmXWqpUqa=&cKC3tbXlZnbhn=&v2r9flXqrsUem=&zOKq3GUVjomWY=&HKRvNoUUjfkbU=&Wq7jcCXfVendZ=&aeLOUFZpphUep=&TZ3mKLYdlkjid=&SQwqyLUgmdrrn=&hjh6KtVZflUks=&Vwa8WVUVbjVdh=&UvNvmGUsfiblh=&bYpRslZWpnWUe=&ZsFNybWinpqip=&HxiFIgVWYbrjg=&4FZbV9Waqcqeg=&RaGi_oYlfgsYU=&DkrIbkUin_csV=&7SAasYUYX_U_q=&UBkIPHZrikkgs=&hjmFNtVgesXsU=&IBNhWuVo_ZngX=&nxEOZRYW_rqkq=&T7_w3oWiZjpUX=&PjPxPCWlehZiV=&mGX3sRWX_iYss=&AQRTNsZiXrYmn=&LIMCbmZeY_gdf=&bpFhLpXjVYioi=&YM9Sc7WqprZYW=&oGldekZepbVaX=&DuJLEpUVVq_sh=&5g8kI9VamUrrb=&CggHzUWlcmXXY=&jQsfzxUaqhf_n=&i9K_peUplYXsV=&_6PTVRYg_hhii=&QtJoMeVkedUWp=&COSUx_WsnapjX=&7KhHg7ZlYknZn=&jdAiEeZdofgoe=&DJ4_NcYsVisnh=&EZaoNYVXkm_Ub=&OPctO3UgZjrmm=&ulfBQ_YUfnapn=&kqUu7LYlrWWrh=&5h3VRtZX_eVdd=&wLu_y3ZpopZYi=&ce9dQgVasf_Uq=&8ZIsmTWjsnfWl=&SNJPrSUbmbkcV=&zIKm_FYdimjqh=&2asBETWXdefWZ=&WnzYx6UqfUpen=&VSVXCaU_smVdi=&ajjZMJZdXcnWn=&4Sk_jLXnhgfUs=&5tWC6OUfjagji=&BBOqQhW_iZ_Vc=&6yMdxqViVkmjr=&JRuRlfZniWomY=&38MgA2XXjoflU=&yVNrU9YrbbXnn=&8fFXfYXfXepkc=&YxPvwuXobdlak=&SJfzuDUrioXba=&fT7UkGVspdmrX=&AHNoWvWlcsUiZ=&n8OfgGYecaqpd=&UrQpDwWlsb_hV=&3WmuAvUk_Udlo=&KX7_I7Ubbmpkp=&7Or4pUYgeoVd_=&nJjpbSZjaVjZb=&xQgefSWmUghca=&WbhEihWbeelpp=&V9nyrJWdjYmWf=&MsprxuXhqrXaY=&mivdDcWfdeqnp=&UMSwQnYilqpme=&SiGveuWadjsXd=&anEmBQYdsq_fn=&SyfHG5ZqqiWks=&Rhv3spYkhqdop=&GoYwzKYhVXbcc=&gzmJgMVdfUYWk=&eKWimLXeiWcir=&OB_DaLUdafUlh=&oyD8CjYmnZiWm=&yIcI5EYmZ_Ugk=&Rvy4QCXqbesZn=&sGHpBIYkVpYfV=&jSMFVlVoanUps=&MJsWkGZnUZUlg=&nSl_WGUsilhpk=&5GBVLyXkaUYd_=&WSmCpVZnkUrWU=&XKl9kOVnVqcWe=&hzhhv5XbgYhon=&ye_VByWXicfbk=&fqPu9OUoeqWWf=&zourlRZlkdpfs=&Cma4NXZresYgU=&TfSSbTUsaXcjZ=&jfZfxBZYpjgfd=&hRbqpdVVhddml=&8R5YvWXqshVYj=&RYCVzCY_kVYqf=&_veLFLUkUhgYY=&3ogYtjYjZniVp=&DdLIruZbqgrqW=&nntK_zWaeibYq=&eQq8uRUfmcl_d=&_kI27rYWYirag=&HdRmzBWskjcWh=&GKWhZfUbcVlXg=&ZhPrmHVVXfgco=&Yl9CDPXhmqiVd=&LsZx9YWqhVa_e=&q4A6ipVsphkps=&NGfmQiUqZdcZo=&KkH7CCVsUWUre=&YOZNAYYqpUsqW=&In5rqTVpdiniY=&iiJwGBVmfVhUV=&Ub_hrqVhlX_sa=&XIdLCYZYmVhdm=&eRxln_Zj_nkee=&Cl7nZPXWkUUae=&jwgFJ_VrgeZql=&LxL2IMYnbqaVi=&yJjss7WnW_nnW=&Cy59XpZgoidYh=&vG5uKsZnbbgnn=&CxXiWGVZkbjbc=&X_nMIxWmpphol=&BwR4ZtV_Vhnia=&EfwiaaWifh_oq=&RW3VvaVsWhrnW=&_ItK4pWhr_igs=&Dg4BkNWjWsZcf=&gDmUwkYncsnXb=&DM2zC3ZkfeXbU=&nbD8iiYpoeekU=&dc4ZvIWscWmmb=&IOpHbGZWYVqkq=&JuPOj4Yl_ZXim=&2raVRHXYdpocf=&7bOJCWYnUbZie=&X5M28HZbbeZb_=&yAZ_hyYUislqc=&zbyLXCZlW_caX=&EeMEcLXdhichm=&dnWiKYYsXecgo=&4QLjvwYlpVWme=&l5phmUXVnnrjY=&fb32liViZeciV=&lxYoOeZmmoWfV=&zjE2fJZWnqV_d=&Bga4OKZUkrfcm=&YbfhsiZoXgjVk=&2EigQ9Xnsrmrm=&ydsr7sYc__lqo=&8c4re_XVXcf__=&szFTahXnblqsX=&jvy6nAWjbbegk=&DpISgwWfWVcWb=&IqB8XAV_XnneW=&3fAONgUeZgpbc=&pjps_2UgsXhqj=&WbGwySZspoplc=&fJhamTVgbe_Vi=&zeLXQTYkZs_mm=&mkNC4aVcbYlZl=&WUcyEnWpfU_ff=&cBp5uyZWmYlsr=&NhhwdEUcYVshd=&nZKU8AZanllYk=&uWIOinYecpXdl=&e5yk49WWjXnpq=&bdiTZsWeefWbZ=&vcgAOFYWkYmpg=&azayXFWjlXkfs=&aKUoV9Ycqqggk=&mU3WEBVeaaokn=&qFxqgKXiZkeaj=&Ru_qPSYVppepZ=&qw6m9gXjnXrds=&xyF66XUpmfnZm=&_SFpJBWsfebnW=&3MxVwtUnboUll=&d9t_ttWpWgiVp=&jzQ5ixVXq_Ug_=&M45EaBYblYpqi=&Jtbn8IVqm_lVX=&sJ9qpwVipUqsj=&s3s4a3XnreUkl=&ryTcWhUbUVYoe=&OnglC4ZZkabjm=&_cXhxtVmfVfWb=&lFSL8UVrbiblW=&zKOErtZViYjgl=&lfgJzlUlpfaj_=&Y2vrRiYbYeZij=&e9tRexUhlicam=&hMxJkmYslokUZ=&9wmrRdYbjdnlp=&ixbvJLUfrcmk_=&Clm2xMVgZamfn=&kjhTutWabojeV=&cafePdUacWlgf=&JVvz5eWoppicl=&sfGWIwXirkjbm=&n8OqAoZpfXina=&ldJdksUgbaimi=&z7ZzGdZZajcYs=&C4LSHjXgsnXsY=&vaLvsIYiqWZfg=&nlIhEHVZXYmZl=&_Da8_WUfkWmrp=&nBUwsiZjhcg_i=&xSBNNmVgfnpmV=&LVqsj3YaeZUkb=&WuKKe5Uambhfg=&2s86nVZ_irUe_=&aY_otpYncWoph=&ztSnEfZ_llmem=&pDN_S7ZWbkXar=&4e_wOdVWqiZpg=&h4YlNuYbmXVUs=&lz_CqFWebsleY=&ysCVhAYqh_opp=&iIeGvBVUjeXak=&NzWpskYqUXipY=&LyvB_SUcXXYUq=&STljMkYqessgq=&wBPFKTZesh_jo=&4WeebfWdj_fol=&3ZrbbFXXqhoro=&o2mlxMXegZi_g=&VbCy_WUXhVVZi=&9PcgWAXbablki=&ldH_5QUh_mfjj=&NiktKJXVoqUjr=&eYOX4eZXUoYfm=&XTS4FQYspmffY=&xohhTUYWYiceb=&2zVPcyXpfmjZa=&B6gPsaWeldjWX=&WYa2maWasVjmq=&lGFhkqVe_Zkjf=&6MweVFWVYhdkd=&3ETQiYUpfqmfX=&CudgB5XehUrbl=&nDzLVQUmjpshp=&IOvR5hX_WheXZ=&qmZ3AmVrpnnbi=&lIeCG7YbisZge=&CfzMM7UWWkdiU=&TyQRDNWjniYon=&EHeNgDYklksij=&XK4S63Uqkkbkn=&W_RjljWfrpYnZ=&DVDvtKUjcZfmh=&jcqsQHWesofeU=&TrDUV8Yjboirr=&NJB7_EZYkmUda=&wxLaViUqrreUo=&CXDjgJVrWlVpc=&S38VLLWaaVkiU=&Wu7s_WZqrjrYb=&Vmwi9qUo_kpsd=&hMzTWaXlndf_f=&XByNkgVcmrbej=&4RVytAY_cVjYp=&5eT8iDXfbrXXg=&WCe2heUeWeWbY=&lDokiyWr__gpb=&lAp4sqZX__bXe=&YR8o_JYcnUkZU=&OpKg7cYfql_s_=&yAz_pZUmm_j_p=&_MsAJMUVgepmU=&AGnQtaViYsmjZ=&NEBUdpVZdaspn=&CrUBNkYmeXrjr=&3iGoqeWfqm_rj=&NkZzskUodqmcl=&S2nxbnUibXsY_=&DjTb6zUljZjiX=&x9FYypZiWlXYj=&Lrda8AUaeXVWf=&X__gClYVhjsZX=&Z45LnMZdWkefi=&sdG3pOXrbinjs=&qHQGemXrhlhqV=&PBBeyXXllgcic=&_AyaahU__VYZm=&J4CSnmZsVccYo=&o5KUyNVnjedcq=&EzSoeHYmdUlgn=&Ra6F3uVemWXhd=&NEwyPyYncXbcg=&QwMLbXUYrckfe=&5KMrVnUsheWUf=&UCaxSuZidnqnW=&6zbmHMYbcgXgj=&xsmcAwXnlXnod=&e9eswmVrihfrY=&UL32MhZnZgpqm=&Lif7hxZfjUXlc=&PoRNh7VciVneU=&3Psc47ZdqZWek=&_6VfrBWjmYgYb=&hxquFjWVjqgsd=&qRdDqrVjdsdgb=&piFQzQXqnVmen=&t6J3KvZbqfedl=&h4xjD4YiiXrVk=&Pj7lYKUdajdds=&EeIgyYWoasajk=&ecJEWQXWbqWVZ=&BQG4WwVhVijWh=&Ovi3GxZfeYbpj=&vCABqXYhisc_d=&auFQZyXe_dVbV=&8NM7lYVqpUddg=&EyOKjoYkjjhaZ=&7r5dbHYhdYoji=&rgK_j7Wjkkihb=&a__Pe5UXqYpqe=&hkQptLXed_lrb=&IH4w_qYoUVic_=&JG8jphYldXkeb=&vL9CxjUYYkZW_=&WZOMNAZaUf_Za=&xwfgzYUarjqgs=&TBGU5OWZVe_UX=&pfF4HrZecdlfn=&Cwule5XgYpiXj=&7jwYUsVpZWalo=&3ZBzd_VknpZgX=&PmMTCCUeVWgmU=&VHx_WTXXZWqso=&rTe7roXsUffgX=&EKls9iUii_Zjq=&FohVHPWnXVenW=&AF6aojYbhdief=&QpdS97VfdVd_c=&c4mifLWhhlWbm=&3OWKobXfesdeZ=&u6UCUgXsf_Vrk=&SQgWuLWjklnrW=&vtUmIuZpqliae=&zPoYuzYrmgmej=&LrxafJUlgnWaU=&p7xCdHYmWjdZm=&K5RbaBZoleY_i=&7mtlCjYm_cfmn=&tJ2uYUXmpceas=&a4cJIXXemgmeb=&oFQLVDVbY_pfb=&vmv4wmVXrYbkW=&iQWwKfWqpgpZX=&PVR8N9VbaUbp_=&2jELewXX_nfsg=&YsUF2YZiUfVZp=&VfZJzpWpYdiWb=&VXRcmnZfpr_if=&oHF7_jZUodhof=&NxbGhlXjkbcob=&oXtGsaWqjWWma=&6k6LipUiUflhm=&r_GhMrVplncqW=&HYff4BWgkVWhe=&gZ3BCFVgefrZY=&qWvprGWsUWlmn=&4n9KeGZZclfVa=&oftdLrZnU_ess=&r62D2oZVonirq=&JtffUIYaegsds=&nlnNezXb_mpbW=&ORmvNyWcilZ_e=&OTBr4UYfgalep=&SOF26RUnlXpna=&GaRqxZVZa_nV_=&gbT2oqZrpfrZk=&OlDuCmXkfbXZc=&mvedRNWXrmr_g=&bdbwnQVsagWpp=&XyxG2_ZiqXVpg=&dekSYUUoVdmmg=&u7Uhg8ZcsdZZZ=&84guk3Y_YWinU=&_jAG5QZUWjd_p=&8cY4dKYioeqrn=&Ah9hh5UYkcb_V=&PR5a9wUmc_mVc=&bNaJTfUhefXol=&EWjr4JVmbeYoZ=&hDKQYTVljkgdk=&ZuZfruVc_gWkm=&rRpakaUipWiXk=&x5ZAjIZZdehoe=&M3Yf3YYU_kfpe=&5buWH8ZUVYWrr=&Dq6kxwXossfWc=&vXRaJ4ZWsqsXU=&_HWeUJYesejga=&qBPgZ3Ygcabch=&ebbn7RXbjWgq_=&cr2qM5ZjZVqdo=&AUfuwVYfsafrc=&gYR7TpYelemqV=&KjwM7XWgarasc=&PAH9H4Vaqolgl=&oks2GFUcVjYb_=&chSovqUcgcpaq=&BcK9zIUbdZpmX=&w3gtDwUodm_rl=&x7WWIWZlrffdk=&BXwgOpUVrikUc=&etVt_ZYpiphXp=&Bz4dKBXpkZWZc=&dw2MXHVljUaqi=&xDKgauWYUsVpp=&MMh_JsZcmdneq=&GSYTB_WckeoYn=&neOgAEWZbqkdX=&xrYZ8yWYcclgs=&SVSFKNXlabVrd=&PDmEN3Umaoogi=&croPofWriYfio=&DUmPE4Ze_dnhg=&ZCUPqoXdVlhZp=&Eq65LsWbhVhnk=&Vg2LozVYUXdeW=&sJzVsQYmYmsmm=&KNyuiZV_Zfgia=&rTBjhWZVWeXch=&3scMbqVUbgiYg=&zkyqT9Ylglobs=&_zPYRSZVkrcnm=&hJPVALXYjqohn=&pZL_3IXmYgsda=&KC4HTCUnrlapW=&OdPU9kZigclej=&HwUWxFYUiXUra=&KwbMGNZffmeY_=&YzRloeVZZYjbf=&R5pXH5Wgkiceb=&E2bFRAVqkpmcp=&OmFkvyXbpfZlr=&_CLstoZhWUanY=&mWwAbNUZYUoiU=&R7kb8rVkiraZg=&5BSQhoXXiZjgZ=&NmhxlnXcqcjca=&h26kcmVmrajon=&wER773UpXseUo=&dzw7QaZVqedVb=&D4i68oYYohnYr=&rdIM4_UYmabrc=&kdd4rXXWlZbVj=&Qb2vMCYkUjidg=&igb3u4VqqnY_f=&vnjaPQZlhVide=&oOdbh3WZrXblV=&CpR728Zndbdmm=&a7pwvKVjnnafe=&AjVf7rXWsagWk=&8Rj9KYWsbbgdj=&rtaxZfXbhobUc=&wWTXUZXmqfefn=&Vtf4IlUqdY_Wr=&w_9xMXZglgdaq=&5WjswIYcfoUqf=&cAsqDBXlqe_YV=&eJJJjuUUgssUX=&TbNpSMUaolYZn=&CVY7mJWXlYYif=&hv_VlvXZiealr=&TKd39AZalaUds=&ciXSrGZsiUcoa=&x8e52uWrnbnjX=&amvxFpU_kombU=&IMfu2iYlreUpe=&tLicmBUZrmbfe=&hvGjCjUkUijgY=&s2MxpkXUiqlme=&h_w7yXWsahXje=&HTmFNnVZUkeaU=&BXjTi_WhjemgV=&SYlWpoUdcrife=&jEFGM5WZiWilr=&tP_YMqXfsrsVd=&7E7annXWnhpid=&atzc8kXbj_paY=&vjlAdvUaqroUh=&ZByPziZUZblji=&jfDqtKYsaogWr=&RYrhLpXkXgspZ=&W_u9KoYqlajcp=&u6J_k7Zslahhj=&37FcnPVgVdpXd=&3ARFIoWleskYs=&KZTipUYYqVXWg=&9N6G5FZeYXliX=&iovLfHVZaUaXg=&XTICyOXq_oqpn=&M67k6cYgWbpVc=&jGieJYWgccpeg=&CAd_kVXnhihjW=&NY_H64ZiaZkdm=&3iyyq8UncXecc=&cIl_XLUjneYVp=&DfqCagXomXrko=&gM2pqdWon_lkY=&HPuA5AVVjjZpp=&O5DUmOXqYXqrl=&cE89B5YWolbYb=&_daE3IYb_hjef=&UO_4MVYb_Wcrb=&blhWJgZdka_gX=&Hqwp2yVXWnkVg=&UggSOUVUVfsXr=&38meSQYegikia=&YrsDQMWlmbWYl=&5Xo8ubVbsndrh=&h_HdIiYaqconf=&MuxiLAVUmkrbU=&3oxqEaZWkkqri=&M38w5LYbeenrc=&FL8ufqUsaVhgZ=&Y9bT2pXZclkhr=&fzd2ldZfccYip=&VqmhfzUeisYhm=&d8_fS2ZWnqasf=&ZQNOKeVpjlgab=&HvsfV5X__apdW=&eyCFTrWXoVem_=&gAbXZQYjZngpo=&SxeAQ9UdaU_nU=&FSySBLWa_dZnn=&C_W6CMVprjqoo=&5Oi3B6ZqdrcfZ=&VYgT_cXoYcfYb=&Yu2OXbVVYrjam=&boaK8iUpejkYp=&2Qn_S8VrpiqUh=&rallzcYqoqflr=&QRXqx2Zakkpbg=&f7nlbNXcsYUfW=&SKjtfNUrcnV_U=&aNVgXRWnnkZco=&wS3rIEXjXVn_r=&wMN7KrZaqkVdo=&IZ3WH6YVlbqZY=&bmLt_hUklcbde=&sya3haVpokVfq=&jPWDG3Vo_asVW=&PA9uvIWppciif=&DJ9U5vWWgrong=&TkeL_VUq_erXW=&DCROaCZUhsqmZ=&uGocEUZqollWo=&DAvBaJXdiUprf=&rA8q7mZnUli_Y=&Pb2z9PVqcVngr=&uftFMVYqsmpai=&fEtAdxXXXokjp=&Jsj2wIWhbVZ_g=&VWE_MxZUbnfhi=&S7JE8jWgneVWs=&AgwtvaWoZkjX_=&ioDJcEUpsqWbl=&rzaLPZZjmZXea=&OkFMBXYaYcXlY=&usmeiBUWiWpdm=&GS4474VosZUhV=&Kh99c4YZpdnVe=&bxJpVEVVbWbrj=&X9Y3D7UWfjgoV=&ZPwE5iZscYmeY=&yKZasMUdneZsl=&GbJ4RDYpeaUgV=&Ba3N2rUhqmike=&ponLJWWbfemop=&S_liaSXoaWlWm=&NokXBMZhrXgss=&8xWTunYbWUUhj=&OGMpQuZYjZroe=&BVA3kvWZcagej=&lxcjTJZpWqp_b=&bDNipbVcrUaZr=&hvxGXTXqiVljW=&YBVorKWiZX_kq=&q4iQLEXVZeXYh=&YXRcToWWhsqXW=&s6uV8UZVkUdnk=&rIK5zFUpjqqqi=&wHR8cwZYUdfcp=&6_aZoCYafbgjW=&dpHm_gWrearld=&EOjrjHUjrliUe=&mhCaNAUbdViYU=&iRubiTUc_Uh_V=&9A7ADHZjcW_Xm=&ZGsrO8XcfWWZn=&apg2O3ZVbsZep=&Zn2_RtVqbZqpo=&rFeLF3UYmVoWW=&hJcAvbYqeWikr=&5XoxtRVbscbXV=&LHoBttUajmbpf=&q6SToyUh_nqXs=&yjhCquWnopoWj=&menYxSZj_ga_n=&nzLAxMXdhdYba=&tvwyBhZbrVZka=&2KGB7UVpkcgbY=&gOff4CWigVc_n=&MPs7p_YcYeYr_=&etfcI9ZXsnUmg=&NwNsWEUekkrYm=&juBdsOUdbllYi=&a4oROXXXejcid=&8GA87TVkqlZVi=&_gEpSfXlf_anZ=&_7zYxMZXfXkgr=&5wuKDwWqp_mde=&qyMJmUYbXYfep=&CImihhVUUqhjY=&tG_3sdWglsqjb=&DW3NIQXWsjoqh=&6AAIFpZcllnpb=&8s8of4WinfkYr=&Vm49NEXWq_rW_=&Ar3zetVViUZl_=&9YO8qjVWmcVda=&jJZgkqVsgl_o_=&lujQsHYfrUlmp=&n9oRLHWrjofig=&pu5T5sXX_dhWp=&KPQPIZVeqldVk=&k_FzvqYknUfaq=&ludYvaYbsnfUV=&R486CbVVnZrUh=&DPr8GsWkfl_Wj=&z2QkbOXYlWfji=&EG9BdKYgYUkZe=&GI7CEqXkYcbkZ=&LgZtmhWmkmaXY=&zRBZgEXokpgb_=&Kyl34_UqfghfU=&wHBcm2WhVqajf=&i3U3veZYYsVfZ=&RxZWs5Vmdhl_m=&iXoJzrVaXppbq=&qptBEnZgimdYV=&HdVJtYYUornXX=&w58aGxWXsiXZk=&ZGrtXsVYcprpr=&4WuVS6X_hUmoW=&dhHllxVngpWrj=&MuAdyXWmcoYZg=&ZNmODPYsWUejY=&GjlUW9U_obckm=&XbU294XZWhnfg=&ENKCogWnZXbgm=&7eitAMYbolgge=&DfKtvrWd_pbfc=&TJQ8PoWYYklUs=&tfCCPWUndrYXY=&S3XvqDZhnaoqn=&WgcxnQUYmXbYh=&D6FWmqZgjXfdZ=&N7CWr5UUsesoh=&X5H2_nUXel_sn=&3U2Y4ZUiXfejp=&F3AGi5VWgfkiW=&hrNq3PVgrdaY_=&zfEtDvUYbajYY=&hmCLEyUgq_WrW=&m_8P25ZYsdfrc=&RB7JEHX_UXXse=&ZvX4VmWrgsjbh=&qdXAd6WfWilsp=&R67kIwZi_ljqc=&oY7TTNVdlo_er=&GRtvhgZdoemqj=&vVrsuVXUipmcV=&xGnwYOXlmhbeZ=&KGjN6UYmjkc_j=&PItWqVVakoUnc=&ZJnZV2XrgeXse=&PCQgzQVneceXc=&6iEXaoZXiXfod=&EwLPl2Wqpacdb=&wI7VBZYlsVmlX=&5gp72aWWmaXec=&9oewy5WegrZnk=&ScoTJYYYbfkne=&QHmro6YVsqWbc=&euz7bEUZ_roWj=&Wmi4GbYfUVhrn=&ng2YIeYnhmgpY=&Z4GYcYXjZZrhd=&AmVS6SYVnYidc=&iCO3rPYaZmofh=&JRTf6fWoZU_Um=&AyuzlZUfdqqoa=&yXqpAGWUfjrUc=&WMwo6IWZ_hobZ=&USl3CxZkfcrbr=&mXL68wUrll_Wc=&JFKFR4Xnibgje=&38C_LfXUdnroY=&DqTaKiXWhchVZ=&xzyGbtWVnakil=&xPoH9OVdamojV=&pX8LzaXgiYZac=&lwby9qVfgemj_=&dcUluzYfaaobU=&l9Bk5hUhWZfsf=&itxfMpVmUbUbg=&BdLqUTYoraWkY=&8Pa4B7X_ilqna=&jIvbujYk_grln=&LgktyBZhWYdgZ=&JhOnjqXUV_Ubq=&ibpVMWYjsZpZe=&NLVBnAXqjkedp=&amMDDaXmfYnpd=&QgtG__Wapdchf=&_VNb7AXXeWlod=&v9swtXYZlmkok=&o7bohpUorcmbW=&EPtlebVmjbrne=&lgAE2WVWdgnZn=&hkp3cAVVksnrj=&VKrspgXkUWXbf=&rPGOVgYgcqmoo=&EiUwcqZqlageX=&mOuUN5UaXpYes=&3eq7OCZfjnmcl=&JBkkIJV_ipUYg=&Xw6ng_XbZYdq_=&692am4YhVipjo=&GXsNpBUbfoUib=&itjU4QXndcrXh=&enXZJsYYdfrrp=&EVEAnXVrjlsrn=&NUhOZZUdnVhUl=&uUqZ4BXmoVqso=&rRmdI3VnnrjiV=&GFxxEZXqhUgjW=&fTGxmWZXhVZYn=&SnRKnIXUcYZjl=&3FYS2HUbcdben=&fS8loCVVsUbgV=&92aoZ9XY_iisU=&Ocpf2TXiWipjc=&Nqfva5Ziji_Ue=&tZujN8YjnVeVi=&YZGQ2dUdVdmdk=&KKO3mpWf_dplq=&OR9OUQZfZWhgW=&XK5l3EZlXcXoj=&lOvzZ5ZjWnYkU=&zTeBIOWqXhjne=&nrIaYKYeqarse=&jrMCrGUehflds=&t3WsWtWYlaUma=&i9hiSGXglfeUX=&52p5ZHYaidhjo=&lBBvyBVqaosps=&l9aFolZlahhrl=&MirDxBW_VVrdl=&4ZV5OAYkWgsqq=&xcoqIpYheqUrf=&PEkWlGXV_cZa_=&Lks9hkY_dh_Zg=&zeFrKAYVnWsoi=&9CtWFsUZggbYp=&Eb26ZfWaWgcqo=&RmiwcSWgWgUdb=&sbefPEVjpapWk=&ArDY7IYaglU_i=&SxnK6aXenXXio=&ZuWWQlUgnUiff=&S7vIIEVbnXUlZ=&oMyOcBVYnrohm=&jQJuNdVVibnlY=&3EaXBpUrioUji=&K8uyCSVbXejbl=&ZehjaWYWbdUjr=&wnHUJxZdZejof=&QL35WnYVnadga=&977CMMVgUrqlm=&HVcmQ6XkUnUVd=&j_W82EVZYVkYr=&34ns4fWiaaXs_=&wwVrIwYssfjbi=&fBuFtjXnofefk=&BeQZhCYacpccV=&eUekmrYhrnoZk=&tsGIDpWfri__m=&ZmO4DhWlcYm_s=&MMYpcvYegoYXW=&FIc9E9VnYhoed=&shEvUIYnfdpaX=&OXoF_DXVlselk=&7Y2HjlYdeiesq=&oWLd7FYdoZgYq=&Z6_oadWYegiae=&MBjNW7VhoXsXs=&H_sWkLZmlj_ks=&VUiyWzXgjbard=&BcnWkhZpZmYWh=&DlvOoCXinkmYi=&MaEUUNZZqdgor=&K7AeEHYhl_hho=&vu_jOFYUpkfeq=&horp9DYVVkUX_=&zf3AYQYqdVniq=&u_xLMXVmUaqcX=&i2frKaWsUqgoe=&msx344Zhagnde=&VLOrxuXersX_e=&Fm9_ejZV_njWd=&OtgJ9qVnZhneW=&SWytakVYsckkV=&vgQ8fTUdrh_jp=&P8dzVSWkjmebi=&yVMOdYVgfpnmh=&Pn57FkXgUedlf=&OugeKJYlVanhU=&xc2lF4VahhYhg=&HC5wz3UXYgjXo=&SEyDpdXfiVfgg=&uA4aE9YmlXajp=&Zu8dp7Vc_pisp=&tB9SFGUaifmon=&6M8nbVUYmfdqe=&spbPNQYhopbrh=&3GYfT5YgWiqal=&VHFHI_VeYYhkV=&QApr7KZpiZcUY=&kloTf6VUgrYlm=&_SBrIHZjr_Wlo=&xgKaHvZlXWq_l=&qdQj7TVlfWkqp=&33bTesW_ph_ni=&izgIYrYlnfibj=&z53dtrZY_qknX=&_lA9GcWqhWeZY=&QtJmouUaZYWnh=&iApQDyZfnnoej=&CRr8xdZebaUrb=&lG7tBOZcjmmhf=&i3a3lTXkkqsei=&QQNvFXXemjasp=&yO7hGCUsdbgcU=&SHkwx7XheohkW=&By8N_wVsmniUi=&j46KZrUn_jacW=&QqwkddZjcXXZU=&i7qjvjZedWgeq=&Qmxc9eYXX_dds=&auNGFvWUpUZbb=&Jl3ywxYboYsil=&zlhrsXVkVhchg=&HQSgnoUXbnYes=&xcsW6zVpWiWpr=&aJku4GWYqYVsg=&fyF66YWidXigd=&_B4II8WZbjqkf=&SXn2FqXnhWqhj=&FjWSkcWbVjqXX=&DjYi9hZddqiXe=&WC37U3Xbdciem=&q42veXUgWXqrh=&7zDzbWYamUjbp=&6vyyUBZebsrdU=&iWutysYccXYpW=&qDjH6QYrpqVmW=&JHwSIfXZkmolr=&kUiu2VZUUrbis=&fUb62QYabmZqf=&Rg5M4WXWYjark=&9_LSkyWUUkjZY=&6WpLHHVijnhpV=&ODRDSpZ_gjfnn=&VUQ2HuUnipbjo=&cKvO96WUmdUbZ=&tQPSuuVmcW_io=&bCeS2fVYj_jmX=&gBSK9UWjdgafd=&NijY4YZor_ggk=&7bwz4fWepWqca=&dhRUiBZgmermZ=&nR3RHSWrdbge_=&P5n7gaVZrajal=&nmXk5bViUeqcn=&9QI6VUUXarjnV=&U9uuoYYWqaanc=&mrAwlJYdnlobo=&EfHrWsXmpWngV=&l5_MLvYoqpbUc=&rBZKyHWYlnUpi=&BmDMRkUjqXkbZ=&6uph_YWbleajX=&U6uA5uXnVhqWU=&_Qjqp5ZWkrliY=&zwzkFgZocchcY=&qttoMrYWUWaso=&mBYsVqZfajhfW=&Fdsbx4XUhnUeV=&HILsaHVYleocY=&lPIGzWXYrmnZa=&SaQKsgWeqbYkg=&FpxTpcV_d_nYb=&GA8HOiUebsbgd=&qe4nLRUYolmXZ=&F_8Zw5Y_fqmZq=&Flyw5IUijXkcl=&jpBnHQXpejdkY=&QbDe_TVrcrjVX=&PP5bGgXYsUeej=&ZA8VRvZU_orVr=&RnZupBWboUgdq=&welFNTU_lrVnp=&pUb6EiYXcjglb=&iB_HoAWUffcaj=&2T8rujWrkrqZV=&dDkcayXZbZlrj=&_XHKIrXbopggj=&KGkKaIVYhWap_=&Iehy39UpbneiX=&iHyBpzZclkWqn=&3mv586WcWomai=&N2WQSVXrVcmod=&fJqv5NYchZXpp=&xWk_VnUdalaWU=&R8tN7gZqYmak_=&WUT6k6Yjhqgme=&5QPEzqUkpmcVh=&C6lxzkVreYbog=&n5CSzAWlVmdee=&GDZshWZUerorj=&JVsztiVXUVnWn=&5JYI8nXiXfbpb=&l2lhyfZnWsXcd=&XPFK77Yoghidi=&5scXfbWsrXUmc=&bahRM4UrfeYXe=&jg_H7cYpfhodZ=&4eC6ilZrqkUYW=&WYkYo6XilVq_Z=&gjcucXWWZkXif=&XTTt3xWjjrWgf=&WqiErYVimefqm=&sDzzGGVkbsZlc=&l2BFxIWUqfhkk=&QI6VbmXe_bm__=&oPw6iZYhZagVp=&69apPHYlihmZc=&LO34zZZnqVndm=&azmWrjVkeVkbr=&JJHGcWVssdedZ=&pHpUiRYnpZZkp=&S3BZ2lYebnpXl=&CrWKltZolWmog=&q_8RljVgroUib=&7j3wJ5YVqbegl=&DEx4HHUbiYnfl=&FeMrmcXeUqbfa=&ETzSZoXbsmdUl=&XIQuyZVdhUnkh=&4edIdUZdiWrjq=&YXeOpRUWacijj=&DsWBHDUmnbmcr=&h69sG4VWUfeie=&pvUn53ZhUfVll=&7mvxgcVll_lcn=&EFMr7jYrlVnW_=&dtMB67YVjVkYW=&vgs2bbX_qcesq=&Sdn6jLXleenpk=&_JbdLuUsUmllf=&lNG8zvWrhmeos=&LOF8mgWoobglY=&MqnTpZUqrXUXs=&PQdO3IUoZioaW=&D3RZOIUVmqqWV=&nPNIpcY__X_mW=&CjjihQVaqmbUc=&a9Hws8YohXZcU=&TmUqgoVjc__nV=&AxzZHjUhnngon=&Cn_vhoYmmafhm=&qWpzdaUfmfZVm=&VBId38Wpjjejd=&ykMPrBYjcch_g=&BbkEiAZfbmagi=&6LCUSuXV_WgUh=&PZu4qpZWXklY_=&b2kqYHVVhlVVc=&KoALb7VYVirWY=&AVvUt3Uaqlmgn=&XGG5PAZfaYi_b=&dHXoVCWUmeqel=&wdRFwKZcdoadf=&LDkiGHVXqYpgr=&ORjVD5Uocjksc=&ByExIeXrmWasV=&laIpfbZdjdYkh=&NWnDdKVjXWcZj=&2IxHmtVmqWhmj=&y7bm5IUiYhWeh=&aKbOIPUcgZeaU=&VqVllsZUegaq_=&fepxfHYWZ_paW=&QuaNyUWZ_Wcml=&tERDWxZUmhmcj=&kL525WVhoiUar=&dpEgxLWjgfoba=&e4CVmlZnVcWbg=&qFFodRXXXnjfX=&_CgwfUVblbmgY=&gaZdzfUksgial=&fmjJUlZqefoab=&PNaheyXchpgdc=&fGptj5YgrWWhn=&BtmRlXYjcaiVY=&ZLzt5gWmVgWZb=&oB3vP6YfWqmZj=&HaqleKZeclsbW=&lEZxKzVkeZfjn=&A97EzOUYgXqqj=&Pv32v2XjeWbol=&5ed_MdWYssods=&3cVhNVUXqsWrd=&IPAS6dWloog_n=&WFyD3UVqeZiUr=&iQPLcHYlcmnas=&9AUOZsUokYdVo=&jVrmZjZWnqsec=&pCk4nXZpfilan=&wMKhHcYdfmaoh=&daR8qSWcfbpri=&5UEGcVXonWdjU=&GiOdQ4ZgrZosm=&jlZ4O6ZosdcZZ=&B3p884XcVg_fr=&4_OcEZXYUeiWm=&8MrqYvXosaY_V=&6RhgUkXYlpocd=&LAUejzVn_XVfp=&DXA_LWZZr_bgi=&d3vzhwWmofjYX=&UKO76sUYmj_ne=&HFUq7KUeel_ZZ=&9nLydEYYasomm=&KLI6A2XkYebsi=&lNX8G4ZVaZlUg=&uvZVvxYXggpW_=&lGL6ATXVhgVle=&_rsZMpUdahmnn=&3iLscSZqVaYUe=&93aup9UklYUqp=&dcuUKcYedghrj=&piCANHYiVcUpc=&LJkOEFYUq_mUo=&pfEwnPWmkshqk=&7ZGe_vVfqfpjq=&IGVzqNZicWjdV=&NEim2eUaWYmlU=&NjPoSyVmnishb=&SXURnQWsUchno=&P8nzxAVlXjYrX=&QMQdnmWp_ga_g=&EBeNWDWVnWpej=&gVdDC5YfZcqee=&7GPm4OXilirjh=&LlivLQVZX_lkV=&DsNaUPWUsaXXc=&BqbV3cUqbriaq=&PtiblDUdUjmms=&dnJFlIVmUjVna=&hCKiYQXbeeVgf=&96F6ekYijXaXb=&UBy6BiYeeVoXq=&Igiw8pVYadbce=&VkLVmXVrehUUc=&4Yu_3QWssVZfr=&PkDOGVZerombl=&KLTTHjYijndan=&Rnp263VfcUefX=&_dvOiCVenUhdd=&telHinXkgcoZf=&oAcqBFWYVWklb=&jTAavVYiZonUp=&eWIrX8Znbifak=&7wA7miUUrZnio=&hZk2M7VpicWsm=&wpmSDBYXeh_ga=&Bq_CJuWYV_elj=&LJJ9yHUbiXYWp=&Gc2NOKYrnngqq=&gawE5sWj_jeib=&Qsf3SPVrbYWln=&uwgLhxYafhaga=&sqJTlaZndafdf=&8LojquXjUqnmZ=&mC7ylrUXZYofq=&H8WbxsXpibphY=&OTPQMxWrdUck_=&dSHjcZVcbhXpm=&6muoTlXrnaYsj=&kTVRDKWijjaaX=&SobSfXUrsUZXV=&NumoGtUlVeghW=&mlHfj9VesgpVo=&Zdcnm4ZpcVbda=&xFMkOYZlUqqmZ=&QcDbCvXZbZVYZ=&NxrX8tXngloUg=&N9ggkwYpsjnfW=&l6u39MXVndcel=&lTepfcYVhsaeV=&e6T8y8UYfjjgs=&7p_rudYZdldqk=&ids_SmZjjUs_b=&fL8hsVVWXW_Vj=&VgM_xRWUijdYk=&q5oxaUVYhY_sc=&Fnpb3FXeWfYbl=&ThBjUrWXk_hrr=&Wb4moVVsUYjUq=&s_3SQjZYZhVdZ=&BYA9iQXprgZim=&fjCLe2VkdZsmY=&mJSETTZpsfhkU=&z9O6YzYfebkdd=&9UpJuKVYkqrkh=&tq3ECXVlV_ZsV=&KJEct4YZgdfsb=&_HiD9QVhfjjoq=&jQ_na7Yeqkegn=&KIuvBXUrbYs_o=&qQ5RzVWbpgpch=&MAALkJYUgYfll=&mSEndRWcqWegk=&tLtHRDZrqbrcr=&xDbak2UpgobZg=&hZyOE6WsZb_ph=&SIgNxtWUkcZVe=&A5IIZpYpYYcVn=&uDYhn2XoclWqV=&rQnM3DWsmVlfh=&v_6o7GZYcckkk=&e3J5xdWeijokj=&Qpfe3bUVdiYrf=&8BebY3Zlon__l=&Xqy_OPZqVsoXW=&9jGHXaZrgmcWg=&48C75zZZVX_Uo=&sYGykQWXWj_iV=&YOsKi8WknZceY=&vAsotNVecXcgc=&MB6FINYmojco_=&4n4GxoWjq_Whp=&CHUGvvYXh_pWn=&4DhA7aXVeZcmj=&EwP6ASWqdidsr=&K3pCNaYUddkib=&kjGYafZkaoc_k=&QzNwnbVfYWfck=&J8E52oWdajldc=&BQHdKrYdWqsZX=&3YlHObWsmnZXj=&XYFtp4XrXhfVg=&SnwSH2Xqgo_ro=&RekXOjWYchpnZ=&lw2yaKWaYnoci=&db_JWaZbWbZfl=&PtPuZFZbeZcpY=&fR9ujzXZjppcm=&z9sYVXZeXsYhV=&VpLsobVlglqUm=&tP9wKsWkXasY_=&TEXiKzZmYhUqi=&VHuXHsUoWqnaa=&6tYypsVbWheob=&Esk3DxUhjfpVY=&4FcnX9XZ_njVU=&a_xKZKXaX_klm=&G6zq7SXielbZl=&Vy3GG8YUepkom=&f7kfXoWoidiel=&ROvmEFU_WZ_jg=&wU4UE7XnbpfqZ=&cv_M8sVYlppYf=&6tcO5jVnokfqX=&EDW_wHZcaYodh=&2aeKTwUdZfabn=&bcOqkkVrbWnll=&NGsUx4WZXqoca=&RtNjD_WdfqWeY=&W7eoRJYhdsZhh=&Gyi26PWhjnhmi=&P4JCGNUVUahVY=&l95IZVUVWhlb_=&zL6JKWUimUsZo=&_6HGl4WXmlofo=&6BqgsgUjqblhr=&RzaeJVZsZc_mb=&XSoZxWZbcWaUo=&6oYgBiVfUnbkZ=&gDxzsQZgmodXZ=&6tcuUAVWZqs_Z=&Dymr_GYXYmaes=&dcLIhVXbrgqXj=&QwsQbxZj_isql=&PgcxVTZscrbYc=&Ch2JmyVnjhV_b=&OCg_pDZpWofoq=&PxSG9lYWsodZY=&GbSB3lUipWmXc=&jIPOCgVodgqoV=&maPWwdVhVVdZj=&X7JuaAYjYkhed=&XAPWU3WX_sXqV=&fYZF_BUrlcikr=&ZLHlIRVWr_paX=&xfOafaUZf_pmp=&T4VHYsUbfqjZn=&5RRPuXWbcYhn_=&_TYLDgVjfXYm_=&lSJfDgUp_glne=&7z64HhUVlZnYU=&w7BKbpZhpZX_p=&U98JRsWqaonVa=&QapRMaZbbddY_=&VdNOX3VdUliqq=&o6xwj9YesckYY=&Fr4WwvUiqslse=&mB5JpTYcXgjYp=&RFYTMxZdlffrd=&ZmFI3qYho_erZ=&7FzT6WXqnppWf=&e__DOgUscVano=&rGYwf4UVak_ls=&KpR_3zZpqXUlg=&h3RDrQYgYjlir=&ZTcHCLWhkgkgk=&LsY3GWXemZiVr=&WNrfrDUrWgqZm=&jel9mHWbhWpbi=&eH4VLmUYdqUWs=&A99zmrWspmgkU=&HBTpYzUUbiYml=&OdTYbiUbpqeos=&LG7xOMVsg__U_=&euxeXOZUiXUjm=&9VVDosVbqjbmY=&5rSSwRVmskXen=&7GbrIqWjofYdW=&fGrZkZYpVoffb=&OXuNt3VZflcWY=&M3PM_eWlUie_f=&nxy5BpZd_VelV=&YTymJsWaYisWp=&n6HlscYsfqsai=&i_TtLEWqiWWnh=&5BtVniXWqhfpd=&cObn8uVlhWcpa=&_SIhn5YdjggVk=&xXRLPHXWlkosn=&Dv8V9HUakgapp=&XcPUSVV_laUdZ=&w2wPsRZWUhsgq=&QVHhO5WVWfkfn=&S2AoXmUcZaYqi=&9siSVaYXVWsnd=&3jSLbFZl_Ukdo=&LFwI4pWb_Vqre=&ifkIWbYahnjnr=&hKkwGbUXmscZd=&fxrkUiYjWjfmd=&B7g9AaVrZWibs=&l8ADosY_on_na=&qLPaNzWdYeesY=&kGfucZZmdq_qn=&bmhmJXUsZoZ_p=&v9xANdXUmpZoq=&cvKhjhWrjfVgp=&drNpPQXqofqZd=&A6tYQBWmlpdni=&frTZn5WXq_aYZ=&aXwpjWZWbjeh_=&hKEWE5UaYlWip=&On2seBYWjgXhb=&LpWtz6Xqoiqib=&TelUC3Zc_adWb=&VDNRAeWXigdWb=&9AehK9VYnneUf=&o9uRCrVkrlnYj=&YsGwHFWdqUUrp=&pEHrinVenmZqc=&M3GPbiWmjgkg_=&v8HcX2XUpZnlV=&otwNG2Y_VXdns=&uAeepZVoWW_pZ=&vmAp39VaZaeob=&7ZbYlmUrbmYjn=&8Hpu78Zes_sUi=&8ZeIHGZXhecpg=&ZRB_8oYqpcqee=&8LEWU4Yaijmoj=&BWwHQPWZjrbrZ=&yXXXyqVoclsVV=&MTTHDRVmWZpVc=&E8k8YwVncrerl=&c2phvaYrojpYi=&JAiwSaY__heUl=&IvbQfwXW_mkqZ=&O7LlLDXdcW_kf=&24XA6qVmVUXmk=&c95OCAWcaYUne=&hORhwIUdeipdp=&raVjmCVYfpWaj=&3y6ImQXVrjios=&_A7_K8WncbU_q=&TUl7MiWfsjead=&nZ_pZjVpsVhkg=&VkYwaKWmiYgi_=&nJ7msKUdZjY_i=&8Z2vmjZfWqVmZ=&U28gU2XlkkYec=&Ynu4rbZhblsrU=&kxtISmZbmWZhV=&qOPp58VmilXnk=&g_iP62ZXkkoim=&CEXCGEUffqXpY=&vyuocrXbZskig=&_dJfkUWarpkqs=&6L9dAYYbkjcXp=&I2ouk9UYZpZVm=&w9NM_nXkUsaga=&qZEqUmWYiWfpa=&cWPkpQXVdrcre=&2yINekXsphjod=&SO5BGaYYmpXai=&tfj8KyUaciZdd=&JeYtAXZXpnfro=&UBEgkrUXjekkn=&oO7oe9WedVUsd=&TeE6xgWpehVYj=&SXxPoOVqiiUol=&ez7VZBUgadqXr=&GQIjlvZqqb_g_=&MN3UZ7WidWZrW=&mhRcLBVUcbWad=&pYo98dYZgeVUW=&xviwOXWUWUrng=&VebikBXgdXXfX=&9yirLjVWjYrba=&BgENWTVXYaWkc=&F7flsDVqmajls=&V_934wXYVghmW=&yrR9BiXlVedss=&uPpTyVZhkWfmW=&MLhwhKZab_onn=&4WlWGhXVnZrop=&4x7xOiYeddlpi=&PTiFnlVpjcpYU=&39w7oKZnifgio=&UhM4TtVrnoces=&3BbzdjUUknlec=&slEhXWXrjXaea=&sqE6TfWrckohW=&4IwQvdXmalkUa=&r_EHUyWsfdo_X=&Eupq3hVhks_pk=&ddOYe6VppipbZ=&Tf7Hy6YVfe_kb=&4iXrpsXhaXUjh=&YcT9LqYVgckok=&xtpEZxXiomhjZ=&74tEx7YbcZimk=&kDcYssVhpoc_V=&GbrHafUoconYa=&qcGVs7VdnqZmc=&33kLTGWnnplje=&_twZdkWVhehfs=&O7StCgUYZke_V=&pu2UWiXonshbj=&F2cbv5UpmjnlZ=&ifdEpvUshsXds=&wZavMVXjhUdrh=&h4EMFYZcYdmck=&ynEnDgWfrhkla=&ihFjKkZjmWXon=&MoJ2PlYZlZmXZ=&2MGPg9WgVgnrU=&fJ5ESzVjbecV_=&NxJbvRVrXjkkf=&952KhQVrVqjfk=&n99jeHXWhWdfi=&ZuX4qPXkheicZ=&NR_uFKYVoUiWj=&ZwFaHiYWVVfYd=&ekxMYSUZiYqXk=&mYFYyQYsscnmZ=&mx9MBbU_ainhe=&jGdQLsXsYUbrr=&DMowjWVmnpYWo=&rXQ8LFYrdjhWo=&qtvcF9VdjcrgY=&5vA4xIVndXXZm=&RNM89lZW_gmjV=&JJz5lSYbrVdej=&RMd6DJZUaaffh=&foShq9Vpilnds=&kwYyehXZnecqp=&D2cXvwXqcbhsa=&B8epbhUciZopa=&HrBlIKUpkWZli=&FAlfxrXknflZb=&VcOS_hVnikjko=&3EJ3otUrbnijd=&q773DcXaon_sW=&rxv4y7Vob_ZVn=&fNu6VaXeU_khb=&VdaQuKXqrsYgV=&M734EpXjidb_Z=&UFM9xVYkqrcUZ=&hZhVaTWWnZWXZ=&nfNIAxYeWhWU_=&x6GQXPVsWciVp=&9Bk9x3YfXrcgW=&UXtzOrZaWUiVX=&e6Yp2VXVobfqb=&HYAItvWkegfns=&PxxmFHUjiYWbi=&xJ6TnBXkdmp_i=&mtCl5OYsiXoge=&7tvrrUZlenXng=&bhpBmrYadonjf=&s7e3rWVe_kXsg=&nDwNOwXW_rXqZ=&8peXLtWbpVZUY=&F3MEWUWosiVpe=&yFvE2tWcdoegq=&zTc9I3XcXapYq=&QUFdMWXnqVord=&vovYcMWXXfZqf=&rPEIXwUqYhcgj=&JzprSgWZYnbka=&oTFFK8Zsfcefc=&P7D7iFVslkYbV=&6ViC3xXcqangm=&_oUkRFWkqafhZ=&rBCrtQYXgXghg=&oGfUbwXrgmkXc=&I5h6sLXmeZrkp=&nkMNylUYcagag=&yKaAXLWsUgsql=&Y5aVFGWbdofYU=&lAKwJmYpcsmqi=&rdri7kYZUadkk=&sZGTWiWj_jmeV=&gRrUuJVVdfimc=&ysaxDhUkaXVio=&WoStsqZUVYYqg=&7XB7gNXnXscbg=&RKWLawWrYfYXe=&H7yLgrVcjYWmY=&xLUXT7Vokdqqf=&IGYph4XedjcoZ=&pn8LuXXViVmjW=&NVU8KOZqkqlYs=&YSyMMpWhUbZ_n=&mfmUszWsZdeUX=&WuyZGYXmicifW=&DBtGBkXYcaUom=&dp_iMVVmsphfk=&OBgpw9WWiicdY=&GwSVDvWdqgdhf=&cK65U4ZWWhcZe=&gocC3KZYmaqqm=&ldcgfQVsngrjo=&zGvLVXVoVfdko=&Bm38GLUXaahoY=&tof9qtUsmqdmV=&FVz86MZcqbgrd=&gEWYi9Vi_kZbq=&qymzj7Vsagnsd=&fpnhi2Uhj_off=&UxsLTvUecksfc=&t_5lAfYnsoaUf=&zrfcK4WVlmfrd=&xYRI66YVVYjqY=&JvhmJ6UbZUWfn=&3NBYpdVXgmqh_=&ueSXi3ZWomgZg=&zwpI_wWalpsnq=&Ge4KJOYeiYoab=&2H7oIgUfgfdoa=&q7zc_cVbbZmim=&96rpaVYZmfiUp=&gEeQBjWgkX_lV=&eRSXRKUepYVgo=&v_4C8TVknZeXb=&Ypk54ZUfpqhWb=&Jb6239ZjVsbWV=&P77m43YXaaico=&ZZaFAHVViYjbn=&Ntu_ewUsrabZa=&i9UFkyUUmZZnj=&ih5TYAYnVllsr=&eYHxRYUacbZYo=&JeCw7CVcleomY=&aOXAnCYnmegmY=&ASUtu7WnosXZj=&rEbPTNYcnaYrk=&2B_QQ_V_UUsUU=&4Ps_rgXWmrpcn=&YOKi_BYedWmsV=&zrzRRhYZVfUso=&NwR8RIVkl_dcg=&tyQvkjWYaUbmd=&3Ks4_ZUYpWaUm=&KwhwtVV_UoZWW=&2jYCrmZcVXsds=&HxkylOYYokWbb=&DbfBVUYfo_Zoe=&bIOmOZUfbZZjc=&pU4MjNUpchsdm=&frmSs9ZXselZp=&WIkkfOZch_cZl=&AlSkjKYWZdhYW=&opYfRZYhlWbbj=&o_LuKTUsmfqmo=&mDIFI9Wo_idVr=&tBDn_wYinflek=&W5DZnOYofYoir=&nmarUSYkpbhqU=&GhM4c3Uig_dVp=&g4573WUoYVdrr=&rlUILVVoZWWiZ=&zSizRkVanoaiq=&nzGrjGWUgYWqX=&9g9O6gZVXlWqY=&OJycCpYcoqkVc=&xvWH8MWdeaeeg=&iysDiBUWjhphl=&ZCLZbgViqkfmj=&oYVcN9YijWkgU=&pqlDiPUhVhhXo=&xgD4seZmVfWne=&p6_GF6WUrjUpi=&XajQaeYVlrpij=&qZZiMmWaicnnV=&yj24IpWb_lnnl=&xOFNqpXWagce_=&mdEScXYahrm_X=&5X68iHYgogqgZ=&hBKGmuYmsbfVk=&yHlC5WUsjjemh=&BsqCtUWliVXem=&IWBlEnUonrpXa=&4tFUBxUoVedgk=&mBEumoVlfcjhr=&Vt4CSLZffZcol=&qd9CKKWrUUops=&6ZrD2cWchsXll=&RPMBE5XrYUrno=&4WpfECZhhedaY=&vtXXVIYVnn_lU=&eEXArgXYYaejf=&a2VQtVWnWmfUd=&C6BzjnYjnqpWd=&3YRTJiVildbfp=&ofMuCJUdigVsj=&fTtCMgWbXUieU=&KXYhIjUYligXi=&ifsCCoValZbcm=&e85EIdWhZZenr=&jsO6wJVUbjomb=&wioXWfWdW_cZp=&57QEpbVXhaik_=&NaaiAlUpXsiWd=&otbzzpWVjflok=&asXycpWobkXnq=&7OeQG5Wl_mmmo=&Go7GvnXXskcqp=&ZJ2fPWXdiclZY=&5Q_WvgXUsamsp=&ipEP8AVnejjck=&nOg4dAUnhZhgo=&ltUl8eYU_eZkY=&HhKD5mZoY_mVo=&RKKqdGYqsfbej=&LbduQsXbjeUVi=&mBZgzYYaXUjsi=&IdXSLMZknhcXq=&ddg8gaVefdjpX=&h78VCUVmhXYbi=&gGX6aSUp_ajpm=&3iC4ZkZVq__eb=&pCjUKdXbeYcXd=&XCUdf7WpUVfUn=&oqOaSkZUkiZmr=&aitBTRYgap_iU=&PZEQ4_WdpskZZ=&OhDCXNYqqsUan=&NVo2pkZUgcjWd=&3A_HfHUhembiU=&8jCCJQYZYVofh=&FWGJJ_XaZcgkY=&5FHJgzXcgU_rl=&BRfWYQUibescZ=&Uozt_kVXmcldj=&z_SCyYYdWYdZr=&yBQIdHZr_nsre=&UaGUGHYnoohmo=&DU9ymiWo_mZYl=&ZNFpiJVWmdsmk=&NVSHKPXcYomjZ=&hPatzuVcsgcWe=&Ov8rbtWdgZjsV=&nzbOW3VXmpZpj=&UhevGqVUrrfop=&etacFUViemaVj=&LO2FvKYqZlhdl=&lJvq_AZfWfVlf=&agCNXUWeeqrfV=&EcJocCUdasqVc=&42oEZhUnjslm_=&OYWA5yZfg_Wgf=&HVagvkXcsmagn=&cfbqkMWbfYrmg=&CKcQpFUYZon_p=&VBmiMZZUWYhko=&9PBFvdVYbUhqb=&_z_CvWYWYXUkm=&xlRsMcWqcsdnY=&wFqWe4WggmagZ=&nMrRbwWZnUddX=&hoie4HYViYXdj=&_m8BcqVfacWWr=&FIe6ccXZaicsh=&tSJoGjUpohqfj=&ETBrDTVqsZijl=&xnrDOBUVsnopr=&QwKfSwWaYahZc=&P8ZafPZlYlklY=&YPJwyyXhohghh=&pymNVOZipnhoq=&MPyfG5VmfXbnm=&WBQWovWcdpjii=&wLD7acVdgYdff=&BXCUvbWfUjkpW=&Q9GIe4UfqWsof=&WJoXJeZmZlmnW=&6lvoZTWfhhnrV=&yJCLNjVVUmirq=&hrimDKXVasfoh=&mfbdmYWkiYYco=&8CQt4_Zlsaohl=&tKZyFGVkqUVYm=&SkzRcnZbpnZbc=&xRRWp5Walla_f=&gFxbraUbVgicj=&JFtP_LUiYsXaV=&DrrabWZe_aiUe=&ywsJslWrjbmdr=&SxbIl3YpgkraW=&nx3dk4Wprmrhh=&cw8zRlXeorfXl=&9jbBVtXaYndVY=&Q4QIKUUgZcUUZ=&pwsYKlYXbecdk=&eOpe57YW_brpZ=&5ODAjIWcVmhfq=&HuEUpKXbcohZZ=&9bYphnVaempor=&vKlVJhXckbhrc=&TOtq_rXWgnfsX=&hRoVbtZUfpUUb=&iJeVyzVrrniWs=&kJDEIHZWYmXYk=&ioGpzNZoYnWiY=&2Oh4TEUiWrdnm=&jl9AfKZgofZbU=&fSvSb_ZkdcUVr=&LeVXCeZqqpnnm=&Iz77XzZqrgkdr=&Nk8dAUYUhVlWl=&4mVyqoZgdVUrp=&mwXxb2YlYcsge=&sD7VTnVfammVi=&D8tpCPZncoXqp=&xxd7mnUYiriYk=&ygR99AWiZqblj=&uiilhkYaWmZWo=&8SUx8AWVngYXX=&r3P2ttWrcdpir=&9LDxZHZXqmYhX=&bMoeqCXZqiefh=&Uog5TcUWflfXk=&SbvEf9Y_egoVZ=&9xIR_iXpfflXp=&z6pFGSXsbgWVW=&g5lHcgXXWrgqm=&IPTK5bWhsU_le=&jVPALGZbjcfkX=&OGxKEsUgfWmaj=&gKXVtkXmdbZgs=&oCUghpYqXeZ_r=&3XL89ZWdbiXfn=&BTS6RgXggmZml=&KwTPY7Vhk_Xdr=&EBlPwKZZlrmgo=&xNaAhAXYmZUbd=&unD6qNVlYjhjk=&TNNYxWUkXggc_=&CemAubWYXYjWm=&w7tqTAYofdkmZ=&bVRQ5aYbhgUgs=&gVcRYXZpqXsmn=&p96aYWYjfneff=&GcU_ccUgjgdlW=&KdE8dAUdsicns=&Y4J3hsXjclqna=&zV_NAoVXZXfWd=&h4M2oWVckgaid=&x4ucjzZZ_biWe=&oI9PnHXsapWia=&hI6vOfWr_bkbg=&R9jpexYrafpjr=&bhUXbOUqsrYUg=&Q23sL8XfsjU_V=&XG976DZqilfhq=&V8OVY8Xiscgea=&7d6MHyYbmabgq=&UP4u4vVlcdY_U=&6YHrUlZfgimVU=&et9gYyUonqido=&2vk8CTZgpr_nZ=&FdmF9qWlZnfVb=&GJihDXU_sqcUj=&KripC2WcaZZkm=&uuOhEmYfksgoX=&8ynGJ5YfndnYm=&pezJlGWgXnmYl=&z83usvXapriYX=&eFxHSyYkcaYgo=&K3NOF_Wpnfnnm=&ZQXM2HXegZpWc=&qWrqeFYcWkj_s=&FKyn4cXhUqckW=&w_YbD7UjdYUdW=&kYXCytZpmnilh=&UAjNi8Uajhejh=&KmdCOTXj_YUkb=&4l7Cy9UXjWUf_=&LyOjRSUicVZXh=&tzDAD7YUhqssU=&kZwbaiYfWesqU=&qZDMrqYhsZ_fh=&elhIpMVZhlUfX=&vjzQbXUVXcZjW=&PDjCtXXoWjc_q=&8JUD9EUfZXiZg=&QDpNIoWZWZVfg=&b_94ZiZklhlsU=&QONaiwYlZeVUV=&JZlzWtWceXp_c=&Qwr_GTXXdicok=&oxyxSbZ_iaUha=&dVcQxsZXlbVYl=&9nbI6DYamiWfW=&Q3AfjVWVgaViY=&QUtKMuXdZbabr=&QE4pluUmgbida=&sX9YESVhpjedX=&9cNHOqUbbsmsd=&Lr32WqYoWkV_l=&eQkjPuZbcdWfb=&uiv2sIUfjsWil=&lmVfrHVknpbZp=&Xzy25FUVViWVY=&zRZ8vIYjsdXbo=&Vd5YOhYpi_aar=&YW7blLWVZVora=&NAkSAXWX_UXal=&bvFClpVkUreqm=&EWvSflZpepUje=&VuzBteZ_iigjZ=&vzJOtEXWgoidV=&NztVd2XlWcjlX=&Eq8rfXUYbVVpd=&MYaiXVYhpsUlU=&2ydmKiVsgbpsc=&dISEMtXaiUojh=&_ruHtEYkeo_Zh=&UTwWqHZsnZfZi=&hmbqieZXZmdbY=&eh9_DrZjdenUi=&RwUJ2WWkb_agp=&_axgBSWXnogsj=&CTtpWRY_larhs=&uL4eL9XnclpYW=&RhHO3HVdhog_Y=&plpa5SUofolpl=&DLCcl4Ug_VWie=&VheBC7XiXpVjZ=&VvZhZUYk_brlr=&W4Itm5WYjgorl=&4ZUqthZVqbaea=&3ubutlUmlmnhZ=&ZMwPj3ZVphseU=&DIvC5lVVcjdrX=&DV77N2YkZigdn=&lRNVrSXVYjkZg=&9QEqd9Vc_cl_W=&tLxYMfXmdqpge=&rtD8RIZWfmc_g=&znIKjPYnjsWeb=&_9sANHVfghknp=&wK5bXaZXcfheb=&gohMEXYbZdrXs=&uUBhbYXnXXrkf=&kQgEpeUgnaeYl=&wSpfkOYlejnic=&6hhhaNYYWrpae=&Z4HRQaZUkUfXe=&DidWGLZmoWejW=&dliHScWUghphh=&RiL7bgZXbmjYY=&chfDKCXYalYoW=&Qi_z76Xneomcb=&fMGahHZmjm_Zl=&7PyKc9XnoYfla=&q3qlULZlXikio=&kq8BpYZrmYZZW=&hYJJuNVUqbjkU=&B_3UnzWdehnrY=&7L4PFeVVYWnke=&6VmmvRYddbiUk=&PxAZcVXnVpVZb=&tAOQyFUc_egjm=&djHLKPUreeeef=&P8RjGnUYrpeom=&Vyb98yZholpjZ=&AkOb8bVsjpqob=&9KuykHXnepgcj=&ofeOThVpZZklj=&aBflwQVfWpVhV=&HygDB7XoYeoYj=&a7ATPwVZXmemk=&O39OHWZjWsYXn=&oi3454ZmjYopW=&IBTtwEVonpWrW=&wjMNDkXlcirjg=&pOcTZHZWagWdh=&Iis5HyWVZr_kp=&8zfYyOXUXVqfU=&blTLDaUodjWac=&QRTyfJWaepdla=&ouGJxWZnknhbs=&ZUOyXEZZVkoUg=&Vw9OgWXZXm__X=&nnn2eYXilsqng=&AXZZ7pZaepiXk=&g7wJjkWpepdmk=&5nxJIaZaflYZk=&S_bMOKYo_fW_r=&gfALYHXejdgdW=&TShNWFVoanqVY=&qJ6lfLYinokVk=&2npyoNWUebiWg=&mviILHXnYgpVi=&ypJgvRXqYUWdl=&IX5VpMZlcmmWm=&t3zhx7ZqmiZml=&OshreMXlirafr=&45xjLlYrlZVYW=&qUvGvyUqlrWUr=&EHBYibWbsUlXf=&Z7ZeqbVs__opq=&I4j5jUZhllorl=&zf3FksYrfhasn=&IkbhjMXgjmm_i=&nUUC_SXficfej=&YjfmSkYbhnWeg=&VfJlkuUfYlmbo=&bZOzfMUlYcjpk=&B7F2FzVYVpWqf=&QaLMMLVkUpi_p=&E9522YVZUglVr=&klObVYWfXfenW=&hCxHLnXnaWjcl=&s9PDOhWssooVl=&KxsmXhVcYUcri=&4HN6B4YqjZdgs=&YMwrYpXUsalcb=&aIL9rdUakWVad=&lelvcmVUbbWVe=&KKkybrYopaYhn=&vNzQsAVhafaYf=&knCYFEWUfrpZf=&uULqzVXaVYkZV=&Mb34vhVhoYaZW=&BsuYogYWbmXVn=&nigMbNWUcggkm=&CU98C2ZlcYegd=&6gI25BXobVYob=&XFR8JDZjcmmXm=&ubFw8rYefhgf_=&SN6p6DUXmYmWV=&CxvgFAYlnknsp=&cMUgWnWiipjgc=&bniLMyYgklfpn=&bt2eKvV_qgjsr=&PUvWRyWdreiki=&VXipU2Wsffl_o=&3jYjnEWfXdsmn=&SIvNZkXdZUakj=&SLcfboWecpVmU=&VajLtDYYrZWZb=&tBY7_EWegjqkW=&oFu54oWiVmolr=&USTvyeXXa_jhb=&zLIPfOYjilmdg=&qg3HISUkVgUqr=&y46bgGZhncfqo=&2xZ9HDXV_n_nW=&Dnx3CBUjed_Yl=&h3mRHdWasareq=&VuEEldZ_roXZU=&HRIvlPVXrVhcV=&5ML87YWiYaoVa=&xZJ83cUlaZWZm=&xGIPooXnWogUl=&tWSsrKX__igoo=&SCTpyZZjadjfV=&IHQ6eFZcprqpi=&ad2rSnY_sYmcZ=&DyJSffZfpZibg=&2Nii_QXkWldeq=&VusMW7ZeXn_Zo=&lkWOTnXgWekhe=&_7SojyYoWsZUj=&B4dVA_VnZfriW=&7ROjhJXmhqVqk=&CvyyVwYfnpVls=&IKQUenVXbgiZa=&KmmBsdUipcanV=&OfivVgYaWhlVr=&FUS7fQVndjfhX=&aGcuTCV_ncfqj=&CcBFEZXmnWnUX=&M2UIdLXiZZWpe=&KkYrApUfenmfU=&QriSJVYddqmhd=&NiFkbHZripXah=&yIIfoQYk_Vqjk=&ddkY8vUsUcXVp=&bf7PsBXjmVern=&j3ATISXWkbgsb=&fJSr_RVZZjaad=&pM2o3EXY_YnVi=&PxeoRGXg_qegd=&jKPWqxZfacsrV=&L8MnDcZWnebqi=&SVddfpYUWWoZn=&Yh47RsYcWrWXs=&3RUogzVjloiWk=&PYqjrvYZXqpWa=&OljsqjZfsZamX=&5ej9IgVehshen=&vFs4bLXadXWlg=&sVlFjaXihnrZm=&adboWGVkVkhlh=&d4CkxcVnWfYWb=&StEZ27Xghhjmg=&Bnkcd4VgpUk_X=&MQSrPUXnsmdes=&TyvfQWXkrdUmr=&Xb7tePV_eXokd=&8Ni9LOXodjcUr=&e22SYaZXhgg_e=&ztiljbVsmVskm=&ApLmvIXgmgrdX=&U2gnSUXcmkjml=&zOqeIWUhUeVa_=&shvQ8VVfokhiU=&96t_XOYkgXYil=&fUZAfJXnbXg_X=&2h2D_sW_mYdhn=&ePke2QYaXqofV=&r82AftXaa_aUX=&cZuVvHVYbmZg_=&ftZoyEYmWegae=&7pJAw9Zbnnohm=&KGPZ37Wlsbb_e=&2JrzH6XbYnehj=&ZNTXbeUaabmod=&webV_SZkUagdj=&3eRQdGWnmesis=&slX9qFUZ_mhoc=&5lcBzaXXoobZo=&uaJNRLZbqXbgX=&o7YhbzWcjUneW=&TeaKwuUngqXZX=&KHS7P3UXgnZcq=&9NJn9iXlXWmqZ=&yynnTZVljgh_j=&_mqqrTVrZdZWm=&bPG7uKUmrUWoa=&SxzU2oYWpr_Yq=&xSEvKTVbipmsh=&FVHIQ2VdcY_qb=&wTEhqlXqlssqs=&l6698KYepYdgr=&ShvQHMWelembk=&VLFpXxZloWafY=&BiojO4XWpYW_q=&horWIMXkii_pn=&D6uheQVVjhWoa=&8LPdRaWnnlsdW=&bs8icvZ_bgXno=&4BRi33VblmVdZ=&FvK5fUVfcoi_U=&cIe8Z9YlgbWZc=&eEVwuDXgrhhls=&N3xcacYsfbhYs=&WoPmYFYildmcZ=&asPguUYgdendh=&WeNv4dUccXirl=&_TbjhhZrqUpcf=&FyDkVIYajYjrf=&LuFFAKYebZm_c=&tvUnhbXsgnron=&wJZilkVZonZVZ=&l3_p_4WYkkfUX=&sj96Y2UUhfXiV=&ZDOJlWWhUWkpb=&7VNd3LYY_ackr=&fz5CpZYoj_agW=&uroRgoYbUpgZY=&mu8PnhYiWUaYZ=&GW5WmYYnfmYkf=&l9aPveWWrpkia=&Il8o2KXbZWgr_=&yQD4_sXsoUgUe=&IiRMXbXloWake=&DoMtM_Wgi_nWm=&VQAgGbVdjVfhr=&SuYdeCZcpVsYZ=&LfhBkjWekUlUn=&uXA2pnUokljkh=&ZVu74EXjpaXsg=&lpD9mJXjcondd=&5GV5jFYgUdXam=&5Lf2wlVriqjgs=&QwuSViZeWqknY=&bksBHqYaeUhmX=&h8lAYvYoeeXVp=&i9XpxpVckliZY=&BNK5sXWboWWfW=&j7cR6jVfapnZU=&73vj7yViWjqjk=&rfnNFzZaebsl_=&uFHRvZXhqWXYp=&8hbeTzUWimWUW=&62LcZgWYbpYYj=&D8fh7vWcdngnl=&qpZ4GxWVbpiem=&HJdqAVYpgjjlZ=&2VNwvDXsm__ad=&GzrhItUimVbjs=&NC9BFxXohf_mm=&RWpNzfVVfehss=&fGTicSWs_bhXo=&QVsyo9UYocige=&g2H57tYpZshUl=&TZ8YrmZcerXUo=&UAVGg_XecVZdY=&QpFVWdV_WVYhm=&GgnZztYqbhlYk=&SGERtnZlYffgU=&PuA_Z2Ycslasj=&ZrjWjOWZsmoZl=&ErgtrPZWjqpio=&SG7kOWZsbodVb=&rDsR7KZiqmVma=&jLBxtsZYclihX=&p4aqvmZbVkjia=&MXLQn9Zcijbmj=&3ZovMfW_fWb_W=&edcF8GUgepVUg=&vS3p9YXhmfbql=&g8NmYKYWmsjrh=&CJs6DAYsaWYqi=&qo9pb2ZgmrWlf=&OT42qUYU_glaZ=&tMvw7RUjsVYsa=&Hk4DRWXUojbgo=&wlWNBVWmshZbm=&mutCNcUYhnjjp=&3ndGfjUYXmUff=&hbq_9IYnpocsV=&BnPhI8V_pjbjX=&_FyXXGUedgdlj=&2lC2eOXnVksZ_=&LZ4OR7Y_khqUo=&Gwp62XXnVdkjY=&gsrcOyXp_ljUq=&6phl9zUe_bppl=&uZhbtoYa_okkl=&i7JDi2ViVaVre=&gCJSjoZmibYaX=&n37nZeXkWo_Vc=&jXKwHkUklnnpq=&mEvG3WYoVnZid=&bAtCjaWXfr_Ub=&dvxgrhYUZhaic=&cGAbmjYqcfonV=&Y2Mb8ZZjVWkVf=&s3uvnCXVZh_jg=&OENUawZraplem=&SI2PgNWqXhUfp=&eTNfpmWWbXbXj=&ravbvKXpXjUhg=&wZ7TTJWZjrXor=&kOArBBZldrYYo=&7M472VXbffskY=&4OS3yBVXUmnoY=&pNm5yYYmogirU=&pw9cNiWeWgZeo=&9rUup9ZsidXUm=&YPIe3DWjm_oUi=&gTDVXRWbr_neb=&afXyK9Zml_Wb_=&uJoos3YVpnapY=&3b4a9aZodjms_=&PUt3HgZckmfeg=&od3_LPXVqdVic=&QxZft6YoclVZr=&n8q7XgXcVbUhc=&7CguBWWcqsfar=&wuHRr4ZosXU_h=&YDtY6iWraiqVe=&WNZKr5Yogsqi_=&yJlHvLZli_lha=&Omh6GOXlc_qer=&hXLWGBZkocYWs=&sHWiH4Yfnkqgm=&p8hmA_Zbahpbf=&wrWWPeWsbpnek=&QDjif7Z_UYeWX=&p9RJzNUnoUbnZ=&DGRbOoVkgpidf=&cEzfQ9VUX_rVZ=&bMOT_bVhpYsnc=&iCYUv8U_aahdX=&4sNcymXpX_ahh=&4cSUEHYZemZZW=&tM8pyJYaXjjmY=&no7v6QVb_oj_f=&yXtqr_WqU_ijh=&yGJw6sWZZhoYm=&ovftiUWknelUo=&UtvF5yYgYnsVs=&i8F6CvVskmZYj=&2RleUoVhhUhmq=&K8MQSXWWrW_oe=&VWYQo_ZpbaaaX=&ckDdetYYdjgiY=&bXl3DTYgfcmns=&WyiyAQUebcifj=&kHa8XMYdcZpcX=&XzIuatYWYVocj=&Jxi_ZFZVrmngZ=&4MUl4kZXhfkhZ=&vsoKgcWbXkfZa=&5pbSFBWnYbjrj=&j8hYMsXenYdpc=&9HTU2OWpnZmhg=&zxnj44ZrsZhhs=&53cF69UlcnYnU=&MvMJf_WhZkqXb=&2iynaJWkXmsin=&aezunIWcVeaUc=&aMRIfcWkargme=&NKRIgDVfknqYf=&onZvPXZdn_geV=&JP3qzDXihZoVr=&ybOFfjVhkpXkh=&xjpiq4YkoXppc=&H2BWYFYacUXnV=&knUoS3Xebijcd=&M5BatgWoen_Yo=&Y6CnL7UZgbVYp=&rB_ujrZ_emrad=&3xy2bGZZjeUsV=&DTv2XvXlq_lic=&vw42ZKXrslXej=&3JZrmLYpodYWr=&k8xZL8ZYWbZch=&hffaQmYZVVoij=&AzNOVIWY_drie=&PYkPInUkrbdfU=&w7svFaYehihli=&EEuTa4UUjhYVg=&ICNi9sWnjZfXb=&Jjc8XDZe_qhsc=&oJv3LPWWqeprl=&75PzasZqejsnk=&ENqsVOY_WnUci=&QENH_RYfdnqUV=&8agahEZYUmrba=&mgBvPQUVkpnrs=&OXelIXXqqcrpb=&IV3Ae3VnUYfha=&ApCozjVlgUhWX=&FhuyxHV_hcmel=&xMsHXJUkZVnjd=&Pt5VGTXemdbdr=&uhYIySWgZgWZW=&Xh2nsGV_VfaZl=&DhgHQIVWdfliW=&j5uxh3Ypmmmsp=&E4d4K_VXn_Uep=&TnvSy2UaZoUqg=&kCqWOiZVdXapq=&qQ4KZJUndcpaj=&kiCLiDUeXljVl=&UC7Gl5YWsbjlp=&SnZaRIZmUrYfp=&Y8VVbtVhXodXh=&a_FkBLXfsbgUr=&WErrR8WUbdkkn=&6vKzvAZsbfWjd=&ANTWAYVdiblnk=&JD7wL7Ylcf_Xn=&GVr6P_VqsohWb=&saeMEsYffoWnk=&vTFiCQXpneXUU=&9iGNDEW_Vobrc=&ZDixKlUfWga_s=&GpgAfhUgpY_je=&HzXqktZW_ikkU=&jHeplMWdVqqfa=&E98qqBVWc_Ugg=&wAaHE2XYneXaY=&QjeNNnZoqndWa=&5KMhrqVdpfXi_=&fjuJTZXooonnp=&sJT3oSYmqaZpn=&v5jA2tWronbhr=&DKHuoiXsgeepl=&kjTimBUVldZqs=&GzkIgDY_WdoZf=&_HeJyDZesbXXm=&uccgaHWqkrknW=&NeMZ4gWkkZbse=&RgVpROYbVeZlp=&jiI9ETZUjZfeb=&PvukXmWUnsXVl=&KCEbPOYca_j_k=&KyEUArZleaqio=&uTIyhkXgkghcr=&rBZrNCZhbWhhZ=&5olYY6YeZmfja=&ag74IwZnjVlpo=&5wLsMMUeokVle=&MCFTXPXojdZlY=&6SoG78ZgbanZh=&4NjisxYbUmZkj=&2NaPGZWeiXrnq=&gxmzPAXienfZW=&zhpqIQYfYWZfh=&SRcwohWWme_ji=&JP3WKhUpXUsrX=&XNSdO6ZfqZYfj=&DnUWjkYcanpao=&bpDJfhXfmomeX=&syFSLKXagsYYa=&Ri66XoVjkYUdY=&yPlhAkWoknWZU=&Dj49ZyWZadomh=&oFrXbSWsUX_pX=&pCS2baVo_fofb=&ZbfqNUVXoUjas=&KLnPw3XidYrZg=&xoTvmKX_oilhn=&oAqXpVUWqcZZm=&AlI3X_Vrindob=&29KifKZrXahXU=&tuoBF3W__gqqk=&WbR4HzVgcdVYn=&EcKXpqV_WXnWY=&yoU_RcUXnhsla=&dHp2zMXjYig_m=&7VtSOKUmmnWcY=&gCLEvKZWmfojU=&uZZ6pNXgorokg=&xorkK8Uj_UhVp=&EhgrORXcrlqml=&E77UHaXhfqpsa=&kYstDdYfn_U_q=&LDfwTQWqUpd_p=&vzSHsQXnokYZd=&diPDhPVsn_Zp_=&7nsgSmYUYeUhZ=&lc7Rg9VXmffWj=&_PyyaSZsiVsgW=&o6kBMeYqhashV=&5zr677Xonhbpb=&j3MRRtYigqabe=&J9w_CFUfjisVg=&kQWcwGYcdWi_o=&Q3hhfiWXqU_jo=&3CGzseYqsmVlW=&hCCnVJUncfbbp=&lTEbGGUgjqkdq=&U8u3CPYmmYWpa=&5ppQ8ZXccmsnh=&4vT63bUnWkenc=&bKNolfZYgndVV=&ZC7pJmYsnepgg=&jDeYaKXjgqqb_=&Y9yzOzUmhnpbV=&r2r_PIZqaVggl=&fZDpiXUnUWdUU=&2rKtZcZr_cWrc=&S7rzXoZdesdVg=&4l6md9X_fjmrn=&TsvJ6IYmgpXgl=&ciyLGrZjsYfbp=&VSClaXVeaeUWl=&qOedRMVahfqZd=&stOigdYWi_klg=&92bFM2WkYrXar=&yod3x7ZdXjssZ=&k9JETgZanqrXf=&P83DKSYigedfk=&QizrTkWUlcnem=&3CxtTiWmgm_aY=&S_5ybuZeZdUmj=&seHZvrVdlZghW=&iP6FAUV_gVYos=&7cvm3XXgaebUh=&EoFyunXYpnbkX=&LnIeUZZfdjfV_=&PU2OsWVpXZrkU=&AIH2wwVbpgqWU=&kmGBAvUaYnjcf=&vOJSiuYoqsohY=&D9keEOZflpmWm=&qKnKouYooes_o=&_HhBszWpmVVUe=&fu9V6nZjXUYgY=&sAFApoUdmiqie=&jdoMLQZhleleW=&i36GjoY_lieZr=&YCEcn5Z_UVpsr=&V6xUaPWjaYhbk=&id7dKKXesp_bo=&kf4CklZbXZoXX=&IqJDAqUWVndik=&Nq5fPcUfknYok=&FkGA3oWddhUYj=&zBk2FqYZYnlnl=&upnxAkYcnajok=&ZoZL4cWbnlpoX=&hoZR_QUibYaqf=&RAkmaUWn_ipbr=&GU2iy2WbYhcp_=&yf7U2GZk_kbZo=&NrSe7rYlsqWUZ=&fccBmnWdiXbqb=&5DQrUHUbVWf_d=&JxvZjrUi_Xdeb=&FwaWoDXfogq_j=&CyIUNHYUgpend=&jdVP4TWemljeV=&PIUWW5Xkh_lZk=&7lPovtWanlUVU=&lFT_SeWkWrcVs=&dU_YmPVkWrkan=&erakkyXepUpab=&BRRrJIYeilVce=&bys6rPYopgZhm=&X4GIiwVZg_dki=&UJAbN7Wsnld_n=&DDNAW3YkiUXp_=&vhiKIuVpn_dVW=&Kx7JGFZsnirXs=&WvHQQFXisVcnV=&TzTeD7YlrZfpi=&gZQxITUrdWpWV=&AVefBYVaesrYg=&aDv5RIZaWYYjm=&WXR7ZnZompnsq=&RGYfydWkgfjo_=&oHChJtZcg_epn=&KyabqgUmcbhWe=&fPE_BxXbfpkda=&cX6XucXYqgYjg=&jzDlnRYVXfo_q=&SdH6B6YjnkVbg=&9jMzFxZbXpesX=&65jy7bVUhVoiZ=&B_FEhtXXgUcdq=&hyegKFWYodfYr=&NwCXRuX_oqZfp=&J2kVKUUoaVYiV=&ORntZvUdmboUi=&syHj5JVesYs_X=&dcNnUeUmUlXee=&UmYDfcW_ZgVpi=&dNjY8YZogfesV=&gSgNzeVsnqZXV=&o52BGYWhgYpmb=&iJ5OrRVa_nZcX=&FeyXd3XWbVcWn=&Gut5WsUbbW_ck=&9I_mLXWjmfhqY=&oZfGoMZaqVqji=&3bAZ2dUmncU_k=&Ykpl5xZboW_so=&f4jA2hWUnbsXl=&aZPooyYeYkfaU=&WNWKoeYp_qbhj=&aWpuQBVoVZZfo=&GgQOwMYfaelob=&AzEEjjVZlleYk=&mtluRLUWjXfq_=&X93gpmZ__naji=&M3o4IiWckbfdf=&uCxw6YUbhZhUV=&RB7jMFVg_mVsr=&tsI4rYZ_Uqnfd=&RqlZqBUhlmUqh=&afv2eEWmUnYpa=&NMOcpfUqeclYj=&mJImBKYfdXqZn=&LpHxD7Wo_jilg=&yJLCi8ZpnXnsV=&PyrQl5UXhfcqZ=&7RBI_WXkq_mem=&3DgbTpXkhUoWj=&smpGvvVeXqpfi=&WZg_64ZgUjddU=&Jdm8jNYrfWWcY=&8lQQQCYcnaUjr=&_8C2lhZqmpZqo=&A8gdHpZcahpsi=&E9MRFNXUomlnX=&OCptohYajhaeU=&mCO5SSUVasaem=&ZfxyIjVoe_Vhm=&OlWFF6UkbdWkb=&QlTktxVcXaWkZ=&pUFSwEUekXVUV=&MLZ8CSWjpbZ_q=&88UYdrWZme_Ya=&ayAlZyXhndZfn=&fIb7FwVdrZobl=&Ml87HfXdYhjqX=&kv3jZdUcipWae=&QWkZLlXqrrZdr=&Qropy7UgnV_dY=&6v3xeLW_obnVi=&MnXIHSWnaVhUp=&WDWiqaZfVdbop=&R7xfGmVfZiphj=&Z8JeMXWope_Xd=&rCfU3MVrqkVoc=&Gnk7tuUWlimbb=&TAv_DVU_gfWnb=&MKbcFpVqmmksf=&h567WOYsWWZYY=&gC7RxAXjUaXqq=&VURuLNUmfkomY=&yEtK35Yibcl_c=&OwLid5YX_ehjW=&UB_S4oZXpsjkX=&TXgP5PWgrWqdj=&mG4TN_ZUjUjlm=&uJIdqMZVnbicp=&uui9jpYrpeYpU=&9zDwwIWWbYXih=&RW3a5uWYYaVfg=&ahmIfyZbXUXli=&7rPnCbZaZgfWW=&dkHdu3XbXqsal=&O5UZUPXXcfsgW=&VYZ_sZYdWhmg_=&CwPTxxYjjaecX=&LyOmIZXXolUpn=&PyNdyyXbbaYqZ=&bMn7fxUUXsqnX=&2m4rpfXaoarse=&Zpt9jhZkVW__e=&Ab7OEuWfoYaoj=&SFMDbBUsdskqW=&QkorAdWqXahZo=&tUvx5JVkcZiod=&bGd8ojWckjrZa=&HWtE_GUVonajk=&EGKauMZsqcoY_=&nShx8wUkkqnok=&ZMcQaYWdeZrhk=&II3VPNYdkbpkX=&AF5o_kYoWsjiV=&hrcNbnZbeXiZg=&rUAKfXYcrX_fp=&9GOeLYZfqiZXm=&gTYfH9WX_nllU=&6w79QNUWlgkVb=&AC7CIHYYlbojX=&nrTxrUZXfYqdi=&hKFD9JZXnkehj=&ENkhf6XikXrjf=&dgfGjLV_nWZme=&lRhlAXYZahnmb=&Ats9g3ZjhrqW_=&MRHj6mUfZisZ_=&KSnIdIVcbhher=&hhBUe3ZeYsWaj=&92dUrwXZapckb=&Dng8BuUjhaols=&nHOigKYjcZUns=&yZ9QR7Ul_jUkp=&savlWhWcsgWld=&wfibkCZieesWm=&wSIPZKUh_Xsah=&cYh6UcWdrrebV=&U3kHQcUdXlplf=&cIcnKkYqcifnq=&t3AVr2ZXiWVcg=&WttoLQZUWYrmo=&mR_adWXoffpoj=&7TBwbkYihqWkb=&dzTgPjWephWam=&vbNJe9VlVdZgg=&H_3UoEYYXVimk=&rCgXc_YYibjpW=&mf66IvZcselcr=&8ZYY9tZmcdhhk=&DeZuDwXoebUck=&ww5nBNXfZrqeY=&ejRYlhZlqW_id=&HXGUw5VaikVVc=&ESTIXKUlUjliY=&r4AaSdZXqnXjZ=&n49e7FUVnjjhV=&tSqVHKVknskYi=&6xDVKBUcmgeiq=&NhqSlNYdWlrms=&SZ5MJ2Vln_gij=&tdIZMKVqrpfeq=&LdkzIfXcfk_ap=&QS6QOCVZsZgra=&O8FiOfWcjmbis=&cLS6k6XXapWqZ=&t29ipOUUWdZe_=&cA_Yf7UanVUVX=&iK2MIiVfmfhVn=&ygjD2oW_XjoXb=&NLNNTUYhbUqZd=&h5tBVzWqYXkrY=&E64uwfXfrhrmZ=&tsfZlFZgecojm=&OB3cF_ZVUWVfd=&CRRgPjXWfZUcY=&f5tp9rWrihshm=&a6kU98XlWggUj=&GzsOK2UZbUpnf=&3bI3BLUsUiqXV=&mWweIsZfVVljf=&V9q5hrZq_qWda=&jnCfvjZccicXY=&g3bRyfXWlsdpU=&m2R2byWfjUWmf=&V8to_BYXjXVUf=&Wedg43Waikbqe=&QKVvJQXmclcdZ=&xILfmtZalgoml=&QD3mV6YfiWmsh=&opySisUVlmXaj=&9FeJOGXclnkhn=&lzwXTZUsmrrnn=&KJ9kjGVajUrZf=&lUvsi7ZjYZlYl=&r3ypVMXpYUqnZ=&OKE2_eZejadsZ=&BU7NytVYZa_cm=&vKmzolXeji_pV=&yj9KsDYppkqYh=&yotbwqYradYgb=&7qv_9kWaclldZ=&Xq8eLkUaZhVWZ=&KelNbaWmV_Uba=&q4O6nBUZsooYc=&EKfGGfXddXlma=&FxD8pVV_XqZdr=&6DUHBBVippnnn=&H_7iBkUanfofg=&JaxKszWdmVpfW=&zUOih2Yigsnah=&LGJet4ZnphUX_=&ysPyuoYZbXlhj=&Vd5XXbUqXWXbZ=&JJ_cNdZnkVWkg=&9kRkyZUhmpWch=&QflaFtVgbrbYj=&NPOhQQXpjUn_i=&GRSUkvYnkinne=&WVd76EVadcppe=&h7dVpVVdjimbc=&MBEBeZYnojqjj=&SgEbgVVWoljUc=&uIeHKIZeXdmng=&jOVwcjXnqhVXV=&assSkCXlXhUYl=&_QntoPW_n_cjs=&GcvNfUUcelqqr=&GZToNbV_fodZd=&qpmz2rZiopiXe=&6uyvjkVYbYUkg=&d55AaMXqqmUcf=&N7NlByXleakli=&yS8EGeUdefgqY=&zn6TwKYiVUgck=&4LmOFNZejYWfe=&fRkZR9WsiZoga=&mU7pstUsaZpps=&KIG3ihXpknZei=&hebPZ7ZdmZhZk=&6_RbYHXcUheql=&nIEL9SXsikXUp=&AlqPtrWhVWsbc=&UZCZ2tU_qkWqV=&fSlJd9YX_dYfk=&gqUmY_YfnWXdd=&8wbalnVjspcem=&jbJlX4YlXrrYd=&dTS2OmZksdnpk=&vrJ3f4Wqdbiqm=&Llm3brXcbrbpY=&nbytjZWXqjeUc=&jOAmE7Wso_jpo=&_9q_AAZrbpZes=&U9MGFpWUoWZZh=&J3A36nYmfhY_i=&reAUZkUjcYbfa=&3rXUh7ZYfdlUk=&JVqbeHVmdqeZs=&_skVcVVjinjlg=&egT8izZVcoqbj=&WaMqZBVkhgUZi=&27tJsGUfdganj=&xcyFIPUlkkmcf=&8gGQDeXUjVlgX=&I9NNFuVd_em__=&4ouOEKZsbeeUa=&hG8FFCXdidfjo=&Udv_7DYcVqsgX=&tcllOCYlkgjeg=&I3xUx2WrgUkrk=&ulEptWZ_fnroi=&iUwqSIXfWZVYj=&CwHVfJXpsgqWr=&Z_jzmBUmdaoak=&bh7CGkYhdr_ao=&CxDaRsWipqYip=&9pwVICXWYasUs=&YgaP9QUrhdXVf=&aTNQpFYrYWnra=&MDQLvFX_Uidl_=&3aiSrXVsscpZo=&SQ96HqYXkWqph=&ZlLpGRV_qfaWo=&Wa4RlWWfsVoeU=&YScOB2YhcZZfb=&TeaGzCWgpcglb=&KLAv98WiXmir_=&3Dr52xXiqs_go=&5bFvNsVmlgsrm=&hLvR4PVUrWbia=&FLAeBsV_Zfooj=&q3MCKSZnYYahU=&UwQZaxVVZqdWf=&MrSj7TVfVoscl=&B8exDXVgjdqeV=&E3l9xRZWgfUaW=&ktFy4HZhgdYgc=&KOv9wWVjrhgae=&Olmga2YXbfkic=&X4IF9nVq_gakU=&2y8ryzX_fggro=&Sq3ZuGUUsaYgm=&KGyAeLUddXpnf=&8MlG3CZZihgdV=&sgrPoiZZpWcpZ=&t7D9oRWskikfj=&xQTu6DVZbopdg=&8yXcvwXifsjmh=&ZinPI2Yhgcdfa=&Lx6ttiWhnbZ_c=&OLWNmBUXVk_ok=&gIayMeVXpXfrb=&g5ldjpVV_VsWa=&EIltxpYb__imk=&zcIKyxVscnUcZ=&YfZ_hkZpXhbgZ=&5hxBdPUqmmgXp=&wdEuTZYroiiZa=&ogQ6ZMVgWbZnZ=&OhEQNYVrsanio=&JQb2B2VZrpr_p=&6_SmIcYfpZUib=&4A6NynY__cWip=&93sTWfVpmYrUm=&VRLD2XWb_qsqo=&FyrWtBXbWdobj=&VtEqn_UXU_glg=&L_WcDiZbpelgV=&qrIrWXXpnWagl=&ioLKNIUfnqkkn=&ulyBaUWlhfbVU=&QI7RuPXeYjagl=&_NBPNMYXbVggi=&6Im2REXgrjqlg=&YdwmokYnVqWcs=&aMsbBWVXq_niU=&A5XcviUccqrYo=&f_rjfRZgsjerh=&FtWYHbZfinUkk=&sSuLz6U_bWbWa=&2VfDY_VmqecoY=&SNZxJVWkomWga=&lLrs8kZWdXXls=&Wi9qKhYqgqqeW=&mZWxdFZhVZVpV=&oAf6pLYbqhVnp=&WaIjxDUof_bbd=&f8UOKAWapdZjj=&QN6VPxWhUaYkn=&Kf65kBUoUkXeh=&ZJRMBCZlqsnnZ=&EmX3fDXkjUpir=&4wRIBVVjkrkph=&DAxKefVbYdbhh=&KJX_54Ufirio_=&y_2KPwYmgkUfi=&kHVfHfWjYjlb_=&KEevq4YpaqZcX=&9_8iFRVdVjkoc=&YSTEdsZg_madr=&vzaQj3WZXjbU_=&EgVBsLUXnikWk=&kmKcZZUkVrUZk=&3kjsoHZqmhfWW=&SXv2szWVclbai=&Z_EepoXdjojns=&7uwcH3UWVqsmf=&RNkkKxXWqmXgm=&ZOFHKoXdrdZf_=&OmEeFRXXmZgmW=&j9qLmUWcpjsZY=&zdNcqbUhepWbs=&bUkXDKYjWZ_mc=&ZUDPkdUUmnqhr=&9xo2SUVcfoVmk=&ICbKXwUU_ZVmn=&d_uxdkYdqkUZi=&wo8h3dXcajkUq=&HWQS5gVjcZZbp=&8txRRzZfhZXqo=&CMFDTJYVVWpdj=&83kOnGYoqZWe_=&WmaEl3UVrcsrl=&Wru_QGYf_V_sm=&eJnRp8Xbbmloc=&sdCBkdUsds_Wh=&gcNNAzYic_arl=&bAJskfWZsYrcW=&OR3wwWViZUijp=&aaWAhzUrbiWkn=&2p6C7SUXheXir=&7z2smBZoiqsgd=&m39KTCUsopYls=&PKHS9ZWZcqjW_=&_4_9i9Uqboalm=&DC2DsvUXqZWjm=&JAYwWjVXpqYYe=&emW92ZUUbcUnf=&vwEeIFZeXigiV=&bV8TDPVpXfZmq=&gErTMaVq_VlaU=&ffV8g4WhZdYgr=&ejBVNzWWnmemf=&rDLhrBVidehgk=&ndGfTpXWXomk_=&VDbrShXVWkZch=&rvKOGGZgWcn_l=&uwW3aGYpckenf=&wUQ4eMYgogspf=&QPfRtgWWY_kZm=&ciTmjzX_no_qc=&32bMpTVrgiZs_=&EymBQwVjgiVdm=&m4NocbVi_hfXo=&aBdTTFZbVhjhU=&YeSIexXkjU_es=&O5YRbOYUWjjmX=&_SKfZOXbbprgk=&ErOJzrXZmZpZs=&sZz5iHWYWhssn=&QBbtgpWrYjlqW=&en8MTGYebZodd=&2Rdbd8W_dsso_=&596IKGWYadZWo=&twtxYDUa_lYUa=&RZAUwqZXfmbeX=&vc4nIEWZUgsgf=&C37KQmUrZrlVY=&vxKOBoUYkeonj=&tkRnOTZXrciqi=&uqqb7MUe_fdqa=&mJszsiWjhbUYe=&DA6wRwXpUbYhq=&Tx9oH2Ybrlprc=&Eep5eUXsmifUU=&gJ5FagZYmXm_p=&KfcrLVXVgXXns=&E36HtwWZVXqZk=&z2i75rUoWjdbh=&TJtWnAXoVnjmX=&BLa5oHWmpsnnj=&dbfArCZisiXXi=&Hp9PMTVXbeflk=&aRC8WEZpsiirc=&mzGc3_Xlkogoo=&htBEUHXoVaYkp=&N3JN7oV_qicha=&dwe36SXgXicaV=&cMMZiSZeVibVm=&Zie3pIYfigZYZ=&aGuGZ4VedmlbZ=&lznE4BYWarYil=&2dXDf_WknbqYa=&Q874WZZkdacs_=&WutEJUWsgWgWp=&OFrl3zXfjhemf=&OihF5MYZmlfko=&Z84pI8ZlrshkY=&TiXZo6Un_Wadl=&nhqHVqZfarjng=&EIau6gZsbnVse=&vhUpjXVmoa_WV=&a_RpXOUYeVXXb=&bGLXjLYofapiW=&KbE9EbXlakU_j=&WwzLSnUYg_dpo=&gg7er6W_prg_n=&5fCD_DYeZanrh=&DqewaRVjZbimj=&TfstwZWbeqjro=&r3rNh9YpVssXa=&H248u4XdZb_c_=&YN252CXmj_Xrg=&NJVQ7HWlkoZbc=&OM5jmkVsanegW=&hUleIKWaYcbfZ=&dEL_s8WVfbjlp=&PG67rUXlYiZqp=&Mi9IAPUZYmoVU=&2TYZX9YnqXkap=&wRSrA2We_XoYV=&CgxYqKXegXapf=&p7XkGAZYnampc=&2sVK79VYmrlkY=&97QEyxVlihemh=&GLENOAXdgVfYh=&yOf3r7VsYYbhe=&loNIm9WrXbka_=&8jcg6XXWpeqnc=&cpQHyBWlcrgdh=&Y5Sg_yXZ_lgdp=&6ec5DqUensUoW=&EYnSIMZkkdsdr=&z55U38VqWmZrc=&9zViufXbgbmri=&n7VWDPYUZWjml=&Dood8nUdsalkl=&3JQBuTUniVclp=&rGY_flUqYhbfj=&KYNYpjZbodeej=&u5EEbUUXpZnkW=&sUI3RGXdmUUga=&NSiHXTYYdlafg=&aC2ByHZ_snhqd=&ImuXHBZXfspoe=&ucCQ7SU_k_Usn=&68vp3ZVaodVnU=&8HTAYCY_fklff=&Jai2ZjZZgeYkZ=&yJAc_kUohUeXs=&vEf6GqYpbcmiW=&SenMtnVUhkbbg=&KwgKLEYaVlqrb=&Pz3iAbVnkkjnW=&NIen5QXbgbdrm=&VFRGEtZejdc_o=&iZTMucZWhjdiV=&OH8uioUVlZpdY=&DVkjvMYfZlclj=&VG7P7kYmesbUm=&fbSoxMYdolXZq=&JumRbtYbakhX_=&MG9YfmWokbfsW=&tEG7RMZkpmkYr=&6SnjK6WlXWcYh=&EiYM7hUenkgnW=&9ZHSG3Ujkf_nq=&qfTkNZYX_kfri=&Ce7UvNVbqUodW=&az2EURVocaYXY=&8nSRQ7WsfqnYg=&fyPzULZhqXYeo=&znPg_xVjXjmbY=&uxsf7yZYhahUW=&kLM98cUcVjXie=&SdmXFPUjYnmfc=&aPvSKeXrkWlXr=&ncUIMSYqdXhfs=&Uk8Td5Vahabon=&zsF_dkUXsbnja=&LsM__LVaZjYnp=&ZDA3yWUdYkVml=&h_yFJVUnkomWq=&4Mh3I7VhdqUsi=&vgxbuzZskVaUr=&4OwVemYrlhnkn=&mDA9jpZpdhXpa=&mLl_xJYqdldic=&MejQzUYlUahkV=&bm4N2EXWdsZms=&QVMzYqUrhhkka=&2Xj3rUXnVjssV=&oPZ5UWWmbdhhp=&exvsZMVrieegW=&ONGbfUWeoYkfV=&CABzmVXXbVWaW=&oSVoAbWnq_isg=&CVA_MhWoWodrd=&SJbqpKUnZg_pr=&vIwybDX_dWnZW=&yrrsHGZdgaadZ=&wXprsxUemdWWi=&JzNnbeUmegVdU=&oS6r2NUikYjUc=&BWwMrCYWaodjh=&fl7di6WXXsZea=&RptgLcUj_da_Z=&ORTfr6XZdYcqX=&mC9gK2ZaelXje=&tjkTgMVcUZaWg=&fVtCLrWjbVnaY=&DERQzdZmompZ_=&9RVyxzXnlnfmW=&njYhEqVkjkYiW=&qEJDWPXcienpj=&8C9WBTUpUjfdc=&OBhFCQVcp_oqW=&RznSJxZXU_bgb=&pLb5BdYWYdbhZ=&M3txZVWmmmWXW=&2iTBrzXghVZhr=&hhcflAYmflsYr=&tZAif9YZidWhh=&649SbSUpfYdmZ=&GJaQzzWq_ksjj=&tMj7K4XnYfmXW=&g5VpefWdVrsWp=&7UkbMdZcedpnl=&4smfBwXaiffip=&GiAloPYdjgjdj=&DRdxBoUcUlUqj=&WeByp3Viq__jn=&yIpASpVYfbZUr=&_upEvhVbedkri=&ViWszHVkajlfo=&NVSClgUZsskpW=&z4AAL_VWkgpma=&XJEDEpVUZUrca=&zWpjAOWmcZdrZ=&cmKwJ6Vpfjjqa=&Jra_EJWUo_qln=&qaK9Q8UUksfcd=&IA_jYbZiZjYfr=&wd7aPTYojakcZ=&V9qsBvWYiWjmf=&NQNGLdYsnsYk_=&oKHGacUrrijfg=&u7knBNZaYiXpZ=&HJnpujYbcZcbr=&l5iqFtZbfkili=&zQvXxXYefnobZ=&uSrXgnXmXVane=&x8SW9bVaonhdm=&vg2_PKVeZrgZm=&CXNEXuUhfojbW=&NlcAJsXpgasge=&Sw7tWdVbebrgf=&bK8q5QVfsrdps=&xDWXW6Uhendig=&ydFmQmVZ_jYki=&DqV7H9XkYY_fs=&evNmi6UcsjnkY=&cyZ4r_WXbqreZ=&OzhNstYlsckjn=&WOvVCIVbgnbqZ=&2aHvrXUiqrYUn=&Wr5fSzXVpl_oW=&LhfrPIYXojljs=&TJOD9vXWVsgqh=&6HXKi7WaYUjcl=&dHwsjgVoUfUZf=&lmiVhCVqdpXas=&TAxgy7ZgeZgjY=&UYeE_CZlZkffe=&B6jtiHVlealYV=&STMfTkXqcheei=&6NFfTbXeodbVV=&DS9WgmYfnWYhr=&sN2mq3ZcZbege=&fMrvOUVkU_jgg=&E8AtBEZgrZkcp=&ckaqPSUijXand=&B2pHRzUVqZj_i=&6hxsoLXiZrYeY=&Q79aRsYZVnmla=&cafb6PZasfUbU=&IhhcXwWamlelc=&zHntYNZgWUrYU=&JwDNdNXmVqoZV=&hTtlnQVgZVWpg=&VgY9DJZYb__Xf=&YfC3okWeffhrk=&n_qv5WZlXpkiZ=&R6pINVYhbXXkW=&GuSCHBWaXidXa=&QbBQIZYhlqrVc=&jd6mi8ZcciXeV=&KJ_qDMUZkVgol=&LKsHYqXohnefd=&axQxiqWnhVdVW=&mPfn3TYkgngXp=&SlNNkOWZbsmqo=&qqfaPhXhpYUVg=&xWsID4VreboZc=&cu49aRUVYcksU=&FJZh_nZhjhhdc=&vnyHKxVpreUjp=&eNxnjoZokqgUg=&3BtnXrX_gimng=&FPOQfTXsoohls=&lyHLaeYsbhg_g=&dCZ6hZZUrpshU=&hszXz_VlVgqa_=&YSApxwYjWijrm=&ylQEMwUYqaoo_=&OcSv_uY_qgWnZ=&eox3g4ZmnalpV=&yrCTKYUVrpqff=&Jt2JevViqpWck=&2quztWYbdYpXg=&4PrZTkXge_skV=&SlaajcXemesa_=&zkhk3ZVenVprn=&H25HHlVUfodba=&E9hei8WZYnlgm=&QjXrADYmrXdY_=&MiNaR8Xqkddkh=&zPxpV6Vpencck=&IurkjIY_nUa_i=&hQ2CznVUhibsY=&GKVzitZbsfdae=&KiuCNPZmgbWZY=&rDrMraWWXjZao=&YmxLUVVUkVfah=&tKWJ9DXaVeeoq=&y6OOFiYpldslb=&pcykDrVrggi__=&gzr4fuXgfZrp_=&pf2YklXVmoZUs=&ShMNDNUjkeb_f=&yVOudmXnfccZp=&q54VWUXn_WdW_=&_4I_YyUXWpall=&ZhRrpSYXcqere=&WYoiaUX_rphZa=&ynZK4jXkWYoYU=&4H3Oa2XdaZUXc=&8unORXWpahasp=&XVkN6RZYiXrqd=&QphHD3XgoraVo=&ysTNoxVpmYbXs=&ydvukQYnYmdWf=&4hKsFjVlcg_j_=&I5qvRhVXZlkkU=&xhiKraY_lpWsa=&vUhkMpXdZbmag=&PoyxBHXYsgrfg=&jSagPKZbqoUZo=&MrenYfZUmnVUp=&sL3DlSXXZkbYs=&82_9V9WochVqi=&sSRYOVYfVYgYj=&wIknyXXoiqhhm=&3iw3JLWq_Zrar=&UYyxMwZpVZ_km=&zOklX6XXUVYWm=&Ue8HksXbbom_k=&nqdWGPZnjYUoV=&vfTfQdUmrhYgk=&k3o3OLXqZXsbi=&yP5cb7VhqnXkV=&TmxzJtZindZ_i=&dG3MdVWpZpqip=&WM5ruQZso_bjZ=&_f4yapYfUscqn=&qD_kemWY_jjae=&AJLFW3Yli_Xfp=&gk4xyrWmoblqi=&xx8dWlZsZregn=&ZJRqiwZfmaYqo=&7msiW3UnYgYbr=&sZmV3vUgXZass=&5vuXfCXWqoWde=&Ot_tlxWlifXhb=&gAXGOFYWXWai_=&joKzcyV_pqdcm=&pxqD8tXlsbare=&tpWVuVUacabUs=&2iFG2pVZUXslp=&tqIZeEWhfYsaZ=&B9mr5uVbVmdsh=&urntFxWcjemhq=&HKvYsAYkcYWba=&XewUEXYUngYVj=&ST2m5XWai_Zml=&T4_FtsZcVnWZd=&g7ckbpViegspr=&Do9MnIUsUcsUb=&jmzQ9bXmojVkb=&yn4oiUViYgjfs=&4ufnwcWbZmqrn=&USgtagWo_ipXU=&PqLERIXis_ZkY=&2Min5gWVgfhWY=&9geDDYWdoVicj=&hl2BAvZbUrelo=&MKeGTdUiVcioq=&VEO4VPXqo_pno=&8kPybPVZqn_ek=&qDnWLzUVVjYff=&7lfuDQZdnUVjp=&jQ_CmCZfqYWph=&8xnhWIYWWqahe=&GjjgGwUnYWXpY=&86mOfcYrhdUaX=&zhTd5tUVnraXs=&zGVmNwWjaqVZn=&6H_UxqXZi_VUr=&LuPykGXhkaUoh=&niccjYXYpkjqg=&OpkgTyWrkVemj=&GhPbSJWWhqbhs=&OintKpWgbjsmq=&HVqsVCXeZYhoj=&nfCEfEWUXbUkq=&OLH3RHXbnlpiY=&oPRFnwWhasqbl=&KKRfnCXomWUds=&FvAftcWonW_jj=&c4CfzTUUlkece=&cICBUTZgbbeqW=&Vzts8IXoiglXo=&GTLwQ4Vrkbhaa=&sI4zcZYmpkdaY=&gQOFZeWpmVcZ_=&MSArbsWqfgXlq=&QTjEbaVZpVdYV=&KbJNHNZoVcZkn=&vVJv7DZsoYXrp=&C_9WBmYfobhsj=&hRujugXfUfbck=&apjevIUfdqVpo=&ywUBwsWgcqUpZ=&YqVPOWZalpZch=&WuuRmTXjmgoUn=&XEnaYUZokcrZk=&Xlw3aAUp_ba_f=&B3rOWMWbglVVn=&_P8lMVXrWWdpn=&CqHc8IXVaVXXg=&GBtpfYUpirjjh=&8k8g6AYgks_lj=&k7QMlFYiibqZn=&TCcrYsUUVmgfh=&Vt9eEXZUekqfm=&JMi8pOUmWZZbn=&6i_CZoYs_qmfk=&QI3Wh7Yhd_Ue_=&pdh9xTUYedfld=&fi93w2XWWmlXs=&xHwvEtUZian_f=&CXbarOUjWhdjW=&FwwCMyZpWnsXU=&HJFLDzWVWgifd=&GcqdoOZsWkoah=&TsiEAaVUsisbY=&hppDiDUlUh_Uq=&CS5OWmZ_hiqhW=&jGkhYXZr_UZfm=&rZAn7VVsckZng=&usEn4KXfkWarc=&V6kwwrZdZXjml=&8FgZ6vXUsdeei=&xUvCUzUrWYbgm=&3PhPdjUnqeXoi=&zinTRbXWcVd_l=&nUmXVlXqZfsaU=&KBWF3VZgjkces=&7vydEQWWf_fkn=&rpJi3nYZdhXsr=&GlrMIKYiYesrW=&XqJTG6Zsdahqk=&lwYSBvWmlpXVk=&eGRXnLVr_abpl=&a_MxHbYZZkiek=&eVsoNcYpiadoV=&KT3PfRUcjp_qr=&QuMuFQYrriYdl=&ZPpua5ZbYdnhV=&R7TBmXUgllVfZ=&A9LvpxZpUnhoZ=&OIxDXtVgsrXZn=&kXOsYHZZW_Yen=&guvYV2XcYm_X_=&wScHLrYcgYaVr=&qk3WiaWaneaVf=&oJAjUEYrprUoc=&SfbuohVfYaUok=&bk53_EXrgceqi=&Kz_9RhYj_eWVo=&uq5HujUjUdeol=&DUNo3lVamiYcV=&KaWrhDYXYUpgY=&36cMfQXbj_Uqm=&Qt58RoZ_XeUsm=&nUCLHUUhZbinW=&HiF5ATWpVhWfW=&BC2JEdUecdhVq=&YwtDIkVbsnUWs=&CfaaSwUXilZYf=&wdfbbsXbed_lj=&gMZTfPWfqmWnf=&X9j7vzUnVjdWl=&qhtGHhVfgqYin=&8zi8y9Varfpsm=&EMYjaNWbpVkio=&6eH7g_YfWjoij=&YKDbHSZrfnXif=&svKb9GZmscncZ=&Pa6BHQWYibmq_=&bHEudIZYhjYli=&qzjVpBWglkign=&dlLgBwWWqjihj=&fL93lIWhdrbUi=&CWu_RfVX_dqik=&foVfoNZlmYZ_U=&3dShyoX_oaceq=&678j2hYorekYZ=&PAHWXfUeceYde=&9sfryrYWYbfqk=&cdFva9Yllorkr=&gWEitGYghVs_i=&WF3Hr8Wlqies_=&m3IrN2ZXifWZk=&ewLMobWXrgf_o=&ToySa2Usrqkpb=&aZqZBGZcmXWUs=&oPZqmFVeraehl=&hN2Er9WfoYWZV=&nuSV7PUqpehpV=&hzkw9WZkkp_mZ=&SFWanUZXZYrbk=&iE4CcgXWjpcfq=&MipfcIWeZhXqg=&8SjPPNZnrbhla=&Jz8BYGVgmUhXk=&Ea2VQaZrbjXcU=&NDDEzJZXanVmc=&g5rShYWXpjZoj=&HgHttdVibjjms=&8dNwoaZ_Ycoab=&2wnvk4UZpcfoq=&ToxtxBW_jcdqi=&WId9NsUsrZfjp=&cFwZFlZWabbgi=&5E6rLoZfYnfae=&fNRJDtXcVXasi=&lNvvk_UhnlpVg=&fAFwTCXionmg_=&TfVWz_V_fl_pr=&H6Lr89WpcWUdk=&Yr_aCmXZZeVi_=&PGRQnvWqjirml=&nNCuxhXahreYc=&6abXzLUlYVZqX=&MoRaBRYrZdrUa=&xY3XRJZpiZfng=&yMMbxaXXXeeZn=&nS6hzkZej_WnY=&hOEmbPZp_ecZj=&BD4ogxXp_VnXa=&if78aqWamgmji=&gR57IgUZl_s_i=&2iWjwUYgXidkh=&CxNVfxXUYbVaZ=&kUcYkyUYVjdie=&IPJkLWYjbWsmm=&wxT6N3UfkhZcY=&WNdZiaZrpYdZV=&8QlzgkYecVesr=&FLoOJ7VXVqkkj=&NA7VWdZnojYcr=&97iNH3Zm_pmih=&o7jAu_XnjVeZZ=&yCclTXZ_nfegp=&rbU65qUoffsao=&YYLetuYqXfYWX=&7FWI4VVXbXnX_=&xQYQFfXUj_dha=&ywqZ96UVfagre=&tsb7euYZihWip=&tE94frWpXYVoe=&frkDmWYVlgmqe=&PLBNiuYcjefVc=&KfQcZBWVW_cWj=&NpOXwuWaXpheb=&SZS4cjWleoWiZ=&TUcekBVfbUmoY=&OorY7RWihjp__=&m_WFj4WijVglh=&bxKnHtWmsVqoV=&46i2mGZXkdZea=&_TKAoYXjreWmj=&NYqZBpVXUqXWY=&lbTh9cUUXhiaV=&XE9lMtYajVqqU=&rbCJfrXlbj_Wq=&qYJeioXU_nj_d=&T9KEokXamonXj=&uP_JeeUbjVncn=&r2rElKYojhahg=&PbKisoYaWkeqn=&aNGQH3Uk_kVks=&a4J_XUXjbn_ge=&Gr3u6EX_kVWpa=&elBbNNXl_Xhdj=&O7KkfdZp_flhY=&pHddvMZhj_bdn=&Gmam4YXjhZbeX=&5Vq2PVZqYqkio=&RRIXjCYkfUcoo=&Z_nf_xZakdVpj=&mXL6GgUUdfshf=&qUpnFWZYabbYd=&jrpbP_ZbpfohZ=&cnwqxdZlWslYf=&H4hhCIZWfeqZq=&Br7erVXXbchmb=&dqPacsUqnZklq=&vkHe8jYnYpklk=&CazqzJUZnsqme=&BHXKt_XbmeWpY=&bjwUD3Yhjskc_=&beQwpgUpZmdgk=&yrha6_XrbWlXp=&mdmjGUUhqUhkV=&LoRRCaWqWreYd=&XtYIkJYgsfmha=&BPgz2nUZargqW=&WJFDlUYcrhbhZ=&dDhaPiXYZeZom=&isgLY5Uanqqkn=&pgIUzgVocehXU=&wE9EZLYfsXgqb=&4KqFQeXepXreb=&p8lfBuYjbnXma=&TJMKusWnijcWX=&226sHvUZ_h_nb=&lkRGAFWdjdZss=&WIyJvIXXqrrkj=&6V3OzyZf_hheg=&g497huYkmUhUY=&KQ7EZWV_rYnUb=&dcZKMtUgqWWWi=&XRpLHnVqjjXXq=&OzscyBVle_kjm=&dk4aqVVeecrao=&FtqOC9Z_ifapm=&9CdDaCVeVnios=&_V5HVXXbVlbVZ=&bu7GKSUniYcfq=&HW8k_MVUsscek=&2Mj_LDUZgqshf=&UKKZoLXkqVpgk=&LSMHWVXkrUWjd=&faMnlFUreWi_U=&PEkQoiXsVoihb=&X6tVWQWZgjUbg=&rh3avjYeVhsfc=&_HctV5Wo_niiZ=&w7HUdkYohjcsV=&HeadYxXYpljVb=&YsQgePZahcZda=&9o5faeUarbcom=&IdqaZ5YbacUrh=&AG3wrwXUqsWbs=&PltDpRWlpqVks=&eQYObtVhhWcWc=&bIIKtGVghYprZ=&RwjTZXZsX_WfV=&zIHc47ZoarWYo=&OBbDqaWlcl_ec=&AbGCurUcZjdq_=&8xEFeJWsfVfgm=&u9jEVVYdekanW=&Ysu6OLVc_UfkZ=&EjQD4XWisqfss=&5jjxvDZlcUZsh=&GjzLK4Waemfjn=&TKXiGSZgaldnp=&icqYRSZqqZhnc=&Myla9aXdijXqi=&PubS2OWndleho=&ghB26bXUWlWas=&l_SE7YVaXWmlj=&qRq8DYWZWaWYf=&j4AWkxUZredfa=&7hTxoxZd_ahso=&mLUBwLYVZkpkd=&kF6HdrXkXehUb=&mEcvK5Ucisbbg=&MTFFfBZpojaVc=&6SiFTmVbimb_Z=&ua8dYhZkodclp=&ZEDJOmXlcmakq=&njSiBLXXkdiqW=&XUJTrPXUecVim=&LIcnCzYmmdqsf=&2meQ3BXWX_Xa_=&ZCAv8jZcrZWos=&23dTmaYclpm__=&Y6QuZ6WcopZZd=&yzhrJgWegUgZq=&DxktXsVgoZhag=&TO5__hWcspVni=&9vexbPXdiWYf_=&HYNup2Ycnhqip=&YCLJIlYnbajjY=&4EoxLfYYWbgoa=&HXin8_Z_llcsk=&ySvqtqZbkaaen=&yDswLvXeqgrae=&fr_zovWiiUrUi=&dFlyrzXkakYqf=&VzbNujYYWdqpk=&vDj7HjYrUrerZ=&l8Y7MhWbXmipf=&M4LXlxUhXgWko=&A7twsKWmg_baX=&B45WHRYkgUrdj=&UsQrIVZcblaYq=&OzDVGYXee_U_Z=&2_EPmEXqkqgpr=&I72Pn8VgkkiZr=&EMagMKWdcWjgd=&YYBZ_gUnepamj=&z7BfsOZfiYejX=&9dq7xxVhnsnma=&pwl5xPWlqsblc=&Rk4o8yWgkfs_f=&tmWl5jUhigsmh=&ZGbJY4WqocXZZ=&t97t3IZqXrhni=&rbKoLoUbmafUa=&8DXIpEYcipleV=&YNj7HZVXhpaqh=&MU3mREVpdkbWe=&J7_7dMVkVfnWV=&qFFUJSUdfc_nb=&dHrskmV_YhgdV=&iG_bwoUlfsXfe=&GxcZ2uUrgpYgY=&f4tAgXVqpXack=&BcbBbgYXjnqXj=&noUBCBYroUsna=&hgxQbCXspcVZe=&tYtqtiUVnpslm=&9awJbUXhqeWWl=&3wyGLWVdjjiqm=&vreV4fZigjYhZ=&WP_kysVaXdkfk=&inGUaaXklgqU_=&aLdtUEUefbkqW=&sfiIBvXphjqhr=&wIPTlEWihZsoi=&GP48cEV_jcoqm=&oBpYx2Woklckq=&DGX5wsUWnfUfa=&pAzfD6Yi_mcnr=&u6WICoZaWdfcj=&PXOj8WYVeUhde=&XXScoaXsiiVVW=&VCbkDhYrjchom=&UChEukZcjjqsf=&w6ySgtZXXlscb=&Gps9mUWXaocgd=&ZybPt_VajnZdk=&7UZHebXfqifmp=&drSbqrXjVskWs=&x9VESzY_eki_s=&LtGOIgXpZf_dq=&y53_w9ZggUpkZ=&WWjd8iZYbdZlX=&zdMoxJYfoVgbg=&e474iKVgjiefY=&cvBPQ4VgXjec_=&liTzWjVqmUnaf=&uZKOLEZaafmgb=&ZBHNaKUcZqWdd=&atGKdVVeUZlep=&gLoijMVUfhrjU=&xQW9hfYnjlbYa=&gt_R9wWplanZr=&RZk57jZZpWnph=&nBt3m5WrlZWbi=&v9g4NvWsWpqWm=&cxheZdWXegsms=&AjRlk7ZYlmdqV=&h2enwBZUrYYYZ=&gvroMxXsmlheh=&IVEHWrXk__Xkk=&3QiPGnXfXWjoX=&6hVHCxUqilsih=&ZS3R8gVlkWdnm=&zZwWEdXbYXhqk=&xzRyVfUYVlfah=&SwrVo9UlhUVoi=&M8sJ7SVqUrinU=&IG5xdsXnUdUVp=&wZ2YRxUaXVY_Z=&KwXP7WXcmZfUe=&3SYCQEVXeVmqo=&5YzYHyUelaXd_=&IYilPtXVfZ_im=&FstGaiUniUXYh=&GiEJoZYmkWmdc=&4AY3RaZhsXWeq=&codHOuZjrespp=&IO5JqLXfiqoVm=&l47yXYZclYWmq=&4LOkTiXqbniqp=&DNF2JNZpecfdf=&G5oExBWVfe_jq=&P_WIAkZd_YUcW=&7eBhZyXcqbUYm=&ZyevQQVYfWqan=&Muw_sCYefVefW=&eMqN45XZombnl=&lxhxNEWZejpns=&N2bmGUZWqmX_W=&AlbMVcWo_kWpZ=&yWoWKMVZUmkYl=&bp2VMfZWYclUU=&PzUUZwX_Yjdod=&389dimYsmpXpc=&oWyVaIWmdXYWo=&PEzpTMWdWkpUd=&VHojJfWqhUWYl=&GDZjlnYk_bXY_=&xiFxkNZWZjeW_=&bqxBJzYpjpXgo=&LGIiLzXeqVaUi=&Wn6BIWWdjqZpU=&V52ExCWeZf_Yk=&ZwNUzxWorlecl=&dtcC5AWraorfs=&3JRvziWikXnUj=&5fQBJAUaUklcl=&Sz3AIxUqoqbWq=&MTBpegYspZdqb=&ilBhpOZqpVgaY=&tXMP_kWkrr_km=&_UIPWJWlpbhcl=&dW3FZIYZVcdYr=&xB2a33Uqaemci=&_RZcgRZclhaZ_=&Y6z7yfVqikbc_=&zShyyHWYbUUgZ=&wqKERPUmlqkmk=&jCK7cMVpfopso=&TWmUCtWooZrX_=&am5oMLUWmgcqi=&ogsBuhWcZUoeq=&L7_ebxVck_lcY=&8xD7JNWfU_YYj=&qPi8svUnkrqmg=&RtkdnfVUefVXo=&sPNjxOZraUm_h=&7eiLlMUpjWoaf=&z4ydFyUpWjres=&rNib9OXWo__aV=&f2Q6pDZp_opeZ=&Zkn7yqVp_qqoV=&xROdezZoejcod=&AgslWsZmmfslZ=&xMkYkNYgjbXYg=&SRqFurWdZlebg=&IHnNjSZlraXcn=&6CUflDWrnVmio=&gzoUWeZjmVrfn=&7Zl2GJVXWonWi=&7bB6afUohXecf=&Rpy4ZYYXegi_i=&B2pLJfYfkaqqe=&De3HQOUgarXmf=&PlrcJ6WejWpa_=&yw_NTuXe_WbjU=&8rXSKKYnXjadY=&vxqZ3WYYsZXaY=&T7upFPYpWVijY=&LIHAPZUbnmahm=&tNoWykVkWnWgj=&uma9L8UWjWkrl=&3_CjZnWpspUhj=&LtqNDcYWsipbd=&HLJ7SuWUZcfes=&aYhz_jYZ_pkka=&7pF5KeWfmpleg=&EdQz3yVpqdkbl=&3dtPidUhipspY=&qTYVQqWZgUoZV=&ZbMPh_Ujs_qZf=&n69hqTXrdmfrc=&WKPUfSUjilVdf=&Pb_tVQXhYUnrl=&zoNOfTYeckYXq=&BLO4DGVdpsXpU=&pfTWc8WaqfseY=&PXJ9r4UesigdV=&BgfLD6UgVpndY=&tZehFkUgkfhhU=&GUXqzrVVdVXna=&rwtwslWrfbjrZ=&eLAUunUkkXjls=&irXhWdVUYknhk=&YHjd6sXhhaqjb=&Hu_eDSWjfjbXi=&QvbvXAY__bjje=&ZjnWHvVYVZWqb=&ARj6LQXjYVUYo=&kPPxdyXaWsqaq=&DiOQrKXWrnrnq=&hdhuw3Urnoami=&65S7NnVnjZoVl=&URZEVjZkcjUWp=&mLe7q_XngbamV=&sWENIMYokYfbk=&JlKW8qXepnjce=&oGQF6EUfgbirk=&6iekOAVrqfcl_=&pZkhhtYqkrWeZ=&EFByw9Wjpmbnp=&Mdrp6GYWUVmfX=&lY8v53YmjcUmh=&h9LFWSZjZnsrd=&_7lLV7ZqfabsV=&f7NJ6nV_Y_mXY=&WadLMGXnZeeln=&hpDZIrWsnWUfW=&5SuWNgYeiabsh=&hWDQzqYlkclbn=&CBomjbXcUdraX=&dWd5UuXUkjk_n=&RSeskFUdWZZkg=&WQoseAZldlsXs=&EWjbMiWmosZ__=&HEk9BsUpWanhU=&gRWqTfYgnshVr=&QfqQ6BVZmZnca=&ubNNbEViclelm=&RwMBzzYgXWrZi=&4vC6L8WslUVZd=&42hLz4Zcegscq=&gS3x4zWplclsh=&2e9goyVrgpZVf=&shwP_uWflXnXc=&45AbyTVffbqYk=&XafukLZhlUXpb=&TK9Xb5YfhVnjZ=&aDef3JXnlVsnp=&PGCYavZqhejoU=&iBy634Wae_rUX=&ZvdInEYcdkpbU=&siwZKDWVodnas=&R6QjGxXiVqjgq=&P39Q_hUfZbbYn=&YlmMLNZefsfde=&xyjYF9UmYkmnh=&rm95_5UeYdbnn=&zyjhrzZblXfcp=&SOuOzWXheqZWf=&psnxK8VqdmqqX=&QaqzyWYfoqgYr=&G73DCZUnmnpYU=&zkRbPIXpkiVcW=&VVZKwMZYXic_m=&q4vctZUs_bXaZ=&s5QDytYih_eUa=&jaqZXJWmfksoc=&_HlIsTUVmZrhe=&x6EAHFUmbYiYq=&VJG3RvUmqlgYc=&4YNo5CWjgqgjn=&BYWcWKXnnrZ_p=&7ZWqziZoVmfgs=&FQSwhdWjfarUV=&bIkE7mUqi_YXb=&QgrjuTYlosWcj=&cmgQTXXllmghh=&vCyy9PWneheeX=&sjo3GVV_droam=&_N9bznUYsnlng=&lFvAp_ZWmejib=&smyYMVXWXnicl=&SwIHUaUqeme_g=&Z8eZVnVZplcln=&6yNOaCXmkUbqn=&e2OvCMXYahpeU=&wAuQCmXY_mndo=&qIR72AYZoqU_s=&uvdSuCYlaossY=&YrVY7OXXrqlYZ=&9P7FPYZ_pssom=&nRSfqwWjqZchX=&TlTzRcVrlnjol=&ntv5KTZfcpXcl=&bauqFyUecqXZh=&9Ifxb5WZiqXVX=&VEhk_zWfsYh_s=&xOI9lJVZoodgf=&oAakCwYZsmoaW=&qEOtCXViboraW=&edJK45WdUqecb=&QJjbpUXWYaZqn=&MtRBlCZpXljmU=&6r4uZBVe_ngaW=&kF8IwVUVXjids=&5Hd2n8UUYbnaa=&XDlGTvXdVUpjh=&7YwX7vYphUVeo=&Omoy5jZsrjdrV=&lPXsooWmXrrof=&56i9DGUqpdhaW=&N7IsDMXaZbsUi=&VekQOyVdalYUn=&TuOco8XXbsipp=&yme4vzXValijk=&uSXhrvYqiUnmo=&t8tCetZbeVU__=&zjPisoXVZfYUe=&v4vTQVXhksccs=&gHjJofXmUdgZi=&MBXC43UrnY_gi=&YfplhRZgjYfdg=&tIfGlWXYkdefV=&YI6gCjZqklldr=&73IHSNUqaeZaW=&OU3Xs2UmcWoqr=&6GgevDUpmdbdk=&Tx8S76WYbfrVb=&uONe5uWillpXe=&LVLAUqZerngqf=&xJxhGYWiscsjg=&Eg4UptUoanqcZ=&czR_Z7Zgjgcgi=&EsBqXCXfgblVU=&jX9MNDZWcVehe=&KQXUuRVUcYfpY=&YTNCTfZYoWcUU=&9NXRaEXnknWbq=&DLbunhXZeciio=&lu2VbqYhYkWUU=&ODkQjoVZdUebl=&wdPiTqXgpiklf=&6dEGcbWiUmUsq=&hLt68DXYZXe_e=&wIh8a_Zckpo_X=&3KKMYIXrYfZn_=&YTAEcnXmhrp_r=&ck6uVfUjneoiW=&KRDwLqWgZUZkU=&c3qvbCXqjq_ar=&D_6ZTxYpXoXUh=&gWuuv8Wcg_eXc=&D3nj9FWUjkeco=&WQtOjuXWlaZVj=&QNDYKzWsoegfl=&VpG4qiVphZmUm=&plgSktUdmdhgp=&k39bmzVfidfZW=&gzVTqiYmknkWf=&8RfRRIWekafnc=&EolleqUUomshc=&9Sz4SCWUVcXpa=&D5vqLBXXhdkan=&wUChTDYjn_off=&XZ7lqxYjdpYWs=&_HFx5pXqfgnWs=&b5Gs_VUUZWafr=&QXsn_sZnWmnbn=&wgSNlzUgdojfl=&zaEJGCZp__ihW=&4zNvT6ZoUqrZc=&fny2NOZlr_c_W=&4nUpBBXlgesgU=&K33whbZqekieY=&h3m_YjXrXpjXh=&2YcuteUrforZr=&YqGgjAUpiphWZ=&8gv9cCUYqXpoV=&F_7WV9YUiYZhp=&vCqSsvW_rhjWW=&D9ib9rYcndahh=&MVTSfCZnnVYbd=&bSvKfEXlhkYsp=&3fcZ2NZmiWhsl=&2g6HP8YoVqmfs=&xcU6xiYnoYUXY=&9TiYXMYpf_XcU=&sWzE57V_iqflb=&QCblNtZZZXZii=&yqJLuWUboWkrr=&tWUnRYUkahjsc=&32BvLlUUbhpbe=&ewLc_wUqkqb_Z=&Mg3s2rVqejqcf=&rZQTrSYiXmcem=&GplkVlXmcejZ_=&HIOQGwYckXbdf=&2WT9qZWXgkbhX=&ockyS9WkXhUrc=&vUX9yfVeVYnbm=&8ao3F6UaYVV_i=&ExspR7VosXkgi=&JDUoxNVjnjafY=&NnZ5NGYjVccqZ=&5uG4GUWWVVYpl=&w5G8sGVYqjjap=&tjWKRAWipVmdb=&FbreBaWUkrlUV=&fCaAYBUZZajWY=&qq_tCWUgW_coi=&fq5lixYslpmjf=&WKx5nlXWjdjVn=&7p4ZVAYdj_ksl=&oDUpFXXsrYUnW=&gPTbiTZoojl__=&9Uo_qhVgcfopr=&NFdjyOXVXfckb=&98HXK9XXhcihq=&MWwVyUXYZVkdU=&NvV6gxXfblpUp=&xIGeVpYcjqaWj=&CUWPF4Vae_mjU=&wr_sf_Yehdcjq=&_SVKLHUXmcWef=&kyUKzYXgjdoja=&OPQhKmXsasiVn=&pFAcJHZWZZspj=&RV3ADBYqXobja=&ZyREK2Z_UYV_e=&LD7aAUVdgU_er=&HRMqZAUqamjkX=&e9xQV2YXlienh=&p7KB5GXgXrdWf=&RPbf8OZqrqioo=&mir6ErUapZYqU=&NGXjbYYVsbgpq=&wnvjMaYeciolh=&DZtf4UVo_nWpd=&L6PJKBZXeZWhY=&65PeWWVjZcWoc=&4qbwwCVijgUUh=&TDujUDWeeogpo=&FjdjWBYipcWd_=&2EpQ6lXZkjfpo=&LuCt7LUnkfjdW=&_JHMnlVXdnham=&QCtxosWYYUZVn=&plTIApXYUZerm=&JDJvgXYYlcscX=&TtoUFVYnUbocf=&Pb3HqoWdYrUsc=&2DYfjFVg_sgl_=&TFdnRGZXYYgdf=&EOrZb5XfmhZao=&bnvKvYWnffafZ=&3QknWTVXVVdsi=&8ptKj6YjeUrim=&AbTkHbYboWrXc=&e2ydBrYidgobh=&EQamT6Zdjbofm=&wcEowsVlolsZf=&e4O2ZWUcp_nqi=&Ly7vwdVeddbrr=&U3rx7_YaXZZaW=&_RRlQ6Vbsdabj=&fK4O5WYeasenc=&H9reclVUhophe=&GPUuUuWbssaiV=&d2mNBIWbjsZcm=&dxPw4QUUoiccl=&KPfcyfVcnacek=&JmBsWBVh_dpmm=&hsHeR4XYjZ_dZ=&Nh7dyiYhUkjUa=&vlQP2sWom_cja=&U5MJJpVkrlool=&EMPFLvUXipnWU=&4FMMI3ZYefgp_=&TXstGPXm_sW_Y=&pSUmc6VdVjUaV=&ouVSg6Uh_eqcW=&3JGwICXoWgdZX=&xuW3AKZkmZsai=&ZsfYafXdXooqp=&pRWvGHWalbani=&7ebGSSU_krhrh=&g5l9R_ZVsZepp=&cU4Kn8XrXkWps=&LI97lTWmefdaq=&6EvurzXZjWjrg=&htPRoKYjeVnaY=&oL3dl4Vsj_ars=&Zvlg6zWlebpZq=&mO5KSaUcchdfU=&ZyiKZkUpVbpcf=&x4jNAdZjoVkqZ=&KHNzI8UXbjpan=&tSQNkDZjYVhdX=&y4rVoxZnbqghf=&qsVheEVkkfhnd=&lGURM3ZakmaUU=&VCIlwqWVYj_Yn=&nVdHZOXejWUbb=&eVGZlTVjqbrpi=&lqFSBdZaVYgqb=&iHJHPKVjWYrlb=&BouZ7QVmbZWlj=&rF2OLGVZYVjli=&2IlZ_ZYVYmjab=&QkjIRcUqqZWrd=&IpmDCvWbUcUsb=&wxIHk4UijUeol=&qY3fzYZbsecYd=&7pGxWlZqnnrUs=&Cmlfs_YXfnrih=&xtcTGwWUcUjjg=&R_vyI6VdinoVq=&IJLXJZZXkqVej=&B5LrHOUXaVqkl=&HzqKryX_Uggpo=&9nyDJHUcqajfr=&GuZ4WjXripZrn=&COdZpqVaajbsb=&OlRnHUZfffmVU=&GQDVgMXhmWhao=&RKb2e3VbdVZpe=&bF6uq6UY_sqlU=&hHvL7nUkYnkho=&GTjy3MV_lo_gd=&DjoWurXbbomra=&xbbknhUbfXVfV=&_smSKlUXe_sdc=&5MmBfgYadloYb=&nFCxTJUdnVhXd=&FRw6AeXodkgll=&BUpEggVmheo_f=&HfQjBNWkseqse=&6k9BGrXqjnW_h=&ngahBMUjXjcjs=&VRbwkgYfYlalr=&z88ONmZeWoVpk=&SR8mJZUcWprWj=&ObCPaZVbYhqjg=&Nk2tOwZfYlanm=&Vu_tvmX_ikjhl=&KsQaUsYgiZXUl=&ZkHG9jZcckiad=&47lnEQZdhbsie=&lxF3RDZggcoYX=&tB6F3jUZcZeY_=&Avu8UrXkaknZX=&wFJR7wWYqacbb=&B2O__MYmah_qU=&C2ky9hUWYjcVl=&7BjrgzYsafkfZ=&FWziiPWobolke=&CnX3utWXqjUqU=&ULHlUAYUrjiiU=&hByX49VnaosYd=&Xze4dcXg_sbbm=&ThQSUXZomfVZe=&8WeOHRYhmhscg=&h8Vn7PYjajfWf=&PX_E6wUVjgUas=&imLzXfXkekYe_=&iAhQBXVkXerde=&IoaDOgXXqpcja=&RwkIXeUYnghlk=&NNSRs3UVrqlZg=&rgf2LNYVjVpqg=&a2tHQXUordkkr=&YfGCOxUqYblin=&DyDia5WWZUbqr=&OYnbfzWakhsWW=&cNLBQbVsVqYkV=&ieoSkGWYjkddY=&odAS5QYYbjdgh=&uzb9OvUkcZrZr=&Wr_4SsXihkgVm=&WLH_8iYerZiWY=&LVeaXqVgpbfZp=&KuOHkbZZUiqne=&AdJeKHZosiehc=&9j2jfYUijgpcZ=&jtWUQ2X_npoli=&dgjT8RZZhsikn=&Jx4bGFYqUgYms=&eh4W5JXWgksaf=&2hVrupUhXWrls=&N8WWs4UnhclkX=&w3IU4oXcsWdiq=&ooEO9fZjkh_YX=&NvtYStUc_pXYh=&YyUHjZVYmaknW=&kbj2YAYdaohZl=&QwIe5oVXrgmZZ=&mToZyTUmnsbik=&Q_c2IYYWakjhm=&MufCVGXcamhfe=&d9weYMWnscWYZ=&vFbrTMZceVYpd=&w_MTnTVpahrWU=&7lvBy4Wlhskbm=&Z4WPSlWqVjesb=&Ef3Z8hVeqYejn=&gx6RKoZeoXsVb=&6Ln6ILXVcUUXn=&u7SYzdXhkmVjr=&QTq_sOXs_sofm=&qs5M_8ZYrefng=&mespFCXkhWZXl=&HocufLValglna=&PgVubLYhcc_ak=&9Ds_mgZse_qVc=&QkVfCXVccVldq=&lTaHUdXlXXcV_=&riYYRcUhUVifs=&2OKqm4VUhbYnr=&LMMweQYrhlfnV=&ti2HksZmefcsq=&9ehJR7Xoego_V=&JuYSiFZnpYfWj=&zZAcAfUn_XYjd=&mInk_cYUXdmas=&l2VpWZYcdZrfq=&5UbZY4Vpagqc_=&lYlo7aWqaqpjX=&WhHuakWiWYnYa=&cFBQt5ZdpcXYk=&bI9YsRVpqbnXU=&bTkXdsVXpVmsV=&Z4EhfGUofeqee=&iIDr7UUkcneln=&6n6XNpVXdZXVl=&dN9cOmXehWcns=&_qfOdBWg_Vpbl=&iWmearZm_YZrV=&MrQ5x8XlZhfml=&KTotuoVpsbZZk=&nitRWwXrki_kW=&tVP7VfYkpogVs=&lNhuAYYm_jUcn=&a7Ul4cUZoUmUi=&ycxeTZXojepWp=&6iFDtaVYhfqqY=&n43yRsWdqYcmf=&XIS9yLUaciZmi=&KTkySNUYhfYpe=&NUN42RVrlcirc=&4EsFdsZYishXf=&v3ssqcUibgdjh=&rnUCblVnhlVZn=&JqUiadZaohogp=&wT7RJXXYiZjck=&xeALzBVZjnsp_=&7MaOphWVdcjis=&L5MnnnVkUroho=&v5aBEgUmehqlr=&CPEmaPZsfhohr=&7oc2AIXbkhhai=&k2PNEvYXnkdnV=&aiasdkYUheWkh=&zzbk_hUqscZom=&683GG9ZlnZsZg=&3FSX8LXbeamih=&S9NorUYoefWrV=&JS9UERYakleUe=&H9Ez_xXnmWUmq=&YP5OafXgpqUnY=&crRFuYXsVssoU=&FenfMMWYldnda=&nqdX9NUndpeio=&l27hvtUaa_eXl=&xuoLMpVrrajaY=&UsZNKpWgpdWge=&NsyGtcVYsakdf=&LTDjj3XeiggdY=&xIwRbOWmmYghV=&qJGHOFZksdUZr=&FbkvXXUoiXckr=&YtuLTUXehiZVW=&SYyQUmXcehsdo=&VXVhBlXkhWofq=&cSMSF2VcZsZW_=&CQBGv3Xrkogno=&zUOwqAVcmn_Ws=&cyK7U_UcVfqYl=&IkyWSQVaXgUVs=&XhiKBtXpalUs_=&SBvQVBUX_eqhp=&TuHmaMXinkjcs=&h9lfIfWVnhcqi=&ICUDypYjhjjmp=&Dq3YG7U_fYUhm=&urmA8ZZVZqeid=&tNJATkVbbrrVb=&Kq5KT8Xqcqeso=&cuB7vJYYgeZha=&_u2mCzWVXhc_m=&6OpwAfWXUZpod=&DgyXkxVorjr_g=&D9qZk_XZisgeV=&le5c6_ZZprZeW=&yxj5EWUWjiWZZ=&dtJ6rtWfhjWUg=&BDKWX4WrXhkqU=&gJ7zkcUepUrrm=&pYBznGWbcafne=&qvNXptXgroaph=&74h8BSZpYddj_=&ZVLlHKYqofcZ_=&zC39fiWXZZopn=&qTlKgQZdscqsb=&TVuduKVhYXsfe=&BIgVVNXfYcpsc=&DWnqGyYXshqgl=&JHpMHuYgYUYfY=&C642tUUnsdVkk=&bkTRSFXhcqpWY=&y3HIiBWZrmVi_=&zKoWJ8Xkc_pVV=&lMBE6mZjqdWqr=&fpB3jeUXdjesg=&Ld6_T2ZUfampr=&gaOwpJWmWkrUc=&xfIjlVYdWgibg=&cnHk4cUZiloaq=&2J2qvTXagrseU=&4r3Z_BXVbWbUh=&ojxB9zYh_sWYe=&RLq5_8Zboq_jf=&Y5nqMFWfaiUWk=&RzK8VkWarV__r=&MNHTfKZqjqkVU=&Gu37lXXlqniXX=&ppmACeYcmqsoZ=&pNANI9WcoZe_f=&v6ZinCYXk_lhm=&CgesgOZdqgera=&PelWEPUXYqdmi=&aSIEceVksdldh=&vhiHIBYgcWXhV=&eq_ZaqUpoqs_Z=&7UeEP9Yogkmes=&mmdZkHXncfha_=&_kJ8NaUeis_bd=&cIG2AjXiWdccr=&IbJkngVZhaqZs=&d3XyEvXZlls_i=&BR6jwqWkcd_lZ=&_fP2LZWaamjsp=&vQpETkWVindrs=&zeBykPYZmrZer=&eaHbrWZaYljlq=&uHxOLMVYjjcin=&B2r2FhUcerams=&AHBVjKYXc_hdm=&qIvKJPYYa_jVW=&VOLqTOWrlg_fp=&TeJEAqUnkrXec=&o6X6BYXipneqq=&h_NU8eUsobeZk=&RMMHyrVdasqme=&4jpZS4UX_grWk=&3b59BXZsiesdi=&cCfjAJWZjeWXf=&ZhZ_cgXgZibVc=&mBERm4Xadn_bY=&4frs25YUdkWc_=&X8glVRZclYhgp=&_gI5hhXlesUid=&ybQF7dYUgoiWW=&PdCEV9WkYUism=&HTHHzGUrUYXkg=&squOdHXgbbpla=&9JTVSUZUfrehY=&juWO3NVrYUZnd=&Yy7hUSUlXobYn=&raeHTWVfYcVfY=&Z43TVeXsip_Za=&iBV5_gXVamnWm=&nvqMBbXVXknmn=&wmxhClZUsjjiZ=&GA9dJDXcoYphf=&HhZukWVngZrYs=&ZMWJXKU_aZkXc=&YkOAgeZ_bVWmk=&A9QasSXUXsVjn=&mUTGmjYmqcdYm=&F7UxAWUafYhfa=&7YUReDUlkiaUa=&kFXMOBYZZssrV=&kdOoXXWreWshU=&9zVOUtVnUiXnU=&EZoVlQXrbsseX=&dri76XXcnVUaW=&zeWjqQUahjnVn=&hA8wxoVhWenUp=&UR38sKZXZkhd_=&8wsapqYdmbnqk=&SRd5meZnracpr=&lZ3mpeYnhgUbX=&8KMTa6VpaaVhU=&YYLTHeVUnZgps=&cKjsAYVUasodi=&FNUwyqVlbnjaU=&fdzlnYYkZVZqZ=&dI_2fsXm_VXgZ=&K_2x3GUpWWdfe=&6Z_3hZZhXiZpY=&FgeAZtWlmjlh_=&NtoXsFZfgkieh=&mckf_HWdkXZcW=&9Cgd9CZmsge_l=&OWrA6CYWUVaUq=&LZoSOmWojhi_V=&4vfDOtXrkUhZU=&4LRqq9UXXaZZe=&XqoBHzXdYsWnU=&36bY7BZfblosY=&VKVYk_UUhmdah=&44ZnMjYbnkoac=&dAraktXsXdWrq=&iieGQwZipkU_V=&eevhNZUkVghqh=&hycy7lWpbkfas=&W6UTkXY_fjYXn=&YHGyp_WomgXsW=&MuxA3TZfjncng=&eCELRKUleckik=&PweqS3VrV_ebo=&c4Oh_gZVlpZas=&9GuZffVVZc_cZ=&Gbu_aKWYUfnao=&hFCPdJWpmqn_Y=&2VI6AlZqhXcWq=&ebqnxMVmckbkq=&F963X3Upfejnc=&iBqgoVYWlmngh=&H4b7V7Wpj_Ypa=&U4l4LLXpbh___=&ktgM9NXVVWqXd=&mYgsoQXsZhrmX=&8PB3nHVbVgooZ=&s2sydhXfbkZrr=&3jSaXbWmqacs_=&x57_SoXaVjlWc=&rtFF9fZsqejkW=&iuhXEVUpnqkWq=&5NNLMGYUlkhhf=&nrY7FEZfhbqUe=&CbaPJZVjVjlk_=&YXmH_yZYdrpbm=&xZTUoeUdlVsaZ=&BDBLxvUXf_ipg=&jkg9H4Xldokfs=&4LCC3BY_e_X_h=&wrVAJlXspfbdU=&jP7IWDZXinmsh=&GgX6pcYYZjXsV=&aEOlU4ZZVnbjZ=&HlooN3Ziprhbn=&LRQZTBZfse_Wm=&MmAA5hUds_fhj=&idEkPgXYsngel=&toRY26YgZjosb=&Ubh24gWpqUgsm=&NHuQZnYailhZa=&fkHKxzZfpUncj=&oeeLq_ZdeVleY=&Slta7rZcnsrne=&oMIb2aXspjjal=&uM5aUIVadqcdk=&mnqujyZceYXYl=&66tP5VWdcYVbf=&KTBsrBWdiaqog=&APVxtoUhqfpca=&47jmiIXYicim_=&PyVVNfUYdmjlj=&CM3Xr4VjjlYjr=&azgFxcWXXfqmh=&MnTKmmYrZVoWo=&ozq5VuZkiZiop=&LnSqMGVWpoUed=&E5XYjLXVd_rYm=&syXuoVZXba_ln=&Exzvx_VjdpUZU=&Wmd7jsXrbXgpe=&jyMSZiXfb_olf=&IRQ9mYXUqi_Wd=&VqKL_eZkXVpkf=&WjR_RuVbXUsfY=&wJgnneUqcrVii=&43siWWUcikjla=&jQPeFVVdejYbb=&e2rYABWoZlUsW=&tP2uXyWmdbgoV=&NlXQkfUcbemo_=&oq8pbGYr_Yogd=&5MRP_4UUcXhhZ=&AuZ_oVWohghoX=&EX2MOyWcZbfkk=&RknBRTXaYrZn_=&S_gPiRVgpZZWp=&tfvLhfYdqqdqX=&zBgkGvZlXlae_=&K_AW2AYiV_gjo=&Vvah4UYaqVhls=&VENKpNUrqWjpm=&dLdRbjZpeZqrd=&cLYx4yYVsoXpX=&AIuJVIYodZYsp=&pgSGqnVblpkjq=&mwxptNVVbjdga=&vThBekYohadVY=&7wNJV7YcjdXor=&oar8A8Vrrephp=&_gj29PVrqXrm_=&Kpe7xtXqfislb=&gnKHSjUneVrcp=&7MOxqpYfbpcVf=&NSPtVKVWWeph_=&xoQScEZY_ebaY=&m98CGYYWcklol=&tfvoGlZonpcjh=&iAbhTIWjinell=&96xTdFYXapdgf=&qILgmrWahXmed=&zgtrtlYUcrjUs=&5uA8tUUZejrnX=&Yt3_CCZddqpdl=&A2aE6OZmeXcYd=&BJjmr_Y_eUlZV=&6ZXACMWmepbcs=&DU_Xm4W_gmcoe=&xAqv2VYb_Yrro=&BzhfQjYfqdmea=&9RjPZlVhqidgX=&ExKBifZgWmekj=&CAwkrJZ_iobcp=&5wSlVZZrsrlae=&UrWYfYWcqeZdV=&FnhBhsYhspWc_=&vmgzAsYoWblVa=&fr9AezVUqmhqg=&rjfGOWVeoWpac=&Gl_d7kWbgmcoU=&oZXsYoVWVZoVb=&xzpPBsYpibdmf=&cWuiDMUgmnlm_=&7QbogmVmaUkel=&hlXf_JZem_pdh=&hed2MTVlh_Wfh=&PbvbFvXoreeVc=&bloh9yVornWfa=&XKXMEKWiqVipf=&ZHRBwKXqXidVh=&h6gttmVeqrirg=&8jDbOzUmkUhkZ=&F9NL5CZfXjbpe=&fC5HDJYZ_clmV=&nzkaGGYjoXZea=&3bbXjjUVpYkrp=&Ad8iieXdaVUrh=&uaHdGbXfqmjnk=&z3_AxjYYqpYmZ=&IUwwITUkfWWde=&CQfkZYVfiWqmf=&uoV4gwYcmXnfo=&L5wKQMWciVjjl=&B78yomZgYYmWe=&k4hioQXihWUqb=&A5FITpVXWsgae=&9Bnm3pXmmmVca=&7xGRGYVWbZrml=&ftSt9YVYliYbr=&34xtpwZcg_nn_=&wxe58pUoXosab=&7ClNBZWqc_UYZ=&ILYPxgZgYXhho=&SPieI2UcpghVo=&DvaNUBUbgXlg_=&QFkfjwUZYggmp=&rtGT_IZXhjsUU=&TIWDgMUUpoose=&Zfv9NsU_gWaZa=&BQWmruXqdWqVs=&R5tOGqUYoWrpl=&RS7EAaUfonVdg=&ucHAnOUsUkZrn=&8FkoM5Ve_qsWY=&5gAK4xUqkoq_h=&OWLxJrXpbYVXg=&OUAtROXXshlrk=&5rZWiuVpiclmU=&YOpC75UfsnbXc=&xpzgbwVpjVVmq=&ZvaPuAWjgpYYm=&oIa3fQZoqVZpa=&afG_N4UqXfpWn=&lPhHftW_jVche=&jXR4_OZXabqck=&V7mehMXrnraaV=&biILiUUdjqhjh=&PtF7ZOWZgrogj=&hMzBrUZlVqrin=&8nIXr8ZlbegZm=&B5XGCWXdndpce=&8bwtneUiUpfop=&wBoVBcYkYsfbU=&IHPjPbY_YWlb_=&gilSPhUoqfaqZ=&nuUV_IXacdgap=&fSOmICY_ek_Zf=&js_zerVU_fYXp=&pqMKeOZmsmqgf=&RrVDW8YpVafdi=&ZQn394XqUqWgV=&eTUqWeWoVaodk=&I3b3MiWXeWUYh=&kc6jtfZXXrokl=&LVB2OjWolYXZV=&5R4mgvZpUcriZ=&nk6pE7Wnokfrb=&okk9iuVceaYWW=&W8ICxUXeUXsap=&soFM4nWWZbXsZ=&uPcfYqZcUVdoe=&S7beKpWqmlgme=&qwRyyDUmjdWXe=&ulxHPNUesmWWi=&5sIIxEVqikaij=&WMdo2GXVZjsZe=&ubC_aSWUfYsfY=&H3Wf4KXhoecq_=&TsyvHbX_bYjos=&oSfVacZmgahrg=&vU6U2SUsVqkjq=&bTAwZAUlpscss=&d7vDeWXbgYcoU=&Z9OJU8Xkgmqrq=&QVOu8nZd_fpie=&o_FK3DUmpWUYc=&4osdYpXjcUssa=&AxFjClZlpskoW=&Dr5z66XWmqsro=&_rFCWSZmommpZ=&EXvI_FUscXbUm=&dhkqqlVWcgfXV=&S5HWKlXkdcnaq=&llAj6dUoXqfca=&dAnkslVVhhYdX=&4nITIoUmZjXYn=&RqO4fqWjp_rYr=&YYtPvyUVVpfXf=&xJ7owqZdrhZae=&JqhRKcUmdnhfc=&fqI5x3UrXomWj=&3U2f3HWrnhZff=&NYkiz9VaWoZWb=&J_RKq_XoYrpYo=&Hn25kIVVXiZia=&YKSz3tVnanYdd=&SGhW4XZXWddpX=&O6N9BNYmerdXm=&YkZZZmUhlemWU=&SaGQKjWkqqkVp=&PMyLyxVgeXi_c=&KTu3KeVdofgng=&IaWxPrVVqpXqm=&9LcKASYlqildj=&7gHVXkZknViUp=&p3mK4UVqbZYWm=&47bIAKUVmfiWV=&7lz_dGUXgneqm=&i8Q4eCYcmspoY=&NS5VctVomrsqm=&soQ93yZrgjlna=&JNLCayZenah_b=&2fsNC9YgdXYpX=&NT7pfUZqeZZe_=&tUTfx5Yrkcajd=&v8VUApUUlrXXp=&5hkEq8UcroYcc=&G2t5pyZlafbae=&TJn6urYVbVbdh=&THGZ43WXcbgWp=&NyVhLyUmnobmh=&BTMQjjVjlXqnm=&PKwVIFUdUahsW=&DoRFBMZmshlii=&5IpPPMZpjnpZo=&4AKXuXVobnrYc=&yiNadVZpnqeps=&Ps4Tg7W_rWomX=&49Lt_GYibnrVo=&UNfUooWiZdmfW=&xkgRCTXnZisVq=&6w_D8QWdokhlf=&lp_bvjXfjrgcg=&BqijrDZblipZk=&MXR_HRUjoqqnp=&nLJk3CZoncqmo=&_Ds6h4WiXXblj=&ZjFrF8ZWfUliq=&vLhIAtXjbh_nk=&fxlgX9UWVjrUa=&OzgENzUkhbeXr=&sqyhN3Xsdmshe=&bHLqq6Ymfppld=&4p7K6yZ_krgqc=&eIhCPJXkopmhb=&wsTf9PYYrkasj=&jjpkxGVjdcYca=&So6yxbZWUdZVk=&vhwHPAZgnUZnV=&IJnvWyWiYXhZh=&KGx4XAUabZdgb=&T6DgFoWhmcUjd=&l6uP3qXspqXrs=&jz47gLUsf_lli=&RxTNcXWcodlqU=&ol4cGcZjsaVdn=&zYnXteVpijbUb=&L7VtoGWmrfrgZ=&MoQT_PYrergap=&Onkjy6WlUaUhi=&Yp4IL9WdWpbof=&KPPYedZUlromf=&rGb34uVZrkWZa=&RamrY3ZaafWjg=&k3UDMXYndXedd=&unFBBPUlb_Vid=&2OUn2jWdcWYgW=&goxmnLUrbWUYk=&C8E2HyZ_Zbn_k=&zSSZqiW_Yalnd=&QJeELnYcZZkZn=&5LC9fYXWfXoc_=&zZ4CYVYYkh_bf=&2rCEWuUmjpUnq=&ApWxRWUWsfaeh=&U495wWZedUXXq=&3w5sNlUrZonnl=&QdfvzHWmis_co=&FyzF9IWrVbmlo=&gH3lXsVmek_bo=&3tpBhTVsZgfro=&vEOZjuUirgbdj=&eVFS7MUkfqUsm=&DSMG3FWeclkce=&DDoGvAWVeqlYU=&joAlhLXrpbooZ=&yKaiSEUoscZmc=&XAbUfZUsfjdiq=&sCvhLHWoYjrjY=&HRriT6VZ_aqas=&NN6eIDZjbisjr=&Ce43EXXqeWWgi=&XRxyHwUkmjWXX=&p7jBLtZccqZec=&VoZbjyZUddnmd=&CQgdMrXqWdXUm=&nRC9IZXgXZidq=&XM3ktOWhYYbfW=&DWjqd9VkVajhg=&OMDBw3XnVm_ii=&LLBzPPUlhfgii=&amH2ERVn_manp=&IBgA8UYndfsVd=&zSPospZlZqUkn=&L9cLTpUh_ikom=&Ul92kiYj___nh=&o2lcWCU_gkZaU=&2mgYM8YVbjiUc=&f8_KiVWqerhei=&ATNC9pUUogWhb=&8frij4Wsjnpqj=&Il5OKXZsXpmqY=&cFp78RUoigVee=&WkJxtNUrYkW_m=&8Tmy7MUqnpYkh=&NkI2Z7VjcVmne=&Q8iU5iZpheqlo=&DbiMf_Vnqnmkh=&iFCRu4YVsZoe_=&AzxK4TZXrfaof=&fSYQ4BVmZnjbp=&mkLfKjUcZedlr=&FtYYJDYobjZgm=&llu54LVr_lidV=&Xxg5P2ZflXnfZ=&qg5wHRUfpZcaU=&IJ3trtZhaidVf=&YeNSBZWnZVnZb=&ZFLVghXkkYkZa=&rtvPdzXirUlWk=&9nDBepYikip_U=&DfdsJKZsmVelU=&d9BME_WpUZjbj=&AXcfMFXeoqeWn=&S55aeqZliVcbr=&MoTeLVXUqaenm=&L4gawTUUirhqk=&FILToBYpcfkkr=&ShyzWCUXrccmZ=&ajKO_WYiWrYar=&RhBgTsVhhrfhr=&oE8dgGY_rbaqb=&WeNdinWdolVja=&Ulv2QoUfXWnkX=&i4EGC8ZWbopWm=&bmiGkpYscesiZ=&F4OyN_YeWsa_i=&fMOosyYdkldgV=&b8zPV6YWkZYlf=&rQJVjCWdscYbd=&XGiOemWiVmkYn=&A2HyzUVbkWhel=&96nfsCUWniWjo=&iPzfeyXfUgYiq=&noEaFdVV_rlYU=&Gj8HDGZVks_aV=&ZlPDHYWeVW_gh=&blAGetUoba_Uh=&NjwGEJZUpVWdY=&yltD4XX__oamd=&jjfhC9VronVsj=&yBb3MqYqniYas=&3WBocdWaaiWsZ=&tExmMBWdejkqm=&aqbZvoXreWXZi=&BOnVGiVVXdXqV=&JG3bScVjdehbe=&uO2peiVsbZerX=&euNjstZVbYgpc=&BKGPtBWbnrZ_n=&yguYXoZU_Zlan=&26GFEoWiVkqpm=&Tvqag5WpgYZep=&eGJDJlUUlsVfo=&tP5holUqjVcfq=&4mPWg8ZnUoiUe=&Iz5_zfXXeamVf=&bAzcTwVWqliYq=&XwOog8UZlqYql=&z23eeyZVmogap=&gHe6B6Vdrlidc=&bR2k_fW_lYmcU=&rf7RITYjhZqrX=&6PqNzzXrhmlhl=&6jLzEsZ_nqpXZ=&DZDr5KVgXpZ_b=&te5gRfXglVicd=&a3TWLyYgqisjY=&LQWKjnVsiohUg=&5X8YY_ZrqnsY_=&PB5PyeUddcjXo=&f_AXMSYa__ddX=&qD9zCEZfrdfoW=&sa7MbpUfq_ifh=&ArkTLGXYZoXr_=&jmkpaQXZsXkao=&I67YKgZYjp__j=&ipKBecVpYXrb_=&LzLRLCXdWnfsU=&7mpIs3VXlWYqn=&VYDzdbVqpshqX=&PwaorBWpYgosj=&SsXUg6Znjolpc=&HsCpgZVbYiqjZ=&5wqXVWUbVboiW=&lgJ2XnXlkiamq=&QAxeiGXWZenn_=&5JqD5XZrjfZdc=&cnIbRGYsjdWVf=&fCrGYrYfhpark=&7piCBqZgpo_lU=&rzFKJXZbbifjh=&qEEbR2U_Y_jgX=&Xz9LKpXW_ddsg=&5dkThOXmplh_a=&GBpLNUVpVhahk=&oQsx4CVbqih_k=&XZPmWfYVjYqeh=&b99V9PZdsaVrY=&5_eIPuVrcUasm=&egzbm5Whnqdfb=&_xvxzUWYfUnqd=&vK_KReVksU_hn=&uiNFWkXcjqYfY=&cr_NssVYUg_q_=&E9fWcrYaegXss=&VWSdcUWnbnppa=&VyqZd_Yqkmm_m=&Q5kD2DUfisqre=&MDOuSCZpYdgbc=&MVkvAXVhgsmpf=&6lAHCEYkrgYdk=&8Q3WsmXdmrona=&SkaozRZUXmjca=&AsaImMVodpnYd=&dewdafWYWdZmo=&EoocykXaWbYdi=&ASu5abZqsclnV=&O3T7kLWkkdoqq=&eOoZGIZlkhcXU=&J_h7HhZjigndb=&6RprOAYqssmcX=&W4NxHmWVmXsb_=&HmNAZfWnrbqfZ=&UufxjZVqYhhca=&YGHnhvYVhhUUY=&rJhxDqUosrmrm=&oGkoYOWhaUqWW=&MoU_MRXrWnpjV=&ePBpdjUlWpfil=&hiDqrwUdsbpoj=&ZS25JUWalslsY=&G2yI94ZWbUckh=&iyjjOlYpVbiVW=&2ELJEmUpabsc_=&WOSzEbYnlZgas=&zysxnXXf_kdki=&nshuDuYbYYreY=&OrmZHXZdXenWZ=&k9SauuVmm_Xgn=&866ykgWU_jZhn=&PphOMpUYpdk_p=&7c4SzXXrmjiZk=&6enZPMZYnpshh=&eMELpvYsqlhc_=&ODZ_ivWcdbngd=&5tBOK2W_pqerc=&OiaaVpYYfhZdZ=&raSIBmVhVfjik=&IxxpsHXgYVXfp=&TYLSKQZnbpYpe=&pMRDyLX_XhbVg=&afK_wmYlofVro=&arzOa7Zohqpim=&fZngsFYVqkppq=&5U6p9KUqXlbma=&TgD85jXoemplq=&XkFcpfZnriskc=&TgWjmSYeUgdZZ=&Ypllh5Ygjpshg=&YFeyvYUmdUVXi=&g6_VRSXlV_brn=&MXysgZZjhjaVY=&vPXEFVZVccenV=&eZ9YHYZfgoghU=&TXWr7vXschihW=&FsLzeuWncZqdf=&diU7XiUYjspcr=&8RBLklWcVWebi=&2ccSpnYooliad=&anSNtsWsgdcri=&57f7NrWm_spnY=&d_ne4YZsoaYWZ=&Nvir24Xcs_pfZ=&UdcWVKXqfWjgY=&tAdpotWVpilcg=&57FvPcYnlXsbo=&WrKExgWrZXjer=&zid2C3XZaflfh=&VPVWUwXjoUVVo=&6JZuKOYU_hnae=&Fh4jHqWjpsssq=&JWHOaUVkllihV=&5m4lVWXmZfqfa=&TJF7nfZZdlVjU=&d6SGTTVbhhrWq=&x4rESOVUfccig=&wMtU6FVsYWWjo=&Rjhw3zZkWZsmV=&O4eRBYVkUirUo=&lTWuftVdgifbZ=&dwIGZIZf_YZek=&wUYNJaYpicklV=&aLHPh8YqqlbgU=&E4vMq4VjVhkki=&Hskj6UZhebl_a=&cDxGrHXmc_sdb=&yQxKYCWnrjsdo=&5DN3mRYmkajob=&Gkciv8XXealsi=&kbstTzW_Ymljr=&a6WKCQUVobjXs=&wZNi7_VdbicWi=&ekO779Zaqb_hk=&LJtrzwXUWUbam=&sAAnpVZpeqb_Z=&VHW6kXXhmhbij=&SwEFrwXa_akqU=&6FiL7DVqaVbhp=&nhDt9jYjlYifp=&Gq6Dj_U_Xocin=&wjx8LjWfqmWqp=&amuVl5Yseincc=&u69kxRZlbjeYU=&yaQLoxWnqnlhV=&7t_WXwWpWbqVW=&YzshUAWfjgpg_=&Co84dSVceWZrh=&GkQuZNYgjbYbe=&MErmXZVXqcUao=&hD5NwLY_XpWgr=&ZsZu4IXqkm_sr=&JrfTdBVbrYriX=&tBOAIKZ_kdcja=&PgLLdSY_jVWlg=&zjOZJWUVYq_hd=&sxJexkXjb_cXq=&2pjc9fVnbihqf=&Zh4MZQUlmblWo=&D2MNI4VqhgYXm=&t8Y2bqYognkme=&jhc7zHUYYmskj=&7_tz9gZXpidjs=&nHt_dAXnYnjsp=&NDHiBbZZkk_eW=&_JnpzZUahVord=&CWqtUAXnpmobc=&tylGwKVViUoYd=&8pONcbYUVcXcd=&6hHYWoZkVfUjk=&qzQQ5kVogkhcq=&eW6UblUZYjlXW=&BnTWCaUVregdX=&LuP4YGUWqWoUc=&uJciogXjV_mVq=&GBoD2xWsfanWp=&FGZREHXdqlgYo=&dPoIjrVsXYieb=&IeCVAdWhimXoX=&iKym7iYbsgXgn=&IvQMPdXnlYhVh=&gBxIxFWhimXar=&eknm3EYpXfiYf=&tq9WG6ZjXicWY=&vMIyuuWXcmkWX=&obKQ4kZUiWsaa=&G3uOr4WrYlciV=&xwgEEgYihspfj=&R65ocVYXXqscs=&Gvz72sUbfobje=&oW9HbcUYclkfZ=&sJ9SgXXjkqrsU=&cTj9BiVVVXpdW=&SHRdDlYsmWWaW=&fJtkJbVqigXsa=&U4YyVzWirlpWp=&XfJ6mCYaiZZlU=&pFlyNLZ_mUWVg=&Sj4U9nVgjiUfh=&XfhmdhUohsXpn=&aV6MM4VdjoVWa=&oYM9pVXrjjk_d=&PWp8x8Y_kedbg=&HQZsEjV__dbbo=&bpeK4mWeXZdl_=&dJtTzcYobmbbj=&2qGXsMXhnfXk_=&R2mgRNZbdqsYk=&qFnj97YpZcfVY=&pTyY3zXVhkdkm=&8Gh_6aXjldefV=&RjOvZJWkkbZUo=&CMsnvEYbrnnin=&WVp9Q8ZUsWVgY=&RwfVYQZZlVVXs=&DDvxl_VUpcjVm=&oAkrgUVefdkhk=&KAqbw_Vdklalc=&Vi9bBbYad_Veh=&xSdCACXUhrhqf=&OdIXp2XZY_jWU=&Jo8zgeYfbrhoc=&KmxWFcZihdWfr=&YsWZcqXpWkqZZ=&ch7HqFYfaUl_Y=&XRAJ3RZiUqlql=&l9WYYlWsclann=&sDP6WyUffipYp=&R5iQVPZqkmqah=&LukxCwX_k_XqX=&AOLTCiZepkroY=&GTNHzKUVnnWmi=&3iyxsBYaZmqdl=&3vomVfUWihqVq=&XsgzhKWUYeeaq=&yd3SGDWfnWdXn=&atBGExZmblVVb=&QaUv5_ZkmfogW=&2eXa8JYrniUkr=&3tPKUkZ_agbYn=&iCK7hNUXWanch=&N4VZrAVeXXj_W=&eKXdxMZegijmq=&HVwhQiVUhoai_=&YTVfP4WsrffYl=&D3rld8Yhrqn_V=&74U2dqUglsm_l=&X4ooyzVYWsg_n=&ozDPRJVkhZZoe=&wQpyHIWsmapWU=&VEi8ouVoVWepc=&RMJEk5XljompV=&M65IS5WVjidcV=&C65pGbZpaakgU=&KNqF3rVeUbWdZ=&ATgqN2Wkpdc__=&sLx7sjWfZhrsg=&Lmd_CbVoXYeYc=&aDWujRWdsoWaV=&KzNyiKVXjbUid=&njjwjBXopnUXs=&UHZ45EYUoUYVV=&LQwD8oUYmUcmY=&ecUoSjVgogqfg=&ofVtGuZXoisnp=&2UTeDQVWmcigp=&BrrdehWcVijcW=&mZFRM7XccsrY_=&bZWCnfVUVm_Wd=&JYRUHpV_scZqd=&GpqiE9VfhYors=&oKSLklWoVorap=&bC7CDCUZghpok=&3pItJPWaesdie=&Qjj84cXsUeonZ=&D2HxwZZhppfWZ=&AHNzL3XVjddZb=&ztDlz2Uj_eZYn=&EX9H9oYpXZdkr=&5QtHIdYoradhn=&AGoGNmWYYijXW=&5czzGqZesipor=&62E5TBY_mWaVY=&iyAhLlWaooXrU=&U9pgwvXbplkap=&nS2AbeUXZhYZc=&ig8bilZnhqZnV=&VDyeWSYZUZUbc=&VLcPlkWir_UY_=&gdXdLeV_Wgnah=&C3g9pGYboapki=&IEGSS_XXresiW=&Dev4vmXWelUop=&n_KtsfZn_WgYe=&mQeuPFXfYUclW=&f9RwUlXpglfVV=&CGzmIhYWddkVY=&vyUXs3WkjjacV=&3qSjaAYhooaro=&eFql8LWopWYsc=&5g59elYVhelin=&6w9D3JVkdlZgg=&sYl3HKWUepUa_=&DQe4j4Znl_lWr=&8_EDkpVo_XnoX=&6tOGBEZcdqgmo=&YRSB6GUgpqhlj=&t5NqL8VZnoUmg=&IrhZK5UcejoWZ=&ZbMZ48WhrbkpY=&PH8nm7ZiUlena=&lWtpilXWVjVef=&ZWYtP5UbYnlWd=&BxJkRLV_hlVdf=&Gypx3fW_sb_po=&2zDQjpYbcjdqr=&radqrDZaUWXha=&OWwS2oZpjarrh=&Xk8CAUUUgWdia=&sW3YWZWpVWYiq=&hez_RcXXlgsla=&ulmFcxVmpiZsh=&IGsrmaWhemmh_=&h3FCwXUjkkXhh=&4nDvWQX_diogd=&E3MKiIVZf_sVf=&2n3GmcVZj_ZVU=&m5pvRTVoidqhU=&qLqv3oVobqbrn=&VcmCfIXd_ligW=&xTB8bGZcecVdf=&uDtevIYmaiVgZ=&VJgn52XXcU_rW=&aT8pBgW_ongcm=&r2xNqMVVpcYoU=&oreQqeWhUbUio=&zlYHHkVjgiomr=&Kt8YOUXgfUWUf=&sVYyE6YqrUago=&b5_ls2XhUnofY=&f7O_zLZYsk_ns=&afWIu7U_dkmsj=&VGW9gXZsadpfp=&_2aSmYYkZsjjV=&gXauzhVenVorg=&EaomBvYjbhVoX=&CLZE3kYnoZbhl=&l7vKkwZahYUYb=&E624J2UbmigXo=&GQPNWQZWdmqsd=&W8C9jJVggpfmr=&eKOYppVcqndaq=&LbLUZNYpWnXps=&5VcrRtYiUnrgj=&49mn2lWhgUgoa=&VESdTcUhfplpj=&RzBIOqUhjrsre=&tgJLWtXZnbVVb=&eAb5WLYnbmipe=&tkGKXmWaoVrdm=&nx4CkBYUXZgfg=&gtFEYcUgqWmql=&Hh7eqtXiophbW=&kPMKJJWddUXVY=&OtooOTWYWUreW=&GVeQLMXrfdbjV=&I5zpyHZabpikb=&DVIVMcWssUlYZ=&jOaABtYkosegi=&EppwfCVYphlbZ=&kXssmtX_jeinU=&TmyoCyUeoeorh=&4ZECdVXrjdgsp=&7ZfH7zWcqrYmc=&w3UjSnZfqnWYq=&8BO7w7Yr_jenY=&Qkfo6NYnakdVf=&tdFglAYWcVqjj=&gmtAEiWiZkVa_=&P8cZZZWel_ngs=&pXLMirUdmlhrd=&RCO5rNZssZjmp=&VjtduKWZjrqVd=&v79_gxUdkopj_=&mSxmChYmdsYhl=&4uZVjzWmnakZ_=&XzlNVkXdbUoeh=&8xcCC6YVmnpni=&HPtK_QWXrYqgi=&wjkvS3ZmYsalp=&hrhLQJWmifVjh=&kEqzXHXjagjWr=&oDnYiYWjeYpmn=&iLFqaAXXZopan=&JHdMJ6VgpgVcb=&h7O5vrUolqbck=&ZeYeuhYYdjrph=&AhTZ8mXjgYmfY=&Yj66HaXhWinVn=&SGENEKWWZXgnb=&UGR42iXXjgfZV=&QX5tgaUsopYVV=&mSIEGhUoockWW=&oZwCTjYbnfkda=&K6f29mZZjsYVk=&tztQQXXdnqrhi=&WSJrJYWbafZrU=&ozznUvXeilskb=&zbsBD2XaYXeac=&7w4lSRVoepico=&QjFHcVWhikko_=&zHNv35UVcYnZU=&7XEPJEXWZYjmb=&RnEtgTWn_cZXk=&qUN2QQUlaafqd=&MlXbahXmpnkfX=&W7ANlnXcmVWdj=&UoPKzXYYbWkpg=&CxPhKbYWqYbce=&4mOpnFZlgWphf=&JriaZuVZsZcjg=&3HUI58XZVaf_l=&tyeCSKYharglZ=&cjQE4CUncdlrd=&kv9pZfU_igjms=&nyZssxVisn_Yk=&XKXmONYpZgigc=&yIewX5UkgoYca=&CeN_YgUYinjmg=&esqLOOZsifogq=&nQAkaNZli_qep=&aWGhmMYgkVlqo=&nQZU5EXlqgrbb=&vHHPUUXqhhhZ_=&XeCPkPUalenWg=&2bAwaXU_om_YY=&qjjbRUZsVmgmd=&6J2QiFXddaWnj=&EmIqRUYqgiXcr=&ue5XB9XZVooZj=&3fCp69YrWkqqj=&TyAoRDZeYsWVc=&StRFjMYaYVlhs=&MtSuY8WXVhfcr=&sZ2vJfZZlpZnY=&NooLNTWbUmelh=&IIzhFgUeXroUY=&sJeuzAZXlVrig=&MA2otqUfkc_m_=&kGZzbCVeediso=&J2VoxvUaVerVX=&m6a4ExYlUUeZq=&x9_jolXrqfihq=&iVAtoyWjXYpjr=&7_N3p8ZcankVp=&ecOUSpUrihYca=&XPjx9KYXhfaiW=&xXlJf4Xongqch=&YKsYjZYggYeYV=&QkUZqWUcqqepX=&JJqwJhVihehY_=&oRtpJkVj__mWX=&u_9qwtYqZhcpl=&XnbjheUqenXeg=&LMjYE6V_XncYp=&pPxOSIVWkqfhp=&td8C2QWXifecp=&YQ7P6yXnrZbU_=&L8wBdfYZVkZsb=&UyGvweVVs_cmq=&ixPFWWVqsUjWi=&YnG7cJW_XVamX=&lXgbrYUXZqnUi=&FIX74WVjrllVW=&ksANDzWmnokXi=&_7CJycYXsZboV=&6UxbMUWoYUsam=&CkatsgXaablnU=&5v_xlKUojYh_s=&kbaWSzUs_qkna=&JpQ7RJWVnpsYe=&KrmSATVVicqgj=&tS53oBXcnkiZc=&oVmaIjWpmjibe=&29vj66WnloajX=&Alpa8GUclVjcV=&iLtIfiYdciiUr=&yUdW6bVhpbpXa=&x2HEdFWbjVlpn=&ztHi3UWpggZZp=&LYFkXTWaiUVdl=&d8XeKqUkVWbnd=&fjQztvUZkYmZi=&DA7TaDXUhpUgn=&HYQy3JYhYdjhb=&DANWmgVXmqiZq=&YAVkG8Yp_hrZp=&zo4gymUVZUrii=&pBkIqHYibln_l=&ffLuVJU_Vf_Vh=&8n3jBMUbWnldn=&jIUFLxYgqdgeU=&FyZZ6BXblcdka=&QGsTw_XfgnfYa=&Q2IrH_Vpcqgea=&PdYMURWkqYsW_=&uFb8zUUksgdXZ=&nHspPDWcsYmXb=&KCVquXXXUrbcn=&mtSUwcVgmfnep=&cZ6o79WpbkamZ=&JQoBYmUl_ffii=&Wz4tEFXsdafXh=&jKy7QOYpafref=&NBoAkEXXUganY=&vfjmbzYbkhprm=&5mH9pqZoUkaq_=&mNsZtsVhbXolf=&tBEc46ZhWhmlf=&xMznYhZYadYrm=&iJj3pwVgUfilp=&DZU4BWZnkegcn=&55dWL2VpjraZn=&kJDLeDXlYfodV=&RM5TJYUpaeZdl=&WzCjLjYkpnnko=&DwLEooWhhfadX=&2SIDmWYmqZsWa=&6cslPHZZdpeih=&Gjylk2XsYYVgc=&eoULmSXXknini=&iPFKU6UraV_ic=&rbEeDZV_ncjaU=&gO3eDQZprZrVc=&U75EKiVahhYZV=&kEpyytVglV_Vj=&yUyXj3ZbqWWpe=&qGzZkpZjlomid=&LBlmN7Xflbdrl=&kpA5fWUZ_nYsr=&CozZ9JVUmVUU_=&ck6JDaXVnXcbZ=&k9ZREFW_qZmqV=&Tcg8aMYWkbZhi=&Az97SqZYimhlV=&uzzfxMZeZUcdg=&jLw38FUbgeXVo=&qcceKjZknbhXb=&9_GCqRYesmsVf=&LhEfVpUrasnfX=&FpsbeWZYoUdrX=&e4fwe3UfbsVma=&THwJRtUZaiara=&3dSbpwVogpbrs=&InZe3cUcgZjbs=&FHg624YkWbrog=&aHW58zUrmrbqr=&euzyQxUsslobZ=&gy3rOqZmbpaZg=&ELNoiqVgU_eUU=&ckl_xfUZskVWa=&vBGw8mWUYqbih=&O366alXlYdZq_=&zM_NZQUqojsh_=&95WbHYZqVcZYU=&9HJqieYbZqWXm=&fTMwF_YZdbhhj=&EVNpR3WijYX_V=&223nQNWlfdXhU=&ZOCcVlWirdUYm=&nx4tSCWkefXar=&uZAVBqZlcohoh=&tceLh2UVhlVpY=&FTtGJhYUamghb=&hePzi9UYdhmnZ=&gijqCRZilshpp=&PFcHyIVWjgsgW=&VbxlJjZXdYnhg=&NykVK3Uelqe_g=&2P4b6QYhlhUne=&74GEeRZdgYpUc=&GPVONjXahaX_a=&xJY9BrZkhngiU=&wCCB3JWZoVYfs=&TLrSWCVWc_c_X=&dmSSLuWXbhYYs=&zqGEoiXibcYfh=&IoFZUVXlrbZVU=&kvQ3f3ZYqnfak=&HxMTnkUcYhpid=&vaDttEWljkiWj=&gttCuTZffYplp=&snpxWqWcaVkjW=&4Wj6dsYrpofkU=&SHjCOKWnbrijl=&gvghdbWc_rgee=&zKf5c5ZlUhgmW=&nJmGESVjhpn_k=&osaemqZmo_UXl=&MCdjAzXWYZsWs=&4VV4OCVYdhpjo=&_QZGULXgVh__q=&_IIPvqZgVcdgc=&bm9UOrYmrgmgg=&pix9e5UlhbZql=&mDJ8VgZilpVXe=&lgbOC2XZ_lcXU=&u8arluYdrUYgs=&AHnMzjYoYqsYd=&eyIeJMZiskal_=&gW4VByXWlZccp=&r26ucNUbqdlme=&WLfXsoWkmWUrX=&LFL_EfXeeYqsk=&sGp_DtVfi__bV=&zBogmaYZihhjp=&pL7a3TZVep_Yb=&pUP4oBXeYhpsU=&edhPGLYheUdab=&aBnhAQXisbqWk=&_fe4vNYbjilos=&q_BCkVWenYqok=&CHg3WAYdWkloW=&xpJAfzZUapUYk=&RY3MjvVlgfUel=&jlOxbLXnhdYbj=&5KJ_bcWosp_ie=&b74eYcWiiamdk=&dl76wGZkrdYhc=&XkRHyFXjghVan=&YX87bvWohqj_b=&W_DnVwVfmeWWU=&kj27r3X_clfqZ=&WHiULMZlXmZns=&uOq8fxWgreoop=&H7nKvHYpmYXcf=&bwEB3LW_U_k_k=&5EIlq7ZaefaWq=&aa6ok2YjraZpp=&ffncAMWUWXcbY=&vIR4pEWglkZle=&bW5DTEWlVlbph=&FfLLWwUmpUfWh=&EAMTxEZifispY=&zPUMiXVijjbks=&Yd3djpYnmrdUg=&87v2U5Yfikbqs=&vHVTjAXpiZfcg=&FhznBeVnViiUj=&4UCsfNWU_YUka=&IcJ_tLZeqrqZV=&GCfehiUjbised=&ctJcTRX_sXUYr=&JfCGIFWXcalis=&3pdBmwVsaaUfm=&gmQOBtXroVqbb=&7PrduKV_lXVnh=&pERux_UZoosYd=&Ige3ZmYkebroe=&VQuB7FYobkkej=&SeuOhtXgsaqfd=&nz2IanUj_iXUf=&_YAX4nZdYZsZW=&wFpIhnZnoqrbn=&RTBWs7Wpp_d_X=&v9dAVEUsdnYXp=&tSXJ4MZb_Wbik=&3ZU9WgWsfqXcg=&mDkWlJWVadXmr=&ATEjL4VmWooqk=&HBi98NVYqdUlg=&rEBox_ZoWeWdq=&5ENxjTZVihnVa=&RWnSYkX_qmanf=&hyfoSvUfpkkYq=&eOOCIYZ_UXkqV=&f8Qc4FYsqmfhh=&BRwmZdYis_khc=&hPO4BGYgUgZYk=&QlzE7NYUqkqie=&jF3tE8YfspZlf=&2h52S7ZpVhVdg=&omjaOhYm_Wh_k=&Y4u5N_YqpijVc=&8khaQKZYhig_X=&oOFqYLZch_Ykj=&Q3SSJAUjVbXhd=&2pIUKXUpkd_gm=&DQhtFkYcWqcpi=&WEy8s3WrXsbmh=&XucqVYYprnncp=&RDObB6XqXnlsi=&y6_exqWcYpdeZ=&MDhFEMWmWqplc=&J4JumxYVUqibl=&cCeK7MUq_X_mY=&Wy6kfKUidsgXj=&LJYVREWamjWog=&9a5SepYYhpolp=&yE7qn7ZmhgdaX=&E8MPmtWjfaXbo=&VpLgCQUrdchsd=&GwwSBaZbgW_fd=&GbxQu6YmqbkmV=&Q9qthEYrdhdje=&axEvPCWsf_eqV=&iWtxdgXcqpepd=&Jl3OlaXaYnmhf=&NUsIqJWqkWrqU=&eiebWPW_lbVie=&Nb4f5YYWqedcU=&f5oZ75WVeWUhV=&QbKuNJYjYsUqX=&Aq5BrLZqiZpnW=&SJxoIYUqXskbf=&aWOI9SWk_XdjW=&CDapJBWZkhZgo=&fhTPNhUgYn_Wq=&yQCfmCZYgiokh=&DtOaedWVpbdpX=&zPK4hxWrjXoil=&UDpmZmZ_jXsXq=&UNOXCZU_VfeYa=&p63SaiVXXijrc=&R8oZq7WkfWcob=&bJec5lWoXlgc_=&n9EEPGWgUhapn=&xwSuiGYdYgdWe=&SkJYTlYZbYarb=&teEhCoWeVkUjr=&3eCOfJYW_qeho=&CHwQemYsjsYal=&bWu43HWcUrlll=&8UpE7mZWskmZd=&HuzNuAXdpjlWX=&FDIkxzUXYablq=&KxRzbYVogcUci=&7TFvPkYqfgsrZ=&Wv47gXZgdsp_X=&BXkorYWVWbdUV=&JMEyffWfkZqpn=&8EXsgtYhfWceq=&IbE9JFZ_nbdkc=&EkGKEvXXWUkdl=&fnaKqOUXirVVV=&74gfPRUrjZ_io=&xO8p8dVVbdmpZ=&EWLYMOUmppiXb=&N5Xx5jZkpXYoe=&kIPtZ4WdlpgWW=&BXz5dOZo_VYmV=&SUmaERXkjkqee=&U3OSs7ZWmnYsX=&QL822SUomolWW=&l3CrmLYkZpdqd=&NXFBBVXcmaaWi=&Cg6uKYXdonWba=&2W35KDVocpcXU=&ZqL9QsWWerjdg=&KFZbVrYfZrsZe=&CQe6EsUbsaeb_=&aNqjdZXsbmVms=&zYxqsVVojn_qd=&ypS_WrUobZpnh=&8YnuVmVhkakqg=&EX_r5vVcfieXd=&QaqS3QUiijVhq=&DnEVNVYcYbVoi=&PJnhbjZ_ZWhVf=&o52lLVXnWWgna=&8pVAUVZdmijjd=&VMrshFXegeYpr=&PCX9doXkaVjUl=&x3NAFpZdXsUnp=&DfscnAYmcsVr_=&Eqb_kdYjWjrdr=&FbgEnAYYUfjdr=&yuNXMDZZjpWhn=&t8mv7_X_jhlbj=&oP8pEjWrYWYme=&Lb7IWbVbWnmdg=&R8dvlFZWllbbi=&i9K8iKYolnfgr=&DS8EZ7Ujjcgmg=&6_PCoVUZ_cUsd=&faKQTlWdV_noj=&eARA7DXVhZZai=&ox7B8bXZiam_d=&Ryo4xhYeXkbre=&esAZrLXg_Wqpa=&_s7fpIZZsbloh=&Jcv2zuWZpUWfa=&sxmrAaYasmZlX=&DZpL5BXYcnUbr=&4ULE2EYWlsUja=&BVqAivVgincYW=&l53E6EYYasi_l=&nPrcjlYjddkmb=&aM9HBaXcojVgk=&y7M6vWWbkjgUZ=&iP4WYEXqhUVee=&te4IN4WjrUlo_=&GW8gcaWfcblha=&dblZ8oWkkflhh=&FcHDAhZVkrgYo=&7Pwa3DVbmcZYo=&RK4S7zVpnhaZb=&m6JyqZUsgkkrd=&IExdejUZcVamk=&bDc6kJVqUbkjU=&vg5Xf8Zpi_ZgY=&iTOONBVU_rcjr=&GtNiQIZajmggd=&wvEQEvUmcn_lf=&Kmjj6eXWjWqsY=&xhyuA3Wjq_XYZ=&3BZa2ZYilaral=&vBPjq5VbahllW=&FOPPJFUgpsceV=&wgxJNBWdqajjm=&7nudbLVXeisro=&RMgPYDXhqmZfa=&J26tDqZYskcXY=&Bf_nPXYsiYlsf=&7qAghfWaajpkf=&6T_z8OYXssZYh=&D_9uaVXjmgmbg=&RnEfVDV_ssfZb=&BFb2wcWZjqcop=&LXh9XpZ_dccWg=&QHS2v7WmVhVUX=&EY6J4DZgjpdmn=&ClcntDYYjkhVm=&yirMS6UrcYj_p=&BuVaVLWsXspWl=&GNHv3CUlYVase=&YeKCWzWYrdVcb=&RfpFanXVsoneb=&Sv6NzsXqo_Xji=&uxT5CTYbajVmX=&OBeDVyXdgUajr=&QpL6q_Vaffgsh=&AlbD4RXkWem_X=&FmpYwAYmhkeio=&_CjnBVWnq_baZ=&nThUl5Zkks_br=&vXwqAwVah_lqs=&ChogrWZcWYlkf=&9GkSUAWleZjmi=&IX2metWfojfZq=&3l2kqsXnqWbgo=&YABAPyZcjqkXg=&7qL8C_VVhdodm=&2iMe2cXrdVlhb=&ZCfs54Zbnlkbl=&rjZje9VgjsYri=&NaxR2IXXZohbm=&fqCSuwZnZZfgl=&vG4iV7ZojpZac=&x9XtZYZqXcfVh=&FQffLtWZqhmXr=&u9hTZtVabpbfa=&XKkrnvUUVnken=&ahKUFsVspfWVj=&_jVJZkYkibeUe=&9Y2WOyUf_YXok=&o_VmasXa_gnZp=&RtW8A2YmpfWhi=&a9e7YFWnrpqWl=&pX4Q55ZadYnVc=&74XAmdZcahepr=&dKctYzUdgkefg=&lggkGVUdgUfZY=&mdxWhYUhdUalp=&UN77SdZlkefak=&dRZNJuUdpiflU=&rJ42H8UZWgbqd=&RqL9zAWWUokso=&_VH_kpXqXkVnq=&Ae4_DKWhYbiqr=&sJKaSEVXbbVlq=&maReKDV_phncp=&4qN95fZhcjXVf=&VQZ3CfUaloWaj=&l7hKwbYUjmmrW=&JP7SqsZmpmhoU=&2L3qSlWpZifWd=&9tZ6E9VaisZii=&rimWh5VgVlgYa=&VCRgVeYerjWbZ=&J7VBI3V_ppgpo=&yJggQ8ZY_oqUe=&wfo5TlVcnXUgp=&PDiecOWW_rUYm=&ycu2E3Xd_fdlj=&hDkXj9Zkegomc=&UaFLExYXcjprg=&7s38REWkWhljq=&G_jHfRUipsiYc=&BoJGMuZgsghsX=&w2DDyoYbhZdWY=&Zz_zp3Ucn_pnU=&xlHXo8YfXnYgX=&YNqkXMWiXXrYW=&EdHxmYYd_sfWe=&U3Y3L6XjldlYs=&c26ceZZpersd_=&l4mIiVY_rccrq=&mg7iWSYg_ecbU=&GgKRIbX_dgshY=&GpqSzVYYXZnbW=&PnZufmXbnff_U=&b649OSYXnaXeV=&QkScCyWdsf_sn=&wFEt9pWomi_cg=&wdxNQjXsgcfoV=&VRzkLvVcXZXdl=&LaiiDaUfgmbef=&VZ2eRoYsXrhpj=&NgEWuAXoWs_in=&bd2snOYh_Vbln=&n_IohLZXicsXr=&4XzUBxXkjfpkY=&IWs4adYhnVgWs=&x9PofUVejUknf=&fWYzYyVncjZYj=&jqtxwXUb_Wnfc=&kfntPmYZXdcqs=&qaVq8_XsdhpXs=&mbruqeYjgX_Zc=&lohol6YrXVklf=&ZAt8j8UXhsdYV=&cyQiXtXVqsYbm=&TeTIoIUhZgU_d=&6TBEM_XXUeafb=&yGtILtXkZldrX=&vz2FR8Zfjgfpk=&R6CCElZdrdpdU=&JNYZehZplgrlm=&VOpzqLWcUjrdk=&3S9B7jYWXXnio=&AzD8CsZiYcdjV=&6jsAD_WcaZfVl=&MnOKlFVhVbcbn=&cvmDHJZXZZql_=&euD8hRXfmamfc=&CbLpk9Vccrrrg=&JWEtAdVZbddql=&qopMHcXgeolli=&xmFuhCYmkamUk=&_aEGY2XbVbfls=&48cOB8XpnojiX=&mVp5T4VZmVkis=&jUOyjHWdhmjdY=&Il5wfcYickUkj=&URsP2rXhcrfdq=&DHZeBHZhrmabY=&q5WxpGZlcYkYl=&4m5T_VZqsYoh_=&M7VjdlWiXl_ho=&ioxjpbUedeUbb=&PCUvWxZk_sXYU=&O7xdBkXenpers=&JLkR52Ul_Vrlh=&uB8ESHZgoZZel=&3fPysaVdhYYoY=&qunnm9YXdY_nm=&J8qNPsZZhVZea=&4n8_kVYokb_bV=&sEXKbjUehaXWo=&emibnhYkneij_=&yurAliUepprkk=&OHsaZcVhknaom=&OjFRZBUrUdoqW=&mm_OP9YbnjYgf=&yX9UqbYnapVoc=&fDiCOLZjfcYkn=&6IkzzlVUl_Yho=&ekuMuJZpjdZ_b=&ckcbJsXllraWZ=&wFGRcbZr_mffY=&GRrqW8YmiYbnU=&gJ4PJeVYdfllY=&DfTXYeU_iYn_W=&5Yek4kWUUpfbp=&NWISzqVpnUVp_=&GmHaklZljprqq=&tQCtzlUrdlqq_=&WdYgpdVannknW=&C3RQtEXdp_rnq=&OaoOaiWqY_kV_=&bHpu9fZlkales=&OAkaeeUWojehb=&uugVv6UdZVdcs=&EEf6Q4XUcWpdr=&ZG3nIzWZhbagV=&_arT8cVklnaml=&aS_RrOVqnakqp=&qd_NocWUrsqnl=&bLYGaqXbsn_hp=&RaaFNdWlcfekb=&mq6gGjZZoXshp=&9jr42JXYXkrah=&hPww9rWcl_gqd=&6ubMFoYiihpam=&t2u89_VWeecon=&IUtODEZWYioUU=&qgqTPlWXgdqgc=&ZAbgzVZngVk_Y=&xcc2xQVsmhVra=&2dXq5fUmcoqfo=&T9ZMOhUciqdVs=&3w8OQ2WqVjZcm=&zUIXAKUfoWYYg=&EdoDU8ZgiWdck=&emgAfmZsdb_gb=&pHiv7AWXfWqU_=&jcdaDbVZbib_V=&DZXrVMXkikjjV=&7fdhKPVYoUkWg=&33mduqVllhqgU=&6p9bLMVZchgoo=&iiu8qXZqrUYej=&n9PHJXYXccVdX=&FFk7LbYs_phml=&Nyz8vbUZodZds=&YPEEwuUlXiooW=&YVa73uWWkmoWY=&_SLGioZUgVcpf=&CyuQ7WVahZZkZ=&GV6GwgVZXmbij=&rZvt9RVfedfik=&DSQv83ZhZjreZ=&rh3erWZecsjnf=&GUVMDrYpZimhn=&cVW5iPWmkUmch=&Pqn5qBZdpVkjb=&IUSpXoZbjsonj=&2tSrpHXWmgsf_=&Pfc7IoYZo_o_k=&2OuggtYUgjis_=&C9HaZeZiWpUpW=&jTNoJfYslqmYl=&Qh5_voVq_kepf=&JpEPLLZooeZmi=&iH6MDsYdWXdX_=&WR_GTpZrVUcYf=&Yp_TdoUr_gqfk=&qTpFcdZlkgol_=&ieXkkeXgseenm=&8doEExWrnXjU_=&7pqmXVXX_qUpZ=&odPJnnYfUXjVe=&jyIQXFVgleWpb=&syzVPuZsjoaZX=&r23_pKWdpcs_m=&Q5dWLpUjopmca=&KFsdyuYohadcp=&7Of2USVaWbjW_=&7p_MHCXUfgrai=&MIFtILVpodrae=&BNLJLFXlcksZa=&w7FfJBXXWnUUi=&GWbANfWaemZrk=&LSh8WVVhfpZpb=&EQmq5IWnphjWZ=&MXpXupUjYrmlU=&gTp9uvUpi_Vgs=&3nnHbAZohiZdn=&NY8VHPXap_eki=&7xEqvDUdkfo_o=&9DKjZNUksmnnh=&ux9_DaX_VfcVj=&O3AtNXVgrjqre=&geQLEIXVrqhnZ=&MnUAfRYmnescn=&QfquXBUsWmacs=&ABTXBoZojbXUV=&xqMgZ4VkYosYX=&7Wg8zkWllffbg=&OCWINiUqhqf_Y=&z7hXtbUfsmhYq=&eldnOAVZnnpfW=&8zP22qYhboesg=&wmeHUCYVlad_n=&veoh8IUWrXrqZ=&HY5uagXYVnflp=&v4qPnKZeiagYi=&cvpVrnZnUY_Zb=&_N84GZUmeVgWq=&3LfUMaXZjirbg=&myrSd7YbnVXdW=&lczwi2XWniphi=&4By4raUZekoVd=&spkcgmXhqiUbj=&cA85paVaUfdpn=&7VlWffXdicrog=&Mw5foAXbmekqo=&Tl_zP2ZW_nc_W=&s5LzhVVl_UVdr=&oHa3jeXqfcmmV=&MTUFrgWfhgaVj=&dkWWsrYlaliWl=&7D2gixX_bbnUY=&RrwWnXVnfcek_=&t_IVBoUhcbihp=&MNSBosWjrUiUp=&bi2N33XXlhcWm=&2fBPmcUnpdgld=&SuK2vIXbUbdXa=&vybG6RYkaismr=&cNquo_ZYcjgsk=&NuQcZgUmXcXYd=&7PFwbtZ_qXVco=&M9gZj4ZadVfYo=&lLYNtqXbpWieY=&4SiEeEWbXeiVZ=&gTAK2dWZnr__j=&c3dNSuYfXfnfi=&o4dX_qYZZWhql=&5jHO5IXaobUqb=&EibLa2WUoXisj=&2l2ESDWWohqXX=&dAKFCFUdYXmmc=&GwegoVYa_kVeV=&7uVb7QYVWekig=&ZhSUCOXVVrebm=&GP7JpXUfiWdrk=&HS_xsaWhrsrVb=&KNBbgdWaZmZgd=&KC4pJTY_eUhci=&DigvgGVmZdpWV=&hp8OEVXkssebZ=&RhnPAdXmmZkVb=&AfbTmaWnVYXqX=&WngPmdWgY_UWi=&GUm4KIZZcU_ZZ=&M7jt4rXfkgnZb=&w7xt2OXsnUril=&gve6tyXmkqspW=&kcgwmNYfanXej=&hYKwBdVcWnZad=&ve3iy8VVZdXbr=&xkeXURWrnannk=&opQAmbZUZcYep=&YmSYlsZshnldr=&QkQHyIXYdnikh=&__Ey_kWZercls=&aQHrDzWaUfhfc=&v266zVYbclrfX=&p5T5u_UmpplWm=&H6nNQyXdmYcbg=&PPmQfJZalXlZc=&jdn3_uYfkWmlg=&KX_p9JZgsglpn=&wOc__ZYUhqpsq=&IcUMpAXalhbjj=&Ti4EmsWimfrrq=&KRp7auVXafobV=&ToBkadYoinV_e=&akdEj7WiUYdlp=&_nBog5Wknoaph=&ruJcVlYkp_fho=&i93ijwXko_nln=&JWGqH4Vlo_oeY=&fkAs6lYiUVngq=&RHQDzzUgkbiUX=&HEfPGXUsZ_mmU=&ScAC4LYXbbshX=&zmRUuNX_lmVrm=&Mm6Q7YUmjrbsh=&yz9wgsWVdYljW=&3mdH7fYgXnYeW=&AGRUtbVrearja=&CPOWFbXhZdnbY=&yUnTUtZcYghgq=&33_sHcYehqWfm=&qUHFAsUYhricV=&_p_Z49WooZpqo=&JYOcBFZkclfdY=&rMauOPZVfqiem=&zZnbrJYdrlsjb=&eDbXbiVm_ljo_=&4_MwC5Y_geejj=&T7OhWjViqmcqf=&uJ_qzUVopcVfX=&yPMTrJXcjilZh=&dkSPtqXr_XmUV=&Ov8L2jXWcmaZo=&Rjj6LgV_Verpo=&Jm2tjaUdfdrrc=&_DXRRKYfYZgVo=&mnWPJXW_dYnsd=&O7IiAuXrkssin=&Poi6AzZrbcbka=&gBYIpnYkdpepl=&TyRfGJXljebcf=&rHlWM6ZcocYiq=&vOT8sMVqXjpao=&JLYOr9Vehfelm=&Kc3K3hUY_cjli=&tGOZB_UZebjfs=&uqg3vKUcmYklr=&oLoIDgXhibbpk=&PnbYfgZoqofpm=&QzvJnrWbklmga=&np4NVYVrXUZg_=&fIkE8WXqocjib=&7rgBtyUVmUfg_=&5Y_4ZmWlUagqq=&IKn5VAYWrcZad=&z44hJVVoXUjcc=&TXyyVrZUhVncX=&ck6lvkZikhclb=&88ROtKVbj_Vkd=&63YPxOViqrlVc=&fmPDxLXmlZhcg=&CPsME4Wpfr_Uk=&J2xud5WgolZfi=&77ArCaUsWrsap=&OszPixYmZscer=&rYJQLZUbq_eam=&EYhkLUXn_WgVW=&5qXuTUUdijXgs=&I3GXaSZjfncmi=&qF4BMKZooeVhX=&67IOZ6YookmVX=&7PGJApZnZfghf=&pk_o_vVUZdcUW=&27e_icVXlVqgU=&QTLkZQWjnaYaa=&M8TtFWUZZl_Yg=&M5iFGUUZmXUrZ=&u4iNIaZdrXYWd=&QPT5STVpnhpih=&gbrjDUWrollhr=&OYlybYWVZckmr=&zIpX3SXZnerld=&zry_MhYdphnnV=&rkF43dYjrW_lU=&raSxcCWUYdZfc=&YMIHcFXbeaklW=&oEgeeAZnaUops=&M5HZilZb_qrqp=&3H8_ZXUeqaWfc=&44gTNlXlhbrWX=&vlSH8oZoh_cpU=&_yKdHVZYX__VX=&KjHbv9YcidpVa=&FtfwamYYdjVcX=&VSmNRYXogqkcX=&OzKdqcYbcsmqm=&uv5tDCVUYsUif=&sAowMIWVWUfor=&9pU2vpWXpkqbU=&G9jL74YYnmeZ_=&xgaNtVYrgacai=&uFwnYMXk_lgp_=&xqRP8hYlmbgkm=&tNPJa4UVVqbrm=&qlMGCkWkmqlfi=&JiNOVrYdiiWkU=&r_z_ITXqZZUni=&7LJcDEWWjkmro=&jt2cVyZerllZk=&n9crJyVgdadlY=&nETrSaZps_epj=&itO38UYnkeZmh=&dQ6_LTUaiZsfh=&_8poMCXqlgh_s=&K6hctHYmr_qrV=&K3Zws8ZopZYoY=&ZUEjCJVgfcjch=&XroSKAYZXisWd=&opHOyBYfirdVs=&Kb_G5iXdYYYZZ=&ebdTCNYskb_nr=&IXmaCDYVgdXdd=&eqLSL2XXbgip_=&Bnaws2ZlZdmmW=&8_U2UXXesgfWs=&gAy_jPZWeZhkU=&_ro9BhWgcbsqj=&yHGwafWgUrnnk=&NnWVwAYafgkkl=&nZ_zoSUXYiZom=&BOwu_eUgYfcho=&e3UcV6Wo_rUjV=&4yYqQWYhfilnq=&VGrJc7UWh_Wha=&fHtNTPXXdid_r=&xUKX2BZgn_er_=&vvS6uIUoeasbV=&h8q5_pWbpsorp=&z_bq2GXepkgdh=&tVD4oYWsgahqU=&kgTxbfWiicXYk=&8igbQJUlgkfaU=&z4ejSVXjWiZgm=&KBi6xhX_dredb=&k2buJ_WqjbYXZ=&RlIabgXVphXbq=&ccvBDFVYoqrWr=&UeANWQZcbgnrc=&RL8WH5Vmkqqco=&OBYduYUrjmfaW=&AgbkCdXbfUcVV=&Ak8iLqWXnV_gk=&Ph2GjfWmbVaXd=&M8j3laUrncdar=&7MQZliUjdbabj=&ETDxagYondfpY=&JULEvMXclUgsU=&6hoYfTXjpVblf=&En4oAiYVslbga=&N_BPv6VidbZeU=&WlufC2U_ogljo=&INp2yaUrrjab_=&W67uhHUamnikf=&5uXMirVWgZa_j=&CNe7XgUcY_Xeg=&mxZwdXZhgehUo=&kYev8dUhbWYqe=&eW8NimUbhgWoj=&wKzRdqXhfegfa=&dTqndpZ_eZggm=&Lrjzl6UaidlUj=&MwRYJeU_kWlfV=&npcHrAVdnjfnb=&RP4_B5WUnopej=&fC_m2wVanpZVs=&TCKU7PWerhqnm=&3BShmUZpZlVYq=&bDYvuCUpsiYfe=&IzPknHWroikoY=&tDRzqYZYUqWXV=&crPWGeWgWdhps=&_zMC_DViWjlis=&gXhok2Wlpbknc=&K6eMuaYpYZssq=&VxKT9fYeoUiid=&xc2OyvXXlXfhm=&unHegeXXfjiaj=&kLZHXSZjklmdl=&fSXiU8YmrZXWV=&A5uYyuUmmlZoZ=&I2MIcZYsoigad=&v4DNu4WbheZVe=&sj2cuRYdqrplg=&9lfXMjWojorrY=&GRx8ylUdYYmWq=&aDPjH_Wbj_Wja=&Gaf2akUkfiZYb=&PMhvHCUXkdYad=&YPaSBUUqf_gmq=&nTD4SNYgZiXiY=&cLhyuWVdmdjdU=&KSyittXZXj_ah=&XZj4arWZUhbfq=&WQYjhjZmpnrkq=&IMpUAzUgUjdpo=&7BdzrqUmqdeXX=&7bG84SZdUd_Zi=&nb3k8jZoUmVXg=&j63ZQMXjsWeWq=&skLfoZUkUgXip=&QIRXYSVbjbnbj=&DXdHOyUhd_fjn=&5TWDVkZrfWjrl=&faAR5pXbUVilo=&AXnVtHUsdmWkh=&EVoM82ZqXjoVs=&xHwlDEZripaYW=&fEAHgAZngZhXq=&aa4HghXibslpU=&Fr9O6NXgaj_Zg=&VhdZckXosjiap=&vuu2k8YeogkZV=&okWpRjVYdrsfk=&_vOvcVUVenjbm=&IiMUqFYe_pUcb=&QhdpDbU_ikqka=&4jqBUXWmbdUnU=&qhjOwuUVeVZnZ=&5eB5awYpUbegY=&KhcThgUaamhof=&cEFh5MXXgpnrc=&H4TvfAVbmVccX=&_zQhEgWkclppk=&JKazKrZbVmjUe=&Ly6cnSUirgnnb=&R_dJNBYZjechb=&otw3ifYZpc_Zg=&WBwhamYgVemas=&2HQrIhXeVYbfd=&PdKSU5Xhh_Xjo=&zOHfmrVUpgjsq=&ytiVsJYZcmqre=&g7jzeTWnbisfZ=&ecrXfMZjdlsis=&3Z8HM3ZYaZlad=&SaDMxUWoUiaVo=&PRItubZikae_s=&zqpbosUoociXd=&ZpLzmgUbVbUc_=&WzOSZpVrilmjs=&w9uWwOZqWpbjn=&aXkdFpUpnZk_o=&Gn3jMnVjfcWZm=&JBtLuNWdlbfpp=&axwPd3XbUc_fX=&S8NB9bXbnbdsi=&xXjyu2VYcfrjd=&F6HdUMZsYXanc=&zb8cSzXU_sYZf=&oks_9zZhWooYs=&LMbeYVYaZhnVY=&aWc2G2ZgspZoi=&KtmWzfUXg_WVs=&huTIQMXjmirZn=&ZbcE5AWjn_hYe=&DrmgMiZkdhmsY=&x2xRwcVsdcfbr=&5p5JrBYYliVde=&LGJGVcUidYkro=&owkeZgVfjUhYU=&PhjHSYXYXqdXd=&yctqlrUZZpcYX=&5quXL8VdlgVnf=&m8SmNiWhjbgc_=&74nsrCZacehYg=&BIzHekWoZjZlo=&XsalDNY_bgWlj=&4aqVA3Vkoae__=&lrwTOBY_hXVgW=&uZLOmfUYhrpYr=&Yxg8FDYWkcdUo=&n273Z7XjfYpVb=&Rr4MiaUhkgYjk=&hPJCtEVqYVbln=&6SPcBnUphscle=&ISbEvIWgiW_Wp=&dSRkmTZj_kqUi=&goYRVHWdX_lsh=&Z793TLZUhojqr=&a8xcgNVWiZpUZ=&i6MMiZXpqka_h=&UF6ZZJUehjfmX=&o_G9FMUdia_do=&_ISpd_WfgcXXg=&6gdpRfWemhroq=&KP4maGVfbnbkc=&LqPtPTYonWlpj=&TlnqomUWhnfmb=&lPBx_8Zkcieon=&r3qhbtVdnrUkl=&ABvdJOVhegaUV=&oK28C9XeUjare=&rAOjwdUbZZbYU=&5UKgIFVfgekpf=&pcPODFXseUYii=&aIIR_bXna_eif=&IPirqEZdZbpee=&E68xjQWqYrjVq=&u8K9VMUbsckcW=&JRhnicYoZndmU=&LeYKyhVqWsWeY=&ykPqXOWdjoXUs=&s36jfEWh_noUs=&598c8NXVqlpbj=&zmQpWkUfbWqVk=&pKGQ32YUoUZms=&oam8KjZsWcqYc=&c_KYaGZprUaln=&LJt8blVgembb_=&eAkCNbX_Ygmeo=&ZINzUMWhrXbmo=&Q6CRKtUZbj_jo=&iCMTdEUkqpbVe=&evek7QXWWVgce=&rhZupWVjgVosY=&UVGJbCZpiheUd=&fEJDwOYVmpmfd=&OzOBTlUoknXqf=&ENauTHVadcbeX=&vL8bztXqlZrir=&oU2AwLYpkaplm=&5okJpUYdciVZm=&hBx3AgZZckqnZ=&D37JwnXpcZade=&5ioiXDYoVnp_q=&EwUzmqZfck_eo=&i4FCW4VfjhaUa=&ahZ5KtYcabomn=&LsNuAnVakZqYW=&vNtJSgWspgilr=&jA_P2AZohpkUX=&7aOQk3XmlaVdf=&Qd3w4JUWbXjnc=&SY6ZdQXkjUYdZ=&_L76iyXUpWldr=&dv83w6ZYlsaZe=&2yDKPKXghknjq=&zLgBf2XYcWopi=&SXiLbwVYepncZ=&ygREPXWYciehn=&GwaUCIZifiokr=&Rvp_bxXZppecc=&qKvhGyZqdfjls=&MJwp4PVVrWnkn=&WFSvCDWUhWkZi=&UQ5LQhXjWjjlk=&NwYm8LWisUWYa=&rmkcqXWbiXZnb=&FNVflCZmnUjib=&KkdooRZaVfpgV=&EEhdNrUjeljWc=&GAt_jQVlraben=&qPYro4ZrbVhXs=&W6kYdRXrpbshV=&YY2LzrXfZbmeZ=&mhoa3SYUpXanX=&tr8TaJWUYgZp_=&9ntgENZZeebhq=&OISOF5Vinjgfm=&44n5TxYfeZhkj=&Cu_N37VmhjgdU=&5TSQIQVXhopXp=&ivRCxxXZassmf=&EieenUUarqY_V=&IR2FFjYfVqcWW=&IRTuYcZfnqfWn=&mnqj9kX_VchfX=&PHOWb2Zdfdihq=&9DXhgrVleeZhd=&MCEIRGUUco_pf=&5PQXLFWkXhf_s=&aMQ8snVnWVfkd=&KJ3BgXXghnknq=&6HyoAmUsafUqm=&txx4ZuUknbmUg=&9DtjnIXhpslhe=&qxw57HUdnpisk=&Zlay8OVo_cXVV=&VjMNT8YgegUUc=&p_W38nVddeijk=&Osrj5GYUfibfk=&FdfxNUUgqh_gb=&WFKnWiUeVljmg=&tso4iwUZiqWeg=&zc52L8YdhenpV=&ngu2AQYnWmfpU=&6ES58PXdXXhip=&aQiOoYUpmWdsn=&cV67QJUrhgie_=&HCKJPCYnpjdZl=&QkFyJeZf_mfaW=&czQMAeXea_foe=&fmVIjqWsm_fnq=&8sy_xqYVhkpei=&VEc6yVWkpdglf=&QZzWCUVsUpgcf=&BGqIG_Unpolid=&MCdW3AYoaoZ_Z=&Bmzq9RYpcncrf=&96UpD3XeengjZ=&fOwaepXdss_gl=&cWBF2qUUdWrfX=&mV24kDWYqmZeg=&lDUtXQVVrcbf_=&se7iKkXVeadma=&kDUTXYWYYjink=&8iFnEGU_Vmnhp=&rfk6pbZjgWlih=&QMaQsxZYZVfqq=&G8O4_3XfUa_cb=&qN3R6DWZUqZcl=&PzfQBrWhqgapU=&UFtLTYXomkXrW=&NBGA5YZYiW_ga=&iacpUkYokilb_=&P5ugVKZeiaWcU=&vTlbc2WWbbUpX=&spmhkMW_skVsq=&ohDm4uUkmUq_i=&tXh2fdV_ccklp=&TPfJ77U_saXVp=&fGiIsCUmdV_pf=&gMuXwQXjXVUg_=&3bozrCZmqXlgZ=&ppiBemVkqjpYr=&a3xlMrZsecgbW=&Z2TDq4ZnkrVkU=&9mQdoDZWnmddr=&qJAYyFZc_hfcg=&_aioTwWaagjgr=&9LXQGVYiq_kfn=&co79XAWjWqreq=&_JjfhxUsjmh_i=&bIERpVZoYclrY=&xHJ3ouWUXXrch=&IMsh4SWppmiWV=&M9W2_RXnbproU=&47RhMeZsafqYq=&RSGr_rWpoXXhk=&6WDg85UkY_gbr=&dmpVHCVdoaXam=&vR5Oz5ZZiXgna=&C9M75DZghbpee=&IaH8POVVihji_=&4ewlBoYUcia_m=&N5afFtZqgnmqV=&vrHxvYXXcZsYf=&nw3PbqUoZrnXk=&TpAqc2YiZfpno=&Qs_3vDZZpnpkW=&sGRRhdXsWXqUj=&f4HfxBXjiiqar=&YRv5qIUqndhsg=&GNpYRsUhicdaU=&ljML4BYVgVnjm=&bYZKjmVhZfppc=&33ekTaYfdqXds=&TeIWKUZfVogef=&MBGdniUbndnWs=&VTjOduXkicaoi=&Lvv6pyVmbobkZ=&5tv2xEZebYkng=&SoG75KV_dhqWo=&_S3GVCWXacqno=&3N78qdWgqbplf=&iQeggFWaqcrVc=&2lcxihYbfZdmn=&z32MtFWbpimZq=&tUGLBbVsisWhX=&u_HsvoYmdUgjp=&gM74bhUUcdnbX=&F3fuRkVVidfVZ=&dB9Tv4YgVbpje=&D3XKhYYZihmXX=&k7u3EtXilaVgj=&DjcUCmWnkgYsi=&V7N3AHZjilbld=&ATKqbUZYnipaq=&zUmoqYXhnmbco=&jXXcZlYWlZes_=&eVyFBlYfeUYkq=&_Z8QvEWWeXehs=&eSQHIyZYVoYgU=&Msa37tXXreZ_g=&gTuNGnUglrilb=&lBFRSBWWhmZdZ=&Lb_wjVYnpkalo=&IuwoPKWVWUWba=&dZ7Kv5WljcWoi=&Pwcu9fUeeXeca=&GcANgIZoqmdrd=&VpEuTlUdshZrX=&z3Dqc4YVXXVog=&Zn46AoZrm_ksp=&lG9lvkUgdbnXW=&QNvi2CZZYX_oj=&Bw8dzjZacYbsY=&U4ibC6XnndZri=&ECyjy6UYslXbm=&5fRGxCV_XWqbd=&QBH32BUfgokeY=&dPhzMQYaXUfWr=&Ip7DptXZbgZlk=&Dn7bmYWYYcUZl=&Gxoa2KWnZWrld=&L9SZZMXpaicXV=&2PIW9iXjlVqop=&i56EYsYjbdoWj=&ie3Dw2VWsbqbc=&PujXaFWoeqrjn=&JB_FdzWZa_Ypg=&hSjhgwXUnkbfq=&Rn6bD3Ujinolh=&5r2CodUmffaUi=&N6F9_ZYabnpdX=&BIIzkYZnfms_g=&I6Y3FHYrqgkcj=&TvFaJlUajcngW=&_ODYDrYWpWc_n=&3LlIxsVshkk__=&ht_SB3Ubqmjak=&5Ekox4XX_qdkc=&9odKHrXcpekZp=&OXPxTBUhmfbfi=&COkXsEVZdjflU=&pshx_mXods_ce=&5C_ta6WUsferp=&enpgXIWWVnWZf=&DXe3K6UbkWogX=&ubN3MLWWdXXkr=&ysiSwSXnWnWjZ=&_rBpUMZjhbncr=&aCUWMEVslYnZl=&l3UXy3WcesbUk=&hxJmRwWdckZr_=&R9AxkSXlVp_iX=&5FybyrUigcbVq=&P4OnukXZeZokf=&GsU_CCZh_go_V=&pyhTvyXloeUX_=&R2ULz5Xsipedm=&tvYnxxVcfUjWZ=&ndFaHLWhljYej=&BcV8BWVqobrVd=&jGAHTZV_dbUVl=&AeJ_sAWn_gqcr=&bDYTvTZgVdYof=&fJmc3KXieg_oo=&J2ec_BVpUsUpV=&rg72RkYdimkjq=&VLvmiXV_cdlnb=&OTevAjXcs_pZZ=&vEmMYiXqllh_i=&vGKBmTYiZrYbZ=&POc9P_UaskjXp=&7AuuGKVrgXrnq=&_bt4qYXgrUXqp=&y5_XJNXnVpriZ=&noEKZRYdclmkk=&rBUklGXhobrbn=&XttMgCWoc_XZa=&mBCfk8Veedpro=&IGKTGGYnYhqbV=&FMoScSWgocjgV=&qUqy2SUqgrWZq=&nYuiQxYVogYZV=&iRgax5UagcViU=&WlWUMKXqVZnXr=&D9k4iDWedVqce=&awYfI5UWihgps=&WliGBYVpWaksp=&pXKXObXgZfsdn=&r9S6ZvZaZhhlY=&F7ti7rUsboUfW=&QEoA5lZnjqbiY=&BTiEX7XWgWsbe=&lHeq_WUnXmsbW=&VERt7IXnfjYec=&FVCPhKU_pmnre=&dZbqpDX__ZYhd=&qdFtjuVag_hWX=&HvKswLUdaffbU=&jHA9B5YnphXph=&tRaQQOXVfe_dh=&grzZGtWWcolfX=&TiARNTUfoqjZi=&Ed77WiUbknnVc=&y8aZQCUZZ_Zsg=&NMceVUWqqegbc=&ibwBoeWsX_bsh=&hJwSC_YicYYjk=&w6PzI4UYbhhVf=&VWntpOWdeimei=&8KN_rTValfejj=&po8z_eUnndcer=&bgTq4DZXYh_qk=&ln5VjEXXXjVXl=&b5EwIrXeXWosX=&7p_9SgXecdhkr=&_yWFQvWciqUZa=&Phn_3pWmWdqfX=&VJg7lIYepolYs=&3ME7PEU_qjXrX=&G5_79kYesXcXX=&WBmklhWjleVmb=&YyNHetXZ_Ysam=&PS3mFOWiXZnpV=&xs7PC6WiUhiro=&6CNyu8Zobimmq=&w3fseQYqrniVp=&Cp4YDzYoYWaXm=&s7mu7kXfjdero=&MITos7VVgYYlZ=&4pVfu3VXVl_kh=&n3jZHQXefkbnV=&l5nl8YZWjqWiX=&iqZN6dYnhmhi_=&mi6nQ7WgaaVVd=&_yxJe5VasZne_=&lQJmPGWpiVidZ=&LyXzLgYnUcWbr=&UDCs4HWmWmdVk=&vokgxkZddWZns=&lN8xl5XhXn_Zf=&utjcZ7Xnneaoj=&gKhPNIYpZoeYa=&BDtslLXdV_lfj=&Cs7thVUlommb_=&D5xjtsUegckjg=&lsiGvNYhkmsbW=&Z5ELoKUYelYfp=&rduFhbXmscqoZ=&fFlKsWWVibpkp=&ansLJdVfpanYf=&FjLWUuWdngaXf=&AIGqwMXpqrdmd=&myF6OZZecmldn=&thC9zFVWoUmbl=&MrsoPHVgYdWaY=&OYTiFSVbpfX_o=&4ubNV7VgfdnZc=&EZKB_AYZYrdXV=&SE2maZXZUreXr=&iglyDMUXY_qms=&iMPdbtYcrgWiU=&NZD23sUVasoaY=&XLX22vYWbsfbW=&JTxC68XZWsqnl=&yC72wnYWjlbqe=&njci5kVa_mb_h=&4B4RsTVYeqWfe=&ZeEvVmZlnnqWe=&7BiVnCWpUloW_=&FgmsgkVgbcfn_=&PiDTRuW_mWnmW=&zGV6YgUmZches=&u84IB3VharZVb=&X2rj5rYgerbWY=&9wM7xWUcdkWqp=&e6wtD3Zehkghf=&ZcSDPUUZ_bXcl=&lVj4bCWVolfhm=&ZNGVzrVnfVpfs=&AgRp9uZdljggb=&me5tegWZkiUba=&F3u9n4YXbYXUd=&BG33gYZcYZlds=&94edR_Yjqnlnq=&9mgbskUXblXZp=&YSzhtXVikqhqh=&rPdfXnZdd_fap=&JN__oqWdViZio=&zADDeOVYsZWca=&kH3qn_VZqfXpW=&LFfUSIXqcpgnf=&Au2lQ5ZpbZapi=&GUMiwRYjhchfi=&Zf3FdCVmaZbio=&aG2LBFUecUpaq=&oBSwBRZbZr_eg=&dZ9jHlZffcUZs=&3GYWvzWlfU_eZ=&BOeiOYUof_lgc=&iWrCwyZfbideo=&knjALjUkWfmnX=&BIYGxzXXjUUgn=&cqS86qVnfrnig=&ECcgUVWjdpsir=&6nk4kAUYqsrjo=&OTotM2WnpVblp=&IcOmNyXVVdkWU=&BwcZcNVgmopqe=&PBHPW8YojblaX=&f2WKJwUUVdijV=&dRYnZlWgfaUlq=&uPilMYWqUohbr=&ra25kAXdV_eWi=&89eAFkVYUesnj=&Wlz7GQUfjmgWZ=&EVncdQXgrbVbX=&EMfAFWZXZfVXZ=&fNUHKWWogasoo=&rS6XklYjXpgUU=&WXwVVNVsnhgoq=&xqmXiFZYkpgVn=&JPO8QhYo_UgpU=&cTLetsXZoaeas=&PcYc9VUrbishm=&8aUMCjYsbbrfp=&KqMDMAYdrfrg_=&yMQMj_V_UUdqU=&pvTfzCYcWaZrg=&kv3soiVekgYWh=&75yjKeZZZqaVo=&YGNlA4XUnUkse=&YBkrcLXhrUgfe=&SUVIf9Ua_ZXar=&l9LKbsVfXZlol=&2XJsMlWVdZXrW=&8otmH9YsehVce=&uspAdOVZrkqdd=&AkKr8PXlXVdpa=&EIb_zRXmpaqW_=&IW3ZltZXgqgVn=&57NJrXZ_gljhf=&HcUNvkZhkbf_a=&AMQ_8oXfhUseX=&zSnM3PVY_VgVX=&MPvjJ4Yisdsbk=&UTrel6YmWgohs=&SumUf3XeWYaYX=&gXm5BvZhfaopq=&WxOTePZbjUVqY=&INMkuFWXfUZqU=&tiAZcwVcrgibW=&mx5IjZVao_kf_=&tFE6lXXhjnqZf=&6dp8TcZcrXcdo=&EQFlfvVrXboob=&kjhZlOYng_pcn=&kIHx7_Uodq_ld=&ogsk2BWrYgbkl=&hkDw_eXVaZicg=&hnGyDVWrdkfbb=&ta2iVIUkofbrn=&BLAz6aZpboroh=&M9RiM8ZlbgjUj=&WZdUynUdZUinr=&PlWXsQYrbfXqk=&ea4ClvVWgerie=&lqRFZYUdapjio=&33rximYfmmUok=&Pm2ce6UaUp_XY=&YzEgYxWqmgUfa=&TD_zFlWcYZpai=&cTAUFdZWsfUYq=&Qi3QNdWdmfcen=&4gmTTRYUesVkq=&XDhGa_YXfddgc=&S2QfCIZfYdkZZ=&PWT8VjWnqblYn=&FMHUBvVWfcrkY=&9ZbTSFVs_UUlj=&KBm2kjY_lVgWU=&hi639cWhXZYlh=&Km_mpKUhjcWpj=&eG_nMnZhgkUjs=&Me4DizXUijojl=&2PkmKMYeUgsdk=&CxAFVVWcrm_ea=&rhOsXbUbsh_gh=&3iKssNWkgigac=&8ypaqbUggrWsV=&_I69RWWinslri=&WUFHo4WWmefUf=&2LGJQ5XZXadkm=&SLvUO5ZsYZXic=&6jeQvmXgjchhY=&viKskAZWbbaho=&N3kp9cVjqqrsc=&lVo8QlYabsrUd=&YSoKglYUbXlWr=&KMgAMjUfmmafi=&phWYUyWdnWprp=&CepJPCZabWedd=&URiroPWo_Xcra=&yGBTA8ZZbkch_=&kLl9KBWZebmqc=&HJQdDDYsromle=&58K_exVffkY__=&NoqksoVmddUob=&c3GSR9Yi_mUY_=&VcvxeCYcspWri=&3C3VI2UXkajkp=&6kg5CpWofkpZq=&vSU8XIYgrksrq=&_VSzmfWhipjba=&ClJgXhX_U_bcb=&D9hE8VUgZYqbl=&hkB99kWfbXVrg=&t5gnzLXqgbXo_=&wM3gwiZlZjqls=&dzoXEkUdYpaqU=&qrC8yxYijgroY=&AS7UV8Umhnaen=&N3W5lSVZW_gjs=&C7nmtoWjncZsi=&qDuMtXUeZprUr=&beSFYDVbpdgsg=&FVUHYlWgZVjXj=&S_C7raYUYchah=&HHC2HaYZffXkV=&M5jZJoUahgksj=&uiVfpWZhoccmq=&i3uEg7XUraVmg=&FQYJw2WrdUesk=&KuXJ6gWohZmbf=&H_exRlVililjl=&8Zvv9gYdkrfXn=&3uSe8dUlVdiYo=&78JuWsUppaklo=&ZdaEDcZjjbdlW=&ZfYpahYbUWUYs=&UijwjFWalcVoq=&G_WbivUZX_sjm=&tZCxpBYffhpdj=&7GugNGZfnUmlg=&zuB2GpYoZWnXk=&Dn2kHVVsXcpps=&nTte_fWnedgrY=&EfsvRPZXhlnrb=&CIZkOfXWsepnW=&JYns5IUreiYcm=&rUtPFxZVZbVpi=&C5Y5jdWepZbUm=&x68N9UYbrUeUf=&s5lVWIZqik_qc=&MiHzZzUYeXldW=&n9pnwyWedkkWf=&H_b66iWbhkqod=&aMNq3OVmpigYg=&oBMHAyZpYbdgb=&z5rl5nY_gslWe=&K2R6dbWkqgeks=&ZbCrXoVapclhb=&veyafxUncaapi=&_pUQosVafal_d=&d4CycmZaplgsY=&VvQQcMZlkdiY_=&du4sEPXikYiYd=&MJ3iDgYXbbYbX=&UkhlTcU_ns_Vi=&hLmRP3YnlkWeh=&kFXBsuXqsVqmY=&u8tM5zUWZoree=&v_KlWwXaYpppd=&6WWUSMY_fnfje=&5ihnIFZjcgdWX=&vxxb8nYcopkie=&v6VXCWZl_Wneq=&mT5efRVVlZcW_=&fT3ehEUXUfoc_=&QCVuY7YWWlmiX=&KyCIeTZcYhijV=&II6arVXhmdYWn=&L2EHIrZhhfn_i=&ORvg5JUjZYXji=&Av4noqVpolhhb=&OHaGziXYbnnfm=&bNLGhuWge_jXf=&BX8HPzWpqisqY=&SBiOj2VrYYhfq=&WEPWlzZaabjd_=&qAjC8TWclYceZ=&aoqJSJXamqrZm=&uMEwVAXZjfbcn=&R8UCD8VadsVci=&SwsHHSYjpsfs_=&Q5PdcYVolVgae=&tfZQhIZpZdiUp=&7l92GMUhjejm_=&GMh4YBYgekUma=&welMQbYkWYoji=&mAwZhXVcsY_Xm=&RGMgPIVaidakr=&_8NJO_VnUlrrn=&egU8GRVoigkdZ=&FZukBPUasipfj=&Gyu39DXgbjrrl=&NH7xizZmnbrfa=&GbURFlXafrnXW=&uIpzfhXrWlmrn=&3ZstPNU_Uoioj=&reAHXzWssksmd=&lnbf_dYmmebra=&auMqMZVXdlraX=&TNErwhVUUaln_=&U5JnK2VghjdcW=&b8ZerzWrXnlbj=&3OzpeCWYhfZWg=&lbAjQ3XdWUWWe=&QHkS2IUshkneh=&7PEt_qWblscfi=&6nIlMtZWfnjja=&wCattGYZbjUaa=&4ChT63XlZngYl=&UtDOmPXXfXUnr=&XN49VoUYklcgW=&8IqwQ5XmmbleX=&SOYhQnWoocZbV=&bP86QuXYn_fdZ=&bty4VRYlUoaYh=&htCFb4YWhadYg=&MmwaqxYcYcZdi=&fTG7eaXZnonZc=&lFcxkzWjngkjc=&eIZZhpXYYnYeh=&u4o8rmUYZfVUl=&3SFyb4Xpgf__V=&FjAgSyZkgdlam=&HdJSCTXVlnnac=&8gnXyFUjlXime=&xSiyOwYkkXskd=&3YM434Wsbdjjf=&yGnnpCYlereZp=&vnwvpLUapiWhc=&XanxWwXmhVqsr=&mpDCKHXnoeZgr=&nxO59zXcjgiU_=&xAVsqAWd_XcWj=&nALLCmXYkrYdj=&AErM97Z_nlmlY=&uDuI8KVWeYsdV=&2oRe4mWcmmUXr=&rVw_lKUshZWhf=&3JHxMhYdXsol_=&vHyDi5ZhiYahh=&oIHx42WZYeVWr=&X3fxssVWpWaUc=&xFqxPgWndkU_n=&tXV_xmXeXinmY=&LoAQbQYlWoWrb=&6VplizWXggkol=&TBsqOnWaqkcfl=&gnaTzcUoclqkZ=&AMd74xWeZgbZp=&yz5UmEVokoYUl=&UIPA7tYlconUb=&ZZHWjnVmermhl=&wUUflMYYqcUnU=&rHRehjUldbdWm=&HqIScCZlYamUo=&RnckgSZcZhZah=&XuiM_3UacrVoc=&gaflZMVVipUed=&EfftvkXdYWdlp=&Ps6bF_YWlaqgk=&5nDJVyUbrkbVV=&lUSAioWdphmVe=&v6rcC_UmWeedl=&SrCK3EYrZfpem=&8fRfFFXWmUZmV=&JkV9sAVbmqhWk=&_VRjNLY_mdjrl=&mN2cFWWjcqgne=&Lkeu9MZjoWdgX=&I5BI5gXasjjpe=&bfB4THWqpXssf=&wsxC7HXdkWsbY=&LNAXijUcWgVqm=&mbRLOmUklbVli=&7lpEZhZWl_jnf=&JA5rmGVraYhk_=&BXKkiTUbgVpho=&hDYZEMZXilXgo=&V8vGxeZjbqdbW=&8PgrMzW_UaojY=&9_SKsJWUZYsjc=&rrglpoVhmWjeU=&dtkSEiZlhXVhj=&huYKI4XdsglXp=&xjByPiU_kZVXW=&mUWyUrUqagdih=&c4Ro7DYmbkkfm=&hhDYZOZicsr_p=&X8KbuRYolcljY=&tjFtduXnerUol=&Ilp3fyWrakWcd=&9N4AAUYmqkaeb=&c7Rfa_Znsakkb=&UzaHxsXacbarZ=&3RuSZ7Zj__eih=&bVe9HBVieqWrV=&LiFC_MYjrXhar=&PYrywpWbiXsmW=&BOPgASYWaXWiW=&EWmyuUYV_WaXd=&LyDRzgUlVcfdd=&J5Q73aXsUjcoU=&u2UVu2Xmqkegf=&DqtuhFVjWo_Yl=&z32PmeUfkdsWW=&rbu_ntZokhcoX=&JgjXl6XdbXoXZ=&JTo8OpUp_dZWk=&eNBVBXUXVUdbm=&Jwo4nhVYpppng=&xe8hz9VsohXnb=&TjMDnvUip_apa=&YrqinLZUjjZoY=&8O8e_bWkkmnaj=&t3McNNUmZiacX=&754sskUVbaYaW=&CCRAvgWjkVXaa=&t7jxMMZbUcVWb=&HfhEDlUmkUnVg=&ITvi99Vihikij=&VFrb8gWlpdYoh=&9jPLVhWaeqe_i=&2ylluQZbo_loX=&sI8uBSVpfYrha=&yyQVomXmqWqls=&P5SWvyYmZmhsX=&tg6d9gUZpofsZ=&r2EBTaUVqgnfs=&D4WjydWekkVWW=&sCvbaCUoqacZY=&iueAmpZhZapak=&HSSpmfWqpdsnd=&oXHp_JYmZhUrU=&spkNPKYaalVVh=&xtuQsUUgcYnZh=&7x4FXOYechoio=&5XuT9pZhXdfcj=&RVLSnZZsVZaYf=&dnCk4jZjWfjYp=&7_ydtEXkdrdpk=&COHqfUXmWeqUe=&Caf7GAVUWZadh=&CI_tlzZrnkhZj=&rqnYWAWlrkcUn=&auFBBYYdYengq=&KKLs4WVkpXcge=&T9kyp3Wsgnrgh=&2ULayUVnao_mb=&GtGJcEYj_mnro=&XZDBn3Zqfaqbb=&UF4qLWZgs_rWq=&mZjnkQZdY_Xfo=&vxl7TWZXWmemf=&9ayZZRUnnsZrq=&iDqckMWlgdpkV=&lQw9tSVfrZbWm=&qj6TXQYlmYU_s=&XodNWZUXminds=&p7vBlZUnWfkog=&ShQiWtXVdafqj=&4_GbD5YXVdcql=&Rw38X2WdrYYkd=&WxdGB8Vfmlihb=&paX36LXUclhVp=&3JGdL8XYg_Vro=&UbcYGOUXrYmqs=&FeEUvKWmoj_rb=&9dToCeUoVr_qj=&ronFbuVaohamr=&7WzWvnUZmsbWo=&tlYCCRXholrkq=&3HlWOPZbUVobW=&x_aODXVbmegUU=&yW8GHMZsZinoU=&NUNrV5Ulpldre=&VCISKPUkjcncZ=&ZZYItIZYjZgkr=&7yzYooXiebhXY=&jEh8YhVilWj_g=&eZ8vdqZ_fchUi=&JDHhiVZUYcpsi=&znGAVGYeosfhk=&vvMbvzZphbrn_=&2iqdTgWdiiaps=&FHmIbaVasabWe=&Y_ZihBWdnqdbW=&oen8rLUfiZZVr=&VBiiXzUUiUVnl=&FtuHsRWcraXb_=&tlbt6lXfn_ghZ=&mU9TjzWgbYhmY=&PfzXpHVYbWWkr=&UQ7HahUkYWXis=&J8JXYPZnYqiqa=&EffJcVVfjsbV_=&9QhrwVZpsVheq=&O7BlDhWkihkaY=&SndEAjWijihem=&Z_mPrqWfacgep=&QUre_kXbUbaqd=&f6ZCuEZgXefYp=&oXzU3NWfmsXcY=&zZTUChWcZUrpe=&QEmS9uZqbYrmY=&79BPZeZXqWoU_=&6Iqk5uVirfbWc=&N4xD4xZbdUqVn=&Sbf3UaYnWchUp=&5NVP66WnYfcdr=&P2bkQLYhlUlWc=&3dbKosXqclYVW=&waBNkIXZVaWko=&k_jQAUVW_qojW=&zLNzSZWemkp_Z=&IUqiMdUqes_qq=&RmN5kMYqolcVf=&FMrPs_WeXsWeb=&shtaqEUdsnYop=&Z2HZGbYXdrjqs=&tF7tGNZpjVgYd=&yIMppdXrhknsc=&7GGmkcUXbksrs=&SaCJYpUYaY_rU=&IWMks_ZkWWssc=&OFbMn9YUeYmak=&MJynliVpVXjfa=&NWnMR3YcblUdf=&RsGdOWZpqhZre=&fCBTdxXYiZhZa=&uehWIGZog_cUV=&nszQEfVcn__qg=&JUNqdJZogl_ir=&W9osm_Z_jbceq=&TpKuhFVecqeYo=&GEDJK6UergUng=&EWmp_HWYWaZoY=&dBDE4sWegXYki=&OekZzLWpnihfc=&42hJtfVWjfehl=&IN4zaaVaiWhdZ=&9jeBx9ZnnhYYW=&3xQNVRUddcUZk=&YYJmfJUdUggmh=&DzznUPZpUXmfq=&B7JyYPZmZb_Uf=&pwoEwcWWasnoV=&oL82hPUnemaVo=&jkvr7CWUraagV=&K6IVOoUYmf_Yi=&KZvQrwYskhslY=&NhZRkPUXqdlrm=&ndNyFJYiVWsVs=&cv4_pqWZbhVUa=&He3wCyWrniVbs=&h5CBDnVqYoeVr=&ogYJiLVdY_Xdf=&s7FPwbVdsXsVi=&DnDogZWhgjsdg=&faR2zIZpjZrjb=&yDe7SeXnjZnXY=&MwaS6eXZbVUoU=&uCOoO4UdnqoeU=&ax_jVrVqpqnpV=&VaeDRwVqm_rgk=&gO2IShWaqnlmV=&cHf5T_Vjfemhg=&OPkNajYmUmhlW=&NTIo4CYjijiki=&W4CXhUWkhZnn_=&pslwWKYYZWfna=&BxvcUWUfqZg_q=&UqE4mjVlsbrUj=&Rqia7qXcfmUrZ=&OPASpQZ_VnmXV=&cDXc6JWsZZlWa=&iNRqUlZ_dfafa=&Rd5OrpXjcZfcj=&w9MOihUabbpha=&G9tYdXYjUrkZb=&LJKSXBVZrZWcb=&WP_kx_Yl_gfni=&mupP__Xeb_coX=&HrhWSSUajakep=&wdLNfTZjrbkjV=&m9aYZBVgnmVss=&CKxHfiYmlkboU=&teuEVJYpipqea=&u756qOVgooXk_=&6jnH_lXslYkrd=&w2x9CqXWVpVqX=&PQ2pt7WVdXaq_=&EKspoiXZXbiga=&6La7jqUedXoeg=&BkwQcaYenjVcp=&uPP6hiWgrprkc=&zZOYWDXUecWmb=&D2yU5zVcnqpV_=&2grgvHYrYkpZk=&LxWv4xWVfk_Xf=&W2AB4wZ_Zkooo=&7SqMzsWofbUak=&T3RQWJXZYVnYU=&bV_rZbYskXhjr=&ds_bZCUjeVUio=&XWspFXVY_XWer=&MF2x9OVjWdfis=&c4_9oeZdVlZcd=&VrDacxUlarYYp=&NOeGBvUsaoqiU=&eFZQDpZjbeUfb=&osVjMXWbdeVVi=&u34UYRZd_Uqhi=&2vEqs4ZXUnhnh=&vBZCP4VVW_end=&6Oqnl5WUnok_l=&ymkdftZUgmgcr=&kUVR9MUaWaVfZ=&s65W2WYkg_Upi=&ucBlt4ZdllniW=&WmsUnVYb_YVgn=&g9ygSGXVbUkdX=&GhasW2XgdnfWr=&RGKJUFWZ_gUXm=&tbpXmpUikXons=&ZvLfyNUpqVgom=&SqQlDrVdpVdeV=&mweJfUXobkXss=&Ax5VEhXVc_eak=&ScxOQHVYeklpe=&kVXjoDVl_cmZs=&jLv2EkUaeXUYa=&afYrbEUdqYosV=&TZMEQLWbjXccl=&PXus95VliobZp=&AhwjESUmWWin_=&KAkfgSUgVagdq=&NPgQZHVXqjW_W=&lBVPmAVoYasgs=&obtkHHYnsoWki=&WVssNTVfhqqrY=&zQyzOeZpndWkh=&mwr7dEUWddXaU=&E2FXS3Wr_Ugjm=&RKzlclYrWhmXc=&inpvRlXZqYYeU=&mZFnpNVqWWhss=&43dKhrXYYUabh=&CWtVdeVnqkVVc=&zudYmkYsifcea=&CjQ44KYhsXqUs=&G6Fyp4YeUjcmk=&SRt5UrWemkpXk=&4zBvDdXnVjZei=&6XtuHKXYUjWZY=&tOTw4qYqrhsiY=&K6vFr8ZjYibVo=&ik6yaoXc_dafb=&aBPZUnVVdgrjY=&5FzOCWYbiWimo=&K8z8GGYikYUcq=&Sw_Yq_XkXm__n=&zLi4cnVYdWlYe=&OifKSaXjspfeU=&rbMvIlUsfmoeq=&l4weIuVenchnf=&4mSr8SYh_bcie=&LcTFA9XWmZrcX=&lRqL83VpfYYWa=&uhZeZYXiVbYgb=&FAdkt9Z_UWenq=&MnHMCUUl_pVbf=&LpjnNNZrmlame=&3Lf2tLYmfamkd=&bFoW7GUrjc_hU=&wMUPfIZlk_gUb=&Imva8BUlWqbVX=&iBh6WXYcqnicc=&LdOonAUaeeccq=&5UM9ZpUnXchYq=&y4keDeWmZrkbU=&IkfpPKXZYWcig=&PpdDKNXqgksip=&M5dTL2Y_Vl_Yn=&uF9yQxWdfpklj=&vndYJlYUssorh=&63bfSCWUeimnn=&XHQMp4ZebddXk=&D4kZd7WnckdpW=&p_cpSjUeW_ga_=&BZBtn8UjanWZs=&WSPFIfVcfme_W=&oGM2u3Vilggie=&sobhCnX_flqps=&6NlbhmVrYfpY_=&VXyRNTUrbhgaX=&RON7N5WiUehab=&T4tQfDWpcZpod=&6xearnYjUorlY=&rjHt4cWpZnUZ_=&Rk_TQVUWcYhnk=&Qf92N4Zjkkcd_=&KI_GzWXrV__XY=&r3hh8EYfenUZc=&gLkVuXYUsepal=&XMysczWoj_pol=&6CJXz5VjYWfok=&ihKSnWZYakspp=&K4xBCtXj_lgXn=&E3cWADZlrkh_a=&aRr7_KXkeaVmb=&hII2uMWnbqing=&vcRQKlX_ZYXla=&BNfQGPXqqmagU=&ll7NuEXpXjnZW=&xBFkL2YfZpknU=&5jWeMzZnkgssZ=&x3dDznZigk_if=&ypql4xZgnrsWe=&7GPa_CUoYnhbh=&rCayehZWVcds_=&RPYS8pUsXfXjh=&GrYObAYmigicf=&VSwGC8Xfpbkqb=&qRjIVLUjrfXhi=&emNCxnZUiZjZi=&3_xzBrXmdrqXb=&llWg2aXl_Upre=&eu8FgvVgbcopZ=&2KqL8HZagaqYg=&KyuGpxYkcgbYo=&oClPa9YhdchXh=&wcsy62UbggabV=&adjHPJXhsjjas=&GkbsiIVeVZjYq=&XUXRaUUsrdhjW=&Ajoi4SWjUccmg=&elf9hJWeqehcs=&_6daNMWmVfXWr=&gHxA8VWlorsdk=&BLjDYDVqaZiXl=&zBIGrRX_pUqfa=&kHl9hDYicWXfr=&NXGdbyYhemfpY=&32eAA2ZcYjdnj=&TfwQ2BV_firjZ=&hLI6vCUlZVZhY=&vGheyKVqiggeq=&qzSeTCVsqiddY=&BnuTuTYnpih_i=&IbKiBiVZbieca=&rd8qnuZWYmZ_b=&MlVIezZkjoc_s=&DnKARGVZVgkXq=&Q8mkIxVXXjWcn=&Zqw3jKY_lcXna=&YTipjlVZiikYp=&2WweLjYshk_gp=&OM757RVZXnWsg=&KnwWTiZjqWbsY=&FGBzI_YZnispb=&hlQcj_UqVYUgV=&fN5fuZYsp_Wgq=&bEkvrbYWpbpia=&6q_5LAYc_akXY=&zECLIiXfWXcke=&4W3JkhVhpZqkg=&jqQvBZVYkrksp=&87zyDxWelprWc=&_q5RTAYWidbdq=&cPjcpNWlcegUc=&8cuNaMXoafjnj=&trdNmIUUiiYns=&jN7ETJVYhrVqj=&_4rQ49YdsXgWs=&CReNcSXkjZhjg=&XOTrGHWchbghW=&u_GkGUYkdiXWl=&xhtEYIWYgpYXU=&k4nvWmVrXalmg=&zxhnwcYscnacq=&gfdVr9WXrn_cs=&44ES9PUYhpWVj=&lwBNKAUXWfpnW=&thp2oUUWeWqUn=&LKa8DfZhXgVng=&nQQtxgYUkmYXl=&zAsoSHUieaXWa=&rH9aMiWjgrUgd=&bTJX44XndqUrZ=&tp7b6XYcUZX_Y=&2fKmXYW_mkmak=&OFbLa_Y_WreVk=&6fJzYUYkoadZp=&V33jVlXhXdgf_=&HKxhphVskaWVW=&EWVmCPXYhlqcg=&E7UtsGVlrnVXs=&9lDBy_Vhrqfnj=&mxTOLTVisedhq=&K2eLGGV_XUrZV=&c7gcQNYrVaqmg=&5m77nSVhYnali=&gmLqY2Xgcr_sp=&xg_wMCVlWUrXq=&9gx4b7Zgi_hZn=&RImRymVcijjsa=&KE8GYqUoodnrn=&JIXTvjYqlYWri=&k3ffr6YsmrobX=&EcRkadZUZpcnp=&3TWI_CViYmUbe=&aNwIK2WgVsWVl=&hUU_QmZiWZhri=&HtspmQWefkmiV=&mGGbhaXiidXjf=&rq3j84Y__arqs=&bo_ZnRUbhln_h=&NFnpx8YnjejWq=&ORqLn8UdmYeqi=&iLvUV6V_fYoqZ=&F2vaj5UZnoUcp=&y5FGaqYrsWnsi=&dziKo4Ym_Vgsn=&ZbFk2rYqmj_if=&Hs2LgUWkegWam=&HTdKmTVbqhssW=&vqiSIMXcno_Ue=&HnVnKuWkchmq_=&5pVEgOWfnUXbl=&TLh55WVZaoXrm=&VtgBlXUcUpmhc=&e7SZeDYXlsbXn=&luev_IXdk_Ufo=&giofSdZlcZdV_=&JQxH_fWkZX_fq=&DOeuuLUhapsgb=&q2dMhdWsff_mj=&UCAcYJXoYlheb=&T4C8gsVcXiqks=&RTdk7vYcndYir=&Tug_YtY_bamsY=&NKfnEiZYebrkX=&nu9pIFUiejqVs=&NUzE8WUbZgbeh=&otDxMYZjgWbkh=&kOzTqvViflWXW=&_uYbwDYsdUhlU=&WaPe8WZsXmjkg=&TbDGOkUnaXUqs=&UMyEsHVcfqcZb=&vLJXN6WfUfrYm=&uRjBi4YVWkcmU=&sVlrevZemkiaU=&4MaDUIYdm_Z_l=&GgLGPsXYpqVlp=&xkPA9sWprg_qX=&LGep_rYpcjlpU=&ztSmTGYghsnnZ=&uyQv9QWsWdlVn=&SJFhaEZher_cV=&WVFAMYXiqrciX=&3AyJg_ZlZdfbi=&pX2MjhXaps_bj=&BuqtDEZVnenZp=&f2ZYdOU__WnsW=&5jwI_hUqhlsri=&sx7qqkWUdncUm=&OUZ_lCYhcZYen=&sxI2BtXWXhack=&WQ5jR5VonUaep=&SgDfPEZobrqpi=&SWdXi8ZsYXics=&XhqQroXYrrUre=&wunguoVqXXfoo=&RylnSGUkpiXgU=&HFDCrJUhZ_jli=&2oIZ2pZkiWolb=&cSIV9KUkcW_rf=&fLU_m4VVVXUlj=&KDsws8UmYsdis=&JjlR6EVod_gkg=&r5ecSbYnYsh_p=&EgzyPNZYdlfke=&VFlJmHYXXalgf=&zJRW8wWfXsrio=&UkfnooXsUmf_d=&h5M9QKYVrXWkd=&qcIOfbYabXbWa=&XrtFf4Yn_Vkqf=&om_htSXooZcih=&XJ3SrnUenW_ln=&VfpuzmYlemakg=&HCAAIxYgkdWfZ=&mbgvADWqkir_f=&HrXpMtWsmlij_=&cxuhxWYasojkf=&G8lbj2UUqbWeh=&t7NG9bVWm_YUn=&iqNuZyVpclYUg=&hS82PGUZVsogp=&2DRnjBVpbYfdo=&tkKpvwWWpZZdk=&kAMOS9YVbZlWX=&SpxpzqYjsqjal=&_unbNMYadUXrV=&iWI2NZWhbsWck=&Y5xVDVUrjXffq=&W_eX7HZfjsner=&uEfEqXWZUroXY=&xhH39LWfYaasq=&XwheKlUleUbjf=&eZMjuXXWprqqp=&ZruBsCXhkliWn=&48Ha_nXUjooib=&Ah9baQWZahjYs=&7tdKt3WcrcYfg=&FAYT6LXXgmnki=&CMsb6nXpWebfU=&Ctve92XVdq_ba=&3fgstiYVWWsg_=&wQ8ysXUrjgZga=&LbTyWcZpiZoib=&U7_ujbYfnrhgZ=&xwl7_XWYgWgoW=&qkiAzeWsaifsh=&BFMpWlVoeUrbo=&BW3furXeWkeoj=&UqZc7bXsjWfYe=&mD9gLmWksocmZ=&9BJicoUjpqrYk=&5FCtS7VehdnZW=&SH_ut4ZinpdYk=&ENA93kZZUhkgb=&Ao_onNWVWklWV=&tetMz8Vspqahg=&C9qjXtXpillqe=&jK379LYVrrdfq=&uPFDT2Y_ijpgo=&gDbJ4vZrlrXX_=&9cFScQXYYUqZe=&nBs3iFWrl_cka=&6ttev6YgqlbVf=&6z4QDzWYqgahp=&BOpRcUXkUchma=&FiBnQGVqsgccn=&_a74Q6Ymfqnap=&NJnx_pYnpsicc=&34HnnaYYofXYl=&upyeEqYaVgqdY=&by9I9wXoascsX=&9cchgCUdofeek=&qcFDjKZiXVgbs=&c7p4XhYshdslq=&sQfH8ZVaZnodp=&Nvzh75ZZsmpXp=&UkpGbeXpsjWpr=&yFa3TyUorhsd_=&FjRSiiUhnUsdj=&z5STgaUjpgrgq=&QP8xRmUohlcds=&ijQuzHUslpepZ=&xg6w9bZoiUaWj=&pg8pCrY_dolif=&3qIyEHYViqkgl=&yubdjEXmrmWbn=&rNX9BVWpheUZf=&Tayl9HUVgdhVU=&L6Ws_RXmnlecd=&pRulUjX_YVhko=&ixeRoaXlfiXip=&HQrSh4WaWipie=&Bev3FNYVWdhjn=&bmP2hxZ_Wmebo=&oCwwZyWWYUpib=&QxbL6PWdnaUfV=&T6nNuAWUlqcqY=&OUGDHUVeiXjZX=&gcY9AtUZodZlU=&J5NqQQVhale__=&vSM6x2VeWhjWg=&ibFRjZZnkVkbe=&2bxciRYjdaosp=&shs63wViVgggZ=&Lt2eziYUhcbXq=&bbWuM6YWigbrm=&psqVDzVm_jVos=&8h9hLfXherjrX=&AOKWoxVbZndZs=&iOR_l6YWYXmcj=&Z2RbjdVehVkiW=&_JXh3IWfrVsal=&_kIeRxZ__epcf=&6fOZOdVdlbVYq=&xoIvZYWUUbZWe=&tKREMQWeZViYb=&iXCfnvW_slXmj=&nZ8Ic_WhanYYq=&3x3CSLZqXlVYV=&Af8LPnUmakkhp=&KeqrCSYgZmo_V=&Jf9_VYUelVopZ=&2nSTGOVjljekW=&9B4kRyXsZhkZY=&orCz25UlaYrcW=&Z2pmkQWbblgrU=&PIjnCAVfdVdsf=&ZHKzxdXcgfnrq=&gaWAUGVclprWf=&NmnbtkXqW_fpo=&YdZaXtYlVnWkg=&nPlfriZkYdamU=&aehCkfXZkqXrV=&FzZlgQZUpkhia=&upFgH_VXWrcnU=&NBArxTUXVmgVd=&dcETPCY_hejZn=&TSWuDGXYrqlZh=&u48lLmVri_lUi=&mJfig6Ylnjoir=&hQSVdxWlhmWnk=&shlz72ZnmXVef=&mFYGj_XfdWsos=&HqAQDFW_pXqXl=&cH_NX3Z_ddbiU=&zzwSUKWYWdpoZ=&QPhdCkYWhbjgr=&q55AMVXVoVfeW=&Y_fe3vYgmmogh=&OCt4raXiqkXgW=&2bPSUmUhcZdep=&DbxyO3YWfeUUZ=&CTag7GWgYUnfe=&C4p9aoUeggmmr=&UoG8AWXWrmmgo=&25jCLEZZmfsYn=&_u5hrAVk_kojn=&lnEb25XqdbUge=&BpaKviZXpUiYX=&OGZWXoXgUkeag=&Ky3jUOZsoakf_=&lJxlOsXeqpodq=&HICqfuVWneUhc=&yM5XdmYYaeZae=&7GMRCNYlqjsgZ=&IVi5UMZdVed__=&6RtimMUZfpniU=&fyQE4DWdkecsh=&NxywObUgXp_dd=&PdoMqcXZ__Wen=&cTBEzfXqipjZj=&dVCwTAWiYoZsn=&rr7QFmUlgaaVa=&7o3PFmWaibXlm=&leiQZQYVaVhnj=&wGczeiXglakUs=&uKSrZDXqqWnkU=&e8k6RRWgoplYV=&OoqqvrXijpqso=&qNZ68YXpcbmca=&h5U8JTWhcZXhl=&Wvi9vsXloiWli=&nX44TxWckgWpi=&VbZ_FiXVpjijg=&vd2scIZcXV_kb=&IyqoS6WmWXb__=&qUs7JRWdUjoqn=&oxQhZeVlmeaoa=&Wvgzi_WkZWXWr=&ZshVHVVpmmfhk=&xVtHPuW_WbjUo=&y9uHGAUklrsZj=&HSpc_kZqfomof=&ZfLm_fVdVUsZb=&Wz24fDXigXenh=&bwZljAXofnWaa=&WeXcK7VjeVcVW=&tTJVhXZndoVrq=&yADXLEXUfWiZn=&ENnl4IWYkhqim=&jwmAchWjYcqlX=&t5jXkfUrcXoip=&fmkLfzZnsskWV=&6BUNBnXsrlVZd=&K9MDNYVbkZspb=&BhXBWYWl_kifj=&t9eOi8VqddgiU=&UlzXaZXmYcn_X=&ujoUM7ZZsorlU=&gllr63U_ojVar=&yo_rJMXWpkUYd=&5UaYI2YoejgZi=&tSdH3SUr_l_pX=&8qvF3TZr_qUrk=&r6F2akYmnVode=&TX_B9sUYrVZnW=&Up6X6oWpUabna=&j6OgnsYZWecra=&VA4u5LVipVmpY=&ynKjHfYgbYkfl=&7LgaZ5Zqfsied=&a63E3bZVjYshp=&55bhcjVaZgrmZ=&q_BGPFYVmWpYs=&QXXtpBZpahssl=&I8gUSkXYYWkbe=&lKGkF_W_hopVk=&KGpKYoWhcfdYp=&BLbJG2ZWpbfXX=&LEptLCYdi_giq=&nrBgewW_YWXad=&EHYhJ5UYdUrke=&WaX2N3UfWonom=&vMWBviU_YYYmm=&_KvptfUVUdloe=&q4IEpuVlbfk_l=&zcq739VhbUYsn=&5qNErOXmgsYpb=&pMYGAyYdUlnVg=&nOXcS2Ykka_Yg=&APpkP6Vq_djUU=&j2PgJXUsmZbgW=&BELkxxXmikrhi=&EK7qLcVc_dhUp=&Mytc5jYUYopam=&UzNFlRUUbiZpZ=&LQ8AhQYacUbir=&632DEMYUakcnb=&Y6TfNwXZ_naac=&jERyJvZbZnbce=&SCeyb_Ymo_elf=&r_zwYcWioonUg=&FieIUKVsgkgsd=&HgMgnhX_moaqf=&xggVVaXqllahc=&sr4c3vZerfrld=&yIWTzDYbVYajf=&ImbFKmUck_ghg=&eanCsyZpoYVUp=&AO8higWacZrrW=&TQTY75UVdojkg=&nDvJISZahVqWi=&olSCWbXsjoY_X=&_6ZeAxXZUocXd=&Gm5dnzYiYUdil=&GgjSqPYWbsrpo=&GU8On2UqpZjYX=&Nw_XqzWVgperZ=&aJMvAFXrecegk=&SRliDKZr_XsVq=&kw5TZ6WkgUUXf=&2yNx7tYUa_fmi=&zGGwS_WnXbn_U=&6TbHx4Xbd_iWm=&DAqhXiUUhsqib=&z97T7MVWsrhmq=&HhVILaWoVdhll=&F3FCS8XZgifdk=&zgMR3iYanXXYU=&Oj5_sLUimmerY=&PCnG42ZiVjqZp=&m63CxsYamXdnk=&RvwjZrUlpjbqi=&IIiZ_SYmhiWVs=&iDv_5EUUXrroe=&BIFrWHZYhmj_W=&5Co7eDVfn_kej=&NHlRnsWmolkjq=&_jyruIWremhVc=&cN83NUVlocdr_=&UStv25XVanXYi=&ReT_maWUhaXdo=&5xruZeXpjncbf=&sqWSLfUdY__mq=&O8M8QOVmporqa=&OW44afZmnahlq=&g2XfOdWgcahgU=&J6p4vZXZnlnii=&COiVsUXsafcdV=&ZpPmekUoaZmUn=&_HbB5fUenlgfa=&8LuhDhWddlYgh=&kdf56pWfoVejW=&Si7Yc8VoscaWf=&kdHDTmWcaZZre=&vnP7y3Xrlo_Yj=&qPAE6_X_srmXW=&yIq3CsZYiadcr=&cZjpz_UoX_pjW=&PToObQZprVqaW=&Nlg38VUYbXrmW=&JMSZ_IXnoXUaY=&Iqg6PzUnUhsYm=&Lh6YDoZgckaVn=&gorn4WYYsgmrZ=&f6PxlPUjgkiio=&XixNSxXcdldWl=&3piICYVfUXZrX=&4nvgPCXZkWmpi=&o3zdKuWqkndjU=&cQBYdbUpZaobr=&dl9av7ZY_XlXo=&8qrgvWZVfUrVX=&YV5QfJZbcsXUl=&KXzA_dXhWV_UX=&Y2LFUMYgsiVgZ=&Cw2DBWVkUadse=&4o3aHLVcbnfrl=&i8iuruUg_smXi=&xGIOZbUoorn_e=&4hJPOcYjjomn_=&rVx94SZZjWapZ=&bzvZRyXlZqnVp=&l9a6bkVpniYhi=&PNEVXUVecdpms=&cpQmtoY_mdaic=&6rFkyfYUUipdl=&DRXhLjWmkVYUs=&gTyNoVVmghYln=&JwlN33YXisjhp=&GrwjKaZaXUsml=&kOBTr4Zad_brd=&4Bmsi5Yioqghm=&M6Kn5lVnpbrod=&EorJOfUmoklsn=&Dg_UbKYWffdsi=&NODTNcXhgnmkU=&24oKVgYjlialb=&E_FK5EXepkUjf=&4nhKMRZifgcir=&LiUFazYjYXVlg=&BLPRZKXfnrlda=&zxpCh3WmYr_fl=&QEQbrOWqZnamV=&6ruj65UhpiWed=&lFKCKCYfgajjk=&Ee7fumZpWnZZn=&MjYLHDVilnUkq=&QZj_aPXepfdbh=&7ZJxT5Urflrpm=&mmdr9oYrYgn_V=&qlzRE9UXsepfl=&Lmd42RXhlYWfW=&sNBa7ZZUpreap=&2oZJCHYgdopWl=&8jxWtnYYiYfra=&lUbj6DXZfmhic=&cBYd6TUaXoYkW=&ftt6ohYWslnUa=&aQDQz_YmiYrkY=&8BK4wHVdsXgfp=&ZMWo3MVnskmln=&g6rmDYWZ_fepn=&SysaEVWmcrgfc=&8LJBN9ZZXqoVq=&HwC6bTYXiUZYX=&2gSdEXXpWmUlX=&rfp3fCWba_kbn=&HYynD_XrpVcnf=&debUKJU_lWbVV=&rODrZBYrdhZgW=&uJb7y3Vlbojlc=&8W2HKuVlXndab=&LGD9NkVmqnqpZ=&K_LQStW_Wkneg=&GGG5k3UYinmXd=&YzfcT2WfajcmX=&ZD8ldBXVYW_dW=&ghcM4pUjUYdVl=&SyFvbxZai_rVg=&K_njFIYUXVcfj=&k3mIXSYcjedga=&hkhi7OZej_iXe=&fSdAsFZcXcphc=&OYsaT8XhhlYgX=&RsD4YRYomhnkr=&9ifjgMVVY_soV=&esty2EVrn_dqZ=&OnBCvSWplkXZq=&JbnDPoXcnhhUY=&Z4DiRjUpnqaVd=&YbmtEGUgddcd_=&963zAsXefWWpg=&QAPeY9YXUbsaY=&BYHbJFYs_XecX=&CaWwatUdsUpgs=&V3vxmZVrbcVdq=&aubXnpYUplokZ=&dWjgVfYdfkjnn=&LmUrlHXlmfki_=&_pHHaTUhWYdZi=&3bjj_jWjXgV__=&Ra2OECYcXhVnV=&BW5d8sVqacWdc=&_eYEFTU_gZadZ=&2yhvHLUUYlnrj=&QbepL7W_lfbkl=&QFU75DU_eWgZo=&AXREGEYmhanqr=&DbjzQmVhmUeaZ=&auxCR5ZsXano_=&tuuzLFVmdcifm=&fAq5c4Uh_hmib=&WfkPoRWpWnqZj=&zgF7xkYkWV_da=&HLosecWdodaef=&XrpdL2Wkiockp=&o4GpFZXWkbVZV=&TpzXRgYokhapk=&bjz6oZZYmUglU=&4HXzKMYhacgVr=&Fr3c6UVdVdUpl=&a3RfYwUajcimg=&Y4k62IUXkriWo=&3erwKsVhfnigq=&xnqW8AZlieZfY=&3v3cNPUWhqXdf=&n9_4ZPZldjqkb=&yYFYBUUagloce=&L_CvLnYime_cn=&GTOhBoXdVYoYf=&QvX9k_Xgc_cmi=&w4oH9bVmqhmjd=&dETcpcVZbVpZ_=&7ehCY6X_koVcX=&EODZXDZmje_od=&6Qpaw9Vjkrnsh=&bobDVNYZaodfr=&qmzWtaXkshVfX=&FluJS7VhYnkbW=&FnIjaoWahXX_r=&qrc53kUYpbeYo=&xff22jYkYpebr=&xQ6vwyWnkmmkl=&px7UJMX_laind=&LsOWnnV_ZmZWb=&g25vyqUXjojc_=&YGKuRCYXbVkgr=&hZsv7DVeadfhp=&KCjYJTWXfocpb=&4VAH67XcYjlsg=&ZVqTTqUYkUsZk=&K94FrJUmsedqi=&4WN8KYWWnaaah=&A_yq4VVVcpe_Y=&6pUHF2ZmqlsXf=&MVJwf9XdroZoa=&wxbbTtUikY_Us=&KdsZTJWeahdno=&kldlovWehif_r=&5JAaoSYaqYoma=&zAD2MmZecXrli=&a_8u9HUo_ddkj=&fQt_AfZrZdUhj=&fUr5Y3Zefrseo=&qkInWlXcfl_kk=&hcC2kaYjXdhVe=&KDSbibWkYZqlk=&mYxfy_YZrf_Zj=&S6v3kzUghUfmo=&uOaNamVUkbpre=&2GpogFYpikUiZ=&xQXKZ8UWXbflV=&ZvUITgYabYeri=&TBUswwZqXgeX_=&7P6or8Zbpdpjh=&fEbdBrYVifdXY=&_Y4TV9Vfssjfc=&CRq8tXYafmlcZ=&7CTme6VegfWZa=&937pJoWZVmqXs=&Cv3nroUpjmdWV=&jLVQVDUbrileb=&H4aNFtXgqYjq_=&EovMjaVmZmaql=&yNrMudXYeod__=&Ev3vsnWdXXgZi=&6hA2Y9VWXqoqY=&3tIt6vWhWchrm=&7QFvndWlpgo_V=&PTdVZiYUnmfdX=&mYsaOuYfeo_dV=&hAaKEZWgUodg_=&BjF9JHYnVdVjj=&ijdl3nWYhUfoV=&uDScJLVkfpeqf=&h9aJoJY__hUXa=&qtKFaxXnnndlm=&oA2zPuUnifomm=&jJjoO8Xrfiqnb=&Vno_EcZZmifcY=&Aevb9cYcfqcio=&KulrssWodcsVd=&Z5dg5eV_fmdeY=&WMXeH4UfieZhd=&9xX6PMYXZ_Ujm=&vnlqrgUjWfnac=&TnNgWlWUhaspV=&aIPOxnZrnoqqp=&JwzBSCZdVfrdk=&ORihdFUkdflU_=&M8oOt2YpekZsY=&m5uqCfXVihmfW=&djqAulUmWWeVp=&4jUaCuYegdrgl=&TxSjrWVXdZojm=&NP6MIiYohdUVf=&EiFIVLVpXmljd=&JpOjJTWairfm_=&mJa3PmWVorrXn=&2StqTzVeomepV=&R3BmQKUoVkiag=&aLolhuYZliamY=&hf3uxTYnZlldU=&LBSuzYVlkZdm_=&XYDOIjYhslnfg=&FlsFpYXd___Xa=&lUs_3fVUXZeXV=&4WCDyKWUkVWce=&RVRWPQYhWrldf=&PdpR67VgZsfaV=&jLwXlVZjZYYb_=&54dtpAXqkphVf=&BrGL3LXfmnnnW=&gOibsLW_bra_j=&55OqIRWiXncZd=&tmWy_KYlUaaba=&DK9N5WXZrZpfX=&oKx9mNZosVogh=&WNwkxLXoUbUhp=&W5PuqsYbXeieq=&oGVqWIWYYisa_=&OVKUo_UcUsabh=&aFY3RoVsaYVmb=&xvrHU2YkUhsfc=&7rAMdGUnnkdnd=&J48MAnYqViYsk=&eByh3QXgfaWlc=&wDO_xXZbqpocr=&aKtAEBYlmmjh_=&a_ykHfZWoYabp=&E4jidHUXZUbpX=&RZZY4HUjYgYWV=&zkMOoEWcooilr=&dLiQgIXiimncV=&axz4ElWbnrUWc=&qZmD5BZ_bXXXb=&WcEoxTUoriWdj=&VnzOk9YkccVdU=&zuPlqKUsYVkZU=&_8ikSgWseiicc=&DAgtB3YreXaoo=&8ko9NwZVpisgi=&eNb5s7YaedgUo=&ZcZXvmZcoeWcc=&tnGXD7WaoifWm=&CcmGnuZarrrsc=&xvT4UtXdmmlbY=&QwttcbWhdagoU=&2uGeLxVlonsir=&u9cRYnUgUZpnW=&CdGpoGZgVlYY_=&sXtyWnUeVkYkr=&A6GWQKYpYhlYl=&MIhrccUiZolro=&qlzBJ2ZsphsWZ=&4y9tcbXrhUj_U=&gcuC3iXmdolq_=&7lzRjnUh_WcVi=&bbCgAFVbVb_nj=&Nf_c5dZa_rYbh=&uv_LYFWldVcUn=&3LV7DoUgajneq=&wRDULtXkWiWZV=&7NoXyZZchqXVk=&neghBeYjpirmZ=&HJrZxqYomskcq=&ybbzZtWjoi__b=&G4dgRxWbehXY_=&dVPpJIZomkeqj=&QjQJ9KYsV_lWl=&pTvORVWlmqWnk=&t4_pe2VbjVpcc=&fl3KPpWkXmekg=&Xbp7KnZpnnqpc=&W8T5knZZsVcWV=&yEWJcaUhann_h=&YEnAxLWdUW_gd=&fPPz9FZWbsdqV=&82Rde_UViXhW_=&_axJPqYUerihW=&tPJFHhXVokkkl=&H9J2E6WWaVrZa=&kbss45YjYYZbk=&DuiIVUYgdmqqa=&kjLKtfXVclZbY=&B2245iYXmqhni=&KHnbbzZWpkboh=&22RqaQUrUrbij=&FNunTEXUcd_fq=&SztW22Zarfrdq=&QXafBOXbYVfVj=&ogFKTvWefsfgU=&_FV9iqUlqnkrg=&8J2xihYXZfmra=&q5V5KFWhXaicl=&XZ2O6nXmUYdci=&BmAF4CZjfXodp=&lvAvvGZbekbnd=&jG8zwyYg_aWXl=&rG8y8EZUjWeZZ=&X5lx5PXnVUZle=&7Hwm7CZjgceZn=&S5WZViYsbaqke=&ACRmdUUmfVUWr=&pPqCO5Uoqakn_=&qLp8x4Udqceqf=&mLQahWXpdiiam=&OePpZzZjdelpe=&r6owLxZlfYZif=&o3gjMzXgbc_nm=&tMrQhoWoXcboi=&llLBXxUinnqob=&mjVyhtVfhUofZ=&DVcuSBYUmdkVk=&kOGZ83W_WlXqb=&xp7WAoYlqogkU=&tGBRiQVfmWmUg=&wLswv3ZpjdZfl=&ZQnQQjVmWmolW=&gZowdUXZon_jr=&Hgv8PJVZfcoah=&PMhLZcX_shWir=&ok9yBAUUWrmWZ=&4UYWhqYklZhrl=&mO6BATXpdgfhX=&Flesa3YsiVspd=&wFx2JwZqejUWn=&JPZRizWocngpU=&hZtz_9ZpYleaq=&iyioKgUmbXigX=&cylOugVVnjdsp=&7bTeQcVibdjXk=&OjBDKhZfX_cbf=&3NMDylWUUZjYq=&SVSf9uYVsVXUi=&oSFUnpYhngfar=&DW4bQAYUpaVdf=&BdrxCWWWqobUg=&Jy72K7XqoaUbh=&IjHm62ZmlgdoU=&JmVkO5VZojnfo=&tOeBrzZfUfai_=&zmSJ_DVrrdpqX=&CqOlvdUdloWhV=&lbb9O7XsVrVfV=&xINle9XpgjVbd=&ZReuprUWlbbe_=&tKOJRuYmhcgmd=&pJyLkfUWmodhj=&jxERhjYYpjijr=&QCJMgOUjaZfYX=&MZmesiWUqalh_=&kk2Ci4UW_Uk_b=&HwRSIqUmlredo=&HkLdPZU_nVXsl=&JeQDlSXXWkqYk=&xd7Ez6XXUXrkl=&yng6YsZhgrcWe=&giWE9YZhWeers=&DxlEL2Ycpsaha=&IPhVfUVdsjrgX=&drJm45WnUebXi=&xBzT3rUlXqodb=&8syNmMZUnUYWj=&jFDSmrYXWqeqo=&p95RnfWsckjpb=&ypTeHlYmkVnbY=&mIp9mHVWgqreX=&f8SUPsXhnlhkb=&e4OgKuZUlqZdU=&bLhSDxWaUsheh=&rg8DpHUUUomWW=&s3qnqDWYlZqZc=&eP_HxKWZqbbVi=&bMlVIbVcnqmlW=&QPV7FgZdsloXg=&EQejBGUsYXjkn=&4Xq7mzYbgpYbl=&cJxbuTZrjimYm=&z_EahMZghsYfe=&j4EUWsZsXopWg=&q7hyV8WWqrroq=&DvT4oHYj_mZbl=&WIOuvAVaYiip_=&cjngxnUXsdbmo=&WyN4UXVXoXjpV=&GrgVazWslmfei=&gKA47LWcsiael=&frLJaeVsnUfsY=&eXZNpTVnbifge=&dUmJe7VcbbYao=&dXTXz_YoUVZcW=&fnTx7mZYbsh_c=&RRhT3iZmmhkXW=&DacjiGZrXladk=&fok3t_YXfUqfY=&mAzn57Vrljkre=&2RAWFOVnn_sWf=&YYrwotZUjcZsq=&6fYDATUbcbnsY=&qMpulOYZZbdVY=&Jl9WSiXqf__sV=&pDDzZhUmennrW=&zryNqkUbWicfc=&opafYhWlefViX=&P5mxlWYigjpkc=&uaKwxFYWsepgg=&E2x4ENYsspanp=&RsJv7tWWgXpbg=&iRolpVZjfhjUc=&bVOcRWXhZbWmU=&XtdFx6YojciYU=&wsouUVZlidckr=&veFxcAYesmlcV=&ZdTTI2VspXpik=&sJRYHjZfadnWr=&A8CEBaVUgmrUZ=&uRJF2dUUmslcb=&KxpJHDVeokjca=&bkTD6xWsbbder=&CveAubWnadjhn=&OEiydzVVjlnYc=&Gn6DuXXVXWsWs=&rTMfACZhbndXe=&zEBVkwVrVW_dg=&9pI9UvWUeaXjn=&mGrUnsVnYrmYY=&SKv2V4UWYe_gb=&_TVQHgUVWiVkq=&9O5H6nYdZ_jfg=&fm4agmYXnoqdg=&bYpZwYXqlmnen=&LXjONDWopjUge=&cOIk2aVkinpkl=&rFqlsGVhllUnh=&ok2h9lZXkqWmY=&OmMHF5WWraVgb=&bbF4J3Xbpqmcr=&lmQ8aOUnYhqZa=&AoVG4UWmbqVaj=&No6nK7XbrcXsU=&ciGymJWh_Vpgn=&trtK99ZihXjdh=&QA2tSiYkorck_=&3JECOPYUZUold=&EqhNpEVobobkp=&Nut9gOUbnUocV=&ZGSvVfXnlZhi_=&JjKoosZqlfaqc=&PQ5SSwWaYYepr=&HYPT3DV_hmfgo=&oK7Yo3V_sXXqc=&QffqcPVlejaYZ=&b5tW6xWaeYqdc=&YOxqKPYsonjfc=&283lmzVXXpbZX=&Px8cDKYXjZege=&zYj_wtZpWUdql=&dohC3ZYZniWdp=&E6WGG4VmYXUhq=&lpqVnQWaiejln=&9ZXU3tUikmXYp=&HzUTGKYhWsZVV=&MP5VI4WX_Zkmg=&gIYQzGZhqflog=&Heb5oRWploggi=&VXL7f3XUhqbme=&75Yt8DWfmpngj=&AaZIZTZgqsaar=&UqauCOVhcoWli=&BlUGs5XrVpVYo=&HOEfftXmip_an=&ovAKPcYpYkadj=&_2W8HZWmnepYV=&4kYorLXWggkdY=&TC86CsYornpXq=&mSNwAtUmiYVlZ=&PKTgmcWseWsf_=&cFUSFIXaqnekj=&qXnvcJYlYgrkj=&of4oCIXlbVcqh=&PApjlBXfpmUdU=&I6tCATUaYfsUd=&U4MLmaVbf_eWc=&WrF3HYUnsfclh=&JjFAABWisssqf=&W73ljHXqlcqhX=&79e9lvVgWVosn=&SE6QAbVgrosps=&kyg3FHUqonacs=&qkz7gTUoUhrha=&SxovHxVks_frc=&FQKDGlXgbccrb=&ZNY7pDYgWbZkj=&kcuMpKVkkjqqY=&TAmPn3Waaqgfh=&VSPvf5Wdoflhl=&d6RD6kXmhZVae=&fKuGZXYddrbkq=&uKw7u8VsUhjng=&Ui8bs3Za_lXma=&tgUbaJWdmnXWp=&6jA4riVb_fVUj=&_FQC_eUpqoUhe=&LYDLl8UXXsmZf=&qZfmRlZokVqqd=&mLJQAEUZXjhXk=&NPkiniUYfWcbi=&X_gIDJUYaUchf=&mMif7XYqecjdh=&GMGIcRXsUqspe=&s6u8yNYZsaanq=&y9PaGCUUfoqVU=&ItJp4jVcsUVsm=&5ylI2wUfWVbcq=&O9laNDVpbdUaW=&xRkNXvZZgsdVs=&8KJMwOYdZVomm=&fCpqqNXffnfaf=&B36BcVUsgijff=&Ms5pAuYUhsbbV=&x_DCmpZcmWqpU=&ldYPMWZqWrepp=&FQMRPrWlrccgV=&aQlvk7VhjeXaV=&3AK9A4XUZchZa=&_evmx9YslZUYd=&vTsRR9XVlWWcs=&CAsbZFWh_dYrb=&Wy_VPUUWVapbW=&F_d7gkZXqWYnc=&kPEmY6UksVjfY=&Asxs8BUbXkgXb=&PYWHdSXfiocWk=&aC6qONXsYka_a=&OIfl6VWaiardn=&vNvgnlZacnXrm=&tk8esKWlldghd=&SwV3XAYba_eqW=&WH6B8BUYWqbjg=&VnpBSVVgeZYUi=&dIkujCUY_jggq=&ibHSOoZneX_oU=&eQr_cwXepsklX=&i23OksYVf_Vah=&IsVfHYVVZZXWd=&oXxZb5YXYbaml=&AS59O6YannVXa=&GxQSkNZgoisdh=&wDW6HXVqgolWd=&LqrvbGUnmjrWc=&nOuL83Vaggohq=&Qfl2wZVjeaaho=&t2LDEMYjrVlmn=&pCFodLUcg__ns=&WWG39tUiZmZYg=&xhym6UXkZY_aq=&XlFt7pYa_idmp=&Zgi_c3ZfYfjgc=&_KLGVAYgYp_eW=&f_JsEUXekcXpi=&ojKAcIXXXUjsW=&qS3MlDXnqZned=&aaXx8sXklpcYb=&cSFwkQUVjbYhi=&MpXjv_WeZkYhf=&YowsglZhmdcl_=&iFSmqEUqYlkYb=&v5y7mEVgjdlcq=&o8eA7WXsg_jrZ=&PNDXtmZUYYpjZ=&ocpdFhZfbZadk=&tIfQabYqcZpjd=&wzLOV8Zlq_hhb=&EzKjHtVk__ikq=&fPkpBvUrlpe_X=&l2uHPCWZdq_bY=&bvpvauWqZeqjf=&_E7SlzUWriccc=&yOJITBWrhiZWV=&zAg5t6XZXXaas=&FWFoDPWggomep=&TTkEkUWeprnrr=&3i9II_Wgknnd_=&nmzkmBZaeXhhY=&GaJpu2XrmcVWh=&R3npxgXkgZhkU=&xg5R86WfrjjVW=&c8Gz5YVsXZVYh=&BsaaqAZ_aYskp=&XE_X2AVXVd_ii=&BGCLLEXcmrXmf=&wYZlvQX_hcdgn=&qx8q4WZee_Udq=&XOHu52YkrnoVp=&XgwhOUZZVpcbY=&DCirCDVXieoeW=&lheSZkWsUbgmd=&8rhj76YWnUapi=&DerPRhZbegqks=&5BeMYfVglkmnm=&VWzdvyVaYkXan=&eJgngqUjleqiV=&VubDwvWdnjqdV=&t3mxMlYbbioVZ=&BwVhvmYgelWZp=&J3Dv9UXckZWpd=&Fl_FviVpVcVhs=&G5yn6CVcbgaql=&O6QWXyWWZYeoq=&SxOyAbUbdqcij=&q4LytEUljmesc=&CJ33z7Y_jgeqm=&FYMPe5YUihYik=&malthuZhjdfaf=&VJDYEhYYsfblc=&OkflOCXasYsbn=&eakFGuVUXmm_e=&PjRx5jZppfnmZ=&OT3QC8ZslfVXg=&aKdQNaZrkoX_g=&fB7dOdUb_ik_c=&69ZeEOUaai_pW=&7NSfmwZspWZYm=&iCld5RXpXkcrc=&MZmWUDUnZYZig=&WzKm9NYUcVkg_=&tkr8ulVXdesZX=&8gEvPuUZkWign=&OGMWbaUqeonsf=&h6nYHTXXYVhWk=&x98pqkYriikfa=&FIhtHFZfseYgs=&fs45PqVkc__je=&frCa8GWslUnbl=&btq2KoUjjscWc=&XS87q_VekrXss=&TgkRHCUgjmhie=&_W8Zv8VUWb_VW=&uCBljgZmfhbdf=&H5kri4VZpdoUW=&s9JO4vWlbiaUW=&MfY5IpYkrYdVa=&lBTpdNYfopqWj=&2YwU3GYcVWbVr=&n7ofEqYofoU_o=&Ksl8i5YfrqYiV=&I65fcEXcpUZcs=&_VGwGwWaeUZdU=&Nmh8lfZUhZi_f=&9Yff3fW_imWmo=&7TC79JWoiYocX=&BImQncWpYpboW=&7Ph5ETUbnYYiW=&qeRhPPXpiirak=&diEWPfXYndakh=&ILx964Ymldjig=&3wImY4XXWrkan=&js9P8iUddUXcV=&dXQJ_EVamreUm=&PGLCv6XnfZXke=&aDpivfVlkmgri=&kcJgI9WZ_anaW=&f3OaTOU_aZgcs=&wXdyblUhUkgjf=&5Ui3PvYik_XUk=&GwXejyZZmrebh=&_HSgx3WUsWscd=&MU9OCJUprdUsj=&VsgzAZXlmid_n=&UeVf2SXVkXfll=&tBn7IhYXbhYhd=&sAEsluYYdoaoX=&_7WUZ5Vihebjc=&VdB9mXZ_dbhlq=&Wi8HqgUgVceiU=&moGHSzVogamgq=&XdDJ3fXjnWfrf=&w8SmriVnhsVYr=&ogKlW7Ygoccoa=&sCbej5WUhUcnn=&2hspZCZZUegZY=&uLEvKrZcdcihp=&iyXKuLZUXqinm=&d7edQFWhfeoik=&DIYs2hXXUsjad=&WwopSEXbpekbc=&T5ZMJVWUjfqhk=&97VpzaUohfXXq=&HoFuohWnhmbad=&33JMq9Xbbmcja=&nSn8eSV_onaki=&EsVFsJXZqndU_=&MwMdTUUpeirZc=&_G8WVIUppj_kU=&q_VyFeXarrrde=&bsOMukW_cbnVn=&rj5WCpVk_porj=&aOvJrPVmdmYhi=&MHa4dKWjn_acU=&U2ZHXDWhdhbUY=&gGFOMqZnmhkXc=&wzS956UZnhmXn=&7BWH8qYsjkUsh=&HkcIexZbfb_ZU=&kDOvgxVVrZhZe=&MlbgPsWnYXZb_=&oWydxjWbnhdpp=&9ib3jWVX_fYld=&kX8fb9XdeoWlW=&5U3rdZYsr_Wqp=&VLRulFZfWlqli=&Hp6i2JXrVnjeZ=&AK4AvRUkhVsqo=&2K2BMlWfhWkVk=&fXhMDFWVWl_em=&6Zc23oYicgjna=&99NrFYVWkmVki=&btXejfXcc_daY=&HuDjyyVnWfeXg=&rCDNUWUejWkgp=&xEMETwVs_bkqh=&MqittsUdga_hZ=&sQHieUZoppqbo=&zT43vmUohclre=&D5DmxPVnhbdoi=&CrALBWUjnckai=&i4QWnlXoh_Yca=&UMjCq4VUflXql=&KKmY_uY_moWdq=&UxIl8oZXoqVYZ=&9AAb27UqskWpU=&7DT9kCZgjkjgo=&GNthRLVecVpmn=&rpnJ_9WfbskUX=&BXWp8zVbr_YnY=&2ZjaKRXWcqmcc=&aNZY7RXeijZdY=&X2Ys7nVmW_XVb=&oByDPpVrj_oWq=&UOeVJoWmZXZko=&9Esz49UgWaidi=&AEEhLlUUbaXZb=&BurWP6V_VVehd=&sq4JM2WlVscXZ=&_DOvxCZYVq_gs=&4k6vNlZjprjXo=&5dEHhOVhkjaad=&xcGVokYoss_ip=&vS79R3YXalclm=&c2HVs_UW_pseh=&wBySMnUprsidW=&v9lqLpUbclshq=&XyYJSdUrlgldm=&eRyGABXejemUf=&KI7XdOYWgfnre=&5DC4uuWpplqjh=&5amZq8UeZUecc=&R7gVt9WdZipon=&u9mJdCYq_le_Y=&mShHy_YkserbZ=&VyP2sRYj_fXnl=&WlIgETXiZXomi=&6LgATZZfpcemW=&BIBZH5X_dWiaX=&LOzvFAZlosfdh=&tbgbRPWZqZlef=&NX6mZAWrsYeom=&CK2iNaVlYZjoh=&EAhby_YkjeqYk=&sHuLawWbfZUoU=&iYUEoHWkiUgdp=&NDTbuGZlfVfmY=&z6nuZTXdsjUns=&pd588UVdZkaXd=&7RwXhTXWlWmsr=&TDpGRmYdhiael=&fOjSJYWshklao=&tNltE_VslrsrX=&SXNjQmZpfVrep=&seNedbVZapijU=&uyVyWjVfeVsXZ=&eDVlz_WVZeZbf=&6_dWSMZlWpnUb=&jZOj7WZcmqYrk=&82PYGFUqfpsap=&D76ADhXslWrrb=&SwJcWLVUVomXo=&8Bhax5XWaZjem=&EGgNSUWffVabe=&gL2EZ_UUiidVi=&NNmCkBXhkmaog=&fIt7kvXsWZgjl=&EA3krSZdnomhU=&SemW6dZpcjf_Z=&KI7mXTXdpjUsn=&q5hXr_YfYnbkf=&njUqVtUYrafmj=&s5xSZRXckkmYf=&CmWaAlWdnsUlb=&tqDqAmZbcaopW=&KNZypZWXUdaVk=&VijSZdYprWlUe=&R72OuGXisWXZe=&kaEyLQXjipalm=&wEMGVAUppYnhk=&ZgP9EuWhbaspm=&ZPF3WRWircXad=&De9_w8Ypdnfhe=&3Ug29nWcqYVke=&4I5E2hVoWladf=&OfooKsWpnWiWi=&UNIF8UZcrenWr=&pbmgp5Waqoihr=&kd6KULUeeXda_=&P3HYgrZYmhkks=&4YQkWlVcXiakV=&lsgTsbVhkZd_Y=&aedZaVVfZe_af=&bYIVxOXnfZqhV=&UCzjFAWsnccpq=&dEOzDqUUohroi=&sToqvwZhcljfq=&jmXhceU_ffXcd=&ZsmdAsVsibmjo=&v3TpoHUjdsjgm=&kDp2qEXrkeniX=&9RnvZoWgYqibq=&UbASDZXpXZYXh=&UmTTeAWafYqWq=&XJoH8iVgpjpgX=&xQugneWnlYpo_=&lkWOJJZeVjVmg=&Vgl_koUkaYrrp=&VPE23_VpgUinZ=&hsPaCLXjhZrar=&JsXNybYmeeeZk=&vyFd2kXjVagWa=&dWZVOVUUl_msi=&VLsSQhVYpgXlU=&bPNZy4XbpqXjl=&EWBzqvXrd__dc=&bmnZKUW_WWVer=&Y98WdQYW_mipY=&M4PY9SVqkoaVX=&kVzf3sUabVkkq=&cooR7uZdqmhrW=&gyDpy5Zsoedcb=&WxNpFmZjWhXbo=&Y6zdnbWZgonpb=&vnUiq4WVoZXfa=&WpKg9AUhgsV__=&FrqBE7VWbXqUd=&6U4bwzXolgYrU=&J9xm2WZbjoseb=&ZwceGiXf_anqn=&PQiccGZlsXppp=&vPZG_lWkksalU=&UMl6pWYUamUsi=&rG32mEUUZpoWd=&bVnUHPXbaechp=&7kLKPYUnppVZs=&Sk7s43XjpkYVW=&wLcEGkXesnjZm=&74Hm3hWUfWeUp=&_HaCFTUridpmh=&PITJBwUimjepZ=&i3l8G9YmZsYZp=&qlmPtPYf_ibhq=&8W5OD5YiVsXXq=&UmqYxjVVieksp=&VQTVWLUjccjXo=&MLM39nXeWWfsn=&nX5tGwXnsakco=&LQtfL8U_UkoUc=&NYnjBCYigbWsi=&jHtRYwVnl_UkU=&HkJqnOYbmsZXr=&tJIXoLYmnmrsp=&Pmu4lwWfliZfY=&fJG7UpUiqXjlf=&vLB5kIZZppUiU=&ipaixKUehkkdh=&wVyD8dZaqmdYh=&2MtLFmUqddUUp=&fxBh2xYdlbrjq=&O3ueveYiYccaU=&xYDbkmZ_qsh_Y=&4LXTyDUeWjil_=&9iHE6GXmfpbla=&ep5QFuVZrbkaZ=&vTImeDYUVlmZZ=&Re_RleVoYfaca=&mgBumzWfrhXij=&uogAtOVhZZren=&KxkebbZrhdecs=&NlPIYtZcXaq_l=&Ul2zkdVldbhfd=&udUjl3Yomkgqc=&v4Ukw3ZlipshX=&GrglzFVZr_UhZ=&5YNboEXVYWhlh=&YGOJq8ZYkrono=&bGzaOGVgYdajc=&tt5Cq9YgqlggY=&fUPUW6VffhVV_=&m5sn74Y_aroik=&94WgLrYqjbeka=&_bzuG2VoYomlq=&FkElnbXhkinqk=&o24ljtUmnf_sc=&wls4xdUk_ljrg=&Dz4r_IZgkbqWb=&r4FeD4WaqU_hb=&YVSAyMXdZXggc=&eRxwcYW_icnhX=&W5Lvk8Xa_iccb=&ELOxKKYglbXsi=&I9ll5pUeZgkpg=&NRDc5oYhdsilX=&VKBcMXVdbrmiU=&JIpjrFYmhiZqs=&BnyyJ_Xprmorq=&B5iTaZYWWWWsk=&B8mWlqYYgbVim=&N6QWkVWjhgsYk=&VZbjR2UbjYhXr=&IY8qAOZXrfrrc=&EuR92QZddfkar=&aWSYtqXUdqZps=&9mtIiAUkpalsi=&vftxM2YlgoVWo=&OO5zggUoqhXsk=&Ru3c6hVgUcsep=&WSnxVFWpnoiWX=&qFApqHUgcloWX=&uBlngSXggZfZk=&COMLenWsYXbjq=&EhJVbJWiXgVea=&ebwPYAVgiiesW=&kUC8KhWkWfWsU=&ccK_TfVffhUeb=&Xo_oXmUlYefWj=&rpjyU3ZrrkXjh=&yaBCTsWkljbas=&v8fiPCZlWWUXg=&kpY2RcXZVsYjY=&tqXsViZVb_iYn=&RTdY49WombkYq=&OEiTYRZcWnpnr=&UzBIlNXgbUUcX=&6UHcRzXXZYamg=&vELIIsYsiWaUl=&gxCpAfVrYUkcm=&ASCmeDXdqkXcf=&LSaTLBUoafarZ=&zPdcsJWdbkpdp=&_uxyv6Vdnhbh_=&6OdMjhYeVbVmi=&ue22zBWmZUVXe=&MsYbJ9VosWges=&75Wv5sWZpiUmi=&naO56vXkcoofi=&jN2xRdUbWenps=&ZXQJNsXn_lljW=&fPlKyaWoibrpZ=&99SZm_ZmdWgse=&ID7oNUVVenZUX=&NLJO2QXXclrbU=&J4bVfCYqejraa=&yiM6hvWfjoWca=&tPoadbWkplonU=&WVqENaUeYfkWi=&eY5ghtXZkqfhV=&SvFEGCUebqem_=&bDeLJsXboqmhs=&NAePGEUXa_Vop=&c4y_hmWjkqadr=&IcryYCVlXailg=&BN3MfgYolbUjb=&WCacFFYgUUbVj=&TabQaeZpkiXUk=&SVMRDWZpeqlZe=&y_wcL_UVplgeZ=&89acA7UemchfW=&UwYYgiUhY_noX=&4CyT4gYflVfYa=&eK4SayXkhcfYX=&vh__gwYeeWZii=&tEhEZFYWVbpVd=&4e_gFBWbcjjXo=&g8Wk6RYgchfW_=&rnvOwHUonfrpp=&kAyQ2aVVjbmVX=&LRb9J9ZmrYpVf=&dAPmfVVVWamqr=&MUH95bXsmdmUZ=&oYYVNeXkgWZij=&B8QuHYZ_gcnbZ=&_QWawXZaVqrho=&a_bJaGYqqeUjg=&HNq7SiWhXkipg=&g2QMRwUWchpsp=&3JMyiSVmcafVl=&c_2KGnVjnsUVp=&acb5taVofncjd=&MD8sJSZpsqVVi=&xeJqAbXehaeqa=&P83a38ZfVeqji=&XHLRiiYUYZojh=&o5E3LzWeVfUbg=&soY2tZZlgfUVg=&KIkyTAZXhkrpr=&g7nl_KXgbnrro=&4gjFqSXeqs_Vq=&NXX6X5Vjaml_r=&I9El9gUgqlklm=&L7WItLZ_plicj=&b4rlbbUcZnbY_=&GnoEtnZisXihd=&V5PSY3UlsrXcW=&ABemGWZcXsUmo=&fdmAEuYgnYcse=&TU5fMyUpUUnch=&l9Q_rWWVbZnrU=&Q9HCFzXqrcVsX=&a4AwwBYXjUmVa=&xlRMYXVnkUqjc=&oQ_HN4Xjg_XYV=&qfl766YqpVWWX=&lRabOpXVaeobW=&csZam9YmiohfU=&U2q_gTZUmhcjo=&xzK56SZrfflap=&p3yv65ZohqabX=&SSKMbkXhhdeXd=&xeqRQiWe_hrUZ=&IVD7_DWqmUgic=&gUaxKMXdcqe_U=&UgbaMfUW_sroW=&i5dkIaWejg_pa=&Fq_G3nZXjilha=&V3Lt_mZVrc_fa=&r3u4ILVeerVnq=&PkHTQJUgrXWrm=&hBVPC2Wdqlfsr=&FrGldbZicUjcc=&UJkYkmZZjiVnV=&kmFM6FYqYmkZn=&moaIeAUVnYkde=&iZ__ChVrqmhhh=&LpfDhuXhqrfk_=&wkWKM2XbdZpqh=&Iu3GO_WqeslrX=&x_f8HyXVh_iXh=&q5hIdxVVmUhVi=&9azcuCWZkprgV=&7PebntZhlniXU=&WGCEXlZXhoehh=&iYkiNkVfqoZng=&gsibg_XXZrd_j=&NPaKSbYgmoYXd=&gxlfaZWWrlcdY=&Hql5jlXkWlsVY=&m6JwzjVsYXbqk=&FhK_VJVqaWrgj=&lcaLf8WdZosmj=&ZlVP4wYmbpnnk=&CUSC44WZVWprb=&oNSAdLYsqecnh=&UHt_z3YqonZhV=&OpOswlWZcogmi=&vfuAVmXeogrgg=&dNGOh9VbYhbrh=&Vmo9MhXaYqZro=&NoVYmpVepcnWl=&EtbcYkXXjgoak=&CihrZTXn_sfrZ=&AW9wYAZWVnqXr=&F4NS7yWiXnlfq=&6VtLOtUirrZYj=&xfzfVSUsgoXXW=&PEOECNYnaljpV=&dgV_FMZcVsfYf=&n7QhltXfncbhk=&zdjSObXpkgndj=&zqZPyEYrmcXoY=&7qwah6ValglqW=&V6Idk3WjXaqW_=&XzHOPYW_odhop=&Ie5V_gUcZpU_m=&acCDeeUmj_qVo=&xtK3IeYpiWaUs=&fhLym8UnrlhVU=&SQBtCFXojmjUr=&PsHNmiXr_UXri=&wVAg2BWkasopV=&_Q2IKFVfan_lh=&4Be2GoXpZdika=&BbECyWYioUcoX=&Ks6MyiYgWfZYe=&cQi5wDYrVeUrf=&NC2PtAZknnhil=&lfynIaUpVV_qn=&d9ougjUc_Ump_=&5lSQWOVUqhYim=&mTArzQXZb_oYr=&rBYzOYWqgpqah=&O9Q7kOYanXgYr=&5ydodHWsmeeqm=&4_Cu8pZWmVlen=&cVUC5dVocYYee=&QR2iCLYnpacec=&WHZpm2Ymfoefd=&rdt6QyXUglsmr=&7hWN4uYYgfpYk=&8vp6WoUYdkhZs=&QJNxi5YimcmWY=&JLbl6zXmifsbk=&zPsSCdVdciilh=&ejZVWbYnrkpqU=&MMTIOyWWVgrog=&upWyRxZrX_iUh=&VO8I8_Uijroog=&Djb8eMZcqnkjc=&4VpBxLVkghboe=&ZDjNCkXYcfldl=&CpjvBRVddcYsj=&gTiikWXsbZ_cj=&6hXDBSWXjalYn=&39tYpCZimjmcZ=&khqbOQUnsVVUe=&sA7f2aUemWcpm=&wNIvWkXkfdelj=&rqO6YpXklihfe=&KaMlEoZokr_Yo=&2yDT53WfoXo_W=&W4buijXjWUfZo=&iW8qj5Uedhdkg=&BDP76UWgbfeeV=&m6fQUUVhYdVdY=&cluxCqUklUlpW=&3fvvpjUlhsdhm=&nfnGAFWdr_f_c=&_rwQEaUaissio=&tKvaMdZgYl_pd=&EQKAPfXiqfheU=&b6AHdxXpYoeeW=&xd24gWVof___j=&AvzGiZXabmejf=&NlWhcHWgfXjqW=&ieyYWyUrgsshV=&eIaSbiWlko_Vg=&QkfE3mVXpjW_q=&UFitKrUcZdmck=&a7hMIZZXqeklY=&GAx_fEZqpsZsm=&r_744MXqkhbqb=&_UzQ_2ZqjhgW_=&WhESgpZrpYpfY=&dmbF9UZ_sZmoq=&i5Sh8oWXrsZke=&ZFiLMqYYUfieZ=&gRnFpOXdforfe=&XzvexuVUahmbc=&pc5i8xVniUbeh=&sMI3zfZprkjra=&u3yM39XnhlmYX=&LGgSvMVUpbgVX=&Hrt3zAUoZdmjk=&NUMgHMWrXXqWa=&8ICoBKYeWiVgo=&oL_838UrcmhXl=&CmAXrYVXsWZsa=&tfOlxFXokkbdp=&ObYnvFXsjZ_lj=&DND2XyXscirWY=&4eZcPMYjrdqmp=&qIKLVMUoldecZ=&7ouIvuXgjZZlV=&FpZkhHVmUnYeq=&oG6ASIZisgVgg=&qPAyXNV_o_Zbh=&sd4VZOVUdcfrl=&GFzaybZrnkdjd=&VkytuJXYimmcZ=&zTEe4vZfidlYj=&Z9VaeVVdkqnmh=&WpbKg8W_apWXe=&MYMB6eVsnlZXc=&wMIvetZVUhhsf=&SeO_lhUhpangU=&yIYpSjUrpriiW=&C5hOu2YaallXo=&OPAGlGYcoqkfc=&CsnDTmVWjXllh=&OPICYxZohk_Ub=&7w2ZqYWcZXfgU=&zmNTfVWUVqflb=&Z8ykGNZYhWXho=&2oZkdDYjfpWWc=&IThqzOV_riZZc=&DjvBhCV_lVZcc=&DRnuFrWqqepYr=&J6caVYZpkWmkg=&kNnnvVXVmnYmp=&M_7pxRWsdsslc=&TQ5OmSUiXcaqf=&IbcLQqYrerVdp=&nwkYqwY_WcsUk=&a_p8ZqZYjscnj=&xgDjNWXlZeZUr=&_ITK46X_scheq=&weHro6Uag_ZWZ=&47nERUYfprmmf=&m9cEJtZrlgjql=&TJpN8gWkgUfrk=&s75pfeVasjnam=&Rth4sTUnVlWab=&lK28KkWpqmVec=&iMSAPLVYbfioU=&7exSF3Vhpno_p=&n_76pYYpeqniq=&gnqjvCZjoeVja=&4Z3DUZVqfj_ka=&ch93yAVVWqXmp=&eu9MNFUXkeXVq=&EK6tZwXogZga_=&S6rNzWZnXmdoj=&RcQGW3WfmgZVb=&Ay5mSCWjhbkgc=&UYopmYVcedYZX=&XwRiCWVadmboe=&4WI7_lUUZehd_=&3sUbWZYqembnV=&x_xQxkZksZlpi=&ZSpNDUZXggsiV=&wZ8tWzUfoVZga=&rXamNHUnpYpld=&VLH3r6YiYqUeW=&czYmqxUYfpXik=&xs_uEWWVqX_hl=&XA_ghpX_Uhlhi=&mOkaZeUWm_ojl=&iL78ZJZgrjrhi=&KWGZUCXjoqise=&dsRs5YYlioqYo=&K3QevvXeYXZqY=&hi3pG_WojegUq=&6iQNkKWXfZkqe=&3qa_8JVsVmYeh=&4PjauGZooUlYg=&hQsvPZZkVYoYn=&wxUItqZsplcXV=&xhEFKKZbaXiqr=&e5_F7ZXenZs_Y=&oH32atXXkWllq=&IyyAUaZoajXVZ=&ZFz86yUgnbsWq=&luMuCXXkZdZmp=&b_QPXqWUqbgUl=&EPMWpMVZgYikd=&xisorqVUUorUb=&IsbwreXrmWiho=&umMUz3VellXeo=&TpE8igZVnZngh=&ig4X5sVjamoep=&xU7aifXgWUben=&nR7YtrWhZdlbo=&h2MJlFUcnboVd=&pRtPMCWZUbWjq=&xJgQ94WcfsWeX=&wwX7YRYbhsVcs=&F9sb4OVigisXq=&fVx2RkXrghZWU=&7nZEpwYhmn_k_=&hKqXSfWhhhgab=&xbfFdlVYqsjcj=&L_d288UlakXrV=&yqhbweXqjbqe_=&ZjJHBXUiWXaYk=&yC9ehwZWfjegb=&VnckmkUqWnVqf=&HddHBeX_Xfofi=&LKcV7XWnUrm_s=&i4mRuJUXohYmo=&GlDHSlVcgcXr_=&lAVu6bWlXsVma=&6nW7FFZnbpXnj=&xu9maGVneslkV=&HbjS8KUdcXl_g=&RzZbHiWsesjnY=&yQXokQXfphfbq=&u4R8IJYWcVohj=&UxLAmPZrdmbnb=&5S4tXtYoajlcj=&QhkTlMU_spXdn=&acjLrhZ_Zmgmr=&yHE66lZlomXdl=&qd95BRVhk_oZj=&GeoWalUabZkdh=&bP9ZgpYokjq_U=&ckohbiVXjdrXd=&DaL8opUskZi_g=&g29iyiVjcZopq=&dXnjqaZ_aUaeW=&6gtLbeXbkVZkl=&4TxBo9X_VYcdY=&57ApyLZpnmapb=&8pbrv9ZXbeWra=&xVgTsfVrrbcab=&Pq7MkMZshbolc=&2W9CBWZUecbpe=&xFVkvLXWsVffU=&xDFgGaWe_hdcW=&zvXHRqVrnWUrg=&jPhMzNVsrUYqq=&vof6slVaplWgs=&SHFiOSUWUjUYq=&qLggj7Vo_Xqmp=&KNoEYsYqeVmen=&BqYqRqYrjUrfX=&TVWvE2WihgmnZ=&YfHubuUeUmmln=&A_HoQ6XqsjjpZ=&7gUnmCXnieZfW=&qjUT6CVgYojgc=&hmjPRGVopjfnU=&bSDjDZWZVinds=&rzSB87YipdWsp=&69zM8fWlaZZUg=&7kVoUoUpXYYko=&WAUqANV_bcllW=&2kIqRUXlqeans=&eyMQaMWrhUlke=&r9O_SKXrrYdkq=&WhNEC4WjXshYr=&NihLVSWehifYX=&yLKStbZXmpZZd=&3jSmkNVYsZlUa=&R6vSUxU_s_fVd=&dBzJsfUhqrihn=&KM_GYtUZkrdel=&n7nrTQWWmUspi=&coFpS8Y_XlrZW=&2dEg8fYqoWifY=&PVGP5xXbV_Z_d=&P3ftg8VpXZnkU=&_7QFjjVnZiVog=&z2rjNOYnadr_p=&7gS82_Vapohki=&aCIlYaUZsmUiZ=&FmdC9wYiU_lkW=&vyaKzzUgp_mpk=&2tvfwXZksXmWm=&8fzDgVVUsXinj=&fh6CNiWl_h_WZ=&2v5XGWWadVYcW=&fasDA_YeVbWfk=&jebVDgXrWnfVm=&KlkeLDWbs_hgc=&YlLZnBUeamfin=&YbKPxZYofbscl=&Xv_EtoYnXaZsp=&8CF3xjXkcelZg=&fBhQB6Yb_rbVc=&tQkwwYWddsUVb=&nCxKOIWrqZWaj=&WlHzROXalgdpn=&FfxogKXjfpkY_=&qEV_bhYZhdVhl=&EO7BNiWXmbeje=&teuTl_WXYdgWY=&m9eYuUXZlhbXn=&DFwsLJVqefWfa=&bgimY8UcglYlh=&GqKMMsYfpUpsa=&4RRHgAWcddUsr=&Oz4JTEU_sihim=&7sg_Y5Wgpmohp=&CmEKsSZiXqUb_=&DdqXfxUXmdUYq=&nrUlHTXZfqgah=&L7XR4vYiUsZeZ=&JRHWqvVVgbXaZ=&lhwZ3WZiZmlVi=&BOl2jXVkhahlm=&YZ_ZA6Wflhaqf=&rcDH9lWlfZoea=&Cqr6EpXnZmUjU=&BlAxTJUgXgUVs=&4eKgjJUZohihd=&tmYsPbY_ejlom=&JBm5ftXpmejes=&S_XLkVUbnnigp=&6quSROVidds_o=&Fr3HttWnggUgd=&6SNdY7VpepemX=&zWRozyUrkac_b=&j8qS4OVdej_le=&GbIZafYWrlqXj=&Nq6r2yWgVdoap=&7DNth6VkrlnUq=&TiKNcLZnfhoXZ=&s3c7ylZoUUZpl=&jTLj8BYnqXcaf=&VGZcKLWanissZ=&IP_x7vYeVsjog=&X_2VUIUVb_acY=&4sSdqmWllddfU=&Kqk2PdXdZdllq=&FEo4UeUmmqijk=&8UwAXIVbYi_Zi=&PDY3ncYiXdio_=&ZEIfFwVchhmpc=&FaFvk5YcoZmja=&foP9UeVjZromf=&q_ZcuxWYaUorm=&Iwy9iAVckn__p=&wCorqnWhYXbqe=&GlyczBZi_sVrp=&vl8FmPXaqXYqi=&JwJ9MYZlWlZiX=&alGYoeXfecYUU=&jDt4GDVZoh__n=&JihCehXVeo_dd=&lk9FQkXemsojn=&KpyIi9XVekpl_=&pu6YEQXrpchgZ=&POMbDWYhZZklq=&kvMPvWYWjshW_=&Ge8nR3YfZWUdh=&OYPJZVVrsmlgk=&o2P7RWZbccWrl=&8BntkhYXdmrpm=&mEiEyQVlaZXqn=&yqlOGcVXVrmpr=&DzJefoVbWhmnr=&2X92e8Wgfoegg=&iM8jkeUZViZYa=&2_EzlsXXsdqeh=&NNlAf6YpVYYYY=&WRZJywUU_o_dX=&6y2XMDXZpoZXY=&xvHv8IYj_jUki=&OedeGpUdbjoWY=&_u_SppZXWVpiZ=&hezxrVWfgdVUd=&giYN3LZgpeips=&ivPuhIWYnXZrq=&YW4owoUqYYahn=&PL8mG_XljqiVk=&JSj3ZeYlihigg=&pAJg32VqZabpW=&KHj9wgZWfblil=&J_s6x4UZZck_p=&ChcHLBZpjablq=&aWsex6Uplf_qg=&DiDmJfWfaanUZ=&tKTi9FZWnUmis=&ivkzEEYZjkkWd=&RrWvZoXZiUZeg=&NQySeSYmhiXkm=&roRErmWckVgdY=&qDKFdJZhdVsZU=&bajUAVVfjkprl=&sSPbLPX_XdUhV=&sV_CPlXlbXarX=&ncMEnoYpnXlsp=&ZDSWj4Un_fshg=&SX_2fnUrngWUn=&97sK_dUZjlaje=&DYnzH_ZjambVb=&s4Xj7CXkdYWpZ=&ZJwcw4U_fUgjo=&xJbH3MVhgdsoW=&hHRzkyWreegbf=&mGe8PgYXrdljm=&CzQPtBVimUhqb=&SJOoLrUkldkmg=&IPmrcGUdjqbig=&Li_zzcVohlfYk=&DWGmutXgVbgsY=&CUooiTWaWsZhk=&KUuTZ6Uobnfpo=&xMMBohW_VhcWk=&Lu6Y_IWiZXbca=&CPwXuWXklYmb_=&emrlIlUVZcoYs=&zEoQjdVaZXg_b=&y5PmKLXaisrpe=&abVy2NWXqpspW=&yvnJHaYbgbqkj=&LrlBw5VqWh_hi=&3ov7CRXpqVfVs=&9aW9Q3VX_iXic=&532TrBY_Xjpm_=&yES7DhXaVrb_p=&jtt2dBXeXVk__=&e3y9SPYbcirln=&fPJGryWalgYsg=&U_q5jfXdbeonr=&T3w_roZbfWgiY=&BHP52oUbhejgi=&V6cLtjXpemmkW=&7PwfjIXXhfeVp=&DaOE32Yidcr_h=&iknRb2WgXhejU=&sYiCiOUlk_bdm=&vzLUxsXjqiamX=&Y6EzPsXirpiod=&vLYhiDZpbfnag=&L8x8qtWribcqk=&XXzVmoYrhXngZ=&PLdI2NWqWqjWX=&XNVuatWq_basq=&kld7dgWjeYohq=&a_EbTFYbqUrdf=&odK7TOWsblZdf=&8XELHmWZUq_qW=&4MHazFWoW_nlV=&7IUQbyXsjaZYp=&i6GQ5xWV_akU_=&DlRIMMZXcflUc=&oNIeoVU_XUamo=&T4u2odVqnna_e=&QMj8tmWlVjqYn=&WuoTnQYljmpek=&YsWCFCZodnWjo=&Hxkk5OU_qXnah=&a7SyVRYoelUga=&nLfYvvWqhaiZo=&UVn9TiWYoWfgf=&zb8AdIZ_hWhVr=&2G597YYfpihVi=&_GyxWVUZdVhbq=&B8AVCQZdUneUf=&U7zDsdYkaY_qs=&wdvI5QUfqrllh=&CFbpr3Xecbiap=&vY_3BVUrYd_sa=&wZ3ajEXZs_Vca=&PVO794Uprrmn_=&fyh6_xWZdUpjb=&VyikbbVpcsjnm=&amc7YlXkWgrge=&VJlVHuWYmqWXl=&xXpKAwXjUkase=&pTR2OIZmaaplg=&u2zsCMWp_sfWX=&Q9okvzUlsrkVc=&ogVgEqZp_raof=&EAGOECXmWapoZ=&rksqVtYUZeprX=&ebiXuEYnsrVaU=&sZn26LZmgbcdj=&GTnCEMZXbqqss=&o4xDRMWZhmhio=&84TQnCU_YdoiW=&aZHjnmXqVfce_=&IGjaZKYdlgfhh=&XpS93bWeopfeU=&IdLalVWsskX_o=&5TKiVdXgcVZan=&3d4wTSUrrmYkW=&tDwXosWoqfWej=&IbqVnvWdVkekh=&m8fOqmVXWfZab=&D38ntEVZbpdsq=&wzBLZMUZUcjrU=&VmQewJUVhfgVf=&G3BMBYYikfgWc=&QUi5nmVZpecqp=&KXtlrtXbYVaip=&ym8VBgUphogZf=&NF2YfeYpXirYg=&dyE_YxUXXXgim=&HebPHyWpadrYY=&NadPxBW_Wrdfh=&i5YeSHYoXcZkY=&LmSd3PZZYrnma=&zIhyWiZVijZhW=&kC8CdtXZXZYaY=&b2tsX6YhjVk_V=&gj2ze4Wqnlc_h=&yyXskPUgpUjX_=&vifCLrZqXmj_q=&64ykCaVglpik_=&GiyZA6Xeab_ef=&Q_QBnUVYiVhfn=&YSAwcDUjjrmni=&l5XihNVmrbeUq=&2jbno3Zcp_YXY=&QUEJxDYmekrof=&viqtr2YrsVZhZ=&GTKoYYYjslmbj=&sGdmzCWiojbdo=&J5NaQ6WkUands=&BnmuAKYdhj_ek=&GRnfuzXZhlWrc=&3lZm_dUhjbdqc=&W9ZlSDYppqsqU=&PdYcJFXqrUUkf=&eY_HiUXqnZljf=&w_Y7ivZkaUUnk=&UFG4VEYUfiWsb=&dyf_fjYkpbiZa=&jkEwXoUpWps_d=&6iBNsAWnofbbU=&LIoAesZ__ojce=&Ffr2bAWUaqorj=&iwcFSvZadsl_W=&_jY5nIW_ljqWh=&kd5boeWhZpbpk=&ooiDWoXbbjrkX=&aJNaqxZkmr_fZ=&YMJWWMYciqgWs=&HVeMLlZbdZjbf=&43sTWhVYnUohn=&YaD63XX_cVe_m=&D4Vf3NVporYaZ=&GfzESiUlfmecV=&MNMYWpVVoZprm=&qySR7nYcYimZ_=&VNfszKZqq_jep=&SuVk7gZrjkokV=&xA4QsNVcZnmiX=&VyQT5UXWXcUdY=&SKfwmlWWqVbkp=&4zZfmlZ_greka=&3F7jSnVokhVd_=&Niqw2tXccnrqr=&h8QYbmVZjgY_d=&IQrKRHXs_scVs=&tfl3KbUXgrZge=&O9Fxo5WdgqfWd=&ioFJ7mV__reeV=&HKYrOOUlarhsi=&W8YUWVYgjbXnr=&jJY3Q3YUcriqi=&4DVWrcZbddYWb=&6GkoTPZdnmrsU=&VLziPMXbclsrn=&QpCfLyWqVUgWr=&XyoLToWZl_csY=&wuKtGAXYrcqok=&OBHhPoXkghjsi=&dyp9HDVVobkc_=&qsp3gNUUXnYdg=&VnnFREZgWlgsk=&2MGwwoZdqWoXV=&oMtdqFVncWlda=&UcJXPjVf_inie=&6C8CVMYjWhgko=&FM4kBYXVerqfo=&ScLU9QVjgXjms=&oL5ISkUoWsbZq=&MbpOaOVrbaeYk=&7PAhGjYrcij_q=&_qOpqPVUodqgV=&eo3YJbZmnsYhi=&87mdhrXbdVZnj=&8LzEXvXgbnqij=&k2z7BqZdlqjfX=&8whkWDWesZYrW=&Z8bBsTXYWYcha=&tLLzPWVYUigkb=&Hc8npvWcWZrjX=&JBRQvfUshYoWX=&VKPktZZdX_qfV=&_e5LVeZhhafrY=&T27_FSZq_rgcs=&bbtXFDYrgjkXe=&4cN5h9UgcqslZ=&JRXG_RZopm_h_=&y4zV9gXddnak_=&PvyvWjVpoUhYa=&bjfrXeVbsisU_=&IXeldPUVk_b_n=&RoQ8eNWVWf_rh=&EvNm_DYrkahVl=&9IBNRJVUrUmil=&VnhGc_VarqlmX=&UpP2asZnnab_m=&cVbMdYWe_aZbe=&_ez8tGYbaZilV=&qXrm3SVphWYZf=&XxUBWSXkgUrhZ=&EWDRlEWq_bmjm=&GE5vvxZhkfdll=&vHsHJqWYicndZ=&J6gj_XWadVloa=&cDydNaVYWdnlg=&Bx9G7UWbeVrkq=&Xfl8kGXjbWeqc=&vOokDwZn_nacg=&ji9spcUUrgWim=&fx5j3YWnh_mhp=&KYgQs4VqWXnjk=&AiZFUtX_qVjap=&4N6WM8Vdnabpo=&n8LNUUVgWfink=&ITXKlyYapemmb=&ouziiTYZoolXg=&Zf7M22VVsW_WX=&2beM5wUfefolc=&le6mvNXlsr_Yo=&aJg7neUnfmqng=&wmVM35Zhgqpqb=&AtI37MWnXZkmh=&UhB7CHXXXkVqU=&YkSglEWqgmsbh=&VlEICqUYgZoWa=&z7i8SZWWrlc_c=&zuXLJwXrfrisf=&C_uW7PUqW_rjm=&LJd8hIVldlcoW=&_CZFNLZibhq_k=&ulrbpVYprkdVi=&26J2TmUViamZe=&hPw9dmXorVYWf=&6gQ6_FVnjdVVi=&SJA992XoiksYa=&arsAZQUjnaYih=&aFPlunVossWbX=&pGzWJ6XUWollo=&_ACdheXlcpXdg=&69kKE8VhmhUdl=&TBVploUfnhVmg=&jK5pepUqrZejj=&Wi3ExuZgbZpfV=&IJLjxeXlcbhgX=&F7lF9CZiZpVUs=&OJ8neqZdcpprp=&8w56vfUVrgWjs=&lll4xjUZXmUkd=&tJlApaW_alUdX=&PNEHgxXmqdrnp=&aZK7HbZnXcjcq=&LMttmuYiaUhkj=&gRwkf3Vh_rp_Z=&MWw6YOUklXi_q=&sm__fpYoZhpse=&_JJy5bUkfi_kf=&hge5XQXaqqjbc=&2TqDmqZfZcV_q=&du_5ssU_YrWWd=&I8EovrWbXVlZf=&AJycSGVhrVoem=&K_NvcBUYpVeke=&VI73hIYrWfogj=&JSwrBFXmmVrXf=&svDtQ3Vde_Xdc=&SpKDZ9Vpccjml=&sIBm_QVWfjaqb=&FeVGwlUaZWsVk=&B_gk29Vrmqjkc=&GQfJjoY_Whfpn=&UsF576Ujqrm_n=&Tz4CI8XgWrjki=&CF9ZvWXXjdXhi=&fv7ZJ8Xrngkmp=&4lrLMSZXYnikg=&Gv_mGbYoXWkok=&J7k_haXkoUWqg=&tgQTghWjbZapk=&7tCncHXVnlnod=&UWmEzyZVnXcYo=&jLSs8JVhWrsnV=&Q_Cs45Zmoopfb=&bHrRitYfopgas=&x_sGxGVZlVl_e=&pEFpJqUhXlsk_=&W8DE3HYihYrkk=&Zs6AxWVcpmalr=&4r5IIDWsmbaWn=&LQtrHHWYUgsXV=&Y9TXrMUfhblqi=&5Ff243WdmgVsZ=&tc2b_RYaYXsaa=&XowiGfWrXeiVW=&PagiuuZXonebg=&OLStgfYgpcZjh=&bIZGVYVgjnr_s=&vDfTZxWlXrdon=&j_Uo5JUlXqYVk=&FMFDn2Xcnbhga=&RxqG4TUnaZfmo=&ZpudSpXXWrbeZ=&PGWABDXfepccV=&H2_BiIWpj_bqd=&5bGRJ8VrXVYqr=&4haWuRXpiVkWr=&RqASCTUlmpZhd=&bqkWzjVWn_Xdc=&WGMasKV__jYgX=&d7MyFJVUibkpZ=&yCmPkbXVbVmhk=&FkyHjFWgnpebY=&mBgr2pVVeUoUn=&KvQrr5UUYcqln=&QJIOwVWakoYhU=&CaaP2DZnifV_s=&47JeOBXo_bsXj=&xX66qSViXrjhg=&qtwHATWXXhpfh=&en9REQZorr_qo=&bwCKpiYhklcVs=&g84ATHU_Wikol=&9pegbbXsbU_np=&uYUOfNWsqdZZo=&Fwyv6OXhZWfbj=&bROp3ZUrrfUcq=&6dHrd4YYbZYgh=&94ZbqRWpsmpmn=&6XaYdhWWmlfhY=&3mpmGMWgnZjfo=&GGhoq_Um_lger=&MJN7ThZkorqcZ=&fXrOA6Ycpqmjf=&cE5BPRZbrs_qf=&4ENJrCUib_Wse=&8DHFcDUYZnkas=&xJRpwHUfmpfgp=&mAq5WRVofmXsh=&hFbc8_VrUWhka=&CrvN2RXbVsfdf=&StfbkGVslqYqm=&ewrxWqUfoncXq=&JstAR6WinUlkl=&QNQefWUnljVXU=&32to8gVVYZehg=&BbORUbVW_Xjmg=&kyDFUIVflYs_g=&r3C999WqcY_sU=&kivH9jXXacaok=&8mqBQqYdklUsj=&mqEILrYUsqol_=&AqkGBUUrWfeZZ=&Wjax6gWrjiUe_=&QoHVZBZmrkaZs=&J7x6OJZfYXnmj=&4LCbCRWjaadXg=&iX2I9dZWWmYhm=&4gT6jEWfkXgrq=&MUGVftZWfirfs=&oLc5wLVYVjigs=&lb_BP3UXYYWgi=&ijk4I5Urkl_Xg=&Rfn7Z3Z_nbYcs=&Uw5lnFUacjd_Y=&IxKK9GZpksdsd=&qZBztAWbYkqXl=&RxDtzLZ_nZaqc=&Mc5KVdVkZjcaW=&aPJ2nLXkqdj_j=&AXEPfEZ_YZkcY=&6E8WJtYgUlqag=&gsaZddXWdsehp=&uhfaTUX_afokq=&9dft62UlhUVnk=&sS3fcPWUbqoYq=&FjZWpHYnndVbj=&LWHCvHZXmrYUq=&6w_YWwUdppUap=&lLoyvrVfVWmhl=&Etn5ofYXZYghf=&acK7VmVkkgpff=&FT2TCqVUqoobh=&7uLEB4XcscUoX=&Vh_2ohUjldZkV=&9cR8k6Xi_Wdic=&4xGUYqYmkeWid=&YUtLfEVdkmUoW=&8rpR_DVZsiVVU=&JXlA8VUbcileg=&K4UaZOVXdrVmk=&O8myz6ZdVheVX=&QoOGf9Zegsrks=&OiWMDDUZgsphs=&kDtar9Ydofgqs=&4TDyNMWYiXWmU=&V4ZMwxXdnqfYn=&u3xNNdVgnabkq=&O8I8ivYkVonea=&VWmDz7YXaibcW=&R56ptCUsnnkng=&NUaDsaVkVparr=&fePMtbYUU_gbe=&hzfzKvZqqXnUp=&7SCgxcUpleUko=&ESV_KBZjkiqZ_=&QItAnmXijabjn=&KHZSKvYfaXVgp=&GOm9NeVnprdpk=&2DotdIWWljUed=&V8t3WtWZejhWo=&gCZFHWXeXmnns=&jVeSmnXobfkfk=&pmhTvuXjbV_oX=&MPjmmcXgWnW_d=&WldV_HUagVYYe=&QOw2FMVbkZhiV=&WLCkd3Xsmslmh=&jR44doXpg_rbm=&xcpLdvWreZmka=&6LVBBEUYmsjnm=&SaUfkxZiecpcf=&SpNvKmWdrcYdj=&taBalPY_lkWZr=&GiEU8SUqafchm=&pWwUnmXUllaVp=&Qldga5Yodqooo=&QS24opWZpgfeX=&e5iDY_Z_fmrqV=&wDbYWhWVYl_WY=&z98TOdVsnYhak=&CsI75jVfZUWcd=&jH5xlGZrnXYpo=&K7uuVPVkY_Wae=&lSBGceV_XlYco=&ZPlHZFWhiYffY=&vZ8xwoZhg_aje=&V3s7ZSYqloZj_=&Oc38PZVejZani=&8kAnnkWkZUqYn=&Ww9cmwUohcZaj=&iHiA5tYnh_Wej=&jVc3dlWdqYbXi=&pZiyzFZnUldrY=&C43xp7WcZfjUZ=&CClb6uVgmZnml=&jBeryKU_ZiZsc=&EAOKk4UXalhgh=&I5tulHVlgUmWq=&mRAvBaYWVierq=&Cu66mzVhsknmb=&YSzNicZYaf_dk=&OCF9PIZirmsgX=&H5tsqQXZbcnql=&5YtZbQXsUXbds=&gYh87YVegndjZ=&7dUwYpWsbnnoi=&EIQignXkskYbq=&n_HBokYgVkbmo=&jBp7ycZrnWoWl=&UW5TG7XUZaqec=&AiXPlVZhqWXUU=&cTDTatZcphXaX=&U_KLBMZlZrZii=&gdA6KFXajsgeW=&itJuXdVcpXmfj=&OLPngRWgliroj=&g2bf8uZebsbss=&Nec5pOZYlWbWa=&epo5_hUYXfhfd=&MORqeRWYgfmpl=&x4ZFCeWjZflof=&wdRteoZWlgpni=&qfUboMUWjkgi_=&yu6xtuUXdanjU=&zBmiK7YYVfpis=&9gtEaKXdngpUm=&zPWZYNZ_Xriig=&d7Ts8CXrXlpqf=&HHfMgsW_hsdc_=&_XjkSBUbXXahW=&jixvbnZfUolnk=&soZwcRYYkblhU=&RLFyoPVZYe_pi=&igPT8wWeWkr_j=&fYkHR_Umgk_k_=&8pXZzUUc_ko_Y=&IK8qX4Za_iUdq=&rx92nKUXlfpps=&5YdGq7ZaplVYm=&uJ6mDXUeUoVkY=&pqHyIcVeVrimU=&hAlJUVWYrlidi=&jVN3HlYgdqhVX=&CGR3HfYWkloan=&UU4QMCXmZqsek=&glk62qZZWhhcU=&Ow77prZZpbWVU=&aIk_8NVdobslf=&w_n7ZxYWjaniY=&IPuncHYZcbbpm=&PlV76MZWVqcVY=&EZK8bVUjjXikU=&XQcUU7Zlbknrf=&GiYFXsVjolYqm=&dgJ9ltWgWfeXf=&skOsiPWfbkkZd=&Svs_8mXkkceim=&xAwLG6VfsV_ZU=&FMZcq6ZeiYVYm=&ePK2_tYcXlbnk=&RlPIAEVmnsdV_=&fhtUgVWkbrqba=&QkBySiXWrljYi=&IvoaNtYchamnc=&nL3e42XWVsnsi=&6e9_TJYrWipqq=&vcupwDWagkUqY=&TifBqoXXVqZkU=&ryiJLBWdqcfUf=&iXYLbwZVosjho=&YjvSuEUkdWpgX=&LngbjIVbshlcn=&RgSnkjZclhVsk=&QZglCAWgXVdjZ=&Xf9UCjXccmZms=&hXvH3NXmnk_hr=&PH9lxlWsccqVZ=&GXiRWdXkpVedY=&W8YKT8VrjZXqV=&zAuDl9WsVmrki=&PmaXv5XpYiqmq=&KmDLm2VUVdobi=&hScOB4Unalbhm=&dKQ7QlUcbsmaU=&9VnBkOZjXgkps=&iNZbsCYrpomqs=&A2trOnZesrsdc=&Z88DC_Wbbo_Wp=&epBwXrZpcbVWj=&Pib_rqXVca__k=&OqMv_7ZcUdnah=&Zs7GT6VYrgeZr=&83yyOVXYplgfX=&B_rAoRWrnajbo=&TTciwJVhrZboZ=&XEruw2XVWlheU=&3IpG7gWplrpag=&mA3o6ZYihXncc=&bs_sgTVkgWclZ=&tSaniRXqcrhXg=&4AuWsxUaamqsh=&ZaNJN7Wrdqfjr=&Oh2x4rUl_YZjX=&WE5ARkYhkWacj=&So6Bh8YVrhgig=&KcFNpfWpiokbf=&oZRihGXoaslsk=&_lQfakZWpmZY_=&UeHVq3Wgpbe_V=&VG3RpRWhU_Var=&E3TatrUnjUmis=&NUmeBhWVcaqXc=&ff9FEmWrhhjhh=&4FjbloWgsWrlU=&cKGnM8Xljgjql=&L_jhxBUVosbbZ=&_lgD98Wkbhlpa=&EgBXjAViWffej=&GfuucrVialdeg=&lf3ksbUXlhZii=&TgY_rWXhZrXck=&GA_59HX_dVYib=&36RkCsWYofXbi=&EjLbsvUnrWYda=&WA8y5tZUrYcor=&4nmLqiUglWcdi=&2cYNXOZZoeXeZ=&QHrRjtUsmXhgc=&uTo9XqWiWgiUj=&5mvk3uWYrgasr=&yIt7S2Wrk_Zno=&XfScm_VnUnsbj=&9ecL6yZrmUUol=&NjQm9GZVsao_Z=&M7oZtxZdogrWZ=&MCKdrRXhmkmoY=&vmV6FMVcVjXfg=&GzElcaZeoijkX=&vLbpI2Uplegqe=&YWPnJlZddfWfs=&DP8wj5U_XYWhl=&nu7wLbWeZ_rph=&bcHN7YVbUqlji=&UX8FkPZojXWWs=&K9NRZfUhmZXpp=&66ywjoWioUqfj=&FnEX4eUgXZUch=&22X7gKYpcqVlX=&EIoafeZldjajp=&_OWHJGYmhcXkZ=&KCDjXRUWqhUWm=&AL7yXKZgWXZgU=&C39aBLUfbdhqX=&xhkBKTZkqrYWZ=&ZBI2D9VgmVmXe=&XwMMnmUannqre=&34vMhKYnf_brs=&sOz8DFZfachjf=&m_55VqVnoiqYa=&zFKRVWUdUakdb=&pF5qhbXg_nsrc=&hihmEHUfrbaor=&7BPnhbZcZj_lc=&WJRbteUrVjaig=&xk5tiQXVsZc_U=&FErCQ7Ubaeeea=&rlGPNkZhi__ji=&Qts_5mWWoodVs=&2xXW7wVeaVddc=&jAcZBzYfpZiYg=&xV7R_JZjiVjfW=&XpPPIaYmWUYjm=&DWKuXXYeiW_Zl=&9lVewEZkXpVro=&dXPcIrWapYosa=&4Mx94MWhYWWgl=&eGdP_sWWaXmhn=&Zd4mvfYolVWqg=&AwMuroZpccppk=&wpDuCeXV_fsZr=&C8anhgVglfggf=&9QDesmWiUckln=&fKQjOyWZcW_Xr=&jEq9PqXcdolqY=&qTTQ9iV_arfom=&OY7GnaXjbWosr=&3Ywq2dUaZZWYZ=&otjDNzXeUVdgV=&SMnEY_VafgqiU=&8l9buzWaXXggf=&n8deDxZYirrgV=&6BP77NUZiomik=&eniXvjZVraemY=&wZcE6GXjsYfsU=&FgZtVlYZqjVsb=&A7t4XFZjlUjhU=&9w8cebYZjZsWU=&w4hCo2WUiVsmZ=&3JBFK2ZmspXXl=&xB9iC9Xmasggq=&qyjCvKWlnaiZi=&2lB54lUfhakpn=&LdhpIdXracqhh=&hJ9BpsU_VdrkY=&vEdwKPVWXgW_Y=&7mWGTrZZgphih=&C6B4gWYVs_isb=&MNQceMWYggjiV=&e_HvFNZqla_Ul=&tqgyrJYh_eUlm=&d63TbuUUkljXo=&2StYj6U_nrmdq=&YQ2yLaWmWhqsW=&WlTnoWZdZkUof=&xCnPGLXieYron=&lq3MFaXnfXris=&qePv8qZahppdp=&3lZ_VVVohclpp=&tQGbrdYcriiea=&f44o5qWhZelVe=&s7oqWtZnrdbhi=&vYFsXQYgefXWq=&xBRk97YegUehX=&gNebEwUYqXUkq=&CEi5VwWrqYob_=&Bxx9qzWs_Zlej=&LuaHrCUqhmmds=&SNfRDJUqmrsnc=&53YPuYYhi_rhn=&JZbvePXXbohgU=&QqIGZpZnpWack=&68ms3NWgUsllk=&LNTat6UpjnbnV=&iSCeuzYbWfhhc=&GlX_FJZWclWVo=&69mnhZXbamsob=&D6pDRZYUisleg=&b7NzbdXklYhbW=&ssaxYSUckhkdo=&6QAVCfZVYjUch=&MFwnqVW_iYqZp=&pcAyDWWliakqk=&xiCrREXYakYrq=&4wAq9cUUsekfd=&mhpEnRZnjbZVV=&HqjzrSWpmlebi=&QufcodUssefnh=&eixUJwWhdg_ZW=&mcMeQ3WifqZmZ=&nq6LAaUYn_sdY=&6xY4xmXrjnfos=&T3_L_SWmohpjc=&5Z4yizXgWchoW=&2UcriHVemfpmp=&V8Ds7VUUarZWX=&UNidpvU_bmZYh=&YD8AqLUUjppih=&jLqWumU_q_odg=&jNR5mMUdmrlbk=&szR7XRXUcWddq=&3BDn8oVknodUq=&YXWdyQVdq_ark=&jJk7AAUhb_WZY=&zi2SoIYVanfgo=&Jvm2eNZ_gjleU=&jEy3d4YhmWXoo=&aVrxslXYcqpiV=&eRKexkVmUsrpg=&5xcKSUUlWYsr_=&NmQtSnVpq_frk=&qs6LrCYjis_VU=&sY58dKWUimXnb=&cAvEZQUqrY_eg=&eOyXptUbaWXrd=&wvD3ChVUkYjrb=&ERe5q9UspUqfW=&RqAUA_YfleoUW=&CMC2nIZ__cd_r=&f6gDFUVmWglXi=&Ay4Pi5Xhk_ish=&zUmmNhYWkskdn=&G6wCeQWlUla_k=&GMwHUtZi_ZVko=&tjAOBiWkscUZn=&E9Os8hWffpbYr=&HXKVHdUlrhoXg=&9TcuI_ZhjsiZe=&BcAdXsWeaUjhY=&2HQCCoZoiecok=&FRNU9iZZkngib=&G_AQFkXmrfZrh=&YOBGNLVreXsVe=&BxDanDVhpbZr_=&Ub4kknXidWifb=&lpcHpuVYUWimq=&mvcWoyXjffhYd=&sjb7LMXlfXhUZ=&N2rknuUabYphY=&OWiVmEVmardlW=&F3Shs6ZZXkjYa=&YQymRbYXarcmp=&pSNUHxUibofsb=&znPHWqVrbcenf=&7pohXMZr_aUag=&xuPwSvWaXkidY=&tj3qtIVaj_Van=&LUXWB9YdkhkYo=&KfdgxbZlrWpbk=&DGwCdyZmodplb=&roAPgtWWp_rYi=&ORCME4V_Ydeaf=&W9jokxYWeZXir=&MWSRtcWsikfcm=&tIMpnwYcjZXb_=&SI9hVcYgnanVU=&wBIzZ_WYpcWYr=&C3Y4qKXVfqb_e=&PD__hBVjdXfmW=&yLtT7YVYqdbil=&pe3SKkXglor_n=&Du72BOYncmolo=&iVFacqYjrYYds=&RYtHIxXVjiiia=&xMHQokYYhYkWq=&LUFRamUfejqll=&BeOmYhWsamUkh=&cXXfCDZXbYnrW=&JARfpIWXiZgcl=&obQHiRWnjffrl=&ua5DABXmqWVUp=&KjuEu4UYqgoeX=&WIi_6nYipgYmU=&hpZeoqXdfrpja=&4ZRUjWUrrblYj=&nVOI9DWlVeekq=&gsXXQnXdqr_n_=&KyWsIsZXZr_jo=&jtyrqBZplfWho=&vK6shTUqpqfYh=&84ReaBUaY_l_o=&a8MwdoWa_pkXn=&BVwrAuXZac_km=&jpGbAoZrXUpcq=&ms4jUEZpkcopU=&OzwKmYWjaleWU=&cuiwpbYVoUWph=&nZC6SVUrYiibb=&AF7CDqYsWWmkp=&BEiROrYhZUrqr=&p5bvvGUleqVVg=&WeUzvNYae_hnm=&oNjFvDXanrndf=&rAwDLJWgosgab=&7r229tVcmcbgX=&7eR_GvZqeUghl=&t9ER2RWZbnsnV=&n9kfS8VaipeZl=&FSlD8IVnpiXbk=&alorqOVoknmsh=&LfDkgAVaoirks=&uZbbrDYonpesW=&pRz3F3UoeZmqU=&nrKsX3YbiZaga=&MR4cQpWlldlkY=&B2e7XKZraspV_=&tA9iFzWVrfnYi=&WMC7dUWsqrWkf=&ouoIlOUbgimYX=&IRDu6VUUgcrXV=&uX2MupWWffnfk=&I3TTRyXaYiiZU=&5O6vvDUlUfrnf=&qadbw6Ujesksr=&Ey63SbYqbllgW=&YHz5FsUYZUcWd=&tQcYR4VZUflsk=&tY4lNuUjparhZ=&dBp9vFWUmrZqk=&Dnp6M5WUgUiUj=&Xa6TJ3YUbflfd=&WKlOOTWascelW=&bYEY9CWridkke=&hCFMJ9XjdrUlb=&23MO98YUWkpmi=&BNvD6JZlqhdVc=&yEcpiAVqmplpm=&riIsWuWV_hkdZ=&692wRvXrcZcqe=&XeYvcWXsZggkd=&JDCmiZWiZspWa=&E4TUiNWlicXlr=&3ry2QuWWkjYfb=&o9eRIXXgYWfjq=&98yFRmUnUYfme=&H52iK7ZegkXef=&4HP_faXUVi_qZ=&aNXdg8ZfZd_hc=&YMA7TuUsZZbfg=&cSkMmYUmmhXpc=&RzNBGxXUjo_is=&Lx253HYrqnVge=&qFO8m8VXXnspX=&wa2YfhXlqdUnm=&7QH_DxWksa_jl=&hbuZ4QUcVYVgX=&dmM2mOXdcg_sn=&OoUePlYeggk_f=&B_MctXVkepYjb=&pKSs8vYbreXYp=&f2dA3dYppl__g=&6cwa7GZbmoakU=&9cTPpIUajdgjb=&YYbQUmWbgYYgl=&aNMDLHZqsfnVl=&SrZuIKVpaVcac=&3niYsWUgemcll=&N2vd3rXsisrXV=&2RwercUVrldeU=&VLtEzoWWgoaol=&7aARkGYYimmks=&rOlRoqZYWVenf=&ZN6hp3WYfpqfd=&loCZoiZfWsWlk=&tVTFZYVbhgYji=&6RjzpRYZkgnh_=&RQnYXQV_fcqm_=&ZWCnNVVncVWlj=&CdrPqaYjkd_bV=&JZpYZfWsfsrqg=&Q8fOgDXgclkaU=&sNCjegYgpefWr=&KIRY2EUs_mila=&uvub6yVkferjW=&GTnBRTXXYUVad=&SHngH2Ud_kpb_=&aeXl72ZXhUUeh=&QN2tYBYencWkW=&I2S4UeVWscfVU=&O7KFUCXipcWld=&rJS_7qXlpobaj=&PuMFY3YkeUZsm=&5TTOpbU_meZsa=&R6K4y4VsWdqsn=&jySUTAZVhoae_=&gtlkmfYial_Up=&JPadW3WmheUhe=&TIDgB2ZVealao=&2m5x9IUXVqmXq=&M45L_sWdVgVcW=&CexlLAZfWXWni=&s_ZicoYdheoe_=&HOkDNlV_VlkWc=&ivCDOzVlWVegj=&VkT2lpYfglUbp=&dhAskXVgroerX=&mYqAQPWakbmgp=&CnWKrGUfdsUqj=&TaJDWMUeoiamm=&PrWhTAUXZlhpW=&GR8zzsYcirilV=&mgnuchUZiVsdc=&MwRRGRZmmfY_a=&AlAlwaY_raims=&T4NIptZYa_pjp=&2WB_KOZafqrll=&j65af2XcfXWae=&STH2YkWYaoZmZ=&lNe3MSZmmqq_U=&CDKH4mXbeUjVW=&9myLNGWnjonhp=&HqJn_cZirpgiZ=&ZxpTdqVfirUhU=&zxY42TZfcY_Yq=&Il7SDjYogrqVe=&dnNJOnUUnUlga=&q5IzK_ZaYmank=&mZJSadWoodrXf=&GnzOAKYjqgblq=&Ef8b8NVgYbb_r=&r8tsx_XaUglVk=&ZwovsLXrkhXmc=&vIMkyEXhfoVjd=&BASSjcVllVYf_=&a33raXWrbjjid=&Dm7HTWWlnldms=&sREpP4XpYcide=&55_cTiY_gijeV=&tG4DdkUnqbV_W=&XXeVadXYknhWa=&mAMAreWeeqmdf=&he5ng_Ycdo_ig=&mgkNuiZiXbXco=&sAYFBJYepUqgd=&PRSGMzXdia_jl=&B4JRAQYnZaofW=&2vkT5PUnlr_np=&afPLEEVqjWmrh=&q2kcBEUisjnbU=&j25fXZYfcr_hZ=&Ted3HkWqsidZc=&_ff3N7XneqnZe=&YgFqgyWgkXoXk=&avZSq_VpXcmkY=&aPCWFzZUjcoXn=&SJOV3aVonUdUW=&ijUFV8ZZhkgkU=&ieMrIYUXoXlcn=&I8Uk56YojhlW_=&PfS_n_ZYkomWZ=&eno3XXWhaodhj=&mpwwnpYpW_j_s=&uqBCxkVUVolnd=&ugoKVMWkqklfg=&ynwoVUVnfZfdp=&h2QLdAWeqiro_=&EYj_mJWWXock_=&hVOkPLZeogVfs=&MTtEiyVlebqnr=&yXjde9XkekfUo=&dnyEy8VkYYXYe=&76ZHdtYfreYXV=&u5AH6SXmjlaYm=&SWGEurXgrkfmh=&AlEeSaZ_cXsnh=&ngdh4dZikhUqo=&IRnQWIUbkmY_m=&YE8o7RZsdcsgd=&upPwhJZcjfsbr=&CSUpCiZo_kejq=&iDz3uOWgdbYZW=&tFN_jHZVemmqc=&nhV7TZWkrniln=&qRpWQ7XcZeqZg=&NjuMDZWkebXUr=&L48K8iVcUgdcd=&qZDRsuYlr_ekY=&J8PrJSVmicgif=&q8KIcRYnXa_hU=&gbEmCDVqrmbpb=&SrK_WNXmZjrmd=&7z3OoKUnm_WZc=&dvy4WSU_lVpho=&6dySxrUre_eUc=&CGkIpKZ_WVrfo=&BErnDCWYdsoga=&6gSQM9Ukehabo=&MIUKJ9Ycbibcm=&rv5YrgWdhqnYX=&sIC9tHXhpXm_d=&hhDmD2WpYZg_c=&cxsfM9ZYagkck=&Ew8El6Uelajqo=&kbnYG2Y_orgcl=&V39FbkZYrgsWe=&L2Tkq7Xr_bZXX=&pBfLqTZdoZqmf=&xDwNIBVcUdhcm=&vTGcv4Uopcdni=&7HPgKAXrWeXfn=&FqjdiYZsUZVYp=&BL7psmVnasaXX=&CpRbD7Zfkaabm=&H6MRoIUsfeZeo=&2JmsCbVhesiYg=&D9uL9_XYaZhmk=&7OmO8RXgisrla=&gTuyTAXseglmV=&wciNqVZhWZqaq=&zMrjj4YcfrYbn=&dmJnS9ZmnjqkV=&5swx7rZjssWer=&V8YguTUjbedfc=&9X5wISXirXcXq=&O9RUqhUaeXZcf=&agW7CuYqdeXre=&jkA_VzUdf_hfc=&X5Wy7EVjldnhm=&VHvM2vWsUl_kf=&ITOqZUYbnpjVY=&5YmeevXXdWmmZ=&BYnLCaYqobpqY=&55qZgLXlsakml=&K92NThY_hqjol=&BSnwkPY_kp_di=&NgcK86WoadVca=&ckmbrOVreihWc=&vpMgXDYbVrW_g=&enluhVYXoYmnd=&Wy79rdUnrWhhn=&pWorrUUYUpVhX=&l3lTMyUY_jgkh=&yjopVtWseUsrU=&DF9QzhUaqegfa=&CC68cOZjZbriW=&24P2lUWVUogYr=&x_QWE3VrmVdoe=&CsVgfGXlpsrrs=&cTKLBtXYaqlnq=&DJPfXjWWcpVji=&E_N3z3Vfbdlnf=&cvnpHXXplgqgh=&t8N5vVYaledfh=&3vYDwVVegbcq_=&FIUMVvYVVcrVc=&lh4IiCUrmcYfe=&ETVSEFWZhjVi_=&EGqvWUVXYeefn=&h75oFVZablkXq=&7ZtJgJUiofWak=&7LB3MtWqgZVig=&x8cyXEVk_iUls=&dZORKmZaUmVXV=&rQ6RtGWjYkrgb=&t_78iNUYa_ebj=&ixiPbMUUfpfnm=&gjR8QGYXYksbY=&eOQmfPXcZgaef=&CUZB_AUkf_Uo_=&QL6DPqWsfbcqj=&BgQv9WZsbkkVo=&ikpy5VWrcojhk=&ywbyWTWqjehpi=&3kGdoRYViVbXr=&scOneWUWhVmge=&_B6k6bXpeeVpp=&PNkpNSUVZngo_=&m9bmbmWnfo_mj=&qVZUxFXUginZs=&opu9O2Wnaqqg_=&aSdNzzZqphjd_=&ttFXJZZqcibsj=&qaZyObVfjfole=&vgy3HgV_lWolU=&3SHJLWUYbmmhq=&KZ8cyWYWpkdpW=&xlwDj2UXVXfqs=&DsFkELWVUkcgn=&oNUaweUpkklkm=&oPFla7XisnpbU=&AXuTeBZhbhbfe=&_qEJQUXoZZbnX=&9IFx9RZVZlqqc=&3dFRwtVnbUqlZ=&zvJU8oYpqkidd=&qF2oIwY_ec_gf=&VxpP25ZjVZqfh=&uehVnqX_qaqab=&ZonZ2JXrdfoUU=&x6vbOWVWZcXpn=&wNlTJsZeZrqcW=&uhcV4JYdZqkfs=&gtncgEVborgnp=&PeWi2wVYgnldh=&goqi45YpaZkjj=&q8EVtpZXpl__h=&pDgGWyVdrUmWk=&GF8FtLUsrWing=&vnJSzCWdhmZgc=&8KlmdVXmXakUh=&5E2d5AXsVcUgb=&_WXUjxVjVWjoW=&OGRb3DXlXodXr=&fGsLsVXlZspoc=&wEbHfVVXbjhee=&QuDM5TZXphgsh=&258Eq8UbdZngm=&NtMiOPWa_hpss=&Pn8xOfXmobhhW=&gl8RLsUjWokpr=&bDsxeAZsZfhWq=&57usGAWgXijZe=&L5VdSTYXagYom=&b2jKXnVWU_Zoa=&hq2OcdZjfZfrq=&8CLjTKZqpe_jq=&mLvvq7UWeVhak=&i9DBcZYc_gdiV=&sqHyzFYaVsidU=&woXvCMXqjVimc=&VQp9dGYshbgZh=&YSiU4MY_UqVin=&2P4KDSYlqegjh=&dVayN8VeiijYl=&jsLb5kXp_XVoY=&3ynwV6WYhlhah=&If6sflXeUiapj=&RqnhRhUjf_rhm=&ne7JOhXkhmllU=&mPjj36XXZnUWV=&RAx3uMUYfUmqs=&f8l53CYrYsUrU=&Qrve2nVkWopeh=&pUVqYLXbrWVgm=&9rD3JcZZibfgU=&nuZa7AXbjmZlq=&Loil37XdaUVao=&V_LkeyYjZYYYf=&mvSANVVniqqiq=&PETR9lVcYkmYk=&PeYT_4ZskVZXa=&bt6x9jUfdnmjW=&UDxQoyUiloZZc=&zh9QGRVVjjmXV=&C5ete8ZjpbhqY=&nfIKStZcknr_n=&9cGvDOWWrppVb=&z2LVWKWoqjVal=&oEgRaEYsUfbdl=&QiQARfZod_fdd=&_qJ9vfXmYmliq=&66oonIZ_nXmbY=&EES2yhZqeXahY=&FdowmZYZbYgWU=&JrDvfVVkbcZpp=&h77DsSZeViVfd=&hj9ZHvUkqdldl=&6mOxo4WUjg_Xs=&YXv8AAZm_cmsX=&DH7qdnYiWhXfq=&IgCr6qYZZnapf=&Yz3a7hYlhWgmb=&Pa7NhcWmYs__m=&ZhOUATUabecr_=&wrq58IZnXWnkZ=&ahVeFyVdnlnij=&D7dxjvY_iskXj=&jsMt5cVaeqVZs=&eDbIDPZn_qiV_=&skrcSwVkggV_e=&L_yg_FUcmfpVo=&uRwvcgWWobkac=&XvL9KTUrhj_Yg=&pa4YNCZWmkaXW=&mF3afcXdZYdns=&GVZypHVWfceYr=&QqerIRYaWnkim=&TlwoCcVXqiYYd=&nGWclnYkXsdU_=&qhgPkyZcZZgkU=&hSHDnAWrjUlUc=&3NlVNXVXU_hZg=&KQaEHRVcoilXa=&JLYbJLXXgUdWh=&XdYBa_VogrVZU=&RoE2AzUgZ_Ysn=&s9eS2OUYqVXso=&Z9of6gVfaflWa=&cDNEs_ZoXZjoZ=&erQL6OVkmbnUl=&_dVJ8vVoqgdea=&UiC9N6ZXWcskn=&bGxc9oUbqpWXm=&V6g8imXc_bbmh=&qSpWbdWmlsfnj=&6evRMqZjalVWe=&2c_5AjXpeonZX=&SFTgwqWaqYWZo=&lxybIgXZ_bqpq=&DZVnKhZhqoWoi=&5a2xuHYlslWsg=&pN6JxhWXZXcjb=&XLPs2kYeUsoqV=&vsGIeKWlhooiU=&rX7a2MVYoqVcW=&4XkmIOZjcfsoU=&9Ad4_vUdmjnrY=&2IPtCQUojUcin=&6wzYjCWan_VWo=&sC2VmxXdgZcdY=&ByWNX7VrqVhkk=&NDYtTcYYcrYsc=&bT2cp5UcapsnZ=&apBM85VdXYqsb=&xdH3B4ZjXgmnc=&DZLc_dWdmqsmW=&Fi9tTsVefkmig=&jdUz9YUdflmjk=&4rg7jPXeobeZc=&rNAkfyZodqhiV=&kCFd4cXcrfWpW=&p5nJE7UZbXUWj=&eFlSyiYfcgqas=&mvM9MmXhZYsfq=&9EOq9lZXcYnlm=&Jf66HTUfinYqp=&jkifqVUhdYolb=&QfhNf4ZqdmrUf=&ZgewHhXadmqqk=&8clRMTYhcpeir=&Rk_qJYUpUfcYV=&bzb_w9ZjcXYb_=&IiSrSEWjVeejr=&TQ_dw_UUqWdci=&UoOMp2XgWimdl=&xSxc7hZsXao_c=&4VoPKwUrVYnmh=&OEqK4dUqYiZs_=&lpIS2sWmnWoXq=&9COvFQXknXo_c=&ZeL7ovUeVejnZ=&46ycI_Z_obhUa=&ZLD36SWhdXiZn=&jAeuZgYUYpocU=&SbEpyPYrrbk_h=&RpLAHOUdWVjjb=&7tD7K2VlZrbnk=&E49DPeXXchbfr=&7jzqhmZikpnap=&bKjWrCVsZmnsV=&TlD78QYpZpg_c=&C4awKyVk_hbfq=&K2GBr8WZXVkUm=&CjDVQZZmWfU_h=&sIyfieUVXbWcp=&gSWttBZdXlfYb=&AHrA__VWshiUr=&XC7YZgYpioagW=&QEE_k7ZscUhcZ=&hW322wXcqVheZ=&XSg4CSVkbgmpo=&qcccLwZsrbjdZ=&VYrVGAUpjVfUq=&KmY9bzV_lrqqc=&cB_uViVeYWUpj=&E9zcVCWWZXqgX=&PhbpiWZnWaZZl=&96o5ehVacjsWV=&SzqC2TUkqfbZX=&KcPf7gW_snboh=&vmWvrEVsckc_d=&mry5TTZkhsjiV=&dHtmCXWekWjie=&pbk48MUXgfpZV=&59djWsVqWqoek=&L4b3IeWikadre=&HVTLOLVUoWchi=&7UijxJVcmrUgo=&9aN39fVqYbWab=&Sie8WeXqoglmc=&OoS7MMVdoqXWm=&LMbouCYYlsf_V=&jnR7hoVhZbpZn=&CHDcCjWVrasVV=&R9zkvgWhVpsVq=&HgEQNTYmX_UWh=&pO5hODXbpqVdZ=&cuPgh2XijhrYc=&ZqS5VBZheVgUl=&BKFkX8WpffZho=&EBG2SvXUWUkeZ=&7LVQYYVjefcjf=&AYepNjXqbXri_=&nwMJxgUcXpkZd=&hFddHkZeshUY_=&RtN2UdUaUdUbW=&LEjUgaZlkXbZo=&YXOaPFZUjnpZj=&kM5PPGWgdWUea=&EcC5KcWX_Wkaq=&yJHjw8ZqZmjao=&9Opm62XYnlZbp=&LRQbB_UodVYqr=&6NFTiVWs_amfd=&rZV3FRWWmmkXX=&K2KEnCUeisqmf=&FB6nYUVYfgmmn=&TlKmf5UhWpsnj=&vTRvTjWWfnbaY=&HTHQpUXcaacso=&exQyTxVWlr_de=&V2wOeVVXmXeqX=&Bq_L7KY_oncjV=&geaO9yYefpcib=&OR8MYfXorqhUb=&EHgEPbWihdshp=&RzbgJiZUZjshf=&SVggr8Yms_YXb=&PvXvJbVlYfWik=&laQEZAYYlZnbl=&gvOvO6Zbmerns=&LtHrMKYZqfrlZ=&4JII6KVjnjaaU=&i78G8GXpjb_ri=&PbiDO3Yiaqmig=&MHB2pqUhYaVep=&TvTW8NUabdmi_=&rb3TbPXYqhbra=&lBELYlVWVUflp=&DkrZnKYglXekf=&fhmJifW_Uobsi=&8Bo7TiVppVdnk=&3QUSrIWrrrclq=&eKLCywYmklcls=&nTuTQlY_is_do=&dsbdFwYjrmUsf=&74WkiDYeYaajc=&j86hOCXrkk_ir=&BBbaJcXmjqeZc=&XRcfCwVpomeqo=&Fj9fJtYsp_YUZ=&Bb5dJfYb_bWmg=&DqrkEsZYgYehb=&evRAPHYe_ebnp=&RBiJnTYmglsYp=&yycU4YWjih_rV=&3WJ58sUVVWYcp=&5aBrJBXgmVdqs=&vsxFevW_psqXh=&MWnhGjZecVclh=&hCnXXlZmoihme=&dAWSvJWj_j__e=&sLgAznZm_nlqh=&cc69i4YcnlqXW=&ipoIUPXgrZqc_=&VpyINFXgh_lqg=&qXfPsKVWa_Yen=&7qVxftWggrnqb=&oo6tgEVih_fUo=&vCBugNWjoshaq=&IXSnZhXUll_rb=&K9VFqhXohehoj=&pmmnfbUXXfVZi=&fAnBVdWeWUoWk=&_dN6x6YsWZkpg=&7UpK2ZYZlnbfb=&IMWXU6XqXpsmk=&VIzjWvUlZgYX_=&vyyCStXseXseh=&xCdFbjVciaprV=&jmDhjIYpfpWZd=&XbeFNoUlqngZm=&Kjx4G3Wjijsjl=&fcKyWcUrkbUqa=&RNAHtJVopWnkp=&DHe39GUcokelk=&RAM5uHZhVdaed=&eOQrwiYgr_Wgb=&qMVEsyX_dbgcl=&VlK9TSUicUfYV=&BF5_UPUairU_b=&zgiXPmW__inaX=&mLg4fMZhliUsV=&JZh5wEVVibmpa=&tCAdCYWrqhglY=&jXr6T_WUXmcfm=&rbpb9VZbqprkY=&yMSi3ZV_ZXmsX=&Hde9bzVljkics=&b4WlogVZUcnhe=&FlsJKWZeqbsiU=&tHDadtWclobqY=&vt5WzQZXUVisZ=&PlJh4uZm_dfcj=&lLBtK9Vbiqsid=&lD4WUUUsWYnah=&OS7y5CWUe_ebc=&DB_ppPZXWkhbU=&hEyAapYXsZkcl=&KdFiIsZa_oidr=&jQHyp7UhoZeZl=&ffsazyWiWnfZd=&EQ7lXdWggnlUg=&_WHkAxVrmeikb=&paSftOXfnq_lW=&IJfLTXVsVfbXh=&gd7CNCWp_WUma=&SUkg7RVegqjsU=&4bHYUrZhlaYll=&W5ZlyFVdqeqjr=&BsB7S6ZWbmaYc=&w8AB5GUUlabbc=&73swy9WVlYVXh=&rThUDqV_jsXcs=&25L_wEY_gVbar=&VTQjP4WbpWrqf=&ttErlQYhZqhdn=&RsqBKEYYdgVVi=&YdZIt7WUjnhar=&WaHtwCUsZbrqa=&aWvznEZ_qmZas=&9t2n6MX_dejlr=&_wRUSlZYmYmWc=&Gcj9yPZeVaer_=&jinS4ZUfnfbnY=&kxSvE_Umsd_cq=&sIakGSZlhfqmr=&9mTMoIVWpqlbY=&QSJL_DXbrcaXU=&mjMakiZlUZnfX=&q5JuAZUgigfWc=&6rv6VqVakqrqa=&yJbHrEUmhbkcn=&9aYEHzUWeilXr=&F3cpICZjiXYsg=&tEwdTnXllWfep=&Rc3AMEUrUjUZh=&3c5QhDVsqldrh=&9Hfh_TYaYXZXe=&sR9duAWfUogXj=&Wzf2EiWeWYgmc=&_kE4r_XoilaZU=&bwNftzWnXrh_U=&RZSUJRZrdVcgZ=&dNEF_MUjabr_V=&vDvEJWZrqrlbs=&_bAM5OVlVgUmb=&aVFGBcUYe_i_e=&oZfK9HWqrearW=&k5NO9OXgrrgps=&3_eXlWYaaneaU=&HUSC6zVWnjZZX=&nB5gEEVdUodmq=&dnCSjiZnrpgZX=&MDk5dFYehhsbX=&ZjvlZjYlpejgU=&eUYFw_Umhhsdh=&35_zDVXnbehga=&5tFZUZXWsrXme=&qMIuTZYlWsepb=&runhkCXghjlaU=&2RNf5cZsZdUes=&2AuhBMWimUkVl=&CpiJfUXqiaYbq=&92JemaVgrrjhq=&w_vRAwVdmlhsl=&PhK8NiVj_VUjZ=&KUGqyWYapeYiY=&L44v_IYmk_aXm=&rZuHSBVfqXh_r=&k2jqeZUlskalW=&8lr5oTUohqpaj=&g9GCqeWdZkUZ_=&ZqTlltU_Xknpp=&juBwC2WhUaajo=&6qnUZIVdXkabm=&FzCqlEWsmlbq_=&3wdzvjXsfsUpk=&BNOFW7WkiiqUU=&6SRKnYYiYhpak=&yzaXxhVkjgcqb=&hgPzNcWkkafqm=&JPKRB_YYigaYZ=&dyLerwUkfhrgZ=&K22TCVWfog_qo=&3Lx57wWgprgmh=&ZvGIvLVebokVU=&aY7E5qWVYrsXY=&Wuf3IhXpoZiqo=&86tkIwYbYegnY=&WDWxHxVZqlhds=&3H5jc7WgpZgep=&Sv3BiEWdsZVfl=&XdhRBXZlU_XU_=&RB8finZacpnUX=&MlZ_ybUXUUccj=&oAPrMkUkmbVgh=&dyZolzXdcimpg=&3wHaZiWoYnUjh=&CYYPM9YcfaZge=&Eikw8LVjXqsog=&IboAwRUekobgY=&SeZmwkXnWkaso=&vwh9i2VjsYpVU=&IaRX_VVhijkVm=&jwxEyBYqhckfk=&S_XIZYWnefjlp=&uURKm3ZneVdXr=&jnCpx7ZbfglZa=&_v7NxxUosZkmk=&tKnWySXjio_kX=&mx6pehXbeWmdU=&QnvXkiY__rf_i=&hsAYerUVh_oVi=&3OoYecXpjqrcn=&Ly9HBSXXbrsos=&z7T_LPWhdlkbV=&a9JMxpVbrXWai=&TWhzJtZdpZXla=&z78o3NYXkdYnV=&jysLs2UksWhob=&HfysjNWiVfZUs=&2ukAe6Uaabder=&i3lvn9ZsfmYoo=&YVIXusW_slecc=&RsB34KVpojedW=&xfnZopVpYYpWV=&Pxg5bbXaaXY_V=&WTSL5eXnpsgse=&XHCAEXYspnapb=&qtgDRHWnWUaos=&hVdr5IUeUopmq=&YJhBlCWbWheUh=&_jTdHPXblWfZf=&XDE8fOUfflnfq=&l5p2tdUXWbbjk=&ejVIEbZgcdUZb=&ZlfY_ZYhoWYkc=&LbMAuCVhciXfX=&a2hQQwYmlnZUk=&zH4j97Vbapcma=&PatPmkZVnXcnV=&eNOCivYU_qrgg=&wcFgWKUpacoen=&uAdWA6UkflrWo=&Ny4tTLUfbdZlb=&fiTv6VZUWdZYf=&uqE2OwWkYmdds=&xMMZmlZaVsnrc=&ui7u3UUXarbee=&SF9olcXUXl_eq=&zepffuZbfhdeU=&8nRHSQYsqWpma=&rbiu8HVgUkmYY=&I4xLdpWpVpsns=&WA8r_QWpcbnWq=&K46kQGZjdXdUc=&ejlVObZhgmfbl=&MOHrEXVrjdsUq=&d6QkHjZchojVd=&m66BAIUWkesll=&F7KFAPWZpjpgi=&APAsyHZWYdh_i=&lwyxOvUhfgXah=&dDWLUsXUXmenh=&jlHZGaWqodhds=&zHOuKrXecimXs=&zrHOxGZkqgUjd=&fqjPNZXfadof_=&yVU__fUYfWXin=&JBnqEdWmWpUes=&6oxaRMUegjqha=&_lCHE7Zdsfg_s=&st9J3KW_amoaj=&7OFQXrUUWc__c=&TkIllBWejsVgr=&SNmDPEWjolrZY=&6P8RSXWgdkYdU=&B5SpduVWeUjik=&7SsDyyZgsnoqq=&l37VDsWosslhc=&No3kREWnnalae=&mOGadYUZYmdii=&OTHlclXUpVakY=&HVfNQ7ZmjZrnU=&DAFEYoVqmZpko=&PcHphJVgV_Vfa=&ypqvbGYYirbln=&7468PLYsVssha=&bmudZJXXalnWX=&VBLqTYYfjoWgr=&KyRJpqVdg_qi_=&tAzfBbWgqpprd=&qgZOGvXgWWhrm=&rB7hXkZUnnjkj=&ulfs3AXUYZjnn=&DsoxhaVncelng=&tZq6sJUpp_oUl=&ZPxl_FVebdcib=&vToIRzUngWfhe=&x7aLIIWjYsmhl=&sK4UYGXgZUhUX=&xvhPxBVpnhZim=&JcpjzSVcYYlqX=&Vn2ry_Ycq_paa=&xSAx98WbafWei=&zjl2zqYiWYifV=&L9hOqNVkn_ifn=&4zXxUwWfWpjee=&HuF8ylUrjqjbh=&uRd6DaYffbWkc=&iTTf3AVqdebkj=&QzYnI2WUjn_UY=&9QSGoiVpcWWUl=&uwr9bNUmYlUin=&gpUM3bVc_kirl=&dag5fTUghpbbm=&mkxpE9VepgrWo=&M4DBbpXqlmccg=&QUR4yxXgbiVnm=&audjHkWfemVqi=&AXuV28YXcipjW=&Yg_wKtWdjZUrc=&BBUh8ZXgcYdqa=&jniGiJUghUVdj=&X5KqeTVYdVbed=&sbV5d4Ukbqdf_=&ybtJ5vWckaqZe=&7wJNSLXYeacpa=&g92gEIZqYiXdX=&sMzSLOUlpnipl=&KsopOkYaeWhXi=&qaV2fRWmXnfYq=&MZIh29WslUhak=&IfOVv4Veceqjf=&MaGuaNWVeis_X=&sKWKr6VipokdU=&OWCoS7VkXU_UZ=&R9W7HdVneXVXj=&dD4oHTX_WVnha=&4DMSurVjfskps=&96NNHFZpql_kr=&DHcSlVZ__eace=&cejAnhYmiks_o=&gKH2yiVkiWWmq=&yG3wWBWp_mngW=&AXka6KZebXXch=&xDWJczYgUfjmr=&S7RpYdZj_Zjfn=&ZLcFKgZ_ilUqo=&JYJImEVrcWjdj=&UH_rEyVqVcXei=&h7KDtcWXbpdkg=&8sIZuCYdcWbbs=&S36asHZmkUlgr=&WQYQeUVeYXgfi=&yEDa6PZmUhpob=&moHD3oWscUrsc=&pZHy_HZpqdUcU=&qR_md7WqiZkhd=&Ndhq7fWrmYXpg=&hS8dCIZUpfaZa=&rXnYNXZnhVikY=&Hpm5UNWilUbok=&2CNRkfV_hslZl=&iLNCCIUVohoeh=&TzNKErXjqggep=&2vab7VZU_ijjc=&2wXxeWUrobs_m=&ALHrruYWkhkdf=&gI9ifPXqWiXjs=&qAw8AhZapocpe=&eM8LGJUrWrhaj=&GmDkiBUobpork=&3cYfToWlffoUm=&LtdT8eXsWjkpr=&wQvWCNWYUmgfY=&ascHmMVlWXefi=&Gvsh2BVaVfbho=&bAgmINXg_kbsp=&qpx9CvVgkirak=&7AQfdcUgYpkrh=&o8LEIMZkUghZU=&MLCUorZnX_ibb=&T4ggP_YgcWZsd=&Kf5VxtWZUofbk=&ciUxjEUgUjoZp=&LmbXRbWgaqVhs=&jvcyppUqWkmVU=&SJfA8uZUahpWr=&FXYmYiZXkeV_q=&2WhHhUXeqkeVd=&znK9F7UUodVmY=&eaACCaYdfaWZ_=&hLz7CXXcgodZY=&4386ssWbYscqj=&lggBICXlqkshm=&yB8JlbXVkVpjn=&VAsUqSXYaiZrj=&YSGWN_VqhVs_j=&vxupOhWVknYUn=&iklApBVemjmoq=&CxdgRPWUilXZs=&vb6O2eVXiocbY=&MkfW2MVjVqbfW=&NTl3EdXVqUapW=&lMPJXpVkc_rYe=&CF429gWjqUWoX=&NwitLSZefjbsU=&y5fhnpXpZmcbd=&9ivlKJWXX_dlo=&ADOYFZVdbcfnr=&sDGZcYZUWdXsW=&IcurxaUnZrdjq=&LFsigoZhYihZb=&jXvGXYYlekVYV=&WaP2k7VjZgrhi=&xCukVbVcqc__f=&bvFn7JWXdXaVs=&zNK6ASVlhkXbn=&LwX8LlUUjqpea=&CHsolcXfX_iXV=&yiP9AHUofrsUb=&2FjHaIYohYgk_=&vuPt8NUb_ganU=&jZSw4IXrnZqph=&bcpzTOVcgkoUW=&BZwVxPWUXrXgp=&OVxtGvZishoab=&9sCACFUakdoYd=&MqhnWNVWXmfcn=&4uMYUgUkaeWrn=&xVZd_4WllmXcX=&fC2eViYdcbVWh=&768FQ6XnoVlhe=&MKUJg7YUqXjoe=&aKdDF5ZbieefX=&5IQnoeYdYpaWY=&JaXln8Vegiblj=&hPzWKxWYbnVos=&oVpMR5VXor_Za=&F3yGv8YaWYhkd=&T698BOUcXjeeh=&fr_JKZWlUXZrp=&NByBH3WYjjanq=&wxC6hQXlWoie_=&_bcHnRUgsrWgg=&VHlwkKXnWhWcj=&oxmOvUZonW_gj=&ZSiTSwYbonZYi=&WsHzrqUmjnqeW=&XZJmRpZho_ndq=&SAGFAiZq__r_s=&pjwvUhU_mpmfl=&RagDSuZmZnsVr=&PvuYblVUajmYb=&_oZvHgWk_jV_m=&aOr6G2YYpXgme=&BHDzlMWWmsWgm=&oub67kUfchlUg=&B9dxSzVqndaYU=&2VoO4DUYUlolf=&6h84dJV_iimU_=&iBt39JYZnmXkV=&6_Dk4DVfUpZal=&N7RFcPVYagofd=&9cyw69WXVbXpj=&WrI35aUprhsfo=&8jIa6rYechqoo=&fJSTYKZkhdpYg=&dAnetOZckqZUs=&6JNMxlUkZbk_s=&SDsc8XYkmijba=&xtnxSTYbkVUgg=&j8xHRhVValXWX=&xevzB5Zrpblnj=&g4C9K5UWqnjso=&NNXhgiZfcZUXr=&VFgavvYdarUVa=&WWLR7ZVkUqVom=&ZnKvBZXdmWasY=&jYVB8SVcih_li=&iUbZxNWXflsYa=&YIkEXoXYnbqih=&vH938wZoYkrYs=&AlDTYhWojclgp=&mAvOeoXnappdj=&H8TC9yZkgWq_h=&UXTiGNUq_amak=&mp4sxnXqnhYYe=&ZDXIkoUdUgiWh=&FaojTiXhglsdk=&po5YZbWeVfWXd=&WqNuj3VbjrkXe=&25fZeqUffdZWi=&9cZ6UIZVcVrpa=&2TmmDBUnYjUiX=&_ODl2rUjUdWfe=&sJdentZhcdoia=&NKmFecZYdcWdY=&V5kW6BXsf_asW=&5tw3ruWqiohWg=&DjtchJUehnhWV=&Jms8txWW_kb_o=&RudTVOXhospZd=&6heNCYVfWqchZ=&HN7xwKWlln_Ub=&T9rQZIWffigaY=&6cCZQgYoo_Vnr=&SXApCMUjocWeo=&pnCrpOWdrlbZe=&nGPGsWZVcenZX=&J69Er6Vjec_en=&CtOLABZVdrebp=&bdFVNpZdoeUf_=&FZFA7WYsjkZlV=&GmNzNPYodYoZd=&wfplnVUe_oXcX=&jNqfWDXbihZUd=&GbYYgtVhncopj=&JH5baPXiklYYf=&awMfjhZld_WYV=&Bef7zlUYolriX=&ZSfgKwUms_j_Y=&hRx7xZUqqU_qW=&HQPDeIXomnVhe=&MUdyMWUYlhUkW=&emfxlPXVWmdck=&Y6eX6uYVpkca_=&MxDuIZWcZkZoY=&ODN4KgYlfddXV=&fLZwcTZoflUWk=&LgtrsVZmWaXoj=&yonw9HUWmZgUe=&4hf4lNZcfqsXW=&Ex4syAWeUadak=&hxjutbZ_Wh_Wq=&Qor9B9Ynfbdgj=&6tKwNvXrqgapk=&RCX4BfUXXhbnj=&gWHeUSUeYjmf_=&yF7JMGUUcUqrg=&QiYA5EXgenlrh=&ir8Mz5VokUYXU=&nFwcUzYWhVVrk=&Lj8ptaYZrYUZj=&h8yHITXsqVkoh=&CcTSOyWhVYWll=&elCPxbYdbnZpe=&kFdPPEVWaUVYn=&IqbPbCUlgfdgj=&S642ypWUYnfYX=&F4LMT4XWomfbb=&kfwy6tU_qhmXa=&VJeBg_WmZagVo=&KXCoYlZZapYmi=&4fhs8IZX_gqfc=&9mCvIDUYUWhga=&yK8nS5XhXcVXa=&wCCL3cXjmqpjo=&bUHGGYZcXdpor=&E2JY8bY_Xcpab=&c3zYNOYigjeog=&YIgWkiZrqYgdU=&C4KOv8Xnomeaa=&O3V6UmXbUreVn=&mCNe2MVhZoWXj=&ltBInvUdjqasY=&WKQnMKWWnmdUY=&q_UYcIVpcfcWc=&nbI5iaZosoadf=&FkSInPVdkdlgY=&sEeZR9Voqalhm=&pKBcJCVijoZdq=&6KCvf5ZdZgael=&wuaJanWsgdekm=&ugrTCfUbqbici=&oCqyX9Zdf_mkX=&pKvPpEVskXebk=&ERnxGwZnf_jko=&7PKtNOXZjXlop=&53yYNoWUkhrfh=&ZuNuJDYqjpZga=&2dPS5ZVdqmnaq=&5VHZVJValYqck=&xkgzQcWVbjqai=&F2QAoYWogfUac=&xUaQRcUfmqdqZ=&aK9A93VhgYYiZ=&qBrHGyVkaflde=&dNbGC_VYYglZd=&iIAdwPVVbabWj=&h8jQk5YXasqrm=&JdrkYaWnlgZUb=&RnPc6yXknbXfa=&OUrIDfYh_YYZc=&iex3zjYYbcmUj=&BpcV7CVcrksic=&eMlkX9WVXkcUf=&Qb3w8kVm_ar_h=&nrtVNjZplmZZs=&ChwfK2UYc_ofl=&atAyWHZajiUls=&fVgj5aUgWrsob=&TLeu5SWgof_W_=&ofGPXQY_lXZkV=&Xbg_9hZedaVjg=&85Xy3ZVnqZemh=&6t32pBYsddhid=&ZS2JdXZkfZWYf=&2oXtgpYhVlqaq=&X_Pt64Vsajqme=&MZDNrDXprg_pa=&pwmBdiUXknfje=&ZO7uphYcXacsh=&OOrwl4VlabYbg=&n9gMuqXYpiaqq=&2bzsIDXhsUflV=&uaAhWUYo_lWne=&bEdjc3UhWhscg=&MYn6IAV_VjsZj=&ddrHufWdXpYiV=&wEMCeMWYpkmVl=&qIxd5aUdXmYod=&uEofo3Y_Z_mWZ=&xD62erZcdUUbV=&J5scTeVfabVde=&Rt3WrnXUbosfY=&stduxVYqZnUfg=&wNqbNsWjfXajU=&xvbnURYsrgeep=&Re8MbWVdZZZnY=&qU7XD9WgrqjVo=&Ekp8fXYloldpV=&P5yRXUXXYWnrW=&9Bvm9eZbYkmUh=&EpAAcuWirbklZ=&5WfnkUZ___ahZ=&KwR8eGYiXqYfd=&EXX4gIYWUYVcZ=&xPmZ4hZWYklVl=&XRDxNOZ_sYmqX=&hd6GnvZnVhbfY=&Nam9rqWpfjlen=&achmIQYXsacgZ=&KsxzSrYkacYec=&ceNEEQWgkcWXh=&TJt9YDVlrWWnr=&oDwD3pVceliko=&cZz_owXdaZnYn=&faeiIlYZXViYk=&HRrGjsZloocrc=&sIKNuWVqZciYi=&_phCYvUgebYf_=&knfTiKZbrmqcb=&_j8z3vXgrhVZs=&E27bJ4Wpgfheq=&MKxEdRYs_bnsU=&BfPhTYXikhfgj=&QpLh7XYpfsgUh=&Pq6qkXYoacYVX=&ckexzCVbolWbr=&OczXQEWWbifVW=&z3FvOqXefYbil=&AUJU4_YbsiaWY=&mCk6uDUmlWkkm=&sAeW2SVjnlZdW=&LZgvRdXjUmloV=&5C8_CGWsnndal=&PfYXkCVkXsZol=&ThcjgPWsbshsV=&d3UGZXUgrcVag=&tRqAHlUZgkmiq=&JjmMsjZrcobre=&syAh4QUZlUqop=&NvNrgwWhVVhed=&_OLe72VZYeZcW=&CA6dvmU_dkefo=&yqXc2TYrfmkrf=&ovlvUhZVYarZj=&scuxLXWZWYg_V=&DS6vB_Zpnfsjk=&vHVpHEUlXYV_d=&3i5XPWXgcajjg=&k64OG8ZYbnqcn=&W6XKXtVobWrei=&u9OpUSVqibqcc=&apgnHYWVakmro=&Xrt7xAWr_gdlk=&hkPtaiXejXYjU=&dF7GbaXclmlbm=&myfgYkUadkokh=&_ZqjxnXVUVkph=&zqheGhWprZkmr=&ZlMtIyY_gWXcd=&6tE6aOUlbdc_l=&UCt8akZeWdedm=&r9vVimZkssVmm=&JIzKBMXca_gcZ=&IwdDCiXoq_Yoi=&r3lfDQXaqrkbc=&HeEMpJZrgVjsi=&JW8IYAUimnVfe=&MgA8MgVoXnUWV=&BPCe8FXkcUVfm=&zxhF_rYpriYlj=&ZywmL_WlilppZ=&Z7TbzTVXcVWZW=&rTbOZdUXsjXcX=&2RAXInUeZaWi_=&H3NNMiVYapsjj=&feI2k_UboneZW=&WTtQbiUj_qmj_=&BsFrHfVeacobY=&NEqUWzVnniWma=&4WMAqGXdZcgod=&4OL8ziUg_mpoo=&IZb4bJXeVqVcZ=&otoNmtXidXfei=&37OLs4Wbqbsaf=&_DCRYzUY_ZWVm=&Bp56FbVgcjcqk=&JIHIUBZhjfXkd=&NyagPwVVelUUY=&MIg5r_YZYVqqo=&vLIYiWUgpUXr_=&BD_XAjWWbsmpr=&4eYQdHZjdYkjk=&R6TeOlYqbZqep=&wohMxSWanYfcd=&scBnDQZbpYeVe=&z3Ke8CYsj_ZlY=&WTxvluYXZdsrf=&bU_NnkUonbZhU=&n3gMbtWssYUcg=&roabkKYikarnZ=&xBIICLVcbihkd=&MUoNxNWUYjV_o=&F6RJQnZgYqrhZ=&hgNbSBZbkmlic=&ZP8sLUXlhWoks=&Wm_ixTW_afZV_=&N9xZ6wZrVgkio=&HK5bCoVgWoniZ=&lTjVYzYebbnan=&FMezS2Xof_rbU=&5iAF7JYUioXXh=&B6qLWDWceghkg=&DLnYHbYVqkeaZ=&v9b_IlWYc_siq=&d45y8MZfimgWc=&OUMoWIYkgedYY=&kuXHp8UmlgpVU=&8ZjFluWabZUjX=&lzKVD_YfbXUhd=&k85EtiUWieWre=&ae8HK7Vsbbrbg=&Z3EaNTWcmXegn=&JxR7CTVXsepmo=&iNS4tKZiWdqpr=&SX76BwYWjaead=&lqI39_ZeqUXoU=&cc7x9VZreUZqW=&erCsNgXYVUZnd=&n5GUSdXchWYVW=&Uhxur5Wjpacq_=&Upf3cVZYlUVX_=&8HbajaUrpnnUb=&QrvtcdXcneVdj=&Az29WxU_dfXiX=&fb8gjuUkVmlUf=&xs4ceMUibdjnf=&tUDxepVVgikar=&ClOqNSWiaVY_W=&EbmnNqZrXehld=&Udz_UFVsWkZsi=&HUJheiYUfYYnm=&BVALxGZdbYpYr=&23Dv8UXZidlXs=&fuqeEGWWYeZXi=&UIx32hYWdUoih=&jUEHbaWnWspoY=&r2zCPBUh_Zqrd=&tQRYwXUbeejfh=&H9wEcjXYfXb_p=&ErVGeqYql_efp=&kcY_iXVZqWes_=&PvlbgmWjXldrq=&XT3p7bUonYbfg=&ZidQPxVlVj_aj=&Jbc7W2ZqVYZUV=&xYtE2wXrdcpVp=&cpQUMnXoWcWsk=&OFxayWVrnWnYh=&kDNG9LZfVcqjq=&pqTbAKXZXl_bl=&V3dPW6VpkmrkW=&bXtJ64WYcbklf=&64YTUGUWbn_sg=&bMGJqtXpnkgXq=&2UMnhDZdUpfUn=&ZtrdrIUicVWiV=&_rzE_4YmomnWh=&iQnNL5XZehpVV=&xKLIjmVdaYbrc=&e24OaEWXrfjXi=&HwF_G3UVeg_m_=&qW4fbmVpanlaY=&AcQm7cUmm_mWX=&3p7uEmUisrikr=&P5mSMYWUVmraU=&Ww3sEHXWieopY=&vQyJgjXsVfhgs=&qP8g6HXrcdp_d=&rGfPEGU_Ucq_a=&sItvaUXlUjYVl=&jnd3XbVWhlnWe=&SthJXoYcehZqX=&9RODKzWbXZood=&bXRpfZXfepWVZ=&KVXk8KZsaZpjW=&Fco8hRUkoaWVq=&gbTZ6NV_hkYhn=&CYkmmkYhpXUXj=&eEIhu2YcllWcl=&zIjytkV_Vbsn_=&8jfYVFYrjVZmg=&LxdNAMYgnUYaY=&C8Vci9VdqrYhj=&XEdzDsUmWblsV=&jDgFNTUaemoec=&U644tgZlfkZZe=&HflweFWWrmrcp=&UMBxhjZnWnooU=&VnHCdUUsVkZ_V=&iFNnI5XpXrWig=&GuDa6xZ_ggjWY=&OaefryZcionj_=&6hMB6HUlifoog=&GEt5toVkpqkpo=&iKjURaUlZnpfW=&Ndr4u3XniXYVr=&4YyQpKXikaWmo=&7hhSzRYYomaep=&EcICFJXVU_ekd=&JaZRw2ZlUeYbo=&xcsalvZlqof_f=&xyqGcaVYogknm=&yGfkppZspeUbh=&24TIH5YlZfZgj=&_elBx5WbdnaX_=&Z8ag4RVWXmbo_=&hbYSh2WeY_oro=&9573e8V_bamii=&t6VzFcUUXoloW=&T3_QK5WkjbUam=&o6QKZqUkpgrYf=&TfgTKSVianajj=&XcSBVsUlog_ab=&TjCjspZrrdW_f=&gwn6xgWcYhnq_=&Qc2OAOZsrjkYV=&WLRzWhXqfXbn_=&pdILf2ZfjgiXU=&OLRI4OWXgZUW_=&wtcZQaXikUkUc=&3wXGNiZV_qZZV=&F4u96JVfobobV=&GRhLMeXXorYkV=&b4xcHeUZXoYri=&sndWHwVXklnUa=&MOsHrAXggUrcn=&_ygjQ3UZrabWb=&sz7cEgXsadZl_=&8C2_56VfUbn_a=&5dSP7VUdWVrij=&ecqkVjUgsnVYV=&Or9AmbXhVrhXV=&sDNXAdUconr_r=&7uMTHDYYfflZi=&B5UXXvWbrlmsY=&gUXYuwZikmWhm=&DdUhhDYlkjlUd=&wOZSd9UVjWkad=&L8U4NRYXmpnVs=&irmtpNYmhddfZ=&KJYq5yVlYoZjq=&fuC9XJYgWieYe=&4LPk2WZqfspdj=&LxGZJhUrpcscW=&Su3PLaXUjVfar=&qJ6oMRZfXbVfW=&NRZSNeYpZVfd_=&TRwzaYUsVZqmq=&Il5RccYpZXbkX=&ODKBBfYmXlUjg=&z9aUUHWaln_lY=&7sS58LUYbZqqh=&kofLoVXnl_UVU=&WT2yW4VYbkrmb=&UwBSS2ZclUgqh=&fHvw5pVfmkrUi=&gdxDSmY_iehsj=&qoCcMsWgZfppZ=&c5QyoiWijkjYp=&RB5HPZUadrcsq=&r967ArUhaaqWl=&OecM93WZXfadh=&mMVDbZXoagZil=&UxkfmBWmVqXhn=&uFweS7XiqUcWf=&wyYRNrY_fpljg=&A4zOHYWlhohrY=&hz6kWKYh_sYon=&eCuQqAWlliZlh=&b9ONoKXempUoV=&39XFMfXZc_qk_=&AsKWeMWZqngZs=&D6HAflZZijpc_=&O8UE4mYefkeWo=&TcjXLkWisfndq=&QrIw5vVlrsVkV=&LzDbBBVcbsjhb=&FxUQs_UjYoVmV=&ybKhxwWeUr_mX=&U59f_DYilZkXW=&yKPHYnWYnesnm=&nDJepUWhjbZZY=&2yaH9BXbrkjfp=&xZAu__VfZfVZp=&tM87auXhiVcii=&we97p8Xcjlfrg=&9cpXeJUhfspmn=&89AyIMUncWl_W=&zJugDoZmqYWXc=&hlUgxbXciqlno=&A7WTsRYo_jfsZ=&M6arWDVcqhYco=&ZrTz9QWUjbdqs=&9rqsCXViiZoed=&ijOUMcYphjgdm=&zwxkNUZVfV_ig=&RsId4JYj_eUXf=&JPMU8CYlmnYsa=&HpwQIkZmonfU_=&2r2lN5Yqoosss=&I65J9HWhomjqa=&cJssmoWpZYbf_=&kqye53WsnfjaU=&oVuJCcZo_eq__=&Wn3FeaUnji_kd=&mW55_KYUUUgqV=&VmZiTYZefamsq=&YEg7ybXUXkgZb=&MGy8taWspdrmk=&Jan4bDZVViUpc=&7fhqvVYlnYmcf=&qOzylAYX_XqVi=&CRyZrNYsagjWs=&mH_9nvY_d_sch=&g3PXBIYogngjU=&BgsxLoXqdWjgp=&kq4HgEZhYahff=&v_KUC8Xobardj=&dA2SgiUpfZZVe=&SnX3veUZsqcYX=&ulANWQZ_m_Xpg=&zIWChTZddeUh_=&EvnfLUUrnUolm=&9VclppZoVcgoj=&Ncm2JsWlmgels=&63zf2PVb_eeYg=&ETaTM4XkbkYgm=&PWgsCNWqYhZoV=&DlbdAsWdbqppr=&vBILMZYUi_hWW=&Tw_lvbWomapse=&JgAM2eWnp_Znp=&QhHRxTWiZjWoq=&xVu54lY_ldqqn=&LWBFCrZkWfYrq=&NVYtigWfcmndj=&87A5K4Udjhhhc=&rEP7JIU_imcjh=&KoXEiEXpZnphk=&TjAJH8WjskdXh=&lwDeGPUircspq=&olbRhxUWVcqXm=&IwPXydUdWZkUW=&JYXVKhVijmngs=&OkPMJ9ZUgdcsj=&RBcUKAYiifcVr=&ZKk3yFVlZYeo_=&HgLeCHZZjsfWq=&8zsn5wZirUcnV=&DxEAnIVrZhrda=&7FMyckWaqrWeV=&RWYdf5U_Xb_lZ=&8rVOgvVd_lgiY=&cNvKF6WsbenZU=&Xb7LroVhkrUlf=&6fxJ5jVkfmjUX=&YgXjNVWWeieij=&c3_2eFZpYl_pX=&FAcaeJYqUXrgh=&LtFLM8UUVpXUj=&6axRk5Z_kXbYr=&tyYiGBV_aqpna=&VgB2T_Vgkiogm=&rvM6iRX_jrVaj=&nKs_QKVWnfbma=&zGX76AXfYhkjm=&5YKjzvW_iZgkV=&h6FqSxUXjYiYZ=&MGxAUgZcoZWWc=&hOYFVQVicUfiq=&eBAdcWY_cWpg_=&l3hxYqVbnepmi=&vwVb3NWrkasnn=&QIWbYHVdiXkqo=&D7jIKBVdokUg_=&ZOV6m4YWqmdmY=&DnLqAgXcaWmlo=&hAeZCaZojlqgs=&Wa96bBXZfYWji=&2kkMHtWldWXZk=&9N_lTRUmfrbfb=&53pp_VYofgVVf=&bIyZx5UbVZlgk=&rasHLRYWXYdfe=&nhilR4WdmoZUc=&dosZRuWrcbmpl=&WkdT3hWeYfd_i=&nnd9pTWirXnb_=&bMeLYaZXmWbhb=&ZTwTszYn_siWo=&n9efpkVae_UfW=&_waMT3Welp_Xh=&lMn6SgWhXhhjZ=&Rup9wCVbZYWY_=&QMin_gVVdVYYU=&8gCjINWfmbYoo=&3xMaMLYfrqZqU=&7aIfuEUirnYW_=&ddTLnQXdZhajX=&oyq_3iV_bcilU=&lgXqFhVnilVbW=&ZxfMNNXjiiUZV=&ar34czYcjbjsn=&_OBqLYWskqkZW=&psAVzUUXlo_Ym=&45szwHVm_VWkU=&Yxg9WlXrUolfn=&FfQPEWYXhbZWa=&7UMQEqZgogojh=&e39UEtYcZndUb=&nHMCw8YVgkqkf=&IjDE_kXrpffXj=&ozYT35Xp_bgi_=&xL8_a5YYYnjsg=&ZDsD_DWkrirfY=&FLmndEU_aeXph=&ZloXtWXfU_jqW=&W_3ls_ZYhYpgn=&BPwQweWhfeVcm=&3JLyIZXXi_fon=&gLPlULYfqpjZn=&ykFcuiVjXclaq=&HOLV7IXYgZmdh=&_7PDP7Wsisrmn=&WcXCTNVrWsWeq=&ZHf8C7YgdhjZp=&4yypA2WnUsgdY=&ddYm9BUdoWcnY=&tksAwmWaap_ap=&R58DRCXdYcXbZ=&fIPKoTUlUaqds=&MR2j8aXUZanVl=&r6OpDPViqiaaV=&PCYc48VXWkqbb=&rvjh3wVnUpchX=&KnEb7fXldYqYZ=&PRaX9HZrmssbo=&GYnhFYZffhajp=&zxKVH6V_qkUWV=&SDZu3AWljfgfd=&ffwaP3YggW_gm=&boJ6b7Wkfkrp_=&rhIrcvZWheWbq=&DNLNzwWliljeV=&72_2YvXbiqhYh=&A29xHRZfosUZi=&6MTRseWfrsdZg=&AQ3BesZWrnmeX=&8lF2mlZWioZbd=&JLAE_GZe_Vnso=&ziGxCyVfYolgq=&mcF2fgYrmkiWb=&rayZvyUXg_Uob=&uMO7ZCXmmlkdp=&pdUMp_Umooodb=&qzvDRTXpsdqnY=&XTlJOdWmcgism=&BKOzURZsbajpi=&GAAnDAZpabfiX=&danj9YWcleZdb=&o5awsOVUWrfek=&dSKBuUVglkWpi=&m_ItYIUgbjcec=&RwcChWXskjfkm=&oaodiXUVpiooj=&wsbmIvVjiYWni=&V2dgNNYgZfgs_=&R5PjMwVbar_ih=&QjcTVqXosa_rW=&TlRvCIXUclmaV=&s_l3ZIXUclsap=&kwZEznZ_XmWW_=&4oiQmnYejoX_V=&uuf26zWcalphY=&aZIKMNWanUfWX=&TKGezAXVUmpjf=&aTbA9dVhghcqX=&6ODS6eZgXXdlf=&rUUaxkUmoUrmU=&yrgwe9Wqbrp_p=&Rb9JJqYs_hhli=&UK_BJIX___kcq=&kKMYseWqnZo_n=&ham7sZZU_edrs=&tpOxzCZ_onrrl=&fhaiRFZkgVkfs=&PjtlvtZlkeidq=&EQRSolZbbaYZl=&zwMrphYjlopnf=&yz9MVTYdUXdqh=&AVGtakZbZaUnn=&ZVlBTgUoVmWqj=&KSG9HVZm__r_b=&iDRpf_XnXZjnh=&SiSsahYjmfjcZ=&yQaL9jXcgcncj=&GDRTlMUVpWggb=&BIC_FEYobnqXe=&b5fW6CUjobjqZ=&CylYKQXgagpiq=&tGAzpdYjrknqg=&RMnoDsZlhkfXl=&89WOCOUfaXhji=&5A7PT7ZqYeiWs=&WBHhqMUUYhmps=&qZVbBZWnjaaaU=&tVTbm6XleYird=&I69GAzZgsUjeX=&OtADfjYkplhWc=&qw7AUzVZgclor=&v3dVvbZVfUfmg=&7kbRSVZjgoiZj=&aztef7Wlhedad=&M6h4r2ZYjhbis=&hsu9P5Zpjkcgi=&ERyK4jYrreXps=&CoYwJnV_jsaXq=&S9bX_eYUgbjZc=&LihcjzUYigYbm=&Wnr8giW_irjbb=&CGIAEjYVYodU_=&Qv7DvNYjVrosU=&RYQtpPXXjcrhs=&C5QVmWVWrUlZm=&ZGZr3OUjZXVXp=&EOk_MUVVbdZmU=&NQjeNBXiimdqn=&DW8HGoWY_dgZ_=&2WKLRLUocUmVo=&eLyh4vYXeachr=&PBMz8sUYjji_n=&ses6O2VUp_krg=&BZeHm3VoZ_ldq=&p9NqteWVmbsnf=&esHBkvWnhbiZo=&94x7ApXqhapch=&m_Rx8XUcgeWjq=&Xiw_ZdUih_WfW=&SUrXtBXdbqfin=&JnfWlTWsrmmhi=&VsUMQ7Ughklpn=&y7oxDaXYfhWis=&QW_Q_JUnqsVpr=&CjdIHfVgfgngo=&msfgULZgrhhWj=&o8Cd2IXlfVkYm=&9jxCBbYVmscbX=&MNaqIoUrnslsZ=&IUzzu6Zrql_oj=&xWXq4EVcokboY=&QINEYBXZUZqYa=&ZCEYmsZclUkae=&jNRSi6ZcZVUso=&eYnAHLWfnciff=&MNLdnUYeosfbf=&qHUeQBY__pinn=&JT_Rz8Wafieeb=&GIcrkdWpVmebq=&OtzquSWfkjaef=&zGjJ5tYqofceW=&PRXMh5WZmqsrd=&ULcwNIWYXUdql=&2_ZZg7VUieXVp=&TXG5EiWbjmlVh=&gUjOK3Umbirln=&DI2SebXiaqXY_=&bdwjTQXZomZZl=&W2CCwZYgVgdsf=&u64JExXaohfVV=&dQfyWeUbXXjhs=&xmzs7zXcgodic=&FPeq95UiamZm_=&5AO56BYelZapa=&K5dp2xX_mnWpW=&hXeOrNWbnoksd=&D3JGuFYojigin=&9wvrv3XccmUhY=&WsxPW9X_Uikrr=&nvsttjZVgjhXh=&F5RvD9VXrgrel=&KsliQhVqV_Vfj=&UG6GUlVdhgbcb=&vcjxZ_Z_ZWhaU=&bEGKsxVdeaqYX=&LTWuJ2Zbbmahb=&aZ6VHTWdWbrlq=&nXinTQUmleYXV=&pX7Z8fUmaedjU=&ULe4dZWlmbUgr=&SpolQGXrUksho=&jSvEm2XamVcag=&LnIehzZhYWm_h=&UhUv8zWjZcoUr=&wmECDpXqVmccj=&64o2RCYrpbdYl=&MwTKCZXmndnap=&L9ueYsX_geWXW=&YF6nkPYqncsig=&9bDHiJXabmrlV=&TH6yyXXjorb_b=&d72BgYUrnnkhi=&F6wLovZ_kdkf_=&m6t4EZUdaVnWe=&h_MHyzUXljich=&laWAe4UbcdXca=&w2hqPsUmYgmic=&9VVi8gXcbUqek=&kFoNKNYkgZnYg=&BuzewnYgdimdY=&SsBdfBVqbeZfb=&tmi4UMVhXZZWg=&P9PdVvYhkYdYi=&X57j9OZYYno_d=&m74sXoXYqrYjm=&jrWsgxYknVXgX=&ZZLGivXXkXeis=&obuSB6UcpYcfY=&Lr3yPIWgZZnkl=&yuGCzXUUeZWbp=&bf_744WemdeUk=&2MBVV6Xlqmsgm=&siU52fZlfpphX=&2xxF87VefmgVr=&BQNjZKYXdcfgU=&ujbBTpWnZqWkm=&rrHhxgXomUaho=&HCgWqsXcnghor=&KBq_bgZYXWefc=&lvPtzBUWsjoe_=&V3FmlUWVmVYmc=&cosXZrUZWbbqb=&_iD3SsZrpUmad=&Rq6X__Udklfch=&vBbXIUZkmpapk=&8e9B8XVlqZY_U=&jvBYSqVcsbYlj=&P3m3FYZYgbfhr=&9k3dUAYVcgZgW=&uq6AjFVVflcll=&GfB5fkUormafk=&HfuvOYUpjjcUp=&G_563gZgiednZ=&cfULF3VjjcUqj=&9QQUvDZfshVsb=&zlqtvsWdfheWm=&DRwL94UpcjXoq=&RQtOWtXbUheYb=&8gjtkzXjWZUac=&OjQvrDXejdrXY=&Oo7rpcUcoicYf=&Z7dzWfYm_gslq=&dE5kB8XeaXpfa=&z85UN2Z_YefZa=&QZEyu4ZqWYpVU=&lUXFfUUhYmrXm=&z3t4EPUimhceo=&MKYi2nVca_ims=&MkCKIyYkq_qdc=&_frn9sVfqgagc=&GshU2_Uijecbn=&XBt3wNZipnlXs=&gvryduZjqVcWj=&txunPyXcqYlbi=&h4jCTmYcrfonU=&LtfeM7YemVYoV=&JMzb_SWUh_kil=&OwwDWyUaaagnd=&gzmkKQWUWaifV=&MshID_WmWZssU=&kNdbpcUcnpn_o=&KUY2I6Xhlsenj=&Z93P4GVkbjhmk=&i6wMguWnWpVns=&jrKWkqZnXhmoZ=&V_I2omZk_koia=&3CmXrnVaddZUW=&jIGUekWmhjl_X=&P9Irq3Zprbd_o=&wpe4rjZomXk_n=&6JL3yZYWrngir=&CmhhxBUjUheeV=&RANR2HXbcoYjj=&iLw7gwUdZfnsm=&TUyLivWYZkimr=&XccwnGZrpesiU=&ii3lRkVYbqfld=&paXgwTUedrXda=&JWbY6dWcksbYW=&5HShd7Wjdgnkh=&5tctLvXrUkpaU=&mk2p7rUVjUWoU=&ZakjUsXpsWdVl=&MGgwejYornheX=&WYfduOWieXVor=&LGIaqNXnlcjan=&o3fdqQYVebqch=&iu3nHhYkbpVWb=&sHeAIPYslk_s_=&DOpaXqWpnVZsi=&rOSRfvXmib_sh=&kPzlibUmXifVc=&qlotBJXrprXhn=&iVcTEEXgXUfec=&9vhOAzZjUdqpU=&RmiarcVjWkiXU=&3zBgwOUWafgZX=&F_XoX3UVnUXsh=&YOrGz3ZfWWb_g=&94Qa_WUpkbflU=&g9g4pPVefcjpk=&9tgTXhUYVZoWb=&3QCkZeXcmXqeU=&tNRCZWVn_Ylfn=&x4ehLeWascrWq=&VdxfJGYchi_ba=&keQ2NgVghYqnm=&R2uEojXifaVni=&us_Ex_VZYierf=&bdLvIrZmij_mq=&MsLnkcViZciUb=&2AyWsmUadWkqf=&Yd9MXmUcnscca=&lYVBU7YpVqpZq=&Vnn8kLZmVhdki=&kdymP6WeXVZhg=&GZdxBQZrkjYgU=&sH5ki2WchdXfd=&2QScizXkapXUY=&IfeQmpUljZjnq=&BIQr8eYXrqkhj=&wSkP8XXkgehrV=&wieYWIUjd_ViU=&7j5Q62Xfkqfna=&zkUKIDUbgfghi=&a5NtmSUWb_gfX=&9CazCqZsmjqgW=&DcJXKoUYZhekc=&s4KDpAVpiiXX_=&eGbhRiV_hlgba=&W6GNkPUVjjY_l=&n5IDHdZfWrdje=&nPYHeFWofcXgp=&h3rGChVlZhipj=&gJ7Ib9UgoqVnr=&h3RPT4XWqWlZV=&BIEwoJZhcXm_c=&_KY_tkU_VUlgg=&4DK7YcWgapU_i=&ubKLLJXbahloZ=&m7VxzlXVoalso=&7b86jpXddfai_=&ZRM_S9Y_aaUoj=&giRCIrWkpXZVn=&UqJoi2ZmlkbYm=&O7CoSCWYrieWi=&Dgs4GRWamkqcc=&YvyJgyXXWbYfr=&nLZTnVYjsVqZW=&PqiWtpZmqkadU=&7NKmRaXlfWrla=&TlqNyTYrhrZqd=&7KXSuTZbXofpq=&LsyJq9YrYVfcm=&pFh4XFYbhdmik=&HBS3alYWZhhVY=&Q7syLqWcjpj_r=&o38APHXiYhqdr=&6SYYJaZdXkfrW=&vUF6O2U_iY_kr=&raAGEyUdiY_VY=&pVgzrAZllU_ca=&iJstuUYjVlWeq=&HCWYD6YdjrZUW=&CuXeJkZZscdms=&YGGcM7UfhZYWo=&3ethUFYhaoorq=&8ettqiWWYbaah=&BFcZH6ZkZUdhs=&tdRO23UZkbsfW=&qjALjrVrnl_no=&vc5v3hXkglZ_Z=&7dSXJzYmhpnpZ=&G4AE96WklpVeo=&qfJoaOVdXeZ_b=&j4W2zfUnZXXoY=&wtmVhwWch_jgo=&nOfYc3Xancamh=&OpfdkBVnpZYkd=&llBetVZdcUcVn=&vWZ5w7ZdgfUdn=&Ga8uQuZjppmld=&algbOzWi_pgZa=&NhhjuHWXbcpid=&tDuF9TXnUfqlX=&FIXSizXfa_ebr=&eblwXtVqi_gks=&SshGLxUfY_gUj=&T9gtVJWYWaXrf=&vGEuLNVgksskn=&NHkuCcUlnaqaX=&jEAyoVWkiVejZ=&NTlr9iWXbpjni=&HLxXeHYomalYX=&9PsmLCZsgrged=&XrlzW3ZbYehU_=&lqp4azVop_je_=&3Ii9v8Wrsbkno=&96W54XZbWYism=&Sgk_WzXXpXqea=&hLyW_HZUnsmsk=&NIsHFVYhZs_or=&Sn6ZTXWkrXlcn=&KqI_uWVrXsqki=&fKc3LXWoohnZX=&SzfWUPXrjbpgV=&bVDJqnXcZilcb=&zTxcpIYaWXXgp=&Vhrc5EZcgZcsY=&tRn2cUXnjn__h=&2ydNhSZbejpUh=&HhOAkSUWniV_Z=&7J2L6BXdekpdY=&ohAHT6ZsZscYd=&_khydzXhgdkgV=&rDB8sMYcWo_ZY=&KiD6ZiUVVZdYs=&kHmrxVWUmcZsg=&_YbBHCXoqbidr=&pChnlXXlXYZhb=&b4bXdjUaXdmZm=&AbWaVgWmpcqXf=&mmR3CtXnVXgnk=&5RS2uYUjbmnVb=&fZjuzOUdVWXgm=&jKYpwTUqkqpYZ=&CXUo3wWpmlX_l=&rgyJzMXYaVhde=&pBKILjZoXdXYj=&VY7YoaW_nUaXW=&jhpFw6UrZoXX_=&BDZyFKWfiVoan=&QdwB29UcjgpXr=&9a2DG_UqahUUo=&C6yMlNXhicmrr=&NzWYF9VdpZXfa=&bF9TuNXco_rgb=&NiGNh_WdZsZrq=&TFSFo_WmeZpeo=&5rQpTrUka_dos=&iQ3vi5UUrerrd=&CPbF8OXfhdrUo=&Ayl8cSVojUkfm=&fQNdIgWdnYopr=&va9SGCVhUWXne=&zjuC5SXWrrifr=&xaoDIEVrsgdVV=&or4NkeVnelhpX=&nedZNMYZnpfnq=&YpgOfjUpioapm=&ENtXmdU_jlhWY=&oPTHo_XVgbZpn=&rzYUJhUZfp_Ua=&g_IJLLUddWVon=&IFHJhSVgbpjkd=&IcMrIoYjpsYnh=&zada93YVmjjbj=&LZ_lHxXVlVsnh=&jUYbR3U_fihUi=&jHodrXVUdXccf=&VCAuojYhrYbXb=&O5YUofUd_ganW=&4OQZUSZbrsoqg=&twofVeWdVbojW=&SZEByMVnpn_gp=&SdBr9DXfnVjVh=&luSa7jUV_jYUl=&Sxay8hVqnrbim=&zHYbasY_ealqj=&EJzkqfWYcVskr=&ZG4dYLXqhi_ej=&3X4NmvUUbf_bi=&4eOl57VjWcjii=&paPDufYqagUle=&hvGTvkZmen_jq=&sxzBRqXriafm_=&tWiAq7VcVsiqm=&A_iUwbWlY_rYq=&ELLYvhWqqrolX=&Ha_TANUkUaYlj=&_NWHffVWklYkn=&FJvNzNZUfrVhc=&pCxDvsXonZobl=&EhtWU8YnmnedX=&5bZCxdUnYVibk=&NrqoDKVamYkYh=&ZGITnJWdWeqbZ=&BpoatsYrfW_ae=&wYzhKGYYkqfci=&rAT5BqUo_aabV=&OxKP2EXdaXYfk=&Xu_BniXocnaZp=&HvzcgfXhjafar=&bhMyb2Ugf_rpe=&uZj25nWYbikXV=&MhJEk6VVpUdYU=&2UJnfLXnfc_oj=&SHgclKYnbUpdf=&weSPyoZobbaap=&4dNX7xWccdnfZ=&KBXScvVopsjiZ=&3TLqKoVbjorUX=&afNXwtUaUU_Yl=&SBdCb_Zcslph_=&mQTC7cZVnssfm=&css6dXZadlXWo=&CraNB8UsiqUqn=&7pWJQBVgpohrq=&wSNvK4YlUXipd=&y4kfHtVVenVkZ=&yKqFBYYocYkkd=&tqebacXkZbZZq=&vvkRfeXslaara=&eA7cRMWqWVoah=&hCvp_HUrjjimY=&hwPqH3XUjaorl=&4RfxKiZXqooeZ=&aNWNbJVeZkaZ_=&fRODrbXdpeqfa=&ic2tD7WlsifYg=&jFigG5YoesZs_=&xbS8qwXZepmds=&FrfsYGXnUcdlm=&MzGi_4YUmVism=&oCH5bUXcldhXa=&jGuAfoXjqYrUi=&9W89XwYaopeie=&Msp8wNWbfXZnp=&5SEze6YqoXff_=&pUVwfEVbmjeor=&TKp7X5ZsficUc=&MuG68DXgfbnWq=&qV_xvwWopUala=&XpGDgZZdjgkhf=&uXf3BeYnkbWXZ=&Ne37OzXfjiYXl=&YRgSlAWWijlpY=&gUIpmoYUYjokZ=&7aujgSZgpmmce=&G3HRfOYalXXcX=&9qAIWEWaddcsb=&oVLFCiWXggggb=&6qgSREWhfdpgZ=&W89zEkZgqrVpj=&VHdnv6Zjnsjno=&RohJ5PYY_gqfq=&P6gyexZcqrXbY=&kcgfE3VaYhVps=&qaEdYyWZrq_gs=&R3IwtSZVbeWeU=&bCDkwDVlcjmji=&HvaiiRWedlV_X=&xns2xUZfpZcdc=&BKxT8pV_Vooak=&jocrsBYopWhqc=&hHyqOcXZqUflr=&_in9KJVjaiVWk=&raFuvoYkrWYkZ=&sUjTlJXjqWdld=&L6IPDqVoliZWk=&T5lEBxWUrjlaU=&th2KKEWkdnjod=&2swHQLUisifkV=&jkVwvuW_eXYZW=&4dKJhVYsjnaYm=&MtaSsDXqYqnfm=&xCUvEgZskgpYf=&j5DUpBZlcWVbZ=&9aCYu_XUYpUWX=&WSZDq7VcYojkj=&7zNnNQWkjgsom=&ZwsJOoZbrkfV_=&_87wreZ_gsjlY=&C97CFIXVWisYU=&qPiEtEU_fdlln=&G9m7o3UgnWorX=&Uyxqq5WYihh_s=&dyMuiiZmZbUXU=&6JiwfcWYcWeak=&U4n2cQUrlZeZk=&nggEKrXsdrXnW=&7dOHGxZdZVoW_=&yufVdAYbhemlh=&64eLPNXdrinVh=&u2amXpWadfflm=&BcHYraUrVXhWi=&kxZAuwUhkZaVg=&vvbDS9V_hYUX_=&AdqnxtYrloqef=&FBmWDLYpgcniV=&Qhs4QwWiimjVZ=&KmvmqpZhZqUln=&3sy7TbWqaVfVe=&uAP2JFVoknXai=&E3tJHXWhY_sas=&IYTrSqWpmgYqq=&fDmPWjXWmflWq=&ENDbnYVghaXki=&G6b4kaUhUrakk=&I9YthiYUXqraj=&OlFTkoUfnlabY=&Lx6YfIVrdmnhk=&FzFghAVkaeeqm=&AC7c3IXZljmn_=&XwgdS9XiXjii_=&3CF26hWUpVloo=&bTX2NiVigl_ke=&PraVZzXlfnWnd=&rK2dX2XUbZqUX=&AeG_heUbcnWk_=&hF36X3YnjaXWa=&4smaDMVlUVddm=&dJmZHhV_kphYl=&V_PAFfVoelq_b=&V3uZHuUalbsVn=&gShMhLVkYreqi=&yDgozIYiipjaj=&mKZNDmXYpUfpe=&aMPFjoVraenl_=&tWAR3AUrUoinX=&DoG6ymUXqnVhZ=&AyvYovYcqUekp=&DYwYD8WmVdjfe=&b5Ht4OZoeXiVi=&G_oOKzYhjrkkX=&hecv9ZZnpaXZr=&Ey9PIjZefihlX=&KqHjwHWUXjqhZ=&T6kNTPZla_Vsh=&q7N6AhZjZkqZY=&HBvDFiUfggXmk=&YIYgnUW_nUXZp=&Nt3QixZrdffcd=&n4lIrdXdij_gd=&vB2zKIVmalYod=&vRfjRAUdjUlXo=&fl9RRpVXrfbfq=&gHOIcvY__ZboV=&lsvUwUWsk_Wmd=&MZJkPyYU_mebX=&xIC7isYckoloZ=&lI76IhUZ_lhdc=&vXBeyWZaoWXnb=&U6SI72YheceUi=&o26SLEVclrVYi=&9bzeM2WmkXYYV=&IYO93HU__ojWp=&rwJfegVqiVmog=&XUg_bDVqaggkV=&rdc7gVUWiaiWW=&8jkFEuUXZhkpm=&ZVKHX_Wlimref=&TClsrrXfkqXmY=&fUe2YsWphqhnX=&XwFgTUUjejkkU=&LUdeMUYZUWhpW=&fVb6lXWZWihUl=&6FNcOrWnplloX=&e4AHUPYlkeV_a=&2EICTFXgmXkgo=&N4K7dUZ_dXZUq=&JbibPtYjgjckk=&MqEREHUlaVVVZ=&5AnKjPUffZskf=&FK3uPZZp_YbaZ=&isi48pYnaZjoZ=&HJbQBBVZq_jna=&xbIW5dVjkXgid=&nmOwtQWgYgemd=&AZnW4YVkiUYdm=&NVqcZOVVqgXcj=&cgLP6PZsjjVWV=&4qvGoJVd_sghf=&FkT_xdYUaYUWl=&NKwacRWgoiZdd=&PEpBIzVharkmW=&MPwZJbYmVhcid=&XuQvNXXhdfibq=&s9UBomZXk_ac_=&SCwu48XqXcnUW=&qTI7jQYWfdn__=&Wi7TLzYjgVeZl=&yppd29UceYjgk=&C6KyueYjrsZor=&A9PWdPXYcgdoU=&DwB74nVbcnebp=&WYtdypXaUiUoZ=&4RLDcYVqZrrqX=&B8tF4aYeXjjrU=&9V24ycZnsWfXm=&B3uopPWfUbdfc=&TNtDOaXlUhjre=&tY2IBlVdcei_f=&DkvQkEVonf_oW=&2HDzRBYZYqohh=&meuN6XXogXccU=&d96TOwVlaVohY=&yIC8W8VrlViif=&O97RW6YngcakY=&K_5iBnZscisXr=&EGZubpVXn_Wop=&6XfKMpYhkWpjY=&xzPZR2ZlaXXXo=&66ZWmOVloUcVh=&b2OJ8lZqcWWYf=&e3CoQkYndkflp=&AntcumZXZVWhY=&Pd95dTWnWbhsg=&Ku_2BRYmqbjmo=&LpisqUYdhrZho=&GFpx5wYiasfgf=&6n83I4WscfecU=&u3QFQnYYW_Zsk=&6FPrjiUgeUXYn=&BBKY_DVUobhne=&BqFrVaVbdbboW=&d86AVRW_bqhcg=&tOLd7AWhcgsrk=&gQYgc6UkjgdUi=&l9sz3iZZViZYV=&ct_q5fYhlrYcm=&Mb9ELaXnqYbWc=&lo24GsVrlVjoV=&a4IWy7UZpenjo=&z3J4iuXaaUfhh=&zEIssTZqkfhoi=&OnEW2UViWkkhr=&jJqM2qYYdbrab=&koAanDZg_ZYps=&HnOgVwZcmUV_s=&LHQeYWWgrqoYa=&HCvu8FXWsodZs=&opTkYYWYsspei=&ooJDpVVrkkgZi=&LhyNFCVoYWgWo=&3TkuRhZsgqfia=&jcGxWYXqdce_X=&Ohk2BqUckVbaa=&H8YDqbZqYmrrq=&QlyquKXfcimcm=&OJgTnZXejrgkg=&ohv9FfVkVUagp=&BJTLU9VqjX_oW=&D7TWYFUWephkm=&KnwglNYjXasXn=&KX3sS8ZdWbUmY=&JtHZszWijeein=&tQp73DWnmicfe=&LCOMOVYgqVVre=&wMlnPZYsfamrV=&WKl4xQXfaZcUh=&za3qe3WnrelmX=&SLE49lXYWepUi=&8LB6iDZZefsYd=&JUFa2zWrpYXYm=&8gtH9HUolsZfY=&oHtN2zYaWhaZg=&IatnGpYbpsmeY=&XJzZ4WVnpWnbb=&68pLT5UZarnhi=&uSlrYNWisfrci=&ITbHJfVlXXhUj=&9hp6JDWaeiXsr=&3VAMRvUcWcXUd=&9CFdENYkqrfg_=&as93bHVXW_eYj=&Hpaj8IXmXlnne=&sn_vDiWj_nZ_X=&yrrCoBVo_frqV=&9jAMO_YjsblXs=&p8MnvDZcndlae=&_SE3kjZYgfiXh=&xOXYrkUfsjcbr=&Nw4S2EZmncbid=&ThgQnKZbXlaZj=&y9jo8dXrprgkk=&VwXcc7YWXoppo=&hRUORoZdZahlp=&RrW_6CVdbmidc=&XcnDpqVcUimZj=&lo2atEZZWjbsa=&ObeaKcVpVbhed=&Fnr8jEUrVkYgc=&fwjuXbZogrrcq=&LP7A8EUqgpcYp=&wqH7ThVmojclr=&8Xa_FRZenbkld=&OdOXeDVXjlqfp=&BtXsknVinfc_q=&QFut77Vlr_jho=&bLa4POYVUeYak=&arUhavVdercWb=&taNAJkZlgfijm=&Qc3NQnXjrmqWW=&VfkVdAZZaasih=&vNVgSKXicbWpd=&fN9I25ZmgsaWj=&ybckaCZbVWamb=&c3KEPzXljaUdh=&7WBb_BVaYgfaq=&og6v3KVkkl_ab=&zVtd9sUYggUbq=&hhyN92XdZ_hgX=&DnlzgpYY_icqs=&PKmiv8VrgZggb=&kzAXDCZegjUsk=&okPz2CZbjZsbX=&9c776hXsVfhha=&MY9LXeXqfWode=&92rZIdUrjdmYY=&9N3N75YfpbapV=&tcTMTtXgqfoUl=&A9K5WCXpshgq_=&qxtycOXWjYaXW=&RKBJQkYZqfhmp=&8fuGKhUnisaZs=&PmNiwVXZrXUei=&9oOMISYrjqgpa=&OwB_oVWYpaUjn=&g3paWOVUUlXer=&M4vb6IWbggafp=&oYUEYBUkfrgXp=&_QSi_2ZbpgYql=&YyS8uqYiqYWc_=&pqaCQsUoeYbZe=&mkgCl5Zkdorgn=&w_BzYDZkYasdo=&Sm3fZyUXibcnm=&9Eu6vAVnZsjle=&DFNWiNWhbmeab=&YLFSYhYlemsYj=&oA2iY5UkgcipX=&2yMzEJWXdrnnb=&a37B3rUolfVk_=&6BUXf2XmWpefd=&8thFopZiassjm=&EUNiEFUaVbYqV=&6TKbYcUlpcoVj=&YVF9_HYodmWZU=&A23mMcVijgcW_=&ORljCMXk__obk=&CPHUWJXUWYkje=&A6egAeYpYr_io=&iUavyBWodrrbZ=&gVXmFiYhlkh_f=&haJWNmWm_jmeX=&v3QBT6Xdmcr_Y=&BMSLLLVpmreg_=&LV67qhYbr_Zia=&fJXeuKYVfmljc=&nTACqNUUfniWU=&JasBhUVqqgfrj=&D2NkNVWZfhnqU=&6W4GsrZYp_gbV=&vRab9yVr_WqYs=&9oLgplZrWVnjZ=&eiMcAyWpYfeUb=&OrV6gJWoggsdi=&KWfKFaWkecboe=&Ydx5VoXapjesl=&rDrS5_YWbgcbY=&AQK_2iUWcjUbk=&xZbZSdXrVprnU=&TLkXFpUe_epWf=&EyiDI9WkVjiZr=&89Z8VhUndkXl_=&7IfROJZXnafdb=&SMYPhAWaUrioq=&C7xlcpUiemkjj=&mEMEugUZgcisg=&bgDxzBYgeZWgn=&hA8gdoZkmjmUc=&MGN7SIWXYUbao=&knQanRUrmqbjZ=&JIIoznZUkZfUl=&MjzhIFZV_n_jX=&no_YhPZflYaod=&UHZdOeYllqXdq=&2xm48cUZfVaag=&2LQ6dEWVqammi=&SF3XNpZgkblco=&CIf3ozWZaUUmg=&Uoje5OWgljfVg=&FYOUynZkfsddf=&l48D7hZfhogbm=&jr9DeYUWXcVsk=&EHw9oEWcaaild=&jDLHsJWcXUVVp=&nBKHtdVaqgmds=&fWsqt5Xokl_il=&IZW3rIVVkWrZr=&twymLNUj_qqqZ=&A3QfviVlmbkoc=&83dTBtWfanmkq=&M_uRyXUneWflY=&ud4JCBVqV_aXY=&uEnE7AXcnYbgf=&xCj_NZUZYp_VY=&HGqRZkZbYXrrr=&oNf5qKVdbande=&mMJNRNVm_jYWZ=&mXABpqZeshjb_=&LDzoTGXZrcVkb=&HtETKKUgdekda=&ls5dS6WgmkmcW=&kHdbEUYZjVdZh=&XUoLHzUXUZhlr=&UOI_3xYfVi_cs=&cIfCBXVWrqZf_=&WpMKsKUZdscjd=&kLT98vVdphhWs=&LOoHWGZnlYefh=&qYnISSWbslibZ=&OYXrX4WgnZZkg=&QYquXQWbjhpbZ=&9xPWlSVkosqgV=&oJW9_gVrVWmkZ=&2L7SZbY_opega=&S9ntPYX_aUpUo=&8qnlfgVmrgjsg=&qe7dTWZiZqhok=&Ygz4ArVjmjYVa=&RTtxL9Xpii_gm=&R9OyTiZZggmYl=&TaztEpWsWmcXs=&_3YZLEZepksXs=&Z5GnGMXljjjlX=&lTLvshUcYgdpi=&qmwbRIWZlqneW=&Ami3EAYfWUck_=&ziNHBjXcqcXsc=&aTIfOaZVrbknk=&fr89izUelhcjk=&dC7QOLXnlihrm=&9NH52DVqgUdqd=&N7OiK4YWhoXeX=&3q7FZlUsahdoi=&6LAIjoVkdrUZe=&GgQtxZXmZrkcd=&M2kExcYYrYiik=&Wef4AqVeUpfU_=&8hFRbqYkhZmkg=&Jf8t57WkdVgna=&Pu9srcXbjicaq=&ct9rpDXeifW_j=&GG4FKdWcdZVbs=&PtzU2TXcgemZq=&trEnlBYbldjVd=&uVDViFWVqYrcb=&_rGmLcWUhXgUf=&bE7kpRVYgbZYp=&_QouRVVdhZqns=&ekr5cWYqZmYgp=&acc6FtXlssick=&vOIvTOXkkUbZp=&iT2LyqYiapVVV=&hc7APdZXUWpVY=&2wdTvjUWdsp_c=&XqtJPwXjcVfjY=&V2VB8SUeekpad=&WzULDNZcqi_rr=&YEdxBiVkUkoYV=&r9Gl7YWqcdcgg=&_lPI3fYkjqsle=&Degm5kWWUWZed=&YrpIwkVlfY_U_=&dmAWUUYZXo_Zl=&6WYTNzVffsZjo=&ug7mrQYXonVXa=&HoBLOoXeZWrUX=&xjWKR_XYodW_k=&_NPiv9Xoqpaga=&VaaWU4ZVhbhnV=&9KTzEVVkeWflp=&9LEhfqUlnVUsX=&dCvieLWbrhsde=&SBQE3vUmdhVpV=&GpLXwdXZonVqX=&q3rYJGUiarsse=&72ZZolXjnfZgi=&Q8PkvaVljcqUZ=&p7VvPCXbZfXse=&MTLnDHXrdWqil=&K9tXFUXnUbjma=&wlTyr_YWUbqd_=&bMFDSUZZVXXbq=&Lqda87Unjidds=&83fN_cZmXgqZl=&QBae9TWbsgXYj=&5v2Hg7Zhpcfhd=&drRoEnZVeVkWg=&mXJOThVn_Xqpn=&CQbNf7UnfZ_pc=&qS_ffdYV_gqbW=&yl7NevU_oVsdW=&EzdmX8YspjZZl=&Ol9pRMZsecsbo=&dvYzr3ZsVbbpa=&DV6FuyYWirsWk=&S3JuhqVVZsrpe=&Ym2REoVfZeorV=&u3ejbjXXpdXjk=&8p3ig5Vahhrra=&KGZGzdWbsmpVX=&TsxYLCUssrnmm=&oX8NdLYsgfkcr=&J2OzpsWbobcXc=&73RFf7ZlngsYl=&m76bD8WrrpojX=&naHqvpYhYdhnp=&Cvv2ubUV_YWVp=&emwSaRWqqocfj=&9wGIfyZUmjsXj=&5dYOKbUeoUjgi=&jOsSjyUijWioU=&7uZXIzYmZiqUn=&dNb3skXYchrUV=&F4tICOUaZllid=&rhGdYYZcqkkdi=&7BBhTaYllmWYn=&9vDdBLZgooYZo=&PCscxlXUZrhYW=&ZIqAgXX_sYXlk=&QUYFU2XhcrWaq=&5ut9_nWXlmkfk=&qjMkPvV_sXmnf=&tGsBWCZnU_lVp=&jQxO2KUapqW_f=&seElLyVljssfr=&HPq9cSVXpgrgh=&zgpgpIZinVopo=&FZrK6pVgokoYX=&ZyjuR_YrcqZrp=&ZxrdiNZmsfbbU=&iruo3BVdZVmoX=&N2FWq5Ymjf_nr=&RFKnItVserpka=&Cwvao8XYVsmXk=&95YAmwYfiqogU=&g_gbYOYosZksh=&A7opLHYjdmbrW=&NB6nLLYiksde_=&nBp58oUqeqfdp=&VL6WXlVWeYcaX=&STzw_IYWWqgsf=&AJJDBbZfVieja=&FNa4r5XcoikXj=&fT4QW9Zsne_kc=&TS9DkWXlqmXqY=&zTz9XmZaYYsZV=&VdkbfqZVajsnj=&o54hafXmpYnnW=&DVYC_oZfeorXb=&vW282YXamfVeY=&cHltGgUXqmoZq=&juAWJbUgpapjp=&6dAhSrZghaYgb=&An_mwFVpqkcbW=&9uSjvpUWZYlnj=&MpWVhSZhnprjo=&7HoI3ZZiUicUa=&ktlVGVXlafVnm=&QnqcxxX_imbse=&oIz4cUYUolbne=&faueFwXXoefek=&5Hy8_iYZqVYhk=&Mzbu4tWrlYdmk=&sqDYk2WlpXhaj=&pe4_aQWeZVoch=&t34_PdWWrsZqp=&AlAvjWYfhesom=&IBwgY6Y_amobe=&H46NvnVpdcZcX=&PrY8LpVWecWZa=&hkmv2bUWfsaVZ=&epDisuWjiVeqX=&GpdhHxWgigWgU=&OrVFCoZgohobr=&MLTJrMUaqheks=&4dHJ2vZYrlVfY=&DGGFmwYXqcjjW=&hEQRXMVdeq_go=&w5yhAeUjUZijf=&TDEMM_XnkqWen=&9KYrejWXVhqeq=&m7Rrc4Xe_XsoW=&qpZgCBYlmk_Yp=&kUEhemWbqrYXZ=&QYsMzZUnXfdlk=&jEhVwAUnZksae=&Xzam_XZUbkVra=&UyVZrpXYUnhm_=&mWjVmNUpmY_Xq=&isQ55vVcco_mp=&ppBsLHXlhkmsd=&U5pyycVUZbskl=&n5F6mKYjUfkoU=&r8TzfpZgoVcij=&_8Q37DWWomWbk=&eO7ZSOVnfihqg=&HLy8KGWVekWcj=&CEb3owUescXgd=&OwuUZFYlZXiaW=&dCEkrvWele_gr=&MhNfHsYcYnoZb=&TPcuDIYgoebjY=&gmnYW7Ynreoos=&dMPxC2Zs_ipdq=&kOheK2ZloVbZs=&ytUKSfZhfjdfr=&6QT3AhXf_ngqb=&SYNMOMUUcnseZ=&o5fEQZVYrfgXp=&weLMzjWosf_ch=&xtbuEfWkimbrr=&5I28NfZmWe_gU=&dawIniWmnkcsg=&BekmGJYdaci_e=&ITVKLBYdWWpVa=&XUMLghZekjhsl=&UeIaUFYjZkqei=&PuXUW7XpWbjqf=&LHtt3bWUZUVqY=&dLKgITUghm_mn=&liJQ7BZ_dpcmd=&a_4wsSWgkkZn_=&DzpfptWUibV_j=&6e3gLpUbdUeUo=&mR7bJTVocfrig=&dftKCIUlXh_WX=&oHUtoIZrcqmjo=&nmty5fZZopmbe=&DX4YaCVdoelZg=&ZzDcwLWikWnnl=&y9AY5uWakbiWa=&63KtCvYospink=&9najvUZUlglhi=&Ygeol_U_hheis=&BpM478UVcgasg=&6KxM5EVerllXi=&sRXIl7Wflhgng=&yjDboWV_XUfdU=&B2f8ZfWmoqcUr=&dDxVGcW_pbdcm=&BUQwzWUoecdei=&dvF3idVllVsYZ=&JEtysCUe_qdck=&Jk89CqU_cfjer=&VwhyDAWXjhlqm=&eNtTQsZnjZZ_n=&6Sa8EdXYcacZc=&uWXOhhZqqniec=&JgurBNUdYfnes=&epLhWpUdjYcUj=&J_WPuJVerlUVg=&YlfxQkWdoi_ab=&u7tcgPZd_rXsl=&4sKoh8WZUbpXe=&4ofKM5U_ieife=&oZH4sYWcocbnc=&Nds3uIZscolmj=&27q3jEYVUYXhm=&k4yRh2WZhpkoU=&WrFx4QUlsgWia=&_bfKHtXeidq_d=&o8zTxTZWgrbba=&Z2ht3hWmdjrqn=&QLqR9gVfYlsVj=&YekzTfUshihhf=&ynnuZkXX_igoY=&8SisOHVrc_hks=&UBl2L_WnXmdjr=&2ApUSLZfgXXXd=&lGKvksZsdWrmo=&IHbrdlZfdjUq_=&YrKQEXYbinpeo=&NFK45tZZUeqaZ=&DhUzYlUjingoX=&pxcUcyXkWYsUa=&jPidJWYsmUcah=&7VnP7MWqrac_V=&6LMUNjUnnUiZe=&oa2rhbXYsW_iU=&p_ziSfUYqmplg=&F5NSePWcpiZqU=&KstCUtXrajYoi=&kHZdeFVfnVeqf=&9drHNdYkaVVqs=&6aFulmW_gcsoU=&Gu6JskUisjipf=&OsirHCZWd_clc=&bZxgThYaZfZra=&GtOnl_UsVebim=&XpLmTGXrsYscV=&KrhHvQZegi_cm=&TQnUMfUaUleXm=&FALx8aUnokfZs=&HbYWAWUblVchd=&V8Aib_XfWgbqn=&fwrBXbVWhhYmZ=&afaz8qVaddgj_=&q8ZIeaYrkaXnq=&LCIXthVUoXmcr=&HBV7TDZUsVqYk=&ou2Bc6WqpnYmo=&9UTHJ9XXVernd=&ELmoAcZeioWsr=&BiwW66XmjbaXe=&vc2lJgZebidlX=&pFRHLkWkhoslY=&aNUjg4Xnenrpf=&lG9QAKWl_ehnX=&NtkXM5Vof_pne=&hLiCTiVscZgoi=&LaAEDTYpdmbno=&NOuzasWaUrihX=&_TnvKbUYqciXs=&RRZ2WkUgfhWkn=&TpaPfjVnldfUh=&TI3TvNWnbkgab=&zzm9LcWhYZekU=&e3M5a5ZinpefV=&uK_UD_VanVlrZ=&6IihBDZpbUpcj=&o39JcrWghbqbY=&ZiFIwoWcWdjre=&fb4niNZmmWlgm=&5rqaJhXaYZnqr=&AOUz_vUlkXgfg=&GZMMKOVZUihab=&4HKf6nVnVecsX=&hGfDnIV_fgdph=&pqKRJgWn_amlW=&DHSlQ6UoYkYds=&PH5rFbVYVajp_=&b8Sd_mYaonUWX=&9SFZLxYfhgUXc=&7_K4ErVa_jZYm=&yDzCSHY_XVqcY=&vLbq5uXVVigen=&JjuW2nZXgiXUU=&Gvt6cQYgllbjo=&fF5mOWXro_hc_=&FrW4HrYrpZndf=&oEiww7Wa_dXeZ=&8Y8bJjZVeZbsg=&Gz3MRgWrYVfbp=&NSqoYfUdkoobp=&AciypvUYrkfbk=&V9yFiZWcUYZdU=&HmuoSFZWWlbso=&R33AJiXjoWkZq=&duThtJYYebfXd=&VfrJmzUeVUhcY=&wTB6LfUhqdplg=&VtI4jaVsZYUkl=&gKkvUvX_Xfjla=&JNDVJvZnpjZhX=&FiaZFuZgsaneW=&lmlJlrXcZlpiU=&O4OB8XWsZYaam=&23qDyFXWjsZlU=&XOfDKxUjbhem_=&ZUWNbZUiUkkps=&Z9WBbEYgXhfnm=&7ZJEk6UifVsYm=&GxzfrDUpoajlX=&F9RTqBYWaZpho=&bsrS5BUdkgrrd=&U7bSDKYlsUn_Z=&qiofoMYm_q_dr=&pdIooyXeccfZ_=&xug8JVWWmdioq=&EIVFfpUYjf_Vo=&XtZBbdXcVWbeo=&7goqsUYsXYpXq=&_D8ChJWfeiq_m=&rnuoIfX_rjlaa=&CShQ5HVYnlebd=&npKCZCZchZWUV=&FLN6AGYndchke=&OG3qhAUVlofgn=&adD6mKYUafnYY=&AzhuisYpnXWnb=&JypqvuW_UmfVY=&olmrdNWXqkfql=&XnWVxAYqZXVog=&hezhAOYqldkbZ=&t7fwEdXaZasdn=&vsXLOQZcZhYoZ=&HeNBLDXlhVUgW=&2T2stpVakbrcl=&tEaFv9UW_mZaj=&RDNjCZWlZgdnk=&p6UvQ9XokdYll=&pAZu_2VZolibs=&rxVeQvYVp_efa=&4u2lS_ZcVeolV=&jJ9GmOXljsrmb=&fcpWNYVprrpbU=&ZcV4HcWciqdam=&TM8TuRWcgljqd=&yUHGH9UdhniZl=&sqBjWEVpWUVYi=&2hZ7gZUieeeZi=&RWedgeYskmlUa=&pKxr2EXboeloe=&nKKiMZUohoblm=&U7jgdmYbmqpXW=&d26lZaVXXZkZX=&lJmyMMVcdghs_=&DfsbMRZglrgie=&IAFWIxZjlqjnk=&vHcwBbXUXfdah=&9lIZgZYlfndpX=&DDOeFrVfkeeqr=&Vh3K_WZVlbmWX=&8_h36cZpohbci=&PbAw3sXqYgqld=&HPWyppYlqhqqn=&CMzV_VUnqpWnf=&ciy6InXWj_sjm=&3YCowJXsZooii=&uhnR6LVnfqkfe=&ugf4EIVVgcqlU=&7tUKnxXcUhcWi=&rvQ9ZPUUZehon=&OOEXslVhomrei=&mfZDEqZkZnYeZ=&TjcIyjU_hpqhp=&LQUY9EZrjgobW=&CyhiSjYrdsUfa=&7Vys5OUldfhec=&kcZufDWeh_hdl=&VxetVCX_Xffls=&8PaxULV_eVheW=&NpBLqbX_hsdbg=&valukYWZanUpg=&U3SGavZUgsjdb=&S_ux_AXbdofrl=&IIt9eCUdWieXq=&5TlKSaZcmncfs=&HGittyWodmqWp=&ectVYDZ_coamb=&ZfwTgqZXdsnbn=&fcdhSdXnhpdio=&wDwy5GXiWWhqU=&a8Et7tZVlnbkd=&KKpbARZecVZgh=&OqfvCiWdXcjoo=&V_qyEGYaiVhXr=&nd_Gr3XWZcffa=&Uv9qCAYg_Uico=&X8BN8VYsglbkl=&_VOb4NWehegXZ=&jEoxuyUbVYhlV=&gRIjPlXZcprlk=&GBnd9HUappfnn=&6A7eSOUbfdk_n=&gDU8YkYoe_Ukr=&BKxsUcUnjjnXo=&Z6Hj2LWilU_hV=&_wzTfUUadsXge=&LmFIEMUpnjm_o=&kZBnLjU_mUbVY=&Kb4y6yYfrpZbl=&byOldrXdsmUan=&NfOgl9UrmhbUb=&2ZxVoXXap_jWn=&tKdePuZigiYds=&RkhGd4Ykqdkrn=&8am_3SWaWpWXY=&CLSG6mWrpnseY=&u8SsmLZjomcah=&EJ3nplUWqUpnZ=&b2MVUlUipdnei=&biv5x_UiYoUok=&gD5lMCZj_ldol=&aU9nMtUicrXZo=&IUnYMaWVWYlXr=&MCiyfNYVhgjke=&l4ifdaYlmgZ_n=&9u6CehUq_mXkc=&P_RTTFWjcbWqi=&8OkyLrVgacrpV=&h_a2uAYUonidd=&2ctAdoYVoYbmU=&UP8CR9Zbs_obn=&lcrPPNXUkWir_=&gXuU_FXZc_UVq=&cvnGQHVU_qosr=&t9pnwRXimroXW=&t8aRylWecqrs_=&jmAA66XohcWnf=&moc4OUWdYVdha=&PIRqduUsqahYb=&yGznXZWljkqgj=&MQJWOXUlYUW_o=&LrZhAHUnVZehU=&DY_uivZqqUXeZ=&X3mN56Y_XUYpq=&EWZON6Zcjfhgm=&_svpDpWiVfWVU=&D3ojilWsddqcU=&DQXTabXldpgqn=&WHOC4YWdcjjcq=&5elZfiZXeknZk=&zAsXhgVibWfho=&m8hwQ3YibckVr=&QLlnkYZrqedmZ=&vQl7fVVUUUnWX=&fgMJZxWbnZfdk=&CghB6dYpgZgpY=&xgH_iUZanb_jr=&TtGjokYgkiifb=&udijqhYjhca_k=&QNeooxVqWXhdb=&flgjddYrZqhYd=&CDMtt_UoXdebp=&xN2z86YYqfkZZ=&aWZN6jXoikron=&FcEmUTZmjari_=&7MHcbtZajZsYZ=&3lESbGZkpVniX=&UjLLzwXoqcgZh=&fWamuvUhaabmV=&zwnEBOWbopZcp=&EsoWl2X_csglr=&d7SDY_Xkhgo_f=&pOpU9IVZXodfk=&o4NepSWmnorki=&sThJe8YZUVcjY=&igLLp7UWglZbn=&49rwJbUsmfWWs=&NiQUYyZgapsce=&xctv5YZmXZbom=&OgJGNjUnqUd_c=&gZl9FiYUUVsdk=&GnVIOLZb_iVmZ=&C5AQnpWmrfkfc=&4x9ynIYXcrplc=&LAiaCuZjeYYdh=&hwaXTnXa_g_gs=&QYqV5RYgk_plb=&zmUfXCYlhqedd=&qmepNBXcmedrf=&ajrw3GUaepmek=&IyowBSUpZpZlf=&KaAvHXVZfkaUr=&uCJnDOVoalheX=&m52ZAeUeiWZ_q=&SFHVedVrZXqgj=&r9TDzuZVpZm_d=&a9zFS6Yrrjpjl=&zNcYbpZcUhdoY=&BZKRZVXja_jXs=&eOoPnCWnYfkeX=&QwvDlVYWXcpiZ=&ZPzdpCUllhZbh=&gW9u5aWUclrgn=&MeEeghXbaYqos=&rVnVKpZbohldd=&gsKJFOWpddflm=&DlGHOUYogWqWU=&jCsHC9Wiqaorc=&nmIFCsVlk_meh=&S27LMxVVcqWYi=&B3ntgYVpXVa_Y=&YgTz2NYglsjod=&WpByEkUran_Up=&vkHbcEYjUX_ss=&TDe2CBWbfl_rZ=&mOzJaQVceUsag=&ntaMqbXkpVWba=&ZwMJbKYUklgl_=&zYlVYyYlklgbr=&8r2butXrrhYVp=&AE35JwYVUWXqe=&yVe2TOVmajdsn=&rUa5ufYeqpY_s=&lnelBGUal_VVg=&ouyzD4XWqZjYh=&d2uD8sUjcjjcg=&5FRvSHXmsnehW=&7aJWk_Uese_ai=&_cN69RUpbdicV=&lPaiIkWdVcnXl=&sUeAvvZgng_WV=&f5lM3iXncUVcU=&5S7OorZX_mVoX=&7CiS8bZb__akl=&rX85U2Vgaripc=&S2x2qoUXgUUWd=&RpKjH2VfoZWdi=&FdfnIoUWXpoWh=&rbRqA5UWkgaXr=&6WzJBGVeiqZhU=&SZ8aE5ZpYfqfr=&TtYuTeZXjpUYo=&oSCd3AXVpdaig=&aVgTklUZVrXag=&R2LDB5UgrhUYq=&NmFozbYWeggdg=&gGElowYmXW_Ur=&fanTXLYiag_Y_=&PTdAlRXlpdrri=&HMzzwJUhhhegg=&V8ebg3WXWhk_k=&h_vWpPZbWqrhj=&YcLxwYZoWiUUY=&kRWh9uVlis_hW=&VbDsexVc_bqah=&3xYlBZZhVegVV=&W7CR9xZpkgdcY=&PZ8mMaU_g_skg=&HthqdFXXeUhqj=&ZLjuexZrVbjgk=&457SMEYrfllUW=&UBnHUxZZWhqlp=&OU4lSsXZYegsr=&L2Il9CXscrUac=&NxUWCSXVlUokY=&QFgPcUZnlbdo_=&ljtl2KZbkWZrU=&vA56OrWocYhUd=&gPiU2aYlbZdin=&MLffxrVsajjbq=&6XpMplWnnssca=&T7CcOvYZYUhaZ=&occxMRWaln_pe=&Nt9RQTVbXcgdp=&PBS4zRWbiljZc=&kzsUXnY_XcZog=&Em69UyZhVVW__=&CMD5S9XnZkioh=&ngrUQyYW_eipi=&efHXDDYYkZjcs=&awghROUsgZUpZ=&9WZQgDVZark_U=&4FlZaOVlrbXWm=&42UAMmWrgogqq=&jiXVs3VpajrrZ=&PdAGoXXigXmcU=&3ok36oXm_sfmg=&Gd6rieXbXmldf=&UroNGCYdnlgWk=&LIgkPaZeealX_=&nM4FTWZXclXif=&3cDUvKYcbcUek=&HGb2QUWeWgkjj=&lXPL3iVpVmiqq=&WOrv7rVrYqfdc=&ICRd9IZZnbf_c=&MmZGLZUsX_qdm=&Mh4nfZZjmViZm=&MEKiKEXmdlbZ_=&dCDks2UgWZWgd=&ed3xMFWlnblqe=&qXkH8RV_ojqVa=&slsIOnWekYjke=&_4xW8YWUbk_ri=&qNu5UWZZaqecg=&Mlj6K3Wilgbg_=&jy9uTXVbgjijY=&IVQ6gCXkhenhr=&vbjUeIUapaoVY=&bmznb4W_poqXY=&lmmeJoV_gk_ci=&OS7aDfWW_cepY=&3yTDYWUdinXU_=&775A5DXrXheXr=&VSy3KmWeZhodd=&yQZY86ZYcllZe=&i39CQrVXociVr=&JE8CZaYWZXjXq=&ttnF_uUWbagoq=&wgyeysVoodbfb=&nkxgWfVagflre=&WSLUsvWaofbrs=&fDOgUGWbUWYnd=&Aa_uycVWenVXf=&RMlW5uZcmnbfn=&_5FcTIValfdVY=&duU5HQWnjsscd=&DjvCYfXqafXbb=&E6KQCoUpUfYUe=&dghgn3VsXkbjY=&sW2NhMUdYs_Xa=&fzsrfWUdfojam=&OC3xvlY__ZlZX=&3xRbFLUikfcqr=&UJIvaCYpXsnbd=&zToEzcWWVdfoj=&BNvNfeY_XnXmn=&gNVQKAWUbefUb=&WsNNozXhX_pbj=&aaxEe6WddVhfU=&y5IOIWUcjW_qW=&TdUVafWcmcWfa=&pQjabvVVUcghU=&wGTMYFWkaWqmV=&g88TcnWbbsqro=&XOVIdNVZYrjjk=&dwXuZzXXqYlms=&EWzlV2YVbdeXl=&puJWjKUdXeX_p=&OMhhs6X_VYdVW=&faao3uWijfehV=&kG5_hWYpgrqbb=&dBcjn9UhdsVYo=&Jg3jNvYfVqrnZ=&qauIMUYYlcoUc=&NO7jaaZbodfbg=&b2VQHtYhocUWV=&GzuVPfZmeoiqi=&z5aVLcYcYcYUq=&QoNRZMZYdqjYj=&DtxRu8W_Ygdjc=&tHr2pCWhVYVon=&yvXLXbUhlfmaV=&6xapHZWVVZ_no=&RAnQrcUYasmbh=&cAIvbKVs_beXa=&ZlKzTxVmcidsk=&ZpEjKZVpsWeli=&sk62eNZqhqjUb=&d5iF54WVnmihd=&DCYemHYnXWUdc=&_c9nvGUbsnrke=&6_zctmYWdVqVZ=&9L8_LRYfoUhlq=&AUUvdUVabodeY=&Qd4LWEZqmaY_d=&GFnWb2WinsZsb=&F9JPV3ZUeZapo=&ojuNpwWrpcchh=&sGpXTVYahcnjW=&FPPkaIXns_kpn=&ZSn7vYWnsfYUe=&ORvBxUZkVrqoq=&cS6nicXirkkhc=&GpSIgkVgYkkZo=&yEY6ROZnZbbmg=&X_TQdLUdYiXmZ=&cJvGw9Yheakpd=&dkNWJhUXYWe_c=&Pd5CJTWqpi_lf=&5tAe5sWYVZhoh=&54zeHrWrsmjf_=&baZ2ShVcUXbVj=&aNjsHHYUUlWam=&rd9zhLYmcllac=&Sw7ZIpVirZpre=&DYn2SlVY_kmjX=&m4JAJnUoWgsl_=&YKgkfWVaXhfZp=&MSZuoxXXaUkXe=&rTWGUjWdqrj_d=&k395dEYlicUmd=&535TAzXpknVpe=&kXkaZlXkihYW_=&mAwuLCV_smkje=&nRkpF5Xgg_bof=&qepku5YrUaosr=&mdhQFiVlWaYos=&E2VTTnWpsWWns=&zjHEtgVcWslof=&_5uU5sZrVYhgh=&QFppD4XlqsUZZ=&DO7eBvXXsjjYm=&tXesqrYfeqjie=&9whMO2Ulqjnkm=&CVgPgFWgi_pep=&yXsyWVYVghokX=&WA6FtDYYomgpk=&W_cU3xYqdZfde=&gszbxsXnofodk=&QqXlRzXhdemWq=&jnluJTVoVsilj=&9m2WQ9Vfprkfh=&Rnrg9lXcjXbqf=&kmE_2BVkpflin=&8wlOCMYXesbsd=&guoLhoYpsnc_Z=&CkbRszYY_hlWm=&5sEXiqVZff_bZ=&EO_R4aVUgiYVb=&VKQHDoVXbqi_X=&2UHZtGYhopjW_=&dUWcnZYUYUdja=&fWgYBTZXnehso=&jVcbqsVcUkVma=&vOFVQ6YeXj_fm=&LvyHQwVVXokZ_=&yNH6EhUsaergW=&VUxyvBXnchZfm=&auootMZWjfWhq=&La_PyxXjXreag=&eCHkCFWiVXnbf=&xOw5UTWllVgio=&o_QyrgZkbkge_=&8V9dWOU_einpk=&CHtHbbWknaqYb=&IBO6c6UhVYXXc=&GtwGQjVfmmija=&Mz8q_dWYjcgqj=&3e8czYW_lfheU=&t98eq9WgeZUrV=&4vys8bWhajrrZ=&KXnEkpUbdgifp=&rpDDVTYeqiVei=&4FyCY5YedgpZk=&OXYdGRYqpZdZq=&DJPwPvYjlje_V=&IO5zq8ZWcUajd=&SplpiKZpklqps=&j5ouu5UXeajii=&ZmYx4iXdpUfZf=&uoErq6VXsnm_U=&gShACtYoe_Wir=&puSgQcVhnhkag=&nV9XqmYklmeZe=&Px_gbMUmjWpgq=&wpFWxCZmVjmnW=&tnkW2YUjfWfdk=&vp8lMoV_mocVh=&SnTWqxZmsUqps=&HSOWBXVnVgafq=&VEuZteWisZicr=&euGyckXcoqqVV=&A8cTbjUcsgUkb=&W7CpL6VmZrkYn=&f2uhiRYelshZg=&B9GAV5YpfrXYn=&Gk7SouWfbgYrm=&SHr6XZUZa_XXX=&5zYHe5VgpXrdi=&mTVBaQXdmlof_=&B8uttZVXgrsra=&kXIvxVZXoYfXl=&bu8M56VmskUVs=&QJdX_pWjbdi_c=&K6Uf5qUYkaZas=&4PPrdBYmUishs=&MmXlvPXnbmflo=&rDNbckYhbeb_W=&msWW7hZhlkgWn=&NQswX8WrrYhsn=&hSg6oeXiUXZhl=&P_eDBdYrnYecl=&zlYnFDZZs_mig=&MSJoQHWeri_XZ=&tPQTzKUVgqmmU=&4Q_ex8UemqUie=&zpP2mHZrkjoeZ=&6zqDctYYUUeXU=&ZWfCFAZoWis_b=&sPWyHDYfjnnrj=&85EFBBUkYsmgb=&noPYVKVgcW_nm=&AsZZa4VgVniVU=&B2e3dIYaZoodo=&vBc7cKUbrojnp=&WO9iizXiVaqig=&QY_guWZ_a_hrY=&nGsXSFY_amrlW=&V_vBFSUZihdZV=&MxiJWQWki_YeV=&rBZG69Zfsecj_=&HnSGc9YjfXafr=&xE5fwgUcoifkU=&UWTUtJYZimbZp=&W39oNLUnrhlUb=&C9c53EYrcWUVb=&UqJD8SVVq_Wkm=&gAanxyYgcpWfl=&sjaaftVqcdmhV=&amwovxUYlrWqd=&pvBOIRXVcdbob=&keCpMxYmirVqd=&gakAr7Vman_Xl=&pNilROW_XW_ee=&AIH_wPUpemWWU=&Wc2rcPZgUfqoo=&eoiyTFXspjZqr=&r5mgl5Vcmcqas=&xv3RVdZnjcpWY=&8rZMLxXcfbUdi=&VtCPsFYc_YWrW=&_MIDBqWqZXmgd=&lXy54RVZ_bdhk=&qY6rPHZgXlYge=&ZTvVl3Wfsnfgf=&AEfupRZ_kUclg=&97w7fHUdhZUdj=&ZilFnXXrXdWZV=&3P79G9Vbmqrdm=&vzj6qwVgfXUlj=&iWg8MPUUpn__Z=&DRRoUpXgYU_dp=&CJzXlXUWWUdkr=&dlZ5HOXinXVlU=&uzGKo4Yclbp_W=&wDYj2RXnclmis=&NH8uGRVraneqq=&4UDlwWUW_odbs=&KnDiI2VkWlbYl=&wSw7EbZYWYfq_=&lyY6o7X_rcYoZ=&lgIZJBZfqYkdk=&x4KblCWrfgiqh=&eM5XtRZjpVcXn=&DgAcx7VcsfjVj=&A6yeS5VhbaX_U=&CHxQrBVm_pqWV=&26hDyRYarrmYg=&mPqo9KXp_rWbc=&OkTVIXZba_ghn=&6QXEgnXncUdiV=&LNmYY2WgocoYo=&sghJ8tUUjnfcm=&jCghgMUYfslkj=&pYWjxSY_asinn=&l_YQMZUrpZrjq=&UDNJKfXpposlp=&ekcS2rWgZpmfo=&JtYh9lWmfkXYb=&R75joAUlsjbZl=&MLCqBdVWm_mWf=&QtCP2RVkfpZ_n=&un4cScWmqmfig=&6KfrYBYX_sl_j=&2AwIbNYsifhka=&EiIP5OYYklqjY=&BULw_NVnZjsc_=&xvDndcY__nbXl=&9N3JgOVsokhYX=&HQBYUDZmiibpj=&FiE3FnWbYmefs=&2BZCs4VbhrsbY=&5gqsFTVaWpqds=&uPGe_kVfobdWU=&ZbYDgLYaWasn_=&2t3J7nYps_dZc=&Dwhee_UVWgrdg=&DGSqc5WUWndki=&EMRo8gVsXWUYn=&yIxsuzUg_lnql=&GP4a2lXbZaYce=&Wk3VRAYlbZbXa=&lsG3xuYVYbcUb=&39PbRcYamlUj_=&ptrHBfVpggkjq=&vfmM5ZXidqrlg=&akhkkeXcWgsfo=&MoxsVhZrqsepn=&SlBzZ7YsVYadh=&QqYYv8ZrfmgUi=&GufMz4XUeWdVj=&ZxAyZsVhUcrUl=&VN7n6fXjWnXcm=&thL93WZpWqgnV=&vWzZb_UkcfUie=&au8AXcVWkjYmV=&c5xlCoVf_jZlY=&iPUi83YYiZbml=&WPJxHEUjZqZhX=&okSrs7VYehsXd=&JVqkNHUdakZjc=&wjUiTyVsjaYYZ=&6mE4vfXlriWqU=&KkEKFWZpV_lmq=&Q_A8TkZpgeggj=&A2kjVrVhidbhY=&RMIGI6Xffhnbd=&BUvf6IYffnsWi=&MdNbyVVZsVpf_=&OjNngNWVceaie=&KQTHkvZbllrla=&UmM6srZnhhbiU=&awz2UJYkXVdYb=&NUMWorV_WVosZ=&q7Pg3cVpfhqm_=&C5BG25VXlXkZq=&kZDIxSZYmkVWg=&ElrRyxYmrWgse=&qtB3w3WUZYdsV=&BGBEmGZXaWpmm=&DxCHX9ZaoblWY=&Hm3mdoYYqbjal=&EHyLIEVWfnUbb=&OpsrWLYliemqb=&qWvzF8XXYnraZ=&lVPSFrUeircbk=&etxDqGVfjrr_p=&EjKs7NWdVqWWf=&EVtv7LVVgrppm=&qeAXgQVXrmloo=&bAJu3CZkWbmps=&YPkMrEXnnejir=&I8PcVWZVdkoUf=&YAsmlBXgsbeYd=&J25GfMWbnhfhb=&OOLOEWYqpeoZg=&oHEWYHVkbagqr=&aca2IVUrabqgn=&unEJMjUpaiVdf=&J2nIoeWaVqqpW=&kUlEujUnonbYa=&e6ChwqUjcZVZZ=&yOLj3vYjboqig=&_SlNAZWXWf_lf=&ZY3s7qVV_ofqn=&LGzKnwVosZUUo=&c6WS5RVVhsihp=&Q37sRRVkkWUjn=&Y4L9ZUUlbWlb_=&SKbMjcVXVaiYs=&hWeJPjXWeViWf=&PspdaXVrogp_k=&YqUoFFZraVpjs=&tCVF66Xiikopm=&qzSEIWZngqcom=&unvbEzYcadcge=&lZB3zhWrflhii=&8z7JMFVro_eds=&WycWoSWofUhna=&S_vkxjWUgsqjp=&elXGjSWaoWmki=&3SHJ2DXojdUnX=&2L_f3hXZdperk=&7ZmElAXfipojZ=&Z5APKLYlhclZa=&umcrSqV_ofsfr=&75EXJtYlXiYbb=&NTIzJHXafckhr=&K565OlXsVWpgs=&cxXAF4ZgcjXac=&9kfjCbW_bfdri=&j4kSTyVighaos=&XCaqJnUeYZccj=&AKfJj3YpinWpf=&HiFBf4Xghdpnn=&wbBbDIUgqmdeY=&oWxAzAYiie_ba=&DHrfeCYpjnqqk=&ajTnQAUosebaX=&nLIzDMWmbopaf=&BbETabZjsjbZi=&vCnSHsVjqgXV_=&v6Nn2SVegWrW_=&vY3gKbUaacUab=&C3qZCKZWoWgmf=&cJOT4RY_Z_Vpi=&yTb2SZVadZhUZ=&CionCaWnWUsVU=&hpMPWsVsosjUm=&WKz_FRZaUofga=&yG5u9WUrZkkaj=&OPYG6QUphpffg=&CJ9PEHWfqidqo=&U43N4WWnYmqgX=&RZrO3GXbcZosX=&HVk8M4XrfqYpX=&XyuDkDXdeplq_=&M4WLlbUeZYeYo=&yrgIl_YrjYmVY=&NSutL_Vnejnpp=&FHN9f_UaqXWVr=&4esde_Yplrnbg=&ZOAyf4Uorlill=&c3SXTfXnsjalY=&Ax27aXZrmqsVl=&ByZiNHXndkaqg=&vXYDcSWpdfUmj=&zAEqfmYijnfqs=&zm8hdOUgcchYk=&KfSkabWnheW_j=&WP9HL3Xrsnank=&ltLen9Vf_g_nm=&lRLHt_ZbaiWll=&_3RckLYVYesdZ=&WqzsamVaqekmZ=&P_QLZ8Ykjfmbe=&akRKHRUXpeYsY=&fthPPmYfYd_ci=&bwkBYUXclXbZq=&vNF3kbWZdedZp=&PuYojYWrZYhoe=&rRQGRZVbpmann=&dSeVHsUWX_mqr=&SbkkBJYlmWrso=&WIdkRlYqjZ_oe=&rdbijoYomYfXl=&PmFryFZXlsYZV=&3QS46bYifUoXm=&oJWO4eZbaokdm=&O35CS5Vnei_Va=&GZ3EU_XbmlW_Z=&kKb_MQXndphUj=&KcguLCVZZsbqc=&CLfQlBUqqlUjp=&qJgadbUrYYcsX=&ljFAIGVVVhckk=&fhtfYMZ_Zshrj=&k5bgxGYjhdikg=&lSV63rVp_roki=&5HKQY6YeWopVZ=&2XpaIsYkZsipm=&jSaweDWgansWY=&aXkXLLXkbYrbX=&JZJcAQUodahik=&Xp8rnJVrlieUq=&ECFNOqXonVXir=&Lf9zqoYboaajW=&DoVToFValgfjd=&UFYn2zVknjXmn=&85EY93Vebokmc=&c2lWZkXeslXZm=&EFiY4gWighXWp=&dIlXl4ZW_kdme=&Cllp4CZlYeVZX=&7pLHCLX_b_Wkp=&wcTFlUVdcnZZZ=&GdhpvgZmZibWg=&UFWyJyWfikmnn=&elRR7tXWni_sl=&IBsGlnUYfagXY=&Lb9hB6WkppWXh=&_ROKDMXeirVZl=&mXGYrCVVdaknh=&MffQUUXaofmdU=&kv3NmDXoheVdY=&h3RqDgXdZjdkj=&BmWogtYVcqgiW=&di8aZIXXsjfZb=&8sxoT3UlrYZjY=&3cGbLKUcisohU=&rnVosdZobmdmi=&rC2PqjXgmjemV=&3wLDuWWqXoqqi=&iuIpqKVbWeose=&VvGYs_XpbcUhd=&CcOLasZdiemkm=&88tc8zZadmkjZ=&HcX4nzXleqi_s=&ZxylEBZpXdkrq=&jWbeyOYifgZcZ=&Eid56dXrnVajh=&jCb2DuWcYjdan=&gI_ovDWncVlZr=&KWSZDwWflcsWj=&xucRPjVkgomiY=&XG7j4nYVdjYoo=&YgjGOpZrfgrXe=&XCYm6FVpnYeXa=&HeEpVSVYkhZjo=&XdwrIKZfY_oY_=&L2qROKVoYgoeZ=&eOHN7vVgmgcrc=&TJ4g63YZebhlb=&Brp2fTYbob_Ul=&bfMoTaXjcccUq=&hf6fTfUeackUV=&kWQgRIZUUUrqm=&BcmZUXZiYerZn=&62hVRDVqmddae=&jFDCB9Uk_Xrdm=&ptF4QjXiadY__=&kiM32wVdVlZdq=&bfO5skYeXgrhm=&_abTdIXeiqmni=&_wAILMZUemVem=&BIXZzTVkdkWln=&LdTuNzYYXdsbZ=&VDsWpsVZklrUW=&dn6NKyUUVZZUi=&QLylLPZksdfYa=&wltnYrWaZasWW=&D8JnecUiijinj=&fkixjtWkZYdrY=&CxIbnYUXfkXWZ=&czAlNFWbeZcZk=&Ow48QTYmhYmkl=&mX48y8UnUjhcq=&AcK_PPVZlVepi=&X9b3iVXlYakpZ=&BzmZgNUe_nqeY=&7B_WdtVlfqspk=&wXk6PPXlemepm=&gVIu9CYnhcsc_=&j4J2KXXVgjbsk=&YkoAUfWcesaYa=&KFpv6nZphUVhh=&w6rZp_XiZgalY=&y4B4ImUZdhcXi=&ELSt3gYlWYjno=&5l4VtxZUnnmsX=&olZsyhXsclaXZ=&hrrrhhYoqYWjU=&A4eSOhYUVhmaV=&2c6GTCVbZfXdo=&he46vEXpnfXpp=&xEvITZWdUWpcb=&SHnWgBYcepjsq=&gSSCnpUYYdekm=&tZLv7dYVWeWhs=&ejBrvpWqiab_X=&i3Ibx6UdgrVfe=&eKH8UqUcqVnZk=&4MJbYOYderbZq=&YXE_yhZqVYcmf=&GryNyoVjUl_mi=&zsjzwYXUfYmYa=&usTrZEXUccamj=&umOhLCUoW_UgV=&QINpTyZmnihcb=&xY3DuMXrY_mmd=&4EePXPXremnmo=&9NnSqbYpXrcgZ=&tAU9fOYZUdqZm=&7KpXVRUlcndeU=&Sh3xx7VrjlafV=&yb9HlbYndZbsd=&dOB7LVWedncUn=&9uXFfHYhgYc_c=&T2whkPUrnYo_f=&yO7rEEYpZVmYj=&vetQ66YdXiWnY=&Z86P9rVbffbod=&ruyhWrYYkmYqa=&LswcRRZdibm_b=&WTaaqsZjsfjVh=&gH76N4Yd_hrkm=&fyizQaWVYWepV=&RPctukWpXlgUZ=&XJGwm5Uknmms_=&PhaIWyXUqisca=&5jeO3DYrqelbm=&kyyr8NV_rYYbp=&jcGU5dWXdkg_p=&vauzfvWlmaa_a=&kcZcK7WrsnpWd=&_tzJlvYXfbffd=&zDOYFDZcgipdk=&LfZdhLUiW_VZb=&b5I3MBWZencsh=&5nxkcTYWfaaXg=&mDgsn6YmY_bb_=&ZHlfHLUkYojck=&I7KsxJVbeac_f=&fXWFqSXYdjggd=&_25ZcAWUbinsZ=&Xwxy69XUdogom=&Z9NlkNZspXbUn=&xS_dmAVmfWZmi=&eXyHSJYcnbhaj=&P94tYEUgYbkYX=&i4zoDMYhVigmk=&TnMYH6YhksjUp=&RnaU28Yeckfki=&MkIbRkYpfmWYj=&P_jt3FZjZaWkq=&ullOphVgaZfUe=&YEvXv7WopYfgk=&kxbPB5W_gcZUg=&ssQapOXZXVecg=&KzMvbnWfYZXi_=&OqQTBDXjnWXhl=&IaQlKMZZdbsjd=&ifnxAjXqmoncZ=&wFDeZTXfcpbfc=&QRXfW5Wcdpqdr=&c_ut_tYcmneWg=&Z5MbdcYqbdUVd=&rLCS7cZgep_ir=&gCTLC6XllUV_g=&7CKnsPYeogmli=&yLJ3wcUYqZoXX=&jJNyYqXWnXYiV=&L_8ZFMYgYgccr=&Ldnt55Umhqhpa=&OKTgokZegdfrY=&BZALGkXnWXcmb=&Q4dVo8WnbafW_=&WKsi4nXanjYak=&NyUbj5X_gfllc=&njCx6YVdmVgUs=&RL6CQnV_igkmg=&LVYtVyUcUVfWb=&hZ_rMSYeepipc=&GHmj9IVkakcgk=&mCtROxZarUopb=&7VheIyXlhd_ja=&y_EbTnVgYaVhb=&iquQE_Xkpe_de=&KZEwvyUjYcfcZ=&iyRMbXXheacbf=&Q37akbWkbYU_r=&NrXD36ZrngYgl=&JzLOrkVUVjcnd=&OPANgiVimmYcg=&N4ZHYQZfhaaWa=&OLJeklXhakkpr=&lVL3KfYgWWoch=&nSxrvZWWf__pg=&2bpueLZmjWWih=&Uu4SPiXiWidfW=&nHDpdSUonrgio=&WhDvZkYkVZeZY=&mRXvoZVZYf_Vp=&tfqOsGUprpbcX=&ZinFExVslnWie=&fcc7QsUs_UoUg=&RX5hPVWcbakZs=&LqGshRZ_obeW_=&7z8zATVWYn_ir=&bUFaD4VXkcXYs=&sXAAszUgYoorq=&u8Wi97YssgWnr=&vygMyEXqsmcrq=&fYmeyHZZsVraf=&BPu_Y3UVkiqjd=&F7W9x4Vopjhoc=&Ga8TJyUdViZho=&uyi5xMXrdWVXn=&3ynxlDU_XU_pZ=&diJExwYY_WnrU=&AvsKwHUkqoosp=&HzZYlyUoqaYaj=&syGhPOZeegrpk=&jloz7IVpnspqY=&kx6mjdZhehUVj=&f4KFdvUZkiYkj=&4XXvBgYhYojqm=&5YsD22XlYh_Vi=&tAaewtZUYYnVk=&CD57VrYpWcpkW=&5zbMO8YXjVqUb=&3M7q7MUd_ZlUW=&5TUirOZrkndXY=&pa4_25Zqhccks=&5O6BO8ZrjjsgU=&O_BDycYZleYlc=&4HvNXxWddZfUX=&nJqWv6Ujkeieg=&D5dWN4WYqmsVe=&AKWiCzYdiVlkd=&Fcw2C3ZsUipVU=&EyloVuYaVjXXl=&7j99qnXoaYajb=&5VKT7RYlVlopi=&CJXGgeXVlXdpd=&dOfQ8JZrYqiqZ=&_hn5naWopghos=&ZWxoYbVkbnrqW=&LDhYpUVWifafk=&x56LT8Ukjccnk=&Lt76VcZXfhgel=&ySSEvjZfekXXl=&ealSy7WVWkVia=&5vDET9XhnhgqU=&Ma5OQaXbhlobY=&4F35m7WsXpYgZ=&Yk47CqVgbXYep=&yRuLr7Xffasfk=&lvsmyhWbamkmf=&Mv7JPDZUZp_hd=&zLTTJLUqfZWgn=&r7W9feYeVdgeX=&bPF2HmXmmdsgY=&GhZpYCXUXpWmf=&Nn8fEOYgeWqpq=&eGfbOkWqaVfjg=&up5gMkVjbcooZ=&got9mRVaZhjd_=&Sg7MubWWciqpV=&alRFh2VVmknna=&Ija_4_Yb_scsq=&8NFRRUVpXWibq=&MJmyjIUVqgek_=&5DF_naYmlfWco=&IlG2EhWVXWUbV=&cKwGCzUaqmrpo=&Xyq6NvYbchqlq=&Jm5E69Wjcmjeh=&ZGWFLUYhoYXYY=&snp8rMWikacsp=&NkXlypZm_mgnj=&Mb7xbUWUfVnhk=&VZfuMZYdqifUl=&Cqb4waZcfpopX=&LNxQ8VV_rieUc=&CbU9d5VXbXqZo=&EzbbrjVilgacW=&yBCvFvUirZpse=&L3ZnkiWsoncdo=&O857wlWcbnX_Y=&zRfgFjWjVaqko=&BWbO4cU_lUfVn=&WezrXzWhlnmpX=&hPawxsWUVrnhg=&OQc7mJWonmgif=&lYqmwSVVgXomn=&UrmKUJYpadmri=&GZxWbWZbZnWgm=&5yZIVqUnXfZUj=&lwRjo8XojXiVX=&k9KisMXmWUZmf=&9JkfWYWZnrplk=&wMeVqBXVcUfea=&p87_VCUpVrnqq=&5i4NohUkjYgZY=&qtJ86JVcdf_Zi=&KjdR22UhiWdnr=&uXkgW3Wp_qgib=&Ip5o7GZXrhofV=&jLVtT5YerYafs=&Dcof6IXeiUp_k=&oCxVHGZWeYeh_=&SOSOafYbigXbh=&o6docLWifiZVf=&5Yp6NaWoebnXV=&ZMog8mUoYiXVb=&wd9zYlUZWcisV=&l3sejnVrcqhsl=&PA2GtZXspjspX=&HE4XU2Yhpi_WX=&RPnZyJUaXcnYW=&kdJkBuVdaVY_p=&2_dw7yXgWeslr=&HgZvrUZogUsem=&YKF3kBWhgnhss=&VqSRiGZkgbfjb=&IMgPZ4ZWjqrYl=&vJXhTBYUmrrd_=&2gbKiBYpbiplk=&jmUu_dZcqVWZs=&pW8C9MUghWZsZ=&KCOjtYWkjaoiW=&PqcBaJUknVdZW=&DR3Os7ZYZdpUV=&sGKi8EVfddbbi=&ygwZiyUWYZpVd=&ejpDYBZoWmeVX=&F5EJUJZUeZjir=&gActY_WkoYqjb=&Z3hbg4XbUmpdp=&GKeNktZrhaYpX=&QQJgFCY_UoYje=&ruAl5UZZiblXm=&9YxHoUXnhljbb=&ZUzCWjZfnlmYg=&qHGKiZVUcfhoo=&u3vffUXmUkqsd=&sbJp5eZhrqe_f=&w4WVe9UgoYmUn=&9BiyJlWhjgpeX=&okCIVhWmrUU_q=&VOqL5mZkUXUmr=&NkMz4LXpjjgr_=&5dkONoXVgascV=&fjzEpvUaekkZp=&7nDDLXZdiarhU=&SXv7HFXZeXWhd=&jRsdtCYfqYXXW=&KWHuVeZVgYohi=&R7JVCTXpjijir=&KEzs8IZfbchWZ=&divCgAYdhokkX=&qR3LgYZfkkZaY=&9mD38iZoldhfY=&vhUnfcUiWiVas=&cOZUL9XWdZUao=&msljFHUfikrkl=&fIwoMwWrWZleV=&n87I4zVsihheU=&CZBGdzUm_sWYZ=&qgGHj_WfqiVWn=&epwQr9XdckWps=&Clu3GCUlicXYo=&HmKF48ZsYiWZj=&mExr5XVZVlVXk=&7Vx3UiXdrmrsp=&r2vamLYkYmZjZ=&boTGzjYdgo_XV=&UVQGh2X_Xsmo_=&UNNaBWYYfZXkb=&p9HeuSUbgnYmf=&PG2VPPVYrojkV=&YxZRC2XWenXZj=&6y5mxrVclocYU=&HQXAEjZfjZned=&yCNreGXXrV_iX=&iL9vcsYlfbhpa=&GbngkxXsojYaY=&NQFMVXZUgkbrU=&wRaJaYUqfrqer=&9UwsWyXhnhWdk=&zXqbOAZijfp_U=&5a5GAOV_ahZrn=&s7IrOTYjleZgc=&le8ypGW_ZmZ_k=&ZTp3AlUrcXlgo=&kxpcDjWhqXccX=&pZNugzXUiYpUp=&2L_9wrZgdVfXZ=&7uqQkiWaegbcc=&WGd8TLWlicqoc=&zFAwmKZgifhie=&JcMRpZWcgXsXd=&KFSGVoYnZkbgm=&RA3NXhZsficYf=&EhkINmUjVmkni=&gkd2_TX_fpngk=&d8c9lrVVhmmpr=&jbqtz4YjnfXWW=&AdSMnHWrbkb_r=&IE5qpkXsbWYlp=&Nfr9ALYdmjpgc=&JQb4aOWsbUnmo=&t9kNR7WoZoXgc=&lHBpVVUccplXk=&CO7TSsUnmYmd_=&vWyhjmZXipqmn=&C9AOHsZgoskfU=&tIRQwxYksVpbV=&TbkAZ6VjWkobU=&7ol8UGYkrmgVl=&nOb4V9WXUnXqc=&AkEIlmWbd_ppo=&6GoaScZVZglgq=&D3ci8NUdbdZhd=&ffPM_nUbccsgg=&m8T_IYXbhXipa=&yGvo8HXmYmnfr=&RvIWoMY__iapi=&dld9lHZaacolY=&vpqNeYXmZcUWe=&eNXCkaYhhfYWo=&zivvpjYbinbra=&vZUm7sZshfgXZ=&Qx54vnVjrrZm_=&YDXEZZZpb_gdb=&Q3AV76VVZXkkn=&TQJxZpYsqi_dr=&FAeiyKVXVVjps=&lWAZhBYakUZXh=&hOZHFtYbgr_oa=&NEUlosXZe_ZgU=&BUjbknUYeiqXW=&PyTXijUXhXsfn=&lVeUJaWlfbYrU=&coDxwcUgjmbVo=&rukVMEVX_goql=&moWmnTWirssaY=&Op7pmRWsUUbna=&dfjFRzZihh_o_=&BFIODtYhkUjps=&myW4pcVqqlqXs=&C5VmC4Y_jkigY=&pSkajsUl_rcps=&XvqJfbUifmZYg=&bWhKjcVdcjqds=&hmLN3WZnkZoWp=&YOhBX3WVqf_lf=&DHvFkBUkkVjmi=&BCtSizVkilfb_=&bsGCVpWqfpYfr=&9hB5aRUseiqsq=&bISgq5YVgmbke=&LdOoPgUZo_hrh=&daXLcUZrqZl_q=&Zv_8UaUnhnd_U=&R8cAw7Ychhrnd=&Oibj2VUbYXlnn=&ftN9BHUhqVqkk=&F2qwRhZgoamdX=&32O5mjZiVlhoh=&CAysuhVqblpnh=&MchfUKXYjbqjV=&trbjA3YYqkZYk=&963EBTVcmhenl=&nrH9GXYWXhiaf=&t5Py4aXbkfrhl=&cvvQ4vUjfXZpg=&OXSoMEXqnshVc=&lLADCpYnncegV=&zjlLqQVjXjmVY=&Jiq2MhWdjglqd=&fv4euqYssncfo=&ZwjprbZ_fioqW=&B84Ab5ZeZmcXc=&k4bIFGWoUXjjf=&btHyhLXXphUei=&FdXQE9ZXne_ZU=&xeEr6LYlahdhh=&eyFVm8W__Upmd=&MFLSMIVoemdbU=&6T_vd8WdroUsk=&7IsSO_Yr_Yiek=&49drxZXdeqbrW=&Ri3a_YYedqbVf=&kO6YQEWgodWgj=&QANXSfXVdqVrn=&VHE8jiYnUjkZW=&d5EAsSXYWncqm=&o98jy9XngkpVV=&zKL6hBUpdpicp=&XMofN8Xid_cVo=&zHkXO6ZfZkUdh=&YzJO6jWiholcd=&OVYigGZskolik=&XllqHWYj_iqeq=&uYBkAMXmraiq_=&8La67ZZZkal_o=&lOZLwaXahaZqr=&OyOV47ZhdXsUr=&QctNXVXXplYcj=&NtZYI5XWVcYfd=&rMGmXEZWhclqe=&4impsoVgakiii=&BKbkijUoerl_g=&imsmlcZbsZVpX=&mxBBsZZmmmaec=&cL3lPUXmejofr=&gt7vcBX_jkfoV=&QlTpWEUXUgrbd=&iqHt5MZahWicV=&47iVErVqUbWai=&SH_3eXVXlmrqX=&42a9HNXgVgjWc=&4SHaUhUZqmYfs=&QVBTqxUfarqoX=&2L6UfIXkUWYcU=&93qGzfX_akdmp=&rc2mTFWdYqYjn=&xccaUVXpipmsi=&XXKxQtUddhidX=&J3EbMWXssWfUX=&wEVUvdYYbgmVc=&8krkM2UnUUcYZ=&WUuZJkYsigadY=&anIowZVjepgpX=&3qjamUUdihsXj=&7jvst7WikiqiU=&kpeSIFUmiZkdl=&WGrjgmVfZgpYn=&TtcDHBUkn_sjs=&23GuIGXa_ZjXY=&qwE9jsVssieoZ=&ChThwnXYYdicp=&WpjJzeWdsWecm=&TI8bpUYgdkehV=&q9lqFGYZVjjZm=&qhXdTdWraYnm_=&XUl4FWUYXbdqk=&pikHVaZskhejV=&ILKmTFYZinpho=&vp5FngWUmYqaX=&ACg34fUrjXhsp=&nDFeRiUhfmbki=&yMTVWbXeWfqoU=&TryOg_UrkarpW=&9ziSPLXVqphsi=&8UoRDhXeacsqk=&OjVLiiUdUgVXn=&VTTc5sWdXn_mV=&wbocwtYpshfmi=&ygF5nKWogUYpq=&_gxBCQXokYfYr=&OTHfqNWUbjslY=&zGscjVVrofUcd=&HXBk4SYVeZhgc=&Q3Rn_RY_dXnlc=&_m3ofRUhjjie_=&Kxr4i_UaWkqcq=&PFCPizWnpca_V=&J5XntQUelcff_=&OqZIFpYYdYlfd=&tAl3VXXscfepY=&Lb7AezUaXjqkg=&zPtbD5YaVqaeV=&n3pb6PWXhpdqa=&UsG6jNVhX_hkg=&fbgSOFWqmphgU=&5RpLbtWdWsWYp=&LJjMRTUepoX_s=&LarpvAZrcafks=&btEIzkZlfdqqq=&IPMZfbYckcjWY=&yQARo9VUkcabe=&iiJtdMYkVfiY_=&uS_2j3VbanjrU=&QKtFBvXijnhpW=&cdf_KBVsgrZjc=&RgwouoWUmpXak=&JbXW9ZVWpbYVb=&MEopjHYnXVV_m=&nWT8yiXkf_feb=&FGDNB6VoUocen=&e4yfQmVhaejXV=&EeVz29UUfXo_g=&aw9FyvYmbmoYc=&95bsaGWVlfmZs=&sP3ydKXsoWnkd=&RmhBFjUlUdsek=&YdPnF3Uqmgecd=&IpUMM7XXc_gWo=&bxgTCtUUXbkWd=&vFmIcLWmZoXpr=&mCyCNsUhrsrop=&TjOtJ8ZkXfdlj=&iAF3hkZUkjiXk=&tmpGbPVonhjpq=&vlnuNMXUYWnlo=&9Z_cTSYlolYmb=&dFeeaUXmmoWo_=&QyhElVYj_qmlk=&YqnkDgV_UWslV=&vS_eYIWsdahsq=&_DMjVhVjohsgo=&3wiECeZXglpjY=&aQAXTfVWgfgeq=&oKzLFKXdhWmgb=&tTsRIOXmVneX_=&3WKCgfUgUZqoj=&W5nKI7ZXhfZch=&GyCyQ_ZifeWZa=&tTyqB8Ucaqbcg=&LT9doXYfjjqas=&SWnHIXVYYhisc=&9bg8aIXZUnncl=&EvyChbXbZUrpr=&DMY8NsZeVXsjk=&jyvcwkUWZcYpl=&wXB8sBUgjZncW=&5fK4qNZZUWocg=&cZiL5DUYWfape=&xgkSDDWhXXnrf=&d9EzdnYZsfcZY=&62hqDFYdhceUW=&ZwXDxoXqbWiqp=&niWE6SXqhffar=&kg3bobYUlcYVh=&8NyAgvVqWebXf=&MjkgJjWgUjneo=&o6vfubVegnYrm=&66zICuUWnaeZe=&j7iufIUXldcYg=&LDlrLDXneiUod=&Adb6hQXZahsXh=&uPWgk8YYbZWeX=&yGHidLUlXjmkX=&thEHoSYWippnX=&X_EVAoZbaorhl=&DoDD5gVXchfWo=&D9IYcTYkVcsYU=&GPb4AcYYonsjm=&4pCKW5Wqpeqlf=&_5kENcVfhXajh=&_ZKgowUkjY_ba=&3Ev4eWVUesjgf=&sKgtYeVffWUh_=&9qSFRIZhcjasc=&mwfDanX_kaXnb=&QvnLXuY_WsohU=&9HXIpGZYYpZlY=&e3SPxVUsqhqls=&C4yQvxUlrddXb=&TZpoiOYgoecsY=&PIQrTeWoqXhqm=&_i6KzOWaVUopX=&faJjfdZYVjebc=&m8aTFEWaqrkaX=&Ulk2ICYnqolWp=&ycYRGMXjcVXZj=&K8tD6HWYeaUas=&2EyGg7Ubroshj=&nqwMMpZscWgkg=&eUftAfZeamcfW=&jGYgC5WpahkjV=&fP3B9ZZsmpoYZ=&VboTdGVheYqkn=&GJN4v4ZWXecbj=&VaNTTdZXprboh=&x8_P_7WWqrhie=&hvRy7hUreosXl=&s7GYoFUilqqkZ=&npmHL3Upmshh_=&c3ZDnDWhlUjmg=&djuSIoYcffoVU=&oJtL9XWajYdmn=&eCNKkYXccnics=&_pRZkdYXfmhmW=&N8vTgeZZfmXYh=&h5mJbeWrbdWjW=&oq8LyZVihibsV=&rpzdIdUYrhsmq=&JKcQhyWYkZelr=&48ahauVroqiiW=&oU6NnhZcgVUVk=&CCwVbcZnompkg=&D56anuXh_iqhn=&legHHmXYgWesX=&c7cT6HXepoZil=&YC5ZNXVflhUgq=&z5nXV4XekUfWe=&wtBxNbXZ_sojr=&sISuDcZUafnrU=&GVPUXkUbfnjs_=&LlE9P_VpejsXa=&eXMhqZUeranhj=&5KmAkxZcfWpni=&hE2vAFUk_Xjhm=&_D_9TgZnoVscW=&kL7qR_UWbZqoZ=&6JbU_tUfZkphp=&P5auO4XpiVWdj=&487PdUYlcVidi=&vd2KVJWVWZfpa=&_4n8vGVUbbrja=&to9ulZWlaqrYk=&F_gZ_OYaifqeo=&hV4wUyVZ_kpbq=&TItCdvUrXUair=&2GdESOUUUZnnq=&HKb_ThYpmrsYp=&cEJtXoXopdjec=&7CpwegWqsZsVs=&lRdCC4XjbmYUi=&9TOqmhUelhmXi=&klwt2lZrUh_pn=&QpDnL8XjVfoeg=&CVxKPCYhrsVUb=&RyLGUrVmrgVp_=&gXtQ5DUqksrir=&YGIw2lUUWeapm=&cDB8ZvXfkapgh=&JzqYXpUoYhd_n=&8iDat5XcmkUkh=&ZDJkXjYUkqmkW=&NHdQvtUkVnfgn=&CamY6uWXe_bie=&f9_nUcW_dUZV_=&8tSTihXglnlni=&ziCCJMUXaXW_n=&phOEvSWkemZsZ=&bQf_miVqbmdff=&RZMmxmVVrjmik=&mDjK8DYpUiVcV=&r7Y8MYZZslWfr=&OgrEo7Vqnbpfr=&3d3HA_XjpYVbe=&pbl4cGYjrVcdn=&NY2EvoUrdlYjg=&ReHz8OXVoXUck=&wfJ9tBWdhcWcZ=&V_hZ7HWWbomhn=&hMEgbVWkrnaqU=&GlcHxTWndnjZq=&qIEdb8VhhfsqU=&cM9LxeUjVlenX=&QuL2dIWUUpenk=&PwRjZjXimn_Ws=&TffDRpVmfpZjY=&Xtcc_eVfWmhlf=&l93DmiVXYmUUj=&OKYzshUUojpaX=&btsEg6Xjenife=&TGFUICUmhodqb=&B9r4_ZZjskccV=&Bsw83UVWg_UWi=&EqkKGmUW_anmo=&aDlmPXWkfbjVb=&nXsVMgVnjWkhc=&ey2RIfUf_gXVb=&PzJjTdZrjUUkm=&BM6OK7WadfVhh=&AIIYZFUpZbjpg=&nCR6UXUqk_bsW=&VOjK8CWcgncds=&D3AVUGZWsY_dX=&85N4DQYWjnegn=&DwOofOYbm_nlo=&ELQ2lQZUliXbi=&QfeAQ9WcVdqVr=&R6MQPhZpcWi_Z=&3D9StjXfspf__=&DMsREqZrmicsr=&KyXPhAZnrekrg=&Q3hcqXXfjmdmX=&_xolN5WXYeVjX=&_TDVpGWedcVp_=&_Ms9YhUUYmbjY=&bngO6JXXjYbbq=&jbCGp_UVfqrcb=&OI9sfQZpqolXY=&NallUlVhfVXcq=&pFhkZwVpojZcn=&KAXyC_UXYn_jp=&UG8bUXWamijcX=&c_tiDSUYmUWhW=&tAgeOXU_rchab=&lfIQMsZfemZUq=&EU8LBUZmshcpf=&jPmUNwXcgocUV=&MC3XsxUmbVlpj=&dKDYpmYXrklba=&uzCvbLYpapg_Z=&hTl_NNUidYWYd=&8dpVl6Yo_Zia_=&TmwJmEVkkcUnd=&Ii4GD8WmoYiYq=&ddL9ReWqpenmh=&fdLC89UeqZqia=&qfcsa5WbVkkai=&ODVVQtZdcWsro=&y7zGUPZYckYhV=&gFC3o4XisYlle=&XjF2bAUfcprWZ=&4LgVpyZkYXkWf=&44YHiZUZhVkik=&XJuTGjVbmmngs=&xWT38xXmgpfbr=&LxiHgbZsreWla=&VnqOkyVZYeaVc=&TSUn6YVcVfjhp=&D7FVLXVhocmmo=&OxwM9FWgYdrap=&6rGUeJUpf_Ymq=&dlnRQyUrjfY_m=&D2StFpUZfshda=&3hdTbqV_nkdfV=&xV74FEVdrfbXl=&p9PYlnZemqlhY=&v_74wZYomnjrb=&VQHRskUjefkmo=&YWTK4pVgWsdUi=&GvF39dUpgcocl=&cNtJjcXUedWqj=&dPfX8BXjhZhXV=&IzltVkWXdmgcn=&TXKCscWrlabbV=&l6yeO6Zkjnplh=&nI88oRWqYdiWk=&3KYWXdXhocpXh=&qrakUjVoWnbck=&SWvoYIUppVV_q=&nnMbecUbdrjWU=&cVSNqjYZk__Vm=&UwzdNfZdYgrdh=&fEBdXGUlbUehW=&Z3iVqcXbqjdbs=&EfKpOfYYjfkqY=&ZkndTaVmcWnjU=&UdyumvWsjkg_c=&qG_GiYWbgYrdW=&O2Qm7eXmbWfZe=&dLu4XdUpblsgf=&_3VeZCUcflg_r=&hVQ7woXqssXX_=&DKrxZcZcgmbXU=&MeqMsyUnllVVm=&SzcOxgWoqoXUo=&pj4iLSUopmVar=&4Y6NcnYbaafpU=&IwHACAZjmenUn=&FBe57WZjVVUkl=&Vw34TGVrlnaZf=&NyluYaUoYlgWs=&FabbDCXVmjepZ=&VCvfdgZUaUkki=&dCwxCAXjrrejo=&E5tLBVYYoY_pq=&mGmN4wYdhsjsW=&D3vnZyUjX_sV_=&kDefTIXkZsYrn=&VjJBnQYfcfdbW=&calDfgZbjWVo_=&BaoC_6YqeqVVh=&YNUcY7XrZgZqY=&6_y46yVeUg_gj=&UbC7VpYoh_eqn=&zjZcZSVnkjfYV=&P9ZU4vUkWnhhm=&7lZ5UpXjjpmcs=&LKzDRcV_lXenr=&6BT7yYYramrc_=&MHFjuVWVeqsYk=&oef5HpVjf_gjW=&3C6BKuYqqbmpl=&t8kXzoZkmVr_g=&saOCS3ZedjWlb=&ebevY3VVrmdUn=&ZtqvWmWlihsaq=&GEKoBEYZWhssq=&QzLgjFWWgXZpa=&_MDBdWV_bVamb=&QbxXUoVrUamff=&pSldbPWiVjkrp=&eFzxawXbpaopk=&BeZ43RWhpaeWj=&DeHFm5UkhjifV=&ugEvJZXWbsVsZ=&2l9riCUagnh_q=&2njmDuWXcYki_=&2rinjvWfaaXgi=&PzKkgWYiqoiZs=&G99ZBJXaWbcfl=&wPWKCFZmhjgbZ=&Fk6iteXXqdj_k=&fTyCcmWUbZVpl=&SsVjrKWXcaklg=&l_OrpGYihhXba=&qcklmDWnWpqmp=&CV5BSYYXkcYrp=&QVgMSYVXfZann=&8m6OZgX_UrYqq=&rCIpSiWrsYkdb=&5IAtdkWYhdgVU=&8ej2R_ZsbUcrW=&VSLFFgY_WWfYk=&QaYqJiVsbhbsU=&4P4kCJXrkUYrq=&8kk2HvYdrUpgg=&BaIbGcUodVmXe=&F2beExUcbcsaY=&txbltxZsYfmUZ=&w77zmTXalWcmb=&9vzcg8VpogcWW=&SAvmGPViUeXWj=&iLjxIEVcVbjVl=&TbEezQWqrcpoi=&m3xKawYeZUskh=&pFjPW5WcqcfXd=&e83ETyXqncqef=&BCc7siU_gdlkk=&tPvyG6VZbisoo=&VompBAWdehaVZ=&HHZOoeWqanojg=&GoIO9OWZmssoc=&PGaFB_UrUgocV=&fcCMv6ZefprVZ=&8vpyopXncnmaW=&m3CHuhUgpfdc_=&OLGVzbZjkoq_p=&Q5IKwVYfrq_fr=&SSHsUeUrkdahr=&6kOGUfYooYXUU=&937e6gXlUarbc=&LvxrDWZrlhrna=&vXZAgmYphkeig=&YF3DgnYlmbm_Y=&fg5wFKVlseUUj=&tI_H7nUhkggof=&uJltlAZkrVnre=&jaaH3lX_ngmhl=&r_M_KWWqjsrqg=&GR37AOVpYjdca=&6hMR9SX__UXZj=&OHZqPCVpXVpgl=&OaFlcyUgcfhmb=&NRQpYTUccaWbo=&5i9wBZYZafUUj=&ElR9ZhYaXgaeq=&_lJkboZfffVnY=&s_sKuUZecekUU=&YzGCNmXVabcXj=&RpAwg7XiUl_qX=&FVzqdhUjbWVha=&qUsIxqUfaiagl=&__6kDCVrahrba=&64oc3kYmhlqjU=&jneJoZXUVmmla=&vgZSxHWikoUdY=&8seSOpU_omoYV=&947EbKZgiYkUs=&LxrC9NWgVdhnp=&Smj9MEWqsVnYc=&7U3e3WUnjfcpp=&vyavnAUnqdgbl=&xT_nNGVegoaYm=&A4q_8zWUUldkY=&GLcViBUogWfYh=&97mgn3UUioXZ_=&ZD5FicVjWVgWr=&ieRyfnUgWgbaf=&CLw59RU_amYh_=&lvtFrMZfVlVeb=&dLh_KnZkbhieo=&ZKuMIeYh_gVee=&uFHzrnXmgbhfg=&Ft4FvDUnceamo=&KhVvnHVceh_mo=&zWuYrNYbfYcXh=&ERIuVeZnafpnY=&QbGHtsWocffXX=&QmOPl8WhssnoU=&h2lWaUYgZcbog=&rxp5U8VlaZ_ph=&FJjKQyUodZcsg=&rHF7q8UeZZgYj=&DP6LyNWWioiXf=&w8G97kVhfrjqf=&jR2SupZdWpVWb=&rMBp4XZscjnqj=&VQwoxTWllaWkg=&ezgk4qUdbWcbs=&xka5aMWUaed_j=&T_CjWGWUfrrqe=&eBhqrsXincjpm=&uFUBYtXamdrno=&kPnOQ3XmlhUnl=&nUS_G6YXcbojU=&dxJTrnVVjcUia=&naClxlUckqqiV=&9cqPEVYXVlhYZ=&7i7VnPZrVnrkV=&b33P9FWornYfV=&OohFVEXrmjjXl=&2MUyn3XYXqofo=&quKvk5VkWblqX=&dtjbLvZcagcsk=&vx_cjFXmjbgbd=&Hlx3asVVmirXm=&F9xd2iUi_Urgo=&bMSJiGXcrVqme=&pAIiyNZhgnlcl=&CnEJ7aUmXjjma=&aPOWHbXWnohps=&jBvRj3ZeaeUiZ=&IyOpVqXcaZfae=&_cOGxoUgfnokc=&qRoodnZZnkclk=&L5ROcLUrZWsiY=&FnePKKVmogsoX=&8xdgIpY_XVfdf=&kvYk6LXVigghj=&ZiCDaHWofbnof=&f4fOABUfjXb_n=&SrwpmYXjafsfh=&Z_Jw_5UXZgnUY=&4sJibhXhkahqm=&WP68SYVknjjoq=&L3YBRWYjhaXij=&y8wUzDYYmaesc=&8EmGi_UbqhYoq=&JNKjaiUUfkrog=&sWyGpQVXcWded=&TtMtflXdqagnj=&gd87HVZreVpfc=&U5eT6sZqjnaii=&b_FigcYhZeXme=&aUGMwGWUohrfo=&LSXFYtYgmcmpq=&Og9gQAWVfeqnk=&AkH85LZqonegc=&mPXcKTXcdYjip=&McbmR7VeYdh_q=&LCLUpxUlYnjVZ=&KnBXwIXjjkcnc=&sV6uRjWkdZbYU=&X3pie2VUXba_b=&4FhFhaWUqhZdb=&cLTUVHVhjmXsf=&BzjjZDUnrVoWa=&Pm8vhCWZWisYk=&7GzKvKUnqicsq=&cWDqEnYrX_kVo=&IoMktYVeZgVfo=&JpZzKJVdgsfXk=&xQ_I6QWjelbrb=&GDvEggXfVnYsf=&o5n95_Zqodbcb=&Evvn8uWcercZp=&HFIbLKVZXjdik=&IXIwIQUYlkkkb=&FErZikUjZZrbh=&yf837cXnXUUlX=&mMf5iLWWgYjZn=&Gpd4qYYmlsp_e=&hsvLWFWis_lrn=&T9nBrXUpfjblb=&g5IgFLUnXedXf=&JsY2k3VdXbZsU=&ISwLuvYickecp=&NjkxJsXeYdZdn=&YJndCnYZgfUh_=&FcgUHgUjhbWWs=&BQtjliUkdseWs=&dNCA9bWkhlknf=&4Z5wHLXlhgfsf=&ZtpNnqVnmWXWV=&jPeVSNZggZYeX=&zUnjqzWiicjc_=&lA32muVbYiWje=&L8t8EkU_rUhpe=&JzQD9JZmpYbZb=&eiHGrBUlsVdad=&4FdcAQZfrbkeq=&sxgv3IWWrclfo=&TXIMXQZjXnWhr=&WqF9PCXklambW=&EdliotZlegXVm=&OWJXaRUmp_pph=&uTrvM5VdiZfUs=&ZWQGJNUVnjYsh=&DBrThSUijkmiV=&pOT7XdVZccips=&PEpibcYkYhlYW=&jI7TzjUaXlbmq=&UfyMeGWWqUprg=&XaHljpUnpammW=&x4YPbEXUicjpm=&Vj_wJJYWkVcam=&WNDNuZZknlmkm=&CV2Jw4ZbqjZfo=&Rp_pXNVhpoejU=&7qVt9_Yelkhsn=&7TXLVXYZZ_nbg=&8RCQBaVlednYa=&NLaixbYq_ffil=&JI3ayrUk_nZfq=&Ozd7eAZYfj_ia=&MGIj9lWfmZkpi=&WfjsNZXXdalfU=&DP5ZtIWmkYXfr=&HXNcgFZr_iq_n=&Wdoa_BYZjfame=&PXxQaGWoscoga=&3Ak_dpZcgUjaV=&PTznybUXYZVoX=&axoP9JYdibX_n=&F2EYPAVlYrVsW=&oyoYlgYig_arb=&EVYN9MWfUbXbZ=&3euAzkUkUnleq=&5dUzx6UrjVj_j=&PcOpU4UqVegfW=&clAQ_OUqhoabg=&_vFqjSUopaWsl=&w9HkE8WprdUqY=&3qoMDpZZjepr_=&_L2Ha4YmcUUfg=&5XI3zrXmhrrUa=&zU5QoEZqggdVp=&qRL8xtY_XkfbX=&vhJjHBZaZnkZp=&h7gDnXUbbpc_g=&hni9f3WUgnZrZ=&YeP8jjWedVsni=&Sg3X78VUhYlXp=&wQnkKTYfUsjWr=&preEg3ZeUdjrj=&NsT4WbUbmfbsa=&p7Fm86Xlffkbq=&JFXxAaZ_eogjh=&AmiWTgW_VjZYb=&ADS9mRZjiammp=&riqJ9gVhieqrg=&32fmPvV_madqp=&FJjpHMYeccVcb=&n3Z8xuU_ogWhm=&m4BjRTWsrjjj_=&hDWEUiXVkpWdh=&cDIYl4WfsVb_b=&LSEzEOYkojYZn=&klHDalZeniYUd=&lR5KEIXmmWema=&evQMZeWcVXYnU=&cLRVGkUYnloom=&KpDFlhWcallem=&H6fFk3Vkkhdpn=&j24SsFZdUslYi=&_9APLpYqlXhgj=&ZZKWWlWYZnnhk=&oPnqskUrlrema=&JD9oRfYaWcdVd=&loo8TvVlbi_ek=&hQRBhhVssdWdn=&7owIAxZXssabZ=&XDOC82ZpWajmW=&7UNkGAUapofdX=&JTJFqTUVpiXmr=&FLPJ_YU_aYkgr=&WMdYhGViqcbsZ=&Zdme8FVoVXZXc=&uCmT9YZfceWms=&eLqyubXhfpokl=&NhDz6SUhfjeYr=&u3VHy_YhgUoUs=&vhJ86fXXfgYse=&N3Xa3DXkkbr_p=&MkEDnjUksfflb=&jZUdYnVicUfan=&LGOyv9UXnn_ms=&VD_eUvYekVoZq=&MhkgtVVogpWpn=&LAh784Wncnreo=&qtO266ZscfsYb=&ZnY9xqZkedmis=&zIcKnjUgYlZkc=&QTkd9uXbrbdck=&nte5SOWWq__mh=&r8xItwYsdd_hW=&bdqQtoVbkU_Zh=&lby42lWbgnkfr=&xCqeWMVcVZqZi=&NFg8rwWUiriek=&52nsJtVfdmlgZ=&pTcmUfXjnUWsn=&ZA7F4oZ_Xe_ig=&JgIeWdUVXpghZ=&CggogNUrnnbfn=&FdoSJuWffnUnW=&rW2YUMWhVelas=&VPutrBXkqi_Yh=&OycBKkUrYeVcY=&82Hd2VYqejmsW=&zcukckVbsUecm=&6NQqmRYXiqVhp=&3E6mykViaesf_=&KkGtQwWlfcerl=&HZ3sZZYqkYhfp=&6MhUOqYqnnisb=&hPoGSEUndiWXk=&uF8MFbVoekodp=&wMLjhaXcmUrW_=&PILREUZpdor_W=&KwODK4UXbXdUn=&y83Ra7UXmrcre=&ttHffeUXUUedY=&VdthQXVpcUhqX=&KRZVTjWXambmk=&mb9yepXnnUVkl=&jT7BY7XfXandZ=&VPxF39ZYbrkco=&6t_sVXWhhaVpr=&ltQx3eWqVZlXe=&OY4a_iZdmgriV=&ZmVhTaWZjonY_=&gpgyITXmocsqg=&uEatseZZmorVU=&JjlDFlXYgfoXa=&nMnprsWcYYVcU=&fFzcO4WWoWndf=&zo6cdQUppcrin=&32ixaLVYWhadj=&hufgFnXY_msVb=&vfdAHJYdfqphW=&wIKXWuVgVcmYa=&LkNMKWVZbhkrU=&qJGPwdVUoZjnW=&udtlhVZkZdrXp=&fCaDinZWhheof=&HxEDnKYoVZdjf=&8dbFHnWgomYch=&siXbDYVkZodeZ=&ob9bcAUdqoime=&ykJin_VsXkric=&8JKi37XlqlUiq=&Cyua3SYialsae=&rq8bMcVpWcgia=&XVdoOPYkirrlY=&sUQgU3YUbdigl=&QFvvNYXinjekm=&ih9lzlZnhpphr=&KAGINtXsUjrbX=&4ccBzTZbcickX=&FgX2crZVolkas=&ROhrvKUYesVoa=&Pgoie3V_WjjXc=&UFlNweVralXeo=&zrpGgzXasfefY=&gAw29gZnXlknh=&9sA3SpVbkXXUY=&v73g3rWcngpfi=&nZpB_YVrdlebs=&NwWMfEWZhegsd=&WNfDNaXaUnWan=&z_qKyCXkmXlXm=&2hE5xYXrpisjk=&HvzEYmXXsaYhd=&8d3LmHUisYlck=&VqRaFGXdamsZd=&ig7V4RW_bpVYn=&VYKW6nWaoliVU=&Bxo3yhVZqhkqd=&JTVRAMVWbclnp=&NpClfaVjdpcqn=&8xPP72ZXghaqd=&unsQHGYXV_Xaa=&frvt3xYVjbiZo=&phYtnwYcdXsUV=&lpqFzoXX_gjpV=&kDIOimZrejYef=&UCKAzNX_Unjbj=&mg7KkuUrbnZrs=&UEAD8OVqqiXnm=&KqhAmAWjmrqk_=&qoxaTHYpmXk_k=&vKiFZYWihipVd=&VWx_YjUdjqgVX=&Dar6AuXUkepoe=&d2oQCzYqcealf=&gMaTdVZkmidiW=&HpkHOHWaWcbUa=&CAGXdwUUXibhs=&alGFrjUdYojZq=&W3vV75UsisohU=&NbZtdqWVoXjsf=&b2dijeVdagXgm=&DlfWfGUXUZiXk=&sMELBzYpZkhVi=&NuHPZXWrqVgmm=&EcakZ7XUj_oce=&9wUNZxW_Wemg_=&ddXzT5YbriXch=&zLtMMrUdZooVU=&zkGnBsXrgdXnp=&pyLrYDXfon_UW=&GbLfVmZkYqqsq=&BBoOXaZ_dkXmd=&aetW8sYYcjcZZ=&6yupBYXWnWpls=&IgSGEYXWoqbed=&DG5VFVUYnbjpl=&Zz9WRTWncikYe=&o6fCxqUrhmnep=&egizgaZfmbhoo=&3SGUl4XmeaV_j=&xbpE9TYrXermU=&J_3QYAZipVhik=&AEPvXhYbnohcY=&6FjnPlXZrVYbY=&h9npiNYcmYaah=&jeSBphXfW_hXb=&biQY_gWgYgeis=&duf_p2UYjd_lq=&hgGAwoWmaisYo=&5CT5WiYsnedjr=&fouznSXVVqrdX=&5FbcsUXpberWn=&EvCDVJVficXdV=&QxqTC2Xpkd_UZ=&RAN4njXngZndj=&X_njHsWdY_edZ=&GtLGA9W_jnnVn=&rC9OjtXUjdjg_=&YpOUvWYZYcihb=&hI3hgVVcnpbUa=&hZZjLxZViZngn=&yhHfTJZ_eYWcb=&otJNinYsYphdU=&3s5nq9WcdYeof=&CkNtNdVqsgaeq=&MzrGpPZXolYsq=&EWXGbNWqrbgeo=&F57YSJYrgqo_U=&kxuNpeZqabqUq=&jOeuceUUp_kmb=&tOZIsrWflqkXd=&QILE6PVrsgVed=&GshcN7XnrlXik=&zfPPolZdlXmUa=&tWMJbjYmepgoi=&T2jNcpVVmYmrZ=&KmJgChVlodfdg=&H7NktnXsreeaj=&m4QI6XYkphgXV=&P4jIlxZmihebX=&UP5qulUVegUVl=&OpePIEWeUhjpi=&JyIr8OWgfYlff=&znfF6WZjnfUpr=&y7eI5kYfpfidp=&sxfb6uWcYrbUr=&9JWSdbUZWmp_o=&Cx2_P8UYbXnsc=&V9pgKGVha_hrj=&YwNpNcXjlWbXb=&6YqjYOVpaXlpa=&AvxVakVaYXlUj=&FSYNZMWlpoanp=&3agm8RXnphgra=&vUjBdNUlhgrba=&kZe5GLUodVbem=&oMVANTXrUhash=&BKBERPYcZnYaj=&JFDrTZVbhcsa_=&GShgWKWrcUdgi=&X3xyN9XkVpUmf=&4TWUkYUaZcZVW=&d77ly6Ymcmnsb=&zs73j7VlchomU=&jYbrguWbfnolW=&zQhqgBYndeUZp=&8qoHVLVmVhjjk=&xNi57TUfpkke_=&hsuSAlXlgVfgr=&umfuikVlihaaX=&Mzry3KXalYYcf=&Sbm8HlVVe_rWW=&IyowkeZckXlbX=&RbZW9gVhX_mlm=&aOlmKKVrhXjnY=&OhrAyKV_lkUel=&uCfXQBYVelbUb=&zPNqu6YacUblX=&Qb3l9gYabmhhe=&JuBqnwZjcsXpU=&fxHZCtWmmkrWh=&8Ua6tDVqnXcge=&4ibUvNZelokqn=&vHiJkPXVeffgr=&fKHYmqXlhpXg_=&DcxlT6UdoXqZp=&vDDDmVVraZUYj=&NRyFmAZUdkneX=&l_mQRgVqaWnpY=&rnPpf6YfUcgWq=&XL9CKGVZcriom=&sSO7Z_Z_sheqm=&ECgQLjVfWlpdY=&PP9KR6XnUUqaV=&LsQj5WVfrXsgf=&nwdn2hWbVcUlr=&KhRR89VijqgnY=&Xf3wTLUbaXpnf=&sXgq93Wsk_esa=&oy7xohXqappdZ=&K685SYYrUeidl=&ZQqOjhYZdakpp=&FuvuQhXdklggl=&TyD6KqWn_cYoh=&eg5pzmZYkXplr=&BYDptLZsapfkb=&7XvciGVYnacha=&MtEczjVjillpj=&fE33mKYXqgUVm=&4FMcaBUadZsse=&t_nHKpVjjWUiY=&Avx9MkWhhVblW=&qNhvXeUppfUbp=&SUxfHXWWeVkpp=&fWfgCGYkeoZm_=&4pxBeXZXjebak=&_MENKgVXfUdpj=&jCB4B3Zfgqqlg=&XFappJWljlqh_=&UYyDKDX_X_kjo=&llCFITYXnccf_=&l2u3DyWfWbVri=&xSxdmCYqmVUkn=&rkl6RpUipsqmn=&gF__ooWiUcsqW=&FkvsSCXnaqqde=&LtowYQYsWlekW=&LHK6aXYVsgYsc=&sfPGamYghhapm=&ZvWR3PWqeadee=&O5IWeSYoZnain=&o_fBzBYUrbpXb=&ycwOFwXcVoes_=&SrJybCXXlrhbi=&Jbuh7QYgXZlnq=&Fuqwe9Zoqeips=&IyNmwDVdZUogW=&CD59kyUc_ahnc=&BKMbYyZgpdffY=&X_nUxbXYknhsa=&YqYMieWaeonfn=&A6K4ElXWogfZj=&XNUzN3Xnp_qkY=&KFQjhuY_qdWda=&AOzUVbV_VWlfs=&feE6gKZUYfUYZ=&6ymSA6XgrUnok=&S8htOVUUnYkpb=&q4lQRGWpcadYc=&eX6lyCVmq_dlZ=&tj3cUPXjjYYnq=&LMHLfqVrXZXo_=&K2MYXbUXnrhlb=&ruIxggXajhkpX=&GNUsRWVoqfejW=&cVq2MoYhccnhY=&Tygq4EUdVkmhY=&csUa_4UZcWaor=&SGnezoVgcp_Zs=&WOryuhX_YiXcn=&nyulEyWjn_mel=&qlczR3UiqWmsm=&X9xOMaYprmsej=&wyVwEbUZsYcoq=&r6cCfCVYlVgef=&jeNkEDYseempn=&URbddLUWUjgdU=&JZuZgMVmeZVVa=&Wj5ijhYnUpikq=&y5UH9AYmnjgnh=&sv2gRtZrcZdYX=&2oPIi4YUYbUVa=&B9oGmuXebmsqg=&i_qjQMZdjajVr=&6yuZAyZqrqijq=&cUbkdHXscrgnj=&Ww9u4wUWVmfco=&DmvbMwUqaYeck=&7G8ncBXrfhWlp=&SGBcQ6Xakcjbm=&_IdbK6Zanpnai=&URccZEUWkqnhd=&yKDC_6WYkVllo=&qxAVYKUfVWWhk=&5dYT4kUVdUcU_=&d2hAvbWjdjfii=&v_Ut_hXahqcsm=&Evs_EQXYYqoiV=&ndmIffYVnUU_Z=&MROtDuZerbkej=&ljATjLYXcWgib=&uOst7uWkUWWZl=&JJdujCVbXgknb=&RSjLR4ZljreaU=&aptMcNUoipolk=&y4YKX8WfhUqm_=&5MIfCUZZesmjl=&Auje3tUibipmb=&akV8dSVUYddoj=&AYoF5cVpjdbdm=&yEwxFpVgla_rj=&MzqQZ2YqUW_rl=&OTN8yXUhgloYj=&jYvP5WWZYsZbj=&IHIBgoWgpfqds=&PiTClSZdrjoVr=&Pz3dfOWWdeqao=&5D3_6bU_daarY=&mtgdwiYgjqjZU=&OEjAayZphl_Ys=&uFBAC3YUYabkg=&rzwxb6Wmosmfj=&HnVzc_Uipbbko=&eSiwxwYWabkoX=&kDKO3KZdmleob=&_RRkktUZgkpem=&imevJ4WYhcWba=&MXsm7TXVXibXa=&NOiQQPZYqZhbd=&8o7mr3Wskoaho=&shDaQcVohddWf=&4cV6spYUXb_Ub=&OkU4_zWZVoidg=&dbbYDHZognXlc=&m7SMbgVhmneXi=&pADlV5XUjsYXW=&jtvnsHZlWdbq_=&yinutrY_VqWle=&UkDjJQUWZoZjd=&RyqPQQYjpbW_k=&BSFlMrZskbbnr=&mGYCZbWlqlp_e=&gEwcf6ZecgXhs=&MOTWgJUooanll=&WEW4ZaUVpssUr=&fqfAZbUosZaW_=&wIBwUMVmaogof=&ARxkIWVipsYoX=&yGll8uUrroXkr=&qrxapQZWrZdag=&RFSMbIZpehffh=&T4f8vHXamkpmb=&BbIwXVWgddgra=&Lq2KM2UeloksX=&WHEJSrWjXsdYr=&3_iEWdWqYj_Up=&LfZYZUUbUso_i=&62vOumYsZmsde=&apRazrYeoYspc=&x7eZozYkelZrj=&Oh5ApfUWUYYeg=&liCUMRUgdnhmo=&Q45CvdZeYmUhk=&hwHQUiVmnUfom=&wyjiYyYXhUkea=&GOWT2zUdnompZ=&KXLwOnZkZVj_s=&iKb5aDWVeYpYn=&9pYe29UkYhZWf=&Vn_3yWZafoqeh=&_vt3HeYkabhld=&_Fm2YtWckhcdk=&CzP7PfUXkmdds=&pYFHOYWgoskme=&NC84ieUogprnf=&7SKLulVo_iYjb=&tH7gI3VlWdgko=&fDIEdAUpZ_mVZ=&btZAiVYki_qof=&FYZrWIXrmZdWq=&4dqAkxYlhdUqr=&miKBa7ZV_dnVl=&XZnR5YZbYikYj=&ur4b2ZZjkmpZi=&ncS_HkVieVbrr=&GxzzLhWbZcXcf=&opTI93YWhYVdg=&nnJOO8ZgabWcb=&HPTLJIWbpXUbY=&wxvP9cVVjrpUl=&kq6TyXVslqXgn=&_8XBspWYbooXr=&LbFc4qYfesipl=&p_6DyQVrakrgj=&E6GUhEVcca_np=&4wzAT4Ubojmpo=&pStQl9WkqUclh=&XNIzJSZ_fZlh_=&cWIaZnZpjqqms=&gKqrz9Vhjghch=&QpPg4CY_fqap_=&8fDUmuVigfgs_=&A4EfkCZ_mVVpn=&2Et7qgYoUcsof=&7aJ9ZFXeiabqs=&KKNikgVplUZjd=&2tY3VXYUodcY_=&Al7rRpVgqglZs=&isnJqHVdrWmjg=&8cJAI9ZqrhnjU=&wgAxnwWlscnYZ=&sa9n8hUZhVUfq=&56LKC3Wmilscs=&IIzYCdVnamrkW=&ZJfJcUYpUZXos=&B25rTdUWlsaon=&t7uA2vZnsV_rW=&fO_SxvWqphjgd=&_mVWBhWprjf_Y=&9ttFk7XaijmfV=&6L2iQjZXUVjXm=&kodXxoZfVeppd=&Ec5DY7YpfelZi=&BlNXwsUqZWkbZ=&HvvxxfUqpihjo=&xQi34pVdsscos=&PH6TINXZheikV=&Ur6LJMUrgflff=&B3sOjjZfgihXe=&j4lf9jVka_nsg=&XXicj4ZkkmUqm=&DPYyHNWcqqqip=&8SLrQnXXqrYii=&ujacTYUUoZki_=&6mkVRNXsbWWUf=&FI8K6vUj_hlVX=&4tPwpLZbpVfrW=&Bs5gkJXninWdd=&bS7zomUgpjVnp=&C9clpOUkoWedU=&tCB5PrVUVgWVm=&M9YuS8Uqnirbn=&HJGLPhUqrVqhp=&GevW5QWZieYni=&_Q35uZVomrXUn=&MGrdIbZn_mmbV=&fSJioIZjnrkgp=&wP9pooVVlbflf=&ndcwrnWkdXiih=&GmUrM4WcUomro=&XacgzNXkdokVd=&aKkEZwXfWsWjX=&gOzZWLWYrVkUg=&o9JzMRVppgcnU=&JTlAvLVkqXonj=&Uyh_MHU_VZaeb=&YfgbpqXd_hfVh=&r7fkbxZ_gmifb=&nKFb6AVXhYnad=&r2FPjgY__UbZU=&QHmTQJXeUjgam=&n5he_4XmeoYXq=&PyYQqrYbblfXa=&BMh6grUfYchZk=&PnsaLgXhcelkr=&WA2jTQUbhgrsf=&QKWmuLYbZUZcn=&2pnflqUppZbph=&iw_ZoDWWfirqZ=&7mb7TcUYXhkXU=&C9DrbuZeoioZa=&StmxeyWfsYksW=&wyLD2YUonYed_=&FlnH7nVUrcoYk=&OJqJUxXjeclYn=&jp2MQpXqZbsgo=&9pY_M7ZWWjpqr=&STMUakWbalpl_=&iFdkRlVhhnWoh=&S6Q4OyVdnagfj=&GJcgvuXnjbkgj=&qwkwiAUWdsgao=&AijYmnXnh_rfs=&9igCPbXYZ_ajg=&ymHpcNZ_UaUsp=&qHp5QpVgdZYeh=&lZM88BUaqqedh=&K9ZE58XYqp_of=&VXWvwGZfYfkpi=&soH8uxWpsrhYr=&sgnxkWYXcgYlZ=&xuObmvZXdYUar=&GzBwspZVWY_fd=&Wj4k7QWgfkmjp=&mAkzhDYZo_sri=&r34NuwVnrVdfU=&MCJM8sW__jaYY=&cSDjQwVVmUd_Y=&PYpQhfWnajaYZ=&BJyo5kXdgiXjn=&U3bFmwYalU_qi=&Do2Y_6Zpjcj_g=&pRnbkEWmU_boW=&SvDCtuYUcrjge=&UsF2znW_YkXXr=&Tz6bxSXrnaqhk=&FqVbkVYUrqVgh=&hR7WF7XUaVeUW=&RWIqN4V_Wjoic=&vlQrdVYhdp_ba=&dASptsXefZsWX=&VX77U_YUcecYZ=&5jnsG2Zgq_rqY=&AXHM4lVjlgnYh=&idQ7LKYjsgZ_d=&Js5ey9ZUaikZe=&BcutL6Xbspcfn=&o2abjdUYZUsjn=&lHxuEpVVVpbi_=&DO7_JoWmpYagW=&Cmfy_HUgoj_lZ=&aFlgc3VYmsUca=&6VvtgGZiVUZdp=&ekTvZoYahbefZ=&tgAqL7XbbsVXe=&jo8eEiVYdlWfj=&4TvMlZXaVUoia=&_joWskWiqpfWg=&7M_52WZnfi_be=&Tewl9OVUsdnld=&3BOqB8XUjdWhi=&Eyxvr7Zlbdo_U=&8IGJCNZajqome=&BDTamJXgXgbln=&hpwBakXomqer_=&Gfry4HWgYhjYb=&hBg9_IUYdalmr=&f9yNYIUhgea_a=&87CsEmUgfei_X=&vaJx2rZrcmWWU=&n43SweYsoosbW=&RszyGKUXWblmm=&nzQyZUWcW_lgX=&X7OzB6XaqjXik=&MSC9C7ZdVcpXi=&zVCoSmVsalafi=&R2YINMUdnYWVb=&kJ4ChkUdmqVqY=&GfQCpNU_mkaYi=&tdBYa8WiljYZi=&shUvxnVrrndjd=&VCHMiyWYrhhkW=&XlrdeoVjca_he=&x3DqyEZXhVZYY=&aCjPBXWgmYYkf=&SRBZcRUo_Vkhn=&zI8if9Yqrpppc=&XX9iZVYXVqgmf=&lWfJ4oWdbesde=&rMHPK5Zhgo_qo=&oUNkBMYek_jnl=&vSiFH7Wfmolem=&nkQ467XsilYZZ=&wK6QBXUbgbmmg=&4ZUtk7V_o_cXY=&CQtgxiUhikX_h=&YKuscFZfUbYiV=&y_Dyn7ZqZdZgl=&VO5duRZYhfpkW=&c6ZrvHVcbosca=&sZdbRpVokUjXn=&kFmEqBWobbg_n=&ihm9vdUqbkcaV=&Eclam2XoXWXgW=&OVQHN5UmiahrY=&ePNnXEZWVp_is=&PlMMD6WcqVYaa=&uzu4ywUiqXibp=&prKNPzZkifcUi=&rkrZr4Uee_soc=&JHzSTlUeZZYYY=&NA4O3tYmZjYbV=&cqyaLxWlbjqqY=&OcFUfaYpmmrUr=&YlhukPZabninW=&7WGfnnYrXslVW=&BFg5b5Wc_nk_n=&yhMzNlXn_giqZ=&_BVmQHZmbWmpV=&Wn5aERYZfVkrb=&XancUVVmoVaUk=&R_IZRNUfXoWgl=&mxbYGRVm_bnYl=&PtsJTTWpVUrUp=&r4ulDDYmjlUk_=&DsYV2pXpkdZni=&DmMY_LXYWhhrX=&9qxVlFWgYisja=&eQxRApZkWYrcs=&E6MA4tYfefrXs=&eDNFSTVosklpg=&IRZTyjXlnXhnr=&nxWczWXdqYcWU=&YHkPn4VokUWjj=&HSqddxWdegbjc=&3Xv7KzXVqYgVd=&Q9YwIdWaYoliX=&H8CXlCVrsbfgb=&Gglg6AYXp_nii=&A2DAuyVjdpbWa=&cFa_PzWqYdZeU=&IXbfZIUfWpZWc=&IYbS5pXrmXZUV=&eJWgzpWfnpmen=&pFOTxPVggrebf=&HeHJj8UhXXpWa=&VgqNzFVsqlWbW=&DqzT_JYefpsds=&rW32Y6Zlgcs_U=&rB5QRyYffqegg=&9QXDLXWdVUXXV=&N24P9qZrUjdql=&XIZgZ7WonqWf_=&85ssMWWkVWsbe=&y_PqPuUbobc_b=&7iRtHFYi_hilh=&L3keneUsnZmra=&ZGWGPKXgorkpi=&ZwnPsDYaXaVpU=&RE6Us6Vieqknq=&6oTxOtUVshmch=&gLFua6Zfjenrn=&rypXR2UdqbiZZ=&Fz6jyJVcZjhbj=&ttnI2aVglfUe_=&hkRKTlUUfjjjr=&ByOfivXhWVeed=&WmNA5hZr_Uini=&7EguvLXorZdkr=&iWI7DKXYe_Ykj=&9phHFZZbaUjmd=&MMUgNcXdibYlY=&KVOYhWYkgpaVn=&pK6co8VkleUsW=&bICFpnUabiiUa=&uKFouvVdchkce=&LySxUkYkYkl_Y=&KJoYaVZkrharp=&uyTKYEZshqirl=&gQEZT9XZoidka=&AeGYefZfWcnje=&nkwDXaXdXW_aZ=&X76_GUWgasn_c=&KIylm5XbehjZp=&MvIembYUknpdg=&HIhooAWb_ihjk=&ZFGerjZkeWYbh=&37OpSeXpeaijf=&M7VQG6UekllgZ=&HGUVxFZrZkrdc=&stxyNFVobUjUk=&kqiOaSWZbpdin=&J9i4uIUfgknkZ=&6bsnu_WWaesUq=&xNTpEGUrqhero=&S4CTfeXlVqr_g=&HavHOiZgbjsno=&A_y3FnZpbW_dj=&L3cIT5UerfWcX=&7YTItGWVcnrkg=&t_HjlrUagjlfV=&ocECR4XoqimWg=&FGyzgpWqdflbW=&LIWONtWsdhaYm=&9fXYdgYYcqZsr=&aOrD5WYahnnc_=&Tn3S5SZV_qhXp=&BKwhlhY_snbiX=&cWI2EjYXscZXi=&Y3cPvkXchodim=&gaQ9EsYWZqW_g=&WcLFbPWpgmoec=&nOXye8Zblbpol=&hJuODSVYUUe_b=&S3yfpiXpnVYah=&eYvcItXUjWdZf=&bSi_oRXjpogdr=&mEnqdhVbgihml=&GftsoMY_dodUX=&TgFQxJYhkjVkm=&spM8q6XjUWjn_=&OSqqMpUlerlib=&IULL57WhdjsUa=&wTDp7jUmaoVhn=&Mhb8xGZskrpcm=&FdyOkBUfUfZr_=&RovxdSVnpsjoh=&nogH89YYWjoij=&eqsj96VqUYjbq=&VhqHtvUdpVela=&9lo575UUdmnbn=&OsvN3TZ_qcoji=&E4YNoFZaXYaYU=&norHAbWqsnoaY=&miqtAfX_fXWdd=&VYZDwXUpsqVZe=&pfTIx2UhiXcom=&jfAG3ZVslqfVU=&Iu5a7sWUZ__se=&MdChsVVqWXeUe=&WNmCfWXgXsjYq=&biGb_qXaioeZr=&rrwKgGYisggkV=&NsQIFCZqbZsUe=&yJ34qdWnlbjWY=&2rFk_PWgojVjo=&CNEggHXoWdaXc=&cqpCsSYYim_VV=&cSenCdYrs_khV=&mURR2iZsaqj_W=&SrjYkEWhma_iq=&g4iutlWprgkes=&PgYtpWWpWacUh=&ehXNKDYlWWm_q=&6H6_OAUpkVpb_=&ubycelXeleZgk=&XTKYEiVVnddhb=&enNkndX_WhnXX=&8CAot9XUbplmd=&mTeRYfYWmVpdV=&FXWCqVUeablVX=&yafjtFZdk__of=&Fc4tqZXiXslUU=&meMokNYeVVWZf=&qubaV5UolgjrY=&lS3DC2UbaUUXe=&mi_ICFYqmgqqU=&QZODNdUbadfph=&IPTxDoXXaksip=&drt2MYVlnadpg=&ihJUj8XVlZ_fe=&9EsD2zWWpVqcW=&N33rkTUjcVpXW=&TIVdLYXsU_dkV=&V7aP4bWWqhXmd=&QUMGOoWahVipW=&WhLnnnZgWmqYX=&awitd9Ublrnsh=&svVmGIVonVUoq=&hi6sG3YVjrlVs=&H_UkXQWgfpd_U=&ekQ7OQVeggkjV=&SKAcsWUafUqgi=&ofQhJtUaqroaq=&jBwjAXVpiqrYe=&4TSeZrYWZeqZV=&f7UBWRUaqgi_k=&I38ZMoVVYffXg=&v9U6b8XhbZmcr=&4pXuMPZfam_kZ=&PR7XNiUdroeml=&3tlvvwXpbkpUl=&fWMvfDZfdomYU=&AsGbRdYhWscab=&3iEADmVsZUenV=&ABrcaCUmqXfho=&6nGvY8U_Zin_j=&is2dFYVrn_jkW=&dWT_6nXYWV_ar=&9Se8keZaXfbUi=&8ArtmeWrpkcsc=&ZPdy_lZbfloZk=&wSe78YXbgkedV=&XeYuJXYX_agWb=&9DVpDIXpXfbdl=&6zZ4xSXdsdoqr=&kNRFLXWqWjnrn=&99TKnLZXphXWd=&xLDViEVhgcmmj=&Fk8YnKXlbUqdW=&Yrye4iUXqdWeX=&Zny3qJUoeYj_d=&GXuqGiWZaVcrp=&kYO3XRXVeZcmc=&s4a2SbUoflqcm=&ZAkKu6Wl_fWls=&ENQgfxZWqspmg=&C7lpOWYsXXlqY=&XQ4WAXXqbkrif=&iqKkXVZUjUisp=&tnLFp_ZWqmodk=&5C5zZGV_kbihY=&wGufgEXqgaWZo=&kcGeXhVicYqbZ=&4SuLuKUjVWZUW=&w2zvJHYWiYirf=&WUaXjPYnZcjdm=&6IAErnUZbkpVa=&Q5GZy7VVdjasg=&mOa2c7Zdifkeb=&E8rEJQYpWsWnq=&4vuGmbUlspojr=&B9Al_xU_ZWgla=&SQW4abYboWjmj=&lRSYGvWjnhisl=&ETZiMAWesiXjb=&OPJQ6OUohnqeo=&ryXTSCVrimYaU=&JeOvcOYdWfcWV=&86cYqOZVaYprb=&GRHOINZViamia=&bGcIzSYUrqrho=&NxqW8kYkmeWfV=&oHTcqfUeYZ_bk=&N_eZqYZdjmUjj=&DezLPtWmcqoio=&NCRa7xVlcXkih=&eFozAXVeYmZfl=&o2Aw6TVUbbnik=&eUqQupYj_jelh=&ihG_toXdinbWr=&N4LBIYZUqWehj=&ZvDvhxVnXqhbc=&QJeuWhZkZcimr=&yVhuf_Xkpkjrs=&_r5SQxV_radqW=&wnos6oZXrUioU=&5E4fb6UkaskYf=&oEbPj7VdlYjWs=&YIz2ETYqnppql=&8ydlDGXUndYbb=&mv6DGgWgjXmnp=&TVSq9BZ_qoYlY=&mMphFqUsksYfp=&IyctoqXnXioVk=&jcgCfnWkibrgY=&Nje_I6VrlqfYq=&Ctm7elXgZqXeo=&m4QsVaXc_Usnj=&ZdQlb2XlbiYsd=&HdtFXMVaVimcq=&5RsyWrUVfcnmU=&hnuhXkYjsgWpd=&6IUHtNVmZmmne=&9RRIvMViVogrX=&lgiscfWpheomV=&zmJ6qQYrodVrc=&IehEBXWgfcYli=&Xj5nOyYsdZaqo=&KGoETUVbbnYYe=&SRpE_yYglipdg=&snjXhIYcUnWXh=&zbX8uGZVraWrZ=&mud9rkXmbrUmm=&KRJ6gcUfWsjYe=&du6V5tYcsrZsl=&A8z9aTYnWaeVs=&3arwzxZoYg_jY=&DiwN8MUWkUkkW=&N4OOXdXfkeeZi=&Ew8QilW_qpbVc=&mEIrWfUsejeoW=&6vOClqXbXo_Vk=&J28RfuYsqllpd=&2bXbcbWdlbkdo=&AinoLeVY_UqUY=&2WXoPlVpe_fmm=&ssPeOkZiaqjjj=&3rWu4UZWrXdkb=&lhfm5jZXcogVk=&wnVmgCXpVne_n=&GyxsJGYZcnVlf=&LjNMSUWZjZfpV=&__VX2mVcghYiU=&6FWi5mXbslcbV=&oloMqdZcWWbgV=&FXYCTwVjjifms=&cOsrjFXkrVXqq=&25lVrEXkbffmX=&SOlMpiVoY_epZ=&nVtw7VYoraWoa=&ibH9GMWYelsgg=&FZXCWmZlsfWhe=&u6K5usWpclmZr=&U_Jt7yUfbVojp=&EN_NFxVbrnmXW=&ikk8jiUijrhok=&O2tCcbVYlkb_j=&5xvaG7ZrsmWWj=&Kf3dTqVejrdqg=&Eo7duFXYWemUY=&Cg3nNfZdidgra=&UREWMYVgjfZai=&T822RuZejbVlZ=&5lmHQCYrebbVh=&cn4ERSZW_j_YY=&7mrPIHZlp_fks=&3vh5sCYeUUink=&q2ShOUVcpU_V_=&oFQTQ9UWrfVok=&CqgL88WYlhWrf=&ksYdafYfsXdnn=&aZWKWoZjWWeoY=&WoxtS4Xorrkgb=&yKbdUjZmhYkmi=&DW_BWiXYq_ao_=&c_W_HzVboiUrs=&V46RVBYbfq_Yn=&6gT532Uprgobn=&NIsDSjZcUlqs_=&QFnbjmUmhp_gn=&N_pIgnZrq_n_b=&BpdOnhWgcYsrr=&FSwJZCYnogklq=&_U_evKVniqohd=&f45IeoZroolWi=&sJQGiqYhYgool=&F3DgkXWnahWrp=&KUMjGmZdWpjpp=&dtqFqTUjgpcda=&JYuUtoYWopgpl=&aa8ojSYnkhq_Z=&_tsANeXmdXifZ=&48hJ94WbiWZoi=&L9_uV2Vgjprge=&FP8NrUXbcjXoe=&aNlPlRZgYknUW=&FYgUXnVhhlebd=&nGQs5oXXigckU=&FPZI46ZmWesbe=&GGIw3nVoVWZor=&5EZNQXYnqgkch=&2yh8uNVaeVrYm=&tnPTS2WVb__cW=&6ec8DbVhbeUmi=&K4ptkuUherlhm=&RE6rOvWigrWqg=&4JUzVdYeenroU=&KeNRNmYbpVili=&k5KxuZZgUsXmV=&fNbu7GZhjUnhX=&koeYpYUnkeXi_=&pMAIWdXidlUbr=&_rwGUxYsXjopm=&G9ndbgUYjpafV=&E4N2ynVUYeqc_=&k3VlDPXafrpbk=&Xh4HfdZdUjei_=&JeFYMBYXldfhV=&iLlZaLYrglWnk=&tuC7QDVcYYVaZ=&rEA4AVWp__Ysh=&ewITc4UgXYWsW=&wW7OaZVaieYqj=&e_sXU4XaoZlZZ=&4WPFDMYUrkXjc=&VCFZWGYbmVYsW=&OIrfwAUfpUekn=&Jpx_bOV_fklcY=&BJhThOZnVihcW=&qkeTh4UgUYXZg=&ZCXMHKZloaYsY=&itY54HYZmmkoZ=&Em9jyDVeUffVn=&PP3ExxZomnkne=&9ymVlFX_l_ihV=&vx_RtpZioimqX=&Y5_JjTYmomarn=&uxmQZIXoqggrh=&j_CKFoUfcVV_m=&sFwIlUX__lasn=&CNt8BjYfVaXeV=&l7BCW3UnlYddh=&NogCItXYnnUYg=&BC_GnIYpdrsgW=&7Hg7AfUWkqiji=&tYVEsqXmWbbXb=&PlheLOZcaqfdm=&Vip7VVVYrXqUa=&fW5X9HUo__srV=&I9DPi7Z_hYZcc=&hkHMttUhlsqhs=&tIGLQsZkqfkYj=&HXGszHVVc_sXe=&oIfNnkVkbfXga=&CEsvgqVkqWrXj=&4rxOySUZjoh_j=&94SVTCYokhbXp=&LTnoCHWpkq_oW=&zooF4mUjmflab=&lxpubNWVjknZc=&xH37DYVZVYUdY=&5GYR9HUcc_kob=&cdPkMcZnrfebq=&wQRJCNXmecZYi=&pLtRKdW_qopeh=&8heIcLYjeojpX=&AKfMrtUipe_aX=&VlO7iOZjolnjg=&rDpazyUiVfba_=&nm9EdrYbkbehV=&XdULayWsirW_b=&HOIQERVrqsWnk=&RsYneoXeXkXnp=&ifWyqsXmaoZrV=&PcRsSiVXkZqrV=&IjfV2mZZslUZd=&lGu8DjVUk_Vni=&2wIkSuWnUiksV=&O7odsgZogffXq=&BgX3VIYlie_qn=&fhU3DMYiVpZeX=&_it9O5ZYipjdo=&xpDarEWhqgnkf=&wakLT4WjkdlpU=&kP3SZFVlYdZeW=&pY5G5HVhhZhrV=&C_ocRJYrcg_ii=&8bJzbFUedWWmq=&DknRtsZnpaljg=&QoBuXuWljdXlk=&aDN8bmXXXkdjk=&YxqukMXflghnn=&kwNuoMUZirisc=&teblV9XginanY=&ohHqNgXViVVfp=&GdpWCYWsbdnim=&GWLr7qVplenfU=&gArdKoXdmbYgY=&De4pOgXnibfsk=&_nDlCzUfbmlWo=&u8c_N_ZnaXril=&yrK6kkUkeVifb=&PljbzGWWsphrb=&kSKluaYZ_sYbm=&5LFvwzWYsdZUr=&fgXUpzZXieXdh=&q845X3VrqZsp_=&SfsfIlUhorlVc=&DzApU3VWi_qmp=&suT8_JYXZmWoU=&2_mnYRZrZrhZc=&4gsTxSUajhmms=&SK2axFXcnlUnq=&mDhf5KVc_remm=&ChcP3GUZXlXno=&67EdFGYkkeWgW=&_FvEwpVqYls_c=&DEv6mxWXonkje=&YOo7AIVZmbhWh=&QOAXGWXqVoeeq=&Bc3KYPZejWqUf=&EtYlL2YgbpWoV=&QVUOQ4YicsXqU=&Js55FwZppXhdn=&q9dxhJYcinm_Y=&D2BbVMUZdbcpo=&hopSpHZlprenY=&xhYQA6VcseVWW=&IZfYwpWcjhhoh=&JJvomhXopbeZl=&e88qADWWZUs_p=&8rLZpQWWcanqd=&NTz82TVV_Umjs=&SiKodSVWoXUUm=&5vnXdZWgbchbf=&5JAmPjUabnffm=&bnqc8hVsledhb=&kIjFa5YUmZmos=&NW4W7AZZh_ZkX=&ftLmMhVeqWjap=&4OtqALVZprVkX=&QBZgVkWhWfolj=&TPAM8rZoeanZY=&sCdwuCUXphbae=&r4FeCcUVUj_Ug=&vAWZqEYsfZbck=&LVHEZTWfYZsph=&sMwAjNUejbslc=&sd3SW2UlqceoY=&94USr_YjXjgea=&UBSKSOXadffgg=&BGzqXaUehdVWl=&aNatHjVdfsaWm=&ETQbH3UWhebVX=&3_rqXMUiUYlek=&Nydy6uZhomXYf=&lzNSvzZeqreld=&J8xAH5Urbbcqi=&2px5fyVkcpgWZ=&DWlNIfYisfg_g=&zX_bQUVlrbYgs=&IOKsDYWqodqgb=&Vd7L8IZfroYge=&BhUW5vZmnoWll=&guPsyMXllanoi=&q9fZ9VXgUpgZp=&98TcvaYsqVqWX=&4sbJlQYb_g_Vn=&JeD2WnWniqXgh=&DbHebkUfkifbi=&66mnkfUqpn_iZ=&kFmg8QZZjZjWe=&_4mpyWZbeffre=&5GCE_PZVaWd_l=&kLiw9RYiiksjk=&akahtrUmUqlrc=&k2eEkQZrmijsd=&yI_lKtZ__mlqX=&9PxszdWlj_nm_=&rRRaPUUcZdebc=&W5UrE4YbbplWf=&ZtnjchYWosgfV=&8h5breZmrailo=&qGO4QOY_lZjqn=&5mwgV_VhjcWYX=&Kq_zquYlgrYbf=&tqUMvUXViqsij=&8ioeJ4XUccUbU=&T4SN6PWnckslg=&KLjpmjUXYZqVg=&YiPZtoUijnfUV=&koV2ejWngcmns=&L6AdBgZiaaebX=&efpcPiUhqjejX=&MJUgrtZYrWrmj=&RqWpvEZspeYdZ=&uq8iu7Wpsqiof=&HmYRdOWcYcYll=&Fkl9gnYbslmmU=&5vfEYwYccdkbZ=&4XrJCrXlcbZom=&qDjvwbWnrjoUY=&flQvhOWlfksna=&ucEuouVfn_Whp=&t8_iLDYspp_Wr=&oXOM3_V_fkYbd=&ZKVD7kWkhcjdV=&k4BbdRWbeeieX=&M4vZ5EViVVsla=&6dwCcnWUVlXfa=&ofSbQiZXjjggV=&rlbWpAZcnU_Va=&fo8wupUjsUYlg=&OJjESpYpgjWZj=&xF4xEzXdbimho=&ZbmYokYrdUa_r=&3rFi2qUqYomee=&67GVrFUcdZfpl=&JAqraLWWUrZUU=&LUja22YsWbnbs=&MfDKp_Wcgkhpa=&klTlZGZYiYqWU=&aHlX95YopgYsp=&ZrAxDoYUrW_oe=&dxpIpPYflnXWU=&bps4cgWgqccbn=&Wy6BzGVcWmaYp=&uUXzA5WgacYgp=&W4YwldXmerpWV=&dfoewpVdbkVeq=&DuGZz8WVVWfka=&Enh5ONXndWVoq=&yrmZJaZlqsrXq=&TUNMmFXZfrcUs=&pNkbh9ZVnWoqg=&bmcxqXYrlq_jj=&ItAAmMUjnbirW=&4yBXk4VhYWoba=&e97FapXUhbaVX=&yBZKjeYWd_WiZ=&IlisxSWqeffXo=&YrLPjFUmlmXnb=&iGPdpWXjpceZm=&G7pRhhVWgYseq=&2qiyFQYdUVgVo=&Dm4EzsXqbbsob=&hc7ukCZkomWWZ=&vmS2s8VfYamff=&dwxUUKWgiaanU=&gUEUb3XWcZiZp=&RRFOg3Wgsodja=&v39gUuVYVXekp=&wNlv8BYolssiX=&yrUw6iXr_id_g=&BY4CRmXmgaZiY=&buAZpKZVZrmai=&hDpTZbXd_VZnY=&ybbBzmVcfmqUn=&2tCcM6YUsVcno=&NChwHMUodnVVg=&nid_svYaZkqql=&JQwpxWWnViYhr=&lBzw4mVonrrVg=&xG7GEjZmmfmUr=&GXnkakVnajlqX=&C5oWHdYkijnla=&MdmUyzYqVbeha=&IQerbTUYkrXpd=&eZj3zOUVn_erl=&rHAIvaVcsq_p_=&pK7HEMVilqVUe=&BvORqhYjccYhh=&xWwOIAUpWl_ic=&IdT6W2Xkeer_r=&6A3X7gVcUiUio=&gudNF6VffVUUb=&sPurXPZUsiZmp=&PLvs_UZfeiplU=&UMqvWkZospkcU=&eOVpSHUrXgbZW=&4YmWsFVcdjrkh=&vzQDRIUhjmfg_=&yiHzVhXZdkWWW=&AoHIXlXVXdkc_=&9cYt52VgYgnmZ=&fkRri2Yridad_=&wuZU2YYeYamqr=&nGTLUPZhYgnpd=&kguALrXcVhYXd=&EYKXelYkXsfjs=&UeIlkxWYVrhhX=&GlV9aNZpVpWW_=&FyhxN8UcqZVjr=&74xzsoZlWYiss=&DA9TKSUfaaiUW=&EfoNs6YmkjbXf=&gMeghTVWbgrUW=&b3YM7bUkhjpas=&hZUhAYXqhjodg=&4OObLFZedjgmY=&x5AeopWgb_sWm=&DbrzC9Y_ZlXaW=&53YDKJXsWVekb=&WfxplaUkZchdq=&CVeTBeXfXcUUX=&3UNLG2W_ZXogc=&_sIbAhZYbfZja=&AdDTejZZeapec=&WhS42kVqbhqod=&mckyJ_VVfVbrs=&AyvCQmYfs_ham=&V3qmwMVaigean=&u_GwQ6VdsWfrW=&L2q9BQVglYpsX=&4lqGtrVZVfUpU=&JL8GIQZfnaldj=&IPvMKfWakjpfr=&JInslvWkeUcnW=&NbKlkAVUVgfsb=&587Ou7VgrcefZ=&yo6zcfVXZVXnk=&QeNnJ9UYWjnci=&jJhTqCWobmpYd=&e4DUDOUarcddb=&oF6GEtUihdZho=&kvdWpaZnlqUdq=&vmqfwjXXqccYa=&nwkPBuWdZghcp=&_xcjmqYrZkXYi=&t56pIrVlXsjgl=&FrKrO8Vfbhfek=&zMpANsYZfebmn=&nIbxqKXmehhXm=&84bLsbVWZpcgj=&YZd5TwWihf_dd=&oWqZnKZZlsgYa=&_RjyTcYellgVf=&Bav4v3Ul_qVX_=&BsOzHmWrWUojo=&Re7FPMZWnWWck=&Dm5insXslpZYZ=&A77WibZWfh_js=&5BSaBlWq_X_dW=&C7BOsRZbgsVrj=&be5XknZ_ejUVn=&hEmMEvUmedojZ=&QKsr8OYjd_Ukl=&lmMllqXaqYqih=&RkA8sUY_irren=&Ziy9siYZhd_nk=&XjLLtIUjmX_WY=&YatNrwXpeYrid=&nq5UIyXZUs_iW=&zAUD4dVUenjZX=&rnaWcaUriZdoc=&SgMwxBXpeZYWm=&bZiugFZYlVf__=&TGvlxnXVcXjln=&jkLbZjUWob_ri=&VSD2cVXfWmobo=&JT9OCmXqaUsWU=&wrOS7FUjjZlhi=&crh_X9Ygbnjpa=&LPio_OWladZ_q=&_WDe5QZrq_dXi=&rAXna6WYgY_ir=&YIMQ5yYZarkha=&jqNTDtXcnsnjc=&RNZ33IYecgeqa=&pdTtPVXcgemYi=&NzLMmzZmjsnjl=&8VzduwXZoppri=&QqFwr2VrlbrlW=&ZpfbDHUqmnpqn=&nns2RQUdXhkmY=&6RUZVXVYkqpUk=&pROneiUWqYZUd=&g94TleZsoa_iZ=&QZrcY7ZVWjr_n=&ghnbOhVdlpdrh=&65f6DfVeqXaXX=&mTprx4VZqokaW=&kGH8HBZrfibf_=&urzQGCYYiaced=&HiVZlkXgegidj=&BbKdb4Wc_cbfY=&LbDzhBUfWqlpo=&G5wbYjXsXqeob=&YFEvqWVilelpn=&joQSYXUqYdqXn=&tAeRokUgfXbpb=&5AHeRtXaU_qah=&CyGbpJUampVmk=&E_oxYuWsirjma=&IxjpleZidsrdX=&AGJh6fVUikrhe=&F_gtcNUqcYcoi=&sDhNDHUjgZbql=&fBmtnSVkjZXcr=&JF85I_YUZnfsf=&8xMMR8Wophfdn=&_bDXEyXqakeUX=&kw7EpMXWreYpZ=&_ZtMVQYqYoYom=&3FoE2tXoqiXrn=&3goaRBYWibfVW=&U525lPVq_rkim=&4dcwAfZrUZgng=&N_GldUWk_fina=&r9VbzlYaWjddZ=&92_ALhXghiarr=&ponRsIXbsoqem=&KOGZL3XbjYjpW=&AFHKVhXepkqkV=&gyskEtVXVZbVm=&AXqAouUiUgYpd=&fBHWRNXoccqnU=&YbZh7eWjsspWY=&OhrRwIYrrXVq_=&SvOGE9UparVon=&DO7fOQUoelkZf=&WbnAJBUsjmUpl=&9CRLkEWhoWWqk=&4PIDEtWsmgrei=&ZlEf5_ZVdXffg=&5ylkfjYUZegab=&jtoI75UXnXcci=&tI4pExXple_jZ=&aG3SayZmqhnrf=&RaclVAXcXscZZ=&DpdWIuZlshqid=&hoEtbqZkdnlZh=&Kq7wbaYbZdlpV=&lbhotiUacdfl_=&3xgwyHYjgonV_=&je4zRdVfhpYam=&_2Rx7vY_pgmln=&AulyBMYrqcjah=&r7HXQtZfndefU=&e3kTigVVriaaf=&y5qpKOWWijkap=&RLFtljZmrUZrn=&bv8L4AVsrkjhc=&Qv2stTXhaUWWd=&6qpCAHZnorZVb=&FQzFndUlfaUsW=&qDzZ3nWdVXaZp=&VD_hm7XfqWZVk=&N87aErXdejcdm=&6GlZoHZnlklha=&nOx5arUpdngcj=&9NzLLxVUcoUjm=&zhO2BMYd_fVdV=&ien4GPXpqUjof=&vBAnwBWZsZqpg=&FpMDmWZhYf_ef=&8Ye8j2ZdqZkmk=&gXFScNVhiqshr=&WPnFlQZmasZ_Z=&E9olgcVrsZkVU=&Ut2q9oUspjqeZ=&H33Sr9VVd_ssg=&aNjTIkXVV_nXd=&X3lkNYUgXqppj=&huh_fQVkWeofc=&IqwL__UialZso=&Q6zMEaYofUnkp=&QNkzhHYeokijo=&MGhXToXsdiajh=&CCSeqMZZcgVaW=&Bp4_gPYknqnfi=&GgEGOgUnomhcf=&ODb75uWibWiWY=&t3TEuiZjWVblW=&lOJ5S4U_ZUXZp=&zwHWiOYWcjqpp=&dHBb2nUXXpsik=&GsVAgzUZsfjfX=&BX9jFJYWacnXo=&4q8PdOZbbrrYY=&PD3Q4JUnholZp=&TaHPwDYfdmpdf=&2lQaaGVkieV_d=&WKFsrMXrjgjad=&KUWFV3WdkodVs=&TzuxEaZVVrZVs=&uqrcHPWcdXkei=&unZQUXYhsbkYY=&533rRLUmXWhpp=&IXI6CtVgfoaWW=&wztaTSYhXYaWo=&VfHHyKWkkhrUp=&e9SwvRWoljmVm=&cLt2myYcY_Zbe=&Tqh_NfW_sanlZ=&rcdfILZWbmgWh=&pu8l2vWd_orce=&QIOjZeYldYqVe=&YsCYkyWcXogcW=&o22giEXhhblco=&CPYLNfUnmXppV=&wDT4yZYYskXai=&IEPEzSZWrmhnb=&dPXUmLUW_eejo=&xblZEZYcdehdn=&LzITUwVZfnU_k=&EPlvwGUVqVWgU=&rmYfyaXsmlcXY=&7xv6TbWVjfbmo=&tehz2jYZ_dYdf=&CHhZamW_ggqYm=&hhRjWsYeZdoqf=&2szvYSYrq_ker=&__YUOqUUbYnno=&sMgSAQXkahesX=&fBY2YhWrkrshU=&G6aG6RVlWaVpe=&Ct8tjRUVninda=&YIQGP5UZXiUoU=&RlUXKcUpnVoWZ=&35R7OCXUgaXVj=&2vimg9YYUhmga=&lZaFw_YVpoYsk=&jmJWPxXecZcUh=&QejR49ZnbUlbX=&_MxQs2ZVknage=&uHQDPAYjfgkaY=&yPMuIzWacXqbZ=&efsUYhYfXkclU=&OntT9eVfXggVs=&7oVS_LZldneXk=&Bcy8CAVpfmZfe=&pckycQXUfXcla=&xCqJGFZingomc=&kfOaOmWqWnebs=&hNlUevVdXUfnm=&Vr5ZTHXdljeoc=&ogoNXSXaWheUV=&52M4_8Xrlmhdn=&uV83xWVVkiigq=&PHX2TZUbUXhrl=&M6Re2rZmoleef=&anCw8iWrViaXq=&k28XudXkohlXh=&DuPj4iWmcbUqk=&oJLtTtWoshnqm=&PNGePKWfgo_pY=&2DUEnUXg_ggsf=&g4AQWTXhlkdVU=&WvepOmXXhokge=&nnPYm4VmloXam=&TBqZLPWeZsqoZ=&24dn9MVefWbXp=&K7_Xa8Zlhfjhd=&XbR_EgXqrWdiV=&TfAfnZUlbkk_q=&EgIUxbXVrXlZd=&uIs9HNUXV_faa=&5X7Mo_Weem_e_=&w2wJrbYYoX_eg=&mx4TtpXZlmlkc=&_uPxEMWmgrWeo=&5GmkHDWheonZm=&kdIiLcVdlassm=&tdHvydXWZojjW=&3tpMGyYpdbrUb=&9KZx2OXUVapgf=&kjrmqmYlZkVsq=&iHz_gdUWcreip=&aMYQcbYoYUpZY=&FTLStWZpbgdbk=&U3FYxLZefqhlY=&bzrak6UhaWdar=&MbgnipYslphre=&xWUDIQYhsZpoe=&Ad_rX4UpVqWoZ=&FcOeoIWVXoZps=&VOjBYCYlrmenl=&veHmQoYspjlaU=&rBebMeXr_eY_e=&bgC7NUVgjaflh=&uscd2aZYdcpWm=&uWGZtKWXZVYYc=&vXSi4vXojf_rZ=&lcOVuZYhgWUbi=&h5jw3hWUemgnV=&pgncjYWZknmkY=&RU7utLZsomoZU=&YlUAj7Wcjjslk=&JUXJUDXeoXeja=&52ikP7Ujbkpao=&zTcLd5ZdYhmic=&AA7_2_UqXl_qq=&ei62r7UhkpihV=&FOLeWcUfcldfd=&LLDXiAZVrWX_n=&TsilCCYpqklUV=&c9qlrQZqphoU_=&nV9kM_Vnmsedc=&xOErYSWfoshps=&lhSKOSXsqZarg=&tZFjX2Yghmpde=&7eQA7PZanZgYV=&ZZq_uQVaVUd_i=&3bz5SOXeajUno=&5EEctnYkbXq_X=&OvVRxCXgqk_Wi=&M9VrXGXrgdr_U=&AopurJUfXa_ss=&aB5Vr9WZYpZUX=&TJTTnMVqnVmkp=&W2zy7vZdWrVnp=&nzGUgPZjaZcdg=&ZTrtC5ZiUohjs=&N3v6KQUpVfn_a=&wy2EVdUYqccaq=&Lxqo2XZbkrYss=&CYNNDoWffZasp=&7SOrCuZ_YoVhX=&mMyzDTXdUUrhm=&OYtH8fWmblXXf=&x6kZEdXkb_Vpp=&DpgxWrU_WXbid=&VJGVPhWrVWsom=&NKPtVsVXcf_om=&EHw7K4Umqcp__=&IoipSCVbiqWrf=&Xm_hkyUXWep_f=&LBd88gVXgUWs_=&2onuqzVkYoWmh=&SmQDulXZjeVej=&57NpP5XfdhWdb=&ZEqxltZZnpWZY=&MEVIkbXUWVbaW=&rtUguKVXhjilk=&cLEOmOXUrljjf=&4yrcbOZjdZaoq=&vEqYkoUoZjhWn=&vbEu5UUUWck_V=&_5SQMZZYcpgoo=&u5yY66XirfVir=&_GhnCpWaraVZr=&SL7JNQWodVjir=&mSY377ZmrblgX=&qy7YDKUrqgesl=&k_Ve7eU__dqmV=&IQ9QRPYoagnlr=&UGRZdHXr_fVps=&IDUingXZdZZgg=&OVaoHeXXWrZYf=&vcMOtWV_rijln=&Ke6lVZZeghjWg=&Q2hzRZYicgpib=&cKuaqsXWikWga=&TuSU_PZngpfdi=&TbcdgiVnhqfhn=&Ka3QIXUfYfqWa=&n7zkBfZUaXVoc=&MK9WTmXpkdoUf=&GUx67BZlWpZdf=&rm8CU2Vhnledl=&JADhaBUrrnrpm=&olSe5RWkjXWqb=&abbrMwYZnZoob=&UpksaAXjkbXhV=&GMNkeJVpogeXg=&LE3BsUVXdqVb_=&Ob6VIkZclkooW=&wD9lufWlrkgYk=&65y4AJV_cnmos=&wgmW2UUWnkfhX=&glzukaXamkcoc=&U43roLWeXghpZ=&x3fomOUacdinr=&BzRTUfVWiejVn=&_kAwlYUcqZjdZ=&VnKODNVnlqWag=&NkxTr3VapXkc_=&Ael9VgWYlYkUU=&x_SkQ3ZoWVrZW=&5hzIZDUVdnrgf=&yJnYrfWlmgio_=&fYwn7UWsnYscY=&qRW2xcZbUhZXZ=&tY9GWgUVsmWef=&6fzc3FUdh_njh=&KtONEBVljkmgp=&NqTSvKYgaUYYs=&jJjRCeUpUejkp=&hP6OSPZqjkcdq=&uhlqXRYUondnq=&4LnA7WYhjWXjs=&qkRwaXVVkn_rf=&mSTggcYUpWXqk=&qe4QKNYaZsmXZ=&HX6tncUjekUjm=&ngLfupWedcmjr=&vtl6RfUrshnYs=&7hSSXMXoVbnla=&V2_2hjYpgqbdn=&9lUv3gUhWXrqU=&LzVhNHXdfllke=&GVvYYvZcbcVgd=&8P_2klWcgYihc=&RMsxyYWi_XXlY=&o9eqyNWUefWr_=&8anbzYWaWilrX=&2a8gaaYgriqfr=&zQ_3BkUpslcih=&y8X9uOUZrccrY=&PYrjyWXphfehr=&77kJ3bXpfUcWc=&EZhAdyVg_aiel=&xpuhywUXgrarb=&L5G7ugUer_mbW=&4NuaN6VlVgqec=&hW_wbTX_YUrnr=&UDtR_xUpckfnk=&mPzcQ3YYhUsWY=&4OTVzGXWmfgZo=&UItnjnYoYri_q=&4sKeS3UpWrapX=&5BFSdpVUYjgZc=&gtWsCtUqUcoWf=&RbHtJSVqrjer_=&sLOjcmXienrmm=&XKLmVuUeYUjjY=&vLzBH_WYXaXXZ=&FoGbdFUmgffeV=&CUwHH7YeeemWb=&28T7kLWXUha_V=&EoQZI6ZVfVVXh=&9R4zVtXfnkijc=&NsUjEOUfaWjfa=&nMIU97UkjfegW=&CradOwUfig_nr=&YyP5GYYhXjVfb=&3_oFyzWgkbmkc=&5ZOYrgU_dcgnn=&HApAQyXWcrUej=&5IqTjeUX_Uhqn=&ZEiRUMZcqceYU=&xgyuQgVW_Ykal=&ndDHIKVpiaZcq=&KbFs_HViUW_he=&4Lw35eWkUiWkZ=&6xrEA8WUaiifi=&XMR_FUUn_XWio=&B7LKMYZqj_cdg=&aNbCxPVYfdUXd=&2KmwMYVjem_ms=&4AVu7gZdXVpVd=&6m68i7VaYqXiU=&yTr8riZpincis=&6WUqAxVejdljU=&t7MxCPWkZfkgq=&Nrdba7Wmiheac=&bjdKNwUmrigYs=&pDmhx9ZlgVlpo=&at92ncVZmfbnd=&2cu7YdXWYVoej=&sF8NMNVkXkXYm=&A6bww4Ubpdnpd=&5Ye29YVVVhmfV=&oPoWH8UXrYrjU=&n2R7fgXr_oWZq=&trAXChWkisejW=&6kcCpUWZhlm_m=&PRZR48WUfZbem=&ZNa4Y8VjW_qgr=&WqynxaUrXfYVZ=&roHONbUcnUVUf=&5JayRfW_mYc_k=&sIFRpRVsfXgag=&Peay6iWdhlhkn=&339kCdZhcX_ar=&tchJeIWmp_kqZ=&y_AA3qZUqlh_k=&kXlS4mZflWYlq=&YuacyqWpYnipe=&d5iCbCUioVeVr=&aNHFLdYZhpd_a=&3kynetVUbaqil=&7nIWylYcXcfhi=&nHMmncWebrgll=&Y_MKnGZneVVkq=&LTMe97UXfsfeg=&LUEEkAUmrepVj=&ThpBUjZ_UWhk_=&BERqwmWrmpjek=&kan6kqYbVXioo=&O7tfTlVepnms_=&MDPcbbWh_kjlc=&DsSNnzZbWkZ_q=&pWoeTdXdWbkZm=&9GC2RYVfelXfc=&XiFN5gU_gknrW=&qfTRmMYrqVWk_=&xUCuy7W_YohYV=&WLWtL9ZZeoUao=&t8LzItZbZoqeh=&UGgFXLYqUsk_i=&NoYSq9VcYsmh_=&sWNjAcXihcfVX=&q4QBCxWUjmnWm=&_vwFb4YcmhXji=&LxhOqDWeclikY=&VkTb3KZiUbrVU=&dFojrxZfcnaVi=&lRkDBYVcab_hg=&keT6M2YYZegZY=&qu5DZJUpqfhqV=&zihN7VVklfjgZ=&rDQN_tYiYeZYY=&lsPHIjVZlcYWs=&bX6gJiXgVseZa=&WiErckYiriYYh=&UqukDCWgegdmf=&_IID7cXksUZgm=&q96LqJWZr_ZsZ=&M8GfgAXkbrqeU=&ZhbJhVZcdXrZc=&KKkbjsYbYqrV_=&N3gDATUfqdmhn=&Z953HYYkngsgg=&byDhl5ZYWoafZ=&RlgvjRUYrZn_h=&s8yaiAY_ieYpX=&aHWVFiWamXggX=&KmsUjcZdgfcli=&r3SBIQXaejfrl=&3pAbqtZcgrreb=&Vus8iOUWajqZX=&_tWQVYUZcaaq_=&jOBCUnWfihY_m=&hVBGwBWfbqlgq=&lmVuP8Zrbcgk_=&plxT9YUokYgUh=&X2mK_qWeWo_Ze=&kDs_WbWVcVYbe=&hqIDUGZipcXke=&oILVbuXfcrlce=&rdyDWHXjkUZak=&vlSns9X_fspcX=&Fj6Q2OXefaqWd=&dJyr6FWsmbZpp=&TGlLbwU_jkboZ=&S_AzRQUa_ZYfr=&mgS_qbZYZX_p_=&86kmBlXikXbrr=&pnxWSYZmfUahf=&PrWrRGZnaXmnX=&C_6asEYnspdop=&yzQn55UnbWmha=&853teTZfUWsVX=&85Xz2eWhXeskb=&nmarGPVckesdk=&7EhvBtUkaXaUi=&hhLqqbWnhroqs=&MOklWZWgfVimd=&JxwE4lVcbbicU=&A8c4MdZrsZnWa=&ykrFqlWf_Zejj=&sQsTcYXlhhc__=&ZszBEtWlmlaYV=&nqgYDpVcerXjg=&u4AgiDXm_Yhhi=&BU9ErMWgooeVU=&dSmRJpZsgaYkY=&PalzKzZqlhqlV=&XHsFCXWb_Yhbq=&h__WLxZadebje=&fr7JI8Xmqgnkp=&55qeedXaarnUn=&AZutsZXcsYsWn=&_BqYsRYUZfjXZ=&2QUsPvWYWjdcq=&LF6jJvXXWqkcf=&xkP7ccVdbWiao=&CC7xy_VaUobos=&AvLXyLXYaWdkl=&gZKJdvUkXmgbd=&sKtnuTZicdkVf=&HpA9H7ZlZkenU=&2qxqHyWZUln_n=&Eu2vyTUsYXejk=&Vzydh3VgfWibo=&rvANQgUkXlsVn=&wzclXdUhcYodp=&5BPbaMYqifXhj=&KTNmKZUepoUhs=&d3IlOYXjfheaf=&i3aoUGUeqdjgd=&xSRc33ZglhZcX=&ftDYNPZpebnmq=&TeXJatWcVnfdr=&ECDsqWWdUUbrj=&YhEE2vYmcjpWo=&GDsqwsVk_ksqp=&b9o4Q6YUWcZhq=&tfLqh6WfiVpbm=&KhqZeoXaqVXkk=&gjQ_krXbUdqga=&RGajYOZf_ir_q=&_KbWXeZajYhcY=&fSXlyVUdsjVpX=&bdPdQiZYrkYnU=&aQrGJWXsninaU=&FqHGUhZjkVVso=&oabCYhYVjsgXs=&ILXmiLXarUVYd=&PbJuKMYoZhaqm=&KNtsOzZhjkWWV=&ohE8T6UoaYbnf=&RWczFZXlhcdaV=&pIS3U8WUWdisk=&QUVVVUWYmhWsV=&SxmiyHUXrgkne=&Q9ykNTYdfXbla=&tOXWxzUrUiVbs=&bRgz5tYmdag_e=&L7sfisX_rgqjW=&Qt7vzkZrggchj=&SFOIcUYlUd_ok=&k3axIHZnoXacW=&JcyiwEWXofprk=&9dfGhAZXUdiVY=&3yblPYUqreprd=&sc5jaFUnjllqd=&PThLIFUcbiobg=&TkazcAXskjZ_g=&DPF9FAZZ_XXeZ=&EKcTXTWeYmkhl=&A93LMOXgUWbnj=&GKBLnJXpYksXs=&U7JcbbYjaXUW_=&GPHM3PYfcgeeV=&jH2XzaYYXcZlb=&yADWw5UmqYmoU=&dcv9x2Y_ZgWhZ=&FAW_yfYhabZmm=&lGp7k9VmallWW=&ifbqqbYbgYsdc=&JaMgcdYobpgbk=&jC9GbyVeckWZr=&s4aw7CUhdsrYf=&sJDMPjUeallcf=&Tq4Dl7ZllorbW=&tUoLasVbXbmfY=&g_aC_oWsiibXV=&PgcauyZpapYXW=&VFDRmoXYpeg_h=&rSaEN3YqXegpr=&XZ8mMBZmccdbW=&NidRDAYYYiqkj=&fLmoF_Ugpihig=&cQw_92UVlndai=&oyVQRIVmdaofa=&DYmvYcUdnlZcX=&iusPojYlZecaZ=&5NT5ruUrZdnjZ=&EkQXFdUjgWpqk=&TGMdnFUhprhYb=&LJ9SgdVXjdVeZ=&x25bWZVb_ngXp=&zuTFZuWUWlWki=&R4_8ZzWlYrie_=&7YPF5uWXXrjVY=&QKdS2sZeapVck=&P7i9x3UUolXsd=&B7qlYDXmqUVg_=&G2xzAYVWohpdm=&yAxDqGZqgWabl=&E8PeouVU_agqs=&CmuZ6AWlbgfW_=&TuTvyiYdaloXl=&XfM7rfUfVfdhk=&2D9JzwWccVrgn=&Sd7_9SUpVlbVr=&wtxdNbVhUZqmj=&SDVOpHYmageeV=&Ur5BjEZUYihsU=&bPOSwSVpdUkbj=&hfUI_oXeblgZf=&JXvn9hWZbUnof=&99exJ8Urbrigf=&vDuD9ZVqfpVah=&uXJJEnYfqlcep=&ujHNUeUidarjn=&XSke8vWYVhblk=&kzv5nHVlbgc_Y=&aqLiThYUhaeXc=&l5Vz3uZkjsWgs=&_mBfbPUgefUog=&2bexkeUese_Uo=&U4m5cDUqo_akX=&liCQjvWgcfrqc=&4YiSkMVYrhkWp=&pL2W6LYobakgb=&pb5YWrUladmnf=&braTP4Uek_Xbo=&vwdlD3UZcncih=&xmf2JWWmVjqab=&5tQN8GUrnflbp=&alRlFDVildn_Y=&GGKOVWWZ_YVek=&I62HbKZsaUapb=&aBxIsMUqdZZqo=&3qbpbwUWjlicY=&LtyyqHZXZmria=&MmBMJ6UsVp_mW=&ieMuhTVYhihms=&5tWhkrYaqWVYb=&Fh_SkuWqecZXp=&shu8L7XipsYbZ=&VdRa2tWXdlaqr=&MVDgqWYesY_YX=&_9Ci9iYWeid_g=&7F5tGaWbgqqsY=&46fc5zXmeshqj=&tw6NOCWUkpbXb=&T_TwWzWWcenkj=&QuSZYkXhUggoa=&cTimrNVgfZhW_=&AwZYHNUbdfeqp=&O7aLK8WaUiXUU=&ZgekGvZWpn_Yq=&cdkP4BUigUYkb=&kw58FhWmfldcf=&VUNOjgZrninc_=&wx9m4bVflffYZ=&55HzzyXspedkb=&zzcdnsUjUqmjn=&M58UOVUpkdYjk=&sgsiNhZfrrlge=&KuGvbnUnXlZZl=&oKoG54U_lqomZ=&yaM72MXecUrsg=&rKlBAFWgneieq=&mDnCM8YrZZrZr=&lwyYupZdlmgei=&abNYjSZhqYeee=&VuHeFUYcXmYYd=&WOBxRlZoWqWUo=&JuNdhZYWlUdbr=&uA4Jq_ZUbbYVb=&gMWhxmYoUqZlj=&NiN4PLYZeodom=&uJokxwUnXYeYX=&lcNQIQWYn_sc_=&qoyDlIXoh_cmX=&_94cL7WmjkmYq=&XPNddkVgladeV=&nN2aPYYdeZkkr=&aqUf5nYkmhqUe=&MqPzuBVWbcrhm=&AvXtaeXashmYY=&NcPqnHYbsUchZ=&OrywZgYjck_jl=&lVGPU_VXgqXlW=&8y2Oo5XlopiU_=&bY6K_GZYdXapp=&JuzJClUqansma=&qQyQTWWcrha_U=&PehtMeWdrlqjs=&uGQyXYZXUcfgb=&IZl4UTVo_hapc=&lD2xweX_anpgq=&acypAFUrs_eso=&n4bmcRUopdmgb=&p47aWZW_Uam_q=&6sOLhHUmcUd_Y=&J8eHp3Zon_Wol=&JdTMbvYdVjlnb=&D8O3lnUVomZle=&TOoo8WYniVjbn=&yGGEIMVfVofdq=&KNFv3iZijWasq=&k4AnVcYWiaZjc=&vm6Ew6Wimpphl=&mUvqUoYpgrUrV=&eR2_L8XqiX_cl=&rCF8X8Xmcf_Zp=&bztXuuZmmaolZ=&QOxQUdZaZdhpY=&wAWRXWYaZ_sog=&3tGcxAVUVlabV=&CF7mjwXX_ebqU=&aX86LdZdhejbf=&n3qZPhX_qq_dl=&JAXZobYVVeppr=&vioxnVUaZdnlr=&U57_SJVfcpVhh=&mPAJiZZeUnWlp=&lr4tM9UjUVoWj=&LsWAYrZgZsbW_=&9y4gFwXhUeeqj=&D2bPldWfUjnsW=&dQvPZCYijnqer=&dp7PF3XhgXcfp=&BXwVEmVZhqmja=&hrTAjCU_Zlbae=&UkXb3CYqkijoe=&QJJfAoUcrUajW=&7xtThcYjkVhmW=&lAXmBuVnld_ai=&NVxqhSZXgldns=&3Wn_inXXUjYgW=&YmoBOjVjZbohq=&sPiv7dZmpphc_=&yPEMaZVrgesjc=&aLxb87UhjpZjW=&xYdhfgUcqfaqs=&w_KOpRYkfkdhc=&dPYTvwXeWobbg=&eQwQuJYqorgen=&qKUcQPYsrrdUl=&EYgGmvZqUZkdl=&Ygd5vEXihUgih=&4SMPHbVehfeki=&WovvfXWY_YfYs=&XoZ9jhUr_WqUg=&sNkdEyXXbWgXh=&dBna4oYoVm_sg=&6NMe2oYsmiWpV=&kmSnsRXjjZlam=&xLe5XAZ_dUima=&yc3d27XliXrlW=&XcS3dyYdcfXsc=&GnAmhMUckhr_j=&nMbBxDYknsoZg=&seE8Y3YZYalWm=&JzUB8QWdsZYnY=&lfVlOTVZmq_og=&uwXpAfZjUmffa=&3XBAqcXZnXXko=&Gwp5eOYY_jdZZ=&A2W7vPY_rleff=&noN9TVXdekriq=&9cE5aaWe_sjnZ=&pwIINTWhsYkl_=&oYD2RpWjfYfZj=&Sk3F5KXc_ccnU=&_sbq2DWbibYga=&9Ld3ubZ_bmpbk=&EIHhQMUcYskcZ=&HC_6RYVlrbcbX=&PcWF4LYlrifrj=&SjXd4UZasmibX=&3KftgYVbYYWah=&M6GvVCWpbVofc=&7yKbnzXUUfbkV=&G_M4R8VWkXlcd=&Hz3IdxZibjcmW=&WhVvtsUrrsYWf=&87Kt95Zlffsb_=&krb_LAX_bghof=&vm5DxJVprqUVl=&oiV38oZafdgms=&JUETVxWkXfsch=&MmxB2uXUpdrjp=&VHTvCSXUXaqob=&tT9JAwWieZXsc=&WRthwuVWbeiqs=&rQjhzcW_Ugoal=&impRTaVjXlfra=&GO2ZJyVrnsqlU=&URMazpXgWVZnc=&aVSGzCYrXkcVk=&xloqFGZYYd_pl=&YMsy_FYWYnmab=&XdmtbAXWVrapV=&t7qywVZahUmlW=&fw_B26Zdifqck=&DVgSbTYhksacc=&56Y_KoYglr_lf=&wKiswxVccZYae=&OQhs_lXgZsVpV=&azMSfhWiVmnlb=&iIIaknUsabcVg=&ZstnuZXsldeee=&Zx4duDVmYhsYc=&jueJ4UWrcsYpm=&AmJX2fXZVnnnb=&YIIS48VY_Y_i_=&P3dMP3Zaahrdi=&tQO9o2WVgaUbj=&57ESXZYnfpmfd=&wsl3ANXgoc_Uc=&KtNR8QWlmVlWi=&9bHwSGW_ppchs=&HMiAFdZsqkkol=&hhC57vWiccldU=&AJT55yYWXieXj=&rtPagyVdVaXVV=&iLqobiXedafoU=&AIy2RVXUUopfl=&yhtHnoU_XbYle=&GO8w_jUnVUpXl=&6hYCufWkchVdn=&dow9EQYagphpl=&MPtRgFYdlgdfb=&iXWOGpXshrlbe=&zSsYCoUYgYdof=&9Ht4QOWebhbng=&4ln22eWejla_W=&5mwmiDWkiZhff=&Ar4iFVYlphUfl=&6MZlhuUejon_V=&Ybg3cpXVVhZrd=&m2WC8xZcm_seX=&Y4hJpaZUimia_=&yo3ijPU_YpYbV=&9TPvnoVhpmngd=&LEZj9fU_h_pkl=&qGVHOlZcqncfh=&Je2TwqYYlsjkY=&kizdCNZiYYVoU=&ZNORYqZXqmiXr=&sI9m5zZeskZ_q=&CEKhLSXoZVdfU=&BHJteGZgeVgcf=&xcvBGUYXbfjVn=&z4KXQ8VpgeXdl=&MjgsRjXl_phia=&pkTZiNUahkskg=&axwTLZYiimqkj=&z2fg8IYqZhUnc=&4D88JDY_pjqre=&z_7eRLXVgigll=&dn2DgcWmrbVdf=&se2MH_YZgmejj=&SEZDX3Wihojmm=&vxlOfGVVpseXV=&qZuKjTXkeXfsV=&ymiDx3X_VlqXh=&kLlZiHUkeprne=&FEY8sIZchZVWj=&G6mky2Zo_rn_Y=&fo3u_2YZcmVhU=&pXkvSTYZroWla=&2z4gBLYofekqZ=&KEaP5xXiYihhg=&fwMrghXrjpUie=&ntVloeWfbgnpb=&f_NvBcWpnll_f=&dS2972WlipW_o=&9oji5NVVZUafh=&HW4wheUihnahj=&qqg6c4Vbrifpg=&hGQRJCWUcYece=&n6SZzHXbiZccr=&HkGMkqYhgpfd_=&ogU6E2ZaqalnY=&JUU4AZUhUVkbh=&5IwQgZWpcX_fp=&6WF77qYrXXrVc=&qkjnM8WUajUmb=&67YpohXiknWmU=&9IeV4CWXjjWnb=&7NbqSCZjfncZ_=&oxXlWrYeqaeV_=&lMQbmTU_ndVro=&7HZfXaWXiiVoZ=&qEb7NuVlbXacX=&HVCtzSUpmUVVU=&Q95jDDXcmYemV=&iQ8ZPSUgcUjqr=&wJAzxoYmhklmU=&8p4Y7aYcccfej=&YUj_CUXl__bra=&fxUpCBVdsadqo=&VxXRbFWenVWle=&42eLgiVmqocl_=&Im5B4LXoqigkV=&7b7MnKZXZfZdl=&XkiyitVXbhksX=&XHX9JJZsimcch=&XArFxXWpkkono=&cSIve5ZXiYfgV=&MaNHuWZXjnYsf=&4C428VUd_Y_Xg=&VKDsryZXmghdY=&okzEkmVVbegml=&GNsbJSWUcVipq=&PevZx8WhdcnXm=&UyyDOsVhg__og=&t_IL6ZZefelkU=&Rvnn2EYofjpkf=&I4nVWMWpnsdUr=&HH9NbzXik_gbg=&yK28tHYfgf_Wj=&EXF956UsqYXiX=&mHe5xYZmsdWsf=&IgtOJdWZomWcZ=&kpGRsxYgrifWe=&QS2PSAYr_Yqbl=&y_L2qoYYlrgnq=&_VfgEdWqbXZX_=&Ow92tMVniU_Wp=&IiXAdCVmaZYib=&8B42SsYoWUdWi=&xgaGwWWkVdqWW=&hKm5K2YodVgmZ=&v2_Z92YjkifYl=&MQliNaUhdgodY=&WSobUQZbre_cd=&hN67N7ZrVhUqp=&igSa5MUkhUZah=&bgo7ovVYegVda=&RplQvkVVgZnlc=&bs3PXEZbZg_Yd=&AyRZlLX_eWqXZ=&g3HUFqYjmVWVW=&pTTuQuUaniipq=&Q7Yam3WnYk_jb=&qogVrlVsqarok=&SMOmTUZ_ihllW=&soNhRkYXphUZe=&uYZiPRUWqlsqj=&en67RmYUkcknV=&YXEkUgYrlq_gW=&5JvNt6UbasrUk=&BmeV_tUpdeige=&L7shtZWjkasZp=&DG2urvXeVpVbW=&GHaTgGWamjigs=&tRXDiKYmsjjho=&IIUEE2UejmVma=&hP__XfVaXcehi=&cBEIJrXdYrlge=&Jdh_hDYdoYVjp=&nGQ36kXjUegrW=&UaPQubVpanUoU=&cWfbXcUWnWhld=&bSlOTyUdZ_aci=&No7MBMYaVVZis=&Q7Z8OqViUnabm=&lukREpXsYcipa=&Is9tSpUWjlWnW=&GwgguGVkgiYXr=&yTZ5LWVjlYbrl=&GsbtUCUiemfea=&VkUqNlVZcYWZf=&qnlSiRZhVnkce=&yfaRMNUiohUYj=&4oFFbtXeXajcV=&li7McUXliiVpm=&ISgsYjZdqojon=&txky_7Zcqf_kn=&9DQwX9YeklkkY=&a5q2JhVpbZnpa=&jLG9vIZgfVVem=&Hh7V5vUVjdgVd=&eKGbUAUaUaage=&Hy2Q3OZhegooV=&yxUbWoUhWUfV_=&OU9eQrYmeVkfm=&ZTH7rtUWli_af=&DBuVAAVnbsZks=&QfHFuSUs_YoWk=&FqcvQXWXXUYos=&MSGK_zVXUUig_=&lKZpAwXrqphqg=&X3d4wPUmdhUjo=&QvghSZUckfqih=&yCPW_EWgYWVdm=&UuS2mZWbjpscg=&D6jEjGUobkdWZ=&GW6IaxUjohZks=&VoNONfZZsjhje=&zueJw_YWXjlfl=&CBI8VMWaZhoZb=&FucbqgXlmfUi_=&XFHtqTXZiinlW=&_l6l7lYgdoben=&Rl2vviWm_jdhp=&xcTVTNYXh_rej=&MniyAJWphhiVZ=&mZhdZzZW_Ydi_=&DKX5MhX_X_ige=&9QcAfJWqYpjpk=&XD2OMXZWXsnqi=&EUj98yWXUZjXn=&hAANaPZbejbga=&4YiHDLXecnij_=&4eTftcXsafZse=&pDbBjqZsYlrra=&xELGaRWlUZeks=&MHGaooXjXlfZi=&sxfUoaYqaYXXp=&fNN8QdZjsUqhh=&sgQKncZWhbdfV=&EfdshQWaepUWj=&6zOLjLZijhZhX=&_WpKtIZoghroU=&LHjSiwYchhgWg=&b9bxQQWhdmVmX=&qUAiDJWqcpbrc=&lDs9jAUipUVgY=&K84XkVUslaecg=&4ET6QDWXkrhaa=&OQZUf8Wjhmgic=&lbkMywUsp_q_k=&dIF8gNUYlVklg=&uJdjdCZndprbd=&r7DW4UXqZibqj=&tRp9PkUXmrfmk=&PzMakYVVfdVVd=&5Ci_2sUejafdd=&pLWb2QV_XiUej=&9wqmIaXnpcbpc=&aXYvEQXWcehVi=&287xn7ZXksnce=&VUeUKxZknojnl=&MtomKYWbUalWo=&yqTSbFWaoVjhd=&elUOL_Za_iqhV=&EfHzNmXooiUmU=&7laEYkZdiefUZ=&cjZpBHXjngrka=&3ME2mjUZYdnZZ=&n2wH5zXgcraYj=&ACvirPYicjZcm=&rPvCJyXbhjZhn=&mHrs4LZdYdkrj=&LxYDXnUpWdUjd=&CMEAcqXjlWngd=&cO6WErWoiUWmn=&7GVd6WWZo__Wd=&vF4NoSUmkfcbZ=&wutaAfVqmeUmU=&8dvin_WnsXWp_=&csOCl3YseXssr=&dCu9j3UjVlVVq=&BlBmgqUsrVgma=&TvfI9qUqmVdbZ=&gTczSRYqpphkX=&I44VvRVjaisgs=&FWFTroUaYjUhf=&hHrvogXpbfpUW=&BpbdgqZYadmoX=&Ly7GDyZkaVWql=&W4IfFzVpqprgV=&2CWzJ9VZphZVU=&v3POS6W_XncYm=&iPi4CeUjWXdaa=&RQEb_oVdXrVWo=&89zBaQYkkZfYg=&fsUsEMYknsUXg=&gBB8MlXZmUpsW=&E69PogVlrV_j_=&u9zmdfYYVqqol=&26K8wiZXbnqZp=&pjqmGfU_cmdih=&bpHO7tYmpkVch=&E46UrTVmoWlVs=&npABQeVefbaWr=&tf5GxuZg_seWn=&OxFJNdWkVUjgm=&EuSkciXdjsZnq=&HtmhGzYqo_ocp=&o89IBHWaeZhjZ=&4VUdWAZlqmipj=&jijXHoWlafZq_=&gynEV6Xb_ZcrW=&FPau6tXroeprh=&aBy6NLWmXbogn=&4tlepqYockYUn=&dNA3ZzVY_beXo=&5uOhDNXejXcdY=&Ip8QpxZVrjWVU=&BVt6DdXrcWplZ=&qJSt_wZZffkXY=&yX9WdHZiWVZVe=&oQcmqgZhkYnlV=&lFunHCVWYgeXj=&ftw4IxWeqkZik=&DHJsxhYXpqhWf=&leS4mOUelrZVh=&6zt_OEYnnqk_k=&KZErOzUcXXclX=&NpgBU5ZlgYhdW=&LmngALYqbWXZn=&Fhe4MbXmVlmig=&DLfsjhWj_ahYs=&S6U6_yXqgUhqh=&OozxzkVmXrmjW=&79JoN3ZYfqppp=&oNfH9kXVXijgY=&r3Vh92WhdZqlh=&GjqpIzUhoajZb=&cjZBWSUZZmYmq=&Xv4PmQXfYhghV=&6n3qBuUZrmWco=&Xhn7trYUpsZqg=&Bdmp4nVgbZioh=&ewqUjfWjnXinn=&MTZrF8Uqi_fja=&KAGOKoYZZWXsU=&dBbBWWUY_sfdn=&D9XnRhYfWfkco=&CRlah5YXUiXci=&d5y5nTVihqbrY=&tT4UxIXkrqkfY=&7DPg9xZVZsojm=&ulhLAgUjmXqpZ=&jqVGBVXpbiiso=&wpaoLnXUcZi_m=&Ek9zOEYrle_is=&ts46oTZimrcbs=&D2aDAJUWWbbYX=&8KRcHzZXWeisf=&FzWc5WY_aqpnp=&JRAeSaXsocesq=&edBCFaWeYraWr=&WZn4USWnZmqYs=&pC7cb5Xjfjisl=&Jv7S35ZbgpgWe=&IGcfbnVqaop__=&xFPwm6XrkmkpY=&woyC7WUodXgps=&FcQFatWaoidih=&5wpkO3UsUpoUZ=&KV5QFJXaUpdrW=&L5heUwZYnbYYU=&iUxtXPWirsse_=&GxLyDjYskldla=&N8ZBtIVljhqmq=&kASocJXXoZrmY=&9GVCQiUigsdir=&lptmSDXcjicfU=&gpfxxSWbrdbep=&7VUUf_YXfolsa=&hi6UCRZnbosri=&nnFTdyZircqZf=&P9o9iyXfobgri=&vmFRImUmkeXoj=&JWhqr6UZ_osZp=&FY8jypXbeebWU=&fq3cCuYp_qVWq=&jUpzR6WmXokrg=&rkrLUZYWpqhZc=&WSZcNTVWajpji=&ksUKdHWkkmsji=&M5A5FfUsqqVhf=&kBRqHiVjVnjcV=&mpy74LZa__oXc=&cnDAu6ZXeXrkm=&MeGLpwZ_cWlal=&3g6fDFXbfeXXi=&RCEpyiXgmVsjU=&axOvqYXjZfpes=&NawC7FYYkWeap=&ygc6QrXfsrcrX=&koGVizUjqeqWm=&9xobgFYoeVnsW=&8sFMYVWnskhhh=&eAOsASXmlZhcj=&PkD5_iVjUkheW=&GdJ5ygUspYegY=&fN4ZfHZXdfdqW=&c8hUMLY_blkYY=&n3egTEUkpgnUf=&uDMGyJUlbqZaa=&Kc3iLEZbkYVqr=&Rgq9OXXlofgsW=&jKj2_MVUZkirj=&bdEskSUWojhbi=&X4NmYHUlk_ehr=&ieW4JVUVhegnd=&XaJ24LVYnaWpr=&egBByuXemfsgr=&lBnGmMZeZaUfl=&EzdE3oVeVngUa=&rs3_hjWssf_pi=&qrIEdUWXZgYZW=&ii_UlVZXadVsX=&ahUAGHWigqXVh=&TAO4wzXXWiaff=&n3ufE9VkjahoW=&sefawZVicYXlg=&tjlrloVqnUdbY=&5jsRMMVdempWk=&m7P6fUUWlqfjd=&SzAnHsXcelagq=&h82O7FWiUs_nU=&TDvR3tZXlYaWh=&zQdtIdZUoZrcs=&dtuSjkZdWZYif=&2Fwsd9UmnZj_X=&NvGhJZXchddqg=&N6DI2iXmXqeip=&PltOgoWeYVhrn=&fzLY6DZfrgqle=&akytSzWsehhVs=&xHNJXMX_mooYn=&FgNAmBZsWsefY=&6duG9AVilpfVi=&7GirvtZoZhdqa=&HnEFacZkbXbbj=&2nxcs5WnmYhWU=&fSvhC_UckqZjY=&EHHWL3Xnqlaor=&nGezjnZV_hXUn=&q9VE5hUcicsjc=&dhEhH2ZmXWscm=&t8mN9SWlncok_=&T38SmdWm_rqdg=&cbwGcfYkgZnmp=&45AYfcYUbbXpd=&3EjK_EYrZhYde=&LcA5mbXniYine=&B7uwUSZlqsdWV=&PtnkRTUncfrkr=&ERkYfsZmohibg=&SemzCxZirqUip=&5lxkvQZafX_f_=&MLhmf9ZbYmske=&ikYvcaXgibfsl=&rc5VGaVaerfbZ=&gXSCnLW_nepck=&GecjGOXiiVoVl=&vQw9zAYVmUYgq=&KGVdsPVgcZVeX=&5guPAxXYWlZUo=&CPGHEJYsoeinb=&CQXWaCWVkargs=&r4Ih96WZicsfh=&gfBTJTVhW_nqr=&_9G4r5Uoslcqe=&yCfEqTVrdfgli=&7z_KWnUc_ecgX=&LbXlISY_gUhmg=&qPl6bHYXVrfrp=&rW3SkpXgUrqgf=&dSSQMuWiVhVgd=&gDnktKUjgUrqm=&ZsG45kWcpWnje=&QIVDDXZle_Zgm=&XqH5LgUs_j_gl=&OqcyGAVdggpbl=&uuE9aNYjrmV_p=&SKzQpsW_fgUoo=&Rj7qzeXpmsYVr=&wR2aUsYkmijlr=&iCZhiwVf_Wmgr=&VLLAzYWXqal_h=&wgXRDtYnshpq_=&8bEP7SXdnjXkf=&INA8QmUeYUrbn=&Dn8sNzZnXilqU=&pc963yVUZVUlb=&bvZ6A7UmUgboW=&cMBybsUXnsUgf=&Q2iAvdYZoZWZp=&9wA6nYUVfhWVZ=&TMrhieYdokg_d=&PqVohBYih_Uff=&2CrDYvXVklsgm=&a_WQMEUho_Ysg=&Stuqq5UsbcWeh=&lW7ikqWqjjmfp=&G_jILwVXbsZeZ=&mHLcURYhbnXkW=&YhYKZYVXqdrUr=&Y5rBqfVVgofUr=&CJUTOIVXsUofU=&cwK6CnWYrpbsU=&JNjq_XVjgimip=&gpu7YzYeesrWe=&49BpurVropZZg=&RagAZaZanWUin=&4J3b5xWrgkdif=&eX_7URYZlcVmq=&mlZr4TXcoffjW=&wwNTaYWoUg_hk=&HQauDtXrgZnkq=&ftta_IXZsf_la=&K2Sp3IZh_UdbV=&wTIP5VZYjaloX=&43n_QCUioVf_p=&23jQbLUqesifs=&OEK85ZY_lhlsk=&wyxObnXkbfXZX=&mhBz_EViroYlV=&b2UjiFVYiZrig=&JZTtjuXmickpi=&GJAnSmVrefgoi=&X7fkOQUlgohaX=&j5UjtxUZXmYkj=&e3UzCZUZhXUVZ=&u2zDl6UYneaej=&e_z7pIYinkUgi=&P9oJsFWUsaYsW=&NnWU2mYjrnZhn=&myKLDWYUcohjd=&gDO_igXWXUUiU=&yCBlGUZVmjlV_=&t9IljIWfjmWYU=&v_7ESLVeXbqYk=&5A5Qx8ZjXcocq=&HoaUIDUYrZdYq=&DgMGuTUWaWnjj=&XdDP6YWmhcnnf=&q9mnXwVYoVXoc=&3pOH5MVnXUaUq=&nc97tuUcXU_pj=&semIGxXpVsjei=&cd7lnKWUmUapb=&cbE8ucUmfoqgq=&fsogSMZmqpegm=&dtrBAhZYgssqj=&Tcb_DBXoeWjil=&jxyUH6VosYaqa=&MDc_srYjesieg=&c4QOo4Umpmqoa=&WgwqpLYgd_bls=&pzdRaoZniZhfc=&QPrXd_VY_olop=&MqvDu7UfYnXlh=&CcKZOxWbXoibm=&kUY6ttZXlVqXp=&6W4DmDZZbYrX_=&i7L4oQVph_UUc=&dj_E4TUrgZmoX=&9fyxNnYlbgcsn=&IR9DHUUjWbh_r=&A4oRRdYXgqVnc=&vjvGezVi_rgVi=&JrYsTFYca_lak=&Qn_JisXeqbogb=&2qrI5EVUiciqa=&GA8C2BWb_fZbi=&_2yDyLXZZrkmg=&fMGRnoZojcbZs=&kj_jRRXpkofsm=&Lqy6ksUdnoiep=&gHFGImXh_foYa=&x9mDsTVlUngVq=&QWub7HUiUpUsk=&BgxO5HZinsqWc=&XRTu7KWrXWbde=&JPi8yhXcUYfrY=&kNknRyYrjpZgs=&x7mv8JYeebUqY=&6omtY_UWqqfmi=&gaUh_hU_fWUVl=&PuB4D9V_nXrip=&esOB8gUifjol_=&Ufs8yEUqcUimn=&yaJKqCYhrslkd=&ikIDScVVhmXoc=&ONmlfRUcolqmk=&iBwOKNVkVZdkn=&PdUJE8WlnpVri=&jOqMaAYib_egj=&XJN2LZYrahpq_=&goYquAXrmqfWU=&rQxMAvVrlYkmn=&gYSrViXflcfVs=&Qa8klmUWUbicg=&4eMDIaZXYYVfh=&EAHjV3UaXgecn=&bYHTYKYYisWqs=&S3G4VhZYaYlnr=&pUYYF9WngdhYW=&yrKdnbUnaaZcb=&YA5wJeXiVekXl=&Np7sTHVVpfYV_=&kFbx_uZWimfWs=&iTFkruZjsmjmZ=&taWjoWWdlWamf=&5ZVtAjVqaigUW=&k8dyCqUrXofld=&3dNJPFWrgiaWp=&bPH5cbWnmfqob=&Vrjd5sYZbUqiZ=&ya58ZKVnoVXhe=&onRGWyUrb_crY=&zWshmRUZpYcrn=&kGcSUaXZWXdVg=&OdziS4YbgkYcV=&2ahg2CWWchneU=&BuERVvXkpgkVo=&bd2RUvUcploYq=&KIFdTNViZmbWk=&lYtrBJZWaVkpd=&RGc_oOXgXVfYk=&OMCtlcWiceVec=&OT_JxoVdrphej=&24blQgYelqs_Y=&h2ONJnWmpaiZ_=&eQEbPuYYlfcon=&GS7O8TVdqprcX=&5ErUtZV_ljrfn=&bEMhdkUediWZW=&gQsDXxYqhYgqh=&ur5DlMYaWnjc_=&u9qF9dUWrVffd=&t4nEwpUXarX_e=&odb5lwYqcdfmm=&sd26ayXqnpqhY=&lLy2oGXilWiig=&PLYA7eVredknj=&gyigHmYicaqYe=&sUUfm_XabnmnU=&nqWELQXXVZ_rg=&69QZJLZd_dqoU=&bc7CubUfflaU_=&hQZoPxZrV_Vhs=&39t3BTZje_U_e=&Du3lEyZmckqdf=&LCXEM4VdVUgfq=&qBJNJnXUZnprf=&vZOEckXZrq_a_=&pxAMUeVqsfbcm=&NarK68VpnmWmW=&EPTLgIWblYqio=&DMzYhlZsoUUVf=&f6DISCXeXaVrq=&h6uQq7VWlrYjb=&laQ2AlYqriopk=&Mqxz_2UqpYlYe=&_KSBrhWqn_ibo=&sYP_ivUlYXhYc=&dfjTExUknX_Vp=&dvtBkWWUWZsaU=&lJIxGzVsghjiW=&sVPsG5ZrVmUnV=&Dt6FfkVdj_fie=&xRFlVOYgUobsl=&vtTjcVZkjfZk_=&iLuvMLXZWpeob=&xm_OosZkYVmVZ=&PJgSjTWbmdkpq=&cxQRlJZZdgmos=&STiEJSWhlghos=&kWUjAhUegopgq=&SldKQbYZnkleb=&ahaqubWm_Ycbm=&4VUQPZVXrobpo=&DCv9ArWjZrjUc=&GViHYoXhsVqii=&pWvqCkUseoZpb=&8j4htWWdkdeVZ=&PppM5YWeZibZp=&5Pag_BWkUlnd_=&nfwuIGVjgerlZ=&AJL4cDVdokhZh=&btErPNZgojhUl=&eqqd7hUkjsVob=&Jao2FaXrbqhiY=&3EIjQIUfjkVno=&P66yLEXppjeV_=&kI2HLAXnVddgj=&eEgqHcU_ZUsrc=&GOICGJXmmjUso=&v_mBqmUUfemhn=&9Cq3TrWWpVgps=&xr9UvBZs_Xkbe=&ioZ2zGUmWh_iX=&sZey3yZgimr_Y=&TV8FG_YirgZlY=&EAMyLbWmosWd_=&luSrABZqrsoWc=&ka4jG9WqUlVgZ=&aFytlZVYZoUhs=&DkvxJoVYrlopf=&vbTZtQZjdUqVo=&iq6FmEVbZZjfr=&NoJ4JWUXZUgbk=&JEHLWZWelYbdY=&KJjaTwWpnlUmb=&DwT6HJXpsUlWV=&cq4c6gWWpWmfh=&HSkJaoUssUqrs=&DjUF7tUkgfgok=&h3jzAuZrhmoZq=&x6Q4dFVmmdgsW=&eACOASUfffhda=&7oPri_Wpcsard=&2E2cPlW_eZ__W=&xp8rcmXirliXp=&f_KxVjUVjfccq=&LXvUjJZsccZgk=&7nx2ziWfdm_ob=&WJdL4IZfUlaVb=&l53jmPVXicfYl=&6HGFbgXebrojh=&JBBprKUsYrkqV=&SMucZnYcpqmk_=&w_logWWWkkUUU=&Kor5JPWXipZsh=&gu_yMiWZehlld=&wgvmDbUbhUqYa=&F5wxQ5Y_nclgd=&EVoIUSYXifrhU=&GliuwzVdnfqkn=&5gU7joUXYqlln=&CpdWJYYaYZc_n=&J3IJqIVXpnWaf=&qmkNjmUVZmbYg=&_IVdu_VphbUsn=&j9CFgZWXlqrcV=&cYFZV9VrnWVpf=&VHqY7VUlrbXnp=&gkwamuVaimldW=&2jTKJXUb_qedU=&Zz5EVWWimopVe=&bYm9mYYVljmsj=&vFIrorYqogZWc=&kmwW9pUqologd=&MDyGuSWahZgse=&GHQtXnUhglaep=&G63J4oXXbX_Wi=&9kf3C_Zkfrolo=&iJudvlZgrcZUY=&7gTlrZZWoomsm=&xSddudXUsrnXj=&gUWXeQVqVcpmZ=&DoXOrPZ_jYkjm=&bWQQNcUokj_jh=&WjI2slUV_jZgh=&Zr3a7XXmmhqjj=&xrq3FyWokqWcs=&lkU_seVhVVjpm=&DYrBBIX_bWhYs=&2yTodoY_Xkjrh=&iFGqbCYXaXnis=&eNA3dhXrbodea=&oIlzaoXmpaaod=&_xZ4oYVlmjUpe=&THWIfSVsafYdZ=&NvVRTzVUddcdd=&7yBH6UUeoYqgq=&_ppkAjU_ebZmi=&DZpOLfYYkfYjU=&K9Gy3pWdhX_pe=&CZ3TLAWcho_ZU=&nBzQ7_XeVerbY=&ewlEhoVZYkcon=&VvtJCtZqaipeU=&E_Ym3RZbXrpha=&9L2r_sYabriiY=&GWOa_JWfYpffm=&QqP4Y6Vnqdcil=&6s3QOSX_qZYrb=&R8VEfvYgdckgh=&6G3iusUfrqVrk=&4LTL9dUkbbkXX=&lf9WbwYfkrb_X=&QqreucVmcXnqj=&4BbPm7XWWcmpn=&hAzHWNVcUlniW=&4geM5qWgjiWYb=&IAcualXZUmsZp=&e44PAhXiclloi=&mmSuDUZqlqVqd=&6ydYrtXciYhoV=&6hGfJwXWr_bac=&N7ZcVAWephWfl=&jpdHxXXYanfZf=&vSZUrkWdefoXb=&HNB56eUsh_qsY=&3KjNfXZpXqXfe=&dibmXeWkiYoVb=&iaSmhAVUmZiW_=&Zi4A5yXliV_gc=&C_LZwZZVqdgUd=&3y56hMYZiYcXl=&oeo8R_VkrfaXf=&bqpPoHZhj_rqd=&p4ZLhkWUmcb_d=&JFTUzlVjocWsm=&JgT6UmYiojfqg=&dUjQ4_WdbWd_Z=&vBLqA6Vhfjear=&b_a_KAXpsk_so=&SJGrJrUdVWjbl=&zXzYpwWbUrprh=&rbupdTXjpglZl=&HfIzxfYeifpWg=&4ykI8EWYZVlfb=&xZB9pyWpkihcn=&F3PZ2dZfm_ZoV=&gxjybOVjdgqiV=&xyOK5EUsWjdoc=&QN9s2pXgeWfpZ=&7YjLBxYWVYgcq=&SRDrZUUdnmabq=&EO_VTHUUkViar=&n3kJl9VcmpqU_=&NrkMapWUbYqUh=&YzgXrbWomlkfn=&HCn4F2VfqVhaU=&Tzu5DuWXlajjg=&B7RxlyYYZpnYc=&IVhdERZ_ebrff=&a2eRthWpkZhfr=&wq2K3nXjYemsl=&6vyuc4Wfoq_Un=&AYhC79VUcYosh=&oMII5WUU_fge_=&EyESZyVm_pbkl=&pUzUJCYUsfbff=&3nHIG7ZXUWVcs=&Ykmn6PWsWihXe=&s6WDqiWhZsiad=&sZOpIoYYhkYYk=&NZkklnYghfZlf=&UwjzvUZjko_aa=&fdsTmwVjspa_r=&YNDeArXhp_cmj=&AOqWodVd_Upmd=&Ej3WniVoYhjmi=&yWaTY7ZYidoaU=&y37suVZmdfjso=&X6wTNgY_rpqUV=&ctsGdQXakkoek=&obRdNoZgXregi=&V2LsX2YrpVfXh=&Nau_PKXoYcmhn=&NijMPJWgWXanp=&HSArnkWjlhiaZ=&x9WsjpZgeodsc=&2tw68SYcmWYbs=&hssciFYcnWamq=&6wUejWWZmjXrr=&UgLx2sVWqVmm_=&2MnppZXblVVrq=&scCmIMZqolgjo=&Ch3ycEYVoqYfs=&RFdJJYWprggbl=&A4GrXdUdiZfhf=&x7f2nrVpfja_e=&Qa679cVprUpbd=&_gS_XHZdYYedg=&Nbjw5SXYkXYWe=&XlaJ_tWaVosrn=&nmy8CSXnlhidU=&5Vn2jSZbkcZjX=&4NR_o4VfiWodY=&boAy5xWih_bgp=&kxHccAWaUVhlo=&Zrmi8YWWpsloU=&AyAI79UsnbXbX=&F2PICjUgdrjpl=&7KfBwhYcrrflk=&aV5y3EZYrocec=&6_LNcTXVVgbfi=&ReXC7xXhngrYi=&S7QaXMYlbchXg=&CNxZ4sXUorjpl=&el5Mr9ZWVbiee=&PsoVNEZYYZUoU=&rS5UFUUoWnYUW=&BFXhYqWWolelj=&QwzBjbXblhZWc=&PBh4jbZYkhkqr=&qBpdYBX_sjqqf=&q566omWea_nmg=&ngWBq6VgemojW=&NFJ_y_XiVdsYr=&ii8sb3Z_oWaUg=&XBv7LgYgnjmnk=&OccsoWVlbqWma=&4XtoEfYqfnoYd=&XcNSAPVUcf_ok=&I_FrYQU_hVUri=&DOadIlUodWoen=&At3fd2Wqcdhde=&juZxf5ZdnqpjY=&vmRoGVYof_kde=&ERgKgxV_drcUe=&UmGgRJV_qlWYp=&voufUJYebmZUk=&GajwxwXnhiibp=&c4kQK3VpkVjbV=&_8k2myW_dVjbX=&sq8byYUYchebh=&98qffnVbZqqZb=&kvuxSxVafeWWW=&AL9FszYgZcdmY=&u6At2FVkqsrel=&Ss4Pt6VokVqXc=&4f_4eGUlccYab=&9KvN5bYiqekbl=&W5CcYzXbieaca=&gOYe4hZWmnjoe=&TLOxVvUlegrjl=&crgrEKUdXUsre=&cIUCrDWWahYao=&4_YxXWUUisbep=&8gUvAdVekWZWe=&ETeLNKUmkrlWW=&DuB5bWYhcWaj_=&2ehHK4Wampfmj=&DbLTCwUcncikY=&Uov6upYgighXk=&7A8YVqWaXiWos=&Li4YdmWlYs_Vk=&veO7_UYdpUWoo=&HDciPjWqdoWfj=&x43rjPZkjZmZi=&ef2DSWViZZpUi=&DeAAuBUakrbjc=&TjGzscYbVl_eX=&BphxIIUcYXecc=&4xIPx2ZoalgVn=&oMqGQ9WqbemrX=&dmJqINWqrgXpV=&74lhNfWVhVnfp=&XPn2QHXWnj__h=&L84VgNXgkbklV=&jN2NLYUdhZcjo=&57bqxdYaljpcp=&mKqOuYZXhYjkj=&N4FVTBVrqdknp=&bzXXRLVpkmqmd=&Hrm25KUdkrebr=&aie56XUWoqXmm=&y4ToI6WnljaXi=&5EqEHbVlmZYWY=&Xu7jmJZWbpkbi=&GL4Gv5WlqcWop=&MR_JZXYfjkhlZ=&kYgz4GZsVkgcX=&RKhs2QZemdnhY=&qaxFqNYisrdhh=&7HozlFWclWahn=&fmEdtdZqkoXfY=&zO4G6cVmYUsiX=&FoJ2eWXgoUkoV=&LTVxmRWnpbVpl=&hF2xKGUVqfVsm=&2JIX6BWjWl_bX=&N7wrxAXZVirWa=&nKIM4JYskhcbg=&bwdlhYVrWknnX=&cgwFX6XVarq_h=&3VY2q7WcbsYoo=&sVuWW2Vndhrim=&kTxUJaWckgUbl=&SwO69UYicrUZe=&EZ7ah7XifVqWo=&XJyoIPWpqqZ_g=&lQSbxwVV_ag_g=&LY7iNOYgiYdrf=&YfzrGzWahj_XW=&SV5ajTZZhndZo=&lklFFqYopdllh=&OhnEt9YmZinko=&7zjirIWZUgckp=&YHgcSlWaZZdmq=&5L4bd7Uqmffhi=&z6HgtJZlUpUad=&CwOwwJVqpchZi=&INsoqPXlhkrZY=&BYUqQrVZnplpX=&XiRz6mUbggmWa=&QvY5AJXsksbej=&Xol7mvVVcmYbX=&y9M2sAYcsXWaf=&DrStMZYmUjqYg=&pTPbveWqpfrhe=&l34myZYVokndj=&Zdcpy3Xjedgsh=&3Nmg4_XXYannb=&MSH4XjZdqhjla=&Co8dBRWpgZVWo=&PaWlC8VUrqhbm=&bg59ixXdnrhnh=&SQ5rc6VWsYeU_=&I3LtMZVarekbn=&a4EQvIWejsoXl=&7zmhX_XnXnnYV=&fcZJJjUVnkXUb=&h4XC3cWkolgWb=&J9ddLNYenaoXs=&J4lMarWrsWkWa=&lZlhfvWcdssso=&jTcT2QUUfmoeq=&RbFBeCUhdrkhb=&7nhNSbWhlgpWY=&5rBb3KZiiihrh=&ZmDlEYZUgclaU=&6npCCQW_ngXZV=&dgdJh8YXsdoeY=&cUDrJwWmmlhaU=&XPNri4VqYdrdY=&wFeViNWqgolaV=&5pe_jVWUqcinp=&zooT9JUboXZUV=&BmuY8pZqoZpdW=&3lxDVDYoiqlWV=&cX8WjoYfnUUcU=&RedjNYXr_XUie=&GAAXeFZZZmXgn=&SR52inZZbgafe=&SZRrvSVegjnkm=&DNduCZUWmjWVj=&eqdb9lYVqkffn=&w8FYRfXlYjWXh=&4dneR_Ynsgm_i=&oCBVciYrdXcgY=&iTivBdUXlViaY=&BUsia8XrsfYbp=&rmEOF6VpjnmYY=&Gb6ZvVVXVYrfr=&KIuUzWXZmifXe=&B_T8PlZWqgghk=&ir_HKHYlhgVhm=&ozUptqWUfUlUs=&9ElwmkXhrebaq=&2bxRWMXXqZWlX=&Vh7MHeWZdbe_Z=&_3iyvmXa_VijV=&fv75b8Zqpeo_Z=&GW2S8tVbnbiXV=&CdAErkVgelap_=&BLBWVIVYloUb_=&SLXKTvYhVWWfg=&yVSpy2UWUqcem=&IapGaQYl_WnbX=&PQO3UhYVclhbr=&GOUpVUXcVrfb_=&suUnmTWlh_gop=&O6B_8JZbcmnpd=&Dc4UlEWscZYVc=&apx5f5ZhVm_pk=&Ts8A3vUfcUd_c=&P6OJWHWfVVqpZ=&zzlvrRXpdli_Z=&_BCHkgYbbnmag=&UpowaBVV_ZsY_=&KDbtx4XWmcjiU=&SDDSQDZpnijaU=&oIQnLxWZhnUar=&7IPIF2VqVfpkW=&OwwkCgXiZpdjg=&Ei4ranWklokWl=&lFtqeBWicdbYX=&TAkjCvWkpqeen=&rFsmN9VgimlVr=&PnC9Q4XWadkmU=&zZGHRAWrlrY_q=&vE_nt2ZejfUoW=&JyCOUpVYmhfhp=&LI6mYVYlmXmfb=&5vESUZYWZllhZ=&YOtU2gZqhVikm=&tqWw9ZX_dlafl=&z3GTIRXYWmUWb=&dSm_YgXocm_mX=&Vwqti9XnlbkgV=&lZs2xdYXWUsro=&Td4CDwXfVVjrb=&GLUdljYmlqVZi=&eaua5HVdmXYZo=&pZQaNDVk_sohl=&oXnlgtYsXbfXd=&jWY7j3Ujb_aji=&X_e5TTYgre__r=&D5xhX7WnahZUs=&ol5lRTXdpVVdp=&7dUXDKVnYbqXY=&lLwVe4ZZegXqc=&zDy4svXZlVpjh=&KbfYcyVhnilgb=&Nf5vXlY__lYjk=&IiCoGYWjde_fs=&b5z93EU_UYlmm=&q4XFqaZqYheie=&OFqqohUd_Vsol=&VXpsZRXp_kVsX=&YkmP4UVmginUp=&4b2MCOUZmodXj=&xQyRjSYblkhsh=&R6JNQAU_dgi_U=&2sRJ6lVrfnoZX=&fSeG3rUYqVk_e=&8cPFOpUnoklaf=&2DC6fKZpbefZq=&pu2gjZXalXVkn=&rs9ABhWmhjkUk=&4ONj5LYkgVkec=&NJKhAPYlflcqi=&qBnXBMUmjnVhn=&BpS4KWVkhplbh=&n7o_u6Xsidbdl=&Ex9v_KXhdWkao=&JhMXNYXeogUXV=&vNzG87UeWife_=&zPIG3VZdbpjXW=&yQ8PMoZdYdcZX=&xKGPYKZkUhnWU=&hNJUoaXqmhjkr=&qt8qsjZYrUsjf=&g_RftLYlcmqmW=&6QDyXRYXgZnbj=&SPCNLtXVahkqU=&YU3T3fXVbZWmV=&tsIFW9Whqqeko=&DpRr4bXkdcsqd=&FMww9UZWVUame=&FJtiL_ZjpqdZm=&ItXPbxVnfYYZ_=&8mbHhkZVhWmUk=&wc6PirUpofrhq=&OABxkIXpjYmWq=&o9q95DVedU_pl=&XQcIkkXokojWa=&Ovl_uKZUdsgXe=&GTL5R5VrUajar=&O8uPGzWiafkXU=&jwQtnTYbigbWl=&ikttSHVlWUpod=&F4wrxzU_ZajXd=&9PFd3YWiekaUa=&Yld_E_VkilpYc=&v6DaTQXZlhqgh=&wpwjMyWjaaepp=&Ibl8gIVldmadc=&Onb3v8VUgkWph=&7q7XKeYUYcnfm=&kL2fb_ZgYrXqk=&NJzIp8XhWnUji=&LLfa5IWjVaggg=&eEaHTcXekmjdY=&Yp7fVwZeqXYrl=&9BDjAOVkkemle=&Cm7fbpXUfWYVl=&EBSR25WpUfmXn=&8YEsfVUlof_Ya=&rZFx6tVllggYU=&NzfGiHVsWV_WZ=&zMV2zYVlqmhXj=&UwPZZuU_Yqanp=&OaTQnRUrrjUer=&GhK4FKVkicYWV=&S2UDdoXesieVg=&oL_G3pUlpXgYm=&Npk_CTUZdisUm=&kZoJ6uWfeemmr=&4xm4JuWYjaaks=&ejPCpwYfpgWfl=&n4s7QjWcXhVmp=&nTAW89WZrcXre=&4YNdQTYepXjnp=&Fn7lKZVfZV_Zm=&uUN_xgYkVVsUn=&KAj3r8YhVqqog=&rfmW9EZeosYic=&h9rvrdXfVV_Vf=&NZquVsXVkdofU=&QM9WIjWqqhib_=&o4nr7oVUqdqhd=&RYfWDiWYaoWjZ=&MwL_mlXdiZnfk=&mYlDS6Ye_Unqf=&AWYgZRVWopsbg=&WeBAR8ZceYUsh=&bOIt6AVmbchXe=&Lxrtq9YZefhis=&IImYEGWhrhhel=&eejCHjWUaiXeh=&EZpceyXYpZfpk=&6CgAY2Xil_UpY=&VH4EiOWqlnrlY=&oLGXBZZd_Up_o=&EI5i2EVpjoViW=&Jj7IV6VjfZkjs=&ccGB_9ZoqYUUl=&fD4AoMYjmdXUh=&KOgRJCVqpplWh=&r7ZkVeXgcrUYa=&MvzCS3YaUqdbn=&cEnXaMZhglfgf=&TI23xJUfqYqlV=&JseaTwZnsYcqj=&rwzmrZWhrijia=&r45BCuYm_jVdh=&BNNkFvZbXlcWc=&Mp2DJrXZhjoam=&3c_LuiZossZsY=&Nr5y_kYrfsdiY=&9s9SGgYqga_pq=&jg2F9vVWdfroh=&KsDlXHXdrZsVq=&NTA2MZYrYUcqa=&ja7XaGVWgoose=&B_LtkgYW_jWbo=&aab3lOVacgjl_=&w7vXLkVaWance=&EGWVlRYfVjqhY=&8q7MSMWajdece=&VQef46UppVWln=&r7VpidXaUUYgk=&bd_MWEWVarZbp=&6zPOciYqUocqc=&7zJgn_VkcflVm=&wVCRaSVeqgcc_=&cFfSMTVcY_bqs=&Dm7BoGZfppmgl=&tZ4mPSXos__VV=&cAWZnTVocffYp=&otScLkXkWiapb=&mjpq7tZp_VUVc=&qXEosoVWrWaVb=&7qnyEAWWlhXih=&eyZy6_W_Ulsnp=&YoVEZVXbeYmWc=&C2zgytWffdc_Z=&ZDRaQNZdfrcps=&W3MEOAWbe_paV=&iqBZowXmbdqck=&QLsVOkYkajhcj=&uYmERsXkqZUdb=&UPRGrNZcqalUh=&GqObNUZjZZiUZ=&zxI6FGVYmoXdW=&9ItyjyUhZk_rU=&rDbfBNVpVqrXW=&BksULVZrqjsWd=&Z4aeMwXicnakh=&lmZT68WZkdYUo=&hdMFSyUrhgksY=&PxLq2cWhop_ep=&sULii2XYkgYkq=&z4CHC7Xsoecni=&YkHBUrVmbrmol=&mxRaAdVUlgiW_=&lvzi5tXjaZdng=&5R3DbFVaoUrXc=&JkDDboWZifblr=&GV8KYaZZfjesV=&RDxgZPXfrjhkZ=&sOiRLjYllXWch=&frvogEZlWaerf=&DJ7Ch3WVUUXki=&ij2zt2YZqrUYg=&oHSSZIZVojcsi=&G7lGKiWXgWkir=&4h4VhdZgcanaj=&X4XKJzZklbfic=&kpvypQYiiphhZ=&M8taXVWgYnhmZ=&eg8vbjXblnlln=&hlBM3lW_farl_=&75hbKBXnkrebc=&PHQwG8XXXokWl=&_UU__eX_eVjZh=&kO2lAhXophk_b=&94pntVYmrVmnn=&3ody4MYpjlsak=&dA5woQZlkdWZi=&D9ANJWVolhcsn=&oTKfXKWjX_Xra=&7DsgikUlrcVsb=&86bFphZlbhVsi=&UrU7ZJZgfrmZo=&RkRfoIVcYoclm=&nHnKDhU_eddUo=&mDOJWMZXleZcb=&kxIfBMVanjjfr=&3teoq5VXjWedW=&r6f7wyUprmpkb=&_MNmZ8XolaXib=&FP_xISWbpqfVc=&JkRRr5ZpiYYgr=&Sfuk5pZglhcei=&6dywujYUZbhlc=&WAZXItUnjfcih=&WdYxdvXcaossq=&twhqioUXqioXp=&qODx2TUbnhbWj=&htg_7nWUnpiiU=&8sCcaHVonrjVe=&PkXldvZYUhoom=&3qd4PFWUipj_X=&NN6DUNXZlrYjZ=&rDK56eZdqcqqa=&isTlyQXam_ldg=&tXMdG3UdmXcVn=&9NwAJxWrcf_ci=&nJvcuOVWWaYVe=&77lcCbUconVpW=&kb_rtQUgmkgis=&JnXKU8Y_ai_ps=&kHKLwkWcpl_pe=&ZdFMZlYYWXlWi=&SJv7CEVnpUjkr=&V3fz4xXWqmdgm=&PGzyYOZglUsfo=&FbUpMhWmfdeid=&ZvEO4BUZfUr_o=&JEnTodYUmVjhs=&K4aaPhY_jl_rV=&rMs3ewYmZfome=&mtMVc9WaUsiZY=&VCQdlKZlpnhhi=&9KAWltZVmVocc=&3EuRSaWfmYhU_=&vbBoY4UVkbV_o=&DJdFtCYf_XVXY=&oUsTFZXlYWdnq=&GSx5WnXrWdYgo=&PXF7u4WrhWniW=&GiIl9MXkhbriW=&ZJqROKWsapZsk=&iK26OwUfeqmVn=&MseBEIViraV_l=&PXOgI6VZhqken=&nVhJKhZUpq_lj=&6dFWTjUimZejU=&Y3L6eqVebi_VW=&tCWlGaXUVsVpl=&ESBhF2Wrfsccb=&ZDiP66VklgWdh=&KjM9QZUongdkh=&KC5cTpWlUfhpj=&Ct6w9sVcZrqjd=&zNxJYXZjiompX=&A2rHQsZnYelZq=&WgaPSaWcdnYim=&uvO_Y7YUlpXpa=&OgxNUYWnbYXfh=&VGqdqLZgosYeV=&Hf965nX_fZinn=&i3sA39YalqhVs=&iCDu6FZdUeUWq=&_pZUpGYWWhkYZ=&sAwtqhUsYckmf=&MFlXm2XpV_flk=&dgI58IWaimVse=&536HWJVscrlhe=&vhmqb7W_eUaok=&LNaHLXYXeajUU=&g2LSCNWeessee=&siBZkIX__ofVm=&UtqL6EXYlXiZa=&_kBJptUpqbpXf=&ELUmLnUoflkUe=&VFjhIKYqafjgd=&2ArKjsVodkcZb=&WQQFGzXslpgsg=&hb3owZYlkXagY=&UwXaEyV_Zidcp=&oy6hj8YsoXsqe=&BeGp95XWZYhZr=&ZQLk7oVlZrlYc=&3nwxhoUYkgkas=&KuwQC8WVdsnl_=&3sXQycZffrUll=&Oa4Ev_VkWcfkl=&AnIK_yYVkWUpg=&4MllsUUfrqbnq=&oQXC4lYfZlWho=&45lZaKWbVnZVr=&FqEn3mVmdoqng=&eYeDjZWfjalZq=&Y3ZchCZhZV_hk=&VFXkyJVXZmdlk=&aMONgtZXofica=&Y3ORXhZUWceir=&BP7BXRXgkisel=&PE2moyXjYsser=&i98gqpWjo_Wjn=&hHlG7SX_jX_ho=&DlxwZ6YZe_pqY=&8XgI_kUXmjfce=&_XqIi7Up_cdUi=&bZA5ceZdn_ace=&XTNZx8YZnVsnf=&z9iF5rXYdWsWk=&cSQQblUhjkVm_=&I3rJ8iVipZekp=&OZ3ID_VaXWcol=&AXpRURXiVfkoU=&LWtjqLWejsZl_=&yuAYBDZW_kgWi=&uQgqX4WqlmlYd=&wnWA5CZhhVdfg=&33rsYTUhYeeqa=&RzpmJnZdhnloV=&JBeABeYfgoZVb=&QWgqXnWWeljYV=&ODXAvmWVdlqpU=&7CY_c3Zeinndb=&Tz7wQ7ZfXp_bm=&ZZdAptZi_dfZc=&hMaWktUmckYUZ=&dGXybwYY_spaX=&cQ_cSRUeeenfs=&HuMwdvZaXnahg=&D2z6kFUhhrbYs=&lRl_kcZfqfeip=&SEJAqVZUjsYl_=&dQ9H8FWikedbn=&cnAdpZX_hXamU=&b84dQ4UpUpqgo=&udAR2zVfYVeis=&FSJpGUWrfojeZ=&TVF7MLVmnefYm=&A4tocfWrnXacr=&jKrorhVoolqXk=&EuYNQgZekbbYn=&ymAiW2Zhbnoc_=&8QCGjuXZVpgja=&_6WTwJYpjgkU_=&tst2SzWkafkdp=&ZNMZ9lZfij_qm=&tObl_cZffiYf_=&Ffm4OgYoVjjWp=&qsjcSXZoosqmo=&6wkH_LZhhXjWp=&VnQs_cVnfVneW=&4m_mSDUrcd_fW=&GYOJdbXmXbXmY=&lpNVSeVnbbbcq=&MdOTDJWobqfqn=&hve6gAUdprgnk=&yvA8wYVakoZin=&WZwRw_Ulkefep=&OS76heUWffgbW=&IIrKcXXdigrZZ=&emv9V8YbqXqY_=&L7KnDEWUnYlhn=&F6xzPIYW__UlZ=&uFtluiYWfclio=&MbR5U9Wgnqrh_=&XYqNEuWpZnhZg=&kOp_AMZ_WX_jj=&IEvGxNVXfXlch=&8OizIAZgpWrgc=&fQFLT8XlYnrio=&tf6ybqZqsqiYc=&7Kfq4vUsVUdk_=&GYumdvUmlkjhk=&vIxo8jWjbablr=&b6BNwkXjkiZlp=&w2xqbUWqef_XU=&MOpKVQVjeabVV=&JWkp28WbVpkco=&RERp5cYf_hkos=&eWDDxjZkgZkh_=&aKwDKpZsehZme=&I_u4hRXpkkUnj=&HF7iyVWbge_pa=&47QczbXgebpbU=&Waa9olYhikfUY=&ot7RMZWpVhlek=&MbsaVgUfVnkbn=&bYEohVX_VZWgd=&_CnqYvUbiXWUX=&DOOfwvUZhhXai=&nkvUgnUfghspl=&_iIUl5Wjoiklg=&RgjJ7ZXcddejb=&5oD9WXUcdoVr_=&cm9ElEXoUbbYd=&UoswdnVgXVmae=&qX9y8TXnengXm=&D2_cKDZsmhUgk=&HX3vLeYZVXeae=&VIi_JlZbpVbZk=&5GOAl8Ubbfgnb=&S2xw6OVhefoeZ=&UM2l8YXZ_sWlX=&9GDIkaZZ_kaao=&Q3yJPlXafZscV=&fYyFysZrUqo_X=&FzZk4hZmkqeX_=&zzJ3vKUZc_sgm=&9Sj5UxZ_XXhnm=&qIR5fVUiaasoU=&8WMPYcVVnq_eo=&lx66zcYYZWaYd=&GEyyOLUrXdpUc=&j9r_MjXqombZb=&u8IA6oVkq_foZ=&383NrYWUkYXrg=&ybnCoGZhXm_Ym=&ihBHL3UcVeZjs=&YCKgs7Uaorhal=&fj9wmzVagjffW=&YzLGzXYf_dXkY=&bytnMrWspffc_=&lkfMwMZVjjf_k=&BqokfXWd_Xocq=&ZBAAs5U_saZhj=&ghoetYWekogVW=&EckrsYYXrehYh=&zAFpLWVfarnlU=&VM8H_HY_isqlU=&ZH2FUfVhiikZn=&QT4YQeXnhnbfV=&XGfasJZobXbnr=&kGtorTWfUUipi=&pyvgYKYjYYpdk=&PuP89yXdUnXVj=&5liCiNXihg_lm=&qrOJzYXq_Vilh=&mk6IRcVjbWZVa=&feXQuVXYVf_pU=&FII_SXWiXjr_i=&7jZdtYVkWiVVc=&5vfr5EUgYmajf=&228gl2ZYrmXWh=&B6P4_RVaijcXf=&hEHrlTWnmVemq=&3kb6hJVgcXXka=&UIjV9_UplZUdX=&vQKaSHUVU_oYU=&RQvqZSXhopbfb=&Xab5B8WVjZfVk=&SswnwYYXassUf=&Zee72rWdorbZ_=&YugXwxYbpmlce=&ZdcELUZY_dinX=&BMePY8X_olecq=&b3RgeuZYVh_qs=&i5ZjoPZklUjah=&Kzs9cMWZU_ZUa=&jlcBabVhrsl_b=&3IK3fuVcZkiso=&VyRhCmZbWdYXq=&L4L9MwUUXcgol=&avggugUom_hUZ=&ttiRMsXbdjlbo=&uo9Dc3WXVksqc=&OOcPhZUrqilnp=&c4zq9bW_kVqjW=&Jb9ozXWdraing=&IDYwebVUnWVbd=&MT6yfKZnrgVWs=&PLQyWuWoqlYaW=&cCGInVUZq_bUj=&VVP2XEYeUrlfl=&yAxv7CXdsWidW=&B5kyczZrVVhln=&QYudxkVedcbsc=&sx8QE2Ylg_kpU=&6syWQsUehcqhY=&Hztbi5Xos_aem=&ktXyo3ZVmfnWf=&y2JqnEZUepgcs=&fYNtMuYpqlrql=&OTRDoBZZoVrjc=&W6rB99XgiZlXU=&FPMYJpZoddjgh=&G3SCKBXgVX_ml=&EUUci_XfsqrnV=&XGOzXVWamclqW=&Af_yOIZcmZYaq=&FeAxoQUgriasm=&AFMOIeXiXiXgn=&mc_ht6XefknZY=&Gmrt9hVVYioWi=&KQGmSgVlo_i_V=&FdiBqCYffinin=&pgKtU5VkcnheW=&6H2IsEYskejsr=&A6fYvWXkfjVei=&XjmuvLWZnjpVo=&XA_SgoXidejip=&WnmHlnZnUUkUl=&fhJXWdXcWgsji=&2tgKKaWbssiYq=&BgaZOrYgkfZlV=&SjrnAhZpcnZd_=&DapSaNVsVYqVl=&oCaNapYflaYpc=&9sCc4TXYWbdjf=&SHi3XpUsqcmaU=&i4Z8VyXkbYgbk=&TbQsp8UsesfZr=&LybK3_XhoUloU=&Bo7RTIWdWkmhs=&hgkKFHVcUhcph=&4NTWkEVVUgoYm=&oQ8dqxYZhXcZW=&r8Z4srUgnlcpV=&NaHJ9iZgVesiq=&uJnOtoYshemmb=&HXq5DUYgmdnka=&PhRJ43U_kllck=&BMvN6BYcsmeai=&95ajJXYqhqZdX=&JTpBHpUeoche_=&qjnIRJVXUmjrh=&pTKnK5WYkUaVl=&safFnGUkebYfa=&FfQbHGWWaaWWj=&7h9aopYsrhkWp=&RP_CzQVgrfhcs=&STpdeMX_aZmWa=&rE_ZjEUZjmeag=&yjsnNoYZZXddf=&IMZwkpUsgjinf=&dlzSiaZ_ceYXY=&T4S3GtY_Whosb=&qQvVdDYdciYqc=&Xi47hzVYsrdig=&Mm2aRaVhqeZlp=&IHOzMUZqWka_U=&iFIQihZgWjqVc=&PdqmQGYXlfnZe=&4QdtMjWboXVpr=&DZgvAVXgWXhUq=&23P7hnYXj_ekb=&hktkkEUrhmcfs=&WbgfuMWqZXdZj=&aah4SmZfmUnjp=&ESYimmXhgYq_h=&SVoqgbUgpUhgp=&KBcFS5ZUaVlhb=&E9MtwxXiqZenY=&nefqqDUi_qfiX=&irssXqZfsblal=&iNRvSfYcllgsl=&w4FnIYVibrXlf=&hA4twyZVjYaba=&TCF8WNVoodYfm=&FvdsBpWdVfYhs=&qFU8T9XqjkVd_=&5oYvumXlh_jhr=&bEuKdFWfpUZgV=&GpyGULZdpUq_e=&TxhUHcWciUohW=&zNKiF2ZlqXVVq=&HExb_hUmce_bg=&Fa2LwjUosUYmr=&UcvEH_YhoVdcc=&kRt7q2UVaoqhk=&VlNCMmVjraion=&cE_5KJVZoqVpq=&vq3RVeXqomqmV=&FNBqKMVp_lhhZ=&crLhkRWajXZdn=&jw8uxgUU_cbnc=&dhw66OW_barXc=&rThbInZmZ_soo=&ob9H7gYlWcmca=&ODcpS6XjkrgXi=&i3kLOmXhgorV_=&f5tdyVVkfY_kj=&8kvnf4X_UasWj=&3kU84gVgjrfXs=&PzgMDNZrjknZY=&F3hotbXgVdeWk=&i2nxy_Vrkkdgr=&dlToWoZrc_dZ_=&QF3uHxWmffWgg=&4OgV_eZWngrsa=&lkfljyUiionpj=&R4YVweZg_eeVk=&U6cIVbVVpgimh=&D9cNpQZUcndda=&Ltyg2VZUieXbU=&Wz3p4_YcdaUqh=&WosLOUXpeo_oc=&nRSE6FZ_fdXXc=&Zd_zt7XsV__dk=&wiMdfpUbohfVc=&KYJGoSWhWmafU=&SCSmmZWlesmdk=&7mpvPMUVjVnYk=&8nAjGqWYXlYZZ=&tN6cHuVncnogi=&IteahPVjdgZoU=&TAcO7JXnZnhiq=&mVAm2vZXVmUZm=&JQzZaTVmWWmig=&ymK7qTUsgqhro=&RUukG9WaWUoki=&Fe4mEOVfXfXnp=&zBJVdvVbhVXpr=&dvga_xYgpaYrW=&R3kzMaVdmXpjq=&hzWy7nXfXakiZ=&nfsTAwVfchfaY=&VcdnxZWqYdcrg=&uvOIqHYsVZVoc=&pgWJYDZWnimlf=&gZyL5AVUmmolh=&UjjvD8UemYheh=&7BgKMAZjiWokW=&SnF9QsWfmkngp=&KRXrGFYqijahZ=&I_JMoeZmYZZdg=&XClTpBVX_UYpn=&5mLcGbXWZph_p=&JyMGylYUbbkdk=&S9BZQEXVWUcgl=&_7wH2BYsareha=&jLzq5BWhdZhon=&NbT_8aYdfgnbb=&xiXmyBYVcigZ_=&LWOpSSYYVdpUY=&gJTfjcYacmbph=&TdTlaRVV_rcps=&ifTm4kWjXcocY=&prvz6EXhqkiYi=&xzGB_bVeoXsgf=&O_TJieZboe_rm=&xS57vWWpqsWUq=&WluxljWVroWmb=&aKvOWKVonidrs=&R3P7I5ZbYiakp=&9dgeeLZalfZYj=&XsGDRzVWmhZqm=&dw8C7EXhWmUja=&haspNNWZoospp=&hqpQgmZsrmqlY=&pgnRlDZUebdjk=&yYnD2UZbnaVsk=&Jx5oMMXbim_pa=&kWsDV8VYmVhqn=&kWJB2AZlkVVZn=&oO6C2_Zoc_sqc=&x85YkwVjpabUb=&FxWnlwXUVVmca=&WjhslhXVfVbrr=&6DiTBDWZjYdeh=&3YsJ4qUqcVmpf=&tNVvUpZdXVlep=&xXen8yZhVfnWk=&KVT5oWVmZkVmm=&NC8xwkXgoheio=&OrqDHAZdWsXlc=&vW2YHnYgn_UXj=&H6lj6BZblcmcg=&B3iGOTZhniVmn=&A3BpjYYmbjdkl=&zESpanZeqoopY=&4ooSEiXf_Upsd=&wYfwIhYfipjbX=&5VVmb9YjUXhUj=&OdrtVhZs_aWip=&ltNOuFXscpeqh=&bfkKczYV_VerV=&O8NsxgUmhg_fU=&VdtfH2Ydf_nke=&vqt76dXbjdfjn=&ZCT5LOW_XkiZs=&tLsI3VWceknbq=&RAtHH5ZaooVmh=&o6eZ9qVepbfoX=&MGHadyWe_gjWe=&XPcE8BXrscbsY=&IXAdluYecjWUf=&V6TQHTUnWWdsk=&tNcsedZUlb_rg=&5i85ZJYqeolZk=&MmBw3UYZgYfnl=&hBmSPgVZgsnsf=&M5E5QiVakmilZ=&fc7_bXXfV_nki=&DNdBlmVXaqibn=&Sb5gllUbYaqih=&e_5HJ9Vn_crjj=&iyCFsnVoYpndn=&U44oUHW_dodoe=&g5Zf6gWhkqqZe=&7cvJg_Upgadfi=&24NnyYZjcessn=&lhcPjDUrjonVg=&dyM6vAYqWmkqW=&XrD_i4VeperjV=&Eh6VqGXbbbXmr=&AeTD93XpeadXp=&spD8XbWsqcjsl=&tFY7BrYerekXf=&yFKfobYohbjgb=&WNfPpUWWUfqoo=&WFCusiYZemdXn=&tv9Cq3YoYdjYX=&5Ia2skUglsUkf=&kpoXynWhofZZe=&6NlFGPUUUUVqp=&crE4LeWXYndrU=&fsBgD7YmUqnbc=&r5vEN6W_idXlk=&mChSkiUWZcgro=&LvS8QzVlqeWfk=&NWCpCdVhjpomg=&TtFQLvUrcqUkp=&_4bKdQWVnmhoj=&ygxFKgZmeYhUf=&nOU2CVZdrfibb=&7l8iF2XjjqWiW=&OPDJteWckVhfg=&bflnt2ZqoUeaW=&LucJFCWqagYbp=&Qsh3vRUlfaqlp=&JYZUdNZoUqejd=&iM5pmsZpWrecn=&modsnBWlgjrhm=&XNDCGXZngYeWX=&hrDe3jZWdZlor=&ygvdcBYWrmYWl=&t2FYW5Xffanmq=&w5MwkqZqc_s_g=&xOViPdWiXpfgc=&TWGBOjYdnbcVe=&d7Y65JUVmlpjY=&Gc4NCiXWnrZon=&WK28v5ZiqlYVZ=&SJEFqgZbrkWse=&GZzsJuYioqrgX=&ABIy2PYikZnVp=&2RU7oHVnecYse=&y3rwysYlUesil=&hZFSjgZfXljco=&BAY49CXsZdkld=&d4Z9kJVoahrrh=&g2r3_bXUpZYkb=&YRnbYHZoddWUi=&K9O69bYolUffW=&BFJ_Q5ZeeXsoq=&N8xDhBXokroVo=&h7plF8YVfg_i_=&tmDZkVZmnbaoi=&btqglNYXZsWch=&Z5_qG4Z_YosZV=&DCvXtiUbXVcnf=&2vZp9_YefhZao=&cxRT6oYWZccq_=&PQssoMXdhsYmd=&VTqk7xXsqjdgj=&IuhTuFWc_egWe=&rScCXvXmVnone=&H83st4VrZVprd=&zQADyjYiiklkV=&O4OPhmYeVUYne=&NLHRfvXqriif_=&4z7_jAVfqsekW=&iIY9YYUVrkZga=&Vw3_tlXsmqXfl=&mUe6iWVkWkYdU=&KSqlGqXdhoepe=&DED6UEUfZrjie=&Ks3Fc9Wohflmb=&mb_t7hVjcqaZp=&H_fpIOVnhkpWc=&f_aIN3UWdU_rf=&Z2z6n3Wqqqceo=&K2GLjoZqWWcfe=&DI_MHTXmokmif=&Se7EQiUiUkecZ=&TCWwDVZdniosd=&Wt8EAmYqjnUWn=&ssIVQiVUXsZkj=&7keNO7Ujm_VXh=&wdJl8EWYgYdfl=&LASLLVVnjmdgp=&uDX6USUondccU=&KwNVpGVa_koWd=&UZS3z5YWsndZi=&PW4IrKVhjkkXo=&aklBo7YZX_WUh=&Q6zi4VWpXrVhU=&PKAiE2Xq_ldjV=&C7dZ7NVWoZUgY=&MUPTvAZfpX__e=&E6gOJJXjchWUh=&joTtx5UsXabWX=&W8Q2ffXsaneqp=&MQjMx3VjrWYrn=&zIW9iYU_hkqVm=&AoZyRVXidpne_=&gMxVTbVbegin_=&R_k7MKYXingdr=&WcyaZ6YWfaie_=&yNRwDgVinnh_a=&LwGmoVYkUnhaV=&pKiBc3UmldXsi=&s6naEAUsoXVUr=&QnezvJWiVljmk=&pWaRv8UlbibgW=&pnyrHqW_bUVon=&hCKAr2YlUWrbp=&VONArqUaWsjsV=&gXzRSAWoddUnb=&nG_MdFUoooZil=&GaxLFGZaeVYiq=&4Y9rLsUeeanif=&jZjBPFUWfhZbd=&dvx4mxY_ijksb=&xcpgUuYenmahn=&jfcvPNYZYWhrp=&Bk4yucWbWemfh=&EtNHANXbaUjmq=&2nm6uQVrfknkY=&mO6oHiVaUUnbU=&Xx2NbhXmgUrZg=&q8GOeVXrVWinZ=&zHp6cAXWfjsfb=&yUd7ZDUrlbkUp=&v4dCWIVZbcnnn=&sHlqIWVearbrr=&vlHajJXqZYsUc=&iGjSVwYerUrrq=&wTgG62Zrsnmpi=&jbG7DdVrsir_a=&Kfg5dcVhisirg=&xmcM7tXngVapj=&hLqPgSV_Zej_r=&sJDIbYVqr_fUd=&z6Kop9YrbkkWq=&3VPKulZYlqWqm=&SKMzkuWsdeikh=&LDuVh5Ujikojr=&GkfiPMVooejil=&5feersWpVZhcd=&H3iac4Umrqeii=&Oo8wygYagkhhs=&vqxE9RWom_mld=&dKGNvGWibXmUi=&sGMsJ4Ubh_Z_g=&AJdvd7U_ahjds=&LnnuH6WaqpiYj=&ZkvLVvYeofUYh=&jbUZVlUrXcqgk=&eGoSQBUmVbkZd=&qBkQ6LYfmVdYr=&ENoYXaVrlmUqo=&PGSyHyXXiWccV=&yYnkgzZnU_npj=&4hOjMDYmfbqnm=&c4ZdcyYWencgV=&9UJajIWmZYeea=&hl2A3rXppakYc=&2QTWtTX_Xs_hg=&x3a5fHZrnqdbd=&8AxSQhWropXYr=&bacw9nYWrcrlk=&PAJnkhUpchekr=&u63bcuVXYejss=&rc4vGZZjdajkn=&3NNjXhVcqbUfp=&dPLuVvXfgkemi=&LPoPKxWrYnagb=&Vn9VFxYjUjgYY=&Qf3_hrWcdhUVV=&v3Et_VXWcplfc=&rq4auKZssnkpU=&MkurSsVfprnVo=&YTG8OAWhdVZUV=&yZdmwPYYVerpj=&mhfPjQVZriWgq=&n5g3ujWVeraYf=&hLrD8lVWVbq__=&8eK5u4WnYchgp=&ZHdGUwVrjZfcV=&daN3CcXihY_ba=&efYiSZUiViYjj=&pk6J7eWVqmdcq=&y_IIokWXfamnY=&GPUBk3VUqqZXU=&g87b8JZshsfoU=&t_ZkTnZkgnU_r=&AZpLNLYaZnjdc=&zyCHzoUoWgmYi=&6kDmp3Uroranh=&RaySsNXafdgXV=&ANjkqiUijklpY=&cyirXEUlhbbj_=&AxzjKMY_Zaqqp=&ZkYvGrUZkWjic=&4ENtU4YfWlpac=&qbtEwaUYoasaj=&CIammiU_Yadoe=&eASFaGXf_YaUk=&YgWt8GVbimr_q=&Eck4tLXbnjo_o=&SNviV7ZqeXWgc=&ykDdOoZcejles=&E_8LIxXXbYbjV=&H6bnNbVYokams=&KGJ_D6YXkssdU=&rijqLcXqoomsn=&4vsFlxYdbecci=&gYHw4pVVbVYfX=&vqMgl2WqiUZbc=&tK4LSRVs_noej=&BQizuYWjskojd=&b8Bo38Vaqmlda=&RQPzw9Yqss_qo=&KVf7YgVYrUWUh=&m2LbW8YifXah_=&VcAtHoWcgrkr_=&7mnVBOYpWhfnU=&_wVXnvZkXUhkm=&8rwsAvXkjlpfp=&OeorD4VoiWdhn=&foOZMLZphUf_i=&xpXBoTZerhZbj=&USYhZqUonhi_h=&wvgR_7YesaVpp=&cXRnhsVshiUfe=&hdlFrTZrWidg_=&cqXomjYjmWhZi=&lW5H_8VhhWbjZ=&FeRfcnWpirXce=&sbhhydVnXioes=&jKfud8ZqnphVe=&ds9fWiXgoqYjj=&Eo74SaZlUeckY=&6hCIwkWYphVnX=&p4xlxwVbkjibU=&rZcxQ7WrskdmY=&UmUObQYdleqXf=&jhe_uxUerndif=&7gzAFGUoeVnds=&MDUkAYXjkmejX=&NmsnJtZbZrqiV=&Z6W6LBWZYXcbl=&ZrMm5wXnkihXX=&rlfzLMVpYblYY=&Z8wS8wZjsYYjZ=&7o787HXlZne_f=&gyAqG8Xkgkgif=&h_dbW8Vdh_XUr=&WsJOHhYpjafdg=&7XsdWKYUkUokb=&xl6JiiVlYpsmi=&tKAEqfZUfkYpa=&9umsmoYcacVoc=&BsxJNoV_kVWid=&sKCUjFWmdoVmX=&3b47_PUojpiqe=&uQ5N52ZiVgYgZ=&M46_dFUmnrhmm=&tbQgXOVsZZfkW=&PpdjeJZaXiseo=&JJ55HWV_jXnfX=&65_9uAZhaZZUa=&PfeQdrUZfZhrm=&QXIBDtYXVaYje=&SnUbTpZhemsfg=&P4sREUZhknleW=&kXEpmEVnsgVgg=&wpCxOQWdUYkeU=&r48uQcXksdhoV=&7PLe_xYaWZpcc=&EI93bfVrdbfrb=&CYLeJbWhqZpZe=&PU5FOfYnYVVfi=&JtsDqEZnUXUjU=&RRhwwqUneZnrU=&ytHgqaXZrcbUj=&ZpohwEYalqdcc=&cQtNwHUjcmsji=&RfuOt_ZprVhkp=&_8lqfbUnjZekc=&zAwYe4WaYrmZb=&3MeVRDUhVfU_d=&hWm6GCUdsokao=&KfMDLTUhqoagk=&sChVivWYkocoW=&IqNXdlVlVlcYV=&sSzobcVrbZZeo=&w3fWt5VsqirnY=&LrCmX3YkUakXp=&P6aE_gWscre_q=&7yZoawZsggarq=&stFxvuZjqfhYb=&3Ae2PnYhb_kXl=&QDqmWHYoYkepm=&AUy_YBVns_Yck=&KQvxH5Uqqrkjk=&v_aiHrW_jkofU=&vsW3OVWgdbYUd=&AZVf8nUmjdpql=&3axoxdXUopddi=&Y7ZDcxYpmkjnp=&BfI8bJWrkqrsW=&tFW8bHXZjeWib=&UdixXoZYhbVse=&4lIQ4eVcihhap=&PapDPmXqWXgVe=&Fc8KzQYmjj_nd=&a9yysrZYZscbh=&CYujcqVlacjef=&ZOyEvdW_ppgak=&ANOf2vXsn_oXW=&ADBpgfYfYpiUZ=&WAZhIjYiZrcme=&aG2EE5Ygekn_h=&ToPqGbYorfVpU=&FF4ovJYnVeUXp=&RWbpsKYcocbjk=&e3zToVYbneqog=&9nHoomUgbcZmZ=&2FV3VnYspediW=&jvJ6MtVddVUlp=&t6wtPnV_ikfhd=&_sByTVW_r_Xko=&nSJSN4VjpqWco=&SS7tJtWU_aiZr=&RjHDUYZgiUnli=&ZSXmjqZYhgakW=&ydkqWaVbshgds=&j2acyXYbWeb_W=&qzxkJXWXjahma=&W4CDeLZUmhbYl=&mEkD6vYfhepqV=&ISmPYmYUicagW=&jP9RWyXpUW_Zp=&8KApTqVYjkq_k=&FZEDtVXsspjb_=&UtlobUZkmdbcX=&CNOIg2Wfnlpjq=&XnDoIhWqike_p=&ykNckgVbidbdf=&4yiXVAWgmppVr=&6hedHzZVXcrVh=&7TX8a8WkUdjah=&DfUYf_WYXXgma=&vNiuHJZbbsmbn=&9FRNMVYrfoecl=&kYTBtxXkmsrYZ=&fOnQcVYeigdih=&mXa4slUpoXdXi=&9ysqMDZndWarg=&IW8ZKyZrrhhfd=&UhJEqcYsgfoqU=&QJckGUYZdeaXb=&qaskXzUqorVer=&2oiy84YZan_rd=&Th8KoEUZhdmfq=&qppBbLW_kZjgi=&HCyoaoVYiUjsq=&YDNqyyWcmqrpV=&IapfKDWUggpra=&5opjEJYYVnanX=&DWWjwUXcjpabp=&Xj2Dz6Zdajphe=&or2XolYWWsaZs=&M6A5O9Zqfrsqb=&2KM6ZrVeYXZmU=&ALMkEoUfVkiU_=&ncrVwpXYlollp=&aFKDayWnibcXU=&RDxywAYYXfmnf=&cTs4HWWmpqrll=&dXRrgEYaXVmZ_=&ckmYRlXiiWVYj=&Wr_sgKVaZbneW=&g3VWShZVegUin=&2re3a3Wjagskk=&ZkyBTbUVfheUU=&4xeBCCUaZfgmY=&2f8CHVUclXssa=&avocEGUhYmgrW=&GmIWCJZa_UXke=&5qZfdwZlmVahW=&YmQjfUYUVesjX=&KTqniLUeYrjsU=&lzZ9evWYqeajW=&m2THYJXZnXfak=&UMHc67VrcoZso=&rktBe6WkscikX=&KO4S2iWoZkUdl=&dltWcFZoVXnrc=&w3TlRwXhrnnsd=&5bi7xpUXkksZW=&3vavr4XXiqbke=&ykVKkgWiUafpe=&wAzZT5YsgUiUY=&OEUbvgUaagXW_=&7AtdCYYWe_Zgo=&k3RJuCVmfjbab=&wW8TxBVkajpYg=&dR8L7qWUdkend=&p6l5YGUhplkgb=&_XgRAtXsiogfq=&gpimrBXVkbVaW=&znO4gKVW_mZfr=&8KOYhyVVUbher=&taHJs3U_cXsZo=&dUKq8oZnZsWom=&EIa4NbVpiXWri=&p3bIunYammfba=&HoIQsdWamp_ck=&2EnwSlXjhgon_=&ax5TZkViiYedc=&tzPi2IXpansWY=&22fyYOVmnnWor=&exK7CGWVh_Zpi=&isBl9QVZYrfUr=&AVxWoFUsWaZWj=&XezPbbUUkUdjm=&q4fnaBXiYocis=&Niu7vUXZhXWYj=&3e4QBTWZes_hU=&VfxRS7Zr_rqWY=&xf3rBRUZeeXbf=&5RdaTPZignoh_=&5LJW4cYVoeXbj=&57x85SZohfnWV=&cpkMjhYfjfaWf=&L7oBuOYsfbseZ=&ct8tpxVcemZXb=&bwUiR5Vhgfhsb=&G96Ma9XoZnUrc=&vl5eFTYVWVXdV=&nhp3aDXZqXoWk=&vVhPiwVqmVsef=&xmRE9EVWmXr_g=&uSdIhtZqcj_ks=&7BbpEnUklkYUm=&KQdxDEW_qnqdm=&Jy9FRsUmchcrc=&z79RPtXeXjbhY=&7Imf4BXmre_YU=&7cGGU9ZrXampn=&LeIfwYUpUnjVr=&XPrAU4XoiWhkh=&46xRrQYWiemWY=&_5AuOmVdiqmVa=&gncOFwXmors_b=&2tjeJRWsgdjYg=&PPvHEiUUmaWcp=&ACKPsXYodckcs=&RizqAxZieWdkg=&3GQGguZoYmedZ=&El7GI9Un_qbbl=&LqWA6oXabgsb_=&rRRBwIYhjkkXY=&2MXPv6Zjarhio=&ZQdDy2ZeoWdle=&dfA8XhUsnZWcY=&JSAF5vVXhfcoU=&dh9cq7Unblder=&Dua9wvVmXrref=&3apyPKZWYYsVl=&bjd_46Wd_dgXb=&CEJ3AeUWihpe_=&uwFrjtVdWUrs_=&OZTDLEXm_dikj=&DSCv3vYpolffs=&4YeUXAWfjclqe=&txUUYuWpiidap=&WJEpX_ZWUekWX=&D25qXlWhs_Wsq=&DOdIPQUckkl_l=&I7XQvWZYearjU=&ApC2nWVXpsdeg=&IrHLrqZdWZWlh=&K5CHYpXcVr_qY=&JB7a_3XZ_Wggj=&y7hvYBZWVZbkY=&TQpRTfXdnqkbq=&kliM9sX_el_pX=&m_ZmVAY_oiegl=&jkIZYGUoplqZY=&nWvecMZgjqsli=&sL64h9Ysjhgob=&i_yPB8Wbhikec=&FbhtbZZrZjUcp=&FOeAQaVV_aiqY=&2D4vZHZUanVdr=&MTlMnGXl_qlXm=&KhXgjCXordUgZ=&B99OGHXkjqmdY=&E7Fr4rUZkjZ__=&tAgTsjZeZgabd=&IKNj84WfsZYXi=&ZDQOFEYbkVqUY=&7xBTMzVkdham_=&2s4tekYhnjqgb=&GZu3ldUkmjWnm=&bUh5vOWf_esj_=&4d972EXpijcn_=&j39YLPYnrksoq=&lz8yJlYWkU_qe=&3AlX6SXWjflrr=&zGvesMZlmjcso=&tsddutY_paikq=&WpbZABZasWsnr=&anaEpZWegrV_W=&OTGPkZWpes_gf=&OUWajtU_ZUbbY=&bykPhEZ_fapWZ=&wxcWcAZYWcqah=&fMUZY_Ubbfjqd=&YqznKBVphmYdg=&DvNJanUlWhbfa=&z9rxuTXqcUfrU=&CvjUYJWhlrWir=&qcrvRoZga_kYf=&ekAXmhWVlflZY=&HQbpzBYrXabkd=&WwbJvOUsqcorn=&_elLptUYeVZfe=&WU7pDmXjZijn_=&ssCeqzYgmgojh=&H7lkuiYUYeagj=&GvNnhRVeVeeUa=&44wsN_UmlmjdZ=&FVQ4XXXXWhrfr=&haVe2AVdZaXVd=&syGrdvUqnjkYc=&w2s49lZdVjcUY=&6nB7VJWfVbUjk=&lcYyXuWn_gepX=&qMvmOzVjq_Ulq=&SR_fg3UgUrrqZ=&qT3SKyXXeUZqr=&V9vyAaYajq_Xh=&Uf76NbUhlcYp_=&x2Xt8mYpWlZri=&D3CD64XefYhss=&BVOo4dVUgpfrr=&cWVKbuZjdagea=&Dj4KVXYlVqmnh=&qDnxWmWVZnlfZ=&qtW72xVjXdghd=&xPBHmlWpi_rVj=&JAIFmGXifpU_m=&vRxNUrXfVleqY=&muycQJYnXhg_b=&asZTz9XeflZmk=&x8FBEQYWYXcYU=&gTeRA5VVlpmnm=&LTHhl5VicmXXh=&evLUEnVakfakm=&SZI_bHXebdnsq=&O6aLY2YXcrsdd=&OqG6k2XkVfcZl=&ssf9SyVlcWdqj=&6HrKfVWfgX_Vl=&saCibjYYaZqdb=&ZUlAN2Zdqgqkh=&uvyjZJWskrmrd=&h4ACqlVo_rsnj=&rFCUuDUcppdkd=&jiPca7WXohZmo=&H7uP4kZlnpWrj=&mjxwqXWrVjfhn=&jGF8LnZgYqWib=&IHZYbMVqckbmq=&Ji3eKcUcnY_if=&E4uvbqXfrXlqr=&l5kjTcWWdqnYi=&ZUD5JpYqUVXcp=&I_neCQYgsbcYh=&QZKNXoWskcYYq=&wZ9rsSZXZqioq=&h7VqWcY_Uidhn=&StE9VqYX_sqYe=&zN72xjXUr_rre=&EbiUqaXVkcZ_n=&j53Rc4UkcmjZe=&U3376zUrjsVXh=&r9hz8CVql_Zoa=&3zAFX_WibiW_n=&d5SlZUUirhkqo=&PWSqVIZhsahio=&epjOW8VYaVoaU=&PtLUqLVXdsecq=&ZkaJqCUfmXpoa=&CRAhMZXpVWcqd=&9wb2LJVspofc_=&3mZobJYooXbcq=&KiyGp5VejnrVb=&d6pkb8Vgjmqgg=&wpQjngYX_Yckf=&Lh86nVVUikVel=&A_mHRlYqjWXe_=&vkhxqUXjXcaVU=&6MG98RYUienah=&pWpjmaZ_pZcd_=&xrxObdUdpmsag=&t48tP_ZYrpdYW=&QnvmpaVUUlUkk=&l_ucxcUpZnkak=&L2bvbuXan_scq=&nPz7GOVi_osiZ=&LCk8KZVrUgV_d=&_tfWvnWfmp_do=&rAQuIhWYseWen=&Hgay4_ZcWbZaW=&qegzhGZhqchaY=&E8VYb3W_Xsmlc=&3Q3_TDViYhdeW=&LbdV8qWnfXehg=&pCfADNZ_bdZba=&labNp8VaqpVsj=&wLHSJFVkVpiea=&AskZXDZgrrcWh=&gw4sWqUbVnlUq=&cLb4kiZcoagnU=&rkNw9vWqrsVa_=&iRKq6gZUhjZhe=&P35YbKYVfsVYW=&ZM3XBhXU_WXYn=&HVVyX7WUebpYn=&Z5xJbWYecZ_oo=&DWGusUYWfs_en=&2H8BihWghsXqm=&s6LMzDZfnrbmc=&MXn5eFUVo_Ybg=&GayFWwYegeZfW=&oWrjcVZcbeUae=&EpHQtEYWmphYq=&CXVo4dZfZWinf=&p4pTI7ZVgdqUm=&wOh5DfXkakYhm=&6nGTLEXjrlafi=&m6TiAfWnsnrli=&hzcQVuZccpcWc=&Pm4_NvUakrlfW=&plaSGQXYXccoj=&aFkxZsYWXrfh_=&jJweBVUlYgVYd=&5DLry_XqnUqnr=&TSAeTbWaWVjeo=&qujwUlXoUgd_f=&oh7_QnZaenUbU=&tNn4njUehUfjW=&EJyAdHXpoUfps=&tQJ6ewYmYsege=&oiZFE_XUcmXnW=&SVpuIwWnYf_Uj=&75_zEAYolernZ=&tJ9V7RUsm_WXY=&8gAW7XZlsZdj_=&p2t9dSWhasqjl=&9J3OrAU_kVpmh=&rfX3D4VYsYnsg=&J6wLhgWdnoZes=&ArxKoBWWronll=&olBcm4UdVeZor=&5jVOjuUVqWmmZ=&qdSWqUVhUoXZc=&ypbVDbWgegZZU=&7LckmgXcZpsed=&CWTvS_XfaUqer=&aJ8AZhVgdcofa=&gsYRUOUhpXWYV=&kTJWPjVXeg_cr=&IkJ9jSUfkkarV=&3kXZmgZcbqYan=&LiKgmmWsmjkef=&9T7Ae6Xodljch=&JaD2AvUsUjViZ=&yoOGoCWqqqiZg=&yN435EZiUpboU=&bACKqYWaYsjgj=&5XO73KWVgfkfV=&uRV6t7Vg__cqY=&vVh4UvZ_sq_Yd=&8DA4GjU_q_hYe=&OcO2zIVgjemml=&vqw_fnYenXecY=&9tkmUAVsWpmZf=&EOkjP8XhcYdVc=&YQYSJIZWahYZp=&OANAwBZmpXhYV=&yxWI2MZVpcjjU=&6VxVtRXWkdkVY=&gGD8NOWgUaqYs=&bYi3m7X_Uod_a=&buP3wPWZbWXjs=&XsKioWYnkmfiU=&tYaoKjVdksWgr=&oSM49VXUfnlni=&YXoRmMUdedlpn=&YcSQTHWeWliVf=&OyR29CUUpaVgp=&cYzY6bUVnXjlh=&b3Cwv9Yqhelbm=&P9FOYBZjcfbfl=&CGz4plUXir_fg=&reyhP9WeaccWi=&MzDyBdXVWeZcs=&KRHLQ3Wbbrile=&blqyWUZsXheUc=&cv8rejUsfcWeU=&qTz2pUYqigqpo=&XAtpM9YWUkdfa=&ORIUHYVqpmiZc=&MDktIjYXbdnes=&chs4ZrWpfmaWn=&Ui3oNzZshXrjW=&Q3ug5WWdaYqhl=&mzBYjCXfbmXsk=&c_fxI5UilYUkk=&9gkzMmUnlrofm=&VTfdsZVgUjrdU=&BTQPcQUokWWbj=&SsDjErZebUraZ=&PDGqW9XVe_bjZ=&TjMv4fWcjailq=&UA59JZUeWYbYc=&E5SPOzUcjYqUs=&iL8eciYWmkhmq=&p6ip4TXejWYZb=&yJYYcqYpcs_rs=&KrdcvQXaoopaU=&BsZzmFWqndqfi=&89VXoLYWdeWik=&gA2iiCXZdXZkl=&kealVGUYejoak=&pWJ4tRXk_eYoX=&6zfZQoXblUnsh=&4qSZs8We_eVgh=&h26CcbYosYZgY=&GrTIyvXogqm_j=&TUNqOyYljpsbp=&ruwY7OU_grXbV=&BWnG3rZpngihU=&rIDSyEWsVdppV=&l69BKQUnWWoUr=&xVjTWlWYedqZa=&q5aF4gYXiYsfX=&zhdJriXYinVYn=&CZ_scCUsopdkk=&jTydDaYrbqrce=&_wbJcIUqkfmis=&PrwYneZXekhUf=&vDgmLQZYeljZi=&pusiCJU_keWir=&eYHE42Ygefskp=&G_cyWgWsni_o_=&lzrxfTWoWmfVZ=&hrgMDnUgqmdmk=&3Ymad_VY_laUs=&N5Mh2PZdpjqkX=&tgXlRVZWbl_lY=&Yv4fAGVjfdYYa=&Oh7STRUUqWonr=&wk9RY3ZbbdYXj=&sIlBRMYlYebpn=&REBHOPZZagrdl=&malziOV_qgmrf=&uoJzZLUalYfZc=&fGgChKUodUksm=&PcsmFQUYkefoY=&UEAMydXXg_nZe=&YjMgL_UeUqXdp=&2RA5AnZdshaha=&sAwdwIWlrqWei=&p_kRUqUabXpca=&GjdUtPWpckmca=&bhYexSUceZjss=&yjgYL2Xnfqhfb=&wtbNPcWjkjelo=&OBnqSbWsnUeli=&piwqQbXUkUdbc=&dYvo5sUcYmbjp=&zX2o8DWcjejmk=&MDgSGoXo_a_ZY=&87WABoZccmege=&Jat8s9VjjdXeV=&BXB2d4Wpjc_or=&8GdAuqXfnYn_l=&RlWTOYWnVciXn=&cjFIbyUrdgUqW=&artSYkWUcW_gV=&SopwfLWmVqbcU=&Se5iZXXVbsmff=&Ji39omZjinYjc=&yJb5V9VoYeYVc=&Xzq5OWYWXWfrq=&oO7G7qWrjVg_c=&LkP9MIX_WkjgV=&6UFusBVYoVapp=&Dqnhk3ZpZnhjU=&4PAn4zWqifiVm=&zQghqzXYig_oj=&vHFx43XcUZdaj=&4xoYnWVbhifZr=&sOrY6xZckjWgW=&MHV7YXUqbWiqn=&gHkQvGZVfiWic=&iTclaBY_qgoea=&BouZImWna_YkW=&Uil9jTXrhadqe=&hJrCHKVkmsdpW=&GUoQSpXlZeqeZ=&xchMNQZYijlqr=&H559c_ZZlceUn=&4pUAgfWfaj_lf=&3Am6U4Zbodlkl=&8UR6G6YZsbqbk=&gqZgl3WrqjZfX=&wC2pdMYXZcZpk=&XvqHn_XVcXdVe=&9hT66uW__kVpX=&sq6iDlWaqpWmr=&Hx3R2BWcmjrqa=&eEleHsUfkbYfs=&ajvC2DZjZqhef=&Su9u5FZ_kYWns=&mqZCe6VUoaojd=&Nb5pPyUcqaoYZ=&mhdOzPWbblcqY=&3HS4jrXUkcaVb=&mhFMzlWajsYqY=&zXxos2YdjqfUo=&okmkW2ZVVocUV=&OpJeZ4VYehqgl=&s2E2mdXYpdgoZ=&kZiLlRZUmjYrc=&LT5oRoZshXVnZ=&c3ziKyVphWrdb=&m9lzMfVlncpoW=&sn6ILWYqVdfre=&93WP35ZrXkYmn=&H8FZ8tYmVUlij=&LAQKVvXcnpeXi=&DlSM7SYikmhkm=&rnmGcRWlr_Ygo=&fIAqZrWqnkqZe=&F2AjRAVdVepWb=&uD9ORAVqYdgcp=&SfAzgzZZolnW_=&hKAev9ZVomneU=&XkjkVVUpl_qdo=&qhRFkRXbbYdXa=&miPeuWZiWneao=&dgZVWMWhbb_cd=&3GTHcUXqe_Zer=&AM7EBIVbiYmWa=&3bgrWvWW_jVW_=&IDjdQFVrWa_bm=&9zJBjPZnfWZae=&zrwuTLVsdeone=&iiqjBsUdmUWUY=&LQTE_lZYgdpen=&gpDrL7YXmsclj=&Mjvxj4Vankkdd=&on6esZVVchZmg=&OB6JlAVebZrcn=&UmjSpjXYZqgY_=&d3BCkxUmclh_o=&tyFjcyYVjkgjZ=&CE2_ngZa_s_fd=&DHIBlRZZb_dqg=&k3YpZ_VeVWbXd=&VhN4QuVWgbUro=&vdeWDnZbhlfZd=&REnZvfXnWXgVo=&aLyDfyXiWrqlj=&mvh4NKUYpn__n=&V6XQXqXprpbUU=&JDY2QLXWWjkkZ=&2ectZRWjodbnj=&VJ7Bz8UkdVcrn=&GqQvvMYoolUdb=&doSAuAYaWjZff=&mymRejWcVlraa=&IQvmepXrbWrpq=&xCXeKLUrc_joq=&y3ibvtWnndYji=&5dyC5fU_eYhmg=&qNkrmOYraqaoW=&9hIbgMXgmXnrf=&ru2a2eWgemdl_=&IMpmYZVcckegs=&vLjtkCZbmflcj=&lJmYLnUYYbXsn=&sBT9VWVlfcoYl=&THeqlCZaZaWhp=&HLkACJVqXWseg=&vQLAivWjUihnd=&gKJ62QVYfkhbk=&c49CD8YYekldg=&Hr6LzDUmZ_XZc=&qsbnwhYrq_kmb=&TYeo66ZY_nWaa=&aHNkXUVoifmsW=&c5Qw3LYkiWjqr=&hN5jxpX_XmXqb=&s4vdq_UbscZYs=&mrKMpbZdobelW=&UgMzvdWXpUoom=&8W5j2IWbmWqbk=&xc3HQbYrneaYs=&5k3rtLXmpiiVb=&fVjhgXYkjdseW=&Agm9dWUqXVqjr=&7HqjtbXUZabqe=&RA7kdBXbVpbXU=&eW2NDoUrlUbja=&inzybCVjgniiZ=&hnSwJnVfnXXoY=&eEIHHBYsikZYn=&MuvVlCZhYoUoW=&5J2Nu_WVckrak=&rcaaEBYfUlegn=&A43x3kWqUYclq=&734wySWdcblVi=&AIX7LvWfoZeWW=&f_wyQpYdWsdbY=&3rC9K4UVbpZhU=&bhWS6IXcqlYc_=&V8ysSqUUienXZ=&76TiPSYcUZkZo=&W5rLVdYmYVred=&bXEEo5Uhlidnp=&PiBQIvVejWfej=&hTaKdfZdoZqYo=&wjcX4EZbkl_da=&ud_8mcYWkdckW=&hGbqEoYm_egaf=&cx5OaiYpbphcq=&tu7sr5Ynrlgfh=&ZAw4MKZkadmrU=&WzyMGJUgpfc_X=&_scIjYZdirqkp=&Ajb8u3ZokcrUg=&zZxYMWYYpdlUb=&UlYatMXZelmiW=&TaHvzSYYjUWmo=&JLUy3OUgqihmk=&W66rKaZkZobVe=&rRVSQnVrgVYbh=&jkHIexZfddVqV=&oWmUJIYUil_Yb=&7fPBmAWfYVidV=&5cEOE8Vaohpmf=&MKvnZGVfdW_qr=&3auRGGZlgpgng=&DZOAiMXiqfenU=&3LweuZZjcYhhl=&z6DZm3Vcnfpah=&ttIxhaXeUnmoj=&ZWFpqFYfjgoqb=&Gd94W4WXXchUh=&c7R2kCVqghaqr=&m8XHQJXmmkrds=&JHlaQSXkrgsfj=&r9Ua9nV_hZidX=&ihnsYfVZqbXfn=&Ivh5vcXcVpori=&lM2uLNWdnjcqW=&USAYzbYojlYZq=&8piaZCVlpkXWc=&Z46YGYYZmkhZZ=&zP7_laZrWoeog=&I_CsWgUbp_jac=&vXuJ9lXjsoVWs=&vu2FmwUcroYfo=&ZFimwoYXcfqfY=&sNGnjaVjZkVdf=&VD_t7YXkVnV_s=&hiPsIiXXoWbsW=&wiVeh4UbnVsdm=&jwvyMNZjXdrbW=&wAktz5YeaWhkm=&J3VEr_Yedchbd=&7XLp6dYskjjhd=&8lM6gAUarYreW=&oK_vJaZ_oWaqa=&mvAipNVXkiWpb=&lPS9bWUccVXVX=&HyudmLX_e_ipa=&u7QMM5WasnsUg=&ZcPYjDWnZehZZ=&DtXaRwW_ooqp_=&PsJMkAYnahjbj=&Xnca9RUhYdijf=&QwRhLFWZmZpbr=&7SCAnrUkjrUrs=&_ZEd7kXpsdifn=&yC69NlVcggVmi=&L5dxRfY_fVZgn=&3EfEDqYYcZbcp=&6ujUREXkehlfg=&XtKKvJXrcgqkb=&Q8Y62UYhjrUbe=&NUqQ3NWUqVZaf=&z8s66sZfUrcWU=&pjrkEDVjksead=&J6xvgoZlmkigZ=&7EOcviUnVrYZe=&KTwNNpUpdpfnk=&S5ENlsUkdY_Xp=&_R2AHNWUjcghZ=&HKVvUzZhWjfsp=&KrriaGZXkYmYV=&y9BePNXZUfjdh=&aBYhfTVgWYkVV=&3Zt_7cW__lVsj=&NvptfRWZcldpj=&GjLGM_WU_aldb=&J2CFIbWolaaeo=&mZM9nZUpsUU_f=&Kd_nnjYsUjmff=&3KSE_8ZpmlZ_W=&tEKGprZnaafof=&YyA6czUfcmneX=&NqhkCpYengrkk=&qZw_ZzVm_qfsa=&Zoeu6vZa_kpVX=&XXfyjFXVnohXX=&YkGWgfVkcaprp=&wV43pNYjUcdUf=&qS4EhBYkUUsci=&x8CR2iWndZlfg=&PFSZdIWddbmoi=&Qz7qyUVgZXZkY=&z7HDzRYVXeopV=&Rm5mryVUrqUgd=&aFOvWiYUcnepj=&NiOltIZokjrV_=&q4bgf2VkfiWp_=&bUTbbWWjgfdca=&eilLLvVkl_pnn=&GuP8O2UoWjbhf=&HXBLXYUiVVnWr=&GYGqdJYheZXqY=&Sba9J4XqX_b_h=&WMn6miVYb_iXc=&bNNIbfYsVXbml=&GgaJ7NU__rZol=&CwEgCnYmnamZo=&MaGqrMXpWbfYi=&nOyDT9YgUoagY=&XaA23TXprc_ji=&k_X89SYmpcjlq=&dRPy8DUrilYhl=&IgWGzZZoiXomj=&GgsCCoYeoeYYX=&2JQ5ZqVnisban=&H2fTHoZVcrkUn=&wiQ_5jVjiqqpj=&9J4jIFWY_dWZh=&fmvvTZUjWUepe=&74wjhDYYacdei=&msGwaiZnhdoWp=&YcrRHuZqrchdU=&WKwSAhV_jZbpX=&WFjjVxVosZYqc=&xycznBYcebghn=&KJSDyRVYVepkp=&DnPGDvXXehqXW=&2_CIwVYijcs_a=&OE7FxZVmUppad=&u8Pep3X_eomWp=&zZ9hQFXk_ZXeY=&m26vAzXWZceid=&YWXXtPWdWZccd=&YfZsqXXUrmrr_=&Op9PCAZoalgcl=&VnzfBVUVVcsZg=&I7WLJcUYeshss=&lVKqAjWgXZkic=&ikMC4CXmjgnfk=&GnaSEXUdhoYmp=&FJI9meWYmYmip=&WJdGrbYZlaoqX=&bnjcqUZkVaqZh=&mgLpPrWfekZrg=&ZW6fvQWXUeWc_=&zuoA2jUemYc_W=&ghsp_BUrfrioj=&g2bbn_Wrmcn_X=&OGwQXqXnWkahV=&YqviMHY__nccU=&kGQZ2sVsdbhfY=&JGsMEYVgmldiZ=&VCNL3oVZfoUrk=&tNSizcUhcaaad=&wl6aheWiXbcaq=&QDlS9HUcZWjei=&sqbM7KWiWsmqi=&uXw8_wZsrUVlh=&8GlR5kVlllUgm=&qo3BGlXXpk_qY=&QeylmGYkZpsYi=&wvB3OEXVVbaXa=&o5qXg7Unlrl_i=&4z_sB3Xsiompi=&Y8woLEUckUsbq=&KvsMiUXjXpWpn=&wezYi3Wilkaqr=&m7rAsZZl_fqWY=&N76WBAWalegXW=&UwqXkDXsVjZpa=&kttDihVcfYVlh=&aP4BEsVWXqjla=&GeCuSFWmZmUgX=&QjVpVnYYppdno=&3kCktIVZWZsad=&gKX5t7VnWipld=&RbIQFtZeamojr=&h7CJceVqkVfcU=&fOsWqYYkmWjmn=&FaC5HZYhUpVlY=&tRDMnkZgdWocr=&K3TemyYkj_jhd=&55aTHKUnik_Zf=&Z2E4s_WoeXoXa=&juGnuzZVod_kn=&Fm44EBXhXshkl=&dltpM8XlUVkcV=&2WDmxTWbbgdaq=&XLSW5zUadZWkm=&YcH3iAVWejXj_=&HD5YKFUhasecX=&phd8yHW_YbXes=&7oaYQaXZVsUVZ=&p_bMXtUiVqWfn=&25Ec4zWZbXkUd=&N7xKvGYpjomrh=&VHK8U4ZiqVXdX=&XRyXBxZcckqaj=&aaMHNGUapZYYd=&eixZzQVpks__Y=&zhRlfqVnrZjps=&ybq7b_XZggscX=&zMjbgzWhenmej=&ORFV2iWXpX_ao=&TGgDjYUlUbWfl=&enthCjYbknqha=&dvvFx8W_egqla=&TbiJFGWrXgd_o=&XKjDMwZkhp_do=&eoVwurXrkm_lk=&Y2Sl2fXhViajl=&_xSqBsXgUXXlh=&QWRivFZdYknbW=&6CcTS3YrdoslU=&PmGdoGZq_cVeV=&Z6IqdjZgmWqnX=&j8ZlSbZiWsrkm=&oDdxgZWhgXljV=&8ojWyPUhXgkbn=&_2dnC_Vk_UkYl=&k2SWCkZeZXbbV=&HWBsPPVYUadaf=&GsiudKUohrosa=&ZLUxTTUYmcZfU=&zSJNzOWbhbdVc=&bQHDrbWjXXjqo=&MaYllgYsXjrpf=&BoKmlnZncmpkd=&YFXZVAWmjlphd=&A5tSc7VmpXrWe=&fBPdKKUVc_jnk=&BraQN8Vfdrh_Y=&InwkhgZkprYjV=&ELnrH8UcYhVea=&XcMdbEYcVeYpo=&oTGShZXZijrVd=&di7pHgUmqc_np=&JAlTSYXo_eYad=&9cC37KYWrjpYg=&NOyqE7Ven_kic=&9_FAlLXjWhZqU=&PZwAK4YVYYmfm=&TaDSdIVo_sWrc=&kNkGYYUnhnhrb=&M2AU2wWYobXj_=&56cMuYYbXkVfU=&mrZXVfVjsjkan=&gy76MUXXjnZda=&O4zqpEYsmYdiV=&LbxIrDYrknsrn=&BmkGGLUimaZUi=&6HmSDuYbgckmj=&8mWfcOZZnhaps=&UBBy7PWbrpjrh=&K67vGoWpmaopZ=&FH5QRoXr_ZqZs=&kpxvk3Xesa_pq=&Htxh4oUb_aXfn=&kXAksEYoaafsf=&WsiyxTZplfXnh=&VPhYNKVbcen_a=&agLJqyUWnWYia=&JPmWyCXrpVshi=&6RvkGWYbbajZs=&Vhx_5yVkgWboi=&4hWpnYYkkUlWY=&HX69gLYUjefkn=&EtWHOxVfeeWmi=&8yNtKOW_sjWer=&KeRJyjWgrcYdi=&nMvmEpYngphhY=&gqQWLCZgbod_V=&YIDNjHZfXWfri=&cNYkjeYrnkafm=&2aeGzvVe__iUb=&bJU_2_Xdbkpca=&sM5bizXeqUepn=&D7SnXzZccZVXl=&CDRomUZfadnop=&PoVYXJUZjlZhc=&fVtAYOZdimWhl=&dIDzdKZibofWi=&OtxLZrZYVffcW=&on2b6uXlocUql=&nl2U3MZekXcis=&F5KQRGXs__cnj=&hk4vF_Xpd_fej=&gFEIkLZkZhZbe=&TO6tuzYXUkdcl=&9YpV59ZUkVanW=&PVOFBKVgXViek=&TE84csVfZsmZm=&IqeKp_XcVZigd=&_g79glVoleapj=&mAlEUMZojhbo_=&72tgTeXcbsdpa=&a6bw_HZYcqc_V=&8Mno8gVYXZqeX=&Tk9MxfYYXigb_=&OnmBKqV_XeWWj=&L4Bb6YZlWmicg=&upp5CdVnnXnVe=&c7bxXgX_fn_VY=&LfJkpeYl__XZ_=&UGmd_3YmUgYhl=&vlcOckYfgrjZl=&H2IXjKYpafecn=&2WFrsgXiZgWfl=&89S3QAXfWikll=&xOAYvIYkfYfni=&ObpSsHZdjpcZl=&YWhswYZXWfeWd=&ufUnQZYfVlmjm=&pGqReBZaqloik=&yuCG_GZW_cmcY=&oE_vYLZarrUVb=&mnSRWvZmnXoho=&QJPpESUepdqpd=&UlKUyTWdXpaqk=&DGV7krXVaskpZ=&3STsBRXhUs_jb=&Tx7i2KVroVXZn=&mJI4WuZcdalmg=&zbk9HZVqXgfag=&AGoSatZendWfg=&XT4OfEXWWpXo_=&acu4WHVXZZUYr=&PaPlbKXUVoqdY=&jklL3aXXWXeUZ=&oipOfMWWhehWf=&IOaLAzVmpYkib=&oqTraTUhohc_U=&uedlFvZhfeYka=&vPBLzKWboXkme=&TmUu4BVgfkbj_=&lLgvcCYamUZji=&4bDaohYYedUiq=&XAn8TXZdYbajm=&73FRoyXdsdago=&L3shetXr_pfbl=&Eqr_BpWgjah__=&BUPw3UX_ilshU=&XUgeOKYVYpr_r=&89khYUWZioalh=&GEgdWCXdYoqYk=&gCdTByZrfkUpU=&V3sF6oZlrkqqn=&hSob2gXVjpomo=&MwrfGxUa_caaY=&_38dhOWe_XY_n=&3cbfSdVnmhsba=&gWPWhxXobcrkr=&GI4X6SVhXrXiZ=&rWwVFpXieldYU=&3ZJ2w5WZeckVs=&x4nEoEVnjeape=&VlheZRVVUkfrg=&4Cg_rfWUZgVgq=&rxZvStYffklfi=&hcuBT3WqnackV=&3PwWP5YYmmVlr=&NHneYPXYdjolf=&VJ_tcrYhndkjV=&mzQ5hNZXrkfac=&5Qsh_sVWedsmY=&AI_lwsZmorhZs=&Fj6aLwUnqgpYl=&u34dvfYaemVas=&PQABKQXndkZpU=&8uis22Z_iasfq=&idKUBQZlphbYo=&6hf5S4Vi_jV_c=&vFg8_SXjafVcs=&nNiBZIVWeqkos=&GzHzctVgkgcmg=&7GXbNdUX_oieY=&mjDwSMX_bqYef=&hXHaUrVofhXWZ=&ZVNQ2dZpi_eoa=&N5LBsKVllacne=&tf_um6XkXqVjk=&657TewYqfmYcq=&TPUIFxYXlnaso=&2VKUw4YdZUonj=&bj5IEcXfoY_cp=&TvxxhOWZ_UcZs=&7uRVknXeUqYap=&FhA9e3Zanqkpq=&23pK6nUergi_i=&rkWNPbVagcrrc=&vl3GlEXaaZWrZ=&x69hn9UrUUVha=&mBwb33VjoXkjV=&ohoIFAUngrrnh=&B6GYbsUbepZgV=&DHebH2UadigXg=&3LfJsaUjqnXlk=&G29UBKV_blnZi=&TFPe3PWmeesab=&5zKIgSZlaUd_j=&7rW5IAVjhbWVX=&B8n7S8WVUjjck=&W3dzGhVkpj_ro=&qTRgpxWblYWsn=&j33QaEWViXdra=&PrqSGsZjnaYbV=&s4hX4aUsjYeaa=&IFJCWhUnganci=&rkKO65XWYdnVh=&fKmd3OZfb_mao=&wKZUu_YhhhiYr=&NcZIapWlkYsjg=&39vz2qXjZiVYg=&rXF9VOUXcYlrk=&NTpIUhWVbnhWf=&Qref_2Wljlnme=&eeagD2VhkUiop=&gRTIaZVUVbnaq=&YqPXM2Zeriklb=&jn72_LZqhncll=&YtPxzhWhnoZVY=&qdOrIFZf_caie=&pD3VjVWYZrVpq=&jtKPb9XicmiWi=&XkI649VsqYbqs=&gFPQgqWZnmZjV=&T3nmUSZgclmVU=&hnnYGsYhjWjmV=&UjEvnVZcsggfd=&Ze5bf5ZUseonm=&SHlX5VYk_VXfs=&GLtCNjYUVYbgn=&WFG6q2Zchgnpc=&VT2HL6W_mopVh=&JWMn_fZc_gjYo=&fJnDM4Ysk_jXW=&OoKm6VZ_lioWf=&ZoekQVUUmlhiZ=&PABTYpXsmoogi=&EIbyMRUZjmiib=&U7b5_qWjdVlUo=&8t4Af4XggXgYc=&Z5BjA5XceUUcZ=&uPYoCGZdokmem=&RKFk3rWnh_eii=&x83NnFZglWfnm=&fLUdKHUWlqWkg=&TdKLUOUlUdgae=&G8Cj2hXfsZjqd=&vcMdGmVnaeoWh=&2XIAJcUdsoqlW=&BdZjaZZgnZaqn=&p2Q6zoXZmVrhW=&7WhGtCVoaY_e_=&Vm_RVXWWggYiV=&YSLd4BYaeiX_m=&zmi3hZWUnbWcg=&2PBJg4Z_qWker=&z_kDqNUehqVrj=&MaquWkUWsVlYX=&6BHxLZXVrZrWo=&4xyJVTYapeYdU=&QkFho3ZrhikZb=&zRI7c7Zbcncnr=&J5NGdbWcmfbsr=&xl7lZlXpmpVhb=&sPlxRAUegXpWZ=&GPlqMPWpVmoiU=&qzlAsyVkoXsoX=&BzFrjMWjlgcgs=&huSKdnZVeaXdm=&gts9BEY_nVXdj=&PoZHTcZ_qZini=&FpGmTcUibqsfo=&Isbi7iXdosinr=&MKjuySXoqVZji=&Gq8GaqYgeYmUm=&8UPa6NUdhpZro=&muqY6sUqdafpj=&siDwXpUYjoboq=&fvTKspXoaocii=&SA439ZUgeXsWq=&Alz7NMZkhgUok=&3K3W22ZfjUd_h=&LeY9gNWhoiZal=&GqabuDYqacnXX=&OOxhDDYZYmjcX=&Q62GePYjefUZV=&qmRfgDUXXsiYU=&KYGyaCZjXecoe=&2F5CrmZfVeokn=&YN6R4gUWlsjUr=&AIbOiAWejjorX=&HFxxxsUreaqkf=&p4PrtDYX_Xiji=&7yJMTJXldnogk=&FrjKPKVVqdYYU=&PllxCFWgeUcpr=&niCWtVUjXnir_=&sdWXXEZhZoVag=&U3xTzfUgoVZVU=&4DtFCOVYUkelh=&4ITjvEYZ_jZrX=&uv_eAXVdc_qWh=&TvdtTKZ_jnUsj=&aWCwlkVmcrjcb=&DCiQvrWdicjic=&O3qNG5YeUdffd=&UHA3TjVknUbjY=&PpuQJiZeZikdh=&rMOYwsYZah_rV=&2FUDWvWkscsan=&nqh7GGZYphksk=&5X9auKYbaomaf=&VLSExDVXhahrs=&GN7DPlVfZV_Vm=&iJMXleWcWlkqf=&lBqJbmYbqdWrk=&esT4XlUXqkfcV=&N4oDA_Yjrgrip=&rRPLnAZUhgssc=&slRWWCZjWd_ce=&fmCFkqYgqmnrX=&4_JtCVZaYVYZg=&beYWmQXe_daiY=&GmqxogUebheaq=&M2HjrFUkkkdoV=&JsEuoPYcYndsb=&ITyt6IVjYpdYs=&cfqPgzVfqfjmW=&xBfPqIVgmgWmg=&fVPBAzWlsX_jZ=&BZxQZUYgdkZgh=&ptNu37ZfVjYYi=&yDsr3dVaWkXfb=&m8ohrCWqUmhpi=&3USsOLUoWWiU_=&OVyxSCWdplWjl=&8lJpgAW_kpjeV=&ZXnuIxXicprga=&Qo4rJlVhesYZY=&cMKZwjYZ_bnso=&GDeEbrZXUkVej=&87ZgfyVV_mhhg=&nfUyVGXlq_rWn=&L6E2TSVZnqopX=&qSyMHzYqiaqpq=&x3UU7RYVnjbel=&CQAcj2UZdgfpd=&b2JxcKXd_Yfdd=&ln6ZuzVllXnjc=&5dadsJYmnsYsV=&XiOh5CXWWlUbs=&7bayVcXpZiigo=&RCupeJYmejndZ=&2OZwSbUlVgioq=&bjj_lbXfkaqhh=&9eHML2ZWcdgmU=&IRTR96VihiXjd=&cJjnv9VbrmWg_=&oaB7SaZpb_kof=&ScstVdWnV_eoc=&9z5UuvWabq_pf=&7RhenTW__hqme=&5wjfMPYXmcbVd=&2uRyDWYaWkmqW=&sswAbjVZXdhbV=&FrXEYdZXfdobm=&SoZNWPWjifgiU=&z3PMbvUUlesdn=&VJOkxBZiZXUZf=&rBFOItUsqppjU=&yRFWitZUbig_i=&IzEWpYUZlfqbV=&uDbUibUehsqpo=&WjJfJ_YUZXVik=&Ocid6zYnhVpVV=&nSKwa7Zmdsopd=&ziVKiwViYjmor=&RbavHhWoZeWZe=&bD6fffVbbmiic=&yMPw_uVWVfeWn=&NJnywuZabYsfp=&Df_BRSUXkfrco=&iadthZWbVYh_Y=&63lhtlYfbVYfY=&Vn8XnKXesdYUi=&_oDwhrVrsdkpY=&8TWtr3Zdlfalc=&J3nEMKWeafskc=&sTpDfbVdgZeoV=&NCHVGVUso_dXn=&PMBeuKUZqljek=&4oFfUBUVblWsi=&6rC9x9ZbdUosj=&b6GITTZrmeqYh=&_6uGazVXnsrVg=&ZiRVYuZYccglm=&sVmeZXWcrkids=&44JCwwXZesfli=&rj5QJ_YcmhqcZ=&pBS5zfXUXWrVZ=&C575gZUca_ejn=&UitR7gZdbnppr=&_X7274ZUqeclc=&8xbsVzYqpjriX=&OODBc7X_WbrmY=&8yg_GRUajkcai=&KDrAkeXXmgYb_=&C__ug8VbWmWYa=&fSAMcDUeiiUbq=&s3SQ4QXUXekqe=&MLGGtsYdmsVgZ=&9ZqbmUZkUmicW=&_Aclz6ZjhhUnj=&hiq_W_W_spfiY=&JegwJjWggicUi=&IcdGaKVhaeWqq=&x2CtKpYnrZoVn=&p5a5R4VfincpW=&BTVk9BYbg_fjo=&kjOnBvYgomdYm=&5dvHk5XYm_gar=&U6_5uPYlWcsnf=&vZvffnWflsdks=&Q5sTaNYblaUXm=&f6qnJYWfraigr=&ZRaAoKVmefcjm=&C7HNTbZWf_prZ=&QporfyWasYVgp=&D53bhLXYkgmhV=&WqCCLNYUWceha=&cTLiI7Ubrcngm=&MPJNeTXZWlZlY=&r8Z5ScXnkcWVX=&IR5SM8UXlcccf=&S_kkIvZiUsqYh=&KFREDiViiUalW=&6_8EL8Wfeeems=&JH4OlOWbnVsUk=&yoVmy3YkZVZla=&UPgpMGZYiriZq=&LB9SIFUXUkrhV=&Em_zSuZZbZaYo=&aFdLyFZnkfXdo=&Gc_t9QY_mbaUr=&TxPmGfYdcZqhs=&LXyFmYYlYoiji=&yTgda6UnaVfgV=&XoQU5fVVmqUmb=&ZlGTCxXpedgrp=&vA2iZlXemYrcX=&xImwRtViVqaVZ=&62aZnHXqsUjVp=&2ySB7UUYbdebq=&eqpiY8XhYUdgm=&LYftPTYdiqsUn=&XUxJo3YbedVba=&IyKkTNUoXsfob=&7hXQ57Ymnfecp=&4Fv_EvZif_eYb=&2hBFhAVjWs_om=&mCp5UUYWrkddl=&udYrcdVnXjakW=&7KzTARVesj_oo=&7nDw6kWbcVXXW=&3JzNTIWZdhfkf=&x5KGycYUhkqhs=&Ixph_WWeidirk=&eKuAXbX_ZXbWp=&J6I2CtVYiUgfn=&e9ujr5Vcr_Ugr=&KAmC6eWWiUcqo=&PdmYjSYbZfeob=&CQAn9PXgpnqW_=&ok764fZlrdcW_=&2gs9jhVbreheo=&QPGlbgU_oVXfb=&B64SeCWqrqjVp=&sQHI7mXYkfnqn=&BMqxYOVUeea__=&5ObpVkYnacX_U=&fc5EqGYbjgqfX=&ZUk2_VWnXfX__=&vNLT_iWmsWksf=&cnswGbYkopjfs=&fbHZUzVoUc_rg=&dD9yqrVefsfar=&pCEfsWZaaspUp=&fBkDlIWhYreWh=&nZzjTsVYjhcob=&bHx7QrYdoahVk=&ACkKtwYojYjsm=&ewK4HDXWlpegV=&TUvQjBYeblYbm=&OfFNNWWjpsgqb=&e9PrHjYphsmls=&fSf8FyYcVUlV_=&OvJyukYqbrZnb=&moM3k3YWfhUod=&TbOjSzYjboq_V=&atMBbbXaY_aYi=&EpIPHeXccfWbb=&fHBjREXVWZgWh=&AmajwLX_ZXpib=&ms_g3aVrZsXcV=&XRmMXiYghdjej=&27V_rvUZUjcsV=&bsb82xUUX_smh=&H6cXI3WslhVhq=&4a9VW2WpUpZkd=&j3LhNIVegoqff=&J456rNVdlggps=&hiHpbUXoiVkZi=&ftJ8FcZeXmqUW=&QHNQg5Vqp_cen=&tSX6hCUkZqqsa=&wRyq8VYkrWXis=&ILARPDWmUffor=&f6vFWaYqqWjaY=&oPLHe4WefbaUd=&W7IHXaXYbd_rX=&fE5_S4UcXXbfV=&MJVgfKU_kcpVU=&_8gULFVVlggkZ=&zE24HOXYpaiZq=&T76T9IXfggVmp=&x4zy6EXnfpsn_=&27qsIrWsXhVii=&BXNgB_VaU_eYo=&T2r3oUVhbjhn_=&2LnVh_Ulcbmfb=&RSgjg2YhirWYc=&2rtrt5Y_mghrc=&hN5ANFUoppkqd=&YmIF92UchibgX=&vTswRFZWasnsd=&XBB8DGYZUqqoX=&6_wqhkYmejZWV=&AayJkHUrmeplY=&xj3q5dUcanXc_=&x2yNzHYZgbpUX=&XqaHrSXWlsXXa=&M_LtP6ZaZiggp=&EtEHaoUWqpbqj=&SfWpiEUnWfUnc=&tKOUWMYUbVVnU=&hc6ksbUcflsoi=&HtQpJyVhlijkd=&9PbYnnZZbVWns=&qARm_NVYoqYZZ=&_sSwY5Yo_jrXU=&Fnz2KrYiWbniW=&qlXHICYjbfVlj=&V8zbdgYYfXroV=&sKgPtvUjXWmim=&ozg3aQZeqkk_Z=&EENKo3WlsrZZo=&eG6gFaUWooWbU=&v8hShyZnlnnoo=&j8zckpWkashqe=&czAElkVgeUdWh=&cSlgSHXedhVj_=&qMPD_mWnsqVbY=&K3MR4pYWjWsrm=&vSVRduXidiZmm=&7L6A9dVbrarVd=&W4mz5CWgV_YZl=&IzsFV_Zce_ZiY=&Qg_EbQWklemrW=&JDeFznYsWhmnU=&NSkQdHUXipcUe=&TZWUqXUWhrjfm=&lUzBWcZjcsUgi=&wkxoioUrZY_em=&bStlc4UargYnj=&Jm8ugLYbnenUf=&JohIcCY_dkWpf=&t6z7wLYghnraq=&wcUe5HV_ajWim=&xElNfXYfkeabc=&SM2IosWcrlbre=&xqou4XXUWVoXb=&EERoc9Vsacips=&J9VSkvUfjoidb=&mX3VrXZlfep_n=&qqx9igVnrpaq_=&iiR67bYrm_Zlf=&K74cVpVjgjk_Z=&TtE3rnXXdlnlj=&_gRlkXXrWjd_q=&afXIjlVjreXcd=&TXPQhAWckipUg=&MsGYRmXbdUXrb=&W9ZRmDXjjdrmr=&ucczQ8ZsUrjas=&QcBkGDUsdqnUd=&8jKq48Zmnrrfa=&UAaGXHVjoaYbk=&eFEwjwV_sWcei=&gvepVvUYiYYkZ=&qWqt58ZbWcbqi=&qdVjo3VsqmqZg=&OoPtt8Xm_UZVi=&bvNcT5YopdZZn=&PdAxWkZlbZkg_=&nsxPPpYnYmWfo=&a8zNnUZnomsWb=&UJxZqwUXcfUgo=&3aTmWOZ_rpWgl=&dl6o9tUXhegiX=&CBqnT6UqmbpXq=&CrlcOlUiipcpe=&oHcwABXbUZaUk=&NfJw2XYXkdpfs=&pXhWG6VebbYWm=&wdhHQwWnUeUnm=&xWWWwhX_isWjn=&vUsLCJUfbgnUV=&vjASQnUncXbcl=&vYG7Z9UsenknV=&piKuMpZUZrnlq=&oTTTK5Ygoagln=&rReiFuVVd_hll=&mHNzgIU_oWYmi=&WGN89zVhkrWri=&nDSvYLZYYWofZ=&Mz6QTqZsqpXrq=&MFFoJYVqqcho_=&yS_tjDX_hoXkd=&9cZiBBZqZfZVr=&ZWHyqJWldilkZ=&kIm8ZgVUkoYVp=&dyBBQSUapZppg=&vjXRObXlZnndY=&h765NMY_qracp=&aYnmrTXaXfUYn=&a_vMm7ZZVUijY=&lPd4hMWkboWUr=&PGac5RVfjnifa=&lze_FxYdcejmd=&qo4bzIUqrnknp=&Jpg_jtWdhV_qo=&xRaW_mY_cjdef=&X2yi_UV__nsji=&GHGe3jVdrYjmh=&WeKgpEYlglsdb=&VKCwYsXffgnWU=&ifw7EKYZpibYn=&XW8ZL8ZXYXrhZ=&fpRFVpXbUdnda=&4LWs7WXUab_fs=&mVFTZHWbXkeUm=&hTrML_Uadmmhd=&HvDemzXZpsZjk=&3eaISlVgVhibi=&3Wu7JyVXaZUZo=&Hi78EhYrbkkYo=&g5iNmAVaZjf_U=&Bssl5yZhdfqls=&fnn8YkUhomVVo=&rgdcidWdsmXrj=&9gP3ggUUccbZc=&855tpZZjj_ghf=&OFMnuHVsrcldk=&Zao9qhW_kdjUn=&Ws3J4DVjiYUeq=&XLYvmwXoaUpeU=&CFtlO8VeralWg=&BztOrcXX_a_hi=&um8vOHWVlsnjk=&fne5z3YWYVYdq=&ZuIczAWdrdqos=&x9Ubx_VgnbYZU=&SG33pTZ_mclcd=&7w9W_XZceUkon=&kqZU2fYhrZkWr=&up28hZZnkXolk=&kRjUwLZirobWb=&4xSWHDVUbYjlV=&jW4KqhYqgdgsV=&auZqvPYlYmgYX=&de53TUYppqjW_=&TYZCt8XeUgkkk=&AZXgEbVpXXnfq=&4V3q3JXjWjebs=&o__utsYUbfqZh=&NJJcWUWkpnbYV=&fDThr3YhhXkcd=&vS7UQiXohnWVi=&7MD3McVd_Whpc=&fXCNcWZdViWn_=&chaOaDYasqYYV=&opVymfZYnosqU=&Q4fZKdWploUiZ=&vzOtiLYgprWon=&WWroRpYqZV_nX=&xzNOMnVqkbaiX=&CWTUZ5VVZd_bW=&jQrmuUUaqllcZ=&PtJsZhXdljaki=&jxMmhbX_Zsgfa=&hnQCUoVgq_aak=&dr2layYVhbrVU=&sV_P6uXlghpqc=&g3QRjfZpVVbXo=&nzKuuwVnrnfoo=&BZHEBuZsVceVY=&_lFjPQUYanima=&miiIXZYciWjgm=&P6Q792XodZkqr=&8GjCRMVVqg_Ui=&RQzrHgXmZgXe_=&aYYr3ZZmcjgpU=&9iXvgDWjjiecU=&fzOu2dUXYXbci=&pxk5aEYa_khkg=&AsdSEkUbasZlr=&KAM7B7VUaihq_=&fRDYvUZVcWino=&nHF9D_UmdXoWV=&quZYhHVgfgpVU=&fbLGeFYqklsYq=&Z3Q5wyXiqnnVo=&ZQIsS9UnXojX_=&IQkRBdZankXsj=&VKs8AwVVWqdff=&geMaDYUVVgeiW=&jvsswVZ_cbqbZ=&jOIsdpZgfVVqm=&xK3l2OZXjmXYe=&iKGt4JXWhieoi=&KBezVlUrc_nel=&lTzRbBYhmWkjr=&bnTiotYUbViip=&Rz54aaXoohhV_=&veYhciYcpsnif=&hmSt92VshdUmj=&JNRXklUcsgqi_=&BhThyhYY_rmnW=&eNf4RkWidclkZ=&CAQNvWVaVkkbm=&lporLAZbrnrck=&UWM6qPXsUschb=&qsVt9lWkmisoY=&KdEyJWZomqmjj=&JK8mdeZiYlngl=&XWCGSbX_eZhZZ=&EOGPWFXjcec_l=&xrpgKdZjjpmVc=&j9jh4nXesempc=&GvtcWhXVZYopg=&8cO9QvWkrXikp=&qPZiM3VhUiqkn=&TcC2gQVsefih_=&_X53mqVWWsjpX=&5DTBWCYqcpbms=&eWWc6lYimZUdZ=&TQ2FbiYahqahj=&TuPQ_2YepcisX=&WYDVwrVffjsfp=&y9WNIKXZnVmYi=&F94ZUuUbXjZWo=&AmIS_RZXrZWUg=&zjBzjIUpVlcra=&ZhK3ftWXqrfUo=&4z7mpDV_ZXe_k=&HYf26kVle_qoZ=&DtgEgfZpbdjZo=&CXk8_XVo_oleW=&P7epuCUcVqdVU=&ksQO8aVssqZfp=&BZxKoUWcrUasl=&Ses7X_Wprkbjq=&GfkEOQYeechof=&sQag84UZWrssZ=&QKrdBeUqnWqqn=&VN_slCXYmbsll=&CeXxfIUUcYoms=&EaPPg5WspUWbp=&YAleHaXdajohb=&M_DfaAXrgsZlf=&nSYaOJXjalgia=&dwE4vBZrcXhkX=&fjxNDlZnUVrgf=&qckIrxYlbbapr=&qGaB4VYrmfhmj=&rAM_qDZoZajoo=&H4LsJxXbrmeoj=&LCeWzvXdnaWip=&asIpFBVlfgmqj=&iyV8DXYVjhYbd=&Xk8z3nW_iXXen=&allcUtXXrgh_g=&AGVU5DXfkcshi=&769MP7XaiVmol=&CyfzINUfjZWVi=&C3SLtuWXjobem=&CC_G38ZfYijha=&ToJQt5ZrakfVo=&uNtYzUYhVraYV=&IQSWTjWYsfVql=&ilJl3YUYWoUjV=&UeNnJiXscnegq=&o4dOsFVeYn_jl=&5aBWLBVjkVphh=&qL525aX_jVlns=&JztIlUZZecXUc=&2N37TFXdZandU=&CHgKO3VhqpjhV=&QuarENZWssmnV=&yohw66Wickpir=&w38UOLZimrgVs=&4R7FSHYZle_qh=&gpJ_9HWpoWnrl=&GePcdYXWYgoa_=&qT7XbTVYmlVhd=&kwYVvhZolVZic=&mnQN2PYsZ_Ygc=&x7o2FhVoW_cnj=&m2hZjWXe_qojX=&8jappyZrlrXpZ=&WuUYPcVrrmZnZ=&LrbzuWUiXdVrV=&wF33QaV_VZnVn=&utTbNlYlo_UYl=&YKQ_YoVfidnbo=&amQogGXaghc_j=&PEpVxMVafVbad=&92vVxiWXmmegg=&Xa8ibUYdgdYYo=&iTj2yOYnpdcZc=&IpMseoVshlZnf=&YUde7oYeqqelb=&LIRIInWnXeeYk=&VlGRYHZjZgpXo=&5WUqz8VUVUYid=&fwjKI_ZmWnUVm=&8XFSMeWgaWjmh=&qQdCLHXpsXZ_W=&PGOmWiVWsjmjV=&FPpAXsWWbdYrk=&52YUmMXcp_frY=&mMhEFFXalcndm=&s2RW7iUYgesrq=&DZbEcbYWnbdbb=&rKk9EcXUi_lek=&IAHE7RZUbqWXU=&3kbq7VWgpYepd=&GitUVoUfdUebU=&RGpQbkXasWdpr=&ek7l8CYZqkn_l=&B44Op_Xhhcm_s=&jS33vBZekdcfV=&ZSp2mJWaWVepf=&lem8KZVrYsVjW=&_VZ_aaVVdjZoq=&RooRYDZibpmVk=&e5qjsWVngdqmX=&tkHjUYZl_ajWX=&OUeE7wYiigrie=&cokLqAXaUgUXU=&na3SOGYrUkWYV=&R4382ZVdfhkes=&ePOPejWicYjhq=&NPOwcyYVZqrnj=&aMDG8RUlWccgj=&r7zz53VVpsih_=&AtXGcEWgYimdU=&eZ3MQeUVa_hVj=&78UEJCWpmdmjq=&pKiNnTYgpjfhj=&ZfzO2CWYknUjf=&_HVqNfXjbcjZY=&cGJBRgZiqZaqs=&G9OjrvYlacldX=&8XVGHXYXnYVhW=&nFTnjJYqnamlV=&ooILjUZsUeaaq=&OBNrSsVnissoo=&9vvRBNWYcgWXf=&GSHjrOUcjUlse=&8NO6xwU_UXoeY=&m92v9AWdUYcaa=&u6ulR3YcqYUeU=&ExwkWPXnhsjiZ=&Ge9TgWVqpXiVs=&37TbytZgsYpU_=&SwmNeFZpbYifj=&A5xjtRVbcdqYs=&heHGiwZljebap=&IaiRLfZmjhUiZ=&55WdlpYY_Vgkf=&advC2iViYdskW=&LjEbilWlmghXW=&iiurpfXlkfVlr=&vAWGNOVnXaXXW=&TqYQ9WXrqiUlV=&HkdGcwUWZoW_s=&rZPNZUVkbplXj=&3vf__3UcXWXhg=&RfN5W4YhggphY=&RsKyorVlhqsog=&H2xZL5U_Vrgao=&XQTfmeUgoUYie=&YWAlJFZl_rhnj=&3LFi8uVXlZkbZ=&5K6FBpVhsrUlV=&3_VLAdXcVkiZp=&gplqWuUVofrjV=&EhJ3YYU_locfV=&xJHlFGWgemcsY=&_L8xnFYZbjrsi=&lsKtB6VfYoood=&FkyJgbYoqgklX=&AWesyhYbXoWWm=&MPXWwKUkdepbY=&AQgjMdXUpoiXo=&d2PsQQZchWs_o=&UPpbiaWV_lnmj=&rlSugqYigchfj=&NtZqdeWsdqdjg=&GeJIpQZrgjioY=&Ohh7aqUfhYUpo=&BOI8JVVhUodZd=&AyVGdVU_cgkph=&zUX9MpUVoodaW=&Qy4EjsWqfUZfq=&gCC_c_Vljdfld=&xWdUryZUbpWjm=&rp8eFPVemV_jr=&CYV7TgXpjimWe=&RSvxLSZbYnrYh=&Z6FOl5VWWfVpr=&poSt8CWmkgaVl=&ILaBfSVrZqmgX=&HHpED7Ybsbaoh=&U4gPYMZXfpibW=&lkjA5KZnpcXmb=&DRHD5OWdVhcUo=&5qkdYLYsnqseq=&gUhft4VXUisfo=&iSSnhVUlfVsab=&zTj3sgYfaZqkq=&_OJf8LVfWbrmp=&VLCiBqUrnmjXo=&SKGjxWUWlf__p=&wODSKhVVYirrn=&hQK4RcWsZrdbo=&EElrZeXmbdZks=&5wxofvZq_kbjn=&GcLILiZsoXcVe=&_P9Rm3XbkVsUa=&MmrugoUqYqmmY=&wVUiqVWUnXqdm=&EhpfGKVsdXrnd=&L7nGjOVUkkeVs=&2zmHywZcfspkl=&ncnBp8YWYoWai=&kSKi93UjYkXV_=&DVqtxBZpYn_mr=&_vR438Zpppnmm=&t7gglrZaoc_ed=&R6QIrcYZYdWUq=&YPSzq7ZZdagnb=&MnSfK8UZabjlc=&xA5mTFUsZkbUo=&DxSewEVecUmce=&M72ZJiYsaaqXl=&t5LiLnZchWpXZ=&jBIclWVfsrfjj=&hIcxv7YpmYo_d=&IZDajLXnbbmsf=&4fW6LOUiWbibf=&LPst6hWndqphm=&OAEcCSZoZjf_X=&5xCBlrUeUljqp=&6xMWBFWaplp__=&d_BJMsWkliqfi=&s8kimjWZpsZ_e=&kbukvqYZrbeWe=&X3qg7cVaqompc=&t2P9gWVqUqZes=&dEgnLdUirkdhk=&jaRVw5YmjpUXp=&doVocEU__bhaf=&qpEKCPVYfbeY_=&Qh6UHVUjaiaUo=&xisuGZXcmlifg=&5g59gfUfWVi_U=&KEgAeyVmof_qb=&bl9VRnYhZZjWY=&6_N3x4ZWheaeb=&fb8pEZYfhnknY=&xgOuaBVqfnUqo=&kinQBwZpsXbZc=&Vtv799Ylbhbbr=&I8by3oUerbkhY=&zwtJMTYWlrena=&uyHO_bZggmi_q=&HuLpPlYqdbsdn=&FJ_GQUYnqmYhj=&PnCWvaVepgVdk=&eStjJPVegXVgU=&QJSOl6UZiscin=&nOOdBTVdYojWs=&kkMUTqWhnlf_g=&tBcZTYWkjZ_lU=&kEJlscVUkXqjk=&7OeBZvWbapgki=&rQRjK4XscXffj=&ga8mu7VdXhahp=&D8hQN6Yfeehcg=&WsbCxYXndeghp=&fDiGeZYehWWp_=&ocbplyYeZZUmm=&qoKjFUWWasUil=&cbUFHDUjVhbal=&ljrltqXXccppo=&vxCHphWkbcoqp=&ay8CO_YsmbgeZ=&chvatCYcjYqpq=&leRM8aZragpfk=&ME8QM_YsX_las=&4uRpVjWafoqp_=&HHR5gxYmbqYog=&vWzA7AUaejqiU=&DCdBOoWhihcko=&PTO7_FYeXslW_=&PbApeIWllWalj=&INQQAyVibjXsm=&wJohiAXjrpkad=&qX9UliWbkokZX=&Vds2w9ZZjscp_=&ustvOkZeonZek=&sAqvMJXpohYWY=&YrMYhpUehfbsf=&CbJNwzWnlofnb=&reTzS6VipU_Ud=&3r5By2XfWkkoe=&ZatVnFWXiWhVX=&Jiih6tUbrrmqg=&U_EPhJU_akfXW=&nH9vMBZZfje_d=&qCEMTXWo_kmVe=&uKtuOVXse_pUr=&wwJ_BaUgipreZ=&y7SV6KWU_XYsa=&5odNQjWsepij_=&hnmhiFXoXgdXr=&YhthhMWsfgmdV=&lPVxEMUbYsVaZ=&zMeclCYbqnooh=&jtxkiXZkpfiqU=&SakBALYaVXfXf=&kZrX5nYWoWqfc=&CKVOklYkVsdoV=&I6Tg5FYjhg_rn=&iujurLViigXae=&Kd2EOSWrggolb=&NbN3XYZasVnbr=&3hVSAHUgmaWln=&kMNh5VXXmZiZU=&opgdmKZjUUkWr=&GhQh55UXVZgUg=&47Muo4YdfUbeg=&KntsXYVoYllnk=&gCeGYHWsbjldc=&fxB6zRVldgm_c=&YMUKCAWWfZUjk=&mNrcP7WesUlpg=&yBuIoGVfo___o=&fSXZ8DVXrlrWV=&MfeeUUUs_q__c=&9dxj6ZYnrmqhb=&zahK8AVrfgdjp=&vS2NiEUbsnbnc=&Ax3pG4Yckd_ih=&aLrYSsZqlg_qp=&qTW32RWhormaa=&iiN93CVojqXYV=&2qctThXgrYdgW=&OfAsjoZnlYaZb=&ELoskBZrdVgml=&fz25eJYjnksgX=&k5dThnVnqlfZa=&gTrUepUUeoage=&KPWKFxUmlsVdr=&uHVASqXbeZskm=&FDFbMfVnWkci_=&UTvqEiZ_abeXq=&qiHr6wUqh_kns=&PPluPtZVqX_kV=&bbHkmTVrhkZmV=&29UWEDWhWpcmV=&yBdTANWdigfbg=&I9Do4VXWpbkqn=&WsS6YEYmaZkcj=&PVes3_UmaaoUX=&YesNhRU_erZoW=&wBJVLBUbrkqlh=&B8jXBSZerpobk=&nOooX9WUVhclU=&Z2I6HoXkVgfhl=&P7b2wYYbccZac=&BM3vEHWqahkno=&lHLFKoWnlqfYc=&675zjTZhnYZqZ=&zivqH8UjjmWnc=&pIIhi3Z_Wnnbl=&WRhe4xXYnZhZU=&NWDuFvYffacen=&VPkWAOVlqnfgb=&EvQV_eYVebmWZ=&GylTTnXqVorsa=&4BvTKGVofnlkb=&hI6lY8YroUsnj=&EOZynzZiVejeh=&yW7Ei3Zh_okeh=&P22FO_XVjnVfr=&_3JdqsVXpUjho=&H4GQsnVngd_VW=&qXvnwCZppUopa=&nWF64hZlde_lg=&Zcn_cFXYdWlqp=&Or5r2mYrblUfi=&ciR3IfWWclnf_=&2dI5lzUnnsnka=&f_ljTkYdeZarY=&RUAqPFWejahbb=&yPcyjkYYjngch=&u4ZmNxZXU_gcZ=&kvipi3UmXojfa=&Ph4tWWWkaoafY=&yDU2RdYXsgUdV=&7nXEvZWUZVdia=&_sVq9sVkj_YYm=&xiPbQAWjmfcoe=&hjWrsUVa_emda=&XFwQihVYkgVfp=&FIOHQdVbYnqXq=&hXV278YoZYrpZ=&6kSTnEUpmpfhg=&GRMyvjXWUllbq=&lJar6sYZfhmgc=&QXZfb2UVrZZco=&Ikjxc9YnVdUsa=&GjPq7BWeUima_=&9BW9I7Unhessi=&IAHKkmVYjZmhe=&V9NTqCYYbohe_=&BkwayyZlfr_Ye=&grJQfTYirfVks=&8vq6Y_Xmabg_q=&YFqDxBYeVWsWU=&9xgqvuWneUmfb=&YVXCORUsXXqeW=&5EYqZLYVpmrjf=&pXiiktWicdjaU=&hmIDGzXarbghg=&7wepEWUkVakXe=&6oo3inWf_i_cY=&lV_QyVZarsmjX=&a9B9lRZhYccdh=&DSmc35Ubh_XUb=&e8iSbcYZiUmqi=&yKuJuiYUbVjZU=&hZgOKGXberVZk=&3ELVg4ZsjXohc=&KNf_vPYXWpkqn=&fvKJl8Xjahbs_=&wktLKMUbibsmh=&yjPutKUihVfrU=&DigbGsUhmWVkX=&hFhY5DZerseWV=&iMRga4WZajehU=&uNreW2Zdpglnd=&DXvw9RVnmXled=&dlvn76ZZmcmik=&DOHYvLZdaqprh=&mCkv7YW_VpiXn=&jtbP5vX_aneln=&GGhF3KVdfmYbn=&FrTrQZUiUppUa=&OO7YK9Vp_niYc=&ZYaJmyZYhfegm=&5KWd7YVWccaih=&zPkMC9UidkZ_h=&YR4KyOWdgfplh=&_iHuTMXjqnpen=&zqHx2RZif_ihh=&GgjECjVbWfjmZ=&MjLyRIUjihnop=&_QD2WcUafVnoc=&GBTSYyUWUppgh=&hHCSBEVqcgdYa=&gWIb_sWrnonmr=&zXjaMiUgfrlli=&GFNLSoWp_gUqp=&EdtzJgUWqWnVl=&GXZMypXbUjZga=&aQJeoxXXaifiY=&4lYrPTZleYUqq=&RbdWNbVohmoqq=&Ri5LiUXXgqosb=&2wXDsqZhZsibi=&MHg3bJWoXjgYe=&emRuEnWgcjgsq=&yYVAijWljVaek=&ykqHa5XmsjncX=&3yzVXcWgdVf_b=&brBS73YlYZdjq=&vAOygcXcshnhe=&49c6X9W_hWZeU=&_sR5fWZslnYae=&sX7cFnWVkfkeg=&8Eg6w3WigjWfV=&owMB3FUkcocen=&kFDW3gUlWkfpq=&LsWMRpWlaagsV=&6Bw6FHZXcYcUm=&dHpqjjZeacXYm=&KFpE7hYUhkn_k=&CGURkyWgiXhff=&3dyJV6WsmsqXe=&IRSsPsVl_hepp=&TumfnNYlgXgar=&3SZNvlY_gXcme=&DC9WrRUVjiVXY=&8QWtSLZUlXecn=&K26j9CXcX_nWZ=&nupx3QXnoh_Zq=&RjqDoCZkUqXlZ=&d9VQc4Zphsire=&WMCkw7UnZkYlU=&zRVlJJXicqpkb=&b4IRAnYnZencW=&bDUrZTZZbVUm_=&Q8fL83Xdlmgck=&mtQWdiUlb_gZs=&I43ulHUrnjlsc=&_SXfuHVjkdbe_=&sWxFtcZelXgdo=&aX9ZZzZiYYoXj=&ekRijZXfWjXeU=&zRO7YeXiphnfg=&svITOpVifbapg=&OGcYLfUrooW_g=&CKdUTzXgoZUig=&aoBusUYplg_gW=&z2MadmZl__mk_=&fGuSoUXZXhegs=&_KnpTaZq_XdVW=&t6btD6Ummsjrf=&iQEDCdUprjZkf=&B2YWA3XepZgXb=&iZ_aHeXrpeVor=&DlH6TnWjlWlso=&SJYeGOYkbjlVi=&SVzQtRZrXXhjl=&kClc_uVlhhUbb=&rE7c6fWYWbZnj=&YUDYILXlqYsUl=&TZij7jXogahVs=&zbLjebXUgickd=&S56LbiXVnjVif=&DZAcMBZdkYiYo=&R5leqAYWhhajm=&PuiNjeYcakUZX=&UyzGaeZf_aniX=&2mEvl5ZnZfjgl=&nAOaPrVdarfYs=&EcCkFBZlrWXpk=&FGktkPZdrrc_o=&iU8DijZkhcdZU=&EK2OcuYscoYc_=&yrUjbeVlVsqXe=&e2sm8vZUUaWZi=&5WTJqUWZ_rlkk=&kwBwITV_dmkUb=&K9jaI8ZVkdVhU=&y9KaRXUWrebpY=&GYxH7dUcXVZje=&EppcXhWUnXnik=&BXvisUXnnpsZd=&jhBCiEYVUY_of=&bp7499WWWppYg=&4HTVApZqkXpbU=&6ZTnn8WmqeWla=&HhNs_7ZnUrjmk=&ybJjCHYiYiYiX=&FIdBmyZZZpqkW=&twsRgSXeenjXl=&seQgyRYbqcUUV=&aTIXnXUddolbV=&PbkWMYVsXrnr_=&2OoHOyXksXqlm=&nxqXXqVZ_ZdVU=&vIsxdfUW_pkpl=&TZO69eVsgWXW_=&Yd9XZnZUkmUWW=&Hu_9akUVaUekf=&ZXDqLlUhrqWjj=&erITWHZ_nihmh=&m_wFABUUimgrk=&fASIZmWm_ieUn=&jk7kcKUVjndg_=&odACInXksaZVs=&NAMbFnXhWpWc_=&GXRDONZZbioYm=&FIjzVgXjmsr_c=&KQz2ssWqYsejq=&mavK_MYbbbfbV=&f_cXIwYWaVhXY=&YO5D5nWcdZnXd=&4JNW4xYlcVbef=&Uqi3zXZghpbgX=&fk5Ow6Wjksm_e=&3g2ImgWlssijU=&sGVVRaXWahqcU=&zm8qKwXmcXmjY=&yVKGKCWgXiedk=&lLqDlOXdqZedd=&dMGUr8ZosUmjk=&fplynQWpgkfmX=&UjrKgpWaerUWj=&VLcMjwXajqaaW=&nwP8iMXjesYnd=&Sd_x3oUnqjWWr=&Hi4apCXhsiaff=&34ER4MYseamcm=&_9cHg5ZkXnpWU=&7pqIg4Udgsgfr=&xT8SerYn_ofb_=&yMHr7VVpffajZ=&KJtLpVYnaVngZ=&3rWYLHZfVVfpm=&9bmRWLYdZafqZ=&iouQntWkmqWil=&dlXBifU_ipWps=&6LJD38ZYojlli=&iFLx6hXeibkrb=&7R6mAVZkUsWXq=&3npxilXgZX_Vd=&Pupo5CYYWYWbY=&Ve9UybWnYlYcb=&iziv4BXnZgpUn=&5zzvjbUbZscmc=&gkjQZBXroomic=&N45hGHVUlZnre=&yylBQoXeheiZi=&C35GtoUbo_dZj=&paf7tfUskZXfi=&KPjSMtZWbdZfZ=&2mex7sVVmZ_Vh=&GsbqTCWmnrYkp=&4qF7sAYUcqefa=&IdrdjxUWhmmYh=&epfVuqVnkdWbm=&wqUXrmYbgroZq=&c63CbfVZndnfs=&ofNQ3jUlhUYqg=&8RiKRHYZninWq=&9bTg7aWYYjpil=&MMLus8WsnXhek=&5qoogqUbU_Vno=&IjhaChWpbmrjU=&rprg2NZZkVmkr=&GZpSgSVelYcUj=&X4nnETVcrZWmp=&P6OM9LWUaoq_k=&h7ER5KXnraflW=&Yc_8mYYqskppY=&5ZLWG5YbdjVZk=&7lHG5jYrncsZX=&UaYblZVpk_qke=&l743u8Uoki_rr=&QLwy8eUUrrosh=&8gXMdZW_her_f=&833eoGUUfdngV=&lCDTusUaWmaYY=&4OQCgFYch_rWl=&Y8St6pWjkmZds=&qC9CM_Vfiq_qr=&QC5J_xVV_niqq=&Zx7jEuXrYhdcc=&VYPr_UZqlbY_h=&vLDHIqVYp_sgb=&55qpz4WeY_WZj=&OvlWAJZmUUdim=&dt_QgnVkjXfcc=&qaV5nFYgXlZjs=&9tBDGlZUh_fks=&YAhgZVZjpkXcs=&rUa2I5Un_UiUU=&DYb8tIWmpkbgp=&X72EneWorUekd=&ogJTCCZfdYflc=&hIt8AcZUilqUc=&3y27eyWgkXabW=&aPxSxmVipgneZ=&myPCVkYjahYWd=&Fzn5orYZrmhZf=&QoR3CQYqcUdkX=&NkUm2KZbZYYUk=&S3gCPhWrnmdrV=&w7bT9IWggWYrU=&iVVZUeVfijlXX=&hslCljZlVhdqk=&l97SqSZmkbmWY=&G2TUKoXhngpVY=&u2qRuAVXis_sd=&xUJrLZUhq_Upi=&MvF4cqUZprgkj=&AZw3ngUscohXb=&RI5bLzVqZXifb=&DuLnx2UXUrrqf=&oCfYGOYmaidef=&vpFKwMUchheqi=&Jm2YBcZqfdcVm=&SxQt7qVrcfXor=&QsWNsXWnarakj=&IcEZZxYsbjZVe=&Jro8NhZ_qhhha=&xaXNdFUrjYp_V=&BiNMiPUamdcoV=&TeXyRvWgUlfhY=&5FdcijYadgXig=&ez7yP6VomWbYq=&LOpVOYWosZqoj=&C8lA4iZkVmbji=&o4CYCkXhkhaaj=&9BTlU8Y_Uik_l=&VgqJnyW_llcpd=&wmIrttZoZfa_X=&Ulo5B5WhnUlbX=&Z_T_VDVXqfnde=&twPgpfZbmqcgZ=&i5XSHDXhqZ_kb=&xq39l4YgUYaUg=&zwQJLWWkeWX_h=&7oSYVtUqgcdZd=&NvCRu_Z_ho_W_=&HRvEqCUrhkdhi=&2vkifiWr_fXdm=&DHKZOnWXlfahn=&XOhb9KZUhmZWZ=&3KxFbhWfbnlbW=&Sc7vnDXZVXkog=&LPgm86VmsWiUi=&DkcwzTVrWnro_=&wNKRjOVehneYf=&VgSiKFVehnb_n=&9pyjrGYqfjc_o=&yQC5ZPWiib_lr=&kncxTeUhgWehi=&HCFt6IWZqUcoi=&Ji9W6uYUWWXWq=&qr5EmKYanfqaY=&IxS5TFVgUocmr=&YLbKCPXqqbYoc=&bDVm6CUVWoibr=&HJcMk6Wqkqofh=&IFK8GbXnWaicY=&9Md52fVinlWlY=&n8QNA2ZnksVme=&9TndAhYjfgnpf=&pcjqZVUXbUmkd=&tpZ4OnZWoqjnr=&MkJiHkWhXhnUb=&5IMpitXfWsqdY=&4szjGJX_gjbVj=&mzKX5AYiegdjX=&K7JTmAWsr_UYq=&UpB_VFUZilh_a=&kKYWxQXiYd_Yg=&39ZPFnXimqsaa=&BjkooBYgdllUX=&akCAVGXYZjWUb=&iKrUMRW_hmjrY=&ZAGRZHUmXnfkm=&iMiYQxUdmoVVf=&rr2ghpZhbsabW=&lEQAYNXsXsZoc=&JQVGZUUahpcig=&wK5okNVkeUVmg=&2IsPGZUsnelhr=&WkQaEbUoahlsc=&YSbsSHVsnUiVk=&DncHOcYkiWjeX=&A3lFLOU_qmfaj=&4GRow5VXYcXok=&dmdD8wXWYkco_=&v8r5ZLVojmkbd=&8VNEoIYjqVmhZ=&4HoEd9Xnegfhs=&yV_sfwUoea_Yl=&nC2DjxVbbaVmq=&khoFBYVhkkXgf=&sSUx33Ysqhslg=&3a_S88XpqlisY=&f582mqYiVYZll=&nZKx_fZanfbsj=&YSvSVxUdWs_cb=&ZqVg6xVgXsg_h=&QuWQ9VZYdkXcf=&XVtdUTU_fgaXi=&HOz8VRYbhXscd=&KxPw3iUilc_cs=&xoiroeWoUonnb=&UjkyguXXhWYij=&gNRrp2Yadrkq_=&VIkjmqUmpgU_i=&MbECCEVbardfn=&Q2HHOkUgqsWqe=&WXchgqXrskl_o=&JyWRsiVU_lWhW=&piSAIaVroljmU=&4m26IHUXZbfWr=&3Ka_AJVhdXhWn=&dWyrwcXrYcqch=&ABDAEnUhqpk_g=&8nm_a_Won_mWs=&K_bGbBYU_qdfc=&b7IhZOUVhVZWo=&vc8iotXqkjYrn=&xI6J5JUe__ndZ=&Hu2uJ5UmUoqYo=&Io5gzcWjh_ZjU=&toYEhFUrWXblg=&ZPXKBhWUhUkgp=&jznlWlZjeoWbb=&e2Tm7CVhgclUc=&FhyryzXjaeqsn=&pOGMEgWphrfWU=&zHEI7kYhdaspi=&lQdc2PXgZgVsU=&mGSysuVihekrs=&MwaWK4WjsUjao=&lWbmaiXrbaXjc=&AmY7MpXdhmnU_=&a6aUMDUigUqcn=&H4iLYlVZeiZWa=&GdtwUWUjVjsXj=&criP78ZnUdjnX=&KcjOtxUajjbbg=&IFHhTEYjUUqnV=&B_sgRyXfrgojp=&iMUUhXZpnfYps=&n7lbEEWUscilj=&X97YFiUadlplp=&dpUtm8VgqZXhZ=&cNKY9iZ_Xbqab=&GzVxPNWeZrelZ=&PAOE95ZWpWVdo=&OVqvdrUmcgcfs=&GexkIoWYqibgp=&yzLln9Vjeqnme=&EoOY2WUbirWrd=&VqBYusWoWns_e=&E_EvOHYopmioW=&lcwNQsUYnXmfq=&wI8i2_WcmcXbV=&JCDP8oWfXfm_e=&ErjyKPUgarUZc=&QuHIgMWWlbrhq=&Fn7orMZeppgha=&uwEyKmUUfUflg=&zdFREOZmna_VW=&zHP6hbYi_goZk=&DbZ73NWfrlUcg=&jiOaRWXVlmVle=&qUUpINXknrbpc=&q9x4fFYi_rWWa=&ZxgNoOXbecedf=&GdufKVYkmXYcZ=&O3DrLMUfmbaas=&zmF_8hYaZZepi=&HkCXObUbfieWg=&mDM3wsZpbffip=&AAMLTcZoZjUld=&SgzlG9UlnYWXU=&Gt6ltzZXsemsY=&RYuWUXXkhsfWU=&_NoROVWgfcsjW=&bNwYmgZdbWnbU=&3E93tRYljVhpk=&LCfDSeXjVkcZ_=&dbD7RMYiqoVWU=&7pq5lCUssWenY=&fM6ahpYYYZmhp=&iLvnZ2XeX_ki_=&Hr5r59YaZZifj=&fRF_wqVUsbcrV=&LtxK89XVhXdVV=&SRQGzEWgbddbj=&3VepheYbWWfdl=&hwapOiXdlodb_=&42gME_YolajXq=&6OhIL5WaWnesl=&guYoCDVaZlgrg=&eH9HauZZqesbc=&QkfXoTWabqflj=&uuefO7Uokjkar=&PsbDbCYrsXjpd=&ffVYbGZsfsp_W=&pbXRylVW_VqZZ=&bMihaDZfXhUYg=&vgjJyVWmWdnif=&3XxJLLWVne_ck=&If5PjoUnrXeYj=&ne7nqnVakoo_d=&P6sHkdWinUihf=&P4RDbHUrdmYmp=&gWc765WWVnnel=&fN3kwaWVo_d_n=&pmnoA2VplXjsX=&EuB866ZUarsrk=&JWtrS_WUqXseh=&3XzP9sXc_jnsj=&JzJ5vPXsUdYpp=&NdEVqxYVfqZnd=&pknFvfXlqVUde=&gx4SVlZnZVnbd=&d3KpfDYlhUjac=&n3FvKVZkdkrff=&BtOFhNVZeaZds=&OYBjyEYhhYocl=&TwJQKvVkoocde=&mxlPwpUnXgXZl=&XTpyhXXngahqh=&hGAlXSVdhsjZh=&OGePr5Wanphcg=&Y9YW2sXqiWi_V=&B8sJdQVpi_YlW=&7eK5U6ZsZomrf=&wgTj4FVkeqVjg=&jW4OvfZaaigsm=&hAp9KvUk_UaYk=&EkEZQrZhcgjZX=&NPeTfMWjZYpbV=&3H7BwSWqWhsUc=&nxFHAoXYnWUgp=&LHRRgbWdecaZU=&AJgEsDUfsfqpU=&hWsT_KYWdklbq=&dtxzZyXiopfZq=&GywGUbUdj_ilp=&qTxLj7YqoanWq=&XyTiceYXosnZa=&LfSOwKYia_Umj=&XSWka2UrYWqcg=&Ux_SugZUdbVbh=&kXAgExXjspVsl=&tojACaWpdXsae=&atILFMVWbobgj=&8yV_peWdca_rW=&5uaf_tZaUknad=&eYttdHXm_pshm=&KSFkMMXsYjnrW=&og7jecWffakac=&Gshrf9XkZVqVW=&EewfBIUibWlUb=&DnqHqQWZWkmhm=&Nh7mHbWnlYfnp=&gYAbJjYqrbhZg=&SUaQXAYaqWhhc=&DuoVyMYsfpUsh=&aFLJqVZor_Xco=&shVi7dYeWbsqd=&HPpyztYsiXVUm=&ITevs6WZmqbig=&CdZDaBVXVbljr=&jMOpxZYeWgcf_=&6NaZyZVbd_h_j=&tkPb_FUbZnqjd=&DmhesJXdYWXdm=&pvjHM6UbdcsZZ=&fsR5iXWlsjbps=&bxT6vUXdVseVk=&bMKmH2WrZcmqY=&zF_56UW_piXrV=&Cgg38DXeop_Z_=&IRIkYVVmXnVUn=&uQVXm4Zkqslio=&mg2VOxWrWYrWc=&U9LP7FZeajZ_j=&MkMwjjUkfjeqh=&NIrfx2Wjlhlms=&UNSSQqU_fjfsn=&yKdg3_VgUYWVo=&HL4WubX_oVmZi=&BMk3p3Wnfpjgn=&5PUxAAUckbac_=&c3rGyjYdrfsgc=&eWSW5hYfkkdnZ=&pSJIN6ZqVbpsj=&4dBXQEZboWnnd=&O8Sm7FUWlZsXa=&e89bMXUcXmerq=&e7MGp_UjmVYYs=&ylAUtoXeam_bX=&ufrFASVjfi_js=&EODhRrXYY_akY=&SDwsCzZpehsgk=&GcWcgOYfeXWcV=&UBdUVBXqiepdm=&szZlGGXajZmgf=&xucsmSVriWWii=&VeiTXxXpcsqhs=&tjkSPUVg_frcf=&dtyOZTZqgcsmg=&9y5aiSVXYoqpg=&CP9LovZjmdqWn=&kgPkzpVfkcUke=&LXtL5KV_jankq=&Q9jQulUimZarr=&Gcv57dUbXXmWY=&yP7Hl5YiYXgZm=&lIoY5NZnWW_Ud=&wEswa6VnUcafl=&ONKo9wZYUkUkf=&GDghL6WnUbo_V=&YlsrCzXamaiXo=&SoQaYyYZrfmao=&DpSVMMYganpVj=&BI2dz3VcrcYXi=&2yOap8WfaqqnW=&bQtmGPZWWmc_Z=&tgBzJXVdXaiYZ=&pigN_eYoe_Wmf=&HdXA2LXiidYiU=&Pxkk2SXfVjsfX=&ptXYduWcmsnUi=&YqWx7iYicX_jU=&3PfZiuWXXsVeb=&Nn9CFtZjXjYUp=&eGmctrVdWos_b=&vtiOGIZrWidfl=&Z4OfruXZV_kZh=&8cI2CyXVUZqoe=&frKGqOWdeaWhZ=&mzzZptYYUbhfV=&eOyRgSWUjobbl=&YcxF_GWfpUWh_=&VBFeYsWXpUoWm=&jKGU_eWWWZ_cV=&TTY3dxUXdcamV=&HG9gvGZVeYVse=&2BwxvTZdUdmaV=&HHdLzPXoscss_=&5m9ROjYsZnaUh=&YQu29TXWcnZrl=&zL2_i2ZYjogdc=&QlqFBAYqhVslh=&hD6IRqWaospci=&TaRTwFWamkZag=&lIH3b_ZkgVbmj=&86BR2lXW_gckq=&KRJOiyZipWgpU=&b9EYXPVidnXVX=&Op6qeGVhhnhem=&SpnsM6YdfVnYk=&jAgOvVWrWsmps=&T5CuR9XirWlki=&CKKLLEYqWjrqf=&mcQYu_Yjggqbd=&Mf8vE6Ynndgag=&cH8bHTWmgbdik=&r3qaUlXkXjqZp=&6fhZicZanfYrn=&EH9cmjXW_jrhd=&daOJqFVkWpimY=&XA4_R5UVqiYqb=&EERxN9YlfeiZn=&pAAIUhXYpcspW=&nQMtNYZhhUorm=&TweF2FUe_W_sn=&yAFqLqXhdfrZl=&U729KtYrcpghs=&hmVB88WebUnki=&SzWu7mWe___ae=&zfr268UdfljcV=&vYsEqlZshrfoV=&eWVx3oYsZaifh=&RmJGtjZl_qfag=&oVpAdxU_ihjUZ=&QOY3W4Ubhgpal=&sld3p_ZpdZV_f=&JCuzQFUeYjkad=&jX92DoUlgksfZ=&hGScBIVXbkmVd=&fPwKMEZUmjXYi=&g5a8o6ZsrVmWm=&l3Pd2NUhocVac=&HTaV6DY_ZbVij=&vQ8r2uX_ZbrXg=&hbbHXhUiiXeW_=&LNamDTXorU_ob=&v5skczW_oVXXW=&945Sp2YnhhrVn=&8THx5gV_YdWj_=&iHXQF_VaojbfU=&oTyEJZVdkflbZ=&F4OjvIUVZmoje=&t67CNOYndskoq=&_yMOTrXUjsVei=&tjHZDYVgpnZiU=&burvoTXhf_oo_=&uGBhBIVYWjifl=&tinCyhWVrdfrp=&fdvOzBVkeZodX=&batBfYYmpssge=&WMrmejXZWcnfV=&6APLxvZfl_cql=&p3b8UYZl_o_rl=&lEQ4aTZgjsll_=&Hk43jOZmXpjnp=&tgdA64UfaVrmi=&k7gcxiUXcVjWV=&S4BXsnVkfesXe=&pnX3kTVaedfkk=&EVOcjeZkpXsXX=&AMSZffVk_fdZ_=&EUbFXHYshssaq=&2W3GtFXYa_aor=&7udT2MWlbnmbY=&itPTLhXVsarVU=&qwbIYnUksgZnZ=&Y2AS4qWZellbb=&vS84dIX_UhiXa=&IaILKCVeceglc=&8oLrwIXqeYidq=&OOCsYCWWrmeZd=&Br99wMVWaVXnl=&3QYJSZYdhifbX=&68KHi2WWYkoin=&lgeRVEVhXWVeq=&hf5xNgWnfpXZW=&wNLwRcZpUjqfm=&H6b39GXZkmelr=&YLhgvfUipqgnX=&G8RNAfYYmXiYg=&C4BVGXWncrfqa=&oKRTPvZaZk_aX=&ne4eGhVoiheaW=&HwbpQmZjaoeeq=&Bubv77ZZjking=&ZBb9BHZke_nfb=&YxIQCYXYsfaak=&olwbRVZZeaUr_=&axwgbzUeVhbsl=&4HmwhZWgVqVrq=&M3lMFkVfqbpVm=&H9OTL_Vooakad=&pkvcwOVUVfkom=&4bLIClYiqndUl=&yuYlIKZYkoeYb=&r4hEesWnepWYk=&dcGbOeZghioXa=&4lyyJAUadq_gj=&sBQP7vWgaiXjq=&F9wuMlXXUbZpm=&4mEbZbWoYadrf=&vcfcvSZappeeh=&_wJrqUYobZjkm=&iwlLzZYdiUgkc=&o7genBUUkjcZj=&kKJt4qZngirdi=&pMMzf5Vrdhnfk=&dvKBv4Ubjrepa=&v5n7qEVsogjab=&7929rTVdhqYjm=&Owfg5WZXshUbe=&isIrQQWhhocdf=&HEJru3WUXfmYU=&Vtw7JMWXrqsfn=&6X7y2rZqjrdaZ=&x2DWf2WrmVUqs=&EANvDtZlbqdoZ=&XpCKBzVX_ah_m=&wFOcgqYgfl_Uq=&TZFIHcXWlpakk=&AxVTQDYocZZYn=&iUCVonWcllhmi=&wHyemwXXiYgpZ=&GW5Jl6Zkfndsq=&iTyh3VWZVpjgq=&SAlQTWWbngVhf=&5YBhPxZeYiabh=&id6FhQXblbVnf=&2mvPQSWWXnXYh=&NvOIRKUcqgUjn=&wGKczbVgaZVa_=&OnrNwbWdl_ckh=&VaZYzSZmmalqi=&fWeuy4XWVsdao=&ylWj9kX__WXpi=&lDvRfkXqnhksn=&UTgWhrXcYbfgh=&DB4JivYhpaqfp=&cO4vjgVUUnk_q=&gUZ7yTVhkfVaX=&ITpRGMWjiUWXm=&8jx7C6WacaZUa=&vycjWJUhahibj=&9FQq2NUbfsdjc=&Z944x8Zme_cil=&UeMFf4YZhgqWW=&bXOPaWZchkWZV=&43rTcIWZbZYmp=&a7QgUCUV_lXgq=&e5QqWUVhhhkhW=&sv37ttXjU_eWo=&LrBK_6XeZakoX=&AR29FXUdcVUdU=&NciJrAZancbZs=&wEn4ezVcrXgjY=&MBTyRmUaoYcVX=&EGpknnYWXWXkg=&HL4I2qXkaegnp=&elIcwAV_olmec=&6Jzw_JXiYdVlh=&Zo4Q3pUiraYXk=&wspZ8oUXmomZi=&FBwhG_WekqhmX=&oRKTlIYqndiiq=&8Nf9n6YnYfoXV=&GxSoM5Xochjjk=&_dfw6gVohsWiW=&tHNcvwZekgllk=&mO2waAXejUVlo=&HyRHkLYcg_ahk=&lOZLDoWkYUlmk=&9R_uXoVmirjaW=&UKtJmJUmhklhZ=&bpbbSKZhVVshc=&2jEVApXnffYWf=&zJkikeWmflWip=&cpaYbOUbYZW_b=&i8snOeXhamsfi=&takXZpUaVsbZk=&ZapxkcVabnYkj=&YQO57SWXparrf=&t_TPUrZsamdcb=&HkM6APUhidqoa=&mIiNyoW_Xmbam=&ijdHT9ZlhXUsd=&ryw3RFVWraoYk=&W3U4HdYcjsnXn=&RW3wfaZkg_fhi=&2N_nM5Wpod_Vr=&kuBzi6UfX_sao=&7bxAyEXjhsjdq=&xmKkOcZbUm_ae=&9YSNM_VVohrjX=&xk9CYOUjbhkZW=&3Syxz6VohfsYr=&OqRslAWaYlbiV=&cz3WJ6WaYqiWq=&TR9aZxWokngWi=&igqaeeZhenpfU=&YUE_sAWrgsYYe=&nWDwq5X_pmXY_=&HOrbMpWfilUpa=&aBHsBsYm__gmq=&xthGmAXrfrkei=&rAA_YtWrcaVej=&wNQ3s5XhXWkUn=&T6PQldYqZanms=&7igJ2uWadjmqf=&37HgcqVgVYcrn=&pbU7vYUooY_qg=&cy6Z2UVYiai_h=&3nL5HZYsfWjrc=&grXuVkVrjaknm=&PH6cfvVedjlXp=&nXlxf7YocakZd=&ziHJxzWfrdhpV=&9Fn8fkXejrojf=&232oaAZjbgUaY=&l6eEHCUhliXja=&Dgz2WEVihldVl=&MzeL4IWXqWech=&LzPeKjUWfkmXn=&VUOKlEZ_oelXU=&S356QxUXrniWo=&sWvsglVZhfZbj=&JAdzu5Uddmkk_=&FrKa6ZVXZ_jro=&fAc_pjXhmqpiX=&kcnGvZWosqbgj=&TapsoCVepfgfb=&URZ_JEVhcoolr=&U9ddOTWdjjkrW=&HU6OU3Wahgenp=&pVbPe6Ungckaj=&4P_CXWWhXajqZ=&548OOEUronlpf=&diXpmjVfrX_Va=&vr3FczUpaaWnr=&zIuTHKXYkXWkm=&V52eHPWcesjfj=&UO58DnYoUkidh=&EEdtKoUlerrqq=&ZcN2C4ZVUhkok=&GRPS9nYYbbcoi=&KQTSi_Ufqoqqd=&ahK9vQZcZsgfk=&GOCyphXsrmpka=&GDm3VhWnkXWok=&Mx5IFfUbVhe_r=&FqqSrRUVmnnUp=&yJanArWqf_iYl=&cU8T5NYllYkWm=&dmlBHdVgraZhc=&9biPFMWqbZXXc=&dc73ZZVrnngnX=&of44SaZZj_Zsm=&jSaFbCWXgqliq=&Pho4UnZejpbrq=&Kyvl2ZUnb_pco=&b5JSo2UiUkXYd=&3LPTPVUiVs_fU=&rkucOYUZYUVoe=&Rh7lMxYmb___a=&6cMzpvWrpoolq=&NhlmiRZdqVqkg=&lE2tvoYnihgni=&43WNENZqkfg_c=&3OQD5oVWbrgZg=&NFColUZegsbWs=&WYUenAVVld_ia=&RcylPeXdngrhn=&fVuDNxWWWjjWc=&pLHypOYhWabpm=&XJIx9DZYlXfVa=&lhJeFfXhrUXZf=&FFNlchWkmWplW=&tvP6rYYsegXan=&W67iHOZrakaYl=&rgHXGlXhXccqm=&_9rd8kZVsdifc=&k5UdMTUXekkWo=&wnoiOmYeYjcil=&7zISTxYeesXmZ=&4_nGrbUYUUZVn=&ohbBZ4Z_ddoeh=&Mdm3tyXirWWni=&iywZESXYdkjqj=&KjxnGSVWsbe_e=&BhiSI8YhmUqVU=&CqqMGFVcqpknr=&vpsjPoUiYobdV=&FRwN8VZmXefla=&XReVktWiYpslp=&m2CqoaVjXcoUd=&D6or53UinUisr=&jZlbomWglmrsp=&SjGVGlUYbaVrd=&ruWAwvX_ndrsd=&OqKM9lYbbXqYX=&JL_SVkYenU_Xq=&89Q7O5UeZWnsY=&QPfGqjWYimrjq=&tddwvqYYhfdhZ=&jNpu5KYUfWrbV=&8bLesXYVaeZZc=&6rCdUcVenXjdX=&hbXavlUcqdloW=&cg2P_6Zhhsloo=&7jiPQwXqnjbUb=&LEd3b7ZYglhl_=&F2gKQVYWloXkc=&rpgjroZf__WjW=&QxWCFVXpdpohZ=&wbjqjFXieifXo=&Wyxd6nYsZiVre=&RwIeDtWnlVnpn=&RXJJTtWWrYeoq=&pPJSSlYiUZVlg=&IdMu94VaXpfbW=&vzOQRsYXU_sqh=&nnWuloVVrplWd=&dQcjD7XrahUhU=&nyqrpCUnYVqfd=&WwygArXYbikVl=&RfvcBBV_o_Unm=&AmbMfxXkhdheo=&ILMnNHVsf_sni=&TZ4vYKZXqWihW=&kzhcn8Z_bVgYY=&sF7Cq9UdfZghe=&RmUk56UXsUYog=&7pJnDbUal_rsU=&GdSoJmVsjnraf=&sRcTsXZlorjsm=&4VUnaXWeobjrU=&Uzrjt3XZjXZVb=&MNYzQoXVfVpme=&ShjlOGZbVmXbr=&mPvTwhYlbZiZh=&ECwlYjXdYfrlq=&JRwlLmYceo_an=&ZlqnVoVUrlhYl=&hLeLBTUcYisfh=&3UtjUxZsqoZXj=&vBkZDjWUdhhZo=&mnxuUSXXYa_rq=&Fr4xLSXiaqdq_=&yfkygvXrirbaf=&LQHVM7XhpYjY_=&eQdeqMUahWhnd=&yHXJsMVcsdb_p=&OSa9EdVrdaljl=&nIkStgXieWfUb=&HjWlsbWismYob=&zxybJiVWZchln=&Zlh83XWnXfmle=&zdxZVIZZqpmlW=&oYh2DGVlhegfc=&ATBcuoUdkibl_=&CDRVlLVYcsmhm=&RBuhbCZroWlXj=&x899dqZWhmXn_=&5ndyYhXnqUUWs=&votw2dUWbgnno=&eVey4hXXXVZri=&XqAoLFVekYrsY=&m4_ORXY_ZZeVn=&9Ax68GVWfhUVs=&Mc8ywgVoiqUlY=&iYiYsmWddVaVh=&6Zqy98YamgYYg=&mZfkK5ZpnUqdf=&_euxO_WYasYdr=&KU9FdIYdjZqbb=&bE6jYcZmaVmqg=&WwuPLoXkecfdg=&aOy275XZXrksc=&aifC4JYbhXgX_=&LZxpBlWsmjsYi=&gSKyKdVakrdni=&AZMiOXZebXXgh=&pVuZA6WWYdZhs=&DECOsOVsWkrfh=&Yz6hbTXkh_oe_=&_QpyMLYZpdmpl=&oPVPHVU_r_ZZZ=&bl2nTuUgkslcr=&se9rdxUgiWddY=&oPolM7WaffgpU=&N7cqefVXgUggb=&OAQMBPYqlffln=&xev3BPYsZpWYd=&cFaEdHUfedkeo=&puNJNlUUneWVo=&xwAHC9YsWZUa_=&aNLRQXZYVpkhj=&M4BSdTYhcUffc=&2a5wQNVrrmhWn=&lSq3n7VekdbZl=&Zx5ZY7XsWVpns=&d5iBYaZcopqmr=&4YZkwpYacgdZk=&NLs6nLYdm_jdp=&chDdjeUihrXmm=&SM8nZWVZWrgqp=&67O6w9VknkhXf=&KCH9lBVlUrVXn=&DPAe_BZ_lkVgb=&WPT32gUeslnln=&P85Kb2UqhVree=&U_cGypYffhijo=&JaH2VuUfegb_j=&qKZ7mwU_bckhc=&FCNrtKYXlYbmi=&8MrnlCVjrpXok=&PbkPWHZmWisma=&SrDHeUYXjnsXU=&Dr3vDrZhfnaq_=&wXzr7GYdaVWjV=&Ujf86XXdlda_e=&FntoRWUjbpUrb=&LCaYwbYndUrhp=&WmAprRWgjkUni=&JM9sRvVgW_gbo=&CVefzTUX_oalf=&fTV3bZVgbeidl=&7zLH6OXaXrhXe=&pdnl4gWiZX_br=&bm_RMjZgoagbo=&SbJjpWVV_rVcp=&wFLgaqVjslWgq=&2WVMB3Zs_rbXi=&GW48uxYgZed_e=&_9KC4WXYmXhdW=&BhLRalXloWkoq=&zW_R3VXWVcWjl=&kk6JRFUXqjchc=&LAQckVXWqZUqp=&GRJO3IXYlecbY=&NbWHDYWWajbfa=&rKlUR9YVhZhdn=&9FQLmpWWe_Yci=&lQPH9MVcZimXr=&pblACXZnbepZW=&WhIqnCW_inZXs=&snRznuZ_mfWfq=&MuI4YtY_ocogZ=&Ddohy5Udekdnn=&csaBzPXWpimgs=&BYPxrKUqU_Ygf=&cpRYrAZqqgYZk=&Ss7BqoWrXgYXl=&N5Iu_XXhlZgif=&Td4qVsUZbdgjn=&NkHJFaWldoobg=&jR89hUYesajii=&MAP4BIZhUVXgW=&QG8z9jVYbYZeh=&ggqtbUUgqilXf=&rcXeunXadXqVs=&VrHAUQVbpmsVW=&hwNP_IUYchjdX=&qymNDZUs_jcnm=&ude_eaWnijYki=&DyL9SoUklelhc=&UhdnfRZXVnqW_=&EuORcAUiljisg=&8IAIjHVs_jXef=&a_PWY8XpdgiWg=&ZgGdXHYoXihYl=&9pVbiqZjgsdro=&jwJZ9fZlkXkrj=&yIFcXnUibefao=&N8wCPMXkg_ofo=&ZfdE6xYhsmkfm=&M5asItYprcqZp=&TmLxJGYdlfjXo=&cYRsj9YlsfW_n=&Qju6euXYXoncq=&3vpcKJXbkUfli=&KdB8cAWWgebor=&To8qeLWdfgXdo=&mfVlWiUloVZWV=&Hp5QCkZYXWrWi=&j2qiuQZUrjlpm=&cVD9g3XficjnZ=&GZy4bqVpZeqfq=&2tyeLHXnpclno=&g6K5QnWdonlZj=&bwnGzgXmoYdqa=&i8ZO3BVafZsZs=&e3yCzQVoWjghV=&AFtgtwYiYdmps=&QSe_IEVVZriXY=&J2cO8IVo_VWnf=&A4TDtKVlrrUmb=&SpeOsRZfXmZgn=&dyKjdhZgahjVr=&Q8dKEeUXiVhhX=&6rpGgXYYimbpp=&QnlCPoYhWghos=&P5CTw5ZifYqfe=&WHayRyUlkXppn=&dGtNW7Yfflnlh=&slCRvVUUljkqf=&zlwjpSYsdZYha=&IRQAgUUbejfdq=&2dlvReVmbefYV=&ydT3NFYp_ibpk=&FlRE5oZaVamUg=&zPscH7Vrqfaih=&rh_sxyYcZdqdl=&bkDQoMYgqckrU=&NQ4fPsZiaWjan=&7zBSwjWUkicnh=&boIaSXVsbpqXV=&WaGb3lXapVmic=&nCQOC9YcZoiib=&7uueneYjjXeqj=&9SH9JbVkckVUY=&xnj2RcXcZamdr=&OmzFJ9VX_ngb_=&kuId6AUeecibq=&Q5V8yRYlYYrjd=&kgMpp7Zprgneb=&VT6U8NWpldWZa=&SKP5U5WVrhlgg=&7ORv9XZpnZpX_=&PffMAGYmmj_iX=&OoxD4hYahXqqr=&nZXAWVUnVllUf=&K4YcaqUjihsYW=&3fcNjxZioeqlf=&m2bq4GZUnUY_i=&6TxisCVYUarlb=&6HZkBWVqieWWi=&pOwtQsXXlssgs=&hJyC3SZnfoXWb=&UiSPfTXeVUnYp=&uLZ6EGYajh_mc=&2jucAFWcfgelY=&5IONVNWXnpgjk=&AsI8eoVrZfZUh=&7wdbeUVlqncog=&3xE5UIUndifWr=&EBDVcYWcsriWX=&hEk2yuVoVrrjg=&aBwK_pVZh_WUY=&dZ4ZlgWblpsiV=&MPakjjXmXZbfb=&XzfaE5YVsYfae=&E_CFgKYY_b_ji=&nmyqKmVVagkUc=&nYYOeJYqflbea=&SpWJyrWqZqebq=&OggETbYlocell=&PHqzLNVidkqrX=&aRXO8DWUlUnbi=&2RZhOPYnjnesp=&JSjHkcYahqjZZ=&ZxLKZEWaeagYZ=&_lvcxoWZkikYZ=&Ofj5cpUnekqqh=&mkHPnaXo_bboZ=&fnslSaZdcojpe=&BB7SHEW_mdhdn=&W8hOhPWhZqa_p=&H7uOwVYZeXj_k=&mstzWuUbiVsnY=&hI46uRYgidXep=&o8y3bdVmlUelf=&J77iu3WrfaWi_=&YTaKlqUWfpnqs=&EoR9cuVgb_p_Z=&nEzE_VWlrddWm=&ow5qhvUao_sXm=&WXpMAxZlks_mW=&AoOYkWXpmsYeh=&uJkWoZWjnpias=&lORPP4VpZUchY=&btHBRyWriebik=&YimVW2XWdlWXV=&43FK_oWepVYlU=&9kseSAXrgWfrb=&IY_q3gXgrcbsa=&k7F4l6XbgrUki=&pGu9JEU_aZk_g=&aGscUbYmipaja=&kKF54EWb_Usks=&7b_ZYKWiWhama=&aqAsRTYiUbeZp=&3aQplcXbfVWmn=&smpbYYUerhYfY=&MZ8oIkZpbbaXm=&9YHH2UUZiUfpX=&G2N9ZsXYdnabU=&fhYjFwYgacljl=&fdKHY_VphpdaZ=&IMAQD7XdbZahl=&lxUrzdZhgXgej=&bqWVMBUdonihj=&iXyTH9YqegksW=&qe8bkkZXlZail=&jWcI5vXZonjmr=&iCIQgcWWjYjXU=&kazwPcVWsm_pl=&5HtnLyXidUjlX=&u25kISWZjnasp=&56ArAPUkgebhU=&VpzfaFW_mVdoa=&5huyMSWjel_dV=&G3ujJzWqmanZe=&mD4TOGVaXimld=&2Eus8qUflqgbU=&5gGLsJYcpjgUZ=&uyCb2bYngmchm=&jSMetHZUYXrWn=&dcSWYgZZlVseg=&F39JxHWsecnsg=&BrIvTyUgi_flj=&37HVmDUWhWjXb=&jWQWzuVUlkhom=&tJu3dbZfmlcoc=&7FPx2XXokZlbs=&UcYYNIUqqpbjf=&L8TKagYiVqfai=&iUtGJwZ_fVqWa=&IMRdzbYlZWYap=&nZZfVcUUXbfrU=&xmckYMVbdrasW=&nJHAm9YkroYgX=&2HORkQU_Vrran=&AXnQv6UgVarba=&tgA2CCUnegncn=&kYLOgDXYbYZci=&PGHmE8Wqqojri=&YhI2rEWrfZYgb=&tIUUbSWpYgVeV=&8k7GvLWgmgXdi=&g7nm3qYXpbXZZ=&iuWIvbUijrjUk=&NJTKlDVpXblkh=&XzDAdEXafoUbY=&wXc_ejWorZarm=&gsIgrtWobWco_=&S98EDKWmeisrm=&lfKp8RYhmpjXs=&Ul7CsxUqcdisi=&zxL26fYnlnjZU=&RuqrG2Yqpklo_=&22Ji6MYpZolXh=&OuFZdwYdiUWX_=&vEO34YYmodZhi=&IlI5TFWbfWibp=&tmqTyCVjrZqWb=&tjsFw6ZZqrZcl=&WxTbzLVehZeh_=&lE5ryaZ_kdjam=&WbmxI5ZggWonX=&zXhqTPUebUfsm=&T65PbEZVcpqZl=&IUC6yQYVhklns=&uOMifuYefoasf=&CdKuo8Zeahanm=&Fa_SAEWscdfhl=&jSdjzeXXcloao=&fFY6G_Xhkaror=&MZw7mwVaprhVl=&lWbx6NZjscpmp=&hmfB_iXgqnWlf=&ySpNoeXlkphsl=&gRbiJMUgjVk_a=&Iqf9IwUlgUXgW=&8WLaQqWfh_jlV=&AbdOfTXWikYpl=&YrmOMXWUjhaVq=&uZxXcRXiolojW=&CMGgzyXkskdnX=&_8TvzIYbsmg__=&AZwkzyWckWrZf=&NksqNyYjrkckr=&9pU9m4Venk_lU=&WSGBjIUVfUcXU=&Bka5zbXdscpoZ=&SvSKf6UjhUidb=&24Jzq2WcgcpqV=&8DMylGYrek_Ub=&RcmCaZWYsliXd=&Rneo74WfUrdlq=&gUBxvJZYrhkZV=&lqXidlXbrlfYo=&qAm58fXs_cVoX=&eChaBOVrkbsa_=&8c_pbaWZoiYng=&ZJ7L8RWj_m_Up=&lbGOirWfirVmp=&lNBO9QZrjbnWZ=&emG5WuXgW_Z_j=&5joDOOUXrUflp=&qg5c88YrZfVr_=&FTIr_MWproYmi=&aYPXIAXXhWiia=&lqCI_HYjUenjk=&rc5NYrWqYlYar=&PIWh7gXVckjhX=&FimRJmXggbjUZ=&myKj3xXZhqfZi=&fvwaxQZcbah_l=&klG7AuUWVWapq=&5tS3JSWbp_XUY=&KZmpMtVghrafs=&3PmY6MUapbYsr=&qD2YaNX_Wlnds=&Cake6yWeqUWeU=&7OfSekXnlfnbi=&cqRXFUWdkYWkl=&s_z8WzWkeqkie=&mIEtgSYfjYjUX=&dkeIXyYndhWck=&9sXzbXZqXllkV=&ensrBUZXjedcm=&g82bGrZrVcUi_=&4KBHMtVpckafe=&aqATicUiXYZXj=&tXS4vvUViepnZ=&7wnXMlXZrdfYj=&pETTiDYpcYqsY=&wc8UJFZXsipcf=&DubDYAZignYqc=&fQavFkVrps_hg=&WP52CNVqbdhiY=&3HswxOZiqVfqi=&WJ5ECsWWnVjbm=&299nn_Zjbjqsa=&hXbtYjZYXjdga=&jZDZYYVbYb_ka=&PUY7zVYhjchWp=&67lXEKXa_Vssm=&BfE6EaVdbWoXW=&BToQydVfgUrmr=&qLKZQ8UjppnfX=&8hGslqUfWlhZs=&q8f6DzUjgrknj=&XHUJilUVbaamn=&dCHccOYdWaYc_=&LwKVEmWoUkgon=&yobUehYkXWqlr=&G3YKWsXmdhUbZ=&GaOkF3Waechkh=&bNxs62Z_kZmos=&bHtawFYrrhs_W=&cUl9NrWUkrsds=&SS7cinUfk_iip=&OlqCerWoaeWoj=&qKgpjmYamlpaX=&tbqwNIXiZpdmY=&fyG5FUV_nsjZh=&yfRATLYWbgfdo=&Iws9_BZkWqhVj=&7Ajm6cWhbVqai=&C2xTzMU_fnejo=&Bppc8aWoYloii=&CAoiQJXlljrmX=&V9o3LiUmabcdX=&NaPJHEWVZchnr=&JRnH5WXiobjme=&ditZlmVqbliXZ=&xi6blFUWX_rrZ=&BBiwQLYnn_mie=&WG__2dZpdhkXc=&jQEP6jY_lasZb=&L3VR7gWoqdVgi=&82QGrWYlbdbpr=&KQmmRwVjiYmnj=&robGxWXhaUnqb=&ZOosGkXnX_Zoi=&ydj4JKWiVXbeg=&lzioJdZdYkakn=&JRW52lW_bgUhZ=&tVpMdEXZdUsjd=&iWRf4_XcgWsUd=&lI6EpwXVafXbZ=&LvYa3tWk_Ukgs=&eOMUZHUiokXse=&pJByhnWjiibln=&_nNciaUXieZ_Z=&ITu7y5ZmZfqZk=&rHLDkGWqZskVb=&UdEYEKUramXsg=&LnLdEiWgqWbbn=&Kj3fVgZl_daUh=&elS7AMYY_gfcV=&PvKHstXkXZsUU=&tTvhHSYnklXnc=&IM89LcVmkkalX=&sD2htqVceroaj=&eFEdQCYmfWclZ=&sjxQ4uYVsrb_d=&RSLp3wZXWsbWr=&BRDhXVZsqZeYb=&7ViuFDUnle_oe=&6YQ8eWWdeqnde=&4pembWVVpeUbU=&pZU9pyYoZUffb=&srxiJaZZkldsq=&IWqIpEYkZW_fk=&s6We4uWcinaso=&F6EmD2UqplXnn=&J8u6t9VgjZnbc=&ldSjqfYiccrYU=&3PeNJWWpYskVk=&UG9berUcsrfV_=&EzDv3vVgVXWff=&V98tVfWijYgcf=&F27jEWXdmapfa=&FnYI99XjWpYrV=&MbVpsAVag_iUf=&AZewCbXceXrqa=&Y4hyPvZnVdpki=&pgqAVnVUrlUmj=&TKjz77UbsdnZk=&5anwrqZejXjb_=&SdqmbxVgXsfnq=&z7wowNXsrYksp=&FsjNwJUjkdccl=&doagNZYfroYYa=&HHSYw2ZlrppWr=&y5MfDqZibWjcY=&MIaxLjYiYeXXg=&AKDrVsVXbgofm=&W_XJPmWmmnZes=&j3i_QxVXbjlZX=&x6iGsOYfcYarf=&VrD_ygVWZ_bnq=&iV93DzXekWllp=&jSXfBPVqYkaYd=&DYuRlBUqmlWhn=&9qCPzeVqiqg_e=&66uAKjVpii_oo=&Dv8G_cWXXhXbZ=&UPLMcQVmVrYki=&4NKSo7XVaXppY=&hEYedcXYbfeVX=&aNnKYbV_WrjZa=&YzvvipXkmsVaf=&cjuqW9YsmWabd=&5fG5CMW_rjVjW=&Xnqm_GYmace_d=&OROzmOZrjU_es=&I3vUdiZUpqXmY=&sHL2fPUbccs_X=&qo8olNWhYalmk=&a7EZc9VicVadd=&WnFXkNUoocZrl=&jBPiPqUrbqpW_=&oKC5rDYqhqVkp=&Xlg7lBY_Zinje=&Ho5IHQVnobWm_=&EicpchWUX_iam=&uIKMhhZacaWjh=&K_2YIwWhbmgaY=&iO8HkGWojsslf=&DoRqArXepilkZ=&yB4C9NVahVl_s=&ud5vfbWlacqnZ=&FCeVQYXmdkfY_=&6nF3ZUZsghlYa=&FKqj65Xdhqphd=&xk7SJbYqalfUs=&tuWvw9UUqraYU=&J_a5rJYopVgrb=&xyGwMYYXikgqb=&kuHDlXWsrehWj=&2iPbnmUgro_rd=&J4jGU5Znis_VV=&t2nzWvWrUXbml=&kJ68GZWZcZ_bk=&iwmiIwVaZaZdn=&fs_UjHVpcWjYX=&7pPjxkXXehmpf=&WFby7uY_gmiqr=&CV69FQXWUlpWX=&Yl2Xz3V_dWiWV=&ySAdPSVnoZoiW=&vCUpKQV_ofhoo=&iPbMZjUUpUXmV=&iQmWMkZgopbka=&YOJIfOXdjpXhZ=&5hpSVcUXZq_rj=&99gKCZZrmjkon=&NXmCxzUrkXXlZ=&q8LCbCXpfdYZp=&hLFCVkXocZqhU=&Q_duDqW_fbicd=&lFncvcUm_cj_g=&hgWdNLXrsckcf=&yFxzgWYWe_pab=&qKrmKKUhYahfh=&XkPVqxYanidZs=&TutgHpZiepWib=&OANr5KUWXhnak=&qHBR_VYXrji_e=&thIOwDVakoaiX=&c7dZoDZUamZek=&4qHHoKXaddcaZ=&qF3L3CWjalUef=&VcbjqzXYfc_Vm=&7ytq2sZWhkVVZ=&7AKzFaXbp_bhm=&V53J8DYUaqfVX=&IqdsiIUdsnjZk=&sb7YoJWf_bbnd=&ulWIaYZVbr_fn=&OMlIV_Z_YrqVa=&dqyKMFViZZdef=&7XPnzsZedmalq=&5sf6OOVjcankW=&gQNdnCXjpbXfa=&tChivUVZgpedU=&U_7Dy8ZbZoebj=&LaiFUGZqWajVk=&mmz6VWWVbhWUZ=&26JK6iUksVkcc=&Y5ATbsYgpeniX=&qqigF8WijaikU=&pv4lZyWWZslos=&hsbhG4UZg_iVb=&6LscdLUjbfXhq=&bHPsWBYfjagmX=&V2zAZOZXjYdlg=&ERVOwGYifllic=&vwwvE9WWbgonr=&rduVkFZebrUgU=&TJ6ybdZgg_dUk=&NkwgylWjs_ifV=&ppk7j5WeXmhfr=&_i2M26Xibcrps=&MFhOgTVqU_nsq=&TlXhyvYhienea=&kuIASqVY_V_rg=&EPHchkUmYfdqU=&7MjJpBVnr_me_=&J23PYFWZe_dgl=&L7ZUwTYcrmpoa=&bH5ffgVjmcUfm=&bJrUL2WqVZemq=&nuvVGYYbhYiUY=&2R_3UPUqcmYXn=&7CxEE9YZmVfal=&yjfdLlViUjoqs=&vILQSyZWfeWpm=&IWedLoYncnWYl=&qyFcgbVg_kYWU=&EWp7GjUqjVWbi=&uuGJ9HUq_oleq=&I2883OXencZjq=&boNVyFVbWdjWb=&2jxRFwZo_VrZq=&AeuOIjWf_cZYk=&nFwkE9YXpZrUf=&4DTBFsVedWiqo=&DQ_FfwXYYfmff=&9qyLO_UjsbZhg=&8DIqtnWemYZem=&VnkGMkWVWskqm=&3ZlatHYYUoabe=&5ycr4gWjljrih=&gePrY2XabimYo=&23kp38VlfUkon=&Xapy4MYlVdVqa=&GpwANXZopssjf=&gV95blYmngqWb=&DUUZqtUdlfjm_=&W6LkRPYabXhZf=&6VIA9qWqlaYrr=&hJrcfmXYjfZ_V=&MzFGz2Yslsbba=&qYlRLfWVppWak=&QDLo6sV_bcVVW=&z9JgAnYZbobgV=&HzzMQkVhgWlZi=&Dr3vMYUc_m_eY=&ImVFWNXbU_Xjk=&rCIag7XVonkin=&SngiB_VhjmWgY=&qCaxOvYnVmUkl=&aD4LhwZeloZXp=&C2MJEUU_n_mUY=&VGg_IrWaVVbVj=&hZgxMSWjmYVco=&mvNq7fVdfr_aq=&jJq_lXVXqhkce=&qfOZB5YfccnmY=&Jni_VlVZgXUak=&HsqzgzYpq_ZWc=&I8EsyTZar_bos=&mpvFBoZsaljnb=&VsqScpWjosYos=&8GnUpbXsVXUbl=&Mzb7omWYiX_jV=&SmEORuXiqqloU=&UmCCIYUajcgss=&nv4JgYUqjsogg=&r5BjKaXbeonhi=&vm28cIUlfqpWf=&MHjKNjWgpVhff=&WKecg5Ummnaas=&pEJzBiUikbYbZ=&qGSFf9Ulsjkng=&mLDZbgYrsqkcc=&qO3Jt9Wqp_faX=&XsCjdsXapbWgV=&jS7ZmbYUfVZVc=&8TCzZHWVfkXX_=&xnoQyNZgmjfdo=&dxC4XgXdglqZh=&4u_JrQZbmqhdm=&7uMrmfYogfnb_=&f9FEevUnihXif=&3xEi6zXUVjqbi=&3AZSh5Ubrssir=&HFsfpKZeqVZso=&Tn9tQgXee_gUZ=&LIkbaIVbjjgfa=&qbMBzfXqljUes=&MZkYfmYerr_qZ=&XDYYwEVUUXVVV=&IO5L9WXopeX_h=&txY2DDXc_rapd=&zEhbjfVfmnjjl=&HmBKPyUdlfWor=&LIzaEaUUprcqj=&JpkEKCYVniZhX=&KfjTvfVm_pdsf=&H8IhnoXWbossV=&uJVO9TUfcogoh=&RnIZ2SUnZgWXo=&4D24jMUXVprnh=&piOcKDY_fskgo=&gbhbZiZnmiXpf=&JLDeTtYjnmbal=&MsjVIPZmbpYkf=&EkZYtQUXceig_=&GxNZoUU_VXrne=&G5u7vyZdXcW_j=&Qz6n5nUVifZph=&lEPxHLWmcWdhm=&2Szq24YcpVras=&9urzxPWhcgkrr=&rw4WTjZd_VbXo=&t2PEfAWZ_bbgs=&vOfsdfZiYqssi=&_4gizZWacYdUb=&uMgzDfWWkdWgp=&YZuHSXX_ijZYZ=&gvkRVZWfgZjXd=&5833ZYZpqm_sb=&zJwcINVjZkqWf=&NE23WZWZcrgkk=&8g8sqiZpnZZrV=&vgf_zJUkjfYZg=&hh83p3YsgkUfg=&p89HvDYronUWY=&dWXNeQUbakarW=&ef3keMZjeVsgp=&2Kolm4Zhhrskg=&vNDZsZUVfkfbq=&DGrmsuYiiZesi=&hGIAIQZlcjrii=&ZuUbFXV_ldVWV=&cmE36zXipijVl=&EScixgYnksdUk=&GhTYoZYlegVoY=&T4Y9bGVcZcWom=&ali7pQYfaqaiY=&di2YFcXpdlfYV=&cw2CEwXkjdbfb=&R8xf5mXcbhmeo=&sPMHi8V___fbf=&74JfiuVocsVXj=&F4Aqq_WXqqidb=&ImFXlhUgdWkio=&ztpJ5oUsocrZb=&24NuGpZb_e_Up=&j4oXJ9UVZf__i=&rH3BVNVmnmXaV=&_uG9bAYobfsdl=&_7vYLDWdnjpfl=&FhPxywUdXXrji=&tjthmfVlZWmgj=&w_EezLUfbmVpj=&IDeirqYkbrZcc=&2WAvdkYadnUYq=&O_TC54XpnUn_h=&PtCJ72Z_ecrUf=&7VkxsSYndUnki=&Wk4JUqXWfqfmq=&vWf5IeUiVnmjo=&QfAdP8UYkVXgX=&U8yox_XVZrbhV=&yWnp7PVglbUkp=&Z9rFwtUqpbhbr=&HI6wpHWfapfbn=&NT25_fWoZigpZ=&_FyNLMUnZbnkU=&GhAk9hWZmilsZ=&oTTXUTXjinYqq=&AejxbVWXoYdel=&4jJBBHXiaUlqX=&wEKOIHVrgUnX_=&5_SrP4Zbfgasb=&LsDWGtXsmnVsZ=&lLtPRzZeUqocY=&kU99auVrnpqbg=&cBKINPXbjXkhn=&gtlEf2VnnVmcb=&2OwkJdZdnpdfs=&_lekEUXnr_Zag=&WSDERUYcdZfsg=&U7EcLSXaogpfX=&d3kJqkWXgrslg=&YCSno7U_ckjfU=&Nfi8alWq_qcdY=&mLXiBSXebngiV=&cuXk4_UjjrWcs=&4SJIeqYYrVXUe=&knRJ4yVgiokhn=&b_nOPoYgmYWlf=&cC2Bf_YbZcrmp=&VfdcBbUZbqlbs=&zpZuYwYmpnqgq=&dJMZrgYjgkdcV=&VFThpxYifshZU=&UeFu9tZjnXkVY=&euSOL5ZWihmjh=&V4ygmCZkcqmsa=&JqdGDoZikhaga=&YadLHNYkse_Wl=&sQtRQiUZegXeb=&LV898UWlfVWqa=&8NjX4AZpZdUbX=&wobkLmVbYVocY=&oheoMCYYsfrsg=&OA5IExZfmbYmh=&k2zn_FVdXlUir=&fIqoHyUpYpkUh=&XLY_n4Vjknhhq=&jMVVWUXrZYjnX=&kFaGSMWlmeUiV=&ZCkSXpUi_Ulrs=&P3hQV9ZYbefkp=&nOsnS9Yegohiq=&Vznc9bYUleajZ=&vHqtpxXkmk_js=&FlpdH6Zo_Ueai=&mTGJ_yXgakbmb=&eNm4m5XhshabX=&hAlTXlVYpejro=&h8jLkYUVpYoZo=&anpo6XUgkfldm=&gdJXMYUlhqekW=&4sKhM2UrmqoWd=&tuRZ9pZqgaZeV=&xA2PeEZjpbrgX=&gf6zsGWnZZ_lU=&kamK4qVdejVW_=&TfDChTXcsXlni=&3misyhYjeWkaf=&knOUAWYXUVZrq=&PRurbXWihcsoX=&3LYEjMXpsmfUc=&sbUKULX_UdYcV=&EGh_9kYYiqnml=&Op6ARoYbZaifp=&vMRke3Wrbjake=&OBemO3ZXmeebl=&dqQEixXsnikYn=&8j7qMUWnhqkbe=&7WYhFfZXboiep=&SDWXbOUbXXhki=&K9ztMAXWrWVos=&kcE8TDVmnYlkV=&3dhnrWWhpYiel=&WysMoRZrqghgf=&ToPVVgZXZjbZr=&aiQoSrYhopped=&W4EGVjWfU_jok=&k7eyZjZh_jpVi=&uXV9mpZogkaVq=&qpGwt7YXo_dXo=&gN9FmiYYefVqf=&NLqADnZcVnUlj=&wUVNfXUqieWad=&dBB7nRYWniicd=&jyAxSNWUmpYil=&vH2JX6UoUgUoh=&ioUwEXUXdkn_p=&9mdBDgZfZjUYo=&JYUjriUVjVjZr=&kIIBTOXsYrVoY=&bmkTc7VWgoeek=&qLHQJ6Vikbgan=&NX2fvKVikXgms=&eUvwc5Umneoli=&EM5AbJWrmkXVm=&gIbAL7VhVhoUp=&TvboWAVkppoZs=&MBycCPUWZVrdV=&TZLH2LZjifhni=&rvu_aVVdrUqkh=&SbisaPUgnXqdq=&b56jcJUYapUgm=&vgR4GRUeYWb_c=&MDmSWxVpWUfWa=&KBMHwJWikYVen=&rvjdMGWrbcdWa=&wmvOLaVdejinV=&nKHQK2VVWdgUb=&c8sc6RUXmXjXW=&TBgT98Xpp_W_c=&r_LUnxZZWfVYl=&vOw5dQYikfeae=&tTiehAZlpgUps=&4qgypcWpgifrc=&3AWEikXaqprsa=&OHpkWuYkXsesg=&EZrg_tZjbkhdn=&2LpTLfV_jjfXm=&TT_ZJWXkWpknq=&4midXTWnVYhqm=&zQenriVsZlVZd=&cupGZBVbjlXpq=&VAJOAoXZqUX_e=&RRvrcFYUhWlZr=&tbq25RWVjqnZX=&83wCo8Yllrehf=&KTxsuEUl_jqVU=&cijhcmYngapfm=&PIGqtmWneViZo=&zIA7iPWWVdngm=&PkcafbZabsesU=&FMDJskUhjV_on=&TdD37YVqkh_pd=&2Bi7tUZXZkYXg=&Ifiiz6Ye_nnVV=&rgyQTyZbf_kbd=&CMmZbsVsloqfW=&fQ35kHYhqUpah=&SWZTVJWlXgVjd=&pu32A4YZgaejq=&Ubat9NYepU_bc=&ZbMYAIU_rk_Wq=&4HixP4VWoVb_f=&qMzo2pYjkqkqf=&9vs4ZYWZlcbZi=&QotF43YjlbWsl=&vyMY2iYngaqWU=&_SDiT6Wgi_Yce=&WNWVbkWrUeYhs=&99HUmgUfpZoUb=&lkwT4_Ykikher=&UaJMiDXrrUZah=&88taPrVmjeYkm=&T9vLcSXaksVkk=&SlTZJKVZjqhli=&5jplZGUkeaa_h=&wRD5EgXVoiXem=&bBktpuVarcmcZ=&e8gxkTWpZmsqq=&c5zRS3ZWbllVU=&pEL3JaVhphpdk=&s8NuDSYgXoonY=&LO5zagWZbhqii=&a39oHcYnlbUbU=&4NZsKKUdennof=&chYKvSZdXWcXl=&5Jyn_DVafcgdn=&i4qW6TVkjcXml=&Mya2qgUde_eUf=&n4mhrpX_mYeoV=&UINe5QZgYZjqV=&JjRGBeZZWUYYp=&vQ_UzkZU_mZfq=&IqrlNOYXU_ZnZ=&yL4WRRXpcWmVe=&KxqxShYZdanpc=&3xkTaMYbXZfqj=&hp8p4rXkWmqjZ=&xbNIJCUYhlsdq=&VDJF_LYljiiic=&EZSVxJYmmnhar=&6nZwbqXdZWVn_=&6kk4DAXbhUroi=&yREsarVifmdks=&v8muxxYmlgmhn=&u9ZnAFXkVjhsi=&lI_yj6YpsWnak=&CquMTUVlfsipk=&_i6MP7XY_aahl=&ZYmWGbUXXsbVp=&JODZylUr_hhag=&9jQ3j_YWUnkZh=&grNYFdZWVUYfW=&taHeLSYaZcVci=&p_m6eoZkeYsZh=&CWwXjlVsglsWW=&U62Dk4YmrglgZ=&eoR3pmYhkbgij=&hkcPIAUmjXXfV=&Gqg3lkXjbkrsk=&aCQ6mSYqWqrah=&HTlkI4YfpZkVr=&_sdwiFYgcrpfq=&yWVg9EZkgjjkj=&8KpXcxV_adpci=&hTjppEUZjZros=&HeiDnEZZZdWrn=&bdOXfGXeqmqa_=&BubAhJWjfppXs=&lgiLcfXqsXsek=&IRmyCfVepWseZ=&u9zkLRXljYsch=&HEZUnmVcVfrgc=&4hl8nHZ_UpYje=&UoZ5moVXbfpah=&gAnamRYmfWjsZ=&aVH5YwWrVadea=&SmDBOfWlgUYZm=&wyWxTPUgWYiae=&DUQRa5Y_caWZg=&2m4f9yVcYrkVX=&aGLqDIVclWdjh=&rsGwmTUfenofc=&2OCIXSWsfZcZ_=&gXqOjdUmgkcc_=&_QYALQVXiXcbi=&4mofKFVpneash=&v75PztVlgghrp=&R85tKjXpWrplm=&_4igiKZjYdjee=&OJCDHeW__efid=&5pLA5JZfpiocX=&7IjWKxWrmYlkl=&8o54R2Uepgiq_=&R_LxEUWWgqWlb=&jXPMUTZbpbobq=&Y9CnXyVV_ohcq=&dsmgNmUiefrsX=&DlIzg_UnfaZbg=&DZRg2yXhsoYhg=&yaOEnNZWilWpq=&fQuKIaZcUVYqU=&bB9UZ4ZZqmsaZ=&jiVmRpYilhqcl=&rELSobUdlXfVr=&_GJdG_U_nXefi=&QR6y6GYibhbcf=&ZOytlbZssXbrn=&SQwTMOZYjejgn=&WF6RVHYpcneYm=&e_SrZSYsmejbV=&gs8TzIWValfZo=&wyNX3CV_mch_l=&Ak9G2mYlcZfn_=&BKPLAWUdhipmb=&MsgCr3UcUWWoe=&cDZ8xPXsgbcae=&D4a8UXUjVqghU=&aXaz4JYXrWrfX=&Ylpwn4UoomUro=&JQhRSYWibnljm=&oNcIwBZesjacn=&5vtKpXVdsehgY=&oDCJVBZpfmniZ=&UlwSBNZbXZerp=&CgUUDFYn_fisf=&7lQbnqZiseid_=&ZFhQ3DYl_pprf=&w2bWzDZoZUirm=&_jFYz9XdnYsrm=&e_hUywYd_WXmW=&fVIXVOYef_dbU=&iMjfWZXrfWebe=&EJFNjNZfrrVYZ=&nLZOaLVgjaYoV=&Mvz_4NZkqqiak=&2varruYqhfirq=&AzgUO5Viqlgdr=&yFQUbDWXpZmhs=&PagrnZW_YonXj=&UQ6kVPWYUmpXg=&PCm5AZZhjmY_e=&YGGMM2Zdseabp=&FOO6cxXhcssgs=&r2mabHUsaolrf=&wbUk_4VmimoYU=&vDCxT_UqgcqkZ=&zXnxKvXerhqnm=&9jGfOOZasbhog=&kPsLC5ZUdXqgo=&KyjZetVYhXdrh=&Kp8W2zWjYrhnX=&kTlc7SXrd_eoU=&eitC2fYWj_hmY=&r_jvUOVZkWqmY=&ufMJlqYk_lYWj=&zpoD8bUngacfe=&ORfjNwYWlZcna=&dvudQkVggbo_q=&XIKCf8VeUfVsr=&QTAHJ9VlWeand=&giT966VbacZYn=&aPajxEYpUZXgj=&gxLtwKYsfYWqn=&vyS7ODUncdZoe=&gBvnpkYrUoZij=&6fCHx9Undn_ma=&A4o4DbVqjeqpe=&OhwB6vXkmlrWU=&WkamhYXpWWoYm=&YuaSajWqbXlVk=&qSqQZhXeph_br=&oII9VZZYWsndY=&YlqoWWVjdnehl=&eINt9oWYdmamq=&b4yqWSXbcWglc=&vpwpSQWdlcaq_=&KCAUCyZeXjVps=&vftroYZlohima=&wC2CpZWkfYjki=&MV_fYDXpVdYXZ=&wQLBKUWWssomr=&FbfI28UXUierc=&Ck_3D3ZpUcsqg=&xfQ7rFYhlWqYd=&2KEsYgXpYciqY=&_8awBpUVppamd=&bSXh3QVWZVhZh=&2LtybhUbinahX=&Fw5K6AUVhnnjo=&Pn7e3EUdmnlfb=&eDB8YcZhflqkg=&xHBynRZWjbYlm=&N3KmP_ZcbmWWd=&qaR8sgZbjgcqW=&huxmBnXkinlrf=&pxPN3pYgcW___=&f_XR48X_pUicW=&8dGaEzViqksjY=&uDf9DdZbZjsrs=&u_Y3MdVoekibm=&ASwWueXrkgfs_=&SDIVC6VYfrXfh=&3hwtZBVqghiip=&bg6yQnYseZh_e=&KWIMHDUhifXlj=&ELDrsRZZYrYVd=&rtUePvUgUefXf=&8NGYvMWe_Vapm=&_ncBTfWXYgkUs=&wb3SXuXdsZefV=&ojHWxXZebeipY=&9Zg3OZUqm_qp_=&b6dhULWZfifmV=&QA_OvPYmWYd_e=&ltsEeSYVh_Yfc=&ZMvhPqXUo_rrm=&krBPbvVmUp_cY=&6NPfdUYcjkhgc=&WCCWEUVhlmYsW=&CEVQHeVkeejWV=&_7mH2iYrUpepc=&RXFEWHXYXhiog=&7XgeVXZhWobYX=&kBAVC5Yn_hdUg=&w_mfvaX_qlVVh=&g8jGWDXsV_pYb=&iY8ov2VWoiiYh=&yAt6aeUUbhqnk=&tbKpG5Xan_YWs=&BNxG49VWdaqah=&wkIzxHZilW_nX=&ZDR6QPVkkXdlq=&wxntWeVgke_Xs=&3diaouYeVZpYb=&QEhfqHYUUflgk=&xHqMxcYpnqgae=&rbRDfgVZYmpsX=&EBZOqeWUrskpd=&exIr8QWpsqeXY=&wj2oSFVebbljj=&aPLkF4ZbcaZgi=&7NTAkRZdeXk_V=&GIKqIdUrlhcYl=&6LppAkUoYghga=&nLOLWeVYoYXme=&jrea5MWUqafYW=&97KN5WZVVXrlU=&E3YhnhZabsYqa=&fc9CV7XVdfqXi=&_evD_JXfdbjWr=&3fGmOOZffnsYm=&jjyVKhXsseqqa=&cQPSnxZVmjZaU=&y7dvZZZX_WXW_=&2FUWrLYWZYUas=&P2u3WdUhkfi_k=&gX9tENXmfrZcY=&bN3sMaYWemeql=&clNMYBZmgVrlg=&gllRH7WkUmYZa=&3pwyPAWncliUV=&GAdQx8ZZZ_hec=&T8irskYsaYZri=&ncXrzDZilkmcW=&MKy8AHUpZWhWe=&ZutD2kXhaafrZ=&HhmJfZZUibcc_=&LKTFu2Uadqcpn=&RNxQ9nVmldqgi=&YH7kOKW_nVpjc=&mgdn4sVahnUXq=&5np65pVjklnoj=&WsSs_uYUZccsa=&gVi2HCXVqZUgf=&3ZvyM6UYVeWlU=&acwqbuZqkXfpW=&c2BZgFXmcUXcr=&LhWZaRYlXUccZ=&miWqymVrZVpfr=&HTynZAVrYmhcm=&X8MGubUfWbUW_=&LITtyhUWqbYoo=&OnK24RZpffbcU=&teMg2FVcirqki=&qRB3aYXilkZpj=&8cNqYdVoXgmbp=&kmeU3ZYjnscY_=&Oq5rcAWfZshkb=&E5tLT4VXfVXVr=&ATNiAAUpaemnh=&GdqtnfZk_Wbha=&6ELcG_Ug_rqUa=&WHulhuXqpUkce=&uSS9hnXqsZqbU=&joWhstZsmsfeo=&r4Ipt5ZWmklgZ=&WyetW5YUXjVcd=&R6d6e6XeeeXbX=&ahJ9UfVcXWrlg=&eXFT6CXksbpXr=&4nrdPgVYpWVhY=&Pt4egjWgpgrls=&x8rHlDVUlrVh_=&fMIQKeVghijmX=&yIkMTXYYW_Zge=&_J7ctVWmbmkZc=&Y4oiMgVWYkshq=&OwRRGAVYUXpqc=&FctkhrWoqlmki=&rc5aFhWfocWjo=&L9U378XYXZUeY=&EbwXphVlkcWX_=&yzjFKmVhVYfrZ=&lrkKyeYeiUdee=&PurkT7WVaWYXo=&MDbPTqZqoamYq=&jWhBXoUUUpngl=&5ppjQ8ZjiaWpW=&N8dMELZX_Yfio=&D9WfSNZcWlgYi=&fO2Ic5YYpojlm=&mOZr3TUncZnZq=&8_nRWoZhpUcbo=&9pVJRTZiZ_Vmr=&UCCU42Ullmmfi=&JDT5TFVncZqlq=&ZbDAJSYepjVZr=&wQL56YVnjcqVV=&765NVCXenellc=&vVZ_MoX_ffgno=&8KGPhpUdsd_YX=&wGHBcoWrdhcdp=&lcdUQlVZe_k_o=&WZylslZqrW_sY=&YlTAp5WWbWqps=&eQrG5EWkmlfld=&gQ8VnVZoiiWdl=&ESjP3oWaqgfsW=&PpvGWhYkmfmke=&iIsRmTW_WaWWr=&M2qvIdWWVdojh=&eLXhAlWlmrsjm=&ramzAOUsqnUlV=&hmpIjWUpdqfho=&nTdgDnVmnjorc=&PaqJiyZfkbrhm=&btliOtZqfsYmf=&vihPOeUqcrVii=&agcUfYWbXeqVb=&ghMzB5YUWggWW=&___rqlUofqdlU=&wauMt8XVj_pil=&n_kfHRYjccXgp=&CazX4RUqgkeYh=&mb2Ta3VYrXbU_=&h4BgFSWadgWUc=&4q3KjrUgkhWfU=&Gf2KlzYdgXl_o=&XzOThgZY_fgnm=&BvLciCZdrcZUU=&kiqX_wYnpmZkZ=&4lJvdAVWfVlff=&ln2h4MZskhVkV=&epPlAeZhscbef=&Lu3z2wZmpredc=&GrCk_QVdprsok=&o3FrdNYV_kbd_=&3EBtP_VbnoWmp=&KnVKroUWViVbp=&uLDBeDYesZVal=&Ml9ABaUdXdhfY=&fa5H7wZrcdm_s=&HV9ZwoZlXqirU=&gbmFyzUmeWrnU=&grlVgEYdZUref=&dggs88XmigUbi=&pGN4bDYsabXea=&h5uazQZqjcfma=&xQE5mNUhUhjgg=&opOeS_UgW_nfo=&IlWGm4UVahdqi=&qtQVUzUnraYYo=&SQlzDMZqmU_Yh=&7bUfqPYlebVkZ=&O33MXNYhhVjlm=&3ZuouvYqZgZls=&IFTWuzWofpmYm=&c5Sy5AZojWopa=&GLuoIgVmksojq=&MJR4kVXalrkhp=&uAEehIWefafkU=&BAavNCYrnkZWV=&AcllIOUdrpYoe=&i_9ssyWmXYlje=&zVg7ZqZrmWqjX=&9v4cGIXgWpekV=&ZW_PU_YpoiUdr=&CjaIeOWrocnpd=&Z_GT6UYcomcXh=&8mgfWOXcbqZ_e=&jcy6Y3YjhY_dq=&yiLQnIZdUlnol=&cOh_pVVhWXian=&yQEuYFYgsVrgU=&tIGdi_WarelUh=&3tWz52YWjlim_=&ZcvLUiZUWYihi=&XkX63xXaejfsk=&SeBxP3WkWcdWX=&2xVwvhWh_sVmo=&zH9Z7fXgahnWW=&JedbneWbUjglo=&a_zAO4XmfbmYa=&GS5gjfVdldigX=&m9v2iTVi_lZbU=&2H8XyTVproqiZ=&QkIOpwUncobei=&3dCqYgUqbalaW=&7JowKMWnrklql=&bAe8VeWslgXlf=&hh3_VBYceredh=&eK7UuIYpkpnUU=&fpZfydUfcUqcp=&r7oBLUYehjeUY=&zfsKqhYqijhY_=&gOxf4YZgZUrbm=&DsbPSzUgmieho=&9eTGOkYd_cjVp=&6c_AxhWnciifs=&I7V7ZqXaefkZY=&vaCljaZpebrY_=&R79oAmYXcilga=&DoDznrZqiliZj=&lrd9FAVgiVWmd=&PGHedGUrpZWlm=&j4hefCVqqhign=&WhqzqAXaombcl=&sHV5txU_jkjbU=&JAz8VGYelhapW=&A4_f4xVgicXYd=&eAoiioZlWhXlm=&I6mKm2YUkbYgk=&IdKQ6JWsWsgaa=&LH8CwWUkadpeo=&DP63S2XZhlqXo=&FtmimdYXUlUfb=&J4WxecWkipmar=&6QctvDY_hngmf=&J2B6R2Xaqhrmq=&NEfNMNUd_hocf=&nXVdhyYff_lVs=&d4yaQ7Ygileim=&wAzS3UYVjWsWm=&dkXzsNWrgVgno=&8lG4AIVZssmjd=&PEJC6hXnkisoj=&FTzHvtYsqX__U=&4SCAIwVjUmYsk=&JnWpQpXjehrpi=&swPZ4BXsVrXWl=&ccYfZfYrsbdZq=&JXj296Yjplhrd=&HZNVnJY_dhrks=&HY2NVdUr_hkZj=&Gc_nGBWq_qZm_=&_slb5tXnVkgZa=&ZNmqvDWaVXYdW=&HVa6TzUablmVb=&t8_Nm4ZjgUXrl=&I4IcJRVVVmeUn=&sEWqqnUgWYfZk=&KsfPrBZVsgdpX=&ylKUriWbrWiaV=&sIymUdVeeejWo=&MdgUEaXjj_XWa=&QdajbWXhejacb=&BkAumoWeWdkhq=&imcZmGVinllma=&RB_ZMDZegghVU=&ePyx2qXYaVXpq=&tEFgfRVjkUphn=&9kJLFRUkfbimp=&8huKkuW_nrash=&ewJvQ5ZaXhXfa=&uhF2BvUpkchXp=&aQtOVOVfilbds=&38IFaTZckViga=&GC7REKZXWmmig=&q_M2vjYZdphfl=&RpDMbuXsiofra=&XR5F9SUa_gglX=&BA5cHRZd_besl=&xQRaE4VbakZ_l=&se94fTXfgkjZW=&eAWE5rVqkdqhl=&gqMyToWigiZin=&g22rbqYaYWZaa=&U2xS6OXsrqhZW=&azOCQVUflUbos=&i9nYCIYklsaVi=&kgfsmSZloVncW=&enNNA5WaZoVUU=&cJbu3JZjpUUWb=&M5EYsNZnciUpf=&XZuT_ZVseeqpr=&SGACwDUhqqZ_U=&YgFT2qZgUmmfs=&_wvZ5dYkfjkiY=&KkoVCcUlfffVh=&N9mPG5Uda_fjg=&ykVXEPW_bfVcr=&w9itUnXWqXYYf=&SGvV7xUjbhZrb=&QZTQntXheocZW=&IHHROwWcUcgrp=&56KccJVpinqbj=&mr6ww_WXiYkgU=&GEZpiAZpiZbZe=&BIVGYMWqfYYUo=&d8XLvzWZUfdYo=&QKRt8MZYrbVim=&fU8L8pVacbfkd=&utocgwVokqhWk=&GkwP_IVad_gll=&7Z3jhOXpUlUrg=&kaL4jiWV_jnfY=&AAchcoUiccfjc=&eyylQiUlsdrjY=&kqL2gvVdoXWrg=&ooxdusWZjfbbc=&CuN_q2ZgdhXaX=&5kAuoDYcaghWX=&p9AFWXUbcglUc=&BsTZ_YYsborii=&_WuArXYbdcoYV=&GvRuseVXUgrbb=&5zuiXcWVWcjrq=&caY3bzUUhVUad=&Qbe7XtUoZXrgf=&YOgqyYXUqVUah=&WQFKg7UdnWaii=&QmYJj5YUlbrUg=&g8a5NpWoao_pX=&6vcWZJVZXYcpp=&7YgFxMW_gYgeh=&TLrzKoZ_dgXUc=&vCRCAEXUqWlcV=&tD2JJqVfiiVVY=&6jh36bZghoopZ=&3y7r5yUhbgXqp=&jUBjDwVg_sXdq=&FmentmVXphk_q=&rOcxIfWbnphsa=&fjhfx7YnUe_hi=&BVTwCZZUoiUdl=&G29TEbZhVVWk_=&Ceoyy8Wkooslr=&_swBleZghkjbZ=&By5OLeWchebcn=&nj3c7gVqdqnsc=&IYxQpxWdYYYlk=&4l9djjZj_rhsk=&CGiWeRWXZhlhd=&LpIf3KYbXfqqj=&mGG3ZRXp_r_bf=&LtCFTqVaWZhgo=&Rarx2sZ_UohsZ=&4Kuu_aU_ipUbq=&LoT632WaZsbcb=&GaPIHyXodoWen=&WtviHFVnb_ocq=&3h9YiPYYVihhi=&puCgQzVdlhWfe=&ZJ6kjLUYlofsU=&opZ9A7VlpVhei=&4L3USOZpiepas=&a58VdRZXhfdm_=&EcAVD_XmpmjhX=&_zZbAeUp_jnZs=&vxnJ5CYUcmYl_=&znZvqQWsjoUaW=&7emuvJZgsUcZj=&NvJcXmYcolrlq=&tOP869UY_Varl=&5TxooPW_Zhjgd=&aoKurEYX_VlWf=&J4P6yaYWhhgqZ=&c3IR3NZkrUXak=&XlJdXuXb_crkl=&O2STdAYrZheif=&PaBngOVh_YUUk=&7CaXI8ZnXjWoj=&eHD_TSZWrqase=&yXyycVVqhiicb=&ikcBpfYmhrfbk=&jWTnlUWrpncaa=&bicbO5UYpqXgZ=&VtqVZhZbmWojX=&PZdhkvVkYpqhV=&Jo6ADiUjpfYYZ=&__AzkBWcbUonh=&P9wWMNZbgnjcl=&8kB3KdVpjhZj_=&Vc9u7TUVjbXXY=&zxA35CVWdcUgj=&Srf5mQZmemebd=&WE6eLcXgkeiWe=&IOvRnVYkmlsmo=&D3TxmWZhoUsog=&zB5fCJVUenWfq=&KzmGxxYipmrjh=&2uXUk6WmUkshf=&22mw78ZsYWbXr=&Qs5Z8AVsgaqaq=&8cEA_mVanVdfd=&d5SbYEXiWgdnq=&uQP6cDWUqYdXW=&4DtDTHZddgbXq=&rKEGKkXXlcXoc=&fOKTDrUXfmlrj=&YGaOLbZoispsn=&fo3t76VlYijVU=&GKGuC3UUpmWWY=&d6H9DCVVrhsdc=&3vBnpDYkZWkij=&ffPK_vXhnaXri=&Nm5eddUsedlga=&c_OF5cUjmabgi=&wouUnhWmXhlgm=&Twz2baVWfXirp=&2AuDzfVgUVe_p=&GBltK6YZVndmj=&svoFV3VcUqjiY=&9LHGsFXsdmenl=&29yGi9W_gYYkk=&GklacEXknWbra=&ssADlEYpXkjrh=&cfVQhUWcebUha=&aoIzsoWsnnYVn=&SBqwKXUeqZnsZ=&CK8wrVZbmrXga=&CVLY9fVddUokb=&bQ7_6qViVZUVd=&Ls5kmeWhb_ahd=&AXqU65UYiddra=&nrerjkWqZdspm=&P_zGmgYUWXalX=&FcJsixVmqhqVb=&8Sm8zLYXcdf_k=&tgtfBuZjhXd_m=&gh2iLpUXUprce=&pGN9XrVofpn_j=&ZwJmOUZbhoYlb=&nTNjDlUfclWel=&HqOMCwYYbc_Xo=&hL_jUtYjYajqh=&gZoTggUWakX_e=&lw3hSMWWlfgnU=&hs42mHUreZsVs=&ZxGqN9YicZpim=&4wa8PyWgoUhoZ=&M9PSD_XeslXWi=&iD7oGAWlqdpYX=&GB3TklUdaab_c=&VGaIwIYjm_YZi=&FF5f5UZkafnpc=&zwhsdaZ_ilfij=&C4cn4CUWUshmj=&FY6cmyYXjWsZY=&f2TgcmWqksWao=&hUDu57Uqcrqqe=&tdWeDIXmj_fgh=&sKn96qYhZdYnf=&rohqT8WrfmZZf=&IlLlcgZmflYbc=&D9NqsGZinbpYr=&q2qCDXVejhUsl=&qQWEC8UmgVdZZ=&FA9VwWZsibdnn=&lJVthoUWhogpo=&HS8UP_XbfrXgV=&zL_ByDYnZUjpp=&gb3FLtVqZXrri=&8IKlFXWimYZfh=&TLnDtcUa_qpbg=&xNXS3_Zrpkrrj=&n8yO4VYaWcjsY=&RYD6Y_WqcWrXm=&FdWOpbUVYWWnX=&qTtMScYYikhss=&m6uVtuY_rlgpn=&_Wb_9WXilbj_i=&SwW_k5VUphbdi=&asemm6VWcZhfs=&vMn8SsWYqYfrq=&ps9u2hUbUiijq=&m5mbRxWqqdoZU=&gflBAaYqsibrm=&JQpxaHWVmbpaU=&aHVQnbWeldjco=&bKtEpbVjXZdXp=&2jU2nGVslhec_=&7j5b2WXroUbsp=&dUCT53WrkhUhe=&B6nEFyV_YggpX=&KeV78bVYakffl=&WVDdWsZk_hiY_=&CZkAprVhjVqsi=&AHt9DKWZfprck=&hRZx8jZlbqXkh=&OAhErlUesYmiU=&JvWJiWYs_gb_f=&VyTaiSUonXlUa=&uPuonmWfcrqrm=&5moIuCYrpdaY_=&h3Yl4uUVUnco_=&bvRyfPVckfqnd=&No_4X3VdVYUip=&FJrCpcUhgVX_k=&GHWL5VXsWhlUf=&klfKmTXppogWn=&kge_4jWgli_k_=&foxIn4Zpqmiad=&WLHnmjWehYlej=&ugQvWUUldYshp=&dv2Q5MXrrdgks=&xSkgrYY_Vpfpb=&uMEGcyVU_XVfr=&Il5XtoWlVenrc=&ZtAGrwXXbUedq=&HaYFw7ZXWYrjX=&AzLJomVaajsXh=&dntrwUXbmpi_c=&ZMLEY9YidZggl=&FGzMv3UYYrWsd=&A_shkRZYdhlXc=&w2fDAqXjikXji=&qDwdLTXnVkeck=&_KejxvXqgfdif=&LvZmmyYa_eWWq=&aJE4mGWkXcZsd=&N26KwMWgYchlg=&9YKjK8ZdeqpkW=&52OVuBVsjeUkY=&vRWNmhUajfspm=&pa9wIkUpZUknd=&P6noOVZe_gWlp=&Z2SlbdYUUessY=&2wX6xrZpoofsZ=&jCzSEEYhfirdp=&sKws3vUa__ejb=&McbLEXYfbmflk=&wl6JcRUdXVVcl=&7DCWN7Uacpce_=&xozFASXVmrpmo=&BLmiPeUmopiaf=&r9E4NGZlXVsfl=&BjNAjUY_kiecb=&kHBf99ZdYjZie=&vJQxJJUpXgbVs=&rkMgNoZdWr_Zn=&MCnFBWXoXbchc=&RVIvIXXsWlogb=&5ulHP8Vngdqpr=&WiDzHqZaelepd=&rC5QWVVWUi_YU=&HlfMoKUUUdUWr=&fwa7ZEVViUpoW=&R25BPNZgpiYcU=&tFwDjdWqUjsUd=&97kXCoZUoeWep=&FWxzqqWbskeZe=&XXLwu9WlVaUk_=&qvbyWSWaWoXie=&q4PCENYdcpedp=&LsleDEYpfljYg=&z67FHUWnhdjql=&54oIMxVqqWqWe=&b2pJ6TYdUaW_a=&h63_rqZdjlmVh=&pDY_YRVWXYYZp=&dr7KiqYsoqsiV=&zBbZt9UVXpjq_=&RkDe84XlVbYlc=&qYSAWjUrZekVV=&yrEayxVWfbheh=&ul6S3GXWrWieb=&dRYQjIUjogonk=&ixO_GvXqqmgmc=&lUlD9FWisj_fX=&9rXKJ6Xoeisqk=&rh9PQGVbiUZVq=&cNctVtZajXrUl=&SSPrE8YrrmcXX=&SKT8wvUncYsYj=&uddaZPWfUVkef=&56YRLYXalVmho=&nYMvoVZasghpX=&czsxJ2Vrgob__=&8dnuEOUYUdsUl=&xdEzzTXh_sfZm=&ZSa769UrpjWYe=&dwCu2dYhWlbYl=&9B5IIQUhYZVeb=&CcgrLZZqjriaj=&yRmUUFWchspl_=&gbM6oxXXrieZs=&IPvOcjZYsmofq=&PE6xyXWgejUXh=&FZAfdsVUZWsal=&8zsP4AVakXlhZ=&uOUdX5UiVbVcm=&gBqCZVZqg_WWr=&IwSi_DZjemsYa=&W3vFpkWiZUhsY=&oKHhRgXlXgclW=&MID9WfUrhUgda=&d2hUMxVagVUbg=&YqOuAMZW_XUch=&FKm7pqXlmpiVn=&CFb6uiWVrgrls=&WJZaDSWppcW_W=&LKGeaFWfgefVY=&7AJfpRUjWjnc_=&lXSDuzZfqmcWX=&ylb9NGWaZojpb=&D2emyBVnbV_dj=&8MdW34WhagsqX=&Z9gc6mVrfZWkp=&J5w2P2Xjokkej=&wm4ENOVolZqg_=&aClbzpUXslbdf=&uYFfWwWYsg_la=&rZs3iEWlakqdp=&bGMGQAWoVnUim=&ZkG4mZZpimaqo=&DpTCm5Xafaaff=&NsyV5pUimrfcm=&cmKA2sZZXXXlo=&4KDez3YZskipk=&nZA9VlYUejgbp=&z5bJXYY_jrcpY=&YrVtcMZodcpgf=&B8GHpnZiriVWV=&JT23eCYgffmmq=&dyMEQBXdfZYgf=&MfcMgOV_ffsid=&IAEq54UgpkaV_=&grxXwKVhlhbjo=&saHiQnUngVVaY=&bYrwiwYafcnpk=&lh_tBTYWqVrjX=&Y5GLmCUsdc_Wf=&yZZxUiXdViVmc=&Y5RRb5UhmYYfU=&mnUJQhXsmp_ag=&_VSnQHVonmdh_=&dlLTX2XsWrZaa=&akWF34ZqmXVqq=&yswAjqZjendoi=&AaL8kqYah_eci=&jSmcCtYYabYgY=&M8P3M_UasghYk=&IEPelRYsjnciU=&_WHSw7VsYokgl=&LL89wKWYYhVnX=&nIrtpaYgUcWmZ=&X8WRLbWiVfcZd=&dLEovvUgXsZhg=&BOotD9VWUYemn=&NcebQMXmscrmh=&f2LrflWWakasn=&oyisQQVUZfZji=&KFbImSVragfom=&jhS5fJUWWa_oZ=&ua23btVjkYbWp=&ut5mdZUaZfoXh=&byZPIbZjirjcr=&BuS3xhZnXpYiY=&yvDZcXUbkfhik=&BiMOUBUXackdn=&3KnNGNY_rijnZ=&Kc4CLPViXjcdk=&ElpDJVWfraWmU=&JabzACXgXsiUa=&z9FYmtXVgobsj=&8rXVeTWVYYqZi=&rxWLN2WYhfhiZ=&ThIpFeWqgpVcd=&BPN72OUbeVmon=&Z76U7BZllsYqr=&AkQUUWVfYhjrq=&5U49PXVYkgfbb=&hIfGdfVnlamUs=&lWeq83YaooWXU=&UHFaU9YYqalcs=&eyEqF4Wccockh=&j55DuYYaWmseh=&krI9TtUmcb_qZ=&TYeUqtWhdbYpX=&ebk4JTYpWa_co=&9nvfwKUfsqmXm=&uGUxnSVnXcsrV=&ruvrysYicbVmY=&SEKXHqVbmaZpX=&PnXtppXsWpqVm=&7pNP52Wihrjjn=&ogV_TgVVrr_ds=&sGrz2zVpVUpls=&mquCzpXqibcXi=&SuOuPKXXagWco=&Bdh4XYUmeglpg=&UswyeVZclqcrh=&oNzC_vVbYinah=&qaxq57Yqfq_fo=&qKap9qZgjZheU=&HxTXFiUpia_lq=&pI_v4uYZUgYdi=&4yAW7oZVploUk=&i7MbQeZjUmUim=&Zp6lA2ZrmYcWo=&JZRUGyZjfeljl=&efAsjDUlbfVUa=&EvcTb3YUZYZ_m=&j_5E7fVfgihrj=&NscKPmUVgiVXi=&JYQhmkVgfkUih=&JiS655XghrhmZ=&zTYk2hXVpWj_V=&pkpQZfVhapoeY=&bDhdUaYnoUofV=&vopwgjZonqVlk=&leT2oyZsigihq=&MM9nN8Xllhhqr=&SrnJPEZieWrqj=&RtnrTRV_slWlU=&Oi9BcYWcVgVqk=&QKcBNRUgVplof=&fcylhEZjdldrm=&ASR34PYYkbYho=&DbbVAnUsmUqiW=&O7XsMtUVWii_m=&E3CscxVbUcZmZ=&pavpaCXcUmiVW=&ApXEgvVlchWmV=&DzC_fcYiUgVod=&KIfietX_qrdVd=&vnB2g9Xda_VYa=&AmBIuAYUconl_=&YD2cyLWUdpase=&lYzdSUWrbYqsg=&xrMIz_YjcleZd=&o9X82YUYWmljc=&ptlo6LZhmX_sd=&5ZhrnxUbmaYpk=&qF6bdFVWZ_hWr=&W_nuPCXoUXmgp=&eyWKARYrjigrV=&PhAYg5VbbZmgV=&4JOEKlZbr_lhX=&YWEslfWbqXngk=&e35zhxZVsjZ_U=&SKtrevXWehWjV=&S5t8GkW_bon_j=&l5B8WFUWmgXnZ=&SqSH_9YnXaYkW=&NgbZa6Uejbjpn=&6vGTJPZqXijoZ=&OnvJfGXqhbYdl=&xIRRV6ZlqpVfl=&5Y3zo8XaibWib=&7GMlmkUabjgnb=&5dD2yCYeeWmqc=&MTzJf6UYXVVlY=&CRgxwPZhfYZlf=&WirlpCZqZhjrf=&WdkOMFZibXcdj=&GQXQfmW_lWhra=&QVkWHnVUhnkal=&aE3QtsWplplkW=&dZDzjxYcejZoX=&Rcr7ajWafYmlU=&eVLbi9WbiXfsX=&k8ERPcWokmbba=&cFOuIVXfnoqlZ=&sctzlYUpYlYUg=&ui_rmRVZsZijr=&OFIqaPZpXUsai=&LpE4jzUYUcphg=&ZqGKxjZqsZshZ=&coXJ6vVfgYodo=&meUt3IYjlndsi=&S2xaFuXXgiWlh=&sKXFSAYrrhWrX=&aKJ7XZVUpcXUb=&EFAnZKUhaplp_=&WQKjxPXUnYkhp=&Xmb8dHUWed_gr=&2ZpHSKVUdjcsg=&euNmvgXciZiWd=&shS3vaYeiVqik=&PZHCjBXUrqgdp=&Rm5vgaXfZfmnk=&eTAV7OWYiifXj=&4pBJVyUhZggXr=&OvmMNqXoqldYk=&hbN6PfVpjhssj=&nRAiZ_VWmej_Y=&qdxrNqYhlZhji=&nsAI3cXfWgico=&qvA_zHX_epXrW=&fJE9h3ZeaWrlX=&MTJt45ZrhlXqa=&6w69UBZfqmmY_=&WamqgeUWYjXlm=&wZug3bXWZcYdq=&JnKcysXjgmeVY=&gZGFVhUaUqgji=&CdEdRoVgpWpnm=&TVPJUCWYgjWse=&E7xyPrZYZages=&paYeJuUe_Zkln=&SSYXSEZpn_f_k=&KAbgZTWegprUi=&ZDkHnYUrUWsme=&qwHcezXXninkh=&c3qCMVYdggXjb=&aox7b4UUhkkUf=&AO5lBYX_qccjV=&vI6PYjVsloUil=&jB24s7W_hZggr=&xJEsqWZnnYqgU=&wBVifZZkqZceh=&Jo6HqhXqbUVlj=&ftCn5_ZfmXhZf=&pjky9yWcWdbmf=&QqToR5ZoperXh=&CmMRO_Xr__dVe=&UxoLbvVgZsrlr=&o6cLyMVochpnZ=&agWVoMZkbXdkk=&qj2jCUYYiXnrp=&ReFbGqVUsoWYp=&3Ok2n5XpUbmqm=&ASu2H_Xmorrms=&cDgQhgViWeVgV=&3IbZpDXpUbmYm=&iOuMOmUinWVsp=&syGbOUYqUooUY=&dG4vJ5VhjlUqZ=&gIP63eUeqc_aX=&XuauBuWnXnjXY=&iUjA48YgiiaWe=&c7KWvAWq_ggZZ=&WgqpMVWrVbklZ=&Bgx4mTXWXUjUi=&iaveqpZnmgfks=&Iwb8oFUhobfsh=&kG82_QYYXkabV=&Dh3u3iYbchlrj=&X2yMwHVmbmVpU=&YoI8VqZUfUsVg=&iv2CdoWbcmXdd=&eZwf2WZsnUihb=&stALOYUXeorcn=&n8K4N4ZhhlfZY=&eMOU62Xqsnd_s=&2AqT7PZaeYapo=&96PDnaXWXr_g_=&IddUHuVocVp_n=&rMXPjLWlhrnZZ=&PGGhKqVkZjkeW=&LwTvnVVrdnXqn=&ap_N8KWjpWgki=&GEYtiwU_djoac=&9CpWXmVnUhgmq=&Q67AQGYrcXas_=&aSUQoHXhWdapm=&Csbh3JUmphXlk=&JNibNDVUXfZZZ=&a_5bSTZbeZaac=&LkqVi5XcrhkXX=&yqlg8DWomfljh=&EYTXTcZshmaa_=&94eDrMV_pdppl=&WaQsozZscklpV=&MpmbL7Wahkfnr=&qJQHv_XWkniiU=&8wJ5FbZjdsZgl=&Dy3c9_Umjhsiq=&M9UdFaXVrsrXU=&7_mZEuZU_VlUZ=&jnkQDAWarlYjV=&EjntsEZ_kqjld=&iQQ8XKXWsmhiV=&M6h4S7YmdbmUm=&usolRKYWfZiXo=&QswUV2WcVZccf=&8EPTKnYWbiflY=&FE3IJhZjdohXX=&mkdY6SZUdXWac=&g5_I3uVlscYWX=&VfRUl9UodjihY=&imYnkJYqjWhap=&yx5pxdXefaWiZ=&8XioUIUq_kWkp=&nEhenSZUalmmY=&qci5XVUapVYWf=&KRIG7_Y_drg_s=&hK98r_Wgdk_VW=&d8E6OlXiq_fpe=&ZWOmSnXcdjohZ=&6CUns6WqkanUZ=&ohPrvUUmYjq_k=&BayujcYYhkWoi=&YB9opeUXaUhda=&fWYjV7UmdgmoZ=&wOqmZDZfmfpXe=&HOJHKtUjZpeVd=&KbkXBFZlpWdpg=&iBvlZTZdsoljg=&WHa5tHZsledWX=&cU3qG5YeqVpib=&XxfY2VUkWofqj=&daV3fpWjlmWhc=&SSMNKqWdqshnV=&Pa2ymwWXlngZr=&6UkNkqWacnUgi=&Qh5xGMWjesXUX=&q4fR99VamjaZj=&BCxPM3YcZmn_g=&AsCSOdVgkiadc=&WZ_45wZrhjsmh=&qvAExRWqZhiso=&R42Kb7UmeeVmY=&qNDLPEXsXecUn=&YEsa2JWVbVknb=&9fqVAIXUcnn_m=&nRdCVEYnflfmn=&qUwYVyYjWraZh=&oAA7lHWVjqVjX=&qBOC8tZnVencs=&XZlXyAYbWmocc=&Is7d4bUaiZckd=&TPiz7qYmbVmkg=&bQS2iyZooalUh=&N3YQMSVdpnn_Z=&88H8IHZkeVlqp=&zppCp6YihdeYi=&HXkPd9Wbmomim=&paQf87VphqkcZ=&7NjtQAXVjjlro=&eNL7ptXm_XrhV=&Jr_IItZpbpnXe=&j5Z2gEXnZkUcp=&33w4PeXYjrXYV=&onnSDbXog_VaV=&yFZcHqXXeeXlm=&IdFdAMXpcqafj=&eaJHOEVhcWnce=&LJPSl7VVldasp=&77Q2GcYVlbrYq=&JnjxqEYnXc_XY=&ZPfHR_WebaZ_q=&hsAwtlZchUYZj=&6ife78Z__Xjqr=&PG76CXUkfmced=&HjYKfGVlnVdqZ=&mbUOkkZdokcgs=&vNmhIdZZoZfjW=&iXSvz3UkdedXp=&wEGouHXbidVWi=&BuDaS3YimigWf=&w_dhEIUieZo_c=&ilRTyXUjUrhem=&Pio2weYldkpq_=&tjAYnHYdkYWVZ=&8oZs8SZecpYgk=&HTlNriVlsnjpV=&SUTyPiXaprbcf=&wX6Y5FY_pmUgd=&CT7CUSZZfneld=&nSOvE_XqdlrfU=&qIELHPWjpWhdW=&Kukq54WplpVYi=&ct93SNWnsqokq=&xYPaPfWjoginr=&ddmwm_ZVsgfYY=&GBxPxyYlgkZZe=&oS7AHkXpmeoYe=&8WVqCyVd_YqXY=&UBmiB2WlXkXil=&ka25owYqUXfcs=&rMfdcRYibrmrg=&GxyfX9VaaZ_WU=&HQMbILYb__lph=&OGDfvvUUrfgkl=&_jA6ulVXrprhg=&PAHtwKWXmXYnl=&ShrOxtZdZlUgV=&f7S53KVilshVm=&pDl8D2WfsU_lf=&OHatHMYs_ecem=&daywBiYofokrb=&Lj8NHOUcjiWZe=&IzhjhwYpjiYng=&nyVA9qXri_Yml=&EkETjYWjWXrVV=&sRISXWVdmapoc=&iSWNqNVrUjsqg=&ysqhiTXoijodc=&AwiibbYcgekiV=&yYNUjEWmWeY_f=&FDhs2MZgoaojX=&kg4wL3WjUhVqa=&dsX_QJWZbhYha=&ErF7m6Y_rncrr=&YTv59fXojihra=&owYVw3Vsmahei=&DDOoDyZ_Vlcel=&9YJKteVbXadZW=&t6XHWdVbkr_r_=&URjt2QYr_pUVk=&OmwlyHVrkjhYh=&ZYzqd_U_hlms_=&PLpUbIVqoggUc=&AThINOVosZdWb=&pxtqjrYgWUmfl=&sEwCA8Zacdkdp=&gPN5C5Zrgsrbp=&kDkTefYWZhZXg=&rQMUY3ZZYohgp=&AigxiXZmjbfdk=&oxgvsEXcamVns=&k4ZRmpWWUiqUV=&vokUH7ZpVfhWa=&xgxAd7Y_jX_qk=&xJKMcHUnmjedh=&_7mknTVpqZfqd=&2IggB9WefoZrW=&PR3tBxWmgqfr_=&oRajrGWkrhkVp=&9Z6ovsXahnji_=&uW7iBWWd_qiXq=&S4lE4OUhUapsq=&bwIypCYmqocUV=&OUR3h6ZlZrppY=&4qiJFCWpVmbdg=&rZ6md_ZWWqfjo=&vATA6aWYVrWei=&9Uzu3TYibVmen=&6ULDvGXgYaag_=&6AxSHfWascgqb=&O5vVlhVUW_hUp=&Mti8_bVgafkXV=&f_vuKkYUcgckZ=&qjeeY6Xpgdn_V=&dhZUGbZopYops=&UnMp3jUjXpspW=&V2ScdAZkojhsZ=&axT_NGVn_qVmV=&x5bZFpWnnphak=&M8YAzGZi_ZkVo=&3PCVP_UWXYXhl=&uvc7eSZXhaYpk=&Fa8dmTWcVsagW=&RGblL4ZehWqhr=&coDObqXefkeUb=&NmwtsHZjibWda=&aTbBw8Vg_anWj=&2fiDfGVkdZegW=&RUU8TCZklfYmn=&KXGCQwY_qoeoW=&PabFhBWobroVX=&nwLHrXUjppUlq=&LXk_JJXUlgqop=&szQj_AVo_UYse=&edDWljWrpWXbV=&fbjQEFWkXZqdg=&QCGxItVVbVhfZ=&m5SiHvXYlZcfX=&edvw3VUggpslq=&KuajxRZadfYYp=&tHI3vJUfddfaX=&zfRdvZUisar_k=&FSrZTsXWdoUjm=&2ftxjlYpYcmbj=&TUznaGZbVifcm=&cDiMWOWmnrkoU=&VRYOfOYkskmas=&X7kpIuVileg_n=&ctDgvCXjXjibX=&QxnpfjYVbboUj=&nnus_JZqbraen=&RWOe6sWlipfck=&Ou25bWYqVcblg=&Io_BpDXqYhUcm=&LCcFiFWXXjXZf=&vbUDNcVapkb_m=&vIGNoZUpeeenc=&Y5vdJHVUYZhVp=&fE_WmdXjifaWm=&cy6x3jWccmkeY=&VSq9vYXZsrqgY=&RsL_ZVUfgrbmq=&pvW9XlUnkVcja=&bcaBJ2UXmdaro=&BsPbjZYfnebXg=&rE5tAeWUcjVdc=&TpB8KIVhmh_og=&uGgKKpVjah_Xi=&s4T336UnlUojZ=&E7ytBIYnapWlg=&bRnXReXZWUqbX=&nknurXXnhYerX=&bQQdLZUZkiios=&hYSdnzVmZXcnh=&uXelkhZqjVVUc=&ReGUbUXjZiYi_=&ibVfiDVfUqXcU=&eGq8OdZbfWshf=&8W3nN7Yen_kds=&KO6yPvWcrrieo=&U9YZF9XVUiYjU=&afTdmCXrYmd_n=&APbUDvWclhooV=&QnfDZDUjqYsjs=&eTmk3IWkoWrho=&Wx9DpZXipfbeZ=&xejVHlXklsqhh=&U8Tf_YXYchZmb=&ZorPPlYZZXpYq=&P96uBWYrWYlek=&rOaKw5YXjhcrk=&5hR3Z4XjWsbYm=&lv8mg4Vieic_Y=&r4nhHoZaZYqoa=&2UGZthUkcsllj=&8rvoSYWcpUXiU=&kbAwSzV_kdWha=&ZLF2WfWcmZbca=&H5NzUWYYsmqec=&ayWlclUWosgWf=&cUbGsjX_mlspk=&CbTFReVkVU_Uh=&UVQ8rAUgaljUY=&a6hOnpXsj_abi=&iTtsPBZjkmZdr=&o6UB8AWnejqXZ=&WWeaVvZke_nre=&i955DeWh_knga=&rejOviWsfsfgo=&TfFuN3VbUZYog=&RCZjW_UUqmWck=&xJPqKzWe_Zbbe=&_ejEmRVsWZYel=&hkGpZTVkklWih=&kQFsTqXkhmUdq=&RHLpQOVZWiZbp=&A9oHfLVqkenld=&vL9Lo_Uf_cUqd=&_xNDFaWmchsdp=&ZHb8DrXibldps=&_7wBl4YWggl_V=&kpGjnxYgVebnU=&KaSlg7XiVsXXg=&yG2dG6WYgdkb_=&4L32GzZairjhr=&QmBB7SZoWVVo_=&GTRommZncXeZb=&XfYAJeZhjWZkW=&LFVJVLXZhfWX_=&_X2tzTZjjsokd=&JaSUWoZjb_Wef=&pytUG5XZqVler=&IIj8sOY_UW_mZ=&U4iHhzWnVVqYi=&H8sETuZrhjdeX=&cPrZN7WfcakXr=&LsHcmXVrZqXik=&55gYjLXqq_jnY=&3GXBLWXcmWjZh=&Fpa5dCUnfYVcp=&GN7K_pVggmmYi=&j98DEJYd_scaW=&U2j4RjVnimcse=&nEPVo2ZbUabmY=&fUFHY9ZibdYmp=&9bIiAPUZeVspe=&mn9djQZgWkogf=&stAXzRWc_eWej=&8LHOYVX_VidrZ=&CoaxbwUfnahkY=&4bpDiVXcjhlpV=&ETlfMtZqoVVpb=&8SyIiBWimZbZU=&XSgLRYVgncinl=&3T9qrHWnsdpij=&UntlP4VpieUiY=&XltTHaYdjodre=&HXfSxZWmdXXVa=&iI8G3NVeoXkhY=&jdQEb2UakYlms=&SPdzUBWeojXoZ=&z_QowKYfbV_ob=&n59ImpVocnYrq=&LFcl_OVW_fkbl=&OuLWOoXbqapqf=&PfunVrUmsUnn_=&q36UM9XoUjeZh=&HvGMPyYqk_bjk=&Q7WX33YciW_Uo=&urD5TTWjblorh=&TaeaFmWpdelZr=&et67gEXcsUnnU=&bEkX5FUmiYY_i=&lfbtHaVsifci_=&Fml8U4XlYiU_Z=&5tdn9mWsVVUjh=&4Xk7PvXsq_akc=&PoV3maXpgbeph=&kPiK2gVlffnWU=&ShWTN2UoUYnkk=&MdHk5SXh_Zkrd=&kbylIFUcdcbVb=&ElziB4YVracdo=&RcwLKhUdcVXX_=&Kv5iNmUUXmhmr=&mIQTntZXbUqcb=&k2qTJxVWpihcg=&IVhYUUUfaifVa=&B8x4mjZaqcdhf=&eNasaYYhfkchf=&YOWgTKWnipZql=&bpCdJEYd_ijkZ=&YcOqPlUWrlblh=&89jvkWWXdlYUX=&byLyHUZWgfpaX=&aHHSo5WYU_bgc=&heNXZaUcWsUgd=&Agx5p9YUdcjkb=&pN7WnlWsbbhYc=&EsIIzyZrmsVcr=&LySDroUoa_inr=&9rkFt4UUfkdhW=&fbblCaXYjanbj=&pGztj_Xlfimfp=&tFQb6PVcsZnVs=&7E2aYlWeYkihi=&UeBG8wXj_ehZX=&xA9Pf7VUbaUXl=&Z4JJbFWsns_Uo=&3T36H8UrY_qii=&iXbAEkYjsdkfk=&DGFKOxXVoohqr=&lTvhI9WValYqf=&ttVIySYXfhZUc=&EsF72cXmWipij=&SoAlRjXrcWspd=&TAa_KxWXWkmsm=&qf26kIVcZadUV=&hTdD7DYdrYiUq=&7ypz2qWqXUlfV=&bRxpuYWgXlsUl=&VxFAmqVqgWZbn=&YbHzREZnUdplg=&Jx_Op8ZZcUejW=&VexeHwWfaYefm=&7qnJnrXYnhlkn=&239jAQYbfbime=&p8vMyjWsnicom=&X_nzRbVjqpWha=&LoMzT8UhdWVmk=&WxZhJkVfdXcdo=&r3FKvVWnkdoXY=&wzVw3uXdlifkn=&RMQqvNUsiphoY=&iOnym3Vodmebp=&nVfjsXYmojYop=&pl3qGtWlmpfre=&2MyI8MVYjhdXo=&8T2ei4XlmXlbi=&YT8biYVpmndrX=&BwkkqjYmUjWga=&5r8ygbWocfYbW=&qokBVmYl_fXpX=&pH32vfZrkdi_h=&McHSIjXjipghV=&HkOvjiUUobVdd=&7UGfLmZjmXrab=&eU3565UocksYs=&5mrW4JXeWYoVc=&s_oZH6XoiU_jm=&SHBLYFWadVl_U=&IxUnY9UkhhVqs=&ac2qCJXinlhdm=&f3zoAAVonsqqZ=&3YwnVQXpfVplV=&ehffMNXcrrslb=&bUWfpRYbalicl=&rSJSZcWqhqYsj=&3M85P7ZqdlnYb=&V47g3hUkY_nbm=&BBEKDwUUhmjVd=&eDaqSLWiblrmY=&kNdFhLXmh_nVW=&2kSTDoZmZpkpm=&A29pFLVnpqr_n=&mOxKvIWpbXnjm=&Ub8hb6VX_jdYm=&iKxYKAZsYarVX=&QUWBCJWUcZVXg=&pFlKqkUkegig_=&z3HuRBYY_ZiVX=&qtH7cmZgafinm=&8uW4CxWYVmgmh=&nH55CvZaX_lXa=&ASAsJQWerc_fk=&3xsTrWVkgirkU=&Ey9bqWWcfVler=&93zblMYfcfpeb=&lPXyIkW_VYmdc=&gDSIuaXmoUXso=&SkOmMnUeocqrV=&KGfLLcXpeodeV=&CsHcncXgfcVqa=&SGJMP4WXabsrV=&rjdFJBYYVli_X=&WeCN55ZgdWhjU=&idX4vbZ_srlnc=&aKlGbXUqbilco=&chPLlbUfosoUl=&saIMNvXopXjhq=&yob472UWjVYeW=&N8VAzKVkn_glk=&8DhI3_VqiUale=&FGvLNHYhWpqac=&JYEcEiZXqkXal=&khkAwSUoZoaUl=&h7h2ATVmefpsa=&nnuYBOXpVfeYg=&GmMbmTYaaiomj=&fLX5GPZmWWV_b=&SkxGbPWgldpho=&UIYpNLXqaifsq=&qfwlSIWhWjirg=&8CaoRUViZgbrf=&z4psX3UaYa_dk=&phyDPSUclfsmb=&WBFacRYcecsei=&V6TQMHUjWparq=&m3cTkjZVeglln=&L5K5H4WZonbmf=&ic8lpiYfmUUkl=&wGWmHIYaflVmf=&MQtwBhVXWkglb=&FCQoTMX_josho=&eULIiKUarpnej=&8U3LKLXZpqrsU=&nhzy9iUrnpZai=&zM5adkZfYrVap=&qEiqHRXUaYWhf=&xknXKAU_Xkqrk=&EGupboXanspeg=&y5AAyLXlWUoiU=&MUBT9PWgiV_Xa=&qro4x5YhfUXkn=&9SzkP9Xdndd_k=&C3uuVfUUXgg_a=&Ad4JdaUkbaXiV=&c3TUYIYfqjslZ=&ppuyUCUsqYbsc=&Py66ePXmgaeqi=&Z6AulNXdb_Xkh=&4I2MrRVjlned_=&G2s2X_UagYUfZ=&JXcLacXqUVepX=&ysL4JvUcaXsic=&z6IaupVglomo_=&DSWoQeWnbmfYj=&7NOqtEVceiVrq=&VfOsqiYcYklaW=&yCLcYGU_rrrYZ=&PlHhPDUXlnhho=&4GNX2qZaifWmp=&3rqc5eUZ_c_ej=&hfqMPbWodqWsg=&6xwh47ZVijrXs=&9rvxIXUqdeUdp=&h2PnKCVgid_X_=&C9cKYpWlpglWf=&o4L9sNUXVYhgl=&Mo5ngXWsne_sm=&p26j29VkVXgkr=&r8PQcJXjsbapX=&ZG4BrLXlabood=&2aBWPBYUcobXn=&rAdQ4JUajdVYU=&8Bz6bWZekUnc_=&JAr6TQWqVcnep=&Kpj_L9Zgf_fUV=&oN9nh6XshbWWq=&u2uPJTYpZZioY=&R9JH_jYiUfben=&K8XzIVWdYkfYh=&geGUkwUqUWZnd=&LWBDlaVZZjngi=&HQaWfKVpcaqdi=&zVrvatWYlYn_m=&Fsc3p6Zfgjrqk=&oJnDqOYWUfg_p=&JTNUMHUbmcbah=&P22XtzZZcUspW=&64TIU3Wgdonnf=&NaVeVHYWZgsci=&QCQDVAZksVk_r=&KQ_ZZ7YiYZska=&MVaQi3VdYqqcU=&LGwJBkWXldXZl=&SaWYKgYWfifUV=&nIlu4vXbhrVge=&37rJ4IUXiWakf=&gmULvQWYXVW_Z=&k6YRhLWZnphVU=&EwJDb2Yplrgbn=&WgGnkMZqVbgWf=&xf724kXgqclXg=&_HJ3CIZVgicdq=&kqbPJeWnejVds=&8UNelfWXdkrWU=&BBLHdAZjZgqlk=&upO_2bUkiiZVg=&3rHaUqVpYXokc=&CJHYkHVUmcVYg=&K6AvI5ZgqZsbk=&SAWRG4WadbXjj=&KnK2PRXeVmcjq=&Kt39GYZmjZerk=&rYu6CPZalipeh=&8RiVHDXmenfZo=&oGbs3uWi_fmZk=&XP8PG5YcVVaWX=&Wgs7oMXoafroe=&Hgvg2aWXcZqoo=&sbOY6CWVdXUom=&WFenlFYrkqYfX=&_EmIRdUjWeglV=&6AZnlzVVjfa_a=&nOY8BwV_amWlY=&_wn9sbYrdVjlY=&5iiBCNXqf_Ycn=&2r_ZwtXbqagch=&TrJxutXmVbpXn=&ZkEZ39Z___orn=&UtxgRVXaX_ecZ=&3TQfilXe_mdis=&AIK98uUoWjXjl=&NbQFoYYcdiapk=&j3sQevYoZeYrl=&PECw_DUdhXXjY=&YtLsizZkmWYZi=&kkHsRjXslhXYU=&TbN_LKUoVhdbb=&HTVQjJWcmgnib=&SpquVGZhrWkpd=&skuAkrZkoqcdY=&XDdAaVWjYipcn=&ZmsvalVXoZnnh=&DkSZmpWiV_sfY=&ZeDJG7VlUmbcj=&DFWQANUsWqi_q=&fKVmd7Vbigrcd=&5rXW6AUqoomWg=&5JvTzxUeXrlhq=&MIlPWAYnpUoap=&OZ3C5PXnWVZoZ=&k_7MQYXqmdhpd=&U3UXtHVeVVmiZ=&w84EDjXrVXamZ=&jeP9xGXshpnmo=&cTrfrWZbeqspU=&id6mvHUZrdilX=&sIJzwLVbZhWYq=&BfkOTMXmUdUgq=&CQ4iKYUUYnmWj=&L6tygSZgXnqkr=&56FpDgUaWpas_=&TS6hIKXepkUss=&QhF7t2Wo_flfY=&XNljBYVVVepgk=&YlR39SXVrpnmc=&QmD7kwXr_mnXg=&g3GJQ7VVYsfdg=&hDKTXZXXsWXiV=&kTZJT2XfdajhZ=&6EzspdVfmofjl=&EAEngYXgcsidk=&QGplefZhlYfXZ=&AagzpEZknhrfa=&RiG7OYXYaqoZg=&kWWcg6YaZhdZm=&6PkfvhYrqcjVX=&ljf3JVVb_ennc=&BFKOl9Wl_qnck=&lYlcErZWW_YbY=&fAOR9rVqhejsr=&32iazfUkmroZc=&WwfP8zWsYXWhr=&m8JM8DU_fofcd=&9ZAIwvXkjkala=&wpor3aVmmsann=&PUfVlNUnclnkp=&msLWyzUZUmnoj=&ghluUmYWWbmZr=&tjBjDzZhfhhpf=&5f2N_6YiVpsj_=&lL45EHYfrapeo=&YbcmSvWXpbVYf=&dB9x4gUgigZoo=&Tbr6_gYnVjYnr=&rJZvm6WVqlbVe=&8BFBxvWseVlrq=&XIDEaWXnrcohb=&Eh248PYWYjgpo=&O7yFajZrbggao=&9N6rbrZlkWUUY=&dmfDpFYcYXnoa=&38SgWNZWkfUan=&x8FjsTXqmcssn=&48SyINZWllgrq=&hBxCUWXbhpsbb=&JWuYorXkXbddk=&xH8tVaWZmdUka=&xPR4dtVicYVja=&TtbCISZoglnXi=&KJVE_nVXineng=&cXaHgcYqrlhWs=&kHpBJNVlnndgf=&QctjTBVkpnpqd=&UxLdrNXhWWWgq=&ZOvMbsUcUnlXj=&QLpfYKXXqmYVV=&HnkOtUUnch_gk=&jOwtV6Ubmasfp=&X2tltPZlXlUng=&tVu4fPYlaobrV=&D6fnGfU_fam_j=&Cah2kYVWrbn_r=&vFh2gcXmXafpX=&SlO5bvUejaoZ_=&mOAb88WYglomb=&km77z9XUefjkZ=&Km8HtKXpkXkmj=&aDbMXqUijUgrk=&bXagsSYanpiZq=&lHcT3nUlYkcgo=&lEscoxXrfjYqb=&i64cfhVsbsrZn=&S4TL64Use_Ysc=&bOm6klWZe_prp=&TqPiJdUYiZsYe=&ohOvaiYjqYZjk=&PG4zTOXqqndjn=&OtVSlxVb_rZZg=&4NIulFYnobZgo=&4DN7T3ZhjcW_a=&PpM2psYcZahkV=&_eJcJIVeYlodo=&DdiWf3XVjgW_X=&QlzybMXcVVoWr=&wyYKoVXsqelUm=&mxyGg_Vkr_qie=&lXgO5qXga__nf=&IloVGVYg_oXmf=&rkcoCaXib_koo=&kUq5gyWjXZlVY=&qGamroYerkhqg=&yucrvbUhYbZob=&hXbpNrUU_cs_l=&7XdVgRXqZjsVd=&8RK4p6Zlg_lrs=&pnhjK9YmfdsoV=&MX64K5WaVmVg_=&LqviQaWhrhfcf=&OCpzFYYqlscls=&X6D6aRXasksV_=&7YLVgyYajWbXc=&pxfZzvZfYYgh_=&LGI9FRVZaZqjg=&wQkWCOWWndgXs=&uAa_p6ZVWddp_=&GxcDhLWipqrbs=&eEdr_UVVleXYX=&ndAUlJYZoYrmh=&ufEQ76Wnolkfe=&CM5XcLUiehkZV=&_MRAYHWhmsce_=&8hpM8RZqmXWZf=&LmspUBYnY_oar=&vEaq2_UaeliWg=&WXw2LgVsnnqUr=&boPScIWdilWhq=&Gd7ewqWisqdep=&Y33t92XgYma_o=&nKyXC7XWqppXp=&VULgAFXVdsfaa=&88GSfiXrVqpcq=&opodN6Ynacecm=&E3ihqkYY_hlom=&jhCLQ7VZigsrh=&6LnUeqXrhaYmj=&_xITHpYjlYsUf=&UsveKXZVmUjcq=&BJspx_VfiefiU=&zKyXGLXUZnoiZ=&K46KvtUXbigib=&pUpVJGZZnVjVV=&CjX5b2WXefsUr=&K_wPcxWg_chbj=&5C9hoLYedrZaU=&Yn9BGFYisYaWc=&yGru7hYkbhesb=&EY6OZQUdcaqpj=&EQTroPXfsYVrU=&UZjiKPUslbhUd=&hLXddKXcWWrXb=&8zejssYXVqWdh=&jIsmcJXWVkepY=&MV2z46YnkrjZY=&jpRJn2WVZsYsn=&zwmDYDUphprhr=&K8IMFHWpjsUpj=&WWcprrWXpqhij=&qRfPOCWapreoo=&ytRHV7Udmsopb=&YlqsIeYiWqZWr=&9q8AYEVUUfVkl=&SH7i22YcilUib=&z8eaTaZkp_XlU=&ELztw5ZnbrYim=&tYW7XsVoiUYag=&pHwyQBYjYYskn=&Zg7jCVZYbUUmW=&Ys8EawWpUccUp=&cA4poTZiWaYZs=&YuocjgZmfqZWb=&3ukif2UXlkjXV=&aFXDinYYVegnf=&fVMB_wUmUpdjp=&ah7KqxXZYUqpY=&N4xujdUsnj_m_=&bZQ5TuUYZeha_=&74gujcYdYfier=&uUeUBHYms_blZ=&JrcGMAZjcbUpd=&XXYx6PUsrmhos=&mU8mkPXdm_rrZ=&Dd4anLZddbhej=&3VSjM8YopnjpY=&hHG85CZj_YZZc=&MrFiQ3UnZrcYk=&GcpCmAZekjsqe=&eRGyhXWnlYhpU=&HPmwdzYmjoUlr=&77_bEuXgrZZpZ=&DSxeIAUoUmcmj=&tjs2bMYmXcfl_=&XyrsHXXlY_pnd=&3jJJ9TVqdqkdm=&J_paODYoVnYeo=&wXPnWmZqYphZo=&HbwOMTWhjUdZe=&x_H8BwVlosisj=&WV3iRZVhnWjqY=&kU_h89WiXbaXa=&Fz6fccXc_Vnpb=&ZztpZ8UjUlhjb=&BxSKp7XdmdW_Z=&gyFVr5YfVfrXb=&W2GqXAXsgcgia=&z_5rLxUVabehm=&CjnpEAZWe_hgU=&UhAshxZYYpZhs=&zCvJaBYinZqfi=&XluE47VabWZX_=&l_iYwZYeYo_jm=&ataPQ4VWYWVdl=&dtl6PBXfdriWp=&K2EzdgZoblqqX=&dhWc8lVXXrhZl=&5nkk53WXfqkas=&dBE3hGYYbfgmo=&2eq_wyYVYejrn=&bS8ZAiViloheh=&IGQhNxW__fhWW=&2PndbbYeZkpZU=&nuJUNTWXgojeV=&VXbmhlUVlWqjp=&q3ZAJRWfsgj_c=&QvbmhiYlpckek=&SdtuwuUUeWX_c=&nmgLHiVjqkWZp=&uBIp_iY_kapos=&NjIu7WXejgnZX=&g8BYaDZaeY_jk=&ol5fbyUngfWcc=&YIID3JXsiedbq=&noY42IZYghUjb=&U7IPibXVXUpgn=&sa4mu9XX_UUfl=&2ytBg_YkmUhaZ=&h2oeuIZcbbdcV=&fzzOPlXYklg_Y=&RT_7vnVUqerer=&xbZt2EUeXoZXV=&yXo6dLXVUkrXb=&eSL9aRZoXrsoq=&H89b4XWoodanq=&rxHoJFYjiWpfX=&AUFJNXWelilql=&ymDhsxXhiZeXk=&8w8emZWbWkdao=&eGt2TOXeccfrn=&8p56YcVYdgaXZ=&qS2rBnVjbb_sp=&jG4x8UV_qgqfl=&OLanlPWlUXmcV=&2tVdUQVYnVZZq=&5kqrL3UZfVXla=&GhjrZtYfhbecb=&MpfMjKUfgdqjl=&iWTBrbXmYkgio=&cwBq5yUXmZkci=&pIc7szZdZsjZa=&NzjPEUU_XYpof=&926l3cZYqWgja=&La5KkaVrZ_Vkq=&h4ddXeYY_V_Wb=&2NiOsUVmifapa=&A2E4PtXVmYeor=&MYaU6ZUeqas_j=&iBlg7rXskcqbm=&7kRYuXVcU_Xof=&NtJSOyWpeil_c=&8gEVNoUnVbmqd=&XHi6ApYopjen_=&qFQwstUglYllU=&hrz2zVVcfaine=&gmjuRsZgcVmXW=&W_BPsHVplUfVX=&cFZVCnXZoesYb=&nqnYwfXhpbnep=&HQ9_R5WfhpiVp=&Y4JJppVqqdcYY=&DDBzyHVjlogeV=&MVr3qGVbmrdjq=&rDyPBxYiXZdcj=&MepskCZUhsWhd=&Zzj9bPZZZiahm=&z7DGLeVXcXnnj=&cJEhX4Yg_qpsc=&5JXokpXdmXj_W=&BL72_HUicsUja=&rhSm9hYpmhabl=&rXLEcMVlkaXZq=&kkB7QQVarpYml=&qQb_JUZdXbjco=&H7TH4UYfsjXis=&_ZzaBcXcokroa=&ks2vH9Zloeoaq=&EjFRHxYrdiqYa=&UL6jXzViejrZg=&2N_EPTVrrl_kb=&DTgGnGXoZUmck=&CFHL9DVeoUnXk=&XqnupQZ_rmelb=&CI4GXVVnXZdls=&OMfndwWXcjjYj=&BqvkI6ZUdhide=&R84carWsccZnp=&mMDRGOUVUYq_c=&ElWRHsZ_jrken=&DzfIemUfkrrhi=&eijklMZVenZnY=&kX2PIbZW_rkcf=&D_ldWjUUZZcZW=&zZT6WSUYWpYpl=&AS7iBaUXokkUf=&jT4Rk4UUclaob=&hBhtc3XilmhUo=&obrkefZmWl_aq=&lgj4b_Wirebed=&aBJrOrXZcbrnc=&mEhCRtZskbUnX=&bQrG4DVimidpi=&NXY_R7VdWadfi=&oqxHxLZmkVdYs=&VVFShVUcZbfmr=&UoXim8UbdVjns=&gBy2iIVoXYsrg=&4TZeP2WfkZhjg=&VW6tgWZXVjlds=&cT42apWbpWcip=&GHMF4lUWXecZr=&AkKUFnZhnYfdm=&suDyRqYUkmgbi=&ukdNYSXq_Wbhk=&xhaP7dXfWWZ_Y=&twzJCvYfXhgmc=&6BUDUaXWrnfka=&GHsGr9Xgkgp_p=&8qBqmVZUfXZjh=&NYrK4FUedhmUl=&qjMs_3Zeo_fXZ=&uI8QtuUgkapcc=&GgpqpIUjndcpl=&pqAQEKWrerbh_=&l3jPGuUeXVjqj=&a8Su8AZYfsdgk=&pInRgRZgUebda=&fHcxaUY_ZYYWh=&RGqZU7Zhrshfg=&GC7EFXWqkYapm=&hZspN9Zkhsp__=&DCBOHzWbkVorq=&K63RMhXXddfjc=&mfhNyAYYdsUhc=&_wMLOnZYsinsj=&zO7wGYYshknjZ=&6gbPDkVcfnUee=&D3FpELWlomrje=&VSYaaTXXVkVbs=&JMPhSVYXpedYa=&XGeqMqXaqcpfj=&WxQ95_WXpeZ_h=&l4vdeeZcfqdll=&CS9SOQYhaZj_c=&fLt7ySXshiVbe=&sHUmquUndmWqg=&HZAzWaUbqUnm_=&jI6FLnZVXWVrb=&8CpwnIXW_pnhq=&qSylCKVre_fcj=&eJY48_UlnqVrW=&6ecCseVrZnrXq=&64hNgPYfWprpk=&rC4jv8UmkWoph=&WoTONGZrieogr=&vNtqaEUbligYo=&uFZkszUosplgU=&eIqHwGVqcYrUY=&KliLv4X_smgZp=&_RuS4fUfjgfmr=&bpeHXtX_qrmfh=&Di5icGZigYXjj=&QCZHsUZqeVpfZ=&teJ9SxWhcddYf=&TWwdn5Ug_bgrq=&VzZON9UXdVUig=&85kz6oZa_rnbm=&VxgTWPUsocjcm=&eWwLgZVWpVbng=&dvDQDGUciWnis=&5aII49ZllgfVh=&hqTLoEY_WrZnf=&56LxolUXfggij=&uPZiOXWXZjmhY=&LGuSivYi_jelb=&agyCL4YhWrpgs=&LIRMdHWhpXcUa=&XdQ_yjUUUn_ji=&HGhRqpYooXZoV=&qXviqxYhodaqo=&QUFtTcWqZgfrn=&bfP8QKZhsZqnr=&7scskEYZdkhbb=&ckhILmUUarZje=&hyC_wOXcosmde=&5iwQoaUmXdldV=&NdBaiTVgUVedk=&KgtwvBXeo_VVb=&AavSeiWXqs_YX=&Hdi3ENWUWikcq=&eiKOx5WnZaqYe=&__LulSVrnfcoj=&OYYCPpUbs_YiW=&pMmBqWZY_XUeZ=&uCvY94ZgjXsq_=&5P5bOLZckYaeZ=&sc_E2LYVesmgo=&nZhIXfUl_esVU=&cSdACHYaiZpYn=&4gUSBrUpdbjoY=&ILQvtQXnbfVeh=&PNdb_QVricVrZ=&ChqLnhUkUkVmW=&en7GnbZr_Ydj_=&dGoDrWXklq_Xh=&CBlS_eWV_UoiU=&rflTgbZkXfUd_=&rbipXSZ_ZbeVj=&JsI9SwVZWfofa=&u7l5PGXZdolqn=&_HAzQPWmkjeYd=&RrixW6ZfVsqUU=&D_HQL2Zhj_lni=&D8FMBBWsajskr=&pfTznHZsiWWaa=&yOgYdeYpWcbhl=&cQAV9PYVWkVXg=&H6cJxyVjoXpjg=&rvUeQMUfimZmr=&Rk7slyYYrZdkk=&PsJjQpVdbgXkb=&XuUYHWYkhadrc=&MOsHIZVimddhp=&6StkaOVYfjWnZ=&utWQk4VpggYhe=&TPc5FgX_o_Zjp=&4RpRKSWWloXiV=&idnSSoXdmbegY=&TAtOlOUo_ZWmp=&5Oz4qkXZYpZZa=&i9nyFXWslcZUU=&Fh3zaxWjUWdZe=&zTrXnpZqsYlXe=&7SLrAwZlpr_pW=&LLmTXrYkrg_or=&k9zXTzVlXnaja=&_9zgPIWWWmgbk=&9WZIDBYhppnrX=&LgboBEXpcggga=&OkDAK6UdoaZsX=&8Kdg2vZcpseje=&7tPVy5YfZmjWf=&zsOnbQZlWUhhq=&Gjyj5wUUoWbbX=&d9_6vNZlsfsYi=&3DYxAIXhbek_Y=&wzSzL4WbemkeY=&WFI3_aZkfinrm=&LdfFGsZcaUcXp=&BR2BZ4WrZgrbl=&Px8aURU_sjrcZ=&utK4hJYYVYpZq=&S9k8VzXscc_Ub=&tmmIZBWgbXnWf=&3IOborUhdggcX=&6CUmpIWoUbWdj=&59MzEQXdkZibk=&S2nVybUh_kZds=&IDaSF4Wfnbdk_=&EMxRe2WVbUmcq=&CbSTwAXiZnqog=&u4EKEUZbsZXek=&CoetfHVliXUgn=&EDALClWkhZcaq=&VqZwtoUsdlmci=&c_yDEzYrrmaYb=&G7ZM3VXngqjoe=&knv2U9ZfoasYa=&aNw5XkYiUamcj=&5NYs4FZ_eZYee=&MihyNiZqZaZ_e=&MLGCx6ZkkrdnU=&sqL9T4Yikbsjc=&KmSJvIYWpasqs=&TU8XglUVjgmfW=&w3OuHJUgjfWWl=&lLc9IqYVsVldp=&n2w2ldXqbVgWn=&sqaeQFZmhqkeg=&8LwXw4Uphqprr=&C2RPQrXdYlVXi=&KVwXXjZqgdsYr=&DuqwWMZZ_elde=&qFc9CnZXXbjq_=&kTySuEVbaVaYf=&ftT8jPUphnZVo=&Yk_eAIXrYkUn_=&7Pzo62XjYZlbm=&C6kAuSZ_dXgqd=&Oy2WDYYppflih=&uJvFkOUme_gdr=&eoVpekWqlicsk=&9Wix67YhhbeVb=&rBMyndZasjlUs=&jW5P8NVXWnq__=&XEpMfTUVbhggY=&okazlIZogbUqX=&q74jCDUgmqfdk=&obbnaRZZaYWal=&A7p5AtUsnWVoh=&pZEiGFYffksio=&ukOrtwWVhfn_d=&2MdMOJWfjsrpo=&ySdaxbXVlj__W=&lxDXGCXndjUfc=&xVCnwxYbUcVej=&jrMgIMZZanjnq=&b9gC6IUcXcphq=&XJsqokZpcVWia=&MaMnSgWmhcVnl=&OHbTWoWaohXgo=&PnNs4cWsbjZcY=&KY4rKyXfX_ddi=&YFmikxWldbjYr=&3uqKHqYkWdsgr=&wAzj6TWjlnXhW=&7L86WkWUhqYjY=&sOpDVtWVebql_=&ZUTpFRY_f_nq_=&XkWNNwZfkoirf=&P2s3Y7VqcpXpZ=&HiJrWSXd_lbpf=&hj3qXWUVWoVgc=&2WZCosWUoheig=&gxrtXUXsnZeam=&BzzBYAYVUmrhm=&83W8mPWcroUVc=&ulw2jzXl_rpre=&pnF6oDZZopbc_=&DWfvoCW_VVifV=&FIh836ZYbpXdi=&GJab7yWoeickd=&x_jFc2UfiVcZa=&xYAnwSYoVi_Uc=&MQmxb4YakhaXW=&5uDbonYimaise=&qEQJ6OWXplWjp=&N34bJeZVfhplb=&lMe42vXbcZkrV=&B8hTO9ZfYonhb=&XnmiawWaeojbn=&bYHTysUbsWgop=&tgp7RLXderWYi=&IPbVsIZedUebd=&SaBzOJUWliXjl=&Rd7bGqYjYjlja=&K4QZO6XhlaXmm=&lKfdpJVge_kWh=&FBVo2AVnZVXic=&mzEZdRWVndf_X=&rKiGmsXk_gYqj=&IPuYqYY__lVgq=&IICDx4UpncsZn=&m9tdfHVrUgmib=&TN5cRbX_empUf=&Tk7sdUVYhji_Y=&YqTRRyYVpVkWf=&mYpryIYn_VoXm=&aggv3jVfedgsa=&9VtMhBZnVjicl=&bISV9aXWmqiag=&hsF5KEXlXsVoV=&9XvaoQXhirg_W=&i7sScXZsaVjef=&CPszwgYobncb_=&rP4uDyYZVUqXU=&QuczgHYnogkjb=&oj9eLyWqVfZZX=&6Gzt5hYYoUlm_=&XuK2HIX_eUV__=&QJjhvzWUsg_mU=&MN9VswXZeadWm=&Nqo9c_Yfjimbd=&flJOoTXlYelqo=&j8eWtWZgrgjrg=&rT9bxCXijZZbY=&JaYRH7YiVrWao=&igQDROVnrcj_f=&Y2qMATWadcafp=&rlzS4CYd_XdWs=&MfskWQXoorkZn=&Nm6f5GXZbope_=&KMenNSUcZpcep=&_Pv5AbVeikY_b=&b5MweWXrVpcsm=&b5wasPUejhgXs=&AHtwUuVqmlepi=&zcY8SGUgrZpUU=&eiXvXFWXrlprg=&bCc9wyWgomXjs=&xRhifVYdXsYm_=&3_FhlYYYsqcqa=&8i4EQAUjkejZk=&jvAF6YWjUimks=&XeagKbYblpbsb=&DWvn4DWmVXjfi=&4GFv2LUlfXleY=&8bpue2UljWsdk=&qkjfSyUrplaq_=&2r7HerVpfXVq_=&3vcWB6ZWkdZXY=&4TC94vWdoneoh=&fxxGa4VoslX_g=&E6OA3tVkq_Ueq=&7PLMkiYfodsqr=&Sq_R4EWcVrWkX=&sEZCBeZegkkYU=&sO4muWYpcebck=&wQ_XCCVfsmiXf=&WgIhSXZpoeaib=&_gbB7yVdohohd=&CWYD7DXbrVgUb=&KAT4GFYqlemXk=&MJiOCDZUYZajc=&wmMxqaWqckgbh=&5U_P94VUdnb_l=&wbTTmsVXZkamj=&vrScrUZqiXcnZ=&jGZvyUWYWsmjj=&9aIcQgZlqjbgb=&7AoaU7Ylosgjr=&Bap87LUnkkirX=&XLHX9fVfohcgX=&BEltV_WVXgjZl=&JMsupFXnXgaYr=&xIILsUXlie_XY=&WFdJ9uWVmgYep=&gDewSVWmcolln=&RVnfUhZbraYX_=&hXCKfwVsfmmUo=&PqDurxUUfleqd=&przzYDWkZicip=&cMihnyZkVXgnh=&YcDiCFYoVrkXk=&7EiIV3VcYlgUs=&bxwlPxXXXheqi=&9cFNucX_cVceV=&jxQmEzY_Vopck=&DjDVwnUijn_ln=&XaIkAcWkraXm_=&UUwHjCWqmsfki=&3OBrPbX_bbVmV=&QWTasGYeeWUnX=&jHaojBWUcVdXc=&Id6R2GVsYcYrf=&ptzG_MZVXXgZh=&dFtO6JWV_niZj=&4qgK_NYYsjZls=&GUFYVTWribfjq=&EMns7JXYmesaa=&RgsL7fXahqoe_=&pidxjVVooqWVm=&Ld5dusVkoogdq=&9vJSzZXlflYlm=&4XcjbsWqkWYjm=&CmOfjaUfkgWhp=&A85NTZZkXUojY=&7jBbZKYiWebke=&5TbUjoVrfgpom=&2RqJvuXYUbrgU=&DLdtLoVbosmsk=&hRIJV7VamiWqg=&2RVTiyXcXWYf_=&cTemDTYZgggeb=&HizRNMYmZlooX=&Nit59AWooqVhj=&mwuIXjYsldmra=&9fCMqdVUaqcUe=&5_Wew2WVriqgY=&knxovnUmZWbhg=&AukwoYWnheXWW=&Jp7AStVoclhhm=&ynKENrYanljaj=&7ZSEtnYirlqWY=&AXSAoZWgjkeUk=&ZYjX94WnonYXW=&scplxLUqmq_mh=&ZlpRdKUVseYfU=&YvMQmgVoXofWV=&k43iC4YVXcWql=&TD_jvIUohqgae=&9f9jkyVcqclaZ=&mYpiJGWsbZdfr=&Ixua3vUsV_anl=&tIIkVeVWrUUWf=&sPTeq8Y_jWVYe=&YgvzEsZgnofik=&Qj4kJ5W_kipdo=&fbeZWtXnbsUnh=&CknsYVZWplWrX=&PIaCm8YbgfVoa=&Q2i4RfVdaYUfq=&QHaM8SVUrjlcf=&r7PAguVbpfkUj=&2arwJSYgskgnd=&bBzVgxUqjicnm=&5ricAEYZUksle=&PMWCIuXbhUcad=&zyy_JKVXWkVaa=&wAaJHAYbqiiYW=&5h7UNjZXjUqkj=&UekG_7VblWmjr=&iF7_WbZbdYq_U=&mkGdPmXojjjrq=&WqiILhWZdjmam=&jTu8CPXrVdkWh=&RAHAKaXojlg_i=&GX2zzAWeasrck=&Thb8lFU_n_XYZ=&ujF8CsZUhfWWj=&E7g5lLZVUqrgg=&eAN_AlVdV_gWY=&WYWEUTVlWXaWV=&B2YHoMYYXnqso=&ttQmRoXVkXpYg=&fGhW86YUlVa_l=&BDmyyHZhUcYqk=&YdHd3QZplWhXp=&VBVaCJVg_jfes=&zg9EnlWkZdVsl=&RKbYiwUnjbgdf=&CJmVT_Whbgkgg=&aoXNWLVcWXakk=&__CRx7WZfdomg=&UMjKjBYgcsgeg=&nymsddUcofbq_=&8PkmW9Wc_Ybe_=&sXndpqYeq_dZf=&2wZ63TUqlpaUp=&tCYx5iZklosli=&n5M5F4XkeghsW=&_nKqZ5Yglncof=&Jf6_rVYYfohim=&2npgI3Wjikdiq=&qbme4oX_jfcWU=&ozbRgXZgfnelb=&7pixBjWVjijsq=&arQHReXilrhfj=&hUZlPjXYeqgqj=&NBa4kHYjgblZX=&89dM2gWlgglpr=&lQ7O6MY_qckWr=&bhE9c8YVZshja=&UJASH9WpaboVs=&oGDsAdXnWrVrq=&2PFF5gYZVVsYq=&zJbbkwUqXUZdY=&CXKIJMVqjeXkY=&OX4sbUVmegnii=&fHroWlVVfdZYk=&ttOcVJUZYUhmh=&dBx8vlVcVmXe_=&qOliswVareaaW=&ka52RMYjdUkkj=&wdtQVxXbhljWa=&VRXJB4ZdoXiko=&qA7_kqUkcjXZW=&_On94RZnnqech=&csl6lvVoZciWn=&Urxp_lXcbhmii=&Eh5miiZkVsosg=&gSuAkBWkjkjdX=&Jon5WSYgbZdlp=&NUsSeQZimfYjf=&GE4jGxWUkqoXl=&IiE3SpVlmYbrW=&Jo46v7UicYlpp=&cKodUJZamWVsZ=&EMZp_iVrYihbh=&L5wiZ5VscdelU=&dVLShIYVcbeep=&NaqEYLVdqaWoj=&3sXTM7XUnajio=&y5JmpDUViemVs=&ANwftGVsWoncs=&49cwfrVWV_jba=&Q5bWdIZsZcesh=&Xf2aXYU_pUlZU=&nZyC68VjjaiZn=&mY7TVKVYXoUfc=&b5uovgYWkZkrl=&vBXbbVWmWocgV=&54rjKNVlngbbc=&rOkdavWhlafhm=&9ypGTgXkcppcW=&VtDfLEViWYYZi=&6OnLQ4XYk_fnq=&oUKZQ2UoVWaeo=&JbjkDxUhYgjZX=&TVJlmxUabgWUX=&5uW9unWkegkll=&cgC95uYlnahm_=&IDMrvmXYsjmso=&NLm8ghZnneeXb=&XJuUTIUspgnpX=&lQKVOXXXjabqY=&lUUBULZlYZkkZ=&Qjz2iEXcfnWcf=&6XCDn8Wqmobef=&UV3_H5WieWmgr=&PeX_meVgjdYZZ=&LRLHgnVnonZXX=&bGe3_CXnsqfdc=&JqWLFZVfhgYYY=&UdONWqUYme_qp=&FVM3WPXhUXqnY=&bkQEmQVnjZdon=&YwDpByWqgbhjr=&_znGfNZpln_cr=&kyjVP_Ycima_o=&YhqzYLV_ncqeW=&cBsULVXcpq_cU=&3WgHnfUVakacd=&mZCjp_ZXhXoea=&NgcOmoYgVgdso=&XbfuKvXUneUfc=&tzHrebUpmc_Un=&xGcg6hWlgolbr=&IJAxaRYWnc_ne=&SDujgEXUiqmWm=&5aZ7OkWjXbmap=&U7FeeHUrsdcjs=&WuVJtKUYVlVfm=&COi4hIWcWglac=&D4eTJtUdhWcdb=&SlxI49WmZkenY=&hEGlxCYWWaoii=&LoZkppYf_licb=&4_VtVXVeoW_pm=&HAVNPRXij_skk=&G76bFmVjpXiVf=&Hrq8QNWso_eiX=&M58OaAUUslYpi=&c7s6toVfVWmiY=&v59AEdWpsXipe=&4fn9GQYkldgnr=&zsGihEYonoljg=&wa8cxdYfnYqkm=&Z3Y9ifUeYqklY=&IRO6LSZmqegrc=&jS4nSCZcZgknf=&6SI7IDZrijVfi=&ejkbKcUsnbqcr=&xG8JiGUdr_lnW=&yLjCHfUldrVre=&RuSeSJZkhgWWV=&ulJLwWXqiaqgZ=&uUiaObZdbrcso=&NJydDcWppVpUd=&rA45NzUpmYfWn=&3Zk4wEYYaclao=&K7DHBlYqamVsU=&95nIQnYinVain=&iMH3yvZnkmkbs=&h9MQyvZn_aZiq=&jdw7lVYfcqVgj=&JujqZdZnmVUge=&spjBU6WlXhkak=&fr3zedZsiriej=&QvTBQmYYnfgnh=&JRy2fkYYsVUZh=&JGwRhoZUbqeZX=&mrCqwGViXr_ep=&Zy3CsHYfjegji=&mCRG9CXWpWVhg=&t8k5fIWoUYnmf=&FHWfX9WXmVVcc=&ltwcYhVdnrbiV=&R3nJuXYYasbak=&nZvi4tXXrilim=&g6HwazZfZWdbX=&UuUDkCXZcUshj=&XCTt_XWlfkpks=&gbm9nVWiYdng_=&VtrBT7YmUVih_=&gH7buVWjjiXVW=&VFsS6RYliegkY=&kugtzcVVW_pas=&QqTt4EVffokoh=&G427StWWmsUig=&AT_uLsUpikb_d=&gxIRFIVsera__=&MAJZI8Zrooaae=&5sTlGSVbsV_am=&HuxrOaWjsWcah=&ao6tHUYXbkWUY=&IFJ4JsWidbiar=&8NqMprUUrjsdW=&JbzpCWYrWoios=&sdEbLjUXgWieU=&3VHKdCUsXhgci=&auYAqSZVlUmsc=&_4IwL5VZYeWXW=&y_kbu4XY_emiY=&ry75ktVqapVnj=&aJlGJ3ZdVjnaX=&n3aSSYUYYUsko=&SNJtARWehgVrY=&mrh_HyYdbeqae=&aDqR9tVnprjcl=&n8EwdNWWX_baf=&5CIWvZZajnlpi=&fQqmVIZplXofm=&3WINGzUsicepY=&Mx2h8EXhapYsa=&jrRNiVYUmqqhb=&FbUz4HWanc_Yh=&VqH6S5VirVYmp=&uE5ZAtVillnls=&floPj9ZfoVoaU=&rCSvt2V_eUrsf=&8C3NHoYUVpaso=&yka832ZpqqZrp=&mUBQGLUdZWcji=&4b9OWaZilVdhe=&a2FwRkXo_XrVi=&htoU89VY_aW_Z=&3PjKyxYehWarc=&ihrhBbVlVmWns=&3lzVSGZklcU_U=&qLqMIJXlpcqmU=&_GOgTcUk_hWgX=&Je6AGHUcrebdd=&ytVcFbYUpbhmq=&ScgpATUYkqrWU=&uPeFGxUafbocc=&ibzxigUUdalUU=&Rf7WwSXlhb_pi=&vhKXT5UZYkbXg=&EhbYBtVVdVoaj=&xep6HzUifVWdp=&J2wLFgVghaVWc=&a4TdA_WXmkUUZ=&Oxff43UnjZgrV=&LgjA8MWohqV_k=&46dF3mZXUoefq=&8mVZAmXUcYbaq=&YGDypFWcjjenh=&N3OfJhVcooaYY=&D6iZd5Waiqprb=&SLyZ3WUikmfmU=&PdNnnhZZXabYh=&JD_6OTZsq_i_m=&j2qSt_YdjoXel=&bvvzydVapqkig=&QbIr25XelmUZj=&4vvFbiZYcg_md=&q2zpWyXhXqoXe=&3cOnGCUiakmrh=&bJJUCiXiqjd_X=&Gbt6RJVYonZXo=&bbrKAWXllleg_=&69oM33WjiWad_=&wOuRbmVerfbZU=&v8FZHcXjXllsX=&U6aiYdVbhlcni=&ZHPU4zWlprboW=&3RyuSPVeYg__o=&3KgbZIYahZXfd=&OWY2icUnjrlfp=&TwbaAKVmpmoWb=&V_qC42XqXlscp=&6sb5UOVWfbki_=&bYh35XVdipmjq=&UGhMwjXUjVVUl=&lY8xK6Zbfaq_c=&z39oXbYWmarfY=&dt7nvZVngpbim=&VaCJqwWaVspqZ=&fO9BQSXcqXbqo=&VergG7XZqrhlU=&5IqLuTUpebg_X=&InbxBgUUbprdZ=&iVr8KwYjjknUr=&lMfrT_WqqW_Vi=&DOZcOIYdbZsrj=&mznCTqVVZYmgr=&iWIGMZUabkcej=&mZCyzRZrWgs_i=&qwW4ENUlmUcfh=&emirjXWdsqeih=&DVDBYXUgrWbYW=&zkefmJXf_YZUl=&LertWGXqnYeUY=&VEXMAAYjhnk_i=&pEzhcqZUlcUks=&g2vxEcUe_lqgX=&C5hLgoUhZdkZd=&aAmQa7VhaaVZj=&GLdhZNVYgmoZk=&E9AZ3gYUhnUbj=&Sh3aaOYeZmrg_=&g_xq96W_coVag=&flivobYXZYYsX=&MLNmDKXVggfZq=&leVXZdWafZUnV=&JnXdF7ZcsjYjl=&m6Jr6zZZdVdZW=&jWRJeSYnZdoda=&LklKk_Ycdqpre=&JAZ5JGVlapcWb=&X_pTalXaocqmi=&phQBJbXZsbkno=&CBrqBXVnbUsag=&HG7v9iWVojkri=&WKX95MYrisdio=&LpXafrWpjoZh_=&8ss2QPVZsebho=&yVaI8yYc_fqZZ=&ZNQPUgUoosqkW=&7JEXF4XWbZmWo=&wUBhnuWrnZbWa=&u3JPV_WmUkhdo=&im6d78Vhhkeol=&amjzJpXspapjb=&qlAg8UVdUpVfq=&IjEQvBUdabbhi=&sia5cGVshkilk=&qvK9y6YqnXZZl=&twD4HJVbrncbV=&8AV9t3WWrrXdq=&fsl3WZYjsqriW=&yuVfnLXaUibrq=&ts8tflZgbXe_X=&xgcfrZWaXUXmp=&jweaYIZV_hWpq=&ZsLkdvWXcXjqa=&cL249pZiZegsb=&znUjyoUnehplq=&d8kKUVZZigWXn=&n7Wq8sUpdosoZ=&8cpzhAWfonmir=&ZoP4DDWgahggj=&wioXeGYljojqV=&wkVABHV_iWlgq=&32rKRmVYgXisk=&IHspmGYjofgVg=&wNwviGUronWVi=&eGjk2BUgXaUWj=&PMUGkIVVqgqdp=&DWIopkVVcZW_m=&reSqKdW_chVUp=&3cmwC6X_jgcfn=&RGRGgSWhUrrYe=&WYbldZXUkrXck=&C8uJF5YsrsqZW=&ZvhVVJZYbfZfg=&5zj5FmXprhX_f=&fbT2jvYsjXXWg=&uoFYq5YbVjcUZ=&aCVX3cXjXqkWe=&psUyxtWmUjiji=&GKSrTIUfbphdm=&owJZK8XlVrWjb=&zGn54GWlhogXn=&ERGFFvWnfpdUh=&trBTHrYWrZokV=&UpbS8OWqUspaf=&NTbFNAVdZjarf=&A_ct4qUqsjajb=&5fmMAXUojUWUe=&9rglznZXnhpUi=&68DAvcXjregae=&oZpysvXWgXm_s=&8pOue2Ydfnblb=&nYnnmHVqrnpah=&EuXCf3UmYhZUd=&L9SAgtVchckba=&m6PP_MWgmipWd=&J_fdVzYmXqnXh=&vsv_i2U_aikiY=&6UF7zeZepVehi=&rMkqHZZVZUbeg=&VkO79EZZVlqoW=&vgUmtoZeWoriX=&E2TxFqVcZc_Vc=&9mCwJJZXnXiab=&_ktvvXYonggdV=&W9GtkzWsfoYbf=&cOoCfKZsdqfdc=&NflZX8Xdqsjim=&bxJ5QgWsaesXV=&Ip7XykUVgsZrY=&jINTLaYnhnmik=&h2TYRkXilo_kb=&Qvlg4oWmgbomd=&eLgA6JVXgoUfj=&JFdlPlWVgerns=&uDwRYSZaUUfon=&qBeMnUUmrUjjU=&OgZTB4VfflYkf=&l7FGhqYrhWopX=&2Ta4JWWhahZga=&A9h6aFYkclneW=&mucopMZiWYgbW=&Da8Yi9Zdsqg_h=&hSAChbXdYniZs=&QGiy2bYmlqicc=&pKSnCHYlpegcY=&OQcDA5Zlmbd_s=&fovPL_Yfqrdga=&3IZ5vLZUnmndq=&ZurOYKXqscjmp=&QpWkMkVblfhgp=&jJGntYVdZbYjm=&4t87B5Uhhegla=&MkPUoLUhXsUUh=&o_4wmFVZjqcVd=&iB5Wz8Xqopqkg=&IljpkFX__srip=&iJa4DnXgaWXqV=&ZsuFvbWoZaVWp=&AX3lpEZXqYmme=&hPlDvwZpjUbmg=&FCk7MSXUspbqr=&Fs4iKqWYnckhV=&a5tfM2Zmmbrni=&j9mfQDZeffcmj=&MmZL7BVghX_jc=&334UtJZs_Waqr=&cbr7k9XlsmU_d=&eiXpQfZsZjYUp=&H9TH_PUViWUpZ=&s5DS66ZjXpgZf=&lkGd2WUYlq_in=&G8oI8JVhfsrlp=&rLJg27XhhbVYc=&slDibnVfWfYmW=&a9lQXIZYsonsh=&ZKAesgZhYnigd=&YIHtzmV_njsfa=&jwCQfJUkdekkp=&l4eGSjUbVspnc=&y6a4x6ZVekifg=&zRztKKZmqsZip=&ePZqq8YoXsgYf=&lenEShUcslnme=&G_UzsHZicZoUX=&4qbXNkWYYlYY_=&wB8OuCUbeWq_W=&5x5yODVXYpUsm=&bYZ48bXahogUs=&8sBWzFXhfrUsp=&iIvMFjUnWreei=&Iez_nWUoshkqY=&cTqHFOZY_jeYi=&dMxCiLYmXVsbr=&IxSUUMVmjoqVd=&IechozZlYUfbp=&xhALfXXqhbXVX=&Pv_W6kXpahspi=&3WbkjJUrgrqrp=&ru763JUZkoWqV=&CVQ6SCYficVZm=&yg8cPXYeiqlVY=&QxL4ECXpfphWX=&yCrpDzUZYkVha=&nlvsUYVrriakV=&fLoZVTZmnooYg=&vv5DJTXasorY_=&pr3GJXUcY_b_o=&IatRtFWslZoif=&Yvn_njUYkjrod=&UsPUerXpokmrc=&fB3UpQVfrgjk_=&bX5wURYqbbYWe=&JBFcwxUgfrbXd=&NmOsypX_eoVjY=&ZOpfGnVqVWlqm=&RBWKCuYqojcss=&eQ_PJSUphojjb=&sFbYDCUdoagro=&FCf8aZZgdicsd=&HcQurJYlc_gqj=&YK2Sc8Vgkrdnd=&bPLAojWrlU_jg=&yThEfAXqdYhl_=&Yfrx8UZbsYfUg=&cajriqWpfbfh_=&T66CZXXneoVhY=&EhGNIlWr_lUXr=&wpWDQXWbcZbjq=&gH8CJpYanUUhn=&mvQV5NVXXZqWk=&HpodWCYWhYqab=&25Ag7gYdjkZfk=&2WwuFqVqhYVsq=&3OsYL9UUUfjZj=&QjXRAYYpXdZXf=&THUJVkZersbln=&G98YExYUrg_se=&xh7qb6WWrgqYU=&D6WxxyZhcs_fs=&Vkv_ZhY_qUX_W=&z2oRYMUaddmiq=&fAYYyfXahjpb_=&MPtZPAXYYUUgc=&iC_WXlYfpUkoV=&E6kjSPUXkWgbq=&awrbLAX_Yan_U=&fpSm8XYrdpXlW=&O_U_L2Yn_c_aU=&6RsjP5Zmppfml=&ycypjrVYoslki=&rMJ2h3XXferj_=&dzng8zXqkone_=&p8SnbFWUXscne=&u2pw3tUZamara=&Sy8C2WUfhhfoj=&7PpHWtY_mdnja=&fGxP7xYodWenf=&S6a4gcUZUWZkd=&hQnHJ9YXa__nX=&WMfUF8XllcpiU=&_bxUCIZYgdUel=&ULwVSkWqqdidp=&gpRChZUis_VUe=&OtihIsWbodelo=&4jywzlXpeYqWr=&PHRXIRYdoUdWe=&PcqPodVsnfpbh=&MZfQcmZpqUdYk=&OLA5MsVf_hjbb=&CXKOAxWXcjYZs=&gSaJfRYpnjYXm=&TDxiLjWepepam=&yd48IsW_ligiZ=&nygNLWZZiolhY=&QZjFcxUrosgdr=&6D55egXpepZeX=&Cbd7rUVfWXiri=&YQrTRjWfg_snn=&tp_6MpWnaXlcU=&VTHTbVWcnmVYf=&GWSvZMYWXUqnX=&SeUCGcXsUUpqr=&75AxYZXWXappX=&E_TCBFVa_gaf_=&Spkt4iWbmoYoX=&Oov9oDUVYihpk=&RTSLogZWZZhjl=&iZHTRnUlijYVh=&MM8qj6Ubmpigm=&UvifqNWriablr=&cngSGVZkX_jbp=&___uC3Uao_XVZ=&NEAuf5ZZmWhUk=&UtiJDdWeneelf=&xYFVw2Vokaseg=&rtPzgcVnjhncm=&Zs_Te8YapcnoW=&tT4H_5XksUXpq=&JtVc4KVnrpj_s=&sNcMxWWb_amec=&kPWgKeWYr_UUX=&rbgIRzUharfeW=&hTTGa5UihbZbc=&DufIl6WfoZlms=&U33_OsVpbXbbX=&u9ZPJgXnioirV=&xNu_VrYeXcsoi=&gu9iCCYshnkan=&t6ucjtZiehagl=&RvpKGSVq_iVVj=&BuZKFRUerqWqs=&DIK8X5Xkbqflq=&siB9XQYefgmYY=&We8byEWpUYodp=&_HVwv3WknVscm=&iHGsBKUnZWZeo=&PC9rYiVUqabdg=&qpf9WcYdWXYdo=&5D2ctvXqgbZYo=&mj2UQNVk_ciah=&x8mwLiXndcYro=&e2KpI5YileWcm=&8aQONgVbWiUbe=&YZmrBgYrksfmm=&OLGXqgWZslqir=&lowsL7WrVjljq=&4tY_GVW_Zkjec=&xSeJluZicbrnm=&McEDacXjdpgmU=&mcuzrlUUjkjrX=&YlRQu8VUkm_bs=&8wlBkqW_WqWUU=&zPGzArZhbYfpc=&92BIZyYjfmsig=&ycHQh6XslfmsV=&mVeUghUU_hZnq=&XxfwZtUorpZnq=&sHRjibUgXkbad=&LT_2HUVlWWqX_=&JSNz3OUYqiYYg=&792vI_VoiZV_i=&b3gDZ2XpcbUkm=&GrQIGmZfqacnj=&8DTym_XWYllcf=&xS9ss6Ujsaljs=&y8_HpaVZs_caa=&MkKc2NUrWlcmh=&_26EL6XZlZier=&m8CB84UhiXncW=&PUZO7mYfpZdif=&ZD_rAVVnYqgpe=&yQwxtmWhsnmcn=&lumYmCZZjoWbU=&VaV6cTYVmrnbl=&5SIhhpWpasgfi=&xlIizMVZjo_Wb=&dqquozUgdldWc=&Elx5sIXdbo_Zh=&9dFkbiWjaedei=&PNTo2OZjpoYbh=&ur_ppVWegYodc=&B8cWRsYcV_onW=&EsceSxVoihqXn=&JjBWylVseZido=&gU2dh3Y_lfXcp=&AFWyPWW_reXkV=&PYva4MUarboaU=&qN5FGPUWpjclV=&jeYixFUqlZZad=&TBC_WDUUaniaV=&86e3BeWXZXrYo=&VpzgnWUddpqZn=&wYsRSVZnbmqUa=&cDMXthWWVfla_=&VCaGIiXZgqU_c=&OydwAwYiUebZe=&EVdczTWqdlseX=&rbyBZhUVhWkci=&LnaQDwVkYlqZp=&yZnlf8WmbonWW=&qydBNnYlWmkfd=&UPL5F2XXhVYba=&X6xihLZjdfadb=&e5kIsWVkfenZl=&v84fW4UmbkWsh=&zL4IJ4UZhUUW_=&GvaP2XXehfVZm=&xoUOqIXsZpjoY=&E2ShcFXpdoWoZ=&C27w7QXZkbX_c=&Wz3Af6WZjdsmr=&Sm7d5fXgoVbfl=&sLhrlBXrmiUZn=&NbAdChYnmc_WY=&yrvIGqWVncUjY=&9teYaAUYlqVpl=&3SAVnpXrWaror=&KFtWKIVffaqsc=&jIp4T7UnZbjne=&Giih6bZlocYpd=&T_44ruVmWiosU=&UHWJCpUYUXofk=&jeFL9gYppX_hq=&3dindhZjZWeWs=&6oUrGlZUe_erW=&B_tliaXpjmfqm=&9h2C5vYrncUWk=&jngXfkVsmgpUp=&aNWZBeWYYhpWe=&vgMXbpYXmbXdd=&necOB3WYhZsXg=&ZMxRhkYmfoqnd=&nLDdDjXbebedd=&V7PDCFWYnhcjU=&TYYSFPYfeiekZ=&8eZpJOWbilfU_=&IDRJCuUsrejpV=&qZh2xFXisXaYi=&BjsQ66XpsZepj=&qKBLlNUsmjjdU=&CidX4SViUXZiX=&ykyrFwYakccWj=&bb_LnyUW_lf_Z=&xZFgA_UkYaZon=&zR_OhnVUmames=&MFmvhIZgY_jms=&f6NUwMWiogodf=&hwo58VYbVqpVW=&3sVRtFYrbji__=&csfgbnZfheYcj=&LrtsGeVcoZkYc=&DAkLeGW_VXipk=&4OEoiEZhhfVn_=&VFaZfoUspecfb=&VGPdgnVjXnfeo=&hoeqR8YUgYnWj=&ijyLbbWUZYjab=&lYn6mcXgkinqU=&R7TDrLUqeXliU=&xJ5tcaWrXnfWk=&YCWDhfXpiYraf=&gf6gPqYfUUpjr=&ZJZzVEUsfqWgr=&mcMGJ4Xsrbd_Z=&I4KXHKWhqViqs=&RVmoX_UZXdUfi=&aSPXTsUmjUiYf=&EYVzbZZjVcZhU=&HekmpPUlmVhXi=&YbAwJaVrnorXs=&hd5WJxWipUfne=&PBCYfhUlqZpYm=&hrJRNuWocXisj=&5bSYk2ZYfahci=&a3tExwYWobeW_=&ucbpY2ZgnsqeU=&stkKbpZormncn=&ZoLZOCXWaplqd=&3zj5ZHUdUdeeX=&k5qP6CZVaVUmY=&WO4pbaUpWknZh=&gby9SIW_YbmWf=&wF9GciUYYiljo=&8TipcIVZsgkXh=&W6hYCJYcbfadb=&Q3lyztYWflarX=&7kPXz4ZccrapW=&cSl9DbXjaWYmq=&dqFYcfYbhVgYf=&o5f9qsYpqjrZm=&sj2k5BYYklUrU=&Km6hpIWkVe_jU=&TCweidWpUXYod=&DbNLE5UqpriWr=&cbsXJpWbbcbZh=&bSIwfGUkllqih=&VYmtPeXXjpYfl=&zgdW3NXcrkXUV=&W5RCixU_Xmqfl=&9VQZjMWfcUVWe=&i_uvtzYUbWmXs=&YlJR53UUpgqrk=&MNsg63XUdigX_=&mhR4UPZhpqrbq=&hTglHlYfZghij=&_CzwTpXcdpddn=&HpUOQUZjbkm_k=&mqLcleX_sshVc=&DY2bvcXbcsmrk=&8qwaHQYehbVsi=&JRgYlsVpmgoff=&2Vvsn3YaaUZnp=&5GBncoWqhjcVs=&WGG2joVVpmjVc=&aW9OqxUpkeoob=&T7ZzjmWiflXgg=&d92lCxVgkUncn=&A7InfiWfgodcn=&dLL2PGVhmipgd=&FIMmFpXYnXlrX=&zOWt2ZUZmfabs=&96ZDewZ_eY_lY=&x8_mtkWadfsUm=&LS5YwRWppWo_p=&mZrCuKZgefmgV=&gmnawEZfkWZWV=&NnB6NGYjkbYZp=&nixxVVUsVVbpa=&HqdiKMVgq_iWW=&pSAgnnWlerVds=&fnGhYYVe_oYV_=&v5CB7xXs__kfo=&HpUeWFXoZcgYs=&FP8cPuVnhUiqa=&OylohHWVlomUq=&7hqXT7XrinYsn=&zbCHg3VVbW_bk=&xC2AZbZUagkfX=&o6bdPJYrqsheU=&WVm5qKVklXaXs=&ct38t7Wen_lsY=&xhqSbPXlcomUb=&_hMytIZhYcXae=&V7NtOQVpjkWrY=&Rjz6T6VViZffa=&RgELUwZkmhdff=&nwvIXDYejokiq=&JqVlzqYcVcmZr=&kHjVrKXsYcild=&KLfAj7XVaViWd=&FlSaE8YZhqcdl=&kfHpiFUgmUkhq=&OAIV6UYohjrom=&QzSMABWgnUlmV=&EXducTX_ZXafY=&Sky29mYkYgchd=&SGXGQFUi_jmrV=&EdUDz8YXfUscd=&sHb9iHZbdooaj=&EFAvQYUYVoqjn=&bRQAuPXcmsYZg=&wm4_OiWYmVXbj=&HpvzVLXasbkhq=&of2vspXWXfhh_=&3dArWCZhlghgp=&ReagNmVdXdqlg=&2NOGFRVsVeWiX=&5xdnUOWZd_jqf=&ULKBFtZgprqaU=&NXUgVQUhqWbhp=&c89ydcZqnoihe=&QeIsJ4ZlsYssZ=&sgXQ87Vodprmf=&AhT7qAUUgohdX=&RMbaUgWirsdcX=&qlALqkZclpbUZ=&fN9EKzWgbjkhr=&Dn4klcZaohXVp=&thpbu3WgZlVak=&Ig_YXoWimeprU=&Y3Ij7FWfgic_q=&7xaneAXgobgnm=&q_aoh_WpX_Wpf=&gmHnSxUUalsgj=&NqOIrNWaogfZi=&9d3yMUWenYqWr=&GS8yFeXXrhmgV=&3mI2QgUpUqqZs=&FCTrevWqY_ink=&NiInxQZrckkrZ=&xZVG_6XWrXfeh=&HaaLOHYfgZVhi=&vXFvgeVeYgog_=&eXJzcAYeYqYci=&AOofyLUdmqgUs=&J2AadBVhiUrlX=&XeOxjkWjofcVn=&ioxu8wWenaafb=&UsQHbWVfbXbiq=&VtQxUEVpfsUfg=&gjy9PGXnbmZoj=&xwVMZrWokrgcc=&UU5QwJZUXkYge=&NB_KxlZW_iVih=&uGUHWJZfhhjfZ=&IlmOH6Urhr_Xm=&D9SYfiY_mf_ia=&3liijyVgmUkZj=&xujvW7WmWanod=&dW5NkSUlpsbjp=&_INEDmVffabWd=&AbjWhXXeqUbel=&3acTZBXlaVrbZ=&WiKESgVdXllaq=&IpiliJWbaXgYY=&b6aPGDWZlqeli=&DNyrdeUbjhkhf=&Z5jyz_UacWWZl=&NgQySxXghXlVi=&cdp5ciYgXrf_g=&YyMc9gZriprWb=&kOA8diYqpWh_p=&E_oAlEWmZilaY=&sg4xAqVkkkhgV=&WDclBZVlqkhsc=&Gsgzz_Xbogbki=&M7bdgHUmgrqUn=&QpqOsZXmmYXkr=&uXSLnvXqhsreU=&HTkTNuZneoZqk=&MReTUWZpXslj_=&gVeTdBXagVeaj=&32vEnMVriniYX=&aWgRQPVgoqpVs=&YTpSOtZsicbq_=&c95DZoUWpVsV_=&8RbeQuWYnafhr=&3cPbsrWZfZ__r=&cs3LqBXgjZesa=&JW5wMyVVZojcc=&Y6NifzZhmf_gU=&WYAQIhWgqhggr=&MfSWtfZjlriXn=&FYUGk3Z_bnr_e=&MKEjTlZ_WpZng=&p9_scZYenhVec=&IzaYGBYcfZfbX=&kajbmNVbfc_Yl=&ggEinJXeYWWYg=&HIZHNcUoclnob=&imkgNvZieZimj=&EOZINiVr_qps_=&K_rNyyUsja_cc=&acac3fX_Wprrq=&pyQIwJUjmccVl=&_TRQmEXaYngmj=&QmsW5fZaghgWc=&AUUhRlXgZooVf=&eV3MkvUnrUhei=&OxY8DOYnolg_W=&NV8ygrXYUWbkZ=&TcB5wmWbWjsjg=&pQC9NwVZfogoo=&zTJcQtUnVggob=&xqjyUuYUjoneZ=&dUJXccWqglofo=&TC_vVrXYsfchU=&s4mhUyZjgnlrW=&tIYPlIVclrl_i=&yArFghZnqXcVe=&CEBX2gVYrZpmo=&bNYXesVcahgUU=&fkE2yXYjhXfhn=&6_Hc8bZdidcfp=&Cvc2CpVhfgXjn=&HQihfXZsrabhb=&KQdDtCZamUgri=&H6xQuTZoeXbbh=&yFJC9BVZi_ea_=&ZuY7aoYqXdorh=&TMyH64Xrik_pm=&d3KdyYYaapndo=&pqdLssZfnaneY=&Mqfhy2Xlrcora=&4YJGrZVpkVjqp=&Hct8JYYb_hemb=&MIKwugZk_XWZa=&r4JyuyXbdZVoh=&klcstYVbjUsoc=&ZYIRVjXocqner=&aJ2cfPUmgfZUp=&eTtJgqXWcbmmg=&rUy5CyVXabaeV=&leS5OjWmdcdgh=&erwJFqZ_aYeb_=&rdIcfDZUbdppa=&jxtta6VYVi_Vj=&iAJk_zVqrmfdb=&KWspHdVeroWrf=&stmMSuXoskUWn=&iIOqtYXiXUdep=&K5wHzDZokoYqp=&fekntpYgncWdh=&f8RhzEWhgVjil=&HTrnACUisocgX=&rBuJldYZcoood=&t2GU8CVZoepni=&mdG8OGYnXYnhj=&XBx6EKZgpec_f=&vDhwRWYsckpq_=&xAmaDlYd_fes_=&EbeAaTWnjpWXd=&nrSkJwWUXXcpn=&eoyIcFXWcUXiY=&fTYcP8YoaVcXZ=&TzNmCWWXbVq_V=&EiOKQBUrkVlpW=&tnJ2CkWaXrhff=&zR_o25UaWomc_=&T4F329WjlfXnq=&hrxaF6Xcpbf_s=&nOpBi6Zejmchm=&VzY_VXUgidcsc=&m6ES_4ZpkohXp=&c9jARSZWlXrkj=&HMky7MXZnrrsj=&tBqNS_UWgdabq=&Tx4uTdYZdalVW=&ghJr7jZZg_ZcW=&pCESItXphldjh=&IsLNOJYilkZWm=&RdQG79WqXUXjm=&xZqEEkVqcpblh=&UcN_eJZdmgoYl=&EvUaowWYbesZk=&4mRdIdUkogoon=&P99AR3VYiV_qn=&2uT382WblbnYb=&OVVDscYklUpoY=&FVW2diZoiqgnn=&8byIqlWVkrVhg=&xgYpX5YVsnnrY=&8EYOIQVcnhVrh=&5UdJOAYpgogZd=&hP93etZhnrsYc=&PU3lm9XmYspbe=&ur6ZjzVXfbfps=&23kuMNWrVYlVn=&aEEWKhWsUepmV=&YwbJRrYmggYni=&95maeWVqZlpZs=&GoL5cKXr_lfsg=&GphAFrUWsZogi=&KcdxSPXoXmlVY=&juqfTqYqccbZg=&QjzpJAZcjmplh=&77FpNSWciojXi=&dYoKk8ZkjUlem=&wOuCBDXpfmWZd=&SwrCHPWhbVjoa=&Zi5ReTUqXogpq=&qXSkiSZXY_ia_=&ssACk4WXohbif=&wTZIKLUnqhlmX=&Bh3lMbUkdgU_q=&nHqsFUXbWVkdg=&sdKMlaX_nVhfo=&bkQbQOXerrqdr=&odpPq2Zonjbqp=&9bdSJzZZk_fgW=&GpNFiAYlbq_lb=&PkSRbyXcqqXki=&iN5G5vWegkafi=&OH7AfeUVacXdk=&TBOecgUjoWkfZ=&7HUjyQYa_UaWl=&uiYRjtVUrgocY=&KQ6gIRValY_Vi=&XBg9gxZrnbmoU=&Wn8UPnYVfafYW=&EXuKvpWcpbUdj=&nNjMNZUrfdbmo=&BgmBfXUdd_ads=&KS6zB6WdeiUYo=&gEZslsWdYnckb=&YIUZtwYfnpmma=&y_szMPY_ombYe=&azApXQVbZlheV=&xfC9HtYXlYZie=&X2PJWIUsqknXb=&HNWdJCVkWbVVf=&KvBwekWlilnbl=&8pEllOWcrcfWj=&GdnywxXWpVisr=&MPeuTrVsWdXnk=&5TW2PdXd_WXoc=&bov_xzYbsUgka=&2a_WUjYVabUkj=&cbyhayXkoj_ra=&dlIzWEZjUsnWX=&tHwYHsZ_prpeW=&_dVotjUrknVnf=&PKWcRvWsdgjga=&tbivmOYjqoWXg=&5y4qHqVUXXhlg=&pXUqP2YjWcgZp=&iZu2PqVmfnoWp=&DW_BlZWmeeopU=&ThnE5IVfjYah_=&K4YSNuXoVVXcf=&GdRQ3sWbsfgcp=&P2_E9CWdchele=&OMVG4RXkmbqpn=&Z4LtseYgoelpV=&6ZUOdFX_ejmsl=&I3AEFGVciXalp=&Hv_xpLXiUfhri=&yLZ3CqZhbiUpd=&8z3e7YYnqgae_=&2weqCAYedqkZq=&rvMHFrXpYbZjV=&5fhumiWgZZhlh=&JvADatWU_elsg=&Q_mbyMVamgmnW=&f7DlZrZir_jjg=&jVg42JYnVmYXV=&JLbfoPWgsoWqg=&hA6mqJUeYZhlX=&ncCYuxUZepl_k=&aGfQ_UZonUXbg=&6BkLMpXielZW_=&2FgexhUo_nmYq=&l4vxEeWmoXWkW=&OQ2YPKZUfnsjX=&SZEMFuUq_snnh=&d3idpnUknUbXU=&5ACyExWWaYkZV=&UZA32zYqfebkY=&vV6b9DXoigVqa=&vbU8yeUYYnfYa=&GOxIdFWiikbip=&OahiG4WVsboUn=&eXjvTOZerfUom=&FUFKbkWspabmo=&uowbZ_Z_jXgsc=&KarFRwZjieofl=&MtrMgeUslXbbd=&SXQyOyWZXZfYi=&Z59gOsWiXUVnn=&Nxax5FWhoZdmq=&LoPKTKWekerqV=&PA6abUUjbmZkZ=&t3tcegUVqkWdr=&l_fUJ_WfcomYX=&t86gTSU_W_riW=&NhjSqiZfUYjpk=&ZqAEAQWYVggn_=&L6msW5Vphmsoc=&Sxk6dNWngrfZj=&g6UdFjYXXgXVh=&xrSNRBXXdYgiV=&bb6liiXcYseVf=&mmRJpJXrqZaq_=&l9_jkbVnXjqgi=&_ZZyVFWrrlpV_=&kteWUQXrV_ons=&QfybLkYmkgXfU=&fcVERzYlhcqfq=&D3diy3YUkZqeg=&NZ5txJWWZ_oer=&CP_b6cXprWWif=&abWyg2Wefjqdm=&aAbHxwYsjbbkZ=&lXt96oVsXcWdY=&MZvGwuXUrZlYh=&ML4xiCU_qkeoe=&jyvoIDYshhndm=&UMWQUsWjYq_i_=&XEsDvPVUakfmb=&Qluz_ZUhcUaZs=&fPbzhuVaZlrYm=&PKxiaZVmnjXhb=&4KeyqcVfdsbaU=&ZBwwXuXpjUcXW=&EntlxXWedXcWq=&pShLYrZlkb_cg=&KjjmpOUsWiisU=&xByNDKWYXpgeX=&7VwIKTXVYioob=&DhBPZ6WqsWha_=&P9zTTvYhcrbni=&qIEvwzVVfd_Z_=&KYONdGZlrsalh=&VBmNEKWdlgVpo=&kIntvGZeegWin=&Wf2nFaXljYYZd=&3_mEZPXYpm_qd=&YZ3UZ3XVncbrY=&ZelXK3ZVacaaW=&ro7dVvUrkUcgo=&YOr2_DYcnnpjY=&qHmOOnZsZUUWh=&X2XXXHUXVpohZ=&8S_IlwWWddg_b=&CaCm4YVbsedXY=&_rdTkrVlpUofV=&2aC9mcX__ifcc=&jyQykLU_dlXUa=&cDpnYGUdmnodl=&2ahvVaUbpgiUr=&ibIq8aYnbgjma=&K73YjXXVeWfko=&M75qvQWonUojU=&l4OXhwVWapijk=&KIVxHYWXepeZl=&jtkqC6XsrcWqc=&TeZgRhVXYZUgc=&6a7SEMZqmZZl_=&mh_x_KYhUkhbY=&XdQTBkYfnksfo=&nibegjUmksXbe=&DRuhMyZVn__Wl=&MLfsLqY_Ulelo=&2iDFWPYaslojh=&WJVpSXY__hVrW=&LFrRpzYqXmblU=&lQlMMgUeigri_=&FAsnl5XkbXgrm=&jZ8Kj6Yffphog=&NhuSOKWsXYYWi=&WwNTDQWYbcakZ=&bfJKLXZeqqnbj=&rdhj4MXVqlnhZ=&E_Thg8VYUmbse=&asAorcUcdnnod=&IEWS_wXYllogc=&Drdw4lVslhjgi=&shzK5OVcaiplk=&uzA3ycWZsd_Wg=&QjCiJdWphcbZ_=&xFA9B7ZnhjeY_=&XQiPRyWWWV_bc=&E8AfVmXaiebeq=&KTMiAOXjskm_i=&zELwYrWiZrUrp=&bc62D9Yegdhan=&D_qBArYsremkb=&iFRRxZYhlsUVp=&TLYb9DWUoljpg=&o9_SU7XcfXkYe=&odh9B6Vsfksps=&EXdnSQYXkkeUd=&EgVmfJVhVsbdh=&v3fXwoUfhaerX=&qRRnRbZlYlXsg=&vMvdYnVlUqkXs=&Qvxp3WVgYYmji=&EknCbbYaioeki=&cOk5KgZmldhhW=&JwJRqAZprmjbh=&uZPHSBZWh_ssZ=&6luXVvWnVefsf=&JftoLfZVlmgVW=&bTHb3bVfhWXZV=&GzsecBXYemsYm=&arQtVnXpbprlf=&YhVacqUYr_fcp=&cDW3VfZ_jlWne=&7SlHAhXgpjklc=&pzjL8CZVVgoVe=&tSZvvgZmdieXq=&NlNwigVrfUdhn=&2acyQiXnYepXa=&FV9POlYkgsrpZ=&INnAkyWUoXllg=&GhBBNjYrVnoUn=&Bo93oRXXakoXW=&r_nL8mWspZiYp=&h2zilWWYranYZ=&xNqFJyVWqhecj=&6I3LInVZlprhi=&H8nsRlZXXYW_p=&bw8uB2VYgYioW=&izqYl_WrVabkU=&T5ENWWXgafbYo=&n8zcb9Vlronhq=&IyhN8RWmXojbo=&rZTM36ZfiWmcn=&WtIaBkXXgleld=&AoFCIVZchgsX_=&GYjtBpYpcW_aq=&bRMB8BUdYsUVs=&BQBdNFWgVnqoi=&N2slXjXhocngf=&4LoXaOVjboc_f=&eliGzBVZbs_eb=&vJktPBXYVnneY=&6MZAS8ZXpZUfV=&83NoWrZoamadU=&R8I7cCVcaXarc=&dodrm6VkmesXn=&rRy5w7YlhnrXU=&IItVWIZ_Zr_Wc=&49YIHFZhZmifk=&d6cC4CVZVjogk=&xPJyTpZVbhage=&hquFKXWkrjsUo=&3KJuuDZUlVsge=&EEMYYjVVpjenZ=&zMVgesVreWrhp=&b86fmaXVlcchn=&K8If9WZkirXos=&vDqZ7PYfrrjcp=&OPwJIsU_ocros=&bLt_YwVcronZc=&vIdWklXgZllmc=&hmy5dgYqceoZc=&JVsGfFUsfrbsU=&2H2T3yZrZhUnW=&5q2_B6UsdsdYY=&4s8eCtUg_oek_=&_t2KETZgdWdUh=&leV33qUfcnpqk=&g6r54rYp_mhho=&2G5DrGWn_brXs=&awuNKlZgleckX=&d7GJ74Zhlmnes=&u8woTGWkpophs=&ttGLbqYYqafph=&L44sIsWisUlZm=&psJyfTVoZhoas=&8PANVUXf_ll_l=&pBsP7iYUjsYah=&uEHPFUWeVXYWo=&FNHqVeXnccZXn=&9NGLhgWjWUnpf=&WomofVUnZsj_k=&8n7qUzXrefskb=&DvrBmgXgVYYgV=&c5EBkNVaVZVin=&rSH35tYVZUYnr=&vYR9gaUieqcsn=&KKJi9sXqWhrkV=&r5esF2XerksoY=&BOdUFYZXbdadn=&2pr5fFWhYjlhY=&EPuyRtUajcUhc=&ZgTzWoZnUoees=&_Y3fHrXbhaf_m=&rQXMWeZismZWb=&2y5ttiVfXsUcn=&MzAAsvUgrnfgY=&6Kt3FtWgolmlh=&lYiWuPVYpbacg=&D_UyhuUYboVgh=&paUls2UrehZkr=&7gycBiYVYekoh=&Qwiol9UidglZX=&8o57KmVlc_lpk=&dpaErEYsmnqoV=&qPZ7hsWXlYYUk=&rO5KVPWpnjpXd=&nNFg7eZk_iWYf=&N7kCCbXnZgoes=&KpjOSRVWqlsdp=&VIsBkiUbXb_Wi=&fHLsdxUdbcjUr=&8gRc5zZpdYqWp=&Mm2d7QWrUikdn=&AQuhEnYjXmdks=&ozvIJjWqkjg_i=&qJg_SuVYn_qWg=&YH6Hy8YXfZYcW=&IhifqpWU_ZdkU=&wHjZG7YWembap=&mYWxpUUlUd_pc=&JdMh7LUpWpgXi=&Bs7k87ZXlgnir=&CKb7Y2YYcohcW=&tpzxYMZfimXgg=&Koml2jZooXk_g=&8z_tjXYibcjms=&U5iRhTWWXVhfk=&xguEHhZgplpVh=&cpcvjQXprkrss=&PDyuCTVkrpdnX=&aPWjk6WXmmdnr=&zXFmWkYpZmkdV=&z8NlGVZXoisZd=&9VV3RAWqslWba=&NVX5rJXmgpcUg=&lWqxKyYWjXrWk=&pAM7WyXnrjXWd=&AKBjS8XamqkcV=&im8cBxXnZkXbp=&OLHIzsZ_efrch=&_tNzrqZlkr_ma=&ZeA8A6Zh_pbiW=&xJiQldVgnoWsZ=&drzmKJXsVlhdg=&tB2rt9WrsqiZW=&DlpHpEWghbqem=&Xe9XmdYnUdZho=&Zhb3WPVkjmZUe=&moDGqgWUikfjY=&pTpFOtZpXjhZs=&XZGKApZnXcZdX=&w2dBXmUilZXm_=&NGlQYWUbYnjes=&qCxl_nZWVoWjX=&6Jlv83Xkl_Vcf=&uvRJjTWcpeWdk=&_aRbqUV_oWqcs=&u5K3aqYddjq_q=&LWz5xBWsVhVdf=&R5Ud9_WX_jele=&JzDSAIZpnqZkk=&WK_ZRrXYsnsVh=&dzi2DyXhfbecX=&wRoazzZrfhpXi=&ANFPgYUgkqrbk=&BLMtwsYpobjip=&XiTgHVYiqbZl_=&ohIA4_Uliahkh=&RBQ5uEUXYgk_c=&rzQblSUfZfqhn=&QWWfmQYVj__ci=&7B89iIVXUpesq=&oxUAunYiklaqi=&tY_dasWmiqqrU=&z7nAn8Uc_pdhW=&ETeG_DYdhcala=&XUo9cTYdqrZ_c=&z42mUSWspXZWn=&bowsGyUZkjXVW=&wbRv4NYkUZaUn=&HcpnmZZUasqUq=&d95BdWYfcbhl_=&PDAvhxYempnrf=&rlXooTYb_hsap=&cgEzmyXfr_Whk=&_mixBKXssfs_Z=&qZpIxtWaUVWWc=&OhnZIeYnmrlnW=&6MhuaeYdXVoso=&a7Th4mVnrrsnp=&QzYwQ2UrcaaVr=&a8F2nIZUjaiXY=&yslXkIV_oYaqa=&R7N_GXYgeddfp=&GmurLjWk_dijU=&PpQzkmZprWUlW=&KVMetnVrso_qa=&Dj_6CNU_mqqqp=&TShaPdZcranZj=&gVpph4YgkeqXd=&QSPyVXVnpUm_V=&DzCJGEUhUhkXh=&cp9fqeVgoZnlb=&vmUPg6Vamdhqf=&lEL9qdWg_kdgr=&rzGpDyVelgpmg=&XFx55vXqkWiUW=&a4N8o9X_rfUah=&uc4DhCVeXfXUm=&M9NX4oY_qoWXp=&VAoqSPYXalhsY=&TlHJOtUYXnspp=&5GUNJGXos_oVl=&dYeW_OZiUjgdr=&CuGGIkUnVqkXo=&t2E967Ul_Vrjs=&RLGOSRZebobsd=&RCYUevUpobfUU=&eYUoqpXsdXWWV=&FdKGM6Xgqpbaj=&y3Bcd6Y_iUWhj=&HRCZeGUkYiggc=&VhtgdlZ_ggjdf=&5ZZxU3YmWcUdj=&ByJhSEVmklnbm=&3BfkwlZjcnpZh=&WqvsPcWebmnhW=&3mqCsQYd_forY=&Ig9rrHWkhaWro=&rZdIUQYqYfXhX=&YbZmX2VmhmeqX=&IsMMKOXUnabZp=&UVtt3yV__Yclm=&QQ5unsZ_flmeb=&W7BHvDZaUhgYZ=&sX7_vBVbaagWo=&8NANjeXcseWom=&gZDVkgXpWVYoh=&doaeLSYYViksk=&qXDoHZVYUofnc=&tpKRpZUknjedX=&MdcOiYZoqZcpX=&8jmsM4XZprVnU=&4S4LC9VUYlUnr=&KuGG9DXpoqcdj=&WiJVU9ZjZjsen=&BOVer_UVpmdmj=&Glf2iTWdqhrnV=&6_7koFY_nUr_h=&_RlzlfXaebi_q=&k4v6ILVemgeeo=&OvPllAZlWYgrq=&TYdCKsXc_cnqX=&iTsCCpWWUrZgl=&jusDeqWZksmss=&x2Ii3qWbXphiV=&4TLdKfWVehhcj=&2vAEzHZmfYbk_=&MmVSWoUpgfrne=&5vCp7PXjhfhcl=&yp7olZXkcVplY=&yS2ntcVVk_rgh=&llEbT2Vq_hgse=&P9eZSjY_Ulnqo=&GYQgj9UdrUfnk=&x2dAlCXUVadfr=&MVbUaZXcfiqUa=&IHn5lmViVolde=&t5huvWVr_pXsq=&xJnXVQUraYscV=&UEPMYwXgdeiZf=&ZdLa6YYVomWll=&NF5UTIYZsUWna=&UIGKRkX_cU_bg=&8s5Y7BYUfmZbo=&VU_cTNZeqUpdZ=&GGxBMkXll_mc_=&DY77htZVjXhif=&Jnft_AZkofXZX=&FFXNwkWm_qfdj=&KDZvnXWksolkh=&TZKaLpZsdshqk=&dSMHhGXYsdUff=&5hyIsDUeosjg_=&nNMljFVoZeYqq=&DQweIjUokqacX=&CitAyyWprUWm_=&EqgtYuWiUaYoc=&QHrffAUhlarcY=&hIIW2RZWkVlgl=&zTMevOUckpVqs=&cS_YGVYbrXkja=&VVc8KsYrXasrX=&_7OpWWUoUgalj=&rrt6cGU_WZfX_=&tTv8urUmUeiVn=&oFFgSoVVcXkqi=&nEMbHMZVnioqd=&u55tikWbYUlnd=&P5DgLVYjkqbmn=&EeUTEcXorscUa=&eNUMGaUVcsXgU=&HG7iNcUdcUhoh=&OpbY5RYllhkna=&gDoZ8oYcsoWbj=&sMDOaQVsamUVY=&9GapHsYhUdcUr=&WokmTrVcbebaa=&2cg_zgV_fXekq=&MEmYj6Vs_UUiq=&S_n9GMYdbgaqW=&aCmHSYUoaXcdo=&2_o68uVspodeh=&3BwXOeWWUqaoj=&5OTURLXooiiYp=&v8cnXIUbp_Xie=&WxYgLZWpoiW_r=&VXEBxUYkgnYsi=&7FtVpTUWnhqUo=&6USBvtVejifXf=&Phuh3MZadljjn=&krCTE_Ucf__dX=&KCT3hoZhbrp_e=&nYcIjtYmZiamd=&uedq5PXZjfnoq=&y6nOxSYgfY_Vk=&M3nOnwZplenjU=&LN5ZquU_ZcXjj=&K8YnP5XdVZnil=&fm3jHXVfZcp_p=&OIaZowUonbZdm=&LWAvV4UeobWhl=&gjGFFvZkmeXkh=&LT34avUnrekVo=&jdcuTHYmsh__c=&xufKsnVqklpad=&aUl_ocYnZbehU=&ZzJbDnXifhhcj=&G3UrI4WlUXplb=&fV37HJVksbaVi=&FTEKXhVYsampr=&JG6nWsVilfUad=&_3hZatZlYXsiZ=&kl_BSeXUoYmmW=&czJ52CUpsZd_j=&QrIIydUp_blZr=&9VzKrEWrdlepi=&RxaKQnVdmjoeh=&gfvvgXZqsmiXj=&caZYXXXhaqpqX=&7tcv2NVginkUf=&zw5w5iYcjUhmg=&4LLY43UobrgVW=&TkMr4VXngnXpm=&WrdfYiXcssfnZ=&J9oWZoWZVobmm=&4RylRBZriakVV=&BxJNZ9UYWYbqh=&CYJ3l7ZjlkVpm=&klqyzsVrireZV=&eVMFRsWWWkYii=&47ZOamWrbbYee=&fbB6mtXigbjl_=&NtmSGSVbUVclh=&nmUJuoVXroece=&9Tg7tnYpfogg_=&sYpyymZahopid=&iZP29ZWhhUpc_=&xIGyyPWjWVkd_=&FZ9xt6Ziehekg=&YQaJhRYhhj_sj=&xsTEMVVrUWjhk=&v4t9ALUUgUUbc=&Nyl66AWiZVqWn=&wdaNRXYcpoYkU=&Z9u88sXaXYUfr=&9RuZeHXWco_Za=&wCbRLgYaXpkms=&wDNskqUVXkoYp=&k6riFUYoglXhV=&LaExK2XiqVchd=&M6IJIWYVUXoeh=&K_Nn4_Zaskkan=&3kn8nlUnenmZi=&ojbZK8ZnonXZo=&Vf9QqmWgiaabg=&8LtZeCVkoarX_=&lNXaGCYUlsiWr=&FNYn42ZflW_Vc=&8_s8kYVslnUrp=&PvHsoqUWUskVX=&lpAf2cWpUfjfZ=&3h2AShYUdUilc=&TUcjqMWrrfWqg=&dfGw73VVfmUnh=&XTrGmaXnlrXps=&4fBu6yYdagqac=&_RiMqSZneYYhj=&9fo3T2WdVmcfp=&RxA2XpYbXjjoi=&HX7g47Vsss_ZU=&Jaf5ypWkfdbip=&SRAM5VZkZYl_i=&BA_8DXXU_ciqo=&CEgdx6WrfVWkV=&2TDkUZVhilqVb=&HF6uCnZiirXgi=&652euzVVnpVif=&VSxpO5VcXjqWZ=&WSIntdUepadqY=&vJrON2WgVblji=&qP9VgYUoqXohb=&s4Jv62Yeoccpp=&e4HxHwXrUolrb=&yDjVz3Yobjq_V=&yCCsnqYVZdram=&DLHePuZfUghoi=&PmkXXaWbnslZk=&fPElQUXsUac_r=&cnonU_UUaZnZs=&epDK7nXl_mhfc=&9WQarCVZiUorl=&oBHcK_UfbXlmd=&7XVnfWWpnhjlY=&hKkcmrWraspbY=&SYe9KyUoUYZ_e=&qTKvPqXWciWbY=&R_N5XnZXUVVUb=&ik2BEzV_mlqg_=&6SaQT8YiWU_ga=&LeaLrlVVjUZhq=&uD4FTvVWpbnqs=&Brst9hUjYWYpd=&GCoPZqXqcedUZ=&qpCyfuVWVXmUi=&VbLNfjZXkrcYg=&GEOi6mYkllncp=&ULz_mVXfajssV=&8ASywkXXlijaq=&2KO2jfWlgegec=&Wo7VzMWasoWYl=&nvhuSiYopalff=&hzpwcoVUqrkeY=&KcNjMiV_qsZlg=&GK7jaHYaniiZl=&J6EMfPUidZ_VY=&CeSEgQXhoaZWW=&qwCBsHVWhmaib=&I62EECZeXiYrm=&2Sm6dfWgsXVsX=&L4ZomNWWpWXZa=&sdtpJ2Zogosjc=&y9NJqJYgaZnrZ=&VvFnu4XW_YZUU=&PIc5fMXXr_Wdf=&HDc5nzVkdZXqX=&JdyLIfVgsZnUc=&okpm44YWrldkr=&kzIOAcYUlsjhr=&7awchAVrWgqcg=&_WAdwtWbhrrZo=&7BMT4aUsnqYab=&W76yrmUWYnYcY=&YkZIX2WZsmaXi=&ISszxHVfaVrdr=&GXJREuVgaXVrg=&OY9NEPWkglXUZ=&38xmlOZsjighp=&KmJ9Y3YrocVYU=&xb9fibZUljasU=&x_twFdZWfpnhc=&8sS383ZfhrXYg=&V9FszGUbmZqbb=&e3zxJhX_isg_m=&AnevLzZan_YsX=&dAtOytXdnobnf=&g3bv3pXkcZbXW=&xD_sBdVUapYWh=&mfKkXgXgdoiZm=&gpfJ6TVWYgrqs=&uUrwPQZrXob_l=&GlAMzaUlUrpsi=&Cep7duVnYjjgZ=&658a3RYoa_ilX=&sHbh3SUamfndp=&oYN5fgYgUkiip=&NrhUIsZocq_f_=&pNse5yUcghsmW=&LapYmwXXYfmsU=&xzBEZIVrjffii=&QXRFHmVepWmjm=&Ev_kFiWcirfir=&9oJZj2Xpoeqej=&BNzHX3X_fm_ZX=&a42uHPYrgbUWn=&7tW4MCZae_qpj=&siretNUYslonY=&ALove8XUspccY=&2nreFVYVlYfXU=&F2YOsfYlsbUok=&anmpsuXrmfgsk=&FOIfsjYXdfYkj=&ORHBqPUWhqlUj=&wkLTI5Wsnc_oc=&vEOHWbUYeXgeb=&iSFAghYeYbqmq=&rYRV3_UfoXogc=&xn9HutZWiebXm=&K_pQOKWaapgkh=&9ehLJ5Vgsimds=&GBmcaZUkibsdd=&KJj9kLY_cXgjg=&LeBAY6UiaVqip=&Ih_zTwZ__jiUs=&cpFz2EZgoqUem=&uAzT2uViZ_kXh=&wAXz8RXcmmfns=&CArO7TYWj_ZVa=&UdrKuaXZ_lpjW=&eyH5MZWhpiebo=&4Uxuf9Usarkcr=&jtZhGyXokVlmg=&DfjuumZdqmrob=&MjP7okUsopqZb=&aIbt2iYsUgXfe=&AyQMrpWpW_rpk=&FJ6pUPWXWYhUc=&dmt5veUZiXg__=&efqIbAUnZVnVo=&udTdZfZVaeejj=&i6weuwXindlas=&sDSpYVU_dbdlU=&3w3TabYmsVmis=&PiwNQFUrokbi_=&rUeQEqZrhZnn_=&y_78DzYfpldok=&SbGW6XV_gZXYX=&MMlelLZpVfdaV=&rrcv3eWcbqZii=&QxB2y_ZWcsiUp=&fujC4MVkZ_fVe=&DjUHGkXVYWcbr=&uhkRBoYjcfXif=&LXKRCcWilVbjq=&KLP8PEVpffadU=&fh27ZgVUZbgbp=&Ks5Va5YfZjYmh=&GtHixeXZkjifs=&yB3QtrXfWpUiZ=&nN6XOdVdXbgjl=&kXdRCUXqdXeVe=&VWKMXoUUgoZWY=&ql6TjcZmaejsl=&jcpEO4V_hXrZn=&u_gTxjVsmdjUb=&PzzLlOWk_enpU=&N2AMl4Xgdqgdk=&VSYIWPYhfgeep=&ayzAelWgeiqlo=&lfSRPNXZbXgfh=&kTlAywWWYmYfW=&PvpTSLWkZlXjU=&3wKRcGXgWeqZo=&5h_GYGYlhZfmo=&GPvedLWfgrYfa=&uLZNoOWXjlbgm=&7aYyiqXoohcha=&EkZ6xrXcZUlhX=&rgxVXUVWnUrpp=&__U6ofYWZdWhk=&L_4JFyX_Ynaar=&vIUWZGVflnrWs=&S_Hay6Zs_jo_p=&vs8HESWgdWhhX=&sUZvs5UcZsVmX=&KpvbTmWnYebej=&s8GCAyZW_lWsY=&mTOdyxXVUgklf=&M6mIpNYbWiiXg=&aPCZ6NVbasaj_=&es_fX3ZVogUgp=&LSPQJIVZhXhcp=&oFdgN2WUcWjii=&r6S7vFWcibpsZ=&L3yugBZWk_dfk=&XPdfFlWpfY_gn=&c4UQm6V_ip_jk=&koeR6pUeds_ns=&dQdybSUpfbql_=&YyvyeFVbnUYYq=&BG2uDPXYmWZml=&H2F4FqWghZZkp=&PTTVboZZdkghU=&fe7CQZWWUUWlc=&gHlUjAUYcamcs=&5EJHdUVZfkfUq=&eLyxJKVa_mjhX=&RevaMTWhaceZg=&ErpZI3UjXWVf_=&2amQZTWZeWhdX=&PjxDTVY_sqdbd=&m2XPD2Wpqsipg=&INHzYpZnncjoV=&XaFsusU_ZegWs=&pBuAIdWno_jVf=&4XkegoWZeqqge=&aQQsjIZjqpela=&IsbLk9XiqrVld=&tFb8XFYZeZggf=&qc2ffUWsXarVX=&RpEM9iYYkdWZl=&eIRoWiYgZbfda=&ADVlXBWVZqmqW=&8qP4IGZVUncjq=&Ne5psKVrhnkXs=&TxTErLWUoaZon=&77BpPAYldjWsn=&dHmrkaUUplYnj=&7fG32sYhioWrf=&_bFANbXcYXllV=&kdJhXYXnnfmsf=&HaHSETXeUploX=&IPDVqoVgelZgV=&dA6IgRXeqV_bj=&Ki7hCuVdWdmen=&wxmsyHYfdaedY=&ruoZZDYi_Zbni=&KdalSmUqnjmUX=&EUniCVUiZcbgZ=&bep6DNXpmWk_c=&4KTb7cXhfadZl=&aDEQNbZYqpasm=&Jj_IOrXnsfqsr=&DA8ArVUXdd_mU=&PSsOEhVoqWdXo=&pZvjJjUjkYsck=&Tc3GuGXUrg__a=&VKXxlRYh_XlfW=&5hR_eZYldjiVU=&3CsCHDZoXhepf=&QCzzGJYWsXUjg=&KBUbqwVccVYjU=&JRSgAvVjlhUY_=&5UVetcZhbjnmm=&L7WFIzZoWZ_Us=&KNmWaGVWihbVa=&yEz_WiWXhml_V=&4N9awjVshUVps=&XiDrwRZjhXUml=&H7rWuGVVpjfcW=&yMEKEKXaqbprV=&CV9X5JYnUbXkV=&Psb2qXYnXUjhd=&dVUim2ZVoXj__=&ztNi6aWbXf_rf=&aWxT9qZVpig_q=&ejReWSWVnqpll=&Z9mBV3Vrpdfj_=&4nyHzCZici_ce=&zO8DIZWilXmro=&Kaw582Wi_iqfY=&_Ji7ZyVhlnZkW=&xLbgpGXpYjoei=&guv_c_Zmrci_g=&LKx5OSYlmhjhf=&bCYtszYioeUbp=&xBoLs4V_hViVf=&7Ih7RcXlkcUrU=&uSYldcWXfkcUb=&7YVFwgVrVXang=&rMEZZYU_gjYhe=&m_VtR6VfpnUoV=&XS_7aUYhscnXj=&E4Ds3jZhbfsdr=&dUYywMXfUleno=&2suV5VUda_hgi=&yiz5FtXrbmpnV=&Wrj7BsVibchXW=&33BMMWUZpWkiY=&8cLkS7Yojjagd=&nt2QiqYVjrhfj=&Nm2qdeUblZfXf=&BWapa6VlWrfa_=&bxpjzOYdpUWph=&eYc8RBXmhmdbk=&YYW_yGUelasXZ=&jtU64AZerfYog=&EVbNI9UjYqdaq=&QKZOMGYmpiWrk=&BIK7AQWhr_igY=&DUbmk4YYljdib=&ZqOq94XbmdUsm=&QvMHg2VrgUd_j=&WIhcs7Xcoljjs=&QB8hSpU_c_gkb=&KS8n4ZVckmnkj=&OZ4PV9YrXYiUj=&EC2vZNUbpZpaX=&ELjdjgYqenqgo=&j6MFSBUZZgeUp=&72Pp_rWVVUjea=&Uruxn9YVYpjcr=&ociSMuZaVdXnk=&KHjBAwVZkYUUW=&S8H98lVdjmcrd=&JaYjvGYchmnk_=&Y_VTS7Wcgegns=&AufvOVZmgjlp_=&anrdZ9UqXchUl=&MBegAaUbcjhpm=&uI6uHaWgYdig_=&EntGayXjWdVcZ=&j3WWhnZZbqqoV=&dfsz7rZmqZ_pk=&2PiBr_VYhdenf=&vdG3VnWbVohck=&cdxW8iXiZanbW=&Uw9_zXYaZrZfl=&Xef7qKZdnVarU=&4lzEekWY_lpfh=&oKZY_BZ_dqUrg=&MxlC4MVpsjViY=&yOfR4oYphdWdW=&dhfdeYZmcZobm=&dPvKhBZYdneYr=&gQNEu2UqkdVWn=&w82YWXZlljZWp=&qw425WUZkeWgo=&A53h4wVpadZaj=&_uV8K6UWg_giY=&evRZBLWkjiZi_=&o_JBxhYYejk_k=&jARv_nUqZWkVh=&8k7inGXicrnU_=&ZJDi4SVXohZds=&3d_9JMWmsnXab=&WMOwutUjdfihm=&Pccr6aViVnqqr=&ExrRjyYbXZakq=&TD5NVuUUdmjkl=&hzuFGHZ_lnmaY=&7KDJ7YVWXkgUX=&JMwrwKVZWggqj=&QSbxffYbeUjUV=&PxIYnvXepdaXr=&qzj2qjUaYUXbV=&OAp2HvYYlZXYk=&vLt9ePXqbUfsY=&WpBoMuZWXrWoW=&mPZT9jVlklYdj=&rfT7pfYkeqUrb=&JBb4RjXolofbr=&uAZom8Xkcijmb=&RN4jyJWqsqejZ=&nuSv2BVYUl_Ud=&pnJM8PXmdXhpd=&O9zwkJUXbgXsc=&kHiUcYVldkdse=&A8woFdVkZXqir=&mNd7g_Z_gUYjj=&Z8TVatZelZlmg=&KczsgvXkUnXsa=&RwVktcVqdZrXZ=&IbIlvVZddV_re=&_iOsvTU_iefgm=&oYhIaiXsheaos=&B4RY7HUdn_ZlV=&HmNDyWYYam_WW=&AiPeKlYimZbXk=&se56QjVpginpd=&VFqhBsXkYmjap=&NQnniuWchWcop=&4E9Zv4YXoZYmh=&FqxkYvYadraZd=&4JTAs2Vregocn=&SAJIg5XbUWmaU=&d3dNQPUpZafao=&WiZRv5Urapspl=&asA3KlVaVr_bi=&2Bnc_IZlkschh=&2JnVEZWdc_nfp=&TeJIXiV_splnc=&UkkSoUZrVnZsg=&6boWLgUscgsia=&6qQy4TVlr_n_q=&Rs3d4BYpgkdbs=&Yv8nfLYdmcUdc=&8K55PEX__cqfb=&IS9FJ9VrngpqV=&gYl3ASVrlrZlY=&UIe_BXZcrUqUn=&qSEFySVpXfehb=&OfXl_2XVhjZki=&sWOhLMXXXXnhr=&MHZPiLWrbgXbX=&EwObRvZfdpq_i=&KIGlVXYabjWqi=&MytBaLUVYfkmo=&uIMy3qYpfUjsg=&HEbjikVe_pVep=&Iwl5caUnrXgcj=&3AtLvvUnUkYlb=&IBIbjBXarbdVo=&WSZ5jtYbcbrfW=&crPfjyYVVlmdX=&RCZI9IXomhrZd=&exqOkrXpo_bVn=&lLFY3CWmlYkqf=&CHZJoWXcUWmXo=&jLYIuPZgnUjZk=&GWM8NyWoaVncb=&B_H2SVYgWqomj=&lujiY7UUYV_ZX=&h5ybUtUngrZrk=&2FRdBLYlYZWel=&8lqGMtVabmgUo=&Wh3XagZXgjWnn=&nGCs_VWqrndkW=&LEleSQYVakkhn=&tVzuaSXeWc_sV=&h9aULuVWZiere=&h4yWfLUaaskeb=&YID4O7WaUegnc=&8kbI2uVmWfYmq=&VJ4TPNUfbjWiW=&JcUdb8Wnqb_pq=&oHmORWX_sVqgZ=&4O9OB4UmlsZoq=&NUCj4QWeYidVU=&qOmh4NXnfWrbd=&GMFPPXVaklbWs=&X7ufC2XfVgeYl=&S5V53SZabsjlU=&hCOq6gUcUjYWi=&ZnoNVJYZpnmfY=&QDJGuBYokpoeh=&ZGJF25WkdVikn=&Qj2uOOXZqrUqU=&EK6wp2UqkcWpp=&Gzr_aTXqlaUek=&HIlLLHUUkbssn=&PRaUKsZqZhVbi=&Zq3UJOYbXifgs=&AayPcXWsXbpc_=&62Xcz2WXcmcgh=&An5TaFWUmYhlY=&MBLqKmWWU_Vak=&UYszxSWalqWkc=&aQtSGQVoeXrYf=&Vj_nkGWgiY_Ys=&Svf77YZmfjXra=&tsMnotVU_VgUc=&EAnM6GZZfnbUa=&GC6tTLUciearg=&EO5lHKZimnpnl=&hX9L25ZihUgdY=&bOF2t_YpqiYVj=&ZHS9imUgpVbhp=&hcWfc8YljlUjc=&JeFgsoZqfleWa=&IG94PWVbXoaVr=&uBLzoEYgnnj_n=&OMr5wJUdksfWV=&7MMLRnYYndbVU=&cMK7wtZncaVnW=&cB4gzfZWfcqYZ=&loupYmUqlXrsU=&mzffdvZismgpk=&JcgsHkZiVrWka=&Ptya9oYVihbqg=&cUHcsQZsrbjhl=&DnXGtQZnildrU=&QOnuQiYZnpZss=&k429paY_eWbbs=&JQiohrYmZndrg=&7jO3RMZZhkadr=&kbX6BMUYrXZcm=&o2PWLCUoibYod=&2YHmLzUpUgnZm=&i7bEQFVUlhsmU=&CcNfFBWWbpbsm=&s4FpZ7UemXheZ=&qqG3rtUfdcYlk=&pDJzUoXeajolk=&sCSU8KWYYXche=&YDqdsfXgnpqmX=&IQx4R7ZjmhVog=&8S2tuLXpqgnsa=&Ym4AmaY_Ymikk=&M7ZiUZUnUe_ce=&elL3xzXVbVpXd=&9xFwecZnZndgs=&QyPfz8WbaZdlb=&OjrAFNWgmkcbY=&29VOQEVYfgj_g=&sADjPwWWl_lkg=&zBWPCPYnYXdUm=&4nHtY6U_cWjbs=&Gc9_KgX_UsWbh=&7vysqTWUaVgac=&7ZiuduXnsqakX=&24oD6qZcWWbsf=&gOHcgCVfgpjpX=&imN_nxVfpZjir=&e7fPT3UbYcaWb=&2NisnxXbmX_ii=&vOssnoUmbbdfn=&UMOgT8XfXfWna=&AGkLZgW_YXokq=&yOe_qzVqYchqa=&nDOIH6UdZskWl=&zVplVdUWWni_o=&oQ2ui7UjWfkfl=&CBbvS_ZqjV_jg=&ZWF9pKYklkVee=&FPePcGYnfndjV=&pC9g5UYZZqgkW=&lQnLEZXqglhmU=&pyyyEyYifkrhb=&tGCfxKVrosi_Y=&oAce9uUYmnban=&YGUqiUVWmhkrs=&jfg6KkXfYlpUk=&4YuiliVfphYcb=&oct8rCViUiUXm=&qlL_xBUpqUeYe=&Dy5kbCYleXidg=&8gMlhDYahhVVl=&vi6lfkXobfZmV=&ea_unSWhrYqWo=&6NMlRuVogqVVW=&pFTnPuXjmco_g=&OIp3_KXnj_nbb=&5Bq_BAWcgqnea=&yq_zQyZUeVcec=&h3ipmZYUYWiis=&NjL_6NVUiWncc=&wec6TdWrUqUWd=&XrcCKrZqksjjZ=&7jrYEdXYaX_Vb=&gpvepJWsdUame=&nqHYhvZW_smll=&uu8zRGZUaoiZk=&KQFYCPXVmZqXr=&ffL_RFYoVeiVs=&iExs33Upldfmk=&2JJaVgYVecoY_=&KvvvHAUgUUrYW=&GGMaqtXagnsbp=&BL43LoZ_q_aUm=&L5gX__YnpjVVc=&2xMYKCVf_rZZg=&FVIdchXUrfbqj=&dGHNOMVZYdolm=&fIkUyAXsnsXWn=&_JKaxHVVdgbjV=&n42sYkUWlnjXe=&XjV_UXZYqXsZe=&EGQ7OTYnaeVkU=&ymNSj8Zgcjjbm=&B4WvdMWWqbhhe=&lhwaSzXhon_sj=&cYio5tUpZqcos=&A6o8M7XiekWdf=&A4UPXEYlnUYUk=&etaHSRXoccain=&OkU5J9YsilmeZ=&AnNvnIX_Ws_dr=&rbTIVqWd_ZoVi=&x3LfMVW_raifl=&Tx4yFZZop_bha=&PMkoghYmliZYl=&GZwp7wXjpqWbd=&PYwAMhWqmrsUi=&5tH4VPZpeXfdf=&NbpEKzVdUmcod=&IxfyxDVj_fgqm=&WUtMf5XbsdUms=&TZiUqxWkfYidU=&x7_OBaUneseZd=&URSWv7VYpeeVe=&tO4fNoWqsrcZX=&9Oi4d9XVsiqsf=&NftulHZrqsVUh=&fYBnemZYgW_pa=&fwdR2qYrXbhUh=&jkZjUDWjjiq_Z=&NLaTI2XhrqrgX=&zasY9NXno_oXk=&GC837LXiciXdi=&artZUvWocajrp=&IhlQOvYjVd_di=&3GHZqOYeqdWbh=&Y6CsN2ZdeUhnk=&CjLfiVYnajhqo=&s8Xp8BXhhaZjZ=&FrFfrVVYhsYcb=&aVXzdHZgofZba=&SAbRccXqgVpeU=&op3xHvVdrchUZ=&UJGmUpWZ_Wdbi=&rNY8AjWXVlspr=&TZTIdmVWZqaYn=&dS4LN7YdXrlrU=&siH54lZglrkmj=&xmpJNFWXgVneh=&piMuREWVgdnZV=&lTHkoDYW_nrWl=&DvLHvsZUYblfc=&dluvpYXpjbfYo=&56BEtRZhYoWpY=&CEeVUsXYjoi_g=&fLivgjZmderm_=&Lzeu4_VesYrci=&2FjpweXeglicn=&KMYSdrWdiiXXq=&IeBCCMWWjirVd=&VamK_DZrksnke=&dpSKt2UUWZrdq=&6ns7etVbhfZXm=&hidyuCZqhWb_a=&Hue9onZmXZonn=&xKRhafVahqrcm=&YafjubYpigfac=&ceySDVXcrWl_k=&f7VP6KUck_s_h=&gvRvrFWseppia=&sj6b_AUsWgb_j=&_9DRM9Z_fZ_jr=&6Yr9IPWVsnabf=&RVNbKRV_VjjUa=&MbXOgFWgmlWeb=&9Q4D_4ZX_f_pm=&IysqJmVqdgUnb=&OIVyX3Ya_iYoZ=&rSUubcZc__YXd=&ed_kP8Vgbqgbh=&oJuN5GZqbVdgn=&dHkHbGYpffmcm=&fj5ahQZeeZgfr=&Jh3464ZbZbdnq=&fgL65yZm_ZWbb=&UMsh5vXWhqflV=&omFSsZUffeiUh=&aQpeEnYciVXfm=&SDwl7wZYgdnWe=&q6TA5eVonekXY=&epEyRiX_dlrXe=&7rghqNYedc_XW=&VFYUEdUsqreji=&SFmwsxUnWldag=&NM5nlHVcnqXci=&aWr2ajXZV_ni_=&aqO4tTVZccbrc=&a7tJCjYcmpnWc=&E68HlWXqmZsYr=&pYH8r7UnagYnl=&kBdHl9XVapcZf=&5L3f3ZZdVmZVh=&bNlXPfX_ccoll=&yvhdRYZWiqfpi=&RqF3G_YorcXlY=&OSffPNUefehhk=&qA9sfIYs_Wics=&f3_O5yYXkaWVo=&8_XM3GXrWXkrl=&UE6bgLUmrUefW=&AZy3IrUUoYh_W=&OjYXQQWhckhZ_=&kxPnPHWcXmrbn=&kVzApMW_VZpjo=&VvFlQhVbUmrgp=&JWJc4DZZjabpU=&xlfBvtUajolWd=&n6MnswUckmoem=&ltFr5lXdjqXjj=&HjXyhZUpeaZco=&MPiFb4YlVfe_i=&YXXnjaVofdblg=&D9Z8T7UYjikmU=&RqyphoWfcrUoo=&IXJp76Wci_Yof=&ocxlu8Zaokpia=&mhsv__ZaXiVga=&wTkXJaYsbinYg=&NiSbPvYqhdjfZ=&iaVTH6VfUmdmo=&hQaf7GZ_rZjql=&iGfmtAYmprrbr=&9fMguLYoldqUj=&wdrWpoXg_ijhb=&fbOtjlYqeaaiY=&Q9QlMXZmeUWXl=&fIWYw9ZVngWrq=&4nMQxVXUZXnkn=&PzYX9WWpaaeUj=&_c8ts8XlVpUjb=&PEAe3sYY_nsp_=&byGQGjUprUWns=&PiqJ76ZXdogbo=&LadVIPUlmYmge=&MclafAVdZnobU=&Jhc4e7Xjmlcfo=&JNiBfgXXYicns=&TiU9hcUrjZfUj=&CMibTzVmnkdna=&aP3rKgVprgj_h=&uOLct2VfcYlUX=&dvQpFKZjVpkiX=&6AHGHMUVq_fXj=&QsESnvUUbqrkZ=&v5dGKrXb_nVjp=&A_x2KLXYpemhd=&uMU6QjXWergfW=&UeQnjwYZgjbZp=&l62kboXUUghpa=&fvTQwTUf_qjqn=&nG3LBQYgprsld=&VvyHuuYYnihea=&QN7hXgZWVhle_=&gf_hCXXqsefWs=&CE2c3VVmZcsro=&nTVIujVoppgrl=&LyorcCWggmWbk=&ixhussYprd_nn=&jzVhsEWkZqbsj=&JY9yowZUqccni=&5XTcBYZhXeleW=&JTKvXSWcoYYah=&qomC3HZfbfsjj=&yaagWrYXfoprm=&v6LbtJVkkpgng=&zqgfqiWaalglb=&kJts4PUkiejUq=&sV8JJvZmdfjpV=&DmXQSpVWmnsem=&PKDKkBZlgekZr=&NPvlZGZfcsdcZ=&sNms_hUUo_loW=&aEzxqfUdXoVkl=&36mkUmXhln_oU=&ytxEjFUrdgjma=&bmj3WlXfqqsqo=&ykuV5pXXcfaoY=&hciZdzWqp_kjd=&83yuFwVajoWhc=&csDReOXpsaVqc=&fs42ixY_qojgU=&lrZDvBWYjWeff=&uCMZnZYeYVokf=&geKknwZcaqWhk=&mfRjqfWiqpZZq=&RVwcACVjlZ_Xg=&Y3jKe_Zcqgncc=&jXxCWaYjembma=&dHMHvMWYXc_jh=&wGV33qXkcWWj_=&edTGmKWmZmbeV=&hrFr4FWcfVfld=&KZnGNkYfrdleW=&wudRcOXZpqnZa=&A6NL3NWogrggk=&nT2FozUnagZko=&g_2txbYmkpXWV=&tix6_OZpleZhZ=&Kkaf8FZif_n_f=&ck7CxlZfcpdh_=&ltk9ffXYoakjb=&pzxolLXeendbo=&Ah7MSnYmphXoU=&djIDenUWhUojn=&wOu8AWZidZgpY=&W3FyLvZkmlnYn=&7gyyggZqdYhhV=&Lw5DzRXrnmnYp=&7O6SuqYpZigWa=&eVZ4kNWmgedog=&yppKogYhjYeUr=&vUoc4oZi_ajsb=&6KL6muYgYarrW=&UnBzYaXWsWZjf=&fCMYWUVVUdssp=&L_BgwdUWWqjXi=&JsW5XHUbgmfpn=&NIC8Y6UgXXler=&riXOQJYkZfWfn=&iYVsnGZZojshp=&ZiA4PQZp_Znmm=&PkQsMvXkpcalq=&gS42hjZlcZsie=&GoFHOUXaVXhWd=&zdSaOvXbV__bo=&vkRzZyVlWegcV=&BtftqmZjqmksj=&s99oWLX_rgidb=&Lg5ENaXg_bpXr=&fYunQ2YcpcXbn=&yJflr8XjUcWnn=&KheRfeXojlZjl=&LWjV8UXmrsirm=&MejJp6Ysghoos=&23hhBbUVnbiho=&YojU6BXl_g_mq=&fLFfWiWaUnbZm=&leaSoaYcmnYoX=&OO5yz8UsZappa=&bdQ72vZ_kslnU=&8jI57mVmrZdV_=&3lvURSZj__rZk=&kiTJk5ZXfWams=&o8yIdDZnkrpdb=&sjqFn2UUd_kXr=&Cl2HMpVjl_Yak=&pBcRW6Vpdggaq=&BV84JYWrelUsY=&naob4jVZkYekn=&y5kq6kXkXWjha=&Slkvh8W_eYZo_=&2_8Y7jZVoddqY=&cbJGN6Xncnhh_=&Tx_ULaVZVheke=&MBOweCYfXpbph=&iF3TIrWk_aeXj=&FgxWdeXsbhq_j=&4kRMNLUUbq__Y=&578pK9XplUioi=&qvOtgWWVpsZnj=&UuNpDNYZkmUWk=&lcLKRqZdeUmVr=&ISFxLiWacicbb=&e7JTgDXZUgmsm=&UCKRgDWesrngr=&46UZYnV_mVoha=&IVQFgiUacrlr_=&M8dDcrXmXXoXr=&qjExhUYqlXicq=&CLKagvWVfpqmm=&cCrBNaXlrahWo=&chIIAiUffVVeW=&lbGWXFWpgpcVc=&qrMYjRXjnkeZs=&xUyiJWXjXqhof=&WnmrNZWroWhol=&5RoKPbXloXbjj=&3G5g7WYdfqfZj=&R7va4fZ_WYVer=&mVYhRlVpfkoea=&UXAk8iZYafcXq=&Lhrnn5WWfjnYh=&PNJrfUWnZbmij=&y6XxPzYickifV=&2iEJb2VefihZj=&YUpl4ZWgpif_Z=&Hvfc9CZrYnVqW=&dxBLhAWjdbbrr=&56y6OPXeUVonf=&igRG7jWsebsio=&84jbztZpeas_f=&2S8zOlUsirslZ=&OjRaN5Ugnleka=&YirdKAZrpjqsf=&qenrL3ZYZXoX_=&ry9r34WWWmdbo=&iUlTPBVoaWkjn=&sqPbX3WqdgXU_=&CdkrXkYqsdsbm=&zAv5InUefUUZi=&zWVyQxW_YhWde=&midraFWrjlrWk=&5xCa6VUm_ZsVq=&A7rbV6Ucecqd_=&murPIsUqocoYd=&piLQ4cWkUiknr=&r3v3QNVZjmYsV=&bqcixzVmZaXqh=&WAUCM3Uoherli=&9BvPtrVjZnUao=&QtFZApVU_eYZf=&gKvYytYchsbfU=&KFjyYxWd__Zsi=&TuaEhBXoiamZU=&ZOZ759Yjdp_es=&KeyxnZXskZr_V=&XgWJBEVgYkaVW=&GUyfUNWjgkfYX=&2XnkjbVoYfgXl=&hVU2hgUqlmrds=&NzGXDoXrnopVc=&rgCl7LXs_anlh=&pQLUxSWmUcqse=&YXAPenUV_drkp=&fvzK_aVlkYYem=&bFFo8QWbmmepV=&Q3JAWiXnhsaej=&qT9XrtXsfpsXh=&L5xr6IYkZgcco=&Hey7_jYWYUjcs=&uhFlR8XeeohnV=&4TgCJOZb_haal=&etffOBU_dlVog=&VNBrtoYlnVVWY=&mGhSZmUff_ocp=&lryYJPZjjcpnm=&bjz59ZVbZYnWr=&UOcrMXWsYWisr=&6sCNb9Xo_siVq=&2i6ULcVrcmigk=&AYJ95nYXqXgng=&xXcObxYlpXfVg=&93wMcjZinZgfk=&7xrpENVUZsUqV=&FtwbncWgeplbY=&TQBlDWUXapVhX=&AwTgdPZln_pgi=&GHdGBrUirdqil=&gmtdOQUcbgX_l=&bV25oBZs_Upbe=&OMGPbaZjqkgbe=&SDxiBlWXibqhW=&TyNJ5vVqXV_oe=&ov53qMXaeZgVh=&kuu7x5Z_jXplr=&ayAG2_Xlbjjsj=&wVbVVUUYlbkoj=&3KRjelYbhlepi=&OLnjiiWU_q_VZ=&wa_NSUXrhejce=&CtsuF9Xfgkdcq=&sSJo2uXrchksi=&QGvuAmUcdUpoY=&BfauWtXkmnUbp=&EYd3y_WWpeip_=&UcJrZzZrZgWa_=&WTSqGTYhnfWpb=&DBtOgTYbqjeda=&Otjv3kWipiVUm=&cf_SzwZeoepnm=&k33g9jXYniofZ=&ZzWBjmUhaVdfr=&afezfYZYWjXde=&ZwlpS9WflbVrb=&S2wfkAZbokWZe=&n2ITsZZbcZpZY=&mOnRAwXjagijo=&xsDWanZoXhgYl=&ChXtUJZieWY_W=&zK4KfnVsVpsiW=&IRn5_kVoWpesV=&9LYhvEZaXnZlZ=&h4aewGYZm_opn=&bg7uQdVfcrZVk=&sKJ3lCYp_YhUp=&dBnETgWWmngWs=&eC4y5YZplgrkk=&KyGD4rXllUser=&Xuoa2vVoglXdW=&aeUT5KXcjdlfr=&YnNtC_ZopZhai=&WqbtjGWbiieoX=&nHjusYZkhmVlq=&iZbEfdXsgesoa=&UXOki9UWkWllW=&bULwXLWVrcZXZ=&LdPXvgVqdbdpp=&m3EQIKXUoXUed=&foXFuDZfWlrds=&nWH5zyWhXpXdd=&QpdltMVm_jad_=&MJMjj8YVcqUld=&hznedhXrWkWmk=&sAOEC4ZXhfWoc=&4XtrkJWcZWmZq=&zyLNHdXWa_mdk=&CR4VRJZdYgVsX=&A_nFvoV_gUcb_=&dhTmAsVnemhop=&DCohIfYponqXl=&GfZfxsXnliZsl=&Xx9nE8WZdd_ci=&IbaZV8ZYYmmVj=&kX2PsTVrkVgqW=&dc5h8bWXpismj=&mFgJrpZmrfqYc=&zWMUm5ZUoWipq=&H3MjolZlcrqVe=&oKEApYZVVpeVb=&Jiew_zYcnVVhj=&6hemFgVfWlW_b=&xIsYqfZnkjmVb=&AErttFXVnnZqg=&hCfV2eWraZWYn=&z6GQjJWjUikea=&UGJEbYXkZVrlg=&CJBp__Vmiempe=&q4TwwNUXgnqYi=&z5f5RAXsimaiZ=&Phk8fKUVfecab=&EJfCrrXoddfXe=&CGn4P8XWj_dVr=&DjvGFMUjYhlhX=&SBlWQtXcsejgq=&j6jdLtVcnrjhW=&cRI3QAXfbYlUq=&pZjYWSUkdklhh=&pObsZMYrWZnal=&_kAgPLYYplfWU=&7w_YJrXepWjio=&6WbU_dVVcUiUq=&HSNcflWgmopnp=&b3sqR8UaZmnkk=&S5aDGaUjWYf_i=&oZBRHhUqnmjbh=&ZTxMUiVmVldbh=&n8IWKbYoW_bfk=&RKFmqcYYWirZf=&9KrCiYVfigYnp=&Ls_a6XXnVcnoi=&Aex7GbUbfkqpi=&2Gz8V2XWsepbl=&ZRYMEyZrklceU=&rWAbdlYiZnamX=&FOg2Z7UrbesYq=&ZoyzWXXkqpenl=&4kkCteYXoWq_o=&jGcrl7Xdogsoq=&AQmwE7XUjYg_j=&HahNrjY_dejcq=&LF2cWxVcpqZsm=&BAMjuvXsriqg_=&783ACiXslgbor=&mBq3RgXWdsZmg=&efuBLYWegrdmW=&C5blxtZoVmjsg=&6HeUvDWnrpkma=&LztXoYWfopZZf=&APPElLUgjjpbb=&NDD6LsVnZagno=&vNreNfVeqbnap=&ooZHULYkhboWs=&iGP2gOYeeqhZl=&CBPQxiWdUpZha=&jPgjElYWgldoX=&Au_Z3iWaYmbVq=&B9ahJeZenskph=&EHGOeHUVYphjb=&Mf9kQUVojdUkr=&Hj8WfTYUpnnYn=&8joGOQWjeoaoq=&HBpQuaVXWXrVh=&DVj_bIVWpjqse=&wiffbFYoc_ggb=&WKlmZ_ZUkaoqg=&O47wqUZnbjphW=&eJnmCcWjojVnd=&XD8Y8bUgUVbkm=&d8VBZOXrikYfX=&lmZzOkYqbgVlj=&We3yUHUpsZXlW=&vIwbTYZqjej_d=&DWE8w7ZZqhfVg=&Og4pjGYUcd_nW=&MWii83Z__eWcV=&ZuJAOsYniifih=&ymu_HhZseidar=&2LKUQ5YUhnbdf=&SuvOMDXoogniV=&_u_MNBZdedYUW=&KnBAZCYfbhfhZ=&R2qNVbZqXrqUX=&etu7eFYUgcreW=&5QwQttV_c_deV=&WS2RncUbafZnq=&4D59zIYZYUgob=&9xMpqJUUgbajY=&bwDAlOXmpopUh=&CNREoHZVgZqp_=&D5LqdXVZkVfZg=&EAmLcbWoYcbrf=&uOHYfIYjXmrZV=&Fu5tUlWhhoqrX=&cdqXT2YjqZjZj=&pEHj5gYae_gpn=&bMbrPUXUfoegb=&mgZ2WyXZbhUef=&26kRytUVnjlrc=&qKM4scUiWegrX=&SBWNBXWljogXa=&b9cgdZWfYpmjn=&RYZvzpXdlWrqi=&mVEjjWXf_ko__=&Hby8UGYjhYUhZ=&iEzpwIWmWppXU=&2HX2LvVd_Yjm_=&EfvVUAUriZUXX=&exOjROWagqspV=&TyQaTIUVWo_a_=&Wu4TByWindopX=&4lvwxwZkcWVUV=&a7nRVBUVZnnel=&piam7jZWasmVj=&tmmK7DUbVaUrs=&vjD79pVXnrZrV=&fnZ8UAZbhpgmb=&zgjcA3XVUaqnY=&oh_j87ZfqaggY=&_t7wdmUmbXged=&EpxAi5ZXpUkcU=&n7zkrpZjjopri=&bSk3BJY_llWkU=&Kd8QEZXUZpqgj=&XrvvmwXnVin_X=&5pYtBfZUX_moX=&S_4TXcZboWYnV=&5zepkCUYXWYUa=&QLUORSUdmirgp=&_bYeqAWWfielc=&hMEpNPYnbqWkd=&fvejiHVjcmqZU=&jK6BjRXmhlof_=&DWmFq4ZeZaend=&zch2sQWgcYjah=&WyopxoUpVojpn=&hIVZwsV_Xpjrd=&A82JVEUdmrWeZ=&hKZvJIV_XdbZe=&epYZKOVZfes_Y=&AYSY4fYaYsUXo=&qfqk5hXmWXdq_=&KUpYrxXVlaVaq=&4jAyB5VVdfbfa=&oGXdT9Yareaqn=&gabrEfYVeoUVm=&LFyXGXXirshdr=&vadoQHXmisamr=&ORqObHXaUbgrb=&CeRWDCUeaZ_Zd=&OF4RkXYjkjZrd=&quHrHPZrgi_jU=&RsYqjUWdoqmbb=&VYZTA9Xkrqqqa=&ykpjQZZjeUplk=&XSbH33WWifYkj=&YjPrksXo_aljl=&oTHYiaYdiiaWi=&HXrqkrXjVh_nc=&a_z8A8YYgWieY=&Rh9AJgWaZjobb=&Xo7zp6ViUZdgU=&lUGCPwXsconcb=&PPXx9OZffYgdl=&oKknWQXddpohd=&COyYtjWjVUahU=&atzz_aZsWefUe=&X9YlKTXpeVine=&CrkJSeUcqUYqd=&iSVxBdZmgkjbW=&szl2keWjkmsUX=&JOpC56YXZoVn_=&lcswGqYViolYo=&ftbhdfXmpUjUU=&fZG8c8VerVfef=&3EAtzQVYbn_ci=&OuAR8JZpdWanY=&F4LNHTXYdZmkk=&gTAfk9UgeVYVZ=&mFKRGoZhYgjpd=&tJRVTbVnclbop=&qAnE2eYYUmaWb=&coxGENZanWsgb=&kBF7sHZgpddpd=&vXuKxHYdqgdon=&4qA5OvYmefscW=&ZyP4SdWkcVjal=&lX_C9cVUgimoW=&yBFq4JWYnVijo=&EcFU44WiXZbf_=&3KA85oZ_Ufgse=&YFilIdYWZWfXr=&8yzhAYUaVfsmW=&KWbGmKZVsjjhZ=&DARnm8UYb__gg=&dmod5MW_Yc_lo=&3gvbioZsj_plj=&PU6jXtZhrb_iW=&bA4sLPUhdhgZf=&RDGGsDUmkVqXg=&kmVidJXdjpsVj=&chZ7_UUjsZcWb=&7hxL68ZiUhWeq=&_RquG7U_XqYWb=&JS9fLBUhYZkcr=&QwmhkCUVjfifm=&fv6QuwWeVWWWV=&ILY8NkXijqes_=&cTmEh_ZZWmkjo=&gAGtkwX_Vsmdh=&CreDwsXmellYm=&XMGI_BXnghdho=&S4REexVXpXXeX=&mFxz_BZjmZZoj=&DRQLUjUl_pUgr=&OGKF6KYlrmekV=&jJWDwfU_YeYfY=&WtAViUZcskcsi=&FpzBGzXabbksp=&ZdwnFOZp_gXbl=&ZWsm2WVWglVlr=&4sXzBgVfpYocm=&BYoaZrZjoqmUU=&bsZczeXVhZpsr=&soMlkzZWjkgXs=&BUWGKOYhksbpf=&YYp8fCWUYcYkY=&S5LQi6XaqUjn_=&wrP9vCZ_cgdiY=&JnMYEBZedbrnl=&TKFWMeUX_rikr=&_oKRIEYYdnqdj=&V8WxixWVpksre=&UV6qeSXZrVbks=&62GHDAV_fXnpq=&KE_CyTWiWqWZb=&hueZXlYr_sjeX=&sSznTEXWnkpkV=&hMRMW8VlUYdZk=&uxXLGCVWdrpiU=&wWfyExYcVbian=&C4TT5WYYUmqoc=&yWbDv_Xdeiqmo=&QTagRxYjcqZYg=&qcTlcyVZc_jXh=&ESB9qVYgZZkrY=&BE4MW8WZreajV=&yAPoPIXiecWYk=&3edsQoWYkicsi=&xXHtykVhcj_Zl=&fjdkznU_o_bUf=&7wbPHDVrUWYpY=&ytkMsyVVcaieW=&Q6alhLZoqrckl=&KG7VujUVgWWrV=&vWlXUyZjsnkhs=&E6UgAKZdfeqnm=&SbrmiYVgiZXpn=&WoP7yTV_sdpfd=&obfgpcYVdkUjZ=&5o8xRbXoeVpok=&2kdOX7VVmXn_Y=&TTHrjbVZnbZpj=&9Ue9R_UWUmYZr=&7fvPvfYWVqqql=&FMJR8lXkqikda=&FqH_z_WanggVs=&ZbpXNDUnfnrkZ=&nCZtrRUWXbZd_=&n726kuXZZehVl=&pnBnnJUdnhXdU=&5GG8yjWcpei_e=&IURJGgZXrsoZh=&eOFUgLZXkgVc_=&YWtRqpXasqhcW=&LlLgrsWsbsonb=&NLlr9dXaocdpr=&62FgodZigZcal=&k5toNXVbZoa_h=&y5AcDGZXYgjli=&uVa82fZXagpVp=&cIBmXHYVfasmm=&_nPw62VooUd_f=&EPBZNXUVVpb__=&B5TJwOVembl_r=&zUwBCfVZfZsem=&Bs6eaWXWZiokZ=&a7IXTDUk_mieo=&gyxb9iVfXYdpc=&gukwMzW_ZZVXk=&ZchRMqYVjmWqk=&Iq7avFZegfjYU=&FBk_gUWsehjlY=&keWr9IUdmggUV=&AplnqNZVrgp_h=&aD7MIaVgXVgcV=&fF_tXsUifXnce=&anuLKtUbiXZlU=&vX55jlXYcijkf=&QabjJPYnqUbWf=&OnPDNwZYVhVUf=&jMGFPiXgmVjor=&serkd_XodXsYq=&Q8p5Y4Vhkhprr=&h45_BMWYbphlo=&IU7uvAYdbVemV=&7AW6vIWkWVgVX=&uNCE3EUkipnbX=&2JZcNtYlXinWn=&QUnfCZUrWgmfs=&GcPxBPYnomhUl=&EyUXcOZb_fcXa=&YN6WZeZWfsmrj=&o9sBfsUfXnqqg=&cEIvcMY_joaYV=&IDpFMMYqZb_Zf=&XVz8r5VjhfVcX=&DsDBu6YVZhccs=&Vt3OzWZrcolpY=&ne5qGDYiUXWoU=&ouRdQLZWZmrbm=&OmMAjgYkVkoUV=&rdNIARX_Uoask=&iSiAmZXmfUUqi=&dMjEsmUZnnhpe=&Vw26DrY_cjqlU=&qYPDsOXraelhl=&3nk5KtXborknX=&D8HM7dUYWVlUl=&LQ3iXIUmXfpso=&JYIBGdUcVYmcf=&wAWqfUYsalfXd=&GyDZkNYpekpse=&yCiLvEUnbhrrU=&8MZCquZgrfWpV=&lROi2DU__XjrW=&zj33HdVplkhWn=&VHWG4OZUbXUna=&ZlIUMZU_YigbZ=&vKNVDkWVhjaki=&gJ2pDsXZkirme=&EFUQEBYllVoUW=&KEQd58YfmXWhs=&VE55rIWqfcsbf=&rS3pujYUeplck=&CJoF6PUeabUgU=&dXXT6kYojmXhh=&vvpswbXolYhrV=&T_C6jMWpongdp=&9kenajXUrWkmb=&yMMKdFUhZYdnj=&T8PzkkWl_jjmk=&FUZFuFXkZ__qp=&2nUNdCYmYWaWV=&6dVXMBZhgbhXX=&OZ7ZpRWffbmpX=&lohnUaYXWjcdb=&_NCu2sXijWmlY=&D24hMFWcUld_s=&9d3xHDV_Vmqmb=&sJK6qAWceamdk=&vK_YoLVj_eaji=&RZXAjWYWi_kqr=&I7xnegZcndbVs=&G_lfTQZjrkYqj=&xAhBmEWajopVj=&K6Yc9rYWnZngk=&9K5sKtWUkdY_p=&XFovv8WfoXfbe=&4vncTVYZZVgaj=&a6285LXpUhsos=&rCzda5Wjfkeea=&DUGmmrVZmchem=&Kbl_TGUdUnqWe=&dCm8GjXaXVjim=&R3irHQWagpfhb=&WPnSMgXrjfeUX=&g2p67hXZljiZm=&kgF9jYWZrVelf=&N6LUh5Wb_ppko=&ijEIttXnn_WjY=&W4DTr6WoVbaVd=&3yPBzIYaZgWfe=&K3Ps5dY_rscia=&jwP2TjWrhZpWs=&VRM4LXUhediZl=&LazV6sUmkrZZg=&dJpCcbV_kd_Xm=&DdZ8IoVorUVae=&4TgiwnVVoeqg_=&BFuSCCUVoXgsr=&KKoyZGXjZrWae=&elacRDWfoZ_Ue=&7oW_SBUmmYdZc=&uoZJcTUghbaff=&ERp2cdVggeYrr=&XlAIPSZdjkgqn=&GRmB9kWW_ZZUb=&RzeJ_qWjXUjdc=&b_PMSCWVnhdVo=&Lm5CWzZaUehlg=&hLJGzmYmjhmVi=&ufePs6Zjkqban=&fhnDuSVofkeV_=&Y9sgjKVVmsVYX=&iALmORXsplpnk=&MdaccOXsfip_l=&doftU2XqeXnbp=&ghqwquWkYaenj=&LY8VGWVdZmZie=&REndasUhmlkkg=&aQj8QIWUnafhc=&lf6bPxZoofibm=&SUaKeoWYcZonh=&AMmkmVWZc_iUX=&rvsRjqXbqgYdo=&FEpt2CWmqkmar=&qi4ppRZgWWVcj=&dCejvGXUaZZWb=&jQ5NGPXrfaoen=&68YiPUU_mZkXU=&SUNjD_WdfqWeY=&gO34lmWZ_frUq=&Sf3ZtRWZqcfjk=&3P2i_YWdjjdn_=&RvuM6YYmfWaro=&2GJYCnXdkW_jl=&wkSrw3Ubclajh=&JEXhCpZgdXgdp=&GzEubCVdd_mhb=&UwKpYDWYkacij=&ByuH3HZpXrohb=&zpnzGWYnorZpZ=&ydCVqNYlXU_Y_=&NwvanNZWg_qWi=&mOfBjEZqsssne=&JJNe3aUZlleqp=&yuli46WkXohld=&6L_bWaXfgknfg=&ytxLZeZnjgpla=&csDoY8WUbpg_X=&kSvumaY_kVoVm=&x2zgV7ZjZpiba=&KAJJbYWaVheUs=&jqqSulZkfVcsk=&TguUUaXgd_inh=&CEKVExYpjXgnf=&5Bm3rmZibrjif=&Rp7XfpWqYdVUg=&hoAW4OXUZgWZ_=&vYnwcpYbmgaj_=&rcY3ejXdfbaYj=&lzD8EDUWknehc=&bJ5XG_YXlqUmY=&FRlbZyWrqhWWm=&_Eyz8mXqbjWjj=&5B92LxYaqUqrY=&fA2NieWjcYqUZ=&byftIyWcpfrXW=&LEhNFqXZYsfmg=&HDFxRRXfelliZ=&iQylAzUUfcebh=&GbJ8QjVjpoqWU=&xrxSdQYWWikcd=&EOC3dwVjeiXho=&TgYriRYYnUedU=&seB2slUjdchhi=&WYOBOqWnecpXn=&ONF63rYZhXs_e=&hsT2FhZlZpk_a=&Ma7lJXWnXcrXY=&tu74KhUVdW_Wa=&D2r7QqWXqpdpY=&VdzSDJZfagUim=&Pjn4JPVUfVhls=&dftU77YZpVn_U=&dIFdFgYprieel=&sv_hWtVUUkceZ=&tm6LRMYUnUVZk=&xAOgoQXaerpWZ=&MN8Me2YeWgZba=&3wyxQnVfjUjWb=&2wYLCaZslZZsp=&uh8BkhYnZpZbg=&cH3UPbWmbmUXW=&qkkRMnXXZngmV=&JsHWWoZbioYXW=&4c8tmlVUggXWb=&QwkOlXYdekXV_=&TUbiBnYkpWebd=&ZPX6GmWfmXmcd=&uWFPAzYrjZiih=&ZVFVpOXbnlmii=&Ilv8YeYmssfha=&ibgFwuYkfhgZW=&cofTcpYpiYooh=&WVz4bbUdqdfbq=&JKQZypZcmY_n_=&95DwQCYfrpZYe=&mI3Td8XXbppmV=&ffumLiZZXeieX=&V8EK9_XmXcesV=&lfDR8TYWopima=&9trfWiXUqpcma=&uayNhMXXaUqps=&R7yCwTW_aVrYj=&fL5QUEZksmYa_=&aZHoJ9Ylrq_ie=&h3HyZzWZmUijb=&qWiDm3ZipqUnj=&sH8qQPXkWjhfk=&bCuZclWXljajq=&sJWycJZWqcjfe=&Ly4s_uYcqepak=&lyAJ9mYddWcrq=&4XXxpWY_dVgYo=&LAXXaDZhWkhkW=&D8JSLAZjlWoog=&msEYjNXfkpnVs=&bgizMzYZXribq=&SzHV4gUUUmdpf=&RmVCZVZnWonea=&ZMacz9Ypalcfs=&WTjlW4ZZisVpZ=&DLyeSDXnsrijU=&UVuSCGZnrnVZq=&tRYDEaVhZbdj_=&ct2iJCXpkakjh=&8eftBcVWpXXjq=&kdqLccVqqUmhh=&2GpIhFX_sflWk=&Jf8AZLV_omUeh=&gFwE8YUosYYcr=&G9IM3dYefpngp=&qCMORUVrcrqgr=&ovuC5gVsnVaqV=&8IxnoJVro__js=&gabXhAVpebpak=&6ebuM9ZdUbXls=&7SPxrOYmphpsj=&hnfuqYZafdVqW=&IYcw3vWrYlfir=&uYboWhXZsbsrl=&T_hKDZXlUosVo=&Q_ijf4UhsWggn=&M8W4uPYlZVVka=&wCi78wX_lcedp=&fxuasLZggspke=&rRJgXxUprbgql=&iMTp4gZYpajWj=&QPvXkIXm_csba=&u3O8CVZqeporY=&ifalSgWsbaoac=&mhhn5GZobslip=&_F5VrhZapoVpX=&rEnzsCVnfYnms=&RnkD8iYliWclj=&yBEptbUo_olga=&kTFQEfV_bXe_h=&PwIgUkVipica_=&c6fnWwUXcicgb=&ysPbMgVWdlcgm=&WeSHQrWrUnefs=&OClVvEUVsUnjf=&qMwEDHWqXrVkq=&KZVtihWhfcmnU=&fR6_KrWpdrjob=&9i8pSRXoiUaUX=&r6R85KXi_aWi_=&nSKUlGXlibqll=&vjTHSRXrpmUps=&KEJzpPUesjssk=&gqcoYAZZYnXXm=&_aM6hlZXUpefc=&ggI_xTUcWqjnX=&_KraOwUojccXe=&v_7Y2JZgUalhr=&KK3KHnUkrdeUp=&NjLvQrYqinlpb=&nHJoI4YZVasZW=&mmQhMwXmimera=&jrOGopVXjZkoq=&xgREfcUnbZpic=&MUkUTMVeelake=&wnEpVlUZWjUbW=&xuuVaiXVjcjdq=&aGfQgeUaqZdoi=&u5GxrwUhqrUcr=&Px5Mk3XgWhgkf=&bWKJMXVpf_acn=&HcnhwuZjffYnr=&8XqHSbXjnocVf=&Crq4OVUUrpsge=&KKrJupWokXZUm=&5GxBtJVjlnVmY=&DSKeN3ZcjoZkg=&RMNUzkWngdlj_=&Pt5cyRZjseqrh=&q9di3sVbfbXcZ=&G6GRyMZofjcfd=&mSHmT9UhshdlZ=&T_x4eGYppfshe=&pqqFfeWespigX=&D_QEwcWpUefjb=&Pes6UuUlponjd=&2O2IK3Yqmomor=&xhCunvXceVnrd=&ZLmN_XUlhdlWd=&gQKRYlZoqfqaX=&ev4jkCXYj_ioU=&u9jjEZYWpedbd=&QSW9r_Vf_sZVk=&XQX9LkWUk_Ucs=&yRrlVRZoUjbn_=&qmRM3OWfeogpo=&hN6IkZZWoegXf=&XVlWaVVmVglfZ=&MNy5VlZkcnWse=&gs3SQOWpcUabp=&RVZaSyXncrZdZ=&AU8k68ZYabcbb=&hlyJJOXpihook=&qDifL_WjhfsXs=&RglbKPZbprebq=&BDzhIkWUobVip=&7vnj9BUiqVrin=&LYwtuSUXUeYrn=&U4VtuPZgiasae=&TdCUpCWZdaWUm=&GQUwrGWXjsrcV=&SYet2RZjiVhae=&w56xoIWkVoWYc=&veiwqNZgYXUcn=&nMQSYBVsdYbbV=&VxbpedUnhmahn=&f2agBDXoUpi_V=&QplIUyVVZkfin=&DhRIlzYi_pfki=&6A8rXFYYsekqe=&BNSlEnUafbnbd=&FeJ45HYrirabY=&DSZ5qpZlXjfop=&GbxRhrVWXrldl=&qFq7_QVmgqkhe=&RcnMqsYakVmhZ=&LMdP8wWboWbVm=&3HHBi7UpdZVpb=&BZCB9wVrmjZhV=&UCJ5rUWcoXVZo=&pRPxNNUnoWhro=&NAzVsEWpsfVqb=&6mUHrvVUro_rW=&En55YMZYrijgj=&X8dYxLXhdheUg=&t7wKblXildfec=&w8IVHHYYgfeVX=&LqfhCrYqd_fif=&zamGuXXYfjmVl=&HSdRUvXiUeUZZ=&ziuC6fVoXlspq=&EAYVQQUUXZabV=&dgnYqZXcYkXVl=&7TafmyUdirhrj=&wYqAzBZacVgrY=&BQaIUFZpYXZsp=&LWj7ncVsmgrmY=&eF_FN2ZckeUaU=&nBeBO2WsZpdWs=&LQY3CaUVpXfke=&LOqunKZgdfWcY=&HcCV78Zk_qhjn=&V_Fx3YYn_qWoZ=&SSra4LUsfqcX_=&rQZQGlWspddVW=&FXiAB_ZaisdUc=&xVMe5QXfagpXh=&mlT8iZWVhsUil=&YPAwqHWbeVVhl=&zalVvhYXUfaZf=&uHasVNZYkrblg=&TKNKR3VVVUZpd=&gELHxzY_onjYj=&JmJGFwUV_nfqf=&Qy6QU7WanamZi=&GXyDSiZaWjjgc=&QJBLKiUsp_ZYg=&5EMUJZUgdYpha=&BEif3JVegh_hj=&ej5cCpYqdpbYU=&olSxD5WdWmljn=&SrDdUoYX_dU_a=&Ihs9R6UYclg_h=&TlSYA2ZnqWVWd=&VXT5iiVXeacXp=&lvGjZJUahXiZd=&Qk6tVXWiidWmW=&WivZ5WUgrneql=&sGGZQUYmmZZYe=&lGaVFTYlmjoZs=&99wcaDWmbdYiq=&wqX7kWXXgcgk_=&xQWxChWakdXlp=&tytVXrVnsegmk=&VkOQBLUsef_lg=&egCInDXdjlprh=&88R9wgUqmifbe=&64ND6fZXgVnVs=&p8FYFZZa_bsbb=&XHOfPwXoarrca=&VSnMhLXadsVjf=&szPrfjXWmpiee=&aPbux8UsdoeYY=&JtanVhYrqUdnj=&3uXe5CVnWaeZn=&nO9HqYWloZj_g=&8IxN7sXfkWZsp=&2P5KmgWhbh_cc=&hH3WMCVfprjqm=&IbgP6IXh_cefd=&XOCEK_X_cakbc=&MLJoHKXemigjm=&ibgfSAVplrcnk=&oSD7SSUlZblmq=&7O7qNcU_WpZak=&jzCyOjVWpmWgi=&D6AZHrZrUZUWn=&RnOM2iZgcVpWr=&_D5RgRVbYesjV=&VoVfDgYYmaqhq=&w2iWlKVrhkmoc=&EIxyrmYYgbmhp=&Hwjc3VXWbnlbf=&4prfKlZdhrnUf=&7V8ZktWf_Xfek=&mCmmCNWUoUWks=&IkBYuZYrgshla=&tk6smfY_ZeZsq=&NJNNKSZVVfkhg=&hJew42UYUaeUl=&6N2haqYWV_aqo=&UzpibAWdqcogn=&89MyIMZlfiWlU=&_FOB4BVselkUp=&XLu372Xcolnrs=&SDNPVjYgdZqWk=&QhSWWkUlmU_gp=&rQwN4qWofjdsX=&jhllgAZYbmdg_=&5ckdQYXqjVenW=&kDTnaFXbbcsmW=&KakhLIYfnmrqU=&kIFbm_ZXlbfUi=&oV66oVXeWcUmY=&ooVQFxWi_f_de=&P2ikJeXodbeZc=&MsbwLjZZjjhcn=&FOT9OcUafbXlX=&kq2_a2WkZqefj=&SbYTazYjeenoo=&iOVTCiZY_okpX=&zLv7giWellqXd=&Oh7ZHPUbZoXnV=&jspw6QXoa_ch_=&GWogr4UfUffbb=&dM7_pLUWokjWr=&M56hfSUfW_bZr=&Ow28JDXaWra_d=&twOLNjWhUkrdo=&ZI8GCAVcacWXf=&wLCTPlVsrYbom=&RwPgY4VspVmX_=&mRsgdhWhYq_qr=&5x_hsLYcpZZVo=&8fiDPlWaYniUj=&fxceDzVlinjVk=&WzlZomYaqapUf=&iQjVolXjWopbg=&9fOqfCXWnlpVi=&nwX5l_Ydmfnfo=&Q76cpkWlZgUsh=&edVHwWXoammYZ=&5oXz2fZlVbmVq=&uP4TizXdUrnlm=&GPpMdnZbpbWjW=&UqTNeMZrrfhc_=&b3u9QPZmcZsns=&ceOqbLZnbXp_a=&fQONUuVbqrXUn=&upnLDIYjjbqVf=&CjZgq9UZUUajd=&nV7YC6ZfWXfZX=&CEqcmsVmUYeXb=&nzlgFJUYVV_eo=&ewG7OpZmWWaVe=&Wdd8FDZXXpWqi=&oGDsTCZjWcjce=&CXgalqYaihqdh=&KLXILsUmqdrVb=&QGdFliZdXoZdZ=&NyvamHUUhfa_g=&sxZYvyVompekc=&EVvFhFYbUfhep=&pEvYWoWYUXpml=&sYBwgNXmjXdfa=&8WBhsPVlqoils=&p_jLMxUpbXifd=&fh8rXIXhasd_d=&APEQmFYdWUigU=&gNpQ7xWjsUYkj=&W5lB4EVafpXie=&g_hgtBVaijakU=&FrY4igZpVafpj=&9Qx4iMYVhdWeY=&nMcQIVYoWenbl=&WzQdcWYgihmqU=&syC_DLZqoYdhi=&WqFgTNUcaicWY=&N2GFDeVVenXbq=&NffgDEZaodds_=&2_yTB_Z_joXqb=&AiWtGIUcohUVi=&N45Kc8ZhWsqfj=&ZHqjZDVZfrfUj=&tTFWLUYpbrpjU=&bZ9jW6VYkloh_=&a2RdgEUsfhojV=&NKrnNQWrensah=&utrK5AVsp_gjm=&jlIk_mUYok_fs=&KEk6YnYhbnsok=&gcfnOpWUipZfp=&hFAXsPYoorqma=&AatlDMZqZcfXm=&4A5bF5ZXqXXUe=&K_f6BJYpmdbdV=&4lGnisWUiZqUV=&Oiy6VgWnbekYj=&iOnV9PZcjcoqc=&4TxInFVdirpXb=&D4ffMDUapnVdY=&m8J5AGWhaXg_V=&r2Y7jWZmUgrjb=&kcP79AXmeaYjc=&pgegphVdXaYqZ=&Z3jn4vYX_ZbgX=&kXRlbQUigmcls=&4B7kbtWaenVbm=&zcak8pXqYUcXo=&ANFOFrZWXabhh=&TziSFUWsfWrdX=&a6Wg5HZXXXomn=&2iEEIPVqYWiW_=&VWamtQXValY_s=&xZtU2nZigrjgp=&dG67yNYdVVdVp=&griBfuYYpcjXn=&y2tQcwZrVYoYi=&6lNUpXVZYfdlX=&Qh6IQoVYddlf_=&tDdB7dZgfjbos=&gUJE9jWVhoZmm=&jSYvzqXdWsrZg=&k3A3DOXc__VVj=&DTxxqgWVrohma=&NFFYDRXldiXaU=&Y9aM3LYgUeeVn=&KBHuQCVmWsbcd=&_Kwbt9ZVkcUZo=&Dw2wZLVenUrai=&EgDiCbZfnaesm=&QTyGObVUkhriq=&c3Hz2xZdZYsqi=&ZxD4wQWWne_e_=&5icAaSYXfZUfb=&TnmZBQYajhpkq=&piB9hYZpphaYa=&Nf3LHFXse_hka=&ifQL5BYXUrWqU=&zt83WVUockabq=&cpG3KvYisYkqZ=&DzegBhVmoejgb=&ndiRRfZhVmkX_=&DBjHQTZgfhja_=&_3EMY_UdfoYXs=&mSddsEWrqYapd=&hqFjY6ZsiYkdf=&RR7gu_VqrYaYn=&srpdgWXihhYqf=&EwBEsqVcVoZaZ=&sekeqRVhpbmig=&2fByIqZpiqbcl=&dgyMGEWsXWria=&fTFFVIVjrglbZ=&ZG_Z4_ZYdnbk_=&l46YDGZdcpdmh=&mcFvZAWbqnoUU=&sTZm2TXlsXYiY=&i6ehEKYqrZhks=&p2kZ2IVceUhja=&KEoBLiXfeq_fe=&YnKkqWZfdfZXa=&kMZB_WZmcUhVo=&UvmzLpYUorsph=&s9gaiQYWhpXbr=&qzZsN5Uijgsqr=&D5IkRlUXioWle=&3MLe3iVbXfsnX=&iz4P67ZkU_rYj=&rVUGrjYUUjhWh=&62vxNGYaiac_m=&ZEccs7Ygobens=&Kvt_vRX_hnVor=&B6FVT3WrraVZk=&AKdOhyZgejpWY=&T6JPFYYdfcpfs=&bbtlfvZadlnVY=&TbhzwpVm_khZh=&72vNKcWWsndrn=&DfJ7SOXlqlk_h=&vm2YSrVbe_Ynr=&bFopxWZneYlsm=&V2d4DHYWXchhs=&KCukroXgUskZa=&63Wh7zXplkWZe=&xWcFhoXmYsYqj=&TI6VH9UbqWfUb=&6IDdRqYrqWrf_=&KyMjlgZXgqilk=&hsAYurXghhgik=&an3BV5ZpUb_Vo=&qo8GEvZZWlfip=&F8A69wVeZmVhs=&ByzMfeZrboelo=&TdmLJIZkhiVdh=&HybecSXfjUpel=&ntNKELUj_VdZf=&QSygpfYjeXhnj=&I4Y5K8XlYm_ne=&MuSePVXbgprgb=&TMFQLHUZZbdUX=&y9CQjyXYcjo_o=&xCpqyeUUVrVph=&LfyvUYXZclmob=&qjwWerVqh_Yf_=&kV_nlbUZjphbo=&shpqbyXhnqbia=&eC9po6Wc_d_oW=&fb3Z8wWrWpYZq=&eVsBndUVqafgb=&QT7zwxYVidek_=&fPjHLqZlWkgio=&rkuyXWXWsgVre=&pSmdIsVZ_mZ_U=&3eFgJwUknfqof=&spSqWJXsZ_UUh=&JECjbFWifbegp=&ffA87uUoqgcjf=&BktxUMX_nUjad=&vUBZA7UghUnld=&DJAWG4VWogafa=&AvkQYzUmrnekp=&99JDoJXnXnmhV=&av6RsuZmZUUlr=&ukhBnLWrjWcVc=&4LQpIOXobogXl=&J7kkqPYpVpnjs=&fZ3JDVWjbsgnb=&KAZgnzUoWkqlr=&bGkGgJXgkmUic=&3_GBvgZZWXnpU=&IPBSrIUrdedfi=&jWbCzbZapYkWl=&wzz2d_Zjiqjom=&cpmWObVdiieWd=&d3PTWUWnhZcn_=&by8KPuYhskZrh=&3e7YKlUgVVrra=&Rhzu9dUhmmlsp=&efy4q6VgdlfgU=&LrGlgPUjpiWqV=&C5HLJcVrkbUZa=&cmRJ7EZjjUffe=&PqqY95Xhdglag=&xmSMd6ZlnfWUc=&avDhxlXrZdkss=&FeH_IoXgrd_Um=&nMeTbaYsllocU=&Kq6DjfWbVhfXY=&5_BUHeWXZUb_m=&q9A_JWVYergqg=&5bPBc_UhagjqU=&66V3XiXZgWX_a=&DQIIzaYchkeYo=&Dcr4hFYhgeo_V=&V36V2JXfXdgoq=&BT4dpHUaasqrs=&9ysTokVkolkmk=&GyWO_VZhUcsgk=&vORs5iXpeilkc=&uIqBqBXcneYf_=&UWcfTnYWdppl_=&V3nHOnUfof_Zs=&QX58syXkmXkeb=&yhzABUVaispW_=&5VCGveYWYhofr=&jsFxjqUnYqWbX=&g4agT8VZpkioV=&qCvgeFXfiVs_e=&xprmkpYfsppnZ=&uKm3lNVfmgnWk=&iD_hcUXZ_gbnf=&fRusJUZpfUjak=&AyW4ZwYqsmdmg=&iPgcsiUYhgleo=&fonhmjZbZZ_VY=&R4a7g3XWsgioW=&4v5fhCV_dnWhl=&VhItPlVakeWrs=&MhgcDiWsirnkX=&A5gJRsYrYYYgY=&YqUY2JUpardUk=&CXPZHqXrjpiaZ=&bUjg9QUnimbda=&Gw7SaDUmWXllb=&Qgqs_EXqY_Wgg=&fhD58UXXccbjr=&Gvv823WWppedk=&y35SctZfXdlZi=&KzQ8tAZmqdnbW=&hTPdd9WWekUgg=&ptpMGcUdhZZec=&NHizxwXfpnpjj=&QBpK4fUpis_db=&fvVosvYWmpnpi=&QNPhI2XaWYpsf=&Rm34gkXsUpZmc=&ScdYtrYpsbUes=&WAultoWcXjrik=&UZGrMaYbe_meY=&3lup2CUWkrn_Y=&IU3wUYXdZsWmi=&pHZeZhVaVnUrk=&ys226UUdWcVWo=&H9Dva_Uoclcd_=&OJpz4VWZfbdhd=&mOq6WmZWqmcdq=&dbPH5sUjXmkUb=&rhUh3sXVjlmbX=&WgvMdGYZde_rY=&TODCt5ZVVYacV=&6Wy_IKUpbm_Zd=&qHMnvyVUsYUaf=&EQBBYHYoXWhln=&BSFR_8ZgmsiYs=&Ixx6oLXmXYmr_=&aXxV6sUYsbcie=&mL4uj8UUpqZcr=&JcfdnMZrXZfgk=&9ttlGiYoho_hU=&5YTzoIWrqkWfb=&nPUNvdZinncds=&OIMvypUjYemdl=&D3JlFuYXUpgjW=&rXX9ThWlZlYnq=&fUsmf5XmfYZXX=&YucZshUjradUW=&aFJ2jMYlhoZcm=&hk6CI4YqiVale=&Ynk8s7UYjifYV=&M_b7DYV__kafp=&v8QAyvZceYXUc=&n2Mu9YVcgbqpm=&iEqcBFZcVoeoX=&oDRDEmWs_qnXa=&M9hFZRXbsVjYX=&heRzGoXXsabl_=&EXrZFIWlaVlYo=&d2Clz8XkdbhWo=&nxddDIUnUfsii=&fcxrAhWUkUkla=&nj8eaTYilYnfk=&5aEvdcXfYXZqZ=&f7ylzQZnjrZof=&DLAkKaWbgcsbX=&aBPJihVhaWbmg=&pxJxZYZ_ro_dV=&p9E6T6Wkmqkil=&KZO2ReUiUeace=&jiw47jZsammpq=&4Ml8DaUbnbVpW=&HqDMOvXbcZqad=&loF9rJXfXporq=&dgukhLVlUVjnr=&vitFAiZsl_oqU=&GNs8tWWhsVpkX=&KF4cQuXkUsaaY=&Dz4TPuWsmpsop=&jfm_gDXeaWsYn=&2CVcmuZghsXbb=&vyywcrXhYVbla=&wilnuOZqdUfpZ=&dnMdZjYs_phVd=&DCTH9fWdmZeVe=&pUdN6qVWpdsio=&_ZKIfuXpanVZk=&w4q3JyZZdjgsZ=&dU4TQaWZsVWak=&UjXWQJVgaaiiX=&kSAwXAYiabdYg=&mI9MLxXjcpaVj=&_Iy2aLZUsecrd=&urFQaEZrlleXq=&_ZcjvbXofVnUV=&sSX_m4Ujrmfas=&B9u9zZUXqfXWl=&bWZy3lXiqhYi_=&E6KST4VmUdmiU=&kUQAnOXadblsc=&dOuFRGUlo_l_e=&tqXOI7ZpWk_nU=&abvo9sVc_hcrs=&Uxxk7YZkfkpkc=&AZk4n8VbsqdlX=&QJiqQOVaiemob=&jtTJQ4Zb_hUib=&qO4gneYjm_nVm=&mHF_aJWjoqqpk=&mzrVhAXYkWflW=&HtcjEGXlrkVkq=&TsEBcPVWWqobq=&vTrpZmYXmnqqi=&QuIoaNXZjnkdp=&d3WSWcXmqknm_=&cN77LDZlVjbfg=&6Y68ZQYrqkmok=&kjDeOVVqXbbae=&yUfMsEZgearoU=&SgPKTOXUVkeVg=&bJynxIYYcfpZU=&c9HHjTYWYao_p=&HIWgorUjWXfnl=&tgjsCkZZVg_gW=&YxI4aQZmhnnkj=&SGDXlZXnpsVre=&Qruhn6ZVrqWXr=&QeOgpWYffUgmo=&ES_HTuYlgim_Y=&xkOMHzUs_ldVZ=&tu2TQwXsWbdej=&vAcuQBZUfesZi=&Neo6sfZYYZqga=&cqxAMIUoqk_oq=&_5LxSGZgVpUce=&cE6Fy5XhbVWeZ=&YxyKd8XfqVer_=&nCTWWmYYmXYUo=&vGsFVCUcnXinh=&dRc_SyXrVjfZl=&jKKY27YpnsZWg=&ZzDyq3ZjhpUma=&fHphmbVnbVbl_=&OLPc5SWoZ_dop=&5nA4KtZrjZqgm=&Ab_bugUWifici=&4cYg7UYshUbqk=&7CNWqxZZ_snmi=&24Yt8IZllaqUs=&vynCNBVrppsjY=&DtarP7ZggqZVU=&VHsFA2YfeibXW=&3emjAOZWeohXn=&5vKa7gUbmfiec=&dJJ8HyUpXrsab=&hOr5XJXbVeXlc=&TKgmslYmVYkgc=&JAMYrQVirefea=&XSWguFVdnpkd_=&48HjoaZVlYfqf=&UGsIhDUkhbZUi=&zAiV4qUgrpUjp=&uw3eAuUdcbgir=&PHsoNBVpZiVrg=&Z54EqSZlrfYXm=&_226FsYrYdhoi=&wHQQbQXmiZfWq=&jIlws3Zr_Zpah=&GOOvh7VWrVVcj=&L5l5LLZnfs_dr=&tYgsDqVVmkape=&idxjywXbUfiYp=&F8oagQVcnrbkb=&mRXzzbXqVbnjj=&vBGkWJUfUUnZZ=&cHoBOcYleakU_=&WLufGVUeaigii=&Jw6QMzWfUm_of=&rgIEKFVqqVikh=&wPCoykUqZkWX_=&65_miPVrlgchj=&ALluVyXWhnZpl=&JwH3HYYjlliWb=&7fmXIeYaaiVmW=&PDYvoPZgepppd=&VWOpoQUhkebmV=&Xm_VopWfofdjs=&7pO7EsZkcndcd=&vpkymDUgqrefm=&YzfXJQZsnVadX=&rbwrH6Uahldkj=&QRlYtOYeebabm=&ERinFgXdpYbjj=&pZl2r2Yh_pYUf=&ZMrlSYZdc_jgp=&i5MkNcUrYhga_=&MZhxp7VWdae_V=&TWvtNFZZjZgea=&p_YsnKYo_kZZb=&IMhsyTZcmlXnb=&dSmitcZsrcXio=&zx6dKwYrYYpZU=&HSz7pQUcnYhXl=&9EQY5LUccpkWl=&AHsMmUUjeUXeU=&d3CHBfYZVohmq=&Oo3oIxVkZeifb=&6RSNaEUqjrclb=&UGJuupXVUhUZh=&KjTfn8ZiWfkbj=&ujHOWoYirjYol=&QVkSBEUiscabo=&CbYOH5ZbsZabl=&f4TPyJYgrpdYV=&DfekrGXhWZqVo=&3euLlMYdmo_as=&RcVyTYVXapcno=&lX6trfU__XkgW=&3HbpjSZqlnnhY=&ge_bnRUcoiXUd=&F759WIXhn_ile=&bGQ7sJUpjohrf=&YDJ_JSXZ_Xfia=&aFtibJYceokqV=&nEJYsbYgrVfd_=&EY8Xi4WWlllZg=&k3fDsgYqXYndc=&HtrQdIUjolUrY=&HfGH8MYrjabkg=&yWHOHiYdqpopk=&f3qTMkVpmjqUc=&5LAIgWXjjrnWl=&xAN94HYoeldmh=&P5HolMUhbqVbU=&NR2nADWWYYVel=&SDs5aZVecUhsr=&n3CBv6XVbhfUq=&oMYPxtWYkchda=&AJiGMrVphZkbi=&gB_tuhYnUUXhb=&AiXBFQWkaiVmj=&tgftQXZVXWeaY=&oDgZQdUeeoVkd=&7buHsbWgeX_ep=&YCp_LsWYYYYjm=&_qrBueYasaWjU=&duQtyTUrfZrqY=&IFUC9BWlYbqlg=&ywW2e3ZUbflVj=&XntwRlVVgaold=&Q8e9pZUollZsr=&2z2IOoZYbbkjW=&F8McdxUagosqh=&VyF7zCZVriUdY=&8tub9PZfcUVXZ=&qauwldYc_UZbl=&xmkHZdUhesceY=&cjmmjVXecqojc=&KdQekVWrgiWVn=&LTwdeEVopoXYh=&7irSN8ZVsodYd=&kmRiu9UdeWmep=&r9tGBkZYahbab=&KLHhN2UeYkclj=&fjsNE9VWecsUn=&fqdlfSWZWbe_b=&mLE7KlUi_Wogp=&4i7Y5BYXqrhnd=&cfim9pYooXVop=&dmE59WVofngVa=&TdOTW8VmYecWg=&7sCKeiWcllf_g=&VstQelZlYfeYn=&GLToqXW_kd_ad=&5nayWDVcfsqbc=&BEOwEtXhalmln=&PmSPLvWfVa_jc=&UABWZEZjVYio_=&hXA9V2UW_domc=&7Jyy5UVkgUpbb=&SKKQcSVhWYrfp=&tps6RfUenkcbY=&9iii8OYUsYjoh=&WYVWVOZp_Vdfe=&PZZd8CVVsdYXi=&XYkIkHUeVrpse=&OsASRwUUfgqqV=&fGEK6XUUXkXZX=&hi6qeLZrVjnql=&CgXNctVdemd_V=&zFcK5gWYZhnce=&MIMzpJXrrZsco=&_et96sWbnjcsY=&SiJd8aUdrrjph=&jD8xIvXpsrnis=&SFvwW9XcVeUod=&ubt7SbUeaegsY=&uptZH2Zdljmaa=&RWWZI3VoWmcrj=&dih6w_ZUmlVf_=&T7OdwTWjelsaW=&_B7riiUmgmjUa=&kYDxp_YpchjZW=&paYoRtVhnjbkZ=&ULdzKMUegcnjq=&GBGenhZdWpYYp=&Ig9XP9Zfro_nX=&eoYiwnY_hqo_j=&ari8V2WYoecZe=&9UL5xqZXmZZir=&X5LFXAYcsnVjs=&IPdUDnUjZhocs=&jhSVRdWjekjok=&tONd3LZrrrkeV=&Jecc9iUsVeYng=&8oYS2VWdkqkkb=&sj7FSaVcbfclh=&xvxAUxXinpZVs=&MGC4gZVUrfi_a=&cS3H3pXjpckaW=&cNxgMaZrkemWd=&cbRfp8ZWnUfsf=&bXhxiUWpnhhja=&5zpS8OYjigXsc=&R9Ov45WlWqXnn=&SLlSlUZjjkY_Z=&Ky7OxWUlsb_Y_=&ameHCFWhcgooa=&eRkTSnZlancip=&M4NRFKYhlYfnn=&DYUzLGZdlqnYi=&niU2yDVpVpWmg=&XgDq3lUXkiYUl=&prHvVbYrccspl=&AcsUNOUbVZsZW=&rdJbUVYgglgiZ=&TQBkQSU_hoqeg=&TRiv6dWqWmadf=&IlloJsVgpXjUm=&aMqLeGWriYmUV=&PqeKsZW_cgceV=&ofGDlfVZicdqs=&n73QYPXhWaan_=&9hG9XBZkfVWWf=&qm8ugjVsbfZVs=&PW8IDwXoomUkp=&767lJOYr_gWZW=&8rB93hXeopmpq=&eC_byxZmWpWWf=&Wk3sbsXiXVabo=&MKbgOJXn_XeUW=&yDQUgLVkfrelV=&z9eHLoYii_Wes=&io9aWPUgcpnWi=&CSEkaQXYbgscV=&9WjqaVWln_sZa=&IKuKuuXeUkkYc=&5l_XseVscojhc=&PMoNAiXijm_Wj=&vSVKG6XocdZib=&UtNUuVUZWneXp=&YtNRQlUbqp_YZ=&lJ44eHWWWbsYl=&j389IYUsaUgcb=&ejK9wHWUWaVbr=&MoPWIAWlhgZZo=&9wxL9IVVdkgso=&5eg8OCZfcscqY=&BKTFPIWadfVdh=&v6qnklXperVsZ=&mGFmjzWgsVUoX=&acAYf5ZlVnchr=&nFUgz8UlXgqqh=&UiRew5YoabeZk=&EYIt84UsjqVim=&R__yApXmsYiWY=&56EQkHZs_blqe=&M2P9DDXbdqran=&oGNjeHZZimpaf=&P7Lp_IYfZqkjr=&ltCNSTZkq_pol=&tImG_MUnWZXd_=&6DmOW_XlhUlel=&c8JicmZcXaqZs=&FyziR3XZbnrf_=&gXk2bFZdVmXhg=&atE7EPYgfrcjk=&AqMOy5ZdorsWY=&WWQtlDZrojkjg=&LAOJs6YpfaWiq=&b8MoWoXeWapn_=&cE83m4U_pjlka=&faTEjfWVbonss=&_cPwA2Vimlmsn=&fAoXxiZqkhVdq=&vx3WiTXdkerkj=&nyoygSVmikqhk=&_jMejjWnsqUqn=&pofRAXVYj_drb=&aBXGwFZsXZYVq=&FHFY6kZdXYkfj=&qBX7JLZqbbjqj=&ZfgCBLUYZUsog=&RxYINtUob_Woe=&8TOWWlYjp_giU=&v8HMepYdlicrc=&F2QGyoUjrZiek=&Z5mitLXni_Xpm=&MPbVsrXlqeVln=&TsUe3sUfXZkfW=&D694ypWlsVjjV=&_q9ONlVsWWmcs=&oqBMiaYoUnbVb=&MyLSd6ZssbWqa=&KbTyBaZbeWsjf=&YWVjPzVdZoj_n=&4bL53hYfY_ffY=&ZGUhKFViem_iZ=&hzohKiWYbm_Yj=&WhlV8RUaYfdgk=&PB4sIOYqVqcXY=&oRw7DdVdkfYfs=&ub9u2gVilmesZ=&Uq3ozUWfXUbkb=&GfNz7VUcrkrrk=&gywzT7XYmXsbm=&V2rKdEWXYlrfX=&yObbv2WpdlVne=&9732mAVUkZZZY=&25k44LYZekejj=&qhsWBCUgsh_mk=&Xm_yhGXslXooo=&dHTEERWnaVhUU=&YsxcE8WeehUkY=&4yXTLrUkkkjhU=&xj2wpjVisjjoZ=&IUoPsbYprYVfd=&jvgOOcVgUoifj=&t_8R6gUYfheWh=&wZCcgOZbmihef=&7UNJOfYd_qYp_=&x5sI8PYqVfmXX=&5GAzPeXoelqip=&bT3rNcZrUpXpk=&42IAuhWZnlcop=&wBxQLbUglgWmW=&f2YDCPVqcei_q=&iAOUivVecibkc=&QK6shKVefg_gl=&kwSRW_UgicmUa=&jgTpqjXpq_kel=&MzR2OyZknmnpc=&IVLUPaVZkXmrW=&hAxTdpX_UgYid=&V2IX4UUpbohoU=&KVhl3CUfim_Xg=&FKsQqLYaspbZU=&PvbwMIYniXbqd=&39gb4OYrnksXq=&xqC_xpUaaWiii=&fsprtZXfUeXj_=&d2fwjPWYjrlol=&CnzSWSY_ZrUrU=&Go6JuDYmXhdfk=&CPvzZLYpdqWWa=&_Yao_hZ_mkUf_=&LVMkPAYYrifko=&WRSJmCUghiVsr=&qlPmnYYho_WsX=&ifJQtnXplXjrd=&cUDZ4qXZepeel=&y_3f9ZXerUrXj=&ECIRmVXrjWhmV=&8qTGbQZVqUdeV=&B6sNhTZ_VYgVl=&rGONdIWnssoZU=&22a2F2XpenXhh=&H4DwzwUlZnpqb=&EwecFmYo_qUqU=&4yUuJsUlnijWg=&Fixh9rZiclYfk=&x4jj_jXYefpUh=&x5RzABYbgbekj=&PazcNGYmXZfsp=&u5VV5rZojrsab=&OUSkrtVVlhbbV=&QazHqrZ_YUfZn=&YoTSNqWcZi_iW=&X5q2WnXqheYVb=&EBNUJoUseWdVe=&E4IPkdXZZmXhn=&RQ4GkKWsiZlmZ=&RjUINyY_Zsfgq=&nufWAjYWoqp_j=&OIU3uoZellrkp=&_JGDa9XUgZrYq=&rVYlY9Wj_oYid=&CE4jYCZqrlccm=&4k5Xl7Wdqgda_=&ujGAufZkid_fm=&jG6moTZhjZdVc=&QLhQSWYfgbfsW=&Foe6YVWnXlXrV=&Atua8HWhgprWh=&332jPHYrZerso=&64aDBhVZkdX_e=&BRxQAoZaqdnUr=&LVR4GFWsnYbkU=&nb9mW8UjdWgos=&MUqE2lZoZimjq=&2_X4PZXiYgeip=&89jznfXo_ccoj=&CYPrjlVWcijfW=&M3OQJTVpnoZbo=&ePj6aJYhkfWbo=&m3XxrHYUhYccc=&thB6orZksopfh=&bO2z9KVWpbqil=&7gRHvAVqbdrnd=&sV7CD3UgUfYjl=&cWr8RgYjcWnjj=&GneebsYXb_Yj_=&QprqIIYlaYea_=&QLZtb8Wmqqioa=&TTmeBrXpmggmZ=&yKQc7RUkqclXm=&WH3AjjWgeYmhX=&YRYTbNZdbUeVh=&h5rKiuZnXXkdY=&RFhkcZY_kcfqq=&TCUY_MYfgUbWk=&sD6UxzZdphsXs=&cSQTiNVpZcVqp=&K2vPKLVWgccXn=&rcE7IkVjd_gkr=&Z5dPN4XV_Vofs=&lVO7lMWUfhanZ=&EzyAXFZbjchhf=&OpjgqjW_fhmWe=&VylVf4UZUV_YU=&cQYxsPYVo_krX=&OpTMLDYemkmhq=&IBdq5BVolXrgg=&xhhIpDVeZYiei=&Hjy8pDVddgrhV=&BwnyItYmkdXnh=&F9b3WjYYXgih_=&KA6QARVqpjWjd=&kcDsyfWWXgUoW=&OttLDlWkcemoW=&jNEnlaXfjmkWY=&HZLqIDZgpglmq=&WariUyZWcjkUm=&CsnbolVlnXqoY=&zoZJQLZdfnnec=&Ang_pFZgVdbcq=&5rgs5RWWeoqaZ=&RYetgZUnVdZaq=&mGg5qkXreZeY_=&ULksgDZgZ_a_f=&FV3T2TZkkZpli=&4yKX_JZbaajqf=&W9_VLTXZrbpUr=&eQSceRXpZqslk=&t7WrqaYdgUYjr=&IoZyvcUojcfha=&euK3ILYUXhZX_=&a87sbBWeskflY=&xEyDJFWZVhUWe=&Z3Zl_qZlZdejX=&S3_ptwVpWlajf=&pqqnwZYkZmih_=&TgVRxaVllmdsX=&T9rSM8ZWbZakj=&Tmtc_YZsrpnkp=&8L5YRGVhaldUU=&2ZWtwmUfesk_h=&p_bOrtZiVeaXm=&_oIAzsUrefkkY=&zuhhpLVXpXalf=&fj3suzYihVhZs=&quBpF5Xgcm_Zo=&mRc4f5ZWdWrsp=&23VNSsWiYUiph=&aJ6QVzZsjsoj_=&PHvbhbUUkcWle=&qRhCdHWicop_g=&nlOlSvUlrpqmi=&MQFiDtVdslrag=&HfZi8FVfhb_jj=&Qh9wsjYeWUdXd=&OY5blRVrrlWdZ=&nhrUwgUeYoqnj=&bi5MRQXeUpkaV=&RYhHLgXkk_XWb=&HlqAWjVnYZodo=&8seDXRVjVhpUY=&d5H4Z6WjZZssf=&3U5tmAXicsgen=&uzcobcXgjUhYW=&sKNlVYZ_lXpVj=&uoHlI_XgfioVg=&hSovMLYZlYeWk=&P_rLIhUkrgUkc=&Gb9EZPUnplpc_=&T6bI8nVYlWWaq=&24oGZqWUXrs_o=&MRaJQ7VojciXo=&cxGZbLVXnnjei=&XiJVzeYhpiVk_=&_RbS5jYisZUnc=&dxps24UifXclb=&a4XICYUksU_lY=&ajpYYcWbgkpnc=&lMRdZuZm_qmpp=&_YijRjYfZmYZn=&CTOeYJUUaVY_m=&A7f3yAUqjgksf=&PM5CstWkr_YhV=&HYxkqfVlVjlUf=&_oB_riVgmmlgj=&4EakT7YVsksYs=&leUdSRYlpmgeo=&R4tewcYgcmkio=&VlVbGGUVrjljs=&Rj5jxBYp_kecr=&_BAXJxYrpjUee=&_4383fXhdnYqY=&6OHptVVgpZabY=&363795ZVsqmYc=&a87CaVXoXYmsp=&XUvI_MXhhWVqr=&q5BfZCYfkeifo=&jiDCUdXXho_Zi=&uFK5WkXfeqbop=&PrZwdbVcmkVZf=&TNbiRcVoraklU=&963DQaVbebcge=&QkvErAVbUdUXp=&aKc2EKWgYppgW=&IiipQGUWUUaph=&V6bcRJZaYgisr=&5M5L8uY_nnqql=&MMhnNyZZVVXeX=&LNclZnVbmYcbp=&Fh43ZMVWpYohq=&WgalqMWflbnfn=&yaHirfXcXnWop=&UAhm6YXqsjila=&QK33GlYY_g_ln=&CXkbJcUUbjbZ_=&FbNA5UUeZVkpZ=&p3bHUjYrasfro=&XZXMCLYYZ_phW=&BrVPuSZcm_ajf=&CAmd2sYsebqnd=&CHvkneYVbnjoY=&rdYJizYeejcZV=&A4bvdXWbcgppd=&Im5eysWrqdV__=&KwUMqeZXUcVhp=&YJBX2vWbnqXkf=&fRoO7FUkenoqV=&PlF3wdZliWds_=&dpAGZZZaWfgWr=&X7ZgLLXdVW_dX=&phkjz4VYVrspg=&RWii8oUcehfWX=&dvRb5DXWipchV=&HkULWpXikdegY=&POhPZsVfepmnV=&PCgACNYbYskak=&GgcI8zWVslWUX=&g2V4nHXrqseXl=&ZtJHYJUqskdYl=&MmrcxOWbdZdih=&gKxLEJVfogqq_=&7U483NZkbdUdY=&vKlA5CYeVqlmZ=&pkrawaZdjqpap=&lx4ZeDVrsWsld=&RjQlJYUggglhj=&hNk2pvYbdpgsn=&qmg9ckVYpljej=&PTSOHnXo_Zonq=&DKe5ccWUUqlkj=&6XeQtnUZjsVrl=&pgOIppW_grab_=&kkPY8VUlccs_d=&T7AMTRXecXaiq=&TUAQqNYVlYlfl=&dfmlWjXjZrgXi=&OlwrUvY_VsWpo=&OTLimcUX_oj_Z=&TPZ4UEYmeVbad=&kAgYvOYkVg_fe=&eJ73qoVobliYl=&CAdXA9Wkd_mdj=&vq6NOzWUgfhmZ=&FQkocQYVji_k_=&rMqZxHUUbVkaX=&BiONNWVisdUbZ=&BXBtR2YYYofcU=&PHJde_XX_mWUr=&Ie6Lq7UeZ_nZs=&mrggiLYrkVikh=&nr6V75UdoXceV=&uHhalLVYrrmjf=&vBgpFzUcnobcs=&QZnxSkXa_kpWa=&CLnBwZXghYiqb=&icHi9qUedgVnX=&6MzD_HZe_frko=&bZrd9fXbaiWjV=&OgOF4OZsUgaao=&ay_CEiUaah_dr=&vlC6qRWZZqgsj=&PjCYc2WrVVZga=&LeBaQfXiamajm=&5uATOPXlboYZp=&n7zhQiYnWXjj_=&ktFp2LVaWpZUf=&Lf9LL2YnbVhhV=&Rdy5REUUncWib=&CoEmNMWfVWVbi=&4r_FJUWmaloso=&O_YkgLYsfWnca=&tGMhZvWrZUeYn=&IFZD8LVWsnkag=&V3zhjMVkfVlcd=&4LvcdtUYehbfZ=&j55uBwWdUachX=&72hU9yVqXbWVf=&5j5AUgVs_hipZ=&WlnquMXepbn_Z=&7NqC48Xjpr_jf=&Ef_uPXWjbXmbW=&dR8dmTUVWiVsk=&d3Fna6VnggdYs=&hT3qeTVkdcoZr=&2yELujUrsbddi=&XiAYLbUqdqdlj=&r5tnXsYkqXprm=&LSMibgYqVmYXp=&NTNXGCUUrdkmZ=&RbWhCvYklimrb=&oPhbEOYonrliV=&SvflZxXkmhsjf=&oHKNCAUZecfrc=&OiqOAmUeXonYp=&fczFi6Vlfqibj=&4OAwjeVaoqsff=&inZPslWqerqbf=&tcLwr8Vaogajf=&CVMZXmYkq_dal=&CXEIjgXpgjbbk=&_elmbiUemhrYZ=&pVun5XWabfhpr=&xN9pCuVq_csbg=&Uk9RCkXrkroVY=&yOVSo2Yfgi_ii=&9XLvCPUY_hqkW=&BUuCMEVWqkZVj=&zMZmTgZZUopkh=&wh548eYmfjqlj=&pYgZfiVkag_Vk=&H_QQk8XrYjWYk=&CdNBt6YlUapee=&QftqyHXdnmoUl=&aPTTanVZkooWf=&vl9EHHXiXqqod=&xLmkJsXgVmdpg=&IbPmLOV_cfejd=&HYwgCdVUoXshY=&BC5VgsZd_rbmp=&8o62QMZYajbp_=&vcU52jYgpkjom=&BUNdU_Zs__akp=&UZxnofWdXXrsZ=&5umajTWdpsZhV=&PLCih3Yeoahli=&cXPol9YVlqeVn=&WroR4nXqXscnq=&JY6HUNVYhmemd=&alNcRqZWcYabm=&PcFgzuZnksaim=&hcXU22WXorjs_=&UQsyESVXgs_rk=&mpmus9UlVneVk=&dHqdnOWqnnrmg=&BjQeYYYrd_VaU=&Pjn8fvXif_egZ=&CmUnPQWhnbdsr=&8mp7e9Ukdjgdc=&8xqHAIVmsoalW=&rN_mQVVVjWXXV=&Y_nRhZUc_VaWq=&x6VVMiUikWjZd=&DFJl8lUZaoeUU=&mk_x6sVnjjfff=&Z_mHPCWeY_UmY=&CfGtOlXobUrpo=&lQuY5UXVcdjsk=&KPrcQSUsa_ikp=&VEYRCtXjlVobb=&A5RaiLXnlWca_=&gJf5nIWWoaobl=&WSQ2wkUic_lp_=&mEv9noWZdlkqg=&BkkiHQZermlei=&q2HigCUkskjok=&NwHsJGVenrchc=&gzWzQHU_pmfoW=&AGS8bJXZnfjXU=&xvGKDmUXknrf_=&Vn2F_FUf_qmad=&NIOU4SUhcjZUo=&xBIrW8XbiloWc=&eMVcHZXdr_ela=&4ZECaaUbln_gU=&IJXVzPVZkrela=&tvQXF3YaXVcsf=&QyjJFQU_ljkkU=&K3fNiPVsdoWac=&eUxvfnUbbandr=&oxnX6pZfrchqm=&D47IUPWoobjme=&QMSR32XdXkprU=&AmvKoKUcZfWVp=&M3bLJxWbjrkff=&dqxgRHWacfhpa=&7kMPatYqjkmqa=&ag7gLpXXYVnrU=&UkJuEnUlceYhl=&6bjLZYUpWYaps=&uoSAeiUdgddYg=&CPS2mXUrmdfji=&tNrW6PVmbXVmW=&zswuKvWic_lUs=&N7FDRkUWVkpkl=&o9tD4KXrWYkUq=&tYUAFxVrZjfsV=&D7KNavXe_sjc_=&rrq97MYnk_jmd=&UE_xIUZWciYha=&qlAwJ2XrbdeU_=&BL7Os2XqWpnsr=&GAmtILWgspZfW=&2QGGr8UZcngZb=&kKbcUKXlZWYjs=&tUJftSYlhmsmh=&_V7CmIUaXebgW=&SrksMhVfpqcpZ=&8LoYhdUbrkieV=&bqpqlIUUqYifl=&cBs76UWaXqfYr=&SGwkhUVimWkde=&lsRi89VfXkZqs=&StZq_yXfmcYqh=&r_Efm3WaYYqcj=&cCzkpCW_hnkjk=&oyxxomYk_gflb=&s39MduZfksaZl=&AwYyGMZbXssjp=&MraEurVrcUloq=&2qzKQsXkWZi_X=&A4XbnGWchViYZ=&BfRq6_YgWajoc=&7Cb24pVepicof=&CvmC9cVloYk_a=&6qcVvHYfUeYpn=&jdL3JcUpqdnXl=&Jihb5jZUgbVpX=&Rm_PWrYecpWUX=&SJaiYIWdaYrmi=&w7kNM8VibsVYo=&RCnRJRUaUhhZh=&MuHiiIUbXWdXc=&QVpXKCZXrnesg=&BO5hgWYiVrdm_=&djDH6QUcfcegl=&_33nQBW_fkahn=&H3gIBDYXljk_Z=&FktsOWUlVfsUo=&IN4cA2YWfeecZ=&_YAB37YrjkkmU=&9AAme9VjXarer=&Zs5qk3ZqZfXeg=&JxsehGYmgbglm=&I_WeSHXc_iaX_=&Odse_7XWkmf_s=&7KpURUZanWmaZ=&uaekDyWphfVjl=&s3DufUVsfrpeX=&RujypGZeejYrl=&TgiBKBZqhohbU=&URgHZuYkpVYcU=&skOMHDXkrXeUU=&RR2D_qZegpihq=&S9vWlmVnfbnqY=&3GMKn6ZrWVnfc=&s2wG46VUimfoW=&EnaO9pYnajqZo=&H2uYyTZbjX_Vp=&5_mVsCVlbl_sq=&C82b6jYYrq_Yl=&DSYhv_Udk_qfY=&FtEoYfZgimoop=&GTC95uXXfXfbk=&zNoVD3UiiXpUl=&VvBOyWYrjkqsa=&2NwQtWYdabcrn=&e_scuQYaZpclg=&hfQYUOWkkZs_i=&PmIDrPZnmpdlo=&MHgrIbVUfgn_j=&BEROfxWXmkXob=&dtLjhEWrehfkh=&Fo5PlFZjbhecl=&v7L4koWV_ZUs_=&V3DjD8VonhVes=&sHWiPAZUf_VUe=&dsHXDrXesaWmX=&PtsIcXVYfdYiZ=&3X64KVVgUkXlc=&x6tt2WYoggYWq=&WMa8QwWVjZVbh=&YEHRKhUbsiUUp=&GFnNEUXfXghec=&Ca529hXjWarYg=&XH2j9xXjYsdZc=&6Met4ZZfplejs=&QdesDdYe__UVh=&_UoZfuXnqYnVp=&hge84_UVpbXqc=&CzduBZVUWYgk_=&PT7GBFWVXrcai=&nNmlUfYgWdWVd=&KpZNQQZWfnhUe=&afjCDGXVlgbeW=&SMhncSXfWYirc=&WWOI4MZobprrp=&SxEMq9XedaXij=&Xm8HhjZYf_Xab=&EpbJ_LXdmV_Xh=&obARCxYeebfrh=&Eq2YzhVbqfhma=&izxRtbVljieor=&pGGda9VhqisZW=&nDe2I8YZasdsn=&zV577uYiVhWjk=&Kg77VaZseaWXW=&gFxziLYborXpb=&_rcgTcZqilkYh=&EZ5yEeXUdjkjU=&GtDpk4XcglYl_=&ILP8SXXpscjYa=&JOmq2gWilfVhV=&mP6ZhmZdqUoqV=&IfRGBcYdgUjqm=&4p8pSYVrmWbme=&cxXCQoYeaprij=&Jtkg63Yda_gqp=&48T4LiWsqhpWU=&HsSojDUhoebeg=&2CbZvHXrWslml=&sMwYCkUYaehmk=&CxTumAXrUZbmn=&TRBgZhUggdhVh=&npoH5lZpVpbVp=&QPGFITWeagWZZ=&5uYUjfVbmYcel=&WLKbBaXmsccrY=&2Hl6hJWafngoV=&dJTLSpWkYibja=&sHLJtUZWgspcj=&GQpEm6VZXnhcW=&cf4XsEXeVhqcd=&wGBmFtYVXsraj=&IRmzGVWhXcXjm=&s3Eu7BXirlWjs=&S4cHSAZqmsdZa=&avwDrNZgUgrgl=&aqGYoMVfmbcpl=&5krMAYXcWZYaY=&bZDsxTYirjbeh=&AapCCBXcYpUsl=&ZDFoVQXXgUrUY=&_Ak6GGX_samp_=&SLjHy2WchnfcY=&v2abRLZekhnjU=&HAYk2AWrsjjkg=&DSe8BaVYZ_ZlU=&j4Ov3uYirmira=&KNviS_UpcfmYf=&TKkMo4VYcrhik=&gyg8cXYYrbfgc=&LkKvVBUWXrnWU=&oeZqVnXllUfka=&gkwDaUY_poqcV=&TN_hPeWWnkhbi=&jDKmMnUp_Ulrn=&hOR5JZYeZnrmo=&k6yxCIVWosVoh=&hNE8xfZflnXlc=&LXm48pWasXrUW=&L5ehAbZWo__Uj=&zUofZgXrfpcVp=&Karv2vVdrhWrW=&3cZCvdZgppplj=&ay__RRZiYpljV=&mo8pWVZrcogjZ=&i3JcIFVbdknih=&ZW4G3oXqaZrms=&qRxj6KWZqpnXn=&zpfvoyWbobVm_=&ULAqQLYlrVqbd=&caHeRZWWiVZgW=&wIrewAXpprkia=&lT5L2FYmojd_W=&nOXbgpUqgXmbp=&aZEsE6YsXnU_l=&NDroeFUV_rnZn=&IRs4AqVmWbcdW=&geEItpWW_Vacq=&cZrSfEVgZqWbd=&t83VQJWVfdqms=&C3655SWgdgoXc=&339D_DUkUWcdc=&TM3vT_XqmabUa=&cHBeyUUeslZlY=&W2Cz9sZrYVlgV=&VFyoj3Zskpfjk=&eoI7_RZjiYekk=&Qq3VmwYWbiepW=&jTpxyxZef_sjf=&OQXo_fVbnVYUj=&PWVmUiYUqlgrn=&DVddwRUhckirk=&bpqtLiZeVlkqo=&fNfQl7YmX_qjl=&A2uSYCXpeUgdX=&hhCFmtYZgqgZb=&uoIP27WWrqYrX=&y5zZtFUcadkq_=&FFN4qMYXgf_rm=&nsFpRkVscZUYZ=&AcvzksXVifndY=&oiDTGiYWcjXdW=&QOtcPaVniUbVp=&hesOBFYqmojdk=&Ljj4ZjWYsiefk=&Yr4QxTVoVjisc=&K9l9uVVqZcYWX=&ZsEh2VVeWZeqX=&5vIZXpUnerWUh=&y8GSFfYokkfj_=&wShYx8YWnZjip=&Dh8pQFWrUhphq=&vtITMTUh_fZfp=&lwao3MWfirYdp=&tDZxyHWnWmpZn=&PyMaagVkjbjee=&fccewJYe_VdkV=&OF5WB4YjqWmXg=&mMAehMVeseVes=&uNPcqQZkljlhq=&SnzN6UZXseZec=&hlgiDuXhWmmZd=&Ba_SOCZVrshka=&9jyxbCXeZ_VnU=&ZGgwTDUlsagaf=&GVd522Uhmekrl=&SKPeiEWiU_kpd=&TcOj67Ycajngq=&IMY82XXZZfeXd=&fUeC5AWdZbpsk=&HpmKBSWgUpnes=&KNxFFaUibUsoi=&cbmwNaZkZUnWk=&546k_PYasjqer=&F8AtjVUmaoZXo=&rCeduYWmrZUlc=&jK8mQYZrWqbgo=&rE7w4sZsnsigh=&tld2wFVgaaqcr=&DyjLgrXkmkhpU=&TKgOMRUnqodYj=&bely9pXkkhUmi=&_XcObUW_VUdrg=&6hGjNOXffpoaZ=&fiAG4bVWbmUck=&uIdcdDWcXUnbj=&mghmA7XfcVcUb=&qVoYvzXYhmpVY=&XudKAZWZbZWd_=&fdgOYJYgXjnps=&e8nlVeZsmfbfp=&AVBiKtWs_aaUq=&xihVwSXflbbZq=&L3rZaeZhUj_Xi=&KE8bu6ZdnafdZ=&gzTUPWWsfhjcl=&QVsJxiZln_r_W=&iS2ppkVaVrgfc=&rledCNXkap_gh=&XSzvy_UpXrkmn=&AccdR4XcmZkiU=&9E9HU_ZUYmmde=&xJkicIWX_r__d=&WcpvVxWmYd_Yi=&qd5T35Wgkbjgr=&gsaI3nUpVlffZ=&mX7G4pVjXWa_b=&sXhU_HVWnmXb_=&qQWLSlUfehUX_=&O9QlH5Ulk_hp_=&iRpQSlZr_ajbo=&BN2Fd5XcVcoYm=&Y5vhsRWoVWodU=&5DROvaXYVU_se=&P5mCZoZqnZXj_=&dDoUpoZXqdibi=&_YiTUiWqb_sXo=&yirRieWrmVjWW=&QZfuSPUoWnfke=&YyknRQXfWdmbl=&RUXpMYZcbYUbn=&Y_Bq3uYWksorZ=&xjGxKAVZjiqej=&6sSoebXUmcWnZ=&wxRyNUWifqgqp=&ea5sHOWdXiiaq=&BvFuVZZbhgjUs=&hPEKutUWhXrcj=&ku6Q8QXXXmeiq=&AfMChpXsnhhfp=&ijbrqTWeeqZUc=&xe8tfsYpcVobm=&tTyF5TVbakgaV=&Ygs8N_XnVadfa=&gIcwsLZaWnpof=&ux9W6MWhknnXp=&KohLtnXqZhYbl=&tZQCpEZgnpYro=&_mezQsVfokpUp=&nXsBCvZiZjUqa=&kPIsgQZUegZmc=&xRSzdMXebfWqo=&bhrPJhXcapZie=&_tQsdYYkUpsVV=&3R5dYHYYhmieX=&tBKfBUZbWm_Wl=&gtZJlbUggsjij=&UxHMuaWmWdssq=&nuQUI7YsblbWl=&OpG5qfUo_nrWl=&yU5E_UVoXdWnX=&JTuzM4Zphqcbn=&bdgRULVeclUde=&xdAxLIUbaUVqV=&Xm8CbcZffemf_=&dCcOkMW_speX_=&LnQqJ6UXlUfcq=&Slb4R4ZYcfrbY=&TfarBEUclqqUW=&yW4ywtXp_lWnV=&vI2A2UZhYjqmZ=&oBPJhQZnjXVpl=&MEMtmOVnWafXo=&k4J6rVUdpcXmj=&dOu4IZYVklVXU=&gK68IeWeirXVq=&Q3pZ9fWVpXckb=&WDbciwUpXfofV=&bHh95FVrXVnsa=&Vv7cosXkXZdmh=&EGWWHcYejdlfW=&tC_9kYUYdrerp=&n698lRVgZejib=&S2w97HVicWref=&8sz4TAWsaboak=&39YHPgUXbiiZa=&iGnoD2VejjXmk=&QnyLSOZWncphp=&DNJYZxVlmdXfl=&8Ei__bUblfrod=&T38MNqYlVelsZ=&OOzuAdZVmYgjc=&6PbIj6UnpqqYi=&2UtEeoYZegcg_=&byjNiQUjmYhcY=&C4HEJyZlYXeVY=&q9bCZxZ_mbqlV=&uzbrLqWehaojV=&_jJXytYmkUsXq=&Q9uslOV_dVlgY=&PTcCIcXslclmk=&8sJDSgWVlkXV_=&eZDwetVnUpoXm=&4BLmdvVrjfhXc=&u74I7HVV_kpig=&nAN64hZmlVVbr=&7pJGBOZi_adeo=&iwSnrJUkqWlYd=&t_ixGTZdXenak=&YbScKGYmpffsf=&XkQ3_XUiognlr=&xxvbYNUcjZmmY=&EiXtz9XgoZaUg=&cSTdxJVdgcVbb=&u8JRaZUnqWqam=&yCXarWUYfpngY=&mKcCWeZgdnr_j=&JUWuKPUsekikn=&SAUp3SUZdcmoi=&OTgSlaXabmhkW=&WdUwXIVUUobVg=&EjHe4BVWkfV_o=&zAygDYU_fahbc=&LbRSasVkjcqXX=&AEepSAZflhVnW=&V83Bd7UmkebkY=&5xtkShUXXVjVV=&vIIqAtXbsqahW=&rLb7AIWqhr_aW=&PUyRKQYUka_hY=&CFtShWUfgmXeo=&OfKx6rWdepmUZ=&nGIHJhUVYqdrW=&lCFUpbXigebVU=&2_vDbNW___ikk=&aItTMLZqfUZfs=&XWYbm3Zed_dnX=&pFFT5YXciWUlr=&jSlao6YrYmVZp=&LO7JxLXdmqbgY=&RAJbypWUbWdel=&SCVPEAXqdUYqb=&R9B9yPWUmXegZ=&ScR9RDVn_nhmo=&qUKjAAVW_glmg=&qQE9gzWZogYgj=&YaMDyrYoeraWk=&zuRAOyUcalqYo=&Om2rpQVmjhmrs=&i2riThZibUXZr=&T5D9xhVjpdlVr=&oDRKskZ_pUZZj=&yG82lLVdeYsWh=&LdYZh7YVqgeUe=&qi8tAkUasqijc=&9UlgsKZWdkqea=&ZqYOUtZgVWVig=&JR_SpPXZaaUhk=&JgfVhwY_nacYe=&iUoi4UUdndcVY=&DWhDUAY_pkddV=&oTQRTSZpsWqrZ=&dsq6ZUVkfqhde=&tEVnyGXsmeiVq=&oCnc_mXdWcXbs=&Z6s7fbUmjpfXf=&bojjdyVpkkdYk=&Rssdt7ZkhZlqW=&xfz5fhUoXXiZp=&jJpzC8XmXgUW_=&D65tZcZXgeY_V=&lpwKQuX_pklfr=&BnUPVxXlXcoVi=&wSE8ToVWh_hYm=&Os7EdEZVeVnWc=&PqPJ8KYa_shgc=&OVGjrpXgmVjeU=&fZFhvTXekWkWs=&xy_tGIXdaUY_X=&5evYGuV_sYYfW=&eZ67IsVUfXfhm=&A8LgjXYqfqeXp=&BtcidfXnghrUn=&6RgNbSVbocafs=&v9S8NcUiobVjr=&uu8JsZUWgjXii=&HyoHiQZksigs_=&4LqAeWWljUUWV=&J9ZZP4WfhoqUg=&hhCF8YWdagZ_V=&6X5sSYZemkple=&N5L4QlUXn_efY=&LJAUp6ZbdeqlV=&UjNmTUYgieZsr=&igegtbYgWq_ar=&7cLapdWVak_ha=&CwBeSlUqecbqs=&VZspK8Ucillr_=&BQLvuoVedUolj=&VcBLtMVsmn_dm=&WZOoYiU_VYUmr=&kTZUTkUefbnWj=&YzPZUPUmWaqXi=&NefPnpVfbqgj_=&lGYdIvXgkVfmn=&IZaTM_WUWrdfk=&8VelzlXqUipiW=&ASz8jTYchVZeW=&IbSBzoYehfmqe=&_bxuS7WkmsaZq=&ItrqrXW_cnajf=&qROJRTYirXZeY=&2JYguYUfVrckY=&TeS6XDZldppW_=&cPogDEYlVZomU=&BFbEONYp_edqj=&TcIfpOY_nlfhk=&mM4VFtZYYlYil=&7qCBDgUahbfXn=&kS4ZfVWlVdobn=&X25EjSWsofrdr=&zCnKBpYgosaZY=&8peSJYVpkWges=&gwHYZ_YUlmd_X=&ldrs4bVbfsVim=&EeK8rKYphnnXg=&nBTs4OWsWrr_l=&9PubpCXdX_iZU=&jmY2AtXUdUUbd=&yOHA8RZcolkmk=&b6PHzlUsi_hrV=&ipBAs3Yfnaerm=&pvt9RSYchdefm=&j7ojuVU_akUVX=&JfXYbJYffm_Ym=&ghkgOcVeYfrsh=&XdeF3_VXbWUla=&_HUeahYkrisfV=&AicmL7ZoYsprh=&POb9bbYrplalp=&6RFICqZViqWaU=&d7WsnBUrs_bhl=&eQtLrwUVpVpYs=&eXW3_YXaapdaX=&pbdxr6YgZcYVX=&sBsqJBVmXZpks=&MFWspgYoomman=&zDjjWqUcncVcn=&Ged4w8Zskdhob=&8A6MfFVklg_lW=&kaUOAFVmjnUqf=&fkHRhpXogVarh=&l5mKtpUZsaksX=&iwNn5SXfkckpq=&nGvwaZVinsnne=&yxE2NKZXhXifn=&asVSFNWqsirhW=&WCM7uLYaeXqXi=&8tCNIhVdcdqlj=&ioIeEzVoaieXe=&gEc_c5Xf_krZh=&3hcbBNVYdnoUm=&o9cVFiYcrmYfl=&JpS3jAYUjkUdc=&PYW7wYWeYs_jX=&MD_mZqXs_nml_=&6aPNSjWmsrigm=&LMBynFXjjWsdZ=&diAbNzWejfVXX=&7Oc3cnYqUhoV_=&7dK_daZWehgpa=&sQMF5UWbcraeo=&ONlDmWXkYVsVn=&QgzOgPYU_lgXh=&O94FAwWjokcWo=&ucsndUWrU_ics=&Pdf4q7WqWbdWZ=&n9t7i3UrUUUsm=&ysVqnXVqXmmlh=&EhW4UiVoXlXil=&QFQ_fxXhVhmko=&4htCfZV_rrhm_=&AmhLIZUsjfbqd=&57nw_MUWoYZkp=&PA9XW3UlVkUqn=&4Ur3kXZminZnU=&npIQaqVVYsZdX=&KvKGP2WWodfXj=&yGBEhWZpcs_de=&DlSElGXknoie_=&pNlKlMYkpVmVY=&NYONq_ZceXloq=&zCPV9jWijmaVd=&75mmOBU_dkmsb=&ewptoLVUrsXla=&uZsDmoZlqjVjq=&UOLWGkWeZbkXf=&Z2sRcOYjYqf__=&luD3UzXjYn_sr=&9WcQDbZ_pcelc=&Ma5kxqYammUVf=&oOO5ejUYXinnZ=&LNwyicZUfpanj=&9gJVb_ZsceWbW=&uRNL6NWkgfpcs=&pRPydVVXdoood=&HuZz9TVpiikiZ=&EJO343YbYlshs=&ib8T6DW_agbmV=&O_Fs6DU_opqZY=&srHzBDUnYqpgU=&bRiHPiVllUses=&aEonUIUXnUihZ=&f5xfp4ZcjXghs=&5wWARjXjefsqo=&5OtVmLWp__bmY=&uiULSrVqhXbhU=&9MTLOcZbmca_V=&HvN5KLYojicce=&VmQhKnYrfUUUs=&ZaDMbFY_Ug_ah=&EqH7QNVZirkrf=&NhCwUqWZWhdk_=&8ttvpMUVaUrg_=&Q_C2nHYcdoloi=&NTq_lkVdcYbjY=&nEAgfDWfgUVgc=&hO4F4qWlbgnWs=&ElW2rqUhVWfnW=&N4GFyAU__cf_n=&wdxF4qVsssdoZ=&HyqS3KVYcUbsk=&Dg9tpzZkee_bV=&Do9ME8YWiaWfq=&BLKzwvZrqeYdi=&Byd3PkZeaVWlp=&L66cwPUlkcbsj=&RZLwyEYaiXd_k=&LzCmhCYkWZqYj=&dGHSFVUYeeWUZ=&sRqt6KZallsbg=&7nTyaNUkmjgWf=&HXkdWuWqb_eUh=&5JJSxaUjgslka=&hO8iw3Urlrokm=&OEHK4wVfgrZof=&QkJEj_Viijsgl=&4ADaiUZUUprWk=&nrCtGkXfmZmno=&XwhBkWWhdlWWX=&Xxd8EeXbcdbZq=&ftBEpzXeffnYm=&7pNuZZWndrXbi=&UIHlvvVchjpn_=&sctOHoUicmmnk=&aKZ6mxWelhgjX=&RwKZ4OZmojXed=&sSuPUyWaZmiiV=&gGLIMeVdesUlb=&iqCanRUfZafmc=&mSWsGlWdjrUab=&zYqbsXYhkharl=&TOwRKGWbqXZgk=&9NX_hdXhrellU=&NJmgd3XZsXalq=&u2z4tOWe_krk_=&wIDirwXeVkgVg=&3TL3BXUVUVrfn=&LYK2ghUolddkh=&ARL3RZYflbXbg=&KbMgcIYngbZho=&8ybpAEWeXhe_e=&9B6nuKUqdrqXb=&_pzS45Uqkaiq_=&9o96PhUqnmjVl=&psfVZ7ZoocUdb=&5H3j_IYXldeqq=&8BIVXIWnWbegf=&7SGPb5VVW_pnX=&c2zjK8YW_mjdl=&j8a6EvWsjfnaY=&wmIzTKXghgbhl=&IFwTmEVYcXWZg=&TdL42AWVoUoja=&wnGw_QYeZrbj_=&7WEq2LZsXcXWc=&TB5zSQWV_oV_c=&5RPqJsZbindbl=&Q3eGoyYjahgVo=&3YlesAW_qigUU=&wIjp4dWkhkmXd=&pTn7VvXsmaUef=&25I44pUYergXf=&9lGlU9Xmrjmsi=&9tT_dwWhhkqi_=&IqC6t4XZqgmUU=&aP2dbNZgikilY=&RFWYUuZaYpeir=&oqHDVsXonigdd=&j6UmQsWYZkfjW=&bo_ASnZqbkndZ=&25CTU3XUheVeU=&dIwPguXpmjlWf=&mmerpuUkeleos=&FfOTt4ZjlpgVb=&IdDi2qV_Zqe_s=&6tw7ZJZniogkf=&zKKGwZZadndUl=&PHjGs7Xsslccg=&dLiKeVVlrpljg=&x8i6LSZZbimgo=&5DH9wEVYoedqn=&Hj6pqZVhXkZeo=&OQym9TVfrkdsc=&FSSiKiXUdrUn_=&uwKcmbV_pcUYi=&JXjCLuZk_Uron=&To5n5dUpqZhf_=&GrmhlBVcljiUm=&tvwtXhUl_hUma=&Y4MYReZjrfqbi=&srxYNZYZdWcne=&O_YMm3VgVrsrp=&pUkpPFUdVkeZs=&SLiOKrUajhhik=&2tei9YXcW_dds=&xnt_UwZ_hljrn=&_o2xXYVgpbgkX=&dowhk5WUZdcsX=&Z4aXomWfYqgXa=&8ZEDYrUjpbqfp=&pYofOvVbj_noc=&OHPqoZYbcX_Us=&MPPloTXgmXncm=&ue5wnjXanclhb=&9QcGe3XnYnlrU=&wDjodRUnpjUme=&LGMteoY_WicVq=&QPNm5kW_rYrbm=&Bo9xbvXdY_fag=&DTnAhKVcVqhVV=&xQBKrLXoX_Yni=&ewNGpqVhajkqg=&eYh3GZV_qhfsY=&x_eRbfZXUpqmg=&8PceUeUcrhne_=&F3Q3b8YWUUbZU=&weEwMHWYmlooV=&kBU7yHYhsqmac=&dbVSN9VUfcpWc=&PM5dplZYUWVjW=&ybOJ7lYdgsUj_=&FgAIqPZhdmrqX=&OxJJZsZmfhbfU=&zMLBt6Wolglfr=&cs5TqvYXUlprf=&PSiugmVWUncoU=&lxY42EV_seYUk=&5bzvL4YXeqdcU=&Yt3HVOVUgmo_X=&rvIBDtZmrjan_=&2fqLUdUkZsb_d=&Lzc3HVWfmbhXZ=&_jkrUEYaasbZn=&TKbLfIUfcenjm=&jP_Zr6WsYifkp=&UL6VTKXreercs=&IbcH3bVc_jUXb=&i4eBMnWbmnhrY=&Z6xdjlYfZiWcl=&UgRxONYhYpofn=&apM8hNYohiZkb=&cPI8D_VoXkoVd=&gCaOV9Zcrimke=&nW3Hn9Whggsrs=&lD449hZ_qaojq=&ZXNmKmVdXZZ_n=&5xSGOVZlYgepc=&IX2F99Unofqc_=&XFLwH9ZigdYmd=&YSQADBZdXek_m=&KWZE72YsYdohj=&gs6qR4WqYkblY=&dxPhYAVoacoVp=&SSQCIsUZcnmaZ=&ryiT9rWbfhZnf=&6mVW3YWlrraWc=&4z5PEiUUZciji=&aEuGBLWgkkaYb=&3kXwCzZZlrnee=&NlfoRhYnXakYc=&s8YouLXfcUdjr=&JpOeoLUapoUpY=&CeXeHuXZZllmk=&eEA38_VW_Yh_e=&5ug_J7VVmWb_f=&OYbbJoUlisddj=&tBZyjwVc_mjmr=&O_L4cEZrmndoX=&uSmNh9Ulkoo_U=&PAykTpXmkUYml=&YfsNNbWqrWiXd=&bZiL4TZVojboY=&CtJzoSWdanqmU=&fvLpwcUdV_hZd=&_fLICsYfbpkWU=&xIIufmWYhYjgn=&ZumxNrUjaUfpW=&4mLGcVYeipapc=&yCoisHWfVgYrl=&MbRuYtZobimVr=&alV3ldWUgXhcd=&PzewyeVaWgYgk=&JOVF8kYZdebik=&JPBPSwWUbUsVf=&l4AiCOXpf_ghh=&k39XBIXZYq_fi=&xVRW3dXWaVXak=&3WvWQ5XYglUaU=&hDYiXkWkrqsaZ=&oCDCAQWVYsXki=&IUENtfZfVafrd=&pxlsZiWrecZja=&yDqZUiXVlklsf=&x4EXH8YhboacW=&TT3x_PVs_U_gk=&iBYvOAWhkqqZb=&bbbClyYqh__qi=&FxHbBjVq_fiZa=&blXSLGUbXf_lb=&Vf2BLaVWZrgWX=&dDvK2UYmafiUW=&3cvWzRXlcmdfc=&4XOKGFXcbppfh=&xYTUN6VephUmc=&P6qufnWroX_n_=&VZ9kSpVZob_di=&eLA9zOWjVgsji=&_hZJfGVmaaWYm=&hBTyTGZlkfio_=&LXZQeuXmpahgr=&hqffqMZodbYha=&hSeUkrVncegjY=&yI6SJKYrXifnZ=&NUu8e4WhYVkqg=&t9qYnLYZeWoaj=&9LNn8xYoUkZhg=&u6JnCWUdrdken=&_6Z7UjXXrdlen=&964qQeUkibaZp=&xXCxLUWUgkgXk=&q8EfX8XeleXaq=&eV5YvJZV_iklj=&8sdeZXYWnrddV=&RwWC_JVamVqmf=&SNscjUYeepkc_=&YVvogtZZ_knoj=&EeurzOYlVnhWf=&iF_iJ4WcjVrXi=&59ha4JWkeophc=&m24_6vXfqYVXb=&7rJrFUVfkY_Xc=&zzPBioUlYUbUX=&ehJPjvYjjjmYl=&HQoguEXdroYlg=&9eAjKrZXgYlrl=&cMQUUBZZUaiZr=&7dkFahUqlYo_b=&TcFPA3VVsXilm=&8BgOHBYbobWnY=&SEwjfHXnrmXnh=&BtcvjtVXbVlgZ=&7ZV4tJZWlqqac=&YEXHbGVqrpWsp=&MiEXJ2Xa_ebec=&NOanifVVmYZcZ=&6atxX9WihjXrX=&twTcAHUVdnk_r=&SuWq7gYchfqnk=&gtWwuzYkdqhsV=&JWrr4pXWmiVdl=&K2j7w8X_lagrV=&CXmE2oWhenhXn=&_eAt9zVaahqXm=&Fv9WUdUeVnjZo=&6VtLFCZs_lqgk=&sfMkctVighnhj=&x3zFvwZcjjkXX=&7smkpdZnqsfWo=&w4p3EiZUspZYU=&ZeWPUbUYVqYn_=&DjnRGgUnZYqoZ=&EP8hfzXkXUfYl=&OXaTGGUciUkUZ=&NNQFI5UjXqmmi=&jCwgK4ZVVcgUc=&8dKl6gYcWXWeq=&e6UYqWYprmcqU=&WzK8g4VdsUlni=&4LdcrPYnosomf=&7bVTgfWYbVWYZ=&FpJwwcWmkcsg_=&xUdHKaYUZkrco=&Q9X4gLVnXbZfq=&TTTGRJYehcq_Z=&yb_mZiUnpjskk=&xcUlfNYXhVibj=&nbBkjOW_Ucncg=&TU6nyoWgnepZZ=&WvCs6hZYjcrUV=&_vzFJpXfVkhmk=&PAMz2aYWWfWVs=&c6JkQGZbfZWV_=&ubWGhFYaYespf=&AySH7UVg_Wjei=&7Mgm3uVlWWisX=&vPYAufWklZjqV=&3cDnlvVscmgrp=&qzivi2Zchnooh=&qvb_xMXUrrmpq=&rJqWSPUinZofl=&q4tPc_VdsVqbW=&ZaCj5sWqii_WX=&WywyyNXhhklnh=&_f9RhpUrUbqsn=&xIgZMlXXmpVWa=&wHzXMtZpnZWje=&US4cGbWkXh_ah=&iG2X_bZWYdbnU=&gENBoDWnpfepY=&v5MUT_Zqgnrld=&9BWhOYZWdYfZd=&C9pSoXVnZqpkf=&tbJWbCXskUdri=&iwglymUnongrd=&kMrIOOU_ggdYr=&DaDMHbUbVjUhn=&OsBdXqZgsYsaZ=&lr6UkAYefrhlq=&tn5gAxYqcUhml=&hDjOTmYnZihfV=&F4XpP2Vpa_srY=&YjxfoVWWqgdfX=&mRFE7UYdgVmbk=&o3JJ7SXbqWdoU=&XPqpyeXocaVlh=&45xBDiZVngXkr=&PAmEnAUZmalWZ=&x7J9tnZehaVqa=&5GMGBlXhmm_fg=&s_WulwXjpnbsp=&f8A48TUqfrmrh=&dGd9YJWVWlUkm=&zFCdzWXdsgaUX=&bLoJnAUUcjddY=&RrNGSmWrXhnU_=&qOXs8UVjfYcbV=&Jh39leUqk_hfe=&RBYsvCWXgaebi=&QEONJOUWamWnW=&8X65abUdcWqgs=&2mk4QoUp_dpdp=&twGFiRYqrp_gc=&2ONT7PZWp_jVn=&EEnYOsZhpUlsc=&ufJjWgVrkmZsr=&xgd86VUpYYfoa=&F3wGujVlWZhgd=&pxeePKUUpiVYY=&cyuFCrZZYVodb=&XIqWpJUYkWlra=&ATQyl_UbnrWik=&VkXClLUUdddsi=&S3psYXYYWeZeU=&JDe_qIVqgmlni=&KwrZajUWokYok=&_MvNp9YjZmiko=&XfpmDyZhUVYWg=&PMgLHQYogeomW=&XCGR6DWXggsXd=&mEMMPnYmoWips=&s5tRRwWsliZhf=&GX3jpsXbmWjXg=&_QxfctVmgjlZs=&J2HnmRZgbhVfp=&GgdiOyVqXZrrf=&8cTgHNZoUWror=&MOHlqEVkcessk=&qzLshYWsXrnbe=&sjEqTiVc_pklq=&F6sUgaYniloWf=&xC5LVyXlkifZe=&rjEJyKUrVnZfj=&wqSUyJUbjocsi=&c2ylYqV_hhsU_=&PPnXLqUbcipUa=&bTeHHoYUdjjsa=&eez7x9XXhpml_=&4HBiy_YsZlhZY=&9PoAkDZlgdaXb=&5DT6chWbeb_aZ=&xBkQPjZlksbrn=&Uw5DafXoggoYq=&fAXpNhWWhghjh=&2O9wgfUjWXopk=&oVi6_VVgkcgfm=&KMTM56Xcoke_W=&3XEfSbVpYbVgc=&TY4Gb4ZXqXoic=&jNAt9SWjhd_fa=&bxP_NFUob_fnV=&RrkLKnUreiVXa=&F36xEUXe_eecj=&onybsKZmjVpoX=&lHAKyMVlrhbig=&pNatMTVlsbese=&oqiueDVXkl_Va=&evvXg2XZagdnj=&AmqmIqZfWcffb=&uSPcQvWjYeYbX=&o3XBFVVborknj=&uuvFmeXmonlZd=&QKo83WVaniXVe=&3bKEzvVohshZU=&oNu_VpUhgnWnn=&PMaAhyZqpUZak=&ISQijmWUYV_ni=&GH4FtwYrhdbeh=&xFPwBaV_Wjaen=&JKBn2iXepdii_=&NJWHKhYpdVeYa=&DEXuY3Vjnpojc=&Z4dGkAUoa_qrf=&OXjK3sUpVpsag=&TCYU4rVfkVbfb=&lT_NnTVWkqWip=&Z6QQVeZjnWhsi=&tSoMC5YeUdcqr=&Eki9UOWqXUrWf=&hiO8ZHU_pWYdn=&rAGHV2WoUWeUp=&aQbufVWVlbodW=&qIB7MTXshjWnb=&UzxUajY_VlXV_=&QU3hTPXqpqmrn=&IFElJuZo_WoX_=&tIieBVYpefdcV=&Wx9XacXbcoj_g=&3S_A83WWnmocj=&Z6RHtxZ_VsVYU=&lUiQByYloccag=&Oxdem7XYrbpds=&ALxf7IVrecZhm=&TUGaWsUglrXdU=&NCPIlvWhffcmm=&Pu6DhrUVg_sli=&YDHfLgYZlmcpm=&Kpu449X_mYhsa=&VRBS9IZUgprZc=&yeXkBfZjsVflV=&j8M_FeWYmbjY_=&_53KwsYdgpeUh=&YfDeTcZaWUpiU=&Kme6QzYpZaWqn=&pYXoRJUsepsmU=&UcaUnTVkspeap=&zwQjDHXhYidqa=&sNVt4vXYmns_c=&KnwkPqZhklpVg=&Wqh37HZippgnf=&cqYMQyYijdkfi=&JasgExUmYhjod=&xxImFUYeiaddq=&_KTROoUpr_qni=&QdwtouXbcUjac=&qr4ReEZgdbjke=&woijpLXcis_gl=&YEHTgTUaenlZb=&fNASnxZYjeqrY=&KrRxzOXVgWfim=&f3n5FJUmdbfce=&2fq7TCZgflUVW=&5otgqiVgXUeYa=&ypTSVxZleXpqX=&cFYDEtXsgsojY=&cm2GLoWZUplkY=&Ry78n4WmrpVgm=&FaqyHRWjdmVZg=&S9aARvYmheYc_=&LHrtzXWdZXknd=&fzcYm3XrsVrod=&kGVluoZei_jfc=&y55SSmZmZ_nnf=&iZlqgmXnclrcf=&J5UxMnZdYZhco=&dycLXKWh__cle=&eeAzgSUlgpdsn=&8b8ljzUsjVgal=&ZaDfAdYkcoZcm=&RHjUeWXeWeWbs=&WlGlSOU_UrabX=&jpxhaeWfVggUb=&LxPERBXneeqrb=&JXxY4QWjXsbpb=&dnVrpiUcoZsWV=&_NzSiMXlnXrhZ=&XWNqYzYoVmboW=&KDwr5XWfapUke=&j2Hty8Zpf_Vbh=&tsdqlbUVfisUb=&7rQT8xXnVbXpr=&HwPT5GUUVXnl_=&JuCHnPWhiXqje=&iL3EW9Xcdgfle=&M7NvPmYdWUfYe=&Pxr9EjUZhWcml=&x8UkDxXgrd_io=&ptMl8cWksmhsa=&yLThmIYlfU_cc=&mZbJCeZljXeYe=&_K3OleWbhnsng=&DaftDvVbiYVXU=&lLsKLIYXjZejc=&KOSsqgVipZgcm=&NPQo89Uoq_hZU=&hmVHA9ZjopfcW=&jQEuSlYlfmfrp=&Ecf3bUVjXnsYh=&EUwxxNUidU_cj=&OKBX_UZbWkZae=&94txjBYsjdhgd=&XujIINZ_ib_rl=&vY6WkFWXYYsbi=&hEEv8FVdgmmnk=&xSvvPsVffZsXa=&vN2gJdXjaWWgY=&qZYxtQWgsfZqY=&rEAWNMVerlrf_=&CXUuwCWoedeiV=&9I5k5lUdUksV_=&u36AeFYkchYbd=&huBoSEZYYejgn=&Qd39XaYncjqZa=&k8reNKUpm_fXV=&VDI4KBVofhmaY=&Ck3bYwZmqVfmn=&hPoE6_Vfhbhbe=&UdYXv5ZYpsWeW=&wLXf87WW_mpVp=&bhYTHiUqmiokp=&RqLaRaWXnhrpV=&U2rTMjUakcfbV=&Wqv6_JZl_nqVe=&dmKEvQXelUqfc=&GrzIycVrosrgs=&cHyzKzXcUUYjk=&M78khxYY_prrX=&DDxoHMXnljdY_=&egaHy2UmeibUk=&9Wx83_XqjhWcg=&Sq4bA5ZomgbnU=&_NRdYxXWpmiUb=&YIIsWjZdsanZk=&3gSuC_YijfegZ=&Hee_KYXmlWcqm=&Gb9MVxXUhi_Zd=&nvxmXLUsoafdY=&3xGehIUrnbhah=&2s5x_8XedfUVg=&GUAtvpYYpjshd=&IASK5xXYlh_jU=&4TSFQ7Wmblhcn=&oq3OPoWsXpYZl=&ifKQX7Xijf_Wa=&IWdmVGWWaasap=&z2g79BWajaWZo=&eiIaKRYZcUndf=&wA6yieVkmlVVW=&BbUr68ZmVrfik=&q3uuFOXgbgdaV=&pwF4T4YWWYcZf=&nJqPqTWiVq_rX=&uwWzHUZXdkejV=&e9eMSCWjmhbas=&Qr3xG7VjUfsce=&DSw26fVsnUbnd=&tXYwtFVWajgpa=&_7NaodY_Vefhq=&y32_JOYeYmmUn=&ginSCgYgjjggs=&wqnjZ4VXdhllp=&vXeQiRZebjsVg=&Avug9dXrhcgYs=&RMjIQUWVardei=&wLXJ4jXkcjpjk=&HQUa6jZWYraVn=&JZo4R2ZssdUVZ=&4aX7s9UbZ_lhZ=&vuJvviXpoddlm=&YgwmISXYghjaa=&7t5ppmVfdUsb_=&WRuqN9Ujoqrcd=&nM8osaWpWdZU_=&Nx_LsRYbjXYdr=&P_hPPzXoXaYnp=&rXesJ5UkVnplc=&OwpTtnWjWVhfp=&GppYcaWlXforp=&qFFDPBXhaVlVn=&RPPKDuUbesZZ_=&BGH4z9YfUfcin=&vhvQocVrZoWla=&uSGApWYYkasok=&Ooui2aVjWkgZX=&gNSrJfZsc_gZd=&k586QlXefdmZU=&RLWrrFVkUssor=&lHVDbTVdphkbs=&LmFWYOWWiscYb=&9VDv7kXfairmn=&frLIhUXpjfarU=&lt9CkZUmgpsgp=&OKIhLtUsrYpas=&dRTuPnXgnsend=&JZ_37qWlssZ_r=&GIupR8VlsqeiU=&XQaJQpZUdsVgV=&toSpkwUYe_ani=&ZE3qIbVpVZfpd=&UG62JZYrladWY=&H7AvgOYnodfeo=&NzFkwHWjhlkrZ=&yFfyDFWXaYhWd=&C7RokrYdhVcW_=&Nnme6UVgkmsqb=&DBDVnCUUZkbYg=&n994zdXX_mXmm=&u7bTm3Zoi__WW=&uuSdPcUg_hq_g=&tvjw4ZVokndel=&4DKPNyZbfbj_s=&ZHNT8nVZarfVi=&WWlkUVZdWdXf_=&8vbwN4VcVYmWm=&PM38STXgjdqqf=&Y3iahyWWsZYep=&7MgIpvYkksaWh=&SJdXz6Wofqbeg=&Fqy9YVYrohkmV=&WSisXEWeoZYbo=&NrpzGHYYdfnol=&LFfTdYWVofYaU=&l7sEVEZUpjjXi=&LkMD3nYksrbjd=&WuNqybVY_jVpl=&j_4bt4ZloYVlo=&uDRRW3Xlbpfno=&HXsFieXXkXadi=&NiQ34zXUfsc_c=&QyIAipUUcjWWh=&AiK4YBWkoZcgW=&STiGrnWdVshXo=&zOxD8_Zemqpkl=&vQAdqRWfXZgkn=&_M8FvvWXYisXl=&WeCNjaWqqrmg_=&DcycfJWllXqri=&6RDyynViqWgWi=&7NevgTZjqcedp=&_SuzPJYqhiaqV=&GaVXJ3ZsrbpYq=&AAqOX6VjercbV=&LgrfYxZZdUppY=&t4bxYgVlapdnm=&myPCIGZ_ssr_i=&v9yeLmZmganXa=&Xhara6WYhZVlZ=&Fp6EYLXVhUqcc=&YEsykAUmVYkeW=&CmF4aBYYeXbbf=&xuTlknYpganj_=&fEI8veWecsfra=&wxY7DjXeccUXo=&thsSqcYfahrgi=&IQ3DVVZerXUra=&Ib9UCDVXkpoYa=&iT69UMZqmVf_Y=&pX3c4uZcibZmh=&y4WvyTZlWUohX=&ZpfWKTXjmagaj=&TfhGebUXZfd_r=&FKsALKUWbXlZr=&NmgkooWkblWUY=&_qHvkbXeaUbrb=&AX_qZMZlpjUfs=&xbierKZm_epce=&udwQYHWlabkpm=&FgFJtAXYeamUq=&by3_TVZVoVmWl=&XtXeo5YrXZfig=&WPIivaUYrZbW_=&geLIg3XWpmnjY=&6xvalTZ_jpqen=&9QUNdJWaeWVbY=&PedtdhVdZpkhd=&gmHOQDYWdhXhl=&qCSXIjUWc_ara=&qwNAeYYmhrsse=&O_TuJtYiXXigc=&UG8BNmWlXVYds=&SBcj7gZggkhaj=&5gahDqW_WjqpZ=&8KEnhqVYdcVcn=&SnXrubXcooiXV=&5LZPY5WZbVZee=&zz6HQwUsjWinb=&qsqtwJXhc_sal=&waZDRNX_YjYfo=&RRnDCHZ_YXUcg=&CL3HU8Xs_Ydco=&wTx2HuXkpordb=&_u2fvVZii_fgj=&w8eG9HWlsoUgo=&GQkEVkYiegYZf=&Y2WydGXWajjsi=&DvHjduWfchdp_=&UrDWA8Vamcfie=&X6gIsIWYrghkj=&qHTW6UXjiloib=&2D4GobUnqUVle=&WKnOFhWXVYYlh=&hylZCdVYqmgm_=&9S3uLtYYUY_WZ=&BNRb8mUjbWXjg=&txRa9QUYrnWUc=&nqJlm3ZVs_eqY=&gso7vUWjYrnkV=&AgtyUYYcVmXm_=&vBQ5PQZVVbrlm=&j_U4KmWcgmXak=&S3nv7eWlhpsUo=&cVkHjDUdm_VYh=&Fo5XhSWnfcnlc=&Wak7ZFXVoVnfY=&xl_bN3Zhakoba=&aNibEMVhpWmYm=&GtNZiJUgohcea=&qyAbtCVZZmlZW=&Y6LpXXWjVZXpj=&JuHlSFYkngbns=&hSsbc3Yrqqsak=&I28dvlUnspcld=&I8IhANZgjqZbq=&byV34yYpVhsXa=&PA9uqYYoaakqk=&Oqqse7Wmblmil=&DqRZPiWnjcakb=&gjU9vlXanb_pe=&JaSn3gWUbkUm_=&XcIuVhXko_jea=&kwLJRZXiZbgUs=&x4UV4XUlgapea=&n_aiE9XplsseX=&_hyUilUbismiU=&2O6yOPXphYZeo=&hlmkM5UdriVUi=&CZyK5qZrcVehm=&xSipdSYplsWas=&Ih8_ooUlllcUi=&bDEGvlWZo_emo=&yugMz3YZdbXok=&OekyIsWlijods=&WmmabsUidUomX=&qrwxsQYgahlnq=&K7KDRWUWbkorr=&6jnqpPVVeUcqo=&NE5DVvXaVXXeX=&yeWpbvYihnenr=&I7cY8HYsVcrad=&psM27gY_obmdb=&ti7YoUYcdblcV=&Jo_yAxWcqimls=&LejfkLZonlXcn=&_y8My9WZWoZcm=&r3brz6Xhoajcb=&rGV4VnWVVYme_=&76baoYUX_qsmq=&RH5mhHYoUefem=&Rn2GDRXZcgfkd=&bCO9C3X_qbbVa=&i_Mb6TWcVmoYp=&za6CP4WaVWsak=&gqUIFUVlUljgq=&yFAcx_X_Zbika=&HWPl6sXVUYoqf=&O6phJDXnenbiY=&HZ5gSgUakUdos=&sxWixdVWmeokr=&ITxvkjYeYYfrZ=&s_nCeHVXUsqYf=&MaA4EUVe_XZsr=&IYnUCCUa_eZhq=&eeaFS2UjWnoql=&mSIK4ZZdnd_aj=&8KvEjlXenqW_V=&iqY2_7XqnlYbs=&Qrv8HTUde_sgf=&7mlnrsYZViabh=&V5XpAVWflkmgn=&HM7WsWWgpgXeW=&VI9Rz6WkVqi_g=&2Bvj9AUfUkinr=&nm_xTzZihXnhq=&kh2oMeWZooZod=&TdJTYKVsYZqpc=&gyR2FsXWnl_qh=&skX7NdU_lgWod=&juEaVnWXiUcil=&vLSktoYrfhbYU=&KpzZHAX_qiiYg=&MGh9HmZhsmZsk=&xs8ryTU_nqsjn=&vpbcKZZanpe_g=&MZiWcMXfWkpUf=&9MwLQnZfUmcrs=&4OfgzBYkbpn_o=&wBih_7VipnaVb=&fkpwAVVldfoVZ=&9t45hAYUcWcqm=&hf5mXCY_epbnX=&xDzly6YngXVin=&ha3kxIZfhjZiY=&rd4t5gUskgf_q=&U7Ig5uUasgaf_=&jYJ2JXUcih_kX=&PC5PfWXilsqoo=&HJVhyoUmdpqh_=&KQsNt4Yelsjei=&GMtrcDUshspph=&mEIGfbZimZhhh=&nvaKfhWjfXrcd=&AnQDVSWaesYYo=&WMBPU7ZnqWfsg=&JUwmEFXin_ekd=&nv_Q9uXm_hUkd=&PUIYerXUUdpog=&zTb_b2YiY__Yq=&c9AgbOYmrVUjp=&sNeTkaZchYVhf=&drj3v7V_j_dnZ=&kl8ZP7Xqdripr=&kJLL2_XabnVsX=&3iII7bWYUclji=&QKM8ahWfVpqfd=&OgI4mGUhrdaZU=&EdUithWhXipeX=&468KPwUWqhXUl=&GKiG4fUfpXl_Z=&atAx_MVscrmYj=&GnLMNhVhmp_Xj=&ue8Ev_Wbccbhq=&xQj8qLZsqUnal=&_cygFGVjclWXk=&64G9UyYiZ_hrm=&kqoVBBUhqVrXe=&WgpRExXYqfqos=&8hnc9DWadbebo=&oZq7pJXVYeXri=&GMGJ7KZldWcqj=&4KVQerUaXiVss=&6BP9TiVngsnsm=&gooZVBWdpdWWZ=&TmAqsuWpglh_Z=&3bdjyVZ_YqqbZ=&jCFCatZkXYdXi=&ETDysEWVaZkgd=&WcGmNAYhssrUq=&bUTrFXZ_Vsoaq=&WCv5CFVlneXb_=&byrtISYgrUpge=&aGJJPfYiqrYlZ=&ultDNqZorXl_r=&mzH7PqUadnoig=&w67pHIUnegjgk=&4gWmSUUhkYmoh=&8VyfHVXmoVfqZ=&LU3m3OZplWlUc=&YDM5bgYkUZbpW=&dQG9PtZgdpfVf=&BWnOZrYngZkin=&pCN4HsZdbqdYl=&cZX5jLYcVWmjX=&3THvORVcheear=&vTvYntZWahlXq=&Y83MTpUVfUpiX=&AwZk3nUbjWYUr=&e5oDYlVhnpabg=&jI8wI5YlrcXWg=&NL6Po8Zdcesma=&Q7JPCGXfemnhZ=&5VqW76Vnjoejb=&9GIaF6UidcjUn=&yh3uBDYZdkibn=&O_Y7jyXZUhoUr=&7jScZFZfZYfZh=&dGfdkAWZllYsn=&UZs6TWWnhXZgY=&8v5YLHUjbreUm=&Uc_XA5Vc_bdde=&RBo8yNXgZimYr=&6HrXj5UrqWi_V=&8s9qoVZWrqXbZ=&NwtHotZZjVWhY=&mV2SAHWksgcVf=&PfqiQHUsalWXi=&kAs6uQUmVnniZ=&J6Ah8qYgbgccY=&3I3IwYXmaWphk=&QoUerPXggiYpn=&Pn_2gmUlplfdb=&CsZeyfXljkXXW=&SIUgHFWafbdln=&WDBC68WWdpZVr=&ZxMC3eZfmgVZj=&WG_Km5Zn_ekiV=&B2mXMZVmflerl=&w2OxzPY_nsaig=&ulprjeVbdWrni=&bkPJTPU_sfnqY=&8SH66DYaZYYqp=&I2wK5SUokkUVp=&_cPa39WrUVhir=&kaJbV9Xhieqms=&guJJNuZYmbocW=&GsmW9nZkXWlYb=&LLpPjvYofWjfi=&fRvK6PWUgmnoZ=&Ntbo8rUaWhiql=&dv4AKFYrcgqdd=&wZaJKPVifqmfb=&GASnkcVlahpdX=&ri9vYlVkogklo=&D88JWAYZjkWZo=&WgJ4SpWdqYnme=&2xltFdYsqps_k=&pEQn4mUUcXXgi=&Vlk9P_Yjn_c_k=&aVszyhVdZaaWp=&b5KWSmUVg_fjp=&PkyehhYahZelb=&47jY9AXm_sZad=&OPXBN2ZpcXpei=&7eRwORVbbUpdc=&zfitDiVlskWbo=&W8JfDaYnWqkg_=&R2HN4cVjrUfYY=&Tz6hQmZcgksgo=&lbr727VVnpVY_=&UUU8nvXWdrsdc=&2TPTLHXsaepZe=&GEbvDOWoYVnca=&hN2QM8YbcakoU=&oBSWPGUVnjfsr=&PpZyB9XmogYae=&lB44eRWrcnsrb=&oCZ7dQXpoYo_j=&EMom3yZVYYfok=&ku2w7XWYjdgon=&yGm67xWcaXn_f=&kXMxqtXakXVaV=&CtOfr7VegXc_c=&UDg5_8VpWdqpV=&jQkCMsZrablnZ=&Fdk45tUVUlfcU=&Ln46knVkak_ab=&W5M8ZyXiXhcll=&w7TdEjZZjXmsc=&nCuXVIY_klkkl=&VAeZs9Vsppenf=&uKc46vZrjaeVa=&Mw9j_bWYiikZi=&mGlyZfVmcaeeb=&_mzXCjVedWmVX=&LeKTNbVaWsYom=&ITWzPBUopZ_ed=&eBK4OLYdiUmel=&HhKdhmZdXfjfl=&JesLTSZcmXogY=&gbEItbUrsamZ_=&SQSmuyYefcXkr=&jjFy27WZqVo_j=&mA4i4aWVooppo=&8cDBqdUjrhkVl=&IAkVHcXcUgZlg=&vsTA8TZXZmcXf=&ndy4XrUigra_b=&tS457lXmajcnX=&lVMcqLZ_ehZlo=&cstVraVYnXrYo=&3bhHJAYiZoiYU=&jTxHlKUafadmc=&lqL2dhXookmp_=&nyoLLuUksb_Zk=&YwkXMLXbnaXgp=&FgLfdMYVoaUqi=&Q9lJ29UlXisgc=&HTdTCUXVgfWZh=&IKgxp_XhjqXXs=&K3RyqCXYlUrbU=&c3kSdDZd_ddZW=&Th3MXCZicZsbh=&jPdWuzVYlimkV=&uRaDPaVnofVko=&DGDy9cZhecfnp=&VU3fbMZilhlaW=&FttWWrYpqahZ_=&_HuYfjUek_ZaV=&NIkMgMVn_neWV=&qwrpSIZbXoYga=&Eleuf9XdemcaV=&aCRFObWZqZWaY=&tZYlmyYqnjXhc=&wlubJEVdkYcUe=&vhc8nBV_jda_V=&AhziMRUj_flch=&VWrumfXXXl_Ua=&qjEwfIYoVXqsb=&QYqsxhWiUhoZd=&qWkW3EZhsc_ZW=&sYeffyXmXrWYe=&qeuBkiYdWgaZm=&5tcBZXWohVfaW=&NDhzxHWcq_qoj=&cUvnovVajrbqm=&WpU7MsVZqWeXX=&yM24eNYhVnisj=&98M8XSUqoobha=&YoHD2JYWcfnYp=&_WennSXVVbplf=&RHTMkFWmsghsY=&6I95LgXpqdfYb=&feiVCNZlrqXcm=&ki_aNBZrohZmr=&WbnYKsYWW_fnf=&k5PVctWkisjWf=&dv8lfGXUX__ms=&lkNf7pYplqsdW=&PBBgt3XlrZlaa=&hInhXkUlccmUg=&9myFRFVqpe_hh=&VRIMBhY_s_fXd=&qHSyvbWjrlsVs=&7qWHgzXgonfii=&McR49QYfZdiUm=&OQ2wWAVssrrsh=&qWdwf7YWm_dYi=&7v8BEiYfYqjmo=&8EOAnXZokcors=&rPW_SeYcmWYVc=&g9dM_xXsWfrek=&hzGN4MZnXfZma=&CKrqroYjprUie=&clAQyjUociXlX=&gfm9IPVajiXig=&fALGwqUibrcbm=&d7eRmfWdmV_gq=&tbhPd6Ziqmkbd=&QMwlvSXlgXroj=&yS_k49UWigoXn=&HjNHNFYdlpfne=&nyHlcKUX_Uspg=&GIfGUYUassnqp=&7J63JNXpWfhcp=&6ro6aCXZjdZef=&4bI7ZYV_blYjY=&uX6CZEXepd_md=&5FEbfdZYs_hpY=&SAGKIkUUpdqeV=&MQLSGFXgnZmpb=&KcAlVZXpr__ip=&ggnQIFYV_jVmY=&_HfZQVZgrljoh=&gqTvjhWYXopWd=&NbeNGKWbkUekV=&qIifaDZnXsjlc=&FUXx9LWgYVdch=&OzzGvsYZnakg_=&zNXFLZVfgfllY=&6Iy4OkUobqUld=&9ZNNb9VkXqZpV=&scfTVRUnWZskh=&xPgmtuZYkVijd=&7XyVUvVshkiiY=&VbpXvDXegXVfj=&uKYTFLVaXjndd=&IMoqPBUWo_Vdr=&p3mh5sYjgXdoc=&E2cyh5V_icUph=&EJdmmPWmWiYXr=&XsyaCUUnqgcUp=&trc9NTZaaflnb=&wQRi34UWnagWq=&rvESwCXYbZYqi=&jV8Y55XprfYUo=&6HRkP5XfniYsm=&tl7Zs3Vkmmhgi=&NGWdtrWmgpaZV=&4EsHxhUZakknb=&DGKgMxUmfdmZg=&BhdyaNXljjqrW=&Fy4eOBYVflsab=&yNQdfvV_qXbYY=&jWeYTTU_eWcYm=&xfn4NrYgddXrZ=&tvCBcWXWpnqWr=&ogzvZUUmbsbUe=&BINijeZrZUqng=&ENzlMhVsVrnrm=&J_CwlLUigndnh=&95VIogVpapjVV=&jbtnyrVnUrjjZ=&fsm6d4WUpnipc=&kqtZy9Znngc_o=&N6mAePZj_ZirU=&IMi5JiVsroVZg=&i8KH3sXqirdsW=&AjN5R5UmokocU=&RbSRsJVjofpni=&Tng5ztU_nnXgU=&Wa7BubVoUbshW=&yeORmHWgqhrqj=&Cv9VeJUisjcri=&kbpubWVlnkgpg=&gKP7wZZjmkbpd=&FXgYAvXUmpVol=&r5cie8ZWcpfoi=&tg5G8LYUaimU_=&hDXD49WpYXiZp=&pMuomOUYiUgok=&FgmDX5Xlncboe=&OLVauKZkqaepd=&k84x2sZ_ViYnY=&2Wvi6xYYbpskZ=&_l3I33WgrVVmh=&QulRIUUZXndoV=&8vP484WYnhgmZ=&XS2wrbYesXpZe=&6pnomkXdsWhoj=&TjuduqVeUmdec=&MttTOoZniflgm=&mriVceWUXjiVk=&GgAYOBVhbrnib=&gNqr7aXsYmsks=&PWLmJ9WagYisW=&_6eJrdXidinbr=&kKjwvYVZcVbrq=&d9Zt4lYmclVgo=&cfW_sSYpdWkmq=&Ci7oSCUddU_aj=&f5SuX4Zsghlqf=&KK4j9SXWUcqkq=&OAYGBqXaUokij=&cUHmZsVnsXog_=&SI96U3XdYeamo=&huCmdSYZYmrVY=&rjDsOnXlXpWUj=&538JUZUUgcbbk=&8WJ8cOZlcUdUh=&hBx_lNVfcgiqY=&EXoxj7UjWorca=&yP4grgVlUYmsY=&9B7YsfYXdgm_l=&LNdMMOVsVYUhZ=&4sleEuVeYag_q=&JC3DAdZaepmVb=&XvLMTXV_fZUjo=&SnXwYwXXdVdee=&YdI_dAWeYhnX_=&jaB26uVfqZVhk=&znMo7YUshnVii=&CX4vzKYWnmYkq=&MLtlWkWaYnlYq=&CkVsjLZqdcnfo=&uNrjlxXpYUnVs=&ZsBLOZVkmV_sZ=&YT94LAVZV_aqb=&DTeQRyVibaYaW=&8P7MF4ZhebkaW=&QXzN9RZYhsnXb=&6rQFZuWqfUaiW=&i8s_8WZYlVaZV=&dFo3dFYsglZsZ=&tTp_qkWokWp_V=&LoVDI4WUmljfo=&HGKYvmWdXloiY=&WgH2pEVZfYkWl=&RxZKWzUZnlgUe=&cKOVtOZ_sWoXV=&eHuZ8NWlhXpr_=&Edw4SKZqZfldi=&4MXEkqZspnmUe=&4_KRJVYcajYas=&LtEYxVUcpYjfg=&M69Q3wVVbYs_b=&nRwYAAXfmsfbp=&7zQRiPVdUpar_=&qP3RYsZVhodhY=&OZOwB4XcVppoc=&ObB2HvXUXeidp=&OiaSkWUrlgcpW=&lFaH37ZesrWpb=&RAg7FAUqiknVZ=&reaohoYmbkWiq=&2mlkLpWrWlksp=&vKDBMPZZ_bdVe=&3Lw9NyZilUXYY=&OqqNDWYpidpes=&jyzMsfYsW_Zof=&8oMMqnYneYngp=&RDOavFUkoebXp=&9h2QpGWksnpWU=&QpGUUZYZaZdmo=&HpDSJjXlqkcZV=&wShTfiZgmZYbh=&_lDJVwYVXUoWp=&iDtJqaUbjagUm=&5Zk9OqWgW_YiW=&zb7UPgUVgeXki=&w9e4piWW_Zgrj=&OMvu4UZWYgfYV=&_HbzzRYUXkbjj=&LFtQ3OWnbkdbk=&9pISTHYXkmXkc=&65GNJmZcnh_nU=&7zChRKXppdsoc=&xlBkCtWXcbaX_=&5l7nGJZbWsZcX=&8yNtgDXfUhkk_=&6tbNhaYsamjha=&SqTrYTYXrnUUl=&vRaLRgVWVhopj=&434oFOUdqhchh=&mrkkRTYhaYkeb=&vk_QQcZYdmogs=&sCN9uOZa_Ugns=&gTmJ2fUUfmdVq=&Vz9jDQWbkqpro=&TfSLfRVngXnbn=&ey3wDxXrnd_Wn=&9KPne7UosiiUX=&BIJQYyUprUkje=&qBglUrZcsYnes=&zWaxZHVc_rYUX=&7KagLJWqlchpk=&8TdMo5XcnmeYc=&NAFa45VgWlhjq=&V5NS9kZcrrXpq=&PtuNZuXhYbdgn=&6UdSxGVdeUhcp=&o_PzguWbUmrpc=&3jd2F2WYgemdb=&BjjZURZdeVUUj=&pyvLDfYemqbXa=&BaATAfWYsp_n_=&SXkFgRYbgcmhe=&pWTfVRWs__bXa=&YideLtUkVXWcW=&wulvcZZldogUd=&yCkP_EWcfUmkh=&VXnlO9UmWaadi=&4fvc8NUkmamco=&FhhoNcXhdqfkZ=&mullNbYiobjYh=&M_H5tfVXhbjli=&yKTBbmZUisnYU=&ATREkRYlpXgsn=&jbpgJLYrVmlhW=&jUMyXYZoYoUZb=&qJn9DDYnrbcee=&r8rwwoUhrarcp=&LC8NbIXXsVrYX=&zr6gYpU_ffU_n=&ZzIRDmYppVlXU=&ouBGrKVeso_pZ=&bvhgLOUkdWoak=&_T3geSX_eWfmq=&VbTfDzXaadZkk=&SePnAeVknqmf_=&z5X2EnUcnescm=&JyIxPdVpdrWol=&QjYnRSVb_ijXm=&fbd7fbVora_kY=&VbZW_lWldfUfX=&ZYay6fXlnYpYi=&xNWO9gYadZliq=&w32yQgUrYlXfq=&HPCZkdYimdZih=&ohtE6EXddbgYo=&89_6aOYfhefsW=&tEkuwgZ_lgrre=&XWVXUAXYbspmV=&DYAfDPYVerkba=&uQph4sVZjrbpg=&FovzSaXrasaoo=&QGiEqMXXrVmpo=&R76Y_WZeUokqe=&wQLJQQYgYWYns=&Doc4KAUjnreaa=&TMWstSU_ocrsm=&5pj4b6Zh_qprU=&H4SEetWeaVod_=&Hy2_aOZh_qgZY=&KSRPGBWhkarsc=&eGwoq6Zbj_ggV=&kACylyUgkZqeh=&AkA9LwWlsqnco=&fWf59UXosrfhn=&alnCyvVkgchYY=&iO8vvBVkXfpqn=&lq4lHWWesbWZf=&EnBQ8TZXmif_a=&XdgEiRYrWmdsk=&DYRLDJUrZcYYU=&NQJ5_gVeUirfg=&oSOcRzWefbaad=&FXsd7jXqfXZpq=&Yuoo7QVUhglWY=&a6aqd4Woda_jo=&ZemYa5YhUplcf=&QWuzklWcUilke=&nPvjurUlkdcnh=&l5l2eQXgihYZd=&tYWa7gVaZmdna=&oeTJn2Ydeo_ee=&mnqmCDYYjhbcW=&Gyrxt7Xh_nlrZ=&vNQ7sBWoUs_lj=&_PM9UUUZnV_kp=&A6OwxyWkmqpjj=&lCMeC2Yhkad_X=&_zRKnxUVfbgbp=&KaoWiKVYVkWje=&ikZiE9ZjYcl_l=&Sa_FPIWpohZoo=&4dFR4rZYWVbcs=&IeBNq7ZqUcrkf=&qxOTFiXbfYrrf=&_xFNIHUcWbsii=&uGDF2WZ_Yaji_=&5ygvDlZaqdfV_=&oKMXzQY_Ymfco=&DOfR9GXdnoYXk=&34D3adXoisgsZ=&jO6lMwVmYpmaa=&4QP28SWsV_Veh=&b_rzHXWjoicha=&Vf3LzDZqclfjq=&r9NTKCXlhaV_U=&Fnv58AVdknim_=&Q84_ugVZmbXon=&Wvw544VZa_cpf=&S82je6Zmlm_if=&WJQGD4Zqdolir=&cq2UAwUbllleg=&A444vMV_asjcX=&SYj3yoVsUi_hY=&o5fityZUebcqn=&TYmI6aZq_aimc=&I4LiHmYfoqgp_=&5b6LvmYrgXejc=&Xw44HXUVmYWZY=&8b7Xz5WqcpVVg=&zVuCH5VsdecVb=&teJrVRYUskmbX=&4GQbpQYaUsqUi=&fKJc6eXo_co_r=&LoM2H5Yoc_aWW=&_wPgeYVhddnqr=&4YzwcNVXVdZXU=&g_4mjZYZaaVrX=&8HrjmVUYjhgrX=&CFfRjhUliUYpa=&NgCIBeVZqdcYi=&2yjL2qXXgrlrs=&SNn_ohZXcZWqn=&N2dlZWUYZsmYl=&JPl3diWacjcqk=&lzuYQzUnVXelW=&qe3Gp8WfcpXgU=&A7KW3wUnlprfq=&FNQa25ZfgrU_V=&5VKL6zYi_n_ff=&Afw4f5Xqgnpgb=&7U6x8UZolZaYr=&a5rft9YeVnmYW=&uPrFeQYjsbpdi=&Yr7uaeXamqodW=&3JqONNZjcpXaU=&VZS4W3ZVcqUYi=&oECGWrYmsckfn=&2bWfdMZqmjZmi=&FpJF9lWoprrmh=&CyhihsZo__abr=&64q3BNXbkefim=&_Qy4p2XiVeqnf=&gJY5CYVrlp_Vf=&imKBndYYqgWeo=&kuaK2PZsickUi=&uZQqsZU_qpohh=&8pHKpcXsqWgjl=&tPxlm2UcrUfqk=&4XSlGlW_UcZsk=&mPWuAQZchfagX=&MWpRLcYbiiabg=&hpLcfVYfefkVb=&H5rqqqXgcUkVr=&Mna_idVifgfkm=&YfyWOUVWhocgW=&944dnjXnlYlia=&rnWU9CWVXpmck=&SBcDjpVX_cndl=&x46jP7V_ccZgg=&WdP88wUcsjeZh=&vS7d2NVqXmgbk=&nC7VvHXfpYiXf=&ZAfRcaXlW_okc=&HCpkKJZVkdUiX=&o_AVTvUo_iell=&eEklt9ZZmgibs=&jaIMFoXZk_hjV=&s2hGtIUlmskba=&WcaOY2UpZZboU=&jnVx2YZkiopdr=&naiy7qVU_VsUo=&XWof3ZVbfbkk_=&_iPmqDWqddpdb=&a2axeRV_jXgZY=&po35MCUjjrlhj=&bkZLOWVrgmYci=&evAwiGZqVkfkp=&EwktK5UfkdjVU=&wmfrDBWWdidhc=&R3pl2CWmYXXns=&3tqXkoUipeomm=&uPQbllWXgdbXZ=&2sD9L6Yeoilnb=&QtJhNzYebVUYk=&HzsA2TZfUbqmq=&REm3hJZXZikXo=&fBffXNWjpheas=&j935ifYenkdan=&bOLot7Whmelcm=&4TH9e4UVsUoZh=&cSIPSjVYhphYd=&nrrPlaVogdVVg=&uVm_5wZqmp_is=&tITep3XmjbcZg=&fejbEZZcqiqpf=&29aUIYXVlabaW=&CP6Y9XYjUadsU=&QloR7UYllYjWc=&R7fJ_DVZqYsYZ=&2nDb2XVXVoWig=&9FOSHOXfVmhcr=&ywTtkhXrqlbai=&YkhUr4Ymcmpen=&NRk5K7Ukhmqmk=&XTO7NQYZbpkhm=&CAxjTCX_pfZso=&n_heIjVjhjUZd=&Dz2VEIUcmXmcg=&wkoYrkYUrkajo=&r7wetJZkbcbUh=&8RljjsZlfqgZk=&mzlwsnYrUcofk=&g9CBtkXUcaYcg=&BScAC7Uicarsp=&IFjOBMZrUbdW_=&mf4ymSXcXlqgs=&kw3rl_UZiVmfc=&8nzDTCX_Uhfqn=&KSlONSWVjeclm=&pBs4ubW__Z_hf=&4MVmhIUsZqbfd=&T3g8EyXYclemp=&ZPxogNWmWoVoU=&so9WwNXVVfroV=&V_pMKFVsdraqV=&xBioMzYjospYU=&GpZkkVUWdfonb=&UPyQDwYanbbUo=&6AywhFUWeffYW=&blWsxUYj_goho=&I9HMNfZnrbnqn=&5hkpTCVqqrmiY=&oQ_EdJYhiqYoU=&eopvJnUoimcZc=&S73wbFW_snibb=&a8CJgHViXdheU=&4VVG7HYkgbYgY=&AgtdvlZdfoe_s=&TOLf62ZaZldff=&ZgHORzXXiWVUc=&IvGJlcXZqqaVX=&YlcN8EVZYohri=&pFMsgYZ_raiWj=&NPVXzjUegacmb=&ZweS9MVVnoaUn=&j2VKmOXr_aWhf=&7syFz7Yo_kscr=&C9SRkEZq_hkec=&ZUodd7VWmhh_p=&wM8gmcWbq_mlm=&7_4qbbUlVerfY=&dhTVTxVak__bf=&J7cJUOXkpdojj=&M526M5Xpmgmsf=&JghVG6ZqgU_Wq=&yF__8vXneodlm=&faSZEdUsqrnkW=&VrXesuXZhfgXV=&ldshZGUlschpc=&bVcVuBXkjUdbj=&FoUyI7XokXgVh=&buyBHBUqkXlr_=&NkDsKUXgppsYe=&IIaS3IYZkXYne=&kjSkmoWVkaUcV=&AjOs2aZ_UisYU=&XYOLZzUasU_X_=&hakalhWaVkhqm=&gA36SGYZUgZrV=&8d7LGKWqisnZo=&XmLRA3XoZVfeY=&GwIu9gVUkgoaq=&tItmdYU_aYkdX=&hK6aTaXdYmasg=&aetewPZoleros=&w7XecFUXdgVUo=&F2LNt_XjcXfsg=&Zw3p_HXYVj_Yl=&R7nDQTYeZprYa=&theDsyVeUcWUn=&9q264kZnbjmso=&ecd7hWWoscmpe=&_xOWj4V_Xmsaq=&wc7R7bZfUVihX=&cvmDfBYcoUZka=&WB5BlxXjWUqUr=&PcihqCVq_bani=&ESmFgoUpVZbek=&DrFmvcYUbarfk=&z_cVHhXmcpkgp=&YOKLEjWXe_aYi=&NkbEYGXjnYilh=&fZdlBWVlnXsUm=&BoWp3zWbhnesf=&6JiFeEYhVisUo=&noR4JUVloqqUd=&rRXAV4ZXcpegn=&fpxvYRZshlmbm=&9_vV4qZqekXfh=&5_fLNrVhYhihn=&h8ygfZYqWbped=&ElOZOZVVWbhga=&jyUhDDXorhnhc=&dNHuQkW_dapdd=&y5UP3UXchpmXq=&BDMKlTVgUgdjk=&ppXFiHZcWkVq_=&dsrWtgYccchor=&THM3w3VkjhWnZ=&Z2uFn3VZr_qem=&rrsgbWYkhehbl=&vBFdQaWdeZcpc=&P9J9pRUYcrrnc=&IMfQVPXWUrsco=&s6qWqQUYWobro=&IFKHIJUcqngle=&p_ebBGVjknsgV=&PIPAjZXZYYjkW=&p3Dq58ZibeogW=&J3P_8eXkrmpkh=&i49DoBVjfccWh=&bXSnbxVUVmhXg=&vqMhniZjWkUlf=&LXozzQY_UdsXb=&6qGMWqUhglf_f=&YS3U8cZXehsra=&mC4sbMVbfWYom=&896UlWWolXqVn=&5m47GJVenfVZc=&OR9eNtUUq_flc=&KmUroLVjbkeq_=&h3DQO3UhaZraq=&efXNTWUfkZcrc=&SQD9fOYpoekbZ=&E9_xSMXkmhnXY=&kIEtOIXjolg_h=&48X4KyVnrgXro=&bMkMtLWalXfgV=&tJxehiWgiVh_r=&enf3TgUVWddmZ=&kx77mgZgcYail=&T5G9TnYrdWlnU=&vlELHQWYcVplq=&CrX5AtWfY_skf=&mLY6HGZo_ieXg=&LHLQZrYnhnsXs=&_wIh5XXZrcnVo=&YpOwVcUaWgqfW=&p5tbLBZcV_ogm=&IiLb49Xccn_fr=&z2Jvc7VooishZ=&RNRwmzZqofVWW=&KaR7ImVmsqWYp=&Uh9LlSXUsrbqr=&FMGsheZZZrbff=&quvniuUnUibr_=&lt68lnXbhmlqZ=&J6f6_JVns_eee=&fMWghKYgaaogZ=&pIO9L7XVs___r=&nXVrISYhkchaj=&9SoL7QWYmnkVY=&WkniFBUaYmXbo=&mYdWxLUdZhgWZ=&MScu_CUpYkobV=&WQyfS_YsgrXmg=&_uzslhVnfjohZ=&MN99uDYZrqpqk=&5YGiedVXkqhdc=&FuWxLoYgYdXiW=&972BskYpXkckr=&nZv6FEYhqqUWV=&YzomsXVnmWpo_=&_DFSeYXkgXkVo=&8uKZHFWikoZii=&oijtMZXrhq_Xg=&WRm98kX_aYljq=&CEXtVWVmYaXqq=&vUdl4KWnrrk_c=&QwMao8WZbpgip=&R4zqymXnrkYYV=&GXnWbhUcoofnp=&B_XxEzViiojUp=&LU2N7lVbffqkZ=&4iAKccVlelmoX=&LLmGsEYpXcXsc=&fyCHC8Yksikdh=&xBE4IxVhpcfij=&lKMFqKWcrbVhZ=&YJG47AWkXnmgf=&qwTZ43WYgcqm_=&Vfo9ydZWipckk=&CjVTimYrdoia_=&48UcijYmUYaei=&B7EewkYYboemX=&nIiCSoZXYjUin=&fgDPTkXjjijin=&6RWMefUelipoY=&5uO_5rVqnhXei=&TXNMcEXjjUXmq=&pJOOhBYdasben=&wGTSjsXejUsUl=&ZRsSDqVUafmWm=&A_iek4Yb_grie=&wR5IgcUsbssij=&2V2oyJWlnipdp=&__YJc8ZVoiZso=&PYAOocYmesiYW=&9iErK3WhWshgk=&Q3ssSIWgXb_iV=&brcbrTYanlogi=&_V_4WvWrkmjnf=&oedPPdYllhlfY=&9vZveHWgphXlr=&L2_FofXqkqi_s=&P2zf7_UfpbZWp=&9mPO3OYhqqXZZ=&VnV9VlVn_qcVh=&NYw6HKXV_adlo=&gPv3cwWjrfim_=&nfZHpsXcdfdfr=&3B6sWxZbhYUfq=&OPqwTeYdirUZk=&UoqoVDV__icaq=&nY_6KpUX_aolc=&XkYgjeVVqXenf=&FKTareYglllUV=&u2gggWUqagleb=&mjpF74Zpjcibr=&vT5G8OVer_aqm=&ZBIjbYWgXdkWb=&DYtctfVddgjbY=&n68Fv2XgdfgZp=&fOccp3YUnhZbd=&ZVDQoTUrebXfp=&7zzrvLUWmnqnk=&ep7mPfXZpioif=&DdLPSKWYddVXZ=&XZIwtfWlhYlbX=&KodeRSYcprkpq=&yDxAHKZapgZpe=&oYXhCeWhsfscj=&ltMCqHVlXmomX=&Quv69wVsWZpYe=&gyFI3DXgsWp_b=&jTdWgoX_ed_ag=&GaqGiQXVframh=&HOfOZ6XYWdnfl=&I6APJCUXfrlrd=&GwKwe7ZdWjiZV=&KbYfaXZVflUbd=&tdELBdVdmpZkU=&jMLAtZYWksmsd=&ug6wL7WZegbje=&n5HDX3VimiWgW=&uWGLsIZkjmkoo=&exR4E9XfkjYbY=&vpkYmHZUomcdW=&xGoLSxZZYiYdf=&9dvgSaVpaVmbh=&iBnEHKUanVYiq=&YS6ae9YWZjZkr=&GftJWCYkmpYZq=&5Ikt3NUmdWZjm=&8jjcMOXcakpbn=&jIVUf2Vrekeno=&ISZWmFWYgfqhr=&5oXVP8YUgWsfY=&ktGo7VXarbjkd=&lZNYDxUkofVWU=&9MOdJyZ_Ugihh=&WGGMoBXro_pXU=&lM6D7eXmUbeYm=&H9I6ptZcjpmUs=&_PRExBZanYZUU=&hQQB3gUccqdXX=&RYAIEUYYliobi=&UNhof2Wgpnb_q=&pmtnlhUZrqpVW=&g3zNQGVZaXdel=&_gTFuuVjpnjmi=&Td5xjOXorfgsi=&pPWOeFVUfoZhi=&JkD8hRUrZorWp=&3ZlDuaXpbncbh=&gEVP5oXcedZie=&NldR7PUssiVsp=&BArO2gYi_mlsp=&X9WBdQXmcbcfj=&PhSdvUXZjeogW=&Au9_5tZnabhpp=&FAm4ykUmglsbZ=&FWXD3TVfenaYi=&ZGBsENUgrcWfs=&72VurOVkglfhm=&hpUa9qXdgolsa=&LIz9h9Uiarabm=&6X7XQqUmqploW=&YTXfCqVXrjYWi=&RXleVDVUoqqVm=&DBvoS7Wljnhdj=&DVrPMvXnaXjnd=&4lCtN9UqkWnhp=&chH8Z5Wh_Usge=&VPgxSgUZnZhfh=&ik9hQUUVcgYWr=&swlewvZdVf__p=&IXSry2XjpqUba=&K6SXn4VbXffrV=&d48yL7XhdedVY=&3S5OSNYaVkgpU=&rKwdFTZbUYfnb=&9my_wIY_dXZsY=&mCbg3xXjqjcnp=&D3CNwZUg_Zcrs=&dTZ52HZY_diUk=&tMXldgWcYhmWo=&z8bvjqXZgahpW=&z6YRaHUlYUYhX=&yBJLFMXmfXbhY=&DG9GltYViXWgo=&yTKU7vUgdglrY=&B8l4W5VjUcjkY=&MZMftAXe_dleX=&qL9kdAXfdnjgY=&wu75WhVdg_rlg=&udGj2RUmWXWsa=&Q7plUNXYjVrgW=&5Ji_bIZeespcX=&_hlprfUecWpXg=&cmGA69WroWUhW=&OfTqjUWrr_oZl=&iySK93YVebcUh=&zODV4nWYarmlm=&LpNoaRYe_bqiW=&nLNXqOZsmWbhi=&SRKdE4YgVqhpr=&QIrccLZslpbip=&m_rWO9ZsXsXlc=&boXhORXifgmYX=&xdKtKEVaoiaiV=&ajG4UxWZpihqX=&gJNdeQWcZdhiV=&lXQZ78UVpUWYX=&z5_nIiW_leiUq=&dza__qZZiXhpW=&mcBCFNXqXloZq=&WHPUVeUrgceqd=&a9K5KVZrqqgkc=&A4VhFWXUbYoWl=&pWaFIrUiZrWVZ=&7QBj7BUUXceXe=&z45A6OWXlokXj=&6ZdxxbY_eVXmh=&k7lDZRVrjdjgi=&cfrfIUZeUl_jj=&sBMghQWiamqWp=&RzcmvMWqormqd=&2r3iI_Uksbrf_=&OvQBYHYXYWWX_=&5ABYUgZjlgYWX=&3SklcFXprUaqi=&r5naPZXYnWobW=&VowBNCYVZdaYr=&NY4wIIXpebboj=&hoj7guVkVWfco=&l9F2TAZYgcVns=&KpoEYPUrffelp=&oPtPWsUnajppU=&ND64ttYXrrpjg=&FF6swWUlocmaV=&iYYbqUZcjipra=&fEjfV_VraheYU=&8qLEfDWkpWlmf=&Y7TGetZ_f_g_p=&AI2cJ3YmpVgra=&nBmgwFVmnka_i=&oGI9GzXsdaUnf=&_HaMPrX_emXhp=&fYQX7SWeldZgc=&VQD84wY_ndiYX=&2rCfXkZgUYXfo=&zsmGJnUasakrr=&uTe2gGVqkspXq=&ajo6EoUrklefs=&KQTYLjXdsYdsd=&t6v_2eYcokbWs=&HUMhzjWdfibXX=&ObkuEfU_deihb=&V65DtCYqgaXZl=&StJ_ysWpffVjW=&e3CkMJWeYngdm=&eNkGS7YsqUoas=&6yTnihZYrYmjY=&uHHSwcWcWYecp=&rzPNEQZkVjnlo=&NTwtmKUpsmqpo=&vbXGFCVcdgZdl=&5_hE6qZgeUWdf=&d2wAvjWnrWloe=&eP7yLSUrclWli=&EJ_RziWlrWUqW=&RA7CA6UWfbXUe=&Z75lkyVpiYXlZ=&LWKvkAYYmfgWo=&gVA5neVXbekXf=&D8qDOOVpfklbV=&v7EaCgYiniVqa=&7zXUfvX_gsnXg=&ZZpxtRUpoiher=&WiOuQGVfWackj=&hMJJtqYgfbsqd=&fJRFbDXhsUqcX=&OBSTXtXo_bcab=&BxCz5lYWqsjbV=&7slm7PYpYZong=&IssbA2ZViUpfb=&ylh_FCYoUecUY=&ckCtcwUejdbVe=&uWXqPcXbgqgbW=&qqg6j4VZnimmr=&wprxlyUkfVg_d=&xSY3gGXZlksgd=&U82HXtUkeZVrV=&pDlyF6XdohXsk=&g5nJ2xZWdemmh=&J2SAR4WcfcaWq=&sOimpgWoYUXjW=&7xzCmqUhVhmZZ=&z3cLlbZrqWUUp=&UrAyIyWndrehg=&tBcGPSWYsdbee=&OifOt3Wbbdfjm=&HwvUiSYhmfgfY=&49UW5UZVonmsb=&hMxv8KVnoe_ZY=&dekLt5ZnYZjhp=&ysD86TVdlom_i=&spQUS3Vjqddhf=&SstMN8VWYgppl=&YZCy2GUXjZqqY=&wb8NDlXsle_qi=&Ib9ySJUogjlpk=&i5Nc2KZn_fWkc=&dFXAqtYXspanq=&UGIZRMWYqsYad=&U_AKoIWdnZdqn=&HFtSl5YenmrYr=&lhKAhEVWcX_nn=&uB_ThSWganZYc=&5c22T5WhqVmZl=&z2vYI8UgVocYe=&kUHyATWgWXqiq=&4eo9mAYahdnqp=&OwKlwzWkkYYgV=&8koF4UWa_d_la=&DxrDdBYnjqnnZ=&wa7aLLXZhspkV=&dsRyEbViUqpkW=&Krdct6XsUo_kc=&CtKNynZjVaele=&IohU6RVjsniVe=&ANZPtLVYmbmbb=&oYFK8qZlfZYcr=&xpCRCPZmnsXbp=&mFtWBVWnflaek=&FU3TzLXjXnbce=&ypAOb3Z_scX_l=&J2IOJwVssehjf=&G33psFXUYarnW=&eLBxAzWUmqbrb=&q4QhqlVohm_Xf=&XF_YnjYY_mpmi=&A3snpUWiVipde=&gUauI2XaVelsd=&2JtvYwZdsnjUb=&2Gx_BHVZf_ddY=&GPJmjsZlXnedV=&EI5OTHVapmiYd=&73vXlWWshlaqs=&dnT2mrWUqbpfl=&6rb9ZFZlsVajW=&qrC2pNYfnVfZq=&Yl4J_xUekiVnb=&6huslmYWrVbmX=&ILfXy_XUrXWqr=&7HWaweVncgfsl=&OwwwpZWdbVeai=&GGmUPaVloandq=&gQTgh5WlageWq=&7WLgGBWqVmepl=&CnVeskXaXqVnf=&KhEVLMVpc_jXm=&DV7HEFYXaZprX=&KYsK6AZmXrnYc=&_W8AWZZqZhXlW=&ied4x6XnsYikb=&2XtQWkZXWsWdX=&d7RXypYVaVidW=&Qf8xIJYdjeqfk=&ExubulXpnfsWe=&XHyVexZZZqi_g=&wg2rVFXpqp_Ug=&tUYHHuWmYblkU=&97UhHgYbfVrrc=&j8x4iHYilrUhl=&zQSeZFWlYWrgW=&Ehmx6MUVpgshl=&9m5kuoXfXi_ge=&zD3ZsAWsbmjsi=&kH_dlNUfeanjg=&5zmtXMWbgZn_j=&TEffirXmnojZZ=&j9DAcXXicY_WZ=&a4y3LNZnihsdm=&r8tafxUlfZsja=&VNQrlfWhsXYgq=&Cycg7TYlgVmpV=&aeofh7YnhiUUZ=&KOqiYfXgomUfa=&2SSqqEVWaqjk_=&oKcf5RVbbaeYU=&W3bgsCUpefaoU=&yi79bnUpmplis=&fC_dc8ZYmsqej=&LwFs_RXcqajXn=&O4sjtNXrXnmbU=&fOTeiaZUbfqlf=&6Jp9rdUooocWW=&ZLa7UaVWhjsjh=&rp525zWfrhZ_d=&XnZE7gXckYWXe=&_rAY9gVmsWbam=&UOiMewYgomi_l=&Dm_wCTWeZsUec=&yTxeniUdejnad=&n3PLXOXidqVpj=&K9WqVqUn_Umji=&DikMUUYabrrel=&4vPPttXfUZbcp=&23lZP7Vomljsq=&W7FdSbUmnkmkZ=&uRUUPtWVrqmmY=&VE5DMHZbmXomd=&zqeIovVV_drhW=&gRvHGBZkegmkc=&STd7B_WmdYbma=&lZn2VzWdrlcWk=&UHELMfYYUjoXk=&RUEhf3XiZ_Vcp=&gH3kUKVas_dkg=&JnuohWUbqr_lb=&ccr3qNWlfiZrh=&xVEyboU_Zsa_Z=&hQFH7XWgnqhiZ=&84Jp_FXkorqjr=&WnleQ_YUqWsho=&RNw4l8UUYXVdl=&IrLlpPXsW_fcc=&bt_5ImXdYmlVp=&ot6zrOUZriipc=&QevOVGXcUb_Xi=&2VJfQeVsoaZrU=&SlfuiHV_Xhoal=&Zucq6bUYiUbgd=&S_ODwYXoUeZlV=&bfyQ5vZroefdc=&_cBY9RXjfddga=&njAiDZV_ZpbhY=&VOWjnbZbnnsYh=&2tolS4Ymfekjl=&yK9lvrZWhbebo=&IWIo23ZlefrWg=&WaBdh3UinaZqo=&vsC24kZsqgaXc=&TVdYewZchhYVi=&TQUZyYXXYsXlj=&RPpM7IYhWWcYl=&u_8VHwVliVrbd=&dcDZUNVqXrhaV=&RbLaAXVpYXbkX=&bo_7BGWXdXigW=&cQzWIFWdmonVY=&_GUq7CY_ignll=&bYkOztWeblsma=&YVm7f7ZZrakpf=&_dJCwIXribgnd=&LLRIJNY_c_qkq=&geLUfMZpghrcp=&KpJ2a7Vkmolks=&vsUHSwYhUZmj_=&qne9p_XbqVmlh=&KNUOkxUj_bmds=&7MalizWbVjkjj=&aBYHDSYiWnsfs=&mdXELHYsrqmci=&G6SfTWWdhhVVl=&AWDTqFZaoX_lr=&d99EwvZigWmjV=&M9FXQsZdUgZpl=&YOZIjKXdmjibb=&XH4OUbZZrYYoo=&7zu7BhYl_pinn=&qNyVvuYjVVgli=&kDnZNpXWWpqgo=&5lZVdVUUWmspr=&SHdx3dWldX_qo=&o4C_4LVaqWWYf=&4hWIAGWkVXgYn=&mBZ7xbVVgggWf=&RWqIwhVgpsZsU=&8YYTs6Wkha_ah=&MuU2oeZisZVUj=&A9o_ZhZUneUXe=&BnwcMRWbWqdia=&kqqTUvXksneUb=&n45JcSVikWhfb=&uwJZD9YUmsqVh=&j276EeUghssal=&loFrqeYimlWUj=&hsFCq9V__fbbZ=&lm_9dEVpilrlm=&idyCAdW_gibak=&y_vohnYVsqqoX=&IQbrd3UV_VrnU=&ykPaWrUmasg_Z=&Jbwsn_Xhngelo=&9CWKIPXrssV_b=&toMKgFUYUm_gV=&BWLPrsWcmlZrW=&52TPFhYsdsoVe=&aoT8ZnUarYrab=&G_4QBzWmgbkcp=&MjB8n2Udakqmf=&iXjafpXXbgZaV=&bMHUsIYqhVosr=&V48NukYkrlsda=&uruJIKZVYcorW=&bEqavjYUoqkXl=&mVPq3IUqspbWh=&vtCPzwZihbnqn=&95Yx6PZeXacrr=&j6YIILYcrrnXm=&WQS4SRUfqYkmo=&yQVKBqYqcYbln=&82rd8yYalnnsV=&F8du7hUansiYo=&cLTFOLUaajmqk=&iMIu8FXjrqsmc=&LoicZfXYki_VY=&geCTJWWklXhdr=&I2h6sQYWkXeaV=&XrpF2SYYqsaXd=&2PvOFxWrfXneg=&xZp6BUYhdVklW=&TIyIZ7YbcUVjk=&mfHChGVnbianY=&BKXjYTUjZjror=&UCV_cPUniVZXb=&vwm_IWXadhcin=&yE2ZOiXclpVij=&z8cBXoYdrpbrg=&eg8ckyWhcrnfm=&5qsSMaUYdghen=&O4s2cIUgsi_Vc=&R558XMVogWqcp=&fJVS8cXkXcdrr=&dtZGUGZXoYXVo=&DKUsCUXkfqXVm=&YKbuAuYa_rdcm=&V6lCaeUqeshne=&59z8wnXprXoik=&RfBgXsUaYlZYl=&jwIH5IZUVnb_j=&24cLDCYsdeaUs=&oaBQWKYqbhfpW=&qbaKe9UWWWjlm=&Yi34CPVWjiegZ=&OEhWMpXUaiog_=&PEU9sOXhkUhno=&VEWTaeXejgcZk=&IjLipoViiiWpc=&I575yTWd__cfo=&DDwW6yYWpsohW=&PVlWu9UUjlogi=&2aS7TfWjUkchm=&Tmfv_5YYrjVni=&xwIRDGWlksiaZ=&PfftLPXiUjork=&tGe4zjWqoekbs=&sKCrDTVXiekUY=&zJVX3BXY_p_We=&PBIh4TWWeUsem=&dUPbzTVhiXbXn=&krkiUdWaigsdg=&jySOcqWqjrcoa=&JBjHzQUZkorUs=&45MnkoZVpZp_U=&JRuhUGUeh_ipU=&LEYoatUZUpleU=&bG_B77YoncUld=&gSDQRKXUc_brU=&B59h9HUjfa_Vr=&lwn7GlVZmoUjn=&ftEQT8Wfqh_VU=&TtpzUvWWnfWhn=&fGQb8EXUmmrjn=&gx75XIZcYXhrl=&Uspir4XflWefm=&YWCk8PVjW_nlr=&iwhWbfXnkWalh=&ZF_RSAYfscXgs=&gF5EbkYegi_YZ=&NSGzESVgaVnYq=&yOvKNoVfrVhdV=&7NHkDQYsjZpfa=&f9wnLQZVZYope=&2QKKMRXknghbd=&RUg66yUbXUgXj=&wvvmT6VXYYheq=&GRH7gvVhsiZrc=&dlhmDVXZZlsic=&XjxkhYWWeVoXj=&2pD3epXgVVpeV=&RFbVbwVYlqpYh=&KWKAyjWssmace=&5oyGk5Wfgjhsi=&93pFE9UpZmh_c=&Z85a68YdaeoY_=&fmGL8pYWiXXVi=&W7WPzcVmboiYp=&LEbTJ9XsoZYmn=&4pgNJlYqcbXa_=&ytWclGZmmgjZY=&Z2_F8LUnosimn=&DagsLKW_nedVs=&OQEStrZUcfida=&_zeUiGUrcVnns=&5AqlfXYgpldqj=&8wrbZbVpYdggV=&k8ChmpX_fZqmf=&q5Cmr9YWZkoWf=&bKbuL9WarhUiW=&2XX43RYpVUXYr=&VpPAUpZcXhqbj=&MinU5EZikrrYj=&UiDHQVWXaeZfh=&JLU8QyXfYqmhh=&u9BNZKXiUnsVh=&SADt3jXlYdYdY=&GsyhWoZmkqUhY=&5jCDtgWZafqVp=&5Kjvp3VrcUrXs=&aHZ7BaY_kqYZj=&RkRjD7X_omYXb=&7D8BWzZbW_mWn=&gc9V9zUobiabV=&EwOm7JZembmbr=&HOV_hFUahcqjh=&GG75RSYUjpcia=&9lpp_JWWsbXZi=&2s_QWWWlmdklZ=&dG7nZPUUiXgm_=&YAbPwZZmhpXdZ=&CPmG5kXjZgdpb=&9F_IVcXgrimaX=&zZuoupVbpsejc=&zUrpfIXhseVXZ=&I4R5EJYqdfbns=&2c_5h3WgWddlq=&Tx6oDAY_Zjfmq=&_H9IONYhopmrg=&_AzuzRYXfUlqb=&5aovp8Xpkmreb=&7mfSLfVqkea_j=&GeL4MkYUWejnl=&ghMRZqXheb_mr=&MNvxcRYqZs_rp=&9eI9qAUZesmbn=&OQN8gJVgUpVsr=&M9fTJFXYr_aXU=&XqSZ9bWfg_Wre=&nPsHhEUidapiX=&foT7onZprekor=&7t3DJHWa_afYe=&4hlw8uYnifUbU=&AlU6UsZkiadir=&OI9HoOYXif_bb=&33rSqXZeWYici=&JnLBZCUdhXbhb=&EiTKtCWsUXjVo=&8q6eBQVrVrkWU=&FXmGDuYlVpZlV=&zq3caqXUdZgli=&Fqie9dZmg_jYf=&6Vuf8TZXVpaYW=&KScN8yYe_bWjp=&jAh6WyXWWZUVd=&qhQJOlZeXVVXr=&YzmzIMYcmjaVh=&SwkIOAYcZfnqg=&WGf86LXmbjqdb=&9BBx_nVUYnjVh=&lASl4AWZbleif=&wagPKMUi_iW_U=&E_A5rdXdoWnYY=&QNtyl6XXqbVbc=&cPv8ByXrbifkf=&5XFntsVbinnbi=&D2NfbdYhhZkme=&lcMRisXgbilgq=&aHCv3_XZesecn=&X3HuncYcnZonl=&Ql9eJdUnfkmXd=&z5p8jKZlZZbXf=&ccRuiPUXeqdds=&UT3S4jUikfram=&uhajWgYjYrbUc=&DicCSdUodXoiX=&c5V5LcZsiYcdl=&b_SjoEYkpodXi=&qq95oLVeqhqmU=&3R7FSwXdlhmX_=&rsJXjNZbqYVZa=&wfMRHYU_VchiW=&P3pFgPXeZcZld=&Z4iFAqU_ckZUn=&BsLj5ZVhWcssl=&aBhRBpUajXhpU=&RUEun4Vddqdbl=&tNOEKoZhXlUlg=&Z43BViVnicU_r=&wz3g4QVnlcnds=&_xpEptXqopnXp=&E4CMmHVUfdhrU=&dm_V4LUhilqXo=&on9pT8XdolifZ=&tA5XKDYmjiqaf=&ZfyrvpYlidYUc=&jWXgZdVchhYsg=&fEoJmdYZfhqol=&heSMu2UfdfZpW=&muJouJUY_VprY=&Ve7NEHUbiUfrh=&oITQ3pZ_kYjaX=&gCEdCuZUcnirV=&cBbgNLVgcbXXl=&BxrFTTYb_dpac=&V5CvTEYbYcqba=&yTOMaQUfrYhpc=&DNsnMzUrhdXUb=&5Cs6DDZYpesnZ=&ctkVPPUYs_nnf=&24OXLQY_f_oYs=&OoZfIIVgkUoUg=&FmG7xqZqkmesq=&NWxQVfV_lWhnf=&24lieeVUsXqkW=&_gY6uJUmYjXsX=&L7K6aQUqjXUaV=&MHl75jYfUf_k_=&3wWCnwZqsorpd=&ODJzPnXldhhan=&V3T3ccZhWbUmg=&EYWegyUlaf_bm=&gHnE4IUmdlWUe=&SXbT2OXaoacqW=&LcprPcXWbdWcs=&iGh3HQUmscpmq=&_w6KgZWsUeeqr=&w3J_eVVlYXVpk=&RDsXsgZfafsps=&2EtOMbYkfrlXg=&3ontvqUhrmfXW=&ecajefVf_lamk=&TdpD2gXosnpj_=&fnDSoqWsphdkn=&aG2WYSUWemWqc=&ECAI7xWghmWXW=&mzgKINZqlfh_X=&XYkW5nWqdUfhm=&WjpJRtVaflYYZ=&7_TM7DYjpjUca=&uuoOV8YXcmcVX=&XgXE8BWeresZh=&FpHlqXZjdsshc=&L8cM8WWkqZdck=&ms8B3YXWhqWop=&zNt8C3WXbZfWl=&Rp58zaXpdmVdq=&HbiZ7vUi_brhq=&4WRBRlXopg_dZ=&wJYacvZofcqYb=&YhytbVUaYlbqf=&LNM79OVlXobkr=&dyEXCLVbceUae=&Y3s_qFUVYjrYn=&yew9j_Wg_iVfg=&83VOvmZiVfsVg=&AUMNsFWcknjjq=&LSRnZIZeZcanm=&EKJdCVZejYjYV=&hHTBnvVljY_Xn=&8wTBSvVdfposf=&6VdSwGYYpldXi=&pNAniKUioVghc=&Zc7WfxVZqehaf=&Ya4rtsUimliZc=&BQ86kxZhVkcma=&Ks_kP2Wggr_Wc=&p8CiUxXekejqY=&F2wvdfUVdYlgX=&798w7zVsakZhs=&KGobr6YUXYsXo=&a9iYviXrhZann=&VxrgGaZVpYWZs=&oPRzHwYdfobcg=&NNjmAQXZcjfYi=&qNljs7VhnWqWZ=&ei8dl8Vfmnqrh=&py2SODVYYgUVk=&ro3MscVoqaddj=&Rkp6dAV_UkdWh=&qP5S7tZoqcrcl=&ynjRn2YbUdlsZ=&dOahxkXefqnZc=&olH224Wgrjheh=&KTNP7vYpXihcg=&zOlJFIZpjrrea=&25w5UUZhnZmgo=&WsilDIZngbemU=&OtpkTcX_soUcZ=&y8vdclZpbhq_Z=&E2MN45Zqalpql=&tOtTjsXcse_gc=&ELWjYvUdZhsVq=&J49OlYUjWgbZd=&KUjLiBXYjXXsi=&qMw7UmZ_Wqrpk=&ymT9MLZghajcq=&3xG2qXWkqihpe=&CSZHmnUfdVbjd=&xraxLKVZmesob=&u6SnWvXbabpo_=&EncCidVjrXjYg=&fp97ydZgpocdZ=&Wjx9jSVjfbiWU=&K4bUBzWllXXcZ=&HmyHsPVilgXop=&b3At7GYXeemdd=&hBN6h6Ydfndng=&Wnj_unXmjcnZY=&oIwVRzYilWXqo=&UANIgIVrZihoU=&fz8ua7WXgUnsU=&koZeqUUm_fbYc=&yJx8VBU_gehVm=&uIaN2SUmcXrVm=&s3jWNCUjWmagm=&zDcAkkZeoYUjl=&EV5LjhUZjeqbq=&hz_CAYViUZkmb=&4vjSRzYoonZhp=&wUYY_YWpjiqYr=&8c2XYVZnciqWh=&76rroLXkbesrk=&2MGGWpZZhZcnk=&YQVPbgWneUjlZ=&d9q32pUoWVanU=&xRkk2aYdXbrrX=&LOs9QFU_qkY_b=&NJBwX5WgrppoU=&mG9IpPUXZsVlV=&QyXU6PXcdigUW=&JpzwgMUhYpYZn=&e7vXB6Vk_afl_=&T5I3ydVVWjfeb=&xyHLXWXganYmn=&cJnBPxVrieXZW=&CyZOH8XWbafWd=&ozaWIlZrVlisV=&x9Bd7ZZfaaZUg=&Uus8vrZpcafqZ=&fcw5X_WgsXfoZ=&aajACWXlgWXqb=&AuxDAjWWsgUoq=&psmHKKZZokrnp=&9s_Tt6Xm_b_im=&RwlzUwUgprXlW=&p6qrQoWUikXkr=&HfFmB6YWVgbjj=&ADP6vXZdkYmfV=&e5sZCjWlobcgd=&Q7O8fAY_ZhlYe=&S3eNulZqrsZg_=&IqD6lDVVmpsYU=&hpKtHIYgscVrf=&35rzfLUdkemfl=&r4SzCoWggnnWo=&GYsYsCWVW_nXs=&8RWXAFWoUfgZV=&fQ_e9pValbimg=&IUTm2GXXnXlZl=&iE7BOjZpVWhnY=&M7RpuBVimhpr_=&wEQyDdVmcriYf=&3KAeRdYUUYlok=&K_bYktUkiXmoU=&2UuAE5UnXlepq=&IecIFUWf_XZVo=&7tH6e4Ufojeid=&ylmasxWsZjnei=&hIwrYNWlZsodn=&ZONFQoWcUr_cr=&fhTwteZaZbemg=&xG_lMRXenpphb=&3SceBIZUXnXso=&nmoLSgUjWlbUg=&9qPQucWodhhVk=&e6BR6eVYUcYqs=&vpqQWYYsUmlqm=&5TAhSGUWljboa=&3wOQudUo_emoq=&d6QeliVsmmmkX=&4NKtakZfVokpq=&N8lwgPYpakdeZ=&bTGnIrVWWgZ_r=&kL3iicYsqZZeY=&XscAE8UfUgfsV=&AqH2cGUljYl_q=&PnPkziUefboml=&8AGkAoXWaVZp_=&WQaVysUhskcjU=&Iu_mscV_jmfcm=&5xWFSLWjcgoYf=&Ee_mQAYkXWbip=&zELiWxXViacdZ=&I7WNnWUjZYliY=&nYLvSrWjcWWsq=&YvdxGDYnnrksi=&C4LexAVsVfZnn=&qL8sEQZeqppXn=&daz8GVVkVYamh=&AcemNQWdbUgrr=&P7bTuIUgaskii=&ZG8ttpYjhhqih=&PPvJoJVjheUsX=&zKhytSZa_dpqh=&yRtEL_Xl_nmjW=&hLiKXsVrZrVYr=&yzzFXkVddsZmj=&YrUA3WZnWYhar=&gIQn3tUVUZrhV=&dR38epUoVehWp=&M5Bn8UZsqVimm=&wpklLhZ_iaWbX=&D9NxBAVcrYkef=&_viiOKViW_iba=&AQNh4IWceUqlp=&6Z4IZsZeXZrjq=&6SdfLFZc__miX=&4tDyzOZlYkUUh=&roy_cQZZXofrn=&4J2dw3ZXhahXe=&JsAEW8X_dhagY=&J75ZwlXoqsjo_=&GnS3MSUolVZiZ=&m2T6JaZlckmgl=&YwbubVZWsednX=&79Hq2iXUcksgU=&vMMHbOVamadsg=&QN6PEjVegc_ac=&4HnbSUZkbYjpr=&8ylbTKXUmYlrW=&urlhmKXojjnnh=&F4EJPRXccalkW=&grsH3YVVfUcdp=&MjIlziZebcf_n=&SZDopVWnVqZpZ=&efBQwXVnYYUjX=&4uzum_Wqgp_co=&GqGEsiYh_f_fU=&q3g94AVZqhpfl=&TzTQHHYYbdo_o=&b_zio5XgcYXYr=&cwGmN7ZsclYci=&OujTTCUan_Xom=&_tP5X9XYspXmh=&XEZVgYWr_dhbo=&s6pp7vVghVelb=&cS5HaFUUebgnf=&F9pTvtVUaWgnk=&4BSS2GZjWmcVV=&L87SI9XipYbZd=&5oWc7jUrfjjnX=&C2CYmuWVbehXY=&BsvXU_WeUomqc=&DSTq3cWqpjmhe=&DjuuQfVdmkcca=&4pLQPyUeVhefg=&hVuFumWfjpddf=&9RtwCRUonrWam=&Dr3_6vWpdbhcf=&G5lyaTWkjrXXd=&P7hsY8ZhsnabU=&LPbTWMYXegsbV=&os7cA6Yhrigig=&BLGu5yVhkgasV=&ujs_46UbaWarq=&UqUsaDVdqqqZn=&4jQK2nYfe__kY=&7pCTKJXYjh_fi=&cDirrSYpjWckq=&BolKHHXdgYirm=&tkIJzsZhenZW_=&kHLvT5UZ_ngjY=&hAOBoJXikgYWl=&QbyUWKZci_gbU=&I4CuYvZrkfhpo=&Gf5N_CZidrbZk=&PGTUMgXsfcoVk=&L2LvcpYggqpdc=&pyd6H9ViiodWr=&goDUF_Xooecnd=&lABDmxZjcgoVW=&WaEZfbUXc_lck=&Pa9rXbXehaikV=&JBhGHAWrU_gck=&QLTsfrUnkhiYf=&eTkPasXq_lYjW=&N7jft2U__dZcU=&uxkLa8Wmjgoqj=&peK89GWnhWiip=&69SGj3XcX__bo=&SPryQLWpbiXVW=&yJVX3XXZUsVkg=&FanO4HUXYhYsV=&hzsnZ6Vqkok_V=&dtWZXKVdoiead=&o7ms3EUealmdl=&CdnhuVWhbeYZk=&GMBaInWebeXUr=&3iEiDOVsjgaYq=&bRoBo_XaiZYiW=&VYPppRWbklWaU=&ZsAg3TYUVa_df=&ncJPXZWedVpfm=&q5zWH4UrrnibY=&uCM7BeVjpfZrW=&nkduOaZqpbUZh=&oU6rdrWckeahW=&U7KcucYkiXjUn=&HTEsxpWWVmWVb=&dbRCSHXs_rrqk=&A4S7daX_qklil=&rhCI2XZpgfkek=&jaxNQoYnfqnri=&ZI6HKHUZinpas=&K_4rXaXjdWYop=&Jk4QiiXeoUh_b=&BM7mI6YXmYljq=&cDtuJuUgXpqqq=&wpWswqWbWjpbY=&XtwvWxW_Zgcai=&ZplCwcXnfWUrW=&Z3NRu9Yhqlfdc=&HwrbuZUbaXmdY=&se_KETXpYahpo=&hKaDOhWYU_bWZ=&NkcwVLUpUZoqc=&xOsDpRXilhcWe=&TpKy3AZqjZYWW=&EDRwc8ZojjWrc=&Rou8ruUhZYqa_=&jILzMZUmXXUXo=&Eyn8KrXr_Vmeh=&n4tAoRXhVlUkl=&xLQZM8WZjZnZa=&bHKlKmZUWjkjp=&GBxYf2XViqhbb=&6royCWYlcWYgi=&o8i6R9Wfd_sdr=&XCdKssYXa_jqp=&33UZA9XbUhYlg=&MigmKiYmjWYsU=&EYIlsnUhorbrr=&ApzHmoUbhlVVj=&bcagWlXZWaW_j=&UydHoPVrc_csk=&Xe63JxZnXaXkb=&AU3buGYlj_qsY=&eQeiazX_nmjqp=&gozOj7WalbhZV=&IYODqbUfUsafd=&eZGANPUbUqmnU=&7wFPQKXVoWkqj=&RrpsjaVqXqicb=&mgwbURYjaooiU=&pz3QCpXVVZhqZ=&Hu9F8qUWdemsV=&rlwBEhZUbX_k_=&jzvQqoYprUmgW=&DK3I4WWarcsqs=&Hb6xW5YprZlpW=&qR6BZTWcW_sVX=&dZQHvTXeqrUig=&x2pWrOVccboj_=&cICdefUjYgijf=&AjARzPYdhjmgq=&yctjGUYajgbhs=&ocQzCaXjgpf_i=&9zlWKBUXjbmfq=&dT4xkrUoVbqkU=&54M2gOXaWceXn=&o6fkcLZniUkqU=&DpIZpeYeoYaab=&wx6mFQWhciYVq=&hrdWdSXhjfX_Y=&kc6ZdBUrdsjYo=&jZCSFtWqfmkrp=&uRbFSQXXg_VXs=&JP2n9vWjnbVis=&4MvmGwUZbmlYW=&XOCPrAXlnkfkc=&jsgGDUUdaiook=&6iImcnYeqeZln=&LiQYAEUsbnYpd=&FR9uY6YahqZdZ=&NqKyywVggVdin=&MvGC3iZlgXqip=&z9AKeuZbp_UbW=&sgwMbfXlVcnoj=&HGC72GWUZfoYV=&4Tu9G5Xqcpsih=&8yqjKBYgYsmdj=&x8g72OYiUbbsU=&2srRVHVXqibmr=&2pfXAdVniUgoY=&bvCrvaWhfs_pW=&gpvF7gWYcnenY=&oqq_s4Yhbfksf=&qnVrliVcfafgY=&jzYuvoXViXdgo=&EEAn4KUnZpWi_=&k6PUqHVYZopgp=&U6o2otVriUdah=&vKBG5TXfinX_m=&bWtAEwUpsdkhW=&fBcR3rVUe_Ugo=&zr3hExUrkiVpo=&T8z8N7YqjXkYY=&ufanzAVkqfiaa=&7hDEnmZfgiiaq=&l_F3cGYWnYjVs=&uqqALsYqfUXjf=&mE_zXJWjeZfWX=&_DT6TKYUZiWfr=&JvSyIjVgaelYo=&jVyZHHVgrlUol=&5vkwqrWWkhgqo=&AvKDZcYefkeb_=&RhWK4kXU_hdnk=&ot6PwZXimsiYc=&2hZsjUZjVhjYe=&9HvhH3Vdsh_gq=&eteKkIVkpUfcd=&k5xzvwXdnnccs=&tO6owLVdkg_lZ=&KV5tMlWZheaeg=&XuIUibUrhneXr=&BRQEqUUUdjqof=&M5DNFBVUsoYpZ=&ULPAaoWpdsfoa=&BkjQvvYkY_WXc=&weIkkQWhaka_i=&5xIhXaYVhghha=&HaxxYQUibVgfr=&liFHDuXoXclgg=&ip2IvfUplViVZ=&SBkUJJVdUsii_=&W6nbAmXpYpfmo=&rrJ7TlVVZVZfg=&ZYmWQkWmgWpUh=&nFcTgSZlfkhki=&abK2fVVWobabg=&Isygz3Vlki_ZZ=&ijnXFLWblscnh=&tVGvKPVqYf_jc=&MeSZESV_ccbq_=&3XShYNYkfpenn=&DDPDVJZmjagZ_=&_A6e_wValabcd=&Iz6ZscZ_jspXU=&f7hv5mUkfalYo=&9ktL_NYZshnkf=&Ixc6ejWrqngYk=&oPtwrGUngWgYn=&fnLLQQUUpsbnq=&iviLYNX_ZYshZ=&Xvnn6dWdiiWc_=&W2UjEnZ_mbiqU=&oh8gS2Ubbrasp=&tReCArXeZdcgb=&SX8e6ZZcikdVm=&iEfSPtUWlbYci=&4TrLVNWomlZqZ=&AZKW9xZspehrV=&ydF6A8Wanl_od=&oyQCgEUcjmloh=&mJhespZgX_qXl=&uwifTOZggXWWr=&prU6m_WWecknp=&RsJNQAVYdmUlr=&tvhT_FZgkbesa=&XBuyWpWfgfjqV=&GH3NnZZpZa_ii=&Y6l_dXVVXYsdp=&W7TXprUpnfejX=&yzfRsIXYfeVjq=&W_E6jqUYppqYf=&fpeA6sXgdoXqp=&YrPJFIZmfZVrs=&qnVR5QWWpmUZq=&xJLwa8Zhbqpfa=&exrWZxUUZboYb=&C52sOXWipZson=&eZZKTPUWmsgeb=&dfNirtYhnXdVd=&6HsjhjUcUUpUX=&kXDusSUZYfsqh=&dj6d57XYfVjbY=&gUy2PeYdWXggb=&GKeYwBZZrl_sk=&tTYDjMYiXmWqg=&Xr7mapXqXiXZe=&I7DlFvZfnebqr=&ABekutXUsbqrm=&DCIaSmUmZmkVa=&nPhTUoZVleVpq=&SYlVItWsbdZ_X=&3qTo7jVbYfarp=&L4WDjzUbrjYbm=&j2Rb6gVddV_sW=&umcruqWoXXqVZ=&IuvwePZjdnWmb=&Cz3OREVW_cXcp=&6RTwlOZXfnYZc=&XB9L7cZjgYZoZ=&dxPMmLZ_WXehs=&VI8umDWoldcq_=&Xj8mwJZehhjbW=&k4D2guZnifUgb=&WygJqkXkmsWni=&GDHc7fZYsfrlm=&ToudKHZbnZlpY=&cVB3vyWgYcsfn=&hmLyNIZp__gVl=&fil7cZWcUfYad=&nIxIX8UXsacpd=&57YWGGZ_emeln=&eBEWieXrpWfmm=&Wof8deXoZaoZn=&EzVczyXYebUqU=&6QEGvQYpmifgf=&nF_M63WkXlpcX=&TsfqnLWWdqZj_=&prYYoTYpfjelc=&SOZ3E8WZZgllr=&uzuXKUVWkdone=&LPtS2FWqlkrnf=&f5BmsMYkdcckg=&5W7WsJZpaa_Wa=&ohqyQEZocsg_l=&DuZiZTZrYZios=&ntgPtrZleXcXa=&ICEFrjYYfcsaX=&dn3aHUYiUhfok=&bH_2R6Ypklebl=&adderzVrWnhfW=&EN96G4Vee_slo=&YZBO2sYUepWkd=&XVlk2GWocccno=&WQeIPfVXrplnp=&IRwhBpVZsceVg=&JB24nxXrlZagl=&k2UDzrWUVfm_h=&kdc5gjVgosliZ=&5G7miUUYkWqbo=&mQXSuzVUbqspi=&twPoNrVeVgml_=&M9qYlnWkYnUjn=&I5yrcDUlXnWbX=&R3QI7tVWfe_hY=&PvAFhxZssWVok=&SHqzOMVVdWojd=&Zebw4RYqoVUsU=&v9V4nsZknYlrb=&iDzDTrVWjscim=&cTISFKWZscblW=&mpJsTAZcUrkcq=&W7ahEDYdUkXnW=&CqjTmwXpqseYj=&ixTS7rVZndVZa=&wCVfYKXWZjoZb=&L3aihOWrUhmWh=&9lmwLVXVsclbe=&BVFSb4Ynsclhn=&aWibVeW_hWZeZ=&aOtQGxWfUWZXe=&T2imYFZWrnhe_=&teTZl2Um_VXao=&dEGfdlZsp_jll=&CZSfRLXmhrgUk=&HC7qvnYhoeoVs=&BxrKySUgXgi_Z=&IK3BvFZmXldge=&FqWc9IWfhZiUn=&wV_gkdVcmUisY=&mVUCvVZ_ZeYdl=&K87aOHXkcYihr=&ioZyjnYXfqfkr=&FhhhuVZagpmff=&tTklQyYgUnsUl=&9EmizGWrcVkVh=&3v6qnGUYmddjr=&3cIplyVnaXlVW=&LIF5mTVimYogd=&vNPjMyZlpfrbp=&PetHqDU_ZUUlr=&CzHzhxWgpqcef=&tNVV_AYgcc_sX=&n_8OvJUphYcqp=&qAWqWpVjhmobi=&EXhre8WWXpWZe=&ouqyDgWilmdWq=&gwKiapYZsfmXV=&xdBLWJXcjZamj=&r8oOJYZUhhdci=&nbofbUV_geeqk=&GiOMIVYfgremg=&MRqoNxUiUkhZc=&wM3ztuYcmoXiU=&C7kHKUYaVejbd=&4YeUdyYYiUkZ_=&LggTIhVrclWkZ=&9Gds2hWiihcid=&jqWUZ3Zhh_spZ=&9YYHz7XUeZYZY=&ZS7839Vsf_Xrj=&A7NdW5Ygsfsqc=&uMUGXfYlfgkkf=&xox_n7VYlUlrs=&gXBseKUqXciff=&lHehPHWfdacke=&PlD4pAXZcX_Zi=&imf7xhZsipqgU=&__MtoQYXnqjhc=&c7VvzQXrWWgsk=&LK_y5aUWYesWq=&yZBXAdYUWmViY=&O5AQH8ZclUmpU=&vJE6PYWmmsbac=&xqI_h_Xijenjh=&A4L3jNXraYimn=&2BPHeGXgZahUg=&c47zPaYgbriXl=&qWPvcuYphsgna=&XqG68OUklijpr=&E7eOBkZdo_Yii=&3okWjRUaVWhp_=&QpevSlXlladZb=&ExzL7OWlVWgoU=&2yt39yVoemrkZ=&hujGBfWVZqkob=&XK2PavZbqeene=&O5tniWZ_iapaV=&gm637TWpfrWrZ=&BNWsyhVq_Vjjc=&EoZjH2XgeUqkW=&mYmYzFVYZhmac=&H8WbzzXpoVciZ=&EVFtsBUqZ_mnj=&iNI5K4UeZapfa=&QWEqWhZporWnm=&z2sWBaZlihZlX=&u5LCDXUXXg_Zr=&ThQVAOWnjVWWd=&ELgZebZr_saYU=&L98TNJVqooXUW=&xHqVrtUUXUrjf=&DypCYsWlrlsaY=&QDatoHXeVjlao=&l8e4gJWapXrVn=&PqM6TIVhUqVpa=&9T3a5vWUh_lUb=&HYLjOdVs_kokc=&qUwfbCWehYbZe=&ykquJ3YkjnhZa=&lbKfnPUliZ_ka=&4qBd97YZklmgs=&mm6qTUXX_VbWb=&eiPfdHWpobVkY=&4k3VovVabaWes=&TZtPsFZZZg_da=&PIFfbtVZr_ijW=&cIsZdxZVZg_ns=&ENf3IkWfgqpfa=&aUfizzZsjgUhZ=&RHSkhOWsrabia=&xWEJNhVdjhgda=&BRWDGOZrZj_rZ=&GLUp4QUfmsdcm=&Qmafg6XnlXcir=&AD_yxtYhpafcp=&6hYFX_Vhdnsgp=&ysryNSZUgmqfV=&eDCRXcVjhfs_q=&kYBXKuZoi_aqc=&PnP2H_WdnXcZ_=&SG8EdHYWUfXYo=&aekVi4ZreZrfU=&YgVyFnZjZgqml=&EP64YfZmbZqmW=&lTh9rWWa_bUWg=&wScfseYlgrjVU=&pWxSSSUirpVrj=&GTpkaXZVblfUn=&dcx3BKWoX_Ymp=&LZCBLPYacXclq=&7LXpzRVgshoWm=&Fg2ITKXbocrrg=&7KBXDEWri__ne=&sucNaXVahrXXs=&9PbkjnVUbil_W=&_mJMnRWkmb_ha=&R8NNzwUXnYlYX=&vU9gZsZcYYlif=&LNzYNUZfUYVlh=&ANfgPMXiaYsXs=&juRBM4Usplqns=&Ukru4sXb_ddYV=&Sn_noDUerrpWp=&knnnA2YkYjlbg=&qy2T99WjVoVga=&HMqGVEUoUclaa=&4U3yIEWYfioXk=&3Jg9EXZeXkqbe=&UpFjN_Xaejngq=&uC5wBYUe_geYm=&V5PoF9UVgajZV=&aznZnUXhgUYfq=&lsdVB2UYilVcW=&qxogHRZeabdjU=&BWTJ9GWZkanpn=&gRqNuXXofpiZW=&d2NJHUUVXVebm=&u7lBJjWehnZlX=&QxpA66WVchkYd=&ptQq39VsXppXa=&vAEQAOYUdZnad=&m4cEphVZbVXql=&oOMrdoWfmssVb=&ZRsvaXZgqh_pa=&Z75JTLWUbqhgp=&5tOdGTVrprms_=&IJX9SjYh_U_kd=&4nLG3xYajqeUs=&Ep_guzVpaVeZV=&UEPbFPWgWVknX=&4fkhtuUsbcjXW=&WOWcnVXgbbpaf=&qywUWtZfnZZmh=&YsjiLtWgrmqqf=&WIJTSyZrsfpja=&smyjr8Ulagh__=&lcqlwGXgVjUgq=&3lBt9AXUZWmke=&lmdc55ZakrrVl=&rZDvJqZZhblen=&l6iyTlWphmc_f=&SNfg3qZjUjjap=&2wVX88Wgskjba=&uYAHEAVepVfbr=&FtnARSYjhfqqk=&BjyZ7VUmiaUeb=&tdaFptWsjsqjq=&PIkmyNZeoenif=&pr9PJ6Xqr__ag=&_pskWNYfnrprm=&N7hJRbUmmsdfU=&jORyPwYescmc_=&FdxcNOZcic_ai=&tOimCGXadqVnk=&qbtA8VXpXYXcZ=&edZ3RtZiflpsl=&cmeTYlZZYWaeh=&LUx7NTYgbohni=&7aGXbxYjmjsdj=&zeyinsUsjaZpe=&EimLC3YmgXqop=&KcpeWZWlhofii=&F_4v4YXaYjrbd=&6xMcF2YXXVdbY=&A9qw8nVXgfgZb=&s6szlRYh_llga=&geef75WUYlXsc=&bqFdhQYablmqf=&P3ObHMVnWWibf=&MIx2iYW_daXmZ=&lbMMW4WgUXblj=&SGUaY3UjsckjX=&LjflmUYXpZc_k=&MnFwXMVfhrgWk=&ir92bSVbZUUYX=&NB3N2TZXipWaZ=&gTuFngUVmgsha=&_Qbp6cWnjhkgX=&hkHkPkUUscYUg=&9UFsOrXdlk__q=&pzN3hGXilhnjq=&9ZFTqyXUhhZVj=&K3dBBaXcVaohn=&j76KfMUjaZUVr=&zcc3YGWqrnU_a=&ANIwGsUkYgeWW=&yNOgCLY_V_pfU=&azsoXzWfioged=&vA3NfsZbiipej=&6DGaXpVWkghfU=&tIrXmmYffWbfW=&CGna8xXVVjcYY=&Zj7jB6WgdfXfq=&_Lcw_YXmncgVn=&C2w9dGWoscgap=&qIFRLbXVjonqZ=&nQ4UmKUVpdpXY=&KVLfNRVrhngYW=&BCXYEYZglonZl=&mwTiksYsrVgWo=&K2GKRvVYXoYgq=&4vv9KqWhbfVcg=&wW7mYFVsprUcj=&MgvdF7Z_Ui_r_=&o47JqoXlrfqqX=&oyj7D9Uk__Zce=&yHGIIdZeWeajh=&FAprpxZmUlZVe=&FgtWjDZYlpndq=&D4BcVUXlbYrbe=&RHcMPVYoXrXWo=&SjHOdeZiocgpe=&zu5X7VUfhpWmf=&NLEzPPWiagoka=&vwM4K7ZjY_kXq=&y5uk3CXXmmsbk=&KVl6oDUmjmUis=&A4YlUzUnijXcj=&ScehlyYahZfq_=&9tVMMpXcncfqZ=&DBOqujYhqXdno=&sQc74TUUrWqff=&9ZKk7pUVnqmVa=&depVEtVsVslpn=&gakdjBUjWiafq=&8HDousWsUjbWY=&mn5hLaWhpdmZU=&c5PYJUZpVshWb=&HarwagUWqq_op=&6pQHOOWholmam=&LUtSbTYkWaVqk=&hVMmGDYYpZWsk=&YcZj9KUVspirm=&Ped_P7XrVrVar=&WP6ZGcXqUhqWe=&7QBif9VoqafgX=&ePhRxzWqhaYkV=&oJDR_EVpjbpXc=&x_hISBUqofhWs=&QI_yVaVceUZic=&EQBJuDXkrimic=&LBaxLrYYeVsbm=&_bvVfDUYhZgis=&E9u4MBXpfaaXl=&DyLMQnXViYm_m=&jdZW7vYlmYqhf=&Vy4zwuUYafXas=&cbBGvIWkqhqVa=&6SgeYXWblXsaY=&SnnHNqWbaqddm=&aFc3AaUfsbm_a=&l35ewMVfkdYZq=&yyDZU5VdnUZlW=&iJbTAXVacZnXp=&rxid4fYsjUmZ_=&CVVUBaZcWgZgq=&i95uFOZsqilVn=&khW_OuWicjkfY=&nFEHqSVbjrWoc=&u7EWp_XUdVYqd=&tH8ac8WUffVdX=&4qhtMHYqXVoch=&etWhA8ZWnZjhX=&HEWw6JVYdYUdr=&HOowlYWs_XrXq=&9VAYR7WsesYpU=&v8ged6UfXcmpk=&RsrXHUWesrVgl=&bCuXoxWfYWi_j=&4UK7jbWnliZZs=&aZzoiQVUplcZb=&clfSplZfacfeY=&3mQwu5UgcrnVc=&yTpdSnVeqcdrs=&Aw9XJkVdlVpWo=&qEzjyWUUsjsnn=&FDJr46XfbdZkc=&HUyNBLVidajlX=&jR2cdYZVkaaWp=&AVH22WYYbhiUp=&UmYbfqUnqolYj=&zYJq7EXnXepde=&inAIpcVUsacbf=&9DPZSSWglrpnc=&6_sC2SVWoli_h=&hqgeH8YXcqeYr=&k2QjRlUaUq_fc=&GVyzcKWijnr_U=&3FpDkMYlkoXfh=&jfbdLfZmejqsl=&rdU58NWgamUqZ=&TD3Ip9VWrYXaZ=&QvPscBWZgiXVd=&Hnr4g3Uq_YsYj=&4ajm_NZflYsVU=&XuqZsZWscZpfp=&vCdP8kWhjjrdi=&NFGeLhZkfYbao=&sPRXbqYricdkf=&vZ54fpZshnipm=&APw_bZXg_XYZr=&5Sj4saXfqebXh=&K8fhpyXilYmeh=&zA5ueTZjgYdcq=&Aju8wdZapggeo=&h4GNObZeoYkak=&T4kMIRXjbfY_a=&mQGA7IZYmolWV=&yqQw6iZinirsV=&PKxNJFWmUUYrV=&2hUr4nZhsqciY=&ATJbskUqYigsU=&7lsDNqWjodmig=&jX3G9eZUdeanq=&4HcpfWVrmdcqm=&pHGSQNV_enUia=&blZxa3Wlee_Wa=&zbBKfoZiYWgXr=&koJxEgWdegWkq=&eXIYNkZbphnjV=&Wb_FhlXfsicUf=&lfC9fGYbegZkg=&4sbl_OXqmnabn=&YWiDDbVUWspWs=&oSy9MkZgedUdW=&YcT44IXfrqhZX=&lG7ZY6XjmgfWr=&l2VMglXhigrqi=&p98T45WXkbh_o=&ztUr7nYmVhZrf=&JQCHjNXiZikji=&n4NfsLXZpkrVr=&fZHqHZUqVgWkj=&w2pH94WdfsqXi=&Pp7oxIYbfcqqi=&q5g5QZZYamWjs=&tPs9R2VdllVVj=&PcCKX2WiYZZfn=&rptRBKY_jcVYa=&hYO4eFXqinUnh=&nhIvHwUqoZqag=&I8cdRLXrmpUam=&9atmiEWggckld=&StQKNOZbcfm_s=&YZbPnTUbsndUh=&WSWQXyVhlqXo_=&dEMiaUYhfqqVj=&tFE29gUWpZhcn=&KZITp3Ubpsafl=&i__6CkZhanbgo=&lgCmeEXZdrksW=&rude7tXZdircs=&xRZE9kYihglZn=&4ySLRFZZrddVp=&qkp5yCVmjlarm=&ZboDpBYhemgpi=&LOo8O9XnWXZer=&neJh6uVbehUqY=&O6t_JKZolXcVa=&v4xQ5qXblomXe=&YiTIo6ZXpWfin=&Wl6eROVUsdqga=&eES9qUZZrVfbd=&nX7ZZ4XUdhgoj=&AfahlqUmeicVZ=&HXAzFtVa__rdn=&Fm36JWUUdcbdr=&jBOXqIZaniYpl=&ABwFq9Xd_eYZe=&oNFI27WXrV_kr=&JpSSiMUUmVoom=&C5ZmJDUXkZ_dp=&wjSJK7UkdlaXe=&5gDYjuYsbkgem=&FX46N2XheWpmq=&T_fFeUXUhokhV=&zex8oKUrbhqYl=&QukfyqVm_h_Wi=&ulsLWOXgiqfeX=&gctq4GX_Vmhkg=&aHW42_Wngpmjh=&Qcw5mfZ__jbVg=&TfjEhhWpYkpmo=&jYH6YYVjgqXUr=&VEiPvZVoUr_mX=&Qe3m8wYgmbskb=&dtH4JtXkanVXb=&6IbLOyYjhVWjs=&FNQrrMZbcVVVY=&tRcM2VVqjbmVb=&T79vsaZpiZmWY=&GRG228WiWUrZn=&Zp4mDPWfcmgqX=&bAP5KWXhUngjV=&JGDagPWhdYr_p=&rclAw7Wndcmaj=&prOtTtXcZkglb=&W4FYfgXcqVZkl=&Nx2G3mYjp_cfV=&lZf3TpWXZfXms=&_jOS4UVqbpnfk=&OB9rq9Xhmfr_d=&jWLjGeUWpebrj=&9Cz4duXirhfiY=&kSPhXNV_eh_ol=&NJt_cUYomWj_h=&uUBuSJUlblblo=&FVKpm7Udenjfm=&St5rlSUrZYjn_=&Cy_bllXYUndlU=&CdnL6qXoUbqkr=&r_j_hSWkllojV=&_3wSZUXlcUsbZ=&OB5bEgZhgdipn=&p57i7pWV_mrpU=&VAkRW9XlVoWae=&aUmGjfYmsmlag=&OHzILGXWojffW=&rJXySzZlnfjXr=&vxkVBXZZsaYhZ=&sWjHNpUenprUs=&ZTG8BxXsbdkYf=&u5kke2UhZsUZX=&VfgBXzVcZerYf=&5iRBTHXlbqdXi=&B5UBqcXefcUVW=&SOH7cWZeosjsq=&h5bJwnZlqjjcj=&LvxZZPVXnqoUg=&hgj7mfZnorqej=&NIiuH2V_prs_b=&XmAl9ZZlcfXrj=&sWDjjwXbnadkU=&x_UDQvZZnlaYk=&cCJt_bUaUsXf_=&eAIzdRXecgYfs=&_OP73EWUdiapU=&kTnUyOVsgqgss=&jSFhBMUnnoqXq=&aKWHIwVjadVsW=&Kc5WmoYlaXXqY=&K9X5QGXmWpjlk=&XPkFTlYgsiVgZ=&cTAVSHYdkrl_Z=&Tv49YVYidWhZs=&wBIRA5UiiYVbr=&CsocLGZaZVYps=&LzGaFrXclajim=&UaCyjDVfkbsWa=&_nET2aWWVdqko=&GkfijXYZfibgX=&GzCiILXhkXUsq=&JDIdkpWkYgjdp=&F5zVKcVsXbYVa=&Ia5YjIUlZrddd=&fYBmMiWhZlmbl=&Fs462qWoj_gq_=&hlFMLAZcUUgok=&OUKnVXWoWeqWq=&KxoItbZmklkog=&CLo3tjXdZih_o=&rR8jMNUsrYbrb=&IjKyXOWhcjpW_=&6vtyoMWf_ricY=&exPUGGWlnWZVl=&uVuxX_Zkgrgga=&rCyWbZYgiXbok=&accO3XVackgng=&8szbQlYpc_ZdU=&LDngcPYeUklcq=&qgqoREVhrmX_U=&cEyUswZhZiiUe=&pdUEXWYfqgacb=&6B6EgoWrbgebZ=&X3slfvWWYic_j=&fVJzdaWamholY=&Hz3m7pUgnc_cj=&GpPdYGUXhreUb=&lXzc99YqXcsji=&TmIFkQZpmXkVb=&RvgSCaXVmkdss=&zYHMm8Vcdrkf_=&hl5ZF9VgdncVd=&H6tuaJXskiiqs=&cvlMczYdqkfko=&8cwlTQYakhoiV=&FPEdBmVVdsi_s=&XMPdMXVaaa_oi=&5ArieKUbZrVeW=&7efJb_VfnmpqY=&fAjuP2Yfifjeg=&IcCXDzUYjmn_W=&XvkQTXWWdejjc=&tvPJmmXdnk_ee=&8NLoC2ZaZZ_dn=&fE_BsTXsYoqli=&EcoPXFVekk_ne=&dwSvMOWmhnjbf=&HnsV_TVrnlj_g=&pIAbYyViYmUrX=&7TTM5eZZhakao=&HbXNKLYeUejZW=&rbCFZGYmmWbsi=&5gNnFSXsYXgjV=&8LlEPdXsbocaa=&7NOFjRYXqaeVp=&y_ZNHiUohcsqh=&vpjaElWhnUVrf=&PC9uCZZjmbfgf=&mILySqWcmfsWj=&bemVrVUgqXqm_=&f69v_3XdsblXb=&QZ2UU5Xhkkkfq=&vLGBOIYkardhl=&Vy7pw7Yln_dcY=&uVEPIJW_VUebk=&nAfOJSUmbdYjj=&OgNHJVVfhpjpV=&tCEn_vXirVjaU=&UGxVfvXbVgeeU=&ltASt8YUWqenW=&VJYrvAZsadprp=&uDLqQQYlqXpWo=&bbY9yAYm_fYnr=&P5OIUAWcdbped=&bFy2ZwYfXUaYV=&FwdF4CXnsZmnZ=&_gkCz7Z_XrXec=&QNQSiZVqUYcdj=&F8VSydU_fmkic=&2LXLZ2YZbnWmc=&FrrwCBXjYlrXU=&o44ab3Wrissds=&MO74JtZmidVql=&7ftbN_YVZZnaX=&SVRBebUUW__cV=&KpYGzwUjqflW_=&HkfffFWU_Vmjo=&alw6hlWWlZape=&FVMhX7XffUsbp=&J57JsxVslYghh=&YaGHFIYXhmmda=&pF6OVSZaeaajr=&eqweBEWgoVpjh=&9xSNsuVjlqlUX=&lrfj2FYihqcsa=&CuFrVcWWsapWZ=&VFXksMW_oYjed=&2qXfmqVmngYfh=&wIadTBWcqfeaZ=&rQyGYzUXoWXWr=&PFwSHVUrsWqnX=&pkTcNiZji_WiW=&Mfsdo9VehWYVi=&Dc57OrZmjpWss=&iiO3haXZpdqrn=&LiuGFyWYknjh_=&43AN3NWYmjrlZ=&EJd2jVZjgdVrb=&nBaZUEYYYnVWm=&UY9nW2UprdY_a=&VEDKM8ZpVosUl=&SUPLZDUr_flnh=&nA3bdUXsjqeis=&jrfVv8VUcq_ce=&DbCjxbUmmphfb=&leKtTzXdfjVea=&WQW9dkUYjhpcr=&LJRsJfZdqnoUb=&wBZAVgYrYegXs=&xlSckaXdqW_kr=&3HKBXlXljreiZ=&Gr_SsIWonsrVp=&KXVlbNYW_nlkU=&YmzBgOYoqhgdh=&cpCs6WYibjdWc=&vhtdq7ZccsUfl=&RlIuCVVrUlYbo=&jsVwMrZnrmYml=&Z7IyyDXhkedog=&c33hBbUpliYec=&BSO3pdXpnobhb=&X9oEYgVrmdsfe=&vmuKaPVnbfigp=&8M4HjAXXimjfZ=&BhppnwZqXaesW=&fshJoJYfjXWfn=&XhTo37UdfjgVk=&YUS565XglsVUl=&MbwTsEUqrmebr=&xaxlhUWj_Zi_h=&mGdcVHWbqjeei=&VJbZHaWkUgga_=&Q3HvmcU_mrXmd=&HoFjNxXaZVYoj=&hDkzwYVWkrqki=&Wp5UPdWmrU_rs=&mxZ3U2Ulrirkb=&Q9TCQhXkUfqUp=&eTYs7sZnjash_=&_jvlg4XbfYZkV=&sYDUHtWqVZqU_=&9nwyo2ZkocsrX=&jAr96ZXYUUbgb=&ZxNl4IZr_ffos=&wQbg3VXsldsjf=&XbGgkLWehscVq=&cgHaJrYi_qajj=&QtTdGEWagsjja=&7CM74DWsbnjki=&4cumUtZYpXdkn=&5HICO_Wrjeomk=&dmOIjDXrUXZsm=&EshsSBUY_l_Ui=&mOL7lhW_jdWbp=&89O4eSVVmhiWW=&YnWIJDYaodjsa=&5zbjc2YsaijkY=&KbLjgUWfdock_=&eQvi7uZgngW_e=&VAB6TfXrbdgdd=&gcLrcjWmXkndb=&9s2xkeXgbhppi=&zsRhc4VkaifdU=&SHizmEXgXaZbX=&K_NLsnYmdYWqj=&RGPZsAYdUlVsf=&ILtCdkXrafcXg=&AEwlYPYej_lih=&RwURMfZnjsf_k=&t6W7Q4ZXZpojn=&KesAb4UnYVacl=&wcBPsCW_rbqnY=&KJJQy_XnZr_nc=&Vw2tS2Yq_kqiX=&diXyvrV_piejc=&AIE6nXUWn_rhf=&7RMxLxUinjVoU=&K7b6eyZmjnsoa=&4ZopDxZkqXfbi=&SD_fOjUgciXkX=&udcGKAX_rYjfm=&HMe4aLZZoXli_=&R22h9GXphUedb=&oeTkDQUppsiV_=&qBlJXKXig_bmp=&gkqpEGVbrrnVs=&UIUswaYopXZke=&bIw4gxUneYZmo=&MCPWeIWWemgie=&YbmsVGVXldUih=&GIwwLdZejUb_g=&lBp8psUiYjXem=&5Mcpj9ZkUgkY_=&QyPwzCXrehhkr=&5opIv2XadUgc_=&6wx7XXUVd_fUe=&ltYhkSUaolcsr=&_eZg7gUX_nbkX=&4GRW4KYpUjWki=&p5XrqyVqfUlba=&qFzy7jZjlcmmh=&MVlNguUkbccX_=&3_Vb9ZVskVlWf=&ZkwI3wUamYW_a=&tgppziVqgVqqf=&9AInEKYjcYXrn=&S7VFOcZbkefmk=&6unjZrWcionXi=&XTSsHLXmocneZ=&mauRpsWipbZia=&xkXQZCZVfbhji=&SACv5rZVbaieo=&pa7JuHUUhbkWW=&Kt8pcdUgpZYih=&Qa57BXVWnnh_Z=&LWmIdUYidjpnf=&HDxLuiUZohqcn=&MfY7tPZflposa=&EzQ5tfXWlesgq=&hjvn9MYbXXWsm=&6iFGxhZpinVad=&4r3n5hWZdgiWZ=&42tZwtWjoYaaX=&zakZFzUeXbeWp=&llIBnHWsqjUjW=&YZvKi4Uerfran=&64WxmsZZosnYn=&hAWFpWWXWngVp=&3UCIjhWjmb_js=&xzJP9OYdrbioY=&sSYzgAYoUkmoc=&SBQMFQWgojrgp=&KoNFRgUqXigUf=&wdBKjNYkcngXb=&OHdtulXX_c_po=&EceKwrUcfXclb=&dAAFrAXdlfWke=&PJxr2XYWslUaW=&kHoIcWZdbnmiW=&fAS5daXfklYdn=&XvizKSXbganqX=&p8GODGYfjYsbX=&K9vEB_YprrsVn=&Fr89qRWeenVfo=&4hKqVpWlelmli=&34kgXMZUrWsXq=&XHQtAFYWhehch=&SFPJtKXZarpXY=&CGyMU2YcbbmjV=&kyg7J8Wijel_f=&HTdvtEVbqadhi=&kRFS3kXsgfnUg=&8yY3fFZcab_nn=&Vveq2vXjoYWiX=&69lXf9YVUpafY=&szrCV3VbjXenr=&TzujJxUnhrfff=&YkalxiZcnigmr=&ZS2QrOZWY_hlV=&7xhzbcZhipimg=&ay6eKcWYhpeXV=&GMccwGWqkZVps=&WrnG96XcVbaab=&OszwGhYhdZbqp=&Hu26NvWnmrepZ=&rppZ6LUiZneVq=&3hcsnUX_goiVb=&b7bfFqZhpeghb=&zXhOPjVfVZclV=&tEZpxvUcieqZr=&vxDzx4Xfba_jf=&RSj8yNZdlihfc=&knEkfAZiXZslh=&fkANEkYlmohlk=&kDGQOHWjfkfbj=&5AN8onXneeoka=&O3xkkqYmndmnb=&BhNrikYXoYhho=&6TKOsSXdgpick=&mLN5nCZj_lsji=&PiMmCkZdsjasn=&rzi4j6Ykfkpll=&242zVSXcbhXWq=&vuYKeIYfkk_da=&cHk5ZWZpVkppq=&U_5dokYWnikZW=&2p8xqAYnlXehl=&oHfgSwVbladbW=&nQbZyxV_fVqYU=&FmwHVnYnYanUn=&69yS7MUk_sYa_=&8Dvf4HVh_nmnl=&SdigePZmrimpa=&SDiVu_UYdnZWm=&zLEFrIVfjaplg=&AH3TTkZspjigj=&eLI6MzVnhisjk=&BgFjQIYZormoa=&oA_58pXkfcddj=&qB7SNfYUeorre=&hxezdMUXmnoUr=&cCQfSqVXlanpf=&WhddmXVZfoUZh=&3eT7z6Vp_fmVU=&K5DWZoXXldddd=&ga7yawZWlbUWa=&RDTixJYU_kWUY=&uKN63oUfZakVW=&hyJ5gqUrbjiYU=&4CzkdjVqkbZVn=&vVyd94WUUnXed=&DH2dKvWcUbaWj=&2HnChgUmZVnak=&GDuXVLYlsoXip=&mUBGDtZfdflUn=&mrID9jWallVpo=&S6iL_KYXgndcq=&_2T6MzVjjkUhd=&y9RZSFVjrdgnb=&aNE685Wfmreae=&4ftmq6WanbhXX=&5WGuoFZqaVjWZ=&afWmyHWb_ooZj=&y5uzMwZiqbcik=&rjtboYU_UYfcU=&Sd6x6_XlXdaeZ=&vGqX2eZdpgomd=&nIVPgEUlohleV=&R4hhyLVZYfleY=&BdpPJ8VahhrrU=&6ozuN8XaXYpUg=&caF5I6ZpmqqVs=&lGniPvXanZkqq=&dZwceSUflpjUj=&9WI62mYhWride=&8FSoxxUpbdnWj=&D66ds4VhaYdab=&yuCErxU_cnrjk=&rANzWfZbeXZsX=&U3SbByYpcVeVY=&IsOvEnVYWpcr_=&CWsoqnYcfoffZ=&bHUiMjZdqllfp=&xV5JNWWhneshs=&melYX_UUakglU=&kuiFYJUsborcn=&b5YmXkXnfccko=&klOLdeWhcdUVl=&UjTMChUhsaYVk=&kUHZ2vUUrgYWm=&JNv4OdYkibdia=&apwAAQVklbYUj=&59USgxXkemmd_=&oYwA7KVXociZi=&N7TTGpYfmcmgi=&T8B774UaWsijY=&DyIulBWVajV_b=&8xoZMcYYsbUeZ=&VsMEVuVkeqnXY=&_SUn_IXoldkrg=&OXn573WbWp_Ze=&eqJIpbYrZ_eZj=&qTzgbfXYqfmZq=&MeSPT3UfblWdV=&qMlazJUqr_hZV=&xggzI3XZWsahk=&AJTYYSZXhbVUY=&gHBFsYXsUi_nc=&b2UP_OZlZg_Uj=&A7k535XmqVbZn=&lCZgSNYZUfUmc=&mpDPNgZZgUYpg=&RlshjPZqjsrgd=&X8niuSWkbnphk=&oYv9kPVc_cgYo=&yIF6KJVVZmWWl=&YGOjorUknXqqf=&YHFgqRZVpshbd=&s6BVmgXbVjpXq=&QLEMKwXjpYsXi=&9rp_abWmjnmo_=&LYNBk6ZdjrYcb=&9G_VFsUame_Zk=&qA3Jn5Ugjplnb=&favoW8VYsZYZZ=&XRF_UgYosZUnU=&kGxs4cUslZZ_q=&GYIpNKUaerpjc=&97ir3DUeVceeo=&fGk8NwWihrWWm=&zgAyTFXjnmZrZ=&xMPypOXrglYjg=&5Ac5L3XYhr_jU=&pFMMYdYponsWU=&tqvcMcWcbXeqh=&qsIQ_JVdrYsbs=&C7QhnfVffrfgZ=&e7ZgiNYoYWZjb=&dvSzo2YZsedgl=&eITTV5VX_Ymam=&ZMauFZWjo_amd=&mFZZc4WfVbsdp=&fZ36vAZnhmcas=&O7WsFWVsgmXpj=&26xo43Ufccqrf=&3wCF2vUkmjk_l=&OIR2W3Wkpmhsl=&eu2X_7YWVksks=&olFkIOUZWmnYh=&SICIqlWWZqmkf=&chUVO4ZcfqdaV=&yfsmUSVZceZlW=&WwwRPEWVirqfg=&V5MjQWYlaUXbm=&OmHuiNYljkVqY=&tRW6gcVkWcUYX=&58JRdHVmWfZcX=&wuQNkiVidd_oV=&RoCypBUZ_jYsi=&ChIprmXbrledd=&dKKtkxWZabamg=&LgYU3UZVcindk=&iVnvrMWobqsqo=&XxyIeDUhhoZmV=&9YUmlZWi_ccZm=&Ie8CRdVXVbgoi=&6Px4uzWZoshcW=&hqD3quWVUeb_b=&2cBf5XUmrkabd=&cjdwhJWZbjWmW=&yNuM2CZ_Wirqn=&8JaWvpZrUYddX=&7h5xFFZnWgVmi=&CZv2m4Ukbikfl=&WC27dHUaaYaUg=&kE_eqUWdcpYqp=&HU6ZpbVakrpVU=&buElqCUsmpmke=&iP_hiYZmegXpg=&X95aqrZXckXcY=&BwPhCoZhqYsZp=&uE8Bm8Vlnfkgi=&byysn6ZjYZfXV=&LLw6dYYlnUjdb=&ar5golXsoh_Ud=&cDeQaYZso_XWg=&FMJyxMU_bYgrq=&j_BtgpZX_nfrc=&F4rALfVgreUss=&YVnYvUWrUqbYo=&EO8Iu5X_efqeq=&XMYcnpUlicZeW=&5jQuuNUfXXral=&A8ltInZkopZWm=&QNAwLPUsUYlbi=&mPzaIDWbYdcse=&4G3U27VVpZrbn=&EnwfFjUlkpgnY=&h3jpSxZciWZUb=&hJ8mHYVgsUarf=&EJuWPxVZjWdXn=&FWsOISXnXgehY=&YF8umPYqhdapj=&mv_K_2Wsklanl=&GsQFtjUjUZrkd=&uylT7mZfjYWWW=&n_ZIdfZmjqjbn=&FvkQRKXWWdlV_=&6zKmVtVkrogdm=&hN6itVYdVsZps=&sbMAwqUocglmV=&3AEdNUZglm_if=&YYojOjXlpXUaX=&IDfaLRWsbclZa=&y6xrNAVljjrgo=&ZE5EOsYVgahnV=&C2Zaz7ZVYmqUa=&EN9VdRXqljcoq=&cawlJTW_doVXl=&_xqE4VZgZWeXf=&eWmIXPXYdqsVq=&pva_mkVhfoslp=&urZkWqXdrnfbf=&RjenU4ZqrfWiW=&5HEiOcZXUYoWo=&FzY_ZiXrdUamZ=&WXcf4JUbjoqcX=&K44S4wWkUd_cl=&hjJCqcZjfXlb_=&JLryFhUegbcdq=&3UPqfmZa_ihfs=&TgcyysXanVsmh=&r_s8yiXksZqjo=&RRIpMQZleVhss=&Ebb6keZdcZZeq=&g_3rDJUoWbqep=&lXbRh5Wpfgeog=&rwvK7WXankonY=&MvJVUUXfnfdar=&A9nfCjWZd_lWZ=&dkPeoyZihcfim=&ay4qbFWqd_dcg=&uFuyRGYcibYbp=&bVvB_YVVXkarX=&JZ5kxeXnUddes=&FOGcY9Xrhkeja=&929mu3WspUddf=&nxzYjwUrVhVfo=&ZUVgkjUlWrnhq=&AexspvYkYiaoo=&38k7GuVhifhaa=&4aWypfZiUgWbk=&y3O3HTZkfmW_d=&tz6e2jVjhoVco=&bdptrYWkslYid=&wTpM4CWfslZWh=&c4MidBVmmqg_X=&9NJKDrZfcbZsb=&jsB2gwWpY_Wcn=&eKWdpdYrqVpiX=&sdVQ8fWkmYjdn=&KZiOSZVWaoYXd=&_VwIpnVoWraXl=&7sByNEZcWZkZ_=&BCRlNWZacmqpn=&TomPuaVqUsldU=&ApvFt4VUqUpUa=&cgKH6VYqnkiah=&nBv4vnZfoXpXa=&2xPI4lWfajYVf=&w2Z_ESYVaUsrX=&H4MnycZnclgjq=&aHdlQDWoWXmks=&wxHp7eXmdcksm=&lV7zcRXUlgWh_=&qHQOfOXliqiVa=&febYQhXgblqkZ=&8uohFHWqXkYkq=&AvsHPWWddVVcW=&r9Pe2jZVpjsZk=&Tk6EtbUnpknoc=&JYedZAWk_UrsZ=&P3xGrpXjki_ni=&TJDSOIZsbkXps=&MFRBRvYiVYlcq=&gYctvFZlragel=&xTKB5PXjfdeob=&DI79QXVbqoiXa=&yyzkF4Xlaiq_c=&B6tBdwUafmncW=&gcvUJTVWopVal=&hi9UeOYlfZejm=&u_EGazWVWWbfb=&wJbr4XUkZmmUr=&jUm4vaXrhqngs=&ADOGsWXXXdoYo=&SVOdKzXUXfkVW=&KOea_QVrnYlZa=&wBCxAwWnjdYbj=&Z4lFhCVrd_ahg=&_gg4yPZj_qVrd=&SjZqIlZXagVYr=&drg4NCVlpiVsV=&y4b2yiZgddiXq=&bpMJ6wZpiVYeU=&lnlVsjWVnsWeo=&oHfcV2VndanVi=&ERCm9eZb_cpoh=&CWmZQrVlbdliq=&9VvvD8XsYZnoh=&YJrIQRWj_cUbg=&rWPdTnXmfVYpi=&uH7ztWXmpbbog=&YJnEnmYgWXYmd=&VpBBRzYn_Wirr=&mUrQ2BVrgdnjf=&tqFoAtYsZjeWo=&pu7YhgZUrVmcU=&lbpACRZUjUsmp=&tOXPZFVj_WWjX=&wGGezlX_bZokU=&RpL_khZXikife=&CmNBRwUXnmWhp=&RDbH9IU_cgegr=&dbVcZjUeaUXcd=&gjBMFzXnfgprU=&oykqKdXcleknj=&MEt3fZVdXhWco=&DP_96DWmihreV=&hAhh6qZefgYrs=&iFXSdBYVd_inm=&MMbngPXcY_Yho=&C55GB4Ydlokre=&3l5__LXhaVX_V=&FJ6SbyYfXnkU_=&uhNgggWsYq_Vq=&D7d3PdUdcdiri=&FIhTicXq_Yfo_=&EEgdU2XXYibXZ=&4IwwcCYbcYZk_=&e_7yLwZdiemhb=&6ULYfXU_eZpls=&_H9tRvYhjVkgY=&CyirbxW_lha_q=&jmq4I3WalVaVs=&ZCFOqgXXlgUbj=&XtudAfYZssgim=&Lk6EzaWjemaZc=&ojgTc_VbhkXcX=&5Vj9qxXaeZcfr=&jQMhroWkikpWV=&n3zRBFYngYlWm=&Mub_LTYWVXegi=&9JTNzmVikXVgi=&RMzWwlWUbWodo=&kM6EsQZbcVkWp=&xXLxajWanrcke=&Ta7BTHYVkVhek=&jYVmXxXdjkWYo=&Z6w2uAVdpsqb_=&JNuuJNVkblVbm=&i5v48YXVjZWhd=&orRRzWUdkfosh=&9u8c2WYcp_kpd=&IsLwCoXlfqbWo=&xhsZCWZWXbijm=&exYrZSXnhdlrW=&9cL9tUWap_s_W=&UuDGvLXZkfagV=&GuNczzZkiUsls=&cBLCEzUXkWldl=&uNDkmtXXkbYVU=&PgSynqYcVrpWg=&vnMIJjVacrlZV=&MiMeZxYjrUl_s=&zCN8F3ZcgnWdW=&RqhK4SUsbreei=&2bbmX8WspVUpr=&GlwlajYmnXVaf=&NbYq4JWa_X_ii=&Qe5KTMZXoiopV=&xCeXYKVhjrWr_=&Nb9qiuYiamVaY=&6or9cjUldlgha=&7u2MMgZe_o_Zc=&KHpfsxZUkYmUc=&pQ582JXrhnVee=&hQqswpX_jsidi=&yhs_BjZpWdbig=&cLe3gRYmjkYph=&54zK9NXcpkgWU=&_TRkiSWerjrms=&Y3_2HdZgVofeh=&eB2dxxU_WbVW_=&rNc8KjXspfpVa=&nEUSvRZU_fblW=&fOTP9EZsgpWZp=&cDwChlVlmaqjn=&Y8bgy9Xhqaimb=&WXPCLzUmclVrY=&kE5CnFZorblUh=&tmL68BWimYoka=&zprqdmWgifdlm=&kRIVlGXqmUprl=&ttVE5aVmd_Yq_=&K8_XeFZhcsqbp=&kXwZBwYaZrjbW=&aFzGbSVWqk_le=&BjEc8LVbn_ajZ=&pwo9ceXYoUrac=&QTrAy8XdqUXkn=&rgxYeLW_nfkYe=&9de4nDU_sehca=&9jSQYoVrbgZY_=&UksrsIWhllcob=&jIGRWNVebfbVb=&4bI_TzUqgrVj_=&KWxrEnZkcUpqm=&8UzroqZsqjsiY=&bhmOctVXcbVhf=&SW9tD8YhXWZgh=&iSo4ugXnghemZ=&faRztFZnjZsUU=&vp6I_kZUmpXXq=&n565JKWaibail=&nuUrSmVfqgncs=&w3Z6n6YglVnrV=&J8ZphwW_V_W_f=&VCRXCNWofncpe=&Z4jB8gWm_dWgf=&3PeZn_ZWWbnqh=&nzHLqvYjjWfsZ=&UbsgfKYsdekXh=&AEYZOuViWerVj=&FoIZ3nXmbfosl=&zEWBXJWg__Yha=&8XVOCGYpnok_c=&RpznKVYUWkUcU=&aqrIVCZbYYefW=&ZKxTLdUrp_esY=&AmCfuzWYoZpVa=&N3b4l7ZgoWsjh=&VflgxOUUZXeVk=&86w5G6VXpnfcb=&9m_qd8Xgj_eWj=&WsmR6RUjhVlZh=&qO5o7DUUZjcWc=&dlI3ojYpialoY=&WKL48xWo_rmZn=&urVtxJUograVa=&OTWAaAWhYjhps=&LiHMIMYp_kWjV=&CCQoXMZicieYV=&SbmmI8Zhddlnh=&F8JBRdYYrogkW=&wZ_s5qXfXaVsa=&nbaP7DZpa_lUg=&7PUe7nY_fnrrh=&ORjcgQZdmpUqi=&okuv5TXmpo_gr=&UWpqwJUgapgWa=&uljkCKWqgYZam=&FpK43gX_kWc_p=&3hM8hAVngcYUc=&sO9LNPUWrnWgY=&sMfCnkUUpgkoi=&bfMvttYWUnWfm=&lt8nWFVsnabVk=&CShXNPYVWUjfs=&NEuolkZhrWerj=&9jCBzTYZplmZn=&9RDQdgXdfsene=&_NJso4YUconiZ=&eZwnQ6ZVZgihs=&QglsHnVqqoihU=&wbIKOXWhlbf_p=&iyVuCDVffYoig=&X49ZSkXl_ZskV=&EyouNBXjk_osr=&YdpixJZYVYVc_=&RwGkJjWqnfhYf=&YrkofkYYcXkfl=&4eXZxkVohgcaV=&65VnQkXVak_bV=&A2ExprUXZi_Wj=&8cHayeUrpYqji=&xECKZiXanjgjf=&G7pL4WYijWkni=&zK7IuYVrjZrUp=&v3VXKCXjZdXj_=&KatSQaUf_Wmkf=&GdfTtEUYjlWbg=&HMzDikVnipmZW=&qsibblYfmUdVf=&Jt6l82Zrioi_h=&XFOkPiXjpdajl=&7OdAl7UoiXhmh=&WH4d_ZWUsgmVq=&zxmdQLYooUgZY=&_4qUwpWm_Xamg=&6a3_CKU_ffnYn=&MYAsUdUalaaah=&7NNIlfVbiVbnk=&kc5E3gZkcegdf=&A4Ay_qWnldiYV=&V5XSKpYZboYsa=&h3jJx5ZfepWUW=&25gBEKVpfhUaf=&wIxfz5WaWfaXe=&mYmpQkUWoYifl=&jeooFiWWUpfmZ=&eVlmCWVXhregn=&eR5u8rUgXmUsf=&YskQC9UWUiXq_=&tjN7kYXZXXarZ=&6tl8oPZWgsadq=&iH66azVYlYbnn=&rTgOR7UVmhYiU=&LgQwAaV_WgZjd=&hcmdsHVhlbdlq=&5wVFtYXmWXhml=&CUCXRzYeXWYmh=&QnPVyFYnqeicm=&XCvGjbVdZqpdg=&4KiwmIXkpUqik=&ILWxbhW_eYhYq=&XCpiHJXmfkYcd=&Q3paEoUjgkYne=&mweQYYYrabjbb=&63NaYeWi_eqol=&BGjaluYlonWqk=&HbywCJZYYllba=&XECvVLWljXnjo=&5LmE_2XWisZdo=&VLHFREV_fXahc=&Gu9cyfUbqiUVe=&oLz94vXpZnXkW=&XJ_IWcUmjdaWj=&BfhyttUbYpUqo=&IeBTMIZVXWgXp=&wu9BWkWekjkXo=&PtOUrDZfoqeed=&G_GIJ5Wepsrpn=&4nnjXjYmbahr_=&OPGnBzYXhdWlj=&wm9HZxUYWYsZj=&gSKXCaXVopb_m=&pNxYjqZlgcadq=&JtnCueXjXVZed=&lwkprwZrfjVmb=&sHOmwxYjXpigU=&YznSKEXYWZdpj=&qtp47nYUlqXop=&FFnS_MUa_leab=&OJAQGaWYaUcdV=&zus7pzYdVfgbY=&PSrTYQYfqYZgY=&pS95faYWglicq=&gSzsDPYXi_lk_=&dmBo8OWrZgZcX=&T_Z2_PUqokbos=&iqahwoUUqmXgl=&PLvsmkUfZnnem=&wfQKfoZakbp_Y=&TfKuVZYcsmlas=&O5NFk_YjiVgWZ=&gTtf6bWeUkorl=&49q8rzYno_jnW=&rCnbHsXjpg_Ui=&XFCAXbUYg_YYl=&FLFJKAZoYkX_h=&BSlEiFYmdWqsj=&Xmusk3UhrVesZ=&9GpcoeXeYmkfm=&S8CvQcZkdfnjs=&b5BpGoWfYWgaj=&457bCCVdsmhio=&USCeP6WlcnVbl=&xNyVgkZlfgdqq=&_C4rxIUobegWZ=&ExcMpgZsmYkks=&KurwKLVfZifjm=&GJD2CLWlhlfip=&r6RpD6ZflamVX=&JawxoFWmbmUaV=&QdgOSyYbbfpnf=&ce5NVUUXZn_dp=&fsvefRUUeWXnj=&8VcpWOUqkdebo=&Zny9GIZk_sUee=&TegDdmWrjbhea=&yGwvliYpnlUfj=&q6v8T9Ucnecks=&PONOx6XlgrUln=&q7GSGRUXjsVhU=&GU97YBUpb_njc=&QTqEWXUrgoYec=&lQK8C6UWlilas=&XSrkmsZhlcYss=&uEfJsiWsojqlV=&yWsCiPVrqsdgp=&XVrULLYorWcgZ=&bURs5bUcgjfsY=&b6IBulY_fcssa=&NSkJa5Zfl_nmp=&KVyO6WZWfoamn=&xdaWDOUmrhaWk=&K5eykIWnZaZga=&Sd5FlrUabiWom=&8FTZnKX_oZcjd=&MqgEtkVlbrsqW=&prOGOgXsslji_=&jN4FmjWkgspkh=&E2MLxMUV_YrVZ=&NlQ2a9XpYnchc=&drjoRMYfqqWWU=&nDOdA8Wmprrgi=&SUNsXtXshmqco=&tkXIkoXahjaVf=&qmvvO2Yqodgnm=&nVYklmUhmWWhc=&tOQHU_Xpni_Yc=&42AjrxVWqYjci=&Av7s9DVskncUh=&DXzikCWgrpUjX=&pyQn73VYjcYhg=&ZPMFWhWVfrgca=&sJJuutYiblhYf=&d_43m8ZYbramZ=&CFRg6OYpnhhXl=&hKvmsmZqcqsss=&d3sPKRVUmaV_i=&Fs9TQFWidqYmj=&xGbPkQXfeqngp=&CfQFAmWmisjqe=&DIi3v8Wasscas=&HPSVIWWYdUlhb=&3nisI7XUdfmcb=&sb_mG8XYefklk=&fXwSmzZbissrf=&LWQclXWoXiqd_=&RMe5aoWpnddmk=&jVKSjTUspfnXV=&yakbBwYepfWib=&6NX5lqUZZ_sYd=&Eq7wdZZlUggUn=&bYvUT4Vnjokhj=&LEeQSwWlpjjqY=&dQ5mwzYlakrYf=&5KfCxKUXgWWc_=&8Q_KClXnisqWn=&Ml7Z5BWdbiXgl=&iLiwHnXlllXer=&El6BQ6Z_plpps=&Ewi48UVmomUXl=&POMWvPVgrklpk=&gToraIZphnc_j=&PaTDn5WYYUlaU=&WWZjzrXjqWV_c=&RW7xMSZYdihUW=&YSCXHIZimbadq=&96u8YEUbcWhdc=&SyM5A3ZkfdbrY=&ZQ9CMsZpf_gXa=&2djSniUbkdrrV=&Ccr2ZyZoimsml=&yzyTfwWjZnins=&2M2Yj_UU_Wemq=&srC2VdZosnpdZ=&jqpLnLW_glqVm=&2K2vjbUnmVcdr=&P3vAiRZUqmiml=&aUWbMPXhWdkbp=&l9Re_zYbidkbp=&oOxYbgXmdhpen=&hQFAupWlkYekb=&BU8HNnXcgmdkU=&O8p9yvZZcisjf=&pWwsMLWbYnZce=&aRs9ckYklsXUo=&v2BmSQZZeZZWq=&jNMBxEW_fWpmV=&t83ISzZlsooVp=&C3slzdXcWWcXm=&95U6sCVprsXhr=&G74EhDZdXpooY=&fg7aISZorrlZr=&DfuacWZjnmsrj=&bTcweuYasZYdj=&LEaHtUZijepqf=&B9tpfAYXnpi__=&dzqGvQVgiZnj_=&Zrm3ShVYiXkdX=&H6H4SBXocildX=&iRL2uQUVqalU_=&VFAqu6VdmYYrn=&OgU2FlXWaYmfe=&4GPA6vWjcnarm=&rTmm9YWmi_WdU=&ghZ8qJWbgrhaa=&iyshirUqZUaqo=&S8_U7uZeaXegW=&GTLtcnVdWoqXg=&2yy_mbXaknmmh=&XM492qUdUkhcs=&Z_HaZcVsZhXpd=&U6fYPlXUfebgk=&G_MoQfYViWrgi=&yRVtJjZZae_i_=&bcrA2pYVWhg_n=&yUTWahVcqbUnW=&yoTRpEXqgrokc=&ns9rfxZnfjUWd=&sykc32WhUd_jb=&SXIcqZYlZaarm=&gvmPWmYmVZcYp=&jXOdcPV_ZbWfj=&vHU9a3ZVgoqbW=&WCEIPmWVljfUs=&FtoptbXjZlnfs=&JE7SNwUohjrim=&FK9PNsZWU_akl=&e98MjDYojldqb=&UlUDD7Vofckfd=&4y6uGUUcsVisg=&2YomfNVarnbXd=&_scaVfWhhXr_j=&A5MdliVglmnms=&FwYZd8Xkas_Y_=&C4x67lYZcXpos=&GQj26IYooombj=&YvKhTSZljl_bj=&GqSHQEVssfXgl=&XbFMVdViUeepg=&QPsD6bUmdnceZ=&gI5soGUYgagir=&48pv2jUUskZe_=&PNrxYLXkobncl=&uJjkokZghVoph=&CGPrDuZbXXljW=&RxRVl5Ysk_Zhi=&m8tFpwUrXsbUi=&LdKO_vUhVssis=&rJ2gEzWmklgUa=&XpDofCXj_lUrV=&rshjeoUUqghsh=&33lH7VWfeYqZa=&EXQJb6Weechhf=&jDGktTVnsWogl=&UQ5C4MUdXVnea=&eHVga2Xqkm_kf=&gYFI9kVsZU_Wq=&88lXJJVemfhag=&e3OZZ7YfisXZi=&_AhhIMZcqgXls=&fMjhyTWYrsi_s=&SYZxgcUmgpdUl=&YVKL2JVV_efXh=&zsY9kdUXeZVUc=&LVKd_aUYdmWUj=&spQcVCXjdrilY=&aOBMgLXgmkcsU=&TqLMHhWrlYkpe=&XatGHoYlrWWca=&U8TKPSWgdaXZf=&2Z9CzXUeXWZYX=&mYQLycXfdWlpp=&_smHbSVifrn_j=&PfmifoWhZsanl=&iuFgKgV_Uqikj=&AhkIedUrkrYnW=&HMnyshZoZrbgq=&cedpdrVllhZ_m=&zlUFNSYXajjUU=&hnYy6iWgqnaYX=&KTWVkoXkidbpb=&w_ounbWYeYkgn=&cgOKwuWqiionq=&oWJUglUqaeVpl=&b9XOVAUaUnYnm=&vBWddPWednegY=&LEVARdYYWYgZe=&FYUJdNVhkrYs_=&ymn8UMYgg_ash=&yQtrHdZfpXWaj=&panbhMWsWckjk=&LMlVdgZdbrced=&sN54gVVlhrhje=&5RdRSzUXXXUke=&6_plS5YaXemlU=&tSFbTRUhVUdef=&96WJ5ZX_fpqZi=&Cmp4XbXZcogqj=&iTS7yrVrarenX=&8w6FPnYcoseaq=&DDF85WVc_rfZb=&kc72gNZjkpckq=&_bCbmeXognspo=&MnPSgoVnenXcr=&rxWUMBYfaoVrj=&kbfgB4V_eZUkX=&BTo6hjWarldXm=&SDTsayWqgmsbq=&LN3Ia_XYWakWg=&OFKz_XVnZfeia=&gPJAXRUoaZld_=&hElnp4UhnpnrV=&snjm2PVe_gcU_=&z5vqxDZUkbeYb=&jyfO_9WpYogeY=&TsAa3zXdbgUc_=&Rfxxb5Xrlfhr_=&6bvVsnXZkXprr=&J47hSmXqjpqqn=&IOdnwfYrfqoao=&zqnAHwXoekYmd=&myQ4fGZVbXeVm=&2TlrZUWesfcd_=&jRFJoDWUollak=&6JWGglW_jonnp=&ton6HIWrcWpjg=&Rth9k4UWXemnf=&A7XnJ6Xcjnjmd=&Vfd6lKYlmnekU=&RaR8oWXragiYg=&QW_HzzXXqksYi=&ytweWMVrqsUhj=&prDduNX_WqjYe=&mHEsL9ZadkVrZ=&JwtvpiXnVfpsk=&8YlSmxUmZlqag=&qq7HqLZmW_lWl=&G6rhQGXq_sahi=&zws6H2ZngsdWW=&jAk7yfYgqfrrm=&lrz7tmYgZqjar=&8CN4UHVXdbfkc=&UuewNnYskXiXb=&UVG4dXWfjohnV=&F_XdBgZfdphrf=&sbQxywXlVXarU=&5woIgBZsqplZW=&Cm6nJ3VWgWUUV=&HmD3u4VsspapV=&Gh3eo2Yhfblbq=&wjb2TRUlpWgfX=&pK6T7FWVjgh_U=&wSxF7qZlUpVrg=&Eb73rbZilbdgk=&65FLHiVreqgpq=&KyGaIhUUVaUXo=&b_ZSmGUs_pgoa=&SsdiTMXqlYZgk=&B49cYhWWUYkec=&qoXMXGXohaosp=&niwrTrVcfnsWg=&F8TjHsWmnYdlV=&zEN3mvZZVdVcn=&4BC8KjWkbUZfo=&avCsHaUmcYVVf=&HK94ZVXcrrpXg=&IVWVoKYZojqZg=&MdHvarZlbiVdW=&hExJO4Wsl_mbr=&ouXnupWjhfqbs=&meFfBvUeYnpfa=&gF6AlyXaU_eed=&eIaJ2cVqZknYo=&gzdZacXskgdZr=&FwpVVQZisfWXo=&xrXWZ6VobilrU=&iIRnW9XYqYYgo=&9LE2m4Vorjijs=&mND9c6XjWsrml=&r3nYuZYbehqms=&TaFhInXpfbmqf=&FErvE4Woelqoi=&_qj7K5YZmodWY=&HAnYRBXWdYgsn=&GvKwitUcZnqsd=&VnBJVOWjUcaXk=&AbYeH_YhVi_YZ=&L7h8CMWUXhbVa=&FBfYkAZWaoqaZ=&hdkbg4WYoachs=&nFxiZxWZppdoo=&iloozVXgZjXWW=&lBzovCYVfqmXe=&yq7WCxZpXlbkZ=&je3cgIXYVqhid=&ZP7IECXo_dcoh=&BwfahLXsdUrck=&duRWm9UrZsdes=&oVpYJYXqUsjpV=&75KlC9VrZsihc=&tUrFgaUdfZmfe=&WXJypdUsXWZfg=&GjIGVnYZZojWV=&t6jPpNXXcqfmU=&BO7bNjVamlZZX=&nhNCFfYpXjYf_=&sikeT6VndrUmj=&INfSElZjopmkb=&zDkaXfYmdZqab=&wG3esHYlhUbXg=&X4qP24ZjkWcYi=&2kpfjjZilrmZk=&RBMLq9WnpcqoY=&E_4UCeWkpaa_Z=&cJi8tZUokinbb=&olPHPJWoisZdU=&p_cyP3WmZUgeq=&zNepyVVZmWjsm=&TxoVKXZokpoVs=&mz4gU6Yhfpnkq=&xoJgNOUksmXgn=&tS3b4vZ_cZXes=&eaBk_GWcoobZk=&wcfW6EVoqslla=&4bp8EXVUXaXna=&cfunBhUdnrcdp=&KBkOTeXfkcalW=&DR7jSGUVhhkpU=&6TtYbYXgskbsl=&qokAtBYpd_mqr=&o9JcDRWiqdenY=&CyTwzeXfhgdah=&rriIcbVnkkjdk=&oPWbfGYsUXWkX=&OFN3OIXfZmchV=&VanpNfVpnesfc=&V3zPysZfmVscl=&wWzgeSYfkiesn=&ocemmMVgX_rgc=&c_3z2EXdXWaoi=&Suy3BeXhscUrV=&OnqKDIXXkeVfb=&cfC2fkVnVdnjs=&BWunS5Zfifnbg=&kIfZqTVXXicgf=&sJVW4KY_Wimoc=&EfDNQjWonarcZ=&xLzSevZqrsils=&tUqRoMXcdgcqV=&vEpWdHWhiUmjn=&RPnoWPVbmqpse=&E55fmmWZrfqab=&aNv8MBX_UansV=&_WOioWYmkbdXs=&9uZTYnWhgsepm=&LhBPQOZqZWbnb=&ZiByhhWjjXqo_=&ZmpdX9ZYYcrUn=&obbVvjU_cargr=&tr7z8JW_WepbU=&cMLrMNZYodrfs=&wRSlCLWgofZlp=&vnXkVZYmerbqY=&EP2WfbZpjcshj=&sbGwzTUnVepnY=&tWajamUpfsUkp=&Qr7DMaZbeVjep=&eaj_HNZjpp_WY=&INxliZVdYrpid=&nWPIrXYUWYWpY=&Vx_OqQZhoqsen=&lFI4hyXbqimpU=&N4sYD6WcUiobk=&EtcmqzWgWZrYV=&R37AixVqkbnWo=&HCzd2dYVghadr=&zX_dquYeqqblW=&E6n2xXZV_kVab=&UKRLIOYXmeX_n=&PB_WnUYYpbbfa=&oJPu_hXqidhp_=&xEERmwZjhbbjp=&pUuBwMXhkkrll=&d2wtIyY__rpYW=&Nnmy2QZksfaoW=&6TO5ynXleklmn=&dFCMrCYcVbqnj=&PWQUUmYqrklac=&6xqZ6ZWfqqWkl=&lEF9FWUsjngqc=&HwxY2kUcWensd=&KJx5qlUeghfso=&eTulGpWibpqia=&RTVj_jXdklYkZ=&g8ormKVbgqeif=&Bb2dnxWbqssqa=&FRqKEvUYnlpor=&o6R4XpUaamXZU=&FAwp9QXbfUqhV=&bydso6Xq_cnmc=&pPZ3CBWaqbjjm=&BttalYZjocmfc=&IDV5N6UeoZbmb=&43MeAQZlps_of=&j4zsgEZkVkWU_=&GKZmAuYirZbkf=&yXNOmOWgXehrc=&dmjInmUlaeZWY=&JNzftDWaZqojV=&juvjAUXZgnpkq=&4glJwpWcdhqad=&q4ZjgEYYlelaY=&6VAduyYZbqqee=&WTcFQqUgqepcs=&ow2kNXXnZgjge=&qXiYGKVmrksYk=&qm5F2DUfqmfZZ=&Wrl7HlWhlpiZj=&p4RdW9VcikrYh=&2JXupWZVeXYlX=&P98XfbZpdkjYk=&KI3InAVmsnfkX=&nkO7LWVqkkprg=&t4x26rUnljiqo=&3vDNoEWeVmeb_=&pN93mIWoWpoiY=&dUls2PUlVUU_p=&FyZfHHVrYiUo_=&yD_kKqWVgspUg=&Ub_Z3uWk_liZV=&LjRUU5Vegokah=&EwLhveZphsWcd=&VIcS4vXhfUdke=&coTDZcZs_qsne=&ujypbnUVmeq_Y=&fOKtBsVZWgZkb=&vQoT6bXcqpUsn=&P7Pg8gWsfrZYn=&Ay7qO8Vkhdiol=&2lA23_WUb_srk=&apRVB4UYXZbhk=&OEkzWtZYjWidc=&bhcSE7VkdXjef=&9igNScYpZhYan=&wLArniXniiaaq=&LUFcodWXllerc=&vI6MSJXfZgnai=&sVs3DnWiefgre=&HpacJHWYZiaWi=&oonETmVqbpbar=&ElbBPkWoYnanV=&cYvtxAXfqrV_o=&NvpdQmYciZdhq=&PRWfMxXVZeqlZ=&ZSdkcaWgsgnYg=&nJ_pYvWnfoekj=&rtvtreXrrnYZd=&LTb9BcXedjUXp=&N4HoSiZeWqWnY=&Lnm6CTYcZ_rVi=&IPzOIiUshiWXV=&IgkPI8UmqfpoX=&NfzO8hZdcZXee=&KCq8P_YbhYglg=&ocp9LuWWlqjid=&YYGhUxXoboXnX=&4kCdZfV_pkskZ=&M_bLovWkjfXj_=&NXFAwAWakhehs=&js3nFGXZVshi_=&K7mGLYZV_ca_k=&j6wpNPXgdrskV=&wRZATRVVrhcWd=&LJPTdEZpdkofq=&x6YPkZYUfdWab=&Pm9EgWUbWbbgp=&qYejWJWnrkeZ_=&wAhWNcUnjpkmi=&wD5ID8VidVrkm=&_DefauWkjikrn=&yTOHj3YXlok_m=&S2_l5VUepnWca=&uxkrfkXdqZ_VU=&KFKy77Wrrjgsb=&ziin2mXpgYhlW=&vTrE47Xpljbik=&onsQzEVadrVsX=&3R7hQpV_qeVeU=&rSaW6fZVbnpVo=&D4tHM4ZYdgbns=&tc7Bl5XlVohac=&viUQS8Zrcomkp=&UtSWwEYhhUU_q=&A3spqcVnlj_m_=&5bnYBGWnjgmec=&KEBFWWUXogmkq=&8W3n_GWqVmihl=&H4KiheZimeosl=&qJVFDAXkfrlre=&WwPwUSVWel_pX=&Fdhw8DWjgUgiV=&dBUKVpWXcqkmY=&wzMMuPXssnmjk=&g2Xk_bVddgsWp=&AOT2SRYoeliVo=&C5iy4OUhZWnf_=&65acKAVZqYZsV=&GtqQTAZinbpel=&BJjZB2UbYWVWn=&VoDyXTVfddpmq=&IXy9_hZnbrsmp=&hekPnIYqdVXXa=&Y5mbBVVccY_ad=&ERagWOYgjkjak=&XzvB4xXlYYqWf=&iO2qUfUfqj_id=&KJx_86YhgW_ZX=&c9kTtHUeiaVed=&ys757GWWkeUls=&zB3u9gUagWpnl=&ub5Q7bUlhXgUc=&wOS4XSZYgkX_X=&ocYQbPZjpicke=&NtICsAVessVij=&GJALIvYmYiklZ=&9I6u4bWrsUscd=&faQstMXUmplfj=&k3XaoIYkVUpkq=&nuH3JWZeidYek=&zUchdXUpboboc=&n9jSMYUbYmnUb=&vct2ZrVmnoeXh=&vvp8kUVfgYoXW=&lVygiZXYZnrag=&CSGBegVlsejZ_=&vvo3ntVlU_pfZ=&nlqYWJZWslooi=&cnXSw3VdVckXd=&i9nqJ8YcXVilf=&ACcEZ8UUmkldr=&8IFiPZXcqaXid=&9zVuiQXeifplh=&BauDShVYWsbmg=&LdgGCBXnsdZUs=&9UTjQKYVikcce=&tYR32zV_geVf_=&YQLIioXlnrppm=&NscG5sYsgkYci=&ylwLfoYqnhanj=&KDDHbyXreXWmq=&3usAefYrXgsaa=&zVrg6eXhbsshp=&hIhjSMXqVafod=&FBSv8LWbYdaUW=&aK_4dBXYeYqd_=&F4OKFBZremgaZ=&45FZo2XWjZfXs=&KxsZYmXsebhqc=&UEIPHmYY_eXnr=&XdYu2wUrrpemj=&WH66pIUsiYfXd=&hzSpBSZsXW_Vi=&HCF6fxXghdlXn=&8PpvtMZ_Z_Ypr=&KnM6eqYolsYpf=&ewnN9MWcVplXr=&mPJDovXoYYZ_Z=&8gUbrGXnjppWn=&OlXFqNYclgXds=&k9qaBbUnhfcbn=&paSHYxVmUlWqg=&fGoaxSVodhheb=&kdG2XJUkqpmme=&R2HkLyYXplrre=&uKrbwhXXsh_pW=&qanW_8Yaqgjbb=&SioLrZXfgfemj=&SH6EzWZekorrj=&qPd4mpXprrimh=&6iym3yVkljfeY=&L4z8LMXsalpVm=&lpCvp2Uiemhkr=&ZbnHhUXXlgbkm=&GbFE3QXoVUmkf=&fJFhr9W_lYrgq=&KO9s9kV_kdoUr=&laxg2wYlobUdX=&vO6RHcYpair_V=&aunIPBZoZqdcf=&D64y_hYfbjZaV=&eJXsTeYjlgbVk=&NG8REnXVZrndb=&vMk6wuWXicjfq=&2lDjlsUdmlegq=&8TxbigZsUqinX=&5KffiiUiqcXrp=&oEhbKyXrleglp=&f9b_rrZibcYfg=&lbQqicVkghnoa=&ATODgWYjqVacj=&ANVB3rUkhbjph=&HlPHQuY_pmfne=&rD3SI5Yfgjnhb=&9gOzZEZgpVsYW=&ljCTu4ZXYjmnX=&3qPGM2Xkpghlb=&sakaj5UckhVki=&GldoIZWlpVcYl=&g8d3l3UhfnUrY=&MhkC2SUoqXjhm=&B_FAhnY__a_jk=&GXOMRwYXlfoYq=&bSndU5YaqYdVc=&4B5f49UWXiioW=&UI3tMqXZoi_gW=&zpHVo8YZoesjU=&6H3oaSYdpsXiY=&VK5xKxYolZpl_=&oP6bQLVkUqqVX=&EgB95qUjXZged=&3Q6QmvZlXo_rX=&bY9mjeVgcXcfi=&ZonzB3VjVcclV=&xAhmWcZUWerXc=&7F9nRvYphmfUm=&EdrmShYjblfhf=&U9bqH5YaaqaWh=&zlxweBVdnbcX_=&IgPF22ZiZljfk=&48mOS3ZipWVmm=&fTrFCGWmiksdi=&n9kQqJXYj_iZk=&jeIdytUXespWc=&3lLrXeUkibceW=&LmxQIvWdgYXai=&KXmeFKWmoXrWh=&lddiTcZVckjVV=&y5ynQvVorYUql=&e9RF6CUakhooX=&rhx3poUjeiadf=&aciPCCUdWdmoa=&eX9mKSXscYjVf=&aiFtscZdoYeZi=&DqACQZYdWpfUe=&7ZUmX6WmVijWi=&PRmhDXUgZmmfi=&dqdtIwYZiqZoc=&9gWKTXUgXprnf=&BWwyQjUjcXnsY=&jr2iNQVinanZn=&yfiGDCXZoahhX=&dOH3rMWaYaanj=&wDxaLKUhd_eUm=&S3XXwGZ_WZree=&ZRcsgfZinanUj=&6p98_XYYVsUrf=&aVeNR8Wb_iZmf=&wfd_aXZojnhdp=&cBtegEUhf_dWg=&5R9j9qYVnXVrc=&hWoNkaYqkbaVb=&8gC_jNYbanbVs=&ZSanDVYVsceqk=&OLJrvUVcqqlpo=&nxNYIFXmWlgbq=&d2mv7zXsaXYlY=&WaOlZoXangnhr=&iwFESpVmolVsU=&3BMH8hVWqe_Xb=&k_CeDlXhdjkad=&eeuXzYYbo_anb=&gUHr7LYkkochb=&8wxlSoUiZbomc=&rUi3_JVbmaddr=&rUzeh7Zmbhhbj=&wQbdUoYXkkaUc=&PetZADX_kgren=&jDFehzVVg_Xmr=&imyKOjUZcdYVn=&FF7sRvWWYWXcc=&AIWHLnZdjrn_X=&EXtIaYWakakjY=&xxvyw2ZdfjasX=&SavPe2YXcqodq=&Y8aMb7V_fmsh_=&qBZjTFZUanrhk=&bDyQOTYmoZnXb=&XrFTXQXeiaaih=&V5lQF9Vjqiioc=&kshbFrY_oYZge=&NNSuZAVsqpWck=&vScrz2Z_nYrUq=&zU_6IHVjlmrq_=&UKr4SwZapoiWj=&sStSQPUnVmrVl=&JxxuBKZmsoeog=&Z_KU2MVUZginU=&M8vkvKYbgYqoh=&rff7XbUYhqrhl=&EoQzMfXcVdiZp=&XUfYuxWplfkeZ=&pmtG6zVWsYUss=&yr2zXSWhkYjfq=&qKE4yVWoVcUXh=&AizyIWZcnl_Vm=&ZdDoKaXdfdeU_=&Fn8h3HXjWni_f=&ut7to7ZZchhje=&L5z7XPWmqnook=&tDW8KmYrmUgpW=&ELPZewUajesqb=&WF5PbfVncdhle=&kunwCTVWXkghs=&AibqftUmZqWof=&wh_CnhXicfeWo=&JXHsYJZZpckam=&SEOAKmXpn_mok=&jYRaSVZmZabUh=&WRemllZmnrmrY=&bee5NvZdYlZld=&OhNPCBYUdsnfW=&sYopiwWabg_WV=&9jx8UeUfVrfmo=&X4t5s9WebaaoX=&dAYiYFXrjscYm=&e9k6H8YXicgoj=&hTtVfbZXcVbZm=&7rsPKXXqcembo=&HJuDnxZnmZXUs=&PFTYJrVdgkYXn=&A4aqKGVYUcZrb=&KrihLeVYaVhjs=&vbmnXOWmqjVkb=&aJBLn3YfUm_Um=&VYJgk9XUchYsd=&s23a5yZkhpfrp=&DUkvlkZdmns_l=&c729OiUgrgYUr=&2iAHLMVhifjca=&cjjFGlUZWsdsr=&I4ZK_rUaWsmdh=&nRQG7eZnUnUqk=&iqFeLfUh_WWVe=&SXyQeaVjbclie=&W_CsIBUnipgko=&ARfqNPZUYfYdk=&cBopHtWVidgmf=&Uekw22WnqZkjU=&Jp3eGCZleYWYV=&4EGNv7YfdaXgl=&Ybx6JlYkpadbd=&zhgdJWWlUZUsj=&eyKapVUmrraij=&TX_zHkZgXYffj=&d_8zbAXagXgZc=&coOD8CXsVpWhl=&CD5t8ZYamleqo=&FbvMlQZhZclol=&Z_oeMQXgZfsij=&eB6juTVlYVdXq=&uFLpJ5VbapcUg=&9sjh46VlrdXVZ=&V8gG4WYikrrko=&hCLaghVfZiVqe=&wfTJBYZ_k_gai=&d8JVI7VbdsUkY=&GTbldKXk_bZYm=&vVLkh_VYemiZl=&FNBjuPWerZ_lh=&WAQMiZYbqifs_=&s8OSC_WdsrcZb=&3pBJ65Zkqealn=&JtXaWoVZpsXqe=&vmuuuhYkaVZUf=&QaDdndZoYalhY=&ffQDLUVZlkqoW=&RcrCbWUodeigj=&89AHJbYUWoich=&yb84uiWrdqdsj=&Fs9yd9WdWjnVd=&jiYwhqWfeebbo=&QnDWkTWZmjkoW=&UFD2NjUdcpkio=&3lRiK3U_ZVoaj=&hkt9AjZqZqarj=&DBxPkYVasWoge=&VoJjaBVYnfgem=&OQI4AtUWhhYdg=&bVnZq_Z_nnoec=&TpWgnfVYd_Z_a=&bmAPb9VYcfajZ=&slCTkiXiifnWY=&QuFNGVXalqpna=&PA5jLIXhYUaai=&HuEfqWUZoijrU=&__v_ogZakWmde=&PZZeSyXcagged=&W5qNUFVssXfln=&cbwWT8ZYaj_ag=&WSo8M5Zms_qbW=&AbMdBIVaaiWaV=&c5VLZNXabjg__=&oLqgQAYXhjksf=&K7o5lmVrrdojV=&Y7tfaYZkcmslV=&OS2buRZapUbnc=&Q9ZZzFVnsojkc=&ZzIRvSWqhkVah=&sGyFj3Vdsdkjb=&2QqSfyXenllcp=&WEwZKGVnhgVW_=&5fQfWgXlmbVil=&HKEJ2rWimaZXf=&l4539_Wrklckj=&umM5NLUqsfXcr=&87ZVPZXinajYr=&FGsdnYVllsYje=&xLZTZbVmecfji=&kD4qixWgbV_VZ=&btOV2iW_Xb_jg=&ZsPEuRZdUqkff=&k69gHRUgdsagd=&FXraWxZVVoaZj=&DEMv6jXh_Ydfd=&jACEeNUoslisY=&KXfs94UkqqpeZ=&sJphfMXlriqfp=&NcR74VYqVmbmp=&WCXuU_UnpmfUr=&4qBxpzXflihXr=&VxBFgYUmqflre=&teNamPZprinkk=&SZ6dGqYpbrXoW=&9aYfuFWkkaXse=&OewLbRWYhphWn=&ibQFHbXadjioW=&7bt3IyZfckUl_=&E6tnddYpm_hgm=&KdjgjkVVqrmaf=&tmlvidX_qUeec=&UeSVA_UbWgnhb=&N7a3cBVfdppZZ=&TQCzepXskWmWj=&3IbBZRXjashrV=&jrAPaIXcqdZeb=&ZBcv_VYbaimjZ=&uDT5hwYXXWmnX=&jIxyVVYeZlZrp=&txyKwhZ__aVgY=&YksHjzVWpj_Vc=&pEi3q4ZelcoYh=&GiG4z3V_afohi=&N5o7kPUebnoql=&LqWPUOWUsfgUq=&Kasse5WWnnmbU=&EnYJ7oYliXoji=&ahapdDWi_rikW=&X4Uh6yVZor_Ym=&OYwn7SYYosUfl=&XLcerQXdoggXd=&rru3XfZeUcYrX=&69Sso5Yqsbgdg=&YcbkJQZbokah_=&flDop7YbdZgbl=&OAsZqYYimmjab=&5SLhbDUpWeeXr=&EiSBirUa_nhoX=&BQFSg7ZUergfm=&LaYRHeWWihqcV=&IBd7x4WrZafdb=&NeSNHzZrrWqfp=&rhwavrUihfmje=&VldEl4Xshjmaj=&VT_qzrZnUkWVk=&9jyeEsZjfZYYi=&dHdbimXohcjnV=&n6hLuQZ_VreXV=&VuCudZZgfXed_=&ySH3fEYolYfid=&xpKY7cUdreUrk=&ZVvNTFVbglbra=&jkPTpVWVpesek=&i9CJGuZcgdbfi=&TPNjKOUoXYmgk=&_OeF2LXVZdcnX=&qDekeeUrndahm=&iFngkfVbWddYY=&mJJy7UZqfhrep=&wYvl4RVWlWsV_=&tnTgStUphlpYp=&9ZuDZcXpiYWae=&dwiA5CUgrsdln=&6U4uMKZYjVbUV=&akFbZcXfZYros=&5Y7vaLUqYbboZ=&OoBQ_DWscohdr=&Ox3XqgXjdUVjU=&yQ6M3SWnVrfbX=&ImdJwjYXmboie=&cAmiIoXhWapmq=&UJGYObX_cYnsV=&3ioMWeXkiafab=&3H4AVvZodjXZY=&I4xMTQW_mqbij=&qWSxlsYhdc_gb=&NrYj5eUloll_f=&QpQjFYZ_XWnje=&KD5flYUeUhqlo=&gTHAvFXbsqsjo=&4nZ6FNUYaeYoV=&LlrfuKYiblbYU=&j9UA8QWsVbVcc=&tQgSUsVhhdahV=&lszEBiUisgljY=&ME9KtXWVgjeZ_=&WgxXijZ_mjWi_=&G45DvQZpUiWUY=&WigLh9YWpgWYY=&tnmhfVYYnqdnl=&wJjjPAVZmVXna=&Ul59lnYpYZiY_=&cLouuHUjhrZUV=&BayQoYVmoZohV=&qcnTDqZqencgc=&rRwbr7Z__kYce=&OeBI8hWfgWqrg=&2vVAtyVplo_dp=&cPK5DtWjoZelf=&AjtSxUWYfXrjk=&JcVfVSUbdXphY=&EueEADZqaaZfp=&I7XKBjZmabhsb=&_GSNW3WUmasrj=&KGVSw3YobfXn_=&e48aTlWnWacZb=&UcpsaNYjobZgi=&mUq4keWYfheWU=&4rVVVqVXhWpeY=&eNo6XjVhi_asV=&q3daOhVkkkZiV=&zHcvN3YjdYpmc=&WmNA8uVVafrfY=&GHzUCpVVfgncY=&nwYFQ7YnejlVZ=&NlBPUKWhfpnnW=&FcF8frUnmdbeh=&VcFgfdUcbnfUo=&9stDSxUnWs_nm=&LZQlq_ZiqmnkY=&fP6pjXUYgddhq=&dsZG7RUUVjW_m=&KUvf6JZfrUYig=&SUKRCvVseZd_c=&hpfzfjXilZU_c=&kCIqzmYjdjprf=&MOwikCZiddWrp=&Xuq7I8Zdddpag=&EjscryY_hsfde=&59dRhuXWlnela=&mRJoa2VrbaeXc=&yuam39Wbdrfmh=&6zeoNiWVqqlqg=&QLYNNIUeYZnoW=&fuUytrYhmZaoU=&eeCYoTWYmWbpo=&s2So_kWl__nks=&jViyOHYocoUVr=&ugdO3SYldYskW=&OEmO2rUoZkcoi=&WKSHNRUegdimX=&Aay6iZZdjdnhf=&n6cdyMVsrZr_i=&EunZYrVobhoml=&4RwvaTYZUrhll=&UYXxE3XVsZodf=&oVbmG_ZiXiZmW=&w2hFN4Ybaqndh=&m7VKicU_jYmed=&G7A8XpVpghjhr=&6RANOrXsnfpdm=&oOGzy4UmqiX__=&UCOMtWXeookXc=&zEMBwrUmqq_Xf=&qlf5v2XnsiWbW=&P2eb63WnfUene=&RL9VkYYZmjXns=&GX_tXkXdjgheY=&dz9Pv9ZWmrXVj=&y2LFJIZcsmVWp=&4VxcdWVhXieaY=&PlPOccXXlcoXU=&P_YrqeW_aboVf=&k_I5ciVgWaVns=&H7TYqmXZcUhdZ=&GZONfGXekUsXi=&KvfboDXapashe=&tUnnDSVUniVXf=&P2zNSUYZ_hmWf=&F3CDCpYmi_Zmr=&2b75vlWogmqal=&VOwLXQXmZdpsc=&qyfECgZhpnUgc=&K3HQLxWkWajfq=&sUnYVrZjoXVfl=&7fYDxFYlkaiUW=&diNKJZZoreUhg=&kmbkGOWqfnoZZ=&Ep3BhyVW_qakb=&5nyJChZidrqrg=&8D49xTVsfdlZp=&TOMSBKWl_sZob=&jCIK_fXXYomgl=&cgAs4ZVhhkjUV=&wPL4WjVjkVqYU=&3nlpT2Vqpdgih=&f6A35eZVhmbgr=&YXkc8wYZZa_rk=&W59qjGUWdWnaU=&qiCrJiZmdViUq=&COZaoSZjmVeUZ=&2uSQqdZgiejiV=&9PGoJYZfimccX=&BQysmnZVp_YWm=&7JmIbuUbqalcp=&8ABagCYdodlpb=&sgcJ8kWkkgkr_=&w4l9VJVnXnrqe=&DQX936UZglkoY=&3XMGV7UYWolYc=&7fkjagUpimoki=&Yq5lZEWepklqb=&ZLbCL7WZVbdor=&8Z_iddUYUrarX=&nLX7ujXWrbVsX=&TtauHlWdZsWgh=&b2YLJlZZsrZbf=&BTEnc3Xaedc_i=&5aHBgFXXVWkaV=&lIQzBNXVbZghc=&3bClJ6Wol__lV=&YjISU6YfasadX=&sFFvNTYsZrhYf=&t7KoUHUiWVUas=&WVrrVgWdfWdgk=&5Idx7aVpihabf=&CwQHiEZqbidni=&AiPYdfVmkebgc=&ARnihWUfcYgrg=&8_giDhUiXWUdi=&SAE_BdYkoa_bk=&DWOTrVYYZZacX=&ZIy4ebWhphp_Y=&zR8NPLWhokmim=&UVoFVQZUpeoes=&VewjilX_gicqV=&urCGfLXmagkhY=&m4xOVDUkqridX=&oGTcLbZleZmiZ=&8eGY33ZkoWelY=&MisqkRYnYlfXU=&ya2NtTWUsndWj=&fhIBqNUlhmeen=&rXaq73UriknZW=&K5vPXMUrnehlk=&_C6L8DVmdsbim=&YkiKRiYkijcj_=&8GhClQXaZoggg=&npaImmWkamlia=&Fr9C73WlfsbkW=&NQuVf6XXbsaYW=&SqKubeUfXVspq=&dFNR2iVqlmskk=&pI_zuqYrV_XeY=&iVhjh5ZYXfkaY=&fZDNpyZhrXddU=&WzrfHiUpanjVf=&4JBU37XsofdWl=&7QusjGZkfmXiX=&wLSF2HWZcVbgs=&f8tvgAUZeZU_l=&2BmxfJV_Wsahe=&6FkUXbVkmVdsk=&Pp86fiZiYaXpj=&_da27sX_UmWWk=&_t8mxfVoXfaWo=&gdXYZqXnrZkmo=&wv9G8gVcY_apX=&_ZfoVWV_ispqs=&_LbM3LUsgZdkc=&gEhJVzVqfbmjr=&A_3YqsXfZpUra=&3yjGRnUnXlnYq=&fL_wQwWelgXsb=&OQLQzsYmqlr_V=&kNMgINXrWfZlW=&iUvdsIUqWWkmh=&_5J7Z5WoqWXmk=&79DGGrZpUfmrV=&sUgnYdUlYlaXo=&Wao3opYbhejns=&8AJ8RuV_fVlXY=&PBjPCzUYkdeno=&mdYWTaWafknol=&XHPqpkZXWWhpl=&B8ds5AXajibn_=&H_faXvZjljdma=&vPd_oRZcgUi__=&3wb2hWWchlopn=&gzgKaDYjqrVfV=&gptPwrWgVWlji=&abmGwOVrqsfjo=&JM254SZdpZhhs=&WDoAXcYrogVqp=&Du_6MoWjojrVV=&pUMdIPYnbiarj=&8ObLfxUVlrYkf=&4sU6mpVrcbfdV=&N9587WZVmhsXd=&hRzq3CYkoUqhZ=&cFxca_WdfWkf_=&L8lw_pWeZZhW_=&TqE8WFYUiiWdb=&9aDNMTZhscqdd=&bGTG4CWbUalkW=&rEpxx3XcoZYdq=&vofPQEYnqjfWp=&xakgnsVYpkXgq=&CiXEKXZ_Vlmgo=&WO2lu7Zmqenls=&SGLW4PWnmb_df=&fzsWoLUfqnVel=&svmzdqWma_ais=&SdnI84Viddqfj=&ZaGOwBXaXWipc=&RklzX8VdsnpYs=&fMpD2cVigZeah=&wh9hNrYrrkXXp=&t5nLiLYsbfhYk=&UDx42JZoqVfUf=&u2NKrMZd_rado=&DWO2VaZWmkpoU=&I2OZAEYZUcXir=&cb93IPUeYmhka=&JKbcPPVpVcaqs=&B2sikSZbhXXnV=&oVka9QZisYql_=&CXwszIWilUhhU=&a4SPU6ZgnjVlj=&C9gBRFYdjjqYr=&Xj3bOYXV_oa_q=&8ufUixZpicobX=&4A8GAYVmUoUis=&7Ahw_bXseXYgr=&WMJu9OXdgfhfZ=&vy_CPXZVkaeka=&VD2GTuXdcWVrZ=&BoyPLbWejpoYr=&Cl6V29XUZqc_Z=&LEQrJYZ_Xjneq=&Z6kU57UWjrYob=&ib7TuqVecscai=&q3lm9iWofUpae=&weVnWMVfndY_b=&uZWddVVbojhpm=&cpMrEDUgcpino=&WiWjvbXlogehZ=&ZXde5yYqkpeqf=&afebZGVVc_nlc=&ftQaLQXlZUd_g=&hIYrFTWnpggYb=&bTthVrVZhaiaq=&eu2WXiWjrsl_g=&mH8Q3mWbXVlsX=&Kl7mEEXjlWbiU=&6Lg4z6Zggqrrp=&8K86PhXnYY__Y=&w_Y58FYgZVmfo=&2YZLZ4WahUesr=&DoJ9MkXcVlqeg=&rUUlKyZWgoUgY=&BbzfKpVYmesna=&94rUaIYimVngr=&3LsrQxXlYbhcq=&Et3QZHXmUbhp_=&folqYdXcXkmlp=&zhwYaKVcppbji=&ygfSduUdVljrs=&EqAGigYodrmgh=&qLjNUaWrsq_XW=&_96xbHXf_oWps=&LWU5o5XUZVUds=&vuCysjVipfikq=&qcb9FKZr_cVdr=&pAftQQXhdU_gb=&fwic2zZsmV_Vf=&OB77jcVXVkqWc=&y4igUKWgVpnsX=&hOfaHUWbaaWmj=&YT7CSpYihWhZo=&8_mHwkVnqfaea=&8tgDUDWlnjYpj=&uOTFtkZpWmbcj=&X49gySZ_XVrgV=&UwE3sNUYWhsip=&uJHRTmWsYsgij=&ThxifjVonmaqk=&N69LrXZfXYbek=&Ys4CVtWUdUUmh=&2hcABUXrkaqWW=&bxgXREWlZqml_=&2A9VseWcWXsoa=&ZlgOJKUn_cobe=&GurjU7Zkblb_Z=&LS3be5VmUhcip=&oSIDJ_Upidecb=&tEs3wBWYqdaZd=&f27JEdZinWcdq=&M8mVOMYjVbeos=&Gq6RmkUdZfifV=&tCaNBUZmekYZc=&aDOWrwUkrcUie=&OZLR_UWmobkih=&q76XHrWmegkVo=&4MZ8emWmpojmq=&TG87CnYiXqlma=&NWZGUnWq_Wqgq=&4OaPcKWbXsXke=&VvgZtNWjaefld=&zrKVhkWVUeooo=&JaW4LbYlpVcrl=&WOFESpVilUsVm=&9KuRKnUfrUfqk=&5JGU45ZplerXs=&ajg9O4Zdisbgs=&MNW6SzZYVqfWl=&d59mfwWkYciaf=&kFRI4qXfWdXdp=&VXJhPQWpimlXd=&b7Dj9gVohoW_k=&LYDC3xXYm_soZ=&hCWaJ7WqaXXns=&bsRlK9XkhXfXh=&Fg2d39Vlhslai=&VkqXc7UlibYlm=&LIWQ3fUXskVir=&jnYiVlUqsmYhi=&_JUhW6ZdhjZoX=&K2cUfuZr_sYVk=&zpkxfvUfoUYfq=&rGYkMnVriebog=&msEY3pXoajhen=&ogy6uzZhlfWns=&LaGD_xZr_q_fV=&goZQAKYUmefUf=&gNYG9QUjrkYnj=&ICtJ6QWpnf_sj=&HGR6GEVbUsnja=&JtHzkqVcXgbnd=&9f4k4CYrsVXVg=&q5dJk9UdWqjbs=&zrxSe9Uidaaqb=&H5lNnTUibrgjV=&HREVsaUjarWdV=&nWLRjQZUp_ibs=&cFxUhMZbrilqc=&xlyxHcZVkqhce=&t46XAbWUmjeUh=&J4KWwkVlaaXbd=&l_jxkmYpjpjYi=&y5Vw_lZ_hVXgf=&hnTULWVlakVlb=&eCaq_lXXjqqal=&QywVljYaVhpgp=&HLlE5JUdf_mjq=&AjTvpkVlbjgXo=&2OIoUuXqVjd_e=&Enxh4BVficsg_=&MHxnT3YWXsa_a=&Lsz5JeVUkqlaq=&ODbgXBZibkYZW=&npsDAZZXknplc=&3vhx6fZbphcVp=&8qdUGTXpYafoZ=&tviZ9TZjmbbjU=&lJsSxPYhUigZf=&RXJE5eVZlgpmg=&RSGPxIZnZZsUk=&qSL6szZsWXadj=&YGLLRdYoZj_VW=&UnmqYUUbZfUXo=&LnEss8WglghcU=&fLwrApWYjongj=&FAFMggUZobVlj=&bQhR7bXiWimVj=&RkbazQZfasYao=&kPrXm_XoqVqhj=&MchBhgXWkVeZh=&2yJc5YVdaVVmX=&sUURfqWgjlqUZ=&x4lYNaVUVgdkm=&FhhIMfVmsaZqr=&cPyHq_Zcqmiqq=&V_pMBNVncYnjV=&jgAk9dWaaqlrl=&BUj8DBWigVXXZ=&uYWXeDWblXanb=&rRHzUYWg_habj=&hhvYBkXVXUbpo=&SU7woWYUilkrj=&CiScr7UphUXUZ=&V_9wr4ZUffUhq=&lP3eHrXsfUrfX=&NR8JojZraldXb=&YKlJuFUaUmXfm=&fiJbAJWXUUoaq=&QAWNduYonejaV=&rDCY8FYZVdo_o=&uHhHgrWlniYds=&dHPEUdVhksakf=&GTpBMTVnUdams=&d_zfGjVrbUsWW=&DIQjbBWbXoWdg=&Xk2OXoUnkbYaY=&3xZmunYjjZcZc=&kuMG36XZjofVX=&drqw_nVfY_gZf=&hDvDIgVegfYlc=&2oUAmWZUZlipa=&IQLPfJXihfXgh=&lWGRmdVldWqZY=&PMuL5gYelkgko=&pMCbczYZUnreZ=&cGjnGgYflhWfZ=&QcDrxAUrmYZoa=&mdWegUUmqViab=&tZJc6rUXpdbpZ=&4QqpbKZjlYpco=&59GyJCYhWZrnW=&jSr4D6VndWrYi=&HJiC3JYk_jiUV=&7AxNn3UXocnZb=&xCLYRAZUbfakj=&UqlIHnWZgYshc=&pZ3f_DUqVgbZa=&pARL4MYjickYW=&2JiOWCUVmqoqk=&5EbxJpWnfVcfp=&E_W6WMYfrhnjh=&I46oBNU_dV_fm=&X7VgqYVi_bWVg=&95CrBsWca_mna=&YuTvecVa_hcho=&62fvmVUaiXccj=&WYGCwtY_kafkV=&Q5ztU3VVfqWbl=&TkW3PEXlVUnZa=&_6ag4rXWhnnam=&gb2eFXZrjsrgp=&ziQePQVhhhemX=&zmZdECYm_ccnX=&wYNHACVqsgmYs=&jPw9oPVgqqnbh=&nxSMpnWbjgdee=&7gmgrNZfprZWk=&D7yUJwZoedeej=&4ivR86YraoVqk=&XiGyg4Zlr_ddi=&camm3_Znaicol=&BR3afpUkZYYca=&n23YV7ZenmZWl=&fAtQyeZVWUcbW=&EBVkY8UqXloeq=&7StUVhWemchUZ=&M8M8n7ZjoXhZd=&xMXLPYWnZVidZ=&oZwdeQXeXUbfl=&mgRJsUXomhnm_=&spbc9_VdddU_V=&sqPEYQWegYpqf=&_q39rqUViqZhh=&7mtkKGWcmraqd=&XgzJ8fVmnbngk=&bbhyPtVZgqbXs=&FDawhWUaVZXmb=&I_oWo6ZnfWodY=&AqiI2oUmldl_j=&x6rdHbVXc_crq=&9y4SJLYiegrd_=&B6SjWUWWriXfh=&2WD62iUVUmhaZ=&Ns5RhQWiVpoXZ=&c_uLqCWisjlkg=&GoVQZVYsbhllY=&M36xNrVXVZnXV=&6YsqxUZghakUh=&7LYg9yZhWgfrg=&olTs5MXYohigf=&UoKzgDZUZceWV=&gGYayoVcqlqp_=&hTYUsYYVersWV=&OxP8cEVhfbUdj=&Hohz7WVmcjpop=&nfJCreVebhecq=&MidDRBXVjckWi=&3zGut7ZqknoZW=&9bsM8MXiinfqs=&JtVOY7UkiVVqY=&zjmkDgVerfgjq=&sqmbrBWokYinh=&t8AnHZUcpgjog=&kpuYZQXsfWZXd=&6dW8u_UpfZqUf=&vM3doUXejWif_=&XXZqptZ_kXaag=&WuZjcsXlqlbgl=&RI5hDqYhYsrks=&6GTrrDUkXe_on=&UW6QGNWlacdn_=&mkwfiTXWgZjoi=&FE8yRkWsXgp_m=&ElvVYyYkffonr=&VKqzFkVmfpUmV=&xu7NCDXcYcbac=&jaeDPCUXfVVoo=&UqYzEEUfiVWki=&FPd9GiYfsrWWg=&FenfiRUrqYcVr=&ErSgoHZZpimqq=&dpoTWrYgs_fmg=&7FED7PZiVqkWW=&bICFL_Yqs_Xgj=&LJg4znYndlcfY=&bfRHhQYkrmZaq=&ewwxuDUcafXmd=&qvUIp8Vh_ZmWr=&MKPEvcYjeaXXg=&PSgbVPUhYWpZm=&tRTKlEVhfcYjh=&xAEso5WWgcj_h=&lJTBVrUdXpYYi=&tlqfF5WVlonYc=&TEmJOlYcqsfep=&WX3rSUUjUdqiX=&3foqKMZmfosmg=&c3bHWqZdaXoc_=&HVPzFzZlefdod=&Go6YkQUqecgrp=&Nhm8GtUYZfdia=&WbyKeMUmdamgn=&jkBqggVUbo_Yp=&iURiilYfeaUsg=&C_yHDvVWnqsfn=&BKt65YVbjkcdW=&BZexQUYniZmmo=&dN3YdQYi__bkp=&lAT5tIZUmZphe=&_R7iRiWoo_pVd=&gm5yiPZVrbjUb=&8LMFCOYgagoZr=&3XVolDWqqgWlU=&ov5oa4YYsndpU=&XHlUhHVfbpqll=&exdoJeVVlkUUr=&Aze6dWUhmdoWi=&C3W2aKYj_ngW_=&ph9iwRYUrYkmb=&zrgA7hXkgrkhX=&hW7ibMUkmecbs=&V3jhQ3X_ogXca=&uAfxOSXUZljij=&IzEPRAYUmpola=&2hm7EKYZkYUpj=&gAufcEVVZfhVa=&nBgznfYhnllpj=&Qf8lCVYmZmrmX=&2at4VkUZ_jhrX=&UQk3S_Xacp_jk=&aummsqUcXVn_i=&7SQpx6XcYrhfU=&q5X3p4ZhXsVeU=&WxTl3JXbYckVi=&YTbwi2Xhfljqp=&TUhD7dVWllmkc=&PoJ4HFVVYgrmj=&AqA57wVmpXpUb=&Zo82cyYfarVah=&MAJbzXVYXfZVq=&eDe_CaUjkiUgV=&P2r4XWWskai_e=&rooYFNXU_jjrY=&Z_oMuFYesisUr=&aM4oH9UnYhUbg=&kV3zeCXqkrVZn=&iN8dCSUrsj_fV=&MpLbMFYrlfiaW=&5iUbESXcrUrns=&jcIYDdXk_qVhZ=&lTeJLRZX_lj_m=&3Jd38sZkhpera=&j38wAfVqhoY_o=&pX4haMYgUbmcs=&FKA8ohXXsrXbX=&iUkbU7Zipibaf=&XTHwIVXebZ_g_=&VgdA5eXjaUqhU=&kcU2RnYaX_Zll=&GRpHd4VmnanoX=&SpmeSTZqcVrnV=&It4KkpZbUpecb=&UIcKFIZfidUgr=&ZYcCzcYkmiksX=&EieZlHUWdZgff=&_IvlkrVXVobXr=&n6MI5TWdbYmrf=&7aDLD6VfhgkVX=&tKDPf8YUoZZfb=&JKuyAKZXq_ikW=&AapK6rZcnrpcq=&62y3MBWsfq_Zg=&oybFb9Uerhgdb=&zSeznWWdhjpWg=&NT2lnnZigifch=&Jo2SF5ZslZbaU=&nQ6P3ZUgogZUc=&RgcxAeXWgoqig=&DPpcnjXioUicf=&aUhbHCYshXfkr=&tjvWxMUrVc_gX=&iGD8PjWj_npUm=&jCJ7FgZpjXhif=&lFAY9aUWklnjs=&oBYIUdZpmlW_i=&ta_AEpUndgUkf=&NKMWBAWeUmnia=&DzpXaaUoZ_ehZ=&FuX9eoYohocWe=&ZLP_AdVdZnfhb=&HismVTXsXcZkj=&BCmCHMZZcf_Vp=&GUIzovUdVahpb=&m3gnhwVm_pUoX=&uRhadHUr_srre=&DOrvlTWnWfmXb=&5cMJ49YXhgekn=&SkfbMdVac_XdX=&VRBDGLYrmseZq=&bEqhCUZolnrep=&5jzVW9Xgpjfsc=&OgvobWWglXWkp=&BYjj_SUp_XXXY=&LglNhnYUlbgbj=&qgkRvRVngfhVX=&pMnZQWUemeoce=&86xQiPX_eaqeo=&l24QhMXb_pjfY=&nUZdqlXkdgplX=&_ddYs6Xe_Uhrd=&gBtU43Wcsncha=&lnwR44VZjXooi=&eVAL39ZigobVg=&M_amjGXUeqqhU=&goqKu9VmXhpZq=&kiyrTNWhfeYWY=&LweTVVYZVseiV=&jM_yU3UiajkqX=&Y22v_XUWahgm_=&zp82NfYjikYYU=&K4NhShWfkWVof=&uDPsV5ZpfgWal=&jvilPSVrfkqUq=&2VYuT4WeUjaea=&4opAlnXcWYklV=&U2kFv3UbXrgds=&DJzBq2WpprkWp=&2rjPDTVoUUdUZ=&C22765WmoVpe_=&iaLQOSUogZVdV=&5EZ9ZFUhdi_Yg=&5Q4pMfYdkphl_=&TB3VK9Vdfgnmg=&7qD29LUcgrfYa=&5bYZczZUfZYla=&yPmOznXWarjdq=&Ge7AIZYXhdjVZ=&hXP3S7XdnnnkZ=&zALN2KZnmmYbY=&M55PJeWcdsgiU=&ItLlZaWqfnfZb=&r7_zx4Xbqscrq=&RT7n7rYYmWkan=&NHZGBcWeXff_W=&rfB6EMWZ_kaXp=&btCFNrYYprVji=&fWXSjIXpmglYd=&wNtEbqXcUkbhX=&Fq2Q4eXjYihcr=&aW5H2sXbYgnZh=&d_vHXZUUcl_Uh=&rmoCzrYgiXhUk=&9zifrmWUrgseX=&VaWm9OZcYbksk=&dp5NXoZWfnaic=&OMyFK7UUjppnU=&qOIFgDX_r_ain=&ZXp2ivXppeUYX=&BuEhcgVhd_kmc=&JMWvfYZnVgUrq=&YoBvDuXhV_ldf=&bNYFyfZiiZslY=&45F_RaWohlii_=&wrUsGMUVlsdeb=&y3TgsSUlbsXYp=&QmYQF_YhpspoX=&RBVBpgXqW_gel=&JSCjoLUmohWbc=&ir3HqaWV_d_kX=&FUqfIIZbYeWVq=&xLbPGtZsZlsVW=&bwoV3DVVUsjpk=&JaxrlXUlVXYZq=&XD5H8xUlscXqY=&WJtcTBZnVnqmr=&aI94idUfpZlfm=&_iRUdmZsYgjr_=&sE7U65Xhkffcq=&syDYTlUfiZbbo=&vWMxBhWmcqjhn=&zR_TNkXcckUpr=&NbEAQFXingfnq=&AExzMTVffZsph=&9skdnvUZsmVmk=&7gfE_2UZYXnfX=&TcSkGwXsrUdhs=&_rDnMfVskhfae=&VBChx3Vheem_j=&qne7FWUqorjjY=&Wupb6YVXhWbkg=&ZznElpWdVsbfc=&Pg8tg6VpfYrUl=&LhCvAZZkZprja=&Ff_zhuUpniari=&AplrJ7ZfdZdmg=&gNdgMwVUcanmj=&iUMfn7VfjsUam=&3aCHn4YeaoamY=&WxZu3RVoeVVjs=&MC3I9eXlki_UZ=&_tFhZwW_qrbbW=&eH2dXBVgokagl=&O9cwxzVqUkXqd=&5f8G7OUnphfli=&jy5_ysZrmrofa=&qSOoRJX_Urnfp=&rlIvyyZgZsUXj=&RDJfzCUqcrnsa=&TPIFV7Xpb_Uk_=&vXUjl8VrmibXk=&zOYDXmYiYqpjq=&4KGccLUsseahm=&7TcWqQUnbWfbU=&7FEumAVWWZpjk=&o2XaRkV_bZWlU=&H7fXS9WsfkZhp=&NbNc5oXZrikXc=&faTlRGX_UU_cm=&yfesLVXZ_VjUc=&4_bfieWUrcVnl=&B_pO6UVUirclf=&ebzYP_UZfkqge=&smMnMjZZfpWqV=&nf9gPEWfY_osn=&pUkaOMZfrVbde=&4BrECKZUYdlqn=&KSShnrYncVUcq=&6rAEfMZelX_aZ=&Y2sIJkWqlXllp=&vJ8pivWhskWgl=&Me7fkgYmUeinf=&6MYNcnZXeVoar=&8RtD6GXkdbWra=&6OEbg8ZdqiYYc=&tjwSBGZdoZaUZ=&aJHgBZVifjdfs=&fshbdNXnfZqko=&Qwp8riWpcnfsp=&8HcEXyYrcWmkX=&Bhy6mMYhYgqaj=&qkIeVTXUdUfka=&6fkvivYfmdgon=&IEae87VVdajkW=&mZUHKVUfWerYk=&gVeEjTZsmbqXh=&IsuKseZj_ZghX=&OjhNLEZcUWqUc=&OChsihYnUnUqb=&By_Y7LYXYkrhg=&5VNMW9WerYlsX=&zR_p8lVhUn_mp=&Fmli6RXoflsVZ=&UsuUxXYUnXbZV=&8M3hRhXjkmWVm=&ADlFdCWfjdjj_=&ZfphukVmaghoX=&tqkWwIWndimae=&CctLucWfVhWpZ=&UYaS3hXUihnZm=&efraynZ_dmmqq=&vq_XmKXdmesnk=&_MtfbmVYeqihs=&frLip9Yng_plU=&DklKcfZicnUYa=&IpkhlrZlZWgYe=&E6nrJlWadiVZd=&x752i5Wgjlmls=&2G_7FyXiXhZWX=&ofQivIUcf_mbX=&UJ7oFpWgVnofp=&yFWGtaUfbchYg=&dZIGmiUYihoca=&hQo4wSXfrjXfX=&sfRAysZjliooc=&kVn3IgYYcdbho=&QjEExZZndUeaV=&flDJVvXcjbX_p=&jwg5bEV_cVUon=&Cqzse8Zabmccf=&ClOob7VYbWpkk=&J6mbvsVlgWada=&j9Xc5sVlnYhep=&wjAthlVYmbWpU=&e9YxABVhbdirk=&aN_urjZmZfogl=&Af6hwIZUUgUWr=&x6E4ruUnjanbn=&LXtagSZUXsVcb=&ch_h4sVUjbaYV=&LQRid7W_kYgVn=&PEejP4YbZfXj_=&2yoWlXXnmmlWV=&8Le9YRWXdgahf=&uRkiCsW_Ygble=&yxbVnyXWllXon=&jRboxgVsmjlco=&Ao7FTzYqUanUh=&Awl6nDU__beYq=&bMoGXnVehdXpV=&LyLNjwUbmeUoU=&awXxcNVWUcegl=&UpoIUBZYYeXra=&Mww8KyVjVnZpU=&EUEGpPXogVkpW=&9UmwDdV_eafgf=&UwBkbCXXfrk_f=&MjoWmSWgepjYo=&AjiRhaZlsXrYc=&_NDDAbUjkpafi=&jVPfxlVfUfsmk=&gA9upRYnUlmfW=&hUjVs6ZiYZjnj=&pqnclyUVYkhnV=&UXW9xQXYjcosV=&Q9BIxTZUlhXlp=&mB8dQ7UbWpViZ=&t3Gxo_WqYdjpe=&fguKMdYdkZ_VY=&d3WJXCXmUmbWi=&EKM6O8Wdksdbe=&sf2kY8UpqYhmm=&hHPhJAXmqfaoa=&gmJXtRUisqgne=&tkNvwwVocUhnj=&mwlCRJWZkspbp=&zam8l6Yjseio_=&GTTlIxVa_edni=&AynSUoZndaacd=&g2qLnWUhWpXnk=&fSVXxxZdhfpkl=&cXYZs5VUmflfd=&nUlzKYYrpYWZb=&3iUzo_W_sdgja=&r9zbeNVclYfbh=&bKULNbVpaq_ng=&zoYExpVbYYqgU=&QAAezeWqgparm=&lP3_uhWhhpplr=&7qNQQ2VjdUVip=&5IKax3Y_oggka=&8ZvYpoWbhZ_gc=&EDCL4bUjqjhZp=&RQVsVkUZUkocZ=&T5HRwGZdsrde_=&eA5L92Ujsaknl=&7lmV6TWgsofgc=&uBMRyZVXWmdbc=&KeTGSCZZro_od=&6trF85YpmjUai=&7L5BeRXhYjqng=&mDYakkWgiehZW=&tR5eWCWfhidnn=&fsVReLXirnVUV=&CEtbJtWYZngdg=&ABQoEQWYhkkpo=&SXBnZrZdjedsW=&4IEVzqWbVobf_=&DRaqVsVdkonUn=&Nb9P82YqqYsam=&UbHmN2VklipXj=&umL8U4Wpdhsbi=&x92nr7Yfgeebd=&bGAZhaUhco_Zk=&IV2zLSZXgjjZg=&iqZoVpZ_jsgqi=&5ylKpbXrkq_aq=&24Naz9YmXbsVo=&GAQj6TUgnogUl=&Qas6kNWWknsnn=&4gOlVyVprjpsb=&6yCKxgZZgWsYj=&HQy4QhZqjkanZ=&RA3vidYWipkbc=&56sw9cVW_bUbZ=&Sllkn_UckWeog=&HmIPRpXibnUmY=&qwB52KXWrsaZe=&WfNrKYYrqaoeZ=&gSPAeXXVoY_l_=&OL5trhZpmhYei=&5EcVvMZhmlknd=&6eOitjZhhlskc=&2zNNgIWephmXU=&OZ6sWeYrnUZka=&gZmwmOZVjXZlU=&BzyA2YVVkdXVX=&C9MSWgWhisabb=&cLZVC8VphXr_k=&YmFiSpZrWgir_=&9FqAHgVqciYpn=&BessguWl_jlba=&aJsflVWnssobj=&6bOu68UUXhfbZ=&V3dKLwUljcgm_=&ACMXRxVhVgacr=&fv7T68UhY_nnb=&d_r2_BYpYnYkV=&HKDanQXssZjeZ=&I3evKAZfWVnoW=&qlAEUpYnprb_h=&ksQapoZbaWkUY=&FAvtIPWsXZsch=&tqncbJZeigfpg=&J3lsWrUoUkaZn=&yhWQ_sVsfl_oj=&Mov7MZWhhfphq=&sb9lgOYVqkko_=&C9ZiOSXfolsje=&kWZaU9V_pUiWm=&i77qUHUdqcier=&g4LCx_UifsfYY=&77BpZeWneelnl=&3CoedpYqlrjoo=&bttApXYmdbhcn=&bhAvYXXinfZfi=&iiXIiCUXn_Zqp=&9RhzOPZggVcqp=&3FXAsUYdUheXi=&jKxA46Ym_didZ=&7T5qNLVssdUbl=&Qli9w7WXgafoi=&tNh9BXWsdrlle=&QpucbVYWbXlfi=&Ov7s6BYbfdbao=&icUr4_ZhXq_gk=&loX4ziXsfmcbi=&5wvYGmYlmVYZb=&qc_k7lWjkghfZ=&BFsebKXonVWUV=&IeuXyuVWeYYsd=&f3x9_aXckZosh=&W8ZiyTVrin__f=&uMCN6dV_cUXkY=&QEwkSAWiUmfbV=&HiF95aWZkn_fg=&W_3GtWUZk_WXs=&wh9xk9UbmZWrm=&yzR4pzXjiei_k=&M8DogsXWgcXlk=&h4XEpsYV_Wsg_=&LwbGAxVnccZcb=&RGic8MUcrpmsp=&b67AzvVmUWpmj=&CCyZcXUecglXp=&tYsSicUYUblki=&giJlTsVejjglq=&mpt7EOYiVnscb=&BmitysWmenXZk=&TORkBAXreeenp=&mqlvvjZcficqV=&665gPiYZccfrr=&ZKicMtWgkafYe=&QpvAhJUcsVhsb=&2TENUZWWa_kZW=&8sSlIdUYcZrUg=&8koDfkWdlpjjX=&rHZJceZlshlli=&kHrbivW_YpVnk=&nDpSOcZWkVpgf=&eAYeejUjmUfom=&zwxh7SZUnihXi=&MX6dmRZrggZWm=&K8CxdNVZnUfjU=&cVEScHZeZWpaY=&gk88USXiVWkeh=&IW4rOnXpiib_Z=&sJhdJSYslbsUh=&nUAn6jXhfjnZb=&EbogaAVVesdYr=&T5GQ9RZbXepfi=&Sz4_2eUWXnVYZ=&5utvLQUUZkfnZ=&hF_RmnWnic_WU=&ZzcF24Y_aVXVX=&MUClllUlZsfUj=&W5SvfMYonggXb=&BPbR5BZriVoXs=&uUmu6MXdnhVZc=&9x_i5fWqcWWXc=&ZxsZy6XVpqo_k=&QeSAXRXqXljZs=&zGHwjnWokii_f=&ePZ7jrYZqYXql=&zIXdaaYWgafkr=&QkP5_vZhXbaho=&EblnqyValiYcs=&YNqIjyXbodYUq=&p5pd_AYfsVmaY=&N778qpUsolqmZ=&ewlC8lZiWUUbq=&osXkTnVris_gY=&dHVbCUX_WkeeW=&y3PTb3WYiYUag=&88rVEVXjgcgUk=&E6XT5tYVaZgrg=&ndrSW5YhoVprg=&OwdY5FW_Xeac_=&_eQQVvVUacfje=&FQa_i4VVZmWcm=&Qzt7E7W_ohfob=&iICCiHY_iklsh=&Tai3oNYnnbbqh=&kZP6TBYikrjfp=&AwyjNVUfcpepr=&XFYB9GUqipccb=&WKqifaUpmprUb=&9UaxxtX_qagsl=&3AvLfIWffdrVr=&MsVayHXljelUr=&OYRHiZYWZsllb=&OklsSMZhaaipl=&8jgX24WijYjUk=&gscBeaYqVdqbX=&LdYKxLVll_qfV=&cK5nRJZWWcrmW=&37mg2rXmXcaja=&W7y4INVVY_qap=&qTFFu_ZqcpboX=&YRMgMrWgpdYeb=&OZIiUoWsiUrVk=&B6OxbjWcZbsUU=&dKUp69XbepgUb=&oAWl3SWqdZasc=&sVEEo4Xiogmge=&MTtYJhUhifrnp=&6SuFDFVsgWoem=&w2gbY3XrVrmWj=&cWMrvzWndVZkq=&U3EZ2iWhmsqgq=&hOGRMrZkcYcXm=&Gj9kheZVZmpoZ=&DKZqgnXlcV_X_=&toPCvnYnglakd=&UOuyR3Wndqmqa=&WrXdtJWiapqjq=&6qgnSmYj_WrVc=&yfWu3tZm_Zqor=&Bb4mlGXocYpoZ=&GUFBNSWpisWYn=&YBeiElVWXsrkc=&LC_dtyZZYjosp=&d7NMTzUYfemZb=&PZO2lAYrk_fgj=&GAQpTYYnbcrkg=&h5HhyiWjj_fZs=&pjIlrSUcYXmsk=&G8VNRoZUXsmhq=&ZKUPurYfpjsmd=&9NvynaVYccgqr=&LatPteZfpo_ks=&eetgUaVmcqbso=&QaO3_IVUjkndn=&E36Da8YUoWoeg=&nPsWwJUds__p_=&EGbz4RXUcofrg=&GgvN3DVspnejc=&l_KjsRXdeaYke=&e9qnFbUZooZXj=&eTnEcbVcXZZfZ=&RFxrLyXZYdbcc=&ithoUZVnkemdZ=&RlncF2YdXlYkf=&tRPn6oWagkqYe=&uJ6PbdWg_ebih=&mY6ze5XoXkUbq=&oMo4MkYcjYdo_=&f6gCI7XigrbUc=&3GYV8gUjbWqpc=&EFrDNxVqmg_an=&BuCqjuUocoojg=&XtYmQaVfopXre=&B_N8cZYW_imYl=&jVSuamUodgjZa=&e5524XXoWgUVs=&yDeVRHWjcVfs_=&HsXHtGWWhhhWW=&ULzqqtZZblbdW=&4Vl_YcXVmqfeZ=&qOWPOKU_XfYnZ=&vbtJHqVgjX_jo=&HtpmBoYZ_nhrj=&5krjYCZZZ_ikY=&ORl_O_UVkXrhd=&gafkBhZab_fli=&N9QRZnViolWl_=&xWHgNtYrhVZkV=&hTScaQXWlrook=&UtKHPeWeslXqk=&iZeGJkWiVWUam=&wnzEeDXmjgmYY=&shLgNfWepof_h=&QbfsRAWcZlmme=&MmSjHAVhZrcdU=&Ss4mWJVpmdghX=&NBiGGVVkbVgnk=&wLIzF5XkkhkcW=&LB4ZBZZlWmaod=&h5WMKGZUdh_Zs=&R5fOcGYoYlnUZ=&ESZX3CUXoUXqX=&oqY24gXY_bnhf=&_4ksrNUheVicq=&kdqSsjWrpYiah=&L7fiF4VWrXsYc=&AwaXhJZYassoV=&p_rJ4qXikcYjX=&g_gu7zUfoUkap=&pMkLeGUgmkoUp=&TPqUkpYdpiscs=&8YX4IQZWhWejp=&OesLO3VkXgioW=&FHaxcpXigYelj=&2NttDnXgamkUe=&Ni8_rmWhgpXVo=&crlph3Wl_dadU=&M7dKlDWniWnga=&3ue2K3VXeVhpl=&NttgFmZhqgYdi=&omBgf2ZapZXgi=&x3UyNMZmXb_ka=&IjX7wLZqnqYcs=&qGDavgUqV_jWp=&pOwdgtXjoWVlc=&T4p4FsZXimZbU=&ZNSOUdUqXodiq=&w2zfwQVqhjleq=&ZDPOcdUgirfXq=&AMqDdJWVXcjed=&Tc499ZWYiqsqW=&cMkEXHZVWaYWr=&TrY4gaXjbnmZX=&Nen67nZerrnan=&x9zVubXmegjgX=&3kz5NeWWYYXbn=&HtlTipZWknfZi=&MX2zcBYXZarss=&Z3HpSKVUarhni=&l4AyQCVbdkgjb=&Rjx8c5ZlhYsbV=&dn55_dVnahYhW=&Wd3bdRWUnnmcX=&xdXP9CVfYUXea=&vnzhTOXaUXffg=&EN5SI6UUVYZqh=&84TAtlZqfassm=&LSqgiDUhnWejs=&tGwewUXWh_dhs=&E_mayaVdhclbo=&DbgdxiUenpfYk=&JLvFBkWidrjlW=&EyPhM8YVfZpVh=&NTkSfHYdYrhio=&CJgi74ZesVeqZ=&POeeesXZmVahY=&gfXrTBWVd_oam=&n4yRArV_VVqpr=&PIK8yiVnbdmro=&pM_fEtWlYnWhh=&gBaZkrVnYdeZm=&iOm37_ZkchpWk=&v_GpkyXr_fVch=&Faf3yTWkXonnh=&K6I6BoUcfYVXb=&XacqITZioYjnY=&ckmJNRYelXmes=&pa97CyZWViWbZ=&wRUNleUeqVWUZ=&vZNbwCZpbVWiZ=&83JvE6XVZkndW=&foAziiYVrqfYk=&exu_zAVsVUaYr=&rcDFxMWlfZoea=&fNjWUhVmrkcfU=&Ed_rmsXeVojbp=&_Y4GCSUpopees=&SQ7Tw6UeWgUrq=&_xbsZwWnhX_cl=&HC2ZyxYqqeael=&7WM6CQUVUZlep=&HrXrqGUgUbY_Y=&hwqYgLVYZWddV=&OLwSEnYgdmqsU=&eQCARcXZgqkaW=&yD_hBwZYkXemW=&6agkRfXemsbao=&36xriUYUbodgo=&vFZagOZlaqYUW=&ja9HKXUnnnc_b=&vZULMkVXmqVgj=&4FOPc9WhijXXU=&cXNXiHWqUhhda=&ucMv_cVa_rZWp=&r_4MRjWjhbjje=&u47WT_ZZqedVj=&L5Qz5NWmVs_Zs=&CFoWyXYhej_mf=&aIHtDkYandlrY=&t8P6uKYVeslVo=&V_8IZvXVpbofW=&XcPjP4Xksmghq=&bRecVTYjscnrk=&i_pYZgZjoWYjo=&a_ijgxZXXeUjj=&HXCHD7Xh_aopU=&SDtjAQVilreUZ=&eBhpJmVeZYode=&yMmiMIYmojgYg=&TdLnrAUVorhpg=&As2eUCYhlahen=&kLnpz9VYZapi_=&_dMNHEWVUqlam=&HKN4CiUfeassV=&Q5gqBqYkdXZjm=&bE7l6TZYdpqdn=&tqWFvLXorghjj=&b5bzdAVZdeUcU=&ShKoQcXkXmfjq=&2xaRRkUai_lXX=&ltHnynZkeXVnY=&5dwzGNZYfUrap=&2Io42aWlr_cbf=&mweTX5VjVqoaq=&g5kQkDZncZoor=&FjGPI9Vrdqe_Z=&ke2TJWXdodVXf=&NIVi72XVVWbff=&7aJB5nViYUfom=&pVtHmOWjieghf=&U9f5ZXZofdkdW=&6jD7KLZVddgZq=&eJCUMvYj_gmfl=&hwSzz7XbdbWge=&QuN5g3WmgXVsU=&FaDbmaUmYljjr=&ImwJ4RVihhqpa=&6jCejAVYnkqWm=&zekKHdZZcideh=&grooqhVgqVpsU=&732cUwYpUUsjW=&pzg4vrXbVXZrq=&psUbnkYiklnbl=&snrzC2WnldZmn=&_XTVyDZ__WbVq=&DEeahyXmhWhqU=&H_54_VWiaYabr=&esyBDzZWbirYr=&5ljVePWifYdcl=&ETPnsEYfUWgop=&QRYgmgYfeiY_Z=&a4F5_RVghamam=&llvFVeXj_nmlY=&IueQuuZVkshhV=&qfXVv8UqjiWbU=&kMdH_QUbaUlgn=&jUuETIVmrXnUn=&GCON_bWeXeimW=&bOR8C_X_Wgaon=&s7XWqnXkdpmbn=&IMcOvkXohWWhV=&roN9D_Wrkglgo=&Gxm7MbYXnhedb=&68HTkoXqgqnop=&7AfSK5UpbfZZZ=&Ru6Gr6YVrhdfg=&pNFy46YglUZbl=&gfsEl9VsqXgcX=&WyGqaGZVbifqZ=&RfpYjLUasbkgp=&k9bT9_XeefXlb=&QSjTUHXWaWfdl=&g5tHwTUfXbnoU=&lDJvftVqlYWli=&FGd3G_YoVriYd=&eAaJgkX_qjgUq=&5ErvtyZoaZeYU=&XqpCTgYfl_slr=&L5w9ZjXbWqhXi=&ALICVyXarl_Y_=&5BaBefZnl_qih=&iGe2FDVbosfmZ=&lGlbjwUahVsVU=&DsoeIcXYcnXer=&pnwpJTUmfajim=&kNkQ_8WhhkW_X=&mp2dnHWbVjidc=&2EewlMUcmcepo=&vD4YHwXbZfqde=&lO3iHmZYo_mXr=&oi92bXYfpldpX=&EmVH57Wibprei=&ykxGsjXfkdcoe=&jxx5oTXgcUsog=&DpqEzCXclYmXf=&MsRzihWfdegfV=&BSjdLhWlhejfo=&a9pVGSXiesodX=&dOUXtTXVXeVZW=&OVAplHVV_YeXY=&rKlKuxWhkclrd=&aE2FqnWYclasl=&HR2kj5ZqZrbj_=&qyjqWoUXbhpmg=&cKasdCUdUrseq=&PAsc63UZaUahX=&mWKnXAXhijhib=&YTaltSZZWlZrl=&mPIEoZXmdqVUe=&MyofTvZWbWaaq=&_ymQnZXmkmXkn=&XDGHHhYbdgsjj=&EufugaZYZfhoe=&ty_z_TVlUmYae=&qceRNOVmjkdVd=&Q9d3plZfkngqf=&lSAmohWWVp_UV=&ipAfQPZeh_khd=&4FFkWFX_aWZad=&PsA9g4YaWqgol=&NVPu7OWcWsVXi=&aY_J5QVmeaior=&s2BpY3XaXipVa=&HM7xItWqsspj_=&cYPsmVXXjfVqs=&K4Pg2UUjkZrWf=&PYYqrOYimhnXm=&5SlQX4XpXhXYb=&hlfWF2WgXqXbn=&tLXOEQUbniWgm=&oRorIZXspkhWV=&TSgohYYbmkooY=&Jkggq5WhfWcXV=&M359WhXkjnhfj=&v4hXThUZ_ddac=&OwuuxMVXbiZag=&U6h8ZeYnqdkna=&MiTse5Vklngpe=&_gNMScZgmXbnU=&QWYm2KWqWmiXl=&NiDWt9ZeY_inc=&jDoPnmZofmWXq=&BZ96GQYlfaZVc=&4huy9KVekjZVn=&n6xpTGWrnVmeh=&fLj2TQXYohqhV=&_Yc4ceUjcbkjZ=&I4HVoCYYjqnhh=&jyPJCfZajUmVa=&v5pw3gVaakfjm=&iNSxeLWkUnldp=&26KeYZWmeomgs=&ZBNcxTWorWVVp=&iGbhGHVdomopl=&za5UQFUW_V_fV=&zkYJwzZhjqUWV=&lQGAZ8XUiUbjh=&_24VuqYaosgfV=&ctYtdiUkVjYhd=&BsZZHUW_gXigo=&TwAT5OVbjnZZZ=&NXnEl9ZUWZnme=&LrbjCDU_emheX=&T_hifwX_Udmdd=&xzONfCXgUgn_j=&eT8KzlWqfbpsg=&OTZNRRZkVgoY_=&APTFHnY_iWogm=&kLv6QgUVZgcVr=&Jy3ujJWhVYbif=&IT9SOKXkfdf_e=&W4GiQgYsokhjg=&XlfEDIWYboZkr=&RjzSsPZVUjZed=&gR3gndZkqVbor=&NDMQ6aWVZWnmZ=&5LNTJQYeiUkdo=&N83fsvYqWqVbX=&uOGFb6Xaqqjms=&CKWbZVUZYocrs=&gHx6YyXiYgbVl=&6xYoFOXYaeblj=&3Fc4M5YdYabja=&LhIxHfYYqjigZ=&xVkZvbVYsqqVY=&4r_XvgWrni_Vo=&JTSuT4XbbXlrl=&l9rnMPUpnneso=&yONs8KXkhdfWh=&aPNtpAXkjoYVU=&LWKitmZmfZlUl=&xJboQbVWmdmnc=&YLtPqaYspUs_d=&4Iacv_WWgkmar=&oDCQj8UVl_knb=&v9LZPgYljdpji=&oK3YufWXclnoX=&zrMKsgUUoqfdd=&k8h6l2XUVomsW=&qiKATUXUnhbhf=&Mg35HeUcUpnao=&FhCccMW_moZ_U=&6T4ErbUiahdsc=&OOkaJJUqmgakp=&QAvxo6Ubeije_=&e33N_NWZlsWqV=&fIb6u2ZVlpVUm=&cW9ZWKUjdXggl=&pbOAEpZips_gc=&e_UYIHZUYef_W=&eEj7QIYpVj_bm=&eIgY_nZYljiXk=&L6YzthYXqrkZh=&LALIZsWXanXVq=&bUupvdZeqiigW=&8XWidBWgcgrdp=&3SOxAHWeXVihU=&PlJXXtUWofhfW=&mq9RUOZpYdekX=&549lAiWYjoiVh=&zBWCeAXoYgqdb=&9jjV7lUmenZbU=&X9NkL7VifoUdn=&_rkCgbVfpXgXi=&iXkpDQYqmclro=&y9yskCUhinjoi=&NfZc6SViakffU=&8ZN4LaWrUjrbW=&B9Ah7pVbijU_h=&TMtg5TXflnhr_=&DP4oGgUVcWiVc=&E3cxA6VofchZZ=&__bSrmUY_mihW=&X66Mj9YVVUgfY=&LlGAifV_UYViq=&Ew3LEHXUfZXgh=&wpKRiRXZhrcZf=&t8c5D6XXZemYY=&rE59tFXim_lYs=&SPJX6OXkjYgoh=&lbr35lXnnaebn=&bqGrchWfkZcUi=&VT5iklVoglqic=&MyFdTpZsnlpho=&8jk4nFWedoajo=&qeaBzIYYeimj_=&vNUoCoVlaaosr=&qsSQ86ZnUd_fb=&rDNF8VZ_XinmW=&KEKhpiWkerrmf=&ExlZphUqqp_jY=&jbcHWrVVX_olV=&zN3b5VU__WbZX=&VaSKobYbUfWbU=&P9KXCDWrekocf=&g9U2gfYlUdjVV=&TbcIJlXdYUl_k=&xxWmcFUaopsdq=&luJSQcVolcZnb=&9ZFg6mWgWehlU=&6ZsqIOXmcXXUi=&7YdlQIUokXbef=&tFfbb8VjZebpk=&WiWSfYXXnYifc=&KgctRzWr_dreb=&HI_vpNUsanoeq=&kXBCYsYldolqe=&uxY5CQZqmrpYl=&Q3eu99VeodVsm=&RoP7gjWXbegrp=&R37lXbZdnWoom=&o5kkK7XhYgpga=&iKMHDXUqVegiX=&kiIQg5UbkpoVg=&4oNc5ZUWXmYlY=&xBcVjfXWjbYYj=&ZlqzTPWarbrrk=&Lo6cynZaUh_ic=&JFGUiAZoZfrnY=&AIKIfdZhaUqWf=&m9svs4Vplcncp=&4NKcJVVUjqYfk=&9CLtSxZZhagil=&fBQEgfYVfakqg=&zSTgWDWkrlcki=&P24BXNYjhhddq=&pGsMPqXrldekd=&Swb_uxYVabUX_=&dbaETnUqhVgmf=&vRSxwJXcZkqf_=&EB2RObXehWZmY=&pjhZfoYU___lX=&eA7hG5YengUaf=&vT22ytWYflUgm=&hl9A5RWkZbcVr=&4tbZScXnqeskd=&YYZy4HZaUnWXn=&ivzfeZUnflXYh=&sOphiRYZcZcYe=&g_dighXrnWpal=&dDPKgsVWZoshl=&z4aMzlVZmmZpl=&w_ACXUYdV_eeU=&4vmBSHUqqdrVY=&EDONtSV_kfl_n=&NoFPzoUbckoWW=&gdDZrJVqbjpld=&qoVNnQZoVj_jg=&klporQYhmXUXV=&o9Xz4tYdqdXjV=&jiEUebWWiafkc=&Z_7gsNWrmplpl=&diYFwqZlhnmeV=&rCrtVBZUj_qXp=&M2hfvoVrdYph_=&nkDt3BWoYcpmU=&efZReYW_W_m_i=&BmEMnYXYlolXh=&J4q_x_YbhoqWo=&O8EjPfWjqragX=&4bwx8EVcdmsng=&2qWd6qXcd_Xcr=&IYQa7MVpfbgpo=&cRVj24YcYrsbq=&UpeyTgXWmcUc_=&7yCBDUZfZodaj=&wuXWm4Ysm_UdY=&NsnC4aVgreiqm=&hzHiVBXUrXeVm=&sG79nIYZZksoY=&8sDMzZYqYUYXq=&pHUVvhVanYko_=&3d85LiWjrmmdj=&p2Z3oDZ_qiZlY=&2LbNFVUfUsdhc=&dfY6_fYapjkZq=&U5h4nDXZWYpbr=&QXh9pvUedflUs=&38NdIQXbspeed=&PfE4fNXklZgUV=&iTVXcGVkkVnol=&LoFRkuVbhpWhX=&tCuNIoYiUjWrh=&jwVHADWikhmig=&JRTWVgYi_heeo=&T4xvdbYgZbcnW=&4mROaLYseseca=&Tn5OWUZlqfhmX=&b3O8CyXddccYk=&dvjlpZUZlfVij=&nqSJpCUXqqllj=&lL87XnVaXgqYq=&4WZznmUapmjmh=&lpAaoCUXVWabW=&yHHm39Vqbck_d=&lv_cesXogjWrk=&FW2auyWcqmsre=&pgJu6RZigcie_=&ger2oaUprahco=&EheaSHYWrZsrs=&CcGkNBUcbqg_g=&ZvSmKnUbmUied=&fTtdZqWVebnqn=&dLMJYwUmlskiZ=&jFsL6TZpnlfZU=&LlVBWtVhoeUYo=&FoytCUYdqjVge=&t9hBJXYrrliUf=&h9Cu2_ZaqfXbp=&lVbXQ3ZYho_nq=&Hix_YBYVmihc_=&4i4xXAUkhgmhl=&Y96meHUakkpVf=&E2EVP3YVcfhqd=&ZMBULJUj_lbfd=&FWgOjCZfUarYk=&gWRBLBXpYiaXo=&zIptkLVjVUpqb=&2f23t9ZeVWlaU=&9VNvqhWhnYsih=&EFasTVXikUhbd=&AAovYYWdcobg_=&DRGPRxVUkZbil=&WIqObEXfZXgas=&ENwdN4VdWlV_b=&fpcOtCUfagfVf=&YIb37rYhlcene=&d9OXzAYpsZrlW=&drsWtIWhkkmbg=&U9fcYAZrWiW_U=&CMdmznXXjWf_g=&fHpsVvUajnoss=&afeyIBZefWbsY=&k_gf2fXcgohjV=&y5pKVnVmcdYfn=&rmXGKRXcfXsmb=&6Ey9eoUmWZihm=&OaJ32_Ufkmqdh=&zMI4YZXdnmarU=&XJCo_CWhUjXXb=&Iern6FYXiVbXd=&xx4TUMWkroWYe=&_KQxwUZXUeVjm=&uWhMRXZYcWphr=&PL5zaPUjpcbhX=&NQbFTxWqmZacn=&GmvBwDVbrnoas=&t4JGIcYjbVUbc=&6lEaMuWfZnbWl=&Xg_8OHUdjcddc=&Mab9cmVYfrjaU=&_VoeKIXiiqkqd=&eOTeBzVshsXnk=&2cu5qYZ_rZsfs=&jCKcXQZfkjo__=&f56XZ6XqXXUZe=&EnOUUsVcndbhp=&eRt5NNWUfrhbl=&ALvDZnXdrkoqn=&DrEk_EXrWnWkY=&MpkdkfXdsUjdY=&NhPmn5VbbbrZl=&hr3VffVhceYhj=&cRNa65WXrcoom=&wjJQAXUdpWhib=&_Vt7xYZldhpd_=&enYGY_YVWXdsd=&FFE9muVqqZWbe=&nAUvq3VXnabrU=&_3MgmBXskgal_=&57hzixVrojg_l=&s5N3vJXbjsoYr=&5qxC55UjhnXae=&La7HgTX_pYhla=&2wPfxSXYXWV_Y=&QXLBItUsqlpjU=&KXJxqCUkUYjcZ=&K9brG7UZqqsoi=&c8Zd4PWnZrodY=&ePjFBRVqkfZlY=&VIvkeYUppooXY=&Z3UBzkYjjhgmf=&ZoohrGYrqjVqj=&wBv74LYcprhXZ=&wLdr_HWcqhhno=&gf8SHhZfVrobo=&bk8IShYUUhane=&vYoCNFZhccmgq=&YqssbNWbXeodk=&QE_DaFWngZXhr=&OOxLfUYmdXqpd=&_Qzz6wYjZldWc=&kfzU5JVcapaYY=&DkWeuoWabafjV=&JZcQKzVogrVrg=&4wtwDbXZVrigZ=&vrqiLZUYcceUp=&gbibRHXYYljhV=&yS8ySgXdZs__n=&ywJqF9Ynppcei=&8Gk8OJUbajjkh=&OS4iSHUXoUYsk=&3ZyNkBU_enhkc=&HOXc23Ub_eYsZ=&d7OEPUWUUYllj=&nwwLBOXklprlV=&khnkK3Xrsgjkk=&uhcvkpZakdlUn=&BpuHo6UZleapo=&nuTEFpZhXjnsa=&8qDgORWUYkYeU=&YZTgqWVhUcsno=&cVYGpDZXVdfnc=&nyw8ucUjd_mpg=&L924GmV_cp_ag=&9KyQhuUeiXqfe=&Eu53RNVsqendk=&aJFdXsW_ehflm=&AViXJdVWrg_Ud=&_gqimrYejkXbV=&2jLOm9ZsUXXrW=&DnGxT7WUhZUeX=&ZHVxf3WgbkUje=&PZvDdCYmWcrrq=&OD6rHBWfgZmlf=&JA7xXWZkhVfnX=&zZJMPSYgdrXdh=&I7ptcGUsamkVe=&7_ZiIIVddgUUb=&sn858BZVUccrU=&bbSR7fYVWWmia=&MUBJ6DX_Vclcc=&Hy9jidWXqldXg=&mqfa4cXdkjeWe=&DiEFWeZUsmVfs=&kv6ZPtYcVXgcU=&xe3K_gYimrqWb=&BeATxHXXnkkgY=&kFbmkdWaa_cqo=&PtYOrUUmdlsfj=&pUocjWZqaXpge=&eW7_oSWeoZshf=&zp9eTNYmUVglp=&pCrpTkZsreYaV=&cXQFwoUcjWlkV=&MGyuATVWboZlc=&FiY2mUVns_ekh=&gMTiJGYXni_Vc=&V2KvJJUfYYjdl=&rF4HVCWo_WneV=&DnmsVZXeU_oWm=&kXAm4_YskmoWb=&qPJHW3Vhibahe=&7PIgSHZiiVore=&rdxc__Xolmlhk=&QlxSWiZfWfYdh=&CZadY9UsohanX=&snrTedYZocUi_=&X5JCfYUdnXUho=&rdnreWZZngmUc=&Qyj3lxZkoiXcm=&Oc7ijoXZVfVUV=&zFL9lAWkUdekq=&IfMBiKXjY_ccf=&LhOrkCYsUVoZW=&gbv5qTUshUlqg=&kEuTU5UjkasZe=&YT_GMJXlflaUh=&nNhS7oWXYs_aZ=&N8ZFzsUYcpUbg=&LsarMmWjpijk_=&jqxxgbYjkVqrY=&HGim4IXrXbUXY=&WA3mFUUhln_nq=&4_5zGNWfn_aiY=&fZvbgCUgljckn=&Y4QTdKXhbmVqU=&pxVWqFYoqZXVU=&TrFwGXZYjkV_c=&pf_ilIXrZk_be=&LM7pEdVfbqobe=&QZ2MA9ViohskZ=&_YVytaXWlnlsl=&Y6sK38Womaih_=&ORPb6WUlqYhZa=&SOHUPFWVXkqhb=&tgsTtLWsWiiXc=&2hqfR_ZVgenfd=&TU_zzfVeZaaqh=&Wfj6tNXbseg_c=&woJvSTYWspWjm=&K9o5puXmdjhio=&B4rQgmVeWZh_Z=&QkOAABXkVagZX=&JlXbfxUqpmbfU=&7RfjFoUalUrin=&uGkgvjYVZdZaj=&52KvvpYhelXqk=&eHJNylZomY_Wm=&7XY9TbVpfiWZi=&cm8vgYVqfsoYf=&jYIcaeVfmpaXq=&R9bZhsYiVpnZZ=&IFEPRhWlalYih=&zliDRWZkpZnmf=&g7ExTLZ_dhc_Z=&snagzlVVVZsYW=&fcwj_yVlVbnUm=&GYVzaTVfggsff=&iqR9khVmfmb_a=&z4LcxHZroeqrj=&Sp9i28Ughnsas=&C3v_HaWidWVhc=&lhltRMYYnadiq=&aFgi6jYlcdsmc=&iBLIbAZVbYpqc=&Q9B7MoUmbidsg=&YTZ4VKZmiVpaU=&ZHag3_ZVhUoYm=&pBgRQUYhqhYqY=&wBM_vUXdmVrWp=&MJSPHIYggsqXV=&WVWNyJU_dnjkV=&rBsEE_WUXeWcm=&k926kUVnYpijf=&gvlQHFUhWWdoj=&VCJJgMUllraoX=&blByfbWrWisfW=&2PCgDFXrkadis=&bGwGfkYhXVpar=&Bv6fjwVpplrUd=&hAwtcrWbUgpbn=&zB9MZPYliqnpi=&xGeOTFXehbUpg=&_XwbEqZfkYaUX=&47DcDAYjfcmjd=&hjtsWgVoWjg_o=&v9bZfnWrUrdfW=&IajajZXoehUec=&VJ9UpcUrpZoXm=&okxdDoWmWoim_=&yvWC3RVWdaWoX=&3W2WsoYkVWdZh=&4tNuC8Vn_klkY=&KkDqtOUikijlV=&9O9Qn2YcrskiU=&6T3r2zUdjrslo=&dfjeQIZWlWZXU=&XdYOqHZVmYpoZ=&yDAgViWkkmknW=&CQkrUhWhofZjZ=&PM7kCVZoUonlk=&Vw2nTSXkjU_bW=&6HKl8tZlmaYpf=&VyVxWHYhdXrWX=&Vgh7yiYjmlYmn=&HqB2ZzXXejgrc=&_3F9stYsXnnUY=&Fg2cBqYaXdnUV=&2XmTRsYanaXcn=&Hwt_ezZZghphb=&SRPCktWigpmUX=&EiLIjeZidhgfh=&rdYrxRVdgfchq=&Mznpg2XYXWagZ=&DncCK8WdXZnpb=&ULgyW6XacWYag=&WEsh4FZZjjdWb=&nLM9SiZqsbaon=&VgZllWVmqZaqX=&wPb96tYVqlZY_=&GdB4TtYjWhbnW=&At2woeY_eqrqY=&tUPsaJXgnqrX_=&b5FSIlYdsj_gg=&2_AX9xYcqfcZs=&7lrJWHYVraecb=&ck6DreUbpbVnZ=&865vulZUqfmqd=&i56YLWXl_nmbl=&kQWfaPUkdsmlb=&Ad4OjzXinoomX=&neUjd2WgbVedW=&Ozd3zYYkqk_VV=&BhDIBgYodXUYX=&bgWSJTXaaXmnf=&xpz3qFZoYsoaa=&QI8jdCVlloXim=&88eEgrWaUoeqU=&8iGyUMVaX_ZlY=&xHLsPkUqic_nq=&WkHcpmUiYZmZh=&zc6rzRUamqsfZ=&2oqMy3Yhcbrdm=&NEn5qrYXXilfc=&I4XUtRWegU_ro=&G7Op8hWodceZg=&sKzj5SYjbqorc=&rz7MAXZfjVgaa=&P7VQMoXbnaemc=&_VGCACX_sWWlo=&4nqlnHVphllWr=&jvmKPpXosfgel=&orVMfWZcsYlks=&JsrYIXVXadZVZ=&RH2h5wYl_Wqln=&V9lrYoXsrWsfl=&wcyEFLVrkaYbs=&tcWhtsUe_geam=&s9HgQxZqefbso=&zfEarDXqXsfdf=&jwcKJwZqWoisU=&VgWbQJWlq_WWr=&PoiRvoV_kbplW=&oTNyHdXpXig_g=&jK3y9SYqorgYh=&8cdDASVfjcX_g=&3EqGo3XphcZWV=&KF_xaVUYgeUjZ=&Fh2tKSWsacqre=&tL_UMWZrYUigd=&Dt5snyXWhnXff=&cWfto9WkhjfZp=&XQXbAbVeekVli=&NP2JdfXksUmki=&cD4h4KWgWhVhY=&JqGoJtVliripY=&t4lFLeWprgeka=&Dpu9jcUgindlb=&9M9p76XWanhrZ=&ItdZzlXsjXmXa=&DYo6TQVVWlUqd=&OFrzLRZcgWjXf=&dLzZeHYWrZnnk=&suwhoaUbZfYkj=&FBsLy9UYjoXii=&u5vsYBWjW_pWb=&i86X9rX_ZkbVp=&npiM7BXrcrkmV=&t7QItoZbpblge=&5SiJz4WgVU_nq=&J5PkjRUVsjbdb=&sXlx6OVrpopcr=&nGOUVlWgrqfZr=&eGd5hSYirmbcd=&HmMxkhYsVoYVW=&jAWgdXXUkVWlr=&TOl2OpW_pslXs=&Z4fnkrYbXchjY=&wROdaHXhYVjpd=&Yv23qJUmaelrs=&VdgKecWmeafZp=&S_vzpXZVZhYlo=&yX8CWLXfraYhe=&DGTTALYZiYfgZ=&_a7bZGYliin_X=&WfjwlNVfWhieU=&a9fxfHXWkYkiq=&nxJLApUdanpYZ=&3oPPDZVWomeoU=&o2h3HtYonYYrn=&NTZucLW_lsdiX=&cCHW4FUpaciXg=&_3ran4Uhnqbqh=&RodBJ2YUUrbma=&_F5bPHVilXXmZ=&vr4AruXcVleac=&WBZdyWXZjVWhl=&vTmQj4UsiZbre=&3QZNUbUhYaZXr=&_HB7DgZcXamWW=&gpxWmlXiWXnns=&xQiHiyYcrYsZZ=&f28VzgZqqnbsV=&AR_uCgVfsVls_=&DQuvmtZokmmqj=&U96bzDXk_oZfc=&aii4VlYnjoik_=&4KvDTnVidecoY=&wPyVCTVZkpcip=&TjNshnWWacXhm=&W4lwLJXrdceeY=&l9C4YTVbZjYZp=&McuLPdXYmrYks=&UwvTXfYefUkld=&gf2EThZVqjfds=&OkgbFuWohc_fZ=&diyHknYVkXren=&_gMIhZZVseYaf=&jKjfDfUaUonbs=&u6ZBD3Xrbophq=&Kg_rcSXsdscqq=&bsPGNQXjkikis=&PaLzm8Ycrnoid=&SiO7W7VXZqciW=&CRj6KCZghsmZr=&UbgbkwYsfiWWk=&7oYDjAYXknsVY=&8NAj89XrWYorY=&iMzzS2YkXlpna=&z7ypwCUnoXZgi=&CWri_zXmsj_lY=&s9aYssVnrb_lm=&XhIB8tXoYerhX=&Rgsqc6VpilkZl=&qxqP_nVZhl_sk=&8hylLvZphlhYr=&x3IZBKWdcsmgf=&PsNsUFZbZXdmb=&TMEvM8VW_sYWb=&d42UyGUZgisfU=&QRChN8XqgpdW_=&FmClLZXnpomrr=&G5rzBGVjeYWbh=&ISU3_MYjqrsXg=&ILvnBKVbec_pY=&7ZyIvhVfiVmZi=&KpMeD6Uk_jfei=&MIBsuGZpmisg_=&mCUpWvXaVprUp=&BiaItKWcbrjeW=&HKHrHYUZskcWi=&LlnG3KUcalpVj=&u6mDKcVfnbdlV=&wdFOfxUeVVafW=&GFRvZjUmneWch=&hKWuCWVisUaps=&Cn9TgrY_qabon=&Aav7O2VVjlsiV=&RnHboaUdmdn_Y=&zKnGhaWrWhhjk=&er32N_VWkgrXZ=&oIXAgiXkcmdXp=&R8Uar5VYlUVZ_=&rwSMxJXmafmZr=&VOHGGNYgkilib=&6vagSaYYgdkVV=&X5TsaBXcYggqZ=&tQMy3KZbZjUlj=&ZNXasyUsscnol=&fMac8OZcWcshd=&x_xE43XgjYZhY=&LpUuqYYslZj_c=&UagVrKVdkadVd=&nV3hadUfncoiZ=&ri6YPVYbeUVgd=&sDedk4WVdka_W=&92qRv3VYXkXp_=&mkXl27Wkf_ncs=&UAWvHmWlmUscW=&8CjhPzYdhsbWX=&dzZXKaY_jUVcb=&K3wjB8UhdgZoV=&7QkozWZXifXWo=&7GnljSVlpeapk=&yYUZJ_XcZc_Yb=&3eeUNVVmpijXb=&qUGmpnZnlk_Zp=&wFPUvQUXnssYW=&IiQ9skZgaXWcj=&U75BLRYaXkorm=&Fbk7b2YcclYeq=&zA8adAXpqsoWi=&lUaZcHXsYh_fr=&hVWtuvWWpVdnV=&X8vCZfUcokohV=&286k8_Ub_abgp=&frIAylYojjcei=&zBHqvzXYZlssb=&AEACpFZnqdalh=&5SXR5eYZsckpX=&hy92EyVpmoUih=&dB5Q3ZWeXnrdq=&SNbZGmYfkdbqh=&EWbA5uXhqqgk_=&UlOOd9YsmYffl=&VQPw29Zamnrha=&XnceC8ZZaefej=&GFn6QoUi_haql=&zExe4sZgeeUjs=&uBOzzvYgsqWeh=&lAZnoJXYUpihY=&OmQKB9YehUUXe=&kvNamMVdjUXng=&nI2yTjYiekhcc=&OYGJTfXUf_YZp=&x_YZJBYaVlkZg=&tFyOFjVk_epgX=&SLsLxhUgrpqpk=&bbX6FtV_aifrc=&JyEUXJYsne_Vs=&7A56MDUeeUnYg=&8q2CbzUUXjigl=&gB2W6TWY_ikoh=&myLLEnVhalhlp=&872S2RWcXaims=&gRTJFfYrYqcYb=&VgOGwbVZcdlX_=&slyobYVaheclq=&ucQ_IGYqWcccX=&x5q8fxWeqWfnl=&FmiYD_WVrhmcW=&kh_JAwVXqjZXq=&SweOqcZmfqqjq=&fHnthEXhmcecc=&qOfXDgXclahZ_=&dh7Zm7ZsjZosX=&QvlZOjVnWYfZV=&49C5PKVnpoZYb=&9drJorV_W_Xpi=&my5HmxVcoZ_XU=&EyYH25YmsmbZf=&BwWx3pX_Yklic=&QvWUOZYXk_hfY=&LUFHrjYsiUepn=&VLWGfvUhmeYqs=&6jmzqrYVZoWsj=&b2oJwNVbeo_cV=&QBuoLOVkcjVbp=&n7NXpYVphkgs_=&v_4zo4UUpXgYh=&vd3rbvXro_Usc=&v9fq7TZ_goihq=&ADubSKZjhphWi=&jB_8P2XoYkVWW=&ipucBgUfgqWnf=&BUfMQdWcnapVl=&XxUKbcVeoVdsV=&HCOLGeUpVXhqV=&NQPuFWXdfn_mU=&x7OYb_VUmWoVp=&FuUzIBUrs_fgq=&_AyagNZehijmZ=&9CUPCIWfXefsn=&LgZGuOUYfXnUY=&OlyXERWU_iVnc=&pNKHuvUpnqeYh=&mCwI86ZYmfjkY=&SuFdEzVqmcofW=&W5mcaQVaUjsal=&YI_jRSUmZgiUg=&hCaMQuXZnijjb=&ZGvP4CWoflgel=&gg4XlEYriigjs=&mgrorLUehsjZV=&q3PxCtZberWre=&4tlCOwUgmiVn_=&GQ4HqmXXWYlkU=&LAxadsUkkWiii=&atiKzIZZmllZk=&TgNTsMUgYagee=&qH8SLbYXchfll=&G6xHdnYroWefe=&QuMPHTYhiijZl=&VmiyKAUdadWWi=&48NuKXWkWqlaU=&PbIDroYhdpWgo=&_rS9CNXnqcdqs=&mUJ3xTWZdmjgp=&HqHScPWaXWqWj=&c6o4egWdoeoks=&oSYsIMYao_nms=&kYwG_iY_VWgnp=&KlxzmbXUVr_lX=&9kpca2WZ_WZWh=&qZSrfTXXqaogX=&RoOHrOVoYUiZs=&fqpopLXZWdhbi=&TtwhVYXdomere=&Yd8PvtWq_oeWW=&G_JOqqUgZpqgU=&pJQFOmVolfnXd=&hhLU29WWZYoXr=&MTyq5lYZXWXXp=&kKbVVXVfmalrZ=&lvAbZGWVlrbsh=&V2YEp_ZnUUhro=&NFLO6cUZqgUks=&47jUxAUekpfaa=&3LDlZsXYmoYYW=&7hFDQqZaZ_aoc=&sq5QUuW_lsadf=&TZPz8WZnVskXg=&2HoEGEWnUhVnf=&veH3AdUe_sZbc=&9OESKlXlY_Zgf=&pze_TjXl_aesX=&Z4agCBUjpjpaY=&Oq5iofUknpksg=&VdFWl7Ufpedci=&ncmlDkUhrXVUm=&J8AKBDUYheqae=&Tv6cmJYpYjcXc=&GVTzZSUZgehhk=&SQNYvRUob_rjn=&uVNMoFXdchcfe=&sTasOWYjchZn_=&S2fRaNWsZocll=&E9naZuXbdfmje=&BqBrbAXZkWYcp=&S9XynXXghmoo_=&OaY_ofZshlpVl=&Ox6VX2YaopXUc=&U_xE6NZspfiWf=&2frSu5WVkk_Zi=&JJZbz9UYmjZiq=&qlqMHwUickZpr=&8iXSIAW_XZXXh=&vxgTfaXppqpkX=&lAuNhHVikbehU=&ovBYvUXfojpeU=&nIsNWuYmeWnkq=&rZHxuNUiWWaec=&zIfCElYfjfWhg=&QUkXBlWmUYeWa=&Fy7QPgWnhaebk=&6iPSnbUoelpdY=&O5t9S5ZpiXVmc=&FXWMkxVZnZZdi=&PUwz9vZsbVpkg=&u5npyCUhehWdi=&J8xfiWYlUjjWY=&eMaZaLZamUeWg=&5bryvIXoXWnir=&NGoY_KUddVorm=&jYATJcWVieohi=&qckvlCUXcYXVe=&mEWdawXegVpab=&qFE2nWWrh_ks_=&WCW6NMZrdrfsW=&38az2lZUXh_WU=&5_Tw2hZVnakWX=&sO7VJOVlcVcaa=&O__YYzUlqdZXm=&kHjqZcVVhnbdo=&cwIH3zYUgckVW=&uxr9A8UnglpXa=&6pdRNvXarmdnX=&Kk_W3GUigYaal=&_xo8epXnsesqm=&XrnptyVbrZZsh=&hkzPHeXimarsV=&8KTGaBYYWmUeg=&9TEEgeWrWYara=&LYuDkKUXleipY=&VBnWKBWenri_n=&txdC9YYfmdooa=&RbTJZjY_olmjp=&yALMohYnYd_li=&XnD4PyYgpabci=&yFBtcFZlipnjq=&A83WHTUjVWlbm=&IEnVVvYsejpan=&MvNVBRXWWjadp=&52KvUHVcWod_U=&5rxu2iZUoangq=&bmmudtZsorqks=&SBzJwsVnsUqXV=&jEwHTKYqcWoWq=&crDCxjUqdYbZc=&w2JVpgXbdorid=&vyElYuZYaWdZk=&272e6LZUpYpjf=&4zYXhDUnmrdZo=&sYZt5CUefjXgk=&WWmbWgUaf_ZYc=&w3UWHAYbZYmbn=&H5FJpAWqqplV_=&aZjJ5lYlrniYi=&Na9CbYVcgkYci=&z3kBlzVodones=&AjvBXFZbbZbpk=&bxcDD4YlppVWU=&IS_LJ3YqUdZqX=&HSwos7ZpnZgjf=&gVYRxKVkbmfiX=&uSWIO9Zni_pgU=&bUPvLaW_arnbU=&EcIVcgYdpfspg=&TOOPWZYqpsVki=&CAPKjcXqnblXe=&S3frXwXUhjhhd=&eusdmbUYXkbqV=&5aoeIeVkZfpgp=&Dxs9KPXbkWWkc=&tiC924Zmsdmec=&K5wteJYgphpmi=&3GA6KBXYWYmfV=&MdAIrMVmchlqU=&VCZ5ltZigkjbU=&rns4fLYairYUj=&hen4_YUpnmqll=&VClnAwYncqjjb=&MhZHvgXodYWZc=&u65zn2Yko_dkm=&ZVPq7mYjgoaej=&hRInbGWadamck=&fjndcpWYmgZmp=&wXKhSaZVWnbkb=&eFyiv_Upg_ph_=&rvx5nBZrqsrlc=&ou7KYgUWkZmms=&QN54iCWosYbiU=&AyM9cDWiVloia=&ueyYXpUbdfUmi=&NLfEUqXXjZXhs=&uZv_bgVcVfUj_=&xaKgqDUplinqm=&xfH9nTYcUbrko=&66P3QvYcpoqWq=&Ay7jJZZddh_dh=&H_vcQfWcghUWb=&AMRC6eUbgqagc=&MIYv7UUsqoVYp=&PLvO7BVnrUWrp=&a6eDQ6VqfsjXi=&fVpa3iVosUdW_=&jrVuO5XfooVgf=&OarTZiZdoq_mW=&th74KUUeffa_c=&vfM65FWWlVslg=&qFzhQlWfforWU=&A8gGtDUnseqfa=&bnPBAZWkeapfW=&3CrEmGZsWsbgq=&zLi4HAUiYXabd=&rsGqEvZoqjnZp=&cQtssmZdohsVg=&giDwYRXppgfpa=&c5AynjUYfmbir=&IU4C4iVoW_lih=&CGHOaZVgnndmX=&wbgTP7VeshZcf=&yOr7eyVkoVeVV=&TF4NwOYUnWdpo=&68qcUmZnhcmfn=&QQRX_9ZcqpoVi=&SIGpaLUihcbZk=&ZorQWOXUVYnog=&_GsdYDXiepihY=&5vTHP7XbmVcjp=&ovUKhWVij_rWs=&OLIkf4ZqlmnYj=&ICzyDMXlYngsq=&aDD2AwZsgahVb=&BpBrPnYXsUgVf=&ZJ28UGVVbgrla=&hyCHkAVbiZpfY=&Q3ujKPXhmjkqi=&6Fj_C9UrfmigW=&MSeCwpWldaerV=&akUQaVWZspmZb=&HAv3QBXshepbk=&c2rSToYapXXXU=&ZNv8J4XVVboWl=&aRDL2JYhVnkbi=&PMCK8lVUVXl_g=&cOBRIAYgajdVW=&kgSNUOU_rkrfb=&W5yzvsVrXcmfV=&77ymXEWqXhWhV=&a9KtwyWWbdXbi=&T6En8iYUVgerp=&YjV9VPZYaobUh=&kK6aUYWoreljr=&2jIxxzUeXfeZV=&veZ24LYZ__gbU=&RJb2u9XUmfa_Z=&w5qiRfWoWWoan=&9B_gMtWjUhqdk=&dv65G6Ufschqd=&eTj_qsXqebb_s=&rmxSjQZ_poZpq=&xAQDCuXrZUWqW=&6ixWPkXrmXfkq=&SHaWY_Xsmrrle=&53JdrOVpnqpnj=&cHt59aZUWnYqr=&W_tMbOUooa_eZ=&d85UY2ZrWikbh=&YK58mpYVaprgs=&SLIkP9VUiahVc=&RaBWbuY_amgZV=&GBUgMOVhsZY_h=&DKbe32UZjVcbs=&zTJCUaUcaaWgW=&HYP8KuZossrff=&cAmVNDWWflqVb=&bMuM37YXbeiga=&6aMNEmZpaZgdZ=&lUNjJ9ZicZgYf=&cYlJvkXhbjoco=&ds9GlBYmeoVWl=&iVkzy9WmoVVgd=&T2l4u8Umhrkjd=&TlfddzZikqXkn=&cjW5y_XUeipoe=&mNlsPOYpbddsi=&hzXEuSXsXjnYo=&eQ_6rFZ_ci_gd=&sydtqsZ_lq_he=&MkDSMpUcoimgl=&skfhwLUmgVoYZ=&pso4ttWrilpVf=&fRx7VpXsXdalq=&OQlxNRZUsUY_o=&jFeEkOVnXYhnY=&ydwBpCYZiXlel=&Dgo3FZUenppWn=&ByHQX4W_khaXr=&eHc3yYZepfdhr=&bTwsoSZ_adYVq=&8dS95pYZZgmpX=&ZMJNJNXaieXpr=&sq8GMHZjbnXfl=&qgyU5CUdjfpqf=&BYFHGwYYdnnpo=&fSzjBAWsaXnoj=&ETGcJmZkqW_gg=&JBQrCmYmrUrmo=&Dt7SDRUmXXojg=&Ffd76iUZrgemb=&LzrlMrUljfo_j=&uuRUgsUshjZXg=&SNHkrNWdqfkep=&DcDjVxVelXnYg=&MRxktlXgUnqkl=&6SemHnYgrfcfj=&2c7uCxUlflX_b=&InpHhrZlo_nj_=&NUHNzvXlbXUkc=&vZLasDVZi_eib=&BgRg_MUWhhbXZ=&8sQK9ZYpYlsZa=&bdnhnWVd_modp=&heiToBXUgncXn=&d5Wf79ZilUjWa=&rTpMt7YnYdlfV=&5WFJXMVefanfW=&PztGbpVWhWVfe=&wZ_OCNZkYXipo=&s6GUvcUmf_Yaq=&Ft3LW5ZZVegX_=&6XdGAEVhdrndY=&jD3IryWqYeUsU=&PLcxOOUhhqUcU=&2RsYZuVoscanq=&wkEfSsWkesccq=&CmXXbuXjYabsb=&d59im7VbV_ark=&vbK7ShWoaWg_m=&VfhpLzXlYoZUe=&e9OXNaWmsfrYZ=&PAsDMkWlrjiUs=&Pc2CoxVieZnef=&uRGQHzWnjriYb=&sKMRKlZgjnrmd=&GN_v3qUejVr__=&FKoMqIV_XXXkq=&izgez_YZfngqa=&D8Y_7zUZamroe=&u8Bh3nVklkpVX=&Oz7lsGZalgZbX=&yW2FgoYdYlfnZ=&SmLIu4WdlmYkp=&u73dMDYbXiWgn=&MCl57TXkYjZXX=&M6_7rnUbb_UjV=&AamkksZsqjVgc=&ja3YTnVcU_jmk=&gCDO4IZmpWssp=&X6aMwBXXbaVUm=&U8y7WWWVipqhX=&xeC5HLYdcqgap=&3_XiPOXbjUgfj=&nREpjkUacUlhd=&8x3PvXUWdnUo_=&UkSZqSZgplYdm=&Y2YC43YbjUhem=&fDQ2lkYlbekad=&q9OqRFZkbpZpm=&e7WfLcYkZafmr=&_D2nhRXgZbjgY=&Zc9RUWUbgoZrk=&mxgw_HYmjdmYX=&oB45M8VdharZh=&v_KKGcWmUdkle=&akOInXZsbofgo=&XIwgDgYmcarXV=&EEszXKXmrUrjd=&Loa2gbZgchkbr=&tTju3pYjXZVji=&lUfIvHUhhYnsa=&RIpNzRXiUqpnr=&cLwjVIWgdYqli=&TqsJglVVXVqUU=&u6bbxRYdkpWZh=&okwkoyWdVsp_m=&h7yGeXYjfnYbl=&6TXNaOZhnmXUf=&pUMcf2VgZlikf=&P4FuhsWaZkpnq=&TVSEhgYYkeXgV=&Bi29BSXsolelX=&CBWAwUVrkloap=&EPUfNhYprrq_U=&cr99BXXbahjio=&5FQjXAXjfijUm=&yLorjOZVWVrom=&AOYcyHVpUdnqm=&OodzP8V_Yshna=&tnfXwGWXnpcbX=&ssirrbWqkmlbe=&JPrStGYoXmepj=&4VJYJFWoYVqoZ=&jr_fJwYdpqrXh=&RpHy_pV_hgjme=&7m5baxUfesdp_=&QEXJgHXXckmie=&U4TM4lXsXVdZY=&TcPlaXUihbcX_=&FoONKfUbejqZX=&Rr5LrMVsWlrs_=&HjCXtrUrnapWf=&exOG2xXnpWnXr=&_obErjUgkngna=&FdbffjZoZVaaq=&lExBfzXpUgkhX=&wcpMm9ZcYmbeo=&FSlGeHYYrranr=&ipiz6UVrdUdqk=&mvvdALZockqW_=&adSri4Waspfgo=&XKzU3gVUVfhil=&iSGtpMWWbijmX=&2OUb75Wmikdqg=&nG6x_RUWp_gWi=&cdJymgZkU_Xcj=&ZU5vcuUsdgchn=&MTeYWaUmsfmUr=&cs4jliWqpoian=&K2GNkbUVZVmap=&KrnSG5XgVhaVj=&w4z3RaYfXrgji=&fkZShiZpZVhnq=&AiDHX8Uq_eiml=&WK2vW2ZkZgkUU=&3gd2LHUhmeYU_=&5xN5zMUWrkrpp=&zZ6F7FUWbsqmh=&7tfTyAZkkl_oo=&4OcXlYXqekhcq=&5HWH5qWZlqbaa=&FieAJKWU_ZbgX=&Cj9TINYobXWaW=&JZglUJYkna_lV=&tXHoV7ZnqYbUU=&WJ6c6VWdsdfdV=&fWaT8CYpcUchW=&uUqaaLYlngXXa=&Vk3WoZYqsboi_=&lUApG3ZjhUUoU=&ew_lbWXpVW_nV=&dlMMwXWhkblkj=&bnUBvPYqgikWs=&bLNODYUVksonb=&f6FNPxUXgkcUs=&FinlFoYYfdiha=&GjDzReU_jrrqW=&TSlAeDUmjiUp_=&ftIATMYgr_rfh=&gVBK3kVphhcef=&WY76MKWljXcsl=&KyNQD5XnYelm_=&Hdd6joXWpisgY=&bxvCEIXn_nZnZ=&f9dNhMUZWgXWp=&MqIhEjZUrcnhh=&h67DSWUaWgbna=&TnQaKrYbVVlqY=&kLadJEUofrhZq=&Ur5IbIVlkYXec=&C3Xl4eWjUaadq=&X2AIxdXraoXVn=&8Hr_z8UnnosVr=&fPkGnYWrUbnch=&5Gb3aZYjqhVhp=&OQ3hh5Un_Xcr_=&wKkdATVhdjrUU=&nCf6_6WkgnVlg=&S_TmDGWqbigfb=&LxEv2JXcfgdqh=&7QEw2fZdmjiXp=&NIuE8mWWbYYWo=&F4L_zkZdcagr_=&lap7MgVbfs_fp=&hthVh8YhlcmUr=&F279j6WYjqlWh=&KY4GXSXZfZonk=&2__hQdWVm_ifq=&cJVWYsUjVgkof=&k9pmiqXVWskjf=&BR7oRoWZieVgo=&up9OCHYbohhbl=&AB55sYUqYerXo=&UFsWIIXhVVXbi=&DORmNRYjWXjmY=&m_fmkyZUUlbar=&APKP96UUXkrco=&fgcAPtXbrZjZ_=&gIuNgFUlUpkpk=&cP9ZI8UnlrffV=&elvFIDUsgepWo=&7AZ3sqUpjagfl=&zYJXpFVWlfbZp=&e9L7FhWrZWdhW=&Vxs6XZZpeachX=&HRaLf6VnijmnY=&6BfkzNXrgbYZU=&RYpX5BZknZoVZ=&mhpVEFWpiUsbp=&dLbBl3UoXZolb=&VXYZWlVWakj_r=&75xBEYUmeodsg=&yCPMDuVYdsZXb=&oeGdPGWgZhakl=&7MpxVnUrnWfbr=&tj7V3GZlWViYd=&rZrVPFXspcqib=&csRLtNUeYXXmb=&LMFDVwUYcn_nX=&ZuCwJ2Xqjgm_Y=&vXv_QsVrmghdY=&6olzd8VgenYka=&cmYDA7XdZdkbr=&T4Xmx3XWaWdni=&CXVpmPVbcUXZl=&dCAd7vXa_bkok=&bvlEPkWoaeWjq=&AgvgBRXlkldVh=&VJWdjrXsnaeam=&gGdH82ZhdWesg=&f6kISLVpocmXZ=&D8eKHQYdqjcpn=&LMwGPCVZeilga=&aqXVwnV_cdmVr=&IRyBNWWgpWisV=&9pQeCNWXUYppU=&CnPRGzXcjcZdh=&pW99QOVnUXajc=&UfSIkRVsooZmX=&DW9LrDWoZpZdj=&VVIDyYWqUqdfm=&Hs_lFWUlacdsk=&cChZvXUoojdkj=&3vIcgcYss_Yrr=&cAd3rqYhUoUpj=&G7N6jeXldqmWX=&bmeRvUWYjilio=&ZOJxkGVbWZooh=&AULFp8UjnjoeW=&8qmJNhY_UWmmr=&PCucGIUZqqYqZ=&MezGooZUgcqbg=&TeXahgXmVoapp=&FkKjiyXesiVUp=&Ybrau2ZZWsbnW=&9FvotyXpocVsn=&2rZEIaYplYkpf=&vbL2YRZrihlYi=&IYJaJ6XnfmalU=&2R7M8XUrVmVcq=&4KNy6yYfipbZk=&uc8bDxXahVWms=&thrvB7UsYYeZZ=&k4r7_3UcVXhmq=&n2rirMUbmXlqm=&jvAgy_XsibaUZ=&VdzrWxY_iV_mb=&yu9bcIYjninfi=&3slYKFVbUrqVp=&6NGe8RXrYXmZp=&QkRlM2WfmjWYa=&PRWVydWfZoYbs=&aVWV5UUZpXcld=&NUURaBYkjgaan=&nhRMIdVUpVklp=&pELuWcYqlfcpc=&iwtPuWWmYWVdh=&oPhMioVUbgbrZ=&pQFU8gYqZWUf_=&Ngxv_PZnljikV=&9HxRBfYcfdiqW=&AJ8PjdUqUVoor=&jRFXWJWelclZZ=&i5iW4EVWpWjmp=&ywVPGlZsbYjqn=&wKfJYuXjiiXks=&FcSlScUaYsVsc=&JIwNEuXVaiabg=&lHPagSXWpVrag=&PPzHVWZdfeUXU=&V2g86fZpWpW_n=&NpvSIPZskboef=&GzMMBAZimi_Vn=&rtuiAWYhlVUnX=&e9zs9kYageYqW=&YW2tveVVcofap=&bI45dRViZkciZ=&Y3Vhf6Ukbophq=&QKnlYNY_dheXd=&AWrdS6Yihor_i=&fprqPFWnV_fWj=&OUzcX_XhaUplp=&bHYnpWW_WrZgl=&Ic5szyWhUZo_W=&z6Z3UXWrlqsrq=&5PQxCFZsheseg=&gLRuAmVpXZmYV=&QwesooYndelsk=&a2CiWDYUaeXci=&sPJYPQZcrnqoj=&cVeQw5WkhoVc_=&TuC_VmVsnqrYU=&p2CMQgYWo_fim=&Q3iQfRUilUas_=&mbfTogXnUgisg=&cveBKyXqUUomo=&YOi3jHVUljjoZ=&cdUY45WsrjfZh=&njAuRAYYs_VhW=&LYtrWhWfWfrac=&3KNRgPVjaclen=&SVAgfFVlehZ_a=&LUcGTbXfrblho=&qaRjW7Z_s_Vpm=&3CORRlXq_iZiY=&3FnsZCUs_Vghq=&Kubd6nZbgUken=&HFckueZsZfjhs=&Hs5RO4Vogidrp=&ENuozxY_gqmUs=&qYDasrYcUV_mW=&5WT7_NYWmaiUl=&OdXh2ZVhqXdok=&AOVedfVUoVfpi=&m98BAHZigpgbj=&FcR2RdUp_oaqd=&ffxRsIW_iobWm=&xCiISYZaqgnsm=&YckyxhWjerpYk=&mQhhK8YjjkjYl=&VTavTbXjsalds=&RuvG6pYUjeknb=&jrPJ9qXZbkpbq=&6nnoJWZisZcYl=&aVLVhWUbZUXZr=&y5gttnUdloenX=&YDvcfYWpaihWU=&cQZ38NUaapeYf=&ipLMbJUqjXnqW=&7nxV6oZbqdghd=&xjdEWbXafVkpV=&aWVeV7VhjZ_cf=&8jO8evXeUcYW_=&J7PqCSVsbbqbf=&ksIPbCYiVgerX=&W9caAPYUfophf=&sDyh_BVZcojil=&rLexK5Ulgebhl=&e__ZCIVgrjoWf=&yAfWCHXoklnXZ=&Yve3ZoXqXmlWs=&S9yIsNWddgUkq=&lwx2FDYphhUon=&9ICu7AXamrnek=&2VKgVBZkcWpgb=&s6Q_deWUmjjnk=&yGsAfGUplifaj=&wrA7yOZc_mrpV=&XuGs3tXajeeUX=&poggcOWmhZolj=&OZhbpiZYin_ol=&s5wQSEWghrars=&JE6jerWdrWrnd=&ojSvOiYpjWgsb=&bqXLLFUXa_UrU=&D45MaaUbehqgh=&ZeK56aUhikhho=&Db4Yb5ZaVhs_U=&nX8dNDYhefYfc=&ATl3nbXqeklgb=&WpbMGSUkkqdbd=&Vpmn6dZeclisa=&f2bHhqWelXqrp=&9G4GraVX_oUZa=&bLTr8OZcjgZin=&6xlaVHWfmXshr=&2EYsUWUljsUWk=&BTN8WXYeZafrV=&6TjvrhWgb_XiX=&rD8yrWVXnXrlX=&rR7i72YWonhie=&EmHqnVYkcbYVa=&XdzOqKXWZdbjf=&IZ7B9OUcXZqhs=&_aOfkOUfchZdW=&qZN_tuZkpXYbW=&cyuaLdXkj_ris=&SJup49ZbolihU=&VotJ8AWamhdUh=&57Cj5SVfgngrc=&NRB4thVf_dWqs=&dVMHvrYoqplco=&cIFXMFXenidap=&xy73KEVeqlnfs=&HgLnAbUbij_ep=&WsaFLiWasYdim=&BQpLSaYUbYdVX=&FWKFp_UpcpWfl=&xLQJmgUfX_UsW=&5WzqAmUrUgfmU=&_LxWhIVpXWWqZ=&MMQ57mUXqdoUp=&YiJ4zFZWikldW=&wzyhJRWkepnqV=&9rTghlZagleYj=&pBddiRYWmVgZo=&hCBFseZiamlWq=&sVLZdTZUZhhie=&2IVvLSXi_pUej=&kj7ZTrZmYUkom=&gwCMSVY_fXgZb=&eNOMxWZjkncUe=&qfrCQmUgbidbs=&YeDtMjZVfqrgo=&nsN3E4XqrVjjp=&BXDNDrUbhblgj=&Xlsx3uZoWZnhg=&o3MkHCZbidlq_=&Dwnfw_UikrZhV=&ZRfl72UVXqgjp=&vjOou_WhkidVY=&mrySgiYsjhqik=&IOsQRyX_nfVWe=&DPHYTFZrpYein=&AUijiyWqigjZg=&3PVx7AZilimln=&AQAXHBWparjUp=&4JZRxdWcVVjpf=&t5vPyIWcehkir=&HC5UgqVdj_ore=&eqonUUUeVVqnr=&xUkCyHUYfcgXp=&vTqkNDXnmVenp=&9kx7sUZg_UcVc=&9luy3HVXm_isd=&JXJRwQUpfiUl_=&4R6ZFwXrpmlXp=&9jPQbCXnbhsdZ=&2UW324VonU_c_=&v4VnvXVdmo_hk=&RvypO8ZjeYmpe=&sRFDviX_jrh_p=&xCbOKSWfsjXjr=&6ZVfgtXihsj_l=&OEdLvIWemnqgp=&FoPQ9xXkVhVVh=&lDp7RpXUYc_VU=&WeDHBkYYomcXh=&AQn5elYleWeia=&cKtcY9Xgqokl_=&LmM6bDUdYgjaZ=&wjl4JVWqcimbV=&On3t7xZUlsclf=&3atus3UUoiUYg=&bBvyppUkqrobg=&l5ITDZUffacVc=&gXNKTRVodaUjq=&4nM7Z9WmXp_eq=&Zo8ewvYaecVal=&kCvdabZenYjYf=&xT7pkUZmeVX_d=&YCMJ7OWrWddnk=&zwTmypVUqmlXn=&eevyS6XWfhdeb=&_KRCiEXYYdkZn=&7AowZ_YZmp_aW=&I7_2c8ZggZYlc=&Vt4cSLWsZWeZn=&lOom_KYUX_phb=&NbiIAbUbkhXqr=&rsTYfiXcbcWqi=&kepwhvVdpsnZf=&FyFIjCZVesXWr=&pdJWiDUYjelhq=&wfIJCsVmrfchj=&_JC7jYUljnjle=&ZG39OuWmrqYap=&erLKbHWmjclfU=&IwrKKmXdWossg=&USw327YpYUZUg=&SpqeJOUiirYnb=&5MloqmXgldrci=&3alPCaUdUVV_c=&ILOBMqZjbkljk=&TMqtVMXppogpm=&scnOPvUkohkrg=&daUUcRWqsl_rl=&zkSShoVVfoZab=&x3JATZV_pmgeV=&I5UwxYXWfr_Xm=&UH7DrJWkaUdrh=&sDwj_zXlYkXqX=&Bvq38sVfnbksW=&UAj4m7YlhnpWZ=&m7LjKPVpginXm=&UrVJ9DYmndpiY=&UqdX9vZrjYdlV=&8LLfSSUdmYWVb=&JGM3IVUji_Upp=&uMuaoLXniefel=&aQB983Zd_hfYb=&lTnmvwUadrdWo=&P8s3IGYmfqgkc=&xC8CevZfkYWrV=&hHeyUUYZenX__=&3ZPqhlVUpqepq=&_tm7vkVVWdaWq=&jboyC9UqbUWcm=&xVtzCtXadYUUm=&DcvpoyXVWZWfm=&5FPrRkUjepjea=&OnexT9Ya_jmri=&jNsvoBZlkdfmf=&gkTqjgXokjlXZ=&rUD7hYXa_YYkV=&6sDbJqVcngXU_=&p8B3pzVpsc_ai=&jNPf8ZYdkdqYb=&DnNd4YUnZqUnh=&hfFICcWgsgeWq=&dy4fpBXrrjgsq=&HwMFUBWqUbXa_=&NYthbNVoocmkp=&kzjSpKVhpdpcf=&yNQQl9X_YfXld=&bi_48OYrmX_Vh=&s5PEPWZ_ljcia=&udNjk5YWhfhil=&rxgZIYYXaobao=&8lVYNGWaienpr=&gTSi_SUqkWlbo=&twjQlrWYghmmm=&QiWfq3UlVVhgY=&N4IdcWUbqrglb=&N2HFBMWfombXj=&pOeNGjXrpjsag=&itZEcGUsWb_db=&NmgJGoVVrsiok=&px5_Z4ZlfUgaa=&mqm6TIXabqcfW=&679n2TXddaUdj=&jxUTSmWoeYqYU=&AHVidSVe_Vgpr=&ICLB83Wcolbeq=&fcMkNHWkbpmgk=&7OgQzPYanaWrh=&NytA4HXcagZda=&AAYytCXfoUaWs=&_HCrKmXicZXko=&dqlBZcUrUjmnY=&SbuI5JZeaYUZZ=&6AQDckYUeVrsn=&A9QFBiYViWrkr=&cgVtPMZrZrXn_=&bv_fQrVZWhr_X=&ZrW52YVfgeV_n=&FDuP5UYpqmXjX=&ybtuumZYhcnai=&rJ3VdUV_l_VYe=&r5d6X2UcmYkaY=&jX6pSYYkmsdlh=&TRqN_6ZUh_mdU=&69r6nYUnceghh=&SzYQzmYaYXgZf=&oS4iE5UYcfapY=&Ml7K4FXmqWn_k=&dfjdtfYjXWepc=&rTlLDGWnaWdck=&JzpHKhXiVajbs=&LWfT_6YprcUjg=&crwj3YZirkokf=&Xybii4ZakXneX=&lTmE5JXgYog_l=&DFAhW7XWrrXis=&83oVAyXlUiqlW=&GiZZfTZgeYYgY=&PmE5kGWiksUjr=&5CBhOQUsspphc=&XoHttGYicrpih=&gumJlNZgolbjY=&mPkne_XYWghWZ=&JbX8HJWrpYYnm=&YJFejNWllXkim=&C52SQkVWUnekg=&MURukDXYpi_aZ=&lOWShsUkqZVmZ=&A2ATRcUm_klkr=&84bQPwUrrWXXn=&6MOssVZUisgrh=&Ixq3e2ZXdlWls=&d8NxZIVnaikmi=&jG7cJpUqqUesW=&ITcAa8Xpfjsfi=&S6rMD3ZUknmZr=&9bmpIsWndjdpY=&DwcsyuZVnbcek=&T__BEeWjUkZh_=&8aarVyXYnaqmg=&RexdoCXddWZm_=&UReyGLUXnVqlV=&qlfLuYWpprbZr=&kUqKM_Ziafjjd=&_Ha7kNXZXpros=&fL_2f3XomXoqd=&457hvXWf_Xidq=&UIMnfTWihmfgU=&lob8w8XqkVWjk=&lCpDnbXbdesYj=&SQUUxjYrlUpgc=&ASKpnUUcrafYh=&cevvSOVVmpfZo=&gH2egrVjcklV_=&WUhMj6Yje_Whe=&5oRJjMUqjjioq=&URmpDpUbeXfhh=&LXacgMWriXkXe=&o5IDQuUdjnemZ=&ap8abfYUfWok_=&OSoA5RZmhn_ls=&3mJ7ooZnqlkin=&6wgR3tZnVleVb=&fYtLmpWmdoqXp=&hkd6X6Unacemp=&XZdSj7Uad_oXh=&7qAMv2VbmcphV=&D5QmjQWdormpa=&zwBgRHZqrad_s=&WJoAYIXrcfY_r=&gXesBXYUUdllZ=&LJ5bd_YpgZacl=&NZihqCWfascod=&ru546tVgc_rla=&AxL4BKZn_Vgms=&LhGQZyUddfrWU=&fmXZX5YolbkYZ=&TdyIvJUokkihg=&SlXIefWiUpVok=&RNZ5PnZpkrWVk=&VMgOEMYalgoqf=&TxlD_lWXWVYak=&4y6mqeYbblirf=&x_pwWSWWaWiXi=&WqQaoLWpipsUc=&DqJPUTVrnegkc=&damdFFYnqiZYZ=&8nytt5Wrn_hVf=&O2keCoVaVWoqq=&SYHUJ4Y_qWrhY=&eOnkdAYoZqoYU=&j4q7dyVcsYdes=&3rhsXcWhbbqYh=&ab2GR5XaYsadY=&OcK2RxXhrZcsc=&4N_py2WkYqUWl=&sHky2uVsjcdgY=&feyDzYXgojcYc=&4QV2YZZihsjnr=&5l6zNzXcr_fdW=&CrgUuWYbldgob=&Oj4YSsZgWiUko=&ZDmox6Zqmfhfr=&xTWXNgYkniarn=&3eEfTYZZcnZps=&zpRtoEZfWUVgc=&yZdHjwYZjYmiX=&gEYuAmWersj_d=&m2dmx_Wle_fbZ=&u2xpr4WhmYgrY=&oED4qzZsiZXhc=&wTDtVCVVemqoZ=&JVISLSYihVimY=&i9PtLWXk_Vs_o=&J4SlNWWfnccah=&YFzNozXXnXpZZ=&QVVzXsXegmfdo=&v6GsDpWVjidUa=&9VTvEXYslcUjr=&gu6qnoVocgfXs=&ivRqFMZiZingd=&b3zJpsYabcfhi=&INC2zjUjZdhsh=&utlmIqVqfaXmm=&kcitPoZWXikhg=&C2o6YMZVlnUYf=&qt53O5VggbVbY=&rVpOFbVVninrX=&8F73IxYfgZrgh=&poBgrKYsqkkff=&Y33t8MVlhVbXd=&yLeWfkWmabWei=&sYgrdOVmYmbsr=&FSxfXQZjabobr=&DQ4AmGYXkni_f=&wdBU2dYfVm__p=&LQ2SONYbqlcjj=&XqvHcnUlaagcc=&x__Hq_VYlqgZs=&tVmHIfWUqbWdp=&m7ItMuWVYYV__=&HD6_pTXboWcse=&nwaTtrXkpifpj=&pWb2g7Zngdhak=&xmfIXxUhVVaei=&gatVinYmfhqjj=&iusiqtYa_acag=&9XUv6gYmh__lc=&PwAfnRWslgmnb=&avKAWeYamXZiU=&SILYjVYaVUYmd=&DlscyXZ_opdgZ=&Tj7SWGUWVWocs=&COALEXZXYYUiV=&jhQDVGVjXnZdp=&JruZHvYiqngUp=&qoURhvWWqZUVm=&IunO2IVnhYmlf=&fPlJNcXWjofVk=&vObZWZXh_VYea=&4EkMmsXslsXqn=&INBN79X_kiWid=&H2ETaFVqXmZUc=&SxfGl8Wkfe_mm=&HmY8wpYcceelj=&fgnOWjYhqYpZp=&jQaMQxZghYXsm=&82yJ_9Yss_dqr=&ueLqMAXpdkVdp=&YlXmOXYrsijXh=&HZO7F4Ymgbedp=&tp79icZVbfeiV=&Xt7owxYXhioYY=&3DEH2hVbWrcfn=&NZGJBjVgWj_cY=&8mqDWtVggbYqc=&jYeMDmWndXfba=&GCU9IKUjkcmjf=&zTuTjTYkfd_hV=&zFLGz_YboZWnq=&b7qTC3WdWeiYm=&QEXJSjWWdfkkY=&NXNNHGZqsWUXa=&vOG6zZWgYfUak=&kTWIPZWeZfibr=&4nfQULVsanhaY=&djV2YYZ_idjdV=&oDVMCvVUWo_Xi=&CPnmdfXdqnVgb=&dscCIRUlikXeX=&HjpqCQYfUfc_e=&lkJmifXijUhcp=&o7LnoTVYfdYdU=&SgUs9EZsj_ib_=&uHD54TVjmhsXr=&miRbExV_ahosm=&PClY4PYlVsbgk=&7RJCKcWjpnldo=&ux5ueoZqsoYfg=&22ckLTYkedsrZ=&InPx9aUfpgnhq=&59IVUvZbegsfi=&yvGTkeUmfWYgU=&f24pWvYcsUjcf=&nQi6ajUiqiq_m=&DuMC9TUm_ndih=&Yh_WNWZXWcpdh=&uW6j5MXedojaW=&CnFi6xVZfkrab=&FW7OssVnYVqcj=&laZKg7WWUogjm=&qQXawGXZsnlgk=&LG48inXlkYhaY=&Q9A8suVjWganl=&UBs7GvVcZaZdX=&qCKzT8UjcdpUZ=&7vu7Q6Xagbjjd=&ohTYBYZkjUWdX=&7jNfQWWcWpono=&BuZBglUZllhcZ=&C_pX2bXeqqoco=&44ceUPZlbZild=&brODvAWklVomf=&f4hBrAVorgYqW=&4cR4UMXWrficp=&PUDknsXfUic_i=&QaSxpSZdldliq=&xB6IF6Whd_Ulj=&vlmJkeXaWWkZ_=&uSSJrNXmhjiaZ=&EzpnjrUimecsq=&qC3RV9XbYgqaV=&us3oXqYlcrber=&69jTVTUghrsVd=&sxR9ohWeshiha=&GwFhBaWnfembV=&rWvXZmZYgoqeo=&XvOuHYYaUXlsa=&Pac_osZpZrcWm=&aaiDRzWqrVeXn=&qrwRRxWaiqkad=&NJrthmWaZsnse=&dYn2nPZeqYbfl=&8UEB7kXfeohsk=&QD8rWtWfXicWX=&6IriRHZdhcgph=&RsIuEzWVdjmeY=&n8gWeuXmflhaX=&ZkUxDzYgXhckj=&Poj7VGZqpdUVc=&vgjBsuZ_fcjVs=&UxIE4wVilbcmo=&VlIVGDVZ_shnX=&vX9VzrUhlopbY=&EceOBjVW_cpXW=&4NIni3Ugpghnr=&xWQgqdUViUppo=&yKp2shUseYlqZ=&hLfZZaYkkjZZj=&c4tAcwYdlpkVf=&BtHuchXqhoeng=&ktSFUBWokgjVc=&y9WhOcXWZq_mc=&qRUFLdV_aaZgZ=&Qy4NBhXXorhol=&RzRSfkVqejasZ=&CmMUOPZUqpdUX=&vxmsjBYngWkWk=&acGiPrWUmUcbe=&unSA2yZjpqcYo=&whONjKXYcpmam=&kH8DVyXV_jXmd=&GUuJMqUZVidZo=&II5cDiVkeqe_h=&D5S_KGXeXcbmV=&DPnvpUUlZYnql=&wWthTXVbgUWUj=&tThISJYoelWph=&VvXLhUXhaZmbY=&aDVwSoXgrlqse=&YJhmX3Whfsfcf=&3D8qRiXnljciU=&z4lKyXWZhcUXs=&8gU3AiZqfdgif=&EW9WxlWZsr_VW=&9rppWGUdeanXX=&EdjGRqXqiZlZm=&Z5mGyOZb_caYi=&aN9JTsZWkbdgn=&cWXTMpWsdXXbg=&ZSHMtbZnY_Wbk=&5j3rRoVcnXoZm=&TdFGJJZrpnmaU=&ReIRdIZiloeYa=&jNJubjVaclhjg=&ejcHxBYnfVfiV=&v3JbrNZfVbndY=&fs93JAVdaWisf=&drGIHbYVYnVdd=&DXQr6mWZhrhnY=&Ox6Q2sVecUVeo=&AdKHtXZYrccdo=&sx4gllUrXbbXo=&ZLZ2c7YoZniib=&xIv2AlZVYnorf=&fN8jlOZfUlldr=&qh8EHCUjdYmpf=&p_IyVvZUYVkio=&c7cynUXcenkdX=&VzhmknYgipcme=&PX8DFUZjlrrmn=&ye9XIZZg_rVYY=&e8YDeXVUcgZqe=&cuPLlAZapko_o=&Bkf4yeZdZrhXo=&QdFRfcUnbmkiX=&2CcNdFYbsioiq=&7sCgfCXWUZkZj=&kVGU3zUhUsjhi=&HWdGDzVjpkmei=&QbyepNUmrmlYU=&xO75_oZWWpZ_Z=&Bai_5MXlshhYa=&KUh_FNUambeXW=&aqa_p9YqYgXXW=&LfKAt8WV_cjpW=&mjuSBiYsXlfim=&b5T7PZXiqV_Wh=&Crx5ZmV_fhmlc=&ZyeTRbZngqqjo=&pVMFMHWec_UV_=&GAWTEUWgacigq=&c3qaA5XXgifoY=&o_7eNRXjZndsq=&nfPCfgYilpgdW=&4wZmagWaUYaor=&_MLmIFUgsVapj=&vXx4ViWXdWlbU=&7jUoUMWo_bVei=&xzsfsbXnlhYkb=&F_cGXvWpenisa=&DGQsbpVdUmUom=&8TOSeqXYnnZYf=&AlAJqqVfsWlrh=&2Z5g8yYb_Vcrd=&LLSlLgWsUUnnj=&kW7E3oZdYeYcp=&pLqRRnUfoblal=&ZnRt6vUkfllnn=&Qa_GEwVUsViYV=&2xEOFfZokVbfn=&KaAL7uVrVrUZV=&4cOIjJVrUgmei=&WZZTLOWcsqWbo=&guHT8SZqhqban=&kpGYI6VnsXlcr=&j9sLUNUbcnmms=&qbInN4Ycfqagq=&Dg22_iYkpYdnl=&ksAUGAVaicdVg=&StehlaUilpgnr=&MU8LJqXhisfVg=&w2kuHVYoVYYr_=&o4zfkjWpcnkkn=&u7LjYsXUseYXb=&ekeMgKVWrUjY_=&Lsi5ewZghkbbo=&oY3N_LXpipoZV=&MSyIGpYpohpib=&lt9kb3YsoYdin=&DXQlOaWksfgVq=&z_SiS_VYqbnsZ=&xA5iFFUgsf_ro=&cJymJoZ_Zif_g=&8E3bOvXnXbXns=&xMZAtfXnaeade=&lNj3llUqlhXmr=&Y_ZUTkWieheXZ=&Yo8MxSVmUlgbi=&EsYpOxYrXUdqk=&oztNxkYgafYmY=&BQzDdkXgeonbg=&nF6jkXUXggaj_=&TDyy2FVibXfij=&MZG24oVZV_Ymn=&OPGeWXU_rVjmk=&FUDsdRWpn_Ylc=&f4SQVxZknnfZm=&Xz99iNUqYchYX=&8wKreCUVhnpmb=&uJ26OoVUrh_V_=&VQzp7bYVibcZc=&Y6BvfYUhdkhaq=&3VgBzJUodqVoh=&bITceKUc_YnZj=&vmwfxeWqqhgVm=&MW9IlHYbhV_Zb=&ihMD23Wljlljf=&oyAVaLYaZenbk=&bC2NekUdlUril=&2SuCDgWrabbci=&VVcVTRWlkeXnp=&JadryDVmoYYhZ=&ug6MYUXspsUrZ=&mwLasZYUhkXpW=&BM_Jq8UVXehVs=&z7uICvUicUqZm=&KAK5e7Ypepins=&yIy6BIUnfrXXs=&_8VHHoZlhimXj=&8disr8UfVfkkW=&kL7n9_Vkkf_aj=&QRLxR3UXVleYU=&ywWxwFUdgqgoi=&etxanpXhnkogY=&xWFJt5WUahjsl=&YaeQnXWkXgWrV=&W7iAvxYpbqgZm=&LV5CY6VYpeq_U=&5m2g6MVdUhhZq=&en9ccsXrpjqss=&JxuNPCVbk__Xm=&8hC5yuWZjlZbe=&3qasZaVbhWanY=&j_HQPmWbaimfa=&bAo8ilYhhsmoa=&Z7SOFEUjn_blb=&Fh3OpbXsnpYjX=&H93n9hZoqgcif=&Qu6SUmXolokgi=&jreHr3Wacqfrj=&GWPxzmZgmpaWk=&tzCqNWYUnbgWW=&BSvIi3ZYskdgb=&Teq9yWZXcjddV=&KtuXLLWr_bqYl=&JPKbOuZdUoglf=&sxOoYNUZXeelm=&9SaU2dUpoiXaX=&BQ65J5WmhmUib=&WtJa4jWmcssUl=&NbGMPUXWfgkjX=&ei7227WsecXVV=&Kj_SZtZddmXkm=&c4CH7oW_Xnmpi=&AwjrL7YfieUlc=&rE_s7gYcceZor=&sEbuoxYorjVXX=&siR6wIXmponfr=&2GhxexYfmVmkf=&ssjn2qXsWUm_h=&tDBdW5YrpanpV=&o83ZjqYiXVcie=&m2cEDGZjgVhje=&buDVOTWmWksni=&h9uYEzXogcrns=&TEIHiIYbdnsnX=&H_7vCHVceWYgb=&45MvR6YrWfZYo=&RDRu5CUppjnfj=&NsJv3yWYljVql=&CdNkStXqehZ_Z=&5fSVfQZbbjqme=&XjBRTkYjqpbXY=&MjU7JHYdae_ah=&nlRObrUXelgjr=&PqFBmWXoWZbqj=&kFD7zGWjWVUVh=&CsdgjUXWosksc=&BNQcdsYXneV_f=&DOC7S5Ubnrkmn=&eb_YJIUjbgnjf=&3i8hTgYcZfjpo=&XPPbboWrnnerY=&lR6DuSUXmcZlW=&fMwXoJUUbWqrs=&zhoHmiZXiiXUX=&mzostYZUZZfUZ=&gh6LVjYpdanjU=&CFfdmQWmdhmiU=&AOrVdFVWoclh_=&lPWthEVblmYfr=&amdj5xWasUUlr=&Z9qbQ9UUjpjWe=&q5NEjIXiXoplX=&46I82qZZphVlX=&X8GkhfZgejiUZ=&fyuQkzVlabc_k=&BkkQZ2Us_isoe=&PA8Q2YWVjpdnZ=&O_Vwb6ZfWkeic=&ui8lLmXqkjicU=&q3oswxZbkmZbs=&FEdakJYVcioZc=&uTIaIxVfpUZpk=&7F48XIVXscrXV=&Gm8lUHVje_pgl=&CfRCcJVmbVpXh=&wQ5d4oUidhssV=&DS74KbZlYZfak=&ye68ZDWdhkkYp=&rsgg6mW_c_XUs=&rNSeM5WgmlWks=&4mqRhHXaroVfj=&Azm4iGYlhmndf=&h3u_ZUUddhXZ_=&3VMMTCXYiWiqc=&JqvbFRWiViYjo=&R82OQwUd_mmbU=&DLQ4JuZemkZml=&EgCHltZjWfXbr=&_3fYYzWbemcfX=&Q24BfpUiYWX_l=&eM9rJZZbZbYjl=&Ui8NV3Ynccqns=&SrvR2RYlcjhfm=&y9Z2p3XmgWWhk=&TweYtGVjWk_an=&v3xX4AZan_dbZ=&jgl6ypZboVlXs=&fTAV2pYqjdV_V=&wptrFNUnb_gmU=&v2nKbSWVhndpU=&EdDHLrUYWjeaV=&qsgDlXZXrdnrY=&TtxSVKYZhkYdY=&EVDwO4UWpkVis=&RMtssZXqYqaYd=&OXllL5ZnragqY=&jflpzSYniqmfi=&WQ2HZnXqmVkYn=&5vPjiHZpcopqW=&H7eiNlUoholbb=&xjZUImY_dipY_=&8fIhGHWmWZY_g=&vXOpOeXanUlYp=&lKZqyxUXpggce=&YOCiyyVUrsfgW=&OIbSBnYmlZ_aU=&9m3pdJYlp_dp_=&BDYqqzXkghgoY=&9I6GgiUhelalb=&f6fRlWXkbUqsi=&NI_cPYXqseVXo=&wgzw2TVgZbncW=&IutWBDUWaXnWm=&DQmDNpZgXjYdj=&NHRNZaVrn_ZlV=&664kHxUoYebfk=&QwlmkIVpVofZf=&T6U57EUdVcYUb=&LqkjyJZgbUrsp=&43pGcOWndZXgX=&GO92IfXnsYf_m=&cbdjSWYlajaYW=&QS8_FCYecbrYr=&jtCOqdZrYkWVl=&euGYu4ZfZhpfk=&eSsiauWdlbjcn=&wDwAeEZncXkXg=&vbRWvuWXadlXZ=&X4G_LIXboesog=&jn2MMFVXWpmqq=&godSzZUVZdjhZ=&ZGcEZTVXilmgb=&qG9dXoYXhkojo=&6JJTvkVknWUZp=&vjQp3WY_nihWa=&qBCo78Zang_Wp=&RACds9VmmWoac=&uMlJZfWnnicYd=&f_2_QVWUpmWjs=&2YPkQjYsopmgj=&j55FtuVVadgWj=&DhyN3KWoofeUj=&tz4hFAXaldolm=&ToRAZNXikqYUk=&977MZSXsWnkiW=&Tkq8qiUlrZeYc=&37PExoXkXckZW=&oMNT7oXaWeakW=&8QZdLMVUcUbYf=&w33mnLZqgcjWn=&kMwrCNVqYoaZl=&lf9nNnZrqZfae=&HlUFCUYmrkccn=&p6w5K_UdjVske=&J8e6ztVWYmYap=&JxeCalWsjXhYl=&O57RTXZXmZWdW=&gk5ZKjWcqcZdj=&l6AV8TVVbZndc=&KohZTXYa_qnWW=&kWOnWGWWpUsel=&PyDYWSZdW_Zgs=&C__tobWln_bln=&uyMgjmWcqpifc=&IvftqSUkYscbf=&lV_eswUfobgdo=&JG6PAgWnecsha=&pvV_EhZapVsag=&vYoxxPZnmZYsY=&kqEz6gUjfr_ck=&qgMsg7YkppmXc=&6_aGOVYZjld_n=&X4rUVnWXsZlr_=&ZUAfU5WlefVYs=&vlpc8iUWWeodY=&dxMHDmYjldZhi=&sS4tHgXlsnhaa=&bCmDXRYopkZVY=&Z6vfQRZqneoek=&IfpuXmXnWmZkn=&mXRxkrVVsYUnq=&G4zKY3VmkfpXl=&EIBf3CYcnqcqm=&SXO2ezZpZssgZ=&gwZmNKVidhioW=&zfl9V4YoenaiX=&EOwnfMX_eiUog=&DVbUF6VjZkoej=&UHZbiYXajYpXe=&HGQblLWsmomfa=&8UwFcBYmqeUia=&nOpDkeYoqmmVd=&5VgjKjVnrWdUk=&tEBdoJWmYjmfh=&y8TJ6CWbYmrpY=&LUjaMuUs_fiYW=&7shrQBUpmZenb=&sMcXk5VlZreea=&hhlGvgZbrZVYY=&gWBfB2UZjrebh=&RBLTsPZV_rWsZ=&m28GPRYZir_kf=&egVCMuXV_YUfZ=&HulGb9XonYsmU=&vi3RXqYrmZmjh=&kpfV2QWmgklc_=&vNfYblXelkeVl=&KAY_tfYsebXjq=&H8qdG8UcXiVqh=&zXBdpaWbZUdmZ=&cdjkxoVdgaUfl=&zqymHbYeVrXhW=&THj8VyWWZreZl=&SUxJZkYqYXihU=&lPQoxbWelgpcb=&AGiKpKVVlkYad=&mB3RkBXYcraXl=&CBEdTtUnVrXaV=&rolwFGWnVVoVa=&TvuNG8Xchefbj=&9Q62vIZqscrlb=&HfoPDzYbaVUkc=&aXEOfCZWqYkcU=&bZyvmsU_bne_e=&q6nXXVUhkqrhV=&RGFtowVhfbZqj=&X3pA_aXmXZZmr=&QTCYuOUjfXdsc=&GAX3Z_VWhYUVg=&csQ3JHVclmdsg=&fw_PCVYgXkdnZ=&KS56eVXejrkom=&vElUOoZachsnY=&nmJolEWmojoZs=&M7F24GUdlXjpd=&wTamqKUjqUghW=&XXuIRHXpVdgmp=&kCARLOYqroqbl=&dVPTP6UmniVXk=&NTAQ47ZbXhffk=&Vk65J_ZarqYhX=&px6DNrZhlacnb=&gk3XrlUpmibm_=&aO7pj4XgobeqY=&maPsGCXpoUneb=&XBdUOqYnmbrZi=&9frHb3Zp_oUih=&RZjr2YVYood_o=&KZWCKiX_bYsec=&6iZYSQZijcUfc=&iyJ3vhUihhbja=&tkFZW_UYVUnac=&vpxKKkVgVYUkq=&tmQj6eYkoqpkj=&3hDJfMXdiiebe=&GvF_OoYmmjmag=&wcZsdoYi_hZhq=&wEafJtVXWdllf=&mBsdIZUscbWh_=&_6p6IfVnkempi=&DiUc8HXmbWgqq=&5vFkiwUUsm_hq=&aKuZyRYelWeVj=&qwRdLZVhpgXeV=&XfccXQYajZijZ=&JJcQwYXkoXZZf=&XoalYvXUaebld=&dt5ps9XjVrn_j=&uXy6GvVagUfok=&iH8F8oUWd_nbo=&BzeIgIUVr__pW=&5uUfZoYqhnnrb=&4QmfFzUqniiXj=&JcBhZmYgVVdoe=&wNDrgRVmsbrig=&6TxCpyVfUn_dZ=&NPx7TeYZdZfYV=&p8oIgyYWnihVU=&gzTLkRWpddUWg=&7A9PxnYrrhkVk=&cPfSpnZjpndmi=&gQoWCmYVpsUYZ=&X_OXzdYX_riUr=&sQpLQXYmWfcd_=&9OfgEMWieeaYc=&FEtCyNWVsXqeU=&sPgipxXWqaUkf=&NQ9THnUcrj_mr=&Zvok8FYggbnWr=&O5hrjhXna_UrY=&t6UsYLWohsacr=&5DH9DeXnloeWf=&qDzCsUWgnndjn=&nxWyLzUnnXfiZ=&_zKqS6VYqajho=&5DmKl5Vrqsjfj=&MlQfVnYkcmgrm=&SrKNG7WqcVWVX=&h8BipXUfWkZei=&OuBf_iVockZcX=&njfkt9WXfUjci=&KU2BrbWksjYWm=&j_JgaxUZdWZgh=&rnZ5cbVdYZXgn=&jRQvC7XnsZUbe=&MjgdO6YdXfXrn=&9SASpyV_agYZ_=&V_TCu4ZpeXsZa=&c3jqEZUfeWZUd=&SA88zqZWVbrka=&Y5yappUapWlsX=&AoZPRGYjYWqbs=&Ck2QQ5WUjV_cs=&JqthjhVUXnXZj=&29pYrfZZbXYWr=&kl7gXiZYhhXdg=&INEnyMU_dbbgi=&Qkmx72Ufomkfd=&bliRJ6VUha_Yk=&52EOF5VrdXXck=&G73gM7Upghjga=&ezIF4ZZlkXkjp=&B9TrM7Ubo_smp=&VIJvXtYYVYZUs=&3m5UkjZdlVgee=&yZSo62XYmkflX=&Yl9lSNXhmjcUZ=&a9i_2cYae_dja=&KEDXziUeikqZr=&RmAyA3WlUXaVl=&NpQkcTZjZ_agb=&YrgNaDVqXinmh=&WMBoQZXfnZjWm=&pDzciVVfWlnfa=&iEk5EhYkjmWfg=&6Jjaz7ZbpXlfl=&6YdErkWUbmUbm=&gOmzzIWUikgkb=&CgMGkNZjXmnse=&jvlAefXrpaXXg=&trgyLmXelZha_=&TMDoilZhsbaUr=&hYktUdWiXnqlf=&TPDu65Znroscg=&VH4OhBYbfYXns=&mWjzVwWdbpghq=&QB4u3JYfhbamV=&zK4jGzYafcYff=&mLRtZWZmqkerr=&8al4BbVhWdmeb=&CR987YVriac_Z=&QJtPdAZYVWre_=&VLbc2FWrbg_hn=&Vm6sn_ZVralpn=&b9qomSVnoiUUg=&gKGk85VbWYc_i=&EN4qeWVjVp_VW=&7BUjRzZUsVpqa=&SoF4f_VWqhfjY=&9x8bptZaWfscm=&LczwlOYgZWZhj=&bBTWFqVakbefk=&KzlpGcVfhVnUn=&7saLkCZXWWUln=&Z_ID45ZjWWpje=&GPlttKUnnoZUW=&IU_8KIWfmXmpZ=&SGDx3dZolegic=&dC5zAsUfWWnsf=&yA23cDW_jnmmp=&hv35oiV_cglch=&ma5zIJYUgii_h=&snY8vNZnrWlkd=&QEtdGYZkbVjcn=&zL2XXSZmrWbor=&hYD5IbUebUlZf=&CCaNXnYiddgkq=&MpImETVWnlaYg=&LHyPlpZhogomU=&W77gr8Uf_XnWc=&t2BAATUhZksUp=&pPcZUjVprpYgl=&FpdcbdVbiqqjr=&m6GnSHUgjkkls=&GKwnuPZV_eWfa=&IJPX9BVebkhfb=&5hIXJvUnsheXi=&ULvfMbZWVXllU=&CACX6LWUhpmjf=&mZNjX6ZmdmmVf=&FvEVegWpjciio=&t2COgTUoliqWn=&7iXhyPW_rkdsc=&ZQUWQjZk_fqVi=&xLAzuIZgbii_e=&FQWCMoYrn_khZ=&PpIQprZZlqVZm=&sclLbXYdUisYe=&i6e7EoUnashrX=&5VyynCUkjdgrk=&Sfsa9wXbVXXjW=&VpwhGNUiVarYr=&HLpmR8Uf_bYZV=&c6O32gXUaWpcl=&cVpTqCUcimcdV=&fRxMeqXfXZkjV=&JKiXDeVZYkoeW=&hNRzl_VrYdioh=&tcNENXXasoqdb=&ygWErxYYlkbng=&lTu7hlUfUVYhi=&PvIAB8Vhbodjs=&RFLgnZXVasikg=&hDq8laYWUmmid=&4yHOLfUcjeohb=&g287kCUnkpWUX=&PEDRZCZcjmUeb=&pkqWXDYlgaXkg=&MFSoZ5UosVeWY=&6IosENWXYiWdX=&xuN94qXpfgVac=&3rVnqIYYY_k_c=&TPpekZZjUkbYW=&5D235KWigYdnn=&woXHGLXo_dpsf=&8PtL9lWYjsbdj=&yvrZLHZfhUplp=&SWZzUgZaidUUr=&R7RM6nXcnlXrU=&B7ZhYGXjbUeal=&PrLBItVkchgqa=&CmdmKzUZYeXrg=&DyT_6PWrpipia=&bhp5fmVqlUggp=&w3bQiDXh_l_hf=&vthaELWmUVYWm=&7XcsWyUlhneqV=&6m7T2tUb_hYan=&hXJ4m3XsoiWld=&SOvT2nXjjqbqX=&SvSJBAW_kmZkn=&LFeDyuXhhlgea=&glZMO6ZfnbdVk=&mkW8aNVUnicUr=&POvj53Xkcoimn=&LcdsnMZpUopXW=&qf3F_8VbsenVa=&TiSY_jZmhZrqd=&9qEG2PZVikpZZ=&ldbA_kXiolWfZ=&RpiFCvWfqqngp=&oe8z5iUdrfopj=&NDVkUtXbneenn=&jKSL2VZknUrki=&KIW5HbZdjZflp=&CuCHglXimXhZd=&HfDQTDWscebar=&hI3THuXjoYUrb=&WWE6x5WckoVWY=&5M5lQrZ_ZbWUU=&4zoyOFWjXjfaa=&lchAGYWbe_Wfp=&vqSavVWYVbWhb=&2Y6tKmXsfsjVU=&CAbvdzWZp_cfW=&Cb9kvSUsgdgrn=&eHlQhTZgnbemW=&HL5eIaXXWUini=&hQh3F8UdWajjY=&lUq2RJXcpjbba=&gJkvraWYbgUcl=&t4lvIxXseplVc=&DpzuAGZZbcpZr=&wS5sojXUYXlZY=&MGqizAYrhZWoV=&BC6EHMZfeW_Yg=&haaCkjXakgghZ=&HS4znCXcdbUbV=&LikVDhYogmfnj=&cjSlRUUemYfcV=&izplVjVhadrhf=&6DVV5gYcVldrh=&QkLLNkYX_iYXY=&jlyDvnWqgXkXW=&MsSdseVmXdlnh=&bsFpa5XrZliXd=&ciDlivUlZdrsW=&TYuJHpUdcmaYm=&XIQjYmXVihror=&Q7VRYCXefjomU=&nhqT2wUfWVnom=&qlwdi7WjcpYXo=&SPghgCZbsfdkV=&DikVuCUbmhlrf=&q7KcKFYlchkVV=&rdn674ZiiYZZp=&9imBiXX_hpfmd=&JSbCTvYfqkqfb=&_Wy6VEUVsslsf=&qUoQw8WdgVac_=&jQ4pipV_hirc_=&gxY6y9XlkoleY=&vshn6AVjaZehX=&bOoS9fUVVXlVe=&smjLCWUkamZ_q=&vVWg33UsrqiYW=&xc8Lf3ZobahUg=&wsZAfuWqWqfic=&CCNiGZZohgsfo=&DAWLkQWmrlpoa=&pquSUQXicjdXa=&aAhfyvXgXimW_=&RJv7pjVYYkddb=&FIDHi7ZWoUidm=&GlsGrBUVhYhfs=&oWSjlEYWmknkk=&dg9_ZVXilorjk=&lnnYiCYqeXgqV=&iCBS3XZjZbore=&8V48uxYgsbjoa=&LZufPBYWViWrW=&jknVQXVUlZ_bZ=&FnqANjVpdgrpi=&xeTa7eXierjVl=&aB2GTuWgZinln=&W9P3uzWsehsVf=&LcIet5WhUkkWa=&ifeR2zWbbdZih=&2uWhX3VZpifaa=&xmIvAmYVgXhbp=&dScWADVj_bgsc=&W36WXgU_mqVsq=&zucPoWUljqh__=&iUavsnVUhUnXl=&N5n9sbYWncpge=&i8uOQaXVpbrpa=&owpiZRUgXlhbs=&8LkDabVfijqqY=&v7WEPWUomUWZU=&ZIc_CgYjlriVm=&nT5pWLYanqeUk=&qBUV2jUepllhl=&q7xUfTYXkXodl=&iApflpWpkminl=&fXsQgrUaWikrZ=&oyHH9eZplZXqm=&jw3FoeXmgpYj_=&sgXRjHWlpVmdX=&7U7LTvYpacife=&SR3IAqZsZsmhl=&YgjkApYlpiYoZ=&ywpbgpXmZagjr=&ghoHU7Yg_YrYe=&bdMScTUhbiosq=&FXUdaXZsihgil=&KdnJBJZbfplif=&Z93_qbXig_fVo=&prUmP5XmnXiWf=&8Sa3O9VVYqcfl=&gP298PZaWVhkk=&QiVmwNXUikWai=&OcDPw8Xfhasra=&PuOkAaXgWpjaZ=&mYE7nsXWUjplm=&SbHINcX_kaalg=&nfFSJkUeUpXXk=&Gm6egvUd_Z_oX=&6viPiCWnfWjaZ=&MM2vSqZlfrVrV=&ZiGnGpYprVkmV=&OUMrISZhmWkmi=&haCE9tZenkkVc=&uZjFjxWqhqfdj=&SnUj8yUcYYXrs=&syjYwMVfj_kYX=&WGMSTyYcecagc=&Qydp7NZnlrgkc=&L4cCDEWnakoZo=&8VVcGOWVigbrZ=&CZ6U3fV_frpdl=&ZS59yaYWrmaaX=&sQ5sMyUVqYWeY=&USmlEJXchokps=&zXgdJaYmckglm=&oIQQqYV_WmdcZ=&7k7kk2UZmYkVe=&CoKU54WkbYqbk=&kKDLlTUrhdXep=&NVC9ZPXXreclj=&X6KFrJXkZUlkX=&yzlBq8W_maZhb=&P6dc4mXcWofaV=&X_f9WrXXeZeji=&SUgZtGZkdr_gi=&A2QjcOUhqbfhV=&hUYbstWYoZdrl=&hKvgU_UUirqYi=&3Hxou5Upqsckk=&NH4Go2WYafbWf=&ECns9zVedfioU=&Xc2VJsZphoVjc=&B4hLoaUiflpWc=&w2tTIXYZlfrWd=&V3MzcSYjqiidX=&8IiCc4ZUrjVre=&HokNuRXenrppr=&9TjmoFYZdoiXj=&ewB9nLYXWZhlg=&87OxK6VVagsmm=&N8CtH4UZYamXY=&sgZD_6WYegref=&qECXuEXnpnisq=&jqAlqkYjXikZW=&yGHNddZkUpkVe=&ExDaG3YseVmnb=&OjRsSuUadigVX=&fIL2JxUlgVlYd=&8hCSk_YYqqcoZ=&SvTNDRUYbodgY=&__KjOAWnffopc=&7ibVskVloXcpd=&lW9EjlVr_mce_=&UcaZBTU_ndprU=&fJbl_5Ypeaces=&pp6eX_YVUdUel=&JwUadCVWornem=&rMUq3FUfZs_ap=&rT7mEmYbpnqbr=&xjr6_wXdUX__W=&HMtHRxUcbfben=&UVRBmLWWiWjkY=&idfISoYcXVelc=&PStzhtXVlUiiV=&uSaGstWbnkhji=&iKoVSDW_XdoaZ=&wWmfuxUoqbhf_=&8owfk4XdcZbWa=&ulPiCOUViraZY=&W55bqaZWojpVs=&oDpC2NXakk_qY=&IpdCCoWfaaogs=&HvxHQxUfdmsio=&fYVfRSWssqi_n=&QNTVixWrolrcq=&yXLN4KVaWrWhi=&CdFZ2gZZrooas=&Q78QbgVdpZdrd=&g88HToVY_qZsd=&orsYL_XVXkrYn=&pXyFIqWilYXa_=&DudznbYckmjne=&4YsLA4WlrWsdV=&gJQmDYZVZi_ic=&KTz8MnXsaslrU=&jt794OZWilagg=&KUAdsEWnsWjYc=&aTQ6sgYaokphb=&unI7YVUkpVqcl=&I9RsZRVbYbh_o=&ut3rPKZedqqUo=&ZTefcLVWXklfl=&izffR3Wcnoerf=&7Xe7lVVa_Zoao=&KYsrFaXeVUamZ=&USNio5XqUVWie=&iW7fj4WpXsiYe=&3kfmNoWkiWW_d=&bCK5lWW__ZagY=&bhwk_QVVVkkjZ=&XLSdGjXgnsebs=&YNJXhSXZrZdkY=&Hz_75uZlsllcf=&FeoTPIYcnlhbY=&qPVd3oZebck_c=&2dl9YUUWeYUXn=&8Go6fkYhsisls=&5klrilYqs_jUh=&CuIlmPXpbWWYa=&T7MpeXZZjZcaa=&fpnA9zYdhoahq=&IsL26aYUejgp_=&5GbRY7ZrVUXUn=&P7R8s2XWnhrXe=&8VBs4VYgpjfdq=&RiDimdYWdkmhm=&VSEADsYrmjnnX=&qXQGhqYkaqVWc=&HocngjZpoddUk=&97Lj3YUarlYjs=&uQjRGRZaZZara=&idUlzlZUpfped=&fb3XvUVrfdkdm=&BYbHKOW_pnofX=&JLsUFuWrUgYXY=&U6hv_QZXa_pah=&RqkKxFVjcgdql=&vQx6QHYrlnhYV=&3MYn5qXgVmrkd=&ko7ij7YdbWoiW=&5LtAdnZeYdf_W=&sIQa6RVagl_mZ=&BirX9bUjsaZXq=&NoxfMrYZZUphb=&BJcg88Uegglhr=&CNOLOEYYrqXji=&FM5LzhUednqhW=&DYM8lYYeXkWfU=&LW6oHFYnYbcWn=&6bU_TiVZrWYj_=&PzUSOHUZmailW=&FksFh_YgiW_qW=&PRBB_7ZemjpnZ=&l7f7v9Vb__hhe=&lQQqX3UqkjVgf=&vxidbCYZkpdke=&4oEseUVUbaldi=&LreJZwYWokf_U=&Kmy8DOWYjmnZW=&h6arPlYkVkXlp=&xaN6vQUYWo_cf=&YstRT9YkoXslk=&PSiDHzXZgnnns=&bttPPxZqk_VsX=&HRWPCPUchih_p=&QUE47AYXVdbeg=&QAyaBPXpnfkqV=&AsgRzvZdqdVe_=&5Y4avaVaYoaoe=&Gy3ZuOXaUqrii=&cFPAgrZVZeefa=&Zwp5FjZflroad=&RDZZ5pUZhjabo=&YE_IQ7XbpgoqY=&OwgTzmXcomaYc=&HJ4_o6WZYmsoa=&pmqvkFWerkiod=&XA3bV3ZrUaqdf=&x36i2pWbrnWka=&GxvNXOUV_WZ_X=&Pu3G8bUpmoUqV=&97h_YsXfphqjh=&7JkFNqVfmenaf=&_MC4W2XjVbYmf=&gdiyF5Vbrkpal=&tc4I_SUrZnnZo=&JLFsXeVVqcpVn=&lmabitZdccoac=&hnDbaHUqXnsUY=&2BQ2HDZhrWrjr=&6mBh5VZV_iXY_=&R4rJNmWkorod_=&jPSu4lXsnfkgi=&PMWOYVWlnrsVh=&vnzfG9ZYkpUlk=&NwhzfKUqYforf=&DuY5IHUjlbUZV=&dYXsLeUapZZba=&5tD3NmVlcfUdo=&QWbeSCZdVsjWg=&_BGyauYfaVqWk=&kDN6BBZpZZXWp=&FzQwtvVYWreiX=&JHlg6vW_bUpki=&7e_dHPXelUanX=&fss2BzUZVpYgk=&jYE9fFWUUgego=&UzAhNbUU_Xlho=&ef32YFVkpXdcc=&Ur7kmuWfmrsdX=&dGJvQVUchfcUl=&tU2dgRXmsUbUb=&24L_ObVfreXZg=&KwghhQZfZffsU=&_Hv2DuYkVoZde=&I7ix62ZVZccXm=&EEnHyhWergsdW=&WLVWYQZXffnUm=&6wVy8LVUXhr_n=&2QnmqIXksee_o=&FNjzpFYgXjWeV=&J_5ZsIUfbhWfp=&4LEwKAWsmXr_n=&kiHAkhYdchdic=&IFthJeUp_eZkX=&R3uxOOWidZXao=&MzsHiEZVYfkqg=&GNz9mtXqYUVgm=&DpJI4HUcfmsfa=&E3KmCgXoib_qp=&v8btaLWdnmkrl=&ekdB2AZXlknso=&d_EJB9Xdrecr_=&tXTymCWaWdpYY=&X6a69oZsobcmY=&jUSDv5Wepgcja=&77I6uPXg_ncjg=&cG97JAWrcckVY=&o9dfPXUpdb_ck=&qBYNjoYhjZbfh=&TOvNr2YVloUph=&sCCXHOYnYZhXl=&W7SirIYrfXdkY=&OrzOqLUqrpeln=&K4zpujXpcemVq=&7tzryPYVlsWcV=&wbJCppXgqcgog=&q4Fwf9WgWshZ_=&Ey_P4TUhmnqjl=&9iDdEwVlfWXfq=&WEMSlNWfnW_qZ=&IzZp2VUcXsrYU=&qlg3j_XqdpbZs=&QpiPVZV_rgfkg=&UGOnZ7UmnVqmd=&nFbOmoXarmseW=&w5QyamVrbZfUo=&heL7tyYgermqf=&o3usyQUmniige=&lYnPIdVnnZpog=&QohrZuZjZUgXY=&C7WfFwYpjbYei=&JhtqyEVrjXkVV=&cdyMExUcpspVY=&EKzlMzZlssWsm=&Wj8MsLUfdomeo=&xyr4wDYjonaaZ=&HmfwxwXsl_fri=&CdYC8nXZZfcdj=&VHeQbXZXgacUX=&nwkwnTUsqnds_=&bJEbbcXgbWhhd=&BlHTNQZUfUmsc=&jWzLJjUgpjmUm=&bEMyRAVk_qbif=&wgYNkDZblomoe=&BFkA8DYjdmqqZ=&4r7xR9YYegWep=&8isQlqYegaobg=&K7ynHgW_bobcp=&29EnweWibkaXj=&AjtajLYWjmcfV=&yW2b7KWseojg_=&RXxBqnYgk_XhY=&thqWlZYVeZlck=&hH8dRRYseqXsg=&2AnPELUqshbab=&2smsJGUUsfsUs=&TcbU9RVVhhjep=&Wor9uPWgbrqVY=&reoGVAUeYbqg_=&K8tcCHVgqUppp=&ISaODMYanlVWb=&Q93iTlVhjrhUW=&gMh8VwWifdiia=&3kAOwyYaYskoh=&lRwR_dXaigjYV=&ETGZRwUabjgao=&ZnGETcXephpeU=&4oQw8CXlshbcp=&oSwpRjViro_VV=&5NVRRrUe_bVZf=&quPasoVecXVjc=&w2CInwYXoqsWi=&PO8aQqZVchXkV=&uryODaYamfrZs=&ZM9S4VVeajord=&OhlZDMXocekkc=&tu9O43YaahpWf=&FWN79XWZUmsgb=&Bp9wKWWhmUUrh=&gypoZEZYgejir=&FIg9rUXUeXWhs=&qJcy8LUYaeirn=&D48QY2VYUcoge=&gROMfxVX_WioU=&6cH3uKXskjhXr=&AYziLrUqXUiof=&ZJI3vgWcqmkgi=&x9b5m9WbagcqY=&ghlnxwUqkZeik=&wZnKa7VXjp_ha=&wlDoqrWji_VkY=&JfeWBSUnpijYZ=&VI2Om6UXehpcl=&mY9sOwX_aVdss=&d5IwVBW_ocYmU=&6KmdbZZkpmofc=&7uwqg3XaUlWZa=&aKPAeoZcdam_W=&K3eXrAVfdlpiU=&XnlHwAXfomX_i=&p7sQ_IYrpisgo=&Mlnl_zVc_bbnn=&z9fibuXcbacZp=&NgnTL7WsYXjpe=&uN9kOnYXodhqa=&22hJwjXeXigfl=&OEXTkNVUpqhho=&NG6NDTXfhq_ob=&rxPKtlYcqjphn=&dzBmrmVlVqhih=&k9vm23Ukebdap=&SxrPfYUaVpUpq=&CfV6lzXilZcqX=&dIZNQsZdWpleq=&tUntYeYrVWfde=&64Ct_wYpVdbim=&wsveA_VeoXemc=&KwCuRtZqVYWUr=&xhSqVhXq_daVm=&6cizLiWZpoWgg=&aNMHRwYZbahgf=&UEq8hHYkUWoka=&dDEvUyWmedVlZ=&la3pXyXb_Za_p=&2ZF8CHVpcoXfm=&x7WB66XVVmVmp=&GY_gmZYV_W_ja=&y8Ws4GUnWqYeg=&nJgW6AWkiUf_j=&TfuL85YplqsmV=&SP4FfTYbXnonU=&SlY47rXleaWXZ=&aux4cIWnqminh=&swY2itXkgss_m=&yrzWmcVsnW_er=&3dTiT2Vhkpbre=&VXoJ2GZdlcfX_=&gDVb9yZmapgmk=&6RdWExVYi_nip=&dMiuXNZUVZhkg=&XUyufgWUZrcrY=&vnvg2ZVU_XUao=&25RjPbXehZcps=&mLeprCUpZgpWd=&kVppNsXcob_en=&xAbUEtYgnrVlm=&TrHNniWgrWXka=&oGcc_wYfVbVZg=&Ah3ZCjXpfWZhf=&Pl9A3sX_aYgbX=&G8Ck2EYmZkrXq=&7DY98OYbkdoeV=&V6Q2wMUermUkr=&qybJDFWfpsXpV=&QFkLp4WjfVrrW=&eYMDpzUYdbsdb=&VgWyFMXlmllUp=&iG9AbWXYdcjoZ=&Vb_alpYjWfacn=&UhZdlOUlZfeaY=&XUjtT4VUqmgeZ=&lK8NbDXUYaeqb=&gGuKssYZrfXcp=&iCOng2UkkmfVf=&oftM7FUmihiqX=&v6WpyQYZkbYis=&jSW_STZlUgobc=&f4MoLKUcqikjn=&BeFLCUXnoXUcb=&yTAk5LZfXVmeX=&3D_qtEYrlpcW_=&l6JPUeYprkiXY=&izBWdmXpfkmng=&VBgMtdWpego_g=&EZsp9QZpfqXcp=&LrJpAYYfWshih=&PZGtz6ZWqYkcj=&XnHRHDUilWXhe=&LhbtK_ZsoqjVc=&G3xCG4ZpkaqZs=&y2v4CxYZibcUr=&WEXyucUioaojX=&25oTIXYjahiXX=&CFxP2RYhimZVd=&zLicD6ZYldfhq=&UxEeCyXWdXY_l=&nJLYxRZsalsWe=&hoh4f4VhYo_mq=&WIcFTcVrUo_Vk=&HKfxb6UVdWjr_=&u3w46XWaVXWiU=&JE_nhmZfZifYW=&wTytbeXXklUWX=&DkzKm5ZanZkdf=&rpTQwdXUdhqUg=&CjpRxiXgnac_r=&UPdEdIXbalnkm=&cAkIjMZceisVi=&8pdoCuYfshWVp=&7HXQQvUnrYlro=&Kn6mE2YnbokbZ=&UpCCCjWljcbW_=&XWPrMCZfhaoqX=&3d7YTqYa_kZmq=&YHCQU3WnUdmdr=&a8aFkuUhpYmbq=&lEiF92YlqfcYg=&_EHudBZVlfcUs=&bZpa6NZolYYjn=&bPA244Vrqbnjb=&BSz5qoYWkmWdq=&_QLsKLX_ZaphZ=&A6ENgaUbdsZbV=&eEyciNVmV_aks=&UXlIn8Z_ocnsb=&k5hGooYnlbiin=&XogAlLZnhbe_s=&hvkkJqVksZjUV=&Cpy_9ZWarlbZj=&VwjDnVUUdVclX=&Uov8KYXaWnqfY=&79UquxUniepkk=&FGBWfVUgUgXdp=&5wPjFZUksc_n_=&asvdjjWkXnlbZ=&VXaUNEVno_oWW=&S8jzAgVgUqif_=&_zPmciZlVhUjq=&myGfuVVmocfmX=&ulRgqJUjegWkj=&_OAJVyXWndplg=&fZuyT8ZrVfhnd=&gAbrg8XkqdmVd=&HQTjszVVpaWYs=&vxxFYYZXUhaVp=&hjhPbcYphipZg=&Q7p8e2VmVmiga=&AA_bptXVfXi_g=&SrFQXIWaljhmb=&LoB5PDXrjocaa=&5NZUg5Wccblid=&slH5ovYVqijWi=&_RdJBlZWgo_rU=&d8dyPqZlVXmep=&TwesGgWsZks_d=&xvfTw6ZlVnaes=&dfwnwfUgrXZUU=&sHaddtXcWolqj=&Dm8gWmXgiZjlj=&FHWjmfUrnhsgs=&cOhskYYdXkYcg=&BFhUXlYZnUkZV=&9ZvuunVleYgUk=&vPzHdFWebUrgZ=&AgtA4kUmshVsn=&vDf_4nZdfgokb=&xUoD2yYmYhibo=&7QVTuTUkadXpb=&G3snEDXiqdrpb=&AUnl97Vmaloqn=&oDgs6PYpXfeeZ=&DcI3qzWYjejml=&tCgvZvVZsZsmY=&qd9rnTYVYXn_Y=&LL4FCgUffplji=&zn99o7Xe_dXgW=&QTPSCVWVqofeo=&y4rwatWYhohbp=&p7MCCJVbhonfi=&bQ8HW_Y_inefm=&5YFXTqWqqknpc=&AEtr3PYiohkja=&vqAWLPZoldXae=&eqv__lVWjkVrZ=&EXJtx3Ymnlsqb=&3GirtJZd_sqXr=&exvig9WfslmWd=&AIhHoUZbhajZY=&jsnlYJUXmoikY=&AMVWQ6UfUdfpV=&BhhstDZrgflqW=&vib6EyUmqXsmn=&9aHEzOVqZ_ofk=&ybztwmVmercma=&magn5FVsXYVao=&tgFUEXZkggYdk=&6jVI7uVihaZXi=&hTA_WVX_XXZYi=&FXZbg2Upa_ena=&G7rRF8VXcnabj=&VkmMOvUUUgnnh=&NufdBeXahqkYb=&HbgGgzYorf_Ug=&rUfAMcYijepZc=&FHU6UqWUqVhbV=&nzwHOTYfWfdaU=&J8jZ_aVdXprao=&HjRjyPZmoYnoi=&KaT6yCVsV_ona=&bUZzIBZhrposV=&vy3BhqWhndsaj=&ryr9J2UljVoqU=&CmDxpcZWroYlX=&T5JHwuYXsqVom=&VQnF5NZiajish=&UoVtHbUjbkpjd=&q9y2YlVqnWUqn=&heQSeeUgrikne=&ezT7mHVqmgqXi=&zNfmr5YjjhZkX=&wqMte5Z_iZZip=&ju4IB9VedeYks=&gvWqSnZndZadk=&2b28lFYXXapsU=&fe4eEJZicasqZ=&nezQHrUfpoWbm=&c3zIamZXYllpZ=&ftxJtDZfXq_qa=&SnZaCWUsUXVXs=&HPKqMBWgbbnhg=&tD8hZlYjbqric=&n2tCHPVbifbok=&IHVQPeZVdfdkn=&YCQcXNXcioYei=&3nbuN6Vbahbfg=&xIi8__XldWoZl=&IXXZRZZabkahj=&VMG9wJXl_pkhX=&XJKGN_WhZXjqo=&wmJ7YUUjddZUi=&SuDv27Wmedeor=&6GuWHjXUiWkVe=&ixuJxnWshksll=&RXcFxVYsrYXcm=&A2ydpKX_YhsVj=&L_dco9Uijbahi=&GRHJL7VshrXfg=&qzwdukUalopin=&g7g6znWbesfll=&JN8hPxXd_eja_=&4gB3W5VksdVnZ=&8MezUGUmYXUWo=&yNmdNHWkUhVfW=&cj9kqyXUpZcih=&MK6lFuVmpgWsg=&fZTn2EVhUjjld=&wWSmstVrcpYhm=&J32fcPUlncXrj=&BtFL95ZakaZYj=&WZ5p5FVaVmsrj=&ibVjn4UcsXibY=&eknpvzYVXZZkV=&uQfc3AXaVbjfr=&mEz89DVW_kakr=&NaIvl9WelUeqj=&B_asyNWsnW_gk=&Vdn2rpWjgkime=&jIpBSRWWkkaaj=&MDhzQ3WjUbkWq=&CLyENPVaWqVdd=&wJ9aHcZibV_Xl=&PQjolcWnqfqhZ=&w4R8FbYklojmq=&tR8e55UlmmsZc=&BTqFOZZVVhpbl=&zRwbSCXfVcbpV=&4TfB84ZUpbVnW=&WKBrhVZslhmfZ=&xP9zFZUVkedsq=&PgdKvCYiXigqp=&_lMewtYerWorp=&fnxGKfZeUUWVV=&TAw7wdWYVkmUs=&pEKy2LWhlsomm=&adVDyzYkp_mhh=&aYFo4qUriZXhV=&j67y5LW_YVsYj=&XmT7WXZfg_s_c=&pIAnSGXZXiclp=&OURmNsUkXagog=&kZBnSKWpeebnr=&8qL9beYfapoWg=&5CgRIkWqllVle=&XOvFgMUmVnqlr=&yqfB4rUZqdkjc=&VJeZ8UYgkUicr=&nAjBCGUmmWXsf=&XeRwcqVpZpZUe=&vTfAQFXcngkWX=&Bmw57FUZfUrZn=&zN6KNtWsomiqk=&5yhE5qYhZb_ra=&O6_biuWkohgcY=&9GUWo2WmesXsl=&nQ346sXbXsXdl=&ItwidwXflYrcV=&_wvhkVUXdfare=&UVpgpGYjVZrnZ=&E9ZhV6Whdhfcn=&2iMXjeYkdpkfp=&WuGNIbWbocYYW=&hpfsxdWZYbnjc=&PGgkk9U_fZ_km=&uLdECjXfhbbWV=&9hyZIUWofioWY=&89mu5FXrqsbYg=&8CpJ4tXdUYemW=&FkfyguWagqaeX=&UEj3AYWbmUbqm=&ozugl5VnVedgj=&CzBNkJYfhksoh=&A4Qq9FVmeUca_=&6hWzZ4UnaeXsa=&mYtZdnXcrYenq=&_h7hkCXspUhbf=&UwvTI8VaeqlbV=&e66xEnWrmifoV=&5BunlAWhnekUg=&ptpWpiVoZVpWZ=&lEezR9VmnVmVW=&HxvU3qUYe_jid=&KN_I64ViWkakV=&QLcYWEZnnasmZ=&zAeR8bUZsabYb=&F2n53eZX_kbkr=&cLMeb_YYmUgjc=&PPsO3VUsmbkkl=&uLLqJnYsnjlsW=&UNR98zVacZlWi=&sxafrIXabrekZ=&Xb6GKYUspZYWi=&e7qec2Vm_mfZh=&yKD_NMVYn_a_X=&HwX_kKYgpXgcb=&Ky5EP3XXWZXkq=&yxl9VwVUVbnUY=&yewK4tUerUinr=&4YyvvfUWsdage=&2CFBNlWjrnknW=&S6OEtHXbWaWrV=&7kJYbLXssnpr_=&8hKKLrUakpsUc=&coyeT_VffpZYV=&hffrL6YXllmdd=&47I6siWijXiqh=&BOlMPHZefrXVU=&tRjjI2YfXfris=&muLDBMZpmfqrU=&4vuqiIWhbafWY=&PsGYjzXfr_Zdd=&YdlwEMVjXiidX=&a4mRWQUWW_b_s=&dlJol3ZreWYji=&uny4G2ZciUXdZ=&AQDRYkUcW_kZo=&s4jYc3Wfmqrni=&uqmdyaUpqh_Zb=&zv5yUYYolsUbh=&6PrnCiWZpkXc_=&alIIrzWnabW_m=&zOjx3jUcpnoWh=&qPMxsVVmdnnlf=&o8gzhjUoqlqYU=&rWXyEwUhVhldo=&wBPciyUaibWdZ=&jkFT_bZpmrnZs=&bvDbMbWlfXVfX=&_Os6otUqphYWd=&3p5LvTZlplfk_=&VcQIufYUVZZlb=&jeK_d4Xjhfedh=&RFCv2SUjXrfal=&IzPKIBYpnslgV=&JvunfkYXbarhX=&68383wYdhXkrg=&wxEssFWaZUbVU=&CMuDEYUcliaeV=&ujwBJoWkkcdip=&HjubA7ZXYlhqY=&Ktze8zZoshYfg=&4Bwac9UojUa_k=&UzJsHgXcfmbcZ=&3rA98oVYaskm_=&umfGD2XrmUgfb=&XoYxipYmpsjjn=&5pV58vZm_geck=&plQ337XUanjie=&Ibm5ynUsoVgjX=&PHjdk7XnUmpWm=&FYpouuXZbsqes=&eDH8B_WskUhim=&9HcCTiXq_iVdo=&xA8iM6XsUeb_e=&KNRqc6YYiWUgo=&hvHBerXofgqdZ=&_NdYHEVUYUYro=&DQEnIuZoXZdp_=&A5JkZsXjhhYno=&MG3x2yXhVjabe=&vYbAgNYaVs_en=&oGs_yOXUhdpgd=&RMHy7CXicYYVV=&ZW7Y4mUgVcnrU=&WV2IEzUUVpkpd=&zIbxquWkWggqq=&Rh8BynZYWmViW=&DcWDxZUVgWenb=&MwH3MtVfjspZY=&cd_aWFUUVgmhX=&A9OJHQWZYWcnb=&YaXPs3UrWpqhg=&mgT97gVcepYmU=&mw2lfaZelXflV=&B5PPHcUXkldem=&IwwMIdXcYsnXh=&wF2zIRXsgWcXZ=&CiwJWLZpllUV_=&YycR6QVf_qgpo=&J8_Jw2ZekljeU=&AaDGquZfmglWr=&e5pzi3UbgoZf_=&YmgYaZUgW_dYh=&icFiXKXfnUmqc=&fCsm_AWcarqml=&mY52UZVhYYsho=&vXmYCEUiqhnqX=&6L9IQ7VUp_osX=&ycsIZLXVhZsnW=&LaVMXUZirioUo=&WQbLVjYqfpYje=&cfjypwV_kfamc=&ziZrk8UskUaVk=&VDXu4IZaXliYe=&WaSv5wYqraors=&MWK8xgUjZklrl=&3N8hEHYnqYasW=&3szifRVnanjiY=&AHh2omVs_Uhsg=&AbS6rEWdjnbUU=&hEhEmhZpscUVV=&cBfoj_WYbVpnk=&pE5lXaVVaeaXj=&UNy7GJVclnhkf=&lOrjPpWsoWffY=&hDHQqtZqjdnhm=&tsN2R7WWfgXcn=&dF7AjiWkiVjgc=&ShITdlUZoabZq=&iwO2isVdbWr_e=&UR4v4SWiiddVW=&FLnHBkUXZflbh=&jFZYvnXfedWrU=&26JtF8XXoYfUs=&oR4RLKUXqiikW=&pinRSnVssZjVb=&bulWAjWgbmsoX=&v_lFziZjpX_fk=&KgA9wpVdqgVVk=&hPGiEJZZcofp_=&GCb4IlYiikaWs=&PqRCZbVrXfYpU=&PHfjuSVYYYfZk=&KUcWrTXbaV_Wq=&4g5lltXp_fUXn=&QgdFjNVaUXbpr=&iybqjIWhkcY_g=&wwWYFmZ_c_YWb=&bqw_CpYsmWglg=&Yj5CMAUVppc_j=&iv3f6cZUXqrgp=&p7uVHhYUs_bW_=&qSbxW_XVhUkqk=&d_YrESXWccUdj=&rPr3UmXpfiYob=&6rS5eMWebfkqX=&StNzhgVWZffr_=&iDQy86ZXqpWXY=&gjxb9QWcefkkl=&guAH_kWVUeUj_=&Nr4dxtWcsrcVh=&LDGsBWWXhkZXU=&HrfzLOWesjdok=&Nucu7hVoWUXor=&KNerOUYYelmeo=&nEFtkUWVcissn=&DkRRgeXaZ_oUs=&lsr8YwZmcWsle=&4zb83SUaaZsZb=&LlMJosWYmnZVZ=&ZQixmNUskchYh=&gljw4cZenb_hc=&4mIrfRWg_nhZY=&GB3TB3Ykkchhq=&tMsE6nXsYkjkk=&ZKjLUBWjsYnfk=&uHVlDeVYZUqfW=&5orhFnVsl_qqb=&NGt8faXagjYqV=&JaePewZbfbehU=&4AnoK3WUihnhg=&RZtMqkYelnUWe=&FNhBViVrinkZ_=&bmaB5tZ_plglk=&RluF_oVbgshpU=&AID3FCUkjebhe=&4DLK9QXbVlk_U=&D5cGinZbcYpbd=&JaXg2PZ_Ufodi=&e7HQH8Wbbssdr=&PSa_EfVqnXbgf=&bEqvWYXXooYjU=&jDy6JCUcgsUWf=&fLtkEcYUZZXUn=&w_vw9iVepYoUq=&X8I2dKXZl_n_p=&SiQrNsXVdfs_b=&VO9mAuZYgoXak=&wHXKouVcZcgre=&lGFvSzZnhlrUg=&hbmopsZhXneWo=&gFP6akZbsnhlp=&w_ZryIVbVnnpp=&IuGZaMXcrgcln=&roFuquYqssejg=&dmWfejYieebin=&_cGygCXjkVahp=&K87q93Xjkihor=&NlvbLsUdkVcgi=&fWpmHGWgq_igc=&_gkBxFUgsjgqZ=&HPO_XnZhZYlZc=&NY48RRZXclXVn=&XTnLPKZZeZZmW=&9BSHxgW_mjkXY=&TUbC4lUmVbZUs=&M2UYJtVeVesia=&fsCmYwWiWmabX=&jfZxteUUffbad=&APINxUUUodWZc=&GuRhS_XVeaeZY=&QjikMGWsiibhq=&Q8q6RbZlhYVlo=&bLrfB3XagXfif=&qSNEShWpYZkcZ=&vHpXKjZkagabk=&TJRXdhWnWrhdh=&rN9Lp_Zncpajb=&2PnTTbVdhXraY=&PA7XKmXelsV_k=&vKgYncYf_o_Ui=&5L97ryWVspqab=&HUaA4cW_ahafj=&p9Zi4UXWpZscl=&6y3THpYebiYss=&YQ2ibRZlVVUka=&mMUgobUsecWei=&IcpMEHZYmplcm=&eVKrNaZqiphoj=&N2CmHcXsasjkq=&Nz9IyUUhaisqk=&Lj6v7AWskpiic=&WtSNneYacjYZY=&mxihB_WqjkVjp=&48orByZWmepol=&lH3zXUWeosZfX=&YnskNrZnVankg=&VpgOs5Yhdspbn=&8Mp9njUeYYoWl=&WQ8iAqUcW_kss=&DvEWlRYkYgYhs=&X7PxSWXocdfVm=&Fk4qhtZUn_nag=&VxoTOUUlgWrgc=&SsCweoYocersq=&4YdasRZbqpbcc=&h95MQVZcbsqXi=&BY5CCxWVrWari=&fhM7elUdiloaq=&cmQGfrUjYlgqX=&4tMaFTYfbebmW=&3aWKJsXeVgl_V=&JqgglnUhcWemr=&nzsYsOZqfXdVc=&L_oriqZjjjVeW=&CIreT8UodWkUn=&36HZ9aWmrroWU=&VvKdwFXqYWrpW=&5ahoNGUmYZXah=&Bs5dICZkqfjXh=&xTrgPSYbndeW_=&_EDOTWVnkZcas=&nEYUSRZZkogqZ=&6I8qz9UlfVUcZ=&khc8VTZba_lhl=&xwm4D3Vnc_hje=&7iPeuoXfrWoZY=&c3ALz4YnWbjpU=&nUvqRxUmifsdh=&zWclOkXimsjnW=&VA8CzEWrasjpn=&vsvhAaWmcYecs=&MFKvLOXbiqbXi=&OjVJI8WVmesqm=&uuG2SwYiYchhc=&antxbhVYYadnf=&kVrg85ZVhWjrj=&3LRogBYoX_gWX=&lhtyfbVgciihm=&BExo7dZdkV_Yp=&UCYZIkVbrkhZb=&FRBXstUhqUndj=&7_diVJWjoUYkf=&sKojgbVf_YWWr=&8iqF5cZcpUWdi=&QCJz8oWXhpfpf=&qM2l5mUqerflW=&J42h_VUd_cmaX=&YshaXjWYjnWYg=&udrhJvWikZmji=&9ctbXRWhjgXln=&m4ffmbUpUYaZn=&ZcPLsJVhpVaZg=&DqjtkIZhbidkk=&iWrRsyUkoqr_s=&Px7qjXXncirrf=&tvmxAzUnlXrcV=&WN5OpsXbUhnb_=&eJVQhjYjVkgVq=&O6aemrWYVpdik=&MwABRCU_brqml=&bEtEaVUajWfrh=&rVJ_lUVeo_plW=&VHlfo5Wss_bUg=&fElEVNXVZhgkZ=&VLW8_CUrZmjpk=&VRHFL9WYZUkZm=&_FMBvWYUVhiqm=&NDxl8gZXXgVoY=&kzC49vUVbdomX=&KXgEXrVkXZedU=&d6UEb8Vbbjomd=&3Bv5xUUlVXleW=&qkp9COYiVVfna=&QxeijfZXenYp_=&RO5ZItUXUrlXs=&Q8T3FzZclZojf=&ndqCxEZneWcse=&TrfU6YVhgij_s=&yZAzusXjYlf_p=&Oci7_5ZljpXm_=&B9CbePZndaomj=&CVxb5nUsYrog_=&Wxev54ZVshXjn=&YqiLvYW_njfVl=&mac5QIX_ljdkd=&ggXljIWgcseck=&lqxFQ9Urnpfao=&sWHXBnVoXorbZ=&nDvK6HXVhkmhs=&nIWvh2WZUgmio=&2Mif_VXVilsUl=&CmDTDEZYaoacd=&4xMTLIZpciZnr=&56VMAZUpqWlkk=&d929NXWrnWVjX=&WOIypVXfVrfs_=&DeHbA5Yb_b_qg=&vviCPZWcWdVYZ=&3iLK8uWaikmlW=&Dt368FYkrodio=&lyYr5xXZYrVdl=&HEVWIRZ_f_hof=&3gVrhYUbZaYsi=&NSm3NKYpsYoVf=&3koXZWZgi_Zpq=&_DcDUgXpcsX_a=&zkMwRVVZVWgof=&6v78y5YlWhdcZ=&9pZGP8ZqhoUap=&yPc_7DYsk_rka=&OTrskfVeqrsqi=&lQustGYpqWmjj=&x4LNPwVXdUYng=&552S7aVoUVdhc=&ebAfFaXjhhpng=&sPLF2LWbidcsa=&Jyu9dEYaofmii=&iPgorHWidVmXn=&u_cr3_WggbZWg=&9ON2UVZhmpfff=&btr9JZYlgoU_h=&AeJlNTY_dWr_l=&d4twr4YjgWqml=&G2w8XOWeiqrYZ=&ypV_H8XZXmlZo=&YfspA7ZdrhVfj=&WHaToJXgYhlVa=&X3S7zcXgXodbf=&8CZBG2YdUfkgp=&uoRbwMZcokcfb=&cKSRPiY_eVoUW=&MW7lsrWnlhsYq=&ObBu5_UXdibjZ=&k2k7PoWkpUblo=&apx7gkXjWhkbf=&2Nd_Q9ZYknrpY=&ZhOzhyUoYpspr=&sKMolKXjbqolq=&e9rStCUlqmhlU=&y2gUT9Xrdoeci=&34fhihZlkebqW=&_5WAunXd_edbc=&UdeTGIYp_kgYo=&8QmplHZnfWmdn=&h9a2QmYjerZZV=&tWebsyUreq_bl=&HERm63UXUWj_i=&ouzXg_XmafjpV=&5xr7RMVhshqcV=&ptS2KdYpsgmUi=&gVicdSUmnYncj=&ftkKgNVWnkUaY=&UpwnO6WYmbX_q=&EBdGMRXohiYXV=&EN3fu6Wiap_kd=&MMLWDCUUdmchr=&Uzl3DbVkqjorU=&colNakWXWoVeZ=&xGrdF6XekiZUq=&qOol7RWZas__e=&HIvGtuWfsVjrg=&Ei5oLvXjaWaqZ=&2kViOsWUcmWWr=&uzcDJmWsppanl=&fwZsUNV_jpomj=&ynTIXcUl_dalV=&L9UgRtZV_gkcW=&E6STUqWWZjpiq=&w34fRjVlmjUki=&5lLPUiYWs_dhW=&hq_ywyXsZmedl=&Xx7peXUprcbeU=&DKGkaWVlVnsbX=&W7aAipWXjablc=&sUdDILYlcZjba=&Y67CJgXeehils=&PbdjfLUjgjqcb=&2TP3ZHZniopXo=&_OA4O3Ubhkao_=&k8Px9HVUaecmk=&_AOxiTYsjoWg_=&epHBjFXehrbWg=&sr4DnxXgnUYfV=&hJPIljYkoYcs_=&aj9lXbVjVsqWW=&ocSMSWVgrVnWj=&jQXtZUZhqipUc=&xl4ay9XnXcUbi=&JlQioLZqqghZp=&VMPU4KZqYXjjc=&u4zgrEUVlgUff=&XaWht2XVmrloX=&4VxMJ8YimWoXb=&gd3LBKZUhoXWZ=&xvZoOXXkmncho=&vI6uKjVUrihrk=&GEIPqFYkmrWsg=&zeuGsDZfjkgbp=&YLbIP4WjWcj_l=&5fO78FZdcZgoj=&uCnW7IVkbViWZ=&6CXLfIZbfgkie=&lNnBNyXYksYlW=&GeCPHzUkmbqrc=&wv4ZTHWYXimWp=&neDfBgWVpoYhe=&j5WkKZYVaqZfa=&KGupRCZscscnV=&OkHrocYaijcnh=&eWDJ9gZhdrrZd=&6ePOYSVldpYmX=&w6dLOzVsrlfVs=&37g2UuVkfieVr=&nFdthKXgUVdUf=&yUb9sfZjhbVVj=&eTwahPXi_Zdgj=&APoElFWfacbgo=&QJgknXXembppc=&tSTAx6YlrUskr=&bqsHIqWVlggle=&D59Yu4YhrZYYa=&mGqyvUUjclmdp=&GQlJijUVneaUo=&jC4UpsUqkXi_V=&vu9RsyVahqopm=&S3qQhIUf_oaVq=&JRxvXoZUjggjr=&O39_E_VqgUYWe=&rJvrblWUdkcWq=&TAjrKdUphqXsg=&nf3QwOVlmedrd=&bFrU38XjlcbhU=&6PVvJWVkVkqic=&47gzGNXZVXqhr=&LeaOVkYkicksj=&NTKjfGYnhffmZ=&SrbGxZVfgeWaX=&ZSniwOVjqqZjj=&ekAftoUnhqqYj=&NUHwfSWXi_WXU=&_FQi4xZaqdYig=&grdrbkVhj_shX=&jrbxEeVUjUnVj=&qJncboUchqsYr=&2Z5lxLVhhXVqj=&2RIoyZXsbYlah=&Qtd9OFUplXZrh=&CUJ9z8ZXoackq=&mcrfd3U_nrild=&ZUjRLlXaekhqU=&fKcZ_VUphWeUg=&mAjMMEXUUbXkf=&4rFoPjYnagqaf=&U7wUpkVq_cYql=&VDYpqcWVgq__Z=&aIYPDOXfpsiWc=&haKJDPYhm_isi=&KIrCcCYqcbagf=&82Iy87WbVWogg=&_Ks5aHVXc_ZZm=&PR6VpkUbsbekY=&vUfBUrWkeblpg=&XxjxqQXmWcpZs=&Dbtat4VYfVUUX=&o4Z4LXUomqosg=&pZPZmkYVhXrX_=&GQOjatYbnbhcj=&K5AchqUWoVdeY=&J5Ol4eUspoUZU=&hT9cgJZbpmjVd=&YssnOSZlWq_ZZ=&Vi53k6ZmYnkWj=&v6Iwv5WWVcrhj=&WQZedsZXVXfoW=&GZz5KmXoajqjc=&wKRIUOUbWb_g_=&ToBFHwUaXroon=&FAynatUarsdhn=&6fLlmMYVjregq=&UXOYVrZZanjgm=&d9EQHNUqnpsnZ=&x7PhhrZcmWlsU=&CiVCcDVpYVUaq=&CJN6xPVinZkdY=&KjvEl3ZZbpXch=&hoyszOXndpWlg=&5eO7E9YaoaXbj=&VOLEe3UfZXdZ_=&FADWdmYialndb=&JKPwwVXh_aljq=&fHBiq2VhehaXp=&ECYZS5VgWYeoX=&2ZaTiGVljssgf=&9NSs4mZVYicn_=&NgqqZTVfVWcsn=&_WNyGFVmeUkbZ=&2Hp3afXdpXesZ=&HrRjN4ZqjeoZ_=&LJkIk6ZV_kslb=&PjQbaCZdbcmaf=&c_da8kUpbmnqo=&yLxyenWYarilm=&VP4kipXbpmecW=&rE53vdZfoeWVZ=&zbvX9PUmUYodl=&Z4RuVZXkZkg_W=&ENgBfJZrfYsUo=&pJ7XTyWkn_siU=&LGoJU7ZlYrgdZ=&d_zBm3ZYmXmss=&nyMvUoZZnYfhU=&EoiZLoVVisrhX=&dMttWwWfnldWc=&r7LWv6Wc_dkZj=&tWSc_GWnhfmkh=&wm2s2QZXkfspf=&Epm7bYWYnWgpZ=&de3YitZiqnlWc=&wGzpHTVXYZV_X=&5sMNHCYamYUcV=&ezwX6EXUfYUYs=&YrxsFjWUheVWn=&zedoh3Uijanph=&u4nrxMXksjXfj=&oI8YxGWWecYdm=&unY5awXeimsbe=&SNrSsyYipfWcn=&NTHFXyYbZqUgq=&hDHqWYXachYi_=&xoeytwZUWVeeb=&s5B4Y_UVhseni=&3Fm7f6VleqrXo=&WrnIiqZYgrjUm=&DDMRy4VYqaYZn=&3DeSqLZXsahqi=&RdBWaPVqnkrVl=&tgv2aJZcaVnik=&QLxZVuUinrVnf=&hQQOGFWanZfsc=&DiNDtBZbVaibo=&a8lMZQWc_rdjn=&MFYAdEVcZoZnr=&ACDqLlZXcpsqr=&oVoDjBZrWgqaf=&QqnyPcZVWnVXm=&C2fdlvXgcfZZc=&qDK4SeZrbYonV=&JEp_XtYoVh_lU=&tF_2X7WVWUXil=&g6z_dgYfZfmgd=&hZdGBSWWnr_pU=&6_8SSNUqajqdq=&EkMj76XYXalUo=&TCUP9WW_a_haa=&t2oLwmZUoeZdf=&UoopbOU_iUrsY=&Qb25pbZfahcsc=&ZV73DPYaqYa_l=&6BekgIWWmicsZ=&9IgqgJUhmnbpY=&smnZSTWUXrooY=&73swzUW_geY_a=&8tQkaGYlkanfW=&nPaFoOVr_djjb=&x2goXjXfkakel=&Dssl2YUX_frkl=&QvehDOVspcoYg=&bE9tnIVbbas_j=&yoQUWhYjciVY_=&JirQmKWo_hpqX=&_6GgOfYmkWfbd=&zjHtKRXclpUpg=&trNZduXbXWnYi=&SoMIllVlnpZeU=&sd5KANUVdmhYi=&s6maH2Zdcqjbk=&F9SuHtZrZmYer=&LGI2H5WflZkmj=&vJgwJFYiaieUb=&XPRkVjYVrmgfV=&w3bvKfUXVigsg=&JZDJRBXjdjdfZ=&SPr4r9UZcXgbU=&_TMK92ZhZommi=&yC9IMoXYrqcdW=&eFzx4lZsnemUi=&pn7DuFUkfrdYm=&uWpcaqWnjcWia=&_VHm72Xdci_fj=&bTllBiVe_ZYhl=&blexzAUVnpqsc=&Pai_UHVXlcden=&26JUppUolgYaf=&SoG4ZKXbegXmU=&29S3aoVpkVhgs=&sg92k9XXpgimp=&ABG2FZZslWhoe=&Fqvu4HXUpjacq=&zphLn_WiedgWf=&juorVHVUWinXU=&f6gSD5Zmemeqn=&J_uFphZdboplk=&IRsZBoVhkngrW=&7uZa2EVXUerpb=&ArmlMZVbWUdro=&aRu745YYeVrdq=&YRfHFJYZpclhi=&adQxNlYXl_qeh=&NS9arnVdabWVq=&UUayN3VjmsYld=&YoR8aYZifVcis=&8sMObTUsoroUp=&YIXHzsWemYaYe=&AsxNdSUVqkq_Z=&XvuW6pWekYsmj=&or9lThYfloYVq=&AZXjGTZWWmpsh=&2cohb_Zk_kqbo=&MoZYfSXgrahjh=&vDGqI6Willrfe=&axVV6xXrhlVgb=&3eEKelV_mpadh=&uloSoeWkgggbZ=&HM_p4OUkofqel=&y_ohSUY_jsbZb=&76NJkPWlibpjb=&flIV79ZYooV_W=&5igKQfWglVsXf=&dxJr2OZsdkoae=&gtopBnZ_jsisl=&uU_DyQUrmgZpd=&dOYbQGVcjUlaq=&Kyp4IuXsUgfsr=&jfOnV9ZjUrb_b=&hn8yMLUoqgcVc=&NJXcAxYib__fl=&V89ifiYpoejeW=&_AMfBDWZiZmca=&EGqXpwWmpoWnV=&Si5lMMXWqilVh=&rNBOoHUWjWoVr=&N_6hnlZe_Vdmf=&gTHQENWmlirYs=&jgNMqnZZjemWX=&RXXrORXqrVXmo=&pyRHvRYXhmbh_=&wHGCvPXm_mbpr=&NouNNQVeplnUi=&Kmm8HEZhmfhdg=&MQ7D_hWmc_aaf=&Rp8wL4YWbjomc=&LUV9N7Wnempfd=&wwtahGVgdlll_=&GI6inmYilmbli=&eUFdcEXdZpfek=&aQflTUWdhslfc=&yOKnxWVjgjnd_=&MyoQpjXgZhmZl=&oac6R5VsfrfsX=&nHjmg5Vnb_njV=&MtDGt5XVrcWgd=&DOva6mWVgUsUV=&UrbFjnVsYegno=&lF9_XIXeegmdq=&8EbaIlYemcWcW=&Q9reJxWX_nqqs=&qVglyeYhfbdcZ=&v9D4xZUVWVnXY=&63w399YlpUqhb=&KKYHX9UlXXnfY=&rQlL9zVj_VfVU=&qe8jz6VZcVjbk=&Gclpd4UWikgnU=&pi5h7QWjbYUmb=&MJHVUIUcVmpdr=&eB42XkWVkdgkd=&2lndAdVqXWZmZ=&lwwZnNUrjjZal=&3kVBYbXqVhqqr=&xeNAMqZikdlga=&xIKHKUWpknrjf=&QsY6VxUhoalbV=&LYIQxVVVkcaae=&VPydjAXiUcYYU=&ONoXOSYeaakah=&TWWLEmXZkboos=&HdDcCgZefjnga=&spYao2WXjhbfe=&ybmJ3dZVm_mZl=&ACVhSzWYW_Xbi=&fkapq3Zibcr_m=&VvP5fDVrrlccs=&sfDcnlUbZcshU=&kTYSSrVhpgb_b=&bNzjOMUcYhrfe=&jY3ihlWbXhlcU=&mv5qfKWnqUsXd=&6rnSiKX_Upkqe=&XvfcRdWZgdfkl=&UlAkGSXaZclYf=&W9jbAMUX_ZaXU=&OFCvexVoilrlm=&DDR9qkWbcUlXd=&xdzQvOVprjUob=&HOEJrjWriiffY=&XdeiPpUidjVYg=&LlBNkbVZYkhep=&ONBXIyZhgsanf=&fb6A27Zhegpjp=&LtXuWXXVgndXY=&nlG5uuYpfVmZZ=&optVXHVjkmYYc=&wfoLTsWdgegjs=&a_lBhKZhUUXjq=&HjdEY6UgWaopW=&LprMSWWeZiebW=&uazTjOVlnooYf=&i9AzvZVWldmdW=&OHWCr8XopsUfp=&BYkvJRXcjmZYq=&SsybgUUYVVffU=&lXb5VAXspkfeY=&kWiFYdWjYqkXf=&t8TZ4oZm_oamn=&DySqNcVsZlssq=&Tty_GIVgglfXj=&VSxjGaXpnVrZk=&kHQBcRVasgmoX=&28qJ4EZchaXYm=&kUbcHqWndqobe=&NgdIH7VZfZaa_=&j8dzv2ZmkmUke=&ITXUlNXrmjkfV=&DL3u27XUqbjYf=&SIaYNdZr_Xhgn=&smahgxWVhqsYZ=&R5BzgCZorkpXg=&OCNTFnWfslnmc=&qBZmUJYjib_ig=&U8rMshVpXaZYo=&dpTPbkYfdiVX_=&dbq5ytVa_eong=&NmcUAfUodUqbl=&fYtJE6ZlWsklc=&zPXONJUVcarXh=&QSdxI6UYUbUUn=&o7bwWQYjhdpVd=&ZBUTHXUVnnpXZ=&e8BVlSVombocj=&goiVYlZVoiiZi=&4ZFaakXsllgqj=&ICSsWWUgX_UbZ=&stXQ3nWlglqbZ=&IhI6kVYYbqmqd=&zk5KNQWfkVdhb=&UBA9jvZnaX_Wn=&vJi8_9UYanWn_=&AW8KOLYfeipUV=&DgOmUnWmZo_ss=&6dYgvBVkqYlYl=&N2yaeTUlgZp_n=&TipKU6Wn__dec=&klsWdqZsocfVi=&_wytfXYamhkkb=&AKPgxNU__nVVj=&hhDUhgZdsUjnZ=&og3KAAUal_sWm=&2PCPvsWiWfeWU=&ksnQo3WZbcUkc=&9O4DXyZiijgdn=&ewU_QEZikhcl_=&gfhffJY_frqVr=&BTPlhvUhijaYb=&OTRfbTYXrjsjs=&peWGD5ZqiUgXd=&pcLCpAZerdkjq=&eAzMkrZcppWfh=&ptRuepXephrZY=&IBbsFJWiYbcnn=&zjVcAnVXZaqhd=&ejGdH8WVZbqkm=&78vc4uZrhXmsW=&UbyuBpUWeseWs=&3IosxnXbUokrU=&plKHpoYrVjV_h=&7OrMOxYoijhch=&WKBswVWpcqoVl=&LOjskhZ_rgXkp=&KQ5DdYXoWhaWb=&oSrq4UZmeZjc_=&HQ4yAqUhYjVms=&TpzEsbZWmXjkY=&IohFcdVcVdo_j=&cyl2oJUiZosls=&yBvDkXYeWWpqk=&28Hi24WZmbcsk=&WxJGuhWWoVcZi=&gJmKtUYrdgXZZ=&AEM6K_YbdelWp=&cwt9gUUYmUcpZ=&qzPDLRZmZiUbl=&WnyJJkZqZkkee=&QIA4FmYmoWn_Y=&s2Q4ssUsbjW_j=&VA35lmXiXqaXi=&qjDrpyUaforan=&cd4lDFWdgkdhj=&9CAqLoZUheioU=&qYMPyIU_bXaYm=&xfhPzvWsYUdnn=&sumGVkXr_lifo=&hfuHGxVfUpahn=&GyxNNsYnpmgYk=&aWOu5vX_cbpVc=&mbWcqYXcsebnl=&5oeC9YVgfUqgh=&NdNwXqWWnhfjp=&Jw3tiOZ_lUcaZ=&xDDlBpXdeXhl_=&29y6Q5ZraeUqZ=&BS8tY8VgmYooc=&Hoz5CdWdm_jas=&oakqmvWYgUmrp=&uoDDobUWYXUXk=&GxcW9wZmZegk_=&LY3KelXrbnepW=&p_qhG3YZsbjoa=&S_hyZoWiUeeV_=&QBFsQ7XclYjkW=&xX5akIWVajVka=&EloMSyUekfpee=&HXYvtbXqaqh_U=&w8JEGeVdafkrn=&hSOEF4YsY_krp=&IQJfBaWYinlld=&CGLctuYiXXfrr=&2NVBxFUWigXjb=&maaLWeU_fahnr=&qNIiRaXcqXgrc=&7pPWLOWsqlcbs=&q93ciQZVcheZp=&3u_KzYVWc_kjc=&CgkWANXmbZcop=&b4ymReUflggXp=&MZxJgfYhVsZfp=&3XUBCuYmkrhar=&WfIQMeVqcljhk=&MnQiO_ZmZmddi=&73MYVlXedVcoc=&lwqg7oXgqfnmV=&8LfULCXhnaqgm=&YKXlMKVrqUafc=&UUv_8DXnnU_an=&heWuBaUariZZW=&PspDrDZokVoXl=&4Uo8jUYjZksWU=&aBLrVzUqqZalU=&L5NrcGUkjUVXn=&kNAwtyUnonsjg=&lCX7B8WqUgokn=&3HLVItWiqdiff=&gAHB3WZsbh_m_=&LQHV9YWgpshZr=&4jmSnqZXeadsb=&qfX58wYrpdppX=&5lGzuuV_UcWsW=&Yts867WfXlYbg=&Tsz5kqXlbeZkb=&cTZEtUZqoiigf=&4xvcc7UZrVWsd=&LnMxnLY_Zkhsg=&JVErT_ZnrYZih=&G5nswpYreYhnY=&PiETmzVYf_psn=&ZbEQz6ZXgZoam=&4DStgEXfpdldc=&5J4ZZfWqqdfqY=&h_dbH_Zirmgir=&VsmlUdYpWibjV=&Cxbum8Vfah_gl=&otgjThUZookqa=&cEx_KtWnicqUa=&scigOgXsjWUgZ=&Vv3I95Vhhpk_Z=&UgZ8BZUYrUcgm=&SrKPItXmesndb=&_BHDc9Zbilbjb=&6ALwSKVfdXrga=&2KwKEwYlYggeX=&njzPU5ZfUgfmq=&ukbyT6WqbhZXg=&_cEgLkWcgrVll=&64pdJ7VYZqXfa=&mjhmN8XbjXhi_=&jTDMItUqfgXli=&f4uEdAZZigprU=&4yFrsjXYmghqf=&9FzhY7Wmjbhjc=&FCUMRKXlpYljc=&syMB67XboVkhd=&aNqjECUedjdVf=&KqugVzYdZhrqn=&Kh2V9uVVUcgec=&DfeIbwYlXlYkn=&AvxCVnWllm_V_=&nbvx4OUdqVind=&E8DewtYiXlobb=&FSM_3bVqaiohd=&N5jmxfYsnoboZ=&yMJ5roUgXZmsp=&II6JhcVVajlms=&c5Gwn2ZirsahW=&3KV2BEUgljshV=&UEUHXWZighfpV=&kRF8GFYqophor=&ZiDeGGYlbhfro=&sIcBHrYnUWnln=&UNLDTBXncWeec=&7yTtswWfgdqpk=&fUWP76WjfmkVf=&Vu6qkPWgmWjZc=&AUOIjPV_Y_nXg=&Z4IWoUUoqYdag=&8J9vl9UWojkYa=&RGRF3zXmp_gpW=&LHWOSKVpZbfgi=&k5etT3XmsYfsZ=&csgGxqZeqXn_f=&L3f4pUUso_Zfn=&eqhcvGVZdXbdl=&p5Rgb7YXoohZZ=&W_SkO5Vbq_dka=&iMyoSdXjeVZsa=&LFpX2nZrccokl=&fDFdJsUfWXaYi=&hpOu5PYVbfobW=&XWh3poUphfUgn=&koWpGwYeoqXhe=&JdNKpEUcsjXbU=&oN7l5oVcgilfq=&fzhrZsUbcflnc=&3cnAXAYpqosdl=&bXJITKUfffrbg=&NrlUpiVkUlYre=&tuDSOCWkjYr_n=&l5QBF6Ubeqcsm=&Ngr4uhZmZjprm=&6nGERFUrp_Xia=&QtdUTsVde_Wpn=&wkSQZzWknosao=&DtsludXdicpmU=&NgUiiHWVZliao=&GoFFo5ZYVcboa=&xKJrmQYjqlcfh=&VZfGgcUfhoXpk=&MXijOUUUVqUas=&PxLtVNVkYdYgp=&mWZCraUWaboXh=&gFHVpgUoosafa=&or2bwkZZgdXY_=&MoOW9BUWUVecn=&I8SA8qWlYdWZs=&X5Ozr8UlZdpmf=&grdzMqWWmXVqe=&Cy4kaqVsdcffs=&gdyrA3VoYmddo=&6tJ8DMYgWjlko=&8dsRdWVeeaZbk=&sFxgpKZqZebkb=&bAvTc9Vhfk_pU=&dKHv4SZgWoXZU=&BYcr22U_qjejh=&UxLQn5Vhnnsbj=&_c6MyeWUgph__=&EosRfzWdVogaW=&P6NkOAUbneYYs=&ODoyMQXcbnlhp=&AEGLJEWh_qamm=&DDXbWiXipeWaf=&ZzqrISYZrrmib=&LGYrZOZjnlZWn=&9fSs93Yhoh_U_=&ICKY82Wingbaf=&Xb95PTXkgVlic=&mqhwZbYioZfkU=&_zA4hQUjpjfrl=&z2TJcJYWsqapZ=&yPhRR7Zhqkkfc=&BgVDVIYcnaV_f=&xTW3XRUW_Ubmo=&mw8wwoXVldZne=&apX4thYccfoaX=&Y3DckQWgkYnoX=&wlZcL3UssVYrY=&ED_BYnZ_krYfj=&wPkOxtVoreZfk=&hjsAUjWs_Xdsc=&Vn64JiYcqUaYU=&UrjFRrUYlU_ij=&uXWbdJZdfkkXj=&8N6XNlYgkekr_=&XsvTsIVpn_kV_=&2ZDRf4WoXagrj=&cE7Tm8WhZUfWa=&DZ8rPfXbspipn=&WQkEDcXeZacjh=&qnhVQgYoarUZg=&G864HsXUkYnUf=&lCCM8mUdpgmpY=&7FqzUwYWrVYXU=&UD5CehZgbZmgY=&bh6WVOZcZZeig=&KvDbZIWsZYZZm=&rivo44XbshVgZ=&jVgIFHZkanife=&dYIIwPWbnkiX_=&Dcs7WYXY_mqsp=&ugLGpYXqmgXep=&oYrsCSZrmprjh=&iTvXKqWqfcjpj=&_X3kWlXceYilb=&ntnUbkWrrfbkh=&7jSCVEVrpoXhW=&xmVmrmW_lleUY=&8FnhFjXols_kp=&hcJ6TpVdsflrd=&4d5S4oVUheZin=&rttbo3ZkpgihU=&6zLZdkWZosZpp=&e_iwj8UlZUpgY=&OyozRBVkspmVZ=&I_aDT5WeUrWjr=&jFMP6LXhamojf=&g4QDIrXmqbUbV=&OpTKatZoWdeUW=&o9Ts5VWfsWfn_=&iSN6gaWslsYiY=&aEubXzVlpmgqj=&Rw9yImXhfplqb=&63lwPYUq_cmki=&Q7LllzWUXekq_=&2LhzSRXeia_oZ=&xdSMrTZkYYbeV=&HaonqaWeXUYUi=&RItq9_Vqpjsnd=&d4Ew7KZejUqsh=&MogALhXUhkUpm=&dcMlBKUskXqql=&fMHs3wZYhrZXW=&TFAilYXrqjVdb=&Gn2WM5ZloUWcr=&QrFeYvWXhsZV_=&HdZ9PqYVqsUaa=&nJuxbrWkkspod=&FOOTNLUipkifr=&PTMWbfYVolsfY=&bDfAFIYmVfniY=&5B4zxkYaUdXfe=&w7SlIhWdVeimr=&tRZubkZeZofbX=&dyKbO8WWcsqXf=&BPGhM2WgUkbse=&ejNNSzUqhmeoq=&E7pKEpXnljf__=&naLHA_ViqYdWU=&oj3niwWdhYjqc=&WRq8q6XqhVYXg=&m7VLlaZlisZiZ=&o5YjzcUc_hefr=&RdPYlfZWcmjfr=&p37Jh5XUopim_=&DL_eOgUYbgZiX=&fDZANoUpsbYgX=&rSzx24WskZgpo=&7Vg9kdUo_UWda=&aLFq9oWp_mfkr=&Ge2HIgXpgrZaV=&Nj3ZBHUVWdVWr=&KgQzOrVhbbnrX=&84ycNrYVUWcUU=&irMeMbZZkkfkU=&vJAbErZek_hbU=&csseZqYbYkZeY=&8L3SUtZrWsrZi=&OHcX4KYkql_Ub=&3UMtmAXoin_nb=&NmjpLYVZkoafY=&qu9ZrhXnrVhqX=&_yVkGRZknllja=&oY_KD4WZolVU_=&BYc3rzYaXjofZ=&uh3hVbVYloboa=&EhdHJEXcWeaeY=&sNAJ4ZVcpsVpn=&ZY4N35Wqjhfip=&XB4ABMUikbYkY=&7M2SNVYekYUqo=&bhGOKQWXUm_ai=&XMH4TDXqXsYhn=&tG2_mTX_mYYni=&g_ZorwWZlo_Wj=&IBOur5XeZWgVU=&OTyQdtZYpnjWq=&KNSnn_ZciVsXd=&_baLqgZpXpidg=&IacN2_VrdmsUq=&LXdqqcXnZjbfo=&qeuLFCVYVVhda=&xFexoCVVcoYce=&PM5CP8ZkhVZYk=&7Hb8X2XhmWXb_=&6h6nZCXeVbYkX=&J9DXhvWjUdWnd=&cCZeIAVWWc__j=&WtT9rvUko_hnl=&dIKQiEXjZefld=&SmCirzWidlboi=&Fr2PUEWjheXjV=&cT53XbYZeVbmp=&KARVrEZsncXro=&dzTOtQXd_dpjs=&B9jmlBXYepWml=&7S_rOaYiXdVWX=&bpvNcMWgZacWU=&6GV9GmXXehdsf=&5XNZABUkgaWcf=&muhzVsVrYlVbl=&4Ps6kdUZYWlhq=&QCTsbmXnYkjcW=&JbEnFTZsZhfYc=&G_ELGBVa_ZYrs=&WtweVeYchXbdp=&WRUZrkWkq_fap=&JDDcohVjqjrX_=&CevVuqUaVXsfY=&DeemvFYhiqglo=&dobKgeUjXesVq=&H6_BhKVZmdUYm=&CSj5hiYZrVqWa=&To8IZMXYmsicZ=&KWufe7UmcfjVp=&YxqmDYUbfrfqn=&Anp6pIXspUejk=&aQQswTZlUdUrg=&GrQqxxUiskfdo=&dWs4ENYgVofog=&NL2PzzVdflnfb=&yjuDEtYhsZmpb=&JP_5hrUpVZlUh=&u3LmVOZrcXioe=&Ur_ljFUg_j_a_=&gsE6mqXnWarjs=&eMr2biZXXdesa=&rbSBATXbVmUog=&VlOFEKVhmUjgd=&C_EvqqWhWhoUo=&gAOCuRYqZUoV_=&cwCqBVUfdgbgi=&8lBpGHYUhbaoa=&VxbpfvVaYsVV_=&3ukdIwWpUpYfd=&hVDDB3UVlj__X=&WNyF4yZYXbroi=&jtx7kjVihg_qf=&IDiVVeYZsmVi_=&Www5OiZZ_Unnh=&_Rhf6iUnpkqVW=&muszcxWYmUnYs=&Gne7_dWl_njqc=&WDAR2EXfrXidZ=&aLPtRQWrhnpVo=&kXfmGUWkmobjZ=&3v7iVkVnbqfrW=&ysgH2eUdoknjo=&cw9HhcXlUbqmU=&ZinQ3LZmZhdce=&Gix6HHVcniloe=&vPvUPUYfXmd_U=&b_dOiMUalsqdl=&PHWxzaYr_r_cj=&RfTyCKYUagrmX=&uXFBKaXbUYWpV=&PnfyDMWopWkZb=&vXSC8FVVsokep=&Rp2Q3NWebamoa=&OavZLfVsqdg_r=&OUGYXvXUZYisV=&SxAxvGWZVpdjj=&OtYxeJYigXbac=&MxpvcrUmn_YWa=&4SnZiMYmgiqiW=&O4kDx_WdUcnfr=&_ikqmwXajmegb=&WRPdtgVqcfqgp=&FVzz2aVkUsl__=&aa8V6LXqknbnV=&kgx88DXpr_bch=&8hsbJdXbmrW_j=&MMGBGQWfoWnck=&B2uMbfUp_ohdm=&KSLSQYZWWfarn=&jW3rteYZcjYlr=&dHQbGCWnaajog=&pZ7_PuVijeV_h=&b8i8lqYgkUpZf=&LiMPl7Y_YoV_j=&9rVbl9Udda_Yr=&xNQLzwUgffZjj=&MD3CByZenobkm=&dCfx2AWarlYZ_=&sefGxxVrYWY_m=&jpK_NrUWeejYi=&rDS5pQYpeqUhe=&TrA2CFWXboliW=&zn6JzoUlessnW=&OTrZr5YokaaUj=&XJy9miZdYeYdi=&l7lTjcUZssben=&MQrYrIXoer_hi=&6KpmjWWXeYeqZ=&UzIqLcWdVgk_p=&_AJyL3UnlbkbX=&Wl3LzVXqVpWnn=&r3qEIpXqsiako=&jWiKI_YpfqdVs=&lJ7mtRWhlaXVp=&pIHYSzYdWk_nY=&24PmHfZZlUsr_=&W4Y99uWnqrcai=&QnBmR4UapgZr_=&ch5t6ZUoYcXjX=&iaZRXaZlVsVlX=&4tSeMoXUpkZdp=&NQFDoWWinVaso=&lrcqFGZVVZk_c=&Iuk8zsVgVgfYa=&MZ2zPhVmnrZqY=&6E_QdIVnqXoiY=&gEuzZlVqcqfXj=&lKWvKYZqXXeme=&nraJfIZogrXm_=&NgAguNWmghXn_=&OKt2D5YcfWndV=&HgxjpPVrUndYU=&micNv_ZsniUV_=&h79yhHZscsjks=&LaglRzZhlreVa=&_JVfPaZZdqqac=&7ozYAwWZrWUsm=&9j3jGUZdWdVsd=&pwWgszYdYjaZm=&ja2TcUUeclshs=&sGHI3RVWkUarj=&_kpOgjYdi_Xar=&UogSlPZmrgjfh=&7MzQvZUpVfcgZ=&aXqD_CYppaW_X=&h_759TWXilnaa=&gSKzPqUmrfdpn=&WixsYbXoUhbYq=&9yuuBYU_odXWo=&HXcSDlZdY_hZd=&an_UwxUqlhseh=&Z_r7PNVmkZajq=&mIEEjmWbrWeae=&3mesqVZsXYacc=&EZtHeqVhedWdm=&vBrnSkUnWYbcV=&rUSZyHXVlepWq=&NMRlCXWqXbqgb=&gmj2vCXckWqkf=&3Na3bEZfbpola=&bTD6BdZdlcn_r=&6TnjzUXffopZp=&r9PG_YWc__qlY=&jCzR3eVjjs_pk=&uYX3H6XbWqbhq=&uB4OheUVpmZcf=&rudx8kWpnmYWZ=&WJDBUiZndr_WY=&BsvsgLZVVnjpg=&hP_SUcX_sipUf=&7tlbjKYincgkW=&VIS_4gX_m__io=&vP4BNQZsqpoXf=&vHxwxiVajZWZZ=&JukGd9VkmbZbh=&CsHuVzUiYoasW=&_4widfZYbpb_m=&cOUbVpUYciXed=&j3TvizXmiXofq=&fMoTKcZjlql_f=&xfioCOZcgssYU=&VBCPW2XigUdcl=&O9dgfOYhUeqhf=&YVOsXyWpUrhdn=&pxHwi8YdVni_Y=&jIrassXjaYcra=&qLl9dEZhemio_=&yuadmyWfdZosn=&5PtcqzUoi_piV=&z358aEZofYsjY=&P_YqpXVajWeso=&5WCBdaXVeqlcY=&4qkdeyXiWWUbb=&j7Bwn4X_YesUW=&n8nxXHUVkpcop=&nnxS_eZXjbarb=&WP9_w8YepWUZr=&au7EosZjbjXZZ=&Zmcy_NYpWhamf=&SkKIyDVjiYWpX=&W6hPe2WjjolVp=&MKku2PWjakZhk=&4zfTwoVamjgqX=&csjvkAWjkhicV=&ewFmdzUXoXqqU=&93AzHtVVjVeZZ=&crnRJ6Uqgsbqp=&GRkpvMWhYUohg=&KAXxhhY_XjWiZ=&tFcSppWmYpmjf=&U8hXnpVkccgli=&Cn2JRmXajdjYj=&EABJDJZmmbnmk=&QBR5phZYkYpUX=&Kcdc3TXgekgoo=&8Nn8ylUVp_jUh=&gUqeSiWiqirpZ=&pYqi_DVbYZjgj=&Dt87Z8UdsXdUl=&AQBgPFWYiXmbk=&lXs2cVXhgglie=&hDm9L8Voafebi=&7cxVntYnYidfq=&RrQ9hcUfgWYsX=&ol_hcmUgjVqaX=&76ixueXZopiWi=&nk9fmiYdYgjfU=&JjbbvqUVfVVZj=&gW64_yZbekppp=&RFRZUUZWsYrdk=&wGvTwNW_srpi_=&8Ra3vJXimmqUo=&ZjoLt8XseregU=&xQrKbiVn_cfen=&A2YA7iWgfnesk=&737rItYgoWnnr=&rfJ5I_UhbaWXb=&huyX8MVsibbkZ=&S3Wd3pYkiYUdU=&IwegihVVchqb_=&DU9uOHZimXhUg=&m_UKLrUlsbenW=&CJK2BtWmYjkpf=&aHuFNtZqZdXjk=&Tax4kcUf_ZXcr=&jxtrArVg_VmYk=&QEhdo2XsXgYki=&Sd5W5YYYrbjh_=&2JcmOhWaWkhhs=&XMVpLjXUgVZpi=&QDgYmDXmeUXfi=&pGQGoNWlUcbsZ=&CJq9odZqcrnUk=&CZgAgDWhakdnm=&CA6K8xVminleb=&SwP2ZLXfjhUqZ=&NCrDp4YolUjYs=&xIQrEAXUXrkpd=&5TJSlpXbV_aqi=&uzzWwOVW_bk_l=&Kcg8vIX_gVbU_=&LBHxX3UVikhsi=&Zrdk7RZjlnhUs=&Kt2hkBVsqUZaX=&5dKOGXXValpne=&ENrryyYgrUkaj=&FwwDFDXsUjfXX=&vZ8757ZdnXgYe=&ihIWyZXsXdfen=&T7k8VGXXrYnWk=&9NtZ2oZWgckmm=&CE4fYtZhUmciU=&PsxRfDUk_fagX=&UrmWEiVZpZXZU=&Xq93FvVWddcje=&gWPAzNVsWoljb=&tAguqTXfcpVfc=&KuZpkTUpUWeid=&kCT_sSVjrmjoq=&EJcdqrXVgVsUp=&Ryq7kzUhsdXkm=&KPyE9RZYjlmjb=&nBpciLUfjiikV=&MEdcoTYslgnnk=&NmFG9pYkmUblU=&jvb5mXZdWkshW=&m_5f4bVqqgjm_=&TQobpBWWgVgjn=&TcFfjjZhahoap=&dAS2viXnrkgrc=&VJWhDnXXUUerV=&8zqterYVqZ_cV=&M55VnrXZq_VWX=&j8PnhSYnolWeq=&_UuoBaZrbkmhe=&gSjuBMXUglZUY=&oR94ogUeqYffh=&KpQdbbWiXekek=&_gtWuvUerbVcs=&xAvGwBUVcdVVa=&qfUocwWeUmZcl=&zSTjg6ZajbssW=&9OVposWecbren=&ncJ4ToZUh_clo=&Eb_AD8VXnZae_=&4VpJu9Unggscc=&VOGJFxZoUsgVj=&RFdbBMZnWlsXe=&PSaejhWWooniZ=&525AzAUa_mhhd=&BsxJG7ZXadsWr=&HCt33bVegnclb=&7PBAK_Xpgeqal=&JIDHY8ZksVclY=&aX7_wUXlhYVqW=&cz5aH6YgWVfse=&qSqFCiZeingUU=&rCnS58Yrkhmc_=&oUbmLTXjmWmik=&nqiy4xXUlfesV=&wvlAqGVhcX_fr=&CZHBnbVphqdsq=&r7YFVOWjoepki=&Iu8JyLZpiUZWj=&4gABj9YoWinh_=&9eNBOPZepdljX=&HlCGT5XYVWooe=&LJw8A3YUXsphZ=&wJZ8anZghYdoa=&6W79MrX__ZXs_=&2Z92pKVqcXlsm=&iiTN7KVarZUdj=&mvCN8CXedm_Wg=&FIXibQWXVih_h=&YNw8qkU_kbjXY=&pChTjJWVekmn_=&ptJWRzYhprsUf=&qPvuSpVmc_iji=&m73OngUblmllg=&TZolDNZrlpbde=&UZ6GKoVeYUsdp=&JoDdKXWZ_WcrV=&iFVTlpXgrjhkc=&OPvRnyZgbbddo=&BuPVXCUcXs_pX=&cqvkAzVgjalVh=&jDIyGpWjjboir=&JxsiQeVfYqiqb=&Jb8vNOWjfYdfY=&zOZIZQXql_rra=&aVnzoVVdlWXgj=&PQ7OT_VdXoaUW=&CxtkheUYmUXh_=&mhWEViVdmjnsf=&s9vozbUWcXkmZ=&3KyLYUZelYUbf=&7nglFQYdUlckk=&xH8XQPYilZUpb=&JUnuCVYrmaomj=&5dmttTUeZekjj=&EbSrZkUWegrWp=&c2Tj3dYmasVYY=&7VnYYgXlaqdUg=&ERdOvqVkhhhWq=&hAxRNlYiUldbp=&PMmQgkZsmbbVa=&FlYVJ6XnVfVoh=&fZGQf7Uhl_eZd=&Z4vdwMZpZjncs=&C3B5uTUajgYeq=&gPE_WbWhdniga=&XgIkKbYoUibbl=&AxpbUdZqUYcYc=&TprAHIWlfgsen=&lxqKU6ZlajXUY=&FECtOKXbdkYrp=&PvHBxDXrpeilX=&x6gGClUimne_p=&eLqHtvYjnejbZ=&mpgV_mXbZrfqg=&eoKvkZXaWqdb_=&K4iaAxWYUbhha=&TfVKEmXgcrinl=&27ujVrVisnXsY=&zeW3oRVfVfn_U=&ksxhMgV_encoj=&s7gvMOY_UqZXo=&aFT3uOUYjiZhi=&erAtvbXcjkghs=&edUNIWVbWngie=&NhrNZkXlYcWjr=&66eBZEU__iphn=&5TekdTUcdUcmX=&WNwN5wXs_sjUd=&TMY3UpUnXpbWn=&LbhTCWViliiof=&U6VrknXUiYsbV=&IpmuQDYcakUfa=&WX6Z84VfndhWp=&RnmSBBWhYqaqU=&VsTgfQZkasmgr=&yRJx2hYfdgqdZ=&vdoHWcUaYikge=&iF83TvUkegWmb=&Hcpj7wVlWefcp=&TkVyCeZ__f_VY=&qEBcaRUpohmfm=&bgtWgYZmXaUrm=&v49Zw4Vapmhpf=&VFW5_KYmkfXZe=&3_Pd4WUdoklmi=&RFtUKAYhdqXpY=&tvsCKNVerYqbV=&JnMLbIYan_sYc=&2sJggeYWkgUkf=&awIMStXsgnaka=&iBl8BNYakqmiU=&h28byaYcobXhc=&vASVfHVgWgjjk=&83LIYNUaeeZqj=&5IyVe4VYsZola=&sBdKGzVmUafXX=&BXUE3zVpjdfXm=&SUAqyNWqXdcgk=&gyIKqEXlnlXWs=&cKD7xHWrbbrbp=&ja8rqNXdlWWYa=&odDeKaXaXjclj=&AfQy_GXrphoZl=&yfxMigUnmbjWU=&Bqku7fYVrXk_Y=&gVcTGsXlsZord=&GFIhgpXo_ofqs=&wa7gMiWnmsZre=&GdF_W6UY_bhUc=&tfQCaaUgfkZgb=&4q3yw_VsedocU=&o8aabhXqmocop=&D9Yv8pWgfbVlf=&magnNaYjnbfgn=&tHPv5NZdWlkrs=&agyNgAWhirnXs=&wMO2qOWbbcXgl=&etrgyKZgqcocc=&jFgiUkVYinhYg=&3h8mx4Yrjpnpa=&jWCbPpZolraii=&lgWwnTUpajqWe=&74TnaLUsdnaad=&XCFe4NYm_aZsm=&koMVyEY_bZklr=&XAqsqFWpfVpcV=&dZBVOlYfshhd_=&msGwYEWYnhfdV=&LipaWkVnhrjpd=&ANIEAHXmefrhV=&IQmFMPZfjhbio=&lKO6wPZaWcecj=&3XyLrmWgbeVoY=&43E8i8XjiWbZs=&6dXJFvVeVjnon=&Hi4D8VUkd_WUX=&Gx2BUOXhWarVs=&UiytHGYcbgoiq=&IZ3F5dVqnhWep=&BRLlOqYrpgj_q=&yNzbTnUVrVjmY=&pt6dq8UWUqWYs=&jarDcqXnqVkab=&8VNhg8UdnsrsX=&9SgY7YWZUlVs_=&HmhVbtUehd_Zf=&WseAiGYfmafYd=&S_AFt2WoffkbX=&uY_DqiYjsYqkl=&kzuz7nWgblkk_=&Q5vWPYX_rj_ai=&FmS6eTYjkleff=&SLWkcaYUsWalp=&p69g9eWYapf_d=&YkOnihXmqVUZi=&UtwIApZnnUYrn=&g_CPW9ZnsddVX=&lvmlxSZWWrlXb=&CvqwBVW_YlZmU=&7svH_wWbrYX_Y=&wenoUrWjfWghk=&c6IhVtVsmolpm=&yoVTTpWcWcZem=&FPnPh8YhUijiX=&UIHjVfZsnZdhi=&hxMkKQUlWigo_=&WwYfosUnZjbYk=&k2ci2DVgdfdhp=&9CipOGVWXedjW=&t8PQFBYfmnmnj=&_boTHJYgiijmU=&bwiGUFWdVc_Yr=&X_qZghWiUXVcm=&mdOWRvYgfUUgl=&SOHaM_WkbbrsV=&Z3AqN8YdoVhne=&2DrBxKUUhddsZ=&tAo96FZlermXk=&V9FMKaYrgii_k=&yfWRPXUlseoei=&rCGx5SWYjdWcb=&HKjGCtVYhVYsV=&X46zmpY_gXbeW=&T3njjfZfUsbVo=&TIiRmBZhqpajc=&QXnkH8Zrspahj=&GvF88MVfkhdrk=&WzwBB9WnUXYpp=&rO4IBcYiaVYf_=&UtyKAGXkgXfjY=&YaTB48Vhmidom=&MbHDRzVrcmsfl=&FBi4ioUdgjmZf=&jKVH5fYsXrihq=&DJlqekXbrdlXs=&QkAL4NU_pjZmp=&oXsFbfYhgsnho=&MfomhWYedUdsl=&PS2aZhYXnZdfg=&9yCEKzVkVgVpk=&KHgKazXYgkhar=&FGOOFLXmiclko=&JJcrceYnbdWYd=&TSDOetWoooUXn=&Y4n7dEYmgcg_g=&2p5c9KUljWpeq=&Weyhr_WlUoceU=&x8yp6PVncjZeU=&A8OKdYZYWYilf=&8HjytRYerZsld=&E37gN9WZfgZUb=&SqaCyXYllmbal=&B3c7cuYg_nUmf=&4PqEUAYUZhgkd=&gV6LR3UpnYVgW=&vS5L2RYVbafko=&VSgeu2Y_Wn_gW=&3vBlA4Wpbllsd=&_fzlxkViVaeVU=&qnsRN8ZrjUchh=&BTirOjZpXYnha=&Auw3HwYaZZapp=&bfhgC9XkgUqjm=&NNswu7VdrXmoV=&luM_mKXbjaoZ_=&k7bCuzVcrVleV=&4Nt7OJVfnh_gd=&ZZIMwEWXoUrgh=&hjEWYUWnYsZrs=&QhDhQAUolXgbf=&F_9lQJXUqjmoW=&fVER4JXbbjrWd=&33r6OxWeVapYi=&A48SVeUmalYVW=&acTkwgXslcnoV=&oaTVkWVfcgZUi=&_tdWOSZso_Wrj=&6eksZFYocWnle=&YkWqTzZc_fqhs=&FdMxcPWfrWpaU=&Hn8QiTXaVmXkW=&mwcETJWspqdmb=&IrflF2Urekn_i=&EEAOQbXUXfjoi=&Q8b34xVWnjoqU=&cHdY_9VUbdkim=&3oiXj6XYikomr=&6UTk8SYaks_ie=&wMLrImUnacmYa=&UtRpoQWZUkZXp=&tlF5JvWbVZkeV=&uEAWwwXfahhhU=&VYPAOzZsaXWYk=&bK8XHhYWognhs=&n_v_pgWkebk_p=&qvqADvUVabbVW=&xmrPwuXeiUlog=&bSQVjTVqfqnas=&r8FJlvZm_konl=&GcPhppXXVYVql=&aqwb9_XngmijX=&87CjJ2XigWklj=&4I3TjyY_lqkkj=&GgjCXjUZsUfag=&jnaI4RVekripa=&VnvciKU_nfosg=&gxbW6lZhdWYca=&4GO2htVckjqsj=&ATvE5mVmUZecn=&LhsXqTWeoVZZs=&qq5UunYVmiqrm=&QcL27pZllrndY=&xdC2rxXXcresX=&jlGFVTYYs_ljc=&RMRSdzXsYsmVj=&qM9x5qZVlekZU=&UAIUuLWfpoXsr=&PnedBwVg_UhVa=&lXrdVXVhhlkqV=&Bg3CTHXpVdUrf=&u5csCTZV_fmhY=&jxrNsEZesoral=&TLPtlaZinXV_m=&bAlHqFVWX_dVd=&usxzxlYXgYZbg=&k549qcVdqValY=&C7EpYwYeVdcdr=&QGwdsoYjWgmWd=&E9Fkp_Wshiioe=&6g76mHWnUYsan=&FHERkSWXjigbl=&kxioIOZrUYjrW=&KPyQBnZUqXZhs=&8IJme8VUcrcfr=&AC23gLUZakeco=&ltgPUrYpYqh_n=&7MYWEzZVaXsVY=&tuExsDWUsmiYg=&K_k4J9V_flak_=&bomuLXWYXkrdb=&Kgis24UVjs_lY=&SfmLLUUYZrnWZ=&LxWmmLYYVpjfq=&X7vHGhWigbUVZ=&9sMoERViojUfb=&ujyX5AZsdjgqc=&uvpOdLUWXffUa=&oK2mMNYVnZbXq=&XyWwEyYpYmWVY=&ZoeerVWslWqhq=&fUnnWXVWadWXo=&MPGcqaZdZcjVh=&sxcHSpVbaV_WZ=&fLzzE9ZZWacrm=&dZO4O_Z_llVoc=&Mg49CuUclXYjV=&VaAEUWXVdYngW=&ddq4ANUZbVaeg=&_zKgHqVUlin_g=&Xw_C5YVaWfUpV=&KAPmSWUdii_pq=&3F74DsWlqdZoV=&FYTlm3VVoelqf=&niSugzZc___Vj=&7_FiDuYlg_jkb=&6FBMCIUjobkYq=&zNp9PCXnUakYZ=&WMcNpvXcqhpYl=&EY7qfPWfrZkUs=&Ydtm84YahVebm=&TkbprnYVkYsZm=&yOOA_VYXfZoXU=&3FPklQZjnYchm=&366lGwYVeks_r=&9MQRXRYUesoqU=&fhHMBWXqkgppk=&YmPDnAZfnp_hl=&TlFdEVVinaZWd=&DQ7O9uZmksdfX=&A83gegVlsleXi=&RleejQXshjphp=&WYVvYhXhlr_ln=&8zewoDYUebeja=&oTHyDFXmWdmZa=&zDjlTBYnrXZZo=&DhpBcBZccjkcW=&I8SzFXZomVsmZ=&ZGJJIxVYkWahl=&m2wYcMU_hoUX_=&FbcpZ8Voadeg_=&9XIfUoUZhbpba=&jNzR97ZoljgYY=&zdMad9Xmsrjqh=&RHpR54Z_ahsoY=&tbeYSwXor_Zis=&CbuMnSWlZgpYa=&BHGaMXZUXdesZ=&XvapMAZWlgkfn=&qyQMe8ZbpUZVZ=&hDeRJOUUkciUl=&eXT6yUZfbqaaf=&mktIESVdi_Vbk=&zDEqORZfkcem_=&b7CvkXXXcpoWd=&ylCTYWY_dndem=&ZbyuvZUn_dkYn=&BrQGzTVfrs_Wc=&UmqNOAUcghcer=&twl23AXilUnkh=&QN7NTNVelpnbo=&oKPr_sUpUbkbk=&fUMQzVXVcdfoq=&lA2zabYUe_cVa=&X_9dl6YjZdZ_V=&iEayqXYbZ__UY=&TfDbszVjYgkbj=&ShyrYNUZldmfs=&JA7kPzYrVfVoq=&IQrHz7WUcoeUo=&OXXx2CXjljYfq=&kw2hM7VjWbmaY=&qRjuy8UUheZgo=&dmNxXdYlnmcpX=&dP4IeyXljqksr=&7pLw3EYgWbZgV=&FhP39wUVfek_q=&_C95LfUqransd=&XO8v7FZXgsjsq=&RPCO4qXdhjsqm=&ll_YhtWafYlar=&zI6H5OUglmZcq=&ARioAtUfoZofW=&nGAquIVUkbgek=&9OTD6tV_sphie=&2rUDo3WfjjeUl=&ZQ4rKQZrfeoro=&_aWjkZZkchqUX=&APNeSNWUrnmnV=&JRANgoWc_oYnh=&IkaGW4Yilqkhq=&engEnvZ_hiYlb=&HzKaaZVVrlWfd=&yfVSFqWXZcgVh=&wAZujHWVpkUnp=&6wnhbNVhYYgdp=&zXIF3jXfZ_jZo=&SlyhgPWhXfokf=&GTOkXKXdfqsic=&veU6WuZVn_plq=&mOtdpsWanWpoa=&uG7vQeZqbsX_n=&bneW7LXmcbXoX=&TXX58hWinoZcg=&eKkeWWZmWfdkc=&65KeZOXjjoepj=&hzVAf9ZUnhpjY=&GvV94EXVZUWWV=&qMxONaWhWkZbm=&Hdd9P7WjmcnZg=&E8NUBEUpUcY_f=&5dRvRsYq_pYpn=&6tzk4sZofVhej=&Pn5LCmXVVVUqs=&vXEL47ZjjWnpe=&Jilm78Vijlsmj=&R5sMebZsXpdkl=&eOuHE3Yif_Usl=&sMYsmCWmVXZfh=&arZUrbXpadmdh=&iPTRTEYZqinXs=&HGrX9iXfjZmaa=&WEUuoeVliXnj_=&dqNnZ5VfYhpUf=&PjG8T3ZWoc_Vl=&2yYW32UWrepsV=&jZsWEKUanYWYm=&Dfqw8EXdUofZi=&NdPmy4WZjqpbd=&qXhi38YlUYYkp=&q2SrxUYqhbeUY=&VyrfRDVmUVsem=&hPeBg4ZZoihfd=&JhGt29XakiqVX=&V9JDneVplXflZ=&EWAnSgVdhiaoj=&KUz3cpYpgnXiY=&3gaKIpWfVhndV=&BdEfH9ZXrVode=&XZl8_OYUWmllj=&FJbJnPXUkjfUs=&MT4p8LUrVeqYe=&DWrSmlWVXmXXa=&CZtDXhZmm_slo=&fubS2zXWigbYV=&eJn56aVhhheUs=&v4nomjVdXpaVq=&a3VeVjXdlpcYU=&jNXPUFWolWsmd=&H3cpmpUsgcfV_=&KUvkaTWUqjZpY=&vP5SuuVYsmXsj=&7xCMf5YkZZqqf=&uXVokHZZhoXhj=&hSjADnXjgqkh_=&Kl8CsBYVgXksk=&EqNarxWeZhieW=&YcUL5bWfpbosm=&LdNhmQWWlWmWe=&TgkeAhUZYjnVl=&igZUFlZ_ndjfp=&ALPVMxZbasUoj=&VyzsXrUnYhhjZ=&CLGmGRWYXqohh=&bBNbZbXnZefqb=&Mm6N8fUnsZXnV=&ywUZR3ZUWdcmp=&nWPItCUqdnlmr=&ZP4Nq6WkYUhja=&hGxSjaZZoopje=&sgwa4uVZfcZjj=&9axK6CYoijrah=&2zgGS8UkVUXei=&2Y39j4ZVighUX=&WRnIypZhkmr_d=&owOs4wXjr_asZ=&vZZZEuWhUdpge=&sBuYdDVYagaZo=&RmnNilUhfUYop=&5ALtIjVgebbpk=&EdfOhTWfackXl=&BQxQ2TXnrkrpq=&5ylIiPUakhpWr=&MEWJSDUljeoha=&Ck97h3XYYefhZ=&rogLEUWUomffh=&m__crMWZWqals=&QypKjOWoafg_W=&AEz8D2Zfcj_nl=&FjjX9TXderisj=&zyjmlaYjsdorV=&SYYbIBWbkrUWV=&tenVujYcZUopn=&ukSRnDXpeUWWm=&LGTkP9W_nZWcU=&fLk9MRUZqXrVc=&HzW7fbZjdlZio=&UoUt9JZfhrjXh=&LPhrOYWaficc_=&LXN9oHZd_ffsh=&3YpwEpWjUccjZ=&U2snW9XmihoXq=&RzPDvLUprYkUX=&4nQJyqWXopmsm=&HslGtZZVccjXp=&pNxvRaYadfWXp=&iawkSBYeooUfr=&frmY6nZghXZZg=&qpGVuTYn_pqYU=&mBJl2mUXrk_bk=&66VexTYdrY_Wo=&zMbxASUZegVsY=&Co5sW4ZUpkdqd=&X62fq4V_mVn_r=&RcHMc_ZseUUqq=&mA4Hk6WceUqaY=&vdQbL9UhpqfVj=&IKsMPJYYqVjep=&rmqdbKYrcfqlh=&cTiA9lZgcqZVm=&EGCBJ6XbikhmX=&KqfY2RUbqVppe=&r65bt2ZnYdhgg=&heU77YUYdYnY_=&tSPcAJWrVgksi=&b5OKNoZpqqkaV=&_QrLybZrs_nhm=&SYZIgYU_jrpdg=&o_9zwRXqrYbhl=&AEZoBdZfXYWmX=&NmrbeSYaVbcjr=&LyYRI4YqWjlmW=&5OkordVhpsqZh=&DtuCLMXjhZWrX=&MmT8fzYiXrfZp=&EumWYJZXm_XXU=&8b2GxoVkcpVqm=&8SBEgXWo_YWhl=&hgQakXWcVfofi=&Oi4eQFZfkYokp=&PKN62IWnonhgi=&hr7zurUdVVocg=&kxFU9sZWnmlUU=&8bpKHZXpYhkWd=&eJjTH8VbYfZWo=&7USgUKYU_WpoU=&uhFKcNWZXWhh_=&bLOFdbYUqrWqp=&BUdKxZZXXjYZg=&QQmABvWVUoiXj=&ozkvOhYkgjdhb=&EqmBpdVjUVnWm=&jmA4JzYrrdXfY=&wFMuthZYUfrfi=&HXsRx9VlWdUia=&h4dc54YigVZen=&QeSg3TZhgXZai=&uLw6hpZdd_qdp=&heVa6MXrmh_fU=&iXMnQUZqdVlnY=&9ePGPWXnlmbqj=&jel2DGVh_ZYdV=&6dxxDwWjpogsY=&85LrYnYbZgpXp=&FTXaVdYkgjWVs=&R5ioCHYXZpoZh=&gxMonMXUYVhXV=&2psH5HVqccVrW=&p9G4uWXqXYfbh=&N8lI4UWUUWiWp=&rO4boXWcXYrpY=&npliMRZamnle_=&KhI6b3VsYneWY=&5GeaBnZijnYkY=&tgqQtSXoqabYj=&yDrhWaXlmibpc=&3q7hCVUUripmp=&QZPqPKWirUYd_=&lY7OX5XapjYjp=&Thq7e_Zoml_cf=&AYKYtaWeaae_U=&3exlOgY_elgUs=&r6QDLJYjiogpo=&CQoTLJVXpWbrd=&Mgzf4uUhljpWY=&7Xq_OgZUgsXqa=&soUFQhYr_ZVea=&7d8hTEZeZoooh=&sTWv8pUcqisZ_=&Hu_bg5Vf_kpfj=&sWIvEbVcfY_Yb=&QejXURVWUejXX=&5hFm9gXqkrUer=&k_jQkuYaohWdm=&kL3ajrUUXZ_pd=&kmiRIXWmlZVgi=&WuWFU4WibqaqW=&ndmPZUYpWrVfp=&AnUzxlXpleZaX=&w76WqsXnabdYi=&nGQREcXffrokh=&4GaZnVVli_pkU=&UaHCsVWWbWWnp=&umykIOXhkecqb=&LmUzAPXpaecbj=&GWlynfXbbpjjg=&XZoZ2JXebdolk=&65H5JCWZadbUX=&W7Wf5QXXbqXYU=&VUhTkaUrYjfgj=&dnKxqnUmcof_k=&mVQfHOWcjXjgV=&NmeJqfXbdcUip=&AygCRVWVihahW=&UYagzrVlXYnbg=&AUGvtWVkXWZe_=&hoPqhYYamsaee=&f44lj8YVhXYce=&LmgKbMVaZerWe=&CXw2PAZf_pobk=&6cAnS5VVZcsWc=&HQCKuJYpXmbhr=&28WUsWYiicVcY=&NanUEEZpVdUWZ=&ihPsDTZhZpeXc=&TVWcaaVpsYWqb=&D8Vg6gWXaasa_=&mQqJYqZbrkVic=&hj3SNtXZndl_m=&qtYowhV_bbjeh=&bYtgzUYionXWm=&pOJlrjYmjaWho=&P3t2nxZnYggqq=&yx_AtmXreYmqf=&52Xp7PWpWsmZj=&VPRMV7UXloooV=&2obfWQVibUbZs=&eW5iUqYskajjl=&bWkW4JWgVjebr=&XPOkdQXUXYdsh=&p8njiJYXfVhpV=&x6y4XTVncffko=&yDvMteXoijrsf=&kL9XoMVVgYgUX=&p5F7hNYUYgrcq=&VNysBvZhVilaV=&42EuU5VoqZcls=&kviS8zVrbgapa=&wPMl6SXlhq_iV=&saGRbDY_eUgqU=&6QsEuxYbskUbX=&W4JMauZXnf_fk=&PWXAcHYenbjns=&DLxSxXYosaXoX=&RmT8mVYYbkbnW=&xUYz2YZsnqZef=&5KKLU3Uk_dWqd=&Jhz5ObXeWZ_Vm=&BV6Y47UUjZhc_=&85AwwFVqffdcV=&YJpvWzU_kbVsr=&ZRWmw6UbYWrYY=&_Fn5OTYWfsh_o=&tP_fWGWnpXgsX=&de8ljkVUUnVVh=&GvuGM8UZXbdUf=&GXqcBxYfi_iXe=&gsavKgZjs_mek=&PQKOcZUWcnfjg=&SGLQCoZVgsilj=&dBMca7YfqppUU=&VwrKAuZgYVeZg=&eDOTVwWboolki=&kItgWkVrlrUfr=&gUAIYYUssnZWf=&qkRGXhXg_UZrV=&v5lqSeWsqmlVr=&y2hq4ZXZnrhii=&grap5wZkjfasU=&ZtdvGoWoWjjds=&EQ7t2nYYXennl=&aVGi9MZegnVbc=&yPartPYZmnWaj=&N42HuhYZofphY=&BH3CMBVWXihgV=&WAYyneYcVhdbU=&d6n8zeYoYqkrV=&mUa4llVgdbWr_=&Ygc7sFXj_gUma=&6mY9yTYfakcrr=&NWCbSwXdYkYep=&JXXi5vVckjYXe=&2yNRsUYbrea_a=&94CvojVdlkdeq=&hDuFCmUYgrmpc=&yZn4_lYjZXiaU=&ZzdABSVYqsiko=&xnYxaKYYaYd_l=&aaoUEBUkWaUai=&MqNgVhZWkgro_=&UVyPEuYblmUlc=&baoDhLUe_gaZc=&HtXqijWYmnggc=&n5Mw_TVfopmnr=&l2no8KYhrhjUd=&bH75cJWZmZXZW=&K7I9G6WXjWf_l=&Gdn7BLUnbdjlg=&2vGF9vXesZgnU=&w6uJ7fWZcbVcl=&Sct4_vWjW_Yad=&SsfbpgWkZVpiV=&zEkTBzYmjWmic=&_7ZKiZWYWVdYj=&sUpZnvWgkhpep=&QhT9fhXfXkXXY=&SyIsawVWVsipe=&kAqNIDZkWWqpX=&K7HRJDXglWWr_=&8RS2AnYfeUfXo=&2dN96vVindXfn=&2XiZtqXVqpelr=&OaFmiLYhXbasa=&GgEW3VUWqefYX=&QyJq5mYgmpomp=&ltmaKlWe_WUgo=&SaBaBaZZiUnlp=&9DV3fGZcbiVXU=&cGhETbXenUjqd=&DSlP_xZcpbcge=&sz7bw_ZYkVdmg=&hGGE5PWelrYdq=&Iu8NUwXp_ViqU=&NXSFVqXpZdjU_=&tR5VqpWeq_gVc=&eAN_G_UeVlqdX=&IRiV38YkedWbq=&WxFFMHYZkWirl=&z5XcjuU_icgqY=&8valPJVarmcqq=&NfRcdSVkWdinY=&lBm4FJXZlYiVW=&gCNcjIYrbikVU=&GJZ_CJXXpcqXc=&Bf6AN4WnjaUdl=&aYIF3PWiUnasi=&kAgR8cWYqqiZY=&GWdBWLXcgZren=&dX4lXFVlbgVf_=&lsUMV8VfnlXqb=&Y5vEWzYjihhWg=&CVGIXRXYWqk_X=&weey_OXZrfkXo=&iZCz43UgWlZjX=&OtM2y4UahXiWi=&b_cB5jWVZggrb=&Nn8TLYUWZY_fk=&pBagKCUq_ieoZ=&MfzmE5Wqqllnm=&mfwET5UWpfZmm=&DfT_5kXqUgoXq=&KSwt75ZpXpnfc=&wShk9iV_UZj_l=&7qXBfoYdoi_cp=&gAyAiUVXYjUkq=&nXHTxCYnrcVcn=&BocmraZVjVsbW=&YId6tOXpmqcjZ=&Qjq7ywXUkYlaW=&fMgrz9Yroro_W=&Cd3vGYYcdUlon=&LTv_ZtUZjjjZZ=&dgKpzLWokpVhc=&YVNExuUmUbqVU=&RlcP2EVgaia_k=&yo5rbhVUhofna=&9uIh9gXdWaame=&bzvxtkUibodiq=&J9u46mYqi_Wqg=&CgpoWVYlkrXsq=&u3yi3UXbebX_X=&NpeyVLYhkbYpc=&TezqzrYX_iZmV=&AKIiJ5Yqkimia=&M6rlpJZrf_rnd=&JEv_ypUXYqoUV=&JfEulQXXdsUsX=&g2ZWlMZqghgbV=&nQCS3yUgbXesi=&6RJEeuZqUmnce=&Dk6cBOUgWailZ=&eEJyWDZlohngZ=&rvKlZpYVqlgbh=&ugLZtUYmZVerX=&PqEYapZsUYlra=&jiCSdkWWdZWfU=&NpuYkZVijeXns=&RhAWLWUp_oXmq=&kcYTDOXshVopb=&BxLzQOZhaZaoq=&VIFtSlZrggUja=&W8XPpuVZoYVYi=&I876PMZXhqhlp=&jdPMP3ZWlqs_b=&j2t9DgWigrUVh=&8BrQcyXZg_dfU=&GQAZenWZWnlUi=&PU7J3tWic_dkh=&xXTu6iYqnjqUf=&IZtnNzYqihWsd=&fhv5WQZrjjfip=&KDhtyVXksgsYi=&7wNBZNYa_klgq=&__3PzcXYncbqe=&Q4VR5vYkaaefm=&UeFmdhXlibUUb=&ppZ6FYWqjYafW=&HmMjopXsefXjk=&ZUatlAVs_YaZm=&R825OpYalUgao=&MRzpstZdmssbU=&uGq87NZVgWnW_=&SKIR8EUhZrZaZ=&zak7P5Xbs_apW=&ffnLBWXdislVm=&OF_asHWcXnZgW=&YUXcCfWfackis=&GRZ7fzYUVcVhq=&wLpw3IYVsjXbj=&_4QSqLZjnfr_a=&NLfGynZ_dirbh=&fj_sDtUqVYig_=&8LuY22UnXpfVs=&nL_LNeUjoZaXs=&lkDLQWXdicXeZ=&wdo37ZVnWofqi=&uQEQWJWlZjXWY=&dcTV2NZjcWjhY=&diXmzyWlsWfms=&5duAKQUakVdhV=&mWaYzQXqfsdeZ=&FofNiYWrshekq=&wwGcNPUUWhXpa=&4OWG4kUjZbVeh=&SRpTduVlmcpmW=&RWoeHqViplpda=&fTw79dYpYWpUm=&4E_Ml2XiqVsgi=&4m5LHBVbeYisn=&Ki8WOQWqpZiaU=&GOUL4KXrbYdgd=&anmJwpXnngXbV=&bSHIYBUqUggYU=&7nPfP6ZmW_bms=&5Ru8CdZdhqgsZ=&K9TjPLUa_aabi=&AxIbpnVUXojrf=&f3zmn2VekalcZ=&eKZJDfXjdqsge=&AJjvgGVjc_oeU=&rjBRd8Uoepkcs=&zLGYajW_p_fZr=&mMgvCCW_eUaXX=&SWHsAkZrUhgYp=&v4PIcsUlekckf=&I9bSkQUahcife=&6IE5kxYkYaVZh=&MVqCtTWprshgn=&G2DwvBYjbYkbc=&O8Mwd4ZoWZjhs=&Jf4rENUrmU__b=&OriC8VW_rikhq=&fixBQqZbbeUli=&2MJmdOYcqcaWU=&e2aW5HY_pcYgW=&C87CuiWZjpV_a=&89vcQiVi_sjif=&HnVgLoUclYiek=&dknBIhYsYjbfc=&I5patcUppVllg=&yrS2JMWqVUl_a=&NOSt3PYVjoXmp=&89oGrlXpacscW=&LJfIDNXopcWWo=&kf44pdXmjqhqn=&D2R6WiXldmdXo=&Dc5bUMXahkUUj=&4663NVXWWUVoW=&kg2ovCWfrmomh=&SC2yY2UhW_Ucs=&n_PgaxXsVYjkX=&rOQsnzZnZXqgm=&tSlKEJYaVnpVc=&59D5rPZencYYm=&Aaqq4BYclakrn=&NNstTWVcd_lYs=&TlYfcBUhUdr_m=&V8GYoFZcXmZpY=&2VyhzuYdbksgp=&i_OOvoWZkrjaj=&cP5ud3UglXWXU=&k_NYAaUUhfpah=&MU8cyTVjeXblY=&syJCQnWiXaXoh=&gQPSCZVqbVYZn=&o49DmhWaodmne=&9zV73gVZ_akXc=&raBOz5Xmpafpa=&eIOBNKUWqlbqZ=&g857nhYlkgjnZ=&IVm58vYiqcfXa=&CpERofUUiXfsg=&Bb85NTUVXqWii=&neGIahYnYg_WU=&wnvhv6WiXrWZr=&UdQlIbWXcfXir=&TrwT7CXhniblV=&3hhP4JVYdWYoY=&9crXNvWXWmsoe=&f8rNZ8WiiodYs=&T2AIKsWdnVgsi=&9VH98pYpgWdcf=&NwGJapZZUnmrs=&7mqcGqZhkgskn=&Qn6q89V_jUhml=&zrZThPWkWYWgZ=&TYbpzHUmmbsla=&wxS7p5VZ_faVd=&cXshMwYhhpXlY=&qBVkCUZiXqYfg=&iTrkOmZ_qZiij=&mUQrPRZsrkYYW=&M_8TpUUndcWao=&7Mm9COXXipfpY=&YTNIO3Ydgopqh=&Rz9LaVUZXqiVU=&HrbqWHYahmVpk=&u_JfdrWXqhijg=&a4V4ThWVbnkqp=&Hgn4TlWqWbahc=&KhwZxQVonbjrh=&cT4d8pWgqgijZ=&OWdF_kZsYfodk=&gGZnVFZrXaVaj=&g9dgsBVhndink=&B2eUHzXofdbji=&KOZKpYXaiqrsj=&oXxe2zZfoYWja=&WfvDgUZYcqhXb=&WJGrApVqhpcnU=&BINHBQYoUogVi=&usOdIIZaUeiWr=&uX9QGwVieYsUn=&_SIGDLWUUpV_V=&m7IWhcXjWbcrY=&MHFLLdZabUVh_=&mBy3B3VjibcUY=&qOfKD6UUsskdh=&qjBINfXkqepXa=&7RPSSoVboY__j=&5eKIEsWfWV_pU=&ypDfgpXjoVmks=&ye2V_nV_jplUq=&ZZFDqnWrdmVad=&2bVIqkXlgpcsd=&vIEIa_Zmhrefm=&YkjcmqWrfbf_Y=&ErlAinYX_gWar=&olHTx5ZfZaa_q=&zJjwMyZXnloqa=&7OAVLYVXmcdgo=&umwVLnXWgUaih=&kP2n6yVgska_e=&8bbBWcUqngnZq=&uHQyFnYdVkZmp=&DJCPJpXZjhYe_=&RSb6QWZpZoiWn=&ZDtiNLV_g_iZi=&YevBkYZmmdoje=&DpxFtsX_fY_We=&mV3Ex5Zmsskmg=&TtSN4pYUrsXUk=&nXmd3AYlqrlrc=&VpZujmXgmcibp=&5n5GMPWfbclUa=&6J46PPXgqgbpc=&NXe6nKZarasqf=&oJiiumYgiajen=&iEaLJYZUglrdb=&nr6FtLXbjplmW=&DoDbKNYomkpZd=&4NgSybZ_gZsao=&Fhaym8Xkscgfa=&rWZfJaUgomjYa=&d2RNCYZddrjai=&hzFV78Ydnqieg=&QGbn2wUZlYhYd=&vajGnVYmZe_eo=&JYrxkkYsYmbid=&gFpc7WYqZo_lf=&Ei4J5UVlb_Wcs=&lmPbiNWYdrUjW=&8WhknoXcngeie=&EFIJ5nZXcfkXc=&VUmcTPUqlfUmY=&Weu5mpWjhVWpe=&QwhDlQYpoWemh=&a5hxXbZfshkYW=&QjMirjZkUVU_c=&UYk3AiYUdiXja=&PWWzIDXqdXljj=&kt8EBNVohe_fY=&SzeqKFWXmeiYq=&yM4zg4Vols_XZ=&wogWK_XejVYVl=&Vb9QBoZZXbcYk=&3xVnqSWsaqeii=&gecP4WWcmmnrX=&fJsgaFYVgjraf=&V_fiJYVndkjdn=&YJ_ywQUrrqlhW=&p3UsLPVeWkX_i=&S4VfALUgVbnoU=&yj9ibNUnsdibj=&Nhgv9pUapVgsX=&6mEJsrXZZYdcU=&BLSYUSYigffVg=&JStW8QXUalgaa=&tOFuvDZ_oibfU=&tFUrrvWh_rhpY=&XyOZqzWYigmeg=&b_YgviX_dpXWj=&rnUvRMWjennaa=&9CY7jSVslaYgk=&v6c_VYUhnldrX=&s_uNWeYnrmpkX=&NLvWeqY__iVml=&mOI8pgVliUgda=&CYuuaCX_efbVn=&jY97eSWqnVp_f=&OrT4ywYkgdjoo=&DgTaZ6YfmmekY=&F8Hlo3Ysmkpc_=&GWNFIKVUcoped=&GxzXYkUroWml_=&jb8HXSZqeoaYV=&HOf8LFZoh_roV=&6ZNod6Xckefbr=&5UNJQFWsoYZXo=&6iQUfDWaV_cpo=&6ZYcx6UqZlrce=&MzZgmpZsZjndV=&96Yg7IWpXagWi=&VK8tkiXVfYd_U=&GzphV2WjX_Xor=&lRuuQzXYeljkr=&Ad2FZqWW_qccZ=&chQan2Xrhgbfp=&h42JMVZnhgonY=&9EstTYVgYgkZZ=&lTzViQYoXVmfs=&9R7qzOXgpocdq=&oY8THOV_ZWgrX=&6BHtkgZqWqamk=&5PtyxDZV_pieo=&yg5cyvXjdcdUU=&8XGvA9VlUYgUi=&wSOjioWfsclgq=&r5Os_2ZWajnam=&xF3wEhWkbW_Un=&GZRAQZYWisVqh=&hL3BXvUopmbbb=&PqmStRYZdjnbZ=&I6Ua72ZZmnqec=&7LynU3ZXfUi_e=&nHJnKiUkcefck=&t_5rxdVXlXris=&WntRH7XiXnjoj=&2fseK6WnqnjZo=&FsBfkBXagUfVi=&DkhBmIZYVrree=&lGg4TeYeUVo_p=&zt4DqAXgfnipr=&HooG3jWlmer_j=&drT8J7Xmoi_Yb=&_VBwrTXabbb_n=&fLfGZZXqpsmXh=&59fAJBXkWldYn=&UO3ADKXlhVrWp=&gbfURGUseUnng=&mtccPTViYe_ej=&6Wqk53XbWUoYe=&77nuMCWiVdZZW=&CeeIl2Ukb_fpc=&93iTwQUraXjWZ=&nvHJDZWVhpm_s=&CrmGtZUkcojhi=&Kec52iZpkqphq=&NqVchvZjjefhe=&r3dSXoXerhsiZ=&aou54xXarrnqX=&AHD5stVgVoima=&dCE2t7VfbWaiV=&NeaN3cWnofjgY=&EhujyOZ_dk_la=&P5jY3xYaohZXr=&sSxA8aWpjraco=&6QxR3xYUlsorZ=&vNX3qIXYffqUj=&4GNRLLXomhehf=&iYskVlXdogVbh=&n7eJGJUspVjfk=&U_bdk2UfnmWsY=&o_eFqdYqVfkfa=&9Y2jcDYaZjjcd=&IEEiP6ZlgpeUk=&mqITUeZZqehns=&kztZBRXXkXWcX=&CIM_R4UsdYZlY=&aQiQavWshafVl=&jNulEZUlesaXf=&Lg_vIhWrljsqb=&F2IhMKVrWrfpd=&ZNZgvuZneksrs=&MrcA9yYisbXhl=&N3MvGeZgafpW_=&dixUQSUY_YrZd=&Vxw9HKVoYbZfo=&6egVyfZYdqpno=&_eRSZoVZcWc_j=&xm_zTUYhpcYeY=&PUQnJ3Uhbpfnn=&PpPifHYdrfsXY=&wOauZOVlUhfUs=&AY4qwNYjemcZV=&FZZuGpVmVcYda=&sykSiXZaUWhld=&ifi8IOZaZhqUe=&5iu5RkXmYqe_n=&EOPTjoU_fVhVU=&Zxm7BzXm_fYmj=&XOVNsPYjhan_a=&RRhj_7YpgqsVX=&6aSYKhXmdlWjX=&cF5SmkYeWYWcs=&KddZeAZWsYdjn=&mNcT9qVjdemnZ=&7tQlIJXXkrgYl=&vDCdnDZjUVXWo=&RJIV6OVmslYgV=&ZOPRTsWfnXrof=&Yhmiv5Vlioaed=&RZdXdMWZdssUs=&esZm6_UejrmhW=&BMGJreZcVqhh_=&pcjIlzZgrce_r=&lQ7CV7XghYsWp=&YiyQf2XgYpUih=&a69oAUXXdYdkU=&gyXbinZ_drqfc=&ljEp6gYilnfdd=&MhshMhZYWgVa_=&UndmvGUXi_bgk=&vpbBxtYnapaVi=&yN88a8YZXmqYd=&_eF6uKYZqbVmo=&RjSxAlYppocj_=&VtKVXrVgVaics=&O2GIxaYd_gXWZ=&JNv8vBVmbdemm=&ItRU2AVVUfssh=&NbnweMYhqrcam=&BFq4huZn_g_Va=&nvAsfhYnnselW=&CjUcDpWbcnrih=&5RBnj2YjnWijf=&gpWhYjZasdce_=&Y2OpPwYlcpdne=&9pjbPSUrhpVoj=&naNcoSXXoslUs=&3W8QeXXYg_Xdo=&FigJBlYaUdgXr=&ZYpLJtXejakrj=&qKwdhAU_bmhbi=&G2H3GMVa_rfcq=&oroo7rVssesdX=&3h5sLMVobjciU=&ACLiIQXeigrqk=&6FKmZOWssUlYl=&JsSgITWecempU=&O2x37mUrrqqmf=&U5CjJAXblcg_q=&UmNioAZgaZcqs=&vbyTWiWXqZXjo=&ffJHddWcqWhsU=&2_l_qFUbogYrm=&I6UcUkXZoWgao=&LfQ66TYkabUbW=&Q9FxWNVsbfdZb=&W2Vk63ZmjbsWV=&G8xTY2VXnZmab=&LIDKsYYpjW_dm=&HEiyaPWeUeorW=&3dVfSvUXgUYVl=&Vo5mEPZbpicZn=&pns3hbXXdZXUe=&h_VmLkXVqoZV_=&uGlpLQZdYhbZf=&rKVjVfUWenUjW=&KTIcyIXrroZXb=&sNXSzcZfVZlkh=&aAyFSrYrXifoY=&FSgnPBUkakWnW=&ue54YgYqsafsj=&hKpm_AUkfesZX=&bA5CICVlkjarg=&xN8tJlXikZcjU=&rf7yOKYdnmXnl=&LORbAxUfsUXon=&45l9ZpUYhWZri=&td98NqUkijdXW=&7w9UJOYXsWeoh=&HJEnN5XjlYVUj=&43m2HPWpogljU=&7OknCkXqhYrcX=&rfmRpEZYagkWY=&5wc7R4Zsncqbq=&zxIeykVZdsVad=&dtNoGBUUoYojk=&HEicQjVXdXfmg=&b48kj2XUsmofU=&LcMv_ZUjUnXYd=&9SbtlNVkjWUVk=&Dt5fsDXYsjW_l=&guVk7fYodgbdg=&Fq7FXeWaqjdrr=&ddMaYhWnblZnr=&eUsPknVlciYfs=&MlIIGLXmsfopg=&3Hm8HnYoXjVrd=&GJ2xzVVggeWXo=&RH7tYXVjncUbb=&rMdqXXXZfpbmY=&nKjpT3VYohalc=&vrQR83Ynjmmsp=&trYS7kUebkbYV=&8EsphCWVUdakW=&_FPJWgYadc_Wj=&8iGpmhYqrVomi=&OgF2pIZshVjsg=&PprX_GYWVZsh_=&WRzd7TYpZgpVf=&cpttR_ZVslpWp=&qEF248VXebUmU=&9mBCRgYZUgrrW=&F_mLO5Wpiijgn=&TN9GU6Zmqsere=&GwVQXgZWaUfgf=&Enf7OBYbXZilU=&HIvt9MYnYenWW=&LOXMC3WccbUg_=&_Cp4XdUWsjoYq=&7rljdmZZeZXf_=&t3qhNTYqgcUeZ=&_Xk_sQVhdYqhc=&n9ZJ9rWVXZdal=&yDIpNkUjnhbaW=&rCga_eZfklYcb=&pTP6z8WgbVXbp=&m6Lnk5YrsXlab=&mStUblXXYo_ac=&RWBmMXUhsliog=&9NjRS5Ycdikmj=&_wmWv2Xcgjr_s=&6IOGmjWbhhalX=&tzzU3EWbfdoZa=&SwDAxaWcWbjhY=&OH6v2RYWaalej=&acr8tgXmWrsse=&KT9ccqXWaoacj=&rlxqFfYVgjlrs=&kBZRvCZXVjgWX=&w6agAgZoknUdl=&ouPn3rXUgrsas=&KkJ6cIVXbeqkk=&V3kHhlUrbc_lc=&THAXb4XnWUnsp=&aP4WF4Umsn_Yg=&KQ_GEAUrbbXZc=&YGLhiyWYUUbrf=&VUjDlPWskfkmp=&jSvkBiYsemec_=&APNr6KYsZilkj=&8sMZYGZmeesiY=&_3osQdUWorlec=&CAMIiKXmdfsYs=&TkdY3aVombYnW=&8FOfziYrqXmde=&RDkNHIWV_lXcg=&c7mTJ5ZVbogik=&qz7jWDXmehfrg=&yBlOzhU_rpoWd=&VKYiQJWljjgci=&HuhNcMXhgndnX=&LW2oJaZnrjeYY=&f8xESCVZVXeak=&AWz4l3YXsfcWW=&IO8Qy2ZrejciU=&e7F2x_XU_piei=&siG5QsUdejcVg=&HUniZvZUVocsb=&4JygNXXVnfUZc=&CKi9cZYYWbaXk=&PlSG_PWkXUedk=&7at8pgUglUaWp=&gvZsMnYrkpUjV=&psBJqwVdfppl_=&zYva9cZcplZkd=&n9qTSzZmdUZoh=&VI77rhYUpsalm=&SNE3PlZqWdfda=&PbHE5IVgr_oco=&dqAxgkY_lYfbq=&7kFD5QVWp_nXb=&zBT8QGZkjegUV=&exXvlqYhfb_jf=&cz95PbUfrecXX=&kdOGzmWlUk_fp=&XJyaLFV_pbegk=&Bn5zYHZWX_phV=&VU4M4LWaVqcUa=&Xz2vIVVhfkeba=&9YjmaZXapabjX=&ZEpNMiUkcnlpd=&xzEXWTXpccnka=&GT384bUqprrlr=&eH6aUOVgiboUr=&rukHlpUpoWkdZ=&SiKaHyVo_Ync_=&pyOcehXhcmWXU=&BnXQJiUelVnYc=&kuY7SkYaVUgnh=&e7VUkGUpomesn=&jHGAy7ZocdYhU=&JmHRQoWiiUksk=&hGI2RMYbXbblZ=&ieNqJnVbidni_=&reCGQlZeqeX_r=&zV72TzXge_Wir=&fHShQwYelgakh=&IITBtoWn_dUWa=&MhiOifVgYZYar=&R8h5HOYgabpl_=&P3Pr7PZfqqUsb=&qHfN3bVipfcjX=&vqtUcUUeZnbfp=&WdoBhsVjfhUfl=&xbdrVnXbqnacs=&DWPtZzYs_mlcp=&LvhiieYq_daZW=&TCo9pCWlbkpdX=&n_YRPEZhnogWX=&RuxXOjVrZrmVU=&aY26GpXUejZdk=&6ngUNxVjXVsZc=&GTsfUUZsdoUcl=&XrQMATUfchfpc=&VlCkw7UnZkYlU=&c2exypVgjbaVq=&fi2EjYZrqUhgZ=&JKS6_bZYXgqom=&W3WlI7UUjWa_d=&kmgRH5WebqdVc=&PqWyZkVdjsrUh=&Yu3sNrWmp_YpV=&DIPzL7YqsbpmX=&WhAIkzXeUsfZa=&cj6EkVVdaYrsb=&UlSH8AXU_fdcr=&xNC7vVYprlher=&lRHC9bUoWkgYd=&z6UlJzXa_chWY=&GqFFtLXkjrhjY=&2sIi6TXo_YsVm=&FBe9DjUfgsZWj=&AaTncVVejeooq=&S2iTSlY_bjX_r=&83ogbeWjYaiac=&vQaFGlVejVZll=&TgMYNCWUlkWaU=&52e7ngZsir_ch=&pqBo8jVjjiZfY=&pIIMFqYkinWfh=&5gtGmIVrmabbk=&5mHCxiV_fgrVl=&Y5QfhxYirolpl=&9dwLzRU_jjUel=&kyySjdYk_sikd=&WPOErqXdVnjgi=&7TtpRJVWWmenk=&FDPafyVfbmmYc=&cJiTSiW_mcicZ=&wF7gbuVlkm_ej=&LKk2GTXWcroam=&lrCKeOXbqZshZ=&UliatTWcgaoqq=&GjTyeXYmhbreV=&a6Pd2GZcjlWWc=&XrJjyKXesmWmc=&uikgrcYjciXke=&Dtt6wVUrZjbi_=&655usXUmYchsk=&6xTYEmYhdciao=&poV5cgWXloUbm=&ULlCuNVUfZbdV=&Vk3wQvWafrgho=&5YGkZCUajkoir=&BLa5tQUYkWcXZ=&raxtTrVgXdn_q=&wrFV28UbrrXff=&BtxqfZXZWZcsn=&H3n9qpYjsYged=&XOrtfEWUfVUkV=&SHq2PsYcegXgn=&U2Nq7zWppW_ca=&dPhmHbVddgXlj=&aJrV8WUkW_bXZ=&KXTICyYacsUpe=&TIvZZGYfsbWkp=&uNemXsUejfoUh=&pMFV8hXlZmrmY=&hCTClxYaXegUs=&ffVoYrUVYccZn=&wFGdUyYUZribW=&LM_GbcXnolVde=&Jn5egZVWWdUUo=&mu6O9QUeUX_pW=&oeQGw9W_kcWrc=&YZAfYKUeZUlgX=&sjyAmIVmZkgi_=&ehAgrKU_sipiU=&duKWyhVZhmbZg=&d6PSDNVaqjjl_=&BjVuItZgjfUee=&R9HsBbUhqgjjU=&kIxS_fWjpXsjl=&fyuJHHWq_oXma=&Ic9jdIUXYUr_V=&NufIIEVqr_VZl=&zvmBxkVicohqf=&QmmEZ4XXcbige=&jvrqLhZmUhbin=&FOcsOMYfWfc_i=&yjbLqjYghhfqg=&gjubzRUsdXsfg=&tI4vUcVhXrpmh=&FbZUv7WlhmYdW=&YgvmtRXfWZnff=&s6uaVqXqigYsU=&GUio_zXV_oUbd=&TNkNiFVlcggsZ=&VfUmdQWVjgnZW=&P27y8DVhVdjdd=&Eh3pIKZlYqocZ=&tODug6XWgjYca=&C92mbvYlVVdcq=&mXOShXWjrUYlb=&W7u6o9ZemjZWj=&DiWeKHXbUqsXU=&vaFucBWdfaWbf=&XSrpIYXoXjd_g=&f9aIOQVrqcnqh=&zQYKfAYjW_acY=&O25mEGZcrp_ih=&74CU85UXpYbhX=&aVekDKVXYklfj=&v92HVdYrmqaVs=&Inl2JYUYkremg=&Y979zlVkUgphm=&Ufat3eYiYjjoV=&NSrFb8Z_Xrqkb=&VHRPPzX_gliaX=&yJ9V4DYimlhba=&7e6O6hVcdXdUe=&Sr7wvCUXXriVp=&3rCjrxU_iZlaV=&FOHuQrWkdpjnU=&JNAG2HYUfYipp=&TkOz9QZbslkis=&6nmXtRVrqaXXg=&hbABUGUpjige_=&gXbwV2WohbhoU=&9H7Y4ZUXsjZqb=&n8WvqCYXVfXiU=&Ir_QxpYbbZfhp=&8r3GAtZaqrism=&KHEibwWXcWpXm=&qv_tfTYbdqgZk=&yTi6yrXZZjXVk=&B5tGnIZpesXcj=&v7uADBUWliXUa=&E_wKsYVUacqlj=&c4gHOYWlcfijo=&ohd_X2ZsegVYf=&skbagXWlXkjjj=&bVKw_GYgpsWWs=&2lCXqfVZaalWm=&dQoirKZUVWrgk=&fYlChtUbfscah=&fuEaNCVZrUWak=&W7QQCjYboasgp=&WOrB5ZYboYWps=&Wjd7VmYcibcbY=&dkNSJ4YemYsj_=&awOnYvWjiVWcX=&eeZB9dXolflas=&Um_zRmYmZljae=&dDMwX7YqVnesa=&WC8OhrVglXql_=&gXzbOBZrrjfaq=&KtmKa9VVYZZbb=&sDuXJwWaWajUZ=&Y2DdUEVWksaWb=&6hslPtZYngjqh=&Jcn9SLXYekfYq=&TgHoHAWsrhage=&Byj3dtWUgqUjg=&yxaV_eUXcarsV=&rouJLkZnfbsoW=&dAdkPtZXmUoVo=&ErIbp_XhZdUXl=&MDamDlWWbrceW=&4dT4CVVVqXfWU=&jKqffCWdqfpVU=&eNPXr4Xlfo_mX=&Sdd9evWndjbkW=&dwi9zJYhgpdYZ=&hgf6CEZn_pVoi=&uC96NbUsro_la=&L7oUpdV_Xifl_=&NnG4eVWkhnhkU=&SP_pQXVlonkng=&vPPRWRU_Zqqlm=&MdvCUeVgVWmgZ=&h8REC2XXdWWjr=&dZVztjVifVfZa=&JbmnFQZlWpppi=&LvFYnOUbbhbmV=&y2q4QJVgcscWd=&f4dzqlVrofcZc=&oTk_9vUhZWjnd=&In4zuAXeheraj=&whRdGmVoppqXc=&gitU68UlWfkic=&FaAoPOWqXYhVk=&UOM3zRY_pmosY=&wWCtNEWfegfiV=&fc_E9_ZklWpra=&5jENFeZmfii_c=&5mlG7MWfcqaon=&ktWbEtWegZXlr=&YU9OQgZceijmr=&a5pkYKXZpa_gV=&iLfslkXbXpjYZ=&_ul3KqZWnaYnb=&LobooAUgccqli=&LZPIKrWZkpfpZ=&NKNeE4Ufdgrlk=&IJzNzDYkUgZkn=&TNzZ3GZXhVUed=&3YnzaxVphn_ae=&OjEXzUXprrcXp=&KyyezVUYXWcXh=&KqTgjSVlccVYU=&iGPyBiZYjXdYj=&xRyZMxZUcjfYU=&95UQkHVXrVcVh=&w26axBZqqsodX=&AX8uBcYskbrYg=&hoRuTuUkskkmU=&TJFrUsYkVbbYo=&mgJmvVYacUbXg=&R2jLhzZUeapXm=&bGZft5ZVbjlVZ=&6xKjSOZUX_Vkn=&G5AaLmWaXeqp_=&P4YyVDZbfXqVk=&LKEXdfVndZcqj=&ZWUrytYpqZjZ_=&VgBbpvYkkdbke=&skXg_2XbinZmV=&eOYLpKXn_fpml=&2B_6t_XkWXWV_=&LxSXovUWkbcgo=&iQj_9WYj_gbWc=&MLfBp3YhsUeae=&58qvANZiZWYfh=&HchAgRVjj_iqj=&Ke_maCVcniVcY=&ZWP92BXdanigg=&_Ix2nBUkdbjea=&NidDoxYmlXoVe=&mek3JKZZcfWoV=&7eSTe2VkcVZ_c=&DSXGKlXponWXq=&NoHoC9UekUkah=&rZ43xEWeeinZl=&dsdPdkVp_hahf=&RImSxZXWpbkcb=&UgdtnbVXodjXU=&OPNwALWXbpdlf=&bmetUzUco_eUg=&j_qgBQZdU_fUW=&SXNfuSXfXfZmd=&ULOJ3LWXYYbjn=&haAlA7VUoUZih=&OdytDSUefrgbp=&rNzpl4XqgWZlo=&NvbuDfVVYh_ip=&UHcshTYYaWage=&iftYfyVpZofqi=&YSKJOLWrUnXam=&3t_2SkVpqoYin=&hq73ouZdqpVqi=&_6SLF_YUbmYn_=&E9U33mYkqqqbi=&CcAoPmZh_lscp=&aBPIYVYZYglpd=&aKuTbsWpWflZj=&FhwQltVns_ekh=&TFz8OhUiZs_Zk=&dy4qibVpnjnUb=&SdlzCqXUlrY_p=&bOq29NZZpmfaU=&qbNzL8UcskVYl=&oT9qoFVYYnng_=&GYOre5ValireZ=&u5hb8HWpcpWbU=&QvZwSKWWnpnYa=&kpjUhoXidaiVl=&EnkPbiVfUcaiU=&RpRaZBYcljmlV=&ZRhDn7ZciaoXa=&Auh5XmWdZh_eq=&BS2t76Vfkgl_k=&aPbtY6YcefZir=&8dHKy5XXUVXsa=&AKN8KgYoUWcrq=&3TTwdwUrXohnk=&etBLhtZWfmVfs=&ZEgKWJUZZng_m=&NDUZGdZae_g_k=&wAhJHsWjpX_jW=&mY2BvgWVdsXpm=&9BXuvpZeaWbsl=&2nkhnsUeoiYmV=&XyQsABYg_brXU=&It5kMTXfrUUfd=&Pq_7DiUqmgikp=&6xCzkIYhVb_r_=&tYo2NlYU_moni=&HLB_CPZjkqbmi=&eKwGrwVVpa_jq=&DUxTBBYlhUZXe=&qQW6H7YmYacmn=&Gccm_xWUjbmmo=&hHlDDrWYnlfmg=&cJHrmqXgsgWkf=&lYPWcaVcrlgiU=&q2EYZ9XhsVgWq=&8agKbsYZaf_kj=&WRO8KTWVXUVcp=&EIuCWjYlrcUhV=&_evCCFWfgpaho=&5_IipmYZmanZb=&a2QIGMYVgchhb=&LADbpeZinejge=&jih685YkoUrmW=&Z7lZHmXcoVdsk=&RYdw7mYkbkfsr=&rtyXWHZmoaZh_=&AD6b7lXXmdjgr=&N9Tu5NWscsmca=&aEfx6mZYffiif=&iCdOLKUVo_njk=&IZLtymYdYqkml=&Nz599UXngloUg=&9IKlJgZpeemZk=&4gJIeEUeqU_fg=&GvvTQMZoagkqd=&ZCCHkZXrsXfVf=&4aAV_PZdWmpsp=&YjjFgkZqdjYfU=&kQzqIvXlgrsfV=&ur8yVRVcUkUoq=&MWrfFkY_lgjnb=&SDOzYCVnipUWa=&sX5PuCYfrkmkl=&_HiyxtU_nbbdo=&_mycPTXoqkbgl=&EQ4LTzVUYZhmi=&3otY4yVpVckVr=&vLASiuVghaZmk=&MVdB77Zomrphs=&kduHbhWYUlZnY=&pU2jCBUhebm_X=&q3tmXFUpnXVoa=&EXHvHgYfs_Whd=&8KVysIXbqrsXV=&Zrx27cUZroccZ=&ZDFp75UUoYUpq=&9fyBoIWUUZhch=&g8OvRPXaXmdlV=&p4KtEmWWobpZl=&GVzMa7Zkkaqhp=&4LDiMdZmodXpn=&hE5BYXXsXfsqj=&cNLywpZsYigan=&ek3LYXUcZXndZ=&conD9dXsWWsds=&zFQLIYZXVcZVX=&bCDHbIY__Ugoj=&reIEJ2ZgYjacq=&IBZlbdUes_Ver=&2BYDIWZWZngWd=&AEtofeXkapXdf=&VnwfB_UcsZocg=&QvcobDYljjbqo=&H5JRQOYbpXdhb=&kqgocFZmWkpoq=&fB4XAjYhm_UWf=&kZAuexXrVhbsm=&b5BUEdYbXmUgo=&_aXReCVdj_eqc=&_OBTD5WfqdgqY=&Br_UtDXnmggib=&KmXBK4YnhZgra=&4LbskmZkYngdh=&yjkOegUXYUUsn=&gymIEUXgUqjmf=&wV73HIWUhbhjp=&4dilC4Vlhknen=&U87OsUWbggdig=&MlFyq9Uenqjnk=&qV3rhNXZYinjr=&hKMzFGZersnpY=&HrJw72Wqjrklo=&bsRR2KXicWWXj=&2MmWZAZU_jkno=&CXPlJlWcnbglr=&WCTI8SUkirYpl=&behuAjXcbkoaY=&k6LkQTZrmWklj=&G4mJGxVdrbqfh=&oeHLyDVfqnZcU=&mtRTHlWXdr_Zq=&t7ZUj_XdjWdXZ=&FvNDHBVjbcZYn=&OKiWaUZsUrWh_=&xycrD4WkeYfhd=&CYvZc3VUXUcYV=&TJmKkFUXinlgl=&RYSQOFZWfcjfl=&7LoYpsVcjser_=&TZNGIoWYneijY=&GNxw6IUeek_fp=&CrV9ZcVaqkVfj=&8yPbgkYcZrm_e=&rOr3pjWUVWgWa=&KpQIzeUrZrZif=&vPALGxVlkXpUX=&RKErgVXeihqU_=&6cqbIhYWlXrap=&26lYBrWUeVYWh=&KTQpvaXjVsmgV=&pKP8pKYlU_orX=&zIfDKZXrqZWjl=&9oe8drZWlUcfZ=&hElZGLZqjVbnY=&jUo5WOYhllgal=&44NyiyUcjjWdp=&RaSxHlZr_nZnm=&aAQF4wVUg__pZ=&SPBSpGYXcemcV=&JXbv7nZikkqUf=&ff8qE2Z_YjcXk=&cLoYoKZbYeqjV=&GvM7rsZmcippm=&lShNhFUocYVhg=&dmUT5XVsWpWdh=&vVLrxIVViYoZl=&F_zQnYXadZVZX=&JRC5fLYldroco=&pX9CEGYnfsbdr=&DV29CwViqbUmc=&Rxr7SQUfmpoZb=&GwH3cZXdeVrsj=&Ah2D2OZkXXbrq=&rw8SBVZhssZVX=&frkqBtUZWj_Xo=&yRtmnrZniYZpj=&SsOxVsZdWoXkU=&ueKGUwYbjXXZa=&3GLvDEUWYshr_=&GlEqSBXXZUUcc=&COWhpcUnmWjfi=&9DOB2xUgXYbfU=&5fBt8MXYZfjcX=&a2cakaWbWojqi=&W8jzW5UkXZslZ=&zAoLSoZUd_eVa=&uf7bcMX_ciqUq=&_7mIhrUimnYXl=&OW97WUZaj_cri=&cp5qG7UkrcYab=&xSGfDIYcVlVkn=&BpDwV8Vk_qeon=&MjitTRVYmUjij=&BGf4KSUm_dZjb=&OiLAPUUZisVdk=&GN5zNwXYcnqoY=&pWo3rnYnspWVr=&ehl2edUXeeZfq=&VJdtsoUUZmaXd=&iRU8LpVVqskij=&RgjHR2Zpnhdoh=&ecvipeUchfWqf=&YCWJGPZamjZbl=&3yskpWWgjlUea=&yUMIVzXpfbepU=&22wa3pUUiVnmm=&blP9sGYidYhYW=&2OpXmrVp_eWXe=&4vlHHSYhbrVZf=&4oqLHRYXXdgom=&Wx2KnbZYbpgiW=&9COzVPUcXaerm=&ZhyBOEXjhbloV=&CKvcE_WkXZsjV=&pURgt5V_fjVlX=&MZNBmiVfcabWZ=&lgEO3YYifksah=&bUo7EgZlchclW=&trd4trUgfZbkU=&_fLQVPWcVkYYa=&nNnsjgUfgssY_=&47prNgYYYmXZn=&iVRjysYXnUeYs=&YDmBERV_VijUn=&ibeGzbUllXXfn=&TSjWCeXW_achn=&DNzphRXqkYsph=&JeFNUzYmkY_jo=&38Ne5KXlfirpa=&lWyc2qYhbhrqb=&9W_vpCVWYWiog=&lmn6SCUqVndkn=&SzSnK3W_VWYrf=&ktTXl5XnZWqUg=&MNorsUVgWkilh=&KMIR_GUg_Wofn=&YfpVVtXlrqqVc=&RFs3DTVgVfjYn=&7DdvDvWgaXjmU=&UPBztBW_cUVsr=&_toGhxWsaaaXj=&tWvWRoYkdkVdb=&qm7AY3ZUlXmsg=&qMAJ2oYVchqUb=&YxtnPeWln_pXV=&gB778GUqUnb_V=&jQMyGAYaospfi=&BGYVS5XrobsWo=&IiXPTxXrahWWW=&Igo447ZcVjdrk=&2KqN5WYYrVbWk=&cf5QTiZijoZ_g=&rOAM4yXjosmXi=&JwxYOKWUrXaZa=&xQfWTfZrcl_sk=&wQJz7lVsaVYUg=&8YVTaIYriVeik=&riUenQUbbWeVW=&nHxJG5Zhogfrf=&koT225XnjUVcm=&dUCyS4WeehVol=&3Gl_5nVrYjsYm=&cZ4O52VbXjg__=&FlPsjwWXpgdsW=&gDa2CWWrUrZlf=&XZtVFfX_sikiY=&OnUCPyUicjfsX=&CAFP2jWZdhXdm=&pdvWYZXlsgbdZ=&aqCZhaXWapYfU=&3cdt2WVZfVbhY=&Ok62Y_Xrdmerh=&bgxunRYrsYjcX=&e9xvegVjgqoeb=&NjIzFuUcoiq_l=&CVWMxNWsXqmVW=&6N6ANpUiplsYU=&ib_VjCUpUofeW=&Vuv3AnXVeXphl=&ldmAfsZYYaVVZ=&7ITcucUkpllp_=&rwJQcYV_agboX=&b3jlCzYmsbrcX=&43XLj_VWgrgah=&7Jwm3OWkigqnn=&ZjMjNxUVbhWno=&hRwm2NXZbndpp=&SxRdxYZk_egac=&UqtYs4ZhXfebU=&OnjaBAUhWjaXl=&Wu846DZpjjfdV=&8UF9jGXrXXfpk=&oIuuQQXjacjfd=&paf_TqUdkZVZc=&ZXKlgfXVebf_l=&HzyycQZXgjkWg=&7zv9NiZdccqsg=&kcVhBDZ_pnfrU=&YhzLeDZsaUnVo=&F7MRZCXWYohlr=&cO_NW4ZYrcacd=&854xZrYfnkkfX=&KlKUTYZrkceUj=&NO8DAhWalVaXY=&rxXezsZfXeicY=&MOHEjSYfnW_pi=&Yf2BzHYd_sVXf=&bAwxXXZmZanrX=&RDINyLWqWmsno=&Yug9aKWbabjXl=&x_V6IvW_d_rWV=&X6gyfuVehYmmY=&f6gsXFUoplmr_=&5Fi9aQYYkZUfk=&FXE6oLZmsceYq=&S9CTgvZeqaWnr=&P4qkoUZfVVUpe=&_859ZCZcWWhmn=&6JQNXiUrqkYe_=&kOT7kbXb_hpmh=&LebvXMZm_iY__=&ZhbhrWVclWioq=&BD3aAjWWpZaso=&jzuxmmWcWVpYa=&52cSiqWeUiYYq=&r7wO6fXdbcgkX=&uX93OFVWXYebm=&UJ6HvFWmVU_jq=&Q4GlB7YckWWWm=&MD_kxOZfoZma_=&D8chY5YenpWhn=&KcVFdiXZmkbsX=&zgboLzXYXqpfr=&mgsKQoXnpeUqq=&wWtB5gWVqaadl=&_mS5UbVVpokal=&nAlOFqXrdYens=&MTpSu_YdhfmpZ=&q7OnFIYVlqUjY=&MEPWGoVfoVphp=&7nOUHkUgisZgc=&OwSynoUpaefpr=&RV3QwiVoccUoa=&okIHVMUUUcYWX=&8IbAxBZjajWYo=&okb_FrXjlcjge=&YbiRPxXXUjjlk=&sbVIb9UrYUUof=&ffMaJ9WUmhseh=&Umj_WPVWrqj_U=&wilbGRUclorjV=&XrozYvYsgUpma=&vXzxIvXWnYXVo=&E5LezZZohcjXa=&btzcFqZsdZdjU=&pzh_obXWqXXpl=&pUM6PmZZcdgdc=&SJihuZXa_lVla=&pvyuVyYrljXom=&ecaq2FZhmgakn=&IZR8gMUda_s_p=&yO9MpYZclja_r=&AQKsmCUpVYUqb=&Cwt3TNWUabfoo=&befz3oUqYksZb=&Tz3XSBWXVVolr=&mZ4EbcWmWnYer=&fmQkmdWsshYak=&GrHSsaVXgblap=&_FVdGsYpWolom=&AXPIu_Zeldj_l=&xphe_8U_fUflg=&NZJkuAZllhncV=&IWmcrGWeWd_Ve=&79yJSiZrWYsU_=&xZShH4UYUYijf=&VOxznrUnlflll=&NGDZocUkrdfnm=&x_VJLGXepacWb=&8evE5OWUYlgjd=&SCPH8xZekoVfa=&MTELODWnikkbm=&cDLrTVUZ_ijhp=&SPDyArZmi_apU=&Bb8y2MUoadhhs=&VEktHCYVnqske=&TY_IuRYifoo_o=&oqEa76WmgifZc=&QzKbk2VesXlnW=&W2ZPI8WqbgeUi=&L5aFe_UqelXWd=&9LbhEOUsYgjZY=&AABrXyUdVeq_W=&NzUDLDWmbsgfs=&SX732OUslqhob=&dQRMFgXgXrUXo=&_TTDfsVgjaken=&UuUh_IXrnnUkg=&5TIZDpXl_iinY=&mTxHZfXiihiqU=&E8WlVEWUZkdnj=&_o7bCsUYeYdng=&SqSViQUdhVfic=&DYBtniWVrZWVb=&neBWpvUoYqVrZ=&TxraQlVnpoZrW=&D6LSoIWjjaWqq=&q5T5z_Vhls_XV=&Gk4SaaWaldqiW=&eVNDxTVfkfaip=&fTQRYTVcdVYgq=&bmjboJXmsVpgg=&bd5kOEYYdaYmY=&7oQtFZVrrVU_s=&HCr6RtVkrY_Zr=&XBYscxVildYZ_=&uZoyK7VkrUaco=&yypbyeXirVhfk=&9iGclvVpj_gme=&2k92RtXUejXnf=&x5aE5WUrdbnhr=&vW4W26ZharkUk=&P548TMZeo_Ydb=&CZrRVXXYrqZ_X=&Qsx6bBZYipdc_=&LyvMdeVqhZqgb=&AaWTNmVUrsiiV=&WnIrlcWed_clc=&QWux9oUlcYdXZ=&Q9nkMDVqrdfgd=&neYRITYgqUqaW=&yJmZoWYrejkUh=&pGjtP5UpglVdn=&3qDehGYiocor_=&D4R_6TVWrpo_d=&BLMbN2Vdeoibn=&Kicn6XVaXo__g=&kcZfQWVagWW_g=&PsIscbWjnonmY=&lfBSYYYasn_dm=&Zf6kBjUpfWfmV=&jGVpJkXmrpYWc=&fpndS_WWdYUhn=&yhBjinUUnXhld=&8rvSNIWsrepcn=&7h72yCWdXkcr_=&lo2yrPYZUaXWn=&e4UQSMUisebil=&KVflbwYhraYZ_=&uOoETHUsUiqcb=&7PcARQZsh_rXf=&wG6bdwXcirfof=&QJN2i8WhlefWa=&KO9AztX_pXenX=&PvOHDAVkcsXjm=&dUYBgnUbqsWVi=&cW4MmYUZWceon=&gJas6zXeXpoir=&HS76kqYdniV_Y=&5OsHl9XsoYlXg=&2CZ6lvYfnroUh=&JMVvilVhZdZdf=&knQBVfWkkbfps=&qle9ItYVogfsV=&T3WX2MV_lUehj=&l6D_XlWri_nqg=&6sjQOOVgVcslU=&5532VuVVmjVji=&AszwnJWnpinbi=&waOv_xXpZjaZe=&JfoKXcWlskkfe=&rV93gQXboWiep=&ICfJD4VrXUeWs=&N3KUllWgqsqkU=&PoY2BdXaV_kgb=&6yuzQSYWeUWkf=&k7tWG_VjeUl_X=&_VL75mZedgffb=&BeHEGyVogcUjV=&cMDPbjXWmYnZo=&jGbaG5XkfWdqU=&fv4vhnWjhmpmg=&qKxoXZZaVgfnm=&h_fdeNUsegVVX=&hAyNZxVnajfkl=&i9qnWzXeZfqXj=&6EWgQSYlnXVUW=&yku5pHZmUo_qc=&_TImqbZcornik=&P2aM4dZqiqmhr=&XIoPiOY_rrZdb=&euMsUpZUZWbcd=&MVroyZXaXrdii=&qUr5P3UeYl_Zb=&wBfPcmXjggnif=&KJPUoLYlbVjsk=&cW9iUJVqVmgec=&hHCpiUXXdaV_Y=&nROIczWZdcUea=&o7MHAqXnibqoZ=&7LjmpbYrrUpXh=&IZyUILWfXllbc=&46JiJvXpgaepd=&WbVkQFVsZcfjY=&RJvjeIVganidc=&XhJnIZYdepsqs=&uf96V9ZgkpslV=&GFM8SdXdoiVdi=&PX6mxoXb_Yg_l=&K7poJmUnecYoU=&3_vkc6WaZbdWs=&DRHeYcZXjfWm_=&TF_CzjXUokZji=&4O7f4KZgboUss=&fpGf7HXiXhlqZ=&HSDAJOXmef_hf=&yQmvjRYqojp_e=&8bMdxUWfeUUdf=&9oQBQOVjZemhY=&PW34raYsldsYi=&c8Em7IVdcsqZp=&MlOHNuWjsmUpa=&LLyLXCXapa_l_=&eCqIn7VgXhcri=&ayb3auWdrqdml=&GAaQ8UUelh_es=&43Q_MqXZdaadm=&fu8HAPYbhd_cq=&vLlSMmXmiikno=&RhP7xQYfmjcpg=&zRup6FUfaVXoZ=&gWbLkKVirjbpm=&bpEsVWUrjYgrn=&jRMXX5VqaWecY=&m3ibZhYXmXjip=&Pwz_LWXq_kmcl=&Hd6h6SZgsqVWq=&cqLo9mYXggbUq=&N3K_LhZgVoaaU=&bYMc7FVkddh_b=&TkjajIZeqak_V=&tEWZpsX_UdcUY=&WURNPSZ__eX_i=&hrDZ_XVmWYejq=&AMH9IPYisllpk=&K5ZyfyVqgeber=&enn6S5VkroWdl=&fiagB8UVccles=&yOp6B_Vbhn_gm=&GnafsJUVqYbos=&wXtc6eUilWfqc=&cm8BMsWeqcfsa=&pGHObVWZempho=&PIZbQeVlejYiZ=&Avu_uoZsioUVs=&4wM6UvVrZeZZn=&Tl5vDEWgWnYgi=&CWv9mZZeWgmYe=&OKMhr8VVkcXh_=&rNVhKLXiclsjZ=&fcbA7lZeVadZW=&7vbRdoYYcYqkd=&uIL96xUanpoZV=&4KHsvgVqeVUko=&zLDtopYccbgnm=&iNM82dYcWgVnn=&bqdWyLZWanZcb=&A8AYYvWZUgeqg=&4qLy5zZdoiomk=&gFUUQyZqalsqa=&6CxZ8yVeejsjU=&pdysByZXjcnfn=&75738YXqkkZWk=&La9ZaaWiqXoqk=&cS7xlTYlkikYr=&TLmXG5VdYZZWW=&T_IAeDUmWaZei=&QJ3iEkYcWcZZe=&Lo679FVqkgacd=&Q4QV5MXagjbrV=&4qzwkkZ_kdedq=&QroNueVWWhZoq=&NxDA5tVXdljmm=&iKxqbHUnhhsij=&m8fKYpXeVdgWl=&t_2PRhXpqrhYc=&wu6kdvUkqiVne=&yLR5XUZ_sniae=&WOcEq8YUUeYdr=&aCM2u6VaklgnU=&Jor2poXXjlVfp=&6uWncrYYnfoem=&XuMCxDWgUfnlX=&BckexJVZglolm=&bbEXYdVmgfWh_=&hnBj9gVci_Zml=&zYqdEfUVffkWZ=&DJ2tmBWoXsWUh=&MBM4rZUobkbnm=&EbpOyYY_mbbgV=&lHNDCLUmpobZd=&QRXitjViljngl=&XsUR6uYj_moYZ=&nJGcf4ZnUgabg=&SNmr72YXqpWgc=&5jd3S3X_kXhhr=&QkUy4yZWhgppY=&w9EMOeYcUk_ni=&be7yNXZisrYki=&nyzmP5Ybmn_go=&pHKdiPUWdcWlh=&3nmZn6UhbWmmr=&czl3bCWeUUrXm=&CCnNjGXpacgZd=&gIDLZUUUenlc_=&Qyc2tnXW_l_ia=&ZbvGrhWYkhqZq=&ktBzrYXeahhkY=&GWArZJVigcUbg=&Ujc7QaZdZrfhW=&gXo_FfUcisrrs=&af3ekvWdelagV=&gz7NHQVXlZYko=&7ukOb4WsWnkoe=&n99SbAUmbpafi=&XZ3lzIZg_rXXd=&V9OtTuVZoagqc=&5RTAXeUoYYbfo=&KjtxlGWZghgrg=&qc4IE9WplbjUo=&uCayXlUljYbUm=&4JrGqsUVoUsni=&f_tRL4UheiWle=&5GbWiOWZeWplX=&jQXWwKZ_Zbi_W=&EZeGdGXWgborq=&S6CZWIZUhjrYj=&czXOcvUlqa_sV=&QLsSoGYbUeWbq=&_gI9T7WVsaeol=&Lg2_f4UZd_Zka=&xrKnmQZUapgsq=&3w6lJiYUUhhic=&62ydQsXZphgbX=&JgCtdLVprm_Y_=&DABEjIVbnWsql=&CnhN4OYs_inlh=&J26azgYkshild=&uTQbIAUZciakW=&ic58biWUojgfV=&ooo3DNYVf_kre=&rhKM3GZYsZlWW=&GWQqZ2XeindVf=&6L8z3XYrWkggd=&6Em4GeVigcekc=&ilnHiMZUcUqZq=&reosATWmV__nr=&7wauXiVqXVVeg=&apObZ2ZrrVXme=&X4C9K_Ygnn_ap=&EAUaFqVVcZamp=&VGEXlVZUpWnfb=&clVW4jUrrsbdZ=&u5HqRpWqkqrap=&s5uqSFXipcrb_=&VMSUBWWakjsec=&hZGuUoZUincar=&9kfYTiYqnflsk=&sPStC8XqYZdjm=&7OadiZZXpdhrb=&4YwxbJVVsafbr=&QCtO56YaaflV_=&ROGPcvZqfjkbe=&YIjnMXXrUlpXr=&bANBdMUadgfml=&TT9CsAYnhfkYs=&5mvVX3YVihsYo=&k4BtcKXhUgfib=&lMB2IHVer_VgW=&c838SiZfojVfa=&R6u7nfUrmVbie=&HbZkPvZgmZsZl=&cXfDaLXfcrnnU=&UvGbAZZdWVd_s=&vgbHzaUbosdqV=&795T3pYdX_prl=&ny8JuuVcj_oak=&5V4WkZZcljsno=&4nDCCdVXdnnse=&WpesxQWmidoUq=&SWEYAxWcUgqYo=&DQQOk7V_agpiY=&oaCh_4UpsVm_V=&73km2XZh_inYa=&I2kazVYlhqneh=&ZwDlLsUhniUVU=&xe8PEYYrnWU__=&yZh69fYmnYilX=&fxvkj7XkWb_Wd=&ns5quZYjfU_ab=&kuT48gYeldgsc=&AHIOQFYir_sag=&eCArPRWgsjglW=&o3Zu7KXUWcopW=&jjQCYMU_ajprU=&Es4ImqVWZlqor=&6fNhz4UeVelWh=&soMH7TYfWlc_l=&UOuCgNYnXlicl=&a3v_haZYpkWfW=&MkVh3OZVUdZUl=&M7GTMiXpdhqWo=&lapWA6WpZrhcW=&AeXjItWlsqmno=&5XDGnSUidUlec=&wfPctUZssWVVZ=&7pYT8AWcmnni_=&KmgxlZVUlZssh=&Mo87fIYrdoano=&hBlITtXlc_fUp=&BuLWDwYgaeiYm=&bsziu4ZZq_d_b=&Mddaz_ZjXjpUZ=&LU35ANYhUbibg=&DhpRrWXYrWfhm=&zf7VzVWcak_kc=&AIjDtGWkbfkWs=&J6bHhYVXgfZnr=&YkUmyvVcbcfbk=&IpgakkWsUjpjf=&xB2an_UmgqsZm=&C8N4qdXfUqheo=&pvJ5qcXd_bcbk=&n2fB8zWsmfUpl=&6havuQXjlkUaZ=&n9MZEkWqhdorq=&boZktQXbYhrUq=&uvU9qQZfsZrll=&e4T7cUYqojsca=&IY2HBDWjikfeV=&VWHjYaUohfncr=&aYJ_y_W_Wdhga=&PeLzlyYpcXd_q=&zIGtt3ZbmUess=&aOcp27VmgpWeh=&uVKwbCZdbiZpo=&2HhcCWZUdsjnm=&EsQmajXnncVmo=&5tkHyjYhXllnl=&m9yIDsWasjWp_=&yaurU_WobmYUh=&akNSRuXdjVnsi=&ldIHGJYagUjll=&7LBNMxVVapVba=&MXwNLcXWUYYb_=&XyGCLKWhpdqfp=&Bcpp57VkUbeWq=&5_QOyHXsgmVpl=&V6e2jOZmm_dfs=&2LT4FBZk_g_Wa=&hGnF_5Wdnliir=&x_oSmhUdWjqrc=&scNHc3XVUrb_l=&oPZwCTZsmVWfZ=&XF8ZfVVgsiUYe=&CjUOFuVrXrqZi=&r_RY_dWkelmrs=&cuMJNcVjigahW=&GtnLiiVbYkgpl=&HcwI2IViYqZfU=&Nqb9wRUrgbgdd=&oGjXpiUsWsaZl=&BByWwBV_kVmcm=&jixkkJUZoWsmr=&zbXpzGXbpqlms=&eiUTzHUgnqicZ=&uDPa8xWnZshgi=&djBNoyVai_gXh=&6gpwcdYUmciUq=&DXdwviUpmiegm=&ipQYVNZgpbiZq=&m_8GDsZZjrafW=&rpjt6uUoekVnY=&WoxYOTY_bWrno=&o5_Rg5ZjjrkWe=&HmIO4pUankamV=&tCRcOlUWrfrsn=&TZnA76ZaWeXjY=&nAdppWZnjcqlh=&z_MgwjVfgcnpZ=&QZfIvaYml_bpf=&UhOh5zZeZjqYn=&a69QCmVnUrggf=&kpx5GrZVmXjqU=&X_smfmXpcafas=&7fVFbfWmjZkZr=&JzewPNYhbncse=&nnYlFdZaecbZh=&UAXZCGYrjeqWf=&5gY4DvXdnYgV_=&FN5_P8Xhmicli=&NQnxjzVlVVccm=&msgrxsYllasZU=&GG8tdfYnhYVpX=&26WykzZ_am_no=&TOWqneUbleior=&gNHFnDWlWsnVn=&_uFyHXVYkeXYq=&k_bU5bXeshZcY=&MQuoRgWUmrssp=&HFgfWvZgaqgiU=&kq3OuNVc_pWYU=&DLAQ_AXcaZrkq=&Ypmaw_UiakZ_p=&xysxDmVrafc_f=&6_SX53ZVpWXXi=&IvjgfLWXiqchX=&jhwVsYYjcn_oi=&qUWJKfYjssdaZ=&lo48xuVYWdgqX=&Df9YHdU_mnq_q=&hMeUdTXmiegnW=&bVAFcvZdm_nUi=&rRMa4UZpqgeaW=&g9wbuUUqjVpXg=&WOVDgYXgbmisV=&FBBw7zVjXifcp=&InNso6ZrWmmfr=&ig2un6Wmqelef=&D8RVuKYYnkhro=&O8A8LJV_drsc_=&mI9npaXiaWpsf=&WY3BWRXrZppY_=&FdPclOYrWgsei=&Uu_JE4ZodZkXl=&WRbutOWYg_rnY=&oGRgC2Zqrdkqe=&gWixKYZeYXdmZ=&7SRws3Wkqrseb=&3xZsN7UkijUad=&q2kr35UUrV_qZ=&5rxpWRXcWdVs_=&TaYemRUhXihk_=&YOCp3tZ_hnbbi=&q4PmZEViY_gUl=&Exg6ZTVdiknjb=&P4ZPGGUib_def=&bgzYhhZcdeqh_=&DrmayQZhhWXUn=&TrygwKUjlpfkX=&baoIILVamlUal=&cgsOhWXbemfnc=&UTASBZVnrkUml=&VTdyRMYVmolrm=&hfHkbiWhdoclg=&RMTZHjX_XVUbo=&7g3QxWXhpm_od=&DeQ5F5XdqrcUm=&9JyYuvWlngXik=&sM4SyYXhmor_r=&2Tqr7SXaYiqrs=&_yB4aTWWjcYha=&RXsHy4ZUaYeWU=&InZz5SVpoUhUj=&2Fuf57XjrqcUd=&LdUSdpUYqcYmf=&5NMtcRUZkaaUX=&f8JqMGYYrfWak=&iqmAVsXemgnjV=&U2Y8SQUWUsYsn=&XOJomRUgeV_po=&p_mIEQXiqqkXo=&Vv5PXZWesiofr=&xpUE6jZaWrVmo=&YreKsKUlZiljU=&IjRnbYUfoarVU=&wclxv_XnajccZ=&U35Qr2X_fmccb=&Vc8HDGV_sgkWc=&_a4Q28ZnlVoes=&QbxudvUroWbro=&PXKXgXXbrUmii=&apMuFhYedkeUV=&49phh3Vnn_nfc=&J3ZEUCXkZnXZe=&fUjwKPZgggZUc=&gGEqOtYjUoegX=&3gR4QLUoVUkqj=&cIKxBNVsqiiin=&mEUihfYisrZrk=&8Le4_WXagmYep=&_5hbAcYclmW__=&UMdIRqZjcnVXs=&UKnpf8XhhinrY=&iWZXXBViZhmqU=&aX4VyMUrlZr__=&cbL4srYlZrb_h=&ryVCxhVjUbXah=&u_kEtJXaXoacV=&4QsxcSWj_ifWZ=&_GycwMUrYkqmm=&zL78bvYVUVbXU=&bwccy7WeYrXVr=&AyzBnfWsnddss=&GcOzOdUYWqWZW=&lKEYIBYYXcYg_=&_8FuhdW_ojhoh=&Kc7YJhYr_enkn=&BeCrViZgaepbb=&H3MHguWs_VbZY=&guxcXhYekr__V=&RmysISUddjjos=&JfxYqUZkYsnia=&6HuHaHZqmjgVi=&SqjaNHWdsekhe=&9AXu6WVofsfmm=&mhcA5lZVkrVaX=&znio6kZmYgdkq=&egquEUYUjehji=&svmdkQWbUildq=&NQ8MQQYbbflVi=&7g5zAkZnhYgkb=&42BfI4XpWXine=&ZotKRzXVchpkl=&QHdppjVccrmoU=&lzn6vEXcWnmsg=&qvc4ViVsWoqoV=&mGcvkrXhmXjkj=&Pt9d2_Xgl_Yji=&KtRzmkYUadYjY=&54qPtMWUgjhoY=&CIHe4MWscjsms=&f2WATyYerammp=&uZ_N8vZdkdncd=&zLlepBZXnrpV_=&EIxnouYWmdmWY=&D6YVS3V_jrsgn=&Kb5TZ8Urgnbsc=&mm8isZZccieZV=&MEoPmVUejfVas=&hEmsQXZboereU=&ghQ5SGUrVmajp=&mceSSAYd_manr=&7zUmXxYUfrmZj=&QyY78OUVcfhXk=&LhypqgWVhcnkZ=&Avw8FIYdgllne=&pv2eHdVVgaoke=&g5Jf6oWqjXVhW=&4ZqNPhUVarYZh=&VjQWHuZrrmhZf=&ZFISN6ZfWnpnY=&ZnGLxaYqYrdmV=&7JnrBdXrnjkom=&jNuU39YcWaZrp=&mLQIqgUUUkcWq=&45AkZnUiqhgnk=&YH9kUgW_mkXXs=&WleBvWZjrmmep=&myvP6eWWhbklj=&xG7IaaXdmnlie=&aKSEA_YagkUmX=&VbTelTYaci_dr=&bNZY2SVaaom_q=&WpggSnWfWVani=&abMbJqWdqZcU_=&hUg6F7Z_ljkqp=&Jhd4jHVpbbjWm=&4zrkWbUoUkVfd=&N_mSzTYlZbqnc=&bfXpvEUaZViVZ=&YPgpOLUkf_hki=&lvxtnOWWeqVh_=&7WqnKMXUXYVlm=&Tcb9cpWXjfVaU=&5VqiurYfrodlb=&6mxnB7YhrVnmn=&x_eRvAW_gZmZa=&JSE68VWUsYUhi=&l4GCfnXdmeX_q=&uwyqAoVnWaUfU=&XAogppXhYbsjk=&zaABYeYhYqeVf=&eApunwYppacoX=&abjUryXXkZrYc=&q34vevXrXVdkn=&Ad3y8QYYhsrqf=&zNOX9SVXUcUco=&jY7JtWVgWlUVf=&IcjE8ZWUXdUpV=&UxjnBCUWsYUod=&_2CvcRXZdVehf=&Hh9KSJXshWhrW=&8JfgpMXeZopie=&37eRoVWbmgihV=&UGR2xpZihkYsp=&w8K4VMUUYrXok=&Vx6CTvVZkieiq=&G5Jk2BVWgfomW=&MDnUDjWn_UZrc=&UWptSYYreejmb=&WBzMOJWpXb_sj=&qNdWUQYgWdbed=&OibRhFVUUhcXi=&plYrmCVpiq_nV=&X2U34YUXhbaUh=&hx4vLCVbpqbUc=&eler7EUggVrYd=&W6nnLLVmdWkbZ=&Z7cF5SWoqlXWj=&EhbVXEVsaV_Wh=&LOzxtTYdoahWg=&yV4Tg2ZlYinoe=&sc9z4jUYkanXe=&aRuuWVUYlnshe=&wf_OxeXnjbmel=&F9R4cJVZWcbae=&rFUW72YeZVWfb=&CRGW_XYbpdphg=&2nMzNoWhYjbrV=&cUC2v6ZbiUUpj=&uigmFAYXgrUdh=&nxOmxaYefbkbj=&Ope7uvUVbbogg=&NBSeByZpjffWZ=&jxLbX3Z_jlfe_=&64nrbfZZUhpUX=&H35DykUXgXkjY=&VuT2URUiiXYsq=&hrwSVZXmnirac=&sLafXzZnXWZgZ=&DvUyKfVWYlVaj=&lwAGnaYrqhbVb=&Wl2BbdZffVipd=&mxMczJXh_rpUs=&hiOrb9UorXqim=&zZX4ZAZjaanfe=&gLjufHUVsW_eW=&oJFx_dVpYWksl=&JYzr87XfldYr_=&IGuMBCXjmVUsj=&EIfCHiXpfpbkg=&SU9DXMXbrqklf=&e93FzIVbdsYgY=&bzkoo7Ufmn_bs=&JKjkF9ZqkdhZq=&m9DPCbZbd_cXi=&97APvwVee_q__=&vx9q55ZbXjrso=&CuMsXtVjiahrd=&pUjGbxUbmqksk=&rwsrV8YYrnXhl=&aYrkEhVXc_lpp=&C2bA9lZYfUWfX=&cX3B5rVmipaqi=&Ufzqw9XiXmnhd=&9VTcjYVgWieXk=&86bFLoZmpbUfU=&QDdUHGWjfmbj_=&wBLLkQWWjsjeo=&FqoD2SZfeXUbg=&grzuCLVUrlYnW=&cPZWpFWlqfp_s=&q8_5uYZkZgolV=&lAP3wQVabnYkU=&izxBn_VfkrlXi=&Jw52ERWjZqncp=&H3w4NnWooWdnl=&u5uecoWYcarcg=&JACD8UZifikYo=&n7ajPEXqqpWWY=&4f6yUTZfkUqWj=&j4sHJ6UnUYVUa=&QaoMEPYpXXkqp=&Y6OKPrZmo_qnU=&8y98BTZdoYpqa=&nIooLpZqrZYZY=&xU8KOHVogbYjh=&xo_o58Ufhjkeq=&NtXdOzXsrkUcY=&TztkAiUchefrV=&uQPmonYfcl_cl=&zxDdZrVVqoaYf=&8xyRhcZVUjgqi=&6r__GpXWjoYYc=&VFPXT7ZfglZYe=&lxYtqZUrorolg=&s3gFT2Wfhkrsj=&riT_nZXgjgZVp=&BtczDRVVhV_ii=&SgamUHWicmlZW=&IkuSpzYnkZgcd=&RpX3S4ZYpXW_c=&gkzTNdXpgpZcX=&satfMhZmVoiVn=&EwuSJBUcbYrZo=&7E7u6EXUi_hVV=&l7ToS3UYommWl=&IyNcvSViacngj=&VqraXzYmjgpoV=&gO7v76UlalqUf=&rbr2aaUiblpkc=&IiqkYBWfWlrUd=&KetsTdWbjemea=&8HjNZsXWsWhoq=&XoD2kwUUkfqla=&yJBnObYqjcVns=&YlkNukYVpfgXj=&XYXhNcWUahreX=&JKirt2VfmfjVW=&H9ygWnVmbnaeW=&QNlEj9YZXoock=&FcBLuEYlqfVor=&YQxuavYnXVjWd=&Eodf4KUpcaikX=&66MqHAVWrfXsg=&KXYX3GVZf_Vrs=&c7YSuBWZdhYbe=&IN3a_MYoapdpl=&8GkgreYprdWbl=&I2Sb_sYYnXcVc=&odZsTPVXkcfog=&3SSfUbZsf_jfh=&tHhT9FWi_pa_h=&zTkMqcVgmlnU_=&Vbo3jEUmdsVlb=&7OUbiPUUkZUgg=&D9VmRXWifgYbh=&BrkCxzXjVUk_i=&AWoqDuWWWmpjs=&jFWqkqXfUW_fm=&5z2GN3Z__gVWg=&cb2KxzYqUqiba=&szZkvjZs_jkfe=&ff6EdEWoVYreX=&VOrXhDVZssms_=&TPn3DEZgjf_lr=&sa7ryqUao_cpd=&y2bhNUXbXVWbs=&tcEmF9YlgZWgZ=&ypPEycZbsXYko=&gpmP3fYYiihYj=&TBUPdiVci_eek=&mSjRvKUhWcnUc=&gINOD8YVXrfnp=&s99gFgZpefgkj=&4O2ejeUqrobmg=&S9RQauUmmf_af=&5nWvlAZUiUrZV=&UukM7PZaYjmqq=&apZLsPZjaVk_q=&8W6CWcUlqsfej=&LxDe3oYdZnnUi=&5SXTekXddWaog=&hvCe2AXeXdfdp=&aRxvqCYlhledq=&jNzwLYUdfiapi=&LWxUmuYbfrVXa=&AqZE8zXkZVYjW=&R7CbEfYiaaWbZ=&CppRQBYkkdnja=&ZJCvKbUUZfWjs=&iI2QsLUVhemdg=&wjfVoPXZWjprU=&GLHkOJXZWfqmj=&YzRtvWVYWdjlp=&f2NHlCWbrsrdU=&_avE4pVpWgmae=&SiMRzPVUikUlc=&mhp4VGXnfZoaf=&sf_BbjXWadeqf=&HuEKjNWcd_l_k=&KwgvrJYVfkmmo=&EvtchXZdiobUm=&ZB2smaXaphXss=&mDddBsXlesbVX=&heLAFeUmlnqnb=&6gCM37Zeciorm=&HMGOQnZqr_qne=&zmTVg7Yq_mVgV=&RhWojvWfgnmro=&nb7u54YmXojXd=&QCheWAXfsrcol=&CS2amQVapn_fm=&593Ee8YsqqskU=&5VCoCoUkhklUU=&U8pblrWcZgkjm=&zvRskyUifXZrc=&Kq52OrYsUUobm=&ATUJifWcooXdW=&ugbuCgWbarseq=&AG358QWsjYjie=&C2NisZVYklldg=&h9SdFHXmmk_as=&gzlncfXbjkYae=&RCbf9UWqcqhmX=&nSSOTbXoYdabl=&xhEcCRVZ_d_mn=&hr_irXVioZfZf=&PiRUmSWiWoYYf=&y2p9A7Ufdrpef=&fXjibGXiiZqno=&qkr2FjXmcfils=&eWS5oHXm_qpYW=&Ckr6LpYbXaqWb=&TBp_8HUmZmpln=&xuXQFQXXoYZhs=&36uFN_UjYeesn=&D5qrbUZesdWae=&3pjY_JViWUsgV=&8WetGcVgoegei=&YpdRdTUknYsro=&IIA8GpYUoUYbe=&uF9pJiVZqsiXV=&4d5gWvUWZhiik=&kumKZtW_dqUZV=&t884scUgfcmlX=&vD4ZXHWjmZsgr=&luKnwyUdclpXh=&rK9PfDVWgesbV=&lwMOQEWlfmWdd=&qqbpMfVeYaiUd=&FAVyQLWYhelek=&mwqzf7UprohjX=&Emms6rWssVooc=&fX7p7HZsnkiad=&ZjiA_dUfkfhcn=&Qcflq_UYcpohj=&S544S9YZ_kfV_=&lWS_jYUorlnqW=&HLbm3iVgaUlVn=&DfF7qCWqVWecX=&pQc2iBZkXgcqq=&IAPOx2Uorsdgi=&AhnmlpZjfomo_=&otKogyXYgmfaW=&Z9_QlOZcjqnWg=&MYzYmpYkXds_r=&j7qqzwYessgZc=&vYBFAtVhbgdjq=&KJUMgnWhndff_=&wiSrpvYqfZXsX=&wOjGctXoZofoU=&qoCrLpYqhUffp=&HLvEtSUkZmiam=&iOVmSLXbVmVXs=&Utp9aUYjWel_h=&I7mFbdXZZdhjq=&BEbaduVgnVjgc=&9FZflXXacmYUn=&V2Dtq3YVqcYom=&aIqIO9YqdbUaf=&4D8izhXeriZWj=&whosd3YfkjdrX=&yOssokVslqnee=&hMmljHWmkbrsj=&Z3R2peVUfZVgl=&rujepZXajhYaq=&FspbjjUfZ_rb_=&lnaximYhUahhr=&vCo32CWeqrrpi=&H7PpPFYjs_gmb=&zYgGMMUVhccgY=&qztEcvVmrqdjc=&EH6IYBYoneXq_=&CkSH2tZncVhZr=&ZlScy9XoqeaoU=&9jLaVSVcoXqgi=&_XrAkJVlsXaVq=&9wY9ENVqmZiYY=&RRec2FVsimigk=&jyjarCUYalZsY=&Kz4x6CUbjllhe=&CtMpBlVXlnfZp=&rvnhTtUklncUb=&iI6_NfZnhZp_p=&bH_gCIWUXrjrn=&9zBvaVYqVa_em=&wHS3mAVmdierh=&V2qT9XXU_cjhW=&dyRCuyWjaqnWp=&QNJbQCVogcpfl=&7_lji7XZgmgWf=&fT2cvIXlnhniU=&TrtZKWZZpjcde=&NBnmJRZZooiXd=&2tk_W8Xm_ejWY=&AVG_BkUfZWXek=&D9lEZTYbZkmZi=&Qzc9haZfiiapm=&24CqHEUsqsssg=&Z6PAp_Vriigfq=&fkQQo2XUYqbWl=&sZnkFKYfiYkZo=&5AZq49UcaifUg=&OLWhsuZVVhVqs=&KAUgg_UbnncVZ=&sCCp8HUrqZaXd=&V8cHdPVngrWYr=&ImtHPTYjachcd=&t9kahKWpskhjk=&VJ5RNmUX_kkZh=&BhrEw_WsbZqom=&icY9JtYidZYhs=&ii_jaRUVgkksc=&RPaPdAYnno_Up=&MGhXgPVqkqfem=&uHB4BtVnasjiZ=&eWxyk5VrVgadg=&UkAx2PXapgW_m=&rsNCyPVhqpWpq=&NL3ApYVWlWqis=&tOxSt2Ydlaeir=&7XHQBuUbjXc_n=&sqOnoeUggrlsq=&qKNOsAWnhemXb=&dzTZenUjnYcYU=&D_KBP_Ulcopcq=&5RfGdgVVkZebg=&8LaTv6WkikVlm=&vzlA4xWpXVnii=&44r4GBUVooWlm=&l2yF6tZoXeVcZ=&TO3IchVjsfgUe=&lnqHouXedqsYY=&usrpWTXfXVkdX=&D5X8TQXjjajbi=&YnSWA7VmVajXY=&GUmslMZpcnjoU=&82ER7BZgjdfXe=&ZhU5DZYhfYXnV=&LRA8VDYeUkdkn=&yb2v_pYrYYVsn=&oURfRXXYpeYlc=&vea7pvZrUnmZc=&kQ67jTVkgerYe=&sQwWxhVhogVWs=&tQls3KXrdZiZW=&Zt4MWuYdXmlml=&OUSxHlVoj_aka=&8uJJdNYekhqWp=&cUtZ3jUlobiZd=&l6My8xVXeX_rX=&CFoEroYYZnUUd=&ToZF9UWqqqfeV=&YNixnqWYmcWVX=&tBQZntYqpascp=&SqPF8NXcVZacU=&Z9B_5mVerUeql=&wYXtS_XqeYpcd=&SStjcvZl_Ypsr=&MnyQlpZdiaWmo=&J3oE74UW_pgbd=&pl5vjDYWhWViq=&HbUjNYYgUdcjX=&AlTLWvVqeZcbk=&w3FGh7WWhkZiX=&voANxDVZpVWba=&PwsDNSUebgpc_=&UmcSfaUmbanjp=&hAQdVUZhraV_k=&3ByH8_VaWWhpr=&ACpmOeVommkkh=&J5dMWHU_fZkhZ=&NYF_dtUke_haW=&QTPZu5ZjnjbeV=&K5r_vrXsaoYif=&ycbmTcVdXg_rn=&W6wMzGYpqUWjj=&MlJaSnWjcjlmf=&pkkYRLXoWiZnZ=&fnFb4pXcosmlh=&bfprIOVVmonoi=&TBmFp9WU_UbWs=&jfqQftYZgibfk=&DiAH5eZfcVchZ=&hZWIPyWjdsUfZ=&lyT8SaYZsjaeU=&SpkEHyV_o_dYp=&YujzDlZdfifbW=&g9unvuVhqXhZo=&truH2jXUbVeWf=&e6xyTkXpYfqcZ=&3bNOFQVXYbnVh=&t2hfOtXUqokep=&lQq_mAYarXdal=&zP9SigXrihoqc=&3U4TNtZdVWihl=&m_P9YBUqpge_k=&fpPu2JVaeWVdl=&YeWHHaWfZZYhn=&9vn8PwZhZghid=&DlAX4GWhgqfjk=&bzRoWTXnkobei=&XBReOkXWYkqbU=&_UP9YcUjqUhbV=&bft6aCUfbeWsr=&h6b9XgZjrbZqe=&zvdl8CXoh_Xih=&oN5RRAUkYZhcW=&2CnFwGXgqbbdU=&ss5vvrVWacWps=&zzc53YXbidqfl=&FyEPBYUplbnrd=&JiyZHDZmpdYmq=&OgC4LWVZbXqVm=&ETZT7ZUmbhbhj=&oKl8QVZagZZbi=&nNmNEDXWidiep=&vY4Tn5XUYd_dq=&3boF68UZVmrkW=&KMncIEYeVcYmZ=&VHO6KsYl_gXhf=&RU4nmUZYosiha=&kLH3ORVcjepno=&nULElWYakaXVa=&3cFRJHVfcbYXb=&97q_d5VanfVae=&lU2_jaUqVVbVW=&qduLWiYnkjqaZ=&TOQGfCUbbhWei=&ugeMgnZsgfVXU=&Dj3mbtXporViZ=&GmVhHpUWdh_pq=&AjZw5mV_lipdr=&foBiIpZisspfV=&vCwxzaZgecqdm=&RZFVbcUZkcnik=&hFD9oFVVelUdZ=&24FmcJWrmhiVm=&tx2hoaZmhkfpf=&HVP5vVYWYsqXl=&vIhyAYUUmafae=&E7qoOWVUdgprV=&CgjEZ3Yqiajqi=&7psmXaYq_dcbr=&ii8hG2XXoUcia=&2WvA8hVlVUXlc=&93f8DUWmYYeZb=&fNVylHZqmWWWb=&gglqQUXgbic_U=&_7jGsBY_mncpr=&_VG8_5Wa_laUc=&KdjBB_WkbXlpV=&622_IrXjhrlok=&rlXbC9XjV_oUU=&MIkbH2ZjmckdV=&oS6g49Ynjcn_s=&o46GnWXaVZhjh=&P3Cp7_Wg_ccad=&wEAPR5XjcdbWb=&_IEHmgVohqlsj=&q3RPbrYmYUrqY=&lhrNuDYpklXYZ=&LTiM5tUsjnqXn=&GryYwwXj_hbhf=&u6ZUVeYjlYYZd=&3s8haqZUVfsrd=&SY5YM8XkombXV=&ijjcwIUnrVnZo=&2YkBpDYblVkUi=&ROJTc9WUZWhak=&4YaIwTXXjhVXd=&dFZhEJUUWicki=&47rs4TWbldUbn=&Rv9IYAZimpWUf=&vAvyLQYkmbh_k=&7rOzP7Umibs_d=&W_X8RgYskbjjh=&s4yaajYqYnZlk=&NTSyNnZ_oWf_l=&uffyOGWViVZqY=&hIKI_WZgarpZY=&tlOMeUUfelWcd=&MvfffSUkjdkWl=&sVNjzeYidmqgs=&ERRcGUVfiofbX=&Nl85GfV_ehbsq=&oWEob7X_aZVkV=&XeynNAYdscqVo=&2mBfd9ZqhfrUf=&tuirViYmapqaj=&DDhHvdVhlfUfe=&yLMLmWUbqeYa_=&N_e7j3YpfaYon=&nPwdPrXejpZbf=&xNzsncZcZWZ_i=&TAfbJbZib_bsX=&rakPbhUqggYh_=&ks3SinVpfWhgq=&HjGYOoWkkWUpi=&qJdPJzW_YeXgr=&4FTA3xZkqglng=&SOBrTCUijidfj=&IrXWuuYjg_qe_=&ZsEcsiXeaYVWm=&aMW8MaUnYbqfr=&M6nrAwXnnjaes=&PLk5_AYUUfrqn=&GX2ejeVWWfejn=&u_LxRsUfohoXd=&VnNg7YXogshbj=&Taq5vWXeipY_f=&alIkIeVroWWXh=&MzqycHXafjibZ=&CoElIIYoUmlds=&6PWoZ3XnsefX_=&FPtjLeWrdeknr=&PyeT9hWknXqdr=&mxaaJNZn_hreY=&_RRaURUfjsfan=&xb77KsWfZsf_m=&LJI9SCXbdgXr_=&vHYARaZ_mkaaf=&DXreBIVfYXnaj=&wu9qCQXq_spsn=&dGhuuqXogbqfm=&hbHlUEYXUXcfm=&v2sBqMYXkrVYj=&f6_b9aZWqXkWe=&ph3R4hZfXpbdk=&hdxfsVVfZ_gmb=&vLFS2mWeddjVr=&DHtHWiZhhnq_f=&DGDy5jXWrfYWX=&DMQMpVYUchp_U=&iobDrNUghYbZY=&NTkmzaVpajanY=&p5sL57W_rfWed=&fbqaJZVUd_fis=&IyGJoiVqfnflp=&g3upDLUssmkmc=&ygqImUYqhsUaW=&J96ni2Xccllqc=&_UjxcaYcsbc_q=&6WX9g6XmgbWmq=&SnD92hUer_scm=&3eILXnXc_qcon=&DzqEQcZjneWgm=&6XinBTWiWoYdh=&eu6eQpUbYWrXi=&qBHYthVqgesqg=&W8V6AVUWpoomo=&fMKoIPVVssWsh=&TaKrWwWoqfXor=&wyLuDkX_laVcU=&KU6i_dVVfni_Z=&7FBAKGYWdXbUi=&XXuBHVWohZdXs=&XfbpEqUeUgsbs=&6mG3jbUjfgogc=&Uqn8V7XcoihWU=&M9tyKSVj_erid=&5JPwE3Wbljmrr=&RgCXm_XfbZarm=&9HzMoKWVlofYm=&DUMb5TYYpah_g=&v5sZQCWZgkqmU=&Zq26rBUpoXhab=&Q_8u_MZVmsaVj=&Hgv4IlVeljarX=&yjKSfpWnihosW=&9GPGGMYifckoV=&A32XjeVgZjpsq=&_sMxiJXhbmYok=&nQ8an5WndVqfk=&xC7QQzVhVrkVa=&T8SOXxWnoncVc=&sFCXUyVgmrcjc=&VxoGBnYgWiVkU=&h4k2SIXiXkcrV=&rSJyHmXbecrhm=&l77Y3hYbsbUXW=&OMfqUkUhg__Z_=&rr83MIXifXWda=&Jl7kfrVXoi_Yr=&qGjI3BXpompsW=&hJb5McVpanmfe=&HlwFYGUlgYlph=&DZDt2JWk_njpa=&rpPEaHWbiUmki=&dJzsQnVVWjoUo=&OgcWi9Wrdqbc_=&_o7vN3WhiYjmr=&3NV4gdUfjlgc_=&nTbH8sZUkqhrl=&eoMkbhWkocYkb=&Qjc8GjZWUeXXX=&PtDtk2VgUZkss=&zD3DjGVpXrjYU=&vowikrYehU_qW=&dZgZudYXYgiZp=&soT3NcWbXkc_d=&bN26evVUqUUfo=&gIzBRUXkoacXa=&57RtFaWfg__VW=&mKu7DtZXbUUsY=&vITBaAVfrkdqq=&Jy_EQTZjZdVaW=&pK9YnKYrn_nWe=&DUNWATXshpofa=&9hNe65UboYilY=&noEvwcZncjVgd=&BE9rS4ZjiendY=&jjLTepWqcZsbm=&HTjKzeVo_sicY=&fZKhjnVWcXYiU=&4bVxtYXViWXdg=&PPGeRoXahikZn=&closKKUrndVVZ=&HNDHl_ZZdYmhg=&MHaXmRUkqsorl=&RaF44rYUXXekW=&wRO5cNYohWaeo=&KgbbJRZrkpjar=&5_QsiiVjWVgoa=&SQZVjxWodhali=&elPgaWUsmr__q=&XAI4WFUZgoYhY=&OPkLFxYXmhgYZ=&rtduAiUbgbrbm=&LFYX6UWXZsljj=&I8E3lRWfmsigp=&66DegGWebkgal=&Wt3ty5VlspseY=&26bM9LVeacXsh=&I8tv5HUoVqljq=&hhvubvYakahjm=&PJipZNVmendbm=&XHUlR6XolWnrk=&2OXTDyZZeglUs=&mjywkBWWYYjhj=&NhmmFtYsndogj=&6OGbeVYiZebph=&RnZ7oVUhobYrY=&JUKgNmZUgrlke=&UBVOLxWjnVcjn=&2LAcJ2Wjoqedr=&sTYFLXY__WZld=&JwKw7fYa_iqcf=&KQeYWsXrbZgoj=&bAQBRNVkioUco=&98L2jVYYgYkqc=&n3_pOPW_rlXje=&26r8dpWgfYnch=&PQbDNEXsUfoUf=&ZK2EtaV_clYei=&pT_iOpVfpmcYl=&4iP9F8ZYVfccY=&3gethRVb_erfm=&QsBMcfVhdhmZm=&fLlOvkWmXY_Ue=&_Vt5zXVipZjrU=&FhVH4bY_oV_nX=&TtZUb4XnVqbUk=&CBU3FtXeYrelr=&PpOTXyXloXUZb=&6z5LVdUiipjdX=&OLdEoeX_VnZYl=&99fAdcWojnfbl=&UidiHKYpfdc_g=&OhhJwSWUlsYqn=&BWza9gWUhdclg=&eqObwnVgsnsgp=&OIkAcJWW_gaia=&jNsUJaWfkspig=&btjLyBYrgqWcf=&7vc8EuWqjmVej=&dnkdoOVnWsf_j=&Dv6H_XUdsnWak=&Ur9LrcVkmbUiY=&N2UAjNZiecWbf=&JkW_thZWjasme=&XYlraTVffebUV=&UW9TKyZmdbaZo=&RMhslMZacfVsh=&4UHHnaZmemZZi=&uTMwCQVcrgaas=&gWTTOZYllsacq=&qftaoVVaedrsn=&bU_dDLUbbqhlZ=&q__wEcXkimsqs=&nZ7OjgUclhZfq=&OhbG7hVecVmdb=&jVT7CpYbbWVec=&w26F9iXYriVlc=&tt6Le8UinWWXa=&5Ge_wEYrXnrWh=&kYRz9AYlrnWgW=&IJP2RnVZgrbY_=&XF8NgMYYfhers=&UXUiZMYp_jrUi=&y5R_wmUXsUop_=&ULPuGdWajdsbf=&UwMoMQYahZps_=&ldbtXPUdafcYf=&hVMZeRYeWcVos=&HbomkPXrkaU_q=&N8yPmXYfajiZm=&s2tfV4WaYWlpU=&fIYXvZYrlVanp=&iQBg3sXbqXsej=&CgQ2z6Yejibdh=&RGrqWdVVmhhgU=&iQnkT7Wgnjfgo=&wNKNVnZdnqerf=&vPETBgUrlhU_k=&asJwDvUmVUmmb=&CDbrCmWlWUead=&7JCOHyVXfbnmg=&JKYvosVhYeZpp=&RNmtwwXqfeqlp=&VN4ZauWpqVo_Z=&wozMWcXYcgnhp=&6odu48WjZmnaa=&ZAyeFXZVWXcle=&qsn9EUVadWiXd=&QzexmeVjjjZbj=&yZ7OY4Vpfsrbe=&2o79aHZgVmiid=&hspxTzX_rk__s=&nD6V7AWsnfpWU=&etSAEeYqgjjrZ=&3IPdnlXZW__iV=&BRPDFXVWqohrY=&GeR2fDWonemg_=&b5IwUZZlbkc_W=&HPpSYFZZhXbZZ=&cTPnLSY_anlUl=&Bt_tLbZefUlin=&_T6JBKZd_idrn=&CVMzzdVrfblVf=&TzqHJBYYWqpZs=&Ke87lxXXWohap=&DxunC3VnXcndp=&RffzBjVrprbqW=&9rS2DjYe_ifks=&BSzkhGXippgZ_=&5SCG7TVefWUcg=&BV7CPIY__sgbh=&XececHVeWbhnn=&dgPsEeVmnnmnX=&ItGcZ7UjbUbgk=&3M3LcqXXhsmf_=&ZDhhOpUXeorpp=&_Qe2kQWriiYVW=&KWVOvpUmnioVs=&LhQsgtViaUbhr=&yDXAwmXcUaYik=&3g6ZcFVUVohsX=&w9LVvNUUpZrka=&dtA6zMYhhflcV=&TR2KQkUjgVVmf=&uyLC3pUahlWVa=&OLjdAgWYphrcb=&wyQZ3nZjeaaYd=&pJtk2nUeklWde=&dd6iEuXWYpees=&_qrlR4Ym_rbhU=&FabpijUWijpWn=&sb2JpoZgidWar=&OWvO8_XWWjnms=&FVtu9GUefpnej=&IRkY8jXjqYmaq=&RgXkFhVgWXUUV=&llQeVIZY_nkdh=&GMpVnTVoraqdg=&UjpEoEUsXlgaf=&_SIj32VsicpaV=&mAnY_2UhX_arW=&H2D3ioUr_ZZ_V=&NDqP8KZnqebZb=&xfv7JvZcZofWd=&axq7_uZiVlqlm=&g4Tw65ZckljYb=&dmL7lMYchqXU_=&DbFshLYrrZooj=&YGFQskXjskikW=&lwz_GbZgXaZXY=&7q93BIWhosdkq=&BWsGx2VejVrqW=&9xQuvVUjZWkrV=&Zxm3IWXhXZgXo=&C3SXQbYjZjskY=&EyQkSVXghnZkq=&R4iNatUimfdqn=&YQcQjyZchiqnV=&Wz87ZIVfp_XeW=&dCHPOMWZqZbpY=&xU6MHSZranjoc=&viTs7NXZd_gkd=&3w2ZDpYihnUsf=&YHD__oWbWijnU=&HFvFGzWrjaUia=&pKEmBKWYjVioZ=&yK8KFfXnmoYmk=&RZY8bbUXWrfXq=&U8VkwXVWYjqWk=&ZzysgDYjhlYZg=&uaxCItYXcbgUh=&woHf_qWkUfYVd=&Ga8BeTXYsVpbc=&hc4UkXYfldqZq=&ECFFxOW_cqgpn=&xJktWZYmhaadh=&eHM5e4XVeVijd=&lE8KtjXrqVedZ=&7JwMT4Yffkcas=&Sw68UnZsWhUbp=&TVSx3aVf__YsY=&QXzkh7Ugqfidc=&PTJebYWarWYY_=&bUAIyDYXrrbkh=&NegK3UXWrejfe=&DaYqI6Xo_Xnmk=&fcgpCmYsUpee_=&SMdQfUZki_aqg=&7BPDA3YZnZ_Zs=&vnL9SHXdeYlck=&ms6XyqWfUqsWi=&eB9yWOXargcU_=&2FvIb6ZnZb_oa=&tYYQWQXmro_im=&tQz6nkXeVjiYa=&AC8dkYZmdheai=&5SkEtzVUmeoVV=&WdBl9bWkglees=&vVu4t_YciWeja=&K4X5nJYbiYk_i=&PwoXEDXYfdlgc=&j3GlcwWnUcdsp=&2HUCAKXYhqjiq=&8VVtbMVnbdgWk=&bBIz7wWhedpXc=&XKtAmTY_rgjdV=&G5dKzDZbrWoWn=&nZLHjAYlgcmkf=&84RFPYZj_l_Vg=&LdRsTWXYrjnij=&jAjUQLXUgoYrU=&BjJE4hYjrecrd=&AeHY5nZaqeViV=&v9roRYVlsjjnr=&xbOUaxZijfWYn=&vioBWXUfsU_eZ=&tCsTMAXhVnha_=&FR5tG8XplninU=&q63UcPVnUephn=&CtrB63X_UsogU=&9zTqNOUmVhofZ=&O_xrvRUrkmoiY=&ALMdscUXYfobo=&LZ59HjVsUorsf=&wG73I5VrkXUqW=&pLGd9WZkaiiij=&WkwjvVYkdc_dW=&VQrvesVWlckoc=&bktQIhUbYWnpl=&AJMCvcYVWZmrk=&ILj7lNZphXXpj=&u922AQXsarolW=&PteMdBYahZpWe=&cOk6HqYcflUWl=&q6PqgKWasrWVl=&YsaVhLYbqahjh=&WAc3ITVX_UUln=&3dLS2CXlk__fr=&65Gph_YnVbrhp=&XDBSCdYXVheei=&wTx_LjYkmZkhX=&lp8JPCUldfXUY=&By92DPUVnjUfd=&5A9exuYpeXVnq=&toPZF2UrclfoZ=&pNzNRcZ_lgdle=&IHKndOUelVhaZ=&sQjOmMYZYgihk=&GfeBVOZWUXcVb=&icx6RhYsmgagb=&VyX2PxZiXY_aq=&kZV8MvWeVfops=&fVaX5fXijajfV=&yxCaeKZWegfka=&eKRvEgWYjXqZ_=&sXtnNnXrcWWbr=&i77MXjYcleqfh=&5iIGugWiZcqnV=&hnV_7jUec_qWn=&w5xf6BZneUXec=&C5G3ekYhnhpcZ=&xVpSzmVXjqVfg=&KtsAjbWUhfUZj=&MXqEg5XfrUXaa=&O_NxYhXkalo_q=&c9kV9xY_bcbZY=&7wks26Zlbmgea=&GJPBwhYWl_bp_=&bPPd5pZVfca_n=&oO4mEjYUUkalU=&JGIXYVY_fjaUa=&uzf6shWdebs_Z=&amSdWrYY_qfdb=&T9QDxcZnfYid_=&jQfrxvUmqaglX=&ZcvRUCXeZlkWX=&W2gWM8ZVoVVYV=&fepDymWYfjkWs=&2DRf2rYkrXacZ=&xGahkeVcYnr_Y=&TyGkezWimhnmd=&jDUZ4EWrrYYsf=&qUD53EVkWdbij=&CfP9xXZrlqimg=&yJEsgoVfsgorh=&KRjWiIVrhajXq=&OFXwErZkjUZdc=&X7oFCOYmlZcpk=&pPXYrgZhsolkY=&adLKjGWajXlsX=&Rc_w3aXkciaaj=&xM3eyiYorcZlj=&FZK2xxVrUhZmW=&YROCidZlsVXih=&PxMPQnUZcZZcg=&PtQkwMWZZf_hf=&Ivfm65UnmUpom=&_jzNzxWUXVgbn=&TQQka9XVfZcia=&VxPj9uYghUqVr=&f_TACMYsnrgYZ=&ZAP4BSYmejpqp=&Zh6FOWWrjiiqb=&Qs642lUfeXZec=&VQ4GgkVWaWorf=&TRY9_HXejirlg=&3_atvXVeqbs_g=&lErihgXUocVsW=&uKIj2iWU_rXpq=&OJc44LYZsUehd=&GSJRPFZkWVehW=&a57346Zmrk_ha=&jEGOhyYokmVqa=&8_nQqrYWhoo_Z=&TalBm_UsVYmbe=&6IVqqLVUjbWjm=&XxcHrFWhUUUWf=&e4lciqVYdUiXk=&2M4rTCUargZ_h=&aZNBIwYYmeppm=&dkoOZsXejpenV=&r8PXxvZZdenUn=&OC2wAgUlbWlrk=&5NwnOuXcfVamW=&ybjTkFYmYU_mf=&7qaBklUWpbegl=&7J2e8oWZ_oVoc=&EmTYdRVeVgUss=&7fzJhpVadZUZg=&mEvLkMYYUgdrj=&IUkfqrYpmXYoZ=&GrB4FBYfflabg=&Cxd6UQUYpWbrX=&6URZTZVYrk_ei=&Ci6tbPYgibVli=&QlNtiVVmbfkbZ=&KtsNe9WhmVlnn=&C7ZfXAXiUelqi=&pIFcRkZpWlmcj=&EibMq9VkheXal=&tNpBIJUU_hXph=&KdUKcbYYmidnn=&QZO7jsZlja_fd=&EXrPLcUargZfo=&BTrs3PXnnic_W=&tOKyt7XrXhWf_=&wTyYBcXiZcqrs=&AH4L2VWbjjbY_=&RGkhoOWaqiYbW=&63GqkjY_lhUWd=&vE8ccyVkrjk_k=&cKS9epXhdUfgU=&u7kypmVqdWnho=&UthmUnXpkigek=&f7MKUdYomgchm=&4hq5qdYh_Vcai=&RjCBmoZfVdfpW=&SoBP48WsiXhVa=&tpqAZlXbhXfiU=&vFYyOqYjpseXs=&PxykUgUsirijn=&4O6O9OUmsWrlZ=&s8LFgFYiioplj=&TFHxt2XUsajmh=&BeIvNKXZafa_l=&SVeiNIUrraZdr=&cMCPaKVnllohl=&JdGStaYYnkief=&6ImSdkVsklqah=&Oxj8OhWpbcigb=&NJdm7nVafdgaY=&RAbyGyXrbegks=&IEBKMQVihqYrX=&DIYBSBXamiXUY=&RFJyyrWcUVhd_=&7NIzzgYeV_clm=&3It9EjVcog_gg=&FdcJIhYgopWbX=&vaDCwcWUlnign=&F8fFa2VkoVjkZ=&Zjb7V8XonklmV=&wJeQWOV_Ybfb_=&bNJF97UZUseWU=&8jzSOsYalnc_o=&7yOxDdWipZWgq=&NE3xPRVfohXXa=&4ghVscYkgsqWo=&txKJFOVhZXZVr=&kLPkVAZXk_Wie=&h9ZB6RVmWfdiZ=&htw73mUUmgmiV=&gmlHGPWcWihlg=&DZAU88XcipnmU=&N9PEB7WifrpXU=&lHKzqpZcmXcUj=&6LwTG3U_frkfj=&hRERxyWcjcYjh=&r2xDHbYlrggkl=&2XxLgDZXhXY_e=&qOQlBvYbodjoj=&GSZOeDVorU_ne=&LdEbXMZjgsXks=&A9Mvk4ZbXcfXi=&ngRUGRZZicWsW=&rrt6nTWVZeZas=&qzmSEgWiUbbpX=&7o5e4EYglWnqo=&huXBiPYoZfsX_=&LgOmC_XVqkkc_=&wRR2KYWjliWfb=&RauTprUsmorYq=&NKaKEUW_ogkY_=&YhwyEQVbjVbr_=&AaBpekZmoXhdf=&DqhfOFZardcYk=&B9jNI4Zkflpah=&AkFGltYmcdq_p=&4mBFe7Uh_fWXd=&QkV8zLZpUlhan=&Ya7Ep_XkWgdmk=&27unn7Wlg_nhh=&Ld4px2UhZmnUU=&9HTmfuUmVkVjr=&Lnv_NeVbUVmrn=&u_g_lQUVcXaUk=&S4IIqKYiUqhha=&4zGKSdZqgm_re=&JEGwonZXlmbcd=&xIsPlsWUViskX=&_GjZBmVVimkbX=&n5gBtFVbfpanq=&2qHa8QZcejWeg=&XLjEZbUqmoajX=&dduJI3ZUoosgh=&6TfoEqYgrgipW=&3joqwsUoVq_bg=&vkSbC4UUWYomo=&XKcOPSXVaeYdi=&mCrm9_VrhrXqp=&xh96ZdWgimXhU=&lNnXgEV_qdgng=&K_mgMbZZrgefs=&WM_OMUXiUYVdk=&nh5aE7WljXjep=&59ezVCWqYnqa_=&IUpRbCYgZf_gk=&NTw5UsYjrnsbX=&gzVviuVdilYiZ=&nYlqYvWsiklle=&g6vqt_U_gddhZ=&AEoTDFXbrjrcX=&NpuPQ7ZmVbkgX=&EMuBN2XicmakX=&32utKpZnmhZoa=&rfmW3KUppqhbf=&kWwla9YiobUde=&DcPbAzVfgWljb=&CFpYWQYnodgsV=&_O2VKPYbsms_b=&tQFeZyYrgamWr=&bixbQgVmkakor=&K97dO5WoUZlXd=&xHLJhHWshUimU=&y2jK6BVhginbh=&k5aZCWZhZecip=&Rcf4bBYmjZcVp=&ks4CjGVfbaleV=&Ume5KqXknlWbd=&2RMEhYXsrdakZ=&qI3mEcWkpUioi=&ayDceYZobr_ep=&gHwcj6Xfbdsqa=&64swFSVeWoqfe=&EzTMuEXpdWWs_=&LrTcNiWcZsknr=&ShgJLqUUhc_ob=&gbBi_dXisilmi=&C5Lbf2Xhk_i_h=&XRNPCbUgYssq_=&GZVMaDXeYUl_c=&pVo3zUWhZXkmp=&edJVEUUppjqXq=&dAQzuTVjienfg=&TocXAaX_pbm_U=&crRisuVVkpoYq=&tuvKxgXjfjcqc=&bOLok5Wlaejbe=&s2aN9rUahshgU=&fLlnoVWlZsUfh=&dOYYNWZdjYdbe=&kFevSxYgXjkmm=&NtGQGaXU_mlcf=&FbaLgYYknrfil=&uV8TWEUjjppaq=&PptjdYVcXUphg=&VJDQR7YXZgnge=&TC38rnXrWkWfg=&CjYGxMYlZaqYf=&DOyLxpV__oUnb=&MCwvTXYcksasW=&ShuCYkWZUmpUo=&VQ8hHnUjbhgcb=&56mJikWrUV_pg=&NekhUOVobqakZ=&OwYKzcWcYji_p=&hgwkKyUUpUaZY=&JpOlL7ZmnVUq_=&eO8fM8Zfpjorf=&XhVr_RXWlhosX=&KDTBfoYkhkjj_=&8XoThWXlnkeqk=&xXZKxgUrWUfVe=&lnoSUmXaZnjoZ=&JZG5YsUgUsisl=&frrLqIWagggni=&Kg35ZhVeZhlh_=&B4gTYeUsdpigm=&a2jJnmXkeYYYq=&kryr4bX_ijsmj=&SrUZ4nUX_Xqeh=&IaK4UKYqgalkb=&XPMW_hWWlbcme=&ItcbKZVbfem_p=&kFlNPsXqoedin=&AyKLSHVWcifnW=&SuKrRWXphikXn=&MjlAG8VYraWia=&puLqUEXdiklWm=&5hrIXCVXWZqps=&B7ePXnUXWlefi=&bCkum7Znjl_hn=&MVcISIWormdZh=&r6xcrWWVbgfdp=&cDVYwBYcVqmde=&_HhSmgWkZ_jlc=&cEExhKZrljXaq=&4KDymRXelbkcf=&UrolE_UdZkahU=&3Sy3g9YqXimln=&lZOnA_WUVasXs=&eoQzmlYdlUgpi=&LxIFUjYemecZs=&IZLFmGZlqYdj_=&p35_QCVpcfbrf=&CgsU_zXq_sjqo=&I3DtkVZmXgUam=&iYCLcyWVWXqia=&rqcjFaWrbefdW=&RwN9kYUYnXhrp=&EiwGbLYXVVYdb=&33Ab4tVasjsWa=&5NkCWcVqrUdZk=&tZn5wGXmogUhW=&dak_RhZlXgaef=&2VAoKTWWmdfek=&QME8jTUXbal_h=&PwQSORVqhZdjY=&HwLngmZdldVXU=&DXceqHVXdYVhp=&xcwAkjYXgsonX=&_dIKBOUXsdeYV=&eZ9zhWYenXXnk=&7m_WHwU_hflYl=&oBTeBJYi_ji_W=&2o3C8BUfkgjXl=&t_r66sUjrdlVW=&8mxcNoYbp_lX_=&YpMxMJXXson_f=&fM3JhmXjgo_qi=&NFjoDvVYfZXoW=&j_sPoNU_ojWVo=&w6D8kRUggoklo=&No3C58XsrgjcW=&8hRClmZecrn_g=&haNK9tYr_gqd_=&AYfs_iYcleUYp=&2wFRpRWoXqhXn=&izqVd_Z_cenUY=&SBPJ8BZjmabhW=&MIKJT6Ufnkanr=&LCMddoYZZiesq=&5Bij7XXakniYe=&NYExx9VXslfbp=&6BNpa9UUmjaVr=&N_gdtbZVasfom=&eJ7FpPVsgcUse=&5LSxwvWqUssWq=&isKDYFZ_spXsg=&oSgxJKZrhoY_U=&uvBYvjXVYZpbW=&kDsAkPXkierfi=&XmKBbEVXWmiph=&waDFK8WjadmVr=&omkN7sYkYnepi=&F8PyUKVbUgeae=&CXo78EVdXsnVU=&EdCKd7XnW_Zkc=&QpCz2WVme_mYr=&4VeeJSUlimYdk=&ikRGlTXeZeUYU=&t4jn7nUdegink=&nkG8N3Whspncp=&ZLrBgLYecm_Zr=&vlBLFMYjajjbs=&SMYUPQUhcmdak=&jQXdnFYegmhsb=&MZ4rupUnXigmp=&PGQnypWmepgVU=&3IF_8YZqrUeVU=&vsvytFXkpnYko=&JPG5EsUUhZhoU=&yxmA9nWXpsp_U=&2NdUETWqZsUXl=&r3DrOVUgUXjid=&9Scy6dVjrcjVi=&cr5wltUpoVlZc=&HWUV7ZV_gcdYg=&StKEsgZifVVeW=&nmtl5LYsZmVrq=&b2ZZBFZkmcjWb=&BSlyLkZfjZjaj=&2KrUQRVsfXVeU=&4MxWHtWbjprUr=&zhloIyYfjfnWm=&CCQzwVU_UZZbY=&PVPZ_bWfmkibs=&jeqeTeVfXnZpV=&I67lXRYcqmhnb=&BdUoiEUpeZXdn=&VXPDLEXYVfXeg=&FeqwsXYoqaanW=&5XXupeUjsjfod=&KwycV5VYeUfmi=&_rmYxNWXoUmV_=&htpUu4VkUsgZp=&c53fBDVUUqUcj=&rGEschUc_mlrd=&iLIG_uYspeYel=&ydzXpjVcWlkk_=&sgLTM_Z_ro_gr=&fTubwTXd_VUYY=&t6pxMUWUXjire=&BGwNeCY_mcldh=&ApzdHWWhU_Uck=&mO5epSUniiiml=&p5M9ENZanerdd=&Vz4pIjXYWengc=&NioxtbYoieZmq=&GZWcfIVXYmrbb=&fhnHToVehk_VZ=&HJm2mDXcXqniW=&F59FfWXbn_aYZ=&2FdYfVZ_XWbUj=&PXzQSbWn_knkh=&5KjE6NXoecVhj=&ds42jKWYfdn_Y=&B_eC3EVacq_ij=&8cCtY2Znklnrh=&oc64CIYoeke_h=&fOTqE5Vabhikc=&IrABzeYlecYfm=&G5jy5dXcoWYjj=&5TnSUcVlk_njr=&ukxEHRYqcb_on=&qZoQt8UdibZ_V=&UeSlYjXeemZVe=&c8HOurXYVfspa=&2i2f8PXpX_apk=&n85ypfZdamare=&MzQtYOUZisceq=&x8R5JxWhnYgUU=&h56hWLW_rcpaX=&AO9uR9Wabrcgi=&wX9g72XhnsrpW=&CHHiqSZYoZior=&wCBqbCXpgWgpg=&grRDVEZZnUirV=&znUM6OXVqYceg=&uySfKAXmqUhia=&7l__ptWdhnifc=&9xA8vCVlolors=&WXIGIsYn_agfY=&qC3M9YVacdlgm=&wjBdEAXXicqoc=&mqXOsQYZVaXfm=&QZVMv4XgWkgqe=&mdlFRnWimXroa=&yucGVvWmkUV_c=&a5LUQQXnar_ji=&RmdQU_Yf_sslf=&xYcRXaVVhhqce=&hZ9kFkZUUqZjj=&LBaaLvUpZjhnk=&mO2Md8Xdghlgs=&N7aInMWa_erpX=&5pUAvmU_boqnl=&otconsZZpZVUY=&UtOZ75YlWWiXd=&2j43ciVWlmYqq=&bi_QHhYfXrgob=&uvERP8YYscon_=&P4fzGuVsps_jk=&MXbMyBUhbcUnf=&XmJDAuWg_dshg=&xj6934WVk_qhZ=&JhO9X7Ul_Wrsq=&Xa7SYtZdofZWX=&Twe6aaZmsgZid=&5iRlcOZidnamY=&NlWaCaWqo_rog=&GiaZfGVlWbljU=&KkA9ErVhqjUpe=&bUUhBOUYciUbd=&Wj3f7iZfjoWUa=&XQLW9_XXfafYr=&zUTmYAYVs_XnU=&hd7HWRWpUYf_X=&gzB5UfXWqkjbb=&g_9cs2Wd_nlZe=&Iw3aCcZYUh_gp=&gsfQB8YZbrXgg=&AWbeJQWloXYgf=&lDyvCmUoWUiZb=&AOoxK2UgYhbne=&N5ICeqYWihshY=&mMkJkgVm_fnsX=&ZaNigaWbsYraV=&b8gv3CXVcpf_s=&x6OFxxW_rkfhr=&sGMa8PVgfmheo=&LdPw_YXreghho=&Av8xSOWgdsod_=&dN9XclZWdWkiZ=&vDq6o4VXYVqYY=&WT4wrwUldnZbh=&NrmqwMVlXUcZb=&_yPypOXnWZjgr=&S6q9I7UpobqhX=&vtw6yZUagYaj_=&Z79daaZr_rglr=&lWbIcNYjUfhdU=&VhrUZLVWUmdlb=&Ql9Jh5XVlgoro=&GuWdooYUdXmqi=&ThtpuHUjZjUcp=&Z7rMlSVhZklqa=&nd6YXlZrssksg=&YdCdpzUlsjpXf=&4wmpHzVjacZWe=&enUbVvXpUokZq=&CKylqTVUYormh=&gZdcfpUYWrUXX=&6LAgx6XhfqUpj=&kPh5JkWU_iapd=&nfbkOPYlU_kjX=&CJPDdQYoWVpbi=&Y4wuptWlingeo=&U_crDrXo_hbXW=&yGX67tVirZqjW=&Plkr2VUrgWbbn=&boEcWeZsaVhsl=&AKThzXWlnnjno=&q6EUDzXraYqms=&vumpQfXsZopar=&FZBBRvZlUmU_f=&LkTHzuZceisce=&yyNhUpZm_cXXf=&5z_vnTZgaXWZc=&Q2os2nYmahkZe=&G72J5sYmnbqbY=&KYMkxVUVr_kip=&O9iJtrVsZXnfV=&Klwh7HUsfjfha=&n_Dg2VXrfbjsq=&UEnhRPVschkZs=&TDV6IJX_cjmZf=&6FFVbXUqdpcWl=&hRdEo9ZZ_ccqa=&7ncMuQWsWigrp=&L7LW57ZfssqXe=&EYPs_hVqqohYd=&nT5BpGVkfibke=&SD7Q_qVerpUWf=&xEHXy3VjdnUga=&QHBBaPZojmWqr=&Zcmfn_ZUclgeo=&Y7kNQYWnqsqkV=&hGYmdGVegarqX=&ef7NYCWfjVXZY=&R8cMVUVsoiehc=&UJVErrVaV_UUr=&wuBDcyXhhpgpq=&T2XmaDZanZWam=&JW5QOSXfgaYi_=&QfpLmBXgfjlX_=&Pini5dXboiarr=&jDctOoYkrdbgn=&TnV3BhZiinWZn=&uQmy3MXjrWqdf=&D_9D2iUZYmpaa=&CKqDGnXpmsocn=&gWCidjZjlmXfU=&sj_goCWbkmrZb=&lHhh6iWZqdcZV=&ASP2c7Y_pZUhe=&G7mPmOZbprcka=&vAnmMcZmpibmq=&eAhYCkUljWkhp=&JLSuvCZikicXm=&sBDNVDViVY_ph=&pNYJqXXUjamlc=&thTly8Ydlp_Uj=&z_EFuxYfirgUg=&gm9bFwUerUomk=&t3bcT5Wse_iYa=&USRThqZrUmhWb=&oycCsZUlhih_Z=&DWxspuYopWVZn=&kZbWvjUaagVlZ=&k7l2ReWbjaZcj=&K8UBlTVYhgemf=&PCbfQTYjobhfV=&W3xojeZiefUVY=&PRY5GCUsg_ffj=&5EQfPKZksUVne=&C8matdYrlVdm_=&aPsSOVVgqpafe=&eRDKtrXdkdgis=&83BLj3ZfWpUXp=&krhs3EYjinWif=&75cEVDZlfeVil=&RXEiWvVUepXdY=&L7sDKjUmidYiX=&vI9nUFYiicbje=&9g3kqPYkVUpoo=&x2eliYXrclebk=&vWaWz_XYrUggZ=&8LmoDMWYpjpns=&COzLyBXbpWjem=&7LWVh8XaWqVlW=&AzwgKNUZaklfo=&4bc9ZGWicscpZ=&stDF6lXlWWZZg=&DurfanWfVepga=&3YuGbaXfsnoal=&Fm2FDNWYhWelW=&hCfr8PYeeYmlX=&Pni8JZZbebobo=&yJ8KgUWrYoYlp=&kyoP8DWpjaiok=&WkTNicVcpsqYZ=&i2eSSOWZXd_Vs=&MMnTUoVpihsmm=&HoOTBTUWjdldl=&gpVjOFUqpnVdV=&b7obLbUZUcoWs=&zohQNqUZl_cZj=&fskfVgZloshef=&tpdI8HYeiWscU=&pNqVLkYeYrZ_f=&6KVVaAXXqfZfp=&7ivJDmWpVjZfb=&WBHD9WXebknoV=&foJ6wwXajf_Yn=&CXDmd2UWXZnmi=&7yiMctYqcaqcY=&CcWfT8Zejgqfj=&z4wlj5WZqfanY=&2UNXGRYkeoqli=&lZaDPzVnpklZV=&8ZpOSiXkVVUra=&5GvbG8Viosepk=&RadbecZliaUe_=&NyUacvVfdhlWc=&tqKMYQYZrhm_Z=&ANTnD5VYWqlUX=&6LutSmVUpprrh=&okC6PoVikYckq=&ezpQeJZbkploe=&OGNUCSZforkfs=&xm8234YXjVcVh=&dESNFaYoVhooY=&gLcnBkVsmpVmj=&lYJTsyXZUfalU=&5l7B2xWqgqUeV=&KgrZYoZ_jZfjm=&6Ri4F5VhbolVY=&lHIIbIWkpnefp=&4TGCXuUspXhWh=&G3xcgLVsdldVm=&AdYONYYWsoVfh=&w5brCnZhirhjl=&yoUSYtWehVUgW=&chbcVeVXUkige=&ycUYoZYjZiZf_=&H3g_3bVmoodfe=&9Zwp3vWfmsh_c=&BABucGZqhc_kn=&ZqG6vfZWVrXar=&8frwVIVfWgnas=&Aqr9BjYiXdmiq=&dNsKNFVcebVgo=&W3KJYTVqXWhoq=&d5OuBtUrniqnX=&MMswIPWsVfVUp=&GvJm_xVpWndVh=&iotxMGVcgjrhd=&nXsZ5XWiYhrda=&AeV9TOUihaqYq=&5BDVftXeUepma=&xqjQi3UrpZk__=&iIpBLgY_arYch=&eB3LKZXUedgYm=&cdcRJYXqVpVi_=&BlCaNUYbdoUem=&vzok2FVVkZVfm=&k2AorFWbYsjhf=&fZtx_jZ_brqde=&g4IBjNYWcUXnj=&ImXmCIYfVXsdY=&_NB7KZUnZjiXe=&QBB4GbWbnVUcY=&4TzjvFUXiirXc=&KWGhb3Vmbdjfm=&opl57nZlYhagb=&nOgT87Zjbocab=&bnKnzAWsdasWm=&x_hvGNVgmpmmj=&Hw33TtZebrfqo=&A6zlkBY_rpcUn=&WFSPBhXYdVsam=&Fu34JAWpmfgbn=&5YobjuYXqXqiZ=&Y_AEYNZrf_nUq=&KtHX2XYjggikl=&m8pqyPZ_ZWnsd=&szpDWGXqnfngo=&FWr3o4XZmksfd=&_IWk9HVUpboYb=&XAa8zJVmYggrZ=&IvRt2VZWfkaXf=&BSSaASXabqkYq=&EfK4gAZqsbnpf=&3swVEUZfV_frj=&kTLUBMYXklgo_=&jNNFeiW_ZjkoV=&QEFJs4V_idpdk=&Tv34HRXmleUii=&vpzuUbYfoo_ak=&VD7nanYagfVUr=&D6gIzzUjabZnX=&gtjaXHUUhjsZW=&IgHEf5WYXokWi=&NC3bdZWibodap=&Gg2k2mZrlXsdc=&B_CXQjXWdnoqp=&Lk4BM3VdjmkZm=&kkgsjDVeZdrgn=&CnevZgYYeZoV_=&9dDRBxYr_YkWh=&JauMTiZoXikZs=&RtX4ILZViZprj=&SahCnRUsUecm_=&MFSohpUhfcWXh=&9Y_aliUceored=&7MtO6AXndYWpZ=&V28GMTZppkoZh=&FTmL2tUmUdYcZ=&v3kgeGWimsigk=&P8NB_FYZWpVno=&Jdv_hHZhsihpi=&_GZaFiZffmahf=&HQ3Y5pWqYlfbm=&h8eNGSVbefnXV=&XqyIdbXhWaUoU=&2BGvO3YeidUXg=&pysoeIYesnpnh=&ApdTHWWqeas_j=&sV7qnhVqUbms_=&hcfm3tUZWogqd=&D5eJ5KWUakXsi=&eruYT5ZlgZsig=&v5y38EYWiVonj=&CLiBEjUfkXoo_=&brhyE_XZ_UirV=&ifpgC5Zpo_oZq=&mr4Lz6WfrXosl=&WLTtsmZcVeoXj=&c64_29Yomimei=&hrOy63UkXqXdf=&a5WGhrZUqpWdo=&vbefBGYYYpVjW=&KWsejcWffomgc=&E7l5WnWakYmqh=&rWRoYHXYXo__c=&NGi2YjXaihapd=&8vAzdeYoplYlW=&k8IzNLWnschbW=&CDsgzzZWVbmhs=&F7qVdxWnZmlgi=&yadv8IVocenYk=&SZpXBVWmnaocZ=&MkcFa7YrVnaab=&2frrcHWjmYUVs=&aQyD_eXlUjUsb=&iOSn52WVbkrZh=&gcoIQjXkUcdio=&8L6wpOWbosdpi=&BE3t6PUqqqoin=&EqARnbXWrlasV=&3WZcqNXqVpraf=&G2hR5FVlZncip=&cgAIj5UlZm_qm=&Dld6KtZWiYp_Y=&h5FVlmXpfYkXp=&OkOdjtUrdoral=&2G_3JGWhdiols=&Cef5qMXpYmWgc=&YL9ZI5XsrbqeY=&a6tTTIYhinXhh=&2NBQX8WihWoja=&xaI2OvVfqdcre=&EzFGMkWUlgd_b=&5n3mNHUclpZml=&3QWwozYgjrbqh=&axygETZgqeZaV=&WdFHMmWheWVka=&D5BaA3WsVbXiU=&zMTnGXVVkVZYb=&7IdfZOXfgdYbW=&sNXjalYrsWdal=&6bSbGyWne_ndn=&Nq7UKKXqmVhcX=&ROgh68YdiosZr=&6mg9KdYgaqUmr=&RYvMgcYWcocXs=&8ecUKyVsplilc=&BrFOC2XgZZmfj=&WLlI4lUcXgacc=&vp2Xh5XhiXrk_=&h_pQyzUaVlnpW=&c3u5xLZafqpnn=&XF8P7WX_hocgr=&a2OGngXkinnlr=&rG47scUUUWrpb=&72pu_EVbgoliq=&wjRBgrVUZldla=&Fr4t5AZmkWaaq=&u8DvbZXefiUqs=&7ilLZtYbp_qUb=&aY3hDzUVa_Xfj=&_nTL7NUkggfjr=&l6yoYVYZnnhrb=&l_LXg7ZqioYdq=&GoQ3DOUkWUbqr=&VnMbueVmobmYm=&fSRxcjXkkl_hq=&A2sDK2VaVYYXp=&qAs5IQUVZrVbY=&Ug4iwDWrXnniZ=&H9Jnm9Xnfifao=&M7VTwWZXkZsfb=&BZUePrVZoZlnU=&NEWN9kXX_rmpp=&CmQfNgXffepiX=&Pv5nqGXcsmqeh=&cKq6PmWhgopfs=&SuX744UgYi_XV=&MGlmurZcZgaah=&PIlIRFXhgoUnU=&ASSe9aXkeZjei=&8DS_5LUnbfgpo=&gs4BlIUZWn_jX=&ms3D8IZsWik_a=&izsvm_Uqjrifa=&qldSj_UWoYhif=&yaYoWHYanmoVW=&Hm7SLYUnfmrpf=&2gWet7X_bpbWj=&JIH5HNYaadjer=&bcj8G9ZrfaeoX=&X7c_McZoYcrph=&PxGhUJYb_rUZY=&ojoV6IXdpoecX=&3YQHXLUZeZkYs=&cZMwg8UqhYbne=&25FYFaZccpjVm=&vuV5Z9WhrnjUo=&suN7NoZbgZjWn=&w2z2WmZldiqcl=&UcqkAvVgUmpcs=&5z28UiWZbfeql=&nUU3h5YiseZoc=&veMttdXWhVfls=&BomRDgUsUUhkp=&Jr4w8jVYXVjes=&JICJEbVrUehWX=&QgkYGwXcnYU_n=&MjPWdpUVmYlcn=&Q9pEldWjmei_p=&5tZcBUWZpcVVk=&ZP4aTIWdbkdrV=&5AuEzlZebVefh=&_4qULlZ_bnprf=&D4PLaCWdYjikh=&CNXGu7ZZ_klpf=&ZkjuguVkXpfYd=&OkO5YmXeqVgkf=&ifFpIfXaVcaUh=&7hlzdgWggkgoX=&v_dbsHWjjnrd_=&xzmiQWWmXWelZ=&BByswlWdcifka=&wVXy4CWYlkb_g=&dymAZtWWXjYi_=&W5MToFWlXdaoe=&Ol5XcaWbfUjmU=&f6FuIrVbgigmV=&jF6o8cZXVloqp=&6yKU2cZVUilgc=&IYMQ63ZaYkUUd=&vTiJ2CWjgifng=&NQkv2qUcob_V_=&7PYiT7V__hUgj=&RbC6kUWiVWdYo=&xoRMV_Zklfloc=&8YNuNIUqjZlmj=&eGzjDBVihZfaj=&WMCsYhUXopnZ_=&YktSeFUjgiioi=&FQf_obZholfVl=&YstGGdWjbiakh=&_qxTA3XYqjido=&5xjbS5UfsUkqp=&IgQhv7XebVlgl=&RJwJoeZcejpoh=&qHWGSlUlmhcen=&XNImFTWUrffUc=&HFw6twWZoXkoj=&R3SIQ2XmfWlXd=&QyNSolU_UdeWo=&BT5frsYlpinc_=&iKVOR2WngpUVV=&cQaQGIXdnmpbW=&YhIu_OXU_mfmW=&GGbUcEZbZaank=&friJRAYWYXoim=&kzFlEfVmbUhUg=&36WqCOWVVVkYp=&zJ6tPbXjYcUlm=&wMU86wZrYcnjr=&g8SmmDZmZWUkb=&LNPrAXYsedaZg=&DIfS2HWqUXkqe=&j4ARgKVpYqXgZ=&7tK_ERWreipho=&GYdTccZmioi_k=&WOUh4rVlkbeXc=&bm8bNsVianWXU=&qkuv4oWhodmfo=&b52e2uZXjoWhW=&diUnfYYdn_kWs=&WoFL4jUbofjqY=&t6RdatXmlYlWn=&xrrtR9UUfiaqp=&JdTFCNXnnfhWn=&YFmPZ9YVbYbfa=&6XObQbXhlm_se=&SO7pvCXhpcnn_=&ulZ6acVmhnrhb=&Ff_uWyUoqjaim=&JQdLsjZidcYUj=&MnCUaDYgrlk_l=&abDyN9ZpUXWif=&AJv6uFXfqropd=&qnIwpbWsggVro=&sFR56qZoVhUqn=&BPS6nrUpfsWqq=&2LJlaSYrkbaWn=&QDmUYYUnppakX=&AcHJ4uVXmWqpj=&dJlRVKUkrkdsY=&WmCF4IYqVegks=&nmTzayWgcqbYl=&quzzMSVraccqp=&CDechVUZqofVZ=&DNRcJaXkbgXYe=&xHGiUBVoalbVq=&QE4TiEUcigols=&pb6lTJVsoskVd=&7b6kkEZkYelch=&A56OAMYqYajaj=&vPwB3PVeZngme=&VbxjxdXijafbh=&JvmrmiWYbVahd=&6rDh_gWbmpiel=&8DXFsnVspskim=&hlToBDZaXafUZ=&7q9gHJZViUbkU=&K_o_52YcZkbnb=&pmU7fmYnrWWlo=&bkXpfFXnmVoal=&SA82b7VUYbUZd=&74cIYUXkYkpXf=&fDY9K7YZdkomj=&jxK3iSXalVkfh=&Dr5wv_XoiXgXj=&6NtWJKWUcViig=&s2TRecWWkrkZk=&tA3NNZYsocgYn=&8bmETpVqXbsbl=&3UnUo_YYZVmfh=&4ataJOWhcg_gV=&n6yzqNYXlZlcd=&_nE8CwVmqir_l=&FeYik5Zgsna_Y=&bVtBKsVsfoXse=&6i_7L9WbVjXkd=&JHZRuhZki_mZW=&A_WC5cUYoinWY=&cYtZgmXakVZVl=&rWD_LYX__li_q=&JUr796XWmebkg=&hM8XFPUbonsXZ=&PjB4pzXhemgcd=&zPInT3UVeoZlq=&SFbkXlWebjYqX=&IojAhNYerjbml=&ByXvD_YpUrqcp=&KLGCDrXrkspZq=&Ao9o3hUjaZenj=&92YLo_Ufkkgnn=&zlrbGVUdWUrag=&HLxWXzUrrYcqq=&hnKahwYfjqZpo=&JPduIbXYWjcid=&pgjpsoZrskhUp=&tRNYy8VUshkYd=&YHWacSWnserke=&LtRd2OWVfmjr_=&MPJTFQUcsmssZ=&8vIqneUkarZlp=&By_cG3UpbgYks=&U2pYbDXfXWgdl=&L85cHkYfjlpsi=&DM4uIqZglgjlV=&kkF9u5WldXlis=&nBA6OxWpommrh=&YgxQCDVjbiifZ=&eoHOC9ZpmgXha=&TpY6hDUdbjUXi=&v__Pi3Yh_lWrU=&uXtbEIXVemafZ=&2vmYcnWV__Vig=&rxdGZaXVqdnYf=&p9wxF5YqmhXgU=&B_eNyMYomXsbd=&3_l_k2Xhjsoak=&Sd8rbXX_sshke=&FqXpaUWcZedcg=&Bhy5x8ZXomkcp=&IHahExVknnrYo=&iClzv7Zah_fni=&u62ISrUkaophm=&MLMDgaUikinhV=&_7adcaUkXrZV_=&BrcJB2VWjcb_X=&Zi6AKpWejkja_=&qXTAzgWoapXgq=&D8QpW2UkbckZn=&W6hts2Ucdqobr=&HfzpdbZlYdbdk=&xUxMkHZU_UZWW=&zh2nRvXWgdWmZ=&ogIDdQUspYjpg=&bhfyVgYsWcnea=&ayx5JqXisVnpl=&LTxi95UV_qYV_=&if7FBvZYjbmos=&YL8mvfVgjsegn=&cKezJmUecVYmq=&D_yTQTUeegbhk=&PY9r9wVrhWebb=&mexTiQXVcZbV_=&CXNlqZVplmkek=&zYnLo8YnkWUUa=&r4jZLHVd_i_no=&6dKUd6YjqsjYf=&KfVzARWikkcrk=&FCqKhQZqqbccb=&tboZF_Vbfcesc=&SJonbVUfYrqVs=&hWnsL5Z_Zme_i=&ujbygVXXfm_if=&wyNXEwXhrmhZU=&vPjhJrWaebdda=&wDGJbLWWaXgrV=&TKP2dvVbXscen=&Cft99uYqVkdcj=&zQ4JLLZUa_rVd=&8qvIHjV_cba_n=&yTTATQUql_fai=&iXVF4KYpnldbc=&YiVgiSYkaZhrZ=&Xik8W9WdmZYkf=&KH5rjtXfjloYX=&atWnmCZ_rdZ_V=&QHvI4eYU_Zlqq=&3lCRNzZlmanio=&4SOuTZZeecqVs=&meTRfjZZalhbY=&va7tT5ZglXWns=&zdGXbCYilnclq=&QGUNxGZZhgpgn=&2Xtl5_YXfcZae=&nEdpbhVbYqcUY=&w8S8LKUiZXbZi=&q85bByVWWabWe=&lIqouVXegiiie=&vNbMD4WrZkWhj=&ATCvjyXaoj_Ui=&A6GKhtWbXZeqX=&eABWhkXfmZsi_=&qwqF6gVrcloUq=&qJYHRFYksmgid=&8CVo2MWdmjXkV=&v8kc6NWppe_lg=&5pJYM8XrjYYYX=&gotIvoUZrsc_r=&tjzYqsWospm_X=&KghZ2kZckXhfU=&VVKLGZVk_mUkg=&cxLN5UZkpWkec=&ixyfDgWfbXeqj=&LVZaSaUfmfsUe=&j6qpkbUhrpoWU=&vXOHgWXZaiZrg=&jf8YiRWYYlmYa=&Is7QuLWabahYo=&dzFCxLUYZqaZU=&ARy3LNZadslZk=&AQ7UQ3ZfaUiUV=&OUXFghYYicegk=&sFFrC9UnldqfU=&jTRZyGZ_akkXV=&lOsLypYbnbXdV=&ewRE8eZqYpgre=&2RuSr5YqnVeWm=&VYpwiGXejeYar=&deeuHCVm_eeWU=&LUn9Q2Ybbmanp=&OD2kDQXkUcsrU=&UtHSDwWVXbXqY=&wopszDWcqlWbq=&9LTW7CWheckkk=&yvJa65ZlW_XfU=&vVaShBX_phWsa=&DLLTf_VXZ_gor=&ZKyy2YYUpcbdc=&eHcOaIXrqoljg=&5jXSN3UYgkbbW=&XSoOpkZdh_ccq=&f8ZcfjVXl_lkm=&tqHQxeXdi_qpn=&E7WQHWUWUqdbq=&xHVKhkXXkWaUb=&I2Zw9zYbbfqUr=&ZrRdK8VbXXmaq=&6yXSIEVZUYfZp=&GF6GdxYUYqqkl=&th7afgZrZqnlf=&hx2oc2Xcrhhcr=&4rfRYZVhgkbUn=&zGUj_UYginkmg=&ewTWQUY_ZpfqZ=&_2BmKSVfWqnok=&n3MWu6VkUbWbW=&JQVKTRYhrqmWl=&8NqaDYWibXkoa=&jqqKMWWboafrn=&zA3YHbUoYU_Um=&DrWtz8VqXpnck=&xcx4hYVddfs_n=&APHWdtUUdamqi=&7VfPAdUiZidej=&yyAyMHVqnelgZ=&BVyD2xYYlYclU=&MZD2A8XlWfbjW=&RtZ7krYaVbjeo=&dDgdekVppdroh=&VsuugmX__oprV=&O7hc7MWgcprsq=&SvBsUDUXsrsnZ=&GXcTAVXlbp_sg=&RRTPGZZfjYWXe=&7yLo8GWqcqmqZ=&_pP7cdZVodlia=&k5f4dwWUeZmdo=&WYBB_3UZan_lo=&kn8zmVYVohVZb=&2HoZ6HUnarpoV=&yZGgTjZhssUdn=&jC22Y5VXpVncl=&wo3ezZWVen_an=&iX6A3bXXZsniW=&4fBcUsWnqle_W=&mswjbEXdX__cm=&PVSfIBZYbignY=&tOrZXyUkZqqga=&P3iwQkYUUgZXq=&a9EUeDWWnqVcq=&2yC3j5Ucc_fbb=&FVvIbDVrnlVad=&eo9CZsWghlake=&WplDeHYpoWrje=&7ZKJW2YmhYXae=&ehTyjiVcqhqcW=&vQRUvIXbcdWji=&lYD9nSZqdcbcX=&8bqCUYXedXgbV=&rw6j9RVVielok=&i43aEuXogp_nr=&2yvvg_UrYqVbZ=&hkadkYXqpUoro=&sKxcHwUsVVVdX=&yzGwsSVe__epe=&y9lTK9YZlfUbX=&P6CYEXUglkdaW=&NAFNMaZbirXpr=&wWPN_rZbjojVd=&wSXf3ZYanpefV=&8k6WhJXkoVVrf=&XkpGZdZWgmWke=&N4Z29CVklobVn=&4U63nbVbpf_fU=&6vywbSXUgdYYc=&ezsw5cXlYhahk=&Kx4qgnUUdfdbk=&Zxuke8YqpUshs=&BrC6cdWdrclVf=&lqih68We_Vjql=&5C3dpUUVn_mjm=&uPLFS9Zslabfg=&a9vIqIVrlpXgl=&isQktgVmr_Wqo=&kQmcBnYnlWWkV=&IpajlYZssgfa_=&8XaMwPXiXgclh=&yjoMTtUoVdbYh=&xoWvRBVYfbZmr=&Vr4nBLYrfdqXX=&lMGObMVXeqUoV=&vXTh3ZUekdcqn=&4GKxoOXoWedgb=&7zfShoUimokqm=&N_THKaYigogoU=&TF5MdYZfioorn=&DdMTMDVlUqUVk=&6sQoHzYWofkn_=&o9HkV3VYbVeqg=&ka2Y_yZa_pq_W=&mIaNxdUocbYUd=&mrfPYrVrYi_ap=&Wy53ACYUlfk_f=&zsuxdwYimgngl=&souJUpYsgaUlq=&uR5fvcXaoqrhV=&EHNKAnZkgkaZU=&_OsjVvVYqkbZV=&4cSJN5YYhoVld=&a8FXqIZUomhjV=&hdUvnOZeqgcbX=&Ki8TkjUeWpUqX=&pDdT5RUncXYbr=&PY2MDPVYfXrZg=&dX8geXYkZhZaW=&_xHOPaXlimdlk=&yPzNuNYaeccij=&8SQvEQXWncWcf=&WvaWn9YjsbhYk=&sLLB_8WaZned_=&YQOj9cZpUmnZq=&QN2EnCVVshabU=&isib3sXlormpW=&_e73Z9VqZqcfp=&NDPUEZYpoVife=&ShNcz_Vjgmjsl=&g9RiDOYWmeqgZ=&jOviIeXVZflUa=&ohijfwXdkkhen=&_fzhMhV_noYhc=&2IoBmHZlWYkrZ=&QTvlkwYajbkcW=&NNWFEpYsV_ojr=&jpGn7PUkVqpjk=&NM8HKdWlqliaj=&cTaQSAYdlVYmr=&qf3YHnWmjspbl=&rtb8g8VhiWpcV=&8Pv3fuWVbsWYp=&gPOC3XVkXWils=&rEjkssWgrqYei=&OszBW9VhcffbY=&gvR__YYYoganU=&vWUbDlUi_YUgp=&JSvMyuXhZnsrY=&odLaGoWbWlenU=&heFka_VnVaesk=&R43IdAV_YejUo=&nrrM6lZXlag_Z=&Xd5xg3UnnkVaV=&NQep_TYqpl_Yk=&GtHKoRVUZejkX=&hiPvseUaXlUpn=&pPOoDoXpdZYoi=&eeiGDJW__mdiY=&nJeQr2XnbfYWZ=&EgLu5OYZrmkYi=&_jSBW_Yidmqhl=&6P2EBhXmlaYki=&Wi22rDVWsapro=&NqT9yOVqoVWlo=&RKkejhYnUcrZV=&FnTnHdZqoVpbh=&iNON6iWUksjfs=&r9Vi_IZZXbcdi=&nrVirRWVjsnhs=&tO5v2VZalgsir=&StE_TaVYljWiU=&Evm9G9YkpYXZf=&XQLeAJZiohqkW=&fV72ppZplbZVm=&v9g7hdYnehZqX=&daqY8TWpfjZnl=&9ktxQOWn_oVgf=&EtdSbAWmqrlXZ=&sM4uFkWhZk_pm=&XgjuvZWqr__UU=&sPmbOlXqkZYUm=&aEahX_Zr_jelV=&26oDJMUbkjZem=&VVhHWgXjgjkYm=&fW8fKgU_Vlofl=&FfcKLMUlcnrre=&z3_xPAZjsXpln=&JlwYQ5Z_X_VaY=&6eilIuXUUkrWp=&5Gh6HEXUYaqal=&LmccqmUZsemgh=&afYodSZccUbYV=&b66zWtXWndood=&xF2gKKXalXf_k=&UuCzIwUqWqohn=&qX4vEVZqVoVXf=&_AhrzRZk_Xcin=&KdQQzyXpoqjkm=&UbyiTkZZmcspa=&UIQNZGYlnnZbs=&68XkaGWnUcaXq=&SOjzpHYnWkqqg=&oMOmKvYVoZq_W=&j4tJaYUlU_hmX=&IIGEZlWjbecYV=&X8MfKKZlfdVkX=&fG4o2ZZVXXVmq=&9DJfq6YjcihdY=&9LcqazVlpesbn=&v3o8IOZVodW__=&iN4LraWesVllW=&OTpLbMZX_Ugqd=&fhlWbZWnUkqoj=&oRcSFwVkeVmlc=&gosfGNWkUXlgn=&SIO4UTWYclmpb=&Z8fRo7ZdfdVa_=&yUm_tPYZressX=&w2cf78YlqalYi=&E_xIfAXphhdaU=&tdhV5AUjis_gk=&4PxYOdYfidYql=&OkJMv4ZZoqkiW=&ezXgN2ZfcrUck=&hgROuLUoq_qrV=&sNk29cVXnnkZW=&bpNUjsXXnp_d_=&9KQRuaUVYpVpk=&ksCXFXWcjor_g=&QO4DVuWomocYW=&xiLdsRVosccpX=&MHQkU2ZosdhXb=&eFQtw3ZrWWUhe=&wUXcmtWlqZsj_=&8kBQkQYfVrlZY=&OJN_NTXgchiUl=&4Mvn25YrqoXcp=&ud7mt2VldhVrs=&AGICBaUomqhp_=&h3PjV3VYrYkZU=&PbqBK2YfXlcXZ=&TcMZ5RYkfYWpq=&ddrKJcXkrnhYl=&IXccYkUoidmkn=&QUq2fyZpsakZe=&XLogQkVrUfcdn=&pLRsJEYdakVgX=&6PdcQpZecpjUU=&DsUIi9YoUaqZX=&b3c5HTZZlrkfj=&GbPPczZVesbbV=&9RBRSfUpihUpk=&KmTSRAXkohUfg=&p3JeMXVZodnUc=&sWO5o2Ymoesa_=&oWn2G4YaVfcjr=&pL5Qh6Ygnkahr=&YekgpzYoabjoh=&RQRRVSWo_YUWj=&CFP22HYaYWpkV=&DEZcWCYsjr_pc=&k6nHwRXZmcer_=&FuTrlqZZraqU_=&m9lOTiZbsmnoa=&GsM_5iWbfpqhX=&7mnmlbUXjVdfV=&tKKjFVVdgWqmZ=&VE5qnKYYXqZkl=&G3MFXDUXrbinc=&I7wfILWeWUdkm=&bxSoQHWsZVqoY=&gr3St6Wasmlkj=&yk5WhHWqoockp=&LTyvXoWfqfmZg=&dK7yq7Zoirfqr=&vsprduUifZsfe=&m8iWS7Ui_aisW=&fNyO9VXpeqWac=&9q47aPYknmXgd=&xbF5xaYhVk_gh=&tTGzLUUYa_mbm=&6Mh3B_VbcYYeg=&JaiR_SYjmYoea=&kniRX8YWoemdq=&BFEdrNYrcsagh=&2a9p4lVo_Ygcg=&aO3K4VYYjYUlh=&sTM4iRX_djWVW=&4QyHTKXpecXWr=&uLjltWVlah_cW=&CV8B3fVlkhYsW=&gpIYG5WcXkUkV=&7cLuvgXXnflgs=&7RKlPnWaYVYmo=&Eq6p7MXmpWffr=&YsTQBsWXZsYnq=&7XylHwWhYaWpo=&GkA4F6Wqlnbje=&kRfdgEVarUWbV=&rK9c_YXUqmZbX=&FjNJbwWVUYWsn=&HdrBRtYbelUdg=&4YoLbvYonXgir=&tDISqZUdibbsV=&bGSxcUXonVkis=&yerHiVVlZcZlZ=&PwcewOXpaWhUV=&rTzk3KUaYrljh=&a9eV8eWgkkrZh=&BpKeJ4UZWicUU=&s8ibntXZmqkng=&a97E8AZbbXnZs=&AW82LCZlaZbeo=&a4KrniUqsndce=&CwOpnPYYebijo=&Gkd2OqYoepmoq=&vNablyYlkdf_e=&oafHF4YWlophU=&DDEGAlUcnioYZ=&MvGBc5WYloVba=&DUfGuEUddXsco=&osDLewZbWqXVX=&hfwArEXVWeYiq=&E3zUP_UaXXmfW=&inVsPOWldiqcg=&hc2xAdZhnbf_Y=&sXfeBfXgdrkrf=&uGcR8mZpilXpa=&QoiqeaValZmgo=&LVVk_QWYlljhk=&ILmHjxVlpasVp=&wi7YGaWVoVqb_=&HG2QlEXbjqgVq=&89maLEYmaienm=&i4mHlcXWbmZgn=&ZNBMZyWkrYmkq=&zx7EQDVZWcnid=&IVrkdGUfebZ_V=&4M4mokUgnbZfZ=&zLpODqUihepYr=&8K8HzVWodiegX=&Gc7gWvZjqgaYc=&kF2aa4ZdVbbjU=&3OaPDuVigjabm=&kngYCOZgnmqmc=&ogolLbYedUnpd=&U5ySKLZobYmqe=&EINhg3Vsspmn_=&8Po57dXaleifd=&QBCUsuVZVjr_d=&Qz4dbOZsUleVa=&Ug2N4VUZ_baeV=&qv7NlvZijUsip=&hlYa7eWhndjiZ=&PsMDnCVaeiqdk=&GFVrHmYZfksfs=&gEv4sLZajbWof=&fCs4D3ZqUZeca=&radYqHYjjbZ_c=&fYXfXWVkmaqqc=&EZjtOPVbmm__f=&fAPvTjZZmVirc=&B7cOgqZsUXjsj=&f3oyjxZjfqclc=&wnkSEEV_fUbjY=&Jtwh9nVeffVcf=&CxiAaeWk_WUjl=&O5KwTZVdXmrgj=&fVsUOWZjsnoYi=&xtfD6jZYWd_Vk=&9oCw9JYWimnZc=&YYxyrrXcWVknh=&uBeuFpW_WUVVg=&yXPYZNZsmUobj=&yURPRoYnbdeil=&xNCvNuW_cddVe=&NnpkNUYiZrbln=&QMRk2CUhWWUec=&KxXxnoYco_ahi=&A2nWG6XijbWUj=&S3dNhtUbhe_Up=&jcJjxAZWgscnp=&p3pQmMZgqp_nY=&2bZH3zVXVWriY=&nkfGfqUjijedX=&TfG5BWZbnndre=&damZRGZkqiqn_=&SqsUNbUpppnje=&qNVnm6ZmkfZiU=&iVhZTsXiVkWgn=&jEGNT9Wcoc_gi=&MgqlZvZrUcXf_=&PfbjI8UcmYpsd=&ByAay8Wip__hZ=&dNu8JnVkcfl_V=&6shYDaYccjedU=&nDZ3CZYlkce_e=&dv9wrmUnprrjX=&tvLbUpYUqijja=&2s9nOkWdj_klo=&7o7BFNUecikbr=&K3J2lJUejdeZg=&oW87KdXh_Xpsf=&fiVT8RXlrlqm_=&5iqBrDYnYjmWa=&TYZPq8ZXpWdXU=&2fXYyGUsXUrci=&t8mTarZ_Xlbbo=&55vJqlVlcWsaa=&BYhK9VXckeo_f=&PFTrDOZcmiVrZ=&MjrlmmZnarcre=&hh2YYuXolmYUq=&GHgoZkZhnmrkZ=&qnB6H_UcmiXcW=&f8VCoUVrbaYhi=&jsIIysXlU_pal=&9rIKoSVfheqmb=&4eyIz2Vohffhl=&ip9o7_ZkWjYkU=&hn9GMbVocWYri=&Ahp543XWiXplo=&TaTRDtUf_iXUm=&2QdW32XshgasW=&Ptj9IxXqrochW=&d9eU5CZrkfkXm=&2XmnRnUhfrsen=&GH5t28VhcgZok=&gHQCHiVmf_niY=&kJ4u59VVrhYUp=&w2IL6NWlfecij=&FolcRiYaqnkVa=&iuneMAZjni_mj=&DlYCzzVpZdXjb=&tJAbtMXpYllYb=&6M5PYRZssoocn=&T_WG8MXaccWgc=&Bf57KpUcppjYb=&Vo4lC7Yijcael=&eAlr68ZmqWqlr=&jHJkO6UfgkVih=&z4XwPoWcaci_V=&vQ2TgaVWik_sh=&oabiepVoVoY_V=&x_tWc8XXjqsfs=&UiRUyEWsrm_bW=&MQ9w42WkcXdrq=&UWQKTZUqpiqcc=&8AGrzsVfVnsc_=&BDtM8aWmfZqpg=&fcmsyzZbhafng=&FoYkA_VXsZpWc=&qLCucuYYeUgmo=&dYV9rRVbdmlfa=&pesD7pVpdXbns=&MTiC3KWrh_ejj=&AdnJ7RWkmcjbV=&Q9Y2jdVWjpbsm=&49G9ynVaYefkb=&h28MkmZngXWmV=&UXl9EUVjmWpbj=&vjTSSqXgdqjZW=&P9Zht3Zdflacb=&FVDZKtUeXsXc_=&vosekYZqnWfdq=&LTmTWaVVdWrYm=&XrN2fMUZfjsVk=&JHYNZkUUcYXhd=&MUrUJUXnioqoj=&NkzURfYqWVpZg=&R6QjmxXgmk_Wg=&HHnH52YeeZVgc=&Nnd_QbVnnmbql=&zCdZDDUkhYnrd=&sERcO_Umrphmh=&2vjIcNWUskmWh=&F4WbjnYcmeVil=&QJ2Qq6WWUnohi=&yDaem9UWkelUZ=&hnPWT7Zcoiodb=&IcKq33Zjmpnba=&OlJqzBX_mahUn=&FTvYhTZrfWbUs=&IHYXOAXppoXnW=&R8tCTyWsi_chk=&FCS3psZesgW_a=&bkWp9VYfen_iY=&PCWdEwUXqqZWl=&K8RLffWriUZUc=&fYBdZZX_VaZah=&UD7cIVYkipkVf=&cfGzykVhgaprp=&p8OWT4Z_Xjkmc=&xG5RS8ZVojWoZ=&Dzt3mwV_jbcja=&qbCVojVaggXYe=&CknqbiUZmkWqi=&sMCaCqUsjpail=&UfB6PzYVfVZhd=&j_DMWvYfUXhlk=&nESxEUZXVjrrX=&zfMToxUrdfffU=&YFQmF7YWcoV_g=&iWcgkuUcXUpfW=&hU7lOcWVrnjhi=&JGgo34VcpcZY_=&9PwurSXlacqdY=&UK3FAwYpbqXcj=&6nZrNgUiUaWfr=&FoX6kmVofhcmh=&gFyIz2Xosi__n=&4gJrUmYrhoXXm=&pTRTwAYUicksh=&R5t6OfXcnXrUn=&LsxRj_WqcVahd=&WIDizoZgWqWdZ=&c_2_DnYokrg_b=&CIONXCXaWgkog=&C3ptDmWZZUZmh=&YQ_lHwZmahUqd=&EVEAjEWWisWsh=&TnfEs6WpmUbVk=&EiltHhYoUpWii=&2z9My4Xnfhpib=&rXgVtFWXVa_lZ=&KKIILLXgpacsj=&qWdqvCWXZnnfg=&DBGzj4VdV_sng=&XaIpvbWbkli_X=&GSt3utZsoqfpi=&KZYvRfYrbiqqZ=&asJ7XyWWj_cmY=&57O_o_VoUsgco=&OjgYVrUlrfZnb=&xL_ijqZZbsZYo=&eRA3luXnY_nrb=&jJs9qWYWYag_d=&A2HVbZWlZhqmp=&OFtzJzY_ZZcis=&8ocBlsWkkilb_=&UaawXgYpYrgcW=&rfBW6eYaZWXqp=&AB9_thZafioVf=&7DVKntZmiWadf=&98nSXlUbdgaef=&DmjlTxZhrhYma=&RYeUyhXXagYer=&VAWtBoVUnU_lb=&Go4Vd5XVnrsko=&YADUhEUaehbda=&RACXiJXcbjqde=&s8qdi5WjgYdgf=&yjkv4fWofdgYp=&KFkr2UVreasqU=&ANNNmLZkXg_el=&AD8ngjZVaUimj=&hDQ9qeYkmkaWX=&5I8gKFWmfXkla=&Te7BBpYalegrp=&vLdUXaUYWlgqm=&p8GC53ZmmmeYc=&x2CqMdWlspUcY=&c3S5QWYqaobXn=&e2lpz2WrcbjYl=&hOJ7tQYopgcUj=&YK8AMVWoUZcVn=&6wVTB_YpsXnUY=&9y_8RcXhoqsmp=&FALvD7UoV_beX=&AH2WDqXneXscl=&USuxRUXUYbVVd=&VjAvcjXmdVprs=&7CupCEYZrqnrg=&sdhJjvVfkjghi=&LhdrNcXUfWhgf=&UFox93XlfeoXj=&aAiVNjZnXkaYb=&UQL9Z8Xloamhb=&6DPM2BXhbisha=&k_GMeSVkggdbU=&cRxRPuVbgWrpb=&qI6nfaWkodZk_=&lSQaHFYhcXVVs=&o_BPXbZamZbXl=&jc_RbdV_jss_f=&HFnPelUYXmroW=&FP3NtlZcUWfpl=&geLQkiXldYYcn=&GzzzeiWjaj_Zh=&BW3qTwVeXrUfj=&Qkvg5FZfblqUp=&GhqfLdYcjjfUa=&z6lTkbYXsZmiW=&4qjfJeZkUfegr=&izwYrMYfrdjqn=&dvbeW7ZWqUkaf=&W9dCFNXnmiis_=&sZBWYlZqnVdgk=&H4yrsyVibbkVc=&AklmRcWnfZdli=&ObRPbeWfXaefg=&u8XdhTZsYgelc=&6SLpVJUhegpcW=&Fym3Q8VbeVffW=&nzXtHjUegngk_=&SOXsN4YgdkY_r=&EBQFQbYnUXjgr=&F2hOeaVqqkWoV=&aMgDDGZjWVgao=&ViPcsrXbUfXac=&or5CgrVhVVmoj=&36a_ALUlbVrhg=&RuyFjOVeZjgah=&VbaeN2WeVijfk=&PkuKFVZVeUXap=&c7Bs3wUVdqYld=&ff7qM3XXdrUVi=&BC5Me7VX__hXW=&lxttbDUeedabX=&blznLEVkqikfY=&YsIGmIWcsqbYo=&nGvgHmVobjZWg=&9IESdMZXZlUkg=&5flhxMWqh_mdd=&Bfwd4gXgjpmkq=&TG4nPZVpeUUpV=&JEjSw3Vl_nhWn=&agpccZYan_mnd=&EQVgTAXohhpgr=&jWm9BmVYVbpli=&kZGcKIXVfeYjq=&E43g_GZqUmYql=&2MKjdrUUkbsdj=&uXJYWIVWZgWeZ=&YnqQrFUojiboi=&nAFkVEXmsscna=&IDjjcPUqngacY=&F8Qt9HYbgYrjq=&MOII8GVnZfqig=&lqicIgVVh_YYn=&MgwbgxYenXdkm=&dHk_u3ZjYUdia=&s39zjeVXZinha=&K33_MzUXhcZba=&B9olGDVeXinZW=&RNmudaXnYYfoZ=&q47_XaUZgUXcl=&WgrbL2WlmrffZ=&zF2lFqWhseffn=&FWxuEkUraU_ee=&uKyNKtV_YZngq=&_jh5MNYWjcWqd=&O5W3oeUf_kggo=&jCbCnRZhapfVe=&ODhPJRVZdfUgW=&UgVkyoVefsVb_=&DFQl4EUeVUrpU=&9iDjDWUs_icck=&Xy6XeGWgkYaUq=&fNSpZaYVnXXpe=&cmybldVeiblde=&O_aFhdVlsanfg=&WGVUvJZhWVein=&mVsJaqZjqorek=&LvV_ZUVUVgkXe=&daJvLoU_Xljsm=&bWtefmXloahjo=&mwl7wFUccXcom=&dyZuqxYbUahUs=&32wS8_WXZfsqg=&RbuNwoZYgmdc_=&Ba73GnUYkon_U=&5j_fDFYagopia=&2v3C9VZosaYj_=&wSKiLPUq_hisg=&pzWmXNWqfsalb=&kIq7f2Vq_qiWe=&psjuPhVUplUci=&FL7AutWbUijnl=&EIq4oZZpnsiom=&fVaLc_VsXqhXW=&OaEWuwUhfcXme=&jRnzNuWnUelVf=&vfg_hXVigYUac=&t349n4Xoe_Vrq=&25j67kZqUbbWV=&7dfu3gVbifXql=&9Qhs7BWZZfrfk=&Ke6UcmYXpgmqW=&8L7kGsWcrdUYp=&7env4NZqpnrhU=&wwD4QhUfnZhWm=&QWOSLUUeherdl=&iWipJLXjohnUc=&3pGBDCUgaWZfe=&nWHjZaZsjpYUg=&4UcEkmVWhWUpj=&wb_nSmWcqnkam=&LWckVYXsVpY_k=&oHDxVBWsslafm=&3ILTthVqblbiX=&U_gCscZkiqkca=&wlgBbVUqklkbr=&X6MECgYpncVoY=&LQhdvmZbdofZY=&s3PKOWUWnZinp=&x2O2cpZ_Voemj=&RQepBDWnYWZno=&9HiheeXnamlnl=&N8vTLZZilZZXk=&lKbeVQYcVr_a_=&nFiN42VkZc_pd=&7BTTlsVqeVicr=&5PHiQoZVVnbqW=&9WffgBZUaVXfq=&aN7nVHUkmeZVZ=&aDGZ5NYabeUZY=&OOeNpZVdkXfnp=&nlMTGFXYojrW_=&joeIUTUZhkbrZ=&iDuOqvZpgUpbj=&hDSzcQYqUaiqW=&7bO4zLWpaghWj=&t_eoi7Zbjcrbn=&gLjdyMUs__cbj=&dQWhLeVrjfhde=&nUIHPfYcepmqo=&ngEn4oYppZiUd=&tJbqlIWifmlen=&XcqSyXUoVWhUn=&sMu7g4Z_kjjeb=&fzmEglWXXdfWi=&pZOguTXcUbnbg=&cDFyLjVldnabm=&Rfi_VEYYbqXgq=&RHCoNsWjnfhUY=&48M5SdXbjbcYo=&D9FlCIWnkZWZd=&YbH4iwVpXUnms=&iyLQLZVjrdWbn=&qcAuNBUppmpea=&bo_jkQYirlUkX=&KaQDARZdpdYZs=&OiGFzWUZjmnlV=&scgXmuVZmsags=&fbyR_VVgjhVgf=&4JQiAxWfpWpgl=&_v4X6RUYVdVcp=&FL9BSqValfZcU=&CiwcWAXspVrsX=&IPMaLEU_iZ_mW=&f7K_bSWZpdrnc=&3ui2QxWWcqk_n=&A6ozyJWndrndf=&enlM4fXXrnbXh=&QNuzxoUYgkmjX=&gU8CfDUlnalgV=&uwVwMOZUseWmb=&NUU2IYUaXqbWh=&bqxbw4XrhXihY=&A6SgYDYjXimkn=&VasewUUhrmVXe=&X52wE4Wlcpsnh=&Eb8uFmXVbseqV=&2xkg6cX_nafUr=&9Nzx3GWnnkqfj=&jpcJbBYmk_cYe=&5lojFQUdooWYh=&i4RtmfWjdUqZm=&cMjz8jXmgdqoV=&FmBmPCWXbdXfp=&66gxEMVaqgaeX=&9YF8IMVqXsocZ=&e_eBXrYfpXVgq=&yQJ2ezYd_fki_=&fxYzIBYjafVrX=&UzDH87YlehfdV=&ihPFU7Yrgldcn=&amr5QhVUZjsqm=&kTOeBTYnl_Zpi=&dZPl3yXhneUqU=&vWD7LxWiqobW_=&gjOtvdUjXnkXh=&fy_ZoYXXgrhZo=&z8dR4GUmjrbYp=&Rdb3bRXhaehUn=&OJYI7ZVWkqrb_=&Fjgx4dVhaYrkb=&lBo3XZWflnfmn=&VGfclrYmXXeXU=&8z5NJbUhYX_oo=&GzHQ3BWhkUVWa=&dLOfc_VXdpYmW=&DqlCHkVXmrYfU=&klXmeiWsb_Xod=&v8aZk6ZVrnndn=&MSAzrlWheerVh=&3qTCxQXlreYao=&e8qH_LXlmXecn=&bboJOoXVfdipX=&d5t4NQYhhXXla=&3ayJndUjba__c=&moxNIrZmgrgfX=&4eTIDxXlZkk_m=&29sCSuUpnbona=&wkCnbyYjhUfrZ=&kiuUrjXpsYUmf=&edIsFRXeqVUXd=&bSvL3pYaopnZs=&OFaZtWVkkXrgd=&GM2EEtWWbiicc=&26gXzjUblrbsc=&PNJMNwYmmZrgZ=&PnoO76Vblajq_=&dJr_HQYdmjdjd=&fZP9y6ZnXenZa=&HyQXDyWkljYnn=&yWNO3RYemojie=&GrygROZYddlnq=&n__wX5ZrZmled=&rvDV4LWeXYnZc=&6ls9kQZjcrkZj=&lNPf2PWqYZnkh=&38DU8JWfarWoZ=&bB33oyYWnikUg=&t86qShWnaUebV=&_cMMuIXcncXke=&OdpHu2VideUmp=&CbcWHEZkgZlhj=&J8Dm7WWbaroki=&I7hkWkXmpeqld=&M6biscWdecYeq=&JvrdbnZsbefke=&y5qllQVfg__on=&zYpdhWVsZisYn=&I7SAFzYVghZao=&mkD5EJYinoiXn=&9pCkPOYb_ckic=&nbj7i9ViaVhhs=&3TRpovZZndjiU=&VhhVUVYcVU_in=&99YgnzXjrnrrb=&KXApAvUgWfibe=&bKQOiAWqrfYao=&CsjRXeUgZYkdi=&8VPcCSWrYnVcX=&f7anOhXsrYrkl=&GJU54CZhVjpWU=&KHlVCTZVXYeYc=&aKrqizXkiXYjg=&HeeQFtUahWXoc=&Z8D8YqYd_ZWre=&oLGsx9W_rfhrj=&QwKGXlXXeriVj=&8QCl6gUjhsYcW=&wCcJTwYVXZcWc=&k5rImUYl_poXp=&yzLv_NYkXfrkm=&JTV9VvV_qmqWr=&J6sdPjXUqmejo=&DUoNijZbmlpgi=&a3u5k_XosfapY=&wVW4jXU_rqorp=&QZQOuCVXpcajm=&pisqnaWkYq_qb=&NlrfsrWWoojYZ=&VXbCJsXUjhnYl=&BlCfBmVkdpqgi=&L5ZhopZcXbVcr=&BgwkYPYemhrfe=&G3GL67XihelZh=&2W_KzpXdecebh=&uMmzwNZebqjhn=&P7tKBvWdqooks=&trWB7IVakkoar=&V3WRnOWmnUckX=&YpD5DlVXkopbb=&Eq_iNhVi_pYYn=&ITKLRPVVZqVmr=&vym6SpYUip_Za=&CmUHKvX__Unpa=&GLPTMkXcbdmrs=&qKKwSsVrepUcU=&TyECCTYncesWi=&F4RTP3UqnZinZ=&qGXMNAVWpmbrf=&o5Svq8Xo_Wsgm=&f6RdvTXYiUchl=&p4hapeZUknccj=&DfvfqSViXYYXa=&4PT9XNUhrVZWe=&DPbO7KWUsbZUo=&mpBrrhWgUhnYq=&BgtSAXVYonZYV=&i5dgJZWqbgids=&vPT_LoYerbada=&Car3ccYsksbUn=&6VR5a7Zldaaef=&V6Q3bBXmlceWZ=&UKhHx_UlsbZor=&BPupa8UhWYsYU=&qdOFZxYoXqobd=&uxdWiUXhlYXab=&HKVJxlWjgb_dX=&6lU8MZVc_Xa_d=&c2YoVEWsl_Wlr=&JKimNfYoipokp=&7L6LHbYdVodml=&IUMARlZgbplgj=&BqcnyqW_dsjmf=&B_ue3hVhgrZdc=&VAf8tTXgVVijg=&fg9QnMVfcbcfd=&bku5jAYeieh_Y=&IjAjIWZaYnrpl=&bSb8ohUgoZpls=&nLNVHAWmWUVWn=&Q5rRJNXeaafjs=&tBnoYhUjlalbX=&DYFf3yZdjVcfn=&XCBLPMVlWXkaY=&xEnAP9WcYe_kg=&3DpszIUhhomcm=&8YNtnFYUbWipq=&axrlMBUhdopbp=&VZl8MJZejebnY=&_JscmuZgZde_n=&xXv5v3ZhYefU_=&HX_rV4ZjicVds=&G_DLv5YckUssm=&TpQoZTYksalkm=&sCFjP4Vq_cUhd=&bXzN6uXjXkhdd=&ftddx4Ujlgaob=&5gULtgWXclVoY=&rQhMX4Zikaenh=&TZ7PWYZWsmZVn=&WHeCf6YikglaZ=&OamtciVbmqpoh=&lwX_LnZhfdX_a=&7MkhoKUciiZeb=&9ruRn2Yrdrrdm=&xGSdfDWiWiZUW=&WEVLHMVXrnUiU=&xl9KybVY_snUg=&2QpoybYcfYiXm=&zwOY7yXlojkfm=&MSvmz4ZpVXkig=&syFcssWsgj_qn=&ZGUi8oXideWZg=&AWl8xUWWoVUWb=&kAHewGVVrnaYq=&2qnrlKUgiksb_=&cIZvNbWfkcXdc=&jOlcIcYlZWhsk=&CtQVI5Ykqldlq=&xP_SFvXjghqWo=&fEwNsrZsjlsZq=&cjVjZIWckmUVs=&5wkUjAXmdZrqg=&iZlrTjZXfqmdg=&mpw9_4ZnkVsbb=&9BK8RCYrajkbZ=&9VBsKkUom_Uih=&CYSMujZqqsopY=&DUAKW_XVhiVfl=&b4hZ9KUmqVgkq=&jKn4zoWgnsVqf=&EhpdDqXWbqUkb=&tACJwlWaUgbVs=&phfWqpZdlabhg=&V7aoNcVpViUi_=&Lmi8_FYVUUiaf=&vfuUd_ZqUbVfY=&xyljjeZZjlWgf=&lS7WfrVpjlYVf=&yE8i2CUhgVadm=&rs33jIYVosXhk=&IhjXJEZrbfbmi=&WAmp3CYWfbbYh=&YQnXMlZbiklib=&iUTJH_XhbiZgW=&qrfpMCUmUZUVY=&mcG2JNXpkmjiX=&wftSPcXfmsogg=&QSTq6WXUp_iYV=&ItUwEMUkgirrg=&vuNYieVcjbqma=&qF44dVXnWognV=&CI42kyUssqbqW=&wYvYsIWeUYdWZ=&FHXDkgXVjUeYa=&joeW28VdhnXWj=&wGda9xWUbhjnn=&cQrvmMY_qhUVj=&Tif88lVsqgrXn=&pK378wVoVWm_d=&rWQXhXYneWqgs=&TwRYF_VcYhfpc=&tOYv9LUpfdpq_=&xovLejZWdl_as=&nlSXTJUrUXeao=&xCX9wiYdoWXpc=&XTwR2kWbUopVU=&exE_ViYfdidZb=&nZJFRTVZpYmnr=&9w6MYdZgrhZeh=&9toZDPYjhUkkj=&UMZQ6aU_ZW_ie=&8dCfGHUYmofU_=&fm9IUiY_YYWrf=&qCGoQ7Uebciik=&PoBHOyZUUldaX=&E2BrHxWaemaYq=&KsSoz5UlgcYre=&JmKkAYUjfheip=&EDJ9AtVmo_qVg=&E8H46eUglWodZ=&jhij5SVmgbgnp=&yF9PwkUpZanqW=&NyOypKYUgVqim=&qcQoTDVeohn_s=&cUYk6IVbVgnbb=&UTSx9xXXaksma=&HBeZurUilgfVe=&n_vNXoWXqlgjY=&XzvKylUbpgiba=&Bo_yKMXUclikk=&2v459dVddbfjZ=&umImNeYehhXYZ=&XsIKRmXZhfeer=&xyb_SuZopkaen=&CzdzDRWefosng=&RnHACnXpfgafX=&AnE8mPXsfihfY=&vJJYK9ZfrUqpY=&VWUuqgXmmYrVV=&MHyS_oVcqhnaV=&XELpFeUpiVnnr=&X9xHzfWqZjkqg=&vltCjWWl_eefh=&vMVQUlZrhiWhm=&trG2LIXabYYkr=&J_HFrrUbqVXX_=&FuDyLOYs_rqeb=&FKkNYRY_YjgZe=&OfcxtdVgg_p_n=&UHZfKOVfVmnWm=&3K9u7mUrflagm=&2IH4bPVkX_ZXe=&Xe2BxvVock_Wn=&maDGt8UnpoZsf=&T4YQg3WsoilmU=&aHNw4vVpqkWbk=&WVrHgAUn_rsdf=&H2gltjUdlaWUa=&gsf78oZfWhpmh=&Hv4XumUVnXlgj=&JjiluAWZsd_a_=&HOqz3AViYUeVX=&gahCLcVksefah=&CC73TVVUicZqh=&ZB8MvCWXlhdkh=&mOEslfUeqUkVc=&OnOMGgWqVgqar=&6qOmrtUbVgcUe=&ljDDo2UYVsad_=&9bSFd8UbVkVqg=&s4XsCnXmcismV=&GJZEnuZ_eerfh=&VBU_C2WjioZmk=&6m9BV9ZlsaZcf=&UxMgO6Vdo_pgs=&vXmEuNWsXWXrb=&jV5HEqUlsWVZd=&MJsuzsUYgfmai=&aVr5kVZeknllk=&VHbNmoYiYrdgf=&ekU7jcZWag_YX=&zLjWvBUdrrUqp=&QBMlI2Ym_rU_d=&mKYGeRXigajXl=&abIUWOWdl_fYr=&uwkmkJYr_ebYs=&AArr8HWpqlZmq=&Yh6z9vUajrcmh=&j7EMneZdjg__m=&kFqybJUaeegbl=&kcUkPtVYoXeob=&M6qWPUYcYdcYY=&_Hop4TWgpZidY=&WHQ6ysVZncXep=&MbOMoQWnkX_qe=&AXAVdAW_dYaZY=&2H6jmHUrperon=&LsJiTeXcdjYZc=&ao9Hv7XUcigpd=&zEBH5GWcnr_ao=&r8kYgiWfrrYgm=&Zns2ZnVhVZdXk=&Mz2xARYeWUVrd=&E5gTMBWfgggdX=&wIYlfgUbqfjYq=&S2xR3TVjpgUak=&fMFLLNWqXfmgk=&JTrbZrZjeZcjX=&B5tiTRUonlZhf=&Up9FA3UUXpVi_=&4_JEXeXcZYprY=&QzinaUYpdYdVZ=&eTfhleUglm_Um=&L34raFY_h_n_r=&bxHscuWcdlfsn=&iK2XgvUol_Vck=&GokWx5Z_p_irh=&lvukdPZfafeYk=&lqMm8gXpqoUXg=&BMWF9BYXsUlWi=&WDuJHCUrqUkkX=&cvKMmfWZd_XWe=&efQgvTYYoYU_c=&IRLRsYZncjbqY=&FKW7dJVjbfpjW=&HyfxCtWVdjZf_=&Vw6EWaZffdWho=&OHje6hWmfXrlb=&Mkk6QxWerghbg=&uhjcA8ZqraXlW=&aPmuCFXsXicol=&zB5z35YbUsjoU=&Ifatg7X_emnWr=&WBQYSYWnpir_p=&SkAD3IWZjjbdp=&gGvKsgZgXklWn=&ikUNZBYsokWlh=&vIkMjPUkspqcZ=&QASCEpXqlkhYn=&chbbLGUjqfWmZ=&3rd6CwUgm_qpb=&2CJumRZhb_pka=&g4lE8hYsmjffg=&QEdhSVYeoV_js=&_UwBwKVYlsfUh=&9eDNiXZnsZUaf=&a_bQ5HWUgfsUY=&XKzd6QUabjnbZ=&JdKnAXYhhWcqZ=&pbqmpqUdXgbdi=&sR4kjzYndhVVY=&JVV_MTYjWeccU=&yNqQ4IUWeeU_p=&OLJy7yWbqcegg=&sXu8eoUZgXdmk=&IwWFAqVlgbhcs=&bsmXekXpjqqfp=&Lke6joUgWZpUi=&onS5YTXXsgbks=&9gQHeAYiWUmea=&bWKvq_XbrnnUU=&W3Hq4iYUjXplZ=&nfviirVrZsZmV=&ZOFzOxZVnYrXY=&JFDHjMYaaaseW=&5G_AB5Vfqromp=&3eIEhQY_bqkmh=&XlHCxrZVqrhbZ=&raNwpmXajq_qq=&53Mr6gVbqYqdU=&rITmlzWeVainV=&oIC3RhYakjcca=&3TxCwHYfiZlcl=&9TJ4Q6XfZrgcf=&ylCSEsZZpaecZ=&6IzjbSXpUXrmd=&nZfuxuXbmlaqk=&HBenhLUU_kUg_=&aHf4MKVhiqm_Y=&lMbgkVXjVgiin=&SXAfM2YXpgepj=&LdcMxCVaohYoa=&PwvsJUUXVbi_n=&aWJYOtU_cfces=&NFYNoRVelcnkm=&7Y74rYUpeUjno=&3bfs8qZUqriac=&MbpVUjXcfqbpn=&Z6qINyXcnVhhl=&RtYpi8XneXfkp=&qawI33WidgXsl=&w_Z5vwWmYqool=&TCJ2zQVbcbdsb=&Nyi9DqYWhXgcl=&cxoQ3rVkfqnfh=&bhr9MvVZmcnlh=&cTSGdoUdkbono=&3X8wQpUsfnXZe=&3x_noXWciZc_p=&gpy33WXWkfshp=&XtiH_wVakdmim=&JiQkGQWhoVVji=&sz5ZCwVYsfqml=&mUCK2lWVaWpjs=&yB_DLGZheVhmg=&ifmXnrXUWoUio=&JDLgmnWqsogqp=&kCl6MqVkUcfli=&r4Xas4XUrcsYZ=&NQychUZjWkhqa=&fXIGWkUljmnhr=&N8g27FWslVeVU=&DIMtGuVXY_Xim=&slmnsaUhobhss=&A4I9klUaa_pog=&qyCg_DZYfXVsY=&rT7mmoYfYhaVe=&Zq82JYVjUcpnZ=&jd4rsoVsncnUg=&B_dRHtVfemhef=&s_x3biUXnZjiV=&3_hof3VbsimkZ=&R9gcFDZrYYchX=&IqWPeLZhodrfY=&htrsIAXkjhVga=&_LjJiKWhieojq=&meEivKUllZara=&YGDjeuZbiWhfr=&_Db7hZZYYfmbg=&ddohFXXUlaibp=&DN_gcIXYieYcY=&kw8TZJXaeVmgf=&aLu8o7UdVUoXg=&3dcmMyZVYfXqc=&x8QCD5WWciefd=&jqTHMAUm_qXWr=&wlJbgEWelZWZd=&vmiCfIYeYaiYr=&aJa7WLZboddgn=&RMGj_JXXighaZ=&629LJ9VnWdqdp=&hIWizcZdWprgn=&j8OYPeZpaUZja=&poUw77YoXliso=&zDdMGrZbadckk=&Ir6I_mUbqcelj=&FdBCrOVWgYbdk=&5uNTUHYlsfZji=&IQUeljUXfgZqk=&Rz9DyDZZoUWcj=&BbDsCYVUVVdga=&APQUGkZbmpjcU=&2YNvmdYbegblU=&eAuTgLUcfomgk=&ZpVFDCVZoYqpl=&NIrhJHVljWUaX=&L6ck82YpqWqdV=&8gs_V9Z_dikja=&E4jph8WdgXUai=&Ntv6tdXkillXr=&NAVNZnYqYfrco=&sGfUkeZk_Ziqk=&ZunpKPXe_ssYc=&hjzjhMZkemXfX=&aeQJAtYnsgrpq=&Bw4lZsX_ecako=&m3t6VhXihiokb=&FdvTj_Y_nXoeq=&EUMbunVdfZrmU=&cRe9eBXfbohfs=&RCddhwVgiUjVc=&ntVVoRZrrUiZo=&oveewKVseaspk=&TRr6r9ZdbdZqf=&87jnM6Y_dcoYU=&4B8ZIzZk_UoWj=&c7aNi3WqlhkXh=&OdJTdJZ_Ykdas=&hXijB6YhUYoeh=&v_Q6_OVhlhXlZ=&aGXAZWXbUghlf=&ltgtVIXbplnWq=&xxasJRUlX_Zg_=&X22tb8UdfXiqU=&yqz9XiXogrpbV=&brvJUZZbjmZpd=&6woAvoYnXpcjZ=&r3_evaXkgUUYq=&ctxFqeUdqllkV=&8cBPbQVjYW_pe=&87Z3laUdUdgWU=&Kd9SV2Wdceari=&KjXCgSVhgmrUk=&NYFkcJVfZbqnf=&54KqEhVbUkjlf=&O57BCoYVqWnUa=&vm4fM3XkYbdqr=&lXmKhsXdXdmnh=&L3Lx3pXqoZaWd=&7hqKEEZrcUjns=&M3Ts63UWWbrZq=&eJrZJxXnZVjgd=&Yh_SDjYgqXkan=&cJWxkYZmXWbjj=&3Dgrf2VYahZWi=&i3Z79gYYVqhWY=&Y_tmlCYYheejr=&ghvaXrVibXWYk=&lvNeeBXZqhnor=&QcqrAXWiWpber=&OzYuKjXcrjrYj=&StnpBgZhWedrl=&5xffj3UfsjbZf=&m_neThVYVYagc=&WWAshHZkqWm_U=&xHW5sCYbegVkX=&owwIiJZehfdhb=&Fff2CWWVaUedl=&FmV9pqZqnmZmn=&TUzLweXYb_U_c=&pExsrxZjekXes=&cWOeVlZUrXVns=&HnCKt8Yqooanq=&sVLl9KWUYhlaq=&ta6HmTWfksjkX=&zASq5nXo_baYj=&EyeG8SVerapkd=&lPx9VlYonWal_=&RJ8lltYklijob=&WiNtwpVUhsknX=&VPGAp2YWijsfb=&PjKbfrXZlaXpf=&HRVmyxWasUXgU=&3mR5FLVscqfWY=&JmW5P9YmjXghg=&nExPPsZgqpls_=&gHQKdVVXbXlna=&CfxNzRUshnjrW=&aQB5ROWfoYapb=&Vb8FMXUeYhXsY=&PpxsFHXZqVVmU=&_iPpUzZVmhfnh=&GRyiiBU_gkYcf=&G2GUqRU_nrofY=&znsbWqZsaqgkd=&P4O5RBYhdopqo=&798yUDZUjmnpl=&AQRdx6VgVZbXe=&ZyZ4hLVfbrfhY=&_eesulVYbghej=&RndjKqWhferaa=&krHk7UVsYWoWe=&igStH7YfcflUa=&hPHB2fViqasUU=&qf6dwPVa_bshY=&OQAXyQUarscmb=&hF_qgCYcrhklg=&JrVqcOVYbsce_=&pCvVhZZUlmnVc=&KNqE6mWjombqh=&CN5e4YXYYXfaU=&jQNT8fVdkkdrq=&eCiPPOYefdXVf=&lQE5HuYaiZmZb=&Th4kuYVYhg_kW=&L6wXDsZknXYqg=&zCzuWZXZpqWkX=&FrFcuLWVXYrpX=&QeIQGOWUniodl=&XEoqjRXfUWnVi=&IsUQJDZmldfWV=&MW2WFYXfqanXd=&ZmpLa8ZgassiU=&cvEqYqXasqm_j=&_4UZ_6WekYjda=&PmfAROZeWWman=&uYTCzTXWWqhqi=&cY9_YiYlVadYY=&VhldW3V_kejsl=&sEJVrAUhVfXas=&VJiUH_ZZl__kp=&pbwI_dUakrmen=&FhD8NcZilnVaa=&FSidp6YZjjnni=&OfbHMgUarVZkr=&QhRrCUW_qZlmU=&ZuZ2ntXXnncfV=&rlhVsoZlsfdqp=&2qM3knXqnkUkn=&LnYTv7UlaZXUe=&tqI7E4VnWmcXW=&NwnhUpXasYqXn=&rpNwuCVrXdilZ=&4hg_LYWnqalYg=&HWJuaOVXmabnd=&qpK33nXgacVne=&XEhf7QVZjoafm=&JD2sAcVWjfhdp=&UrDD89VXaaUfk=&772g3wXjZeqcb=&QO4Ah4Vrmpmdg=&YMXQFiYmkXkWW=&mSYYlbXoWWhdi=&4f8baRXogcaUn=&lqkMFtWcdogba=&s8APrVYhceWfr=&Uz9sQ2Y_ljqkX=&W2fVkFWenWklX=&eEo_SMZfYmUiX=&NJA3IeZqV_obW=&y3SbOxVin_ngi=&5_7VGNXndojde=&HBPqhrYeWsjli=&3s8BoiWWqdUhd=&A7euqhWqX_ker=&QPRw84Zmipofk=&pEct2jUpheUkf=&oFOaWmZn_nsnW=&ChPWoaUdjmZrb=&7J8S6EVheXjXj=&VK7S8CXZpqYff=&2mYnIcXqZhVVk=&rkvAauUedmqXr=&kbJA7OVYkbhWi=&DkquaFVfsnqos=&alORBOXiUdpsX=&qVrC6vWoanhUb=&u_GWhsXl_gYjl=&SQa4YxXq_lqWV=&Jm9HsbVrYjilk=&jUo8B9Upmikn_=&DJodzHVsrjnXb=&ASGWxMXfeeicY=&EgEBMIZdno_mn=&9sgCAYX_UlhYW=&h8nFI7Y_sfcpV=&sA6R5dXseocbW=&OSFfISXhXmcXb=&VMMaqcWYsp_of=&GGzzZOUVdUZ_f=&Xqv3pWYnoaWnU=&tRUCnCZVan_bg=&K6dSteXrrliYi=&WwzfhZZjUalem=&gZAJueYqasils=&dIKUCcXlpdsrp=&UPkgsFXdef_gY=&SiquBGYhsrosk=&ERWjZCUZcg_r_=&9fp4ovXhWsUnW=&CditpHWmeXgll=&E5icn3YsZpcUk=&FrKZ4HVmdZVee=&lawCFXYbaUWXk=&hmzZ8PYfhZiYf=&lVFKgOXYibhhk=&CdOB6pXkldVkh=&C5XNDYXddgXkY=&Pd32McZiWgq_p=&ue8aucXgVchod=&p3aCirWhpiarc=&Gnh3MsYkqosap=&tTVfwjYiiqUss=&I5BjoRZeqbefn=&txL3IEYrXrbhZ=&ZbXYvFUrdgWgc=&Ef4gk_WZVcgmX=&PgzwU6Wkqcfsb=&FpvcDeXok_dVo=&s2wAyLZWVWgVc=&mt49gvXWiomVc=&H2X6yWZipkdag=&JS8GnJVjqja_Y=&5WiWo6WlXhbeY=&BkcldNYefmkWU=&7vaf9WYnanUXa=&hXOjaEUZYaebs=&jXWwVXXlWobZn=&CI9rYdZjU_j_s=&sloXwTYcZWosd=&gi4ANBWbiXpqX=&UkeUAlUfeneee=&TXZ59LUnkrifi=&ojki34UpWkgjf=&dADyNEWhWsads=&mwQbHjVoVeWgo=&6DPXW2VeaisZi=&qa3yKTYomhjjj=&AkxygNWcnhkls=&lYqi68XWbpjim=&lLBiZ5Xee_XmX=&o9VhbaViVnahg=&_lxfEDVsleXpb=&tKHtU6Xqfcnio=&OhPpw5VaaYbpb=&R2SNHYWWbd_V_=&GwA7YeVcpXmbV=&QzXl_XXhUlXpo=&FG_A6lZasYUjU=&WWmzDNVggYqdg=&jqI3qjUenkkbh=&AXVmUEVoqaVZe=&zOVrX3ViojbcU=&uqc4rcZW_Wpfc=&oSk4QCYlmZZdc=&9SsRURWrpcgXo=&YBr8BNVg_UVkq=&HIaUcxUWajmhj=&ENocqkVfoXrWo=&WZGJI3UsojpeX=&xMhRgRZZaljgl=&a3lDi2UiolUlU=&2F9d_AZl_iem_=&EqeCBzXjUZjpY=&7S4qnGWeVnZjb=&9Nz5DYVmdlWjq=&kMC38MWfpUXli=&ZesFwwZZjkpbk=&qptJaNVamckqc=&7JxK5UYVXseeX=&YPnGLrWeZXXos=&fbc85LVfUgYfq=&r_cwM3VkfWjkh=&otPkUVUqVUk_j=&A8dRNtYgpWmXe=&zZxEwwXWXboij=&tqIsxAVcrodWg=&rmyRwsZfrWWdh=&tTkIZOZj_spfg=&YGZoBYUqeaZpb=&7zirNWWrajjnW=&67BJhgYYdgeUU=&JZlsZWVVsgpfX=&9o8hmqWsVhZg_=&aujdEXVVUUgbV=&2lzoO2UclsXen=&UJShKqXUsmnqd=&pDOxjvXeUiUgV=&hc62wTYYUmUWh=&pMB8NKXiYccVX=&kawzX8Ycgfrcm=&toAwWTWqmeeZo=&j8VpujXfnYVke=&5gKILBVba_Vpd=&kZCBi9Wkiaeji=&diDYYGX_mcUXb=&UBAtqiZbcZoVX=&dS5NjDYfnlmoi=&CooVeqZajUaeo=&UtRYXyW_hbjf_=&HJ8FHxXmegmrV=&JEDUYFVWWVVda=&YhyKmiUgifpcY=&89qOpwXaVX_kW=&iJsjDLWhXclak=&79NqPJVhhelVr=&3P3yXxUjdpgkb=&GHtnHyVcbWpsk=&svbu5sZgZZpdo=&3OTbexVqmnkiq=&FcKcRqZqWnkiZ=&XctLWyVsbZ_eZ=&vhExW7WXpXlea=&RrNQVGXhWYsfs=&LdaFbTYknpqgs=&H3uxeTUcaqerb=&xbxh6zVaVjVVW=&33lIHWVfhgVYX=&HeHnCdWcZcgeq=&BRYChiVkaWacb=&PCYChhZi_rnYd=&j2O2SJYUer_ag=&5okcmNXYkrccU=&GAw_bXWUYpXhW=&eSgCrLWie_ZZj=&gXBzOyWnemVcY=&pjStKnV__qgWc=&HmuuDCZrUXUnr=&jlMFhdWZpffhl=&5BS8GKZqZhnnU=&6iSkvDZZfZb_d=&YfqgjXXiZVsns=&YBAtSiXkjjcso=&K36dNAZXmYfpW=&geqkdAXels_ko=&fjqHoxZqcjjWi=&mFakMUWnirVWf=&XwHi2jVZ_eelc=&kakZWeXilWUma=&yJKqdiYbiWkWY=&4QIO4BZrUjXhh=&qk3xDUVdWsabU=&EcQGHgZriVWlg=&SAbrVGZhonjfr=&7JDY77XfVrZrd=&TRBvrZWojYbUn=&2CLM7NZZYobja=&EJKLgaUpZVUc_=&v2Ys3KYe_fjYj=&hIplbOXgsUbVi=&OD3ZGSYYksjss=&iebID_VqfVfsp=&rVLcPHYUgqYUo=&5AdbzHYimVsaY=&ni6vsFUqmXZUj=&7cyzcaUjWUjUc=&KEchejWldaenY=&pRTLgZW_gseUk=&s7wZ3LWn_eoW_=&E85_XEWXbpilV=&84l_7NUjUorUr=&M6OaQLVWqiXWh=&bT28RGUrrkkZl=&tyCAQIWraeVpn=&CyMMwGXokVYir=&ns3YDWXVmrfdY=&BOSv2NWbWYjcl=&XR8XARYeVVaUe=&uOfAOMUfmchbn=&wZ44f4ZsYdqfd=&JinrKzZVndVmU=&fuFKocWkWdafh=&Kb8uRhZalsZbZ=&u833VlZmljid_=&h4aNqNWZX_kVe=&HNHmL7ZnYhnbg=&A33VTaUWqspfV=&WVB2KCW_lsXph=&LHKAZ_Wjefic_=&F5Bc6aWiUbnpV=&yeYfYIXraldcg=&PhLpirZUsnnpW=&VLspAjUXZohio=&MTs_lCVdadVhg=&vyPAPPYcfbeap=&fQuKr7WVdkrXl=&ClGZtuVikfqaU=&qZrqe7Ybfghpf=&yF4DkdVggkerr=&AD9uF2WshWecn=&JsTlq_WgskiZb=&6EXJYtZWqiqYs=&9tY2ngV_jfcpY=&Aegr7iZ_fmpja=&WAdEiWXdUblnn=&GMHsb5WcVfojU=&Nkl_m8XX_WisW=&W6xjJhUnWgnnr=&pjYHyUV__Xjkb=&bzRg_VYlXWVsm=&K6qFMJVUXpaVc=&KrtslnUladZln=&RwKm3SYrigikZ=&FyewLQXqomXgj=&8SeBd8XrhhqiX=&IiqxEaUgqrqlk=&YAxwCcXYjYZlc=&Tcn47HYfjUmcn=&hzMCZKUVgrfqj=&Ol8nkwUskh_qf=&ZiKpUzWrlgrYp=&HjdqT7XUfphbm=&55Xt78WVnihnW=&cwwP2WZqgZpdj=&uOpaLgYhWniro=&sM5RcBUrpaYdi=&kyCA3aXVhk_Zp=&K5NiJRX_Uiddb=&BbDuFSYn_q_VV=&SmbvlyYn_nsag=&yLjiP6XfrVUcr=&kPJj64Uqemr_n=&yROwOAYqoedVm=&YVavMyXVpgsnh=&nmrrqaZmXobar=&RDM6NgZbiZ_pX=&3YpUFqUVq_gUm=&g8ouC3WamWcse=&8cpbgbXUareZU=&gcK9QNVhZordZ=&vOt5xHXllXcVW=&AJrDFrZZskmam=&OswDj2UV_qha_=&NcRxrcXphVbdn=&I5sTWmWniYkaZ=&wyWX8_XmsUrYb=&IsGM5XZnkrglm=&PumPLnVshWmgj=&NWDHy3WgYjsbq=&VLEzqrUqU_lss=&RuMXvDVZahlWl=&qlHX3GUgplqdZ=&PNzy8jZ_igmqp=&IH6ioSUdaqg_g=&FGKkWdXqXagmp=&TkfIMsUhXmpXj=&bsW23oZmeqZpW=&a5keCwUpUfpqi=&OrZ8ixWfkdson=&C4wWe4ZUccooU=&pIiOzXW_mdrsW=&O8_H7iZegYalf=&LCyBsVZikfipn=&Xb65EEYjr_mYm=&J4oSEyWdol_pW=&_iIli2WkrY_Ye=&ypKwNaUZjccjU=&9TzoLzXrqdWXf=&btFIj_Xgkamqm=&I3PFWdUVo_jes=&vRXahLXVeUeVb=&LtImXJUbgYks_=&hp4LCQUkbsmbd=&KP6spQX__mZqi=&Y3BajQUq_fheZ=&CRFUFjWnirfka=&Rav57ZYheZUoi=&PegjUhXnsYord=&YIlsmvZioYYXr=&Vz_rKiYkeUibj=&MM2y2yZmXkdlV=&ZFW6iWXYaoXXb=&HX_oKRZsjc__s=&NAow4wXarWXes=&m_gWDJZ_jXYmi=&wTQQuCZ_WUVgY=&QBKQq5WfqXUsi=&sbamH5Ugljqab=&AGXAFIXmlhmZj=&DCUtZOUnfagsm=&FaABFkYjlYclb=&SQVKg3UkaoaVr=&l9RWxdXdlgran=&xDvpNyZqfemnb=&Qtk4jKVVljqWk=&Bg4isPXieddb_=&I5ELj9ZZ_jgss=&otFJkXYesnbpe=&hnpdIIUp_aaWg=&rKqIh3ZZsrZUp=&4Ho238Xapkerg=&c_N4lMYkbehU_=&LMKwCAVmlUcoq=&5xvLUTVqcUirh=&Ffq9AJXlmhVqU=&qgRcnMVkihUsr=&HQEwyoWfUorce=&kVUwLOWcaX_dr=&9_vTxjWo_grfd=&HtAl4_XhsmraU=&2yow9dYcignq_=&beVpQZUp_fgje=&x_JiUvYWqjaZq=&ItUAtGY_WViqq=&ZVckT6ZiXrfor=&NLsBccWdneoqm=&YHFvrJVqpmrcZ=&UpZelXVdZeXXe=&gYNwDwWspqoXn=&bp7QSjXqpinhe=&aSiBVzWsnehdX=&5CgsM9UbWhngW=&b9VwyBVqejV_d=&uGijbbYijgjbr=&IUWepUYflsgkq=&gDyu6rVaUcYWf=&T2AW_tZieceXc=&mDKL9NWYnqWZo=&HaVY5oZibZZro=&LR6DebYqqYikm=&QLD2zQVdglZeX=&y_vHSyXiZfh_l=&RMsPFSX_iXcZl=&tzxp_rZgnsphU=&ukc2PVUdieYWn=&YJ7K_tZXhgaaq=&_3Z6R2ZfmlmZb=&t2OAVzYlkespX=&ZTBkqUZVpVasU=&A7bYWEVflimnc=&DhvQjoUVmrbWY=&zhJSuOYniamdo=&xHxV6uV_Vsedl=&uciAD_YVrXWjq=&9V7hilVanilej=&8AUgH7YksZdoh=&h9n94rWacqjnp=&a5mOzrUpklVUc=&WeWxGWZqiffls=&b5ExeUVfgYdao=&uC33i4WoWblWa=&ZHpTPCUWbpdcn=&nLbtl8ZaapWVk=&aeWr4LZ_Xklb_=&u7gpdUYoU_iWd=&6EIaGDXemUVZW=&NWx_xSYefXVYf=&CzzTBOVlmjcem=&acoRCsZqljYal=&OuktlfYZoiWdk=&WfRC2AXkWUpnX=&EReELWUrVrafp=&TjFpuJUXfk_og=&4iI8q2Wsbbmbp=&dBuDekYWpras_=&EDghYSZfU__gr=&RmX2iGXZmjf_e=&TMOk65WYZcek_=&nhHFu2WdWmUkh=&x5J4XWWeliolh=&XuA2XUVmeZimU=&s9SmrvXopcqpg=&GzzryoUnmaVqc=&ybqAiMVljmnik=&2bbfwwXmWbjUY=&F6Sh2XYUUbrVr=&ENGqwJUjsUbaV=&MeH3YBUsjggga=&LdvHaiYbYcZ_d=&agxHahWbZfoml=&pHbQwvVZ___af=&vCHxFuWaWerVb=&KaAsCUVVrlVia=&jcTSwYYragVVs=&PFEWdlVereYgZ=&CMYWPUWbmenqm=&eT4rJ5YUppn__=&ByUuyzZXWpWqc=&5NnNSGYVdZZWW=&cq7735XaYfnas=&hfd7oGUjqraZr=&4WyWLkYhjdVlY=&7gTDRSWpalkk_=&4JIt7aXrUZddd=&w6W_i2YoZgs_Y=&zHR9GTXecdWfY=&CVQVh4Vgpfeee=&yaelTgYhWkhsj=&AmUFzwYVWseai=&eLTDSEXYlbomX=&I2BdxeUZpflWX=&cUd8t2YmVcbVs=&FwLNiDUWan_Wo=&JOqP2UUWpqiVq=&_L2vgvYVjZXsb=&q3CTwBZobsYbg=&H5YpGBXWYmcqZ=&9rwe7wWnlZqdY=&dtkjUHVmVjfef=&EDG7KtVYWpspk=&C5WmXhZWsqnWV=&gJhTbOZnbmVnm=&hbsqhBV_okUqm=&ldI5BJYef_XUh=&QEHq3rXqXpYkY=&6B_PnfYZjZjbX=&fI9K6IYpVWgWj=&lfhZNyWdkVfdg=&XmMuhIVbqYjac=&vY6suhUhWVfUn=&FciygIYXXYpoh=&IGvqshWXhddrs=&6XFVLfXbdbVnf=&_THLQaZedkcXj=&vh3GPsVnVeaXa=&xeqqsTXkfUlqo=&I6GtkHZUsrfch=&33PtnaWcgfasn=&IO9pZMZYmZdVh=&DxlrqkWVqmmpl=&seLqLHVrnYjbl=&fzOWmTYjcqeWn=&6VIcMmUsVidmn=&3Dv2qNYXhpZZk=&cgXwhdYj_groo=&Dm7vI7UYpmajZ=&pd7TRLYqqjmfo=&xY3ETOZhZWqpr=&ATeQAzWmkUlms=&2QvctfUlhjgis=&3ab33PXiYhfjZ=&CfTbYFUZqZsqd=&N9oNAtXinqU_U=&sYU9UBUqkVonW=&7BkJz6Znrmeis=&fH3HfpXjflYnh=&rvHmNZWcWkhfm=&RAtxnbZWUfojj=&_WimSFZiYWdcU=&v9js5SWWsVoqi=&T9JyX6WaUZkjZ=&ylQMMbYcVbaUh=&ZitTXMUVVYi_X=&xL2XAaXab_dZp=&FPhOB_WnVmYda=&VN8AdwWmsqYmV=&J2QFz9XbUeprr=&epOvSZVZhXoYq=&THQMcwZolVbje=&wbRHm2ZpjZili=&aDNTCpXZnfkml=&LMbPozWpgUUkq=&SLFXrTWXnaYce=&l5halgVYskdYg=&bHWcIqZjjiWeq=&eIxbZZWqXlrhl=&kTpmfiXorZkZq=&2OnRVUVlqdjqj=&w2DLcQUrmVdjW=&AFJ97gZ_pbidp=&2zHvSLVUlqYXl=&wOYyJvXWgrhUU=&m6h6rVXfXbWdZ=&okIvUtYYmomja=&6k7ipoZrfigoc=&eNZuGhUbkijff=&cu_tKXUUkWnkW=&rTSESZVrmjXbX=&HgJYSMVpcpsnd=&9mOL6NU_nVWa_=&oDBfKSWiokbX_=&Irk_bhWkmcnsl=&zwqSHSVcddlhm=&IkNQuaYVkfsrb=&yZFLgIY_qYWYs=&3yzwXYUdheeaf=&KkFX_HYVYYnos=&4tWn3vYdaXseh=&7vRMqyVirhnbY=&Pd69wWVaUfspj=&i3G7wGYlYZndn=&DULlbeYehdhhV=&tdwcr_WconqUr=&onlML2Wfdepmm=&HzjGBnYVnbWap=&CRSbvGUXVqWfV=&pAWslzZgWfVmh=&kizYf5WgidUkg=&Aasf8aVlaUaVU=&jDfr54UjaXojf=&O7arkFUWidhad=&YBuWV6UliYWXm=&I_RzYhUgipodU=&I46iSCVssUhcb=&tPoORqUaXYhhb=&wpLaxYZsZUUW_=&HklFdVUhXoWjf=&CyNfplVrWmaZo=&gabeMrXfq_Wef=&gxbj4JYmXaXhV=&N4uFihXiagZ_l=&NhjIFeZpdUYcc=&y4rHGFUWjmgck=&oqwQ4hVUreiVi=&cY6fRGY_apogb=&dd34LCUq_lsck=&5KyPsbZcie_YU=&LXqu9eYsmZmUe=&Ep3e5lXWdWUkV=&6YDluWZlgZlbb=&k8Q5geUkqeedr=&t9NsJWXoanoms=&wC3iOxXZslbnl=&bEE9LxZshkdrg=&Rw6ziEVYndVVX=&mCzDkeW__lfcf=&bDQXWNVnlgUYq=&FFfQ9bUhhYoor=&bUa9xdZ_eo_ef=&Bo4YJfWqcgkid=&_lIwYzYsdiseg=&92AxYMUiaVcbf=&XFJamQUlpXahi=&mhAXXsXjXeocZ=&Nxu9hdVerpdbo=&YAPwvmVfVdsbm=&ulmCAiUWVqoYV=&SuhnGoVosXrdZ=&ko_eS8Vqeifoq=&OklQpeZZogoWp=&l32nyFUmegW_l=&czGB95UkqnjhY=&oBdivVYXsqZVk=&IY6i2kZkaYmfX=&XLIljuUqs_siZ=&rgnLQtZXopikq=&UnAGm5ZgoVaXl=&hoiZWyUpUja_b=&M5VdUsUpUabWj=&SxY6QaVjXqaVn=&FcXY4WZcXbsgb=&YinnEHXYihlab=&5HenRiWakifp_=&ovQGiwYcgfqjg=&aIOOSqUXoVYn_=&IceMCRWkejYal=&jgL4gpU_ggZWo=&_7ObOxXl_frqh=&jBqRoSUnckmZe=&BnEGk5X_qdqgb=&V2hlsLVXofWod=&pAKhpbZWmjrqs=&rVCS5bWVWUnlV=&fERFBPWlXfVZb=&gmOM9RY_rgpac=&HtOKanYgkeZfc=&RziCK7YrpdbgZ=&9SDyPeYboYpab=&7tbCwmUZgqfcZ=&mwncFyXVhoZ_V=&N43hoxXehVbof=&oEIofxVUjqngg=&bDwSEuXYZs__b=&EFin25YhnnpsU=&VjTNiyViWogUq=&qMTX2RUrWfha_=&EMnR7yU_fUkUk=&nubsyrXlVcfgm=&FCzBweXldZqfl=&GfLpMAWnloma_=&wLELMAU_bpllb=&bJeG2XZgqnjoY=&yV6BIBUadadno=&vpcwHfVfVqlej=&BftHxnYliqhrm=&CBHt5pXeliVaU=&TtqhT9Vkmpgip=&aUXbVmZknifj_=&n9w2HXVelpkrj=&bkreN8XhYUjqs=&wTYxo3Urpkoor=&etQdoSXjYWggp=&lbLjLGZ_bnpis=&YWKrN8YplUcci=&rMjHnNWrYcnZd=&usZZpZXknqonW=&mLNs3jVkjZXgi=&GxADYVYhglpkZ=&CNMzh5UjXqVXo=&gBdxXoVWeoUka=&RlWabXWmdgdir=&ftQ3rzUXhgWgd=&4Jr5V3XobhWi_=&E6CQENZYnmofW=&_G7KWJZsVlkfs=&V4I4F7VWgpnZj=&QO7cooVWYamqq=&_zJhCnYgokcbg=&QnY5kFVldc_lp=&q_PO2mWrkoikc=&cZO6WfXZZWmqj=&ga_AwcWpmojpc=&QKdpdbVsaapfq=&EFqBYhYpfcoWW=&rC9mCsYmgj_el=&inKW2eUiZgsnZ=&fQitTLUhobkcf=&6QBYe2UUmhrac=&opPI_GZVsgYsf=&9xzPlcZamnncc=&3PgDaAWmsdbf_=&SQqXVeWphnimq=&6lGpZ4Y_heaqf=&pSDgkcYrslXse=&RQBEDtVhXnare=&HnKcw7UhooqYs=&DvB2rDZrninbU=&GRYUJ7Uplljkj=&3mYZw6WmqWUWr=&WVd5zIZlmkpqj=&m_M8CQWiUchmj=&FEg_HrZUseigf=&ncfmXWXm_giXa=&O5bQiuU_ridVn=&AkdRfhVp_ensY=&df2h8xZiVYkkd=&6dCO6zVqsqYog=&YEmsI9VeUajWd=&kYIzeVVVacrga=&2fqCJlYZYXmod=&dK9JVQYlkXas_=&znQCZkVabrZXj=&EMs8KBXbWgfWi=&fnEBsmWkrYq_b=&_AM6bGWbgoWbh=&KDOpxSYdWYfZp=&tlXT_9UZqldVZ=&3EXR32YofkVgq=&ghERzFVekcpal=&EIBQDRUYmsYiU=&FlV_roXYXbchV=&cdfdezYYhbgfg=&DQVRDDXriiWdj=&OYU_YtYZm_hVj=&xT8rSBVecaZhZ=&RYyfoQYaqsajc=&hwekolWUonlda=&HFosyoVZsgemr=&RHXkYzYggdUqk=&LpPeZSYicrgqU=&CeIr4YYbniahU=&HA5WXUWcoWUeV=&juKrpxWrbiWfe=&pWJFJoUkdXohe=&mCkdrPZdjcoje=&gh2hB7Y__sYls=&D95iwtXkbpgnh=&xZqk58Ucd_UWd=&PCPUEdZbZbdnk=&jbISuiUfbgone=&rhh_5PVUqaUZV=&J5H_YKXpehafn=&YWIEujZspsXUb=&PQovATYmahXg_=&wjilw3ZWdaa_d=&OxT5z7VYUYmql=&VUmMGxW_cnjgZ=&TEMtsHZpho_gl=&Ele8SVZiaVsiq=&ekG9vgXbeohgV=&qySAiIUrlordb=&2AdjC2YaYqVgo=&IawgO9WgmsWdo=&SFpEl3UqYkZqn=&wTXkmCYXnWfUW=&MZFvmoYcXUXqY=&uqnMH2UUcaqZf=&p9FbABUhlfqie=&H7BGENVlidacj=&Qpy4O4ZiUV_oY=&moPev9WnZVhgf=&XweaPDZXXaqVU=&gEZuUEWopmpck=&DYpIl_YcXessr=&mYt6ujYXcXoln=&gaaZYIWbjgbkn=&ywsSyRUckpWfs=&piYvCMYdlerXd=&5alVykZjlblmi=&kE6zxHWhjWUXi=&Remj3HUfdiZVq=&CjLN6bWkqjsV_=&HedqFsWg_sllU=&7pXzFjUbVVm_X=&Wv9kqbXlld_oX=&L7ghnAZgfgnsl=&QwULl7YkpejZY=&jkkAuVYhgWjkr=&HKahoOWcoZVpU=&wqbe23WisdhZm=&s2FjlsZbolUrf=&DUUp2nUZXWZkW=&B8I8AUXXccpdg=&SRdfrdYhkffZk=&xhCFpdXbmqgks=&CEsWuZUmnjfsf=&sXZSouXhdYXYd=&2BtaeGYgVZqXr=&NJjbSvYVZhiWj=&iXtyqeUWhanUd=&rybaftVb_se_h=&VZOEzpZbgjZZU=&RsWTx_UqaWj_f=&GE6UZkWklpXgo=&rutblLXh_WqUW=&2WllqYZpjfZZY=&AyL3F8WdqZmVj=&Rg7XkiXraoZYU=&bXQs42XXncVhW=&XwLPGUZchhlai=&Ajl9YfYicZksl=&VK9rvjZkXWrXr=&qqu8WyZmspbr_=&aMHOWZYmrmeke=&2xcQ8_XpdXVVa=&nLo_bvZrYeXck=&SQSJEoZmVbUhk=&LKTgSAZmmZYgh=&EWg7p_Ujdgcll=&fqQTpNXWfVWdb=&Amc7a2W_cXXZj=&wMOMFuZqbsscU=&kgiD2QV_qYmdX=&RZUxIsYYcfcUd=&iNLDrBXmYXWbf=&yo7hNIXhqdVfo=&8HCVvJUe_jZeW=&9oXfEVUYsfpoe=&2rrkm2YprsXUm=&DRsGDcYVljibo=&HIQVA8YsaqfXs=&ESjBnUVYkdlYp=&KPkElcXkjnmsm=&lLrZjbWpqprkk=&BIeSDIVVXkgcc=&hmS6vhVgpnnUj=&3a5sGnUclfpjo=&T4pgx3VraZnl_=&23nq3wZ_WgVkl=&4vL8UlZh_emsY=&kMqBhHX_sqXsm=&efWeHLZhpVord=&YC3rRoYeeebYc=&cRxFfWZjsncYi=&NCrX9mXXkfocX=&bfM6CQWaUb_hU=&zD8COGZZjmgsV=&6tkg3PWfqscfe=&nwDUD4XXeqbkY=&Ry5dvuXhW_jqn=&8ofSkPVnpjZlg=&py2oPcVkfgkqo=&W7R_vvWlhnZem=&ut6LmVVrVegc_=&KdAvlsVjXsUaj=&CERszvVo_hdUl=&xtgEhIYhekabk=&zDqfnhUo_iUXZ=&45rxaDZqgWmki=&9c_DLDUWeWcdV=&oLRobeXnrhncX=&oMlyKCZpabcrc=&COjlnNYlghqgr=&yvfjviZerhUmg=&ZYlwwXVfiXkWp=&o7t2JkVfejVii=&sCUXyTUfeaUUU=&jiOiajWqWYYYX=&5NUVAdVrVkgop=&iN9RPEYfsdacm=&DBDFjTX_YjpnZ=&pjliUXVmXnlnc=&eMxktqWbYnflX=&SInpjQVUsWjm_=&2mB89_WqgrYhe=&_jrvubXdUfh_j=&VRPlybYUWrfs_=&xglmybV_phkXa=&i3GbKAYZrsZYV=&BovlIQUprkZba=&L4avuBYbheibc=&mAcXw2WmqZaqm=&kzDWTxWnVbpsf=&PgTRqTWniickq=&K4WWrKVgohajo=&6ivs4QUYcbbpX=&H56IGNVhf_WcX=&RzllwjYkn_lnZ=&gv3JA4VeffrZj=&hbbOamZpddhgb=&385skTYshpb_e=&mvuYnLZqnlifW=&U7uQZAZhVkVYe=&SujenMUXVcqcX=&OTwyxuU_dqUXX=&FgfQTxWmYhnlm=&etUI4FXXlsWXW=&pINEPaVricjqX=&ror9DfYUr_XfW=&wjRrKmXYchacW=&mGvkKqUiesgfp=&ZexK8sWbalVYl=&L_Ev6jUnUdlq_=&5M27H4XnmWlYp=&RlmEnKXsmWssn=&9asWxLWniZUbo=&fyhhKiVsYleka=&FFb79KWqWqhWd=&2vicwXWidejkm=&8XjomdXhjiVgV=&mdfnUsUdmanlX=&h_o_X8ZmdpmXk=&K2R8tTZZmdibW=&2GNZgjZpfjcpe=&5egXV4XXsWebZ=&lP87eVVndpcUd=&ek3Fb5XqcbldV=&6tzXTbXaonmed=&_4r7MSXcXWnWm=&MTUgAJUqYcglg=&Hla4euWdUUaWd=&k9T5FlXYdrpgU=&fuBweOXqXqYef=&zaChWnZUbYgZb=&2anlSrYlkWaos=&eeeeemYZsiYqq=&XOtZ7dXapmhln=&RHdJ2aZmUlcmY=&SCoGqiUjcUcca=&9l3paNZcfWqcc=&WrtiA9Yd_ffYg=&ZLsaj2Wnppiaq=&vaqWFQYWhobmf=&J3xtJFXUdrsre=&ew9RYJUrqqYe_=&mLmGbDWdUUVfr=&x_4jqKYbpdUaZ=&JclLn5VnkagVW=&N3jBuyZfphdql=&mfwkJnWVVWdel=&34lsddXdgjlns=&oV44LbZnWenkV=&qosyDUYpbi_gU=&BVatfPZcYmals=&BcOMiXWXikkff=&TGTvYmZq_cjeY=&GLEvHlZgrrkoe=&L_W44IZrWZqcl=&DsTzSaVhXh_WW=&FLe5JKXfkXrVp=&QuxdpQYbXWsii=&_yAgEdZZgo_eg=&cXrZd9Xfalcpr=&H2zmHiYmarjeX=&O4Hfd_UV_bjUg=&kwf6BrVZmqgcj=&OWPLfqXYnjkje=&p277aLWcYsojh=&6F3mC8Zropljp=&vaWvu7XcWmoYq=&LlaXLMZehlhUn=&5MWELiUbbdeel=&p9zwt4Ymmpnjs=&2FEgH9YbWnYpX=&cLZfjPXodZZks=&llfw6nZlkpVUY=&UpKqB_ZYp_hom=&suWMCTVWaoXUo=&4iiFkwUgZpkUj=&_iAEZ6WapYqag=&MWFukGVkZb_Vc=&EvuR84Uprqosb=&oEIB6rVpWliYd=&NRhtWJUflmUga=&bqvUBoUjXcVWV=&u8cegfUlgcVUp=&aE5PaJYsgpgmk=&eINAMBXnUUd_W=&cceCb4UdZpjUZ=&J4OjiXXdfehpa=&dW5UldYo_nY_p=&ZzuV7mZdVgYfY=&Px_GlNWbbn_lp=&ye2NWGVmhXqrZ=&Nwc7vmYjVpjsb=&3P56MnViddZZl=&ZGV_kiWsZhUsV=&7vuDGrXgfZXUs=&odCNZ2WsXmsgW=&_zfH68XXiXUsf=&pTvFUVWVafrjk=&5jwedIZg_WVhY=&KS9HdsUZspViU=&8QYUHxYjsfXnY=&awcba4WeibesW=&rF2misYidlnmj=&bdiINBYYUronl=&msGJg5Xkgnk__=&TwhePhWrhdbkr=&U5jmU4ZZfUsXp=&Ee3ZnQVsWjjoY=&GKAzoUWYjXdXa=&hxl7mxVXXlgYh=&ZANmnZWXhamib=&9qeGfEXlqnadg=&yvUtIXWZnbXfj=&OdkzmvWmqikfp=&Pgf2_dWnfk_ed=&BfaZvcW_Wmkof=&KMkCsUVqdhgcq=&efCpC7Xcm_dcX=&S_gV4kZgmhUfe=&udQ9NKXdqeqpm=&jkQdwWUfcYWnl=&mFUl9DUbjWped=&RLtidpUjWcXnl=&zMdVLUUi_gope=&6exiupVcgspdb=&RyykiZUUbUqqW=&mYnhVtWee_gji=&d3Qzl6UlicVpg=&O8vXCyZXbpXiX=&rdC4EVUpgYnan=&cGjspTZdifVlh=&FiTxTFZXdq_on=&cSJRIFUkWkaZr=&zykW9XWmZqqhh=&BJDGTiWmdjZhd=&mmEaxmWpf__rp=&zxBSK7ZsV_crf=&ymfcjIYskiikd=&H3qhlHWbohnYg=&Xx_XIGYenYhjj=&CrqKN7VVfksig=&e2FJ8xXnrninb=&IHbohvXWkmUWW=&QFjUqqVVmhmpX=&MmityLZgWemjp=&HkVXwHWVddkcg=&2f9ULmX_grnUd=&QbEQW4WekcnnZ=&HenHgmUmo_dql=&VD_KeOVdVpqj_=&67hWuKZkbWdXZ=&bGQa5WXfsYhYV=&I_cQYEWkeXbgV=&iMlFj3Yphcpfi=&m9ikFlZVemZnf=&lze52VVpZokff=&mZeyjQZbk__ih=&lw4AuFZpZdUes=&eLBVtFWVpjhkc=&r7aLCcZZaboso=&YJIHJoXXaYoia=&Z_vMHdXiipofa=&kNn2xsYiXplaY=&u4ShdvYiomgjq=&6_tcRkYVbdmeb=&eLicERX_anieX=&Wf4QAJWdcmdkm=&K2uiw_XibgpUX=&dFYpamWfaXYbn=&h2cPc4UcYmmYp=&_GMtTbVdqcaWm=&fHW4tzXgihVsj=&J5fSHqZrohaVa=&7hKUcMZiWlhfa=&jcSK3bYjcbVVj=&2bBVo_YsnoYiY=&LbnaCnUfgZocf=&bJSvyWZYfjafk=&e42yXiU__aU_W=&4e5vNaVrkXemp=&ZxPJ98WcoeZUn=&eypaQnYZ_nibe=&tvqqTSViqbkWk=&lXuvhrWYYkcoq=&Wi73SXZnbspeg=&9wCUvCWjqgnrd=&kPLiZZXblZbdV=&PT9zbPYnsncqk=&PPBWRaXYpncqk=&npC56_XVjkXmk=&QFL6mrUlrUmmX=&_XrJyFVarcdjZ=&WbCYU7VrlWVgU=&JsOoEsYgs_Vnc=&tvXUkkWhoppmh=&HZKSnbXjnmoWa=&yNJrJPXVYgdqV=&XALAKlWUimgVj=&N775yZVl_liZV=&i4PgAjYlmsj_s=&vx7HToYbmdnic=&mDiSEyYbnsfri=&GlYX_dZalmhbe=&alEXVTZrm_aed=&fxy4lRVpkW_bV=&T4RCYXZeicrpm=&zfFR2DWqrkqek=&8iF8aaYUamYbn=&2E8deXYmpoXjq=&RJJt75Zd_WjUg=&lgmL99ZZmacdi=&Lk6YeFWogcjZa=&5IuvOnZsf_qYh=&bjLBJCZcgkfbZ=&PutwRTZmpeeqX=&O46VXrYlrXZbZ=&tj7OS9UWXorod=&SPdCDiUYbore_=&iuVTANUZZd_mn=&i3Y4M8XmreYZs=&xBJPPCUmichsZ=&TPlpuEXeqndhX=&mjD98TXYdcbjp=&r9EhAXUrgkhbV=&fnmKcLVmhgkVj=&dNryMBZlnsrhm=&jhtm3BUnUYeld=&ZslYZuZmmrebp=&2QLdpYVWbllsl=&jWzUEIXsieoq_=&9rYdYNYdrY_ci=&V8aKxOWbVbmjq=&F_cM5BVZbcYmc=&8fk3HwXdcemWW=&RA6YdLVsWmsWk=&YYSiI9VneUkkh=&DO7DgfUrs_ljX=&5DhpOxWsaUjii=&kNTSzdWeYj_sY=&WHEwRyVjlrop_=&bFLrVhWYkkp_g=&M8v2zXXcgqYrm=&W6B2TMUocpamU=&FpHMZ3Ubr_lWg=&47zBx4Zolbpso=&fp22GTWZqUcla=&RukQTjXgqmmh_=&qLZZsJWVqVbUc=&LZlOOqWfdgZch=&vQHBe8VrXZerm=&I7EwJwVjjbUec=&XbLNCaZaisVhg=&V5CEtDWhjgngr=&lu8fx4VUXjeaZ=&t5vNxDYsUrseh=&Wnp5wmXUXXUeY=&8DN7RKYYhYenb=&o4gAgyUphgebb=&kMaoUoZserbZb=&f4KET3WYrsobW=&3yPUCiXXs_Ylj=&VAxVURVsbbVfm=&Jy_zVTXaeidfq=&XEx6SeVsfXehi=&_WpwPeXbnWekg=&tmAP_DXgUcsWh=&zNh6MXWdmVlhY=&EIz4hZUZlhUrh=&WN9D_HZikeiqV=&85mAqeZrjdihp=&OvUry_YXhpnol=&ABlaoqXndopVY=&2FIJrqVUlgUsf=&vxS8vwYidebfW=&zi9YY4Vc_omk_=&R97COLZq_Vd_s=&tanKqXUlmeVbf=&D3thM3Yidaikr=&egOIKGXonpanX=&aYOml6VnpZdYq=&hidqgXWYlVc_a=&lbEPErWoeirgY=&w9zRgwZapigda=&d9GV8NWejWcWc=&s84MOaUqXeUhf=&XMDvMGYmgcfbg=&dwBbCKYikb_ro=&Vw8qELYgUeaVn=&G78tnrXrgZpnU=&jGypfDUZlqaeZ=&uxEhhFVWmjgla=&dD4G2xYmgbgsn=&goaosBYUUlVhd=&6mVA3WVnjprbn=&8XyTKEZYafZZs=&JRJpznVXlYXXk=&z3_S2EZsnkgbk=&6oTgb3WrVbfjb=&UKOGgGVYoldim=&7mlVnKVddjVla=&BTLZ6WZilkinn=&9ymJb6WWUcWjl=&SkIvT7V_hiUZq=&XN7vkfWlWnVff=&TSgST7YqhWfbk=&tgkTX4Zq_rp_k=&CaSvbSZmnldWp=&NaD8YcWjib_Wo=&nwgKpWUjfflXo=&TbmtDpXdgo_gW=&hVnoRPWdfjXVV=&l4lpXQZeWaUml=&yAv79PWmVgoqc=&K9Bi7sZgqljYb=&rdTIyyYelZUgm=&YZFSNAXioljZY=&F2LUIOW_UXs_l=&zJsnWcWiZrVkp=&HFI7jxXWkoonV=&X4po6pWdZgVVi=&JpqdFUVkpkWje=&4AFzOpZacmsga=&avIceOWZaqmoh=&YLHwuUYiWoedc=&5mheXzYYbsero=&vCxBvNUhhfjjZ=&i_2bm2Ukqeber=&jSYiSfZjfagoY=&VJYvyRXmcrmZU=&g4caf2Xrj_WoX=&IMG5cgWeVdssl=&8lMnmjWgdZasd=&XUpP_LYisbccc=&amXWaoXllkobY=&hFYSRIXkjcijV=&5_uX7HWebY_qo=&YtHCJsUedaeqr=&Gj6ZNLZoisqWd=&oPZegUZgoemak=&QI3DYOZUbUgnn=&MC6ECfXYqmVXa=&FtwPNRZelqXhe=&BU4ATqUYihdsi=&yNURztVkhdese=&PhJsWrXjnajhY=&uWFotSXegiVUr=&O4RDlOWabnaen=&t4bXAIYjnfoas=&H8zZIqUfY_dUZ=&Gb6k6JYfYlkUh=&U3orBgXjWemgZ=&MzdgQvZnWZfkk=&eYwfXfZjVacWZ=&ywqIQYZcf_UUZ=&gF3t5sZZXe_oU=&n5FB9uWoclroW=&BtxXNkWclenss=&SCUHYtXhXUqVj=&ZzKqSDZpfderr=&JQjYIKZjqYgnq=&x_cYB2UnhfXsY=&clHqdcWlogefY=&i2_E2SXmqZYsb=&vlZUMcWYYlmhq=&dDS8uCYkbehe_=&Ow3oIiUsXepoh=&kZwpWBZmknm_U=&VL62BjUafmWeU=&_rAI6dWpaYYfa=&NZmTYHZgpX_Xj=&dcmRAnXmWUskV=&XoBWbhUmVWrqd=&hRBbufWX_XWqi=&G3Hdu6Zlnl_qe=&6o5QTYVeosekm=&xXGTZEYUZlohY=&sDkEMlUnUXXck=&gXeKhqYWfXmro=&uuFjEAUgmWUpq=&XC6aczZUcfnaX=&yzFptxYlgbpfm=&3pmESqXpmYkms=&Y7ElWEXaXmook=&usYXXWVnrgUkY=&helR6mVjlljjh=&4IG_LTUllXhoY=&nouqUvZUnamoh=&vFq_LRUjYXUol=&5gdQ2RX_YdWqe=&WLVAFWWsssV_p=&hNKcUCUdaXWcX=&nj7g6PUmnVfe_=&EO99yfZjdn__k=&BO3963YiWfjfe=&gTtUf5Us_cjgV=&at6i54WohqpiY=&9LweLbUaosmma=&mo22HCV_sspsc=&BO3YfTZsWelZp=&ZGFBspZarpUXh=&UFWXE2XeXjapg=&ka7yhdYlWipbe=&wmhczXVnkgdaZ=&nAMADhYqcfjpf=&Q8gzDgUrhhqad=&IVlJ_MWjjZiZg=&ZazoYJXVjcmiZ=&sqMDweXeobngV=&A_pICtXjUZkq_=&9qYEpaWdW_ppd=&M_cKKNYqmeXra=&xQyjjxYoagWWn=&x8tEu_XgbXmhU=&RdzgD9X_ajgne=&ftYKiQVeoUehZ=&3mUUZdXqWYnlW=&yeaNlUZlkhqe_=&8xhKnVVsXZihc=&Fi3tpHZUnVn_j=&MTiaBIUeXbpdn=&qGpddbZlWlUrf=&sZzjK2ZiZhohn=&GRKRWEYlWWfpW=&dwCypDVUsnsZX=&5RdndPWanVrr_=&kfxPp_WhknX_W=&MYqjckXqVgpfg=&QGywfiXWfmsrV=&FOPwsFUmirdXr=&AxsrjvXgWmrap=&NOTEJFYWb_Yfp=&pY4HDfUdfsdXi=&uPfESOZeeXc_j=&sAkMSsVdXfckn=&zlFNiIVksXrqm=&naWZksVgiqo_a=&QMmjcnWiddp__=&K6_cEAVa_Usre=&XRLsjqVUkYUjd=&eGQO9fXcim_pg=&ZT2vfBYe_frZo=&I8CqIOUXVW_ce=&ckHmURUUlpfUW=&YxJstoVfXhoes=&ZoPzeHYocrnZm=&ZqwmiFUmUboWq=&baHDDaZbXgmmi=&rXF_uuVpZjVXe=&aYxjzcUYWeff_=&htfTXNVmbeakn=&ufEsrvUUWVk_p=&eN8FbYUmlnZW_=&WnJ5hHWVdkaXY=&Tn8bqeXjrgkdr=&JB_QxdVbcWjY_=&ztxrzmVXmVips=&nry_JMXprkena=&vRux2cXijVcim=&CyalaVZspearo=&4peIF6UoqqnZp=&lYvahYYprmpin=&cvSU3oUdbYpno=&rNflVbVh_hnod=&_rLCLNUe_qpZr=&j3cpCAYceYaYd=&o3RpwcVYolVVh=&U67PrDUbWgqse=&fR9jOcZbmjdYe=&vlqvCzYspjmbU=&wnxJagVaiUWZc=&A2IdcpZbWjoVU=&CsJYoUVWjhrco=&AuzKnuZYhdYks=&TBmpQFYqcWmnm=&gC5aNBWf_dbai=&4FAN5aYoqoema=&Psku9qZaXWako=&TFddW6Wpocjsa=&fAJIJjVbXorns=&WyC3JTWmlZhVh=&XVz2YSVo_Zimb=&vP8vTdUeXWlbg=&2qySYDUkrafsp=&a9Tv9pYXWVpoh=&9fW_R5WVsqeXb=&7FqpEHXeVkYaU=&6E4RDeWqqlZcf=&qhwvSmVgdXmWY=&3BzYjqVWXn_sZ=&ZUj2J5Xc_qYnZ=&CuJvIeYpXnZX_=&wnMSPnXciYfXb=&dOFWy2UssZp_c=&Ed2IvMZriUdZa=&uHrhFMVisfqYX=&ZXZbCeXaiWjXg=&QsejthXYbreno=&sNEreaWodgfeX=&QxullfXedcfnf=&SeZZbkUaVlVhi=&UfZyXmWnnkpbe=&vhbalPVUrVgZe=&r_Zzy7XU_gV_s=&t7ofj5Vgimqor=&KKLxr9YXqspWU=&Uc5Gk2YWjXnhg=&OTqAgaYhoqfoc=&SwUOIGYskrZol=&2LC6CnZVifVsh=&wFQStoVhhZnso=&nEsTikYqhrkXc=&bfaMiAVqhbiiW=&U_2f7WZriXrcp=&Zfe7D7UUlVefV=&Clj5RUYjnnda_=&rU2faKZXe_dp_=&d3u3PaXfpqehj=&Xx77_dUpggZYY=&KD4AgvUgfbVsZ=&YhQP7fUeejinq=&UobKagXlrZibX=&BUTMUoUsYZksg=&XnFibmXZmaal_=&6E65L2UohUphm=&z_MRXOV_Uajjp=&2XCL2JUjhboUV=&eTqlJ2VbehiYk=&26iAqgVcqdddl=&7dD6m4VarmgVU=&EVZ8ZEZZoWe_V=&EockBQWZfkUYg=&YOqQMEYfkbddl=&8CEgbZYikgdX_=&wCrJLqZjjXmZn=&agz4NpUpXmhim=&L_FDMlZhlodkb=&8YSYYwYinYkap=&x8ck32YYYViZo=&SJlsKwUWkcldV=&68oKwSUhYk__Y=&rhDHyeUrVfWaW=&JjfMkYYUqYVnk=&AUcNLnU_oj_fg=&gqk2xyYfpZcgg=&EHrYuoVlfeWWs=&BsnpILYdii_ea=&_ZAukiWqnqjoi=&zX8Lv_Wj_pYdd=&Cpud_aUsqVpWb=&E8L97pYljhkVo=&GdW5kYWXXogpd=&yhwdCkUhiepol=&yxaELQVllolp_=&WFfCIhYgemfrg=&CGUMm6Vhifoon=&KXCh6UVjrVVXe=&FinNurZVqnpgj=&uJlkAQZkrXhkX=&tGYOrKUYqrmbV=&p6lkboZgsXYZ_=&95ynRhUfaVrbW=&xcxqbiUaeckcg=&hXs2fWVhXbZnj=&XdSjPDWbp_chp=&2gRBjuXVbrkXe=&Mts_E7XpjfUrp=&XtvdMXYqaZnse=&ZZucfWVqbpbnn=&PRJJBQZ_gpbri=&we8jwbWgbW_hs=&EfqbVQWncpqqk=&H_mGYhYqpbr_q=&BAdmNIWXXkoce=&hteKXbWVflWfj=&BoMhAUYYseq_V=&YEvk46UbqYVok=&pLgSIMWnhjldW=&EzpinbUaoZZng=&_VupunWWooprg=&WwYaghZUbZkoZ=&6FU4ZTUnUWcWr=&s4lSQzXb_mjWp=&7fDpePUlkknqZ=&sjtq4eZbcbUiZ=&WBdgo4Yjrbecl=&EUKpmPYcYfgVX=&kuKanKVelppsm=&FvLdYDVeqhbUf=&uHdbsxXaefoVa=&dyd4TCWVnXiZh=&58k58mVedaiWV=&N9t6SxXajZbrU=&SwqhpfXddsfbb=&T3Bu9eUXqeghp=&fCbC4MWceYohj=&5899Y6XmomZUh=&ulK6VCWZiUphp=&zXwf2qZkceUim=&6IUmqFZVjj_Xo=&n_VQO_Y_UnglZ=&lco7cDV_pgdnd=&Ku5K2sWYVirlj=&ZW4m8XYllfWsY=&Evx58oZjWasag=&m7DldTYsqlUso=&Gz8J99XbWsifb=&oVWYCsYXiqfXl=&G2O7boYjUagaq=&xQyDcBZrfZUZn=&nTgLwrVXjYhYb=&ojnDwAUahasZa=&UVajdtWdlVe_e=&vWDGGlZWedWZb=&v3aJPQZeqgdjh=&U43P6qYigedje=&XwIIoqUYUZUbq=&WitmdHYrkdsqY=&e7PvozUoWiXdU=&P73uvjYnnbWbk=&HiplxUWV_bhbp=&aE4Ar_WjnUfjV=&TALJ_EXolhjk_=&_tgFT8Xlcfkfd=&dg7GLVYdmkdqm=&fLApAPXgmspbe=&b3MKCWWioeess=&IyFzi4Ulblnnj=&jeOEugXbXndha=&KrXUlQYVbnVpf=&F8edlgWXabnke=&NTN_38VnVaofp=&YcuaEaUXXcYhi=&Rh2kFpZfoZiUV=&ZOI6EJXYUcsol=&ZSrBpcUpWidml=&c4EnpnWZaijbU=&3TtZwBXiimZfm=&NwSaafZmiUVon=&C4lVo5ZliZZim=&oqvQl6XYebaec=&WFC9InWUZadfk=&sOVhX4UUhbXgm=&d8isWuVgVUikh=&gd4muBUaUh_li=&Sid277Vemplgk=&4CeIaBYrmYsVV=&tGMIMYW_qgrpq=&d9zFBjYkdbrcd=&yTLpKUWnjUZal=&ONLEH6VZkjgkg=&N3jZ6pVpengaf=&xXBBfgUmonspo=&thjkE8VUWga_o=&vJ4rhhZqkWlrU=&UniNAjUqlUnYq=&q9yZvmYsWrWkc=&aLARlfUrrdWW_=&3PpLlkVbiefXl=&IsLKU8XZeZeqi=&Qy_rOHXfpjVrr=&QLjzknWVekpjg=&DVvFy7UapZjio=&GCqJvmXllhZZV=&2OIWX_Y_mamoh=&9yYqSfZXVgqWZ=&jxklLVV_sVmhZ=&oVQBTMYZ_dVql=&5OOBxWVlojkXd=&cWgzkVXprVgWX=&cvnZsKUnaUmWh=&CWEEUOWioYYoZ=&QuEdfsWlka_Xn=&L27XpkValV_Xj=&8_uMCtWVUfUaf=&Ij4CXiY_prZjs=&qPRfPtXfaapds=&WKRQBPYZokXXX=&rdjlmXUakdVks=&GLDVCwXbascfd=&yr9Fj3XZXnVgr=&ym7MUFXgXZqpe=&DupXGJXcbYdma=&qSNKrAXfskamZ=&lAfJyOUrrcpho=&t4etzGVdWmfcW=&dyQ6SAYhleWre=&XLkfKiYjXmVZq=&hQZwuxUmehmqb=&OxqYvyWi_iqYr=&AguLSnYbeVmVU=&xqI9YcUaeollc=&7y8jeiUkYWle_=&rZpblZUsoobfd=&zwewnOWhj_ifm=&D5D_emYkVbYob=&zKXABRZqdsmro=&JfjG5HWemhkrV=&I2fUnVVasfmoZ=&mhoOqjXkXnXWV=&gVG3kHUlUkaUs=&4EvWtwZoYlYlj=&VxqV5YWeXpbgp=&7BdK8fU_iaVms=&HSYsfzZlnfgqg=&A5wKjgXedmhXe=&zjhOwlVoUfllp=&lw5VVMXbXjUko=&xlxdzWXU_ihpf=&kgRz6cWbsglpn=&6Un5WoUUadkeU=&_g_A9bUpqZlmr=&Rm4dC_UlXlXbV=&zWn4sIXglmeki=&VU5Pw4YlfoUaY=&dWrYRYZr_Zdak=&Siwrb4Wcagkko=&WJxqPKUoobYnc=&3k3SZBVjVpgno=&zNAs8LYrimrji=&pwOq6rWsVcrVl=&2a832eUnkjgYa=&UyoSIVUa_ng_b=&lM4atEYcpZmqq=&YjxR5IVojkebp=&sUOtEKUf_WqVU=&7mguzWXrfphpg=&EI6PKDWoosXWl=&LicqRrXdqcfli=&qBKaEIXrmqjrk=&yhum23V__ndbX=&bI_mz5YcUVnho=&goxZoKZgVUieh=&d4kqn9VVknUmV=&wdFHXSYa_fbXi=&w85B9rZpqWoao=&sR8fHtWlZbVnh=&f5ptM5VacZVlm=&ApkDlyZgVabmr=&Bn7hvtVsemlq_=&wHl_e3Ulfdrra=&ly2snwXlbiinq=&MiDZRmXpYpYYV=&Hs3ep5Y_lUddk=&qUwt5IXnpnlZq=&oETJDDYarqjjm=&XERCENWiZaniU=&JLHrzmU_orgrq=&4QbMRQZcsZXkd=&KAYcEDVXgYZWj=&afZhT7YYbkcnd=&ztSzf4YUfrVrm=&vh5q8_ZfZhenr=&Cm8mHKWXZjags=&DccbY6YirWlom=&hd4QDrXkaZs_Y=&nYS_HSVoagrfo=&nXavNxYVVlfXh=&mBcpAtUjYrZcf=&GYLLaVZqgifsg=&2aL3JfVYUanXe=&58bllgVonoWaf=&ArkDqiX_dqdVb=&AMftQIWVjqaeV=&vvRpQSUsjWZWb=&kmv_OuVmbWWWW=&_dz7bWYUqgUsa=&WimZtfXnUWZpY=&i5ocXKUUVnVcr=&oy3uqvUlpkVcj=&GyBpZZUlcjihW=&i6MElUXekfqon=&kKnZ5zYWlbaqo=&mJgsrNXhmXang=&X4aqccWharlc_=&QZoOBtWXmbfqV=&JDXDBAZlepgUj=&MIJiGHVigpgal=&jcCmq3YnYskWZ=&PGi_dWVYnopiW=&Ii5fxgVXWiXVl=&ymFlFlXaanf_i=&2vxladUecrkmV=&hCvzaEXcZrngY=&iSCJwDWWnmiUc=&EkO87QVZVgngq=&5iLviaVhk__Zq=&hoaVKzZmZYcdX=&tYqCtIXWgscsa=&sGRYnRYjcc_bm=&Tah6tFU_ZqsdY=&8jZ7UFYsXdmna=&FZrrUUZanZqVf=&kPAdMxVYcZn_X=&sPQYJyVcnfXmh=&gtVa5jUehrshV=&89hrXfVhZYZbl=&sgPblVZalWZce=&84c7OQWWWaepa=&GPPWw4XdqZcYr=&kBp4w9Vlgrh_o=&cxwBPpZUVkZaq=&MOywNpZkcigkW=&TySi9qWscrsin=&v5LjSNVZfiVbe=&NZa9GaZkf_dom=&NbG59QW_brsVo=&aWptktYmWcieY=&DTKfABWobYhVc=&eyitZjVVUhjdV=&CvglTYUkkZrkU=&RiOJZNYhmgZcr=&_2RpqYXb_oshb=&WksxIGUbqnfUj=&CkJRWaZj_lahX=&NNZLvKUqieWWY=&4ka_NlZahhlbj=&APOrJ9UnUhbns=&mdkqswVhbj_dZ=&ra7W2DZhdUkVe=&EiKf3zVsjlqes=&wGm8EQUpZ_dda=&moWi6_Vhson_V=&fGgn7GUjrmjnf=&NoKJJ9WsqnkVm=&okPFfNUmkbYkU=&YO9ByZXshV_qU=&P8cFxXZVsZael=&jX9VcYXlhbfjm=&E9Y4SSXc_orWi=&ZlJWrNYqikcdp=&rjVhYwVkjpYae=&a2f49UWejgerm=&kejlPrXs_nbss=&dMf3fCUfVnZpl=&a7iJRyWi_VpiZ=&8hUSV7Xmhgsak=&ipj9NZYbmqgVX=&xQyxPAYqqqXdg=&bmHhxtWnWlaiU=&z8Ix8lV_cghrr=&iuKRnBZfYhgnc=&xA5BSGVsWedXc=&uxPSWOZYXZfWj=&zoz39IWofjken=&LCE8qgZpjnsrs=&FVPzs2VUVdYbi=&h_Hz7vZZa_aXW=&4N7lNsUniqpkj=&dwhfl9WqjWVdm=&aaV6s2ZasrVjs=&kT9_bqZpl_cmk=&5w6_aWVjla_ns=&fTdyrTWjijVda=&XeHieqVrmWiiZ=&56vRmrWnYoWZl=&kbj58JWfWdnie=&sdneiKUckkrqq=&hs2PkVVUdsWUZ=&5kTPodZmYWYha=&UTsPbeUmjp_qi=&KjDxqDX_cXkeV=&R7TylnVbVajgZ=&iWhZHIXcc_iYr=&kXvdWvUqegWlg=&MPJursVgdZdnZ=&lrLhNjZidackl=&JsXAN6ZgXZnnc=&ajtrPuZrdgaUU=&GG9oOIUffe__Z=&D62xE4VVpfYpn=&qEdnDOYdXlnsg=&aG9YIPWeZpYpb=&eg9mUXWikrUVm=&2LcJIFUdgVVii=&PytYRsZcWgkne=&Q7e_quVsmirch=&GEjtQ5YZhhlWr=&z7CiHRVqUjYec=&yMxBOyUoYkksV=&SrxPvDUXodcoc=&wRwizMZnfUaie=&qAKYjzZiepcdc=&UbUy93Z_dhmqr=&AGCra3WffoWgi=&AlruXqV_XZUsj=&eFV6BSZlsleoa=&THkz8KYaWY_sn=&5fjtAiXq_gmUf=&5GdMwlYhUeYo_=&onXQm4WVZadVq=&auTfcQWkorosi=&FFXpvyYsboipc=&vEMu5SYshidag=&IVIj4aZiWsgYr=&WU9ieIXks_qlf=&afIIhlVY__ers=&eBtu_eXYYZqsb=&4kNvsjWqbWaom=&EKRflVYVfmfok=&BwDbBsYUVXsen=&XQpScBYilqj__=&bYQOwKUWprog_=&SRzJIQVhgU_rd=&lsGDFoYomeYok=&ziMp89Xpqgamg=&COVaAQYhksesf=&QIfEDRVljisWX=&b6MnUTYYaYoWn=&ddK9oBWpWkXbr=&hQHhglYch_Zsb=&OIRucLWgfUjcX=&4vNdBYXdqnbhX=&hkkQRhWdqiYhm=&Ug8zxRXonanrV=&zsNZrWZfnqYpj=&3DpnZvUo_WnZc=&OmaWKzWoogpmj=&jEOSSCWrbhg_b=&jHRvJXZZWdrgl=&MYHIB9WhkfYZk=&I8AeAhZbdqckq=&PMrfFBZVYWhpi=&vSfA4bUpbcfWm=&QqKrjeZoVWjgo=&76bDt8Zlfq_nk=&IVRY8EUrspUYY=&tUsR9jZYYmrjV=&pCrgRdXssnq_X=&SJ_s6EUYgkkdU=&4QmjhgVpsmsoc=&JAEohUUoZUobp=&GgkvRRYongqUX=&9ZFkEIXWhWrpp=&6JIYg4UoZbjkn=&CK44iUUUigXk_=&fXbLYVZobinrs=&COUzifYn_gmZr=&bnwyLgXhidpUs=&qQQPbGUfaUppc=&SYHctwUYXlXWU=&3nzaArWqjkhaa=&P8YOfPYfocmqg=&CwkOdcZefXpom=&W8UsIUZhjXiqi=&nTOSa3XrbZlc_=&hFT6iPUqiaVon=&gQSOQGU_bsgis=&yQQqqgWascfok=&E9XsVgVfsrbrY=&kBDcW9XWodXbp=&TZOmcPZbdoWbi=&qtTk2YZWhUkYs=&WbjDiBXcYZZdn=&qK_uSUYXslVes=&fBaJWEWUgpZXr=&eRwyOXZfUelik=&t8DunLVjWgfVa=&tDavTPWqXmpic=&FiVFtnYWZckdg=&BH_vd5Ybhhjgn=&x6rAB5VleXesq=&EQtVAaWofsUqi=&v8SrGQUpYoqgl=&ye5LLDUgaVnZh=&ravM_UZ_c_qkq=&XzBGMnXsnkohs=&dMk3tDX_kob_c=&txUSqvUsVkhgs=&_ZMJX8Whqjhpd=&uLg8OKUYVWqgY=&VdEuxwZgVlsho=&7qrPFMXmYXUld=&eZuhr3UZZeesa=&94o_VYZVpkWnV=&MN5CyGUfbpcqd=&QUgNidZ_Ygmek=&J8T_oBXXiVVro=&ijJAT6Zochrjf=&mm6ifXXWVpfUg=&eHrr8KXVidfrU=&9WfEphY_Wbilc=&dugAr8W_hUfjd=&2EVp2cZiXYljf=&tUHWnFVUjYqji=&VnDNi2VhdXphc=&PnABaCYYiZZVh=&Up3muBZZkqclk=&4UTyONUgdsq_n=&cvEyxKWgjqVcX=&NV4cIiYnViVlo=&J6Pp6eWsoghjk=&W2FA3sVjbga_g=&OSW5uqYiZpVnV=&TKQetZUjZ_jlg=&vc_GUwWUWmUiY=&tr9OENUrhcpba=&28nmghXffffoW=&ZGGI64WgZYsps=&qQcFBPU_gmV_d=&Dgi4JMWqqofYV=&54NH5bVnXhgWX=&c4qEjTYpZZesn=&Y4FsbeZjWhsfY=&McjC7uVVnsWqf=&lpkI6dUfbeZbf=&WsKyPzWUWdYdd=&DgqUgbUjpYipa=&pf3EsDXesZXra=&kgsiS9Xm_qmam=&zxXWs_Zqcjdpm=&iXRX5fXVVakom=&DWHCb6VqqldWe=&zJNHTlWUZaVoZ=&Qls3AoY_kbjrh=&TFsEmFZq_lWko=&AyCmtPUYWWnkY=&qiVGG7Usk_rqd=&Fhbkm4ZjYXdne=&UbLSOFUkYYpdo=&RLObNLX_cnlfq=&aqCxZrZpoUgeq=&tKx8BVUnUmfWg=&OSJ7akXVllqeg=&QzFabJXZa_iUr=&4RC77UUjYVdXp=&DmQc7hWndXXsl=&H_RrjoUUfiWik=&bav6rSXjl_rbo=&JKdHgFXdmnZiZ=&R_GtunZojcarl=&vgswUsW_XeW_j=&AxKGDpW_Xnlfq=&V288k9UfWZnnX=&E6I_xRZX_pXrd=&I_zGRJXiXfUdc=&tyZGTdXqsc_ek=&aMtJOgWfkVpig=&NlwV6CZmUZbhb=&2F3ZfWZsrrbqn=&Z5MVHLUWdkWdX=&f2978oUslZrla=&QDqRfWYmkWaUs=&ru4MQ2Zmpbocp=&OphAFQYhfqpZc=&RxkM2ZXZgXbmh=&WoPYwKXXpihhh=&RRb58FWmblYac=&Dz5fO2XVVnipa=&fqOlBeVUWXmrj=&GX9lQaWlmc_Wq=&fbqOy6XlVYdlp=&F8ezo3Xpocarb=&5B4JDfYYbfmWm=&6TMTdzXYlecbn=&UFOCGHVhXVlim=&QvwbClW_WfsUl=&urLzJLUclWYqX=&VvXsneWkqmiob=&ryuG9QVfVbgrr=&ObsmuqXnXipke=&pYIvmxYfk_j_q=&sYDUC6XZZZjWs=&PdwZOmVXjkoad=&o9T_42Xpml_di=&8Fvn4xZhhqUek=&FoaIzfUnkaYXe=&sbL4_HXaVmUZ_=&zaIIegYZUjpYb=&5bLAzHWV_ViVm=&W9gjLvZbnW_Xs=&DsqIBkYqUljfU=&wHLwRKZcpZiZs=&ib2xJyWfcndpn=&PpMboIXfpfgjp=&zBdXDUZljZhjk=&vqncF2ZscnZff=&LoRrTyW_UmcWV=&FGkElsVUYrkXa=&WrWD2gUgiecjl=&RX8yBhVjUndbr=&uWJXptV_ifXmi=&CYMlp5WgcZ_ZV=&vMEho7WsmYqqd=&5DevKMVrWYc_V=&2QlByqZ_jWWhj=&zaGaZ3Woqlhfe=&n7ll8fYqa_XiX=&IJpJGsZZpeiVc=&tQSVy4XsZcdbW=&sFlq57YfjgqVc=&eWFGofYnVVhbs=&X2GExWWUlpcYi=&ZxzSRgYfnkXkc=&REG9WsXWpjdbr=&kMV9EsXqYUqWh=&AyDx2XYdZe_sV=&ErAhSVUgcelle=&xPfNV3Voidpje=&r_9aT2Uhceano=&oTxvyWZckrUWm=&Q9ITJMYgpliWh=&vfGn3uWlelpWV=&UG4F3TYYnoqVe=&yv6zt3YZrd_We=&rImxyzYhXelkX=&Yu9eaeXcsekph=&z2sDqIYVqfkbd=&g9OCQoVhgYnfZ=&U6QNFGZdsrhe_=&lviD9yWrklbng=&bxAtJcVsfZpUr=&lyZIc6Vhchiri=&i4BWJfXpsYYql=&i3fV5GWpYjspm=&tOfA_rXkci_b_=&Qf6JHfZoWdk_W=&RCImB6YUfsdiq=&s8M2eLUqjkejm=&yoz3R5Zgmda_n=&LPTPzfVqYkf_l=&bcqIkaYY_erli=&5wBEqMYkWfbe_=&RiO8pTYhmjZaq=&pc7UILVdYsgjY=&_HhxoYXlddhgp=&msexWuXdffqs_=&ebOlcaUdUjUpq=&y5IhvlXZioVfc=&CMYeNdVVhXaj_=&eRfw4cUfdWVj_=&RmwzNCZkfVZsg=&fOZu6ZXZdeUaq=&6X2CCzWlcnbVX=&Ac3BwXZVcblUp=&C6QAVuVob_iir=&pEQgKKUlldoej=&7QqOThZpXioWU=&yz8OhoVVmgVsp=&bcXP55YWocYVb=&Vt3uWmVdnggrb=&vhZuAYYssnUXW=&cepluoWmXqhjc=&az_s6zUZkaUiZ=&SAjSuGZeVUags=&PkD3A5XeiWjen=&d_cplNUndgba_=&yTygbcYnlZhih=&CBMLtnVegi_os=&DTMLA7XaVYVXm=&tPwCObXabqqWs=&nL2qpyUsfrihi=&DsLZQ9YapXXcZ=&AFgLAiWblgcra=&d3iWJ6Vaachjr=&_XvQpSVWherpm=&v_2VSGUY_WUmo=&tS_kAzXkkYWqY=&HgjPALUrgVXmk=&_8rRYUU_Xkhfj=&RXiPe9XkpcpdU=&SWbNiZUjdWndY=&kFbyVHWlaolmb=&hX5wK6Wmqrlln=&jLxt5FVWWlhja=&bibsVmWsYjcpc=&YLvRweYZaXWUm=&fX9sk3WsgodhV=&B4falKYcppZoe=&APN_nbVpnWUhd=&fEWCbsXmrohcc=&xoZNyrWpfcbZl=&TGfIGtV_mrfqV=&pwaUlBZYpVXph=&EBoRIYVnpeqfl=&uVevKPUWXkeUV=&hi_HJCXoZWqrr=&COYZJJWeYlpnf=&f8pWEdWXYsYoc=&_FwU_pWYkjqaa=&MpPjFHVdW_iqW=&4e4xSLXaeUpsd=&xYZxT7WieeksV=&e8ff32WnaWpXa=&dxwEWkVVWehbX=&V3_KKBZflZjhr=&mndKwXXVhjhlg=&4eQ8yaVnmUUlq=&IraplAZlrhZaV=&ACkZriWfdlUei=&ptw7VUUWrWjYs=&H_xulHXbUqnln=&PKDWuXYrXpmjY=&vTIW7MXqededs=&BkguAYYUcirha=&_WcLcTUrrVisW=&UycVDqZdnqjpq=&nNoeubWjUVVid=&bkuwj5YUUsdrX=&D2qTFAUrbkqWr=&deijLDXreUqmZ=&CqAdohVdqcseV=&59eJ2gXYUqUcc=&6LFW7wVoWsoip=&r_2QnAVfga_fj=&fFPnoVZUVUcYo=&_BHVxiVdZs_im=&D7cCHZUeZsjki=&S9RAUIVYhhnqi=&zYrt5cXXlamYj=&7ne9luZeUfUla=&IbYzL5UqVeqlc=&g3X7RLVkfeYic=&4WwzHxXjhWXUn=&BFkRzvZsWVkhV=&x5ki_hXpiahhn=&MYrNMUWrsUnoh=&cdrE8DWXZUYro=&rOSMBeVcgY_pd=&G2eUWgZhYgarr=&wr7fPAWe_s_nf=&epTIBIUXZerZW=&c9rNoLZUkVslh=&cjsMeuUbplodi=&sUYuA_WhrWjeg=&mhPtu_XWggfrn=&diZcozYbh_fVc=&skCDGkUcXrdUp=&ePCmXPYe_Uadl=&zHC25KZohcXrW=&CPlvK4ZZbVkjm=&Ea_qLEWidUsbs=&scPi68YpWrrns=&s8TlssYWUdUbq=&lW8Fc3VUsmbe_=&ULUcfAYqZVrea=&dqmLJuUYnXYoU=&FtWeNLZfo_dkW=&S3fyM4WbaWcqc=&jyTvijZirilag=&xBwYPdYprWgkZ=&seeTicXmrXdVb=&wO7meVZogngbp=&69H9MVZYkosX_=&VQu4uvYkcgkff=&Piho7fWcUXUkn=&xzgPg7Zhcffjj=&iWC2nRXgnlseZ=&b8lQkrWefbdUW=&VE4CCTWndaWms=&iGqNOBUrsfbWm=&QKosxIXbdbibj=&xsAo73VecZXbo=&6NF3ErWpWnUel=&cXzNq2YWnUeqU=&57F3uXYjVprbg=&vbooY2XYfkZkV=&a8NNmsZnaVZci=&8Fd4zyUYlq_qr=&YXrHkSXUklidp=&_OiMPeZ__Wj_U=&wCrCp4XjUUhaf=&omhbIsZoaZsVm=&XdZGHJYsmbgif=&ABOCtHUXmgWnW=&cgD32_XoWpo_Z=&R5tpX4WZ_bkrb=&bufuv5VU_eYip=&dQXyF3Vlkdkpi=&p9d8G9YenWfaY=&YCWvJNUsomYcm=&lxQAhJVWehidW=&ryDkppUYrlqeZ=&VUC_FlZkcqUsX=&_JldCoUYjWonY=&Vm3BRtVZiknoi=&Y6yRE_Zinbcis=&_UzZZ2Wfnjaas=&gMI2XFYshhoqs=&WuZtHLXaUXiVo=&s_cadpVimeWae=&ch42o8WeUYYpo=&jExzvGXZWWlca=&aSGIMFYsWYXjU=&GQhj2TWnhrpf_=&dC9gd_XjamjdZ=&Z7V4VzVpnqjmY=&KoXXglYoedbVl=&krAMjJUYn_Uer=&IAN4eRUhVWpnW=&cbRCCzXelioVr=&GwoewsWqVbced=&mMRZP6Zh_dgqe=&bxJh7dZqmlqgg=&PaWnn4YrefqdU=&6dxGooXZpqZnn=&hrUBNQU_ZgVXm=&aD8lZrWUspd__=&l8z7HTVeoXYao=&POfonCXopslrW=&zAvXGZYlooq_W=&CmpPSYW_neaks=&izf5AqYhjVsZl=&RVMwGLWlYXann=&c_mRPQYaomsfU=&E4zrG2YXecahp=&8ZZmHvUYggeok=&FaFjC_WbWe_p_=&Ux3iVeVrUVW_g=&dkOe4nVpVZciU=&EdZpq9Xj_YYak=&eR_eIHUlilqUj=&spTZNaZZUhosg=&3BJlgSYbmkgja=&6XSbcDUoVZfUY=&iPOKYrVbjcbXq=&B93jkGZWnfgpb=&feQ4gTVdjg_Uj=&t3gON9XXnse_k=&vPA6IZVmsboVg=&3IybkbWckVkpl=&K7qboGYlhnd_c=&OKMpRIVVqUdcs=&WXIeReYVdVqai=&oQ4HE4YlpfWn_=&Wtvmk2VrgXhic=&SVD_UWZnWUcgp=&mrJQMeYhgUjiZ=&BJ3RFSUUbc_hX=&i9TSObXejrlch=&Rf6SFGWVjpgmW=&WBsWQBZohjcao=&T5raBqZWlafrW=&gztBhbXkpZVVr=&oZUmnfZkUmbso=&HiEioEYnqhbWV=&6DUbQFZqlgsen=&9LHH_8UiUXUjr=&TegtcVXcrYmcs=&uroM3HXVVZ_cp=&Q65qnlWlpocZd=&KYwNImUjrakpl=&5xfOPNZidoipe=&vTWYtXYirUnWZ=&cleuAHZa_ijUV=&SbtHUPXbesWWp=&2TfiR8UUmrVrf=&yx2Cl4YWferb_=&QDEnxhWhVUgiX=&yXkunsVVmlUse=&HnlsZPVfab_Yh=&lxzULGXdskoeV=&PPtpTUWWUbmVm=&RN4A3mZZfWmef=&LZVhK6XeWVUc_=&wRl3LqZhibfce=&n3pnkNZ__qXji=&jBGKYhWaigroj=&ttG3ENXcVsZmj=&odn4D3XhiclVX=&GKDFMRZrbrrsn=&URYtn3VgrXhY_=&YE8JsHYXjkqso=&OyYnU5UjgnZid=&6A_ERqUji_e_o=&wp3yTuVlYlWlX=&QflOFAUsXos_n=&omHMvPYnrpboW=&eX4mrFWUmcjos=&CFSKAFWWfqVgV=&zlI2Y6VdfZbXj=&yyoBDpUeadssl=&lLfW_pUhkiqlh=&xIUFQxYqUVdVn=&TPWjQPZXncWhl=&Kh8A_EZrmsbmo=&eZrbwwYqaqqnd=&voA8cLUl_Zbor=&BKaypgWk_smlY=&7ANvt4VrbjVga=&ZamXTJUZ_rgdW=&TcJ69QZhfnenl=&6xoEx_W_Zffdk=&7jko9hZXXkodf=&OsqmdnWbbiaj_=&syl2jEUkobnmi=&_BtvTkVVqshgW=&soDHkoZ__jZeY=&aqqdT9UlWeXkZ=&PrbmOiWderbpi=&4Cjh2oWabnXkm=&yaYPQpXfiUWkf=&AWRePUXmUV_gf=&YqSmigXWpdiWk=&74zFryUmpcWki=&roI8ZtVUgknnc=&WASTqjYggpUaa=&gg86g6UgkXZco=&AwTe79WaajVpp=&Bh9a9AZcjcUnk=&6NYWQ5Ymrbncm=&WmJyBrWffdlqa=&AoCCIfVociXiU=&y7YzKmWsWnfiq=&ctmZaLYUfVhho=&7fHuCoZisieeg=&HxLaA6YVsVWYV=&Y4JoAsUcaYfiU=&cixgy9ZiZZVai=&7TqZ4TV_bUsgp=&yH8bLkWWgXYeo=&dvZLtCY_cfijW=&AsCpt3Ueo_VXZ=&luFuThWbXenbr=&MxTA6IXdmmnmp=&7kEeuJUbiYf_Y=&sq3HhGY_lXbVr=&c2FepEUkrepka=&YCTmtSZkksieq=&kRROTlUjchWib=&PQQ6GIWajockY=&lLkI3eWfdbaXn=&tOhOscXhfhejc=&MyCsNcWVU_asf=&ywRywGXYnjijm=&FfWdVfVielZof=&_DtNxcXdnflVr=&SaqVsyZaWXkjZ=&FCUYrwYfWcXfg=&gZPWquXbhfcYV=&Vk6MnbUkeqckd=&N_9882UVjgWlW=&kOuEDfZbXgVfW=&M9wgA3Wjfpmog=&TP4ZDJXYVp_Us=&n5nLQZYVnegrg=&sUIKi4VUn_hUf=&Qu_8HsXqkXZUc=&fIhfyHWcZVasd=&NTn_2qZolqqoh=&NstiOyZnpYbkd=&Ww9myuWad_njk=&h5dVQPXjVrlmg=&4AW3n9Vigloof=&fkXyQlVVrlYc_=&nNiSOBVUqbdhk=&GDMUhTWYaWcUU=&rTCKI4Zmfdefa=&cA2P3zUrdconX=&FaxwePVsbaWsW=&RulRGmWe_Vmmn=&fAW44VXVcWgml=&xXSZoSV_qknhb=&48xGq8YojnemV=&mYso_nZgjegXj=&dMWdq5Vpdd_p_=&wRJohCUiUrhXV=&Nwo_NnWmncYgl=&HqEpIcYbYmdrs=&EstvgCZmjWXao=&EqeqA8VWmgqpc=&ZqkEfaUbgroap=&jIxuusYscYiVq=&O2cmx5UjliXUs=&ahg9rNVndbppe=&oYjhQBUnjq_eY=&8XYA9YZaZafoY=&AdMw2fWpiemil=&6tz2DtYdcgsea=&4ZfusEUgcUZep=&VfA4CGWspsWgp=&njgx5IWYmsfif=&O4knxvZ__fWj_=&NyWaAYWsqo_qs=&sPgYJPUkVZUVj=&ZL9F9eXk_Wg_h=&DUier3XkprUqY=&5Oz8D7UUWZXVf=&At97n3Xjnjish=&rqIxVvWngllog=&k6tYj8UXqbcir=&sKMX_nZUhnaXd=&BxjpI5WYUkscj=&SGQMoUYqsY_sb=&MGMKJNZaZsXUs=&UVrniAWrqc_li=&haY8l2Ynoadje=&UdLk3sZe_qcqs=&k9QVWsZpmaiYc=&MWjO6KXhg_k_Z=&Yzd36QVaoYiiZ=&JcMXGxVkhqjeh=&SOe5LxUfh_bUm=&VqJXONYahnZoe=&j_tPLxXcograi=&lOpzIEUWebdig=&PHDv_KWhqkjrc=&AuR8Y3Vrdhogf=&SBxSeYYdebksh=&rnHdzHUlcbldn=&_4iWoRUgsldho=&XgIlQjVfjYpk_=&idPZjIWoqUfXl=&hgBOIIUpqYZhW=&kYfF_jVgakeYb=&CRjxp9Xppchdg=&ijVGrwXiXmhYh=&7venOeWrr_VXb=&39vzS2ZoqfjVY=&d3A9dPWlpqmnd=&bMfplNYUbkndl=&HEDJhNXYUgk_j=&oyL2r5VjdXkdn=&h8EMr4WgidVdm=&w_eo9WZekUiUk=&XDn3qZZoZkWnq=&iWBadlXcodZod=&p5OEnpYi_Yhmf=&7EMbQ_Xklaeq_=&SnparRVUopUgX=&7HzVo7XraXn_q=&eukU_kWZfkjge=&EX6pLiUVqUnVq=&k48KSAUVkWder=&H2yNvCYdfqWfk=&vgS7N6YjhreYf=&6vIxIIZbiYZfm=&FHGxBIXrgViUi=&iyMt9xUselVji=&7oklG3UmiglmV=&B6AUn_WkaVsgp=&73wP2wV_dpgce=&Au9QJ9ViWVegi=&uEZfwAXoXgkkf=&2XrZbfVaVZkbr=&UWwTu3Zpacdcn=&v_NtbiXVoYcWl=&PhCpbKUlWqrnU=&RYfALsXgldsmd=&hrrurxYYorUfa=&2mF55mXlbVYgr=&WdxkbdWjVZrrs=&mbGvQFZdl_emX=&zFtDx8WbXjsXX=&2j8DZ5YmbpVrW=&II9WvxWXbpVVi=&TTMfz3WossUjY=&aXsQrXYbmZgrV=&g9qXgtXhpinid=&3ODh_lVfdm_VW=&3NzrmrYZXobem=&EqQ37WVYUUnsp=&Kh_IjqX_codja=&pTABE2YfUeUpd=&_lVucVUrWZUnr=&U4Q2lgYcnpjZq=&W_cjMLXksplgs=&s2xNUsUajgabW=&QSyOsiYbfohpb=&raZzbtZcgYkbm=&8oTWpvXcaYUck=&piT2qoVaeWicf=&yN8NFvVisfeXn=&AsY2umVloaobX=&XaDC_pYnXajpW=&f_4ecLZheWaZf=&yPcNxSWeYXgro=&3gisVuUjqdVYb=&klHr7WUccrona=&XHmhTdYUo_jh_=&Ox_PKfZqVrbss=&2YEWxAWkigVsk=&3wZFqNWdlhqnm=&NByboXVdXXpsq=&HHSNLSUscqgmn=&xwEDOUUsoapqo=&zCqoB6VpdYfUs=&zTf2a4VicZnap=&bhUmNmWkhfgfh=&QPrr6pZi_fsrh=&XDciD6XhVgfaZ=&6ITaopZlqjpUk=&Pc7ydZWZfaeZX=&7EOcPUVaikfW_=&_5rIyfVeYWWfp=&tOg6nUXjlYamV=&neUuMDZXcXbaZ=&kqxnRyVsleYXr=&JpmeLWWYksfls=&kP9VEoWgXnWWl=&OQXp2nZhYdhij=&CszGojYi_jmnn=&F7dXjWUkajs_W=&xhQI5yVkbeobq=&4k5tUhZslecqc=&qaLl3nZpslUgf=&on3b3yVdlfYUr=&SukJXRYbbkakq=&mxNnb2Vdamobb=&5Si9kWVZY_slW=&mIybVfUVrZg_p=&n4YsX3XWlfg_f=&2lLesSUlYskZm=&I9yWrBYcaeadi=&HhsbQ7YpiWWqn=&Y7UTrpZohcloh=&b3AigLWdjVbfU=&TwqjiKY_UojWe=&KxKN6gVZj_glY=&F3hwrpWnfcpnf=&8cQ47uXWlmfqq=&cdzdAWV_hcchd=&PpIwDZUYpVqkb=&F5bMVVYYmrpoX=&FGN8ssWVoUnWs=&NDM7kgUdXismp=&pxZl7dZXnlakg=&mfKjqpWkrj_ec=&BlB_ZlZbgZopo=&LRnFULXfYcjVs=&yAodCKYfZdorY=&VyyXPvWehdhVZ=&ZWIur8Wfekchc=&wBXPngYjfgiWV=&UefhA2UgVUZoc=&iQr9fGYpWglhm=&KlxwZGWYdmhis=&5I_ycOZhoYqgb=&5qay22YgVsYgg=&QAFfbIYofYlkY=&s8vdjOWdrjZol=&I3NioLWs_sqmh=&piVLUpUhXh_em=&X6pIdsYYdfqrc=&3hi3VOWrXmh_Y=&sl3K_VVdkpUss=&L6cXH_WscohiY=&LfNaEzWnYrjpr=&rygv27Zpjcbgi=&5fnYOBYihbe_m=&NZCoktWhbefYb=&YHBw9CXUjikYr=&VWZZiqZpgmWiq=&sEOUABZfUkrWZ=&HtCrbiZhlfXYe=&JmUkKlXsqsgmW=&t85gYhZrleoop=&Am8VPsVoYmqad=&k2PtIpXb_YZqg=&4QFUh5VridXVh=&b2anBJVrpWYaj=&lhXUzhYgdUlaU=&RsDvuYYjZimsW=&teahVJVZkWppV=&fXAUG6VWjXZsW=&GfoYWfVmgl_sb=&QNeaVcXiWeohX=&BOhaQ2XesseZc=&5AnOnRZimglpX=&6ibUlXYq_jqYW=&DhwDIUWamZefo=&VcTyFbUg_daca=&EpUivtUkogpdY=&zi5ezsWbZcWVe=&UBEm4DXrqaZVe=&X7mAJ6UWbjmaW=&dyCz2UZoa__kh=&BxiV9hVrhWXon=&b_6mbtWYYYlqg=&GRssE4Wi_nlgp=&xFPeCkXrUdjsW=&khaEmpUrirmpg=&MebZlmWUYnpsa=&MeVpepZsgccdm=&KCBUKdWZWUaa_=&GaRWHKYesmhVp=&OiJofvZjUissm=&QWCOLBWsffkcV=&ohB9LXXpeZUZh=&cGnxshZlVbUjp=&ZuQMXTYW_UYpX=&cvq8HlVo_or_n=&wRXuCsVVgdWmU=&qtawRiYprXYXf=&YkooxiZcUnbb_=&zrlzaYVXniYVr=&TUes6TZlniqWZ=&RKns9qWscYjUm=&B52lorUaUmcdo=&LRAkYyUXbsbie=&ErOcDiXebbpqn=&g8E8m7UqVlZ__=&d8l9UbXocl_en=&7tNznnYmrkmdg=&MukKALVdYfVgY=&lbF8kJZdUYdkV=&JLzoZyWdmbdao=&LVXtUqWbVrlkb=&G2vbDnUYmfXll=&SpKY3xVnXfeoZ=&BwzHcMWgferjn=&Z8GNrCVnfmpcb=&u7U__LZsp_Vkp=&J5StrPYYmZnWZ=&JIs7x3ZfXaXj_=&NzM8i7ZgqlXgV=&P7BMSXUWpaddd=&vFk29uVnVYork=&ByxjzTZUZoppm=&XAu43oXZqqemh=&g_zRy7WW_iflX=&DYzS2tXVpanXc=&nq4NdmUjsihmp=&iND4z2WkXnWpj=&TjNvDkXWXanVo=&uAKC7ZYhqjfhk=&muIirQZrsWdkd=&f7twqZUocdmdi=&uCHJCfZelskrf=&e4kcL7ZfaogVU=&24rwmVXrhXcfW=&LWLCmsWabYZmV=&82aW8HUbXsddb=&xnVSBAYbsikUU=&HMqOYxUeWbidr=&_6vHbTWgefkXs=&t9AzhrViqkYoe=&A5tC8BUaZWZUk=&iXSDsKUoigoje=&Iwk5hVVf_ih_q=&QQNVHoXldVrXU=&hm9ALkZYosZp_=&YNiYSmVaYVldY=&OHuHItYknkZpV=&xnx6GsXVsmWZU=&XIPthyUesoUmd=&ESO_GDXiZlbUk=&cN6AVpWnUdfYc=&ARtErrVXlpfmi=&zDtbANYZXbqXq=&FQ9CmvZ_UYXXa=&dakQ9HUVhicgr=&7uUC_3YofcVaX=&Rfi8d8VYmasnc=&7fjdzQYerWjab=&A7eYCNWclXpZq=&IE7DfZVafohnq=&hEu6sPZsbisln=&c2R7crVhkWqbl=&2GE3RHXUqsUif=&cYgdWpXkpnjan=&k4gl5HXdUhmfs=&5XCnMAYbpolqi=&2yOJifYZnakbd=&DkByG3WsWXqcs=&LWX5avWr_eU_b=&qa56sfVcoZXpn=&j7ipmhZhc_lrY=&wsVyvfVdaYdXc=&5JkFh_WXYdc_i=&yDDvDZUWjp_qg=&9EGtDyUsWVmrj=&oVysEnZdchhfq=&zXZdoEW_dcYoU=&VVfi7MWeXjqWY=&usJe3SXhiohij=&hPNnTbXpYocrm=&cxuKy5Xpfbidp=&wuTvYtVpeYfYV=&8yGNJtVojXmsY=&lpuvrqVhWWnWY=&gFWmZwXidZWie=&ZyFeUuWkjXela=&lMGC28UUahWer=&lfjKzrUXncYjV=&zO_OowWpaWf_o=&3CmvxEXsjhlWd=&m2gxTcWj_fgas=&QefxLqXXhZnmV=&HxskJGWbecacj=&bsgP7XV_sdlrU=&VP26SaV_pdjkd=&JfTHarYWVsjZf=&fKVi2mZhZjrUn=&MakftoVrhdsgp=&6RrwtUWhWpclo=&kydeeoWYnUcYr=&hJUOzZXebWdYm=&evMgNSV_fWkng=&ddh7u8VVlYjsb=&Tdb4AhZagXXsV=&_M2WSxUmZcgjV=&mKpl_IUsUXXnU=&Peckf_YjkhVck=&ahyO3_WbemhgU=&p28DpuZmcoUYp=&WiHSFLZjkpXmg=&TtFqg3Zoflhcg=&NQqJEMUsUUdia=&Go63evYaqfkkm=&2pWL_oXcYUr_q=&jYGvB9Umrrggg=&EVwcvkWgcdZVY=&wY49pdVWgUfge=&BAeVO8Zapsesk=&AtEkgOYYidqej=&JFTuatZWbfkVV=&u2me3eZVhbsos=&qVrv28VqjZ_Yn=&3T5cCqYYciZeh=&WSjlSpZZilYsr=&2YAU6VWbcjsbV=&g5ruWaWpZpVVd=&7SN7HAZlZebYl=&Uz8KKfUXhhpll=&l3W8TpWjralsg=&W5_z55VgVnXrV=&SrkZufYUVflng=&8Ufe7pZabcpkr=&AA8PgqYbr_efs=&2R_m3dWUsUlYf=&OKKLrTXfmWafV=&IgB7MnXWrrfip=&4ugOXKUrXogeh=&bOhJQnWeUpqig=&RakdXTYUWUijY=&XuMzkTUaskqgg=&Ot6t8tUlfkpUZ=&FJ6MxFWspjslr=&nErZAKUXmojXV=&C94lmyUpbhdrc=&RYYe3BVe_bjUY=&MPUETNUgkfodi=&YZiCJNXbmsjrq=&ussTTIZZogZmY=&YlsakzXjXWjpa=&fID2XyVbabUae=&HGX78jWeddrjp=&HwJtyMZdagcbV=&43dBaAUnrkqWo=&zneGSWYpekpcd=&W_Z3YFYkaebpl=&66QBlUXmfnimU=&DngimgZhbfmjo=&PSynGMUeojrrc=&ZsmpJMZiXVnZr=&NPmU8QYipqYrg=&QxRwBxWrhdioY=&XPbNPZUoZWiZp=&pJ4N_uZ_lhscU=&xdwGJ9UbhkUZZ=&ksOojkUXi_Zjl=&dgW7BtZnsh_jc=&ZptXYnUVbpdrf=&xp7mJgUXrjZio=&Upo8AXYeqVZ_k=&cxePrBZahY_kn=&ScfSA7ZXXdmpZ=&4e2aSVXicpmao=&MYoAQVZVXfXsb=&WdOrcXYpesmlc=&eCiwemVonfWck=&emuEunUpeksaZ=&gXNFukY_heamh=&pOUu35Ynphpph=&43JC9GU_qooYr=&MkbXRGXUWlcgY=&QwNrOvUXYWqd_=&sooKQOV_UYagc=&MLa8cCWZVbXX_=&PEGGz5UYgWeoh=&5aQJdSVYX_k_l=&i7bRkCYioVepr=&Pj8K3KUWr_Vqi=&6XVcIcYhW_aib=&R8OpH6VhV_pUo=&m_n5PJWfXlkpU=&UFr6FhYkerkUZ=&CgqxsdYbhXldg=&fcyaETYYhpYro=&mH_qZ6YpnhbcU=&RWTPGHVckfqgZ=&iaebX6YjdUZrg=&OD6Tp2W_ergol=&XuXKnfWaeheZd=&jC3tpqYocaXsd=&WOFgjIVrlnibi=&VeiuZyXh_nbsd=&MxCl26WrUXsda=&EYBTx7WfZVXm_=&Spq2CkWadsXWX=&bLValeUjqjVee=&HsfLiiZVoj_UX=&pLtpVaXamolie=&boyuyYYmrrpsZ=&EfXW82WmZdjZd=&uvql2JWfarkfi=&mdfzK7XnqoWlZ=&gFEl7CWijkhsj=&sIs8rJZdalUbo=&uHolQLVdacolr=&lEz7DRZXdWhoV=&DgOJZ_Umgdmaf=&ylxV7rY_lbYfo=&HGgexsZklelhX=&SJTjmpXcWmUaW=&K_vMELVUaXjVn=&AkoEXxYpoamqg=&Q2EVYbVmmlrf_=&5k7HLuZZYfisa=&KPu5MOVarWXZs=&3WDyhBX_iaoXU=&xgoBOpZojhZVl=&o7b3NaWmqrgoe=&ioQM5RUhbbsha=&69CEdvVVamlZk=&Yt4IP4UdpbhsZ=&7Wpa4GVlcUihe=&6Xu5CwUolejWp=&itwixBYXWpkXf=&sxIriXVhdX_ZX=&4hnnfTUnklrsW=&JqOb8gXrfZbZi=&wJfEEdZWXandg=&5cDjmMWVZnrXg=&tR7pjMXq_msoW=&HOMP2WYpameoV=&NsfwybYneXiph=&xUZcgmXnsqiVg=&4GlXDZWmfhdbe=&hAN_NfWUgodki=&IvCV4gVinUVdU=&u254znWpqpli_=&5t9M8YXqZiUpq=&ObUDDSYappmek=&v2VECfVjrVXhp=&7c6JyUZVUlmfb=&bEPQpXU_pibnU=&I9ol9nYYjllas=&yprBwIYcbcViq=&7t7rfZXhrnVok=&d94sNsZeskVdd=&WvngyFWaklmUr=&rqD_JeUrchkoU=&O9sB35XUhalnm=&yDeKDRUdegYn_=&AFMDLtWVsfaWf=&I9fuRmWWh_dsZ=&OHEPXKZomYpmo=&d5zzjPYYrWbcW=&aI_AaRWidoelY=&gi2RLlWkYfhj_=&LOK_TIUgZnmZY=&cD4T8NUajspUk=&OcCCoNWWfkYoh=&jCJjYJVeZsVmc=&OY5vnjWVihdlg=&J7gNmiUonWgag=&lyM6hbV_jgk_d=&xsMVzNWWqaZfn=&TDVIQAWminZjX=&EPcNfuWpfkipd=&GSax2VWVilpl_=&MMl9YOYmXVeak=&yEmHS4XkaYWZp=&yyFZkyXrXmWVj=&2woMDrYpigUcn=&9NnJVjYmVnWdX=&aZxU2vYsUkjYs=&fv_jXQUZUWsoq=&_h9r6gVUZqhZU=&hvxoo9V_bdpfj=&FUTKvYUrgVXWn=&Ye2aY_UlfXVsa=&cZJCz8Winpksd=&9v4w_FYjregrp=&Sr3afzVabefWZ=&FlIrl4WaVnWUq=&Obw9yxYcjiXih=&4kfSywVaorjll=&oM5hlzYncjhlY=&wsBc5fWnYjpjj=&9yYV3dZhd_nsV=&tsEhaMWeYnhUX=&MDPCJJXcepeqf=&lHEWMeVhVjVgW=&dgFCOBVranjjV=&WZ2DQbWYUlVnq=&DzbeL7UffqZVV=&ph_LrpUhVnpXp=&OM95YbY_UfZqk=&gNtS6QXeapWll=&jsa3pMWYUlk__=&3Gq6gRUXVeZYo=&o9cCRXUUmUnrV=&lyAIrXVpqf_ej=&OSr9VMUUb_UVZ=&6uPp8tZaYr_qg=&QTptTrUfdffmY=&KTbH6WUnXZ_pV=&DNeV_WYqqXijm=&zJBm5nVXapnpa=&ivEv4lXpeYqcn=&ZOLkHzUem_noc=&2d448uW_qgjeb=&5AeDhwVlhlahU=&eMqFpQUpYjgmj=&pBmyiSUmoWbgg=&bbLHNfZcUXbXp=&qmLWACZsmebcU=&2bE7J8ZbfWlmd=&xtZ3zBUebnUmk=&HEOPY3UnVrYao=&wZmUktXdreXnc=&uCMICHVljcU_b=&3uOYoJXVVsbnh=&5gPuRPVZmUfYn=&2BhbGqVchsXsa=&kKpoQDVhjbkep=&xRzlwQXlnViob=&g4QUTZYdlppsc=&AY88omUbcrefm=&oBsaOiXXXmein=&zwdwOmYaWWVjd=&lXs8QYVXqi_Zh=&IGsK2RYqelabp=&I7VrrUYZkgsXi=&Nm_bOfYmbeYqb=&lxo5RcXsdnVbn=&xbwxvHXsbijcr=&CPocSiVe_Ypgq=&bpcrnSWWUdnmj=&RkNvPmXapUUfW=&NxyoW3Uqrq_fX=&TARd5XZaVgnpV=&Fq2Qr5Vgcqfoo=&97WqK5XcfXU_c=&yOmVGcYmYo_ss=&QvzAm5Zpmqfdf=&EjeKcUZsijiZb=&34mNA_Xha_dUY=&XrBuH3UVXbZor=&GRGmCTUZnfopZ=&_esgRHWVen_Zm=&8p482zUmilsdj=&meeLbHYrWoeZe=&BdATMgYoXc__j=&ZtprDcUYlXsWi=&GCyhISUehmVUc=&tgin35WpmcfXU=&XAXNfEVWYonYZ=&crAYQmVdlXsVZ=&kVzG95VjZZmsh=&96rasvXk_ignm=&QgkTqXXgglXqm=&eCvXKcWe_obiW=&nws7LMZggiZol=&y3aC7dXpUnido=&ftrt4LVnqVgjb=&YoEtgyYqdZpVe=&IfxzknYgsYZrh=&hyHijSUoZrisq=&fTqQCNXs_hWYY=&v5MFzVUpZcmjo=&qrt48cWZchbgs=&JGXMxDYqq_Wah=&pH7iA4VrrhqWo=&BCj9gPZknkVlW=&TgYyudYckrqkg=&y9b5JGUmYffjs=&TUdQVDUofaXgZ=&UOn8a_ZdoUeip=&6WIJd9Xpqkdji=&AaP4CPYhnikYc=&wMHfBgWX_mk_V=&DBYI7JUsrkiqZ=&dKJCs7Wfjiibe=&DRTnLRYbioYpn=&iUc6X6W_WaanV=&XUItBXZqdZVap=&f_bYatXnWh_sX=&eqpIFlZlWYUko=&P8g9NgVlecdYV=&ZvkVphUaqgUkq=&aiDtWEX_nrssk=&Piu6uQYggcqbk=&Dn8IWkUksWWam=&3T7brzXlZdqni=&eN64wDYZfYeqn=&hXCHCUViXVVWs=&apOJc7Y_UUish=&NPdhUtU_kjhYY=&BFrSeyUksnVq_=&6uAPXGUdYjWnn=&Zw6EudYUjZbdc=&Yp2Sh3Vjpmjbf=&GWoVcVVXUVbin=&tH53iHUbcZdjU=&lPCVKHUidbnrd=&4i7KkkVcUkVUe=&Ye487KYcmijhb=&CaKp8oWhWWlf_=&xCblWgXoZirgZ=&2dTdhVYXceWdX=&Gc8AxHVsoerZj=&rt_uMAV_sdVoY=&JEkgRnUpgmUpi=&497ALSYkkrqph=&q2yjIoZqXoo_p=&aVW_BwZbnWmZj=&l7E7vlXoXmcWm=&CWGrsSWZceqiV=&NPdjEUUV_dceZ=&Y9LmBcWqiVcXX=&gGK9tXYXXkrnZ=&OoVxnGYZfkhqd=&lf3gm6Zikifjb=&oojGOyYWXporZ=&FZPcssXZnbfrc=&qs4IgFZfgkZqW=&3OYSPHWYhoYld=&v2rErIWsYqnrX=&W_sUsLWakcjaV=&EIkzXoXbheZdU=&vQMzvbZhrcksU=&SqZppjYrfr_Xf=&z_PAPJVsrfdXo=&DLnDy9UibeqYW=&KqOl_LXbjhnmq=&5DlR9gWjeXagi=&8liHoJVhplgiX=&ky5BnjYnbpYZU=&C3W34WVUZlYab=&trlE7sZioY_ip=&h8w_a4UgrmYqj=&GFaKVlYkohfge=&x8gkXFYlbedmk=&gjdXFsVkpeVpb=&kMphHbYneUnbg=&f7pYIJXnbjZUn=&G9IYarZhegZor=&zngURkYgiqg_c=&mVeSbJYlUjVYd=&atYJrbXsYZnWs=&pxtISYWn_dnkV=&pQAuyeWinanhZ=&7m8dFPVgonfVf=&ndrAAaYrarhef=&J4ndoEXZXUXXo=&nmGsGyYV_sVZl=&WO6u64Ymcbkh_=&GNZsZaXnVbccc=&tiLrPDXaojkik=&_wlQCYXfdeYhk=&bbYzIgVidjiir=&omc3AhZYflYpk=&xwtAzDXdsg_gX=&uNSyjPYaUdgiX=&7nO4yQXmobnqY=&MXacjyUbXdonn=&zdkCzYVYngk_k=&fJzqFhZYjnUgl=&2LQPjbVmrpX_g=&Z5n_frWYWiiZW=&YoiALuYoobfUi=&YrT6wEZmplrYY=&2j8QThVljdcYe=&idls3BUjqXXsb=&qjnGNrVWXnXWf=&PdXhV3VocU_oV=&kKQOAkVimUUbj=&2Y3mAJVZ_oXXX=&3BKd4dWrfVmaq=&ROfCVWXbWjWWr=&kWpTBmXnpabUo=&EIqoHZWbpfqYW=&uXWgecXX_Zhfd=&Nwhfa6X_cnY_n=&eSREMTZUmpfsm=&CbDbXfZXsXiXW=&39duRwUYsqVVX=&vI8rymZXUspbi=&tUFt9MWjedciU=&IKJfRFVeXkVbZ=&PPe7JxUhoamgY=&aZKZNtUXbidUc=&9hDGXkYdnXfsa=&xN2Tk2ZnreYbi=&wVMUveZjXjqde=&hxvIL8VegqcWV=&JJrwAKXgaprsh=&RXljZZZmhfVaZ=&KHbwsYWghrqpk=&9kDpxiYna_dqi=&GtZoR7ZdjpYZr=&mh_b9qWg_kcfo=&T3zWngWm_jeep=&AJLFc_UosiYXh=&Zhu4Y6XglhYdZ=&nnguPvVaedqjq=&QSv9FRZWiWmjs=&IH_ZcaYVqgVVe=&EwTkNrWpUosdk=&JtoVbLUrfVeol=&vstmdKXUjbsmf=&UBViPSWYneWsr=&F3_cGxWkZljrj=&rOQRyvYfdrbao=&M3C8VHUkVjldi=&OT8dEDZimgZVo=&jtkUDqYrlfsZU=&sIifgyVkaenoY=&AEXuNXWbiYbqo=&D7ikLqXooUebn=&BgZ4K9XeehXji=&eriV8ZZs_dZYs=&OjVEvdV_qskUg=&niPI8iYkrkiqr=&_ns7XaVhgqVUq=&peRg_aUdipZeg=&rJbJk6YblrWUr=&VCDG4uXrhXdWh=&fma9XBYlncehn=&aGMDobWs_psfj=&PwJNXtZridXmi=&H4G8CNUWlposl=&FnQDwvWefXhfr=&U3zpHhVpfdfVV=&n9qfGFU_gWg_k=&5BrCHjWgadkqs=&B8SYVKVXnUihs=&uQNcmrZkhXinV=&M8DgXzUfksdgf=&KexPqJVgiihkY=&WZybZTYlslsle=&TGdA_RYjonnon=&E5DYV6Xkqgjpn=&BcXVUVUVdZrhg=&EDJzOhUeXUnqr=&m8HfTCWlUZh_c=&gDTvmlWWpnpms=&ZXSfjiXhZomjl=&5j3EUdYjpinUa=&5VBKTRYpWfkhe=&3uH9svZYddjej=&2_zwelWml_nhn=&BixtI7UfrspkX=&jzys3LYeZ_dak=&D7RKXdZUf_kni=&lIn2FgUVWVekb=&xlfPN7XXjjoWi=&zNARbJUUYYaag=&k2jyqgVcXocho=&JhYZ_HY_eiblV=&cs4mfZVckphfg=&9CW2XrZlnbpfU=&nachjoUrZslij=&tCSo7sZWUscha=&qp_57wZrsjfld=&Is8GbtVXdklhj=&cp3G4UVWnUqpc=&T7wcz3Y_saUVW=&vzXKpqXlXnnjX=&mdUsOTV__qZnc=&846DkaW_n_Udb=&C4B_CxVgUYckZ=&_pb8FfWrUVj_r=&BCoxlcWjYZooo=&nGqwXcXrYZpp_=&z9KZFwZdnX_q_=&66ANeOZcYcsrc=&4bbGqsWpeccad=&HzZrmNUqpo_ij=&J4ApkRWUfs_rX=&nuNVF3UpXadi_=&uqUDG3Vcllbie=&GQF3pCYUpXjnl=&XlvkouUffppfZ=&T6VkGXYprhisY=&GgOO5iYjaWrkn=&LlSDvGW_ZmknZ=&lllGcSVqoapac=&uB8_k8YfYbslj=&HnmZqaVnjsdWq=&SoJNZJWkXemqo=&thOJS8VapbnZW=&pSSto6YWWjjnZ=&YB5COYVeiqe_l=&d9aezWVUlXmes=&SJRzaVUeaqmbc=&pbrSpOUgqZVhY=&UySYdaWhYfknb=&zkoyYHUpegWbl=&eUn6nJYgnsWeo=&AyrPAjVjlibpX=&z72Q3cWZWYsZr=&7YfyQjVVoWh_g=&b3_eqqUaXkinU=&awzxG2UXfahbq=&pT4wJHZ_cbqas=&kq7dUBVhqieXW=&H9rqKwUrcgnZc=&H_AAmlZcaWqqo=&mhT5s_WoUWVjp=&ntzqsgX_mqZkg=&SzXxA6WqgqmjW=&4ZXxYFZX_isWY=&tyRDq6Zmnmof_=&dJIPgPWhdepXj=&BhZe4cZqVjcpr=&IiWvGiXhnmbem=&2Omm7mVqmkgsr=&plsKRDXcdZdVs=&GzxPgwYhlgnUf=&gY9fmwVdaqZfm=&4Yz9lVYdkkcZj=&C3pRa4Zqoilmq=&8UtbUcXfcXnW_=&BIyJYxYeaZsps=&doiXuGXeaffZl=&A5rBY3UnqUVsr=&KW6OVZVYihY_k=&z8zfDMWnbl_kZ=&kJzLBOZjZfYid=&GLOzbXWnfdXif=&GSNDGMWnnXseU=&HjtuRlZfsU_fl=&eVkdrEW_gXsjg=&jaP_epZWffabi=&scvgLsUhkqdUl=&IllIn6Wabppcm=&sxtT9_YbY_aWj=&gG59jLVcgblWs=&2dKdoAWik_Wek=&sNVeprYVmp_gn=&aXDbnVUmVlckm=&4WTmRtVkfpVrs=&ayhcBZUicpYmZ=&sVI_7cYlgrZrU=&OgkpiTUjkokfV=&CrGAcrUafppZr=&IMCV6IWoqUjbX=&uboXJ_YhgdXle=&8SBnkpVsaeapV=&y_YuYjVamarmg=&TKu4sNVsbkkms=&xBz_vvVXdiUXs=&IQXlvWWdgraes=&uCIhA6WlmY_rp=&ewa2wYUV_sZXr=&ZpGfeEWccqsZp=&JQQbQRXZiXfXV=&RJ4wzKVhdgeka=&YSglyJVlfZspq=&Vg4n8kWlUklXo=&RV7XLNVYgYi_l=&R85fjCUYilcq_=&LioL_2WaZb_Wq=&rS8R7FZYqlpdr=&od7yasZcirpqV=&E22gUkZVnegom=&v7wvE9Vjrl_YV=&WTmCKBXcqegnj=&ATXLNSUsrrorg=&owC3WPVmmUrph=&wLmvxNWiXbhsU=&LeTGDEUWgXsfm=&T74EjfZZX_rWV=&jAZGMJWUhebk_=&8iBsYGZUodobm=&t97hZBYcjc_c_=&WbvTQoUeUjeno=&UOIXwlUdpUamX=&237EvDYisfqZc=&94j7oDUmp_bea=&66HKmgWiVZbhs=&a9VDcAUjaWssi=&hxSeE5ZrUWnog=&yp32d_Yabirck=&ngSJKLUdgjdUn=&FimgoaZelVjaU=&AsDbffVcfgheU=&FL3qxDXjaoahq=&iPR42bWnYVYYg=&oZWLK9ZUjodqU=&M8FEZyXYVYcmq=&l9ZRB8Yjqndnm=&MajprtWlqgnfY=&HHW8cyUhblefo=&CDAuc3Y_qiiqe=&SV79OtXedrika=&IkH5jqYclrrhV=&K_7tLmZlgcirc=&HZSSyWUsmdclh=&cGbjkmUhdr__i=&Uv67TOWcrkifY=&PHSztuXorigmn=&kR4XagWbcdndm=&9Fd6rLUalgoZe=&bFQBEHUnjsera=&pmwBSnVfraqjU=&oaDH3iUfip_YX=&h2WjecUZUYcfa=&U3dhlJUjcmhhY=&k7h9A9YXkmjek=&LTYgZCZgYXbfi=&dTl9ieZgYegmr=&UcP3DVUsmibUj=&gxk8UrUgZnsoW=&MzWTeRYbdsbel=&D5PaPbXbmZcgi=&pmCPOyZYgoYmi=&PrvPo4Wfgnpqr=&vTgKzYZdojkla=&PiKflGYWlXg_k=&HL_WiHZkcqiep=&CNlsmAUXmgWms=&IBG4oHWXYcqWj=&GMAUhZXce_VdY=&wBl_WxWZVklhm=&ley3aEYjpndok=&jfmXItVcsgmee=&UsUvfvZnmncXs=&i79xjbWifandb=&l_3kDdXXksWXn=&zGkOqbZqUeXjU=&HFSui7WsVmcld=&wpwxiqVWpsYqX=&n_8qixWqcjbVh=&Sx4VNzYcionXg=&c5QEWbYapsWlk=&zdLziZVWncnkV=&yTV3SGYrlYalW=&L_KYHIVeaUXnU=&WgZDnjXgaoaZf=&AkH75vUifgfhk=&NBlrBkYgsml_X=&WeyZDOZYWolml=&tZGsVvVircipW=&QZnZCVZaioYrh=&T5FwhsYUa_hXa=&I9vMXMXpk_Ziq=&Pq6VxXVYjkbif=&3jHqNmZUhYjd_=&WV7CVhV_aaoqb=&8H_lmWXkZacaY=&U3R_yTWsUphfU=&QuHKhrYdelgXn=&wmKbxkXYZaX_i=&zSiGFYVUqfXaa=&Q_Mj_nYehUd_h=&NS4u2BZXVpVcU=&QwPYqLZYkqcci=&fuv7UEYhsUmhf=&sjmjDaZrgVihq=&MwtH9MZ_dqmhY=&aFc3bkYgbjsd_=&hC8ne4XqWln_Y=&HTf3NNWWWUfdo=&hTGdtWVWjjkWs=&uXjHQlUdieriX=&xCV8x5WlicmrX=&xggJoiWggVpYn=&aPURXRUjqeYcs=&Lr2ciwYiigsnh=&7R2NyrVaqlkgl=&M_sjOwUogprjf=&YxAWg6YdrWUoh=&84pBrgUnjqflc=&8LTIwlZchrXbU=&dGbAh9UmWcrsr=&95nJ9nYajVhgZ=&UueiCLWjkchis=&jyaKbdUiUUgWY=&WMC6srUfmaspd=&n69hJeWbqVdbZ=&IkN_q_WrV_doj=&N2pvmzVbrajce=&nf2swDYiqndYb=&jCREsYXsfdiVr=&LrHERpYhhsWUs=&QKERHZWfc_ldV=&lOs_QYVaZUjiV=&xPFBiIWd_qWrh=&sGLP9kWponbnh=&rmUZFfUejnsd_=&q68Va6Zps_fYg=&EK37fPXUropUm=&95OJkEWsriibW=&ccKymNXkrZsrc=&RLvbZNVZm__do=&Hhq5rZXpVjcra=&PavFclXqfoiZW=&HwEEqkVkUo_Zm=&xpmqVaVaVVghm=&Ms4wTEUspnXme=&HWpSTbVqYfpoa=&KKA_q5Vd_qmiX=&xtn52UWjpilgg=&8vk3UsVharrgV=&rr43N4YrofWjb=&VNf4MwWilnYUZ=&8FI6ueYVlokYs=&ZP3Tr7WWmsaVq=&sDguHAZUWaYZX=&hr7VtrYsodsmj=&xXNN5VYprrrss=&HvzmGhYdgkeio=&Pb2LeKYVfoUnk=&KFUC7uZiZmXcn=&RJrHxyWsmifXs=&SeJ8qlXfggk_W=&z4WxBOVXddWr_=&ffUdxkYjoYdgZ=&8UhZIkZXVUVhZ=&h44hJIWVqhWnf=&Csj8sEV_noqkn=&xnYUKFUXlckUk=&H5O_5xUpnpies=&BztxXyXYalrWh=&7y3_FAXfiqpZc=&nXqSORXkVZq_n=&AUid93WgZoenq=&hHD3jEZkgpUoX=&H__JnVWYW_mef=&PNiobPXiqcZnc=&defqMxZn_brqg=&httjKAUZjUsp_=&8do8PaYkqYXVX=&kZRwpiXfVWbXl=&lCYo2kZfqbfqh=&DP6f_TVZilZme=&YWklNKWU_Zqge=&HUxyQEZVnUrYf=&cGCgsGXqaVUgV=&YVAPqdZjepbUg=&oFxBHOXomffZf=&tvffmkUXaVmch=&YyMVzsUgXqssg=&qVVclnVdckpVj=&dPbGEPZ_adrlX=&rdauVgYinc_ri=&Hj7xCwYmqgjVg=&yPYgolWi_dlbi=&g7m4IlUeshbVm=&YnNq45Xpncahg=&X8WwpeUnonVfW=&KqiIKmUpWalsn=&8BFz8VZrhicUa=&niwHqWWh_nlWW=&uXcAK8WWi_pVd=&hevzXOYXXqgnq=&jmA34dXYalbgp=&TOdWsGWsnYdlk=&pK6WIYWWVmZmp=&P8_oxbZlihXWl=&zcE3rrUhVjWqr=&UL_wXuZbZgihZ=&UxWY83VqWdWfq=&WmFpTMZUWsXas=&884tL6ZcXsroe=&WeLqjqW_Wnees=&sd2LRRVglcXnc=&4WkJJPXUUbhos=&aZ7ot8YhZicis=&dTRfWpVbdYVik=&8q_pukYjcWjj_=&4SxzsXVodcWgh=&FrExVcWnimiqi=&UxTzaTWcmgcsl=&RbM_8TWidqisa=&zFvRP8ZelZpl_=&FNOIJvYfUbmnc=&NH2phHWr_cWrl=&YhTdRqZjqjepl=&n3QvptZkbngca=&EhS2ztXdbmdmV=&fhyBeqYmZrWag=&6ygNOBYsbVdpq=&OfjvMGWecXp_i=&H6MOb8WaXWsWm=&hEVmNRVrVpaZa=&JLsLZoZVrfcXo=&tWyvw9ZcrsgZY=&sZNCUPYpakXke=&HfBlQ9ZpbbbUs=&NQWXzEWcqmchV=&UOl87OZarmUjo=&c3ypBdYrsqphr=&FCUTaxUklgpkY=&kieITXVZ_ihpV=&mUSYuqYch_nkb=&U9zfqXWaoosrZ=&zFeopIYdYaepg=&jawMsSZncimsg=&U9J22mUUemVre=&KTeoDUYaedscU=&gJfcxhUmqgdeY=&r9TN_SYehYkjk=&6umOODY_Xqpdc=&dYlAsYWZYdrY_=&Z7iX8WWkqahbc=&7FGbHaXVoWoYm=&sijHzCVjZorjX=&tyFASCUjXimad=&Fb8DZ9YjsdqhZ=&z2GSa5WaomVhl=&mZRrKsUVqbose=&sCfIQdVVgq_Xc=&yCgqtOUgrZqfX=&XL8vTIZdYjoWd=&Q4q2v5WgjYpVb=&Ttb3qFWoVYgVj=&biV4UaUlra_fX=&yh7IZOUlssiZX=&fIhvMkWeYfbUW=&L_YjqYXbqalUi=&WGzWEXYpnhafp=&jeUaKAVZejpUe=&tv9zi3Ukgkjkb=&J6JLmMVipirln=&oouTpdWYslsmb=&JckQ5WVrjlclb=&4QAZrnXUUjagd=&9TVax4UZjqhZZ=&qz9wZNWUsWXcb=&k4ZgcpZjqbiqf=&BPLLr4UddpWsa=&gGw_ZfVmpZbVc=&AIiU4oXijnlZl=&d2UWAVUopehrX=&feEVmtVorilZo=&9DBVIDVncbkXX=&VX2VIvXlUVXXb=&55eJHtXheg_jh=&hnFCQgVbUbrnh=&A_Td72UVmnXcp=&miZw9NWmeWnln=&JpaPGNYpkXUqV=&toN289XohhnrU=&jFa7cSZZehVfo=&Q7D6CuVmihrmU=&fGyy4cWjcYhlW=&wR7_PkUgYlYbf=&bqjpXzZffUihk=&SBzhNgVmYosmW=&KgGqRbWa_agWl=&xWKFKSY_hkalp=&GDu98NUhlYmmq=&XmWYNSUsagaUn=&TSyoFIXWWWVfa=&gUx6ARUb_mngk=&KRv9GCUom_blV=&v74aniZdflggs=&doEtWYYqrhUsb=&KW9C9tUqbZcqm=&OYUsPMXrkoUrZ=&kVVOm3VjUZdkd=&PprvF7ZkjfojW=&jnJkxtU_iZian=&GGf254Xeslq_Y=&vmtVIMWmmcWmY=&dWW2n6ZdVWl_n=&E_FDUxZkhiold=&DHtYV2YVomfZn=&gSCyGbU_qZair=&XDLfP7XVibVck=&VGlAATYqrcblf=&Q5RBHsXiUbjkX=&hSo7GWYnWjVjY=&toS5yHVbXUjkp=&nCcqyjYXbYhZV=&A_AYaEWejWcbn=&ASsYdoYrhobfa=&loor6JVZqYncU=&RGkBOLWckoodh=&RdgUYpWXaeaYn=&wlcbcqWZVbhjm=&zzJiDVYo_XbZr=&RkKu5aYamXWbg=&YCJto4Xobr__Z=&5zP_AdVqirhhU=&BdH_kHXWeVZkq=&QvvX2WYjmeghp=&PUPKUCVZsbgaU=&iPKAO4ZafWlpX=&TucpBqWgmpUla=&KUf_QuZWob_Wi=&WrnEC6YUfh_XV=&IJE5A4UmUofbl=&LXRt6aVndinfh=&XwPvCjVhlVjsk=&KGeXjFVgUb_fj=&CFY6B5Vbogigo=&ReYGVqZss__c_=&tTVZngYWmg_gW=&uA2hBHUgpYl_p=&PW4F9KZpUneUd=&Z8pmeDZZqnYnf=&Fq3IwvUeghahr=&NWT9hsWUkbgde=&AUc4XgXksqgaY=&SdJBpVXej_XeX=&Rn8ZetZcVsYeY=&72Po3WXrXZana=&e_wdt4YkXZdVg=&ds9IPfX_fcpfi=&SytYU3WkingXm=&EvW4QTXokacpe=&oBI3l6YZbWqjp=&GED22rZfXrkXY=&vVKvT7ZdcsWjU=&xqDVoyXYcclae=&rGUJtxWm_fnlc=&AAr8MVUd__klY=&3cFDFQVjWdcar=&buMsDGVdnojkf=&o2BgLXWfidlYe=&sJaPg2Xmagqj_=&o3FyAJZWdcZgc=&mSGvUWVnXkYfi=&zPBUUOYnebmXZ=&XTrnT5Yacdkpa=&8wj5AOZihUmVW=&ivqNfzXgb_pZn=&XQNAVCZUsdrZg=&TPFKCXVpdWgYo=&WeilgBUrXijU_=&_U6oBrYjrjmbW=&ZTibgIWrnUUrn=&Nx2TyyUlafsXg=&Kmd2IFZeVffqm=&HF7pCVUcprmjq=&jeDMLnVndlWpY=&dzK_2nZesYUkg=&_RJJkSWljUoag=&ztWg36VlXbaio=&LNGTpPYbgnpXa=&KGUPd3WZkUsoi=&PSy4S9XUhrdWX=&HrKqO4ZUfYfkb=&NbRonGUdXgXgq=&ALKhZoYkgYner=&3zir_8ZZbZhUh=&iwV2eQVjjpYXi=&blIkLXYplWfdr=&cVKIYWY_nesbU=&GWETW7Ubnfesl=&pnR7EWXiXcX_r=&7nAVUJUoYsfqZ=&PWT7eZVimdUYg=&gkPEtEZabsjgY=&ExLdZNWjXkcYU=&wF3Kj6ViYhmac=&oHDePNVkbdgoq=&uYyF5KYZqonpb=&EH8tECYmWrXdr=&iDtMR5UZfadiV=&MvY5GxVshUUlq=&9aIPPzZlqmknd=&kQD9vaUaYlZhm=&epbtb2XXoZahY=&6znRJUVbf_ohk=&j9shs4WhqssYX=&MtDr5uZakrarn=&IUBIqHWmWblrk=&OozRdBUVXnoia=&7fbadYYggpjeo=&z9Dsg9Vqqpial=&neWHayXgiicgm=&XeNthpUbVhhZf=&VDEaGWWkjVhiU=&pgQnmCYpkXdfj=&Pduuf9Vsbjkrm=&f7YWTdZgXnfWm=&6ZJOqDVmfVnkZ=&fpXOfIUqXpnjn=&5ImK3sUeefaYU=&RxXktMUhfdmaq=&i8e7QNWidsZVU=&Jx6W5cUUhidXl=&eHsvmGZgrhVip=&VxtnOiVfcofY_=&3QwnTJZVbhojb=&bQPeYWVkVscnY=&qQlaZIYpnXcnj=&yEqSlAZllqWXU=&QrN7AsXohZqcq=&7FeWL3YscdXZ_=&rbClfaZrehbcj=&DgN38HXcjkij_=&YKeakHUpgbqcm=&wo8MfgXdohojh=&BZShTsXsfbZhk=&9B3KATXolgcXU=&azHmPtWdfechm=&7mObzPXhVlqlZ=&Akr3abUllkcpi=&gw8amaX_ZekhV=&myEFTaXdW_mVq=&bhHFJNZsdkoUh=&azxxiCWcUrZjf=&LEQHE9ZXserZV=&gyHwF6Vlj_jco=&SZkvFmZodaodZ=&7ftR4WVsV_nXZ=&6za85_XksjWfX=&VtgRysViVllYs=&aBiLFJVgjrWrV=&amOljnUnVckWY=&sSo_vNYosiins=&qyCSROZpYZpXn=&pUJiTwXlVZjap=&8Zz8k7VaWjhso=&BhoP6EZYWslqp=&PeD2BoXhirdYX=&56Gx_yYceebVd=&OzJC8LVhWViWq=&IHi4xWZjsmphe=&DK54DSXenUcii=&rRwen4XlUrbfc=&Ui95PRUnUZedi=&lk3C4WYnaaqqa=&FVCsyYUkWmdkm=&IgMAqkZZUqbVV=&uet7CPWodedp_=&2qGPekVfYooon=&ZLVIr5WbgijrW=&PC5EvMZVraleX=&BruTjVWXlVblj=&8tXHVXXmjnjYp=&UgjDVJUpm_kUq=&KpCtBXUVsfgdW=&Uk6A_3VancXja=&3GAVqmXZYfgZa=&IMK5foZoedqsg=&bnz7y_ZieWkVU=&mcVNYXWsccaln=&BF8Sl6YrUednV=&sjulqgUnlalrr=&DxyMr4YaicmWp=&foog9FZpmgeqd=&bdtpDAWXhqUis=&jRn5UvYicihZr=&ECRCdLUnWkVbj=&GvdgIIXphdVYc=&xuWLCRVgeZlod=&PXw4ZvYUfs_lq=&2Yl_KsUXYooY_=&CCuGkhWYZ_poo=&_PvqeMXfYqXjf=&tQGuugYWXsZVl=&saASMTUd_Ziac=&vAlNqWYidgqcr=&m2O_WQYefak_d=&FMtgVnZapgmol=&J5E8l5X_VZfci=&Cbndt8Zipmlpc=&j3ZUF8YVfiinU=&EefGyWZZeVjjj=&CutvVoYmpqkdU=&D_5QWCYfqckdU=&vEuE7bVflXYah=&MOBxWxXinoloh=&bMCQUvYYhZgXW=&WHL6DpZZVaeZa=&ayybEcXrWhbWY=&xXjRLgX_leekc=&avPYuNZXrpVja=&nEawxfWWafmfs=&wQRgz4XprjXmh=&5sS7bwVUhXmYl=&ncRzRDUrXjari=&eAG6NiUqfghaV=&AlXrXyUVoqnbW=&6BgVWJZi_eWrX=&6eUs54Wflmaqf=&Ur_INAXjsmbnl=&2GsXbPZWmkX_d=&Fbzxx7Vr_iame=&MvPdlJYsomibf=&5lzji9ZjaYrdk=&GEq78BZnqXfif=&oxugM9XjlUrmW=&6GoZP5ZbiUsrn=&yZ4hjvXYmeflZ=&NSsqLaWojnpUs=&hKmKkkVjVUmWX=&2aMsxYZpVXkli=&jcfbhpWpZbmkV=&KIMGs_UbfsVeg=&IKbkqGVWhXskd=&iLoS8aUpdgiji=&grzHsxWarlXUY=&ICvmcSUmapZnV=&C6hKE_VYbkceX=&ded_r3Uejc_XY=&z8FBRHZ_Vjapr=&HDXiPQZeoigrX=&Ihq9kIYoh_pea=&5hBAItWnbqZ_b=&iaKVBEUridklY=&raymu_UXahYg_=&WztOOKUarh_lc=&7MteVsYkXlsqb=&suIk_4WbrViYr=&PbbybZXVajemj=&BvpDHKXYaoqdg=&K4wRnXWgUpVmj=&lZiyH2UUXkUnn=&r96yWAVagarop=&AyvkhaVflgsUm=&OTrAtjZmbqZco=&B8FK7WVYgleme=&9Bj3ZZXohm_gp=&oJl38WYmmgcms=&6ezD_MVpmiVjk=&JgSvJnWYWsoer=&CbDHMpUpcgicY=&QLulc2VlnXkVf=&PefxBPXikojhb=&e3cYnlUodbXso=&4YkmTSZfomrld=&5ZJUzfWlYWefj=&wVVlTMWV_ksVV=&GcmXy8WipUWjj=&ZJwYxgVhnnned=&5nGtQcUbqsVYd=&rCF3X7YiUlekd=&ZsRhUMUiWeqeW=&igZetgZqjmdXd=&Fb5q9AXXdbhcs=&b49s98Vk_hirl=&DyVdgGYghnrml=&o8uYJ6Yoamr_b=&vYSQ9lYUlkVYl=&aWcj4jUUaYfkj=&uXkqf2XkkbeeY=&jUeN89XosZlrs=&YoWDOdXkqZeaj=&8XTfwVYriWYXq=&6_2MzYVkU_nWe=&idrUNHZolVlgl=&QR95QTZmXiUnW=&qgFeooZWrmVVg=&UrJciGUcim_de=&5WkylNYhnUqUf=&pvK5GvXiaVrjW=&7ASeevXUciqf_=&8X9UnIWXiY_sV=&AZPqq9XYjmskX=&DOLmbbVoYVdWo=&VNIQV4XdVVfsq=&IxWPtdWf_lqhe=&JJBqJFZn_ZnpV=&3HEwNtZsknhid=&9uopLIUlYbrUW=&wTfwAWXUrb_Ua=&7xWtTFXYsrjVV=&Fq9vNuYUlhcpn=&Cs9XpoYefWiso=&uaswPeUnbXjlp=&94R9C9Umcjggq=&jKupYGWjdbXli=&Vlh2mgVkZZnni=&e7d5BnWarXXno=&Edi8hBZUbgkaX=&hnzxfRYVUVbdj=&Dwgie4VWVqnYe=&ld38tTYYVXsoU=&tZ8k6yUXWfpUm=&9eEyNkWdsoiVm=&fgrlQXXfnehqj=&TZifZ9VWsXcsr=&qQbaWOUhhm_Zd=&4GNAsMYsXjYr_=&F33LmHWl_eVcc=&_ySaAyUg_kUVY=&4npv6vZmilmbe=&4x57YWXWkcaXl=&OTuhKBZorfnrV=&eTFQoZVsgUgWZ=&5pqaatWlgrkXe=&dcINXiVZeZead=&4Ci7u8VjbWYak=&5wW66PYsXUZqc=&iPQvfkWUUcZgd=&nheHbsVmWYr_n=&wKW6jaYWd_lrc=&UiNjDlXlhr_Yj=&J54U2xVconpqY=&_RFS5kYWpbfga=&GW54lDWabcVlb=&_4GxT5XrdfhYn=&vl85ImYpgrhdo=&IQRd3WWYnVmXm=&ifWUrBWXrXXWk=&WD8bcTVZUiasl=&3wNlc2XbUWhkZ=&7GdNlcZgnX_eh=&vfeXf4YhUUiYj=&Bi5ETUVpsnqdZ=&QAy2czWarcmYa=&OkTwVqYhnfsmU=&MPfJEEXppWsUb=&6TVtVwVUVc_rV=&48QO79Zsrqbnb=&QxNQgrUsgiklp=&ke_zE7UnolaUk=&WQyfRpXbksiks=&T7vVdcUkhfZ_U=&svHabqUeeZZUe=&IrbgkZXWYZies=&BvoSs9Vefacba=&u8q4POWVsicsd=&9RBXnDWsjdlXa=&VOBtXyZnpUdWr=&svI38jWoascpp=&W6yz3xZeqsoro=&rIhQjMYrnUfbY=&7JmGORZoZobVh=&aERo8sX_jYf_e=&atGzLKYUYVcXm=&K9oUsbVVrmsrW=&VCBZkwUpgoXYo=&yEaT2TWVmglck=&TV9vREXjVfndd=&tTrEuBWjnjfsV=&MRh3ZWZYejVmb=&6lKvmwXZXhkeq=&8kokCIVmeqVie=&G9OafUYalY_ad=&H8IS_MUlqcbgp=&oQHm9UWqorVUY=&oc_hM9VYgbjmd=&loDKEsUjsbmcl=&si9UJkYphghgb=&6M9dy_UWsbmlr=&yC4lUMVfobhbq=&UfLJofUcfprdj=&yLCrZaWpXfggj=&a_VoigU_srVln=&y3kqgDV_Ujsqs=&2EWBcNXUcXeaq=&HIueJOVXnXfsi=&P9GDzGYgdjWbl=&Hv3n_EWlsj_cY=&rrFxU8UZbgcoe=&QWHlHzXV_eljX=&ZylD8oUpflrZq=&7vY52dUppmirh=&U7ALeOZbffbYp=&spwmQVVcnsbnp=&DkfvOiYmrbfoX=&_Kyq9uVpmqqls=&ZMWYBVZUWfZXk=&ns6vzOUplkigl=&Ttvws2YrdUql_=&UA_PyzWepVjmo=&zMk4TfYkfoafh=&CNVID2XemYWgo=&QTeGcIVrlWcXa=&_7AmiKXUclkni=&pezJ7jYsZljWk=&WIevnPUajWb_U=&9RBYcfZskahbV=&eKbcc5Zkdknro=&WhIHarZYql_Xn=&cxY4EiZWqspb_=&RhUiBvWnqnYna=&iOsToTZsUgedp=&ekxpn8WWpjgsh=&kTaMnLZmXXZag=&3wFW5ZXqagVda=&7yl3b4XViXZem=&vQI_zfVehcUdp=&HyPxWYWokorfe=&JRxlSSYVkWkpd=&eq5TAKVanbkeh=&L85AuvYZbZYbU=&AAJUiQWbpcWaU=&JzDZAEZh_jVah=&RFCT9jZmkmXWd=&Og3UHcWbpclgh=&olgTiCUghm_i_=&ar6GzpXmpnnh_=&suUhdHVnkahib=&4lZIKCWesjagd=&dMq9ILZdZeUkY=&JlnENTWmljVbY=&aLdNCPVgsh_or=&9_qBYCWZrmssY=&32BmUHYmUkoWi=&JZVAcGUVYehki=&LM3FJaZWaeqUj=&HyNU9sYkkrimi=&kIzTGvYXa_aXU=&__UpYMVoZVZei=&h_52ikVggkrXk=&sgOzt7Xgfffch=&zJxm5ZYejbVeW=&gRH2nUXWVsgdo=&cqPSzCXWsWbbW=&5Zu6_FXj_fkWl=&693eZIZUjceVc=&kKBetbUqfWqdk=&682Ol8Zabe_Ue=&KI8JMGUq_Zmbp=&qqW3C3VsXoZnn=&S3K8hrWXbed_p=&BfRGQaWmbpnng=&taOCbDXUpWYhp=&WmmaS2ZmsihVZ=&rWY29xYWZfX_h=&Cw66jsYYjXZYd=&wBdtsSYYjegen=&jupTs5ZiVkVUn=&wGVKY8Ym_Woje=&RXj8zLZqWfgXW=&7MmdJPUkm_Vqp=&7pDbmhYWlrUVq=&OL3A_oVUmnXmj=&4dw9rsZ_corZf=&49AwplXWkmVVr=&tUdIORVmfYsqk=&snexCHZcXinUn=&pDk5CpVqlUjba=&gc3Jc4Zmcmm_m=&d2g5rPVUdZqph=&rESLSZZjcmXVe=&QDUCAiXc_WWjY=&oiR295VkVqgZs=&gYGDnlWa_hpkU=&cyt_9OXnV_ds_=&YZUbHhVmgrYVg=&HpDpxkZXnkUel=&9nQ8XzWUiZVUf=&HjkfQ5WplYbed=&oMiHq4XofdYUk=&8DY_lPZnaYoVc=&YDCVZvYWqYfXl=&ae2SLgViphmkc=&X27ZpPUlnsfUb=&sjFeOnUZmb_gq=&PSCQTjY_adpe_=&R7aPtIZsghjl_=&L8nfQHYbrcffo=&GEgBiIVcoXkYW=&qZDWLQVsggp_g=&rFkn5nUUabdjq=&O3j5T8ZaYngac=&DqkTHwXd_Yabf=&WaeYKEXkhpgio=&GVDzGRXhsgjsW=&eIiQOoVqddgmg=&KzsJnCYakldhb=&JyCnlWW_XUdaa=&KDQsQlVihcq_l=&CXVRLhVbhmWde=&Rz_mUdXbmbmYj=&zdOCW8Upockol=&jT6FLRU_limXl=&w969qRXhXVkbe=&DVkf9WUYbkk_f=&eQ5c6IZbajhUe=&HoRPf9UramVrW=&P8VtQQUjUeYXd=&MjD58lWh__oig=&uIIT9NVmibXY_=&dRaGa5VldoZjs=&moP5rRWjf_Woe=&wP5Z3xXWcaaib=&om_yBgWUrYhk_=&rjcMF3UlnnUZe=&Wz6wefV_nqe_e=&g5ohp2VhfXYZh=&Wijt3EXijVqeY=&fBJYYdXgdkhpn=&HWw9X_UZXZWmo=&hJRKMOXrharZr=&po5sqjZebdhWl=&hru3UpUicpsoZ=&ylu5dWUXsofmf=&YbzckTWbYipVV=&ptrO7cVbosbXm=&eV8ThwYbemlZU=&IWRquIVe_ebsa=&FxonbiUiXZ_pY=&csus_UYYiXVcZ=&JcPGo9VXoXdje=&K4UoV8WeVaoaj=&JXu2d8YYocaeq=&j9NxvvV_ofgs_=&Le9y2EWXVcfsa=&c_NotpYWUbZmq=&fqs3uQZsonhqb=&83F9mFWbgscsh=&bGf6ocUcgVY_f=&QFehMTWsWYdWj=&Akho93Yhlagln=&RBCqOiVdaVmqY=&Xl7bBpWXmnprk=&u_Sp3YUprWV_p=&nnl4hRZabcmdk=&UHhHwoVhdqmpg=&Tre7M9Zofoqfi=&XVVx2NZdrkcYo=&LMLXFEYpidsUZ=&LQShPDUmoVVUf=&KrjV9hWsiXoUm=&_laUvNWmWsWiW=&yVpBMZVbYdmgg=&vWQ4l6Z_akamc=&ndDzFGUZpsUke=&ZvqQ8OYfooZmm=&pxdQdkZ_hriZV=&dCzTAPWYqWgrU=&xSkNkCXejVlUr=&lx33IQUjm__qg=&3gHQsNXrUWmgh=&62rSdKZjsVljo=&VTHf3aUbrraeU=&mU99jcXWVpcVg=&WtLXVDXeapVh_=&aZeTbjZ_YgsoY=&F2QrZAXfWi_hW=&7FK_5AUliWoml=&p54H3NXkfofbf=&8gdncaXiUhmmU=&JQLZhTZZWrkXc=&bAlYx8XUmmYak=&4dParIXZocong=&ceZub5VfYYXce=&XKsTllZlinfed=&NFrYqcVWjpkls=&DK4RH6UifkX_m=&mH8XbVYdr_goi=&maMdtdVsgpajd=&tTaDbgVphjW_f=&FkzSwoVbYpesa=&mydIsIWrnfeZi=&AnkSH4Xh__gae=&CxrtjBXYhgjsr=&D68t2wVledsfU=&v4ZwmHUd_krZs=&TkV4ItVodoef_=&HTeDBRZaUskp_=&dlceEeWfgqVho=&zrRElIZWhkdki=&oKbvzdVicoqWY=&ZzPuHNXplcnci=&VU_j5PWr_coZi=&FPDEZXUUZrqgq=&PjWnoxWnXobkk=&UwLJx9XWWgmnk=&nxt9EMX_jfcgX=&4qyhmFYY_gdps=&2GVmdpXfbpXbX=&DCt5cfXboplso=&lAnbqVWXikadn=&CftFbyVYprrmf=&WsCAfKYVZeXpY=&XOzWJSYjrqjjg=&_sx9B2ZkgnZqn=&AltnuWWhknUkk=&oSEZCzWs_msXY=&7YbY2jZU_hjns=&pJf38wWklUblg=&ebN_VEYkkZpgo=&bHkf2AW_ZckhX=&sgodniVdkahe_=&8aOVlbWWj_Xmj=&UsK8cVYaWYiUn=&FyYBbfUdeokoW=&jPIEfiXahsedr=&kshSc8Ygmglsq=&vlIIPqVlYgcWi=&Ez4KKPZklZd_e=&3QM64pUX_UXmk=&pa5xSSWbVicjs=&XesXr2XYqp_fs=&EtLk5vUqpoeqp=&qQ2WzRUdaZXZa=&MpOxZcYmdeacf=&cricboYXWiWU_=&4DHOJMYnWZob_=&wBLlvbXUrs_aq=&l_tG3eXVrXYol=&iXXBH6WqgWqVp=&XyY8pZXWeUsrr=&2_ISihXfeUleg=&jznsjTVXkr_be=&Kt2XluVsUWron=&Upk94cVnfhXVj=&YgjIdDYqVheco=&XKNsA7Wgrs_ga=&rC6fHkXjoWesf=&PMnLCDZ_fXfkr=&KeS_m_Vgossqe=&_qvzzTZfkYdXX=&Vo9yOCYUmenr_=&zLG5iwYdepUV_=&lNDeUCWgnWbdf=&G9pk7pWYXbjeg=&TVAaVmWpmqmnq=&nUhpuzZjoVecc=&vMAQWCYcdkpdr=&PRFx7KViXV_bV=&WFkuEFWYcXqUo=&YjXecXZdgbmlq=&zMbul2Voqeibl=&DrIcFYW_lapkm=&eYHOGUUsZbfhk=&SOy25fYjr_slW=&EV4efOVWjfWep=&dYD3iYYZdoplV=&zNUVxVYfXXWor=&Pdc2LVZ_gjeak=&73mKf6Ugbopob=&8VYY3GZWlhkic=&brpXXSVkiieXU=&ZJv4B6VophXYn=&TzR2sTYUXhcnX=&wnJVV3ZYosodr=&u6iwG7ZgckZfZ=&tTOwmTWfojcjZ=&dV2GJwUflqobW=&6J6Jk7YolWngh=&4qaAdYWfpheiW=&lWVOXcU_dldmd=&_kVMLJWngdjgl=&nHBQPdWr_grnV=&otRc2LYlsUWfn=&qI6FZjUZUgfcf=&4ty4dzWakanqn=&4ob9v3XWrbdqe=&LDEhslUreYkXl=&gwqoYjUeYikdr=&HdJzVwZoceYdi=&luil5fWakqlpk=&_O99cWXmZlqVj=&DpuP4UUhqpscd=&W3iCrpXmhodms=&NB2t_eWUfkdla=&RJSPpXZUnkims=&EzHL3bUrYidhs=&YoUYtCYYkshad=&Nx4p_TViqoaZ_=&ZJ6ibwZbmdciW=&aHKg5TXUbpchl=&zdl_WGWdUVYpl=&2t9LXFXfVXoec=&sDIBlGYZgjkVn=&uM7sZdUcmXWic=&5snQCjYcrZmpW=&FO3eo8UsmpZ_d=&u2jClFXosaWph=&B6mkuJWYmkdpm=&AL73aAXob_mqY=&8XW25kWqgeUiW=&f4J9ePYZnrscW=&AFVvXQXenWZk_=&vewnneYoi_hje=&EPfZIVXlceZUW=&6hZuwwVUphWdk=&JPAKsfZdWkZXY=&TuN6ONXkmggoW=&qhtN_dYfsrspY=&XhaM4XYqgpeqg=&45KBkTZfmff_Y=&vgA2EmUdooUWU=&FOntBGWiodpjo=&jACYQgWgXUUVk=&ioLMzrUbddpVl=&aRZx56Wiankqo=&46wxM_Yarjhip=&ejoycLVlhmkac=&EbIYNVUmWonbs=&QlDlzQUUaafbp=&kQqJOkZpbWaWV=&KYMMGlUbpXbVV=&zwOAsCYWbhVkr=&xvw_YGV_rYoXg=&KkH4QtV_ippdm=&phlC7RWamschY=&tULPsxVnrcmZZ=&zr48KwVjiqbea=&HEKhTAXqUUUfk=&xyKHwjZfhhrrW=&6g5FlMYro_nVn=&e5uVCRYikiXgW=&JuTODMWdrYi_s=&YRX5x_XZpnobj=&b93hnYZ_lqioa=&5G4aJMWWZUmak=&WsOOfAWjUgklW=&cYyWdHVsgnoZa=&gJWD3MVpgrbfm=&VlIxkEWh_YdZZ=&jEcjdeVpWihjk=&d2qkHzUkUsXrb=&4k4Di6VgaXcpc=&uQ_xkpVXWmoif=&hJVUhAYmmhjpi=&YHqz_rVipeggm=&8sZBysUkdZkg_=&o3ODd3WZojWcl=&9e3OyMVhcbfkl=&RXktH4UaZhspl=&ZbJapgXncW__Z=&SrlJYOZYcVm_q=&KuwfepYj_gYge=&afSAM9Voohgei=&hlrxWHValW_bn=&UvLXoyWiWXk_X=&V9RhSQZdpUbqo=&OjKsgGZsgd__s=&WRhKE2UXZUjib=&u2aVTUXcfc_Uk=&r9Ewi9VbaneaX=&ZuReeeYdjWdnj=&w6y9UGWibghqk=&i83o6VWniedVj=&Vi_Vb_YfeZok_=&Y_NkrrVfXUfim=&_tZJByWlchnfh=&CYHw54Weisjco=&YHdJDuUhhjhZg=&uFKyRIWhWlnrZ=&ipzBoAZXdWY_r=&5jN5kgWmiqshe=&UHiXefWkiVVgo=&NpugX6WphagXo=&QsYwVaWXpsssi=&YlVUJDUdcWpoh=&dPadC2VibVaa_=&xBFPB_Zshghhc=&cYV5SbWcWcrnr=&BFMy8AUrjhWWn=&D7hrnzVkfUbhm=&GdRZD8YqVVXUh=&2i8prgYWfncqr=&mGgPGdZpilqqs=&hh3jiTZanVlpo=&xqBI7DZgkUniY=&U9qpV7ZprWXrs=&kL8FVPZsgccsh=&9N77GeXsbjZsi=&fFARH8ZsiYgli=&XzVanRXVnYfdr=&gZjq6qWlpelUb=&PW3eb8Zjgncb_=&JR6XaoYVqVaeX=&Nwk69QYhqqiXd=&ZGKmajZUnfrfY=&yX_nnFZdjeYVb=&3xqaP4UVagrW_=&yOhjHuYdYhVhk=&F5D4wAWlmr_qo=&XsHfqsUaninbp=&IFKgDYVgWUfXi=&EJZJHIZXlkVZq=&Y6IMnkVZn_Woe=&ib8fSTUWirmss=&wN3ip5Vrgbkld=&8YGFuJZandob_=&96opB_YaodXlf=&cuHaufWbsjkjW=&AcUM7PUaiiUae=&_B5kY2WolXisZ=&Oz7TigYUVfgej=&cLjjx9Y_l_piV=&bV6ez5UVacXor=&TiNb23Y_iighk=&wJnUVkWYUhcid=&MavadpXWmgieZ=&bCLrg7WloiVak=&tab3Q6VmcjpnY=&pSCp67WlefVmX=&gsrNciXhgWied=&bmhkAcYYn_sfn=&fdIztiUjsZnVb=&z_RixeYhgXYYc=&TuyrHuXfdUaXW=&iWIu2DXhosUZ_=&2JXUxzXgeqjmo=&jhU4GBUUmom_f=&zoCjA5WmjklWl=&EeLISjWn_VXrV=&dl7ICOYcqnmoi=&eDhqAjXedeeoc=&pHlOevXiredlr=&tfMyQpUdYkXjj=&9BDBSyZYVcUrp=&6tsIR2Xds_YkX=&EcJeZ6UhrVeqr=&PwxPJBYioYacm=&igojPtXrZZpcd=&7Zv9NZUpkWshh=&XWOCsbYnYorUj=&4sAqQkYlWphip=&jQYWTQVk_sjWr=&siNhrQZWchnYV=&329ohkZ_rigdk=&uW5bbYUWVZijg=&4AqyoJYgXsZrk=&LY2nbXYXomjfr=&rIgxl7ZhVYkYl=&L6D6_4ZpmkgYq=&76rLiFYfWqsqU=&jOG3HUWkjhlXV=&nobvy9VWWmopg=&7VlnloXYcZXXV=&OqIGOYXkrXpYf=&9frA_PYZm__hc=&JgIwVIVlrefXs=&T5bEuHUo_ihdq=&EudH7xXVphrWj=&4KKVwhViUcskf=&rjLzvSXqdbbpb=&aopFTFUkZaqVr=&VFxOvoZXnopen=&hYqzjGYehXUme=&l3nAdfVomsplq=&mTWKWtUjkbfph=&OaFJkgZslZjhq=&4d7DvjUmlcWgj=&caXoIMU_eonXq=&boxnYQZUXfpYg=&jeWVWlUomUonj=&2REUoyZinrYXf=&MoErEAWeXYjgq=&Y5CINKZ_XVZjl=&TyATXlUrqWWUg=&TMxXgPVpeolUi=&HnDwtAXomiimW=&3v6b7fXUXprmh=&ODnVZFXVhgres=&monCLLUqnqYVm=&JtuvjbWriZWcU=&g5WrmSZ_Upfgj=&XEQo4wVjkfnXa=&WOBP5LZgjenXi=&7bpV8yYceboae=&hek8OtWVhWWrr=&YuDzIOUeeUbfV=&EkoirrVd_faZh=&oKbf2DVbbfqal=&v9WCirWolZpks=&Bp4RoaYXpUhrf=&BMpbxvUUnoabW=&uKdawUWZsdYag=&D3GlCoXjgUl_m=&Rvav4CWnggUqU=&2QsyH8ZXllhUZ=&BdXm5kZViebol=&vh5nqhVipZUko=&vjvurqWldVnlq=&U2wKsSUbbVagr=&5qt9NLUsYlYYj=&QkO_hCZerZ_Zm=&DvlzVHX_npVrq=&kpzsJmYpeUreU=&lwAvKgYpqlqlc=&ux4ThzUcffplY=&tJLhQ5X_XbqYi=&AObp96UfjYVfc=&XrPVJlUlmlYYr=&pTc_ZSYencVpn=&eMjqKlX_rgdoq=&HpueyvYqVjVpU=&TTKZZhVYZhroe=&WBUlDeYgVncmm=&C3IM3tVjlahWg=&RW__uKXfYkVYX=&AkXn7LZro_jcp=&rzol5JXVdiWoo=&JoIndoUpqaZoo=&YVcxe8UZc_i_V=&OBdiDUUYkWnhm=&lbUYNDZfblgrk=&TnSTjZYessZbY=&vMzqg8WWoYeec=&lAUPxBVVaZsjd=&hrw6kSUicegjd=&DoVPTIWf_mccq=&fTO5ktXebpZVn=&RAZNpXZesdiaY=&s34vYoXgZWhWm=&rtuvzMWpkgmjb=&KSHp5AXZaYrca=&cpnEdUUWlnljq=&5ltGz6WX_dlrl=&QMIoMhY_UWbsp=&XMlPiPUfmW__U=&aGJb9_VWnqjnf=&YrToRFYUgqbkq=&NDozStUWcUjci=&gh9XJiZidgjrs=&kQBALGW_ogb_W=&eePlGUWdZdrXa=&qQZF_LUhoqfoq=&HuAqe_WlqUg_b=&5bASKVZkerbpp=&UaOiCbYsYlbak=&BUB7ysZleorgm=&vXOTftUWdWgli=&cYTBJhZVciqbo=&UcGGErWUWpXoc=&IY6hrkU_cqg_e=&NG9wfeV_mhegV=&XtZU4nUnUihqa=&JxIIr_WrUrWrh=&3VpW4JWYksqcV=&qLlOpmYm_jhbn=&Mu9O2YYlgXUhV=&6oZvZJZ_hVYaZ=&UCXFqRYfgqXrh=&yUQAaQVngcVUi=&_v2VhtVifgYUq=&LGLdryZgcjVpb=&tFRzqwXssshVc=&5QOnqnZVUmiqn=&GKXvzeUXYgpjr=&rCnLHJVqbfkml=&oNo_yxUddVdZ_=&GvQgd8Za_e_kl=&GPtYnqVhpsbnl=&mrqKWrYdqpjdX=&IRa3oNVjiYodm=&VUmRyXXflreXd=&9YuU9rXWkVaea=&n8be8qUWkWbiU=&ipMaYjXho_qdY=&g5NndKWrf_pZm=&8NQUxbYWdcsW_=&4mP3TBWapsZlc=&eJLdp6UfrWkai=&DAOXgnVggqoeX=&bEc_s5UhWpZdq=&sZ8OvuVXXfqka=&XU4wVaVhnqgpc=&SxItmtWkejokf=&aRuIjSVXliYes=&Wrq4NkWWgVnUk=&M3W3xuVhXnfsn=&MjCzjQV_llosb=&adzWu2WYcjYls=&i83IcQXqnXXog=&nesK9sUrjWc_i=&vB7GdqWUhYkpW=&EuTTreUXrVXUa=&F38mdiYmpghgk=&PLGr8HVcbsXbY=&zjeRkTYgiaWjY=&g9x4x9Zcaa_Wj=&YUtxPAX_bpWmV=&4_2TTOWqdcXdg=&kPzaubXbYVYde=&k4esrEUbknnoU=&3dillOWpWsbcg=&BBs6MQWabofXj=&yrfCgdUrlphY_=&GjGSBOXfalirX=&tVbWk9U_lpkeg=&WKJbiOUfZkZk_=&y7jw8LYlhhmnm=&P6y2VlYjnbjmW=&Vv_D8rViidYq_=&pOTS_NVqgWnrV=&mNISLuXooZjhn=&cLHkIUWmkXYea=&SAunyrVUpXVWb=&hjHB9TXrZrYlV=&r5IQrpXsXrsUZ=&4IfzjHYYjiqap=&FZfHp6ZajpsYi=&ELXasQZYdlleh=&DuL5JEVihhrWg=&XqNP3gWWWiiWi=&dd4nvUXVmsrpU=&t_65kcXoXakWh=&7gdNrBUepaeaa=&7wR2YtYpddrWq=&Dp26aaYkrYUYg=&EbjJiVXXe_jcW=&V6lWruXkWZjXl=&EdHIp7YVhiega=&D3R3R5WqoogXX=&HpYSScUrUfkcr=&8rSRg4YjplhUZ=&OBiWk4Z_cYii_=&TKSIyBWgrjcUj=&NVrOiXVodWqjs=&D6YonkZYXjjlr=&SiZGJgWsXc_jl=&6Jrbq9YbrZUfh=&QHorXTXshlkbf=&fgBgBnUqZfrgi=&gjASnoYfdqckr=&qXIcwoZUXqhed=&PfUfgNZjZVqeh=&WegrH9ZslUkXs=&WBarJdZircgYb=&Rt4u6KVlrmZoX=&PvklyKYikairb=&7BALXAYhWdnsZ=&R47LAwWYgahVq=&tjWYj_ZardWaj=&FaYG2DXYfahgp=&bN4hU5YkrcZhk=&gdcPerZoUidUk=&go6_FjYe_jYr_=&XXZzQ7VWdUWlg=&sxQPhIXoWoUXq=&ujmXE4VWi__kl=&qM3PmyYrkgdbr=&Ft8eaqZhiXbZZ=&HGRPBOVfZiU_m=&XOlCSAVamsWsc=&xcjjukUbdrWcb=&ZfvBnSYeXWjWo=&hVD9gsUea_Yig=&49RNTqZYamhlg=&_5aW8xZkiUaoq=&q56o_kZo_qkYX=&9v9Vn6VkserUf=&5X3QonYfrsjom=&ctLEPGYehjWse=&4kUU2VXmdUsnV=&AFNxtYUWU_sZa=&p_JtMoV_dhejg=&Vg3tslYWrUggf=&yumtfkUWiXWnj=&leptTrWZejnds=&AUGknuZfonVgU=&m_HYZwVWhabZl=&ipoOHTYdVYW_c=&FZrmmnYWnVlbf=&jQ4eyIVgr_X_g=&IAerdHVWe_gqh=&p7toLTVkhblX_=&qJiLpBUdle_gX=&CfQwpHWrqXZil=&JfqwzxZoebcbk=&r77igfXidUaVg=&MqOLuaUgWqmoU=&r8hgWvYaeXq_g=&y7fnyfXaaUcah=&xh9g6HYmlhniU=&iZGhD6W_sd_bZ=&YwUr4yYbcbbmm=&7N9WGkWipZdmX=&A4OEHZXcf_paj=&wGz6_DXgnacgq=&gdHVMxXYegiZd=&ml2imJWsermdm=&qo9iE5WUedcWi=&Ainr35VgampZo=&StNmMrXpWYmZf=&7sTXH6XbckX_a=&V9u7DSWUcqqpY=&vnW7JnUYVffim=&_8NR5OVaf_kgq=&AgDfNEUikklWX=&UdDtiKZhcbksp=&dbcmM7ZrdXkmZ=&6OsRRZUWoejgo=&UuM265YZaXUop=&ycYfbTZnUiZYj=&5U6GswYZnilVU=&i8S3TgYhYViih=&YYEUXLZoVnmWU=&bKX7GRVXf_chm=&Y8frZqUmUfWiW=&sdyv7GZXssplr=&QEvJODXcj_Vlm=&8vhmiDVWbmWYf=&usSV8oWlpgpWe=&Vgrz5RYeiodpn=&x8wTpiWe_l_s_=&4clteOVmYksbs=&gbstmAYYjphks=&gnVT2RZiqkoha=&LfAdBzUWdpbd_=&gg_yKnUUVma_l=&J2rNtbXchmVag=&xMd7xnYgqbYki=&_xGucZYeYkbaU=&nPtpfSYZajpVU=&OHA8SdZlkmdZe=&jnwe24Ui_andZ=&sd5fpuUromrbl=&elmEmkXcgh_mq=&_D9riGXfgafqi=&_8EoClYkaVWoe=&Lk26AaZociolU=&M7hSbIVossemW=&SPOvBWZUqore_=&G2rLYnZlam_Yl=&KMIFMOXhmomdd=&tIuVRLUi_XXkj=&zWon7jUodZsci=&WK58y_XYYjqaY=&QGevaCWgpXUio=&mDXdEqYUfcWZe=&wD_sbLVirrVfh=&aVxfugZoWjoZb=&2y8b52WjjkbVp=&M2UexQWVdVkdr=&zkXbDNVYbdacf=&qNtNKDVbbpZ_i=&JwBMbqYYWpUhm=&idlpW8Zpd_ikm=&dH_3nXZkX_iep=&v7YlPIW_Wsjbc=&wfBHPeWbjZYjp=&_JUHlrZhhVjYi=&JZC6jQWYcbYs_=&ZUdLilZbbefZ_=&UpaxvVUgohaXn=&AwpJnyZfjojgc=&zGr9WlZebVamn=&5K4rkwYddrVol=&cKZ_EpYggllVo=&EAYdZ5XngfjoV=&GgZ6z4YjjdrnW=&rixmgAXXojWfj=&qUeNFCUelikek=&FC47qMUrspcUb=&Wfa7XMWsadoUY=&FAd7_eYs_shWk=&KAy5MaZaUXYn_=&IjBL8vWWU_goU=&zIex4pUoWfWpZ=&lbsnC5ZarVcch=&qGySjoWVjgbhq=&JP2NbxWgfmjWV=&rpt7SkYUlgrXp=&tCnbRoXfXUdmn=&P8RgPwYskYgVU=&QC6_8MXVicpUg=&88zuaHYnVceZs=&3X8DAFUosXZUj=&oqSO7sYYmjbZi=&VUSuvwXUUpbeW=&Qn7YtLUikaZUV=&kzcR4RV_Z_r_q=&MX77KHVhqnWsm=&GcT9M8ZgjhahX=&nrwA4KUke_mln=&BlmtWlXqqc__k=&ZkeqtJYnmiram=&5UIFABVYWWjiZ=&wHMczdVfihnfr=&bTiCKBXogoUel=&4jjUnhWhlsmXX=&NzGQmzVa_sasn=&JtdEkwZgademi=&VrpcpWWdkbfq_=&zYyh2WXVkijon=&Fr39wrYjlmqmU=&hiCYv8YVhoWmm=&KVdtpuZlncXV_=&6U9vJCZkplaXs=&GNPmX8UgfjqWZ=&UeJuVYYpoiVfY=&GXQRP7ZVnlqYU=&klK4opYefbpsp=&j4QElIVrbUVYg=&Qt6MgmUh_Za_f=&kfnB8ZUpbWlra=&SqyRUMYrrem_g=&BydeuoVnioqZs=&rDbnQeXeqUskU=&XsfIEQWoef_nl=&tY2Y2SWZrnjYU=&Ofvna7UasresX=&Gtx6ztZh_frjl=&FR6speUnlYjfZ=&RF9YKpVodahrs=&O79uv4Vjqfjrm=&NSe2K8ZZYemaY=&ScV6deUcasjgh=&RPyMtgVVcbWgn=&3yFKCkZmVbalW=&OBQvS8Xifa_ko=&B5OgtgWiodpgV=&zI2ZjrVnekbj_=&5b4Ps4ZsfgmhY=&aJwfdeXqVWXla=&wdMig2ZWgrWrq=&GyyMjJXnncVWl=&N9naQBZrnjeYq=&yHt2aDYoVosag=&PwoUjuZnXhgjY=&DuFtgQZWjapdk=&gjcJIZXbXXfib=&lvM_lyWpZcXiV=&niv9uyVfieYhW=&IFoB87WYaZXam=&vF9grkYcjVYes=&M_reXQXfhUbqb=&H79JRLYqmknrn=&6rtoEQY_VpUgo=&uAS5I3ZYrllon=&lBDQVZU_naUgp=&6CWZtSUorblnU=&nfJRGOYVXcikl=&xHWM_AVscqoge=&OiaPtpXahedbc=&iOQdVEVcqrgnW=&Qe5RPAWkmkWVm=&yLZbRqXUoomei=&Ch46W5XWZYcUo=&392YoLW_oVmms=&QgbPn7YcfjlmV=&T4nAucUbWgdnb=&8pptZhUkeUmol=&ysyNlUXqmic_c=&KeYmrxWYcVrXi=&pZbHtgZaWVpob=&TrtgVfZocspaq=&wyEEcVZdWspsX=&Z7ESFYVk_Xain=&8S8WfAZeXcpVk=&eEZ4PRZ_aonlg=&EOSMCUZedU_Zg=&ds7cdBU_ZfoVp=&sTPv7bWWhoUec=&OY9xuJZbVhVhd=&SiYTYiVajnYdU=&3WcaZDYYrlZdj=&AEgXXWZZXaoYa=&hMhSxiYWdanck=&jCheqYXYgko_m=&Dga75lYksZ_rV=&bmSnl5Yjklaga=&UEKndwXnfgqgm=&oVsO_DYiddbgW=&ubADLOUhfqXre=&qWtGNiYhYas_q=&gQCrf4Wehjbsb=&rBu8NIVmgiYck=&T_GAiPUii_hZb=&6BsKpoUqriVic=&Mh8QfSVlniX_s=&B2tNCgVkkglan=&uOXVGeUfdgXdp=&_SukpDVXoibhZ=&l_DeZaYhmgibW=&LVS3iXYn_kUih=&ljFGPOZlZoWck=&HFx2EOZdscgds=&MDIOR8UVZlWpi=&EmgfeEWjWZbpe=&PPRM8tVYilqqW=&BppojxYWnViWi=&drrYgWZYrhZXr=&lGTZZUXgUfkep=&o2cxcqXYeihsp=&ZeYbIaZVdjnjd=&arsgAJZngas_b=&F_OcHJXVjrWog=&rQrrSlZqWVkmj=&gwNP4sXscgoZU=&irKcBOVWfnbhW=&dCUtjfXieccjj=&lyhCFqXlYfosr=&MBaKFDUVVYsem=&Evt9PIZnbcqlY=&wqo3pkU_oZrlb=&vUEZeaW_sV_cY=&JvrUPkUqngXqr=&Rw4aRAZn_ng_V=&fjdrplYna_smU=&Pcv8pNXiXZqXg=&pNtRRbZkegjhW=&sIXrdHVsshXbj=&oWE7gdYjinlni=&hPQgtBZlXqXmf=&gRgCzFWdkecWh=&DoCTBSUhcqlmi=&ipuc46Ue_kUg_=&kIR4x6VZV_dkl=&eqF3ETYcqmYhW=&XT77wqUbgsWeW=&xDz6eeZUkmkdX=&Yth4p4VmYphhs=&KWkRACZVldVfs=&AtG3bvUsaZimh=&Rji8P7UeXqsec=&Lm7fWGVZrYUfV=&rHeXiBUmcnYfl=&yHGwzWUjYasoo=&FB4UkDXecanWd=&ORUFHXZdqjYem=&SJHVSrYrlkbnb=&nDibLxYrlsoqW=&Msmy4xYlhgdXV=&nSaVFPVoiWsZl=&VrhiyoWaYmhVY=&OHm5ekUrhqkea=&QH5kfWYambqVZ=&3hR_ODWd__rbn=&FkO46XYZihraU=&6JVQJbVnhgldp=&C7WqcvZbikqma=&2tZTDaWgVaXWm=&CalT_uZVfnqcl=&rTdadKUZrnk_U=&E4I95jWYa_nnn=&MJrAJzZlqonia=&rP9eaiYbdbfcp=&QVyN8aUrlcYph=&SKgTcqUVokngc=&ppTmtCY_bUifX=&m2DqGwUUmrrVe=&4oLIbRZikjZYo=&rCqsOfYqsefqY=&5UXUCDVWpmopW=&_6YE5MUnbWggc=&qYrMbhZgYlVWd=&dKjqxnXqghUlo=&SLXMMQUeraVeZ=&thx9eoYcoe_Xr=&XZo8gSXspispb=&RxQXLeXjWejdZ=&VOE43xVmYaXkY=&Rw8ykQYo_bYdj=&aLc4xBXbeiqda=&xarjArXlVnUjm=&bkLEdCUoqWake=&4IV9ZGYZ_hWpb=&Dnl_OmXfiVWZs=&WvCOTMYnlj_cU=&y_6GNuWZi_Unj=&Yzzj8iZabpnil=&gqmCZgZsrWqcW=&YnDDxXYkegrsd=&3KJsvCXlUXgqi=&pP2GJiXorUhWW=&PtTeJ8YppaZbm=&X5OQhSZaYmhVm=&FkipIdWsXhhns=&gwjnV6YjjrgZZ=&tKLidCUWjZZch=&t4YrlRYWUUYYW=&q_4_MtZfhkpf_=&dE4DSCZpfbfls=&khMXA9WbXpbgb=&SBvOWgVhijqpd=&L6EgmtXpXYbjn=&ute7YJWjcWckk=&xO5oAUXnbepbj=&2OyljuWocUbro=&aOYdRwZdZrbog=&9Ul9HvVrYjpVd=&IoPMF8ZrcWrjs=&9lx3BHWpdrhmZ=&sUxxJWX_WcfZp=&4KaPdzYjfUZpl=&l7aVnpYehkorn=&wXxkU2YbmUene=&DDoJY8Yp_bYpe=&3XbNfAXqaVkqZ=&SsN3iMYkWh_el=&u7TerBZf_ckce=&3o5EUtYsdgoVi=&WUFrbFWmncndi=&UhLpgIUodkbpb=&GJFOyhUchdsVb=&mLwsQfXirsepg=&MTMVfUUncrbon=&LEmw7uX_UWjnh=&5b2fpJVVfmcpi=&qTQm3GWmVciZa=&M9rbaaUZfijZn=&IrcdjsVjdcgVo=&JrmtAZVWjgXks=&p4xCxOXZUpVnU=&Na4Jq_Vse_UeX=&2jfpCVUomfqqb=&lagJAiWgqsqql=&YITbgdZcnsrn_=&DD_om_WpncVZn=&GXMEa2YiUraWW=&m9K3rbWbgsZfa=&sbB4ecUanUXeY=&aQM4LoWmnhhrn=&kbzPJ6UkWhobm=&MyD2zxYYrbrXh=&K_4DYmZodofeq=&mEopwOXqfUbsd=&Pet4FKZpd_fml=&J4TENMVWfrlXm=&HRxUMGYnUlqi_=&k4EYdnYllslbq=&lSgbKYXipdjin=&wDCiqvWYfnmZi=&da9VF2Xclmfdj=&4Z5Xo5Udicggr=&8XxFptWbapccf=&RLMhbLWhhfcch=&vbQSK7Y_gbhkX=&lvn3JgVofhXjs=&RC42WOUZiisXk=&HAaICiVgY_ids=&xt2LxMZorbbjr=&6fzvcRVcgmpld=&RYoFBYUaZbafh=&tbYoyqZomapbq=&MwYbTHVpZfmWq=&EhjpaDUipYi_Y=&nRArRfWWdcZfn=&T94BMoUWVsejs=&SMrmr8ZeWYnma=&gocjvkZYVmal_=&YdPUo6Uak_lbg=&y_Z5dmZmWoiag=&3ZJcP2Wafggkk=&8wry8sVYUglVZ=&Nhc35cYemmbhd=&DLTergUlcceXr=&OsSrObZone_gd=&fpGA9jUdrYdjk=&rCw6DhVblfVdb=&vAdEgYUpisXkp=&HjOrxaYmgombY=&BSLAdSZUpicqq=&XUU4kdXaVXeYn=&MLQZ3zXngrnlh=&sra4hoYjYodqg=&3H5L8bXU_lVUY=&QuSQ_WYk_hUsm=&PO2zLRZfldfZ_=&vjzG_LUldphVY=&ZkTWs9ZjWlUqU=&99ezhzUhjfVhb=&Q2XyyEUledm_p=&5a2jkhZfqgfja=&QexnpYWqqeZYZ=&iBVR4SYkbaYdj=&D7wtzSWprfacr=&4sW45AXZUpWW_=&nKYLQYXogdZam=&jm89qyVdYqjjl=&4EQdMOUjYWVZW=&nc49TxVscUkrn=&wZMSebUXnaZWs=&8qgYnmWcVdfVn=&I6N_EsWlYkofd=&xDYERsVZYlkfe=&2JnhgOUeljpVh=&knzIvXUpreleU=&KqIoWoXkacYWq=&Kg76H2VmiYXiW=&jKUGhnXlqfebY=&jDeNQVZYg_okU=&TXFOUGXpomWZr=&nI93HMVsVmjfd=&Snk9JjXclphU_=&n8El_KUZgVofb=&xnpik9VckXoUW=&8gE6X4YXnqaZq=&wwaWSXUqXlWYg=&n2FjlOVpndfiX=&ldXU_VUVkpaep=&I9hCkbYihsdre=&mbYVx7XahcZpe=&ObAaWKUfVqifj=&HtO5ueUWUaUla=&39roMJXknmi_b=&sVsa85XfZWhZe=&DkTGixUmrlZZU=&tWGcmrUUslUsU=&dp3_yxVXUmhUX=&CRZDUEWbXZqYX=&KhJtZMXgpoaXY=&S8KGXTVsofibd=&OycLHCXUWmipb=&Ko2vItWqraVWW=&NyfiPaVgYVbej=&qs2XWTWnpilhk=&yM5QIuYdVrgbX=&EJ9rwaZb_aZZl=&meLl6tXZYWajY=&gqXXgbYbXWXUd=&2bclwKVgYjohb=&pDu3MeZhaZdsZ=&MR_x4IZejVdjj=&MDDb2UWijUnij=&SqjeCqWXeYWon=&gNMPh4UaheroV=&oS_5ajYbkiYoZ=&Dm_yGOVflZmlb=&6FbnWcYafZjrf=&ioyeWMVcVYe_l=&TGkxJmXUgsViY=&eh_sA9YYgdZiU=&U6vyfxZiidWeh=&Dmc7QUXhomhUV=&dxMyMoZlbmZdc=&blBPMOYcVokco=&RSTfYkXpicrWV=&AHn_95Ykeo_ep=&DrO9IoVs_ncab=&TpqSFDZhbmgYa=&Uz_SG2Zbjidmn=&9_C6rQWakbigq=&BNtqiqZWmeh_W=&3PNEwvYbjlqfm=&dQH34pUjVdpfg=&xH3sOnUbshVj_=&vz6pTXWqclasq=&cPa6U2Xgk_Wlq=&QMqrdrVpWmlmV=&RU5anNUkgUrsn=&hzPcLrUVrcYom=&Rkw8uDZrg_lsZ=&N3xQohU_apdoU=&ISQYTgYYmcdbs=&ytOH3XXefnfce=&48l9tuYYUagfW=&6p3JEbUnYUhj_=&hwLRJ8VinXpkU=&DkKt9jYfYlWae=&95_luZWjcdmUd=&DE95a9Vopnhpn=&H7R7ZHWpmlpko=&zn2W2pVmqUUZq=&4yKwpEXdgjfdm=&eLqI6BUYUjbpl=&c7NzgUYshasjr=&28q6OpZcbpn_n=&jCwXI6XaXahlW=&fmxIQLVhdjcbd=&Avjh9bU_pWlkf=&NsE37sVroXrWs=&G5ERdDVVkfnnp=&4UaPWzUrnldjn=&4OANuLUqeZegl=&huwCcbZlZlnqY=&KBlvdVXjYcchn=&PdYZcIXajVsUl=&v9fq9DWXkZWco=&MnvAPdZsdZpZs=&U_hHe4UVkdoYW=&4JerGaZidcipl=&ldShQIZipoofd=&6nUVnmXnodi_s=&nv2MUeZWYmiVk=&gWzTTEWcaVrei=&QH8p4RVocg_jo=&KgXW_MVsghUmY=&jxxuW4WjbjrWb=&qmgxxwUbdUsWh=&5SUoflXcmVcpY=&YKh5AoYcoiiac=&q269ApUoZ_Xk_=&LWJo7xYbnmZWp=&VYHiqiYcndier=&iWzZquXYWUlgf=&CL7ktBUalZXcj=&gqywWDWmpUmfc=&z22NJYZmfksce=&sshqa6YWYeopc=&OxVcdoZlrgkri=&mfwTjaUebcUeh=&hB8BFyXlrUVUg=&K5BJ7aZhnVaWb=&DVYFRLYqockk_=&36mlJPYeagYje=&3mRZkBXejofkj=&K7aPINXWZYrfl=&5GLOgJU_UhVaZ=&p6XKZcYUgacbq=&e7V6WhYiUiWgq=&zftn6gWsYacUg=&77jHSDYeVsZbZ=&ERremvVrmW_eo=&EYOrcnUpgimam=&_DpSy3UonqhhY=&nTm9avYmhjjhU=&g7TmajUnsUrVk=&oEJidKXlVpshY=&5wOSf3YkZnloV=&jCWOiMZUYfWWW=&BsPPOcUeXZYia=&jETl98VmXWWmX=&6RVv9UYgijfWr=&XzBkjvWWfmfcU=&9LjPYqZZeajol=&ktTYIqXiiXVpj=&cxWtYlViejcZn=&Bg8tORYjoXho_=&tNkHk2Zrmobbr=&dO2IL7ZrnZkqq=&zTGBDlZjhfVcr=&_9w9fvZYocdUj=&aVTZigWhrXlki=&l6XGvTVZhiilY=&FiTIJZWn_obsZ=&pdtdMLZi_gqfi=&vW8pL7WdaUiYo=&ijE6cXZcfsbmb=&ojUUFfXkZlgqd=&7L4IiqXiVoVXX=&xCTT8pUjZeqnZ=&Xf86xtZbqVidj=&KC9nUFZoWq_Zb=&fsHbnVVlgmsrd=&ntV3xSUVrgmUV=&9Sbj4SVckkqVm=&MftLW8YferUiZ=&9CkAsZVjWbWjs=&WgtnJ9V__sfnX=&u9FHZrVgVoYqZ=&P8FgSNYaeiWgZ=&Mwx9wKYnVkchh=&qixixxZrgpmkb=&YoMmtxYbsocbX=&DBQIS6Xiknijh=&K2MdXbWf_hWps=&Q_zNXDWnWbYpa=&3jIHhVYYZUsY_=&mvla2bXY_saWs=&JlEi4jUsboass=&Ug76PXYoZlVgl=&NJCEPfWVWhagd=&pduSBAXXgUdbW=&MGAaeAXfkZjWZ=&I9ot_GZVYpcls=&foY9kGWhllmlo=&eiLXQ7UqXVpjd=&9PHMrpWdXdbjU=&e4anA4ZXf_l_s=&Oh7IVDU_ieisc=&f67MqSWqfnpoc=&jKpD5TYrscfdU=&YtcV7AWl_lZWq=&Wj76Y4WYck_Zl=&GKWtEgVq__jlZ=&wvpDapXleqolY=&uHraP3Xmkr_nj=&Z9OLZlYZpZdZi=&8y3sjfYYgdigr=&LpNF_2Znbnrkb=&FFIrnaVVgfrnq=&oxYxgCXblmjWV=&Oo4LhgZa_hjne=&7BzXa4WUUbhf_=&ag3FTqWUksXYW=&7ZH9IzYXdfknc=&exWEVvUVankge=&NIKDIFXniljnh=&Crg4SDXqdkVfW=&rIrUIyXYfkdY_=&5j2HqjZVUamYr=&f5CRIXYrZhsrm=&M9PJgSYbslfck=&7Xnk2HXarcr_U=&nAHjDfWrminrl=&k5AfRLUcimXli=&VbkVyVWbnnYjj=&x_kECfYcdYqjV=&mvghIXWsYajmZ=&df49gPYZdqYcb=&liXlYcZaVjikr=&p3zDpvVnXYajo=&rJ2_mrValV__Y=&hG3z_xUXqZiie=&7JTRVwZkeealh=&eb4VvBVmnbgpY=&r9jjtAWkinosk=&pYn3XFXqi_YXd=&oJjpUVWjaca_o=&8MC2GAZkjhnrk=&XImBWLZYkeokj=&gHQuOJZkcrZnn=&5H4kpyYmpdak_=&oKirBYYlpsfdj=&h2EurHWWpkrbU=&wKTNa4Zgnpcho=&_4OjSeXUkpfZr=&jyDWvqX_hWnfe=&krDaNnXqilsrY=&5YOtKsZXWYikm=&sW9MeOYadoZUj=&ZbtXYoUXjfdWn=&H3rSUsYV_rUVU=&7Uj7paX_gsigg=&TGz_y9XW_dbYm=&_FtnlrYmqssfj=&Aol5GDYXjensm=&vxPcf9Z_XZr_V=&qtLdhkXphcnnk=&_PUAnfVnYrfnh=&7U4UTvZhpqckr=&6zxykHWWZlqZW=&W56rLgUrggVsi=&84EvWgZmiefXX=&6Ip3jjUhspVdn=&RVWCraYfsggXk=&7JDl8CUlZ_Wns=&ZkogfnVWlqe_k=&4mFyV_Woodesj=&ILSeOiWgoeohh=&ji6uj8Xjrfnom=&EwGkPwYjXWWUe=&Be4QtkUpejUVr=&Msd2c2UlVirpe=&mkMspaVgfoYUe=&lLugbkWWh_bak=&zhLjpjXssljhr=&osedIFZbnVhik=&4HpNT2XeYZnfp=&4ekbuOXooZqlY=&CQGUdKZsfiZWV=&iiiYowVbZiVpg=&rDC7BkWaolbao=&ayoUHSXnebesd=&5DVeNGZVhY_ba=&rYiEMiYXZkVob=&UiH7NGZgagrh_=&QLzjCTUdadn_Y=&RF6uRrWheeqUb=&wdXmzYUUqrsoX=&vrEqMzWVasnUg=&9fgBDnXkrVjsl=&BBaBAmZ_ahZle=&zjkKRnZZdlsql=&DAhZOFUVrnrmX=&tdem5HUdZmWo_=&QjXyOcXUoXrso=&joLH3gWdXsqoU=&OTuofTWolUpXp=&gFtlPjYaheVXr=&DhWdHdZZVVpsj=&2jVdttVoamZfq=&HZ8B3nVhsorZg=&W5KprxYlmncaU=&TAteT3WYgmq_m=&JBqWzWVVmencb=&SV_7ONXoVbVUV=&A3amUhY_k_pmb=&xoHCINYjiggYr=&PV_NzUY_bqsZf=&t9e8BcW_dngUs=&AQtjOzYkqrbVr=&2jpjEVYdcYrjV=&FgbHehZd_pjcX=&XMnN9cYhYUerq=&hwK5RyWoincXl=&kpw5b9ZampZmq=&bZFg29Xhmia_d=&C6wY4KUfXccji=&3g8C5TYgoqqlc=&o9EGEYXjUjcjh=&GMtBH2YgcfZ_n=&d8o8JtU_pl_hp=&ghQFwnVbailcr=&YUZFeZZpemWom=&afUw2WZghcdYc=&GgVSQBX_bjhds=&wsuPDhWiefh__=&MgvI4iUUXZiWl=&grcCOtUgZnils=&A7QSYhWmhUamp=&kVBXyjZbbpVjV=&72kzK6Z_ifski=&TXgzyAZhjYhhV=&cxEWceWgZlWsa=&BshxnqVierV_g=&rPhoQXUsclVh_=&Z833uhUXacmor=&rSRBaYZjgXpaU=&cjBu9MUidVbbn=&cpZewdUXgeUgr=&mdVBjRXUqfVrs=&cbxDXqUmnlfbp=&xbQiWBXVUs_ko=&7RKsERWiWaYjW=&rHjxJnXrpijmX=&6XihIcUhlrYmb=&sdxWZOXapslkj=&hk88uOYaksUoa=&vPFankZ_mUepd=&eCrnpFUrVik_n=&rBJ6sCVbXXosV=&wqDrQZXreaUgs=&tOHoNJVqsolgj=&HcCOlAWdXVm_s=&bec4DaWkkaXsp=&7qqvAAYZriUnj=&NPaHlEUdbshbV=&tqZjnOUfjaUWr=&CxxPauUYlc_Zq=&RIFETkXWUjdUl=&GNbzaSUaYeUcq=&ETF9cGXmr_glg=&xa7Gx4XnlUlce=&ngi2jFX_hkY_h=&DVTHCZYrm__UX=&OsRHGJVZgj_cb=&BtFu7UZiXlbVp=&xO4rPAYecpYii=&jFi2toYlXonoe=&SJS3oZWiZcqjp=&po93K8Upn_Vrh=&Ckadg6Xpfqeas=&bKJroyUaVcUaZ=&UMRNMPUmXidi_=&TRekozW_g_ojd=&H9ktdyZaYofVV=&tQWQtmUYnqjbi=&sNINRKWiZXhWr=&QALyieYjXU_df=&kXtpfwXqaZWfU=&cwseoSXplUhnk=&raQE62UskliWf=&gEZppUVYWWehY=&R2667vV_cpcUa=&sApkjgVfWXmjn=&fbxljgYVUlh_r=&Q5xVxlWrXl_gg=&NXWULhWqjrmVi=&diqYxdXohUlYd=&4IjURvU_qXfXa=&7XXotbYabUsjr=&nGBUr4WrYlgUd=&qhu2ixZjddpsp=&oJpy5hXbXrhYf=&Y3XcLkVdc_ZYg=&jcjOv6XsoUgfX=&3MxPtNZWoehYj=&tMdTVkYb_Uqdj=&7kbYfWUbXsgkb=&rvWyRSYYaUZlg=&Tt37BDUikrhsf=&oCn49rWibfXZe=&bfnyoCWkckXUV=&fUrwrMZdXmhnn=&GwqRHSXlVfoVa=&hn2_tbYikoacq=&c6ENDGVYWqrko=&HGHGtwWgaZn_U=&uZHnDFWcUarYf=&XKgRc6Zneqben=&DOGq2iWWlWppq=&_8Fa_aUUWWjsY=&fq6GaXVn_VVsY=&iNatv4UhXWmWl=&brVDT7VZcjlsm=&IZMgwYYrmalbj=&8C2HdaWplXmcs=&7GiodgXkgqcUb=&7bhzi4YWcbfWp=&gYlClQZVj_irb=&9EGesVWa_Wka_=&Df43oJZnhkjil=&FqyGAmVXspcgb=&Cl7DW2XVWnsYf=&UsCOaYWjUVsol=&QlJG4NWmppk_V=&6d7e74VUjjgYd=&5WlzaDYXkcegf=&24zNpaUbXccnd=&cTV7euWsXknsp=&vWsplqUhmhpUp=&rYhCRmXrodd_a=&fpoRxEUjod_dc=&VcMc_lXYdernh=&RH2txvZcpslVf=&MYBzDIXUodjcn=&VsUlDiXmbicfr=&p3w_yQZg_mbaW=&3rHFyoZaVrhem=&iMzRHVYaUahXh=&ek7aKEWiVoZVk=&VKGLF9YlaeWjq=&yhApeeYUfYUZl=&C3MhsyUmkfsVa=&hJe9nQYqosekU=&7P2qUxVmceVsk=&kjdevMYXVUYqg=&afFG9gZdnkqcg=&WstGTmZsmXraU=&T8pL_IWppUYbk=&Ttt64fWpqhYhm=&f72dNIYZbliXr=&9ZGzLyZog_ljf=&cCcmzCUmZcZXl=&JntJdKUnYeUYd=&Ud9NoOXdghfjo=&7vAb9vYWnmpcg=&gC2LThWUkrdej=&DB48lpYUqehoW=&7VoX5OXfhfcin=&qX6ghyY_hnblY=&n7PMEiZdbkmkU=&DIRsPfUkZpYcl=&xBIUiDUbcbZb_=&MDyKCwYshpakc=&GY8oZLWlbhogh=&3R2SODZsqfYim=&VmueiAYUsgdlq=&rGwYbDYppqmqo=&SdvqdjUgl_ZZq=&fkblYrXgXmoja=&zZuVlXUeUYokW=&EExJOPYZoUifq=&yGhPHWUkljhhs=&tF6fZjXnqfehZ=&r2cGoIY_ZVVVZ=&vl4AGwYmUgZha=&_drSdcXfpUnlp=&SOGDh8UUnWXrf=&fa9C2RWnh_jmp=&U6KgTkZXfcchn=&A299xyXXiZqam=&n6VDe4VYiVlil=&ZHEadjVUlnsme=&Ev5wTIVljaZUj=&rGRKw3XVXp__Z=&Fk9BUkXWcaksc=&jnrn8KXYYYhfl=&U2uspqXYVp_as=&sV5EXAUegWjam=&nskOMIU_ogV_j=&mq4qPNYW_ocko=&XFdpmqXfmhaZZ=&X2pSYlXXoihmi=&AbroNDVjlriYX=&OcpBYTWdoqVk_=&UFHlPRYpiYZWU=&nvcuYLUssUWiY=&gCNoefXaUoanh=&22Su2pWXdqiZY=&ZyYBknUVijgjj=&rlGEHVXZgpYcU=&PRxLypUVYi_oh=&KXltxhZbYXmsl=&doJx5VZnfdfYY=&VjjvClXZnmUkZ=&9YQJJVWo_Ynor=&qWzUGXZXhpb_o=&FJYuyQZWelZWs=&i3WxW9YZdpWUr=&PbcGWlYUVZ_ek=&bP4yNVVlXdjZg=&wN2IGqYcXXmZi=&25Kb_AZdplobo=&6jTqibUb__krX=&pqTjGSVbnlhhg=&lctPcyYp_W_na=&_qw3ZBZgmsZ_h=&wY2ZLcUkqmlVW=&45r6HrUWgcUdV=&aXFNZOWbpinlp=&PXr7jwUsd_Vmd=&6FNgrEXikdodU=&BU4CY8Vkbffq_=&gDucbpZajXd_c=&C3PoVuZgqcfmn=&9f_qHtXsksXVf=&qlLq6kWpjVsUV=&arX7umVpndXga=&6WUUUNWabbcVq=&_on6wAUsVhXVj=&r_iPnqXqmsgmV=&QjVgE3VYYhmof=&_aIJeaWaaldZd=&cSGWbLZoWVaUl=&Y9fNMNVVYsVls=&3RN79EUV_bqkl=&akwETYWYZilqm=&VhzoEnZbcXkc_=&Xq5KsmZshWokg=&JeXzegYkmlprl=&Ye_J4_VlZsqUo=&PhPyVpYfYqYij=&4tjZMDUrXVkVg=&XoJcFSXoZlYqX=&_CDHBuVmbfmgj=&FHsEmzUdlnXUi=&yS7jEvXWkoaWq=&IsUmCVZrbrZeb=&P8VeJqWec_kYp=&GmKaDqUUlfmfV=&iSdstHZraeVer=&5HSJjyYdYdsmc=&q42k8UY_gW_ak=&EwzDz_YeXnqnZ=&LXQXC3XrWkjVW=&Zruw_CXisikeY=&vYAHzvZkmhXaU=&jR6aMWXipfekd=&elfd4SYhlhlmj=&uHwFFUXWdcXfW=&XgvL7OXa_cmmd=&VPpnavUklVlWr=&rIsliUZmaYXaj=&v3p47IZeXkbbk=&soV9WhVmgfbnl=&AUCa8eXn_bYpi=&WBESJkZmqWske=&it6kDHWVpVUYg=&LH63e2UWqZ_s_=&HVoFvIYZgeYsk=&33JAEIZfksoic=&DLNS_jWrbYasV=&8FAzBiWdfkfoc=&h2jAbsVjmUpg_=&2Xs3ssXoslYWn=&u8Ou9aZlpWbpr=&tmX5VxVYqkbmZ=&SlwbtmUhphYmV=&S3PeBxZhYdjsg=&sPIdFwWodbcmc=&voWr2PXkdeslY=&GNmm7AXchsjWn=&iTfFYOXlXqfdf=&47k6nkYZWsZks=&onUOBqVWqlrVb=&evoG3gWjsqoZs=&bc68mSYb_ii_l=&_yWBJcUbnZsWU=&yA7s8QUiXWYhY=&zQRIAnUfaddin=&zgaD6sYWgXjjV=&I8Id_yUkjcrql=&gfUbAtUkjafkk=&hbALYTZWfpVdo=&qnIPaAYajYplq=&6dLqQEWocqgll=&64N97QWaagnkj=&eKWX7bVcZVghV=&R8NqpzUsZecpc=&J8y5qhXUkocib=&8QJQJEZWhfd_k=&53rn36VVgfpag=&BHTOHQVooiYZX=&LaVOEJXeoYYYd=&4oOixCVY_qjch=&ijoSRkUmnj_dq=&IZNlXJXbsomk_=&ccPXqoXYYYUco=&XDXRm4ZgkZWco=&Z8pupqXqZmsaX=&8kvWkQYjiXYje=&JC98nuUfgWZdd=&MF4_KCW_iimdU=&vGUiYUUeVkcUr=&M48y3gZkXXece=&Goln33VjgsYhs=&JDRTjFVVbgYom=&2UszDoYlaoiel=&3naMBbUjco_ps=&uniyQRXrfoVVg=&gBqT8rVgkmUjZ=&CtwYEsUoVclpf=&6CKryxVjXljZe=&32TrZPWqibnVh=&7LxmDEUiZlZUf=&WtDUvcUholjd_=&DkdTzCZaaYgfX=&AoMXajUUjcUVV=&9wnGpoWfebasn=&b4vvFTUgdcghl=&_dY6hLYj_dYpm=&PbGxqDWfUmkWc=&P3ndxRWqrVhdg=&r5TUvLY_hbY_Z=&UEyhq5YqWnisV=&_EN7P2XoZXche=&UhTb_dWkWlbjq=&ys9K5NWoqbWhY=&8b83F4YXjclkd=&28LTUBZoqqrVn=&ER_MyAYbXh_lc=&ggaQqBYXr_VhY=&lzQa2ZVsep_Zc=&6vDu5hY_pofsp=&Tz53byWlmplij=&vSCiAKUnsqaUr=&Ivhm8AYlYlapj=&bTkXhJWiqgoVj=&V3rivjVhjoUgk=&ANlxmEWaYoihj=&JLzQMMWfbUXsp=&LfBdwyZelkdfd=&LDAKC2WfllkUd=&wFWeaRWYcnoci=&ydWJf8Ucfrahk=&Sor76nW_pYikf=&rwXVQ6YmbnlaW=&3f5Xs3Zifijsk=&H5wGBqZdY_cqd=&vpmm7oVZWigje=&7pWRY3UkmoWlU=&aHL_dlXc_qrsZ=&snFHQSVpaUq_U=&BtUzxfUhYcliY=&EohKgkUcmormV=&R8weWdZooqree=&WZjV2uYeiogWn=&6ZQXQbZZhpgsj=&yaWvsnXipqlbd=&9NeNoGUhYWaff=&3nXzZ9UoVYihr=&HsmNrOVrelged=&cYEAhbXmZeVcs=&Y7AXBuXoggdVk=&9xOpliZghjplb=&xmZjS4Z_lskWX=&6y_WyhVjadUek=&9K5ooYViZXgqk=&I_PoHUViUisXh=&7MHKm6XqWfmbY=&W79kenXhpVkss=&KCZF4RWWV_gUs=&24nqKiYXjhoWb=&coDP8_VrmmYmi=&gvBONRUfofpoa=&DB3tuTVd_cXWi=&BTSIRwZbYaonV=&LAqRt_VomlWmi=&4ApYfjVapUqre=&qZN28hZfnfiXj=&JupcJ6YpXjoUs=&kjR9zMYlq_p_c=&_7VehxVl_gonn=&7zywLyY_YVheh=&TbqFhUVqncZoo=&bUqFwGXfpohaX=&DouxQNUZiWVVX=&9eLC6HUaVUhqc=&T483MoZfkWflU=&dO8tIMWeUapZi=&CdM6i9UmqZlYb=&OLhcK8YWdqqXq=&XUhn5OUcrmjrh=&6ePdn8UfiaZnd=&hv6DVwUWbbnbm=&AodcrDXajdYdg=&xijJYCY_Vefko=&MZr6G7ZdUdhdp=&aKu7RnWkaYbUa=&wktuPHZ_Uolqk=&rLZshmXqUlekh=&CVX2aLYdcVpaa=&xrT5wlWYokprj=&EZieofXfUfhaZ=&sIVgP5VlrhkZa=&FRBPH_Zloq_YY=&8NRkstYZUgXkp=&VSFoN9Valsfsj=&ZHbEsbXUaXVaY=&BM8P2pXe_rqoY=&682GBLYhrgjj_=&XmLIvmUkjmecZ=&nRulHxVqpWapV=&A9gcLRYaejnl_=&iZPGBJXmkpUra=&wBbxGeVoeemjo=&bPbRgcU_YgZfX=&nCo4z4Vsmisoc=&sraBjaUhgqXqg=&MLYzUeWWkiUdW=&hNZHfRVUfhdWn=&RMv2wOXrgkhsr=&3y_NScXkdengl=&mzHb6nVfslfjf=&CHeQSgVlUacom=&WMaLlCXpaaUZo=&65d_eIUWUoqrU=&6L6dUGVoepigr=&siOambUjnVbqc=&64eXM_UfZppqe=&BaBaFQUamjbis=&Mq_ONbZdXZlhj=&Uh5ImWWsVVqsi=&LxGIzGYpnbkmb=&v4KvQJUppkqgh=&6uLvufU_UlfVe=&9cEw9kXYinVjb=&XbQJ8kVhriWik=&xnbVDeVdjig_j=&hnvHywYfnmani=&II4NtlYiVjrjh=&5TpofqYha_oij=&yuCYhFZYolqsh=&e9sILwZlU_VZo=&TQjfJXWqbisVe=&iOoVfcXlfrfUs=&rF6iy5VinaYU_=&xffDJxVVedeiW=&V3Z5BlZqbfdbU=&nN9KCBXcYkhff=&SDcjMbVoiWoon=&jWlsdaXYUUnge=&A6P8ugUjafqZl=&c58_zJUefWdaa=&8eqZnHUei_mil=&xCnQy2VqYgikl=&fBXryyX_cljmc=&Vax6grWmVjodm=&mQhltIWcdsZnf=&pjwdZJWeqXplb=&5LvMsWZinjWoo=&EysvzDUq_qqme=&eS3xcsUaZe_Yn=&S65aIiXUfljWY=&oTe6kvXmciUno=&6dQwzcUZejk_U=&ZuEbXvYlp_kpW=&2Vic5sXmYZgaf=&ZN4AkfUXfYWod=&Kye2BYWh_rolm=&tCXhYwWbehhmj=&Fo8AKvVoUkb_c=&zVDK_HVZignXr=&LOTvRcWiWclUW=&3uCL2DXl_qiXl=&UlsriXVWUVUdp=&dbQyhYXrWhjgY=&MVkg2pWpsoUb_=&7vPa5lWZdcemk=&qJfcOFVpljWck=&Sx38FIXYdbsYl=&RgssODVolldkd=&8b8hfGYsrlXar=&VtyjsGVbnXhoZ=&IvGWhIUgZkfeZ=&Cw5UTqVsifoaW=&LFWwepYVpjdse=&zbKXJIUmgnYnb=&96SkTPXVfanZp=&TDSQLVZYdUacd=&wuosmGZqq_lVe=&e3dOWHZYsfkZe=&FGCrxKXqpYgkc=&cuRo9tVrVXfso=&qP8KXnWVgXoWZ=&euwD8AVfelrlq=&hb6m7UVZgkfdo=&pQm2c8Y_gqXiV=&kQtMxVVogVrXe=&lAaIy7XpXibnj=&gdP2lGV_oikUa=&GPHd63UXnalrX=&7Zk4n9ZojWVro=&7lOB3rXWhYpef=&NwJAmfUWiqiUi=&MDF_cLWedpi_c=&thEBOFVnlnZac=&YCM8vMUeXijif=&RChvUeZdcdicn=&FS9cBRUWbfold=&IkeNjQUqVkVqX=&qJ3WiPVp_Zogk=&k8rdchVUa_dVm=&dZS59EUfbgjak=&6vNZSuZmiUjVs=&bphdpRUgnlnck=&KEakvZWdf_ekn=&tiTFreYhfq__n=&zhEaPIVseddcX=&Auyf9hYXnrfjq=&uozh4SWcmc_UY=&P8N5jEVcXUrnj=&UGyqp4VjfkfZU=&LJ9eaBVfrlqXV=&2by4ZWY_cqdUg=&GNRJefZhhmdjs=&uapJhLUcsXVbc=&PIsujeVUsohWZ=&LA2uRXZhXfana=&fEbeuQXfdZXnr=&OJuYhTXeWjkWq=&fTRO55YqVmVpn=&BMNWeqVderrmp=&mGiQYXWhjXlkY=&Pd6TELYfhrUbW=&a6kZ29XYiaYfk=&dQCzPfUijmXgZ=&mE7NbQZjbWU_g=&HDocYAXlWrqo_=&JjVazMZs_Xslc=&LTu2kIUmddfkZ=&LAW6s2ZYnjpVn=&S4n89VXVpVqla=&qeDuJwZlkfkdr=&_SLXkBYbdsXbs=&2M9JoUVrsdXlm=&ASYOGBXgjijij=&_v4qrCWcXicVo=&HKoJI6ZfdnXgj=&gDSKeRVXfcrmV=&t99gGWUrlbfmW=&tavkMjWdaXYgk=&QGa9LdYWsWkmd=&fHr9akVlWZZjV=&poWS3SZemgdVl=&LKKUHbWob_WVq=&ggImgPUsebbii=&DHE6V6Ygfkahi=&XhC9qNV_oqYra=&7jfGnQXk_ifem=&si3vkTVXglrqb=&PpRtaHZi_kmiZ=&dh5sybZernVka=&Bll9TSWmeadki=&juqhhMUhpZo_n=&IfmUvxZragldW=&52_uffWqdelgc=&iVOMVpXikqeeV=&RUvPfXUjdcWhn=&68GjKGZhekiqW=&8TyvoRWrskmjf=&8CpnuSUemUp_h=&pU6J9qZXrsfos=&J4cuJ4UlfXXfW=&bM_uipZZgpbgp=&_BxIPfUorl_jc=&O4CHCeVW_iXib=&z_UgAWXZaiXha=&gZ6q7fXaYekcd=&9hDm9HYUWkclZ=&7TXTHJYqcjZUo=&AzGq7oWqfqcsj=&VuSzYqZajXjVY=&NXaPttWefVoUW=&YRAoLgYdXigsd=&ymwizpVfrmeea=&Hhh5eQZpbZrWf=&h6waHGZWYZikq=&i4CStjUcUpdZj=&Si97IiYWbhojm=&TGzJrhXZgamfh=&eJP_YhWpbrd_a=&A7my2vYehpkoX=&S6283tXkhjedX=&9J8oEKXVoegdY=&HYGoATUjsnb_s=&jj2HaBUlloVeZ=&LtPCddWpgjc_m=&w5fBHJVkWofZW=&wFfoYaXdcqrce=&USXOnQYqlUacU=&GhamtMXcei_rb=&9nk8Q8Uhjdcbo=&e4eMV6VZsYsZb=&zA_TgIWhjlVZo=&mJQfClUUUXohq=&OorKvOXXUYqkj=&87e7v9Vfkkmrc=&j3TZsOZhUbVcm=&UScSdMVVknWkh=&P_tvHSUVmncla=&oRZ74PWkXYfin=&IsjnE7W__ajhb=&eNX5eYZUknafW=&5rOcxlVc_qmZk=&qE8IOwVWeXgXl=&82oPjXUoVlrUV=&GezAmjWhU_Xfe=&XsURjaYjZZrnV=&hEJDo5UlnhasZ=&gwcdpxXgmcXUU=&XlHuCTUscn_aW=&uCqBW7WVZVWYV=&BG__wpYgdkjkn=&wMhhJwXncZerW=&84pNOOXeeZaUj=&qsKKSMWrZmqYl=&RVBghaWppjgbj=&FKgsMwYXcsl_W=&7GFmY3WcWV_h_=&PArmk8Vjeinli=&UJ5zUlZdaUjpo=&ibk2NbZljnenm=&pXv4brWoZlVcg=&2Ympc3VaWYjqh=&DIz_mFUlgbkgk=&RrumHJVYbeZaa=&huAAvQVqhccbW=&gpdqCdZfVsmlY=&GthD8SXdiri_i=&c4PXjeUnmqknn=&o5nvH_Yposfrf=&YqUQHtUYoUcfg=&a3tVtzXdbYsfj=&WCchBSZXWUjlZ=&AUgTOSZspZefc=&n4IHirWlUg_Ue=&WfJwqQXroqWje=&acNFAdZaYjaq_=&2qC4uzUVrZUrU=&cj6EePVVoZbgk=&tTBWhFZnqbWsn=&qpOVVHZhrjbi_=&eqTud9XplsoUa=&7jXAu8XeXYVhY=&_48lpvVqqXUZp=&cjzQIbUhhkjgd=&VWpFT3YUY_ckZ=&p4JBegXVYWUYX=&ffUblmYqpfWlk=&r9M2eHXcbYopl=&klUEQUVXcefr_=&_JjEbOXqUpcki=&6tONb6Yoepnig=&LXRXHQZhcdfqo=&BkpXByXahpmbh=&lzPRiLUhnflZf=&icsISMZkrYVdj=&ynPoQIXsmckjV=&Brv4AnVqronji=&Dwb4SIWrWhkYo=&IDY7E8YZUXsri=&KXfMJ8Yfmn_nY=&WL_WYOXWXcojb=&IIFrGyYcpgenb=&LDJmcpZhZjscp=&zloWbJWmW__mh=&GaNy_tYZhdi_g=&Km9CQuZqaXg_p=&XV8VmYVqjUkb_=&UHwjGbVZdrlqr=&BPZDloZc_ecbc=&uPYg2jWUcpljd=&2Kws7QVhojVff=&eUWpKUXnfiimj=&RUATkDVmlaVba=&fQ5VoqVjoZq_U=&uH8t9LWkhrXfh=&TAH52XWdeXVrV=&yIFojBUfZijcd=&avn2MEXXoYrVY=&7FxAKHYseq_rh=&T82fIzXbXaacX=&5gQgCDWmsioss=&vqoVKRUopW_ej=&6BAj6jVdqrW_Z=&EsxUdqWWrjVWk=&ukXhHFUcnXshk=&Eu3uIiYXocVcl=&2YYzqFWjneXhq=&UblD9fWqrneYV=&6X3AQmZYefqj_=&GXolO8YiUbdhr=&tKEHHkWkkpbkY=&j7PYc5ZdhhZdV=&jCYeMmUeab_Uf=&jwoy4eVpkodnj=&Hb8xsiWfodmVW=&48vVOnXWW_oqf=&DU4dA6XcZYlUc=&LgtrSUUhqrnrm=&pNlUbIYXkbXfl=&i25AF8VreYVWr=&JjJCE_VYX_ibp=&pnctqQWr_Zfng=&WTStt6ZoVWkdi=&smGqCRVXZUsZq=&Xcw4vAVhaZrpV=&SaQZ7tX_Xkdgk=&5_gi4aZUbsnXi=&KzkKNVWXWUhiq=&7aDRUTWmqkefb=&NaaceSZnYVlbd=&aXot2eXWjqrmj=&xoFUWDYaXViYc=&PUWlq_UdscYdl=&Q4Xel_UmWoqkg=&oy5RTkXZYWklY=&B4KnRXYpYjVrY=&6IBMuAVidchUc=&RLfGQcYpV_hXW=&NBrJAUZdrregf=&HAqSBZUjlrZlZ=&gjcIgRWfqYbWZ=&HDZG_dUYacoqp=&aDcIhHXgefkZb=&4WH_RuVaebkrf=&jg3PBgYkVUsZq=&cZPcwiVoYdfeY=&8rXumQWVdZirs=&Iou2jIXdqjkaW=&JRNXk5XUhXfVs=&eHidwKXfgq__d=&W4WBHKWdccXjd=&kUUnBSVbalpYn=&dzYWXrYorYsqc=&2wtI2hVranosW=&bGArFoZsoYgZo=&QlaqJjYrVmjkV=&umXruJXqfss_s=&5jmPYtYdrrgbs=&ufTQiOXime_ph=&smjJLWYWncpqs=&qehU_iVdXoWUh=&nsPvY5XdqYbbU=&MPM4J8Xcnlmsa=&4vfEdtXaZnjca=&llO9EQXqmihYV=&fpos4jUXm_fkX=&TP9Di3XWakjoY=&vZx5FqWYaec_h=&jEVf2VXqfdWV_=&sHMzpBX_lnYec=&8825YaWWfaeid=&HbkjdyWVirmWZ=&px2q78VrrrskV=&5d3Bv6Wl_ahls=&5_ALZtUbopeXj=&Kt2gNkWepa_sh=&hcxilnXpghcig=&kZsNlUUccpaah=&cCc6bvYXdojgh=&_U4xnVWVrised=&zZ48OKWreXpsk=&eRrjPcVfobUdd=&ypf_CxV_YWfii=&7O5d7JUdZWres=&gJGMFcUoeqVVf=&vFypsgZgeo_Vc=&3ebuAWXalf_Wp=&mfQyC9XdaesgU=&Howhp6ZnVWVVm=&bofpeyWUUZhss=&TQSuU5Waimjda=&K_uekSZVVUibZ=&p7xOTWXcbimss=&zCsyLIUpafmqj=&cp8TWkXcXgnhk=&JLD3GTZmmnpea=&uubIIvWcWYXfj=&bM6bCiY_ceiZp=&nk5PKAUnfYcqb=&eRgEBtVZWrceX=&swA_ENZXkioVh=&chxxCHZhhVjmc=&4awyMyZabbo_l=&5rfjYGVVVXjmn=&9QDA3lVmnkZhj=&W6ny4MVmXnlge=&KOcxpKZodV_Wm=&hA3NeLWlpafbW=&XmbmjSWbdeYrh=&oVLAyCVjrhfsW=&Nn8tBeVrYdfmg=&x6IXoiUcnebfj=&TQZZFKYgkoncc=&9vef6GZUbeahn=&ndBl9vYqrhqk_=&aQVpbCZn_bdog=&QNSNJdY_jYkVl=&9ltNgkWfVjmab=&Ul6djIWknhlpp=&8Wn2XaZVfnkZY=&iGVyPVZjboakh=&fBLNndYbYhVgW=&bnT5NpZkpplYg=&5kW54GUkopWab=&IYCNDKYfqdUjq=&xFKUqjXiUcacl=&35aF7KZssnZsb=&KvM3OeVYljgid=&xIpdPaWpZVrWj=&xg7_D8Usbqmlq=&36v69dYiYqjek=&NcskWqYjpsZgb=&j8MnhpYkboqcb=&G4Lo4OYWWWjrk=&8KETFNYfZd_jf=&3RSuDAZldiXcZ=&2WqMPEUfqnrnZ=&i57iD3UnXihen=&OSxq44YalnndW=&ef6H5NZqkkroZ=&O_9478ZVZlboa=&2wZ_3fXjffdin=&p7d2KKZ_eoYns=&Qhy5FDUnqalW_=&4X5MaeVanibom=&XtbYU3WemsneV=&2XPeElYcrqjmh=&NI5AF5Ualdlbj=&UvtlvjVXdqccV=&qxFY4xWcmkfVr=&nXGrNRZlobeYl=&FuOx6hZkaoXlW=&7IG7ONVXeiepl=&ULMPi9VcsopXU=&rm6TpGUgYbhli=&tk3PDSWaVdlnW=&fsHSLJVYndsrh=&LHozjWUsrVnVX=&ur3uOrUcZVVXh=&Pc2QcfZsklrUl=&hUsZGwZqfmmYh=&ieNoCrXWgiloj=&7uvKQhXlmXlri=&gAl4qvZidVlpf=&fXOwNBXcXgmsh=&YTTsEjYVcnVkV=&NjlPn9YoYjbZd=&PvCI85ZnZeViU=&3PRfdhXmseVWW=&iStmvaViqXdsq=&KePM_aWigZpW_=&mPZFnlVVeVZsq=&cVGADhUgeU_iW=&HacVzDYhf_oir=&tkcZ6lYniVfic=&jtsVsqZmerdYZ=&pEHWcrYe_VXnf=&bdEQyLZm_prfs=&VCC3xqXdeggne=&3t6fBVYloZbVq=&NR5UL6YX_jYoh=&XPjKqTXarngeY=&mcBp5zYYjkWer=&LkDgCJZggdUkc=&sVd8FwX_qqdaf=&f3hbzuUjsnacn=&yFe9j5YkpZoeX=&RQvU3zVYUeaqb=&DfiR4LZgcgXVl=&BoPk7GXdknlsh=&pOMu5pWiqdcXV=&yavNiHUefWaib=&mhM8NIZflgVfr=&AD9xHNVYZ_VdX=&OEtRVLXqeZo_b=&UygGPsVlihjWc=&3vLSJzUWooilY=&kBmY9vYhisggs=&GYWVluVhVbekX=&k38KelUnZnkca=&TxoM4tXinbXgp=&RYatOYXoqWlcr=&a_b6JhUZYsgUW=&dyExhoUh_ribh=&Ic_HrtXqVqUlj=&DgK9qmXbhgoop=&TawB3yYWhYoZr=&h89ccwUXg_Xfq=&Zaqx97WeXnYdU=&rIeuW_UfhWeqU=&htgTAXZWioc_i=&crxBfAYi_nZUh=&GVEFfiWbmYlsk=&rZNMcZVXocbWc=&CWmePSUXipqVX=&XTrf5bVYiolUi=&rjly_GViallYr=&gCNQR4XUXbeUr=&vyjOa_WccXadd=&nQ3BE2ZUbhnco=&drSEIOXpaYlnr=&DfTgBUWlgsqm_=&RIBtWDZmlbdbW=&VN_XZ8Vcloi_o=&DwYotGVZUqccV=&rgVZWQVooWeZc=&HlnusxWqXZdoq=&tSoLOWUjYnhXX=&KBwV4DUUccanm=&CPA3s2XZkYefi=&vYe7ulWVbaUWf=&HXQ6jvVUdrpjb=&nWA2apWqqddbn=&W3HNnDXYlrXgh=&Gr46N8Wq_nenc=&I4lXfJVodrbsm=&NPzgMhXerm_fs=&udte2iWVqcqWh=&OA6SqOUpZkprU=&MGEdewXWeWkjU=&tz_P5wWfjarX_=&xg7PDXWfllgki=&ZE5SEBZfqcram=&OHQhJSUqpdhZU=&XsOWlvYosa_s_=&PZwgQvVecUieV=&3S95VxWrghbUg=&_8tn45Wpr_ogl=&WKA2cwVqdprqY=&kZxvSoYgYomga=&eASJQUWbhrjjf=&Ioti8lWnVsrWb=&vFWKgRXbengbW=&gm5Fs8XZsZlUh=&2oMszoXbWk_Vg=&AiIsj9WUhaXke=&WTFx5UYYpsfbh=&P4VzVwVVqZhdh=&_nLHjJXaqdqZj=&rLnCFvYqkYWnV=&_tFKOGYpYnnXb=&72irKfWVhWaqW=&cPyJunXsYbama=&3kNA8DXaUib_k=&k_jEmpZsWnmjY=&YGL3_bZdrmqbh=&yaGaoNVrpclom=&mWxEtXZfrViok=&txQicWVWYddm_=&l6kKcWZhegoqj=&RyIoQ2VYZprjY=&IajgdTYlZ_qdj=&iiPM5JUiidVpU=&AteAWBYZqssjn=&3hVv6iXbUqVoa=&K48fqyYi_UiVl=&uVXC79UljiWgn=&NZz8SwXdVjUqd=&rj68jyUfaeaja=&GOyVKoVrsdhpX=&q5hKKWUosnaab=&DS5RrwWsYoVsZ=&abe4esUVU_kUm=&NvgZ6_YqsZkcU=&DHnQPRWZq_dfV=&tjUL4HVbahs_Z=&SCgpNeWkpkXlm=&m7ncCCUsgblag=&nTQUNaUaaepsj=&uYyK9jUroelnV=&CTcltvZmnknrj=&uCnWlMUZfWpkc=&ibMhnrUaipiea=&Yam2TUXjm_gsX=&6mP4jcWiaZeaU=&FK5ABMZXcq_lo=&IiJJqNYdiVirX=&hUdm9AYVild_s=&ULWmtDYlcVrVa=&_QXBBjWboVZrh=&UXD6jcVm_nsoj=&BkM7zHYoXWsXU=&JMqD9qUfYqmos=&_Jsgy5Vkgabdf=&KxgWTDZmmWdll=&cFmGyDX_bqfgY=&id9m_FWWXXskh=&JVsVJBXedsicW=&CmlcStXdmcohW=&vujgndUncqrrs=&x67kWgUk_YbWa=&hUYqOiWYoXXgs=&_ViFPnYbqdrnd=&_qQa8IVVaVpVh=&4DtamGVpdeool=&t37fvtWcYgcfc=&wOocXzZ_fsgeX=&nyByJTYeXVqnm=&nnwGfuWhffXm_=&dtcOGOZWpebZh=&UBdCG7ZdmmkUj=&ux9jpwXlrjVbm=&ISjaWrW_cep_o=&BMS_QhYoffVbj=&lrpJjMVsdbhfV=&SLg8RJVmpc_rY=&25MEpdWqYcbal=&G3jAAIVWanZha=&5OHnxaVpoomcs=&BZ7nQfVqakZnW=&CjrLtqVnkYesl=&xYjmmhVnmiXUj=&xYxsCqZkfcdsa=&kqWHKTYeZZdUW=&JeXINnZpfnZak=&e8_LlFVhacpkc=&AIqX2OVooWhed=&kJwWpUViq__VV=&Rrx8P9VgjjYZU=&j7NykUUjsY_Wo=&Ghc9sFWpXbUhZ=&_RM3bXYhiZdZ_=&ylSbBEYYcZfgW=&yyqPJFZgZkees=&xlvS6BYapiqho=&OvL3G5Znhfeeh=&iyyRZUUjsjohc=&XX523JUfWiUjf=&rclHVJVcrdWrU=&XhNiAdYggbder=&clWbslXs_nsec=&EX235tVrngkbY=&8D9tLGYiWbapf=&Pfk5bbYbflgac=&QBGRpLUkiiUcV=&68mQqYWqpYrqj=&coXJpAVYlf_sZ=&y9kOXDZqmWoVr=&eeB8g5XeasnfU=&_xbdZOUh_c_np=&QXbHdGVdYpqge=&vvvDTcYrdeoVX=&3_HJBcWojsifg=&RNwH2EZrqgkro=&2nHedgYmqgilc=&x8vWgOYognqsb=&2s_vquYssUkkr=&OmnsyLVhdUqkm=&xNAEdWYVaokX_=&DHdhjkUflZrcs=&xlBmJjWfkmr_W=&JWhpTwYmaqpek=&9ns2BAVYqYVeg=&lemAGzUjjYrco=&ezKIPNXrjnXar=&VGKeugUZUYXks=&geIXqLZdYldfa=&rv_gPtZfVpWkd=&ZbHfPNYYrZone=&JqtOn8VWi_lVg=&VdAstIVmigid_=&ylVqUAWUdhoel=&nPtF3jZeoqWXs=&ld6ylYX_WchmZ=&pldfeFYZWUVkm=&JdXb89XWoeofk=&kRW5iRWWsbmgq=&ZGpydKYacdqra=&Ud53LeZgoUbrc=&LOac23UhYgfZU=&GsLjF9ZqVpnsm=&brbVCoZocZ_aX=&oUAIzyXZ_nfUg=&oyagbBWipfXlf=&6ZU8VNWbUVsm_=&zTXFhfZXiZqhf=&HoJlnZUdqUgni=&G53M_gZfnfsje=&d4kX6KUsflemX=&gnUrsmWelUsrn=&laPoX2WqsllWf=&fHBS6pVibldaa=&rFtMt_YYgq_pm=&q9Ai_HWsnVXed=&hY3PdhZhUobgY=&LmNRzOWXehWqr=&6ETS7fZhfdkVn=&IFnbqNUjamigg=&wmuYtFZdncpcX=&lS39qwYfneXVo=&SMPKHOVjllspg=&8JruUZXhkjsZj=&y7tJFfWZfbego=&4JSnZdZsZaehX=&ffMFwNWpplejd=&lUuOvbZchrpnZ=&MECuyoVcXenkq=&7cA25CVXledgc=&wzMAwsYbepbYX=&BpDqwpVZklkdl=&99OYo_VeneYVW=&POe2juWshrUjl=&KMsE_xZpcjsXi=&4zN8EPWcWmf_p=&I9fG6AVqfnUim=&z2HcLXWrcjird=&BhnVYyWhmagdj=&Zcq6zbVirhpdm=&Kc6JQEZYoaZYj=&vDNuDrZopnoVW=&Fmc_itVYsijlc=&GGMR7SYoVdWdl=&QvUTKqYgqWdWk=&B54ReiZijUgik=&ZOWVK2VXmelWZ=&wR99qkUdsaihk=&cChn6sZnlhhbg=&mpo_GqXgfdrm_=&VawV8EUdVsbkf=&jhEdtDXVsomoc=&rnqsHVV_Xhmrd=&2Zg3NeYUair_V=&rmKIFYWVkhZoW=&5Q5PMyZjaibYl=&TkCIZzUfYiojs=&DAzqQIVWX_rso=&QjWeTpUgZWnfd=&MLkbjnZWcrjWm=&RPrDawVpYolei=&RBc5OQX_igXYd=&nNpeJPUosqkeg=&tSeY9TWcihigq=&mWjQNoWdsqem_=&4dkPfqY_ci_ip=&8wquhtWVqlgso=&7YKHhPYadkhjr=&gA9xpwUfeWjqd=&QXgLIlUsrhfqh=&CG5RtEZUgshmX=&wy_GCjWeZmWod=&2fqVMxZbdmUe_=&QfXlS5WbUqlpp=&iOQEJnZnYmdqm=&XpTsh8YfkXgrf=&VTNJMCWXggmfd=&viXpkWWVgpiXh=&hDpnsxWbmqgWX=&AXw2NbXlsklcc=&jRVTAgUVegn_Z=&lT4dRaZkadaeY=&qnttHmUoWUejY=&AMejFzZUcoahm=&9FiFhcVmZgopd=&vnvkeaUWVpmWi=&Iq6atnXYqUhnr=&Gdr7LFW_qfahZ=&4859CDZ_kXgkY=&WmoV5wYabnkfh=&FXeIURUaZZqbj=&jrliu7WmZdncV=&9keyYJXhZgpfd=&QqqkPiVWVpjki=&7b_OKrVgUqiaa=&Se44Y2XmloUjr=&utAskHXUrZadp=&OUwnBvVrqepoZ=&QanppmWdlffeo=&3FGpKSYfcXkbW=&xcjEP2Yhaaqii=&d5goKSUjffYbY=&swFtpWWjZrjqe=&2p42aDUnjYWak=&WU48PJZmbUscl=&EVw3YOWajfhpk=&76WEJ7Vlk_rfr=&nGnyUaZmrhnqV=&FSLCnZXkmYYeU=&wVhDDpZlY_XXY=&eRw9_nUXipUVc=&DnsIExYmZjpgh=&ojdPfwVocoXYX=&eM6U56VdbnrpZ=&GDqvnQXidmmnZ=&hUtkKjVnlc_Vc=&FS8rIpZXdprkk=&rXIStlVfmVXUX=&DRnhGUZms_Vmf=&6GtErrXqi_WZn=&JnsiwRVfbpeqY=&xKVUXfVdYlX_b=&QZJYCLU_ZcZpd=&wc7pG7XaYregs=&s_2rClVkj_YUU=&kXJw6xYglgcso=&8nqSfFYimieYr=&PL5tNiXejU_oX=&97NwosVVhjfgh=&6w3hD9WhplaXi=&zMAIyrU_Vrgan=&MXEmUEUbskZnV=&Z8aQBHZhffbXr=&22ehIwZolYhmr=&t5IZVAXZhsVdr=&bDo7AIUqggbrX=&SozIbjXobagVr=&3xdpxjZjjg_oZ=&lpUQKCWbqUpbs=&WvJuCDUmegbkh=&mzqhVsUqphekU=&7OmdTZVZ_laWV=&CgttmLUscrUcX=&Au4wjtWcqcgm_=&Tlu8RXXZ_nppl=&RwnHMUZ_leYkq=&ywEL6wVfaoqiV=&VMmrlpVYUimfj=&pe5gGYUfhqZl_=&qxj6LxU_o_hoZ=&nTSPgaVUkacV_=&7KPBUiYpZroma=&BSHEEtUencrbl=&MXvKdnXcXdkXh=&E4DMJ_WlUp__W=&zGqNYQW_baefd=&K2MrOOUblnVWV=&YJCZVKWsWjjUq=&qMHDyTVfoXseX=\r\n"
  },
  {
    "path": "src/test/resources/issue72.json",
    "content": "[\"CgYIARABGH4Sxj0IBBIEdGVzdBoIdGVzdF9hbGwiAUkyEQgAEgJJRBoBMSABKAAwBDgBMjUIARIHQUREUkVTUxogT2hLdlRId2ZsSGdVeGlPWE52Tm9xVXRQT1B0clRyR0YgASgAMAw4ATIrCAISCkVWRU5UX0RBVEEaEzIwMTMtMDgtMjkgMTE6NDY6MzYgASgAMF04AToaCAMSC0NIQVJfVkFMVUVTGgFwIAAoADABOAE6LggEEg1OVU1CRVJfVkFMVUVTGhM4OTQ4NDA3MTAwLjIwNjMxMDg0IAAoADADOAE6JAgFEgxGSU9BVF9WQUxVRVMaCjAuNzczNzIyNDcgACgAMAc4ATolCAYSDURPVUJMRV9WQUxVRVMaCjAuMTM2NzYwMjMgACgAMAg4ATomCAcSDlRJTllJTlRfVkFMVUVTGgEwIAAoADD6//////////8BOAE6KwgIEhFUSU5ZSU5UX1VOX1ZBTFVFUxoDMTE3IAAoADD6//////////8BOAE6IggJEg9TTUFMTElOVF9WQUxVRVMaBTMxOTcyIAAoADAFOAE6JAgKEhJTTUFMTElOVF9VTl9WQUxVRVMaBDEyMzIgACgAMAU4ATolCAsSEE1FRElVTUlOVF9WQUxVRVMaBzYyMDkxNjcgACgAMAQ4ATooCAwSE01FRElVTUlOVF9VTl9WQUxVRVMaBzIzOTEwNDcgACgAMAQ4ATofCA0SCklOVF9WQUxVRVMaBzM3NDU4NDEgACgAMAQ4AToiCA4SDUlOVF9VTl9WQUxVRVMaBzYzNTczMjUgACgAMAQ4ATotCA8SDUJJR0lOVF9WQUxVRVMaCTYyNjI4NDM4MCAAKAAw+///////////ATgBOjEIEBIQQklHSU5UX1VOX1ZBTFVFUxoKMTMzOTIwNzIyMyAAKAAw+///////////ATgBOjAIERIPREFURVRJTUVfVkFMVUVTGhMyMDEzLTA4LTI5IDExOjQ2OjM2IAAoADBdOAE6MQgSEhBUSU1FU1RBTVBfVkFMVUVTGhMyMDEzLTA4LTI5IDExOjQ2OjM2IAAoADBdOAE6IwgTEgtEQVRFX1ZBTFVFUxoKMjAxMy0wOC0yOSAAKAAwWzgBOiEIFBILVElNRV9WQUxVRVMaCDExOjQ2OjM2IAAoADBcOAE6HggVEgxZRUFSNF9WQUxVRVMaBDIxMDIgACgAMAQ4AToeCBYSDFlFQVIyX1ZBTFVFUxoEMjAzMSAAKAAwBDgBOpoICBcSCkJMT0JfVkFMVUUagAhQLjsmdTp1KC1DV3hieFdDQkloPlpIYiVxSkNWNW50W1RKOVV5ckVkRmxhKCMuSWR+YmkpViBNN1lVdTJAJ3ZMWDgwcnczLUEkRTFoMjFvbHNnS1tuIydzaUIteEJVVW9GYmVYJiMsYn0gOz4pKUd7KHUmZDdgMmAzOHR2JFdGXT4ld3EhIlg3XU50YWIyeWtJdkl3TlVsKiIvMlE8QWRKITQ9Q2ZRN0VHMFpzXUReRiBMTVlhOkUifXwkK1ZHM0FqRClOMjtUfihkXmIyayB2Tk5cdWVrJnZ3UEA4YTZDJTF8eks+P246O3lcdUE/ciF5NVpyQ0QgJGh7eVBsNElBdj1lJElEfEIoRUNEa1RVZklEZjFqPFkiPn4lVSsqRmpEeHQlN2JdPVhdWiIsRnEpLyoifkI0Q2cjKGFGPFVRfllkcTYmUU5BPUNQRi0mIyZHZl1aVkJBLjpqMzwhLGp+NjAnKHNPJiYjNE4tNXZ0WXVXbi0kLiJSUXhBLCZXbDxCIHI4VER8WzA4REFjU2dlKFlnICx5MylEdyVWQFFsbE5jPlhXMENjZVUxVk1zXVd0ZFNPNXcqTzoueTR6OjFsfjdXcENffHVaKy1gXEIlJStKJHltQEVxfTVIL2o8a0l4LkEuJV43TGx1PU8mLy53XHgzNzVlXHFyOksmKlwhQ0Y7fntKMiRuWDlaN0tPY00qPmd4LlFRKiI8Nmokc18rIjhHenh0ZilpXCdnICQqMEldcEVlb1J3Ilc2YG1OTUgwTng2QHJTaS5NclBTSEZBaHZyalQ7Tm9eeTIpZDJJJjhxalZiLjIhUzpMSlNgPCE3XiA2NDc+JDQyUX05KHAuZS5IJTNEOkBRNUpbO3gie0YlSkVeKiFCZk1qQWhfLWgzcnZWXixaIj5lVVAxLVVTMS5rWjlwWyJ2Y0h9JkxIVzp9XWlTWStZZ0xGOiViPydWTFdBU2k2PnNxUXp+eWlKSXtEcUZmKDMtWUFlVElTfHdNaH5gTEpXWFV0UFhSN3JeeGQlYXR3KDQ6LS9vTWk0fWU3PVhsUkg9R0RfO0dmJS9yWWE1YXV+MjxVb3UzO2BRelcnKlUqOE1HMX5zfVAqZyZMZHtyZ05jOHpBXz1tclY6XToxVFZsX0dQUThGSXhOWkBRPW4yTndab3RGIE9LSnhDU2NrJTgqZUFXPml7L2YmW1tnPTw+T1I0NHorJzUzNFg9KSZ8MzRERWUmLCVVWkBrXUAqXT9vPCgqQFJSbH0ldydEPDswWmw2VT5RV2sgTm5lKEdJeH5oV0E0RzxweWNUPVhlTCEuL2N5XEtdWF8hUk8+Ul0xKTtAXWRcKHZcJEtXdFhjIlx8RXJKX08uIAAoADDUDzgBOp4CCBgSD1RJTllfQkxPQl9WQUxVRRr/AW4qL0k2IDNzdzZGaiE3IScqeVone0VmfHsqRi09fUJbY3F7MzF2J3A2ayVRfjQ3IVZCVEp8STpfTWdheiNxI1ZXJnUzLjUjKzQ1a00nX2tNOl8oVGRML0tWLSEnWyJ8ZzVgbjc5MmIuIk5VImJhflBmfkhcYnJ3XmAkI29lSj9BISJRXSh8Vj82M2UxdyU/amJNVF05MzVsTid4T3Bzc1hnajFnJDUxO30pRFJaPm9wOzQoL1JCeGA6fV8kdEQ2byJCOl9IJ2AldkhIXzVraixDSHtzLmQ8WHk1ciVTal5pflNTSmJOLEZzTE09fWs7YF1FeipXXUorL0o3N0VrJCAAKAAw1A84ATqgCAgZEhBNRURJQV9CTE9CX1ZBTFVFGoAIMTw8XjUrKHJ9JG9WX1pKcE84O3ZpalNJWUFhaDQySkdcdVAsUnF1VmFJV3p6KyUnWWwkLit7QidAeFZsVWs1V1AvIGVqVUNAeWR+Wz91JDRUa2QvUl1kWWpxdF4uKSptZzdXYH1lckU8aD99SGtBZmN2T181O0d7fngyMjRBdGJAbWQyXVN2Rjx9JD9yTSVGe21BJjc9JTokfl97cHItflh6UX0lRyFoXC5lcFlkTV1ETFJPIEJzLWo7fHwqYzkkNmxALWY0KXpJe3skV1VCaCozWk5iWDlrRSR7JnYuIS5sNzlURV8rI15UYjZIZkhmKSk2RjwzMitEQU0vcC18TSMrI2xPNEl8L2B9czZLWlpsIV1cPXM6UC58KkJtKmlQVkJkS3s5UC5gSWM9RCBqXUY2N1clZFI4IVo6eEhtUWJZenxtbWIvZzA4dz1GXT8pUmVGeSh4d25jJWx+NW1XXm9hOD9VdjZIRThJdn0lfVEuWzg/ZWtXLFFzQUN4alxiPmo7MGsjcGV4Q0M8IzZjdSRoYStoYHQ3Z3hwXyRCO2N5MFFIXmV7XytPR1psd15HVkAoPFdGKyZ0SCp9cyd1WkNjJ3IqLlVAZT4wNipaPmBwRmlkMUJxZjhiUmhzX2siYDFZekVTRlQ5XXhUUHNYbTdmdk5iLzxzcmhGeTlDZU9qJTtQNm57RTdqQldvQDczQUpeYml1JFBFVSFgciJ8fTovM1wpfCEkK3AnfEwgOVZKfnMqWyxqanpOeCpNUU1yLSRvREVOcjp1NiBMbT9IO3dxOjxmTWFdJUQ0XlRTUjZqNE1gVjppSmZHR1MnRl9fZlpnfCtgTHZOPmdec11pazArLlszIyF6e0lnZGYtNFBQd09EaUw6WipxVTspNFBwfC1MXC1sQjg+aUVLMT0ob29SJ30ydCxWKkY9aiouRSQiInFeOC0pWEpHL2xuaDVVLkRRUXxSQjpPWFAnelRSM21QXCNXQ1BoWFlMNmBiSGlcdzJ8J3NXL00tPWgyUm1pL1JedClTcCpfKFNaRUpVTComUiNxc0h1IFpdSjhPcFIkO2RmVkJYOlhFKjlAfmg6W3IiWDtdey8wXj0tSVxsdEErW3M+c2I8YCYwdFlxck99Sl1TaSoqWnAmdlopUC4+MjhofiJBWkBWc0EmMjttIjtsXGpoIz9BcUYtOiYnQkp5N1Q5NU1LbT9qOD9ARDVyNndxRmNzUyp1RiI6VGkmR1o+UjY0eyxGUStAU2Q9MCo5V0MrPSY/RGAjeyNEJmZXPUhvUjtfQnkqTnRPdCttImpmYXRvLjVEbzQ1fEF9SnJ6P3ZsU3ByVi9bSE5kNT43I0Umal01TVMjOypyKDMuNiAAKAAw1A84ATqfCAgaEg9MT05HX0JMT0JfVkFMVUUagAhWenhbdDZZPXB0c3E/emNOY1d6elU7VXA6JUg9Y31cVkFTZjk0Z2RBdWJUUzJ0UEhMI15YP3UrMj4tamZ7PmB4W3FPZmhyPCtTbXkpOT82KiJ9bG5DeiFyVlVcVX0kMHktUkNuSy0uNjogfiFnUzwgSW1+fWJoLyhXT3Qseks6IiViblJ8TnEnS3NfcWZyPE07JlN+OUgsLEEsIDZdMEIqezRBI1hubUh0WlNATjBiQC5tWlJ6KzhpeFN0MEUiXShBO1VPNVZXaGlULCheIW5DNXQtdmJOLm5PLHVzT2AsOGkzQ1ogJXlzd3U3ekYrYXxFN2FnI0FHIH5aT1lnc3lSdWtRZVNJeEs2OXVjImIsdm1HLyJSRlUjSClOel15N2lfYG8wODY3WzwnJ2U8WCpEW3xeOWx8Py04O2soSDN0b2s+NjhJdipSVSdOc31wcCo+J3A1OShvUm8lWGB0IDxcKiFHVlx1RSFCWl0zTmpBYzwhZjdYTERXcXhKRDpsbHs8QSN0Ty5hO1d4PjRRUHZ3eXd+S3ZhPntsd0NnVEksUGd6bVArd0xTPUhHXG0jU0l+UjxaUVgkKkFffE99e1g/OVglfml+cGIgZF1sI2AiSDxsX2ZZZUUqe0NtYjU2LmY3TyRFMix3NlRwLGpUSkdXMHVfOUFuNWYvQ08sOTxCT3YhenstM0JxKilya1cpLiNce0wuIFMlbDlUKnU8TTZiTF1PR087ZztdMFpVK1omY2wxIFpANkBmYi5GWU4ucl5nOzhIIUo3Mi9yI3kpTFFMZ11oTj50RFBWWklZMVVoSWRxZm4mZWN3eSxCPlBpVHBhWXBEazMpdDhmXmNMa1JxLS5tMzhmR0c+U3Bcc2VGSWY8WVlLZFtnb3lrSi1Ab1lcLDBqPy8uMjksLHFBbW58XFZDXzEpNHdtXnooaUlVI0xLQSZQMXA0ayY9JUF9biBLXDNbO01AL0IkT3A6Imo6czA7ay5tXGwhJHc5dyojOilnPyQ5NkJKPXhQUWVrTGcxJlgzPntUYS50UFw+fm1sYEFUbkA7c1JDTEc1YVctb0hzYy8xUkMqL3krT2Z8eUB0V25NZitjbHtuZ3hIa0hWXD1FQTs4RFt+Q2FgeWhZeCtcQT5jXnlBZCRxaXw9PntpcS4wM1g1T35OeWUjIldhU1Z2VnYrOkwqLFc0LlVTSklCKnVWKFFGZiBJSlFOQVspTXpQJj5dNC08QCkmZj4mcl1tYEc1YyBkK34+dTBEXTxXZS1pb29FdjtdU3JRYVt8RkxPRFRdYG5aRDAmYGVnflgsIjtKWXQ9NjVcelZxdV9fdSR1I1AhUXhCZCxCOEN+ZGIlJFN7I2QzdXY7fTNGIAAoADDUDzgBOpoICBsSClRFWFRfVkFMVUUagAhmeFdrY3pUckZJQXlNUFNiQ3VYR25naHNqR2liVXl3U1BCb2tCS1h2aFdmbkVHaHliU3VKbmRrWERuSmhHQ3VFS0xCV0tUR1BZS25Uc2RBVG9LTnZtVmZDZmdPS1dxQmRnSEVVc0lrQ1pEWGRldXZvcE14RVdGRnVpaEVzVUF0SUpXb0d5bHdCVG9LZ3ZpV1NvcGdBTmRhY2ZQcEhTY1NreXFzZmhhdmdhVkVZZ1ZrcXl0QkJKUEtGUFVWekdWWlpFRXVHTVh4VGVDRkZraG9wSnVuWFNwTmZPbldjZXdQQmVaRXREelREd0htYXZ5WWVBb1FOZFJPWWhPbER2dlZWYmdyelJlV3RJQnVHTEJicW5MTGRmTkJnV1htd0hXZUVFYWp5QnprT0VLVHJBZVZxbWJQQVVUQXRsQ29jb2tuQnFnRGNxbGVZSW9sUWFobmhLUlJqYmhYTEhyVWtaYU5jUGhxZ3lITVhFWWpzb29CeVpXTHRYalBnU2xLSldTZmJYaFBNSUZ2Y2dRZWVKeGZsT0JxcHVKRnVnUlBXU3ZKYWV6SEhld2hlVldqYldETWFoUk53UVVDU3hNdW1ybXJndWluaWtVb09reVJmWkJPaHNFWXhUbWFBY3lVbmVERGRsbmROTHdxUnlZYUtTc2dobE1MUGNUenhGSE5wUlVLSER6eVVIZUN6Zm11TlNtYmtrVU1DR21WY0VIaVhHVVR0eXdNYU9Yc1hxaEJadlFoSUdua09kUHhSTFlZVFVDS1VWRmV1WndTV2h1dnpWVk9ESmhydkpZQ0RGWnluVUJCVlFRUmJPUUVxQnVyekN6cklWREFnZ3NFWUJsVGV1TUlLQlRGaGFQZ0ZlSmNib2NscFRNRFR1ZklsYmpjTlB4Z0hzSWVLZXhwdG91Y3dNQXBVUHlJTHFSVkpZa2dDeG5QT2RqS2JxZWxLZk5meElTT2hqSXRDc0dTTUpkaFpuYUxOV1NGa1BNdklPVVBNUEl2UmVhTWxyV3h5SW1DdXZyQlFBdlFTRHBjTURqU3RjY05Gd093WEZZZERXWlhudHpNemVoRmdjbXpvYUhOZU1wcWNVRmR2WVhDekJ3QldlS2xvS2R4T2RXamFNQnh0ZWN5bWtFS3dpQWxQTlpKZXl1SlZDbXJQTXlCUVJVb0VvS3dZaEV4SUJ3UXFDaURsV1JRdnBHUmJrbUV1eXdSZ3h3c2xMYmZFU0NmT3BDVHNMUWVuUGR5cUxpUlpyemx0Z0RzUHJwS0VIaW9FTUZqSVdSdUxFVXVlSXRHbXJTRUVUTm9Teml1eFp1SU1MTlFaWVhubU1HQktXeG1ueXZzUUN5YlBqY05sVEtwc0lBbVhhbFNDIAAoADDVDzgBOp4CCBwSD1RJTllfVEVYVF9WQUxVRRr/AWd1ZGRoQUhZSVlCYXlsU01rbXZqd2JMU3NxbkdNQ1dTQ2R0dXlGUkhldktBWHNvamRFYnFnRk51dWpjZWlOeXNhekR5S3J5dEN5eW56ZnNJVWhyckpVRW5Ic0ZhR1BKdFRZckZudGdsSkVvcHNIeW9JTkhqTFVLQnFXc051YmpwUFFtc3BBZ0Rxa3RIQ1pCenlDVVZQVERlSGJpSnpVbnVTSFZsbnRzU2hLTGNDSGdWcEhuYnhOZkZvQlRDblNOelB0SmhiVHF2V0tKQlJ5WHdrblJlemtRR0RDeWFQVnRHbkhsSkRYeldveHJsQ3pWSlFzYVBkUFV4bE5obE5YTyAAKAAw1A84ATqgCAgdEhBNRURJQV9URVhUX1ZBTFVFGoAIWEliVGJxZGZrak9RSERCQ0xvUVh1UEViSkhDcmRVRkdZRElQSmJueElWdWNYVUxnQ0RIZGlRZmV6WkhlS3BzdlFjd0Z5Q1hlT29lQlNRd01PYVFqZExobWdCYlJWdEpmQ2tPWGN0dmNZak1OdkFZS0RCcW50TExkbnRpa0Z2a0VXelRsZXpBenJhUkRCUGNoS2loZVNrVVpJUUFqQ25BdGp0c05rRExOYU9RQUR4WWJabmJ0U09tbHVZVndienVwSWtCcnFaeFBUdmRlV0NHUHdxZ2laQnhVa2NZU2JHTUV1RHFsclhWYlNQTkt6bkVXcVlqQUVaWE1RekVEQ25IQWpueEtZbGFTWEpPU0NMaEVKVmhZa2dNZUhZbmd3SUREdVlaTGtVYnNNY3huRnVPWXlVV2NVY011SWJidEVqR2NORUtwQ1RhWlRDendKYXRhV0toSk10RUZ6T0tPY0tlVG9pRmFPTE9zVVVBWkRyUlF4UmFVTUxPemRUbmhFT3ludHhRZnNMaUlkRnRjZlVSQUplUUhyd1V3RWR3UU1NeWViT2pnTnlWcGRDcnVJdHJYbW9SQUNBWWhudEhYS2lhZkJib2lkQ2dPcEhjaUFPY3Fud2tWWEpnSWpCRklrS2lpVEdEdG1LY2NITm9LUUFrQWpjTmxkb1FyQW1NTExSdVZhY2NCaXJlRGN1T0VoR1JDc0F5RnZudkV6Z3dkS2h5T01GYldFbWdHZ2VXbWxXUmdqU3FpRVZDWEliU1dCYVlrRGRIWEJZanFHVXloV2tiekRKTFdsdUlXcG1LT1hsd1pzeFVXZ2RmSkZOVnV5VWFTYWx3VFRBREVuSnRIbkNCbGhiSHpLWGtMVXJJd1RMUE9oSHJHSmpNVXpCQ1JrRUdzbWlta3VnSWpWeW9vU3BhenFXaHR6Sm5GekdLR2FXRm1IbVdJSFFLSW12c3RuVEpkbWhnTmZxaHNCbWpvTkxReVBEamNlQk5UU0hCaFZmamVrbGNtTFZ2c2dlV29JVVVxbFpXUWZDbUhobFFvaHREbFpYQVdNR2NGSWtGZEh2SmdXTHJrTUpKZHZ4bW51ZUp3SnJrS2ZSQUFQSmlKYWxhV3V3ck1NdllKTUNFT3JQREZ4b2NBVE9yR1NwQWZPZENKb0RHUnJCR3V4RXJraVRkU3Fyd1V5bER0a2RIVWdjV2J1TlRHakRjd29PVUR2bnZ4dnVZd0RmemhXU1dCSlFhUWJUQWhRcUdQRnJJYnB2WGFtZFZnZnpMVmZ2YnJEVkFWdWxaSVZSWlNaVE9WY1ZtVFBZT0dLTHhHTVRMcmViQVdQSmhTQUN0SFpCZExZQnZTYU1PaVdYRFRBbnpwU3FYVSAAKAAw1Q84ATqfCAgeEg9MT05HX1RFWFRfVkFMVUUagAhMU21lY0tJbWlUaHl1cFpOYllOVlZxalBteFdJc2tmbk5telVIZ0RFU0JLdGF1R0ROY0xMZFdWTWdoZ2RacEFZYU9xRkhUdGdHRlpMS0ZNZ0drWk1ZYlFlTnFSaFhEeldCTU11eEJQdW9VbGRRalRheHZlSlFla0VZZGtkbG9uVHRyQ3puSkl4bEJoUVVESHJVU2dYVGlOdVFwYlhiWGdFQlhEUWZTY1RNeGRKRkptTlhWT29Ha3hjbHhHc0ZKQ0Jkb2ZUdWJnRkFDUGdNdm1Hd2RPWkNzTFdOUGR3aFRMcGFzdmxwdGpRY2FTUXJMeklIUmtaUmZacXhqd3BoRmVPemZtTHhiR3VSSEJET05oZW1BSWx0UlJDb0doT25CQ1pRd3ZVaGJLRk1sekFxblJnYWNsTERpdWhsS29ZSFdOaGp3WWZLQWJ4RWxwZGxVTVVtSm93d1BSc2V2RHdXSExUUUNPS2N5QURYbUFNTnBWcGFVS3J2RUFUQnVWRXNWUHRpZVdnVEVoY3NRTmlBclduVkh5bFBtY0R3VFVUckVlb1NzeEJFU2tTYWVkU0NMWVZPb2pvSmZpbXpsdEZ6T0NIcUxxdUd1RkFkeE9jWVVqQlhJdFRGTWp1QnlEbE12SnF2V2VTa2hGWHFQYlZEY3pZd2ZSbE1Kd05ZdGN5Q1FQYW9ZaXNZSnZvQVFaVXRoZUlWSUJsb0doVXRtZ3hlVllOb2FLU2lxUkttSExkVFlYZ3BlQ0VnTlNUYW5oak9vWGpkR05uVkx6QmdoTEVOU2pKYkZJd2FxcFd2alFHY21jR091cnRjcHZYQWhEWVh6RldMemNPUVh4dW16TUJST0pNYkdSZUV3QUpDc3BOS3pycmxjbnRhd090bklnZENuenZJWlNYU255QnRHb0Z2a2xRcktQR3ZDT1hoV3pnenVDV0hSZ2hqd2lKbEV5YnpnVXZCdGZJakR2Yk9RdmZLdG5WVWlkUVdxQkVYSXFUdVlnVGh4Sm1QdXVOSml5VElhVVJvYldXVWdmcUNHWVdrWENCWkJxQk5GeFJkamRQcEV3VnVtT05FTWljd0RWTUJJemdYQUhOaEt4amRUZUJaWWx2b1VFRXBadWtzRnlqRkhSc0xFSndlRmFpd0FWVENwU3FLQUtkaFZaS1pTTlNhTkFSUWltY3NVcm5pSUdWREpBb1N4VmhaaVhUTFV5TlFvSlFjdUNjTkVZRFZrUEhia3plZ3FEaWZvaVJHdGJSSGJTWWxXVGdiZklvdFhwWXltQ1VVbUJXVkF5c2tzTktsR2NRU0JHUWtSdGlLWXNBQ21aaXREblNNYnN0SHN5Q2xFSHlNdXZIZHdLY2tqeW5VZ2l2IAAoADDVDzgBQOCauMGMKEj///////////8BYLA1aAA=\",\"CgYIARABGH4=\"]"
  },
  {
    "path": "src/test/resources/issue74.json",
    "content": "[{\n\"dataType\": {\n    \"categoryType\": {\n        \"dataTypes\": [{\n            \"$ref\": \"$[0].dataType\"\n        },\n        {\n            \"categoryType\": {\n                \"$ref\": \"$[0].dataType.categoryType\"\n            },\n            \"id\": 6\n        },\n        {\n            \"categoryType\": {\n                \"$ref\": \"$[0].dataType.categoryType\"\n            },\n            \"id\": 7\n        },\n        {\n            \"categoryType\": {\n                \"$ref\": \"$[0].dataType.categoryType\"\n            },\n            \"id\": 51\n        }]\n    }\n},\n\"type\": {\n    \"$ref\": \"$[0].dataType.categoryType\"\n},\n\"version\": {\n    \"available\": true,\n    \"id\": 6001\n}\n},\n{\n\"dataType\": {\n    \"$ref\": \"$[0].dataType.categoryType.dataTypes[1]\"\n},\n\"type\": {\n    \"$ref\": \"$[0].dataType.categoryType\"\n},\n\"version\": {\n    \"$ref\": \"$[0].version\"\n}\n}]"
  },
  {
    "path": "src/test/resources/json/Bug_0_Test.json",
    "content": "[\r\n\t\t{\r\n\t\t\t\"S\" : 398,\r\n\t\t\t\"T\" : \"MonitorItemData\"\r\n\t\t},\r\n\t\t{\r\n\t\t\t\"D\" : {\r\n\t\t\t\t\"URIList\" : [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"ConcurrentMax\" : 1,\r\n\t\t\t\t\t\t\t\"Count\" : 1,\r\n\t\t\t\t\t\t\t\"ErrorCount\" : 0,\r\n\t\t\t\t\t\t\t\"ID\" : 9165,\r\n\t\t\t\t\t\t\t\"LastAccessedTime\" : 1292411670768,\r\n\t\t\t\t\t\t\t\"LastError\" : null,\r\n\t\t\t\t\t\t\t\"LastErrorReferer\" : null,\r\n\t\t\t\t\t\t\t\"LastErrorTime\" : null,\r\n\t\t\t\t\t\t\t\"LastErrorUser\" : null,\r\n\t\t\t\t\t\t\t\"MaxTime\" : 12,\r\n\t\t\t\t\t\t\t\"ProfileEntries\" : [\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\"Count\" : 1,\r\n\t\t\t\t\t\t\t\t\t\t\"ErrorCount\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Name\" : \"select 1\",\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillis\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillisTotal\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Type\" : \"JDBC\"\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\"Count\" : 1,\r\n\t\t\t\t\t\t\t\t\t\t\"ErrorCount\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Name\" : \"/sonar/dependencies/index\",\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillis\" : 11,\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillisTotal\" : 12,\r\n\t\t\t\t\t\t\t\t\t\t\"Type\" : \"URL\"\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\"Count\" : 1,\r\n\t\t\t\t\t\t\t\t\t\t\"ErrorCount\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Name\" : \"SELECT * FROM `properties` WHERE (`properties`.`prop_key` = 'sonar.forceAuthentication' AND `properties`.`resource_id` IS NULL AND `properties`.`user_id` IS NULL)  LIMIT 1\",\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillis\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillisTotal\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Type\" : \"JDBC\"\r\n\t\t\t\t\t\t\t\t\t} ],\r\n\t\t\t\t\t\t\t\"RunningCount\" : 0,\r\n\t\t\t\t\t\t\t\"TotalTime\" : 12,\r\n\t\t\t\t\t\t\t\"URI\" : \"/sonar/dependencies/index\"\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"ConcurrentMax\" : 1,\r\n\t\t\t\t\t\t\t\"Count\" : 1,\r\n\t\t\t\t\t\t\t\"ErrorCount\" : 0,\r\n\t\t\t\t\t\t\t\"ID\" : 9166,\r\n\t\t\t\t\t\t\t\"LastAccessedTime\" : 1292411686073,\r\n\t\t\t\t\t\t\t\"LastError\" : null,\r\n\t\t\t\t\t\t\t\"LastErrorReferer\" : null,\r\n\t\t\t\t\t\t\t\"LastErrorTime\" : null,\r\n\t\t\t\t\t\t\t\"LastErrorUser\" : null,\r\n\t\t\t\t\t\t\t\"MaxTime\" : 311,\r\n\t\t\t\t\t\t\t\"ProfileEntries\" : [\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\"Count\" : 1,\r\n\t\t\t\t\t\t\t\t\t\t\"ErrorCount\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Name\" : \"SELECT * FROM `project_measures` WHERE (rule_priority is null and rules_category_id is null and rule_id is null and characteristic_id is null and snapshot_id in (429391,167251,829298,623087,838321,188853,837572,837312,837639,626217,746548,841618,629632,624436,630374,630343,678654,622420,841546,185384,624032,457894,800622,807051,170205,625116,167918,838778,843918,839790,839639,627815,840096,628562,629455,191058,839944,830082)) \",\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillis\" : 52,\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillisTotal\" : 52,\r\n\t\t\t\t\t\t\t\t\t\t\"Type\" : \"JDBC\"\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\"Count\" : 1,\r\n\t\t\t\t\t\t\t\t\t\t\"ErrorCount\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Name\" : \"SELECT `active_filters`.`id` AS t0_r0, `active_filters`.`filter_id` AS t0_r1, `active_filters`.`user_id` AS t0_r2, `active_filters`.`order_index` AS t0_r3, `filters`.`id` AS t1_r0, `filters`.`name` AS t1_r1, `filters`.`user_id` AS t1_r2, `filters`.`shared` AS t1_r3, `filters`.`favourites` AS t1_r4, `filters`.`resource_id` AS t1_r5, `filters`.`default_view` AS t1_r6, `filters`.`page_size` AS t1_r7 FROM `active_filters`  LEFT OUTER JOIN `filters` ON `filters`.id = `active_filters`.filter_id WHERE (active_filters.user_id is null AND (filters.favourites=0 OR filters.favourites is null))  ORDER BY order_index\",\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillis\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillisTotal\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Type\" : \"JDBC\"\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\"Count\" : 1,\r\n\t\t\t\t\t\t\t\t\t\t\"ErrorCount\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Name\" : \"SELECT s.id, MAX(s.project_id) as pid, MAX(s.root_project_id) as rpid, MAX(p.long_name) as name  FROM snapshots s  INNER JOIN projects p ON s.project_id=p.id  WHERE  s.status=? AND s.islast=?  AND s.qualifier IN (?)  AND p.copy_resource_id IS NULL  GROUP BY s.id\",\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillis\" : 47,\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillisTotal\" : 47,\r\n\t\t\t\t\t\t\t\t\t\t\"Type\" : \"JDBC\"\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\"Count\" : 1,\r\n\t\t\t\t\t\t\t\t\t\t\"ErrorCount\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Name\" : \"SELECT * FROM `projects` WHERE (`projects`.`id` IN (6162,21829,18851,14083,12408,22347,29365,23460,1381,1406,28515,30163,23219,3486,24346,2228,29994,2904,30857,30164,33164,3563,35236,35405,26230,35160,393,27432,33591,1896,22442,3152,23955,24097,13424,31568,14294,35595)) \",\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillis\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillisTotal\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Type\" : \"JDBC\"\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\"Count\" : 2,\r\n\t\t\t\t\t\t\t\t\t\t\"ErrorCount\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Name\" : \"select 1\",\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillis\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillisTotal\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Type\" : \"JDBC\"\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\"Count\" : 1,\r\n\t\t\t\t\t\t\t\t\t\t\"ErrorCount\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Name\" : \"SELECT resource_id FROM `group_roles` WHERE (resource_id in(29365,6162,26230,1406,1896,12408,27432,393,33591,3486,3563,14294,2904,30163,30164,30857,33164,1381,31568,14083,28515,23460,35236,35405,18851,23219,21829,22442,35595,23955,3152,24346,13424,2228,29994,22347,24097,35160) and role='user' and group_id is null) \",\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillis\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillisTotal\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Type\" : \"JDBC\"\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\"Count\" : 1,\r\n\t\t\t\t\t\t\t\t\t\t\"ErrorCount\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Name\" : \"SELECT * FROM `criteria` WHERE (`criteria`.filter_id = 1) \",\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillis\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillisTotal\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Type\" : \"JDBC\"\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\"Count\" : 1,\r\n\t\t\t\t\t\t\t\t\t\t\"ErrorCount\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Name\" : \"/sonar/filters/index\",\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillis\" : 207,\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillisTotal\" : 311,\r\n\t\t\t\t\t\t\t\t\t\t\"Type\" : \"URL\"\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\"Count\" : 1,\r\n\t\t\t\t\t\t\t\t\t\t\"ErrorCount\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Name\" : \"SELECT * FROM `filter_columns` WHERE (`filter_columns`.filter_id = 1)  ORDER BY order_index\",\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillis\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillisTotal\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Type\" : \"JDBC\"\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\"Count\" : 1,\r\n\t\t\t\t\t\t\t\t\t\t\"ErrorCount\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Name\" : \"SELECT * FROM `properties` WHERE (`properties`.`prop_key` = 'sonar.forceAuthentication' AND `properties`.`resource_id` IS NULL AND `properties`.`user_id` IS NULL)  LIMIT 1\",\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillis\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillisTotal\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Type\" : \"JDBC\"\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\"Count\" : 1,\r\n\t\t\t\t\t\t\t\t\t\t\"ErrorCount\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Name\" : \"SELECT * FROM `snapshots` WHERE (id in (429391,167251,829298,623087,838321,188853,837572,837312,837639,626217,746548,841618,629632,624436,630374,630343,678654,622420,841546,185384,624032,457894,800622,807051,170205,625116,167918,838778,843918,839790,839639,627815,840096,628562,629455,191058,839944,830082)) \",\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillis\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillisTotal\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Type\" : \"JDBC\"\r\n\t\t\t\t\t\t\t\t\t} ],\r\n\t\t\t\t\t\t\t\"RunningCount\" : 0,\r\n\t\t\t\t\t\t\t\"TotalTime\" : 311,\r\n\t\t\t\t\t\t\t\"URI\" : \"/sonar/filters/index\"\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"ConcurrentMax\" : 1,\r\n\t\t\t\t\t\t\t\"Count\" : 1,\r\n\t\t\t\t\t\t\t\"ErrorCount\" : 0,\r\n\t\t\t\t\t\t\t\"ID\" : 9164,\r\n\t\t\t\t\t\t\t\"LastAccessedTime\" : 1292411667616,\r\n\t\t\t\t\t\t\t\"LastError\" : null,\r\n\t\t\t\t\t\t\t\"LastErrorReferer\" : null,\r\n\t\t\t\t\t\t\t\"LastErrorTime\" : null,\r\n\t\t\t\t\t\t\t\"LastErrorUser\" : null,\r\n\t\t\t\t\t\t\t\"MaxTime\" : 326,\r\n\t\t\t\t\t\t\t\"ProfileEntries\" : [\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\"Count\" : 1,\r\n\t\t\t\t\t\t\t\t\t\t\"ErrorCount\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Name\" : \"SELECT * FROM `project_measures` WHERE (rule_priority is null and rules_category_id is null and rule_id is null and characteristic_id is null and snapshot_id in (429391,167251,829298,623087,838321,188853,837572,837312,837639,626217,746548,841618,629632,624436,630374,630343,678654,622420,841546,185384,624032,457894,800622,807051,170205,625116,167918,838778,843918,839790,839639,627815,840096,628562,629455,191058,839944,830082)) \",\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillis\" : 52,\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillisTotal\" : 52,\r\n\t\t\t\t\t\t\t\t\t\t\"Type\" : \"JDBC\"\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\"Count\" : 1,\r\n\t\t\t\t\t\t\t\t\t\t\"ErrorCount\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Name\" : \"SELECT `active_filters`.`id` AS t0_r0, `active_filters`.`filter_id` AS t0_r1, `active_filters`.`user_id` AS t0_r2, `active_filters`.`order_index` AS t0_r3, `filters`.`id` AS t1_r0, `filters`.`name` AS t1_r1, `filters`.`user_id` AS t1_r2, `filters`.`shared` AS t1_r3, `filters`.`favourites` AS t1_r4, `filters`.`resource_id` AS t1_r5, `filters`.`default_view` AS t1_r6, `filters`.`page_size` AS t1_r7 FROM `active_filters`  LEFT OUTER JOIN `filters` ON `filters`.id = `active_filters`.filter_id WHERE (active_filters.user_id is null AND (filters.favourites=0 OR filters.favourites is null))  ORDER BY order_index\",\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillis\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillisTotal\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Type\" : \"JDBC\"\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\"Count\" : 1,\r\n\t\t\t\t\t\t\t\t\t\t\"ErrorCount\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Name\" : \"SELECT s.id, MAX(s.project_id) as pid, MAX(s.root_project_id) as rpid, MAX(p.long_name) as name  FROM snapshots s  INNER JOIN projects p ON s.project_id=p.id  WHERE  s.status=? AND s.islast=?  AND s.qualifier IN (?)  AND p.copy_resource_id IS NULL  GROUP BY s.id\",\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillis\" : 47,\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillisTotal\" : 47,\r\n\t\t\t\t\t\t\t\t\t\t\"Type\" : \"JDBC\"\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\"Count\" : 1,\r\n\t\t\t\t\t\t\t\t\t\t\"ErrorCount\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Name\" : \"SELECT * FROM `projects` WHERE (`projects`.`id` IN (6162,21829,18851,14083,12408,22347,29365,23460,1381,1406,28515,30163,23219,3486,24346,2228,29994,2904,30857,30164,33164,3563,35236,35405,26230,35160,393,27432,33591,1896,22442,3152,23955,24097,13424,31568,14294,35595)) \",\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillis\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillisTotal\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Type\" : \"JDBC\"\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\"Count\" : 2,\r\n\t\t\t\t\t\t\t\t\t\t\"ErrorCount\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Name\" : \"select 1\",\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillis\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillisTotal\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Type\" : \"JDBC\"\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\"Count\" : 1,\r\n\t\t\t\t\t\t\t\t\t\t\"ErrorCount\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Name\" : \"SELECT resource_id FROM `group_roles` WHERE (resource_id in(29365,6162,26230,1406,1896,12408,27432,393,33591,3486,3563,14294,2904,30163,30164,30857,33164,1381,31568,14083,28515,23460,35236,35405,18851,23219,21829,22442,35595,23955,3152,24346,13424,2228,29994,22347,24097,35160) and role='user' and group_id is null) \",\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillis\" : 1,\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillisTotal\" : 1,\r\n\t\t\t\t\t\t\t\t\t\t\"Type\" : \"JDBC\"\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\"Count\" : 1,\r\n\t\t\t\t\t\t\t\t\t\t\"ErrorCount\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Name\" : \"SELECT * FROM `criteria` WHERE (`criteria`.filter_id = 1) \",\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillis\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillisTotal\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Type\" : \"JDBC\"\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\"Count\" : 1,\r\n\t\t\t\t\t\t\t\t\t\t\"ErrorCount\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Name\" : \"SELECT * FROM `filter_columns` WHERE (`filter_columns`.filter_id = 1)  ORDER BY order_index\",\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillis\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillisTotal\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Type\" : \"JDBC\"\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\"Count\" : 1,\r\n\t\t\t\t\t\t\t\t\t\t\"ErrorCount\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Name\" : \"SELECT * FROM `properties` WHERE (`properties`.`prop_key` = 'sonar.forceAuthentication' AND `properties`.`resource_id` IS NULL AND `properties`.`user_id` IS NULL)  LIMIT 1\",\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillis\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillisTotal\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Type\" : \"JDBC\"\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\"Count\" : 1,\r\n\t\t\t\t\t\t\t\t\t\t\"ErrorCount\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Name\" : \"SELECT * FROM `snapshots` WHERE (id in (429391,167251,829298,623087,838321,188853,837572,837312,837639,626217,746548,841618,629632,624436,630374,630343,678654,622420,841546,185384,624032,457894,800622,807051,170205,625116,167918,838778,843918,839790,839639,627815,840096,628562,629455,191058,839944,830082)) \",\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillis\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillisTotal\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Type\" : \"JDBC\"\r\n\t\t\t\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\t\t\t\t\"Count\" : 1,\r\n\t\t\t\t\t\t\t\t\t\t\"ErrorCount\" : 0,\r\n\t\t\t\t\t\t\t\t\t\t\"Name\" : \"/sonar/\",\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillis\" : 220,\r\n\t\t\t\t\t\t\t\t\t\t\"TimeMillisTotal\" : 326,\r\n\t\t\t\t\t\t\t\t\t\t\"Type\" : \"URL\"\r\n\t\t\t\t\t\t\t\t\t} ],\r\n\t\t\t\t\t\t\t\"RunningCount\" : 0,\r\n\t\t\t\t\t\t\t\"TotalTime\" : 326,\r\n\t\t\t\t\t\t\t\"URI\" : \"/sonar/\"\r\n\t\t\t\t\t\t} ]\r\n\t\t\t},\r\n\t\t\t\"MID\" : 13329149,\r\n\t\t\t\"S\" : {\r\n\t\t\t\t\"APP_NUM\" : \"sonar\",\r\n\t\t\t\t\"INST_NUM\" : \"\"\r\n\t\t\t},\r\n\t\t\t\"TS\" : 1292411870281\r\n\t\t} ]\r\n"
  },
  {
    "path": "src/test/resources/json/Bug_1_Test.json",
    "content": "{\r\n  \"Je?{4]<?%?H?071??-?$}?@ps??}M?By;t-[???Ec?(%?=.Mj???rNr(?<[???EG\": {\"Ly\\f_!?.-#%[?8?P?E?D-h/???^S,???L??6\\u20bbI[=????9????Bm??9%X?T?FE ???L?QW\": {\r\n    \"\\\"?ry?p,R??l?9\\Fl?Y7 ??F??VmV?O^Ub??[CkC:J\": \"?L\",\r\n    \"%???R$?O:Q?_?1????*?????s?*?-3?2+p(?N]v?ʭ^r~?zyIVr\\\"L~z$k?i>m+?g??c??\": -6800490768425627785,\r\n    \":`?M\": false,\r\n    \":??l}Y\": null,\r\n    \"<\\/?\": null,\r\n    \"O???P??1?x?[??C`V?O?R˷[??9]B??ʈS^9:?/ʛ?}?~??v???O2???P?C%f????\": \"?h`}v?,??9?\",\r\n    \"Vdo;qE?Z??&*F@7`4X.?YѴLy}r?j?]һ?wJ??/v?\\\"f\\u2060<??4ߑgcX?[?}V>h???S\": 8316720261942872445,\r\n    \"X)?1Pa8?,BZ[uc?[?b/[3???O$??^??u?R.%?(^2fi??^?J}\\rkoL?|4J???*?\": [\r\n      1.7161674951415575E18,\r\n      [\r\n        null,\r\n        -1.8435601686129022E-20,\r\n        {\"}&I^?k?؎'ص0\": {\r\n          \"D?PlN?m?7?a\\\"\\\"?#7?ҶdI??\\u001f\": {\r\n            \"7?\\\"M??UH?Ze?y?:?Jj\": null,\r\n            \"???F?\": {\r\n              \"j??7?\\u001bS??W?_$PP0G?V~i????O<\\/????GU;?]\": [{\r\n                \"10f???9\": [\r\n                  9.475779258218468E15,\r\n                  1.0875847287703184E-18,\r\n                  \"\",\r\n                  false,\r\n                  8638634729854597057,\r\n                  null,\r\n                  -6.209101493501909E18,\r\n                  \"C?\\u0005I???\\t?4?D&?A????M?-l?Y??\\\\Al}?0(\\u001f\",\r\n                  -3.9477208205182624E17,\r\n                  \"&dGuw?L?lbeEW??lO\",\r\n                  {\r\n                    \"\\u0011?7?+<?)?iRaf?=????gC?-h?SX?Pn?ؐ\": null,\r\n                    \"r;?\": {\"$&??\\\\?0qB+?2OIZ1?p?=`+4?grW?-K??]g ?1?5-7?e\\\"?~0??\": [\r\n                      7434913987510542966,\r\n                      null,\r\n                      null,\r\n                      373853171475810544,\r\n                      [[\r\n                        null,\r\n                        [\r\n                          \"EL+?'?p?Q?y?_??ow'?h??P?cS'?`=??|X\\u0096%?\",\r\n                          false,\r\n                          true,\r\n                          \"2d??s?H?Ǔo???]m@KJ\\u001fsir????Y0?(\\\"\\\"?\",\r\n                          [{\"??:BxR?(??ѫS?7#\": [\r\n                            null,\r\n                            null,\r\n                            -4912961423193165684,\r\n                            1.0063573421428555E-19,\r\n                            -4282222020440316777,\r\n                            \"?\\\\\",\r\n                            {\r\n                              \"w_`\\u0004?W??L8rY9^?Tc?SzVx{?<?}zx?x^Tf1????`I:-h??XߦR?y?J?z2[-?Qσ8?ފ?\\\\?R<?=\": {\r\n                                \"\\\"W<\\/W'??:eN`?i??!?<l##??]r3t\\rM?J?aT??>?Y?-?5?d?ۇV??ths\": 1033893716364386196,\r\n                                \"+?y[`.)8KJm\\u001e?IءOf??@?T???/???^?2lk?q?6?jI?? ???$'_N=W???????%)a\": \"t1?qc\\f$#N#?O???j9??N?K\\\"???Y?yZ?/s?Kv??a?}^7%?t?Iy\",\r\n                                \"C{|???ӝ\": null,\r\n                                \"Gpb/\\u00194?٨aJ?uF8|???j7???d??IM.ƣ\": 8.30143458797225E-20,\r\n                                \"Ow??T\\u001e=???ɡ\\\"?Tw MXgs???E??:\": false,\r\n                                \"l<?4?3??Ғ}!w?HI?O??=9#y?>~???Q??P238p?V\": \"b??w,pڏA|?Vo?Qur?мDSjIPqe?A??hF?8??*=b{?R?\",\r\n                                \"r????)uKV?m?I((Ay??c?c\\u2053&aHKxG?@?xoο@aV@x?n?HN?k?\": -1.1410885031778282E-19,\r\n                                \"v?+??tW|\\\": \"??U/?ϰ,P?\\\\\\\"?F)+iLP?OR?<vs6???i7n?\\u0018l>ɓ??<?Cg{\",\r\n                                \"h?\": [[[\r\n                                  true,\r\n                                  true,\r\n                                  \"cE??bB??/ ?]?SETIa9;D??h\\r_?P??py{??v?A?n?u?7????kHM䗘Jq?-?t6zA?WZ`\",\r\n                                  true,\r\n                                  null,\r\n                                  [\r\n                                    false,\r\n                                    8279258556551483787,\r\n                                    true,\r\n                                    null,\r\n                                    \"?=@?ld????3\",\r\n                                    \"???+R{ ?q^?v?MjG?sdS???BNyu]%?`?&\\\\g\",\r\n                                    [\r\n                                      \"/c]dGho???w?\\u0017Ԋ3{?=?(???)?B9????.?ѭ?b[?![?G??9??J\",\r\n                                      \"H?b۾?PY?6S???0߷@A1??w\\\\zno??PE?????0W_\\Rbܪ\\\\i?y???????\\\\?xh??w\",\r\n                                      null,\r\n                                      {\r\n                                        \"M???f??)Ĝ^U?QYHAg1f?ZP!F??c͒e???V?|xO??*{G,)52ϋ#4\": [\r\n                                          838053666351906464,\r\n                                          null,\r\n                                          \"bqk??t+EXH??x!VǑH?ޓ???0Ժ^ӡ3c\",\r\n                                          \"Jl^վnD??K??O3:T?H$?-1UD!??r.B54\\\\p/1.`Vzr԰?[#??a)?C?S])\\\"!k}ڿ\\u0014?4-p\",\r\n                                          null,\r\n                                          {\"H?llHN08?z[??b??0m?\": {\r\n                                            \"~???w'O?(2ns\\u20d2?bX?]?o?ַ?lP???O(Y?\": {\r\n                                              \"?,J?? ~?_Nm?,H???T?Z?:?`?)?_?ޜLp??_EU?v??)?H\\u0007?6:?̶gi??\": null,\r\n                                              \"?/.?\\u0003x?_4R?~??=???.dQ%?\\f@???OTtc?????*??|ZBu<\": {\r\n                                                \"8? ?\": -3.2797411187732342E18,\r\n                                                \"i*???2o??P\\\"Dp??#?`?v;0{!z?`!??}B\\u0007^\": [],\r\n                                                \"m?)N?z\\\\????r/Kq?\\u001bnT@?ҾO Q?\": {\"?\\u0013T3?)?W'?d??`iVMHGgL<??%jf@????;g]@lVMVEj?]e?tXm\": {\r\n                                                  \"\\\"0?Ț\\\"?_???G?ki????????l%q6??|?v*??p?OXzL???Z2????XybJ?IR1\\u0011p?M?\": [\r\n                                                    {\r\n                                                      \"Gj9ʥ????kq??+9a???gb?0P?yo?q??D1N{;{v?ª=/\\\"١sFMU@G1?B??\": null,\r\n                                                      \"?E0?Rry֓Ch\": 3174466398663781\r\n                                                    },\r\n                                                    -2002471732114295570,\r\n                                                    \"???l??????JqT?O?\\u0012?\",\r\n                                                    false,\r\n                                                    \"<?\\\"?0?f|??+MuV0@U7\",\r\n                                                    false,\r\n                                                    [[\r\n                                                      \"@?Q D_??!a?O^<\\/k?s?!W?|t7}??|\\u20d8?a?CWg??,???}?H6}L\",\r\n                                                      false,\r\n                                                      false,\r\n                                                      null,\r\n                                                      -1.757216896292143E-19,\r\n                                                      null,\r\n                                                      true,\r\n                                                      false,\r\n                                                      {\r\n                                                        \" i?m]ka??/?}T?$y??,OJbp??>K?;9f?l?g??\": 3.327212324538149E-20,\r\n                                                        \"#i?vo϶Lxae?-uSt?\": null,\r\n                                                        \">Va?>:_C???j!X@?11^?Pp??:̤?x{?RI?Hp.i}A??qj?G?Q\": [\r\n                                                          \"I\\\"z[?K?@j???*?se??v#??cH?OJ?????\",\r\n                                                          -4477471512678994719,\r\n                                                          \"eD?HTLq?>w^(d\",\r\n                                                          -1.1585120445765388E-19,\r\n                                                          \"?#;9=mm%qHVzD?t.o?tV\",\r\n                                                          8269015762645284121,\r\n                                                          null,\r\n                                                          9.008359830519385E-20,\r\n                                                          false,\r\n                                                          null,\r\n                                                          2.4734976672128763E18,\r\n                                                          5.0732658788646112E17,\r\n                                                          5151257264633094182,\r\n                                                          7781424114773269586,\r\n                                                          -7.873227029525128E-20,\r\n                                                          -3.3360362649102362E18,\r\n                                                          5.3774248873072026E18,\r\n                                                          2.177838447053353E-19,\r\n                                                          null,\r\n                                                          null,\r\n                                                          2780224645211078224,\r\n                                                          null,\r\n                                                          \".6;T,q?g~?<?\",\r\n                                                          5.2197369226447164E-20,\r\n                                                          5419838495231672553,\r\n                                                          -4273742328392370944,\r\n                                                          -8286000338824913895,\r\n                                                          true,\r\n                                                          false\r\n                                                        ],\r\n                                                        \"?59?/?P?3Y???ox?^6[I\\\\p<eD??t?-q?4x?B??T??r?\\\\Kni??*P?MYX)LUNl?j>6ZT$Lv\\\\iY\": false,\r\n                                                        \"E-??eo??4?a;?<(|???i5???6\\\"J,R'??R??Pe??5pQ????q?+f+F?&lr(??P?p?ey$??/?tr\": null,\r\n                                                        \"G?F#\\\"@_?C??3C9?z?r\\\"2~|???\": -7991056317272870657,\r\n                                                        \"Oa? F&\\\"?3?T\\u0004?!J]J?3???dz??hotD$S?R:=Q˅z?*o?\\\"y_?\": -4775877206565111546,\r\n                                                        \"?i\\u207a^,?@\\\\?9?'\\rA,Th?Ъq@ ?\\bqny??PkB??B?\": 6289545929263173642,\r\n                                                        \"??K[iDr+?rzy!Ph4Yn??+??5?Ga?p?\\\\?-2zI?zY1/Ɠo~?R[?g|w??J\": true,\r\n                                                        \"?l?2??\\\\bu?'0?gm;???nMӨpf??Ge?V?\": \"M?U?b?n????B?F.?NU%7\\u208dLΗFL?WZ?T?y?{?p? ?ww?S,<\\/j\\u001fO]Yh??Ou?v\\u20fep??DvK]:AHK\",\r\n                                                        \"[?{?Z2þtM?\\\"cD?S??DƘ?/?8?xb???/\\\"ޕ??*???dH?W\": [\r\n                                                          2.93702460823648E17,\r\n                                                          3.7240503886373059E18,\r\n                                                          null,\r\n                                                          -1.01420984615208896E18,\r\n                                                          null,\r\n                                                          2230400304315290084,\r\n                                                          null,\r\n                                                          8856323621115115862,\r\n                                                          null,\r\n                                                          897180444278325084,\r\n                                                          \"m>L?_`wr*?2nZ}WdBD??KQ/r?a??Y\",\r\n                                                          7151994498186548853,\r\n                                                          false,\r\n                                                          \"i??0| \",\r\n                                                          2037861164626710783\r\n                                                        ],\r\n                                                        \"IWNH???$e??v0\\u0001pBt?b38#?l?gb\\\"?9\": true,\r\n                                                        \"S??r?#(P?9\\\\m?M.O?q?n??'?`????ahC??$?Q?,r6]d?]?@=@\": -8.7218896732279334E17,\r\n                                                        \"???;bK8w\\\"ON?L?fp~?B)ߏ\\\\\\u0015M/\": \"#?Gm|*?xo??Z???O?$??G??ab|?jKEֈ?fy?Ƒ~0 y\\?'\\\"\\u0013?`?<\\/ҚhW&,??_???]X\"\r\n                                                      }\r\n                                                    ]]\r\n                                                  ],\r\n                                                  \"? ?NKE ?S!/?o&lI?Х\": 1.18208744034436736E18,\r\n                                                  \"?`?DF+žH\\\"z>?Ԩ\\\"iWhߕWH?NC?R_??????????}Aa?\": -1132582586464006784\r\n                                                }}\r\n                                              }\r\n                                            },\r\n                                            \"?`??2p9???(_{??\\\"<\\/?U\\\\?9D?scz_?b??m?`??pp?5??5??\\u205dLM???/O???n/\": false\r\n                                          }}\r\n                                        ],\r\n                                        \"???YGW??h~Z4trq@#?2E??#?????<G.R3? G??0k.?e=fCA?_<\\/?q~z????\": null\r\n                                      }\r\n                                    ]\r\n                                  ]\r\n                                ]]],\r\n                                \"?QT?1W??5?zh??O?;??\": -9.253025246171941E-20,\r\n                                \"l???R?C_R??d?@??9H&\": {\"f}w?L8?y?h16?y?ah?js??PhЫDg\": null},\r\n                                \"???\\bi?k&a\\\\?%??(z5rAX?#??$<\\\\g'??\": -5.780680671435642E-20\r\n                              },\r\n                              \"?Y\": -4757766261682183247\r\n                            }\r\n                          ]}]\r\n                        ]\r\n                      ]]\r\n                    ]}\r\n                  }\r\n                ],\r\n                \"?q???G???\\\\?SɑK8<?d+?FU\\\"O???????PF}9x)?$O\": 8441728627666900392\r\n              }],\r\n              \"?jDbM!????'g??$i?JЂ?Ͼ$ph?\\\"ec!Bf?'Tef\\\"p#M??.A8DRJ!\": true,\r\n              \"tD?\\\\x\": null\r\n            }\r\n          },\r\n          \"TT?/??yFdŪ*4,$e.?,?KsL@!.ו?'?????fyK?~z?(? CPs'M4?l6(???A錮3??|y\\u0000g?w??m??\": true\r\n        }}\r\n      ]\r\n    ],\r\n    \"e?5?#??./????0Ѣ??<\\/??_?9G\\G?6V?)?;??:c?hh'?+D㬩}?E,)??X\": true,\r\n    \"?%8?8l??](_??\": null,\r\n    \"\\\\5_?dk%?O?????^?\\u0017׾??(g?z]a<$o?5do?(??Oaz???S?9\": null,\r\n    \"Н?X2??Q_\\\\ ·\\\"?>W???P[???,x?8???puW??PlvX{?קym\": null,\r\n    \"????cEV:???;x\\u001d??[?\": 5211428257228145730\r\n  }},\r\n  \"??5`?}d1(?XrA;N?z}???V?Q/\": null\r\n}"
  },
  {
    "path": "src/test/resources/json/Bug_2_Test.json",
    "content": "[{\"#O쌉l)fAA\": {\r\n  \"<\\/刋㢕튓繛 ⷥM䌂阦꽀➰r\\\\Ps颯泡鰉鴜T頢攅㋯钫A?措讝惺ﰃ孄获E㜙Ꙃ冲j⑱?䰞漌爹4'痡z㟉3eC䒓:DF슞<\\/\\u001f눃ᷘh殉桤桕ῑ?究h曺Jq偌䭙鞋\": {\r\n    \"佹\\\\qV䩠벾╙/:-Ί挊<\\/跑&颙\\\"㭍ཱི༞+貢챻\\\"N賜ᨭ襬`˚E7룴;~ɣi콇䧆㚳haO帎礤㻴5<\\/浭p뼾'料\": -2.01542542980615654E18,\r\n    \"埽\\fTo{䜆P迃霱I鷏qJ-u甉{I羣\\u0012{l\": [\r\n      7253819658263489446,\r\n      [\r\n        null,\r\n        \"F펫Cf錖挂`㭲㊮QY]払큭cT~{䏒漄WZo鳎ꙘĈY矐9园⮯縖飯\\\\H尚4`?뼄驲,쉯჆5⎋SNp튰y흟^㔚Eez綉d(sK蹗痜썡ଆ차꺍劗]\",\r\n        null,\r\n        \"?\\u0012淺 긢K\\u2078?桏\\u00182H~VV鞦졐H衿;J윙?nj\\\"㒣~諶碃]ퟨ஋$髉챽oz㖝纷da욝ṧ决v|濽B𣏕.ﺻ鷡e`{㰻;棁ꥨ{∁}T\",\r\n        3.3505545181189012E18,\r\n        [{\r\n          \"啱팹Ṝǵ뀦ﺿۧ⤾7팶PO\\\"ꁛZdIᎋ)1ढt펷㊰㙇At⸒Z=漲钑2dꈐ褤h矤KL乁猔z䪮j햺aⶃ燘e?02?䴹㺕뜾㌏'탴O쇑\\u001e3\": false,\r\n          \"樹ᾲ䆶\\\\ꫠL!V@腥~YnuCf3쵍'ꊺ츆਀k輤塻๬[ZA俁䪵뱰ꊗ8x層2唫-u]O<魲籐o믹\": -7703918589158983839,\r\n          \"犵>黼!?里乧&z阶\\u0002~\": {\"ꣲ䌿ⳝ혏륋注ꍜ䵎冝l?돩h晗亍At?M?豚;P<\\/'p菼Nq>仫j2離\\u000f\": {\r\n            \"Xቹ\\\"YA6Eq䵀䎎혚⎾꒛?줦iUe i\": {\r\n              \"f劉{ܫ䄦嵎Ion먠Ꝑm髇瑴춃ㇽ[<\\/'.:?K\\\\橶r\\\\h뢤O,假Ri\\u0019rG\": -7794349665899705938,\r\n              \"꺷緤짜䨒&roN訔?+툵ᙣ\\u0014Ӊy䅨Sq:\\\"~彼?19Q㑚\": {\r\n                \"Bs偢䨂凮Ꮻ豈.\\u001b|骺႙﹜摯裁aI\\\"}\": [7.0486142523307837E18],\r\n                \"[䁟g/z?p㭤1?㐊⇚v곺7O挞쿮u慴$mf좖k虏<trA䭉jo<~<栠举U◮崯F湬|퐜鍓Q`붪\\\"77x.^\": \"NFRG慠濅ᾈF씠UH5(K|鞠⾝7s荵౮V቟㓺F睍#f࣪e鍜핏房냎歓ﰵ?\\\\t5=俻鋮흌x톤∔|㜋>ﾒⅰ\",\r\n                \"o랫8뒩\\t᠎य隐\\\"彼茹ꈬ䦣\\\\ A깭C7y普l!턷RT0s\": [{\r\n                  \")?F඼ⴒ-㌘@닿&\": false,\r\n                  \"?@{&>@yppŚ犦H~琱댠咈羳厃ଭ줭筂瀉/r[༛⡾:]瑸J飨䮗⿜\": 7574237808515315818,\r\n                  \"Z6萬?jᬤ齻琋*쮛͜F\\u0005y猓⤗?jE'㺜싅fw촩o<\\/ᴲ獃%$\\\"6DaM\": -1.9200399472409214E-19,\r\n                  \"૾?EPB⋁=ꤥzH@n9~U]謳望&\\u0007࡯~3H{j쟋丽e톾%ʃ妳=<\\/㍬儡eG2虻7沁[䯈㔎G`Z\": true,\r\n                  \"▨纁慞ˉv┅炑>ၐ艰>{;䄽'෯ꀂR稬+mW!㋤隃䯽?ueOgD⻳䧜Lw찾닊O%뮣C\": [[\r\n                    2.02876543486781184E18,\r\n                    \"W埙!㷁㜀︴檇l۞쐎^黬餔:z掟콞14jR탫o䴍绍麙%֍\\\\トb.ᒈl<?㝐d%㧛?cerz\\\\2ꈠ䂚%樠⽁꜠迨7Z탄LkQ㰻咮⟷:뺍\",\r\n                    true,\r\n                    -3681709130279456472,\r\n                    {\r\n                      \"2黣帚i:m䖃{剳氞䮜噃A]r檘녎7즽&z썬밧죐m䠼虭좰>#5鍍Ἠ\\\\贼卆沜u\\u2078C堸}zjv䀿￀ℌ䵇FC簜|㳾᳇f$\": true,\r\n                      \"Nゲ쯗a慀F잞〘F~Dለ閵坓K관ޠᯌ\": {\r\n                        \"G脂䈚녋='\": true,\r\n                        \"荇;욓ｴ\\\"{I_ W볈知쵿Q)⾢<\\/T◚.(ઽ煙'풊Z藼줤ጓ3䷎w놣~{y阥Gs湗?n,ꭘ蹝ৼ쇉⨟=袉ROꢻI'뵺㟛RS]oO\": -2744640660586951359,\r\n                        \"뫳]#咪R⏾ทJꞎv켏G{⏄($ꐊ()絒阹?n?p{4 qQ䎰觲晆jHG앹|ᵲ쐮瀱줿袇U\\\"R쮨䕾Kઝ쾱!ax㾝徒߂C\": [\r\n                          \"\",\r\n                          -3245513834568330895,\r\n                          null,\r\n                          9159020776766177079,\r\n                          2.8566255259975444E18,\r\n                          {\"ꠔg韢쨣6}It㧁0\\u20aa]o\\\"䶙yC傓衍﹟:棩쳮t|GL怳I爭=葁ݩಱ:솬ᖖ\\u001aRkG\\\\䷿#\": {\"F꾉ട惵fk匙ꥺż됏Ⴠ㊎袘]~C\\u001bQI3ꢋ⿁\\u20777@e\\\\੯㆒ࠆ<\\/%=௨踞佌傳\": [\r\n                            null,\r\n                            \"V霊瞔P漴@\\\"⋊\",\r\n                            {\r\n                              \"Vas셔꬟ȁ⾜?P[⟂>l쏉LᰠQ嵼괟@뢭㋠뉱㗹詐O\\u0006掱魜7\": false,\r\n                              \"扯㛐ޝοꦑyaM궅\": null,\r\n                              \"ퟧѭYGﰁ㯊뉞\\b?⅁\": null\r\n                            },\r\n                            true,\r\n                            null,\r\n                            null,\r\n                            -1.74791493331399398E18,\r\n                            null,\r\n                            [\r\n                              \"ᆚ⺛敁4ᴐ?Ð>:㋝q㔢?罀7\",\r\n                              [\r\n                                null,\r\n                                null,\r\n                                4226786048985572015,\r\n                                \"3紙鵂,ꦑ|턵꣓?\\u001fh;配郶*L፲ڡ䏯ꗀ鮲ᢔwtfdPb؁瞃ogg䶏Tok?\",\r\n                                [[{\r\n                                  \"8ᲕꦄY䑅2F嵐ꠃ᡺\\tꘝ⮵#猚淆.l鮖Ҥw\": [\r\n                                    -6502080481201020134,\r\n                                    1923352204610270980,\r\n                                    true,\r\n                                    \"遢튜ꞂM1AG彦xoਧi?ᖫ今K^8*뤑l⾄y쎤.潁1?{屰蛴NﻌB硎9엏稀%뽘y䍻〷@㺻燱6dฑ찺?疿B뫨伏gFu篹싹막mOX'`擠䈇乹뼆\",\r\n                                    4.6023573314558781E18,\r\n                                    4644967328988109336,\r\n                                    \"l쳨紜t?f뻬z.GAHx{)%N귣9ꐣ>a璂u燹Z皪⢭s풝z0䶡IDể麊⚅쩞쓀-y\\\\KⒷ꼬Td2헚_﮳΢釣ﰥञ졷|c怖䍸㯔?폂춅y`Ml썤庬풃℁\\n傂<\\/\",\r\n                                    {\r\n                                      \"x퐹m禇☒#壅嶈S놉SPGH2ATg㋯oI}\\\\/䒹융l?\\\"ʀ%ᒩ⣿쇻O洅`櫻僰黶\": [\r\n                                        -1.383254321403302E-20,\r\n                                        \"뤎[f랢QMs콥&툯谫f\\\"ⲽ兩Z;u?⌦QK띧쵮?瀱畂龯&﬒\\\\r쬳⋺\\u205d˦@T쪼\\u0014>⥏⌝륉rnH侁U꺧䦵앲鄘td\",\r\n                                        true,\r\n                                        null,\r\n                                        false,\r\n                                        null,\r\n                                        {\r\n                                          \"X徱ѭ?o砲[[ᙋ}ꃹ釫䶺?cc肭:勜\\\\6B\\u001ebM㍤DⅧ?\\u001e⽤胔/05緋T>혶<,ῒD⩇믵怫B陹釣g\\u001fe쬙ᚩs?ኒ゜ROa?:糯㾈\\\\pIuu\": true,\r\n                                          \"g䜓ᓨIK腼<*?䝖웤㲶䊢瞫zk땸\": -3310061620016052805,\r\n                                          \"枣잪ᣉﮕIw?Ƴy甏\": {\r\n                                            \"Kᑰᥠᤙ뚹谙aṻx齗⸽,P䌕䨧뿱Ằ_렰\": null,\r\n                                            \"[Z䣀痢[\": {\r\n                                              \"\": {\"Y0⺿Z<\\/㈖렡贩 !<\\/-헁޺):*ﮚၒ轤佑q䒟.Aꢛ〛這)Mᑡ=挤줓7qI⧬I\\u2062O\": [{\r\n                                                \"6䚗_뤫弰$㨇k\\u001b2Ԃ䏮Y뼶M\\\"gd澤sL]*솔ꇸ뺛뤆?莳B쭠矠0퇊. j⸵(1渑T^ꕢ;|z^D#襌㓶刉ᔞퟋH偋u\": \"痚ﾇ䲬酾䭙'䓢Fhl넧鴖a诈/☪㦛后Q蚒⡒K*씤jkyꨶ⎾埔s?k豶ୈ研弬pS+時?h䅑깇s%u㇗Tj춾n뎌dශr曼ꇏ夎蝪掱D]뽑Qᰬ㵦艊g%뎜\\u0018\",\r\n                                                \"]rmꎙ5解<5S m⫛鱽秦=捐<䉕䈃둉c눸*~~b\\u001dzJK/Y$9ZMG\\\"W넇\\\"a\": \"圜*v闧I0년l>6cb亂[\\\\C䞬6\",\r\n                                                \"{圆<괧)4.X嗱岻<\\/偲\\u008fﹰ亗F\": [\r\n                                                  -1073457174818770421,\r\n                                                  [\r\n                                                    null,\r\n                                                    -2469507427652166533,\r\n                                                    \"덍蓲l {oXP*3ꭤ-5?␆䎛t?큖ቊz胁ᇊ猗殨䷔잣ཟ뎳l\",\r\n                                                    [\r\n                                                      5638535197048978153,\r\n                                                      {\r\n                                                        \"\": 4.1545290138286368E16,\r\n                                                        \"Ǣ泵;W)g掶鍒R蕣냈퐷\\u000f:ꔥ鵸櫞&湨O[\\t?ﰸ偳o퓼睘⫷㟲؃덉<H\": -1.2852320902647856E-19,\r\n                                                        \"ῲߥ瑽aIR&E㨇lㄚ*t蔇%悉틕lMU1\\\\䖻娮뻗暌v?䭟n滙(篢EP0R᪯袝䍲방\\u000f\\\\BIO주팻)딳l쐶?ꏴW\": -1244902753604713980,\r\n                                                        \"⚀㶰fN橣頋M 迡?q妳\\\"ၠ嶣䫰枫늶A]峜滍衿ǹ1ꬴ䌗殺2\": false,\r\n                                                        \"⸾u?ᡣ몕㐖榑F>唘:xf邭oM뺡졂3꺁GhJ껻⡙愳g\\\"㎱劗\": [\r\n                                                          false,\r\n                                                          -8169181714585839294,\r\n                                                          true,\r\n                                                          6.456704048016868E-20,\r\n                                                          1.3251957222765784E-19,\r\n                                                          3.1671948415040262E17,\r\n                                                          -3832348024941016972,\r\n                                                          -6.653848968772521E-19,\r\n                                                          null,\r\n                                                          null,\r\n                                                          -4.653435812127709E-18,\r\n                                                          null,\r\n                                                          3.804208587082648E-20,\r\n                                                          null,\r\n                                                          3293596416793960465,\r\n                                                          -5.5231290458099343E18,\r\n                                                          \"룲䡡闺⡙謰ꉪ+䀹㌭<\\/8Ⱊ|坙膒㻪ᲁH叚l<\\/9\\u0007袟臭Iнr\",\r\n                                                          null,\r\n                                                          \"r\\\"]ᱜ2ꚼhe堁-Z?V㶩痜g\\n>\\u0010萣鮼?荌%q\\\\ﲗ逎㙭⢡윋〱죓穤O쟱~翌꩑{R䮬豆N噹IOkuG霥\",\r\n                                                          -1.64135789146927437E18,\r\n                                                          false,\r\n                                                          -1.58947956010716339E18\r\n                                                        ],\r\n                                                        \"䔎陹wxRI(㬮DᙜZޔg\\\\ꮣFn\": null,\r\n                                                        \"耲h인ss銴l꒮吀/n*얈ꑴG깺铀$ㅁ:nCRg?䕠櫧5ᇯn,8k报\": [\r\n                                                          -1.5756711522822317E-19,\r\n                                                          null,\r\n                                                          true,\r\n                                                          2381298482369133961,\r\n                                                          true,\r\n                                                          \"뷁(䴙v꣨灐턏绵色ϵRᆺqu8\",\r\n                                                          \",?졗N潦䦎kႣꝺ6qࡢ褏俾㐔ⓐt춐\\u0018yऍ괂Z~Ꝅ쓩bi꩑廙္弢w\",\r\n                                                          false,\r\n                                                          null,\r\n                                                          -1.87576756788648346E18,\r\n                                                          false,\r\n                                                          \"!$v섣z퍤h諜훋墚n+픔哚夌嶫熀k\\u2035|emwᮤ楒⥚靇59ዻ垼O{赪&BጔV8ለ\\u001f鬯&10Yo<眏i軭R#|N눘ݝ埽sᖁ뒲惩썺䢘ꗽ\",\r\n                                                          3.7495383966593843E18,\r\n                                                          -8152688414238192649,\r\n                                                          4.4553966517615565E18,\r\n                                                          6801966390429749854,\r\n                                                          \"sE痠A敜似湀㖧h)M茶햇엸ೊ漻嚅B.,QὈ\",\r\n                                                          7421118836019838086,\r\n                                                          6016991620768760435,\r\n                                                          8222644095781669450\r\n                                                        ],\r\n                                                        \"ꁲX᪯␮ⴾ<?%_욅)P!赁5E濡ꖇ⪟\": {\r\n                                                          \"\": \"ꞃ-暴ꎐ\\f᷇Mo3쯟d竤r䌼X錘K冁/꿣睜ﵕcw濪?l큈+含秙aᩭTⴖ\\\\p^髼䯔羅?孯㴔.{㚦尉谟'調퓒a梛\",\r\n                                                          \"S瞻5kꏐb㛽\\u0001n쏢簭繵皪櫆ⶺ䁍洛1큟7/䏢硥6⊓鲢取H谐>夨騊䞷Y叮?C0)T勍d2_觩𥉉F﬉궲ቈ棏R}(滢X件琻ꛢ敀/慢痀\": true,\r\n                                                          \"U0g㸲1gwsv+Rw힄g⒔䩏૾V갭䇉夥!郌巷\": -7.756163242997935E-20,\r\n                                                          \"h鷭tSaM=2잦R蘝 ﺻy籨]F羮'刲{\": -4.5481229486362112E17,\r\n                                                          \"ᨯxgt-⺌4,H룸\": null,\r\n                                                          \"挌v6榋㴓nL鐻়Ovￃ핌<\\/\\\"7㋛N>#Cf?jꞒH奄.라S0쵊%䟲I⛌⎖ꮕ!萚걜?-\\\"2]K쉃b볈' \": 4409753497332013536,\r\n                                                          \"躙 U럦Zm䗟E<푗㷵.xᐗᢧ6{田\": 1638922402214864983,\r\n                                                          \"ﳸdj새gK仾y↷伙糩劺㞐y!V+a쩦諤ႪA\": -8.756372049776539E-20\r\n                                                        },\r\n                                                        \"A䋞暺䠿쉺ᗻꪱ懙\\\"g뫪ᆰuK-F혫6<肊饲\\\"囯z?⬚觷ፆ巪U\\\\e$K*g墼[仃.vL]+\\u0002i\\u001b瑮{ꀹ䐤쑞\": -7881524872223257158\r\n                                                      }\r\n                                                    ]\r\n                                                  ]\r\n                                                ]\r\n                                              }]},\r\n                                              \"\\b໧x엞~P$Bꔿ搯藡d,P劯?zy怮吲닷\\u20eb豏]⪄\": -2.8697624437675264E18,\r\n                                              \"6錑\\\"䲕楽\\\\傰䉢ꮞR袉沵黺-un뙍(\": \"_壵S䟞*읱ຍ0h궣3귀p!K螿뱓#Y픦翧B픙3,PQ5j3愈d\",\r\n                                              \"=9s?熸龛74ఱ:V,㨤C쵇⟼-聱ꡱD,떤狆*Rꗉ8X0fYW+ɴq烬ᑀL`䶲\": \"⑎gㆥ\\u000eꃀ5K蒍+}xi\\\\c輈AھL㥀儆儢)뙏?⫒xB7iਡ觳᳊☦?a閉ᖨxM糲ľ껨Ua뽏wM綧F\\\"]^dɶ^骛q~z&{䈶\",\r\n                                              \">\\\\>kﳙ那=q2⽩?WD\": -3.206427086033749E18,\r\n                                              \"೑->瓊員ꮤⓗm嚞{[cᩋ蝹&^_= 俴懬S깓䙌\\\"耽A䃌ยtԆH柳揮ᑲ눜鵅+뼺ꫤ븨꽤:㛔7?n4Fq>Ά6\": null,\r\n                                              \"ẞ:O㺄Vi⇆V柨ay擅O%p쁠뫪b hi?韬k)웜촃᳤ d畑g疱=솵瞦\\\"耽꤄)迌>*뺤f|嬾딳悂狺4jzSꡮtL訒dx;铖㴝ඪЅi伒兺l踥葊踳/\": \"_]0r仧ற0'`❼汭藛ꦛ~3'ㅟ觮韛wj5k䝆-ℏ끸\\u0017C铫甚푦婛鄡3戞鮔⹀/凸5++Fꣁy`^ᰐ.㻻\",\r\n                                              \"渌ꛏnu⟅^Q⇚쳰z~P蟨Vꬭ쉋쪃dరc馻:ᲇ㦻PႵꫤ(N섻ᚔ[zy伾e(男줘궇4堥n껹\\\\녊+\": 1063518045931682295\r\n                                            },\r\n                                            \"e欻䘗ṛ斍禾_쏀Ź¨\\u0004窈머R蚠Cᦧ᭫bߤ꒺X_츼崨법-5aq쨈{%V੔♦f?遱\": \"⍰䘂逝垀=5+P&略Ϋ랰k▍ၡ혰̴Rꌇ㔗ᆶ3䧻駔$X5䟊㨨]䩱+\\u001e6隍q\\\"읾ℝ暑Y龿ﳴ藻 흜|L淽懭Onꜥ펋?卵♖㎀UsFG:3ራ\",\r\n                                            \"z=⻭儼R욍ϥ,\\bs?i%፣력ND⟅B앨㽌?彍oJ㘈㊚鳻ꃴ:NN鹻\": null,\r\n                                            \"|F拂⪗ꇰ城ꗔ䍗\\\"p扈sKs\\\\p7ᒜ倨$Sꤡ~㲃K黂l~F苓f\\u001b䇤΋墶C쉷㻒;<跅\": null,\r\n                                            \"䘢⻑鯸辴沙葉荱㌄,6ᯠy侢ഃ㡻뚈o\\\"(S㲵#ᛗO삘⢫I⪮戰?lⲘK0砀剰?坈菟Oꑫ=Ey\": 7722012752307158822,\r\n                                            \"肮ᮙ;윇竿D2}!雖랟L電U4_࠲}^\\u001eL堁<\\/lN\": false,\r\n                                            \"빴㾟2޳Mṙ쐤V⌧`탖nx跽얹嘳Y^缐-惟qᘴ⨸픚눮⮅∲$5ꕝL걠P]N≠vjj/b耠Y\\\"w䠊\\\\姭ၐ!_a\": -4.714003297315466E-20,\r\n                                            \"D`㑵\\\">e뤎죏e&烠d6鰯㚛g99䌿\\\\/ꮼ Gds瑚s\\\\m鹮佢r皙赚F쨘暛貿ზl6㝒/l\\\"躝駾~%'歅CCᾨ⋥싡Y}^댧g3飖쟳띅zjD\": -929362674900016558\r\n                                          },\r\n                                          \"똈tP嚴⮉is彜縆앶\\\\征E騮㣆\\\\#ot⢒h귳G颎,磝?I冢䲺jsSl U帇j>(u{ꁒTJ:櫔飔\": null\r\n                                        }\r\n                                      ],\r\n                                      \"䙔稦Hｲ䪉⾳혹F6KEꚰ\\\"ጦ}ힲUພ㻄涻䗡)䚗b$6/윪⠈c䐵g߈n?괲t.m.NTQ*<\\/l䄂\": -1.3932418031698072E-19\r\n                                    }\r\n                                  ],\r\n                                  \"}X#⍈爓 甉p༙圠爪K쭨뻸{訨h㿥\": \"函;l好셺P疾EWU?❵喟ag鸃ᚨҗv; OR]@줛푃铡ZYq炫ᡍ$㷿搼錎筻̉]\",\r\n                                  \"∔0ᙔk`벒㘉3\\u0010P璍A鰭s땶㩵늛͂蜷๕幺<\\/鎁u饪uǛ,钆{蛫9h$_헥MOᓁ譍뱅혼㟽嚅\": false\r\n                                }]]\r\n                              ]\r\n                            ]\r\n                          ]}}\r\n                        ],\r\n                        \"?Ay鼧Ɵu璴螆欁b멙QeC蓵GoaC䄢?徲~\\\"`䧻IＵTJr軴.芯kッj낹H﫡D潂>\\u203d;织鴖媮箸뗁ෳ\": null,\r\n                        \"喫U`沃蕗I㺐jⲢjSⲈ6꽑鄋W꺘e䌂a惮l8/|⍬끹q!~봛S岡䓘焑㷑碚໛2/l\\\\,쨢X\\\"ᜀr?쵲O쩖I䄶\\\"倘\": 5.6345066866268365E17\r\n                      },\r\n                      \"^㱆⓵W≕-Q^ELC쉶s׈ʓN櫴Jⲧ틳s5'⩤Oxᢃ穛濪Vk뒾M㯌ꌨelf䳶L蚂g셏q7,끱骐$a\\\"堝蔗2ꈷⰔꀔ09䏺N啷\\\\뎳i䦲0T{O\": 1.3448670414626074E-18,\r\n                      \"䞡)_KwX岲鳴ు:bjrVD털Ṏ渧z.翵WF褃5ᖸ\\u0005㣐᧻-x姖\\\\>⨷爵E墿媷ꋍ抻U䳀l9a+\": 1.4420569452141686E-19,\r\n                      \"싌DKe\\\\澓\\u0007a9>~\\\\OJ4G澗ꐙo紏昋-궤⨿#᠒ﺍᆡ_藝G]䆝Zﭛ\": 3992479325144108150\r\n                    }\r\n                  ]],\r\n                  \"万1?שּׁ歕䁢飘R_Z൤?䜗룷3㖄'䵖狴ZK\": -4983820855871697443,\r\n                  \"쭝ꉒ?᥁Y]匬\\\"\\u0006wꤕ[M@Q7\": null,\r\n                  \"ﲫNw❤d즲c엓%뻯*i䲋啷$X|h㨗菹ꇿ&存䆩뀡됱%\\\"\\u0014Q䷦C؞&ꊪ?匿ag줦q鸓㋈댶9^*9鵩A醧?[ⵡ%)毑Bﲯ䛳J凨迢칃鉄]컼婸⌛@\": -1.6088830691718594E-19\r\n                }],\r\n                \"ⴧ磫V^ꣃ9Ri\\\\-m瀐Rꂁ瘷됬࿱-ㄷ!隒c䅁~ⷮ⊕C%W澞ᕮ酪=/BݸIOￂ\\\\h%W?N$\\u0005\": 3.6070410580454067E18,\r\n                \"醚X6苋%J荲w?肒ᶵm;%ಷ_\\u00140-ΈᖔS1aM庣JL&?翁H\": \"쳕2\\r{? 凉㈗p祁]㒾컀ᐣ껞k⩬ⵣ{;<w됿⠑jdip/뉛㿿xK\\u0087鵞킉᪘室¥gQk\",\r\n                \"꛹᝔S]CR k,2B䑮䣁堠뭋7Q뚽∺⦭{#ឪ?<\\/旃뭶Q⳵1瘯ラY-뻜?㮜̝;aiᏥCy 鰐dzJ\\\"\\u0014\\\\S\\u001cw\\\\Qj$୕囑ꂋ\\\"詚떧4뵒\": null\r\n              }\r\n            },\r\n            \"傉㏕䪘:蕉엏៶뛘埠I4*쪌ᶼT삷ኲ1』^Z뵘梾傝瑌ⶕ#譥Ip䡿鈃csn%ws?ꀜ聺ソಳ禾?ᗹ呇뙹-膒uowhIY덶﹑\\f䎗ꑪ\\n|툘C\": 3.2146896313589828E16,\r\n            \"邊゙炁\\\\}ᑯ\\\\\\\\g``玨约<b澤ᮎz*䗽wC補*먀஘&0^Ⱑ$-⾂D}U㺟끳?ﵚ㚤ᵪ斆赢sr롔O駯\": false\r\n          }}\r\n        }]\r\n      ]\r\n    ],\r\n    \"{ꈿꔪe욅裈/r鄍O\\u0019伐)쌫搙ꉺesx\\u0017ω00:鄚O0mHzꅂE`아묅⍥ﰼP㊗'嵪Ym롧偊9uq!?P\": -6802574659895980496\r\n  },\r\n  \"bw>3\": \"ଗ혝ɗ$[䷠彫9ዴE?箙ꚅぇpm\\\"[䰤'q⭯j'Kᮓ3ꭧ+艋H斦l`雏U폅Ṻ餃Q撠䴈﵉f?濹昗'ᣴﭚ䏊P2s<ޭ츳ⱖ&|T㔈/Uw\"\r\n}}]"
  },
  {
    "path": "src/test/resources/json/Bug_for_sanxiao.json",
    "content": "{\n  \"passengerSegmentItems\": [\n    {\n      \"rawAttributes\": {\n        \"originPrice\": \"43200\"\n      },\n      \"segment\": {\n        \"agentId\": 1428,\n      }\n    }\n  ],\n  \"segments\": [\n    {\n      \"$ref\": \"$.passengerSegmentItems[0].segment\"\n    }\n  ]\n}"
  },
  {
    "path": "src/test/resources/json/Issue408.json",
    "content": "{\n  \"@type\": \"com.alibaba.json.bvt.bug.Issue408$VOList\",\n  \"longid0\": 1234567890123,\n  \"longid1\": 1234567890123,\n  \"volist\": [\n    {\n      \"@type\": \"com.alibaba.json.bvt.bug.Issue408$VO\",\n      \"longid0\": 1234567890123,\n      \"longid1\": 1234567890123,\n      \"longid2\": 1234567890123,\n      \"longid3\": 1234567890123,\n      \"longid4\": 1234567890123,\n      \"longid5\": 1234567890123,\n      \"longid6\": 1234567890123,\n      \"longid7\": 1234567890123,\n      \"longid8\": 1234567890123,\n      \"longid9\": 1234567890123,\n      \"longid10\": 1234567890123,\n      \"longid11\": 1234567890123,\n      \"longid12\": 1234567890123,\n      \"longid13\": 1234567890123,\n      \"longid14\": 1234567890123,\n      \"longid15\": 1234567890123,\n      \"longid16\": 1234567890123,\n      \"longid17\": 1234567890123,\n      \"longid18\": 1234567890123,\n      \"longid19\": 1234567890123\n    },\n    {\n      \"@type\": \"com.alibaba.json.bvt.bug.Issue408$VO\",\n      \"longid0\": 1234567890123,\n      \"longid1\": 1234567890123,\n      \"longid2\": 1234567890123,\n      \"longid3\": 1234567890123,\n      \"longid4\": 1234567890123,\n      \"longid5\": 1234567890123,\n      \"longid6\": 1234567890123,\n      \"longid7\": 1234567890123,\n      \"longid8\": 1234567890123,\n      \"longid9\": 1234567890123,\n      \"longid10\": 1234567890123,\n      \"longid11\": 1234567890123,\n      \"longid12\": 1234567890123,\n      \"longid13\": 1234567890123,\n      \"longid14\": 1234567890123,\n      \"longid15\": 1234567890123,\n      \"longid16\": 1234567890123,\n      \"longid17\": 1234567890123,\n      \"longid18\": 1234567890123,\n      \"longid19\": 1234567890123\n    },\n    {\n      \"@type\": \"com.alibaba.json.bvt.bug.Issue408$VO\",\n      \"longid0\": 1234567890123,\n      \"longid1\": 1234567890123,\n      \"longid2\": 1234567890123,\n      \"longid3\": 1234567890123,\n      \"longid4\": 1234567890123,\n      \"longid5\": 1234567890123,\n      \"longid6\": 1234567890123,\n      \"longid7\": 1234567890123,\n      \"longid8\": 1234567890123,\n      \"longid9\": 1234567890123,\n      \"longid10\": 1234567890123,\n      \"longid11\": 1234567890123,\n      \"longid12\": 1234567890123,\n      \"longid13\": 1234567890123,\n      \"longid14\": 1234567890123,\n      \"longid15\": 1234567890123,\n      \"longid16\": 1234567890123,\n      \"longid17\": 1234567890123,\n      \"longid18\": 1234567890123,\n      \"longid19\": 1234567890123\n    },\n    {\n      \"@type\": \"com.alibaba.json.bvt.bug.Issue408$VO\",\n      \"longid0\": 1234567890123,\n      \"longid1\": 1234567890123,\n      \"longid2\": 1234567890123,\n      \"longid3\": 1234567890123,\n      \"longid4\": 1234567890123,\n      \"longid5\": 1234567890123,\n      \"longid6\": 1234567890123,\n      \"longid7\": 1234567890123,\n      \"longid8\": 1234567890123,\n      \"longid9\": 1234567890123,\n      \"longid10\": 1234567890123,\n      \"longid11\": 1234567890123,\n      \"longid12\": 1234567890123,\n      \"longid13\": 1234567890123,\n      \"longid14\": 1234567890123,\n      \"longid15\": 1234567890123,\n      \"longid16\": 1234567890123,\n      \"longid17\": 1234567890123,\n      \"longid18\": 1234567890123,\n      \"longid19\": 1234567890123\n    },\n    {\n      \"@type\": \"com.alibaba.json.bvt.bug.Issue408$VO\",\n      \"longid0\": 1234567890123,\n      \"longid1\": 1234567890123,\n      \"longid2\": 1234567890123,\n      \"longid3\": 1234567890123,\n      \"longid4\": 1234567890123,\n      \"longid5\": 1234567890123,\n      \"longid6\": 1234567890123,\n      \"longid7\": 1234567890123,\n      \"longid8\": 1234567890123,\n      \"longid9\": 1234567890123,\n      \"longid10\": 1234567890123,\n      \"longid11\": 1234567890123,\n      \"longid12\": 1234567890123,\n      \"longid13\": 1234567890123,\n      \"longid14\": 1234567890123,\n      \"longid15\": 1234567890123,\n      \"longid16\": 1234567890123,\n      \"longid17\": 1234567890123,\n      \"longid18\": 1234567890123,\n      \"longid19\": 1234567890123\n    },\n    {\n      \"@type\": \"com.alibaba.json.bvt.bug.Issue408$VO\",\n      \"longid0\": 1234567890123,\n      \"longid1\": 1234567890123,\n      \"longid2\": 1234567890123,\n      \"longid3\": 1234567890123,\n      \"longid4\": 1234567890123,\n      \"longid5\": 1234567890123,\n      \"longid6\": 1234567890123,\n      \"longid7\": 1234567890123,\n      \"longid8\": 1234567890123,\n      \"longid9\": 1234567890123,\n      \"longid10\": 1234567890123,\n      \"longid11\": 1234567890123,\n      \"longid12\": 1234567890123,\n      \"longid13\": 1234567890123,\n      \"longid14\": 1234567890123,\n      \"longid15\": 1234567890123,\n      \"longid16\": 1234567890123,\n      \"longid17\": 1234567890123,\n      \"longid18\": 1234567890123,\n      \"longid19\": 1234567890123\n    },\n    {\n      \"@type\": \"com.alibaba.json.bvt.bug.Issue408$VO\",\n      \"longid0\": 1234567890123,\n      \"longid1\": 1234567890123,\n      \"longid2\": 1234567890123,\n      \"longid3\": 1234567890123,\n      \"longid4\": 1234567890123,\n      \"longid5\": 1234567890123,\n      \"longid6\": 1234567890123,\n      \"longid7\": 1234567890123,\n      \"longid8\": 1234567890123,\n      \"longid9\": 1234567890123,\n      \"longid10\": 1234567890123,\n      \"longid11\": 1234567890123,\n      \"longid12\": 1234567890123,\n      \"longid13\": 1234567890123,\n      \"longid14\": 1234567890123,\n      \"longid15\": 1234567890123,\n      \"longid16\": 1234567890123,\n      \"longid17\": 1234567890123,\n      \"longid18\": 1234567890123,\n      \"longid19\": 1234567890123\n    },\n    {\n      \"@type\": \"com.alibaba.json.bvt.bug.Issue408$VO\",\n      \"longid0\": 1234567890123,\n      \"longid1\": 1234567890123,\n      \"longid2\": 1234567890123,\n      \"longid3\": 1234567890123,\n      \"longid4\": 1234567890123,\n      \"longid5\": 1234567890123,\n      \"longid6\": 1234567890123,\n      \"longid7\": 1234567890123,\n      \"longid8\": 1234567890123,\n      \"longid9\": 1234567890123,\n      \"longid10\": 1234567890123,\n      \"longid11\": 1234567890123,\n      \"longid12\": 1234567890123,\n      \"longid13\": 1234567890123,\n      \"longid14\": 1234567890123,\n      \"longid15\": 1234567890123,\n      \"longid16\": 1234567890123,\n      \"longid17\": 1234567890123,\n      \"longid18\": 1234567890123,\n      \"longid19\": 1234567890123\n    },\n    {\n      \"@type\": \"com.alibaba.json.bvt.bug.Issue408$VO\",\n      \"longid0\": 1234567890123,\n      \"longid1\": 1234567890123,\n      \"longid2\": 1234567890123,\n      \"longid3\": 1234567890123,\n      \"longid4\": 1234567890123,\n      \"longid5\": 1234567890123,\n      \"longid6\": 1234567890123,\n      \"longid7\": 1234567890123,\n      \"longid8\": 1234567890123,\n      \"longid9\": 1234567890123,\n      \"longid10\": 1234567890123,\n      \"longid11\": 1234567890123,\n      \"longid12\": 1234567890123,\n      \"longid13\": 1234567890123,\n      \"longid14\": 1234567890123,\n      \"longid15\": 1234567890123,\n      \"longid16\": 1234567890123,\n      \"longid17\": 1234567890123,\n      \"longid18\": 1234567890123,\n      \"longid19\": 1234567890123\n    },\n    {\n      \"@type\": \"com.alibaba.json.bvt.bug.Issue408$VO\",\n      \"longid0\": 1234567890123,\n      \"longid1\": 1234567890123,\n      \"longid2\": 1234567890123,\n      \"longid3\": 1234567890123,\n      \"longid4\": 1234567890123,\n      \"longid5\": 1234567890123,\n      \"longid6\": 1234567890123,\n      \"longid7\": 1234567890123,\n      \"longid8\": 1234567890123,\n      \"longid9\": 1234567890123,\n      \"longid10\": 1234567890123,\n      \"longid11\": 1234567890123,\n      \"longid12\": 1234567890123,\n      \"longid13\": 1234567890123,\n      \"longid14\": 1234567890123,\n      \"longid15\": 1234567890123,\n      \"longid16\": 1234567890123,\n      \"longid17\": 1234567890123,\n      \"longid18\": 1234567890123,\n      \"longid19\": 1234567890123\n    },\n    {\n      \"@type\": \"com.alibaba.json.bvt.bug.Issue408$VO\",\n      \"longid0\": 1234567890123,\n      \"longid1\": 1234567890123,\n      \"longid2\": 1234567890123,\n      \"longid3\": 1234567890123,\n      \"longid4\": 1234567890123,\n      \"longid5\": 1234567890123,\n      \"longid6\": 1234567890123,\n      \"longid7\": 1234567890123,\n      \"longid8\": 1234567890123,\n      \"longid9\": 1234567890123,\n      \"longid10\": 1234567890123,\n      \"longid11\": 1234567890123,\n      \"longid12\": 1234567890123,\n      \"longid13\": 1234567890123,\n      \"longid14\": 1234567890123,\n      \"longid15\": 1234567890123,\n      \"longid16\": 1234567890123,\n      \"longid17\": 1234567890123,\n      \"longid18\": 1234567890123,\n      \"longid19\": 1234567890123\n    },\n    {\n      \"@type\": \"com.alibaba.json.bvt.bug.Issue408$VO\",\n      \"longid0\": 1234567890123,\n      \"longid1\": 1234567890123,\n      \"longid2\": 1234567890123,\n      \"longid3\": 1234567890123,\n      \"longid4\": 1234567890123,\n      \"longid5\": 1234567890123,\n      \"longid6\": 1234567890123,\n      \"longid7\": 1234567890123,\n      \"longid8\": 1234567890123,\n      \"longid9\": 1234567890123,\n      \"longid10\": 1234567890123,\n      \"longid11\": 1234567890123,\n      \"longid12\": 1234567890123,\n      \"longid13\": 1234567890123,\n      \"longid14\": 1234567890123,\n      \"longid15\": 1234567890123,\n      \"longid16\": 1234567890123,\n      \"longid17\": 1234567890123,\n      \"longid18\": 1234567890123,\n      \"longid19\": 1234567890123\n    },\n    {\n      \"@type\": \"com.alibaba.json.bvt.bug.Issue408$VO\",\n      \"longid0\": 1234567890123,\n      \"longid1\": 1234567890123,\n      \"longid2\": 1234567890123,\n      \"longid3\": 1234567890123,\n      \"longid4\": 1234567890123,\n      \"longid5\": 1234567890123,\n      \"longid6\": 1234567890123,\n      \"longid7\": 1234567890123,\n      \"longid8\": 1234567890123,\n      \"longid9\": 1234567890123,\n      \"longid10\": 1234567890123,\n      \"longid11\": 1234567890123,\n      \"longid12\": 1234567890123,\n      \"longid13\": 1234567890123,\n      \"longid14\": 1234567890123,\n      \"longid15\": 1234567890123,\n      \"longid16\": 1234567890123,\n      \"longid17\": 1234567890123,\n      \"longid18\": 1234567890123,\n      \"longid19\": 1234567890123\n    },\n    {\n      \"@type\": \"com.alibaba.json.bvt.bug.Issue408$VO\",\n      \"longid0\": 1234567890123,\n      \"longid1\": 1234567890123,\n      \"longid2\": 1234567890123,\n      \"longid3\": 1234567890123,\n      \"longid4\": 1234567890123,\n      \"longid5\": 1234567890123,\n      \"longid6\": 1234567890123,\n      \"longid7\": 1234567890123,\n      \"longid8\": 1234567890123,\n      \"longid9\": 1234567890123,\n      \"longid10\": 1234567890123,\n      \"longid11\": 1234567890123,\n      \"longid12\": 1234567890123,\n      \"longid13\": 1234567890123,\n      \"longid14\": 1234567890123,\n      \"longid15\": 1234567890123,\n      \"longid16\": 1234567890123,\n      \"longid17\": 1234567890123,\n      \"longid18\": 1234567890123,\n      \"longid19\": 1234567890123\n    },\n    {\n      \"@type\": \"com.alibaba.json.bvt.bug.Issue408$VO\",\n      \"longid0\": 1234567890123,\n      \"longid1\": 1234567890123,\n      \"longid2\": 1234567890123,\n      \"longid3\": 1234567890123,\n      \"longid4\": 1234567890123,\n      \"longid5\": 1234567890123,\n      \"longid6\": 1234567890123,\n      \"longid7\": 1234567890123,\n      \"longid8\": 1234567890123,\n      \"longid9\": 1234567890123,\n      \"longid10\": 1234567890123,\n      \"longid11\": 1234567890123,\n      \"longid12\": 1234567890123,\n      \"longid13\": 1234567890123,\n      \"longid14\": 1234567890123,\n      \"longid15\": 1234567890123,\n      \"longid16\": 1234567890123,\n      \"longid17\": 1234567890123,\n      \"longid18\": 1234567890123,\n      \"longid19\": 1234567890123\n    },\n    {\n      \"@type\": \"com.alibaba.json.bvt.bug.Issue408$VO\",\n      \"longid0\": 1234567890123,\n      \"longid1\": 1234567890123,\n      \"longid2\": 1234567890123,\n      \"longid3\": 1234567890123,\n      \"longid4\": 1234567890123,\n      \"longid5\": 1234567890123,\n      \"longid6\": 1234567890123,\n      \"longid7\": 1234567890123,\n      \"longid8\": 1234567890123,\n      \"longid9\": 1234567890123,\n      \"longid10\": 1234567890123,\n      \"longid11\": 1234567890123,\n      \"longid12\": 1234567890123,\n      \"longid13\": 1234567890123,\n      \"longid14\": 1234567890123,\n      \"longid15\": 1234567890123,\n      \"longid16\": 1234567890123,\n      \"longid17\": 1234567890123,\n      \"longid18\": 1234567890123,\n      \"longid19\": 1234567890123\n    },\n    {\n      \"@type\": \"com.alibaba.json.bvt.bug.Issue408$VO\",\n      \"longid0\": 1234567890123,\n      \"longid1\": 1234567890123,\n      \"longid2\": 1234567890123,\n      \"longid3\": 1234567890123,\n      \"longid4\": 1234567890123,\n      \"longid5\": 1234567890123,\n      \"longid6\": 1234567890123,\n      \"longid7\": 1234567890123,\n      \"longid8\": 1234567890123,\n      \"longid9\": 1234567890123,\n      \"longid10\": 1234567890123,\n      \"longid11\": 1234567890123,\n      \"longid12\": 1234567890123,\n      \"longid13\": 1234567890123,\n      \"longid14\": 1234567890123,\n      \"longid15\": 1234567890123,\n      \"longid16\": 1234567890123,\n      \"longid17\": 1234567890123,\n      \"longid18\": 1234567890123,\n      \"longid19\": 1234567890123\n    }\n  ]\n}"
  },
  {
    "path": "src/test/resources/json/a.js",
    "content": "{\r\n\t\"monitorItems\":\r\n\t\t[{\"opts\":[\"\"],\"oldId\":null,\"gmtCreate\":1291041445000,\"status\":null,\"targetId\":13491,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[{\"criticalExpression\":\"@MemoryHeapUsed>5000000000000000L\",\"warningExpressionDescription\":\"1\",\"monitorItemId\":134985,\"alarmInterval\":60,\"alarmReceivers\":[{\"id\":186982,\"isUpgrade\":\"n\",\"userId\":609247,\"receiveRuleId\":839375,\"alarmRuleId\":186981}],\"upgradeInterval\":60,\"id\":186981,\"content\":\" lllll00000111111\",\"priority\":\"n\",\"name\":\"yyyy\",\"warningExpression\":\"@MemoryHeapUsed>1000000000000000L\",\"criticalExpressionDescription\":\"1\",\"alarmCount\":5,\"notifyOk\":\"y\"},{\"criticalExpression\":\"@MemoryHeapUsed>500000000000000L\",\"warningExpressionDescription\":\"\",\"monitorItemId\":134985,\"alarmInterval\":300,\"alarmReceivers\":[{\"id\":186984,\"isUpgrade\":\"n\",\"userId\":609247,\"receiveRuleId\":839375,\"alarmRuleId\":186983}],\"upgradeInterval\":60,\"id\":186983,\"content\":\"qq\",\"priority\":\"n\",\"name\":\"qq3qq\",\"warningExpression\":\"@MemoryHeapUsed>100000000000000L\",\"criticalExpressionDescription\":\"\",\"alarmCount\":3,\"notifyOk\":\"y\"}],\"endTime\":1293258958000,\"type\":\"a\",\"monitorItemTypeId\":2,\"startTime\":1291098956000,\"id\":134985,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=Memory(\\\"MemoryHeapCommitted\\\", \\\"MemoryHeapUsed\\\", \\\"MemoryNonHeapCommitted\\\", \\\"MemoryNonHeapUsed\\\", \\\"UsedPhysicalMemorySize\\\", \\\"TotalPhysicalMemorySize\\\", \\\"UsedSwapSpaceSize\\\", \\\"TotalSwapSpaceSize\\\")\",\"scheduleTimeout\":5,\"description\":\"desc\",\"name\":\"jvm_memory\",\"scheduleIntervalAlarm\":30,\"locked\":\"n\",\"targetType\":\"a\",\"scheduleInterval\":60},{\"opts\":[],\"oldId\":null,\"gmtCreate\":1289484086000,\"status\":null,\"targetId\":23911,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[],\"type\":\"a\",\"monitorItemTypeId\":1,\"id\":26945,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=Threading(\\\"DaemonThreadCount\\\", \\\"ThreadCount\\\", \\\"NewThreadCount\\\", \\\"RunnableThreadCount\\\", \\\"BlockedThreadCount\\\", \\\"WaitingThreadCount\\\", \\\"TimedWaitingThreadCount\\\", \\\"TeminatedThreadCount\\\", \\\"DeadLockedThreadCount\\\", \\\"TotalStartedThreadCount\\\", \\\"ProcessCpuTimeRate\\\", \\\"FullGCCollectionTimeRate\\\")\",\"scheduleTimeout\":5,\"description\":\"jvm_threading\",\"name\":\"jvm_threading\",\"scheduleIntervalAlarm\":60,\"locked\":\"n\",\"targetType\":\"a\",\"scheduleInterval\":300},{\"opts\":[\"reset=true\"],\"oldId\":null,\"gmtCreate\":1293043940000,\"status\":null,\"targetId\":3,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[{\"criticalExpression\":\"@Count>20\",\"warningExpressionDescription\":\"This is early warning\",\"monitorItemId\":2,\"alarmInterval\":5,\"alarmReceivers\":[{\"id\":1,\"isUpgrade\":\"n\",\"userId\":101,\"receiveRuleId\":null,\"alarmRuleId\":1},{\"id\":2,\"isUpgrade\":\"y\",\"userId\":102,\"receiveRuleId\":null,\"alarmRuleId\":1}],\"upgradeInterval\":60,\"id\":1,\"content\":\"This is the alram message\",\"priority\":\"n\",\"name\":\"TestRule015\",\"warningExpression\":\"@Count>10\",\"criticalExpressionDescription\":\"This is warning\",\"alarmCount\":2,\"notifyOk\":\"y\"}],\"endTime\":1293130340000,\"type\":\"a\",\"monitorItemTypeId\":5,\"startTime\":1292957540000,\"id\":2,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=Exception(\\\"ErrorList\\\")\",\"scheduleTimeout\":5,\"description\":\"exception\",\"name\":\"exception\",\"scheduleIntervalAlarm\":60,\"locked\":\"y\",\"targetType\":\"a\",\"scheduleInterval\":300},{\"opts\":[],\"oldId\":null,\"gmtCreate\":1290004798000,\"status\":null,\"targetId\":23910,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[],\"endTime\":1293679862000,\"type\":\"a\",\"monitorItemTypeId\":1,\"startTime\":1291347060000,\"id\":609351,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=Threading(\\\"DaemonThreadCount\\\", \\\"ThreadCount\\\", \\\"NewThreadCount\\\", \\\"RunnableThreadCount\\\", \\\"BlockedThreadCount\\\", \\\"WaitingThreadCount\\\", \\\"TimedWaitingThreadCount\\\", \\\"TeminatedThreadCount\\\", \\\"DeadLockedThreadCount\\\", \\\"TotalStartedThreadCount\\\", \\\"ProcessCpuTimeRate\\\", \\\"FullGCCollectionTimeRate\\\")\",\"scheduleTimeout\":5,\"description\":\"jvm_threading\",\"name\":\"jvm_threading\",\"scheduleIntervalAlarm\":60,\"locked\":\"n\",\"targetType\":\"a\",\"scheduleInterval\":300},{\"opts\":[],\"oldId\":null,\"gmtCreate\":1289246125000,\"status\":null,\"targetId\":691,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[{\"criticalExpression\":\"@ProcessCpuTimeRate>=0\",\"warningExpressionDescription\":\"\",\"monitorItemId\":6923,\"alarmInterval\":60,\"alarmReceivers\":[{\"id\":1549131,\"isUpgrade\":\"n\",\"userId\":1,\"receiveRuleId\":null,\"alarmRuleId\":1549130}],\"upgradeInterval\":300,\"id\":1549130,\"content\":\"cr=waring\",\"priority\":\"n\",\"name\":\"dragoon\",\"warningExpression\":\"@ProcessCpuTimeRate>=0\",\"criticalExpressionDescription\":\"\",\"alarmCount\":3,\"notifyOk\":\"y\"}],\"endTime\":1320152730000,\"type\":\"a\",\"monitorItemTypeId\":1,\"startTime\":1288612476000,\"id\":6923,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=Threading(\\\"DaemonThreadCount\\\", \\\"ThreadCount\\\", \\\"NewThreadCount\\\", \\\"RunnableThreadCount\\\", \\\"BlockedThreadCount\\\", \\\"WaitingThreadCount\\\", \\\"TimedWaitingThreadCount\\\", \\\"TeminatedThreadCount\\\", \\\"DeadLockedThreadCount\\\", \\\"TotalStartedThreadCount\\\", \\\"ProcessCpuTimeRate\\\", \\\"FullGCCollectionTimeRate\\\")\",\"scheduleTimeout\":5,\"description\":\"jvm_threading\",\"name\":\"jvm_threading\",\"scheduleIntervalAlarm\":60,\"locked\":\"y\",\"targetType\":\"a\",\"scheduleInterval\":60},\r\n\t\t \r\n\t\t {\"opts\":[\"reset=true\"],\"oldId\":null,\r\n\t\t\t\"gmtCreate\":1293043660000,\"status\":null,\"targetId\":3,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[],\r\n\t\t\t\"endTime\":1293130060000,\"type\":\"a\",\"monitorItemTypeId\":1,\"startTime\":1292957260000,\"id\":14,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=Threading(\\\"DaemonThreadCount\\\", \\\"ThreadCount\\\", \\\"NewThreadCount\\\", \\\"RunnableThreadCount\\\", \\\"BlockedThreadCount\\\", \\\"WaitingThreadCount\\\", \\\"TimedWaitingThreadCount\\\", \\\"TeminatedThreadCount\\\", \\\"DeadLockedThreadCount\\\", \\\"TotalStartedThreadCount\\\", \\\"ProcessCpuTimeRate\\\", \\\"FullGCCollectionTimeRate\\\")\",\"scheduleTimeout\":5,\"description\":\"jvm_memory\",\"name\":\"jvm_memory\",\"scheduleIntervalAlarm\":60,\"locked\":\"y\",\"targetType\":\"a\",\"scheduleInterval\":300},{\"opts\":[],\"oldId\":null,\"gmtCreate\":1289484086000,\"status\":null,\"targetId\":23911,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[{\"criticalExpression\":\"@MemoryHeapUsed>100000000000000L\",\"warningExpressionDescription\":\"111\",\"monitorItemId\":26961,\"alarmInterval\":80,\"alarmReceivers\":[{\"id\":1349244,\"isUpgrade\":\"n\",\"userId\":609247,\"receiveRuleId\":839375,\"alarmRuleId\":1349243}],\"upgradeInterval\":100,\"id\":1349243,\"content\":\"������\",\"priority\":\"n\",\"name\":\"MEM\",\"warningExpression\":\"@MemoryHeapUsed>0\",\"criticalExpressionDescription\":\"111\",\"alarmCount\":3,\"notifyOk\":\"y\"}],\"endTime\":1291087377000,\"type\":\"a\",\"monitorItemTypeId\":2,\"startTime\":1290396174000,\"id\":26961,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=Memory(\\\"MemoryHeapCommitted\\\", \\\"MemoryHeapUsed\\\", \\\"MemoryNonHeapCommitted\\\", \\\"MemoryNonHeapUsed\\\", \\\"UsedPhysicalMemorySize\\\", \\\"TotalPhysicalMemorySize\\\", \\\"UsedSwapSpaceSize\\\", \\\"TotalSwapSpaceSize\\\")\",\"scheduleTimeout\":5,\"description\":\"desc1\",\"name\":\"jvm_memory\",\"scheduleIntervalAlarm\":60,\"locked\":\"n\",\"targetType\":\"a\",\"scheduleInterval\":60},{\"opts\":[\"\"],\"oldId\":null,\"gmtCreate\":1291547021000,\"status\":null,\"targetId\":23911,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[],\"type\":\"a\",\"monitorItemTypeId\":4,\"id\":166945,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=JVM(\\\"PID\\\", \\\"StartTime\\\", \\\"InputArguments\\\", \\\"Arch\\\", \\\"OSName\\\", \\\"OSVersion\\\", \\\"JVM\\\", \\\"JavaVersion\\\", \\\"JavaHome\\\", \\\"JavaLibraryPath\\\", \\\"JavaSpecificationVersion\\\", \\\"AvailableProcessors\\\", \\\"LoadedClassCount\\\", \\\"TotalLoadedClassCount\\\", \\\"UnloadedClassCount\\\", \\\"TotalCompilationTime\\\")\",\"scheduleTimeout\":5,\"description\":\"jvm_info\",\"name\":\"jvm_info\",\"scheduleIntervalAlarm\":30,\"locked\":\"n\",\"targetType\":\"a\",\"scheduleInterval\":300},{\"opts\":[],\"oldId\":null,\"gmtCreate\":1290004798000,\"status\":null,\"targetId\":23910,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[],\"type\":\"a\",\"monitorItemTypeId\":2,\"id\":609367,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=Memory(\\\"MemoryHeapCommitted\\\", \\\"MemoryHeapUsed\\\", \\\"MemoryNonHeapCommitted\\\", \\\"MemoryNonHeapUsed\\\", \\\"UsedPhysicalMemorySize\\\", \\\"TotalPhysicalMemorySize\\\", \\\"UsedSwapSpaceSize\\\", \\\"TotalSwapSpaceSize\\\")\",\"scheduleTimeout\":5,\"description\":\"desc1\",\"name\":\"jvm_memory\",\"scheduleIntervalAlarm\":60,\"locked\":\"n\",\"targetType\":\"a\",\"scheduleInterval\":300},{\"opts\":[],\"oldId\":null,\"gmtCreate\":1289484086000,\"status\":null,\"targetId\":23911,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[],\"endTime\":1291086872000,\"type\":\"a\",\"monitorItemTypeId\":3,\"startTime\":1290395668000,\"id\":26969,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=GC(\\\"PermGenUsed\\\", \\\"OldGenUsed\\\", \\\"EdenSpaceUsed\\\", \\\"SurvivorSpaceUsed\\\", \\\"FullGCCollectionCount\\\", \\\"FullGCCollectionTime\\\", \\\"YoungGCCollectionCount\\\", \\\"YoungGCCollectionTime\\\")\",\"scheduleTimeout\":5,\"description\":\"jvm_gc\",\"name\":\"jvm_gc\",\"scheduleIntervalAlarm\":60,\"locked\":\"n\",\"targetType\":\"a\",\"scheduleInterval\":300},{\"opts\":[\"reset=true\"],\"oldId\":null,\"gmtCreate\":1291039361000,\"status\":null,\"targetId\":13491,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[{\"criticalExpression\":\"@Count>8\",\"warningExpressionDescription\":\"\",\"monitorItemId\":13498,\"alarmInterval\":60,\"alarmReceivers\":[{\"id\":1869176,\"isUpgrade\":\"n\",\"userId\":609247,\"receiveRuleId\":839375,\"alarmRuleId\":1869175}],\"upgradeInterval\":60,\"id\":1869175,\"content\":\"count-----\",\"priority\":\"n\",\"name\":\"Count\",\"warningExpression\":\"@Count>3\",\"criticalExpressionDescription\":\"\",\"alarmCount\":5,\"notifyOk\":\"y\"}],\"type\":\"a\",\"monitorItemTypeId\":5,\"id\":13498,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=Exception(\\\"ErrorList\\\")\",\"scheduleTimeout\":5,\"description\":\"exception helloooo\",\"name\":\"exception\",\"scheduleIntervalAlarm\":15,\"locked\":\"n\",\"targetType\":\"a\",\"scheduleInterval\":60},{\"opts\":[],\"oldId\":null,\"gmtCreate\":1289246125000,\"status\":null,\"targetId\":691,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[],\"endTime\":1320152730000,\"type\":\"a\",\"monitorItemTypeId\":2,\"startTime\":1285934088000,\"id\":6939,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=Memory(\\\"MemoryHeapCommitted\\\", \\\"MemoryHeapUsed\\\", \\\"MemoryNonHeapCommitted\\\", \\\"MemoryNonHeapUsed\\\", \\\"UsedPhysicalMemorySize\\\", \\\"TotalPhysicalMemorySize\\\", \\\"UsedSwapSpaceSize\\\", \\\"TotalSwapSpaceSize\\\")\",\"scheduleTimeout\":5,\"description\":\"desc1\",\"name\":\"jvm_memory\",\"scheduleIntervalAlarm\":60,\"locked\":\"y\",\"targetType\":\"a\",\"scheduleInterval\":300},{\"opts\":[],\"oldId\":null,\"gmtCreate\":1290004798000,\"status\":null,\"targetId\":23910,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[],\"type\":\"a\",\"monitorItemTypeId\":3,\"id\":609375,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=GC(\\\"PermGenUsed\\\", \\\"OldGenUsed\\\", \\\"EdenSpaceUsed\\\", \\\"SurvivorSpaceUsed\\\", \\\"FullGCCollectionCount\\\", \\\"FullGCCollectionTime\\\", \\\"YoungGCCollectionCount\\\", \\\"YoungGCCollectionTime\\\")\",\"scheduleTimeout\":5,\"description\":\"jvm_gc\",\"name\":\"jvm_gc\",\"scheduleIntervalAlarm\":60,\"locked\":\"n\",\"targetType\":\"a\",\"scheduleInterval\":300},{\"opts\":[],\"oldId\":null,\"gmtCreate\":1289420051000,\"status\":null,\"targetId\":1920,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[],\"endTime\":1289477648000,\"type\":\"a\",\"monitorItemTypeId\":3,\"startTime\":1289477648000,\"id\":1894,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=GC(\\\"PermGenUsed\\\", \\\"OldGenUsed\\\", \\\"EdenSpaceUsed\\\", \\\"SurvivorSpaceUsed\\\", \\\"FullGCCollectionCount\\\", \\\"FullGCCollectionTime\\\", \\\"YoungGCCollectionCount\\\", \\\"YoungGCCollectionTime\\\")\",\"scheduleTimeout\":5,\"description\":\"<hr>\",\"name\":\"<hr>\",\"scheduleIntervalAlarm\":60,\"locked\":\"n\",\"targetType\":\"a\",\"scheduleInterval\":300},{\"opts\":[\"\"],\"oldId\":null,\"gmtCreate\":1291041532000,\"status\":null,\"targetId\":13491,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[{\"criticalExpression\":\"@FullGCCollectionCount>0\",\"warningExpressionDescription\":\"\",\"monitorItemId\":134998,\"alarmInterval\":90,\"alarmReceivers\":[{\"id\":188918,\"isUpgrade\":\"y\",\"userId\":609247,\"receiveRuleId\":839375,\"alarmRuleId\":188917},{\"id\":188919,\"isUpgrade\":\"n\",\"userId\":609247,\"receiveRuleId\":839375,\"alarmRuleId\":188917}],\"upgradeInterval\":60,\"id\":188917,\"content\":\"uuu\",\"priority\":\"n\",\"name\":\"uuu\",\"warningExpression\":\"@FullGCCollectionCount>0\",\"criticalExpressionDescription\":\"\",\"alarmCount\":5,\"notifyOk\":\"y\"},{\"criticalExpression\":\"@FullGCCollectionCount>0\",\"warningExpressionDescription\":\"\",\"monitorItemId\":134998,\"alarmInterval\":60,\"alarmReceivers\":[{\"id\":188921,\"isUpgrade\":\"n\",\"userId\":609247,\"receiveRuleId\":null,\"alarmRuleId\":188920}],\"upgradeInterval\":60,\"id\":188920,\"content\":\"1111\",\"priority\":\"n\",\"name\":\"www\",\"warningExpression\":\"@FullGCCollectionCount>0\",\"criticalExpressionDescription\":\"\",\"alarmCount\":5,\"notifyOk\":\"y\"}],\"endTime\":1291876672000,\"type\":\"a\",\"monitorItemTypeId\":3,\"startTime\":1291099070000,\"id\":134998,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=GC(\\\"PermGenUsed\\\", \\\"OldGenUsed\\\", \\\"EdenSpaceUsed\\\", \\\"SurvivorSpaceUsed\\\", \\\"FullGCCollectionCount\\\", \\\"FullGCCollectionTime\\\", \\\"YoungGCCollectionCount\\\", \\\"YoungGCCollectionTime\\\")\",\"scheduleTimeout\":5,\"description\":\"jvm_gc\",\"name\":\"jvm_gc\",\"scheduleIntervalAlarm\":59,\"locked\":\"n\",\"targetType\":\"a\",\"scheduleInterval\":60},{\"opts\":[\"reset=true\"],\"oldId\":null,\"gmtCreate\":1289484086000,\"status\":null,\"targetId\":23911,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[{\"criticalExpression\":\"@Count>20\",\"warningExpressionDescription\":\"11\",\"monitorItemId\":26983,\"alarmInterval\":80,\"alarmReceivers\":[{\"id\":1719290,\"isUpgrade\":\"n\",\"userId\":1,\"receiveRuleId\":null,\"alarmRuleId\":1719289},{\"id\":1719291,\"isUpgrade\":\"n\",\"userId\":609247,\"receiveRuleId\":null,\"alarmRuleId\":1719289}],\"upgradeInterval\":60,\"id\":1719289,\"content\":\"123\",\"priority\":\"n\",\"name\":\"exp\",\"warningExpression\":\"@Count>10\",\"criticalExpressionDescription\":\"22\",\"alarmCount\":2,\"notifyOk\":\"y\"}],\"endTime\":1291102935000,\"type\":\"a\",\"monitorItemTypeId\":5,\"startTime\":1291016533000,\"id\":26983,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=Exception(\\\"ErrorList\\\")\",\"scheduleTimeout\":5,\"description\":\"exception\",\"name\":\"exception\",\"scheduleIntervalAlarm\":50,\"locked\":\"n\",\"targetType\":\"a\",\"scheduleInterval\":60},{\"opts\":[],\"oldId\":null,\"gmtCreate\":1289246125000,\"status\":null,\"targetId\":691,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[],\"endTime\":1320152730000,\"type\":\"a\",\"monitorItemTypeId\":3,\"startTime\":1288612404000,\"id\":6947,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=GC(\\\"PermGenUsed\\\", \\\"OldGenUsed\\\", \\\"EdenSpaceUsed\\\", \\\"SurvivorSpaceUsed\\\", \\\"FullGCCollectionCount\\\", \\\"FullGCCollectionTime\\\", \\\"YoungGCCollectionCount\\\", \\\"YoungGCCollectionTime\\\")\",\"scheduleTimeout\":5,\"description\":\"jvm_gc\",\"name\":\"jvm_gc\",\"scheduleIntervalAlarm\":60,\"locked\":\"n\",\"targetType\":\"a\",\"scheduleInterval\":300},{\"opts\":[],\"oldId\":null,\"gmtCreate\":1289905202000,\"status\":null,\"targetId\":1920,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[],\"type\":\"a\",\"monitorItemTypeId\":1,\"id\":60955,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=Threading(\\\"DaemonThreadCount\\\", \\\"ThreadCount\\\", \\\"NewThreadCount\\\", \\\"RunnableThreadCount\\\", \\\"BlockedThreadCount\\\", \\\"WaitingThreadCount\\\", \\\"TimedWaitingThreadCount\\\", \\\"TeminatedThreadCount\\\", \\\"DeadLockedThreadCount\\\", \\\"TotalStartedThreadCount\\\", \\\"ProcessCpuTimeRate\\\", \\\"FullGCCollectionTimeRate\\\")\",\"scheduleTimeout\":5,\"description\":\"jvm_threading\",\"name\":\"jvm_threading\",\"scheduleIntervalAlarm\":60,\"locked\":\"n\",\"targetType\":\"a\",\"scheduleInterval\":300},{\"opts\":[],\"oldId\":null,\"gmtCreate\":1290004798000,\"status\":null,\"targetId\":23910,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[],\"type\":\"a\",\"monitorItemTypeId\":4,\"id\":609387,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=JVM(\\\"PID\\\", \\\"StartTime\\\", \\\"InputArguments\\\", \\\"Arch\\\", \\\"OSName\\\", \\\"OSVersion\\\", \\\"JVM\\\", \\\"JavaVersion\\\", \\\"JavaHome\\\", \\\"JavaLibraryPath\\\", \\\"JavaSpecificationVersion\\\", \\\"AvailableProcessors\\\", \\\"LoadedClassCount\\\", \\\"TotalLoadedClassCount\\\", \\\"UnloadedClassCount\\\", \\\"TotalCompilationTime\\\")\",\"scheduleTimeout\":5,\"description\":\"jvm_info\",\"name\":\"jvm_info\",\"scheduleIntervalAlarm\":60,\"locked\":\"n\",\"targetType\":\"a\",\"scheduleInterval\":300},{\"opts\":[\"reset=true\"],\"oldId\":null,\"gmtCreate\":1289246125000,\"status\":null,\"targetId\":691,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[{\"criticalExpression\":\"1\",\"warningExpressionDescription\":\"\",\"monitorItemId\":6956,\"alarmInterval\":60,\"alarmReceivers\":[{\"id\":166911,\"isUpgrade\":\"n\",\"userId\":1,\"receiveRuleId\":null,\"alarmRuleId\":166910}],\"upgradeInterval\":60,\"id\":166910,\"content\":\"1\",\"priority\":\"n\",\"name\":\"1\",\"warningExpression\":\"1\",\"criticalExpressionDescription\":\"\",\"alarmCount\":1,\"notifyOk\":\"n\"}],\"type\":\"a\",\"monitorItemTypeId\":5,\"id\":6956,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=Exception(\\\"ErrorList\\\")\",\"scheduleTimeout\":5,\"description\":\"exception\",\"name\":\"exception\",\"scheduleIntervalAlarm\":15,\"locked\":\"n\",\"targetType\":\"a\",\"scheduleInterval\":60},{\"opts\":[\"\"],\"oldId\":null,\"gmtCreate\":1290366943000,\"status\":null,\"targetId\":1920,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[],\"endTime\":1291115681000,\"type\":\"a\",\"monitorItemTypeId\":1,\"startTime\":1290424479000,\"id\":729245,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=Threading(\\\"DaemonThreadCount\\\", \\\"ThreadCount\\\", \\\"NewThreadCount\\\", \\\"RunnableThreadCount\\\", \\\"BlockedThreadCount\\\", \\\"WaitingThreadCount\\\", \\\"TimedWaitingThreadCount\\\", \\\"TeminatedThreadCount\\\", \\\"DeadLockedThreadCount\\\", \\\"TotalStartedThreadCount\\\", \\\"ProcessCpuTimeRate\\\", \\\"FullGCCollectionTimeRate\\\")\",\"scheduleTimeout\":5,\"description\":\"jvm_threading\",\"name\":\"jvm_threading1\",\"scheduleIntervalAlarm\":60,\"locked\":\"n\",\"targetType\":\"a\",\"scheduleInterval\":300},{\"opts\":[\"reset=true\"],\"oldId\":null,\"gmtCreate\":1290004798000,\"status\":null,\"targetId\":23910,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[],\"endTime\":1291097254000,\"type\":\"a\",\"monitorItemTypeId\":5,\"startTime\":1290578853000,\"id\":609389,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=Exception(\\\"ErrorList\\\")\",\"scheduleTimeout\":5,\"description\":\"exception\",\"name\":\"exception\",\"scheduleIntervalAlarm\":60,\"locked\":\"n\",\"targetType\":\"a\",\"scheduleInterval\":300},{\"opts\":[],\"oldId\":null,\"gmtCreate\":1289246125000,\"status\":null,\"targetId\":691,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[],\"endTime\":1320152730000,\"type\":\"a\",\"monitorItemTypeId\":4,\"startTime\":1288612505000,\"id\":6954,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=JVM(\\\"PID\\\", \\\"StartTime\\\", \\\"InputArguments\\\", \\\"Arch\\\", \\\"OSName\\\", \\\"OSVersion\\\", \\\"JVM\\\", \\\"JavaVersion\\\", \\\"JavaHome\\\", \\\"JavaLibraryPath\\\", \\\"JavaSpecificationVersion\\\", \\\"AvailableProcessors\\\", \\\"LoadedClassCount\\\", \\\"TotalLoadedClassCount\\\", \\\"UnloadedClassCount\\\", \\\"TotalCompilationTime\\\")\",\"scheduleTimeout\":5,\"description\":\"jvm_info\",\"name\":\"jvm_info\",\"scheduleIntervalAlarm\":60,\"locked\":\"n\",\"targetType\":\"a\",\"scheduleInterval\":300},{\"opts\":[],\"oldId\":null,\"gmtCreate\":1289213019000,\"status\":null,\"targetId\":1920,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[],\"endTime\":1288579301000,\"type\":\"a\",\"monitorItemTypeId\":2,\"startTime\":1288579301000,\"id\":19219,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=Memory(\\\"MemoryHeapCommitted\\\", \\\"MemoryHeapUsed\\\", \\\"MemoryNonHeapCommitted\\\", \\\"MemoryNonHeapUsed\\\", \\\"UsedPhysicalMemorySize\\\", \\\"TotalPhysicalMemorySize\\\", \\\"UsedSwapSpaceSize\\\", \\\"TotalSwapSpaceSize\\\")\",\"scheduleTimeout\":5,\"description\":\"desc1\",\"name\":\"jvm_memory\",\"scheduleIntervalAlarm\":15,\"locked\":\"n\",\"targetType\":\"a\",\"scheduleInterval\":60},{\"opts\":[\"reset=true\"],\"oldId\":null,\"gmtCreate\":1290505731000,\"status\":null,\"targetId\":78972,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[],\"endTime\":1291081720000,\"type\":\"a\",\"monitorItemTypeId\":5,\"startTime\":1290476915000,\"id\":78977,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=Exception(\\\"ErrorList\\\")\",\"scheduleTimeout\":5,\"description\":\"exception hello\",\"name\":\"exception1\",\"scheduleIntervalAlarm\":60,\"locked\":\"y\",\"targetType\":\"a\",\"scheduleInterval\":300},{\"opts\":[],\"oldId\":null,\"gmtCreate\":1289905053000,\"status\":null,\"targetId\":1920,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[],\"endTime\":1301484117000,\"type\":\"a\",\"monitorItemTypeId\":3,\"startTime\":1290597715000,\"id\":60927,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=GC(\\\"PermGenUsed\\\", \\\"OldGenUsed\\\", \\\"EdenSpaceUsed\\\", \\\"SurvivorSpaceUsed\\\", \\\"FullGCCollectionCount\\\", \\\"FullGCCollectionTime\\\", \\\"YoungGCCollectionCount\\\", \\\"YoungGCCollectionTime\\\")\",\"scheduleTimeout\":5,\"description\":\"jvm_gc\",\"name\":\"jvm_gc\",\"scheduleIntervalAlarm\":60,\"locked\":\"n\",\"targetType\":\"a\",\"scheduleInterval\":60},{\"opts\":[\"\"],\"oldId\":null,\"gmtCreate\":1291041346000,\"status\":null,\"targetId\":13491,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[{\"criticalExpression\":\"@RunnableThreadCount>5\",\"warningExpressionDescription\":\"\",\"monitorItemId\":134964,\"alarmInterval\":60,\"alarmReceivers\":[{\"id\":202945,\"isUpgrade\":\"n\",\"userId\":609247,\"receiveRuleId\":839375,\"alarmRuleId\":202944}],\"upgradeInterval\":60,\"id\":202944,\"content\":\"threading\",\"priority\":\"n\",\"name\":\"threading\",\"warningExpression\":\"@RunnableThreadCount>1\",\"criticalExpressionDescription\":\"\",\"alarmCount\":5,\"notifyOk\":\"y\"}],\"endTime\":1294468382000,\"type\":\"a\",\"monitorItemTypeId\":1,\"startTime\":1291098773000,\"id\":134964,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=Threading(\\\"DaemonThreadCount\\\", \\\"ThreadCount\\\", \\\"NewThreadCount\\\", \\\"RunnableThreadCount\\\", \\\"BlockedThreadCount\\\", \\\"WaitingThreadCount\\\", \\\"TimedWaitingThreadCount\\\", \\\"TeminatedThreadCount\\\", \\\"DeadLockedThreadCount\\\", \\\"TotalStartedThreadCount\\\", \\\"ProcessCpuTimeRate\\\", \\\"FullGCCollectionTimeRate\\\")\",\"scheduleTimeout\":5,\"description\":\"jvm_threading\",\"name\":\"jvm_threading\",\"scheduleIntervalAlarm\":30,\"locked\":\"y\",\"targetType\":\"a\",\"scheduleInterval\":60},{\"opts\":[\"reset=true\"],\"oldId\":null,\"gmtCreate\":1289213028000,\"status\":null,\"targetId\":1920,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[{\"criticalExpression\":\"@Count>=10\",\"warningExpressionDescription\":\"\",\"monitorItemId\":19231,\"alarmInterval\":60,\"alarmReceivers\":[{\"id\":177989,\"isUpgrade\":\"n\",\"userId\":1,\"receiveRuleId\":19261,\"alarmRuleId\":177988}],\"upgradeInterval\":60,\"id\":177988,\"content\":\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"priority\":\"n\",\"name\":\"exception\",\"warningExpression\":\"@Count>=5\",\"criticalExpressionDescription\":\"\",\"alarmCount\":1,\"notifyOk\":\"y\"}],\"endTime\":1288579390000,\"type\":\"a\",\"monitorItemTypeId\":5,\"startTime\":1288579390000,\"id\":19231,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=Exception(\\\"ErrorList\\\")\",\"scheduleTimeout\":5,\"description\":\"exceptionaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"name\":\"exception\",\"scheduleIntervalAlarm\":15,\"locked\":\"y\",\"targetType\":\"a\",\"scheduleInterval\":60},{\"opts\":[],\"oldId\":null,\"gmtCreate\":1289213026000,\"status\":null,\"targetId\":1920,\"scheduleExpression\":\"[* * * * * ?]\",\"alarmRules\":[{\"criticalExpression\":\"@AvailableProcessors>=100\",\"warningExpressionDescription\":\"\",\"monitorItemId\":19229,\"alarmInterval\":60,\"alarmReceivers\":[{\"id\":839389,\"isUpgrade\":\"n\",\"userId\":1,\"receiveRuleId\":19261,\"alarmRuleId\":839388}],\"upgradeInterval\":60,\"id\":839388,\"content\":\"@AvailableProcessors>=0\",\"priority\":\"n\",\"name\":\"AvailableProcessors\",\"warningExpression\":\"@AvailableProcessors>=100\",\"criticalExpressionDescription\":\"\",\"alarmCount\":1,\"notifyOk\":\"y\"}],\"endTime\":1289356974000,\"type\":\"a\",\"monitorItemTypeId\":4,\"startTime\":1289356974000,\"id\":19229,\"collectUrl\":\"jmx:\\/\\/GetAttr\\/com.alibaba.dragoon:type=JVM(\\\"PID\\\", \\\"StartTime\\\", \\\"InputArguments\\\", \\\"Arch\\\", \\\"OSName\\\", \\\"OSVersion\\\", \\\"JVM\\\", \\\"JavaVersion\\\", \\\"JavaHome\\\", \\\"JavaLibraryPath\\\", \\\"JavaSpecificationVersion\\\", \\\"AvailableProcessors\\\", \\\"LoadedClassCount\\\", \\\"TotalLoadedClassCount\\\", \\\"UnloadedClassCount\\\", \\\"TotalCompilationTime\\\")\",\"scheduleTimeout\":5,\"description\":\"jvm_info\",\"name\":\"jvm_info\",\"scheduleIntervalAlarm\":60,\"locked\":\"n\",\"targetType\":\"a\",\"scheduleInterval\":60}],\"applications\":[{\"id\":3,\"description\":\"test\",\"name\":\"Dragoon Test\",\"number\":\"Dragoon Test\",\"createDate\":1293043940000},{\"id\":691,\"description\":\"dragoon-master\",\"name\":\"master\",\"number\":\"master\",\"createDate\":1289245940000},{\"id\":1920,\"description\":\"dragoon\",\"name\":\"dragoon\",\"number\":\"dragoon\",\"createDate\":1289163910000},{\"id\":13491,\"description\":\"yuzefeng\",\"name\":\"yzf_app\",\"number\":\"yzf_app\",\"createDate\":1291039232000},{\"id\":23910,\"description\":\"demo-inst1\",\"name\":\"demo\",\"number\":\"demo\",\"createDate\":1289472915000},{\"id\":23911,\"description\":\"2.5��monitor\",\"name\":\"dragoon-monitor\",\"number\":\"dragoon-monitor\",\"createDate\":1289473324000},{\"id\":78972,\"description\":\"This is an app\",\"name\":\"luomingapp\",\"number\":\"111222\",\"createDate\":1290505557000},{\"id\":171910,\"description\":\"test\",\"name\":\"test\",\"number\":\"test\",\"createDate\":1291564140000}],\"types\":[{\"opts\":[],\"scheduleExpression\":null,\"gatherType\":\"a\",\"alarmRules\":[],\"type\":null,\"meta\":\"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?><meta tableName=\\\"m_jvm_threading\\\"><fields><field name=\\\"ProcessCpuTimeRate\\\" label=\\\"ProcessCpuTimeRate\\\" dbColumnName=\\\"CpuTimeRate\\\" valuePolicy=\\\"current\\\" dataType=\\\"int32\\\"\\/><field name=\\\"RunnableThreadCount\\\" label=\\\"RunnableThreadCount\\\" dbColumnName=\\\"RunnableThread\\\" valuePolicy=\\\"current\\\" dataType=\\\"int32\\\" \\/><field name=\\\"NewThreadCount\\\" label=\\\"NewThreadCount\\\" dbColumnName=\\\"NewThread\\\" valuePolicy=\\\"current\\\" dataType=\\\"int32\\\"\\/><field name=\\\"TotalStartedThreadCount\\\" label=\\\"TotalStartedThreadCount\\\" dbColumnName=\\\"TotalStartedThread\\\" valuePolicy=\\\"current\\\" dataType=\\\"int32\\\"\\/><field name=\\\"DeadLockedThreadCount\\\" label=\\\"DeadLockedThreadCount\\\" dbColumnName=\\\"DeadLockedThread\\\" valuePolicy=\\\"current\\\" dataType=\\\"int32\\\"\\/><field name=\\\"BlockedThreadCount\\\" label=\\\"BlockedThreadCount\\\" dbColumnName=\\\"BlockedThread\\\" valuePolicy=\\\"current\\\" dataType=\\\"int32\\\"\\/><field name=\\\"FullGCCollectionTimeRate\\\" label=\\\"FullGCCollectionTimeRate\\\" dbColumnName=\\\"FGCTimeRate\\\" valuePolicy=\\\"current\\\" dataType=\\\"int32\\\"\\/><field name=\\\"WaitingThreadCount\\\" label=\\\"WaitingThreadCount\\\" dbColumnName=\\\"WaitingThread\\\" valuePolicy=\\\"current\\\" dataType=\\\"int32\\\"\\/><field name=\\\"DaemonThreadCount\\\" label=\\\"DaemonThreadCount\\\" dbColumnName=\\\"DaemonThread\\\" valuePolicy=\\\"current\\\" dataType=\\\"int32\\\"\\/><field name=\\\"TeminatedThreadCount\\\" label=\\\"TeminatedThreadCount\\\" dbColumnName=\\\"TeminatedThread\\\" valuePolicy=\\\"current\\\" dataType=\\\"int32\\\"\\/><field name=\\\"ThreadCount\\\" label=\\\"ThreadCount\\\" dbColumnName=\\\"TotalThread\\\" valuePolicy=\\\"current\\\" dataType=\\\"int32\\\"\\/><field name=\\\"TimedWaitingThreadCount\\\" label=\\\"TimedWaitingThreadCount\\\" dbColumnName=\\\"TimedWaitingThread\\\" valuePolicy=\\\"current\\\" dataType=\\\"int32\\\"\\/><\\/fields><\\/meta>\",\"id\":1,\"collectUrl\":null,\"scheduleTimeout\":null,\"description\":\"jvm_threading\",\"name\":\"jvm_threading\",\"scheduleIntervalAlarm\":null,\"scheduleInterval\":null},{\"opts\":[],\"scheduleExpression\":null,\"gatherType\":\"a\",\"alarmRules\":[],\"type\":null,\"meta\":\"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?>\\r\\n<meta tableName=\\\"m_jvm_memory\\\">\\r\\n<fields>\\r\\n  <field name=\\\"UsedPhysicalMemorySize\\\" label=\\\"UsedPhysicalMemorySize\\\" dataType=\\\"int64\\\" dbColumnName=\\\"UsedPhysicalMemSize\\\" valuePolicy=\\\"current\\\" \\/>\\r\\n  <field name=\\\"MemoryNonHeapCommitted\\\" label=\\\"MemoryNonHeapCommitted\\\" dataType=\\\"int64\\\" dbColumnName=\\\"MemNonHeapCommitted\\\" valuePolicy=\\\"current\\\" \\/>\\r\\n  <field name=\\\"UsedSwapSpaceSize\\\" label=\\\"UsedSwapSpaceSize\\\" dataType=\\\"int64\\\" dbColumnName=\\\"UsedSwapSize\\\" valuePolicy=\\\"current\\\" \\/>\\r\\n  <field name=\\\"TotalPhysicalMemorySize\\\" label=\\\"TotalPhysicalMemorySize\\\" dataType=\\\"int64\\\" dbColumnName=\\\"TotalPhysicalMemSize\\\" valuePolicy=\\\"current\\\" \\/>\\r\\n  <field name=\\\"MemoryHeapUsed\\\" label=\\\"MemoryHeapUsed\\\" dataType=\\\"int64\\\" dbColumnName=\\\"MemHeapUsed\\\" valuePolicy=\\\"current\\\" \\/>\\r\\n  <field name=\\\"MemoryHeapCommitted\\\" label=\\\"MemoryHeapCommitted\\\" dataType=\\\"int64\\\" dbColumnName=\\\"MemHeapCommitted\\\" valuePolicy=\\\"current\\\" \\/>\\r\\n  <field name=\\\"TotalSwapSpaceSize\\\" label=\\\"TotalSwapSpaceSize\\\" dataType=\\\"int64\\\" dbColumnName=\\\"TotalSwapSize\\\" valuePolicy=\\\"current\\\" \\/>\\r\\n  <field name=\\\"MemoryNonHeapUsed\\\" label=\\\"MemoryNonHeapUsed\\\" dataType=\\\"int64\\\" dbColumnName=\\\"MemNonHeapUsed\\\" valuePolicy=\\\"current\\\" \\/>\\r\\n<\\/fields>\\r\\n<\\/meta>\",\"id\":2,\"collectUrl\":null,\"scheduleTimeout\":null,\"description\":\"desc1\",\"name\":\"jvm_memory\",\"scheduleIntervalAlarm\":null,\"scheduleInterval\":null},{\"opts\":[],\"scheduleExpression\":null,\"gatherType\":\"a\",\"alarmRules\":[],\"type\":null,\"meta\":\"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?>\\r\\n<meta tableName=\\\"m_jvm_gc\\\">\\r\\n<fields>\\r\\n  <field name=\\\"YoungGCCollectionTime\\\"  label=\\\"YoungGCCollectionTime\\\" dataType=\\\"int64\\\" dbColumnName=\\\"YGCTime\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n  <field name=\\\"FullGCCollectionTime\\\" label=\\\"FullGCCollectionTime\\\" dataType=\\\"int64\\\" dbColumnName=\\\"FGCTime\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n  <field name=\\\"FullGCCollectionCount\\\" label=\\\"FullGCCollectionCount\\\" dataType=\\\"int64\\\" dbColumnName=\\\"FGCCount\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n  <field name=\\\"PermGenUsed\\\" label=\\\"PermGenUsed\\\" dataType=\\\"int64\\\" dbColumnName=\\\"PermGenUsed\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n  <field name=\\\"SurvivorSpaceUsed\\\" label=\\\"SurvivorSpaceUsed\\\" dataType=\\\"int64\\\" dbColumnName=\\\"SurvivorUsed\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n  <field name=\\\"EdenSpaceUsed\\\" label=\\\"EdenSpaceUsed\\\" dataType=\\\"int64\\\" dbColumnName=\\\"EdenUsed\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n  <field name=\\\"YoungGCCollectionCount\\\" label=\\\"YoungGCCollectionCount\\\" dataType=\\\"int64\\\" dbColumnName=\\\"YGCCount\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n  <field name=\\\"OldGenUsed\\\" label=\\\"OldGenUsed\\\" dataType=\\\"int64\\\" dbColumnName=\\\"OldGenUsed\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n<\\/fields>\\r\\n<\\/meta>\",\"id\":3,\"collectUrl\":null,\"scheduleTimeout\":null,\"description\":\"jvm_gc\",\"name\":\"jvm_gc\",\"scheduleIntervalAlarm\":null,\"scheduleInterval\":null},{\"opts\":[],\"scheduleExpression\":null,\"gatherType\":\"a\",\"alarmRules\":[],\"type\":null,\"meta\":\"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?>\\r\\n<meta tableName=\\\"m_jvm_info\\\">\\r\\n<fields>\\r\\n  <field name=\\\"AvailableProcessors\\\" label=\\\"AvailableProcessors\\\" dataType=\\\"int32\\\" dbColumnName=\\\"AvailableCpus\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n  <field name=\\\"JavaHome\\\" label=\\\"JavaHome\\\" dataType=\\\"String\\\" dbColumnName=\\\"JavaHome\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n  <field name=\\\"JavaVersion\\\" label=\\\"JavaVersion\\\" dataType=\\\"String\\\" dbColumnName=\\\"JavaVersion\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n  <field name=\\\"PID\\\" label=\\\"PID\\\" dataType=\\\"String\\\" dbColumnName=\\\"PID\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n  <field name=\\\"OSVersion\\\" label=\\\"OSVersion\\\" dataType=\\\"String\\\" dbColumnName=\\\"OSVersion\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n  <field name=\\\"UnloadedClassCount\\\" label=\\\"UnloadedClassCount\\\" dataType=\\\"int64\\\" dbColumnName=\\\"UnloadedClass\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n  <field name=\\\"TotalCompilationTime\\\" label=\\\"TotalCompilationTime\\\" dataType=\\\"int64\\\" dbColumnName=\\\"TotalCompileTime\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n  <field name=\\\"OSName\\\" label=\\\"OSName\\\" dataType=\\\"String\\\" dbColumnName=\\\"OSName\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n  <field name=\\\"JavaSpecificationVersion\\\" label=\\\"JavaSpecificationVersion\\\" dataType=\\\"String\\\" dbColumnName=\\\"JavaSpecVersion\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n  <field name=\\\"Arch\\\" label=\\\"Arch\\\" dataType=\\\"String\\\" dbColumnName=\\\"Arch\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n  <field name=\\\"LoadedClassCount\\\" label=\\\"LoadedClassCount\\\" dataType=\\\"int32\\\" dbColumnName=\\\"LoadedClass\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n  <field name=\\\"StartTime\\\" label=\\\"StartTime\\\" dataType=\\\"DateTime\\\" dbColumnName=\\\"StartTime\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n  <field name=\\\"InputArguments\\\" label=\\\"InputArguments\\\" dataType=\\\"String\\\" dbColumnName=\\\"InputArgs\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n  <field name=\\\"JVM\\\" label=\\\"JVM\\\" dataType=\\\"String\\\" dbColumnName=\\\"JVM\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n  <field name=\\\"TotalLoadedClassCount\\\" label=\\\"TotalLoadedClassCount\\\" dataType=\\\"int64\\\" dbColumnName=\\\"TotalLoadedClass\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n  <field name=\\\"JavaLibraryPath\\\" label=\\\"JavaLibraryPath\\\" dataType=\\\"String\\\" dbColumnName=\\\"JavaLibPath\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n<\\/fields>\\r\\n<\\/meta>\",\"id\":4,\"collectUrl\":null,\"scheduleTimeout\":null,\"description\":\"jvm_info\",\"name\":\"jvm_info\",\"scheduleIntervalAlarm\":null,\"scheduleInterval\":null},{\"opts\":[],\"scheduleExpression\":null,\"gatherType\":\"a\",\"alarmRules\":[],\"type\":null,\"meta\":\"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?>\\r\\n<meta tableName=\\\"m_exception\\\">\\r\\n<fields>\\r\\n<field name=\\\"Count\\\" label=\\\"Count\\\" dataType=\\\"int64\\\" description=\\\"\\\" dbColumnName=\\\"ECount\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n  <field name=\\\"LastThrowMessage\\\" label=\\\"LastThrowMessage\\\" dataType=\\\"String\\\" description=\\\"\\\" dbColumnName=\\\"EMessage\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n  <field name=\\\"Method\\\" label=\\\"Method\\\" dataType=\\\"String\\\" description=\\\"\\\" dbColumnName=\\\"EMethod\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n  <field name=\\\"Type\\\" label=\\\"Type\\\" dataType=\\\"String\\\" description=\\\"\\\" dbColumnName=\\\"EType\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n  <field name=\\\"LastThrowDate\\\" label=\\\"LastThrowDate\\\" dataType=\\\"DateTime\\\" description=\\\"\\\" dbColumnName=\\\"EDATE\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n  <field name=\\\"StackTrace\\\" label=\\\"StackTrace\\\" dataType=\\\"String\\\" description=\\\"\\\" dbColumnName=\\\"EStackTrace\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n  <field name=\\\"URI\\\" label=\\\"URI\\\" dataType=\\\"String\\\" description=\\\"\\\" dbColumnName=\\\"EURI\\\" valuePolicy=\\\"current\\\"\\/>\\r\\n<\\/fields>\\r\\n<\\/meta>\",\"id\":5,\"collectUrl\":null,\"scheduleTimeout\":null,\"description\":\"exception hello\",\"name\":\"exception1\",\"scheduleIntervalAlarm\":null,\"scheduleInterval\":null}],\"version\":\"1965\"\r\n\t\t\t}"
  },
  {
    "path": "src/test/resources/json/book.json",
    "content": "{\n  \"store\": {\n    \"book\": [\n      {\n        \"category\": \"reference\",\n        \"author\": \"Nigel Rees\",\n        \"title\": \"Sayings of the Century\",\n        \"price\": 8.95\n      },\n      {\n        \"category\": \"fiction\",\n        \"author\": \"Evelyn Waugh\",\n        \"title\": \"Sword of Honour\",\n        \"price\": 12.99\n      },\n      {\n        \"category\": \"fiction\",\n        \"author\": \"Herman Melville\",\n        \"title\": \"Moby Dick\",\n        \"isbn\": \"0-553-21311-3\",\n        \"price\": 8.99\n      },\n      {\n        \"category\": \"fiction\",\n        \"author\": \"J. R. R. Tolkien\",\n        \"title\": \"The Lord of the Rings\",\n        \"isbn\": \"0-395-19395-8\",\n        \"price\": 22.99\n      }\n    ],\n    \"bicycle\": {\n      \"color\": \"red\",\n      \"price\": 19.95\n    }\n  },\n  \"expensive\": 10\n}"
  },
  {
    "path": "src/test/resources/json/dla_01.json",
    "content": "{\n  \"queryId\": \"20181024_040507_3_f32vb\",\n  \"session\": {\n    \"queryId\": \"20181024_040507_3_f32vb\",\n    \"transactionId\": \"e63395c8-1206-4145-9b57-269c46501fa0\",\n    \"clientTransactionSupport\": true,\n    \"user\": \"1013022312866336\",\n    \"principal\": null,\n    \"source\": \"172.17.246.55:9999\",\n    \"catalog\": \"dla\",\n    \"schema\": \"dla\",\n    \"timeZoneKey\": 1980,\n    \"locale\": \"en_US\",\n    \"remoteUserAddress\": \"127.0.0.1\",\n    \"userAgent\": null,\n    \"clientInfo\": null,\n    \"startTime\": 1540353907429,\n    \"systemProperties\": {\n      \"prefer_streaming_operators\": \"true\",\n      \"query_max_memory_per_node\": \"1GB\",\n      \"reorder_joins\": \"false\",\n      \"auto_delete_query_enable\": \"false\",\n      \"colocated_join\": \"true\",\n      \"mpp_metric_enable\": \"true\",\n      \"task_writer_count\": \"1\",\n      \"distributed_join\": \"true\",\n      \"task_concurrency\": \"16\",\n      \"small_table_threshold\": \"1000\",\n      \"task_max_running_seconds\": \"10800\",\n      \"join_distribution_type\": \"automatic\",\n      \"query_plan_cache\": \"false\",\n      \"connector_hint\": \"eyJkbGEiOnt9fQ==\",\n      \"execution_policy\": \"all-at-once\",\n      \"resource_overcommit\": \"false\",\n      \"hash_partition_count\": \"16\",\n      \"query_plan_cache_check\": \"false\",\n      \"query_max_memory\": \"400GB\"\n    },\n    \"catalogProperties\": {\n      \"hive\": {\n        \"oss_select_enabled\": \"false\"\n      },\n      \"ads\": {\n        \"insert_into_batch_size\": \"100\"\n      }\n    },\n    \"rootHint\": {},\n    \"preparedStatements\": {}\n  },\n  \"state\": \"FINISHED\",\n  \"memoryPool\": \"general\",\n  \"scheduled\": true,\n  \"self\": \"http://172.17.246.55:10001/v1/query/20181024_040507_3_f32vb\",\n  \"fieldNames\": [\"count(*)\"],\n  \"query\": \"SELECT count(*) AS \\\"count(*)\\\"\\nFROM hive.oa1013022312866336_tpch_100m_text.lineitem\",\n  \"queryStats\": {\n    \"createTime\": \"2018-10-24T04:05:07.432Z\",\n    \"executionStartTime\": \"2018-10-24T04:05:07.570Z\",\n    \"lastHeartbeat\": \"2018-10-24T04:05:08.906Z\",\n    \"endTime\": \"2018-10-24T04:05:08.907Z\",\n    \"elapsedTime\": \"1.48s\",\n    \"queuedTime\": \"1.19ms\",\n    \"analysisTime\": \"28.00ms\",\n    \"hitPlanCache\": false,\n    \"distributedPlanningTime\": \"36.00ms\",\n    \"totalPlanningTime\": \"83.94ms\",\n    \"scheduleToRemoteTime\": 303,\n    \"finishingTime\": \"3.72ms\",\n    \"dataFinished\": false,\n    \"totalTasks\": 3,\n    \"runningTasks\": 0,\n    \"completedTasks\": 3,\n    \"totalDrivers\": 20,\n    \"queuedDrivers\": 0,\n    \"runningDrivers\": 0,\n    \"completedDrivers\": 20,\n    \"cumulativeMemory\": 0.0,\n    \"totalMemoryReservation\": \"0B\",\n    \"peakMemoryReservation\": \"0B\",\n    \"totalScheduledTime\": \"0.00ns\",\n    \"totalCpuTime\": \"5.16s\",\n    \"totalUserTime\": \"0.00ns\",\n    \"totalBlockedTime\": \"0.00ns\",\n    \"fullyBlocked\": true,\n    \"blockedReasons\": [],\n    \"rawInputDataSize\": \"70.81MB\",\n    \"rawInputPositions\": 600572,\n    \"processedInputDataSize\": \"0B\",\n    \"processedInputPositions\": 600572,\n    \"outputDataSize\": \"9B\",\n    \"outputPositions\": 1,\n    \"totalTableScanDataSize\": 74246996,\n    \"tableScanPosition\": 600572,\n    \"executionTime\": \"1.47s\"\n  },\n  \"setSessionProperties\": {},\n  \"resetSessionProperties\": [],\n  \"addedPreparedStatements\": {},\n  \"deallocatedPreparedStatements\": [],\n  \"startedTransactionId\": null,\n  \"clearTransactionId\": false,\n  \"outputStage\": {\n    \"stageId\": \"20181024_040507_3_f32vb.0\",\n    \"state\": \"FINISHED\",\n    \"self\": \"http://172.17.246.55:10001/v1/stage/20181024_040507_3_f32vb.0\",\n    \"plan\": {\n      \"id\": \"0\",\n      \"root\": {\n        \"@type\": \"output\",\n        \"id\": \"7\",\n        \"source\": {\n          \"@type\": \"aggregation\",\n          \"id\": \"18\",\n          \"source\": {\n            \"@type\": \"exchange\",\n            \"id\": \"17\",\n            \"type\": \"GATHER\",\n            \"scope\": \"LOCAL\",\n            \"partitioningScheme\": {\n              \"partitioning\": {\n                \"handle\": {\n                  \"connectorId\": null,\n                  \"transactionHandle\": null,\n                  \"connectorHandle\": {\n                    \"@type\": \"$remote\",\n                    \"partitioning\": \"SINGLE\",\n                    \"function\": \"SINGLE\"\n                  }\n                },\n                \"arguments\": []\n              },\n              \"outputLayout\": [\"count_0_3\"],\n              \"hashColumn\": null,\n              \"replicateNulls\": false,\n              \"bucketToPartition\": null\n            },\n            \"sources\": [{\n              \"@type\": \"remoteSource\",\n              \"id\": \"16\",\n              \"sourceFragmentIds\": [\"1\"],\n              \"outputs\": [\"count_0_3\"],\n              \"label\": \"\"\n            }],\n            \"inputs\": [\n              [\"count_0_3\"]\n            ],\n            \"label\": \"\"\n          },\n          \"aggregations\": {\n            \"count\": \"\\\"count\\\"(\\\"count_0_3\\\")\"\n          },\n          \"functions\": {\n            \"count\": {\n              \"name\": \"count\",\n              \"kind\": \"AGGREGATE\",\n              \"typeVariableConstraints\": [],\n              \"longVariableConstraints\": [],\n              \"returnType\": \"bigint\",\n              \"argumentTypes\": [],\n              \"variableArity\": false\n            }\n          },\n          \"masks\": {},\n          \"groupingSets\": [\n            []\n          ],\n          \"step\": \"FINAL\",\n          \"hashSymbol\": null,\n          \"groupIdSymbol\": null,\n          \"label\": \"\"\n        },\n        \"columns\": [\"count(*)\"],\n        \"outputs\": [\"count\"],\n        \"label\": \"\"\n      },\n      \"symbols\": {\n        \"count_0_3\": \"bigint\",\n        \"count\": \"bigint\"\n      },\n      \"partitioning\": {\n        \"connectorId\": null,\n        \"transactionHandle\": null,\n        \"connectorHandle\": {\n          \"@type\": \"$remote\",\n          \"partitioning\": \"SINGLE\",\n          \"function\": \"SINGLE\"\n        }\n      },\n      \"partitionedSources\": [],\n      \"partitioningScheme\": {\n        \"partitioning\": {\n          \"handle\": {\n            \"connectorId\": null,\n            \"transactionHandle\": null,\n            \"connectorHandle\": {\n              \"@type\": \"$remote\",\n              \"partitioning\": \"SINGLE\",\n              \"function\": \"SINGLE\"\n            }\n          },\n          \"arguments\": []\n        },\n        \"outputLayout\": [\"count\"],\n        \"hashColumn\": null,\n        \"replicateNulls\": false,\n        \"bucketToPartition\": [0]\n      }\n    },\n    \"types\": [\"bigint\"],\n    \"stageStats\": {\n      \"schedulingComplete\": \"2018-10-24T04:05:07.564Z\",\n      \"totalTasks\": 1,\n      \"runningTasks\": 0,\n      \"completedTasks\": 1,\n      \"totalDrivers\": 17,\n      \"queuedDrivers\": 0,\n      \"runningDrivers\": 0,\n      \"completedDrivers\": 17,\n      \"cumulativeMemory\": 0.0,\n      \"totalMemoryReservation\": \"0B\",\n      \"peakMemoryReservation\": \"0B\",\n      \"totalScheduledTime\": \"0.00ns\",\n      \"totalCpuTime\": \"2.58s\",\n      \"totalUserTime\": \"0.00ns\",\n      \"totalBlockedTime\": \"0.00ns\",\n      \"fullyBlocked\": false,\n      \"blockedReasons\": [],\n      \"rawInputDataSize\": \"93B\",\n      \"rawInputPositions\": 3,\n      \"processedInputDataSize\": \"27B\",\n      \"processedInputPositions\": 3,\n      \"outputDataSize\": \"9B\",\n      \"outputPositions\": 1,\n      \"totalTableScanDataSize\": 0,\n      \"tableScanPosition\": 0\n    },\n    \"tasks\": [{\n      \"taskStatus\": {\n        \"taskId\": \"20181024_040507_3_f32vb.0.0\",\n        \"taskInstanceId\": \"a1948577-62db-4a56-bb36-ab6b1d5d0853\",\n        \"version\": 26,\n        \"state\": \"FINISHED\",\n        \"self\": \"http://172.17.246.56:14005/v1/task/20181024_040507_3_f32vb.0.0?shufferNettyServerPort=39524&commandNettyServerPort=37207\",\n        \"failures\": [],\n        \"queuedPartitionedDrivers\": 0,\n        \"runningPartitionedDrivers\": 0,\n        \"needLoop\": false,\n        \"memoryReservation\": \"0B\"\n      },\n      \"lastHeartbeat\": \"2018-10-24T04:05:08.885Z\",\n      \"outputBuffers\": {\n        \"type\": \"PARTITIONED\",\n        \"state\": \"FINISHED\",\n        \"canAddBuffers\": false,\n        \"canAddPages\": false,\n        \"totalBufferedBytes\": 0,\n        \"totalBufferedPages\": 0,\n        \"totalRowsSent\": 1,\n        \"totalPagesSent\": 1,\n        \"buffers\": []\n      },\n      \"noMoreSplits\": [\"16\"],\n      \"stats\": {\n        \"createTime\": \"2018-10-24T04:05:07.557Z\",\n        \"firstStartTime\": \"2018-10-24T04:05:07.859Z\",\n        \"lastStartTime\": \"2018-10-24T04:05:07.863Z\",\n        \"lastEndTime\": \"2018-10-24T04:05:08.867Z\",\n        \"endTime\": \"2018-10-24T04:05:08.889Z\",\n        \"elapsedTime\": 1031,\n        \"queuedTime\": 31,\n        \"totalDrivers\": 17,\n        \"queuedDrivers\": 0,\n        \"queuedPartitionedDrivers\": 0,\n        \"runningDrivers\": 0,\n        \"runningPartitionedDrivers\": 0,\n        \"completedDrivers\": 17,\n        \"cumulativeMemory\": 0.0,\n        \"memoryReservation\": \"0B\",\n        \"systemMemoryReservation\": \"0B\",\n        \"totalScheduledTime\": 0,\n        \"totalCpuTime\": 2584,\n        \"totalUserTime\": 0,\n        \"totalBlockedTime\": 0,\n        \"fullyBlocked\": false,\n        \"blockedReasons\": [],\n        \"rawInputDataSize\": \"93B\",\n        \"rawInputPositions\": 3,\n        \"processedInputDataSize\": \"27B\",\n        \"processedInputPositions\": 3,\n        \"outputDataSize\": \"9B\",\n        \"outputPositions\": 1,\n        \"tableScanDataSize\": 0,\n        \"tableScanTimeCost\": \"0.00ms\",\n        \"tableScanPosition\": 0\n      },\n      \"needsPlan\": false,\n      \"complete\": true,\n      \"completedDrivers\": 17,\n      \"totalDrivers\": 17,\n      \"cumulativeMemory\": 0.0,\n      \"memoryReservation\": 0,\n      \"elapsedTime\": 1031,\n      \"totalCpuTime\": 0\n    }],\n    \"subStages\": [{\n      \"stageId\": \"20181024_040507_3_f32vb.1\",\n      \"state\": \"FINISHED\",\n      \"self\": \"http://172.17.246.55:10001/v1/stage/20181024_040507_3_f32vb.1\",\n      \"plan\": {\n        \"id\": \"1\",\n        \"root\": {\n          \"@type\": \"aggregation\",\n          \"id\": \"15\",\n          \"source\": {\n            \"@type\": \"tablescan\",\n            \"id\": \"0\",\n            \"table\": {\n              \"connectorId\": \"hive\",\n              \"connectorHandle\": {\n                \"@type\": \"hive-hadoop2\",\n                \"clientId\": \"hive\",\n                \"schemaName\": \"oa1013022312866336_tpch_100m_text\",\n                \"tableName\": \"lineitem\"\n              }\n            },\n            \"outputSymbols\": [],\n            \"assignments\": {},\n            \"layout\": {\n              \"connectorId\": \"hive\",\n              \"transactionHandle\": {\n                \"@type\": \"hive-hadoop2\",\n                \"uuid\": \"ee8f6b43-d456-4bba-907b-941a5c87da1b\"\n              },\n              \"connectorHandle\": {\n                \"@type\": \"hive-hadoop2\",\n                \"clientId\": \"hive\",\n                \"partitionColumns\": [],\n                \"promisedPredicate\": {\n                  \"columnDomains\": null\n                },\n                \"bucketHandle\": null,\n                \"tupleDomain\": null,\n                \"remainPredicate\": []\n              }\n            },\n            \"currentConstraint\": {\n              \"columnDomains\": []\n            },\n            \"originalConstraint\": \"true\",\n            \"label\": \"hive:hive:oa1013022312866336_tpch_100m_text:lineitem true\"\n          },\n          \"aggregations\": {\n            \"count_0_3\": \"\\\"count\\\"(*)\"\n          },\n          \"functions\": {\n            \"count_0_3\": {\n              \"name\": \"count\",\n              \"kind\": \"AGGREGATE\",\n              \"typeVariableConstraints\": [],\n              \"longVariableConstraints\": [],\n              \"returnType\": \"bigint\",\n              \"argumentTypes\": [],\n              \"variableArity\": false\n            }\n          },\n          \"masks\": {},\n          \"groupingSets\": [\n            []\n          ],\n          \"step\": \"PARTIAL\",\n          \"hashSymbol\": null,\n          \"groupIdSymbol\": null,\n          \"label\": \"\"\n        },\n        \"symbols\": {\n          \"count_0_3\": \"bigint\"\n        },\n        \"partitioning\": {\n          \"connectorId\": null,\n          \"transactionHandle\": null,\n          \"connectorHandle\": {\n            \"@type\": \"$remote\",\n            \"partitioning\": \"SOURCE\",\n            \"function\": \"UNKNOWN\"\n          }\n        },\n        \"partitionedSources\": [\"0\"],\n        \"partitioningScheme\": {\n          \"partitioning\": {\n            \"handle\": {\n              \"connectorId\": null,\n              \"transactionHandle\": null,\n              \"connectorHandle\": {\n                \"@type\": \"$remote\",\n                \"partitioning\": \"SINGLE\",\n                \"function\": \"SINGLE\"\n              }\n            },\n            \"arguments\": []\n          },\n          \"outputLayout\": [\"count_0_3\"],\n          \"hashColumn\": null,\n          \"replicateNulls\": false,\n          \"bucketToPartition\": [0]\n        }\n      },\n      \"types\": [\"bigint\"],\n      \"stageStats\": {\n        \"schedulingComplete\": \"2018-10-24T04:05:07.664Z\",\n        \"totalTasks\": 2,\n        \"runningTasks\": 0,\n        \"completedTasks\": 2,\n        \"totalDrivers\": 3,\n        \"queuedDrivers\": 0,\n        \"runningDrivers\": 0,\n        \"completedDrivers\": 3,\n        \"cumulativeMemory\": 0.0,\n        \"totalMemoryReservation\": \"0B\",\n        \"peakMemoryReservation\": \"0B\",\n        \"totalScheduledTime\": \"0.00ns\",\n        \"totalCpuTime\": \"2.58s\",\n        \"totalUserTime\": \"0.00ns\",\n        \"totalBlockedTime\": \"0.00ns\",\n        \"fullyBlocked\": false,\n        \"blockedReasons\": [],\n        \"rawInputDataSize\": \"70.81MB\",\n        \"rawInputPositions\": 600572,\n        \"processedInputDataSize\": \"0B\",\n        \"processedInputPositions\": 600572,\n        \"outputDataSize\": \"27B\",\n        \"outputPositions\": 3,\n        \"totalTableScanDataSize\": 74246996,\n        \"tableScanPosition\": 600572\n      },\n      \"tasks\": [{\n        \"taskStatus\": {\n          \"taskId\": \"20181024_040507_3_f32vb.1.0\",\n          \"taskInstanceId\": \"34d2e099-c622-4768-83ad-3443dcb9cde6\",\n          \"version\": 25,\n          \"state\": \"FINISHED\",\n          \"self\": \"http://172.17.246.55:14005/v1/task/20181024_040507_3_f32vb.1.0?shufferNettyServerPort=33921&commandNettyServerPort=45121\",\n          \"failures\": [],\n          \"queuedPartitionedDrivers\": 0,\n          \"runningPartitionedDrivers\": 0,\n          \"needLoop\": false,\n          \"memoryReservation\": \"0B\"\n        },\n        \"lastHeartbeat\": \"2018-10-24T04:05:08.817Z\",\n        \"outputBuffers\": {\n          \"type\": \"PARTITIONED\",\n          \"state\": \"FINISHED\",\n          \"canAddBuffers\": false,\n          \"canAddPages\": false,\n          \"totalBufferedBytes\": 0,\n          \"totalBufferedPages\": 0,\n          \"totalRowsSent\": 1,\n          \"totalPagesSent\": 1,\n          \"buffers\": []\n        },\n        \"noMoreSplits\": [\"0\"],\n        \"stats\": {\n          \"createTime\": \"2018-10-24T04:05:07.662Z\",\n          \"firstStartTime\": \"2018-10-24T04:05:07.832Z\",\n          \"lastStartTime\": \"2018-10-24T04:05:07.832Z\",\n          \"lastEndTime\": \"2018-10-24T04:05:08.711Z\",\n          \"endTime\": \"2018-10-24T04:05:08.836Z\",\n          \"elapsedTime\": 1005,\n          \"queuedTime\": 3,\n          \"totalDrivers\": 1,\n          \"queuedDrivers\": 0,\n          \"queuedPartitionedDrivers\": 0,\n          \"runningDrivers\": 0,\n          \"runningPartitionedDrivers\": 0,\n          \"completedDrivers\": 1,\n          \"cumulativeMemory\": 0.0,\n          \"memoryReservation\": \"0B\",\n          \"systemMemoryReservation\": \"0B\",\n          \"totalScheduledTime\": 0,\n          \"totalCpuTime\": 879,\n          \"totalUserTime\": 0,\n          \"totalBlockedTime\": 0,\n          \"fullyBlocked\": false,\n          \"blockedReasons\": [],\n          \"rawInputDataSize\": \"32MB\",\n          \"rawInputPositions\": 271878,\n          \"processedInputDataSize\": \"0B\",\n          \"processedInputPositions\": 271878,\n          \"outputDataSize\": \"9B\",\n          \"outputPositions\": 1,\n          \"tableScanDataSize\": 33554432,\n          \"tableScanTimeCost\": \"2.00ms\",\n          \"tableScanPosition\": 271878\n        },\n        \"needsPlan\": false,\n        \"complete\": true,\n        \"completedDrivers\": 1,\n        \"totalDrivers\": 1,\n        \"cumulativeMemory\": 0.0,\n        \"memoryReservation\": 0,\n        \"elapsedTime\": 1005,\n        \"totalCpuTime\": 0\n      }, {\n        \"taskStatus\": {\n          \"taskId\": \"20181024_040507_3_f32vb.1.1\",\n          \"taskInstanceId\": \"74fe82fd-f59d-4f39-b7b7-5399c769b1e8\",\n          \"version\": 25,\n          \"state\": \"FINISHED\",\n          \"self\": \"http://172.17.246.56:14005/v1/task/20181024_040507_3_f32vb.1.1?shufferNettyServerPort=39524&commandNettyServerPort=37207\",\n          \"failures\": [],\n          \"queuedPartitionedDrivers\": 0,\n          \"runningPartitionedDrivers\": 0,\n          \"needLoop\": false,\n          \"memoryReservation\": \"0B\"\n        },\n        \"lastHeartbeat\": \"2018-10-24T04:05:08.814Z\",\n        \"outputBuffers\": {\n          \"type\": \"PARTITIONED\",\n          \"state\": \"FINISHED\",\n          \"canAddBuffers\": false,\n          \"canAddPages\": false,\n          \"totalBufferedBytes\": 0,\n          \"totalBufferedPages\": 0,\n          \"totalRowsSent\": 2,\n          \"totalPagesSent\": 2,\n          \"buffers\": []\n        },\n        \"noMoreSplits\": [\"0\"],\n        \"stats\": {\n          \"createTime\": \"2018-10-24T04:05:07.665Z\",\n          \"firstStartTime\": \"2018-10-24T04:05:07.834Z\",\n          \"lastStartTime\": \"2018-10-24T04:05:07.834Z\",\n          \"lastEndTime\": \"2018-10-24T04:05:08.779Z\",\n          \"endTime\": \"2018-10-24T04:05:08.845Z\",\n          \"elapsedTime\": 1011,\n          \"queuedTime\": 6,\n          \"totalDrivers\": 2,\n          \"queuedDrivers\": 0,\n          \"queuedPartitionedDrivers\": 0,\n          \"runningDrivers\": 0,\n          \"runningPartitionedDrivers\": 0,\n          \"completedDrivers\": 2,\n          \"cumulativeMemory\": 0.0,\n          \"memoryReservation\": \"0B\",\n          \"systemMemoryReservation\": \"0B\",\n          \"totalScheduledTime\": 0,\n          \"totalCpuTime\": 1700,\n          \"totalUserTime\": 0,\n          \"totalBlockedTime\": 0,\n          \"fullyBlocked\": false,\n          \"blockedReasons\": [],\n          \"rawInputDataSize\": \"38.81MB\",\n          \"rawInputPositions\": 328694,\n          \"processedInputDataSize\": \"0B\",\n          \"processedInputPositions\": 328694,\n          \"outputDataSize\": \"18B\",\n          \"outputPositions\": 2,\n          \"tableScanDataSize\": 40692564,\n          \"tableScanTimeCost\": \"4.00ms\",\n          \"tableScanPosition\": 328694\n        },\n        \"needsPlan\": false,\n        \"complete\": true,\n        \"completedDrivers\": 2,\n        \"totalDrivers\": 2,\n        \"cumulativeMemory\": 0.0,\n        \"memoryReservation\": 0,\n        \"elapsedTime\": 1011,\n        \"totalCpuTime\": 0\n      }],\n      \"subStages\": []\n    }]\n  },\n  \"inputs\": [{\n    \"connectorId\": \"hive\",\n    \"schema\": \"oa1013022312866336_tpch_100m_text\",\n    \"table\": \"lineitem\",\n    \"connectorInfo\": {\n      \"partitionIds\": [\"<UNPARTITIONED>\"]\n    },\n    \"columns\": []\n  }],\n  \"output\": null,\n  \"resourceGroupName\": null,\n  \"finalQueryInfo\": true\n}"
  },
  {
    "path": "src/test/resources/json/group.json",
    "content": "{\r\n\t\"description\":\"Alibaba Group makes it easy for anyone to buy or sell online anywhere in the world. \",\r\n\t\"name\":\"Alibaba Group\",\r\n\t\"companies\":\r\n\t\t[\r\n\t\t\t{\r\n\t\t\t\t\"id\":1,\r\n\t\t\t\t\"stock\":\"1688.HK\",\r\n\t\t\t\t\"description\":\"Global leader in e-commerce for small businesses\",\r\n\t\t\t\t\"name\":\"Alibaba.com\",\r\n\t\t\t\t\"rootDepartment\":{\r\n\t\t\t\t\t\"id\":2,\r\n\t\t\t\t\t\"name\":\"B2B\",\r\n\t\t\t\t\t\"children\":\r\n\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"id\":3,\r\n\t\t\t\t\t\t\t\t\"name\":\"CBU\",\r\n\t\t\t\t\t\t\t\t\"children\":[\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\t\"members\":\r\n\t\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\"badboy\":true,\r\n\t\t\t\t\t\t\t\t\t\t\t\"description\":\"神棍敌人姐\",\r\n\t\t\t\t\t\t\t\t\t\t\t\"name\":\"校长\",\r\n\t\t\t\t\t\t\t\t\t\t\t\"age\":3,\r\n\t\t\t\t\t\t\t\t\t\t\t\"birthdate\":1293286738586,\r\n\t\t\t\t\t\t\t\t\t\t\t\"salary\":123456789.0123\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\"id\":4,\r\n\t\t\t\t\t\t\t\t\"name\":\"ICBU\",\r\n\t\t\t\t\t\t\t\t\"children\":[\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\t\"members\":[\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\"members\":[\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t]\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"id\":5,\r\n\t\t\t\t\"description\":\"China's largest online retail website and one-stop platform for shopping, socializing and information sharing\",\r\n\t\t\t\t\"name\":\"Taobao\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"id\":6,\r\n\t\t\t\t\"description\":\"China's leading third-party online payment platform\",\r\n\t\t\t\t\"name\":\"Alipay\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"id\":7,\r\n\t\t\t\t\"description\":\"Developer of advanced data-centric cloud computing services\",\r\n\t\t\t\t\"name\":\"Alibaba Cloud Computing\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"id\":8,\r\n\t\t\t\t\"description\":\"One of China's leading Internet portals\",\r\n\t\t\t\t\"name\":\"China Yahoo\"\r\n\t\t\t}\r\n\t\t]\r\n}\r\n"
  },
  {
    "path": "src/test/resources/json/int_100.json",
    "content": "[\n\t{\n\t\t\"f0\":0,\n\t\t\"f1\":1,\n\t\t\"f2\":2,\n\t\t\"f3\":3,\n\t\t\"f4\":4,\n\t\t\"f5\":5,\n\t\t\"f6\":6,\n\t\t\"f7\":7,\n\t\t\"f8\":8,\n\t\t\"f9\":9,\n\t\t\"f10\":10,\n\t\t\"f11\":11,\n\t\t\"f12\":12,\n\t\t\"f13\":13,\n\t\t\"f14\":14,\n\t\t\"f15\":15,\n\t\t\"f16\":16,\n\t\t\"f17\":17,\n\t\t\"f18\":18,\n\t\t\"f19\":19,\n\t\t\"f20\":20,\n\t\t\"f21\":21,\n\t\t\"f22\":22,\n\t\t\"f23\":23,\n\t\t\"f24\":24,\n\t\t\"f25\":25,\n\t\t\"f26\":26,\n\t\t\"f27\":27,\n\t\t\"f28\":28,\n\t\t\"f29\":29,\n\t\t\"f30\":30,\n\t\t\"f31\":31,\n\t\t\"f32\":32,\n\t\t\"f33\":33,\n\t\t\"f34\":34,\n\t\t\"f35\":35,\n\t\t\"f36\":36,\n\t\t\"f37\":37,\n\t\t\"f38\":38,\n\t\t\"f39\":39,\n\t\t\"f40\":40,\n\t\t\"f41\":41,\n\t\t\"f42\":42,\n\t\t\"f43\":43,\n\t\t\"f44\":44,\n\t\t\"f45\":45,\n\t\t\"f46\":46,\n\t\t\"f47\":47,\n\t\t\"f48\":48,\n\t\t\"f49\":49,\n\t\t\"f50\":50,\n\t\t\"f51\":51,\n\t\t\"f52\":52,\n\t\t\"f53\":53,\n\t\t\"f54\":54,\n\t\t\"f55\":55,\n\t\t\"f56\":56,\n\t\t\"f57\":57,\n\t\t\"f58\":58,\n\t\t\"f59\":59,\n\t\t\"f60\":60,\n\t\t\"f61\":61,\n\t\t\"f62\":62,\n\t\t\"f63\":63,\n\t\t\"f64\":64,\n\t\t\"f65\":65,\n\t\t\"f66\":66,\n\t\t\"f67\":67,\n\t\t\"f68\":68,\n\t\t\"f69\":69,\n\t\t\"f70\":70,\n\t\t\"f71\":71,\n\t\t\"f72\":72,\n\t\t\"f73\":73,\n\t\t\"f74\":74,\n\t\t\"f75\":75,\n\t\t\"f76\":76,\n\t\t\"f77\":77,\n\t\t\"f78\":78,\n\t\t\"f79\":79,\n\t\t\"f80\":80,\n\t\t\"f81\":81,\n\t\t\"f82\":82,\n\t\t\"f83\":83,\n\t\t\"f84\":84,\n\t\t\"f85\":85,\n\t\t\"f86\":86,\n\t\t\"f87\":87,\n\t\t\"f88\":88,\n\t\t\"f89\":89,\n\t\t\"f90\":90,\n\t\t\"f91\":91,\n\t\t\"f92\":92,\n\t\t\"f93\":93,\n\t\t\"f94\":94,\n\t\t\"f95\":95,\n\t\t\"f96\":96,\n\t\t\"f97\":97,\n\t\t\"f98\":98,\n\t\t\"f99\":99\n\t}\n]"
  },
  {
    "path": "src/test/resources/json/int_1000.json",
    "content": "[\n\t{\n\t\t\"f0\":0,\n\t\t\"f1\":1,\n\t\t\"f2\":2,\n\t\t\"f3\":3,\n\t\t\"f4\":4,\n\t\t\"f5\":5,\n\t\t\"f6\":6,\n\t\t\"f7\":7,\n\t\t\"f8\":8,\n\t\t\"f9\":9,\n\t\t\"f10\":10,\n\t\t\"f11\":11,\n\t\t\"f12\":12,\n\t\t\"f13\":13,\n\t\t\"f14\":14,\n\t\t\"f15\":15,\n\t\t\"f16\":16,\n\t\t\"f17\":17,\n\t\t\"f18\":18,\n\t\t\"f19\":19,\n\t\t\"f20\":20,\n\t\t\"f21\":21,\n\t\t\"f22\":22,\n\t\t\"f23\":23,\n\t\t\"f24\":24,\n\t\t\"f25\":25,\n\t\t\"f26\":26,\n\t\t\"f27\":27,\n\t\t\"f28\":28,\n\t\t\"f29\":29,\n\t\t\"f30\":30,\n\t\t\"f31\":31,\n\t\t\"f32\":32,\n\t\t\"f33\":33,\n\t\t\"f34\":34,\n\t\t\"f35\":35,\n\t\t\"f36\":36,\n\t\t\"f37\":37,\n\t\t\"f38\":38,\n\t\t\"f39\":39,\n\t\t\"f40\":40,\n\t\t\"f41\":41,\n\t\t\"f42\":42,\n\t\t\"f43\":43,\n\t\t\"f44\":44,\n\t\t\"f45\":45,\n\t\t\"f46\":46,\n\t\t\"f47\":47,\n\t\t\"f48\":48,\n\t\t\"f49\":49,\n\t\t\"f50\":50,\n\t\t\"f51\":51,\n\t\t\"f52\":52,\n\t\t\"f53\":53,\n\t\t\"f54\":54,\n\t\t\"f55\":55,\n\t\t\"f56\":56,\n\t\t\"f57\":57,\n\t\t\"f58\":58,\n\t\t\"f59\":59,\n\t\t\"f60\":60,\n\t\t\"f61\":61,\n\t\t\"f62\":62,\n\t\t\"f63\":63,\n\t\t\"f64\":64,\n\t\t\"f65\":65,\n\t\t\"f66\":66,\n\t\t\"f67\":67,\n\t\t\"f68\":68,\n\t\t\"f69\":69,\n\t\t\"f70\":70,\n\t\t\"f71\":71,\n\t\t\"f72\":72,\n\t\t\"f73\":73,\n\t\t\"f74\":74,\n\t\t\"f75\":75,\n\t\t\"f76\":76,\n\t\t\"f77\":77,\n\t\t\"f78\":78,\n\t\t\"f79\":79,\n\t\t\"f80\":80,\n\t\t\"f81\":81,\n\t\t\"f82\":82,\n\t\t\"f83\":83,\n\t\t\"f84\":84,\n\t\t\"f85\":85,\n\t\t\"f86\":86,\n\t\t\"f87\":87,\n\t\t\"f88\":88,\n\t\t\"f89\":89,\n\t\t\"f90\":90,\n\t\t\"f91\":91,\n\t\t\"f92\":92,\n\t\t\"f93\":93,\n\t\t\"f94\":94,\n\t\t\"f95\":95,\n\t\t\"f96\":96,\n\t\t\"f97\":97,\n\t\t\"f98\":98,\n\t\t\"f99\":99\n\t},\n\t{\n\t\t\"f0\":100,\n\t\t\"f1\":101,\n\t\t\"f2\":102,\n\t\t\"f3\":103,\n\t\t\"f4\":104,\n\t\t\"f5\":105,\n\t\t\"f6\":106,\n\t\t\"f7\":107,\n\t\t\"f8\":108,\n\t\t\"f9\":109,\n\t\t\"f10\":110,\n\t\t\"f11\":111,\n\t\t\"f12\":112,\n\t\t\"f13\":113,\n\t\t\"f14\":114,\n\t\t\"f15\":115,\n\t\t\"f16\":116,\n\t\t\"f17\":117,\n\t\t\"f18\":118,\n\t\t\"f19\":119,\n\t\t\"f20\":120,\n\t\t\"f21\":121,\n\t\t\"f22\":122,\n\t\t\"f23\":123,\n\t\t\"f24\":124,\n\t\t\"f25\":125,\n\t\t\"f26\":126,\n\t\t\"f27\":127,\n\t\t\"f28\":128,\n\t\t\"f29\":129,\n\t\t\"f30\":130,\n\t\t\"f31\":131,\n\t\t\"f32\":132,\n\t\t\"f33\":133,\n\t\t\"f34\":134,\n\t\t\"f35\":135,\n\t\t\"f36\":136,\n\t\t\"f37\":137,\n\t\t\"f38\":138,\n\t\t\"f39\":139,\n\t\t\"f40\":140,\n\t\t\"f41\":141,\n\t\t\"f42\":142,\n\t\t\"f43\":143,\n\t\t\"f44\":144,\n\t\t\"f45\":145,\n\t\t\"f46\":146,\n\t\t\"f47\":147,\n\t\t\"f48\":148,\n\t\t\"f49\":149,\n\t\t\"f50\":150,\n\t\t\"f51\":151,\n\t\t\"f52\":152,\n\t\t\"f53\":153,\n\t\t\"f54\":154,\n\t\t\"f55\":155,\n\t\t\"f56\":156,\n\t\t\"f57\":157,\n\t\t\"f58\":158,\n\t\t\"f59\":159,\n\t\t\"f60\":160,\n\t\t\"f61\":161,\n\t\t\"f62\":162,\n\t\t\"f63\":163,\n\t\t\"f64\":164,\n\t\t\"f65\":165,\n\t\t\"f66\":166,\n\t\t\"f67\":167,\n\t\t\"f68\":168,\n\t\t\"f69\":169,\n\t\t\"f70\":170,\n\t\t\"f71\":171,\n\t\t\"f72\":172,\n\t\t\"f73\":173,\n\t\t\"f74\":174,\n\t\t\"f75\":175,\n\t\t\"f76\":176,\n\t\t\"f77\":177,\n\t\t\"f78\":178,\n\t\t\"f79\":179,\n\t\t\"f80\":180,\n\t\t\"f81\":181,\n\t\t\"f82\":182,\n\t\t\"f83\":183,\n\t\t\"f84\":184,\n\t\t\"f85\":185,\n\t\t\"f86\":186,\n\t\t\"f87\":187,\n\t\t\"f88\":188,\n\t\t\"f89\":189,\n\t\t\"f90\":190,\n\t\t\"f91\":191,\n\t\t\"f92\":192,\n\t\t\"f93\":193,\n\t\t\"f94\":194,\n\t\t\"f95\":195,\n\t\t\"f96\":196,\n\t\t\"f97\":197,\n\t\t\"f98\":198,\n\t\t\"f99\":199\n\t},\n\t{\n\t\t\"f0\":200,\n\t\t\"f1\":201,\n\t\t\"f2\":202,\n\t\t\"f3\":203,\n\t\t\"f4\":204,\n\t\t\"f5\":205,\n\t\t\"f6\":206,\n\t\t\"f7\":207,\n\t\t\"f8\":208,\n\t\t\"f9\":209,\n\t\t\"f10\":210,\n\t\t\"f11\":211,\n\t\t\"f12\":212,\n\t\t\"f13\":213,\n\t\t\"f14\":214,\n\t\t\"f15\":215,\n\t\t\"f16\":216,\n\t\t\"f17\":217,\n\t\t\"f18\":218,\n\t\t\"f19\":219,\n\t\t\"f20\":220,\n\t\t\"f21\":221,\n\t\t\"f22\":222,\n\t\t\"f23\":223,\n\t\t\"f24\":224,\n\t\t\"f25\":225,\n\t\t\"f26\":226,\n\t\t\"f27\":227,\n\t\t\"f28\":228,\n\t\t\"f29\":229,\n\t\t\"f30\":230,\n\t\t\"f31\":231,\n\t\t\"f32\":232,\n\t\t\"f33\":233,\n\t\t\"f34\":234,\n\t\t\"f35\":235,\n\t\t\"f36\":236,\n\t\t\"f37\":237,\n\t\t\"f38\":238,\n\t\t\"f39\":239,\n\t\t\"f40\":240,\n\t\t\"f41\":241,\n\t\t\"f42\":242,\n\t\t\"f43\":243,\n\t\t\"f44\":244,\n\t\t\"f45\":245,\n\t\t\"f46\":246,\n\t\t\"f47\":247,\n\t\t\"f48\":248,\n\t\t\"f49\":249,\n\t\t\"f50\":250,\n\t\t\"f51\":251,\n\t\t\"f52\":252,\n\t\t\"f53\":253,\n\t\t\"f54\":254,\n\t\t\"f55\":255,\n\t\t\"f56\":256,\n\t\t\"f57\":257,\n\t\t\"f58\":258,\n\t\t\"f59\":259,\n\t\t\"f60\":260,\n\t\t\"f61\":261,\n\t\t\"f62\":262,\n\t\t\"f63\":263,\n\t\t\"f64\":264,\n\t\t\"f65\":265,\n\t\t\"f66\":266,\n\t\t\"f67\":267,\n\t\t\"f68\":268,\n\t\t\"f69\":269,\n\t\t\"f70\":270,\n\t\t\"f71\":271,\n\t\t\"f72\":272,\n\t\t\"f73\":273,\n\t\t\"f74\":274,\n\t\t\"f75\":275,\n\t\t\"f76\":276,\n\t\t\"f77\":277,\n\t\t\"f78\":278,\n\t\t\"f79\":279,\n\t\t\"f80\":280,\n\t\t\"f81\":281,\n\t\t\"f82\":282,\n\t\t\"f83\":283,\n\t\t\"f84\":284,\n\t\t\"f85\":285,\n\t\t\"f86\":286,\n\t\t\"f87\":287,\n\t\t\"f88\":288,\n\t\t\"f89\":289,\n\t\t\"f90\":290,\n\t\t\"f91\":291,\n\t\t\"f92\":292,\n\t\t\"f93\":293,\n\t\t\"f94\":294,\n\t\t\"f95\":295,\n\t\t\"f96\":296,\n\t\t\"f97\":297,\n\t\t\"f98\":298,\n\t\t\"f99\":299\n\t},\n\t{\n\t\t\"f0\":300,\n\t\t\"f1\":301,\n\t\t\"f2\":302,\n\t\t\"f3\":303,\n\t\t\"f4\":304,\n\t\t\"f5\":305,\n\t\t\"f6\":306,\n\t\t\"f7\":307,\n\t\t\"f8\":308,\n\t\t\"f9\":309,\n\t\t\"f10\":310,\n\t\t\"f11\":311,\n\t\t\"f12\":312,\n\t\t\"f13\":313,\n\t\t\"f14\":314,\n\t\t\"f15\":315,\n\t\t\"f16\":316,\n\t\t\"f17\":317,\n\t\t\"f18\":318,\n\t\t\"f19\":319,\n\t\t\"f20\":320,\n\t\t\"f21\":321,\n\t\t\"f22\":322,\n\t\t\"f23\":323,\n\t\t\"f24\":324,\n\t\t\"f25\":325,\n\t\t\"f26\":326,\n\t\t\"f27\":327,\n\t\t\"f28\":328,\n\t\t\"f29\":329,\n\t\t\"f30\":330,\n\t\t\"f31\":331,\n\t\t\"f32\":332,\n\t\t\"f33\":333,\n\t\t\"f34\":334,\n\t\t\"f35\":335,\n\t\t\"f36\":336,\n\t\t\"f37\":337,\n\t\t\"f38\":338,\n\t\t\"f39\":339,\n\t\t\"f40\":340,\n\t\t\"f41\":341,\n\t\t\"f42\":342,\n\t\t\"f43\":343,\n\t\t\"f44\":344,\n\t\t\"f45\":345,\n\t\t\"f46\":346,\n\t\t\"f47\":347,\n\t\t\"f48\":348,\n\t\t\"f49\":349,\n\t\t\"f50\":350,\n\t\t\"f51\":351,\n\t\t\"f52\":352,\n\t\t\"f53\":353,\n\t\t\"f54\":354,\n\t\t\"f55\":355,\n\t\t\"f56\":356,\n\t\t\"f57\":357,\n\t\t\"f58\":358,\n\t\t\"f59\":359,\n\t\t\"f60\":360,\n\t\t\"f61\":361,\n\t\t\"f62\":362,\n\t\t\"f63\":363,\n\t\t\"f64\":364,\n\t\t\"f65\":365,\n\t\t\"f66\":366,\n\t\t\"f67\":367,\n\t\t\"f68\":368,\n\t\t\"f69\":369,\n\t\t\"f70\":370,\n\t\t\"f71\":371,\n\t\t\"f72\":372,\n\t\t\"f73\":373,\n\t\t\"f74\":374,\n\t\t\"f75\":375,\n\t\t\"f76\":376,\n\t\t\"f77\":377,\n\t\t\"f78\":378,\n\t\t\"f79\":379,\n\t\t\"f80\":380,\n\t\t\"f81\":381,\n\t\t\"f82\":382,\n\t\t\"f83\":383,\n\t\t\"f84\":384,\n\t\t\"f85\":385,\n\t\t\"f86\":386,\n\t\t\"f87\":387,\n\t\t\"f88\":388,\n\t\t\"f89\":389,\n\t\t\"f90\":390,\n\t\t\"f91\":391,\n\t\t\"f92\":392,\n\t\t\"f93\":393,\n\t\t\"f94\":394,\n\t\t\"f95\":395,\n\t\t\"f96\":396,\n\t\t\"f97\":397,\n\t\t\"f98\":398,\n\t\t\"f99\":399\n\t},\n\t{\n\t\t\"f0\":400,\n\t\t\"f1\":401,\n\t\t\"f2\":402,\n\t\t\"f3\":403,\n\t\t\"f4\":404,\n\t\t\"f5\":405,\n\t\t\"f6\":406,\n\t\t\"f7\":407,\n\t\t\"f8\":408,\n\t\t\"f9\":409,\n\t\t\"f10\":410,\n\t\t\"f11\":411,\n\t\t\"f12\":412,\n\t\t\"f13\":413,\n\t\t\"f14\":414,\n\t\t\"f15\":415,\n\t\t\"f16\":416,\n\t\t\"f17\":417,\n\t\t\"f18\":418,\n\t\t\"f19\":419,\n\t\t\"f20\":420,\n\t\t\"f21\":421,\n\t\t\"f22\":422,\n\t\t\"f23\":423,\n\t\t\"f24\":424,\n\t\t\"f25\":425,\n\t\t\"f26\":426,\n\t\t\"f27\":427,\n\t\t\"f28\":428,\n\t\t\"f29\":429,\n\t\t\"f30\":430,\n\t\t\"f31\":431,\n\t\t\"f32\":432,\n\t\t\"f33\":433,\n\t\t\"f34\":434,\n\t\t\"f35\":435,\n\t\t\"f36\":436,\n\t\t\"f37\":437,\n\t\t\"f38\":438,\n\t\t\"f39\":439,\n\t\t\"f40\":440,\n\t\t\"f41\":441,\n\t\t\"f42\":442,\n\t\t\"f43\":443,\n\t\t\"f44\":444,\n\t\t\"f45\":445,\n\t\t\"f46\":446,\n\t\t\"f47\":447,\n\t\t\"f48\":448,\n\t\t\"f49\":449,\n\t\t\"f50\":450,\n\t\t\"f51\":451,\n\t\t\"f52\":452,\n\t\t\"f53\":453,\n\t\t\"f54\":454,\n\t\t\"f55\":455,\n\t\t\"f56\":456,\n\t\t\"f57\":457,\n\t\t\"f58\":458,\n\t\t\"f59\":459,\n\t\t\"f60\":460,\n\t\t\"f61\":461,\n\t\t\"f62\":462,\n\t\t\"f63\":463,\n\t\t\"f64\":464,\n\t\t\"f65\":465,\n\t\t\"f66\":466,\n\t\t\"f67\":467,\n\t\t\"f68\":468,\n\t\t\"f69\":469,\n\t\t\"f70\":470,\n\t\t\"f71\":471,\n\t\t\"f72\":472,\n\t\t\"f73\":473,\n\t\t\"f74\":474,\n\t\t\"f75\":475,\n\t\t\"f76\":476,\n\t\t\"f77\":477,\n\t\t\"f78\":478,\n\t\t\"f79\":479,\n\t\t\"f80\":480,\n\t\t\"f81\":481,\n\t\t\"f82\":482,\n\t\t\"f83\":483,\n\t\t\"f84\":484,\n\t\t\"f85\":485,\n\t\t\"f86\":486,\n\t\t\"f87\":487,\n\t\t\"f88\":488,\n\t\t\"f89\":489,\n\t\t\"f90\":490,\n\t\t\"f91\":491,\n\t\t\"f92\":492,\n\t\t\"f93\":493,\n\t\t\"f94\":494,\n\t\t\"f95\":495,\n\t\t\"f96\":496,\n\t\t\"f97\":497,\n\t\t\"f98\":498,\n\t\t\"f99\":499\n\t},\n\t{\n\t\t\"f0\":500,\n\t\t\"f1\":501,\n\t\t\"f2\":502,\n\t\t\"f3\":503,\n\t\t\"f4\":504,\n\t\t\"f5\":505,\n\t\t\"f6\":506,\n\t\t\"f7\":507,\n\t\t\"f8\":508,\n\t\t\"f9\":509,\n\t\t\"f10\":510,\n\t\t\"f11\":511,\n\t\t\"f12\":512,\n\t\t\"f13\":513,\n\t\t\"f14\":514,\n\t\t\"f15\":515,\n\t\t\"f16\":516,\n\t\t\"f17\":517,\n\t\t\"f18\":518,\n\t\t\"f19\":519,\n\t\t\"f20\":520,\n\t\t\"f21\":521,\n\t\t\"f22\":522,\n\t\t\"f23\":523,\n\t\t\"f24\":524,\n\t\t\"f25\":525,\n\t\t\"f26\":526,\n\t\t\"f27\":527,\n\t\t\"f28\":528,\n\t\t\"f29\":529,\n\t\t\"f30\":530,\n\t\t\"f31\":531,\n\t\t\"f32\":532,\n\t\t\"f33\":533,\n\t\t\"f34\":534,\n\t\t\"f35\":535,\n\t\t\"f36\":536,\n\t\t\"f37\":537,\n\t\t\"f38\":538,\n\t\t\"f39\":539,\n\t\t\"f40\":540,\n\t\t\"f41\":541,\n\t\t\"f42\":542,\n\t\t\"f43\":543,\n\t\t\"f44\":544,\n\t\t\"f45\":545,\n\t\t\"f46\":546,\n\t\t\"f47\":547,\n\t\t\"f48\":548,\n\t\t\"f49\":549,\n\t\t\"f50\":550,\n\t\t\"f51\":551,\n\t\t\"f52\":552,\n\t\t\"f53\":553,\n\t\t\"f54\":554,\n\t\t\"f55\":555,\n\t\t\"f56\":556,\n\t\t\"f57\":557,\n\t\t\"f58\":558,\n\t\t\"f59\":559,\n\t\t\"f60\":560,\n\t\t\"f61\":561,\n\t\t\"f62\":562,\n\t\t\"f63\":563,\n\t\t\"f64\":564,\n\t\t\"f65\":565,\n\t\t\"f66\":566,\n\t\t\"f67\":567,\n\t\t\"f68\":568,\n\t\t\"f69\":569,\n\t\t\"f70\":570,\n\t\t\"f71\":571,\n\t\t\"f72\":572,\n\t\t\"f73\":573,\n\t\t\"f74\":574,\n\t\t\"f75\":575,\n\t\t\"f76\":576,\n\t\t\"f77\":577,\n\t\t\"f78\":578,\n\t\t\"f79\":579,\n\t\t\"f80\":580,\n\t\t\"f81\":581,\n\t\t\"f82\":582,\n\t\t\"f83\":583,\n\t\t\"f84\":584,\n\t\t\"f85\":585,\n\t\t\"f86\":586,\n\t\t\"f87\":587,\n\t\t\"f88\":588,\n\t\t\"f89\":589,\n\t\t\"f90\":590,\n\t\t\"f91\":591,\n\t\t\"f92\":592,\n\t\t\"f93\":593,\n\t\t\"f94\":594,\n\t\t\"f95\":595,\n\t\t\"f96\":596,\n\t\t\"f97\":597,\n\t\t\"f98\":598,\n\t\t\"f99\":599\n\t},\n\t{\n\t\t\"f0\":600,\n\t\t\"f1\":601,\n\t\t\"f2\":602,\n\t\t\"f3\":603,\n\t\t\"f4\":604,\n\t\t\"f5\":605,\n\t\t\"f6\":606,\n\t\t\"f7\":607,\n\t\t\"f8\":608,\n\t\t\"f9\":609,\n\t\t\"f10\":610,\n\t\t\"f11\":611,\n\t\t\"f12\":612,\n\t\t\"f13\":613,\n\t\t\"f14\":614,\n\t\t\"f15\":615,\n\t\t\"f16\":616,\n\t\t\"f17\":617,\n\t\t\"f18\":618,\n\t\t\"f19\":619,\n\t\t\"f20\":620,\n\t\t\"f21\":621,\n\t\t\"f22\":622,\n\t\t\"f23\":623,\n\t\t\"f24\":624,\n\t\t\"f25\":625,\n\t\t\"f26\":626,\n\t\t\"f27\":627,\n\t\t\"f28\":628,\n\t\t\"f29\":629,\n\t\t\"f30\":630,\n\t\t\"f31\":631,\n\t\t\"f32\":632,\n\t\t\"f33\":633,\n\t\t\"f34\":634,\n\t\t\"f35\":635,\n\t\t\"f36\":636,\n\t\t\"f37\":637,\n\t\t\"f38\":638,\n\t\t\"f39\":639,\n\t\t\"f40\":640,\n\t\t\"f41\":641,\n\t\t\"f42\":642,\n\t\t\"f43\":643,\n\t\t\"f44\":644,\n\t\t\"f45\":645,\n\t\t\"f46\":646,\n\t\t\"f47\":647,\n\t\t\"f48\":648,\n\t\t\"f49\":649,\n\t\t\"f50\":650,\n\t\t\"f51\":651,\n\t\t\"f52\":652,\n\t\t\"f53\":653,\n\t\t\"f54\":654,\n\t\t\"f55\":655,\n\t\t\"f56\":656,\n\t\t\"f57\":657,\n\t\t\"f58\":658,\n\t\t\"f59\":659,\n\t\t\"f60\":660,\n\t\t\"f61\":661,\n\t\t\"f62\":662,\n\t\t\"f63\":663,\n\t\t\"f64\":664,\n\t\t\"f65\":665,\n\t\t\"f66\":666,\n\t\t\"f67\":667,\n\t\t\"f68\":668,\n\t\t\"f69\":669,\n\t\t\"f70\":670,\n\t\t\"f71\":671,\n\t\t\"f72\":672,\n\t\t\"f73\":673,\n\t\t\"f74\":674,\n\t\t\"f75\":675,\n\t\t\"f76\":676,\n\t\t\"f77\":677,\n\t\t\"f78\":678,\n\t\t\"f79\":679,\n\t\t\"f80\":680,\n\t\t\"f81\":681,\n\t\t\"f82\":682,\n\t\t\"f83\":683,\n\t\t\"f84\":684,\n\t\t\"f85\":685,\n\t\t\"f86\":686,\n\t\t\"f87\":687,\n\t\t\"f88\":688,\n\t\t\"f89\":689,\n\t\t\"f90\":690,\n\t\t\"f91\":691,\n\t\t\"f92\":692,\n\t\t\"f93\":693,\n\t\t\"f94\":694,\n\t\t\"f95\":695,\n\t\t\"f96\":696,\n\t\t\"f97\":697,\n\t\t\"f98\":698,\n\t\t\"f99\":699\n\t},\n\t{\n\t\t\"f0\":700,\n\t\t\"f1\":701,\n\t\t\"f2\":702,\n\t\t\"f3\":703,\n\t\t\"f4\":704,\n\t\t\"f5\":705,\n\t\t\"f6\":706,\n\t\t\"f7\":707,\n\t\t\"f8\":708,\n\t\t\"f9\":709,\n\t\t\"f10\":710,\n\t\t\"f11\":711,\n\t\t\"f12\":712,\n\t\t\"f13\":713,\n\t\t\"f14\":714,\n\t\t\"f15\":715,\n\t\t\"f16\":716,\n\t\t\"f17\":717,\n\t\t\"f18\":718,\n\t\t\"f19\":719,\n\t\t\"f20\":720,\n\t\t\"f21\":721,\n\t\t\"f22\":722,\n\t\t\"f23\":723,\n\t\t\"f24\":724,\n\t\t\"f25\":725,\n\t\t\"f26\":726,\n\t\t\"f27\":727,\n\t\t\"f28\":728,\n\t\t\"f29\":729,\n\t\t\"f30\":730,\n\t\t\"f31\":731,\n\t\t\"f32\":732,\n\t\t\"f33\":733,\n\t\t\"f34\":734,\n\t\t\"f35\":735,\n\t\t\"f36\":736,\n\t\t\"f37\":737,\n\t\t\"f38\":738,\n\t\t\"f39\":739,\n\t\t\"f40\":740,\n\t\t\"f41\":741,\n\t\t\"f42\":742,\n\t\t\"f43\":743,\n\t\t\"f44\":744,\n\t\t\"f45\":745,\n\t\t\"f46\":746,\n\t\t\"f47\":747,\n\t\t\"f48\":748,\n\t\t\"f49\":749,\n\t\t\"f50\":750,\n\t\t\"f51\":751,\n\t\t\"f52\":752,\n\t\t\"f53\":753,\n\t\t\"f54\":754,\n\t\t\"f55\":755,\n\t\t\"f56\":756,\n\t\t\"f57\":757,\n\t\t\"f58\":758,\n\t\t\"f59\":759,\n\t\t\"f60\":760,\n\t\t\"f61\":761,\n\t\t\"f62\":762,\n\t\t\"f63\":763,\n\t\t\"f64\":764,\n\t\t\"f65\":765,\n\t\t\"f66\":766,\n\t\t\"f67\":767,\n\t\t\"f68\":768,\n\t\t\"f69\":769,\n\t\t\"f70\":770,\n\t\t\"f71\":771,\n\t\t\"f72\":772,\n\t\t\"f73\":773,\n\t\t\"f74\":774,\n\t\t\"f75\":775,\n\t\t\"f76\":776,\n\t\t\"f77\":777,\n\t\t\"f78\":778,\n\t\t\"f79\":779,\n\t\t\"f80\":780,\n\t\t\"f81\":781,\n\t\t\"f82\":782,\n\t\t\"f83\":783,\n\t\t\"f84\":784,\n\t\t\"f85\":785,\n\t\t\"f86\":786,\n\t\t\"f87\":787,\n\t\t\"f88\":788,\n\t\t\"f89\":789,\n\t\t\"f90\":790,\n\t\t\"f91\":791,\n\t\t\"f92\":792,\n\t\t\"f93\":793,\n\t\t\"f94\":794,\n\t\t\"f95\":795,\n\t\t\"f96\":796,\n\t\t\"f97\":797,\n\t\t\"f98\":798,\n\t\t\"f99\":799\n\t},\n\t{\n\t\t\"f0\":800,\n\t\t\"f1\":801,\n\t\t\"f2\":802,\n\t\t\"f3\":803,\n\t\t\"f4\":804,\n\t\t\"f5\":805,\n\t\t\"f6\":806,\n\t\t\"f7\":807,\n\t\t\"f8\":808,\n\t\t\"f9\":809,\n\t\t\"f10\":810,\n\t\t\"f11\":811,\n\t\t\"f12\":812,\n\t\t\"f13\":813,\n\t\t\"f14\":814,\n\t\t\"f15\":815,\n\t\t\"f16\":816,\n\t\t\"f17\":817,\n\t\t\"f18\":818,\n\t\t\"f19\":819,\n\t\t\"f20\":820,\n\t\t\"f21\":821,\n\t\t\"f22\":822,\n\t\t\"f23\":823,\n\t\t\"f24\":824,\n\t\t\"f25\":825,\n\t\t\"f26\":826,\n\t\t\"f27\":827,\n\t\t\"f28\":828,\n\t\t\"f29\":829,\n\t\t\"f30\":830,\n\t\t\"f31\":831,\n\t\t\"f32\":832,\n\t\t\"f33\":833,\n\t\t\"f34\":834,\n\t\t\"f35\":835,\n\t\t\"f36\":836,\n\t\t\"f37\":837,\n\t\t\"f38\":838,\n\t\t\"f39\":839,\n\t\t\"f40\":840,\n\t\t\"f41\":841,\n\t\t\"f42\":842,\n\t\t\"f43\":843,\n\t\t\"f44\":844,\n\t\t\"f45\":845,\n\t\t\"f46\":846,\n\t\t\"f47\":847,\n\t\t\"f48\":848,\n\t\t\"f49\":849,\n\t\t\"f50\":850,\n\t\t\"f51\":851,\n\t\t\"f52\":852,\n\t\t\"f53\":853,\n\t\t\"f54\":854,\n\t\t\"f55\":855,\n\t\t\"f56\":856,\n\t\t\"f57\":857,\n\t\t\"f58\":858,\n\t\t\"f59\":859,\n\t\t\"f60\":860,\n\t\t\"f61\":861,\n\t\t\"f62\":862,\n\t\t\"f63\":863,\n\t\t\"f64\":864,\n\t\t\"f65\":865,\n\t\t\"f66\":866,\n\t\t\"f67\":867,\n\t\t\"f68\":868,\n\t\t\"f69\":869,\n\t\t\"f70\":870,\n\t\t\"f71\":871,\n\t\t\"f72\":872,\n\t\t\"f73\":873,\n\t\t\"f74\":874,\n\t\t\"f75\":875,\n\t\t\"f76\":876,\n\t\t\"f77\":877,\n\t\t\"f78\":878,\n\t\t\"f79\":879,\n\t\t\"f80\":880,\n\t\t\"f81\":881,\n\t\t\"f82\":882,\n\t\t\"f83\":883,\n\t\t\"f84\":884,\n\t\t\"f85\":885,\n\t\t\"f86\":886,\n\t\t\"f87\":887,\n\t\t\"f88\":888,\n\t\t\"f89\":889,\n\t\t\"f90\":890,\n\t\t\"f91\":891,\n\t\t\"f92\":892,\n\t\t\"f93\":893,\n\t\t\"f94\":894,\n\t\t\"f95\":895,\n\t\t\"f96\":896,\n\t\t\"f97\":897,\n\t\t\"f98\":898,\n\t\t\"f99\":899\n\t},\n\t{\n\t\t\"f0\":900,\n\t\t\"f1\":901,\n\t\t\"f2\":902,\n\t\t\"f3\":903,\n\t\t\"f4\":904,\n\t\t\"f5\":905,\n\t\t\"f6\":906,\n\t\t\"f7\":907,\n\t\t\"f8\":908,\n\t\t\"f9\":909,\n\t\t\"f10\":910,\n\t\t\"f11\":911,\n\t\t\"f12\":912,\n\t\t\"f13\":913,\n\t\t\"f14\":914,\n\t\t\"f15\":915,\n\t\t\"f16\":916,\n\t\t\"f17\":917,\n\t\t\"f18\":918,\n\t\t\"f19\":919,\n\t\t\"f20\":920,\n\t\t\"f21\":921,\n\t\t\"f22\":922,\n\t\t\"f23\":923,\n\t\t\"f24\":924,\n\t\t\"f25\":925,\n\t\t\"f26\":926,\n\t\t\"f27\":927,\n\t\t\"f28\":928,\n\t\t\"f29\":929,\n\t\t\"f30\":930,\n\t\t\"f31\":931,\n\t\t\"f32\":932,\n\t\t\"f33\":933,\n\t\t\"f34\":934,\n\t\t\"f35\":935,\n\t\t\"f36\":936,\n\t\t\"f37\":937,\n\t\t\"f38\":938,\n\t\t\"f39\":939,\n\t\t\"f40\":940,\n\t\t\"f41\":941,\n\t\t\"f42\":942,\n\t\t\"f43\":943,\n\t\t\"f44\":944,\n\t\t\"f45\":945,\n\t\t\"f46\":946,\n\t\t\"f47\":947,\n\t\t\"f48\":948,\n\t\t\"f49\":949,\n\t\t\"f50\":950,\n\t\t\"f51\":951,\n\t\t\"f52\":952,\n\t\t\"f53\":953,\n\t\t\"f54\":954,\n\t\t\"f55\":955,\n\t\t\"f56\":956,\n\t\t\"f57\":957,\n\t\t\"f58\":958,\n\t\t\"f59\":959,\n\t\t\"f60\":960,\n\t\t\"f61\":961,\n\t\t\"f62\":962,\n\t\t\"f63\":963,\n\t\t\"f64\":964,\n\t\t\"f65\":965,\n\t\t\"f66\":966,\n\t\t\"f67\":967,\n\t\t\"f68\":968,\n\t\t\"f69\":969,\n\t\t\"f70\":970,\n\t\t\"f71\":971,\n\t\t\"f72\":972,\n\t\t\"f73\":973,\n\t\t\"f74\":974,\n\t\t\"f75\":975,\n\t\t\"f76\":976,\n\t\t\"f77\":977,\n\t\t\"f78\":978,\n\t\t\"f79\":979,\n\t\t\"f80\":980,\n\t\t\"f81\":981,\n\t\t\"f82\":982,\n\t\t\"f83\":983,\n\t\t\"f84\":984,\n\t\t\"f85\":985,\n\t\t\"f86\":986,\n\t\t\"f87\":987,\n\t\t\"f88\":988,\n\t\t\"f89\":989,\n\t\t\"f90\":990,\n\t\t\"f91\":991,\n\t\t\"f92\":992,\n\t\t\"f93\":993,\n\t\t\"f94\":994,\n\t\t\"f95\":995,\n\t\t\"f96\":996,\n\t\t\"f97\":997,\n\t\t\"f98\":998,\n\t\t\"f99\":999\n\t}\n]\n"
  },
  {
    "path": "src/test/resources/json/int_10000.json",
    "content": "[\n\t{\n\t\t\"f0\":0,\n\t\t\"f1\":1,\n\t\t\"f2\":2,\n\t\t\"f3\":3,\n\t\t\"f4\":4,\n\t\t\"f5\":5,\n\t\t\"f6\":6,\n\t\t\"f7\":7,\n\t\t\"f8\":8,\n\t\t\"f9\":9,\n\t\t\"f10\":10,\n\t\t\"f11\":11,\n\t\t\"f12\":12,\n\t\t\"f13\":13,\n\t\t\"f14\":14,\n\t\t\"f15\":15,\n\t\t\"f16\":16,\n\t\t\"f17\":17,\n\t\t\"f18\":18,\n\t\t\"f19\":19,\n\t\t\"f20\":20,\n\t\t\"f21\":21,\n\t\t\"f22\":22,\n\t\t\"f23\":23,\n\t\t\"f24\":24,\n\t\t\"f25\":25,\n\t\t\"f26\":26,\n\t\t\"f27\":27,\n\t\t\"f28\":28,\n\t\t\"f29\":29,\n\t\t\"f30\":30,\n\t\t\"f31\":31,\n\t\t\"f32\":32,\n\t\t\"f33\":33,\n\t\t\"f34\":34,\n\t\t\"f35\":35,\n\t\t\"f36\":36,\n\t\t\"f37\":37,\n\t\t\"f38\":38,\n\t\t\"f39\":39,\n\t\t\"f40\":40,\n\t\t\"f41\":41,\n\t\t\"f42\":42,\n\t\t\"f43\":43,\n\t\t\"f44\":44,\n\t\t\"f45\":45,\n\t\t\"f46\":46,\n\t\t\"f47\":47,\n\t\t\"f48\":48,\n\t\t\"f49\":49,\n\t\t\"f50\":50,\n\t\t\"f51\":51,\n\t\t\"f52\":52,\n\t\t\"f53\":53,\n\t\t\"f54\":54,\n\t\t\"f55\":55,\n\t\t\"f56\":56,\n\t\t\"f57\":57,\n\t\t\"f58\":58,\n\t\t\"f59\":59,\n\t\t\"f60\":60,\n\t\t\"f61\":61,\n\t\t\"f62\":62,\n\t\t\"f63\":63,\n\t\t\"f64\":64,\n\t\t\"f65\":65,\n\t\t\"f66\":66,\n\t\t\"f67\":67,\n\t\t\"f68\":68,\n\t\t\"f69\":69,\n\t\t\"f70\":70,\n\t\t\"f71\":71,\n\t\t\"f72\":72,\n\t\t\"f73\":73,\n\t\t\"f74\":74,\n\t\t\"f75\":75,\n\t\t\"f76\":76,\n\t\t\"f77\":77,\n\t\t\"f78\":78,\n\t\t\"f79\":79,\n\t\t\"f80\":80,\n\t\t\"f81\":81,\n\t\t\"f82\":82,\n\t\t\"f83\":83,\n\t\t\"f84\":84,\n\t\t\"f85\":85,\n\t\t\"f86\":86,\n\t\t\"f87\":87,\n\t\t\"f88\":88,\n\t\t\"f89\":89,\n\t\t\"f90\":90,\n\t\t\"f91\":91,\n\t\t\"f92\":92,\n\t\t\"f93\":93,\n\t\t\"f94\":94,\n\t\t\"f95\":95,\n\t\t\"f96\":96,\n\t\t\"f97\":97,\n\t\t\"f98\":98,\n\t\t\"f99\":99\n\t},\n\t{\n\t\t\"f0\":100,\n\t\t\"f1\":101,\n\t\t\"f2\":102,\n\t\t\"f3\":103,\n\t\t\"f4\":104,\n\t\t\"f5\":105,\n\t\t\"f6\":106,\n\t\t\"f7\":107,\n\t\t\"f8\":108,\n\t\t\"f9\":109,\n\t\t\"f10\":110,\n\t\t\"f11\":111,\n\t\t\"f12\":112,\n\t\t\"f13\":113,\n\t\t\"f14\":114,\n\t\t\"f15\":115,\n\t\t\"f16\":116,\n\t\t\"f17\":117,\n\t\t\"f18\":118,\n\t\t\"f19\":119,\n\t\t\"f20\":120,\n\t\t\"f21\":121,\n\t\t\"f22\":122,\n\t\t\"f23\":123,\n\t\t\"f24\":124,\n\t\t\"f25\":125,\n\t\t\"f26\":126,\n\t\t\"f27\":127,\n\t\t\"f28\":128,\n\t\t\"f29\":129,\n\t\t\"f30\":130,\n\t\t\"f31\":131,\n\t\t\"f32\":132,\n\t\t\"f33\":133,\n\t\t\"f34\":134,\n\t\t\"f35\":135,\n\t\t\"f36\":136,\n\t\t\"f37\":137,\n\t\t\"f38\":138,\n\t\t\"f39\":139,\n\t\t\"f40\":140,\n\t\t\"f41\":141,\n\t\t\"f42\":142,\n\t\t\"f43\":143,\n\t\t\"f44\":144,\n\t\t\"f45\":145,\n\t\t\"f46\":146,\n\t\t\"f47\":147,\n\t\t\"f48\":148,\n\t\t\"f49\":149,\n\t\t\"f50\":150,\n\t\t\"f51\":151,\n\t\t\"f52\":152,\n\t\t\"f53\":153,\n\t\t\"f54\":154,\n\t\t\"f55\":155,\n\t\t\"f56\":156,\n\t\t\"f57\":157,\n\t\t\"f58\":158,\n\t\t\"f59\":159,\n\t\t\"f60\":160,\n\t\t\"f61\":161,\n\t\t\"f62\":162,\n\t\t\"f63\":163,\n\t\t\"f64\":164,\n\t\t\"f65\":165,\n\t\t\"f66\":166,\n\t\t\"f67\":167,\n\t\t\"f68\":168,\n\t\t\"f69\":169,\n\t\t\"f70\":170,\n\t\t\"f71\":171,\n\t\t\"f72\":172,\n\t\t\"f73\":173,\n\t\t\"f74\":174,\n\t\t\"f75\":175,\n\t\t\"f76\":176,\n\t\t\"f77\":177,\n\t\t\"f78\":178,\n\t\t\"f79\":179,\n\t\t\"f80\":180,\n\t\t\"f81\":181,\n\t\t\"f82\":182,\n\t\t\"f83\":183,\n\t\t\"f84\":184,\n\t\t\"f85\":185,\n\t\t\"f86\":186,\n\t\t\"f87\":187,\n\t\t\"f88\":188,\n\t\t\"f89\":189,\n\t\t\"f90\":190,\n\t\t\"f91\":191,\n\t\t\"f92\":192,\n\t\t\"f93\":193,\n\t\t\"f94\":194,\n\t\t\"f95\":195,\n\t\t\"f96\":196,\n\t\t\"f97\":197,\n\t\t\"f98\":198,\n\t\t\"f99\":199\n\t},\n\t{\n\t\t\"f0\":200,\n\t\t\"f1\":201,\n\t\t\"f2\":202,\n\t\t\"f3\":203,\n\t\t\"f4\":204,\n\t\t\"f5\":205,\n\t\t\"f6\":206,\n\t\t\"f7\":207,\n\t\t\"f8\":208,\n\t\t\"f9\":209,\n\t\t\"f10\":210,\n\t\t\"f11\":211,\n\t\t\"f12\":212,\n\t\t\"f13\":213,\n\t\t\"f14\":214,\n\t\t\"f15\":215,\n\t\t\"f16\":216,\n\t\t\"f17\":217,\n\t\t\"f18\":218,\n\t\t\"f19\":219,\n\t\t\"f20\":220,\n\t\t\"f21\":221,\n\t\t\"f22\":222,\n\t\t\"f23\":223,\n\t\t\"f24\":224,\n\t\t\"f25\":225,\n\t\t\"f26\":226,\n\t\t\"f27\":227,\n\t\t\"f28\":228,\n\t\t\"f29\":229,\n\t\t\"f30\":230,\n\t\t\"f31\":231,\n\t\t\"f32\":232,\n\t\t\"f33\":233,\n\t\t\"f34\":234,\n\t\t\"f35\":235,\n\t\t\"f36\":236,\n\t\t\"f37\":237,\n\t\t\"f38\":238,\n\t\t\"f39\":239,\n\t\t\"f40\":240,\n\t\t\"f41\":241,\n\t\t\"f42\":242,\n\t\t\"f43\":243,\n\t\t\"f44\":244,\n\t\t\"f45\":245,\n\t\t\"f46\":246,\n\t\t\"f47\":247,\n\t\t\"f48\":248,\n\t\t\"f49\":249,\n\t\t\"f50\":250,\n\t\t\"f51\":251,\n\t\t\"f52\":252,\n\t\t\"f53\":253,\n\t\t\"f54\":254,\n\t\t\"f55\":255,\n\t\t\"f56\":256,\n\t\t\"f57\":257,\n\t\t\"f58\":258,\n\t\t\"f59\":259,\n\t\t\"f60\":260,\n\t\t\"f61\":261,\n\t\t\"f62\":262,\n\t\t\"f63\":263,\n\t\t\"f64\":264,\n\t\t\"f65\":265,\n\t\t\"f66\":266,\n\t\t\"f67\":267,\n\t\t\"f68\":268,\n\t\t\"f69\":269,\n\t\t\"f70\":270,\n\t\t\"f71\":271,\n\t\t\"f72\":272,\n\t\t\"f73\":273,\n\t\t\"f74\":274,\n\t\t\"f75\":275,\n\t\t\"f76\":276,\n\t\t\"f77\":277,\n\t\t\"f78\":278,\n\t\t\"f79\":279,\n\t\t\"f80\":280,\n\t\t\"f81\":281,\n\t\t\"f82\":282,\n\t\t\"f83\":283,\n\t\t\"f84\":284,\n\t\t\"f85\":285,\n\t\t\"f86\":286,\n\t\t\"f87\":287,\n\t\t\"f88\":288,\n\t\t\"f89\":289,\n\t\t\"f90\":290,\n\t\t\"f91\":291,\n\t\t\"f92\":292,\n\t\t\"f93\":293,\n\t\t\"f94\":294,\n\t\t\"f95\":295,\n\t\t\"f96\":296,\n\t\t\"f97\":297,\n\t\t\"f98\":298,\n\t\t\"f99\":299\n\t},\n\t{\n\t\t\"f0\":300,\n\t\t\"f1\":301,\n\t\t\"f2\":302,\n\t\t\"f3\":303,\n\t\t\"f4\":304,\n\t\t\"f5\":305,\n\t\t\"f6\":306,\n\t\t\"f7\":307,\n\t\t\"f8\":308,\n\t\t\"f9\":309,\n\t\t\"f10\":310,\n\t\t\"f11\":311,\n\t\t\"f12\":312,\n\t\t\"f13\":313,\n\t\t\"f14\":314,\n\t\t\"f15\":315,\n\t\t\"f16\":316,\n\t\t\"f17\":317,\n\t\t\"f18\":318,\n\t\t\"f19\":319,\n\t\t\"f20\":320,\n\t\t\"f21\":321,\n\t\t\"f22\":322,\n\t\t\"f23\":323,\n\t\t\"f24\":324,\n\t\t\"f25\":325,\n\t\t\"f26\":326,\n\t\t\"f27\":327,\n\t\t\"f28\":328,\n\t\t\"f29\":329,\n\t\t\"f30\":330,\n\t\t\"f31\":331,\n\t\t\"f32\":332,\n\t\t\"f33\":333,\n\t\t\"f34\":334,\n\t\t\"f35\":335,\n\t\t\"f36\":336,\n\t\t\"f37\":337,\n\t\t\"f38\":338,\n\t\t\"f39\":339,\n\t\t\"f40\":340,\n\t\t\"f41\":341,\n\t\t\"f42\":342,\n\t\t\"f43\":343,\n\t\t\"f44\":344,\n\t\t\"f45\":345,\n\t\t\"f46\":346,\n\t\t\"f47\":347,\n\t\t\"f48\":348,\n\t\t\"f49\":349,\n\t\t\"f50\":350,\n\t\t\"f51\":351,\n\t\t\"f52\":352,\n\t\t\"f53\":353,\n\t\t\"f54\":354,\n\t\t\"f55\":355,\n\t\t\"f56\":356,\n\t\t\"f57\":357,\n\t\t\"f58\":358,\n\t\t\"f59\":359,\n\t\t\"f60\":360,\n\t\t\"f61\":361,\n\t\t\"f62\":362,\n\t\t\"f63\":363,\n\t\t\"f64\":364,\n\t\t\"f65\":365,\n\t\t\"f66\":366,\n\t\t\"f67\":367,\n\t\t\"f68\":368,\n\t\t\"f69\":369,\n\t\t\"f70\":370,\n\t\t\"f71\":371,\n\t\t\"f72\":372,\n\t\t\"f73\":373,\n\t\t\"f74\":374,\n\t\t\"f75\":375,\n\t\t\"f76\":376,\n\t\t\"f77\":377,\n\t\t\"f78\":378,\n\t\t\"f79\":379,\n\t\t\"f80\":380,\n\t\t\"f81\":381,\n\t\t\"f82\":382,\n\t\t\"f83\":383,\n\t\t\"f84\":384,\n\t\t\"f85\":385,\n\t\t\"f86\":386,\n\t\t\"f87\":387,\n\t\t\"f88\":388,\n\t\t\"f89\":389,\n\t\t\"f90\":390,\n\t\t\"f91\":391,\n\t\t\"f92\":392,\n\t\t\"f93\":393,\n\t\t\"f94\":394,\n\t\t\"f95\":395,\n\t\t\"f96\":396,\n\t\t\"f97\":397,\n\t\t\"f98\":398,\n\t\t\"f99\":399\n\t},\n\t{\n\t\t\"f0\":400,\n\t\t\"f1\":401,\n\t\t\"f2\":402,\n\t\t\"f3\":403,\n\t\t\"f4\":404,\n\t\t\"f5\":405,\n\t\t\"f6\":406,\n\t\t\"f7\":407,\n\t\t\"f8\":408,\n\t\t\"f9\":409,\n\t\t\"f10\":410,\n\t\t\"f11\":411,\n\t\t\"f12\":412,\n\t\t\"f13\":413,\n\t\t\"f14\":414,\n\t\t\"f15\":415,\n\t\t\"f16\":416,\n\t\t\"f17\":417,\n\t\t\"f18\":418,\n\t\t\"f19\":419,\n\t\t\"f20\":420,\n\t\t\"f21\":421,\n\t\t\"f22\":422,\n\t\t\"f23\":423,\n\t\t\"f24\":424,\n\t\t\"f25\":425,\n\t\t\"f26\":426,\n\t\t\"f27\":427,\n\t\t\"f28\":428,\n\t\t\"f29\":429,\n\t\t\"f30\":430,\n\t\t\"f31\":431,\n\t\t\"f32\":432,\n\t\t\"f33\":433,\n\t\t\"f34\":434,\n\t\t\"f35\":435,\n\t\t\"f36\":436,\n\t\t\"f37\":437,\n\t\t\"f38\":438,\n\t\t\"f39\":439,\n\t\t\"f40\":440,\n\t\t\"f41\":441,\n\t\t\"f42\":442,\n\t\t\"f43\":443,\n\t\t\"f44\":444,\n\t\t\"f45\":445,\n\t\t\"f46\":446,\n\t\t\"f47\":447,\n\t\t\"f48\":448,\n\t\t\"f49\":449,\n\t\t\"f50\":450,\n\t\t\"f51\":451,\n\t\t\"f52\":452,\n\t\t\"f53\":453,\n\t\t\"f54\":454,\n\t\t\"f55\":455,\n\t\t\"f56\":456,\n\t\t\"f57\":457,\n\t\t\"f58\":458,\n\t\t\"f59\":459,\n\t\t\"f60\":460,\n\t\t\"f61\":461,\n\t\t\"f62\":462,\n\t\t\"f63\":463,\n\t\t\"f64\":464,\n\t\t\"f65\":465,\n\t\t\"f66\":466,\n\t\t\"f67\":467,\n\t\t\"f68\":468,\n\t\t\"f69\":469,\n\t\t\"f70\":470,\n\t\t\"f71\":471,\n\t\t\"f72\":472,\n\t\t\"f73\":473,\n\t\t\"f74\":474,\n\t\t\"f75\":475,\n\t\t\"f76\":476,\n\t\t\"f77\":477,\n\t\t\"f78\":478,\n\t\t\"f79\":479,\n\t\t\"f80\":480,\n\t\t\"f81\":481,\n\t\t\"f82\":482,\n\t\t\"f83\":483,\n\t\t\"f84\":484,\n\t\t\"f85\":485,\n\t\t\"f86\":486,\n\t\t\"f87\":487,\n\t\t\"f88\":488,\n\t\t\"f89\":489,\n\t\t\"f90\":490,\n\t\t\"f91\":491,\n\t\t\"f92\":492,\n\t\t\"f93\":493,\n\t\t\"f94\":494,\n\t\t\"f95\":495,\n\t\t\"f96\":496,\n\t\t\"f97\":497,\n\t\t\"f98\":498,\n\t\t\"f99\":499\n\t},\n\t{\n\t\t\"f0\":500,\n\t\t\"f1\":501,\n\t\t\"f2\":502,\n\t\t\"f3\":503,\n\t\t\"f4\":504,\n\t\t\"f5\":505,\n\t\t\"f6\":506,\n\t\t\"f7\":507,\n\t\t\"f8\":508,\n\t\t\"f9\":509,\n\t\t\"f10\":510,\n\t\t\"f11\":511,\n\t\t\"f12\":512,\n\t\t\"f13\":513,\n\t\t\"f14\":514,\n\t\t\"f15\":515,\n\t\t\"f16\":516,\n\t\t\"f17\":517,\n\t\t\"f18\":518,\n\t\t\"f19\":519,\n\t\t\"f20\":520,\n\t\t\"f21\":521,\n\t\t\"f22\":522,\n\t\t\"f23\":523,\n\t\t\"f24\":524,\n\t\t\"f25\":525,\n\t\t\"f26\":526,\n\t\t\"f27\":527,\n\t\t\"f28\":528,\n\t\t\"f29\":529,\n\t\t\"f30\":530,\n\t\t\"f31\":531,\n\t\t\"f32\":532,\n\t\t\"f33\":533,\n\t\t\"f34\":534,\n\t\t\"f35\":535,\n\t\t\"f36\":536,\n\t\t\"f37\":537,\n\t\t\"f38\":538,\n\t\t\"f39\":539,\n\t\t\"f40\":540,\n\t\t\"f41\":541,\n\t\t\"f42\":542,\n\t\t\"f43\":543,\n\t\t\"f44\":544,\n\t\t\"f45\":545,\n\t\t\"f46\":546,\n\t\t\"f47\":547,\n\t\t\"f48\":548,\n\t\t\"f49\":549,\n\t\t\"f50\":550,\n\t\t\"f51\":551,\n\t\t\"f52\":552,\n\t\t\"f53\":553,\n\t\t\"f54\":554,\n\t\t\"f55\":555,\n\t\t\"f56\":556,\n\t\t\"f57\":557,\n\t\t\"f58\":558,\n\t\t\"f59\":559,\n\t\t\"f60\":560,\n\t\t\"f61\":561,\n\t\t\"f62\":562,\n\t\t\"f63\":563,\n\t\t\"f64\":564,\n\t\t\"f65\":565,\n\t\t\"f66\":566,\n\t\t\"f67\":567,\n\t\t\"f68\":568,\n\t\t\"f69\":569,\n\t\t\"f70\":570,\n\t\t\"f71\":571,\n\t\t\"f72\":572,\n\t\t\"f73\":573,\n\t\t\"f74\":574,\n\t\t\"f75\":575,\n\t\t\"f76\":576,\n\t\t\"f77\":577,\n\t\t\"f78\":578,\n\t\t\"f79\":579,\n\t\t\"f80\":580,\n\t\t\"f81\":581,\n\t\t\"f82\":582,\n\t\t\"f83\":583,\n\t\t\"f84\":584,\n\t\t\"f85\":585,\n\t\t\"f86\":586,\n\t\t\"f87\":587,\n\t\t\"f88\":588,\n\t\t\"f89\":589,\n\t\t\"f90\":590,\n\t\t\"f91\":591,\n\t\t\"f92\":592,\n\t\t\"f93\":593,\n\t\t\"f94\":594,\n\t\t\"f95\":595,\n\t\t\"f96\":596,\n\t\t\"f97\":597,\n\t\t\"f98\":598,\n\t\t\"f99\":599\n\t},\n\t{\n\t\t\"f0\":600,\n\t\t\"f1\":601,\n\t\t\"f2\":602,\n\t\t\"f3\":603,\n\t\t\"f4\":604,\n\t\t\"f5\":605,\n\t\t\"f6\":606,\n\t\t\"f7\":607,\n\t\t\"f8\":608,\n\t\t\"f9\":609,\n\t\t\"f10\":610,\n\t\t\"f11\":611,\n\t\t\"f12\":612,\n\t\t\"f13\":613,\n\t\t\"f14\":614,\n\t\t\"f15\":615,\n\t\t\"f16\":616,\n\t\t\"f17\":617,\n\t\t\"f18\":618,\n\t\t\"f19\":619,\n\t\t\"f20\":620,\n\t\t\"f21\":621,\n\t\t\"f22\":622,\n\t\t\"f23\":623,\n\t\t\"f24\":624,\n\t\t\"f25\":625,\n\t\t\"f26\":626,\n\t\t\"f27\":627,\n\t\t\"f28\":628,\n\t\t\"f29\":629,\n\t\t\"f30\":630,\n\t\t\"f31\":631,\n\t\t\"f32\":632,\n\t\t\"f33\":633,\n\t\t\"f34\":634,\n\t\t\"f35\":635,\n\t\t\"f36\":636,\n\t\t\"f37\":637,\n\t\t\"f38\":638,\n\t\t\"f39\":639,\n\t\t\"f40\":640,\n\t\t\"f41\":641,\n\t\t\"f42\":642,\n\t\t\"f43\":643,\n\t\t\"f44\":644,\n\t\t\"f45\":645,\n\t\t\"f46\":646,\n\t\t\"f47\":647,\n\t\t\"f48\":648,\n\t\t\"f49\":649,\n\t\t\"f50\":650,\n\t\t\"f51\":651,\n\t\t\"f52\":652,\n\t\t\"f53\":653,\n\t\t\"f54\":654,\n\t\t\"f55\":655,\n\t\t\"f56\":656,\n\t\t\"f57\":657,\n\t\t\"f58\":658,\n\t\t\"f59\":659,\n\t\t\"f60\":660,\n\t\t\"f61\":661,\n\t\t\"f62\":662,\n\t\t\"f63\":663,\n\t\t\"f64\":664,\n\t\t\"f65\":665,\n\t\t\"f66\":666,\n\t\t\"f67\":667,\n\t\t\"f68\":668,\n\t\t\"f69\":669,\n\t\t\"f70\":670,\n\t\t\"f71\":671,\n\t\t\"f72\":672,\n\t\t\"f73\":673,\n\t\t\"f74\":674,\n\t\t\"f75\":675,\n\t\t\"f76\":676,\n\t\t\"f77\":677,\n\t\t\"f78\":678,\n\t\t\"f79\":679,\n\t\t\"f80\":680,\n\t\t\"f81\":681,\n\t\t\"f82\":682,\n\t\t\"f83\":683,\n\t\t\"f84\":684,\n\t\t\"f85\":685,\n\t\t\"f86\":686,\n\t\t\"f87\":687,\n\t\t\"f88\":688,\n\t\t\"f89\":689,\n\t\t\"f90\":690,\n\t\t\"f91\":691,\n\t\t\"f92\":692,\n\t\t\"f93\":693,\n\t\t\"f94\":694,\n\t\t\"f95\":695,\n\t\t\"f96\":696,\n\t\t\"f97\":697,\n\t\t\"f98\":698,\n\t\t\"f99\":699\n\t},\n\t{\n\t\t\"f0\":700,\n\t\t\"f1\":701,\n\t\t\"f2\":702,\n\t\t\"f3\":703,\n\t\t\"f4\":704,\n\t\t\"f5\":705,\n\t\t\"f6\":706,\n\t\t\"f7\":707,\n\t\t\"f8\":708,\n\t\t\"f9\":709,\n\t\t\"f10\":710,\n\t\t\"f11\":711,\n\t\t\"f12\":712,\n\t\t\"f13\":713,\n\t\t\"f14\":714,\n\t\t\"f15\":715,\n\t\t\"f16\":716,\n\t\t\"f17\":717,\n\t\t\"f18\":718,\n\t\t\"f19\":719,\n\t\t\"f20\":720,\n\t\t\"f21\":721,\n\t\t\"f22\":722,\n\t\t\"f23\":723,\n\t\t\"f24\":724,\n\t\t\"f25\":725,\n\t\t\"f26\":726,\n\t\t\"f27\":727,\n\t\t\"f28\":728,\n\t\t\"f29\":729,\n\t\t\"f30\":730,\n\t\t\"f31\":731,\n\t\t\"f32\":732,\n\t\t\"f33\":733,\n\t\t\"f34\":734,\n\t\t\"f35\":735,\n\t\t\"f36\":736,\n\t\t\"f37\":737,\n\t\t\"f38\":738,\n\t\t\"f39\":739,\n\t\t\"f40\":740,\n\t\t\"f41\":741,\n\t\t\"f42\":742,\n\t\t\"f43\":743,\n\t\t\"f44\":744,\n\t\t\"f45\":745,\n\t\t\"f46\":746,\n\t\t\"f47\":747,\n\t\t\"f48\":748,\n\t\t\"f49\":749,\n\t\t\"f50\":750,\n\t\t\"f51\":751,\n\t\t\"f52\":752,\n\t\t\"f53\":753,\n\t\t\"f54\":754,\n\t\t\"f55\":755,\n\t\t\"f56\":756,\n\t\t\"f57\":757,\n\t\t\"f58\":758,\n\t\t\"f59\":759,\n\t\t\"f60\":760,\n\t\t\"f61\":761,\n\t\t\"f62\":762,\n\t\t\"f63\":763,\n\t\t\"f64\":764,\n\t\t\"f65\":765,\n\t\t\"f66\":766,\n\t\t\"f67\":767,\n\t\t\"f68\":768,\n\t\t\"f69\":769,\n\t\t\"f70\":770,\n\t\t\"f71\":771,\n\t\t\"f72\":772,\n\t\t\"f73\":773,\n\t\t\"f74\":774,\n\t\t\"f75\":775,\n\t\t\"f76\":776,\n\t\t\"f77\":777,\n\t\t\"f78\":778,\n\t\t\"f79\":779,\n\t\t\"f80\":780,\n\t\t\"f81\":781,\n\t\t\"f82\":782,\n\t\t\"f83\":783,\n\t\t\"f84\":784,\n\t\t\"f85\":785,\n\t\t\"f86\":786,\n\t\t\"f87\":787,\n\t\t\"f88\":788,\n\t\t\"f89\":789,\n\t\t\"f90\":790,\n\t\t\"f91\":791,\n\t\t\"f92\":792,\n\t\t\"f93\":793,\n\t\t\"f94\":794,\n\t\t\"f95\":795,\n\t\t\"f96\":796,\n\t\t\"f97\":797,\n\t\t\"f98\":798,\n\t\t\"f99\":799\n\t},\n\t{\n\t\t\"f0\":800,\n\t\t\"f1\":801,\n\t\t\"f2\":802,\n\t\t\"f3\":803,\n\t\t\"f4\":804,\n\t\t\"f5\":805,\n\t\t\"f6\":806,\n\t\t\"f7\":807,\n\t\t\"f8\":808,\n\t\t\"f9\":809,\n\t\t\"f10\":810,\n\t\t\"f11\":811,\n\t\t\"f12\":812,\n\t\t\"f13\":813,\n\t\t\"f14\":814,\n\t\t\"f15\":815,\n\t\t\"f16\":816,\n\t\t\"f17\":817,\n\t\t\"f18\":818,\n\t\t\"f19\":819,\n\t\t\"f20\":820,\n\t\t\"f21\":821,\n\t\t\"f22\":822,\n\t\t\"f23\":823,\n\t\t\"f24\":824,\n\t\t\"f25\":825,\n\t\t\"f26\":826,\n\t\t\"f27\":827,\n\t\t\"f28\":828,\n\t\t\"f29\":829,\n\t\t\"f30\":830,\n\t\t\"f31\":831,\n\t\t\"f32\":832,\n\t\t\"f33\":833,\n\t\t\"f34\":834,\n\t\t\"f35\":835,\n\t\t\"f36\":836,\n\t\t\"f37\":837,\n\t\t\"f38\":838,\n\t\t\"f39\":839,\n\t\t\"f40\":840,\n\t\t\"f41\":841,\n\t\t\"f42\":842,\n\t\t\"f43\":843,\n\t\t\"f44\":844,\n\t\t\"f45\":845,\n\t\t\"f46\":846,\n\t\t\"f47\":847,\n\t\t\"f48\":848,\n\t\t\"f49\":849,\n\t\t\"f50\":850,\n\t\t\"f51\":851,\n\t\t\"f52\":852,\n\t\t\"f53\":853,\n\t\t\"f54\":854,\n\t\t\"f55\":855,\n\t\t\"f56\":856,\n\t\t\"f57\":857,\n\t\t\"f58\":858,\n\t\t\"f59\":859,\n\t\t\"f60\":860,\n\t\t\"f61\":861,\n\t\t\"f62\":862,\n\t\t\"f63\":863,\n\t\t\"f64\":864,\n\t\t\"f65\":865,\n\t\t\"f66\":866,\n\t\t\"f67\":867,\n\t\t\"f68\":868,\n\t\t\"f69\":869,\n\t\t\"f70\":870,\n\t\t\"f71\":871,\n\t\t\"f72\":872,\n\t\t\"f73\":873,\n\t\t\"f74\":874,\n\t\t\"f75\":875,\n\t\t\"f76\":876,\n\t\t\"f77\":877,\n\t\t\"f78\":878,\n\t\t\"f79\":879,\n\t\t\"f80\":880,\n\t\t\"f81\":881,\n\t\t\"f82\":882,\n\t\t\"f83\":883,\n\t\t\"f84\":884,\n\t\t\"f85\":885,\n\t\t\"f86\":886,\n\t\t\"f87\":887,\n\t\t\"f88\":888,\n\t\t\"f89\":889,\n\t\t\"f90\":890,\n\t\t\"f91\":891,\n\t\t\"f92\":892,\n\t\t\"f93\":893,\n\t\t\"f94\":894,\n\t\t\"f95\":895,\n\t\t\"f96\":896,\n\t\t\"f97\":897,\n\t\t\"f98\":898,\n\t\t\"f99\":899\n\t},\n\t{\n\t\t\"f0\":900,\n\t\t\"f1\":901,\n\t\t\"f2\":902,\n\t\t\"f3\":903,\n\t\t\"f4\":904,\n\t\t\"f5\":905,\n\t\t\"f6\":906,\n\t\t\"f7\":907,\n\t\t\"f8\":908,\n\t\t\"f9\":909,\n\t\t\"f10\":910,\n\t\t\"f11\":911,\n\t\t\"f12\":912,\n\t\t\"f13\":913,\n\t\t\"f14\":914,\n\t\t\"f15\":915,\n\t\t\"f16\":916,\n\t\t\"f17\":917,\n\t\t\"f18\":918,\n\t\t\"f19\":919,\n\t\t\"f20\":920,\n\t\t\"f21\":921,\n\t\t\"f22\":922,\n\t\t\"f23\":923,\n\t\t\"f24\":924,\n\t\t\"f25\":925,\n\t\t\"f26\":926,\n\t\t\"f27\":927,\n\t\t\"f28\":928,\n\t\t\"f29\":929,\n\t\t\"f30\":930,\n\t\t\"f31\":931,\n\t\t\"f32\":932,\n\t\t\"f33\":933,\n\t\t\"f34\":934,\n\t\t\"f35\":935,\n\t\t\"f36\":936,\n\t\t\"f37\":937,\n\t\t\"f38\":938,\n\t\t\"f39\":939,\n\t\t\"f40\":940,\n\t\t\"f41\":941,\n\t\t\"f42\":942,\n\t\t\"f43\":943,\n\t\t\"f44\":944,\n\t\t\"f45\":945,\n\t\t\"f46\":946,\n\t\t\"f47\":947,\n\t\t\"f48\":948,\n\t\t\"f49\":949,\n\t\t\"f50\":950,\n\t\t\"f51\":951,\n\t\t\"f52\":952,\n\t\t\"f53\":953,\n\t\t\"f54\":954,\n\t\t\"f55\":955,\n\t\t\"f56\":956,\n\t\t\"f57\":957,\n\t\t\"f58\":958,\n\t\t\"f59\":959,\n\t\t\"f60\":960,\n\t\t\"f61\":961,\n\t\t\"f62\":962,\n\t\t\"f63\":963,\n\t\t\"f64\":964,\n\t\t\"f65\":965,\n\t\t\"f66\":966,\n\t\t\"f67\":967,\n\t\t\"f68\":968,\n\t\t\"f69\":969,\n\t\t\"f70\":970,\n\t\t\"f71\":971,\n\t\t\"f72\":972,\n\t\t\"f73\":973,\n\t\t\"f74\":974,\n\t\t\"f75\":975,\n\t\t\"f76\":976,\n\t\t\"f77\":977,\n\t\t\"f78\":978,\n\t\t\"f79\":979,\n\t\t\"f80\":980,\n\t\t\"f81\":981,\n\t\t\"f82\":982,\n\t\t\"f83\":983,\n\t\t\"f84\":984,\n\t\t\"f85\":985,\n\t\t\"f86\":986,\n\t\t\"f87\":987,\n\t\t\"f88\":988,\n\t\t\"f89\":989,\n\t\t\"f90\":990,\n\t\t\"f91\":991,\n\t\t\"f92\":992,\n\t\t\"f93\":993,\n\t\t\"f94\":994,\n\t\t\"f95\":995,\n\t\t\"f96\":996,\n\t\t\"f97\":997,\n\t\t\"f98\":998,\n\t\t\"f99\":999\n\t},\n\t{\n\t\t\"f0\":1000,\n\t\t\"f1\":1001,\n\t\t\"f2\":1002,\n\t\t\"f3\":1003,\n\t\t\"f4\":1004,\n\t\t\"f5\":1005,\n\t\t\"f6\":1006,\n\t\t\"f7\":1007,\n\t\t\"f8\":1008,\n\t\t\"f9\":1009,\n\t\t\"f10\":1010,\n\t\t\"f11\":1011,\n\t\t\"f12\":1012,\n\t\t\"f13\":1013,\n\t\t\"f14\":1014,\n\t\t\"f15\":1015,\n\t\t\"f16\":1016,\n\t\t\"f17\":1017,\n\t\t\"f18\":1018,\n\t\t\"f19\":1019,\n\t\t\"f20\":1020,\n\t\t\"f21\":1021,\n\t\t\"f22\":1022,\n\t\t\"f23\":1023,\n\t\t\"f24\":1024,\n\t\t\"f25\":1025,\n\t\t\"f26\":1026,\n\t\t\"f27\":1027,\n\t\t\"f28\":1028,\n\t\t\"f29\":1029,\n\t\t\"f30\":1030,\n\t\t\"f31\":1031,\n\t\t\"f32\":1032,\n\t\t\"f33\":1033,\n\t\t\"f34\":1034,\n\t\t\"f35\":1035,\n\t\t\"f36\":1036,\n\t\t\"f37\":1037,\n\t\t\"f38\":1038,\n\t\t\"f39\":1039,\n\t\t\"f40\":1040,\n\t\t\"f41\":1041,\n\t\t\"f42\":1042,\n\t\t\"f43\":1043,\n\t\t\"f44\":1044,\n\t\t\"f45\":1045,\n\t\t\"f46\":1046,\n\t\t\"f47\":1047,\n\t\t\"f48\":1048,\n\t\t\"f49\":1049,\n\t\t\"f50\":1050,\n\t\t\"f51\":1051,\n\t\t\"f52\":1052,\n\t\t\"f53\":1053,\n\t\t\"f54\":1054,\n\t\t\"f55\":1055,\n\t\t\"f56\":1056,\n\t\t\"f57\":1057,\n\t\t\"f58\":1058,\n\t\t\"f59\":1059,\n\t\t\"f60\":1060,\n\t\t\"f61\":1061,\n\t\t\"f62\":1062,\n\t\t\"f63\":1063,\n\t\t\"f64\":1064,\n\t\t\"f65\":1065,\n\t\t\"f66\":1066,\n\t\t\"f67\":1067,\n\t\t\"f68\":1068,\n\t\t\"f69\":1069,\n\t\t\"f70\":1070,\n\t\t\"f71\":1071,\n\t\t\"f72\":1072,\n\t\t\"f73\":1073,\n\t\t\"f74\":1074,\n\t\t\"f75\":1075,\n\t\t\"f76\":1076,\n\t\t\"f77\":1077,\n\t\t\"f78\":1078,\n\t\t\"f79\":1079,\n\t\t\"f80\":1080,\n\t\t\"f81\":1081,\n\t\t\"f82\":1082,\n\t\t\"f83\":1083,\n\t\t\"f84\":1084,\n\t\t\"f85\":1085,\n\t\t\"f86\":1086,\n\t\t\"f87\":1087,\n\t\t\"f88\":1088,\n\t\t\"f89\":1089,\n\t\t\"f90\":1090,\n\t\t\"f91\":1091,\n\t\t\"f92\":1092,\n\t\t\"f93\":1093,\n\t\t\"f94\":1094,\n\t\t\"f95\":1095,\n\t\t\"f96\":1096,\n\t\t\"f97\":1097,\n\t\t\"f98\":1098,\n\t\t\"f99\":1099\n\t},\n\t{\n\t\t\"f0\":1100,\n\t\t\"f1\":1101,\n\t\t\"f2\":1102,\n\t\t\"f3\":1103,\n\t\t\"f4\":1104,\n\t\t\"f5\":1105,\n\t\t\"f6\":1106,\n\t\t\"f7\":1107,\n\t\t\"f8\":1108,\n\t\t\"f9\":1109,\n\t\t\"f10\":1110,\n\t\t\"f11\":1111,\n\t\t\"f12\":1112,\n\t\t\"f13\":1113,\n\t\t\"f14\":1114,\n\t\t\"f15\":1115,\n\t\t\"f16\":1116,\n\t\t\"f17\":1117,\n\t\t\"f18\":1118,\n\t\t\"f19\":1119,\n\t\t\"f20\":1120,\n\t\t\"f21\":1121,\n\t\t\"f22\":1122,\n\t\t\"f23\":1123,\n\t\t\"f24\":1124,\n\t\t\"f25\":1125,\n\t\t\"f26\":1126,\n\t\t\"f27\":1127,\n\t\t\"f28\":1128,\n\t\t\"f29\":1129,\n\t\t\"f30\":1130,\n\t\t\"f31\":1131,\n\t\t\"f32\":1132,\n\t\t\"f33\":1133,\n\t\t\"f34\":1134,\n\t\t\"f35\":1135,\n\t\t\"f36\":1136,\n\t\t\"f37\":1137,\n\t\t\"f38\":1138,\n\t\t\"f39\":1139,\n\t\t\"f40\":1140,\n\t\t\"f41\":1141,\n\t\t\"f42\":1142,\n\t\t\"f43\":1143,\n\t\t\"f44\":1144,\n\t\t\"f45\":1145,\n\t\t\"f46\":1146,\n\t\t\"f47\":1147,\n\t\t\"f48\":1148,\n\t\t\"f49\":1149,\n\t\t\"f50\":1150,\n\t\t\"f51\":1151,\n\t\t\"f52\":1152,\n\t\t\"f53\":1153,\n\t\t\"f54\":1154,\n\t\t\"f55\":1155,\n\t\t\"f56\":1156,\n\t\t\"f57\":1157,\n\t\t\"f58\":1158,\n\t\t\"f59\":1159,\n\t\t\"f60\":1160,\n\t\t\"f61\":1161,\n\t\t\"f62\":1162,\n\t\t\"f63\":1163,\n\t\t\"f64\":1164,\n\t\t\"f65\":1165,\n\t\t\"f66\":1166,\n\t\t\"f67\":1167,\n\t\t\"f68\":1168,\n\t\t\"f69\":1169,\n\t\t\"f70\":1170,\n\t\t\"f71\":1171,\n\t\t\"f72\":1172,\n\t\t\"f73\":1173,\n\t\t\"f74\":1174,\n\t\t\"f75\":1175,\n\t\t\"f76\":1176,\n\t\t\"f77\":1177,\n\t\t\"f78\":1178,\n\t\t\"f79\":1179,\n\t\t\"f80\":1180,\n\t\t\"f81\":1181,\n\t\t\"f82\":1182,\n\t\t\"f83\":1183,\n\t\t\"f84\":1184,\n\t\t\"f85\":1185,\n\t\t\"f86\":1186,\n\t\t\"f87\":1187,\n\t\t\"f88\":1188,\n\t\t\"f89\":1189,\n\t\t\"f90\":1190,\n\t\t\"f91\":1191,\n\t\t\"f92\":1192,\n\t\t\"f93\":1193,\n\t\t\"f94\":1194,\n\t\t\"f95\":1195,\n\t\t\"f96\":1196,\n\t\t\"f97\":1197,\n\t\t\"f98\":1198,\n\t\t\"f99\":1199\n\t},\n\t{\n\t\t\"f0\":1200,\n\t\t\"f1\":1201,\n\t\t\"f2\":1202,\n\t\t\"f3\":1203,\n\t\t\"f4\":1204,\n\t\t\"f5\":1205,\n\t\t\"f6\":1206,\n\t\t\"f7\":1207,\n\t\t\"f8\":1208,\n\t\t\"f9\":1209,\n\t\t\"f10\":1210,\n\t\t\"f11\":1211,\n\t\t\"f12\":1212,\n\t\t\"f13\":1213,\n\t\t\"f14\":1214,\n\t\t\"f15\":1215,\n\t\t\"f16\":1216,\n\t\t\"f17\":1217,\n\t\t\"f18\":1218,\n\t\t\"f19\":1219,\n\t\t\"f20\":1220,\n\t\t\"f21\":1221,\n\t\t\"f22\":1222,\n\t\t\"f23\":1223,\n\t\t\"f24\":1224,\n\t\t\"f25\":1225,\n\t\t\"f26\":1226,\n\t\t\"f27\":1227,\n\t\t\"f28\":1228,\n\t\t\"f29\":1229,\n\t\t\"f30\":1230,\n\t\t\"f31\":1231,\n\t\t\"f32\":1232,\n\t\t\"f33\":1233,\n\t\t\"f34\":1234,\n\t\t\"f35\":1235,\n\t\t\"f36\":1236,\n\t\t\"f37\":1237,\n\t\t\"f38\":1238,\n\t\t\"f39\":1239,\n\t\t\"f40\":1240,\n\t\t\"f41\":1241,\n\t\t\"f42\":1242,\n\t\t\"f43\":1243,\n\t\t\"f44\":1244,\n\t\t\"f45\":1245,\n\t\t\"f46\":1246,\n\t\t\"f47\":1247,\n\t\t\"f48\":1248,\n\t\t\"f49\":1249,\n\t\t\"f50\":1250,\n\t\t\"f51\":1251,\n\t\t\"f52\":1252,\n\t\t\"f53\":1253,\n\t\t\"f54\":1254,\n\t\t\"f55\":1255,\n\t\t\"f56\":1256,\n\t\t\"f57\":1257,\n\t\t\"f58\":1258,\n\t\t\"f59\":1259,\n\t\t\"f60\":1260,\n\t\t\"f61\":1261,\n\t\t\"f62\":1262,\n\t\t\"f63\":1263,\n\t\t\"f64\":1264,\n\t\t\"f65\":1265,\n\t\t\"f66\":1266,\n\t\t\"f67\":1267,\n\t\t\"f68\":1268,\n\t\t\"f69\":1269,\n\t\t\"f70\":1270,\n\t\t\"f71\":1271,\n\t\t\"f72\":1272,\n\t\t\"f73\":1273,\n\t\t\"f74\":1274,\n\t\t\"f75\":1275,\n\t\t\"f76\":1276,\n\t\t\"f77\":1277,\n\t\t\"f78\":1278,\n\t\t\"f79\":1279,\n\t\t\"f80\":1280,\n\t\t\"f81\":1281,\n\t\t\"f82\":1282,\n\t\t\"f83\":1283,\n\t\t\"f84\":1284,\n\t\t\"f85\":1285,\n\t\t\"f86\":1286,\n\t\t\"f87\":1287,\n\t\t\"f88\":1288,\n\t\t\"f89\":1289,\n\t\t\"f90\":1290,\n\t\t\"f91\":1291,\n\t\t\"f92\":1292,\n\t\t\"f93\":1293,\n\t\t\"f94\":1294,\n\t\t\"f95\":1295,\n\t\t\"f96\":1296,\n\t\t\"f97\":1297,\n\t\t\"f98\":1298,\n\t\t\"f99\":1299\n\t},\n\t{\n\t\t\"f0\":1300,\n\t\t\"f1\":1301,\n\t\t\"f2\":1302,\n\t\t\"f3\":1303,\n\t\t\"f4\":1304,\n\t\t\"f5\":1305,\n\t\t\"f6\":1306,\n\t\t\"f7\":1307,\n\t\t\"f8\":1308,\n\t\t\"f9\":1309,\n\t\t\"f10\":1310,\n\t\t\"f11\":1311,\n\t\t\"f12\":1312,\n\t\t\"f13\":1313,\n\t\t\"f14\":1314,\n\t\t\"f15\":1315,\n\t\t\"f16\":1316,\n\t\t\"f17\":1317,\n\t\t\"f18\":1318,\n\t\t\"f19\":1319,\n\t\t\"f20\":1320,\n\t\t\"f21\":1321,\n\t\t\"f22\":1322,\n\t\t\"f23\":1323,\n\t\t\"f24\":1324,\n\t\t\"f25\":1325,\n\t\t\"f26\":1326,\n\t\t\"f27\":1327,\n\t\t\"f28\":1328,\n\t\t\"f29\":1329,\n\t\t\"f30\":1330,\n\t\t\"f31\":1331,\n\t\t\"f32\":1332,\n\t\t\"f33\":1333,\n\t\t\"f34\":1334,\n\t\t\"f35\":1335,\n\t\t\"f36\":1336,\n\t\t\"f37\":1337,\n\t\t\"f38\":1338,\n\t\t\"f39\":1339,\n\t\t\"f40\":1340,\n\t\t\"f41\":1341,\n\t\t\"f42\":1342,\n\t\t\"f43\":1343,\n\t\t\"f44\":1344,\n\t\t\"f45\":1345,\n\t\t\"f46\":1346,\n\t\t\"f47\":1347,\n\t\t\"f48\":1348,\n\t\t\"f49\":1349,\n\t\t\"f50\":1350,\n\t\t\"f51\":1351,\n\t\t\"f52\":1352,\n\t\t\"f53\":1353,\n\t\t\"f54\":1354,\n\t\t\"f55\":1355,\n\t\t\"f56\":1356,\n\t\t\"f57\":1357,\n\t\t\"f58\":1358,\n\t\t\"f59\":1359,\n\t\t\"f60\":1360,\n\t\t\"f61\":1361,\n\t\t\"f62\":1362,\n\t\t\"f63\":1363,\n\t\t\"f64\":1364,\n\t\t\"f65\":1365,\n\t\t\"f66\":1366,\n\t\t\"f67\":1367,\n\t\t\"f68\":1368,\n\t\t\"f69\":1369,\n\t\t\"f70\":1370,\n\t\t\"f71\":1371,\n\t\t\"f72\":1372,\n\t\t\"f73\":1373,\n\t\t\"f74\":1374,\n\t\t\"f75\":1375,\n\t\t\"f76\":1376,\n\t\t\"f77\":1377,\n\t\t\"f78\":1378,\n\t\t\"f79\":1379,\n\t\t\"f80\":1380,\n\t\t\"f81\":1381,\n\t\t\"f82\":1382,\n\t\t\"f83\":1383,\n\t\t\"f84\":1384,\n\t\t\"f85\":1385,\n\t\t\"f86\":1386,\n\t\t\"f87\":1387,\n\t\t\"f88\":1388,\n\t\t\"f89\":1389,\n\t\t\"f90\":1390,\n\t\t\"f91\":1391,\n\t\t\"f92\":1392,\n\t\t\"f93\":1393,\n\t\t\"f94\":1394,\n\t\t\"f95\":1395,\n\t\t\"f96\":1396,\n\t\t\"f97\":1397,\n\t\t\"f98\":1398,\n\t\t\"f99\":1399\n\t},\n\t{\n\t\t\"f0\":1400,\n\t\t\"f1\":1401,\n\t\t\"f2\":1402,\n\t\t\"f3\":1403,\n\t\t\"f4\":1404,\n\t\t\"f5\":1405,\n\t\t\"f6\":1406,\n\t\t\"f7\":1407,\n\t\t\"f8\":1408,\n\t\t\"f9\":1409,\n\t\t\"f10\":1410,\n\t\t\"f11\":1411,\n\t\t\"f12\":1412,\n\t\t\"f13\":1413,\n\t\t\"f14\":1414,\n\t\t\"f15\":1415,\n\t\t\"f16\":1416,\n\t\t\"f17\":1417,\n\t\t\"f18\":1418,\n\t\t\"f19\":1419,\n\t\t\"f20\":1420,\n\t\t\"f21\":1421,\n\t\t\"f22\":1422,\n\t\t\"f23\":1423,\n\t\t\"f24\":1424,\n\t\t\"f25\":1425,\n\t\t\"f26\":1426,\n\t\t\"f27\":1427,\n\t\t\"f28\":1428,\n\t\t\"f29\":1429,\n\t\t\"f30\":1430,\n\t\t\"f31\":1431,\n\t\t\"f32\":1432,\n\t\t\"f33\":1433,\n\t\t\"f34\":1434,\n\t\t\"f35\":1435,\n\t\t\"f36\":1436,\n\t\t\"f37\":1437,\n\t\t\"f38\":1438,\n\t\t\"f39\":1439,\n\t\t\"f40\":1440,\n\t\t\"f41\":1441,\n\t\t\"f42\":1442,\n\t\t\"f43\":1443,\n\t\t\"f44\":1444,\n\t\t\"f45\":1445,\n\t\t\"f46\":1446,\n\t\t\"f47\":1447,\n\t\t\"f48\":1448,\n\t\t\"f49\":1449,\n\t\t\"f50\":1450,\n\t\t\"f51\":1451,\n\t\t\"f52\":1452,\n\t\t\"f53\":1453,\n\t\t\"f54\":1454,\n\t\t\"f55\":1455,\n\t\t\"f56\":1456,\n\t\t\"f57\":1457,\n\t\t\"f58\":1458,\n\t\t\"f59\":1459,\n\t\t\"f60\":1460,\n\t\t\"f61\":1461,\n\t\t\"f62\":1462,\n\t\t\"f63\":1463,\n\t\t\"f64\":1464,\n\t\t\"f65\":1465,\n\t\t\"f66\":1466,\n\t\t\"f67\":1467,\n\t\t\"f68\":1468,\n\t\t\"f69\":1469,\n\t\t\"f70\":1470,\n\t\t\"f71\":1471,\n\t\t\"f72\":1472,\n\t\t\"f73\":1473,\n\t\t\"f74\":1474,\n\t\t\"f75\":1475,\n\t\t\"f76\":1476,\n\t\t\"f77\":1477,\n\t\t\"f78\":1478,\n\t\t\"f79\":1479,\n\t\t\"f80\":1480,\n\t\t\"f81\":1481,\n\t\t\"f82\":1482,\n\t\t\"f83\":1483,\n\t\t\"f84\":1484,\n\t\t\"f85\":1485,\n\t\t\"f86\":1486,\n\t\t\"f87\":1487,\n\t\t\"f88\":1488,\n\t\t\"f89\":1489,\n\t\t\"f90\":1490,\n\t\t\"f91\":1491,\n\t\t\"f92\":1492,\n\t\t\"f93\":1493,\n\t\t\"f94\":1494,\n\t\t\"f95\":1495,\n\t\t\"f96\":1496,\n\t\t\"f97\":1497,\n\t\t\"f98\":1498,\n\t\t\"f99\":1499\n\t},\n\t{\n\t\t\"f0\":1500,\n\t\t\"f1\":1501,\n\t\t\"f2\":1502,\n\t\t\"f3\":1503,\n\t\t\"f4\":1504,\n\t\t\"f5\":1505,\n\t\t\"f6\":1506,\n\t\t\"f7\":1507,\n\t\t\"f8\":1508,\n\t\t\"f9\":1509,\n\t\t\"f10\":1510,\n\t\t\"f11\":1511,\n\t\t\"f12\":1512,\n\t\t\"f13\":1513,\n\t\t\"f14\":1514,\n\t\t\"f15\":1515,\n\t\t\"f16\":1516,\n\t\t\"f17\":1517,\n\t\t\"f18\":1518,\n\t\t\"f19\":1519,\n\t\t\"f20\":1520,\n\t\t\"f21\":1521,\n\t\t\"f22\":1522,\n\t\t\"f23\":1523,\n\t\t\"f24\":1524,\n\t\t\"f25\":1525,\n\t\t\"f26\":1526,\n\t\t\"f27\":1527,\n\t\t\"f28\":1528,\n\t\t\"f29\":1529,\n\t\t\"f30\":1530,\n\t\t\"f31\":1531,\n\t\t\"f32\":1532,\n\t\t\"f33\":1533,\n\t\t\"f34\":1534,\n\t\t\"f35\":1535,\n\t\t\"f36\":1536,\n\t\t\"f37\":1537,\n\t\t\"f38\":1538,\n\t\t\"f39\":1539,\n\t\t\"f40\":1540,\n\t\t\"f41\":1541,\n\t\t\"f42\":1542,\n\t\t\"f43\":1543,\n\t\t\"f44\":1544,\n\t\t\"f45\":1545,\n\t\t\"f46\":1546,\n\t\t\"f47\":1547,\n\t\t\"f48\":1548,\n\t\t\"f49\":1549,\n\t\t\"f50\":1550,\n\t\t\"f51\":1551,\n\t\t\"f52\":1552,\n\t\t\"f53\":1553,\n\t\t\"f54\":1554,\n\t\t\"f55\":1555,\n\t\t\"f56\":1556,\n\t\t\"f57\":1557,\n\t\t\"f58\":1558,\n\t\t\"f59\":1559,\n\t\t\"f60\":1560,\n\t\t\"f61\":1561,\n\t\t\"f62\":1562,\n\t\t\"f63\":1563,\n\t\t\"f64\":1564,\n\t\t\"f65\":1565,\n\t\t\"f66\":1566,\n\t\t\"f67\":1567,\n\t\t\"f68\":1568,\n\t\t\"f69\":1569,\n\t\t\"f70\":1570,\n\t\t\"f71\":1571,\n\t\t\"f72\":1572,\n\t\t\"f73\":1573,\n\t\t\"f74\":1574,\n\t\t\"f75\":1575,\n\t\t\"f76\":1576,\n\t\t\"f77\":1577,\n\t\t\"f78\":1578,\n\t\t\"f79\":1579,\n\t\t\"f80\":1580,\n\t\t\"f81\":1581,\n\t\t\"f82\":1582,\n\t\t\"f83\":1583,\n\t\t\"f84\":1584,\n\t\t\"f85\":1585,\n\t\t\"f86\":1586,\n\t\t\"f87\":1587,\n\t\t\"f88\":1588,\n\t\t\"f89\":1589,\n\t\t\"f90\":1590,\n\t\t\"f91\":1591,\n\t\t\"f92\":1592,\n\t\t\"f93\":1593,\n\t\t\"f94\":1594,\n\t\t\"f95\":1595,\n\t\t\"f96\":1596,\n\t\t\"f97\":1597,\n\t\t\"f98\":1598,\n\t\t\"f99\":1599\n\t},\n\t{\n\t\t\"f0\":1600,\n\t\t\"f1\":1601,\n\t\t\"f2\":1602,\n\t\t\"f3\":1603,\n\t\t\"f4\":1604,\n\t\t\"f5\":1605,\n\t\t\"f6\":1606,\n\t\t\"f7\":1607,\n\t\t\"f8\":1608,\n\t\t\"f9\":1609,\n\t\t\"f10\":1610,\n\t\t\"f11\":1611,\n\t\t\"f12\":1612,\n\t\t\"f13\":1613,\n\t\t\"f14\":1614,\n\t\t\"f15\":1615,\n\t\t\"f16\":1616,\n\t\t\"f17\":1617,\n\t\t\"f18\":1618,\n\t\t\"f19\":1619,\n\t\t\"f20\":1620,\n\t\t\"f21\":1621,\n\t\t\"f22\":1622,\n\t\t\"f23\":1623,\n\t\t\"f24\":1624,\n\t\t\"f25\":1625,\n\t\t\"f26\":1626,\n\t\t\"f27\":1627,\n\t\t\"f28\":1628,\n\t\t\"f29\":1629,\n\t\t\"f30\":1630,\n\t\t\"f31\":1631,\n\t\t\"f32\":1632,\n\t\t\"f33\":1633,\n\t\t\"f34\":1634,\n\t\t\"f35\":1635,\n\t\t\"f36\":1636,\n\t\t\"f37\":1637,\n\t\t\"f38\":1638,\n\t\t\"f39\":1639,\n\t\t\"f40\":1640,\n\t\t\"f41\":1641,\n\t\t\"f42\":1642,\n\t\t\"f43\":1643,\n\t\t\"f44\":1644,\n\t\t\"f45\":1645,\n\t\t\"f46\":1646,\n\t\t\"f47\":1647,\n\t\t\"f48\":1648,\n\t\t\"f49\":1649,\n\t\t\"f50\":1650,\n\t\t\"f51\":1651,\n\t\t\"f52\":1652,\n\t\t\"f53\":1653,\n\t\t\"f54\":1654,\n\t\t\"f55\":1655,\n\t\t\"f56\":1656,\n\t\t\"f57\":1657,\n\t\t\"f58\":1658,\n\t\t\"f59\":1659,\n\t\t\"f60\":1660,\n\t\t\"f61\":1661,\n\t\t\"f62\":1662,\n\t\t\"f63\":1663,\n\t\t\"f64\":1664,\n\t\t\"f65\":1665,\n\t\t\"f66\":1666,\n\t\t\"f67\":1667,\n\t\t\"f68\":1668,\n\t\t\"f69\":1669,\n\t\t\"f70\":1670,\n\t\t\"f71\":1671,\n\t\t\"f72\":1672,\n\t\t\"f73\":1673,\n\t\t\"f74\":1674,\n\t\t\"f75\":1675,\n\t\t\"f76\":1676,\n\t\t\"f77\":1677,\n\t\t\"f78\":1678,\n\t\t\"f79\":1679,\n\t\t\"f80\":1680,\n\t\t\"f81\":1681,\n\t\t\"f82\":1682,\n\t\t\"f83\":1683,\n\t\t\"f84\":1684,\n\t\t\"f85\":1685,\n\t\t\"f86\":1686,\n\t\t\"f87\":1687,\n\t\t\"f88\":1688,\n\t\t\"f89\":1689,\n\t\t\"f90\":1690,\n\t\t\"f91\":1691,\n\t\t\"f92\":1692,\n\t\t\"f93\":1693,\n\t\t\"f94\":1694,\n\t\t\"f95\":1695,\n\t\t\"f96\":1696,\n\t\t\"f97\":1697,\n\t\t\"f98\":1698,\n\t\t\"f99\":1699\n\t},\n\t{\n\t\t\"f0\":1700,\n\t\t\"f1\":1701,\n\t\t\"f2\":1702,\n\t\t\"f3\":1703,\n\t\t\"f4\":1704,\n\t\t\"f5\":1705,\n\t\t\"f6\":1706,\n\t\t\"f7\":1707,\n\t\t\"f8\":1708,\n\t\t\"f9\":1709,\n\t\t\"f10\":1710,\n\t\t\"f11\":1711,\n\t\t\"f12\":1712,\n\t\t\"f13\":1713,\n\t\t\"f14\":1714,\n\t\t\"f15\":1715,\n\t\t\"f16\":1716,\n\t\t\"f17\":1717,\n\t\t\"f18\":1718,\n\t\t\"f19\":1719,\n\t\t\"f20\":1720,\n\t\t\"f21\":1721,\n\t\t\"f22\":1722,\n\t\t\"f23\":1723,\n\t\t\"f24\":1724,\n\t\t\"f25\":1725,\n\t\t\"f26\":1726,\n\t\t\"f27\":1727,\n\t\t\"f28\":1728,\n\t\t\"f29\":1729,\n\t\t\"f30\":1730,\n\t\t\"f31\":1731,\n\t\t\"f32\":1732,\n\t\t\"f33\":1733,\n\t\t\"f34\":1734,\n\t\t\"f35\":1735,\n\t\t\"f36\":1736,\n\t\t\"f37\":1737,\n\t\t\"f38\":1738,\n\t\t\"f39\":1739,\n\t\t\"f40\":1740,\n\t\t\"f41\":1741,\n\t\t\"f42\":1742,\n\t\t\"f43\":1743,\n\t\t\"f44\":1744,\n\t\t\"f45\":1745,\n\t\t\"f46\":1746,\n\t\t\"f47\":1747,\n\t\t\"f48\":1748,\n\t\t\"f49\":1749,\n\t\t\"f50\":1750,\n\t\t\"f51\":1751,\n\t\t\"f52\":1752,\n\t\t\"f53\":1753,\n\t\t\"f54\":1754,\n\t\t\"f55\":1755,\n\t\t\"f56\":1756,\n\t\t\"f57\":1757,\n\t\t\"f58\":1758,\n\t\t\"f59\":1759,\n\t\t\"f60\":1760,\n\t\t\"f61\":1761,\n\t\t\"f62\":1762,\n\t\t\"f63\":1763,\n\t\t\"f64\":1764,\n\t\t\"f65\":1765,\n\t\t\"f66\":1766,\n\t\t\"f67\":1767,\n\t\t\"f68\":1768,\n\t\t\"f69\":1769,\n\t\t\"f70\":1770,\n\t\t\"f71\":1771,\n\t\t\"f72\":1772,\n\t\t\"f73\":1773,\n\t\t\"f74\":1774,\n\t\t\"f75\":1775,\n\t\t\"f76\":1776,\n\t\t\"f77\":1777,\n\t\t\"f78\":1778,\n\t\t\"f79\":1779,\n\t\t\"f80\":1780,\n\t\t\"f81\":1781,\n\t\t\"f82\":1782,\n\t\t\"f83\":1783,\n\t\t\"f84\":1784,\n\t\t\"f85\":1785,\n\t\t\"f86\":1786,\n\t\t\"f87\":1787,\n\t\t\"f88\":1788,\n\t\t\"f89\":1789,\n\t\t\"f90\":1790,\n\t\t\"f91\":1791,\n\t\t\"f92\":1792,\n\t\t\"f93\":1793,\n\t\t\"f94\":1794,\n\t\t\"f95\":1795,\n\t\t\"f96\":1796,\n\t\t\"f97\":1797,\n\t\t\"f98\":1798,\n\t\t\"f99\":1799\n\t},\n\t{\n\t\t\"f0\":1800,\n\t\t\"f1\":1801,\n\t\t\"f2\":1802,\n\t\t\"f3\":1803,\n\t\t\"f4\":1804,\n\t\t\"f5\":1805,\n\t\t\"f6\":1806,\n\t\t\"f7\":1807,\n\t\t\"f8\":1808,\n\t\t\"f9\":1809,\n\t\t\"f10\":1810,\n\t\t\"f11\":1811,\n\t\t\"f12\":1812,\n\t\t\"f13\":1813,\n\t\t\"f14\":1814,\n\t\t\"f15\":1815,\n\t\t\"f16\":1816,\n\t\t\"f17\":1817,\n\t\t\"f18\":1818,\n\t\t\"f19\":1819,\n\t\t\"f20\":1820,\n\t\t\"f21\":1821,\n\t\t\"f22\":1822,\n\t\t\"f23\":1823,\n\t\t\"f24\":1824,\n\t\t\"f25\":1825,\n\t\t\"f26\":1826,\n\t\t\"f27\":1827,\n\t\t\"f28\":1828,\n\t\t\"f29\":1829,\n\t\t\"f30\":1830,\n\t\t\"f31\":1831,\n\t\t\"f32\":1832,\n\t\t\"f33\":1833,\n\t\t\"f34\":1834,\n\t\t\"f35\":1835,\n\t\t\"f36\":1836,\n\t\t\"f37\":1837,\n\t\t\"f38\":1838,\n\t\t\"f39\":1839,\n\t\t\"f40\":1840,\n\t\t\"f41\":1841,\n\t\t\"f42\":1842,\n\t\t\"f43\":1843,\n\t\t\"f44\":1844,\n\t\t\"f45\":1845,\n\t\t\"f46\":1846,\n\t\t\"f47\":1847,\n\t\t\"f48\":1848,\n\t\t\"f49\":1849,\n\t\t\"f50\":1850,\n\t\t\"f51\":1851,\n\t\t\"f52\":1852,\n\t\t\"f53\":1853,\n\t\t\"f54\":1854,\n\t\t\"f55\":1855,\n\t\t\"f56\":1856,\n\t\t\"f57\":1857,\n\t\t\"f58\":1858,\n\t\t\"f59\":1859,\n\t\t\"f60\":1860,\n\t\t\"f61\":1861,\n\t\t\"f62\":1862,\n\t\t\"f63\":1863,\n\t\t\"f64\":1864,\n\t\t\"f65\":1865,\n\t\t\"f66\":1866,\n\t\t\"f67\":1867,\n\t\t\"f68\":1868,\n\t\t\"f69\":1869,\n\t\t\"f70\":1870,\n\t\t\"f71\":1871,\n\t\t\"f72\":1872,\n\t\t\"f73\":1873,\n\t\t\"f74\":1874,\n\t\t\"f75\":1875,\n\t\t\"f76\":1876,\n\t\t\"f77\":1877,\n\t\t\"f78\":1878,\n\t\t\"f79\":1879,\n\t\t\"f80\":1880,\n\t\t\"f81\":1881,\n\t\t\"f82\":1882,\n\t\t\"f83\":1883,\n\t\t\"f84\":1884,\n\t\t\"f85\":1885,\n\t\t\"f86\":1886,\n\t\t\"f87\":1887,\n\t\t\"f88\":1888,\n\t\t\"f89\":1889,\n\t\t\"f90\":1890,\n\t\t\"f91\":1891,\n\t\t\"f92\":1892,\n\t\t\"f93\":1893,\n\t\t\"f94\":1894,\n\t\t\"f95\":1895,\n\t\t\"f96\":1896,\n\t\t\"f97\":1897,\n\t\t\"f98\":1898,\n\t\t\"f99\":1899\n\t},\n\t{\n\t\t\"f0\":1900,\n\t\t\"f1\":1901,\n\t\t\"f2\":1902,\n\t\t\"f3\":1903,\n\t\t\"f4\":1904,\n\t\t\"f5\":1905,\n\t\t\"f6\":1906,\n\t\t\"f7\":1907,\n\t\t\"f8\":1908,\n\t\t\"f9\":1909,\n\t\t\"f10\":1910,\n\t\t\"f11\":1911,\n\t\t\"f12\":1912,\n\t\t\"f13\":1913,\n\t\t\"f14\":1914,\n\t\t\"f15\":1915,\n\t\t\"f16\":1916,\n\t\t\"f17\":1917,\n\t\t\"f18\":1918,\n\t\t\"f19\":1919,\n\t\t\"f20\":1920,\n\t\t\"f21\":1921,\n\t\t\"f22\":1922,\n\t\t\"f23\":1923,\n\t\t\"f24\":1924,\n\t\t\"f25\":1925,\n\t\t\"f26\":1926,\n\t\t\"f27\":1927,\n\t\t\"f28\":1928,\n\t\t\"f29\":1929,\n\t\t\"f30\":1930,\n\t\t\"f31\":1931,\n\t\t\"f32\":1932,\n\t\t\"f33\":1933,\n\t\t\"f34\":1934,\n\t\t\"f35\":1935,\n\t\t\"f36\":1936,\n\t\t\"f37\":1937,\n\t\t\"f38\":1938,\n\t\t\"f39\":1939,\n\t\t\"f40\":1940,\n\t\t\"f41\":1941,\n\t\t\"f42\":1942,\n\t\t\"f43\":1943,\n\t\t\"f44\":1944,\n\t\t\"f45\":1945,\n\t\t\"f46\":1946,\n\t\t\"f47\":1947,\n\t\t\"f48\":1948,\n\t\t\"f49\":1949,\n\t\t\"f50\":1950,\n\t\t\"f51\":1951,\n\t\t\"f52\":1952,\n\t\t\"f53\":1953,\n\t\t\"f54\":1954,\n\t\t\"f55\":1955,\n\t\t\"f56\":1956,\n\t\t\"f57\":1957,\n\t\t\"f58\":1958,\n\t\t\"f59\":1959,\n\t\t\"f60\":1960,\n\t\t\"f61\":1961,\n\t\t\"f62\":1962,\n\t\t\"f63\":1963,\n\t\t\"f64\":1964,\n\t\t\"f65\":1965,\n\t\t\"f66\":1966,\n\t\t\"f67\":1967,\n\t\t\"f68\":1968,\n\t\t\"f69\":1969,\n\t\t\"f70\":1970,\n\t\t\"f71\":1971,\n\t\t\"f72\":1972,\n\t\t\"f73\":1973,\n\t\t\"f74\":1974,\n\t\t\"f75\":1975,\n\t\t\"f76\":1976,\n\t\t\"f77\":1977,\n\t\t\"f78\":1978,\n\t\t\"f79\":1979,\n\t\t\"f80\":1980,\n\t\t\"f81\":1981,\n\t\t\"f82\":1982,\n\t\t\"f83\":1983,\n\t\t\"f84\":1984,\n\t\t\"f85\":1985,\n\t\t\"f86\":1986,\n\t\t\"f87\":1987,\n\t\t\"f88\":1988,\n\t\t\"f89\":1989,\n\t\t\"f90\":1990,\n\t\t\"f91\":1991,\n\t\t\"f92\":1992,\n\t\t\"f93\":1993,\n\t\t\"f94\":1994,\n\t\t\"f95\":1995,\n\t\t\"f96\":1996,\n\t\t\"f97\":1997,\n\t\t\"f98\":1998,\n\t\t\"f99\":1999\n\t},\n\t{\n\t\t\"f0\":2000,\n\t\t\"f1\":2001,\n\t\t\"f2\":2002,\n\t\t\"f3\":2003,\n\t\t\"f4\":2004,\n\t\t\"f5\":2005,\n\t\t\"f6\":2006,\n\t\t\"f7\":2007,\n\t\t\"f8\":2008,\n\t\t\"f9\":2009,\n\t\t\"f10\":2010,\n\t\t\"f11\":2011,\n\t\t\"f12\":2012,\n\t\t\"f13\":2013,\n\t\t\"f14\":2014,\n\t\t\"f15\":2015,\n\t\t\"f16\":2016,\n\t\t\"f17\":2017,\n\t\t\"f18\":2018,\n\t\t\"f19\":2019,\n\t\t\"f20\":2020,\n\t\t\"f21\":2021,\n\t\t\"f22\":2022,\n\t\t\"f23\":2023,\n\t\t\"f24\":2024,\n\t\t\"f25\":2025,\n\t\t\"f26\":2026,\n\t\t\"f27\":2027,\n\t\t\"f28\":2028,\n\t\t\"f29\":2029,\n\t\t\"f30\":2030,\n\t\t\"f31\":2031,\n\t\t\"f32\":2032,\n\t\t\"f33\":2033,\n\t\t\"f34\":2034,\n\t\t\"f35\":2035,\n\t\t\"f36\":2036,\n\t\t\"f37\":2037,\n\t\t\"f38\":2038,\n\t\t\"f39\":2039,\n\t\t\"f40\":2040,\n\t\t\"f41\":2041,\n\t\t\"f42\":2042,\n\t\t\"f43\":2043,\n\t\t\"f44\":2044,\n\t\t\"f45\":2045,\n\t\t\"f46\":2046,\n\t\t\"f47\":2047,\n\t\t\"f48\":2048,\n\t\t\"f49\":2049,\n\t\t\"f50\":2050,\n\t\t\"f51\":2051,\n\t\t\"f52\":2052,\n\t\t\"f53\":2053,\n\t\t\"f54\":2054,\n\t\t\"f55\":2055,\n\t\t\"f56\":2056,\n\t\t\"f57\":2057,\n\t\t\"f58\":2058,\n\t\t\"f59\":2059,\n\t\t\"f60\":2060,\n\t\t\"f61\":2061,\n\t\t\"f62\":2062,\n\t\t\"f63\":2063,\n\t\t\"f64\":2064,\n\t\t\"f65\":2065,\n\t\t\"f66\":2066,\n\t\t\"f67\":2067,\n\t\t\"f68\":2068,\n\t\t\"f69\":2069,\n\t\t\"f70\":2070,\n\t\t\"f71\":2071,\n\t\t\"f72\":2072,\n\t\t\"f73\":2073,\n\t\t\"f74\":2074,\n\t\t\"f75\":2075,\n\t\t\"f76\":2076,\n\t\t\"f77\":2077,\n\t\t\"f78\":2078,\n\t\t\"f79\":2079,\n\t\t\"f80\":2080,\n\t\t\"f81\":2081,\n\t\t\"f82\":2082,\n\t\t\"f83\":2083,\n\t\t\"f84\":2084,\n\t\t\"f85\":2085,\n\t\t\"f86\":2086,\n\t\t\"f87\":2087,\n\t\t\"f88\":2088,\n\t\t\"f89\":2089,\n\t\t\"f90\":2090,\n\t\t\"f91\":2091,\n\t\t\"f92\":2092,\n\t\t\"f93\":2093,\n\t\t\"f94\":2094,\n\t\t\"f95\":2095,\n\t\t\"f96\":2096,\n\t\t\"f97\":2097,\n\t\t\"f98\":2098,\n\t\t\"f99\":2099\n\t},\n\t{\n\t\t\"f0\":2100,\n\t\t\"f1\":2101,\n\t\t\"f2\":2102,\n\t\t\"f3\":2103,\n\t\t\"f4\":2104,\n\t\t\"f5\":2105,\n\t\t\"f6\":2106,\n\t\t\"f7\":2107,\n\t\t\"f8\":2108,\n\t\t\"f9\":2109,\n\t\t\"f10\":2110,\n\t\t\"f11\":2111,\n\t\t\"f12\":2112,\n\t\t\"f13\":2113,\n\t\t\"f14\":2114,\n\t\t\"f15\":2115,\n\t\t\"f16\":2116,\n\t\t\"f17\":2117,\n\t\t\"f18\":2118,\n\t\t\"f19\":2119,\n\t\t\"f20\":2120,\n\t\t\"f21\":2121,\n\t\t\"f22\":2122,\n\t\t\"f23\":2123,\n\t\t\"f24\":2124,\n\t\t\"f25\":2125,\n\t\t\"f26\":2126,\n\t\t\"f27\":2127,\n\t\t\"f28\":2128,\n\t\t\"f29\":2129,\n\t\t\"f30\":2130,\n\t\t\"f31\":2131,\n\t\t\"f32\":2132,\n\t\t\"f33\":2133,\n\t\t\"f34\":2134,\n\t\t\"f35\":2135,\n\t\t\"f36\":2136,\n\t\t\"f37\":2137,\n\t\t\"f38\":2138,\n\t\t\"f39\":2139,\n\t\t\"f40\":2140,\n\t\t\"f41\":2141,\n\t\t\"f42\":2142,\n\t\t\"f43\":2143,\n\t\t\"f44\":2144,\n\t\t\"f45\":2145,\n\t\t\"f46\":2146,\n\t\t\"f47\":2147,\n\t\t\"f48\":2148,\n\t\t\"f49\":2149,\n\t\t\"f50\":2150,\n\t\t\"f51\":2151,\n\t\t\"f52\":2152,\n\t\t\"f53\":2153,\n\t\t\"f54\":2154,\n\t\t\"f55\":2155,\n\t\t\"f56\":2156,\n\t\t\"f57\":2157,\n\t\t\"f58\":2158,\n\t\t\"f59\":2159,\n\t\t\"f60\":2160,\n\t\t\"f61\":2161,\n\t\t\"f62\":2162,\n\t\t\"f63\":2163,\n\t\t\"f64\":2164,\n\t\t\"f65\":2165,\n\t\t\"f66\":2166,\n\t\t\"f67\":2167,\n\t\t\"f68\":2168,\n\t\t\"f69\":2169,\n\t\t\"f70\":2170,\n\t\t\"f71\":2171,\n\t\t\"f72\":2172,\n\t\t\"f73\":2173,\n\t\t\"f74\":2174,\n\t\t\"f75\":2175,\n\t\t\"f76\":2176,\n\t\t\"f77\":2177,\n\t\t\"f78\":2178,\n\t\t\"f79\":2179,\n\t\t\"f80\":2180,\n\t\t\"f81\":2181,\n\t\t\"f82\":2182,\n\t\t\"f83\":2183,\n\t\t\"f84\":2184,\n\t\t\"f85\":2185,\n\t\t\"f86\":2186,\n\t\t\"f87\":2187,\n\t\t\"f88\":2188,\n\t\t\"f89\":2189,\n\t\t\"f90\":2190,\n\t\t\"f91\":2191,\n\t\t\"f92\":2192,\n\t\t\"f93\":2193,\n\t\t\"f94\":2194,\n\t\t\"f95\":2195,\n\t\t\"f96\":2196,\n\t\t\"f97\":2197,\n\t\t\"f98\":2198,\n\t\t\"f99\":2199\n\t},\n\t{\n\t\t\"f0\":2200,\n\t\t\"f1\":2201,\n\t\t\"f2\":2202,\n\t\t\"f3\":2203,\n\t\t\"f4\":2204,\n\t\t\"f5\":2205,\n\t\t\"f6\":2206,\n\t\t\"f7\":2207,\n\t\t\"f8\":2208,\n\t\t\"f9\":2209,\n\t\t\"f10\":2210,\n\t\t\"f11\":2211,\n\t\t\"f12\":2212,\n\t\t\"f13\":2213,\n\t\t\"f14\":2214,\n\t\t\"f15\":2215,\n\t\t\"f16\":2216,\n\t\t\"f17\":2217,\n\t\t\"f18\":2218,\n\t\t\"f19\":2219,\n\t\t\"f20\":2220,\n\t\t\"f21\":2221,\n\t\t\"f22\":2222,\n\t\t\"f23\":2223,\n\t\t\"f24\":2224,\n\t\t\"f25\":2225,\n\t\t\"f26\":2226,\n\t\t\"f27\":2227,\n\t\t\"f28\":2228,\n\t\t\"f29\":2229,\n\t\t\"f30\":2230,\n\t\t\"f31\":2231,\n\t\t\"f32\":2232,\n\t\t\"f33\":2233,\n\t\t\"f34\":2234,\n\t\t\"f35\":2235,\n\t\t\"f36\":2236,\n\t\t\"f37\":2237,\n\t\t\"f38\":2238,\n\t\t\"f39\":2239,\n\t\t\"f40\":2240,\n\t\t\"f41\":2241,\n\t\t\"f42\":2242,\n\t\t\"f43\":2243,\n\t\t\"f44\":2244,\n\t\t\"f45\":2245,\n\t\t\"f46\":2246,\n\t\t\"f47\":2247,\n\t\t\"f48\":2248,\n\t\t\"f49\":2249,\n\t\t\"f50\":2250,\n\t\t\"f51\":2251,\n\t\t\"f52\":2252,\n\t\t\"f53\":2253,\n\t\t\"f54\":2254,\n\t\t\"f55\":2255,\n\t\t\"f56\":2256,\n\t\t\"f57\":2257,\n\t\t\"f58\":2258,\n\t\t\"f59\":2259,\n\t\t\"f60\":2260,\n\t\t\"f61\":2261,\n\t\t\"f62\":2262,\n\t\t\"f63\":2263,\n\t\t\"f64\":2264,\n\t\t\"f65\":2265,\n\t\t\"f66\":2266,\n\t\t\"f67\":2267,\n\t\t\"f68\":2268,\n\t\t\"f69\":2269,\n\t\t\"f70\":2270,\n\t\t\"f71\":2271,\n\t\t\"f72\":2272,\n\t\t\"f73\":2273,\n\t\t\"f74\":2274,\n\t\t\"f75\":2275,\n\t\t\"f76\":2276,\n\t\t\"f77\":2277,\n\t\t\"f78\":2278,\n\t\t\"f79\":2279,\n\t\t\"f80\":2280,\n\t\t\"f81\":2281,\n\t\t\"f82\":2282,\n\t\t\"f83\":2283,\n\t\t\"f84\":2284,\n\t\t\"f85\":2285,\n\t\t\"f86\":2286,\n\t\t\"f87\":2287,\n\t\t\"f88\":2288,\n\t\t\"f89\":2289,\n\t\t\"f90\":2290,\n\t\t\"f91\":2291,\n\t\t\"f92\":2292,\n\t\t\"f93\":2293,\n\t\t\"f94\":2294,\n\t\t\"f95\":2295,\n\t\t\"f96\":2296,\n\t\t\"f97\":2297,\n\t\t\"f98\":2298,\n\t\t\"f99\":2299\n\t},\n\t{\n\t\t\"f0\":2300,\n\t\t\"f1\":2301,\n\t\t\"f2\":2302,\n\t\t\"f3\":2303,\n\t\t\"f4\":2304,\n\t\t\"f5\":2305,\n\t\t\"f6\":2306,\n\t\t\"f7\":2307,\n\t\t\"f8\":2308,\n\t\t\"f9\":2309,\n\t\t\"f10\":2310,\n\t\t\"f11\":2311,\n\t\t\"f12\":2312,\n\t\t\"f13\":2313,\n\t\t\"f14\":2314,\n\t\t\"f15\":2315,\n\t\t\"f16\":2316,\n\t\t\"f17\":2317,\n\t\t\"f18\":2318,\n\t\t\"f19\":2319,\n\t\t\"f20\":2320,\n\t\t\"f21\":2321,\n\t\t\"f22\":2322,\n\t\t\"f23\":2323,\n\t\t\"f24\":2324,\n\t\t\"f25\":2325,\n\t\t\"f26\":2326,\n\t\t\"f27\":2327,\n\t\t\"f28\":2328,\n\t\t\"f29\":2329,\n\t\t\"f30\":2330,\n\t\t\"f31\":2331,\n\t\t\"f32\":2332,\n\t\t\"f33\":2333,\n\t\t\"f34\":2334,\n\t\t\"f35\":2335,\n\t\t\"f36\":2336,\n\t\t\"f37\":2337,\n\t\t\"f38\":2338,\n\t\t\"f39\":2339,\n\t\t\"f40\":2340,\n\t\t\"f41\":2341,\n\t\t\"f42\":2342,\n\t\t\"f43\":2343,\n\t\t\"f44\":2344,\n\t\t\"f45\":2345,\n\t\t\"f46\":2346,\n\t\t\"f47\":2347,\n\t\t\"f48\":2348,\n\t\t\"f49\":2349,\n\t\t\"f50\":2350,\n\t\t\"f51\":2351,\n\t\t\"f52\":2352,\n\t\t\"f53\":2353,\n\t\t\"f54\":2354,\n\t\t\"f55\":2355,\n\t\t\"f56\":2356,\n\t\t\"f57\":2357,\n\t\t\"f58\":2358,\n\t\t\"f59\":2359,\n\t\t\"f60\":2360,\n\t\t\"f61\":2361,\n\t\t\"f62\":2362,\n\t\t\"f63\":2363,\n\t\t\"f64\":2364,\n\t\t\"f65\":2365,\n\t\t\"f66\":2366,\n\t\t\"f67\":2367,\n\t\t\"f68\":2368,\n\t\t\"f69\":2369,\n\t\t\"f70\":2370,\n\t\t\"f71\":2371,\n\t\t\"f72\":2372,\n\t\t\"f73\":2373,\n\t\t\"f74\":2374,\n\t\t\"f75\":2375,\n\t\t\"f76\":2376,\n\t\t\"f77\":2377,\n\t\t\"f78\":2378,\n\t\t\"f79\":2379,\n\t\t\"f80\":2380,\n\t\t\"f81\":2381,\n\t\t\"f82\":2382,\n\t\t\"f83\":2383,\n\t\t\"f84\":2384,\n\t\t\"f85\":2385,\n\t\t\"f86\":2386,\n\t\t\"f87\":2387,\n\t\t\"f88\":2388,\n\t\t\"f89\":2389,\n\t\t\"f90\":2390,\n\t\t\"f91\":2391,\n\t\t\"f92\":2392,\n\t\t\"f93\":2393,\n\t\t\"f94\":2394,\n\t\t\"f95\":2395,\n\t\t\"f96\":2396,\n\t\t\"f97\":2397,\n\t\t\"f98\":2398,\n\t\t\"f99\":2399\n\t},\n\t{\n\t\t\"f0\":2400,\n\t\t\"f1\":2401,\n\t\t\"f2\":2402,\n\t\t\"f3\":2403,\n\t\t\"f4\":2404,\n\t\t\"f5\":2405,\n\t\t\"f6\":2406,\n\t\t\"f7\":2407,\n\t\t\"f8\":2408,\n\t\t\"f9\":2409,\n\t\t\"f10\":2410,\n\t\t\"f11\":2411,\n\t\t\"f12\":2412,\n\t\t\"f13\":2413,\n\t\t\"f14\":2414,\n\t\t\"f15\":2415,\n\t\t\"f16\":2416,\n\t\t\"f17\":2417,\n\t\t\"f18\":2418,\n\t\t\"f19\":2419,\n\t\t\"f20\":2420,\n\t\t\"f21\":2421,\n\t\t\"f22\":2422,\n\t\t\"f23\":2423,\n\t\t\"f24\":2424,\n\t\t\"f25\":2425,\n\t\t\"f26\":2426,\n\t\t\"f27\":2427,\n\t\t\"f28\":2428,\n\t\t\"f29\":2429,\n\t\t\"f30\":2430,\n\t\t\"f31\":2431,\n\t\t\"f32\":2432,\n\t\t\"f33\":2433,\n\t\t\"f34\":2434,\n\t\t\"f35\":2435,\n\t\t\"f36\":2436,\n\t\t\"f37\":2437,\n\t\t\"f38\":2438,\n\t\t\"f39\":2439,\n\t\t\"f40\":2440,\n\t\t\"f41\":2441,\n\t\t\"f42\":2442,\n\t\t\"f43\":2443,\n\t\t\"f44\":2444,\n\t\t\"f45\":2445,\n\t\t\"f46\":2446,\n\t\t\"f47\":2447,\n\t\t\"f48\":2448,\n\t\t\"f49\":2449,\n\t\t\"f50\":2450,\n\t\t\"f51\":2451,\n\t\t\"f52\":2452,\n\t\t\"f53\":2453,\n\t\t\"f54\":2454,\n\t\t\"f55\":2455,\n\t\t\"f56\":2456,\n\t\t\"f57\":2457,\n\t\t\"f58\":2458,\n\t\t\"f59\":2459,\n\t\t\"f60\":2460,\n\t\t\"f61\":2461,\n\t\t\"f62\":2462,\n\t\t\"f63\":2463,\n\t\t\"f64\":2464,\n\t\t\"f65\":2465,\n\t\t\"f66\":2466,\n\t\t\"f67\":2467,\n\t\t\"f68\":2468,\n\t\t\"f69\":2469,\n\t\t\"f70\":2470,\n\t\t\"f71\":2471,\n\t\t\"f72\":2472,\n\t\t\"f73\":2473,\n\t\t\"f74\":2474,\n\t\t\"f75\":2475,\n\t\t\"f76\":2476,\n\t\t\"f77\":2477,\n\t\t\"f78\":2478,\n\t\t\"f79\":2479,\n\t\t\"f80\":2480,\n\t\t\"f81\":2481,\n\t\t\"f82\":2482,\n\t\t\"f83\":2483,\n\t\t\"f84\":2484,\n\t\t\"f85\":2485,\n\t\t\"f86\":2486,\n\t\t\"f87\":2487,\n\t\t\"f88\":2488,\n\t\t\"f89\":2489,\n\t\t\"f90\":2490,\n\t\t\"f91\":2491,\n\t\t\"f92\":2492,\n\t\t\"f93\":2493,\n\t\t\"f94\":2494,\n\t\t\"f95\":2495,\n\t\t\"f96\":2496,\n\t\t\"f97\":2497,\n\t\t\"f98\":2498,\n\t\t\"f99\":2499\n\t},\n\t{\n\t\t\"f0\":2500,\n\t\t\"f1\":2501,\n\t\t\"f2\":2502,\n\t\t\"f3\":2503,\n\t\t\"f4\":2504,\n\t\t\"f5\":2505,\n\t\t\"f6\":2506,\n\t\t\"f7\":2507,\n\t\t\"f8\":2508,\n\t\t\"f9\":2509,\n\t\t\"f10\":2510,\n\t\t\"f11\":2511,\n\t\t\"f12\":2512,\n\t\t\"f13\":2513,\n\t\t\"f14\":2514,\n\t\t\"f15\":2515,\n\t\t\"f16\":2516,\n\t\t\"f17\":2517,\n\t\t\"f18\":2518,\n\t\t\"f19\":2519,\n\t\t\"f20\":2520,\n\t\t\"f21\":2521,\n\t\t\"f22\":2522,\n\t\t\"f23\":2523,\n\t\t\"f24\":2524,\n\t\t\"f25\":2525,\n\t\t\"f26\":2526,\n\t\t\"f27\":2527,\n\t\t\"f28\":2528,\n\t\t\"f29\":2529,\n\t\t\"f30\":2530,\n\t\t\"f31\":2531,\n\t\t\"f32\":2532,\n\t\t\"f33\":2533,\n\t\t\"f34\":2534,\n\t\t\"f35\":2535,\n\t\t\"f36\":2536,\n\t\t\"f37\":2537,\n\t\t\"f38\":2538,\n\t\t\"f39\":2539,\n\t\t\"f40\":2540,\n\t\t\"f41\":2541,\n\t\t\"f42\":2542,\n\t\t\"f43\":2543,\n\t\t\"f44\":2544,\n\t\t\"f45\":2545,\n\t\t\"f46\":2546,\n\t\t\"f47\":2547,\n\t\t\"f48\":2548,\n\t\t\"f49\":2549,\n\t\t\"f50\":2550,\n\t\t\"f51\":2551,\n\t\t\"f52\":2552,\n\t\t\"f53\":2553,\n\t\t\"f54\":2554,\n\t\t\"f55\":2555,\n\t\t\"f56\":2556,\n\t\t\"f57\":2557,\n\t\t\"f58\":2558,\n\t\t\"f59\":2559,\n\t\t\"f60\":2560,\n\t\t\"f61\":2561,\n\t\t\"f62\":2562,\n\t\t\"f63\":2563,\n\t\t\"f64\":2564,\n\t\t\"f65\":2565,\n\t\t\"f66\":2566,\n\t\t\"f67\":2567,\n\t\t\"f68\":2568,\n\t\t\"f69\":2569,\n\t\t\"f70\":2570,\n\t\t\"f71\":2571,\n\t\t\"f72\":2572,\n\t\t\"f73\":2573,\n\t\t\"f74\":2574,\n\t\t\"f75\":2575,\n\t\t\"f76\":2576,\n\t\t\"f77\":2577,\n\t\t\"f78\":2578,\n\t\t\"f79\":2579,\n\t\t\"f80\":2580,\n\t\t\"f81\":2581,\n\t\t\"f82\":2582,\n\t\t\"f83\":2583,\n\t\t\"f84\":2584,\n\t\t\"f85\":2585,\n\t\t\"f86\":2586,\n\t\t\"f87\":2587,\n\t\t\"f88\":2588,\n\t\t\"f89\":2589,\n\t\t\"f90\":2590,\n\t\t\"f91\":2591,\n\t\t\"f92\":2592,\n\t\t\"f93\":2593,\n\t\t\"f94\":2594,\n\t\t\"f95\":2595,\n\t\t\"f96\":2596,\n\t\t\"f97\":2597,\n\t\t\"f98\":2598,\n\t\t\"f99\":2599\n\t},\n\t{\n\t\t\"f0\":2600,\n\t\t\"f1\":2601,\n\t\t\"f2\":2602,\n\t\t\"f3\":2603,\n\t\t\"f4\":2604,\n\t\t\"f5\":2605,\n\t\t\"f6\":2606,\n\t\t\"f7\":2607,\n\t\t\"f8\":2608,\n\t\t\"f9\":2609,\n\t\t\"f10\":2610,\n\t\t\"f11\":2611,\n\t\t\"f12\":2612,\n\t\t\"f13\":2613,\n\t\t\"f14\":2614,\n\t\t\"f15\":2615,\n\t\t\"f16\":2616,\n\t\t\"f17\":2617,\n\t\t\"f18\":2618,\n\t\t\"f19\":2619,\n\t\t\"f20\":2620,\n\t\t\"f21\":2621,\n\t\t\"f22\":2622,\n\t\t\"f23\":2623,\n\t\t\"f24\":2624,\n\t\t\"f25\":2625,\n\t\t\"f26\":2626,\n\t\t\"f27\":2627,\n\t\t\"f28\":2628,\n\t\t\"f29\":2629,\n\t\t\"f30\":2630,\n\t\t\"f31\":2631,\n\t\t\"f32\":2632,\n\t\t\"f33\":2633,\n\t\t\"f34\":2634,\n\t\t\"f35\":2635,\n\t\t\"f36\":2636,\n\t\t\"f37\":2637,\n\t\t\"f38\":2638,\n\t\t\"f39\":2639,\n\t\t\"f40\":2640,\n\t\t\"f41\":2641,\n\t\t\"f42\":2642,\n\t\t\"f43\":2643,\n\t\t\"f44\":2644,\n\t\t\"f45\":2645,\n\t\t\"f46\":2646,\n\t\t\"f47\":2647,\n\t\t\"f48\":2648,\n\t\t\"f49\":2649,\n\t\t\"f50\":2650,\n\t\t\"f51\":2651,\n\t\t\"f52\":2652,\n\t\t\"f53\":2653,\n\t\t\"f54\":2654,\n\t\t\"f55\":2655,\n\t\t\"f56\":2656,\n\t\t\"f57\":2657,\n\t\t\"f58\":2658,\n\t\t\"f59\":2659,\n\t\t\"f60\":2660,\n\t\t\"f61\":2661,\n\t\t\"f62\":2662,\n\t\t\"f63\":2663,\n\t\t\"f64\":2664,\n\t\t\"f65\":2665,\n\t\t\"f66\":2666,\n\t\t\"f67\":2667,\n\t\t\"f68\":2668,\n\t\t\"f69\":2669,\n\t\t\"f70\":2670,\n\t\t\"f71\":2671,\n\t\t\"f72\":2672,\n\t\t\"f73\":2673,\n\t\t\"f74\":2674,\n\t\t\"f75\":2675,\n\t\t\"f76\":2676,\n\t\t\"f77\":2677,\n\t\t\"f78\":2678,\n\t\t\"f79\":2679,\n\t\t\"f80\":2680,\n\t\t\"f81\":2681,\n\t\t\"f82\":2682,\n\t\t\"f83\":2683,\n\t\t\"f84\":2684,\n\t\t\"f85\":2685,\n\t\t\"f86\":2686,\n\t\t\"f87\":2687,\n\t\t\"f88\":2688,\n\t\t\"f89\":2689,\n\t\t\"f90\":2690,\n\t\t\"f91\":2691,\n\t\t\"f92\":2692,\n\t\t\"f93\":2693,\n\t\t\"f94\":2694,\n\t\t\"f95\":2695,\n\t\t\"f96\":2696,\n\t\t\"f97\":2697,\n\t\t\"f98\":2698,\n\t\t\"f99\":2699\n\t},\n\t{\n\t\t\"f0\":2700,\n\t\t\"f1\":2701,\n\t\t\"f2\":2702,\n\t\t\"f3\":2703,\n\t\t\"f4\":2704,\n\t\t\"f5\":2705,\n\t\t\"f6\":2706,\n\t\t\"f7\":2707,\n\t\t\"f8\":2708,\n\t\t\"f9\":2709,\n\t\t\"f10\":2710,\n\t\t\"f11\":2711,\n\t\t\"f12\":2712,\n\t\t\"f13\":2713,\n\t\t\"f14\":2714,\n\t\t\"f15\":2715,\n\t\t\"f16\":2716,\n\t\t\"f17\":2717,\n\t\t\"f18\":2718,\n\t\t\"f19\":2719,\n\t\t\"f20\":2720,\n\t\t\"f21\":2721,\n\t\t\"f22\":2722,\n\t\t\"f23\":2723,\n\t\t\"f24\":2724,\n\t\t\"f25\":2725,\n\t\t\"f26\":2726,\n\t\t\"f27\":2727,\n\t\t\"f28\":2728,\n\t\t\"f29\":2729,\n\t\t\"f30\":2730,\n\t\t\"f31\":2731,\n\t\t\"f32\":2732,\n\t\t\"f33\":2733,\n\t\t\"f34\":2734,\n\t\t\"f35\":2735,\n\t\t\"f36\":2736,\n\t\t\"f37\":2737,\n\t\t\"f38\":2738,\n\t\t\"f39\":2739,\n\t\t\"f40\":2740,\n\t\t\"f41\":2741,\n\t\t\"f42\":2742,\n\t\t\"f43\":2743,\n\t\t\"f44\":2744,\n\t\t\"f45\":2745,\n\t\t\"f46\":2746,\n\t\t\"f47\":2747,\n\t\t\"f48\":2748,\n\t\t\"f49\":2749,\n\t\t\"f50\":2750,\n\t\t\"f51\":2751,\n\t\t\"f52\":2752,\n\t\t\"f53\":2753,\n\t\t\"f54\":2754,\n\t\t\"f55\":2755,\n\t\t\"f56\":2756,\n\t\t\"f57\":2757,\n\t\t\"f58\":2758,\n\t\t\"f59\":2759,\n\t\t\"f60\":2760,\n\t\t\"f61\":2761,\n\t\t\"f62\":2762,\n\t\t\"f63\":2763,\n\t\t\"f64\":2764,\n\t\t\"f65\":2765,\n\t\t\"f66\":2766,\n\t\t\"f67\":2767,\n\t\t\"f68\":2768,\n\t\t\"f69\":2769,\n\t\t\"f70\":2770,\n\t\t\"f71\":2771,\n\t\t\"f72\":2772,\n\t\t\"f73\":2773,\n\t\t\"f74\":2774,\n\t\t\"f75\":2775,\n\t\t\"f76\":2776,\n\t\t\"f77\":2777,\n\t\t\"f78\":2778,\n\t\t\"f79\":2779,\n\t\t\"f80\":2780,\n\t\t\"f81\":2781,\n\t\t\"f82\":2782,\n\t\t\"f83\":2783,\n\t\t\"f84\":2784,\n\t\t\"f85\":2785,\n\t\t\"f86\":2786,\n\t\t\"f87\":2787,\n\t\t\"f88\":2788,\n\t\t\"f89\":2789,\n\t\t\"f90\":2790,\n\t\t\"f91\":2791,\n\t\t\"f92\":2792,\n\t\t\"f93\":2793,\n\t\t\"f94\":2794,\n\t\t\"f95\":2795,\n\t\t\"f96\":2796,\n\t\t\"f97\":2797,\n\t\t\"f98\":2798,\n\t\t\"f99\":2799\n\t},\n\t{\n\t\t\"f0\":2800,\n\t\t\"f1\":2801,\n\t\t\"f2\":2802,\n\t\t\"f3\":2803,\n\t\t\"f4\":2804,\n\t\t\"f5\":2805,\n\t\t\"f6\":2806,\n\t\t\"f7\":2807,\n\t\t\"f8\":2808,\n\t\t\"f9\":2809,\n\t\t\"f10\":2810,\n\t\t\"f11\":2811,\n\t\t\"f12\":2812,\n\t\t\"f13\":2813,\n\t\t\"f14\":2814,\n\t\t\"f15\":2815,\n\t\t\"f16\":2816,\n\t\t\"f17\":2817,\n\t\t\"f18\":2818,\n\t\t\"f19\":2819,\n\t\t\"f20\":2820,\n\t\t\"f21\":2821,\n\t\t\"f22\":2822,\n\t\t\"f23\":2823,\n\t\t\"f24\":2824,\n\t\t\"f25\":2825,\n\t\t\"f26\":2826,\n\t\t\"f27\":2827,\n\t\t\"f28\":2828,\n\t\t\"f29\":2829,\n\t\t\"f30\":2830,\n\t\t\"f31\":2831,\n\t\t\"f32\":2832,\n\t\t\"f33\":2833,\n\t\t\"f34\":2834,\n\t\t\"f35\":2835,\n\t\t\"f36\":2836,\n\t\t\"f37\":2837,\n\t\t\"f38\":2838,\n\t\t\"f39\":2839,\n\t\t\"f40\":2840,\n\t\t\"f41\":2841,\n\t\t\"f42\":2842,\n\t\t\"f43\":2843,\n\t\t\"f44\":2844,\n\t\t\"f45\":2845,\n\t\t\"f46\":2846,\n\t\t\"f47\":2847,\n\t\t\"f48\":2848,\n\t\t\"f49\":2849,\n\t\t\"f50\":2850,\n\t\t\"f51\":2851,\n\t\t\"f52\":2852,\n\t\t\"f53\":2853,\n\t\t\"f54\":2854,\n\t\t\"f55\":2855,\n\t\t\"f56\":2856,\n\t\t\"f57\":2857,\n\t\t\"f58\":2858,\n\t\t\"f59\":2859,\n\t\t\"f60\":2860,\n\t\t\"f61\":2861,\n\t\t\"f62\":2862,\n\t\t\"f63\":2863,\n\t\t\"f64\":2864,\n\t\t\"f65\":2865,\n\t\t\"f66\":2866,\n\t\t\"f67\":2867,\n\t\t\"f68\":2868,\n\t\t\"f69\":2869,\n\t\t\"f70\":2870,\n\t\t\"f71\":2871,\n\t\t\"f72\":2872,\n\t\t\"f73\":2873,\n\t\t\"f74\":2874,\n\t\t\"f75\":2875,\n\t\t\"f76\":2876,\n\t\t\"f77\":2877,\n\t\t\"f78\":2878,\n\t\t\"f79\":2879,\n\t\t\"f80\":2880,\n\t\t\"f81\":2881,\n\t\t\"f82\":2882,\n\t\t\"f83\":2883,\n\t\t\"f84\":2884,\n\t\t\"f85\":2885,\n\t\t\"f86\":2886,\n\t\t\"f87\":2887,\n\t\t\"f88\":2888,\n\t\t\"f89\":2889,\n\t\t\"f90\":2890,\n\t\t\"f91\":2891,\n\t\t\"f92\":2892,\n\t\t\"f93\":2893,\n\t\t\"f94\":2894,\n\t\t\"f95\":2895,\n\t\t\"f96\":2896,\n\t\t\"f97\":2897,\n\t\t\"f98\":2898,\n\t\t\"f99\":2899\n\t},\n\t{\n\t\t\"f0\":2900,\n\t\t\"f1\":2901,\n\t\t\"f2\":2902,\n\t\t\"f3\":2903,\n\t\t\"f4\":2904,\n\t\t\"f5\":2905,\n\t\t\"f6\":2906,\n\t\t\"f7\":2907,\n\t\t\"f8\":2908,\n\t\t\"f9\":2909,\n\t\t\"f10\":2910,\n\t\t\"f11\":2911,\n\t\t\"f12\":2912,\n\t\t\"f13\":2913,\n\t\t\"f14\":2914,\n\t\t\"f15\":2915,\n\t\t\"f16\":2916,\n\t\t\"f17\":2917,\n\t\t\"f18\":2918,\n\t\t\"f19\":2919,\n\t\t\"f20\":2920,\n\t\t\"f21\":2921,\n\t\t\"f22\":2922,\n\t\t\"f23\":2923,\n\t\t\"f24\":2924,\n\t\t\"f25\":2925,\n\t\t\"f26\":2926,\n\t\t\"f27\":2927,\n\t\t\"f28\":2928,\n\t\t\"f29\":2929,\n\t\t\"f30\":2930,\n\t\t\"f31\":2931,\n\t\t\"f32\":2932,\n\t\t\"f33\":2933,\n\t\t\"f34\":2934,\n\t\t\"f35\":2935,\n\t\t\"f36\":2936,\n\t\t\"f37\":2937,\n\t\t\"f38\":2938,\n\t\t\"f39\":2939,\n\t\t\"f40\":2940,\n\t\t\"f41\":2941,\n\t\t\"f42\":2942,\n\t\t\"f43\":2943,\n\t\t\"f44\":2944,\n\t\t\"f45\":2945,\n\t\t\"f46\":2946,\n\t\t\"f47\":2947,\n\t\t\"f48\":2948,\n\t\t\"f49\":2949,\n\t\t\"f50\":2950,\n\t\t\"f51\":2951,\n\t\t\"f52\":2952,\n\t\t\"f53\":2953,\n\t\t\"f54\":2954,\n\t\t\"f55\":2955,\n\t\t\"f56\":2956,\n\t\t\"f57\":2957,\n\t\t\"f58\":2958,\n\t\t\"f59\":2959,\n\t\t\"f60\":2960,\n\t\t\"f61\":2961,\n\t\t\"f62\":2962,\n\t\t\"f63\":2963,\n\t\t\"f64\":2964,\n\t\t\"f65\":2965,\n\t\t\"f66\":2966,\n\t\t\"f67\":2967,\n\t\t\"f68\":2968,\n\t\t\"f69\":2969,\n\t\t\"f70\":2970,\n\t\t\"f71\":2971,\n\t\t\"f72\":2972,\n\t\t\"f73\":2973,\n\t\t\"f74\":2974,\n\t\t\"f75\":2975,\n\t\t\"f76\":2976,\n\t\t\"f77\":2977,\n\t\t\"f78\":2978,\n\t\t\"f79\":2979,\n\t\t\"f80\":2980,\n\t\t\"f81\":2981,\n\t\t\"f82\":2982,\n\t\t\"f83\":2983,\n\t\t\"f84\":2984,\n\t\t\"f85\":2985,\n\t\t\"f86\":2986,\n\t\t\"f87\":2987,\n\t\t\"f88\":2988,\n\t\t\"f89\":2989,\n\t\t\"f90\":2990,\n\t\t\"f91\":2991,\n\t\t\"f92\":2992,\n\t\t\"f93\":2993,\n\t\t\"f94\":2994,\n\t\t\"f95\":2995,\n\t\t\"f96\":2996,\n\t\t\"f97\":2997,\n\t\t\"f98\":2998,\n\t\t\"f99\":2999\n\t},\n\t{\n\t\t\"f0\":3000,\n\t\t\"f1\":3001,\n\t\t\"f2\":3002,\n\t\t\"f3\":3003,\n\t\t\"f4\":3004,\n\t\t\"f5\":3005,\n\t\t\"f6\":3006,\n\t\t\"f7\":3007,\n\t\t\"f8\":3008,\n\t\t\"f9\":3009,\n\t\t\"f10\":3010,\n\t\t\"f11\":3011,\n\t\t\"f12\":3012,\n\t\t\"f13\":3013,\n\t\t\"f14\":3014,\n\t\t\"f15\":3015,\n\t\t\"f16\":3016,\n\t\t\"f17\":3017,\n\t\t\"f18\":3018,\n\t\t\"f19\":3019,\n\t\t\"f20\":3020,\n\t\t\"f21\":3021,\n\t\t\"f22\":3022,\n\t\t\"f23\":3023,\n\t\t\"f24\":3024,\n\t\t\"f25\":3025,\n\t\t\"f26\":3026,\n\t\t\"f27\":3027,\n\t\t\"f28\":3028,\n\t\t\"f29\":3029,\n\t\t\"f30\":3030,\n\t\t\"f31\":3031,\n\t\t\"f32\":3032,\n\t\t\"f33\":3033,\n\t\t\"f34\":3034,\n\t\t\"f35\":3035,\n\t\t\"f36\":3036,\n\t\t\"f37\":3037,\n\t\t\"f38\":3038,\n\t\t\"f39\":3039,\n\t\t\"f40\":3040,\n\t\t\"f41\":3041,\n\t\t\"f42\":3042,\n\t\t\"f43\":3043,\n\t\t\"f44\":3044,\n\t\t\"f45\":3045,\n\t\t\"f46\":3046,\n\t\t\"f47\":3047,\n\t\t\"f48\":3048,\n\t\t\"f49\":3049,\n\t\t\"f50\":3050,\n\t\t\"f51\":3051,\n\t\t\"f52\":3052,\n\t\t\"f53\":3053,\n\t\t\"f54\":3054,\n\t\t\"f55\":3055,\n\t\t\"f56\":3056,\n\t\t\"f57\":3057,\n\t\t\"f58\":3058,\n\t\t\"f59\":3059,\n\t\t\"f60\":3060,\n\t\t\"f61\":3061,\n\t\t\"f62\":3062,\n\t\t\"f63\":3063,\n\t\t\"f64\":3064,\n\t\t\"f65\":3065,\n\t\t\"f66\":3066,\n\t\t\"f67\":3067,\n\t\t\"f68\":3068,\n\t\t\"f69\":3069,\n\t\t\"f70\":3070,\n\t\t\"f71\":3071,\n\t\t\"f72\":3072,\n\t\t\"f73\":3073,\n\t\t\"f74\":3074,\n\t\t\"f75\":3075,\n\t\t\"f76\":3076,\n\t\t\"f77\":3077,\n\t\t\"f78\":3078,\n\t\t\"f79\":3079,\n\t\t\"f80\":3080,\n\t\t\"f81\":3081,\n\t\t\"f82\":3082,\n\t\t\"f83\":3083,\n\t\t\"f84\":3084,\n\t\t\"f85\":3085,\n\t\t\"f86\":3086,\n\t\t\"f87\":3087,\n\t\t\"f88\":3088,\n\t\t\"f89\":3089,\n\t\t\"f90\":3090,\n\t\t\"f91\":3091,\n\t\t\"f92\":3092,\n\t\t\"f93\":3093,\n\t\t\"f94\":3094,\n\t\t\"f95\":3095,\n\t\t\"f96\":3096,\n\t\t\"f97\":3097,\n\t\t\"f98\":3098,\n\t\t\"f99\":3099\n\t},\n\t{\n\t\t\"f0\":3100,\n\t\t\"f1\":3101,\n\t\t\"f2\":3102,\n\t\t\"f3\":3103,\n\t\t\"f4\":3104,\n\t\t\"f5\":3105,\n\t\t\"f6\":3106,\n\t\t\"f7\":3107,\n\t\t\"f8\":3108,\n\t\t\"f9\":3109,\n\t\t\"f10\":3110,\n\t\t\"f11\":3111,\n\t\t\"f12\":3112,\n\t\t\"f13\":3113,\n\t\t\"f14\":3114,\n\t\t\"f15\":3115,\n\t\t\"f16\":3116,\n\t\t\"f17\":3117,\n\t\t\"f18\":3118,\n\t\t\"f19\":3119,\n\t\t\"f20\":3120,\n\t\t\"f21\":3121,\n\t\t\"f22\":3122,\n\t\t\"f23\":3123,\n\t\t\"f24\":3124,\n\t\t\"f25\":3125,\n\t\t\"f26\":3126,\n\t\t\"f27\":3127,\n\t\t\"f28\":3128,\n\t\t\"f29\":3129,\n\t\t\"f30\":3130,\n\t\t\"f31\":3131,\n\t\t\"f32\":3132,\n\t\t\"f33\":3133,\n\t\t\"f34\":3134,\n\t\t\"f35\":3135,\n\t\t\"f36\":3136,\n\t\t\"f37\":3137,\n\t\t\"f38\":3138,\n\t\t\"f39\":3139,\n\t\t\"f40\":3140,\n\t\t\"f41\":3141,\n\t\t\"f42\":3142,\n\t\t\"f43\":3143,\n\t\t\"f44\":3144,\n\t\t\"f45\":3145,\n\t\t\"f46\":3146,\n\t\t\"f47\":3147,\n\t\t\"f48\":3148,\n\t\t\"f49\":3149,\n\t\t\"f50\":3150,\n\t\t\"f51\":3151,\n\t\t\"f52\":3152,\n\t\t\"f53\":3153,\n\t\t\"f54\":3154,\n\t\t\"f55\":3155,\n\t\t\"f56\":3156,\n\t\t\"f57\":3157,\n\t\t\"f58\":3158,\n\t\t\"f59\":3159,\n\t\t\"f60\":3160,\n\t\t\"f61\":3161,\n\t\t\"f62\":3162,\n\t\t\"f63\":3163,\n\t\t\"f64\":3164,\n\t\t\"f65\":3165,\n\t\t\"f66\":3166,\n\t\t\"f67\":3167,\n\t\t\"f68\":3168,\n\t\t\"f69\":3169,\n\t\t\"f70\":3170,\n\t\t\"f71\":3171,\n\t\t\"f72\":3172,\n\t\t\"f73\":3173,\n\t\t\"f74\":3174,\n\t\t\"f75\":3175,\n\t\t\"f76\":3176,\n\t\t\"f77\":3177,\n\t\t\"f78\":3178,\n\t\t\"f79\":3179,\n\t\t\"f80\":3180,\n\t\t\"f81\":3181,\n\t\t\"f82\":3182,\n\t\t\"f83\":3183,\n\t\t\"f84\":3184,\n\t\t\"f85\":3185,\n\t\t\"f86\":3186,\n\t\t\"f87\":3187,\n\t\t\"f88\":3188,\n\t\t\"f89\":3189,\n\t\t\"f90\":3190,\n\t\t\"f91\":3191,\n\t\t\"f92\":3192,\n\t\t\"f93\":3193,\n\t\t\"f94\":3194,\n\t\t\"f95\":3195,\n\t\t\"f96\":3196,\n\t\t\"f97\":3197,\n\t\t\"f98\":3198,\n\t\t\"f99\":3199\n\t},\n\t{\n\t\t\"f0\":3200,\n\t\t\"f1\":3201,\n\t\t\"f2\":3202,\n\t\t\"f3\":3203,\n\t\t\"f4\":3204,\n\t\t\"f5\":3205,\n\t\t\"f6\":3206,\n\t\t\"f7\":3207,\n\t\t\"f8\":3208,\n\t\t\"f9\":3209,\n\t\t\"f10\":3210,\n\t\t\"f11\":3211,\n\t\t\"f12\":3212,\n\t\t\"f13\":3213,\n\t\t\"f14\":3214,\n\t\t\"f15\":3215,\n\t\t\"f16\":3216,\n\t\t\"f17\":3217,\n\t\t\"f18\":3218,\n\t\t\"f19\":3219,\n\t\t\"f20\":3220,\n\t\t\"f21\":3221,\n\t\t\"f22\":3222,\n\t\t\"f23\":3223,\n\t\t\"f24\":3224,\n\t\t\"f25\":3225,\n\t\t\"f26\":3226,\n\t\t\"f27\":3227,\n\t\t\"f28\":3228,\n\t\t\"f29\":3229,\n\t\t\"f30\":3230,\n\t\t\"f31\":3231,\n\t\t\"f32\":3232,\n\t\t\"f33\":3233,\n\t\t\"f34\":3234,\n\t\t\"f35\":3235,\n\t\t\"f36\":3236,\n\t\t\"f37\":3237,\n\t\t\"f38\":3238,\n\t\t\"f39\":3239,\n\t\t\"f40\":3240,\n\t\t\"f41\":3241,\n\t\t\"f42\":3242,\n\t\t\"f43\":3243,\n\t\t\"f44\":3244,\n\t\t\"f45\":3245,\n\t\t\"f46\":3246,\n\t\t\"f47\":3247,\n\t\t\"f48\":3248,\n\t\t\"f49\":3249,\n\t\t\"f50\":3250,\n\t\t\"f51\":3251,\n\t\t\"f52\":3252,\n\t\t\"f53\":3253,\n\t\t\"f54\":3254,\n\t\t\"f55\":3255,\n\t\t\"f56\":3256,\n\t\t\"f57\":3257,\n\t\t\"f58\":3258,\n\t\t\"f59\":3259,\n\t\t\"f60\":3260,\n\t\t\"f61\":3261,\n\t\t\"f62\":3262,\n\t\t\"f63\":3263,\n\t\t\"f64\":3264,\n\t\t\"f65\":3265,\n\t\t\"f66\":3266,\n\t\t\"f67\":3267,\n\t\t\"f68\":3268,\n\t\t\"f69\":3269,\n\t\t\"f70\":3270,\n\t\t\"f71\":3271,\n\t\t\"f72\":3272,\n\t\t\"f73\":3273,\n\t\t\"f74\":3274,\n\t\t\"f75\":3275,\n\t\t\"f76\":3276,\n\t\t\"f77\":3277,\n\t\t\"f78\":3278,\n\t\t\"f79\":3279,\n\t\t\"f80\":3280,\n\t\t\"f81\":3281,\n\t\t\"f82\":3282,\n\t\t\"f83\":3283,\n\t\t\"f84\":3284,\n\t\t\"f85\":3285,\n\t\t\"f86\":3286,\n\t\t\"f87\":3287,\n\t\t\"f88\":3288,\n\t\t\"f89\":3289,\n\t\t\"f90\":3290,\n\t\t\"f91\":3291,\n\t\t\"f92\":3292,\n\t\t\"f93\":3293,\n\t\t\"f94\":3294,\n\t\t\"f95\":3295,\n\t\t\"f96\":3296,\n\t\t\"f97\":3297,\n\t\t\"f98\":3298,\n\t\t\"f99\":3299\n\t},\n\t{\n\t\t\"f0\":3300,\n\t\t\"f1\":3301,\n\t\t\"f2\":3302,\n\t\t\"f3\":3303,\n\t\t\"f4\":3304,\n\t\t\"f5\":3305,\n\t\t\"f6\":3306,\n\t\t\"f7\":3307,\n\t\t\"f8\":3308,\n\t\t\"f9\":3309,\n\t\t\"f10\":3310,\n\t\t\"f11\":3311,\n\t\t\"f12\":3312,\n\t\t\"f13\":3313,\n\t\t\"f14\":3314,\n\t\t\"f15\":3315,\n\t\t\"f16\":3316,\n\t\t\"f17\":3317,\n\t\t\"f18\":3318,\n\t\t\"f19\":3319,\n\t\t\"f20\":3320,\n\t\t\"f21\":3321,\n\t\t\"f22\":3322,\n\t\t\"f23\":3323,\n\t\t\"f24\":3324,\n\t\t\"f25\":3325,\n\t\t\"f26\":3326,\n\t\t\"f27\":3327,\n\t\t\"f28\":3328,\n\t\t\"f29\":3329,\n\t\t\"f30\":3330,\n\t\t\"f31\":3331,\n\t\t\"f32\":3332,\n\t\t\"f33\":3333,\n\t\t\"f34\":3334,\n\t\t\"f35\":3335,\n\t\t\"f36\":3336,\n\t\t\"f37\":3337,\n\t\t\"f38\":3338,\n\t\t\"f39\":3339,\n\t\t\"f40\":3340,\n\t\t\"f41\":3341,\n\t\t\"f42\":3342,\n\t\t\"f43\":3343,\n\t\t\"f44\":3344,\n\t\t\"f45\":3345,\n\t\t\"f46\":3346,\n\t\t\"f47\":3347,\n\t\t\"f48\":3348,\n\t\t\"f49\":3349,\n\t\t\"f50\":3350,\n\t\t\"f51\":3351,\n\t\t\"f52\":3352,\n\t\t\"f53\":3353,\n\t\t\"f54\":3354,\n\t\t\"f55\":3355,\n\t\t\"f56\":3356,\n\t\t\"f57\":3357,\n\t\t\"f58\":3358,\n\t\t\"f59\":3359,\n\t\t\"f60\":3360,\n\t\t\"f61\":3361,\n\t\t\"f62\":3362,\n\t\t\"f63\":3363,\n\t\t\"f64\":3364,\n\t\t\"f65\":3365,\n\t\t\"f66\":3366,\n\t\t\"f67\":3367,\n\t\t\"f68\":3368,\n\t\t\"f69\":3369,\n\t\t\"f70\":3370,\n\t\t\"f71\":3371,\n\t\t\"f72\":3372,\n\t\t\"f73\":3373,\n\t\t\"f74\":3374,\n\t\t\"f75\":3375,\n\t\t\"f76\":3376,\n\t\t\"f77\":3377,\n\t\t\"f78\":3378,\n\t\t\"f79\":3379,\n\t\t\"f80\":3380,\n\t\t\"f81\":3381,\n\t\t\"f82\":3382,\n\t\t\"f83\":3383,\n\t\t\"f84\":3384,\n\t\t\"f85\":3385,\n\t\t\"f86\":3386,\n\t\t\"f87\":3387,\n\t\t\"f88\":3388,\n\t\t\"f89\":3389,\n\t\t\"f90\":3390,\n\t\t\"f91\":3391,\n\t\t\"f92\":3392,\n\t\t\"f93\":3393,\n\t\t\"f94\":3394,\n\t\t\"f95\":3395,\n\t\t\"f96\":3396,\n\t\t\"f97\":3397,\n\t\t\"f98\":3398,\n\t\t\"f99\":3399\n\t},\n\t{\n\t\t\"f0\":3400,\n\t\t\"f1\":3401,\n\t\t\"f2\":3402,\n\t\t\"f3\":3403,\n\t\t\"f4\":3404,\n\t\t\"f5\":3405,\n\t\t\"f6\":3406,\n\t\t\"f7\":3407,\n\t\t\"f8\":3408,\n\t\t\"f9\":3409,\n\t\t\"f10\":3410,\n\t\t\"f11\":3411,\n\t\t\"f12\":3412,\n\t\t\"f13\":3413,\n\t\t\"f14\":3414,\n\t\t\"f15\":3415,\n\t\t\"f16\":3416,\n\t\t\"f17\":3417,\n\t\t\"f18\":3418,\n\t\t\"f19\":3419,\n\t\t\"f20\":3420,\n\t\t\"f21\":3421,\n\t\t\"f22\":3422,\n\t\t\"f23\":3423,\n\t\t\"f24\":3424,\n\t\t\"f25\":3425,\n\t\t\"f26\":3426,\n\t\t\"f27\":3427,\n\t\t\"f28\":3428,\n\t\t\"f29\":3429,\n\t\t\"f30\":3430,\n\t\t\"f31\":3431,\n\t\t\"f32\":3432,\n\t\t\"f33\":3433,\n\t\t\"f34\":3434,\n\t\t\"f35\":3435,\n\t\t\"f36\":3436,\n\t\t\"f37\":3437,\n\t\t\"f38\":3438,\n\t\t\"f39\":3439,\n\t\t\"f40\":3440,\n\t\t\"f41\":3441,\n\t\t\"f42\":3442,\n\t\t\"f43\":3443,\n\t\t\"f44\":3444,\n\t\t\"f45\":3445,\n\t\t\"f46\":3446,\n\t\t\"f47\":3447,\n\t\t\"f48\":3448,\n\t\t\"f49\":3449,\n\t\t\"f50\":3450,\n\t\t\"f51\":3451,\n\t\t\"f52\":3452,\n\t\t\"f53\":3453,\n\t\t\"f54\":3454,\n\t\t\"f55\":3455,\n\t\t\"f56\":3456,\n\t\t\"f57\":3457,\n\t\t\"f58\":3458,\n\t\t\"f59\":3459,\n\t\t\"f60\":3460,\n\t\t\"f61\":3461,\n\t\t\"f62\":3462,\n\t\t\"f63\":3463,\n\t\t\"f64\":3464,\n\t\t\"f65\":3465,\n\t\t\"f66\":3466,\n\t\t\"f67\":3467,\n\t\t\"f68\":3468,\n\t\t\"f69\":3469,\n\t\t\"f70\":3470,\n\t\t\"f71\":3471,\n\t\t\"f72\":3472,\n\t\t\"f73\":3473,\n\t\t\"f74\":3474,\n\t\t\"f75\":3475,\n\t\t\"f76\":3476,\n\t\t\"f77\":3477,\n\t\t\"f78\":3478,\n\t\t\"f79\":3479,\n\t\t\"f80\":3480,\n\t\t\"f81\":3481,\n\t\t\"f82\":3482,\n\t\t\"f83\":3483,\n\t\t\"f84\":3484,\n\t\t\"f85\":3485,\n\t\t\"f86\":3486,\n\t\t\"f87\":3487,\n\t\t\"f88\":3488,\n\t\t\"f89\":3489,\n\t\t\"f90\":3490,\n\t\t\"f91\":3491,\n\t\t\"f92\":3492,\n\t\t\"f93\":3493,\n\t\t\"f94\":3494,\n\t\t\"f95\":3495,\n\t\t\"f96\":3496,\n\t\t\"f97\":3497,\n\t\t\"f98\":3498,\n\t\t\"f99\":3499\n\t},\n\t{\n\t\t\"f0\":3500,\n\t\t\"f1\":3501,\n\t\t\"f2\":3502,\n\t\t\"f3\":3503,\n\t\t\"f4\":3504,\n\t\t\"f5\":3505,\n\t\t\"f6\":3506,\n\t\t\"f7\":3507,\n\t\t\"f8\":3508,\n\t\t\"f9\":3509,\n\t\t\"f10\":3510,\n\t\t\"f11\":3511,\n\t\t\"f12\":3512,\n\t\t\"f13\":3513,\n\t\t\"f14\":3514,\n\t\t\"f15\":3515,\n\t\t\"f16\":3516,\n\t\t\"f17\":3517,\n\t\t\"f18\":3518,\n\t\t\"f19\":3519,\n\t\t\"f20\":3520,\n\t\t\"f21\":3521,\n\t\t\"f22\":3522,\n\t\t\"f23\":3523,\n\t\t\"f24\":3524,\n\t\t\"f25\":3525,\n\t\t\"f26\":3526,\n\t\t\"f27\":3527,\n\t\t\"f28\":3528,\n\t\t\"f29\":3529,\n\t\t\"f30\":3530,\n\t\t\"f31\":3531,\n\t\t\"f32\":3532,\n\t\t\"f33\":3533,\n\t\t\"f34\":3534,\n\t\t\"f35\":3535,\n\t\t\"f36\":3536,\n\t\t\"f37\":3537,\n\t\t\"f38\":3538,\n\t\t\"f39\":3539,\n\t\t\"f40\":3540,\n\t\t\"f41\":3541,\n\t\t\"f42\":3542,\n\t\t\"f43\":3543,\n\t\t\"f44\":3544,\n\t\t\"f45\":3545,\n\t\t\"f46\":3546,\n\t\t\"f47\":3547,\n\t\t\"f48\":3548,\n\t\t\"f49\":3549,\n\t\t\"f50\":3550,\n\t\t\"f51\":3551,\n\t\t\"f52\":3552,\n\t\t\"f53\":3553,\n\t\t\"f54\":3554,\n\t\t\"f55\":3555,\n\t\t\"f56\":3556,\n\t\t\"f57\":3557,\n\t\t\"f58\":3558,\n\t\t\"f59\":3559,\n\t\t\"f60\":3560,\n\t\t\"f61\":3561,\n\t\t\"f62\":3562,\n\t\t\"f63\":3563,\n\t\t\"f64\":3564,\n\t\t\"f65\":3565,\n\t\t\"f66\":3566,\n\t\t\"f67\":3567,\n\t\t\"f68\":3568,\n\t\t\"f69\":3569,\n\t\t\"f70\":3570,\n\t\t\"f71\":3571,\n\t\t\"f72\":3572,\n\t\t\"f73\":3573,\n\t\t\"f74\":3574,\n\t\t\"f75\":3575,\n\t\t\"f76\":3576,\n\t\t\"f77\":3577,\n\t\t\"f78\":3578,\n\t\t\"f79\":3579,\n\t\t\"f80\":3580,\n\t\t\"f81\":3581,\n\t\t\"f82\":3582,\n\t\t\"f83\":3583,\n\t\t\"f84\":3584,\n\t\t\"f85\":3585,\n\t\t\"f86\":3586,\n\t\t\"f87\":3587,\n\t\t\"f88\":3588,\n\t\t\"f89\":3589,\n\t\t\"f90\":3590,\n\t\t\"f91\":3591,\n\t\t\"f92\":3592,\n\t\t\"f93\":3593,\n\t\t\"f94\":3594,\n\t\t\"f95\":3595,\n\t\t\"f96\":3596,\n\t\t\"f97\":3597,\n\t\t\"f98\":3598,\n\t\t\"f99\":3599\n\t},\n\t{\n\t\t\"f0\":3600,\n\t\t\"f1\":3601,\n\t\t\"f2\":3602,\n\t\t\"f3\":3603,\n\t\t\"f4\":3604,\n\t\t\"f5\":3605,\n\t\t\"f6\":3606,\n\t\t\"f7\":3607,\n\t\t\"f8\":3608,\n\t\t\"f9\":3609,\n\t\t\"f10\":3610,\n\t\t\"f11\":3611,\n\t\t\"f12\":3612,\n\t\t\"f13\":3613,\n\t\t\"f14\":3614,\n\t\t\"f15\":3615,\n\t\t\"f16\":3616,\n\t\t\"f17\":3617,\n\t\t\"f18\":3618,\n\t\t\"f19\":3619,\n\t\t\"f20\":3620,\n\t\t\"f21\":3621,\n\t\t\"f22\":3622,\n\t\t\"f23\":3623,\n\t\t\"f24\":3624,\n\t\t\"f25\":3625,\n\t\t\"f26\":3626,\n\t\t\"f27\":3627,\n\t\t\"f28\":3628,\n\t\t\"f29\":3629,\n\t\t\"f30\":3630,\n\t\t\"f31\":3631,\n\t\t\"f32\":3632,\n\t\t\"f33\":3633,\n\t\t\"f34\":3634,\n\t\t\"f35\":3635,\n\t\t\"f36\":3636,\n\t\t\"f37\":3637,\n\t\t\"f38\":3638,\n\t\t\"f39\":3639,\n\t\t\"f40\":3640,\n\t\t\"f41\":3641,\n\t\t\"f42\":3642,\n\t\t\"f43\":3643,\n\t\t\"f44\":3644,\n\t\t\"f45\":3645,\n\t\t\"f46\":3646,\n\t\t\"f47\":3647,\n\t\t\"f48\":3648,\n\t\t\"f49\":3649,\n\t\t\"f50\":3650,\n\t\t\"f51\":3651,\n\t\t\"f52\":3652,\n\t\t\"f53\":3653,\n\t\t\"f54\":3654,\n\t\t\"f55\":3655,\n\t\t\"f56\":3656,\n\t\t\"f57\":3657,\n\t\t\"f58\":3658,\n\t\t\"f59\":3659,\n\t\t\"f60\":3660,\n\t\t\"f61\":3661,\n\t\t\"f62\":3662,\n\t\t\"f63\":3663,\n\t\t\"f64\":3664,\n\t\t\"f65\":3665,\n\t\t\"f66\":3666,\n\t\t\"f67\":3667,\n\t\t\"f68\":3668,\n\t\t\"f69\":3669,\n\t\t\"f70\":3670,\n\t\t\"f71\":3671,\n\t\t\"f72\":3672,\n\t\t\"f73\":3673,\n\t\t\"f74\":3674,\n\t\t\"f75\":3675,\n\t\t\"f76\":3676,\n\t\t\"f77\":3677,\n\t\t\"f78\":3678,\n\t\t\"f79\":3679,\n\t\t\"f80\":3680,\n\t\t\"f81\":3681,\n\t\t\"f82\":3682,\n\t\t\"f83\":3683,\n\t\t\"f84\":3684,\n\t\t\"f85\":3685,\n\t\t\"f86\":3686,\n\t\t\"f87\":3687,\n\t\t\"f88\":3688,\n\t\t\"f89\":3689,\n\t\t\"f90\":3690,\n\t\t\"f91\":3691,\n\t\t\"f92\":3692,\n\t\t\"f93\":3693,\n\t\t\"f94\":3694,\n\t\t\"f95\":3695,\n\t\t\"f96\":3696,\n\t\t\"f97\":3697,\n\t\t\"f98\":3698,\n\t\t\"f99\":3699\n\t},\n\t{\n\t\t\"f0\":3700,\n\t\t\"f1\":3701,\n\t\t\"f2\":3702,\n\t\t\"f3\":3703,\n\t\t\"f4\":3704,\n\t\t\"f5\":3705,\n\t\t\"f6\":3706,\n\t\t\"f7\":3707,\n\t\t\"f8\":3708,\n\t\t\"f9\":3709,\n\t\t\"f10\":3710,\n\t\t\"f11\":3711,\n\t\t\"f12\":3712,\n\t\t\"f13\":3713,\n\t\t\"f14\":3714,\n\t\t\"f15\":3715,\n\t\t\"f16\":3716,\n\t\t\"f17\":3717,\n\t\t\"f18\":3718,\n\t\t\"f19\":3719,\n\t\t\"f20\":3720,\n\t\t\"f21\":3721,\n\t\t\"f22\":3722,\n\t\t\"f23\":3723,\n\t\t\"f24\":3724,\n\t\t\"f25\":3725,\n\t\t\"f26\":3726,\n\t\t\"f27\":3727,\n\t\t\"f28\":3728,\n\t\t\"f29\":3729,\n\t\t\"f30\":3730,\n\t\t\"f31\":3731,\n\t\t\"f32\":3732,\n\t\t\"f33\":3733,\n\t\t\"f34\":3734,\n\t\t\"f35\":3735,\n\t\t\"f36\":3736,\n\t\t\"f37\":3737,\n\t\t\"f38\":3738,\n\t\t\"f39\":3739,\n\t\t\"f40\":3740,\n\t\t\"f41\":3741,\n\t\t\"f42\":3742,\n\t\t\"f43\":3743,\n\t\t\"f44\":3744,\n\t\t\"f45\":3745,\n\t\t\"f46\":3746,\n\t\t\"f47\":3747,\n\t\t\"f48\":3748,\n\t\t\"f49\":3749,\n\t\t\"f50\":3750,\n\t\t\"f51\":3751,\n\t\t\"f52\":3752,\n\t\t\"f53\":3753,\n\t\t\"f54\":3754,\n\t\t\"f55\":3755,\n\t\t\"f56\":3756,\n\t\t\"f57\":3757,\n\t\t\"f58\":3758,\n\t\t\"f59\":3759,\n\t\t\"f60\":3760,\n\t\t\"f61\":3761,\n\t\t\"f62\":3762,\n\t\t\"f63\":3763,\n\t\t\"f64\":3764,\n\t\t\"f65\":3765,\n\t\t\"f66\":3766,\n\t\t\"f67\":3767,\n\t\t\"f68\":3768,\n\t\t\"f69\":3769,\n\t\t\"f70\":3770,\n\t\t\"f71\":3771,\n\t\t\"f72\":3772,\n\t\t\"f73\":3773,\n\t\t\"f74\":3774,\n\t\t\"f75\":3775,\n\t\t\"f76\":3776,\n\t\t\"f77\":3777,\n\t\t\"f78\":3778,\n\t\t\"f79\":3779,\n\t\t\"f80\":3780,\n\t\t\"f81\":3781,\n\t\t\"f82\":3782,\n\t\t\"f83\":3783,\n\t\t\"f84\":3784,\n\t\t\"f85\":3785,\n\t\t\"f86\":3786,\n\t\t\"f87\":3787,\n\t\t\"f88\":3788,\n\t\t\"f89\":3789,\n\t\t\"f90\":3790,\n\t\t\"f91\":3791,\n\t\t\"f92\":3792,\n\t\t\"f93\":3793,\n\t\t\"f94\":3794,\n\t\t\"f95\":3795,\n\t\t\"f96\":3796,\n\t\t\"f97\":3797,\n\t\t\"f98\":3798,\n\t\t\"f99\":3799\n\t},\n\t{\n\t\t\"f0\":3800,\n\t\t\"f1\":3801,\n\t\t\"f2\":3802,\n\t\t\"f3\":3803,\n\t\t\"f4\":3804,\n\t\t\"f5\":3805,\n\t\t\"f6\":3806,\n\t\t\"f7\":3807,\n\t\t\"f8\":3808,\n\t\t\"f9\":3809,\n\t\t\"f10\":3810,\n\t\t\"f11\":3811,\n\t\t\"f12\":3812,\n\t\t\"f13\":3813,\n\t\t\"f14\":3814,\n\t\t\"f15\":3815,\n\t\t\"f16\":3816,\n\t\t\"f17\":3817,\n\t\t\"f18\":3818,\n\t\t\"f19\":3819,\n\t\t\"f20\":3820,\n\t\t\"f21\":3821,\n\t\t\"f22\":3822,\n\t\t\"f23\":3823,\n\t\t\"f24\":3824,\n\t\t\"f25\":3825,\n\t\t\"f26\":3826,\n\t\t\"f27\":3827,\n\t\t\"f28\":3828,\n\t\t\"f29\":3829,\n\t\t\"f30\":3830,\n\t\t\"f31\":3831,\n\t\t\"f32\":3832,\n\t\t\"f33\":3833,\n\t\t\"f34\":3834,\n\t\t\"f35\":3835,\n\t\t\"f36\":3836,\n\t\t\"f37\":3837,\n\t\t\"f38\":3838,\n\t\t\"f39\":3839,\n\t\t\"f40\":3840,\n\t\t\"f41\":3841,\n\t\t\"f42\":3842,\n\t\t\"f43\":3843,\n\t\t\"f44\":3844,\n\t\t\"f45\":3845,\n\t\t\"f46\":3846,\n\t\t\"f47\":3847,\n\t\t\"f48\":3848,\n\t\t\"f49\":3849,\n\t\t\"f50\":3850,\n\t\t\"f51\":3851,\n\t\t\"f52\":3852,\n\t\t\"f53\":3853,\n\t\t\"f54\":3854,\n\t\t\"f55\":3855,\n\t\t\"f56\":3856,\n\t\t\"f57\":3857,\n\t\t\"f58\":3858,\n\t\t\"f59\":3859,\n\t\t\"f60\":3860,\n\t\t\"f61\":3861,\n\t\t\"f62\":3862,\n\t\t\"f63\":3863,\n\t\t\"f64\":3864,\n\t\t\"f65\":3865,\n\t\t\"f66\":3866,\n\t\t\"f67\":3867,\n\t\t\"f68\":3868,\n\t\t\"f69\":3869,\n\t\t\"f70\":3870,\n\t\t\"f71\":3871,\n\t\t\"f72\":3872,\n\t\t\"f73\":3873,\n\t\t\"f74\":3874,\n\t\t\"f75\":3875,\n\t\t\"f76\":3876,\n\t\t\"f77\":3877,\n\t\t\"f78\":3878,\n\t\t\"f79\":3879,\n\t\t\"f80\":3880,\n\t\t\"f81\":3881,\n\t\t\"f82\":3882,\n\t\t\"f83\":3883,\n\t\t\"f84\":3884,\n\t\t\"f85\":3885,\n\t\t\"f86\":3886,\n\t\t\"f87\":3887,\n\t\t\"f88\":3888,\n\t\t\"f89\":3889,\n\t\t\"f90\":3890,\n\t\t\"f91\":3891,\n\t\t\"f92\":3892,\n\t\t\"f93\":3893,\n\t\t\"f94\":3894,\n\t\t\"f95\":3895,\n\t\t\"f96\":3896,\n\t\t\"f97\":3897,\n\t\t\"f98\":3898,\n\t\t\"f99\":3899\n\t},\n\t{\n\t\t\"f0\":3900,\n\t\t\"f1\":3901,\n\t\t\"f2\":3902,\n\t\t\"f3\":3903,\n\t\t\"f4\":3904,\n\t\t\"f5\":3905,\n\t\t\"f6\":3906,\n\t\t\"f7\":3907,\n\t\t\"f8\":3908,\n\t\t\"f9\":3909,\n\t\t\"f10\":3910,\n\t\t\"f11\":3911,\n\t\t\"f12\":3912,\n\t\t\"f13\":3913,\n\t\t\"f14\":3914,\n\t\t\"f15\":3915,\n\t\t\"f16\":3916,\n\t\t\"f17\":3917,\n\t\t\"f18\":3918,\n\t\t\"f19\":3919,\n\t\t\"f20\":3920,\n\t\t\"f21\":3921,\n\t\t\"f22\":3922,\n\t\t\"f23\":3923,\n\t\t\"f24\":3924,\n\t\t\"f25\":3925,\n\t\t\"f26\":3926,\n\t\t\"f27\":3927,\n\t\t\"f28\":3928,\n\t\t\"f29\":3929,\n\t\t\"f30\":3930,\n\t\t\"f31\":3931,\n\t\t\"f32\":3932,\n\t\t\"f33\":3933,\n\t\t\"f34\":3934,\n\t\t\"f35\":3935,\n\t\t\"f36\":3936,\n\t\t\"f37\":3937,\n\t\t\"f38\":3938,\n\t\t\"f39\":3939,\n\t\t\"f40\":3940,\n\t\t\"f41\":3941,\n\t\t\"f42\":3942,\n\t\t\"f43\":3943,\n\t\t\"f44\":3944,\n\t\t\"f45\":3945,\n\t\t\"f46\":3946,\n\t\t\"f47\":3947,\n\t\t\"f48\":3948,\n\t\t\"f49\":3949,\n\t\t\"f50\":3950,\n\t\t\"f51\":3951,\n\t\t\"f52\":3952,\n\t\t\"f53\":3953,\n\t\t\"f54\":3954,\n\t\t\"f55\":3955,\n\t\t\"f56\":3956,\n\t\t\"f57\":3957,\n\t\t\"f58\":3958,\n\t\t\"f59\":3959,\n\t\t\"f60\":3960,\n\t\t\"f61\":3961,\n\t\t\"f62\":3962,\n\t\t\"f63\":3963,\n\t\t\"f64\":3964,\n\t\t\"f65\":3965,\n\t\t\"f66\":3966,\n\t\t\"f67\":3967,\n\t\t\"f68\":3968,\n\t\t\"f69\":3969,\n\t\t\"f70\":3970,\n\t\t\"f71\":3971,\n\t\t\"f72\":3972,\n\t\t\"f73\":3973,\n\t\t\"f74\":3974,\n\t\t\"f75\":3975,\n\t\t\"f76\":3976,\n\t\t\"f77\":3977,\n\t\t\"f78\":3978,\n\t\t\"f79\":3979,\n\t\t\"f80\":3980,\n\t\t\"f81\":3981,\n\t\t\"f82\":3982,\n\t\t\"f83\":3983,\n\t\t\"f84\":3984,\n\t\t\"f85\":3985,\n\t\t\"f86\":3986,\n\t\t\"f87\":3987,\n\t\t\"f88\":3988,\n\t\t\"f89\":3989,\n\t\t\"f90\":3990,\n\t\t\"f91\":3991,\n\t\t\"f92\":3992,\n\t\t\"f93\":3993,\n\t\t\"f94\":3994,\n\t\t\"f95\":3995,\n\t\t\"f96\":3996,\n\t\t\"f97\":3997,\n\t\t\"f98\":3998,\n\t\t\"f99\":3999\n\t},\n\t{\n\t\t\"f0\":4000,\n\t\t\"f1\":4001,\n\t\t\"f2\":4002,\n\t\t\"f3\":4003,\n\t\t\"f4\":4004,\n\t\t\"f5\":4005,\n\t\t\"f6\":4006,\n\t\t\"f7\":4007,\n\t\t\"f8\":4008,\n\t\t\"f9\":4009,\n\t\t\"f10\":4010,\n\t\t\"f11\":4011,\n\t\t\"f12\":4012,\n\t\t\"f13\":4013,\n\t\t\"f14\":4014,\n\t\t\"f15\":4015,\n\t\t\"f16\":4016,\n\t\t\"f17\":4017,\n\t\t\"f18\":4018,\n\t\t\"f19\":4019,\n\t\t\"f20\":4020,\n\t\t\"f21\":4021,\n\t\t\"f22\":4022,\n\t\t\"f23\":4023,\n\t\t\"f24\":4024,\n\t\t\"f25\":4025,\n\t\t\"f26\":4026,\n\t\t\"f27\":4027,\n\t\t\"f28\":4028,\n\t\t\"f29\":4029,\n\t\t\"f30\":4030,\n\t\t\"f31\":4031,\n\t\t\"f32\":4032,\n\t\t\"f33\":4033,\n\t\t\"f34\":4034,\n\t\t\"f35\":4035,\n\t\t\"f36\":4036,\n\t\t\"f37\":4037,\n\t\t\"f38\":4038,\n\t\t\"f39\":4039,\n\t\t\"f40\":4040,\n\t\t\"f41\":4041,\n\t\t\"f42\":4042,\n\t\t\"f43\":4043,\n\t\t\"f44\":4044,\n\t\t\"f45\":4045,\n\t\t\"f46\":4046,\n\t\t\"f47\":4047,\n\t\t\"f48\":4048,\n\t\t\"f49\":4049,\n\t\t\"f50\":4050,\n\t\t\"f51\":4051,\n\t\t\"f52\":4052,\n\t\t\"f53\":4053,\n\t\t\"f54\":4054,\n\t\t\"f55\":4055,\n\t\t\"f56\":4056,\n\t\t\"f57\":4057,\n\t\t\"f58\":4058,\n\t\t\"f59\":4059,\n\t\t\"f60\":4060,\n\t\t\"f61\":4061,\n\t\t\"f62\":4062,\n\t\t\"f63\":4063,\n\t\t\"f64\":4064,\n\t\t\"f65\":4065,\n\t\t\"f66\":4066,\n\t\t\"f67\":4067,\n\t\t\"f68\":4068,\n\t\t\"f69\":4069,\n\t\t\"f70\":4070,\n\t\t\"f71\":4071,\n\t\t\"f72\":4072,\n\t\t\"f73\":4073,\n\t\t\"f74\":4074,\n\t\t\"f75\":4075,\n\t\t\"f76\":4076,\n\t\t\"f77\":4077,\n\t\t\"f78\":4078,\n\t\t\"f79\":4079,\n\t\t\"f80\":4080,\n\t\t\"f81\":4081,\n\t\t\"f82\":4082,\n\t\t\"f83\":4083,\n\t\t\"f84\":4084,\n\t\t\"f85\":4085,\n\t\t\"f86\":4086,\n\t\t\"f87\":4087,\n\t\t\"f88\":4088,\n\t\t\"f89\":4089,\n\t\t\"f90\":4090,\n\t\t\"f91\":4091,\n\t\t\"f92\":4092,\n\t\t\"f93\":4093,\n\t\t\"f94\":4094,\n\t\t\"f95\":4095,\n\t\t\"f96\":4096,\n\t\t\"f97\":4097,\n\t\t\"f98\":4098,\n\t\t\"f99\":4099\n\t},\n\t{\n\t\t\"f0\":4100,\n\t\t\"f1\":4101,\n\t\t\"f2\":4102,\n\t\t\"f3\":4103,\n\t\t\"f4\":4104,\n\t\t\"f5\":4105,\n\t\t\"f6\":4106,\n\t\t\"f7\":4107,\n\t\t\"f8\":4108,\n\t\t\"f9\":4109,\n\t\t\"f10\":4110,\n\t\t\"f11\":4111,\n\t\t\"f12\":4112,\n\t\t\"f13\":4113,\n\t\t\"f14\":4114,\n\t\t\"f15\":4115,\n\t\t\"f16\":4116,\n\t\t\"f17\":4117,\n\t\t\"f18\":4118,\n\t\t\"f19\":4119,\n\t\t\"f20\":4120,\n\t\t\"f21\":4121,\n\t\t\"f22\":4122,\n\t\t\"f23\":4123,\n\t\t\"f24\":4124,\n\t\t\"f25\":4125,\n\t\t\"f26\":4126,\n\t\t\"f27\":4127,\n\t\t\"f28\":4128,\n\t\t\"f29\":4129,\n\t\t\"f30\":4130,\n\t\t\"f31\":4131,\n\t\t\"f32\":4132,\n\t\t\"f33\":4133,\n\t\t\"f34\":4134,\n\t\t\"f35\":4135,\n\t\t\"f36\":4136,\n\t\t\"f37\":4137,\n\t\t\"f38\":4138,\n\t\t\"f39\":4139,\n\t\t\"f40\":4140,\n\t\t\"f41\":4141,\n\t\t\"f42\":4142,\n\t\t\"f43\":4143,\n\t\t\"f44\":4144,\n\t\t\"f45\":4145,\n\t\t\"f46\":4146,\n\t\t\"f47\":4147,\n\t\t\"f48\":4148,\n\t\t\"f49\":4149,\n\t\t\"f50\":4150,\n\t\t\"f51\":4151,\n\t\t\"f52\":4152,\n\t\t\"f53\":4153,\n\t\t\"f54\":4154,\n\t\t\"f55\":4155,\n\t\t\"f56\":4156,\n\t\t\"f57\":4157,\n\t\t\"f58\":4158,\n\t\t\"f59\":4159,\n\t\t\"f60\":4160,\n\t\t\"f61\":4161,\n\t\t\"f62\":4162,\n\t\t\"f63\":4163,\n\t\t\"f64\":4164,\n\t\t\"f65\":4165,\n\t\t\"f66\":4166,\n\t\t\"f67\":4167,\n\t\t\"f68\":4168,\n\t\t\"f69\":4169,\n\t\t\"f70\":4170,\n\t\t\"f71\":4171,\n\t\t\"f72\":4172,\n\t\t\"f73\":4173,\n\t\t\"f74\":4174,\n\t\t\"f75\":4175,\n\t\t\"f76\":4176,\n\t\t\"f77\":4177,\n\t\t\"f78\":4178,\n\t\t\"f79\":4179,\n\t\t\"f80\":4180,\n\t\t\"f81\":4181,\n\t\t\"f82\":4182,\n\t\t\"f83\":4183,\n\t\t\"f84\":4184,\n\t\t\"f85\":4185,\n\t\t\"f86\":4186,\n\t\t\"f87\":4187,\n\t\t\"f88\":4188,\n\t\t\"f89\":4189,\n\t\t\"f90\":4190,\n\t\t\"f91\":4191,\n\t\t\"f92\":4192,\n\t\t\"f93\":4193,\n\t\t\"f94\":4194,\n\t\t\"f95\":4195,\n\t\t\"f96\":4196,\n\t\t\"f97\":4197,\n\t\t\"f98\":4198,\n\t\t\"f99\":4199\n\t},\n\t{\n\t\t\"f0\":4200,\n\t\t\"f1\":4201,\n\t\t\"f2\":4202,\n\t\t\"f3\":4203,\n\t\t\"f4\":4204,\n\t\t\"f5\":4205,\n\t\t\"f6\":4206,\n\t\t\"f7\":4207,\n\t\t\"f8\":4208,\n\t\t\"f9\":4209,\n\t\t\"f10\":4210,\n\t\t\"f11\":4211,\n\t\t\"f12\":4212,\n\t\t\"f13\":4213,\n\t\t\"f14\":4214,\n\t\t\"f15\":4215,\n\t\t\"f16\":4216,\n\t\t\"f17\":4217,\n\t\t\"f18\":4218,\n\t\t\"f19\":4219,\n\t\t\"f20\":4220,\n\t\t\"f21\":4221,\n\t\t\"f22\":4222,\n\t\t\"f23\":4223,\n\t\t\"f24\":4224,\n\t\t\"f25\":4225,\n\t\t\"f26\":4226,\n\t\t\"f27\":4227,\n\t\t\"f28\":4228,\n\t\t\"f29\":4229,\n\t\t\"f30\":4230,\n\t\t\"f31\":4231,\n\t\t\"f32\":4232,\n\t\t\"f33\":4233,\n\t\t\"f34\":4234,\n\t\t\"f35\":4235,\n\t\t\"f36\":4236,\n\t\t\"f37\":4237,\n\t\t\"f38\":4238,\n\t\t\"f39\":4239,\n\t\t\"f40\":4240,\n\t\t\"f41\":4241,\n\t\t\"f42\":4242,\n\t\t\"f43\":4243,\n\t\t\"f44\":4244,\n\t\t\"f45\":4245,\n\t\t\"f46\":4246,\n\t\t\"f47\":4247,\n\t\t\"f48\":4248,\n\t\t\"f49\":4249,\n\t\t\"f50\":4250,\n\t\t\"f51\":4251,\n\t\t\"f52\":4252,\n\t\t\"f53\":4253,\n\t\t\"f54\":4254,\n\t\t\"f55\":4255,\n\t\t\"f56\":4256,\n\t\t\"f57\":4257,\n\t\t\"f58\":4258,\n\t\t\"f59\":4259,\n\t\t\"f60\":4260,\n\t\t\"f61\":4261,\n\t\t\"f62\":4262,\n\t\t\"f63\":4263,\n\t\t\"f64\":4264,\n\t\t\"f65\":4265,\n\t\t\"f66\":4266,\n\t\t\"f67\":4267,\n\t\t\"f68\":4268,\n\t\t\"f69\":4269,\n\t\t\"f70\":4270,\n\t\t\"f71\":4271,\n\t\t\"f72\":4272,\n\t\t\"f73\":4273,\n\t\t\"f74\":4274,\n\t\t\"f75\":4275,\n\t\t\"f76\":4276,\n\t\t\"f77\":4277,\n\t\t\"f78\":4278,\n\t\t\"f79\":4279,\n\t\t\"f80\":4280,\n\t\t\"f81\":4281,\n\t\t\"f82\":4282,\n\t\t\"f83\":4283,\n\t\t\"f84\":4284,\n\t\t\"f85\":4285,\n\t\t\"f86\":4286,\n\t\t\"f87\":4287,\n\t\t\"f88\":4288,\n\t\t\"f89\":4289,\n\t\t\"f90\":4290,\n\t\t\"f91\":4291,\n\t\t\"f92\":4292,\n\t\t\"f93\":4293,\n\t\t\"f94\":4294,\n\t\t\"f95\":4295,\n\t\t\"f96\":4296,\n\t\t\"f97\":4297,\n\t\t\"f98\":4298,\n\t\t\"f99\":4299\n\t},\n\t{\n\t\t\"f0\":4300,\n\t\t\"f1\":4301,\n\t\t\"f2\":4302,\n\t\t\"f3\":4303,\n\t\t\"f4\":4304,\n\t\t\"f5\":4305,\n\t\t\"f6\":4306,\n\t\t\"f7\":4307,\n\t\t\"f8\":4308,\n\t\t\"f9\":4309,\n\t\t\"f10\":4310,\n\t\t\"f11\":4311,\n\t\t\"f12\":4312,\n\t\t\"f13\":4313,\n\t\t\"f14\":4314,\n\t\t\"f15\":4315,\n\t\t\"f16\":4316,\n\t\t\"f17\":4317,\n\t\t\"f18\":4318,\n\t\t\"f19\":4319,\n\t\t\"f20\":4320,\n\t\t\"f21\":4321,\n\t\t\"f22\":4322,\n\t\t\"f23\":4323,\n\t\t\"f24\":4324,\n\t\t\"f25\":4325,\n\t\t\"f26\":4326,\n\t\t\"f27\":4327,\n\t\t\"f28\":4328,\n\t\t\"f29\":4329,\n\t\t\"f30\":4330,\n\t\t\"f31\":4331,\n\t\t\"f32\":4332,\n\t\t\"f33\":4333,\n\t\t\"f34\":4334,\n\t\t\"f35\":4335,\n\t\t\"f36\":4336,\n\t\t\"f37\":4337,\n\t\t\"f38\":4338,\n\t\t\"f39\":4339,\n\t\t\"f40\":4340,\n\t\t\"f41\":4341,\n\t\t\"f42\":4342,\n\t\t\"f43\":4343,\n\t\t\"f44\":4344,\n\t\t\"f45\":4345,\n\t\t\"f46\":4346,\n\t\t\"f47\":4347,\n\t\t\"f48\":4348,\n\t\t\"f49\":4349,\n\t\t\"f50\":4350,\n\t\t\"f51\":4351,\n\t\t\"f52\":4352,\n\t\t\"f53\":4353,\n\t\t\"f54\":4354,\n\t\t\"f55\":4355,\n\t\t\"f56\":4356,\n\t\t\"f57\":4357,\n\t\t\"f58\":4358,\n\t\t\"f59\":4359,\n\t\t\"f60\":4360,\n\t\t\"f61\":4361,\n\t\t\"f62\":4362,\n\t\t\"f63\":4363,\n\t\t\"f64\":4364,\n\t\t\"f65\":4365,\n\t\t\"f66\":4366,\n\t\t\"f67\":4367,\n\t\t\"f68\":4368,\n\t\t\"f69\":4369,\n\t\t\"f70\":4370,\n\t\t\"f71\":4371,\n\t\t\"f72\":4372,\n\t\t\"f73\":4373,\n\t\t\"f74\":4374,\n\t\t\"f75\":4375,\n\t\t\"f76\":4376,\n\t\t\"f77\":4377,\n\t\t\"f78\":4378,\n\t\t\"f79\":4379,\n\t\t\"f80\":4380,\n\t\t\"f81\":4381,\n\t\t\"f82\":4382,\n\t\t\"f83\":4383,\n\t\t\"f84\":4384,\n\t\t\"f85\":4385,\n\t\t\"f86\":4386,\n\t\t\"f87\":4387,\n\t\t\"f88\":4388,\n\t\t\"f89\":4389,\n\t\t\"f90\":4390,\n\t\t\"f91\":4391,\n\t\t\"f92\":4392,\n\t\t\"f93\":4393,\n\t\t\"f94\":4394,\n\t\t\"f95\":4395,\n\t\t\"f96\":4396,\n\t\t\"f97\":4397,\n\t\t\"f98\":4398,\n\t\t\"f99\":4399\n\t},\n\t{\n\t\t\"f0\":4400,\n\t\t\"f1\":4401,\n\t\t\"f2\":4402,\n\t\t\"f3\":4403,\n\t\t\"f4\":4404,\n\t\t\"f5\":4405,\n\t\t\"f6\":4406,\n\t\t\"f7\":4407,\n\t\t\"f8\":4408,\n\t\t\"f9\":4409,\n\t\t\"f10\":4410,\n\t\t\"f11\":4411,\n\t\t\"f12\":4412,\n\t\t\"f13\":4413,\n\t\t\"f14\":4414,\n\t\t\"f15\":4415,\n\t\t\"f16\":4416,\n\t\t\"f17\":4417,\n\t\t\"f18\":4418,\n\t\t\"f19\":4419,\n\t\t\"f20\":4420,\n\t\t\"f21\":4421,\n\t\t\"f22\":4422,\n\t\t\"f23\":4423,\n\t\t\"f24\":4424,\n\t\t\"f25\":4425,\n\t\t\"f26\":4426,\n\t\t\"f27\":4427,\n\t\t\"f28\":4428,\n\t\t\"f29\":4429,\n\t\t\"f30\":4430,\n\t\t\"f31\":4431,\n\t\t\"f32\":4432,\n\t\t\"f33\":4433,\n\t\t\"f34\":4434,\n\t\t\"f35\":4435,\n\t\t\"f36\":4436,\n\t\t\"f37\":4437,\n\t\t\"f38\":4438,\n\t\t\"f39\":4439,\n\t\t\"f40\":4440,\n\t\t\"f41\":4441,\n\t\t\"f42\":4442,\n\t\t\"f43\":4443,\n\t\t\"f44\":4444,\n\t\t\"f45\":4445,\n\t\t\"f46\":4446,\n\t\t\"f47\":4447,\n\t\t\"f48\":4448,\n\t\t\"f49\":4449,\n\t\t\"f50\":4450,\n\t\t\"f51\":4451,\n\t\t\"f52\":4452,\n\t\t\"f53\":4453,\n\t\t\"f54\":4454,\n\t\t\"f55\":4455,\n\t\t\"f56\":4456,\n\t\t\"f57\":4457,\n\t\t\"f58\":4458,\n\t\t\"f59\":4459,\n\t\t\"f60\":4460,\n\t\t\"f61\":4461,\n\t\t\"f62\":4462,\n\t\t\"f63\":4463,\n\t\t\"f64\":4464,\n\t\t\"f65\":4465,\n\t\t\"f66\":4466,\n\t\t\"f67\":4467,\n\t\t\"f68\":4468,\n\t\t\"f69\":4469,\n\t\t\"f70\":4470,\n\t\t\"f71\":4471,\n\t\t\"f72\":4472,\n\t\t\"f73\":4473,\n\t\t\"f74\":4474,\n\t\t\"f75\":4475,\n\t\t\"f76\":4476,\n\t\t\"f77\":4477,\n\t\t\"f78\":4478,\n\t\t\"f79\":4479,\n\t\t\"f80\":4480,\n\t\t\"f81\":4481,\n\t\t\"f82\":4482,\n\t\t\"f83\":4483,\n\t\t\"f84\":4484,\n\t\t\"f85\":4485,\n\t\t\"f86\":4486,\n\t\t\"f87\":4487,\n\t\t\"f88\":4488,\n\t\t\"f89\":4489,\n\t\t\"f90\":4490,\n\t\t\"f91\":4491,\n\t\t\"f92\":4492,\n\t\t\"f93\":4493,\n\t\t\"f94\":4494,\n\t\t\"f95\":4495,\n\t\t\"f96\":4496,\n\t\t\"f97\":4497,\n\t\t\"f98\":4498,\n\t\t\"f99\":4499\n\t},\n\t{\n\t\t\"f0\":4500,\n\t\t\"f1\":4501,\n\t\t\"f2\":4502,\n\t\t\"f3\":4503,\n\t\t\"f4\":4504,\n\t\t\"f5\":4505,\n\t\t\"f6\":4506,\n\t\t\"f7\":4507,\n\t\t\"f8\":4508,\n\t\t\"f9\":4509,\n\t\t\"f10\":4510,\n\t\t\"f11\":4511,\n\t\t\"f12\":4512,\n\t\t\"f13\":4513,\n\t\t\"f14\":4514,\n\t\t\"f15\":4515,\n\t\t\"f16\":4516,\n\t\t\"f17\":4517,\n\t\t\"f18\":4518,\n\t\t\"f19\":4519,\n\t\t\"f20\":4520,\n\t\t\"f21\":4521,\n\t\t\"f22\":4522,\n\t\t\"f23\":4523,\n\t\t\"f24\":4524,\n\t\t\"f25\":4525,\n\t\t\"f26\":4526,\n\t\t\"f27\":4527,\n\t\t\"f28\":4528,\n\t\t\"f29\":4529,\n\t\t\"f30\":4530,\n\t\t\"f31\":4531,\n\t\t\"f32\":4532,\n\t\t\"f33\":4533,\n\t\t\"f34\":4534,\n\t\t\"f35\":4535,\n\t\t\"f36\":4536,\n\t\t\"f37\":4537,\n\t\t\"f38\":4538,\n\t\t\"f39\":4539,\n\t\t\"f40\":4540,\n\t\t\"f41\":4541,\n\t\t\"f42\":4542,\n\t\t\"f43\":4543,\n\t\t\"f44\":4544,\n\t\t\"f45\":4545,\n\t\t\"f46\":4546,\n\t\t\"f47\":4547,\n\t\t\"f48\":4548,\n\t\t\"f49\":4549,\n\t\t\"f50\":4550,\n\t\t\"f51\":4551,\n\t\t\"f52\":4552,\n\t\t\"f53\":4553,\n\t\t\"f54\":4554,\n\t\t\"f55\":4555,\n\t\t\"f56\":4556,\n\t\t\"f57\":4557,\n\t\t\"f58\":4558,\n\t\t\"f59\":4559,\n\t\t\"f60\":4560,\n\t\t\"f61\":4561,\n\t\t\"f62\":4562,\n\t\t\"f63\":4563,\n\t\t\"f64\":4564,\n\t\t\"f65\":4565,\n\t\t\"f66\":4566,\n\t\t\"f67\":4567,\n\t\t\"f68\":4568,\n\t\t\"f69\":4569,\n\t\t\"f70\":4570,\n\t\t\"f71\":4571,\n\t\t\"f72\":4572,\n\t\t\"f73\":4573,\n\t\t\"f74\":4574,\n\t\t\"f75\":4575,\n\t\t\"f76\":4576,\n\t\t\"f77\":4577,\n\t\t\"f78\":4578,\n\t\t\"f79\":4579,\n\t\t\"f80\":4580,\n\t\t\"f81\":4581,\n\t\t\"f82\":4582,\n\t\t\"f83\":4583,\n\t\t\"f84\":4584,\n\t\t\"f85\":4585,\n\t\t\"f86\":4586,\n\t\t\"f87\":4587,\n\t\t\"f88\":4588,\n\t\t\"f89\":4589,\n\t\t\"f90\":4590,\n\t\t\"f91\":4591,\n\t\t\"f92\":4592,\n\t\t\"f93\":4593,\n\t\t\"f94\":4594,\n\t\t\"f95\":4595,\n\t\t\"f96\":4596,\n\t\t\"f97\":4597,\n\t\t\"f98\":4598,\n\t\t\"f99\":4599\n\t},\n\t{\n\t\t\"f0\":4600,\n\t\t\"f1\":4601,\n\t\t\"f2\":4602,\n\t\t\"f3\":4603,\n\t\t\"f4\":4604,\n\t\t\"f5\":4605,\n\t\t\"f6\":4606,\n\t\t\"f7\":4607,\n\t\t\"f8\":4608,\n\t\t\"f9\":4609,\n\t\t\"f10\":4610,\n\t\t\"f11\":4611,\n\t\t\"f12\":4612,\n\t\t\"f13\":4613,\n\t\t\"f14\":4614,\n\t\t\"f15\":4615,\n\t\t\"f16\":4616,\n\t\t\"f17\":4617,\n\t\t\"f18\":4618,\n\t\t\"f19\":4619,\n\t\t\"f20\":4620,\n\t\t\"f21\":4621,\n\t\t\"f22\":4622,\n\t\t\"f23\":4623,\n\t\t\"f24\":4624,\n\t\t\"f25\":4625,\n\t\t\"f26\":4626,\n\t\t\"f27\":4627,\n\t\t\"f28\":4628,\n\t\t\"f29\":4629,\n\t\t\"f30\":4630,\n\t\t\"f31\":4631,\n\t\t\"f32\":4632,\n\t\t\"f33\":4633,\n\t\t\"f34\":4634,\n\t\t\"f35\":4635,\n\t\t\"f36\":4636,\n\t\t\"f37\":4637,\n\t\t\"f38\":4638,\n\t\t\"f39\":4639,\n\t\t\"f40\":4640,\n\t\t\"f41\":4641,\n\t\t\"f42\":4642,\n\t\t\"f43\":4643,\n\t\t\"f44\":4644,\n\t\t\"f45\":4645,\n\t\t\"f46\":4646,\n\t\t\"f47\":4647,\n\t\t\"f48\":4648,\n\t\t\"f49\":4649,\n\t\t\"f50\":4650,\n\t\t\"f51\":4651,\n\t\t\"f52\":4652,\n\t\t\"f53\":4653,\n\t\t\"f54\":4654,\n\t\t\"f55\":4655,\n\t\t\"f56\":4656,\n\t\t\"f57\":4657,\n\t\t\"f58\":4658,\n\t\t\"f59\":4659,\n\t\t\"f60\":4660,\n\t\t\"f61\":4661,\n\t\t\"f62\":4662,\n\t\t\"f63\":4663,\n\t\t\"f64\":4664,\n\t\t\"f65\":4665,\n\t\t\"f66\":4666,\n\t\t\"f67\":4667,\n\t\t\"f68\":4668,\n\t\t\"f69\":4669,\n\t\t\"f70\":4670,\n\t\t\"f71\":4671,\n\t\t\"f72\":4672,\n\t\t\"f73\":4673,\n\t\t\"f74\":4674,\n\t\t\"f75\":4675,\n\t\t\"f76\":4676,\n\t\t\"f77\":4677,\n\t\t\"f78\":4678,\n\t\t\"f79\":4679,\n\t\t\"f80\":4680,\n\t\t\"f81\":4681,\n\t\t\"f82\":4682,\n\t\t\"f83\":4683,\n\t\t\"f84\":4684,\n\t\t\"f85\":4685,\n\t\t\"f86\":4686,\n\t\t\"f87\":4687,\n\t\t\"f88\":4688,\n\t\t\"f89\":4689,\n\t\t\"f90\":4690,\n\t\t\"f91\":4691,\n\t\t\"f92\":4692,\n\t\t\"f93\":4693,\n\t\t\"f94\":4694,\n\t\t\"f95\":4695,\n\t\t\"f96\":4696,\n\t\t\"f97\":4697,\n\t\t\"f98\":4698,\n\t\t\"f99\":4699\n\t},\n\t{\n\t\t\"f0\":4700,\n\t\t\"f1\":4701,\n\t\t\"f2\":4702,\n\t\t\"f3\":4703,\n\t\t\"f4\":4704,\n\t\t\"f5\":4705,\n\t\t\"f6\":4706,\n\t\t\"f7\":4707,\n\t\t\"f8\":4708,\n\t\t\"f9\":4709,\n\t\t\"f10\":4710,\n\t\t\"f11\":4711,\n\t\t\"f12\":4712,\n\t\t\"f13\":4713,\n\t\t\"f14\":4714,\n\t\t\"f15\":4715,\n\t\t\"f16\":4716,\n\t\t\"f17\":4717,\n\t\t\"f18\":4718,\n\t\t\"f19\":4719,\n\t\t\"f20\":4720,\n\t\t\"f21\":4721,\n\t\t\"f22\":4722,\n\t\t\"f23\":4723,\n\t\t\"f24\":4724,\n\t\t\"f25\":4725,\n\t\t\"f26\":4726,\n\t\t\"f27\":4727,\n\t\t\"f28\":4728,\n\t\t\"f29\":4729,\n\t\t\"f30\":4730,\n\t\t\"f31\":4731,\n\t\t\"f32\":4732,\n\t\t\"f33\":4733,\n\t\t\"f34\":4734,\n\t\t\"f35\":4735,\n\t\t\"f36\":4736,\n\t\t\"f37\":4737,\n\t\t\"f38\":4738,\n\t\t\"f39\":4739,\n\t\t\"f40\":4740,\n\t\t\"f41\":4741,\n\t\t\"f42\":4742,\n\t\t\"f43\":4743,\n\t\t\"f44\":4744,\n\t\t\"f45\":4745,\n\t\t\"f46\":4746,\n\t\t\"f47\":4747,\n\t\t\"f48\":4748,\n\t\t\"f49\":4749,\n\t\t\"f50\":4750,\n\t\t\"f51\":4751,\n\t\t\"f52\":4752,\n\t\t\"f53\":4753,\n\t\t\"f54\":4754,\n\t\t\"f55\":4755,\n\t\t\"f56\":4756,\n\t\t\"f57\":4757,\n\t\t\"f58\":4758,\n\t\t\"f59\":4759,\n\t\t\"f60\":4760,\n\t\t\"f61\":4761,\n\t\t\"f62\":4762,\n\t\t\"f63\":4763,\n\t\t\"f64\":4764,\n\t\t\"f65\":4765,\n\t\t\"f66\":4766,\n\t\t\"f67\":4767,\n\t\t\"f68\":4768,\n\t\t\"f69\":4769,\n\t\t\"f70\":4770,\n\t\t\"f71\":4771,\n\t\t\"f72\":4772,\n\t\t\"f73\":4773,\n\t\t\"f74\":4774,\n\t\t\"f75\":4775,\n\t\t\"f76\":4776,\n\t\t\"f77\":4777,\n\t\t\"f78\":4778,\n\t\t\"f79\":4779,\n\t\t\"f80\":4780,\n\t\t\"f81\":4781,\n\t\t\"f82\":4782,\n\t\t\"f83\":4783,\n\t\t\"f84\":4784,\n\t\t\"f85\":4785,\n\t\t\"f86\":4786,\n\t\t\"f87\":4787,\n\t\t\"f88\":4788,\n\t\t\"f89\":4789,\n\t\t\"f90\":4790,\n\t\t\"f91\":4791,\n\t\t\"f92\":4792,\n\t\t\"f93\":4793,\n\t\t\"f94\":4794,\n\t\t\"f95\":4795,\n\t\t\"f96\":4796,\n\t\t\"f97\":4797,\n\t\t\"f98\":4798,\n\t\t\"f99\":4799\n\t},\n\t{\n\t\t\"f0\":4800,\n\t\t\"f1\":4801,\n\t\t\"f2\":4802,\n\t\t\"f3\":4803,\n\t\t\"f4\":4804,\n\t\t\"f5\":4805,\n\t\t\"f6\":4806,\n\t\t\"f7\":4807,\n\t\t\"f8\":4808,\n\t\t\"f9\":4809,\n\t\t\"f10\":4810,\n\t\t\"f11\":4811,\n\t\t\"f12\":4812,\n\t\t\"f13\":4813,\n\t\t\"f14\":4814,\n\t\t\"f15\":4815,\n\t\t\"f16\":4816,\n\t\t\"f17\":4817,\n\t\t\"f18\":4818,\n\t\t\"f19\":4819,\n\t\t\"f20\":4820,\n\t\t\"f21\":4821,\n\t\t\"f22\":4822,\n\t\t\"f23\":4823,\n\t\t\"f24\":4824,\n\t\t\"f25\":4825,\n\t\t\"f26\":4826,\n\t\t\"f27\":4827,\n\t\t\"f28\":4828,\n\t\t\"f29\":4829,\n\t\t\"f30\":4830,\n\t\t\"f31\":4831,\n\t\t\"f32\":4832,\n\t\t\"f33\":4833,\n\t\t\"f34\":4834,\n\t\t\"f35\":4835,\n\t\t\"f36\":4836,\n\t\t\"f37\":4837,\n\t\t\"f38\":4838,\n\t\t\"f39\":4839,\n\t\t\"f40\":4840,\n\t\t\"f41\":4841,\n\t\t\"f42\":4842,\n\t\t\"f43\":4843,\n\t\t\"f44\":4844,\n\t\t\"f45\":4845,\n\t\t\"f46\":4846,\n\t\t\"f47\":4847,\n\t\t\"f48\":4848,\n\t\t\"f49\":4849,\n\t\t\"f50\":4850,\n\t\t\"f51\":4851,\n\t\t\"f52\":4852,\n\t\t\"f53\":4853,\n\t\t\"f54\":4854,\n\t\t\"f55\":4855,\n\t\t\"f56\":4856,\n\t\t\"f57\":4857,\n\t\t\"f58\":4858,\n\t\t\"f59\":4859,\n\t\t\"f60\":4860,\n\t\t\"f61\":4861,\n\t\t\"f62\":4862,\n\t\t\"f63\":4863,\n\t\t\"f64\":4864,\n\t\t\"f65\":4865,\n\t\t\"f66\":4866,\n\t\t\"f67\":4867,\n\t\t\"f68\":4868,\n\t\t\"f69\":4869,\n\t\t\"f70\":4870,\n\t\t\"f71\":4871,\n\t\t\"f72\":4872,\n\t\t\"f73\":4873,\n\t\t\"f74\":4874,\n\t\t\"f75\":4875,\n\t\t\"f76\":4876,\n\t\t\"f77\":4877,\n\t\t\"f78\":4878,\n\t\t\"f79\":4879,\n\t\t\"f80\":4880,\n\t\t\"f81\":4881,\n\t\t\"f82\":4882,\n\t\t\"f83\":4883,\n\t\t\"f84\":4884,\n\t\t\"f85\":4885,\n\t\t\"f86\":4886,\n\t\t\"f87\":4887,\n\t\t\"f88\":4888,\n\t\t\"f89\":4889,\n\t\t\"f90\":4890,\n\t\t\"f91\":4891,\n\t\t\"f92\":4892,\n\t\t\"f93\":4893,\n\t\t\"f94\":4894,\n\t\t\"f95\":4895,\n\t\t\"f96\":4896,\n\t\t\"f97\":4897,\n\t\t\"f98\":4898,\n\t\t\"f99\":4899\n\t},\n\t{\n\t\t\"f0\":4900,\n\t\t\"f1\":4901,\n\t\t\"f2\":4902,\n\t\t\"f3\":4903,\n\t\t\"f4\":4904,\n\t\t\"f5\":4905,\n\t\t\"f6\":4906,\n\t\t\"f7\":4907,\n\t\t\"f8\":4908,\n\t\t\"f9\":4909,\n\t\t\"f10\":4910,\n\t\t\"f11\":4911,\n\t\t\"f12\":4912,\n\t\t\"f13\":4913,\n\t\t\"f14\":4914,\n\t\t\"f15\":4915,\n\t\t\"f16\":4916,\n\t\t\"f17\":4917,\n\t\t\"f18\":4918,\n\t\t\"f19\":4919,\n\t\t\"f20\":4920,\n\t\t\"f21\":4921,\n\t\t\"f22\":4922,\n\t\t\"f23\":4923,\n\t\t\"f24\":4924,\n\t\t\"f25\":4925,\n\t\t\"f26\":4926,\n\t\t\"f27\":4927,\n\t\t\"f28\":4928,\n\t\t\"f29\":4929,\n\t\t\"f30\":4930,\n\t\t\"f31\":4931,\n\t\t\"f32\":4932,\n\t\t\"f33\":4933,\n\t\t\"f34\":4934,\n\t\t\"f35\":4935,\n\t\t\"f36\":4936,\n\t\t\"f37\":4937,\n\t\t\"f38\":4938,\n\t\t\"f39\":4939,\n\t\t\"f40\":4940,\n\t\t\"f41\":4941,\n\t\t\"f42\":4942,\n\t\t\"f43\":4943,\n\t\t\"f44\":4944,\n\t\t\"f45\":4945,\n\t\t\"f46\":4946,\n\t\t\"f47\":4947,\n\t\t\"f48\":4948,\n\t\t\"f49\":4949,\n\t\t\"f50\":4950,\n\t\t\"f51\":4951,\n\t\t\"f52\":4952,\n\t\t\"f53\":4953,\n\t\t\"f54\":4954,\n\t\t\"f55\":4955,\n\t\t\"f56\":4956,\n\t\t\"f57\":4957,\n\t\t\"f58\":4958,\n\t\t\"f59\":4959,\n\t\t\"f60\":4960,\n\t\t\"f61\":4961,\n\t\t\"f62\":4962,\n\t\t\"f63\":4963,\n\t\t\"f64\":4964,\n\t\t\"f65\":4965,\n\t\t\"f66\":4966,\n\t\t\"f67\":4967,\n\t\t\"f68\":4968,\n\t\t\"f69\":4969,\n\t\t\"f70\":4970,\n\t\t\"f71\":4971,\n\t\t\"f72\":4972,\n\t\t\"f73\":4973,\n\t\t\"f74\":4974,\n\t\t\"f75\":4975,\n\t\t\"f76\":4976,\n\t\t\"f77\":4977,\n\t\t\"f78\":4978,\n\t\t\"f79\":4979,\n\t\t\"f80\":4980,\n\t\t\"f81\":4981,\n\t\t\"f82\":4982,\n\t\t\"f83\":4983,\n\t\t\"f84\":4984,\n\t\t\"f85\":4985,\n\t\t\"f86\":4986,\n\t\t\"f87\":4987,\n\t\t\"f88\":4988,\n\t\t\"f89\":4989,\n\t\t\"f90\":4990,\n\t\t\"f91\":4991,\n\t\t\"f92\":4992,\n\t\t\"f93\":4993,\n\t\t\"f94\":4994,\n\t\t\"f95\":4995,\n\t\t\"f96\":4996,\n\t\t\"f97\":4997,\n\t\t\"f98\":4998,\n\t\t\"f99\":4999\n\t},\n\t{\n\t\t\"f0\":5000,\n\t\t\"f1\":5001,\n\t\t\"f2\":5002,\n\t\t\"f3\":5003,\n\t\t\"f4\":5004,\n\t\t\"f5\":5005,\n\t\t\"f6\":5006,\n\t\t\"f7\":5007,\n\t\t\"f8\":5008,\n\t\t\"f9\":5009,\n\t\t\"f10\":5010,\n\t\t\"f11\":5011,\n\t\t\"f12\":5012,\n\t\t\"f13\":5013,\n\t\t\"f14\":5014,\n\t\t\"f15\":5015,\n\t\t\"f16\":5016,\n\t\t\"f17\":5017,\n\t\t\"f18\":5018,\n\t\t\"f19\":5019,\n\t\t\"f20\":5020,\n\t\t\"f21\":5021,\n\t\t\"f22\":5022,\n\t\t\"f23\":5023,\n\t\t\"f24\":5024,\n\t\t\"f25\":5025,\n\t\t\"f26\":5026,\n\t\t\"f27\":5027,\n\t\t\"f28\":5028,\n\t\t\"f29\":5029,\n\t\t\"f30\":5030,\n\t\t\"f31\":5031,\n\t\t\"f32\":5032,\n\t\t\"f33\":5033,\n\t\t\"f34\":5034,\n\t\t\"f35\":5035,\n\t\t\"f36\":5036,\n\t\t\"f37\":5037,\n\t\t\"f38\":5038,\n\t\t\"f39\":5039,\n\t\t\"f40\":5040,\n\t\t\"f41\":5041,\n\t\t\"f42\":5042,\n\t\t\"f43\":5043,\n\t\t\"f44\":5044,\n\t\t\"f45\":5045,\n\t\t\"f46\":5046,\n\t\t\"f47\":5047,\n\t\t\"f48\":5048,\n\t\t\"f49\":5049,\n\t\t\"f50\":5050,\n\t\t\"f51\":5051,\n\t\t\"f52\":5052,\n\t\t\"f53\":5053,\n\t\t\"f54\":5054,\n\t\t\"f55\":5055,\n\t\t\"f56\":5056,\n\t\t\"f57\":5057,\n\t\t\"f58\":5058,\n\t\t\"f59\":5059,\n\t\t\"f60\":5060,\n\t\t\"f61\":5061,\n\t\t\"f62\":5062,\n\t\t\"f63\":5063,\n\t\t\"f64\":5064,\n\t\t\"f65\":5065,\n\t\t\"f66\":5066,\n\t\t\"f67\":5067,\n\t\t\"f68\":5068,\n\t\t\"f69\":5069,\n\t\t\"f70\":5070,\n\t\t\"f71\":5071,\n\t\t\"f72\":5072,\n\t\t\"f73\":5073,\n\t\t\"f74\":5074,\n\t\t\"f75\":5075,\n\t\t\"f76\":5076,\n\t\t\"f77\":5077,\n\t\t\"f78\":5078,\n\t\t\"f79\":5079,\n\t\t\"f80\":5080,\n\t\t\"f81\":5081,\n\t\t\"f82\":5082,\n\t\t\"f83\":5083,\n\t\t\"f84\":5084,\n\t\t\"f85\":5085,\n\t\t\"f86\":5086,\n\t\t\"f87\":5087,\n\t\t\"f88\":5088,\n\t\t\"f89\":5089,\n\t\t\"f90\":5090,\n\t\t\"f91\":5091,\n\t\t\"f92\":5092,\n\t\t\"f93\":5093,\n\t\t\"f94\":5094,\n\t\t\"f95\":5095,\n\t\t\"f96\":5096,\n\t\t\"f97\":5097,\n\t\t\"f98\":5098,\n\t\t\"f99\":5099\n\t},\n\t{\n\t\t\"f0\":5100,\n\t\t\"f1\":5101,\n\t\t\"f2\":5102,\n\t\t\"f3\":5103,\n\t\t\"f4\":5104,\n\t\t\"f5\":5105,\n\t\t\"f6\":5106,\n\t\t\"f7\":5107,\n\t\t\"f8\":5108,\n\t\t\"f9\":5109,\n\t\t\"f10\":5110,\n\t\t\"f11\":5111,\n\t\t\"f12\":5112,\n\t\t\"f13\":5113,\n\t\t\"f14\":5114,\n\t\t\"f15\":5115,\n\t\t\"f16\":5116,\n\t\t\"f17\":5117,\n\t\t\"f18\":5118,\n\t\t\"f19\":5119,\n\t\t\"f20\":5120,\n\t\t\"f21\":5121,\n\t\t\"f22\":5122,\n\t\t\"f23\":5123,\n\t\t\"f24\":5124,\n\t\t\"f25\":5125,\n\t\t\"f26\":5126,\n\t\t\"f27\":5127,\n\t\t\"f28\":5128,\n\t\t\"f29\":5129,\n\t\t\"f30\":5130,\n\t\t\"f31\":5131,\n\t\t\"f32\":5132,\n\t\t\"f33\":5133,\n\t\t\"f34\":5134,\n\t\t\"f35\":5135,\n\t\t\"f36\":5136,\n\t\t\"f37\":5137,\n\t\t\"f38\":5138,\n\t\t\"f39\":5139,\n\t\t\"f40\":5140,\n\t\t\"f41\":5141,\n\t\t\"f42\":5142,\n\t\t\"f43\":5143,\n\t\t\"f44\":5144,\n\t\t\"f45\":5145,\n\t\t\"f46\":5146,\n\t\t\"f47\":5147,\n\t\t\"f48\":5148,\n\t\t\"f49\":5149,\n\t\t\"f50\":5150,\n\t\t\"f51\":5151,\n\t\t\"f52\":5152,\n\t\t\"f53\":5153,\n\t\t\"f54\":5154,\n\t\t\"f55\":5155,\n\t\t\"f56\":5156,\n\t\t\"f57\":5157,\n\t\t\"f58\":5158,\n\t\t\"f59\":5159,\n\t\t\"f60\":5160,\n\t\t\"f61\":5161,\n\t\t\"f62\":5162,\n\t\t\"f63\":5163,\n\t\t\"f64\":5164,\n\t\t\"f65\":5165,\n\t\t\"f66\":5166,\n\t\t\"f67\":5167,\n\t\t\"f68\":5168,\n\t\t\"f69\":5169,\n\t\t\"f70\":5170,\n\t\t\"f71\":5171,\n\t\t\"f72\":5172,\n\t\t\"f73\":5173,\n\t\t\"f74\":5174,\n\t\t\"f75\":5175,\n\t\t\"f76\":5176,\n\t\t\"f77\":5177,\n\t\t\"f78\":5178,\n\t\t\"f79\":5179,\n\t\t\"f80\":5180,\n\t\t\"f81\":5181,\n\t\t\"f82\":5182,\n\t\t\"f83\":5183,\n\t\t\"f84\":5184,\n\t\t\"f85\":5185,\n\t\t\"f86\":5186,\n\t\t\"f87\":5187,\n\t\t\"f88\":5188,\n\t\t\"f89\":5189,\n\t\t\"f90\":5190,\n\t\t\"f91\":5191,\n\t\t\"f92\":5192,\n\t\t\"f93\":5193,\n\t\t\"f94\":5194,\n\t\t\"f95\":5195,\n\t\t\"f96\":5196,\n\t\t\"f97\":5197,\n\t\t\"f98\":5198,\n\t\t\"f99\":5199\n\t},\n\t{\n\t\t\"f0\":5200,\n\t\t\"f1\":5201,\n\t\t\"f2\":5202,\n\t\t\"f3\":5203,\n\t\t\"f4\":5204,\n\t\t\"f5\":5205,\n\t\t\"f6\":5206,\n\t\t\"f7\":5207,\n\t\t\"f8\":5208,\n\t\t\"f9\":5209,\n\t\t\"f10\":5210,\n\t\t\"f11\":5211,\n\t\t\"f12\":5212,\n\t\t\"f13\":5213,\n\t\t\"f14\":5214,\n\t\t\"f15\":5215,\n\t\t\"f16\":5216,\n\t\t\"f17\":5217,\n\t\t\"f18\":5218,\n\t\t\"f19\":5219,\n\t\t\"f20\":5220,\n\t\t\"f21\":5221,\n\t\t\"f22\":5222,\n\t\t\"f23\":5223,\n\t\t\"f24\":5224,\n\t\t\"f25\":5225,\n\t\t\"f26\":5226,\n\t\t\"f27\":5227,\n\t\t\"f28\":5228,\n\t\t\"f29\":5229,\n\t\t\"f30\":5230,\n\t\t\"f31\":5231,\n\t\t\"f32\":5232,\n\t\t\"f33\":5233,\n\t\t\"f34\":5234,\n\t\t\"f35\":5235,\n\t\t\"f36\":5236,\n\t\t\"f37\":5237,\n\t\t\"f38\":5238,\n\t\t\"f39\":5239,\n\t\t\"f40\":5240,\n\t\t\"f41\":5241,\n\t\t\"f42\":5242,\n\t\t\"f43\":5243,\n\t\t\"f44\":5244,\n\t\t\"f45\":5245,\n\t\t\"f46\":5246,\n\t\t\"f47\":5247,\n\t\t\"f48\":5248,\n\t\t\"f49\":5249,\n\t\t\"f50\":5250,\n\t\t\"f51\":5251,\n\t\t\"f52\":5252,\n\t\t\"f53\":5253,\n\t\t\"f54\":5254,\n\t\t\"f55\":5255,\n\t\t\"f56\":5256,\n\t\t\"f57\":5257,\n\t\t\"f58\":5258,\n\t\t\"f59\":5259,\n\t\t\"f60\":5260,\n\t\t\"f61\":5261,\n\t\t\"f62\":5262,\n\t\t\"f63\":5263,\n\t\t\"f64\":5264,\n\t\t\"f65\":5265,\n\t\t\"f66\":5266,\n\t\t\"f67\":5267,\n\t\t\"f68\":5268,\n\t\t\"f69\":5269,\n\t\t\"f70\":5270,\n\t\t\"f71\":5271,\n\t\t\"f72\":5272,\n\t\t\"f73\":5273,\n\t\t\"f74\":5274,\n\t\t\"f75\":5275,\n\t\t\"f76\":5276,\n\t\t\"f77\":5277,\n\t\t\"f78\":5278,\n\t\t\"f79\":5279,\n\t\t\"f80\":5280,\n\t\t\"f81\":5281,\n\t\t\"f82\":5282,\n\t\t\"f83\":5283,\n\t\t\"f84\":5284,\n\t\t\"f85\":5285,\n\t\t\"f86\":5286,\n\t\t\"f87\":5287,\n\t\t\"f88\":5288,\n\t\t\"f89\":5289,\n\t\t\"f90\":5290,\n\t\t\"f91\":5291,\n\t\t\"f92\":5292,\n\t\t\"f93\":5293,\n\t\t\"f94\":5294,\n\t\t\"f95\":5295,\n\t\t\"f96\":5296,\n\t\t\"f97\":5297,\n\t\t\"f98\":5298,\n\t\t\"f99\":5299\n\t},\n\t{\n\t\t\"f0\":5300,\n\t\t\"f1\":5301,\n\t\t\"f2\":5302,\n\t\t\"f3\":5303,\n\t\t\"f4\":5304,\n\t\t\"f5\":5305,\n\t\t\"f6\":5306,\n\t\t\"f7\":5307,\n\t\t\"f8\":5308,\n\t\t\"f9\":5309,\n\t\t\"f10\":5310,\n\t\t\"f11\":5311,\n\t\t\"f12\":5312,\n\t\t\"f13\":5313,\n\t\t\"f14\":5314,\n\t\t\"f15\":5315,\n\t\t\"f16\":5316,\n\t\t\"f17\":5317,\n\t\t\"f18\":5318,\n\t\t\"f19\":5319,\n\t\t\"f20\":5320,\n\t\t\"f21\":5321,\n\t\t\"f22\":5322,\n\t\t\"f23\":5323,\n\t\t\"f24\":5324,\n\t\t\"f25\":5325,\n\t\t\"f26\":5326,\n\t\t\"f27\":5327,\n\t\t\"f28\":5328,\n\t\t\"f29\":5329,\n\t\t\"f30\":5330,\n\t\t\"f31\":5331,\n\t\t\"f32\":5332,\n\t\t\"f33\":5333,\n\t\t\"f34\":5334,\n\t\t\"f35\":5335,\n\t\t\"f36\":5336,\n\t\t\"f37\":5337,\n\t\t\"f38\":5338,\n\t\t\"f39\":5339,\n\t\t\"f40\":5340,\n\t\t\"f41\":5341,\n\t\t\"f42\":5342,\n\t\t\"f43\":5343,\n\t\t\"f44\":5344,\n\t\t\"f45\":5345,\n\t\t\"f46\":5346,\n\t\t\"f47\":5347,\n\t\t\"f48\":5348,\n\t\t\"f49\":5349,\n\t\t\"f50\":5350,\n\t\t\"f51\":5351,\n\t\t\"f52\":5352,\n\t\t\"f53\":5353,\n\t\t\"f54\":5354,\n\t\t\"f55\":5355,\n\t\t\"f56\":5356,\n\t\t\"f57\":5357,\n\t\t\"f58\":5358,\n\t\t\"f59\":5359,\n\t\t\"f60\":5360,\n\t\t\"f61\":5361,\n\t\t\"f62\":5362,\n\t\t\"f63\":5363,\n\t\t\"f64\":5364,\n\t\t\"f65\":5365,\n\t\t\"f66\":5366,\n\t\t\"f67\":5367,\n\t\t\"f68\":5368,\n\t\t\"f69\":5369,\n\t\t\"f70\":5370,\n\t\t\"f71\":5371,\n\t\t\"f72\":5372,\n\t\t\"f73\":5373,\n\t\t\"f74\":5374,\n\t\t\"f75\":5375,\n\t\t\"f76\":5376,\n\t\t\"f77\":5377,\n\t\t\"f78\":5378,\n\t\t\"f79\":5379,\n\t\t\"f80\":5380,\n\t\t\"f81\":5381,\n\t\t\"f82\":5382,\n\t\t\"f83\":5383,\n\t\t\"f84\":5384,\n\t\t\"f85\":5385,\n\t\t\"f86\":5386,\n\t\t\"f87\":5387,\n\t\t\"f88\":5388,\n\t\t\"f89\":5389,\n\t\t\"f90\":5390,\n\t\t\"f91\":5391,\n\t\t\"f92\":5392,\n\t\t\"f93\":5393,\n\t\t\"f94\":5394,\n\t\t\"f95\":5395,\n\t\t\"f96\":5396,\n\t\t\"f97\":5397,\n\t\t\"f98\":5398,\n\t\t\"f99\":5399\n\t},\n\t{\n\t\t\"f0\":5400,\n\t\t\"f1\":5401,\n\t\t\"f2\":5402,\n\t\t\"f3\":5403,\n\t\t\"f4\":5404,\n\t\t\"f5\":5405,\n\t\t\"f6\":5406,\n\t\t\"f7\":5407,\n\t\t\"f8\":5408,\n\t\t\"f9\":5409,\n\t\t\"f10\":5410,\n\t\t\"f11\":5411,\n\t\t\"f12\":5412,\n\t\t\"f13\":5413,\n\t\t\"f14\":5414,\n\t\t\"f15\":5415,\n\t\t\"f16\":5416,\n\t\t\"f17\":5417,\n\t\t\"f18\":5418,\n\t\t\"f19\":5419,\n\t\t\"f20\":5420,\n\t\t\"f21\":5421,\n\t\t\"f22\":5422,\n\t\t\"f23\":5423,\n\t\t\"f24\":5424,\n\t\t\"f25\":5425,\n\t\t\"f26\":5426,\n\t\t\"f27\":5427,\n\t\t\"f28\":5428,\n\t\t\"f29\":5429,\n\t\t\"f30\":5430,\n\t\t\"f31\":5431,\n\t\t\"f32\":5432,\n\t\t\"f33\":5433,\n\t\t\"f34\":5434,\n\t\t\"f35\":5435,\n\t\t\"f36\":5436,\n\t\t\"f37\":5437,\n\t\t\"f38\":5438,\n\t\t\"f39\":5439,\n\t\t\"f40\":5440,\n\t\t\"f41\":5441,\n\t\t\"f42\":5442,\n\t\t\"f43\":5443,\n\t\t\"f44\":5444,\n\t\t\"f45\":5445,\n\t\t\"f46\":5446,\n\t\t\"f47\":5447,\n\t\t\"f48\":5448,\n\t\t\"f49\":5449,\n\t\t\"f50\":5450,\n\t\t\"f51\":5451,\n\t\t\"f52\":5452,\n\t\t\"f53\":5453,\n\t\t\"f54\":5454,\n\t\t\"f55\":5455,\n\t\t\"f56\":5456,\n\t\t\"f57\":5457,\n\t\t\"f58\":5458,\n\t\t\"f59\":5459,\n\t\t\"f60\":5460,\n\t\t\"f61\":5461,\n\t\t\"f62\":5462,\n\t\t\"f63\":5463,\n\t\t\"f64\":5464,\n\t\t\"f65\":5465,\n\t\t\"f66\":5466,\n\t\t\"f67\":5467,\n\t\t\"f68\":5468,\n\t\t\"f69\":5469,\n\t\t\"f70\":5470,\n\t\t\"f71\":5471,\n\t\t\"f72\":5472,\n\t\t\"f73\":5473,\n\t\t\"f74\":5474,\n\t\t\"f75\":5475,\n\t\t\"f76\":5476,\n\t\t\"f77\":5477,\n\t\t\"f78\":5478,\n\t\t\"f79\":5479,\n\t\t\"f80\":5480,\n\t\t\"f81\":5481,\n\t\t\"f82\":5482,\n\t\t\"f83\":5483,\n\t\t\"f84\":5484,\n\t\t\"f85\":5485,\n\t\t\"f86\":5486,\n\t\t\"f87\":5487,\n\t\t\"f88\":5488,\n\t\t\"f89\":5489,\n\t\t\"f90\":5490,\n\t\t\"f91\":5491,\n\t\t\"f92\":5492,\n\t\t\"f93\":5493,\n\t\t\"f94\":5494,\n\t\t\"f95\":5495,\n\t\t\"f96\":5496,\n\t\t\"f97\":5497,\n\t\t\"f98\":5498,\n\t\t\"f99\":5499\n\t},\n\t{\n\t\t\"f0\":5500,\n\t\t\"f1\":5501,\n\t\t\"f2\":5502,\n\t\t\"f3\":5503,\n\t\t\"f4\":5504,\n\t\t\"f5\":5505,\n\t\t\"f6\":5506,\n\t\t\"f7\":5507,\n\t\t\"f8\":5508,\n\t\t\"f9\":5509,\n\t\t\"f10\":5510,\n\t\t\"f11\":5511,\n\t\t\"f12\":5512,\n\t\t\"f13\":5513,\n\t\t\"f14\":5514,\n\t\t\"f15\":5515,\n\t\t\"f16\":5516,\n\t\t\"f17\":5517,\n\t\t\"f18\":5518,\n\t\t\"f19\":5519,\n\t\t\"f20\":5520,\n\t\t\"f21\":5521,\n\t\t\"f22\":5522,\n\t\t\"f23\":5523,\n\t\t\"f24\":5524,\n\t\t\"f25\":5525,\n\t\t\"f26\":5526,\n\t\t\"f27\":5527,\n\t\t\"f28\":5528,\n\t\t\"f29\":5529,\n\t\t\"f30\":5530,\n\t\t\"f31\":5531,\n\t\t\"f32\":5532,\n\t\t\"f33\":5533,\n\t\t\"f34\":5534,\n\t\t\"f35\":5535,\n\t\t\"f36\":5536,\n\t\t\"f37\":5537,\n\t\t\"f38\":5538,\n\t\t\"f39\":5539,\n\t\t\"f40\":5540,\n\t\t\"f41\":5541,\n\t\t\"f42\":5542,\n\t\t\"f43\":5543,\n\t\t\"f44\":5544,\n\t\t\"f45\":5545,\n\t\t\"f46\":5546,\n\t\t\"f47\":5547,\n\t\t\"f48\":5548,\n\t\t\"f49\":5549,\n\t\t\"f50\":5550,\n\t\t\"f51\":5551,\n\t\t\"f52\":5552,\n\t\t\"f53\":5553,\n\t\t\"f54\":5554,\n\t\t\"f55\":5555,\n\t\t\"f56\":5556,\n\t\t\"f57\":5557,\n\t\t\"f58\":5558,\n\t\t\"f59\":5559,\n\t\t\"f60\":5560,\n\t\t\"f61\":5561,\n\t\t\"f62\":5562,\n\t\t\"f63\":5563,\n\t\t\"f64\":5564,\n\t\t\"f65\":5565,\n\t\t\"f66\":5566,\n\t\t\"f67\":5567,\n\t\t\"f68\":5568,\n\t\t\"f69\":5569,\n\t\t\"f70\":5570,\n\t\t\"f71\":5571,\n\t\t\"f72\":5572,\n\t\t\"f73\":5573,\n\t\t\"f74\":5574,\n\t\t\"f75\":5575,\n\t\t\"f76\":5576,\n\t\t\"f77\":5577,\n\t\t\"f78\":5578,\n\t\t\"f79\":5579,\n\t\t\"f80\":5580,\n\t\t\"f81\":5581,\n\t\t\"f82\":5582,\n\t\t\"f83\":5583,\n\t\t\"f84\":5584,\n\t\t\"f85\":5585,\n\t\t\"f86\":5586,\n\t\t\"f87\":5587,\n\t\t\"f88\":5588,\n\t\t\"f89\":5589,\n\t\t\"f90\":5590,\n\t\t\"f91\":5591,\n\t\t\"f92\":5592,\n\t\t\"f93\":5593,\n\t\t\"f94\":5594,\n\t\t\"f95\":5595,\n\t\t\"f96\":5596,\n\t\t\"f97\":5597,\n\t\t\"f98\":5598,\n\t\t\"f99\":5599\n\t},\n\t{\n\t\t\"f0\":5600,\n\t\t\"f1\":5601,\n\t\t\"f2\":5602,\n\t\t\"f3\":5603,\n\t\t\"f4\":5604,\n\t\t\"f5\":5605,\n\t\t\"f6\":5606,\n\t\t\"f7\":5607,\n\t\t\"f8\":5608,\n\t\t\"f9\":5609,\n\t\t\"f10\":5610,\n\t\t\"f11\":5611,\n\t\t\"f12\":5612,\n\t\t\"f13\":5613,\n\t\t\"f14\":5614,\n\t\t\"f15\":5615,\n\t\t\"f16\":5616,\n\t\t\"f17\":5617,\n\t\t\"f18\":5618,\n\t\t\"f19\":5619,\n\t\t\"f20\":5620,\n\t\t\"f21\":5621,\n\t\t\"f22\":5622,\n\t\t\"f23\":5623,\n\t\t\"f24\":5624,\n\t\t\"f25\":5625,\n\t\t\"f26\":5626,\n\t\t\"f27\":5627,\n\t\t\"f28\":5628,\n\t\t\"f29\":5629,\n\t\t\"f30\":5630,\n\t\t\"f31\":5631,\n\t\t\"f32\":5632,\n\t\t\"f33\":5633,\n\t\t\"f34\":5634,\n\t\t\"f35\":5635,\n\t\t\"f36\":5636,\n\t\t\"f37\":5637,\n\t\t\"f38\":5638,\n\t\t\"f39\":5639,\n\t\t\"f40\":5640,\n\t\t\"f41\":5641,\n\t\t\"f42\":5642,\n\t\t\"f43\":5643,\n\t\t\"f44\":5644,\n\t\t\"f45\":5645,\n\t\t\"f46\":5646,\n\t\t\"f47\":5647,\n\t\t\"f48\":5648,\n\t\t\"f49\":5649,\n\t\t\"f50\":5650,\n\t\t\"f51\":5651,\n\t\t\"f52\":5652,\n\t\t\"f53\":5653,\n\t\t\"f54\":5654,\n\t\t\"f55\":5655,\n\t\t\"f56\":5656,\n\t\t\"f57\":5657,\n\t\t\"f58\":5658,\n\t\t\"f59\":5659,\n\t\t\"f60\":5660,\n\t\t\"f61\":5661,\n\t\t\"f62\":5662,\n\t\t\"f63\":5663,\n\t\t\"f64\":5664,\n\t\t\"f65\":5665,\n\t\t\"f66\":5666,\n\t\t\"f67\":5667,\n\t\t\"f68\":5668,\n\t\t\"f69\":5669,\n\t\t\"f70\":5670,\n\t\t\"f71\":5671,\n\t\t\"f72\":5672,\n\t\t\"f73\":5673,\n\t\t\"f74\":5674,\n\t\t\"f75\":5675,\n\t\t\"f76\":5676,\n\t\t\"f77\":5677,\n\t\t\"f78\":5678,\n\t\t\"f79\":5679,\n\t\t\"f80\":5680,\n\t\t\"f81\":5681,\n\t\t\"f82\":5682,\n\t\t\"f83\":5683,\n\t\t\"f84\":5684,\n\t\t\"f85\":5685,\n\t\t\"f86\":5686,\n\t\t\"f87\":5687,\n\t\t\"f88\":5688,\n\t\t\"f89\":5689,\n\t\t\"f90\":5690,\n\t\t\"f91\":5691,\n\t\t\"f92\":5692,\n\t\t\"f93\":5693,\n\t\t\"f94\":5694,\n\t\t\"f95\":5695,\n\t\t\"f96\":5696,\n\t\t\"f97\":5697,\n\t\t\"f98\":5698,\n\t\t\"f99\":5699\n\t},\n\t{\n\t\t\"f0\":5700,\n\t\t\"f1\":5701,\n\t\t\"f2\":5702,\n\t\t\"f3\":5703,\n\t\t\"f4\":5704,\n\t\t\"f5\":5705,\n\t\t\"f6\":5706,\n\t\t\"f7\":5707,\n\t\t\"f8\":5708,\n\t\t\"f9\":5709,\n\t\t\"f10\":5710,\n\t\t\"f11\":5711,\n\t\t\"f12\":5712,\n\t\t\"f13\":5713,\n\t\t\"f14\":5714,\n\t\t\"f15\":5715,\n\t\t\"f16\":5716,\n\t\t\"f17\":5717,\n\t\t\"f18\":5718,\n\t\t\"f19\":5719,\n\t\t\"f20\":5720,\n\t\t\"f21\":5721,\n\t\t\"f22\":5722,\n\t\t\"f23\":5723,\n\t\t\"f24\":5724,\n\t\t\"f25\":5725,\n\t\t\"f26\":5726,\n\t\t\"f27\":5727,\n\t\t\"f28\":5728,\n\t\t\"f29\":5729,\n\t\t\"f30\":5730,\n\t\t\"f31\":5731,\n\t\t\"f32\":5732,\n\t\t\"f33\":5733,\n\t\t\"f34\":5734,\n\t\t\"f35\":5735,\n\t\t\"f36\":5736,\n\t\t\"f37\":5737,\n\t\t\"f38\":5738,\n\t\t\"f39\":5739,\n\t\t\"f40\":5740,\n\t\t\"f41\":5741,\n\t\t\"f42\":5742,\n\t\t\"f43\":5743,\n\t\t\"f44\":5744,\n\t\t\"f45\":5745,\n\t\t\"f46\":5746,\n\t\t\"f47\":5747,\n\t\t\"f48\":5748,\n\t\t\"f49\":5749,\n\t\t\"f50\":5750,\n\t\t\"f51\":5751,\n\t\t\"f52\":5752,\n\t\t\"f53\":5753,\n\t\t\"f54\":5754,\n\t\t\"f55\":5755,\n\t\t\"f56\":5756,\n\t\t\"f57\":5757,\n\t\t\"f58\":5758,\n\t\t\"f59\":5759,\n\t\t\"f60\":5760,\n\t\t\"f61\":5761,\n\t\t\"f62\":5762,\n\t\t\"f63\":5763,\n\t\t\"f64\":5764,\n\t\t\"f65\":5765,\n\t\t\"f66\":5766,\n\t\t\"f67\":5767,\n\t\t\"f68\":5768,\n\t\t\"f69\":5769,\n\t\t\"f70\":5770,\n\t\t\"f71\":5771,\n\t\t\"f72\":5772,\n\t\t\"f73\":5773,\n\t\t\"f74\":5774,\n\t\t\"f75\":5775,\n\t\t\"f76\":5776,\n\t\t\"f77\":5777,\n\t\t\"f78\":5778,\n\t\t\"f79\":5779,\n\t\t\"f80\":5780,\n\t\t\"f81\":5781,\n\t\t\"f82\":5782,\n\t\t\"f83\":5783,\n\t\t\"f84\":5784,\n\t\t\"f85\":5785,\n\t\t\"f86\":5786,\n\t\t\"f87\":5787,\n\t\t\"f88\":5788,\n\t\t\"f89\":5789,\n\t\t\"f90\":5790,\n\t\t\"f91\":5791,\n\t\t\"f92\":5792,\n\t\t\"f93\":5793,\n\t\t\"f94\":5794,\n\t\t\"f95\":5795,\n\t\t\"f96\":5796,\n\t\t\"f97\":5797,\n\t\t\"f98\":5798,\n\t\t\"f99\":5799\n\t},\n\t{\n\t\t\"f0\":5800,\n\t\t\"f1\":5801,\n\t\t\"f2\":5802,\n\t\t\"f3\":5803,\n\t\t\"f4\":5804,\n\t\t\"f5\":5805,\n\t\t\"f6\":5806,\n\t\t\"f7\":5807,\n\t\t\"f8\":5808,\n\t\t\"f9\":5809,\n\t\t\"f10\":5810,\n\t\t\"f11\":5811,\n\t\t\"f12\":5812,\n\t\t\"f13\":5813,\n\t\t\"f14\":5814,\n\t\t\"f15\":5815,\n\t\t\"f16\":5816,\n\t\t\"f17\":5817,\n\t\t\"f18\":5818,\n\t\t\"f19\":5819,\n\t\t\"f20\":5820,\n\t\t\"f21\":5821,\n\t\t\"f22\":5822,\n\t\t\"f23\":5823,\n\t\t\"f24\":5824,\n\t\t\"f25\":5825,\n\t\t\"f26\":5826,\n\t\t\"f27\":5827,\n\t\t\"f28\":5828,\n\t\t\"f29\":5829,\n\t\t\"f30\":5830,\n\t\t\"f31\":5831,\n\t\t\"f32\":5832,\n\t\t\"f33\":5833,\n\t\t\"f34\":5834,\n\t\t\"f35\":5835,\n\t\t\"f36\":5836,\n\t\t\"f37\":5837,\n\t\t\"f38\":5838,\n\t\t\"f39\":5839,\n\t\t\"f40\":5840,\n\t\t\"f41\":5841,\n\t\t\"f42\":5842,\n\t\t\"f43\":5843,\n\t\t\"f44\":5844,\n\t\t\"f45\":5845,\n\t\t\"f46\":5846,\n\t\t\"f47\":5847,\n\t\t\"f48\":5848,\n\t\t\"f49\":5849,\n\t\t\"f50\":5850,\n\t\t\"f51\":5851,\n\t\t\"f52\":5852,\n\t\t\"f53\":5853,\n\t\t\"f54\":5854,\n\t\t\"f55\":5855,\n\t\t\"f56\":5856,\n\t\t\"f57\":5857,\n\t\t\"f58\":5858,\n\t\t\"f59\":5859,\n\t\t\"f60\":5860,\n\t\t\"f61\":5861,\n\t\t\"f62\":5862,\n\t\t\"f63\":5863,\n\t\t\"f64\":5864,\n\t\t\"f65\":5865,\n\t\t\"f66\":5866,\n\t\t\"f67\":5867,\n\t\t\"f68\":5868,\n\t\t\"f69\":5869,\n\t\t\"f70\":5870,\n\t\t\"f71\":5871,\n\t\t\"f72\":5872,\n\t\t\"f73\":5873,\n\t\t\"f74\":5874,\n\t\t\"f75\":5875,\n\t\t\"f76\":5876,\n\t\t\"f77\":5877,\n\t\t\"f78\":5878,\n\t\t\"f79\":5879,\n\t\t\"f80\":5880,\n\t\t\"f81\":5881,\n\t\t\"f82\":5882,\n\t\t\"f83\":5883,\n\t\t\"f84\":5884,\n\t\t\"f85\":5885,\n\t\t\"f86\":5886,\n\t\t\"f87\":5887,\n\t\t\"f88\":5888,\n\t\t\"f89\":5889,\n\t\t\"f90\":5890,\n\t\t\"f91\":5891,\n\t\t\"f92\":5892,\n\t\t\"f93\":5893,\n\t\t\"f94\":5894,\n\t\t\"f95\":5895,\n\t\t\"f96\":5896,\n\t\t\"f97\":5897,\n\t\t\"f98\":5898,\n\t\t\"f99\":5899\n\t},\n\t{\n\t\t\"f0\":5900,\n\t\t\"f1\":5901,\n\t\t\"f2\":5902,\n\t\t\"f3\":5903,\n\t\t\"f4\":5904,\n\t\t\"f5\":5905,\n\t\t\"f6\":5906,\n\t\t\"f7\":5907,\n\t\t\"f8\":5908,\n\t\t\"f9\":5909,\n\t\t\"f10\":5910,\n\t\t\"f11\":5911,\n\t\t\"f12\":5912,\n\t\t\"f13\":5913,\n\t\t\"f14\":5914,\n\t\t\"f15\":5915,\n\t\t\"f16\":5916,\n\t\t\"f17\":5917,\n\t\t\"f18\":5918,\n\t\t\"f19\":5919,\n\t\t\"f20\":5920,\n\t\t\"f21\":5921,\n\t\t\"f22\":5922,\n\t\t\"f23\":5923,\n\t\t\"f24\":5924,\n\t\t\"f25\":5925,\n\t\t\"f26\":5926,\n\t\t\"f27\":5927,\n\t\t\"f28\":5928,\n\t\t\"f29\":5929,\n\t\t\"f30\":5930,\n\t\t\"f31\":5931,\n\t\t\"f32\":5932,\n\t\t\"f33\":5933,\n\t\t\"f34\":5934,\n\t\t\"f35\":5935,\n\t\t\"f36\":5936,\n\t\t\"f37\":5937,\n\t\t\"f38\":5938,\n\t\t\"f39\":5939,\n\t\t\"f40\":5940,\n\t\t\"f41\":5941,\n\t\t\"f42\":5942,\n\t\t\"f43\":5943,\n\t\t\"f44\":5944,\n\t\t\"f45\":5945,\n\t\t\"f46\":5946,\n\t\t\"f47\":5947,\n\t\t\"f48\":5948,\n\t\t\"f49\":5949,\n\t\t\"f50\":5950,\n\t\t\"f51\":5951,\n\t\t\"f52\":5952,\n\t\t\"f53\":5953,\n\t\t\"f54\":5954,\n\t\t\"f55\":5955,\n\t\t\"f56\":5956,\n\t\t\"f57\":5957,\n\t\t\"f58\":5958,\n\t\t\"f59\":5959,\n\t\t\"f60\":5960,\n\t\t\"f61\":5961,\n\t\t\"f62\":5962,\n\t\t\"f63\":5963,\n\t\t\"f64\":5964,\n\t\t\"f65\":5965,\n\t\t\"f66\":5966,\n\t\t\"f67\":5967,\n\t\t\"f68\":5968,\n\t\t\"f69\":5969,\n\t\t\"f70\":5970,\n\t\t\"f71\":5971,\n\t\t\"f72\":5972,\n\t\t\"f73\":5973,\n\t\t\"f74\":5974,\n\t\t\"f75\":5975,\n\t\t\"f76\":5976,\n\t\t\"f77\":5977,\n\t\t\"f78\":5978,\n\t\t\"f79\":5979,\n\t\t\"f80\":5980,\n\t\t\"f81\":5981,\n\t\t\"f82\":5982,\n\t\t\"f83\":5983,\n\t\t\"f84\":5984,\n\t\t\"f85\":5985,\n\t\t\"f86\":5986,\n\t\t\"f87\":5987,\n\t\t\"f88\":5988,\n\t\t\"f89\":5989,\n\t\t\"f90\":5990,\n\t\t\"f91\":5991,\n\t\t\"f92\":5992,\n\t\t\"f93\":5993,\n\t\t\"f94\":5994,\n\t\t\"f95\":5995,\n\t\t\"f96\":5996,\n\t\t\"f97\":5997,\n\t\t\"f98\":5998,\n\t\t\"f99\":5999\n\t},\n\t{\n\t\t\"f0\":6000,\n\t\t\"f1\":6001,\n\t\t\"f2\":6002,\n\t\t\"f3\":6003,\n\t\t\"f4\":6004,\n\t\t\"f5\":6005,\n\t\t\"f6\":6006,\n\t\t\"f7\":6007,\n\t\t\"f8\":6008,\n\t\t\"f9\":6009,\n\t\t\"f10\":6010,\n\t\t\"f11\":6011,\n\t\t\"f12\":6012,\n\t\t\"f13\":6013,\n\t\t\"f14\":6014,\n\t\t\"f15\":6015,\n\t\t\"f16\":6016,\n\t\t\"f17\":6017,\n\t\t\"f18\":6018,\n\t\t\"f19\":6019,\n\t\t\"f20\":6020,\n\t\t\"f21\":6021,\n\t\t\"f22\":6022,\n\t\t\"f23\":6023,\n\t\t\"f24\":6024,\n\t\t\"f25\":6025,\n\t\t\"f26\":6026,\n\t\t\"f27\":6027,\n\t\t\"f28\":6028,\n\t\t\"f29\":6029,\n\t\t\"f30\":6030,\n\t\t\"f31\":6031,\n\t\t\"f32\":6032,\n\t\t\"f33\":6033,\n\t\t\"f34\":6034,\n\t\t\"f35\":6035,\n\t\t\"f36\":6036,\n\t\t\"f37\":6037,\n\t\t\"f38\":6038,\n\t\t\"f39\":6039,\n\t\t\"f40\":6040,\n\t\t\"f41\":6041,\n\t\t\"f42\":6042,\n\t\t\"f43\":6043,\n\t\t\"f44\":6044,\n\t\t\"f45\":6045,\n\t\t\"f46\":6046,\n\t\t\"f47\":6047,\n\t\t\"f48\":6048,\n\t\t\"f49\":6049,\n\t\t\"f50\":6050,\n\t\t\"f51\":6051,\n\t\t\"f52\":6052,\n\t\t\"f53\":6053,\n\t\t\"f54\":6054,\n\t\t\"f55\":6055,\n\t\t\"f56\":6056,\n\t\t\"f57\":6057,\n\t\t\"f58\":6058,\n\t\t\"f59\":6059,\n\t\t\"f60\":6060,\n\t\t\"f61\":6061,\n\t\t\"f62\":6062,\n\t\t\"f63\":6063,\n\t\t\"f64\":6064,\n\t\t\"f65\":6065,\n\t\t\"f66\":6066,\n\t\t\"f67\":6067,\n\t\t\"f68\":6068,\n\t\t\"f69\":6069,\n\t\t\"f70\":6070,\n\t\t\"f71\":6071,\n\t\t\"f72\":6072,\n\t\t\"f73\":6073,\n\t\t\"f74\":6074,\n\t\t\"f75\":6075,\n\t\t\"f76\":6076,\n\t\t\"f77\":6077,\n\t\t\"f78\":6078,\n\t\t\"f79\":6079,\n\t\t\"f80\":6080,\n\t\t\"f81\":6081,\n\t\t\"f82\":6082,\n\t\t\"f83\":6083,\n\t\t\"f84\":6084,\n\t\t\"f85\":6085,\n\t\t\"f86\":6086,\n\t\t\"f87\":6087,\n\t\t\"f88\":6088,\n\t\t\"f89\":6089,\n\t\t\"f90\":6090,\n\t\t\"f91\":6091,\n\t\t\"f92\":6092,\n\t\t\"f93\":6093,\n\t\t\"f94\":6094,\n\t\t\"f95\":6095,\n\t\t\"f96\":6096,\n\t\t\"f97\":6097,\n\t\t\"f98\":6098,\n\t\t\"f99\":6099\n\t},\n\t{\n\t\t\"f0\":6100,\n\t\t\"f1\":6101,\n\t\t\"f2\":6102,\n\t\t\"f3\":6103,\n\t\t\"f4\":6104,\n\t\t\"f5\":6105,\n\t\t\"f6\":6106,\n\t\t\"f7\":6107,\n\t\t\"f8\":6108,\n\t\t\"f9\":6109,\n\t\t\"f10\":6110,\n\t\t\"f11\":6111,\n\t\t\"f12\":6112,\n\t\t\"f13\":6113,\n\t\t\"f14\":6114,\n\t\t\"f15\":6115,\n\t\t\"f16\":6116,\n\t\t\"f17\":6117,\n\t\t\"f18\":6118,\n\t\t\"f19\":6119,\n\t\t\"f20\":6120,\n\t\t\"f21\":6121,\n\t\t\"f22\":6122,\n\t\t\"f23\":6123,\n\t\t\"f24\":6124,\n\t\t\"f25\":6125,\n\t\t\"f26\":6126,\n\t\t\"f27\":6127,\n\t\t\"f28\":6128,\n\t\t\"f29\":6129,\n\t\t\"f30\":6130,\n\t\t\"f31\":6131,\n\t\t\"f32\":6132,\n\t\t\"f33\":6133,\n\t\t\"f34\":6134,\n\t\t\"f35\":6135,\n\t\t\"f36\":6136,\n\t\t\"f37\":6137,\n\t\t\"f38\":6138,\n\t\t\"f39\":6139,\n\t\t\"f40\":6140,\n\t\t\"f41\":6141,\n\t\t\"f42\":6142,\n\t\t\"f43\":6143,\n\t\t\"f44\":6144,\n\t\t\"f45\":6145,\n\t\t\"f46\":6146,\n\t\t\"f47\":6147,\n\t\t\"f48\":6148,\n\t\t\"f49\":6149,\n\t\t\"f50\":6150,\n\t\t\"f51\":6151,\n\t\t\"f52\":6152,\n\t\t\"f53\":6153,\n\t\t\"f54\":6154,\n\t\t\"f55\":6155,\n\t\t\"f56\":6156,\n\t\t\"f57\":6157,\n\t\t\"f58\":6158,\n\t\t\"f59\":6159,\n\t\t\"f60\":6160,\n\t\t\"f61\":6161,\n\t\t\"f62\":6162,\n\t\t\"f63\":6163,\n\t\t\"f64\":6164,\n\t\t\"f65\":6165,\n\t\t\"f66\":6166,\n\t\t\"f67\":6167,\n\t\t\"f68\":6168,\n\t\t\"f69\":6169,\n\t\t\"f70\":6170,\n\t\t\"f71\":6171,\n\t\t\"f72\":6172,\n\t\t\"f73\":6173,\n\t\t\"f74\":6174,\n\t\t\"f75\":6175,\n\t\t\"f76\":6176,\n\t\t\"f77\":6177,\n\t\t\"f78\":6178,\n\t\t\"f79\":6179,\n\t\t\"f80\":6180,\n\t\t\"f81\":6181,\n\t\t\"f82\":6182,\n\t\t\"f83\":6183,\n\t\t\"f84\":6184,\n\t\t\"f85\":6185,\n\t\t\"f86\":6186,\n\t\t\"f87\":6187,\n\t\t\"f88\":6188,\n\t\t\"f89\":6189,\n\t\t\"f90\":6190,\n\t\t\"f91\":6191,\n\t\t\"f92\":6192,\n\t\t\"f93\":6193,\n\t\t\"f94\":6194,\n\t\t\"f95\":6195,\n\t\t\"f96\":6196,\n\t\t\"f97\":6197,\n\t\t\"f98\":6198,\n\t\t\"f99\":6199\n\t},\n\t{\n\t\t\"f0\":6200,\n\t\t\"f1\":6201,\n\t\t\"f2\":6202,\n\t\t\"f3\":6203,\n\t\t\"f4\":6204,\n\t\t\"f5\":6205,\n\t\t\"f6\":6206,\n\t\t\"f7\":6207,\n\t\t\"f8\":6208,\n\t\t\"f9\":6209,\n\t\t\"f10\":6210,\n\t\t\"f11\":6211,\n\t\t\"f12\":6212,\n\t\t\"f13\":6213,\n\t\t\"f14\":6214,\n\t\t\"f15\":6215,\n\t\t\"f16\":6216,\n\t\t\"f17\":6217,\n\t\t\"f18\":6218,\n\t\t\"f19\":6219,\n\t\t\"f20\":6220,\n\t\t\"f21\":6221,\n\t\t\"f22\":6222,\n\t\t\"f23\":6223,\n\t\t\"f24\":6224,\n\t\t\"f25\":6225,\n\t\t\"f26\":6226,\n\t\t\"f27\":6227,\n\t\t\"f28\":6228,\n\t\t\"f29\":6229,\n\t\t\"f30\":6230,\n\t\t\"f31\":6231,\n\t\t\"f32\":6232,\n\t\t\"f33\":6233,\n\t\t\"f34\":6234,\n\t\t\"f35\":6235,\n\t\t\"f36\":6236,\n\t\t\"f37\":6237,\n\t\t\"f38\":6238,\n\t\t\"f39\":6239,\n\t\t\"f40\":6240,\n\t\t\"f41\":6241,\n\t\t\"f42\":6242,\n\t\t\"f43\":6243,\n\t\t\"f44\":6244,\n\t\t\"f45\":6245,\n\t\t\"f46\":6246,\n\t\t\"f47\":6247,\n\t\t\"f48\":6248,\n\t\t\"f49\":6249,\n\t\t\"f50\":6250,\n\t\t\"f51\":6251,\n\t\t\"f52\":6252,\n\t\t\"f53\":6253,\n\t\t\"f54\":6254,\n\t\t\"f55\":6255,\n\t\t\"f56\":6256,\n\t\t\"f57\":6257,\n\t\t\"f58\":6258,\n\t\t\"f59\":6259,\n\t\t\"f60\":6260,\n\t\t\"f61\":6261,\n\t\t\"f62\":6262,\n\t\t\"f63\":6263,\n\t\t\"f64\":6264,\n\t\t\"f65\":6265,\n\t\t\"f66\":6266,\n\t\t\"f67\":6267,\n\t\t\"f68\":6268,\n\t\t\"f69\":6269,\n\t\t\"f70\":6270,\n\t\t\"f71\":6271,\n\t\t\"f72\":6272,\n\t\t\"f73\":6273,\n\t\t\"f74\":6274,\n\t\t\"f75\":6275,\n\t\t\"f76\":6276,\n\t\t\"f77\":6277,\n\t\t\"f78\":6278,\n\t\t\"f79\":6279,\n\t\t\"f80\":6280,\n\t\t\"f81\":6281,\n\t\t\"f82\":6282,\n\t\t\"f83\":6283,\n\t\t\"f84\":6284,\n\t\t\"f85\":6285,\n\t\t\"f86\":6286,\n\t\t\"f87\":6287,\n\t\t\"f88\":6288,\n\t\t\"f89\":6289,\n\t\t\"f90\":6290,\n\t\t\"f91\":6291,\n\t\t\"f92\":6292,\n\t\t\"f93\":6293,\n\t\t\"f94\":6294,\n\t\t\"f95\":6295,\n\t\t\"f96\":6296,\n\t\t\"f97\":6297,\n\t\t\"f98\":6298,\n\t\t\"f99\":6299\n\t},\n\t{\n\t\t\"f0\":6300,\n\t\t\"f1\":6301,\n\t\t\"f2\":6302,\n\t\t\"f3\":6303,\n\t\t\"f4\":6304,\n\t\t\"f5\":6305,\n\t\t\"f6\":6306,\n\t\t\"f7\":6307,\n\t\t\"f8\":6308,\n\t\t\"f9\":6309,\n\t\t\"f10\":6310,\n\t\t\"f11\":6311,\n\t\t\"f12\":6312,\n\t\t\"f13\":6313,\n\t\t\"f14\":6314,\n\t\t\"f15\":6315,\n\t\t\"f16\":6316,\n\t\t\"f17\":6317,\n\t\t\"f18\":6318,\n\t\t\"f19\":6319,\n\t\t\"f20\":6320,\n\t\t\"f21\":6321,\n\t\t\"f22\":6322,\n\t\t\"f23\":6323,\n\t\t\"f24\":6324,\n\t\t\"f25\":6325,\n\t\t\"f26\":6326,\n\t\t\"f27\":6327,\n\t\t\"f28\":6328,\n\t\t\"f29\":6329,\n\t\t\"f30\":6330,\n\t\t\"f31\":6331,\n\t\t\"f32\":6332,\n\t\t\"f33\":6333,\n\t\t\"f34\":6334,\n\t\t\"f35\":6335,\n\t\t\"f36\":6336,\n\t\t\"f37\":6337,\n\t\t\"f38\":6338,\n\t\t\"f39\":6339,\n\t\t\"f40\":6340,\n\t\t\"f41\":6341,\n\t\t\"f42\":6342,\n\t\t\"f43\":6343,\n\t\t\"f44\":6344,\n\t\t\"f45\":6345,\n\t\t\"f46\":6346,\n\t\t\"f47\":6347,\n\t\t\"f48\":6348,\n\t\t\"f49\":6349,\n\t\t\"f50\":6350,\n\t\t\"f51\":6351,\n\t\t\"f52\":6352,\n\t\t\"f53\":6353,\n\t\t\"f54\":6354,\n\t\t\"f55\":6355,\n\t\t\"f56\":6356,\n\t\t\"f57\":6357,\n\t\t\"f58\":6358,\n\t\t\"f59\":6359,\n\t\t\"f60\":6360,\n\t\t\"f61\":6361,\n\t\t\"f62\":6362,\n\t\t\"f63\":6363,\n\t\t\"f64\":6364,\n\t\t\"f65\":6365,\n\t\t\"f66\":6366,\n\t\t\"f67\":6367,\n\t\t\"f68\":6368,\n\t\t\"f69\":6369,\n\t\t\"f70\":6370,\n\t\t\"f71\":6371,\n\t\t\"f72\":6372,\n\t\t\"f73\":6373,\n\t\t\"f74\":6374,\n\t\t\"f75\":6375,\n\t\t\"f76\":6376,\n\t\t\"f77\":6377,\n\t\t\"f78\":6378,\n\t\t\"f79\":6379,\n\t\t\"f80\":6380,\n\t\t\"f81\":6381,\n\t\t\"f82\":6382,\n\t\t\"f83\":6383,\n\t\t\"f84\":6384,\n\t\t\"f85\":6385,\n\t\t\"f86\":6386,\n\t\t\"f87\":6387,\n\t\t\"f88\":6388,\n\t\t\"f89\":6389,\n\t\t\"f90\":6390,\n\t\t\"f91\":6391,\n\t\t\"f92\":6392,\n\t\t\"f93\":6393,\n\t\t\"f94\":6394,\n\t\t\"f95\":6395,\n\t\t\"f96\":6396,\n\t\t\"f97\":6397,\n\t\t\"f98\":6398,\n\t\t\"f99\":6399\n\t},\n\t{\n\t\t\"f0\":6400,\n\t\t\"f1\":6401,\n\t\t\"f2\":6402,\n\t\t\"f3\":6403,\n\t\t\"f4\":6404,\n\t\t\"f5\":6405,\n\t\t\"f6\":6406,\n\t\t\"f7\":6407,\n\t\t\"f8\":6408,\n\t\t\"f9\":6409,\n\t\t\"f10\":6410,\n\t\t\"f11\":6411,\n\t\t\"f12\":6412,\n\t\t\"f13\":6413,\n\t\t\"f14\":6414,\n\t\t\"f15\":6415,\n\t\t\"f16\":6416,\n\t\t\"f17\":6417,\n\t\t\"f18\":6418,\n\t\t\"f19\":6419,\n\t\t\"f20\":6420,\n\t\t\"f21\":6421,\n\t\t\"f22\":6422,\n\t\t\"f23\":6423,\n\t\t\"f24\":6424,\n\t\t\"f25\":6425,\n\t\t\"f26\":6426,\n\t\t\"f27\":6427,\n\t\t\"f28\":6428,\n\t\t\"f29\":6429,\n\t\t\"f30\":6430,\n\t\t\"f31\":6431,\n\t\t\"f32\":6432,\n\t\t\"f33\":6433,\n\t\t\"f34\":6434,\n\t\t\"f35\":6435,\n\t\t\"f36\":6436,\n\t\t\"f37\":6437,\n\t\t\"f38\":6438,\n\t\t\"f39\":6439,\n\t\t\"f40\":6440,\n\t\t\"f41\":6441,\n\t\t\"f42\":6442,\n\t\t\"f43\":6443,\n\t\t\"f44\":6444,\n\t\t\"f45\":6445,\n\t\t\"f46\":6446,\n\t\t\"f47\":6447,\n\t\t\"f48\":6448,\n\t\t\"f49\":6449,\n\t\t\"f50\":6450,\n\t\t\"f51\":6451,\n\t\t\"f52\":6452,\n\t\t\"f53\":6453,\n\t\t\"f54\":6454,\n\t\t\"f55\":6455,\n\t\t\"f56\":6456,\n\t\t\"f57\":6457,\n\t\t\"f58\":6458,\n\t\t\"f59\":6459,\n\t\t\"f60\":6460,\n\t\t\"f61\":6461,\n\t\t\"f62\":6462,\n\t\t\"f63\":6463,\n\t\t\"f64\":6464,\n\t\t\"f65\":6465,\n\t\t\"f66\":6466,\n\t\t\"f67\":6467,\n\t\t\"f68\":6468,\n\t\t\"f69\":6469,\n\t\t\"f70\":6470,\n\t\t\"f71\":6471,\n\t\t\"f72\":6472,\n\t\t\"f73\":6473,\n\t\t\"f74\":6474,\n\t\t\"f75\":6475,\n\t\t\"f76\":6476,\n\t\t\"f77\":6477,\n\t\t\"f78\":6478,\n\t\t\"f79\":6479,\n\t\t\"f80\":6480,\n\t\t\"f81\":6481,\n\t\t\"f82\":6482,\n\t\t\"f83\":6483,\n\t\t\"f84\":6484,\n\t\t\"f85\":6485,\n\t\t\"f86\":6486,\n\t\t\"f87\":6487,\n\t\t\"f88\":6488,\n\t\t\"f89\":6489,\n\t\t\"f90\":6490,\n\t\t\"f91\":6491,\n\t\t\"f92\":6492,\n\t\t\"f93\":6493,\n\t\t\"f94\":6494,\n\t\t\"f95\":6495,\n\t\t\"f96\":6496,\n\t\t\"f97\":6497,\n\t\t\"f98\":6498,\n\t\t\"f99\":6499\n\t},\n\t{\n\t\t\"f0\":6500,\n\t\t\"f1\":6501,\n\t\t\"f2\":6502,\n\t\t\"f3\":6503,\n\t\t\"f4\":6504,\n\t\t\"f5\":6505,\n\t\t\"f6\":6506,\n\t\t\"f7\":6507,\n\t\t\"f8\":6508,\n\t\t\"f9\":6509,\n\t\t\"f10\":6510,\n\t\t\"f11\":6511,\n\t\t\"f12\":6512,\n\t\t\"f13\":6513,\n\t\t\"f14\":6514,\n\t\t\"f15\":6515,\n\t\t\"f16\":6516,\n\t\t\"f17\":6517,\n\t\t\"f18\":6518,\n\t\t\"f19\":6519,\n\t\t\"f20\":6520,\n\t\t\"f21\":6521,\n\t\t\"f22\":6522,\n\t\t\"f23\":6523,\n\t\t\"f24\":6524,\n\t\t\"f25\":6525,\n\t\t\"f26\":6526,\n\t\t\"f27\":6527,\n\t\t\"f28\":6528,\n\t\t\"f29\":6529,\n\t\t\"f30\":6530,\n\t\t\"f31\":6531,\n\t\t\"f32\":6532,\n\t\t\"f33\":6533,\n\t\t\"f34\":6534,\n\t\t\"f35\":6535,\n\t\t\"f36\":6536,\n\t\t\"f37\":6537,\n\t\t\"f38\":6538,\n\t\t\"f39\":6539,\n\t\t\"f40\":6540,\n\t\t\"f41\":6541,\n\t\t\"f42\":6542,\n\t\t\"f43\":6543,\n\t\t\"f44\":6544,\n\t\t\"f45\":6545,\n\t\t\"f46\":6546,\n\t\t\"f47\":6547,\n\t\t\"f48\":6548,\n\t\t\"f49\":6549,\n\t\t\"f50\":6550,\n\t\t\"f51\":6551,\n\t\t\"f52\":6552,\n\t\t\"f53\":6553,\n\t\t\"f54\":6554,\n\t\t\"f55\":6555,\n\t\t\"f56\":6556,\n\t\t\"f57\":6557,\n\t\t\"f58\":6558,\n\t\t\"f59\":6559,\n\t\t\"f60\":6560,\n\t\t\"f61\":6561,\n\t\t\"f62\":6562,\n\t\t\"f63\":6563,\n\t\t\"f64\":6564,\n\t\t\"f65\":6565,\n\t\t\"f66\":6566,\n\t\t\"f67\":6567,\n\t\t\"f68\":6568,\n\t\t\"f69\":6569,\n\t\t\"f70\":6570,\n\t\t\"f71\":6571,\n\t\t\"f72\":6572,\n\t\t\"f73\":6573,\n\t\t\"f74\":6574,\n\t\t\"f75\":6575,\n\t\t\"f76\":6576,\n\t\t\"f77\":6577,\n\t\t\"f78\":6578,\n\t\t\"f79\":6579,\n\t\t\"f80\":6580,\n\t\t\"f81\":6581,\n\t\t\"f82\":6582,\n\t\t\"f83\":6583,\n\t\t\"f84\":6584,\n\t\t\"f85\":6585,\n\t\t\"f86\":6586,\n\t\t\"f87\":6587,\n\t\t\"f88\":6588,\n\t\t\"f89\":6589,\n\t\t\"f90\":6590,\n\t\t\"f91\":6591,\n\t\t\"f92\":6592,\n\t\t\"f93\":6593,\n\t\t\"f94\":6594,\n\t\t\"f95\":6595,\n\t\t\"f96\":6596,\n\t\t\"f97\":6597,\n\t\t\"f98\":6598,\n\t\t\"f99\":6599\n\t},\n\t{\n\t\t\"f0\":6600,\n\t\t\"f1\":6601,\n\t\t\"f2\":6602,\n\t\t\"f3\":6603,\n\t\t\"f4\":6604,\n\t\t\"f5\":6605,\n\t\t\"f6\":6606,\n\t\t\"f7\":6607,\n\t\t\"f8\":6608,\n\t\t\"f9\":6609,\n\t\t\"f10\":6610,\n\t\t\"f11\":6611,\n\t\t\"f12\":6612,\n\t\t\"f13\":6613,\n\t\t\"f14\":6614,\n\t\t\"f15\":6615,\n\t\t\"f16\":6616,\n\t\t\"f17\":6617,\n\t\t\"f18\":6618,\n\t\t\"f19\":6619,\n\t\t\"f20\":6620,\n\t\t\"f21\":6621,\n\t\t\"f22\":6622,\n\t\t\"f23\":6623,\n\t\t\"f24\":6624,\n\t\t\"f25\":6625,\n\t\t\"f26\":6626,\n\t\t\"f27\":6627,\n\t\t\"f28\":6628,\n\t\t\"f29\":6629,\n\t\t\"f30\":6630,\n\t\t\"f31\":6631,\n\t\t\"f32\":6632,\n\t\t\"f33\":6633,\n\t\t\"f34\":6634,\n\t\t\"f35\":6635,\n\t\t\"f36\":6636,\n\t\t\"f37\":6637,\n\t\t\"f38\":6638,\n\t\t\"f39\":6639,\n\t\t\"f40\":6640,\n\t\t\"f41\":6641,\n\t\t\"f42\":6642,\n\t\t\"f43\":6643,\n\t\t\"f44\":6644,\n\t\t\"f45\":6645,\n\t\t\"f46\":6646,\n\t\t\"f47\":6647,\n\t\t\"f48\":6648,\n\t\t\"f49\":6649,\n\t\t\"f50\":6650,\n\t\t\"f51\":6651,\n\t\t\"f52\":6652,\n\t\t\"f53\":6653,\n\t\t\"f54\":6654,\n\t\t\"f55\":6655,\n\t\t\"f56\":6656,\n\t\t\"f57\":6657,\n\t\t\"f58\":6658,\n\t\t\"f59\":6659,\n\t\t\"f60\":6660,\n\t\t\"f61\":6661,\n\t\t\"f62\":6662,\n\t\t\"f63\":6663,\n\t\t\"f64\":6664,\n\t\t\"f65\":6665,\n\t\t\"f66\":6666,\n\t\t\"f67\":6667,\n\t\t\"f68\":6668,\n\t\t\"f69\":6669,\n\t\t\"f70\":6670,\n\t\t\"f71\":6671,\n\t\t\"f72\":6672,\n\t\t\"f73\":6673,\n\t\t\"f74\":6674,\n\t\t\"f75\":6675,\n\t\t\"f76\":6676,\n\t\t\"f77\":6677,\n\t\t\"f78\":6678,\n\t\t\"f79\":6679,\n\t\t\"f80\":6680,\n\t\t\"f81\":6681,\n\t\t\"f82\":6682,\n\t\t\"f83\":6683,\n\t\t\"f84\":6684,\n\t\t\"f85\":6685,\n\t\t\"f86\":6686,\n\t\t\"f87\":6687,\n\t\t\"f88\":6688,\n\t\t\"f89\":6689,\n\t\t\"f90\":6690,\n\t\t\"f91\":6691,\n\t\t\"f92\":6692,\n\t\t\"f93\":6693,\n\t\t\"f94\":6694,\n\t\t\"f95\":6695,\n\t\t\"f96\":6696,\n\t\t\"f97\":6697,\n\t\t\"f98\":6698,\n\t\t\"f99\":6699\n\t},\n\t{\n\t\t\"f0\":6700,\n\t\t\"f1\":6701,\n\t\t\"f2\":6702,\n\t\t\"f3\":6703,\n\t\t\"f4\":6704,\n\t\t\"f5\":6705,\n\t\t\"f6\":6706,\n\t\t\"f7\":6707,\n\t\t\"f8\":6708,\n\t\t\"f9\":6709,\n\t\t\"f10\":6710,\n\t\t\"f11\":6711,\n\t\t\"f12\":6712,\n\t\t\"f13\":6713,\n\t\t\"f14\":6714,\n\t\t\"f15\":6715,\n\t\t\"f16\":6716,\n\t\t\"f17\":6717,\n\t\t\"f18\":6718,\n\t\t\"f19\":6719,\n\t\t\"f20\":6720,\n\t\t\"f21\":6721,\n\t\t\"f22\":6722,\n\t\t\"f23\":6723,\n\t\t\"f24\":6724,\n\t\t\"f25\":6725,\n\t\t\"f26\":6726,\n\t\t\"f27\":6727,\n\t\t\"f28\":6728,\n\t\t\"f29\":6729,\n\t\t\"f30\":6730,\n\t\t\"f31\":6731,\n\t\t\"f32\":6732,\n\t\t\"f33\":6733,\n\t\t\"f34\":6734,\n\t\t\"f35\":6735,\n\t\t\"f36\":6736,\n\t\t\"f37\":6737,\n\t\t\"f38\":6738,\n\t\t\"f39\":6739,\n\t\t\"f40\":6740,\n\t\t\"f41\":6741,\n\t\t\"f42\":6742,\n\t\t\"f43\":6743,\n\t\t\"f44\":6744,\n\t\t\"f45\":6745,\n\t\t\"f46\":6746,\n\t\t\"f47\":6747,\n\t\t\"f48\":6748,\n\t\t\"f49\":6749,\n\t\t\"f50\":6750,\n\t\t\"f51\":6751,\n\t\t\"f52\":6752,\n\t\t\"f53\":6753,\n\t\t\"f54\":6754,\n\t\t\"f55\":6755,\n\t\t\"f56\":6756,\n\t\t\"f57\":6757,\n\t\t\"f58\":6758,\n\t\t\"f59\":6759,\n\t\t\"f60\":6760,\n\t\t\"f61\":6761,\n\t\t\"f62\":6762,\n\t\t\"f63\":6763,\n\t\t\"f64\":6764,\n\t\t\"f65\":6765,\n\t\t\"f66\":6766,\n\t\t\"f67\":6767,\n\t\t\"f68\":6768,\n\t\t\"f69\":6769,\n\t\t\"f70\":6770,\n\t\t\"f71\":6771,\n\t\t\"f72\":6772,\n\t\t\"f73\":6773,\n\t\t\"f74\":6774,\n\t\t\"f75\":6775,\n\t\t\"f76\":6776,\n\t\t\"f77\":6777,\n\t\t\"f78\":6778,\n\t\t\"f79\":6779,\n\t\t\"f80\":6780,\n\t\t\"f81\":6781,\n\t\t\"f82\":6782,\n\t\t\"f83\":6783,\n\t\t\"f84\":6784,\n\t\t\"f85\":6785,\n\t\t\"f86\":6786,\n\t\t\"f87\":6787,\n\t\t\"f88\":6788,\n\t\t\"f89\":6789,\n\t\t\"f90\":6790,\n\t\t\"f91\":6791,\n\t\t\"f92\":6792,\n\t\t\"f93\":6793,\n\t\t\"f94\":6794,\n\t\t\"f95\":6795,\n\t\t\"f96\":6796,\n\t\t\"f97\":6797,\n\t\t\"f98\":6798,\n\t\t\"f99\":6799\n\t},\n\t{\n\t\t\"f0\":6800,\n\t\t\"f1\":6801,\n\t\t\"f2\":6802,\n\t\t\"f3\":6803,\n\t\t\"f4\":6804,\n\t\t\"f5\":6805,\n\t\t\"f6\":6806,\n\t\t\"f7\":6807,\n\t\t\"f8\":6808,\n\t\t\"f9\":6809,\n\t\t\"f10\":6810,\n\t\t\"f11\":6811,\n\t\t\"f12\":6812,\n\t\t\"f13\":6813,\n\t\t\"f14\":6814,\n\t\t\"f15\":6815,\n\t\t\"f16\":6816,\n\t\t\"f17\":6817,\n\t\t\"f18\":6818,\n\t\t\"f19\":6819,\n\t\t\"f20\":6820,\n\t\t\"f21\":6821,\n\t\t\"f22\":6822,\n\t\t\"f23\":6823,\n\t\t\"f24\":6824,\n\t\t\"f25\":6825,\n\t\t\"f26\":6826,\n\t\t\"f27\":6827,\n\t\t\"f28\":6828,\n\t\t\"f29\":6829,\n\t\t\"f30\":6830,\n\t\t\"f31\":6831,\n\t\t\"f32\":6832,\n\t\t\"f33\":6833,\n\t\t\"f34\":6834,\n\t\t\"f35\":6835,\n\t\t\"f36\":6836,\n\t\t\"f37\":6837,\n\t\t\"f38\":6838,\n\t\t\"f39\":6839,\n\t\t\"f40\":6840,\n\t\t\"f41\":6841,\n\t\t\"f42\":6842,\n\t\t\"f43\":6843,\n\t\t\"f44\":6844,\n\t\t\"f45\":6845,\n\t\t\"f46\":6846,\n\t\t\"f47\":6847,\n\t\t\"f48\":6848,\n\t\t\"f49\":6849,\n\t\t\"f50\":6850,\n\t\t\"f51\":6851,\n\t\t\"f52\":6852,\n\t\t\"f53\":6853,\n\t\t\"f54\":6854,\n\t\t\"f55\":6855,\n\t\t\"f56\":6856,\n\t\t\"f57\":6857,\n\t\t\"f58\":6858,\n\t\t\"f59\":6859,\n\t\t\"f60\":6860,\n\t\t\"f61\":6861,\n\t\t\"f62\":6862,\n\t\t\"f63\":6863,\n\t\t\"f64\":6864,\n\t\t\"f65\":6865,\n\t\t\"f66\":6866,\n\t\t\"f67\":6867,\n\t\t\"f68\":6868,\n\t\t\"f69\":6869,\n\t\t\"f70\":6870,\n\t\t\"f71\":6871,\n\t\t\"f72\":6872,\n\t\t\"f73\":6873,\n\t\t\"f74\":6874,\n\t\t\"f75\":6875,\n\t\t\"f76\":6876,\n\t\t\"f77\":6877,\n\t\t\"f78\":6878,\n\t\t\"f79\":6879,\n\t\t\"f80\":6880,\n\t\t\"f81\":6881,\n\t\t\"f82\":6882,\n\t\t\"f83\":6883,\n\t\t\"f84\":6884,\n\t\t\"f85\":6885,\n\t\t\"f86\":6886,\n\t\t\"f87\":6887,\n\t\t\"f88\":6888,\n\t\t\"f89\":6889,\n\t\t\"f90\":6890,\n\t\t\"f91\":6891,\n\t\t\"f92\":6892,\n\t\t\"f93\":6893,\n\t\t\"f94\":6894,\n\t\t\"f95\":6895,\n\t\t\"f96\":6896,\n\t\t\"f97\":6897,\n\t\t\"f98\":6898,\n\t\t\"f99\":6899\n\t},\n\t{\n\t\t\"f0\":6900,\n\t\t\"f1\":6901,\n\t\t\"f2\":6902,\n\t\t\"f3\":6903,\n\t\t\"f4\":6904,\n\t\t\"f5\":6905,\n\t\t\"f6\":6906,\n\t\t\"f7\":6907,\n\t\t\"f8\":6908,\n\t\t\"f9\":6909,\n\t\t\"f10\":6910,\n\t\t\"f11\":6911,\n\t\t\"f12\":6912,\n\t\t\"f13\":6913,\n\t\t\"f14\":6914,\n\t\t\"f15\":6915,\n\t\t\"f16\":6916,\n\t\t\"f17\":6917,\n\t\t\"f18\":6918,\n\t\t\"f19\":6919,\n\t\t\"f20\":6920,\n\t\t\"f21\":6921,\n\t\t\"f22\":6922,\n\t\t\"f23\":6923,\n\t\t\"f24\":6924,\n\t\t\"f25\":6925,\n\t\t\"f26\":6926,\n\t\t\"f27\":6927,\n\t\t\"f28\":6928,\n\t\t\"f29\":6929,\n\t\t\"f30\":6930,\n\t\t\"f31\":6931,\n\t\t\"f32\":6932,\n\t\t\"f33\":6933,\n\t\t\"f34\":6934,\n\t\t\"f35\":6935,\n\t\t\"f36\":6936,\n\t\t\"f37\":6937,\n\t\t\"f38\":6938,\n\t\t\"f39\":6939,\n\t\t\"f40\":6940,\n\t\t\"f41\":6941,\n\t\t\"f42\":6942,\n\t\t\"f43\":6943,\n\t\t\"f44\":6944,\n\t\t\"f45\":6945,\n\t\t\"f46\":6946,\n\t\t\"f47\":6947,\n\t\t\"f48\":6948,\n\t\t\"f49\":6949,\n\t\t\"f50\":6950,\n\t\t\"f51\":6951,\n\t\t\"f52\":6952,\n\t\t\"f53\":6953,\n\t\t\"f54\":6954,\n\t\t\"f55\":6955,\n\t\t\"f56\":6956,\n\t\t\"f57\":6957,\n\t\t\"f58\":6958,\n\t\t\"f59\":6959,\n\t\t\"f60\":6960,\n\t\t\"f61\":6961,\n\t\t\"f62\":6962,\n\t\t\"f63\":6963,\n\t\t\"f64\":6964,\n\t\t\"f65\":6965,\n\t\t\"f66\":6966,\n\t\t\"f67\":6967,\n\t\t\"f68\":6968,\n\t\t\"f69\":6969,\n\t\t\"f70\":6970,\n\t\t\"f71\":6971,\n\t\t\"f72\":6972,\n\t\t\"f73\":6973,\n\t\t\"f74\":6974,\n\t\t\"f75\":6975,\n\t\t\"f76\":6976,\n\t\t\"f77\":6977,\n\t\t\"f78\":6978,\n\t\t\"f79\":6979,\n\t\t\"f80\":6980,\n\t\t\"f81\":6981,\n\t\t\"f82\":6982,\n\t\t\"f83\":6983,\n\t\t\"f84\":6984,\n\t\t\"f85\":6985,\n\t\t\"f86\":6986,\n\t\t\"f87\":6987,\n\t\t\"f88\":6988,\n\t\t\"f89\":6989,\n\t\t\"f90\":6990,\n\t\t\"f91\":6991,\n\t\t\"f92\":6992,\n\t\t\"f93\":6993,\n\t\t\"f94\":6994,\n\t\t\"f95\":6995,\n\t\t\"f96\":6996,\n\t\t\"f97\":6997,\n\t\t\"f98\":6998,\n\t\t\"f99\":6999\n\t},\n\t{\n\t\t\"f0\":7000,\n\t\t\"f1\":7001,\n\t\t\"f2\":7002,\n\t\t\"f3\":7003,\n\t\t\"f4\":7004,\n\t\t\"f5\":7005,\n\t\t\"f6\":7006,\n\t\t\"f7\":7007,\n\t\t\"f8\":7008,\n\t\t\"f9\":7009,\n\t\t\"f10\":7010,\n\t\t\"f11\":7011,\n\t\t\"f12\":7012,\n\t\t\"f13\":7013,\n\t\t\"f14\":7014,\n\t\t\"f15\":7015,\n\t\t\"f16\":7016,\n\t\t\"f17\":7017,\n\t\t\"f18\":7018,\n\t\t\"f19\":7019,\n\t\t\"f20\":7020,\n\t\t\"f21\":7021,\n\t\t\"f22\":7022,\n\t\t\"f23\":7023,\n\t\t\"f24\":7024,\n\t\t\"f25\":7025,\n\t\t\"f26\":7026,\n\t\t\"f27\":7027,\n\t\t\"f28\":7028,\n\t\t\"f29\":7029,\n\t\t\"f30\":7030,\n\t\t\"f31\":7031,\n\t\t\"f32\":7032,\n\t\t\"f33\":7033,\n\t\t\"f34\":7034,\n\t\t\"f35\":7035,\n\t\t\"f36\":7036,\n\t\t\"f37\":7037,\n\t\t\"f38\":7038,\n\t\t\"f39\":7039,\n\t\t\"f40\":7040,\n\t\t\"f41\":7041,\n\t\t\"f42\":7042,\n\t\t\"f43\":7043,\n\t\t\"f44\":7044,\n\t\t\"f45\":7045,\n\t\t\"f46\":7046,\n\t\t\"f47\":7047,\n\t\t\"f48\":7048,\n\t\t\"f49\":7049,\n\t\t\"f50\":7050,\n\t\t\"f51\":7051,\n\t\t\"f52\":7052,\n\t\t\"f53\":7053,\n\t\t\"f54\":7054,\n\t\t\"f55\":7055,\n\t\t\"f56\":7056,\n\t\t\"f57\":7057,\n\t\t\"f58\":7058,\n\t\t\"f59\":7059,\n\t\t\"f60\":7060,\n\t\t\"f61\":7061,\n\t\t\"f62\":7062,\n\t\t\"f63\":7063,\n\t\t\"f64\":7064,\n\t\t\"f65\":7065,\n\t\t\"f66\":7066,\n\t\t\"f67\":7067,\n\t\t\"f68\":7068,\n\t\t\"f69\":7069,\n\t\t\"f70\":7070,\n\t\t\"f71\":7071,\n\t\t\"f72\":7072,\n\t\t\"f73\":7073,\n\t\t\"f74\":7074,\n\t\t\"f75\":7075,\n\t\t\"f76\":7076,\n\t\t\"f77\":7077,\n\t\t\"f78\":7078,\n\t\t\"f79\":7079,\n\t\t\"f80\":7080,\n\t\t\"f81\":7081,\n\t\t\"f82\":7082,\n\t\t\"f83\":7083,\n\t\t\"f84\":7084,\n\t\t\"f85\":7085,\n\t\t\"f86\":7086,\n\t\t\"f87\":7087,\n\t\t\"f88\":7088,\n\t\t\"f89\":7089,\n\t\t\"f90\":7090,\n\t\t\"f91\":7091,\n\t\t\"f92\":7092,\n\t\t\"f93\":7093,\n\t\t\"f94\":7094,\n\t\t\"f95\":7095,\n\t\t\"f96\":7096,\n\t\t\"f97\":7097,\n\t\t\"f98\":7098,\n\t\t\"f99\":7099\n\t},\n\t{\n\t\t\"f0\":7100,\n\t\t\"f1\":7101,\n\t\t\"f2\":7102,\n\t\t\"f3\":7103,\n\t\t\"f4\":7104,\n\t\t\"f5\":7105,\n\t\t\"f6\":7106,\n\t\t\"f7\":7107,\n\t\t\"f8\":7108,\n\t\t\"f9\":7109,\n\t\t\"f10\":7110,\n\t\t\"f11\":7111,\n\t\t\"f12\":7112,\n\t\t\"f13\":7113,\n\t\t\"f14\":7114,\n\t\t\"f15\":7115,\n\t\t\"f16\":7116,\n\t\t\"f17\":7117,\n\t\t\"f18\":7118,\n\t\t\"f19\":7119,\n\t\t\"f20\":7120,\n\t\t\"f21\":7121,\n\t\t\"f22\":7122,\n\t\t\"f23\":7123,\n\t\t\"f24\":7124,\n\t\t\"f25\":7125,\n\t\t\"f26\":7126,\n\t\t\"f27\":7127,\n\t\t\"f28\":7128,\n\t\t\"f29\":7129,\n\t\t\"f30\":7130,\n\t\t\"f31\":7131,\n\t\t\"f32\":7132,\n\t\t\"f33\":7133,\n\t\t\"f34\":7134,\n\t\t\"f35\":7135,\n\t\t\"f36\":7136,\n\t\t\"f37\":7137,\n\t\t\"f38\":7138,\n\t\t\"f39\":7139,\n\t\t\"f40\":7140,\n\t\t\"f41\":7141,\n\t\t\"f42\":7142,\n\t\t\"f43\":7143,\n\t\t\"f44\":7144,\n\t\t\"f45\":7145,\n\t\t\"f46\":7146,\n\t\t\"f47\":7147,\n\t\t\"f48\":7148,\n\t\t\"f49\":7149,\n\t\t\"f50\":7150,\n\t\t\"f51\":7151,\n\t\t\"f52\":7152,\n\t\t\"f53\":7153,\n\t\t\"f54\":7154,\n\t\t\"f55\":7155,\n\t\t\"f56\":7156,\n\t\t\"f57\":7157,\n\t\t\"f58\":7158,\n\t\t\"f59\":7159,\n\t\t\"f60\":7160,\n\t\t\"f61\":7161,\n\t\t\"f62\":7162,\n\t\t\"f63\":7163,\n\t\t\"f64\":7164,\n\t\t\"f65\":7165,\n\t\t\"f66\":7166,\n\t\t\"f67\":7167,\n\t\t\"f68\":7168,\n\t\t\"f69\":7169,\n\t\t\"f70\":7170,\n\t\t\"f71\":7171,\n\t\t\"f72\":7172,\n\t\t\"f73\":7173,\n\t\t\"f74\":7174,\n\t\t\"f75\":7175,\n\t\t\"f76\":7176,\n\t\t\"f77\":7177,\n\t\t\"f78\":7178,\n\t\t\"f79\":7179,\n\t\t\"f80\":7180,\n\t\t\"f81\":7181,\n\t\t\"f82\":7182,\n\t\t\"f83\":7183,\n\t\t\"f84\":7184,\n\t\t\"f85\":7185,\n\t\t\"f86\":7186,\n\t\t\"f87\":7187,\n\t\t\"f88\":7188,\n\t\t\"f89\":7189,\n\t\t\"f90\":7190,\n\t\t\"f91\":7191,\n\t\t\"f92\":7192,\n\t\t\"f93\":7193,\n\t\t\"f94\":7194,\n\t\t\"f95\":7195,\n\t\t\"f96\":7196,\n\t\t\"f97\":7197,\n\t\t\"f98\":7198,\n\t\t\"f99\":7199\n\t},\n\t{\n\t\t\"f0\":7200,\n\t\t\"f1\":7201,\n\t\t\"f2\":7202,\n\t\t\"f3\":7203,\n\t\t\"f4\":7204,\n\t\t\"f5\":7205,\n\t\t\"f6\":7206,\n\t\t\"f7\":7207,\n\t\t\"f8\":7208,\n\t\t\"f9\":7209,\n\t\t\"f10\":7210,\n\t\t\"f11\":7211,\n\t\t\"f12\":7212,\n\t\t\"f13\":7213,\n\t\t\"f14\":7214,\n\t\t\"f15\":7215,\n\t\t\"f16\":7216,\n\t\t\"f17\":7217,\n\t\t\"f18\":7218,\n\t\t\"f19\":7219,\n\t\t\"f20\":7220,\n\t\t\"f21\":7221,\n\t\t\"f22\":7222,\n\t\t\"f23\":7223,\n\t\t\"f24\":7224,\n\t\t\"f25\":7225,\n\t\t\"f26\":7226,\n\t\t\"f27\":7227,\n\t\t\"f28\":7228,\n\t\t\"f29\":7229,\n\t\t\"f30\":7230,\n\t\t\"f31\":7231,\n\t\t\"f32\":7232,\n\t\t\"f33\":7233,\n\t\t\"f34\":7234,\n\t\t\"f35\":7235,\n\t\t\"f36\":7236,\n\t\t\"f37\":7237,\n\t\t\"f38\":7238,\n\t\t\"f39\":7239,\n\t\t\"f40\":7240,\n\t\t\"f41\":7241,\n\t\t\"f42\":7242,\n\t\t\"f43\":7243,\n\t\t\"f44\":7244,\n\t\t\"f45\":7245,\n\t\t\"f46\":7246,\n\t\t\"f47\":7247,\n\t\t\"f48\":7248,\n\t\t\"f49\":7249,\n\t\t\"f50\":7250,\n\t\t\"f51\":7251,\n\t\t\"f52\":7252,\n\t\t\"f53\":7253,\n\t\t\"f54\":7254,\n\t\t\"f55\":7255,\n\t\t\"f56\":7256,\n\t\t\"f57\":7257,\n\t\t\"f58\":7258,\n\t\t\"f59\":7259,\n\t\t\"f60\":7260,\n\t\t\"f61\":7261,\n\t\t\"f62\":7262,\n\t\t\"f63\":7263,\n\t\t\"f64\":7264,\n\t\t\"f65\":7265,\n\t\t\"f66\":7266,\n\t\t\"f67\":7267,\n\t\t\"f68\":7268,\n\t\t\"f69\":7269,\n\t\t\"f70\":7270,\n\t\t\"f71\":7271,\n\t\t\"f72\":7272,\n\t\t\"f73\":7273,\n\t\t\"f74\":7274,\n\t\t\"f75\":7275,\n\t\t\"f76\":7276,\n\t\t\"f77\":7277,\n\t\t\"f78\":7278,\n\t\t\"f79\":7279,\n\t\t\"f80\":7280,\n\t\t\"f81\":7281,\n\t\t\"f82\":7282,\n\t\t\"f83\":7283,\n\t\t\"f84\":7284,\n\t\t\"f85\":7285,\n\t\t\"f86\":7286,\n\t\t\"f87\":7287,\n\t\t\"f88\":7288,\n\t\t\"f89\":7289,\n\t\t\"f90\":7290,\n\t\t\"f91\":7291,\n\t\t\"f92\":7292,\n\t\t\"f93\":7293,\n\t\t\"f94\":7294,\n\t\t\"f95\":7295,\n\t\t\"f96\":7296,\n\t\t\"f97\":7297,\n\t\t\"f98\":7298,\n\t\t\"f99\":7299\n\t},\n\t{\n\t\t\"f0\":7300,\n\t\t\"f1\":7301,\n\t\t\"f2\":7302,\n\t\t\"f3\":7303,\n\t\t\"f4\":7304,\n\t\t\"f5\":7305,\n\t\t\"f6\":7306,\n\t\t\"f7\":7307,\n\t\t\"f8\":7308,\n\t\t\"f9\":7309,\n\t\t\"f10\":7310,\n\t\t\"f11\":7311,\n\t\t\"f12\":7312,\n\t\t\"f13\":7313,\n\t\t\"f14\":7314,\n\t\t\"f15\":7315,\n\t\t\"f16\":7316,\n\t\t\"f17\":7317,\n\t\t\"f18\":7318,\n\t\t\"f19\":7319,\n\t\t\"f20\":7320,\n\t\t\"f21\":7321,\n\t\t\"f22\":7322,\n\t\t\"f23\":7323,\n\t\t\"f24\":7324,\n\t\t\"f25\":7325,\n\t\t\"f26\":7326,\n\t\t\"f27\":7327,\n\t\t\"f28\":7328,\n\t\t\"f29\":7329,\n\t\t\"f30\":7330,\n\t\t\"f31\":7331,\n\t\t\"f32\":7332,\n\t\t\"f33\":7333,\n\t\t\"f34\":7334,\n\t\t\"f35\":7335,\n\t\t\"f36\":7336,\n\t\t\"f37\":7337,\n\t\t\"f38\":7338,\n\t\t\"f39\":7339,\n\t\t\"f40\":7340,\n\t\t\"f41\":7341,\n\t\t\"f42\":7342,\n\t\t\"f43\":7343,\n\t\t\"f44\":7344,\n\t\t\"f45\":7345,\n\t\t\"f46\":7346,\n\t\t\"f47\":7347,\n\t\t\"f48\":7348,\n\t\t\"f49\":7349,\n\t\t\"f50\":7350,\n\t\t\"f51\":7351,\n\t\t\"f52\":7352,\n\t\t\"f53\":7353,\n\t\t\"f54\":7354,\n\t\t\"f55\":7355,\n\t\t\"f56\":7356,\n\t\t\"f57\":7357,\n\t\t\"f58\":7358,\n\t\t\"f59\":7359,\n\t\t\"f60\":7360,\n\t\t\"f61\":7361,\n\t\t\"f62\":7362,\n\t\t\"f63\":7363,\n\t\t\"f64\":7364,\n\t\t\"f65\":7365,\n\t\t\"f66\":7366,\n\t\t\"f67\":7367,\n\t\t\"f68\":7368,\n\t\t\"f69\":7369,\n\t\t\"f70\":7370,\n\t\t\"f71\":7371,\n\t\t\"f72\":7372,\n\t\t\"f73\":7373,\n\t\t\"f74\":7374,\n\t\t\"f75\":7375,\n\t\t\"f76\":7376,\n\t\t\"f77\":7377,\n\t\t\"f78\":7378,\n\t\t\"f79\":7379,\n\t\t\"f80\":7380,\n\t\t\"f81\":7381,\n\t\t\"f82\":7382,\n\t\t\"f83\":7383,\n\t\t\"f84\":7384,\n\t\t\"f85\":7385,\n\t\t\"f86\":7386,\n\t\t\"f87\":7387,\n\t\t\"f88\":7388,\n\t\t\"f89\":7389,\n\t\t\"f90\":7390,\n\t\t\"f91\":7391,\n\t\t\"f92\":7392,\n\t\t\"f93\":7393,\n\t\t\"f94\":7394,\n\t\t\"f95\":7395,\n\t\t\"f96\":7396,\n\t\t\"f97\":7397,\n\t\t\"f98\":7398,\n\t\t\"f99\":7399\n\t},\n\t{\n\t\t\"f0\":7400,\n\t\t\"f1\":7401,\n\t\t\"f2\":7402,\n\t\t\"f3\":7403,\n\t\t\"f4\":7404,\n\t\t\"f5\":7405,\n\t\t\"f6\":7406,\n\t\t\"f7\":7407,\n\t\t\"f8\":7408,\n\t\t\"f9\":7409,\n\t\t\"f10\":7410,\n\t\t\"f11\":7411,\n\t\t\"f12\":7412,\n\t\t\"f13\":7413,\n\t\t\"f14\":7414,\n\t\t\"f15\":7415,\n\t\t\"f16\":7416,\n\t\t\"f17\":7417,\n\t\t\"f18\":7418,\n\t\t\"f19\":7419,\n\t\t\"f20\":7420,\n\t\t\"f21\":7421,\n\t\t\"f22\":7422,\n\t\t\"f23\":7423,\n\t\t\"f24\":7424,\n\t\t\"f25\":7425,\n\t\t\"f26\":7426,\n\t\t\"f27\":7427,\n\t\t\"f28\":7428,\n\t\t\"f29\":7429,\n\t\t\"f30\":7430,\n\t\t\"f31\":7431,\n\t\t\"f32\":7432,\n\t\t\"f33\":7433,\n\t\t\"f34\":7434,\n\t\t\"f35\":7435,\n\t\t\"f36\":7436,\n\t\t\"f37\":7437,\n\t\t\"f38\":7438,\n\t\t\"f39\":7439,\n\t\t\"f40\":7440,\n\t\t\"f41\":7441,\n\t\t\"f42\":7442,\n\t\t\"f43\":7443,\n\t\t\"f44\":7444,\n\t\t\"f45\":7445,\n\t\t\"f46\":7446,\n\t\t\"f47\":7447,\n\t\t\"f48\":7448,\n\t\t\"f49\":7449,\n\t\t\"f50\":7450,\n\t\t\"f51\":7451,\n\t\t\"f52\":7452,\n\t\t\"f53\":7453,\n\t\t\"f54\":7454,\n\t\t\"f55\":7455,\n\t\t\"f56\":7456,\n\t\t\"f57\":7457,\n\t\t\"f58\":7458,\n\t\t\"f59\":7459,\n\t\t\"f60\":7460,\n\t\t\"f61\":7461,\n\t\t\"f62\":7462,\n\t\t\"f63\":7463,\n\t\t\"f64\":7464,\n\t\t\"f65\":7465,\n\t\t\"f66\":7466,\n\t\t\"f67\":7467,\n\t\t\"f68\":7468,\n\t\t\"f69\":7469,\n\t\t\"f70\":7470,\n\t\t\"f71\":7471,\n\t\t\"f72\":7472,\n\t\t\"f73\":7473,\n\t\t\"f74\":7474,\n\t\t\"f75\":7475,\n\t\t\"f76\":7476,\n\t\t\"f77\":7477,\n\t\t\"f78\":7478,\n\t\t\"f79\":7479,\n\t\t\"f80\":7480,\n\t\t\"f81\":7481,\n\t\t\"f82\":7482,\n\t\t\"f83\":7483,\n\t\t\"f84\":7484,\n\t\t\"f85\":7485,\n\t\t\"f86\":7486,\n\t\t\"f87\":7487,\n\t\t\"f88\":7488,\n\t\t\"f89\":7489,\n\t\t\"f90\":7490,\n\t\t\"f91\":7491,\n\t\t\"f92\":7492,\n\t\t\"f93\":7493,\n\t\t\"f94\":7494,\n\t\t\"f95\":7495,\n\t\t\"f96\":7496,\n\t\t\"f97\":7497,\n\t\t\"f98\":7498,\n\t\t\"f99\":7499\n\t},\n\t{\n\t\t\"f0\":7500,\n\t\t\"f1\":7501,\n\t\t\"f2\":7502,\n\t\t\"f3\":7503,\n\t\t\"f4\":7504,\n\t\t\"f5\":7505,\n\t\t\"f6\":7506,\n\t\t\"f7\":7507,\n\t\t\"f8\":7508,\n\t\t\"f9\":7509,\n\t\t\"f10\":7510,\n\t\t\"f11\":7511,\n\t\t\"f12\":7512,\n\t\t\"f13\":7513,\n\t\t\"f14\":7514,\n\t\t\"f15\":7515,\n\t\t\"f16\":7516,\n\t\t\"f17\":7517,\n\t\t\"f18\":7518,\n\t\t\"f19\":7519,\n\t\t\"f20\":7520,\n\t\t\"f21\":7521,\n\t\t\"f22\":7522,\n\t\t\"f23\":7523,\n\t\t\"f24\":7524,\n\t\t\"f25\":7525,\n\t\t\"f26\":7526,\n\t\t\"f27\":7527,\n\t\t\"f28\":7528,\n\t\t\"f29\":7529,\n\t\t\"f30\":7530,\n\t\t\"f31\":7531,\n\t\t\"f32\":7532,\n\t\t\"f33\":7533,\n\t\t\"f34\":7534,\n\t\t\"f35\":7535,\n\t\t\"f36\":7536,\n\t\t\"f37\":7537,\n\t\t\"f38\":7538,\n\t\t\"f39\":7539,\n\t\t\"f40\":7540,\n\t\t\"f41\":7541,\n\t\t\"f42\":7542,\n\t\t\"f43\":7543,\n\t\t\"f44\":7544,\n\t\t\"f45\":7545,\n\t\t\"f46\":7546,\n\t\t\"f47\":7547,\n\t\t\"f48\":7548,\n\t\t\"f49\":7549,\n\t\t\"f50\":7550,\n\t\t\"f51\":7551,\n\t\t\"f52\":7552,\n\t\t\"f53\":7553,\n\t\t\"f54\":7554,\n\t\t\"f55\":7555,\n\t\t\"f56\":7556,\n\t\t\"f57\":7557,\n\t\t\"f58\":7558,\n\t\t\"f59\":7559,\n\t\t\"f60\":7560,\n\t\t\"f61\":7561,\n\t\t\"f62\":7562,\n\t\t\"f63\":7563,\n\t\t\"f64\":7564,\n\t\t\"f65\":7565,\n\t\t\"f66\":7566,\n\t\t\"f67\":7567,\n\t\t\"f68\":7568,\n\t\t\"f69\":7569,\n\t\t\"f70\":7570,\n\t\t\"f71\":7571,\n\t\t\"f72\":7572,\n\t\t\"f73\":7573,\n\t\t\"f74\":7574,\n\t\t\"f75\":7575,\n\t\t\"f76\":7576,\n\t\t\"f77\":7577,\n\t\t\"f78\":7578,\n\t\t\"f79\":7579,\n\t\t\"f80\":7580,\n\t\t\"f81\":7581,\n\t\t\"f82\":7582,\n\t\t\"f83\":7583,\n\t\t\"f84\":7584,\n\t\t\"f85\":7585,\n\t\t\"f86\":7586,\n\t\t\"f87\":7587,\n\t\t\"f88\":7588,\n\t\t\"f89\":7589,\n\t\t\"f90\":7590,\n\t\t\"f91\":7591,\n\t\t\"f92\":7592,\n\t\t\"f93\":7593,\n\t\t\"f94\":7594,\n\t\t\"f95\":7595,\n\t\t\"f96\":7596,\n\t\t\"f97\":7597,\n\t\t\"f98\":7598,\n\t\t\"f99\":7599\n\t},\n\t{\n\t\t\"f0\":7600,\n\t\t\"f1\":7601,\n\t\t\"f2\":7602,\n\t\t\"f3\":7603,\n\t\t\"f4\":7604,\n\t\t\"f5\":7605,\n\t\t\"f6\":7606,\n\t\t\"f7\":7607,\n\t\t\"f8\":7608,\n\t\t\"f9\":7609,\n\t\t\"f10\":7610,\n\t\t\"f11\":7611,\n\t\t\"f12\":7612,\n\t\t\"f13\":7613,\n\t\t\"f14\":7614,\n\t\t\"f15\":7615,\n\t\t\"f16\":7616,\n\t\t\"f17\":7617,\n\t\t\"f18\":7618,\n\t\t\"f19\":7619,\n\t\t\"f20\":7620,\n\t\t\"f21\":7621,\n\t\t\"f22\":7622,\n\t\t\"f23\":7623,\n\t\t\"f24\":7624,\n\t\t\"f25\":7625,\n\t\t\"f26\":7626,\n\t\t\"f27\":7627,\n\t\t\"f28\":7628,\n\t\t\"f29\":7629,\n\t\t\"f30\":7630,\n\t\t\"f31\":7631,\n\t\t\"f32\":7632,\n\t\t\"f33\":7633,\n\t\t\"f34\":7634,\n\t\t\"f35\":7635,\n\t\t\"f36\":7636,\n\t\t\"f37\":7637,\n\t\t\"f38\":7638,\n\t\t\"f39\":7639,\n\t\t\"f40\":7640,\n\t\t\"f41\":7641,\n\t\t\"f42\":7642,\n\t\t\"f43\":7643,\n\t\t\"f44\":7644,\n\t\t\"f45\":7645,\n\t\t\"f46\":7646,\n\t\t\"f47\":7647,\n\t\t\"f48\":7648,\n\t\t\"f49\":7649,\n\t\t\"f50\":7650,\n\t\t\"f51\":7651,\n\t\t\"f52\":7652,\n\t\t\"f53\":7653,\n\t\t\"f54\":7654,\n\t\t\"f55\":7655,\n\t\t\"f56\":7656,\n\t\t\"f57\":7657,\n\t\t\"f58\":7658,\n\t\t\"f59\":7659,\n\t\t\"f60\":7660,\n\t\t\"f61\":7661,\n\t\t\"f62\":7662,\n\t\t\"f63\":7663,\n\t\t\"f64\":7664,\n\t\t\"f65\":7665,\n\t\t\"f66\":7666,\n\t\t\"f67\":7667,\n\t\t\"f68\":7668,\n\t\t\"f69\":7669,\n\t\t\"f70\":7670,\n\t\t\"f71\":7671,\n\t\t\"f72\":7672,\n\t\t\"f73\":7673,\n\t\t\"f74\":7674,\n\t\t\"f75\":7675,\n\t\t\"f76\":7676,\n\t\t\"f77\":7677,\n\t\t\"f78\":7678,\n\t\t\"f79\":7679,\n\t\t\"f80\":7680,\n\t\t\"f81\":7681,\n\t\t\"f82\":7682,\n\t\t\"f83\":7683,\n\t\t\"f84\":7684,\n\t\t\"f85\":7685,\n\t\t\"f86\":7686,\n\t\t\"f87\":7687,\n\t\t\"f88\":7688,\n\t\t\"f89\":7689,\n\t\t\"f90\":7690,\n\t\t\"f91\":7691,\n\t\t\"f92\":7692,\n\t\t\"f93\":7693,\n\t\t\"f94\":7694,\n\t\t\"f95\":7695,\n\t\t\"f96\":7696,\n\t\t\"f97\":7697,\n\t\t\"f98\":7698,\n\t\t\"f99\":7699\n\t},\n\t{\n\t\t\"f0\":7700,\n\t\t\"f1\":7701,\n\t\t\"f2\":7702,\n\t\t\"f3\":7703,\n\t\t\"f4\":7704,\n\t\t\"f5\":7705,\n\t\t\"f6\":7706,\n\t\t\"f7\":7707,\n\t\t\"f8\":7708,\n\t\t\"f9\":7709,\n\t\t\"f10\":7710,\n\t\t\"f11\":7711,\n\t\t\"f12\":7712,\n\t\t\"f13\":7713,\n\t\t\"f14\":7714,\n\t\t\"f15\":7715,\n\t\t\"f16\":7716,\n\t\t\"f17\":7717,\n\t\t\"f18\":7718,\n\t\t\"f19\":7719,\n\t\t\"f20\":7720,\n\t\t\"f21\":7721,\n\t\t\"f22\":7722,\n\t\t\"f23\":7723,\n\t\t\"f24\":7724,\n\t\t\"f25\":7725,\n\t\t\"f26\":7726,\n\t\t\"f27\":7727,\n\t\t\"f28\":7728,\n\t\t\"f29\":7729,\n\t\t\"f30\":7730,\n\t\t\"f31\":7731,\n\t\t\"f32\":7732,\n\t\t\"f33\":7733,\n\t\t\"f34\":7734,\n\t\t\"f35\":7735,\n\t\t\"f36\":7736,\n\t\t\"f37\":7737,\n\t\t\"f38\":7738,\n\t\t\"f39\":7739,\n\t\t\"f40\":7740,\n\t\t\"f41\":7741,\n\t\t\"f42\":7742,\n\t\t\"f43\":7743,\n\t\t\"f44\":7744,\n\t\t\"f45\":7745,\n\t\t\"f46\":7746,\n\t\t\"f47\":7747,\n\t\t\"f48\":7748,\n\t\t\"f49\":7749,\n\t\t\"f50\":7750,\n\t\t\"f51\":7751,\n\t\t\"f52\":7752,\n\t\t\"f53\":7753,\n\t\t\"f54\":7754,\n\t\t\"f55\":7755,\n\t\t\"f56\":7756,\n\t\t\"f57\":7757,\n\t\t\"f58\":7758,\n\t\t\"f59\":7759,\n\t\t\"f60\":7760,\n\t\t\"f61\":7761,\n\t\t\"f62\":7762,\n\t\t\"f63\":7763,\n\t\t\"f64\":7764,\n\t\t\"f65\":7765,\n\t\t\"f66\":7766,\n\t\t\"f67\":7767,\n\t\t\"f68\":7768,\n\t\t\"f69\":7769,\n\t\t\"f70\":7770,\n\t\t\"f71\":7771,\n\t\t\"f72\":7772,\n\t\t\"f73\":7773,\n\t\t\"f74\":7774,\n\t\t\"f75\":7775,\n\t\t\"f76\":7776,\n\t\t\"f77\":7777,\n\t\t\"f78\":7778,\n\t\t\"f79\":7779,\n\t\t\"f80\":7780,\n\t\t\"f81\":7781,\n\t\t\"f82\":7782,\n\t\t\"f83\":7783,\n\t\t\"f84\":7784,\n\t\t\"f85\":7785,\n\t\t\"f86\":7786,\n\t\t\"f87\":7787,\n\t\t\"f88\":7788,\n\t\t\"f89\":7789,\n\t\t\"f90\":7790,\n\t\t\"f91\":7791,\n\t\t\"f92\":7792,\n\t\t\"f93\":7793,\n\t\t\"f94\":7794,\n\t\t\"f95\":7795,\n\t\t\"f96\":7796,\n\t\t\"f97\":7797,\n\t\t\"f98\":7798,\n\t\t\"f99\":7799\n\t},\n\t{\n\t\t\"f0\":7800,\n\t\t\"f1\":7801,\n\t\t\"f2\":7802,\n\t\t\"f3\":7803,\n\t\t\"f4\":7804,\n\t\t\"f5\":7805,\n\t\t\"f6\":7806,\n\t\t\"f7\":7807,\n\t\t\"f8\":7808,\n\t\t\"f9\":7809,\n\t\t\"f10\":7810,\n\t\t\"f11\":7811,\n\t\t\"f12\":7812,\n\t\t\"f13\":7813,\n\t\t\"f14\":7814,\n\t\t\"f15\":7815,\n\t\t\"f16\":7816,\n\t\t\"f17\":7817,\n\t\t\"f18\":7818,\n\t\t\"f19\":7819,\n\t\t\"f20\":7820,\n\t\t\"f21\":7821,\n\t\t\"f22\":7822,\n\t\t\"f23\":7823,\n\t\t\"f24\":7824,\n\t\t\"f25\":7825,\n\t\t\"f26\":7826,\n\t\t\"f27\":7827,\n\t\t\"f28\":7828,\n\t\t\"f29\":7829,\n\t\t\"f30\":7830,\n\t\t\"f31\":7831,\n\t\t\"f32\":7832,\n\t\t\"f33\":7833,\n\t\t\"f34\":7834,\n\t\t\"f35\":7835,\n\t\t\"f36\":7836,\n\t\t\"f37\":7837,\n\t\t\"f38\":7838,\n\t\t\"f39\":7839,\n\t\t\"f40\":7840,\n\t\t\"f41\":7841,\n\t\t\"f42\":7842,\n\t\t\"f43\":7843,\n\t\t\"f44\":7844,\n\t\t\"f45\":7845,\n\t\t\"f46\":7846,\n\t\t\"f47\":7847,\n\t\t\"f48\":7848,\n\t\t\"f49\":7849,\n\t\t\"f50\":7850,\n\t\t\"f51\":7851,\n\t\t\"f52\":7852,\n\t\t\"f53\":7853,\n\t\t\"f54\":7854,\n\t\t\"f55\":7855,\n\t\t\"f56\":7856,\n\t\t\"f57\":7857,\n\t\t\"f58\":7858,\n\t\t\"f59\":7859,\n\t\t\"f60\":7860,\n\t\t\"f61\":7861,\n\t\t\"f62\":7862,\n\t\t\"f63\":7863,\n\t\t\"f64\":7864,\n\t\t\"f65\":7865,\n\t\t\"f66\":7866,\n\t\t\"f67\":7867,\n\t\t\"f68\":7868,\n\t\t\"f69\":7869,\n\t\t\"f70\":7870,\n\t\t\"f71\":7871,\n\t\t\"f72\":7872,\n\t\t\"f73\":7873,\n\t\t\"f74\":7874,\n\t\t\"f75\":7875,\n\t\t\"f76\":7876,\n\t\t\"f77\":7877,\n\t\t\"f78\":7878,\n\t\t\"f79\":7879,\n\t\t\"f80\":7880,\n\t\t\"f81\":7881,\n\t\t\"f82\":7882,\n\t\t\"f83\":7883,\n\t\t\"f84\":7884,\n\t\t\"f85\":7885,\n\t\t\"f86\":7886,\n\t\t\"f87\":7887,\n\t\t\"f88\":7888,\n\t\t\"f89\":7889,\n\t\t\"f90\":7890,\n\t\t\"f91\":7891,\n\t\t\"f92\":7892,\n\t\t\"f93\":7893,\n\t\t\"f94\":7894,\n\t\t\"f95\":7895,\n\t\t\"f96\":7896,\n\t\t\"f97\":7897,\n\t\t\"f98\":7898,\n\t\t\"f99\":7899\n\t},\n\t{\n\t\t\"f0\":7900,\n\t\t\"f1\":7901,\n\t\t\"f2\":7902,\n\t\t\"f3\":7903,\n\t\t\"f4\":7904,\n\t\t\"f5\":7905,\n\t\t\"f6\":7906,\n\t\t\"f7\":7907,\n\t\t\"f8\":7908,\n\t\t\"f9\":7909,\n\t\t\"f10\":7910,\n\t\t\"f11\":7911,\n\t\t\"f12\":7912,\n\t\t\"f13\":7913,\n\t\t\"f14\":7914,\n\t\t\"f15\":7915,\n\t\t\"f16\":7916,\n\t\t\"f17\":7917,\n\t\t\"f18\":7918,\n\t\t\"f19\":7919,\n\t\t\"f20\":7920,\n\t\t\"f21\":7921,\n\t\t\"f22\":7922,\n\t\t\"f23\":7923,\n\t\t\"f24\":7924,\n\t\t\"f25\":7925,\n\t\t\"f26\":7926,\n\t\t\"f27\":7927,\n\t\t\"f28\":7928,\n\t\t\"f29\":7929,\n\t\t\"f30\":7930,\n\t\t\"f31\":7931,\n\t\t\"f32\":7932,\n\t\t\"f33\":7933,\n\t\t\"f34\":7934,\n\t\t\"f35\":7935,\n\t\t\"f36\":7936,\n\t\t\"f37\":7937,\n\t\t\"f38\":7938,\n\t\t\"f39\":7939,\n\t\t\"f40\":7940,\n\t\t\"f41\":7941,\n\t\t\"f42\":7942,\n\t\t\"f43\":7943,\n\t\t\"f44\":7944,\n\t\t\"f45\":7945,\n\t\t\"f46\":7946,\n\t\t\"f47\":7947,\n\t\t\"f48\":7948,\n\t\t\"f49\":7949,\n\t\t\"f50\":7950,\n\t\t\"f51\":7951,\n\t\t\"f52\":7952,\n\t\t\"f53\":7953,\n\t\t\"f54\":7954,\n\t\t\"f55\":7955,\n\t\t\"f56\":7956,\n\t\t\"f57\":7957,\n\t\t\"f58\":7958,\n\t\t\"f59\":7959,\n\t\t\"f60\":7960,\n\t\t\"f61\":7961,\n\t\t\"f62\":7962,\n\t\t\"f63\":7963,\n\t\t\"f64\":7964,\n\t\t\"f65\":7965,\n\t\t\"f66\":7966,\n\t\t\"f67\":7967,\n\t\t\"f68\":7968,\n\t\t\"f69\":7969,\n\t\t\"f70\":7970,\n\t\t\"f71\":7971,\n\t\t\"f72\":7972,\n\t\t\"f73\":7973,\n\t\t\"f74\":7974,\n\t\t\"f75\":7975,\n\t\t\"f76\":7976,\n\t\t\"f77\":7977,\n\t\t\"f78\":7978,\n\t\t\"f79\":7979,\n\t\t\"f80\":7980,\n\t\t\"f81\":7981,\n\t\t\"f82\":7982,\n\t\t\"f83\":7983,\n\t\t\"f84\":7984,\n\t\t\"f85\":7985,\n\t\t\"f86\":7986,\n\t\t\"f87\":7987,\n\t\t\"f88\":7988,\n\t\t\"f89\":7989,\n\t\t\"f90\":7990,\n\t\t\"f91\":7991,\n\t\t\"f92\":7992,\n\t\t\"f93\":7993,\n\t\t\"f94\":7994,\n\t\t\"f95\":7995,\n\t\t\"f96\":7996,\n\t\t\"f97\":7997,\n\t\t\"f98\":7998,\n\t\t\"f99\":7999\n\t},\n\t{\n\t\t\"f0\":8000,\n\t\t\"f1\":8001,\n\t\t\"f2\":8002,\n\t\t\"f3\":8003,\n\t\t\"f4\":8004,\n\t\t\"f5\":8005,\n\t\t\"f6\":8006,\n\t\t\"f7\":8007,\n\t\t\"f8\":8008,\n\t\t\"f9\":8009,\n\t\t\"f10\":8010,\n\t\t\"f11\":8011,\n\t\t\"f12\":8012,\n\t\t\"f13\":8013,\n\t\t\"f14\":8014,\n\t\t\"f15\":8015,\n\t\t\"f16\":8016,\n\t\t\"f17\":8017,\n\t\t\"f18\":8018,\n\t\t\"f19\":8019,\n\t\t\"f20\":8020,\n\t\t\"f21\":8021,\n\t\t\"f22\":8022,\n\t\t\"f23\":8023,\n\t\t\"f24\":8024,\n\t\t\"f25\":8025,\n\t\t\"f26\":8026,\n\t\t\"f27\":8027,\n\t\t\"f28\":8028,\n\t\t\"f29\":8029,\n\t\t\"f30\":8030,\n\t\t\"f31\":8031,\n\t\t\"f32\":8032,\n\t\t\"f33\":8033,\n\t\t\"f34\":8034,\n\t\t\"f35\":8035,\n\t\t\"f36\":8036,\n\t\t\"f37\":8037,\n\t\t\"f38\":8038,\n\t\t\"f39\":8039,\n\t\t\"f40\":8040,\n\t\t\"f41\":8041,\n\t\t\"f42\":8042,\n\t\t\"f43\":8043,\n\t\t\"f44\":8044,\n\t\t\"f45\":8045,\n\t\t\"f46\":8046,\n\t\t\"f47\":8047,\n\t\t\"f48\":8048,\n\t\t\"f49\":8049,\n\t\t\"f50\":8050,\n\t\t\"f51\":8051,\n\t\t\"f52\":8052,\n\t\t\"f53\":8053,\n\t\t\"f54\":8054,\n\t\t\"f55\":8055,\n\t\t\"f56\":8056,\n\t\t\"f57\":8057,\n\t\t\"f58\":8058,\n\t\t\"f59\":8059,\n\t\t\"f60\":8060,\n\t\t\"f61\":8061,\n\t\t\"f62\":8062,\n\t\t\"f63\":8063,\n\t\t\"f64\":8064,\n\t\t\"f65\":8065,\n\t\t\"f66\":8066,\n\t\t\"f67\":8067,\n\t\t\"f68\":8068,\n\t\t\"f69\":8069,\n\t\t\"f70\":8070,\n\t\t\"f71\":8071,\n\t\t\"f72\":8072,\n\t\t\"f73\":8073,\n\t\t\"f74\":8074,\n\t\t\"f75\":8075,\n\t\t\"f76\":8076,\n\t\t\"f77\":8077,\n\t\t\"f78\":8078,\n\t\t\"f79\":8079,\n\t\t\"f80\":8080,\n\t\t\"f81\":8081,\n\t\t\"f82\":8082,\n\t\t\"f83\":8083,\n\t\t\"f84\":8084,\n\t\t\"f85\":8085,\n\t\t\"f86\":8086,\n\t\t\"f87\":8087,\n\t\t\"f88\":8088,\n\t\t\"f89\":8089,\n\t\t\"f90\":8090,\n\t\t\"f91\":8091,\n\t\t\"f92\":8092,\n\t\t\"f93\":8093,\n\t\t\"f94\":8094,\n\t\t\"f95\":8095,\n\t\t\"f96\":8096,\n\t\t\"f97\":8097,\n\t\t\"f98\":8098,\n\t\t\"f99\":8099\n\t},\n\t{\n\t\t\"f0\":8100,\n\t\t\"f1\":8101,\n\t\t\"f2\":8102,\n\t\t\"f3\":8103,\n\t\t\"f4\":8104,\n\t\t\"f5\":8105,\n\t\t\"f6\":8106,\n\t\t\"f7\":8107,\n\t\t\"f8\":8108,\n\t\t\"f9\":8109,\n\t\t\"f10\":8110,\n\t\t\"f11\":8111,\n\t\t\"f12\":8112,\n\t\t\"f13\":8113,\n\t\t\"f14\":8114,\n\t\t\"f15\":8115,\n\t\t\"f16\":8116,\n\t\t\"f17\":8117,\n\t\t\"f18\":8118,\n\t\t\"f19\":8119,\n\t\t\"f20\":8120,\n\t\t\"f21\":8121,\n\t\t\"f22\":8122,\n\t\t\"f23\":8123,\n\t\t\"f24\":8124,\n\t\t\"f25\":8125,\n\t\t\"f26\":8126,\n\t\t\"f27\":8127,\n\t\t\"f28\":8128,\n\t\t\"f29\":8129,\n\t\t\"f30\":8130,\n\t\t\"f31\":8131,\n\t\t\"f32\":8132,\n\t\t\"f33\":8133,\n\t\t\"f34\":8134,\n\t\t\"f35\":8135,\n\t\t\"f36\":8136,\n\t\t\"f37\":8137,\n\t\t\"f38\":8138,\n\t\t\"f39\":8139,\n\t\t\"f40\":8140,\n\t\t\"f41\":8141,\n\t\t\"f42\":8142,\n\t\t\"f43\":8143,\n\t\t\"f44\":8144,\n\t\t\"f45\":8145,\n\t\t\"f46\":8146,\n\t\t\"f47\":8147,\n\t\t\"f48\":8148,\n\t\t\"f49\":8149,\n\t\t\"f50\":8150,\n\t\t\"f51\":8151,\n\t\t\"f52\":8152,\n\t\t\"f53\":8153,\n\t\t\"f54\":8154,\n\t\t\"f55\":8155,\n\t\t\"f56\":8156,\n\t\t\"f57\":8157,\n\t\t\"f58\":8158,\n\t\t\"f59\":8159,\n\t\t\"f60\":8160,\n\t\t\"f61\":8161,\n\t\t\"f62\":8162,\n\t\t\"f63\":8163,\n\t\t\"f64\":8164,\n\t\t\"f65\":8165,\n\t\t\"f66\":8166,\n\t\t\"f67\":8167,\n\t\t\"f68\":8168,\n\t\t\"f69\":8169,\n\t\t\"f70\":8170,\n\t\t\"f71\":8171,\n\t\t\"f72\":8172,\n\t\t\"f73\":8173,\n\t\t\"f74\":8174,\n\t\t\"f75\":8175,\n\t\t\"f76\":8176,\n\t\t\"f77\":8177,\n\t\t\"f78\":8178,\n\t\t\"f79\":8179,\n\t\t\"f80\":8180,\n\t\t\"f81\":8181,\n\t\t\"f82\":8182,\n\t\t\"f83\":8183,\n\t\t\"f84\":8184,\n\t\t\"f85\":8185,\n\t\t\"f86\":8186,\n\t\t\"f87\":8187,\n\t\t\"f88\":8188,\n\t\t\"f89\":8189,\n\t\t\"f90\":8190,\n\t\t\"f91\":8191,\n\t\t\"f92\":8192,\n\t\t\"f93\":8193,\n\t\t\"f94\":8194,\n\t\t\"f95\":8195,\n\t\t\"f96\":8196,\n\t\t\"f97\":8197,\n\t\t\"f98\":8198,\n\t\t\"f99\":8199\n\t},\n\t{\n\t\t\"f0\":8200,\n\t\t\"f1\":8201,\n\t\t\"f2\":8202,\n\t\t\"f3\":8203,\n\t\t\"f4\":8204,\n\t\t\"f5\":8205,\n\t\t\"f6\":8206,\n\t\t\"f7\":8207,\n\t\t\"f8\":8208,\n\t\t\"f9\":8209,\n\t\t\"f10\":8210,\n\t\t\"f11\":8211,\n\t\t\"f12\":8212,\n\t\t\"f13\":8213,\n\t\t\"f14\":8214,\n\t\t\"f15\":8215,\n\t\t\"f16\":8216,\n\t\t\"f17\":8217,\n\t\t\"f18\":8218,\n\t\t\"f19\":8219,\n\t\t\"f20\":8220,\n\t\t\"f21\":8221,\n\t\t\"f22\":8222,\n\t\t\"f23\":8223,\n\t\t\"f24\":8224,\n\t\t\"f25\":8225,\n\t\t\"f26\":8226,\n\t\t\"f27\":8227,\n\t\t\"f28\":8228,\n\t\t\"f29\":8229,\n\t\t\"f30\":8230,\n\t\t\"f31\":8231,\n\t\t\"f32\":8232,\n\t\t\"f33\":8233,\n\t\t\"f34\":8234,\n\t\t\"f35\":8235,\n\t\t\"f36\":8236,\n\t\t\"f37\":8237,\n\t\t\"f38\":8238,\n\t\t\"f39\":8239,\n\t\t\"f40\":8240,\n\t\t\"f41\":8241,\n\t\t\"f42\":8242,\n\t\t\"f43\":8243,\n\t\t\"f44\":8244,\n\t\t\"f45\":8245,\n\t\t\"f46\":8246,\n\t\t\"f47\":8247,\n\t\t\"f48\":8248,\n\t\t\"f49\":8249,\n\t\t\"f50\":8250,\n\t\t\"f51\":8251,\n\t\t\"f52\":8252,\n\t\t\"f53\":8253,\n\t\t\"f54\":8254,\n\t\t\"f55\":8255,\n\t\t\"f56\":8256,\n\t\t\"f57\":8257,\n\t\t\"f58\":8258,\n\t\t\"f59\":8259,\n\t\t\"f60\":8260,\n\t\t\"f61\":8261,\n\t\t\"f62\":8262,\n\t\t\"f63\":8263,\n\t\t\"f64\":8264,\n\t\t\"f65\":8265,\n\t\t\"f66\":8266,\n\t\t\"f67\":8267,\n\t\t\"f68\":8268,\n\t\t\"f69\":8269,\n\t\t\"f70\":8270,\n\t\t\"f71\":8271,\n\t\t\"f72\":8272,\n\t\t\"f73\":8273,\n\t\t\"f74\":8274,\n\t\t\"f75\":8275,\n\t\t\"f76\":8276,\n\t\t\"f77\":8277,\n\t\t\"f78\":8278,\n\t\t\"f79\":8279,\n\t\t\"f80\":8280,\n\t\t\"f81\":8281,\n\t\t\"f82\":8282,\n\t\t\"f83\":8283,\n\t\t\"f84\":8284,\n\t\t\"f85\":8285,\n\t\t\"f86\":8286,\n\t\t\"f87\":8287,\n\t\t\"f88\":8288,\n\t\t\"f89\":8289,\n\t\t\"f90\":8290,\n\t\t\"f91\":8291,\n\t\t\"f92\":8292,\n\t\t\"f93\":8293,\n\t\t\"f94\":8294,\n\t\t\"f95\":8295,\n\t\t\"f96\":8296,\n\t\t\"f97\":8297,\n\t\t\"f98\":8298,\n\t\t\"f99\":8299\n\t},\n\t{\n\t\t\"f0\":8300,\n\t\t\"f1\":8301,\n\t\t\"f2\":8302,\n\t\t\"f3\":8303,\n\t\t\"f4\":8304,\n\t\t\"f5\":8305,\n\t\t\"f6\":8306,\n\t\t\"f7\":8307,\n\t\t\"f8\":8308,\n\t\t\"f9\":8309,\n\t\t\"f10\":8310,\n\t\t\"f11\":8311,\n\t\t\"f12\":8312,\n\t\t\"f13\":8313,\n\t\t\"f14\":8314,\n\t\t\"f15\":8315,\n\t\t\"f16\":8316,\n\t\t\"f17\":8317,\n\t\t\"f18\":8318,\n\t\t\"f19\":8319,\n\t\t\"f20\":8320,\n\t\t\"f21\":8321,\n\t\t\"f22\":8322,\n\t\t\"f23\":8323,\n\t\t\"f24\":8324,\n\t\t\"f25\":8325,\n\t\t\"f26\":8326,\n\t\t\"f27\":8327,\n\t\t\"f28\":8328,\n\t\t\"f29\":8329,\n\t\t\"f30\":8330,\n\t\t\"f31\":8331,\n\t\t\"f32\":8332,\n\t\t\"f33\":8333,\n\t\t\"f34\":8334,\n\t\t\"f35\":8335,\n\t\t\"f36\":8336,\n\t\t\"f37\":8337,\n\t\t\"f38\":8338,\n\t\t\"f39\":8339,\n\t\t\"f40\":8340,\n\t\t\"f41\":8341,\n\t\t\"f42\":8342,\n\t\t\"f43\":8343,\n\t\t\"f44\":8344,\n\t\t\"f45\":8345,\n\t\t\"f46\":8346,\n\t\t\"f47\":8347,\n\t\t\"f48\":8348,\n\t\t\"f49\":8349,\n\t\t\"f50\":8350,\n\t\t\"f51\":8351,\n\t\t\"f52\":8352,\n\t\t\"f53\":8353,\n\t\t\"f54\":8354,\n\t\t\"f55\":8355,\n\t\t\"f56\":8356,\n\t\t\"f57\":8357,\n\t\t\"f58\":8358,\n\t\t\"f59\":8359,\n\t\t\"f60\":8360,\n\t\t\"f61\":8361,\n\t\t\"f62\":8362,\n\t\t\"f63\":8363,\n\t\t\"f64\":8364,\n\t\t\"f65\":8365,\n\t\t\"f66\":8366,\n\t\t\"f67\":8367,\n\t\t\"f68\":8368,\n\t\t\"f69\":8369,\n\t\t\"f70\":8370,\n\t\t\"f71\":8371,\n\t\t\"f72\":8372,\n\t\t\"f73\":8373,\n\t\t\"f74\":8374,\n\t\t\"f75\":8375,\n\t\t\"f76\":8376,\n\t\t\"f77\":8377,\n\t\t\"f78\":8378,\n\t\t\"f79\":8379,\n\t\t\"f80\":8380,\n\t\t\"f81\":8381,\n\t\t\"f82\":8382,\n\t\t\"f83\":8383,\n\t\t\"f84\":8384,\n\t\t\"f85\":8385,\n\t\t\"f86\":8386,\n\t\t\"f87\":8387,\n\t\t\"f88\":8388,\n\t\t\"f89\":8389,\n\t\t\"f90\":8390,\n\t\t\"f91\":8391,\n\t\t\"f92\":8392,\n\t\t\"f93\":8393,\n\t\t\"f94\":8394,\n\t\t\"f95\":8395,\n\t\t\"f96\":8396,\n\t\t\"f97\":8397,\n\t\t\"f98\":8398,\n\t\t\"f99\":8399\n\t},\n\t{\n\t\t\"f0\":8400,\n\t\t\"f1\":8401,\n\t\t\"f2\":8402,\n\t\t\"f3\":8403,\n\t\t\"f4\":8404,\n\t\t\"f5\":8405,\n\t\t\"f6\":8406,\n\t\t\"f7\":8407,\n\t\t\"f8\":8408,\n\t\t\"f9\":8409,\n\t\t\"f10\":8410,\n\t\t\"f11\":8411,\n\t\t\"f12\":8412,\n\t\t\"f13\":8413,\n\t\t\"f14\":8414,\n\t\t\"f15\":8415,\n\t\t\"f16\":8416,\n\t\t\"f17\":8417,\n\t\t\"f18\":8418,\n\t\t\"f19\":8419,\n\t\t\"f20\":8420,\n\t\t\"f21\":8421,\n\t\t\"f22\":8422,\n\t\t\"f23\":8423,\n\t\t\"f24\":8424,\n\t\t\"f25\":8425,\n\t\t\"f26\":8426,\n\t\t\"f27\":8427,\n\t\t\"f28\":8428,\n\t\t\"f29\":8429,\n\t\t\"f30\":8430,\n\t\t\"f31\":8431,\n\t\t\"f32\":8432,\n\t\t\"f33\":8433,\n\t\t\"f34\":8434,\n\t\t\"f35\":8435,\n\t\t\"f36\":8436,\n\t\t\"f37\":8437,\n\t\t\"f38\":8438,\n\t\t\"f39\":8439,\n\t\t\"f40\":8440,\n\t\t\"f41\":8441,\n\t\t\"f42\":8442,\n\t\t\"f43\":8443,\n\t\t\"f44\":8444,\n\t\t\"f45\":8445,\n\t\t\"f46\":8446,\n\t\t\"f47\":8447,\n\t\t\"f48\":8448,\n\t\t\"f49\":8449,\n\t\t\"f50\":8450,\n\t\t\"f51\":8451,\n\t\t\"f52\":8452,\n\t\t\"f53\":8453,\n\t\t\"f54\":8454,\n\t\t\"f55\":8455,\n\t\t\"f56\":8456,\n\t\t\"f57\":8457,\n\t\t\"f58\":8458,\n\t\t\"f59\":8459,\n\t\t\"f60\":8460,\n\t\t\"f61\":8461,\n\t\t\"f62\":8462,\n\t\t\"f63\":8463,\n\t\t\"f64\":8464,\n\t\t\"f65\":8465,\n\t\t\"f66\":8466,\n\t\t\"f67\":8467,\n\t\t\"f68\":8468,\n\t\t\"f69\":8469,\n\t\t\"f70\":8470,\n\t\t\"f71\":8471,\n\t\t\"f72\":8472,\n\t\t\"f73\":8473,\n\t\t\"f74\":8474,\n\t\t\"f75\":8475,\n\t\t\"f76\":8476,\n\t\t\"f77\":8477,\n\t\t\"f78\":8478,\n\t\t\"f79\":8479,\n\t\t\"f80\":8480,\n\t\t\"f81\":8481,\n\t\t\"f82\":8482,\n\t\t\"f83\":8483,\n\t\t\"f84\":8484,\n\t\t\"f85\":8485,\n\t\t\"f86\":8486,\n\t\t\"f87\":8487,\n\t\t\"f88\":8488,\n\t\t\"f89\":8489,\n\t\t\"f90\":8490,\n\t\t\"f91\":8491,\n\t\t\"f92\":8492,\n\t\t\"f93\":8493,\n\t\t\"f94\":8494,\n\t\t\"f95\":8495,\n\t\t\"f96\":8496,\n\t\t\"f97\":8497,\n\t\t\"f98\":8498,\n\t\t\"f99\":8499\n\t},\n\t{\n\t\t\"f0\":8500,\n\t\t\"f1\":8501,\n\t\t\"f2\":8502,\n\t\t\"f3\":8503,\n\t\t\"f4\":8504,\n\t\t\"f5\":8505,\n\t\t\"f6\":8506,\n\t\t\"f7\":8507,\n\t\t\"f8\":8508,\n\t\t\"f9\":8509,\n\t\t\"f10\":8510,\n\t\t\"f11\":8511,\n\t\t\"f12\":8512,\n\t\t\"f13\":8513,\n\t\t\"f14\":8514,\n\t\t\"f15\":8515,\n\t\t\"f16\":8516,\n\t\t\"f17\":8517,\n\t\t\"f18\":8518,\n\t\t\"f19\":8519,\n\t\t\"f20\":8520,\n\t\t\"f21\":8521,\n\t\t\"f22\":8522,\n\t\t\"f23\":8523,\n\t\t\"f24\":8524,\n\t\t\"f25\":8525,\n\t\t\"f26\":8526,\n\t\t\"f27\":8527,\n\t\t\"f28\":8528,\n\t\t\"f29\":8529,\n\t\t\"f30\":8530,\n\t\t\"f31\":8531,\n\t\t\"f32\":8532,\n\t\t\"f33\":8533,\n\t\t\"f34\":8534,\n\t\t\"f35\":8535,\n\t\t\"f36\":8536,\n\t\t\"f37\":8537,\n\t\t\"f38\":8538,\n\t\t\"f39\":8539,\n\t\t\"f40\":8540,\n\t\t\"f41\":8541,\n\t\t\"f42\":8542,\n\t\t\"f43\":8543,\n\t\t\"f44\":8544,\n\t\t\"f45\":8545,\n\t\t\"f46\":8546,\n\t\t\"f47\":8547,\n\t\t\"f48\":8548,\n\t\t\"f49\":8549,\n\t\t\"f50\":8550,\n\t\t\"f51\":8551,\n\t\t\"f52\":8552,\n\t\t\"f53\":8553,\n\t\t\"f54\":8554,\n\t\t\"f55\":8555,\n\t\t\"f56\":8556,\n\t\t\"f57\":8557,\n\t\t\"f58\":8558,\n\t\t\"f59\":8559,\n\t\t\"f60\":8560,\n\t\t\"f61\":8561,\n\t\t\"f62\":8562,\n\t\t\"f63\":8563,\n\t\t\"f64\":8564,\n\t\t\"f65\":8565,\n\t\t\"f66\":8566,\n\t\t\"f67\":8567,\n\t\t\"f68\":8568,\n\t\t\"f69\":8569,\n\t\t\"f70\":8570,\n\t\t\"f71\":8571,\n\t\t\"f72\":8572,\n\t\t\"f73\":8573,\n\t\t\"f74\":8574,\n\t\t\"f75\":8575,\n\t\t\"f76\":8576,\n\t\t\"f77\":8577,\n\t\t\"f78\":8578,\n\t\t\"f79\":8579,\n\t\t\"f80\":8580,\n\t\t\"f81\":8581,\n\t\t\"f82\":8582,\n\t\t\"f83\":8583,\n\t\t\"f84\":8584,\n\t\t\"f85\":8585,\n\t\t\"f86\":8586,\n\t\t\"f87\":8587,\n\t\t\"f88\":8588,\n\t\t\"f89\":8589,\n\t\t\"f90\":8590,\n\t\t\"f91\":8591,\n\t\t\"f92\":8592,\n\t\t\"f93\":8593,\n\t\t\"f94\":8594,\n\t\t\"f95\":8595,\n\t\t\"f96\":8596,\n\t\t\"f97\":8597,\n\t\t\"f98\":8598,\n\t\t\"f99\":8599\n\t},\n\t{\n\t\t\"f0\":8600,\n\t\t\"f1\":8601,\n\t\t\"f2\":8602,\n\t\t\"f3\":8603,\n\t\t\"f4\":8604,\n\t\t\"f5\":8605,\n\t\t\"f6\":8606,\n\t\t\"f7\":8607,\n\t\t\"f8\":8608,\n\t\t\"f9\":8609,\n\t\t\"f10\":8610,\n\t\t\"f11\":8611,\n\t\t\"f12\":8612,\n\t\t\"f13\":8613,\n\t\t\"f14\":8614,\n\t\t\"f15\":8615,\n\t\t\"f16\":8616,\n\t\t\"f17\":8617,\n\t\t\"f18\":8618,\n\t\t\"f19\":8619,\n\t\t\"f20\":8620,\n\t\t\"f21\":8621,\n\t\t\"f22\":8622,\n\t\t\"f23\":8623,\n\t\t\"f24\":8624,\n\t\t\"f25\":8625,\n\t\t\"f26\":8626,\n\t\t\"f27\":8627,\n\t\t\"f28\":8628,\n\t\t\"f29\":8629,\n\t\t\"f30\":8630,\n\t\t\"f31\":8631,\n\t\t\"f32\":8632,\n\t\t\"f33\":8633,\n\t\t\"f34\":8634,\n\t\t\"f35\":8635,\n\t\t\"f36\":8636,\n\t\t\"f37\":8637,\n\t\t\"f38\":8638,\n\t\t\"f39\":8639,\n\t\t\"f40\":8640,\n\t\t\"f41\":8641,\n\t\t\"f42\":8642,\n\t\t\"f43\":8643,\n\t\t\"f44\":8644,\n\t\t\"f45\":8645,\n\t\t\"f46\":8646,\n\t\t\"f47\":8647,\n\t\t\"f48\":8648,\n\t\t\"f49\":8649,\n\t\t\"f50\":8650,\n\t\t\"f51\":8651,\n\t\t\"f52\":8652,\n\t\t\"f53\":8653,\n\t\t\"f54\":8654,\n\t\t\"f55\":8655,\n\t\t\"f56\":8656,\n\t\t\"f57\":8657,\n\t\t\"f58\":8658,\n\t\t\"f59\":8659,\n\t\t\"f60\":8660,\n\t\t\"f61\":8661,\n\t\t\"f62\":8662,\n\t\t\"f63\":8663,\n\t\t\"f64\":8664,\n\t\t\"f65\":8665,\n\t\t\"f66\":8666,\n\t\t\"f67\":8667,\n\t\t\"f68\":8668,\n\t\t\"f69\":8669,\n\t\t\"f70\":8670,\n\t\t\"f71\":8671,\n\t\t\"f72\":8672,\n\t\t\"f73\":8673,\n\t\t\"f74\":8674,\n\t\t\"f75\":8675,\n\t\t\"f76\":8676,\n\t\t\"f77\":8677,\n\t\t\"f78\":8678,\n\t\t\"f79\":8679,\n\t\t\"f80\":8680,\n\t\t\"f81\":8681,\n\t\t\"f82\":8682,\n\t\t\"f83\":8683,\n\t\t\"f84\":8684,\n\t\t\"f85\":8685,\n\t\t\"f86\":8686,\n\t\t\"f87\":8687,\n\t\t\"f88\":8688,\n\t\t\"f89\":8689,\n\t\t\"f90\":8690,\n\t\t\"f91\":8691,\n\t\t\"f92\":8692,\n\t\t\"f93\":8693,\n\t\t\"f94\":8694,\n\t\t\"f95\":8695,\n\t\t\"f96\":8696,\n\t\t\"f97\":8697,\n\t\t\"f98\":8698,\n\t\t\"f99\":8699\n\t},\n\t{\n\t\t\"f0\":8700,\n\t\t\"f1\":8701,\n\t\t\"f2\":8702,\n\t\t\"f3\":8703,\n\t\t\"f4\":8704,\n\t\t\"f5\":8705,\n\t\t\"f6\":8706,\n\t\t\"f7\":8707,\n\t\t\"f8\":8708,\n\t\t\"f9\":8709,\n\t\t\"f10\":8710,\n\t\t\"f11\":8711,\n\t\t\"f12\":8712,\n\t\t\"f13\":8713,\n\t\t\"f14\":8714,\n\t\t\"f15\":8715,\n\t\t\"f16\":8716,\n\t\t\"f17\":8717,\n\t\t\"f18\":8718,\n\t\t\"f19\":8719,\n\t\t\"f20\":8720,\n\t\t\"f21\":8721,\n\t\t\"f22\":8722,\n\t\t\"f23\":8723,\n\t\t\"f24\":8724,\n\t\t\"f25\":8725,\n\t\t\"f26\":8726,\n\t\t\"f27\":8727,\n\t\t\"f28\":8728,\n\t\t\"f29\":8729,\n\t\t\"f30\":8730,\n\t\t\"f31\":8731,\n\t\t\"f32\":8732,\n\t\t\"f33\":8733,\n\t\t\"f34\":8734,\n\t\t\"f35\":8735,\n\t\t\"f36\":8736,\n\t\t\"f37\":8737,\n\t\t\"f38\":8738,\n\t\t\"f39\":8739,\n\t\t\"f40\":8740,\n\t\t\"f41\":8741,\n\t\t\"f42\":8742,\n\t\t\"f43\":8743,\n\t\t\"f44\":8744,\n\t\t\"f45\":8745,\n\t\t\"f46\":8746,\n\t\t\"f47\":8747,\n\t\t\"f48\":8748,\n\t\t\"f49\":8749,\n\t\t\"f50\":8750,\n\t\t\"f51\":8751,\n\t\t\"f52\":8752,\n\t\t\"f53\":8753,\n\t\t\"f54\":8754,\n\t\t\"f55\":8755,\n\t\t\"f56\":8756,\n\t\t\"f57\":8757,\n\t\t\"f58\":8758,\n\t\t\"f59\":8759,\n\t\t\"f60\":8760,\n\t\t\"f61\":8761,\n\t\t\"f62\":8762,\n\t\t\"f63\":8763,\n\t\t\"f64\":8764,\n\t\t\"f65\":8765,\n\t\t\"f66\":8766,\n\t\t\"f67\":8767,\n\t\t\"f68\":8768,\n\t\t\"f69\":8769,\n\t\t\"f70\":8770,\n\t\t\"f71\":8771,\n\t\t\"f72\":8772,\n\t\t\"f73\":8773,\n\t\t\"f74\":8774,\n\t\t\"f75\":8775,\n\t\t\"f76\":8776,\n\t\t\"f77\":8777,\n\t\t\"f78\":8778,\n\t\t\"f79\":8779,\n\t\t\"f80\":8780,\n\t\t\"f81\":8781,\n\t\t\"f82\":8782,\n\t\t\"f83\":8783,\n\t\t\"f84\":8784,\n\t\t\"f85\":8785,\n\t\t\"f86\":8786,\n\t\t\"f87\":8787,\n\t\t\"f88\":8788,\n\t\t\"f89\":8789,\n\t\t\"f90\":8790,\n\t\t\"f91\":8791,\n\t\t\"f92\":8792,\n\t\t\"f93\":8793,\n\t\t\"f94\":8794,\n\t\t\"f95\":8795,\n\t\t\"f96\":8796,\n\t\t\"f97\":8797,\n\t\t\"f98\":8798,\n\t\t\"f99\":8799\n\t},\n\t{\n\t\t\"f0\":8800,\n\t\t\"f1\":8801,\n\t\t\"f2\":8802,\n\t\t\"f3\":8803,\n\t\t\"f4\":8804,\n\t\t\"f5\":8805,\n\t\t\"f6\":8806,\n\t\t\"f7\":8807,\n\t\t\"f8\":8808,\n\t\t\"f9\":8809,\n\t\t\"f10\":8810,\n\t\t\"f11\":8811,\n\t\t\"f12\":8812,\n\t\t\"f13\":8813,\n\t\t\"f14\":8814,\n\t\t\"f15\":8815,\n\t\t\"f16\":8816,\n\t\t\"f17\":8817,\n\t\t\"f18\":8818,\n\t\t\"f19\":8819,\n\t\t\"f20\":8820,\n\t\t\"f21\":8821,\n\t\t\"f22\":8822,\n\t\t\"f23\":8823,\n\t\t\"f24\":8824,\n\t\t\"f25\":8825,\n\t\t\"f26\":8826,\n\t\t\"f27\":8827,\n\t\t\"f28\":8828,\n\t\t\"f29\":8829,\n\t\t\"f30\":8830,\n\t\t\"f31\":8831,\n\t\t\"f32\":8832,\n\t\t\"f33\":8833,\n\t\t\"f34\":8834,\n\t\t\"f35\":8835,\n\t\t\"f36\":8836,\n\t\t\"f37\":8837,\n\t\t\"f38\":8838,\n\t\t\"f39\":8839,\n\t\t\"f40\":8840,\n\t\t\"f41\":8841,\n\t\t\"f42\":8842,\n\t\t\"f43\":8843,\n\t\t\"f44\":8844,\n\t\t\"f45\":8845,\n\t\t\"f46\":8846,\n\t\t\"f47\":8847,\n\t\t\"f48\":8848,\n\t\t\"f49\":8849,\n\t\t\"f50\":8850,\n\t\t\"f51\":8851,\n\t\t\"f52\":8852,\n\t\t\"f53\":8853,\n\t\t\"f54\":8854,\n\t\t\"f55\":8855,\n\t\t\"f56\":8856,\n\t\t\"f57\":8857,\n\t\t\"f58\":8858,\n\t\t\"f59\":8859,\n\t\t\"f60\":8860,\n\t\t\"f61\":8861,\n\t\t\"f62\":8862,\n\t\t\"f63\":8863,\n\t\t\"f64\":8864,\n\t\t\"f65\":8865,\n\t\t\"f66\":8866,\n\t\t\"f67\":8867,\n\t\t\"f68\":8868,\n\t\t\"f69\":8869,\n\t\t\"f70\":8870,\n\t\t\"f71\":8871,\n\t\t\"f72\":8872,\n\t\t\"f73\":8873,\n\t\t\"f74\":8874,\n\t\t\"f75\":8875,\n\t\t\"f76\":8876,\n\t\t\"f77\":8877,\n\t\t\"f78\":8878,\n\t\t\"f79\":8879,\n\t\t\"f80\":8880,\n\t\t\"f81\":8881,\n\t\t\"f82\":8882,\n\t\t\"f83\":8883,\n\t\t\"f84\":8884,\n\t\t\"f85\":8885,\n\t\t\"f86\":8886,\n\t\t\"f87\":8887,\n\t\t\"f88\":8888,\n\t\t\"f89\":8889,\n\t\t\"f90\":8890,\n\t\t\"f91\":8891,\n\t\t\"f92\":8892,\n\t\t\"f93\":8893,\n\t\t\"f94\":8894,\n\t\t\"f95\":8895,\n\t\t\"f96\":8896,\n\t\t\"f97\":8897,\n\t\t\"f98\":8898,\n\t\t\"f99\":8899\n\t},\n\t{\n\t\t\"f0\":8900,\n\t\t\"f1\":8901,\n\t\t\"f2\":8902,\n\t\t\"f3\":8903,\n\t\t\"f4\":8904,\n\t\t\"f5\":8905,\n\t\t\"f6\":8906,\n\t\t\"f7\":8907,\n\t\t\"f8\":8908,\n\t\t\"f9\":8909,\n\t\t\"f10\":8910,\n\t\t\"f11\":8911,\n\t\t\"f12\":8912,\n\t\t\"f13\":8913,\n\t\t\"f14\":8914,\n\t\t\"f15\":8915,\n\t\t\"f16\":8916,\n\t\t\"f17\":8917,\n\t\t\"f18\":8918,\n\t\t\"f19\":8919,\n\t\t\"f20\":8920,\n\t\t\"f21\":8921,\n\t\t\"f22\":8922,\n\t\t\"f23\":8923,\n\t\t\"f24\":8924,\n\t\t\"f25\":8925,\n\t\t\"f26\":8926,\n\t\t\"f27\":8927,\n\t\t\"f28\":8928,\n\t\t\"f29\":8929,\n\t\t\"f30\":8930,\n\t\t\"f31\":8931,\n\t\t\"f32\":8932,\n\t\t\"f33\":8933,\n\t\t\"f34\":8934,\n\t\t\"f35\":8935,\n\t\t\"f36\":8936,\n\t\t\"f37\":8937,\n\t\t\"f38\":8938,\n\t\t\"f39\":8939,\n\t\t\"f40\":8940,\n\t\t\"f41\":8941,\n\t\t\"f42\":8942,\n\t\t\"f43\":8943,\n\t\t\"f44\":8944,\n\t\t\"f45\":8945,\n\t\t\"f46\":8946,\n\t\t\"f47\":8947,\n\t\t\"f48\":8948,\n\t\t\"f49\":8949,\n\t\t\"f50\":8950,\n\t\t\"f51\":8951,\n\t\t\"f52\":8952,\n\t\t\"f53\":8953,\n\t\t\"f54\":8954,\n\t\t\"f55\":8955,\n\t\t\"f56\":8956,\n\t\t\"f57\":8957,\n\t\t\"f58\":8958,\n\t\t\"f59\":8959,\n\t\t\"f60\":8960,\n\t\t\"f61\":8961,\n\t\t\"f62\":8962,\n\t\t\"f63\":8963,\n\t\t\"f64\":8964,\n\t\t\"f65\":8965,\n\t\t\"f66\":8966,\n\t\t\"f67\":8967,\n\t\t\"f68\":8968,\n\t\t\"f69\":8969,\n\t\t\"f70\":8970,\n\t\t\"f71\":8971,\n\t\t\"f72\":8972,\n\t\t\"f73\":8973,\n\t\t\"f74\":8974,\n\t\t\"f75\":8975,\n\t\t\"f76\":8976,\n\t\t\"f77\":8977,\n\t\t\"f78\":8978,\n\t\t\"f79\":8979,\n\t\t\"f80\":8980,\n\t\t\"f81\":8981,\n\t\t\"f82\":8982,\n\t\t\"f83\":8983,\n\t\t\"f84\":8984,\n\t\t\"f85\":8985,\n\t\t\"f86\":8986,\n\t\t\"f87\":8987,\n\t\t\"f88\":8988,\n\t\t\"f89\":8989,\n\t\t\"f90\":8990,\n\t\t\"f91\":8991,\n\t\t\"f92\":8992,\n\t\t\"f93\":8993,\n\t\t\"f94\":8994,\n\t\t\"f95\":8995,\n\t\t\"f96\":8996,\n\t\t\"f97\":8997,\n\t\t\"f98\":8998,\n\t\t\"f99\":8999\n\t},\n\t{\n\t\t\"f0\":9000,\n\t\t\"f1\":9001,\n\t\t\"f2\":9002,\n\t\t\"f3\":9003,\n\t\t\"f4\":9004,\n\t\t\"f5\":9005,\n\t\t\"f6\":9006,\n\t\t\"f7\":9007,\n\t\t\"f8\":9008,\n\t\t\"f9\":9009,\n\t\t\"f10\":9010,\n\t\t\"f11\":9011,\n\t\t\"f12\":9012,\n\t\t\"f13\":9013,\n\t\t\"f14\":9014,\n\t\t\"f15\":9015,\n\t\t\"f16\":9016,\n\t\t\"f17\":9017,\n\t\t\"f18\":9018,\n\t\t\"f19\":9019,\n\t\t\"f20\":9020,\n\t\t\"f21\":9021,\n\t\t\"f22\":9022,\n\t\t\"f23\":9023,\n\t\t\"f24\":9024,\n\t\t\"f25\":9025,\n\t\t\"f26\":9026,\n\t\t\"f27\":9027,\n\t\t\"f28\":9028,\n\t\t\"f29\":9029,\n\t\t\"f30\":9030,\n\t\t\"f31\":9031,\n\t\t\"f32\":9032,\n\t\t\"f33\":9033,\n\t\t\"f34\":9034,\n\t\t\"f35\":9035,\n\t\t\"f36\":9036,\n\t\t\"f37\":9037,\n\t\t\"f38\":9038,\n\t\t\"f39\":9039,\n\t\t\"f40\":9040,\n\t\t\"f41\":9041,\n\t\t\"f42\":9042,\n\t\t\"f43\":9043,\n\t\t\"f44\":9044,\n\t\t\"f45\":9045,\n\t\t\"f46\":9046,\n\t\t\"f47\":9047,\n\t\t\"f48\":9048,\n\t\t\"f49\":9049,\n\t\t\"f50\":9050,\n\t\t\"f51\":9051,\n\t\t\"f52\":9052,\n\t\t\"f53\":9053,\n\t\t\"f54\":9054,\n\t\t\"f55\":9055,\n\t\t\"f56\":9056,\n\t\t\"f57\":9057,\n\t\t\"f58\":9058,\n\t\t\"f59\":9059,\n\t\t\"f60\":9060,\n\t\t\"f61\":9061,\n\t\t\"f62\":9062,\n\t\t\"f63\":9063,\n\t\t\"f64\":9064,\n\t\t\"f65\":9065,\n\t\t\"f66\":9066,\n\t\t\"f67\":9067,\n\t\t\"f68\":9068,\n\t\t\"f69\":9069,\n\t\t\"f70\":9070,\n\t\t\"f71\":9071,\n\t\t\"f72\":9072,\n\t\t\"f73\":9073,\n\t\t\"f74\":9074,\n\t\t\"f75\":9075,\n\t\t\"f76\":9076,\n\t\t\"f77\":9077,\n\t\t\"f78\":9078,\n\t\t\"f79\":9079,\n\t\t\"f80\":9080,\n\t\t\"f81\":9081,\n\t\t\"f82\":9082,\n\t\t\"f83\":9083,\n\t\t\"f84\":9084,\n\t\t\"f85\":9085,\n\t\t\"f86\":9086,\n\t\t\"f87\":9087,\n\t\t\"f88\":9088,\n\t\t\"f89\":9089,\n\t\t\"f90\":9090,\n\t\t\"f91\":9091,\n\t\t\"f92\":9092,\n\t\t\"f93\":9093,\n\t\t\"f94\":9094,\n\t\t\"f95\":9095,\n\t\t\"f96\":9096,\n\t\t\"f97\":9097,\n\t\t\"f98\":9098,\n\t\t\"f99\":9099\n\t},\n\t{\n\t\t\"f0\":9100,\n\t\t\"f1\":9101,\n\t\t\"f2\":9102,\n\t\t\"f3\":9103,\n\t\t\"f4\":9104,\n\t\t\"f5\":9105,\n\t\t\"f6\":9106,\n\t\t\"f7\":9107,\n\t\t\"f8\":9108,\n\t\t\"f9\":9109,\n\t\t\"f10\":9110,\n\t\t\"f11\":9111,\n\t\t\"f12\":9112,\n\t\t\"f13\":9113,\n\t\t\"f14\":9114,\n\t\t\"f15\":9115,\n\t\t\"f16\":9116,\n\t\t\"f17\":9117,\n\t\t\"f18\":9118,\n\t\t\"f19\":9119,\n\t\t\"f20\":9120,\n\t\t\"f21\":9121,\n\t\t\"f22\":9122,\n\t\t\"f23\":9123,\n\t\t\"f24\":9124,\n\t\t\"f25\":9125,\n\t\t\"f26\":9126,\n\t\t\"f27\":9127,\n\t\t\"f28\":9128,\n\t\t\"f29\":9129,\n\t\t\"f30\":9130,\n\t\t\"f31\":9131,\n\t\t\"f32\":9132,\n\t\t\"f33\":9133,\n\t\t\"f34\":9134,\n\t\t\"f35\":9135,\n\t\t\"f36\":9136,\n\t\t\"f37\":9137,\n\t\t\"f38\":9138,\n\t\t\"f39\":9139,\n\t\t\"f40\":9140,\n\t\t\"f41\":9141,\n\t\t\"f42\":9142,\n\t\t\"f43\":9143,\n\t\t\"f44\":9144,\n\t\t\"f45\":9145,\n\t\t\"f46\":9146,\n\t\t\"f47\":9147,\n\t\t\"f48\":9148,\n\t\t\"f49\":9149,\n\t\t\"f50\":9150,\n\t\t\"f51\":9151,\n\t\t\"f52\":9152,\n\t\t\"f53\":9153,\n\t\t\"f54\":9154,\n\t\t\"f55\":9155,\n\t\t\"f56\":9156,\n\t\t\"f57\":9157,\n\t\t\"f58\":9158,\n\t\t\"f59\":9159,\n\t\t\"f60\":9160,\n\t\t\"f61\":9161,\n\t\t\"f62\":9162,\n\t\t\"f63\":9163,\n\t\t\"f64\":9164,\n\t\t\"f65\":9165,\n\t\t\"f66\":9166,\n\t\t\"f67\":9167,\n\t\t\"f68\":9168,\n\t\t\"f69\":9169,\n\t\t\"f70\":9170,\n\t\t\"f71\":9171,\n\t\t\"f72\":9172,\n\t\t\"f73\":9173,\n\t\t\"f74\":9174,\n\t\t\"f75\":9175,\n\t\t\"f76\":9176,\n\t\t\"f77\":9177,\n\t\t\"f78\":9178,\n\t\t\"f79\":9179,\n\t\t\"f80\":9180,\n\t\t\"f81\":9181,\n\t\t\"f82\":9182,\n\t\t\"f83\":9183,\n\t\t\"f84\":9184,\n\t\t\"f85\":9185,\n\t\t\"f86\":9186,\n\t\t\"f87\":9187,\n\t\t\"f88\":9188,\n\t\t\"f89\":9189,\n\t\t\"f90\":9190,\n\t\t\"f91\":9191,\n\t\t\"f92\":9192,\n\t\t\"f93\":9193,\n\t\t\"f94\":9194,\n\t\t\"f95\":9195,\n\t\t\"f96\":9196,\n\t\t\"f97\":9197,\n\t\t\"f98\":9198,\n\t\t\"f99\":9199\n\t},\n\t{\n\t\t\"f0\":9200,\n\t\t\"f1\":9201,\n\t\t\"f2\":9202,\n\t\t\"f3\":9203,\n\t\t\"f4\":9204,\n\t\t\"f5\":9205,\n\t\t\"f6\":9206,\n\t\t\"f7\":9207,\n\t\t\"f8\":9208,\n\t\t\"f9\":9209,\n\t\t\"f10\":9210,\n\t\t\"f11\":9211,\n\t\t\"f12\":9212,\n\t\t\"f13\":9213,\n\t\t\"f14\":9214,\n\t\t\"f15\":9215,\n\t\t\"f16\":9216,\n\t\t\"f17\":9217,\n\t\t\"f18\":9218,\n\t\t\"f19\":9219,\n\t\t\"f20\":9220,\n\t\t\"f21\":9221,\n\t\t\"f22\":9222,\n\t\t\"f23\":9223,\n\t\t\"f24\":9224,\n\t\t\"f25\":9225,\n\t\t\"f26\":9226,\n\t\t\"f27\":9227,\n\t\t\"f28\":9228,\n\t\t\"f29\":9229,\n\t\t\"f30\":9230,\n\t\t\"f31\":9231,\n\t\t\"f32\":9232,\n\t\t\"f33\":9233,\n\t\t\"f34\":9234,\n\t\t\"f35\":9235,\n\t\t\"f36\":9236,\n\t\t\"f37\":9237,\n\t\t\"f38\":9238,\n\t\t\"f39\":9239,\n\t\t\"f40\":9240,\n\t\t\"f41\":9241,\n\t\t\"f42\":9242,\n\t\t\"f43\":9243,\n\t\t\"f44\":9244,\n\t\t\"f45\":9245,\n\t\t\"f46\":9246,\n\t\t\"f47\":9247,\n\t\t\"f48\":9248,\n\t\t\"f49\":9249,\n\t\t\"f50\":9250,\n\t\t\"f51\":9251,\n\t\t\"f52\":9252,\n\t\t\"f53\":9253,\n\t\t\"f54\":9254,\n\t\t\"f55\":9255,\n\t\t\"f56\":9256,\n\t\t\"f57\":9257,\n\t\t\"f58\":9258,\n\t\t\"f59\":9259,\n\t\t\"f60\":9260,\n\t\t\"f61\":9261,\n\t\t\"f62\":9262,\n\t\t\"f63\":9263,\n\t\t\"f64\":9264,\n\t\t\"f65\":9265,\n\t\t\"f66\":9266,\n\t\t\"f67\":9267,\n\t\t\"f68\":9268,\n\t\t\"f69\":9269,\n\t\t\"f70\":9270,\n\t\t\"f71\":9271,\n\t\t\"f72\":9272,\n\t\t\"f73\":9273,\n\t\t\"f74\":9274,\n\t\t\"f75\":9275,\n\t\t\"f76\":9276,\n\t\t\"f77\":9277,\n\t\t\"f78\":9278,\n\t\t\"f79\":9279,\n\t\t\"f80\":9280,\n\t\t\"f81\":9281,\n\t\t\"f82\":9282,\n\t\t\"f83\":9283,\n\t\t\"f84\":9284,\n\t\t\"f85\":9285,\n\t\t\"f86\":9286,\n\t\t\"f87\":9287,\n\t\t\"f88\":9288,\n\t\t\"f89\":9289,\n\t\t\"f90\":9290,\n\t\t\"f91\":9291,\n\t\t\"f92\":9292,\n\t\t\"f93\":9293,\n\t\t\"f94\":9294,\n\t\t\"f95\":9295,\n\t\t\"f96\":9296,\n\t\t\"f97\":9297,\n\t\t\"f98\":9298,\n\t\t\"f99\":9299\n\t},\n\t{\n\t\t\"f0\":9300,\n\t\t\"f1\":9301,\n\t\t\"f2\":9302,\n\t\t\"f3\":9303,\n\t\t\"f4\":9304,\n\t\t\"f5\":9305,\n\t\t\"f6\":9306,\n\t\t\"f7\":9307,\n\t\t\"f8\":9308,\n\t\t\"f9\":9309,\n\t\t\"f10\":9310,\n\t\t\"f11\":9311,\n\t\t\"f12\":9312,\n\t\t\"f13\":9313,\n\t\t\"f14\":9314,\n\t\t\"f15\":9315,\n\t\t\"f16\":9316,\n\t\t\"f17\":9317,\n\t\t\"f18\":9318,\n\t\t\"f19\":9319,\n\t\t\"f20\":9320,\n\t\t\"f21\":9321,\n\t\t\"f22\":9322,\n\t\t\"f23\":9323,\n\t\t\"f24\":9324,\n\t\t\"f25\":9325,\n\t\t\"f26\":9326,\n\t\t\"f27\":9327,\n\t\t\"f28\":9328,\n\t\t\"f29\":9329,\n\t\t\"f30\":9330,\n\t\t\"f31\":9331,\n\t\t\"f32\":9332,\n\t\t\"f33\":9333,\n\t\t\"f34\":9334,\n\t\t\"f35\":9335,\n\t\t\"f36\":9336,\n\t\t\"f37\":9337,\n\t\t\"f38\":9338,\n\t\t\"f39\":9339,\n\t\t\"f40\":9340,\n\t\t\"f41\":9341,\n\t\t\"f42\":9342,\n\t\t\"f43\":9343,\n\t\t\"f44\":9344,\n\t\t\"f45\":9345,\n\t\t\"f46\":9346,\n\t\t\"f47\":9347,\n\t\t\"f48\":9348,\n\t\t\"f49\":9349,\n\t\t\"f50\":9350,\n\t\t\"f51\":9351,\n\t\t\"f52\":9352,\n\t\t\"f53\":9353,\n\t\t\"f54\":9354,\n\t\t\"f55\":9355,\n\t\t\"f56\":9356,\n\t\t\"f57\":9357,\n\t\t\"f58\":9358,\n\t\t\"f59\":9359,\n\t\t\"f60\":9360,\n\t\t\"f61\":9361,\n\t\t\"f62\":9362,\n\t\t\"f63\":9363,\n\t\t\"f64\":9364,\n\t\t\"f65\":9365,\n\t\t\"f66\":9366,\n\t\t\"f67\":9367,\n\t\t\"f68\":9368,\n\t\t\"f69\":9369,\n\t\t\"f70\":9370,\n\t\t\"f71\":9371,\n\t\t\"f72\":9372,\n\t\t\"f73\":9373,\n\t\t\"f74\":9374,\n\t\t\"f75\":9375,\n\t\t\"f76\":9376,\n\t\t\"f77\":9377,\n\t\t\"f78\":9378,\n\t\t\"f79\":9379,\n\t\t\"f80\":9380,\n\t\t\"f81\":9381,\n\t\t\"f82\":9382,\n\t\t\"f83\":9383,\n\t\t\"f84\":9384,\n\t\t\"f85\":9385,\n\t\t\"f86\":9386,\n\t\t\"f87\":9387,\n\t\t\"f88\":9388,\n\t\t\"f89\":9389,\n\t\t\"f90\":9390,\n\t\t\"f91\":9391,\n\t\t\"f92\":9392,\n\t\t\"f93\":9393,\n\t\t\"f94\":9394,\n\t\t\"f95\":9395,\n\t\t\"f96\":9396,\n\t\t\"f97\":9397,\n\t\t\"f98\":9398,\n\t\t\"f99\":9399\n\t},\n\t{\n\t\t\"f0\":9400,\n\t\t\"f1\":9401,\n\t\t\"f2\":9402,\n\t\t\"f3\":9403,\n\t\t\"f4\":9404,\n\t\t\"f5\":9405,\n\t\t\"f6\":9406,\n\t\t\"f7\":9407,\n\t\t\"f8\":9408,\n\t\t\"f9\":9409,\n\t\t\"f10\":9410,\n\t\t\"f11\":9411,\n\t\t\"f12\":9412,\n\t\t\"f13\":9413,\n\t\t\"f14\":9414,\n\t\t\"f15\":9415,\n\t\t\"f16\":9416,\n\t\t\"f17\":9417,\n\t\t\"f18\":9418,\n\t\t\"f19\":9419,\n\t\t\"f20\":9420,\n\t\t\"f21\":9421,\n\t\t\"f22\":9422,\n\t\t\"f23\":9423,\n\t\t\"f24\":9424,\n\t\t\"f25\":9425,\n\t\t\"f26\":9426,\n\t\t\"f27\":9427,\n\t\t\"f28\":9428,\n\t\t\"f29\":9429,\n\t\t\"f30\":9430,\n\t\t\"f31\":9431,\n\t\t\"f32\":9432,\n\t\t\"f33\":9433,\n\t\t\"f34\":9434,\n\t\t\"f35\":9435,\n\t\t\"f36\":9436,\n\t\t\"f37\":9437,\n\t\t\"f38\":9438,\n\t\t\"f39\":9439,\n\t\t\"f40\":9440,\n\t\t\"f41\":9441,\n\t\t\"f42\":9442,\n\t\t\"f43\":9443,\n\t\t\"f44\":9444,\n\t\t\"f45\":9445,\n\t\t\"f46\":9446,\n\t\t\"f47\":9447,\n\t\t\"f48\":9448,\n\t\t\"f49\":9449,\n\t\t\"f50\":9450,\n\t\t\"f51\":9451,\n\t\t\"f52\":9452,\n\t\t\"f53\":9453,\n\t\t\"f54\":9454,\n\t\t\"f55\":9455,\n\t\t\"f56\":9456,\n\t\t\"f57\":9457,\n\t\t\"f58\":9458,\n\t\t\"f59\":9459,\n\t\t\"f60\":9460,\n\t\t\"f61\":9461,\n\t\t\"f62\":9462,\n\t\t\"f63\":9463,\n\t\t\"f64\":9464,\n\t\t\"f65\":9465,\n\t\t\"f66\":9466,\n\t\t\"f67\":9467,\n\t\t\"f68\":9468,\n\t\t\"f69\":9469,\n\t\t\"f70\":9470,\n\t\t\"f71\":9471,\n\t\t\"f72\":9472,\n\t\t\"f73\":9473,\n\t\t\"f74\":9474,\n\t\t\"f75\":9475,\n\t\t\"f76\":9476,\n\t\t\"f77\":9477,\n\t\t\"f78\":9478,\n\t\t\"f79\":9479,\n\t\t\"f80\":9480,\n\t\t\"f81\":9481,\n\t\t\"f82\":9482,\n\t\t\"f83\":9483,\n\t\t\"f84\":9484,\n\t\t\"f85\":9485,\n\t\t\"f86\":9486,\n\t\t\"f87\":9487,\n\t\t\"f88\":9488,\n\t\t\"f89\":9489,\n\t\t\"f90\":9490,\n\t\t\"f91\":9491,\n\t\t\"f92\":9492,\n\t\t\"f93\":9493,\n\t\t\"f94\":9494,\n\t\t\"f95\":9495,\n\t\t\"f96\":9496,\n\t\t\"f97\":9497,\n\t\t\"f98\":9498,\n\t\t\"f99\":9499\n\t},\n\t{\n\t\t\"f0\":9500,\n\t\t\"f1\":9501,\n\t\t\"f2\":9502,\n\t\t\"f3\":9503,\n\t\t\"f4\":9504,\n\t\t\"f5\":9505,\n\t\t\"f6\":9506,\n\t\t\"f7\":9507,\n\t\t\"f8\":9508,\n\t\t\"f9\":9509,\n\t\t\"f10\":9510,\n\t\t\"f11\":9511,\n\t\t\"f12\":9512,\n\t\t\"f13\":9513,\n\t\t\"f14\":9514,\n\t\t\"f15\":9515,\n\t\t\"f16\":9516,\n\t\t\"f17\":9517,\n\t\t\"f18\":9518,\n\t\t\"f19\":9519,\n\t\t\"f20\":9520,\n\t\t\"f21\":9521,\n\t\t\"f22\":9522,\n\t\t\"f23\":9523,\n\t\t\"f24\":9524,\n\t\t\"f25\":9525,\n\t\t\"f26\":9526,\n\t\t\"f27\":9527,\n\t\t\"f28\":9528,\n\t\t\"f29\":9529,\n\t\t\"f30\":9530,\n\t\t\"f31\":9531,\n\t\t\"f32\":9532,\n\t\t\"f33\":9533,\n\t\t\"f34\":9534,\n\t\t\"f35\":9535,\n\t\t\"f36\":9536,\n\t\t\"f37\":9537,\n\t\t\"f38\":9538,\n\t\t\"f39\":9539,\n\t\t\"f40\":9540,\n\t\t\"f41\":9541,\n\t\t\"f42\":9542,\n\t\t\"f43\":9543,\n\t\t\"f44\":9544,\n\t\t\"f45\":9545,\n\t\t\"f46\":9546,\n\t\t\"f47\":9547,\n\t\t\"f48\":9548,\n\t\t\"f49\":9549,\n\t\t\"f50\":9550,\n\t\t\"f51\":9551,\n\t\t\"f52\":9552,\n\t\t\"f53\":9553,\n\t\t\"f54\":9554,\n\t\t\"f55\":9555,\n\t\t\"f56\":9556,\n\t\t\"f57\":9557,\n\t\t\"f58\":9558,\n\t\t\"f59\":9559,\n\t\t\"f60\":9560,\n\t\t\"f61\":9561,\n\t\t\"f62\":9562,\n\t\t\"f63\":9563,\n\t\t\"f64\":9564,\n\t\t\"f65\":9565,\n\t\t\"f66\":9566,\n\t\t\"f67\":9567,\n\t\t\"f68\":9568,\n\t\t\"f69\":9569,\n\t\t\"f70\":9570,\n\t\t\"f71\":9571,\n\t\t\"f72\":9572,\n\t\t\"f73\":9573,\n\t\t\"f74\":9574,\n\t\t\"f75\":9575,\n\t\t\"f76\":9576,\n\t\t\"f77\":9577,\n\t\t\"f78\":9578,\n\t\t\"f79\":9579,\n\t\t\"f80\":9580,\n\t\t\"f81\":9581,\n\t\t\"f82\":9582,\n\t\t\"f83\":9583,\n\t\t\"f84\":9584,\n\t\t\"f85\":9585,\n\t\t\"f86\":9586,\n\t\t\"f87\":9587,\n\t\t\"f88\":9588,\n\t\t\"f89\":9589,\n\t\t\"f90\":9590,\n\t\t\"f91\":9591,\n\t\t\"f92\":9592,\n\t\t\"f93\":9593,\n\t\t\"f94\":9594,\n\t\t\"f95\":9595,\n\t\t\"f96\":9596,\n\t\t\"f97\":9597,\n\t\t\"f98\":9598,\n\t\t\"f99\":9599\n\t},\n\t{\n\t\t\"f0\":9600,\n\t\t\"f1\":9601,\n\t\t\"f2\":9602,\n\t\t\"f3\":9603,\n\t\t\"f4\":9604,\n\t\t\"f5\":9605,\n\t\t\"f6\":9606,\n\t\t\"f7\":9607,\n\t\t\"f8\":9608,\n\t\t\"f9\":9609,\n\t\t\"f10\":9610,\n\t\t\"f11\":9611,\n\t\t\"f12\":9612,\n\t\t\"f13\":9613,\n\t\t\"f14\":9614,\n\t\t\"f15\":9615,\n\t\t\"f16\":9616,\n\t\t\"f17\":9617,\n\t\t\"f18\":9618,\n\t\t\"f19\":9619,\n\t\t\"f20\":9620,\n\t\t\"f21\":9621,\n\t\t\"f22\":9622,\n\t\t\"f23\":9623,\n\t\t\"f24\":9624,\n\t\t\"f25\":9625,\n\t\t\"f26\":9626,\n\t\t\"f27\":9627,\n\t\t\"f28\":9628,\n\t\t\"f29\":9629,\n\t\t\"f30\":9630,\n\t\t\"f31\":9631,\n\t\t\"f32\":9632,\n\t\t\"f33\":9633,\n\t\t\"f34\":9634,\n\t\t\"f35\":9635,\n\t\t\"f36\":9636,\n\t\t\"f37\":9637,\n\t\t\"f38\":9638,\n\t\t\"f39\":9639,\n\t\t\"f40\":9640,\n\t\t\"f41\":9641,\n\t\t\"f42\":9642,\n\t\t\"f43\":9643,\n\t\t\"f44\":9644,\n\t\t\"f45\":9645,\n\t\t\"f46\":9646,\n\t\t\"f47\":9647,\n\t\t\"f48\":9648,\n\t\t\"f49\":9649,\n\t\t\"f50\":9650,\n\t\t\"f51\":9651,\n\t\t\"f52\":9652,\n\t\t\"f53\":9653,\n\t\t\"f54\":9654,\n\t\t\"f55\":9655,\n\t\t\"f56\":9656,\n\t\t\"f57\":9657,\n\t\t\"f58\":9658,\n\t\t\"f59\":9659,\n\t\t\"f60\":9660,\n\t\t\"f61\":9661,\n\t\t\"f62\":9662,\n\t\t\"f63\":9663,\n\t\t\"f64\":9664,\n\t\t\"f65\":9665,\n\t\t\"f66\":9666,\n\t\t\"f67\":9667,\n\t\t\"f68\":9668,\n\t\t\"f69\":9669,\n\t\t\"f70\":9670,\n\t\t\"f71\":9671,\n\t\t\"f72\":9672,\n\t\t\"f73\":9673,\n\t\t\"f74\":9674,\n\t\t\"f75\":9675,\n\t\t\"f76\":9676,\n\t\t\"f77\":9677,\n\t\t\"f78\":9678,\n\t\t\"f79\":9679,\n\t\t\"f80\":9680,\n\t\t\"f81\":9681,\n\t\t\"f82\":9682,\n\t\t\"f83\":9683,\n\t\t\"f84\":9684,\n\t\t\"f85\":9685,\n\t\t\"f86\":9686,\n\t\t\"f87\":9687,\n\t\t\"f88\":9688,\n\t\t\"f89\":9689,\n\t\t\"f90\":9690,\n\t\t\"f91\":9691,\n\t\t\"f92\":9692,\n\t\t\"f93\":9693,\n\t\t\"f94\":9694,\n\t\t\"f95\":9695,\n\t\t\"f96\":9696,\n\t\t\"f97\":9697,\n\t\t\"f98\":9698,\n\t\t\"f99\":9699\n\t},\n\t{\n\t\t\"f0\":9700,\n\t\t\"f1\":9701,\n\t\t\"f2\":9702,\n\t\t\"f3\":9703,\n\t\t\"f4\":9704,\n\t\t\"f5\":9705,\n\t\t\"f6\":9706,\n\t\t\"f7\":9707,\n\t\t\"f8\":9708,\n\t\t\"f9\":9709,\n\t\t\"f10\":9710,\n\t\t\"f11\":9711,\n\t\t\"f12\":9712,\n\t\t\"f13\":9713,\n\t\t\"f14\":9714,\n\t\t\"f15\":9715,\n\t\t\"f16\":9716,\n\t\t\"f17\":9717,\n\t\t\"f18\":9718,\n\t\t\"f19\":9719,\n\t\t\"f20\":9720,\n\t\t\"f21\":9721,\n\t\t\"f22\":9722,\n\t\t\"f23\":9723,\n\t\t\"f24\":9724,\n\t\t\"f25\":9725,\n\t\t\"f26\":9726,\n\t\t\"f27\":9727,\n\t\t\"f28\":9728,\n\t\t\"f29\":9729,\n\t\t\"f30\":9730,\n\t\t\"f31\":9731,\n\t\t\"f32\":9732,\n\t\t\"f33\":9733,\n\t\t\"f34\":9734,\n\t\t\"f35\":9735,\n\t\t\"f36\":9736,\n\t\t\"f37\":9737,\n\t\t\"f38\":9738,\n\t\t\"f39\":9739,\n\t\t\"f40\":9740,\n\t\t\"f41\":9741,\n\t\t\"f42\":9742,\n\t\t\"f43\":9743,\n\t\t\"f44\":9744,\n\t\t\"f45\":9745,\n\t\t\"f46\":9746,\n\t\t\"f47\":9747,\n\t\t\"f48\":9748,\n\t\t\"f49\":9749,\n\t\t\"f50\":9750,\n\t\t\"f51\":9751,\n\t\t\"f52\":9752,\n\t\t\"f53\":9753,\n\t\t\"f54\":9754,\n\t\t\"f55\":9755,\n\t\t\"f56\":9756,\n\t\t\"f57\":9757,\n\t\t\"f58\":9758,\n\t\t\"f59\":9759,\n\t\t\"f60\":9760,\n\t\t\"f61\":9761,\n\t\t\"f62\":9762,\n\t\t\"f63\":9763,\n\t\t\"f64\":9764,\n\t\t\"f65\":9765,\n\t\t\"f66\":9766,\n\t\t\"f67\":9767,\n\t\t\"f68\":9768,\n\t\t\"f69\":9769,\n\t\t\"f70\":9770,\n\t\t\"f71\":9771,\n\t\t\"f72\":9772,\n\t\t\"f73\":9773,\n\t\t\"f74\":9774,\n\t\t\"f75\":9775,\n\t\t\"f76\":9776,\n\t\t\"f77\":9777,\n\t\t\"f78\":9778,\n\t\t\"f79\":9779,\n\t\t\"f80\":9780,\n\t\t\"f81\":9781,\n\t\t\"f82\":9782,\n\t\t\"f83\":9783,\n\t\t\"f84\":9784,\n\t\t\"f85\":9785,\n\t\t\"f86\":9786,\n\t\t\"f87\":9787,\n\t\t\"f88\":9788,\n\t\t\"f89\":9789,\n\t\t\"f90\":9790,\n\t\t\"f91\":9791,\n\t\t\"f92\":9792,\n\t\t\"f93\":9793,\n\t\t\"f94\":9794,\n\t\t\"f95\":9795,\n\t\t\"f96\":9796,\n\t\t\"f97\":9797,\n\t\t\"f98\":9798,\n\t\t\"f99\":9799\n\t},\n\t{\n\t\t\"f0\":9800,\n\t\t\"f1\":9801,\n\t\t\"f2\":9802,\n\t\t\"f3\":9803,\n\t\t\"f4\":9804,\n\t\t\"f5\":9805,\n\t\t\"f6\":9806,\n\t\t\"f7\":9807,\n\t\t\"f8\":9808,\n\t\t\"f9\":9809,\n\t\t\"f10\":9810,\n\t\t\"f11\":9811,\n\t\t\"f12\":9812,\n\t\t\"f13\":9813,\n\t\t\"f14\":9814,\n\t\t\"f15\":9815,\n\t\t\"f16\":9816,\n\t\t\"f17\":9817,\n\t\t\"f18\":9818,\n\t\t\"f19\":9819,\n\t\t\"f20\":9820,\n\t\t\"f21\":9821,\n\t\t\"f22\":9822,\n\t\t\"f23\":9823,\n\t\t\"f24\":9824,\n\t\t\"f25\":9825,\n\t\t\"f26\":9826,\n\t\t\"f27\":9827,\n\t\t\"f28\":9828,\n\t\t\"f29\":9829,\n\t\t\"f30\":9830,\n\t\t\"f31\":9831,\n\t\t\"f32\":9832,\n\t\t\"f33\":9833,\n\t\t\"f34\":9834,\n\t\t\"f35\":9835,\n\t\t\"f36\":9836,\n\t\t\"f37\":9837,\n\t\t\"f38\":9838,\n\t\t\"f39\":9839,\n\t\t\"f40\":9840,\n\t\t\"f41\":9841,\n\t\t\"f42\":9842,\n\t\t\"f43\":9843,\n\t\t\"f44\":9844,\n\t\t\"f45\":9845,\n\t\t\"f46\":9846,\n\t\t\"f47\":9847,\n\t\t\"f48\":9848,\n\t\t\"f49\":9849,\n\t\t\"f50\":9850,\n\t\t\"f51\":9851,\n\t\t\"f52\":9852,\n\t\t\"f53\":9853,\n\t\t\"f54\":9854,\n\t\t\"f55\":9855,\n\t\t\"f56\":9856,\n\t\t\"f57\":9857,\n\t\t\"f58\":9858,\n\t\t\"f59\":9859,\n\t\t\"f60\":9860,\n\t\t\"f61\":9861,\n\t\t\"f62\":9862,\n\t\t\"f63\":9863,\n\t\t\"f64\":9864,\n\t\t\"f65\":9865,\n\t\t\"f66\":9866,\n\t\t\"f67\":9867,\n\t\t\"f68\":9868,\n\t\t\"f69\":9869,\n\t\t\"f70\":9870,\n\t\t\"f71\":9871,\n\t\t\"f72\":9872,\n\t\t\"f73\":9873,\n\t\t\"f74\":9874,\n\t\t\"f75\":9875,\n\t\t\"f76\":9876,\n\t\t\"f77\":9877,\n\t\t\"f78\":9878,\n\t\t\"f79\":9879,\n\t\t\"f80\":9880,\n\t\t\"f81\":9881,\n\t\t\"f82\":9882,\n\t\t\"f83\":9883,\n\t\t\"f84\":9884,\n\t\t\"f85\":9885,\n\t\t\"f86\":9886,\n\t\t\"f87\":9887,\n\t\t\"f88\":9888,\n\t\t\"f89\":9889,\n\t\t\"f90\":9890,\n\t\t\"f91\":9891,\n\t\t\"f92\":9892,\n\t\t\"f93\":9893,\n\t\t\"f94\":9894,\n\t\t\"f95\":9895,\n\t\t\"f96\":9896,\n\t\t\"f97\":9897,\n\t\t\"f98\":9898,\n\t\t\"f99\":9899\n\t},\n\t{\n\t\t\"f0\":9900,\n\t\t\"f1\":9901,\n\t\t\"f2\":9902,\n\t\t\"f3\":9903,\n\t\t\"f4\":9904,\n\t\t\"f5\":9905,\n\t\t\"f6\":9906,\n\t\t\"f7\":9907,\n\t\t\"f8\":9908,\n\t\t\"f9\":9909,\n\t\t\"f10\":9910,\n\t\t\"f11\":9911,\n\t\t\"f12\":9912,\n\t\t\"f13\":9913,\n\t\t\"f14\":9914,\n\t\t\"f15\":9915,\n\t\t\"f16\":9916,\n\t\t\"f17\":9917,\n\t\t\"f18\":9918,\n\t\t\"f19\":9919,\n\t\t\"f20\":9920,\n\t\t\"f21\":9921,\n\t\t\"f22\":9922,\n\t\t\"f23\":9923,\n\t\t\"f24\":9924,\n\t\t\"f25\":9925,\n\t\t\"f26\":9926,\n\t\t\"f27\":9927,\n\t\t\"f28\":9928,\n\t\t\"f29\":9929,\n\t\t\"f30\":9930,\n\t\t\"f31\":9931,\n\t\t\"f32\":9932,\n\t\t\"f33\":9933,\n\t\t\"f34\":9934,\n\t\t\"f35\":9935,\n\t\t\"f36\":9936,\n\t\t\"f37\":9937,\n\t\t\"f38\":9938,\n\t\t\"f39\":9939,\n\t\t\"f40\":9940,\n\t\t\"f41\":9941,\n\t\t\"f42\":9942,\n\t\t\"f43\":9943,\n\t\t\"f44\":9944,\n\t\t\"f45\":9945,\n\t\t\"f46\":9946,\n\t\t\"f47\":9947,\n\t\t\"f48\":9948,\n\t\t\"f49\":9949,\n\t\t\"f50\":9950,\n\t\t\"f51\":9951,\n\t\t\"f52\":9952,\n\t\t\"f53\":9953,\n\t\t\"f54\":9954,\n\t\t\"f55\":9955,\n\t\t\"f56\":9956,\n\t\t\"f57\":9957,\n\t\t\"f58\":9958,\n\t\t\"f59\":9959,\n\t\t\"f60\":9960,\n\t\t\"f61\":9961,\n\t\t\"f62\":9962,\n\t\t\"f63\":9963,\n\t\t\"f64\":9964,\n\t\t\"f65\":9965,\n\t\t\"f66\":9966,\n\t\t\"f67\":9967,\n\t\t\"f68\":9968,\n\t\t\"f69\":9969,\n\t\t\"f70\":9970,\n\t\t\"f71\":9971,\n\t\t\"f72\":9972,\n\t\t\"f73\":9973,\n\t\t\"f74\":9974,\n\t\t\"f75\":9975,\n\t\t\"f76\":9976,\n\t\t\"f77\":9977,\n\t\t\"f78\":9978,\n\t\t\"f79\":9979,\n\t\t\"f80\":9980,\n\t\t\"f81\":9981,\n\t\t\"f82\":9982,\n\t\t\"f83\":9983,\n\t\t\"f84\":9984,\n\t\t\"f85\":9985,\n\t\t\"f86\":9986,\n\t\t\"f87\":9987,\n\t\t\"f88\":9988,\n\t\t\"f89\":9989,\n\t\t\"f90\":9990,\n\t\t\"f91\":9991,\n\t\t\"f92\":9992,\n\t\t\"f93\":9993,\n\t\t\"f94\":9994,\n\t\t\"f95\":9995,\n\t\t\"f96\":9996,\n\t\t\"f97\":9997,\n\t\t\"f98\":9998,\n\t\t\"f99\":9999\n\t}\n]\n"
  },
  {
    "path": "src/test/resources/json/int_500.json",
    "content": "[\n\t{\n\t\t\"f0\":0,\n\t\t\"f1\":1,\n\t\t\"f2\":2,\n\t\t\"f3\":3,\n\t\t\"f4\":4,\n\t\t\"f5\":5,\n\t\t\"f6\":6,\n\t\t\"f7\":7,\n\t\t\"f8\":8,\n\t\t\"f9\":9,\n\t\t\"f10\":10,\n\t\t\"f11\":11,\n\t\t\"f12\":12,\n\t\t\"f13\":13,\n\t\t\"f14\":14,\n\t\t\"f15\":15,\n\t\t\"f16\":16,\n\t\t\"f17\":17,\n\t\t\"f18\":18,\n\t\t\"f19\":19,\n\t\t\"f20\":20,\n\t\t\"f21\":21,\n\t\t\"f22\":22,\n\t\t\"f23\":23,\n\t\t\"f24\":24,\n\t\t\"f25\":25,\n\t\t\"f26\":26,\n\t\t\"f27\":27,\n\t\t\"f28\":28,\n\t\t\"f29\":29,\n\t\t\"f30\":30,\n\t\t\"f31\":31,\n\t\t\"f32\":32,\n\t\t\"f33\":33,\n\t\t\"f34\":34,\n\t\t\"f35\":35,\n\t\t\"f36\":36,\n\t\t\"f37\":37,\n\t\t\"f38\":38,\n\t\t\"f39\":39,\n\t\t\"f40\":40,\n\t\t\"f41\":41,\n\t\t\"f42\":42,\n\t\t\"f43\":43,\n\t\t\"f44\":44,\n\t\t\"f45\":45,\n\t\t\"f46\":46,\n\t\t\"f47\":47,\n\t\t\"f48\":48,\n\t\t\"f49\":49,\n\t\t\"f50\":50,\n\t\t\"f51\":51,\n\t\t\"f52\":52,\n\t\t\"f53\":53,\n\t\t\"f54\":54,\n\t\t\"f55\":55,\n\t\t\"f56\":56,\n\t\t\"f57\":57,\n\t\t\"f58\":58,\n\t\t\"f59\":59,\n\t\t\"f60\":60,\n\t\t\"f61\":61,\n\t\t\"f62\":62,\n\t\t\"f63\":63,\n\t\t\"f64\":64,\n\t\t\"f65\":65,\n\t\t\"f66\":66,\n\t\t\"f67\":67,\n\t\t\"f68\":68,\n\t\t\"f69\":69,\n\t\t\"f70\":70,\n\t\t\"f71\":71,\n\t\t\"f72\":72,\n\t\t\"f73\":73,\n\t\t\"f74\":74,\n\t\t\"f75\":75,\n\t\t\"f76\":76,\n\t\t\"f77\":77,\n\t\t\"f78\":78,\n\t\t\"f79\":79,\n\t\t\"f80\":80,\n\t\t\"f81\":81,\n\t\t\"f82\":82,\n\t\t\"f83\":83,\n\t\t\"f84\":84,\n\t\t\"f85\":85,\n\t\t\"f86\":86,\n\t\t\"f87\":87,\n\t\t\"f88\":88,\n\t\t\"f89\":89,\n\t\t\"f90\":90,\n\t\t\"f91\":91,\n\t\t\"f92\":92,\n\t\t\"f93\":93,\n\t\t\"f94\":94,\n\t\t\"f95\":95,\n\t\t\"f96\":96,\n\t\t\"f97\":97,\n\t\t\"f98\":98,\n\t\t\"f99\":99\n\t},\n\t{\n\t\t\"f0\":100,\n\t\t\"f1\":101,\n\t\t\"f2\":102,\n\t\t\"f3\":103,\n\t\t\"f4\":104,\n\t\t\"f5\":105,\n\t\t\"f6\":106,\n\t\t\"f7\":107,\n\t\t\"f8\":108,\n\t\t\"f9\":109,\n\t\t\"f10\":110,\n\t\t\"f11\":111,\n\t\t\"f12\":112,\n\t\t\"f13\":113,\n\t\t\"f14\":114,\n\t\t\"f15\":115,\n\t\t\"f16\":116,\n\t\t\"f17\":117,\n\t\t\"f18\":118,\n\t\t\"f19\":119,\n\t\t\"f20\":120,\n\t\t\"f21\":121,\n\t\t\"f22\":122,\n\t\t\"f23\":123,\n\t\t\"f24\":124,\n\t\t\"f25\":125,\n\t\t\"f26\":126,\n\t\t\"f27\":127,\n\t\t\"f28\":128,\n\t\t\"f29\":129,\n\t\t\"f30\":130,\n\t\t\"f31\":131,\n\t\t\"f32\":132,\n\t\t\"f33\":133,\n\t\t\"f34\":134,\n\t\t\"f35\":135,\n\t\t\"f36\":136,\n\t\t\"f37\":137,\n\t\t\"f38\":138,\n\t\t\"f39\":139,\n\t\t\"f40\":140,\n\t\t\"f41\":141,\n\t\t\"f42\":142,\n\t\t\"f43\":143,\n\t\t\"f44\":144,\n\t\t\"f45\":145,\n\t\t\"f46\":146,\n\t\t\"f47\":147,\n\t\t\"f48\":148,\n\t\t\"f49\":149,\n\t\t\"f50\":150,\n\t\t\"f51\":151,\n\t\t\"f52\":152,\n\t\t\"f53\":153,\n\t\t\"f54\":154,\n\t\t\"f55\":155,\n\t\t\"f56\":156,\n\t\t\"f57\":157,\n\t\t\"f58\":158,\n\t\t\"f59\":159,\n\t\t\"f60\":160,\n\t\t\"f61\":161,\n\t\t\"f62\":162,\n\t\t\"f63\":163,\n\t\t\"f64\":164,\n\t\t\"f65\":165,\n\t\t\"f66\":166,\n\t\t\"f67\":167,\n\t\t\"f68\":168,\n\t\t\"f69\":169,\n\t\t\"f70\":170,\n\t\t\"f71\":171,\n\t\t\"f72\":172,\n\t\t\"f73\":173,\n\t\t\"f74\":174,\n\t\t\"f75\":175,\n\t\t\"f76\":176,\n\t\t\"f77\":177,\n\t\t\"f78\":178,\n\t\t\"f79\":179,\n\t\t\"f80\":180,\n\t\t\"f81\":181,\n\t\t\"f82\":182,\n\t\t\"f83\":183,\n\t\t\"f84\":184,\n\t\t\"f85\":185,\n\t\t\"f86\":186,\n\t\t\"f87\":187,\n\t\t\"f88\":188,\n\t\t\"f89\":189,\n\t\t\"f90\":190,\n\t\t\"f91\":191,\n\t\t\"f92\":192,\n\t\t\"f93\":193,\n\t\t\"f94\":194,\n\t\t\"f95\":195,\n\t\t\"f96\":196,\n\t\t\"f97\":197,\n\t\t\"f98\":198,\n\t\t\"f99\":199\n\t},\n\t{\n\t\t\"f0\":200,\n\t\t\"f1\":201,\n\t\t\"f2\":202,\n\t\t\"f3\":203,\n\t\t\"f4\":204,\n\t\t\"f5\":205,\n\t\t\"f6\":206,\n\t\t\"f7\":207,\n\t\t\"f8\":208,\n\t\t\"f9\":209,\n\t\t\"f10\":210,\n\t\t\"f11\":211,\n\t\t\"f12\":212,\n\t\t\"f13\":213,\n\t\t\"f14\":214,\n\t\t\"f15\":215,\n\t\t\"f16\":216,\n\t\t\"f17\":217,\n\t\t\"f18\":218,\n\t\t\"f19\":219,\n\t\t\"f20\":220,\n\t\t\"f21\":221,\n\t\t\"f22\":222,\n\t\t\"f23\":223,\n\t\t\"f24\":224,\n\t\t\"f25\":225,\n\t\t\"f26\":226,\n\t\t\"f27\":227,\n\t\t\"f28\":228,\n\t\t\"f29\":229,\n\t\t\"f30\":230,\n\t\t\"f31\":231,\n\t\t\"f32\":232,\n\t\t\"f33\":233,\n\t\t\"f34\":234,\n\t\t\"f35\":235,\n\t\t\"f36\":236,\n\t\t\"f37\":237,\n\t\t\"f38\":238,\n\t\t\"f39\":239,\n\t\t\"f40\":240,\n\t\t\"f41\":241,\n\t\t\"f42\":242,\n\t\t\"f43\":243,\n\t\t\"f44\":244,\n\t\t\"f45\":245,\n\t\t\"f46\":246,\n\t\t\"f47\":247,\n\t\t\"f48\":248,\n\t\t\"f49\":249,\n\t\t\"f50\":250,\n\t\t\"f51\":251,\n\t\t\"f52\":252,\n\t\t\"f53\":253,\n\t\t\"f54\":254,\n\t\t\"f55\":255,\n\t\t\"f56\":256,\n\t\t\"f57\":257,\n\t\t\"f58\":258,\n\t\t\"f59\":259,\n\t\t\"f60\":260,\n\t\t\"f61\":261,\n\t\t\"f62\":262,\n\t\t\"f63\":263,\n\t\t\"f64\":264,\n\t\t\"f65\":265,\n\t\t\"f66\":266,\n\t\t\"f67\":267,\n\t\t\"f68\":268,\n\t\t\"f69\":269,\n\t\t\"f70\":270,\n\t\t\"f71\":271,\n\t\t\"f72\":272,\n\t\t\"f73\":273,\n\t\t\"f74\":274,\n\t\t\"f75\":275,\n\t\t\"f76\":276,\n\t\t\"f77\":277,\n\t\t\"f78\":278,\n\t\t\"f79\":279,\n\t\t\"f80\":280,\n\t\t\"f81\":281,\n\t\t\"f82\":282,\n\t\t\"f83\":283,\n\t\t\"f84\":284,\n\t\t\"f85\":285,\n\t\t\"f86\":286,\n\t\t\"f87\":287,\n\t\t\"f88\":288,\n\t\t\"f89\":289,\n\t\t\"f90\":290,\n\t\t\"f91\":291,\n\t\t\"f92\":292,\n\t\t\"f93\":293,\n\t\t\"f94\":294,\n\t\t\"f95\":295,\n\t\t\"f96\":296,\n\t\t\"f97\":297,\n\t\t\"f98\":298,\n\t\t\"f99\":299\n\t},\n\t{\n\t\t\"f0\":300,\n\t\t\"f1\":301,\n\t\t\"f2\":302,\n\t\t\"f3\":303,\n\t\t\"f4\":304,\n\t\t\"f5\":305,\n\t\t\"f6\":306,\n\t\t\"f7\":307,\n\t\t\"f8\":308,\n\t\t\"f9\":309,\n\t\t\"f10\":310,\n\t\t\"f11\":311,\n\t\t\"f12\":312,\n\t\t\"f13\":313,\n\t\t\"f14\":314,\n\t\t\"f15\":315,\n\t\t\"f16\":316,\n\t\t\"f17\":317,\n\t\t\"f18\":318,\n\t\t\"f19\":319,\n\t\t\"f20\":320,\n\t\t\"f21\":321,\n\t\t\"f22\":322,\n\t\t\"f23\":323,\n\t\t\"f24\":324,\n\t\t\"f25\":325,\n\t\t\"f26\":326,\n\t\t\"f27\":327,\n\t\t\"f28\":328,\n\t\t\"f29\":329,\n\t\t\"f30\":330,\n\t\t\"f31\":331,\n\t\t\"f32\":332,\n\t\t\"f33\":333,\n\t\t\"f34\":334,\n\t\t\"f35\":335,\n\t\t\"f36\":336,\n\t\t\"f37\":337,\n\t\t\"f38\":338,\n\t\t\"f39\":339,\n\t\t\"f40\":340,\n\t\t\"f41\":341,\n\t\t\"f42\":342,\n\t\t\"f43\":343,\n\t\t\"f44\":344,\n\t\t\"f45\":345,\n\t\t\"f46\":346,\n\t\t\"f47\":347,\n\t\t\"f48\":348,\n\t\t\"f49\":349,\n\t\t\"f50\":350,\n\t\t\"f51\":351,\n\t\t\"f52\":352,\n\t\t\"f53\":353,\n\t\t\"f54\":354,\n\t\t\"f55\":355,\n\t\t\"f56\":356,\n\t\t\"f57\":357,\n\t\t\"f58\":358,\n\t\t\"f59\":359,\n\t\t\"f60\":360,\n\t\t\"f61\":361,\n\t\t\"f62\":362,\n\t\t\"f63\":363,\n\t\t\"f64\":364,\n\t\t\"f65\":365,\n\t\t\"f66\":366,\n\t\t\"f67\":367,\n\t\t\"f68\":368,\n\t\t\"f69\":369,\n\t\t\"f70\":370,\n\t\t\"f71\":371,\n\t\t\"f72\":372,\n\t\t\"f73\":373,\n\t\t\"f74\":374,\n\t\t\"f75\":375,\n\t\t\"f76\":376,\n\t\t\"f77\":377,\n\t\t\"f78\":378,\n\t\t\"f79\":379,\n\t\t\"f80\":380,\n\t\t\"f81\":381,\n\t\t\"f82\":382,\n\t\t\"f83\":383,\n\t\t\"f84\":384,\n\t\t\"f85\":385,\n\t\t\"f86\":386,\n\t\t\"f87\":387,\n\t\t\"f88\":388,\n\t\t\"f89\":389,\n\t\t\"f90\":390,\n\t\t\"f91\":391,\n\t\t\"f92\":392,\n\t\t\"f93\":393,\n\t\t\"f94\":394,\n\t\t\"f95\":395,\n\t\t\"f96\":396,\n\t\t\"f97\":397,\n\t\t\"f98\":398,\n\t\t\"f99\":399\n\t},\n\t{\n\t\t\"f0\":400,\n\t\t\"f1\":401,\n\t\t\"f2\":402,\n\t\t\"f3\":403,\n\t\t\"f4\":404,\n\t\t\"f5\":405,\n\t\t\"f6\":406,\n\t\t\"f7\":407,\n\t\t\"f8\":408,\n\t\t\"f9\":409,\n\t\t\"f10\":410,\n\t\t\"f11\":411,\n\t\t\"f12\":412,\n\t\t\"f13\":413,\n\t\t\"f14\":414,\n\t\t\"f15\":415,\n\t\t\"f16\":416,\n\t\t\"f17\":417,\n\t\t\"f18\":418,\n\t\t\"f19\":419,\n\t\t\"f20\":420,\n\t\t\"f21\":421,\n\t\t\"f22\":422,\n\t\t\"f23\":423,\n\t\t\"f24\":424,\n\t\t\"f25\":425,\n\t\t\"f26\":426,\n\t\t\"f27\":427,\n\t\t\"f28\":428,\n\t\t\"f29\":429,\n\t\t\"f30\":430,\n\t\t\"f31\":431,\n\t\t\"f32\":432,\n\t\t\"f33\":433,\n\t\t\"f34\":434,\n\t\t\"f35\":435,\n\t\t\"f36\":436,\n\t\t\"f37\":437,\n\t\t\"f38\":438,\n\t\t\"f39\":439,\n\t\t\"f40\":440,\n\t\t\"f41\":441,\n\t\t\"f42\":442,\n\t\t\"f43\":443,\n\t\t\"f44\":444,\n\t\t\"f45\":445,\n\t\t\"f46\":446,\n\t\t\"f47\":447,\n\t\t\"f48\":448,\n\t\t\"f49\":449,\n\t\t\"f50\":450,\n\t\t\"f51\":451,\n\t\t\"f52\":452,\n\t\t\"f53\":453,\n\t\t\"f54\":454,\n\t\t\"f55\":455,\n\t\t\"f56\":456,\n\t\t\"f57\":457,\n\t\t\"f58\":458,\n\t\t\"f59\":459,\n\t\t\"f60\":460,\n\t\t\"f61\":461,\n\t\t\"f62\":462,\n\t\t\"f63\":463,\n\t\t\"f64\":464,\n\t\t\"f65\":465,\n\t\t\"f66\":466,\n\t\t\"f67\":467,\n\t\t\"f68\":468,\n\t\t\"f69\":469,\n\t\t\"f70\":470,\n\t\t\"f71\":471,\n\t\t\"f72\":472,\n\t\t\"f73\":473,\n\t\t\"f74\":474,\n\t\t\"f75\":475,\n\t\t\"f76\":476,\n\t\t\"f77\":477,\n\t\t\"f78\":478,\n\t\t\"f79\":479,\n\t\t\"f80\":480,\n\t\t\"f81\":481,\n\t\t\"f82\":482,\n\t\t\"f83\":483,\n\t\t\"f84\":484,\n\t\t\"f85\":485,\n\t\t\"f86\":486,\n\t\t\"f87\":487,\n\t\t\"f88\":488,\n\t\t\"f89\":489,\n\t\t\"f90\":490,\n\t\t\"f91\":491,\n\t\t\"f92\":492,\n\t\t\"f93\":493,\n\t\t\"f94\":494,\n\t\t\"f95\":495,\n\t\t\"f96\":496,\n\t\t\"f97\":497,\n\t\t\"f98\":498,\n\t\t\"f99\":499\n\t}\n]\n"
  },
  {
    "path": "src/test/resources/json/int_array_100.json",
    "content": "[\n\t0,\n\t1,\n\t2,\n\t3,\n\t4,\n\t5,\n\t6,\n\t7,\n\t8,\n\t9,\n\t10,\n\t11,\n\t12,\n\t13,\n\t14,\n\t15,\n\t16,\n\t17,\n\t18,\n\t19,\n\t20,\n\t21,\n\t22,\n\t23,\n\t24,\n\t25,\n\t26,\n\t27,\n\t28,\n\t29,\n\t30,\n\t31,\n\t32,\n\t33,\n\t34,\n\t35,\n\t36,\n\t37,\n\t38,\n\t39,\n\t40,\n\t41,\n\t42,\n\t43,\n\t44,\n\t45,\n\t46,\n\t47,\n\t48,\n\t49,\n\t50,\n\t51,\n\t52,\n\t53,\n\t54,\n\t55,\n\t56,\n\t57,\n\t58,\n\t59,\n\t60,\n\t61,\n\t62,\n\t63,\n\t64,\n\t65,\n\t66,\n\t67,\n\t68,\n\t69,\n\t70,\n\t71,\n\t72,\n\t73,\n\t74,\n\t75,\n\t76,\n\t77,\n\t78,\n\t79,\n\t80,\n\t81,\n\t82,\n\t83,\n\t84,\n\t85,\n\t86,\n\t87,\n\t88,\n\t89,\n\t90,\n\t91,\n\t92,\n\t93,\n\t94,\n\t95,\n\t96,\n\t97,\n\t98,\n\t99\n]\n"
  },
  {
    "path": "src/test/resources/json/int_array_1000.json",
    "content": "[\n\t0,\n\t1,\n\t2,\n\t3,\n\t4,\n\t5,\n\t6,\n\t7,\n\t8,\n\t9,\n\t10,\n\t11,\n\t12,\n\t13,\n\t14,\n\t15,\n\t16,\n\t17,\n\t18,\n\t19,\n\t20,\n\t21,\n\t22,\n\t23,\n\t24,\n\t25,\n\t26,\n\t27,\n\t28,\n\t29,\n\t30,\n\t31,\n\t32,\n\t33,\n\t34,\n\t35,\n\t36,\n\t37,\n\t38,\n\t39,\n\t40,\n\t41,\n\t42,\n\t43,\n\t44,\n\t45,\n\t46,\n\t47,\n\t48,\n\t49,\n\t50,\n\t51,\n\t52,\n\t53,\n\t54,\n\t55,\n\t56,\n\t57,\n\t58,\n\t59,\n\t60,\n\t61,\n\t62,\n\t63,\n\t64,\n\t65,\n\t66,\n\t67,\n\t68,\n\t69,\n\t70,\n\t71,\n\t72,\n\t73,\n\t74,\n\t75,\n\t76,\n\t77,\n\t78,\n\t79,\n\t80,\n\t81,\n\t82,\n\t83,\n\t84,\n\t85,\n\t86,\n\t87,\n\t88,\n\t89,\n\t90,\n\t91,\n\t92,\n\t93,\n\t94,\n\t95,\n\t96,\n\t97,\n\t98,\n\t99,\n\t100,\n\t101,\n\t102,\n\t103,\n\t104,\n\t105,\n\t106,\n\t107,\n\t108,\n\t109,\n\t110,\n\t111,\n\t112,\n\t113,\n\t114,\n\t115,\n\t116,\n\t117,\n\t118,\n\t119,\n\t120,\n\t121,\n\t122,\n\t123,\n\t124,\n\t125,\n\t126,\n\t127,\n\t128,\n\t129,\n\t130,\n\t131,\n\t132,\n\t133,\n\t134,\n\t135,\n\t136,\n\t137,\n\t138,\n\t139,\n\t140,\n\t141,\n\t142,\n\t143,\n\t144,\n\t145,\n\t146,\n\t147,\n\t148,\n\t149,\n\t150,\n\t151,\n\t152,\n\t153,\n\t154,\n\t155,\n\t156,\n\t157,\n\t158,\n\t159,\n\t160,\n\t161,\n\t162,\n\t163,\n\t164,\n\t165,\n\t166,\n\t167,\n\t168,\n\t169,\n\t170,\n\t171,\n\t172,\n\t173,\n\t174,\n\t175,\n\t176,\n\t177,\n\t178,\n\t179,\n\t180,\n\t181,\n\t182,\n\t183,\n\t184,\n\t185,\n\t186,\n\t187,\n\t188,\n\t189,\n\t190,\n\t191,\n\t192,\n\t193,\n\t194,\n\t195,\n\t196,\n\t197,\n\t198,\n\t199,\n\t200,\n\t201,\n\t202,\n\t203,\n\t204,\n\t205,\n\t206,\n\t207,\n\t208,\n\t209,\n\t210,\n\t211,\n\t212,\n\t213,\n\t214,\n\t215,\n\t216,\n\t217,\n\t218,\n\t219,\n\t220,\n\t221,\n\t222,\n\t223,\n\t224,\n\t225,\n\t226,\n\t227,\n\t228,\n\t229,\n\t230,\n\t231,\n\t232,\n\t233,\n\t234,\n\t235,\n\t236,\n\t237,\n\t238,\n\t239,\n\t240,\n\t241,\n\t242,\n\t243,\n\t244,\n\t245,\n\t246,\n\t247,\n\t248,\n\t249,\n\t250,\n\t251,\n\t252,\n\t253,\n\t254,\n\t255,\n\t256,\n\t257,\n\t258,\n\t259,\n\t260,\n\t261,\n\t262,\n\t263,\n\t264,\n\t265,\n\t266,\n\t267,\n\t268,\n\t269,\n\t270,\n\t271,\n\t272,\n\t273,\n\t274,\n\t275,\n\t276,\n\t277,\n\t278,\n\t279,\n\t280,\n\t281,\n\t282,\n\t283,\n\t284,\n\t285,\n\t286,\n\t287,\n\t288,\n\t289,\n\t290,\n\t291,\n\t292,\n\t293,\n\t294,\n\t295,\n\t296,\n\t297,\n\t298,\n\t299,\n\t300,\n\t301,\n\t302,\n\t303,\n\t304,\n\t305,\n\t306,\n\t307,\n\t308,\n\t309,\n\t310,\n\t311,\n\t312,\n\t313,\n\t314,\n\t315,\n\t316,\n\t317,\n\t318,\n\t319,\n\t320,\n\t321,\n\t322,\n\t323,\n\t324,\n\t325,\n\t326,\n\t327,\n\t328,\n\t329,\n\t330,\n\t331,\n\t332,\n\t333,\n\t334,\n\t335,\n\t336,\n\t337,\n\t338,\n\t339,\n\t340,\n\t341,\n\t342,\n\t343,\n\t344,\n\t345,\n\t346,\n\t347,\n\t348,\n\t349,\n\t350,\n\t351,\n\t352,\n\t353,\n\t354,\n\t355,\n\t356,\n\t357,\n\t358,\n\t359,\n\t360,\n\t361,\n\t362,\n\t363,\n\t364,\n\t365,\n\t366,\n\t367,\n\t368,\n\t369,\n\t370,\n\t371,\n\t372,\n\t373,\n\t374,\n\t375,\n\t376,\n\t377,\n\t378,\n\t379,\n\t380,\n\t381,\n\t382,\n\t383,\n\t384,\n\t385,\n\t386,\n\t387,\n\t388,\n\t389,\n\t390,\n\t391,\n\t392,\n\t393,\n\t394,\n\t395,\n\t396,\n\t397,\n\t398,\n\t399,\n\t400,\n\t401,\n\t402,\n\t403,\n\t404,\n\t405,\n\t406,\n\t407,\n\t408,\n\t409,\n\t410,\n\t411,\n\t412,\n\t413,\n\t414,\n\t415,\n\t416,\n\t417,\n\t418,\n\t419,\n\t420,\n\t421,\n\t422,\n\t423,\n\t424,\n\t425,\n\t426,\n\t427,\n\t428,\n\t429,\n\t430,\n\t431,\n\t432,\n\t433,\n\t434,\n\t435,\n\t436,\n\t437,\n\t438,\n\t439,\n\t440,\n\t441,\n\t442,\n\t443,\n\t444,\n\t445,\n\t446,\n\t447,\n\t448,\n\t449,\n\t450,\n\t451,\n\t452,\n\t453,\n\t454,\n\t455,\n\t456,\n\t457,\n\t458,\n\t459,\n\t460,\n\t461,\n\t462,\n\t463,\n\t464,\n\t465,\n\t466,\n\t467,\n\t468,\n\t469,\n\t470,\n\t471,\n\t472,\n\t473,\n\t474,\n\t475,\n\t476,\n\t477,\n\t478,\n\t479,\n\t480,\n\t481,\n\t482,\n\t483,\n\t484,\n\t485,\n\t486,\n\t487,\n\t488,\n\t489,\n\t490,\n\t491,\n\t492,\n\t493,\n\t494,\n\t495,\n\t496,\n\t497,\n\t498,\n\t499,\n\t500,\n\t501,\n\t502,\n\t503,\n\t504,\n\t505,\n\t506,\n\t507,\n\t508,\n\t509,\n\t510,\n\t511,\n\t512,\n\t513,\n\t514,\n\t515,\n\t516,\n\t517,\n\t518,\n\t519,\n\t520,\n\t521,\n\t522,\n\t523,\n\t524,\n\t525,\n\t526,\n\t527,\n\t528,\n\t529,\n\t530,\n\t531,\n\t532,\n\t533,\n\t534,\n\t535,\n\t536,\n\t537,\n\t538,\n\t539,\n\t540,\n\t541,\n\t542,\n\t543,\n\t544,\n\t545,\n\t546,\n\t547,\n\t548,\n\t549,\n\t550,\n\t551,\n\t552,\n\t553,\n\t554,\n\t555,\n\t556,\n\t557,\n\t558,\n\t559,\n\t560,\n\t561,\n\t562,\n\t563,\n\t564,\n\t565,\n\t566,\n\t567,\n\t568,\n\t569,\n\t570,\n\t571,\n\t572,\n\t573,\n\t574,\n\t575,\n\t576,\n\t577,\n\t578,\n\t579,\n\t580,\n\t581,\n\t582,\n\t583,\n\t584,\n\t585,\n\t586,\n\t587,\n\t588,\n\t589,\n\t590,\n\t591,\n\t592,\n\t593,\n\t594,\n\t595,\n\t596,\n\t597,\n\t598,\n\t599,\n\t600,\n\t601,\n\t602,\n\t603,\n\t604,\n\t605,\n\t606,\n\t607,\n\t608,\n\t609,\n\t610,\n\t611,\n\t612,\n\t613,\n\t614,\n\t615,\n\t616,\n\t617,\n\t618,\n\t619,\n\t620,\n\t621,\n\t622,\n\t623,\n\t624,\n\t625,\n\t626,\n\t627,\n\t628,\n\t629,\n\t630,\n\t631,\n\t632,\n\t633,\n\t634,\n\t635,\n\t636,\n\t637,\n\t638,\n\t639,\n\t640,\n\t641,\n\t642,\n\t643,\n\t644,\n\t645,\n\t646,\n\t647,\n\t648,\n\t649,\n\t650,\n\t651,\n\t652,\n\t653,\n\t654,\n\t655,\n\t656,\n\t657,\n\t658,\n\t659,\n\t660,\n\t661,\n\t662,\n\t663,\n\t664,\n\t665,\n\t666,\n\t667,\n\t668,\n\t669,\n\t670,\n\t671,\n\t672,\n\t673,\n\t674,\n\t675,\n\t676,\n\t677,\n\t678,\n\t679,\n\t680,\n\t681,\n\t682,\n\t683,\n\t684,\n\t685,\n\t686,\n\t687,\n\t688,\n\t689,\n\t690,\n\t691,\n\t692,\n\t693,\n\t694,\n\t695,\n\t696,\n\t697,\n\t698,\n\t699,\n\t700,\n\t701,\n\t702,\n\t703,\n\t704,\n\t705,\n\t706,\n\t707,\n\t708,\n\t709,\n\t710,\n\t711,\n\t712,\n\t713,\n\t714,\n\t715,\n\t716,\n\t717,\n\t718,\n\t719,\n\t720,\n\t721,\n\t722,\n\t723,\n\t724,\n\t725,\n\t726,\n\t727,\n\t728,\n\t729,\n\t730,\n\t731,\n\t732,\n\t733,\n\t734,\n\t735,\n\t736,\n\t737,\n\t738,\n\t739,\n\t740,\n\t741,\n\t742,\n\t743,\n\t744,\n\t745,\n\t746,\n\t747,\n\t748,\n\t749,\n\t750,\n\t751,\n\t752,\n\t753,\n\t754,\n\t755,\n\t756,\n\t757,\n\t758,\n\t759,\n\t760,\n\t761,\n\t762,\n\t763,\n\t764,\n\t765,\n\t766,\n\t767,\n\t768,\n\t769,\n\t770,\n\t771,\n\t772,\n\t773,\n\t774,\n\t775,\n\t776,\n\t777,\n\t778,\n\t779,\n\t780,\n\t781,\n\t782,\n\t783,\n\t784,\n\t785,\n\t786,\n\t787,\n\t788,\n\t789,\n\t790,\n\t791,\n\t792,\n\t793,\n\t794,\n\t795,\n\t796,\n\t797,\n\t798,\n\t799,\n\t800,\n\t801,\n\t802,\n\t803,\n\t804,\n\t805,\n\t806,\n\t807,\n\t808,\n\t809,\n\t810,\n\t811,\n\t812,\n\t813,\n\t814,\n\t815,\n\t816,\n\t817,\n\t818,\n\t819,\n\t820,\n\t821,\n\t822,\n\t823,\n\t824,\n\t825,\n\t826,\n\t827,\n\t828,\n\t829,\n\t830,\n\t831,\n\t832,\n\t833,\n\t834,\n\t835,\n\t836,\n\t837,\n\t838,\n\t839,\n\t840,\n\t841,\n\t842,\n\t843,\n\t844,\n\t845,\n\t846,\n\t847,\n\t848,\n\t849,\n\t850,\n\t851,\n\t852,\n\t853,\n\t854,\n\t855,\n\t856,\n\t857,\n\t858,\n\t859,\n\t860,\n\t861,\n\t862,\n\t863,\n\t864,\n\t865,\n\t866,\n\t867,\n\t868,\n\t869,\n\t870,\n\t871,\n\t872,\n\t873,\n\t874,\n\t875,\n\t876,\n\t877,\n\t878,\n\t879,\n\t880,\n\t881,\n\t882,\n\t883,\n\t884,\n\t885,\n\t886,\n\t887,\n\t888,\n\t889,\n\t890,\n\t891,\n\t892,\n\t893,\n\t894,\n\t895,\n\t896,\n\t897,\n\t898,\n\t899,\n\t900,\n\t901,\n\t902,\n\t903,\n\t904,\n\t905,\n\t906,\n\t907,\n\t908,\n\t909,\n\t910,\n\t911,\n\t912,\n\t913,\n\t914,\n\t915,\n\t916,\n\t917,\n\t918,\n\t919,\n\t920,\n\t921,\n\t922,\n\t923,\n\t924,\n\t925,\n\t926,\n\t927,\n\t928,\n\t929,\n\t930,\n\t931,\n\t932,\n\t933,\n\t934,\n\t935,\n\t936,\n\t937,\n\t938,\n\t939,\n\t940,\n\t941,\n\t942,\n\t943,\n\t944,\n\t945,\n\t946,\n\t947,\n\t948,\n\t949,\n\t950,\n\t951,\n\t952,\n\t953,\n\t954,\n\t955,\n\t956,\n\t957,\n\t958,\n\t959,\n\t960,\n\t961,\n\t962,\n\t963,\n\t964,\n\t965,\n\t966,\n\t967,\n\t968,\n\t969,\n\t970,\n\t971,\n\t972,\n\t973,\n\t974,\n\t975,\n\t976,\n\t977,\n\t978,\n\t979,\n\t980,\n\t981,\n\t982,\n\t983,\n\t984,\n\t985,\n\t986,\n\t987,\n\t988,\n\t989,\n\t990,\n\t991,\n\t992,\n\t993,\n\t994,\n\t995,\n\t996,\n\t997,\n\t998,\n\t999\n]\n"
  },
  {
    "path": "src/test/resources/json/int_array_10000.json",
    "content": "[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999]\r\n"
  },
  {
    "path": "src/test/resources/json/int_array_200.json",
    "content": "[\n\t0,\n\t1,\n\t2,\n\t3,\n\t4,\n\t5,\n\t6,\n\t7,\n\t8,\n\t9,\n\t10,\n\t11,\n\t12,\n\t13,\n\t14,\n\t15,\n\t16,\n\t17,\n\t18,\n\t19,\n\t20,\n\t21,\n\t22,\n\t23,\n\t24,\n\t25,\n\t26,\n\t27,\n\t28,\n\t29,\n\t30,\n\t31,\n\t32,\n\t33,\n\t34,\n\t35,\n\t36,\n\t37,\n\t38,\n\t39,\n\t40,\n\t41,\n\t42,\n\t43,\n\t44,\n\t45,\n\t46,\n\t47,\n\t48,\n\t49,\n\t50,\n\t51,\n\t52,\n\t53,\n\t54,\n\t55,\n\t56,\n\t57,\n\t58,\n\t59,\n\t60,\n\t61,\n\t62,\n\t63,\n\t64,\n\t65,\n\t66,\n\t67,\n\t68,\n\t69,\n\t70,\n\t71,\n\t72,\n\t73,\n\t74,\n\t75,\n\t76,\n\t77,\n\t78,\n\t79,\n\t80,\n\t81,\n\t82,\n\t83,\n\t84,\n\t85,\n\t86,\n\t87,\n\t88,\n\t89,\n\t90,\n\t91,\n\t92,\n\t93,\n\t94,\n\t95,\n\t96,\n\t97,\n\t98,\n\t99,\n\t100,\n\t101,\n\t102,\n\t103,\n\t104,\n\t105,\n\t106,\n\t107,\n\t108,\n\t109,\n\t110,\n\t111,\n\t112,\n\t113,\n\t114,\n\t115,\n\t116,\n\t117,\n\t118,\n\t119,\n\t120,\n\t121,\n\t122,\n\t123,\n\t124,\n\t125,\n\t126,\n\t127,\n\t128,\n\t129,\n\t130,\n\t131,\n\t132,\n\t133,\n\t134,\n\t135,\n\t136,\n\t137,\n\t138,\n\t139,\n\t140,\n\t141,\n\t142,\n\t143,\n\t144,\n\t145,\n\t146,\n\t147,\n\t148,\n\t149,\n\t150,\n\t151,\n\t152,\n\t153,\n\t154,\n\t155,\n\t156,\n\t157,\n\t158,\n\t159,\n\t160,\n\t161,\n\t162,\n\t163,\n\t164,\n\t165,\n\t166,\n\t167,\n\t168,\n\t169,\n\t170,\n\t171,\n\t172,\n\t173,\n\t174,\n\t175,\n\t176,\n\t177,\n\t178,\n\t179,\n\t180,\n\t181,\n\t182,\n\t183,\n\t184,\n\t185,\n\t186,\n\t187,\n\t188,\n\t189,\n\t190,\n\t191,\n\t192,\n\t193,\n\t194,\n\t195,\n\t196,\n\t197,\n\t198,\n\t199\n]\n"
  },
  {
    "path": "src/test/resources/json/int_array_500.json",
    "content": "[\n\t0,\n\t1,\n\t2,\n\t3,\n\t4,\n\t5,\n\t6,\n\t7,\n\t8,\n\t9,\n\t10,\n\t11,\n\t12,\n\t13,\n\t14,\n\t15,\n\t16,\n\t17,\n\t18,\n\t19,\n\t20,\n\t21,\n\t22,\n\t23,\n\t24,\n\t25,\n\t26,\n\t27,\n\t28,\n\t29,\n\t30,\n\t31,\n\t32,\n\t33,\n\t34,\n\t35,\n\t36,\n\t37,\n\t38,\n\t39,\n\t40,\n\t41,\n\t42,\n\t43,\n\t44,\n\t45,\n\t46,\n\t47,\n\t48,\n\t49,\n\t50,\n\t51,\n\t52,\n\t53,\n\t54,\n\t55,\n\t56,\n\t57,\n\t58,\n\t59,\n\t60,\n\t61,\n\t62,\n\t63,\n\t64,\n\t65,\n\t66,\n\t67,\n\t68,\n\t69,\n\t70,\n\t71,\n\t72,\n\t73,\n\t74,\n\t75,\n\t76,\n\t77,\n\t78,\n\t79,\n\t80,\n\t81,\n\t82,\n\t83,\n\t84,\n\t85,\n\t86,\n\t87,\n\t88,\n\t89,\n\t90,\n\t91,\n\t92,\n\t93,\n\t94,\n\t95,\n\t96,\n\t97,\n\t98,\n\t99,\n\t100,\n\t101,\n\t102,\n\t103,\n\t104,\n\t105,\n\t106,\n\t107,\n\t108,\n\t109,\n\t110,\n\t111,\n\t112,\n\t113,\n\t114,\n\t115,\n\t116,\n\t117,\n\t118,\n\t119,\n\t120,\n\t121,\n\t122,\n\t123,\n\t124,\n\t125,\n\t126,\n\t127,\n\t128,\n\t129,\n\t130,\n\t131,\n\t132,\n\t133,\n\t134,\n\t135,\n\t136,\n\t137,\n\t138,\n\t139,\n\t140,\n\t141,\n\t142,\n\t143,\n\t144,\n\t145,\n\t146,\n\t147,\n\t148,\n\t149,\n\t150,\n\t151,\n\t152,\n\t153,\n\t154,\n\t155,\n\t156,\n\t157,\n\t158,\n\t159,\n\t160,\n\t161,\n\t162,\n\t163,\n\t164,\n\t165,\n\t166,\n\t167,\n\t168,\n\t169,\n\t170,\n\t171,\n\t172,\n\t173,\n\t174,\n\t175,\n\t176,\n\t177,\n\t178,\n\t179,\n\t180,\n\t181,\n\t182,\n\t183,\n\t184,\n\t185,\n\t186,\n\t187,\n\t188,\n\t189,\n\t190,\n\t191,\n\t192,\n\t193,\n\t194,\n\t195,\n\t196,\n\t197,\n\t198,\n\t199,\n\t200,\n\t201,\n\t202,\n\t203,\n\t204,\n\t205,\n\t206,\n\t207,\n\t208,\n\t209,\n\t210,\n\t211,\n\t212,\n\t213,\n\t214,\n\t215,\n\t216,\n\t217,\n\t218,\n\t219,\n\t220,\n\t221,\n\t222,\n\t223,\n\t224,\n\t225,\n\t226,\n\t227,\n\t228,\n\t229,\n\t230,\n\t231,\n\t232,\n\t233,\n\t234,\n\t235,\n\t236,\n\t237,\n\t238,\n\t239,\n\t240,\n\t241,\n\t242,\n\t243,\n\t244,\n\t245,\n\t246,\n\t247,\n\t248,\n\t249,\n\t250,\n\t251,\n\t252,\n\t253,\n\t254,\n\t255,\n\t256,\n\t257,\n\t258,\n\t259,\n\t260,\n\t261,\n\t262,\n\t263,\n\t264,\n\t265,\n\t266,\n\t267,\n\t268,\n\t269,\n\t270,\n\t271,\n\t272,\n\t273,\n\t274,\n\t275,\n\t276,\n\t277,\n\t278,\n\t279,\n\t280,\n\t281,\n\t282,\n\t283,\n\t284,\n\t285,\n\t286,\n\t287,\n\t288,\n\t289,\n\t290,\n\t291,\n\t292,\n\t293,\n\t294,\n\t295,\n\t296,\n\t297,\n\t298,\n\t299,\n\t300,\n\t301,\n\t302,\n\t303,\n\t304,\n\t305,\n\t306,\n\t307,\n\t308,\n\t309,\n\t310,\n\t311,\n\t312,\n\t313,\n\t314,\n\t315,\n\t316,\n\t317,\n\t318,\n\t319,\n\t320,\n\t321,\n\t322,\n\t323,\n\t324,\n\t325,\n\t326,\n\t327,\n\t328,\n\t329,\n\t330,\n\t331,\n\t332,\n\t333,\n\t334,\n\t335,\n\t336,\n\t337,\n\t338,\n\t339,\n\t340,\n\t341,\n\t342,\n\t343,\n\t344,\n\t345,\n\t346,\n\t347,\n\t348,\n\t349,\n\t350,\n\t351,\n\t352,\n\t353,\n\t354,\n\t355,\n\t356,\n\t357,\n\t358,\n\t359,\n\t360,\n\t361,\n\t362,\n\t363,\n\t364,\n\t365,\n\t366,\n\t367,\n\t368,\n\t369,\n\t370,\n\t371,\n\t372,\n\t373,\n\t374,\n\t375,\n\t376,\n\t377,\n\t378,\n\t379,\n\t380,\n\t381,\n\t382,\n\t383,\n\t384,\n\t385,\n\t386,\n\t387,\n\t388,\n\t389,\n\t390,\n\t391,\n\t392,\n\t393,\n\t394,\n\t395,\n\t396,\n\t397,\n\t398,\n\t399,\n\t400,\n\t401,\n\t402,\n\t403,\n\t404,\n\t405,\n\t406,\n\t407,\n\t408,\n\t409,\n\t410,\n\t411,\n\t412,\n\t413,\n\t414,\n\t415,\n\t416,\n\t417,\n\t418,\n\t419,\n\t420,\n\t421,\n\t422,\n\t423,\n\t424,\n\t425,\n\t426,\n\t427,\n\t428,\n\t429,\n\t430,\n\t431,\n\t432,\n\t433,\n\t434,\n\t435,\n\t436,\n\t437,\n\t438,\n\t439,\n\t440,\n\t441,\n\t442,\n\t443,\n\t444,\n\t445,\n\t446,\n\t447,\n\t448,\n\t449,\n\t450,\n\t451,\n\t452,\n\t453,\n\t454,\n\t455,\n\t456,\n\t457,\n\t458,\n\t459,\n\t460,\n\t461,\n\t462,\n\t463,\n\t464,\n\t465,\n\t466,\n\t467,\n\t468,\n\t469,\n\t470,\n\t471,\n\t472,\n\t473,\n\t474,\n\t475,\n\t476,\n\t477,\n\t478,\n\t479,\n\t480,\n\t481,\n\t482,\n\t483,\n\t484,\n\t485,\n\t486,\n\t487,\n\t488,\n\t489,\n\t490,\n\t491,\n\t492,\n\t493,\n\t494,\n\t495,\n\t496,\n\t497,\n\t498,\n\t499\n]\n"
  },
  {
    "path": "src/test/resources/json/json_with_comment.json",
    "content": "{\n\t\"hello\":\"asafsadf\", //single line comment\n\t\"test\":1 , \n\t/**\n\t多行注释\n\t*/\n\t\n\t\t/**\n\t多行注释\n\t*/\n\t\n\t\"array\":[\n\t\"10000sfsaf\" /*test*/,\n\t100, //hello\n\t{\n\t\t\"nihao\":{\"test\":\"sdfasdf\"/*hehe*/}\n\t}\n\t],\n\t\n\t\"object\":{/*en*/\n\t\n\t\t\"teset\" /*ceshi*/ : 1000/*测试*/\n\t}\n\t//单行注释\n\n}"
  },
  {
    "path": "src/test/resources/json/maiksagill.json",
    "content": "[{\"houseArea\":\"3.00\",\"images\":[{\"searchImageUrl\":\"img\\/ibank\\/2011\\/699\\/163\\/470361996_2083754467.search.jpg\",\"imageUrl\":\"ibank\\/2011\\/699\\/163\\/470361996_2083754467.jpg\",\"bigImageUrl\":\"img\\/ibank\\/2011\\/699\\/163\\/470361996_2083754467.310x310.jpg\",\"summImageUrl\":\"img\\/ibank\\/2011\\/699\\/163\\/470361996_2083754467.summ.jpg\"},{\"searchImageUrl\":\"img\\/ibank\\/2011\\/399\\/163\\/470361993_2083754467.search.jpg\",\"imageUrl\":\"ibank\\/2011\\/399\\/163\\/470361993_2083754467.jpg\",\"bigImageUrl\":\"img\\/ibank\\/2011\\/399\\/163\\/470361993_2083754467.310x310.jpg\",\"summImageUrl\":\"img\\/ibank\\/2011\\/399\\/163\\/470361993_2083754467.summ.jpg\"},{\"searchImageUrl\":\"img\\/ibank\\/2011\\/689\\/163\\/470361986_2083754467.search.jpg\",\"imageUrl\":\"ibank\\/2011\\/689\\/163\\/470361986_2083754467.jpg\",\"bigImageUrl\":\"img\\/ibank\\/2011\\/689\\/163\\/470361986_2083754467.310x310.jpg\",\"summImageUrl\":\"img\\/ibank\\/2011\\/689\\/163\\/470361986_2083754467.summ.jpg\"}]},{\"houseArea\":\"\",\"images\":[{\"searchImageUrl\":\"img\\/ibank\\/2011\\/699\\/163\\/470361996_2083754467.search.jpg\",\"imageUrl\":\"ibank\\/2011\\/699\\/163\\/470361996_2083754467.jpg\",\"bigImageUrl\":\"img\\/ibank\\/2011\\/699\\/163\\/470361996_2083754467.310x310.jpg\",\"summImageUrl\":\"img\\/ibank\\/2011\\/699\\/163\\/470361996_2083754467.summ.jpg\"},{\"searchImageUrl\":\"img\\/ibank\\/2011\\/689\\/163\\/470361986_2083754467.search.jpg\",\"imageUrl\":\"ibank\\/2011\\/689\\/163\\/470361986_2083754467.jpg\",\"bigImageUrl\":\"img\\/ibank\\/2011\\/689\\/163\\/470361986_2083754467.310x310.jpg\",\"summImageUrl\":\"img\\/ibank\\/2011\\/689\\/163\\/470361986_2083754467.summ.jpg\"}]},{\"houseArea\":\"4\"}]\n\n\n\n"
  },
  {
    "path": "src/test/resources/json/object_f_emptyobj_10000.json",
    "content": "{\"0\":{},\"1\":{},\"2\":{},\"3\":{},\"4\":{},\"5\":{},\"6\":{},\"7\":{},\"8\":{},\"9\":{},\"10\":{},\"11\":{},\"12\":{},\"13\":{},\"14\":{},\"15\":{},\"16\":{},\"17\":{},\"18\":{},\"19\":{},\"20\":{},\"21\":{},\"22\":{},\"23\":{},\"24\":{},\"25\":{},\"26\":{},\"27\":{},\"28\":{},\"29\":{},\"30\":{},\"31\":{},\"32\":{},\"33\":{},\"34\":{},\"35\":{},\"36\":{},\"37\":{},\"38\":{},\"39\":{},\"40\":{},\"41\":{},\"42\":{},\"43\":{},\"44\":{},\"45\":{},\"46\":{},\"47\":{},\"48\":{},\"49\":{},\"50\":{},\"51\":{},\"52\":{},\"53\":{},\"54\":{},\"55\":{},\"56\":{},\"57\":{},\"58\":{},\"59\":{},\"60\":{},\"61\":{},\"62\":{},\"63\":{},\"64\":{},\"65\":{},\"66\":{},\"67\":{},\"68\":{},\"69\":{},\"70\":{},\"71\":{},\"72\":{},\"73\":{},\"74\":{},\"75\":{},\"76\":{},\"77\":{},\"78\":{},\"79\":{},\"80\":{},\"81\":{},\"82\":{},\"83\":{},\"84\":{},\"85\":{},\"86\":{},\"87\":{},\"88\":{},\"89\":{},\"90\":{},\"91\":{},\"92\":{},\"93\":{},\"94\":{},\"95\":{},\"96\":{},\"97\":{},\"98\":{},\"99\":{},\"100\":{},\"101\":{},\"102\":{},\"103\":{},\"104\":{},\"105\":{},\"106\":{},\"107\":{},\"108\":{},\"109\":{},\"110\":{},\"111\":{},\"112\":{},\"113\":{},\"114\":{},\"115\":{},\"116\":{},\"117\":{},\"118\":{},\"119\":{},\"120\":{},\"121\":{},\"122\":{},\"123\":{},\"124\":{},\"125\":{},\"126\":{},\"127\":{},\"128\":{},\"129\":{},\"130\":{},\"131\":{},\"132\":{},\"133\":{},\"134\":{},\"135\":{},\"136\":{},\"137\":{},\"138\":{},\"139\":{},\"140\":{},\"141\":{},\"142\":{},\"143\":{},\"144\":{},\"145\":{},\"146\":{},\"147\":{},\"148\":{},\"149\":{},\"150\":{},\"151\":{},\"152\":{},\"153\":{},\"154\":{},\"155\":{},\"156\":{},\"157\":{},\"158\":{},\"159\":{},\"160\":{},\"161\":{},\"162\":{},\"163\":{},\"164\":{},\"165\":{},\"166\":{},\"167\":{},\"168\":{},\"169\":{},\"170\":{},\"171\":{},\"172\":{},\"173\":{},\"174\":{},\"175\":{},\"176\":{},\"177\":{},\"178\":{},\"179\":{},\"180\":{},\"181\":{},\"182\":{},\"183\":{},\"184\":{},\"185\":{},\"186\":{},\"187\":{},\"188\":{},\"189\":{},\"190\":{},\"191\":{},\"192\":{},\"193\":{},\"194\":{},\"195\":{},\"196\":{},\"197\":{},\"198\":{},\"199\":{},\"200\":{},\"201\":{},\"202\":{},\"203\":{},\"204\":{},\"205\":{},\"206\":{},\"207\":{},\"208\":{},\"209\":{},\"210\":{},\"211\":{},\"212\":{},\"213\":{},\"214\":{},\"215\":{},\"216\":{},\"217\":{},\"218\":{},\"219\":{},\"220\":{},\"221\":{},\"222\":{},\"223\":{},\"224\":{},\"225\":{},\"226\":{},\"227\":{},\"228\":{},\"229\":{},\"230\":{},\"231\":{},\"232\":{},\"233\":{},\"234\":{},\"235\":{},\"236\":{},\"237\":{},\"238\":{},\"239\":{},\"240\":{},\"241\":{},\"242\":{},\"243\":{},\"244\":{},\"245\":{},\"246\":{},\"247\":{},\"248\":{},\"249\":{},\"250\":{},\"251\":{},\"252\":{},\"253\":{},\"254\":{},\"255\":{},\"256\":{},\"257\":{},\"258\":{},\"259\":{},\"260\":{},\"261\":{},\"262\":{},\"263\":{},\"264\":{},\"265\":{},\"266\":{},\"267\":{},\"268\":{},\"269\":{},\"270\":{},\"271\":{},\"272\":{},\"273\":{},\"274\":{},\"275\":{},\"276\":{},\"277\":{},\"278\":{},\"279\":{},\"280\":{},\"281\":{},\"282\":{},\"283\":{},\"284\":{},\"285\":{},\"286\":{},\"287\":{},\"288\":{},\"289\":{},\"290\":{},\"291\":{},\"292\":{},\"293\":{},\"294\":{},\"295\":{},\"296\":{},\"297\":{},\"298\":{},\"299\":{},\"300\":{},\"301\":{},\"302\":{},\"303\":{},\"304\":{},\"305\":{},\"306\":{},\"307\":{},\"308\":{},\"309\":{},\"310\":{},\"311\":{},\"312\":{},\"313\":{},\"314\":{},\"315\":{},\"316\":{},\"317\":{},\"318\":{},\"319\":{},\"320\":{},\"321\":{},\"322\":{},\"323\":{},\"324\":{},\"325\":{},\"326\":{},\"327\":{},\"328\":{},\"329\":{},\"330\":{},\"331\":{},\"332\":{},\"333\":{},\"334\":{},\"335\":{},\"336\":{},\"337\":{},\"338\":{},\"339\":{},\"340\":{},\"341\":{},\"342\":{},\"343\":{},\"344\":{},\"345\":{},\"346\":{},\"347\":{},\"348\":{},\"349\":{},\"350\":{},\"351\":{},\"352\":{},\"353\":{},\"354\":{},\"355\":{},\"356\":{},\"357\":{},\"358\":{},\"359\":{},\"360\":{},\"361\":{},\"362\":{},\"363\":{},\"364\":{},\"365\":{},\"366\":{},\"367\":{},\"368\":{},\"369\":{},\"370\":{},\"371\":{},\"372\":{},\"373\":{},\"374\":{},\"375\":{},\"376\":{},\"377\":{},\"378\":{},\"379\":{},\"380\":{},\"381\":{},\"382\":{},\"383\":{},\"384\":{},\"385\":{},\"386\":{},\"387\":{},\"388\":{},\"389\":{},\"390\":{},\"391\":{},\"392\":{},\"393\":{},\"394\":{},\"395\":{},\"396\":{},\"397\":{},\"398\":{},\"399\":{},\"400\":{},\"401\":{},\"402\":{},\"403\":{},\"404\":{},\"405\":{},\"406\":{},\"407\":{},\"408\":{},\"409\":{},\"410\":{},\"411\":{},\"412\":{},\"413\":{},\"414\":{},\"415\":{},\"416\":{},\"417\":{},\"418\":{},\"419\":{},\"420\":{},\"421\":{},\"422\":{},\"423\":{},\"424\":{},\"425\":{},\"426\":{},\"427\":{},\"428\":{},\"429\":{},\"430\":{},\"431\":{},\"432\":{},\"433\":{},\"434\":{},\"435\":{},\"436\":{},\"437\":{},\"438\":{},\"439\":{},\"440\":{},\"441\":{},\"442\":{},\"443\":{},\"444\":{},\"445\":{},\"446\":{},\"447\":{},\"448\":{},\"449\":{},\"450\":{},\"451\":{},\"452\":{},\"453\":{},\"454\":{},\"455\":{},\"456\":{},\"457\":{},\"458\":{},\"459\":{},\"460\":{},\"461\":{},\"462\":{},\"463\":{},\"464\":{},\"465\":{},\"466\":{},\"467\":{},\"468\":{},\"469\":{},\"470\":{},\"471\":{},\"472\":{},\"473\":{},\"474\":{},\"475\":{},\"476\":{},\"477\":{},\"478\":{},\"479\":{},\"480\":{},\"481\":{},\"482\":{},\"483\":{},\"484\":{},\"485\":{},\"486\":{},\"487\":{},\"488\":{},\"489\":{},\"490\":{},\"491\":{},\"492\":{},\"493\":{},\"494\":{},\"495\":{},\"496\":{},\"497\":{},\"498\":{},\"499\":{},\"500\":{},\"501\":{},\"502\":{},\"503\":{},\"504\":{},\"505\":{},\"506\":{},\"507\":{},\"508\":{},\"509\":{},\"510\":{},\"511\":{},\"512\":{},\"513\":{},\"514\":{},\"515\":{},\"516\":{},\"517\":{},\"518\":{},\"519\":{},\"520\":{},\"521\":{},\"522\":{},\"523\":{},\"524\":{},\"525\":{},\"526\":{},\"527\":{},\"528\":{},\"529\":{},\"530\":{},\"531\":{},\"532\":{},\"533\":{},\"534\":{},\"535\":{},\"536\":{},\"537\":{},\"538\":{},\"539\":{},\"540\":{},\"541\":{},\"542\":{},\"543\":{},\"544\":{},\"545\":{},\"546\":{},\"547\":{},\"548\":{},\"549\":{},\"550\":{},\"551\":{},\"552\":{},\"553\":{},\"554\":{},\"555\":{},\"556\":{},\"557\":{},\"558\":{},\"559\":{},\"560\":{},\"561\":{},\"562\":{},\"563\":{},\"564\":{},\"565\":{},\"566\":{},\"567\":{},\"568\":{},\"569\":{},\"570\":{},\"571\":{},\"572\":{},\"573\":{},\"574\":{},\"575\":{},\"576\":{},\"577\":{},\"578\":{},\"579\":{},\"580\":{},\"581\":{},\"582\":{},\"583\":{},\"584\":{},\"585\":{},\"586\":{},\"587\":{},\"588\":{},\"589\":{},\"590\":{},\"591\":{},\"592\":{},\"593\":{},\"594\":{},\"595\":{},\"596\":{},\"597\":{},\"598\":{},\"599\":{},\"600\":{},\"601\":{},\"602\":{},\"603\":{},\"604\":{},\"605\":{},\"606\":{},\"607\":{},\"608\":{},\"609\":{},\"610\":{},\"611\":{},\"612\":{},\"613\":{},\"614\":{},\"615\":{},\"616\":{},\"617\":{},\"618\":{},\"619\":{},\"620\":{},\"621\":{},\"622\":{},\"623\":{},\"624\":{},\"625\":{},\"626\":{},\"627\":{},\"628\":{},\"629\":{},\"630\":{},\"631\":{},\"632\":{},\"633\":{},\"634\":{},\"635\":{},\"636\":{},\"637\":{},\"638\":{},\"639\":{},\"640\":{},\"641\":{},\"642\":{},\"643\":{},\"644\":{},\"645\":{},\"646\":{},\"647\":{},\"648\":{},\"649\":{},\"650\":{},\"651\":{},\"652\":{},\"653\":{},\"654\":{},\"655\":{},\"656\":{},\"657\":{},\"658\":{},\"659\":{},\"660\":{},\"661\":{},\"662\":{},\"663\":{},\"664\":{},\"665\":{},\"666\":{},\"667\":{},\"668\":{},\"669\":{},\"670\":{},\"671\":{},\"672\":{},\"673\":{},\"674\":{},\"675\":{},\"676\":{},\"677\":{},\"678\":{},\"679\":{},\"680\":{},\"681\":{},\"682\":{},\"683\":{},\"684\":{},\"685\":{},\"686\":{},\"687\":{},\"688\":{},\"689\":{},\"690\":{},\"691\":{},\"692\":{},\"693\":{},\"694\":{},\"695\":{},\"696\":{},\"697\":{},\"698\":{},\"699\":{},\"700\":{},\"701\":{},\"702\":{},\"703\":{},\"704\":{},\"705\":{},\"706\":{},\"707\":{},\"708\":{},\"709\":{},\"710\":{},\"711\":{},\"712\":{},\"713\":{},\"714\":{},\"715\":{},\"716\":{},\"717\":{},\"718\":{},\"719\":{},\"720\":{},\"721\":{},\"722\":{},\"723\":{},\"724\":{},\"725\":{},\"726\":{},\"727\":{},\"728\":{},\"729\":{},\"730\":{},\"731\":{},\"732\":{},\"733\":{},\"734\":{},\"735\":{},\"736\":{},\"737\":{},\"738\":{},\"739\":{},\"740\":{},\"741\":{},\"742\":{},\"743\":{},\"744\":{},\"745\":{},\"746\":{},\"747\":{},\"748\":{},\"749\":{},\"750\":{},\"751\":{},\"752\":{},\"753\":{},\"754\":{},\"755\":{},\"756\":{},\"757\":{},\"758\":{},\"759\":{},\"760\":{},\"761\":{},\"762\":{},\"763\":{},\"764\":{},\"765\":{},\"766\":{},\"767\":{},\"768\":{},\"769\":{},\"770\":{},\"771\":{},\"772\":{},\"773\":{},\"774\":{},\"775\":{},\"776\":{},\"777\":{},\"778\":{},\"779\":{},\"780\":{},\"781\":{},\"782\":{},\"783\":{},\"784\":{},\"785\":{},\"786\":{},\"787\":{},\"788\":{},\"789\":{},\"790\":{},\"791\":{},\"792\":{},\"793\":{},\"794\":{},\"795\":{},\"796\":{},\"797\":{},\"798\":{},\"799\":{},\"800\":{},\"801\":{},\"802\":{},\"803\":{},\"804\":{},\"805\":{},\"806\":{},\"807\":{},\"808\":{},\"809\":{},\"810\":{},\"811\":{},\"812\":{},\"813\":{},\"814\":{},\"815\":{},\"816\":{},\"817\":{},\"818\":{},\"819\":{},\"820\":{},\"821\":{},\"822\":{},\"823\":{},\"824\":{},\"825\":{},\"826\":{},\"827\":{},\"828\":{},\"829\":{},\"830\":{},\"831\":{},\"832\":{},\"833\":{},\"834\":{},\"835\":{},\"836\":{},\"837\":{},\"838\":{},\"839\":{},\"840\":{},\"841\":{},\"842\":{},\"843\":{},\"844\":{},\"845\":{},\"846\":{},\"847\":{},\"848\":{},\"849\":{},\"850\":{},\"851\":{},\"852\":{},\"853\":{},\"854\":{},\"855\":{},\"856\":{},\"857\":{},\"858\":{},\"859\":{},\"860\":{},\"861\":{},\"862\":{},\"863\":{},\"864\":{},\"865\":{},\"866\":{},\"867\":{},\"868\":{},\"869\":{},\"870\":{},\"871\":{},\"872\":{},\"873\":{},\"874\":{},\"875\":{},\"876\":{},\"877\":{},\"878\":{},\"879\":{},\"880\":{},\"881\":{},\"882\":{},\"883\":{},\"884\":{},\"885\":{},\"886\":{},\"887\":{},\"888\":{},\"889\":{},\"890\":{},\"891\":{},\"892\":{},\"893\":{},\"894\":{},\"895\":{},\"896\":{},\"897\":{},\"898\":{},\"899\":{},\"900\":{},\"901\":{},\"902\":{},\"903\":{},\"904\":{},\"905\":{},\"906\":{},\"907\":{},\"908\":{},\"909\":{},\"910\":{},\"911\":{},\"912\":{},\"913\":{},\"914\":{},\"915\":{},\"916\":{},\"917\":{},\"918\":{},\"919\":{},\"920\":{},\"921\":{},\"922\":{},\"923\":{},\"924\":{},\"925\":{},\"926\":{},\"927\":{},\"928\":{},\"929\":{},\"930\":{},\"931\":{},\"932\":{},\"933\":{},\"934\":{},\"935\":{},\"936\":{},\"937\":{},\"938\":{},\"939\":{},\"940\":{},\"941\":{},\"942\":{},\"943\":{},\"944\":{},\"945\":{},\"946\":{},\"947\":{},\"948\":{},\"949\":{},\"950\":{},\"951\":{},\"952\":{},\"953\":{},\"954\":{},\"955\":{},\"956\":{},\"957\":{},\"958\":{},\"959\":{},\"960\":{},\"961\":{},\"962\":{},\"963\":{},\"964\":{},\"965\":{},\"966\":{},\"967\":{},\"968\":{},\"969\":{},\"970\":{},\"971\":{},\"972\":{},\"973\":{},\"974\":{},\"975\":{},\"976\":{},\"977\":{},\"978\":{},\"979\":{},\"980\":{},\"981\":{},\"982\":{},\"983\":{},\"984\":{},\"985\":{},\"986\":{},\"987\":{},\"988\":{},\"989\":{},\"990\":{},\"991\":{},\"992\":{},\"993\":{},\"994\":{},\"995\":{},\"996\":{},\"997\":{},\"998\":{},\"999\":{}}\r\n"
  },
  {
    "path": "src/test/resources/json/object_f_false_10000.json",
    "content": "{\"f0\":false,\"f1\":false,\"f2\":false,\"f3\":false,\"f4\":false,\"f5\":false,\"f6\":false,\"f7\":false,\"f8\":false,\"f9\":false,\"f10\":false,\"f11\":false,\"f12\":false,\"f13\":false,\"f14\":false,\"f15\":false,\"f16\":false,\"f17\":false,\"f18\":false,\"f19\":false,\"f20\":false,\"f21\":false,\"f22\":false,\"f23\":false,\"f24\":false,\"f25\":false,\"f26\":false,\"f27\":false,\"f28\":false,\"f29\":false,\"f30\":false,\"f31\":false,\"f32\":false,\"f33\":false,\"f34\":false,\"f35\":false,\"f36\":false,\"f37\":false,\"f38\":false,\"f39\":false,\"f40\":false,\"f41\":false,\"f42\":false,\"f43\":false,\"f44\":false,\"f45\":false,\"f46\":false,\"f47\":false,\"f48\":false,\"f49\":false,\"f50\":false,\"f51\":false,\"f52\":false,\"f53\":false,\"f54\":false,\"f55\":false,\"f56\":false,\"f57\":false,\"f58\":false,\"f59\":false,\"f60\":false,\"f61\":false,\"f62\":false,\"f63\":false,\"f64\":false,\"f65\":false,\"f66\":false,\"f67\":false,\"f68\":false,\"f69\":false,\"f70\":false,\"f71\":false,\"f72\":false,\"f73\":false,\"f74\":false,\"f75\":false,\"f76\":false,\"f77\":false,\"f78\":false,\"f79\":false,\"f80\":false,\"f81\":false,\"f82\":false,\"f83\":false,\"f84\":false,\"f85\":false,\"f86\":false,\"f87\":false,\"f88\":false,\"f89\":false,\"f90\":false,\"f91\":false,\"f92\":false,\"f93\":false,\"f94\":false,\"f95\":false,\"f96\":false,\"f97\":false,\"f98\":false,\"f99\":false,\"f100\":false,\"f101\":false,\"f102\":false,\"f103\":false,\"f104\":false,\"f105\":false,\"f106\":false,\"f107\":false,\"f108\":false,\"f109\":false,\"f110\":false,\"f111\":false,\"f112\":false,\"f113\":false,\"f114\":false,\"f115\":false,\"f116\":false,\"f117\":false,\"f118\":false,\"f119\":false,\"f120\":false,\"f121\":false,\"f122\":false,\"f123\":false,\"f124\":false,\"f125\":false,\"f126\":false,\"f127\":false,\"f128\":false,\"f129\":false,\"f130\":false,\"f131\":false,\"f132\":false,\"f133\":false,\"f134\":false,\"f135\":false,\"f136\":false,\"f137\":false,\"f138\":false,\"f139\":false,\"f140\":false,\"f141\":false,\"f142\":false,\"f143\":false,\"f144\":false,\"f145\":false,\"f146\":false,\"f147\":false,\"f148\":false,\"f149\":false,\"f150\":false,\"f151\":false,\"f152\":false,\"f153\":false,\"f154\":false,\"f155\":false,\"f156\":false,\"f157\":false,\"f158\":false,\"f159\":false,\"f160\":false,\"f161\":false,\"f162\":false,\"f163\":false,\"f164\":false,\"f165\":false,\"f166\":false,\"f167\":false,\"f168\":false,\"f169\":false,\"f170\":false,\"f171\":false,\"f172\":false,\"f173\":false,\"f174\":false,\"f175\":false,\"f176\":false,\"f177\":false,\"f178\":false,\"f179\":false,\"f180\":false,\"f181\":false,\"f182\":false,\"f183\":false,\"f184\":false,\"f185\":false,\"f186\":false,\"f187\":false,\"f188\":false,\"f189\":false,\"f190\":false,\"f191\":false,\"f192\":false,\"f193\":false,\"f194\":false,\"f195\":false,\"f196\":false,\"f197\":false,\"f198\":false,\"f199\":false,\"f200\":false,\"f201\":false,\"f202\":false,\"f203\":false,\"f204\":false,\"f205\":false,\"f206\":false,\"f207\":false,\"f208\":false,\"f209\":false,\"f210\":false,\"f211\":false,\"f212\":false,\"f213\":false,\"f214\":false,\"f215\":false,\"f216\":false,\"f217\":false,\"f218\":false,\"f219\":false,\"f220\":false,\"f221\":false,\"f222\":false,\"f223\":false,\"f224\":false,\"f225\":false,\"f226\":false,\"f227\":false,\"f228\":false,\"f229\":false,\"f230\":false,\"f231\":false,\"f232\":false,\"f233\":false,\"f234\":false,\"f235\":false,\"f236\":false,\"f237\":false,\"f238\":false,\"f239\":false,\"f240\":false,\"f241\":false,\"f242\":false,\"f243\":false,\"f244\":false,\"f245\":false,\"f246\":false,\"f247\":false,\"f248\":false,\"f249\":false,\"f250\":false,\"f251\":false,\"f252\":false,\"f253\":false,\"f254\":false,\"f255\":false,\"f256\":false,\"f257\":false,\"f258\":false,\"f259\":false,\"f260\":false,\"f261\":false,\"f262\":false,\"f263\":false,\"f264\":false,\"f265\":false,\"f266\":false,\"f267\":false,\"f268\":false,\"f269\":false,\"f270\":false,\"f271\":false,\"f272\":false,\"f273\":false,\"f274\":false,\"f275\":false,\"f276\":false,\"f277\":false,\"f278\":false,\"f279\":false,\"f280\":false,\"f281\":false,\"f282\":false,\"f283\":false,\"f284\":false,\"f285\":false,\"f286\":false,\"f287\":false,\"f288\":false,\"f289\":false,\"f290\":false,\"f291\":false,\"f292\":false,\"f293\":false,\"f294\":false,\"f295\":false,\"f296\":false,\"f297\":false,\"f298\":false,\"f299\":false,\"f300\":false,\"f301\":false,\"f302\":false,\"f303\":false,\"f304\":false,\"f305\":false,\"f306\":false,\"f307\":false,\"f308\":false,\"f309\":false,\"f310\":false,\"f311\":false,\"f312\":false,\"f313\":false,\"f314\":false,\"f315\":false,\"f316\":false,\"f317\":false,\"f318\":false,\"f319\":false,\"f320\":false,\"f321\":false,\"f322\":false,\"f323\":false,\"f324\":false,\"f325\":false,\"f326\":false,\"f327\":false,\"f328\":false,\"f329\":false,\"f330\":false,\"f331\":false,\"f332\":false,\"f333\":false,\"f334\":false,\"f335\":false,\"f336\":false,\"f337\":false,\"f338\":false,\"f339\":false,\"f340\":false,\"f341\":false,\"f342\":false,\"f343\":false,\"f344\":false,\"f345\":false,\"f346\":false,\"f347\":false,\"f348\":false,\"f349\":false,\"f350\":false,\"f351\":false,\"f352\":false,\"f353\":false,\"f354\":false,\"f355\":false,\"f356\":false,\"f357\":false,\"f358\":false,\"f359\":false,\"f360\":false,\"f361\":false,\"f362\":false,\"f363\":false,\"f364\":false,\"f365\":false,\"f366\":false,\"f367\":false,\"f368\":false,\"f369\":false,\"f370\":false,\"f371\":false,\"f372\":false,\"f373\":false,\"f374\":false,\"f375\":false,\"f376\":false,\"f377\":false,\"f378\":false,\"f379\":false,\"f380\":false,\"f381\":false,\"f382\":false,\"f383\":false,\"f384\":false,\"f385\":false,\"f386\":false,\"f387\":false,\"f388\":false,\"f389\":false,\"f390\":false,\"f391\":false,\"f392\":false,\"f393\":false,\"f394\":false,\"f395\":false,\"f396\":false,\"f397\":false,\"f398\":false,\"f399\":false,\"f400\":false,\"f401\":false,\"f402\":false,\"f403\":false,\"f404\":false,\"f405\":false,\"f406\":false,\"f407\":false,\"f408\":false,\"f409\":false,\"f410\":false,\"f411\":false,\"f412\":false,\"f413\":false,\"f414\":false,\"f415\":false,\"f416\":false,\"f417\":false,\"f418\":false,\"f419\":false,\"f420\":false,\"f421\":false,\"f422\":false,\"f423\":false,\"f424\":false,\"f425\":false,\"f426\":false,\"f427\":false,\"f428\":false,\"f429\":false,\"f430\":false,\"f431\":false,\"f432\":false,\"f433\":false,\"f434\":false,\"f435\":false,\"f436\":false,\"f437\":false,\"f438\":false,\"f439\":false,\"f440\":false,\"f441\":false,\"f442\":false,\"f443\":false,\"f444\":false,\"f445\":false,\"f446\":false,\"f447\":false,\"f448\":false,\"f449\":false,\"f450\":false,\"f451\":false,\"f452\":false,\"f453\":false,\"f454\":false,\"f455\":false,\"f456\":false,\"f457\":false,\"f458\":false,\"f459\":false,\"f460\":false,\"f461\":false,\"f462\":false,\"f463\":false,\"f464\":false,\"f465\":false,\"f466\":false,\"f467\":false,\"f468\":false,\"f469\":false,\"f470\":false,\"f471\":false,\"f472\":false,\"f473\":false,\"f474\":false,\"f475\":false,\"f476\":false,\"f477\":false,\"f478\":false,\"f479\":false,\"f480\":false,\"f481\":false,\"f482\":false,\"f483\":false,\"f484\":false,\"f485\":false,\"f486\":false,\"f487\":false,\"f488\":false,\"f489\":false,\"f490\":false,\"f491\":false,\"f492\":false,\"f493\":false,\"f494\":false,\"f495\":false,\"f496\":false,\"f497\":false,\"f498\":false,\"f499\":false,\"f500\":false,\"f501\":false,\"f502\":false,\"f503\":false,\"f504\":false,\"f505\":false,\"f506\":false,\"f507\":false,\"f508\":false,\"f509\":false,\"f510\":false,\"f511\":false,\"f512\":false,\"f513\":false,\"f514\":false,\"f515\":false,\"f516\":false,\"f517\":false,\"f518\":false,\"f519\":false,\"f520\":false,\"f521\":false,\"f522\":false,\"f523\":false,\"f524\":false,\"f525\":false,\"f526\":false,\"f527\":false,\"f528\":false,\"f529\":false,\"f530\":false,\"f531\":false,\"f532\":false,\"f533\":false,\"f534\":false,\"f535\":false,\"f536\":false,\"f537\":false,\"f538\":false,\"f539\":false,\"f540\":false,\"f541\":false,\"f542\":false,\"f543\":false,\"f544\":false,\"f545\":false,\"f546\":false,\"f547\":false,\"f548\":false,\"f549\":false,\"f550\":false,\"f551\":false,\"f552\":false,\"f553\":false,\"f554\":false,\"f555\":false,\"f556\":false,\"f557\":false,\"f558\":false,\"f559\":false,\"f560\":false,\"f561\":false,\"f562\":false,\"f563\":false,\"f564\":false,\"f565\":false,\"f566\":false,\"f567\":false,\"f568\":false,\"f569\":false,\"f570\":false,\"f571\":false,\"f572\":false,\"f573\":false,\"f574\":false,\"f575\":false,\"f576\":false,\"f577\":false,\"f578\":false,\"f579\":false,\"f580\":false,\"f581\":false,\"f582\":false,\"f583\":false,\"f584\":false,\"f585\":false,\"f586\":false,\"f587\":false,\"f588\":false,\"f589\":false,\"f590\":false,\"f591\":false,\"f592\":false,\"f593\":false,\"f594\":false,\"f595\":false,\"f596\":false,\"f597\":false,\"f598\":false,\"f599\":false,\"f600\":false,\"f601\":false,\"f602\":false,\"f603\":false,\"f604\":false,\"f605\":false,\"f606\":false,\"f607\":false,\"f608\":false,\"f609\":false,\"f610\":false,\"f611\":false,\"f612\":false,\"f613\":false,\"f614\":false,\"f615\":false,\"f616\":false,\"f617\":false,\"f618\":false,\"f619\":false,\"f620\":false,\"f621\":false,\"f622\":false,\"f623\":false,\"f624\":false,\"f625\":false,\"f626\":false,\"f627\":false,\"f628\":false,\"f629\":false,\"f630\":false,\"f631\":false,\"f632\":false,\"f633\":false,\"f634\":false,\"f635\":false,\"f636\":false,\"f637\":false,\"f638\":false,\"f639\":false,\"f640\":false,\"f641\":false,\"f642\":false,\"f643\":false,\"f644\":false,\"f645\":false,\"f646\":false,\"f647\":false,\"f648\":false,\"f649\":false,\"f650\":false,\"f651\":false,\"f652\":false,\"f653\":false,\"f654\":false,\"f655\":false,\"f656\":false,\"f657\":false,\"f658\":false,\"f659\":false,\"f660\":false,\"f661\":false,\"f662\":false,\"f663\":false,\"f664\":false,\"f665\":false,\"f666\":false,\"f667\":false,\"f668\":false,\"f669\":false,\"f670\":false,\"f671\":false,\"f672\":false,\"f673\":false,\"f674\":false,\"f675\":false,\"f676\":false,\"f677\":false,\"f678\":false,\"f679\":false,\"f680\":false,\"f681\":false,\"f682\":false,\"f683\":false,\"f684\":false,\"f685\":false,\"f686\":false,\"f687\":false,\"f688\":false,\"f689\":false,\"f690\":false,\"f691\":false,\"f692\":false,\"f693\":false,\"f694\":false,\"f695\":false,\"f696\":false,\"f697\":false,\"f698\":false,\"f699\":false,\"f700\":false,\"f701\":false,\"f702\":false,\"f703\":false,\"f704\":false,\"f705\":false,\"f706\":false,\"f707\":false,\"f708\":false,\"f709\":false,\"f710\":false,\"f711\":false,\"f712\":false,\"f713\":false,\"f714\":false,\"f715\":false,\"f716\":false,\"f717\":false,\"f718\":false,\"f719\":false,\"f720\":false,\"f721\":false,\"f722\":false,\"f723\":false,\"f724\":false,\"f725\":false,\"f726\":false,\"f727\":false,\"f728\":false,\"f729\":false,\"f730\":false,\"f731\":false,\"f732\":false,\"f733\":false,\"f734\":false,\"f735\":false,\"f736\":false,\"f737\":false,\"f738\":false,\"f739\":false,\"f740\":false,\"f741\":false,\"f742\":false,\"f743\":false,\"f744\":false,\"f745\":false,\"f746\":false,\"f747\":false,\"f748\":false,\"f749\":false,\"f750\":false,\"f751\":false,\"f752\":false,\"f753\":false,\"f754\":false,\"f755\":false,\"f756\":false,\"f757\":false,\"f758\":false,\"f759\":false,\"f760\":false,\"f761\":false,\"f762\":false,\"f763\":false,\"f764\":false,\"f765\":false,\"f766\":false,\"f767\":false,\"f768\":false,\"f769\":false,\"f770\":false,\"f771\":false,\"f772\":false,\"f773\":false,\"f774\":false,\"f775\":false,\"f776\":false,\"f777\":false,\"f778\":false,\"f779\":false,\"f780\":false,\"f781\":false,\"f782\":false,\"f783\":false,\"f784\":false,\"f785\":false,\"f786\":false,\"f787\":false,\"f788\":false,\"f789\":false,\"f790\":false,\"f791\":false,\"f792\":false,\"f793\":false,\"f794\":false,\"f795\":false,\"f796\":false,\"f797\":false,\"f798\":false,\"f799\":false,\"f800\":false,\"f801\":false,\"f802\":false,\"f803\":false,\"f804\":false,\"f805\":false,\"f806\":false,\"f807\":false,\"f808\":false,\"f809\":false,\"f810\":false,\"f811\":false,\"f812\":false,\"f813\":false,\"f814\":false,\"f815\":false,\"f816\":false,\"f817\":false,\"f818\":false,\"f819\":false,\"f820\":false,\"f821\":false,\"f822\":false,\"f823\":false,\"f824\":false,\"f825\":false,\"f826\":false,\"f827\":false,\"f828\":false,\"f829\":false,\"f830\":false,\"f831\":false,\"f832\":false,\"f833\":false,\"f834\":false,\"f835\":false,\"f836\":false,\"f837\":false,\"f838\":false,\"f839\":false,\"f840\":false,\"f841\":false,\"f842\":false,\"f843\":false,\"f844\":false,\"f845\":false,\"f846\":false,\"f847\":false,\"f848\":false,\"f849\":false,\"f850\":false,\"f851\":false,\"f852\":false,\"f853\":false,\"f854\":false,\"f855\":false,\"f856\":false,\"f857\":false,\"f858\":false,\"f859\":false,\"f860\":false,\"f861\":false,\"f862\":false,\"f863\":false,\"f864\":false,\"f865\":false,\"f866\":false,\"f867\":false,\"f868\":false,\"f869\":false,\"f870\":false,\"f871\":false,\"f872\":false,\"f873\":false,\"f874\":false,\"f875\":false,\"f876\":false,\"f877\":false,\"f878\":false,\"f879\":false,\"f880\":false,\"f881\":false,\"f882\":false,\"f883\":false,\"f884\":false,\"f885\":false,\"f886\":false,\"f887\":false,\"f888\":false,\"f889\":false,\"f890\":false,\"f891\":false,\"f892\":false,\"f893\":false,\"f894\":false,\"f895\":false,\"f896\":false,\"f897\":false,\"f898\":false,\"f899\":false,\"f900\":false,\"f901\":false,\"f902\":false,\"f903\":false,\"f904\":false,\"f905\":false,\"f906\":false,\"f907\":false,\"f908\":false,\"f909\":false,\"f910\":false,\"f911\":false,\"f912\":false,\"f913\":false,\"f914\":false,\"f915\":false,\"f916\":false,\"f917\":false,\"f918\":false,\"f919\":false,\"f920\":false,\"f921\":false,\"f922\":false,\"f923\":false,\"f924\":false,\"f925\":false,\"f926\":false,\"f927\":false,\"f928\":false,\"f929\":false,\"f930\":false,\"f931\":false,\"f932\":false,\"f933\":false,\"f934\":false,\"f935\":false,\"f936\":false,\"f937\":false,\"f938\":false,\"f939\":false,\"f940\":false,\"f941\":false,\"f942\":false,\"f943\":false,\"f944\":false,\"f945\":false,\"f946\":false,\"f947\":false,\"f948\":false,\"f949\":false,\"f950\":false,\"f951\":false,\"f952\":false,\"f953\":false,\"f954\":false,\"f955\":false,\"f956\":false,\"f957\":false,\"f958\":false,\"f959\":false,\"f960\":false,\"f961\":false,\"f962\":false,\"f963\":false,\"f964\":false,\"f965\":false,\"f966\":false,\"f967\":false,\"f968\":false,\"f969\":false,\"f970\":false,\"f971\":false,\"f972\":false,\"f973\":false,\"f974\":false,\"f975\":false,\"f976\":false,\"f977\":false,\"f978\":false,\"f979\":false,\"f980\":false,\"f981\":false,\"f982\":false,\"f983\":false,\"f984\":false,\"f985\":false,\"f986\":false,\"f987\":false,\"f988\":false,\"f989\":false,\"f990\":false,\"f991\":false,\"f992\":false,\"f993\":false,\"f994\":false,\"f995\":false,\"f996\":false,\"f997\":false,\"f998\":false,\"f999\":false}\r\n"
  },
  {
    "path": "src/test/resources/json/object_f_int_1000.json",
    "content": "{\"f0\":0,\"f1\":1,\"f2\":2,\"f3\":3,\"f4\":4,\"f5\":5,\"f6\":6,\"f7\":7,\"f8\":8,\"f9\":9,\"f10\":10,\"f11\":11,\"f12\":12,\"f13\":13,\"f14\":14,\"f15\":15,\"f16\":16,\"f17\":17,\"f18\":18,\"f19\":19,\"f20\":20,\"f21\":21,\"f22\":22,\"f23\":23,\"f24\":24,\"f25\":25,\"f26\":26,\"f27\":27,\"f28\":28,\"f29\":29,\"f30\":30,\"f31\":31,\"f32\":32,\"f33\":33,\"f34\":34,\"f35\":35,\"f36\":36,\"f37\":37,\"f38\":38,\"f39\":39,\"f40\":40,\"f41\":41,\"f42\":42,\"f43\":43,\"f44\":44,\"f45\":45,\"f46\":46,\"f47\":47,\"f48\":48,\"f49\":49,\"f50\":50,\"f51\":51,\"f52\":52,\"f53\":53,\"f54\":54,\"f55\":55,\"f56\":56,\"f57\":57,\"f58\":58,\"f59\":59,\"f60\":60,\"f61\":61,\"f62\":62,\"f63\":63,\"f64\":64,\"f65\":65,\"f66\":66,\"f67\":67,\"f68\":68,\"f69\":69,\"f70\":70,\"f71\":71,\"f72\":72,\"f73\":73,\"f74\":74,\"f75\":75,\"f76\":76,\"f77\":77,\"f78\":78,\"f79\":79,\"f80\":80,\"f81\":81,\"f82\":82,\"f83\":83,\"f84\":84,\"f85\":85,\"f86\":86,\"f87\":87,\"f88\":88,\"f89\":89,\"f90\":90,\"f91\":91,\"f92\":92,\"f93\":93,\"f94\":94,\"f95\":95,\"f96\":96,\"f97\":97,\"f98\":98,\"f99\":99}\r\n"
  },
  {
    "path": "src/test/resources/json/object_f_int_10000.json",
    "content": "{\"f0\":0,\"f1\":1,\"f2\":2,\"f3\":3,\"f4\":4,\"f5\":5,\"f6\":6,\"f7\":7,\"f8\":8,\"f9\":9,\"f10\":10,\"f11\":11,\"f12\":12,\"f13\":13,\"f14\":14,\"f15\":15,\"f16\":16,\"f17\":17,\"f18\":18,\"f19\":19,\"f20\":20,\"f21\":21,\"f22\":22,\"f23\":23,\"f24\":24,\"f25\":25,\"f26\":26,\"f27\":27,\"f28\":28,\"f29\":29,\"f30\":30,\"f31\":31,\"f32\":32,\"f33\":33,\"f34\":34,\"f35\":35,\"f36\":36,\"f37\":37,\"f38\":38,\"f39\":39,\"f40\":40,\"f41\":41,\"f42\":42,\"f43\":43,\"f44\":44,\"f45\":45,\"f46\":46,\"f47\":47,\"f48\":48,\"f49\":49,\"f50\":50,\"f51\":51,\"f52\":52,\"f53\":53,\"f54\":54,\"f55\":55,\"f56\":56,\"f57\":57,\"f58\":58,\"f59\":59,\"f60\":60,\"f61\":61,\"f62\":62,\"f63\":63,\"f64\":64,\"f65\":65,\"f66\":66,\"f67\":67,\"f68\":68,\"f69\":69,\"f70\":70,\"f71\":71,\"f72\":72,\"f73\":73,\"f74\":74,\"f75\":75,\"f76\":76,\"f77\":77,\"f78\":78,\"f79\":79,\"f80\":80,\"f81\":81,\"f82\":82,\"f83\":83,\"f84\":84,\"f85\":85,\"f86\":86,\"f87\":87,\"f88\":88,\"f89\":89,\"f90\":90,\"f91\":91,\"f92\":92,\"f93\":93,\"f94\":94,\"f95\":95,\"f96\":96,\"f97\":97,\"f98\":98,\"f99\":99,\"f100\":100,\"f101\":101,\"f102\":102,\"f103\":103,\"f104\":104,\"f105\":105,\"f106\":106,\"f107\":107,\"f108\":108,\"f109\":109,\"f110\":110,\"f111\":111,\"f112\":112,\"f113\":113,\"f114\":114,\"f115\":115,\"f116\":116,\"f117\":117,\"f118\":118,\"f119\":119,\"f120\":120,\"f121\":121,\"f122\":122,\"f123\":123,\"f124\":124,\"f125\":125,\"f126\":126,\"f127\":127,\"f128\":128,\"f129\":129,\"f130\":130,\"f131\":131,\"f132\":132,\"f133\":133,\"f134\":134,\"f135\":135,\"f136\":136,\"f137\":137,\"f138\":138,\"f139\":139,\"f140\":140,\"f141\":141,\"f142\":142,\"f143\":143,\"f144\":144,\"f145\":145,\"f146\":146,\"f147\":147,\"f148\":148,\"f149\":149,\"f150\":150,\"f151\":151,\"f152\":152,\"f153\":153,\"f154\":154,\"f155\":155,\"f156\":156,\"f157\":157,\"f158\":158,\"f159\":159,\"f160\":160,\"f161\":161,\"f162\":162,\"f163\":163,\"f164\":164,\"f165\":165,\"f166\":166,\"f167\":167,\"f168\":168,\"f169\":169,\"f170\":170,\"f171\":171,\"f172\":172,\"f173\":173,\"f174\":174,\"f175\":175,\"f176\":176,\"f177\":177,\"f178\":178,\"f179\":179,\"f180\":180,\"f181\":181,\"f182\":182,\"f183\":183,\"f184\":184,\"f185\":185,\"f186\":186,\"f187\":187,\"f188\":188,\"f189\":189,\"f190\":190,\"f191\":191,\"f192\":192,\"f193\":193,\"f194\":194,\"f195\":195,\"f196\":196,\"f197\":197,\"f198\":198,\"f199\":199,\"f200\":200,\"f201\":201,\"f202\":202,\"f203\":203,\"f204\":204,\"f205\":205,\"f206\":206,\"f207\":207,\"f208\":208,\"f209\":209,\"f210\":210,\"f211\":211,\"f212\":212,\"f213\":213,\"f214\":214,\"f215\":215,\"f216\":216,\"f217\":217,\"f218\":218,\"f219\":219,\"f220\":220,\"f221\":221,\"f222\":222,\"f223\":223,\"f224\":224,\"f225\":225,\"f226\":226,\"f227\":227,\"f228\":228,\"f229\":229,\"f230\":230,\"f231\":231,\"f232\":232,\"f233\":233,\"f234\":234,\"f235\":235,\"f236\":236,\"f237\":237,\"f238\":238,\"f239\":239,\"f240\":240,\"f241\":241,\"f242\":242,\"f243\":243,\"f244\":244,\"f245\":245,\"f246\":246,\"f247\":247,\"f248\":248,\"f249\":249,\"f250\":250,\"f251\":251,\"f252\":252,\"f253\":253,\"f254\":254,\"f255\":255,\"f256\":256,\"f257\":257,\"f258\":258,\"f259\":259,\"f260\":260,\"f261\":261,\"f262\":262,\"f263\":263,\"f264\":264,\"f265\":265,\"f266\":266,\"f267\":267,\"f268\":268,\"f269\":269,\"f270\":270,\"f271\":271,\"f272\":272,\"f273\":273,\"f274\":274,\"f275\":275,\"f276\":276,\"f277\":277,\"f278\":278,\"f279\":279,\"f280\":280,\"f281\":281,\"f282\":282,\"f283\":283,\"f284\":284,\"f285\":285,\"f286\":286,\"f287\":287,\"f288\":288,\"f289\":289,\"f290\":290,\"f291\":291,\"f292\":292,\"f293\":293,\"f294\":294,\"f295\":295,\"f296\":296,\"f297\":297,\"f298\":298,\"f299\":299,\"f300\":300,\"f301\":301,\"f302\":302,\"f303\":303,\"f304\":304,\"f305\":305,\"f306\":306,\"f307\":307,\"f308\":308,\"f309\":309,\"f310\":310,\"f311\":311,\"f312\":312,\"f313\":313,\"f314\":314,\"f315\":315,\"f316\":316,\"f317\":317,\"f318\":318,\"f319\":319,\"f320\":320,\"f321\":321,\"f322\":322,\"f323\":323,\"f324\":324,\"f325\":325,\"f326\":326,\"f327\":327,\"f328\":328,\"f329\":329,\"f330\":330,\"f331\":331,\"f332\":332,\"f333\":333,\"f334\":334,\"f335\":335,\"f336\":336,\"f337\":337,\"f338\":338,\"f339\":339,\"f340\":340,\"f341\":341,\"f342\":342,\"f343\":343,\"f344\":344,\"f345\":345,\"f346\":346,\"f347\":347,\"f348\":348,\"f349\":349,\"f350\":350,\"f351\":351,\"f352\":352,\"f353\":353,\"f354\":354,\"f355\":355,\"f356\":356,\"f357\":357,\"f358\":358,\"f359\":359,\"f360\":360,\"f361\":361,\"f362\":362,\"f363\":363,\"f364\":364,\"f365\":365,\"f366\":366,\"f367\":367,\"f368\":368,\"f369\":369,\"f370\":370,\"f371\":371,\"f372\":372,\"f373\":373,\"f374\":374,\"f375\":375,\"f376\":376,\"f377\":377,\"f378\":378,\"f379\":379,\"f380\":380,\"f381\":381,\"f382\":382,\"f383\":383,\"f384\":384,\"f385\":385,\"f386\":386,\"f387\":387,\"f388\":388,\"f389\":389,\"f390\":390,\"f391\":391,\"f392\":392,\"f393\":393,\"f394\":394,\"f395\":395,\"f396\":396,\"f397\":397,\"f398\":398,\"f399\":399,\"f400\":400,\"f401\":401,\"f402\":402,\"f403\":403,\"f404\":404,\"f405\":405,\"f406\":406,\"f407\":407,\"f408\":408,\"f409\":409,\"f410\":410,\"f411\":411,\"f412\":412,\"f413\":413,\"f414\":414,\"f415\":415,\"f416\":416,\"f417\":417,\"f418\":418,\"f419\":419,\"f420\":420,\"f421\":421,\"f422\":422,\"f423\":423,\"f424\":424,\"f425\":425,\"f426\":426,\"f427\":427,\"f428\":428,\"f429\":429,\"f430\":430,\"f431\":431,\"f432\":432,\"f433\":433,\"f434\":434,\"f435\":435,\"f436\":436,\"f437\":437,\"f438\":438,\"f439\":439,\"f440\":440,\"f441\":441,\"f442\":442,\"f443\":443,\"f444\":444,\"f445\":445,\"f446\":446,\"f447\":447,\"f448\":448,\"f449\":449,\"f450\":450,\"f451\":451,\"f452\":452,\"f453\":453,\"f454\":454,\"f455\":455,\"f456\":456,\"f457\":457,\"f458\":458,\"f459\":459,\"f460\":460,\"f461\":461,\"f462\":462,\"f463\":463,\"f464\":464,\"f465\":465,\"f466\":466,\"f467\":467,\"f468\":468,\"f469\":469,\"f470\":470,\"f471\":471,\"f472\":472,\"f473\":473,\"f474\":474,\"f475\":475,\"f476\":476,\"f477\":477,\"f478\":478,\"f479\":479,\"f480\":480,\"f481\":481,\"f482\":482,\"f483\":483,\"f484\":484,\"f485\":485,\"f486\":486,\"f487\":487,\"f488\":488,\"f489\":489,\"f490\":490,\"f491\":491,\"f492\":492,\"f493\":493,\"f494\":494,\"f495\":495,\"f496\":496,\"f497\":497,\"f498\":498,\"f499\":499,\"f500\":500,\"f501\":501,\"f502\":502,\"f503\":503,\"f504\":504,\"f505\":505,\"f506\":506,\"f507\":507,\"f508\":508,\"f509\":509,\"f510\":510,\"f511\":511,\"f512\":512,\"f513\":513,\"f514\":514,\"f515\":515,\"f516\":516,\"f517\":517,\"f518\":518,\"f519\":519,\"f520\":520,\"f521\":521,\"f522\":522,\"f523\":523,\"f524\":524,\"f525\":525,\"f526\":526,\"f527\":527,\"f528\":528,\"f529\":529,\"f530\":530,\"f531\":531,\"f532\":532,\"f533\":533,\"f534\":534,\"f535\":535,\"f536\":536,\"f537\":537,\"f538\":538,\"f539\":539,\"f540\":540,\"f541\":541,\"f542\":542,\"f543\":543,\"f544\":544,\"f545\":545,\"f546\":546,\"f547\":547,\"f548\":548,\"f549\":549,\"f550\":550,\"f551\":551,\"f552\":552,\"f553\":553,\"f554\":554,\"f555\":555,\"f556\":556,\"f557\":557,\"f558\":558,\"f559\":559,\"f560\":560,\"f561\":561,\"f562\":562,\"f563\":563,\"f564\":564,\"f565\":565,\"f566\":566,\"f567\":567,\"f568\":568,\"f569\":569,\"f570\":570,\"f571\":571,\"f572\":572,\"f573\":573,\"f574\":574,\"f575\":575,\"f576\":576,\"f577\":577,\"f578\":578,\"f579\":579,\"f580\":580,\"f581\":581,\"f582\":582,\"f583\":583,\"f584\":584,\"f585\":585,\"f586\":586,\"f587\":587,\"f588\":588,\"f589\":589,\"f590\":590,\"f591\":591,\"f592\":592,\"f593\":593,\"f594\":594,\"f595\":595,\"f596\":596,\"f597\":597,\"f598\":598,\"f599\":599,\"f600\":600,\"f601\":601,\"f602\":602,\"f603\":603,\"f604\":604,\"f605\":605,\"f606\":606,\"f607\":607,\"f608\":608,\"f609\":609,\"f610\":610,\"f611\":611,\"f612\":612,\"f613\":613,\"f614\":614,\"f615\":615,\"f616\":616,\"f617\":617,\"f618\":618,\"f619\":619,\"f620\":620,\"f621\":621,\"f622\":622,\"f623\":623,\"f624\":624,\"f625\":625,\"f626\":626,\"f627\":627,\"f628\":628,\"f629\":629,\"f630\":630,\"f631\":631,\"f632\":632,\"f633\":633,\"f634\":634,\"f635\":635,\"f636\":636,\"f637\":637,\"f638\":638,\"f639\":639,\"f640\":640,\"f641\":641,\"f642\":642,\"f643\":643,\"f644\":644,\"f645\":645,\"f646\":646,\"f647\":647,\"f648\":648,\"f649\":649,\"f650\":650,\"f651\":651,\"f652\":652,\"f653\":653,\"f654\":654,\"f655\":655,\"f656\":656,\"f657\":657,\"f658\":658,\"f659\":659,\"f660\":660,\"f661\":661,\"f662\":662,\"f663\":663,\"f664\":664,\"f665\":665,\"f666\":666,\"f667\":667,\"f668\":668,\"f669\":669,\"f670\":670,\"f671\":671,\"f672\":672,\"f673\":673,\"f674\":674,\"f675\":675,\"f676\":676,\"f677\":677,\"f678\":678,\"f679\":679,\"f680\":680,\"f681\":681,\"f682\":682,\"f683\":683,\"f684\":684,\"f685\":685,\"f686\":686,\"f687\":687,\"f688\":688,\"f689\":689,\"f690\":690,\"f691\":691,\"f692\":692,\"f693\":693,\"f694\":694,\"f695\":695,\"f696\":696,\"f697\":697,\"f698\":698,\"f699\":699,\"f700\":700,\"f701\":701,\"f702\":702,\"f703\":703,\"f704\":704,\"f705\":705,\"f706\":706,\"f707\":707,\"f708\":708,\"f709\":709,\"f710\":710,\"f711\":711,\"f712\":712,\"f713\":713,\"f714\":714,\"f715\":715,\"f716\":716,\"f717\":717,\"f718\":718,\"f719\":719,\"f720\":720,\"f721\":721,\"f722\":722,\"f723\":723,\"f724\":724,\"f725\":725,\"f726\":726,\"f727\":727,\"f728\":728,\"f729\":729,\"f730\":730,\"f731\":731,\"f732\":732,\"f733\":733,\"f734\":734,\"f735\":735,\"f736\":736,\"f737\":737,\"f738\":738,\"f739\":739,\"f740\":740,\"f741\":741,\"f742\":742,\"f743\":743,\"f744\":744,\"f745\":745,\"f746\":746,\"f747\":747,\"f748\":748,\"f749\":749,\"f750\":750,\"f751\":751,\"f752\":752,\"f753\":753,\"f754\":754,\"f755\":755,\"f756\":756,\"f757\":757,\"f758\":758,\"f759\":759,\"f760\":760,\"f761\":761,\"f762\":762,\"f763\":763,\"f764\":764,\"f765\":765,\"f766\":766,\"f767\":767,\"f768\":768,\"f769\":769,\"f770\":770,\"f771\":771,\"f772\":772,\"f773\":773,\"f774\":774,\"f775\":775,\"f776\":776,\"f777\":777,\"f778\":778,\"f779\":779,\"f780\":780,\"f781\":781,\"f782\":782,\"f783\":783,\"f784\":784,\"f785\":785,\"f786\":786,\"f787\":787,\"f788\":788,\"f789\":789,\"f790\":790,\"f791\":791,\"f792\":792,\"f793\":793,\"f794\":794,\"f795\":795,\"f796\":796,\"f797\":797,\"f798\":798,\"f799\":799,\"f800\":800,\"f801\":801,\"f802\":802,\"f803\":803,\"f804\":804,\"f805\":805,\"f806\":806,\"f807\":807,\"f808\":808,\"f809\":809,\"f810\":810,\"f811\":811,\"f812\":812,\"f813\":813,\"f814\":814,\"f815\":815,\"f816\":816,\"f817\":817,\"f818\":818,\"f819\":819,\"f820\":820,\"f821\":821,\"f822\":822,\"f823\":823,\"f824\":824,\"f825\":825,\"f826\":826,\"f827\":827,\"f828\":828,\"f829\":829,\"f830\":830,\"f831\":831,\"f832\":832,\"f833\":833,\"f834\":834,\"f835\":835,\"f836\":836,\"f837\":837,\"f838\":838,\"f839\":839,\"f840\":840,\"f841\":841,\"f842\":842,\"f843\":843,\"f844\":844,\"f845\":845,\"f846\":846,\"f847\":847,\"f848\":848,\"f849\":849,\"f850\":850,\"f851\":851,\"f852\":852,\"f853\":853,\"f854\":854,\"f855\":855,\"f856\":856,\"f857\":857,\"f858\":858,\"f859\":859,\"f860\":860,\"f861\":861,\"f862\":862,\"f863\":863,\"f864\":864,\"f865\":865,\"f866\":866,\"f867\":867,\"f868\":868,\"f869\":869,\"f870\":870,\"f871\":871,\"f872\":872,\"f873\":873,\"f874\":874,\"f875\":875,\"f876\":876,\"f877\":877,\"f878\":878,\"f879\":879,\"f880\":880,\"f881\":881,\"f882\":882,\"f883\":883,\"f884\":884,\"f885\":885,\"f886\":886,\"f887\":887,\"f888\":888,\"f889\":889,\"f890\":890,\"f891\":891,\"f892\":892,\"f893\":893,\"f894\":894,\"f895\":895,\"f896\":896,\"f897\":897,\"f898\":898,\"f899\":899,\"f900\":900,\"f901\":901,\"f902\":902,\"f903\":903,\"f904\":904,\"f905\":905,\"f906\":906,\"f907\":907,\"f908\":908,\"f909\":909,\"f910\":910,\"f911\":911,\"f912\":912,\"f913\":913,\"f914\":914,\"f915\":915,\"f916\":916,\"f917\":917,\"f918\":918,\"f919\":919,\"f920\":920,\"f921\":921,\"f922\":922,\"f923\":923,\"f924\":924,\"f925\":925,\"f926\":926,\"f927\":927,\"f928\":928,\"f929\":929,\"f930\":930,\"f931\":931,\"f932\":932,\"f933\":933,\"f934\":934,\"f935\":935,\"f936\":936,\"f937\":937,\"f938\":938,\"f939\":939,\"f940\":940,\"f941\":941,\"f942\":942,\"f943\":943,\"f944\":944,\"f945\":945,\"f946\":946,\"f947\":947,\"f948\":948,\"f949\":949,\"f950\":950,\"f951\":951,\"f952\":952,\"f953\":953,\"f954\":954,\"f955\":955,\"f956\":956,\"f957\":957,\"f958\":958,\"f959\":959,\"f960\":960,\"f961\":961,\"f962\":962,\"f963\":963,\"f964\":964,\"f965\":965,\"f966\":966,\"f967\":967,\"f968\":968,\"f969\":969,\"f970\":970,\"f971\":971,\"f972\":972,\"f973\":973,\"f974\":974,\"f975\":975,\"f976\":976,\"f977\":977,\"f978\":978,\"f979\":979,\"f980\":980,\"f981\":981,\"f982\":982,\"f983\":983,\"f984\":984,\"f985\":985,\"f986\":986,\"f987\":987,\"f988\":988,\"f989\":989,\"f990\":990,\"f991\":991,\"f992\":992,\"f993\":993,\"f994\":994,\"f995\":995,\"f996\":996,\"f997\":997,\"f998\":998,\"f999\":999}\r\n"
  },
  {
    "path": "src/test/resources/json/object_f_null_10000.json",
    "content": "{\"f0\":true,\"f1\":true,\"f2\":true,\"f3\":true,\"f4\":true,\"f5\":true,\"f6\":true,\"f7\":true,\"f8\":true,\"f9\":true,\"f10\":true,\"f11\":true,\"f12\":true,\"f13\":true,\"f14\":true,\"f15\":true,\"f16\":true,\"f17\":true,\"f18\":true,\"f19\":true,\"f20\":true,\"f21\":true,\"f22\":true,\"f23\":true,\"f24\":true,\"f25\":true,\"f26\":true,\"f27\":true,\"f28\":true,\"f29\":true,\"f30\":true,\"f31\":true,\"f32\":true,\"f33\":true,\"f34\":true,\"f35\":true,\"f36\":true,\"f37\":true,\"f38\":true,\"f39\":true,\"f40\":true,\"f41\":true,\"f42\":true,\"f43\":true,\"f44\":true,\"f45\":true,\"f46\":true,\"f47\":true,\"f48\":true,\"f49\":true,\"f50\":true,\"f51\":true,\"f52\":true,\"f53\":true,\"f54\":true,\"f55\":true,\"f56\":true,\"f57\":true,\"f58\":true,\"f59\":true,\"f60\":true,\"f61\":true,\"f62\":true,\"f63\":true,\"f64\":true,\"f65\":true,\"f66\":true,\"f67\":true,\"f68\":true,\"f69\":true,\"f70\":true,\"f71\":true,\"f72\":true,\"f73\":true,\"f74\":true,\"f75\":true,\"f76\":true,\"f77\":true,\"f78\":true,\"f79\":true,\"f80\":true,\"f81\":true,\"f82\":true,\"f83\":true,\"f84\":true,\"f85\":true,\"f86\":true,\"f87\":true,\"f88\":true,\"f89\":true,\"f90\":true,\"f91\":true,\"f92\":true,\"f93\":true,\"f94\":true,\"f95\":true,\"f96\":true,\"f97\":true,\"f98\":true,\"f99\":true,\"f100\":true,\"f101\":true,\"f102\":true,\"f103\":true,\"f104\":true,\"f105\":true,\"f106\":true,\"f107\":true,\"f108\":true,\"f109\":true,\"f110\":true,\"f111\":true,\"f112\":true,\"f113\":true,\"f114\":true,\"f115\":true,\"f116\":true,\"f117\":true,\"f118\":true,\"f119\":true,\"f120\":true,\"f121\":true,\"f122\":true,\"f123\":true,\"f124\":true,\"f125\":true,\"f126\":true,\"f127\":true,\"f128\":true,\"f129\":true,\"f130\":true,\"f131\":true,\"f132\":true,\"f133\":true,\"f134\":true,\"f135\":true,\"f136\":true,\"f137\":true,\"f138\":true,\"f139\":true,\"f140\":true,\"f141\":true,\"f142\":true,\"f143\":true,\"f144\":true,\"f145\":true,\"f146\":true,\"f147\":true,\"f148\":true,\"f149\":true,\"f150\":true,\"f151\":true,\"f152\":true,\"f153\":true,\"f154\":true,\"f155\":true,\"f156\":true,\"f157\":true,\"f158\":true,\"f159\":true,\"f160\":true,\"f161\":true,\"f162\":true,\"f163\":true,\"f164\":true,\"f165\":true,\"f166\":true,\"f167\":true,\"f168\":true,\"f169\":true,\"f170\":true,\"f171\":true,\"f172\":true,\"f173\":true,\"f174\":true,\"f175\":true,\"f176\":true,\"f177\":true,\"f178\":true,\"f179\":true,\"f180\":true,\"f181\":true,\"f182\":true,\"f183\":true,\"f184\":true,\"f185\":true,\"f186\":true,\"f187\":true,\"f188\":true,\"f189\":true,\"f190\":true,\"f191\":true,\"f192\":true,\"f193\":true,\"f194\":true,\"f195\":true,\"f196\":true,\"f197\":true,\"f198\":true,\"f199\":true,\"f200\":true,\"f201\":true,\"f202\":true,\"f203\":true,\"f204\":true,\"f205\":true,\"f206\":true,\"f207\":true,\"f208\":true,\"f209\":true,\"f210\":true,\"f211\":true,\"f212\":true,\"f213\":true,\"f214\":true,\"f215\":true,\"f216\":true,\"f217\":true,\"f218\":true,\"f219\":true,\"f220\":true,\"f221\":true,\"f222\":true,\"f223\":true,\"f224\":true,\"f225\":true,\"f226\":true,\"f227\":true,\"f228\":true,\"f229\":true,\"f230\":true,\"f231\":true,\"f232\":true,\"f233\":true,\"f234\":true,\"f235\":true,\"f236\":true,\"f237\":true,\"f238\":true,\"f239\":true,\"f240\":true,\"f241\":true,\"f242\":true,\"f243\":true,\"f244\":true,\"f245\":true,\"f246\":true,\"f247\":true,\"f248\":true,\"f249\":true,\"f250\":true,\"f251\":true,\"f252\":true,\"f253\":true,\"f254\":true,\"f255\":true,\"f256\":true,\"f257\":true,\"f258\":true,\"f259\":true,\"f260\":true,\"f261\":true,\"f262\":true,\"f263\":true,\"f264\":true,\"f265\":true,\"f266\":true,\"f267\":true,\"f268\":true,\"f269\":true,\"f270\":true,\"f271\":true,\"f272\":true,\"f273\":true,\"f274\":true,\"f275\":true,\"f276\":true,\"f277\":true,\"f278\":true,\"f279\":true,\"f280\":true,\"f281\":true,\"f282\":true,\"f283\":true,\"f284\":true,\"f285\":true,\"f286\":true,\"f287\":true,\"f288\":true,\"f289\":true,\"f290\":true,\"f291\":true,\"f292\":true,\"f293\":true,\"f294\":true,\"f295\":true,\"f296\":true,\"f297\":true,\"f298\":true,\"f299\":true,\"f300\":true,\"f301\":true,\"f302\":true,\"f303\":true,\"f304\":true,\"f305\":true,\"f306\":true,\"f307\":true,\"f308\":true,\"f309\":true,\"f310\":true,\"f311\":true,\"f312\":true,\"f313\":true,\"f314\":true,\"f315\":true,\"f316\":true,\"f317\":true,\"f318\":true,\"f319\":true,\"f320\":true,\"f321\":true,\"f322\":true,\"f323\":true,\"f324\":true,\"f325\":true,\"f326\":true,\"f327\":true,\"f328\":true,\"f329\":true,\"f330\":true,\"f331\":true,\"f332\":true,\"f333\":true,\"f334\":true,\"f335\":true,\"f336\":true,\"f337\":true,\"f338\":true,\"f339\":true,\"f340\":true,\"f341\":true,\"f342\":true,\"f343\":true,\"f344\":true,\"f345\":true,\"f346\":true,\"f347\":true,\"f348\":true,\"f349\":true,\"f350\":true,\"f351\":true,\"f352\":true,\"f353\":true,\"f354\":true,\"f355\":true,\"f356\":true,\"f357\":true,\"f358\":true,\"f359\":true,\"f360\":true,\"f361\":true,\"f362\":true,\"f363\":true,\"f364\":true,\"f365\":true,\"f366\":true,\"f367\":true,\"f368\":true,\"f369\":true,\"f370\":true,\"f371\":true,\"f372\":true,\"f373\":true,\"f374\":true,\"f375\":true,\"f376\":true,\"f377\":true,\"f378\":true,\"f379\":true,\"f380\":true,\"f381\":true,\"f382\":true,\"f383\":true,\"f384\":true,\"f385\":true,\"f386\":true,\"f387\":true,\"f388\":true,\"f389\":true,\"f390\":true,\"f391\":true,\"f392\":true,\"f393\":true,\"f394\":true,\"f395\":true,\"f396\":true,\"f397\":true,\"f398\":true,\"f399\":true,\"f400\":true,\"f401\":true,\"f402\":true,\"f403\":true,\"f404\":true,\"f405\":true,\"f406\":true,\"f407\":true,\"f408\":true,\"f409\":true,\"f410\":true,\"f411\":true,\"f412\":true,\"f413\":true,\"f414\":true,\"f415\":true,\"f416\":true,\"f417\":true,\"f418\":true,\"f419\":true,\"f420\":true,\"f421\":true,\"f422\":true,\"f423\":true,\"f424\":true,\"f425\":true,\"f426\":true,\"f427\":true,\"f428\":true,\"f429\":true,\"f430\":true,\"f431\":true,\"f432\":true,\"f433\":true,\"f434\":true,\"f435\":true,\"f436\":true,\"f437\":true,\"f438\":true,\"f439\":true,\"f440\":true,\"f441\":true,\"f442\":true,\"f443\":true,\"f444\":true,\"f445\":true,\"f446\":true,\"f447\":true,\"f448\":true,\"f449\":true,\"f450\":true,\"f451\":true,\"f452\":true,\"f453\":true,\"f454\":true,\"f455\":true,\"f456\":true,\"f457\":true,\"f458\":true,\"f459\":true,\"f460\":true,\"f461\":true,\"f462\":true,\"f463\":true,\"f464\":true,\"f465\":true,\"f466\":true,\"f467\":true,\"f468\":true,\"f469\":true,\"f470\":true,\"f471\":true,\"f472\":true,\"f473\":true,\"f474\":true,\"f475\":true,\"f476\":true,\"f477\":true,\"f478\":true,\"f479\":true,\"f480\":true,\"f481\":true,\"f482\":true,\"f483\":true,\"f484\":true,\"f485\":true,\"f486\":true,\"f487\":true,\"f488\":true,\"f489\":true,\"f490\":true,\"f491\":true,\"f492\":true,\"f493\":true,\"f494\":true,\"f495\":true,\"f496\":true,\"f497\":true,\"f498\":true,\"f499\":true,\"f500\":true,\"f501\":true,\"f502\":true,\"f503\":true,\"f504\":true,\"f505\":true,\"f506\":true,\"f507\":true,\"f508\":true,\"f509\":true,\"f510\":true,\"f511\":true,\"f512\":true,\"f513\":true,\"f514\":true,\"f515\":true,\"f516\":true,\"f517\":true,\"f518\":true,\"f519\":true,\"f520\":true,\"f521\":true,\"f522\":true,\"f523\":true,\"f524\":true,\"f525\":true,\"f526\":true,\"f527\":true,\"f528\":true,\"f529\":true,\"f530\":true,\"f531\":true,\"f532\":true,\"f533\":true,\"f534\":true,\"f535\":true,\"f536\":true,\"f537\":true,\"f538\":true,\"f539\":true,\"f540\":true,\"f541\":true,\"f542\":true,\"f543\":true,\"f544\":true,\"f545\":true,\"f546\":true,\"f547\":true,\"f548\":true,\"f549\":true,\"f550\":true,\"f551\":true,\"f552\":true,\"f553\":true,\"f554\":true,\"f555\":true,\"f556\":true,\"f557\":true,\"f558\":true,\"f559\":true,\"f560\":true,\"f561\":true,\"f562\":true,\"f563\":true,\"f564\":true,\"f565\":true,\"f566\":true,\"f567\":true,\"f568\":true,\"f569\":true,\"f570\":true,\"f571\":true,\"f572\":true,\"f573\":true,\"f574\":true,\"f575\":true,\"f576\":true,\"f577\":true,\"f578\":true,\"f579\":true,\"f580\":true,\"f581\":true,\"f582\":true,\"f583\":true,\"f584\":true,\"f585\":true,\"f586\":true,\"f587\":true,\"f588\":true,\"f589\":true,\"f590\":true,\"f591\":true,\"f592\":true,\"f593\":true,\"f594\":true,\"f595\":true,\"f596\":true,\"f597\":true,\"f598\":true,\"f599\":true,\"f600\":true,\"f601\":true,\"f602\":true,\"f603\":true,\"f604\":true,\"f605\":true,\"f606\":true,\"f607\":true,\"f608\":true,\"f609\":true,\"f610\":true,\"f611\":true,\"f612\":true,\"f613\":true,\"f614\":true,\"f615\":true,\"f616\":true,\"f617\":true,\"f618\":true,\"f619\":true,\"f620\":true,\"f621\":true,\"f622\":true,\"f623\":true,\"f624\":true,\"f625\":true,\"f626\":true,\"f627\":true,\"f628\":true,\"f629\":true,\"f630\":true,\"f631\":true,\"f632\":true,\"f633\":true,\"f634\":true,\"f635\":true,\"f636\":true,\"f637\":true,\"f638\":true,\"f639\":true,\"f640\":true,\"f641\":true,\"f642\":true,\"f643\":true,\"f644\":true,\"f645\":true,\"f646\":true,\"f647\":true,\"f648\":true,\"f649\":true,\"f650\":true,\"f651\":true,\"f652\":true,\"f653\":true,\"f654\":true,\"f655\":true,\"f656\":true,\"f657\":true,\"f658\":true,\"f659\":true,\"f660\":true,\"f661\":true,\"f662\":true,\"f663\":true,\"f664\":true,\"f665\":true,\"f666\":true,\"f667\":true,\"f668\":true,\"f669\":true,\"f670\":true,\"f671\":true,\"f672\":true,\"f673\":true,\"f674\":true,\"f675\":true,\"f676\":true,\"f677\":true,\"f678\":true,\"f679\":true,\"f680\":true,\"f681\":true,\"f682\":true,\"f683\":true,\"f684\":true,\"f685\":true,\"f686\":true,\"f687\":true,\"f688\":true,\"f689\":true,\"f690\":true,\"f691\":true,\"f692\":true,\"f693\":true,\"f694\":true,\"f695\":true,\"f696\":true,\"f697\":true,\"f698\":true,\"f699\":true,\"f700\":true,\"f701\":true,\"f702\":true,\"f703\":true,\"f704\":true,\"f705\":true,\"f706\":true,\"f707\":true,\"f708\":true,\"f709\":true,\"f710\":true,\"f711\":true,\"f712\":true,\"f713\":true,\"f714\":true,\"f715\":true,\"f716\":true,\"f717\":true,\"f718\":true,\"f719\":true,\"f720\":true,\"f721\":true,\"f722\":true,\"f723\":true,\"f724\":true,\"f725\":true,\"f726\":true,\"f727\":true,\"f728\":true,\"f729\":true,\"f730\":true,\"f731\":true,\"f732\":true,\"f733\":true,\"f734\":true,\"f735\":true,\"f736\":true,\"f737\":true,\"f738\":true,\"f739\":true,\"f740\":true,\"f741\":true,\"f742\":true,\"f743\":true,\"f744\":true,\"f745\":true,\"f746\":true,\"f747\":true,\"f748\":true,\"f749\":true,\"f750\":true,\"f751\":true,\"f752\":true,\"f753\":true,\"f754\":true,\"f755\":true,\"f756\":true,\"f757\":true,\"f758\":true,\"f759\":true,\"f760\":true,\"f761\":true,\"f762\":true,\"f763\":true,\"f764\":true,\"f765\":true,\"f766\":true,\"f767\":true,\"f768\":true,\"f769\":true,\"f770\":true,\"f771\":true,\"f772\":true,\"f773\":true,\"f774\":true,\"f775\":true,\"f776\":true,\"f777\":true,\"f778\":true,\"f779\":true,\"f780\":true,\"f781\":true,\"f782\":true,\"f783\":true,\"f784\":true,\"f785\":true,\"f786\":true,\"f787\":true,\"f788\":true,\"f789\":true,\"f790\":true,\"f791\":true,\"f792\":true,\"f793\":true,\"f794\":true,\"f795\":true,\"f796\":true,\"f797\":true,\"f798\":true,\"f799\":true,\"f800\":true,\"f801\":true,\"f802\":true,\"f803\":true,\"f804\":true,\"f805\":true,\"f806\":true,\"f807\":true,\"f808\":true,\"f809\":true,\"f810\":true,\"f811\":true,\"f812\":true,\"f813\":true,\"f814\":true,\"f815\":true,\"f816\":true,\"f817\":true,\"f818\":true,\"f819\":true,\"f820\":true,\"f821\":true,\"f822\":true,\"f823\":true,\"f824\":true,\"f825\":true,\"f826\":true,\"f827\":true,\"f828\":true,\"f829\":true,\"f830\":true,\"f831\":true,\"f832\":true,\"f833\":true,\"f834\":true,\"f835\":true,\"f836\":true,\"f837\":true,\"f838\":true,\"f839\":true,\"f840\":true,\"f841\":true,\"f842\":true,\"f843\":true,\"f844\":true,\"f845\":true,\"f846\":true,\"f847\":true,\"f848\":true,\"f849\":true,\"f850\":true,\"f851\":true,\"f852\":true,\"f853\":true,\"f854\":true,\"f855\":true,\"f856\":true,\"f857\":true,\"f858\":true,\"f859\":true,\"f860\":true,\"f861\":true,\"f862\":true,\"f863\":true,\"f864\":true,\"f865\":true,\"f866\":true,\"f867\":true,\"f868\":true,\"f869\":true,\"f870\":true,\"f871\":true,\"f872\":true,\"f873\":true,\"f874\":true,\"f875\":true,\"f876\":true,\"f877\":true,\"f878\":true,\"f879\":true,\"f880\":true,\"f881\":true,\"f882\":true,\"f883\":true,\"f884\":true,\"f885\":true,\"f886\":true,\"f887\":true,\"f888\":true,\"f889\":true,\"f890\":true,\"f891\":true,\"f892\":true,\"f893\":true,\"f894\":true,\"f895\":true,\"f896\":true,\"f897\":true,\"f898\":true,\"f899\":true,\"f900\":true,\"f901\":true,\"f902\":true,\"f903\":true,\"f904\":true,\"f905\":true,\"f906\":true,\"f907\":true,\"f908\":true,\"f909\":true,\"f910\":true,\"f911\":true,\"f912\":true,\"f913\":true,\"f914\":true,\"f915\":true,\"f916\":true,\"f917\":true,\"f918\":true,\"f919\":true,\"f920\":true,\"f921\":true,\"f922\":true,\"f923\":true,\"f924\":true,\"f925\":true,\"f926\":true,\"f927\":true,\"f928\":true,\"f929\":true,\"f930\":true,\"f931\":true,\"f932\":true,\"f933\":true,\"f934\":true,\"f935\":true,\"f936\":true,\"f937\":true,\"f938\":true,\"f939\":true,\"f940\":true,\"f941\":true,\"f942\":true,\"f943\":true,\"f944\":true,\"f945\":true,\"f946\":true,\"f947\":true,\"f948\":true,\"f949\":true,\"f950\":true,\"f951\":true,\"f952\":true,\"f953\":true,\"f954\":true,\"f955\":true,\"f956\":true,\"f957\":true,\"f958\":true,\"f959\":true,\"f960\":true,\"f961\":true,\"f962\":true,\"f963\":true,\"f964\":true,\"f965\":true,\"f966\":true,\"f967\":true,\"f968\":true,\"f969\":true,\"f970\":true,\"f971\":true,\"f972\":true,\"f973\":true,\"f974\":true,\"f975\":true,\"f976\":true,\"f977\":true,\"f978\":true,\"f979\":true,\"f980\":true,\"f981\":true,\"f982\":true,\"f983\":true,\"f984\":true,\"f985\":true,\"f986\":true,\"f987\":true,\"f988\":true,\"f989\":true,\"f990\":true,\"f991\":true,\"f992\":true,\"f993\":true,\"f994\":true,\"f995\":true,\"f996\":true,\"f997\":true,\"f998\":true,\"f999\":true}\r\n"
  },
  {
    "path": "src/test/resources/json/object_f_string_10000.json",
    "content": "{\"f0\":\"0\",\"f1\":\"0\",\"f2\":\"0\",\"f3\":\"0\",\"f4\":\"0\",\"f5\":\"0\",\"f6\":\"0\",\"f7\":\"0\",\"f8\":\"0\",\"f9\":\"0\",\"f10\":\"0\",\"f11\":\"0\",\"f12\":\"0\",\"f13\":\"0\",\"f14\":\"0\",\"f15\":\"0\",\"f16\":\"0\",\"f17\":\"0\",\"f18\":\"0\",\"f19\":\"0\",\"f20\":\"0\",\"f21\":\"0\",\"f22\":\"0\",\"f23\":\"0\",\"f24\":\"0\",\"f25\":\"0\",\"f26\":\"0\",\"f27\":\"0\",\"f28\":\"0\",\"f29\":\"0\",\"f30\":\"0\",\"f31\":\"0\",\"f32\":\"0\",\"f33\":\"0\",\"f34\":\"0\",\"f35\":\"0\",\"f36\":\"0\",\"f37\":\"0\",\"f38\":\"0\",\"f39\":\"0\",\"f40\":\"0\",\"f41\":\"0\",\"f42\":\"0\",\"f43\":\"0\",\"f44\":\"0\",\"f45\":\"0\",\"f46\":\"0\",\"f47\":\"0\",\"f48\":\"0\",\"f49\":\"0\",\"f50\":\"0\",\"f51\":\"0\",\"f52\":\"0\",\"f53\":\"0\",\"f54\":\"0\",\"f55\":\"0\",\"f56\":\"0\",\"f57\":\"0\",\"f58\":\"0\",\"f59\":\"0\",\"f60\":\"0\",\"f61\":\"0\",\"f62\":\"0\",\"f63\":\"0\",\"f64\":\"0\",\"f65\":\"0\",\"f66\":\"0\",\"f67\":\"0\",\"f68\":\"0\",\"f69\":\"0\",\"f70\":\"0\",\"f71\":\"0\",\"f72\":\"0\",\"f73\":\"0\",\"f74\":\"0\",\"f75\":\"0\",\"f76\":\"0\",\"f77\":\"0\",\"f78\":\"0\",\"f79\":\"0\",\"f80\":\"0\",\"f81\":\"0\",\"f82\":\"0\",\"f83\":\"0\",\"f84\":\"0\",\"f85\":\"0\",\"f86\":\"0\",\"f87\":\"0\",\"f88\":\"0\",\"f89\":\"0\",\"f90\":\"0\",\"f91\":\"0\",\"f92\":\"0\",\"f93\":\"0\",\"f94\":\"0\",\"f95\":\"0\",\"f96\":\"0\",\"f97\":\"0\",\"f98\":\"0\",\"f99\":\"0\",\"f100\":\"0\",\"f101\":\"0\",\"f102\":\"0\",\"f103\":\"0\",\"f104\":\"0\",\"f105\":\"0\",\"f106\":\"0\",\"f107\":\"0\",\"f108\":\"0\",\"f109\":\"0\",\"f110\":\"0\",\"f111\":\"0\",\"f112\":\"0\",\"f113\":\"0\",\"f114\":\"0\",\"f115\":\"0\",\"f116\":\"0\",\"f117\":\"0\",\"f118\":\"0\",\"f119\":\"0\",\"f120\":\"0\",\"f121\":\"0\",\"f122\":\"0\",\"f123\":\"0\",\"f124\":\"0\",\"f125\":\"0\",\"f126\":\"0\",\"f127\":\"0\",\"f128\":\"0\",\"f129\":\"0\",\"f130\":\"0\",\"f131\":\"0\",\"f132\":\"0\",\"f133\":\"0\",\"f134\":\"0\",\"f135\":\"0\",\"f136\":\"0\",\"f137\":\"0\",\"f138\":\"0\",\"f139\":\"0\",\"f140\":\"0\",\"f141\":\"0\",\"f142\":\"0\",\"f143\":\"0\",\"f144\":\"0\",\"f145\":\"0\",\"f146\":\"0\",\"f147\":\"0\",\"f148\":\"0\",\"f149\":\"0\",\"f150\":\"0\",\"f151\":\"0\",\"f152\":\"0\",\"f153\":\"0\",\"f154\":\"0\",\"f155\":\"0\",\"f156\":\"0\",\"f157\":\"0\",\"f158\":\"0\",\"f159\":\"0\",\"f160\":\"0\",\"f161\":\"0\",\"f162\":\"0\",\"f163\":\"0\",\"f164\":\"0\",\"f165\":\"0\",\"f166\":\"0\",\"f167\":\"0\",\"f168\":\"0\",\"f169\":\"0\",\"f170\":\"0\",\"f171\":\"0\",\"f172\":\"0\",\"f173\":\"0\",\"f174\":\"0\",\"f175\":\"0\",\"f176\":\"0\",\"f177\":\"0\",\"f178\":\"0\",\"f179\":\"0\",\"f180\":\"0\",\"f181\":\"0\",\"f182\":\"0\",\"f183\":\"0\",\"f184\":\"0\",\"f185\":\"0\",\"f186\":\"0\",\"f187\":\"0\",\"f188\":\"0\",\"f189\":\"0\",\"f190\":\"0\",\"f191\":\"0\",\"f192\":\"0\",\"f193\":\"0\",\"f194\":\"0\",\"f195\":\"0\",\"f196\":\"0\",\"f197\":\"0\",\"f198\":\"0\",\"f199\":\"0\",\"f200\":\"0\",\"f201\":\"0\",\"f202\":\"0\",\"f203\":\"0\",\"f204\":\"0\",\"f205\":\"0\",\"f206\":\"0\",\"f207\":\"0\",\"f208\":\"0\",\"f209\":\"0\",\"f210\":\"0\",\"f211\":\"0\",\"f212\":\"0\",\"f213\":\"0\",\"f214\":\"0\",\"f215\":\"0\",\"f216\":\"0\",\"f217\":\"0\",\"f218\":\"0\",\"f219\":\"0\",\"f220\":\"0\",\"f221\":\"0\",\"f222\":\"0\",\"f223\":\"0\",\"f224\":\"0\",\"f225\":\"0\",\"f226\":\"0\",\"f227\":\"0\",\"f228\":\"0\",\"f229\":\"0\",\"f230\":\"0\",\"f231\":\"0\",\"f232\":\"0\",\"f233\":\"0\",\"f234\":\"0\",\"f235\":\"0\",\"f236\":\"0\",\"f237\":\"0\",\"f238\":\"0\",\"f239\":\"0\",\"f240\":\"0\",\"f241\":\"0\",\"f242\":\"0\",\"f243\":\"0\",\"f244\":\"0\",\"f245\":\"0\",\"f246\":\"0\",\"f247\":\"0\",\"f248\":\"0\",\"f249\":\"0\",\"f250\":\"0\",\"f251\":\"0\",\"f252\":\"0\",\"f253\":\"0\",\"f254\":\"0\",\"f255\":\"0\",\"f256\":\"0\",\"f257\":\"0\",\"f258\":\"0\",\"f259\":\"0\",\"f260\":\"0\",\"f261\":\"0\",\"f262\":\"0\",\"f263\":\"0\",\"f264\":\"0\",\"f265\":\"0\",\"f266\":\"0\",\"f267\":\"0\",\"f268\":\"0\",\"f269\":\"0\",\"f270\":\"0\",\"f271\":\"0\",\"f272\":\"0\",\"f273\":\"0\",\"f274\":\"0\",\"f275\":\"0\",\"f276\":\"0\",\"f277\":\"0\",\"f278\":\"0\",\"f279\":\"0\",\"f280\":\"0\",\"f281\":\"0\",\"f282\":\"0\",\"f283\":\"0\",\"f284\":\"0\",\"f285\":\"0\",\"f286\":\"0\",\"f287\":\"0\",\"f288\":\"0\",\"f289\":\"0\",\"f290\":\"0\",\"f291\":\"0\",\"f292\":\"0\",\"f293\":\"0\",\"f294\":\"0\",\"f295\":\"0\",\"f296\":\"0\",\"f297\":\"0\",\"f298\":\"0\",\"f299\":\"0\",\"f300\":\"0\",\"f301\":\"0\",\"f302\":\"0\",\"f303\":\"0\",\"f304\":\"0\",\"f305\":\"0\",\"f306\":\"0\",\"f307\":\"0\",\"f308\":\"0\",\"f309\":\"0\",\"f310\":\"0\",\"f311\":\"0\",\"f312\":\"0\",\"f313\":\"0\",\"f314\":\"0\",\"f315\":\"0\",\"f316\":\"0\",\"f317\":\"0\",\"f318\":\"0\",\"f319\":\"0\",\"f320\":\"0\",\"f321\":\"0\",\"f322\":\"0\",\"f323\":\"0\",\"f324\":\"0\",\"f325\":\"0\",\"f326\":\"0\",\"f327\":\"0\",\"f328\":\"0\",\"f329\":\"0\",\"f330\":\"0\",\"f331\":\"0\",\"f332\":\"0\",\"f333\":\"0\",\"f334\":\"0\",\"f335\":\"0\",\"f336\":\"0\",\"f337\":\"0\",\"f338\":\"0\",\"f339\":\"0\",\"f340\":\"0\",\"f341\":\"0\",\"f342\":\"0\",\"f343\":\"0\",\"f344\":\"0\",\"f345\":\"0\",\"f346\":\"0\",\"f347\":\"0\",\"f348\":\"0\",\"f349\":\"0\",\"f350\":\"0\",\"f351\":\"0\",\"f352\":\"0\",\"f353\":\"0\",\"f354\":\"0\",\"f355\":\"0\",\"f356\":\"0\",\"f357\":\"0\",\"f358\":\"0\",\"f359\":\"0\",\"f360\":\"0\",\"f361\":\"0\",\"f362\":\"0\",\"f363\":\"0\",\"f364\":\"0\",\"f365\":\"0\",\"f366\":\"0\",\"f367\":\"0\",\"f368\":\"0\",\"f369\":\"0\",\"f370\":\"0\",\"f371\":\"0\",\"f372\":\"0\",\"f373\":\"0\",\"f374\":\"0\",\"f375\":\"0\",\"f376\":\"0\",\"f377\":\"0\",\"f378\":\"0\",\"f379\":\"0\",\"f380\":\"0\",\"f381\":\"0\",\"f382\":\"0\",\"f383\":\"0\",\"f384\":\"0\",\"f385\":\"0\",\"f386\":\"0\",\"f387\":\"0\",\"f388\":\"0\",\"f389\":\"0\",\"f390\":\"0\",\"f391\":\"0\",\"f392\":\"0\",\"f393\":\"0\",\"f394\":\"0\",\"f395\":\"0\",\"f396\":\"0\",\"f397\":\"0\",\"f398\":\"0\",\"f399\":\"0\",\"f400\":\"0\",\"f401\":\"0\",\"f402\":\"0\",\"f403\":\"0\",\"f404\":\"0\",\"f405\":\"0\",\"f406\":\"0\",\"f407\":\"0\",\"f408\":\"0\",\"f409\":\"0\",\"f410\":\"0\",\"f411\":\"0\",\"f412\":\"0\",\"f413\":\"0\",\"f414\":\"0\",\"f415\":\"0\",\"f416\":\"0\",\"f417\":\"0\",\"f418\":\"0\",\"f419\":\"0\",\"f420\":\"0\",\"f421\":\"0\",\"f422\":\"0\",\"f423\":\"0\",\"f424\":\"0\",\"f425\":\"0\",\"f426\":\"0\",\"f427\":\"0\",\"f428\":\"0\",\"f429\":\"0\",\"f430\":\"0\",\"f431\":\"0\",\"f432\":\"0\",\"f433\":\"0\",\"f434\":\"0\",\"f435\":\"0\",\"f436\":\"0\",\"f437\":\"0\",\"f438\":\"0\",\"f439\":\"0\",\"f440\":\"0\",\"f441\":\"0\",\"f442\":\"0\",\"f443\":\"0\",\"f444\":\"0\",\"f445\":\"0\",\"f446\":\"0\",\"f447\":\"0\",\"f448\":\"0\",\"f449\":\"0\",\"f450\":\"0\",\"f451\":\"0\",\"f452\":\"0\",\"f453\":\"0\",\"f454\":\"0\",\"f455\":\"0\",\"f456\":\"0\",\"f457\":\"0\",\"f458\":\"0\",\"f459\":\"0\",\"f460\":\"0\",\"f461\":\"0\",\"f462\":\"0\",\"f463\":\"0\",\"f464\":\"0\",\"f465\":\"0\",\"f466\":\"0\",\"f467\":\"0\",\"f468\":\"0\",\"f469\":\"0\",\"f470\":\"0\",\"f471\":\"0\",\"f472\":\"0\",\"f473\":\"0\",\"f474\":\"0\",\"f475\":\"0\",\"f476\":\"0\",\"f477\":\"0\",\"f478\":\"0\",\"f479\":\"0\",\"f480\":\"0\",\"f481\":\"0\",\"f482\":\"0\",\"f483\":\"0\",\"f484\":\"0\",\"f485\":\"0\",\"f486\":\"0\",\"f487\":\"0\",\"f488\":\"0\",\"f489\":\"0\",\"f490\":\"0\",\"f491\":\"0\",\"f492\":\"0\",\"f493\":\"0\",\"f494\":\"0\",\"f495\":\"0\",\"f496\":\"0\",\"f497\":\"0\",\"f498\":\"0\",\"f499\":\"0\",\"f500\":\"0\",\"f501\":\"0\",\"f502\":\"0\",\"f503\":\"0\",\"f504\":\"0\",\"f505\":\"0\",\"f506\":\"0\",\"f507\":\"0\",\"f508\":\"0\",\"f509\":\"0\",\"f510\":\"0\",\"f511\":\"0\",\"f512\":\"0\",\"f513\":\"0\",\"f514\":\"0\",\"f515\":\"0\",\"f516\":\"0\",\"f517\":\"0\",\"f518\":\"0\",\"f519\":\"0\",\"f520\":\"0\",\"f521\":\"0\",\"f522\":\"0\",\"f523\":\"0\",\"f524\":\"0\",\"f525\":\"0\",\"f526\":\"0\",\"f527\":\"0\",\"f528\":\"0\",\"f529\":\"0\",\"f530\":\"0\",\"f531\":\"0\",\"f532\":\"0\",\"f533\":\"0\",\"f534\":\"0\",\"f535\":\"0\",\"f536\":\"0\",\"f537\":\"0\",\"f538\":\"0\",\"f539\":\"0\",\"f540\":\"0\",\"f541\":\"0\",\"f542\":\"0\",\"f543\":\"0\",\"f544\":\"0\",\"f545\":\"0\",\"f546\":\"0\",\"f547\":\"0\",\"f548\":\"0\",\"f549\":\"0\",\"f550\":\"0\",\"f551\":\"0\",\"f552\":\"0\",\"f553\":\"0\",\"f554\":\"0\",\"f555\":\"0\",\"f556\":\"0\",\"f557\":\"0\",\"f558\":\"0\",\"f559\":\"0\",\"f560\":\"0\",\"f561\":\"0\",\"f562\":\"0\",\"f563\":\"0\",\"f564\":\"0\",\"f565\":\"0\",\"f566\":\"0\",\"f567\":\"0\",\"f568\":\"0\",\"f569\":\"0\",\"f570\":\"0\",\"f571\":\"0\",\"f572\":\"0\",\"f573\":\"0\",\"f574\":\"0\",\"f575\":\"0\",\"f576\":\"0\",\"f577\":\"0\",\"f578\":\"0\",\"f579\":\"0\",\"f580\":\"0\",\"f581\":\"0\",\"f582\":\"0\",\"f583\":\"0\",\"f584\":\"0\",\"f585\":\"0\",\"f586\":\"0\",\"f587\":\"0\",\"f588\":\"0\",\"f589\":\"0\",\"f590\":\"0\",\"f591\":\"0\",\"f592\":\"0\",\"f593\":\"0\",\"f594\":\"0\",\"f595\":\"0\",\"f596\":\"0\",\"f597\":\"0\",\"f598\":\"0\",\"f599\":\"0\",\"f600\":\"0\",\"f601\":\"0\",\"f602\":\"0\",\"f603\":\"0\",\"f604\":\"0\",\"f605\":\"0\",\"f606\":\"0\",\"f607\":\"0\",\"f608\":\"0\",\"f609\":\"0\",\"f610\":\"0\",\"f611\":\"0\",\"f612\":\"0\",\"f613\":\"0\",\"f614\":\"0\",\"f615\":\"0\",\"f616\":\"0\",\"f617\":\"0\",\"f618\":\"0\",\"f619\":\"0\",\"f620\":\"0\",\"f621\":\"0\",\"f622\":\"0\",\"f623\":\"0\",\"f624\":\"0\",\"f625\":\"0\",\"f626\":\"0\",\"f627\":\"0\",\"f628\":\"0\",\"f629\":\"0\",\"f630\":\"0\",\"f631\":\"0\",\"f632\":\"0\",\"f633\":\"0\",\"f634\":\"0\",\"f635\":\"0\",\"f636\":\"0\",\"f637\":\"0\",\"f638\":\"0\",\"f639\":\"0\",\"f640\":\"0\",\"f641\":\"0\",\"f642\":\"0\",\"f643\":\"0\",\"f644\":\"0\",\"f645\":\"0\",\"f646\":\"0\",\"f647\":\"0\",\"f648\":\"0\",\"f649\":\"0\",\"f650\":\"0\",\"f651\":\"0\",\"f652\":\"0\",\"f653\":\"0\",\"f654\":\"0\",\"f655\":\"0\",\"f656\":\"0\",\"f657\":\"0\",\"f658\":\"0\",\"f659\":\"0\",\"f660\":\"0\",\"f661\":\"0\",\"f662\":\"0\",\"f663\":\"0\",\"f664\":\"0\",\"f665\":\"0\",\"f666\":\"0\",\"f667\":\"0\",\"f668\":\"0\",\"f669\":\"0\",\"f670\":\"0\",\"f671\":\"0\",\"f672\":\"0\",\"f673\":\"0\",\"f674\":\"0\",\"f675\":\"0\",\"f676\":\"0\",\"f677\":\"0\",\"f678\":\"0\",\"f679\":\"0\",\"f680\":\"0\",\"f681\":\"0\",\"f682\":\"0\",\"f683\":\"0\",\"f684\":\"0\",\"f685\":\"0\",\"f686\":\"0\",\"f687\":\"0\",\"f688\":\"0\",\"f689\":\"0\",\"f690\":\"0\",\"f691\":\"0\",\"f692\":\"0\",\"f693\":\"0\",\"f694\":\"0\",\"f695\":\"0\",\"f696\":\"0\",\"f697\":\"0\",\"f698\":\"0\",\"f699\":\"0\",\"f700\":\"0\",\"f701\":\"0\",\"f702\":\"0\",\"f703\":\"0\",\"f704\":\"0\",\"f705\":\"0\",\"f706\":\"0\",\"f707\":\"0\",\"f708\":\"0\",\"f709\":\"0\",\"f710\":\"0\",\"f711\":\"0\",\"f712\":\"0\",\"f713\":\"0\",\"f714\":\"0\",\"f715\":\"0\",\"f716\":\"0\",\"f717\":\"0\",\"f718\":\"0\",\"f719\":\"0\",\"f720\":\"0\",\"f721\":\"0\",\"f722\":\"0\",\"f723\":\"0\",\"f724\":\"0\",\"f725\":\"0\",\"f726\":\"0\",\"f727\":\"0\",\"f728\":\"0\",\"f729\":\"0\",\"f730\":\"0\",\"f731\":\"0\",\"f732\":\"0\",\"f733\":\"0\",\"f734\":\"0\",\"f735\":\"0\",\"f736\":\"0\",\"f737\":\"0\",\"f738\":\"0\",\"f739\":\"0\",\"f740\":\"0\",\"f741\":\"0\",\"f742\":\"0\",\"f743\":\"0\",\"f744\":\"0\",\"f745\":\"0\",\"f746\":\"0\",\"f747\":\"0\",\"f748\":\"0\",\"f749\":\"0\",\"f750\":\"0\",\"f751\":\"0\",\"f752\":\"0\",\"f753\":\"0\",\"f754\":\"0\",\"f755\":\"0\",\"f756\":\"0\",\"f757\":\"0\",\"f758\":\"0\",\"f759\":\"0\",\"f760\":\"0\",\"f761\":\"0\",\"f762\":\"0\",\"f763\":\"0\",\"f764\":\"0\",\"f765\":\"0\",\"f766\":\"0\",\"f767\":\"0\",\"f768\":\"0\",\"f769\":\"0\",\"f770\":\"0\",\"f771\":\"0\",\"f772\":\"0\",\"f773\":\"0\",\"f774\":\"0\",\"f775\":\"0\",\"f776\":\"0\",\"f777\":\"0\",\"f778\":\"0\",\"f779\":\"0\",\"f780\":\"0\",\"f781\":\"0\",\"f782\":\"0\",\"f783\":\"0\",\"f784\":\"0\",\"f785\":\"0\",\"f786\":\"0\",\"f787\":\"0\",\"f788\":\"0\",\"f789\":\"0\",\"f790\":\"0\",\"f791\":\"0\",\"f792\":\"0\",\"f793\":\"0\",\"f794\":\"0\",\"f795\":\"0\",\"f796\":\"0\",\"f797\":\"0\",\"f798\":\"0\",\"f799\":\"0\",\"f800\":\"0\",\"f801\":\"0\",\"f802\":\"0\",\"f803\":\"0\",\"f804\":\"0\",\"f805\":\"0\",\"f806\":\"0\",\"f807\":\"0\",\"f808\":\"0\",\"f809\":\"0\",\"f810\":\"0\",\"f811\":\"0\",\"f812\":\"0\",\"f813\":\"0\",\"f814\":\"0\",\"f815\":\"0\",\"f816\":\"0\",\"f817\":\"0\",\"f818\":\"0\",\"f819\":\"0\",\"f820\":\"0\",\"f821\":\"0\",\"f822\":\"0\",\"f823\":\"0\",\"f824\":\"0\",\"f825\":\"0\",\"f826\":\"0\",\"f827\":\"0\",\"f828\":\"0\",\"f829\":\"0\",\"f830\":\"0\",\"f831\":\"0\",\"f832\":\"0\",\"f833\":\"0\",\"f834\":\"0\",\"f835\":\"0\",\"f836\":\"0\",\"f837\":\"0\",\"f838\":\"0\",\"f839\":\"0\",\"f840\":\"0\",\"f841\":\"0\",\"f842\":\"0\",\"f843\":\"0\",\"f844\":\"0\",\"f845\":\"0\",\"f846\":\"0\",\"f847\":\"0\",\"f848\":\"0\",\"f849\":\"0\",\"f850\":\"0\",\"f851\":\"0\",\"f852\":\"0\",\"f853\":\"0\",\"f854\":\"0\",\"f855\":\"0\",\"f856\":\"0\",\"f857\":\"0\",\"f858\":\"0\",\"f859\":\"0\",\"f860\":\"0\",\"f861\":\"0\",\"f862\":\"0\",\"f863\":\"0\",\"f864\":\"0\",\"f865\":\"0\",\"f866\":\"0\",\"f867\":\"0\",\"f868\":\"0\",\"f869\":\"0\",\"f870\":\"0\",\"f871\":\"0\",\"f872\":\"0\",\"f873\":\"0\",\"f874\":\"0\",\"f875\":\"0\",\"f876\":\"0\",\"f877\":\"0\",\"f878\":\"0\",\"f879\":\"0\",\"f880\":\"0\",\"f881\":\"0\",\"f882\":\"0\",\"f883\":\"0\",\"f884\":\"0\",\"f885\":\"0\",\"f886\":\"0\",\"f887\":\"0\",\"f888\":\"0\",\"f889\":\"0\",\"f890\":\"0\",\"f891\":\"0\",\"f892\":\"0\",\"f893\":\"0\",\"f894\":\"0\",\"f895\":\"0\",\"f896\":\"0\",\"f897\":\"0\",\"f898\":\"0\",\"f899\":\"0\",\"f900\":\"0\",\"f901\":\"0\",\"f902\":\"0\",\"f903\":\"0\",\"f904\":\"0\",\"f905\":\"0\",\"f906\":\"0\",\"f907\":\"0\",\"f908\":\"0\",\"f909\":\"0\",\"f910\":\"0\",\"f911\":\"0\",\"f912\":\"0\",\"f913\":\"0\",\"f914\":\"0\",\"f915\":\"0\",\"f916\":\"0\",\"f917\":\"0\",\"f918\":\"0\",\"f919\":\"0\",\"f920\":\"0\",\"f921\":\"0\",\"f922\":\"0\",\"f923\":\"0\",\"f924\":\"0\",\"f925\":\"0\",\"f926\":\"0\",\"f927\":\"0\",\"f928\":\"0\",\"f929\":\"0\",\"f930\":\"0\",\"f931\":\"0\",\"f932\":\"0\",\"f933\":\"0\",\"f934\":\"0\",\"f935\":\"0\",\"f936\":\"0\",\"f937\":\"0\",\"f938\":\"0\",\"f939\":\"0\",\"f940\":\"0\",\"f941\":\"0\",\"f942\":\"0\",\"f943\":\"0\",\"f944\":\"0\",\"f945\":\"0\",\"f946\":\"0\",\"f947\":\"0\",\"f948\":\"0\",\"f949\":\"0\",\"f950\":\"0\",\"f951\":\"0\",\"f952\":\"0\",\"f953\":\"0\",\"f954\":\"0\",\"f955\":\"0\",\"f956\":\"0\",\"f957\":\"0\",\"f958\":\"0\",\"f959\":\"0\",\"f960\":\"0\",\"f961\":\"0\",\"f962\":\"0\",\"f963\":\"0\",\"f964\":\"0\",\"f965\":\"0\",\"f966\":\"0\",\"f967\":\"0\",\"f968\":\"0\",\"f969\":\"0\",\"f970\":\"0\",\"f971\":\"0\",\"f972\":\"0\",\"f973\":\"0\",\"f974\":\"0\",\"f975\":\"0\",\"f976\":\"0\",\"f977\":\"0\",\"f978\":\"0\",\"f979\":\"0\",\"f980\":\"0\",\"f981\":\"0\",\"f982\":\"0\",\"f983\":\"0\",\"f984\":\"0\",\"f985\":\"0\",\"f986\":\"0\",\"f987\":\"0\",\"f988\":\"0\",\"f989\":\"0\",\"f990\":\"0\",\"f991\":\"0\",\"f992\":\"0\",\"f993\":\"0\",\"f994\":\"0\",\"f995\":\"0\",\"f996\":\"0\",\"f997\":\"0\",\"f998\":\"0\",\"f999\":\"0\"}\r\n"
  },
  {
    "path": "src/test/resources/json/object_f_true_10000.json",
    "content": "{\"f0\":true,\"f1\":true,\"f2\":true,\"f3\":true,\"f4\":true,\"f5\":true,\"f6\":true,\"f7\":true,\"f8\":true,\"f9\":true,\"f10\":true,\"f11\":true,\"f12\":true,\"f13\":true,\"f14\":true,\"f15\":true,\"f16\":true,\"f17\":true,\"f18\":true,\"f19\":true,\"f20\":true,\"f21\":true,\"f22\":true,\"f23\":true,\"f24\":true,\"f25\":true,\"f26\":true,\"f27\":true,\"f28\":true,\"f29\":true,\"f30\":true,\"f31\":true,\"f32\":true,\"f33\":true,\"f34\":true,\"f35\":true,\"f36\":true,\"f37\":true,\"f38\":true,\"f39\":true,\"f40\":true,\"f41\":true,\"f42\":true,\"f43\":true,\"f44\":true,\"f45\":true,\"f46\":true,\"f47\":true,\"f48\":true,\"f49\":true,\"f50\":true,\"f51\":true,\"f52\":true,\"f53\":true,\"f54\":true,\"f55\":true,\"f56\":true,\"f57\":true,\"f58\":true,\"f59\":true,\"f60\":true,\"f61\":true,\"f62\":true,\"f63\":true,\"f64\":true,\"f65\":true,\"f66\":true,\"f67\":true,\"f68\":true,\"f69\":true,\"f70\":true,\"f71\":true,\"f72\":true,\"f73\":true,\"f74\":true,\"f75\":true,\"f76\":true,\"f77\":true,\"f78\":true,\"f79\":true,\"f80\":true,\"f81\":true,\"f82\":true,\"f83\":true,\"f84\":true,\"f85\":true,\"f86\":true,\"f87\":true,\"f88\":true,\"f89\":true,\"f90\":true,\"f91\":true,\"f92\":true,\"f93\":true,\"f94\":true,\"f95\":true,\"f96\":true,\"f97\":true,\"f98\":true,\"f99\":true,\"f100\":true,\"f101\":true,\"f102\":true,\"f103\":true,\"f104\":true,\"f105\":true,\"f106\":true,\"f107\":true,\"f108\":true,\"f109\":true,\"f110\":true,\"f111\":true,\"f112\":true,\"f113\":true,\"f114\":true,\"f115\":true,\"f116\":true,\"f117\":true,\"f118\":true,\"f119\":true,\"f120\":true,\"f121\":true,\"f122\":true,\"f123\":true,\"f124\":true,\"f125\":true,\"f126\":true,\"f127\":true,\"f128\":true,\"f129\":true,\"f130\":true,\"f131\":true,\"f132\":true,\"f133\":true,\"f134\":true,\"f135\":true,\"f136\":true,\"f137\":true,\"f138\":true,\"f139\":true,\"f140\":true,\"f141\":true,\"f142\":true,\"f143\":true,\"f144\":true,\"f145\":true,\"f146\":true,\"f147\":true,\"f148\":true,\"f149\":true,\"f150\":true,\"f151\":true,\"f152\":true,\"f153\":true,\"f154\":true,\"f155\":true,\"f156\":true,\"f157\":true,\"f158\":true,\"f159\":true,\"f160\":true,\"f161\":true,\"f162\":true,\"f163\":true,\"f164\":true,\"f165\":true,\"f166\":true,\"f167\":true,\"f168\":true,\"f169\":true,\"f170\":true,\"f171\":true,\"f172\":true,\"f173\":true,\"f174\":true,\"f175\":true,\"f176\":true,\"f177\":true,\"f178\":true,\"f179\":true,\"f180\":true,\"f181\":true,\"f182\":true,\"f183\":true,\"f184\":true,\"f185\":true,\"f186\":true,\"f187\":true,\"f188\":true,\"f189\":true,\"f190\":true,\"f191\":true,\"f192\":true,\"f193\":true,\"f194\":true,\"f195\":true,\"f196\":true,\"f197\":true,\"f198\":true,\"f199\":true,\"f200\":true,\"f201\":true,\"f202\":true,\"f203\":true,\"f204\":true,\"f205\":true,\"f206\":true,\"f207\":true,\"f208\":true,\"f209\":true,\"f210\":true,\"f211\":true,\"f212\":true,\"f213\":true,\"f214\":true,\"f215\":true,\"f216\":true,\"f217\":true,\"f218\":true,\"f219\":true,\"f220\":true,\"f221\":true,\"f222\":true,\"f223\":true,\"f224\":true,\"f225\":true,\"f226\":true,\"f227\":true,\"f228\":true,\"f229\":true,\"f230\":true,\"f231\":true,\"f232\":true,\"f233\":true,\"f234\":true,\"f235\":true,\"f236\":true,\"f237\":true,\"f238\":true,\"f239\":true,\"f240\":true,\"f241\":true,\"f242\":true,\"f243\":true,\"f244\":true,\"f245\":true,\"f246\":true,\"f247\":true,\"f248\":true,\"f249\":true,\"f250\":true,\"f251\":true,\"f252\":true,\"f253\":true,\"f254\":true,\"f255\":true,\"f256\":true,\"f257\":true,\"f258\":true,\"f259\":true,\"f260\":true,\"f261\":true,\"f262\":true,\"f263\":true,\"f264\":true,\"f265\":true,\"f266\":true,\"f267\":true,\"f268\":true,\"f269\":true,\"f270\":true,\"f271\":true,\"f272\":true,\"f273\":true,\"f274\":true,\"f275\":true,\"f276\":true,\"f277\":true,\"f278\":true,\"f279\":true,\"f280\":true,\"f281\":true,\"f282\":true,\"f283\":true,\"f284\":true,\"f285\":true,\"f286\":true,\"f287\":true,\"f288\":true,\"f289\":true,\"f290\":true,\"f291\":true,\"f292\":true,\"f293\":true,\"f294\":true,\"f295\":true,\"f296\":true,\"f297\":true,\"f298\":true,\"f299\":true,\"f300\":true,\"f301\":true,\"f302\":true,\"f303\":true,\"f304\":true,\"f305\":true,\"f306\":true,\"f307\":true,\"f308\":true,\"f309\":true,\"f310\":true,\"f311\":true,\"f312\":true,\"f313\":true,\"f314\":true,\"f315\":true,\"f316\":true,\"f317\":true,\"f318\":true,\"f319\":true,\"f320\":true,\"f321\":true,\"f322\":true,\"f323\":true,\"f324\":true,\"f325\":true,\"f326\":true,\"f327\":true,\"f328\":true,\"f329\":true,\"f330\":true,\"f331\":true,\"f332\":true,\"f333\":true,\"f334\":true,\"f335\":true,\"f336\":true,\"f337\":true,\"f338\":true,\"f339\":true,\"f340\":true,\"f341\":true,\"f342\":true,\"f343\":true,\"f344\":true,\"f345\":true,\"f346\":true,\"f347\":true,\"f348\":true,\"f349\":true,\"f350\":true,\"f351\":true,\"f352\":true,\"f353\":true,\"f354\":true,\"f355\":true,\"f356\":true,\"f357\":true,\"f358\":true,\"f359\":true,\"f360\":true,\"f361\":true,\"f362\":true,\"f363\":true,\"f364\":true,\"f365\":true,\"f366\":true,\"f367\":true,\"f368\":true,\"f369\":true,\"f370\":true,\"f371\":true,\"f372\":true,\"f373\":true,\"f374\":true,\"f375\":true,\"f376\":true,\"f377\":true,\"f378\":true,\"f379\":true,\"f380\":true,\"f381\":true,\"f382\":true,\"f383\":true,\"f384\":true,\"f385\":true,\"f386\":true,\"f387\":true,\"f388\":true,\"f389\":true,\"f390\":true,\"f391\":true,\"f392\":true,\"f393\":true,\"f394\":true,\"f395\":true,\"f396\":true,\"f397\":true,\"f398\":true,\"f399\":true,\"f400\":true,\"f401\":true,\"f402\":true,\"f403\":true,\"f404\":true,\"f405\":true,\"f406\":true,\"f407\":true,\"f408\":true,\"f409\":true,\"f410\":true,\"f411\":true,\"f412\":true,\"f413\":true,\"f414\":true,\"f415\":true,\"f416\":true,\"f417\":true,\"f418\":true,\"f419\":true,\"f420\":true,\"f421\":true,\"f422\":true,\"f423\":true,\"f424\":true,\"f425\":true,\"f426\":true,\"f427\":true,\"f428\":true,\"f429\":true,\"f430\":true,\"f431\":true,\"f432\":true,\"f433\":true,\"f434\":true,\"f435\":true,\"f436\":true,\"f437\":true,\"f438\":true,\"f439\":true,\"f440\":true,\"f441\":true,\"f442\":true,\"f443\":true,\"f444\":true,\"f445\":true,\"f446\":true,\"f447\":true,\"f448\":true,\"f449\":true,\"f450\":true,\"f451\":true,\"f452\":true,\"f453\":true,\"f454\":true,\"f455\":true,\"f456\":true,\"f457\":true,\"f458\":true,\"f459\":true,\"f460\":true,\"f461\":true,\"f462\":true,\"f463\":true,\"f464\":true,\"f465\":true,\"f466\":true,\"f467\":true,\"f468\":true,\"f469\":true,\"f470\":true,\"f471\":true,\"f472\":true,\"f473\":true,\"f474\":true,\"f475\":true,\"f476\":true,\"f477\":true,\"f478\":true,\"f479\":true,\"f480\":true,\"f481\":true,\"f482\":true,\"f483\":true,\"f484\":true,\"f485\":true,\"f486\":true,\"f487\":true,\"f488\":true,\"f489\":true,\"f490\":true,\"f491\":true,\"f492\":true,\"f493\":true,\"f494\":true,\"f495\":true,\"f496\":true,\"f497\":true,\"f498\":true,\"f499\":true,\"f500\":true,\"f501\":true,\"f502\":true,\"f503\":true,\"f504\":true,\"f505\":true,\"f506\":true,\"f507\":true,\"f508\":true,\"f509\":true,\"f510\":true,\"f511\":true,\"f512\":true,\"f513\":true,\"f514\":true,\"f515\":true,\"f516\":true,\"f517\":true,\"f518\":true,\"f519\":true,\"f520\":true,\"f521\":true,\"f522\":true,\"f523\":true,\"f524\":true,\"f525\":true,\"f526\":true,\"f527\":true,\"f528\":true,\"f529\":true,\"f530\":true,\"f531\":true,\"f532\":true,\"f533\":true,\"f534\":true,\"f535\":true,\"f536\":true,\"f537\":true,\"f538\":true,\"f539\":true,\"f540\":true,\"f541\":true,\"f542\":true,\"f543\":true,\"f544\":true,\"f545\":true,\"f546\":true,\"f547\":true,\"f548\":true,\"f549\":true,\"f550\":true,\"f551\":true,\"f552\":true,\"f553\":true,\"f554\":true,\"f555\":true,\"f556\":true,\"f557\":true,\"f558\":true,\"f559\":true,\"f560\":true,\"f561\":true,\"f562\":true,\"f563\":true,\"f564\":true,\"f565\":true,\"f566\":true,\"f567\":true,\"f568\":true,\"f569\":true,\"f570\":true,\"f571\":true,\"f572\":true,\"f573\":true,\"f574\":true,\"f575\":true,\"f576\":true,\"f577\":true,\"f578\":true,\"f579\":true,\"f580\":true,\"f581\":true,\"f582\":true,\"f583\":true,\"f584\":true,\"f585\":true,\"f586\":true,\"f587\":true,\"f588\":true,\"f589\":true,\"f590\":true,\"f591\":true,\"f592\":true,\"f593\":true,\"f594\":true,\"f595\":true,\"f596\":true,\"f597\":true,\"f598\":true,\"f599\":true,\"f600\":true,\"f601\":true,\"f602\":true,\"f603\":true,\"f604\":true,\"f605\":true,\"f606\":true,\"f607\":true,\"f608\":true,\"f609\":true,\"f610\":true,\"f611\":true,\"f612\":true,\"f613\":true,\"f614\":true,\"f615\":true,\"f616\":true,\"f617\":true,\"f618\":true,\"f619\":true,\"f620\":true,\"f621\":true,\"f622\":true,\"f623\":true,\"f624\":true,\"f625\":true,\"f626\":true,\"f627\":true,\"f628\":true,\"f629\":true,\"f630\":true,\"f631\":true,\"f632\":true,\"f633\":true,\"f634\":true,\"f635\":true,\"f636\":true,\"f637\":true,\"f638\":true,\"f639\":true,\"f640\":true,\"f641\":true,\"f642\":true,\"f643\":true,\"f644\":true,\"f645\":true,\"f646\":true,\"f647\":true,\"f648\":true,\"f649\":true,\"f650\":true,\"f651\":true,\"f652\":true,\"f653\":true,\"f654\":true,\"f655\":true,\"f656\":true,\"f657\":true,\"f658\":true,\"f659\":true,\"f660\":true,\"f661\":true,\"f662\":true,\"f663\":true,\"f664\":true,\"f665\":true,\"f666\":true,\"f667\":true,\"f668\":true,\"f669\":true,\"f670\":true,\"f671\":true,\"f672\":true,\"f673\":true,\"f674\":true,\"f675\":true,\"f676\":true,\"f677\":true,\"f678\":true,\"f679\":true,\"f680\":true,\"f681\":true,\"f682\":true,\"f683\":true,\"f684\":true,\"f685\":true,\"f686\":true,\"f687\":true,\"f688\":true,\"f689\":true,\"f690\":true,\"f691\":true,\"f692\":true,\"f693\":true,\"f694\":true,\"f695\":true,\"f696\":true,\"f697\":true,\"f698\":true,\"f699\":true,\"f700\":true,\"f701\":true,\"f702\":true,\"f703\":true,\"f704\":true,\"f705\":true,\"f706\":true,\"f707\":true,\"f708\":true,\"f709\":true,\"f710\":true,\"f711\":true,\"f712\":true,\"f713\":true,\"f714\":true,\"f715\":true,\"f716\":true,\"f717\":true,\"f718\":true,\"f719\":true,\"f720\":true,\"f721\":true,\"f722\":true,\"f723\":true,\"f724\":true,\"f725\":true,\"f726\":true,\"f727\":true,\"f728\":true,\"f729\":true,\"f730\":true,\"f731\":true,\"f732\":true,\"f733\":true,\"f734\":true,\"f735\":true,\"f736\":true,\"f737\":true,\"f738\":true,\"f739\":true,\"f740\":true,\"f741\":true,\"f742\":true,\"f743\":true,\"f744\":true,\"f745\":true,\"f746\":true,\"f747\":true,\"f748\":true,\"f749\":true,\"f750\":true,\"f751\":true,\"f752\":true,\"f753\":true,\"f754\":true,\"f755\":true,\"f756\":true,\"f757\":true,\"f758\":true,\"f759\":true,\"f760\":true,\"f761\":true,\"f762\":true,\"f763\":true,\"f764\":true,\"f765\":true,\"f766\":true,\"f767\":true,\"f768\":true,\"f769\":true,\"f770\":true,\"f771\":true,\"f772\":true,\"f773\":true,\"f774\":true,\"f775\":true,\"f776\":true,\"f777\":true,\"f778\":true,\"f779\":true,\"f780\":true,\"f781\":true,\"f782\":true,\"f783\":true,\"f784\":true,\"f785\":true,\"f786\":true,\"f787\":true,\"f788\":true,\"f789\":true,\"f790\":true,\"f791\":true,\"f792\":true,\"f793\":true,\"f794\":true,\"f795\":true,\"f796\":true,\"f797\":true,\"f798\":true,\"f799\":true,\"f800\":true,\"f801\":true,\"f802\":true,\"f803\":true,\"f804\":true,\"f805\":true,\"f806\":true,\"f807\":true,\"f808\":true,\"f809\":true,\"f810\":true,\"f811\":true,\"f812\":true,\"f813\":true,\"f814\":true,\"f815\":true,\"f816\":true,\"f817\":true,\"f818\":true,\"f819\":true,\"f820\":true,\"f821\":true,\"f822\":true,\"f823\":true,\"f824\":true,\"f825\":true,\"f826\":true,\"f827\":true,\"f828\":true,\"f829\":true,\"f830\":true,\"f831\":true,\"f832\":true,\"f833\":true,\"f834\":true,\"f835\":true,\"f836\":true,\"f837\":true,\"f838\":true,\"f839\":true,\"f840\":true,\"f841\":true,\"f842\":true,\"f843\":true,\"f844\":true,\"f845\":true,\"f846\":true,\"f847\":true,\"f848\":true,\"f849\":true,\"f850\":true,\"f851\":true,\"f852\":true,\"f853\":true,\"f854\":true,\"f855\":true,\"f856\":true,\"f857\":true,\"f858\":true,\"f859\":true,\"f860\":true,\"f861\":true,\"f862\":true,\"f863\":true,\"f864\":true,\"f865\":true,\"f866\":true,\"f867\":true,\"f868\":true,\"f869\":true,\"f870\":true,\"f871\":true,\"f872\":true,\"f873\":true,\"f874\":true,\"f875\":true,\"f876\":true,\"f877\":true,\"f878\":true,\"f879\":true,\"f880\":true,\"f881\":true,\"f882\":true,\"f883\":true,\"f884\":true,\"f885\":true,\"f886\":true,\"f887\":true,\"f888\":true,\"f889\":true,\"f890\":true,\"f891\":true,\"f892\":true,\"f893\":true,\"f894\":true,\"f895\":true,\"f896\":true,\"f897\":true,\"f898\":true,\"f899\":true,\"f900\":true,\"f901\":true,\"f902\":true,\"f903\":true,\"f904\":true,\"f905\":true,\"f906\":true,\"f907\":true,\"f908\":true,\"f909\":true,\"f910\":true,\"f911\":true,\"f912\":true,\"f913\":true,\"f914\":true,\"f915\":true,\"f916\":true,\"f917\":true,\"f918\":true,\"f919\":true,\"f920\":true,\"f921\":true,\"f922\":true,\"f923\":true,\"f924\":true,\"f925\":true,\"f926\":true,\"f927\":true,\"f928\":true,\"f929\":true,\"f930\":true,\"f931\":true,\"f932\":true,\"f933\":true,\"f934\":true,\"f935\":true,\"f936\":true,\"f937\":true,\"f938\":true,\"f939\":true,\"f940\":true,\"f941\":true,\"f942\":true,\"f943\":true,\"f944\":true,\"f945\":true,\"f946\":true,\"f947\":true,\"f948\":true,\"f949\":true,\"f950\":true,\"f951\":true,\"f952\":true,\"f953\":true,\"f954\":true,\"f955\":true,\"f956\":true,\"f957\":true,\"f958\":true,\"f959\":true,\"f960\":true,\"f961\":true,\"f962\":true,\"f963\":true,\"f964\":true,\"f965\":true,\"f966\":true,\"f967\":true,\"f968\":true,\"f969\":true,\"f970\":true,\"f971\":true,\"f972\":true,\"f973\":true,\"f974\":true,\"f975\":true,\"f976\":true,\"f977\":true,\"f978\":true,\"f979\":true,\"f980\":true,\"f981\":true,\"f982\":true,\"f983\":true,\"f984\":true,\"f985\":true,\"f986\":true,\"f987\":true,\"f988\":true,\"f989\":true,\"f990\":true,\"f991\":true,\"f992\":true,\"f993\":true,\"f994\":true,\"f995\":true,\"f996\":true,\"f997\":true,\"f998\":true,\"f999\":true}\r\n"
  },
  {
    "path": "src/test/resources/json/page_model_cached.json",
    "content": "{\r\n    \"sid\":100000,\r\n    \"cid\":\"123456\",\r\n    \"segments\":[\r\n        {\r\n            \"cid\":\"CAP\",\r\n            \"layouts\":[\r\n                {\r\n                    \"sid\":111111,\r\n                    \"cid\":\"1m950\",\r\n                    \"regions\":[\r\n                        {\r\n                            \"cid\":\"MAIN\",\r\n                            \"widgets\":[\r\n                                {\r\n                                    \"sid\":222222,\r\n                                    \"cid\":\"top_nav\",\r\n                                },\r\n                                {\r\n                                    \"sid\":222223,\r\n                                    \"cid\":\"theme_pic\",\r\n                                }\r\n                            ]\r\n                        }\r\n                    ]\r\n                }\r\n            ]\r\n        },\r\n        {\r\n            \"cid\":\"MAIN\",\r\n            \"layouts\":[\r\n                {\r\n                    \"sid\":111112,\r\n                    \"cid\":\"1s3m950\",\r\n                    \"regions\":[\r\n                        {\r\n                            \"cid\":\"SIDE\",\r\n                            \"widgets\":[\r\n                                {\r\n                                    \"sid\":222224,\r\n                                    \"cid\":\"supplier_info\"\r\n                                },\r\n                                {\r\n                                    \"sid\":222225,\r\n                                    \"cid\":\"inner_search\"\r\n                                }\r\n                            ]\r\n                        },\r\n                        {\r\n                            \"cid\":\"MAIN\",\r\n                            \"widgets\":[\r\n                                {\r\n                                    \"sid\":222226,\r\n                                    \"cid\":\"all_offer_index\"\r\n                                },\r\n                                {\r\n                                    \"sid\":222227,\r\n                                    \"cid\":\"all_album_index\"\r\n                                },\r\n                                {\r\n                                    \"sid\":222228,\r\n                                    \"cid\":\"glare_rec_offer\"\r\n                                },\r\n                                {\r\n                                    \"sid\":222229,\r\n                                    \"cid\":\"glare_rec_offer\"\r\n                                }\r\n                            ]\r\n                        }\r\n                    ]\r\n                }\r\n            ]\r\n        }\r\n    ]\r\n}"
  },
  {
    "path": "src/test/resources/json/string_array_10000.json",
    "content": "[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\",\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"98\",\"99\",\"100\",\"101\",\"102\",\"103\",\"104\",\"105\",\"106\",\"107\",\"108\",\"109\",\"110\",\"111\",\"112\",\"113\",\"114\",\"115\",\"116\",\"117\",\"118\",\"119\",\"120\",\"121\",\"122\",\"123\",\"124\",\"125\",\"126\",\"127\",\"128\",\"129\",\"130\",\"131\",\"132\",\"133\",\"134\",\"135\",\"136\",\"137\",\"138\",\"139\",\"140\",\"141\",\"142\",\"143\",\"144\",\"145\",\"146\",\"147\",\"148\",\"149\",\"150\",\"151\",\"152\",\"153\",\"154\",\"155\",\"156\",\"157\",\"158\",\"159\",\"160\",\"161\",\"162\",\"163\",\"164\",\"165\",\"166\",\"167\",\"168\",\"169\",\"170\",\"171\",\"172\",\"173\",\"174\",\"175\",\"176\",\"177\",\"178\",\"179\",\"180\",\"181\",\"182\",\"183\",\"184\",\"185\",\"186\",\"187\",\"188\",\"189\",\"190\",\"191\",\"192\",\"193\",\"194\",\"195\",\"196\",\"197\",\"198\",\"199\",\"200\",\"201\",\"202\",\"203\",\"204\",\"205\",\"206\",\"207\",\"208\",\"209\",\"210\",\"211\",\"212\",\"213\",\"214\",\"215\",\"216\",\"217\",\"218\",\"219\",\"220\",\"221\",\"222\",\"223\",\"224\",\"225\",\"226\",\"227\",\"228\",\"229\",\"230\",\"231\",\"232\",\"233\",\"234\",\"235\",\"236\",\"237\",\"238\",\"239\",\"240\",\"241\",\"242\",\"243\",\"244\",\"245\",\"246\",\"247\",\"248\",\"249\",\"250\",\"251\",\"252\",\"253\",\"254\",\"255\",\"256\",\"257\",\"258\",\"259\",\"260\",\"261\",\"262\",\"263\",\"264\",\"265\",\"266\",\"267\",\"268\",\"269\",\"270\",\"271\",\"272\",\"273\",\"274\",\"275\",\"276\",\"277\",\"278\",\"279\",\"280\",\"281\",\"282\",\"283\",\"284\",\"285\",\"286\",\"287\",\"288\",\"289\",\"290\",\"291\",\"292\",\"293\",\"294\",\"295\",\"296\",\"297\",\"298\",\"299\",\"300\",\"301\",\"302\",\"303\",\"304\",\"305\",\"306\",\"307\",\"308\",\"309\",\"310\",\"311\",\"312\",\"313\",\"314\",\"315\",\"316\",\"317\",\"318\",\"319\",\"320\",\"321\",\"322\",\"323\",\"324\",\"325\",\"326\",\"327\",\"328\",\"329\",\"330\",\"331\",\"332\",\"333\",\"334\",\"335\",\"336\",\"337\",\"338\",\"339\",\"340\",\"341\",\"342\",\"343\",\"344\",\"345\",\"346\",\"347\",\"348\",\"349\",\"350\",\"351\",\"352\",\"353\",\"354\",\"355\",\"356\",\"357\",\"358\",\"359\",\"360\",\"361\",\"362\",\"363\",\"364\",\"365\",\"366\",\"367\",\"368\",\"369\",\"370\",\"371\",\"372\",\"373\",\"374\",\"375\",\"376\",\"377\",\"378\",\"379\",\"380\",\"381\",\"382\",\"383\",\"384\",\"385\",\"386\",\"387\",\"388\",\"389\",\"390\",\"391\",\"392\",\"393\",\"394\",\"395\",\"396\",\"397\",\"398\",\"399\",\"400\",\"401\",\"402\",\"403\",\"404\",\"405\",\"406\",\"407\",\"408\",\"409\",\"410\",\"411\",\"412\",\"413\",\"414\",\"415\",\"416\",\"417\",\"418\",\"419\",\"420\",\"421\",\"422\",\"423\",\"424\",\"425\",\"426\",\"427\",\"428\",\"429\",\"430\",\"431\",\"432\",\"433\",\"434\",\"435\",\"436\",\"437\",\"438\",\"439\",\"440\",\"441\",\"442\",\"443\",\"444\",\"445\",\"446\",\"447\",\"448\",\"449\",\"450\",\"451\",\"452\",\"453\",\"454\",\"455\",\"456\",\"457\",\"458\",\"459\",\"460\",\"461\",\"462\",\"463\",\"464\",\"465\",\"466\",\"467\",\"468\",\"469\",\"470\",\"471\",\"472\",\"473\",\"474\",\"475\",\"476\",\"477\",\"478\",\"479\",\"480\",\"481\",\"482\",\"483\",\"484\",\"485\",\"486\",\"487\",\"488\",\"489\",\"490\",\"491\",\"492\",\"493\",\"494\",\"495\",\"496\",\"497\",\"498\",\"499\",\"500\",\"501\",\"502\",\"503\",\"504\",\"505\",\"506\",\"507\",\"508\",\"509\",\"510\",\"511\",\"512\",\"513\",\"514\",\"515\",\"516\",\"517\",\"518\",\"519\",\"520\",\"521\",\"522\",\"523\",\"524\",\"525\",\"526\",\"527\",\"528\",\"529\",\"530\",\"531\",\"532\",\"533\",\"534\",\"535\",\"536\",\"537\",\"538\",\"539\",\"540\",\"541\",\"542\",\"543\",\"544\",\"545\",\"546\",\"547\",\"548\",\"549\",\"550\",\"551\",\"552\",\"553\",\"554\",\"555\",\"556\",\"557\",\"558\",\"559\",\"560\",\"561\",\"562\",\"563\",\"564\",\"565\",\"566\",\"567\",\"568\",\"569\",\"570\",\"571\",\"572\",\"573\",\"574\",\"575\",\"576\",\"577\",\"578\",\"579\",\"580\",\"581\",\"582\",\"583\",\"584\",\"585\",\"586\",\"587\",\"588\",\"589\",\"590\",\"591\",\"592\",\"593\",\"594\",\"595\",\"596\",\"597\",\"598\",\"599\",\"600\",\"601\",\"602\",\"603\",\"604\",\"605\",\"606\",\"607\",\"608\",\"609\",\"610\",\"611\",\"612\",\"613\",\"614\",\"615\",\"616\",\"617\",\"618\",\"619\",\"620\",\"621\",\"622\",\"623\",\"624\",\"625\",\"626\",\"627\",\"628\",\"629\",\"630\",\"631\",\"632\",\"633\",\"634\",\"635\",\"636\",\"637\",\"638\",\"639\",\"640\",\"641\",\"642\",\"643\",\"644\",\"645\",\"646\",\"647\",\"648\",\"649\",\"650\",\"651\",\"652\",\"653\",\"654\",\"655\",\"656\",\"657\",\"658\",\"659\",\"660\",\"661\",\"662\",\"663\",\"664\",\"665\",\"666\",\"667\",\"668\",\"669\",\"670\",\"671\",\"672\",\"673\",\"674\",\"675\",\"676\",\"677\",\"678\",\"679\",\"680\",\"681\",\"682\",\"683\",\"684\",\"685\",\"686\",\"687\",\"688\",\"689\",\"690\",\"691\",\"692\",\"693\",\"694\",\"695\",\"696\",\"697\",\"698\",\"699\",\"700\",\"701\",\"702\",\"703\",\"704\",\"705\",\"706\",\"707\",\"708\",\"709\",\"710\",\"711\",\"712\",\"713\",\"714\",\"715\",\"716\",\"717\",\"718\",\"719\",\"720\",\"721\",\"722\",\"723\",\"724\",\"725\",\"726\",\"727\",\"728\",\"729\",\"730\",\"731\",\"732\",\"733\",\"734\",\"735\",\"736\",\"737\",\"738\",\"739\",\"740\",\"741\",\"742\",\"743\",\"744\",\"745\",\"746\",\"747\",\"748\",\"749\",\"750\",\"751\",\"752\",\"753\",\"754\",\"755\",\"756\",\"757\",\"758\",\"759\",\"760\",\"761\",\"762\",\"763\",\"764\",\"765\",\"766\",\"767\",\"768\",\"769\",\"770\",\"771\",\"772\",\"773\",\"774\",\"775\",\"776\",\"777\",\"778\",\"779\",\"780\",\"781\",\"782\",\"783\",\"784\",\"785\",\"786\",\"787\",\"788\",\"789\",\"790\",\"791\",\"792\",\"793\",\"794\",\"795\",\"796\",\"797\",\"798\",\"799\",\"800\",\"801\",\"802\",\"803\",\"804\",\"805\",\"806\",\"807\",\"808\",\"809\",\"810\",\"811\",\"812\",\"813\",\"814\",\"815\",\"816\",\"817\",\"818\",\"819\",\"820\",\"821\",\"822\",\"823\",\"824\",\"825\",\"826\",\"827\",\"828\",\"829\",\"830\",\"831\",\"832\",\"833\",\"834\",\"835\",\"836\",\"837\",\"838\",\"839\",\"840\",\"841\",\"842\",\"843\",\"844\",\"845\",\"846\",\"847\",\"848\",\"849\",\"850\",\"851\",\"852\",\"853\",\"854\",\"855\",\"856\",\"857\",\"858\",\"859\",\"860\",\"861\",\"862\",\"863\",\"864\",\"865\",\"866\",\"867\",\"868\",\"869\",\"870\",\"871\",\"872\",\"873\",\"874\",\"875\",\"876\",\"877\",\"878\",\"879\",\"880\",\"881\",\"882\",\"883\",\"884\",\"885\",\"886\",\"887\",\"888\",\"889\",\"890\",\"891\",\"892\",\"893\",\"894\",\"895\",\"896\",\"897\",\"898\",\"899\",\"900\",\"901\",\"902\",\"903\",\"904\",\"905\",\"906\",\"907\",\"908\",\"909\",\"910\",\"911\",\"912\",\"913\",\"914\",\"915\",\"916\",\"917\",\"918\",\"919\",\"920\",\"921\",\"922\",\"923\",\"924\",\"925\",\"926\",\"927\",\"928\",\"929\",\"930\",\"931\",\"932\",\"933\",\"934\",\"935\",\"936\",\"937\",\"938\",\"939\",\"940\",\"941\",\"942\",\"943\",\"944\",\"945\",\"946\",\"947\",\"948\",\"949\",\"950\",\"951\",\"952\",\"953\",\"954\",\"955\",\"956\",\"957\",\"958\",\"959\",\"960\",\"961\",\"962\",\"963\",\"964\",\"965\",\"966\",\"967\",\"968\",\"969\",\"970\",\"971\",\"972\",\"973\",\"974\",\"975\",\"976\",\"977\",\"978\",\"979\",\"980\",\"981\",\"982\",\"983\",\"984\",\"985\",\"986\",\"987\",\"988\",\"989\",\"990\",\"991\",\"992\",\"993\",\"994\",\"995\",\"996\",\"997\",\"998\",\"999\"]\r\n"
  },
  {
    "path": "src/test/resources/json/taobao/cart.json",
    "content": "{\"api\":\"mtop.trade.querybag\",\"v\":\"5.0\",\"ret\":[\"SUCCESS::接口调用成功\"],\"data\":{\"data\":{\"banner_1\":{\"id\":\"1\",\"tag\":\"banner\",\"fields\":{\"text\":\"你选好的“面膜”正在“店铺热卖”，去看一眼吧\",\"textColor\":\"ffffff\",\"iconUrl\":\"//gtms02.alicdn.com/tps/i2/TB16w8aLpXXXXaqXFXX.vHKHpXX-54-54.png\",\"textCloseDays\":30,\"pic\":\"\",\"textBgColor\":\"ff7333\",\"url\":\"//h5.m.taobao.com/assistant/cart-assistant.html\"}},\"itemv2_227462292832\":{\"id\":\"227462292832\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"tmall\",\"settlement\":\"520829524418_4_3103876140130_null_0_null_null_227462292832_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1460104792000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"227462292832\",\"bundleType\":\"shop\",\"exclude\":\"B\",\"pic\":\"//img.alicdn.com/bao/uploaded/i3/2396671881/TB2d9cddVXXXXclXXXXXXXXXXXX_!!2396671881.jpg_sum.jpg\",\"itemId\":\"520829524418\",\"sku\":{\"title\":\"颜色分类:红米2彩边蓝小雄\",\"status\":\"CAN_CHANGE_SKU\",\"skuId\":\"3103876140130\",\"areaId\":\"310101\",\"editable\":true},\"url\":\"${cItemHost}\",\"mutex\":\"B\",\"title\":\"洛纳丹迪红米2a手机壳红米2保护套硅胶红米2增强版4.7寸卡通壳套\",\"showCheckBox\":true,\"sellerId\":2396671881,\"shopId\":\"116483240\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_2396671881\",\"pay\":{\"totalTitle\":\"￥39.60\",\"total\":3960,\"originTitle\":\"￥14.00\",\"origin\":1400,\"nowTitle\":\"￥9.90\",\"now\":990},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":4,\"max\":947,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"520829524418\\\",\\\"sellerid\\\":\\\"2396671881\\\",\\\"catid\\\":\\\"150704\\\"}\",\"checked\":false}},\"bundlev2_s_764853586\":{\"id\":\"s_764853586\",\"tag\":\"bundlev2\",\"fields\":{\"valid\":true,\"bundleId\":\"s_764853586\"}},\"itemv2_223762872843\":{\"id\":\"223762872843\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"taobao\",\"settlement\":\"525693557506_2_3128973235911_null_0_null_null_223762872843_null_null_null_0_null_buyerCondition~1~~cartCreateTime~1459491900000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"223762872843\",\"bundleType\":\"shop\",\"exclude\":\"C\",\"pic\":\"//img.alicdn.com/bao/uploaded/i4/TB1Ite7LXXXXXcJXXXXYXGcGpXX_M2.SS2_sum.jpg\",\"itemId\":\"525693557506\",\"sku\":{\"title\":\"颜色分类:带抽 订单爆表;尺寸:1500mm*1900mm;家具结构:框架结构\",\"status\":\"CAN_CHANGE_SKU\",\"skuId\":\"3128973235911\",\"editable\":true},\"url\":\"${cItemHost}\",\"mutex\":\"C\",\"title\":\"现代简约实木单人床1米1.2米松木床儿童床简易双人床1.5 1.8米\",\"showCheckBox\":true,\"sellerId\":733695554,\"shopId\":\"127088412\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_733695554\",\"pay\":{\"totalTitle\":\"￥989.80\",\"total\":98980,\"originTitle\":\"￥700.00\",\"origin\":70000,\"nowTitle\":\"￥494.90\",\"now\":49490},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":2,\"max\":14978,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"525693557506\\\",\\\"sellerid\\\":\\\"733695554\\\",\\\"catid\\\":\\\"50019997\\\"}\",\"checked\":false}},\"shopv2_s_66445298\":{\"id\":\"s_66445298\",\"tag\":\"shopv2\",\"fields\":{\"title\":\"沐槿花珠宝\",\"is11\":false,\"sellerId\":66445298,\"shopId\":\"34805838\",\"sType\":\"C\",\"checked\":false,\"seller\":\"wangxiang2719153\",\"url\":\"${cShopHost}\",\"hasBonus\":true}},\"footer_1\":{\"id\":\"1\",\"tag\":\"footer\",\"fields\":{\"submit\":{\"title\":\"结算(0)\",\"status\":\"disable\"},\"pay\":{\"postTitle\":\"不含运费\",\"price\":0,\"priceTitle\":\"￥0.00\"},\"checkAll\":{\"checked\":false,\"title\":\"全选\",\"editable\":true},\"quantity\":{\"value\":0}}},\"shopv2_s_1911901150\":{\"id\":\"s_1911901150\",\"tag\":\"shopv2\",\"fields\":{\"title\":\"blueair官方旗舰店\",\"is11\":false,\"sellerId\":1911901150,\"shopId\":\"108266224\",\"sType\":\"B\",\"checked\":false,\"seller\":\"blueair官方旗舰店\",\"url\":\"${cShopHost}\",\"hasBonus\":false}},\"group_s_2143097121_1\":{\"id\":\"s_2143097121_1\",\"tag\":\"group\",\"fields\":{\"groupId\":\"s_2143097121_1\",\"isRelationItem\":false}},\"group_s_2396671881_0\":{\"id\":\"s_2396671881_0\",\"tag\":\"group\",\"fields\":{\"groupId\":\"s_2396671881_0\",\"isRelationItem\":false}},\"itemv2_224419490041\":{\"id\":\"224419490041\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"tmall\",\"settlement\":\"19911393547_1_31768546063_null_0_null_null_224419490041_null_null_null_258140000009819378-6374659153947525120_0_buyerCondition~0~~cartCreateTime~1459645814000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"224419490041\",\"bundleType\":\"combo\",\"exclude\":\"B\",\"pic\":\"//img.alicdn.com/bao/uploaded/i3/T1FWs6XkRjXXbgXNI2_044337.jpg_sum.jpg\",\"itemId\":\"19911393547\",\"sku\":{\"title\":\"颜色分类:雾灰/NIA06203NS雾灰;尺码:长宽高（21*10*3）cm\",\"status\":\"CAN_NOT_CHANGE_SKU\",\"skuId\":\"31768546063\",\"areaId\":\"310100\",\"editable\":false},\"url\":\"${cItemHost}\",\"mutex\":\"B\",\"title\":\"生日礼物 NIKE/耐克时尚情侣豆蔻女士长款钱包 拉链式钱夹手包袋\",\"showCheckBox\":false,\"sellerId\":1737765814,\"shopId\":\"105628650\",\"operate\":[],\"bundleId\":\"s_1737765814\",\"pay\":{\"totalTitle\":\"￥96.00\",\"total\":9600,\"originTitle\":\"￥138.00\",\"origin\":13800,\"nowTitle\":\"￥96.00\",\"now\":9600},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":1,\"max\":7,\"editable\":false},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"19911393547\\\",\\\"sellerid\\\":\\\"1737765814\\\",\\\"catid\\\":\\\"121384023\\\"}\",\"checked\":false}},\"itemv2_218763061535\":{\"id\":\"218763061535\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"taobao\",\"settlement\":\"44869856233_2_99940560890_null_0_null_null_218763061535_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1458542665000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"218763061535\",\"bundleType\":\"shop\",\"exclude\":\"C\",\"pic\":\"//img.alicdn.com/bao/uploaded/i2/TB1rInVGpXXXXbAXpXXXXXXXXXX_!!0-item_pic.jpg_sum.jpg\",\"itemId\":\"44869856233\",\"sku\":{\"title\":\"颜色分类:洁面乳/水/霜\",\"status\":\"CAN_CHANGE_SKU\",\"skuId\":\"99940560890\",\"areaId\":\"310101\",\"editable\":true},\"url\":\"${cItemHost}\",\"mutex\":\"C\",\"title\":\"欧美姿 专柜正品 水肌源海洋补水套装 三件套保湿清爽滋润\",\"showCheckBox\":true,\"sellerId\":97034094,\"shopId\":\"35751564\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_97034094\",\"pay\":{\"totalTitle\":\"￥282.80\",\"total\":28280,\"origin\":0,\"nowTitle\":\"￥141.40\",\"now\":14140},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":2,\"max\":472,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"44869856233\\\",\\\"sellerid\\\":\\\"97034094\\\",\\\"catid\\\":\\\"50011993\\\"}\",\"checked\":false}},\"group_s_1766047907_0\":{\"id\":\"s_1766047907_0\",\"tag\":\"group\",\"fields\":{\"groupId\":\"s_1766047907_0\",\"isRelationItem\":false}},\"itemv2_224419490040\":{\"id\":\"224419490040\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"tmall\",\"settlement\":\"35135417999_1_33145662386_null_0_null_null_224419490040_null_null_null_258140000009819378-6374659153947525120_2_buyerCondition~0~~cartCreateTime~1459645814000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"224419490040\",\"bundleType\":\"combo\",\"exclude\":\"B\",\"pic\":\"//img.alicdn.com/bao/uploaded/i2/1737765814/T2l_XsXvtXXXXXXXXX_!!1737765814.jpg_sum.jpg\",\"bizIcon\":{\"S\":[{\"text\":\"库存紧张\",\"color\":\"FF5000\"}]},\"itemId\":\"35135417999\",\"sku\":{\"title\":\"颜色分类:黑色/NRE03010OS;尺码:均码\",\"status\":\"CAN_NOT_CHANGE_SKU\",\"skuId\":\"33145662386\",\"areaId\":\"310100\",\"editable\":false},\"url\":\"${cItemHost}\",\"mutex\":\"B\",\"title\":\"正品耐克iphone4耳机臂包NRE03010OS NIKE手机包运动臂带跑步臂包\",\"showCheckBox\":true,\"sellerId\":1737765814,\"shopId\":\"105628650\",\"operate\":[\"delete\"],\"bundleId\":\"s_1737765814\",\"pay\":{\"totalTitle\":\"￥96.00\",\"total\":9600,\"originTitle\":\"￥138.00\",\"origin\":13800,\"nowTitle\":\"￥96.00\",\"now\":9600},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":1,\"max\":2,\"editable\":false},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"35135417999\\\",\\\"sellerid\\\":\\\"1737765814\\\",\\\"catid\\\":\\\"121384023\\\"}\",\"checked\":false}},\"bundlev2_s_653064997\":{\"id\":\"s_653064997\",\"tag\":\"bundlev2\",\"fields\":{\"valid\":true,\"bundleId\":\"s_653064997\"}},\"group_s_359200541_0\":{\"id\":\"s_359200541_0\",\"tag\":\"group\",\"fields\":{\"groupId\":\"s_359200541_0\",\"isRelationItem\":false}},\"itemv2_226186200642\":{\"id\":\"226186200642\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"skuExt\":[{\"name\":\"进口税\",\"value\":\"商家承担\"}],\"canBatchRemove\":true,\"toBuy\":\"tmall\",\"settlement\":\"44216137300_25_79415118294_NTIwMjQ5NzkyNDA1JTdDMzEwMTIxMDA0MDIzMA==_0_null_null_226186200642_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1459490301000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"226186200642\",\"bundleType\":\"shop\",\"exclude\":\"HK\",\"pic\":\"//img.alicdn.com/bao/uploaded/i3/TB1aTUIGVXXXXaRXpXXhSEkFpXX_091903.jpg_sum.jpg\",\"itemId\":\"44216137300\",\"sku\":{\"title\":\"颜色分类:白色\",\"status\":\"CAN_CHANGE_SKU\",\"skuId\":\"79415118294\",\"areaId\":\"310101\",\"editable\":true},\"url\":\"${cItemHost}\",\"mutex\":\"HK-113481386\",\"title\":\"Blueair布鲁雅尔Slim智能版控制家用空气净化器防雾霾甲醛过滤器\",\"showCheckBox\":true,\"sellerId\":2243244597,\"shopId\":\"113481386\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_2243244597\",\"pay\":{\"totalTitle\":\"￥129350.00\",\"total\":12935000,\"originTitle\":\"￥5175.00\",\"origin\":517500,\"nowTitle\":\"￥5174.00\",\"now\":517400},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":25,\"max\":24,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"44216137300\\\",\\\"sellerid\\\":\\\"2243244597\\\",\\\"catid\\\":\\\"350402\\\"}\",\"checked\":false}},\"bundlev2_s_1129326215\":{\"id\":\"s_1129326215\",\"tag\":\"bundlev2\",\"fields\":{\"valid\":true,\"bundleId\":\"s_1129326215\"}},\"group_s_1985716624_0\":{\"id\":\"s_1985716624_0\",\"tag\":\"group\",\"fields\":{\"groupId\":\"s_1985716624_0\",\"isRelationItem\":false}},\"itemv2_224478974234\":{\"id\":\"224478974234\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"taobao\",\"settlement\":\"523130387489_8_3114434582950_null_0_null_11049E04BFXXXXXXXXXX001100114000000_224478974234_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1459644715000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"224478974234\",\"bundleType\":\"shop\",\"exclude\":\"B\",\"pic\":\"//img.alicdn.com/bao/uploaded/i1/TB1O92YKpXXXXaOXXXXXXXXXXXX_!!0-item_pic.jpg_sum.jpg\",\"itemId\":\"523130387489\",\"sku\":{\"title\":\"门票种类:成人票;门票类型:换票证;有效期:2016年3月28日至2016年4月30日 从买家指定的入园日期开始后当天有效;入园限制:请至少在入园前1天的，20点前指定入园日期\",\"status\":\"CAN_NOT_CHANGE_SKU\",\"skuId\":\"3114434582950\",\"editable\":false},\"url\":\"${cItemHost}\",\"mutex\":\"B\",\"title\":\"香港迪士尼乐园套票 1日门票+餐券 迪士尼餐券 disney迪斯尼含餐\",\"showCheckBox\":true,\"sellerId\":490728022,\"shopId\":\"62585666\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_490728022\",\"pay\":{\"totalTitle\":\"￥3320.00\",\"total\":332000,\"originTitle\":\"￥416.00\",\"origin\":41600,\"nowTitle\":\"￥415.00\",\"now\":41500},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":8,\"max\":8024,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"523130387489\\\",\\\"sellerid\\\":\\\"490728022\\\",\\\"catid\\\":\\\"50458021\\\"}\",\"checked\":false}},\"shopv2_s_764853586\":{\"id\":\"s_764853586\",\"tag\":\"shopv2\",\"fields\":{\"title\":\"壹号大药房旗舰店\",\"is11\":false,\"sellerId\":764853586,\"shopId\":\"68982189\",\"sType\":\"YY\",\"checked\":false,\"seller\":\"壹号大药房旗舰店\",\"url\":\"${cShopHost}\",\"hasBonus\":false}},\"itemv2_223767012573\":{\"id\":\"223767012573\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"tmall\",\"settlement\":\"37823582121_2_0_null_0_null_null_223767012573_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1459490077000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"223767012573\",\"bundleType\":\"shop\",\"exclude\":\"B\",\"pic\":\"//img.alicdn.com/bao/uploaded/i1/TB15uz.IXXXXXarXVXXXXXXXXXX_!!0-item_pic.jpg_sum.jpg\",\"bizIcon\":{\"S\":[{\"text\":\"已降11.00元\",\"color\":\"FF5000\"}]},\"itemId\":\"37823582121\",\"url\":\"${cItemHost}\",\"mutex\":\"B\",\"title\":\"[圣春秋] 山东烟台大樱桃 车厘子 新鲜水果 3斤胜黑珍珠 航空包邮\",\"showCheckBox\":true,\"sellerId\":1985716624,\"shopId\":\"108676974\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_1985716624\",\"pay\":{\"totalTitle\":\"￥196.00\",\"total\":19600,\"originTitle\":\"￥198.00\",\"origin\":19800,\"nowTitle\":\"￥98.00\",\"now\":9800},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":2,\"max\":59975,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"37823582121\\\",\\\"sellerid\\\":\\\"1985716624\\\",\\\"catid\\\":\\\"50050730\\\"}\",\"checked\":false}},\"itemv2_226036718142\":{\"id\":\"226036718142\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"h5CartParam\":\"{\\\"createTime\\\":1459919811000,\\\"skuId\\\":\\\"3135737176008\\\",\\\"attr\\\":\\\";campaignId:0;op:1000;cityCode:330100;\\\",\\\"quantity\\\":9,\\\"cartId\\\":\\\"226036718142\\\",\\\"itemId\\\":\\\"526966573003\\\"}\",\"canBatchRemove\":true,\"toBuy\":\"tmall\",\"settlement\":\"526966573003_9_3135737176008_null_0_null_null_226036718142_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1459919811000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"226036718142\",\"bundleType\":\"shop\",\"exclude\":\"YY\",\"pic\":\"//img.alicdn.com/bao/uploaded/i4/TB1szB2MXXXXXXIXXXXXXXXXXXX_!!0-item_pic.jpg_sum.jpg\",\"itemId\":\"526966573003\",\"sku\":{\"title\":\"套餐类型:标准装\",\"status\":\"CAN_CHANGE_SKU\",\"skuId\":\"3135737176008\",\"areaId\":\"330100\",\"editable\":true},\"url\":\"${cItemHost}\",\"mutex\":\"YY\",\"title\":\"OTC_测试商品请不要拍_shen01\",\"showCheckBox\":true,\"sellerId\":2658024837,\"shopId\":\"135587617\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_2658024837\",\"pay\":{\"totalTitle\":\"￥90.00\",\"total\":9000,\"origin\":0,\"nowTitle\":\"￥10.00\",\"now\":1000},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":9,\"max\":103,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"526966573003\\\",\\\"sellerid\\\":\\\"2658024837\\\",\\\"catid\\\":\\\"50023734\\\"}\",\"checked\":false}},\"bundlev2_s_2243244597\":{\"id\":\"s_2243244597\",\"tag\":\"bundlev2\",\"fields\":{\"valid\":true,\"bundleId\":\"s_2243244597\"}},\"bundlev2_s_1985716624\":{\"id\":\"s_1985716624\",\"tag\":\"bundlev2\",\"fields\":{\"valid\":true,\"bundleId\":\"s_1985716624\"}},\"group_s_1129326215_0\":{\"id\":\"s_1129326215_0\",\"tag\":\"group\",\"fields\":{\"groupId\":\"s_1129326215_0\",\"isRelationItem\":false}},\"group_s_1129326215_1\":{\"id\":\"s_1129326215_1\",\"tag\":\"group\",\"fields\":{\"groupId\":\"s_1129326215_1\",\"isRelationItem\":false}},\"bundlev2_s_1737765814\":{\"id\":\"s_1737765814\",\"tag\":\"bundlev2\",\"fields\":{\"valid\":true,\"bundleId\":\"s_1737765814\"}},\"itemv2_216920281625\":{\"id\":\"216920281625\",\"tag\":\"itemv2\",\"fields\":{\"titleInCheckBoxColor\":\"aaaaaa\",\"valid\":false,\"invalidItemParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"521662214773\\\",\\\"sellerid\\\":\\\"1664976033\\\",\\\"catid\\\":\\\"121474010\\\"}\",\"canBatchRemove\":true,\"codeMsg\":\"宝贝已不能购买，请联系卖家\",\"toBuy\":\"tmall\",\"settlement\":\"521662214773_2_3107572995875_null_0_null_null_216920281625_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1458293563000_0_0_null_null_null_null_null_null_null_null_null\",\"exclude\":\"B\",\"bundleType\":\"shop\",\"titleInCheckBox\":\"失效\",\"cartId\":\"216920281625\",\"pic\":\"//img.alicdn.com/bao/uploaded/i3/TB1M1u7KFXXXXcgXpXXXXXXXXXX_!!0-item_pic.jpg_sum.jpg\",\"code\":\"CART_ITEM_INSTOCK_BY_SELLER\",\"itemId\":\"521662214773\",\"sku\":{\"title\":\"化妆品净含量:22ml\",\"status\":\"CAN_NOT_CHANGE_SKU\",\"skuId\":\"3107572995875\",\"editable\":false},\"url\":\"${cItemHost}\",\"mutex\":\"B\",\"title\":\"韩后面膜 文字达人面膜22ml*3片装  随机发\",\"showCheckBox\":true,\"sellerId\":1664976033,\"shopId\":\"103506130\",\"operate\":[\"delete\"],\"bundleId\":\"s_1664976033\",\"pay\":{\"totalTitle\":\"￥30.00\",\"total\":3000,\"originTitle\":\"￥39.00\",\"origin\":3900,\"nowTitle\":\"￥15.00\",\"now\":1500},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":2,\"max\":500,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"521662214773\\\",\\\"sellerid\\\":\\\"1664976033\\\",\\\"catid\\\":\\\"121474010\\\"}\",\"checked\":false}},\"itemv2_227753736384\":{\"id\":\"227753736384\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"taobao\",\"settlement\":\"20100204623_2_0_null_0_null_null_227753736384_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1460185957000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"227753736384\",\"bundleType\":\"shop\",\"exclude\":\"C\",\"pic\":\"//img.alicdn.com/bao/uploaded/i2/TB1jLN3HpXXXXXXXFXXXXXXXXXX_!!0-item_pic.jpg_sum.jpg\",\"itemId\":\"20100204623\",\"url\":\"${cItemHost}\",\"mutex\":\"C\",\"title\":\"SUNNESS尚尼诗蚕丝倍润水嫩保湿面膜两片 成盒买送大礼\",\"showCheckBox\":true,\"sellerId\":97034094,\"shopId\":\"35751564\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_97034094\",\"pay\":{\"totalTitle\":\"￥56.00\",\"total\":5600,\"origin\":0,\"nowTitle\":\"￥28.00\",\"now\":2800},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":2,\"max\":7329,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"20100204623\\\",\\\"sellerid\\\":\\\"97034094\\\",\\\"catid\\\":\\\"121474010\\\"}\",\"checked\":false}},\"itemv2_226759032874\":{\"id\":\"226759032874\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"tmall\",\"settlement\":\"35135417999_2_33145662386_null_0_null_null_226759032874_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1460017251000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"226759032874\",\"bundleType\":\"shop\",\"exclude\":\"B\",\"pic\":\"//img.alicdn.com/bao/uploaded/i2/1737765814/T2l_XsXvtXXXXXXXXX_!!1737765814.jpg_sum.jpg\",\"bizIcon\":{\"S\":[{\"text\":\"库存紧张\",\"color\":\"FF5000\"}]},\"itemId\":\"35135417999\",\"sku\":{\"title\":\"颜色分类:黑色/NRE03010OS;尺码:均码\",\"status\":\"CAN_CHANGE_SKU\",\"skuId\":\"33145662386\",\"areaId\":\"310101\",\"editable\":true},\"url\":\"${cItemHost}\",\"mutex\":\"B\",\"title\":\"正品耐克iphone4耳机臂包NRE03010OS NIKE手机包运动臂带跑步臂包\",\"showCheckBox\":true,\"sellerId\":1737765814,\"shopId\":\"105628650\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_1737765814\",\"pay\":{\"totalTitle\":\"￥192.00\",\"total\":19200,\"originTitle\":\"￥138.00\",\"origin\":13800,\"nowTitle\":\"￥96.00\",\"now\":9600},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":2,\"max\":2,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"35135417999\\\",\\\"sellerid\\\":\\\"1737765814\\\",\\\"catid\\\":\\\"121384023\\\"}\",\"checked\":false}},\"shopv2_s_1573475524\":{\"id\":\"s_1573475524\",\"tag\":\"shopv2\",\"fields\":{\"title\":\"诗凡黎官方旗舰店\",\"is11\":false,\"sellerId\":1573475524,\"shopId\":\"102130542\",\"sType\":\"B\",\"checked\":false,\"seller\":\"诗凡黎官方旗舰店\",\"url\":\"${cShopHost}\",\"hasBonus\":true}},\"group_s_2243244597_0\":{\"id\":\"s_2243244597_0\",\"tag\":\"group\",\"fields\":{\"groupId\":\"s_2243244597_0\",\"isRelationItem\":false}},\"itemv2_226712148098\":{\"id\":\"226712148098\",\"tag\":\"itemv2\",\"fields\":{\"titleInCheckBoxColor\":\"aaaaaa\",\"valid\":false,\"invalidItemParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"37684330210\\\",\\\"sellerid\\\":\\\"1688345693\\\",\\\"catid\\\":\\\"50000436\\\"}\",\"canBatchRemove\":true,\"codeMsg\":\"宝贝已不能购买，请联系卖家\",\"toBuy\":\"tmall\",\"settlement\":\"37684330210_1_3138451755981_null_0_null_null_226712148098_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1460016761000_0_0_null_null_null_null_null_null_null_null_null\",\"exclude\":\"B\",\"bundleType\":\"shop\",\"titleInCheckBox\":\"失效\",\"cartId\":\"226712148098\",\"pic\":\"//img.alicdn.com/bao/uploaded/i2/TB14nhgMXXXXXbtaXXXXXXXXXXX_!!0-item_pic.jpg_sum.jpg\",\"code\":\"CART_ITEM_LOSE_SKU\",\"itemId\":\"37684330210\",\"sku\":{\"status\":\"CAN_NOT_CHANGE_SKU\",\"skuId\":\"3138451755981\",\"areaId\":\"310101\",\"editable\":false},\"url\":\"${cItemHost}\",\"mutex\":\"B\",\"title\":\"战地吉普夏季休闲男装圆领薄款短袖t恤 薄款衣服纯棉汗衫潮流体恤\",\"showCheckBox\":true,\"sellerId\":1688345693,\"shopId\":\"104441576\",\"operate\":[\"delete\"],\"bundleId\":\"s_1688345693\",\"pay\":{\"totalTitle\":\"￥388.00\",\"total\":38800,\"origin\":0,\"nowTitle\":\"￥388.00\",\"now\":38800},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":1,\"max\":5631,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"37684330210\\\",\\\"sellerid\\\":\\\"1688345693\\\",\\\"catid\\\":\\\"50000436\\\"}\",\"checked\":false}},\"bundlev2_s_928220693\":{\"id\":\"s_928220693\",\"tag\":\"bundlev2\",\"fields\":{\"valid\":true,\"bundleId\":\"s_928220693\"}},\"itemv2_226712148097\":{\"id\":\"226712148097\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"tmall\",\"settlement\":\"37106174503_1_3150753083175_null_0_null_null_226712148097_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1460016754000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"226712148097\",\"bundleType\":\"shop\",\"exclude\":\"B\",\"pic\":\"//img.alicdn.com/bao/uploaded/i1/1796123759/TB2dZmMmXXXXXciXXXXXXXXXXXX_!!1796123759.jpg_sum.jpg\",\"itemId\":\"37106174503\",\"sku\":{\"title\":\"颜色:蓝色（6608）;尺码:180/XL\",\"status\":\"CAN_CHANGE_SKU\",\"skuId\":\"3150753083175\",\"areaId\":\"310101\",\"editable\":true},\"url\":\"${cItemHost}\",\"mutex\":\"B\",\"title\":\"也维农夏季男装T恤男白色修身韩版男士短袖t恤男V领半袖体恤衣服\",\"showCheckBox\":true,\"sellerId\":1796123759,\"shopId\":\"106764886\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_1796123759\",\"pay\":{\"totalTitle\":\"￥128.00\",\"total\":12800,\"originTitle\":\"￥256.00\",\"origin\":25600,\"nowTitle\":\"￥128.00\",\"now\":12800},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":1,\"max\":195,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"37106174503\\\",\\\"sellerid\\\":\\\"1796123759\\\",\\\"catid\\\":\\\"50000436\\\"}\",\"checked\":false}},\"itemv2_226712148096\":{\"id\":\"226712148096\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"tmall\",\"settlement\":\"528419040963_1_3146174822873_null_0_null_null_226712148096_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1460016748000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"226712148096\",\"bundleType\":\"shop\",\"exclude\":\"B\",\"pic\":\"//img.alicdn.com/bao/uploaded/i3/1766047907/TB2wHAjlVXXXXavXpXXXXXXXXXX_!!1766047907.jpg_sum.jpg\",\"bizIcon\":{\"S\":[{\"text\":\"限购50件\",\"color\":\"FF5000\"}]},\"itemId\":\"528419040963\",\"sku\":{\"title\":\"主要颜色:白色;尺码:均码\",\"status\":\"CAN_CHANGE_SKU\",\"skuId\":\"3146174822873\",\"areaId\":\"310101\",\"editable\":true},\"url\":\"${cItemHost}\",\"mutex\":\"B\",\"title\":\"2016春装夏季女装新款潮短袖上衣春夏装中袖t恤女士韩版夏天衣服\",\"showCheckBox\":true,\"sellerId\":1766047907,\"shopId\":\"105779984\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_1766047907\",\"pay\":{\"totalTitle\":\"￥58.00\",\"total\":5800,\"originTitle\":\"￥108.00\",\"origin\":10800,\"nowTitle\":\"￥58.00\",\"now\":5800},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":1,\"max\":50,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"528419040963\\\",\\\"sellerid\\\":\\\"1766047907\\\",\\\"catid\\\":\\\"50000671\\\"}\",\"checked\":false}},\"shopv2_s_359200541\":{\"id\":\"s_359200541\",\"tag\":\"shopv2\",\"fields\":{\"title\":\"馨伊恋家居布艺馆\",\"is11\":false,\"sellerId\":359200541,\"shopId\":\"60975217\",\"sType\":\"C\",\"checked\":false,\"seller\":\"type3323775\",\"url\":\"${cShopHost}\",\"hasBonus\":false}},\"itemv2_223479361103\":{\"id\":\"223479361103\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"tmall\",\"settlement\":\"41412996625_1_0_null_0_null_null_223479361103_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1459479450000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"223479361103\",\"bundleType\":\"act\",\"exclude\":\"B\",\"pic\":\"//img.alicdn.com/bao/uploaded/i1/TB1fM0CKVXXXXcWXFXXXXXXXXXX_!!0-item_pic.jpg_sum.jpg\",\"itemId\":\"41412996625\",\"url\":\"${cItemHost}\",\"mutex\":\"B\",\"title\":\"怡浓100%可可含量 极苦无糖纯黑巧克力纯可可脂手工diy零食品\",\"showCheckBox\":true,\"sellerId\":2143097121,\"shopId\":\"111663265\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_2143097121\",\"pay\":{\"totalTitle\":\"￥39.90\",\"total\":3990,\"originTitle\":\"￥89.00\",\"origin\":8900,\"nowTitle\":\"￥39.90\",\"now\":3990},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":1,\"max\":6552,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"41412996625\\\",\\\"sellerid\\\":\\\"2143097121\\\",\\\"catid\\\":\\\"124320001\\\"}\",\"checked\":false}},\"group_s_97034094_0\":{\"id\":\"s_97034094_0\",\"tag\":\"group\",\"fields\":{\"groupId\":\"s_97034094_0\",\"isRelationItem\":false}},\"shopv2_s_928220693\":{\"id\":\"s_928220693\",\"tag\":\"shopv2\",\"fields\":{\"title\":\"永诚衡器店\",\"is11\":false,\"sellerId\":928220693,\"shopId\":\"72920073\",\"sType\":\"C\",\"checked\":false,\"seller\":\"杨胜中7793\",\"url\":\"${cShopHost}\",\"hasBonus\":false}},\"bundlev2_s_302624451\":{\"id\":\"s_302624451\",\"tag\":\"bundlev2\",\"fields\":{\"valid\":true,\"bundleId\":\"s_302624451\"}},\"itemv2_223217520599\":{\"id\":\"223217520599\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"tmall\",\"settlement\":\"22334731828_2_0_null_0_null_null_223217520599_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1459393016000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"223217520599\",\"bundleType\":\"shop\",\"exclude\":\"B\",\"pic\":\"//img.alicdn.com/bao/uploaded/i4/TB1up29LVXXXXcfXVXXXXXXXXXX_!!0-item_pic.jpg_sum.jpg\",\"itemId\":\"22334731828\",\"url\":\"${cItemHost}\",\"mutex\":\"B\",\"title\":\"韩后化妆品水动力套装面部护理 美容护肤品女爽肤水 补水保湿\",\"showCheckBox\":true,\"sellerId\":1664976033,\"shopId\":\"103506130\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_1664976033\",\"pay\":{\"totalTitle\":\"￥338.00\",\"total\":33800,\"originTitle\":\"￥338.00\",\"origin\":33800,\"nowTitle\":\"￥169.00\",\"now\":16900},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":2,\"max\":9472,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"22334731828\\\",\\\"sellerid\\\":\\\"1664976033\\\",\\\"catid\\\":\\\"50011993\\\"}\",\"checked\":false}},\"group_s_1583854103_0\":{\"id\":\"s_1583854103_0\",\"tag\":\"group\",\"fields\":{\"groupId\":\"s_1583854103_0\",\"isRelationItem\":false}},\"itemv2_223762872666\":{\"id\":\"223762872666\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"taobao\",\"settlement\":\"520366822289_3_3101769584466_null_0_null_null_223762872666_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1459490088000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"223762872666\",\"bundleType\":\"shop\",\"exclude\":\"C\",\"pic\":\"//img.alicdn.com/bao/uploaded/i2/TB1HwSkJFXXXXaDXVXXXXXXXXXX_!!0-item_pic.jpg_sum.jpg\",\"bizIcon\":{\"S\":[{\"text\":\"家装节\",\"pic\":\"//img.alicdn.com/tps/TB1H_XuMpXXXXcYXXXXgCHP.VXX-120x24.png\"}]},\"itemId\":\"520366822289\",\"sku\":{\"title\":\"颜色分类:2016韩版不带抽屉款;尺寸:1000mm*1900mm;家具结构:框架结构\",\"status\":\"CAN_CHANGE_SKU\",\"skuId\":\"3101769584466\",\"areaId\":\"310101\",\"editable\":true},\"url\":\"${cItemHost}\",\"mutex\":\"C\",\"title\":\"包邮实木双人床1.5 1.8米大床松木儿童床1米单人床1.2米简易木床\",\"showCheckBox\":true,\"sellerId\":127196187,\"shopId\":\"36377899\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_127196187\",\"pay\":{\"totalTitle\":\"￥735.00\",\"total\":73500,\"originTitle\":\"￥490.00\",\"origin\":49000,\"nowTitle\":\"￥245.00\",\"now\":24500},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":3,\"max\":8388,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"520366822289\\\",\\\"sellerid\\\":\\\"127196187\\\",\\\"catid\\\":\\\"50019997\\\"}\",\"checked\":false}},\"itemv2_226943929687\":{\"id\":\"226943929687\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"weight\":{\"value\":6400,\"title\":\"6.4kg\"},\"canBatchRemove\":true,\"toBuy\":\"tmall\",\"settlement\":\"525035053578_4_0_null_0_null_null_226943929687_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1460027910000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"226943929687\",\"bundleType\":\"act\",\"exclude\":\"SX\",\"pic\":\"//img.alicdn.com/bao/uploaded/i4/TB1Jz.HKVXXXXX9XpXXXXXXXXXX_!!0-item_pic.jpg_sum.jpg\",\"itemId\":\"525035053578\",\"url\":\"${smItemHost}\",\"mutex\":\"SX-1129326215\",\"title\":\"【天猫超市】维达蓝色经典卫生纸巾3层160g10卷138mm*105mm卷纸\",\"showCheckBox\":true,\"sellerId\":1129326215,\"shopId\":\"101975462\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_1129326215\",\"pay\":{\"totalTitle\":\"￥158.80\",\"total\":15880,\"originTitle\":\"￥39.80\",\"origin\":3980,\"nowTitle\":\"￥39.70\",\"now\":3970},\"quantity\":{\"multiple\":2,\"min\":2,\"quantity\":4,\"max\":23737,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"525035053578\\\",\\\"sellerid\\\":\\\"1129326215\\\",\\\"catid\\\":\\\"50018994\\\"}\",\"checked\":false}},\"bundlev2_s_733695554\":{\"id\":\"s_733695554\",\"tag\":\"bundlev2\",\"fields\":{\"valid\":true,\"bundleId\":\"s_733695554\"}},\"itemv2_223762872668\":{\"id\":\"223762872668\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"taobao\",\"settlement\":\"45746461253_2_0_null_0_null_null_223762872668_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1459490109000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"223762872668\",\"bundleType\":\"shop\",\"exclude\":\"C\",\"pic\":\"//img.alicdn.com/bao/uploaded/i3/TB18wxlIXXXXXcFXVXXXXXXXXXX_!!0-item_pic.jpg_sum.jpg\",\"itemId\":\"45746461253\",\"url\":\"${cItemHost}\",\"mutex\":\"C\",\"title\":\"【徐刀刀的蜂蜜柚子茶】韩国进口 超大罐 果味茶 560g 特价包邮\",\"showCheckBox\":true,\"sellerId\":38482562,\"shopId\":\"36006500\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_38482562\",\"pay\":{\"totalTitle\":\"￥59.80\",\"total\":5980,\"originTitle\":\"￥30.90\",\"origin\":3090,\"nowTitle\":\"￥29.90\",\"now\":2990},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":2,\"max\":70,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"45746461253\\\",\\\"sellerid\\\":\\\"38482562\\\",\\\"catid\\\":\\\"50008910\\\"}\",\"checked\":false}},\"group_s_490728022_0\":{\"id\":\"s_490728022_0\",\"tag\":\"group\",\"fields\":{\"groupId\":\"s_490728022_0\",\"isRelationItem\":false}},\"shopv2_s_1688345693\":{\"id\":\"s_1688345693\",\"tag\":\"shopv2\",\"fields\":{\"coudan\":{\"title\":\"支持翻倍，满199元可抵20元，可跨店\",\"pic\":\"//gtms04.alicdn.com/tps/i4/TB1Y0L3LFXXXXagXFXXTbyDHXXX-168-42.png\"},\"title\":\"乐豪客服饰专营店\",\"is11\":true,\"sellerId\":1688345693,\"shopId\":\"104441576\",\"sType\":\"B\",\"checked\":false,\"seller\":\"乐豪客服饰专营店\",\"url\":\"${cShopHost}\",\"hasBonus\":true}},\"shopv2_s_1664976033\":{\"id\":\"s_1664976033\",\"tag\":\"shopv2\",\"fields\":{\"title\":\"hanhoo韩后旗舰店\",\"is11\":false,\"sellerId\":1664976033,\"shopId\":\"103506130\",\"sType\":\"B\",\"checked\":false,\"seller\":\"hanhoo韩后旗舰店\",\"url\":\"${cShopHost}\",\"hasBonus\":true}},\"bundlev2_s_1573475524\":{\"id\":\"s_1573475524\",\"tag\":\"bundlev2\",\"fields\":{\"valid\":true,\"bundleId\":\"s_1573475524\"}},\"bundlev2_s_2143097121\":{\"id\":\"s_2143097121\",\"tag\":\"bundlev2\",\"fields\":{\"valid\":true,\"bundleId\":\"s_2143097121\"}},\"itemv2_223837668616\":{\"id\":\"223837668616\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"taobao\",\"settlement\":\"528009988858_1_0_null_0_null_null_223837668616_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1459501134000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"223837668616\",\"bundleType\":\"shop\",\"exclude\":\"C\",\"pic\":\"//img.alicdn.com/bao/uploaded/i1/66445298/TB2WwqglpXXXXckXXXXXXXXXXXX_!!66445298.jpg_sum.jpg\",\"bizIcon\":{\"S\":[{\"text\":\"库存紧张\",\"color\":\"FF5000\"}]},\"itemId\":\"528009988858\",\"url\":\"${cItemHost}\",\"mutex\":\"C\",\"title\":\"【已出欣赏】纯天然翡翠A货精雕平安扣冰透吊坠项坠饰品女带证书\",\"showCheckBox\":true,\"sellerId\":66445298,\"shopId\":\"34805838\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_66445298\",\"pay\":{\"totalTitle\":\"￥99999999.00\",\"total\":9999999900,\"origin\":0,\"nowTitle\":\"￥99999999.00\",\"now\":9999999900},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":1,\"max\":1,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"528009988858\\\",\\\"sellerid\\\":\\\"66445298\\\",\\\"catid\\\":\\\"121424023\\\"}\",\"checked\":false}},\"shopv2_s_2143097121\":{\"id\":\"s_2143097121\",\"tag\":\"shopv2\",\"fields\":{\"title\":\"怡浓旗舰店\",\"is11\":false,\"sellerId\":2143097121,\"shopId\":\"111663265\",\"sType\":\"B\",\"checked\":false,\"seller\":\"怡浓旗舰店\",\"url\":\"${cShopHost}\",\"hasBonus\":true}},\"itemv2_223279524641\":{\"id\":\"223279524641\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"tmall\",\"settlement\":\"24314132497_3_37178511718_null_0_null_null_223279524641_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1459394437000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"223279524641\",\"bundleType\":\"shop\",\"exclude\":\"B\",\"pic\":\"//img.alicdn.com/bao/uploaded/i2/TB1QQ9hGXXXXXbuXpXXXXXXXXXX_!!0-item_pic.jpg_sum.jpg\",\"itemId\":\"24314132497\",\"sku\":{\"title\":\"化妆品净含量:110ml\",\"status\":\"CAN_CHANGE_SKU\",\"skuId\":\"37178511718\",\"editable\":true},\"url\":\"${cItemHost}\",\"mutex\":\"B\",\"title\":\"韩后护肤 金盏花净爽冰晶乳110ml 保湿补水控油紧致毛孔\",\"showCheckBox\":true,\"sellerId\":1664976033,\"shopId\":\"103506130\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_1664976033\",\"pay\":{\"totalTitle\":\"￥414.00\",\"total\":41400,\"originTitle\":\"￥276.00\",\"origin\":27600,\"nowTitle\":\"￥138.00\",\"now\":13800},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":3,\"max\":280,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"24314132497\\\",\\\"sellerid\\\":\\\"1664976033\\\",\\\"catid\\\":\\\"50011980\\\"}\",\"checked\":false}},\"bundlev2_invalid\":{\"id\":\"invalid\",\"tag\":\"bundlev2\",\"fields\":{\"valid\":false,\"bundleId\":\"invalid\"}},\"itemv2_224587776158\":{\"id\":\"224587776158\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"tmall\",\"settlement\":\"17544414323_6_3140179047347_null_0_null_null_224587776158_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1459645941000_0_1_null_null_null_null_null_null_null_null_null\",\"cartId\":\"224587776158\",\"bundleType\":\"shop\",\"exclude\":\"B\",\"pic\":\"//img.alicdn.com/bao/uploaded/i1/TB12a0NMpXXXXbgXXXXXXXXXXXX_!!0-item_pic.jpg_sum.jpg\",\"bizIcon\":{\"S\":[{\"pic\":\"//img.alicdn.com/bao/uploaded/TB1qV8FMXXXXXXJXVXXwu0bFXXX.png\"}]},\"itemId\":\"17544414323\",\"sku\":{\"title\":\"颜色分类:起亚K4\",\"status\":\"CAN_CHANGE_SKU\",\"skuId\":\"3140179047347\",\"areaId\":\"310100\",\"editable\":true},\"url\":\"${cItemHost}\",\"mutex\":\"B\",\"title\":\"【出游价】雷遁适合丰田火花塞 卡罗拉火花塞赛拉图起亚福瑞迪k3K5K2火花塞\",\"showCheckBox\":true,\"sellerId\":653064997,\"shopId\":\"64183857\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_653064997\",\"pay\":{\"totalTitle\":\"￥660.00\",\"total\":66000,\"originTitle\":\"￥260.00\",\"origin\":26000,\"nowTitle\":\"￥110.00\",\"now\":11000},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":6,\"max\":708,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"17544414323\\\",\\\"sellerid\\\":\\\"653064997\\\",\\\"catid\\\":\\\"50012859\\\"}\",\"checked\":false}},\"shopv2_s_2396671881\":{\"id\":\"s_2396671881\",\"tag\":\"shopv2\",\"fields\":{\"coudan\":{\"title\":\"支持翻倍，满200元可抵10元，可跨店\",\"pic\":\"//gtms04.alicdn.com/tps/i4/TB1Y0L3LFXXXXagXFXXTbyDHXXX-168-42.png\"},\"title\":\"洛纳丹迪旗舰店\",\"is11\":true,\"sellerId\":2396671881,\"shopId\":\"116483240\",\"sType\":\"B\",\"checked\":false,\"seller\":\"洛纳丹迪旗舰店\",\"url\":\"${cShopHost}\",\"hasBonus\":true}},\"group_s_928220693_0\":{\"id\":\"s_928220693_0\",\"tag\":\"group\",\"fields\":{\"groupId\":\"s_928220693_0\",\"isRelationItem\":false}},\"shopv2_s_38482562\":{\"id\":\"s_38482562\",\"tag\":\"shopv2\",\"fields\":{\"title\":\"徐刀刀的特色食品\",\"is11\":false,\"sellerId\":38482562,\"shopId\":\"36006500\",\"sType\":\"C\",\"checked\":false,\"seller\":\"安蓝妹妹pp\",\"url\":\"${cShopHost}\",\"hasBonus\":false}},\"itemv2_223762872679\":{\"id\":\"223762872679\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"taobao\",\"settlement\":\"35479083060_3_77234458085_null_0_null_null_223762872679_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1459490220000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"223762872679\",\"bundleType\":\"shop\",\"exclude\":\"C\",\"pic\":\"//img.alicdn.com/bao/uploaded/i2/928220693/TB24MGJcFXXXXcrXpXXXXXXXXXX_!!928220693.jpg_sum.jpg\",\"itemId\":\"35479083060\",\"sku\":{\"title\":\"颜色分类:背光黑色（银色秤面）\",\"status\":\"CAN_CHANGE_SKU\",\"skuId\":\"77234458085\",\"areaId\":\"310101\",\"editable\":true},\"url\":\"${cItemHost}\",\"mutex\":\"C\",\"title\":\"高精度行李秤便携式手提秤电子称50kg快递秤称箱包旅游秤包邮特价\",\"showCheckBox\":true,\"sellerId\":928220693,\"shopId\":\"72920073\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_928220693\",\"pay\":{\"totalTitle\":\"￥120.00\",\"total\":12000,\"originTitle\":\"￥89.00\",\"origin\":8900,\"nowTitle\":\"￥40.00\",\"now\":4000},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":3,\"max\":130,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"35479083060\\\",\\\"sellerid\\\":\\\"928220693\\\",\\\"catid\\\":\\\"50009535\\\"}\",\"checked\":false}},\"itemv2_224474270374\":{\"id\":\"224474270374\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"tmall\",\"settlement\":\"520419898227_2_3129469582052_MSU3QzAtNDAzNjg4OTM1MjglN0MwLTM4NjU0MjQ4MzIwJTdDNDc4Mzg0NjY1NTM=_0_null_null_224474270374_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1459643654000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"224474270374\",\"bundleType\":\"shop\",\"exclude\":\"B\",\"pic\":\"//img.alicdn.com/bao/uploaded/i1/TB1nE1HKXXXXXbKXXXXA5rq_pXX_055931.jpg_sum.jpg\",\"bizIcon\":{\"S\":[{\"text\":\"库存紧张\",\"color\":\"FF5000\"}]},\"itemId\":\"520419898227\",\"sku\":{\"title\":\"颜色分类:金色\",\"status\":\"CAN_CHANGE_SKU\",\"skuId\":\"3129469582052\",\"areaId\":\"310101\",\"editable\":true},\"url\":\"${cItemHost}\",\"mutex\":\"B\",\"title\":\"Konka/康佳 BCD-330L4GY对开门冰箱双开门家用一级节能四门电冰箱\",\"showCheckBox\":true,\"sellerId\":1583854103,\"shopId\":\"102219414\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_1583854103\",\"pay\":{\"totalTitle\":\"￥4598.00\",\"total\":459800,\"originTitle\":\"￥3299.00\",\"origin\":329900,\"nowTitle\":\"￥2299.00\",\"now\":229900},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":2,\"max\":2,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"520419898227\\\",\\\"sellerid\\\":\\\"1583854103\\\",\\\"catid\\\":\\\"50003881\\\"}\",\"checked\":false}},\"itemv2_224419490033\":{\"id\":\"224419490033\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"taobao\",\"settlement\":\"526402539330_1_3134209389261_null_0_null_null_224419490033_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1459644655000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"224419490033\",\"bundleType\":\"shop\",\"exclude\":\"C\",\"pic\":\"//img.alicdn.com/bao/uploaded/i4/711437909/TB2VgowlpXXXXXQXpXXXXXXXXXX_!!711437909.jpg_sum.jpg\",\"bizIcon\":{\"S\":[{\"text\":\"库存紧张\",\"color\":\"FF5000\"}]},\"itemId\":\"526402539330\",\"sku\":{\"title\":\"演出场次:2016-4-2 20:00;区域位置:699元现票\",\"status\":\"CAN_CHANGE_SKU\",\"skuId\":\"3134209389261\",\"areaId\":\"310101\",\"editable\":true},\"url\":\"${cItemHost}\",\"mutex\":\"C\",\"title\":\"阳光龙城票务 山西太原梁静茹演唱会门票\",\"showCheckBox\":true,\"sellerId\":711437909,\"shopId\":\"72925052\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_711437909\",\"pay\":{\"totalTitle\":\"￥699.00\",\"total\":69900,\"origin\":0,\"nowTitle\":\"￥699.00\",\"now\":69900},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":1,\"max\":1,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"526402539330\\\",\\\"sellerid\\\":\\\"711437909\\\",\\\"catid\\\":\\\"50019085\\\"}\",\"checked\":false}},\"bundlev2_s_97034094\":{\"id\":\"s_97034094\",\"tag\":\"bundlev2\",\"fields\":{\"valid\":true,\"bundleId\":\"s_97034094\"}},\"group_s_383495780_0\":{\"id\":\"s_383495780_0\",\"tag\":\"group\",\"fields\":{\"groupId\":\"s_383495780_0\",\"isRelationItem\":false}},\"group_s_764853586_0\":{\"id\":\"s_764853586_0\",\"tag\":\"group\",\"fields\":{\"groupId\":\"s_764853586_0\",\"isRelationItem\":false}},\"bundlev2_s_127196187\":{\"id\":\"s_127196187\",\"tag\":\"bundlev2\",\"fields\":{\"valid\":true,\"bundleId\":\"s_127196187\"}},\"group_s_1573475524_0\":{\"id\":\"s_1573475524_0\",\"tag\":\"group\",\"fields\":{\"groupId\":\"s_1573475524_0\",\"isRelationItem\":false}},\"itemv2_223762872684\":{\"id\":\"223762872684\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"tmall\",\"settlement\":\"45639584702_1_3145512621494_null_0_null_null_223762872684_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1459490235000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"223762872684\",\"bundleType\":\"act\",\"exclude\":\"B\",\"pic\":\"//img.alicdn.com/bao/uploaded/i1/302624451/TB29n8ympXXXXbnXpXXXXXXXXXX_!!302624451.jpg_sum.jpg\",\"itemId\":\"45639584702\",\"sku\":{\"title\":\"颜色分类:方案6：+水+乳+防晒 送大礼包\",\"status\":\"CAN_CHANGE_SKU\",\"skuId\":\"3145512621494\",\"areaId\":\"310101\",\"editable\":true},\"url\":\"${cItemHost}\",\"mutex\":\"B\",\"title\":\"韩后零毛孔套装女专柜正品收缩毛孔保湿爽肤控油嫩白护肤品化妆品\",\"showCheckBox\":true,\"sellerId\":302624451,\"shopId\":\"59327515\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_302624451\",\"pay\":{\"totalTitle\":\"￥108.00\",\"total\":10800,\"originTitle\":\"￥357.00\",\"origin\":35700,\"nowTitle\":\"￥108.00\",\"now\":10800},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":1,\"max\":8,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"45639584702\\\",\\\"sellerid\\\":\\\"302624451\\\",\\\"catid\\\":\\\"50011993\\\"}\",\"checked\":false}},\"shopv2_s_653064997\":{\"id\":\"s_653064997\",\"tag\":\"shopv2\",\"fields\":{\"title\":\"禾泽车品专营店\",\"is11\":false,\"sellerId\":653064997,\"shopId\":\"64183857\",\"sType\":\"B\",\"checked\":false,\"seller\":\"禾泽车品专营店\",\"url\":\"${cShopHost}\",\"hasBonus\":true}},\"shopv2_s_383495780\":{\"id\":\"s_383495780\",\"tag\":\"shopv2\",\"fields\":{\"title\":\"Rachel HM ZARA正\",\"is11\":false,\"sellerId\":383495780,\"shopId\":\"72577953\",\"sType\":\"C\",\"checked\":false,\"seller\":\"rachel_523523\",\"url\":\"${cShopHost}\",\"hasBonus\":false}},\"itemv2_223762872680\":{\"id\":\"223762872680\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"taobao\",\"settlement\":\"16712327372_1_0_null_0_null_null_223762872680_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1459490227000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"223762872680\",\"bundleType\":\"shop\",\"exclude\":\"C\",\"pic\":\"//img.alicdn.com/bao/uploaded/i1/TB1z3J2HpXXXXXyXFXXXXXXXXXX_!!0-item_pic.jpg_sum.jpg\",\"itemId\":\"16712327372\",\"url\":\"${cItemHost}\",\"mutex\":\"C\",\"title\":\"尚尼诗亮肤舒缓修护蚕丝面膜两片 成盒买送大礼\",\"showCheckBox\":true,\"sellerId\":97034094,\"shopId\":\"35751564\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_97034094\",\"pay\":{\"totalTitle\":\"￥28.00\",\"total\":2800,\"origin\":0,\"nowTitle\":\"￥28.00\",\"now\":2800},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":1,\"max\":1742,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"16712327372\\\",\\\"sellerid\\\":\\\"97034094\\\",\\\"catid\\\":\\\"121474010\\\"}\",\"checked\":false}},\"group_s_1664976033_0\":{\"id\":\"s_1664976033_0\",\"tag\":\"group\",\"fields\":{\"groupId\":\"s_1664976033_0\",\"isRelationItem\":false}},\"shopv2_s_1583854103\":{\"id\":\"s_1583854103\",\"tag\":\"shopv2\",\"fields\":{\"title\":\"康佳冰洗官方旗舰\",\"is11\":false,\"sellerId\":1583854103,\"shopId\":\"102219414\",\"sType\":\"B\",\"checked\":false,\"seller\":\"康佳冰洗官方旗舰店\",\"url\":\"${cShopHost}\",\"hasBonus\":false}},\"bundlev2_s_1583854103\":{\"id\":\"s_1583854103\",\"tag\":\"bundlev2\",\"fields\":{\"valid\":true,\"bundleId\":\"s_1583854103\"}},\"itemv2_226712148076\":{\"id\":\"226712148076\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"taobao\",\"settlement\":\"528273158785_1_3149411120310_null_0_null_null_226712148076_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1460015799000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"226712148076\",\"bundleType\":\"shop\",\"exclude\":\"C\",\"pic\":\"//img.alicdn.com/bao/uploaded/i2/383495780/TB2bJZomXXXXXXnXXXXXXXXXXXX_!!383495780.jpg_sum.jpg\",\"itemId\":\"528273158785\",\"sku\":{\"title\":\"颜色分类:图色;尺码:40 170 92A现货\",\"status\":\"CAN_CHANGE_SKU\",\"skuId\":\"3149411120310\",\"areaId\":\"310101\",\"editable\":true},\"url\":\"${cItemHost}\",\"mutex\":\"C\",\"title\":\"H&M HM女装专柜正品折扣代购 3月 刺绣九分袖宽松棉布连衣裙现货\",\"showCheckBox\":true,\"sellerId\":383495780,\"shopId\":\"72577953\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_383495780\",\"pay\":{\"totalTitle\":\"￥305.91\",\"total\":30591,\"originTitle\":\"￥309.00\",\"origin\":30900,\"nowTitle\":\"￥305.91\",\"now\":30591},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":1,\"max\":19,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"528273158785\\\",\\\"sellerid\\\":\\\"383495780\\\",\\\"catid\\\":\\\"50010850\\\"}\",\"checked\":false}},\"group_s_38482562_0\":{\"id\":\"s_38482562_0\",\"tag\":\"group\",\"fields\":{\"groupId\":\"s_38482562_0\",\"isRelationItem\":false}},\"bundlev2_s_1664976033\":{\"id\":\"s_1664976033\",\"tag\":\"bundlev2\",\"fields\":{\"valid\":true,\"bundleId\":\"s_1664976033\"}},\"bundlev2_s_2658024837\":{\"id\":\"s_2658024837\",\"tag\":\"bundlev2\",\"fields\":{\"valid\":true,\"bundleId\":\"s_2658024837\"}},\"group_s_1737765814_0\":{\"id\":\"s_1737765814_0\",\"tag\":\"group\",\"fields\":{\"groupId\":\"s_1737765814_0\",\"isRelationItem\":false}},\"shopv2_s_711437909\":{\"id\":\"s_711437909\",\"tag\":\"shopv2\",\"fields\":{\"title\":\"阳光龙城票务\",\"is11\":false,\"sellerId\":711437909,\"shopId\":\"72925052\",\"sType\":\"C\",\"checked\":false,\"seller\":\"maldini1992\",\"url\":\"${cShopHost}\",\"hasBonus\":false}},\"shopv2_s_1796123759\":{\"id\":\"s_1796123759\",\"tag\":\"shopv2\",\"fields\":{\"title\":\"也维农旗舰店\",\"is11\":false,\"sellerId\":1796123759,\"shopId\":\"106764886\",\"sType\":\"B\",\"checked\":false,\"seller\":\"也维农旗舰店\",\"url\":\"${cShopHost}\",\"hasBonus\":true}},\"group_s_653064997_0\":{\"id\":\"s_653064997_0\",\"tag\":\"group\",\"fields\":{\"groupId\":\"s_653064997_0\",\"isRelationItem\":false}},\"group_258140000009819378-6374659153947525120_0\":{\"id\":\"258140000009819378-6374659153947525120_0\",\"tag\":\"group\",\"fields\":{\"groupId\":\"258140000009819378-6374659153947525120_0\",\"isRelationItem\":true}},\"itemv2_223217520601\":{\"id\":\"223217520601\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"tmall\",\"settlement\":\"18614121735_1_32195625812_null_0_null_null_223217520601_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1459393020000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"223217520601\",\"bundleType\":\"shop\",\"exclude\":\"B\",\"pic\":\"//img.alicdn.com/bao/uploaded/i2/TB1kXFkMpXXXXaAXFXXXXXXXXXX_!!0-item_pic.jpg_sum.jpg\",\"itemId\":\"18614121735\",\"sku\":{\"title\":\"化妆品净含量:50g\",\"status\":\"CAN_CHANGE_SKU\",\"skuId\":\"32195625812\",\"editable\":true},\"url\":\"${cItemHost}\",\"mutex\":\"B\",\"title\":\"韩后护肤品 花痴水漾保湿霜50g 滋润补水锁水排浊 提亮美白化妆品\",\"showCheckBox\":true,\"sellerId\":1664976033,\"shopId\":\"103506130\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_1664976033\",\"pay\":{\"totalTitle\":\"￥79.00\",\"total\":7900,\"originTitle\":\"￥158.00\",\"origin\":15800,\"nowTitle\":\"￥79.00\",\"now\":7900},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":1,\"max\":1589,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"18614121735\\\",\\\"sellerid\\\":\\\"1664976033\\\",\\\"catid\\\":\\\"50011980\\\"}\",\"checked\":false}},\"shopv2_s_2243244597\":{\"id\":\"s_2243244597\",\"tag\":\"shopv2\",\"fields\":{\"coudan\":{\"title\":\"支持翻倍，满199元可抵20元，可跨店\",\"pic\":\"//gtms04.alicdn.com/tps/i4/TB1Y0L3LFXXXXagXFXXTbyDHXXX-168-42.png\"},\"title\":\"SBS海外旗舰店\",\"is11\":true,\"sellerId\":2243244597,\"shopId\":\"113481386\",\"sType\":\"HK\",\"checked\":false,\"seller\":\"sbs海外旗舰店\",\"url\":\"${cShopHost}\",\"hasBonus\":false}},\"itemv2_223762872692\":{\"id\":\"223762872692\",\"tag\":\"itemv2\",\"fields\":{\"titleInCheckBoxColor\":\"aaaaaa\",\"valid\":false,\"invalidItemParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"526073016371\\\",\\\"sellerid\\\":\\\"1793684315\\\",\\\"catid\\\":\\\"50010540\\\"}\",\"canBatchRemove\":true,\"codeMsg\":\"对不起，宝贝已经卖光了\",\"toBuy\":\"tmall\",\"settlement\":\"526073016371_1_3131605137667_null_0_null_null_223762872692_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1459490289000_0_0_null_null_null_null_null_null_null_null_null\",\"exclude\":\"B\",\"bundleType\":\"act\",\"titleInCheckBox\":\"失效\",\"cartId\":\"223762872692\",\"pic\":\"//img.alicdn.com/bao/uploaded/i1/1793684315/TB2769QjpXXXXc1XXXXXXXXXXXX_!!1793684315.jpg_sum.jpg\",\"code\":\"CART_ITEM_QUANTITY_ZERO\",\"bizIcon\":{\"S\":[{\"text\":\"库存紧张\",\"color\":\"FF5000\"}]},\"itemId\":\"526073016371\",\"sku\":{\"title\":\"颜色分类:1668鸽子粉;参考身高:48M参考身高96-104cm\",\"status\":\"CAN_NOT_CHANGE_SKU\",\"skuId\":\"3131605137667\",\"areaId\":\"310101\",\"editable\":false},\"url\":\"${cItemHost}\",\"mutex\":\"B\",\"title\":\"齐齐熊 2016新款婴儿衣服鸽子图案两件套纯棉夏装宝宝背心套装\",\"showCheckBox\":true,\"sellerId\":1793684315,\"shopId\":\"106419217\",\"operate\":[\"delete\"],\"bundleId\":\"s_1793684315\",\"pay\":{\"totalTitle\":\"￥32.00\",\"total\":3200,\"originTitle\":\"￥87.00\",\"origin\":8700,\"nowTitle\":\"￥32.00\",\"now\":3200},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":1,\"max\":0,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"526073016371\\\",\\\"sellerid\\\":\\\"1793684315\\\",\\\"catid\\\":\\\"50010540\\\"}\",\"checked\":false}},\"shopv2_s_1771971352\":{\"id\":\"s_1771971352\",\"tag\":\"shopv2\",\"fields\":{\"title\":\"爵莱斯旗舰店\",\"is11\":false,\"sellerId\":1771971352,\"shopId\":\"106009417\",\"sType\":\"B\",\"checked\":false,\"seller\":\"爵莱斯旗舰店\",\"url\":\"${cShopHost}\",\"hasBonus\":true}},\"itemv2_226712148081\":{\"id\":\"226712148081\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"tmall\",\"settlement\":\"35135417999_2_33145662384_null_0_null_null_226712148081_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1460016008000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"226712148081\",\"bundleType\":\"shop\",\"exclude\":\"B\",\"pic\":\"//img.alicdn.com/bao/uploaded/i4/1737765814/T2W9BXXAxaXXXXXXXX_!!1737765814.jpg_sum.jpg\",\"bizIcon\":{\"S\":[{\"text\":\"库存紧张\",\"color\":\"FF5000\"}]},\"itemId\":\"35135417999\",\"sku\":{\"title\":\"颜色分类:浅黄色/NRE03145OS;尺码:均码\",\"status\":\"CAN_CHANGE_SKU\",\"skuId\":\"33145662384\",\"areaId\":\"310101\",\"editable\":true},\"url\":\"${cItemHost}\",\"mutex\":\"B\",\"title\":\"正品耐克iphone4耳机臂包NRE03010OS NIKE手机包运动臂带跑步臂包\",\"showCheckBox\":true,\"sellerId\":1737765814,\"shopId\":\"105628650\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_1737765814\",\"pay\":{\"totalTitle\":\"￥192.00\",\"total\":19200,\"originTitle\":\"￥138.00\",\"origin\":13800,\"nowTitle\":\"￥96.00\",\"now\":9600},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":2,\"max\":3,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"35135417999\\\",\\\"sellerid\\\":\\\"1737765814\\\",\\\"catid\\\":\\\"121384023\\\"}\",\"checked\":false}},\"shopv2_s_97034094\":{\"id\":\"s_97034094\",\"tag\":\"shopv2\",\"fields\":{\"coudan\":{\"title\":\"您已享受“满594.00元减40.00元”优惠\",\"url\":\"//h5.m.taobao.com/cart/gather.html?\",\"nextTitle\":\"更多优惠\"},\"title\":\"尚尼诗品牌自营店\",\"is11\":false,\"sellerId\":97034094,\"shopId\":\"35751564\",\"sType\":\"C\",\"checked\":false,\"seller\":\"聪明屋3\",\"url\":\"${cShopHost}\",\"hasBonus\":true}},\"group_s_711437909_0\":{\"id\":\"s_711437909_0\",\"tag\":\"group\",\"fields\":{\"groupId\":\"s_711437909_0\",\"isRelationItem\":false}},\"itemv2_226712148100\":{\"id\":\"226712148100\",\"tag\":\"itemv2\",\"fields\":{\"titleInCheckBoxColor\":\"aaaaaa\",\"valid\":false,\"invalidItemParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"38547087841\\\",\\\"sellerid\\\":\\\"1771971352\\\",\\\"catid\\\":\\\"50000436\\\"}\",\"canBatchRemove\":true,\"codeMsg\":\"对不起，宝贝已经卖光了\",\"toBuy\":\"tmall\",\"settlement\":\"38547087841_2_3116494426045_null_0_null_null_226712148100_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1460017225000_0_0_null_null_null_null_null_null_null_null_null\",\"exclude\":\"B\",\"bundleType\":\"shop\",\"titleInCheckBox\":\"失效\",\"cartId\":\"226712148100\",\"pic\":\"//img.alicdn.com/bao/uploaded/i4/1771971352/TB2F0pPgFXXXXb3XpXXXXXXXXXX_!!1771971352.jpg_sum.jpg\",\"code\":\"CART_ITEM_QUANTITY_ZERO\",\"bizIcon\":{\"S\":[{\"text\":\"库存紧张\",\"color\":\"FF5000\"}]},\"itemId\":\"38547087841\",\"sku\":{\"title\":\"颜色:灰色;尺码:175/L\",\"status\":\"CAN_NOT_CHANGE_SKU\",\"skuId\":\"3116494426045\",\"areaId\":\"310101\",\"editable\":false},\"url\":\"${cItemHost}\",\"mutex\":\"B\",\"title\":\"春装男装男士长袖T恤V领衣服修身体恤纯棉上衣打底衫春季秋衣男潮\",\"showCheckBox\":true,\"sellerId\":1771971352,\"shopId\":\"106009417\",\"operate\":[\"delete\"],\"bundleId\":\"s_1771971352\",\"pay\":{\"totalTitle\":\"￥116.00\",\"total\":11600,\"originTitle\":\"￥288.00\",\"origin\":28800,\"nowTitle\":\"￥58.00\",\"now\":5800},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":2,\"max\":0,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"38547087841\\\",\\\"sellerid\\\":\\\"1771971352\\\",\\\"catid\\\":\\\"50000436\\\"}\",\"checked\":false}},\"bundlev2_s_383495780\":{\"id\":\"s_383495780\",\"tag\":\"bundlev2\",\"fields\":{\"valid\":true,\"bundleId\":\"s_383495780\"}},\"bundlev2_s_1796123759\":{\"id\":\"s_1796123759\",\"tag\":\"bundlev2\",\"fields\":{\"valid\":true,\"bundleId\":\"s_1796123759\"}},\"itemv2_223091856035\":{\"id\":\"223091856035\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"weight\":{\"value\":260,\"title\":\"0.26kg\"},\"canBatchRemove\":true,\"toBuy\":\"tmall\",\"settlement\":\"37318782642_1_0_null_0_null_null_223091856035_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1459389243000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"223091856035\",\"bundleType\":\"shop\",\"exclude\":\"SX\",\"pic\":\"//img.alicdn.com/bao/uploaded/i1/T1qV01FpVfXXXXXXXX_!!0-item_pic.jpg_sum.jpg\",\"itemId\":\"37318782642\",\"url\":\"${smItemHost}\",\"mutex\":\"SX-1129326215\",\"title\":\"【天猫超市】维达FEEL系列手帕纸4层7张12包装纸巾(黑色魅惑香)\",\"showCheckBox\":true,\"sellerId\":1129326215,\"shopId\":\"101975462\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_1129326215\",\"pay\":{\"totalTitle\":\"￥6.90\",\"total\":690,\"originTitle\":\"￥9.90\",\"origin\":990,\"nowTitle\":\"￥6.90\",\"now\":690},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":1,\"max\":15490,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"37318782642\\\",\\\"sellerid\\\":\\\"1129326215\\\",\\\"catid\\\":\\\"50012480\\\"}\",\"checked\":false}},\"group_s_2658024837_0\":{\"id\":\"s_2658024837_0\",\"tag\":\"group\",\"fields\":{\"groupId\":\"s_2658024837_0\",\"isRelationItem\":false}},\"shopv2_s_1737765814\":{\"id\":\"s_1737765814\",\"tag\":\"shopv2\",\"fields\":{\"title\":\"威寰运动专营店\",\"is11\":false,\"sellerId\":1737765814,\"shopId\":\"105628650\",\"sType\":\"B\",\"checked\":false,\"seller\":\"威寰运动专营店\",\"url\":\"${cShopHost}\",\"hasBonus\":true}},\"itemv2_220308625240\":{\"id\":\"220308625240\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"tmall\",\"settlement\":\"525756222838_7_3129533582969_null_0_null_null_220308625240_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1458809637000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"220308625240\",\"bundleType\":\"shop\",\"exclude\":\"B\",\"pic\":\"//img.alicdn.com/bao/uploaded/i1/1573475524/TB2BAN0jVXXXXbAXpXXXXXXXXXX_!!1573475524.jpg_sum.jpg\",\"itemId\":\"525756222838\",\"sku\":{\"title\":\"颜色分类:卡其色;尺码:L\",\"status\":\"CAN_CHANGE_SKU\",\"skuId\":\"3129533582969\",\"areaId\":\"310101\",\"editable\":true},\"url\":\"${cItemHost}\",\"mutex\":\"B\",\"title\":\"预售^@^诗凡黎2016春装新款韩版中长款风衣女式外套7160133363731\",\"showCheckBox\":true,\"sellerId\":1573475524,\"shopId\":\"102130542\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_1573475524\",\"pay\":{\"totalTitle\":\"￥2793.00\",\"total\":279300,\"originTitle\":\"￥998.00\",\"origin\":99800,\"nowTitle\":\"￥399.00\",\"now\":39900},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":7,\"max\":40,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"525756222838\\\",\\\"sellerid\\\":\\\"1573475524\\\",\\\"catid\\\":\\\"50008901\\\"}\",\"checked\":false}},\"shopv2_s_733695554\":{\"id\":\"s_733695554\",\"tag\":\"shopv2\",\"fields\":{\"title\":\"永瑞木业\",\"is11\":false,\"sellerId\":733695554,\"shopId\":\"127088412\",\"sType\":\"C\",\"checked\":false,\"seller\":\"小雨加期\",\"url\":\"${cShopHost}\",\"hasBonus\":false}},\"shopv2_s_127196187\":{\"id\":\"s_127196187\",\"tag\":\"shopv2\",\"fields\":{\"title\":\"爱筑巢木屋\",\"is11\":false,\"sellerId\":127196187,\"shopId\":\"36377899\",\"sType\":\"C\",\"checked\":false,\"seller\":\"实惠之铺\",\"url\":\"${cShopHost}\",\"hasBonus\":false}},\"shopv2_s_1793684315\":{\"id\":\"s_1793684315\",\"tag\":\"shopv2\",\"fields\":{\"coudan\":{\"title\":\"再买126.00元享包邮\",\"url\":\"//h5.m.taobao.com/cart/gather.html?\",\"nextTitle\":\"去凑单\"},\"title\":\"ciciibear旗舰店\",\"is11\":false,\"sellerId\":1793684315,\"shopId\":\"106419217\",\"sType\":\"B\",\"checked\":false,\"seller\":\"ciciibear旗舰店\",\"url\":\"${cShopHost}\",\"hasBonus\":true}},\"group_s_66445298_0\":{\"id\":\"s_66445298_0\",\"tag\":\"group\",\"fields\":{\"groupId\":\"s_66445298_0\",\"isRelationItem\":false}},\"itemv2_227454589100\":{\"id\":\"227454589100\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"taobao\",\"settlement\":\"13876279979_2_0_null_0_null_null_227454589100_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1460111460000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"227454589100\",\"bundleType\":\"shop\",\"exclude\":\"C\",\"pic\":\"//img.alicdn.com/bao/uploaded/i4/TB18dkuHFXXXXXVXFXXXXXXXXXX_!!0-item_pic.jpg_sum.jpg\",\"bizIcon\":{\"S\":[{\"text\":\"已降26.50元\",\"color\":\"FF5000\"}]},\"itemId\":\"13876279979\",\"url\":\"${cItemHost}\",\"mutex\":\"C\",\"title\":\"尚尼诗亮肤舒缓修护蚕丝面膜舒敏亮肤补水控油淡斑买送多免费试用\",\"showCheckBox\":true,\"sellerId\":97034094,\"shopId\":\"35751564\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_97034094\",\"pay\":{\"totalTitle\":\"￥297.00\",\"total\":29700,\"originTitle\":\"￥175.00\",\"origin\":17500,\"nowTitle\":\"￥148.50\",\"now\":14850},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":2,\"max\":992313,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"13876279979\\\",\\\"sellerid\\\":\\\"97034094\\\",\\\"catid\\\":\\\"121474010\\\"}\",\"checked\":false}},\"shopv2_s_1129326215\":{\"id\":\"s_1129326215\",\"tag\":\"shopv2\",\"fields\":{\"coudan\":{\"title\":\"再买1.70元（10kg以内）包邮\",\"url\":\"//chaoshi.m.tmall.com/coudan.htm?cartId=226943929687,223091856035&\"},\"title\":\"天猫超市华南站\",\"is11\":false,\"sellerId\":1129326215,\"shopId\":\"101975462\",\"sType\":\"SM\",\"checked\":false,\"seller\":\"天猫超市华南站\",\"url\":\"${smShopHost}\",\"hasBonus\":false}},\"itemv2_223767012595\":{\"id\":\"223767012595\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"taobao\",\"settlement\":\"45448797714_1_105412040724_null_0_null_null_223767012595_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1459490283000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"223767012595\",\"bundleType\":\"shop\",\"exclude\":\"C\",\"pic\":\"//img.alicdn.com/bao/uploaded/i1/359200541/TB2qcP3jVXXXXcsXpXXXXXXXXXX_!!359200541.jpg_sum.jpg\",\"itemId\":\"45448797714\",\"sku\":{\"title\":\"颜色分类:挂毯7  47x65\",\"status\":\"CAN_CHANGE_SKU\",\"skuId\":\"105412040724\",\"areaId\":\"310101\",\"editable\":true},\"url\":\"${cItemHost}\",\"mutex\":\"C\",\"title\":\"欧式提花布艺挂画壁画挂电电表箱网络箱酒店装饰画挂毯 壁毯 客厅\",\"showCheckBox\":true,\"sellerId\":359200541,\"shopId\":\"60975217\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_359200541\",\"pay\":{\"totalTitle\":\"￥64.00\",\"total\":6400,\"originTitle\":\"￥80.00\",\"origin\":8000,\"nowTitle\":\"￥64.00\",\"now\":6400},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":1,\"max\":49,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"45448797714\\\",\\\"sellerid\\\":\\\"359200541\\\",\\\"catid\\\":\\\"50000584\\\"}\",\"checked\":false}},\"itemv2_223767012591\":{\"id\":\"223767012591\",\"tag\":\"itemv2\",\"fields\":{\"titleInCheckBoxColor\":\"1eae44\",\"valid\":false,\"invalidItemParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"43811478621\\\",\\\"sellerid\\\":\\\"1911901150\\\",\\\"catid\\\":\\\"350402\\\"}\",\"canBatchRemove\":false,\"codeMsg\":\"对不起，聚划算还未开团\",\"toBuy\":\"tmall\",\"settlement\":\"43811478621_1_82981355560_Mzk1NzY5MDk0NjAlN0Mw_0_null_null_223767012591_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1459490246000_0_0_null_null_null_null_null_null_null_null_null\",\"exclude\":\"B\",\"bundleType\":\"shop\",\"titleInCheckBox\":\"预热\",\"cartId\":\"223767012591\",\"pic\":\"//img.alicdn.com/bao/uploaded/i1/1911901150/TB27tqGeFXXXXXVXpXXXXXXXXXX_!!1911901150.jpg_sum.jpg\",\"code\":\"JU_11\",\"itemId\":\"43811478621\",\"sku\":{\"title\":\"颜色分类:白色\",\"status\":\"CAN_NOT_CHANGE_SKU\",\"skuId\":\"82981355560\",\"areaId\":\"310101\",\"editable\":false},\"url\":\"${cItemHost}\",\"juId\":\"10000020253262\",\"mutex\":\"B\",\"title\":\"【聚划算未开团】现货 Blueair/布鲁雅尔 空气净化器家用智能除甲醛雾霾 270E Slim\",\"showCheckBox\":true,\"sellerId\":1911901150,\"shopId\":\"108266224\",\"operate\":[\"delete\"],\"bundleId\":\"s_1911901150\",\"pay\":{\"totalTitle\":\"￥4590.00\",\"total\":459000,\"origin\":0,\"nowTitle\":\"￥4590.00\",\"now\":459000},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":1,\"max\":74,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"43811478621\\\",\\\"sellerid\\\":\\\"1911901150\\\",\\\"catid\\\":\\\"350402\\\"}\",\"checked\":false}},\"bundlev2_s_711437909\":{\"id\":\"s_711437909\",\"tag\":\"bundlev2\",\"fields\":{\"valid\":true,\"bundleId\":\"s_711437909\"}},\"bundlev2_s_38482562\":{\"id\":\"s_38482562\",\"tag\":\"bundlev2\",\"fields\":{\"valid\":true,\"bundleId\":\"s_38482562\"}},\"shopv2_s_1766047907\":{\"id\":\"s_1766047907\",\"tag\":\"shopv2\",\"fields\":{\"title\":\"戚米旗舰店\",\"is11\":false,\"sellerId\":1766047907,\"shopId\":\"105779984\",\"sType\":\"B\",\"checked\":false,\"seller\":\"戚米旗舰店\",\"url\":\"${cShopHost}\",\"hasBonus\":false}},\"group_s_733695554_0\":{\"id\":\"s_733695554_0\",\"tag\":\"group\",\"fields\":{\"groupId\":\"s_733695554_0\",\"isRelationItem\":false}},\"group_s_1796123759_0\":{\"id\":\"s_1796123759_0\",\"tag\":\"group\",\"fields\":{\"groupId\":\"s_1796123759_0\",\"isRelationItem\":false}},\"itemv2_130442023139\":{\"id\":\"130442023139\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"tmall\",\"settlement\":\"19886150576_2_31744410204_null_0_null_null_130442023139_null_null_null_258140000009819378-1593771683529097216_0_buyerCondition~0~~cartCreateTime~1443701981000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"130442023139\",\"bundleType\":\"combo\",\"exclude\":\"B\",\"pic\":\"//img.alicdn.com/bao/uploaded/i1/1737765814/T267.6XmdXXXXXXXXX_!!1737765814.jpg_sum.jpg\",\"bizIcon\":{\"S\":[{\"text\":\"已降3.00元\",\"color\":\"FF5000\"}]},\"itemId\":\"19886150576\",\"sku\":{\"title\":\"颜色分类:棕色/9034007201;尺码:均码\",\"status\":\"CAN_NOT_CHANGE_SKU\",\"skuId\":\"31744410204\",\"areaId\":\"310100\",\"editable\":false},\"url\":\"${cItemHost}\",\"mutex\":\"B\",\"title\":\"生日礼物NIKE/耐克正品PU皮 零钱包903400701 长短款钱夹卡包男女\",\"showCheckBox\":false,\"sellerId\":1737765814,\"shopId\":\"105628650\",\"operate\":[],\"bundleId\":\"s_1737765814\",\"pay\":{\"totalTitle\":\"￥190.00\",\"total\":19000,\"originTitle\":\"￥159.00\",\"origin\":15900,\"nowTitle\":\"￥95.00\",\"now\":9500},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":2,\"max\":7,\"editable\":false},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"19886150576\\\",\\\"sellerid\\\":\\\"1737765814\\\",\\\"catid\\\":\\\"121384023\\\"}\",\"checked\":false}},\"shopv2_s_1985716624\":{\"id\":\"s_1985716624\",\"tag\":\"shopv2\",\"fields\":{\"title\":\"圣春秋水果旗舰店\",\"is11\":false,\"sellerId\":1985716624,\"shopId\":\"108676974\",\"sType\":\"B\",\"checked\":false,\"seller\":\"圣春秋水果旗舰店\",\"url\":\"${cShopHost}\",\"hasBonus\":false}},\"bundlev2_s_66445298\":{\"id\":\"s_66445298\",\"tag\":\"bundlev2\",\"fields\":{\"valid\":true,\"bundleId\":\"s_66445298\"}},\"promotion_s_97034094\":{\"id\":\"s_97034094\",\"tag\":\"promotion\",\"fields\":{\"promotionType\":\"bundle\",\"titles\":[\" 满148元减10元\",\" 满297元减17元\",\" 满445元减30元\",\" 满594元减40元\",\" 满742元减50元\"]}},\"shopv2_s_302624451\":{\"id\":\"s_302624451\",\"tag\":\"shopv2\",\"fields\":{\"title\":\"网都化妆品专营店\",\"is11\":false,\"sellerId\":302624451,\"shopId\":\"59327515\",\"sType\":\"B\",\"checked\":false,\"seller\":\"网都化妆品专营店\",\"url\":\"${cShopHost}\",\"hasBonus\":true}},\"bundlev2_s_2396671881\":{\"id\":\"s_2396671881\",\"tag\":\"bundlev2\",\"fields\":{\"valid\":true,\"bundleId\":\"s_2396671881\"}},\"shopv2_s_2658024837\":{\"id\":\"s_2658024837\",\"tag\":\"shopv2\",\"fields\":{\"title\":\"阿里健康测试1的小\",\"is11\":false,\"sellerId\":2658024837,\"shopId\":\"135587617\",\"sType\":\"YY\",\"checked\":false,\"seller\":\"阿里健康测试1\",\"url\":\"${cShopHost}\",\"hasBonus\":false}},\"bundlev2_s_1766047907\":{\"id\":\"s_1766047907\",\"tag\":\"bundlev2\",\"fields\":{\"valid\":true,\"bundleId\":\"s_1766047907\"}},\"bundlev2_s_359200541\":{\"id\":\"s_359200541\",\"tag\":\"bundlev2\",\"fields\":{\"valid\":true,\"bundleId\":\"s_359200541\"}},\"group_s_127196187_0\":{\"id\":\"s_127196187_0\",\"tag\":\"group\",\"fields\":{\"groupId\":\"s_127196187_0\",\"isRelationItem\":false}},\"bundlev2_s_490728022\":{\"id\":\"s_490728022\",\"tag\":\"bundlev2\",\"fields\":{\"valid\":true,\"bundleId\":\"s_490728022\"}},\"itemv2_130442023140\":{\"id\":\"130442023140\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"tmall\",\"settlement\":\"19911393547_2_31768546063_null_0_null_null_130442023140_null_null_null_258140000009819378-1593771683529097216_0_buyerCondition~0~~cartCreateTime~1443701981000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"130442023140\",\"bundleType\":\"combo\",\"exclude\":\"B\",\"pic\":\"//img.alicdn.com/bao/uploaded/i3/T1FWs6XkRjXXbgXNI2_044337.jpg_sum.jpg\",\"itemId\":\"19911393547\",\"sku\":{\"title\":\"颜色分类:雾灰/NIA06203NS雾灰;尺码:长宽高（21*10*3）cm\",\"status\":\"CAN_NOT_CHANGE_SKU\",\"skuId\":\"31768546063\",\"areaId\":\"310100\",\"editable\":false},\"url\":\"${cItemHost}\",\"mutex\":\"B\",\"title\":\"生日礼物 NIKE/耐克时尚情侣豆蔻女士长款钱包 拉链式钱夹手包袋\",\"showCheckBox\":false,\"sellerId\":1737765814,\"shopId\":\"105628650\",\"operate\":[],\"bundleId\":\"s_1737765814\",\"pay\":{\"totalTitle\":\"￥192.00\",\"total\":19200,\"originTitle\":\"￥138.00\",\"origin\":13800,\"nowTitle\":\"￥96.00\",\"now\":9600},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":2,\"max\":7,\"editable\":false},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"19911393547\\\",\\\"sellerid\\\":\\\"1737765814\\\",\\\"catid\\\":\\\"121384023\\\"}\",\"checked\":false}},\"shopv2_s_490728022\":{\"id\":\"s_490728022\",\"tag\":\"shopv2\",\"fields\":{\"title\":\"驴妈妈旅游专卖店\",\"is11\":false,\"sellerId\":490728022,\"shopId\":\"62585666\",\"sType\":\"B\",\"checked\":false,\"seller\":\"驴妈妈旅游专卖店\",\"url\":\"${cShopHost}\",\"hasBonus\":false}},\"group_258140000009819378-1593771683529097216_0\":{\"id\":\"258140000009819378-1593771683529097216_0\",\"tag\":\"group\",\"fields\":{\"groupId\":\"258140000009819378-1593771683529097216_0\",\"isRelationItem\":true}},\"itemv2_130442023142\":{\"id\":\"130442023142\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"canBatchRemove\":true,\"toBuy\":\"tmall\",\"settlement\":\"35135417999_2_33145662384_null_0_null_null_130442023142_null_null_null_258140000009819378-1593771683529097216_2_buyerCondition~0~~cartCreateTime~1443701981000_0_0_null_null_null_null_null_null_null_null_null\",\"cartId\":\"130442023142\",\"bundleType\":\"combo\",\"exclude\":\"B\",\"pic\":\"//img.alicdn.com/bao/uploaded/i4/1737765814/T2W9BXXAxaXXXXXXXX_!!1737765814.jpg_sum.jpg\",\"bizIcon\":{\"S\":[{\"text\":\"库存紧张\",\"color\":\"FF5000\"}]},\"itemId\":\"35135417999\",\"sku\":{\"title\":\"颜色分类:浅黄色/NRE03145OS;尺码:均码\",\"status\":\"CAN_NOT_CHANGE_SKU\",\"skuId\":\"33145662384\",\"areaId\":\"310100\",\"editable\":false},\"url\":\"${cItemHost}\",\"mutex\":\"B\",\"title\":\"正品耐克iphone4耳机臂包NRE03010OS NIKE手机包运动臂带跑步臂包\",\"showCheckBox\":true,\"sellerId\":1737765814,\"shopId\":\"105628650\",\"operate\":[\"delete\"],\"bundleId\":\"s_1737765814\",\"pay\":{\"totalTitle\":\"￥192.00\",\"total\":19200,\"originTitle\":\"￥138.00\",\"origin\":13800,\"nowTitle\":\"￥96.00\",\"now\":9600},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":2,\"max\":3,\"editable\":false},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"35135417999\\\",\\\"sellerid\\\":\\\"1737765814\\\",\\\"catid\\\":\\\"121384023\\\"}\",\"checked\":false}},\"group_s_302624451_1\":{\"id\":\"s_302624451_1\",\"tag\":\"group\",\"fields\":{\"groupId\":\"s_302624451_1\",\"isRelationItem\":false}},\"itemv2_227368838175\":{\"id\":\"227368838175\",\"tag\":\"itemv2\",\"fields\":{\"valid\":true,\"h5CartParam\":\"{\\\"createTime\\\":1455699307000,\\\"skuId\\\":\\\"3103868570810\\\",\\\"attr\\\":\\\";op:1880;cityCode:310101;\\\",\\\"quantity\\\":1,\\\"cartId\\\":\\\"227368838175\\\",\\\"itemId\\\":\\\"13847725380\\\"}\",\"canBatchRemove\":true,\"toBuy\":\"tmall\",\"settlement\":\"13847725380_1_3103868570810_null_0_null_null_227368838175_null_null_null_0_null_buyerCondition~0~~cartCreateTime~1455699307000_0_0_null_null_null_null_null_null_null_null_null\",\"exclude\":\"YY\",\"cartId\":\"227368838175\",\"bundleType\":\"shop\",\"pic\":\"//img.alicdn.com/bao/uploaded/i3/TB1elUzHFXXXXc7XpXXXXXXXXXX_!!2-item_pic.png_sum.jpg\",\"bizIcon\":{\"S\":[{\"text\":\"限购10件\",\"color\":\"FF5000\"}]},\"itemId\":\"13847725380\",\"sku\":{\"title\":\"套餐类型:标准装\",\"status\":\"CAN_CHANGE_SKU\",\"skuId\":\"3103868570810\",\"areaId\":\"310101\",\"editable\":true},\"url\":\"${cItemHost}\",\"mutex\":\"YY\",\"title\":\"2盒18.9】999感冒灵颗粒9袋 三九感冒灵冲剂感冒药头痛鼻塞咳嗽药\",\"showCheckBox\":true,\"sellerId\":764853586,\"shopId\":\"68982189\",\"operate\":[\"edit\",\"addFavor\",\"delete\"],\"bundleId\":\"s_764853586\",\"pay\":{\"totalTitle\":\"￥10.50\",\"total\":1050,\"originTitle\":\"￥18.80\",\"origin\":1880,\"nowTitle\":\"￥10.50\",\"now\":1050},\"quantity\":{\"multiple\":1,\"min\":1,\"quantity\":1,\"max\":10,\"editable\":true},\"itemRecParamId\":\"{\\\"h5version\\\":\\\"2\\\",\\\"nid\\\":\\\"13847725380\\\",\\\"sellerid\\\":\\\"764853586\\\",\\\"catid\\\":\\\"50023740\\\"}\",\"checked\":false}}},\"hierarchy\":{\"structure\":{\"bundlev2_s_682450469\":[\"shopv2_s_682450469\",\"group_s_682450469_0\"],\"group_s_1664976033_0\":[\"itemv2_223279524641\",\"itemv2_223217520601\",\"itemv2_223217520599\"],\"bundlev2_s_764853586\":[\"shopv2_s_764853586\",\"group_s_764853586_0\"],\"bundlev2_s_1583854103\":[\"shopv2_s_1583854103\",\"group_s_1583854103_0\"],\"group_s_628357669_0\":[\"itemv2_228084218025\"],\"group_s_2143097121_1\":[\"itemv2_223479361103\"],\"group_s_38482562_0\":[\"itemv2_223762872668\"],\"bundlev2_s_1664976033\":[\"shopv2_s_1664976033\",\"group_s_1664976033_0\"],\"bundlev2_s_2658024837\":[\"shopv2_s_2658024837\",\"group_s_2658024837_0\"],\"group_s_1737765814_0\":[\"itemv2_226759032874\",\"itemv2_226712148081\"],\"group_s_2396671881_0\":[\"itemv2_227462292832\"],\"group_s_1766047907_0\":[\"itemv2_226712148096\"],\"group_s_653064997_0\":[\"itemv2_224587776158\"],\"bundlev2_s_653064997\":[\"shopv2_s_653064997\",\"group_s_653064997_0\"],\"group_s_359200541_0\":[\"itemv2_223767012595\"],\"group_258140000009819378-6374659153947525120_0\":[\"itemv2_224419490040\",\"itemv2_224419490041\"],\"bundlev2_s_725677994\":[\"shopv2_s_725677994\",\"group_s_725677994_1\",\"group_s_725677994_0\"],\"bundlev2_s_1129326215\":[\"shopv2_s_1129326215\",\"group_s_1129326215_1\",\"group_s_1129326215_0\"],\"group_s_682450469_0\":[\"itemv2_227753736814\"],\"bundlev2_s_628357669\":[\"shopv2_s_628357669\",\"group_s_628357669_0\",\"promotion_s_628357669\"],\"group_s_1985716624_0\":[\"itemv2_223767012573\"],\"group_s_711437909_0\":[\"itemv2_224419490033\"],\"bundlev2_s_2243244597\":[\"shopv2_s_2243244597\",\"group_s_2243244597_0\"],\"group_s_725677994_0\":[\"itemv2_228084218153\",\"itemv2_227237894179\",\"itemv2_226777201838\",\"itemv2_222866318851\",\"itemv2_222866557429\"],\"bundlev2_s_1985716624\":[\"shopv2_s_1985716624\",\"group_s_1985716624_0\"],\"bundlev2_s_383495780\":[\"shopv2_s_383495780\",\"group_s_383495780_0\"],\"bundlev2_s_1796123759\":[\"shopv2_s_1796123759\",\"group_s_1796123759_0\"],\"group_s_725677994_1\":[\"itemv2_226614877025\"],\"group_s_1129326215_0\":[\"itemv2_223091856035\"],\"group_s_1129326215_1\":[\"itemv2_226943929687\"],\"bundlev2_s_1737765814\":[\"shopv2_s_1737765814\",\"group_s_1737765814_0\",\"group_258140000009819378-6374659153947525120_0\",\"group_258140000009819378-1593771683529097216_0\"],\"group_s_2658024837_0\":[\"itemv2_226036718142\"],\"group_s_2243244597_0\":[\"itemv2_226186200642\"],\"bundlev2_s_928220693\":[\"shopv2_s_928220693\",\"group_s_928220693_0\"],\"group_s_66445298_0\":[\"itemv2_223837668616\"],\"group_s_97034094_0\":[\"itemv2_227753736384\",\"itemv2_227454589100\",\"itemv2_223762872680\",\"itemv2_218763061535\"],\"bundlev2_s_302624451\":[\"shopv2_s_302624451\",\"group_s_302624451_1\"],\"group_s_1583854103_0\":[\"itemv2_224474270374\"],\"global_1\":[\"banner_1\",\"allItemv2_1\"],\"allItemv2_1\":[\"bundlev2_s_725677994\",\"bundlev2_s_682450469\",\"bundlev2_s_628357669\",\"bundlev2_invalid\",\"footer_1\",\"bundlev2_s_97034094\",\"bundlev2_s_2396671881\",\"bundlev2_s_764853586\",\"bundlev2_s_1129326215\",\"bundlev2_s_1737765814\",\"bundlev2_s_1796123759\",\"bundlev2_s_1766047907\",\"bundlev2_s_383495780\",\"bundlev2_s_2243244597\",\"bundlev2_s_2658024837\",\"bundlev2_s_653064997\",\"bundlev2_s_490728022\",\"bundlev2_s_711437909\",\"bundlev2_s_1583854103\",\"bundlev2_s_66445298\",\"bundlev2_s_733695554\",\"bundlev2_s_359200541\",\"bundlev2_s_302624451\",\"bundlev2_s_928220693\",\"bundlev2_s_1573475524\",\"bundlev2_s_38482562\",\"bundlev2_s_127196187\",\"bundlev2_s_1985716624\",\"bundlev2_s_2143097121\",\"bundlev2_s_1664976033\"],\"bundlev2_s_733695554\":[\"shopv2_s_733695554\",\"group_s_733695554_0\"],\"bundlev2_s_711437909\":[\"shopv2_s_711437909\",\"group_s_711437909_0\"],\"group_s_490728022_0\":[\"itemv2_224478974234\"],\"bundlev2_s_38482562\":[\"shopv2_s_38482562\",\"group_s_38482562_0\"],\"group_s_733695554_0\":[\"itemv2_223762872843\"],\"group_s_1796123759_0\":[\"itemv2_226712148097\"],\"bundlev2_s_1573475524\":[\"shopv2_s_1573475524\",\"group_s_1573475524_0\"],\"bundlev2_s_2143097121\":[\"shopv2_s_2143097121\",\"group_s_2143097121_1\"],\"bundlev2_s_66445298\":[\"shopv2_s_66445298\",\"group_s_66445298_0\"],\"bundlev2_invalid\":[\"itemv2_226777201848\",\"itemv2_228084218026\",\"itemv2_216920281625\",\"itemv2_226712148100\",\"itemv2_226712148098\",\"itemv2_223762872692\",\"itemv2_223767012591\"],\"bundlev2_s_2396671881\":[\"shopv2_s_2396671881\",\"group_s_2396671881_0\"],\"group_s_928220693_0\":[\"itemv2_223762872679\"],\"bundlev2_s_1766047907\":[\"shopv2_s_1766047907\",\"group_s_1766047907_0\"],\"bundlev2_s_359200541\":[\"shopv2_s_359200541\",\"group_s_359200541_0\"],\"bundlev2_s_490728022\":[\"shopv2_s_490728022\",\"group_s_490728022_0\"],\"group_s_127196187_0\":[\"itemv2_223762872666\"],\"group_258140000009819378-1593771683529097216_0\":[\"itemv2_130442023142\",\"itemv2_130442023140\",\"itemv2_130442023139\"],\"group_s_383495780_0\":[\"itemv2_226712148076\"],\"bundlev2_s_97034094\":[\"shopv2_s_97034094\",\"group_s_97034094_0\",\"promotion_s_97034094\"],\"group_s_764853586_0\":[\"itemv2_227368838175\"],\"bundlev2_s_127196187\":[\"shopv2_s_127196187\",\"group_s_127196187_0\"],\"group_s_302624451_1\":[\"itemv2_223762872684\"],\"group_s_1573475524_0\":[\"itemv2_220308625240\"]},\"root\":\"global_1\"},\"pageMeta\":{\"totalCount\":84,\"pageNo\":2,\"pageSize\":40,\"isNext\":true,\"checkMax\":50,\"startTimestamp\":\"2016-03-31 11:20:37\",\"isEndPage\":false,\"isExchangeIdentity\":false},\"feature\":{\"gzip\":true},\"excludes\":{\"global\":[\"HK\",\"YY\",\"SX\",\"HKDF\"],\"inner\":{},\"innerGlobal\":[\"SX\",\"HKDF\"],\"tip\":{\"HK\":\"亲，天猫国际的宝贝不能和其它店铺一起结算哦\",\"YY\":\"亲，天猫医药馆的宝贝不能和其它店铺一起结算哦\",\"SX\":\"亲，天猫商超的宝贝不能跨区域购买哦\",\"HKDF\":\"亲，天猫国际免税店的宝贝不能和其他店铺一起结算哦\",\"DEFAULT\":\"请分开结算以下商品\"}},\"controlParas\":{\"eTag\":\"\",\"orderByNative\":{\"YY\":\"api.m.yao.95095.com\"},\"invalidItemRecommendUrl\":\"//h5.m.taobao.com/app/searchsimilar/www/tbsimilar/index.html?from=tbcart&appid=2016&requesttype=tpp&\",\"allowClearCache\":true,\"isSettlementAlone\":true,\"itemRecommendType\":\"sideslip\",\"smShopHost\":\"//chaoshi.m.tmall.com/\",\"cShopHost\":\"//shop.m.taobao.com/shop/shop_index.htm?shop_id=${shopId}\",\"preLoadOpen\":true,\"smItemHost\":\"//page.m.tmall.com/chaoshi/detail.htm?id=${itemId}\",\"cItemHost\":\"//a.m.taobao.com/i${itemId}.htm\",\"recomm\":{\"num\":16},\"time\":1460357760962,\"itemRecommendUrl\":\"//h5.m.taobao.com/app/searchsimilar/www/tbsimilar/index.html?from=tbcart&appid=2016&requesttype=tpp&\",\"remoteCheck\":false,\"useACDS\":false,\"orderByH5Urls\":{\"YY\":\"//d.m.taobao.com/yao/proxy.htm?hex=n&use_cod=false&buyer_from=tmall_wap&ttid=702769@taobao_iphone_5.6.0\"},\"closeDouble11Model\":true}}}"
  },
  {
    "path": "src/test/resources/json/trade.json",
    "content": "{\"bottom_bar\":{\"ct_default\":{\"children\":[{\"key\":\"bottom_bar_icon\",\"ruleId\":\"wangwang\"},{\"key\":\"sys_button\",\"ruleId\":\"ct_cart\"},{\"key\":\"sys_button\",\"ruleId\":\"ct_buy\"}]},\"ct_supermarket\":{\"children\":[{\"key\":\"sys_button\",\"ruleId\":\"ct_cartSM\"}]},\"ct_supermarketLF\":{\"children\":[{\"key\":\"ct_sys_button\",\"ruleId\":\"ct_cartSM_LF\"},{\"key\":\"ct_sys_button\",\"ruleId\":\"ct_buySM_LF\"}]},\"ct_supermarketPresale\":{\"children\":[{\"key\":\"ct_sys_button\",\"ruleId\":\"ct_cartSM_presale\"},{\"key\":\"ct_sys_button\",\"ruleId\":\"ct_buySM_presale\"}]},\"default\":{\"children\":[{\"key\":\"bottom_bar_icon\",\"ruleId\":\"wangwang\"},{\"key\":\"bottom_bar_icon\",\"ruleId\":\"shop\"},{\"key\":\"bottom_bar_fav\"},{\"key\":\"sys_button\",\"ruleId\":\"cart\"},{\"key\":\"sys_button\",\"ruleId\":\"buy\"}]},\"hotSpot\":{\"children\":[{\"key\":\"bottom_bar_icon\",\"ruleId\":\"wangwang\"},{\"key\":\"bottom_bar_icon\",\"ruleId\":\"shop\"},{\"key\":\"bottom_bar_fav\"},{\"key\":\"bottom_bar_hotspot\"}]},\"hotspot\":{\"children\":[{\"key\":\"bottom_bar_icon\",\"ruleId\":\"wangwang\"},{\"key\":\"bottom_bar_icon\",\"ruleId\":\"shop\"},{\"key\":\"bottom_bar_fav\"},{\"key\":\"bottom_bar_hotspot\"}]},\"jhsNotStart\":{\"children\":[{\"key\":\"bottom_bar_icon\",\"ruleId\":\"wangwang\"},{\"key\":\"bottom_bar_icon\",\"ruleId\":\"shop\"},{\"key\":\"bottom_bar_fav\"},{\"key\":\"sys_button\",\"ruleId\":\"cart\"},{\"key\":\"bottom_bar_remind\"}]},\"jhsStart\":{\"children\":[{\"key\":\"bottom_bar_icon\",\"ruleId\":\"wangwang\"},{\"key\":\"bottom_bar_icon\",\"ruleId\":\"shop\"},{\"key\":\"bottom_bar_fav\"},{\"key\":\"sys_button\",\"ruleId\":\"cart\"},{\"key\":\"sys_button\",\"ruleId\":\"buyJhs\"}]},\"jhs_default\":{\"children\":[{\"key\":\"jhs_cart_button\",\"ruleId\":\"jhs_cart\"},{\"key\":\"jhs_buy_button\",\"ruleId\":\"buy\"}]},\"jhs_hotSpot\":{\"children\":[{\"key\":\"bottom_bar_hotspot\",\"ruleId\":\"jhs_default\"}]},\"jhs_presale\":{\"children\":[{\"key\":\"jhs_cart_button\",\"ruleId\":\"jhs_cart\"},{\"key\":\"bottom_bar_presale\",\"ruleId\":\"jhs_default\"}]},\"jhs_supermarket\":{\"children\":[{\"key\":\"bottom_bar_sm_cart\",\"ruleId\":\"jhs_default\"},{\"key\":\"sys_button\",\"ruleId\":\"cartSM\"}]},\"ladyGoNotStart\":{\"children\":[{\"key\":\"bottom_bar_icon\",\"ruleId\":\"wangwang\"},{\"key\":\"bottom_bar_icon\",\"ruleId\":\"shop\"},{\"key\":\"bottom_bar_fav\"},{\"key\":\"sys_button\",\"ruleId\":\"cart\"},{\"key\":\"bottom_bar_remind\",\"ruleId\":\"tmall_ladyGo\"}]},\"ladyGoStart\":{\"children\":[{\"key\":\"bottom_bar_icon\",\"ruleId\":\"wangwang\"},{\"key\":\"bottom_bar_icon\",\"ruleId\":\"shop\"},{\"key\":\"bottom_bar_fav\"},{\"key\":\"sys_button\",\"ruleId\":\"cart\"},{\"key\":\"sys_button\",\"ruleId\":\"tmall_ladyGoBuy\"}]},\"presale\":{\"children\":[{\"key\":\"bottom_bar_icon\",\"ruleId\":\"wangwang\"},{\"key\":\"bottom_bar_icon\",\"ruleId\":\"shop\"},{\"key\":\"bottom_bar_fav\"},{\"key\":\"bottom_bar_presale\"}]},\"seckill\":{\"children\":[{\"key\":\"bottom_bar_seckill\"}]},\"supermarket\":{\"children\":[{\"key\":\"bottom_bar_fav\"},{\"key\":\"bottom_bar_sm_cart\"},{\"key\":\"sys_button\",\"ruleId\":\"cartSM\"}]},\"supermarketLF\":{\"children\":[{\"key\":\"bottom_bar_fav\"},{\"key\":\"bottom_bar_sm_cart\"},{\"key\":\"sys_button\",\"ruleId\":\"cart\"},{\"key\":\"sys_button\",\"ruleId\":\"buy\"}]},\"supermarketPresale\":{\"children\":[{\"key\":\"bottom_bar_icon\",\"ruleId\":\"shopSM\"},{\"key\":\"bottom_bar_fav\"},{\"key\":\"bottom_bar_presale\"}]},\"tmall_default\":{\"children\":[{\"key\":\"bottom_bar_icon\",\"ruleId\":\"wangwangTmall\"},{\"key\":\"bottom_bar_icon\",\"ruleId\":\"shopTmall\"},{\"key\":\"bottom_bar_fav\"},{\"key\":\"sys_button\",\"ruleId\":\"cart\"},{\"key\":\"sys_button\",\"ruleId\":\"buy\"}]},\"tmall_hotspot\":{\"children\":[{\"key\":\"bottom_bar_icon\",\"ruleId\":\"wangwangTmall\"},{\"key\":\"bottom_bar_icon\",\"ruleId\":\"shopTmall\"},{\"key\":\"bottom_bar_fav\"},{\"key\":\"bottom_bar_hotspot\"}]},\"tmall_jhsNotStart\":{\"children\":[{\"key\":\"bottom_bar_icon\",\"ruleId\":\"wangwangTmall\"},{\"key\":\"bottom_bar_icon\",\"ruleId\":\"shopTmall\"},{\"key\":\"bottom_bar_fav\"},{\"key\":\"sys_button\",\"ruleId\":\"cart\"},{\"key\":\"bottom_bar_remind\"}]},\"tmall_jhsStart\":{\"children\":[{\"key\":\"bottom_bar_icon\",\"ruleId\":\"wangwangTmall\"},{\"key\":\"bottom_bar_icon\",\"ruleId\":\"shopTmall\"},{\"key\":\"bottom_bar_fav\"},{\"key\":\"sys_button\",\"ruleId\":\"cart\"},{\"key\":\"sys_button\",\"ruleId\":\"buyJhs\"}]},\"tmall_ladyGoNotStart\":{\"children\":[{\"key\":\"bottom_bar_icon\",\"ruleId\":\"wangwangLadyGoTmall\"},{\"key\":\"bottom_bar_icon\",\"ruleId\":\"shopLadyGoTmall\"},{\"key\":\"bottom_bar_fav\"},{\"key\":\"sys_button\",\"ruleId\":\"cart\"},{\"key\":\"bottom_bar_remind\",\"ruleId\":\"tmall_ladyGo\"}]},\"tmall_ladyGoStart\":{\"children\":[{\"key\":\"bottom_bar_icon\",\"ruleId\":\"wangwangLadyGoTmall\"},{\"key\":\"bottom_bar_icon\",\"ruleId\":\"shopLadyGoTmall\"},{\"key\":\"bottom_bar_fav\"},{\"key\":\"sys_button\",\"ruleId\":\"cart\"},{\"key\":\"sys_button\",\"ruleId\":\"tmall_ladyGoBuy\"}]},\"tmall_presale\":{\"children\":[{\"key\":\"bottom_bar_icon\",\"ruleId\":\"wangwangTmall\"},{\"key\":\"bottom_bar_icon\",\"ruleId\":\"shopTmall\"},{\"key\":\"bottom_bar_fav\"},{\"key\":\"bottom_bar_presale\"}]},\"tmall_reserve\":{\"children\":[{\"key\":\"bottom_bar_icon\",\"ruleId\":\"wangwangTmall\"},{\"key\":\"bottom_bar_icon\",\"ruleId\":\"shopTmall\"},{\"key\":\"bottom_bar_fav\"},{\"key\":\"bottom_bar_reserve\"}]},\"tmall_supermarket\":{\"children\":[{\"key\":\"bottom_bar_icon\",\"ruleId\":\"shopSMTmall\"},{\"key\":\"bottom_bar_fav\"},{\"key\":\"sys_button\",\"ruleId\":\"cartSM\"}]},\"tmall_supermarketLF\":{\"children\":[{\"key\":\"bottom_bar_icon\",\"ruleId\":\"shopSMTmall\"},{\"key\":\"bottom_bar_fav\"},{\"key\":\"sys_button\",\"ruleId\":\"cart\"},{\"key\":\"sys_button\",\"ruleId\":\"buy\"}]},\"tmall_supermarketPresale\":{\"children\":[{\"key\":\"bottom_bar_icon\",\"ruleId\":\"shopSMTmall\"},{\"key\":\"bottom_bar_fav\"},{\"key\":\"bottom_bar_presale\"}]},\"tmall_waitForStart\":{\"children\":[{\"key\":\"bottom_bar_icon\",\"ruleId\":\"wangwangTmall\"},{\"key\":\"bottom_bar_icon\",\"ruleId\":\"shopTmall\"},{\"key\":\"bottom_bar_fav\"},{\"key\":\"bottom_bar_timing_shelves\"}]},\"tmall_waitForStartSM\":{\"children\":[{\"key\":\"bottom_bar_icon\",\"ruleId\":\"shopSMTmall\"},{\"key\":\"bottom_bar_fav\"},{\"key\":\"bottom_bar_timing_shelves\"}]},\"waitForStart\":{\"children\":[{\"key\":\"bottom_bar_icon\",\"ruleId\":\"wangwang\"},{\"key\":\"bottom_bar_icon\",\"ruleId\":\"shop\"},{\"key\":\"bottom_bar_fav\"},{\"key\":\"bottom_bar_timing_shelves\"}]},\"waitForStartSM\":{\"children\":[{\"key\":\"bottom_bar_icon\",\"ruleId\":\"shopSM\"},{\"key\":\"bottom_bar_fav\"},{\"key\":\"bottom_bar_timing_shelves\"}]}},\"bottom_bar_fav\":{\"default\":{\"model\":{\"drawLine\":\"true\",\"widthRatio\":\"0.1375\"}},\"fav\":{\"model\":{\"drawLine\":\"false\",\"widthRatio\":\"0.1375\"}}},\"bottom_bar_hotspot\":{\"default\":{\"model\":{\"widthRatio\":\"0.5875\"}},\"jhs_default\":{\"model\":{\"widthRatio\":\"1.0\"}}},\"bottom_bar_icon\":{\"shop\":{\"actions\":[\"utOpenPageShopBar\",\"openPageShop\"],\"model\":{\"accessHint\":\"进入店铺\",\"disabled\":\"false\",\"drawLine\":\"true\",\"icon\":\"삊\",\"iconHl\":\"삋\",\"text\":\"店铺\",\"widthRatio\":\"0.1375\"},\"style\":\"shop\"},\"shopLadyGoTmall\":{\"actions\":[\"utOpenPageShopBar\",\"openPageLadyGoShop\"],\"model\":{\"accessHint\":\"进入店铺\",\"disabled\":\"false\",\"drawLine\":\"true\",\"icon\":\"\",\"iconHl\":\"\",\"text\":\"店铺\",\"widthRatio\":\"0.1375\"},\"style\":\"shop\"},\"shopSM\":{\"actions\":[\"utOpenPageShopBar\",\"openPageShopSM\"],\"model\":{\"accessHint\":\"进入猫超店铺\",\"drawLine\":\"true\",\"icon\":\"삊\",\"iconHl\":\"삋\",\"text\":\"进入天猫超市\",\"widthRatio\":\"0.275\"},\"style\":\"shopSM\"},\"shopSMTmall\":{\"actions\":[\"utOpenPageShopBar\",\"openPageShopSM\"],\"model\":{\"accessHint\":\"进入猫超店铺\",\"drawLine\":\"true\",\"icon\":\"\",\"iconHl\":\"\",\"text\":\"进入天猫超市\",\"widthRatio\":\"0.275\"},\"style\":\"shopSM\"},\"shopTmall\":{\"actions\":[\"utOpenPageShopBar\",\"openPageShop\"],\"model\":{\"accessHint\":\"进入店铺\",\"disabled\":\"false\",\"drawLine\":\"true\",\"icon\":\"\",\"iconHl\":\"\",\"text\":\"店铺\",\"widthRatio\":\"0.1375\"},\"style\":\"shop\"},\"wangwang\":{\"actions\":[\"utOpenPageWangwang\",\"openPageWangwang\"],\"model\":{\"accessHint\":\"联系客服\",\"disabled\":\"${feature.hideWangwang}\",\"drawLine\":\"false\",\"icon\":\"쁪\",\"iconHl\":\"쁫\",\"text\":\"客服\",\"widthRatio\":\"0.1375\"},\"style\":\"ww\"},\"wangwangLadyGoTmall\":{\"actions\":[\"utOpenPageWangwang\",\"openPageWangwangRobot\"],\"model\":{\"accessHint\":\"双击联系客服\",\"disabled\":\"${feature.hideWangwang}\",\"drawLine\":\"false\",\"icon\":\"\",\"iconHl\":\"\",\"text\":\"客服\",\"widthRatio\":\"0.1375\"},\"style\":\"ww\"},\"wangwangTmall\":{\"actions\":[\"utOpenPageWangwang\",\"openPageWangwang\"],\"model\":{\"accessHint\":\"双击联系客服\",\"disabled\":\"${feature.hideWangwang}\",\"drawLine\":\"false\",\"icon\":\"\",\"iconHl\":\"\",\"text\":\"客服\",\"widthRatio\":\"0.1375\"},\"style\":\"ww\"}},\"bottom_bar_presale\":{\"default\":{\"model\":{\"widthRatio\":\"0.5875\"}},\"jhs_default\":{\"model\":{\"widthRatio\":\"0.66\"}}},\"bottom_bar_remind\":{\"default\":{\"actions\":[\"addJhsRemind\"],\"children\":[{\"key\":\"bottom_bar\"}],\"model\":{\"disabled\":\"${vertical.jhs.juCollection}\",\"itemId\":\"${item.itemId}\",\"supplement\":\"已设置提醒\",\"title\":\"开团提醒\",\"verticalBiz\":\"${vertical.jhs.verticalBiz}\",\"widthRatio\":\"0.29375\"}},\"tmall_ladyGo\":{\"actions\":[\"addLadyGoRemind\"],\"model\":{\"disabled\":\"false\",\"itemId\":\"${item.itemId}\",\"supplement\":\"已设置提醒\",\"title\":\"开团提醒\",\"verticalBiz\":\"${vertical.jhs.verticalBiz}\",\"widthRatio\":\"0.29375\"}}},\"bottom_bar_reserve\":{\"default\":{\"model\":{\"widthRatio\":\"0.5875\"},\"style\":\"reserve\"}},\"bottom_bar_seckill\":{\"default\":{\"model\":{\"widthRatio\":\"1.0\"}}},\"bottom_bar_sm_cart\":{\"default\":{\"actions\":[\"openPageSMCart\",\"utOpenPageSMCart\"],\"model\":{\"drawLine\":\"true\",\"widthRatio\":\"0.275\"}},\"jhs_default\":{\"actions\":[\"openPageSMCart\",\"utOpenPageSMCart\"],\"model\":{\"drawLine\":\"true\",\"widthRatio\":\"0.4125\"}}},\"bottom_bar_timing_shelves\":{\"default\":{\"model\":{\"widthRatio\":\"0.5875\"}}},\"button_container\":{\"jhs_shopBottom\":{\"children\":[{\"key\":\"sys_button\",\"ruleId\":\"jhs_shopRecommend\"}]},\"rateBottom\":{\"children\":[{\"key\":\"sys_button\",\"ruleId\":\"gotoRate\"}],\"filter\":\"${empty rate.rateList} AND ${empty rate.keywords}\"},\"shopBottom\":{\"children\":[{\"key\":\"sys_button\",\"ruleId\":\"gotoShopCategory\"},{\"key\":\"sys_button\",\"ruleId\":\"gotoShop\"}]}},\"combo\":{\"default\":{\"filter\":\"${empty weappData.wapComboId01}\",\"model\":{\"comboKey\":\"wapComboId01\"}}},\"ct_sys_button\":{\"ct_buySM_LF\":{\"actions\":[\"utBuyNow\",\"buyNow\"],\"model\":{\"defaultTitle\":\"立即购买\",\"enabled\":\"${trade.buyEnable}\",\"title\":\"${trade.buyText}\",\"widthRatio\":\"0.5\"},\"style\":\"buy\"},\"ct_buySM_presale\":{\"actions\":[\"utBuyNow\",\"buyNow\"],\"model\":{\"defaultTitle\":\"立即购买\",\"enabled\":\"${trade.buyEnable}\",\"title\":\"${trade.buyText}\",\"widthRatio\":\"0.5\"},\"style\":\"buy\"},\"ct_cartSM_LF\":{\"actions\":[\"utAddToCart\",\"addToCart\"],\"model\":{\"defaultTitle\":\"加入购物车\",\"enabled\":\"${trade.cartEnable}\",\"title\":\"${trade.cartText}\",\"widthRatio\":\"0.5\"},\"style\":\"cart\"},\"ct_cartSM_presale\":{\"actions\":[\"utAddToCart\",\"addToCart\"],\"model\":{\"defaultTitle\":\"加入购物车\",\"enabled\":\"${trade.cartEnable}\",\"title\":\"${trade.cartText}\",\"widthRatio\":\"0.5\"},\"style\":\"cart\"}},\"division\":{\"cainiao\":{\"filter\":\"${empty delivery.extras.PostTime}\",\"model\":{\"topLine\":\"double\",\"type\":\"blank\"}},\"default\":{\"model\":{\"topLine\":\"double\",\"type\":\"blank\"}},\"hotActivitySM\":{\"model\":{\"title\":\"热门活动\",\"topLine\":\"double\",\"type\":\"text\"},\"style\":\"text\"},\"openProductDetail\":{\"actions\":[\"utOpenBottomProductDetail\",\"openBottomProductDetail\"],\"model\":{\"accessHint\":\"查看图文详情\",\"title\":\"继续拖动，查看图文详情\",\"topLine\":\"double\",\"type\":\"text\"},\"style\":\"text\"},\"productDetailDefault\":{},\"productDetailEnd\":{\"style\":\"text\"},\"singleCenter\":{\"model\":{\"topLine\":\"center\",\"type\":\"line\"}},\"singleCenterTheme\":{\"model\":{\"topLine\":\"center\",\"type\":\"line\"},\"style\":\"theme\"},\"singleCenterWhiteBg\":{\"model\":{\"topLine\":\"center\",\"type\":\"line\"},\"style\":\"whiteBg\"},\"singleLine\":{\"model\":{\"topLine\":\"full\",\"type\":\"line\"},\"style\":\"tip\"},\"tipDivision\":{\"model\":{\"type\":\"blank\"},\"style\":\"tip\"},\"verticalDivision\":{\"model\":{\"height\":6,\"topLine\":\"vertical\",\"type\":\"blank\"},\"style\":\"tip\"}},\"entrance\":{\"bigPromotion\":{\"actions\":[\"openBigPromotionLink\"],\"filter\":\"${empty resource.bigPromotion} OR (${empty resource.bigPromotion.picUrl} AND ${empty resource.bigPromotion.memo})\",\"model\":{\"attributedTitle\":\"${resource.bigPromotion.memo}\",\"bgUrl\":\"${resource.bigPromotion.bgPicUrl}\",\"logo\":\"${resource.bigPromotion.picUrl}\"},\"style\":\"promotion\"},\"brandinfo\":{\"filter\":\"${empty consumerProtection.channel.logo} AND ${empty consumerProtection.channel.title}\",\"model\":{\"logo\":\"${consumerProtection.channel.logo}\",\"title\":\"${consumerProtection.channel.title}\"},\"style\":\"brandinfo\"},\"cainiaoNormal\":{\"filter\":\"${empty delivery.extras.PostTime} OR ((not ${empty delivery.extras.PostTime}) AND (not ${empty delivery.extras.PostTime.link}))\\n\",\"model\":{\"logo\":\"${delivery.extras.PostTime.icon}\",\"title\":\"${delivery.extras.PostTime.text}\"},\"style\":\"cainiao\"},\"cainiaoSpecial\":{\"actions\":[\"openCainiaoLink\"],\"filter\":\"${empty delivery.extras.PostTime.link}\",\"model\":{\"icon\":\"큚\",\"logo\":\"${delivery.extras.PostTime.icon}\",\"title\":\"${delivery.extras.PostTime.text}\"},\"style\":\"cainiao\"},\"cainiaoSpecialTmall\":{\"actions\":[\"openCainiaoLink\"],\"filter\":\"${empty delivery.extras.PostTime.link}\",\"model\":{\"icon\":\"\",\"logo\":\"${delivery.extras.PostTime.icon}\",\"title\":\"${delivery.extras.PostTime.text}\"},\"style\":\"cainiao\"},\"double11Coupon\":{\"actions\":[\"openPagePlatformCoupon\"],\"filter\":\"${empty resource.entrances.coupon}\",\"model\":{\"icon\":\"큚\",\"logo\":\"${resource.entrances.coupon.icon}\",\"subTitle\":\"${resource.entrances.coupon.linkText}\",\"title\":\"${resource.entrances.coupon.text}\"},\"style\":\"double11Coupon\"},\"double11CouponTmall\":{\"actions\":[\"openDouble11Coupon\"],\"filter\":\"${empty resource.entrances.double11Coupon}\",\"model\":{\"icon\":\"\",\"logo\":\"${resource.entrances.double11Coupon.icon}\",\"subTitle\":\"去抢券\",\"title\":\"${resource.entrances.double11Coupon.text}\"},\"style\":\"double11Coupon\"},\"dummyCainiaoTmall\":{\"filter\":\"(${empty delivery.extras.PostTime} OR ((not ${empty delivery.extras.PostTime}) AND (not ${empty delivery.extras.PostTime.link}))) AND ${empty delivery.extras.PostTime.link}\",\"model\":{\"logoType\":\"3\"},\"style\":\"dummy\"},\"dummyTmall\":{\"filter\":\"${empty feature.hasCoupon} AND ${empty price.shopProm[0]} AND (${empty item.pointTimes} OR ${empty item.itemPoint}) AND(${empty item.itemPoint} OR ((not ${empty item.itemPoint}) AND (not ${empty item.pointTimes}))) AND ${empty resource.entrances.double11Coupon}\",\"model\":{\"logoType\":\"3\"},\"style\":\"dummy\"},\"fetchCoupon\":{\"actions\":[\"utShowCouponView\",\"showCouponView\"],\"filter\":\"${empty feature.hasCoupon}\",\"model\":{\"icon\":\"큚\",\"logo\":\"券\",\"logoType\":\"1\",\"title\":\"领取优惠券\"},\"style\":\"fetchCoupon\"},\"fetchCouponNewTmall\":{\"actions\":[\"utShowCouponView\",\"showCouponView\"],\"filter\":\"${empty feature.hasCoupon}\",\"model\":{\"icon\":\"\",\"logo\":\"领券\",\"logoType\":\"1\",\"title\":\"点击领取优惠券\"},\"style\":\"shopPromotionTmall\"},\"fetchCouponTmall\":{\"actions\":[\"utShowCouponView\",\"showCouponView\"],\"filter\":\"${empty feature.hasCoupon}\",\"model\":{\"icon\":\"\",\"logo\":\"券\",\"logoType\":\"1\",\"title\":\"领取优惠券 \"},\"style\":\"fetchCoupon\"},\"fullBack\":{\"actions\":[\"utOpenPageFullBack\",\"openPageFullBack\"],\"filter\":\"${empty resource.entrances.fullBackBonus}\",\"model\":{\"icon\":\"큚\",\"logo\":\"${resource.entrances.fullBackBonus.icon}\",\"subTitle\":\"看规则\",\"title\":\"${resource.entrances.fullBackBonus.text}\"},\"style\":\"fetchCoupon\"},\"interSizingChart\":{\"actions\":[\"showInterSizingChart\"],\"filter\":\"${empty vertical.inter.sizeCartUrl}\",\"model\":{\"icon\":\"큚\",\"title\":\"国际尺码对照表\"},\"style\":\"interSizingChart\"},\"interSizingChartTmall\":{\"actions\":[\"showInterSizingChart\"],\"filter\":\"${empty vertical.inter.sizeCartUrl}\",\"model\":{\"icon\":\"\",\"title\":\"国际尺码对照表\"},\"style\":\"interSizingChart\"},\"interTip\":{\"filter\":\"${empty vertical.inter}\",\"model\":{\"logo\":\"${vertical.inter.nationalIcon}\",\"title\":\"${vertical.inter.fromName}\"},\"style\":\"inter\"},\"interTipMxsTmall\":{\"filter\":\"${empty vertical.freshFood} OR ${empty item.subtitle}\",\"model\":{\"logo\":\"${vertical.freshFood.nationalFlag}\",\"title\":\"${item.subtitle}\"},\"style\":\"mxsTitle\"},\"jump_h5_tmall\":{\"actions\":[\"openDetailH5Page4Test\"],\"model\":{\"icon\":\"\",\"subTitle\":\"跳转至H5\",\"title\":\"${item.itemId}\"}},\"productParam\":{\"actions\":[\"openProduct\"],\"filter\":\"${empty propsNode} AND ${empty propsNode.propList}\",\"model\":{\"icon\":\"큚\",\"title\":\"产品参数\"},\"style\":\"productParam\"},\"productParamTmall\":{\"actions\":[\"openProduct\"],\"filter\":\"${empty props.groupProps}\",\"model\":{\"icon\":\"\",\"title\":\"产品参数\"},\"style\":\"interSizingChart\"},\"questionAll\":{\"actions\":[\"utOpenPageAskAll\",\"openPageAskAll\"],\"filter\":\"${empty vertical.askAll.askText}\",\"model\":{\"icon\":\"큚\",\"logo\":\"${vertical.askAll.askIcon}\",\"title\":\"${vertical.askAll.askText}\"},\"style\":\"questionAll\"},\"shopPromotionTmall\":{\"actions\":[\"openSalePromotion\"],\"filter\":\"${empty price.shopProm[0]}\",\"model\":{\"icon\":\"\",\"logo\":\"促销\",\"logoType\":\"1\",\"title\":\"${price.shopProm[0].content[0]}\"},\"style\":\"shopPromotionTmall\"},\"sizingChartTmall\":{\"actions\":[\"showSizingChart\"],\"filter\":\"${empty resource.entrances.sizeCalculator}\",\"model\":{\"icon\":\"\",\"title\":\"尺码助手\"},\"style\":\"interSizingChart\"},\"threeDTmall\":{\"actions\":[\"openThreeD\"],\"filter\":\"${empty resource.entrances.threeD.text}\",\"model\":{\"icon\":\"\",\"title\":\"${resource.entrances.threeD.text}\"},\"style\":\"interSizingChart\"},\"tmallCouponTmall\":{\"actions\":[\"openTmallCoupon\"],\"filter\":\"${empty resource.entrances.tmallCoupon}\",\"model\":{\"icon\":\"\",\"logo\":\"${resource.entrances.tmallCoupon.icon}\",\"subTitle\":\"${resource.entrances.tmallCoupon.linkText}\",\"title\":\"${resource.entrances.tmallCoupon.text}\"},\"style\":\"double11Coupon\"},\"tmallPointTmall\":{\"filter\":\"${empty item.itemPoint} OR ((not ${empty item.itemPoint}) AND (not ${empty item.pointTimes}))\",\"model\":{\"logo\":\"积分\",\"logoType\":\"1\",\"title\":\"购买可得${item.itemPoint}积分\"},\"style\":\"shopPromotionTmall\"},\"tmallPointWithTimeTmall\":{\"filter\":\"${empty item.pointTimes} OR ${empty item.itemPoint}\",\"model\":{\"logo\":\"积分\",\"logoType\":\"1\",\"title\":\"购买可得${item.pointTimes}倍,共${item.itemPoint}积分\"},\"style\":\"shopPromotionTmall\"}},\"h5\":{\"offsale\":{\"model\":{\"url\":\"http://h5.m.taobao.com/detailplugin/offsale.html\",\"urlParams\":{\"isOffShelf\":\"true\",\"isSuperAct\":\"${feature.superActTime}\",\"itemId\":\"${item.itemId}\",\"sellerId\":\"${seller.userId}\"}}}},\"hot_activity_chaoshi\":{\"default\":{\"filter\":\"${empty vertical.supermarket}\"}},\"image_bar\":{\"default\":{\"filter\":\"${empty resource.entrances.double11Banner.icon}\",\"model\":{\"picUrl\":\"${resource.entrances.double11Banner.icon}\"}}},\"jhs_buy_button\":{\"buy\":{\"actions\":[\"utBuyNow\",\"buyNow\"],\"model\":{\"defaultTitle\":\"立即购买\",\"enabled\":\"${trade.buyEnable}\",\"title\":\"${trade.buyText}\",\"widthRatio\":\"0.66\"}},\"supermarketLF\":{\"actions\":[\"utBuyNow\",\"buyNow\"],\"model\":{\"defaultTitle\":\"立即购买\",\"enabled\":\"${trade.buyEnable}\",\"title\":\"${trade.buyText}\",\"widthRatio\":\"0.5\"}}},\"jhs_cart_button\":{\"jhs_cart\":{\"actions\":[\"utAddToCart\",\"addToCart\"],\"model\":{\"defaultTitle\":\"加入购物车\",\"enabled\":\"${extendData.canAddCart}\",\"title\":\"${trade.cartText}\",\"widthRatio\":\"0.34\"}}},\"navi_bar\":{\"ct\":{\"children\":[{\"key\":\"navi_item\",\"ruleId\":\"back\"},{\"key\":\"navi_item\",\"ruleId\":\"center\"},{\"key\":\"navi_item\",\"ruleId\":\"ct_cart\"}]},\"default\":{\"children\":[{\"key\":\"navi_item\",\"ruleId\":\"back\"},{\"key\":\"navi_item\",\"ruleId\":\"center\"},{\"key\":\"navi_item\",\"ruleId\":\"cart\"},{\"key\":\"navi_item\",\"ruleId\":\"more\"}]},\"supermarket\":{\"children\":[{\"key\":\"navi_item\",\"ruleId\":\"back\"},{\"key\":\"navi_item\",\"ruleId\":\"center\"},{\"key\":\"navi_item\",\"ruleId\":\"search\"},{\"key\":\"navi_item\",\"ruleId\":\"more\"}]}},\"navi_item\":{\"back\":{\"actions\":[\"openPagePreview\"],\"model\":{\"accessHint\":\"返回上一页\",\"positionKey\":\"left\",\"title\":\"ꁺ\",\"titleSizeRatio\":\"0.375\"}},\"cart\":{\"actions\":[\"utGotoCart\",\"openPageCart\"],\"model\":{\"accessHint\":\"进入购物车\",\"positionKey\":\"custom\",\"title\":\"ꁊ\",\"titleSizeRatio\":\"0.35\"}},\"center\":{\"model\":{\"positionKey\":\"center\",\"title\":\"\",\"titleSizeRatio\":\"0.375\",\"type\":\"2\"}},\"ct_cart\":{\"actions\":[\"utGotoCart\",\"openPageCart\"],\"model\":{\"positionKey\":\"right\",\"title\":\"ꁊ\",\"titleSizeRatio\":\"0.35\"}},\"more\":{\"actions\":[\"showMenu\"],\"children\":[{\"key\":\"sys_button\",\"ruleId\":\"msgCenter\"},{\"key\":\"sys_button\",\"ruleId\":\"homePage\"},{\"key\":\"sys_button\",\"ruleId\":\"service\"},{\"key\":\"sys_button\",\"ruleId\":\"share\"}],\"model\":{\"accessHint\":\"查看更多菜单\",\"positionKey\":\"right\",\"title\":\"ꁪ\",\"titleSizeRatio\":\"0.375\"}},\"search\":{\"actions\":[\"utOpenPageSearchSM\",\"openPageSearchSM\"],\"model\":{\"accessHint\":\"进入搜索\",\"positionKey\":\"custom\",\"title\":\"끺\",\"titleSizeRatio\":\"0.35\"}}},\"o2o\":{\"default\":{\"filter\":\"${empty weappData.wapO2O01}\"}},\"pic_gallery\":{\"default\":{},\"tmall_small_gallery\":{\"model\":{\"heightRatio\":\"0.33\"}}},\"price\":{},\"price_cnquality\":{},\"price_jhs\":{\"default\":{},\"jhsOnSellTmall\":{\"style\":\"jhsOnSell\"},\"tmall_ladyGoNotStart\":{\"style\":\"ladyGoNotStart\"},\"tmall_ladyGoStarted\":{\"style\":\"ladyGoStarted\"}},\"price_qianggou\":{},\"price_tags\":{},\"rate_header\":{},\"rate_single\":{},\"rate_tags\":{},\"recommend_chaoshi\":{\"default\":{\"filter\":\"${empty vertical.supermarket}\"}},\"rights\":{},\"shop_header\":{\"default\":{\"actions\":[\"utOpenPageShop\",\"openPageShop\"]},\"jhs_default\":{},\"ladyGo_default\":{\"actions\":[\"utOpenPageShopBar\",\"openPageLadyGoShop\"]}},\"shop_info\":{\"default\":{\"children\":[{\"key\":\"shop_info_item\",\"ruleId\":\"allItem\"},{\"key\":\"shop_info_item\",\"ruleId\":\"newItem\"},{\"key\":\"shop_info_item\",\"ruleId\":\"fans\"}]}},\"shop_info_item\":{\"allItem\":{\"actions\":[\"utOpenPageShopAllItem\",\"openPageShopAllItem\"],\"filter\":\"${empty seller.allItemCount}\",\"model\":{\"subTitle\":\"${seller.allItemCount}\",\"title\":\"全部宝贝\",\"transferToShort\":\"true\"}},\"ct_allItem\":{\"model\":{\"subTitle\":\"${seller.allItemCount}\",\"title\":\"全部宝贝\",\"transferToShort\":\"true\"}},\"ct_fans\":{\"model\":{\"subTitle\":\"${seller.fans}\",\"title\":\"关注人数\"}},\"ct_newItem\":{\"filter\":\"${empty seller.newItemCount}\",\"model\":{\"subTitle\":\"${seller.newItemCount}\",\"title\":\"上新宝贝\"}},\"fans\":{\"model\":{\"subTitle\":\"${seller.fans}\",\"title\":\"关注人数\"}},\"newItem\":{\"actions\":[\"utOpenPageShopNewItem\",\"openPageShopNewItem\"],\"filter\":\"${empty seller.newItemCount}\",\"model\":{\"subTitle\":\"${seller.newItemCount}\",\"title\":\"上新宝贝\"}}},\"shop_promotion\":{},\"sku\":{},\"subinfo\":{\"default\":{\"filter\":\"${empty delivery.postage} AND ${empty item.sellCount} AND ${empty delivery.from}\",\"model\":{\"infoList\":[\"${delivery.postage}\",\"月销${deleteIfNull item.sellCount}笔\",\"${delivery.from}\"]}},\"inter\":{\"filter\":\"${empty vertical.inter.tariff.name} AND ${empty vertical.inter.tariff.value} AND ${empty item.sellCount}\",\"model\":{\"infoList\":[\"${vertical.inter.tariff.name} ${vertical.inter.tariff.value}\",\"月销${deleteIfNull item.sellCount}笔\"]}},\"jhs\":{\"filter\":\"${empty delivery.postage} AND ${empty delivery.from}\",\"model\":{\"infoList\":[\"${delivery.postage}\",\"${delivery.from}\"]}},\"supermarket\":{\"filter\":\"${empty delivery.postage} AND ${empty item.sellCount} AND ${empty vertical.supermarket.weight}\",\"model\":{\"infoList\":[\"重量${vertical.supermarket.weight}\",\"${delivery.postage}\",\"月销${deleteIfNull item.sellCount}笔\"]}}},\"sys_button\":{\"buy\":{\"actions\":[\"utBuyNow\",\"buyNow\"],\"model\":{\"defaultTitle\":\"立即购买\",\"enabled\":\"${trade.buyEnable}\",\"title\":\"${trade.buyText}\",\"widthRatio\":\"0.29375\"},\"style\":\"buy\"},\"buyJhs\":{\"actions\":[\"utBuyNow\",\"buyNow\"],\"model\":{\"defaultTitle\":\"立即购买\",\"enabled\":\"${trade.buyEnable}\",\"title\":\"${trade.buyText}\",\"widthRatio\":\"0.29375\"},\"style\":\"buyJhs${vertical.jhs.verticalBiz}\"},\"cart\":{\"actions\":[\"utAddToCart\",\"addToCart\"],\"model\":{\"defaultTitle\":\"加入购物车\",\"enabled\":\"${trade.cartEnable}\",\"title\":\"${trade.cartText}\",\"widthRatio\":\"0.29375\"},\"style\":\"cart\"},\"cartSM\":{\"actions\":[\"utAddToCart\",\"addToCart\"],\"model\":{\"defaultTitle\":\"加入购物车\",\"enabled\":\"${trade.cartEnable}\",\"title\":\"${trade.cartText}\",\"widthRatio\":\"0.5875\"},\"style\":\"cart\"},\"ct_buy\":{\"actions\":[\"utBuyNow\",\"buyNow\"],\"model\":{\"defaultTitle\":\"立即购买\",\"enabled\":\"${trade.buyEnable}\",\"title\":\"${trade.buyText}\",\"widthRatio\":\"0.43125\"},\"style\":\"buy\"},\"ct_cart\":{\"actions\":[\"utAddToCart\",\"addToCart\"],\"model\":{\"defaultTitle\":\"加入购物车\",\"enabled\":\"${trade.cartEnable}\",\"title\":\"${trade.cartText}\",\"widthRatio\":\"0.43125\"},\"style\":\"cart\"},\"ct_cartSM\":{\"actions\":[\"utAddToCart\",\"addToCart\"],\"model\":{\"defaultTitle\":\"加入购物车\",\"enabled\":\"${trade.cartEnable}\",\"title\":\"${trade.cartText}\",\"widthRatio\":\"1\"},\"style\":\"cart\"},\"ct_cartSM_presale\":{\"actions\":[\"utAddToCart\",\"addToCart\"],\"model\":{\"defaultTitle\":\"加入购物车\",\"enabled\":\"${trade.cartEnable}\",\"title\":\"${trade.cartText}\",\"widthRatio\":\"0.5\"},\"style\":\"cart\"},\"gotoRate\":{\"actions\":[\"utOpenPageRate\",\"openPageRate\"],\"model\":{\"enabled\":\"true\",\"title\":\"查看全部评价\"},\"style\":\"rate\"},\"gotoShop\":{\"actions\":[\"utOpenPageShopButton\",\"openPageShop\"],\"model\":{\"enabled\":\"true\",\"title\":\"进店逛逛\"},\"style\":\"shop\"},\"gotoShopCategory\":{\"actions\":[\"utOpenPageShopCategory\",\"openPageShopCategory\"],\"model\":{\"enabled\":\"true\",\"title\":\"查看分类\"},\"style\":\"shop\"},\"homePage\":{\"actions\":[\"utOpenPageHome\",\"openPageHome\"],\"model\":{\"title\":\"ꀚ　首页\"},\"style\":\"menu\"},\"jhs_cart\":{\"actions\":[\"utAddToCart\",\"addToCart\"],\"model\":{\"defaultTitle\":\"加入购物车\",\"enabled\":\"${extendData.canAddCart}\",\"title\":\"${trade.cartText}\",\"widthRatio\":\"0.34\"},\"style\":\"jhs_cart\"},\"jhs_shopRecommend\":{\"actions\":[\"jhsOpenShopRecommend\"],\"filter\":\"${extendData.sellerItemCount} < 2\",\"model\":{\"enabled\":\"true\",\"title\":\"同店推荐\"},\"style\":\"shop\"},\"msgCenter\":{\"actions\":[\"utOpenPageMsgCenter\",\"openPageMsgCenter\"],\"model\":{\"receiveMsg\":\"true\",\"title\":\"ꂊ　消息\"},\"style\":\"menu\"},\"reserve\":{\"model\":{\"widthRatio\":\"0.5875\"},\"style\":\"reserve\"},\"service\":{\"actions\":[\"utOpenPageService\",\"openPageService\"],\"model\":{\"title\":\"떊　帮助\"},\"style\":\"menu\"},\"share\":{\"actions\":[\"utShowShare\",\"showShare\"],\"model\":{\"title\":\"ꄪ　分享\"},\"style\":\"menu\"},\"tmall_ladyGoBuy\":{\"actions\":[\"utBuyNow\",\"buyNow\"],\"model\":{\"defaultTitle\":\"立即购买\",\"enabled\":\"${trade.buyEnable}\",\"title\":\"${trade.buyText}\",\"widthRatio\":\"0.29375\"},\"style\":\"buyJhs0\"}},\"sys_list\":{},\"timelimit_activity_chaoshi\":{\"default\":{\"filter\":\"${empty vertical.supermarket}\"}},\"tip\":{\"delivery\":{\"filter\":\"${empty vertical.inter.delivery}\",\"model\":{\"text\":\"${vertical.inter.delivery}\"}},\"jyj\":{\"filter\":\"${empty vertical.jyj.logoText}\",\"model\":{\"text\":\"${vertical.jyj.logoText}\"},\"style\":\"jyj\"},\"postTime\":{\"filter\":\"${empty delivery.extras.PostTime.text}\",\"model\":{\"text\":\"${delivery.extras.PostTime.text}\"}},\"presale\":{\"filter\":\"${empty vertical.presale.tip}\",\"model\":{\"text\":\"${vertical.presale.tip}\"}},\"priceTip\":{\"filter\":\"${empty price.priceTip}\",\"model\":{\"text\":\"${price.priceTip}\"},\"style\":\"price\"},\"tmallLadyGoTitle\":{\"filter\":\"${empty vertical.ladyGo.brandSupply}\",\"model\":{\"text\":\"${vertical.ladyGo.brandSupply}\"},\"style\":\"ladyGoTitle\"},\"tmallSellPoint\":{\"filter\":\"${empty item.attraction50}\",\"model\":{\"text\":\"${item.attraction50}\"},\"style\":\"sellPoint\"}},\"title\":{\"ct\":{\"model\":{\"isAskAll\":\"false\",\"logo\":\"${item.titleIcon}\",\"title\":\"${item.title}\"}},\"default\":{},\"questionAll\":{\"actions\":[\"utOpenPageAskAll\",\"openPageAskAll\"],\"filter\":\"${empty vertical.askAll.answerText}\",\"model\":{\"isAskAll\":\"true\",\"logo\":\"${vertical.askAll.answerIcon}\",\"title\":\"${vertical.askAll.answerText}\"},\"style\":\"questionAll\"}},\"title_share\":{}}"
  },
  {
    "path": "src/test/resources/json/wangran.json",
    "content": "{\"curMsgs\":0,\"description\":\"amq\",\"ha\":false,\"id\":36,\"machineCount\":4,\"maxCurMsgs\":100,\"maxRedeliveries\":6,\"modified\":1323141659754,\"monitorSpeed\":false,\"name\":\"test\",\"physicalQueueMap\":{50:{\"id\":50,\"inRate\":0,\"machine\":{\"address\":\"10.20.165.59:61616\",\"description\":\"amq性能测试，请勿使用该machine！！！\",\"id\":10,\"ip\":\"10.20.165.59\",\"jmsPassword\":\"napoli\",\"jmsUserName\":\"napoli\",\"jmxPort\":1099,\"modified\":1318559383989,\"name\":\"10.20.165.59A\",\"port\":61616,\"recoverLocked\":false,\"recoverable\":false,\"slaveAddress\":\":61616\",\"slaveIp\":\"\",\"slaveJmxPort\":1099,\"slavePort\":61616,\"state\":1,\"supportHa\":false,\"useSlave\":false},\"modified\":1319617727839,\"outRate\":0,\"queue\":{\"$ref\":\"$\"},\"receivable\":true,\"sendable\":true,\"state\":1,\"weight\":1},52:{\"id\":52,\"inRate\":0,\"machine\":{\"address\":\"10.20.165.59:62616\",\"description\":\"amq性能测试，请勿引用\",\"id\":12,\"ip\":\"10.20.165.59\",\"jmsPassword\":\"napoli\",\"jmsUserName\":\"napoli\",\"jmxPort\":1199,\"modified\":1318559325754,\"name\":\"10.20.165.59B\",\"port\":62616,\"recoverLocked\":false,\"recoverable\":false,\"slaveAddress\":\":61616\",\"slaveIp\":\"\",\"slaveJmxPort\":1099,\"slavePort\":61616,\"state\":1,\"supportHa\":false,\"useSlave\":false},\"modified\":1319617590078,\"outRate\":0,\"queue\":{\"$ref\":\"$\"},\"receivable\":true,\"sendable\":true,\"state\":1,\"weight\":1},54:{\"id\":54,\"inRate\":0,\"machine\":{\"address\":\"10.20.165.59:63616\",\"description\":\"amq性能测试，请勿引用改machine\",\"id\":14,\"ip\":\"10.20.165.59\",\"jmsPassword\":\"napoli\",\"jmsUserName\":\"napoli\",\"jmxPort\":1299,\"modified\":1318559388699,\"name\":\"10.20.165.59C\",\"port\":63616,\"recoverLocked\":false,\"recoverable\":false,\"slaveAddress\":\":61616\",\"slaveIp\":\"\",\"slaveJmxPort\":1099,\"slavePort\":61616,\"state\":1,\"supportHa\":false,\"useSlave\":false},\"modified\":1319617591562,\"outRate\":0,\"queue\":{\"$ref\":\"$\"},\"receivable\":true,\"sendable\":true,\"state\":1,\"weight\":1},816:{\"id\":816,\"inRate\":0,\"machine\":{\"address\":\"10.20.153.62:61616\",\"description\":\"陈海华专用\",\"id\":2,\"ip\":\"10.20.153.62\",\"jmsPassword\":\"napoli\",\"jmsUserName\":\"napoli\",\"jmxPort\":1099,\"modified\":1317369126743,\"name\":\"10.20.153.62\",\"port\":61616,\"recoverLocked\":false,\"recoverable\":false,\"slaveAddress\":\":61616\",\"slaveIp\":\"\",\"slaveJmxPort\":1099,\"slavePort\":61616,\"state\":1,\"supportHa\":false,\"useSlave\":false},\"modified\":1323141659754,\"outRate\":0,\"queue\":{\"$ref\":\"$\"},\"receivable\":true,\"sendable\":true,\"state\":0,\"weight\":1}},\"pqMap\":{\"$ref\":\"$.physicalQueueMap\"},\"receivable\":true,\"routerMaxThreads\":1,\"sendable\":true,\"strategy\":\"round_robin\",\"type\":\"QUEUE\"}\n"
  },
  {
    "path": "src/test/resources/json/yannywang.js",
    "content": "{\n\t\"description\":\"\",\"id\":1336,\"modified\":1318310632121,\"name\":\"NapoliClientTest\",\"queueCount\":3,\"queueLimit\":0,\n\t\"queueMap\":{\n\t\t\t\t\t12109:{\n\t\t\t\t\t\t\t\t\"curMsgs\":0,\"description\":\"\",\"ha\":false,\"id\":12109,\"machineCount\":1,\"maxCurMsgs\":100,\"maxRedeliveries\":6,\n\t\t\t\t\t\t\t\t\"modified\":1317290675999,\"monitorSpeed\":false,\"name\":\"NapoliClientTest_q1\",\n\t\t\t\t\t\t\t\t\"physicalQueueMap\":{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t12125:{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\":12125,\"inRate\":0,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"machine\":{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"address\":\"10.20.144.81:61616\",\"description\":\"\",\"id\":1,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"ip\":\"10.20.144.81\",\"jmsPassword\":\"napoli\",\"jmsUserName\":\"napoli\",\"jmxPort\":1099,\"modified\":1298964982516,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\":\"PT-10.20.144.81-A\",\"port\":61616,\"recoverLocked\":false,\"recoverable\":false,\"slaveAddress\":\":61616\",\"slaveIp\":\"\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"slaveJmxPort\":1099,\"slavePort\":61616,\"state\":1,\"supportHa\":false,\"useSlave\":false\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"modified\":1317290675999,\"outRate\":0,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"queue\":{\"$ref\":\"$.queueMap[12109]\"},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"receivable\":true,\"sendable\":true,\"state\":0,\"weight\":1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"pqMap\":{\"$ref\":\"$.queueMap[12109].physicalQueueMap\"},\n\t\t\t\t\t\t\t\t\"receivable\":true,\"routerMaxThreads\":1,\"sendable\":true,\"strategy\":\"round_robin\",\"type\":\"QUEUE\"\n\t\t\t\t\t\t},\n\t\t\t\t\t12110:{\n\t\t\t\t\t\t\t\t\"curMsgs\":0,\"description\":\"\",\"ha\":false,\"id\":12110,\"machineCount\":1,\"maxCurMsgs\":100,\"maxRedeliveries\":6,\"modified\":1317290689942,\"monitorSpeed\":false,\"name\":\"NapoliClientTest_q2\",\n\t\t\t\t\t\t\t\t\"physicalQueueMap\":{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t12126:{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\":12126,\"inRate\":0,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"machine\":{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"address\":\"10.20.144.81:61616\",\"description\":\"\",\"id\":1,\"ip\":\"10.20.144.81\",\"jmsPassword\":\"napoli\",\"jmsUserName\":\"napoli\",\"jmxPort\":1099,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"modified\":1298964982516,\"name\":\"PT-10.20.144.81-A\",\"port\":61616,\"recoverLocked\":false,\"recoverable\":false,\"slaveAddress\":\":61616\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"slaveIp\":\"\",\"slaveJmxPort\":1099,\"slavePort\":61616,\"state\":1,\"supportHa\":false,\"useSlave\":false\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"modified\":1317290689942,\"outRate\":0,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"queue\":{\"$ref\":\"$.queueMap[12110]\"},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"receivable\":true,\"sendable\":true,\"state\":0,\"weight\":1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"pqMap\":{\"$ref\":\"$.queueMap[12110].physicalQueueMap\"},\n\t\t\t\t\t\t\t\t\"receivable\":true,\"routerMaxThreads\":1,\"sendable\":true,\"strategy\":\"round_robin\",\"type\":\"QUEUE\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t12111:{\n\t\t\t\t\t\t\t\t\"curMsgs\":0,\"description\":\"\",\"ha\":false,\"id\":12111,\"machineCount\":1,\"maxCurMsgs\":100,\"maxRedeliveries\":6,\"modified\":1318310632121,\"monitorSpeed\":false,\"name\":\"NapoliClientTest_q3\",\n\t\t\t\t\t\t\t\t\"physicalQueueMap\":{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t12127:{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\":12127,\"inRate\":0,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"machine\":{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"address\":\"10.20.144.81:61616\",\"description\":\"\",\"id\":1,\"ip\":\"10.20.144.81\",\"jmsPassword\":\"napoli\",\"jmsUserName\":\"napoli\",\"jmxPort\":1099,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"modified\":1298964982516,\"name\":\"PT-10.20.144.81-A\",\"port\":61616,\"recoverLocked\":false,\"recoverable\":false,\"slaveAddress\":\":61616\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"slaveIp\":\"\",\"slaveJmxPort\":1099,\"slavePort\":61616,\"state\":1,\"supportHa\":false,\"useSlave\":false\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"modified\":1318310632121,\"outRate\":0,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"queue\":{\"$ref\":\"$.queueMap[12111]\"},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"receivable\":true,\"sendable\":true,\"state\":0,\"weight\":1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"pqMap\":{\"$ref\":\"$.queueMap[12111].physicalQueueMap\"},\n\t\t\t\t\t\t\t\t\"receivable\":true,\"routerMaxThreads\":1,\"sendable\":true,\"strategy\":\"round_robin\",\"type\":\"QUEUE\"\n\t\t\t\t\t\t}\n\t\t\t\t},\n\t\"type\":\"VIRTUAL_TOPIC\"\n}"
  },
  {
    "path": "src/test/resources/json/yannywang.json",
    "content": "{\"description\":\"\",\"id\":1336,\"modified\":1318310632121,\"name\":\"NapoliClientTest\",\"queueCount\":3,\"queueLimit\":0,\"queueMap\":{12109:{\"curMsgs\":0,\"description\":\"\",\"ha\":false,\"id\":12109,\"machineCount\":1,\"maxCurMsgs\":100,\"maxRedeliveries\":6,\"modified\":1317290675999,\"monitorSpeed\":false,\"name\":\"NapoliClientTest_q1\",\"physicalQueueMap\":{12125:{\"id\":12125,\"inRate\":0,\"machine\":{\"address\":\"10.20.144.81:61616\",\"description\":\"\",\"id\":1,\"ip\":\"10.20.144.81\",\"jmsPassword\":\"napoli\",\"jmsUserName\":\"napoli\",\"jmxPort\":1099,\"modified\":1298964982516,\"name\":\"PT-10.20.144.81-A\",\"port\":61616,\"recoverLocked\":false,\"recoverable\":false,\"slaveAddress\":\":61616\",\"slaveIp\":\"\",\"slaveJmxPort\":1099,\"slavePort\":61616,\"state\":1,\"supportHa\":false,\"useSlave\":false},\"modified\":1317290675999,\"outRate\":0,\"queue\":{\"$ref\":\"$.queueMap[12109]\"},\"receivable\":true,\"sendable\":true,\"state\":0,\"weight\":1}},\"pqMap\":{\"$ref\":\"$.queueMap[12109].physicalQueueMap\"},\"receivable\":true,\"routerMaxThreads\":1,\"sendable\":true,\"strategy\":\"round_robin\",\"type\":\"QUEUE\"},12110:{\"curMsgs\":0,\"description\":\"\",\"ha\":false,\"id\":12110,\"machineCount\":1,\"maxCurMsgs\":100,\"maxRedeliveries\":6,\"modified\":1317290689942,\"monitorSpeed\":false,\"name\":\"NapoliClientTest_q2\",\"physicalQueueMap\":{12126:{\"id\":12126,\"inRate\":0,\"machine\":{\"address\":\"10.20.144.81:61616\",\"description\":\"\",\"id\":1,\"ip\":\"10.20.144.81\",\"jmsPassword\":\"napoli\",\"jmsUserName\":\"napoli\",\"jmxPort\":1099,\"modified\":1298964982516,\"name\":\"PT-10.20.144.81-A\",\"port\":61616,\"recoverLocked\":false,\"recoverable\":false,\"slaveAddress\":\":61616\",\"slaveIp\":\"\",\"slaveJmxPort\":1099,\"slavePort\":61616,\"state\":1,\"supportHa\":false,\"useSlave\":false},\"modified\":1317290689942,\"outRate\":0,\"queue\":{\"$ref\":\"$.queueMap[12110]\"},\"receivable\":true,\"sendable\":true,\"state\":0,\"weight\":1}},\"pqMap\":{\"$ref\":\"$.queueMap[12110].physicalQueueMap\"},\"receivable\":true,\"routerMaxThreads\":1,\"sendable\":true,\"strategy\":\"round_robin\",\"type\":\"QUEUE\"},12111:{\"curMsgs\":0,\"description\":\"\",\"ha\":false,\"id\":12111,\"machineCount\":1,\"maxCurMsgs\":100,\"maxRedeliveries\":6,\"modified\":1318310632121,\"monitorSpeed\":false,\"name\":\"NapoliClientTest_q3\",\"physicalQueueMap\":{12127:{\"id\":12127,\"inRate\":0,\"machine\":{\"address\":\"10.20.144.81:61616\",\"description\":\"\",\"id\":1,\"ip\":\"10.20.144.81\",\"jmsPassword\":\"napoli\",\"jmsUserName\":\"napoli\",\"jmxPort\":1099,\"modified\":1298964982516,\"name\":\"PT-10.20.144.81-A\",\"port\":61616,\"recoverLocked\":false,\"recoverable\":false,\"slaveAddress\":\":61616\",\"slaveIp\":\"\",\"slaveJmxPort\":1099,\"slavePort\":61616,\"state\":1,\"supportHa\":false,\"useSlave\":false},\"modified\":1318310632121,\"outRate\":0,\"queue\":{\"$ref\":\"$.queueMap[12111]\"},\"receivable\":true,\"sendable\":true,\"state\":0,\"weight\":1}},\"pqMap\":{\"$ref\":\"$.queueMap[12111].physicalQueueMap\"},\"receivable\":true,\"routerMaxThreads\":1,\"sendable\":true,\"strategy\":\"round_robin\",\"type\":\"QUEUE\"}},\"type\":\"VIRTUAL_TOPIC\"}"
  },
  {
    "path": "src/test/resources/json.json",
    "content": "[\n    {\n        \"data\": {\n            \"after\": null, \n            \"before\": null, \n            \"children\": [\n                {\n                    \"data\": {\n                        \"author\": \"demo6\", \n                        \"author_id\": 55112, \n                        \"clicked\": false, \n                        \"created_utc\": 1307884044.0, \n                        \"domain\": \"self.fortestonly\", \n                        \"downs\": 0, \n                        \"hidden\": false, \n                        \"id\": \"4rsy\", \n                        \"is_self\": true, \n                        \"latest_comments\": [], \n                        \"levenshtein\": null, \n                        \"likes\": null, \n                        \"media\": null, \n                        \"media_embed\": {}, \n                        \"name\": \"t6_4rsy\", \n                        \"num_comments\": 18, \n                        \"num_readers\": 1, \n                        \"over_18\": false, \n                        \"permalink\": \"/r/fortestonly/comments/4rsy/\\u6765\\u4e2a\\u6df1\\u5c42\\u6b21\\u76841/\", \n                        \"saved\": false, \n                        \"score\": 1, \n                        \"selftext\": \"\\u6765\\u4e2a\\u6df1\\u5c42\\u6b21\\u76841\", \n                        \"subreddit\": \"fortestonly\", \n                        \"subreddit_id\": \"t5_f\", \n                        \"thumbnail\": \"\", \n                        \"title\": \"\\u6765\\u4e2a\\u6df1\\u5c42\\u6b21\\u76841\", \n                        \"ups\": 1, \n                    }, \n                    \"kind\": \"t6\"\n                }\n            ], \n            \"modhash\": \"\"\n        }, \n        \"kind\": \"Listing\"\n    }, \n    {\n        \"data\": {\n            \"after\": null, \n            \"before\": null, \n            \"children\": [\n                {\n                    \"data\": {\n                        \"author\": \"demo6\", \n                        \"author_id\": 55112, \n                        \"body\": \"\\u6765\\u4e2a\\u6df1\\u5c42\\u6b21\\u76841\", \n                        \"created_utc\": 1307884064.0, \n                        \"downs\": 0, \n                        \"id\": \"lqci\", \n                        \"is_spam\": false, \n                        \"levenshtein\": null, \n                        \"likes\": null, \n                        \"link_id\": \"t6_4rsy\", \n                        \"name\": \"t1_lqci\", \n                        \"parent_id\": \"t6_4rsy\", \n                        \"replies\": {\n                            \"data\": {\n                                \"after\": null, \n                                \"before\": null, \n                                \"children\": [\n                                    {\n                                        \"data\": {\n                                            \"author\": \"demo6\", \n                                            \"author_id\": 55112, \n                                            \"body\": \"\\u6765\\u4e2a\\u6df1\\u5c42\\u6b21\\u76842\", \n                                            \"created_utc\": 1307884077.0, \n                                            \"downs\": 0, \n                                            \"id\": \"lqcs\", \n                                            \"is_spam\": false, \n                                            \"levenshtein\": null, \n                                            \"likes\": null, \n                                            \"link_id\": \"t6_4rsy\", \n                                            \"name\": \"t1_lqcs\", \n                                            \"parent_id\": \"t1_lqci\", \n                                            \"replies\": {\n                                                \"data\": {\n                                                    \"after\": null, \n                                                    \"before\": null, \n                                                    \"children\": [\n                                                        {\n                                                            \"data\": {\n                                                                \"author\": \"demo6\", \n                                                                \"author_id\": 55112, \n                                                                \"body\": \"\\u6765\\u4e2a\\u6df1\\u5c42\\u6b21\\u76843\", \n                                                                \"created_utc\": 1307884084.0, \n                                                                \"downs\": 0, \n                                                                \"id\": \"lqcu\", \n                                                                \"is_spam\": false, \n                                                                \"levenshtein\": null, \n                                                                \"likes\": null, \n                                                                \"link_id\": \"t6_4rsy\", \n                                                                \"name\": \"t1_lqcu\", \n                                                                \"parent_id\": \"t1_lqcs\", \n                                                                \"replies\": {\n                                                                    \"data\": {\n                                                                        \"after\": null, \n                                                                        \"before\": null, \n                                                                        \"children\": [\n                                                                            {\n                                                                                \"data\": {\n                                                                                    \"author\": \"demo6\", \n                                                                                    \"author_id\": 55112, \n                                                                                    \"body\": \"\\u6765\\u4e2a\\u6df1\\u5c42\\u6b21\\u76844\", \n                                                                                    \"created_utc\": 1307884096.0, \n                                                                                    \"downs\": 0, \n                                                                                    \"id\": \"lqd0\", \n                                                                                    \"is_spam\": false, \n                                                                                    \"levenshtein\": null, \n                                                                                    \"likes\": null, \n                                                                                    \"link_id\": \"t6_4rsy\", \n                                                                                    \"name\": \"t1_lqd0\", \n                                                                                    \"parent_id\": \"t1_lqcu\", \n                                                                                    \"replies\": {\n                                                                                        \"data\": {\n                                                                                            \"after\": null, \n                                                                                            \"before\": null, \n                                                                                            \"children\": [\n                                                                                                {\n                                                                                                    \"data\": {\n                                                                                                        \"author\": \"demo6\", \n                                                                                                        \"author_id\": 55112, \n                                                                                                        \"body\": \"\\u6765\\u4e2a\\u6df1\\u5c42\\u6b21\\u76845\", \n                                                                                                        \"created_utc\": 1307884105.0, \n                                                                                                        \"downs\": 0, \n                                                                                                        \"id\": \"lqd8\", \n                                                                                                        \"is_spam\": false, \n                                                                                                        \"levenshtein\": null, \n                                                                                                        \"likes\": null, \n                                                                                                        \"link_id\": \"t6_4rsy\", \n                                                                                                        \"name\": \"t1_lqd8\", \n                                                                                                        \"parent_id\": \"t1_lqd0\", \n                                                                                                        \"replies\": {\n                                                                                                            \"data\": {\n                                                                                                                \"after\": null, \n                                                                                                                \"before\": null, \n                                                                                                                \"children\": [\n                                                                                                                    {\n                                                                                                                        \"data\": {\n                                                                                                                            \"author\": \"demo6\", \n                                                                                                                            \"author_id\": 55112, \n                                                                                                                            \"body\": \"\\u6765\\u4e2a\\u6df1\\u5c42\\u6b21\\u76846\", \n                                                                                                                            \"created_utc\": 1307884121.0, \n                                                                                                                            \"downs\": 0, \n                                                                                                                            \"id\": \"lqdc\", \n                                                                                                                            \"is_spam\": false, \n                                                                                                                            \"levenshtein\": null, \n                                                                                                                            \"likes\": null, \n                                                                                                                            \"link_id\": \"t6_4rsy\", \n                                                                                                                            \"name\": \"t1_lqdc\", \n                                                                                                                            \"parent_id\": \"t1_lqd8\", \n                                                                                                                            \"replies\": {\n                                                                                                                                \"data\": {\n                                                                                                                                    \"after\": null, \n                                                                                                                                    \"before\": null, \n                                                                                                                                    \"children\": [\n                                                                                                                                        {\n                                                                                                                                            \"data\": {\n                                                                                                                                                \"author\": \"demo6\", \n                                                                                                                                                \"author_id\": 55112, \n                                                                                                                                                \"body\": \"\\u6765\\u4e2a\\u6df1\\u5c42\\u6b21\\u76847\", \n                                                                                                                                                \"created_utc\": 1307884130.0, \n                                                                                                                                                \"downs\": 0, \n                                                                                                                                                \"id\": \"lqdg\", \n                                                                                                                                                \"is_spam\": false, \n                                                                                                                                                \"levenshtein\": null, \n                                                                                                                                                \"likes\": null, \n                                                                                                                                                \"link_id\": \"t6_4rsy\", \n                                                                                                                                                \"name\": \"t1_lqdg\", \n                                                                                                                                                \"parent_id\": \"t1_lqdc\", \n                                                                                                                                                \"replies\": {\n                                                                                                                                                    \"data\": {\n                                                                                                                                                        \"after\": null, \n                                                                                                                                                        \"before\": null, \n                                                                                                                                                        \"children\": [\n                                                                                                                                                            {\n                                                                                                                                                                \"data\": {\n                                                                                                                                                                    \"author\": \"demo6\", \n                                                                                                                                                                    \"author_id\": 55112, \n                                                                                                                                                                    \"body\": \"\\u6765\\u4e2a\\u6df1\\u5c42\\u6b21\\u76848\", \n                                                                                                                                                                    \"created_utc\": 1307884139.0, \n                                                                                                                                                                    \"downs\": 0, \n                                                                                                                                                                    \"id\": \"lqdi\", \n                                                                                                                                                                    \"is_spam\": false, \n                                                                                                                                                                    \"levenshtein\": null, \n                                                                                                                                                                    \"likes\": null, \n                                                                                                                                                                    \"link_id\": \"t6_4rsy\", \n                                                                                                                                                                    \"name\": \"t1_lqdi\", \n                                                                                                                                                                    \"parent_id\": \"t1_lqdg\", \n                                                                                                                                                                    \"replies\": {\n                                                                                                                                                                        \"data\": {\n                                                                                                                                                                            \"after\": null, \n                                                                                                                                                                            \"before\": null, \n                                                                                                                                                                            \"children\": [\n                                                                                                                                                                                {\n                                                                                                                                                                                    \"data\": {\n                                                                                                                                                                                        \"author\": \"demo6\", \n                                                                                                                                                                                        \"author_id\": 55112, \n                                                                                                                                                                                        \"body\": \"\\u6765\\u4e2a\\u6df1\\u5c42\\u6b21\\u76849\", \n                                                                                                                                                                                        \"created_utc\": 1307884147.0, \n                                                                                                                                                                                        \"downs\": 0, \n                                                                                                                                                                                        \"id\": \"lqdm\", \n                                                                                                                                                                                        \"is_spam\": false, \n                                                                                                                                                                                        \"levenshtein\": null, \n                                                                                                                                                                                        \"likes\": null, \n                                                                                                                                                                                        \"link_id\": \"t6_4rsy\", \n                                                                                                                                                                                        \"name\": \"t1_lqdm\", \n                                                                                                                                                                                        \"parent_id\": \"t1_lqdi\", \n                                                                                                                                                                                        \"replies\": {\n                                                                                                                                                                                            \"data\": {\n                                                                                                                                                                                                \"after\": null, \n                                                                                                                                                                                                \"before\": null, \n                                                                                                                                                                                                \"children\": [\n                                                                                                                                                                                                    {\n                                                                                                                                                                                                        \"data\": {\n                                                                                                                                                                                                            \"author\": \"demo6\", \n                                                                                                                                                                                                            \"author_id\": 55112, \n                                                                                                                                                                                                            \"body\": \"\\u6765\\u4e2a\\u6df1\\u5c42\\u6b21\\u768410\", \n                                                                                                                                                                                                            \"created_utc\": 1307884154.0, \n                                                                                                                                                                                                            \"downs\": 0, \n                                                                                                                                                                                                            \"id\": \"lqds\", \n                                                                                                                                                                                                            \"is_spam\": false, \n                                                                                                                                                                                                            \"levenshtein\": null, \n                                                                                                                                                                                                            \"likes\": null, \n                                                                                                                                                                                                            \"link_id\": \"t6_4rsy\", \n                                                                                                                                                                                                            \"name\": \"t1_lqds\", \n                                                                                                                                                                                                            \"parent_id\": \"t1_lqdm\", \n                                                                                                                                                                                                            \"replies\": {\n                                                                                                                                                                                                                \"data\": {\n                                                                                                                                                                                                                    \"after\": null, \n                                                                                                                                                                                                                    \"before\": null, \n                                                                                                                                                                                                                    \"children\": [\n                                                                                                                                                                                                                        {\n                                                                                                                                                                                                                            \"data\": {\n                                                                                                                                                                                                                                \"author\": \"demo6\", \n                                                                                                                                                                                                                                \"author_id\": 55112, \n                                                                                                                                                                                                                                \"body\": \"\\u6765\\u4e2a\\u6df1\\u5c42\\u6b21\\u768411\", \n                                                                                                                                                                                                                                \"created_utc\": 1307884161.0, \n                                                                                                                                                                                                                                \"downs\": 0, \n                                                                                                                                                                                                                                \"id\": \"lqdw\", \n                                                                                                                                                                                                                                \"is_spam\": false, \n                                                                                                                                                                                                                                \"levenshtein\": null, \n                                                                                                                                                                                                                                \"likes\": null, \n                                                                                                                                                                                                                                \"link_id\": \"t6_4rsy\", \n                                                                                                                                                                                                                                \"name\": \"t1_lqdw\", \n                                                                                                                                                                                                                                \"parent_id\": \"t1_lqds\", \n                                                                                                                                                                                                                                \"replies\": {\n                                                                                                                                                                                                                                    \"data\": {\n                                                                                                                                                                                                                                        \"after\": null, \n                                                                                                                                                                                                                                        \"before\": null, \n                                                                                                                                                                                                                                        \"children\": [\n                                                                                                                                                                                                                                            {\n                                                                                                                                                                                                                                                \"data\": {\n                                                                                                                                                                                                                                                    \"author\": \"demo6\", \n                                                                                                                                                                                                                                                    \"author_id\": 55112, \n                                                                                                                                                                                                                                                    \"body\": \"\\u6765\\u4e2a\\u6df1\\u5c42\\u6b21\\u768412\", \n                                                                                                                                                                                                                                                    \"created_utc\": 1307884169.0, \n                                                                                                                                                                                                                                                    \"downs\": 0, \n                                                                                                                                                                                                                                                    \"id\": \"lqe2\", \n                                                                                                                                                                                                                                                    \"is_spam\": false, \n                                                                                                                                                                                                                                                    \"levenshtein\": null, \n                                                                                                                                                                                                                                                    \"likes\": null, \n                                                                                                                                                                                                                                                    \"link_id\": \"t6_4rsy\", \n                                                                                                                                                                                                                                                    \"name\": \"t1_lqe2\", \n                                                                                                                                                                                                                                                    \"parent_id\": \"t1_lqdw\", \n                                                                                                                                                                                                                                                    \"replies\": {\n                                                                                                                                                                                                                                                        \"data\": {\n                                                                                                                                                                                                                                                            \"after\": null, \n                                                                                                                                                                                                                                                            \"before\": null, \n                                                                                                                                                                                                                                                            \"children\": [\n                                                                                                                                                                                                                                                                {\n                                                                                                                                                                                                                                                                    \"data\": {\n                                                                                                                                                                                                                                                                        \"author\": \"demo6\", \n                                                                                                                                                                                                                                                                        \"author_id\": 55112, \n                                                                                                                                                                                                                                                                        \"body\": \"\\u6765\\u4e2a\\u6df1\\u5c42\\u6b21\\u768413\", \n                                                                                                                                                                                                                                                                        \"created_utc\": 1307884180.0, \n                                                                                                                                                                                                                                                                        \"downs\": 0, \n                                                                                                                                                                                                                                                                        \"id\": \"lqe8\", \n                                                                                                                                                                                                                                                                        \"is_spam\": false, \n                                                                                                                                                                                                                                                                        \"levenshtein\": null, \n                                                                                                                                                                                                                                                                        \"likes\": null, \n                                                                                                                                                                                                                                                                        \"link_id\": \"t6_4rsy\", \n                                                                                                                                                                                                                                                                        \"name\": \"t1_lqe8\", \n                                                                                                                                                                                                                                                                        \"parent_id\": \"t1_lqe2\", \n                                                                                                                                                                                                                                                                        \"replies\": {\n                                                                                                                                                                                                                                                                            \"data\": {\n                                                                                                                                                                                                                                                                                \"after\": null, \n                                                                                                                                                                                                                                                                                \"before\": null, \n                                                                                                                                                                                                                                                                                \"children\": [\n                                                                                                                                                                                                                                                                                    {\n                                                                                                                                                                                                                                                                                        \"data\": {\n                                                                                                                                                                                                                                                                                            \"author\": \"demo6\", \n                                                                                                                                                                                                                                                                                            \"author_id\": 55112, \n                                                                                                                                                                                                                                                                                            \"body\": \"\\u6765\\u4e2a\\u6df1\\u5c42\\u6b21\\u768414\", \n                                                                                                                                                                                                                                                                                            \"created_utc\": 1307884187.0, \n                                                                                                                                                                                                                                                                                            \"downs\": 0, \n                                                                                                                                                                                                                                                                                            \"id\": \"lqee\", \n                                                                                                                                                                                                                                                                                            \"is_spam\": false, \n                                                                                                                                                                                                                                                                                            \"levenshtein\": null, \n                                                                                                                                                                                                                                                                                            \"likes\": null, \n                                                                                                                                                                                                                                                                                            \"link_id\": \"t6_4rsy\", \n                                                                                                                                                                                                                                                                                            \"name\": \"t1_lqee\", \n                                                                                                                                                                                                                                                                                            \"parent_id\": \"t1_lqe8\", \n                                                                                                                                                                                                                                                                                            \"replies\": {\n                                                                                                                                                                                                                                                                                                \"data\": {\n                                                                                                                                                                                                                                                                                                    \"after\": null, \n                                                                                                                                                                                                                                                                                                    \"before\": null, \n                                                                                                                                                                                                                                                                                                    \"children\": [\n                                                                                                                                                                                                                                                                                                        {\n                                                                                                                                                                                                                                                                                                            \"data\": {\n                                                                                                                                                                                                                                                                                                                \"author\": \"demo6\", \n                                                                                                                                                                                                                                                                                                                \"author_id\": 55112, \n                                                                                                                                                                                                                                                                                                                \"body\": \"\\u6765\\u4e2a\\u6df1\\u5c42\\u6b21\\u768415\", \n                                                                                                                                                                                                                                                                                                                \"created_utc\": 1307884195.0, \n                                                                                                                                                                                                                                                                                                                \"downs\": 0, \n                                                                                                                                                                                                                                                                                                                \"id\": \"lqei\", \n                                                                                                                                                                                                                                                                                                                \"is_spam\": false, \n                                                                                                                                                                                                                                                                                                                \"levenshtein\": null, \n                                                                                                                                                                                                                                                                                                                \"likes\": null, \n                                                                                                                                                                                                                                                                                                                \"link_id\": \"t6_4rsy\", \n                                                                                                                                                                                                                                                                                                                \"name\": \"t1_lqei\", \n                                                                                                                                                                                                                                                                                                                \"parent_id\": \"t1_lqee\", \n                                                                                                                                                                                                                                                                                                                \"replies\": {\n                                                                                                                                                                                                                                                                                                                    \"data\": {\n                                                                                                                                                                                                                                                                                                                        \"after\": null, \n                                                                                                                                                                                                                                                                                                                        \"before\": null, \n                                                                                                                                                                                                                                                                                                                        \"children\": [\n                                                                                                                                                                                                                                                                                                                            {\n                                                                                                                                                                                                                                                                                                                                \"data\": {\n                                                                                                                                                                                                                                                                                                                                    \"author\": \"demo6\", \n                                                                                                                                                                                                                                                                                                                                    \"author_id\": 55112, \n                                                                                                                                                                                                                                                                                                                                    \"body\": \"\\u6765\\u4e2a\\u6df1\\u5c42\\u6b21\\u768416\", \n                                                                                                                                                                                                                                                                                                                                    \"created_utc\": 1307884206.0, \n                                                                                                                                                                                                                                                                                                                                    \"downs\": 0, \n                                                                                                                                                                                                                                                                                                                                    \"id\": \"lqeq\", \n                                                                                                                                                                                                                                                                                                                                    \"is_spam\": false, \n                                                                                                                                                                                                                                                                                                                                    \"levenshtein\": null, \n                                                                                                                                                                                                                                                                                                                                    \"likes\": null, \n                                                                                                                                                                                                                                                                                                                                    \"link_id\": \"t6_4rsy\", \n                                                                                                                                                                                                                                                                                                                                    \"name\": \"t1_lqeq\", \n                                                                                                                                                                                                                                                                                                                                    \"parent_id\": \"t1_lqei\", \n                                                                                                                                                                                                                                                                                                                                    \"replies\": {\n                                                                                                                                                                                                                                                                                                                                        \"data\": {\n                                                                                                                                                                                                                                                                                                                                            \"after\": null, \n                                                                                                                                                                                                                                                                                                                                            \"before\": null, \n                                                                                                                                                                                                                                                                                                                                            \"children\": [\n                                                                                                                                                                                                                                                                                                                                                {\n                                                                                                                                                                                                                                                                                                                                                    \"data\": {\n                                                                                                                                                                                                                                                                                                                                                        \"author\": \"demo6\", \n                                                                                                                                                                                                                                                                                                                                                        \"author_id\": 55112, \n                                                                                                                                                                                                                                                                                                                                                        \"body\": \"\\u6765\\u4e2a\\u6df1\\u5c42\\u6b21\\u768417\", \n                                                                                                                                                                                                                                                                                                                                                        \"created_utc\": 1307884214.0, \n                                                                                                                                                                                                                                                                                                                                                        \"downs\": 0, \n                                                                                                                                                                                                                                                                                                                                                        \"id\": \"lqew\", \n                                                                                                                                                                                                                                                                                                                                                        \"is_spam\": false, \n                                                                                                                                                                                                                                                                                                                                                        \"levenshtein\": null, \n                                                                                                                                                                                                                                                                                                                                                        \"likes\": null, \n                                                                                                                                                                                                                                                                                                                                                        \"link_id\": \"t6_4rsy\", \n                                                                                                                                                                                                                                                                                                                                                        \"name\": \"t1_lqew\", \n                                                                                                                                                                                                                                                                                                                                                        \"parent_id\": \"t1_lqeq\", \n                                                                                                                                                                                                                                                                                                                                                        \"replies\": {\n                                                                                                                                                                                                                                                                                                                                                            \"data\": {\n                                                                                                                                                                                                                                                                                                                                                                \"after\": null, \n                                                                                                                                                                                                                                                                                                                                                                \"before\": null, \n                                                                                                                                                                                                                                                                                                                                                                \"children\": [\n                                                                                                                                                                                                                                                                                                                                                                    {\n                                                                                                                                                                                                                                                                                                                                                                        \"data\": {\n                                                                                                                                                                                                                                                                                                                                                                            \"author\": \"demo6\", \n                                                                                                                                                                                                                                                                                                                                                                            \"author_id\": 55112, \n                                                                                                                                                                                                                                                                                                                                                                            \"body\": \"\\u6765\\u4e2a\\u6df1\\u5c42\\u6b21\\u768418\", \n                                                                                                                                                                                                                                                                                                                                                                            \"created_utc\": 1307884221.0, \n                                                                                                                                                                                                                                                                                                                                                                            \"downs\": 0, \n                                                                                                                                                                                                                                                                                                                                                                            \"id\": \"lqf0\", \n                                                                                                                                                                                                                                                                                                                                                                            \"is_spam\": false, \n                                                                                                                                                                                                                                                                                                                                                                            \"levenshtein\": null, \n                                                                                                                                                                                                                                                                                                                                                                            \"likes\": null, \n                                                                                                                                                                                                                                                                                                                                                                            \"link_id\": \"t6_4rsy\", \n                                                                                                                                                                                                                                                                                                                                                                            \"name\": \"t1_lqf0\", \n                                                                                                                                                                                                                                                                                                                                                                            \"parent_id\": \"t1_lqew\", \n                                                                                                                                                                                                                                                                                                                                                                            \"replies\": \"\", \n                                                                                                                                                                                                                                                                                                                                                                            \"subreddit\": \"fortestonly\", \n                                                                                                                                                                                                                                                                                                                                                                            \"subreddit_id\": \"t5_f\", \n                                                                                                                                                                                                                                                                                                                                                                            \"ups\": 1\n                                                                                                                                                                                                                                                                                                                                                                        }, \n                                                                                                                                                                                                                                                                                                                                                                        \"kind\": \"t1\"\n                                                                                                                                                                                                                                                                                                                                                                    }\n                                                                                                                                                                                                                                                                                                                                                                ], \n                                                                                                                                                                                                                                                                                                                                                                \"modhash\": \"\"\n                                                                                                                                                                                                                                                                                                                                                            }, \n                                                                                                                                                                                                                                                                                                                                                            \"kind\": \"Listing\"\n                                                                                                                                                                                                                                                                                                                                                        }, \n                                                                                                                                                                                                                                                                                                                                                        \"subreddit\": \"fortestonly\", \n                                                                                                                                                                                                                                                                                                                                                        \"subreddit_id\": \"t5_f\", \n                                                                                                                                                                                                                                                                                                                                                        \"ups\": 1\n                                                                                                                                                                                                                                                                                                                                                    }, \n                                                                                                                                                                                                                                                                                                                                                    \"kind\": \"t1\"\n                                                                                                                                                                                                                                                                                                                                                }\n                                                                                                                                                                                                                                                                                                                                            ], \n                                                                                                                                                                                                                                                                                                                                            \"modhash\": \"\"\n                                                                                                                                                                                                                                                                                                                                        }, \n                                                                                                                                                                                                                                                                                                                                        \"kind\": \"Listing\"\n                                                                                                                                                                                                                                                                                                                                    }, \n                                                                                                                                                                                                                                                                                                                                    \"subreddit\": \"fortestonly\", \n                                                                                                                                                                                                                                                                                                                                    \"subreddit_id\": \"t5_f\", \n                                                                                                                                                                                                                                                                                                                                    \"ups\": 1\n                                                                                                                                                                                                                                                                                                                                }, \n                                                                                                                                                                                                                                                                                                                                \"kind\": \"t1\"\n                                                                                                                                                                                                                                                                                                                            }\n                                                                                                                                                                                                                                                                                                                        ], \n                                                                                                                                                                                                                                                                                                                        \"modhash\": \"\"\n                                                                                                                                                                                                                                                                                                                    }, \n                                                                                                                                                                                                                                                                                                                    \"kind\": \"Listing\"\n                                                                                                                                                                                                                                                                                                                }, \n                                                                                                                                                                                                                                                                                                                \"subreddit\": \"fortestonly\", \n                                                                                                                                                                                                                                                                                                                \"subreddit_id\": \"t5_f\", \n                                                                                                                                                                                                                                                                                                                \"ups\": 1\n                                                                                                                                                                                                                                                                                                            }, \n                                                                                                                                                                                                                                                                                                            \"kind\": \"t1\"\n                                                                                                                                                                                                                                                                                                        }\n                                                                                                                                                                                                                                                                                                    ], \n                                                                                                                                                                                                                                                                                                    \"modhash\": \"\"\n                                                                                                                                                                                                                                                                                                }, \n                                                                                                                                                                                                                                                                                                \"kind\": \"Listing\"\n                                                                                                                                                                                                                                                                                            }, \n                                                                                                                                                                                                                                                                                            \"subreddit\": \"fortestonly\", \n                                                                                                                                                                                                                                                                                            \"subreddit_id\": \"t5_f\", \n                                                                                                                                                                                                                                                                                            \"ups\": 1\n                                                                                                                                                                                                                                                                                        }, \n                                                                                                                                                                                                                                                                                        \"kind\": \"t1\"\n                                                                                                                                                                                                                                                                                    }\n                                                                                                                                                                                                                                                                                ], \n                                                                                                                                                                                                                                                                                \"modhash\": \"\"\n                                                                                                                                                                                                                                                                            }, \n                                                                                                                                                                                                                                                                            \"kind\": \"Listing\"\n                                                                                                                                                                                                                                                                        }, \n                                                                                                                                                                                                                                                                        \"subreddit\": \"fortestonly\", \n                                                                                                                                                                                                                                                                        \"subreddit_id\": \"t5_f\", \n                                                                                                                                                                                                                                                                        \"ups\": 1\n                                                                                                                                                                                                                                                                    }, \n                                                                                                                                                                                                                                                                    \"kind\": \"t1\"\n                                                                                                                                                                                                                                                                }\n                                                                                                                                                                                                                                                            ], \n                                                                                                                                                                                                                                                            \"modhash\": \"\"\n                                                                                                                                                                                                                                                        }, \n                                                                                                                                                                                                                                                        \"kind\": \"Listing\"\n                                                                                                                                                                                                                                                    }, \n                                                                                                                                                                                                                                                    \"subreddit\": \"fortestonly\", \n                                                                                                                                                                                                                                                    \"subreddit_id\": \"t5_f\", \n                                                                                                                                                                                                                                                    \"ups\": 1\n                                                                                                                                                                                                                                                }, \n                                                                                                                                                                                                                                                \"kind\": \"t1\"\n                                                                                                                                                                                                                                            }\n                                                                                                                                                                                                                                        ], \n                                                                                                                                                                                                                                        \"modhash\": \"\"\n                                                                                                                                                                                                                                    }, \n                                                                                                                                                                                                                                    \"kind\": \"Listing\"\n                                                                                                                                                                                                                                }, \n                                                                                                                                                                                                                                \"subreddit\": \"fortestonly\", \n                                                                                                                                                                                                                                \"subreddit_id\": \"t5_f\", \n                                                                                                                                                                                                                                \"ups\": 1\n                                                                                                                                                                                                                            }, \n                                                                                                                                                                                                                            \"kind\": \"t1\"\n                                                                                                                                                                                                                        }\n                                                                                                                                                                                                                    ], \n                                                                                                                                                                                                                    \"modhash\": \"\"\n                                                                                                                                                                                                                }, \n                                                                                                                                                                                                                \"kind\": \"Listing\"\n                                                                                                                                                                                                            }, \n                                                                                                                                                                                                            \"subreddit\": \"fortestonly\", \n                                                                                                                                                                                                            \"subreddit_id\": \"t5_f\", \n                                                                                                                                                                                                            \"ups\": 1\n                                                                                                                                                                                                        }, \n                                                                                                                                                                                                        \"kind\": \"t1\"\n                                                                                                                                                                                                    }\n                                                                                                                                                                                                ], \n                                                                                                                                                                                                \"modhash\": \"\"\n                                                                                                                                                                                            }, \n                                                                                                                                                                                            \"kind\": \"Listing\"\n                                                                                                                                                                                        }, \n                                                                                                                                                                                        \"subreddit\": \"fortestonly\", \n                                                                                                                                                                                        \"subreddit_id\": \"t5_f\", \n                                                                                                                                                                                        \"ups\": 1\n                                                                                                                                                                                    }, \n                                                                                                                                                                                    \"kind\": \"t1\"\n                                                                                                                                                                                }\n                                                                                                                                                                            ], \n                                                                                                                                                                            \"modhash\": \"\"\n                                                                                                                                                                        }, \n                                                                                                                                                                        \"kind\": \"Listing\"\n                                                                                                                                                                    }, \n                                                                                                                                                                    \"subreddit\": \"fortestonly\", \n                                                                                                                                                                    \"subreddit_id\": \"t5_f\", \n                                                                                                                                                                    \"ups\": 1\n                                                                                                                                                                }, \n                                                                                                                                                                \"kind\": \"t1\"\n                                                                                                                                                            }\n                                                                                                                                                        ], \n                                                                                                                                                        \"modhash\": \"\"\n                                                                                                                                                    }, \n                                                                                                                                                    \"kind\": \"Listing\"\n                                                                                                                                                }, \n                                                                                                                                                \"subreddit\": \"fortestonly\", \n                                                                                                                                                \"subreddit_id\": \"t5_f\", \n                                                                                                                                                \"ups\": 1\n                                                                                                                                            }, \n                                                                                                                                            \"kind\": \"t1\"\n                                                                                                                                        }\n                                                                                                                                    ], \n                                                                                                                                    \"modhash\": \"\"\n                                                                                                                                }, \n                                                                                                                                \"kind\": \"Listing\"\n                                                                                                                            }, \n                                                                                                                            \"subreddit\": \"fortestonly\", \n                                                                                                                            \"subreddit_id\": \"t5_f\", \n                                                                                                                            \"ups\": 1\n                                                                                                                        }, \n                                                                                                                        \"kind\": \"t1\"\n                                                                                                                    }\n                                                                                                                ], \n                                                                                                                \"modhash\": \"\"\n                                                                                                            }, \n                                                                                                            \"kind\": \"Listing\"\n                                                                                                        }, \n                                                                                                        \"subreddit\": \"fortestonly\", \n                                                                                                        \"subreddit_id\": \"t5_f\", \n                                                                                                        \"ups\": 1\n                                                                                                    }, \n                                                                                                    \"kind\": \"t1\"\n                                                                                                }\n                                                                                            ], \n                                                                                            \"modhash\": \"\"\n                                                                                        }, \n                                                                                        \"kind\": \"Listing\"\n                                                                                    }, \n                                                                                    \"subreddit\": \"fortestonly\", \n                                                                                    \"subreddit_id\": \"t5_f\", \n                                                                                    \"ups\": 1\n                                                                                }, \n                                                                                \"kind\": \"t1\"\n                                                                            }\n                                                                        ], \n                                                                        \"modhash\": \"\"\n                                                                    }, \n                                                                    \"kind\": \"Listing\"\n                                                                }, \n                                                                \"subreddit\": \"fortestonly\", \n                                                                \"subreddit_id\": \"t5_f\", \n                                                                \"ups\": 1\n                                                            }, \n                                                            \"kind\": \"t1\"\n                                                        }\n                                                    ], \n                                                    \"modhash\": \"\"\n                                                }, \n                                                \"kind\": \"Listing\"\n                                            }, \n                                            \"subreddit\": \"fortestonly\", \n                                            \"subreddit_id\": \"t5_f\", \n                                            \"ups\": 1\n                                        }, \n                                        \"kind\": \"t1\"\n                                    }\n                                ], \n                                \"modhash\": \"\"\n                            }, \n                            \"kind\": \"Listing\"\n                        }, \n                        \"subreddit\": \"fortestonly\", \n                        \"subreddit_id\": \"t5_f\", \n                        \"ups\": 1\n                    }, \n                    \"kind\": \"t1\"\n                }\n            ], \n            \"modhash\": \"\"\n        }, \n        \"kind\": \"Listing\"\n    }\n]\n"
  },
  {
    "path": "src/test/resources/jvmargs",
    "content": "-server -Xmx2g -Xms2g -Xmn512m -XX:PermSize=196m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70\r\n"
  },
  {
    "path": "src/test/resources/log4j.properties",
    "content": "log4j.rootLogger= error, stdout\n\nlog4j.appender.stdout=org.apache.log4j.ConsoleAppender\nlog4j.appender.stdout.layout=org.apache.log4j.PatternLayout\nlog4j.appender.stdout.layout.ConversionPattern=%d %-5p %c{1} - %m%n\n\n# Show Hibernate warning and SQLs\nlog4j.logger.org.hibernate=warn\nlog4j.logger.org.hibernate.SQL=DEBUG\nlog4j.logger.org.hibernate.type.descriptor.sql.BasicBinder=trace\nlog4j.logger.org.hibernate.cfg.Configuration=INFO\n"
  },
  {
    "path": "src/test/resources/log4j2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Configuration status=\"warn\" name=\"fastjson_test\" package=\"\">\n    <Appenders>\n        <Console name=\"Console\" target=\"SYSTEM_OUT\">\n            <JSONLayout/>\n        </Console>\n    </Appenders>\n    <Loggers>\n        <Root level=\"info\">\n            <AppenderRef ref=\"Console\"/>\n        </Root>\n    </Loggers>\n</Configuration>"
  },
  {
    "path": "src/test/resources/wuyexiong.json",
    "content": "{\n\"track\": [\n{\n\"name\": \"Android\",\n\"color\": \"#A6BC40\",\n\"abstract\": \"Learn about developing mobile handset and tablet apps for Android.\"\n},\n{\n\"name\": \"Chrome\",\n\"color\": \"#46B0E2\",\n\"abstract\": \"Build for the modern web with the Chrome platform.\"\n},\n{\n\"name\": \"Cloud Platform\",\n\"color\": \"#2076BC\",\n\"abstract\": \"Learn about Google's cloud offerings for developers.\"\n},\n{\n\"name\": \"Code Labs\",\n\"color\": \"#E4388F\",\n\"abstract\": \"Get your hands dirty in longer, classroom-style sessions. Bring your laptop. Write code.\"\n},\n{\n\"name\": \"Commerce\",\n\"color\": \"#4CAA47\",\n\"abstract\": \"Learn how to use Google Commerce products to improve monetization on the web, in app, and in store.\"\n},\n{\n\"name\": \"Entrepreneurship\",\n\"color\": \"#97B0DA\",\n\"abstract\": \"Talks on topics related to startups, venture capital, and entrepreneurship.\"\n},\n{\n\"name\": \"Google APIs\",\n\"color\": \"#00773F\",\n\"abstract\": \"Learn about Google's various developer platforms.\"\n},\n{\n\"name\": \"Google Drive\",\n\"color\": \"#F5851F\",\n\"abstract\": \"Learn to develop for Google Drive and Google Apps Script.\"\n},\n{\n\"name\": \"Google Maps\",\n\"color\": \"#4CAA47\",\n\"abstract\": \"Leverage the power of Google's geospatial technology in your apps.\"\n},\n{\n\"name\": \"Google TV\",\n\"color\": \"#37505C\",\n\"abstract\": \"Build apps for the big screen. Learn about developing for Google TV.\"\n},\n{\n\"name\": \"Google+\",\n\"color\": \"#DC4E30\",\n\"abstract\": \"Learn about developing on the Google+ platform.\"\n},\n{\n\"name\": \"Tech Talk\",\n\"color\": \"#A1609D\",\n\"abstract\": \"Tech talks on subjects such as computer science problems, programming languages, and more.\"\n},\n{\n\"name\": \"YouTube\",\n\"color\": \"#E72C2E\",\n\"abstract\": \"Learn about developing for YouTube.\"\n}\n]\n}"
  },
  {
    "path": "vtune.sh",
    "content": "export AMPLXE_EXPERIMENTAL=1\n/Users/wenshao/Install/vtune/amplxe-cl -collect hotspots java -classpath target/classes/:target/test-classes/ com.alibaba.json.test.benchmark.BenchmarkMain\n"
  },
  {
    "path": "x.sh",
    "content": "export AMPLXE_EXPERIMENTAL=1\n/opt/intel/vtune_amplifier_xe/bin64/amplxe-cl -collect hotspots /opt/taobao/install/jdk-1.7.0_10/bin/java -classpath target/classes/:target/test-classes/ com.alibaba.json.test.benchmark.BenchmarkMain\n"
  }
]